Так а какая сложность использовать meson? Для меня лично разницы нет, что собирать, у меня в системе под два десятка пакетов, которые собираются вручную))
Разницы между r2ghidra и rzghidra почти нет
Это спорно, лично у меня на нескольких файлах rz-ghidra показал более правильный вывод и более близкий к исходнику.
pentestit-team проблема в том, что radare2 сейчас не развивается, многие перешли на rizin. iaito это форк cutter без новых улучшений, в котором нет главного разработчика cutter, и не понятно кем он развивается, пока это только форк с багфиксами под radare2. Разработчик cutter и разработчики radare, форкнули radare2 в новый проект rizin ( rizin.re ), который сейчас развивается, и версии тулзов более тесно интегрированы с cutter. Тоже вначале использовал radare2 и iaito, но перешел на rizin, и как работает тулкит мне больше понравилось. Собирается и ставится все так же 1 в 1.
Почему r2ghidra и iaito? Основные разработчики форкнули проект в rizin, и основной разработчик cutter там. iaito по функционалу уступает cutter и хуже интеграция с тулзами. cutter лучше интегрирован с rz-ghidra и rizin, на выходе более удобный для чтения декомпилированный код с подсветкой синтаксиса.
vaniacer там можно до конца не дочитывать, так как сразу бросается гавнокод стайл и антипатерн, инкремент не желательно в шаблоне использовать, от выстрела себе в ногу какраз все правильно shellcheck защитил, сначала делается инкремент ((i++)), а дальше в шаблон подставляется ${i}, а если совсем по хорошему делать, то в пути к файлам желательно использовать ${i:?}.
Что автор не понимает поведение BASH это лично его безграмотность, а не косяк shellchecker.
ShellCheck правильно ругается, не дочитав статью мне сразу было понятно, что там нужны кавычки или присвоить значение переменной, даже если использовать значение переменной, то в имени файла нужны кавычки, а теперь поищите в интернете ответ зачем там нужны кавычки. ShellCheck как раз защищает от unpredictable behavior и чтобы вы в своих скриптах нечаянно не сделали, что типа rm -fr /. У меня 0.7.2 и делает такое предупреждение.
Скучно как-то это все. Вот если бы вы сделали генерацию PNG чисто на BASH то было бы интересно. 4 года назад была надобность генерировать PNG изображения на лету в JS и оказалось PNG формат довольно прост, заголовки, контрольные суммы и матрица RGBA сжатая zlib, самое сложное это реализовать adler32, crc32 и Zlib Deflate. В итоге получилось ЭТО. Самое сложное это сделать zlib deflate на bash, остальное реализуется очень просто и по идеи силами языка bash. По ссылке ниже есть как это можно сделать unix.stackexchange.com/questions/22834/how-to-uncompress-zlib-data-in-unix
Передайте разработчикам JetBrains Toolbox.
После обновления Clion на Linux у меня не тригернулось обновление ярлыков, даже после перезагрузки. Вероятно они после обновления ярлыков, не тригерят обновление кэша ярлыков. Пусть проверят и если такого функционала нет, пусть добавят выполнение строчки ниже после обновления desktop файлов. Тут заметил, что не понятная тормозящая анимация в KDE при закрытия и вытягивание окна в угол при закрытии у меня во всех JAVA приложениях, в обычных приложениях такого нет. Видимо это делает java swing т.к. в настройках KDE не такой анимации.
my2coins люблю на свежем софте работать, по мне он обычно стабильный, и даже если что-то ломается, то быстро можно патчи через git подтянуть. Например сегодня собрал mesa-21.1.0-rc2, с исходников из архива на сайте не собиралось, подтянул патч собрал, как итог плюс к производительности на видеокарте amd, в другом приложении maintainer олень например сломал пакет в archlinux, и сразу пустил без теста 3 приложения, у всех coredump при запуске, отправил багрепорт ему, и скачал патчи, собрал их у себя, все работает.
my2coins не только мне, а еще тысячам людей, метод не мною придуман. Я такого уже как лет 10 не помню, раньше да все ломалось при замене. Разработчики не дураки, чтобы таблицу экспорта функций портить. Любая библиотека имеет таблицу экспорта функций и чаще всего обратную совместимость со старыми версиями. Кучу библиотек системных взаимозаменяемы, например libjpeg, libjpeg-turbo, mozjpeg — можно поставить любую из трех и ничего не сломается. На моей памяти практически не было, чтобы прям жестко что-то ломали без возможности исправить. Наоборот при использовании libstdc++.so идущим с пакетом чаще всего происходит то, что он там чего-то не может найти в libstdc++.so, например версия glibc отличается, и приложения криво работают, при этом сыпет кучу ошибок в консоль. Стоит удалить libstdc++.so* как все ошибки уходят и в приложении все функции начинают нормально работать. В этом и отличие меня и вас, вы используете Centos и видимо не много собираете пакетов из исходников, а у меня Arch Linux, даже если что-то сломается, то можно быстро пересобрать, но такое довольно редко. На будущее если хотите что-то собрать из исходников, то ищите пакеты aur.archlinux.org, смотрите исходники пакетов в arch archlinux.org/packages/core/x86_64/gcc сбоку есть ссылка source files, посмотрите пакеты gentoo packages.gentoo.org/packages/sys-devel/gcc и откройте последнюю версию Linux From Stratch www.linuxfromscratch.org Ваша статья довольно низкого уровня, и все ваши страдания уже давно решены и описано решение по выше указанным ссылкам.
my2coins это тоже не проблема в большинстве случаев, многие библиотеки можно подменить на новые, в большинстве случаев API у них не меняется. К примеру для для поддержки API ncurses-5, если у вас стоит ncurses-6 есть такая штука aur.archlinux.org/packages/ncurses5-compat-libs
К примеру системный zlib у меня заменен на более быстрый zlib-ng.
На моей памяти обычно вся не совместимость решается просто удалением libstdc++.so libstdc++.so.6 libncurses++.so* libncurses.so* идущие в составе пакета, дальше приложение при запуске не находит их и берет просто системные.
my2coins работает aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=cuda-11.0
Как зависимость стоит системный gcc 10.2 без указания 9й версии. К примеру тут наоборот gcc 8 aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=cuda-10.2
Вы вероятно используете инсталер под дистрибутив, отсюда не совместимость, у нас же обычно все пакеты с убунты берутся и распаковываются, и подменяются библиотеки на системные. К примеру если удалить libstdc++.so libstdc++.so.6 идущие с пакетом от другого дистрибутива, то решается большая часть глюков, и приложения подхватываются системную библиотеку. Например я их удаляю в Matlab и Intel Quartus.
А у меня AMD видео и процессор, и наоборот llvm и gcc новые дают хорошую прибавку скорости.
Oakum в Arch Linux все нормально, собираются нормально 5.11.15, 5.11.16, сейчас перешел на 5.12-rc8 все нормально пашет и собирается. Ядро, mesa у меня каждый релиз собираются в ручную т.к. видео карта у меня AMD новой серии и с каждым релизом улучшается ее поддержка. Все собирается с оптимизацией и патчами под zen2. Отклик системы значительно выше, чем дистрибутивных ядер и mesa. Вот только что собрал mesa 21.0.3 вышедшую час назад, все хорошо. Если что-то ломается, проблема скорее всего не в компиляторе, а просто компилятор собран криво. В компиляторах есть специально тесты, чтобы ничего не ломать с новым релизом.
Полумертвый дитрибутив, поддержку которого вот-вот прекратят, извращения с натягиванием совы на глобус, когда в нормальных дистрибутивах можно использовать gcc 10-11 со всеми его преимуществами и багфиксами, и поддержкой новых процессоров.
Файл использует camelSpace стиль, но не везде, придерживаться одного стиля не учили в именах переменных? Это является хорошим тоном в программировании. Обработку исключений обрабатывать в shell скриптах не учили? sips? Это же тулза из mac os, для linux кросплатформенности есть imagemagick. Одну и туже команду запускать только ради получения отдельно ширины и высоты не разумно, правильнее положить выполнение команды в переменную, и потом из нее уже извлекать. folder вы серьезно? Термин folder не применим к POSIX системам. Это чисто Windows замута!
Вот мой вариант только может еще рекурсивно обрабатывать директории. И если заменить -resize "${maxWidth}x" на -resize "${maxWidth}@" то можно делать ресайз наибольшей стороны, а не только по ширине.
#!/bin/bash
imgsDirectory="."
destDirectory="./new"
quality=75
maxWidth="2000"
if [ ! -d "${imgsDirectory}" ]; then
echo "Image directory: ${imgsDirectory} not exist!"
exit 1
fi
if [ -d "${destDirectory}" ]; then
rm -rf "${destDirectory}"
fi
# Making directory tree. Making only not empty directories.
mkdir -p "${destDirectory}"
find "${imgsDirectory}" -type d -not -empty | cut -c$((${#imgsDirectory} + 2))- | xargs -I {} mkdir -p "${destDirectory}/{}"
# Image files processing.
IFS=$'\n'
cnt=0
imageFiles=$(find "${imgsDirectory}" -type f -regextype egrep -iregex ".*\.(jpe{0,1}g|heic)$" | cut -c$((${#imgsDirectory} + 2))-)
for image in $imageFiles; do
((cnt++))
imageData=$(magick identify -quiet "${imgsDirectory}/${image}" | grep -ioP -m1 "\w+\s+[0-9]+x[0-9]+" | head -n1)
imageType=$(echo "${imageData}" | cut -f1 -d\ )
imageWidth=$(echo "${imageData}" | cut -f2 -d\ | cut -f1 -dx)
imageHeight=$(echo "${imageData}" | cut -f2 -d\ | cut -f2 -dx)
if [[ -z ${imageWidth} || -z ${imageHeight} ]]; then
echo -e "[${cnt}] Skiping image ${image} - \E[1m\E[31mBROKEN IMAGE\E[0m"
continue
fi
if echo "${imageType}" | grep -iq "heic"; then
imageName=$(echo "${image}" | sed -n "s/.\w*$/.jpg/I;p")
else
imageName=${image}
fi
if [[ "${imageWidth}" -gt "${maxWidth}" && $((imageWidth / imageHeight)) -lt 2 ]]; then
magick "${imgsDirectory}/${image}" -quiet -resize "${maxWidth}x" -quality "${quality}" "${destDirectory}/${imageName}"
touch -r "${imgsDirectory}/${image}" "${destDirectory}/${imageName}"
echo -e "[${cnt}] Resizing Image ${image} \E[1m\E[33m${imageWidth} → ${maxWidth}\E[0m - \E[1m\E[32mSUCCESS\E[0m"
fi
done
# Removing empty directories in destionation. Directories which can be contain bad image files.
find "${destDirectory}" -type d -empty -delete
echo -e "\nReplacing original images...\n"
#rsync -a "${destDirectory}/" "${imgsDirectory}"
rm -rf "${destDirectory}"
# vim:set ts=2 sw=2 et:
Это спорно, лично у меня на нескольких файлах rz-ghidra показал более правильный вывод и более близкий к исходнику.
Вот на заметку www.linux.org.ru/news/development/16060831
Что автор не понимает поведение BASH это лично его безграмотность, а не косяк shellchecker.
После обновления Clion на Linux у меня не тригернулось обновление ярлыков, даже после перезагрузки. Вероятно они после обновления ярлыков, не тригерят обновление кэша ярлыков. Пусть проверят и если такого функционала нет, пусть добавят выполнение строчки ниже после обновления desktop файлов. Тут заметил, что не понятная тормозящая анимация в KDE при закрытия и вытягивание окна в угол при закрытии у меня во всех JAVA приложениях, в обычных приложениях такого нет. Видимо это делает java swing т.к. в настройках KDE не такой анимации.
К примеру системный zlib у меня заменен на более быстрый zlib-ng.
На моей памяти обычно вся не совместимость решается просто удалением libstdc++.so libstdc++.so.6 libncurses++.so* libncurses.so* идущие в составе пакета, дальше приложение при запуске не находит их и берет просто системные.
Как зависимость стоит системный gcc 10.2 без указания 9й версии. К примеру тут наоборот gcc 8 aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=cuda-10.2
Вы вероятно используете инсталер под дистрибутив, отсюда не совместимость, у нас же обычно все пакеты с убунты берутся и распаковываются, и подменяются библиотеки на системные. К примеру если удалить libstdc++.so libstdc++.so.6 идущие с пакетом от другого дистрибутива, то решается большая часть глюков, и приложения подхватываются системную библиотеку. Например я их удаляю в Matlab и Intel Quartus.
А у меня AMD видео и процессор, и наоборот llvm и gcc новые дают хорошую прибавку скорости.
Вместо:
Надо использовать такую команду:
Про ключ -e у echo видимо тоже?
Файл использует camelSpace стиль, но не везде, придерживаться одного стиля не учили в именах переменных? Это является хорошим тоном в программировании. Обработку исключений обрабатывать в shell скриптах не учили? sips? Это же тулза из mac os, для linux кросплатформенности есть imagemagick. Одну и туже команду запускать только ради получения отдельно ширины и высоты не разумно, правильнее положить выполнение команды в переменную, и потом из нее уже извлекать. folder вы серьезно? Термин folder не применим к POSIX системам. Это чисто Windows замута!
Вот мой вариант только может еще рекурсивно обрабатывать директории. И если заменить -resize "${maxWidth}x" на -resize "${maxWidth}@" то можно делать ресайз наибольшей стороны, а не только по ширине.