Pull to refresh
218
28.3
Anton Fedorov @datacompboy

Программист / сисадмин (Sr. SRE)

Send message

Raspberry Pi PAN

Reading time 3 min
Views 8.8K

Пикосеть Bluetooth-PAN (Personal Area Network)

Поднимаем сеть через bluetooth на Raspberry Pi с поддержкой systemd.

Моя дружба с Raspberry Pi многолетняя, и все годы я бесконечно экспериментировал. Неужели Raspberry Pi подталкивает к авантюризму? Кроме всего прочего, я страстный фотограф, вовсю использую «малинку» как беспроводный пульт дистанционного управления фотоаппаратом с помощью программы gphoto2.

В моей конфигурации миникомпьютер включает собственный веб-сервер для удаленного просмотра фотографий через wi-fi и работает в режиме точки доступа.

Но мне необходим еще один сетевой беспроводный интерфейс, и вот здесь начинается знакомство с пикосетью PAN (HOWTO-PAN).

Читать далее

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

Интерпретируемость машинного обучения: состояние дел

Reading time 15 min
Views 9.6K

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

Я придерживаюсь категоризации, использованной в работе Lipton et al.'s Mythos of Model Interpretability, которую считаю наилучшей статьей, проясняющей различные дефиниции интерпретируемости. Мы рассмотрим множество способов формализовать значение «интерпретируемости». В широком смысле интерпретируемость отвечает на вопрос «как». Она призвана дать понятие о нашей модели и объяснить, каким образом эта модель принимает те или иные решения. Ниже каждый раздел концептуализируется на основе конкретного вопроса, который можно поставить к нашей модели машинного обучения, опираясь на конкретное определение интерпретируемости. Если все это для вас в новинку, объясню для начала, почему нас вообще должна волновать интерпретируемость.

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

Анонимный Дед Мороз 2020-2021: пост хвастовства новогодними подарками

Reading time 1 min
Views 19K
АДМ 2020 на Хабре

Что мы делаем после каждого запуска Хабра-АДМ? Правильно! Публикуем пост Хвастовства.
И особенно приятно, что некоторые участники уже получили свои первые подарки. Так поторопимся и мы.

Пост Хвастовства объявляется открытым!

С НАСТУПАЮЩИМ НОВЫМ 2021 ГОДОМ!

Ваши iCTPEJlOK и kafeman

PS: А если вам кажется, что комментариев пока слишком мало, можете посмотреть, как это было в прошлых сезонах: 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
Total votes 89: ↑89 and ↓0 +89
Comments 701

BPF для самых маленьких, часть первая: extended BPF

Reading time 51 min
Views 26K

В начале была технология и называлась она BPF. Мы посмотрели на нее в предыдущей, ветхозаветной, статье этого цикла. В 2013 году усилиями Алексея Старовойтова (Alexei Starovoitov) и Даниэля Боркмана (Daniel Borkman) была разработана и включена в ядро Linux ее усовершенствованная версия, оптимизированная под современные 64-битные машины. Эта новая технология недолгое время носила название Internal BPF, затем была переименована в Extended BPF, а теперь, по прошествии нескольких лет, все ее называют просто BPF.


Грубо говоря, BPF позволяет запускать произвольный код, предоставляемый пользователем, в пространстве ядра Linux и новая архитектура оказалась настолько удачной, что нам потребуется еще с десяток статей, чтобы описать все ее применения. (Единственное с чем не справились разработчики, как вы можете видеть на кпдв ниже, это с созданием приличного логотипа.)


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

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

«Шакал»: сжимаем фронтенд

Reading time 5 min
Views 21K
Привет! Я — Ваня, лид платформенной команды в Тинькофф Бизнес.

Мое любимое занятие — открывать вкладку DevTools и проверять, сколько весят артефакты сайта. В этой статье расскажу, как мы сократили вес приложения на 30% силами платформенной фронтенд-команды за один день без изменения кода сайта. Никаких хитростей и регистраций — только nginx, docker и node.js (опционально).


Читать дальше →
Total votes 63: ↑59 and ↓4 +55
Comments 36

Отказоустойчивая IPoE сеть из подручных средств

Reading time 7 min
Views 4.3K

Здравствуйте. Значит есть сеть из 5к клиентов. Недавно вылез не очень приятный момент — в центре сети и у нас стоит Brocade RX8 и он начал слать много unknown-unicast пакетов, так как сеть поделена на вланы — то частично это не проблема НО есть спец вланы для белых адресов и т.д. и они растянуты во все стороны сети. Так вот теперь представьте входящий поток на адрес клиента, который бордером не учится и этот поток летит в сторону радио линка на какоето (а так на все) село — канал забит — клиенты злые — печаль…

Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Comments 9

Гигиена удалённой работы или о пользе телепатии

Reading time 4 min
Views 16K

Приходилось ли вам запинаться в работе? Вот берёте таск: зафигачить красивый отсчитыватель времени "До конца супер предложения осталось всегда 2 часа". Открываете редактор… и щёлк: а как делать-то? Вроде я что-то слышал, что мы лэндинги начали на Vue делать. Или тут еще реакт?


Хорошо, когда вы в опенспейсе сидите через два стола. Всегда можно встать, и тихо спросить соседа "Напомни, мы Vue для всех теперь берём?". Хуже, если ТЛ в другом часовом поясе. Тот же вопрос — но ответ завтра. А если он закрутился, то послезавтра. И всё, вместо 1 минуты — двое суток задержки.


Или того хуже. Сидите вы, никого не трогаете, и тут вдруг тихий шепот на 3 этажа с вопросом выше. Отвечаешь быстренько, и опять восстанавливать контекст. А ведь всего-то надо было, в вику заглянуть...

А в конце статьи -- сюрприз
Total votes 54: ↑48 and ↓6 +42
Comments 18

Хватит качать и хранить нули

Reading time 13 min
Views 15K

Скачиваемый файл заполнен нулями


"Нуль-блоками" я называю блоки (части файла), заполненные нулевыми байтами. Можно заранее посчитать их хеши и не запрашивать эти блоки у источников, а сразу помечать их уже загруженными.


Нуль-блоки не надо хранить на диске. Благодаря sparse флагу, операционная система просто помечает этот участок файла как заполненный нулями и не хранит эти нули на диске.


Свойства файла заполненного нулями

Файл размером 16MB занимает на диске 4KB


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


Откуда берутся нуль-блоки в файле


  1. Раздающий не дождался полного скачивания и проверки файла и выложил неполный(partial) файл.
  2. Результат повреждения сектора диска раздающего.

Это те варианты, которые пришли в голову.


Почему эти файлы продолжают распространяться


  1. Видео/аудио файл может иметь нуль-блок в середине и спокойно воспроизводится, просто перескакивая то место, где попался нуль-блок. Тем самым он может казаться целым.
  2. Образ диска также может иметь нуль-блоки в разных местах и это проявит себя только при попытке чтения файлов из этих блоков.
Читать дальше →
Total votes 30: ↑22 and ↓8 +14
Comments 90

Главное не попасть в торговом центре под сверку часов

Reading time 5 min
Views 76K

Парковка «Меги Химки» и люди, ждущие, когда их пустят обратно в здание

Сегодня пошла очередная волна эвакуаций из торговых центров и всяких других общественных мест (пруф Интерфакса). У нас эвакуировали 4 точки: Мегу Химки, Принц Плазу (это торговый центр на Тёплом стане), ТЦ Улей и внезапно наш домик-клуб в Сокольниках у входа (потому что вместе с остальным парком).

На офисную почту пришло вот такое интересное письмо:
05.02.2019, 11:00, «laki kak» <laki.kak@mailfence.com>:
Добрый день! Хотя какой он для вас добрый после этого письма.
Не будем философить. В одном из ваших корпусов заложена бомба! Бомба без запаха, корпус из пластика, металлодетекторы не обнаружат, собаки не учуют.
Таймер автоматически активировался с момента открытия письма. Закладка бомбы производилась за несколько дней ранее.
До взрыва осталось N-количество минут. У бомбы так же есть дистанционный пульт, мы можем отключить, а можем и раньше окончания таймера вас ВСЕХ взорвать!!!
Гуд бай!!!
Круче всех эвакуация выглядит в Мегах. Там сначала объявляют какой-то не очень значимый код, который звучит как что-то будничное для посетителей. Например, «код тысяча» — это угроза пожара или задымления, по сути — сработка датчика, то есть начало подготовки к эвакуации. Если его за примерно 10 минут не отменяют, уже объявляют пожарную тревогу. Как его объявляют и отменяют, вы, возможно, слышали. Сегодня в Меге объявили «сверку часов», это код террористической угрозы.
Читать дальше →
Total votes 111: ↑107 and ↓4 +103
Comments 202

Анонимный Дед Мороз 2018-2019: пост хвастовства новогодними подарками

Reading time 1 min
Views 16K
Логотип АДМ 2018

Анонимный Дед Мороз 2018-2019 набирает обороты: каждый пятый участник отметил подарок отправленным, а несколько человек даже нашли в себе силы встать из-за компьютера и забрать посылку на почте.

Что же именно дарят Хабравчане своим Хабравнукам, Хабравнучкам и тем, кто не заполняет поле «Пол» в Хабрапрофиле? Давайте зайдем в комментарии и все у них разузнаем!

С НАСТУПАЮЩИМ НОВЫМ 2019 ГОДОМ!

Ваши iCTPEJlOK и kafeman
Total votes 47: ↑44 and ↓3 +41
Comments 195

Клуб анонимных Дедов Морозов 2018-2019 на Хабрахабре

Reading time 3 min
Views 9.6K
Картинка для привлечения внимания

В жизни можно ставить любые цели, и потом упорно искать пути их достижения. Если в ваших планах было что-то вроде «стать волшебником», то поспешите. У вас еще есть возможность реализовать свою мечту и стать настоящим Дедом Морозом до конца этого года!
Прочитать письмо из Хогвартса
Total votes 53: ↑53 and ↓0 +53
Comments 206

Vim по полной: Менеджер плагинов без фатальных недостатков

Reading time 7 min
Views 27K

Оглавление


  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 21: ↑19 and ↓2 +17
Comments 31

Микроэлектроника для космоса и военных

Reading time 13 min
Views 304K
Возможное, многие из вас думали после ситуации с Фобос-Грунтом — что такого особенного в микросхемах для космоса и почему они столько стоят? Почему нельзя поставить защиту от космического излучения? Что там за история с арестом людей, которые микросхемы экспортировали из США в Россию? Где все полимеры?

На эти вопросы я и попробую ответить в этой статье.

Disclaimer: Сведения получены из открытых источников и могут быть не вполне точными. Я лично с военной электроникой не работаю, а кто работает — те статьи писать не могут. Буду рад дополнить и исправить статью.
Читать дальше →
Total votes 477: ↑469 and ↓8 +461
Comments 265

1967 года рождения и моложе

Reading time 6 min
Views 220K
Прочитав этот и этот топики на печальную пенсионную тему я решил поделиться внутренними наработками нашей кадровой службы для наших сотрудников. Дальше много несмешного текста без картинок.
Читать дальше →
Total votes 98: ↑87 and ↓11 +76
Comments 116

Ускорение загрузки Windows for fun and profit

Reading time 4 min
Views 802K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16 +500
Comments 365

Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

Reading time 20 min
Views 83K
Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):


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

Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
Читать дальше →
Total votes 216: ↑213 and ↓3 +210
Comments 43

Обновился HTTP/1.1

Reading time 1 min
Views 33K
Вот так неожиданно, через 15 лет после начальной публикации, обновилась спецификация HTTP/1.1
Обновлений много, я бы даже сказал, дофига. Добавили много проясняющего текста, разбили спецификацию на 6 RFC (раньше было 2), добавили новый статус 308, стандартизировали X-Forwarded-For (теперь он просто Forward), и еще много всего.

Неполный спискок изменений:
  • Новый статус 308 — Permanent Redirect, но с отправкой этих же самых данных. Т.е. запрос не меняется на GET, как раньше.
  • Новый заголовок Forward, который призван заменить X-Forwarded-For и X-Forwarded-Proto
  • Убрано ограничение на 2 подключения к серверу
  • Убрана поддержка HTTP 0.9
  • Убрана кодировка ISO-8859-1 по умолчанию
  • Убран заголовок Content-MD5
  • Запрет использования Content-Range на POST-запросах
  • Добавлено кеширование кодов 204, 404, 405, 414 и 501
  • Изменена документация кодов 301 и 302 таким образом, чтобы позволить перенаправлять метод с POST на GET. Т.е. задокументировали текущую реализацию всех браузеров.
  • Добавлены разграничения между запретом отправки referer и случаем, когда referer нет. Теперь следует отправлять Referer: about:blank, если referer-а не было.
  • Location теперь может перенаправлять на ссылку с хештегом.
Читать дальше →
Total votes 97: ↑96 and ↓1 +95
Comments 40

ARM-ы для самых маленьких

Reading time 8 min
Views 204K


Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

Читать дальше →
Total votes 129: ↑124 and ↓5 +119
Comments 66

Повышаем безопасность закрытых ssh-ключей

Reading time 8 min
Views 63K
Вы когда-нибудь интересовались механизмом работы ssh-ключей? Или тем, насколько безопасно они хранятся?

Я использую ssh каждый день много раз — когда запускаю git fetch или git push, когда развертываю код или логинюсь на сервере. Не так давно я осознал, что для меня ssh стал магией, которой я привык пользоваться без понимация принципов ее работы. Мне это не сильно понравилось — я люблю разбираться в инструментах, которые использую. Поэтому я провел небольшое исследование и делюсь с вами результатами.

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

Итак, если вам доводилось прибегать к аутентификации по ключу, то у вас, скорее всего, есть файл ~/.ssh/id_rsa или ~/.ssh/id_dsa в домашнем каталоге. Это закрытый (он же приватный) RSA/DSA ключ, а ~/.ssh/id_rsa.pub или ~/.ssh/id_dsa.pub — открытый (он же публичный) ключ. На сервере, на котором вы хотите залогиниться, должна быть копия открытого ключа в ~/.ssh/authorized_keys. Когда вы пытаетесь залогиниться, ssh-клиент подтвержает, что у вас есть закрытый ключ, используя цифровую подпись; сервер проверяет, что подпись действительна и в ~/.ssh/authorized_keys есть открытый ключ, и вы получаете доступ.

Что же хранится внутри закрытого ключа?

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

Создание и хранение резервных копий баз данных в MS SQL. Практические советы

Reading time 3 min
Views 21K
По роду деятельности я немного администратор баз данных. Так или иначе мне приходится обслуживать несколько десятков БД.
Наткнувшись на статью, опубликованную недавно, посчитал нужным дополнить ее некоторыми практическими рекомендациями. То что затрагивалось в прошлой статье, в этой опускалось.

1. Размер резервной копии


Оценить размер резервной копии можно с помощью хранимой процедуры sp_spaceused

К примеру вот такой запрос:

USE your_database;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

выполняется намного быстрей резервного копирования, и позволяет более-менее точно оценить будущий размер бэкапа без сжатия.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 16
1

Information

Rating
173-rd
Location
Zürich, Zürich, Швейцария
Date of birth
Registered
Activity

Specialization

Specialist
Lead