Все потоки
Поиск
Написать публикацию
Обновить

Все потоки

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

Яндекс.Разврат или анти-этичный ИИ

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

tl;dr: как обойти внутреннюю цензуру «Шедеврума» и получить то, что хочешь. Описание реализованных состязательных атак с примерами реализации. Без глубокого раскрытия механизма почему так получается.

Читать далее

Меня заставили повайбкодить

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

Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие фичи. Между тем временем и нынешним днём — целый пласт инструментов для автоматизации, бутстрапинга и шаблонизации разработки. Приходилось и хрюкать, и глотать. То, что всё это, мягко говоря, так себе — уже отдельная история. Местами стало даже хуже. Хуже, чем когда вы неделю возились с конфигом Webpack.

В этой статье мы рассмотрим вайбкодинг. В чистом виде так сказать.

Читать далее

Я уехал из России в испанскую глушь, купил дом среди гор и не жалею

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

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

Читать далее

Рынок эйчара

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

Однажды субботним вечером я, как полагается тру-программисту, пилила новую фичу в своем пет-проекте. И тут зазвонил телефон…

- Меня зовут N. Вы откликались на вакансию xxx?

Читать далее

Что будет, если не использовать TCP или UDP?

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

Однажды мне стало интересно: а что будет, если отправить пакет с несуществующим транспортным протоколом? Не TCP, не UDP, не ICMP — вообще что-то выдуманное. Пропустит ли его ОС? Дойдет ли он хотя бы до сетевого интерфейса? Не зарежет ли его какой-нибудь промежуточный маршрутизатор? А вдруг он еще и быстрее обычного дойдет, потому что никто не знает, что с ним делать?

Ответа у меня не было. Так что я решил проверить.

Эксперимент и его результаты

Пишем один «exe», который работает на 3-х разных ОС без перекомпиляции

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

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

Недавно я задался вопросом: а возможно ли написать для ARM нативную программу, которая будет бесшовно работать сразу на 4-х операционных системах без необходимости перекомпиляции для разных платформ и ABI. Мне очень хотелось реализовать возможность писать кроссплатформенные эльфы для мобильных телефонов из нулевых и попытаться портировать на них эмуляторы ретро-консолей. Погрузившись в документацию на исполняемые форматы, я пришёл к выводу, что да — это возможно и смог реализовать такую программу на практике без читерства по типу VM! Всех гиков приглашаю под кат!

Читать далее

Весь китайский автопром от A(vatr) до Z(eekr)

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

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

Читать далее

Контрибьютор C++ забанен за использование слова «question» в названии своей статьи

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

C++ ISO Standards Group, организация, отвечающая за стандартизацию языка C++, так же известная как WG21, исключила из своих рядов longtime-контрибьютора после того, как тот использовал простое слово "question" (рус. - "вопрос") в названии одной из своих работ.

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

Читать далее

Вскрываем поддельный S23 Ultra с озона

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров116K
Что же может скрывать в себе аппарат похожий на Samsung, купленный на маркетплейсе всего за 5 тысяч рублей? Старый медиатек, кучу несуществующего железа и кривой софт, но обо всём по порядку.

Читать дальше →

Сотворение мира за 20 минут на JavaScript, или минималистичная модель эволюции

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

Впервые про моделирование эволюции я прочитал в 13 лет в статье «Жить и умереть в компьютере» (Техника — Молодежи, №5 1993 год). Она произвела на меня столь неизгладимое впечатление, что я тут же загорелся идеей создать что-то подобное.

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

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

Запустить эволюцию

SOSAL: От теории к практике

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

Эта статья описывает использование улучшенного социального подхода к программированию SOSAL в реальных проектах и ситуациях, а также содержит рекомендации для более эффективного применения этих принципов. Скорее под кат!

Читать далее

Не пытайтесь угадать мой язык

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

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

IP сообщает, откуда пришёл запрос, и на этом всё. Он не сообщает, какой язык нужен пользователю, на каком языке он говорит и какой язык понимает. Подобная система постоянно ломается — VPN, путешествия, эмиграция, страны с несколькими официальными языками. Это не умное, а раздражающее решение.

Читать далее

Perforator: новая система непрерывного профилирования теперь в опенсорсе

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

Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов.

В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux.

При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях.

Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

Читать далее

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

Я отклоняю комиты с использованием кучи и прошу коллег переписать такую логику

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

Хочу поделиться своим опытом разработки крупных игровых проектов на C++, где производительность и стабильность — это не просто приятные бонусы, а абсолютно естественные требования к разработке. За годы работы над движками и играми я понял, что подход к управлению памятью очень сильно влияет на весь проект. В отличие от многих приложений - игры, особенно большие, часто работают часами без прерываний и должны поддерживать стабильный фреймрейт и отзывчивость. Когда проседание fps или фриз происходит на глазах у сотен тысяч игроков, вам уже никто не поможет — ущерб уже нанесен, а в steam полетели отзывы о кривизне рук разработчиков.

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

В разработке для консолей (про мобильные устройства я молчу, потому что игра не влезает по памяти даже в восемь гигов) с ограниченными ресурсами, архитектура с частыми аллокациями не просто неэффективна — она становится реальной угрозой для стабильности проекта. Каждое выделение памяти в куче влечёт за собой накладные расходы: это дополнительные !миллисекунды! (в целом на кадре) задержки, риск большой фрагментации памяти, и непредсказуемое поведение в долгой игровой сессии. После двух часов игры постоянные операции с кучей буквально «сжигают» половину бюджета кадра.

Читать далее

Русская «Ардуина»: первый взгляд любителя

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

Я — самодельщик-ардуинщик со стажем. Люблю пихать ардуины во всякие подходящие и не очень места. Как-то раз я уже показывал свою коллекцию Arduino-совместимых плат, и с тех пор она только росла и ширилась. Теперь в ней случилось особенное пополнение: русская (пока не) народная «Ардуина» ELBEAR от сибирской компании «Элрон» на базе отечественного микроконтроллера MIK32 «Амур», о существовании которой я узнал несколько дней назад из статьи на Хабре.

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

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

Апгрейд компьютера паяльником

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

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

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

И вот, наконец-то мне представилась возможность сделать технический апгрейд своего старинного компьютера и реализовать очередную свою детскую мечту!
Читать дальше →

Почему просто продать билет на стадион так чертовски сложно

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

Представьте себе, что вы айтишник, которому достался стадион. 

Ладно, это я, если что, несколько лет назад. Я поломался в хоккее, что поставило крест на спортивной карьере, и вспомнил основную специальность. Через несколько лет стал продавать билеты: сначала — в Балашихе, а потом — в Омске на «Авангард». 

Это нелинейный ад. 

Вот представьте себе: у вас есть стадион на шесть тысяч мест, и вам надо продать билеты. Казалось бы, делов‑то: бек с API на учёт мест, фронт на сайте, в приложении, выгрузка XML дистрибьюторам — и всё. То есть надо задекларировать, какие места есть и почём, — и всё.

Ага, щас!

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

Вы купите один ради интереса — посмотреть, что будет, и вас кинут на 1 000 рублей. Потому что это был фишинговый сайт. Ещё таким же образом кинут примерно 1–5% зрителей, если с этим ничего не делать, и эти зрители перегрузят вам охрану и стюартов на входе, потому что не смогут пройти и будут очень громко кричать.

Потом вам надо выделить билеты для фанатов приехавшей команды. Рассаживать их среди ваших фанатов немного опасно. Для приезжих — в первую очередь.

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

А после этого приходит финальный босс — чёртовы перекупы. Борьба с ними — это примерно половина сложности продажи билета.

Перед матчем вы обнаружите, что у вас остались непроданные места, и побежите раздавать их бесплатно в школе напротив стадиона.

Но давайте начнём с самого начала. Итак, вам нужно интегрироваться с турникетами. Зачем? Надо!

Читать далее

Разбор тестового задания по электронике в Яндекс

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

Сегодня в очередной раз наткнулся на вакансию старшего инженера - схемотехника в Яндекс. Решил, что это знак и настало время разобрать их тестовое задание. Звучит оно следующим образом:

Читать далее

«Ошибка выжившего», или как я, проработав тренером 10 лет, с первого собеседования попал в IT

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

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

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

Читать далее

Зажигаем миллиард цветов миллионом строк

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

Надругательство над C#, C++ и HLSL, игрища с булками и буферами, тройная полиглотность, SIMD, пепекторы, DirectX, экономия 800 Тб ОЗУ, новая парадигма программирования, многопроцессностьбыстрая степень и многое другое.

В этой части я расскажу, как делал софт на собственном фреймворке, который управляет ядерной подсветкой и механической видеостеной.

Осторожно, трафик!