Как стать автором
Обновить
-7
0
Сергей @hamnsk

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

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

Изучаем команду wget на 12 примерах

Время на прочтение4 мин
Количество просмотров247K
Все мы иногда качаем файлы из интернета. Если для этого использовать программы с графическим интерфейсом, то всё оказывается предельно просто. Однако, при работе в командной строке Linux дело несколько усложняется. Особенно — для тех, кто не знаком с подходящими инструментами. Один из таких инструментов — чрезвычайно мощная утилита wget, которая подходит для выполнения всех видов загрузок. Предлагаем вашему вниманию двенадцать примеров, разобрав которые, можно освоить основные возможности wget.


Читать дальше →
Всего голосов 38: ↑25 и ↓13+12
Комментарии33

Пишем собственный миниатюрный Redis-сервер на Python

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

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

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

«Простое» программирование на python

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


functools (это такая свалка для всяких ненужных мне вещей :-).
— Гвидо ван Россум

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


В статье заимствуются примеры и/или концепции из библиотеки funcy. Во-первых, она клевая, во-вторых, вы сразу же сможете начать ее использовать. И да, нам понадобится ФП.

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

Безлимитное распознавание речи. Или как я перевожу в боте голосовые сообщения в текст

Время на прочтение5 мин
Количество просмотров45K
Привет, Хабр. Обычно я пишу программы для неговорящих людей, но решил удариться в крайности и сделать продукт для говорящих людей. Я хочу рассказать о разработке бота для VK, который переводит пересланные ему голосовые сообщения в текст. Сначала я использовал Yandex SpeechKit, но потом уперся в дневной лимит распознаваемых единиц и перешел на wit.ai, об этом и хочу рассказать, а также о фреймворке для создания ботов vk с помощью node.js, болтовне гугловского dialogflow.

Обложка статьи на которой показан скришот сайта wit.ai
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии7

Понимание сети Kubernetes: сервисы

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

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


Сеть подов в кластере – аккуратный материал, но сам по себе он недостаточен для создания долгосрочных систем, поскольку поды в Kubernetes эфемерны. В качестве конечной точки можно использовать IP-адрес пода, но нет гарантии, что при следующем воссоздании пода адрес останется прежним. Его смена может произойти по любой причине.

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

Нотной грамоте учат неправильно*

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

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


Предполагается, что студент должен страдать самостоятельно освоить ноты, путем многократного повторения. И вообще, если «ниасилил», значит у тебя нет Таланта — иди мести двор.


Представьте что было бы, если бы обычной грамоте учили так же. Но мы, почему-то, в большинстве своем читать и писать таки научились.


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


* Дисклеймер

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


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


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


Эффективность я оценивал исключительно на себе, поскольку сей субъект оказался самым доступным для исследования.

Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии212

Система сбора, анализа, уведомлений и визуализации логов на syslog-ng, elasticsearch, kibana, grafana, elasticalert

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

image


Что мы получим после этой статьи:


Систему сбора и анализа логов на syslog-ng, elasticsearch в качестве хранилища данных, kibana и grafana в качестве систем визуализации данных, kibana для удобного поиска по логам, elasticalert для отправки уведомлений по событиям. Приготовьтесь, туториал объемный.


Какие логи будем собирать:


  • все системные логи разложенные по индексам в зависимости от их facility(auth,syslog,messages и т.д.);
  • логи nginx — access и error;
  • логи pm2;
  • и др.

Обоснование выбора системы


Почему я выбрал связку с syslog-ng в качестве отправителя, парсера и приемщика логов? Да потому что он очень быстрый, надежный, не требовательный к ресурсам(да да — logstash в качестве агентов на серверах и виртуальных машинах просто убожество в плане пожирания ресурсов и требованием java), с внятным синтаксисом конфигов(вы видели rsyslog? — это тихий ужас), с широкими возможностями — парсинг, фильтрация, большое количество хранилищ данных(postgresql,mysql,elasticsearch,files и т.д.), буферизация(upd не поддерживает буферизацию), сторонние модули и другие фишки.


Требования:


  • Ubuntu 16.04 или debian 8-9;
  • vm для развертывания;
  • Прямые руки.

Приступим или добро пожаловать под кат

Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии36

Составляем DNS-запрос вручную

Время на прочтение7 мин
Количество просмотров52K
Об авторе. Джеймс Рутли — бэкенд-разработчик в компании Monzo.

