LINUX.ORG.RU

Статьи

Активные теги:

 , ,

Переезжаем на Fish

Статьи — Администрирование
Переезжаем на Fish

Fish — это современный командный интерпретатор, недавно переписанный на Rust, который не требует особой настройки, поддерживая из коробки автодополнение и подсветку синтаксиса. Является лучшим Unix SHELL по версии Slant.

( читать дальше... )

 , ,

rtxtxtrx
()

Получаем OTP-коды для авторизации через терминал

Статьи — Администрирование
Получаем OTP-коды для авторизации через терминал

TOTP (Time-Based One-Time Password) или просто OTP — это алгоритм для генерации одноразовых паролей, который не требует сторонних сервисов. Он работает локально на основе общего секретного ключа и текущего времени. Например, GitHub с 2024 года использует двухфакторную авторизацию (ввод пароля + ввод какого-то кода) только через OTP (в России авторизация через SMS недоступна).

( читать дальше... )

 , ,

rtxtxtrx
()

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

Статьи — Desktop

Почему не VPN

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

Суть решения

Дело в том, что мне нравятся Google Chrome и Microsoft Edge, но вот беда, нормально работать с прокси они не умеют. Поэтому, проведя некоторые изыскания, я смог создать рабочий конфиг на основе privoxy и плагина для упомянутых браузеров Proxy SwitchyOmega.

privoxy обеспечивает socks5-соединение, а Proxy SwitchyOmega даёт возможность менять параметры подключения в любой момент, в том числе – автоматически по выбранному шаблону, при этом может работать с несколькими внешними прокси.

( читать дальше... )

 , , , ,

unclestephen
()
: nnn и иконки (17 комментариев)

Tcl/tk. GUI на SVG-виджетах. Часть I

Статьи — Разработка

Хочу представить свой пет-проект . Создан он в недрах tсl/tk, который, по моему мнению, многие недооценивают. В статье речь пойдет не столько о tcl (хотя все примеры и сам проект написаны именно на нем), а сколько о tk.

( читать дальше... )

 , , , ,

TclTk
()

Что почитать C++ программистам

Статьи — Разработка

Предлагаю вашему вниманию две бесплатные электронные книги. Первая написана мной: «Вредные советы для C++ программистов» (PDF-формат). Это переработанный под печать вариант «60 антипаттернов для С++ программиста». Если вы уже читали 60 антипаттернов, то, пожалуй, читать новый вариант смысла нет. А если нет, то рекомендую — это и возможность местами улыбнуться, и польза.

Теперь про вторую книгу: «Путеводитель C++ программиста по неопределённому поведению». Здесь я был редактором, автор: Дмитрий Свиридкин. Книга опубликована частями, ссылки на которые приведены ниже. Сейчас Дмитрий перерабатывает материал под книжное издание, но это отдельная история.

  1. Часть 1: предисловие, что такое неопределённое поведение, и как оно проявляется, сужающие преобразования и неявное приведение типов.
  2. Часть 2: переполнение целых знаковых чисел, числа с плавающей точкой, integer promotion, char и знаковое расширение.
  3. Часть 3: висячие ссылки, string_view, синтаксический сахар с ложкой дёгтя (range-based for), self-reference, std::vector и инвалидация ссылок.
  4. Часть 4: списки захвата лямбда-функций, кортежи, внезапная мутабельность, неявные ссылки, use-after-move, lifetime extension.
  5. Часть 5: Most Vexing Parse, неконстантные константы, семантика перемещения, std::enable_if_t против std::void_t, забытый return.
  6. Часть 6: эллипсис и функции, operator [], iostreams (счастливой отладки!), оператор запятая, function-try-block, типы «нулевого» размера.
  7. Часть 7: NULL-терминированные строки, std::shared_ptr, (не)явное приведение типов, как передать стандартную функцию и ничего не сломать.
  8. Часть 8: бесконечные циклы и проблема остановки, рекурсия, ложный noexcept, переполнение буфера.
  9. Часть 9: (N)RVO vs RAII, разыменование нулевых указателей, static initialization order fiasco, static inline, нарушение ODR, зарезервированные имена.
  10. Часть 10: тривиальные типы и ABI, неинициализированные переменные, С++20 unbounded ranges, невиртуальные виртуальные функции, VLA.
  11. Часть 11: невалидные указатели, placement new для массивов, data race, повторный захват mutex, сигнало(не)безопасность, как сделать всё правильно и уйти в deadlock.
  12. Часть 12: std::vector::reserve и std::vector::resize, невыровненные ссылки, время жизни и смерти, статический анализ и UB, заключение.

И последнее: если пропустили, в конце 2024 года, как всегда, вышла подборка про самые интересные из найденных нами багов: Топ-10 ошибок в C и C++ проектах за 2024 год.

 ,

Andrey_Karpov_2020
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 4

Статьи — Desktop

Спатиалайзер для наушников

Вы когда-нибудь задумывались, чем прослушивание музыки через наушники, отличается от прослушивания музыки через колонки? Основное отличие – когда мы в наушниках, то левое ухо слышит только звук левого наушника (левый стерео канал), и совсем не слышит звук правого. И наоборот. Когда мы слушаем колонки, то оба уха слышат обе колонки, но по-разному. Из-за этого простого факта, восприятие стерео-сцены в наушниках и через колонки, радикально отличается.

И возникает существенная проблема – а на что должна быть расчитана запись, на прослушивание в наушниках, или в колонках? Индустрия выбирает колонки, как основной источник звука, и все делается в расчете на них. А в наушниках мы будем слышать неправильное стерео, сильно искаженное.

Но у нас же есть pipewire, поэтому не беда, сейчас мы это исправим! В этой и следующей статье, мы заставим звучать наушники как колонки, а колонки как наушники (ну почти)!

( читать дальше... )

 , ,

James_Holden
()

image viewer simply на bash

Статьи — Разработка
image viewer simply на bash

Хочу представить простенький просмотрщик изображений на bash. Накропал его сам и может он не имеет практического применения,но все же. Конечно там возможно много сделать лучше и проще. Как говорится как есть))

#!/bin/bash

export tmp_num="/tmp/numbegin"
[ ! -f "$tmp_num" ] && echo "1" > "$tmp_num"
export file_image="/tmp/file_image" 
[ ! -f "$file_image" ] &&  find / -xdev  -type f -name "*.png" -or -name "*.svg"  -or -name "*.jpg"  >  /tmp/file_image  
 
export col_image=$(cat $file_image | wc -l)
export max_stroke=$(grep -c $ "$file_image" | (read a; echo $(( ($a/300)*300+1 ));))
export FILE_PATH=$(realpath "$0") 
export catnum=$(cat "$tmp_num")
  function IMAGE_FILE () { 
begin="$1" 
begin="$catnum"
IFS=$'\n'
i="$begin"  
 
for file_name in $(sed -n "${begin},$((${begin} + 299))p" $file_image) 
  do
#size=$(exiv2 $file_name 2>/dev/null | awk ' NR==2 {printf("%.2f", sum ($4 / 1024)); print "Kb"}; NR==4 {print $4 "x" $6 "px"}' | tr '\n' ' ') --text=\"$size\"yad  --undecorated --image=\"$file_name\" --text=\"$file_name\" --selectable-labels  
 if (( "$i % 30" == 0 )) && [[ "$i" -le $((${begin} + 299-30)) ]] ; then num="</hbox><hbox>"; else num=""; fi
  echo "<button tooltip-text=\"$i $file_name\"><input file>\"$file_name\"</input><action>xdg-open  \"$file_name\"</action><height>30</height><width>30</width></button> $num"
  i=$((i + 1))
done
}
export -f IMAGE_FILE 
 
export MAIN_DIALOG_IMAGE='<window window-position="1" title="Галерея  bash"><vbox><hbox>'`IMAGE_FILE $begin`'</hbox><hbox space-expand="true" space-fill="true">
<button label="start">
<action>echo "1" > "$tmp_num"</action>
<action>$FILE_PATH $begin &</action></button>

<button label="'"$catnum"' prev">
<action>if [ "$catnum" -gt 1 ]; then begin=$(($catnum - 300)); echo "$begin" > "$tmp_num"; else begin=1; echo "1" > "$tmp_num"; fi</action>
<action>$FILE_PATH $begin &</action></button>

<button label="next '"$catnum"' - '"$(( $catnum + 299 ))=$col_image"'">
<action>if [[ "$catnum" -lt "$max_stroke" ]]; then begin=$(($catnum + 300)); echo "$begin" > "$tmp_num"; else begin=1; echo "1" > "$tmp_num"; fi</action>
<action>$FILE_PATH $begin &</action></button>
</hbox>
</vbox></window>'

gtkdialog --program=MAIN_DIALOG_IMAGE &
 
 PID_SUM=$(ps | grep "MAIN_DIALOG_IMAGE" | grep -v grep | awk '{print $1}' | wc -l) 
  PID=$(ps -eo pid,cmd | grep "MAIN_DIALOG_IMAGE" | grep -v grep | awk '{print $1}' | head -1)
  [ "$PID_SUM" -gt 1 ] && kill $PID
[ "$catnum" -ge "$max_stroke" ] && echo "1" > "$tmp_num" && $FILE_PATH $begin &

Хотел чтобы список был больше,но long arg list не дал это сделать. ps Не имею ни какого образования в программировании.

 , ,

nik120s
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 3

Статьи — Desktop

Во второй части мы разобрали вопрос, как управлять параметрами эффектов в реальном времени, без перезапуска PipeWire.

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

( читать дальше... )

 , ,

James_Holden
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 2

Статьи — Desktop

В первой части мы создали конфиг-файл, который добавляет 15-полосный эквалайзер в граф PipeWire. Теперь разберем вопрос, а как же изменять его параметры на лету, без перезапуска PipeWire. Вопрос очень животрепещущий, редакция завалена письмами с ним. ))

В этой части мы разберем задачу на «низком» уровне CLI-утилит. На этой базе несложно сделать любой GUI-фронтенд, который позволит управлять параметрами уже из GUI.

( читать дальше... )

 , ,

James_Holden
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 1

Статьи — Desktop

ВСТУПЛЕНИЕ

Звуковая система PipeWire принесла, без преувеличения, революцию в мир десктопно-мультимедийного Linux. Наконец то эта ОС получила продуманную, сделанную по уму понимающими в теме людьми, и сделанную качественно звуковую систему. Многие ее возможности присутствовали и раньше, в других более старых звуковых системах, но в PipeWire они собраны воедино и сформировали целую единую платформу, на которой можно реализовать огромное количество самых разных задач.

Но в пользовательской среде, эта революция практически не заметна, часто можно встретить мнение вида «ну играет ютуб и играет, мне хватает». Поэтому я решил сделать небольшой цикл статей, посвященный более продвинутому использованию PipeWire, раскрывающему его, без преувеличения, поразительные возможности. (Ну и чтобы изучить их самому в процессе, хехехе).

( читать дальше... )

 , ,

James_Holden
()

Argos Translate: офлайн-переводчик для Linux

Статьи — Desktop

Понадобилось переводить офлайн. Устанавливать программу для Windows через wine желания не было. Решением стала программа Argos Transllate. Она написана на Python, работает в терминале, и есть графический интерфейс пользователя. Об опыте установки и использования этой программы и будет написано ниже.

( читать дальше... )

 , ,

bloody_enterprise
()

Профессиональный видеомонтаж в Davinci Resolve под Linux — начало работы

Статьи — Desktop

Davinci Resolve/Davinci Resolve Studio — это профессиональная проприетарная программа для полного цикла видеомонтажа с обвесом. Прямой конкурент Adobe Premier + After Effects + Audition. Именно так, включает в себя функциональность всех трёх пакетов. Сильные стороны: чуть ли не единственное решение для работы с цветом в принципе, активное использование видеоадаптера, приятная ценовая политика — бесплатной версии хватит всем, платная стоит $300 единоразовым платежом. И конечно поддержка Linux, которой у Adobe кажется будет никогда.

( читать дальше... )

 ,

Dispetcher14
()

Создание эргономичных расположений клавиш на Linux-системах

Статьи — Desktop

В этой статье мы рассмотрим:

  • почему вообще может потребоваться ремаппинг;
  • как ремаппят другие;
  • как раскладка реализована у меня;
  • как сделать собственную раскладку’.

Кроме обычного ремаппинга, мы также коснёмся темы создания слоёв, их индикации, а также рассмотрим создание аккордов (chords). Всё это на уровне системы.

( читать дальше... )

 , , , ,

rhubear
()

Waydroid: ручная установка native bridge

Статьи — Desktop

Т.к. в сети информации толком нет (ну или я просто не умею её искать), то решил написать эту статью, чтоб исправить это.

Введение

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

Многим играм и программам для андроид требуется архитектура arm для работы. Houdini — это набор библиотек-трансляторов, которые позволят запускать их на архитектуре x86 и x86_64. Эти библиотеки были взяты из образов андроид от майкрософт. Есть аналогичный набор библиотек NDK, которые были взяты из образов андроид от гугла.

В данном примере я буду использовать houdini для Android 11, который идёт в штатной поставке waydroid. Там используется образ Lineage OS, но сути это не изменит.

Для начала скачиваем сами библиотеки. Например, отсюда https://github.com/supremegamers/vendor_intel_proprietary_houdini В данном случае нас будет интересовать содержимое каталога prebuilts.

( читать дальше... )

 ,

u5er
()

Дедупликация в Btrfs

Статьи — Администрирование
Дедупликация в Btrfs

Btrfs — это замечательная файловая система, главными фишками которой являются легковесные снапшоты, реализуемые через Copy-On-Write (COW), и сжатие. Она показала высокую надежность и стабильность, и именно поэтому она включена в ядро Linux. Однако, даже наличие COW не позволяет избежать избыточности данных на уровне блоков.

( читать дальше... )

 ,

rtxtxtrx
()

Защищенный терминал подручными средствами

Статьи — Администрирование

Предлагаю смотреть на вопрос философски. Многие из нас работают на удаленке. Защищая свою рабочую машину для просмотра котиков, мы возможно избавим от проблем себя и свою любимую компанию. А вот откуда может прилететь, сходу сказать сложно. Будем считать против нас Бох! Ну не тот который всё создал, а тот который специализируется на атаках ИБ, ну и раз он Бох, то он конечно умеет читать мысли и бессмертен.

( читать дальше... )

 , , ,

unclestephen
()

Linux в офисе: особенности национальной работы (из старых публикаций)

Статьи — Desktop
Эпиграф: Ты помнишь, как всё начиналось?
Всё было впервые и вновь! (с) ВИА "Машина времени"

Этой статье – четверть века. Как лайфхак и HOWTO её использовать запрещается! Просто, сходите в музей, точнее – в архив.

( читать дальше... )

 , ,

Old-Cat
()

Делаем из Vim IDE

Статьи — Разработка
Делаем из Vim IDE

В стародавние времена когда деревья были большими, трава зеленее, а мороженное стоило по 10 копеек, на Земле жили динозавры, и эти динозавры программировали в Vim.

( читать дальше... )

 , ,

rtxtxtrx
()

Что такое Linux и кому он подойдёт: мифы о Linux, выбор дистрибутива

Статьи — Desktop

Статья адресуется тем, кто хочет узнать, что такое Linux; тем, кто хочет перейти на Linux, но не уверен, что он ему подойдёт. А также тем, кто не понимает, чем простых пользователей не устраивает Windows.

( читать дальше... )

 , , ,

MrCookie
()

RSS подписка на новые темы