Раньше основной библиотекой для парсинга был JSDOM, который страдал излишней тяжеловесностью и на самом деле тормозил скорее процесс парсинга. Но время изменились и пришел cheerio. Он делает почти все то же самое, и отбрасывает лишние из процесса, при этом сам реализует какую-то часть jQuery(а именно ту, которая нам нужна для парсинга). И за счет этого позволяет наконец написать не тормозящий парсер, при этом не используя regexp'ы ради увеличения производительности. Он справляется и с xml, только нужно вызвать его с {xmlMode: true}. О том как можно легко парсить на nodeJS под катом.
Олег @Voenniy
Пользователь
Текстовый туториал по React.js и Redux на русском
2 min
204KTutorial
(у учебника по Основам React вышло второе издание, Redux-учебник в процессе обновления)
Закончил работу над парой подробных текстовых туториалов на русском. Постарался уделить как можно больше времени практике. По ходу повествования есть вопросы, задачи и решения.
Курс про Redux попал в официальную документацию.
Оба руководства бесплатны и выложены на gitbook (можно скачать PDF, ePub, mobi).
В текстах нарочно участвуют термины переведенные на русский (например, состояние), английские (state), либо английский термин написанный по-русски — стейт. Считаю это допустимым, и даже более того, удобным для читателя.
+33
Обзор компактных Linux дистрибутивов для системных администраторов
3 min
61KВ статье "A comparative look at compact sysadmin distributions" представлен обзор компактных (210Мб mini CD) LiveCD/LiveUSB Linux дистрибутивов для системных администраторов:
SliTaz — занимает всего 25Мб и работает на системах с 128Мб ОЗУ, при наличии графического интерфейса пользователя на основе JWM. Поддерживается загрузка с CD и USB. Ориентация дистрибутива — компактная десктоп система. Из программ которые могут пригодится для восстановления системы присутствует GParted, отдельно можно загрузить пакеты с TestDisk (восстановление дисковых разделов) и PhotoRec (восстановление файлов);

SliTaz — занимает всего 25Мб и работает на системах с 128Мб ОЗУ, при наличии графического интерфейса пользователя на основе JWM. Поддерживается загрузка с CD и USB. Ориентация дистрибутива — компактная десктоп система. Из программ которые могут пригодится для восстановления системы присутствует GParted, отдельно можно загрузить пакеты с TestDisk (восстановление дисковых разделов) и PhotoRec (восстановление файлов);

+58
Установка последних RedMine + Apache + nginx
26 min
49KTutorial

Приведу кратко основное по RedMine:
- ведение нескольких проектов;
- система отслеживания ошибок;
- диаграммы Ганта;
- настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
- лёгкая интеграция с системами управления версиями (SVN, Git, Mercurial);
Мне очень Важно было установить свежие версии всех модулей, почерпнул много источников, но практически все с недоделками, и очень таки неудобная конфигурация у них получалась.
Вот и пришлось самому сделать универсальную конфигурацию, которая может работать под любой из основных Веб-серверов.
-3
Node.js и Express как они есть
15 min
74KTranslation
Здравствуйте, любители нашего хаброблога и прочие читатели!
Мы планируем вновь отметиться на поле неувядающего Node.js и рассматриваем возможность издания этой книги:

Поскольку вполне понятен читательский интерес «а как он впихнул все это в двести страниц, и зачем мне это нужно»? под катом предлагаем перевод доскональной статьи Томислава Капана о том, зачем на самом деле нужен Node.js.
Мы планируем вновь отметиться на поле неувядающего Node.js и рассматриваем возможность издания этой книги:

