Pull to refresh
1
0

Software engineer

Send message

19 советов по повседневной работе с Git

Reading time14 min
Views288K


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

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

Эмуляция различных устройств при помощи Pi Zero — как это сделать?

Reading time5 min
Views23K


Если вы хотите эмулировать при помощи Pi Zero сетевой адаптер, клавиатуру, накопитель и все прочее, причем одновременно — все это можно сделать. На помощь приходит LibComposite, правда, в этом случае нужно помнить, что под Windows решения нет, способ подходит только для Linux или Mac OS X. Детальное описание действий пользователя для достижения результата, описанного в заголовке — в продолжении (источник).
Читать дальше →

Linux в кармане — на службе у фотографа

Reading time6 min
Views50K
Так получилось, что фотография, это мой основной профессиональный вид деятельности, а программирование — хобби, которое иногда позволяет размять мозг. Кроме непосредственно разминки для мозга, программирование помогает и в работе. Например, писал полезные штуки, такие как это или это, или это.

Недавно поставил себе задачу, как бы еще порадовать своих клиентов. Вспомнил многочисленные просьбы клиентов на свадебную съемку: «Как хорошо было бы, если бы на банкете вы смогли показать коротенькое слайдшоу из фотографий, которые отсняли за день». На эти просьбы приходилось отказывать, по нескольким причинам: лень таскать с собой ноутбук для сборки слайдшоу, нет времени на отбор пары десятков снимков из сотен, из raw опять же нужно конвертировать, и самое главное — на это все нужно время, которого нет.

Это рассказ, о том, как мне удалось сделать для себя инструмент, который с минимальным моим участием и минимальным дополнительным весом в рюкзаке, помогает сделать красивые слайдшоу. И конечно же рассказ о python, ffmpeg и linux на android.
Читать дальше →

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time10 min
Views97K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →

Умный дом. Все начинается с проводов

Reading time5 min
Views61K
Вскоре после того как я автоматизировал освещение в деревне, мы приняли решение, что нужно сделать капитальный ремонт в московской квартире. Это был шанс реализовать свою мечту об “Умном доме”. Особого понимания, что должно быть в умном доме, у меня не было, поэтому я решил руководствоваться универсальным принципом:" Если вы не знаете с чего начать умный дом, начинайте с освещения”.
Читать дальше →

Умный дом: защита от протечек воды, система Аквасторож

Reading time7 min
Views225K
Я уже писал про составные части умного дома — систему управления освещением. Умный дом, как и любой робот должен подчиняться трем законам робототехники, третий из которых гласит: робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому и Второму Законам. Т.е. одной из задач умного дома — заботиться о своей сохранности, не допускать взломов, пожаров, затоплений, и прочих повреждений. Вот о защите от протечек и затопления мы сегодня и поговорим.
image
Аквасторож — это система которая автоматически перекрывает воду при обнаружении затопления. Прорвало трубу — вода хлещет на пол, попадает на сенсор, и сервопривод перекрывает краны на стояках. Конечно, от мокрых полов это вас не спасет — часть воды все равно окажется на полу, но ремонт обезопасит, а заодно и оградит от компенсации после затопления соседям ниже. Посмотрим, разберем систему Аквасторож на части и узнаем, так ли она хороша?
Читать дальше →

Почти весь умный дом: большая подборка отдельных смарт-элементов: лампы, розетки, климат, экология и безопасность

Reading time17 min
Views59K
Категория управляемых смарт-устройств в «рубрике» умный дом уже близка к тому, чтобы перестать поддаваться исчислению и систематизации, и отдельные прогнозы пока еще указывают на рост интереса пользователей к этой нише.



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

Теория звука. Что нужно знать о звуке, чтобы с ним работать. Опыт Яндекс.Музыки

Reading time14 min
Views219K
Звук, как и цвет, люди воспринимают по-разному. Например, то, что кажется слишком громким или некачественным одним, может быть нормальным для других.

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



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

Поводом для этого поста можете считать то, что мы добавили в приложения Яндекс.Музыки возможность слушать треки в высоком качестве (320kbps). А можете не считать. Итак.
Читать дальше →

Диагностический разъём OBDII: можно ли его ”приручить”

Reading time6 min
Views76K
Идея не новая, но вопросов много. С одной стороны, можно снять практически любые данные, а с другой стороны, OBDII похож на лоскутное одеяло, т.к. общее количество физических интерфейсов и протоколов напугает любого. А объясняется всё тем, что к моменту появления первых версий спецификаций OBD большинство автопроизводителей уже успели разработать что-то своё. Появление стандарта хоть и навело некоторый порядок, но потребовало включения в спецификацию всех интерфейсов и протоколов, которые на тот момент существовали, ну, или почти всех.

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

PPM-to-USB адаптер на STM32F3Discovery, или Подключаем авиамодельный пульт к компьютеру как HID-джойстик с STM32Cube

Reading time22 min
Views41K


В этой статье я расскажу, как:
  • Создать проект в STM32CubeMX и настроить таймеры для захвата внешних сигналов.
  • Декодировать PPM-сигнал с авиамодельного пульта.
  • Сделать Human Interface Device на STM32 и написать свой HID Report Descriptor.
  • Полетать в симуляторе на гоночном квадрокоптере. :)
Читать дальше →

Inotify или автоматизация рутинных операций с помощью incron

Reading time3 min
Views46K
До сих пор на хабре еще никто не упоминал о такой удобной подсистеме ядра linux, как inotify и использовании ее в автоматизации работы системного администратора. Хотелось бы восполнить этот пробел.

Что такое inotify


Inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. Т.е. простыми словами — эта штука дает нам информацию о создании или изменении любого файла или директории в используемой файловой системе.
Inotify появилась в ядре аж в версии 2.6.13 и прошла проверку временем. Для ее использования написано несколько утилит, работу с одной из которых мы и рассмотрим.
Читать дальше →

Разрабатываем систему мониторинга на 55000 видео-потоков RTP

Reading time10 min
Views30K
Добрый день!

Недавно прочитал очень интересную статью про обработку 50 гигабит/с на сервере и вспомнил, что у меня в черновиках лежит статья про то, как мы год назад разрабатывали систему мониторинга видео-потоков с общим объёмом трафика до 100 Гбит/с. Ещё раз “вычитал” её и решил представить на суд разработчиков. Статья больше посвящена анализу протоколов и поиску архитектурного решения, нежели тюнингу всевозможных подсистем linux’а, потому что мы пошли по пути распределения нагрузки между сервером и сетевыми пробниками, которые подключаются к транспортным потокам 10 Gigabit Ethernet.



Если интересно, как мы смогли измерить характеристики сетевых потоков от 55 тысяч видео-камер, прошу под кат.

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

Безопасность Wi-Fi сетей: обнаружение атак

Reading time1 min
Views44K
image

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

LLVM для исследователей

Reading time14 min
Views51K
В этой статье рассказывается о проведении исследований на базе инфраструктуры компилятора LLVM. Нашего рассказа должно хватить для того, чтобы исследователи, которым компиляторы прежде были по большей части безразличны, пришли в восторг от LLVM и сделали с его помощью что-нибудь интересное.

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

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

SoC: пишем реализацию framebuffer для контроллера в FPGA

Reading time13 min
Views34K


Приветствую!

В прошлый раз мы остановились на том, что подняли DMA в FPGA.
Сегодня мы реализуем в FPGA примитивный LCD-контроллер и напишем драйвер фреймбуфера для работы с этим контроллером.

Вы ещё раз убедитесь, что разработка под FPGA и написание драйверов под Linux дело очень простое, но интересное.

Также в конце есть маленький опрос — хочется узнать мнение сообщества. Если не сложно, прошу проголосовать.

Добро пожаловать

Управление логгированием в systemd

Reading time12 min
Views127K
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →

Banana Pi: через U-Boot к Arch Linux

Reading time8 min
Views64K
Уже четвёртый год подряд, с момента выпуска Raspberry Pi, на рынки всего мира поставляются различные микрокомпьютеры на отличных от x86 архитектурах, которые выполняют роль медиацентров, контроллеров умных домов, веб-серверов и чего только душа гика не пожелает!

К 2014-2015 году не все были довольны вычислительными возможностями «малинки» и начался выпуск десятков его клонов с более мощным железом. У большинства из них есть недостатки: фиксированная устаревшая версия ядра и загрузчика, небольшой выбор дистрибутивов. Под катом расскажу о том, как сбросить оковы вендора на примере Banana Pi.
Познать путь к свежему софту

Профилирование Android-приложений на потребление аккумулятора

Reading time6 min
Views64K


Думаю, что у каждого пользователя Android рано или поздно возникает необходимость понять, какое приложение за ночь съело всю батарею притом, что телефон лежал с погашенным экраном. Участь найденного виновника не завидна: чаще всего его просто удаляют. Итак, что же сделать, чтобы наши приложения использовали аккумулятор минимально? В статье я постараюсь дать ответ на этот вопрос и рассказать о подходах к уменьшению потребления аккумулятора, которые мне доводилось использовать.
Читать дальше →

Network UPS Tools (NUT) на CentOS и Windows с отправкой смс через smstools+playsms

Reading time6 min
Views30K
В условиях ограниченного бюджета небольшой компании, скромный терминальный сервер 2003 получал бесперебойное электричество от Ippon Smart Winner 1500, который управлялся стандартной утилитой. Не могу чего-то сильно плохого сказать про этот ИБП и его монструозную утилиту управления с анимацией тока. Гудит вполне на свои деньги.

Со временем, windows пришлось обременить парой виртуальных машин Vmware, а парк пополнился парой небольших линуксовых серверов с АТС, Jabber и прочими офисными радостями. Соответственно, возникло желание тоже управлять их питанием от Ippon, ибо заявлена поддержка *nix.
Читать дальше →

Почти DIY 3d сканер для дома

Reading time11 min
Views103K


Пару лет назад попалась мне на глаза статья на хабре о 3D-сканере за 30$, и очень меня эта тема заинтересовала, хотя быстро пришло понимание того, что ни о каких 30$ для качественного сканирования не может быть и речи.

Но основной плюс, который я вынес из статьи – программа для сканирования David-3D, к которой действительно есть хорошее руководство на русском языке и, что немаловажно, покупка лицензии — это последнее, что требуется, так как ограничение у бесплатной версии только на сохранение результата сканирования. Все остальное работает в полной мере, а значит вполне можно тестировать программу, настройки и свое железо сколько угодно. А если вам и результат не требуется с высокой точностью – то и вовсе без покупки лицензии можно обойтись.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, System Software Engineer
Lead
From 8,192 $
Git
C++ Boost
Multiple thread
Http
Linux
High-loaded systems
OOP
TCP
Network technologies
Linux administration