LINUX.ORG.RU

Избранные сообщения LINUX-ORG-RU

Смитсоновский музей открыл 2.8 миллиона изображений и видео

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

Отличная новость для любителей халявы вообще, а также для творческих людей, которые смогут найти применение оцифрованным материалам Смитсоновского музея США. Лицензия CC0 позволяет не только смотреть, скачивать, но и использовать эти материалы в своих творческих проектах без ссылок на источник.

Открытый доступ к оцифрованным материалам музеев - довольно распространённая в наши дни практика, просто Смитсоновский музей отличился огромным количеством выложенных сразу материалов, и они обещают выкладывать ещё. Есть и другие не всем известные места для легального скачивания открытых файлов: например, огромный нотный архив старой музыки https://imslp.org/wiki/Main_Page Говоря о халяве, стоит упомянуть известную коллекцию бесплатных книг проект Гутенберг https://www.gutenberg.org/

>>> Поиск по Смитсоновскому архиву оцифрованных документов

 , , , ,

svyatozar
()

Ищу программиста на Си под Linux (Москва, full time)

Форум — Job

Компания Текон– разработчик и производитель средств промышленной автоматизации.

Ожидания:

Опыт работы - 3 последних года по профессии на постоянной работе

Опыт разработки userspace приложений под linux для встраиваемых систем

Знание устройства multicore MPU: межъядерное взаимодействие, кэши, MMU и т.д.

Знание С и Assembler (RISC V, PowerPC, ARM).

Опыт разработки и портирования драйверов ядра Linux под новые платформы.

Опыт использования инструментов командной разработки (Jira, Confluence, Git, SVN и т.п.)

Основные задачи: Разработка embedded software на C.

Поддержка различных архитектур и специальных возможностей multicore MPU.

Разработка архитектуры решения.

Разработка тестов.

Оптимизация производительности.

Условия: full-time метро Октябрьское поле, МЦК Зорге

Оклад на руки от 100 000, плюс ежемесячные премии по итогам работы, плюс премии за реализацию проекта.

Обеды в офисе, спортзал, ДМС, включая стоматологию, через год работы.

Участие в профильных конференциях.

Работа на крупных проектах.

 , ,

KaterinaTecon
()

Осваиваемся с Vulkan

Форум — Development

Примерно за пол-года вроде как разобрался с Vulkan.

Пишу сейчас рендерер плагин для своего графического движка

https://gitlab.com/KawaiiGraphics/KurisuRenderer

После OpenGL, для которого всё есть GLint либо GLuint, очень порадовала типизация. Также командные буферы – действительно крутая вещь – в них мало того, что можно писать из нескольких потоков (хотя и с ограничениями), так ещё и записанные однажды, они могут использоваться многократно! Возможность обеспечить более полную загрузку железа с меньшим временем на ожидание вертикальной синхронизации, например, через явное управление очередями тоже впечатляет.

В общем Vulkan в целом мне зашёл. Но есть несколько «но».

Во-первых непонятно зачем перекорёжили гомогенные координаты – ось y зачем-то направили вниз, а глубину и вовсе загнали в интервал от 0 до 1, вместо -1 до 1. Насколько я понимаю, то как направлены оси, в общем-то, ни от чего не зависит. Просто решили, что они направлены вот так и всё. А потому не ясно зачем было менять их – если бы оси были направлены как в OpenGL, можно было бы кормить Vulkan теми же матрицами и мешами, что и OpenGL без всяких плясок с бубном в шейдерах. Ну да ладно, направили оси иначе и направили.

Во-вторых и в главных – SPIRV. В OpenGL замечательная система шейдерных модулей, для которых компиляция отделена от линковки, которая позволяет приложению конструировать шейдерные программы (а в последних версиях OpenGL стадии) из функциональных взаимозаменяемых блоков. Совершенно не ясно, зачем было её херить :( В Vulkan стадии стали неделимыми, так ещё и бинарными. У нас всё ещё графический API и ли какой-нибудь уродский .NET с промежуточным байт кодом? Видимо разработчикам движков так ненавязчиво предлагается иметь некоторый набор заданных заранее семейств материалов и не давать пользователям в руки шейдеры в принципе? Но это же дно-о-о. Мы так в 90-е – 00-е вернёмся, когда был только фиксированный графический конвейер – и всё. В 20-х у нас будет чуть больше моделей освещения/затенения, парочка интересных эффектов водной поверхности, огня и т.д. Но всё так же никакой гибкости.

В общем будущее светло, но не безоблачно. Многопоточный рендеринг, кеширование сцен и возможность безбубенной многооконности, сияют, превращая ночь в день, а днём затмевая Солнце; а маячащая на горизонте возможность multi GPU через DMABUF звучит как гимн разума и изобретательности :D Но отношение Khronos к шейдерам, как минимум, настораживает..

Кто уже тоже успел повулканить? Что думаете о наступившем будущем?

 , , , ,

robus
()

Скипт при автозапуске Linux

Форум — Desktop

Всем привет! Хочу перекинуть все типичные задачи на авто-выполненение. В интернете наткнулся на cron. (cron — классический демон, использующийся для периодического выполнения заданий в определённое время.)

Прописываю все скрипты с помощь:
crontab -e

Там есть уже два скрипта:
#!/bin/bash
@reboot /root/Documents/lin/mon
@reboot /root/Documents/lin/up

Указал время выполнения скрипта как: @reboot - при запуске системы.

Вот путь и скрипт который не срабатывает: /root/Documents/lin/mon

#!/bin/bash
#Ложим устройство wlan1
ifconfig wlan1 down
#И переводим в режим монитора
airmon-ng start wlan1

После этого проверяю устройство но оно не переходит в режим монитора. Заранее спасибо.

 , , , ,

GreyBird
()

Просто домашний пк 9 (cinnamon)

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

Относительно давно переехал на cinnamon из gnome. Попробовал, понравилось, остался. Почти всегда использовал очень тёмные темы, но сегодня захотелось вдруг светлой, причём тотально. Странно, но мне понравилось ::)

Отдельные иконки раскрасил вручную, но не все.

Тема браузера — опять же пару кликов и готово.

dron@gnu:~$ screenfetch 
         _,met$$$$$gg.           dron@gnu
      ,g$$$$$$$$$$$$$$$P.        OS: Debian testing bullseye
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 5.4.0-3-amd64
   ,$$P'              `$$$.      Uptime: 6d 14h 50m
  ',$$P       ,ggs.     `$$b:    Packages: 4573
  `d$$'     ,$P"'   .    $$$     Shell: bash
   $$P      d$'     ,    $$P     Resolution: 1920x1080
   $$:      $$.   -    ,d$$'     DE: Cinnamon 4.2.4
   $$\;      Y$b._   _,d$P'      WM: Muffin
   Y$$.    `.`"Y$$$$P"'          WM Theme: Adapta-Nokto-White (BlueMenta)
   `$$b      "-.__               GTK Theme: BlueMenta [GTK2/3]
    `Y$$                         Icon Theme: malys-uniblack
     `Y$$.                       Font: Sans 9
       `$$b.                     Disk: 1,1T / 1,5T (72%)
         `Y$$b.                  CPU: AMD Phenom II X6 1055T @ 6x 2.8GHz
            `"Y$b._              GPU: AMD BARTS (DRM 2.50.0 / 5.4.0-3-amd64, LLVM 9.0.1)
                `""""            RAM: 5092MiB / 14001MiB
                                
dron@gnu:~$ 

Для снимка подобного типа набросал (уже давно) скриптик, может кому будет надо

#!/bin/bash
SCREENALL_WM_IMAGE_DIR="/tmp/`uuidgen`/";
SCREENALL_WM_NUMBERS=`wmctrl -d | wc -l`;
SCREENALL_WM_CURENT_NAME=`wmctrl -d | grep "*"`;
SCREENALL_WM_CURENT_NUMBER=${SCREENALL_WM_CURENT_NAME:0:1};

mkdir $SCREENALL_WM_IMAGE_DIR;


for ((i=0; i < $SCREENALL_WM_NUMBERS; i++ ))
do
    wmctrl -s $i;
    scrot  -q 100 -d 1  $SCREENALL_WM_IMAGE_DIR$i.png
done

wmctrl -s $SCREENALL_WM_CURENT_NUMBER;
convert -append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/vertical`date`.png"
convert +append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/horizontal`date`.png"

rm -rd $SCREENALL_WM_IMAGE_DIR;
xdg-open ~/;
echo "Done";

Осталось подрихтовать мелочи и можно пользоваться, всем добра :)

 ,

LINUX-ORG-RU
()

В Debian добавят рабочий стол Unity 8 и дисплейный сервер Mir

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

Недавно Mайк Гэбриел (Mike Gabriel), один из мейнтейнеров Debian, договорился с людьми из UBports Foundation, чтобы «опакетить» рабочий стол Unity 8 для Debian.

Зачем это делать?

Главное преимущество Unity 8 - это конвергентность: единая кодовая база для всех платформ. Он одинаково хорошо смотрится на десктопах, планшетах и смартфонах. На Debian сейчас нет ни одного готового решения для планшетов и смартфонов.

Прогресс не стоит на месте!

Всю информацию о процессе адаптации Unity 8 и Mir в Debian можно отслеживать на сайте Planet Debian, в личном блоге Майка Гэбриела или на его страничке в Mastodon.

https://planet.debian.org/

https://sunweavers.net/blog/

https://fosstodon.org/@sunweaver

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

 , , , ,

fail2ban
()

Красивые способы корректного сравнения знаковых и беззнаковых целых

Форум — Development

Стандарты языка С предписывают компиляторам пользовать «быстрое» сравнение, вместо корректного.

То есть в следующем коде согласно всех стандартов языка С переменная res должна получить значение 0 а не 1, что крайне непрактично.

unsigned int a = 1;
int b = -1;
int res = (b < a);

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

Естественно речь о ситуациях где отказаться ни от знаковых, ни от беззнаковых никак нельзя.

Мой основной способ решения этой проблемы через расширение разрядности, так как я в первую очередь имею дело с unsigned char, но смесь size_t c ssize_t или что-то подобное также нередко доставляет неудобства.

Опишите кто и как выкручивается в сложившейся ситуации.

[UPDATE] ассемблерные листинги к классическим алгоритмам сравнения

For example x86 gcc 7.1 will for C++ source:

bool compare(int x, unsigned int y) {
    return (x < y); // "wrong" (will emit warning)
}

bool compare2(int x, unsigned int y) {
    return (x < 0 || static_cast<unsigned int>(x) < y);
}

bool compare3(int x, unsigned int y) {
    return static_cast<long long>(x) < static_cast<long long>(y);
}

Produce this assembly (godbolt live demo):

compare(int, unsigned int):
        cmp     edi, esi
        setb    al
        ret

compare2(int, unsigned int):
        mov     edx, edi
        shr     edx, 31
        cmp     edi, esi
        setb    al
        or      eax, edx
        ret

compare3(int, unsigned int):
        movsx   rdi, edi
        mov     esi, esi
        cmp     rdi, rsi
        setl    al
        ret

Взято вот здесь:

https://stackoverflow.com/a/44070807/73747

 , ,

cvv
()

Запуск wine игры на одном ядре

Форум — Games

Здравствуйте.

Установил олдфажную игру, персонаж летает по карте со скоростью света. Гугл сообщил, что причина в многоядерном процессоре (игры писались для одноядерных). Там же было решение, как запустить на одном ядре, но только под виндовз.

Тхенк фор ани идеас.

 ,

Voroshek
()

Рамблер предъявил претензии на исходный код nginx. Обыск в московском офисе Nginx, Inc.

Новости — Open Source
Рамблер предъявил претензии на исходный код nginx. Обыск в московском офисе Nginx, Inc.
Группа Open Source

Один из сотрудников Nginx, Игорь Ипполитов, опубликовал в Twitter сообщение о том, что в офисе Nginx производится обыск. Твит и скриншоты постановления об обыске он был вынужден удалить по требованию МВД, но в сети осталась копия.

По версии следствия, неустановленные лица в неустановленное время (до октября 2004 года) разместили в свободном доступе программу «энджиникс» (nginx), указав, что исключительное право на неё принадлежат Игорю Сысоеву, при этом заведомо зная, что программа является служебным произведением, а следовательно, права на неё принадлежат Рамблеру. Затем неустановленные лица зарегистрировали компанию «Энджиникс инк» (NGINX, Inc) для продолжения незаконного использования, модификации и распространения программы, причинив тем самым Рамблеру ущерб в особо крупном размере.

«Неустановленными лицами» в перспективе, вероятно, станут основатели Nginx, Inc Игорь Сысоев и Максим Коновалов. Имеются сведения, что они задержаны.

Пресс-служба Рамблера подтвердила, что интернет-холдинг имеет претензии.

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

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

 , , обыск,

MozillaFirefox
()

А посоветуйте что-нибудь почитать про роторы, дивергнецию и тензоры

Форум — Talks

Но не с точки зрения физиков, как я в своё время учил, а с точки зрения математиков. А то такое чувство, что плохо я это понял когда-то. Вроде что-то знаю, но как-то неуверенно и недостаточно глубоко.

 ,

peregrine
()

Meet ssh tetris ;)

Форум — Games

ssh netris.rocketnine.space

 , ,

powerguy
()

Сколько среднемаксимально времени в сутки вы проводите за компьютером?

Голосования — Голосования

Спим мы по-разному, кто-то бодрствует шестнадцать часов в день: из них семь проводит за компьютером на работе и ещё три дома; кто-то четыре часа поиграет, почитает ЛОР, и всё; а кто-то ежедневно практически в среднем 100% времени торчит за компом, иногда лишь сходив за бутербродами и чаем. Интересно именно ваше среднемаксимальное время пребывания за ПК. То есть, как это обычно бывает, включая и рабочее время, и время отдыха, а возможно, и занятие своими проектами.

Возможно, некоторые физически ограничены, и ПК является по сути их важным дополнением.

Например, я в последнее время провожу за ПК около 60% всего времени бодрствования. И этот процент всё время растёт. И надо бы мне поубавить его.

А как дела у вас?

  1. 60% ~ 70% 214 (18%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. 50% ~ 60% 209 (18%)

    ************************************************************************************************************************************************************************************************************************************************************************************************************************

  3. 70% ~ 80% 166 (14%)

    ********************************************************************************************************************************************************************************************************************************************************

  4. 40% ~ 50% 147 (13%)

    ***************************************************************************************************************************************************************************************************************************

  5. 90% ~ 100% 117 (10%)

    ******************************************************************************************************************************************************************************

  6. 30% ~ 40% 110 (9%)

    ********************************************************************************************************************************************************************

  7. 80% ~ 90% 85 (7%)

    *******************************************************************************************************************************

  8. 20% ~ 30% 69 (6%)

    *******************************************************************************************************

  9. 10%~ 20% 25 (2%)

    *************************************

  10. 0% ~ 5% 15 (1%)

    **********************

  11. 5% ~ 10% 13 (1%)

    *******************

Всего голосов: 1170

 , , , ,

LINUX-ORG-RU
()

Не удается скомпилировать код а asm вставкой

Форум — Development

В теме Как включить графику или хотя бы текстовый цветной режим? установил QEMU ARM64. Там Debian 10, и есть gcc 8.3

Есть пример: http://www.ethernut.de/en/documents/arm-inline-asm.html

Есть простая программа:

#include <stdio.h>
int main()
{
printf("test\n");
asm("mov r0, r0");
}
При компиляции gcc test.c -o test пишет: operand 1 must be an integer register. Жалуется на строку mov r0, r0. Она же из примера взята, что ему не нравится? Пробовал r20, r30, всегда один ответ.

 , , ,

I-Love-Microsoft
()

А тут все вкурсе что бывает при переполении int?

Форум — Development

Задача. Монотонно растущий счетчик времени который в какой то момент может переполнится.
Код делает типовые операции

uint16_t startTime = millis();
...
uint16_t stopTime = millis();
uint16_t runSpeed = stopTime - startTime;

Вопрос что будет если startTime будет равно 65535 а stopTime будет равно 1?
Какой будет runSpeed?
Код теста
//# ./a 1 - 65535
#include <stdio.h>
#include <stdint.h>

int main(int argc, char * argv[]) {
  uint16_t a = atoi(argv[1]);
  uint16_t b = atoi(argv[3]);
  
  printf("%d", (uint16_t)(a - b));
  
  return 0;
}

Итого все хорошо 1 - 65535 будет равно 2 как и предполагалось. Спасибо бинарной логике процессора. И никаких лишних проверок сравнений лепить не надо.

 ,

bga_
()

★ #pragma pack VS #pragma не`pack ★

Форум — Development

Расскажите про реальные минусы, плюсы. Подводные камни.

Ну упаковали мы структуру, ну стала она меньше памяти занимать. Как бы всё. Но допустим мы не экономим на памяти (допустим!) если ещё реальный смысл паковать? Где-то говорят что промахи кеша уменьшаются и от того код работает быстрее ведь как следствие конвеер не перезапускается, но я не верю.

UDP: На заметку (Всем спасибо за советы! (•◡•)/ )

Утилита pahole для выявления дыр в структурах и их реорганизации в Debian утилита доступна из пакета dwarves sudo apt install dwarves

gcc/clang c опцией -g3 -Wpadded + -Wextra -Wall -Werror не пропустят код с дырявыми структурами

Например для такой структуры

typedef struct {
  bool collided;
  float time;
  vec3 point;
  vec3 norm;
  int flags;
} collision;


Clang выдаёт чуть более информативно

./include/physics.h:13:9: error: padding struct 'collision' with 3 bytes to align 'time' [-Werror,-Wpadded]
  float time;

GCC же просто указывает на предмет «проблемы»

./include/physics.h:13:9: error: padding struct to align ‘time’ [-Werror=padded]
   float time;
         ^~~~

Прогон pahole же при компиляции с -g3 даёт чёткое указание на «проблему»

ничего :D

И это «ничего» меня поставило в ступор сначала, но дело в том что я использую typedef и по какой то причине pahole игнорирует не именованные структуры, если исправить так

typedef struct collision{
  bool collided;
  float time;
  vec3 point;
  vec3 norm;
  int flags;
} collision;

То pahole выдаёт чёткие подробности

struct collision {
	_Bool                      collided;             /*     0     1 */

	/* XXX 3 bytes hole, try to pack */

	float                      time;                 /*     4     4 */
	vec3                       point;                /*     8    12 */
	vec3                       norm;                 /*    20    12 */
	int                        flags;                /*    32     4 */

	/* size: 36, cachelines: 1, members: 5 */
	/* sum members: 33, holes: 1, sum holes: 3 */
	/* last cacheline: 36 bytes */
};

Исправление на

typedef struct collision {
  vec3  point;
  vec3  norm;
  float time;
  int   flags;
  bool  collided;
} collision;

Убирает предупреждения/ошибки из gcc/clang, а pahole репортует что в целом всё впорядке

struct collision {
	vec3                       point;                /*     0    12 */
	vec3                       norm;                 /*    12    12 */
	float                      time;                 /*    24     4 */
	int                        flags;                /*    28     4 */
	_Bool                      collided;             /*    32     1 */

	/* size: 36, cachelines: 1, members: 5 */
	/* padding: 3 */
	/* last cacheline: 36 bytes */
};

Но, для полного счастья было бы хорошо заполнить 3 байта для выравнивания структур (массивы структур или дву/одно связные списки к примеру) в данном случае можно заменить bool на int или добавить заполнение char pad[3] если изменение типа структуры выливается в геморой ползания по коду или нарушает читабельность.

При окончательном изменении на

typedef struct collision {
  vec3  point;
  vec3  norm;
  float time;
  int   flags;
  bool  collided;
  char  __unused_struct_padding__[3];
} collision;

получаем репорт от pahole что всё ok


struct collision {
	vec3                       point;                /*     0    12 */
	vec3                       norm;                 /*    12    12 */
	float                      time;                 /*    24     4 */
	int                        flags;                /*    28     4 */
	_Bool                      collided;             /*    32     1 */
	char                       __unused_struct_padding__[3]; /*    33     3 */

	/* size: 36, cachelines: 1, members: 6 */
	/* last cacheline: 36 bytes */
};

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

Ну вот как то так.

 , , ,

LINUX-ORG-RU
()

Расширенная отладка кода в gcc

Форум — Development

Есть ли у компиляторов возможность расширенной отладки, типа врапперов на вызовах функций, всякие там барьеры вокруг массивов стека и прочего подобного, чтобы корованы грабить и делать трейд. Чтобы я навключал всего, пусть оно будет в 10 раз медленее работать но зато проверять досконально.

Пользуюсь Valgrind (он же и профилировать позволяет очень точно, не статистически), помогает многое находить по памяти, но хочется еще больше каких-то проверок насыпать. Код очень важный, но тестированием покрыть будет сложно. А вот отловить сбои в процессе работы на тестовых данных - это реально.

 , ,

I-Love-Microsoft
()

GCC, Cygwin меняется файл при каждой пересборке

Форум — Development

При каждой линковке немного меняется бинарный файл. Похоже gcc туа записывает дату компиляции. Если возможность как-то это запретить?

Comparing files dbc_processor.exe and DBC_PROCESSOR.EXE~
00000088: 80 C3
00000089: EA DF
000000D8: BF 02
000000D9: EC E2

 , ,

vromanov
()

Поиск работы за еду для повышения квалификации

Форум — Development

По многочисленным просьбам создается тема для тех, кто хочет поднять свою квалификацию, и тех, кто готов принять таких людей в свои проекты.

Для уменьшения трафика:

  1. Соискателям: указывайте что умеете и чем хотите заняться
  2. «проектным менеджерам»: что за проект, на чём написано и что требуется допилить.

Так же убедитесь что в профиле есть все нужные контакты.

Сайты по поиску волонтёров

  • https://openhatch.org/search/ — закрытие багов за плюсик в карму (к сожалению, возможности отфильтровать результаты поиска очень слабые)
  • https://freedomsponsors.org — здесь можно получить денежку за улучшение свободного софта (например, за реализацию предложенных фич).
  • http://www.x.org/wiki/XorgEVoC/ — аналог GSoC от X.org, не привязан ко времени года, могут брать участие даже не студенты (в таком случае они свои $5000 не получат)

За ссылки спасибо yurikoles

 

true_admin
()