к этому могу ещё посоветовать по мере прохождения юнитов заносить примеры упражнений в какую-либо из программ для зубрёжки (например, Anki). Только предупреждаю, что для этого нужна очень большая усидчивость и терпение. Зато результат отменный — по крайней мере, в моём случае. У меня память сама по себе не очень, поэтому мне одного-двух раз прочтения и упражнений недостаточно. Но используя spaced repetitions, я теперь, глядя на предложение, могу вспомнить практически все правила, которые учил таким образом.
Что я делал: каждый пример и каждое упражнение заносил как фразу-подсказу с каким-либо пропущенным словом посередине, например, «Sarah is [...] teacher.». В ответе та же фраза, но с подсвеченным артиклем «а» (это называется cloze deletion), а в пояснениях само правило — «Use a/an when you say what somebody's job is».
Но ещё раз повторюсь, тут требуется большая усидчивость и желание; у меня на один юнит выходило около 50 карточек, что в сумме на весь учебник даст >5000 карточек. На данный момент я выборочно заношу только те модули, с которыми у меня реальные проблемы, а более простые просто пропускаю.
> Подскажите самый мощный способ зубрить слова по 10-50 штук в день, чтобы отпечатывалось в мозге навсегда.
Литература вашего уровня + любая программа зубрёжки по методу space repetition (рекомендую Anki) + 10-20 минут в день. 50 новых слов в день — это очень много, хотя если уверены в своих силах…
Автор, если Вы рассматривали BeautifulSoup, можете написать, чем «парсящая» часть вашей библиотеки лучше его? Может ли Ваша библиотека обрабатывать «не совсем корректный» html?
мне кажется, любое более-менее существенное обновление убунты (и, наверное, другого линукса) может с вероятностью 80% создать проблему на ровном месте.
Ты СОВЕРШЕННО не понимаешь, в чём суть Java. Java это не C++ «о, привет чуваки, зацените прикольный шаблон я намутил, который зацикливает компилятор гыгы». Java это не псевдоинтеллектуальные обсуждения о Lisp. Java это не Qt, Python или PHP. Java это место, где программеры могут побыть чудовищами — взаимозаменяющимися демонами многопоточности, high concurrency и pluggability, которыми они на самом деле и являются.
Где-то нашли очередной buffer overflow, а мы смеёмся. Десять сишников в поте лица пишут свой сервер, а мы смеёмся. Фанатичный школьник предлагает банкам заменить Java на C++, а мы смеёмся и просим ещё. Отсутствие полноценной стандартной библиотеки, сложность настройки окружения разработчика, сложность сопряжения разных программ или их модулей — мы смеёмся. Отсутствие проверенных библиотек на любой чих и бздык — мы смеёмся. Растерянный менеджер чешет репу над поделием сишного программера, которого он во время не остановил — мы смеёмся. Мы бездушно подпишемся под чем угодно, наши предпочтения не основаны на здравом смысле, гетерогенная среда исполнения — наша стихия, мы — истинное лицо энтерпрайз-разработки.
> А сценарии «класс на команду» и «метод на команду» тестируются опять-таки легко и одинаково.
Не согласен. В случае отдельного класса на команду Вы можете протестировать корректное мультиплексирования команд в различных вариациях в классе CompositeHandler, подделав конечные обработчики и описав ожидания — и это сделать будет просто, т.к. вы программируете в терминах интерфейсов. В случае метода на команду для такого рода проверок необходимо будет прибегнуть к грязным хакам типа порождения от тестируемого класса и замены нерелевантных методов no-op'ами.
> это два лишних уровня абстракции (сервер не принимает решение, какую команду выполнить, маршрутизатор не знает, как именно выполнится команда)
почему лишних? Разве сервер обязан знать, как конкретно выполнить команду? Мне кажется, задача сервера — общаться с клиентом, а также обрабатывать непредвиденные ситуации, возникающие при этом. В случае же спаивания всего этого в единую конструкцию мы получаем низкую связность (cohesion), не так ли?
Мне кажется, что покрытие кода тестами имеет смысл не столько для начальной фазы жизни кода (хотя и тут оно имеет большой смысл, поскольку позволяет строить корректную систему по частям, а не отлаживать потом весь блоб целиком), сколько для последующей жизни кода. Придут другие разработчики. Код может меняться, код может рефакториться. Покрытие тестами даёт бóльшую свободу и бóльшее спокойствие при модификации или рефакторинге кода.
> Рядовой пользователь сам, обычно, ничего поставить, настроить не может, доки читать не умеет — можно организовать платную поддержку.
Я дурею с этого аргумента. Это мне что, поддерживать программу ещё в свободное от программирования время? Или что? Нанять тех. поддержку и запрашивать с юзеров двойную цену за неё — чтобы хватило и операторам на ЗП, и мне на покушать?
Мне кажется, что этот мультик является отличной иллюстрацией… важности командной работы и узкой специализации. Конечно, аплодирую стоя целеустремлённости автора, но мульт совсем не это самое… «он врежется в нас… я знаю… (каменные лица) (взрыв) (поворачивается назад с каменным лицом)»
Я помню мой переход с KDE 1 (RH 5.x-6.x) на KDE 2 (AltLinux какой-то, 1.1 вроде). Тогда KDE 2 казалась просто прорывом, я просто был в восторге от такого нового Линукса. А вот много лет спустя четвёртую пробовал — совсем не понравилась, медленная, глючная, странная…
Интересно, а какие в сложившихся условиях стимулы для людей оставаться на раздачах? Не превратится ли рутрекер в TPB, где многие интересные раздачи практически мертвы?
Просто делайте чёртову работу. День за днём, раз за разом. Займитесь каким-то видом спорта, в котором результат нельзя увидеть через месяц-два. Например, та же тренажёрка. Походите в неё два месяца, потом ещё один. Посмотрите, сколько месяцев подряд вы сможете проходить, не пропуская занятий. Займитесь игрой на гитаре или другом инструменте, и занимайтесь регулярно.
Знаете, что такое дисциплина? Дисциплина — это умение делать дела не тогда, когда их приятно делать, а тогда когда их надо делать — и повторение этого раз за разом.
Я знаю, многие из вас ищут волшебной таблетки — я и сам такой. Именно поэтому вы прочитали «тысячи книг по мотивации». Мы подсознательно ждём, пока к нам в руки попадёт та книга, в которой будет то волшебное откровение, узнав которое мы изменимся навсегда. Но будьте реалистами и оглянитесь на свою жизнь — вам хоть однажды попадалась такая книга? Уверен, ни разу. Потому что изменения в жизни редко приходят в виде откровений. Не ждите откровения, не ждите волшебного совета.
Что я делал: каждый пример и каждое упражнение заносил как фразу-подсказу с каким-либо пропущенным словом посередине, например, «Sarah is [...] teacher.». В ответе та же фраза, но с подсвеченным артиклем «а» (это называется cloze deletion), а в пояснениях само правило — «Use a/an when you say what somebody's job is».
Но ещё раз повторюсь, тут требуется большая усидчивость и желание; у меня на один юнит выходило около 50 карточек, что в сумме на весь учебник даст >5000 карточек. На данный момент я выборочно заношу только те модули, с которыми у меня реальные проблемы, а более простые просто пропускаю.
Литература вашего уровня + любая программа зубрёжки по методу space repetition (рекомендую Anki) + 10-20 минут в день. 50 новых слов в день — это очень много, хотя если уверены в своих силах…
Где-то нашли очередной buffer overflow, а мы смеёмся. Десять сишников в поте лица пишут свой сервер, а мы смеёмся. Фанатичный школьник предлагает банкам заменить Java на C++, а мы смеёмся и просим ещё. Отсутствие полноценной стандартной библиотеки, сложность настройки окружения разработчика, сложность сопряжения разных программ или их модулей — мы смеёмся. Отсутствие проверенных библиотек на любой чих и бздык — мы смеёмся. Растерянный менеджер чешет репу над поделием сишного программера, которого он во время не остановил — мы смеёмся. Мы бездушно подпишемся под чем угодно, наши предпочтения не основаны на здравом смысле, гетерогенная среда исполнения — наша стихия, мы — истинное лицо энтерпрайз-разработки.
Не согласен. В случае отдельного класса на команду Вы можете протестировать корректное мультиплексирования команд в различных вариациях в классе CompositeHandler, подделав конечные обработчики и описав ожидания — и это сделать будет просто, т.к. вы программируете в терминах интерфейсов. В случае метода на команду для такого рода проверок необходимо будет прибегнуть к грязным хакам типа порождения от тестируемого класса и замены нерелевантных методов no-op'ами.
> это два лишних уровня абстракции (сервер не принимает решение, какую команду выполнить, маршрутизатор не знает, как именно выполнится команда)
почему лишних? Разве сервер обязан знать, как конкретно выполнить команду? Мне кажется, задача сервера — общаться с клиентом, а также обрабатывать непредвиденные ситуации, возникающие при этом. В случае же спаивания всего этого в единую конструкцию мы получаем низкую связность (cohesion), не так ли?
Я дурею с этого аргумента. Это мне что, поддерживать программу ещё в свободное от программирования время? Или что? Нанять тех. поддержку и запрашивать с юзеров двойную цену за неё — чтобы хватило и операторам на ЗП, и мне на покушать?
поделил на ноль
Знаете, что такое дисциплина? Дисциплина — это умение делать дела не тогда, когда их приятно делать, а тогда когда их надо делать — и повторение этого раз за разом.
Я знаю, многие из вас ищут волшебной таблетки — я и сам такой. Именно поэтому вы прочитали «тысячи книг по мотивации». Мы подсознательно ждём, пока к нам в руки попадёт та книга, в которой будет то волшебное откровение, узнав которое мы изменимся навсегда. Но будьте реалистами и оглянитесь на свою жизнь — вам хоть однажды попадалась такая книга? Уверен, ни разу. Потому что изменения в жизни редко приходят в виде откровений. Не ждите откровения, не ждите волшебного совета.
Just do the f*cking job. Consistently.