Обновить

Разработка

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

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

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

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

Меня зовут Максим Кокряшкин, я занимаюсь разработкой языковых рантаймов в Tarantool. Это решение класса middleware, разрабатываемое VK Tech, сочетающее в себе базу данных in-memory и application-сервер. Как раз таки наш application-сервер, который позволяет писать логику и хранимые процедуры, работает на LuaJIT

Читать далее

Почтовая корова? Как поднять свой почтовый сервер Mailcow

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

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

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

Читать далее

Когда VPN душат, в бой идёт SOCKS5: что нового в ProxiFyre 2.0

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

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

Моя собственная схема — домашний сервер за WireGuard-эндпоинтом — уже не раз демонстрировала странности: внезапные падения скорости, потеря UDP-пакетов (особенно в мобильных сетях). Всё вроде работает, но как-то не так: туннель подключается, но затем «виснет» или показывает подозрительно низкую пропускную способность. В таких случаях надёжным обходным путём становится туннелирование TCP-трафика через SOCKS5-прокси, например, поверх SSH.

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

Читать далее

Самый быстрый способ нахождения гласной в строке

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

Недавно меня заинтересовала такая задача: как лучше всего определить, что в строке есть гласная?

Казалось бы, тривиальный вопрос, правда?

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

В этом посте я рассмотрю 11 способов обнаружения гласных, алгоритмический анализ, дизассемблирование байт-кода Python, реализацию CPython и даже исследую опкоды скомпилированного регулярного выражения. Поехали!

Читать далее

Рукописный редактор на Python: инструкция для тех, кто хочет «рисовать» код

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

Привет, меня зовут Лёня! Я автор YouTube‑канала eleday о программировании на Python. Недавно в школе была проверочная работа и мне пришлось писать код на бумаге. Такой подход показался странным: все-таки программа может исполняться только на компьютере и логично набирать ее там же. Подобная цепочка рассуждений привела к интересной идее — редактору рукописного ввода. В этой статье расскажу о задумке и деталях ее реализации. Создадим виртуальный лист, на котором можно набросать код от руки — и он будет исполняться!
Читать дальше →

Введение в RawTherapee

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.3K
В эту программу влюбился с первого запуска, так она мне понравилась продуманным и проработанным интерфейсом и огромным количеством настроек. К тому моменту у меня был опыт работы с Adobe Camera RAW, встроенным в Фотошоп, и Capture NX — фирменным проявщиком от Nikon. Но Rawtherapee вытеснила их, и я так к ней привык, что ни к одной программе для обработки RAW не притрагивался. Даже популярный Lightroom прошел мимо.

Я много лет увлекаюсь съёмкой и обработкой цифровых фотографий и подготовил для вас курс в формате быстрого старта. Расскажу только самое важное и постараюсь это сделать не скучно.


Rawtherapee ведёт свой жизненный путь с 2004 года, когда её автор Gábor Horváth экспериментировал с самописным софтом для обработки RAW с его цифровой камеры. Вначале код программы был закрытым, но с третьей версии (с 2011) автор публикует исходный код под лицензией GPL, и в проект приходят сторонние разработчики. Текущая версия 5.10 доступна для скачивания с официального сайта и работает под Windows, LINUX и macOS.
Читать дальше

Рептилоиды победили… но это не точно

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

На свете есть много всяких дремучих мракобесов: антиваксеры, плоскоземельцы, любители кошек, евроскептики и проч. Я вот, например, нейроскептик. Может тут особенно и гордиться‑то нечем, но уж какой есть. Последовательный и упорный. Но честный и научно‑добросовестный. Поэтому, заметив нездоровую истерию в недружественной прессе по поводу грядущего (почти завтра) AGI полез разбираться, чего ж там такого ужасного натворили с chatGPT за последнее время. И таки да, временами действительно это выглядело пугающе, но все таки еще не все потеряно....

Читать далее

Как сделать компьютерную память из ржавых гвоздей и нейросети — из медных проволок?

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.9K
Картинка — Kaboompics, Flatart, Freepik

Сегодня мы поговорим о таком интересном классе электронных компонентов, который носит название «мемристоры» и позволяет даже строить на их основе нейросети.

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

В последнее время мы привыкли, что под понятием нейросетей подразумеваются определённые программные структуры. Однако мемристоры позволяют строить нейросети на физической основе! О_о

Аппаратные физические нейросети… Как вам такое? :-) Весьма близко к тому, что мы видим в природе, кстати говоря…
Читать дальше →

Titan OS: как я впервые с ней познакомился и что тут с разработкой приложений

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

Приятным событием на этой неделе стала покупка нового телевизора. Гуляя по магазину и любуясь ценниками, я заметил, что у моделей Philips и AOC в графе операционной системы стоит доселе неизвестная для меня Titan OS. Про Android TV, Tizen и WebOS был наслышан, поэтому подумал, что это просто какой-нибудь переделанный вендором Android, не более. По большому счету мне было все равно: источником изображения я планировал сделать компьютер. В итоге взял Philips 9000er series — UHD 4K телевизор с фирменной подсветкой Ambilight и Mini-LED дисплеем на 144 Hz. Но главное, внутри живет та самая Titan OS. Дальше о ней и расскажу.

Читать далее

Электроника в вопросах и ответах 2

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели8.8K

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

Всё просто: 10 участников написали 20 вопросов и дали на них 182 ответа. Авторство вопросов и ответов анонимно, а ответы свёрнуты под спойлеры, чтобы читатели могли поотвечать на вопросы без подсказок.

Ответить на вопросы смежников

Весна пришла — пора паять! 5 проектов на малинке, чтобы не скучать

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

Март — время, когда хочется заняться чем-то новым. У кого-то это сад, у кого-то — ремонт, а у гиков — электроника на Raspberry Pi. В сегодняшней подборке мы собрали пять свежих проектов на «малинке»: и шагающий крипер из Minecraft, и кибердек в духе 80-х, и стол, который рисует узоры в песке. Все по-настоящему: с пайкой, 3D-печатью и фантазией. Подробности — под катом.
Читать дальше →

Тестирование с интеллектом: Пилотный проект внедрения ИИ в РСХБ-Интех

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

Привет! Я Антон Бородин, техлид проекта внедрения ИИ в процессы тестирования в РСХБ-Интех, занимаюсь применением ML/AI технологий. В этой статье расскажу о том, как мы внедряли технологии искусственного интеллекта в тестирование, предложу методики разработки API и UI-автотестов, основанные на ИИ, — текущие гипотезы, которые мы используем в работе. И, конечно, покажу, пример использования LLM для генерации автотестов.

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

Читать далее

Математики несколько десятилетий не могли решить, рационально число или нет

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

В июне 1978 года организаторы крупной математической конференции в Марселе, Франция, объявили о последнем добавлении в программу. Во время обеденного перерыва математик Роджер Апери представит доказательство того, что одно из самых известных чисел в математике — «дзета от 3», или ζ(3), как пишут математики, — не может быть выражено в виде дроби двух целых чисел. Оно оказалось тем, что математики называют «иррациональным числом».

Участники конференции отнеслись к этому скептически. Дзета-функция Римана является одной из центральных функций в теории чисел, и математики на протяжении веков пытались доказать иррациональность ζ(3) — числа, которое дзета-функция выдаёт при входном значении 3. Апери, которому было 61 год, не считался ведущим математиком. У него был говор, напоминающий деревенский, и репутация провокатора. Многие участники, предполагая, что Апери затеял сложный розыгрыш, пришли готовые ответить ему тем же. Как позже вспоминал один математик, они «пришли, чтобы навести шороху».

Читать далее

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

Умный дом с радио из Cyberpunk: как я написал расширение для Home Assistant

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

Два с половиной года назад я делал радио из игры Cyberpunk 2077 на базе проекта Ka-Radio32 и собственной интерпретации модели из игры. Радио спокойно использовалось по назначению все это время, но вот наступили новогодние праздники. Я решил настроить Home Assistant (HA) и объединить все домашние умные устройства в локальном хабе.

Часть устройств добавилась без проблем, другая — сопротивлялась и требовала дополнительных действий. Но самодельное радио стояло особняком: для проекта Ka-Radio32 нет ни официальной интеграции, ни пользовательской. Хотя у Home Assistant широкая документация, начать разрабатывать свое расширение довольно сложно. В этой статье я разберу основные этапы на примере интеграции с Ka-Radio32.
Читать дальше →

Самый странный лексический синтаксис, который я обнаружила, исследовав 42 языка программирования

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

Программирование — это не только алгоритмы и логика, но и удивительное разнообразие синтаксиса языков. Работая над новым средством подсветки синтаксиса для llamafile, разработчик Justine Tunney* исследовала 42 языка программирования — от классического C и экзотического Tcl до мощного Ruby. 

Justine делится своими открытиями о том, насколько причудливым и непредсказуемым может быть лексический синтаксис. Например, триграфы в C — устаревший инструмент для поддержки клавиатур с ограниченными символами, фиксированные длины строк в FORTRAN, вложенные комментарии в Haskell или строки с двойными квадратными скобками в Lua. Ruby вообще оказался чуть ли не самым сложным языком для подсветки из-за его контекстно-зависимого синтаксиса.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис

Читать далее

Шахматный движок на 84688 регулярных выражениях

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

В праздничные выходные мне пришло в голову, что я давно не занимался чем-то бессмысленным. Представляю вашем вниманию... Regex Chess: набор из 84688 регулярных выражений, которые при выполнении по порядку генерируют ход (валидный, то есть не совсем ужасный) для переданного в качестве входных данных состояния шахматной доски. [Прим. переводчика: здесь в оригинале статьи есть интерактивный виджет, позволяющий сыграть с движком.]

Вот вся программа, которая делает ходы против игрока (серьёзно, я не шучу, она действительно такая короткая):

let regex_list = [/* очень длинный список регулярных выражений */]
let board = "rnbqkbnr / pppppppp / 8 / 8 / 8 / 8 / PPPPPPPP / RNBQKBNR w KQkq - 0 1";
for (regex of regex_list) {
board = re.replace(regex.pattern, regex.target)
}
display(board)

Прочитав этот пост, вы поймёте (надеюсь), как возможна эта последовательность регулярных* выражений, а также что делают конкретные регулярные выражения.

* Снобы могут заявить что-то типа «Вы сказали, что будете использовать регулярные выражения, но они не регулярные!" Но меня это не волнует.

Как всегда, код проекта выложен на GitHub.

Читать далее

Как сделать анимацию разными способами: CSS, WebP, Canvas, Lottie, Spine и секвенции

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

Привет! Меня зовут Даша, я фронтенд-разработчик отдела спецпроектов в KTS.

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

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

Читать далее

Вы виноваты в том, что мой ноутбук знает, где я нахожусь

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

В этом семестре мы проходим в Висконсинском университете курс «Введение в алгоритмы» (577), где нам рассказывают о способах доказательства корректности программ, динамическом программировании, сетевом потоке и обстоятельствах, при которых Дейкстра изобрёл свой алгоритм поиска кратчайшего пути.

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

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

Однако, наверно, разработчики поняли, что у системы есть уязвимость, которую невозможно пропатчить — друзья. Если они учатся на том же курсе, что и ты, то лёжа в кроватке, можно отправлять им сообщения со слёзными просьбами поделиться кодом.

Поэтому для лекторов-параноиков TopHat реализовала фичу «надёжной проверки посещаемости», которая, согласно описанию, определяет местоположение «по геолокации устройства и близости к аудитории и другим студентам».

Читать далее

Как работают ИИ-агенты и кому они на самом деле нужны

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

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

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

Читать далее

Не рейт-лимитером единым: как управлять нагрузкой в микросервисах

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

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

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

Поехали!