Pull to refresh
-2
0
Алексей @AlexeyPotopakhin

User

Send message

ОС с нуля: Глава 1, Часть 1 — Загрузчик

Reading time4 min
Views19K

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Total votes 24: ↑23 and ↓1+26
Comments59

Как бы вы реализовали форму аутентификации на сайте? Вопрос для собеседования на Junior/Middle/Senior?

Reading time9 min
Views55K

В свете исследования "Веб-разработчики пишут небезопасный код по умолчанию" мне подумалось, что именно так может звучать один из базовых вопросов на собеседовании с точки зрения проверки знания web-разработчика от уровня Junior до Senior.

Тема с одной стороны в общем-то простая, а с другой - многогранная. Можно сделать “на коленке”, а можно и “по-взрослому” -  зависит от знаний конкретного девелопера и технического задания. Ну и не привязывается к конкретному языку. Что nodejs, что .net, что PHP - на ответы это не влияет. Ну и отлично же! Давайте попробуем.

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

Как бы вы ответили на конкретный вопрос? Попробуйте проверить себя и потратить пару минут на обдумывание прежде чем читать ответ.

Восклицательным знаком ⚠ помечены вопросы, на которых можно "засыпаться" и оставить плохое впечатление о себе у интервьюера. Так же я позволил себе добавить еще пункты, которые подразумевают "Регистрацию", но по касательной. Многие ответы обрамил ссылками, которые помогут разобраться чуть глубже в конкретном вопросе, думаю будет полезно.

Итак, за вёсла!

Читать далее
Total votes 59: ↑49 and ↓10+49
Comments211

Обзор популярного ПО для майнинга Bitcoin

Reading time4 min
Views62K
Вы можете подумать, что майнить Bitcoin не очень выгодно, так как его курс не так давно значительно упал. Тем не менее, в настоящий момент Bitcoin быстро возвращается в нормальное состояние, поэтому сейчас самое подходящее время, чтобы снова начать его майнить. И, очевидно, это лучше делать, используя соответствующее программное обеспечение.

Существует так много операционных систем для управления процессом майнинга Bitcoin, что сделать выбор может быть довольно сложно. Эта статья поможет вам — в ней рассматриваются характеристики, преимущества и недостатки самых популярных ПО. Продолжайте читать, чтобы найти свое идеальное программное обеспечение для управления майнингом Bitcoin.
Читать дальше →
Total votes 24: ↑16 and ↓8+15
Comments16

Загружаем последнее ядро Linux с дискеты на 486-м компьютере

Reading time4 min
Views13K

Ещё в августе 2019 года я проводил конкурс Sing-Along Week по синхронизации MIDI-файла с речевым синтезатором, который поёт песню. На своём складе я нашел MIDI-карту MQX-32M (клон Roland MPU-401), которую хотел использовать для преобразования MIDI-сигналов в интерфейс Apple II+ с синтезатором речи Echo II, но в конечном итоге использовал ноутбук с интерфейсом USB MIDI. Другой конкурс Pizza Week сподвиг меня заинтересоваться поиском компьютера 486, который бы поместился в коробку для пиццы, и вот предоставился подходящий случай.
Total votes 23: ↑19 and ↓4+27
Comments12

Делаем звёздное небо на потолке при помощи оптоволокна и Arduino

Reading time8 min
Views40K




Хотите увидеть кусочек галактики у себя на потолке? Как это сделать – рассказано ниже.

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

Немного о самом проекте. Я старался делать всё своими руками по-максимуму, что дало мне полную творческую свободу. В итоге у меня есть созвездия северного полушария, контроль над звёздными скоплениями при помощи пульта д/у (яркость и цвет), реакция на музыку, контроль подсветки, и, что самое важное – возможность изменить всё, что угодно.
Total votes 26: ↑26 and ↓0+26
Comments14

MQTTv5.0: Обзор новых функций. Часть 1

Reading time8 min
Views13K
Привет всем любителям IoT и железок!

В этой статье я расскажу про, пожалуй, самый популярный протокол передачи данных, используемый в сфере Интернета вещей, — MQTT. А если конкретнее, то про MQTT Version 5.0 (версия, опубликованная 7 марта 2019 года). А если еще конкретнее, — про приятные нововведения версии 5.0 по сравнению с версией 3.1.1.

Кстати, а почему v5.0? Куда делась версия v4.0?

