Pull to refresh
19
0
Максим Логвинов @Zeben

Музыкант, программист

Send message

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон

Reading time12 min
Views134K

Я делаю много ревью для чужого кода на Ансибл и много пишу сам. В ходе анализа ошибок (как чужих, так и своих), а так же некоторого количества собеседований, я понял основную ошибку, которую допускают пользователи Ансибла — они лезут в сложное, не освоив базового.


Для исправления этой вселенской несправедливости я решил написать введение в Ансибл для тех, кто его уже знает. Предупреждаю, это не пересказ манов, это лонгрид в котором много букв и нет картинок.


Ожидаемый уровень читателя — уже написано несколько тысяч строк ямла, уже что-то в продакшене, но "как-то всё криво".

Читать дальше →
Total votes 112: ↑110 and ↓2+108
Comments66

Как ваш браузер обрабатывает прикосновения к экрану телефона (js touch events)

Reading time6 min
Views21K

Ссылка на github

Здесь я поделюсь своим опытом и постараюсь максимально подробно рассказать все основные фитчи которые есть в вашем javascript для обработки прикосновение к дисплею. touchstart и т.д.

ЧИТАТЬ
Total votes 11: ↑10 and ↓1+9
Comments7

Однопоточный JavaScript и многопоточная Java: что быстрее?

Reading time7 min
Views18K

Асинхронное выполнение на Java и JavaScript


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

console.log("1");
setTimeout(()=>console.log("2"));
console.log("3");

Результатом работы кода будет 1 3 2.

В Java API под асинхронным выполнением обычно подразумевается, что задача выполняется в новом выделенном потоке. Например, представленный ниже код при помощи метода supplyAsync() планирует асинхронную задачу:

System.out.println("current thread: " + Thread.currentThread().getName());
var future = CompletableFuture.supplyAsync(() -> Thread.currentThread().getName());
System.out.println("current thread: " + Thread.currentThread().getName());
System.out.println("task thread: " + future.get());

Результат работы программы показывает, что текущий поток создал новый поток для выполнения задачи:

current thread: main
current thread: main
task thread: ForkJoinPool.commonPool-worker-1

Проблема множественных потоков заключается в том, что Java runtime не может создавать бесконечное их количество. Когда все запущенные потоки ожидают, а новые потоки создать нельзя, приложение тоже ничего не будет делать.
Читать дальше →
Total votes 79: ↑41 and ↓38+3
Comments77

Я развернул монитор на 90° и всем это рекомендую

Reading time5 min
Views72K


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

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

Была одна идея, которая меня интриговала долгое время – развернуть монитор в портретное положение. Я подметил, что так делают некоторые разработчики, потому что им нужно иметь в поле зрения много строк кода одновременно. Разработчики, в целом, хорошо подкованы в таких вопросах, поэтому я решил последовать их примеру.
Читать дальше →
Total votes 35: ↑25 and ↓10+15
Comments180

Мой компьютер на логических микросхемах

Reading time6 min
Views55K

Привет, Хабр. Два года назад, как раз перед началом пандемии, я затеял большой проект: построить компьютер, используя только простые логические микросхемы 74 серии и микросхемы памяти. В этой статье я бы хотел кратко рассказать о том, что получилось, и более подробно об основной части – процессоре.

Читать далее
Total votes 306: ↑305 and ↓1+304
Comments73

Релизим фронтенд несколько раз в день

Reading time5 min
Views9.3K

Меня зовут Петр Солопов, я руковожу фронтенд-разработкой в SuperJob. В этой статье хочу рассказать об опыте ежедневных релизов у нас в компании, зачем мы это делаем и почему это не так страшно, как кажется.

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

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments26

Применение биполярных транзисторов с микроконтроллерами

Level of difficultyMedium
Reading time10 min
Views45K

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

Читать далее
Total votes 100: ↑100 and ↓0+100
Comments77

Биологический мерч или не лишний способ применить 3D-принтер

Reading time8 min
Views5.4K

Доброго времени суток, дорогие обитатели Хабра.

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

А интересы у меня оочень разнообразные - от рисования анатомических иллюстраций до вязания крючком. Но на первый план в последние годы выходит 3D-моделирование.

И мне подумалось - а почему бы не сделать биологические 3D-штукенции?

Интересно? Ныряй!
Total votes 25: ↑24 and ↓1+23
Comments83

Как сделать ОС для микроконтроллера

Reading time33 min
Views24K

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

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

Читать далее
Total votes 45: ↑41 and ↓4+37
Comments45

Краткий обзор возможностей — для построения осциллографа

Reading time12 min
Views26K

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

С появлением ардуино, увлекающиеся получили новый шанс по созданию данного аппарата «дешево и сердито». В этой статье мы сделали попытку провести краткий обзор возможностей ардуино в этом направлении.
Узнать подробности
Total votes 65: ↑60 and ↓5+55
Comments24

Юмористичный обзор Rust с перспективы JavaScript

Reading time7 min
Views21K

В этой статье я в несколько забавном ключе документирую кое-какие размышления о своем знакомстве с Rust с позиции прожженного энтузиаста JavaScript. Здесь вас ждет импровизированная прогулка по феодам Вестероса, встреча с Ланнистерами и даже замаскированный под остров корабль — занятные аналогии, которые можно провести с работой в этом языке.
Читать дальше →
Total votes 82: ↑74 and ↓8+66
Comments16

7 лучших библиотек для создания молниеносно быстрых приложений ReactJS

Reading time6 min
Views18K

ReactJS по умолчанию обладает высокой производительностью. Но время от времени у вас появляется шанс сделать его еще лучше. И замечательное сообщество React придумало для этого несколько фантастических библиотек.

Сегодня мы поговорим о семи таких библиотеках, которые могут улучшить качество вашего кода и при этом повысить производительность.

Давайте начнем.   

.     .     .

Читать далее
Total votes 16: ↑12 and ↓4+8
Comments6

Ненормативная схемотехника: ATmega8 – кто сказал, что выше головы не прыгнешь?

Reading time14 min
Views25K
Вот уж несколько лет, как я увлёкся микроконтроллерами, а именно семейством AVR. Ещё на этапе освоения Ардуино (в этот момент часть аудитории поплевались и ушли читать другие статьи) я пытался выдавить из неё больше, чем задумано. Меня всегда больше интересовали нестандартные решения обычных задач. Сейчас я знаю об AVR намного больше, чем ещё пару лет назад, и всё больше убеждаюсь, что знаю очень мало.



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



Но это не наш метод. Я с самого начала хотел именно ATmega8, как самую доступную и самую дешёвую (в том числе в дип-корпусе). Всё то же самое можно и на ATmega48, но её попробуй ещё найди, разве что у Вас в ящике стола валяется их много с незапамятных времён.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments54

$mol_strict: Как же меня [object Object] этот ваш undefined NaN

Reading time5 min
Views6.6K

Здравствуйте, меня зовут Дмитрий Карловский и я… не прощаю ошибок. Как только вижу оную — тут же бросаю что-нибудь исключительно тяжёлое. И как же тяжела работа программиста на JS...


class Foo extends Object {
    get name(){ return 'Jin' }
}
const foo = new Foo

`Здравствуйте, ${ foo }!`
// "Здравствуйте [object Object]!"

`В этом месяце вы заработали ${ foo / 1000 } тысяч рублей.`
// "В этом месяце вы заработали NaN тысяч рублей."

`Ваша цель "${ 'foo'[4] }" наконец-то достигнута.`
// "Ваша цель "undefined" наконец-то достигнута."

`Осталось ещё ${ foo.length - 1 } целей и вы достигнете успеха.`
// "Осталось ещё NaN целей и вы достигнете успеха."

foo.__proto__= { name: 'придурок' };
`До скорых встреч, ${ foo.name }.`
// "До скорых встреч, придурок."

Облегчить его страдания можно разными путями..


  1. Прикрыться тайпскриптом. Но в рантайме ноги всё равно остаются босыми, и на них кто-нибудь вечно наступает.
  2. Обложиться проверками. Но чуть замешкаешься и рантайм грабли тут же бьют по голове.
  3. Исправить JS. Даже не надейтесь.
  4. Исправить JS рантайм. Ну, давайте подумаем..
Читать дальше →
Total votes 35: ↑22 and ↓13+9
Comments9

Создание видеочата с помощью Node.js + Socket.io + WebRTC

Reading time8 min
Views29K

Сегодня, специально к старту нового потока по веб-разработке, поделимся с вами туториалом, из которого вы узнаете, как создать видеочат с помощью JavaScript и NodeJS. Также вы научитесь использовать PeerJS, WebRTC и Socket.io.

Читать далее
Total votes 8: ↑5 and ↓3+2
Comments10

Плавность хода, шум и момент шагового двигателя при управлении микроконтроллером

Reading time11 min
Views35K

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

Далее опишу алгоритм управления ШД с помощью микроконтроллера.

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

Рассмотрим необходимый минимум основ управления ШД , необходимый для понимания принципа управления, описанного ниже. А именно:

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

Изменение полярности обмотки с помощью Н-моста.

Принципиальная электрическая схема, включающая в себя 4 драйвера полумоста и 2 Н-моста.

Способ модуляции синусоидального сигнала с помощью широтно-импульсной модуляции (далее просто ШИМ).

Способы подключения обмоток.

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

Почему вы должны попробовать Rust

Reading time16 min
Views42K

Это ознакомительная статья о языке программирования Rust и его инструментах, с помощью которой я надеюсь привлечь ваше внимание к этому интересному и уникальному языку, созданному чтобы дать ответ на следующие вопросы разработчиков:

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

Цель данной статьи не рассказать о доселе невиданных возможностях Rust (сразу говорю, что тут ничего нового "Растоманы" не найдут), на Хабре вы итак найдете множество интересных статей о внутренностях языка и интересных случаев использования. Моя цель рассказать о том, что он предлагает в качестве решения обозначенных выше проблем, как это будет выглядеть со стороны программиста, и почему это важно.

Читать далее
Total votes 92: ↑84 and ↓8+76
Comments153

Делаем вечную лампочку

Reading time3 min
Views297K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

Читать дальше →
Total votes 243: ↑238 and ↓5+233
Comments361

[Подборка] Полезные статьи о релокации в США: выбор визы, поиск работы, зарплаты и налоги

Reading time2 min
Views15K

Одна из самых популярных тем в нашем блоге – релокация. А самым популярным направлением для переезда русскоговорящих инженеров остаются США. Это легко объяснимо – в этой стране наиболее развита IT-отрасль, FAANG, тысячи стартапов, передовые технологии и вот это все.

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

Читать далее
Total votes 19: ↑13 and ↓6+7
Comments1

Как сделать волоконно-оптическую светодиодную лампу

Reading time4 min
Views45K

Ранее я уже делал подобные проекты, но в этот раз я хотел сделать что-то попроще, то, что будет легким в изготовлении, и то, что смогли бы сделать многие из вас. "Механические" части лампы печатаются на 3D-принтере, электронная часть довольно проста, а пластиковое оптическое волокно притягивает взгляд. Сейчас я расскажу, как легко и просто изготовить такую светодиодную лампу.

Приятного чтения!
Total votes 62: ↑61 and ↓1+60
Comments20

Information

Rating
Does not participate
Location
Дружковка, Донецкая обл., Украина
Date of birth
Registered
Activity