Как стать автором
Поиск
Написать публикацию
Обновить
200.1

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Используем Bash в SQL-стиле

Время на прочтение5 мин
Количество просмотров13K
Приветствую! Данная небольшая статья призвана осветить некоторые аспекты применения Bash для анализа файлов в SQL-стиле. Будет интересна для новичков, возможно, опытные пользователи также найдут для себя что-нибудь новое.

Структура задачи:

  • projects
    1. project1/ — проекты
      • conf/
        • <run_configurations>*.conf — конфигурации построения отчетов по таблицам
      • reports/
        • <run_configurations>/
          • report1.json — сами отчеты, содержат статистику по таблицам Apache Hive
          • report2.json
    2. project2/
      ...

Надо: найти просроченные отчеты.

Итак, расчехляем Bash, открываем отдельный терминал для man-ов и приступаем)

Всех, кому интересно — прошу под кат.
Читать дальше →

Заразить во благо: как мы исполняем паразитный код

Время на прочтение6 мин
Количество просмотров3.4K
В последнее время мы много говорим про CRIU – систему живой миграции контейнеров. Но сегодня речь пойдет о еще более любопытной разработке: живом патчинге приложений, а также о библиотеке Compel, которая позволяет вытворять все эти безобразия, придавая гиперконвергентным системам новый уровень гибкости.

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

Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Linux

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

Подобных статей достаточно много на просторах интернета, но хотелось бы написать актуальную вариацию. Лично я долгое время мучался в связке: Ubuntu — основная система, разработка под STM32 в виртуальной машине Windows 7. Но однажды меня это очень утомило и я таки решил потратить несколько дней на поиск решения и вылизывание полноценной среды под Linux Ubuntu. Забегу вперёд и скажу, что идеала я так и не добился, не удалось сделать realtime debug, как в Keil. В остальном всё очень пристойно.


Внимание, очень много текста и картинок!

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

Docker и все все все

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

image


Мало найдется сегодня несогласных с тем, что Docker в конце концов стал "мейнстримом". Ну, точнее, контейнеры Docker стали. Правда есть фронт, где война еще не окончена, хотя для многих победитель уже очевиден, и победитель этот — Kubernetes, который по статистике использования сильно опережает основных конкурентов: Docker Swarm и Mesos + Mesosphere.


Я знаю людей и компании, которые не согласны с выводом большинства о том, что k8s это будущее оркестрации контейнеров. Но по некоторым причинам и аналогичные инструменты от других производителей их также часто не устраивают. Крупные компании в таком случае выбирают путь разработки своего собственного инструмента для оркестрации контейнеров. Другие останавливаются на Mesos или даже на Nomad. Но я пока не знаю никого, кто использовал бы Docker Swarm (mode).


Кстати, число "8" в слове k8s означает точно "8 букв", то есть: k8s = k[8_других_букв]s = kubernetes. Мода на такие сокращения появилась в бородатых 80-х прошлого века, и лично я не приветствую такие сокращения, поэтому далее буду называть инструменты их полным именем.

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

Microsoft Bot Framework + IBM Watson =… би-лингвистический бот

Время на прочтение8 мин
Количество просмотров5K
Продолжая начатую тему хочется поделиться успешным опытом создания билингвистического Node.JS бота на Microsoft Bot Framework под Linux. От заказчика поступила задача разработать простой социальный бот в формате вопрос-ответ для большой торговой сети, однако сложность заключалась в другом — бот должен быть двуязычным: на английском и арабском. Хотя, как будет показано ниже, выбор инструментов для решения задачи сделал разработку лёгкой, приятной и интересной.
Читать дальше →

Программирование под ARM TrustZone. Secure Monitor

Время на прочтение12 мин
Количество просмотров13K
Продолжаем наш цикл статей, посвященный столетию Великой Октябрьской… ARM TrustZone.

Сегодня мы разберемся, что такое Secure World, Normal World, как на программном уровне взаимодействуют две ОС – доверенная (TEE) и гостевая. Узнаем, для чего нужен и как работает Secure Monitor, как обрабатываются прерывания от устройств.

Если готовы – добро пожаловать под кат.
Читать дальше →

Статический анализатор ShellCheck и улучшение качества скриптов в Linux и Unix

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


Написание shell-скриптов — занятие увлекательное. Скрипты командной строки помогают автоматизировать повседневные дела. Можно создать нечто прекрасное (или какую-нибудь гадость), однако, если уж что-то писать, хорошо бы точно знать, что код получается именно таким, каким он нужен программисту. Скрипт, написанный некачественно, может представлять опасность. Большинство новичков пишут скрипты, копируя фрагменты кода со StackOverflow, находя то, что им нужно, в Google, или пользуясь сайтами с вопросами и ответами по Linux. Такой подход к программированию выливается в некачественный код и в появление ошибок. Вот, например, команда rm, выполнение которой приведёт к катастрофе, так как переменная VAR не определена:

rm -rf "/$VAR/*"

Многие из проблем скриптов можно решить с помощью линтера, такого, как статический анализатор кода ShellCheck, который написан на Haskell. Он помогает искать ошибки в текстах скриптов и выводить отчёты о проведённых проверках. Это позволяет повысить производительность работы и качество кода. Сегодня мы расскажем о том, как установить и использовать ShellCheck в Linux и Unix-подобных операционных системах.
Читать дальше →

Как написать свой первый Linux device driver. Часть 3

Время на прочтение3 мин
Количество просмотров17K
Добрый вечер, хаброчитатели!

В предыдущих статьях (один, два) мы определили понятие символьного устройства и написали простейший пример символьного драйвера. Последняя часть посвещена проверки его работоспособности. На Хабре уже есть примеры как можно протестировать драйвер, например: тык.

Я попытаюсь рассмотреть данный вопрос чуть подробнее, надеюсь, вам понравится.


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

Запуск/отладка 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, выводы вы сделаете самостоятельно на основании вашего опыта.
Читать дальше →

CI: непрерывная интеграция за 5 минут

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

Дочитав статью до самого конца, вы догадаетесь, почему в качестве КДПВ выбран бобренок в коробке

Всем здоровья, товарищи хаброжители. Совсем недавно столкнулся с необходимостью поднять и настроить сервис «Непрерывной интеграции» (далее CI) на одном очень небольшом проекте, очень косвенно связанном с моей работой. Время не поджимало, потому решил попробовать что-то новенькое (ранее использовал только Travis и Jenkins). Главным критерием выбора была: «простота и скорость развертывания системы на интеграционном сервере».

Под катом небольшая история и получившийся в ходе нее инструмент для CI, написанный за два вечера на Bash.
Читать дальше →

TrustZone: аппаратная реализация в ARMv7A

Время на прочтение13 мин
Количество просмотров16K
Сегодня начинаем исследовать внутреннее устройство TrustZone (это торговая марка компании ARM).

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

Поэтому я начну с того, что TrustZone — это никакое не «место» в процессоре. Ее нельзя найти на чипе, как кеш или АЛУ. И доверенные программы, на самом деле, не исполняются в какой-то физически выделенной зоне процессора.

Даже если мы посмотрели бы в исходные коды ядра ARM, то не смогли бы четко выделить TrustZone. Скорее, по аналогии с программами, TrustZone — это несколько модулей и набор патчей для почти всех остальных частей процессора.

В этой статье мы рассмотрим, как TrustZone реализуется на аппаратном уровне процессоров ARM Cortex-A (ARMv7A).
Читать дальше →

Linux Piter #3: о чем на этот раз?

Время на прочтение6 мин
Количество просмотров3K
На этой неделе заканчивается формирование программы третьей международной конференции Linux Piter, проходящей при поддержке Dell EMC.

Это два полных дня, 3 и 4 ноября, пятница и суббота в Питере, заполненные не всякой шелухой, а полноценными докладами про сеть, системные ресурсы, контейнеры и внутренности ядра Linux. Сугубо техническая тематика интересна всем тем, кто каждый день использует open source продукты и топовые технологии вокруг Linux в своей работе и в своих проектах.



Если кратко, то у нас 3 доклада про сетку, 5 про контейнеры, 4 про ядро, пара про производительность и еще много разного. Чтобы был понятен уровень выступлений: среди спикеров из Штатов, Германии, Швеции, Австрии и конечно же России к нам приедут Lennart Poettering (мантейнер systemd) и Christoph Hellwig (мантейнер XFS и NVM Express драйвера) – это реально круто. Будут доклады инженеров, работающих в Redhat, Intel, Microsoft (!), Ericsson, Docker и Canonical. Будут два параллельных потока с десяти утра до вечера: язык выступлений первого потока — английский (с синхронным переводом на русский для тех, кто не успевает), второго — русский (с синхронном на английский для наших иностранных гостей).
Ниже несколько анонсов выступлений в разных разделах конференции.

Приятная особенность Linux Piter #3 в том, что параллельно на этой же площадке будет проходить ещё одна наша техническая конференция — Piter Py #4, и участники смогут свободно посещать доклады любой из этих двух конференций.
Читать дальше →

Как написать свой первый Linux device driver. Часть 2

Время на прочтение10 мин
Количество просмотров14K
Привет хаброчитателям!

В предыдущей части мы рассмотрели базовые структуры, а также написали инициализацию и удаление устройства.

В данной статье мы добавим в наш драйвер функции открытия scull_open, чтения/записи scull_read/scull_write и получим первый рабочий драйвер устройства.



Хочу выразить благодарность всем пользователям, которые прочитали, лайкнули и прокомментировали мою предыдущую статью. Отдельное спасибо за уточнения Kolyuchkin и dlinyj.



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

Сразу к делу!
Читать дальше →

Ближайшие события

Тернистый путь Hello World

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

Вдохновение на написание данной статьи было получено после прочтения похожей публикации для архитектуры x86 [1].


Данный материал поможет тем, кто хочет понять, как устроены программы изнутри, что происходит до входа в main и для чего всё это делается. Также я покажу как можно использовать некоторые особенности библиотеки glibc. И в конце, как и в оригинальной статье [1] будет визуально представлен пройденный путь. В большинстве своём статья представляет собой разбор библиотеки glibc.


Итак, начнём наш поход. Будем использовать Linux x86-64, а в качестве инструмента отладки — lldb. Также иногда будем дизассемблировать программу при помощи objdump.


Исходным текстом будет обычный Hello, world (hello.cpp):


#include <iostream>
int main()
{
        std::cout << "Hello, world!" << std::endl;
}
Читать дальше →

Запуск контейнеров с Ubuntu на Windows

Время на прочтение5 мин
Количество просмотров28K
Привет, Хабр! Неделю назад я рассказывал вам о новой возможности, которая доступна в предварительных выпусках Docker и Windows Server/Windows 10 — запуск Linux контейнеров c Hyper-V изоляцией, аналогично Windows контейнерам с Hyper-V изоляцией. В этом пошаговом руководстве речь пойдёт про аналогичный запуск контейнеров с Ubuntu в этом окружении.


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

Поиск файлов по тэгам в XMP / IPTC и операции с найденным

Время на прочтение5 мин
Количество просмотров4K
Сначала может показаться, что пост о «ещё одном медиаплеере», и вот уже паникующий хабровчанин бежит с выпученными глазами прочь, кидаясь минусами в людей, животных и программистов. Ну, в общем и целом, да, пост примерно об этом. Но. Есть, на мой взгляд, одно весомое Но, о котором ниже.

Поиск файлов по тэгам в XMP / IPTC и операции с найденным
Читать дальше →

Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX

Время на прочтение13 мин
Количество просмотров87K
В последнее время на программистских форумах развернулись неслабые дискуссии (для примера см. здесь, здесь и здесь, и эта сегодняшняя) об Electron и его влиянии на сферу разработки десктопных приложений.

Если вы не знаете Electron, то это по сути веб-браузер (Chromium) в котором работает только ваше веб-приложение… словно настоящая десктопная программа (нет, это не шутка)… это даёт возможность использовать веб-стек и разрабатывать кросс-платформенные десктопные приложения.

Самые новые, хипстерские десктопные приложения в наше время сделаны на Electron, в том числе Slack, VS Code, Atom и GitHub Desktop. Необычайный успех.

Мы писали десктопные программы десятилетиями. С другой стороны, веб только начал развиваться менее 20 лет назад, и на протяжении почти всего этого времени он служил только для доставки документов и анимированных «гифок». Никто не использовал его для создания полноценных приложений, даже самых простых!
Читать дальше →

Linux-контейнеры для Windows

Время на прочтение3 мин
Количество просмотров13K
Скоро выйдет новое большое обновление для операционной системы Windows Server, в начале сентября в блоге TechNet вышел небольшой пост об этом, и некоторые ее новые функции порадуют пользователей Docker. Одна из главных новостей заключается в том, что
благодаря технологии Hyper-V, Docker теперь сможет выполнять Linux-контейнеры в Windows, аналогично Hyper-V Windows контейнерам.


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

Когда время перезагрузки имеет значение или почему IBM использует CRIU на мейнфреймах

Время на прочтение5 мин
Количество просмотров4.4K
В современном мире, когда светлое будущее прочат микросервисам, кажется странным заниматься технологиями, которые помогают обновлять код без перезагрузки. Ведь микросервисы и контейнеры куда проще «убить» и создать заново. Тем не менее, мы продолжаем работу над системой живой миграции CRIU, и нам в этом активно помогают ребята из IBM. Почему? Попробуем объяснить.

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

В поисках перформанса, часть 2: Профилирование Java под Linux

Время на прочтение11 мин
Количество просмотров20K
Бытует мнение, что бесконечно можно смотреть на огонь, воду и то, как другие работают, но есть и ещё кое-что! Мы уверены, что можно бесконечно говорить с Сашей goldshtn Гольдштейном о перформансе. Мы уже брали у Саши интервью перед JPoint 2017, но тогда разговор касался конкретно BPF, которому был посвящен доклад Саши.

На этот раз мы решили копнуть глубже и узнать фундаментальные проблемы мониторинга производительности и варианты их решения.


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

Вклад авторов