Jak si zobrazit pomocí Chrome a na Chromiu založených webových prohlížečích stránky s neplatným certifikátem? Stačí napsat thisisunsafe.
V repozitáři AUR (Arch User Repository) linuxové distribuce Arch Linux byly nalezeny a odstraněny tři balíčky s malwarem. Jedná se o librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin.
Dle plánu by Debian 13 s kódovým názvem Trixie měl vyjít v sobotu 9. srpna.
Vývoj linuxové distribuce Clear Linux (Wikipedie) vyvíjené společností Intel a optimalizováné pro jejich procesory byl oficiálně ukončen.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
"A proč nesnáším Javu já - člověk, který ji zná z vyprávění".Tihle lidé obvykle nesnášejí Javu ani ne tak z vyprávení, ale z pohledu uživatele desktop GUI SW napsaného v Javě.
Jen škoda, že Qt jambi nefunguje s gcj...Nestaci OpenJDK?
GCJ
dávno zanikl. To opravdu ještě existuje a dokáže to fungovat se současnými Java aplikacemi? A zpomaluje to běh Java aplikací nebo to vede k jejich záhadným chybám hodně, a nebo jenom trochu?
To opravdu ještě existuje a dokáže to fungovat se současnými Java aplikacemi?Bohužel ano. Třeba ve Fedoře je proti této věci zkompilována například OpenOffice (nebo ji má jako závislost). Nevím proč, když už existuje OpenJDK se používá tato věc.
Ale muzes prijet a ukazu ti jak behaji Qt aplikace (Amarok, Kate, KMail) a jak behaji Java aplikaceTo jsou ale KDE4 aplikace, tudíž nejen Qt, ale i Kdelibs. Imho Kdelibs nejsou zrovna výkvět rychlosti...
:) mirec@kofola ~ $ java bash: java: príkaz nenájdenýRozhodne mi openoffice nepripadá o nič rýchlejší.
Ostatně, na Javu se svádí i rychlost OpenOffice.orgOpenoffice ide pomaly aj bez Javy.
Vlastně - můžeme dávat OpenOffice.org jako "jasný důkaz" toho, že C++ je pomalé. :)))No tak asm bude asi rychlejší
To, že C++ je pomalé je blbosť. OpenOffice mal byť pôvodne v Jave, ale bolo to príliš pomalé (nie, že by súčasný OpenOffice oplýval rýchlosťou).To sa lahko generalizuje. Aj v c++ sa da napisat pomala aplikacia, ale skor sa v nom da lahsie napisat leakujuca aplikacia. Java aplikacie budu asi vzdy pomalsie ( nemam vestiacu gulu a schvalne nepisem percenta, stale to bude ale n-nasobne rychlejsie ako napr. python ), ale z vlastnej skusenosti viem, ze mnoho java programov je pomalych bud kvoli komplexnosti, alebo skor kvoli sposobu "vyvoja" ( zlepenim tony gigaframeworkov naklikame aplikaciu nech je co najskor hotova a rychlost budeme riesit az ked bude pruser ... ). A to si teraz serem na vlastnu hlavu, a poriadne. Kto chce, ten si moje nazory na javu z pred takych 5 rokov moze vygooglit.
já myslím, že pomalá jsou všechna IDEAž na Qt Creator
...Já nejsem většina lidí, ale Qt je prostě jeden z nejlepších dostupných toolkitů pod open-source licencí. Jasně, má chyby v návrhu (třeba pokud selže něco ve Stringu nebo někde hluboko v nitru, tak to v aplikaci není možné detekovat), ale kolik aplikací se v dnešní době nepoloží při nedostatku paměti? (to nemyslím jako argument, je to špatně, a to uznávám).
Jinak grafických knihoven a toolkitů pro C++ je hrozně moc.A mohl bys napsat, který z těch toolkitů preferuješ? Který je v návrhu mnohem lepší než to zatracené Qt?
Navíc novější GC (používané v Javě třeba nějakých 5 let) se také umí k dočasným objektům chovat lépe, takže pool objektů je často přežitek minulosti.No nevím, stačí si pustit nějakou aplikaci v javě, a sledovat JVM. Zjistíš, že třeba pro překreslení okna a jiné další blbosti jede využití paměti hodně nahoru a nějaké jemná fáze GC (nevím, jak se jmenuje) se pouští docela často. Navíc jak chceš zaručit, že JVM pozná dočasný objekt? Stačí zalovat nějakou funkci, a předat tento objekt jako parametr. O inner loops se tu nebavím, tam to snad pozná:)
je celkem k ničemu, když natáhneš do cache něco, co pak zahodíš, a přitom se jedná o dočasné data, a uděláš to třeba 10.000x za sebou.To ale nijak nesouvisí s Javou ani GC, to je prostě obecná vlastnost jakéhokoli kódu.
Zjistíš, že třeba pro překreslení okna a jiné další blbosti jede využití paměti hodně nahoru a nějaké jemná fáze GC (nevím, jak se jmenuje) se pouští docela často.To potvrzuje to, co jsem psal.
Navíc jak chceš zaručit, že JVM pozná dočasný objekt? Stačí zalovat nějakou funkci, a předat tento objekt jako parametr. O inner loops se tu nebavím, tam to snad pozná:)Jednoduše. Každý objekt je dočasný, a teprve když žije nějakou dobu, stává se z něj objekt trvalý a je přesunut mezi trvalé objekty (současné javovské GC těch generací objektů mají ve skutečnosti víc než dvě).
To ale nijak nesouvisí s Javou ani GC, to je prostě obecná vlastnost jakéhokoli kódu.Škoda, že to nevidíš v kontextu toho co jsem začal.
To potvrzuje to, co jsem psal.Jenže vytížení paměti jede strašně rychle nahoru, mi žere třeba netbeans po skrolování i o 200MB víc, tady věřím, že by to šlo udělat mnohem líp. Navíc to opět nevidíš v kontextu, asi ani nechceš vidět
Jednoduše. Každý objekt je dočasný, a teprve když žije nějakou dobu, stává se z něj objekt trvalý a je přesunut mezi trvalé objekty (současné javovské GC těch generací objektů mají ve skutečnosti víc než dvě).Bavili jsme se o objektu na zásobníku, tyto jsou dočasné (a tady je cache miss téměř nulový), všechny ostatní jsou objekty vytvořené na heapu. Opět to nevidíš v kontextu
Každý normální programátor zná alespoň odhad cyklů čtení/zápisu z/do paměti, která je v cache (L1, L2) nebo v cache není.zalezi na definici slova normalni... a v jakem programovacim jazyce pise... ergo od takovych veci by normalni programator mel byt odstineny
Co jsem tím chtěl říct, že pro dočasné instance tříd je tento postup nevýhodný, protože po opuštění takové instance pošlu do háje nacachovanou paměť L1 nebo L2.ne nezbytne... JVM umi takove objekty identifikovat a napr. umistit je na zasobnik nebo je rozlozit na jednotlive promenne, atd.
zalezi na definici slova normalniNo dobře, tak každý, kdo k tomu má vlohy
JVM umi takove objekty identifikovat a napr. umistit je na zasobnik nebo je rozlozit na jednotlive promenne, atd.Jak jsem psal nahoře. Myslím, že vyhodnocovací kritéria jsou docela přísné, takže toto určitě platí jen v několika málo případech, ale aspoň se snaží, no:)
No dobře, tak každý, kdo k tomu má vlohyobavam se, ze tech situaci kdy se vyplati resit cache je v realnem svete minimum. navic, spustis program na jinem typu procesoru a vsechny tve predpoklady jdou do haje...
Myslím, že vyhodnocovací kritéria jsou docela přísné, takže toto určitě platí jen v několika málo případech, ale aspoň se snaží, no:)cetl jsem o tom docela dost paperu, ale nevim, kolik procent z toho je v soucasnych JVM realne implementovano... i kdyz by to byla polovina, tak na tom java neni zase tak spatne, jak si mozna myslis
obavam se, ze tech situaci kdy se vyplati resit cache je v realnem svete minimum. navic, spustis program na jinem typu procesoru a vsechny tve predpoklady jdou do haje...Šak to by si měla pořešit právě JVM, ale základní znalosti o tom, jak věci fungují uvnitř, podle mě nejsou na škodu.
cetl jsem o tom docela dost paperu, ale nevim, kolik procent z toho je v soucasnych JVM realne implementovano... i kdyz by to byla polovina, tak na tom java neni zase tak spatne, jak si mozna myslisTaky jsem o tom něco četl, ale nemyslím si, že by to v současnosti byla výhra. Stačí spustit libovolný program napsaný v javě
Šak to by si měla pořešit právě JVM, ale základní znalosti o tom, jak věci fungují uvnitř, podle mě nejsou na škodu.nejsou naskodu... ale realne muzu mit pouze mlhavou predstavu, ci zadnou... napr. jako normalni programator se rozhodnu zavolat "select * from foo" mam resit kolikrat doslo ke cache miss?
napr. jako normalni programator se rozhodnu zavolat "select * from foo" mam resit kolikrat doslo ke cache missO tom to přece vůbec nebylo :)
obavam se, ze tech situaci kdy se vyplati resit cache je v realnem svete minimum. navic, spustis program na jinem typu procesoru a vsechny tve predpoklady jdou do haje...Doporučuju přečíst What Every Programmer Should Know About Memory od Urlicha Dreppera, kde je dostatek příkladů, dokazujících, že dnes stále záleží na tom, jak je paměť zarovnaná nebo jestli se data vejdou či nevejdou do cache. Je pravda, že u Javy a podobných jazyků je mnohem méně možností jak ovlivnit vzhled dat v paměti, ale stále platí obecná pravidla, která platí nezávisle na jazyce (napr. zarovnávat datas, nejlépe podle velikosti cache line, držet společně užívaná data pospolu a pod.).
Doporučuju přečíst What Every Programmer Should Know About Memory od Urlicha Dreppera, kde je dostatek příkladů,ten clanek neni moc o ,,normalnim programovani'', navic mi prijde docela x86-specific.
dokazujících, že dnes stále záleží na tom, jak je paměť zarovnaná nebo jestli se data vejdou či nevejdou do cache.nicmene, pokud nekdo neprogramuje neco vylozene low-level tak by takove veci mel brat pouze na vedomi. jinak se to blizi predcasnym optimalizacim. napriklad, i kdyz delam hodne low-level veci... tak jsme praci s cachema musel zacit ignorovat, protoze napr. procesor core duo, co mam v ntb ma jiny pristup k pameti nez treba xeony a ty zase jiny nez opterony... a to nemluvim o tom, kdyz dany program spustim na sparcu...
stále platí obecná pravidla, která platí nezávisle na jazyce (napr. zarovnávat datas, nejlépe podle velikosti cache line, držet společně užívaná data pospolu a pod.).to by mel delat prekladac/runtime
ak dynamicka analyza JVM identifikuje ze ide o docasny/lokalny objekt. Kazdopadne je to na dalsiu analyzu - rozumej dalsie CPU cykly navyse.napsal jsem to nepresne... afaik escape analyza se dela pri kompilaci do JBC, takze to nedela JVM, ale javac.
Tento scenar je dnes mozny a buducnosti bude este beznejsi - vysledok je ten ze GC vdaka neustalemu prechadzaniu HEAP je uplne mimo a nadmerne zatazuje CPU iba svojou rezious tou rezii to neni zase tak zhave. malloc/free ma taky vcelku brutalni rezii (udrzovani seznamu volnych bloku) atd.
Tradicne kompilovane jazyky s malloc/free schemou tymto neduhom samozrejme netrpia.zase trpi spoustou jinych neduhu. napr. standardni general purpose alokatory se blbe vyrovnavaji s vicevlaknovou zatezi...
Zrovna tenhle problém řeší generační GC, který v javě je. Když si skusíš pustit nějakou větší aplikaci v javě a trochu sleduješ co dělá s pamětí, tak zjistíš, že GC je neskutečně líný. V podstatě pravidelně uvolňuje jenom objekty, které mají úplně minimální životnost. Ostatní jsou uvolňované jenom když to je potřeba. Např. moje analýza běhu Netbeans: max. velikost heapu je 128MB, po staru zabírají 27MB(verze pro vývoj v Java SE a ME s vypnutými zbytečnými pluginy). Po pár hodinách používání naroste využitá pamět až k 128MB. Ale když vynutím spuštění GC, využitá paměť klesne někam k 50MB. Většinu zabrané paměti tedy zabírají odstranitelné objekty, ale vzhledem k tomu, že je pořád dostatek paměti tak se uvolňují pouze objekty z první generace(vs. malloc/free zbytečně uvolňuje všechno). Osobně si myslím, že ve většině reálných aplikací pracuje GC lépe než programátor, ale vždycky záleží na konkrétním projektu takže se nemá cenu bavit o tom co je obecně lepší.
Tento príspevok si rozhodne zaslúži skôr prečítanie než ten blábol, ktorý je uvedený v správičke.
Ja sa osobne zaraďujem skôr k C++ "programátorom", ale i s Javou som už čo-to robil.
Qt Jambi poskytuje celkom peknú integráciu so systémom (vyzerá skoro ako natívna aplikácia) a beží prekvapujúco celkom svižne. Čo sa týka ostatných toolkitov GTK som neskúšal a tie Javovské ... no poviem to rovno, že ma moc nenadchli.
Ako som už hovoril robím prevažne v C++ s Qt 4. Rýchlosť vytvorenia aplikácie a kvalita je zrovnateľná s Javou, ale prirodzene je to o niečom inom. Veci ako GC mi v C++ moc nechýbajú, o väčšinu sa postará QObject a zvyšok, kde si alokujem nejaké tie vlastné objekty dokážem upratať s minimálnou námahou.
Objektívne porovnanie písania aplikácií v C++ s Qt 4 a v Jave je asi nemožné, každy nech používa čo mu vyhovuje. Odborníci na či už jednu, alebo druhú platformu dokážu pracovať porovnateľne rýchlo a kvalitne.
C++ has the advantage of having compilers that are clearly superior in execution speed. In order to be able to ship their compilers (and other tools) on various platforms, vendors tend to implement their Java tools in Java itself, with all the aforementioned memory and efficiency problems.Toto je uplna kravina. Nas projekt sa za posledny rok dost rozrastol, je tam ohromne mnostvo kodu a "skompilujem" ho odhadom 5-6x rychlejsie, ako ekvivalentne mnozstvo c++ kodu z predoslych projektov ( na 1 cpu, nepocitam moznost distcc farmy ). Inak autorovi vobec nevyvraciam, ze program v qt/c++ bude napisany rychlejsie ako v sw[ing,t]/java, pokial sa bavime len o samotnom GUI. Akonahle ta aplikacia ma este aj nieco robit, zacne sa to rychlo obracat.
U zlozitejsich veci bude java tratit viac ...... alebo viac ziska. To, na co ortodoxni C-ckari casto zabudaju, je, ze Hot Spot moze robit dynamicky optimalizacie, ktore staticky C prekladac principialne nemoze nikdy urobit, pretoze v case prekladu nema k dispozicii informacie, ktore ma k dispozicii Hot Spot za behu. V urcitych nie az tak zriedkavych pripadoch moze byt rozdiel dramaticky v prospech Javy. JVM robi pocas behu programu veci, ktore nativny program nikdy robit nemusi, takze uz principialne je kodova cesta v pripade Javy ovela dlhsia, a teda pomalsia v podmnienkach "paribus ceteris". Casto sa vsak ten overhead Javy prejavi signifikantnou usporou niekde inde. Velakrat sa "Java virtual machine" redukuje na "Garbage collection"; aj v mnohych prispevkoch tejto diskusie. GC je sice podstatnou castou JVM, ale zdaleka nie jedinou.
Ta analýza, optimalizace a generování kódu taky něco stojí, a JVM to musí dělat až za běhu, a pokud možno rychle. Rozhodně nemůže ztratit třeba 5 sekund tím, že bude optimalizovat pár funkcí.Vzhledem k tomu, že ten kód pak na serveru poběží několik měsíců, může tomu věnovat klidně i víc.
Na druhou stranu C++ programátor může říct překladači, ať udělá funkci inlineTak před rokem se to řešilo v Jaderných novinách – zjistilo se, že
gcc
to bere jen jako doporučení, protože to spousta programátorů nadužívá a generuje se pak neefektivní kód. V LKML se nad tím chvíli rozčilovali, že gcc
dělá něco jiného, než se mu říká, pak se ale zjistilo, že se to i v jádře používá špatně a gcc
se svou heuristikou to nakonec určuje lépe, než programátoři v kódu.
Navíc i pro C++ existují knihovny pro dynamické generování kódu, když už to je potřeba.Pro Javu zase existuje knihovna pro spouštění nativního kódu, když už je to potřeba
Tiskni
Sdílej: