Search
Write a publication
Pull to refresh
0
Николай @nickus2010read⁠-⁠only

Пользователь

Send message

Пишем свой синтаксический анализатор JSON (в горошек и с перламутровыми пуговицами)

Reading time13 min
Views10K
Эта статья была написана Аароном Паттерсоном, Ruby разработчиком из Сиэтла, штат Вашингтон. Он увлечен разработкой на Ruby вот уже 7 лет и будет рад поделиться своей любовью к этому замечательному языку.

Салют всем! Надеюсь, у вас отличное настроение. Сегодня солнце ненадолго выглянуло из-за туч, так что уж у меня-то точно все прекрасно!

В этой статье мы рассмотрим ряд инструментов компиляции для использования в связке с Ruby. А для погружения в предмет мы напишем синтаксический анализатор JSON. Уже слышу недовольные возгласы вроде: «ну Аарон, ну зачем? Разве их уже не 1,234,567 штук понаписано?» Вот именно! У нас уже 1,234,567 анализаторов JSON написанных на Ruby! И мы тоже будем производить анализ JSON, потому что грамматика его достаточно проста для завершения работы за один раз, и потому что она тем не менее достаточно сложна, чтобы можно было с умом применить разработанные для Ruby инструменты компиляции.

Прежде чем вы продолжите чтение, хочу обратить внимание на то, что это отнюдь не статья о том, как анализировать JSON, а о том, как использовать инструменты анализа и компиляции в Ruby.
Итак...

Разработка виджета под Android

Reading time6 min
Views44K
На Хабре уже достаточно статей о том, как разработать «hello world»-виджет для устройств на базе Android. Еще больше об этом можно почитать в сети, в том числе и на сайте Google для разработчиков, StackOverflow и других ресурсах. Казалось бы, все подробно разжевано, есть сотни примеров — зачем же писать очередную статью, когда вокруг и так достаточно информации?
Однако, когда мы начали разработку виджета, нам пришлось потратить несколько недель на то, чтобы разобраться с нюансами и реализовать проект так, как мы задумали его изначально.
Надеемся, наш опыт поможет сэкономить время на реализацию вашего виджета.
Читать дальше →

Настройка маленького кластера Hadoop 2.2.0 с нуля

Reading time7 min
Views64K


В данной статье будет по шагам разобран процесс создания небольшого кластера Hadoop для опытов.

Несмотря на то, что в интернете на иностранных ресурсах есть полно материала про настройку/развертывание Hadoop, большинство из них либо описывают настройку ранних версий (0.X.X и 1.X.X), либо описывают только настройку в режиме single mode/pseudo distributed mode и лишь частично fully distributed mode. На русском языке материала практически нет вовсе.

Когда мне самому понадобился Hadoop, то я далеко не с первого раза смог все настроить. Материал был неактуален, часто попадались конфиги, которые используют deprecated параметры, поэтому использовать их нежелательно. А даже когда все настроил, то задавался многими вопросами, на которые искал ответы. Также встречались похожие вопросы у других людей.

Всем кому интересно, прошу пожаловать по кат.
Подробности

Система прогнозирования на базе нейронных сетей в промышленности

Reading time5 min
Views58K
Все больше внимания уделяется оптимизации процессов, в-основном, в виде снижения затрат на производство продукции. Снижения затрат можно достигнуть модернизированием оборудования, но данный подход влечет за собой множество затрат на проектирование, покупку, реконструкцию и пр., а также сопровождается недополученной прибылью во время простоя реконструируемого объекта. Но также возможно использовать математический подход для поиска неэффективности в технологическом процессе, об и этом и пойдет речь далее.
Читать дальше →

Задачи на собеседованиях в Яндексе

Reading time15 min
Views360K
Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

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

image
Читать дальше →

Плагин Database Support в IDE от JetBrains

Reading time5 min
Views71K
Даже среди тех, кто давно и активно пользуется IntelliJ IDEA, есть немало людей, ничего не знающих о плагине, позволяющем работать с базами данных прямо из IDE. Между тем, лично для меня это — одна из самых полезных возможностей IDEA, ибо писать код я могу и в vi. Важно, насколько удобно его потом отлаживать и улучшать. Спрашивается, при чем тут Database support? Собственно, при отладке приложений я его и использую.

Рассказ про плагин Database Support будет совершенно неофициальным, я сам его использовал только в веб-разработке и в разработке под Android, но хардкорным разработчикам жесткого enterprise тоже, надеюсь, будет интересно.

История веб-разработчика


Как-то раз мне пришла в голову мысль написать веб-приложение. Был шанс, что нагрузка на него будет довольно высокой и неравномерной, так что я решил в качестве СУБД использовать PostgreSQL в надежде, что она будет работать быстрее привычной MySQL. Сказано — сделано. Прототип написан, база создана, начинаем заполнять таблицы всякой тестовой гадостью.

Читать дальше →

Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 2)

Reading time4 min
Views156K

Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:

Часть 1
Читать дальше →

Краткий обзор Spring Security

