Pull to refresh
39
0
Alexander Semion @Spin7ion

Инженер прикладной математики

Send message

Steam Protocol v2

Reading time17 min
Views22K
Steam Logo

Завершающая статья цикла, самая интересная и самая объемная:


В статье будут рассмотрены протоколы обмена данными клиента Steam с различными серверами:


В очередной раз напомню, что рассматриваемые протоколы устарели и в настоящее время не используются (за исключением GDS и Config — для совместимости).

Все алгоритмы представлены в моем репозитории.
Читать дальше →

Иконические сайдкики всех времён и народов на одной картинке

Reading time1 min
Views15K
Поразглядывать на обеденном перерыве: сайт Morphsuits собрал всех самых знаменитых героев второго плана в одной большой картинке.


Длиннюююющая картинка под катом

19 советов по повседневной работе с Git

Reading time14 min
Views289K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

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

Заметка о калибровке датчиков положения в домашних условиях

Reading time10 min
Views24K
Для некоторых датчиков ускорения требуется дополнительная калибровка нуля после монтажа на плату. Когда я увидел несколько исходников с калибровкой датчиков ускорения, где составляющая G учитывалась просто путём вычитания из оси Z величины = 9,8 м/с2 — появилась идея написать данную заметку.


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

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Reading time39 min
Views172K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


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

Создание искусственного интеллекта для игр — от проектирования до оптимизации

Reading time32 min
Views143K

Сегодня – первое сентября. А значит, многие читатели хабры начинают прохождение нового уровня одной древней известной игры – той самой, в которой требуется прокачать интеллект, и, в итоге, получить магический артефакт – аттестат или диплом, подтверждающий ваше образование. К этому дню мы сделали реферативный перевод статьи про реализацию искусственного интеллекта (ИИ) для игр – от его проектирования до оптимизации производительности. Надеемся, что она будет полезна как начинающим, так и продвинутым разработчикам игр.
Читать дальше →

Мультиселект и автокомплит на AngularJS

Reading time4 min
Views25K
Со списками множественного выбора на Ангуляре всегда было неважно. Существующие решения либо обертки над jQuery-плагином, либо выглядят как не пойми что, либо просто корявы. И у всех естественно особое уникальное АПИ, как будто пользователям делать больше нечего как вникать в ход мыслей разработчиков каждого плагина. Меня такое положение дел не устроило, поэтому написал свой велосипед. Спустя год он дозрел до публикации.

Та-дам! (и забавная история вконце)
Читать дальше →

June – интеллектуальная духовка от создателей iPhone, FitBit и GoPro

Reading time4 min
Views7.3K
Талантливые люди талантливы во всем – это древнюю истину еще раз подтвердили создатели невероятной инновационной духовки June – единственной в своем роде печи, способной понимать, чего вы от нее хотите даже если вы полный нуб в кулинарии, умеющей обучаться и совершенствовать свое кулинарное мастерство, готовой обеспечивать доступ к функциям, о которых домохозяйкам еще вчера даже и мечтать не приходилось!

Над созданием интеллектуальной и аппаратной начинки “June Intelligent Oven” трудились такие безусловные авторитеты, как Никхил Бхогал (Nikhil Bhogal), разрабатывавший камеры для нескольких поколений iPhone и сам маэстро Мэтт ван Хорн (Matt van Horn), не нуждающийся в представлении. О том, насколько далека от совершенства оказалась привычная всем нам микроволновка и чего нам ожидать от ее футуристической преемницы уже в самом ближайшем будущем мы расскажем ниже…

June Intelligent Oven
Читать дальше →

Автоматическая аутентификация Android-устройства в Wi-Fi Московского Метро

Reading time9 min
Views36K
Как известно, практически во всех вагонах Московского Метро действуют Wi-Fi точки доступа, с помощью которых пользователи могут получить доступ в интернет и приятно скоротать время поездки в метро с работы домой: почитать новости, проверить почту, посмотреть котиков на YouTube и т.д.

Каждому устройству, прежде чем ему будет предоставлен доступ к сети интернет, необходимо аутентифицироваться. В первый раз пользователю на указанный номер телефона посылается СМС с кодом, после чего система запоминает MAC-адрес устройства и в дальнейшем пользователю для аутентификации требуется только нажать на ссылку «Войти в интернет» и немного подождать.

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

Если в метро вы не частый гость, то подобная схема может и не вызвать у вас раздражения, однако при ежедневном использовании она все таки надоедает, поэтому, как говорил один известный и харизматичный политик: «Хватит это терпеть!», сегодня мы будем автоматизировать аутентификацию в Московском метро.
Читать дальше →

Самодельный мобильный телефон

Reading time1 min
Views27K


В салонах сотовой связи выбор мобильных телефонов очень ограничен: либо совсем «тупые» звонилки, либо смартфоны с большими экранами. Но зачем покупать мобильный телефон в магазине, если можно сделать свой собственный телефон? Так подумал американский программист Кевин Линах (Kevin Lynagh) — и воплотил мечту в реальность.

