Pull to refresh
19
0
Николай Ким @Yaruson

Разработчик

Send message

Хороших книг пост

Reading time2 min
Views70K


А давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
Читать дальше →
Total votes 84: ↑72 and ↓12+60
Comments392

Не пельменем единым жив программист или история о том, как все успеть

Reading time7 min
Views137K
image

По заявкам трудящихся и в связи с переносом — возвращаю пост, который многих порадовал. Надеюсь НЛО будет не против.

На написание этого поста меня сподвиг замечательный пост «За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил». Сразу хочу извиниться за возможные опечатки — пишу с планшета, сидя в микроавтобусе и вытягивая сеть телефоном. Hacker's keyboard очень удобен для ssh-доступа, но большие тексты писать им не очень удобно.

IT- специалисты — народ любопытный. То соберут на базе микроконтроллеров автоматическую систему полива и освещения для любимого фикуса, то пропатчат прошивку мультиварки для раздачи торрентов. Но, по непонятной и загадочной причине, когда дело доходит до еды, пресловутый принцип DIY дает сбой. И наш герой, способный часами переделывать кинескоп старого телевизора в Луч Смерти, идет на кухню утолить голод соевым текстуратом пополам с гидроцеллюлозой и «коллагеновым сырьем».

В этом посте я хочу разрушить миф о том, что еда может быть либо быстрой и удобной, либо съедобной. Не секрет, что многим из нас приходится работать по 12 часов в сутки, что не способствует кулинарным подвигам с участием 28 приправ и перьев с зада дракона, омытых слезами единорога. Вы получите замечательную возможность посмотреть в глаза своей половинки на 8 марта после того, как она получит не контроллер для дистанционного управления шторой, а свежевыпеченный хлеб ручной работы рано утром. Если вам надоело есть синтетику — добро пожаловать под hubracut.
Читать дальше →
Total votes 269: ↑263 and ↓6+257
Comments293

Маленький Hello World для маленького микроконтроллера — в 24 байта (и чужое решение в 12 байт)

Reading time7 min
Views35K
Классической тестовой программой для большинства программистов на системах, имеющих хоть какой-то дисплей, является Hello World. Такая традиция была введена Керниганом и Ритчи в 1978 году.

Для микроконтроллеров аналогичным примером уже давно стала программа, которая мигает светодиодом. В этой статье я покажу результат эксперимента по максимальному сокращению такой программы на примере контроллера ATTiny15 фирмы Атмел.

image

UPD: В комментариях привели ссылку на рекордное решение в 12 байт. Браво!
UPD2: Путем насилия над контролером, удалось выиграть еще 2 байта.
UPD3: И еще одно решение, с еще большим насилием над контроллером.
UPD4: Еще один вариант — в одну инструкцию (но исполняется при этом вся память программ), как и в вариантах 2 и 3.
UPD5: Вариант с использованием возможности выдать тактовый генератор на один из пинов контроллера, при помощи FUSE-бита

Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments41

Sqimitive.js — Frontend Primitive или «Backbone без фантиков»

Reading time31 min
Views19K
Уже довольно давно большинство сайтов перестало быть набором HTML/PHP/CSS/JS-файлов, которые достаточно просто загрузить на сервер. Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS и ещё 100500 инструментов — всё это сегодня применяется для сборки проектов, обновления компонентов, загрузки зависимостей, сжатия кода, компиляции из одного JavaScript в другой, подтасовки карт, прополки огорода и даже готовки яичницы.

Многих людей это вдохновляет. Да что там — 95% моих знакомых в один голос твердят, как подключив всего пару-тройку библиотек с особой, уличной магией можно забабахать сайт на over-9000 зелёных австралийских долларов — и всего за один вечер, с перерывом на кофе и бублики.

А я — странный человек. Не люблю смешения языков, технологий, библиотек. Angular, Knockout, React — они все хороши, но каждая — по-своему сложна. А ведь есть и «гибриды», где сходится сразу несколько миров — как Ember и Knockout.Bootstrap. Вдобавок, многие построены на jQuery — впрочем, к ней даже у меня претензий нет; наверное, таким и должен был быть JavaScript.

Как бы то ни было, реальность беззастенчиво входит в контакт с мечтами и расставляет точки над «i». Мне так же приходится писать на «new & popular» — а когда пишешь, душа томится и просится создать очередной велосипед… а ей разве откажешь? Она ведь как дитя малое.

Велосипед был создан. Велосипед без фантиков. Такой же простой, как автомат Калашникова, и многогранный, как швейцарский нож, где вместо наследования — события, вместо моделей, коллекций и представлений — один класс, с неограниченной вложенностью и полной свободой действий, почти в два раза меньший Backbone.js, использующий Underscore.js и, необязательно, jQuery/Zepto.

Добро пожаловать в Sqimitive.
Zen Book: введение в нирвану
Total votes 54: ↑49 and ↓5+44
Comments33

Монтаж накруткой. Технология

Reading time5 min
Views184K

Раньше, чтобы провести отладку электронной схемы, я применял макетные платы, навешивал соплей, для соединений применял монтажный провод и обрезки выводов резисторов. Трассировку делал на ходу, часто с ошибками, что иногда приводило детали в негодность. У такого монтажа много проблем: тяжело менять схему, провода отваливаются от вибрации, сложно сводить несколько проводов в одной точке и т.д.

Есть и другие способы макетирования, но сегодня я напомню о монтаже накруткой [1, 2] — технологии, проверенной временем, удобной и надежной для макетирования и прототипирования. Более того, по этой технологии можно создавать конечные устройства, которые будут надежно работать много лет.

Читать дальше →
Total votes 121: ↑120 and ↓1+119
Comments49

С днем рождения, Nokia 3310

Reading time3 min
Views133K
«На самом деле Nokia 3310 настолько эпична, что, попав в работающий блендер, может собраться обратно без проблем. Доказано».
«У меня такой 10 лет проработал».



Нашему знаковому телефону Nokia 3310 исполняется 14 лет. Его рождение пришлось на «золотой век» индустрии, когда коробки от телефонов были большими, а сами телефоны — маленькими. В то время мерялись не количеством ядер, а набором инструментов в полифонии, WAP был на подъеме, а GPRS в России только-только начал маячить на горизонте — в одном-единственном демонстрационном павильоне во время «Связь-Экспоком». До начала эпохи смартфонов оставалась пара счастливых лет.
Читать дальше →
Total votes 189: ↑180 and ↓9+171
Comments194

Случайность в автотестах

Reading time5 min
Views17K

Введение


Когда несколько лет назад я написал свой первый автотест, он выглядел следующим образом. В цикле 100 раз доставал из базы случайного пользователя, проводил над ним требуемую операцию и проверял, что результат меня устраивает. Это казалось достаточно логичным: не могу же я проводить тест на одном пользователе, этого недостаточно, это ничего не докажет.

С тех пор прошло значительное время, я успел поработать над несколькими разными проектами на разных языках и даже сменить команду. Сегодня я могу с уверенностью сказать: вы не должны использовать случайность в своих автотестах, кроме случаев, которые будут оговорены отдельно. И я расскажу почему.
Читать дальше →
Total votes 63: ↑51 and ↓12+39
Comments31

Когда программисту нечем заняться, он пишет Gopher-сервер

Reading time4 min
Views13K
Надеюсь, автор предыдущего археологического поста не выпустил на Хабр джинна Недели Gopher'а. Я тоже этого не хочу делать, но раз уж тема была поднята, то осмелюсь взять часть греха на свою душу.

Примером имплементации Gopher-сервера в 140 строк на JS.

Немного предыстории. Некоторое время назад мне действительно было совершенно нечем заняться и в рамках подготовки внутрикорпоративного семинара по Node.js я решил немножко поразмять мозг имплементацией какого-нибудь древнего, забытого всеми во имя добра, протокола, на такой ультрасовременной и трендовой штуке, как Нода. Изначальный мой выбор пал было на IRC, но прочитав все RFC и поглядев на парочку имплементаций на сях, что-то я закручинился. До семинара оставалась всего неделя, и написать за это время сколько-нибудь работающий IRC-сервер мне показалось не то чтобы нереальным, но явно проблематичным.

Единственным, пожалуй, в текущем историческом контексте достоинством Gopher'а является его поразительная простота. Смотрите, RFC1436 — просто коротюнечка по меркам IETF. Статья в Википедии — ещё короче. И этого вполне достаточно.
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments11

Новая жизнь протокола Gopher

Reading time3 min
Views24K
Единственная статья по протоколу Gopher была опубликована на Хабре ещё в 2009 году, поэтому я решил немного освежить тему.

Gopher (суслик — англ.) — это текстовый предшественник веба, который ушёл в небытие ещё в далёком 1993-м, когда его вытеснил более функциональный HTTP. Со временем он перестал поддерживаться браузерами, поэтому при попытке перейти по gopher://-ссылке какой-нибудь Firefox 32 с сожалением выдаёт, что такой протокол не поддерживается. Моё знакомство с этим артефактом интернета до последнего времени ограничивалось строкой из книги А. Левина “Самоучитель по работе на компьютере (Windows 95/98)”: “… до сих пор многие интересные ресурсы доступны только на Gopher”. Это было 14 лет назад, хотя уже тогда протокол был совершенно заброшенным.

Но суслик хоть и ушёл, да не совсем.
Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments22

Azarkant: короткометражный мультфильм, на который ушло три года

Reading time1 min
Views92K


На Хабре не так давно публиковалась новость о создании короткометражного фильма «Крепость», созданного Дмитрием Федотовым.

На днях на глаза попалась еще одна короткометражка, Azarkant, от Андрея Климова. На создание этой короткометражки ушло целых три года, и создавалась она на ПК с процессором i7 930 и 6 ГБ ОЗУ.

Само собой, на такой машине прорисовка/рендеринг выполняется достаточно долго (одна сцена прорисовывается по 50 часов, по словам создателя ролика), так что остается удивляться терпению автора.

Читать дальше →
Total votes 123: ↑115 and ↓8+107
Comments64

Как решать проблемы пользователей не за сутки, а за минуты: ускоряем поиск по логам

