Обновить

Разработка

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

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

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

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

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

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

Читать далее

«Джуны старше 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 или баг‑репорт, киваю, вроде всё логично... но что‑то не так, как будто где это уже читал. Слова правильные. Причинно‑следственные связи на месте. Термины употреблены верно. Пытаюсь понять в чём проблема — ноль. Как будто читаешь инструкцию к микроволновке, а не описание реальной проблемы. Пытаюсь прочитать ещё раз и ещё раз — с трудом продираюсь через текст с каким‑то смутным понимаем того, что написано.

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

Ненормальные непотребства, трюки, хаки и алгоритмы на 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) - меньше давления на сборщик мусора, ниже фрагментация памяти;
• Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессором и скорость обхода/доступа к данным;
• Позволяет хранить элементы с одинаковыми ключами - не нужно использовать дополнительные структуры для группировки таких элементов;
• Низкий оверхед на хранение служебной информации - экономия памяти по сравнению с другими структурами данных;
• Удобен для вставки батчами;
• Простая сериализация и десериализация;

Подробности

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

История Уолли Уика — персонажа, который подарил жизнь новому жанру… и Диззи

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

Из всего многообразия жанров, которые были представлены на домашних компьютерах 80-х и 90-х, один — незаслуженно забыт, хотя в своё время был дико популярным. Англоговорящие товарищи называют его Platform Adventure или Arcade Adventure, а в русском языке устоявшегося названия нет. Но можно условиться на «аркадном квесте» — почему бы и нет?

Владельцам ZX Spectrum этот жанр, скорее всего, известен по серии игр про Диззи. Помимо привычной беготни с прыжками в стиле Super Mario Bros., в таких играх нужно решать разные задачки‑головоломки и общаться с персонажами.

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

Аркадные квесты всегда вызывают живой интерес посетителей Яндекс Музея, потому что геймплей кардинально отличается от того, к чему они привыкли. Сейчас этот жанр не очень востребован: платформеры и прочие аркады выходят отдельно, а квесты и прочие приключенческие игры — тоже сами по себе. Разумеется, есть исключения, но их мало, и это, как правило, инди‑игры, не претендующие на широкую известность и большие продажи.

Но в 80-е аркадные квесты гремели если не на весь мир, то как минимум на всю Европу. Игры этого жанра попадали в топы продаж, а то и вовсе занимали в них первые места. Наибольшая популярность, само собой, досталась вышеупомянутому Диззи, поэтому аркадные квесты частенько называют «диззиподобными» играми. Вот только это определение не очень справедливое, ведь жанр зародился за три года до появления Dizzy — The Ultimate Cartoon Adventure.

Нет, первым было отнюдь не улыбающееся яйцо в боксёрских перчатках. Первым был простой британский трудяга по имени Уолли Уик. А игрой, породившей целый жанр, — Pyjamarama

Читать далее

Ядро Linux: Реально ли это просто программа?

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

Привет всем!

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

Я решил сам разобраться и доказать: ядро Linux — это просто исполняемый файл. Никакой магии. Его можно взять, скомпилировать (или просто скопировать) и запустить, как любой другой бинарник.

Сейчас мы проделаем пару простых но крутых экспериментов. Цель не столько повторить их, сколько построить в голове четкую картину, как вообще Linux устроен и как его компоненты общаются.

Но сперва — а что это вообще за ядро?

Читать далее

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

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

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

Привет! Я лид системных аналитиков в департаменте корпоративных систем ЛАНИТ. В этой статье я расскажу, как писать качественные постановки на разработку информационной системы. 

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

Читать далее

Редчайший прототип Motorola E398, который работал на… Linux

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

Помните мою статью про историю моддинга и аппаратную платформу Motorola E398? Если ещё не читали, то рекомендую ознакомиться. А тем временем у @EXL нашёлся редчайший прототип E398, который разработали в России и он работал на Linux! Если интересно почитать его историю и что у него внутри - жду вас под катом.

Читать далее

NetBSD: вторая жизнь Nintendo Wii. Как и зачем я установил эту ОС на игровую консоль

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

Привет, Хабр! Мое плотное знакомство с консолями Nintendo началось с Wii U. Так уж получилось, что лучшей серией слешеров я считаю Bayonetta. А поскольку вторая часть вышла как эксклюзив для Wii U, мне пришлось приобрести приставку. Потом заодно познакомился с The Legend of Zelda — и понеслось. Примерно то же самое случилось и с выходом Bayonetta 3 — обзавелся Nintendo Switch. Что самое интересное, у меня никогда не было обычной Wii.

Волей случая мне в руки попался замечательный экземпляр, но на него я решил посмотреть с точки зрения железа. Внутри меня ждал любопытный конфиг из PowerPC процессора IBM Broadway + SoC производства ATI, который отвечает за графику, а также устройств ввода-вывода.

Читать далее

Я мечтал о фотоаппарате, которого не существует, поэтому создал его сам

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

Leica G9ii

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

Камера названа так, потому что внутренности взяты у Lumix G9ii, а корпус — это реплика Leica M, изготовленная на станке с ЧПУ. Также я изготовил новые гибкие кабели для соединения сменивших положение кнопок и колёс управления.

Зачем?

Много лет у меня была мечта написать собственное ПО для камеры или, по крайней мере, спрятать неиспользуемые меню; я хотел избавиться от бойлерплейта и оставить только самое необходимое. Я фотограф-любитель, поэтому, например, практически не использую никаких других режимов, кроме A и M. Хоть я и программист, такая задача была бы для меня невыполнимой: мне не хватает навыков в реверс-инжиниринге двоичных файлов, работе с шестнадцатеричным кодом; кроме того, если что-то пойдёт не так, я рискую превратить камеру в кирпич.

Читать далее

Экстремальное масштабирование: концепт многочиплетного пакета Intel

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

Intel показала концепт экстремально крупного многочиплетного пакета — сборки из десятков вычислительных и вспомогательных кристаллов, объединенных в один модуль. Его площадь превышает 10 000 мм². Пока это экспериментальная архитектура для будущих ИИ-ускорителей и HPC-систем. Задача эксперимента — попробовать обойти физические ограничения монолитных чипов и заодно продемонстрировать пределы современных технологий упаковки, памяти и техпроцессов. Давайте попробуем разобраться, что это и как работает.

Читать далее

Будущее дронов: встроенный ИИ

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

Всё больше БПЛА используют машинное зрение для навигации и распознавания объектов. Обычно предполагается, что это система с ограниченными вычислительными возможностями, которой управляет оператор удалённо, а движок ИИ работает из облачного сервиса с подключением через интернет.

Но что, если на БПЛА поставить локальную модель и мощный GPU-ускоритель, чтобы ИИ работал локально и самостоятельно принимал решения? Несколько лет назад такое казалось фантастикой. Но сейчас прогресс в области БПЛА настолько бурный, что ситуация меняется каждые несколько месяцев.

Посмотрим, какие ИИ-ускорители устанавливают в современные дроны.

Читать далее

Перестань вайбкодить: почему «разработка на расслабоне» убьет твою карьеру

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

Ты пишешь код быстрее, чем когда-либо. IDE угадывает твои мысли, тикеты закрываются. Кажется, что ты хакнул систему и поймал тот самый «вайб». Но есть нюанс: если завтра отключат интернет и помощников, сможешь ли ты написать сложную логику с чистого листа?

Читать далее