Pull to refresh
-13
0

Инженер

Send message

Cтатья про собеседования в Яшу (Yandex Weekend Offer)

Level of difficultyEasy
Reading time7 min
Views26K

Может кому-то это будет интересно, даст возможность лучше подготовиться; или наоборот кто-то примет решение не участвовать.

Коротко о себе: 41 год, senior software developer, стаж > 20 лет. Однако, как я понял, эти собесы все равно для всех одинаковые, так чтоб все написанное актуально и для молодежи.

Итак, угораздило меня согласиться на т. н. «Weekend Offer на позицию разработчика на Kotlin». Вообще‑то мне больше нравится Scala, и опыта по ней гораздо больше, но рекрутерша была сильно настойчива, и я решил обновить экспиренс, а возможно, и прибавку в деньгах. И вот что было дальше.

Читать далее

11 вопросов на собеседовании по Spring Boot, которые заставляют задуматься

Reading time7 min
Views59K

Большинство списков вопросов интервью по Spring Boot заставляют вас запоминать случайные детали из документации Spring Boot. Но запоминание — плохая замена истинному пониманию и уверенности в знании Spring Boot.

Поэтому сегодня мы собираемся применить другой подход. Вместо того, чтобы перечислять 50 вопросов по мелочам Spring Boot, мы сосредоточимся на 11, которые заставят вас задуматься и, таким образом, многому научиться на этом пути.
Вот они, в произвольном порядке.

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

Читать далее

Жизнь в Финляндии: честный опыт

Reading time20 min
Views73K

Моя история проста как три копейки. В конце 2010-х, работая Java-разработчиком в Москве, я невольно попал под влияние голосов, утверждавших, что пора валить, что на Западе сытнее, спится слаще, солнце ярче и трава зеленее. В начале 2020-го я начал учить английский и к началу 2022-го имел все что нужно для переезда. Штаты и Канада меня не особо манили, юг Европы слишком жаркое для меня место, так что я искал на севере Европы и в Германии.

То, что в конечном итоге я оказался именно в Финляндии — чистая случайность. Мы переехали с женой и ребенком начального школьного возраста три года назад. За это время накопилось немало опыта, которым я сегодня поделюсь — как есть, без приукрашиваний, иллюзий и прочих розовых единорогов.

Читать далее

Жизнь IT-специалиста на Кипре: халуми, сига-сига, горы, дайвинг и песчаные бури. Стоит ли переезжать?

Reading time11 min
Views42K


Александр Кушнарев работал на Kaspersky и «Яндекс» в России, а потом устроился в Wargaming на Кипре. За два года собрал много интересных наблюдений, которыми поделился с нами.


Почему на маленьком острове нельзя жить без машины. Как попасть в непризнанную Турецкую Республику на севере. Что бывает в кипрскую песчаную бурю. О горах, сырах, винодельнях, дайвинге в затонувших судах и проблемах переезда с котом. А еще о том, почему жить на Кипре иногда бывает холоднее, чем в России.

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

Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4

Level of difficultyEasy
Reading time13 min
Views25K

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи.

Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux.

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

Читать далее

Спарсил 700к ютуб каналов и построил 16 графиков которые вы навряд ли где-то видели

Level of difficultyEasy
Reading time5 min
Views13K

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

Но все же мне удалось нафармить 3,5к подписчиков мучительными душными видео, которые совершенно не понятно зачем терпели мои зрители

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

Смотреть графики

О новых алгоритмах хеш-таблиц

Reading time1 min
Views17K

Хотелось бы прокомментировать публикацию Ильи Кабанова в Медузе по поводу новых разработок в алгоритмах хеширования: "Optimal Bounds for Open Addressing Without Reordering" (Farach-Colton, Krapivin, and Kuszmaul, 2025) и последующую "The Bathroom Model: A Realistic Approach to Hash Table Algorithm Optimization" (Wang, 2025). И особенно кликбейтное: "в перспективе метод Крапивина и его коллег может ускорить многие процессы в интернете."

Я около 7 лет очень плотно занимался темой хеш-таблиц и написал много их вариантов: Koloboke, SmoothieMap, memory-mapped вариации.

Я потерял к теме интерес с выходом гугловской SwissTable (2018), и ее фейсбучного варианта F14, которые основаны на SIMD. Они проверяют загруженность ячеек и совпадения "тега" элемента сразу блоками по 8 соседних слотов. Поэтому на любых разумных загрузках таблиц (до 90%) - "цепочка проверки" очень редко превышает 1 (то есть, одну проверку 8-элементного блока).

В этих SIMD-based алгоритмах, ухищрения и теоретические по поводу "алгоритма шагания" просто не играют никакой роли -- алгоритм шагания можно сказать отсутствует, потому что если можно вставить элемент внутри 8-элементного блока, то это и стоит сделать.

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

SwissTable стали стандартным алгоритмом хеш-таблиц в Расте, и, буквально в этом месяце, в Golang 1.24.

В заключение, отвечая Илье Кабанову: к "ускорению интернета" эти теоретические алгоритмы не приведут :)

Читать далее

Необычные способы хостинга

Level of difficultyMedium
Reading time7 min
Views28K


Где разместить сайт? Оказывается, для хостинга необязательно покупать VPS или домашний сервер. Можно поступить более креативно: например, захостить сайт на смартфоне. Причём желательно извлечь из него аккумулятор, чтобы смартфон работал напрямую от сети. А есть ещё более оригинальный вариант: бесплатный хостинг в социальных сетях.
Читать дальше →

Гайд: Свой собственный L2TP VPN

Reading time2 min
Views90K
Покопавшись по просторам интернета в поисках софта для построения своего собственного VPN, постоянно натываешься на кучу гайдов связанных с неудобным в настройке и использовании OpenVPN, требующим проприетарного клиента Wireguard, только один SoftEther из всего этого цирка отличается адекватной реализацией. Но мы расскажем, так сказать, о нативной для Windows реализации VPN – Routing And Remote Access (RRAS).

По странной причине, никто ни в одном гайде не написал про то, как это все развернуть и как включить на нем NAT,  поэтому мы сейчас все исправим и расскажем, как сделать свой собственный VPN на Windows Server.

Ну а уже готовый и преднастроенный VPN можно заказать из нашего маркетплейса, он кстати работает из коробки.


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

Teensy 4: Arduino на скорости 600 МГц (почувствуй себя властелином вселенной)

Level of difficultyEasy
Reading time10 min
Views37K


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

Оказывается, последняя версия Teensy 4 сделана на основе Cortex M7 и работает на частоте 600 МГц, причём ядро там довольно продвинутое и позволяет исполнять две инструкции за такт, использует предсказание ветвлений и аппаратную обработку 64-битных чисел с плавающей точкой, а также много чего ещё, в том числе имеет на борту много RAM, Flash и PSRAM памяти и т. д.

В общем, контроллер очень продвинутый и позволяет создавать проекты в области обработки звука, управления массивами светодиодов, вывода видео на LED экраны, создания музыкальных синтезаторов и т. д. и т. п.

В результате я пришёл к выводу, что с этим стоит познакомиться поближе и на Али был заказан комплект Teensy 4.1 с Audio и Ethernet расширениями, а затем я с большим удовольствием поэкспериментировал с этим железом. Ну а далее я предлагаю свой отчёт о проведённых экспериментах, а также поделюсь своими впечатлениями о Teensy 4.1.
Читать дальше →

Устройство «музыкалки» AY-3-8910 и эмулятор на Arduino

Level of difficultyMedium
Reading time25 min
Views13K

Астрологи объявили месяц статей про ZX Spectrum, звук и Arduino. Количество публикаций увеличилось вдвое!

В прошлый раз я показывал, как можно перенести однобитные, они же «биперные», музыкальные «движки» с ZX Spectrum на Arduino. Но всё-таки это была максимально нишевая тема внутри нишевой темы, весьма узкоспециализированный проект.

Сегодня сделаю шаг ближе к народу. Расскажу, как работает легендарный звуковой чип AY-3-8910, как написать его простой эмулятор полностью с нуля, и как проиграть им музыкальный файл формата PT3 на обычной Arduino Nano.
Читать дальше →

Что делать, если поймал HardFault?

Reading time6 min
Views38K
Что делать, если поймал HardFault? Как понять, каким событием он был вызван? Как определить строчку кода, которая привела к этому? Давайте разбираться.

