Pull to refresh
29
0
Андрей Волошин @Anvol

CTO

Send message

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Reading time7 min
Views700K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Total votes 212: ↑212 and ↓0+212
Comments352

Полный перевод Unix-коанов на русский язык

Reading time16 min
Views75K


Представляю на ваш суд ещё один перевод коанов о Мастере Фу на русский язык. В данный сборник вошли все коаны, на данный момент опубликованные на сайте Эрика Реймонда. Надо сказать, что сам Эрик личность весьма неординарная, но упоминания в данной статье стоящая. Помимо холиваров в списках рассылки всевозможных проектов за его авторством также несколько серьёзных трудов о Unix — в том числе и о сообществе, без которого экосистема современных открытых проектов не была бы возможной (полный список книг). Идея перевести коаны в очередной раз пришла мне в голову во время чтения одного из таких трудов, а именно «The Art of Unix Programming», поскольку многое из скрытого смысла коанов становится ясно только после прочтения очередной главы оттуда.

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

Итак
Total votes 126: ↑123 and ↓3+120
Comments65

Компромиссы микросервисов

Reading time16 min
Views33K
От переводчика: с момента выхода популярной статьи Мартина Фаулера «Микросервисы» (перевод на Хабре) прошло уже достаточно времени, чтобы автор смог дополнить свои наблюдения свежим опытом проектирования и разработки микросервисов в различных компаниях, и рассказать о нем в новом посте, чей перевод представляется вашему вниманию.
image
Многие команды разработчиков нашли архитектурный стиль микросервисов подходом, превосходящим монолитную архитектуру; другие команды выяснили, что для них микросервисы — лишняя обуза, подрывающая производительность разработки. Как и у любого стиля архитектуры, у микросервисов есть свои плюсы и минусы. Для того, чтобы делать осознанный выбор, вы должны понимать эти свойства и уметь рассматривать их на фоне собственных конкретных условий.
Микросервисы дают преимущества… …ценою издержек
Жесткие границы модулей
Strong Module Boundaries

Микросервисы усиливают модульную структуру, что особенно важно для больших команд разработчиков.
Распределённость
Distribution

Распределенные системы тяжелее программировать, поскольку удаленные вызовы медленные и всегда рискуют неудачей-отказом.
Независимый деплоймент
Independent Deployment

Простые сервисы проще деплоить, и, поскольку они автономны, меньше вероятность отказа системы в случае, если что-то идет не так.
Консистентность в конечном счете
Eventual Consistency

Поддержка cтрогой консистентности чрезвычайно сложна для распределённых систем, и это означает, что придется иметь дело с консистентностью в конечном счете.
Технологическое разнообразие
Technology Diversity

С микросервисами вы можете смешивать несколько языков, фреймворков и технологий хранения данных.
Эксплуатационная сложность
Operational Complexity

Вам потребуется опытная команда эксплуатации для управления множеством сервисов, которые будут регулярно редеплоиться.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments7

Порт i2cdevlib на STM32 HAL

Reading time9 min
Views39K

