Обновить
1000.83

Программирование *

Искусство создания компьютерных программ

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

Шутки и веселье в публичном Android API

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

Ранее я рассказывал об относительно малоизвестной и ныне удалённой строке-заполнителе в Android, использовавшейся в качестве пасхалки. Это был выдуманный оператор сотовой связи под названием El Telco Loco. Сегодня я расскажу о методах и других частях публично доступного Android API, которые могут показаться больше смешными, чем полезными. Это пасхальные яйца, шутки, видимые только разработчикам приложений для Android, но не обычным пользователям.

Читать далее

Минималистский графический интерфейс, на C++ / WTL, для консольного загрузчика

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

Введение

Всё началось с комментирования статьи: «[Как я написал современный GUI для yt-dlp на Python]( https://habr.com/ru/articles/930260/)».

Программа автора мне понравилась, и я обещал ему попробовать сделать аналогичный проект на C++ / WTL.

Так вот, не прошло и полгода, как первая версия аналогичной программы уже готова. Её рабочее название – MiniDL, а исходники доступны на сайтах:

http://polezp.narod.ru/Prg/MiniDL100.zip

и

http://lecole.free.nf/Prg/MiniDL100.zip

или

https://disk.yandex.ru/d/yGQDXbkpk6LPqw

Архив содержит также скомпилированные бинарники для 32-х и 64-х разрядных, релизных версий, под Windows («MiniDL32r.exe» и «MiniDL64r.exe»).

Естественно, создать конкурентный интерфейс профессиональной библиотеке CustomTkinter, для Питона, на сверхлегком движке WTL, за обозримое время, практически невозможно. Но такая задача и не ставилась. Хотелось просто реализовать идею автора – работать с удобной графической оболочкой для консольной программы, в данном случае – внешнем загрузчике медиа-контента из Ютуба и других, поддерживаемых им сайтов.

Ради простоты, пришлось отказаться от попытки реализовать все интерфейсные плюшки автора и ограничиться минималистским вариантом. Тем более что, лично меня он вполне устраивает. Более того, поскольку я привык работать в Total Commander, то там вполне удобно использовать и консольные программы, особенно в паре с командным файлом их запуска, что позволяет перенести туда все параметры командной строки. А, в случае с загрузчиком yt-dlp.exe ситуация оказалась еще лучше, так как, он поддерживает конфигурационный файл, с мощными настройками. Если их хорошо освоить, то, в принципе, ничего больше и не надо. Ведь, эти настройки позволяют легко скачивать не только аудио и видео файлы, но и субтитры к ним и тому подобное. Также, легко и просто указать каталог загрузки, но уже в нашей программе, и не мучиться, как автор, с сохранением их на рабочий стол.

Читать далее

Создаём AI-ассистента для код-ревью с нуля

Уровень сложностиСложный
Время на прочтение22 мин
Количество просмотров8.7K

С нуля создаем Node.js-сервис для GitHub, который использует LLM (OpenRouter) для построчного код-ревью Pull Request. Разберем: верификацию вебхуков, борьбу с непредсказуемостью LLM и превращение хаоса в отказоустойчивый инструмент.

Начать внедрение LLM

Почему model-first и где истина?

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

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

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

И вроде не велика проблема - делаем структуру в нашем любимом языке, такую же, как в БД и из наших кубиков складывается слово "счастье". Складываться-то оно складывается, но ненадолго. Очень быстро структура БД и структура в коде начинают разъезжаться. А если не начинают, то потыкайте в свой проект палочкой - скорее всего он уже умер. Как говорится "не щебечет дохлый щегол, а мёртвый проект не меняет свою структуру". Ну и далее по тексту...

Познать истину

Что такое дескрипторы в Python и почему вам следует о них знать

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

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

Читать далее

Первые шаги open source-контрибьютора: лучшие практики на основе тысячи проектов и руководства в стиле «с чего начать»

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

В блоге Beeline Cloud на хабре мы уже поднимали тему ключевых трендов в сфере open source. Сегодня мы подобрали материалы, которые помогут влиться в открытую разработку и стать контрибьютором: от рекомендаций для начинающих и даже «вредных советов» до тематического репозитория в стиле awesome-подборок.

Читать далее

Современная разработка или пиши тогда сразу в «Блокноте»

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

Организация рабочего пространства, будь что реального, что виртуального было всегда вопросом индивидуальным. Безусловно, порой есть best practictes: убрать всё лишнее с рабочего стола; отключить уведомления, иметь своё выделенное рабочее место. Вспоминаются сразу нон-фикшн литература о менеджменте пространства, психологии определённых ритуалов и атрибутов. Эта тема будто бы была актуальна всегда, и она настолько же исследована, насколько и индивидуальна: кто-то не может начать свой день, не погладив попугая на рабочем столе. Кто-то не может читать почту, пока не проведёт чайную церемонию, поливая телефон, мышку, колонку и прочее. Когда-то достаточно было просто стола и перфоратора, а сейчас сложно представить человека, работающего за компом без кресла - комбайна, которое затрагивает все частички твоей души в каждый конкретный момент; с механической клавиатурой, Дб нажатия клавиш которая должна быть всегда в пределах 55-60; диагональю монитора, чтобы он вмещал 2 любимые IDE, 1.5 любимых браузеров, 5 чатов с LLM, рабочий мессенджер (1 инстанст по каждой из работ). В каждой IDE 10 открытых pop-up’ов, 2 сплита на каждый буфер, 4 открытых таблиц, 7 активных докер exec bash процессов, 20 рабочих localhost вкладок и более 50 важных, но до сих пор не прочитанных; на каждое действие автокомплит + подсказка от агента + ai-powered copy/paste’ом c ai-powered буфером обмена с blazing fast и thread save обёрткой. Упс, не та тема уже; Общаясь с людьми, понимаешь, что всё чаще идёт сдвиг опциональных инструментов в первостепенные, и это то, о чем будет эта статья. Она не о хейте изобилия инструментария, она для рефлексии и инвентаризации того, что у вас уже есть.

Приоткрыть ящик холивара

.ap: удобный для ИИ формат патчей, который экономит мне часы

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

Привет, Хабр! Возможно, вы знаете меня по дайджестам проекта far2l, но сегодня хочу поделиться кое-чем другим. Это небольшая и очень полезная утилита и формат файлов для неё, которые родились из моей повседневной работы с AI-ассистентами (в том числе в процессе работы над тем же фаром). Штука получилась настолько удобной, что я решил поделиться ей с сообществом. Поехали!

Читать далее

Балансировка нагрузки: проблемы, решения, практические рекомендации

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

Один сервер — это точка отказа. Рано или поздно он не выдержит. Как только появляется второй, третий, десятый сервер, возникает вопрос: кто будет раздавать им работу? Эту роль и берет на себя балансировщик нагрузки.

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

Читать далее

Swift становится ближе. Разработка в контейнере c IDE для VSCode

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

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

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

Читать интересное

Вайб-кодинг уязвимостей или как AI роняет безопасность

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

Писать код с LLM — очень легко, просто и весело. Не нужно мучаться с документацией, не нужно фиксить баги. Вообще ничего не нужно. Только инструкцию в чат написать. Раз-два — и всё готово. Заманчиво? Да. Но у всего есть цена — и про неё важно помнить.

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

Читать далее

Чанковая загрузка артефактов CI/CD: оптимизация передачи файлов

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

Всем привет! Меня зовут Бороздин Филипп, я разработчик платформы GitFlic.

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

В данной статье я расскажу вам, как мы оптимизировали процесс загрузки артефактов CI/CD, используя чанковую загрузку.

Читать далее

Как нас попытались «положить» при запуске: история одной DDoS

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

Как нас попытались «положить» при запуске: история одного DDoS

Всем привет Мы — команда разработки ии‑ассистента для поиска работы, это третья статья, посвященная нашему продукту.

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

Читать далее

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

Чем ближе Хэллоуин — тем ниже скидка: запасаемся знаниями к зиме

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

Привет, Хабр. Это осенний дайджест для тех, кто откладывал учебу «на потом». В нем мы собрали 49 курсов по ключевым ИТ-направлениям: от разработки, инфраструктуры и QA до аналитики, ИБ и управления. С сегодняшнего дня на них действуют особые условия, подробности — под катом.

Перейти к дайджесту

Как открытые веса раскрыли секреты обучения GPT-5

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

Команда AI for Devs перевела статью, показывающую, что открытые веса — это не только про прозрачность, но и про утечку тайн обучения. На примере модели GPT-oss автор показывает, как можно восстановить части обучающего пайплайна и даже выявить, что GPT-5 видела фразы с сайтов для взрослых.

Читать далее

Вперёд к мечте! От JCUKEN к QWERTY на Специалисте

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

Когда в 19-летнем возрасте я покупал свой первый компьютер, то я очень сильно хотел купить БК-0010-01. Однако обстоятельства сложились так, что к моменту, когда у меня появилась необходимая сумма, в магазинах БК‑шек не осталось, и вообще ничего не осталось. На полке в «Электронике» лежало только невзрачное нечто с нарисованной клавиатурой и названием «ЛИК».

Читать далее

Из программистов в ИТ-панк-рок

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

Ты живёшь, а мир вокруг превращается в цифру. Было аналоговое - стало цифровое. Было живое - стало искуственное. И ирония в том, что мы, айтишники, и делаем эти изменения. Мы не просто свидетели Иеговы, мы сами это и кодим.

Но сколько в нашей работе курьёзных моментов. И сколько песен было сложено про любовь, и, скажем, осень. А вот про бессонный деплой, бесконечный рефакторинг, костыли, эпические баги - мало. Совсем мало. Может быть потому что нас, ИТ-шников мало? Да много нас, и с каждым годом нас только больше. На мой взгляд, про нас не поют просто потому, что про любовь все знают, а про ИТ-шные угары знаем только мы.

Читать далее

Настоящий тест для языков программирования — как они справляются с DOM-подобными структурами данных

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

Большинство тестов языков программирования — это синтетика. Мы сравниваем скорость сортировки массивов, подсчёт аллокаций и другие упражнения, которые почти не встречаются в реальной жизни.

А вот настоящие приложения — редакторы, движки, интерфейсы, базы данных — живут совсем в другом мире. Они управляют не числами, а сложными структурами объектов. И если присмотреться, почти все эти структуры сводятся к одной универсальной модели: DOM-подобному графу.

Читать далее

Хороший, плохой, цветной и быстрый

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

Давным-давно, когда с ездовым котом приключилась "записка шестая", а знания об аллокаторах и опыт их применения ограничивался линейным и системным, перебросили мою команду в помощь другой команде, которая занималась системами навигации больших судов. Ездовые коты, особенно нестарые - это такие создания, которые редко изучают документацию детально, а чаще бегло читают там про интерфейсы систем в проекте, malloc, new, системные аллокаторы и думают, что теперь-то точно понятно, как всё устроено. А потом приходит работа и такая: “Забудь всё, что ты знал. Ты не дочитал до страницы восемьсот что-то там РД, тут есть свой аллокатор - и он реально плохой”.

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

А вот почему нужны и важны ненормальные - объяснений почти нет, как и самих реализаций в открытом доступе. В этой статье я расскажу, какие повстречал ненормальные алгоритмы распределения памяти, чем они живут, кого едят, и почему иногда malloc делает вид, что он не при делах и таки да, malloc может возвращать null и ту проверку мы убрали зря.

Читать далее

Обзор Cursor 1.7: Пишем to-do приложение с ИИ-агентом

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

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

Читать далее

Вклад авторов