Как стать автором
Обновить
-5
0.1
Андрей @Moonlight1401

Пользователь

Отправить сообщение

Собираем бюджетный домашний NAS на 14 ТБ

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


Начав заниматься фотографией, я быстро ощутил нехватку места на компьютере. Фотографии в RAW имеют большой вес, а про видео говорить ещё страшнее. Решение проблемы очень простое — собрать NAS.

О моём опыте сборки бюджетного NAS на 14 ТБ я напишу далее в статье.
Читать дальше →
Всего голосов 140: ↑139 и ↓1+171
Комментарии261

Как защитить свое Go-приложение

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

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

В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.

Читать далее
Всего голосов 9: ↑6 и ↓3+3
Комментарии1

Go: жарим общие данные. Атомно, быстро и без мьютексов

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


Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.

Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
Пожарим омлет по атомному?
Всего голосов 41: ↑40 и ↓1+52
Комментарии29

Алгоритмы — самый провальный этап собеседований

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

Уже много лет IT компании проводят алгоритмические собеседования при найме технических специалистов. Подход введенный в FAANG плавно перетек в большинство крупных компаний. Яндекс, Авито, Т-Банк и многие другие хотят проверить алгоритмические знания кандидатов. Но на практике такое собеседование оказывается бесполезным созвоном на 45 минут, который ничего не говорит о кандидате.

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

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

Кто-то может сказать: “О, человека не приняли в компанию из-за алгоритмов и он решил обидеться и сказать всем, что алгоритмы бесполезны”. Отчасти это так и было, но я решил не останавливаться на своем чувстве несправедливости и пошел дальше: адаптировал алгоритмы в компании, прошел все этапы в Google и даже решал алгоритмы на протяжении года.

Все это помогло мне понять, что многие двигаются не туда, когда решают спрашивать деревья и графы на своих интервью.

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

Сейчас я просто хочу рассказать свою историю.

Читать далее
Всего голосов 70: ↑58 и ↓12+59
Комментарии96

Права на программу для ЭВМ

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

Программы для ЭВМ, программное обеспечение (ПО), мобильные приложения, базы данных и скрипты – это все охраняется законодательно.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+8
Комментарии4

Ошибки в языке Go — это большая ошибка

Время на прочтение3 мин
Количество просмотров18K
// гофер пытается найти логику среди обработки ошибок
+-------+-------+-------+-------+-------+-------+
|       |  err  |       |  err  |       |  err  |
|  ,_,,,        |       |       |       |       |
| (◉ _ ◉)       |       |       |       |       |
|  /)  (\               |       |       |       |
|  ""  ""               |       |       |       |
+       +-------+       +-------+       +-------+
|       |  err          |  err  |       |  err  |
|       |               |       |       |       |
|       |               |       |       |       |
+-------+       +-------+       +-------+       +
|  err  |               |  err                  |
|       |               |                       |
|       |               |                       |
+       +-------+       +       +-------+       +
|       |  err  |               |  err  | logic |
|       |       |               |       |       |
|       |       |               |       |       |
+-------+-------+-------+-------+-------+-------+

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


Но сорян, к бесконечным if err != nil я до конца привыкнуть так и не смог.


Да-да, я знаю все аргументы: явное лучше неявного, язык Go многословен, зато понятен, и всё такое. Но, блин, на мой взгляд Го-вэй Го-вэю рознь.

Читать дальше →
Всего голосов 45: ↑41 и ↓4+42
Комментарии95

Я тебя с вертухи сломаю, если ещё раз заговоришь об ИИ

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

Последние инновации в сфере ИИ, наиболее примечательными из которых стали проекты наподобие GPT-4, очевидно, могут иметь далеко идущие последствия для общества: от утопического избавления от монотонного труда до антиутопического ущерба для работы художников в капиталистическом обществе, а также до экзистенциальных угроз самому человечеству.

Лично я получил формальное образование дата-саентиста, даже выиграв в высококонкурентном конкурсе по машинному обучению в одном из лучших университетов Австралии и написав магистерскую, для которой создал в MATLAB с нуля собственные библиотеки. Я не гений в этой сфере, но, очевидно, лучше большинства конкурентов, то есть практиков вроде меня; я не могу, сидя в пещере, создавать собственные библиотеки на C, но умею читать учебники, реализовывать готовые решения на языках высокого уровня и использовать библиотеки, написанные элитными организациями.

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

Читать далее
Всего голосов 203: ↑185 и ↓18+202
Комментарии215

Цикл разработки LLM

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

В этой статье я использую мой опыт обучения больших языковых моделей (смотрите серию видео на канале Ruslan Dev), чтобы выявить и описать основные фазы разработки собственной LLM.

На сегодняшний день разработчики GenAI моделей, как правило, используют веса базовых (foundational) моделей, а не обучают нейросеть с нуля. В качестве данных для обучения часто используются ответы state-of-the-art LLM, таких как GPT-4. Этот подход получил распространение с тех пор, как создатели Stanford Alpaca показали, что инференс небольшой модели наподобие Llama 7B можно приблизить по качеству к GPT-3 путем файнтюнинга на ответах последней.

С тех пор и коммерческие, и опенсорс-модели шагнули вперед. Я работал с базовой моделью Llama-3, обученной на беспрецедентно огромном корпусе из 15 триллионов текстовых токенов, что дает широкие возможности для файнтюнинга. А датасет для обучения я собирал с помощью последней модели OpenAI - GPT-4o. Как видите, переменные изменились, но уравнение осталось то же - подход Альпаки работает по-прежнему.

Читать далее
Всего голосов 7: ↑6 и ↓1+8
Комментарии6

Машинное обучение для чайников

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

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

Мы погрузимся в машинное обучение с помощью:

Разбора основной парадигмы обучения -- обучение с учителем (Supervised Learning).
Рассмотрения математической основы машинного обучения на двух моделях: линейный дискриминантный анализ (LDA) и наивный байесовский классификатор.
Примера кода на библиотеке scikit-learn, позволяющей реализовать обсуждаемые модели.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии6

Aqueduct: Как мы экономим железо для МЛ-вычислений

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

Привет! Меня зовут Олег Бугримов, я руковожу разработкой в команде Data Science SWAT в Авито. Мы занимаемся инженерией для машинного обучения. Одно из направлений - это оптимизация продового инференса. Наша задача чтобы модельки работали быстро и не потребляли безумное количество ресурсов. Так вот, мы дооптимизировались до того, что реализовали инструмент который позволяет сэкономить 30% железа. Вы видите реальный график нагрузки GPU-процессора

Читать далее
Всего голосов 7: ↑7 и ↓0+9
Комментарии9

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

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


Привет! Меня зовут Илларион, я аспирант ИТМО и член команды, которая занимается предсказанием временных рядов, порожденных графовыми структурами, и другими исследованиями. Однако в разработке новых методов для прогнозирования есть существенное препятствие — нехватка открытых данных для обучения и тестирования моделей.


Для решения проблемы мы создали открытый инструмент Time Series Generator. Я рассказал о нем на митапе, посвященном open source-разработке для научных задач. Под катом делюсь особенностями разработанного решения и рассматриваю реализуемые им задачи.

Читать дальше →
Всего голосов 30: ↑29 и ↓1+38
Комментарии5

10 библиотек Python для машинного обучения — подборка для начинающих

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

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

Собрать подборку помог Кирилл Симонов — ML-разработчик компании IRLIX с экспертизой в компьютерном зрении.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии0

PINN или нейросети, знающие физику

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

Что такое PINN и какова область их применения?

PINN появились сравнительно недавно (в 2019 году была опубликована работа Raissi), но уже активно применяются для некоторых задач физики. Отличительная особенность данных нейросетей состоит в том, что в Loss‑функцию включены невязки от уравнений, которые описывают рассматриваемый физический процесс. Вход такой нейросети — это координаты (пространственные или временные, в зависимости от задачи). И еще одна особенность — для обучения не требуется таргетов, так как, повторюсь, в Loss минимизируется отклонение предсказанных значений от уравнений.

Можно сказать, что PINN — это замена численному моделированию и тогда, возникает вопрос: «А нужны ли нейросети там, где хорошо работают численные методы». Но не все так просто. Представьте, что Вы или Ваш коллега провел эксперимент, например, измерил скорости частиц в потоке жидкости, или получил точечные измерения температуры. Если Вы действительно имеете опыт проведения эксперимента, наверняка знаете, что экспериментальные данные далеко не идеальны и могут принести много головной боли при обработке. А теперь представим, что все же Вы эту обработку провели, получили датасет из эксперимента, и теперь хотите эти данные использовать в уравнениях, чтобы получить другие параметры течения. Например, измерили скорость, а из уравнений гидродинамики, хотите получить давление. Или другими словами, провести ассимиляцию данных, говоря на современном околонаучным языком. Численное моделирование в таком случае можно дать сбой, потому что даже тщательно отфильтрованные данные могут быть шумными (особенно если от них требуется брать производные, а если еще и вторые, то совсем, шляпа). Или их может быть мало (например, температуру измеряли термопарой в нескольких точках). В данном случае, вроде, эксперимент есть и потенциально восстанавливать одни величины по другим можно, решая уравнения. И тут на помощь могут прийти PINN. Потому что они работают иначе, чем численные методы. Они не используют схем переноса, а параметры нейросети минимизируются в выбранных точках.

Читать далее
Всего голосов 6: ↑6 и ↓0+10
Комментарии6

Трансмировая идентичность: мультивёрсные двойники, границы «я», свобода воли и квантовое бессмертие

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

Спросите себя: кто я? А кого вы, собственно, спрашиваете? Почему я — это я, а не кто‑то другой? Я в прошлом и я в будущем — это всё ещё я, или уже не я? Что делает меня мной? Что нужно изменить в моём теле и в моей психике, чтобы я перестал быть собой? Что во мне остаётся неизменным в течение всей жизни? Могут ли разные люди думать одни и те же мысли? Могу ли я в одних и тех же обстоятельствах принимать разные решения? Если меня усыпить и создать идентичную копию, кем из двойников я себя осознаю, когда проснусь? Все эти вопросы обретают новый смысл с точки зрения многомировой интерпретации Эверетта, согласно которой у каждого из нас есть множество двойников в параллельных мирах. Вы никогда не знаете точно, кем из этих двойников являетесь и в каком мире находитесь. Означает ли это, что вам нужно переопределить своё «я» или полностью от него отказаться, заменив местоимением «мы»? В этой статье мы разбираем все вопросы, связанные с тождеством личности, самоидентичностью в Мультивёрсе, расщеплением наблюдателя и свободой воли. Также мы разоблачаем популярный миф о квантовом бессмертии.

Читать далее
Всего голосов 10: ↑5 и ↓5+4
Комментарии164

Микросервисы в представлении среднего разработчика, и как всё на самом деле

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

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы
Всего голосов 236: ↑232 и ↓4+260
Комментарии207

systemD с 0 до 1: библия сисадмина

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


Что бы кто не говорил, systemD становится стандартом систем инициализацией в линуксе. И с 80% вероятностью все сервера будут с systemD. Не факт, конечно, есть и личные сервера, на которых может стоять хоть Gentoo, хоть Devuan, хоть NixOS.

Некоторые дистрибутивы хотят даже перейти с загрузчика Grub на systemd-boot! Потому знать, как работать с данной системой инициализации, должен каждый сисадмин и просто программист, ибо сейчас он практически везде.

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

А также напишем небольшой скрипт на Python для автомизации некоторых задач. Приятного чтения, господа линуксоиды и просто пользователи!
Читать дальше →
Всего голосов 51: ↑46 и ↓5+53
Комментарии11

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

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

Здравствуй, Хабр! Меня зовут Оняков Федор, я старший Web-программист в Петрович-Техе. Но сегодня мы будем говорить не о моей работе: уже больше четырех лет я развиваю свой умный дом и помогаю делать умные дома друзьям и коллегам.

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

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

Читать далее
Всего голосов 14: ↑10 и ↓4+6
Комментарии108

Как работают языковые модели

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

Если мы хотим использовать большие языковые модели (БЯМ) в своей работе и при этом называть результаты творческими, нам придётся понять, как они работают — по крайней мере, на высоком уровне.

Существует множество отличных руководств о внутренних механизмах языковых моделей, но все они довольно техничны. (Заметным исключением является статья Нира Зичермана в журнале Every о том, что БЯМ — это еда.) Это обидно, потому что есть всего несколько простых идей, которые нужно понять, чтобы получить базовое представление о том, что происходит под капотом.

Я решил изложить эти идеи для вас — и для себя — в максимально свободной от жаргона форме. Приведённое ниже объяснение намеренно упрощено, но оно должно дать вам хорошее представление о том, как всё работает. (Если вы хотите пойти дальше упрощений, я предлагаю поместить эту статью в ChatGPT или Claude).

Готовы? Приступим.

Читать далее
Всего голосов 17: ↑17 и ↓0+25
Комментарии0

Можно ли освоить иностранный язык за 3 месяца?

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

Здесь я поговорю про пять составных частей английского:

Speaking
Writing
Reading
Listening
Vocabulary

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

Читать далее
Всего голосов 35: ↑10 и ↓25-12
Комментарии132

Код доступа Termux

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

Лонгрид посвящается любителям CLI в знак солидарности лучшего эмулятора терминала на OS Android, который испытывает «кошмарную» монополию Google.

В данной работе вербализация пойдет о нижеизложенном со всеми остановками:

[+] глубоко настраивать средý (флэшка, виджет, стиль, зеркала и конфиги);
[+] управлять серверами через ssh;
[+] скачивать ролики/отрывки с YouTube;
[+] нарезать видео, создавать gif;
[+] воспроизводить текст/музыку/радио прямо в CLI;
[+] нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет), и склеивать аудиофайлы;
[+] редактировать документы;
[+] проверять орфографию: как текстовых файлов, так и различных статей по url, например, проверка орфографии статей на Habr-e;
[+] генерировать словари различной сложности со скоростью Си;
[+] создавать блок-схемы; графики; облако слов и даже 3D-визуализацию;
[+] заниматься Data Science на Android-мощностях;
[+] тестировать интернет соединение/интерфейс (требуется частично Root);
[+] сниффить/сканировать сети (требуется частично Root);
[+] запускать и управлять TOR-сетью (deleted);
[+] управлять приложениями и процессами в ОС Android (требуется Root);
[+] анализировать память;
[+] защищать любые данные от случайного редактирования/уничтожения (требуется Root);
[+] автоматически шифровать и бэкапить по ночам любые данные в своё облако;
[+] чекать username(s) и e-mail(s);
[+] проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «сниффить, парсить, брутить, дампить, сканить, фишить»);
[+] работать с электропочтой;
[+] изучать UNIX/shell;
[+] программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
[+] запускать python/php/npm скрипты в т.ч. в одно касание с рабочего стола;
[+] работать с криптографией, стеганографией и цифровыми подписями;
[+] парсить данные;
[*] и даже запускать GNU-GUI-софт из CLI.

Погрузиться в GNU культуру
Всего голосов 28: ↑27 и ↓1+28
Комментарии46

Информация

В рейтинге
3 103-й
Откуда
Самара, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Server Administrator, DevOps
Senior
Git
JavaScript
HTML
CSS
Node.js
.NET
C#
SQL
Server administration