Как стать автором
Обновить
7
0
Rendol @Rendol

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

Отправить сообщение

PHPStamp — честная генерация DOCX документов из шаблона

Время на прочтение2 мин
Количество просмотров27K
Это еще одна попытка реализовать стабильный, полноценный шаблонизатор офисных документов, основанных на XML, пользуясь стандартными для PHP средствами DOMDocument и XSL.

Задача состояла именно в генерации шаблона для многократного использования, который не придется править вручную или прибегать к сторонним программам для его доработки.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии15

О 30-кратном увеличении параллелизма в Node.js

Время на прочтение14 мин
Количество просмотров23K
Каков наилучший способ беспроблемного увеличения параллелизма в Node.js-сервисе, который используется в продакшне? Это — вопрос, на который моей команде понадобилось ответить пару месяцев назад.

У нас запущено 4000 контейнеров Node (или «воркеров»), обеспечивающих работу нашего сервиса интеграции с банками. Сервис изначально был спроектирован так, что каждый воркер был рассчитан на обработку только одного запроса за раз. Это снижало воздействие на систему тех операций, которые могли неожиданно заблокировать цикл событий и позволяло нам игнорировать различия в использовании ресурсов различными подобными операциями. Но, так как наши мощности были ограничены одновременным выполнением лишь 4000 запросов, система не могла достойно масштабироваться. Скорость выдачи ответов на большинство запросов зависела не от мощности оборудования, а от возможностей сети. Поэтому мы могли бы улучшить систему и снизить стоимость её поддержки в том случае, если бы нашли способ надёжной параллельной обработки запросов.



Занявшись исследованием этого вопроса, мы не смогли найти хорошего руководства, в котором речь шла бы о переходе от «отсутствия параллелизма» в сервисе Node.js к «высокому уровню параллелизма». В результате мы разработали собственную стратегию перехода, которая была основана на тщательном планировании, на хороших инструментах, на средствах мониторинга и на здоровой дозе отладки. В итоге нам удалось повысить уровень параллелизма нашей системы в 30 раз. Это эквивалентно снижению затрат на поддержку системы примерно на 300 тысяч долларов в год.

Данный материал посвящён рассказу о том, как мы увеличили производительность и эффективность наших Node.js-воркеров, и о том, что мы узнали, пройдя этот путь.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+64
Комментарии23

Бот нам поможет

Время на прочтение6 мин
Количество просмотров2.5K
image

Год назад наш любимый HR отдел обратился с просьбой: написать чат бота, который поможет в адаптации новичков в компании.

Оговоримся, что мы не разрабатываем собственных продуктов, но клиентам оказываем полный спектр услуг по разработке. Рассказ пойдет о нашем внутреннем проекте, для которого заказчиком является не сторонняя компания, а наш собственный HR. И главная задача при ограниченной доступности людей, ресурсов, времени выполнить проект в срок и выпустить продукт.
Читать дальше →
Всего голосов 3: ↑2 и ↓1+4
Комментарии2

Компьютерное зрение на примере приложения для IKEA. Часть 1

Время на прочтение8 мин
Количество просмотров46K
Готовился к очередному хакатону, решил обновить свои знания в области компьютерного зрения. В прошлый раз задачу распознавания номеров авто в видеопотоке я так и не смог решить быстро «в лоб». Сейчас, поразмыслив, решил немного упростить задачу. Было много идей, листал фотки в телефоне и наткнулся на привычный кейс для всех, кто бывал в магазине ikea — фотографию с чеком, где указан номер товара и его положение на складе самообслуживания.

Читать дальше →
Всего голосов 68: ↑68 и ↓0+68
Комментарии14

Машинное зрение для ритейла. Как прочитать ценники в магазине

Время на прочтение7 мин
Количество просмотров17K
Машинное зрение – очень актуальная тема в наши дни. Для решения задачи по распознаванию магазинных ценников с использованием нейронных сетей мы выбрали фреймворк TensorFlow.

В статье пойдет речь именно о том, как с его помощью локализовать и идентифицировать несколько объектов на одном магазинном ценнике, а также распознать его содержимое. Похожая задача распознавания ценников IKEA уже решалась на Хабре с применением классических инструментов обработки изображений, доступных в библиотеке OpenCV.

Отдельно хотелось бы отметить, что решение может работать как на платформе SAP HANA в связке с Tensorflow Serving, так и на SAP Cloud Platform.

Задача распознавания цены товара актуальна и для покупателей, которые хотят «шарить» цены друг с другом и выбирать магазин для покупок, и для ритейлеров — они хотят узнавать про цены конкурентов в режиме реального времени.

Хватит лирики – гоу в технику!
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии10

Работаем с бюджетным учреждением. Часть 4

Время на прочтение12 мин
Количество просмотров3.7K
Эта статья служит своего рода промежуточным итогом статей предшествующих (часть 1, часть 2, часть 3) и содержит некоторые практические рекомендации.
Итак:
— почему мы остались без договора;
— всегда ли виноват заказчик;
— не нужен мне берег турецкий другой договор… или все-таки нужен?;
— открытые данные вновь спешат на помощь.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии3

Нет – взломам серверов! Советы по проверке и защите

Время на прочтение3 мин
Количество просмотров33K
Подозреваете, что Linux-сервер взломан? Уверены, что всё в порядке, но на всякий случай хотите повысить уровень безопасности? Если так – вот несколько простых советов, которые помогут проверить систему на предмет взлома и лучше её защитить.

image

Читать дальше →
Всего голосов 47: ↑36 и ↓11+25
Комментарии43

6 альтернатив MacBook

Время на прочтение4 мин
Количество просмотров74K
image

После презентации Apple появилось множество разочарованных комментариев: «только USB-C», устаревший процессор, отсутствие сенсорного экрана, и дикий ценник. Посмотрим, какие альтернативы предлагает рынок на новых процессорах Intel.
Читать дальше →
Всего голосов 32: ↑24 и ↓8+16
Комментарии212

Сложно ли угнать коптер? Несколько уже реализованных способов перехвата управления

Время на прочтение7 мин
Количество просмотров68K


Квадрокоптеров сейчас становится все больше, они постепенно «умнеют», становятся более функциональными. Дроны такого типа уже служат не только развлечением, они помогают спортсменам, фотографам, ученым и, конечно же, злоумышленникам разного рода. При помощи коптеров часто ведется несанкционированное наблюдение за людьми, промышленными и другими объектами.

Некоторые компании стали создавать защитные средства от дронов, позволяющие посадить аппарат или перехватить над ним управление. Понятно, что и производители дронов стараются как-то защитить свои устройства от перехвата. Но это далеко не всегда возможно, особенно, если за дело берутся настоящие эксперты своего дела. Ситуация усугубляется тем, что даже в самых продвинутых коптерах устанавливаются простейшие системы шифрования трафика.
Всего голосов 16: ↑16 и ↓0+16
Комментарии12

Nginx и https. Получаем класс А+

Время на прочтение4 мин
Количество просмотров162K
image

Недавно вспомнилось мне, что есть такой сервис — StartSsl, который совершенно бесплатно раздаёт trusted сертификаты владельцам доменов для личного использования. Да и выходные попались свободные. В общем сейчас напишу, как в nginx настроить HTTPS, чтобы при проверке в SSL Labs получить рейтинг А+ и обезопасить себя от последних багов с помощью выпиливания SSL.

Итак, приступим. Будем считать, что у вы уже зарегистрировались на StartSsl, прошли персональную проверку и получили вожделенный сертификат. Для начала опубликую итоговый конфиг, а после этого разберу его.
Читать дальше →
Всего голосов 61: ↑52 и ↓9+43
Комментарии85

Любой сайт может получить информацию о том, в каких популярных сервисах вы авторизированы

Время на прочтение3 мин
Количество просмотров68K
Разработчик Робин Линус на своей странице на GitHub Pages (визит по следующей ссылке небезопасен и его не рекомендуется выполнять с рабочего места, так как кроме видимой части сервисов страница проверяет, залогинены ли вы на сайтах для взрослых, а это останется в логах файрволла как попытка перехода прим.) продемонстрировал, как сайты могут снимать с вас «медийный отпечаток», то есть вести учет того, в каких популярных сервисах залогинены посетители даже без какой-либо авторизации на посещаемой странице.

Для автора публикации «медийный отпечаток» выглядит следующим образом и является абсолютно верным:



И это весьма неприятно.
Как это работает
Всего голосов 119: ↑112 и ↓7+105
Комментарии96

Умный дом или игрушка для мужчин: контроль электричества

Время на прочтение7 мин
Количество просмотров48K
Вслед за статёй о контроле температуры, хочется еще немного рассказать о контроле электричества. Конечно, его интереснее контролировать, когда у Вас 3 фазы.

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

Автор статьи не является электриком и не претендует на профессиональную подачу информации. Хотя с ПУЭ и оборудованием заземляющего контура пришлось плотно ознакомиться.

В моем случае (так уж вышло), сделана не совсем правильная схема TN-C-S, я разбил PEN на PE и N уже после счетчика (он на опоре). Но, несмотря на это, все же очень интересно, куда и как ходит электричество по 3-м фазам и 5 проводам. Эту систему можно даже использовать как учебное пособие для начинающих, наблюдая за поведением нуля при загрузке разных фаз. В частности, интересно, что в нулевом проводе всегда есть напряжение (относительно земли). Думаю, в садоводстве, а также в квартирах, полного нуля на рабочем нулевом проводнике вообще не может быть. Соответственно, с нуля в контур заземления практически всегда уходит часть электричества. Начинаешь понимать, что зануление в квартирах и на садовых участках опасно для жизни.



Подробнее тут
Всего голосов 21: ↑19 и ↓2+17
Комментарии49

Мобильный интернет для стационарной работы

Время на прочтение5 мин
Количество просмотров17K
В своем недавнем обзоре мобильного роутера я говорил, как удобно работать в дороге, когда связь раздается на несколько устройств. В комментариях шло обсуждение использования смартфона в качестве хот-спота. Самым большим минусом последнего является «выпадение» из рабочего процесса самого смартфона или прерывание связи с Интернетом, когда начинается телефонный разговор.
Возвращаясь к теме скоростного Интернета в отрыве от дома нельзя не упомянуть о возможности раздачи Интернета по Wi-Fi с нормального «домашнего» роутера, который может работать с сотовыми сетями. В этом обзоре я хочу рассказать о том, как роутер TP-Link Archer MR200 с возможностью связи по 3g\4g сетям работал дома, в путешествии и даже на съемках фильма.

Примерно так выглядело мое рабочее место в течении пяти дней съемок в Разливе под Санкт-Петербургом.


Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии48

Дисплей-индикатор на электронных чернилах «живёт» на солнечной энергии и никогда не требует подзарядки

Время на прочтение4 мин
Количество просмотров21K

Один из прототипов, разработанных в Microsoft Research

Электронная бумага (e-ink) широко используется в электронных книгах. Благодаря сверхнизкому энергопотреблению простенькие чёрно-белые «читалки» месяцами работают от одной зарядки. На солнце текст читается лучше, чем на самом дорогом планшете.

Cверхнизкое энергопотребление — великолепное преимущество электронной бумаги. Может быть, его можно использовать не только для электронных читалок, но и в производстве других гаджетов? Ведь если подключить к дисплею обычный фотоэлемент, то прибор вообще не нуждается во внешних источниках питания на протяжении всего срока эксплуатации. Когда дисплей оснащён Bluetooth, то вообще отлично.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии31

Фьючерсная процентная ставка как один из способов самостоятельного управления капиталом

Время на прочтение9 мин
Количество просмотров16K
Каждый из нас, приходя в магазин, оставляет там все больше и больше денег, а вот количество товара в корзине не только не меняется, но и уменьшается. «Ученые мужи» многозначительно восклицают: «Инфляция!». Бороться с инфляцией легко тем, у кого мало денег. Они сразу отоваривают свои доходы и инфляция им уже нипочем. Сложнее тем, кто зарабатывает больше, чем потребляет. Как распорядиться свободными денежными средствами? Как уберечь их от обесценивания?

Первое, что приходит на ум – положить деньги в банк. Надежно. В подавляющем большинстве банков проценты по вкладам, по которым можно пополнять и снимать с них деньги, ниже инфляции. Так, в настоящее время при инфляции в 8% среднее значение ставки по топ-20 банкам РФ по данным сайта banki.ru составляет 6,53%. Невыгодно!
Читать дальше →
Всего голосов 19: ↑11 и ↓8+3
Комментарии79

Производительное юнит-тестирование веб-приложений на примере yii2 и codeception

Время на прочтение13 мин
Количество просмотров22K
Задача данной статьи — показать самый производительный путь написания тестов в контексте разработки веб-приложений.
Здесь и дальше под термином тесты будут подразумеваться юнит-тесты.

Разработка веб-приложений сопровождается постоянным использованием в коде базы данных. Если код работы с базой данных и код работы с результатом взаимодействия с базой данных не разделен, нам потребуется база данных в подавляющем большинстве тестов проекта. Также, если код использует методы фреймворка, нам для тестов потребуется подключить фреймворк. Пока тестов мало, всё отлично. Когда тестов становится больше, замечается проблема: скорость выполнения тестов немного напрягает. Когда время выполнения всех юнит-тестов становится больше чем минута, становится невозможным постоянно запускать все тесты. Разработчик начинает запускать только часть тестов, пытаясь уменьшить негативное влияние длительного времени работы тестов, но проблема снижения эффективности тестирования со временем будет только возрастать.

Источник проблемы находится в отсутствии четкого разделения кода работы с базой данных, кода, которому необходим фреймворк, и кода, для работы которого не нужна ни база данных, ни фреймворк.

Наша цель будет разобраться, каким образом необходимо писать тесты и код для обеспечения максимальной скорости выполнения тестов.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии3

Кросспостинг в twitter, facebook, livejournal, vkontakte

Время на прочтение7 мин
Количество просмотров81K

Когда я писал проект crafthunters.com, я заметил что для раскрутки клиенты используют социальные сети. Пользовались виджетами и лайками, но по хорошему надо было попадать в ленту новостей. Кроме того, популярный вконтакте вывел новости на главную страницу в сентябре. Т.е. для распространения контента надо было адаптировать standalone блог для представления в социальных сетях, используя простую истину: попасть в ленту новостей популярных социальных сетей. Вначале это происходило вручную и приносило более половины траффика. Потом пришла идея это всё автоматизировать.
Популярными социальными сетями у нас были:
  • facebook
  • вконтакте
  • livejournal
  • твиттер

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

Далее я хочу представить реализацию кросспостинга под эти четыре социальные сети для asp.net mvc.
Читать далее
Всего голосов 39: ↑34 и ↓5+29
Комментарии31

Дружим Git с Putty

Время на прочтение2 мин
Количество просмотров51K
Disclaimer
Предварительно делал поиск по хабру с надеждой на подобный пост, смог найти только вот этот пост, в котором вся работа производятся через TortoiseGit.

Но это не наш метод. По той причине, что в этом случае все наши IDE не смогут сами сделать Push на сервер. Да и через Git Bash ничего не получится сделать на сервере.
почему мне нужно использовать Git в связке с Putty?
Так уж получилось, что я активно использую Putty с настроенными ключами для доступа к серверам. Ключей у меня не один. Git-репозитариев тоже не один.
Конечно же, можно нагенерить OpenSSH ключей для Git-а и разрулить их через ~/.ssh/config, но это получается двойная работа – поддержка ключей в Putty и отдельная поддержка для Git.



Итак, представим, что у нас девственно чистая система, в которой нет ни Putty, ни msysgit. Приступим к настройке нашего рабочего окружения.

Установка Putty


Качаем, устанавливаем, генерим и настраиваем ключ c Pagent (инструкция, ?).

Добавляем ключ на git-сервер


Копируем публичный OpenSSH ключ из Putty-ключа
Запускаем Putty key Generator
Открываем (кнопка «Load») наш PPK-ключ
Копируем весь текст из блока «Key»

Открываем страницу с SSH ключами и добавляем из буфера наш ключ
В картинках (на примере GitHub)






Создаём и сохраняем в Putty профиль «git@github.com» и проверяем, что удаётся зайти по ключу – должна открыться и сразу закрыться консоль.
В картинках





Устанавливаем и настраиваем msysgit

Дайте весь текст!
Всего голосов 39: ↑27 и ↓12+15
Комментарии23

Полезные сниппеты для Nginx конфигов

Время на прочтение5 мин
Количество просмотров121K


Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

Читать дальше →
Всего голосов 94: ↑91 и ↓3+88
Комментарии44

Криптографические решения. От криптопровайдеров до браузерных плагинов

Время на прочтение11 мин
Количество просмотров54K
Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. СКЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.

С учетом растущего количества проектов с применением ЭЦП и появления массовых проектов для физических лиц, разработчикам подобных проектов требуется хорошо ориентироваться в предлагаемых производителями решениях по ЭЦП для того, чтобы сделать систему удобной в эксплуатации и недорогой в плане техподдержки. Таким образом, если еще лет 5 назад главным фактором выбора криптосредства являлось его полное соответствие требованиям регуляторов, то при сегодняшнем разнообразии важными критериями могут выступать охват поддерживаемых платформ, возможность интеграции с браузером, поддержка мобильных пользователей, возможность установки без прав системного администратора и т.п.

В данном материале сделана попытка классифицировать средства криптографической защиты информации.
  • Рассмотрены в основном СКЗИ, использующиеся на клиентских местах для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных;
  • Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ;
  • Отдельно выделены аппаратные криптографические устройства.

Классификация построена на основе:
  • технологий интеграции (CryptoAPI, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы;
  • интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы.

Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах

Общая схема классификации приведена в таблице:
Криптопровайдеры Нативные библиотеки (openssl-style, PKCS#11, NSS, собственные интерфейсы) Локальные прокси Браузерные плагины Облачная подпись Браузеры с российской криптографией
Почтовые клиенты с российской криптографией Российская криптография в фреймворках, платформах, интерпретаторах Настольные криптографические приложения Криптография в BIOS UEFI Сервис-провайдеры ЭЦП Эмуляторы доверенной среды
Аппаратные средства

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

Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии18

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность