Как стать автором
Обновить
29
0
Denis Gukov @fiftin

Full stack developer

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

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

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

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

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

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

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

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

Brain of someone described as an «idiot»

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

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

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


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

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

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

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

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

Open Telekom Cloud

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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



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

Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии41

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

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

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

Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии18

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

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


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

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

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

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

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

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

Время на прочтение7 мин
Количество просмотров17K
Привет, Хабр! Представляю вашему вниманию перевод статьи "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: Сеть


Вступление


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

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

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

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

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

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

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

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

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

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

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

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


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

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

Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии59

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

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

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

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

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

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

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


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


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


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


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


Читать дальше →
Всего голосов 66: ↑62 и ↓4+58
Комментарии33

SASS против LESS

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

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

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

Развернутый ответ: ниже
Читать дальше →
Всего голосов 62: ↑50 и ↓12+38
Комментарии72

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

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

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

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

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

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


Что такое NUTS?


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


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

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

Apache Maven — основы

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

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

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