Мы дожили до момента, когда для отправки своего коммита в популярный проект, не нужно подписывать бумажный отказ от прав на код, как это бывало в случае с GNU-проектами. Заходи на Github, ищи. Выбирай, что нравится, клонируй, создавай пул реквест, чувствуй себя гордым контрибьютором. Но если хочется не только чувствовать, но и быть, то все несколько сложнее...
Newbie
Разбираем самый маленький PNG в мире
![](https://habrastorage.org/webt/gn/b4/di/gnb4did1fdu8fdfnjcnxr95aftg.png)
Самый миниатюрный PNG в мире весит 67 байт и представляет собой один чёрный пиксель. Выше вы видите его в 200-кратном увеличении.
Красота, не так ли?
Состоит этот файл из четырёх частей:
- Сигнатура PNG, одинаковая во всех файлах этого формата: 8 байт.
- Метаданные изображения, включая его размеры: 25 байт.
- Данные пикселя: 22 байта.
- Маркер «конец изображения»: 12 байт.
Далее я опишу этот файл подробнее и постараюсь объяснить принцип работы формата PNG.
В качестве небольшой затравки скажу, что в конце предстоит неожиданный поворот. Хотя, надеюсь, вам и без того интересно побольше узнать о PNG.
С новым годом: GPT в 500 строках на SQL
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/8c6/02e/85d/8c602e85dcd041bb3f4f4d97805bb41e.jpg)
В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.
Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:
«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»
Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.
Давайте же воодушевимся этим оптимистическим планом и реализуем большую языковую модель на языке SQL.
Пишем код, когда пишем код: сорс-генераторы
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/fb1/0f9/bc8/fb10f9bc89105efce6803935331511ba.png)
Всем привет! Я Олег, ведущий разработчик в Тинькофф. Расскажу историю про сорс-генераторы и почему именно генерацию кода мы выбрали для решения нашей задачи. Будут неожиданности и открытия, которые мотивировали нас двигаться дальше.
Бессильный сборщик мусора или неуправляемая память в .NET
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/f93/572/acb/f93572acbc6da59073458219b7a9adf4.jpeg)
Если вы готовитесь к собеседованию и гуглите список вопросов для кандидата на C# разработчика, то сто процентов один из вопросов будет о сборщике мусора. На собеседованиях этот вопрос действительно частенько задают, но как только они заканчиваются, магическим образом все знания улетучиваются, прямо как после экзамена. Долгое время я не понимал, зачем мне нужно знать как именно работает сборщик мусора, ну собирает он как-то мусор, ну и пусть собирает дальше.
Так я думал пока я не столкнулся с проблемами потребления памяти. Сегодня я хочу рассказать об одной из таких проблем, связанных с неуправляемой памятью.
Самое понятное объяснения CFG Scale в нейросетях. Как эта штука повлияла на появление Stable Diffusion
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/83d/b89/6ed/83db896ed99986c90e138125b72ef6f5.png)
Вы не поверите, но я уже и разработчиков Kandinsky 2.2 спрашивал, что такое CFG Scale в фундаментальном смысле, и нейронщиков всех мастей, однако так не получил внятного ответа. От обывательских блогов меня вообще теперь тошнит, ибо там одно и то же: параметр CFG Scale увеличивает силу следования подсказке... И все как бы, окей — сами разберемся.
Так вот, я начал с базы и открыл научные статьи родоначальников метода classifier free guidance scale. Прикреплю ссылки на них сразу же, чтобы вы тоже могли ознакомиться. Вот статья, посвященная именно CFG Scale для диффузных моделей, а вот статейка о применении данного метода в современных языковых моделях.
Для чего это нужно?
Меня поразил тот факт, что метод CFG Scale и позволил диффузным моделям родиться. До них были GAN-модели, которые совмещали в себе генератор и дискриминатор. Дискриминатор, по-другому, это классификатор. Т.е. моделька сначала генерит изображение, а потом вторая полноценная модель оценивает его на вшивость и корректирует вместе с первой.
Из этого вытекают минусы: например, нужно вместе с одной моделью обучать и вторую (работы в два раза больше). Также нужно, чтобы железо тянуло сразу две модели, ибо они задействуются в паре.
Метод же SFG Scale позволил задействовать только одну модель — диффузнную, т.е. обучать вторую больше не нужно. Чтобы вы понимали, механика описывается парой строк кода. Думаю, вы смекаете, что это намного проще дополнительной полноценной модели, которую еще хранить где-то нужно.
Строим свой SSO. Часть 3: Redis, Swagger, Vue.js
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/07a/719/e29/07a719e29ad4fe179a7148cb6558b62c.png)
Всем привет, мы продолжаем строить собственный SSO Server. Сегодня мы разберем подключение Redis и Swagger к нашему проекту. А также построим собственную, красивую форму аутнетификации, используя VueJS.
ConfigureAwait: часто задаваемые вопросы
![image](https://habrastorage.org/webt/ps/pj/sm/pspjsmmgsimr2lachonj6idmnj8.png)
Async
/await
добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async
/await
работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).ConfigureAwait
— один из аспектов async
/await
, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.Помоги компилятору, и он поможет тебе. Тонкости работы с nullable reference типами в C#
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/4bb/9cb/a08/4bb9cba086e2d0d035fe8d187e9fdd62.png)
Nullable reference типы появились в C# 3 года назад. За это время они смогли найти свою аудиторию. Но даже те, кто имеет дело с этим зверем, скорее всего, не знают всех его возможностей. Давайте разберёмся, как более качественно взаимодействовать с этими типами.
Настраиваем LDAP в ОС Linux
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/920/60f/fae/92060ffaee2d085556280e53506ec8f5.png)
В этой статье мы продолжим разворачивать и настраивать LDAP под Linux. В первой части мы выполнили базовую установку slapd, развернули домен domain.com, и добавили записи в каталог.
Сейчас мы продолжим выполнять наши настройки в LDAP и поговорим об аутентификации.
Telegram API и библиотека TDLib для .NET платформ
Доброго времени суток! В Telegram существует два вида API: Telegram Bot API (обыкновенный бот с пометкой "бот") и Telegram API (клиент и юзербот, который обладает больше функционалом, чем просто бот). В этой статье пойдет речь о втором виде, а именно: что требуется для взаимодействия с Telegram API, какие средства нужны для написания кода своего юзербота на языке C#, как их правильно установить, а также каким образом использовать их.
C# Linq для GraphQL-запросов
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/bfe/7ec/f30/bfe7ecf30cb03ef46e7a7c275dfa32d7.png)
Транслятор Expression'ов в GraphQL-запрос.
Реализация библиотеки для трансляции Выражений в GraphQL-запрос с использованием Linq-подобного api.
Обзор и сравнение существующих решений. Создание собственного инструмента.
Платежные системы простыми словами. Как устроены и зачем нужны Mastercard, Visa, МИР и прочие
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/2fe/555/8eb/2fe5558ebcff2925a4978d7fc482507f.png)
Россия уже больше года живет без Visa и Mastercard. За это время все мы успели четко понять, что платежные системы - это не просто логотипы на банковских картах. В этой статье разбираем, как работают платежные системы, что конкретно они делают, и почему не стоит недооценивать их значимость для экономики.
Deadlock Empire — игра для разработчиков
![](https://habrastorage.org/webt/xv/on/hx/xvonhxdz00cxzdbvgelixa8-oli.png)
Хабр, как известно, не место для игр, но мы нашли одно исключение, которое, как нам кажется, достойно упоминания здесь!
Встречайте: Deadlock Empire!
Суть игры — управление планировкой потоков, код которых приведен в заданиях. Управлять нужно так, чтобы добиться ошибочной ситуации: взаимблокировки, повторных значений счетчиков, достижения определенных участков кода и прочих непредвиденных ситуаций, которые нужно осознавать при разработке многопоточных приложений.
Как создатели мемных спин-оффов «Зельды» изменили российскую индустрию игр и анимации
![image](https://habrastorage.org/webt/7v/yc/aw/7vycawqdxegm53-5az1ur-1hqty.png)
Что общего между мемами про Моршу, квестом по Warcraft, «Масяней», «Смешариками» и Jedi Outcast.
Animation Magic Inc. (ООО «АМИ») — одна из первых крупных российских игровых студий. Она была открыта в 1992 году в Санкт-Петербурге и в основном занималась аутсорсом для западных издателей. Ещё это первая отечественная студия, которая на момент открытия имела американское подразделение и команду разработчиков из 50 человек. И это в те годы, когда из известных российских игр был разве что Tetris Алексея Пажитнова, Perestroika Никиты Скрипкина и Color Lines от студии Gamos.
Сегодня об Animation Magic вспоминают только в контексте отменённого квеста по вселенной Warcraft да неканоничных частей The Legend of Zelda, анимационные ролики из которых ещё в нулевые стали популярными интернет-мемами. Обе части Zelda рьяно критикуют и высмеивают уже два десятилетия, но в отрыве от критики — о студии почти ничего неизвестно.
И очень печально, ведь выходцы из Animation Magic серьёзно повлияли на формирование игровой и анимационной индустрии в России. Этим материалом мы хотели бы восстановить историческую справедливость: разобрать полный творческий путь студии, развеять мифы и опубликовать ранее неизвестные факты.
Lock с приоритетами в .NET
Мне приходилось пользоваться многими из этих примитивов, и они прекрасно помогали справиться с задачами. Но в этой статье я хочу рассказать про обычный lock в десктопном приложении и о том как же появился новый (по крайней мере для меня) примитив, который можно назвать PriorityLock.
Создание CLI-приложений при помощи System.CommandLine в .NET
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/162/cf0/538/162cf05385eb389407112ac7e69f634f.png)
В .NET уже несколько лет существует библиотека System.CommandLine
, позволяющая быстро создавать CLI-приложения. Несмотря на то, что библиотека ещё в стадии beta, её активно используют и сами разработчики Microsoft, например, в утилите dotnet из пакета .NET SDK.
Преимущества этой библиотеки в том, что она позволяет сосредоточиться на разработке полезного функционала приложения и не тратить время на создание парсера команд, опций и аргументов, а также имеет широкие возможности для кастомизации.
Интересные сюрпризы ConcurrentDictionary (+разбор задачи с DotNext 2017 Moscow)
Привет всем, кто пишет код для .NET, особенно многопоточный. Редко встретишь потокобезопасный код без потокобезопасных коллекций, а значит, нужно уметь ими пользоваться. Я расскажу о самой популярной из них — ConcurrentDictionary. В ней спрятано на удивление много интересных сюрпризов: как приятных, так и не очень.
Сначала разберём устройство ConcurrentDictionary и вычислительную сложность операций с ним, а затем поговорим об удобных трюках и подводных камнях, связанных с memory traffic и сборкой мусора.
Запуск аналогов ChatGPT на домашнем ПК в пару кликов и с интерфейсом
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/18b/872/343/18b87234398caebe8ec532f07f8f6867.jpeg)
--- Обновление статьи 9 Августа 2023 ---
В течении последнего полугода в сфере текстовых нейронок всё кипит - после слитой в сеть модели Llama, aka "ChatGPT у себя на пекарне" люди ощутили, что никакой зацензуренный OpenAI по сути им и не нужен, а хорошие по мощности нейронки можно запускать локально.
Основная проблема в том, что всё это требует глубоких технических знаний.
Но в этой статье я расскажу, как запустить добротную нейросеть на домашнем ПК с 16ГБ ОЗУ в несколько кликов. Буквально в несколько кликов - копаться в консоли не придётся.
Information
- Rating
- Does not participate
- Location
- Иркутск, Иркутская обл., Россия
- Registered
- Activity