С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Александр @Silf
User
Попробуй R
2 min
41K
С утра я обнаружил у себя в почте приятный предновогодний сюрприз: Code School совместно с O'Reilly выпустили бесплатный курс по языку R.
Курс выполнен в традициях Code School, т.е. его запросто можно пройти в браузере за пару-другую перерывов на кофе. Для этого даже не потребуется регистрация.
+56
Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе
5 min
223KВ этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.


+376
Марсианский код: лекция о том, как программировали Curiosity
1 min
33KНа конференции HotDep 2012 Джерард Хольцман из Лаборатории реактивного движения НАСА прочёл лекцию о том, как обеспечивалась надёжность и корректность кода для марсохода Curiosity. Часовая лекция рассказывает, какие методики, стандарты кодирования и инструменты разработки применялись программистами НАСА, чтобы написать три с половиной миллиона строк сверхнадёжного кода, который в автономном режиме посадил Curiosity на поверхность Марса и обеспечивает работу всех его систем и приборов.
Лекцию можно посмотреть онлайн на сайте usenix.org, или скачать в формате .mp4 (228 Мб).
Лекцию можно посмотреть онлайн на сайте usenix.org, или скачать в формате .mp4 (228 Мб).
+24
Путь к победе на Russian AI Cup 2012
11 min
28KЗдравствуйте, Хабравчане!
Предлагаю вашему вниманию историю своего участия и победы в финале конкурса по программированию CodeTanks 2012.

Про соревнование я узнал на Хабре, решил выяснить подробнее, пошел на сайт проекта. Обрадовала возможность писать на С++ под Linux без танцев с бубном. Сразу подумалось, что будет выигрыш в производительности по сравнению с участниками, пишущими на языках типа Java/Python. Ну и сам формат соревнования мне понравился: до первого раунда две недели, дальше по неделе перерыва между раундами. Не нужно в жутком цейноте рожать правильно работающий код, а можно относительно спокойно все продумать и запрограммировать. Дальнейшее изучение правил и просмотр боев на сайте только укрепили решение участвовать: мне гораздо более интересно программировать AI в сложном и плохо определенном окружении, чем в полностью формализованном, типа настольных игр.
Предлагаю вашему вниманию историю своего участия и победы в финале конкурса по программированию CodeTanks 2012.

Про соревнование я узнал на Хабре, решил выяснить подробнее, пошел на сайт проекта. Обрадовала возможность писать на С++ под Linux без танцев с бубном. Сразу подумалось, что будет выигрыш в производительности по сравнению с участниками, пишущими на языках типа Java/Python. Ну и сам формат соревнования мне понравился: до первого раунда две недели, дальше по неделе перерыва между раундами. Не нужно в жутком цейноте рожать правильно работающий код, а можно относительно спокойно все продумать и запрограммировать. Дальнейшее изучение правил и просмотр боев на сайте только укрепили решение участвовать: мне гораздо более интересно программировать AI в сложном и плохо определенном окружении, чем в полностью формализованном, типа настольных игр.
+154
Простейшая триангуляция на Java
5 min
34KВсе доброго времени суток!
Хочу рассказать об одной интересной проблеме и ее решении, которое я применил в одном из своих проектов.
Суть проблемы такова:
Есть несколько детекторов сигнала (допустим, базовые станции GSM). И эти детекторы присылают на сервер уровень сигнала для некоего источника. Необходимо вычислить и отобразить на карте координаты источника
Если вам интересно, как это сделать, добро пожаловать под кат.
Хочу рассказать об одной интересной проблеме и ее решении, которое я применил в одном из своих проектов.
Суть проблемы такова:
Есть несколько детекторов сигнала (допустим, базовые станции GSM). И эти детекторы присылают на сервер уровень сигнала для некоего источника. Необходимо вычислить и отобразить на карте координаты источника
Если вам интересно, как это сделать, добро пожаловать под кат.
+7
Введение в R-project
5 min
41KTutorial

+31
Прогресс в разработке нейросетей для машинного обучения
3 min
44K
Сами разработчики не делают громких заявлений, чтобы не поднимать ажиотаж вокруг нейросетей — такой, как в 1960-е годы поднялся вокруг кибернетики. Тем не менее, можно говорить о возрождении интереса к исследованиям в этой области.
+61
5 вещей, которых вы не знали о многопоточности
10 min
294KTranslation
Хоть от многопоточности и библиотек, которые её поддерживают, отказываются немногие Java-программисты, но тех, кто нашёл время изучить вопрос в глубину ещё меньше. Вместо этого мы узнаём о потоках только столько, сколько нам требуется для конкретной задачи, добавляя новые приёмы в свой инструментарий лишь тогда, когда это необходимо. Так можно создавать и запускать достойные приложения, но можно делать и лучше. Понимание особенностей компилятора и виртуальной машины Java поможет вам писать более эффективный, производительный код.
В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
+68
Типы адаптивных макетов
2 min
62K
С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов.
+52
Танковые маневры на Russian AI Cup
5 min
21KRecovery Mode

