Český statistický úřad (ČSÚ): Průměrná hrubá měsíční mzda ICT specialistů v roce 2025 meziročně vzrostla o 6 % na téměř 100 tisíc korun. Nejlépe placeni byli vývojáři softwaru. Dlouhodobým trendem zůstává nízké zastoupení žen, a to jak mezi specialisty, tak studenty těchto oborů.
Ochranný svaz autorský (OSA) připravuje žalobu na společnost Suno, která umožňuje generování hudby pomocí umělé inteligence (AI). ČTK to sdělil předseda představenstva OSA Roman Strejček. Suno podle něj bez souhlasu využívá k trénování svých modelů hudbu autorů, které svaz zastupuje. Nedávný investigativní materiál magazínu The Atlantic ukázal, že firmy jako Suno nebo Udio k trénování modelů používají rozsáhlé databáze obsahující miliony skladeb. V databázích, které časopis zveřejnil, lze dohledat i písně řady českých a slovenských umělců.
Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vyřešen byl problém s macOS 27 Golden Gate. Vývoj lze podpořit na Open Collective a GitHub Sponsors.
EU dnešním dnem zavedla clo ve výši 3 eur na balíky nízké hodnoty dovážené ze zemí mimo EU. To zahrnuje širokou škálu výrobků běžně nakupovaných on-line, jako jsou oděvy, hračky, elektronika a další spotřební zboží v hodnotě až 150 EUR.
Vyšel Redmine 7.0, jeden z nejlepších open source ticketovacích systémů. Došlo k migraci na Rails 8, vylepšení UI/UX, Workflow, byla přidána podpora náhledu pro Microsoft Office a LibreOffice dokumenty, došlo k výkonnostním optimalizacím a přibylo spoustu dalších oprav a novinek. Více informací v oficiálním oznámení.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).
Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,
… více »Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.
class Thread{
private:
pthread_t m_tHandle;
unsigned int m_nStatus;
Mutex m_tMutex;
public:
enum Status{
NotRunning = 0,
Running = 1,
Suspended = 2,
Zombie = 3
};
Thread();
virtual ~Thread();
void run();
void kill();
void wait();
pthread_t handle() const { return m_tHandle; };
void handle( pthread_t handle ) { m_tHandle = handle; }
void lock() { m_tMutex.lock(); }
void unlock(){ m_tMutex.unlock(); }
bool tryLock(){ return m_tMutex.tryLock(); }
void status( unsigned int status );
unsigned int status() const { return m_nStatus; }
virtual void start();
virtual void stop();
static void waitForAll();
};
static void *entry_point(void *thread_)
{
Thread* thread = reinterpret_cast<Thread*>(thread_);
signal(SIGQUIT, signal_handler_SIGQUIT);
thread_list_mutex.lock();
thread_list.insert( std::make_pair(pthread_self(), thread) );
thread_list_mutex.unlock();
thread->handle(pthread_self());
thread->start();
thread->stop();
thread->status(Thread::Zombie);
pthread_exit(NULL);
return NULL;
}
void Thread::run()
{
if( status() == NotRunning )
{
label_create:
status(Running);
pthread_create(&m_tHandle, NULL, &entry_point, this);
}
else if( status() == Zombie ){
wait();
goto label_create;
}
}
Ve funkci static void *entry_point(void *thread_) volám thread->start(). Problém je, že se vždy zavolá metoda start() třídy Thread a né metoda odvozené třídy MujThread:
class MujThread: public Thread{
public:
MujThread(){}
virtual ~MujThread(){}
virtual void start()
{
printf("MujThread start()\n");
while(true);
}
virtual void stop()
{
printf("MujThread stop()\n");
}
};
(Thread*)thread_, bezúspěšně. Vím ale, že ten kód ještě nedávno fungoval. Pomalu bych řekl, že přestal fungovat po aktualizaci gcc.
pure virtual method called terminate called without an active exception ./testutk: line 4: 6543 Neúspěšně ukončen (SIGABRT)
Nemáte dohromady ty verze GCC smíchané (že by kus kódu byl zkompilovaný se starou verzí)?
make clean.
MujThread::start() nedávat jako inline. Kompilátor by sice měl být dost chytrý, aby buď ignoroval evidentní chybu programátora, nebo protestoval, jenže právě to ignorování chyby lze provést dvěma způsoby: buď bude ignorovat virtual nebo inline (zde implicitní). Musel bych se podívat, co v takové situaci předepisuje specifikace jazyka, ale v každém případě bude jistější nepožadovat po překladači něco, co je principiálně nemožné.
MujThred::start() jako inline, nefunguje to. Mám jinou třídu (Application):
class Application{
....
public:
....
virtual bool onInit() { return true; }
virtual void onQuit() {}
....
};
Od té odvozuji TestApplication:
class TestApplication: public Application{
protected:
MujThread t;
public:
virtual bool onInit()
{
...
t.run();
return true;
}
virtual void onQuit()
{
t.kill();
}
};
Zde však volání virtuálních metod funguje správně, což popírá vaši domněnku. (Už jste viděl zdrojový kód Qt knihovny? Je tam toho plno.) Problém bude nejspíš jinde. A jak říkám výše, ten kód fungoval naprosto bezchybně, když jsem ho před časem použil (ale na jiné distribuci, s jiným kernelem - 2.6.17, teď 2.6.18 - a s trochu nižší verzí GCC).
Thread::run() (viz. kód výše), konkrétně se zavolá po vytvoření nového vlákna: pthread_create(&m_tHandle, NULL, &entry_point, this).
Tiskni
Sdílej: