Pull to refresh
17
0
Евгений Блохин @ebt

инженер-предприниматель

Send message

Gixy — open source от Яндекса, который сделает конфигурирование Nginx безопасным

Reading time10 min
Views36K
Nginx, однозначно, один из крутейших веб-серверов. Однако, будучи в меру простым, довольно расширяемым и производительным, он требует уважительного отношения к себе. Впрочем, это относится к почти любому ПО, от которого зависит безопасность и работоспособность сервиса. Признаюсь, нам нравится Nginx. В Яндексе он представлен огромным количеством инсталляций с разнообразной конфигурацией: от простых reverse proxy до полноценных приложений. Благодаря такому разнообразию у нас накопился некий опыт его [не]безопасного конфигурирования, которым мы хотим поделиться.



Но обо всем по порядку. Нас давно терзал вопрос безопасного конфигурирования Nginx, ведь он — полноправный кубик веб-приложения, а значит, и его конфигурация требует не меньшего контроля с нашей стороны, чем код самого приложения. В прошлом году нам стало очевидно, что этот процесс требует серьезной автоматизации. Так начался in-house проект Gixy, требования к которому мы обозначили следующим образом:

— быть простым;
— но расширяемым;
— с возможностью удобного встраивания в процессы тестирования;
— неплохо бы уметь резолвить инклюды;
— и работать с переменными;
— и про регулярные выражения не забыть.
Читать дальше →
Total votes 112: ↑112 and ↓0+112
Comments18

Культ карго для ИИ: миф о сверхчеловеческом искусственном интеллекте

Reading time18 min
Views36K
image

Я слышал, что в будущем компьютерные ИИ станут настолько умнее нас, что отнимут у нас все рабочие места и ресурсы, а люди вымрут. Так ли это?

Это самый частый вопрос, который мне задают на моих выступлениях по поводу ИИ. Задающие его люди искренне волнуются, и их беспокойство происходит от других людей – экспертов, задающихся тем же самым вопросом. Среди них можно встретить умнейших из живущих сегодня людей – это, к примеру, Стивен Хокинг, Илон Маск, Макс Тегмарк, Сэм Харрис и Билл Гейтс, – и все они верят в возможность такого сценария. На недавней конференции, посвящённой проблемам ИИ, комитет из девяти наиболее сведущих в области ИИ людей согласился, что скорого появления сверхчеловеческого ИИ нам не избежать.
Total votes 33: ↑28 and ↓5+23
Comments186

Что именно заставляет глубинное обучение и нейронные сети работать хорошо?

Reading time6 min
Views35K
Сейчас очень много статей, рапортующих об успехах нейронных сетей, в частности, в интересующей нас области понимания естественного языка. Но для практической работы важно еще и понимание того, при каких условиях эти алгоритмы не работают, или работают плохо. Отрицательные результаты по понятным причинам часто остаются за рамками публикаций. Часто пишут так — мы использовали метод А вместе с Б и В, и получили результат. А нужен ли был Б и В остается под вопросом. Для разработчика, внедряющего известные методы в практику эти вопросы очень даже важны, поэтому сегодня поговорим об отрицательных результатах и их значении на примерах. Примеры возьмем, как известные, так и из своей практики.
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments42

Nuklear — идеальный GUI для микро-проектов?

Reading time7 min
Views66K

Nuklear — это библиотека для создания immediate mode пользовательских интерфейсов. Библиотека не имеет никаких зависимостей (только C89! только хардкор!), но и не умеет создавать окна операционной системы или выполнять реальный рендеринг. Nuklear — встраиваемая библиотека, которая предоставляет удобные интерфейсы для отрисовки средствами реализованного приложения. Есть примеры на WinAPI, X11, SDL, Allegro, GLFW, OpenGL, DirectX. Родителем концепции была библиотека ImGUI.


Чем прекрасна именно Nuklear? Она имеет небольшой размер (порядка 15 тысяч строк кода), полностью содержится в одном заголовочном файле, создавалась с упором на портативность и простоту использования. Лицензия Public Domain.

Читать дальше →
Total votes 109: ↑107 and ↓2+105
Comments80

Телепатия на стероидах в js/node.js

Reading time6 min
Views13K
imageЭтап поддержки продуктов отнимает много сил и нервов. Путь от «я нажимаю а оно не работает» до решения проблемы, даже у первоклассного телепата, может занимать много времени. Времени, в течение которого клиент/начальник будет зол и недоволен.

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

О своём решении я и расскажу под катом.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments27

Chatbot на базе рекуррентной нейронной сети своими руками за 1 вечер/6$ и ~ 100 строчек кода

Reading time10 min
Views112K
В данной статье я хочу показать насколько просто сегодня использовать нейронные сети. Вокруг меня довольно много людей одержимы идеей того, что нейронки может использовать только исследователь. И что бы получить хоть какой то выхлоп, нужно иметь как минимуму кандидатскую степень. А давайте на реальном примере посмотрим как оно на самом деле, взять и с нуля за один вечер обучить chatbot. Да еще не просто абы чем а самым что нинаесть ламповым TensorFlow. При этом я постарался описать все настолько просто, что-бы он был понятен даже начинающему программисту! В путь!

image
Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments26

Миллион строк в секунду из Postgres с помощью Python

Reading time4 min
Views54K
image

asyncpg — новая Python open-source библиотека для работы с PostgreSQL. Она была написана с использованием asyncio и Python 3.5. asyncpg — самый быстрый драйвер для работы с PostgreSQL среди похожих реализаций на Python, NodeJS и Go.

Почему asyncpg?


Мы создаем EdgeDB — базу данных нового поколения, с PostgreSQL на бэкенде. Нам необходима высокая производительность, низкая задержка доступа и дополнительные возможности самого PostgreSQL.

Самый очевидный вариант – использовать psycopg2 — популярнейший драйвер Python для работы с PostgreSQL. У него отличное комьюнити, он стабильный и проверенный временем. Также есть aiopg, который реализует асинхронный интерфейс, поверх psycopg2. Тогда очевиден вопрос — зачем писать свой велосипед? Короткий ответ: производительность и поддержка возможностей PostgreSQL. Ниже мы рассмотрим это более детально.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments12

Сравнение производительности GPU-расчетов на Python и C

Reading time7 min
Views61K

Python обладает рядом привлекательных преимуществ к которым относится простота реализации программных решений, наглядность и лаконичность кода, наличие большого числа библиотек и многочисленного активного комьюнити. В то же время, известная всем медлительность питона часто ограничивает его применимость для “тяжелых” вычислений. Для ряда задач можно добиться существенного ускорения расчетов путем использования технологии CUDA для параллельных вычислений на GPU. Цель этого небольшого исследования — анализ возможностей эффективного использования python для расчетов на GPU и сравнение производительности различных python-решений с реализацией на C.
Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments42

Бот для telegram с состоянием в СУБД и классификацией текста

Reading time7 min
Views15K
Т.к. мой классификатор из прошлого поста таки работает (впрочем, параметры «из коробки» не всегда удачны, потому я вынес возможность слегка настроить Conv1d-слои и скрытый слой) — я решил прикрутить его к боту. Да, запоздал я на этот хайп ) Кстати, заранее уточню, что прикрутить русский я пока таки не пробовал, хотя это не должно стать проблемой — в nltk поддерживаются нужные фичи, обучение word2vec концептуально не отличается от английского, да и предобученные модели вроде бы имеются.

Ну и сходу возникают вопросы:

  • под какие платформы его пилить — пока решил остановиться на telegram. В теории — конструкция позволяет легко дописать обертки для других платформ (как будто он кому-то понадобится )
  • как описывать «сценарий». Навелосипедил свою структуру с классами и сущностями поверх YAML
  • ну и неплохо бы хранить ботов/состояние в какой-нибудь БД

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Самая нужная программа на свете

Reading time20 min
Views167K
image
Какими программами постоянно пользуются люди? Если подумать над этим вопросом, то окажется, что список этот не такой уж большой. К постоянно используемым программам можно отнести: саму операционную систему, файловый менеджер, текстовый редактор, браузер, мессенджер. Это именно тот базовый набор, которым пользуется на компьютере практически каждый человек. Требования к таким программам должны быть высокими: безотказная работа, быстрое выполнение всех функций, понятный и удобный интерфейс.

Можно сказать, что вышеперечисленный набор программ — это самые нужные программы, которыми пользуется человек в цифровую эпоху. Этот список покрывает все базовые потребности человека-пользователя. Или не все? Есть ли еще одна базовая потребность, которая не учтена в вышеприведенном списке самых необходимых программ? Является ли эта потребность самой важной из тех, что должен автоматизировать компьютер? Для меня такая потребность есть, но в списке самых используемых программ ей места не нашлось. Что же это за потребность?
Ранее компьютер считался устройством для проведения вычислений...
Total votes 115: ↑111 and ↓4+107
Comments303

Рецепт разработки бота под Telegram

Reading time12 min
Views28K


Добрый день, уважаемые читатели Хабрахабра!

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

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

Преамбула


И так, что же может сделать один программист за 4 дня?
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments26

Решение проблемы понимания контекста искусственным интеллектом. Часть 1

Reading time5 min
Views12K


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

The trophy doesn't fit into the brown suitcase because it's too [small/large].
What is too [small/large]?
Answers:The suitcase/the trophy.
The Winograd Schema Challenge

В предыдущей статье описан наш подход к разработке ИИ и то, что нами уже сделано на настоящий момент. Напомню, что мы создаем ИИ путем прямого копирования структур и процессов психики человека.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments109

Как устроен парсер Python, и как втрое уменьшить потребление им памяти

Reading time12 min
Views49K
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
Читать дальше →
Total votes 122: ↑116 and ↓6+110
Comments68

Литий-ионные и литий-полимерные аккумуляторы: маркетинговые уловки и распространенные ошибки

Reading time7 min
Views102K
Неоднократно сталкиваюсь в статьях и комментариях (в статьях все же гораздо реже) с использованием неправильных данных или названий, которые впоследствии приводятся, как аргументы, хотя на самом деле они ошибочны изначально. И эти ошибки распространяются по всем ресурсам, включая Гиктаймс.

Этой статьей я бы хотел разъяснить некоторые моменты и провести своеобразный ликбез.
Читать дальше →
Total votes 66: ↑63 and ↓3+60
Comments70

Систематизация публикаций в web. Часть 2 из 3: Три шага к научной респектабельности

Reading time7 min
Views9.5K
«The future is already here — it's just not very evenly distributed.»
William Gibson


Данный цикл статей включает 3 части.
В первой части был проведен обзор статей на тему научной работы, опубликованных на habrahabr.ru, рассмотрено понятие индекса цитирования (h-index, индекс Хирша) и сделан вывод о необходимости навыков работы с наукометрическими базами данных для всех, кто встал на путь научной карьеры.
Во настоящей второй части рассмотрены три инструмента управления публикациями в web: 1) Scopus; 2) Google Scholar (Академия Google); 3) Research Gate.
В третьей части рассмотрен выбор стратегии научных публикаций в целях продвижения личного научного бренда. Примеры в статье рассмотрены для той научной области, которая знакома автору – Computer Science.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments8

Развернутый комментарий к статьям «Систематизация публикаций в web»

Reading time6 min
Views7.7K

Источник изображения


На днях Владимир Скляр (Vladimir_Sklyar) опубликовал два материала об академическом сегменте интернета: раз и два. Начал писать комментарий… и увлекся. В итоге пишу очень развернутый комментарий.


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


Несмотря на радость от прочтения материала, замечательный стиль и емкие обобщения (мне очень понравился раздел "В чем причина такого невнимания к этой важной составляющей научной работы?"), осталось ощущение колоссальной недораскрытости темы. На мой взгляд, Владимир затронул лишь самую верхушку айсберга. Дальнейший комментарий разделю на дополнения и уточнения.

Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments17

Open API Ivideon: первые шаги

Reading time8 min
Views15K

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

Если вы не знаете, кто мы, то объясним в четырех словах: сервис видеонаблюдения через Интернет. За остальными подробностями отсылаем к самой первой статье.

Вот и в Ivideon занимались стоящим проектом – Open API. Да, это открытый API, позволяющий нашим клиентам и партнерам упростить и автоматизировать взаимодействие с нашим сервисом. И даже создавать новые продукты!

Проект пока что находится на стадии бета-тестирования, но вы, если желаете, можете попробовать API. Подробнее об этом расскажем в конце статьи.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments9

WebTorrent: торренты через браузер. Без плагинов, чистый JavaScript

Reading time2 min
Views480K


Теперь для скачивания и просмотра фильмов с торрентов не нужен отдельный торрент-клиент. Также как и для раздачи файлов по протоколу BitTorrent тоже не нужен отдельный клиент. Достаточно обычного браузера, поддерживаются Chrome, Firefox и Opera (десктоп и Android).

Всё это благодаря WebTorrent — гибриду BitTorrent и WebRTC. Скачивание и раздача происходят прямо через сайт. Встроенный плеер начинает показ фильма, как только скачано несколько процентов.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments26

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

Reading time5 min
Views122K


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

Читать дальше →
Total votes 94: ↑91 and ↓3+88
Comments44

Adminer — веб-интерфейс для баз данных размером в один .php файл

Reading time1 min
Views84K


В свете недавнего поста про сравнение PostgreSQL и MySQL, в комментариях возникла проблема выбора удобного интерфейса для работы с постгресом. Я сам столкнулся с такой проблемой, решив поискать альтернативы всем известному phpMyAdmin / php*Admin, который считается стандартом у веб-мастеров.
Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments53

Information

Rating
4,898-th
Location
München, Bayern, Германия
Registered
Activity