Pull to refresh
0
0
Send message

Как мы в Plesk в 2 раза снизили стоимость инфраструктуры AWS для нагруженного сервиса

Reading time7 min
Views4.1K

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

Я расскажу, как мы в Plesk сократили расходы на AWS-инфраструктуру одного из наших сервисов без применения уличной магии.

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

Читать далее
Total votes 17: ↑16 and ↓1+18
Comments12

Особенности создания синтаксического анализатора русского текста

Reading time9 min
Views2.9K

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

Была поставлена задача создания программы морфологической и синтаксической обработки грамотно составленных текстов на русском языке с перспективой последующего объединения с семантическим анализатором. В связи с тем, что русский язык имеет некоторую логику построения, то виделось возможным обработать данную языковую логику классическим программным способом (без использования нейросетей), при этом учитывались следующие соображения. Классическая программа обладает максимальной гибкостью при создании изощренных алгоритмов обработки; сами алгоритмы ориентируются на формализованные конструкции словосочетаний, обрабатывают не конкретные слова, а типы слов, что позволяет легко справляться с новыми словами, возникающими в языке достаточно часто. Данный подход видится целесообразным и при дальнейшем развитии программы – включение семантического анализатора в общий сквозной процесс обработки текстов.

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

Читать далее
Total votes 8: ↑5 and ↓3+5
Comments6

Четыре проекта с веб-скрейпингом, которые позволят упростить себе жизнь

Reading time5 min
Views22K
image

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

Веб-скрейпинг — это процесс извлечения данных с веб-сайта. Для изучения веб-скрейпинга достаточно пройти туториал о принципах работы таких библиотек Python, как Beautiful Soup, Selenium или Scrapy; однако если вы не будете применять на практике все изученные концепции, то время окажется потраченным впустую.

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

В этой статье я перечислю проекты, которые автоматизируют четыре задачи, ежедневно выполняемые многими людьми. Проекты изложены по возрастанию сложности, от начальных до продвинутых.
Читать дальше →
Total votes 27: ↑21 and ↓6+21
Comments2

Экспорт фотоальбомов из ВКонтакта

Reading time4 min
Views84K

Преамбула


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

Поехали


В качестве инструмента для работы с API, путём кратких поисков, была выбрана библиотека vk_api. Для работы с сетью она использует Requests, поэтому и эта библиотека требуется для запуска.

Пощупать


GitHub Pages проекта
Исходный код с примерами
Total votes 68: ↑55 and ↓13+42
Comments39

Методы организации DI и жизненного цикла приложения в GO

Reading time20 min
Views15K

Есть несколько вещей, которыми можно заниматься вечно: смотреть на огонь, фиксить баги в легаси-коде и, конечно, говорить о DI — и всё равно нет-нет, да и будешь сталкиваться со странными зависимостями в очередном приложении.
В контексте языка GO, впрочем, ситуация чуть сложнее, поскольку явно выраженного и всеми поддерживаемого стандарта работы с зависимостями нет и каждый крутит педали своего собственного маленького самоката — а, значит, есть что обсудить и сравнить.


В данной статье я рассмотрю самые популярные инструменты и подходы для организации иерархии зависимостей в go, с их преимуществами и недостатками. В случае, если вы знаете теорию и аббревиатура DI не вызывает у вас вопросов (в том числе и необходимость применения этого подхода), то можете начинать читать статью с середины, в первую половине я объясню, что такое DI, зачем это нужно вообще и в частности в го.

Читать дальше →
Total votes 10: ↑8 and ↓2+7
Comments5

О плюсах парного программирования

Reading time6 min
Views9.5K


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

Парное программирование


Мне кажется, чтобы просто объяснить, как устроено парное программирование, можно привести в пример раллийные гонки. Там есть водитель (драйвер) и штурман (навигатор). Водитель сосредоточен непосредственно на управлении автомобилем. Штурман же контролирует на каком участке мы сейчас едем, и подсказывает пилоту о предстоящих поворотах и трамплинах.

Так же и в парном программировании.
Читать дальше →
Total votes 18: ↑17 and ↓1+29
Comments17

Как синхронизировать сотни таблиц базы в Kafka, не написав ни одного продюсера

Reading time18 min
Views32K


Привет, Хабр! Меня зовут Сергей Бевзенко, я ведущий разработчик Delivery Club в команде Discovery. Наша команда занимается навигацией пользователя по приложению Delivery Club: мы отвечаем за основную выдачу ресторанов, поиск и всё, что с этим связано.

Я расскажу про Kafka Connect: что это такое, какова общая концепция и как работать с этим фреймворком. Это будет полезно тем, кто использует Kafka, но не знаком с Kafka Connect. Если у вас огромный монолит и вы хотите перейти на событийную модель, но сталкиваетесь со сложностью написания продюсеров, то вы тоже найдёте здесь ответы на свои вопросы. В комментариях можем сравнить ваш опыт использования Kafka Connect с нашим и обсудить любые вопросы, которые с этим связаны.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments10