Reading time7 min
Views251K
Итак, дорогой хабраюзер, предлагаю тебе рассмотреть такие аспекты Spring Security как:

  • Ключевые объекты контекста Spring Security.
  • Процесс аутентификации в Spring Security.
  • Подключение собственно самого Spring Security к проекту.

Читать дальше →

Оптимизация запросов. Основы EXPLAIN в PostgreSQL

Reading time3 min
Views236K

Почему запрос выполняется так долго? Почему не используются индексы?
Наверное, все слышали об EXPLAIN в PostgreSQL. Но не так много тех, кто понимает, как его использовать. Сам длительное время не мог найти доступного для понимания учебника (плохо искал?).
Надеюсь, эта статья поможет желающим разобраться с этим замечательным инструментом.
Читать дальше →

Управленческие инструменты: 5 вопросов для прояснения целей или для чего нужен BMW X5?

Reading time7 min
Views114K
Давным давно в одной из компаний, лидере мирового производства микропроцессоров, меня однажды поразила менеджерская напасть. Решил, знаете ли, заняться развитием сотрудников. (Периодически, такое с менеджерами случается, да.)

Подхожу к своему сотруднику — назовем его Серега:

— Серега, — говорю, — ты в какую сторону вообще хочешь развиваться: в техническую или в менеджерскую?

— Сань, ну голова варит уже не очень, возраст… (Серега старше меня на 3 года) Поэтому, наверное, в менеджерскую.


Ну, в менеджерскую — так в менеджерскую. Я ж на тот момент был менеджер опытный, уже 4 года опыта! Энергии много, желания помочь людям — через край!

Короче, Серега стал моим заместителем, начал посещать всякие тренинги. Взял в управление какой-то мощный студенческий проект, там ребята что-то делали.

А кончилось все тем, что пришлось нам с Серегой расставаться. Как так получилось, где Серега в итоге реализовал себя, и какой правильный управленческий инструмент я мог бы тогда применить — об этом сегодня и поговорим.

Заодно поговорим, что делать, если вы обнаружили себя и/или своих сотрудников в квадрате C в статье:

Читать дальше →

Почему самолёты не летают сами?

Reading time4 min
Views47K
Тема поста навеяна новостью об очередной российской авиакатастрофе, на этот раз в Казани.

Нет, я не буду спекулировать на тему, кто виноват — ни в этом конкретном случае, ни в целом в индустрии авиаперевозок. Чего мне действительно хочется — это понять, почему сейчас, в 2013-м году, причиной крушения самолётов ещё может являться человеческий фактор, а также найти ответ на вопрос: зачем современным самолётам пилоты-люди?
Сразу уточню, что пилотом не являюсь и к авиации отношения не имею, поэтому всё что написано ниже имеет ярко выраженный диванный характер. Тем не менее, на мой взгляд, пост поднимает определённые принципиальные вопросы из области автоматизации управления авиационной техникой — и мы все выиграем, если на эти вопросы прозвучат какие-то ответы.
Читать дальше →

Алгоритм энергосбережения на практике

Reading time4 min
Views42K

От автора


Это моя первая статья — жду конструктивной критики, мнений, замечаний, вопросов.

Предисловие


Эта статья посвящена решению проблемы энергосбережения, которая присутствовала при разработке ПО радио-модуля под нужды детектирования разрыва\замыкания цепей и получения температуры.

Что имеем




Был разработан радио-модуль на «борту» которого: «мозг» — atmega128rfa1, со встроенным радиопередатчиком и датчик температуры FM75. Питается устройство от 1-ой батарейки CR2032 (3.3 В, ~200 мА*час).
Читать дальше →

Графы для самых маленьких: Dijkstra или как я не ходил на собеседование в Twitter

Reading time6 min
Views107K
Не так давно наткнулся на статью о том, как Michael Kozakov не смог решить алгоритмическую задачу на собеседовании в Twitter. Решение этой задачи — почти в чистом виде один из самых стандартных алгоритмов на графах, а именно, алгоритм Дейкстры.
В этой статье я постараюсь рассказать алгоритм Дейкстры на примере решения этой задачи в несколько усложненном виде. Всех, кому интересно, прошу под кат.
Читать дальше →

Может ли быть слишком много автоматизации в самолете?

Reading time7 min
Views50K
В процессе обсуждения моей статьи о нахождении ошибки в программном обеспечении контроллера авиационного двигателя (FADEC) был затронут ряд вопросов, не имеющих прямого отношения к теме той статьи. Видя довольно большой интерес читателей к авиационно-компьютерной тематике, я решил рассказать еще об одной, довольно известной в узких кругах, истории, где ошибка в логике системы доставила экипажу несколько весьма интересных моментов, а производителю – кучу головной боли. На всякий случай, предупреждение – если считаете, что можете подхватить авиафобию (или она у вас уже есть), то лучше не переворачивайте страницу.
Читать дальше →

О летней стажировке в JetBrains

Reading time7 min
Views24K
Привет, Хабр!

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

C годами у нас появилось много образовательных программ, которые мы поддерживаем (Computer Science Center, программа магистров при АУ РАН, Лаборатория JetBrains при Математико-механическом факультете СПбГУ и пр.) и много студентов, которые хотят пройти стажировку у нас. В результате этим летом мы провели масштабный проект летних практик.

