Pull to refresh
0
Егор @jieggiiread⁠-⁠only

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

Send message

Программирование Arduino в CLion

Reading time4 min
Views41K
В этой статье я расскажу о небольшом how to о разработке для Arduino в CLion www.jetbrains.com/clion.
CLion — новая IDE для C/C++ от JetBrains. По стилю и поведению очень похожа на IDEA (IDE для Java). А так как я пишу на Java под IDEA с использованием «фишек» это IDE, то хотелось бы все эти «фишки» и use case разработки перенести на разработку для Arduino.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments20

Деловая переписка на английском языке: фразы и советы

Reading time18 min
Views599K
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

Задача становится сложнее, если вы общаетесь на неродном английском языке с представителями других культур. В статье я поделюсь, на что в этом случае обратить внимание, как избежать ошибок и достичь взаимопонимания с иностранными коллегами и партнерами.
Читать дальше →
Total votes 104: ↑100 and ↓4+96
Comments80

Анализ исходного кода Doom 3

Reading time32 min
Views54K
image

23 ноября 2011 года id Software поддержала собственную традицию и опубликовала исходный код своего предыдущего движка.

На сей раз настало время idTech4, который использовался в Prey, в Quake 4 и, разумеется, в Doom 3. Всего за несколько часов было создано больше 400 форков репозитория на GitHub, люди начали исследовать внутренние механизмы игры или портировать её на другие платформы. Я тоже решил поучаствовать и создал Intel-версию для Mac OS X, которую Джон Кармак любезно прорекламировал.

С точки зрения чистоты и комментариев это самый лучший релиз кода id Software со времени кодовой базы Doom iPhone (которая была выпущена позже, а потому откомментирована лучше). Крайне рекомендую каждому изучить этот движок, собрать его и поэкспериментировать.

Вот мои заметки о том, что я понял. Как обычно, я подчистил их, надеюсь, они сэкономят кому-нибудь пару часов и сподвигнут кого-нибудь на изучение кода для усовершенствования своих навыков программиста.
Total votes 89: ↑89 and ↓0+89
Comments36

Анализ исходного кода движка Doom: рендеринг

Reading time8 min
Views38K
image

От экрана дизайнера к экрану игрока


Карты разрабатывались дизайнером уровней в 2D с помощью редактора Doom Editor (DoomED). LINEDEFS описывали замкнутые секторы (SECTORS в исходном коде), а третье измерение (высота) указывалась посекторно. Первый уровень Doom E1M1 выглядит так:

image

После завершения работы над картой она нарезается методом двоичного разбиения пространства (Binary Space Partitioning, BSP). LINEDEF рекурсивно выбирались и их плоскости превращались в секущие плоскости. То есть LINEDEF разрезались на сегменты (SEGS) до тех пор, пока не оставались только выпуклые подсектора (SSECTOR в коде).

Интересный факт: И DoomED, и iBSP писались на… Objective-C на рабочих станциях NextStep. Пятнадцать лет спустя тот же язык почти в той же операционной системе выполняет игру на мобильном устройстве! [прим. пер.: в 2010 году Doom вышел на iPhone] Я немного поработал веб-археологом и мне удалось найти исходный код idbsp. На него стоит посмотреть.
Total votes 66: ↑66 and ↓0+66
Comments10

Превращаем Raspberry Pi в игровую ретро консоль

Reading time3 min
Views82K
Получив заветную коробочку c «Малиновым пирогом», каждый играется с ней по своему, моей первой мыслью было поиграть в нее по настоящему, а именно устроить на ее базе эдакий универсальный эмулятор старых игр. Большинство из нас играло в Денди, многие в Сегу или СуперНинтендо, и даже не смотря на наличие новых консолей текущего поколения, память о них живет, для таких вот «тронутых» ностальгией предназначается эта статья.

Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments29

Ретро-игровой центр на Raspberry Pi

Reading time4 min
Views155K
Ну вот и наступили майские праздники, в которые можно расслабиться и отвлечься от дел.
Кто-то поехал на природу, жарить шашлыки, кто-то — копать картошку, а кто-то, как я, решил остаться дома и релаксировать. Но как сделать это с пользой? Не прибегая к загрузке мозга очередными мануалами? И тут мне на глаза попалась моя неприкаянная Raspberry Pi. А вкупе с ностальгическим и тёплым ламповым настроением у меня родилась идея: а можно ли из RPI сделать игровую систему? Вбив в Google, нашлось простое и очень доступное решение, с которым я и хочу с вами поделиться. Кому интересно – прошу под кат.



Читать дальше →
Total votes 59: ↑44 and ↓15+29
Comments11

Как правильно делать код-ревью? Часть 2: навигация по ревью, скорость, комментарии, конфликты

Reading time10 min
Views6.5K

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


  • порядке проведения ревью,
  • скорости (и на что она влияет),
  • как правильно писать комментарии,
  • дискуссии в ходе ревью.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments2

Хакатон на 200 человек — что нужно для организации

Reading time11 min
Views6.5K


Знаете, почему проекты в крупных компаниях делаются по полгода? Потому что один из самых медленных процессов — это общение с заказчиком для выявления деталей его потребностей. Простое уточнение ТЗ (на гвозди или на клей надо крепить) может занимать до трёх месяцев. Я сейчас, конечно, несколько утрирую, но реальность в том, что почти никогда нельзя просто взять написать или позвонить и получить прямой ответ. Надо дождаться всех из отпусков и собрать совещание.

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

Это понимали мы и понимало руководство СИБУРа, нашего мощного промышленного партнёра, который помогал с проведением и организацией хакатона. Надо было устранять зазор между тем, что уже сделано и тем, что можно и нужно сделать по автоматизации. Для этого мы решили собрать на одной площадке сразу четыре стороны:

  1. Крупнейшие промышленные компании страны.
  2. Вендоров технологий с меняющихся рынков.
  3. Молодых разработчиков.
  4. ИТ-инженеров с опытом работ в сфере или в конкретных нужных технологиях.

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

Вот отчёт по задачам и их решению. Но сам пост будет про то, как мы организовывали мероприятие — возможно, это пригодится вам для своих хакатонов.
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments0

The Ember Times — Выпуск 136

Reading time5 min
Views568


ഹലോ Эмберисты!


Присылайте видео для вступительного слова на EmberConf, вышла новая версия Ember 3.16, Сапер встречает Ember Octane, прочитайте рассказ о первом опубликованном аддоне, пройдите опрос сообщества Ember 2020, и узнайте, как пересылать модификаторы элементов за <10 минут !


От переводчика: Все ссылки без пометки указывают на англоязычные ресурсы. На русском вопросы можно задать в вашем любимом телеграмм-канале

Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments0

Механические клавиатуры

Reading time17 min
Views761K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

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

Механические клавиатуры. Путеводитель.

Читать дальше →
Total votes 323: ↑313 and ↓10+303
Comments331

Как успешно пройти любой пентест (вредные советы)

Reading time11 min
Views34K
Если требуется вам срочно провести пентест,
Вы при этом не хотите по затылку получать,
То тогда быстрей смотрите приготовленный для вас
Список удивительных советов — он, конечно, вас спасет.


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

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

Неожиданно в вашем тридевятом царстве, в тридесятом государстве возникает потребность провести пентест против вашей воли, например, что-то причудилось начальству, или нагрянуло новое требование законодательства. Вам очевидно, что стоит найти «шарашкину контору», которая сделает имитацию работ и напишет, что всё хорошо, и дело с концом, но ситуация усложняется. Ваша компания решает разыграть конкурс и сделать это максимально эффективно: написать разумное ТЗ, предъявить высокие требования к команде пентестеров (наличие сертификатов, участие в Bug bounty) и т.п. В общем, все сделали за вас, а ваша ответственность — только курировать работы.

Итак, команда найдена, договор подписан, уговорить спецов провести пентест спустя рукава не получилось. Ребята толковые, начнут работы с понедельника и разнесут вашу ИБ к чертям, после чего вы отхватите по шапке, и ваша некомпетентность будет раскрыта. Ситуация кажется вам максимально плачевной, но не тут-то было! Вот вам вредные советы, как устранить или хотя бы минимизировать эту головную боль.
Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments22

Быстрое размытие по Гауссу

Reading time5 min
Views106K
Фильтр размытия по гауссу (широко известный “gaussian blur” в фотошопе) достаточно часто применяется сам по себе или как часть других алгоритмов обработки изображений. Далее будет описан метод, позволяющий получать размытие со скоростью, не зависящей от радиуса размытия, используя фильтры с бесконечной импульсной характеристикой.
Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments43

Как определить оператора и регион по номеру телефона

Reading time6 min
Views138K


Полезно знать, какого телефонного оператора выбрал клиент и в каком регионе. Тогда можно разбить клиентскую базу географически и не звонить ночами. Или проводить промоакции вместе с операторами. А некоторые наши заказчики экономят: для каждого оператора выбирают самого дешевого СМС-агрегатора.

Поэтому «Дадата» с давних пор находит оператора по номеру телефона. Алгоритм простой — сделай и пользуйся. Разве что в 2013 году, когда отменили «мобильное рабство», пришлось чуть скорректировать процесс. В этой статье расскажу, как у нас все работает.

В процессе есть большая сложность — получить доступ к базе перенесенных номеров. Частным лицам его не выдают, да и компаниям придется тяжело. Об этом — в отдельном разделе.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments33

Пандас и другие для толстых данных

Reading time5 min
Views11K
В этой заметке я расскажу о паре простых приемов, полезных при работе с данными, не помещающимися в память локальной машины, но все еще слишком мелкими чтобы называться Большими. Следуя англоязычной аналогии (large but not big), будем называть эти данные толстыми. Речь идет о размерах в единицы и десятки гигабайт.

[Дисклеймеръ]Если вы любите SQL все написанное ниже может вызвать в вас яркие, скорее всего, негативные эмоции, в Голландии 49262 Теслы, из них 427 такси, дальше лучше не читайте [/Дисклеймеръ].

image
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments11

Bloody hell, или Как ругаться на английском, чтобы тебя приняли за культурного человека

Reading time6 min
Views109K
Ругательства — это неотъемлемая часть любого языка. И даже если вы не собираетесь их использовать в жизни, их нужно изучать и знать.

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


Total votes 93: ↑87 and ↓6+81
Comments143

Учимся разворачивать микросервисы. Часть 1. Spring Boot и Docker

Reading time7 min
Views89K


Привет, Хабр.


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


Изначально я разбил создание проекта на несколько шагов:


  1. Создать два сервиса — 'бекенд' (backend) и 'шлюз' (gateway), упаковать их в docker-образы и настроить их совместную работу


    Ключевые слова: Java 11, Spring Boot, Docker, image optimization


  2. Разработка Kubernetes конфигурации и деплой системы в Google Kubernetes Engine


    Ключевые слова: Kubernetes, GKE, resource management, autoscaling, secrets


  3. Создание чарта с помощью Helm 3 для более эффективного управления кластером


    Ключевые слова: Helm 3, chart deployment


  4. Настройка Jenkins и пайплайна для автоматической доставки кода в кластер


    Ключевые слова: Jenkins configuration, plugins, separate configs repository



Каждому шагу я планирую посвятить отдельную статью.


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

Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments31

Программисты, давайте изучать исходники классических программ

Reading time2 min
Views54K
Современные программисты — счастливчики: мы живём в мире, в котором исторические и оказавшие существенное влияние программы имеют открытый код, доступный для изучения. Однако, многие программисты только учатся, и изучают те программы, над которыми работают сами. У нас редко находится время для изучения исторических работ, и курсы программирования редко тратят время на такие вещи.

Мы полагаем, что разработчикам следует изучать исходники программ, оказавших большое влияние, подобно тому, как архитекторы изучают здания, оказавшие влияние на архитектуру (и критикуют их). Чем повторять те же ошибки снова и снова, мы должны изучить большую работу, проделанную до нас, и вынести из неё уроки.
Читать дальше →
Total votes 74: ↑69 and ↓5+64
Comments68

Вычисление редакционного расстояния

Reading time5 min
Views62K

Редакционное расстояние, или расстояние Левенштейна — метрика, позволяющая определить «схожесть» двух строк — минимальное количество операций вставки одного символа, удаления одного символа и замены одного символа на другой, необходимых для превращения одной строки в другую. В статье излагается метод вычисления редакционного расстояния при использовании небольшого объема памяти, без существенной потери скорости. Данный подход может быть применен для больших строк (порядка 105 символов, т.е. фактически для текстов) при получении не только оценки «схожести», но и последовательности изменений для перевода одной строки в другую.
Читать дальше →
Total votes 81: ↑78 and ↓3+75
Comments19

Нечёткий поиск в тексте и словаре

Reading time13 min
Views260K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →
Total votes 171: ↑170 and ↓1+169
Comments33

Распознавание символов методом наименьшего расстояния Левенштейна

Reading time3 min
Views8.4K

В последнее время задача распознавания символов в прикладных программах не представляет особой сложности — можно использовать множество готовых OCR-библиотек, многие из которых доведены почти до совершенства. Но все же иногда может возникнуть задача разработать свой алгоритм распознавания без использования сторонних «навороченных» OCR-библиотек.


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

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments18

Information

Rating
Does not participate
Location
Россия
Registered
Activity