Pull to refresh
-9
0.1
Антон @Acuna

Разработка ПО

Send message

Как новый компилятор K2 ускоряет компиляцию Kotlin на 94%

Level of difficultyMedium
Reading time10 min
Views11K

Привет, меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

Не за горами выпуск новой версии Kotlin 2.0, основной частью которого является изменение компилятора на K2. 

По замерам JB, K2 ускоряет компиляцию на 94%. Также он позволит ускорить разработку новых языковых фич и унифицировать все платформы, предоставляя улучшенную архитектуру для мультиплатформенных проектов.

Но мало кто изучал, как работает K2, и чем он отличается от K1. 

Эта статья освещает нюансы работы компилятора, которые будут полезны разработчикам для понимания, что же JB улучшают под капотом, и как это работает.

Читать далее
Total votes 57: ↑57 and ↓0+63
Comments16

Мы хотим, чтобы серверы падали одновременно

Level of difficultyEasy
Reading time6 min
Views17K

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

Сервера, которые смущали заказчика работали в роли бэкенда для хранения видеофайлов. По сути, это было множество узлов, содержащих десятки терабайт видеофайлов, которые предварительно были нарезаны в разном разрешении конвертерами. Затем, все эти миллионы файлов отдавались во внешний мир с помощью nginx + kaltura, что позволяло перепаковывать на лету mp4 в сегменты DASH/HLS. Это позволяло хорошо переносить даже высокие нагрузки, отдавая плеером только нужные сегменты без резких всплесков.

Проблемы появились тогда, когда встал вопрос с георезервированием и масштабированием при росте нагрузок. Сервера внутри одной группы резервирования умирали не синхронно, так как представляли были весьма разнообразным зоопарком с разными провайдерами, шириной канала, дисками и RAID-контроллерами. Нам предстояло провести аудит всей этой красоты и перестроить почти с нуля весь мониторинг с методологией управления ресурсами.

Читать далее
Total votes 40: ↑38 and ↓2+54
Comments36

На практике пробуем KAN – принципиально новую архитектуру нейросетей

Level of difficultyMedium
Reading time5 min
Views28K

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

Однако теперь все может измениться. В KAN (Kolmogorov-Arnold Networks) исследователи реализовали перемещение функций активации с нейронов на ребра нейросети, и такой подход показал блестящие результаты.

Читать далее
Total votes 57: ↑56 and ↓1+75
Comments15

Оживляем неизвестный дисплей от японского поезда/автобуса

Level of difficultyMedium
Reading time7 min
Views18K
Как-то раз, очередным томным субботним вечером, я в очередной раз листал от нефиг делать Yahoo! Auctions — одну из крупнейших японских сетевых барахолок. Внезапно, среди рекомендуемых лотов появился вот такой внушительных размеров электровакуумный дисплей:



Однако, рулить дисплеем, как правило, та ещё задача. «Особенно если динамическая индикация, да ну его, влом!» — подумал было я. Но у того же продавца обнаружилась и, судя по всему, управляющая плата:



На фотографии виднеется 8085 процессор, 8251 UART и ПЗУшка — казалось бы, дизассемблируй себе, разбирай протокол, да просто с ардуины выводи что угодно. Да ещё и за одну йену, это прям даром! После этого я решил всё же попытать удачу и выхватить этот дисплей. Тем более, что давно уже хотелось какие-нибудь красивые часики в комнату…
Читать дальше →
Total votes 179: ↑179 and ↓0+202
Comments43

Как работают алгоритмы музыкальных стримингов. Разбираем на примере

Reading time9 min
Views9.7K

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

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

Так как они это делают?

Читать далее
Total votes 34: ↑32 and ↓2+35
Comments19

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Level of difficultyMedium
Reading time11 min
Views6.3K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!
Total votes 23: ↑23 and ↓0+23
Comments7

Красавица и HTML Injection. Почему HTMLi не только про дефейс

Level of difficultyMedium
Reading time27 min
Views4.9K

Привет, Хабр. Сегодня мы посмотрим на достаточно тривиальную тему с совсем нетривиальной стороны. Пожалуй, для каждого вебера HTML-инъекции являются темой, которой зачастую уделяют не очень много внимания. Взять даже собеседования: когда в последний раз вас спрашивали не об XSS'ках, а об HTML-инъекциях?

Сегодня я попробую рассказать про большую часть интересных векторов, которые мы можем использовать при ограничении в применении JS. Не стесняйтесь пользоваться оглавлением, потому что статья подготовлена для разного уровня читателей. Чтобы не обделять новичков, я достаточно подробно описал работу HTML, ее структуры и даже то, как HTML парсится браузером!

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments2

Перерастая reverse proxy — технология удаленной защиты и оптимизации сайтов без изменения А-записей DNS

Reading time7 min
Views27K


