Как стать автором
Обновить
0
0
Никита Базалев @Nikita_Bazalev

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

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

Что такое грамматическая эволюция + легкая реализация

Время на прочтение8 мин
Количество просмотров10K
Совсем недавно я написал статью, в которой без объяснений показал то, на что способен метод грамматической эволюции. Я полностью, согласен, что так делать нельзя, но как хотелось показать результаты интересного метода. Я думал «что будет лучше: перевести первоисточник или дать свое собственное объяснение». Лень взяла верх.

Если кому-то интересны эволюционные методы и задача символьной регрессии(и не только), то прошу к прочтению.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии6

Lookbehind assertions в регулярных выражениях V8

Время на прочтение1 мин
Количество просмотров6.9K
Кажется, прошла незамеченной хорошая новость.

Разработчики V8 активно взялись за добавление lookbehind assertions в регулярные выражения JavaScript.

В Google Chrome Canary уже можно потестировать при помощи флага:

chrome.exe --js-flags="--harmony-regexp-lookbehind"

В этом месяце выходит шестая версия Node.js, основанная на V8 5.0, и в ней тоже можно включить поддержку lookbehind:

node --harmony_regexp_lookbehind

Если совсем не терпится, можно потестировать на уже появляющихся RC:

nodejs.org/download/rc

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

Плагины в кармане или перочинный ножик в программе

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

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


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

Читать дальше →
Всего голосов 26: ↑16 и ↓10+6
Комментарии23

RAML 1.0: обзор нововведений

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

О RAML — языке разметки, используемом для описания RESTful API, мы уже писали. В обсуждении статьи на Хабрахабре один из читателей заметил, что RAML уже давно не обновляется, чуть ли не с лета 2014 года.

Несколько месяцев формат RAML был существенно усовершенствован. Новая спецификация версии 1.0 была опубликована на официальном сайте относительно недавно, в начале октября 2015 года. По сравнению с предыдущей версией (0.8) в неё было внесено много изменений и дополнений. О наиболее значительных нововведениях мы подробно расскажем в этой статье.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии15

IoT-решение за 1,5 часа

Время на прочтение13 мин
Количество просмотров29K
Или как мы зажгли лампочку со смартфона через облачную службу на глазах изумленных студентов НГУ.

Полное техническое описание решения мы приводим внизу, а начнем с лирическо-философского пролога.

Глава 1. Лирическая


Практически все наши сотрудники получили высшее образование, и очень многие именно в Новосибирском государственном университете. Кто-то буквально недавно, кто-то – 10-20 лет назад, и все сталкивались с выбором будущей профессии. На последних курсах студентами мы выбирали кафедру, на которой проходили специализацию и защищали дипломы. И была такая замечательная традиция как Дни открытых дверей в институтах, лабораториях и компаниях, где сотрудники рассказывали, чем они занимаются, какие вопросы сейчас стоят перед наукой и технологиями и как можно в этом поучаствовать.

Что самое интересное в Днях открытых дверей для студента? Ходить, задавать вопросы, смотреть на реальных людей, которые занимаются настоящим делом, которое кому-то нужно.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии21

Компьютерное зрение и мобильные роботы. Часть 1 — V-REP, Python, OpenCV

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


Когда прочитал публикацию про запуск беспилотных гоночных автомобилей — подумал, было бы интересно сделать что-то подобное. Конечно не гоночный болид, но по крайней мере мобильный робот, что ориентируется в пространстве посредством камеры — распознаванием образов.

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

Так и возникла идея серии статей, про решение простейшей задачи ориентации робота в пространстве — от виртуальной симуляции, до воплощения в реальном мобильном роботе:

Часть 1. Настройка виртуальной среды, интеграция с python и OpenCV для распознавания образов из виртуального мира.
Часть 2. Создание виртуального мобильного робота, алгоритм автономного перемещения (поиск объекта)
Часть 3. Создание реального робота, перенос логики на него.

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

Мозгом робота будет микрокомпьютер RaspberryPi2 — на котором без проблем работает и python, и OpenCV. Таким образом необходимо состыковать систему виртуальной робототехники V-REP — с Python и OpenCV. Вот про это и будет первая часть — данная публикация.

Видео, что получилось (поиск зеленого объекта)

На верхнем окне — прямое изображение с видео-камеры в 3д виртуальном мире, на нижнем окне — результат выполнения python скрипта, что получает изображение передаёт её OpenCV и рисует маркер, вокруг найденного объекта.

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

DevTips: Советы веб-разработчику (33-48)

Время на прочтение5 мин
Количество просмотров31K
И вновь в эфире цикл переводов полезных советов для веб-разработчика. На этот раз автор расширил спектр исследуемых инструментов, добавив туда редактор Sublime Text и фреймворк Node.js. Предыдущие части: 1-16, 17-32.

Поехали!

Содержание:
   33.  Разворачивание упрощенной записи CSS-свойств
   34.  Определение совпадения селекторов по цвету
   35.  Использование визуальной навигации и просмотр снятых скриншотов процесса загрузки страницы
   36.  Sublime Text: нечеткий поиск при помощи функциональности GOTO
   37.  Быстрое изменение значения CSS-свойств при помощи клавиатуры и колеса мыши
   38.  Прокрутка элемента в области видимости
   39.  Node.js: Использование Babel для запуска ES6
   40.  Переход к просмотру и редактированию CSS или Javascript-файлов из панели «Elements»
   41.  Отображение значений Javascript-переменных рядом с кодом в процессе отладки
   42.  Использование цветовой группировки в панели «Network» для упрощения идентификации типа ресурса
   43.  Активация псевдо классов DOM-элемента
   44.  Инспектирование самих инструментов разработчика
   45.  Запуск выбранного блока кода из панели «Sources»
   46.  Установка условных точек останова
   47.  Переход к следующему вхождению выбранной строки при помощи горячих клавиш
   48.  Редактирование CSS-файла в панели «Sources» и упрощенное изменение значений CSS-свойств
Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии0

Анализ рендеринга через Skia Debugger: как можно найти самые дорогие для отрисовки элементы

Время на прочтение4 мин
Количество просмотров23K
Доброго дня, недавно я решал проблему притормаживания скролла на страницах Почты Mail.Ru. Особенно эта проблема была заметна на retina-дисплеях. После простого анализа я пришел к выводу, что одна из основных проблем — это медленная отрисовка страницы.

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

Как и многие подобные проблемы оптимизации, данную проблему можно решить множеством способов. Я взялся за оптимизацию рендеринга, так как на нее затрачивалось значительное количество времени. Тем самым, я достаточно быстро смог бы получить прирост производительности и, соответственно, улучшить плавность скролла, ускорив отрисовку.


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

Быстрый анализ транзитного трафика

Время на прочтение4 мин
Количество просмотров18K
Перед любым системным администратором рано или поздно возникает задача количественного анализа трафика (откуда / куда, по каким протоколам / портам, в каких объемах и т. п.), проходящего по его сети. Особенно неприятно, когда эта задача возникает спонтанно, как побочный результат DDoS-а, а денег на серьезные решения от Cisco или Arbor, как обычно, нет. И хорошо еще, если шлюзом для сети выступает сервер, на котором можно запустить tcpdump или wireshark, но что делать если:

  • шлюзом выступает устройство провайдера, а в сети есть только файл-сервер;
  • данные о трафике нужны не постоянно, а от времени к времени;
  • устройство не поддерживает возможность запуска на нем сторонних программ;
  • трафика столько, что сервер после запуска tcpdump-а «клеит ласты»;
  • или наоборот, настолько мало, что его уровень сравним с долей (хотя и значительной) обычного трафика?
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии21

Открываем порты за NAT при помощи NAT-PMP и UPnP IGD

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


