Хочу более подробно разобрать задачу из публикации «Олимпиады по программированию среди школьников», а также показать, что она действительно нетривиальная. Хотя в результате программа и состоит из трех присваиваний и двух сравнений, прийти к этому результату не так уж и просто, тем более, если нет под рукой справочника по аналитической геометрии.
User
Антипаттерны проектирования: Poltergeists
5 min
36KTranslation
«Я точно не знаю, что делает этот класс, но я уверен, что это важно!»
У паттернов проектирования — типовых решений, есть антиподы — типовые ошибки в проектировании. О паттернах проектирования написано достаточно книг, о антипаттернах — единицы. Вашему вниманию представлен вольный перевод статьи с сайта SourceMaking, описывающий один из таких антипаттернов (всего на сайте в разделе Software Development Antipatterns их представлено 14).
Наименование: Poltergeists (полтергейсты)
Другие наименования: Gypsy (цыган), Proliferation of Classes (рост количества классов), Big DoIt Controller Class
Масштаб: приложение
Рефакторинг: Ghostbusting (охота за привидениями)
Причина появления: непонимание концепций ООП, лень продумать архитектуру классов
У паттернов проектирования — типовых решений, есть антиподы — типовые ошибки в проектировании. О паттернах проектирования написано достаточно книг, о антипаттернах — единицы. Вашему вниманию представлен вольный перевод статьи с сайта SourceMaking, описывающий один из таких антипаттернов (всего на сайте в разделе Software Development Antipatterns их представлено 14).
Наименование: Poltergeists (полтергейсты)
Другие наименования: Gypsy (цыган), Proliferation of Classes (рост количества классов), Big DoIt Controller Class
Масштаб: приложение
Рефакторинг: Ghostbusting (охота за привидениями)
Причина появления: непонимание концепций ООП, лень продумать архитектуру классов
+17
7 правил написания программ, которые не умрут вместе с вами
5 min
59KTranslation
Ваши программы – это ваше наследие. Решайте сами, как долго оно будет существовать.
Жизнь заканчивается, но программы не обязательно должны умирать.
После серии моих твитов на тему того, как нужно писать программы, меня попросили раскрыть эту тему. Предупреждаю, что редко в каком проекте удаётся чётко следовать всем семи правилам. У меня самого это часто не получается. Но чем больше правил вы соблюдаете, тем больше ваши программы проживут. Каждый символ добавляет что-то к общей экосистеме, и наша задача, как инженеров, поддерживать экосистему в чистоте и порядке.
Что можно получить, выдавая хороший код? Разве не имеет права на жизнь подход в обучении под названием «двигайся быстрее, ломая всё на своём пути?» Нет. Обучиться писать код – это навык, это доступно каждому. Обучиться писать хороший код – это искусство. Это требует усилий, времени и целеустремлённости.
Жизнь заканчивается, но программы не обязательно должны умирать.
После серии моих твитов на тему того, как нужно писать программы, меня попросили раскрыть эту тему. Предупреждаю, что редко в каком проекте удаётся чётко следовать всем семи правилам. У меня самого это часто не получается. Но чем больше правил вы соблюдаете, тем больше ваши программы проживут. Каждый символ добавляет что-то к общей экосистеме, и наша задача, как инженеров, поддерживать экосистему в чистоте и порядке.
Что можно получить, выдавая хороший код? Разве не имеет права на жизнь подход в обучении под названием «двигайся быстрее, ломая всё на своём пути?» Нет. Обучиться писать код – это навык, это доступно каждому. Обучиться писать хороший код – это искусство. Это требует усилий, времени и целеустремлённости.
+29
WordsFromText: как читать на английском с удовольствием
4 min
51KЧтение в оригинале для многих является проблемой. Обилие незнакомых слов усложняет восприятие текста и приводит к потере энтузиазма. Такое происходит, когда сложность текста превосходит ваш текущий уровень, или когда вы читаете текст не по вашей тематике. Технари могут без проблем общаться на рабочие темы, но пасуют перед статьями о политике, музыке и серьёзной художественной литературой.
Цель нашего сервиса — решить эту проблему.
Несколько лет назад мы писали на Хабре об этом сервисе. Идея нашла отклик, сайт приобрел постоянных пользователей, хотя в то время сервис мог только показывать статистику слов из текста. За последние месяцы сервис стал умнее.
Ключевая цель сервиса — дать людям возможность читать и смотреть в оригинале то, что им интересно. И при этом максимально упростить работу с незнакомыми словами.
Цель нашего сервиса — решить эту проблему.
Несколько лет назад мы писали на Хабре об этом сервисе. Идея нашла отклик, сайт приобрел постоянных пользователей, хотя в то время сервис мог только показывать статистику слов из текста. За последние месяцы сервис стал умнее.
Ключевая цель сервиса — дать людям возможность читать и смотреть в оригинале то, что им интересно. И при этом максимально упростить работу с незнакомыми словами.
+35
Побеждаем NPE hell в Java, не используя IntelliJ IDEA
5 min
22KОтказ от ответственности
Во-первых, материал появился потому, что хотелось быстро объяснить
null
-анализ, чем он хорош и почему нужно прямо сейчас преодолеть корпоративную лень и начать использовать этот анализ в проектах. Статьи, содержащей полную систематизированную информациию о предмете без привязки к IDE, не нашлось, так что пришлось писать самому. И хотя в результате полной систематизации так и не получилось, всё равно захотелось поделиться материалом с более широкой аудиторией. Будет минимум текста и много изображений.Во-вторых, на ресурсе уже есть отличная статья tr1cks, посвящённая IntelliJ IDEA, которая усиливает и без того стойкое впечатление, что IDEA — это очень хорошо, а Eclipse — это для бедных (что стало притчей во языцех). Для соблюдения баланса я сконцентрируюсь на Eclipse.
+12
Подведены итоги Олимпиады по программированию среди школьников
5 min
16KС 16 по 22 января в Московском университете стали и сплавов прошла III Международная олимпиада по программированию среди школьников. Мероприятие было организовано НИТУ «МИСиС» и Cognitive Technologies. Признаться, понадобилось практически три недели, чтобы уговорить организаторов открыть хотя бы пару условий предложенных на мероприятии задач и получить разрешение опубликовать их разбор.
Поверьте, это было не просто. Хотя их можно понять.
Как известно, составление условий задач считается одним из наиболее сложных этапов подготовки соревнований по программированию.
По их завершению они, как правило, используются при проведении тренировок команд, а также внешних контестов.
Коллективы тренеров от разных вузов регулярно обмениваются контестами.
Вообщем, повторное использование задач принято в олимпиадном движении.
Поверьте, это было не просто. Хотя их можно понять.
Как известно, составление условий задач считается одним из наиболее сложных этапов подготовки соревнований по программированию.
По их завершению они, как правило, используются при проведении тренировок команд, а также внешних контестов.
Коллективы тренеров от разных вузов регулярно обмениваются контестами.
Вообщем, повторное использование задач принято в олимпиадном движении.
+9
10 главных правил для работы на дому
5 min
18KTranslation
Не секрет, что сейчас большинство работодателей стремятся урезать свои расходы, в том числе, это касается аренды помещений. Это одна из причин, по которой удаленная работа сейчас активно набирает популярность. На Мегамозге было много публикаций на эту тему и мы решили обобщить все советы и рекомендации в нашей статье.
+20
Стэнли Тэнг и Уокер Уильямс: Начинайте с малого
17 min
17KTranslation
Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:
Вторая часть курса
Первая часть курса
- Сэм Альтман и Дастин Московитц: Как и зачем создавать стартап?
- Сэм Альтман: Как сформировать команду и культуру стартапа?
- Пол Грэм: Нелогичный стартап;
- Адора Чьюнг: Продукт и кривая честности;
- Адора Чьюнг: Стремительный рост стартапа;
- Питер Тиль: Конкуренция – удел проигравших;
- Питер Тиль: Как построить монополию?
- Алекс Шульц: Введение в growth hacking [1, 2, 3];
- Кевин Хейл: Тонкости в работе с пользовательским опытом [1, 2];
- Стэнли Тэнг и Уокер Уильямс: Начинайте с малого;
- Джастин Кан: Как работать с профильными СМИ?
- Андрессен, Конуэй и Конрад: Что нужно инвестору;
- Андрессен, Конуэй и Конрад: Посевные инвестиции;
- Андрессен, Конуэй и Конрад: Как работать с инвестором;
- Брайан Чески и Альфред Лин: В чем секрет культуры компании?
- Бен Сильберман и братья Коллисон: Нетривиальные аспекты командной работы [1, 2];
- Аарон Леви: Разработка B2B-продуктов;
- Рид Хоффман: О руководстве и руководителях;
- Рид Хоффман: О лидерах и их качествах;
- Кит Рабуа: Управление проектами;
- Кит Рабуа: Развитие стартапа;
- Бен Хоровитц: Увольнения, повышения и переводы по службе;
- Бен Хоровитц: Карьерные советы, вестинг и опционы;
- Эммет Шир: Как проводить интервью с пользователями;
- Эммет Шир: Как в Twitch разговаривают с пользователями;
- Хосейн Рахман: Как в Jawbone проектируют hardware-продукты;
- Хосейн Рахман: Процесс проектирования в Jawbone.
+26
Философия программирования 4 — Технология «Шапито»
8 min
30KПредставьте себе конвейер с программистами: сели люди за одним круглым столом, один огромный монитор во всю стену, и у каждого ещё свой обычный.
Первый: тоном капитана звездолёта, — нужна функция connectToDB() в главном файле.
Второй: — открываю — открывает нужный файл, находит функцию.
Первый: — что здесь происходит?
Третий: — запускаю — ставит брейкпойнт, запускает приложение, в момент останова произносит: — dbinstance в порядке — выводит значение на экран --, remotePort равен 8999, — это значение тоже видно на экране.
Первый: — странно, надо бы профилировать этот вызов.
Третий: — ок — диктует четвёртому — новая строка 123 console.time(), 125 console.timeEnd()
Четвёртый: набирает, — готово.
Первый: тоном капитана звездолёта, — нужна функция connectToDB() в главном файле.
Второй: — открываю — открывает нужный файл, находит функцию.
Первый: — что здесь происходит?
Третий: — запускаю — ставит брейкпойнт, запускает приложение, в момент останова произносит: — dbinstance в порядке — выводит значение на экран --, remotePort равен 8999, — это значение тоже видно на экране.
Первый: — странно, надо бы профилировать этот вызов.
Третий: — ок — диктует четвёртому — новая строка 123 console.time(), 125 console.timeEnd()
Четвёртый: набирает, — готово.
+26
9 ошибок в резюме, которые могут стоить вам работы
3 min
22KВ цифровую эпоху старая добрая бумага может показаться частью прошлого, но LinkedIn еще не полностью заменил старомодное резюме.
Если все сделано правильно, то ваше резюме расскажет вашу историю и продаст ваши таланты.
Хоть самые передовые технологии и изменили способ соискания работы, резюме остается неотъемлемой частью процесса найма.
Отвратно написанное резюме будет работать против вас. Чтобы этого не случилось отметим наиболее вопиющие ошибки и оплошности резюме.
Если все сделано правильно, то ваше резюме расскажет вашу историю и продаст ваши таланты.
Хоть самые передовые технологии и изменили способ соискания работы, резюме остается неотъемлемой частью процесса найма.
Отвратно написанное резюме будет работать против вас. Чтобы этого не случилось отметим наиболее вопиющие ошибки и оплошности резюме.
+14
Мой опыт поиска работы программистом за границей: UPDATE 2
9 min
104KUPDATE 1
UPDATE 2
Думаю, что многим будет полезен мой опыт поиска работы программистом за границей. Тем более что он совершенно отличается от описанного в публикации «Как айтишнику уехать в Германию. Часть 1».
Сразу скажу, что я женат и у меня двое детей 5 и 11 лет. Это я говорю к тому, что требования к условиям переезда для семейного человека выше, чем без детей или вообще без семьи. Например, необходимо учитывать увеличение расходов на минимум 3-к квартиру, коммунальные услуги из расчета на 4 чел, платное образование и его уровень. Также важен транспорт, так как каждый день детям нужно добираться в школу и из школы. Еще одним важным критерием выбора страны для переезда является уровень медицины и экология. И наконец, расходы на содержание семьи из 4 человек на порядок выше чем на двоих и тем более — для одного. Все это ставит довольно жесткую нижнюю планку по зарплате.
Учитывая все вышеописанное, может показаться что переезд за границу с семьей находится на грани нереального. Но это не так! И хоть я не стану опровергать, что холостяку намного проще перемещаться по миру, но подчеркну, что мой опыт показал, что эта простота заключается исключительно в отсутствие забот, присущих семейным людям (я описывал их выше). К еще одному преимуществу холостяков (теоретически) можно отнести то, что они могут соглашаться на более низкие зарплаты чем хотели бы, но с перспективой роста.
В общей сложности поиск работы мне занял 9 мес. Страной назначения я выбрал Германию, так как IT там на высоком уровне, огромное количество стартапов, особенно в Берлине, высокий уровень бесплатного образования и сильная медицина. К тому же я более менее знал немецкий.
UPDATE 2
Думаю, что многим будет полезен мой опыт поиска работы программистом за границей. Тем более что он совершенно отличается от описанного в публикации «Как айтишнику уехать в Германию. Часть 1».
Сразу скажу, что я женат и у меня двое детей 5 и 11 лет. Это я говорю к тому, что требования к условиям переезда для семейного человека выше, чем без детей или вообще без семьи. Например, необходимо учитывать увеличение расходов на минимум 3-к квартиру, коммунальные услуги из расчета на 4 чел, платное образование и его уровень. Также важен транспорт, так как каждый день детям нужно добираться в школу и из школы. Еще одним важным критерием выбора страны для переезда является уровень медицины и экология. И наконец, расходы на содержание семьи из 4 человек на порядок выше чем на двоих и тем более — для одного. Все это ставит довольно жесткую нижнюю планку по зарплате.
Учитывая все вышеописанное, может показаться что переезд за границу с семьей находится на грани нереального. Но это не так! И хоть я не стану опровергать, что холостяку намного проще перемещаться по миру, но подчеркну, что мой опыт показал, что эта простота заключается исключительно в отсутствие забот, присущих семейным людям (я описывал их выше). К еще одному преимуществу холостяков (теоретически) можно отнести то, что они могут соглашаться на более низкие зарплаты чем хотели бы, но с перспективой роста.
В общей сложности поиск работы мне занял 9 мес. Страной назначения я выбрал Германию, так как IT там на высоком уровне, огромное количество стартапов, особенно в Берлине, высокий уровень бесплатного образования и сильная медицина. К тому же я более менее знал немецкий.
+37
Глазастый мух или выбираем квадрокоптер с камерой за 40$
4 min
84KАктуально на октябрь 2016 года.
Мой последний пост "Выбираем нано-квадрокоптер за 20$" вызвал живой интерес сообщества и побудил многих людей освоить навыки пилотирования дронов. И всё это благодаря тому, что дроны становятся доступнее и больше не надо рисковать десятками тысяч рублей, ради того, чтобы отправить свой новенький дрон в последний путь к небесам.
По опыту могу сказать, что когда ты освоил основы пилотирования — безумно хочется увидеть то, что видел твой дрон и конечно показать этот шедевр всему миру. Для того, чтобы весь мир заметил шедевр придумали интернет и социальные сети, а вот чтобы дрон рассказал о своих приключениях — придумали видеокамеры. А для тех, кто ещё не очень хорошо летает, а снимать уже хочет — придумали мини-квадрокоптеры стоимостью около ~40$, о них и пойдёт речь.
Первые полёты моего Top Selling X6 по центру фотографий им. братьев Люмьер.
Мой последний пост "Выбираем нано-квадрокоптер за 20$" вызвал живой интерес сообщества и побудил многих людей освоить навыки пилотирования дронов. И всё это благодаря тому, что дроны становятся доступнее и больше не надо рисковать десятками тысяч рублей, ради того, чтобы отправить свой новенький дрон в последний путь к небесам.
По опыту могу сказать, что когда ты освоил основы пилотирования — безумно хочется увидеть то, что видел твой дрон и конечно показать этот шедевр всему миру. Для того, чтобы весь мир заметил шедевр придумали интернет и социальные сети, а вот чтобы дрон рассказал о своих приключениях — придумали видеокамеры. А для тех, кто ещё не очень хорошо летает, а снимать уже хочет — придумали мини-квадрокоптеры стоимостью около ~40$, о них и пойдёт речь.
Первые полёты моего Top Selling X6 по центру фотографий им. братьев Люмьер.
+24
How-to: Что нужно учитывать при разработке стратегии для торгового робота
8 min
37KРанее мы рассматривали этапы разработки торговых систем и изучали способы проверки работоспособности робота с помощью исторических данных, но не уделили внимание еще одному важному аспекту — созданию самой стратегии работы на рынке. Сегодня мы восполним этот пробел и поговорим о том, что нужно учитывать при разработке стратегии для торгового робота.
+7
Введение в топологические пространства. Программирование конечных топологий на Java. Часть 2: База топологии. Непрерывные отображения
8 min
14KTutorial
Список частей:
- Часть 1: Определение топологии. Открытые и замкнутые множества.
- Часть 2: База топологии. Непрерывные отображения.
Введение
В прошлый раз мы познакомились с основным понятиями теории топологических пространств, а также рассмотрели класс для представления конечных топологических пространств, написанный на языке Java. Сегодня мы двинемся дальше, изучим понятие базы топологии и получим представление о том, дла чего она нужна, а также определим понятие непрерывного отображения топологических пространств. Основной интерес последнее вызывает тем, что в топологическом пространстве отсутствует понятие расстояния между объектами, но тем не менее мы можем описать формальным языком достаточную близкость объектов в терминах… Ну, впрочем, вы это узнаете чуть позже.
+10
Предупреждён — значит, вооружён. Часть 3
12 min
55K- Часть 1: фотосинтез, все живое дышит, шоковые измерения.
- Часть 2: вентиляция помещений, вред собраний, преимущество двух приборов для проведения экспериментов.
- Часть 3: графики, калибровка, разбор прибора, принцип работы, брожение.
Скоро…
38 попугаев
Удав в попугаях выглядит гораздо длиннее, но в нашем случае это достаточно крупная единица измерений. Для определения размеров измерителя МТ8057 используем классический спичечный коробок или привычную линейку: 116х38х24 мм.
Я вас не спрашиваю, где вы были. Я спрашиваю, откуда вы идете!
Оказалось, что данные из прибора можно автоматически записывать в компьютер и строить графики, чтобы точно определить, откуда идет то или иное значение концентрации углекислого газа.
Обнаружилось это случайно. При подключении питания от USB-порта, компьютер сказал: “Дзинь-дзинь!”
+32
Что я хотел знать в начале своей карьеры разработчика. Часть 1
5 min
31KRecovery Mode
Когда вы начинаете карьеру где бы то ни было, вы, вероятно, надеетесь на многое, но не знаете, чего ожидать. Стоит ли не высовываться и делать, что сказано или нацелиться только на амбициозные проекты? Вот чему я научился за время работы как разработчик ПО.
Позвольте мне высказать несколько предположений, основанных на моих опыте и наблюдениях. Этот список не полный — потому что не может им быть. Ваш опыт будет уникальным.
Позвольте мне высказать несколько предположений, основанных на моих опыте и наблюдениях. Этот список не полный — потому что не может им быть. Ваш опыт будет уникальным.
+3
Hexapod-робот, управляемый с ПК
3 min
65KПосле просмотра большого количества статей и видео про роботов-пауков захотелось самому создать подобное. Было решено все сделать «с нуля», то есть создать корпус робота, спаять плату и запрограммировать.
Корпус робота было решено сделать из оргстекла, данный материал легок в обработке и достаточно прочный. Форма конечностей и тела робота создана самостоятельно по существующим аналогам. Извиняюсь за недостаточное количество размеров на чертежах, рисовал для себя.
Корпус робота было решено сделать из оргстекла, данный материал легок в обработке и достаточно прочный. Форма конечностей и тела робота создана самостоятельно по существующим аналогам. Извиняюсь за недостаточное количество размеров на чертежах, рисовал для себя.
+52
«У меня есть крутая идея игры» или типичные ошибки молодых разработчиков игр
7 min
89KМногие молодые разработчики и ребята пока еще не имеющие отношения к геймдеву, часто говорят фразу «У меня есть идея для игры и мы заработаем на ней миллион!». Узнали себя? В этот момент они находятся в необычайном состоянии, когда им кажется, что море по колено и тот заветный миллион у них уже в кармане. На этой волне вдохновения они приступают к началу разработки и даже не задумываются еще о том, что их ждет впереди.
Далее я расскажу о своей истории и к чему привело наше начинание. Надеюсь, что данный рассказ поможет молодым разработчикам разобраться в нынешней ситуации на рынке и, возможно, избежать типичные ошибки, которые присущи всем начинающим разработчикам.
Далее я расскажу о своей истории и к чему привело наше начинание. Надеюсь, что данный рассказ поможет молодым разработчикам разобраться в нынешней ситуации на рынке и, возможно, избежать типичные ошибки, которые присущи всем начинающим разработчикам.
+15
Оригинальный подарок своими руками
8 min
28KВступление
Еще за два месяца до юбилея девушки, в моей голове возник вопрос о подарке, ведь лучший подарок — это подарок сделанный своими руками.
я у мамы инженерВ первые же дни моих размышлений, я наткнулся в ленте новостей хабра на пост посвященный изготовлению подарочного варианта переплета книги, что напомнило мне, что лучший подарок — это книга.
+28
Сообщения в глубине: удивительная история подводного Интернета
44 min
212KИнтернет — неотъемлемая часть нашей жизни, невероятно сложная сеть, строившаяся на протяжении многих лет, фактически — это сеть кабелей, опоясывающих всю Землю, в том числе проходящая через моря и океаны. Человечество прошло долгий путь с момента прокладки первого трансатлантического подводного телеграфного кабеля в 1858 году между Соединенными Штатами и Великобританией. В этой статье мы расскажем о том, как Интернет преодолел «водные барьеры», многокилометровые глубины и подводные катаклизмы, какие сложности были на пути и как невероятно сложно поддерживать эту систему в связанном состоянии в наше время, каких колоссальных затрат средств и энергии это требует.
+219
Information
- Rating
- Does not participate
- Registered
- Activity