Как стать автором
Обновить
0
0
Евгений @chistya

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

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

Пишем на Python как на Rust

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

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

Читать далее
Всего голосов 88: ↑83 и ↓5+94
Комментарии42

Vector: руководство по уходу за граблями

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

Казалось бы простая задача - переместить логи из пункта А в пункт Б, что тут сложного. Но даже для такой пустяковой задачи придумали множество ПО: как более популярных Rsyslog, Logstash, fluentd, fluentbit, так и менее известных как file.d, недавно принудительно-опенсорснутая Пилорама (спасибо, Яндекс!).

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

Разбежаться и прыгнуть
Всего голосов 18: ↑18 и ↓0+18
Комментарии8

Пишем GPT в 60 строк NumPy (часть 1 из 2)

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

В этом посте мы начнём реализацию с нуля GPT всего в 60 строках numpy. Во второй части статьи мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
Читать дальше →
Всего голосов 73: ↑71 и ↓2+92
Комментарии33

8 вещей, о которых забывают разработчики при переносе приложения в Kubernetes

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

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

Наш субъективный список — под катом. Пополните его своими рекомендациями в комментариях!
Читать дальше →
Всего голосов 59: ↑57 и ↓2+72
Комментарии2

20 уроков, которые я вынес из 20 лет работы программистом

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров117K
Вы приступаете к чтению статьи с высокой концентрацией советов. Учиться у предшественников – хороший способ добиться успеха, но здесь мы часто забываем о важной оговорке. Практически любой совет работает только в определенном контексте, но дается обычно без каких-либо указаний на него.

«Да просто повысьте цены!» — говорит компания, которая уже двадцать лет на рынке и первые годы продавала продукт за копейки, чтобы привлечь клиентов и прийти к успеху. «Нужно всё реализовать в микросервисах», — говорит компания, которая по-быстрому сколотила монолит, набрала несколько тысяч пользователей и метнулась к микросервисам, когда начались проблемы с масштабированием.

Без понимания контекста советы теряют смысл или, хуже того, приносят вред. Если бы люди из примеров выше последовали своим собственным советам в начале пути, то, вероятно, пожалели бы этом. Этой ловушки сложно избежать. Мы представляем собой кульминацию своего опыта, но при этом смотрим на него через призму настоящего.
Читать дальше →
Всего голосов 135: ↑128 и ↓7+152
Комментарии115

Стеклянная луковица dns внутри k8s

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

Бесспорно, тема резолвинга dns запросов внутри k8s неоднократно поднималась на хабре и вставала ребром перед многими инженерами поддерживающими k8s кластера.  Снимая слой за слоем, попытаемся разобраться как резолвятся dns записи внутри k8s. Бонусом бегло взглянем на устройство механизма резолвинга dns для Go.

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

Поиск в глубину, поиск в ширину, алгоритмы Дейкстры и А* — это один и тот же алгоритм

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

В алгоритмических задачах на графах мы часто используем четыре известных алгоритма: Поиск в ширину или глубину, алгоритмы Дейкстры и А*. Разбираемся, почему на деле это один и тот же алгоритм.

Читать далее
Всего голосов 31: ↑26 и ↓5+29
Комментарии21

Прокачивайте математику – вот как это поможет при программировании

Время на прочтение6 мин
Количество просмотров33K
Пол Орланд исследует, как можно прокачать навыки программирования, развивая математическую подготовку и всё лучше разбираясь в том, как сохраняется связь между математикой и программированием.

Эта статья адресована всем, кто хочет улучшить математические навыки, но в особенности программистам, желающим применять математические навыки в повседневной работе.
Читать дальше →
Всего голосов 45: ↑17 и ↓28-1
Комментарии44

Концепции Rust, которые неплохо бы знать пораньше

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

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

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

Разбираем шаблоны проектирования

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

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

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

Представленный в статье материал предполагает знакомство читателя с основами объектно-ориентированного программирования.

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

Скучный Python: повышаем качество кода

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

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

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

Как ускорить работу PostgreSQL

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

В статье рассказываем, как оптимизировать базу данных PostgreSQL на примере Linux на IBM Z. Опираясь на представленные примеры, вы шаг за шагом узнаете, какие опции и параметры конфигурации улучшат установку PostgreSQL с точки зрения:

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

Bittorrent с нуля на Go

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


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

Читать дальше →
Всего голосов 50: ↑47 и ↓3+53
Комментарии9

Минимальный геном как операционная система

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

Как знают мои постоянные читатели, кроме основного блога я веду на Хабре ещё один, где публикую переводы с английского, посвящённые строгим IT-темам. 21 января я вывесил там материал об игре «Жизнь» Джона Конвея, рассказывающий о создании минимальной жизнеспособной единицы по правилам этой игры. Активное обсуждение статьи, в котором поучаствовал даже уважаемый Павел Гранковский @Pavgran, коммиттер игры, упоминаемый в посте, вернуло меня к мыслям о сборке минимально жизнеспособного биологического генома. Очевидно, что современные возможности секвенирования ДНК и амплификации генов переводят такую задачу в разряд решаемых. На пути к созданию полностью синтетических организмов следовало бы освоить создание полусинтетических, основой для которых мог бы послужить именно такой минимальный геном. Ниже я расскажу о перепрограммировании геномов, искусственном и естественном редуцировании геномов, а также о перспективах таких исследований.

Читать далее
Всего голосов 33: ↑30 и ↓3+42
Комментарии14

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

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

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

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

Это пет-проект автора статьи.

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

Бесит, что err != nil: главные инсайты из опроса Go-разработчиков

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

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

Читать далее
Всего голосов 15: ↑14 и ↓1+17
Комментарии13

From Zero to Hero: определите ваш уровень решения LeetCode задач от 1 до 5

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

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

А какой у вас уровень?

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

Создание Kubernetes-кластера на пальцах или почему это не сложно

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

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

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

Как избавиться от прокрастинации до того, как она разрушит вашу карьеру

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

Прокрастинацию принято считать разновидностью лени и ерундой, а эффективным лекарством от нее грозный окрик: «Соберись, тряпка!» На деле прокрастинация — опасная проблема, сродни зависимости, которая вызывает много вины и стыда, и способна со временем разрушить личность. Почему она так опасна, редко лечится попыткой «взять себя в руки» и как ее одолеть?

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

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

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

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



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


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Всего голосов 43: ↑42 и ↓1+51
Комментарии73
1

Информация

В рейтинге
Не участвует
Откуда
Одинцово, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность