LINUX.ORG.RU

Сообщения Taetricus

 

Распространение бинарных библиотек с исходными кодами

Форум — Development

У меня есть программа распространяемая под GPL3. При сборке программа собирается не в бинарник а в самодостаточный пакет. Я хочу добавить в программу 2 сишные библиотеки - libzstd (GPL2 и BSD), libcurl(чёрт пойми какая лицензия), библиотеки линкуются динамически (dlfcn.h), подразумевается что уже скомпилированные библиотеки будут добавлены в пакет. Могу ли я распространять свою программу с уже скомпилированными библиотеками?

 ,

Taetricus
()

Несколько вопросов по лицензиям

Форум — Development

Разработал свой яп и компилятор к нему. Хочется распространять компилятор на условиях лицензии gpl 3. Компилятор при работе вызывает утилиту с лицензией bsd, насколько я понимаю это не нарушает gpl 3? Так же хочется узнать, под какой лицензией мне распространять стандартную библиотеку, чтобы при разработке программ на моем языке, при использовании стандартной библиотеки, программу можно было распространять под любой лицензией?

 ,

Taetricus
()

Я ждал этого надцать лет и вот он случилось.

Форум — Security

В стоковое ядро арча включили apparmor, а в репы добавили пакет apparmor с утилитами и демонов. Самое обидное, что на официальном сайте об это ни слова, вся инфа только на арч вики.

 

Taetricus
()

Перестала работать клавиатура

Форум — General

Обновил арч - перестала работать клавиатура(мышь работает). Клавиатура и мышь - usb. В логах абсолютно ничего, реагирует только на fn+(f1-f12). Думаю не буду разбираться, всё равно собирался на opensuse переходить. Скачал opensuse tumbleweed запускаю установку, а там ровно та-же картина, при чём клавиатура не работает ни в графическом ни в текстовом режиме. Скачал федору 28 - всё работает, пока установил так как сейчас срочно нужен компьютер, но оставаться на федоре не хочу. Ядра: арч - 4.18, opensuse - 4.17, федора - 4.17.

 

Taetricus
()

Оптимизация в clang

Форум — Development

Есть файл foo.c:

#include <stdio.h>

static inline void foo(){
	static _Bool firstTime = 1;
	if (firstTime){
		puts("First time!");
		firstTime = 0;
	} else {
		puts("Once again.");
	}
}

int main(){
	foo();
	foo();
	return 0;
}
после выполнения clang -O3 -S -emit-llvm foo.c -o foo.ll, создаётся файл foo.ll:
; ModuleID = 'foo.c'
source_filename = "foo.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@foo.firstTime = internal unnamed_addr global i1 false, align 1
@.str = private unnamed_addr constant [12 x i8] c"First time!\00", align 1
@.str.1 = private unnamed_addr constant [12 x i8] c"Once again.\00", align 1

; Function Attrs: nounwind sspstrong uwtable
define i32 @main() local_unnamed_addr #0 {
  %1 = load i1, i1* @foo.firstTime, align 1
  br i1 %1, label %4, label %2

; <label>:2:                                      ; preds = %0
  %3 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) #2
  store i1 true, i1* @foo.firstTime, align 1
  br label %9

; <label>:4:                                      ; preds = %0
  %5 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #2
  %6 = load i1, i1* @foo.firstTime, align 1
  br i1 %6, label %9, label %7

; <label>:7:                                      ; preds = %4
  %8 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) #2
  store i1 true, i1* @foo.firstTime, align 1
  br label %11

; <label>:9:                                      ; preds = %2, %4
  %10 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0)) #2
  br label %11

; <label>:11:                                     ; preds = %7, %9
  ret i32 0
}

; Function Attrs: nounwind
declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #1

attributes #0 = { nounwind sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind }

!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!"clang version 6.0.0 (tags/RELEASE_600/final)"}
Как сделать так чтобы, в файле foo.ll было что-то вроде следующего:
; ModuleID = 'foo.c'
source_filename = "foo.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@.str = private unnamed_addr constant [12 x i8] c"First time!\00", align 1
@.str.1 = private unnamed_addr constant [12 x i8] c"Once again.\00", align 1

; Function Attrs: nounwind sspstrong uwtable
define i32 @main() local_unnamed_addr #0 {
  %1 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
  %2 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
  ret i32 0
}

; Function Attrs: nounwind
declare i32 @puts(i8* nocapture readonly) local_unnamed_addr #1

attributes #0 = { nounwind sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }

!llvm.module.flags = !{!0, !1, !2}
!llvm.ident = !{!3}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!"clang version 6.0.0 (tags/RELEASE_600/final)"}

 , ,

Taetricus
()

linux на f2fs

Форум — General

Покупаю компьютер, завтра должен приехать. Место на диске использую не много, посмотрел цены на ssd и на hdd и решил, что лучше куплю 120 gb ssd. Сейчас сижу и думаю какую файловую систему выбрать, сейчас использую ext4 но насколько я знаю f2fs специально разработана для flash памяти. Если смысл ставить систему на f2fs. Может уже у кого стоит система на f2fs? Поделитесь опытом стоит ли оно того.

 ,

Taetricus
()

Не работает ассемблерная вставка

Форум — Development

Пишу на go однин модуль, задачу которую будет решать модуль - ресурсоёмка, предположительно на решение задачи будет уходить несколько часов, а то и дней, поэтому крайне важно сделать модуль максимально производительным. Сама задача неплохо векторизируется и распаралеливается, для векторизации использую функции на си с ассемблерными вставками. Ни разу не использовал связку c+asm, нагуглил как пользоваться и написал функцию на си, но ассемблерная вставка в функции не работает, вначале думал, что в вставке ошибка, решил посмотреть как вставка изменяют переменную с которой работает и просто вывел её через printf, после этого всё начало работать как положено, убираю printf и всё опять перестаёт работать. С printf работает даже если он не выводит никакой переменной. Прошу помощи с решением этой задачи, вот код:

#include <stdint.h>
__attribute__((always_inline)) inline uint32_t foo(int size, void *data1, void *data2){
	uint32_t tmpSum[4] __attribute__ ((aligned (16))) = {0, 0, 0, 0};
	uint32_t sum = 0;
	uint64_t offset = 0;
 	for (; size - offset >= 16; offset += 16){
		asm (	"movups (%0), %%xmm1\n"
			"pmulhuw (%1), %%xmm1\n"
			"movdqa %%xmm1, %%xmm2\n"
			"pxor %%xmm3, %%xmm3\n"
			"punpcklwd %%xmm3, %%xmm1\n"
			"punpckhwd %%xmm3, %%xmm2\n"
			"paddd %%xmm2, %%xmm1\n"
			"paddd (%2), %%xmm1\n"
			"movdqa %%xmm1, (%2)" : : "r" (data1 + offset), "r" (data2 + offset), "r" (tmpSum)
 		);
		//printf вставлял сюда
 	};
	for (;offset != size; offset += 2){
		sum += (uint32_t)(*(uint16_t *)(data1+offset)) * (uint32_t)(*(uint16_t *)(data2+offset));
 	};
	sum = sum >> 16;
	sum += tmpSum[0] + tmpSum[1] + tmpSum[2] + tmpSum[3];
	return sum;
}

 , , ,

Taetricus
()

Есть ли такой алгоритм?

Форум — Development

Если ли такой алгоритм, который позволяет искать некий элемент в таблице, со скоростью независящей от количества записей в таблице?

Пример: https://www.linux.org.ru/forum/development/12692268?cid=12692378 (комментарий) (Тег субд потому, что возможно какая нибудь субд такое умеет)

 ,

Taetricus
()

Возникла интересная идея веб сайта...

Форум — General

Здравствуйте. Посетила идея интересного сайта, решил попробовать воплотить идею в жизнь. В сетевых технологиях - я чуть лучше чем полный ноль, тратить время на изучение php, mysql, js и т.д. нет смысла - идея может и не взлететь, поэтому возникло пару вопросов:

  • Есть ли возможность на хостинг залить бинарник (писать буду скорее всего на Haskell) и чтобы при обращении к какому либо html файлу(html немного знаю), эта программа генерировала этот файл? (Я так понял это называется CGI, но не совсем уверен).
  • Если ответ на первый пункт - да, то как реализовать возможность запоминать автоматизированных пользователей, после долгого отсутствия на сайте?

 , , ,

Taetricus
()

Небольшая история.

Форум — Talks

Долгое время сидел на Arch + Gnome 3, несмотря на то, что по большей части мне gnome 3 нравится, но от громоздких элементов и pulseaudio я не в восторге, со временем «не в восторге» превратилось в «раздражает», масло в огонь добавили ещё следующие вещи: после выхода нового гнома, половина расширений для шела отваливается (а недавно как раз вышел 3.18 и спустя неделю после выхода только одно расширение обновилось), в nautilus не хватает нужных мне настроек, в последнее время в гноме появились мелкие глюки. Я решил снести gnome и поставить KDE. В начале я решил посмотреть портировали ли dolphin на 5-е кеды (считаю dolphin лучшим файловым менеджером и единственным который полностью меня устраивает, без него кеды - не кеды), портировали - значит можно ставить. Поставил, за час 10 крэшей - удалил. В арче уже kde4 нормально не поставить, решил посмотреть на дистрибутивы где ещё нормально можно с 4-ми кедами работать, выбрал 4 дистрибутива Debian 8.2, Mint 17.2, OpenSUSE 13.2, Mageia 5. Поскольку Mageia вроде как основана на mandriva (не помню в каком году ставил, но не очень понравилась), а Mint и Debian deb-based (были не раз проблемы именно с deb-based дистрибутивами), решил первым попробовать OpenSUSE.

Скачал OpenSUSE net-installer, поставил базовую систему без де, но добавил yast-control-center-qt, пытаюсь запустить yast с qt интерфейсом, выскакивает консольный вариант (который крайне неудобен), помню както сталкивался с такой проблемой и както её решил, но сейчас решить эту проблему не удалось, openSUSE пронизан yast'от везде и всюду, я как-то пытался настроить openSUSE как другие дистрибутивы (правкой конфигов без Yast), попортил систему - без yast на openSUSE жизни нет.

Второй претендент Mint, установщик ужасен, но установил систему без проблем. Почему-то вместо kdm используется mdm, мягко говоря - странный выбор. В системе gtk3 везде и всюду, я не тулкитофоб, но неприятный осадок на душе есть. В начале час удалял ненужные мне пакеты, затем увидел, что в Mint используется upstart, из всех init'ов для меня этот самый неудобный. В целом Mint не плох, но я подумал посмотрю debian, всё равно оба deb-based в обоих случаях kde4, но в debian есть systemd.

Скачал debian net-installer, выбрал expert Graphical install, установщик не плох, но до OpenSUSE'чного не дотягивает. Поставил только базовые пакеты без графики. После первого запуска системы начал устанавливать kde, после pacman очень не понравилось, что aptitude не предлагает выбрать из нескольких возможных вариантов нужный мне(phonon-gstreamer vs phonon-vlc, akonadi-mysql vs akonadi-sqlite, xorg-video-all vs xorg-video-intel, ...). Установил kde, запускаю - нет звука и выскакивает сообщение о том, что не работает управление питанием. Неужили aptitude не поставил нужные пакеты для управления питанием, смотрю все пакеты стоят, может какой демон не запущен, запускаю все возможные демоны которые могут быть связаны с управлением питанием, перезагружаю никакого эфекта, думаю ладно потом разберусь, посмотрим, что со звуком, настроил alsa, перезапустил в mpv звук есть в kde-шных прогах нет, попробовал и phonon-gstreamer и phonon-vlc ноль эфекта. Думаю ладно звук мне нужен только в mpv, clementine, firefox. Вдруг вспоминаю, что во время установки не было вопроса о том как будет использоваться система, как десктоп или как сервер. За жизни я настраивал конфиг для ядра Linux раз 20, пару раз конфиг для FreeBSD, при насроике я всегда проходился по всем пунктам ядра, включая все пункты которые мне были нужны (без модулей) и отключая все которые не требовались, я не представляю как можно сконфигурировать ядро, чтобы оно идеально подходило и для десктопа и для сервера, я решил посмотреть нет ли в репах пакетов вида linux-image-server и linux-image-desktop (как в opensuse), но в репах оказался только один образ, в описании которого написано, что в нем имеется поддержка xen (который на десктопе нужен только одной польской девушке) к тому же debian позиционируется больше как серверный дистрибутив, делаю вывод, что ядро для сервера, сторонних реп(с ядрами) в системе не хочу.

Последний кандидат Mageia, установщик божественен, лучший из всех, что я видел (а видел я очень много), супер фича в установщике - просмотр содержимого диска (как то менял один дистрибутив на другой и не помнил скопировал ли я некоторые конфиги с форматируемого диска на не форматируемый, как мне не хватало в тот момент этой фичи). Первый запуск - все работает, всё красиво, нареканий нет. Запускаю центр настроек Mageia, просматриваю его возможности, пожалуй поудобнее yast (за исключением установки удаления программ). Поработал с дистрибутивом день, понравился, глюков не замечено, все удобно. Вот он - достойный дистрибутив с kde4. Решил его нормально обустроить, сперва надо поставить mpv, смотрю в репы, а его нет, печально конечно, но не критично - в репах есть mplayer(к сожалению без vaapi), vlc, xine-ui. Далее надо заняться шрифтами, за день использования глаза вытекают, в репах Tained(пакеты с лицензионными проблемами) есть пакет с патчами к для лучшего сглаживания шрифтов, но очень убогое, c ubuntu и ininality даже рядом не стоит. Облазил весь интернет, нашёл только какие-то польские репы с fonconfig-infinality, но без freetype2-ininality. Ставлю, запускаю

#ininality-ctl set ininality
пере запускаю систему, шрифты выглядят ужасно. Без нормальных шрифтов, я к сожалению не могу пользоваться системой.

В результате всех мучений встал вопрос - что делать? Может поставить mint, но upstart опять удалять ненужные пакеты- нет. Решил посмотреть на unity, скачал ubuntu 15.10. Мои впечатления: Unity неплох (чуть лучше gnome), но до kde4 как до луны. Решил пока остаться на ubuntu, а в виртуалке поставить mageia и посматривать за её развитием, когда всё будет устраивать перейти на неё.

 , ,

Taetricus
()

I3bar status command

Форум — Desktop

Недавно посетила меня ностальгия по красноглазым временам, решил - поставил Gentoo + i3wm. i3status мне не нравится поэтому решил написать что-то своё. Вдоволь понастольгировав удалил Gentoo, но код программы оставил, если кому надо - пользуйтесь.
Скриншот - https://yadi.sk/i/GUzstHE3i2yXt
Исходники(осторожно паскаль) - https://yadi.sk/d/6KOfIQyMi2ycB

Установка: Если не стоит fpc - установить, в каталоге с исходником запустить

sudo ./install.sh

Как использовать программу: Для работы программы необходимы следующие программы - amixer(alsa-utils), acpi, xbacklight. В файле настроек i3wm прописываете
bar {
    status_command /usr/bin/behey
}

и назначаете на нужные вам клавиши действия указанные в behey --help(Регулировка уровня громкости, регулировка яркости экрана).

 ,

Taetricus
()

Несколько вопросов по Android и Qt.

Форум — Development

Всех приветствую. Пришла в голову идея одной интересной программки, которая будет очень полезна для меня. Поискав в интернете, ничего реализующего данную идею не нашел, значит надо написать самому. Начал продумывать реализацию программы, собирать необходимые данные для неё. И вот наконец все данные собраны, устройство программы продуманно - пора писать, но тут появляется мысль о том, что неплохо будет иметь эту программу всё время под рукой, а также такая программа будет полезна не только мне, но и другим людям. Было принято решение написать её для Android смартфонов и разместить её на Google Play с ценником в 1$, но вот не задача, за все 13 лет программирования я использовал только Basic, Pascal, C, Asm, Haskell. Basic и C давно уже забыты(за ненадобностью), ассемблер естественно отпадает, Haskell вроде как то можно писать, но всё очень мутно, Pascal вроде можно, но как то не внушает доверие связка Pascal+Android. Сама программа очень простая - с десяток кнопок, несколько контейнеров, пару списков и таблиц и две небольшие функции которые используют самые простые конструкции(for, if, while и т.д.), для такой программы знания языка в принципе нужны минимальные, поэтому решил использовать Android Studio и писать на java. Начал учится и вот первые впечатления: удобство Android Studio - 6/10, java - 4/10. Но я терпел и учился, но терпение лопнуло когда понадобился виджет с контейнерами которые пользователь не сможет перелистывать, вроде можно использовать tabhost но как на нем размещать элементы на различных табах интуитивно не понятно, можно использовать экраны, но обмен данными между элементами различных экранов дико неудобен. Решил отложить Android Studio и Java, и попробовать связку Qt + QtCreator + C++ +Android, и о чудо, всё просто,понятно легко гуглится на русском любая инфа(практически). Начал я писать программу и пришёл мне в голову один вопрос - можно ли использовать Qt и QtCreator для разработки платных программ с закрытым исходным кодом? Пошёл на сайт Qt, посмотрел, вроде можно(за исключением IOS), но я не уверен. Так вот вопрос: в данной ситуации разрабатывать на qtcreator + C++ или мучатся и пить валерьянку используя Android Studio + java?

 , , , ,

Taetricus
()

Существует ли такое устройство?

Форум — Linux-hardware

К устройству (с разьёмом USB) подсоединяется N проводов (N четное) и с помощью нативной библиотеки на это устройство можно было послать команду «Соединить провод K и K+1» или «Разъединить провод K и K+1»(K<N, K нечетное). Существует ли такое устройство?

 

Taetricus
()

Потоки

Форум — Development

Всех приветствую. Пишу программу, задумался о том чтобы сделать её многопоточной, но с потоками ниразу не работал и прежде чем учиться с ними работать, хочу узнать ответы на некоторые вопросы, чтобы знать изучать мне их или нет.
Вопросы:
1 - Насколько медленно создаются новые потоки?
2 - Можно ли создать поток в остановленном состоянии и без указания функции, а потом указать функцию которую нужно исполнить в отдельном потоке и запустить поток?
3 - Есть ли кроссплатформенная библиатека для удобной работы с потоками?

 

Taetricus
()

Gentoo +systemd -openrc

Форум — General

Поставил Gentoo+xfce+systemd, в USE есть флаги systemd -openrc, все работало отлично, но понадобилось открыть в gpicview jpeg, а система была собрана без флага jpeg. Добавил в USE jpeg и сделал

emerge -avuDN world
emerge --depclean
После 2-й команды emerge предложил удалить openrc (хотя до этого я выполнял эту комманду как только поставил базовую систему и настроил make.conf и она мне не предлагала удалить openrc) я удалил так-как у меня все равно systemd. Теперь при установке любой программы пишет
checking whether the C compiler works... no
gcc установлен, gcc --version выводит следующее
 /usr/bin/gcc-config: line 18: /etc/init.d/functions.sh: No such file or directory
gcc-config: Could not source /etc/init.d/functions.sh!
gcc-config: error: could not get compiler binary path: No such file or directory
Как исправить?

 , ,

Taetricus
()

Темное KDE

Галерея — Скриншоты

Тема: QtCurve (самописная)
Цвета: свои
Иконки: Awoken
Скин SMplayer: перекрашенный Black
Тема плазмы: Opaquity
Arch Kde 4.10.5

Наконец нашел для себя совершенство.

Еще скриншоты:
Urxvt+mc
Пустой рабочий стол.

>>> Просмотр (1024x768, 144 Kb)

 ,

Taetricus
()

Доступ к файлам.

Форум — Security

Как запретить всем программам кроме Chromium доступ к катологам: ~/.config/chromium, ~/.cache/chromium ?

Taetricus
()

Как в llvm узнать размер и выравнивание типа?

Форум — Development

Никак не могу найти как в llvm узнать размер и выравнивание типа.
Пример:
...
%struc.k = type {i8 , i16}
...
%1=размер struc.k
%2=выравнивание struc.k
В %1 должно быть 4, а в %2 должно быть 2.

 

Taetricus
()

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