Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Имитатор аккумуляторной батареи

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели27K

При ремонте промышленных зарядных устройств (ЗУ), а также при разработке своих собственных ЗУ часто возникает потребность в имитаторе аккумуляторной батареи для отладки и проверки исправности устройства. Конечно, можно использовать для этого и реальные аккумуляторы, но это не всегда удобно.

Читать далее

Определение скорости/факта наличия вращения микродвигателей

Время на прочтение6 мин
Охват и читатели14K

Shenzhen Dehong Electric Motor Co., Ltd Store

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

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

Читать далее

Как развернуть Nextcloud Talk на собственном VPS

Время на прочтение5 мин
Охват и читатели19K

Nextcloud Talk — отличная альтернатива Telegram и WhatsApp* для голосовых звонков и видеосвязи. Это популярная опенсорсная платформа, которая стала актуальной ещё после закрытия Skype и Discord, а сейчас тем более.

Как известно, на территории РФ плохо работают западные мессенджеры WhatsApp* и Telegram, звонки не проходят в целях борьбы с мошенничеством. В таких условиях приходится искать альтернативные программы, которые легальны и не уступают по качеству. Хороший вариант — установка сервера коммуникации на своём приватном VPS.

Nextcloud Talk — одна из таких рабочих платформ для аудио- и видеозвонков.

Читать далее

Макрос-клавиатура которую я делал 5 лет

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели13K

Меня зовут Нияз. Я ретушёр, дизайнер и иногда программист, а с недавних лет — ещё и отец двух мальчиков 🤘

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

Сегодня хочу показать результат этого пути — наше текущее творение.

Встречайте: макрос-клавиатура 23procg тип1

Читать далее

«Джуны старше 50 лет никому не нужны». Как я сменил воинскую службу на IT в 53 года

Время на прочтение7 мин
Охват и читатели70K

На рынке по-прежнему держится норма: после 40–50 лет карьеру лучше не трогать. Я 30 лет служил в морской авиации, а перед выходом на пенсию понял, что у меня остаётся немного вариантов для заработка — один из них: устроиться охранником в школу за 30 000 рублей с гордой надписью Security на курточке. Рассказываю, как решил поменять профессию, через что пришлось пройти и как в итоге в 53 года стал тестировщиком программного обеспечения.

Читать далее

Как я перестал слушать «Unknown Artist — Track 01» и написал свой распознаватель музыки

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели23K

12 000 MP3 без тегов, 15 лет прокрастинации, один выходной на код. Асинхронный распознаватель на Python + Shazam: как обойти rate limiting, починить кривые кодировки и не съесть всю память. Код открыт.

Читать далее

Мы пробили новое дно: change request-ы и баг-репорты, которые никто не понимает

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели20K

Мы, кажется, пробили новое дно.
И что особенно удивительно, Карл! — аккуратно, без паники, с хорошей формулировкой и абзацами.

Я сначала не понял, что стало происходить. Было ощущение странного дежавю: читаю change request или баг‑репорт, киваю, вроде всё логично... но что‑то не так, как будто где это уже читал. Слова правильные. Причинно‑следственные связи на месте. Термины употреблены верно. Пытаюсь понять в чём проблема — ноль. Как будто читаешь инструкцию к микроволновке, а не описание реальной проблемы. Пытаюсь прочитать ещё раз и ещё раз — с трудом продираюсь через текст с каким‑то смутным понимаем того, что написано.

И тут до меня доходит - как обухом по голове.
Мои дорогие гении из техподдержки и продакт менеджер нашли «идеальный» способ сэкономить на обсуждении технической стороны проблемы со мной. И действительно, зачем? Клиент что‑то спросил. Они прогнали это через ИИ. И ИИ вник. Глубоко. Старательно. Затем сгенерировал текст, старательно объясняя мне что нужно добавить, починить и даже каким образом это сделать (не имея даже понятия о нашей кодовой базе).

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

Читать далее

Javascript: прощай, Date, здравствуй, Temporal

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели20K

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

Мне нравится, когда можно увидеть обратную сторону; какой бы формальной и железобетонной ни казалась спецификация ES-262, мы всё равно замечаем (если знать, куда смотреть) в ней все хорошие и плохие решения, принятые сотнями людей, разрабатывавших язык. У JavaScript есть характер. Да, он не всегда делает всё в точности так, как можно ожидать, но на мой взгляд, JavaScript обладает настоящим очарованием, которое можно оценить, если глубоко его изучить.

Впрочем, существует одна часть языка, которая мне кажется совершенно нелогичной: это конструктор Date.

Читать далее

LLM — это афера на доверии, которая длится 400 лет

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели22K

В 1623 году немец Вильгельм Шиккард создал первые известные чертежи механического калькулятора. Спустя двадцать лет Блез Паскаль разработал машину улучшенной конструкции, чтобы помочь справляться с огромным количеством утомительных арифметических расчётов, необходимых в его работе сборщика налогов.

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

Аферу на доверии можно разбить на три этапа:

Читать далее

Игра во время загрузки игры

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели18K

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

Чем же занять себя находящемуся в нетерпении игроку всё это время до того, как игра будет загружена и можно будет начинать в неё играть? Было время, когда человечество почти нащупало интересный ответ на этот вопрос: «загрузочные игры».

«Мы сделали игру на экране загрузки игры, чтобы вы могли играть в игру, пока загружается игра»

Читать далее

std::move ничего никуда не двигает: подробный рассказ о категориях значений в C++

Время на прочтение35 мин
Охват и читатели18K

Проблема: когда из-за «оптимизации» код замедляется

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

Читать далее

Полезные ресурсы для тестировщиков: подборка от специалистов Selectel

Время на прочтение3 мин
Охват и читатели9.9K

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

Вместе со специалистами Selectel мы собрали полезные материалы для тестировщиков. В список вошли ресурсы, которые помогают развивать практические навыки, системное мышление и уверенно расти в профессии — от начального уровня до Middle.

В подборке собрано то, что действительно помогает в работе и может служить ориентиром для самостоятельного обучения. Подробности под катом!

Читать далее

Ненормальные непотребства, трюки, хаки и алгоритмы на C

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели18K

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я начал серию статей, которая раскрывала много интересных моментов — от математических алгоритмов и оптимизации до ГПСЧ.

Если вы видите на экране эту шестую часть нашей бесконечной саги о ненормальном программировании на C, значит, мы с вами прошли уже немало: от конвертации миль в километры через Фибоначчи до ГПСЧ и быстрых вычислений.

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

Добро пожаловать в шестую часть. Прошу под кат — там будет жарко, быстро и очень, очень интересно.

Читать далее

Ближайшие события

Black-White Array: новая структура данных с O(log N) аллокаций

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели19K

Black-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления O(\log N) и O(\log N) используемых участков памяти. Преимущества:

• Амортизированное время вставки/удаления/поиска сравнимое с реализацией BTree от Google;
• Низкое количество аллокаций памяти при операциях вставки O(\log N) - меньше давления на сборщик мусора, ниже фрагментация памяти;
• Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным;
• Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов;
• Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных;
• Удобен для вставки батчами;
• Простая сериализация и десериализация;

Подробности

Как избежать катастрофы? Все о горячей замене в сложных системах

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели18K

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

Читать далее

Админ vs студент: разбор тестового задания — сервис консультаций на Laravel за неделю

Уровень сложностиСредний
Время на прочтение30 мин
Охват и читатели14K

Эта статья — подробный разбор тестового задания на позицию PHP-разработчика, которое мне пришлось выполнить в краткие сроки из-за приближающей сессии. Я расскажу, с какими трудностями столкнулся, будучи студентом и новичком в веб-разработке, как построил архитектуру проекта «Школьные консультации» и что из этого вышло. Если вам интересен взгляд «с первоначального этапа» на классическую задачу или вы хотите узнать, чем всё кончилось, или у вас был похожий опыт (о котором вы хотели рассказать), то добро пожаловать.

Читать далее

«Привет! Я [0.44, -0.91, 0.66...]» или как научить машину понимать смысл слов

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели20K

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

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

Для того чтобы ввести этот объект в нашу ML модель как некое понятие, мы должны преобразовать его в определённый набор чисел. По этому набору чисел мы сможем определить, что, например, этот объект «яблоко», а не «груша».

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

Однако что делать с текстом? Как спроецировать буквы в числа?

Читать далее

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

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели11K

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

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

Читать далее

Анимированные визуализации потоков данных: движение товаров, денег и пользователей

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели28K

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

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

Именно о них предлагаю поговорить сегодня.

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

Читать далее

От закрытого 25 порта к собственному SMTP-сервису: как и почему это произошло

Время на прочтение12 мин
Охват и читатели11K

Вы запускаете сервис и начинаете отправлять письма: транзакционные уведомления, апдейты, подтверждения действий. На старте все выглядит просто — SMTP настроен, письма уходят. А потом внезапно выясняется, что часть писем не доходит, часть улетает в спам, IP-адреса теряют репутацию, а продакт кричит «Где деньги?».

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

Под кат →