Pull to refresh
5
0
Alexey Vasilyev @avas

User

Send message

Беспроводной сенсорный выключатель c дополнительной флуоресцентной подсветкой

Reading time11 min
Views13K
Приветствую всех читателей раздела «DIY или Сделай сам» на Habr! Сегодняшняя статья будет о сенсорном выключателе на микросхеме TTP223 | даташит. Выключатель работает на микроконтроллере nRF52832 | даташит, использован модуль YJ-17103 с печатной антенной и разъёмом для внешней антенны MHF4. Сенсорный выключатель работает от батареек CR2430 или CR2450. Потребление в режиме передачи составляет не более 8мА, в режиме сна не более 6мкА.

Total votes 20: ↑18 and ↓2+16
Comments20

Как мы ломали Glusterfs

Reading time11 min
Views35K


История началась год назад, когда к нам пришёл наш друг, коллега и большой эксперт по энтерпрайз стораджам со словами: «Парни, у меня тут завалялась шикарная хранилка со всеми модными фичами. 90Tb». Особой необходимости мы в ней не видели, но, естественно, отказываться не стали. Настроили туда пару бекапов и на какое-то время благополучно забыли.

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

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

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

Из множества вариантов наш взгляд особенно зацепил Глустер, Гластер. Всё равно, как называть. Лишь бы результат был. Поэтому мы начали над ним измываться.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments20

gdb-дуэль — списки, деревья и хэш таблицы против командной строки

Reading time6 min
Views9.3K

Первый раз я увидел команду duel в gdb на каком-то древнем IRIX-е, лет пятнадцать назад. Это была невероятно крутая штука для просмотра разных связанных списков, массивов структур, и прочих подобных конструкций. Помечтал, мол, если б в Линуксе такая была, и забыл. Лет десять назад вспомнил, погуглил — оказалось, что DUEL, это вообще-то патч 93-го года для gdb 4.6, а вовсе не что-то уникальное в IRIX. Только автор по идейным соображениям выпустил его как public domain, а gdb-шники были тоже идейные и хотели GPL, так что попасть в upstream этому патчу не грозило. Я портировал его на тогдашний gdb 6.6.2, отдал в gentoo и до выхода 7-го gdb наслаждался жизнью. Потом duel из gentoo выкинули, портировать на новый gdb было сложно, никто не взялся. А недавно я его попробовал оживить. Только вместо патча (надо собирать вместе с gdb из исходников, использует всякие внутренние gdb-шные функции) я его написал с нуля на питоне. Теперь Duel.py (так называется новая реализация Duel-а) грузится в gdb на лету, и, надеюсь, Python API не будет меняться от версии к версии так, как недокументированные gdb-шные потроха. Итак, встречайте: DUEL — высокоуровневый язык анализа данных для gdb.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments16

OpenVPN, легкий перевыпуск корневого сертификата

Reading time2 min
Views24K
Доброго времени суток. Предыстория такова: десять лет назад мной была поднята инфраструктура сети салонов сотовой связи, распределенная по области. В качестве учетного решения использовалась система 1С: Предприятие 7.7 в режиме распределенной базы данных. Для обмена данными использовалась обычная сетевая папка windows, доступ к которой осуществлялся через туннель OpenVPN. И вот как-то неделю назад полностью остановился обмен информацией между центром и периферией. Почему-то сразу закралась мысль — неужели прошло десять лет (именно на этот срок делался корневой сертификат). Анализ логов подтвердил проблему, схема отлично себя зарекомендовала за эти десять лет, но пришел срок. И что же теперь, генерировать заново весь объем клиентских и серверных ключей/сертификатов??? Нет, можно поступить немного проще…
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments9

RaZberry — умный дом на базе Z-Wave и Raspberry Pi

Reading time8 min
Views216K
Raspberri Pi with RaZberry extention boardМногие пытаются собрать «Умный дом» своими руками. При выборе системы стоит учитывать не только ассортимент и стоимость конечных устройств, но и возможности контроллера. Большинство контроллеров сразу готовы к работе «из коробки», но представляют ограниченные возможности. Однако нередко именно гибкость и возможность лёгкой интеграции является основополагающим критерием при выборе.

И вот, появился долгожданный «кубик Lego» для систем автоматизации на базе технологии Z-Wave, который обладает желаемой гибкостью и в то же время большим функционалом и низкой ценой.

Плата расширения RaZberry для Raspberry Pi, превращает самый популярный и дешёвый мини-компьютер в Z-Wave контроллер домашней автоматизации.

Читать дальше →
Total votes 74: ↑65 and ↓9+56
Comments68

Незаметные достоинства регулярных выражений в Python

Reading time5 min
Views25K
image

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

Python — один из немногих динамических языков, в которых отсутствует встроенная поддержка регулярных выражений, но это компенсируется проработанной базовой системой (с точки зрения API). В то же время он весьма причудлив. К примеру, поведение написанного на Python парсера может вас удивить. Если вы попытаетесь в ходе импорта профилировать Python, то, скорее всего, 90% времени вы проведёте в работе с модулем re.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments6

Виртуальный сетевой интерфейс

Reading time13 min
Views42K
Общеизвестно, что драйверы Linux — это модули ядра. Все драйверы являются модулями, но не все модули — драйверы. Примером одной из таких групп модулей, не являющихся драйверами, и гораздо реже появляющиеся в обсуждениях, являются сетевые фильтры на различных уровнях сетевого стека Linux.

Иногда, и даже достаточно часто, хотелось бы иметь сетевой интерфейс, который мог бы оперировать с трафиком любого другого интерфейса, но каким-то образом дополнительно «окрашивать» этот трафик. Такое может понадобится для дополнительного анализа, или контроля трафика, или его шифрования, …

Идея крайне проста: канализировать трафик уже существующего сетевого интерфейса во вновь создаваемый интерфейс с совершенно другими характеристиками (имя, IP, маска, подсеть, …). Один из способов выполнения таких действий в форме модуля ядра Linux мы и обсудим (он не единственный, но другие способы мы обсудим отдельно в другой раз).
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments11

Астротрекер: мой опыт

Reading time5 min
Views31K
Дабы совместить два своих любимых хобби: фотографию и астрономию, решил попробовать себя в астрофотографии. Уж очень глубокое впечатление на меня оказывают фотографии Млечного Пути с огромными россыпями звезд. Тем более что каждое лето бываю на Кавказе, а небо там идеально подходит для наблюдений. Для качественной съемки звездного неба не обойтись без астротрекера. Для чего он нужен не вижу необходимости повторять, т.к. здесь уже было несколько статей на эту тему. Поэтому просто хотел бы поделиться своим опытом создания данного устройства, его настройки и использования. Саму конструкцию я почерпнул из данной статьи, немного упростил её, и оснастил собственными доработками. Подробности под катом.


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

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», так как статья больше расчитана на опытных пользователей, нежели на новичков.

Готов? Вперед под кат!
Total votes 52: ↑49 and ↓3+46
Comments86

Связываем Microsoft Azure и облако сервис-провайдера в единую сеть

Reading time7 min
Views12K
Сегодня мы расскажем о том, как создать гибридное облако на базе облака Microsoft Azure и облака российского сервис-провайдера на базе Microsoft Azure Pack, объединив их в единое сетевое пространство через Site-to-Site VPN. Плюс создадим на базе этого гибрида единый домен Active Directory.

Данный сценарий является практическим применением концепции Microsoft Cloud OS — единой облачной платформы для частного облака, публичного облака Microsoft Azure и партнёрского облака от локального сервис-провайдера.


В качестве облака сервис-провайдера будет использоваться услуга AzuRus от компании «Облакотека». Данное решение было реализовано в рамках программы Microsoft Cloud OS Network Russia при участии инженеров Microsoft, и использует платформу Microsoft Azure Pack в качестве системы управления облаком. За счёт этого оно без проблем интегрируется с облаком Microsoft Azure.

Подробности реализации ниже.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments0

Превращение обычного электрического конвектора в беспроводной

Reading time7 min
Views40K

Предыстория


