V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.
Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.
FFmpeg nechal kvůli porušení autorských práv odstranit z GitHubu jeden z repozitářů patřících čínské technologické firmě Rockchip. Důvodem bylo porušení LGPL ze strany Rockchipu. Rockchip byl FFmpegem na porušování LGPL upozorněn již téměř před dvěma roky.
K dispozici je nový CLI nástroj witr sloužící k analýze běžících procesů. Název je zkratkou slov why-is-this-running, 'proč tohle běží'. Klade si za cíl v 'jediném, lidsky čitelném, výstupu vysvětlit odkud daný spuštěný proces pochází, jak byl spuštěn a jaký řetězec systémů je zodpovědný za to, že tento proces právě teď běží'. Witr je napsán v jazyce Go.
Yazi je správce souborů běžící v terminálu. Napsán je v programovacím jazyce Rust. Podporuje asynchronní I/O operace. Vydán byl v nové verzi 25.12.29. Instalovat jej lze také ze Snapcraftu.
Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
for ($ii=0;$ii<10;$ii++)
{ /* nejaka cinnost */ }
Prochazeni polewhile ($cc=each($nejake_pole))
{ /* nejaka cinnost s $cc["key"] a/nebo $cc["value"] */ }
Vysledky a vybery z databaze$q="nejaka query";
if ($ares=mysql_query($q))
while ($arow=mysql_fetch_assoc($ares))
{ /* nejaka cinnost s polem $arow */ }
Zazita sablona pro funkcefunction DruhFunkce_NazevFunkce(...) {
$ret=false;
/* pokud jsou parametry OK, pak cinnost jejimz vysledkem je prepsani $ret; */
return $ret;
}
Jak je to u vas? Mate nejake takove zazite zvyky? :)
Tiskni
Sdílej:
$sql_chocolates = "SELECT cacao, nameOfChocolate, isDia FROM chocolates WHERE cacao>70";
$data_chocolates = mysql_query($sql_chocolates);
if (mysql_num_rows($data_chocolates))
{
while ($chocolates = mysql_fetch_array($data_chocolates))
{
echo "Name of chocolate is ".$chocolates['nameOfChocolate']." and contains ".$chocolates['cacao']." % of cacao. And it is ".getNotIfNot($chocolates['isDia'])." good for diabetics.";
}
}
;) ;) Je to trošku vykonstruovaný příklad, tak se omlouvám za funci getNotIfNot, ale ... řekněme, že vrací string "not", pokud je parametrem false ;)
); prostě je fajn to používat, ale nemělo by to být to jediné, co člověk umí. Občas potřebuju něco napsat na vzdáleném stroji třeba ve VIMu a když to není nakonfigurované, tak prostě musím vědět, jak se co píše, jak se píše třída v Javě, jak se píše to či ono, co Eclipse třeba sám doplní ;)
Nechtěl bych teda po vás ten kód číst.
proto nevim, proc bych na ne mel menit nazorNo snad protože jsem to řekl já, ne?
V php by se určitě dalo vymyslet, jak to udělat, aby to fungovalo.
Tak to je dobrá hláška ;) ;)
(stable verze)
Moje_Funkce() MojeFunkce() mojeFunkce()ale vzdy a v kteremkoli jazyce (uz jen C, BASH, ojedinele PHP) pouzivam zapis
moje_funkce()a nevidim jedinou vyhodu u tech prvnich trech.
kdo odsazuje mezerami, je hovado...
Já si zase nemyslím nic lichotivého o člověku, pro něhož je to, že někdo preferuje jiný coding style než on, důvodem k nadávkám…
kdo odsazuje mezerami, je hovado...Odsazuj si čím chceš. Já třeba taky odsazuji tabulátorem. Akorát, že místo \t se vloží mezery
Je celkem jedno jestli tabulátor nebo mezera. Nejhorší je zdroják, kde to programátor kombinuje dle nálady. U něj to vypadá OK, ale když si to otevře někdo, kdo má nastavený tabulátor na jiný počet míst, tak je z toho pěkný guláš
U forcyklů: i,j,k,l (jiný zvyk to komplikuje ostatných pro čtení), ii je fakt nepřehledné a jednoduše se přehlídne.
U foreach cyků: $result as $key => $value
U mysql dotazů $query, $result, $row
Zkracování vede jen ke zmenšení přehlednosti, sice se argumentuje leností, ale když umíte psát všemi deseti tak ta expresivita názvu opravdu převáží.
E.g. nerad bych s vámi na nějakých kódech. Do
Zkracování vede jen ke zmenšení přehlednosti, sice se argumentuje leností, ale když umíte psát všemi deseti tak ta expresivita názvu opravdu převáží.
To se nedá takhle generalizovat. Když půjdu do extrému, opravdu si nemyslím, že označení řídící proměnné cyklu outermost_cycle_counter místo i nějak přispěje přehlednosti programu. A i jinak jsou pro mne příliš dlouhá jména proměnných (víc než nějakých 10 znaků) většinou spíš otravná, a to i když je nemusím psát, ale jen číst. Navíc to zvyšuje riziko nutnosti zalomit řádek a tím zdroják dále znepřehlednit.
opravdu si nemyslím, že označení řídící proměnné cykluA co teprv, když člověk zjistí, že to outermost není outermost, ale potřebuju přidat ještě jeden vnější cyklus, nebo naopak zjistím, že vnější cyklus nepotřebuju atd.outermost_cycle_countermístoinějak
$name a $salary. Pri obyčajnom for-cykle samozrejme premenné i, j, k, l.
Znovupoužívanie generických konštrukcií sa častokrát nevyplatí - či už môže dôjsť k chybe pri recyklovaní premenných, zlému skopírovaniu pri copy&paste (napríklad iterujem od 1 po n, kde by som mal od 0 po n-1) alebo rôznych iných.
Samozrejme netreba šetriť na názvoch funkcií/metód a skutočne popísať čo robia! Nie je nič horšie ako keď sa pozeráte na signatúru int doMagic(bool x, int bbz, int* pols). Z tohto zápisu nie je vôbec jasné, čo by to malo robiť.
Mojím pravidlom je snaha písať všetky názvy premenných, metód, tried, atď. anglicky. Tak ako ja neviem čo znamená premenná $koleTapja, tak niekto nemusí vedieť, čo robí funkcia upecHovno(bool sAlobalom).
boolean hodnotaPodleKtereSeRozhoduji = …;
Trida o = …;
…
if (hodnotaPodleKtereSeRozhoduji) {
o.setAbcdTrue();
} else {
o.setAbcdFalse();
}
místo:
boolean hodnotaPodleKtereSeRozhoduji = …; Trida o = …; … o.setAbcd(hodnotaPodleKtereSeRozhoduji);?
V onech 97% kodu programu je totiz vykon uplne irelevantni (resp. je jedno, jestli zabere 10 nebo 1000 instrukci).Jo, zvláště když takový program 90% svého času nedělá nic jiného než jen furt něco volá (zrovna přiřazování asi bude dost frekventovaná akce a to vůbec nehledím na možnost, že může být v cyklu). A navíc se to musí fakt luxusně debugovat. V jakém duševní stavu musí člověk být aby implementoval přiřazování do proměnné voláním, to fakt nechápu.
Nehlede na to, ze kvuli setteru se stackframe velmi pravdepodobne budovat nebudePokud je to makro, tak ne. Pokud je to standardní volání implementované instrukcí call (a ne jmp) tak jo.
Pokud je to makro, tak ne. Pokud je to standardní volání implementované instrukcí call (a ne jmp) tak jo.
Java HotSpot strašně rád inlinuje. Takže to ve výsledku není ani call, ani jmp ale prosté přiřazení. Ve strojáku ze všech těch geterů a seterů nakonec zůstane jen práce s registrem (případně adresou).
c = a + b
c = add(a,b). V mém případě to tipuju buď na nějakou mentální degenerativní poruchu nebo malou hladinu alkoholu v krvi.
Já zas především nechápu na co kvůli jednomu blbému přiřazení (jedna instrukce) budovat celý další stackframe.1) "Celý další stackframe" není nic tak hroznýho.
this.
)
setAbcdTrue() bude volat setAbcd(true).
A reknes proc? Proc by mela metoda (napr.) setVisible() okno zobrazovat i schovavat?Nic takového jsem neřekl.
setVisibleTrue() a setVisibleFalse().
Protoze metoda by mela delat jednu vecAle vždyť to ta metoda dělá jednu věc - nastavuje viditelnost okna. To, že vevnitř to řeší tak a tak je navenek jedno.
Myslim, ze je docela zrejme, ze implementace skryti a zobrazeni okna budou pravdepodobne dost odlisne ...Proč by měly být (výrazně) odlišný? Windows manager taky pravděpodobně udržuje u každého okna všelijaký informace včetně
boolean visible.
Enum – stav, na který se má změnit.
function chytraFunkce($prepinac)
{
if($prepinac == true) {
...
...
spousta kodu
...
...
}
else {
...
...
spousta kodu
...
...
}
}
V takovém případě více méně* souhlas, jenže ono to často vypadá takhle:
function chytraFunkce($prepinac) {
...
...
spousta kodu
...
...
if($prepinac == true) {
…trochu kódu…
} else {
…trochu kódu…
}
...
...
spousta kodu
...
...
}
nebo tam dokonce ani ten vnitřní if (…) není a jednoduše předáváš ten $přepínač někam dál.
Pokud je v ifu jenom část metody, nešlo by upravit životní cyklus objektu, vyčlenit společné části a rozdílnost fáze v podmínce řešit polymorfismem?
setVisible() může nastavit vnitřní proměnnou a zavolat update() a tam (ne)musí být if potřeba podle vlastností backendu. Zkrátka ten if by měl (imho) být co možná nejníž.
java.awt.Component.setVisible(boolean) než show() a hide().
arrayItem1, arrayItem2 a arrayItem3, ... :)
iteration1, iteration2 ... iteration44563. Bude to pak přehlednější a lépe se to bude refaktorovat. :))
new ImplementationA() a nahrazovat za new ImplementationB()? A co mockování (např připojení k databázi) v testech? Nebylo by lepší vytvářet instance na jednom místě? Třeba v IoC kontejneru nebo ServiceLocatoru?"int i,j,k;.
if, while a Auto extends DopravniProstredek dočteš hnedka z kraje. Názory, které tu prezentuju jsou (bohužel) spíš taková avantgarda, o výuce programování ve školách radši nemluvě.
Právě tak jsem se to snažil podat - je užitečné mít reflex "když vidím public atribut, tak to se mnou škubne a zamyslim se" reflex "když vidím public atribut, změním ho na private a dopíšu setter/getter" je k ničemu.
Upřímně řečeno lepší by to bylo naopak. Atributy psát vždy jako private a k nim (třeba automatické, triviální) get/set metody a v případě opodstatněného použití jej předělat jako public.
Upřímně řečeno lepší by to bylo naopak. Atributy psát vždy jako private a k nim (třeba automatické, triviální) get/set metody a v případě opodstatněného použití jej předělat jako public.Vůbec nejlepší by bylo, kdyby Gosling tolik nečetl manuál k C++ a Javu udělal více podle Smalltalku. Tam jsou všechny členské proměnné v Java terminologii
protected a metody public, což je taková úroveň oprávnění, kterou obvykle programátor potřebuje.
Verim, ze i na takove GOTO se najde use case, ve kterem je vhodne a tedy se neda obecne oznacit a priori za spatne.Dobrým příkladem jsou linuxové moduly, kde se používají skoky pro zjednodušení kódu při inicializaci tak, aby se v okamžiku, kdy něco nevyjde, nemusleo složitě řešit to, co už bylo inicializováno/naalokováno a co ještě ne. Ne že by to nešlo řešit bez skokú, ale buď by to znamenalo držet si stav (což zabíra zbytečně paměť) nebo použít vnoření, která se ale mohou při větším množství stát velmi, velmi nepřelednými a člověk pak při čtení kódu vypadá jak ten zlý pes ze Simpsonů
.
int moje_promenna_kterou_jsem_si_definoval_po_prednasce_z_programovani_ktera_na_me_udelala_velky_dojem_1;int <dtto>_2;
while ($cc=each($nejake_pole))
{ /* nejaka cinnost s $cc["key"] a/nebo $cc["value"] */ }
nějakou zvláštní výhodu oproti této:
foreach ($cc as $key => $value)
{ /* nejaka cinnost s $key a/nebo $value */ }
(používám právě tuto druhou cestu a rád bych věděl, jestli ta první není v něčem lepší)?
$cc má být u druhé konstrukce $nejake_pole, ale to snad každý pochopí.
$r__db_connection = mysql_connect($s__host, $s__user, $s__pass);
mysql_select_db($s__database, $r__db_connection);
$r__products = mysql_query("SELECT ...", $r__db_connection);
for ($i__row = 0; $i__row < mysql_num_rows($r__products); $i__row++) {
$a__product = mysql_fetch_array($r__products);
$s__product_name = $a__product['product_name'];
}
// mysql_close, unset a atd...
exit(0);

Naviedol ma na to pan Herout pomocou jeho knihy Ucebnice jazyka C (ked som sa pred 6timi rokmi tento jazyk ucil). …zvysuje tento navyk u mna prehladnost a efektivitu. …dokazem sa vyvarovat niektorym chybam.
Jsem jediný u koho tyto bojové výkřiky ve stylu
vyvolávají jemný úsměv na tváři a jediný co si myslí, že se tu zas řeší leda tak kraviny? To je snad úplně jedno jak to píšeš, ne? Pokud nejsi pako a nebo fakt v nějaké ovlivnění smyslů, tak snad dovedeš rozumně pojmenovat nějaké proměnné a pokud není pako (a nebo též nějak ovlivněn) ten co to po tobě bude číst, tak to snad bude i schopen pochopit. Jestli je to už jazyk interpretovaný nebo překládaný a nebo silně tipovaný nebo slabě tipovaný a nebo rudý nebo růžový.
tipovanýNo dobře. Jdu spát.
Zdvojovani standardnich promennych nechapu (proc ne proste i, j?, cc mi nesedi uz vubec). Divnou polohu zavorek taky nechapu, a proc neodsazovat u funkce taky ne. Secteno a podtrzeno - nelibi se mi tvuj styl :)
Divnou polohu zavorek taky nechapu, a proc neodsazovat u funkce taky ne.Tohle je to poslední, co by se mělo řešit. Běžně se používají různé styly, každému vyhovuje něco jiného.