Pull to refresh
48
0
Андрей Кравчук @prefrontalCortex

Software Engineer

Send message

Как (быстро) сделать русский локальный ChatGPT

Level of difficultyMedium
Reading time7 min
Views37K

Эта история началась в начале марта этого года. ChatGPT тогда был в самом расцвете. Мне в Telegram пришёл Саша Кукушкин, с которым мы знакомы довольно давно. Спросил, не занимаемся ли мы с Сашей Николичем языковыми моделями для русского языка, и как можно нам помочь.

И так вышло, что мы действительно занимались, я пытался собрать набор данных для обучения нормальной базовой модели, rulm, а Саша экспериментировал с существующими русскими базовыми моделями и кустарными инструктивными наборами данных.

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

Читать далее
Total votes 70: ↑69 and ↓1+88
Comments54

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Level of difficultyMedium
Reading time18 min
Views7.8K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

Мы пришли к выводу, что доступ к большинству объектов в смещённых нагрузках кэша выполняется только за короткий промежуток времени, поэтому критически важно быстро вытеснять их из кэша. А главная особенность S3-FIFO — это небольшая очередь FIFO, отфильтровывающая большинство объектов, не давая им попасть в основной кэш.

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →
Total votes 69: ↑69 and ↓0+69
Comments5

Вывод оптимального алгоритма с помощью формализма Бёрда-Меертенса

Level of difficultyMedium
Reading time9 min
Views3K

Некоторые оптимальные алгоритмы, оказывается, можно вывести из неоптимальных, пользуясь эквивалентными преобразованиями алгоритма. Бёрд и Меертенс разработали формализм, который устанавливает свойства функций высшего порядка map, fold, scan, позволяющие преобразовывать алгоритмы в эквивалентные. (См. также на Вики). Ниже представлен вольный перевод статьи Бёрда.


Рассмотрим задачу поиска максимальной суммы сегмента массива. Эту задачу можно переформулировать в виде математически точного ответа:


Для всех сегментов, которые можно получить из массива, необходимо посчитать сумму чисел, а затем среди всех таких сумм найти максимальную.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

СУБД Redis и её автор antirez, программист и фантаст

Level of difficultyEasy
Reading time10 min
Views15K


Сальваторе Санфилиппо aka antirez — итальянский программист, проживающий в Катании (на острове Сицилия). Провинциальное местонахождение не мешает звезде IT-индустрии: он известен на весь мир как автор СУБД Redis. 46-летний antirez входит в число самых авторитетных и талантливых программистов-одиночек с хакерским бэкграундом.

В 2020 году он завязал было с программированием, чтобы целыми днями писать научную фантастику. Но закончив книгу, в конце 2022-го снова вернулся к коду. Оказалось, что между литературным творчеством и программированием сложных систем много общего.
Читать дальше →
Total votes 58: ↑57 and ↓1+81
Comments1

Теневое правление Илона Маска

Level of difficultyEasy
Reading time29 min
Views22K

Перевод фрагмента статьи из newyorker.com, где собраны множество реплик коллег и знакомых Илона Маска о его детстве, карьерном пути и влиянии на современную политику.

Читать далее
Total votes 62: ↑42 and ↓20+25
Comments174

Главный цикл в пошаговых играх

Level of difficultyMedium
Reading time12 min
Views13K

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

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

Почему вам не нужно в IT-2 или когда Автор сам запутался и пытается разобраться

Level of difficultyEasy
Reading time9 min
Views2.8K

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

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

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

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

Читать далее
Total votes 14: ↑7 and ↓7+3
Comments6

Прекратите превращать программирование в религию (восклицательный знак)

Level of difficultyEasy
Reading time8 min
Views49K

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

Не верите?

Давайте я покажу вам.
Total votes 202: ↑168 and ↓34+171
Comments302

Причины «имитации работы» в Big Tech

Level of difficultyEasy
Reading time11 min
Views19K

Когда Грэма приняли в Amazon, ему казалось, что это работа его мечты. Его привлекли как учёного-исследователя в помощь для разработки функций голосового помощника Alexa. Грэм (имя изменено) предполагал, что вскоре начнёт использовать свой опыт машинного обучения для создания новых потрясающих функций, делающих Alexa более индивидуальной для каждого пользователя. Но спустя четыре месяца после найма стало очевидно: Amazon понятия не имеет, что с ним делать.

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