В презентации на конференции !!Con 2015 Кевин рассказал, как ему это удалось.
Читать дальше →

Чего хотят координаторы доменных зон?

Reading time4 min
Views18K
Для того, чтобы зарегистрировать домен, нужны следующие данные:


  • Владелец домена;
  • Администратор;
  • Технический контакт;
  • Контакт для счетов;
  • Группа nameserver'ов.

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

Домены: .cat, .scot, .gal, .eus


Текстовое поле: intendedUse — для описания цели использования домена. Мало ли что!


Домены: .nz


Текстовое поле: authCode
Если ты хочешь зарегистрировать hobbit.nz и есть уже домен hobbit.co.nz, то будь добр, введи код авторизации, иначе ты получишь… ничего не получишь (уточнил, сейчас требование уже снято, но пункт оставил в качестве примера).
Читать дальше →

Использование фильтра Калмана для определения производных измеряемой величины

Reading time3 min
Views17K
Недавно занимался решением задачи передачи вектора состояния из имеющейся модели движения в специальное устройство формирования навигационного сигнала. При этом существовали следующие ограничения:
  • модель движения примерно периодически отправляет ранее рассчитанные координаты и скорость объекта с меткой времени в известном формате по UDP;
  • имитатор навигационного сигнала умеет устанавливать TCP-соединение и через него принимать вектор состояния, включающий кроме координат и скоростей еще ускорения и джерки — производные ускорения или третьи производные координат;
  • при скоростях до 10^4 м/с возмущающее ускорение не превышает 0.001 м/с2;
  • координаты можно считать независимыми;
  • в имитатор навигационного сигнала должен поступать прогноз вектора состояния на заданный момент в будущем.

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

Запущена первая в мире ММО-стратегия для программистов

Reading time3 min
Views46K
Почему первая? Потому что раньше были игры для программистов, и были стратегические ММО-игры. Но до нас еще никто не делал игру, которая одновременно и является ММО с единым постоянным миром, и при этом целиком и полностью ориентирована на программистов.

В ноябре прошлого года мы запустили краудфандинговую кампанию на Indiegogo, собранные средства с которой позволили доработать прототип до полноценного продукта. Весь июнь и июль получившие приглашение игроки тестировали версию Early Preview. И вот, теперь мы объявляем о публичном запуске этого необычного проекта. Встречайте Screeps!



Под катом небольшое описание, отзывы и технические подробности проекта.
Читать дальше →

Интерполяция данных: соединяем точки так, чтобы было красиво

Reading time7 min
Views167K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Неочевидные проблемы с быстродействием в Doctrine, связанные с гидрацией объектов

Reading time2 min
Views11K
Недавно я реализовал функции API в проекте с бэк-эндом Symfony2, использущем Doctrine в качестве ORM.

И, как это иногда бывает, скороость отрабатывания не вполне меня устроила. На несложный запрос ответ генерировался аж 7,2 сек.



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

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

CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5

Reading time4 min
Views268K
Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.
Читать дальше →

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time8 min
Views88K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →

Создание и настройка сервера Minecraft

Reading time13 min
Views315K
Minecraft Selectel

Minecraft сегодня принадлежит к числу самых популярных сетевых игр. За неполных три года (первый официальный релиз состоялся осенью 2011 года) у него появились миллионы поклонников по всему миру.

Разработчики игры сознательно ориентируются на лучшие образцы двадцатилетней давности, когда многие игры были по сегодняшним меркам примитивными с точки зрения графики и несовершенными с точки зрения юзабилити, но при этом — по-настоящему захватывали.
Читать дальше →

Немного о Steam Web Api

Reading time3 min
Views199K


Сервис цифровой дистрибуции Steam от компании Valve становится всё более популярным среди игроков. По состоянию на январь 2013, через Steam распространяется более трёх тысяч товаров, на которые действуют ежедневные, срединедельные и скидки на выходные дни, а количество зарегистрированных аккаунтов превысило 60 миллионов.

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

Когда не помогает ЦАП. Цифровые потенциометры в деталях. Часть первая

Reading time9 min
Views131K


Прогресс не обошёл стороной не только велосипед. Сегодня традиционные переменные и подстроечные резисторы в очень многих приложениях уступают место цифровым сопротивлениям. В англоязычных источниках их называют digital potentiometer, RDAC или digiPOT. Область применения этих устройств гораздо шире регулировки уровня звукового сигнала. В частности они приходят на помощь в очень многих случаях, когда требуется изменять параметры обратной связи, что трудно реализовать с помощью традиционных ЦАП.

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

Изначально я хотел написать краткую статью, но в результате углубленного изучения темы материал с трудом уместился в две части. Сегодня я постараюсь рассказать об архитектуре данных устройств, их возможностях, ограничениях использования и тенденциях развития. В заключении вскользь затрону тему областей применения, поскольку конкретные примеры практической реализации схем на их основе будут рассмотрены во второй части. МНОГО примеров!

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

P.S.Так получилось, что уже вышла ещё одна статья из этой серии и в ней пример всего один, зато подробно разобранный. Для остальных обещанных примеров придётся писать третью.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity