Pull to refresh
22
0
Eugene Leonovich @gen

rybakit

Send message

l9ec: волшебный патч ядра Linux

Level of difficultyMedium
Reading time10 min
Views19K

Если вам неудержимо хочется использовать оборудование из музея для современной разработки — статья специально для вас.

Читать далее

Как мы делали Go-VShard-router

Level of difficultyMedium
Reading time9 min
Views2.3K

Привет, меня зовут Нуржан Сактаганов, я ведущий разработчик в Почте и Облаке Mail. Хочу рассказать о нашей библиотеке Go-VShard-router и поделиться трюками и выводами, которые мы сделали при разработке.

Читать далее

Почти фотошоп от OpenAI, дипфейки на собеседованиях, Operator от Китая: главные события марта в сфере ИИ

Reading time22 min
Views4.1K

С каждым месяцем развитие ИИ выходит на новые, ранее неизведанные рубежи. Март не стал исключением и снова повысил планку достижений. OpenAI представила первые инструменты для создания автономных агентов, а Google DeepMind решила, что виртуальным ассистентам пора обзавестись руками физическими манипуляторами. Тем временем Anthropic выяснила, что LLM научились распознавать, когда их тестируют, и подгонять ответ под ожидания проверяющих (немного тревожно, не правда ли?). И это лишь вершина айсберга!

Разбираем главные события марта в ИИ: от моделей с контекстом в миллион токенов до китайских систем, которые достигают уровня GPT-4 по цене чашки кофе. По традиции также поделимся подборкой новых инструментов и исследований. Будет интересно!

Читать далее

Go: тонкости профилирования CPU

Level of difficultyEasy
Reading time16 min
Views3K

Описаны различные способы получения профиля CPU. Объясняется смысл значений в профиле. Приводится пример анализа графа профиля CPU. На конкретных примерах обращается внимание на качественную природу профиля.

Читать далее

Обзор пакета unsafe: как обходить ограничения Go (но лучше этого не делать)

Level of difficultyEasy
Reading time4 min
Views4K

Когда вы впервые открываете Go, вас встречает строгая и безопасная среда: никаких сюрпризов, сегфолтов, фишек с указателями. Всё строго, как в хорошо организованной организации. Но есть в этом языке лазейка, которая ломает весь этот порядок и это — пакет unsafe.

Читать далее

Паттерны многопоточности в Go

Level of difficultyEasy
Reading time16 min
Views25K

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

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

Читать далее

Как мы заработали 100 000 рублей за 3 месяца, запустив простой конвертер картинок в США

Level of difficultyEasy
Reading time5 min
Views71K

Что мы поняли, запустив простой конвертер картинок за 1 месяц в США. И как заработали 100 000 рублей за первые 3 месяца, хотя вокруг куча бесплатных аналогов.

Читать далее

Применения Continuation-passing style в Go

Level of difficultyMedium
Reading time8 min
Views5.5K

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

Читать далее

Демистифицируем парсинг PDF: конвейерная обработка

Reading time22 min
Views5.6K

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

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

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

Читать далее

Специалисты по информатике изобрели новый эффективный способ подсчёта уникальных элементов

Reading time4 min
Views20K

Представьте, что вас отправили в девственный тропический лес, чтобы провести перепись диких животных. Каждый раз, когда вы видите животное, вы делаете снимок. Ваша цифровая камера будет фиксировать общее количество снимков, но вас интересует только количество уникальных животных — всех тех, которых вы ещё не посчитали. Как лучше всего получить это число? «Очевидное решение — запомнить всех животных, которых вы уже видели, и сравнивать каждое новое животное с этим списком», — говорит Лэнс Фортноу, специалист по информатике из Иллинойского технологического института. Но есть и более умные способы, добавил он, потому что если у вас тысячи записей, то очевидный подход далеко не так прост.

Всё становится ещё хуже. Что, если вы — Facebook, и вам нужно подсчитать количество отдельных пользователей, которые заходят на сайт каждый день, даже если некоторые из них заходят с нескольких устройств и в разное время? Теперь мы сравниваем каждый новый вход со списком, который может исчисляться миллиардами.

Читать далее

Популярные ошибки в Golang и как их избежать

Level of difficultyEasy
Reading time15 min
Views14K

Дмитрий Королев расскажет про распространённые ошибки при работе со слайсами, каналами и другими структурами в Go. Научимся предупреждать их и справлять на примерах.

Читать далее

