Metaprog здорового человека
Без танцев с виртуалками и проприетарщины. Для любого кода на няшном питоне.
Без танцев с виртуалками и проприетарщины. Для любого кода на няшном питоне.
С++ – сложный язык. Хоть это для каждого по разному и тд, но он очевидно сложнее большинства (всех?) высокоуровневых языков программирования. С другой стороны он очень быстрый и дает тотальный контроль.
Теперь вопрос: должен ли язык быть априори настолько сложным для достижения мощи как в с++ или же так просто исторически сложилось (ака историческая несправедливость)?
Такой сабж, есть ноутбук с debian (i3/4gb ram/128 ssd), есть ли смисл играться с ZSWAP (ZRAM ?), и если да, то какой должен быть конфиг для этого, как минимум какой vn.swappiness и zswap.max_pool_percent ?
Здравствуй, мой дорогой, уважаемый друг!
У меня возникили трудности при написании скрипта на shell, я так сильно привык к bash, что немного вошел в ступор и надеюсь на твою помощь.
Имеем:
export APP_NAME='test'
export APP_DESCRIPTION='Test app'
export APP_VERSION='beta'
export APP_COMMIT_HASH='000000000'
# и черт пойми еще какие APP_* могут быть
export PROJECT_DIR='./src'
На bash-е сделал так:
#!/bin/bash
for k in ${!APP_*}; do
grep -q "^$k" "$PROJECT_DIR/.env" && \
sed -i "s|^$k=.*|$k=${!k}|" "$PROJECT_DIR/.env" || \
printf '%s=%s\n' "$k" "${!k}" >> "$PROJECT_DIR/.env"
done
Очень нужно перенести на shell, там где это будет работать - товарищ майор запрещает использовать bash. На скорую руку сделал так:
#!/bin/sh
vars=$(env | grep -o '^APP_.*=' | tr -d '=')
for k in $vars; do
eval "v=$k"
grep -q "^$k" "$PROJECT_DIR/.env" && \
sed -i "s|^$k=.*|$k=$v|" "$PROJECT_DIR/.env" || \
printf '%s=%s\n' "$k" "$v" >> "$PROJECT_DIR/.env"
done
eval == злоИзящный способ то существует?
Скорее всего env и eval можно заменить на set, но решил спросить у тебя, может быть подскажешь что-то более практически и эстетически верное.
Всем спасибо за помощь!
Пока оставил в таком виде:
#!/bin/sh
cat /proc/self/environ | tr -d '\n' | tr '\0' '\n' | \
grep '^APP_[a-zA-Z0-9_-]*=.*$' | \
while IFS='=' read -r k v; do
grep -q "^$k" "$PROJECT_DIR/.env" && \
sed -i "s|^$k=.*|$k=\"$v\"|" "$PROJECT_DIR/.env" || \
printf '%s="%s"\n' "$k" "$v" >> "$PROJECT_DIR/.env"
done
Вот, сваял слакбилд для slackware-current.
https://github.com/stanson-ch/beignet.SlackBuild
Теперь Beignet (Интелевский OpenCL для процессоров Gen3+ c Intel HD Graphics) собирается и работает на current'е.
В гимпе фильтры значительно шустрее работают и всё такоэ.
Beignet был заброшен Интелем в пользу compute-runtime, но последний поддерживает процессоры только начиная с Broadwell. А постоянно меняющийся llvm привёл к тому, что ванильный Beignet не собирается при мало-мальски свежем окружении. В общем, несколько патчей из дебиана, парочка из арча, немножко своего - и всё снова заработало.
Обновил для llvm11. Вроде работает. Задрали уже обратную совместимость ломать.
GNU Poke - новый интерактивный редактор бинарных данных со встроенным процедурным языком программирования, предназначенным для описания структур данных и их изменения. GNU Poke позволяет редактировать байты в отдельно взятом бинарном файле или его части, а также создавать программы на базе Poke для шаблонного изменения, просмотра и редактирования файлов или отдельных абстрактных структур внутри бинарных файлов (примером такой программы мог бы служить редактор mp3-тегов или значений в sqlite-базе данных).
GNU Poke является консольной утилитой, использующей gnu-библиотеку readline, однако также существует графический интерфейс, созданный с применением Tk/Tcl. Виртуальная машина Poke основана на Jitter.
Релиз GNU Poke 1.0 состоялся 26 февраля 2021 года, разработка продолжалась в течение 3 лет.
Исчерпывающее руководство на английском языке
>>> Анонс от команды разработчиков (jemarch.net)
Доброго дня вам, ЛОРчане!
Что такое этот мифический «Unix-way»? Вероятно, однозначно на этот вопрос не ответит никто, т.к. каждый понимает под данным термином что-то своё, и определение не имеет чётких границ. Поэтому для установления общего базиса в данной теме предлагаю заглянуть в Wikipedia. Кроме трёх базовых понятий о программах делающих что-то одно, работающих вместе и использующих текст (Malcolm Douglas McIlroy), там есть такие мысли, как:
С настраиваемостью и GNOME, думаю, давно всё понятно. Разработчики явно решили, что многообразие опций напугает пользователя. А что с прозрачностью? На мой взгляд, неоспоримым преимуществом систем GNU/Linux по сравнению с Windows и macOS является то, что в случае поломки пользователь может разобраться в её причинах прямо здесь, на месте. Либо, если ему интересно, может узнать что и как устроено внутри. Пользователь GNU/Linux в праве ожидать от программ ясных и подробных логов, тогда как в Windows чаще можно увидеть «Произошла ошибка 0xBADS0F1. Обратитесь к системному администратору». Я уже как-то писал на ЛОРе, что GNOME развивается в сторону от прозрачности системы. Проблема заключалась в отображении грустного смайлика (выглядит это вот так) вместо нормального сообщения об ошибке, и это сообщение показывал не «обновлятор» Ubuntu, а GNOME. Самое стрёмное тут это невозможность отказаться от завершения сеанса. Т.е. другие программы могут вполне работать, но поверх их висит окно, которое блокирует весь ввод. Я сам так же попадал в подобную ситуацию, когда пользовался QEMU. При том не было даже никакой ошибки, просто QEMU захватил ввод, я решил переключиться на другую виртуальную консоль (Ctrl+Alt+F3) и обратно, а GNOME почему-то решил, что ему стало плохо. После этого я с воплями убежал на KDE. Это было не единственным примером, а скорее, последней каплей. До этого я ещё стойко терпел выпиливания функционала. Достаточно сравнить диалоги выбора файлов в GNOME и KDE - вполне наглядный пример.
И вот, некоторое время назад мне опять понадобилось писать ПО с использованием GTK. К слову, к самому GTK я пока отношусь положительно. Достаточно неплохой тулкит, нормальная идея с GObject introspection и привязками к другим языкам. Хотя уже закрадываются сомнения... Раньше я уже использовал Glade, чтобы нарисовать интерфейс. Местами плевался от него, но в целом ничего. А сейчас решил попробовать GNOME Builder. Запустил, открыл в нём пример приложения (одна из причин зачем ставил - потыкать разные примеры в одном месте, а не собирать их по GitHub, документация разработчика для GTK как-то не очень). Builder попросил поставить некоторые SDK (imgur.com). По названиям я предполагаю, что это делается через Flatpak. Хотя не факт. В общем, у него это не получилось. Да, ошибки в ПО встречаются, этого не избежать. Где нормальное сообщение об ошибке? Почему вместо него вот это. Конечно, я нагуглю и разберусь, что там случилось. Но, почему? Это ведь уже не текстовый редактор, где «важно» (хотя на самом деле не важно и даже вредно, пользователь должен знать) не напугать неподготовленного пользователя обилием опций и сообщениями с подробностями. Это IDE для разработчика. Всё, что тут можно сделать - нажать на кнопку, которая убирает пункт из списка. Зато есть удобное меню-гамбургер, а там есть пункт «Generate support log». Ура? Нет, это было бы слишком просто. В логе нет ничего по теме ошибки. В окне с «Failed to install» даже текст нельзя выделись и скопировать. Казалось бы, при разработке интерфейса надо просто поставить галочку «Selectable». Мелочь, но сколько раздражения доставляет. Вообще, что мешало в интерфейс выдать сразу какую-то внутреннюю ошибку? Ведь она там есть. Место закончилось или прав не хватило? Запустить Builder через sudo? Или что? Хоть бы errno показывали...
По итогу всего написанного выше, вангую, из GNOME побегут не только пользователи, которых лишили опций и настроек, но и разработчики сторонних приложений, т.к. создатели GNOME из нормальной среды времён второй версии устроили какой-то мирок с розовыми очками, где только они сами и могут обитать.
Просто OpenBSD 6.8 (который ещё не вышел) на Pentium II (который вышел ещё во времена динозавров)
Хотел было поставить туда Windows 10 (которая вышла уже несколько лет назад). Но для этого надо было бы раз в 20 разогнать процессор, раз в 16 увеличить размер памяти и раз в 5 растянуть жёсткий диск. Решил пойти более простым путём и поставил OpenBSD.
Кроме того, раз у меня есть такой крутейший пентиум, я открываю журнал для старых компьютеров, oldpc notes, где буду жизнеописать, как жить со старыми компьютерами. Первый выпуск уже в эфире
Давно лежит дома старинная рабочая станция SUN Ultra 60. в ней стоял один процессор на 300 МГц. По случаю купил два по 450. Это максимальные поддерживаемые процессора. Но с ними машина не стартует, ни с одним ни с двумя. Со старым на 300 МГц запускается.
поискал по мануалам, узнал что для процессоров 450 МГц нужен OPB версии минимум OBP 3.17 Version 0. У меня стоял OBP версии 3.11 На дисках нашел версию 3.25. Которая и была установлена. Но все равно машина не стартует с процессорами по 450.
Как крайний вариант нужна последняя версия OPB OBP 3.31 Version 0 + POST 2.0.3 + OBDIAG 1.3 (not ECO released)
Вот ссылка на нее на сайте Oracle
https://updates.oracle.com/download/9599989.html
У меня скачать не получается. У кого есть доступ, просьба скачайте прошивку. Все же хочу оживить машинку
Собственно, суть: один шведский блогер (в хорошем смысле этого слова) как-то попросил именитых людей мира UNIX-like показать свой рабочий стол и окружение и дать пару комментариев насчёт него:
https://anders.unix.se/2015/10/28/screenshots-from-developers--unix-people-2002/
На ЛОРе уже мелькала несколько раз эта ссылка: [1] (linux.org.ru), [2] (linux.org.ru); однако обновление опроса, которое в 2015 году сделал этот же блоггер, к сожалению, осталось незамеченным и прошло без обсуждения.
https://anders.unix.se/2015/12/10/screenshots-from-developers--2002-vs.-2015/
Собственно, исправляем ситуацию. По ссылкам выше можно посмотреть как выглядели в 2002 и 2015 годах рабочие окружения именитых людей:
К превеликому сожалению Dennis Ritchie и itojun покинули нас и поэтому их скриншоты в новую подборку не смогли войти.
Привет всем любителям игры «Герои меча и магии 2»!
Рады сообщить Вам, что свободный движок fheroes2 обновился до версии 0.8.2, которая является небольшим, но уверенным шагом к версии 0.9.
( читать дальше... )
>>> Подробности на нашей странице. (github.com)
Собственно: https://youtu.be/fPnbnNX9CPE
Система на HDD, Debian 9 Mate, MemTotal=10GB, swap on zram (disksize=14GB). memavaild, prelockd и nohang-desktop работают в фоне и помогают сохранять отзывчивость несмотря ни на что.
https://github.com/hakavlad/nohang
https://github.com/hakavlad/prelockd
https://github.com/hakavlad/memavaild
Кратко: prelockd - новейшее оружие в борьбе за отзывчивость при нехватке памяти.
Спрашивайте ответы.
Задача: определить ширину текста (в колонках) перед его выводом на линуксовый терминал.
Планирую определить ширину строки как сумму ширин входящих в строку символов.
Каждый символ может занимать 0, 1 или 2 знакоместа:
Решение должно быть изолированным (т.е., не должно зависеть от текущих настроек эмулятора терминала, в котором работает скрипт). Если случится такое, что в разных моноширинных шрифтах какой-то символ имеет то обычную, то двойную ширину, то можно выбрать любую ширину для этого символа: и 1, и 2.
Как отличить символы обычной ширины от двойной ширины, я нашёл: нужно посмотреть свойство EastAsianWidth в Unicode Character Database
А как понять, что символ нулевой ширины (т.е., не увеличивает ширину строки)?
Будет ли достаточно смотреть только на название категории символа без учёта доп. свойств символа?
Список всех категорий
C = "Other",
Cc = "Control",
Cf = "Format",
Cn = "Unassigned",
Co = "Private_Use",
Cs = "Surrogate",
L = "Letter",
LC = "Cased_Letter",
Ll = "Lowercase_Letter",
Lm = "Modifier_Letter",
Lo = "Other_Letter",
Lt = "Titlecase_Letter",
Lu = "Uppercase_Letter",
M = "Mark",
Mc = "Spacing_Mark",
Me = "Enclosing_Mark",
Mn = "Nonspacing_Mark",
N = "Number",
Nd = "Decimal_Number",
Nl = "Letter_Number",
No = "Other_Number",
P = "Punctuation",
Pc = "Connector_Punctuation",
Pd = "Dash_Punctuation",
Pe = "Close_Punctuation",
Pf = "Final_Punctuation",
Pi = "Initial_Punctuation",
Po = "Other_Punctuation",
Ps = "Open_Punctuation",
S = "Symbol",
Sc = "Currency_Symbol",
Sk = "Modifier_Symbol",
Sm = "Math_Symbol",
So = "Other_Symbol",
Z = "Separator",
Zl = "Line_Separator",
Zp = "Paragraph_Separator",
Zs = "Space_Separator",
Геройский привет всем любителям игры «Герои меча и магии 2»!
Рад сообщить, что свободный движок обновился до версии 0.8 (github.com)! Этот релиз был посвящен неравной борьбе за улучшение графической составляющей, которая в итоге претерпела значительные улучшения по всем фронтам:
Была поправлена логика взаимодействия с игровым окружением; уделено внимание улучшению работы музыкального сопровождения: помимо логических переходов одних звуковых тем к другим в нужные моменты, была добавлена поддержка звуковых дорожек более высокого качества и всё это вынесено и оформлено в настройках, как в оригинальной игре! В процессе улучшения находится ИИ. Переработаны алгоритмы для исключения многих логических ошибок в игре.
Значительно улучшена кодовая база проекта. И в ближайшем будущем грядут новые, еще более существенные, изменения. Так что, если вы хотели бы поучаствовать в развитии проекта - добро пожаловать к нашему костру, у вас есть возможность проявить свои геройские навыки C++.
С уважением, команда проекта fheroes2.
>>> Подробности (github.com)
Лично я готов дать 10 т.р. и те кто готов присоединится к разработке или финансированию рефакторинга пусть отписываются в этой теме указав сумму, способ связи и начисления доната.
Разработчики(получатели доната) должны дополнительно указать что они за этот донат будут делать.
Пока надо только отмечать намерения донатить и писать код и обязательно оставлять контакты, я всех оповещу кастом по форуму и сообщением на контакты когда разговор станет предметным и надо будет решать, кто и как будет собирать донаты и кому их будут в итоге выплачивать.
Контакты можно публиковать не открытыми, а в виде команды пишущей их в терминале, например:
echo FM3SQOJSGEUTGNZQFUZDKLJVHEFA====|base32 -d
Создал в организации репозитарий, предлагаю обсуждение продолжить там:
https://github.com/Kernel-Crowdfunding/New-Linux-Console
Ссылка для записи разработчиков: Developers
Ссылка для записи спонсоров: Sponsors
Мотивация:
Что имхо надо, оно же ТЗ:
Перемещено leave из job
Последняя версия Windows 10 для инсайдеров (20211) получила очередное обновление подсистемы WSL 2 (Windows Subsystem for Linux). Теперь с помощью консольных команд без дополнительного ПО можно монтировать разделы (или целые диски) в подсистему WSL, а эта файловая система будет доступна всей Windows.
Теперь необходимости в стороннем ПО для монтирования ext4 нет; кроме того, указано, что можно монтировать и другие файловые системы. Так что теперь у дуалбутчиков обе системы могут видеть друг друга.
>>> Ссылка на блог Microsoft (microsoft.com)
Color management:
Обработка, конвертация и управление коллекцией RAW-изображений
Графические редакторы
Управление фотоаппаратом с компьютера
Focus stacking, склейка панорам и снимков с большим динамическим диапазоном (HDR)
Time-lapse
Астрофото
Работа с онлайн фото-стоками
После долгих мучений поборол проблему, которая меня ужасно доставала с тех пор, как я иногда начал пользоваться Intellij IDEA. Радостные чувства по этому поводу переполняют, поэтому хочу поделиться с анонимами и гуглом.
По непонятным причинам та на ровном месте просит Raise ( https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000580110-IntelliJ-icon-constantly-in-notification-status- ). Это приводит к неприятным побочным эффектам - миганию таскбара и появлению Идеи в окне QuickSwitch.
В icewm для этого есть сабжевая опция. Но если её убрать, ничего не происходит. Но оказывается, есть другая опция, которую надо выставить в любое значение - тогда эффект появляется.
Т.е. надо установить в ~/.icewm/preferences
RequestFocusOnAppRaise=0 # 0/1
FocusRequestFlashTime=1 # [0-86400]
Установил Ubuntu 20.04.1, где тут вообще редактор изображений? Нужна одна функция - уменьшить размер, сохранить в жпег с хорошим качеством и все. Желательно на GTK, но Qt тоже сойдет.
Соучредитель и генеральный директор Paragon Software Group Константин Комаров опубликовал в рассылке Linux-Fsdevel патч с реализацией драйвера файловой системы NTFS, поддерживающего все основные операции - чтение, запись, работу с разряженными и упакованными файлами, расширенными атрибутами и восстановление данных и журнала файловой системы.
Код предоставлен под лицензией GPL и соответствует всем базовым требованиям для принятия патчей в ядро.
Пока что не решёнными являются вопросы аудита опубликованного кода и кандидатур его будущих ментейнеров.
>>> Подробности (opennet.ru)
| ← назад | следующие → |