Reading time6 min
Views29K
Мы в Почте Mail.Ru постоянно сталкиваемся с необходимостью работать с историей пользователей. Учитывая, что ежемесячная аудитория проекта составляет более 40 миллионов человек, история всех их действий – это порядка петабайта данных. Потребность в поиске по логам у нас возникает сотни раз в день, а на получение нужной информации в среднем уходило несколько часов. При этом, по нашим предположениям, извлечение информации из логов можно было ускорить до нескольких секунд.

Чтобы оценить целесообразность разработки системы для оптимизации поиска по логам, мы воспользовались вот этой таблицей с XKCD:



(на самом деле нет, но нам она все равно нравится).

Итак, мы всерьез взялись за оптимизацию. Итогом нашей работы стала разработка системы, благодаря которой мы можем поднять историю действий примерно в 100 000 (сто тысяч, это не опечатка) раз быстрее. Мы разработали big-data сервис, который позволяет хранить петабайты информации в структурированном виде: каждому ключу у нас соответствует лог каких-то событий. Хранилище устроено так, что оно способно работать и на самых дешевых SATA-дисках, и на больших многодисковых хранилищах с минимальным количеством процессорного времени, при этом оно полностью fault-толерантно — если вдруг какая-то машина выйдет из строя, это ни на что не влияет. Если в системе заканчивается место, в нее просто добавляется сервер или несколько: система автоматически увидит их и начнет записывать данные. Чтение данных происходит почти моментально.
Читать дальше →
Total votes 72: ↑60 and ↓12+48
Comments64

Опыт применения Go в продакшене Яндекса

Reading time7 min
Views74K
Хочу поделиться опытом использования языка Go в продакшн-системах Яндекса. Вообще мы здесь довольно консервативно относимся к тому, какие языки использовать для реальных систем. И это лишь добавляет полезности тому опыту, который мы получили в этот раз.

Мы начали разрабатывать на Go летом прошлого года. Тогда появился фреймворк Go для облачной платформы Cocaine. До этого приложения серверного API Браузера писались в основном на C++ и Python. Серверный API в это время как раз переходил на облачную платформу, и мы по большей части только определялись с тем, какие технологии использовать в будущем для него. API выполняет следующие функции: получить данные, обработать, отправить во внутренний сервис Яндекса, ещё раз обработать, отдать назад Браузеру. Набор простых приложений.



Недостатком C++ для нас был явный оверкилл для наших целей, на разработку уходила уйма времени, также большой проблемой для нас было то, что плюсовый фреймворк для Кокаина не представлял никакой возможности работать асинхронно, кроме как с помощью коллбэков. У нас было много обращений к различным сервисам, поэтому в результате скоро весь код стал одной большой лапшой из коллбэков. Масштабировать и отлаживать ее было очень сложно.
Читать дальше →
Total votes 144: ↑138 and ↓6+132
Comments123

Служба Солнца

Reading time6 min
Views103K
Достаточно давно я заметил, что на Хабе нет ни одной статьи про обсерватории. Есть статьи про телескопы, про спутники, про астероиды. Но статьи о том, как устроены места обитания астрономов — нет. Да что там! Когда-то была масса статей про офисы крупных IT-компаний, которые сводились к тому, где какими конфетками кормят, где удобнее подборка кресел, где какими компьютерами пользуются. Но и в этих статьях не упоминались обсерватории. А ведь, на мой взгляд, куда интереснее посмотреть на кучу монструозных произведений человеческого гения, чем сравнивать обед программиста Google и Apple.



Периодически я попадаю в командировки в различные обсерватории. Мне захотелось устранить описанное выше недоразумение и написать небольшой рассказ на эту тему. Статья посвящена Уссурийской Астрофизической обсерватории (УАФО ДВО РАН), которая является крупнейшей обсерваторией на Дальнем Востоке. Жителям Приморского края она скорее всего неплохо знакома, но, думаю, что для остальных будет любопытно почитать.
Читать дальше →
Total votes 142: ↑140 and ↓2+138
Comments47

Минимализм и анимация в веб-дизайне

Reading time3 min
Views16K
Что случается, когда аналитик сталкивается с абстрактными художественными понятиями? А если от них зависит эффективность и успешность его работы? Он попытается их формализовать, выявить критерии, связи и так далее. Обычно получается забавно и очевидно. Но иногда из этого вырастает полезная теория.
Я столкнулся с понятием красоты сайта. Делюсь наработками.
Картинки для привлечения внимания нет.
Читать дальше →
Total votes 21: ↑12 and ↓9+3
Comments5

Cuckoo – собственная автоматизированная лаборатория анализа вредоносных файлов

Reading time21 min
Views62K
image
Месяц назад портал на моей новой работе был взломан. Руководство задалось вопросом «Как?». В ходе недолгих поисков и анализу подключений к серверам, был найден ПК сотрудника, с которого устанавливалось подключение примерно в то самое время. Сотрудник ничего о взломе не знал, но в ходе беседы вспомнил один случай, ему незадолго до взлома пришёл документ от «сотрудника фирмы», который не открылся. Файл был в формате exe, с этого и началась вся история.
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments26

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity