Pull to refresh
-1
0
Send message
На С, без плюсов и извращений.

#include "stdio.h"

int print_number(int n)
{
    printf("%d ", n);
    return (n && print_number(n - 1));
}

int main(void)
{
    return print_number(100000);
}

«Как известно, в данной серии игр в каждой таверне игрок может нанимать лишь одного нового Героя в неделю.» — ну в третьих это точно не так.
Объясните нубу, как можно удалить все форки репозитория, если существует вот такая последовательность команд:

git clone https://github.com/ytdl-org/youtube-dl
cd youtube-dl
rm -Rf .git
git init
git add .
git commit -m "not a youtube-dl fork"
git push --не-помню-синтаксис https://gitlab.com/someuser/somerepo
Самый популярный неправильный ответ: «Это хеш-таблица». Да, это хеш-таблица.

Самый популярный неправильный ответ: «Вернется ошибка». Да, вернется.

Самый популярный неправильный ответ: «Я не пользуюсь стандартным логгером». И никто не пользуется, сюрприз! Но почему?

Самый популярный неправильный ответ: «Можно, если защитить его мьютексом». Я признаю, это плохой вопрос, недостаточно показательный. Но зачем же давать на него хоть и формально правильный, но бесполезный ответ?

Самый популярный неправильный ответ: «Gorm, вроде, неплох». Конкурирует с ответом «Я всё пишу руками». Я даже согласен с обоими ответами


После слов «неправильный ответ» вы пишете «Да», «формально правильный, но бесполезный ответ» или «Я даже согласен с обоими ответами». В лучшем случае у вас не лучший стиль написания статей, в худшем — проблемы с логикой…
Не очень понятно, что может показать опрос, в котором есть сайты, специализирующиеся на разных языках программирования. Питонисты проголосуют за сайты, обучающие питону, джаваскриптеры за сайты, обучающие джаваскрипту. В итоге, оценка получится не просто субъективная, а просто покажет то, кого больше.
В точку. «Пусть поработают, пусть поучаствуют в отладке, пусть пишут сообщения на форумах и трекерах» — это главная причина, почему все-таки не Linux. Пользователь системы хочет пользоваться системой, решать свои пользовательские задачи, а не отладкой заниматься.
на ту же тему более старый и богатый на ответы вопрос на SO: stackoverflow.com/questions/261638/how-do-i-protect-python-code
10 хитростей Python, о которых полезно знать

1. Конкатенация строк

2. Использование генераторов списков

...

10 раз поперхнулся.
StackOverflow уже больше десяти лет в обед, могли бы и пораньше сделать выводы о том, что «В ответах на Stack Overflow могут быть ошибки, даже если у них тысячи плюсиков.».
Как вчерашний студент обязан высказаться по поводу того что «не бывает выгорания у студентов… у них достаточно стресса, который смывает эту воронку выгорания.» — это какой-то феерический бред. Выгорание как-раз таки от ежедневного стресса, от написания диплома и от того, что сколько бы ты ни учил, тебя в любой момент преподаватель может с говном смешать. От этого руки опускаются еще как.
Даже при любви к таким формам написания как «дата-сатанисты», ну не смотрится «датасайнсу» в названии статьи.
Быстрое прототипирование без типов по-прежнему вариант, написали прототип, протестили, а перед мержем добавили аннотаций чтобы удовлетворить mypy и получить зеленую галку от CI.
Как-то легко вы уверовали… Черным по белому на вашей картинке написано очень маленьким шрифтом, а рыжим по черному — довольно большим и с подсветкой. Вы бы при всех прочих равных условиях сравнили.
Максим Дорофеев «Джедайские техники». Не совсем про то как вытащить себя откуда-либо, а про всякую всячину, которая поможет вам это сделать: не тратить свою энергию на пустяки, концентрироваться на важном, составлять планы, держать почтовый ящик в чистоте и порядке и много чего еще.
А может кто-нибудь объяснить вот этот подводный камень:
На строчку
foo = {}

ругается, что error: Need type annotation for variable, а когда добавляешь очевидный хинт
foo: typing.Dict = {}

ругаться перестает.
Вот зачем
1) ругаться, если и так понятно, что это dict
2) допускать подавление ошибки таким топорным способом?
Вопрос конечно очень простой и рядом не стоит с дженериками, но из-за таких простых вещей инструмент кажется каким-то дико недоработанным и прикасаться к нему вообще не хочется.
Программируя на питоне с его async/await/asyncio/aiohttp, возвращаться к коллбекам — очень плохая идея.
Ваш код реализует как раз-таки стандартный генератор обычных и редких вещей. При шансе выпадения редкой в среднем в 1 из 4 случаев невезучие люди получат 0 из 4, а везучие — 2, 3 или даже 4. Это-то всем геймерам и не нравится. А если есть мешок с тремя обычными и одной редкой, из которого эти вещи достают, то самое большое различие — невезучие люди вытащат редкую вещь последней, а везучие — первой. Намного лучше, правда же?

Остается вопрос лишь о размере этого мешка. Можно сделать его минимальным, 4 вещи. Тогда игра станет слишком предсказуемой, ведь вы всегда знаете, что редкая вам выпадет не позднее чем через 6 вещей (1ый мешок — редкая, 3 обычных, 2ой мешок — 3 обычных, редкая). Можно сделать чуть побольше. 8 вещей, 6 обычных и 2 редкие. Чуть менее предсказуемо. Таким образом, вы берете власть над рандомизацией в свои руки. Больше размер мешка — больше рандомность. И конечно же, не стоит делать размер мешка в 4 миллиона вещей. Невезучим игрокам их миллион редких вещей будет доставаться в самом конце мешка. Когда они уже бросят эту невезучую для них игру.
Ваша функция называется factorial, а вычисляет числа Фибоначчи.

В остальном поддерживаю вас и статью. Будет интересно, если продолжите и расскажите о других способах оптимизации, о применении мемоизации, например, в динамическом программировании и т.д.

Information

Rating
Does not participate
Registered
Activity