Поскольку вполне понятен читательский интерес «а как он впихнул все это в двести страниц, и зачем мне это нужно»? под катом предлагаем перевод доскональной статьи Томислава Капана о том, зачем на самом деле нужен Node.js.
+17
Обзор платежных агрегаторов для приема платежей
24 min
344K
Данное исследование, проводившееся в течение нескольких месяцев, охватывает компании, которые предоставляют услуги по приему платежей не только банковскими картами, но и через электронные кошельки, а также другие способы оплаты.
Чем же платежные агрегаторы отличаются друг от друга, и на что стоит обратить внимание?
Каждую компанию было решено рассмотреть по десяти параметрам. Ниже приведено детальное описание параметра и почему на это стоит обратить внимание.
+34
Отлов и обработка исключений в Yii2
3 min
35KВ Yii2 по-умолчанию все Exception обрабатываются, за это отвечает специальный обработчик. Если при обработке запроса возникает нехорошая ситуация (например, пришли некорректные данные от клиента), то можно выбросить исключение. Обработчик сформирует человекообразный ответ.
Интересно, что в таком случае ошибка “Warning: Uncaught exception” в лог ошибок не выводится. Может создаться впечатление, что все исключения перехватываются средствами фреймворка. Но это не так. На наш проект некоторое время назад натравили средство мониторинга (в нашем случае New Relic), которое информацию обо всех выброшенных исключениях отображает в ошибках (именно как “Warning: Uncaught exception”), считает эти исключения необработанными. С этим надо было что-то делать.
Ниже расскажу о схеме обработки исключений, которую в итоге выбрал. Вполне возможно, что кому-то это еще пригодится.
Интересно, что в таком случае ошибка “Warning: Uncaught exception” в лог ошибок не выводится. Может создаться впечатление, что все исключения перехватываются средствами фреймворка. Но это не так. На наш проект некоторое время назад натравили средство мониторинга (в нашем случае New Relic), которое информацию обо всех выброшенных исключениях отображает в ошибках (именно как “Warning: Uncaught exception”), считает эти исключения необработанными. С этим надо было что-то делать.
Ниже расскажу о схеме обработки исключений, которую в итоге выбрал. Вполне возможно, что кому-то это еще пригодится.
+8
Форматирование сообщений для Yii::t()
16 min
29KВ данной статье рассмотрены особенности форматирования сообщений для системы интернационализации фреймворка Yii 2. В основном, это сведения из документации фреймворка и библиотеки ICU, с дополнительными пояснениями и примерами. Большая часть информации подойдет для любого фреймворка, который использует библиотеку ICU для интернационализации сообщений. В примерах подразумевается перевод сообщений с английского на русский ('en-US' => 'ru-RU'). Настройка системы интернационализации в статье не рассматривается.
+11
Nested Intervals и их реализация под Yii2
11 min
13K
Большинство разработчиков знает, что такое Nested Sets, их сильные и слабые стороны. Сегодня я хочу представить на суд общественности реализацию модификации этой методики, которая частично решает недостатки оригинального алгоритма, правда имеет и свои отрицательные стороны.
+19
Собираем базу людей из открытых данных WhatsApp и VK
15 min
220K
кадр из фильма Миссия Невыполнима II
Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.
Первый успех
Было решено попробовать следующий вариант:
- Добавить неизвестный номер в адресную книгу телефона;
- Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
- Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.
Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.
Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
+126
Jii — JavaScript фреймворк с архитектурой от Yii 2
12 min
26K
Вступление
Привет всем хабровчанам, любителям Yii и Node.js.
Продалжаю серию статей про фреймворк Jii и его части. В прошлых частях мы рассмотрели части фреймворка, которые можно использовать без инициализации приложения, а именно — Query Builder и Active Record. Из голосования (а так же писем и комментариев) стало понятно, что продолжать стоит. И на этот раз мы будем говорить о архитектуре и структурных составляющих фреймворка Jii.
+19
Как поделить один планшет со всеми членами семьи и детьми?
2 min
18KRecovery Mode
В моей семье один планшет на Android и двое детей (3 и 6 лет). До определенного момента времени интересы детей и мои в играх не пересекались. Дети играли в детские развивающие игры, а я в казуальные и фермы. Но дети подросли и им стали интересны и мои игры. Они хотели строить свои города и фермы, а я свои. Покупать новый планшет не хотелось, чтобы каждый мог играть в одну и туже игру но развивать ее по своему. Так же на планшете были приложения, в которых дети могли что-нить натворить (почта, читалки, браузер, файловые менеджеры, социальные сети и т.д.). Не хотелось чтобы они имели к ним доступ. Поэтому я расскажу о решении, которое я применил в результате которого все остались довольны и каждый может играть в одну и туже игру на одном планшете.

Подробности под катом…

Подробности под катом…
+15
Главное меню Redmine
2 min
21KСегодня возникло желание продолжить цикл статей о Redmine, о том, как мы используем эту систему и что сделали в ней нового. Какие в ней есть проблемы, и как мы их решили.
Речь пойдет о главном меню Redmine, о полоске со ссылками, которая открывает доступ к основным функциям системы.
Какие с ней есть проблемы!? Да по началу никаких. Выглядит она примерно вот так и вполне решает свои задачи. Но это не совсем так.

Речь пойдет о главном меню Redmine, о полоске со ссылками, которая открывает доступ к основным функциям системы.
Какие с ней есть проблемы!? Да по началу никаких. Выглядит она примерно вот так и вполне решает свои задачи. Но это не совсем так.

+15
Извлечение упоминаний сущностей и поиск в Textocat API
9 min
17KTextocat API — это облачный SaaS анализа текстов. Качественное извлечение полезной информации из текстов — сложная задача и требует серьезной экспертизы. Миссия команды Textocat — сделать процесс обработки текстов настолько легким для использования, чтобы его мог включить в свой арсенал любой современный разработчик. Используя Textocat API, вы можете быстро прототипировать приложения на основе текстовой аналитики и превращать их в свой бизнес. В данной публикации мы покажем, насколько легко интегрировать в любое приложение возможности Textocat API по распознаванию упоминаний сущностей (объектов) и поиску документов на русском языке.
В начале апреля мы запустили бета-тестирование Textocat API. В этой версии мы предлагаем разработчикам бесплатно использовать часть функционала сервиса со следующими возможностями:

Возможности Textocat API Beta
В начале апреля мы запустили бета-тестирование Textocat API. В этой версии мы предлагаем разработчикам бесплатно использовать часть функционала сервиса со следующими возможностями:
- распознавание упоминаний сущностей (entity recognition) в коллекциях документов на русском языке;
- хранение обработанных коллекций;
- полнотекстовый поиск с учетом выделенных типов сущностей.

+22
Подробно об объектах и классах в PHP
25 min
96KTranslation
Сегодня объекты используются очень активно, хотя это трудно было предположить после выхода PHP 5 в 2005 году. Тогда я ещё мало что знал о возможностях этого языка. Пятую версию PHP сравнивали с предыдущей, четвёртой, и главным преимуществом нового релиза стала новая, очень мощная объектная модель. И сегодня, десять лет спустя, около 90% всего PHP-кода содержит объекты, не изменившиеся со времени PHP 5.0. Это убедительно говорит о том, какую роль сыграло внедрение объектной модели, неоднократно улучшавшейся на протяжении последующих лет. В этом посте я хотел бы рассказать о том, как всё устроено «под капотом». Чтобы люди понимали суть процессов — почему сделано так, а не иначе — и лучше, полнее использовали возможности языка. Также я затрону тему использования памяти объектами, в том числе в сравнении с эквивалентными массивами (когда это возможно).
Я буду рассказывать на примере версии PHP 5.4, и описываемые мной вещи справедливы для 5.5 и 5.6, потому что устройство объектной модели там почти не претерпело изменений. Обратите внимание, что в версии 5.3 всё не так хорошо с точки зрения возможностей и общей производительности.
В PHP 7, который пока ещё активно разрабатывается, объектная модель переработана не сильно, были внесены лишь незначительные изменения. Просто потому что всё и так хорошо работает, а лучшее — враг хорошего. Были добавлены возможности, не затрагивающие ядро, но здесь об этом речи не пойдёт.
Я буду рассказывать на примере версии PHP 5.4, и описываемые мной вещи справедливы для 5.5 и 5.6, потому что устройство объектной модели там почти не претерпело изменений. Обратите внимание, что в версии 5.3 всё не так хорошо с точки зрения возможностей и общей производительности.
В PHP 7, который пока ещё активно разрабатывается, объектная модель переработана не сильно, были внесены лишь незначительные изменения. Просто потому что всё и так хорошо работает, а лучшее — враг хорошего. Были добавлены возможности, не затрагивающие ядро, но здесь об этом речи не пойдёт.
+50
Конвертируем svg to png
2 min
48KTutorial

+25
Модульное тестирование поведения Yii2 с помощью Codeception
8 min
46KВ разработке программного обеспечения написание автоматических тестов часто отодвигается на второй план более насущными проблемами. Так и в моем случае, код писать приходилось, а тесты к нему — нет. При этом давно хотелось попробовать модульное тестирование собственного кода, а тут под руку подвернулось поведение Yii2 ManyToMany Behavior, о котором уже писали на Хабре. Это поведение я сначала немного расширил, а затем решил собрать комплект тестов.
Сами тесты, в том числе те, о которых идет речь в этой статье, можно посмотреть в репозитории по ссылке выше. Все команды выполнялись под Windows с глобально установленным composer, но я думаю, что разработчики, пользующиеся Linux, без затруднений смогут адаптировать их под себя.
Далее мы рассмотрим настройку Codeception с модулем для Yii2 и создание тестов для поведения.
Сами тесты, в том числе те, о которых идет речь в этой статье, можно посмотреть в репозитории по ссылке выше. Все команды выполнялись под Windows с глобально установленным composer, но я думаю, что разработчики, пользующиеся Linux, без затруднений смогут адаптировать их под себя.
Далее мы рассмотрим настройку Codeception с модулем для Yii2 и создание тестов для поведения.
+13
+59
15 советов и хитростей инструментов разработчика Chrome, которые вы обязаны знать
5 min
208KTranslation
Сегодня Google Chrome является самым популярным браузером среди веб разработчиков. С быстрым, шести недельным, циклом релизов и мощным набором постоянно расширяющихся инструментов разработчика, превратившим браузер в инструмент, который вы обязаны иметь. Большинство из вас, вероятно, знакомы со многими его функциями, такими как «живое» редактирование CSS, используя консоль и отладчик. В этой статье мы с вами рассмотрим 15 захватывающих советов и хитростей, которые позволят улучшить вашу производительность еще больше.
+82
Pebble: Battery Life, тезисы доклада c «Pebble Developer Retreat 2014» (перевод)
2 min
4KRecovery Mode

В октябре 2014 года на конференции «Pebble Developer Retreat 2014» Stuart Harrell, инженер Pebble, рассказал о том, что из системных функций влияет на время работы и решениях проблем энергопотребления возникающих при разработке приложений.
Ниже, перевод основных тезисов доклада.
+10
Information
- Rating
- 8,436-th
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity