Обновить
306.46

Linux *

Пишем под *nix

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

s/bash/zsh/g

Время на прочтение13 мин
Охват и читатели8.6K
Как думаете — сработает такая команда?

bash% echo $(( .1 + .2 ))
bash: .1 + .2 : syntax error: operand expected (error token is ".1 + .2 ")

Как видите, bash выполнять её не хочет, а вот в zsh она обрабатывается совершенно нормально:

zsh% echo $(( .1 + .2 ))
0.30000000000000004      # Ну, "работает" в той мере, в какой работает IEEE-754.

В bash просто нельзя выполнять вычисления с дробными числами, не прибегая при этом к bc, dc или к каким-нибудь хакам. В сравнении с возможностью просто воспользоваться конструкцией вида a + b всё это кажется некрасивым, медленным и сложным.


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

Пошаговый запуск программы в Linux x86, или как добраться до main()?

Время на прочтение18 мин
Охват и читатели27K


Статья предназначена для тех, кто хочет понять процесс загрузки программ в Linux. В частности, здесь пойдет речь о динамической загрузке файлов ELF x86. На основе изложенной информации вы сможете лучше понять, как устранять проблемы, возникающие в программе еще до запуска main.
Читать дальше →

Педальку в пол, или как ещё ускорить CPU-bound приложение?

Время на прочтение29 мин
Охват и читатели7.6K

Зачем я это читаю?


TL;DR:


  • Переложив секции кода и данных программы на большие страницы можно существенно ускорить приложение (у нас получилось до +10%) не трогая исходный код.
  • Можно быстро проверить ничего не перекомпилируя, детали здесь.
  • Финальное решение оперирует "классическими" большими страницами (не transparent huge pages), поэтому в какой-то степени его можно назвать дальнейшим развитием libhugetlbfs.
Читать дальше →

Активная конкуренция за RAM в Android

Время на прочтение4 мин
Охват и читатели7.7K

Разработав инструмент для визуализации RAM и zRAM в Android, я обнаружила, что в телефонах происходит активная конкуренция за ресурсы. И если процессу понадобятся ресурсы, которые уже заняты кем-то другим, он отберет их, что может привести к критическим ситуациям и конфликтам оборудования.

Пользовались ли вы когда-нибудь такими утилитами как htop, top, vmstat? Если у вас вообще установлен Linux, то скорее всего да. И они действительно хорошо показывают статистику использования ресурсов в ОС. Я исследовала операционные системы, и мне не хватало понимания того, как реально выглядит физическое адресное пространство: какие конкретно адреса заняты, какие свободны, что происходит, если процессы запрашивают одни и те же адреса, как часто это происходит.

Была гипотеза, что в Android (и в Linux), возникает активная конкуренция за ресурсы. Спойлер из названия статьи: она подтвердилась.

Читать далее

Oracle Call Interface: как написать клиентское приложение на Си

Время на прочтение8 мин
Охват и читатели6.4K

В этой статье я расскажу, как написать клиентское приложение для БД Oracle, используя библиотеку OCI и язык Си.

Читать далее

Возвращаем к жизни калькулятор HP Prime G2

Время на прочтение10 мин
Охват и читатели16K

Калькулятор с восстановленной прошивкой.

В предыдущих сериях:


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

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

Python GUI. Библиотека KivyMD. Использование Blur эффекта

Время на прочтение8 мин
Охват и читатели17K

Приветствую вас, дорогие любители и знатоки Python! Сегодня как всегда будем делать обзор фреймворка для кроссплатформенной разработки Kivy и библиотеки виджетов в стиле Google Material Design для фреймворка Kivy - KivyMD. В этой статье мы рассмотрим как сделать blur эффект отдельных компонентов интерфейса пользователя. Я уже делал похожий обзор в статье Материальный Python. Кастомные карточки с OpenGL-эффектами, но нижеследующий материал несколько сложнее и в прямом смысле динамичнее. Что ж, начнем...

Читать далее

Написание скриптов для tmux

Время на прочтение3 мин
Охват и читатели14K
Мне, когда я пользуюсь tmux, часто надо открывать похожие рабочие пространства. Например, мне всегда нужно выводить последние строки пары файлов журналов в панели, или мне нужно открывать и vim, и mysql. Бывает, что мне нужно и что-то другое.



Если вы попробуете найти сведения об открытии рабочих пространств tmux, то почти гарантированно обнаружите советы по использованию программы-обёртки вроде tmuxinator, tmux-resurrect или tmux-continuum. Эти программы, возможно, хороши, но я предпочитаю что-нибудь попроще.
Читать дальше →

Сортировка файлов в командной оболочке Linux