Обзор инструментов для chaos engineering в Kubernetes. Часть 2: Litmus Chaos, Chaos Toolkit, KubeInvaders и другие

Reading time11 min
Views3.9K


Это вторая и заключительная часть знакомства с доступными сегодня Open Source-утилитами для организации хаос-инжиниринга в Kubernetes-кластерах. В первой статье было вкратце рассказано о появлении самой дисциплины — chaos engineering, — а также рассмотрены kube-monkey, chaoskube и Chaos Mesh. Теперь этот список пополнится обзором Litmus Chaos, Chaos Toolkit, мини-подборкой из хаос-игр и перечислением пяти других вариантов, заслуживающих внимания инженеров, заинтересованных в разовой или постоянной проверке своей инфраструктуры на устойчивость.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments2

Как и почему мы стали делать UI в Figma вместо Photoshop

Reading time9 min
Views18K

По моему опыту, большинство игровых интерфейсов все еще делаются в Adobe Photoshop ввиду их художественности и графической сложности, на которую не способны векторные редакторы. Однако и в игры пришел тренд плоских интерфейсов, и настало время пересесть с тяжелого Фотошопа на более простые редакторы интерфейсов, такие как FigmaAdobe XDSketch и прочие.

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments23

Контейнеризация понятным языком: от самых азов до тонкостей работы с Kubernetes

Reading time17 min
Views97K


Чем контейнеры отличаются от виртуальных машин, почему Docker настолько популярен, что такое Kubernetes и в чём его преимущества и недостатки. В интервью АйТиБороде СТО «Слёрма» Марсель Ибраев и старший инженер Southbridge Николай Месропян рассказали о контейнеризации понятным языком. Мы перевели интервью в текст для тех, кому лень смотреть.
Мне не лень смотреть, мне лень читать

Читать дальше →
Total votes 17: ↑12 and ↓5+14
Comments6

Deutsche Bank предложил 5% налог на людей, которые после пандемии продолжат работать из дома

Reading time4 min
Views35K

Исследовательская группа Deutsche Bank предложила, чтобы люди платили 5% налог за «привилегию» работать из дома, если они продолжат делать это после пандемии. Это должно будет субсидировать доход, потерянный малообеспеченными из-за кризиса коронавируса.

Главный стратег банка Люк Темпельман сообщил о такой идее в отчете, опубликованном в ежемесячном журнале Konzept созданном для инвесторов и клиентов Deutsche Bank (см. страницы 32-34). По его словам, выход из финансового кризиса, вызванного эпидемией, потребует решительных мер. А налог на удаленных сотрудников требуется уже несколько лет.

Читать далее
Total votes 31: ↑23 and ↓8+22
Comments221

Вокенизация — новый прорыв в области здравого смысла ИИ?

Reading time7 min
Views4.5K

В преддверии старта нового потока курса «Machine Learning Pro + Deep Learning», делимся с вами статьей о вокенизации — новом методе на основе неконтролируемого обучения, который позволяет масштабировать современные небольшие визуально-языковые наборы данных, подобные MS COCO, до размеров английской Википедии, то есть миллиардов записей. В сущности гигантские языковые модели учатся видеть мир. Подробности о том, что из себя представляет метод, как он работает и как может изменить искусственный интеллект, как всегда, под катом.
Приятного чтения!
Total votes 15: ↑14 and ↓1+19
Comments0

INVESTMENT-READY

Reading time52 min
Views6.2K
Или что следует иметь в виду, создавая стартап.

image

//при чем здесь котик? Что за странный вопрос ??


ПРЕДИСЛОВИЕ

Прочел несколько постов от людей, которые провалили стартапы и давали советы на тему чего не следует делать (сорри, хотел дать на них линки, но потерял).

Собирался ответить им в комментариях, но вышло слишком длинно, и решил написать отдельный пост.

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

Как известно, опыт это то, что Вы получаете взамен того, что намеревались получить.

Кучу полезных советов и руководств вы сами найдете в сети.
Здесь я расскажу о важных «мелочах», которые, на мой взгляд, недостаточно освещены.

Возможно, статья пригодится тем, кто намерен создать свой стартап.

Она основана на многолетнем личном опыте, мнениях умных (реально) людей, и здравом смысле.

Вообще же, Здравый Смысл – это мерило всего, с чем Вы сталкиваетесь.



Читать дальше →
Total votes 20: ↑18 and ↓2+22
Comments10

Ускоряем OpenVPN на роутере Openwrt. Альтернативная версия без паяльника и хардварного экстремизма

Reading time4 min
Views17K


Всем привет, недавно прочитал давнюю статью о том, как можно ускорить OpenVPN на роутере, перенеся шифрование на отдельную железку, которая припаивается внутри самого роутера. У меня аналогичный с автором случай — TP-Link WDR3500 с 128 мегабайтами оперативки и бедным процессором, который напрочь не справляется с шифрованием туннелей. Однако, лезть в роутер с паяльником мне категорически не хотелось. Под катом мой опыт выноса OpenVPN на отдельную железку с резервированием на роутере на случай аварии.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments13

Профилирование кода Go-проекта и решение проблемы с выделением памяти

Reading time7 min
Views6.8K
Пожалуй, каждому программисту известны слова Кента Бека: «Make it work, make it right, make it fast». Сначала надо сделать так, чтобы программа работала, дальше — надо заставить её работать правильно, а уже потом можно переходить к оптимизации. 



Автор статьи, перевод которой мы публикуем, говорит, что недавно он решил заняться профилированием своего опенсорсного Go-проекта Flipt. Он хотел найти в проекте код, который можно было бы без особых усилий оптимизировать и тем самым ускорить программу. В ходе профилирования он обнаружил некоторые неожиданные проблемы в популярном проекте с открытым исходным кодом, который в приложении Flipt использовался для организации маршрутизации и поддержки промежуточного ПО. В итоге удалось снизить объём памяти, выделяемой приложением в процессе работы, в 100 раз. Это, в свою очередь, привело к уменьшению количества операций по сборке мусора и улучшило общую производительность проекта. Вот как это было.
Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments0

Тонкая настройка балансировки нагрузки

Reading time22 min
Views47K
В этой статье речь пойдет о балансировке нагрузки в веб-проектах. Многие считают, что решение этой задачи в распределении нагрузки между серверами — чем точнее, тем лучше. Но мы же знаем, что это не совсем так. Стабильность работы системы куда важнее с точки зрения бизнеса.



Маленький минутрый пик в 84 RPS «пятисоток» — это пять тысяч ошибок, которые получили реальные пользователи. Это много и это очень важно. Необходимо искать причины, проводить работу над ошибками и стараться впредь не допускать подобных ситуаций.

Николай Сивко (NikolaySivko) в своем докладе на RootConf 2018 рассказал о тонких и пока не очень популярных аспектах балансировки нагрузки:

  • когда повторять запрос (retries);
  • как выбрать значения для таймаутов;
  • как не убить нижележащие серверы в момент аварии/перегрузки;
  • нужны ли health checks;
  • как обрабатывать «мерцающие» проблемы.

Под катом расшифровка этого доклада.

Total votes 51: ↑49 and ↓2+47
Comments17

Spectre и Meltdown больше не самые опасные атаки на CPU Intel. Исследователи сообщили об уязвимости Foreshadow

Reading time3 min
Views66K


В начале этого года информационное пространство потрясли новости о Spectre и Meltdown — двух уязвимостях, использующих спекулятивное исполнение кода для получения доступа к памяти (статьи и переводы на эту тему на Хабре: 0, 1, 2, 3, 4, 5, 6, 7, 8 и в поиске можно найти еще десяток других). Примерно в тоже время, когда техническое сообщество активно обсуждало снижение производительности процессоров Intel и проблемы архитектуры современных процессоров в целом, которые и позволяют эксплуатацию подобных дыр, две группы исследователей независимо друг от друга стали внимательнее исследовать вопрос спекулятивного исполнения кода на процессорах Intel.

Как итог, обе группы пришли к тому, что использование этого вектора атаки позволяет не только получить доступ к кэшу процессора, но и считывать/изменять содержимое защищенных областей Intel SGX (1, 2), в расшифровке — Intel Software Guard Extensions. Таким образом еще более серьезной атаке подвержены новейшие чипы от Intel на архитектурах Sky Lake (шестое поколение) и Kaby Lake (седьмое и восьмое поколение). И все было бы не так печально, если бы SGX использовалась только системой, но к этим областям обращаются и пользовательские приложения.
Total votes 92: ↑90 and ↓2+88
Comments214

Как писать программы на стыке мобильной разработки и алгоритмов? Конкурс и истории Яндекса

Reading time7 min
Views11K
С 10 по 22 сентября пройдет конкурс Яндекс.Блиц по мобильной разработке. Регистрация открыта. Блиц — это короткий путь в Яндекс: участникам топ-5 будет достаточно успешно пройти одну секцию собеседования вместо стандартных четырех, чтобы получить предложение по работе.

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



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

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments1

Пишем модуль ядра Linux: GPIO с поддержкой IRQ

Reading time15 min
Views19K
Хабр, привет!

Данная статья посвящена разработке GPIO (General-Purpose Input/Output) модуля ядра Linux. Как и в предыдущей статье мы реализуем базовую структуру GPIO драйвера с поддержкой прерываний (IRQ: Interrupt Request).


Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments16

Вся правда о linux epoll

Reading time10 min
Views52K

Ну или почти вся...



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


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


Anyone can wield an axe, but it takes a true warrior to make it sing melees melody.

Я предполагаю, что читатель знаком с epoll, по крайней мере прочел страницу man. О epoll, poll, select написано достаточно много, чтобы каждый кто разрабатывал под Linux, хоть раз о нем слышал.

Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments53
1

Information

Rating
Does not participate
Registered
Activity