LINUX.ORG.RU

Избранные сообщения be_nt_all

Dasel 3.0.0

Новости — Open Source
Группа Open Source

После полутора лет разработки (и почти полного переписывания кода) состоялся выпуск 3.0.0 (и более поздние версии из этой ветки) кроссплатформенной консольной утилиты и библиотеки Dasel.

Утилита предназначена для выполнения запросов, изменения и преобразования структурированных данных. Поддерживаются форматы CSV, HCL, JSON, TOML, XML и YAML (планируется добавление других форматов).

Проект написан на языке Go и распространяется по лицензии MIT.

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

>>> Подробности на GitHub

 dasel, , , ,

dataman
()

SRELL 4.069 — библиотека ECMAScript-совместимых регулярных выражений

Новости — Разработка
Группа Разработка

10 сентября состоялся выпуск 4.069 C++ библиотеки SRELL (Std::RegEx-Like Library), реализующей ECMAScript-совместимые регулярные выражения.

Основные возможности библиотеки:

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

Прошлая новость на ЛОРе

>>> Подробности на akenotsuki.com

 , , , ,

dataman
()

IDEmacs – набор конфигураций для Emacs, делающий его похожим на VSCode

Новости — Разработка
IDEmacs – набор конфигураций для Emacs, делающий его похожим на VSCode
Группа Разработка

Проект IDEmacs, основной задачей которого является подготовка пресетов настроек для emacs, делающих его похожим на популярные IDE, опубликовал первый подготовленный набор → для VSCode.

Набор включает в себя тему оформления, сочетания горячих клавиш, а также всяческие боковые меню и панели, свойственные VSCode.

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

>>> Подробности

 ,

Zhbert
()

CDE 2.5.3

Новости — Open Source
Группа Open Source

25 ноября 2025 вышла версия Common Desktop Environment 2.5.3. В основном это релиз с исправлениями различных ошибок.

Common Desktop Environment — среда рабочего стола, основанная на Motif, в основном использовалась в проприетарных операционных системах UNIX, OpenVMS. CDE разработана в The Open Group совместно с Hewlett-Packard, IBM, Novell и Sun Microsystems и основана на Visual_User_Environment (VUE) от HP.

6 августа 2012 года исходный код CDE был опубликован на SourceForge.net под лицензией GNU LGPL, за последующие годы сообществом выпущен ряд новых версий.

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

>>> Подробности

 ,

vbcnthfkmnth123
()

GLM 1.0.0 — математическая библиотека для C++

Новости — Разработка
GLM 1.0.0 — математическая библиотека для C++
Группа Разработка

24 января, после почти четырёхлетней паузы, состоялся выпуск 1.0.0 header-only SIMD-оптимизированной библиотеки для C++ GLM (OpenGL Mathematics), основанной на спецификациях GLSL (pdf) (OpenGL Shading Language).

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

>>> Подробности

 , , , ,

dataman
()

HTML: The Programming Language

Форум — Development

Я вам покушать принёс: HTML, the programming language

 , ,

ad0c
()

Как сделать свой QTableView

Форум — Development

В общем хочу поделится открыто классом QpTableView, который выводит ячейки в строке таблицы по шаблону в несколько рядов.

Небольшое видео для наглядности https://youtu.be/zgqkdXJhbpc?si=F0zMMr8oJgx69_47

По итогам работы понятно, что создавать свои виджеты на основе QAbstractItemView можно и нужно.

Но похоже придется из собирать свои виджеты в составе исходников Qt, что на самом деле не проблема (надо один раз попробовать только).

Надо сказать что на то, чтобы изучить исходный QTableView и QHeaderView и сделать свои варианты ушло 5 рабочих недель.

В основном время убило изменение ширины и высоты секций интерактивно мышкой (там отрисовка сразу идёт при перетаскивании края секции мышкой).

И ещё много ушло времени на модель выделения ячеек (selectionModel), что тоже оказалось не просто.

В общем, если кому интересно на гитхабе здесь: https://github.com/PavelDorofeev/How-to-create-own-QTableView-with-new-capabilities

 , ,

kkmspb
()

Makefile для сборки Love2d под Андроид/AppImage

Форум — Development

Сидел вот тут ковырялся, пересобирал и пердолился.
Подумал что стоит выложить, дабы другие пердолились поменьше.
Ниже описание, я его для себя писал и ещё ниже сам Makefile. Никаких изысков и красивостей. Собирает и ладно.
Кому надо под себя поправите, а кому не неадо, тому не надо.

- ИСПОЛЬЗОВАТЬ НА СВОЙ СТРАХ И РИСК, Я НЕ НЕСУ НИКАКОЙ ОТВЕТСТВЕННОСТИ
- ВСЁ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ, ЛЮБЫЕ СОМНЕНИЯ ДОЛЖНЫ ВЕСТИ
- К ОТКАЗУ ОТ ИСПОЛЬЗОВАНИЯ, НЕ ПОНИМАЕШЬ ЧТО ЭТО, НЕ ТРОГАЙ

Love Distrib

Makefile упрощающий создание готовых Love2D сборок c включением вашего приложения позволяет

  • Собрать apk файл для Android
  • Собрать love файл для всех
  • Собрать AppImage файл для Linux x86_64

Положить Makefile в корень Love2D программы и отредактировать

  • app_name=имя программы
  • description=однострочное описание

Для Android дополнительно поправить

  • android_app_version_name=версия.приложения любая
  • android_app_version_code=число целое число

Важно android_app_version_code должно иметь значение
всегда увеличивающееся на 1 при каждой новой сборке, это
требуется для того чтобы при установке на Android apk
файла, уже установленное приложение обновлялось. Иначе
установка не произойдёт с выводом ошибки или вообще без неё.

Теперь однократно нужно развернуть зависимости для Android

  • make android-depends

Предполагается что sudo настроен, нужно установить java и
прочие мелочи, на запрос пароля ввести пароль для sudo затем
будут сгенерированны два ключа подписей и предварительно пароль

  • debug.keystore
  • release.keystore
  • .android_pass

На вопросы всякие можно просто нажимать ENTER, а когда спросят
всё ли верно Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct? написать yes и снова нажать ENTER. sdkmanager
тоже спросит, Review licenses that have not been accepted (y/N)?
согласны ли вы с условиями предоставления иструментов
для Android SDK/NDK тоже написать y и нажать ENTER
Ключи и пароль можно подменить на свои готовые
(только молю бога не совать основные ЗАТРЁТСЯ МОЖЕТ БЫТЬ!)
Пусть сгенерируется всё само. Суть в том что без подписей пакетов
Android просто молча не установит apk, просто не даст установить.

А вот теперь уже можно, редактировать свой код и пересобирать

  • make lovefile просто обычный app.love
  • make android выполнить сборку app.apk, app.abb
  • make appimage выполнить сборку app.AppImage

Первый раз apk будет собираться долго, но все последующие уже быстро
так как компиляции уже не будет, а просто будут обновляться lua файлики
из проекта. Вроде всё.


Проблемы

  • make android валится с ошибкой Решения
  • Запускать make android ещё раз и ещё раз. Бывает отпускает.
  • Грохнуть java killall java (там несколько процессов может быть) и ещё раз запустить make android
  • Удалить /.love-android-build-dir и заного выполнить
    • make android-depends подготовку зависимостей
    • make android попытку сборки apk

Нельзя отменять сборку через CTRL+C это сломает всё,
придётся вышеописанный квест пройти опять, с большой долей вероятности.
Перемудрёные механизмы системы сборки для Android дают о себе знать. :3

SRC=$(shell pwd)
app_name=appname
description=app short description
##########################################################
android_app_name=$(app_name) for Android
android_app_version_name=0.1
android_app_version_code=1
android_enableJetifier=true
android_useAndroidX=true
android_app_application_id=org.$(app_name).android
android_app_orientation=portrait
#########################################################
SECRET_PASSWORD_FOR_KEYGEN=$(HOME)/.android_pass
#########################################################
android_sign_release=true
##########################################################
DEVELOPMENT_ROOT_DIR=$(HOME)/.love-android-build-dir
DEVELOPMENT_KEYS_DIR=$(HOME)/.love-android-keys-dir
##########################################################
ANDROID_SDK_ROOT_DIR=$(DEVELOPMENT_ROOT_DIR)/ANDROID-SDK/
ANDROID_LOVE_ROOT_DIR=$(DEVELOPMENT_ROOT_DIR)/LOVE-ANDROID/
APPIMAGE_LOVE_ROOT_DIR=$(DEVELOPMENT_ROOT_DIR)/APPIMAGE/
##########################################################
PROPERTIES=$(ANDROID_LOVE_ROOT_DIR)/gradle.properties

all:
	echo "make android-depends - create depends for android apk build"
	echo "make android         - build android apk/aabb pakages"
	echo "make lovefile        - create portable app.love file"
	echo "make appimage        - create portable x86_64 executable file"

android-depends:
	$(MAKE) install-love-android;
	$(MAKE) install-system-depends;
	$(MAKE) install-android-sdk-ndk;
	$(MAKE) generate-android-debug-keys;
	$(MAKE) generate-android-release-keys;

android:
	$(MAKE) generate-android-properties;
	$(MAKE) generate-application-icons;
	$(MAKE) packeges-build;
	$(MAKE) packeges-copy;
ifeq ($(android_sign_release),true)

	$(MAKE) packeges-sign-release;
else
	$(MAKE) packeges-sign-debug;
endif
	$(MAKE) packeges-sign-verify;

lovefile:
	zip -9 -r $(app_name).love . -x Makefile -x ./*.apk -x ./*.aab -x ./*.AppImage


SRC_IMAGE_ICON="NONE"
ifneq ($(wildcard $(SRC)/icon.png),)
SRC_IMAGE_ICON=$(SRC)/icon.png
DST_IMAGE_PATH=$(ANDROID_LOVE_ROOT_DIR)/app/src/main/res/drawable
endif
ifneq ($(wildcard $(SRC)/assets/icon.png),)
SRC_IMAGE_ICON=$(SRC)/assets/icon.png
DST_IMAGE_PATH=$(ANDROID_LOVE_ROOT_DIR)/app/src/main/res/drawable
endif
ifneq ($(wildcard $(SRC)/assets/images/icon.png),)
SRC_IMAGE_ICON=$(SRC)/assets/images/icon.png
DST_IMAGE_PATH=$(ANDROID_LOVE_ROOT_DIR)/app/src/main/res/drawable
endif




appimage:lovefile
	mkdir -p $(APPIMAGE_LOVE_ROOT_DIR);
ifeq ($(wildcard $(APPIMAGE_LOVE_ROOT_DIR)/love-11.5-x86_64.AppImage),)
	wget https://github.com/love2d/love/releases/download/11.5/love-11.5-x86_64.AppImage -O $(APPIMAGE_LOVE_ROOT_DIR)/love-11.5-x86_64.AppImage
	wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage  -O $(APPIMAGE_LOVE_ROOT_DIR)/appimagetool-x86_64.AppImage
endif
	cd $(APPIMAGE_LOVE_ROOT_DIR);                       \
	-rm -rd squashfs-root;                              \
	chmod +x love-11.5-x86_64.AppImage;                 \
	chmod +x appimagetool-x86_64.AppImage;              \
	./love-11.5-x86_64.AppImage --appimage-extract;     \
	cat squashfs-root/bin/love $(SRC)/$(app_name).love > squashfs-root/bin/$(app_name); \
	rm  squashfs-root/bin/love;                         \
	chmod +x squashfs-root/bin/$(app_name);             \
	sed 's/love/$(app_name)/g' -i squashfs-root/AppRun; \
	convert $(SRC_IMAGE_ICON) -resize 256x256 squashfs-root/$(app_name).png;  \
	echo ""                                   > squashfs-root/love.desktop;   \
	echo "[Desktop Entry]"                   >> squashfs-root/love.desktop;   \
	echo "Name=$(app_name)"                  >> squashfs-root/love.desktop;   \
	echo "Comment=$(description)"            >> squashfs-root/love.desktop;   \
	echo "MimeType=application/x-love-game;" >> squashfs-root/love.desktop;   \
	echo "Exec=$(app_name) %f"               >> squashfs-root/love.desktop;   \
	echo "Type=Application"                  >> squashfs-root/love.desktop;   \
	echo "Categories=Game;"                  >> squashfs-root/love.desktop;   \
	echo "Terminal=false"                    >> squashfs-root/love.desktop;   \
	echo "Icon=/$(app_name)"                 >> squashfs-root/love.desktop;   \
	echo "NoDisplay=true"                    >> squashfs-root/love.desktop;   \
	./appimagetool-x86_64.AppImage squashfs-root $(SRC)/$(app_name).AppImage;



install-love-android:
	-`git clone --recurse-submodules https://github.com/love2d/love-android/ $(ANDROID_LOVE_ROOT_DIR)`

generate-android-properties:
	echo "" > $(PROPERTIES)
	echo "app.name=$(android_app_name)" >> $(PROPERTIES)
	echo "app.version_name=$(android_app_version_name)" >> $(PROPERTIES)
	echo "app.version_code=$(android_app_version_code)" >> $(PROPERTIES)
	echo "android.enableJetifier=$(android_enableJetifier)" >> $(PROPERTIES)
	echo "android.useAndroidX=$(android_useAndroidX)" >> $(PROPERTIES)
	echo "app.application_id=$(android_app_application_id)" >> $(PROPERTIES)
	echo "app.orientation=$(android_app_orientation)" >> $(PROPERTIES)

install-system-depends:
	sudo apt install imagemagick openjdk-17-jdk openjdk-17-jre-headless sdkmanager

install-android-sdk-ndk:
	mkdir -p $(ANDROID_SDK_ROOT_DIR);                \
	export ANDROID_SDK_ROOT=$(ANDROID_SDK_ROOT_DIR); \
	sdkmanager --install "platforms;android-33";    \
	sdkmanager --install "ndk;23.2.8568313";        \
	sdkmanager --install "platform-tools;33.0.0";   \
	sdkmanager --install "build-tools;33.0.0";      \
	sdkmanager --install "cmdline-tools;latest";    \
	sdkmanager --licenses;

generate-android-debug-keys:
	mkdir -p $(DEVELOPMENT_KEYS_DIR);
ifeq ($(wildcard $(SECRET_PASSWORD_FOR_KEYGEN)),"")
	uuidgen > $(SECRET_PASSWORD_FOR_KEYGEN)
endif
ifeq ($(wildcard $(DEVELOPMENT_KEYS_DIR)/debug.keystore),"")
	keytool -genkey  \
			-v -keystore $(DEVELOPMENT_KEYS_DIR)/debug.keystore \
			-storepass:file   $(SECRET_PASSWORD_FOR_KEYGEN)     \
			-alias debug      \
			-keyalg RSA       \
			-keysize 2048     \
			-validity 100000
endif

generate-android-release-keys:
	mkdir -p $(DEVELOPMENT_KEYS_DIR);
ifeq ($(wildcard $(SECRET_PASSWORD_FOR_KEYGEN)),"")
	uuidgen > $(SECRET_PASSWORD_FOR_KEYGEN)
endif
ifeq ("$(wildcard $(DEVELOPMENT_KEYS_DIR)/release.keystore)","")
	keytool -genkey  \
			-v -keystore $(DEVELOPMENT_KEYS_DIR)/release.keystore \
			-storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN)        \
			-alias release    \
			-keyalg RSA       \
			-keysize 2048     \
			-validity 100000
endif

generate-application-icons:
ifneq ($(SRC_IMAGE_ICON),"NONE")
	convert $(SRC_IMAGE_ICON) -resize 72x72   $(DST_IMAGE_PATH)-hdpi/love.png
	convert $(SRC_IMAGE_ICON) -resize 48x48   $(DST_IMAGE_PATH)-mdpi/love.png
	convert $(SRC_IMAGE_ICON) -resize 96x96   $(DST_IMAGE_PATH)-xhdpi/love.png
	convert $(SRC_IMAGE_ICON) -resize 144x144 $(DST_IMAGE_PATH)-xxhdpi/love.png
	convert $(SRC_IMAGE_ICON) -resize 192x192 $(DST_IMAGE_PATH)-xxxhdpi/love.png
endif

packeges-build:
	rm $(SRC)/*.apk;                                                \
	rm $(SRC)/*.aab;                                                \
	rm $(SRC)/*.love;                                               \
	rm $(SRC)/*.AppImage;                                           \
	export ANDROID_SDK_ROOT=$(ANDROID_SDK_ROOT_DIR);                \
	export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64;            \
	cp /bin/python3 $(HOME)/.local/bin/python;                      \
	rm -rd $(ANDROID_LOVE_ROOT_DIR)/app/src/embed/assets;           \
	mkdir -p $(ANDROID_LOVE_ROOT_DIR)/app/src/embed/assets;         \
	cp -r $(SRC)/* $(ANDROID_LOVE_ROOT_DIR)/app/src/embed/assets;   \
	rm $(ANDROID_LOVE_ROOT_DIR)/app/src/embed/assets/Makefile;      \
	cp $(ANDROID_LOVE_ROOT_DIR)/license.txt $(ANDROID_LOVE_ROOT_DIR)/app/src/embed/assets/love-licenses.txt;\
	cd $(ANDROID_LOVE_ROOT_DIR);                                    \
	chmod +x gradlew;                                               \
	./gradlew assembleNormalRecord;                                 \
	./gradlew assembleEmbedNoRecordRelease;                         \
	./gradlew bundleEmbedNoRecordRelease;

packeges-copy:
	cp $(ANDROID_LOVE_ROOT_DIR)/app/build/outputs/apk/embedNoRecord/release/app-embed-noRecord-release-unsigned.apk $(SRC)/;
	cp $(ANDROID_LOVE_ROOT_DIR)/app/build/outputs/bundle/embedNoRecordRelease/app-embed-noRecord-release.aab $(SRC)/;
	cp $(ANDROID_LOVE_ROOT_DIR)/app/build/outputs/apk/normalRecord/release/app-normal-record-release-unsigned.apk $(SRC)/;

packeges-sign-debug:
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/debug.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN)  $(SRC)/app-embed-noRecord-release-unsigned.apk debug;
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/debug.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN)  $(SRC)/app-embed-noRecord-release.aab debug;
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/debug.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN)  $(SRC)/app-normal-record-release-unsigned.apk debug;

packeges-sign-release:
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/release.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN) $(SRC)/app-embed-noRecord-release-unsigned.apk release;
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/release.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN) $(SRC)/app-embed-noRecord-release.aab release;
	jarsigner -verbose -keystore $(DEVELOPMENT_KEYS_DIR)/release.keystore -storepass:file  $(SECRET_PASSWORD_FOR_KEYGEN) $(SRC)/app-normal-record-release-unsigned.apk release;

packeges-sign-verify:
	jarsigner -verify $(SRC)/app-embed-noRecord-release-unsigned.apk release;
	jarsigner -verify $(SRC)/app-embed-noRecord-release.aab release;
	jarsigner -verify $(SRC)/app-normal-record-release-unsigned.apk release;
.SILENT:all

 , , , ,

LINUX-ORG-RU
()

Дёргание SOшки из Love файла - обходной путь.

Форум — Development

Ну… не совсем из love файла, но около того.
В общем так, для начала сразу скажу что делать так не надо.
Но если очень хочется то можно.

В чём суть, вы например написали программу/игру на Love2D и вам вдруг ну очень хочется добавить к ней вашу библиотеку типа libcool.so в которой что-то делается и вы эту библиотеку вызываете из вашего lua кода, только вот беда. Если вы создали love файл mycoolgame.love и положили в него libcool.so ваш код не сможет загрузить библиотеку libcool.so ибо mycoolgame.love это zip архив. Ну, не получится и всё тут. Но если очень хочется то есть черезжопный метод, мы внутри нашего love файла создадим архив с нашей библиотекой и возможно дополнительными файлами, при запуске, мы монтируем этот архив и распаковываем в каталог игры и автоматически добавляем пути до распакованных файлов в cpath и path.

Например вот наша библиотека которую мы хотим распространять вместе с нашей игрой прямо в love файле.

#include <stdio.h>

#ifdef LUAJIT
#include <luajit-2.1/lua.h>
#include <luajit-2.1/lualib.h>
#include <luajit-2.1/lauxlib.h>
#else
#include <lua5.1/lua.h>
#include <lua5.1/lualib.h>
#include <lua5.1/lauxlib.h>
#endif

int example_c_function(lua_State* L)
{
    int a = lua_tointeger(L,1);
    a+=a;
    lua_pushnumber(L,a);
    lua_pushstring(L,"hello from c");
    return 2;
}

int luaopen_lib(lua_State* L)
{
    static const struct luaL_Reg nativeFuncLib [] =
    {
         {"example_c_function", example_c_function},
         {NULL, NULL}
    };
    luaL_register(L, "lib", nativeFuncLib);
    return 1;
}

Соберём её

gcc -DLUAJIT=1 main.c `pkg-config --libs --cflags luajit` --shared -o lib.so

Аахивируем её

mkdir libs
cp lib.so libs/lib.so
zip -r9 libs.zip libs

А вот собственно сама суть и сам механизм распаковки и импорта путей.

function autoreq(zip)
    if not zip then
       print("[autoreq] failed get zip archive for unpack, argument is 'nil'")
       return false;
    end
    local function unpack(dirname,mount_point,base)
        local items = love.filesystem.getDirectoryItems(mount_point)
        if items then
            for _,val in pairs(items) do
                local path = dirname..'/'..val;
                local path_mount = mount_point..'/'..val;
                if love.filesystem.getInfo(path_mount,'directory') then
                   package.path  = package.path  ..';'..base..'/'..path..'/?.lua;';
                   package.cpath = package.cpath ..';'..base..'/'..path..'/?.so;';
                   love.filesystem.createDirectory(path)
                   unpack(path,path_mount,base)
                 elseif love.filesystem.getInfo(path_mount,'file')then
                        print("[autoreq] unpack -> "..val)
                        love.filesystem.write(path,love.filesystem.read(path_mount));
                else
                   print("[autoreq] ok -> "..val)
                end
            end
        end
    end
    local base = love.filesystem.getSaveDirectory();
    print("[autoreq] check depends in '"..base.."'")
    local dirname = "libs"
    local mount_point = "_autoreq_libs_"
    local dir = love.filesystem.createDirectory(dirname)
    local dir = love.filesystem.createDirectory(mount_point)
    data, err = love.filesystem.newFileData(zip)
    if not data then
       print("[autoreq] failed get zip archive for unpack -> '"..zip.."'")
       return false;
    end
    local success,msg = love.filesystem.mount(data,mount_point)
    unpack(dirname,mount_point,base);
    love.filesystem.setRequirePath ( package.path  );
    love.filesystem.setCRequirePath( package.cpath );
    local success,msg = love.filesystem.unmount(data);
    love.filesystem.remove(mount_point);
    print("[autoreq] all done okey")
    return true;
end

autoreq("libs.zip"); -- вызываем распаковку архива с библиотекой и импорта путей
require('lib'); -- вызываем нашу библиотеку

function love.load()
print(lib.example_c_function()) -- вызываем функцию из неё
end

Создаём love файл с нашей программой и её зависимостями

zip -r9 coolgame.love  main.lua libs.zip

Запускаем

love coolgame.love 
[autoreq] check depends in '/home/dron/.local/share/love/coolgame'
[autoreq] unpack -> lib.so
[autoreq] all done okey
0	hello from c

Всё работает, наша soшка может распространяться в обычном love файле. Будет создана такая структура каталогов. В автоматическом каталоге игры.

dron@gnu:~/.local/share/love$ tree 
.
└── coolgame
    └── libs
        └── libs
            └── lib.so

4 directories, 1 file
dron@gnu:~/.local/share/love$ 

Ну вот собственно и всё. На деле можно в lib.zip насовать произвольные файлы, с произвольными каталогами, например выполнить сборку openssl/luasec/luasocket

luarocks --tree `pwd`/luasec install openssl
luarocks --tree `pwd`/luasec install luasec
zip -9 -r libs.zip luasec -x 'luasec/lib/luarocks*'

И получившийся libs.zip просто добавить в свой love файл тем самым получив всё что нужно для работы с https в вашей программе. Я так и сделал в своей проверялке новостей например. Работать будет всё абсолютно прозрачно, ничего в коде учитывать и менять не надо. В том и прелесть. Ну разве что один раз вызвать autoreq('libs.zip') и всё.

Да, теряется смысл в переносимости love файлов ведь теперь там платформоспецифичные библиотеки таскаются. Но это просто вариант таскания с собой soшки если уж надо, но без всяких appimage упаковок и прочего, по иному дёрнуть внешнюю библиотеку из своей поставки из архива, просто никак нельзя. Но порой вот надо бывает. Я голову ломал довольно долго если честно пока не допёрло. Может кому пригодится.

Вроде всё. Досвиданья.

 , , , ,

LINUX-ORG-RU
()

CadZinho 0.3

Новости — Open Source
CadZinho 0.3
Группа Open Source

А вы не были в Бразилии, где в лесах не очень много диких САПР? Они к-а-а-к нарисуют на плоскости (пока)!

Но это не важно, ведь дон Ezequiel Rabelo de Aguiar приручил CadZinho с помощью языка C, лёгкой IMGUI-библиотеки Nuklear, SDL 2.0 , OpenGL, Lua и лицензии MIT.


Список изменений:

  • улучшен интерфейс;
  • добавлена возможность локализации интерфейса;
  • портирование на Emscripten.

Ссылки:

>>> Подробности

 , , , ,

dataman
()

Интерпретатор GNU APL под Termux (ARM)

Форум — Development

Всем привет. Простите меня за эту относительно мусорную тему. Интересно вот, есть где-нибудь скомпиленый бинарник интерпретатора языка APL под архитектуру ARM? А то под Termux ./configure и make никак никогда не пашут.

 , , , ,

projectorist
()

OpenToonz 1.7.*

Новости — Open Source
Группа Open Source

После более года разработки состоялись выпуски 1.7 и 1.7.1 программы создания двумерных анимаций OpenToonz.

Краткий список изменений:

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

>>> Подробности

 , , ,

dataman
()

fmt 10.0.0

Новости — Open Source
Группа Open Source

После восьми месяцев разработки состоялся выпуск 10.0.0 библиотеки форматирования данных fmt — быстрой и безопасной альтернативы stdio и iostreams для C++.

#include <fmt/color.h>

int main() {
    fmt::print(fmt::emphasis::bold | fg(fmt::color::red),
           "Elapsed time: {0:.2f} seconds", 1.23);
}

Список изменений:

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

>>> Подробности

 , ,

dataman
()

FTXUI 4.1.1 - библиотека в функциональном стиле для создания консольных приложений

Новости — Open Source
FTXUI 4.1.1 - библиотека в функциональном стиле для создания консольных приложений
Группа Open Source

После более трёх месяцев разработки состоялся выпуск 4.1.1 кроссплатформенной библиотеки для C++ (стандарт C++17) FTXUI (Functional Terminal (X) User Interface), предназначенной для создания приложений с текстовым интерфейсом и распространяемой по лицензии MIT.

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

>>> Подробности

 , , , ,

dataman
()

FINAL CUT 0.9.0 - библиотека для создания консольных приложений

Новости — Open Source
Группа Open Source

22 мая, после более полутора лет разработки, состоялся выпуск 0.9.0 C++ библиотеки FINAL CUT, предназначенной для создания приложений с текстовым интерфейсом, не зависящей от библиотек ncurses, termbox или подобных, и распространяемой по лицензии LGPL-3.0.

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

>>> Подробности

 , , , ,

dataman
()

После года молчания, новая версия редактора TEA (50.1.0)

Новости — Open Source
Группа Open Source

Несмотря на добавление одной только циферки к номеру версии, изменений в популярном текстовом редакторе много. Некоторые незримы – это исправления для старых и новых Clang’ов, а также вывод ряда зависимостей в разряд отключенных по умолчанию (aspell, qml, libpoppler, djvuapi) при сборке с meson и cmake. Также, в ходе безуспешной возни разработчика с манускриптом Войнича, TEA обзавелся новыми функциями сортировки, фильтрации и анализа текста. Например, можно фильтровать строки по образцу с заданными повторяющимися символами, что годно не токмо для упомянутого манускрипта, но и при расшифровке прочих каверзных текстов, язык коих заранее неведом.

>>> Подробности

 , ,

roxton
()

Broot v1.0.2 (консольная утилита для поиска и манипуляции с файлами)

Новости — Open Source
Broot v1.0.2 (консольная утилита для поиска и манипуляции с файлами)
Группа Open Source

Консольный файловый менеджер, написанный на языке rust.

Особенности:

  • Предприняты меры для комфортного просмотра больших каталогов.
  • Поиск файлов и каталогов (используется нечеткий поиск).
  • Манипуляция файлами.
  • Есть многопанельный режим.
  • Предварительный просмотр файлов.
  • Просмотр занимаемого места.

Лицензия: MIT
Установленный размер: 5,46 MiB

В зависимостях gcc-libs и zlib.

>>> Подробности

 , ,

greenman
()

fheroes2 0.8.2

Новости — Игры
Группа Игры

Привет всем любителям игры «Герои меча и магии 2»!

Рады сообщить Вам, что свободный движок fheroes2 обновился до версии 0.8.2, которая является небольшим, но уверенным шагом к версии 0.9.

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

>>> Подробности на нашей странице.

 , , ,

sirDranik
()

DuploQ - графический фронтенд для Duplo (детектор дублированного кода)

Новости — Разработка
DuploQ - графический фронтенд для Duplo (детектор дублированного кода)
Группа Разработка

DuploQ представляет собой графический интерфейс к консольной утилите Duplo (https://github.com/dlidstrom/Duplo), предназначенной для поиска дублированного кода в исходных файлах (т.н. «копипаста»).

Утилита Duplo поддерживает несколько языков программирования: C, C++, Java, JavaScript, C#, но также может быть использована для поиска копий в любых текстовых файлах. Для указанных языков Duplo старается игнорировать макросы, комментарии, пустые строки и пробелы, выдавая пользователю максимально «чистые» результаты.

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

DuploQ является мультиплатформенным приложением, написанным с помощью фреймвока Qt версии 5. В настоящее время как минимум поддерживаются следующие платформы (при условии установленной Qt версии не ниже 5.10):

  • Microsoft Windows 10
  • Ubuntu Linux
  • Fedora Linux

Также высока вероятность работы DuploQ на иных платформах, которые официально поддерживаются Qt Company.

На странице релиза DuploQ (https://github.com/duploq/duploq/releases) можно скачать как исходные коды, так и бинарные пакеты для указанных выше систем (64 bit only).

DuploQ + Duplo лицензированы под GPL-лицензией.

>>> Подробности

 , duplo, , ,

ii-system
()

Вышла CinelerraGG 2020-08

Новости — Open Source
Группа Open Source

CinelerraGG — форк нелинейного видеоредактора Cinelerra с наиболее частыми релизами (раз в месяц). Из полезного в этом выпуске:

  • Добавлены горячие клавиши для сохранения сессии (CTRL-S) и отмены (CTRL-Z), в добавление к уже существующим s и z.
  • Новый тип ключевых кадров — bump keyframes. Позволяют создавать резко изменяющиеся параметры, например затухания или скорости.
  • При использовании кривой скорости (перемещение ключевого кадра мышкой с зажатой левой кнопкой) наглядно отрисовывается будущая длина дорожки
  • Языки можно переключать через настройки, а не только через переменные окружения.
  • Улучшения в функции выравнивания по таймкоду.
  • Новые плагины из ffmpeg: minterpolate (смена fps, медленный), allrgb (все цвета из возможных в RGB), allyuv (все цвета из возможных в YUV), cellauto, pullup (обратный telecine), selectivecolor (делает то же, что одноимённый фильтр в Фотошопе), tonemap

Известные баги:

  • Если выделить на таймлайне область, где есть несколько ключевых кадров (например, затухания), но оставить ещё несколько вне зоны выделения — то при выборе пункта «Удалить ключевые кадры» и включённой опции «Ключевые кадры сопровождают правку» ключевые кадры съедут. Временное решение: отключить опцию «Ключевые кадры сопровождают правку» на время удаления ключевых кадров в выделенной области.

    Update: баг оперативно исправили в git.


Bugzilla проекта

Мой Слакбилд с патчами

RPM для Rosa 64-bit

Мануал на англ, 659 стр, сделано в LaTex

PS: исходники в git, но можно и в архиве найти тут

>>> Подробности

 ,

Andrew-R
()