Обновить
0
0

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

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

Ускоряем приложение: никаких фреймворков — только математика

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели18K

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

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

Читать далее

Bittorrent с нуля на Go

Время на прочтение15 мин
Охват и читатели28K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

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

Автотесты на языке разметки или как мы в Lamoda тестируем микросервисы

Время на прочтение13 мин
Охват и читатели13K

Всем привет! Меня зовут Кирилл Поляков, я QA-инженер в компании Lamoda. Мы тестируем бекэнд большой e-commerce платформы. В этой статье я расскажу, как мы пришли к автотестам на языке разметки для тестирования микросервисов и делаем это с помощью инструмента собственной разработки – Gonkey, который позволяет использовать стандартизированный набор решений и легко писать тесты на Go.


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

Создаем скелеты микросервисов быстро и без боли

Время на прочтение4 мин
Охват и читатели10K

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

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

Читать далее

Разработка игр на Go: шейдеры

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

Давненько я не писал никаких статей на Хабре.


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


Сегодня я расскажу вам о шейдерах в Ebitengine. Большая часть примеров будет взята из Roboden и Decipherism (обе игры имеют открытые исходные коды и вы можете найти их на гитхабе).


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

О, «Герои»? Дайте две! Как я писал очередной браузерный клон легендарной стратегии, в который уже почти* можно играть

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели37K


TL;DR для тех, кому некогда читать™:




Вот как всё начиналось

gb — менеджмент зависимостей для Go

Время на прочтение8 мин
Охват и читатели21K
Отсутствие в Go нативного менеджера зависимостей и версий является одним из самых частых пунктов в критике языка. В этой статье мы рассмотрим проблему детальнее и познакомимся с новым проектом, с лаконичным именем gb, который набирает популярность в Go-коммьюнити и обещает вскоре стать де-факто стандартом для управления зависимостями и версиями в Go.


(Credit orig.photo: Nathan Youngman)

Для начала давайте разберемся, из-за чего весь шум и почему в Go изначально не было продвинутого менеджера зависимостей.
Читать дальше →

Андрей Карпаты. Software 2.0. Непонятный софт будущего

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели30K

Когда мы говорим о современных разработках в области нейросетей и машинного обучения, то первое имя, которое приходит на ум — это Андрей Карпаты. Молодой словак быстро стал звездой в данной области и одним из главных авторитетов по части конкретного программирования систем. Это тот человек, который обучал Джона Кармака, в частности.

Андрей Карпаты — сооснователь компании OpenAI (GPT-4, ChatGPT) и ведущий разработчик автопилота Tesla. Впрочем, из «Теслы» он недавно ушёл по очевидной причине: есть вероятность, что человечество стоит на пороге грандиозного открытия, с которым ничто не сравнится по важности — оно разделит историю нашего вида на до и после сингулярности. Речь идёт об AGI, то есть ИИ общего назначения. Если так, то сейчас нет смысла работать больше ни над чем.
Читать дальше →

Запуск аналогов ChatGPT на домашнем ПК в пару кликов и с интерфейсом

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

--- Обновление статьи 9 Августа 2023 ---

В течении последнего полугода в сфере текстовых нейронок всё кипит - после слитой в сеть модели Llama, aka "ChatGPT у себя на пекарне" люди ощутили, что никакой зацензуренный OpenAI по сути им и не нужен, а хорошие по мощности нейронки можно запускать локально.

Основная проблема в том, что всё это требует глубоких технических знаний.

Но в этой статье я расскажу, как запустить добротную нейросеть на домашнем ПК с 16ГБ ОЗУ в несколько кликов. Буквально в несколько кликов - копаться в консоли не придётся.

Читать далее

Делаем Ambient Light на Raspberry Pico. Контрибьютим в OpenRgb

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.3K

Ambient Light помогает работать ночью. Когда вокруг темно и светит только монитор, то глаза сильно напрягаются. Лично мне приятно работать без верхнего света и данное решение помогает мне это делать.

Читать далее

Где решать задачи по программированию, чтобы пройти путь from zero to hero

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

Если вам о чём-то говорят фамилии Зив, Хомченко и Рымкевич, иди сюда, дай обниму, бедолага-олимпиадник, то вы наверняка знаете, как важно прорешивать задачи для полноценного, осознанного и глубокого понимания изученного материала. Когда нет или совсем мало реальной практики, задачи дают возможность покрыть практикой все теоретические знания, погрузиться в неожиданные выводы, сложности, баги, препятствия. Более того, даже если практики достаточно, задачи помогают относительно быстро, комплексно и глубоко проработать типичные и нетипичные ситуации, возникающие в разработке (любой другой науке). Это всегда безопасный (никто не взрывает лабораторию и не роняет прод), доступный и удобный способ подробно разобраться в предмете. Определённо, программирования это касается в первую очередь.

Читать далее

Вопросы и ответы для собеседования Go-разработчика

Уровень сложностиСредний
Время на прочтение53 мин
Охват и читатели174K

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


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


Да, это очень объемный пост, и вряд ли его можно вдумчиво осилить за один подход, но поместив его в закладки он, возможно, когда-то сослужит вам добрую службу (читать его можно по частям, находясь в метро или между вечными совещаниями; да и Ctrl + F никто не отменял). Ещё ему очень не хватает оглавления для удобной навигации между вопросами, но у хабраредактора нет возможности генерировать TOC (если будут запросы об этом в комментариях — сделаю его руками). Об очепятках, пожалуйста, пишите в личку.

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

Ещё раз о гидропонике

Время на прочтение15 мин
Охват и читатели48K

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

Читать далее

Учим нейросеть принимать решения на основе уже известного опыта (на примере Шахмат и загруженного датасета)

Время на прочтение15 мин
Охват и читатели12K

Учим нейросеть играть в Шахматы, загрузив в нее датасеты уже сыгранных партий с известным результатом.

То есть никакого минимакса, деревьев и расчетов на несколько ходов вперед.
Идея в том, что если в нейросеть загрузить много партий, уже сыгранныx другими игроками, то нейросеть будет знать, как поступали другие игроки в соответствующих случаях и к какому результату это приводило. Нейросеть обобщит имеющийся опыт и будет делать ход на основе уже известного опыта и выявленных закономерностей, причем делать ход «мгновенно».

Читать далее

Пишем простой шахматный движок на Go

Время на прочтение8 мин
Охват и читатели12K
Всем, кто сейчас смотрит нашумевший сериал «Ход королевы» (The Queen's Gambit), посвящается. Еще больше шахматных терминов в нашем новом переводе.

В данной статье мы постараемся разобраться, как работают шахматные движки путем портирования шахматного движка sunfish на Go. Sunfish примечателен своей простотой и небольшим размером, но при этом он все-таки способен сыграть достойную шахматную партию. Go в свою очередь известен как простой и хорошо читаемый язык программирования, поэтому я надеюсь, что вместе они составят отличную пару.
Читать дальше →

Как работает ControlNet. Контролируемая генерация изображений

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели48K

Нейронные сети прошли долгий путь от генерации странных ЧБ-изображений до фантастических фотореалистичных сцен, которые не поддаются воображению. С помощью всего лишь короткой текстовой подсказки диффузионные нейросети могут создавать потрясающие изображения, неотличимые от обычных. Однако, какими бы впечатляющими ни были эти модели, в них отсутствует важнейший элемент — пользовательский контроль. Представьте, что вы можете указать точную форму, положение и позу объекта на изображении, которое вы хотите создать. Что ж, теперь это возможно благодаря новаторской технологии под названием ControlNet!
Читать дальше →

Инструменты для нагрузочного тестирования

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

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

Читать далее

Идеальное рабочее место программиста. История. Часть 3. Положение рук

Время на прочтение8 мин
Охват и читатели27K

Третья часть истории создания рабочей киберстанции E-station, в которой я постараюсь раскрыть проблему положений рук.

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

Читать далее

Взгляд компьютерным зрением на работу коммунальных служб

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

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

Пошагали

Как работает поиск по коду на Github

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


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


Нам часто задают вопрос о новом поиске по коду: «Как он работает?». В дополнение к моей лекции на GitHub Universe, я в общих чертах отвечу на этот вопрос, а также немного расскажу о системной архитектуре и технических основах данного продукта.


Так как же он работает? Мы создали собственный поисковый движок с нуля на Rust специально для поиска по коду. Наш поисковый движок называется «Blackbird», но прежде чем я стану описывать как он работает, думаю, что нужно понять наши предпосылки. На первый взгляд, создание поискового движка с нуля выглядит спорно. Зачем это делать? Разве уже нет большого количества существующих решений с открытым исходным кодом?

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность