Byla vydána nová verze 4.5 (𝕏, Bluesky) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 3.0 (Mastodon) nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). S novou verzí formátu záznamu asciicast v3, podporou live streamingu a především kompletním přepisem z Pythonu do Rustu.
Canonical oznámil, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie) v Ubuntu.
Tržní hodnota americké společnosti Alphabet, která je majitelem internetového vyhledávače Google, dnes poprvé překonala hranici tří bilionů dolarů (62,1 bilionu Kč). Alphabet se připojil k malé skupině společností, které tuto hranici pokořily. Jsou mezi nimi zatím americké firmy Nvidia, Microsoft a Apple.
Spojené státy a Čína dosáhly dohody ohledně pokračování populární čínské platformy pro sdílení krátkých videí TikTok v USA. V příspěvku na síti Truth Social to dnes naznačil americký prezident Donald Trump. Dosažení rámcové dohody o TikToku vzápětí oznámil americký ministr financí Scott Bessent, který v Madridu jedná s čínskými představiteli o vzájemných obchodních vztazích mezi USA a Čínou. Bessentova slova později potvrdila také čínská strana.
MKVToolNix, tj. sada nástrojů pro práci s formátem (medialnym kontajnerom) Matroska, byl vydán ve verzi 95.0. Podpora přehrávání formátu Matroska míří do Firefoxu [Bug 1422891, Technický popis]. Přehrávání lze již testovat ve Firefoxu Nightly.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.
Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si
… více »Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.
Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).
$from ='05/17/2012 10:15:00'; $to ='05/17/2012 10:30:00'; $day ='5/17/2012'; echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';tak to fičí ok, ale akonáhle pred to dám hocijakú funkciu, tak to ajax nespracuje, napr. toto (prepíšem na konci tie isté premenné čo v prvom skripte, ale aj tak to nejde dobre):
$from= preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_from); $to = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_to); $day = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->day); $from ='05/17/2012 10:15:00'; $to ='05/17/2012 10:30:00'; $day ='5/17/2012'; echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';
$data
$from, $to, $date
by se mely stejne priradit rucne definovane hodnoty, takze problem bude spise v tom, ze tam dojde k nejake notice/warning nebo tak neco, co pak rozbije ten vystup..
Array( [0] => array ( [id] => 24 [time_from] => 05/17/2012 10:15:00 [time_to] => 05/17/2012 11:30:00 [day] => 05/17/2012 ) )
<?php class Data{ public $time_from = '05/17/2012 10:15:00'; public $time_to ='05/17/2012 10:30:00'; public $day ='05/17/2012'; }; $data = Array(0 => new Data()); $from= preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_from); $to = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_to); $day = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->day); echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';jako byste přímo zapsal toto:
,
na konci toho výpisu. Zkusil bych ji dát pryč, co to udělá.
Array( [0] => stdClass Object ( [id] => 24 [time_from] => 05/17/2012 10:15:00 [time_to] => 05/17/2012 11:30:00 [day] => 05/17/2012 ) )v čom by tam mohol byť do kelu problém?
echo json_encode(array("dtstart"=>$from,"dtend"=>$to,"day"=>$day));
eval()
, která si s těmi zpětnými lomítky hravě poradí.
json_encode()
přidává uvozovky, podstrčený kód se tedy předá jako řetězec.
{ "dtstart": "05/17/201210: 15: 00", "dtend": "05/17/201210: 30: 00", "day": "05/17/2012" }v pořádku. Že by zase nějaká JSON obskurnost?
<![CDATA[ … ]]>
json_encode()
si s tím musí umět poradit tak, abych při json_decode()
dostal identická data.
Když ukládám data do DB, tak je také nesmím escapovat, abych je měl v DB přesně byte po bytu tak, jak je tam potřebuji mít.
json_decode()
a pak htmlspecialchars()
. V HTML nemá JSON co pohledávat.
<script> <?php echo json_encode(array("dtstart"=>"<![CDATA[","dtend"=>"05/17/2012 10:15:00")); ?> </script>nebo
<script> <?php echo json_encode(array("dtstart"=>"<script>","dtend"=>"05/17/2012 10:15:00")); ?> </script>což mi rozbije výstup. Případně když budu vypisovat jinam (atribut, jiný formát), může se tam rozbít něco jiného. Proto je potřeba, aby escapoval ten, kdo ví*, kam se vypisuje. A tudíž je to polovičaté escapování ve funkci
json_encode()
nadbytečné a povede akorát ke zmatkům a chybám – stejně jako ty PHP Magic Quotes – programátoři se budou spoléhat na to, že můžou jen tak přilepit návratovou hodnotu funkce do výstupu a nebudou ji escapovat a špatně dopadnou.
Ta funkce má i volby – trochu by pomohla JSON_HEX_TAG
, která zneškodní ty < >, ale stále tam zbudou & a ty budou dělat neplechu (neexistující entity). Takže je potřeba přidat ještě JSON_HEX_AMP
. A už to není tak jednoduché a možná tam jsou i další díry…
Je to takový neunixový přístup, jedna funkce se toho snaží dělat příliš mnoho a nakonec to dělá blbě. Daleko lepší mi přijde to rozdělit – mít jednu spolehlivou funkci na generování JSONu a jinou spolehlivou funkci na escapování (pro různé výstupní formáty) a tyto dvě funkce zřetězit:
$výstup = bezpečněEscapujProDanýVýstupníFormát(generujNějakáData($vstup));*) což může být programátor, který zavolá patřičnou funkci, nebo třeba nějaký inteligentní šablonovací systém, který zná kontext.
<script> <?php echo htmlspecialchars(json_encode(array("dtstart"=>"&<![CDATA[","dtend"=>"05/17/2012 10:15:00"))); ?> </script>
bezpečněEscapujProDanýVýstupníFormát()
. Jenže pak je nějaké přidávání zpětného lomítka před / zbytečnost a nemá tam co dělat – akorát to někoho svede k chybě.
*) relativně – zase to zbytečně převádí " na ", přestože uvozovky v textových uzlech (uvnitř elementů) klidně být můžou a je potřeba je převádět jen v atributech – a to ještě jen v těch, kde je hodnota zavřená do uvozovek – zatímco v <element atribut='nějaká "hodnota" s uvozovkami'/>
klidně být můžou.
Tiskni
Sdílej: