Search
Write a publication
Pull to refresh
3
0
Евгений Даниленко @JekaMas

Golang и распределенные системы

Send message

Профессионализм разработчика — на шаг ближе к счастью

Reading time5 min
Views3.3K

Привет, Хабр!

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

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

Видео курсов Computer Science клуба

Reading time2 min
Views7.9K

Computer Science клуб — это открытые лекции по компьютерным наукам в Санкт-Петербургском отделении Математического института РАН. Филиалы CS клуба действуют в Новосибирске и Казани. В связи с эпидемией все лекции осеннего семестра проходили онлайн и были доступные всем желающим вне зависимости от их местонахождения. Видеозаписи этих курсов выложены на сайт клуба и в канал на ютубе.

Читать далее

Как бы я изучал Data Science, если бы начал пару лет назад, или Руководство по эффективному изучению науки о данных

Reading time5 min
Views31K
Когда я только начал своё путешествие к науке о данных, я потратил много времени на то, чтобы понять, с чего начать, что я должен узнать в первую очередь и какие ресурсы должен использовать. За последние два года я узнал несколько вещей, о которых хотел знать раньше, например о том, стоит ли сначала сосредоточиться на программировании или статистике, какие ресурсы я должен использовать для изучения новых навыков, как я должен подходить к изучению этих навыков и так далее. Таким образом, эта статья написана, чтобы дать направления и идеи для тех, кто изучает Data Science.

Приятного чтения!

C++20. Coroutines

Reading time33 min
Views69K

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

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

Разработка и тестирование Ansible-ролей с использованием Molecule и Podman

Reading time8 min
Views6.6K
Одно из основных преимуществ Red Hat Ansible Automation Platform заключается в том, что ее язык описания автоматизаций читабелен не только для пары-тройки гуру, но и почти для всех, кто имеет отношение к ИТ. Поэтому вносить свой вклад в автоматизацию могут любые специалисты, что сильно облегчает организацию межкомандного взаимодействия и внедрение автоматизации на уровне корпоративной культуры.



Однако, когда делом занимается такая масса народа, очень важно все тщательно тестировать. При разработке Ansible-контента, вроде плейбуков, ролей или коллекций, мы очень рекомендуем предварительно проверять все в тестовой среде, прежде чем выкатывать в продакшн. Цель такого тестирования – удостовериться, что все работает как надо, чтобы избежать неприятных сюрпризов на «боевых» системах.
Читать дальше: Разработка и тестирование Ansible-ролей с использованием Molecule и Podman

Курс “Введение в информационный поиск” и немного истории

Reading time3 min
Views5.1K

Меня зовут Павел Браславский, я научный сотрудник JetBrains Research и доцент Питерской Вышки.


Осенью прошлого года я после большого перерыва прочитал курс “Введение в информационный поиск”, на этот раз — для студентов академических программ JetBrains в Питерской Вышке и ИТМО. Comeback получил продолжение — зимой я прочитал мини-курс с обзором моделей информационного поиска и подходов к оценке для сотрудников Tinkoff, а весной — обзорную лекцию про информационный поиск в рамках курса по обработке естественного языка. В этой статье я кратко расскажу о курсе и его “исторических предпосылках”.


image

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

Гражданство за инвестиции: как купить паспорт? (часть 3 из 3)

Reading time9 min
Views5.5K
Быстро и легально создать коллекцию паспортов не так сложно, как может показаться. При наличии финансовых ресурсов можно оформить экономическое гражданство сразу нескольких стран. Тем не менее, одних денег недостаточно. Нужно учесть массу тонкостей. Поможет в этом данное руководство.



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

Что такое экономическое гражданство?

  • Как определить, что страна предлагает гражданство за инвестиции?
  • Что дает второй паспорт инвестору?
  • Гражданство за инвестиции не следует путать с этим…
  • Где можно получить гражданство за деньги?
  • Где можно получить гражданство за деньги?
  • Как получить право на экономическое гражданство?

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

  • Как работает гражданство за инвестиции с точки зрения бюрократа?
  • Кому следует получить гражданство за деньги?
  • Как выбрать лучшее экономическое гражданство?

Как работает гражданство за инвестиции с точки зрения бюрократа (процедуры и процессы)?


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

Ozon go school: Как не нужно проводить отбор

Reading time9 min
Views43K

Go School


Как вы знаете, в середине мая Ozon объявил о запуске школы программирования на языке Go. Обещали следующее:

  • бесплатное обучение
  • возможность получить знания по реальной разработке на Go от Ozon
  • возможность получить работу в Ozon

Чтобы попасть в школу, нужно было:

  • иметь опыт промышленного программирования
  • пройти тестовые задания по программированию на платформе Яндекс.Контест
  • пройти skype-собеседования

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

Тогда же было озвучено число студентов, которое готовы принять в Школу — около 40 человек.

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

  • желательно проживать в Москве
  • быть гражданином РФ
  • возраст старше 18 лет

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

Вроде все выглядело неплохо, условия не такие сложные и вполне выполнимые.


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

Алгоритм AdaBoost

Reading time4 min
Views19K
Перевод статьи подготовлен в преддверии старта продвинутого курса «Математика для Data Scienсe».




Введение


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

Пять лет Rust

Reading time13 min
Views31K

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


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

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

Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 49 и 50

Reading time4 min
Views3K

предыдущие главы


49. За и против сквозного обучения


Продолжим рассматривать систему распознавания речи:


image

Большинство элементов этого конвейера созданы без применения машинного обучения (разработаны людьми или hand-designed):


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

С одной стороны не обучаемые алгоритмы (hand-engineered components) ограничивают потенциальную производительность речевой системы. С другой их использование имеет определенные преимущества:


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

Rust для Java разработчиков

Reading time15 min
Views16K

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

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

Разбираемся в VPN протоколах

Reading time8 min
Views250K

В последние месяцы армия пользователей VPN значительно увеличилась. И речь не о любителях обходить блокировки и посещать запрещенные сайты, а о тех, кто использует VPN для безопасной работы (да-да, удаленной работы). Это повод еще раз посмотреть на арсенал доступных протоколов и сравнить их с точки зрения безопасности.


о дивный новый мир

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

Кодогенерация в Go на примере создания клиента к БД

Reading time13 min
Views18K
В данной статье хотелось бы рассмотреть вопросы кодогенерации в Golang. Заметил, что часто в комментариях к статьям по Go упоминают кодогенерацию и рефлексию, что вызывает бурные споры. При этом на хабре статей по кодогенерации мало, хотя она применяется довольно много где в проектах на Go. В статье попытаюсь рассказать, что из себя представляет кодогенерация, описать сферы применения с примерами кода. Также не обойду стороной и рефлексию.
Читать дальше →

Простой подход к работе с отзывчивыми изображениями

Reading time10 min
Views20K
Спецификация по отзывчивым изображениям — это фантастический документ, в котором описано множество вариантов использования таких изображений. Но опыт подсказывает мне, что чаще всего при работе с ними нужно знать лишь о том, как отдавать клиенту копии одного и того же изображения разного размера, выбирая их в зависимости от ширины области просмотра страницы. Мы называем это «переключением разрешения». Для решения этой задачи можно воспользоваться атрибутами srcset и sizes.

Вывод отзывчивых изображений предусматривает применение достаточно сложной логики. Сюда, кроме прочего, входит определение того, изображение какого размера будет выведено, а также выяснение того, работает ли пользователь с экраном высокого разрешения. К счастью, браузеры лучше, чем люди, умеют определять то, какие именно изображения лучше всего подходят каждому конкретному пользователю. Всё, что нам нужно — это дать им некоторые подсказки. Атрибут srcset даёт браузеру список графических ресурсов, из которых он может выбирать наиболее подходящее изображение. Атрибут sizes позволяет сообщить браузеру о том, изображение какого размера нужно показать в том или ином случае.



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

Rust: От &str к Cow

Reading time6 min
Views13K

Одной из первых вещей, которые я написал на Rust'е была структура с &str полем. Как вы понимаете, анализатор заимствований не позволял мне сделать множество вещей с ней и сильно ограничивал выразительность моих API. Эта статья нацелена на демонстрацию проблем, возникающих при хранении сырых &str ссылок в полях структур и путей их решения. В процессе я собираюсь показать некоторое промежуточное API, которое увеличивает удобство пользования такими структурами, но при этом снижает эффективность генерируемого кода. В конце я хочу предоставить реализацию, которая будет одновременно и выразительной и высокоэффективной.

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

Приемы обобщенного программирования в Rust: как мы переводили Exonum с Iron на actix-web

Reading time13 min
Views9K
Экосистема Rust еще не до конца устоялась. В ней часто появляются новые библиотеки, которые заметно лучше предшественников, а ранее популярные фреймворки устаревают. Именно это произошло с веб-фреймворком Iron, который мы использовали при разработке Exonum.

В качестве замены Iron был выбран actix-web. Дальше я расскажу, как мы портировали существующий код на новое решение, используя приемы обобщённого программирования.

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

Пишем API на Rust с помощью процедурных макросов

Reading time18 min
Views13K

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


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


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

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

Расширяем возможности процедурных макросов с помощью WASM

Reading time9 min
Views3.2K

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


  • Сложность с поддержкой таких макросов в IDE. По сути дела нужно как-то научить анализатор кода самостоятельно компилировать, загружать и исполнять эти самые макросы с учетом всех особенностей. Это весьма нетривиальная задача.
  • Так как макросы самодостаточные и ничего не знают друг о друге, то нет никакой возможности делать композицию макросов, что иногда могло бы быть полезным.
Читать дальше →

Новая программная модель Hyperledger Fabric: Go SDK

Reading time4 min
Views2.6K


В предыдущей статье мы говорили о новой программной модели чейнкода в Hyperledger Fabric. И хотя релиз нового Go SDK ещё не состоялся, ничто не мешает нам уже сейчас посмотреть, что нас ждет в будущем, и даже протестить это на тестовой сборке. Не всё ещё реализовано (как, например, commit handlers), но планируемый дизайн программной модели уже ясен, так что давайте взглянем на него ближе.
Читать дальше →

Information

Rating
10,163-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Distributed systems
Lead
From 150,000 $
BlockChain
Ethereum
Bitcoin
Solidity
Golang
Rust