Ранее я много раз слышал, что UPnP каким-то образом умеет самостоятельно открывать порты (производить Port Forwarding на роутере) по запросу от хоста из локальной сети. Однако, то, каким именно образом это происходит, и какие протоколы для этого используются, доселе было покрыто для меня пеленой тумана.

В данной статье я хочу кратко рассказать, как работают два механизма для проброса портов, а именно NAT Port Mapping Protocol и Internet Gateway Device (IGD) Protocol, входящий в набор протоколов UPnP. К своему удивлению я обнаружил, что в рунете информация по данному вопросу более чем скудна, что и сподвигло меня на написание данной заметки.

Для начала приведу краткий FAQ:

Q: Для чего нужны данные протоколы?
A: Для формирования на маршрутизаторе правила проброса определенного TCP/UDP порта (Port Forwarding) не вручную, а «автоматически», т.е. по запросу от хоста во внутренней сети.

Q: Как это реализуется?
A: Устройство за NAT отправляет маршрутизатору запрос с указанием внутреннего и внешнего номеров портов и типа протокола (TCP/UDP). Если указанный внешний порт свободен, маршрутизатор формирует у себя правило трансляции и рапортует запросившему компьютеру об успешном выполнении запроса.

Q: Проводится ли на маршрутизаторе аутентификация/авторизация запросов на открытие порта?
A: Нет, не проводится.

Теперь же рассмотрим работу данных протоколов более подробно (под катом).
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии14

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 31. «Суд»

Время на прочтение8 мин
Количество просмотров10K
В 31 главе описывается кейс, как спецслужбы вычисляют кардеров по метаданным.

Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

В книге показывается путь от подростка-гика (но при этом качка), до матерого киберпахана, а так же некоторые методы работы спецслужб по поимке хакеров и кардеров.

Квест по переводу книги начался летом в ИТишном лагере для старшеклассников — «Шкворень: школьники переводят книгу про хакеров», затем к переводу подключились и Хабраюзеры и даже немного редакция.

Глава 31. «Суд»

(за перевод спасибо Богдану Журу aka K3lwiN )

Кардер с Лонг-Айленда Джонатан Джианноне, с которым Макс и Крис познакомились, когда он был тинэйджером, хранил тайну ото всех.

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

Впечатление укрепилось после того, как уже через месяц после ареста суд Южной Каролины снял с него запрет на перемещение. Джианноне тут же полетел в аэропорт Окленда за покупками, где его встретила Теа. Они катались по шоссе вдоль тихоокеанского побережья, она покупала ему пиццу в Fat Slice на Берклиз Телеграф Авеню. Джианноне казался ей забавным — хвастливый белый паренек с вьющимися волосами и пристрастием к хип-хопу, который как-то раз хвалился, что побил футболиста из Нью-Йорк Джетс во время драки в местном баре. Теперь у них появилось что-то общее: Крис прервал контакты с Джианноне незадолго до ареста, а Теа сказал вернуться к заливу Сан-Франциско, чтобы она не создавала проблем в отношениях Криса. Он избавился от них обоих.
Всего голосов 18: ↑17 и ↓1+16
Комментарии2

Увлекательное программирование: изучаем Minecraft

Время на прочтение5 мин
Количество просмотров62K
Добрый день, уважаемые читатели!

У нас выходит второй тираж замечательной книги об игровом мире Minecraft. Мы уже публиковали о ней отдельный пост.



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

Наконец, если вас заинтересует перевод ознакомительной публикации Уолтера Хиггса о ScriptCraft, на которую ссылается автор в самом конце статьи — пишите, обсудим :)

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

Релиз Webix 3.2. Новые виджеты для работы с данными и прочие фичи

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


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

Но обо всем по порядку.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии5

Pwn2Own 2016: первые итоги

Время на прочтение2 мин
Количество просмотров4.3K
Завершился первый день известного контеста Pwn2Own 2016, который проходит в Ванкувере. Соревнование представляет из себя площадку, на которой security-ресерчеры могут продемонстрировать свои эксплойты для различных продуктов, включая, веб-браузеры и плагины к ним. На этот раз система проведения Pwn2Own была несколько изменена и была введена система очков за успешные эксплуатации уязвимостей, а также в списке продуктов появилось известное ПО для виртуализации VMware Workstation.



Как не трудно догадаться, в случае с VMware Workstation участникам предлагается продемонстрировать успешный «побег» из виртуальной машины (VM escape) и запуская эксплойт на виртуальной машине, его код должен выполниться на хосте. Правилами регламентируется, что все запускаемое ПО, а также ОС, должны быть полностью обновлены (up-to-date).

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

Критические уязвимости DNS-сервера BIND позволяют удаленно отключать его и проводить DoS-атаки

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


В популярном DNS-сервере BIND обнаружены критические уязвимости. Их эксплуатация может открывать злоумышленникам возможности для проведения DoS-атаки а также удаленно останавливать его работу. Информация об уязвимостях была опубликована специалистами компании ISC, под лицензией которой распространяется программное обеспечение BIND.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Что делает программное обеспечение качественным?

Время на прочтение21 мин
Количество просмотров19K
image
КДПВ

Кто-то создает программное обеспечение с открытым исходным кодом, а я провожу много времени размышляя над тем, как сделать программное обеспечение лучше. Бесконечный поток просьб о помощи на форумах Stack Overflow, GitHub, Slack, в электронных письмах и личных сообщениях неизбежен. К счастью, в итоге вы знаете многих людей, которые добились определенного успеха и сделали фантастические вещи, и знание о том, что вы приняли в этом участие благодаря вам и вашей помощи, является хорошей мотивацией для новых достижений.

У вас возникает вопрос: какие качества программного обеспечения приводят разработчика к успеху или к неудаче? Как я могу улучшить свой софт и помочь бо́льшему количеству людей стать успешным? Я могу ясно сформулировать некоторые основные принципы или полагаюсь на интуицию в зависимости от конкретного случая? (Рождение и воплощение одной мысли это два совершенно разных действия).

Возможно это что-то вроде принципов Дитера Рамса, способствующих качественному дизайну программного обеспечения?

  • Хороший проект является инновационным.
  • Хороший проект делает продукт полезным.
  • Хороший проект эстетичен.
  • Хороший проект делает продукт понятным.
  • Хороший проект ненавязчив.
  • Хороший проект честен.
  • Хороший проект длителен.
  • Хороший проект продуман до мельчайших деталей.
  • Хороший проект безвреден для окружающей среды.
  • В хорошем проекте дизайна настолько мало, насколько это возможно.
Читать дальше →
Всего голосов 24: ↑16 и ↓8+8
Комментарии6

Оформляем красиво «битые» картинки

Время на прочтение3 мин
Количество просмотров42K
Предлагаю вашему вниманию вольный перевод статьи "Styling Broken Images" с сайта bitsofco.de.

«Битые» картинки выглядят ужасно.

image

Но они не всегда должны так выглядеть. Мы легко можем применить CSS к элементу (тегу) img, чтобы улучшить его внешний вид — сделать его куда более привлекательнее, чем как он выглядит по умолчанию.

Если вам наскучили дефолтные уведомления о «битых» картинках, милости прошу под кат.
Читать дальше →
Всего голосов 59: ↑42 и ↓17+25
Комментарии32

Линейная регрессия на пальцах в распознавании

Время на прочтение7 мин
Количество просмотров39K
Линейная регрессия на пальцахВ задаче распознавания ключевую роль играет выделение значимых параметров объектов и оценка их численных значений. Тем не менее, даже получив хорошие численные данные, нужно суметь правильно ими воспользоваться. Иногда кажется, что дальнейшее решение задачи тривиальное, и хочется «из общих соображений» получить из численных данных результат распознавания. Но результат в этом случае получается далеко не оптимальный. В этой статье я хочу на примере задачи распознавания показать, как можно легко применить простейшие математические модели и за счет этого существенно улучшить результаты.
Читать дальше →
Всего голосов 60: ↑55 и ↓5+50
Комментарии5

Информация

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