Время на прочтение5 мин
Охват и читатели70K
Ищете новый способ организации своих файлов и выполнения над ними каких-либо операций? Тем, кто работает с компьютерами, часто надо что-то отсортировать. Например, список файлов. Сортировка файлов с помощью Bash-команд sort и ls поможет вам навести порядок в своих материалах. Здесь мы поговорим об основах сортировки файлов и их содержимого в Linux.


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

Сравнение RPA от UiPath и ROBIN 2.0 как способ полюбить российское ПО

Время на прочтение5 мин
Охват и читатели8.3K
Принято считать, что российское ПО традиционно уступает западным программам. Для многих это если не аксиома, то достаточно давно доказанная теорема. В особенности, когда речь идёт о корпоративных продуктах. Я был также уверен в этом и считал, что в большинстве случаев российские продукты корпоративного уровня делают для госсектора. Т.е. для того, чтобы выполнить требования по импортозамещению. Так было до недавнего времени, когда в моей компании не понадобилось автоматизировать рутинные процессы и я не озадачился выбором RPA.

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

U-boot. Процедура инициализации по шагам

Время на прочтение6 мин
Охват и читатели43K

В предыдущей статье был описан процесс настройки IDE Eclipse для кросс-платформенной отладки загрузчика U-boot. В данной статье описывается устранение последних ограничений, препятствовавших полноценной его отладки. После чего, получив возможность полноценной отладки кода, пройдемся по всей процедуре инициализации загрузчика от первой инструкции и до конца в режиме отладки.

Читать далее

Создаем начальную миграцию с alembic для существующей базы

Время на прочтение4 мин
Охват и читатели110K

Создание начальной миграции для существующей базы с alembic

Читать далее

PINE64: не PinePro единым. Что еще может предложить разработчик «свободного» Linux-телефона

Время на прочтение4 мин
Охват и читатели23K

Компания PINE64 известна, в первую очередь, своими телефонами. До недавнего времени нужно было бы писать «телефон», но на днях в дополнение к первой модели, PinePhone, вышла вторая — PinePro.

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

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

Минимизация файла ELF – попробуем в 2021?

Время на прочтение18 мин
Охват и читатели11K

Экспериментальный проект по максимальному уменьшению ELF-файла с программой Hello, World! под целевую систему Linux x64 с помощью NASM. В предыдущем опыте начала 2000-х удалось добиться размера рабочего файла в 45 байтов, но с тех пор ядро сильно изменилось. Каков же будет минимальный жизнеспособный ELF в 2021?
Читать дальше →
Традиционные финансовые институты в ужасе: соцсети строят свою финансовую инфраструктуру (VK Pay — существует, FB — пытается); «Гугл», «Яндекс» и «Эппл» имеют собственную платёжную систему, а маркеты прибирают к рукам небольшие банки. Продажи через мессенджеры — уже рутина. Да что там «Гугл», даже простые сервисы поиска выгодного кредита ставят банки в условия жёсткой конкуренции, спасает лишь законодательство.

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

Неистовые потуги или как поиграть на midi-клавиатуре в стиле linux-way

Время на прочтение5 мин
Охват и читатели6.4K

Относительно короткая история о том как я хотел поиграть на midi-клавиатуре, но не совладал с аудиоподсистемами линуха...

Читать далее

Распознание длинных аудио сервисом Yandex SpeechKit из командной строки bash/shell через API

Время на прочтение5 мин
Охват и читатели12K

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

Читать далее

Особенности работы с POSIX-сигналами

Время на прочтение10 мин
Охват и читатели17K

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

Читать далее

Старый фотик + bash = таймлапс

Время на прочтение9 мин
Охват и читатели30K

Думаю у многих из нас, в шкафу пылился старый зеркальный фотоаппарат, типа Canon EOS 400D. Он как чемодан без ручки: выбросить жалко, продать смысла нет, и использовать вряд ли будешь. Достал его так одним вечером, и подумал: вещь хорошая и вполне годная для всяких опытов. И сразу загорелся применить его во всяких своих самоделках. А что, весьма хорошо фотографирует из коробки, достаточно широкий спектр всяких регулировок, осталось только научиться с ним работать. Всего-то подружить его с компьютером, да Linux, и дело в шляпе! В результате у нас получается просто непаханое поле для фотографических экспериментов и применения в своих придумках. Давайте же поглядим, как это можно сделать и что получилось из таких экспериментов.
Читать дальше →

OTA обновление устройств с Linux

Время на прочтение7 мин
Охват и читатели9.7K

OTA A/B обновление образа rootfs для IoT устройств с Linux при помощи проекта Mender. Как обновить образ системы на множестве удалённых устройств. Демонстрация на примере Raspberry Pi.

Читать далее