Konečně se ochladilo, možná i díky tomu přestaly na chvíli padat rakety jako přezrálé hrušky, díky čemuž se na Virtuální Bastlírně dostane i na jiná, přízemnější témata. Pokud si chcete jako každý měsíc popovídat s dalšími bastlíři, techniky, vědci a profesory u virtuálního pokecu u piva, Virtuální Bastlírna je tu pro Vás.
Ještě před ochlazením se drát na vedení V411 roztáhl o 17 metrů (přesné číslo není známé, ale drát nepřežil) a způsobil tak… více »Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
PixiEditor byl vydán ve verzi 2.0. Jedná se o multiplatformní univerzální all-in-one 2D grafický editor. Zvládne rastrovou i vektorovou grafiku, pixel art, k tomu animace a efekty pomocí uzlového grafu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU LGPL 3.0.
Byly představeny novinky v Raspberry Pi Connect for Organisations. Vylepšen byl protokol auditu pro lepší zabezpečení. Raspberry Pi Connect je oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče. Verze pro organizace je placená. Cena je 0,50 dolaru za zařízení za měsíc.
CISA (Cybersecurity and Infrastructure Security Agency) oznámila veřejnou dostupnost škálovatelné a distribuované platformy Thorium pro automatizovanou analýzu malwaru. Zdrojové kódy jsou k dispozici na GitHubu.
Ubuntu nově pro testování nových verzí vydává měsíční snapshoty. Dnes vyšel 3. snapshot Ubuntu 25.10 (Questing Quokka).
Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia Proton Authenticator. S otevřeným zdrojovým kódem a k dispozici na všech zařízeních. Snadno a bezpečně synchronizujte a zálohujte své 2FA kódy. K používání nepotřebujete Proton Account.
Argentinec, který byl náhodně zachycen Google Street View kamerou, jak se zcela nahý prochází po svém dvorku, vysoudil od internetového giganta odškodné. Soud uznal, že jeho soukromí bylo opravdu porušeno – Google mu má vyplatit v přepočtu asi 12 500 dolarů.
Eben Upton, CEO Raspberry Pi Holdings, informuje o RP2350 A4, RP2354 a nové hackerské výzvě. Nový mikrokontrolér RP2350 A4 řeší chyby, i bezpečnostní, předchozího RP2350 A2. RP2354 je varianta RP2350 s 2 MB paměti. Vyhlášena byla nová hackerská výzva. Vyhrát lze 20 000 dolarů.
Představen byl notebook TUXEDO InfinityBook Pro 15 Gen10 s procesorem AMD Ryzen AI 300, integrovanou grafikou AMD Radeon 800M, 15,3 palcovým displejem s rozlišením 2560x1600 pixelů. V konfiguraci si lze vybrat až 128 GB RAM. Koupit jej lze s nainstalovaným TUXEDO OS nebo Ubuntu 24.04 LTS.
while (int a = getData()) { // kód }
for (int a = getData(); a; a = getData()) { // kód }Nicméně tohle už v C++ validní není:
do (int a = getData()) { // kód } while ((a = getData()));Takže nás to nutí psát ošklivé konstrukce jako třeba:
{ int a = getData(); do { // kód } while ((a = getData())); }Smyslem je pracovat uvnitř cyklu s hodnotou proměnné
a
, ale podmínku testovat až na jeho konci.
Přitom ale chceme mít rozsah platnosti proměnné omezen na daný cyklus.
Že by po podobné konstrukci C++ byla poptávka, můžeme soudit podle dotazů zde a zde.
Řešením může být tato obskurní knihovna.
A následný kód je najednou validní.
do (int a = getData()) { // kód } while ((a = getData()));Důležité je, že tato knihovna neporuší původní syntaxi klíčového slova
do
v cyklu do-while.
Ještě dodám, že ty dvojité závorky jsou tam záměrně. Jinak by GCC vypsalo varování:
warning: suggest parentheses around assignment used as truth value [-Wparentheses]Pokud se vám takové konstrukce líbí, tak z tohohle a tohohle budete nadšeni.
Tiskni
Sdílej:
do { ... } while( getData() );případně, pokud bych chtěl ten výsledek, tak
int a; do { ... } while(( a=getData() ));
a
definovaná, ale během první iterace nebude mít definovanou hodnotu!
A k čemu je tato konstrukce dobrá? Proměnná "a" vznikne až v podmínce u while na konci bloku, takže se nemůže použít uvnitř, a zanikne při opuštění cyklu.Nicméně tohle už v C++ validní není: do { // kód } while (int a = getData());
while (int a = getData()) {
// kód
}
Je moc uzitecna konstrukce, obdobne jako:
if (int a = getData()) {
...
}
A za tohle bych programatora zabil:
switch (int a = getData()) do default: {
// kód
} while ((a = getData()));
Blog prispevek naprosto onicem. C++ ma milion dalsich vlastnosti, ktere by si zaslouzili hate, ale tohle zrovna ne.
Nicméně tohle už v C++ validní není: do (int a = getData()) { // kód } while ((a = getData()));Jen pro info. Toto se také nepřeloží :D.
#include <iostream> #include <functional> int glob = 10; template <typename TData> void do_loop(const std::function<TData ()> &getter, const std::function<void (TData&)> &worker) { TData data = getter(); do { worker(data); } while ((data = getter())); } int main() { int i = 65; do_loop<int>([&]() { return glob--;}, [&](int &d){ std::cout << i + d << "\n"; }); return 0; }Jinak ten zápis s dvojím voláním
getData()
mi přijde úplně normální...
Obskurní konstrukce? To by se to taky mohlo napsat takto:
Jinak ten zápis s dvojím voláním getData()
mi přijde úplně normální...
Myslím tu třetí možnost s do-while zabaleným scopu.