Как стать автором
Обновить
5
0
Алексей Мартынов @FenixDeveloper

Предприниматель, Разработчик, Ментор

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

Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

Время на прочтение8 мин
Количество просмотров68K
Позволю себе опубликовать свой опыт применения сетевых технологий в меру моей испорченности для выхода в интернет из-за пределов РФ. Не будем рассуждать о том, зачем это нужно. Надеюсь, что все всем и так понятно.

Итак, у нас есть статический публичный IP адрес, который приходит Ethernet шнуром в MikroTik RouterBOARD 750G r3 (hEX). Пробуем собрать вот такую конструкцию.


Настройку L2tp линка в рамках этой статьи я не описываю, а на схеме он нарисован только потому, что в ней упоминается.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии50

Релиз неофициального MTProto прокси на Python, особенности протокола

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

Недавно разработчики Telegram выложили исходные тексты прокси-сервера, работающего по протоколу MTProto. На хабре вышли статьи об особенностях его сборки и перепаковке докер-контейнера с ним. Официальный прокси сервер, написанный на С, удивляет объемом кода — примерно 23 тысячи строк. Одновременно с этим, а иногда и чуть раньше, вышло несколько альтернативных реализаций, но ни одна из них не поддерживала возможность рекламы своего канала.

В данной статье хотелось бы, во-первых, рассказать о малоизвестных особенностях протокола общения прокси-сервера с внешними серверами и, во-вторых, рассказать о собственной разработке — реализации прокси-сервера на Python, которая только что достигла релиза и доступна всем желающим под свободной лицензией MIT.
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии86

Чем отличается проектирование станции метро от проектирования коттеджа

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


В инженерной части, конечно, всем. Список отличий примерно такой же, как у паровоза и апельсина. А вот в части интерьера — минимально. Разве что нет фасадов, нет заполнения наружных проёмов, много уникальных дверей из нержавейки. До КРОК я работал в проектной команде Инжпроекта из 25 человек по 4 станциям, уже новым, то есть достаточно ужатым в плане бюджета. Расскажу на примере «Румянцево», где я отвечал за интерьер.

У нас в ИТ-компании образовалась команда архитекторов, и поэтому нам часто задают такие вопросы. Постараюсь ответить на этот и ещё пару частых.

Про метро начнём с того, что сейчас все станции делают уникальными. Раньше, ещё в СССР, были так называемые «сороконожки» (их ещё из-за кафеля на жаргоне называли «туалетными станциями») — их запускали по одной, искали оптимальный вид станции. Даже нашли, но позже пришли к тому, что нужно всё же делать станции различающимися.
Читать дальше →
Всего голосов 105: ↑103 и ↓2+101
Комментарии29

Нейросеть генерирует движения персонажа видеоигры в реальном времени

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

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

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

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

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

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

Исследователи из Эдинбургского университета разработали новую систему обучения, называемую фазово-функциональной нейронной сетью (PFNN), которая использует машинное обучение для анимации персонажей в видеоиграх и других приложениях.
Всего голосов 48: ↑44 и ↓4+40
Комментарии94

Основные функции ETL-систем

Время на прочтение7 мин
Количество просмотров322K
ETL – аббревиатура от Extract, Transform, Load. Это системы корпоративного класса, которые применяются, чтобы привести к одним справочникам и загрузить в DWH и EPM данные из нескольких разных учетных систем.

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

Azure понятным языком [Шпаргалка]

Время на прочтение10 мин
Количество просмотров71K
Скажите, приходилось ли вам слышать о новых службах Azure: Elasticville, StorageWart и API Gatesian? Разумеется, нет, ведь эти названия были придуманы только что. В этой статье мы делимся с вами шпаргалкой, в которой понятным языком описана экосистема Microsoft Azure.


Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии12

19 неожиданных находок в документации Node.js

Время на прочтение11 мин
Количество просмотров45K
Мне хотелось бы думать, что я вполне прилично знаю Node. Вот уже три года, как ни один из сайтов, над которыми я работал, не обходится без него. Но документацию до сих пор я как следует не читал.

Мне нравится записывать полезные вещи об интерфейсах, свойствах, методах, функциях, типах данных, и обо всём прочем, что относится к веб-разработке. Так я заполняю пробелы в знаниях. Сейчас я занят документацией к Node.js, а до этого проработал материалы по HTML, DOM, по Web API, CSS, SVG и EcmaScript.

image

Чтение документации Node.js открыло мне немало замечательных вещей, о которых я раньше не знал. Ими я хочу поделиться в этом небольшом материале. Начну с самого интересного. Так же я обычно делаю, когда показываю новому знакомому свои гаджеты.
Читать дальше →
Всего голосов 82: ↑75 и ↓7+68
Комментарии72

История моего стартапа: 500000 пользователей за 5 дней на стодолларовом сервере

Время на прочтение11 мин
Количество просмотров35K
Похоже, все в мире стартапов согласны с тем, что первые версии приложений должны представлять собой минимально жизнеспособный продукт (MVP, Minimal Viable Product), создавая который можно не особо заботиться о его масштабировании с технической точки зрения. Мне много раз доводилось слышать о том, что самое главное в подобных делах – поскорее выпустить нечто работающее. И, до тех пор, пока бизнес-модель нормально функционирует в условиях роста клиентской базы – всё нормально. А тратить время и деньги на то, чтобы сделать систему, которая сможет выдержать внезапный наплыв пользователей, не стоит. Беспокоиться нужно лишь о проверке предположений, об оценке рынка и о раскрутке бизнеса. Масштабируемость – это то, что можно отложить на потом. К несчастью, такая вот слепая вера в шаблонные идеи уже не раз приводила к оглушительным провалам. Pokémon GO, и, в частности, связанные с этим проектом приложения, служат напоминанием об этом.


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

Как понять, что происходит на сервере

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


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


Читать дальше →
Всего голосов 98: ↑96 и ↓2+94
Комментарии20

Почему мы пишем и храним код в текстовых файлах?

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


Простые текстовые форматы данных — прекрасная штука. Нет, без шуток. Возьмём, например, банальные txt-файлы. Ну красота же! В любом утюге есть текстовый редактор, можно открыть файл, почитать, записать. Любой уважающий себя язык программирования из коробки даст вам средства работы с текстовыми файлами. Или вот ранние сетевые протоколы — SMTP, POP3, HTTP 1.0. Это вообще такое блаженство, что слёзы на глаза наворачиваются. Можно взять telnet, приконнектиться к серверу, отдавать команды и читать ответы! Писать клиенты, серверы, снифферы, прокси — одно удовольствие.

Но время не стоит на месте и удобство работы программиста, к сожалению (или к счастью!), давно перестало быть главным критерием выбора технологий. В прекрасные текстовые файлы понадобилось вдруг добавлять графики, картинки и ссылки — и вот у нас есть форматы pdf и doc. С сетевыми протоколами вообще беда — людям зачем-то понадобились сжатие трафика, шифрование, мультиплексирование и другие страшные вещи. И вот уже у нас есть HTTP/2, с которым телнетом не очень-то поработаешь. Даже всем красивый REST разные негодяи типа Google нет-нет, да и пытаются заменить на какой-нибудь gRPC. И это я ещё не начал рассуждать о том, что мало что нынче сохраняется текстовые файлы — все почему-то используют какие-то базы данных, совершенно нечитабельные при открытии их текстовым редактором, но какой-то магией позволяющие информацию структурировать, индексировать, эффективно искать и т.д.

И вот здесь мы подходим к теме того, что я хотел бы обсудить. Как видите, все форматы хранения данных, протоколы и прочие штуки прошли длинный путь в поисках своего оптимального вида. Однако мы, программисты, продолжаем писать код наших программ в текстовых файлах, как делали это наши дедушки лет 50 назад (или уже больше?). Какую бы ОС мы ни использовали, какой бы модный язык ни выбрали, как бы ни была крутой наша IDE — результатом написания кода будут буквы в текстовом файле. Что, согласитесь, в теории совершенно не обязательно, ибо наши буквы компьютеру нужны как зайцу стоп-сигнал. Ему нужны машинные команды для выполнения, это просто нам удобнее описывать их какими-то там буквами. А на самом деле ведь «цикл» или «функция» будут тем, чем они являются, как ты их не назови и где ты их не храни. «Роза пахнет розой, хоть розой назови её, хоть нет».

Да, мы привыкли писать код в текстовые файлы. Вы открываете файл — ну и вроде бы видите код своей программы. Какую-то его часть, вернее. Как-то видите. Понимаете. Ну или думаете, что понимаете. Но вот пост на Facebook вы тоже открываете, видите и понимаете — а ведь Facebook точно этот пост не в текстовом файле хранил.

Давайте же посмотрим, какие проблемы нам создаёт хранение кода в виде набора текстовых строк.
Читать дальше →
Всего голосов 78: ↑46 и ↓32+14
Комментарии123

Инструмент эссе: от задумки до монетизации

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

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


Любая современная школа английского языка ориентируется на коммуникативную методику. Например, мы в Skyeng четко отслеживаем, сколько времени на уроке говорит учитель, сколько ученик и стараемся соблюдать планку — не менее 50% времени для разговора ученика. При этом навыки письменного общения никто не отменял — многие из нас пишут деловые письма на английском, создают презентации и питчи. Как излагать свои мысли правильно, получать адекватный фидбек и совершенствовать свои тексты на английском языке? Поставив такую задачу мы поняли, что на рынке онлайн-обучения нет продукта, позволяющего обучать навыкам письменного общения. И мы решили его сделать.

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

Шпаргалка начинающего Debian/Ubuntu администратора по управлению пакетами

Время на прочтение3 мин
Количество просмотров290K
Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку. Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Читать дальше →
Всего голосов 103: ↑90 и ↓13+77
Комментарии64

Статистика по профилям пользователей ВКонтакте

Время на прочтение6 мин
Количество просмотров98K
В этом посте я приведу статистику по данным, которые указали в своих профилях пользователи социальной сети ВКонтакте. Под катом также содержится ответ на интересующий многих вопрос — сколько всё-таки активных пользователей в этой соцсети? И, разумеется, пара слов о том, как всё это было собрано.
Читать дальше →
Всего голосов 284: ↑274 и ↓10+264
Комментарии237

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

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

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

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


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

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

Нечто «крадет» место на диске?

Время на прочтение4 мин
Количество просмотров28K
Если Вы не следите за оставшимся свободным местом в корневом разделе — то Вас могут ожидать неприятные новости. В случае переполнения данного раздела, важные для Вашего проекта сервисы перестанут работать. Согласитесь, неработающий MySQL или web server скажется на проекте не лучшим образом.

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

Как мы боролись с парсерами

Время на прочтение16 мин
Количество просмотров36K
image
Ключевые моменты:
* Реализация скрипта для проверки PTR посетителей;
* Конфигурирование nginx в IfIsEvil-style с ветвлениями map;
* Имена location в переменных map;
* Управление ветвлением через try_files /nonexist $map_var.

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

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

C.H.I.P. — 9-долларовый «убийца» Raspberry Pi

Время на прочтение3 мин
Количество просмотров41K
image
На Geektimes'ах уже пролетала информация о том, как 9-долларовый Linux компьютер собрал больше $2 000 000 на кикстартере. Я также поддержал этот проект в момент сбора средств и на днях ко мне прилетел мой экземпляр данного девайса
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии109

Атака клонов: Современные технологии ботовождения

Время на прочтение35 мин
Количество просмотров12K
«Сейчас вы напишите самую сложную в своей жизни программу, которая будет просто складывать два числа»
Рыжова Ирина Михайловна


Интеллектуально-азартные онлайн-игры – лакомый кусок для ботоводов. Даже если разработчики игрового софта тратят большие деньги на отлов ботов, – как в онлайн покер-румах, например – всё равно велика вероятность наткнуться на «умного бота», игра с которым будет в одни ворота. Особенно, если бот абсолютное неуязвим… Ибо никакие деньги не защитят систему, через которую проходят большие деньги.


Рис. 1. Ботоводы наступают


Скрытая угроза


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

Разработчики софта для игры в покер тратят большие деньги на разоблачение ботов, и тем не менее, ботоводство в онлайн-покере процветает. Ибо никакие деньги не смогут защитить систему, через которую проходят большие деньги. Ботоводы и ловцы ботов, – анализируя уловки оппонентов и принимая соответствующие контрмеры, – попеременно одерживают победу. Кто-то может думать, что битве между ними никогда не будет конца. Однако, существует схема безопасного ботовождения, перед которой ловцы ботов – пасуют. Она интересна тем, что даже если «борцы за справедливость» будут иметь на руках подробно прокомментированные исходные коды бота, они не смогут установить факт его использования. Реализация данной схемы – мероприятие дорогостоящее, однако поскольку потенциальная выгода велика, схема вполне актуальна.

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

Intel Curie: контроллер, чтобы надеть на себя

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


Проектировать и производить носимую электронику теперь станет намного проще — после того, как компания Intel представила на выставке CES готовую модульную платформу Curie. Именно ее демонстрирует вам CEO Intel Брайан Кржанич. Устройство выполнено в форме пуговицы (намек, определенно!) и включает в себя процессор Intel Quark, 384 кб флеш памяти, набор сенсоров, Bluetooth модуль и систему управления питанием. Чтобы облегчить жизнь разработчикам, одновременно с Curie Intel выпустила под нее наборы Intel IQ Software Kits различной направленности, включающие в себя крошечную ОС реального времени, а также примеры приложений.

Начало продаж Intel Curie запланировано на вторую половину текущего года.
Всего голосов 19: ↑19 и ↓0+19
Комментарии12

Docker: запуск графических приложений в контейнерах

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

Это небольшой обзор способов запуска графических приложений в контейнерах Docker.
ну-ка, что там
Всего голосов 36: ↑36 и ↓0+36
Комментарии14
1
23 ...

Информация

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

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

Chief Technology Officer (CTO), Chief Executive Officer (CEO)
Lead
От 7 000 $
Lean startup
Company management
Development management
Designing application architecture
High-loaded systems
Big data
Computer vision
Software development