Как стать автором
Обновить
-10
0
Vitold S @vit1251

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

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

STM32. Процесс компиляции и сборки прошивки

Уровень сложности Простой
Время на прочтение 30 мин
Количество просмотров 18K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

Читать дальше →
Всего голосов 124: ↑123 и ↓1 +122
Комментарии 67

Как симулировать плохую сеть под Linux, macOS и Windows

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

Clumsy 0.2

Все распределённые системы — базы данных, мобильные приложения, корпративные SaaS и так далее — следует разрабатывать с учётом сбоев. Например, компания Stripe во время тестов убивала случайные инстансы — и смотрела, что произойдёт. Компания Netflix рандомно уничтожала инстансы прямо в продакшне с помощью программы Chaos Monkey (проект Simian Army).

Симуляция сбоев — необходимое средство тестирования. Проблема в том, что ситуации не делятся только на чёрное и белое, Есть огромная «серая» зона, где сбои явно не выражены, а проявляются в плохих условиях сети: ненадёжное соединение, узкий канал, потери пакетов, высокая задержка, дубликаты пакетов и так далее.
Читать дальше →
Всего голосов 45: ↑45 и ↓0 +45
Комментарии 6

Ностальгия: роемся у «Танчиков» под капотом

Время на прочтение 12 мин
Количество просмотров 103K
Многие из нас выросли на «Танчиках», «Марио» и прочих нетленных шедеврах времён рассвета игровой индустрии. Приятно порой вспомнить, как днями напролёт резались с друзьями у экранов телевизоров, меняя джойстики как перчатки. Но время не стоит на месте, и одни интересы сменяются другими. Однако, порой любовь к старым-добрым игрушкам не угасает.
Я отношу себя к людям именно таким, и мой интерес к старым играм пошёл в сторону реверс-инжиниринга, что и привело меня в IT-сферу, где я и осел с концами.

Я хочу рассказать вам о том, что же под капотом у железных монстров из знаменитой игры Battle City (в простонародье «Танчики») с не менее знаменитой приставки Nintendo Entertainment System (сокращённо NES, в России более известен её китайский клон «Dendy»). Мне в своё время эта информация показалась довольно любопытной — надеюсь, такой же она покажется и вам.
Читать дальше →
Всего голосов 233: ↑232 и ↓1 +231
Комментарии 72

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2 +194
Комментарии 120

Эффективные знакомства

Время на прочтение 1 мин
Количество просмотров 5.5K
Сейчас поиск людей на сайтах знакомств, по эффективности сравним с работой золотоискателя на заброшенном месторождении. Может быть в этом и есть сермяжная правда — ценится то, что достается нелегко, да и рекламных показов больше. Но вот с пользовательской точки зрения, очень нужны инструменты группировки по сходным признакам. Например:

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

2. Интересы и группировка по степени совпадения в процентах, как музыкальные вкусы на last.fm. Собственно здесь, могут быть те же музыкальные или киношные вкусы. Не только на сайтах знакомств, например, в ЖЖ очень не хватает такой группировки по интересам.

Общая цель сводится к тому, чтобы пользователь находился в своем сегменте, в своем кругу общения, интересов и предпочтений. Как и в реальной жизни, только круг общения будет включать в себя значительно больше участников.
Всего голосов 86: ↑58 и ↓28 +30
Комментарии 78

SSH-аутентификация при помощи USB-ключа eToken Pro

Время на прочтение 3 мин
Количество просмотров 13K
В этой заметке я расскажу вам, как настроить SSH-аутентификацию при помощи USB-ключа eToken.

image
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 17

Мой Asus O!Play HDP-R1, как его увидел я

Время на прочтение 6 мин
Количество просмотров 1.1K
Этот обзор не претендует на полноту и всеобъемность. Это просто еще один взгляд со стороны. Описываю только то, что мне нужно и важно, на что обратил внимание.
Это обзор тех самых капелек дёгтя и блёсток, которые могут в совокупности оттолкнуть от покупки или наоборот, перевесить чашу весов в пользу гаджета.

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

PHPCI: Система непрерывной интеграции для PHP-проектов

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

Совсем недавно вышла из бета-версии новая система непрерывной интеграции для PHP-проектов с открытым исходным кодом — PHPCI (текущая версия — 1.1.0), она вскользь упоминалась в дайджесте PHP №21.

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

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

Оригинальный метод ухода от конфликта как вид психологической борьбы

Время на прочтение 3 мин
Количество просмотров 106K
Hикто не хочет конфликтовать. Когда конфликты становятся частыми, человек мучительно ищет выход. Кто-то пытается избежать общения, кто-то идет на прямой конфликт, кто-то ищет приемы и методы как правильно вести себя. Последним и посвящен данный пост, идея появления которого родилась после просмотра видео следующего топика «Как поставить человека на место: 10 реальных вопросов про давление в переговорах». Советы интересные и без сомнения при умелом использовании действенные, но есть еще один занятный метод ухода от конфликта под названием «психологическое айкидо», разработанный Литваком Михаилом Ефимовичем (психолог, психотерапевт, кандидат медицинских наук). Когда-то этот прием неплохо помог мне в общении с одним очень темпераментным начальником. Но все по порядку.
Подробности
Всего голосов 80: ↑55 и ↓25 +30
Комментарии 92

Последствия OpenSSL HeartBleed

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

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

Что произошло?

1 января 2012 года, Robin Seggelmann отправил, а steve проверил commit, который добавлял HeartBeat в OpenSSL. Именно этот коммит и привнес уязвимость, которую назвали HeartBleed.

Насколько она опасна?
Эта уязвимость позволяет читать оперативую память кусками размером до 64КБ. Причем уязвимость двусторонняя, это значит, что не только вы можете читать данные с уязвимого сервера, но и сервер злоумышленника может получить часть вашей оперативной памяти, если вы используете уязвимую версию OpenSSL.

Злоумышленник может подключиться к, предположим, уязвимому интернет-банку, получить приватный SSL-ключ из оперативной памяти и выполнить MITM-атаку на вас, а ваш браузер будет вести себя так, будто бы ничего и не произошло, ведь сертификат-то верный. Или просто может получить ваш логин и пароль.

Каков масштаб трагедии?

По моим оценкам, примерно ⅔ вебсайтов используют OpenSSL для HTTPS-соединений, и примерно ⅓ из них были уязвимы до сегодняшнего дня.

Уязвимость была/есть, как минимум, у:
  • 10 банков
  • 2 платежных систем
  • 8 VPN-провайдеров
  • mail.yandex.ru
  • mail.yahoo.com


Используя уязвимость, с mail.yandex.ru можно было получить письма пользователей вместе с HTTP-заголовками (и, подставив cookie, зайти под этим пользователем), а, например, в АльфаБанке получать незашифрованные POST-данные с логином и паролем от Альфа-Клик (интернет-банкинг).
Читать дальше →
Всего голосов 201: ↑194 и ↓7 +187
Комментарии 194

Введение в D3

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

D3.js (или просто D3) это JavaScript-библиотека для обработки и визуализации данных. Она предоставляет удобные утилиты для обработки и загрузки массивов данных и создания DOM-элементов. Эта заметка описывает работу с основными методами библиотеки, она подойдёт для изучения основ библиотеки и погружения в её логику и возможности.

Для понимания статьи пригодятся знания JS, HTML и CSS.

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

JPHP — Новый движок php для Java VM + JIT

Время на прочтение 6 мин
Количество просмотров 49K
Представляю вам свой open-source проект — JPHP. Это альтернативная реализация PHP для JavaVM с поддержкой JIT. Я начал проект в одиночку в октябре 2013 года и за 4 месяца реализовал компилятор php в байткод JVM. Язык поддерживается на уровне PHP 5.3, частично поддерживаются возможности PHP 5.4 и 5.5. По своей идеологии проект напоминает JRuby и Jython.

Я подготовил небольшую презентацию, которая расскажет о проекте и не отнимет у вас много времени:


Читать дальше →
Всего голосов 190: ↑185 и ↓5 +180
Комментарии 108

Логика мышления. Часть 1. Нейрон

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


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

В настоящем цикле статей планируется рассказать о той концепции интеллекта над которой мы сейчас работаем и продемонстрировать некоторые решения, являющиеся принципиально новыми в сфере моделирования работы мозга. Но чтобы повествование было понятным и последовательным оно будет содержать не только описание новых идей, но и рассказ о работе мозга вообще. Какие-то вещи, особенно в начале, возможно покажутся простыми и общеизвестными, но я бы советовал не пропускать их, так как они во многом определяют общую доказательность повествования.
Читать дальше →
Всего голосов 62: ↑53 и ↓9 +44
Комментарии 23

Stackless Python и Concurrence

Время на прочтение 8 мин
Количество просмотров 14K
Перед тем, как перейти собственно к возможностям Stackless и Concurrence, рассмотрим самый простой способ написать сетевое приложение, обрабатывающее несколько одновременных соединений:

socket()
bind()
listen()
accept()
fork() ->
    read()
    write()
    ...
    close()

