Я тут свой язык создал
Разумеется под linux и с открытой лицензией.
https://github.com/Alexander-Goto/scarlet
На ютубе выпустил видео с информацией о том что и как.
https://www.youtube.com/watch?v=YS5iPMOsico
Разумеется под linux и с открытой лицензией.
https://github.com/Alexander-Goto/scarlet
На ютубе выпустил видео с информацией о том что и как.
https://www.youtube.com/watch?v=YS5iPMOsico
Несколько лет как удалил там аккаунт, сейчас думаю закинуть туда один свой пет-проект. Краем уха слышал, что там появился не отключаемый ИИ который автоматом ищет ошибки, и автоматически создаёт issue, при том что часто там нет ошибок. Правда ли? И если да, то на сколько всё плохо?
У меня есть программа распространяемая под GPL3. При сборке программа собирается не в бинарник а в самодостаточный пакет. Я хочу добавить в программу 2 сишные библиотеки - libzstd (GPL2 и BSD), libcurl(чёрт пойми какая лицензия), библиотеки линкуются динамически (dlfcn.h), подразумевается что уже скомпилированные библиотеки будут добавлены в пакет. Могу ли я распространять свою программу с уже скомпилированными библиотеками?
Разработал свой яп и компилятор к нему. Хочется распространять компилятор на условиях лицензии gpl 3. Компилятор при работе вызывает утилиту с лицензией bsd, насколько я понимаю это не нарушает gpl 3? Так же хочется узнать, под какой лицензией мне распространять стандартную библиотеку, чтобы при разработке программ на моем языке, при использовании стандартной библиотеки, программу можно было распространять под любой лицензией?
В стоковое ядро арча включили apparmor, а в репы добавили пакет apparmor с утилитами и демонов. Самое обидное, что на официальном сайте об это ни слова, вся инфа только на арч вики.
Обновил арч - перестала работать клавиатура(мышь работает). Клавиатура и мышь - usb. В логах абсолютно ничего, реагирует только на fn+(f1-f12). Думаю не буду разбираться, всё равно собирался на opensuse переходить. Скачал opensuse tumbleweed запускаю установку, а там ровно та-же картина, при чём клавиатура не работает ни в графическом ни в текстовом режиме. Скачал федору 28 - всё работает, пока установил так как сейчас срочно нужен компьютер, но оставаться на федоре не хочу. Ядра: арч - 4.18, opensuse - 4.17, федора - 4.17.
Есть файл 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;
}
; 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)"}
; 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)"}
Покупаю компьютер, завтра должен приехать. Место на диске использую не много, посмотрел цены на ssd и на hdd и решил, что лучше куплю 120 gb ssd. Сейчас сижу и думаю какую файловую систему выбрать, сейчас использую ext4 но насколько я знаю f2fs специально разработана для flash памяти. Если смысл ставить систему на f2fs. Может уже у кого стоит система на f2fs? Поделитесь опытом стоит ли оно того.
Пишу на 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;
}Если ли такой алгоритм, который позволяет искать некий элемент в таблице, со скоростью независящей от количества записей в таблице?
Пример: https://www.linux.org.ru/forum/development/12692268?cid=12692378 (комментарий) (Тег субд потому, что возможно какая нибудь субд такое умеет)
Здравствуйте. Посетила идея интересного сайта, решил попробовать воплотить идею в жизнь. В сетевых технологиях - я чуть лучше чем полный ноль, тратить время на изучение php, mysql, js и т.д. нет смысла - идея может и не взлететь, поэтому возникло пару вопросов:
Долгое время сидел на 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Недавно посетила меня ностальгия по красноглазым временам, решил - поставил Gentoo + i3wm. i3status мне не нравится поэтому решил написать что-то своё. Вдоволь понастольгировав удалил Gentoo, но код программы оставил, если кому надо - пользуйтесь.
Скриншот - https://yadi.sk/i/GUzstHE3i2yXt
Исходники(осторожно паскаль) - https://yadi.sk/d/6KOfIQyMi2ycB
Установка: Если не стоит fpc - установить, в каталоге с исходником запустить
sudo ./install.shbar {
status_command /usr/bin/behey
}Всех приветствую. Пришла в голову идея одной интересной программки, которая будет очень полезна для меня. Поискав в интернете, ничего реализующего данную идею не нашел, значит надо написать самому. Начал продумывать реализацию программы, собирать необходимые данные для неё. И вот наконец все данные собраны, устройство программы продуманно - пора писать, но тут появляется мысль о том, что неплохо будет иметь эту программу всё время под рукой, а также такая программа будет полезна не только мне, но и другим людям. Было принято решение написать её для 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?
К устройству (с разьёмом USB) подсоединяется N проводов (N четное) и с помощью нативной библиотеки на это устройство можно было послать команду «Соединить провод K и K+1» или «Разъединить провод K и K+1»(K<N, K нечетное). Существует ли такое устройство?
Всех приветствую. Пишу программу, задумался о том чтобы сделать её многопоточной, но с потоками ниразу не работал и прежде чем учиться с ними работать, хочу узнать ответы на некоторые вопросы, чтобы знать изучать мне их или нет.
Вопросы:
1 - Насколько медленно создаются новые потоки?
2 - Можно ли создать поток в остановленном состоянии и без указания функции, а потом указать функцию которую нужно исполнить в отдельном потоке и запустить поток?
3 - Есть ли кроссплатформенная библиатека для удобной работы с потоками?
Поставил Gentoo+xfce+systemd, в USE есть флаги systemd -openrc, все работало отлично, но понадобилось открыть в gpicview jpeg, а система была собрана без флага jpeg. Добавил в USE jpeg и сделал
emerge -avuDN world
emerge --depclean
checking whether the C compiler works... no
/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
Как запретить всем программам кроме Chromium доступ к катологам: ~/.config/chromium, ~/.cache/chromium ?
Никак не могу найти как в llvm узнать размер и выравнивание типа.
Пример:
...
%struc.k = type {i8 , i16}
...
%1=размер struc.k
%2=выравнивание struc.k
В %1 должно быть 4, а в %2 должно быть 2.