Сильно удивился, когда выяснил, что под STM32 нет такого разнообразия готовых драйверов под разного рода i2c сенсоры, как под Arduino. Те, которые мне удалось найти, были частью какой либо ОС (например, ChubiOS, FreeRTOS, NuttX) и были более POSIX-like. А хотелось писать под HAL :(

Arduino комюнити использует библиотеку i2cdevlib для абстракции от железа при написании драйверов сенсоров. Собственно, делюсь своей работой — порт i2cdevlib на STM32 HAL (pull-request уже отправил), а под катом я расскажу о камушках, которые собрал по пути. Ну и примеры кода будут.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments14

Фильтр Маджвика

Reading time38 min
Views131K

Предисловие от переводчика


Здесь представлен один из новейших методов расчёта ориентации в пространстве по показаниям датчиков акселерометра, гироскопа и компаса — фильтр Маджвика, который, по словам автора, даёт результат лучший, чем применение фильтра на основе метода Калмана в результатах и производительности. Автор — Себастьян Маджвик (его интернет-магазин). Метод описан в статье на английском. Данная работа защищена в Университете г. Бристоля Перевода я не нашёл. Переводчик из меня так себе, особенно таких сложных текстов. Но нам же интересно, что за метод?

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


Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments17

Креативное программирование: openFrameworks — установка и пример визуализации музыки

Reading time12 min
Views27K


Когда вы последний раз программировали на C++?

Может быть это ваша каждодневная работа, а мой последний (до вчерашнего дня) проект на С++ был в далеком 2000 году — дипломный проект на базе Visual Studio 4.2 (хорошая, кстати, система была), и с тех пор перешёл в веб-разработку — скриптовые языки.

То есть сейчас я — начинающий на C++, но это не помешало мне за пару часов развернуть инфраструктуру, сделать и собрать мультимедийное приложение на C++, которое визуализирует музыку с разными эффектами. И в этом мне помогли:
  • открытый фреймворк для создания интерактивных приложений — openFrameworks
  • бесплатное IDE Code::Blocks

Посмотреть, что же у меня получилось

А начиналось всё так — после очередного прослушивания музыки от одного композитора из Самары, я подумал — было бы интересно попробовать сделать визуализацию музыки, и обратился к Денису Перевалову (кто не первый год занимается созданием разнообразных интерактивных арт/перформанс систем) — он мне ответил, что это делается без проблем на базе openFrameworks и что в примерах к его книге (а он автор книги по openFrameworks), есть реализация такой задачи.

То есть мне нужно было всего лишь — установить фреймворк, доработать и собрать пример на С++… Об этом процессе — установке, настройки, и кратком описании openFrameworks и будет эта статья.

openFrameworks — это система с помощью которой можно запрограммировать интерактивное мультимедийное приложение, то есть арт, перформансы и т.п., она бесплатная, открытая и кроссплатформенная система (linux, mac, win), и так же есть версии для ARM (к примеру для RPi), и сборки для iPhone и Android.

Кстати на КДПВ — одна из инсталляций на базе openFrameworks (Семь Видеогидов. выставлено на ВДНХ в экспозиции Политехнического музея. Москва, 2014).
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments6

Жизнь разработчика (в картинках)

Reading time1 min
Views65K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

Делаем универсальный ключ для домофона

Reading time5 min
Views541K
Заголовок получился слишком громким — и ключ не такой и универсальный, и домофон поддастся не любой. Ну да ладно.
Речь пойдет о домофонах, работающих с 1-wire таблетками DS1990, вот такими:



В интернете можно найти множество материалов о том, как читать с них информацию. Но эти таблетки бывают не только read-only. Человеку свойственно терять ключи, и сегодня ларёк с услугами по клонированию DS1990 можно найти в любом подземном переходе. Для записи они используют болванки, совместимые с оригинальными ключами, но имеющие дополнительные команды. Сейчас мы научимся их программировать.

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

Читать дальше →
Total votes 223: ↑208 and ↓15+193
Comments109

Как улучшить свой стиль программирования?

Reading time6 min
Views139K

Исповедь 1


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

Весь мой опыт программирования складывается из университетских работ и пары лет пребывания в различных компаниях. Критикующие меня люди неоднократно говорили мне, что в целом я разбираюсь в теме, так что я далеко не клинический случай, как можно было подумать. Однако, очевидно, я выработал совсем не те программистские привычки (как минимум, на взгляд работодателя) и мне нужно срочно изменить их. Везде, где бы я ни работал, мои решения, использующие иерархии мелких классов с делегированием поведения, признавались плохими. Говорят, будто так и надо писать, но это не так. Потому что всё это «как надо» может стоить мне работы.
Читать дальше →
Total votes 235: ↑202 and ↓33+169
Comments248

50 лучших цитат про Linux

Reading time5 min
Views110K
Доброго дня!

Наверное, многим известно, что 25 августа — день рождения Linux. Именно сегодня, 23 года назад, Линус Торвальдс отправил свое знаменитое письмо. В этот знаменательный день я хотел бы порадовать русскоговорящее сообщество переводом подборки цитат, которого, как выяснилось, до сегодняшнего дня в полном объеме не существовало.
Под катом — кладезь мудрости, сарказма, иронии и косяков перевода. Добро пожаловать!
Читать дальше →
Total votes 149: ↑126 and ↓23+103
Comments115

Когда я говорил…

Reading time1 min
Views189K
Когда я* говорил, что нужно вкладывать в сообщество и User Groups, вы вкладывали в теннисные столы. Теперь у нас много средненьких теннисистов и нет коммюнити.

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

Когда я говорил вкладывать деньги в обучение специалистов, вы продолжали раздавать деньги за рекомендации. Теперь у нас никто не работает, а все рекомендуют.
Читать дальше →
Total votes 632: ↑586 and ↓46+540
Comments443

Управляем бесколлекторными двигателями, господа

Reading time3 min
Views124K
Привет Хабровчане!
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.

А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.

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

STM32 и USB-HID — это просто

Reading time14 min
Views370K
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

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

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать
Total votes 103: ↑101 and ↓2+99
Comments105

Как потерять капитал

Reading time2 min
Views81K
Лично меня жизнь убедила, что люди это капитал. Особенно в нашей отрасли все зависит от людей. Если кто-то сомневается в этом, то очень рекомендую книгу шведов Кьелла А. Нордстрема, Йонаса Риддерстрале, «Бизнес в стиле фанк. Капитал пляшет под дудку таланта». Книга не новая, но, имхо, очень доходчиво разъясняет, почему Маркс, Ленин и Мао Дзэдун были правы в современном мире это именно так.

А коль скоро люди это капитал, то его надо беречь и приумножать, а не разбазаривать. А остаться без человеческого капитала очень просто. Вот, набор высказываний, которые могут заставить лучших ваших бойцов задуматься, а не пора ли обновить резюме на hh. И с вами останутся только неудачники.
Читать дальше →
Total votes 102: ↑73 and ↓29+44
Comments59

Микроэлектроника – мотивации псто

Reading time8 min
Views50K
image

Дисклаймер


Мне нравится заниматься микроэлектроникой. Причем я даже не уверен, что я правильно использую слово «микроэлектроника» — может быть, я занимаюсь совсем не ей. Может быть я занимаюсь схемотехникой. Или программированием. Или программированием микроконтроллеров. Или сборкой электронных устройств. Или еще бог знает чем. Но для себя то, что я делаю, я называю микроэлектроникой – мне лень пойти почитать определение и сопоставить с тем, что я делаю — да простят меня сведущие и, возможно, обидевшиеся.
Несмотря на то, что я занимаюсь микроэлектроникой и уделяю этому занятию достаточно много времени на протяжении почти трех лет – я все еще начинающий с массой больших пробелов в знаниях. Но кое-что у меня получается и я стараюсь разобраться в вопросах, в которых все еще не разбираюсь.
Решил я написать этот пост потому, что вижу с одной стороны большой интерес к «ардуино-постам», трепет при виде мигающего светодиода, а с другой стороны какой-то непонятный мне страх самостоятельно взять и сделать что-то. Ребята, от страхов нам надо избавляться.
Читать дальше →
Total votes 208: ↑192 and ↓16+176
Comments92

GPS-логгер i-gotU GT-820 Pro

Reading time4 min
Views16K
Пару лет я пользовался GPS-логгером i-gotU GT-200 (обзор как-то писал тут — habrahabr.ru/post/121266). Он тогда был куплен в большой спешке и, хотя и служил мне верой и правдой, всегда хотелось чего-то большего. После недавнего обзора двух логгеров у меня наконец-то желание заменить дошло до той степени, при которой совершается покупка.

Чего в идеале хотелось от логгера:
  • Хотя бы двое суток работы от одной зарядки. Можно больше.
  • Удобные кнопки управления. Ибо одна большая кнопка размером во весь корпус — плохое решение.
  • Карта памяти или большой объем встроенной памяти.
  • Работа от сменных аккумуляторов (АА или ААА) либо зарядка через стандартный microUSB.
  • Получение gpx-файлов на выходе.
  • Небольшие размеры.
  • Экранчик с информацией о времени, скорости и вообще всяких полезных штуках.
  • Голосовые заметки.


Почитав обзор и комментарии к нему, походив по ссылкам остановился на i-gotU GT-820 Pro.


Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments25

Об идеальном коде и суровой реальности

Reading time3 min
Views68K
Думаю, никто не будет спорить, что программный код должен быть чистым и «не пахнуть» (code smell), а паттерны проектирования и TDD должны стать верными спутниками любого мало-мальски грамотного разработчика на протяжении его нелегкой, но продуктивной карьеры. Все также знают, что цена ошибки в продакшине возрастает в десятки раз, а также то, что хорошие программисты оптимизируют код, а плохие — покупают новые сервера, а еще то, что 9 женщин не родят одного ребенка за месяц.



Было бы глупо спорить с тем, что писать хороший код — не правильно. Более того, внимательный читатель найдет среди моих прошлых публикаций целый серии статей на тему идеального кода. Но эту заметку я решил написать по причине того, что в последнее время очень часто сталкиваюсь с идеализацией процесса разработки и кучи советов в стиле «пофиг на все, главное — идеальный код». Далее несколько наблюдений и историй из жизни.
Читать дальше →
Total votes 123: ↑99 and ↓24+75
Comments101

Запускаем приложение ASP.NET MVC 4 на Ubuntu Server 12.04 + nginx

Reading time5 min
Views45K
Захотелось мне посмотреть, как работает реализация .NET на Linux. Решено было развернуть Ubuntu Server на нашем гипервизоре, установить свежий пакет mono и через nginx запустить ASP.NET MVC4 сайт.

На официальном сайте mono готовый пакет для Ubuntu только 2-х летней давности. С этого момента начались поиски в сети путей осуществления задуманного. Результатом полученного опыта стал скрипт для автоматического развертывания на голой Ubuntu Server 12.04.3 или 13.04 всего необходимого для запуска сайтов ASP.NET MVC4:
  • Соберем из исходников и установим mono 3.2.1
  • Добавим monoserve скрипт в init.d для автоматического запуска сайтов и управления ими.
  • Установим nginx 1.4.1
  • Создадим и настроим простой сайт, чтобы проверить работоспособность всей связки.

Сразу под катом находится строчка для автоматического выполнения всей процедуры, описанной в статье.
Читать далее...
Total votes 43: ↑42 and ↓1+41
Comments51

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity