Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
infrastruktura webová řešení marketing
NetteUtils a příbuzní:
skryté klenoty
Jan Smitka, @jansmitka
Poslední sobota #68, 3...
NetteIteratorsCachingIterator
2
{foreach $rows as $row}
{if $iterator->first}<table>{/if}
<tr n:class="$iterator->isEven()...
NetteIteratorsCachingIterator
3
foreach ($iterator = new NetteIteratorsCachingIterator($rows) as $row) {
if ($iterator->is...
NetteUtilsStrings
• Regulární výrazy se správným ošetřením chyb:

http://phpfashion.com/zradne-regularni-vyrazy-v-php
• Me...
UTF-8 řetězce
5
strlen("Slečna"); // 7
mb_strlen("Slečna", "UTF-8"); // 6
substr("Slečna", 0, 6); // "Slečn"
mb_substr("Sl...
Příklad špatného použití
6
public static function stripHeaders(CurlWrapper $curl)
{
$curl->responseHeaders = Strings::subs...
NetteUtilsRandom
• generate($length = 10, $charlist = '0-9a-z')
• Ke generování se snaží použít první z následujících meto...
NetteSecurityPasswords
• Metody (obdoba password_* z PHP 5.5 – http://php.net/manual/en/ref.password.php)

hash($password,...
Vliv parametru cost
• Měřeno na Retina MacBook Pro, 13", Late 2013, CPU Core i5 @ 2.4GHz, PHP 5.5.17
• Měření cost = 14: c...
NetteUtilsJson
• Metody

encode($value, $options = 0)

decode($json, $options = 0)
• Ošetření chyb: vyhazuje výjimky Nette...
NetteUtilsFileSystem
• Metody pro práci se souborovým systémem.
• Ošetření chyb – výjimky NetteIOException a některé další...
NetteUtilsValidators
• Validace datových typů i formátů – např. délka řetězce apod.
• Umí validovat jednotlivé proměnné, p...
NetteHttpHelpers
• ipMatch($ip, $mask)
• Maska zadána ve tvaru CIDR:

<prefix ip adresy>/<počet bitů shody>
• Příklad: IP ...
Dotazy?
14
Děkuji za pozornost.
15
Prochain SlideShare
Chargement dans…5
×

Nette\Utils a příbuzní: skryté klenoty (Poslední sobota #68)

1 428 vues

Publié le

Slidy k přednášce o vybraných nástrojích z Nette\Utils a podobných nástrojích.

Publié dans : Logiciels
  • Soyez le premier à commenter

Nette\Utils a příbuzní: skryté klenoty (Poslední sobota #68)

  1. 1. infrastruktura webová řešení marketing NetteUtils a příbuzní: skryté klenoty Jan Smitka, @jansmitka Poslední sobota #68, 31. 1. 2015
  2. 2. NetteIteratorsCachingIterator 2 {foreach $rows as $row} {if $iterator->first}<table>{/if} <tr n:class="$iterator->isEven() ? even : odd"> <td>{$row->name}</td> <td>{$row->email}</td> </tr> {if $iterator->last}</table>{/if} {/foreach}
  3. 3. NetteIteratorsCachingIterator 3 foreach ($iterator = new NetteIteratorsCachingIterator($rows) as $row) { if ($iterator->isFirst()) { // ... } // ... }
  4. 4. NetteUtilsStrings • Regulární výrazy se správným ošetřením chyb:
 http://phpfashion.com/zradne-regularni-vyrazy-v-php • Metody pro práci s řetězci v UTF-8 – používá extension mbstring. • Pozor na správné použití a míchání s non-multibyte funkcemi a hodnotami! 4
  5. 5. UTF-8 řetězce 5 strlen("Slečna"); // 7 mb_strlen("Slečna", "UTF-8"); // 6 substr("Slečna", 0, 6); // "Slečn" mb_substr("Slečna", 0, 6, "UTF-8"); // "Slečna"
  6. 6. Příklad špatného použití 6 public static function stripHeaders(CurlWrapper $curl) { $curl->responseHeaders = Strings::substring($curl->response, 0, $headerSize = $curl->info['header_size']); if (!$headers = CurlWrapper::parseHeaders($curl->responseHeaders)) { throw new CurlException("Failed parsing of response headers"); } $curl->response = Strings::substring($curl->response, $headerSize); return $headers; } $curl->info['header_size'] je počet bajtů, nikoliv počet UTF-8 znaků!
  7. 7. NetteUtilsRandom • generate($length = 10, $charlist = '0-9a-z') • Ke generování se snaží použít první z následujících metod (závislé na platformě): • openssl_random_pseudo_bytes (nepoužívá se v PHP 5.3 na Windows) • mcrypt_create_iv (nepoužívá se v PHP <= 5.3.6 na Windows kvůli bugu v PHP) • file_get_contents('/dev/urandom') (není dostupné na Windows) • md5(serialize($_SERVER), TRUE) • Kromě posledního jsou všechny kryptograficky bezpečné. • Dále kombinuje s microtime() a lcg_value(). 7
  8. 8. NetteSecurityPasswords • Metody (obdoba password_* z PHP 5.5 – http://php.net/manual/en/ref.password.php)
 hash($password, array $options = NULL)
 verify($password, $hash)
 needsRehash($hash, array $options = NULL) • Používá algoritmus bcrypt (PHP >= 5.3.7), $options: • cost – počet iterací (2cost – opatrně!), možné hodnoty 4-31, default 10. Určení vhodné hodnoty: http://php.net/manual/en/function.password-hash.php#example-924 • salt – 22 znaková sůl, pokud není zadána, Nette ji náhodně vygeneruje. 8
  9. 9. Vliv parametru cost • Měřeno na Retina MacBook Pro, 13", Late 2013, CPU Core i5 @ 2.4GHz, PHP 5.5.17 • Měření cost = 14: cca 1.77s. • Teoreticky cost = 31:
 1.77 * 2^31/2^14 = 1.77 * 2^17 = 1.77 * 131 072 = 231997 s = 64.44 h 9
  10. 10. NetteUtilsJson • Metody
 encode($value, $options = 0)
 decode($json, $options = 0) • Ošetření chyb: vyhazuje výjimky NetteUtilsJsonException. • Opravy chyb v různých verzích PHP:
 http://phpfashion.com/how-to-encode-and-decode-json-in-php 10
  11. 11. NetteUtilsFileSystem • Metody pro práci se souborovým systémem. • Ošetření chyb – výjimky NetteIOException a některé další. 11
  12. 12. NetteUtilsValidators • Validace datových typů i formátů – např. délka řetězce apod. • Umí validovat jednotlivé proměnné, prvky polí, … • Pěkná dokumentace: http://doc.nette.org/cs/2.2/validators 12
  13. 13. NetteHttpHelpers • ipMatch($ip, $mask) • Maska zadána ve tvaru CIDR:
 <prefix ip adresy>/<počet bitů shody> • Příklad: IP adresa 10.10.75.16 vyhovuje všem následujícím maskám:
 10.0.0.0/8
 10.10.0.0/16
 10.10.75.0/24
 10.10.75.16/32 13
  14. 14. Dotazy? 14
  15. 15. Děkuji za pozornost. 15

×