
PHP triky - články
Základní informace o zdroji
Podtitulek | Weblog o elegantním programování v PHP pro mírně pokročilé |
---|---|
Ikona | ![]() |
Domovská stránka | https://php.vrana.cz/ |
RSS export | http://php.vrana.cz/rss.php |
Systémové informace o zdroji
ID | 52 |
---|---|
Jmenné ID | vrana |
Články ručně přidává správce systému | NE |
Články jsou schvalovány správcem | NE |
Titulek zdroje stahován z RSS exportu | ANO |
Kontrola aktuálnosti proběhla | 29. září 2023 16:03 |
Návratový kód | PARSER ERROR |
RSS export naposledy zpracován | 31. května 2017 12:45 |
Kontrola aktuálnosti naplánována na | 29. září 2023 17:03 |
Legitimní užití evalu
Při odstraňování užití funkce eval jsem narazil na zajímavý kód: function objectConverter(columns) { return new Function("d", "return {" + columns.map(function(name, i) { return JSON.stringify(name) + ": d[" + i + "]"; }).join(",") + "}"); ...
Hra pro děti: Monopoly
S dětmi jsem naprogramoval další hru: Monopoly. Hra je podle pravidel verze, kterou jsme dostali někde v sámošce. Herní plán byl strašně malý, figurky z něj padaly a písmena byla sotva čitelná. Proto jsme se rozhodli hru přesunout na počítač, ...
Adminer 4.3.0
Po delší době vydávám novou verzi Admineru, která přidává novou funkčnost a ne jen opravuje bezpečnostní chyby nebo doplňuje překlady. Vyřídil jsem všechny pull-requesty a bugy (pokud se netýkaly ovladačů, které sám nepoužívám), ...
Google Cloud Spanner
Google nedávno veřejně nabídl databázi Spanner, kterou masivně používá i interně. Co mě na tomto úložišti zaujalo: Pro zadávání příkazů se používá staré dobré SQL. Kromě toho se ale na čtení a zápis dá používat i API, ...
Hry pro děti
Moje děti si občas chtějí zahrát nějakou hru. Tak už jsem jim několik her naprogramoval, občas i s jejich pomocí. Nešlo o to vytvořit něco dokonalého, ale rychle spíchnout něco, co bychom si mohli hned zahrát a snadno tomu přidávat ...
Ukládání dat do cookie
Na mobilním telefonu se běžně stává, že vypadne připojení k Internetu, a při ukládání dat na server bychom s tím měli počítat. Pokud data ukládáme běžným formulářem obnovujícím stránku, tak by se o to měl postarat prohlížeč ...
Převod římských číslic
Nedávno jsem četl zajímavý článek Make Everything The Same o poznatcích z převodu na římské číslice. Článek je v kostce o tom, že odečítací číslice (např. IX = 9) vyžadují jiné zacházení než normální číslice (např. X = ...
Protobuf a NaN
Většina produktů Google komunikuje téměř výhradně pomocí Protocol Buffers. V tomto formátu se komunikuje s úložištěm, mezi servery a posílají se v něm data i do klienta a z klienta. Na serveru se protocol buffery přenáší v binárním ...
Adminer 4.2.4
Nová verze Admineru opravuje závažnou bezpečnostní chybu: vzdálené spuštění. Může k němu dojít za těchto okolností: Používáte verzi Admineru s podporou SQLite. Přístup k Admineru není nijak chráněn (např. pomocí hesla nebo ...
Distributed Code Jam
Baví mě řešit programátorské úlohy, a proto jsem se účastnil i několika ročníků Google Code Jam. V roce 2008 jsem dokonce vydal seriál s řešením všech úloh. Letos jsem se do řešení zase pustil, tentokrát interně v Google – před ...
Použití nekonečna
Minimální prvek v poli hodnot se dá snadno najít funkcí min, která jako svůj parametr přijímá i pole. Pokud jsou data dostupná složitěji nebo chceme kromě nalezení minima udělat i něco jiného, tak můžeme použít jednoduchý cyklus. ...
DEF CON 23
This is the first DEF CON I attended and I was wondering how a conference with no registration and just walk-ins will look like. There's probably no cap on how many people can attend and the entrance fee is very low ($230 for 4 days, compare with Black…
Adminer 4.2.0
Nová verze Admineru opravuje závažnou bezpečnostní chybu (XSS v přihlašovacím formuláři). Všem doporučuji okamžitou aktualizaci. Kromě toho přidává i několik novinek: V SQL příkazu lze nově omezit počet vypsaných řádek. Hlavní ...
Zpětná a dopředná kompatibilita
JavaScriptový kód Gmailu je poměrně velký a tak se jeho obnovení na klientech vynucuje jen každé dva týdny. Důsledkem toho je, že každá změna na serveru musí být zpětně kompatibilní – musí fungovat i s dva týdny starým klientem. ...
Piškvorky naslepo
Když Jirka Knesl zveřejní nějaký svůj kód, tak mám často nutkavou potřebu napsat vlastní řešení. Teď se mi to stalo s Piškvorkami naslepo. Tentokrát jsem nebyl sám, stejnou potřebu měl i Aleš Roubíček. Přiznám se, že mi kód ...
Co se mi nelíbí na JavaScriptu
Článek vyšel na serveru Zdroják. Když jsem v 90. letech s JavaScriptem začínal, tak jsem ten jazyk nesnášel. Hlavní důvod byl ale ten, že co jsem napsal pro jeden prohlížeč, nefungovalo v druhém. Když jsem pochopil, že to není až ...
Co se mi nelíbí na Go
Go je relativně nový programovací jazyk navržený v Google. Setkal jsem se s názorem, že do pěti let půjde o nejpoužívanější programovací jazyk, tak jsem se přihlásil na školení základů tohoto jazyka. Jinou zkušenost s Go nemám, ...
V čem je PHP navrženo lépe než Java
Článek vyšel na serveru Zdroják. Existuje spousta článků, které kritizují návrh PHP, nejznámější je asi PHP: a fractal of bad design. Na ten jsem napsal jen poměrně krátkou reakci, protože se zbytkem článku v zásadě souhlasím. ...
Rekurze regulárních výrazů
Když někdo říká, že umí dobře regulární výrazy, tak mu obvykle položím tuto otázku: „Jaký je rozdíl mezi once-only subpattern a possessive quantifier a kdy je použiješ?“ Schválně si na tuhle otázku teď zkuste odpovědět. Once-only ...
Adminer 4.1.0
Asi největší novinkou právě vydané verze Admineru je ochrana proti pokusu o získání hesla k databázi hrubou silou. Adminer nově dovolí jen 30 neplatných pokusů o přihlášení za 30 minut (počítáno od prvního neplatného pokusu). Další ...
Přechod na SafeHtml
Ve většině moderních aplikací vzniká HTML kód převážně v šablonách. To má nespornou výhodu v tom, že ošetřování dat stačí vyřešit na jednom místě. Můžeme použít automatické escapování, kontextově citlivé escapování, ...
Adminer 4.0.0
Hlavní novinkou právě vydané verze Admineru jsou ovladače pro NoSQL databáze. Konkrétně SimpleDB, MongoDB a Elasticsearch. Poslední dva jsou nedodělané a jsou označené jako beta, i tak jsem se je ale rozhodl zveřejnit – hlavně pro případ, ...
Ukládání draftu komentářů
Taky vás dokáže naštvat, když delší dobu píšete komentář, dáváte si záležet na každé formulaci a pak se něco stane a o celý komentář přijdete? To něco může být chyba serveru, vaše nepozornost při zavírání oken nebo třeba ...
Ukládání hesel bezpečně
Článek vyšel v Crypto-Worldu 11-12/2013. V Crypto-Worldu 9-10/2013 vyšel článek „Ochrání hashování uživatelská hesla?“, který na otázku z titulku bohužel neodpověděl. V tomto článku bych tedy rád popsal, jak uživatelská hesla ...
Předčasná optimalizace
Většina programátorů asi někdy slyšela citát Donalda Knutha: „Předčasná optimalizace je kořenem všeho zla.“ Někdo si to ale bohužel vykládá tak, že na výkonnost aplikace nemusí při návrhu a vývoji vůbec brát ohled a že případné ...
Odstranění mezer z HTML dokumentu
Potřeboval jsem ověřit, zda se od sebe dva HTML dokumenty liší pouze mezerami. To není tak jednoduché, protože texty mohou být od sebe oddělené inline značkami. Pokud jsou mezery naopak před nebo za blokovými značkami, tak je musíme ignorovat. ...
Effective Java
The book Effective Java is like a Java Bible for many programmers. It is a good book, I've learned a lot from it and I've spotted only a couple of unclear or wrong parts. From a different point of view, it might also serve as a “What Went Wrong” ...
Vyjádření k názorům u rozhovoru na Lupě
Na Lupě se mnou vyšel rozhovor a v diskusi se objevilo skoro 200 příspěvků, aniž bych na kterýkoliv z nich reagoval a tím diskusi vyživoval. Obvykle v diskusích reaguji, rád se lidi snažím přesvědčit o tom, že mám pravdu a oni se pletou. ...
Řešení alert(1) to win
Soutěž v hledání XSS alert(1) to win patří mezi to nejlepší, co jsem v poslední době viděl. Příklady jsou velmi těžké a ukazují hodně z toho, na co si při psaní klientského kódu dát pozor. U některých ukázek kódu jsem měl na ...
Tajemství
Aplikace se snažím navrhovat tak, aby pokud možno nevadilo, když se útočník dostane ke zdrojovým kódům nebo uloženým datům. Je dobré si představit, že útočníkem se stane programátor, který vám aplikaci vytvářel, nebo správce, ...