Как стать автором
Обновить
6
0
Илья Лесняк @ilsenem

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

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

Почему в США до сих пор нет скоростных поездов

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

Самый быстрый поезд Северной Америки в настоящее время стоит на складе в Филадельфии. Поезд нового поколения Acela Express, который должен был поступить в эксплуатацию в 2021 году, не будет перевозить пассажиров ещё как минимум год. Это следует из октябрьского отчёта Управления генерального инспектора Amtrak (OIG), в котором говорится, что гидравлические системы поезда протекают, сцепные устройства могут ржаветь от стекающей воды, а окна иногда разбиваются.

OIG обвиняет в этих проблемах французского производителя Alstom, а сама компания, чьи акции упали почти на 50% после публикации отчёта и на фоне проблем с денежными потоками, ссылается на плохое состояние путей на северо-восточном коридоре между Бостоном и Вашингтоном, округ Колумбия.

Читать далее
Всего голосов 62: ↑59 и ↓3+56
Комментарии115

Делаем проект по машинному обучению на Python. Часть 1

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


Перевод A Complete Machine Learning Project Walk-Through in Python: Part One.

Когда читаешь книгу или слушаешь учебный курс про анализ данных, нередко возникает чувство, что перед тобой какие-то отдельные части картины, которые никак не складываются воедино. Вас может пугать перспектива сделать следующий шаг и целиком решить какую-то задачу с помощью машинного обучения, но с помощью этой серии статей вы обретёте уверенность в способности решить любую задачу в сфере data science.

Чтобы у вас в голове наконец сложилась цельная картина, мы предлагаем разобрать от начала до конца проект применения машинного обучения с использованием реальных данных.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии4

IP Tool — База данных IP адресов

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

Вступление


Долгое время я пользовался библиотекой SxGeo от zapimir. И до недавнего времени меня всё устраивало. Устраивало до тех пор, пока не было необходимости добавлять в БД свои данные.


Не найдя в интернете упаковщика данных от SxGeo и не найдя в себе силы требовать нужный мне функционал от разработчика, было принято решение писать свой костыль. Хотя на это решение повлиял и ещё 2 недостатка используемой библиотеки:


  • ограничение по количеству справочников;
  • невозможность узнать интервал адресов, в который входит искомый адрес;
  • отсутствие пакета в packagist.

Собственно, делюсь с вами своей разработкой.

Читать дальше →
Всего голосов 12: ↑6 и ↓60
Комментарии9

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение12 мин
Количество просмотров17K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

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

Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

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

В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

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

Индексы в PostgreSQL — 3

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

В первой статье мы рассмотрели механизм индексирования PostgreSQL, во второй — интерфейс методов доступа, и теперь готовы к разговору о конкретных типах индексов. Начнем с хеш-индекса.

Hash


Устройство


Общая теория


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

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

Идея хеширования состоит в том, чтобы значению любого типа данных сопоставить некоторое небольшое число (от 0 до N−1, всего N значений). Такое сопоставление называют хеш-функцией. Полученное число можно использовать как индекс обычного массива, куда и складывать ссылки на строки таблицы (TID). Элементы такого массива называют корзинами хеш-таблицы — в одной корзине могут лежать несколько TID-ов, если одно и то же проиндексированное значение встречается в разных строках.

Хеш-функция тем лучше, чем равномернее она распределяет исходные значения по корзинам. Но даже хорошая функция будет иногда давать одинаковый результат для разных входных значений — это называется коллизией. Так что в одной корзине могут оказаться TID-ы, соответствующие разным ключам, и поэтому полученные из индекса TID-ы необходимо перепроверять.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии14

Индексы в PostgreSQL — 2

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

Интерфейс


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

Свойства


Все свойства методов доступа представлены в таблице pg_am (am — access method). Из этой таблицы можно получить и сам список доступных методов:

postgres=# select amname from pg_am;
 amname
--------
 btree
 hash
 gist
 gin
 spgist
 brin
(6 rows)

Хотя к методам доступа можно с полным правом отнести и последовательное сканирование, исторически сложилось так, что оно отсутствует в этом списке.

В версиях PostgreSQL 9.5 и более старых каждое свойство было представлено отдельным полем таблицы pg_am. Начиная с версии 9.6 свойства опрашиваются специальными функциями и разделены на несколько уровней:

  • свойства метода доступа — pg_indexam_has_property,
  • свойства конкретного индекса — pg_index_has_property,
  • свойства отдельных столбцов индекса — pg_index_column_has_property.

Разделение на уровни метода доступа и индекса сделано с прицелом на будущее: в настоящее время все индексы, созданные на основе одного метода доступа, всегда будут иметь одинаковые свойства.

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

Индексы в PostgreSQL — 1

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

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1+102
Комментарии59

12 полезных государственных сервисов для предпринимателей

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


В работе над сайтом «Я люблю ИП» мы используем разные сервисы, которые облегчают жизнь предпринимателям. В этой статье мы собрали самые полезные государственные сервисы для ИП. Они помогут вам зарегистрировать бизнес, рассчитаться с налогами и страховыми взносами, сдать отчётность или узнать о возможных штрафах.

Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии26

JavaScript выходит за пределы Web в 2015 году

Время на прочтение8 мин
Количество просмотров20K
2015 год был значимым годом для Интернета вещей. Мы увидели огромный прогресс в размере и возможностях устройств, большие игроки, такие как Microsoft и Samsung, в буквальном смысле продвигаются в космос и всё IoT сообщество начинает ещё больше разрастаться. В течение двух последних лет здесь, на SitePoint, для меня стало чем-то в роде традиции делать обзор года в ракурсах IoT и JavaScript (см. JavaScript выходит за пределы Web и JavaScript выходит за пределы Web в 2014). Хотя изначальная популярность и ажиотаж вокруг JavaScript, как языка для IoT, похоже немного поутихли за 2015 год, JavaScript всё ещё продолжает позиционироваться как довольно-таки сильный способ для задействования магии на большем числе IoT платформ, чем это себе представляют люди.

В этом обзоре мы рассмотрим некоторые значимые продвижения в IoT, которые раскрывают новые возможности для JavaScript разработчиков и будущий потенциал JavaScript за пределами Web.
Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии40

Иммутабельность в JavaScript

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

habracut


Что такое иммутабельность


Неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания. Результатом любой модификации такого объекта всегда будет новый объект, при этом старый объект не изменится.

Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии57

Пакет-географ или библиотека, которая прекрасно знает географию и говорит на разных языках

Время на прочтение3 мин
Количество просмотров9.7K
Во многих из проектов, в которых я участвовал, была необходимость использовать географические данные в том или ином виде. Даже самые простые сайты, как правило, имеют список стран или городов на какой-нибудь из своих страниц – магазины хотят знать, куда доставлять товары; социальные сети хотят знать, откуда пользователь; и так далее.

Что далеко ходить – вот даже здесь на Хабре есть выпадающие списки стран, штатов и городов:

image
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии49

DevConf 2015: видео докладов секции PHP

Время на прочтение4 мин
Количество просмотров17K
Ежегодная конференция профессиональных веб-разработчиков DevConf проходит с 2010 года. Она состоит из нескольких секций, посвященных самым популярным языкам и технологиям веб-разработки. В 2015 году году компания Badoo взяла на себя важную миссию — записать видео выступлений, чтобы те, кто не смог посетить конференцию, могли посмотреть их в любое время.

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

Секция PHP конференции DevConf 2015

В первую очередь хотелось бы отметить доклад Дмитрия Стогова (Zend Technologies) «Релиз PHP 7: что нас ждет в октябре 2015». Не будем мучить вас переводом «чейнджлога» седьмой версии, а скажем просто: смотреть всем, кто имеет хоть какое-то отношение к PHP. Если вы за свою жизнь написали хотя бы строчку кода на PHP, то, скорее всего, уже слышали про сумасшедшую производительность, JIT и spaceship operator. JIT в PHP так и не появился, но оптимизации проведены масштабные. В докладе Дмитрий рассказывает много о внутренней кухне PHP, есть графики производительности разных версий PHP и HHVM на реальных приложениях. Badoo сейчас как раз в процессе перехода на PHP 7, нам пришлось сильно «перекопать» инфраструктуру тестирования и переписать кучу расширений, но мы на финишной прямой и можем подтвердить, что PHP 7 действительно показывает очень серьезный рост производительности. Какой именно получается прирост? Пока секрет. Ждите от нас отдельной статьи на эту тему, когда мы поборем последние косяки, отлавливаемые на продакшн-трафике.


Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии1

350+ полезных ресурсов, книг и инструментов для работы с Docker

Время на прочтение14 мин
Количество просмотров101K
Мы уже ни раз приводили полезные руководства и подборки источников для разработчиков. На этот раз мы решили продолжить тему контейнеров, которую мы затрагивали ранее, и рассказать о подборке тематических ресурсов на GitHub.

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

400 потрясающих бесплатных сервисов

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

Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные веб-сайты

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly: Конструктор веб-сайтов.
  • Layers: Создание сайтов на WordPress (new).
  • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
  • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
Читать дальше →
Всего голосов 108: ↑89 и ↓19+70
Комментарии38

PHP-Дайджест № 67 – интересные новости, материалы и инструменты (12 – 27 июля 2015)

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


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 63: ↑55 и ↓8+47
Комментарии0

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Время на прочтение8 мин
Количество просмотров86K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии77

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

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


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

15 лучших JavaScript-библиотек для построения диаграмм и сводных таблиц

Время на прочтение6 мин
Количество просмотров308K
Практически невозможно представить себе информационную панель без диаграмм и графиков. Они быстро и эффективно отображают сложные статистические данные. Более того, хорошая диаграмма также улучшает общий дизайн вашего сайта.

В этой статье я покажу вам некоторые из лучших JavaScript библиотек для построения диаграмм/схем (и сводных таблиц). Эти библиотеки помогут вам в создании красивых и настраиваемых графиков для ваших будущих проектов.

Хотя большинство библиотек являются бесплатными и свободно распространяемыми, для некоторых из них есть платные версии с дополнительным функционалом.

Читать дальше →
Всего голосов 71: ↑65 и ↓6+59
Комментарии17

Обработка и оформление отчетов в Excel на PHP

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

Не редко при разработке некоего проекта, возникает необходимость в формировании отчетной статистики. Если проект разрабатывается на Delphi, C# или к примеру, на С++ и под Windows, то тут проблем нет. Всего лишь необходимо воспользоваться COM объектом. Но дела обстоят иначе, если необходимо сформировать отчет в формате excel на PHP. И чтобы это творение функционировало на UNIX-подобных системах. Но, к счастью, не так все плохо. И библиотек для этого хватает. Я свой выбор остановил на PHPExcel. Я уже пару лет работаю с этой библиотекой, и остаюсь доволен. Поскольку она является кроссплатформенной, то не возникает проблем с переносимостью.


PHPExcel позволяет производить импорт и экспорт данных в excel. Применять различные стили оформления к отчетам. В общем, все на высоте. Даже есть возможность работы с формулами. Только необходимо учитывать, что вся работа (чтение и запись) должна вестись в кодировке utf-8.

Читать дальше →
Всего голосов 40: ↑33 и ↓7+26
Комментарии28
1

Информация

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

Специализация

Backend Developer
Lead
От 400 000 ₽
PHP
OOP
Git
Linux
SQL
PostgreSQL
MySQL
Nginx
Golang