Как стать автором
Обновить

Разработка

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

Меховой Интернет: как появляются ваши любимые книжные обложки

Время на прочтение9 мин
Количество просмотров470

Привет, Хабр!

В предпоследние выходные мая мне традиционно довелось работать на книжном салоне, проходившем в Санкт-Петербурге на Дворцовой площади. Как многие знают, я представляю компьютерную редакцию издательства «БХВ», но внимательные читатели, которые любят рассматривать служебные страницы в хороших книгах, до сих пор могут найти мою фамилию и в нетленке издательства «Питер», в котором я провёл сложный, но незабываемый и формообразующий отрезок жизни.  Мне нравится работать на стендах, так как я вижу моего читателя, а также не без удовольствия наблюдаю за вашими муками выбора, в особенности – выбором книг в подарок. Что касается последней моей вахты, состоявшейся в полуштормовую погоду по ту сторону тента, очень порадовало, что на наш стенд заглянула уважаемая Юлия Воротникова, имя которой очень громко звучит для заядлых участников интеллектуальных игр. И она, и некоторые другие посетители, и в особенности две-три (не помню) милейшие девушки в субботу залюбовались нашим стендом, уставленным книгами, оригиналы которых вышли в издательстве «O’Reilly». Мне не раз пришлось объяснять, каким образом возникла столь необычная идея — иллюстрировать обложки компьютерных книг роскошными изображениями животных. Поэтому я решил вновь пересказать на Хабре эту историю, которую более 12 лет назад уже затрагивал уважаемый @miga. В статье будет много картинок, которые для меня все до единой укладываются во фразу, прочитанную на странице крайне харизматичного человека – уважаемого Виктора Жукова, lead-гитариста выдающейся симфо-метал группы Nimea из Санкт-Петербурга: «... и когда говорят - плагиат, я говорю - традиция!»  

Читать далее

Новости

Организация собственной библиотеки на сервере с веб-интерфейсом

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров620

Привет! Наверное, у каждого рано или поздно возникает вопрос: как упорядочить хаос с купленными (да, мы же против пиратства?) книгами в форматах PDF, DJVU и других, так чтобы:

- получить к ним доступ как с мобильного устройства, так и с любимого ПК или Mac;

- сохранять прогресс чтения между устройствами;

- не терять книги в куче папок.

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

Читать далее

Как набираться опыта в разработке

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров485

Как набираться опыта в разработке: пет-проекты, бизнес-задачи и путь вверх

Привет! Я Ник Уайт, frontend-разработчик. Рассказываю честно и по делу — как я набирался опыта, чем учебные проекты отличаются от настоящих, почему ошибки — это круто, и как не перегореть, прокачивая скиллы. Если ты на старте или хочешь расти — будет полезно.

Читать далее

Кто быстрее? Тестируем скорость языков программирования на Эльбрусе

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

Приветствую! Я разработчик в компании НИЦ ЦТ. Мы разрабатываем операционную систему, адаптированную под российские процессоры Эльбрус. Процессоры Эльбрус работают на своей оригинальной архитектуре, которая имеет свои преимущества и недостатки. В частности, интерпретируемые языки программирования не блещут производительностью. Вот мы и решили провести сравнительное тестирование различных языков, компиляторов и интерпретаторов чтобы выяснить, что лучше использовать для разработки под Эльбрус.

В статье представлены результаты бенчмарка Programming language benchmark, основанного на решении набора задач идентичными алгоритмами, реализованными на разных языках. Это позволяет оценить эффективность генерируемого компиляторами (или интерпретаторами) кода для выбранной архитектуры, поскольку скорость выполнения напрямую зависит от архитектурных особенностей процессора. Учитывая использование одного ядра процессора в тестах, результаты отражают потенциал оптимизации кода на низком уровне для каждого языка программирования в рамках заданной аппаратной платформы. Полученные данные позволят разработчикам делать более обоснованный выбор языка программирования для задач, критичных к производительности, с учетом специфики целевой архитектуры.

