Search
Write a publication
Pull to refresh
0
Сергей @sav6622read⁠-⁠only

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

Send message

Лучший мессенджер для командной работы: Сравниваем HipChat, Slack и Kato

Reading time8 min
Views115K
image

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

Компенсировать недостатки электронной почты призваны мессенджеры для корпоративных коммуникаций («team chat» в английском варианте). При этом выбрать подходящий инструмент из огромного количества предлагаемых на рынке систем бывает сложно — многие важные достоинства и недостатки конкретных продуктов выявляются только на этапе их использования, когда переключиться на другой мессенджер уже не так-то просто.

В сегодняшнем материале мы сравним собственный сервис Kato.im с лидерами рынка мессенджеров для командной работы Slack и HipChat.
Читать дальше →

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time8 min
Views88K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →

Почему я выбрал Ульяновск для IT-дауншифтинга

Reading time4 min
Views25K
Москва — идеальный город, для того, чтобы зарабатывать, но совершенно не предназначенный для жизни. Пробки, смог, холодный климат и огромные размеры — что может быть лучше. Поэтому, как только у меня возникла возможность работать удалённо (вернее даже до этого), я тут же уехал из златоглавой в поисках лучшей жизни. О том, что из этого получилось — читайте под катом.
Читать дальше →

Проблемы распределённых команд и способы их решения

Reading time10 min
Views20K
Наша команда растёт и успешно развивается с 2009-го года, при том, что преобладающее большинство сотрудников не ходят в офис. Они сидят в своих московских и питерских квартирах, львовских и харьковских дачах, минских и нижегородских домах, тайских кондо и турецких бунгало. Проводя очередную бизнес-встречу в красивом московском офисе с потенциальным клиентом мы неизбежно слышим вопрос: «А где у вас офис?». Мы отвечаем честно: «В Нижнем Новгороде, но вообще-то, большинство наших сотрудников туда не ходит, они работают из дома».
Наступает небольшая пауза, во время которой, скорее всего, заказчик представляет себе примерно вот такую картину:

image

За шесть с лишним лет работы мы столкнулись с небольшим количеством трудностей «удалёнки», и со значительно бOльшим количеством недоверия и мифов об удалённой работе. Книга Remote нас порадовала и как будто сказала «ребята, вы на правильном пути», но полезных советов по трудностям, к сожалению, не дала. Поэтому в этой статье я соберу те советы и решения, которые помогут не наступать на наши грабли и не изобретать велосипеды.
Читать дальше →

Портирование OpenWRT на новое устройство на примере ASUS DSL N12U

Reading time5 min
Views32K
Что делать если вашего роутера не оказалось в списке поддерживаемых устройств OpenWRT? Конечно же сделать свой порт. Это можно сделать довольно быстро, если поддержка данной платформы уже реализована.
В этой статье я расскажу о процессе портирования прошивки в целом и о моем опыте портирования OpenWRT на ASUS DSL N12U.

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

Разбираем до винтика: как я участвовал в «растерзании» регистраторов Datakam, teXet, Mio и BlackVue

Reading time37 min
Views40K
В конце мая 2015 года российское Научно-Производственное Объединение «Конструкторское Бюро Датакам» организовало необычное мероприятие. Отечественные инженеры-электронщики пригласили к себе журналистов и блогеров, чтобы при них разобрать собственный автомобильный видеорегистратор Datakam G5, а вместе с ним – еще и модели брендов teXet и Mio. Так собравшимся максимально наглядно показали – что такое отечественная электронная разработка, и чем премиальный Datakam G5 на самом деле отличается от китайских регистраторов. После череды первых подобных публикаций (вы запросто найдете их в гугле) специалисты «КБ Датакам» внимательно прочитали все комментарии к статьям, учли пожелания пользователей и… организовали, так сказать, второй раунд мероприятия, куда были приглашены журналисты авторитетных изданий вроде «За рулем» или IXBT. Меня тоже позвали :) Заранее извиняюсь за то, что в некоторых моментах моя статья пересекается с информацией из предыдущего мероприятия – специалисты «КБ Датакам» фактически делали разбор с самого начала. Замечу, что изначально я готовил этот материал для небезызвестных Fishki.net. Однако из-за существующих ограничений по объему на «Фишках» особо не развернешься – там в итоге опубликовали короткую и «неотягощенную» версию обзора мероприятия, сильно упрощенную и сокращённую до уровня аудитории «Фишек». В посте на Гиктаймс же я изложу обо всем увиденном в самых мельчайших деталях, не стесняясь углубиться в дебри сугубо технических подробностей.


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

Механизмы профилирования Linux

Reading time9 min
Views40K


Последние пару лет я пишу под ядро Linux и часто вижу, как люди страдают от незнания давнишних, общепринятых и (почти) удобных инструментов. Например, как-то раз мы отлаживали сеть на очередной реинкарнации нашего прибора и пытались понять, что за чудеса происходят с обработкой пакетов. Первым нашим позывом было открыть исходники ядра и вставить в нужные места printk, собрать логи, обработать их каким-нибудь питоном и потом долго думать. Но не зря я читал lwn.net. Я вспомнил, что в ядре есть готовые и прекрасно работающие механизмы трассировки и профилирования ядра: те базовые механизмы, с помощью которых вы сможете собирать какие-то показания из ядра, а затем анализировать их.
Читать дальше →

Введение в магию шаблонов

Reading time5 min
Views29K
Шаблоны в С++ являются средствами метапрограммирования и реализуют полиморфизм времени компиляции. Что это такое?
Это когда мы пишем код с полиморфным поведением, но само поведение определяется на этапе компиляции — т.е., в противовес полиморфизму виртуальных функций, полученный бинарный код уже будет иметь постоянное поведение.
Читать дальше →

ПЛИС — мои первые шаги

Reading time11 min
Views155K
Недавно я все-таки сделал свой первый шаг к ПЛИС и призвал вас за собой. Мое фанатическое увлечение ПЛИС и идея о том, что ПЛИС является лучшей платформой для создания любых устройств приобрела религиозный характер. Моя секта ПЛИСоводов проповедует полный отказ от микроконтроллеров, а особо экстремистская ветвь проповедует отказ не только от софт процессоров, но и вообще от последовательных вычислений!

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

Эта статья для новичков. В ней я опишу типичные проблемы, вопросы, заблуждения, ошибки, которые могут появиться в самом начале обучения (потому что они появились у меня). Однако, контекст статьи ограничен тем, что разработка ведется на ПЛИС от Altera в среде Quartus на языке Verilog.

Подробности

Применение KolibriOS. Часть 1: Обзорная

Reading time4 min
Views63K
Очень часто нам задают вопросы «Для чего разрабатывается КолибриОС?» или же «Какова область применения ОС?» Поэтому было решено рассказать подробнее о том где и как можно применять КолибриОС, а также, что возможно даже более интересно, где и как она УЖЕ применяется.
Интересно? Добро пожаловать под кат

Docker. Best practices на примере образа Oracle xe 11g

Reading time5 min
Views37K


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

Сегодня можно найти тысячи образов в hub.docker.com. За счет своей простоты в создании образов, буквально за пол часа можно начать вносить свой вклад.

Но многие забывают о best practices, и за счет этого docker hub наполнился огромным количеством не самых лучших образов.

В этой статье я хочу описать на сколько просто и полезно создавать образы используя Best Practices на примере.
Читать дальше →

Как связать Docker-контейнеры, не заставляя приложение читать переменные окружения

Reading time5 min
Views53K
Docker, если кто умудрился об этом ещё не слышать — фреймворк с открытым исходным кодом для управления контейнерной виртуализацией. Он быстрый, удобный, продуманный и модный. По сути он меняет правила игры в благородном деле управления конфигурацией серверов, сборки приложений, выполнения серверного кода, управления зависимостями и много ещё где.

Архитектура, которую поощряет Docker — это изолированные контейнеры, каждый из которых выполняет одну команду. Эти контейнеры должны знать только как друг друга найти — другими словами, о контейнере нужно знать его fqdn и порт, или ip и порт, то есть, не более, чем о любой внешней службе.