Небольшая история про участие в одном из IT-конкурсов Mail.ru group.
+29
Алгоритм сортировки Timsort
6 min
162KTimsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.

Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.
Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.

Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.
Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
+278
Unity3D 4.0 релиз
1 min
35KТолько что на почту пришло письмо о том, что Unity3D 4 вышел в релиз.

Unity — кроссплатформенный инструмент для разработки 2D и 3D игр.
Новшества:
Официальная новость с детальным описанием изменений.

Unity — кроссплатформенный инструмент для разработки 2D и 3D игр.
Новшества:
- Новая система анимации Mecanim
- Real-time тени для всех платформ
- Поддержка DirectX 11
- Системе частиц добавлен функционал коллизий с миром
- Добавлено две новые платформы: Adobe Flash и Linux
- Кроссплатформенные динамические шрифты
Официальная новость с детальным описанием изменений.
+36
Календарь для ИТшников: введение
5 min
3.1K
Интро
Нам сегодня хотелось бы рассказать вам об одном амбициозном проекте. А именно, о календаре для ИТшников и всех кому он просто понравится. Почему возникла именно такая идея, что нами двигало и что в итоге получается, пойдет речь в этой статье.
+15
Черногория — не Таиланд
11 min
432K
Так получилось, что последние пять месяцев я работаю и проживаю в Черногории. Раньше я жил в московской области, работал инженером-руководителем в небольшой, но успешно российской компании и как многие другие задумывался иногда о лучшей жизни. Лучшая жизнь в моем понимании выглядела в виде небольшого домика в горах, недалеко от моря в месте где всегда хорошая погода, дружелюбные люди, хорошая экология и размеренная жизнь. Но дорога к лучшей жизни выглядела трудной — 20 лет ипотеки на квартиру в Москве, потом 10 лет накоплений на домик в горах, поэтому когда появился шанс пропустить все это и сразу попробовать мечту, то я не сомневался.
Прошло уже достаточно времени, чтобы немного разобраться в черногорской реальности, но все еще сохраняется контакт с родиной и свежесть восприятия, поэтому надеюсь что мои наблюдения можно считать вполне объективными. Сразу скажу что жизнь в Черногории в умеренных дозах (несколько месяцев) может быть терапевтической процедурой для жителя почти любого российского мегаполиса. Дальше возникает развилка — либо кажется что попал в болото, либо, как Владимир Высоцкий — обретаешь еще одну родину. Но оставим лирику для личных блогов и посмотрим на ситуацию глазами фрилансеров. Я взял за основу интересный пост про Таиланд и решил сравнить с со своими впечатлениям. В Таиланде я был туристом и понимаю что автор хоть и перегибает палку, но многие вещи излагает адекватно.
+224
Локальная скорость обучения весов нейронов в алгоритме обратного распространения ошибки
3 min
15KПривет, в одной из последних лекций по нейронным сетям на курсере речь шла о том, как можно улучшить сходимость алгоритма обратного распространения ошибки в общем, и в частности рассмотрели модель, когда каждый вес нейрона имеет свою собственную скорость обучения (neuron local gain). Я давно хотел реализовать какой нибудь алгоритм, который бы автоматически настраивал бы скорость обучения сети, но все лень руки не доходили, а тут вдруг такой простой и незамысловатый способ. В этой небольшой статье я расскажу про эту модель и приведу несколько примеров того, когда эта модель может быть полезна.
+17
Qbaka — сервис для отслеживания JS-ошибок
1 min
9.4KПетербургские разработчики Андрей Мима (amima — ex-Яндекс, ex-ВКонтакте) и Даниил Гительсон (meta4) запустили сервис Qbaka, задачей которого является помощь программистам сайтов и приложений в отслеживании ошибок в коде JavaScript. Сервис пока находится в стадии бета-тестирования, однако уже открыт для всех желающих.
Сервис предельно прост в использовании: программист добавляет несколько строк JS-кода к своему веб-приложению — они асинхронно подгружают ядро «Кубаки», которое собирает ошибки (слушая
Сервис предельно прост в использовании: программист добавляет несколько строк JS-кода к своему веб-приложению — они асинхронно подгружают ядро «Кубаки», которое собирает ошибки (слушая
window.onerror
) и отправляет их на сервер.+46
Лучший интерфейс — отсутствие интерфейса
7 min
124KTranslation
“Atmadm”
Раньше наша работа была кошмаром из нагромождения букв.
“chkntfs”
“dir”

Тогда, в 1984, адаптировав Ксерокс ПАРК ВИМП, Эпл забросила нас вперед на целый галактический прыжок вдаль от этих ужасных командных строк ДОСа, в мир графических пользовательских интерфейсов [ПИ].


Эпл Лиза
Мы словно прозрели. И позже, десять лет спустя, когда мы смогли касаться Палм Пилот вместо того чтобы перемещать мышь, мы были впечатлены еще больше. Но сегодня наша любовь к цифровым интерфейсам вышла из-под контроля.
Раньше наша работа была кошмаром из нагромождения букв.
“chkntfs”
“dir”


Тогда, в 1984, адаптировав Ксерокс ПАРК ВИМП, Эпл забросила нас вперед на целый галактический прыжок вдаль от этих ужасных командных строк ДОСа, в мир графических пользовательских интерфейсов [ПИ].


Эпл Лиза
Мы словно прозрели. И позже, десять лет спустя, когда мы смогли касаться Палм Пилот вместо того чтобы перемещать мышь, мы были впечатлены еще больше. Но сегодня наша любовь к цифровым интерфейсам вышла из-под контроля.
+197
Как найти девушку через общий топор — Майн объединяет владельцев вещей
5 min
16K
Нет, мы не сайт знакомств ни разу.
Mine — это всемирный граф частной собственности
Mine — это вконтактик для ваших мимимишечек
Если серьёзно, то Майн — это сайт, на котором люди связываются через свои вещи. Наконец-то вы сможете:
- Вступить в клуб владельцев перочинного ножа
- Пощекотать ваше толстое материалистическое эго
- Публично признаться в трогательной нежности к своему ноутбуку
- Показать всем чего вы стоите (буквально)
- Найти женщину-гика на белом Харлее и с приставкой денди
- Подкараулить владельца нового Vertu ночью у подъезда! (чтобы поболтать)
- Открыто ненавидеть обладателя 7-и айфонов! (и т.д.)
Почему мы считаем, что такая на первый взгляд лекгомысленная затея может стать крепким звеном мирового e-commerce рынка, зачем магазины должны вставать к нам в очередь и пара стратегических секретов — под катом.
+55
Какую прочесть книгу, чтобы делать доклады лучше?
5 min
25KUPD: заголовок поменял по просьбе общественности. Предыдущий вариант был «Как прочесть книгу и стать лучше».
В начале октября издательство «Манн, Иванов и Фербер» предложило мне написать, что я думаю о книге Алексея Каптерева «Мастерство презентации». Почему мне? Виной тому — мои посты на Хабре по искусству презентаций (тыц, еще тыц).
Книга оказалась интересной, я согласился. Поскольку денег за обзор не платят, и в издательстве я не работаю, ниже — гарантированно честный обзор. Станете ли вы лучше или успешнее, если прочтете еще одну книгу? Решать вам: собственно, я и пишу свои впечатления для того, чтобы хабраразум в дискуссии решил – надо ли нам читать такие книги, и что они нам могут дать нового для успеха.
Вкратце мое мнение: книгу читать стоит именно потому что она помогает стать лучше. Не делать презентации лучше, а лучше понимать, зачем и как общаться с людьми, как это делать эффективнее, словом – как за то же время сделать больше хорошего себе и людям.
Для меня существенным аргументом «за» эту книгу была рекомендация Ильи Сегаловича, со-основателя и бессменного технического директора Яндекса: «Алексей замечательно знает и умеет преподать науку рассказывания. Слушать его – удовольствие, а советы – бесценны».
Книга меня поразила, и прежде чем вы решите, стоит ли читать этот обзор дальше, сразу предупреждаю: кроме бочки меда будет несколько ложек дегтя. Начнем, для бодрости, с хорошего.
В начале октября издательство «Манн, Иванов и Фербер» предложило мне написать, что я думаю о книге Алексея Каптерева «Мастерство презентации». Почему мне? Виной тому — мои посты на Хабре по искусству презентаций (тыц, еще тыц).
Книга оказалась интересной, я согласился. Поскольку денег за обзор не платят, и в издательстве я не работаю, ниже — гарантированно честный обзор. Станете ли вы лучше или успешнее, если прочтете еще одну книгу? Решать вам: собственно, я и пишу свои впечатления для того, чтобы хабраразум в дискуссии решил – надо ли нам читать такие книги, и что они нам могут дать нового для успеха.
Вкратце мое мнение: книгу читать стоит именно потому что она помогает стать лучше. Не делать презентации лучше, а лучше понимать, зачем и как общаться с людьми, как это делать эффективнее, словом – как за то же время сделать больше хорошего себе и людям.
Для меня существенным аргументом «за» эту книгу была рекомендация Ильи Сегаловича, со-основателя и бессменного технического директора Яндекса: «Алексей замечательно знает и умеет преподать науку рассказывания. Слушать его – удовольствие, а советы – бесценны».
Книга меня поразила, и прежде чем вы решите, стоит ли читать этот обзор дальше, сразу предупреждаю: кроме бочки меда будет несколько ложек дегтя. Начнем, для бодрости, с хорошего.
+18
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity