LINUX.ORG.RU

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

Не заводится cuda под wine

Форум — General

Wine-stanging 7.21, собран с поддержкой cuda. Cuda установлена, есть в Path

bash-5.1$ $PATH
bash: /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/dt/bin:/opt/cuda/bin:/opt/cuda/lib64: No such file or directory
В вайн установлено с помощью вот этого - https://github.com/SveSop/nvidia-libs/releases/tag/v0.7.12 Ошибки выдает такие.
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D11GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT fou                                                                                   nd!                                                                                                             
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D11CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                  
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D11GetDirect3DDevice, 3020, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                  
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT fou                                                                                   nd!                                                                                                             
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                  
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10GetDirect3DDevice, 3020, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                  
0550:fixme:nvcuda:wine_cuGetProcAddress (cuGraphicsD3D10RegisterResource, 3000, 0) The SYMBOL ADDRE                                                                                   SS was NOT found!                                                                                                                                                       
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10RegisterResource, 2010, 0) The SYMBOL ADDRESS was N                                                                                   OT found!                                                                                                                               
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10UnregisterResource, 2010, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                     
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10MapResources, 2010, 0) The SYMBOL ADDRESS was NOT f                                                                                   ound!                                                                                                                   
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10UnmapResources, 2010, 0) The SYMBOL ADDRESS was NOT                                                                                    found!                                                                                                                         
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceSetMapFlags, 2010, 0) The SYMBOL ADDRESS wa                                                                                   s NOT found!                                                                                                                                        
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceGetSurfaceDimensions, 3020, 0) The SYMBOL A                                                                                   DDRESS was NOT found!                                                                                                                                                                 
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceGetMappedArray, 2010, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                                 
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceGetMappedPointer, 3020, 0) The SYMBOL ADDRE                                                                                   SS was NOT found!                                                                                                                                                       
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceGetMappedSize, 3020, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                              
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D10ResourceGetMappedPitch, 3020, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                                 
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT foun                                                                                   d!                                                                                                          
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was N                                                                                   OT found!                                                                                                                               
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9GetDirect3DDevice, 2000, 0) The SYMBOL ADDRESS was N                                                                                   OT found!                                                                                                                               
0550:fixme:nvcuda:wine_cuGetProcAddress (cuGraphicsD3D9RegisterResource, 3000, 0) The SYMBOL ADDRES                                                                                   S was NOT found!                                                                                                                                                    
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9RegisterResource, 2000, 0) The SYMBOL ADDRESS was NO                                                                                   T found!                                                                                                                            
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9UnregisterResource, 2000, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                  
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9MapResources, 2000, 0) The SYMBOL ADDRESS was NOT fo                                                                                   und!                                                                                                                
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9UnmapResources, 2000, 0) The SYMBOL ADDRESS was NOT                                                                                    found!          

0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceSetMapFlags, 2000, 0) The SYMBOL ADDRESS was                                                                                    NOT found!                                                                                                                                     
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceGetSurfaceDimensions, 3020, 0) The SYMBOL AD                                                                                   DRESS was NOT found!                                                                                                                                                                
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceGetMappedArray, 2010, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                              
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceGetMappedPointer, 3020, 0) The SYMBOL ADDRES                                                                                   S was NOT found!                                                                                                                                                    
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceGetMappedSize, 3020, 0) The SYMBOL ADDRESS w                                                                                   as NOT found!                                                                                                                                           
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9ResourceGetMappedPitch, 3020, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                              
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9Begin, 2000, 0) The SYMBOL ADDRESS was NOT found!                                                                                      
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9RegisterVertexBuffer, 2000, 0) The SYMBOL ADDRESS wa                                                                                   s NOT found!                                                                                                                                        
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9UnregisterVertexBuffer, 2000, 0) The SYMBOL ADDRESS                                                                                    was NOT found!                                                                                                                                              
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9MapVertexBuffer, 3020, 0) The SYMBOL ADDRESS was NOT                                                                                    found!                                                                                                                         
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9UnmapVertexBuffer, 2000, 0) The SYMBOL ADDRESS was N                                                                                   OT found!                                                                                                                               
0550:fixme:nvcuda:wine_cuGetProcAddress (cuD3D9End, 2000, 0) The SYMBOL ADDRESS was NOT found!                                                                                        
0550:fixme:nvcuda:wine_cuDeviceGetAttribute Returning drivertype WDDM: (0)                                                                                                            
0550:fixme:nvcuda:wine_cuDeviceGetAttribute Returning no coherent access memory support: (0)                                                                                          
0550:fixme:nvcuda:wine_cuDeviceGetAttribute Returning no host pointer for registered mem support: (                                                                                   0)                                                                                                          
0550:fixme:nvcuda:wine_cuDeviceGetLuid Fix this LUID: dead0000-00000000                                                                                                               
hdt::`anonymous-namespace'::CudaStream::CudaStream: integrity checks failed                                                                                                           
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr                                                                                   
ity checks failed                                                                                                                                                       
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr                                                                                   
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed

hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failedhdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuVertex,struct hdt::Vertex>::CudaBuffer: integr
ity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<float,float>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed

hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<int,int>::CudaBuffer: integrity checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed
hdt::`anonymous-namespace'::CudaBuffer<struct hdt::cuBone,struct hdt::Bone>::CudaBuffer: integrity 
checks failed

Есть идеи что я упускаю?

UPD: Нашел что-то такое - Возможно ли использование CUDA из WINE

 , ,

vbcnthfkmnth123
()

Выбор ноутбука и вопрос по ОЗУ

Форум — Linux-hardware

Присматриваюсь к ноутбуку и мне важно чтобы был холодным и бесшумным (почти). Игровые ноутбуки у меня были и более не хочется. В идеале что-то взять без дискретной графики. Из задач там будет разработка на python/php/java, субд, docker, иногда виртуалки. Из cpu всегда был intel, стоит рассматривать ryzen? С ОЗУ основная проблема, память у неигровых решений распаяна, хотя ноутбуки неплохие. На данный момент работаю с пк 32gb ram, и этого впритык, в ноуте бы хотел 64gb. Может вообще взять на 16gb а docker, vm запускать удаленно (собрать сервачок)? А вы как работаете?

Перемещено hobbit из general

 

KRex
()

Почему Go это плохо, и он вам, на самом деле, не нужен.

Форум — Development

Давайте я вам поясню про язык Go, откуда у него растут корни, и почему его на самом деле не стоит использовать. То что напишу ниже, это взято как из инсайдерской информации, так и из материалов, доступных в интернетах.

Дело в том, что Go это, на самом деле, «решение» внутренних гугловских проблем. Но отнюдь не проблем горизонтального масштабирования серверного ПО, как многие почему-то думают. Он приспособлен специально для использования в гугле вот в каком контексте.

Гугл нанимает большое количество тупых студентов, только-только после вуза или ПТУ, и заставлять их писать хоть какой-то простой код. И делать минимум ошибок, при этом. Для этого Go сделан таким тупым и упрощенным. И выкинут в паблик он только для того, чтобы вероятность, что у такого студента, только пришедшего в гугл, было хоть какое-то знание Go, была выше нуля.

Но дело вот в чем. В гугле, на самом деле, над каждой командой гошников стоит тимлид, или целая группа, который/которая вот этим взаимозаменяемым роботам-гошникам расписывает всю систему, чуть ли не вплоть до состояния конечного автомата, до if-ов, и показывает куда и что писать. Поэтому же Go на корню режет всю креативность, поэтому там нет практически никаких средств абстракции, и поэтому он не дает делать вообще ничего сложного. Дабы программисты на нем вообще ничего лишнего не думали, а кодировали все чуть ли не побуквенно по указаниям умных людей.

Из гугла же идет маразматическая система управления зависимостями Го, которая заточена на монорепы.

Тут возникает вопрос - а почему этому тимлиду не дать в руки кодогенератор, вместо всей этой accidental complexity, возникающей из-за огромного количества строк кода, и из-за затрат на коммуникацию?

А тут надо понимать, как внутри устроены огромные корпорации типа гугла.

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

Естественно, это все отражается на качестве продуктов, и это видно как по полному прекращению инноваций в гугле, так и по постоянно мелькающим и закрывающимся высерам этой компании - hangouts, duo, google plus, google wave, и прочее и прочее, можете еще вспомнить много чего.

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

Никакой мифической простоты в отладке и в понимании кода Go не приносит. Да и сложность программных систем растет совершенно не из-за понятности/непонятности какой-то отдельной взятой строчки кода или функции. Потому, что, во-первых, понятность это понятие субъективное, во-вторых потому, что, отдельно взятая фунцкия на 5 строк понятна любому опытному программисту, будь она написана хоть на Rust, хоть на Common Lisp.

Сложность программных систем возникает из-за их размера. И Go эту проблему значительно ухудшает. Человек не может удерживать в голове слишком много вещей, даже если каждая отдельная вещь - очень простая. Количество RAM в голове ограничено.

В случае если вы не хотите выкидывать кучу денег просто так, и скорее предпочли бы нанять немного, но более-менее опытных программистов, Go будет только вреден, потому что все вменяемые люди от него, на самом деле, плюются. Он реально отталкивает опытных людей, которые способны понять сложные требования и написать, и поддерживать, более-менее сложные системы уровнем хотя бы нескольких сервисов плюс БД и MQ.

 ,

lovesan
()

GTK и Wayland против слепых

Форум — Talks

Привет, ЛОР!

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

Ссылка: https://tech.lgbt/@xogium/110507457689374019

Для Ъ: во времена GNOME2 (~2007) всё было плюс-минус классно и читалки с экрана отлично справлялись. После GTK3 стало похуже, но в итоге Orca приспособили и туда.

В GTK4 же полный швах и ужас. Сначала разработчики GTK выкинули все приспособления для обеспечения доступности нахрен, заявив, что это забота приложений. Потом после какой-то там конференции они сделали вид, что поменяли мнение, но в итоге воз и ныне там. Плюс куча странных глюков, которые мешают Orca работать, например война за фокус клавиатуры. Всем в принципе насрать, GTK и GNOME ломаются чаще, чем читалки с экрана успевают приспособить.

С Wayland всё просто очень плохо: модель работы не предполагает, что программы, у которых нет окна на экране или это окно не в фокусе, могут получить доступ к буферу обмена, что опять же ломает читалки экрана, поэтому большинство пользователей, которым это необходимо, остаются на Xorg. Авторы протоколов и композиторов на это всё клали.

Пока что единственным адекватным фреймворком со средствами доступности является Qt версии 5. В Qt6 много регрессий в этой области, которые, в отличие от GTK4, хотя бы чинятся, тем не менее пользоваться этим всем сложнее чем было с GTK2 в 2008 году.

В итоге автор пишет, что проще перейти на Windows чем пытаться пользоваться деградирующим Линуксом, что довольно печально ИМХО.

 , , , слепота

hateyoufeel
()

GTK4 make fonts great again или зачем врать?

Форум — Talks

Вышла новая убунта, любопытство взяло вверх и я решил посмотреть на нее.

Записал флешку, вставил в ноут, загрузился. Перед мной встал рабочий стол. Ну думаю, посмотрю эту libadwaita/gtk4. Щелкаю по иконке наутилуса, он запускается, и... и у меня всё упало. Шрифты ужасны. Можно сказать убоги. И это в убунту! В убунту где шрифты всегда были нормальными.

Ну думаю, наверное угробили свой шрифт, попробую кантарел. Попробовал. Всё равно шрифты говно. Да что ж такое? Пробую «dejavu sans», и все равно шрифты говно.

Открываю терминал и вижу, что там шрифты ок. Присмотрелся, ах вот оно в чем дело. В приложениях gtk4 нет субпиксельного rgba сглаживания... А вместо него, сглаживание оттенками серого.

Полез гуглить, и ОКАЗЫВАЕТСЯ, что его, этого самого сглаживания и не будет! Как не будет? А вот так!

Мотивация разработчиков:

«Мы не будем делать эту функциональность потому, что на рынке уже есть hidpi дисплеи, и сглаживания оттенками серого достаточно.».

ЗАНАВЕС.

Прямо там же в теме, разработчиков макают в их же испражнения, что на рынке большинство дисплеев lowdpi:

1366 x 768 + 15.6 = 100ppi

1920 x 1080 + 22 = 100ppi

1920 x 1080 + 15.6 = 140 ppi

Ну то есть никак не 200, не 400ppi, на которых сглаживания оттенками серого достаточно.

Битва была не равна. Пользователи настаивали, что их ноутбук за 1000 долларов, и шрифты приложений на gtk4, всё равно г.

В итоге, разработчики закрыли ветку и на этом всё.

Весь этот спич к чему? Напиши же ты правду. Скажи, что нет толкового разработчика. Скажи, что это слишком сложно, и вы не можете это написать. Скажи, что не хватает денег на эту функцию. И люди поддержат, помогут написать, ведь это важный функционал. Но вместо этого враньё.

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

Вывод: не надо врать. Говорите как есть. Тогда решать будет легче.

gitlab.gnome.org

reddit.com

reddit.com

 , ,

sfedosenko
()

Ответы для темы «Почему Go это плохо....»

Форум — Development

Почему-то не могу отправлять комментарии в ту тему поэтому оставлю комментарии здесь.

 ,

Elidee
()

Автоматически блокировать битые сектора оперативной памяти

Форум — Linux-hardware

Купил недавно б\у ThinkPad t490s

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

Есть возможность автоматически их блокировать? Или придётся большую портянку в загрузку добавлять?

Как ещё эту портянку подготовить не понятно. Подскажите пожалуйста

 ,

vstartsev
()

Выбор ноутбука очередной, 16-17", 2023г

Форум — Linux-hardware

16-17`` Хороший экран. 32gb ram.

Для веб-разработки, серфинга и немного простеньких игр. Работа от батареи и вес - не критичино. В основном будет юзаться стационарно. Поддержка Linux.

Смотрю на эти варианты -

https://le-retail.ru/product/21DFS0MJ00/

https://le-retail.ru/product/82RF00H9RK/

https://le-retail.ru/product/21DFS0N900/

Сам в железе особо не разбираюсь, подскажите кто юзал эти модели, что выбрать? Другие варианты тоже готов рассмотреть. По стоимости - 370к макс.

 

pi11
()

Трагедия systemd и её последствия

Форум — Talks

Привет, ЛОР!

На конференции разработчиков FreeBSD в 2018 один из разработчиков этой системы Бенно Райс (Benno Rice) представил доклад под названием «The Tragedy of systemd», выводом которого было то, что есть в Linux закапывают POSIX и кладут на совместимость с другими системами, то никто не мешает в BSD делать так же, только лучше. В частности, Бенно упомянул, что можно разработать нормальный механизм IPC, среди прочего, а также системный менеджер в духе launchd/systemd, но с меньшим количеством недостатков.

Скажи, ЛОР, спустя 5 лет кто-нибудь уже начал это делать? Потому что выглядит это довольно интересно. Я сейчас не пользуюсь BSD системами, поэтому не в курсе.

 , ,

hateyoufeel
()

Вопрос про дилемму в разработке систем хранения данных. По какому пути пойти? СУБД, таблицы, C++, треш, угар.

Форум — Development

Сложно-философский вопрос. Не будем рассматривать транзакции и какую-либо связь между таблицами, то есть не будет слова «реляционные (нет реляций между)». Рассмотрим просто таблицу. Таблица - набор строк, каждая строка - набор строго типизированных колонок. Хранит данные - построчно или поколоночно - неважно - зависит от задачи чтения. Главное, что таблица.

Утверждение: в форму таблицы впихивается очень существенное число разных данных. А которые не впихиваются - впихиваются при допиле движка таблиц специальными хаками, но остаётся внешне таблицей. Например мы хотим хранить key:string=[множество-uint64]. Возможно для какой-то задачи, оптимально будет сохранить и на диске и в памяти структуру данных вида (key_len, key, потом тупо последовательность всех uint64 отсортированных). И рядом хеш-табличку по key возможно. Но если бы мы записывали это в таблицу, у нас бы было N число строк вида (key, uint64), где N - число разных uint64, а key бы повторялся. Сходу это выглядит неоптимальным, потому что кучу раз key повторили, но умная таблица не будет хранить повторяющиеся key и получится так же оптимально, как в наивном подходе и расположит всю таблицу прямо как в примере выше - не как последовательность кортежей (SEE_PREV_VALUE, uint64), а прям как один список (uint64, uint64, …., uint64). Я ж говорю - с хаками, но таблица.

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

  1. Предположим у вас есть C++ фреймворк, куда входит сетевой код принятия запросов (протокол-буфферс, например), какой-то движок хранения данных произвольного формата в файлах, код записи-воспроизвдеения WAL, код репликации, код статистики… И этот фреймворк позволяет за 20 минут под нужный формат данных наклепать на коленке новую «СУБД», написав буквально какой-то std::unordered_set в функции main() и «завернув» этот контейнер в данный фреймворк, выдав к нему доступ из сети и сериализацию/десериализацию на диск целиком и запись в WAL и т.п. То есть, к вам приходят люди, которые хотят хранить key=value, вы оформляете им новую «СУБД» с 2 методами - set и get и катите на прод, все юзают, все счастливы. Приходят другие люди, хотят по 64-битному числу хранить множество из миллиона других 64-битных чисел и искать в нём. Вы тоже быстро фигачите какую-то структуру данных на готовых контейнерах или даже достаёте из закромов какую-то свою супероптимальную, заврорачиваете в фреймворк, куяк-куяк и в продакшен. Не нужна какая-то СУБД - выкинули, не жалко, кода было мало.

  2. И у вас есть второй вариант: сделать один хороший табличный «движок». Все эти клиенты получают всегда одно и то же представление, один и тот же интерфейс (возможно даже SQL). В особо упоротых сценариях вы дорабатываете этот движок под их формат данных (доработка повышает эффективность использования памяти/диска данной таблицей) и эта доработка оформляется просто в отдельный типа индекса или в некое хитрое слово, указываемое на этапе CREATE TABLE.

По какому пути вы бы двигались и ПОЧЕМУ?

  1. Кажется достаточно симпатичным путём, потому что хотя каждая новая «СУБД» - снова какой-то велосипед, но трудозатраты смешны - описать центральную структуру данных, остальное готово. Более того, у сторонников супер-оптимизаций тут все козыри: мол вы в «табличном движке общего назначения» никогда не задрочитесь так, как можем мы, зная конкретную структуру данных пользователя. Что, кстати, спорно - не факт, что задрачивальщики решают какую-то реальную проблему.

  2. Выглядит тоже круто, поскольку многие моменты унифицируются. Тайм Ту Маркет ещё ниже - не надо даже ждать пока под твою структуру данных разраб почешется и напишет новый (хоть и крошечный) код, ты можешь уже сейчас CREATE TABLE и в 95% случаев тебе хватит. Не хватит - тогда и придёшь ныть-оптимизировать. Универсальные моменты: способы доступа, способы анализа, язык общения между командами (все говорят про таблицы, а не каждый про свою абстрактную опердень, выраженную в каждый раз новом C++ коде), способы конвертации данных (переливка между таблицами - это понятнее, чем писать конвертеры данных между одним форматом (1) и другим форматом (1) и т.п., проще дорабатывать всякие автоматические решардинги или переливаторы данных - один раз сделали для таблиц и работает у всех, не надо каждый раз думать как оригинальный формат данных (1) обрабатывать. В конце-концов, можно сделать DROP COLUMN, что в случае (1) оборачивается жестью и конвертацией старых данных).

Спасибо.

 

lesopilorama
()

C++ SSL чудесатые чудеса

Форум — Development

Здравствуйте, коллеги!

Пишу сетевой сервер с шифрованием TLS (однопоточный через poll). Большей частью получаются, но наткнулся на очень неприятную вещь: Если клиент, внезапно, некорректно рвет соединение, то сервер крашится.

Т.е. при вызове SSL_read или SSL_write все крашится.

Долгие «экскременты» показали интересную штуку: если я насильственно выбиваю клиента во время работы, то на сервер приходит пакет нулевой длинны.

Это я отлавливаю просто читая из сокета через recv с установленным флагом MSG_PEEK, т.е. считать из буфера, но не удалять данные.

recv считывает 0 байт, что является закрытием соединения, а вот SSL_read натакаясь на пакет нулевой длинны крашит программу.

Разумеется, можно сделать обертку типа:

int ssl_recv(SSL * ssl, char * data, int data_size){
    int s = SSL_get_fd(ssl);
    if(recv(s, data, data_size, MSG_PEEK)){
         return SSL_read(ssl, data, data_size);
    }
    return -111;
}

При получении -111 от ssl_recv закрывать соединение на стороне сервера.

Но способ мне кажется несколько кривоватым.

Это же каждый раз, по большому счету, делать целых 2 ресива!

Есть способ узнать количество данных в сетевом буфере без его считывания?

Или, возможно, есть более прямой способ уберечь сервер от крашей при некорректном вылете клиента?

PS

if(SSL_get_state() == TLS_ST_OK){
    retrurn SSL_read(ssl, data, data_size);
}

Не подходит. Этот SSL_get_state() радостно рапортует TLS_ST_OK даже при вылете клиента.

 , ,

HighMan
()

Как живут после изменений с VPN?

Форум — Admin

Недавно столкнулся с проблемой блокировки провайдером VPN.
Решил. Надолго? Надёжно? Не знаю, пока работает.

Сразу возникли вопросы по ПО: как теперь с лицухами?
Те же IDE? Там для любого чиха надо на сервера компании за обновлением инструментария.

Раньше как - «мы не работаем с Россией», хоба! И мы стали индусами или европейцами. Теперь вроде стать индусом непросто.

Как вы выходите из положения? Или пока не аукнулось?

Тут ещё есть интересные ссылки:
https://vc.ru/legal/865273
https://vc.ru/services/864522

 , , , ,

Neuromagus
()

Обработка ошибки Out of memory

Форум — Development

Всем привет,

Подскажите куда смотреть. Имеется софтинка, которая активно использует ОЗУ, причем пользователи могут туда залить много данных и написать правила обработки этих данных так, что если правила написали неудачно, то софтинка может выжрать всю память.

Ожидается, что если доступная память закончилась, (своп отключен, оом киллер тоже отключен) процесс из аллокатора получит ошибку, что память кончилась и процесс закончит обработку запроса пользователя и освободит выделенную память.

Но процесс запущен в виртуалке в контейнере, хостится девопсами. Происходит следующее - когда память кончается, потоки запрашивающие память переходят в состояние D и мы видим в стеке следующее:

[<ffffffffb244e13d>] mem_cgroup_oom_synchronize+0x16d/0x590
[<ffffffffb23cdad4>] pagefault_out_of_memory+0x14/0x90
[<ffffffffb29aaf88>] mm_fault_error+0x6a/0x15b
[<ffffffffb29bfa61>] __do_page_fault+0x4a1/0x510
[<ffffffffb29bfb05>] do_page_fault+0x35/0x90
[<ffffffffb29bb7b8>] page_fault+0x28/0x30
[<ffffffffffffffff>] 0xffffffffffffffff

Процесс зависает, докер образ становится необслуживаемым и лечится только перезагрузкой. Что мы готовим не так?

 ,

sotlef
()

dbus-daemon в docker

Форум — General

Здравствуйте. Есть приложение, использующее dbus для обмена данными между модулями. Для юнит тестирования создаются два объекта, которы должны общаться по dbus. На хосте работает нормально, но тесты должны запускаться в docker-е. Там есть возможность доставить dbus-daemon. Подскажите, как его правильно запустить, чтобы один модуль мог зарегистрировать сервис, а второй отправлять ему сообщения. Я так понимаю, нужно использовать session bus. Полагаю, самое простое, прямо из приложения запустить dbus-daemon и потом к нему подключиться. На данный момент не получается корректно запустить демона в режиме session. При попытке подключиться к сервису, имею ошибку: error: QDBusError(«org.freedesktop.DBus.Error.NotSupported», «Unable to autolaunch a dbus-daemon without a $DISPLAY for X11»). Как это правильно реализовать?

 ,

gogoer
()

Взлом сервера Linux по SSH

Форум — General

Всем привет! Я пока только новичок, пытаюсь разобраться. Дан сервер и логин/пароль чтоб туда войти. Там помимо меня еще 4 юзера, нужно узнать пароль одного из них (имя известно). Как это сделать, если мой юзер без root.

Если это поможет, есть файл /etc/passwd

 

Kosuge_Goto
()

Обернуть древние программы для запуска под новым оффтопиком и, чем чёрт не шутит, под онтопиком тоже

Форум — Talks

Решено: конкретно этот софт совместим даже не с 95-98, а с 3.11 виндой, и прекрасно запускается в досбоксе. Вопрос запуска программ поновее, которые ни в досбоксе не работают, ни на современной венде не хотят, остяётся открытым (хотя уже более для души - если речь не идёт о редистрибуции для несведущих, то и wine в WSL подходит).

Имеется некоторое количество софта девяностых-нулевых годов выпуска: мультимедийные энциклопедии издательства Dorling Kindersley, локализированные естественно. Некоторые из них совершенно чумовые и аналогов не имеют. Требуется запустить их под седьмой-десятой виндой, чтоб детишки радовались.

Вот и зреет несколько идей, одна бредовее другой - в основном орбитируют вокруг тонкой виртуалки с 98 виндой и возможно даже снепшотом памяти, чтоб побыстрее запускалось. Проблема в том, как её кастрировать, чтобы запускалась одна программа в одной виртуалке, а то учительница, которой это нужно, не осилит (или осилит? но точно не захочет) концепцию виртуальной машины со своей ОСью внутри.

winevdm тоже не вариант, ведь там надо устанавливать ядерный драйвер, а кто тебе даст на школьном компьютере.

Если кому интересно будет приглядеться и что-то посоветовать, то данные энциклопедии были представлены на российском рынке, и на всем известном сайте отслеживания прудов имеется, например, «Мир Птиц».

 , ,

token_polyak
()

libcurl vs Boost.Asio

Форум — Development

Приветствую

Надо из кода на плюсах слать PUSH на андройд через REST запросы POST на ихний https сервер.

Что быстрее будет из этих двух работать???

Курл конечно много проще, но это ж надо еще либу эту поддерживать отдельно в проекте, бууст почти как стд вроде как, хотя вопрос конечно больше в эффективности.

ЗЫ. количество посылок в секунду пока хз сколько )

 , ,

wolverin
()

Inkscape 1.3

Новости — Мультимедиа
Группа Мультимедиа

Выпущена новая версия редактора векторной графики Inkscape.

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

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

 , ,

AP
()

Какую последнюю версию Microsoft Office можно беспроблемно запустить через WINE?

Форум — Desktop

Пробовал 2019 - не работает.

Всякие альтернативы, по типу Libre или WPS Office ломают структуру/вёрстку в документах, особенно в презентациях. Поэтому я их не использую

 , ,

MrCookie
()

Wine 8.13

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

С момента прошлого релиза 8.12 закрыто 36 отчётов об ошибках и внесено 290 изменений.

  • Добавлена поддержка WoW64 в WineGStreamer
  • В jscript.dll добавлена поддержка объекта WeakMap для работы с коллекцией пар ключ/значение, в которых ключ является объектом, к которому может быть прикреплено произвольное значение.
  • API Vulkan обновлен до версии 1.3.258
  • Добавлен перевод на грузинский язык
  • Закрыты отчёты об ошибках, связанные с работой приложений: Steam, MS Office 2007, Powerpoint 2007, FrameMaker 7.2/8.0, Kolab E14, Iperf 2.0.8.
  • Закрыты отчёты об ошибках, связанные с работой игр: League of Legends, S.T.A.L.K.E.R. (официальный движок, официальное издание), Fallout 3, Total War Shogun 2, Medieval II: Total War, Yu-Gi-Oh! ONLINE 3, AvP 2000, Star Ocean The Last Hope, Kena: Bridge of Spirits, Total Conflict: Resistance, Dying Light 2: Stay Human.

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

 , ,

ips2010
()