Читать дальше →

Карта памяти процесса

Reading time38 min
Views47K
Задумывались ли вы над тем, как именно используется память, доступная вашей программе, да и вообще, что именно размещается в этих двух-трех гигабайтах виртуальной памяти, с которыми работает ваше ПО?

Спросите, зачем?
Ну как же, для 32-битного приложения 2-3 гигабайта – это ваш лимит за пределы которого без использования AWE вы выбраться не сможете, а контролировать собственные ресурсы все же желательно. Но даже и без этого просто с целью разобраться…

В прошлых статьях я описывал работу отладчика, где производились модификации памяти приложения, находящегося под отладкой. Эта статья является продолжением данного материала. И хотя к отладчику она не будет иметь отношения, но вот к процессу отладки – самое непосредственное…

Давайте посмотрим, как именно программист работает с памятью при отладке (особенно при отладке стороннего приложения, проще говоря, при реверсе):

1. Как правило, самой частой операцией будет поиск значения в памяти приложения и, к сожалению, данный функционал почему-то не предоставлен в отладчике Delphi (собственно, как и в MS VC++).
2. Модификация системных структур (PEB/TEB/SEHChain/Unwind/директорий PE-файлов etc...) будет происходить гораздо проще, когда поля структур размаплены на занимаемые ими адреса и представлены в читабельном виде.
3. Отслеживание изменений в памяти процесса (практически никем не предоставляемый функционал, реализованный в виде плагинов к популярным отладчикам). Действительно, зачем трассировать до посинения, когда достаточно сравнить два снимка карты памяти, чтобы понять, тут ли происходит нужная нам модификация данных или нет?

Да, собственно, вариантов использования много.

Впрочем, если без лирики, утилит отображающих более-менее вменяемую информацию о карте памяти процесса, которую можно применить для отладки, очень мало.
Читать дальше →

Неверная интерпретация алгоритма Ахо-Корасик

Reading time7 min
Views21K
В далеком (а может и не очень далеком) 1975 году Альфред Ахо и Маргарет Корасик опубликовали статью, в которой был подробно описан алгоритм эффективного поиска всех вхождений всех строк-образцов в заданную строку. В дальнейшем этот алгоритм и получил название «алгоритм Ахо-Корасик». Неудивительно, что через некоторое время появились технические и «художественные» переводы данной статьи на русский язык. Порой мне даже встречались вольные изложения сути алгоритма в том виде, в котором его понимает автор. Причем последний, судя по тексту, узнал об алгоритме далеко не из первоисточника. Я не знаю существовал ли перевод, который послужил первоисточником проблемы, но мне всё больше и больше попадаются статьи с описанием алгоритма Ахо-Корасик, в котором допущена одна и та же кардинальная ошибка. Последней каплей была статья пользователя rmq на хабре, которую данная ошибка не миновала. Собственно об этой ошибке мне и хотелось бы рассказать общественности в своей статье.
Замечание: статья пользователя rmq, как выяснилось позже, не содержит этой ошибки. Как она решена там расскажу ниже. А ему огромное спасибо, если бы не его топик я бы не написал свой и не получил бы инвайт!
Перед началом, еще пара слов о целевой аудитории: Скорее всего, тем, кто давно знаком с алгоритмом Ахо-Корасик, моя статья будет не интересна, так как о его особенностях они давно уже знают. По крайней мере, все мои знакомые программисты не один раз применявшие данный алгоритм знают о существовании его неверных интерпретаций не понаслышке. А вот новичкам и тем, кому не довелось часто применять его на практике, эта статья может оказаться довольно полезной.
Итак, начнем.
Читать дальше →

Некоторые полезные атрибуты о которых вы могли не знать

Reading time4 min
Views20K
Здравствуйте, я хотел бы вам рассказать о некоторых редко используемых, но весьма полезных атрибутах из мира .NET.

Итак, поговорим о:

Читать дальше →

RabbitMQ tutorial 4 — Роутинг

Reading time4 min
Views79K
Продолжаю серию перевода уроков с официального сайта. Примеры будут на php, но их можно реализовать на большинстве популярных ЯП.
В предыдущей статье мы разработали систему логирования. Нам удалось отправлять сообщения нескольким получателям. В этой статье модернизируем нашу программу — будем отправлять получателю только часть сообщений. Например, мы сможем сохранять на диске только сообщения с критическими ошибками (экономия места на диске), а в консоли будем отображать все сообщения.
Читать дальше →

RabbitMQ tutorial 1 — Hello World

Reading time6 min
Views554K


RabbitMQ позволяет взаимодействовать различным программам при помощи протокола AMQP. RabbitMQ является отличным решением для построения SOA (сервис-ориентированной архитектуры) и распределением отложенных ресурсоемких задач.

Под катом перевод первого из шести уроков официального сайта. Примеры на python, но его знание вовсе не обязательно. Аналогичные примеру программы можно воспроизвести практически на любом популярном ЯП. [так выглядят комментарии переводчика, т.е. меня]
Читать дальше →

Information

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