Коренная причина лежит в заголовке пакета CONNECT. Версия протокола или, если быть более точным, уровень версии протокола устанавливается в байте 7.



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

Ещё раз про аппаратные ключи GPG за копейки

Reading time7 min
Views25K


В февралe 2020 года на Хабре появилась увлекательная статья про преобразование программатора ST-Link v2 в аппаратный ключ шифрования. Уже тогда в комментариях появились жалобы на то, что результат не удаётся повторить, но они остались без ответа.


За прошедшее время до меня дошла пара посылок с Aliexpress и теперь, самостоятельно пройдя весь путь, я попытаюсь представить более или менее полную инструкцию с комментариями, которая поможет неспециалисту перепрошить микропроцессор в китайском клоне ST-Link v2. Постараюсь не повторять уже известное, поэтому про пайку контактов и использование GPG с аппаратным ключом смотрите в исходной статье.

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

Что нужно знать об устройстве коллекций, основанных на хешировании

Reading time4 min
Views22K
Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

Помимо преподавания, как вы могли заметить, я занимаюсь написанием авторского материала для блога OTUS на хабре и сегодняшнюю статью хочу посвятить запуску нового потока курса «Алгоритмы для разработчиков».





Введение


Хеш-таблицы (HashMap) наравне с динамическими массивами являются самыми популярными структурами данных, применяемыми в production'е. Очень часто можно услышать вопросы на собеседованиях касаемо их предназначения, особенностей их внутреннего устройства, а также связанных с ними алгоритмов. Данная структура данных является классической и встречается не только в Java, но и во многих других языках программирования.
Читать дальше →
Total votes 11: ↑9 and ↓2+12
Comments4

Вопросы к собеседованию Java-backend, Java core (60 вопросов)

Reading time17 min
Views249K
image

Добрый день! Представляю вашему вниманию список вопросов к собеседованию Java Backend, которые я оформлял на протяжении около 2х лет.

Вопросы разбиты по темам: core, collections, concurrency, io, exceptions, которые задают основные направления хода технического собеседования. Звездочками отмечен субъективный (с точки зрения автора) уровень сложности вопроса, в сноске спойлера — краткий ответ на вопрос. Ответ представляет для интервьювера правильное направления развития мысли кандидата.
Читать далее
Total votes 25: ↑17 and ↓8+15
Comments76

Структуры данных: список, который умеет всё*

Reading time20 min
Views12K
* Под всё имеется в виду относительно быстрое выполнение операций над единичным элементом массива.

Структур данных, которые реализуют список полно. У всех есть свои достоинства и недостатки. Например в мире Java — в зависимости от необходимых операций — можно использовать:

  • add(obj), get(obj), set(index, obj): базовый набор почти всех списков, например ArrayList.
  • add(index, obj): структуры в виде дерева, например TreeList из apache common-collections.
  • remove(index): то же, что и выше.
  • contains(obj), indexOf(obj): можно использовать связку ArrayList и HashMap.
  • remove(obj): … затрудняюсь ответить. В некоторых случаях можно обойтись LinkedHashSet. Решается тривиально при наличии предыдущих двух пунктов, но какие структуры могут и то и другое быстро?

Когда мне понадобилась структура с быстрыми add(obj), get(index), remove(index) и indexOf(obj), то google не дал ответа. Ни примеров кода, ни описания подобных структур я не нашел. Возможно не там искал, пришлось выдумывать самому. Но если кто-то скинет ссылку в комментариях, то буду весьма признателен.

Возможно, кто-то догадался, что можно взять TreeList, который умеет быстро вставлять/удалять элементы в середине списка и добавить к нему HashMap из объекта в индекс в TreeList для быстрого выполнения indexOf(obj). И это будет простое, изящное, но неверное решение. Ведь при добавлении в середину или удалении из середины нужно будет пересчитать индексы, в среднем, для половины элементов. Это ухудшит производительность до O(n).

Дальше я расскажу о структуре данных, которая может всё из перечисленного выше. Которая выполняет любую операцию над одним элементом за O(log(n)) времени. Ну почти — за логарифм выполняется в том случае, когда все объекты в списке различны. Если в списке есть одинаковые объекты, то возможно проседание производительности вплоть до O(log(n) ^ 2).
Читать дальше →
Total votes 9: ↑8 and ↓1+11
Comments9

Tesla выпустит новых акций на $2 млрд

Reading time2 min
Views6.4K


Изображение: Pexels

Производитель электромобилей объявил о планах по проведению допэмиссии акций. Средства, вырученные от их продажи, будут потрачены на укрепление позиций на рынке. Предполагается, что стоимость новых акций составит $767,29, а всего компания привлечет $2 млрд.
Читать дальше →
Total votes 17: ↑8 and ↓9+4
Comments8

Настраиваем простой VPN с WireGuard и Raspberry Pi в качестве сервера

Reading time4 min
Views51K
Поскольку WireGuard станет частью будущего ядра Linux 5.6, я решил посмотреть, как лучше всего интегрировать этот VPN с моим LTE-маршрутизатором/точкой доступа на Raspberry Pi.

Оборудование


  • Raspberry Pi 3 с модулем LTE и публичным IP-адресом. Здесь будет VPN-сервер (далее в тексте он называется edgewalker)
  • Телефон на Android, который должен использовать VPN для всех коммуникаций
  • Ноутбук Linux, который должен использовать VPN только внутри сети

Каждое устройство, которое подключается к VPN, должно иметь возможность подключаться ко всем другим устройствам. Например, телефон должен иметь возможность подключаться к веб-серверу на ноутбуке, если оба устройства являются частью сети VPN. Если настройка получится достаточно простой, то можно подумать о подключении к VPN и десктопа (по Ethernet).
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments2

Адаптивная фоновая подсветка для телевизора на Raspberry Pi – аналог Ambilight

Reading time21 min
Views47K
image

Это телевизор с диагональю 50” и 37 RGB точками адаптивной фоновой подсветки по верхней и боковым сторонам экрана. Как сделать аналогичную адаптивную фоновую подсветку для любого экрана или ТВ — тема избитая, но вполне актуальная по ряду причин.

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

Во-вторых, на рынке нет и не будет самсунгов, сони, элджи и прочих ТВ с поддержкой данной технологии, так как она запатентована на многие годы вперед компанией Philips. И наконец — все решения «из коробки», доступные на али и иже с ним – имеют ряд ограничений в гибкости настроек и адаптации к размеру кадра видеоконтента, корректировок цветовой гаммы и т. д, являясь при этом всего лишь аппаратным костылем, анализирующим внешний сигнал и работающий только на формирование подсветки.
Total votes 35: ↑35 and ↓0+35
Comments38

Ростов-на-Дону: IT-компании, сообщества и мероприятия в 2019 году

Reading time7 min
Views13K
Привет. Меня зовут Вадим и я занимаюсь развитием IT-тусовок в Ростове. Через год после этой статьи я написал следующую: "Ростов-на-Дону: IT-компании, сообщества и мероприятия в 2020 году", так что можно сходить и почитать свежие новости там. А тут я рассказываю, каким был Ростов с точки зрения ИТ в 2019 году.
В 2016 году spasibo_kep написал статью "Едем в город южный: как живут разработчики в Ростове-на-Дoну" о Ростовском IT. Пришло время её обновить, тем более, что Ростов в 2019 году стал 4ым в России городом по интенсивности IT-мероприятий и активности сообщества. Статья будет полезна тем, кто думает о релокации, хочет узнать про IT-жизнь за пределами столиц, или интересуется развитием IT-сообществ.
В статье будет чуть-чуть о климате и географии и очень много о компаниях и сообществе.


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

Микросервисы со Spring Boot. Часть 1. Начало работы

Reading time7 min
Views65K
Это первая часть серии статей по основам микросервисных архитектур.

В ней вы познакомитеь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.

Мы создадим пару микросервисов и заставим их общаться друг с другом с помощью сервера имен Eureka (Eureka Naming Server) и Ribbon для балансировки нагрузки на стороне клиента.

Это статья входит в серию статей «Микросервисы со Spring Boot»:


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

JavaFX — еще не умер

Reading time4 min
Views8K
Примечание переводчика.
Недавно я опубликованных на сайте habr переводы на русский язык нескольких уроков по JavaFX,.
И один из моих читателей спросил меня: «А этим сейчас вообще кто-то пользуется?»
Неделю назад я увидел пост в блоге Стивена Чина (Stephen Chin) и решил, что он дает очень хороший ответ на вопрос моего читателя.

Стивен Чин — Java Champion и один из авторов недавно вышедшей книги «The Definitive Guide to Modern Java Clients with JavaFX» любезно разрезрешил опубликовать перевод его поста.