За последний месяц средняя нагрузка на интернет ресурсы сильно выросла из-за повсеместного перехода на дистанционную работу и обучение (как именно читайте в нашем материале «Пандемия и трафик — взгляд со стороны оператора связи». Особым спросом пользуются онлайн кинотеатры и игры, платформы для онлайн обучения, сервисы по заказу доставки еды. В таких условиях потенциальный экономический ущерб от недоступности ресурса, в том числе из-за DDoS-атак, особенно высок. Какое решение выбрать для защиты своего проекта?

В материале вас ждут:

  • Ограничения защиты через классический reverse proxy со сменой А-записей DNS, о которых часто умалчивают провайдеры.
  • Какое решение выбрать, чтобы избежать связанных с этими ограничениями рисков?
  • Реальный кейс с защитой крупного проекта, без переезда и смены A-записей.
  • Общие рекомендации по организации защиты интернет ресурса.
Читать дальше →
Total votes 9: ↑5 and ↓4+5
Comments1

Теоретические основы всех популярных алгоритмов машинного обучения и их реализация с нуля на Python

Level of difficultyHard
Reading time1 min
Views24K

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

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments21

Как устроено пространство, в котором думают языковые модели?

Level of difficultyHard
Reading time5 min
Views17K

С момента выхода первой статьи «Attention is All You Need» я с жадностью и любопытством, присущими любому исследователю, пытаюсь углубиться во все особенности и свойства моделей на базе архитектуры трансформер. Но, если честно, я до сих пор не понимаю, как они работают и почему так хорошо обучаются. Очень хочу разобраться, в чём же причина такой эффективности этих моделей, и есть ли предел их возможностей?

Такому изучению трансформеров «под микроскопом» и посвящена наша научная работа, только что представленная на конференции EACL 2024, которая проходила на Мальте — «The Shape of Learning: Anisotropy and Intrinsic Dimensions in Transformer-Based Models». В этой работе мы сфокусировались на наблюдении за пространством эмбеддингов (активаций) на промежуточных слоях по мере обучения больших и маленьких языковых моделей (LM).

Читать далее
Total votes 44: ↑43 and ↓1+55
Comments18

Супер-эффективная архивация — сжимаем все что угодно до 32 байт

Level of difficultyMedium
Reading time4 min
Views34K

Будем разрабатывать архиватор, который может сжимать данные любого размера и типа до 32 (38 с метаданными) байт. Рассмотрим достоинства и недостатки данного алгоритма, возможные способы улучшения его работы.

Распаковать
Total votes 96: ↑89 and ↓7+108
Comments79

Анонимная P2P-сеть внутри централизованного HTTPS-сервера: вшиваем паразитный трафик всеми правдами и неправдами

Level of difficultyHard
Reading time25 min
Views13K

Государственная цензура есть многогранный монстр, закрывающий путь не только к зарубежной информации посредством блокировки ресурсов и их методов обхода, в лице Proxy, VPN, Tor, но также и постоянно пытающийся подавлять неподконтрольные безопасные и анонимные коммуникации внутри самого себя. Гос.структуры ради этого готовы пойти буквально на любые ухищрения и запугивания, включая штрафы (дело Threema, отказ передачи ключей шифрования), уголовные преследования (дело Дмитрия Богатова, дело по VIPole), регулирование неконтролируемой криптографии (история запретов до 2016, запрет шифрования доменных имён), а также возможные бэкдоры в собственных криптоалгоритмах (Кузнечик и Стрибог). Рэкет становится для государства нормой жизни.

Читать далее
Total votes 42: ↑42 and ↓0+42
Comments7

Создание своего UEFI приложения

Level of difficultyMedium
Reading time5 min
Views40K

Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++

Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.

Читать далее
Total votes 72: ↑71 and ↓1+84
Comments80

Как мы разрабатывали свой Agile-велосипед и почему не используем популярные фреймворки (обзор и видео доклада)

Level of difficultyMedium
Reading time11 min
Views11K

Всем привет! На связи Сергей Гончарук, менеджер проектов компании «Флант». 30 ноября и 1 декабря 2023 года прошла конференция TeamLead++ Conf 2023. Ниже — текстовый вариант моего доклада с конференции про опыт «Фланта» в построении процессов управления задачами для Dev-части нашей DevOps-работы. 

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

Читать далее..
Total votes 21: ↑19 and ↓2+21
Comments8

Почему Facebook* не использует Git

Reading time8 min
Views40K

Я работаю над созданием Graphite, источником вдохновения для которого стал внутренний инструментарий Facebook. Когда я решил создать стартап с друзьями, то никогда раньше не слышал о Mercurial, хотя всегда страстно любил инструменты разработчика. Мой предыдущий опыт разработки включал в себя личные проекты, домашнюю работу в колледже, разработку для iOS в Google и развитие инфраструктуры в Airbnb. На протяжении всей моей карьеры использование git было таким же естественным, как воздух. Он настолько популярен, что лично я считал его единственным подходящим инструментом для создания изменений в коде и управления ими.

Забавно, что специалист по Mercurial Грегори Gregory Szorc работал рядом со мной в Airbnb, хотя я знал его только как приятного коллегу, но не представлял, что он контрибьютор.

В 2021 году мои коллеги по команде Томас и Ник раскрыли мне глаза. Они пришли из Facebook и, к моему удивлению, едва знали Git. Зато они имели глубокое понимание паттернов Mercurial и рабочего процесса Facebook на основе «многослойных diff» (stacked diff). Со временем они убедили меня в полезности этого паттерна и мы развернули направление развития компании, чтобы реализовать многослойные diff для разработчиков GitHub.

Но пост посвящён не нашему стартапу. Он о важном вопросе, не дававшем мне покоя последние три года. Почему фейсбукеры не пользуются Git? Зачем они выбрали Mercurial и создали на его основе собственные рабочие процессы? Я знаю что Google не пользуется Git, но это логично, культура разработки Google возникла на пять лет раньше Git. Facebook же был основан примерно в то же время, что и создан Git, около 2004 года, и ко времени, когда Facebook начал серьёзно выбирать инструментарий для управления исходниками, Git был старше и популярнее Mercurial. Так почему же Facebook не использует Git?

Читать далее
Total votes 63: ↑55 and ↓8+62
Comments299

Криптография в Java. Класс MessageDigest

Reading time2 min
Views24K

Привет, Хабр! Представляю вашему вниманию перевод третьей статьи "Java MessageDigest" автора Jakob Jenkov из серии статей для начинающих, желающих освоить основы криптографии в Java.

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments1

Подробное руководство по установке Android-x86

Reading time3 min
Views249K
Эмулятор который идет в комплекте с Android SDK, не очень шустрый.
Основная идея использовать VirtualBox + Android X86, для преодоления проблем с производительностью.

Что нам необходимо:
Среда разработки Eclipse + Android SDK тут,
а также VirtualBox.

Под катом много картинок, и процесс установки, а также некоторые полезные советы.
Читать дальше →
Total votes 117: ↑109 and ↓8+101
Comments32

Великолепные темы для ADW Launcher, Go Launcher EX, MIUI ROM

Reading time2 min
Views66K
Представляю вам вольный перевод статьи "Outstanding Themes to Redesign Your Android"

Настраиваемость Android является одной из самых любимых черт этой операционной системы. Возможность настроить внешний вид всех аспектов операционной системы позволяет очень тонко и удобно настроить мобильный телефон для каждого пользователя. Легче всего настроить начальный экран и для него уже выпущено много лаунчеров. Все они различаются с точки зрения возможностей, производительности и дизайну, но и заимствуют они сильно друг от друга различные функции, позволяя пользователям выбрать наилучшее сочетание функционала и возможностей для себя. Некоторые из лаунчеров поддерживают темы — с помощью них вы можете изменить набор визуальных эффектов, иконки, виджеты, и различные фоновые изображения.
Осторожно: трафик! Под катом много картинок!
Total votes 54: ↑45 and ↓9+36
Comments30

Смотрю и слушаю где хочу. Интегрируем Chromecast в Android-приложение

Reading time12 min
Views14K


На улице я часто слушаю аудиокниги и подкасты со смартфона. Когда прихожу домой, мне хочется продолжить слушать их на Android TV или Google Home. Но далеко не все приложения поддерживают Chromecast. А было бы удобно.


По статистике Google за последние 3 года, количество девайсов на Android TV увеличилось в 4 раза, а число партнеров-производителей уже превысило сотню: «умные» телевизоры, колонки, TV-приставки. Все они поддерживают Chromecast. Но в маркете ещё много приложений, которым явно не хватает интеграции с ним.


В этой статье я хочу поделиться своим опытом интеграции Chromecast в Android-приложение для воспроизведения медиа-контента.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments9

Figma plugin API человеческим языком

Level of difficultyEasy
Reading time2 min
Views4K

Часть 1

Hello World!!!

Второй раз сталкиваюсь с написанием плагина для Figma и второй раз недоумеваю, зачем так сложно? Ну, в общем-то, ничего особо сложного нет. Но вот этот TypeScript, это зачем все? Установи модули, настрой публикацию. Сколько я не думал, единственное объяснение, зачем все это нужно, это защита от дурака. Типа, кому надо - разберется, а остальным и нечего лезть, говнокод плодить.

Ну так, мы развеем этот снобистский тренд и прорубим ход в API Figma для всех желающих.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0
1
23 ...

Information

Rating
3,127-th
Date of birth
Registered
Activity