Под каждое новое входящее соединение процесс создаёт свою копию через fork(). Это чрезвычайно накладный способ, у которого, к тому же, есть сложности с синхронизацией между процессами. В простом случае они решаются через создание каналов (pipes) между родительским и дочерним процессами и сериализацию данных. В более сложных потребуются примитивы межпроцессной синхронизации. Вспомним ещё про затраты на создание, разрушение и переключение процессов. Это очень ресурсоёмкие операции — как по памяти, так и по вычислительной мощности. Поэтому обработать много одновременных соединений будет весьма сложно.
Читать дальше →
Всего голосов 66: ↑62 и ↓4 +58
Комментарии 58

Semantic UI — почти альтернатива Bootstrap

Время на прочтение 1 мин
Количество просмотров 81K
image
Наткнулся сегодня на одну интересную штуку.
Semantic UI — это фреймворк для создания переносимых интерфейсов, который поможет повторно использовать элементы UI в своих проектах. Такая себе альтернатива Bootstrap.
Небольшой пример — если вы хотите добавить в свой проект что-то похожее на кнопку

просто воспользуйтесь следующими элементами:
semantic add button
semantic add icon
Читать дальше →
Всего голосов 85: ↑79 и ↓6 +73
Комментарии 40

Реализация голосового меню на perl через usb модем Huawei e1550

Время на прочтение 14 мин
Количество просмотров 10K
Совсем недавно я написал пост в котором дал немного теории, и описал практическую реализацию скрипта производящего голосовой обзвон (оповещение) абонентов по списку через usb модем Hyawei e1550. В одном из комментариев был задан вопрос о том как получить во время голосового соединения данные о нажатии кнопок на телефоне абонента. Детальное изучение этого вопроса и привело к созданию этого поста.

В данной статье будет представлена реализация голосового меню, с функциями:
— записи голосового сообщения
— выполнения системных команд
Все это стало возможным благодаря реализации декодера DTMF сигналов основанного на алгоритме Гёрцеля.
В качестве бонуса — архив исходниками голосового меню.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 4

NetworkX для удобной работы с сетевыми структурами

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

Рассматривается библиотека NetworkX предназначенная для создания, манипуляции и изучения структуры, динамики и функционирования сложных сетевых структур.
Рассмотрены основы использования библиотеки в качестве инструмента обучения, прикладного программирования или научных исследований.
Основой для описания библиотеки служат официальные материалы с сайта.
Рассмотрена версия библиотеки 1.5.
Читать дальше →
Всего голосов 59: ↑56 и ↓3 +53
Комментарии 35

Структуры данных, PHP. Часть вторая

Время на прочтение 11 мин
Количество просмотров 39K
Продолжаю совмещать приятное с полезным и переводить. Сегодня речь зайдет о кучах (heaps) и графах. Как обычно, материал скорее подойдет новичкам — большая часть информации, если не вся, уже где-то так или иначе освещалась.

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

UPD: Добавил сравнение производительности
Читать дальше →
Всего голосов 37: ↑29 и ↓8 +21
Комментарии 18

Профилирование нагрузки на файловую систему с помощью iostat и gnuplot — заметки дилетанта

Время на прочтение 9 мин
Количество просмотров 90K
Зачастую работа «в поле» требует сбора и анализа информации на сайте заказчика в условиях наличия крайне скудного списка утилит. В частности собрать информацию об использовании системы ввода-вывода в течении дня.

В статье я попробую показать, как располагая только iostat и gnuplot можно попробовать провести анализ системы и какие выводы можно сделать.

Я не претендую на доскональное владение предметом и точное использование терминов. Более того, я постараюсь говорить «обычным» языком и не бросаться терминами.

Все описанное ниже есть плод опыта, ошибок, гугления, курения манов и прочая
Читать дальше →
Всего голосов 47: ↑43 и ↓4 +39
Комментарии 10

Создатель wFido открывает чтение FTN.SU без регистрации, внедряет поддержку гипертекстового Фидонета

Время на прочтение 2 мин
Количество просмотров 8.1K
Макс Лушников (2:5020/1519), создатель популярной WebBBS под названием wFido, три дня назад (21 апреля 2013 г.) объявил о том, что на сайте FTN.SU можно будет пользоваться его системою без предварительной регистрации.

Вид заглавной страницы FTN.SU отчасти напоминает своему зрителю о Гугле:

[вид заглавной страницы FTN.SU]

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

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

Информация

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

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

Backend Developer, Embedded Software Engineer
Lead
JavaScript
React
Redux
Node.js
Golang
Debian
Rust
Git
Python
Linux