У нас было несколько кандидатов названия, которые мы с нашим издателем придумали для нашей новой книги JavaFX. Моим личным фаворитом был «JavaFX — еще не умер. Я думаю, что он довольно точно описывает то, что чувствуют многие из нас, давних поклонников JavaFX, но наш издатель предпочел наш дополнительный вариант «The Definitive Guide to Modern Java Clients with JavaFX» (Полное руководство для современных Java клиентов с JavaFX). Хотя это неплохой заголовок, он явно не то же самое. Как вы думаете, какая обложка лучше?

Многие считают, что клиентская Java мертва; тем не менее, JavaFX по-прежнему жив и здоров благодаря большему чем когда-либо использованию, большему количеству платформ и поддержке сообщества. Вот три главные причины, по которым вы также можете рассмотреть возможность использования JavaFX для следующего клиентского приложения:
Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments3

Зачем учить Java и как делать это эффективно. Доклад Яндекса

Reading time11 min
Views58K
Чем Java отличается от других популярных языков? Почему именно Java может быть первым языком для изучения? Давайте составим план, который поможет выучить Java как с нуля, так и с применением навыков программирования на других языках. Перечислим отличия между созданием продакшен-кода на Java и разработкой на других языках. Михаил Затепякин прочитал этот доклад на встрече для будущих участников стажировки Яндекса и других начинающих разработчиков — Java Junior meetup.


— Всем привет, меня зовут Миша. Я разработчик из Яндекс.Маркета, и сегодня я расскажу вам, зачем учить Java и как делать это эффективно. Вы можете задать резонный вопрос: почему это буду рассказывать я, а не какой-нибудь сильный разработчик с кучей лет стажа? Дело в том, что я сам изучал Java недавно, года полтора назад, поэтому еще помню, как это примерно было и какие есть подводные камни.
Читать дальше →
Total votes 19: ↑16 and ↓3+18
Comments21

Spring Boot vs Spring MVC vs Spring — Как они сравниваются?

Reading time7 min
Views46K

Spring Boot vs Spring MVC vs Spring — Как они сравниваются?


image

Spring, Spring Boot, Spring MVC, везде есть слово “spring”! Давайте пройдемся где и когда вы можете применять каждый из этих инструментов


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

Что за основная проблема, которую этот Spring Framework решает?


Долго и упорно подумайте. Какова проблема, решаемая Spring Framework?

Почему это важно? Потому что, когда DI или IOC правильно используются, мы можем разрабатывать слабо связанные приложения. А слабо связанные приложения могут быть легко протестированы юнит-тестами.

Давайте рассмотрим простой пример.

Пример без внедрения зависимостей


Рассмотрим пример ниже: WelcomeController зависит от WelcomeService, чтобы получить приветственное сообщение. Что он делает, чтобы получить экземпляр WelcomeService?

WelcomeService service = new WelcomeService();

Эта строка создает экземпляр данного сервиса. А это значит что они сильно связаны. Например, если я создаю мок для WelcomeService в юнит-тесте для WelcomeController, как мне заставить WelcomeController использовать мок? Не легко!

@RestController
public class WelcomeController {   private WelcomeService service = new WelcomeService();   @RequestMapping("/welcome")
   public String welcome() {
       return service.retrieveWelcomeMessage();
   }
}
Читать дальше →
Total votes 8: ↑3 and ↓50
Comments8

Свои Custom Controls в Angular

Reading time6 min
Views36K

Пролог


Поговорим о реактивных формах в angular, узнаем за кастомные контролы, как их создавать, использовать и валидировать. Статья предполагает что вы уже знакомы с фреймворком angular, но хотите больше погрузиться в её специфику. Хорошее желание, начнем.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments10

Собираем цветомузыку к Новому году

Reading time3 min
Views22K
image

Всем привет!

Скоро новый год и нужно как то оригинально украсить свою комнату к празднику. Для этого идеально подходит цветомузыка, в основе которой Ардуино и светодиодная лента ws2812b.
Total votes 20: ↑18 and ↓2+25
Comments19
1
23 ...

Information

Rating
Does not participate
Location
Донецк, Донецкая обл., Украина
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Git
JavaScript
HTML
CSS
Web development
TypeScript
Angular.js
Angular
Spring Boot
MongoDB