Pull to refresh
29
0
Denis Gukov @fiftin

Full stack developer

Send message

Как мы управляем инфраструктурой на более 1000 серверов при помощи Ansible

Level of difficulty Medium
Reading time 12 min
Views 15K

Привет, Хабр! Мы системные инженеры X5 Tech — Алексей Кузнецов и Борис Мурашин. У нас за плечами больше 15 лет опыта, в том числе поддержка сервисов Rapida, CyberPlat, TeleTrade, сопровождение стека BigData и внедрение кластеров Hadoop. В этой статье мы расскажем, как выбирали систему управления конфигурациями, какими критериями руководствовались, что в итоге выбрали, с какими проблемами столкнулись и как их решали.

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

Читать далее
Total votes 34: ↑34 and ↓0 +34
Comments 22

Как вырастить тупого ребёнка (научно обоснованные вредные советы)

Reading time 7 min
Views 265K

Brain of someone described as an «idiot»

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

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

Что мы подразумеваем под умственным развитием


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

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

Итак, начнём растить не очень умного ребёнка, пользуясь достижениями современной науки.
Читать дальше →
Total votes 201: ↑178 and ↓23 +155
Comments 480

Управление инфраструктурой Open Telekom Cloud с помощью Ansible

Reading time 14 min
Views 3.2K

Open Telekom Cloud

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

Open Telekom Cloud – международная публичная облачная платформа, основанная на OpenStack. Платформа идеально подходит для компаний или стартапов, которые работают с европейскими пользователями, чьи персональные данные должны храниться в пределах Евросоюза: сервис разработан Deutsche Telekom и соответствует стандартам защиты данных GDPR (Генеральный регламент о защите персональных данных) EC.

Если вам интересна эта тема, добро пожаловать под кат!

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

Основатели Clubhouse, Spotify, Stripe и ещё 42% компаний-единорогов имели одну общую черту

Reading time 5 min
Views 11K

Про набитые шишки и к чему это привело. Перевод и адаптация статьи от автора telegram-канала для продактов Алексея Арефьева.

Читать далее
Total votes 16: ↑11 and ↓5 +6
Comments 42

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

Reading time 44 min
Views 211K


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →
Total votes 80: ↑76 and ↓4 +72
Comments 270

Анатомия backpressure в реактивных потоках

Reading time 7 min
Views 12K
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что:

  • backpressure это круто
  • backpressure доступно только в библиотеках, реализующих спецификацию reactive streams
  • эта спецификация настолько сложна, что не стоит и пытаться ее реализовать самому

В этой статье я попытаюсь показать, что:

  • backpressure — это очень просто
  • для реализации асинхронного backpressure достаточно сделать асинхронный вариант семафора
  • при наличии реализации асинхронного семафора, интерфейс org.reactivestreams.Publisher реализуется в несколько десятков строк кода
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Comments 7

Такие удивительные семафоры

Reading time 9 min
Views 136K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Comments 1

RabbitMQ против Kafka: два разных подхода к обмену сообщениями

Reading time 18 min
Views 301K

В прошлых двух статьях мы рассказывали об IIoT — индустриальном интернете вещей — строили архитектуру, чтобы принимать данные от сенсоров, паяли сами сенсоры. Краеугольным камнем архитектур IIoT да и вообще любых архитектур работающих с BigData является потоковая обработка данных. В ее основе лежит концепция передачи сообщений и очередей. Стандартом работы с рассылкой сообщений сейчас стала Apache Kafka. Однако, для того, чтобы разобраться в ее преимуществах (и понять ее недостатки) было бы хорошо разобраться в основах работы систем очередей в целом, механизмах их работы, шаблонах использования и основной функциональности.



Мы нашли отличную серию статей, которая сравнивает функциональность Apache Kafka и другого (незаслуженно игнорируемого) гиганта среди систем очередей — RabbitMQ. Эту серию статей мы перевели, снабдили своими комментариями и дополнили. Хотя серия и написана в декабре 2017 года, мир систем обмена сообщениями (и особенно Apache Kafka) меняется так быстро, что уже к лету 2018-го года некоторые вещи изменились.

Читать дальше →
Total votes 87: ↑82 and ↓5 +77
Comments 41

OpenVPN, о котором вы так мало знали

Reading time 16 min
Views 158K

OpenVPN, как много в этом слове. Мультиплатформенный, гибко настраиваемый, бесплатный VPN сервер с открытым исходным кодом, являющийся фактически стандартом "defacto" для организации доступа к внутренним корпоративным сетям. Большинство администраторов используют его с настройками по умолчанию или с типовыми конфигурациями широко описанными в разных HOW-TO. Но так ли прост OpenVPN, как он кажется на первый взгляд? В данной статье мы рассмотрим скрытые от глаз внутренние механизмы OpenVPN, которые кардинально меняют представление о его возможностях.

Читать дальше →
Total votes 63: ↑62 and ↓1 +61
Comments 18

Анализ тональности текстов с помощью сверточных нейронных сетей

Reading time 11 min
Views 57K


Представьте, что у вас есть абзац текста. Можно ли понять, какую эмоцию несет этот текст: радость, грусть, гнев? Можно. Упростим себе задачу и будем классифицировать эмоцию как позитивную или как негативную, без уточнений. Есть много способов решать такую задачу, и один из них — свёрточные нейронные сети (Convolutional Neural Networks). CNN изначально были разработаны для обработки изображений, однако они успешно справляются с решением задач в сфере автоматической обработки текстов. Я познакомлю вас с бинарным анализом тональности русскоязычных текстов с помощью свёрточной нейронной сети, для которой векторные представления слов были сформированы на основе обученной Word2Vec модели.

Статья носит обзорный характер, я сделал акцент на практическую составляющую. И сразу хочу предупредить, что принимаемые на каждом этапе решения могут быть неоптимальными. Перед прочтением рекомендую ознакомиться с вводной статьей по использованию CNN в задачах обработки естественных языков, а также прочитать материал про методы векторного представление слов.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 9

Исследуем сопоставление с образцом в C# 7

Reading time 6 min
Views 19K
В C# 7 наконец появилась долгожданная возможность под названием «сопоставление с образцом» (pattern matching). Если вы знакомы с функциональными языками, такими как F#, вы можете быть немного разочарованы этой возможностью в ее текущем виде, но даже сегодня она может упростить ваш код в самых разных сценариях.

Каждая новая возможность чревата опасностью для разработчика, работающего в критическом для производительности приложении. Новые уровни абстракций хороши, но для того, чтобы эффективно использовать их, вы должны знать, что происходит под капотом. Сегодня мы собираемся изучить внутренности сопоставления с образцом, чтобы понять, как это реализовано.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 0

Blockchain на Go. Часть 2: Proof-of-Work

Reading time 7 min
Views 16K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Building Blockchain in Go. Part 2: Proof-of-Work".

Содержание
  1. Blockchain на Go. Часть 1: Прототип
  2. Blockchain на Go. Часть 2: Proof-of-Work
  3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
  4. Blockchain на Go. Часть 4: Транзакции, часть 1
  5. Blockchain на Go. Часть 5: Адреса
  6. Blockchain на Go. Часть 6: Транзакции, часть 2
  7. Blockchain на Go. Часть 7: Сеть


Вступление


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

Одним из краеугольных камней Биткоина и блокчейна является то, что добавление новых блоков должно быть достаточно сложной работой. И сейчас мы собираемся исправить этот недостаток.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 2

10 фразовых глаголов для переговоров на английском языке

Reading time 4 min
Views 18K
Фразовых глаголов, связанных со сферой бизнеса, далеко не один десяток. Какие-то из них мы рассмотрели в предыдущей статье, и там вы найдете глаголы, которые относятся к разным аспектам работы. А сегодня мы сосредоточимся на глаголах, которые употребляются при подготовке и проведении деловых встреч и переговоров.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 3

Принят закон об открытых данных

Reading time 2 min
Views 28K
Вчера Владимир Путин подписал его о чем можно узнать на сайте Кремля тут президент.рф/документы/18302

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

Главным минусом — терминологическая слабость и то что определение открытых данных в законе расходится общепринятым.

У закона была непростая судьба которую можно проследить здесь http://asozd2.duma.gov.ru/main.nsf/(Spravka)?OpenAgent&RN=181992-6

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

Вот определение из начальной редакции:

размещение государственными органами информации о своей деятельности в сети «Интернет» в форме открытых данных — форма размещения государственными органами информации о своей деятельности в сети «Интернет», при которой указанная информация размещается в сети «Интернет» в виде массивов данных, организованных в формате, обеспечивающем их автоматическую обработку в целях повторного использования без предварительного изменения человеком (машиночитаемый формат), и на условиях ее свободного (бесплатного) использования.»;


И что получилось в итоге:

4. Информация, размещаемая ее обладателями в сети «Интернет» в формате, допускающем автоматизированную обработку без предварительных изменений человеком в целях повторного ее использования, является общедоступной информацией, размещаемой в форме открытых данных.»;

Читать дальше →
Total votes 55: ↑50 and ↓5 +45
Comments 59

Firebase на I/O 2017: новые возможности

Reading time 8 min
Views 15K
Гостевая статья от участника Google I\O 2017 и GDG Lead в Нижнем НовгородеАлександра Денисова.

Привет Хабр! Совсем недавно в Маунтин-Вью, Калифорния прошла очередная международная конференция, посвященная технологиям Google — I/O 2017. Кто-то ездил на нее в Калифорнию, кто-то приходил на I/O Extended организованные региональными отделениями GDG комьюнити, кто-то смотрел трансляцию самостоятельно, а кто-то не смотрел вовсе (На всякий случай оставлю это тут: все сессии I/O 2017 в записи). О том насколько была хороша или не очень хороша конференция в этом году, мнения противоречивы, я могу сказать только лично от себя, мне очень понравилось.

Еще в прошлом году я сильно заинтересовался тем, что делают ребята из команды Firebase, и я даже писал об этом статью, по этому мне хочется рассказать вам, что нового появилось в экосистеме Firebase, и каким образом это можно использовать.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 5

11 вещей которые я узнал, читая спецификацию flexbox

Reading time 8 min
Views 99K

Я всегда считал, что с flexbox довольно легко работать — глоток свежего воздуха после стольких лет float'ов и clearfix'ов.


Правда недавно я обнаружил что борюсь с ним; что-то растягивалось, когда я не думал, что оно должно тянуться. Я поправил здесь, другой элемент сжался. Я починил это, что-то другое ушло за экран. Какого Джорджа Буша тут происходит?


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


Как бы там ни было, я решил что пора вести себя как взрослый разработчик и выучить flexbox должным образом. Но вместо того, чтобы прочитать 10 очередных блог-постов, я решил отправиться прямиком к исходнику и прочитать The CSS Flexible Box Layout Module Level 1 Spec


Вот хорошие отрывки.


Читать дальше →
Total votes 66: ↑62 and ↓4 +58
Comments 33

SASS против LESS

Reading time 6 min
Views 184K
«Какой препроцессорный язык стоит использовать для CSS?» является очень актуальным вопросом в последнее время. Несколько раз меня спрашивали об этом лично, и казалось бы, каждые пару дней этот вопрос поднимался в сети. Очень приятно что беседа перешла из темы о плюсах и минусах препроцессинга к обсуждению какой же язык является лучшим. За дело!

Если быть кратким: SASS.

Немного развернутый ответ: SASS лучше по всем пунктам, но если вы уже счастливы с LESS — это круто, по крайней мере вы уже упростили себе жизнь используя препроцессинг.

Развернутый ответ: ниже
Читать дальше →
Total votes 62: ↑50 and ↓12 +38
Comments 72

Совет по открытым данным: планы Рослесхоза и Роспатента и раскрытие картографических данных

Reading time 5 min
Views 3.5K
image

16 марта прошло первое в этом году заседание Совета по открытым данным, повесткой которого были открытые данные Рослесхоза, Роспатента, раскрытие пространственных данных и информации о мерах государственной поддержки. Посмотрим, как это было и к чему пришли в этот раз.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 1

R, GIS и fuzzyjoin: восстанавливаем статистические данные для регионов NUTS

Reading time 12 min
Views 4.4K

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


Что такое NUTS?


NUTS расшифровывается как Nomenclature of Territorial Units For Statistics. Это стандартизированная система административно-территориального деления, принятая странами Евросоюза. История вопроса уходит в 1970-е, когда родилась идея сделать регионы различных стран Европы сопоставимыми. В более или менее законченном и широко употребимом виде система появилась лишь на рубеже веков. Существуют три основных уровня NUTS (см. рис. 1), и наиболее распространенным в региональном анализе оказывается NUTS-2.


fig1
Рисунок 1. Иллюстрация принципа выделения регионов NUTS различного иерархического уровня

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 0

Apache Maven — основы

Reading time 6 min
Views 539K
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Поехали!
Total votes 45: ↑41 and ↓4 +37
Comments 29

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Frontend Developer, Fullstack Developer
Senior
From 25 $
JavaScript
SASS
React
Vue.js
Node.js
WordPress
Golang
Docker
SQL
MongoDB