Столкнувшись с угрозой увольнения, Грэг, наконец, пришёл в проект по применению машинного обучения для улучшения рекомендаций музыки Amazon, который, по его мнению стал «первой по-настоящему интересной задачей, над которой мне довелось работать». Он был счастлив ощущать себя ценным членом команды, но его менеджер сообщил ему нечто поразительное: готовый проект, над которым Грэм работал больше месяца, никогда не будет выпущен. Ему сказали, что это было просто занятие, чтобы соответствовать условиям его плана контроля производительности и продления срока его найма. Вскоре после этого Грэм уволился из Amazon.
Читать дальше →
Total votes 49: ↑46 and ↓3+60
Comments48

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views187K

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

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

Читать далее
Total votes 156: ↑149 and ↓7+177
Comments177

История T

Level of difficultyMedium
Reading time25 min
Views4K

Олин Шиверс


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

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

Lisp для микроконтроллеров

Reading time7 min
Views6.7K


Lisp для плат Arduino, Adafruit M0/M4, Micro:bit, ESP8266/32, RISC-V и Teensy 4.x.

Новость!


ARM версия 3.6b теперь поддерживает save-image (сохранение образа) на всех платах ATSAMD21 

В последнем релизе ARM uLisp, версия 3.6b, можно сохранять образ всего вашего рабочего пространства Lisp во флэш-память плат ATSAMD21, на которых не предоставляется отдельный чип DataFlash.

Таким образом, поддержка save-image добавляется к Adafruit Neo Trinkey, Adafruit Gemma M0, Adafruit Feather M0, Arduino Zero, Arduino MKRZero и Seeedstudio Xiao M0.

uLisp — это версия языка программирования Lisp, специально спроектированная для работы на микроконтроллерах с ограниченным объемом ОЗУ, от Arduino Uno на основе ATmega328 до Teensy 4.0/4.1. Независимо от платформы, можно использовать ровно одну и ту же программу на uLisp.

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

Кроме того, язык Lisp идеально подходит для изучения фундаментальных концепций программирования. В нем предусмотрена работа со строками, обработка списков и сборка мусора, а также этот язык отлично подходит для выражения сложных идей – например, научить робота выбираться из лабиринта или найти кратчайший путь на карте. uLisp не только поддерживает базовый набор функций Lisp, но и содержит расширения для Arduino, поэтому данный язык идеально подходит для управления Arduino.
Читать дальше →
Total votes 29: ↑27 and ↓2+35
Comments0

Прогулы занятий: как с этим бороться, если занятия — бесплатные?

Level of difficultyEasy
Reading time8 min
Views11K

Всем привет!

Кто работает в образовании - сталкивались ли вы с тем, что дети прогуливают занятия? А с тем, что этому не только потворствуют, но и потакают родители учеников?.. Тогда, уверен, вам будет интересно.

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

Читать БЕСПЛАТНО)
Total votes 86: ↑84 and ↓2+101
Comments127

60 антипаттернов для С++ программиста, часть 3 (совет 11 — 15)

Level of difficultyEasy
Reading time9 min
Views3K

1053_60_cpp_antipatterns_ru/image2.png


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

Читать дальше →
Total votes 9: ↑8 and ↓1+9
Comments0

Уделываем классические компьютеры при помощи Borealis

Level of difficultyMedium
Reading time12 min
Views7.7K
image

Эта история повествует о первом в мире общедоступном квантовом компьютере, развёрнутом в облаке.

Компания Xanadu весной 2022 года объявила о запуске Borealis, новейшего квантового компьютера, развёрнутого в облаке и предоставленного в общий доступ. В этом компьютере 216 кубитов в сжатом состоянии – то есть, почти в 20 раз больше, чем в X12, системе предыдущего поколения, также действовавшей в облаке. Borealis – это крупнейший в истории фотонный квантовый компьютер, а также первая в своём роде машина, предоставленная в публичное использование.
Читать дальше →
Total votes 29: ↑27 and ↓2+35
Comments0

Итоги двадцати лет работы — технический долг и неподдерживаемый код

Level of difficultyEasy
Reading time8 min
Views33K

Технический долг — один из самых популярных сегодня терминов. Люди говорят: «Мы быстро развиваем свой MVP, минимизируя технический долг!» Они говорят о техническом долге, чтобы звучать круто или выделиться.

А я просто смеюсь, ведь всё рано или поздно превращается в технический долг.

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

И если вы не верите, что вся ваша карьера — это технический долг, то, возможно, поймёте это после прочтения статьи. Я расскажу о том, что изменилось за мою двадцатилетнюю карьеру.
Читать дальше →
Total votes 88: ↑76 and ↓12+92
Comments148

Помощь на Хабре: content buddy for everybody

Reading time4 min
Views2K

Не очень давно в одном из комментариев Хабр назвали «хостингом контента» — в том ключе, что здесь собираются статьи совершенно разного качества, уровня и глубины проработки. Тогда нам это определение показалось очень обидным и задевающим, однако, когда эмоции улеглись, оно показалось осмысленным. Действительно, Хабр — это хостинг (накопитель, архив, сборник и т. д.) контента, который отражает временной срез интересов пользователей, их уровня подготовки, мышления, профессионализма. И это хорошо, особенно в свете возможности настройки ленты пользователя.

Однако Хабр как UGC-проект подвержен рискам, связанным с текстами: в наше время автором может оказаться не просто некомпетентный человек, но и нейросеть в руках этого самого человека. При 65-75 статьях в сутки и огромной Песочнице шансов на полную премодерацию не остаётся — это убьёт саму идею Хабра. В общем, идея кураторства витает в воздухе.

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

D&D как инструмент тимлида: решаем проблемы команды с помощью разговорных ролевых игр

Level of difficultyEasy
Reading time37 min
Views23K

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

Команда разработки и вообще любая группа людей — это сложный клубок из межличностных отношений и персональных компетенций. Я руковожу командами разработки и эксплуатации уже 8 лет, и за это время встречался с разными командными проблемами. Хочу предложить вам свою методологию их решения при помощи разговорных ролевых игр (РРИ).

Под катом вас ждет:

История о том, как я сам пришёл к тому, чтобы проводить РРИ для коллег.

Краткий рассказ о том, что из себя представляют такие игры.

Примеры решения реальных командных задач.

Полная методология подготовки и проведения игры. Полезно будет вам и вашему мастеру.

Вперёд к приключениям
Total votes 99: ↑96 and ↓3+107
Comments33

userver — что мы узнали за полгода в open-source

Level of difficultyEasy
Reading time7 min
Views19K
image
Прошло больше полугода с момента выхода фреймворка для C++ 🐙 userver в open-source. За это время мы многое узнали, на многом настрадались, а главное — получили много приятных сюрпризов.

И мы решили об этом написать. Рассказ будет полезен тем, кто ведёт или планирует вести свой open-source проект или занимается контрибьютами. Остальным будет интересно почитать про чужое набивание шишек и что вообще open-source даёт проекту.
Читать дальше →
Total votes 55: ↑54 and ↓1+64
Comments29

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

Level of difficultyMedium
Reading time16 min
Views6.2K

Преимущества и навыки, полученные при использовании Common Lisp в разработке игр



Разработка игр является увлекательной задачей. Игры требуют быстрого цикла разработки, высокой интерактивности и задают ограничения мягкого реального времени. Хотя в настоящее время небольшие игры разрабатываются на таких динамических языках, как Python или Lua, традиционно игровые движки пишутся на статических языках вроде C++ и C с каким-либо скриптовым языком поверх для обработки геймплейных механик. Common Lisp предоставляет среду разработки, одновременно являющуюся динамичной и достаточно производительной, что позволяет построить с её помощью полноразмерную систему разработки игр, сильно способствующую быстрым итерациям разработки и модульному дизайну.

Читать дальше →
Total votes 13: ↑11 and ↓2+12
Comments6

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 5,000 €
Lisp
Clojure
Unix
Linux
Docker