Как стать автором
Обновить
-12
@zhigalinread⁠-⁠only

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

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

Консолька в роботе на Ардуине

Время на прочтение10 мин
Количество просмотров12K
Переслать роботу на Ардуине несколько байт через вайфай, блютус, последовательный порт или любой другой канал связи в виде команды, а потом принять несколько байт в качестве ответа труда не составляет: достаточно скачать скетч с примером обмена данными «здравствуй мир» и вставить в него несколько строк своего кода, который будет выполнять желаемые действия.

Однако с развитием проекта область вспомогательного кода, который отвечает за связь с внешним миром, раздувается: появляется логика, отделяющая один пакет данных от другого, разрастается лес проверок, что за команда пришла, какие у нее параметры, как её правильно выполнить, что делать, если пакет данных не корректен, если данные пришли не полностью, если они не умещаются в отведенных для них буферах памяти и так далее. Код, обслуживающий вспомогательную логику, переплетается с главным кодом, выполняющим интересную и полезную работу. Заменить один канал связи на другой (например, добавить к последовательному порту вайфай) без переработки накопившейся кодовой базы становится весьма проблематично.

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

Исходная задача: упростить процесс создания прошивки для роботов, которые будут работать в режиме «вопрос-ответ». Главный скетч должен содержать полезный код (что, собственно, должен делать робот) и минимальное количество вспомогательных конструкций. Все вспомогательные транспортно-протокольные блоки окуклить в библиотеку и вынести за пределы внимания инженера.

В качестве побочного эффекта получилась своеобразная командная строка, работающая внутри Ардуины, если подключиться к ней через монитор последовательного порта и отправлять команды вручную:

image

Иммиграция вместе с Крымом в Россию

Время на прочтение4 мин
Количество просмотров31K
Увлекшись чтением иммиграций на Хабре, решил рассказать историю одного весьма неординарного переезда из одной страны в другую.

Откуда — куда


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

image
Читать дальше →

MIMB – Мульти-установочная и мульти-загрузочная флэшка

Время на прочтение2 мин
Количество просмотров58K
Привет, Хабрачитатели!

В повседневной практике часто нужен набор инструментов – Linux и иногда Windows LiveCD, а также установочные диски различных дистрибутивов. Диски легко подвергаются механическим повреждениям. Учитывая, что набор используемого инструментария и дистрибутивов у каждого не так велик (во избежания развода зоопарка) и зачастую вполне умещается на USB-носителе до 4G, целесообразно поместить все на одну флэшку.
К вашему вниманию флэшка для загрузки Live сборок Linux и Windows и установки дистрибутивов Linux. Подготовлен образ .img, который легко разворачивается при помощи dd. Кому интересно, подробности под катом.
Читать дальше →

Может, хватит уже поливать грязью CSS на конференциях разработчиков?

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

На почти каждой конференции разработчиков вот-вот будет доклад, в котором будет вот эта «смешная гифка»:


«смешная гифка»


Питер Гриффин из одноименного мультсериала пытается закрыть жалюзи и запутывает их напрочь, дергая за веревки как попало, пока не выходит из себя и срывает их с окна. Надпись на картинке: «CSS».


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


Читать далее

Обзор бесплатных инструментов для пентеста web-ресурсов и не только v2

Время на прочтение8 мин
Количество просмотров195K
Как-то давно я уже писал об этом, но немного скудно и сумбурно. После я решил расширить список инструментов в обзоре, добавить статье структуры, учесть критику (большое спасибо Lefty за советы) и отправил ее на конкурс на СекЛаб (и опубликовал ссылку, но по всем понятным причинам ее никто не увидел). Конкурс закончен, результаты объявили и я с чистой совестью могу ее (статью) опубликовать на Хабре.

Бесплатные инструменты пентестера веб-приложений


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

  1. Сетевые сканеры
  2. Сканеры брешей в веб-скриптах
  3. Эксплойтинг
  4. Автомазация инъекций
  5. Дебаггеры (снифферы, локальные прокси и т.п.)

Читать дальше →

Структуры данных для самых маленьких

Время на прочтение22 мин
Количество просмотров345K
James Kyle как-то раз взял и написал пост про структуры данных, добавив их реализацию на JavaScript. А я взял и перевёл.

Дисклеймер: в посте много ascii-графики. Не стоит его читать с мобильного устройства — вас разочарует форматирование текста.


Читать дальше →

Учим английский дешево и эффективно

Время на прочтение9 мин
Количество просмотров162K
Английский можно выучить дешево, иногда даже бесплатно. В этой статье я расскажу про личный опыт: какой софт и ресурсы в Интернет оказались максимально эффективными для меня, и как ими правильно пользоваться.

Если вы не готовы тратить на английский хотя бы 2 часа в день, то дальше можно не читать.
Читать дальше →

Непривычный Китай: портативные усилители SMSL

Время на прочтение5 мин
Количество просмотров31K
Привет, Гиктаймс! Когда кажется, что звуковые возможности смартфона или компьютера задействованы по-максимуму, на помощь приходят они — портативные усилители. Согласитесь, с большим полноценным ЦАП с усилителем по улице не походишь, а качественную музыку слушать хочется. Когда речь заходит о недорогих усилителях для наушников, на ум чаще всего приходят такие компании, как Fiio, однако, и другие производители, как оказалось, способны предложить решения, достойные внимания. Одними из таких и являются портативные усилители от S.M.S.L.


Читать дальше →

Автоматизация тестирования Android приложений

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

Тестирование является важной составляющей процесса разработки приложения. Для Android тестирование особенно важно, так как устройства сильно отличаются друг от друга:
  • Размером и разрешением экрана.
  • Версией Android.
  • Форм-фактором.
  • Системой команд процессора.
  • Наличием фронтальной камеры, NFC, внешней клавиатуры, и т.д.

Поэтому тестировать приложение приходится на множестве устройств.
В процесс тестирования входят различные виды тестирования. Рассмотрим, как происходит процесс функционального тестирования приложения вручную. Тестировщик устанавливает на устройство приложение, вдумчиво проверяет всю функциональность, затем возвращает устройство в первоначальное состояние. И так для каждого приложения и каждого устройства. Очевидный недостаток такого способа – большие затраты времени для регулярного тестирования.
Очевидный плюс автоматизированного тестирования – его можно регулярно проводить без особых затрат. Например, каждую ночь тестировать свежий билд приложения на всем множестве имеющихся устройств, а утром анализировать результаты и исправлять ошибки.
В данной заметке будут рассмотрены средства реализации автоматического тестирования. Рассматриваются только инструменты, входящие в Android SDK или распространяющиеся под Open Source лицензией.
Читать дальше →

Трёхпозиционный checkbox (aka tristate) без скриптов и смс

Время на прочтение2 мин
Количество просмотров32K
Понадобилось мне недавно реализовать трёхпозиционный переключатель. Ну это такой, у которого вместо двух состояний «включено/выключено», есть ещё промежуточное состояние. Это часто используется, например, в чекбоксе «выбрать всё», для того чтобы показать, что выбраны не все элементы, а только часть. В общем, захотелось такое реализовать, да чтобы без скриптов.
Читать дальше →

Массивы в РНР 7: хэш-таблицы

Время на прочтение22 мин
Количество просмотров37K
Хэш-таблицы используются везде, в каждой серьёзной С-программе. По сути, они позволяют программисту хранить значения в «массиве», индексируя его с помощью строк, в то время как в языке С допускаются только целочисленные ключи массива. В хэш-таблице строчные ключи сначала хэшируются, а затем уменьшаются до размеров таблицы. Здесь могут возникать коллизии, поэтому нужен алгоритм их разрешения. Существует несколько подобных алгоритмов, и в РНР используется стратегия связных списков (linked list).

В Сети есть немало замечательных статей, подробно освещающих устройство хэш-таблиц и их реализации. Начать можно с http://preshing.com/. Но имейте в виду, вариантов структуры хэш-таблиц — несметное множество, и ни один из них не совершенен, в каждом есть компромиссы, несмотря на оптимизацию циклов процессора, использования памяти или хорошее масштабирование потокового окружения (threaded environment). Одни варианты лучше при добавлении данных, другие — при поиске и т. д. Выбирайте реализацию в зависимости от того, что для вас важнее.

Хэш-таблицы в РНР 5 подробно рассмотрены в материале phpinternalsbook, который я написал вместе с Nikic, автором хорошей статьи про хэш-таблицы в РНР 7. Возможно, её вы тоже сочтёте интересной. Правда, она писалась до релиза, поэтому некоторые вещи в ней слегка отличаются.

Здесь же мы подробно рассмотрим, как устроены хэш-таблицы в РНР 7, как с ними можно работать с точки зрения языка С и как ими управлять средствами РНР (используя структуры, называемые массивами). Исходный код в основном доступен в zend_hash.c. Не забывайте, что хэш-таблицы мы используем везде (обычно в роли словарей), следовательно, нужно проектировать их так, чтобы они быстро обрабатывались процессором и потребляли мало памяти. Эти структуры решающе влияют на общую производительность РНР, поскольку местные массивы не единственное место, где используются хэш-таблицы.
Читать дальше →

Букмарклет для создания многострочного статуса вконтакте

Время на прочтение1 мин
Количество просмотров836
Недавние статьи на Хабре, посвященные созданию букмарклетов и о небольших хаках вконтакте (не могу что-то найти… в рссе читал) сподвигли меня сделать букмарклет, который бы позволял вводить многострочные статусы — всегда хотелось поставить в статус пару тройку строчек из песни :)
Что получилось?

Букмарклеты

Время на прочтение4 мин
Количество просмотров16K
Всем привет, сегодня речь пойдет про использование букмарклета, или закладки для браузера.

Кто не знает, это такая штука, которую можно добавить в закладки (да, я сегодня дебютирую в роли Капитана Очевидность :) и, при нажатии на нее, произвести какой-нибудь эффект.

Примером может служить герой сегодняшней заметки, который расположен по адресу http://ulizko. com/demo/allthat/. Инструкция по применению:
  1. Перетащите ссылку «link» на панель закладок или щелкните по ней правой кнопкой мыши и выберите пункт меню «добавить в избранное».
  2. Зайдите на какой-нибудь сайт, вроде http://twitter. com, и нажмите на эту закладку (ну или на избранное).


Появится окошко, в которое можно ввести данные. Вообще, предполагается, что это будет интерфейс добавления желаний в вишлисты (предварительно созданные на каком-то сайте), настроить триггеры оповещений, и прочее. Есть даже какая-то валидация начального уровня. И налажен обмен данными с сервером — то есть, на любом домене к вам приходит список ваших вишлистов, а ваше новое желание с любого домена долетит на крыльях любви к вишлисту и уютно устроится в его объятьях1.

Но. Мы сегодня не об этом, а о том, как делать такие штуки в принципе.

Интересно?

Как на самом деле устроена торговля на бирже, и как ее можно улучшить: Простой алгоритм (часть 3)

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


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

Ломаем сбор мусора и десериализацию в PHP

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


Эй, PHP, эти переменные выглядят как мусор, согласен?
Нет? Ну, посмотри-ка снова…


tl;dr:
Мы обнаружили две use-after-free уязвимости в алгоритме сбора мусора в PHP:

  • Одна присутствует во всех версиях PHP 5 ≥ 5.3 (исправлена в PHP 5.6.23).
  • Вторая — во всех версиях PHP ≥ 5.3, включая версии PHP 7 (исправлена в PHP 5.6.23 и PHP 7.0.8).

Уязвимости могут удалённо применяться через PHP-функцию десериализации. Используя их, мы отыскали RCE на pornhub.com, за что получили премию в 20 000 долларов плюс по 1000 долларов за каждую из двух уязвимостей от комитета Internet Bug Bounty на Hackerone.
Читать дальше →

Жонглируем версиями PHP в системе

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

Проблема “ хочу новую версию %software% на моем стареньк… стабильном Debian/CentOS…” так же стара, как *nix-мир. Способов добиться желаемого хватает. Есть масса решений как притащить в систему несколько версий одного и того же софта. Но дальше хочется не просто иметь ещё одну версию, но и управлять тем, какая из версий доступна в системе по умолчанию, для конкретных приложений или пользователей.


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


Читать дальше →

Умная компьютерная розетка на Arduino своими руками

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

image


Предисловие


Умная розетка на Arduino, что может быть проще. Основной целью данного проекта было разработать розетки с беспроводным управлением, а также «автоматизировать» вход в Windows. Мотивирующая составляющая – разобраться, что такое RFID–метки и как с ними работать. В итоге было разработано два устройства – деблокиратор, который считывает карточки и собственно умная розетка, которая принимает сигнал «включиться» от деблокиратора. Если я Вас заинтересовал прошу к прочтению.

Читать дальше →

Superbook, превращающий смартфон в 11" ноутбук, набрал на Kickstarter $1,5 млн

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


В конце прошлого месяца на Kickstarter была запущена кампания по сбору средств на Superbook — устройство, позволяющее превратить смартфон в 11" ноутбук. Некоторые детали работы такого девайса уже публиковались на Geektimes. В частности, известно, что Superbook представляет собой своеобразную болванку с аккумулятором. клавиатурой и качественным дисплеем. Для начала работы смартфон нужно подключить к Superbook, и на дисплее устройства тут же отобразится знакомый интерфейс Android.

Данные транслируются на экран «ноутбука» при помощи специального приложения. Каких-то безграничных возможностей разработчики Superbook не предлагают, но пользователь такой системы может работать с документами, играть в игры и даже программировать. И все это — на устройстве ценой всего $100. Небольшой квази-ноутбук при таком раскладе вполне может заменить собой обычный для тех пользователей, кому нужны лишь электронная почта, документы, нетребовательные игрушки. Этот проект собрал 3299% требуемой суммы, $1,6 млн вместо планируемых $50000. Собранная сумма позволит разработчикам добавить ряд плюшек к итак неплохой системе.
Читать дальше →

Omega2: самый маленький в мире микрокомпьютер с Linux и Wi-Fi

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


«Интернет вещей» все плотнее входит в нашу жизнь. Конечно, разработчики не могут обойти своим вниманием столь бурно развивающуюся сферу. Но для того, чтобы создавать соотвествующие разработки, необходимы надежные инструменты. Одним из них может стать одноплатник Omega2. Его создатели позиционируют свой микрокомпьютер под управлением Linux как самый маленький в мире. На «борту» микрокомпьютера есть модуль Wi-Fi, а стоимость всей системы — всего $5.

На Kickstarter этот проект уже давно собрал нужную сумму. Она многократно превышена — вместо $15000 собрано уже $307471. И хотя до конца сборов еще 11 дней, вероятность того, что девайс вскоре попадет к заказчикам и в магазины, очень велика.
Читать дальше →

Исследуем вопрос наказаний 2.0

Время на прочтение11 мин
Количество просмотров60K
Этот материал будет полезен в первую очередь тем, кто много занимался программированием и вдруг внезапно стал вынужден заниматься управлением проектами и людьми. С год назад я рассказал про наказания на конференции, а солнышки из Битрикса сделали текстовую версию для #habr. К сожалению, потеряв в точности, четкости и правильности акцентов. За год материала добавилось. В конце — чеклист для ленивых :)

Итак. Если вы не садист или моральный урод, а ваши сотрудники — не мазохисты, то сомневаюсь, что кому-то из вас наказания доставляют удовольствие. Мне — нет.
image
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Savona, Liguria - Savona, Италия
Зарегистрирован
Активность