Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.
Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).
Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Google představil platformu Code Wiki pro rychlejší porozumění existujícímu kódu. Code Wiki pomocí AI Gemini udržuje průběžně aktualizovanou strukturovanou wiki pro softwarové repozitáře. Zatím jenom pro veřejné. V plánu je rozšíření Gemini CLI také pro soukromé a interní repozitáře.
V přihlašovací obrazovce LightDM KDE (lightdm-kde-greeter) byla nalezena a již opravena eskalace práv (CVE-2025-62876). Detaily v příspěvku na blogu SUSE Security.
Byla vydána nová verze 7.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Tor Browser byl povýšen na verzi 15.0.1. Další novinky v příslušném seznamu.
Česká národní banka (ČNB) nakoupila digitální aktiva založená na blockchainu za milion dolarů (20,9 milionu korun). Na vytvořeném testovacím portfoliu, jehož součástí jsou bitcoin, stablecoiny navázané na dolar a tokenizované depozitum, chce získat praktickou zkušenost s držením digitálních aktiv. Portfolio nebude součástí devizových rezerv, uvedla dnes ČNB v tiskové zprávě.
Apple představil iPhone Pocket pro stylové přenášení iPhonu. iPhone Pocket vzešel ze spolupráce značky ISSEY MIYAKE a Applu a jeho tělo tvoří jednolitý 3D úplet, který uschová všechny modely iPhonu. iPhone Pocket s krátkým popruhem se prodává za 149,95 dolarů (USA) a s dlouhým popruhem za 229,95 dolarů (USA).
Byla vydána nová stabilní verze 7.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 142. Přehled novinek i s náhledy v příspěvku na blogu.
Jelikož padla spousta návrhů na použití std::sort k řazení, učinil jsem tak. Bohužel však nepociťuji ŽÁDNÉ zrychlení. Připadá mi to úplně stejně rychlé.
void FileInfoList::sort( int column, bool ascending )
{
FileInfoComparator fic( column, ascending );
std::sort( begin(), end(), fic );
}
bool FileInfoComparator::operator()( const PFileInfo& fi1, const PFileInfo& fi2 )
{
if( fi1->isDots() ) return true;
if( fi2->isDots() ) return false;
if( fi1->isDir() && !fi2->isDir() ) return true;
if( fi2->isDir() && !fi1->isDir() ) return false;
int cmpRes = 0;
off64_t size1,size2;
time_t date1, date2;
switch( sortColumn )
{
case FileInfoList::COLUMN_NAME:
cmpRes = g_utf8_collate( fi1->getNameTitle().c_str(), fi2->getNameTitle().c_str() );
break;
case FileInfoList::COLUMN_EXT:
cmpRes = g_utf8_collate( fi1->getName().c_str(), fi2->getName().c_str() );
break;
case FileInfoList::COLUMN_SIZE:
fi1->getSize(size1); fi2->getSize(size2);
if(size1>size2) cmpRes = 1;
else if( size2>size1 ) cmpRes = -1;
break;
case FileInfoList::COLUMN_DATE:
fi1->getDate(date1); fi2->getDate(date2);
if(date1>date2) cmpRes = -1;
else if(date2>date1) cmpRes = 1;
break;
case FileInfoList::COLUMN_ATTRS:
cmpRes = g_utf8_collate( fi1->getAttrs().c_str(), fi2->getAttrs().c_str() );
break;
case FileInfoList::COLUMN_OWNER:
cmpRes = g_utf8_collate( fi1->getOwner().c_str(), fi2->getOwner().c_str() );
break;
default:
cmpRes = g_utf8_collate( fi1->getGroup().c_str(), fi2->getGroup().c_str() );
break;
}
if(cmpRes == 0) cmpRes = g_utf8_collate( fi1->getName().c_str(), fi2->getName().c_str() );
if(ascending) cmpRes = -cmpRes;
return (cmpRes > 0);
}
Tiskni
Sdílej:
Někdy nestačí myslet a je třeba vědět.
Kdepak, bez profileru při ladění výkonu nehnu prstem.
. Taky nerad přepisuju kód. o němž 100% nevím, že je to ten kousek, co mě zpomaluje.
stat() nebo lstat()? Pak by mne nepřekvapilo, pokud by problém byl skutečně tady a ne v samotném řazení seznamu.
typedef shared_ptr<PFileInfo> PFileInfoPtr_t; typedef std::vector<PFileInfoPtr_t> fileContainer;
class FileInfoList: public std::vector<FileInfo*>{
...
}
Drží tedy ukazatele. PFileInfo je jen typedef na FileInfo*, abych se vyhnul něčemu jako const FileInfo*& v tom operátoru ().

preco neskusit (ako som navrhoval)
- extra komparatory (triedy) pre kazdy typ stlpca
- vyhodit . a .. z filelistu
navyse, nie je doriesena otazka, ako sortovat v pripade rovnosti kriteria (datumy, velkosti, ...)
return cmpRes == 0;vlastne i to moze byt dovod tej "pomalosti"
)
20:08:39:458 start 20:08:40:419 endsamozrejme, ziskani celeho vypisu rwxrw-rw- by to urcite zpomalilo, ale trideni mi QListView dela uplne sam - krome trideni podle data modifikace. Tam se musi napsat jedna porovnavaci funkce.
bool FileInfoComparator::operator()( const PFileInfo& fi1, const PFileInfo& fi2 )Pokud definice PFileInfo vypada nejak takto
typedef FileInfo* PFileInfo;tak to dohromady nedela to, co nejspis prepodkladate. Vyleze z toho totiz reference na konstatni ukazatel na objekt FileInfo. Neboli primo
fi1 menit nelze, ale objekt, na ktery ukazuje, ano (*fi1 = *fi2 projde). A take je zcela zbytecne cpat na ukazatele jeste reference. IMHO spravna deklarace by mela vypadat takto
bool FileInfoComparator::operator()(const FileInfo* fi1, const FileInfo* fi2 )