Мой частный дом отапливается при помощи электрических конвекторов. Всё в них хорошо: и лёгкость монтажа и автоматическое управление температурой и режим день/ночь и режим 50% мощности. Но есть и минус — датчик температуры воздуха закреплён прямо на корпусе конвектора, поэтому нагревается и остывает вместе с ним. Из-за этого конвектор включается/выключается гораздо чаще, чем хотелось бы, невозможно установить желаемую температуру воздуха в комнате, т.к. реальная будет ниже градусов на 5, да и на надёжности постоянные переключения реле сказываются негативно. Можно было, конечно, удлинить датчик температуры и отнести его подальше, но это не наш метод. Т.к. я давно занимаюсь беспроводными технологиями и есть наработки, то решил оснастить конвектор беспроводным датчиком температуры. Это позволит разместить его в любом месте комнаты, не тянуть провода, а если нужно, использовать не один, а несколько датчиков и рассчитывать среднюю по комнате температуру. (Под катом картинки)
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments25

Установка и запуск Android-приложений на Linux

Reading time1 min
Views193K
image

Как известно, многие Android-приложения можно нативно запускать на Chrome OS благодаря библиотеке Chrome App Runtime.

С помощью расширений chromeos-apk и ARChon запуск Android APK стал возможен и на других ОС.

В этой публикации я расскажу, как установить произвольное Android-приложение на Ubuntu 14.04.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments33

Переходим на HTTPS на Nginx: шпаргалка

Reading time3 min
Views151K
Уже второй раз сталкиваюсь с задачей «поставь https на наш сервер» от моего босса, поэтому решил сделать для самого себя шпаргалку, а заодно и для всех остальных. Итак, ситуация следующая: к нам пришел босс и заявил, что ему нужен https. Под катом я напишу 5 простых шагов, как все сделать буквально за час. Приступим.
Читать дальше →
Total votes 66: ↑43 and ↓23+20
Comments60

Об удобной навигации и отладке C++ кода в Vim

Reading time7 min
Views41K
Компания, где я работаю, разрабатывает программное обеспечение на C++ под Linux. Долгое время мы использовали Qt Creator, с редкими ребятами работающими из Emacs и Vim. Когда я сам попытался пересесть на Vim, я понял, что ситуация с плагинами для разработки на С++ очень не простая. Поработав немного с CTags, я быстро понял, что без напильника работать в Vim будет очень сложно.
К сожалению, с ростом опыта работы с Vim редактор в Qt Creator в режиме эмуляции устраивал меня все меньше, и в какой-то момент я решил потратить немного времени и разобраться, как же сделать из Vim нормальную среду.
Я очертил для себя четыре вещи, которые я бы хотел от среды разработки, и которых мне бы хватило в Vim, чтобы полностью на него перейти:

1. Автодополнение
2. Навигация по коду
3. Отладка прямо из среды
4. Интеграция с Git (в частности Blame прямо в редакторе, и Git Grep)

Автодополнение в Vim — это решенная проблема, и название у решения YouCompleteMe. Это очень качественный плагин, который реализует автодополнение для большого количества языков программирования, в частности Python и C++. Ходят слухи, что внутри Google YouCompleteMe решает и вторую проблему с навигацией кода, но использует для этого внутренные инструменты гугла для индексирования.

Интеграция с Git в какой-то степени решена с помощью vim-fugitive. Это не такая комплексная интеграция, как бывает у Jet Brains, или в Visual Studio, но сравнимая с тем, что предлагает Qt Creator. Те два сценария, которые нужны были мне: blame и grep — работают хорошо.

Отладка и навигация были проблемами, решенными гораздо хуже. В этой статье я расскажу о плагине, который мы написали для навигации по С++ коду. В конце статьи я также расскажу о том, как мы для себя решили проблему с интегрированным отладчиком.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments92

Оптимизация образов Docker

Reading time9 min
Views65K
Образы Docker могуть быть очень большими. Многие превышают 1 Гб в размере. Как они становятся такими? Должны ли они быть такими? Можем ли мы сделать их меньше, не жертвуя функциональностью?

В CenturyLink Lab мы много работали над сборкой различных docker-образов в последнее время. Когда мы начали экспериментировать с их созданием, мы обнаружили, что наши сборки очень быстро раздуваются в объеме (обычным делом было собрать образ, который весит 1 Гб или больше). Размер, конечно, не столь важен, если мы говорим про образы по два гига, лежащие на локальной машине. Но это становится проблемой, когда вы начинаете постоянно скачивать/отправлять эти образы через интернет.

Я решил, что стоит копнуть поглубже и разобраться с тем, как работает процесс создания docker-образов, чтобы понять, что можно сделать для уменьшения размера наших сборок.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments18

WoodyMac — деревянный конструктор будущего

Reading time4 min
Views203K
Не берусь утверждать что каждый, но во всяком случае — большинство из нас в детстве сталкивались с конструкторами.
Некоторые из них запомнились больше, часть некоторых навсегда остались в «коробочках для гаек» (если мы говорим о железном конструкторе «Конструктор»).

И если оставить в стороне «премиальное» на те времена Lego и его китайские заменители из 90-х, остается еще одна ниша — деревянные конструкторы.

Кроме, собственно, классических кубиков — у меня сохранились отчетливые воспоминания о конструкторе «Дом»

image

Однако, прогресс неумолимо приблизился и к ним…

Читать дальше →
Total votes 107: ↑102 and ↓5+97
Comments170

Старые ОС: IBM VM/370

Reading time19 min
Views40K
Здравствуйте, уважаемые хабарчане!
Я интересуюсь «древними» компьютерами и операционными системами. Несмотря на их древность, многие из них гораздо более продуманнее современных систем и лучше подходят в качестве примеров. Windows и Linux есть чему поучиться у многих устаревших ОС.
По-моему самые интересные из старых систем — мейнфреймы и поздние миникомпьютеры (супермини). В отличие от ранних миникомпьютеров, которые часто лепились на коленке конечного пользователя под его нужды, системы мейнфреймов и супермини с самого начала были предназначены для людей не имеющих ни полного представления о работе компьютера ни времени на разработку отдельной архитектуры для каждой задачи. При этом, в отличие от современных систем (4 гигабайта оперативки на набор этого поста), мейнфреймы и в особенности супермини были очень ограниченны в ресурсах и не как правило не разрастались.
В этом посте я опишу процесс установки операционной системы VM/370. VM/370 — операционная система IBM для компьютеров IBM System/370. Это многопользовательская ОС работающая по принципу гипервизора control program (CP): каждому пользователю предоставляется своя виртуальная машина, в которой он может запустить желаемую ОС, в частности сам гипервизор CP (немногие современные гипервизоры способны на такой трюк) и CMS — однопользовательскую ОС, бабушку MS-DOS. Прямой потомок VM — zVM до сих пор используется на мейнфреймах IBM System z. Подробнее о VM можно прочитать в Википедии.
Для тех кто хочет не красноглазить, а просто посмотреть конечный результат: есть готовые образы системы с подробными инструкциями (правда на английском). Остаток статьи можно не читать.
Мы не ищем легких путей!
Total votes 45: ↑42 and ↓3+39
Comments46

Прошивка и программирование ATtiny13 при помощи Arduino UPD 17.03.2016

Reading time3 min
Views309K


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

Вот собственно всё то что ниже, только в видео формате:



Сегодня расскажу, как я зашиваю Arduino'вские скетчи в ATtiny13A.
Читать дальше →
Total votes 59: ↑52 and ↓7+45
Comments52

Анализ сетевого трафика на сервере с помощью tshark

Reading time11 min
Views77K
tshark

В практике системного администрирования довольно часто приходится cталкиваться со сложными ситуациями, в которых не помогают ни инструменты сбора статистики (например, netstat), ни стандартные утилиты на основе протокола ICMP (ping, traceroute и другие). В таких случаях часто используются специализированные диагностические утилиты, дающие возможность «слушать» сетевой трафик и анализировать его на уровне единиц передачи отдельных протоколов. Они называются анализаторами трафика, а на профессиональном жаргоне — снифферами. С их помощью можно, во-первых, локализовывать сетевые проблемы и более точно их диагностировать, а во-вторых — обнаруживать паразитный трафик и выявлять в сети зловредное ПО.

Особенно полезными оказываются анализаторы трафика в случаях, когда сетевое ПО плохо документировано или использует собственные закрытые протоколы.
Читать дальше →
Total votes 72: ↑65 and ↓7+58
Comments11

Information

Rating
Does not participate
Location
Montreal, Quebec, Канада
Date of birth
Registered
Activity