В этой статье мы изучим двочиный формат сообщений Domain Name Service (DNS) и напишем вручную одно сообщение. Это больше, чем вам нужно для использования DNS, но я подумал, что для развлечения и в образовательных целях интересно посмотреть, что находится под капотом.

Мы узнаем, как:

  • Написать запросы DNS в двоичном формате
  • Отправить сообщение в теле датаграммы UDP с помощью Python
  • Прочитать ответ от DNS-сервера

Писать в двоичном формате кажется сложным, но в реальности я обнаружил, что это вполне доступно. Документация DNS хорошо написана и понятна, а писать мы будем маленькое сообщение — всего 29 байт.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии8

MikroTik и блокировка нежелательных сайтов (на примере youtube и facebook)

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


На написание данной статьи меня сподвиг тот факт, что старший ребенок стал по ночам вместо того чтобы укладываться спать, смотреть на своем смартфоне всякие ролики на youtube, до поздней ночи, а так же замена домашнего роутера с TP-Link TL-WR1043ND на MikroTik RB951G-2HnD.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии79

Поиск проблем производительности NodeJs приложения (с примерами)

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

Из-за однопоточной архитектуры Node.js важно быть настороже высокой производительности вашего приложения и избегать узких мест в коде, которые могут привести к просадкам в производительности и отнимать ценные ресурсы CPU у серверного приложения.
В этой статье речь пойдет о том, как производить мониторинг загрузки CPU nodejs-приложения, обнаружить ресурсоемкие участки кода, решить возможные проблемы со 100% загрузкой ядра CPU.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии2

Понимаем и работаем с gulp

Время на прочтение4 мин
Количество просмотров62K
Всем привет. Если вы связаны хоть как-то с JS, вы наверняка слышали о таком приложении как gulp. А возможно даже и использовали. По своему опыту могу сказать, что «въехать» в то, как с ним работать бывает сложно, хотя ключ к пониманию лежит на поверхности. Поэтому и публикую этот материал, надеясь, что он станет полезным.

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

Всего голосов 15: ↑9 и ↓6+3
Комментарии18

Kubernetes 1.9: обзор основных новшеств

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


Очередной релиз системы Kubernetes, 1.9, должен случиться на этой неделе. Согласно текущему плану, это произойдёт сегодня (13 декабря). Об основных новшествах, которые принесёт этот выпуск, уже известно: как и в прошлый раз, их накопилось действительно много. Представляем обзор самых значимых изменений, которые приходят в Kubernetes с грядущим релизом 1.9.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии9

10 лучших бесплатных CRM систем для бизнеса

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

Для помощи малому бизнесу мы впервые сделали подборку бесплатных СRM систем. Мы ранжировали список таких систем в соответствии с наивысшими оценками, используя отзывы реальных пользователей (по состоянию на 13 октября 2017)

Стартапы и малый бизнес ищут ПО СRM для управления постоянно растущей базой клиентов, а также для контроля качества обслуживания важных клиентов. Однако для «наименьших» представителей малого бизнеса покупка и установка СRM системы может требовать больших затрат времени и денег.

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

Малому бизнесу и стартапам необходимо место для удобного хранения данных о клиентах, инструменты для прогнозирования и проведения маркетинговых активностей.

К счастью, основываясь на отзывах реальных пользователей G2 Crowd, мы составили список из 10 лучших (на основе оценок пользователей по удобству использования) бесплатных CRM-инструментов! Часть CRM компаний в этом списке предлагают бесплатно использовать свое ПО только в течение пробного периода, другие — абсолютно бесплатны.
Читать дальше →
Всего голосов 16: ↑10 и ↓6+4
Комментарии23

Расширяем функционал Ansible с помощью плагинов: часть 1

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

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

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

История переезда системного администратора в Германию. Часть первая: поиск работы и виза

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

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

Это будет длинная история в трех частях, где я постараюсь максимально осветить все грабли, по которым пришлось пройти.
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии133

3 необычных кейса о сетевой подсистеме Linux

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

В этой статье представлены три небольшие истории, которые произошли в нашей практике: в разное время и в разных проектах. Объединяет их то, что они связаны с сетевой подсистемой Linux (Reverse Path Filter, TIME_WAIT, multicast) и иллюстрируют, как глубоко зачастую приходится анализировать инцидент, с которым сталкиваешься впервые, чтобы решить возникшую проблему… и, конечно, какую радость можно испытать в результате полученного решения.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии18

Визуализация процесса обучения нейронной сети средствами TensorFlowKit

Время на прочтение5 мин
Количество просмотров23K
Hint
Перед прочтением этой статьи советую ознакомиться с предыдущей статьей о TensorFlowKit и поставить star репозиторию.

Я не люблю читать статьи, сразу иду на GitHub
GitHub: TensorFlowKit
GitHub: Example
GitHub: Другое
TensorFlowKit API
Посeтив репозиторий, добавьте его в «Stars» это поможет мне написать больше статей на эту тему.

image

Начиная работать в сфере машинного обучения, мне было тяжело переходить от объектов и их поведений к векторам и пространствам. Сперва все это достаточно тяжело укладывалось в голове и далеко не все процессы казались прозрачными и понятными с первого взгляда. По этой причине все, что происходило внутри моих наработок, я пробовал визуализировать: строил 3D модели, графики, диаграммы, изображения и тд.

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

Существуют целые сообщества, решающие такого рода задачи, например Distill, Welch Labs, 3Blue1Brown.

Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии14

Операционные системы Linux под разные задачи

Время на прочтение17 мин
Количество просмотров663K
Существует огромное количество операционных систем Linux, каждая из которых предлагает то либо другое преимущество. Различные варианты ОС могут затруднить выбор и забрать немалое количество времени для поиска необходимой именно под ваши задачи. Ubuntu, Mint, Elementary, Fedora, OpenSUSE… список удобных для пользователя дистрибутивов может показаться бесконечной историей. Нужна ОС попроще? Для игр? А возможно, нужен мультимедийный дистрибутив для комфортного просмотра и прослушивания медиа контента? Все они доступны.



Здесь собран регулярно обновляемый список операционных систем Linux, оптимально подходящий под конкретные потребности и требования проекта. Материал — адаптивный перевод статьи Christian Cawley The Best Linux Operating Systems.
Всего голосов 47: ↑27 и ↓20+7
Комментарии70

Агрегация логов log4j2 средствами ELK

Время на прочтение12 мин
Количество просмотров19K
Для своих ETL (Extract, Transform, Loading) процессов, на этапах E и T, то есть извлечение и преобразование данных мы используем Apache Storm, и, так как большинство ошибок, связанных с инвалидацией сырых данных, происходит именно на этом этапе, — появилось желание централизованно логировать всё это, используя ELK стэк (Elasticsearch, Logstash, Kibana).

Каким же было моё удивление, что нигде не то, что на русском языке, но даже в оригинальных туториалах не было описана работа с логами в формате log4j2, который является дефолтом в мире Java-приложений.

Исправляя это упущение — под катом туториал по настройке централизованного сбора любых log4j2 логов на основе:

  • ELK внутри Docker
  • Настройка log4j для работы с Logstash
  • Настройка Logstash для правильной индексации логов
  • Немного бонусов, в виде краткой настройки Storm и интеграции Elasticsearch с Grafana

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

Запуск/отладка Python скриптов в контейнерах LXC/LXD из под VS Code

Время на прочтение12 мин
Количество просмотров11K
Привет, Хабр!

В этой статье хочется поделится с вами настройкой девелоперского окружения под разработку скриптов на Python и запуск их в изолированном окружении, практически за пару кликов в редакторе VS Code.

В качестве изолированного окружения будет рассмотрена первичная настройка и создание контейнера на базе LXC под управлением ОС Ubuntu 17.10. Почему не Docker? Сложно ответить, выдать какие-то аргументы. От части концепция виртуализации ОС субъективно ближе по духу, чем виртуализация процессов, но принцип который здесь будет изложен, с некоторыми поправками, подойдет к запуску кода в Docker-контейнерах.



Что вы получите?


  • Научитесь запускать в один клик python-скрипты в контейнере, а также удаленный debug из VS Code
  • Узнаете как установить LXD, настроить сеть и запустить первый контейнер
  • Ознакомитесь с установкой и настройкой редактора исходного кода VS Code, набором расширений которые позволят комфортно писать и отлаживать код.

Чего здесь не будет?


  • Не будет полного обзора LXC/LXD, вам придется самостоятельно найти дополнительную информацию о Linux-контейнерах.
  • Не будет рассмотрен python модуль virtualenv для создания виртуального окружения на хосте разработчика как альтернатива контейнерам.
  • Не будет сравнения в духе Docker vs LXD, выводы вы сделаете самостоятельно на основании вашего опыта.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии11

Информация

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