Raspberry Pi в шкафа

Преди няколко седмици срещу 90 лева се сдбоих с въпросното устройство. Представлява мини компютър с ARM процесор. В тази цена всъщност освен устройство се включва и кутията, в която съм го монтирал, а също така и 6GB карта с памет. Естествено всичко това работи с Линукс. Има няколко дистрибуции, които го поддържат, аз предпочетох Raspbian. И понеже кефа цена няма, профуках още 170 лева за 2TB външен хард диск. Най-много ме радва фактът, че устройството е абослютно „невидимо“, няма вентилатори и не се чува, освен това е скрито в шкафа. Като плюс мога да посоча и ниската консумация на ток, а недостатък е слабия процесор, който се наложи леко да overclock-на (до 900 MHz). Към момента работи вече близо седмица без прекъсване и се използва основно за torrent box (Deluge), DLNA сървър (MiniDLNA), backup сървър (BTSync) и файл сървър (Samba).

  • IMG 20140209 183345
  • IMG 20140209 183351
  • IMG 20140209 183356

Powered by, Simplicity

Phenom II X3 710 отключен до четириядрен

Успях най-нкарая да отключа четвъртото ядро на моя Phenom II X3 710 процесор. Бройката, с която разполагам не е от най-читавите и не носи много на clock. Все пак успях да го стабилизирам с отключено четвърто ядро на 3.4 GHz.

cpuz

How to calculate the difference between two dates, in full calendar months using Zend_Date

  1. Zend_Date::setOptions(array('format_type' => 'php'));
  2. $start = new Zend_Date('2013-01-31');
  3. $end = new Zend_Date('2013-06-30');
  4.  
  5. $result = $end->toString('Y') * 12 + $end->toString('n')$start->toString('Y') * 12$start->toString('n');
  6. if ($start->addMonth($result)->compare($end) == 1) {
  7.     $result = $result1;
  8. }
  9.  
  10. var_dump($result);

Как работят декораторите в Zend_Form

На практика декораторите в Zend Form са един доста удобен, мощен и полезен инструмент. С тях можем да направим всяка една форма, да изглежда точно така, както е зададена от дизайнерите на сайта. Причината да си блъскаме главата с декораторите е основно една – веднъж постигнали желаната визия на формата, забравяме за HTML-а. Zend_Form ще се грижи вместо нас за създаването на HTML-а, обработването и показването на грешките. Това е особено полезно, когато имаме сайт с например 10 или повече форми с еднаква структура. Тук наблягам на думата структура – формите могат да съдържат различни елементи, но HTML структурата им да е еднаква. Това означава, че се използват едни и същи тагове за показване на грешките или за визуализиране на заглавието на елемента например. Zend_Form прилага различни декоратори за различните елементите. Като цяло, за по-голямата част от елементите се прилгат следните декоратори:

ViewHelper
Errors
HtmlTag (<dd>)
Label (with wrapping <dt> tag)

Ето и как изглежда HTMl-а за един от елементите, генериран посредством декораторите по подразбиране:

  1. <dt id="name-label"><label for="name" class="required">Your name</label></dt>
  2. <dd id="name-element">
  3. <input type="text" name="name" id="name" value="" />
  4. <ul class="errors"><li>Value is required and can't be empty</li></ul></dd>

Това, което се случва е много просто е повече от елементарно. Трябва да се отбележи, че генерирането на HTML-а става от вътре на вън. С други думи първо се създавата input елементът. Грижата за това има ViewHelper декораторът. Резултат след изпълнението на ViewHelper декоратора, може да се види по-долу.

  1. <input type="text" name="name" id="name" value="" />

След това се добавят грешките, ако има такива разбира се. За това се грижи Errors декораторът. Ето и как ще изглежда генерираният HTML след прилагането на Errors декоратора.

  1. <input type="text" name="name" id="name" value="" />
  2. <ul class="errors"><li>Value is required and can't be empty</li></ul>

Всичко това се обвива в dd таг посредсвтом HtmlTag декоратора:

  1. <dd id="name-element">
  2. <input type="text" name="name" id="name" value="" />
  3. <ul class="errors"><li>Value is required and can't be empty</li></ul></dd>

Накрая се добавя label-а, обвит в dt таг. Грижа за това има Label декораторът. Това е резултатът (отново), който се получава след прилагането на всички декоратори.

  1. <dt id="name-label"><label for="name" class="required">Your name</label></dt>
  2. <dd id="name-element">
  3. <input type="text" name="name" id="name" value="" />
  4. <ul class="errors"><li>Value is required and can't be empty</li></ul></dd>

Освен декоратори за елементите, има и декоратори, които се прилагат към формата, след генерирането на всички елементи. Ето ги и тях (по подразбиране).

FormElements
HtmlTag (<dl>)
Form

Първият – FormElements, се грижи за рендирането на елементите. Резултатът се обвива в <dl> таг посредством втория декоратор – HtmlTag. Накрая се прилага Form декораторът, който обвива всичко във <form> таг. Ето как би изглеждала една форма с три полета (name, email, phone) и един submit бутон, генерирана посредством Zend_Form, с декораторите по подразбиране.

  1. <form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
  2. <dt id="name-label"><label for="name" class="required">Your name</label></dt>
  3. <dd id="name-element">
  4. <input type="text" name="name" id="name" value="" />
  5. <ul class="errors"><li>Value is required and can't be empty</li></ul></dd>
  6. <dt id="email-label"><label for="email" class="required">Your email</label></dt>
  7. <dd id="email-element">
  8. <input type="text" name="email" id="email" value="test@test.com" /></dd>
  9. <dt id="phone-label"><label for="phone" class="required">Your phone number</label></dt>
  10. <dd id="phone-element">
  11. <input type="text" name="phone" id="phone" value="1111" /></dd>
  12. <dt id="submit-label">&#160;</dt><dd id="submit-element">
  13. <input type="submit" name="submit" id="submit" value="Save changes" /></dd></dl></form>