Archívum - 2014
május 15
Structure and Interpretation of Computer Programs
Antik könyv a programozásról
■ május 14
Website Deployment: Let Us Count The Ways!
Összefoglaló néhány webes deploy eszközről
■ Validációs tervezési hibák
Szép napot!
Kíváncsi vagyok, hogy mit gondoltok a php validációról. Jó, ténylegesen nincs ilyesmi, de én nagyon furcsának találtam az alapvető hozzáállást a validáláshoz az összes kódban, amit eddig láttam. Gyakorlatilag már a kiindulásnál elbuknak, mert eleve rossz stratégiát választanak.
Alapból valahogy így szokás nekifutni php-ben a validálásnak:Symfony dokumentációból másolt kód - Form-Validation
Ez még a szerencsésebb eset. A szerencsétlenebb az, amikor külön controller-ben van a validáció és külön view-ban az űrlap létrehozása, és lapozgatni kell egyikről a másikra, hogy lássuk mi micsoda.
Miért rossz ez (legalábbis szerintem)?
Ha security-ről van szó általában mindenki a whitelist-es megoldásokat biztonságosabbnak tartja, mint a blacklist-eseket, mert könnyű kifelejteni, embereket, akiknek tiltani akarjuk az alkalmazás használatát.
Kíváncsi vagyok, hogy mit gondoltok a php validációról. Jó, ténylegesen nincs ilyesmi, de én nagyon furcsának találtam az alapvető hozzáállást a validáláshoz az összes kódban, amit eddig láttam. Gyakorlatilag már a kiindulásnál elbuknak, mert eleve rossz stratégiát választanak.
Alapból valahogy így szokás nekifutni php-ben a validálásnak:
// lib/form/ContactForm.class.php
class ContactForm extends sfForm
{
protected static $subjects = array('Subject A', 'Subject B', 'Subject C');
public function configure()
{
$this->setWidgets(array(
'name' => new sfWidgetFormInput(),
'email' => new sfWidgetFormInput(),
'subject' => new sfWidgetFormSelect(array('choices' => self::$subjects)),
'message' => new sfWidgetFormTextarea(),
));
$this->widgetSchema->setNameFormat('contact[%s]');
$this->setValidators(array(
'name' => new sfValidatorString(array('required' => false)),
'email' => new sfValidatorEmail(),
'subject' => new sfValidatorChoice(array('choices' => array_keys(self::$subjects))),
'message' => new sfValidatorString(array('min_length' => 4)),
));
}
}
Ez még a szerencsésebb eset. A szerencsétlenebb az, amikor külön controller-ben van a validáció és külön view-ban az űrlap létrehozása, és lapozgatni kell egyikről a másikra, hogy lássuk mi micsoda.
Miért rossz ez (legalábbis szerintem)?
Ha security-ről van szó általában mindenki a whitelist-es megoldásokat biztonságosabbnak tartja, mint a blacklist-eseket, mert könnyű kifelejteni, embereket, akiknek tiltani akarjuk az alkalmazás használatát.
május 12
MEGOLDVA Karakterkódolás hiba POST után Firefoxban
Sziasztok,
Tudom, lerágott csont a karakterkódolós szerencsétlenkedés, de egyszerűen nem jutok előrébb ezzel a problémával.
Egy már majdnem kész oldalon van egy pici bug:
Post után a karakterkódolás a Firefoxban visszaáll ISO-8859-2-re, így minden ékezet rosszul jelenik meg.
Következő oldalbetöltéskor már ismét rendben van az utf-8.
A head:Chrome, Opera, IE böngészőkben semmi gond nincs, Firefoxban post után rossz.
Van ötletetek, esetleg tapasztalat, hogy mitől fordulhat ez elő?
Köszönöm előre is.
Szerk: Azóta kipróbáltam ezt, de ez sem működik:
<meta charset="utf-8">
■ Tudom, lerágott csont a karakterkódolós szerencsétlenkedés, de egyszerűen nem jutok előrébb ezzel a problémával.
Egy már majdnem kész oldalon van egy pici bug:
Post után a karakterkódolás a Firefoxban visszaáll ISO-8859-2-re, így minden ékezet rosszul jelenik meg.
Következő oldalbetöltéskor már ismét rendben van az utf-8.
A head:
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="hu" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb='http://developers.facebook.com/schema/'> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="hu" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb='http://developers.facebook.com/schema/'> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="hu" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb='http://developers.facebook.com/schema/'> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="hu" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb='http://developers.facebook.com/schema/'> <!--<![endif]-->
<head>
<base href="/" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-language" content="hu" />
Van ötletetek, esetleg tapasztalat, hogy mitől fordulhat ez elő?
Köszönöm előre is.
Szerk: Azóta kipróbáltam ezt, de ez sem működik:
<meta charset="utf-8">
JQ - Each - táblázat kiirasa - BUG ?
Egy tömb tartalmát iratnám ki.
Egy kétoszlopos táblázat lenne, bal oszlopban a kulcsok jobban az értékek.
Az each indulása előtt kiirom a table tagot.
Majd a ciklusban a tr és td tagot,
bele az adatokat majd lezarom a td tr tagokat,
és a ciklus után kiirom a /table vege tagot.
/Ahogy azt php-ben szoktam csinálni foreach esetén./
IGENÁM, DE A JQ AZ ELEJÉN AMIKOR KIIROM A TABLE TAGOT
magától kiegészíti A LEZÁRÓ /TABLE taggal.
Pedig azt majd én zárnám le a ciklus után.
Ettől ilyen lesz a táblázat.:
<table></table>
<tr><td></td></tr>
És ráadásul a ciklus után megirt /table -t meg nem irja ki.
Mi az okosság ilyenkor ?
■ Egy kétoszlopos táblázat lenne, bal oszlopban a kulcsok jobban az értékek.
Az each indulása előtt kiirom a table tagot.
Majd a ciklusban a tr és td tagot,
bele az adatokat majd lezarom a td tr tagokat,
és a ciklus után kiirom a /table vege tagot.
/Ahogy azt php-ben szoktam csinálni foreach esetén./
IGENÁM, DE A JQ AZ ELEJÉN AMIKOR KIIROM A TABLE TAGOT
magától kiegészíti A LEZÁRÓ /TABLE taggal.
Pedig azt majd én zárnám le a ciklus után.
Ettől ilyen lesz a táblázat.:
<table></table>
<tr><td></td></tr>
És ráadásul a ciklus után megirt /table -t meg nem irja ki.
Mi az okosság ilyenkor ?
május 11
MYSQL
Sziasztok!
Hogyan tudok olyan lekérdezést készíteni egy elég nagy adatbázisból, hogy pl. 2000 recordból 500-at szeretnék kiválogatni (Egységes léptékben ... ha lehet) úgy hogy az első és az utolsó recordot is tartalmazza a lekérdezés.
Előre is köszönöm, ha valaki tudja a választ.
■ Hogyan tudok olyan lekérdezést készíteni egy elég nagy adatbázisból, hogy pl. 2000 recordból 500-at szeretnék kiválogatni (Egységes léptékben ... ha lehet) úgy hogy az első és az utolsó recordot is tartalmazza a lekérdezés.
Előre is köszönöm, ha valaki tudja a választ.
PHP - phar archive
Ha jól nézem a PHAR kb 1.5x lassabb, mint a normál PHP, viszont sok előnye van ezzel szemben:
- egyszerűbb másolni, telepíteni
- még véletlenül sem keverednek az adatok, az alkalmazás kódjával, így könnyebb róluk backup-ot készíteni, ami szintén lehet phar formátumban
- van lehetőség titkosításra és digitális aláírásra, elvileg talán még a sérült fájlokat is kiszűri, bár nem tudom, hogy checksum-ot mennyire néz automatikusan
Érdekelne, hogy mi a tapasztalatotok vele, illetve a vélemények is érdekelnek. (Csak most kezdtem el nézni, hogy miket tud.)
■ - egyszerűbb másolni, telepíteni
- még véletlenül sem keverednek az adatok, az alkalmazás kódjával, így könnyebb róluk backup-ot készíteni, ami szintén lehet phar formátumban
- van lehetőség titkosításra és digitális aláírásra, elvileg talán még a sérült fájlokat is kiszűri, bár nem tudom, hogy checksum-ot mennyire néz automatikusan
Érdekelne, hogy mi a tapasztalatotok vele, illetve a vélemények is érdekelnek. (Csak most kezdtem el nézni, hogy miket tud.)
május 8
Git, phpunit, Windows
Sziasztok!
Olvastam itt egy jó a cikket a gitről, ehhez kellene segítség. Gitem meg van és van phpunit is. Létrehoztam a phpunit futtatásához egy scriptet, a következőt használtam fel: Git és phpunit. Ebben leírja, hogy windows alatt a php -f parancsot futtassam le a fájllal. A fájl meg van. A pre-commit hook-ba bele írtam és mégsem fut le, csak kiírja, hogy "php -f fájlnév". Hol rontom el?
■ Olvastam itt egy jó a cikket a gitről, ehhez kellene segítség. Gitem meg van és van phpunit is. Létrehoztam a phpunit futtatásához egy scriptet, a következőt használtam fel: Git és phpunit. Ebben leírja, hogy windows alatt a php -f parancsot futtassam le a fájllal. A fájl meg van. A pre-commit hook-ba bele írtam és mégsem fut le, csak kiírja, hogy "php -f fájlnév". Hol rontom el?