Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 4.0.
Chybí vám někdo, s kým byste si popovídali o bastlení, technice, počítačích a vědě? Nechcete riskovat debatu o sportu u piva v hospodě? Pak doražte na virtuální pokec u virtuálního piva v rámci Virtuální Bastlírny organizované strahovským MacGyverem již tento čtvrtek. Možná se ptáte, co se tak může probírat? Dají se probrat slavná výročí - kromě 55 let obvodu 555 (což je mimochodem prý andělské číslo) a vzpomínky na firmu Signetics -
… více »GTK2-NG je komunitní fork GTK 2.24 (aktuální verze je 4.22). Oznámení a diskuse v diskusním fóru Devuanu, forku Debianu bez systemd. Není to jediný fork GTK 2. Ardour je například postaven na vlastním forku GTK 2 s názvem YTK.
V neděli 17. května 2026 proběhne v Českých Budějovicích první MobileLinux Hackday zaměřený na Linux v mobilech, embedded platformy a open source hardware. Po sedmi úspěšných měsíčních setkáních v Praze se akce přesouvá také do jižních Čech, aby se komunita mobilního Linuxu mohla potkat i mimo hlavní město. Akce se uskuteční v konferenčním sále Vajgar v Clarion Congress Hotelu (Pražská tř. 2306/14) se zahájením mezi 14:00 až 15:00 a … více »
Vývojáři Debianu zhruba v polovině vývojového cyklu Debianu 14 s kódovým názvem Forky rozhodli, že Debian musí dodávat reprodukovatelné balíčky, tj. kdokoli si může nezávisle ověřit, že daný binární balíček vznikl překladem a sestavením z konkrétních zdrojových kódů. Aktuálně je reprodukovatelných 98,29 % balíčků.
Německý e-shop Škoda Auto byl hacknut. Útočníci získali přístup k uživatelským údajům (jméno, adresa, e-mail, heslo, telefon, …).
Na webu konference Den IPv6 2026, která se uskuteční 4. června v Národní technické knihovně v pražských Dejvicích, je nyní k dispozici kompletní program této tradiční akce věnované tématům spojeným s protokolem IPv6. Na celodenní pásmo přednášek je třeba se přihlásit a zaplatit účastnický poplatek 242 korun. Registrační formulář najdou zájemci opět na webu akce. Konferenci Den IPv6 2026 organizují i letos společně sdružení CESNET, CZ.NIC a NIX.CZ.
Byl představen emulátor terminálu Ratty (GitHub) s podporu 3D grafiky přímo v terminálu. Inspirací byl operační systém TempleOS od Terryho Davise. Ratty je napsán v jazyce Rust. Využívá knihovnu Ratatui pro tvorbu rozhraní a herní engine Bevy pro 3D vykreslování.
Evropské instituce i některé americké státy dál zpřísňují pravidla pro ověřování věku na internetu. Cílem je zabránit dětem v přístupu k obsahu pro dospělé. Úřady ale narážejí na zásadní problém – stále více lidí používá VPN, tedy služby umožňující skrýt identitu i skutečnou polohu na internetu. Právě VPN nyní Evropská parlamentní výzkumná služba (EPRS) označila za „mezeru v legislativě, kterou je potřeba uzavřít“ [Novinky.cz].
Multiplatformní open source aplikace pro psaní poznámek Joplin (Wikipedie) byla vydána v nové verzi 3.6. Nově lze mít v poznámkách embedovaný externí obsah, např. YouTube videa.
Tak zase kejsnu u sortu tech polozek. je to poooomaly. Tridim to zvlast a pak to teprve vsechno cpu do treeviewu. Chtelo by to nejakou pomoc.
#include <sys/stat.h>
#include <sys/types.h>
#include <gtk/gtk.h>
#include <dirent.h>
#include <vector>
#include <string>
#include <time.h>
class FileInfo{
protected:
std::string _fileName;
std::string _linkTarget;
mode_t _mode;
off64_t _size;
uid_t _uid;
gid_t _gid;
bool _link;
time_t _date;
GdkPixbuf *_pixbuf;
public:
FileInfo();
FileInfo( const FileInfo& from );
~FileInfo();
FileInfo& operator=( const FileInfo& from );
void setFileName( const std::string& fileName );
void setIsLink( bool link );
void setLinkTarget( const std::string& linkTarget );
void setMode( mode_t mode );
void setSize( const off64_t& size );
void setUid( uid_t uid );
void setGid( gid_t gid );
void setDate( time_t date );
void setPixbuf( GdkPixbuf *pixbuf );
bool isLink() const;
bool isDevice() const;
bool isDir() const;
bool isDots() const;
//directory
std::string getPath() const;
//absolute path
std::string getFullName() const;
//name without ext
std::string getName() const;
//ext without leading dot
std::string getExt() const;
std::string getSize() const;
std::string getDate() const;
std::string getOwner() const;
std::string getGroup() const;
std::string getAttrs() const;
std::string getLinkTarget() const;
std::string getTime() const;
GdkPixbuf *getPixbuf() const;
void getUid( uid_t& uid ) const;
void getGid( gid_t& gid ) const;
void getMode( mode_t& mode ) const;
void getSize( off64_t& size ) const;
void getDate( time_t& date ) const;
};
/*
* NOTE:
* FileInfo classes should be allocated with new operator
* FileInfo classes are freed with delete operator on remove(), clear() and on FileInfoList destruction.
*/
class FileInfoList: public std::vector<FileInfo*>{
public:
typedef std::vector<FileInfo*>::size_type size_type;
FileInfoList();
~FileInfoList();
void add( FileInfo* fi );
void remove( size_type pos );
void clear();
FileInfo* at( size_type pos );
FileInfo* operator[]( size_type pos );
const FileInfo* at( size_type pos ) const;
const FileInfo* operator[]( size_type pos ) const;
void swap( size_type pos1, size_type pos2 );
/*
* Columns:
* 0 - name
* 1 - ext
* 2 - size
* 3 - date
* 4 - attr
* 5 - owner
* 6 - group
*/
void sort( int column, bool ascending );
size_type count() const;
off64_t getTotalSize() const;
};
Potřeboval bych napsat ten void FileInfoList::sort( int column, bool ascending ).
At uz je ascending true ci false, adresare jako prvni. Pokud plati FileInfo::isDots(), jedna se o ".." a to musi byt vzdy prvni. Pro prehozeni polozek pouzit tu fci swap(). Datum tridit pomoci:FileInfo::getDate( datum ); struct tm *date = localtime( &datum );Na stringy pouzit
g_utf8_collate( const gchar*, const gchar* ). Pokud jsou dve pripony stejny, setridit to podle jmena. Pokud se tridi dle velikosti, adresare maji 0, zarizeni 0, linky maji bud 0 (je true isDir() nebo isDevice()) nebo nejakou velikost(odkazuje na soubor). Prava tridit jako stringy. Ta fce at() neprovadi zadne kontroly. Operator[] jen vola at(), takze je rychlejsi pouzit at().
Koukal jsem na quick sort, ale tohle s nim fakt neseradim. Opravdu bych byl vdecny, kdyby mi to nekdo napsal.
Tiskni
Sdílej:
#include <iostream>
#include <vector>
#include <algorithm>
#include "Rational"
using namespace std;
int main() {
vector<XMath::Rational<int> > cisla;
vector<XMath::Rational<int> >::const_iterator ci;
cisla.push_back(XMath::Rational<int>(2, 3));
cisla.push_back(XMath::Rational<int>(3, 4));
cisla.push_back(XMath::Rational<int>(1, 2));
cisla.push_back(XMath::Rational<int>(4, 5));
cout << "Čísla na začátku" << endl;
for (ci = cisla.begin(); ci != cisla.end(); ++ci) {
cout << *ci << endl;
}
sort(cisla.begin(), cisla.end());
cout << "Čísla na konci" << endl;
for (ci = cisla.begin(); ci != cisla.end(); ++ci) {
cout << *ci << endl;
}
return 0;
}
Sestupné třídění obstará funkce sort. Stačí zadat iterátory ukazující na začátek a konec seznamu, třídění se potom provede jakoby zázračně samo. Pokud nejsou použity vestavěné číselné typy, je potřeba napsat přetížené operátory porovnání.
Pro přeložení jsou potřeba dva hlavičkové soubory se šablonami, které jsou k dispozici tady.
Třídit lze i jinak – man qsort. Často je zbytečné se namáhat s psaním třídicího kódu a postačují funkce z knihovny C nebo STL.
/**
* 1. Dedit od konkretnich typu (std::vector<FileInfo*>) se moc nedoporucuje.
* Akorat tam podivne redeklarujete stadardni metody - docela bych chtel
* videt jejich definice.
*
* 2. Pokud chcete kontrolu pod g++/libstdc++ pouzijte
*
* g++ -D _GLIBCXX_CONCEPT_CHECKS -D _GLIBCXX_DEBUG -o file.o file.cc
*
* a nemusite sasit s at. Plus vam to ohlida spoustu dalsich veci.
*
* 3. Nasledujici kod jsem netestoval.
*
*/
#include <vector>
#include <algorithm>
#include "FileInfo.h"
bool lt_file_info(const FileInfo* f1, const FileInfo* f2)
{
if( f1->isDots() != f2->isDots() )
return f1->isDots() < f2->isDots();
if( f1->isDir() != f2->isDir() )
return f1->isDir() < f2->isDir();
// zjistete si, co tahle funkce vraci a podle toho se
// zaridte (a co prebira - podle deklarace, kterou jste
// uvedl, gchar, ale getName vraci std::string)
return g_utf8_collate(f1->getName(), f2->getName());
}
void test()
{
std::vector<FileInfo*> file_list;
std::sort(file_list.begin(), file_list.end(), lt_file_info);
}
qsort ze stdlib.h se taky použít nedá. Asi si budu muset napsat nejakej ten quicksort sám.
tím ukazatelem na fci by nebyl problém, deklaroval bych jí jako static, problém by byl, že bych pak neměl ukazatel this a pak bych stejně nezjistil, dle čeho řadit.Omlouvám se že vám do toho lezu jako člověk co se s C++ rozloučil dávno před STL... ale podle dokumentace ten třetí parametr metody sort není funkce, ale functor (tedy objekt)! Tedy stačí udělat objekt jako potomek
binary_function, kterů bude třídit podle toho co je potřeba.
Něco je o tom psáno zde, i s příklady.
Pro jine pripady (razeni podle data) samozrejme nadefinujete jinou porovnavaci funkci a budete volat sort s jinou porovnavaci funkci. Taky muzete udelat malou hirearchii trid s virtualnim 'operator<'. Jak je ctena libost. Ale nechapu, proc si chcete vyrabet svuj vlastni sort - tim si akorat pridelate praci a nadefinovani vsech porovnani se stejne nevyhnete.