Что нужно знать, чтобы успешно пройти System Design Interview

Reading time16 min
Views53K

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

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

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

Читать далее

Кручу-верчу, запутать хочу

Level of difficultyEasy
Reading time2 min
Views18K

Салют! В этой небольшой статье я попытался собрать необычные и малоизвестные трюки с перенаправлениями в bash, которые могут значительно упростить работу.

Читать далее

Многопоточность и параллелизм в Go: Goroutines и каналы

Reading time15 min
Views31K


Язык программирования Go, разработанный с упором на простоту и эффективность, предлагает уникальный подход к реализации параллельных вычислений через Goroutines и каналы.

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

Мокаем сервисы с Mountebank и Go

Level of difficultyMedium
Reading time11 min
Views3K

Mountebank - это мощная платформа для тестирования API и mocking-a, предоставляющая пользователям функционал и инструменты для создания гибких, настраиваемых и надежных тестовых окружений. В этой статье автор рассмотрит настройку Mountebank на реальном примере.

Читать далее

100 промптов для ChatGPT

Reading time10 min
Views72K

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

Читать далее

Yet Another Easyjson. Как я не устаю делать велосипеды, а главное зачем

Level of difficultyMedium
Reading time16 min
Views4.2K

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


Сразу скажу: велосипедостроение в коммерческой разработке — зло. Создавать что-то, что уже существует и было отлажено многократно – это бессмысленно. И учитывая время, необходимое для выхода на рынок (Time To Market), это еще и опасно. Кроме того, новый код — это новые ошибки. Именно поэтому часто проще взять готовое и дополнить его до нужного уровня при работе в реальных продуктовых проектах.


Тем не менее, я противоречу сам себе, опровергая то, что сказал ранее. Я разработал на языке GO свой собственный easyjson в рамках именно продуктовой разработки, за что мне бесконечно стыдно. Если кто-то скажет, что я потратил деньги бизнес-заказчика в угоду своим амбициям, я не буду с ним спорить, но у меня были определенные причины, а главное теперь у меня есть интересный опыт. Об этом опыте я и расскажу.



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

Tarantool: как избавиться от «зоопарка технологий» с помощью потоков событий

Reading time14 min
Views5.6K


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

Меня зовут Иван Банников, я ведущий разработчик VK Tech. В этом материале я расскажу об основных предпосылках разрастания используемого стека, а также на примере IoT-платформы, которую мы поддерживали, поделюсь опытом избавления от «зоопарка технологий» в области обработки сообщений.
Читать дальше →

Bash Auto Completion в Linux

Level of difficultyEasy
Reading time5 min
Views22K

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

Однако в Linux предусмотрена удобная функция автодополнения для Bash. Этот инструмент, с которым знакомятся на начальных этапах изучения Linux, значительно ускоряет и упрощает процесс ввода команд. Он автоматически дополняет имена файлов, каталогов или опции команд, когда вы вводите их в командной строке.

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

Читать далее

Какой инопланетные астрономы увидели бы Землю

Reading time9 min
Views9.9K


Когда вы смотрите на какой-либо объект Вселенной, вы не видите его таким, какой он есть в момент наблюдения. Скорость света, несмотря на то, что это самая высокая скорость, с которой любой сигнал может распространяться по Вселенной, всё же конечна. Неважно, насколько близко или далеко находится объект — вы видите его только таким, каким он был определённое количество времени назад: в тот момент, когда наблюдаемый вам объект излучал (или отражал) свет. Тот факт, что свет должен преодолеть пространство от изучаемого объекта до наблюдателя, порождает пробел в знаниях об этом объекте, заполнить который можно только путём умозаключений.

Каждый наблюдатель во Вселенной, если только он не провёл большое количество времени, путешествуя со скоростью, близкой к скорости света (или не находился в чрезвычайно сильном гравитационном поле, например за горизонтом событий чёрной дыры), будет воспринимать «прямо сейчас» как один и тот же момент времени относительно Большого взрыва: с этого события прошло 13,8 миллиарда лет. Для близко расположенных объектов скорость света достаточно велика, чтобы разницей во времени между источником и наблюдателем в большинстве случаев можно было пренебречь. Но чем дальше мы смотрим, тем дальше назад во времени, и тем ближе к моменту Большого взрыва мы заглядываем.
Читать дальше →
1
23 ...

Information

Rating
Does not participate
Location
Нидерланды
Date of birth
Registered
Activity