Всем привет! Сложно найти программиста микроконтроллеров, который ни разу не сталкивался с тяжелым отказом. Очень часто он никак не обрабатывается, а просто остаётся висеть в бесконечном цикле обработчика, предусмотренном в startup файле производителя. В то же время программист пытается интуитивно найти причину отказа. На мой взгляд это не самый оптимальный путь решения проблемы.

В данной статье я хочу описать методику анализа тяжелых отказов популярных микроконтроллеров с ядром Cortex M3/M4. Хотя, пожалуй, «методика» — слишком громкое слово. Скорее, я просто разберу на примере то, как я анализирую возникновение тяжелых отказов, и покажу, что можно сделать в подобной ситуации. Я буду использовать программное обеспечение от IAR и отладочную плату STM32F4DISCOVERY, так как эти инструменты есть у многих начинающих программистов. Однако это совершенно не принципиально, данный пример можно адаптировать под любой процессор семейства и любую среду разработки.


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

Apple Devices – замена iTunes. Как заставить работать на Windows 10 LTSC

Level of difficultyEasy
Reading time4 min
Views9.7K

Сегодня я расскажу о стороннем приложении Apple Devices, но лишь потому, что оно проверяет версию ОС Windows и категорически не устанавливается в Windows 10 LTSC или IoT LTSC. Ну и, конечно, расскажу, как его победить.

Данная статься не пропагандирует ни техники или продуктов Apple, ни замену устаревшего комбайна iTunes отдельными приложениями Apple, ни (упаси бог мне такое вам предлагать) использование продуктов Apple на Windows вместо Mac. Однако…

Еще полгода назад на Windows, наконец, появились приложения Apple Devices (Устройства Apple), Apple Music и Apple TV. На Mac они давно заменили мультимедиа комбайн iTunes, который стал неповоротлив, а для Windows несколько припозднились. Без комментариев. Причем, Apple выпуская новые приложения установила крайне непонятное требование, сборка ОС не ниже чем 19045 (в терминологии Microsoft, это Windows 10 22H2, смотри мою статью Все о версиях Windows 10 и как максимально продлить поддержку своей ОС / Хабр (habr.com)). Что крайне печально, так то, что версия долгосрочной ветви обслуживания Windows 10 Enterprise LTSC и Windows 10 IoT Enterprise LTSC максимально имеют версию 19044 (21H2) и, соответственно, установка на них приложения Apple Devices заблокирована. Рассмотрим же, как это починить. Кстати, этот же метод позволяет ставить современный Adobe Photoshop на LTSC издания, – он также проверяет именно версию ОС.

Я уже рассказывал в упомянутой выше статье, что те, кто хотят оставаться на Windows 10, наверняка должны задуматься именно об издании IoT Enterprise LTSC, так как оно одно будет поддерживаться и получать обновления аж до 13.01.2032. Обычные Профессиональные и Корпоративные издания «стухнут» уже через год – до 12.01.2025, а Enterprise LTSC будет получать свои обновления до 12.01.2027. Стало быть, разумный пользователь Windows 10 перешел на издание IoT Enterprise LTSC: кстати, и для Windows 11 это наилучшее издание, всем рекомендую почитать статью Windows 11 24H2 IoT Enterprise LTSC – что за зверь, и чем он хорош? / Хабр (habr.com). Впрочем, сегодня я анонсировал немного другую тему.

Ставим обновление для работы Apple и Adobe

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки

Level of difficultyMedium
Reading time12 min
Views25K

Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.

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

Мне удалили аденому простаты: как это было

Level of difficultyEasy
Reading time19 min
Views47K

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

Дисклеймер: я не врач и не даю здесь рекомендаций. Названия лекарств привожу не для рекламы, а потому, что мне их выписывал доктор. Основная часть данных получена из личного опыта, консультаций с четырьмя докторами, медицинской литературы и ChatGPT 4o. Лично мои мнения помечены как «думаю, что...».

Итак, что произошло

Десятого декабря у меня был юбилей. Через три дня, в пятницу 13-го (я не верю в приметы) пошли с коллегами в ресторан отмечать событие. Было хорошее настроение и хороший коньяк. Через два часа захотелось в туалет. Струя оказалась тоненькой. Через 15 минут пошел еще раз – она стала еще тоньше, а в очередной поход через еще 15 минут исчезла вовсе. Я подумал, что пора прекращать пить и надо идти домой, ждать когда алкоголь выйдет из крови. Но дома лучше не стало, хотя отрезвел полностью. Я не спал  всю ночь, искал решение в интернете и пробовал что-нибудь сделать – ничто не помогало. Утром в девять я был в больнице, в очереди к урологу. Было уже страшно, что лопнет мочевой пузырь или откажут почки. Когда вошел в кабинет доктора, не смог даже самостоятельно лечь на кушетку из-за резкой боли внизу живота. Доктор быстро вставил мне катетер в уретру и я наконец понял, что такое настоящее счастье, когда услышал звук бурного потока мочи в рядом стоящий тазик.

Читать далее

С++ — это настоящий кайфǃ

Level of difficultyEasy
Reading time18 min
Views49K

Я хочу, чтобы вы задали себе один вопрос и честно на него ответили. Когда в последний раз вы получали настоящее удовольствие от программирования? Оглядываясь назад, я понимаю, что не испытывал подобных ощущений, наверное… уже лет десять. Удовольствия у меня не было ни от JavaScript, ни от Python, ни от Ruby или C — ни от чего. Когда я говорю «удовольствие» — я имею в виду ощущения человека, которого во время работы над неким проектом переполняет искренний восторг. Этот человек постоянно ловит себя на такой мысли: «Ох, ну какая ж круть. Поверить не могу, что моя безумная идея и правда сработала!».

Например, я писал маленькую игру-«рогалик». У меня была такая идея: «Готов поспорить, что у меня получиться воспользоваться этим вашим алгоритмом Дейкстры для соединения комнат при генерировании карты, сначала инвертируя карту, а потом его запуская. Вероятно, мне удастся прокопать отличнейшие туннели между комнатами». То было благословенное время, когда я пытался справиться с этой задачей, и при этом не чувствовал, что C++ мне мешает. Мне тогда удалось решить эту задачу, попутно многому научившись. Потом у меня появилась такая мысль: «Интересно, получится мне взять пользовательский интерфейс, сделанный на FTXUI, и просто напрямую его отрендерить в окно визуализации SFML?». Как и следовало ожидать, у меня всё отлично получилось. И хотя это было не так уж и сложно, я по ходу дела много узнал о том, как в C++ обрабатывается юникод. Ни одна из этих задач лёгкой не была, но все их, в принципе, можно было решить, и я не могу напридумывать себе достаточно много «подводных камней», которыми C++ мог бы помешать мне сделать то, что я хочу. Это — то, что я называю «удовольствием».

Читать далее

Перестаньте молиться на принципы S.O.L.I.D

Reading time6 min
Views48K

В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.


Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.


SRP не SRP


Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).

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

Программный контроллер интерфейса на STM32

Reading time9 min
Views14K
Проблема обратной совместимости, вероятнее всего, будет всегда.

В области разработки электроники порой приходится поддерживать устройства 30-летней давности (а иногда и старше).

В таких аппаратах иногда всё собрано на логике, без каких-либо программируемых элементов.
Кроме того, в старой технике существуют доморощенные интерфейсы, которые не реализуются какими-либо серийно выпускаемыми контроллерами.

В таких случаях совместимые контроллеры приходится реализовывать на CPLD\FPGA\ASIC.

Я подумал, что можно обойтись без указанных выше средств, а именно реализовать контроллер интерфейса программно на микроконтроллере серии STM32F4.
Читать дальше →

Arnis: как перенести реальный мир в Minecraft за пару кликов

Level of difficultyEasy
Reading time8 min
Views19K


На днях энтузиасты с GitHub выпустили Arnis — утилиту, которая переворачивает представление о строительстве в Minecraft. Теперь, опираясь на реальные данные из OpenStreetMap, за считаные минуты можно создать масштабную копию существующего города.

Тем, кто годами возводил здания и улицы вручную, такая автоматизация может показаться настоящей магией. Достаточно пары кликов вместо часов кропотливой работы: выбираете локацию на карте — и Arnis тут же генерирует виртуальную копию. Но так ли все идеально? Давайте разберемся, как работает Arnis, чем он хорош, есть ли ограничения и какие открываются перспективы при использовании этой технологии. Все подробности — под катом.
Читать дальше →
1
23 ...

Information

Rating
5,607-th
Location
Санкт-Петербург и область, Россия
Registered
Activity