Читать далее

Rust для ребятишек

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров763

Привет.

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

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

Тут я постарался посмотреть на ситуацию с точки зрения "книжки с картинками", как он живет, а не как мы привыкли.

Дисклеймер — в статье речь не про Copy-тип, к которым относятся, например,  i32, f64, bool, char, &T. А про move-типы (например, String), которые перемещают значения.

Ну, попробуем.

Отталкиваемся от того, что в Rust значением (ячейкой памяти) может владеть только одна переменная. Введем обозначения: let — "позволим", = — "владеть".

Получаем следующее.

Читать далее

Остерегайтесь «песочных террористов»

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.5K

Представьте: вы разработчик коммерческого ПО. В один прекрасный день пользователи начинают сообщать, что популярный блокировщик uBlock Origin не дает скачать ваш продукт. Никакой рекламы или сторонних баннеров в приложении нет и никогда не было. Невозможно? Вчера мы столкнулись именно с такой целенаправленной атакой на репутацию. Под катом — интриги, расследование, анатомия атаки и выводы, которые могут спасти и ваш проект.

больше чернухи

От кнопки до продакшена: как мы делаем Telegram Mini Apps

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

Привет! Мы Дима и Илья, работаем в команде ТМА-разработки Doubletapp и расскажем, как создать Telegram Mini App на стеке React + Python.

Telegram Mini Apps — это мощный инструмент, который позволяет создавать интерактивные веб-приложения, работающие прямо внутри мессенджера. Они идеально подходят для игр, маркетплейсов, сервисов бронирования и многого другого.

В этом туториале мы разберем процесс создания Mini App:

настроим проект
создадим фронтенд на React с поддержкой Telegram SDK
реализуем бэкенд на Python (Django)
свяжем все компоненты и развернем приложение.

Читать далее

Опыт TAPP Group: импортозамещение в горно-обогатительной отрасли

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров266

Как мы перестроили производство под санкции и сохранили эффективность

Привет, Хабр!

С вами снова Дмитрий Лохов, генеральный директор TAPP Group. В прошлой статье я рассказывал о том, как внедрение нейросетевых технологий помогло нам добиться 15% роста извлечения полезных компонентов на обогатительных фабриках. Сегодня хочу поделиться еще более масштабным и сложным опытом — как наша компания и вся отрасль пережили санкционный шок 2022 года, научились работать в новых реалиях и даже нашли неожиданные возможности для развития в этих непростых условиях.

Я расскажу, какие решения сработали, а какие оказались тупиковыми, как менялась стратегия под давлением обстоятельств и какие уроки TAPP Group извлекла из этого кризиса.

Эта статья будет интересна:

Читать далее

ИИ-агенты для автоматизации бизнеса: задачи, примеры и внедрение

Время на прочтение4 мин
Количество просмотров468

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

Ответ на эти вопросы всё чаще звучит в двух буквах – ИИ. Искусственный интеллект, в частности ИИ-агенты, предлагает новый уровень автоматизации бизнес-процессов. 

Читать далее

Вычисление функции потерь и градиентов в AI переводчике

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров198

Привет, Хабр!

Меня зовут Алексей Рудак, я основатель компании Lingvanex, которая разрабатывает решения в области машинного перевода и транскрипции речи. Продолжаю цикл статей о том, как устроен переводчик на нейронных сетях изнутри. И сейчас хочу рассказать про работу функции потерь. Для тренировки модели используется opensource фреймворк OpenNMT-tf.

Статья предоставляет всесторонний обзор вычисления функции потерь в машинном обучении, особенно в контексте моделей последовательностей. Она начинается с подробного описания того, как матрица логитов, генерируемая после преобразований в декодере, обрабатывается через функцию cross_entropy_sequence_loss. Эта функция играет ключевую роль в измерении расхождения между предсказанными выводами и фактическими метками. В статье описаны шаги, включая преобразование логитов в подходящий формат, применение сглаживания меток для создания сглаженных меток и вычисление кросс-энтропийных потерь с использованием softmax. Каждый этап подробно объясняется, чтобы было понятно, как каждый компонент вносит вклад в общую оценку потерь.

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

Читать далее

TUI-интерфейсы не обязаны быть болью. Я написал свой с мышкой

Время на прочтение2 мин
Количество просмотров1.2K

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

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

Читать далее

Earcut на битах

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.1K

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

Ампутировать

DIY: Делаем тупой кондиционер умным и управляем им через телеграм бот

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

Наступило лето, а вместе с ним и жара. И вот тут-то и приходит на помощь кондиционер. Но что делать, если у вас нет умного кондиционера, а обычный кондиционер не позволяет управлять им удаленно? Ответ прост: сделать его умным своими руками!

Устали вставать ночью, чтобы выключить кондиционер? Или хотите управлять им из другой комнаты? Тогда это руководство для вас!

Читать далее

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

Никто не читает старые статьи… базу, так сказать, основу…

Время на прочтение7 мин
Количество просмотров1.9K

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

Для себя и, надеюсь, кого-то ещё, я предлагаю эти три разбора, на мой взгляд, основополагающих статей мира ML. Приятного прочтения.

Читать далее

Как расширенные статистики помогли раскрыть неочевидную аномалию в VACUUM PostgreSQL

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

Эксперт Postgres Professional Андрей Зубков «нырнул» в глубины VACUUM и выяснил, что детализированная статистика может выявить глубинные проблемы, которые критически влияют на производительность. Расскажем о том, что скрывалось в глубине PostgreSQL

Читать далее

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.9K

Все мы с этим сталкивались: вроде бы сервис работает, графики зелёные, ресурсы свободны — а пользователи всё равно жалуются. Открываешь мониторинг — CPU в порядке, память не забита, места на диске полно. А люди продолжают писать: «У вас тормозит». Знакомо?
Давайте разберёмся, как настроить мониторинг так, чтобы проблемы ловились сразу — ещё до того, как начнут ломиться сообщения в поддержку.

Читать далее

Новая фича в Java 21: Виртуальные потоки: новые возможности для I/O bound микросервисов

Время на прочтение7 мин
Количество просмотров2.1K

Привет, Хабр! Я Иван Попов, ведущий инженер ЦК платформенных и интеграционных решений РСХБ-Интех. Java — мой самый любимый язык программирования, я всю жизнь работал только на нём. Сейчас я работаю в банке и хочу разрушить стереотип  о том, что в банках все работают на Vegas. На java мы очень много работаем, тем более если видим, что новая технология позволяет нам оптимизировать процессы разработки (а количество интеграций огромное). 

Расскажу о новой фиче виртуальных потоков в Java 21, которая призвана повысить эффективность многопоточного кода.  

Читать далее

DRF captcha своими руками

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров266

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

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

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

Читать далее

Реверс-инжиниринг индикатора воздушной скорости 1977 года

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.9K

Как работает старый индикатор воздушной скорости? CuriousMarc приобрёл такое устройство для своего проекта, но при нём не было документации, поэтому я выполнил его реверс-инжиниринг. Этот индикатор использовался в панелях кокпитов таких самолётов бизнес-класса, как Gulfstream G-III, Cessna Citation и Bombardier Challenger CL600. Судя по датам на транзисторах, он был изготовлен примерно в 1977 году.

Можно было бы ожидать, что индикаторы на панели управления самолётом — это простые круговые шкалы. Но за этой шкалой спрятана большая коробка массой 1,27 килограмма со сложной системой двигателей, шестерён и потенциометров обратной связи, управляемой двумя электронными платами. Но при всей этой сложности, в индикаторе нет ничего особо «умного»: стрелки просто указывают напряжение, передаваемое от вычислителя воздушных параметров. В этом посте я вкратце опишу свои находки.

Читать далее

Как выстроить работу с фичами в мобильной разработке — и не плакать

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров142

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

Читать далее
1
23 ...