Как стать автором
Обновить
72
0
Никита Логос @nikitalogos

Разработчик ПО — Python, web

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

Джефф Дин из компании Google — это Чак Норрис нашего времени

Время на прочтение4 мин
Количество просмотров225K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →
Всего голосов 395: ↑364 и ↓31+333
Комментарии123

Git subtree в деталях

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

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


Целью настоящей работы является практическое изучение средства управления поддеревьями Git.



Начиная с ревизии 1.7.11 upstream-репозиторий Git, в каталоге contrib/subtree, содержит средство автоматизации работы с поддеревьями.


Сервис git-subtree(1) фактически является полезной надстройкой, использующей функции git-read-tree(1) и git-write-tree(1). Поэтому ссылки в командах git-subtree(1) add/pull/push:

  git subtree add --prefix=<subdir> <remote> <ref>

могут представлять собой, как имена веток, так и имена тегов удаленного репозитория.


Кроме того, если заранее добавить удаленный репозиторий в конфигурационный файл локального репозитория .git/config, с помошью команды:


bash-4.4$ git remote add build-system ../../remote/build-system.git

где build-system является именем удаленного репозитория ../../remote/build-system.git, то в дальнейшем, при использовании команд git-subtree(1) add/pull/push, мы сможем ссылаться на upstream-репозиторий remote/build-system.git по имени.


На данный момент git-subtree(1) практически не развивается, а лишь поддерживается в актуальном состоянии для текущей степени развития проекта Git.


Однако git-subtree(1) является наиболее популярным и мощным средством работы с поддеревьями.


Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии6

HTTP/3 от А до Я: основные концепции. Часть 1

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

image
Фото Florencia Viadana, Unsplash.com


После почти пятилетних разработок протокол HTTP/3 наконец приближается к окончательному выпуску. Предыдущие итерации уже доступны как экспериментальная функция, но в 2021 году мы ждём широкого распространения протокола. Что такое HTTP/3? Зачем выпускать его так рано после HTTP/2? Как его можно или нужно использовать? Как он влияет на производительность?

Читать дальше →
Всего голосов 79: ↑78 и ↓1+95
Комментарии48

Создание шейдеров

Время на прочтение27 мин
Количество просмотров194K
Освоить создание графических шейдеров — это значит взять под свой контроль всю мощь видепроцессора с его тысячами параллельно работающих ядер. При таком способе программирования требуется другой образ мышления, но раскрытие его потенциала стоит потраченных усилий.

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


Сцена из Minecraft, до и после добавления нескольких шейдеров.

Задача этого туториала


Иногда программирование шейдеров представляется загадочной чёрной магией и его часто понимают неправильно. Существует множество примеров кода, демонстрирующих создание невероятных эффектов, но в которых практически нет объяснений. В своём руководстве я хочу восполнить этот пробел. Я сосредоточусь в основном на базовых принципах создания и понимания кода шейдеров, чтобы вы смогли с лёгкостью настраивать, сочетать или писать свои собственные шейдеры с нуля!
Всего голосов 105: ↑105 и ↓0+105
Комментарии27

Вы неправильно пишете животных

Время на прочтение5 мин
Количество просмотров382K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Всего голосов 442: ↑438 и ↓4+434
Комментарии352

OpenStreetMap как источник геоданных

Время на прочтение17 мин
Количество просмотров76K
В работе программиста иногда возникает потребность в геоданных. Для этого можно использовать OpenStreetMap (OSM). Привлекательность OSM — в возможности совершенно легально использовать качественную картографическую информацию.

Цель публикации — разобрать на рабочих примерах процесс извлечения геоданных OSM. В результате будет получен программный код (на C#), который можно собрать в Visual или Xamarin Studio, выполнить его на разных ОС (под Mono) и получить результат в форматах CSV и geoJSON. Ограничений на размер обрабатываемых OSM-данных нет (от минимального до полного). Публикация рассчитана на разработчиков ПО, без опыта работы с OSM.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии12

Стажёр Вася и его истории об идемпотентности API

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

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

FPGA для программиста, конечные автоматы (verilog)

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

Стиль описания конечного автомата как образ мышления


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

Например, очень популярной является работа: Clifford E. Cummings, The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. Всякий раз, когда специалисты решают обсудить, как правильно писать конечные автоматы, кто-то обязательно достает эту публикацию.

Статья стала настолько авторитетной, что многие даже не стараются анализировать аргументы автора. В частности, бытует мнение, что профессионалы всегда используют двухчастный способ описания конечных автоматов, имеется ввиду, описание конечных автоматов в 2 always блока. Это утверждение продолжает вызывать жаркие споры, и я хочу пояснить различия в описаниях конечного автомата с разным количество always блоков.

В беседах с коллегами я понял, что споры о том, как надо писать конечные автоматы в 1 или 2, 3 always блока, связаны с разным представлением (осознанием) реализуемого алгоритма, разным типом мышления. Попробую показать это на примере.

Я полагаю, что эта статья не первая статья о FSM и Verilog в вашей жизни, поэтому я не буду объяснять ни что такое конечный автомат, ни как он описывается на Verilog, а перейду сразу к делу.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии27

FPGA для программиста, простые рецепты

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

Приоритетная структура кода


В разработке электронных устройств грань между разработчиком-схемотехником и разработчиком-программистом очень размыта. Что уж говорит о том, кто должен писать RTL под FPGA.


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


Производители микросхем тоже не отстают, стали паковать ПЛИС в один корпус с процессором, даже Intel выпустил процессор для PC с FPGA внутри, купив для этого известного производителя ПЛИС Altera.


Думаю всем истинным программистам Вселенная шлет сигналы, что им просто необходимо изучить RTL и начать писать “код” для FPGA не хуже, чем под их привычные процессоры.
Когда-то давно, я проходил этот путь и позволю себе дать несколько советов для ускорения.


Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии34

Оптимизация рабочего процесса при помощи fzf

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

Работа в оболочке включает в себя выполнение одних и тех же команд снова и снова; что меняется, так это порядок выполнения команд и их параметры. Один из способов упростить рабочий процесс — найти паттерны выполнения команд с аргументами и обернуть их в небольшие скрипты. Такой подход часто оказывается полезным, сильно упрощая работу; другой способ оптимизации рабочего процесса — понять, как добавляются параметры, и попробовать упростить сам ввод. И в преддверии старта нового потока курса Fullstack-разработчик на Python, в этом посте я расскажу о втором подходе.

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии5

Просто о make

Время на прочтение6 мин
Количество просмотров470K
Меня всегда привлекал минимализм. Идея о том, что одна вещь должна выполнять одну функцию, но при этом выполнять ее как можно лучше, вылилась в создание UNIX. И хотя UNIX давно уже нельзя назвать простой системой, да и минимализм в ней узреть не так то просто, ее можно считать наглядным примером количество- качественной трансформации множества простых и понятных вещей в одну весьма непростую и не прозрачную. В своем развитии make прошел примерно такой же путь: простота и ясность, с ростом масштабов, превратилась в жуткого монстра (вспомните свои ощущения, когда впервые открыли мэйкфайл).

Мое упорное игнорирование make в течении долгого времени, было обусловлено удобством используемых IDE, и нежеланием разбираться в этом 'пережитке прошлого' (по сути — ленью). Однако, все эти надоедливые кнопочки, менюшки ит.п. атрибуты всевозможных студий, заставили меня искать альтернативу тому методу работы, который я практиковал до сих пор. Нет, я не стал гуру make, но полученных мною знаний вполне достаточно для моих небольших проектов. Данная статья предназначена для тех, кто так же как и я еще совсем недавно, желают вырваться из уютного оконного рабства в аскетичный, но свободный мир шелла.
Читать дальше →
Всего голосов 104: ↑98 и ↓6+92
Комментарии112

Три уровня биохакинга. Как можно снова стать 18-летним за $2 млн в год

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

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

Понятно, что таким часто страдают спортсмены, для которых здоровье — это всё. Например, теннисист Новак Джокович, 35 лет, любит сидеть в камере под высоким давлением, чтобы обогатить свою кровь кислородом. Американский футболист Том Брэди в 45 лет принимает «антивозрастные» добавки, наносит на кожу увлажняющие порошки и катает по телу специальные вибрирующие шарики для улучшения гибкости мышц. А Криштиану Роналду выглядит моложе своих 38 лет за счет строгой диеты из яиц, батата и брокколи и регулярных «ванн» в своем личном кислородном резервуаре (гипербарическая оксигенотерапия).

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

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

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

Осторожно, в посте много фото!

Читать далее
Всего голосов 55: ↑39 и ↓16+42
Комментарии257

Как выучить иностранный язык: алгоритм

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

Если вы хоть немного пересекались с Machine Learning, то понимаете, что человеческий мозг — это, по сути, большая нейросеть. А раз так, то и работу с ним можно строить по известным в ML алгоритмам. Так я нашел универсальный способ выучить любой иностранный язык до нормального уровня в разумные сроки. И на себе проверил его эффективность.

Читать далее
Всего голосов 56: ↑50 и ↓6+62
Комментарии123

Flipper Zero — пацанский мультитул-тамагочи для пентестера

Время на прочтение10 мин
Количество просмотров287K
Flipper Zero — Multi-tool Device for Hackers

Warning

Информация в статье устарела, Flipper Zero был полностью пеработан на другой платформе. Актуальная информация в нашем блоге blog.flipperzero.one


Flipper Zero — проект карманного мультитула на основе Raspberry Pi Zero для пентеста IoT и беспроводных систем контроля доступа, который я разрабатываю с друзьями. А еще это тамагочи, в котором живет кибер-дельфин.

Он будет уметь:

  • Работать в диапазоне 433 MHz — для исследования радиопультов, датчиков, электронных замков и реле.
  • NFC — читать/записывать и эмулировать карты ISO-14443.
  • 125 kHz RFID — читать/записывать и эмулировать низкочастотные карты.
  • iButton ключи — читать/записывать и эмулировать контактные ключи, работающие по протоколу 1-Wire.
  • Wi-Fi — для проверки защищенности беспроводных сетей. Адаптер поддерживает инъекции пакетов и мониторный режим.
  • Bluetooth — поддерживается пакет bluez для Linux
  • Режим Bad USB — может подключаться как USB-slave и эмулировать клавиатуру, ethernet-адаптер и другие устройства, для инъекции кода или сетевого пентеста.
  • Тамагочи! — микроконтроллер с низким энергопотреблением работает, когда основная система выключена.

Я с волнением представляю свой самый амбициозный проект, идею которого я вынашивал много лет. Это попытка объединить все часто необходимые инструменты для физического пентеста в одно устройство, при этом добавив ему личность, чтобы он был милым до усрачки.
В данный момент проект находится на стадии R&D и утверждения функционала, и я приглашаю всех поучаствовать в обсуждении функций или даже принять участие в разработке. Под катом подробное описание проекта.
Читать дальше →
Всего голосов 176: ↑173 и ↓3+231
Комментарии162

Информация

В рейтинге
Не участвует
Откуда
Бат-Ям, Тель-Авив, Израиль
Дата рождения
Зарегистрирован
Активность

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

Software Developer, Fullstack Developer
Middle
Python
JavaScript
Vue.js