Рекомендованный способ сообщить такие координаты внутрь процесса, выполняемого в Docker — переменные окружения. Типичный пример этого подхода, не применительно к докеру — DATABASE_URL, принятый во фреймворке Rails или NODE_ENV принятый в фрейворке Nodejs.

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

Безопасность АСУТП практика и примеры

Reading time5 min
Views35K
Здесь не будет историй о проникновении кибер террористов на ядерные объекты и массовом применении кибер оружия для уничтожения инфраструктуры неприятеля. А будет несколько обыденных примеров из личной практики, по модному ныне тренду безопасности АСУТП на типичном среднем Российском производстве.
Читать дальше →

Веселые старты или C++ и STL: кто быстрее?

Reading time4 min
Views20K

Постановка задачи


Нас интересует скорость различных стандартных инструментов C++ для выполнения однотипных операций над большим количеством элементов (циклы, алгоритмы STL, итераторы, указатели и т.д.). Для упрощения будем считать исходной задачу вычисления суммы большого количества целых чисел. (Ссылка для тех, кто не любит читать, а любит смотреть.)
Читать дальше →

Кто взломал электрическую подстанцию: разбор конкурса Digital Substation Takeover

Reading time3 min
Views22K


В рамках конкурса Digital Substation Takeover, представленного iGRIDS, у посетителей PHDays была возможность попробовать свои силы во взломе настоящей электрической подстанции, построенной по стандарту IEC 61850. Два дня участники пытались провести успешную атаку и получить контроль над системой управления электрооборудованием.
Читать дальше →

SIP телефон из stm32f4-discovery

Reading time9 min
Views29K
Всем привет.
В этой статье я расскажу, как мы делали sip-телефон на базе stm32f4-discovery с помощью своей встраиваемой ОС Embox. Характеристики stm32f4-discovery (144MHz, 192Kb RAM, 1Mb ROM) могут вызывать сомнения о возможности такой реализации. Нам самим было интересно, получится ли? В качестве ответа можно посмотреть видео, а в самой статье — технические подробности.



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

Vim по полной: Введение

Reading time5 min
Views70K
Привет, хабраюзер!

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

В этой серии статей я решил поделиться собственными наработками и, возможно, показать, на что может быть способен этот редактор в руках программиста. Серия будет состоять из следующих частей:
  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины

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

Готов? Вперед под кат!

«1-wire» для кнопок с индикацией

Reading time2 min
Views51K
Задумал я как-то в одной из конструкций применить вот такую кнопку с индикацией состояния:

image

Внутри — пара замыкающих или переключающих контактов и светодиод (опционально — уже с гасящим резистором на выбор для питания от 5, 12, или 24 В). Все бы с ней хорошо, но разместить кнопку планировал на приборной панели автомобиля, а управляющий блок — в моторном отсеке. А тянуть отдельные провода для контакта и для индикации уж очень не хотелось.

Как это решить, и что для этого нужно — под катом
Читать дальше →

Инструменты руководителя проекта

Reading time13 min
Views60K
С чем сейчас работает руководитель проекта? Какие инструменты использует, чтобы планировать, собирать данные, контролировать ситуацию, готовить отчеты?

Чаще всего это MS Project, Excel и почта. Прекрасные средства, я и сам очень долго ограничивался ими. Но на большом проекте, особенно в распределенной команде, работать становится труднее. Слишком много телодвижений нужно совершить, чтобы поставить задачи, собрать статус по ним, откорректировать план и дать обратную связь.

Но есть и другие средства, и я расскажу о некоторых из них, начиная от самых простых и бесплатных к более сложным и дорогостоящими.
  • Asana
  • Trello
  • SmartSheet
  • Мегаплан
  • JIRA
  • Clarizen

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

Незаменимые ресурсы для изучения иностранных языков

Reading time3 min
Views29K
Существует множество ресурсов, с помощью которых вы можете начать изучать язык или продолжить улучшать его. Но мы хотели бы рассказать вам о некоторых очень полезных и, возможно, не слишком известных сервисах для совершенствования ваших знаний.



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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity