CakePHP v1.2.5 ir v1.3.0 alpha greičio bei atminties palyginimas

Atlikau nedidelį testą, kaip skiriasi greitis bei atminties vartojimas CakePHP v1.2.5 ir v1.3.0 versijose:

Greitis, debug rėžimas:
v1.2.5 ~0.228s
v1.3.0 ~0.168s (35% greičiau)

Atmintis, debug rėžimas:
v1.2.5 ~8.4MB
v1.3.0 ~7.2MB (17% mažiau)

v1.2.5 ~7,1MB
v1.3.0 ~6,1MB (16% mažiau)

Rezultatai iš tiesų neblogi.

Wordpress temu antraštės CakePHP aplikacijoje

Jeigu kam prireiktų CakePHP aplikacijoje ištraukti iš Wordpress naujausias temas, sprendimas labai paprastas.
Sukuriam Modelį “Blog”:
/app/model/blog.php

  1. <?php
  2. class Blog extends AppModel {
  3.  
  4.  var $name = 'Blog';
  5.  var $useDbConfig = 'blog';
  6.  var $useTable = 'wp_posts';
  7.  
  8.  function getTitles() {
  9.   $filter = array(
  10.    'limit' => 2,
  11.    'conditions' => array(
  12.     'post_status' => 'publish',
  13.     'post_type'   => 'post'
  14.    ),
  15.    'order' => 'post_date desc'
  16.   );
  17.   return $this->find('all', $filter);  
  18.  }
  19. }
  20. ?>

bei duomenų bazių konfigūracijoje:
/app/config/database.php

  1. var $blog = array(
  2.   'driver' => 'mysql',
  3.   'persistent' => false,
  4.   'encoding' => 'utf8',
  5.   'host' => 'localhost',
  6.   'login' => '',
  7.   'password' => '',
  8.   'database' => 'autoz_wp',
  9.   'prefix' => '',
  10.  );

ir belieka kontroleryje iškviesti:

  1. $news = ClassRegistry::init('Blog')->getTitles();
Data 2009.09.25 Komentarai 0 Kategorija CakePHP Žymės ,

Bandom kurti lietuvišką CakePHP bendruomenę

Senai jau norėjau kažką panašaus sukurti, bet pagalvojau, jog visai gražu kad ta bendruomenė kurtųsi CakePHP karkso pagalba. O būtent šiandien Miles Johnson pristatė forumo beta versiją Cupcake. tad nieko nelaukęs įdiegiau http://forum.webdunulis.lt adresu. Tiesa, iš karto susidūriau su keliomis klaidomis, tačiau pradėt naudot sistemą iš esmės galima.

cupcake_forum

Nežinau kiek tiksliai čia pas mus yra šio karkaso mėgėjų, bet visus kviečiu užsukti, spręsti iškilusius klausimus, ieškoti patarimų ir t.t. Manau pradžioj bendro forumo užteks, vėliau priklausomai nuo diskusijų skirstysim į atskiras kategorijas.

Data 2009.09.16 Komentarai 0 Kategorija CakePHP Žymės , ,

Nauja web aplikacija kodiniu pavadinimu – devCRM

Įmonėje atsiradus daugiau klientų, bei bendravimo su jais, atsirado poreikis visa tai kažkur užsirašinėti. Trumpai peržvelgus esamas nemokamas CRM sistemas, nei viena nepatiko. Sunkios, prigrūstos visko, grafinės sąsajos nemielos akiai.
Tuomet pagalvojau, gal ką pačiam greit pasirašyti ir tą mintį pavadinau devCRM. Po kelių valandų jau turėjau kliento, su juo susijusios veiklos bei komentarų įvedimą/redagavimą/trynimą. Iš pradžių be jokių prisijungimų, ACL taisyklių ir pan, kadangi naudosiuosi vienas darbo vietoje. Svarbiausia jau galima dirbi su klientais:

Klientai

Screenshot-1

Screenshot-2

Sistema paprasta – įvedamas klientas, kuriam galima rašyti komentarus bei veiklą. Veikla – tai visas bendravimas su klientu, nutarimai ir t.t. Tai taip pat atlieka dalinai ir užduočių funkciją tiek sau, tiek klientui, kadangi turi 3 tipus:

  • Laukiama
  • Gauta
  • Informacija

Imkim kaip pavyzdį – kuriate interneto svetainę klientui ir jis jums turi pateikti tam tikrą informaciją. Tokiu atveju prirašai jog lauki tekstų ir uždedi tipą “laukiama”, o gavus reikiama informacija pažymi “gauta”, taip aiškiai užfiksuojamas laiko tarpas. Tai padeda lengviau apskaičiuoti laiko terminus, kada laikas vilkinamas kliento kalte. Taip pat nuėjus į visų veiklų sąrašą, klientą galima paraginti, kad nėra gauta duomenų. Taip pat, kai įvedi informaciją apie sutarimus, visą bendravimą, tada nekyla klausimų po kiek laiko. Atsidarai klientą ir matai visą istoriją.

Dar kiek patobulinus ir patvarkius kodą, įdėsiu source’ą čia.

Interviu su Nate Abele apie laukiamą Cake3

Kadangi informacijos apie taip laukiamą Cake3 praktiškai nėra, šis interviu dar labiau sužadina smalsumą, kaip atrodys tas naujas, perrašytas karkasas.

Savo ruoštu aš pristatau tik keletą  išsakytų teiginių:

  • Cakephp 2.0 bus greitesnė ~25%
  • Cake3 bus pilnai perrašytas kodas PHP 5.3 versijai
  • Perėjimas nuo 1.x į 2.0 nebus skausmingas. Nebent bus kelios panaikintos funkcijos, tačiau apie tai bus parašytas perėjimo gidas.
  • Cake3 eina link pilno ActiveRecord palaikymo
  • Visas branduolys bus suskirstytas paketais. iš to išplaukia nemažai pliusų: jais bus galima panaudoti ir kituose karkasuose, “plugin” architektūra taps dar paprastesnė ir t.t.
  • Cake3 panaudos: Closures, Namespaces

Jeigu domitės CakePHP, interviu nėra ilgas, perskaitykit. Daug ko čia dar nepaminėjau.

Data 2009.07.23 Komentarai 1 Kategorija CakePHP Žymės ,

CakePHP karkaso ateitis trumpai

cake-php-logo

Ne per seniausiai užmačiau, kad jau išleistas viešai cake3 source’as. Kuriamas naujausios PHP v5.3 pagrindu.  Iš trumpo aprašymo matyt kad bus praktiškai iš esmės perrašytas karkasas.

Bet anksčiau sulauksim CakePHP2, nuo šios versijos jau bus atsisakytas PHP4 palaikymas. Pagrindiniai uždaviniai:

  • PHP 5/6 only support
  • Change Model::tableId to Model::primaryKey
  • Fix Bake and ACL CLI scripts, and let’s not forget to generate unit test files this time, too
  • Inflector: support for custom rules
  • Allow Cake apps to be independent of the Cake install directory
  • Degradable Ajax, with support for Bookmarking and the Back button
  • Planned ACL updates
  • datasource: http://www.w3.org/TR/wsdl
  • Add a PDO driver
  • Change Models to return object instances instead of arrays
  • Validation class, with auto length and type based on db field
  • Enable field whitelist for Model::save( ) – http://groups.google.com/group/cake-php/browse_thread/thread/3ce2bc624d335b9/9ae1f14d5b74cce8?q=&rnum=6#9ae1f14d5b74cce8
  • Session flashing needs some help, maybe the ability to specify layouts/parameters?
  • Consider auto-generating hasMany and belongsTo relationships by comparing foreign keys to loaded models. This might also be the place to implement something db-specific, like reading InnoDB relationships.
  • Query caching
  • Change Component to a base class instead of a loader/singleton, and have components extend Component.
  • Make Router a singleton
  • Write an LDAP DataSource, and an ACL interface to it
  • Create a formalized way to extend Cake at the bootstrap level, and a basics function for loading these extensions (Extensions?)
  • Rewrite NeatArray and NeatString as Array and String, and actually add some handy methods/make it possible to call some stuff statically
  • Enable global loading of JavaScript libraries in /cake_core/vendors/js
  • Correct 2 files from Changeset [2643] (cake/config/tags.ini.php and cake/libs/view/helpers/html.php)

Žinoma, bus dar ir CakePHP v1.3, tačiau kiek teko girdėti, kažkokių kardinalių pakeitimų nebus. Tiesiog esamos 1.2 tobulinimas.

Data 2009.07.14 Komentarai 2 Kategorija CakePHP Žymės , ,

Nemokama knyga “Super Awesome Advanced CakePHP Tips” PDF formatu

Vakar Matt iš PseudoCoder išleido trumpą pdf knygą “Super Awesome Advanced CakePHP Tips” visiškai nemokamai. Trumpai peržvelgsiu, ką naudingo joje galima rasti:

  • Trumpą paaiškinimą apie Containable Behavior naudingumą
  • Funkcijos find perdarymą savo aplikacijos reikmėms (kaip pvz $Model->find(’latest’) ar $Model->find(’tag’, array(’php’, ‘cakephp’)), iš ties patogu!)
  • Prisijungusio vartotojo informacijos gavimas bet kurioje MVC dalyje (Model, View ar Controller) per User::get(’id’)
  • Automatinis vartotojo veiksmų sekimas (pvz kas ir kada sukūrė ar redagavo puslapio informaciją)
  • Unit Testing
  • Funkcijų add/edit sujungimas į vieną (tiek Controller, tiek View dalyse)
  • Paprastas sprendimas SEO nuorodoms
  • JQuery naudojimas vietoj Prototype ir script.aculo.us
  • Aplikacijos optimizavimas
  • Bei keletas naudingų patarimų

Šią knygą sudaro vos 64 puslapiai, viskas konkrečiai ir aiškiai aprašyta. Labai rekomenduoju perskaityt.

Data 2009.05.15 Komentarai 1 Kategorija CakePHP Žymės

Rodyti/Paslėpti teksto turinį Ajax pagalba

Kartais prireikia tam tikrų informacinių blokų paslėpimo/rodymo funkcijos (kaip pvz didelės kategorizuotos registracijos formos, kur užpildyti laukus neprivaloma). Toks būdas sutaupo nemažai vietos vertikaliai.

Pirmiausia reikės prototype bibliotekos, parsiunčiam į /webroot/js/ katalogą. Toliau aplikacijos kontroleryje (Controller) nurodome JavascriptHelper’io biblioteką:

  1. var $helpers = array('Html', 'Form', 'Javascript');

Belieka tik šablone (View) įterpti šį kodą:

  1. <?php
  2.  // įterpiama prototype biblioteka
  3.  echo $javascript->link('prototype');
  4.  
  5.  // nuoroda, kuri paslepia/parodo turinį
  6.  echo $html->link('Rodyti/Paslėpti','#', array('onclick' => "Element.toggle('content');")); ?>
  7. ?>
  8.  
  9. <div id="content" style="display: none;">
  10.  Tekstas
  11. </div>
Data 2009.05.04 Komentarai 0 Kategorija CakePHP Žymės , ,

Užklausos į duomenų bazę cache’avimas

Lygiai su tokia problema ir man teko susidurti, kaip šio rašinio autoriui. Kada užkešuoti kontrolerio funkciją neužtenka, nes ji gražina du ar daugiau skirtingus duomenų kiekius. Šis sprendimas leidžia kešuoti kiekvieną užklausimą į duomenų bazę atskirai:

  1. // Cache query to /tmp/cache/sql/model-test_sql_query
  2. $results = $this->Model->find('all', array(
  3.  'cache' => 'test_sql_query'
  4. ));
  5.  
  6. // Cache query to /tmp/cache/sql/model-another_query that expires in 24 hours
  7. $results = $this->Model->find('all', array(
  8.  'cache' => array('another_query', '+24 hours')
  9. ));

Visa dokumentacija bei kodas – milesj.me

Data 2009.04.17 Komentarai 2 Kategorija CakePHP Žymės ,

Wordpress ir CakePHP draugija

Jeigu esate sukūrę aplikaciją CakePHP karkasų, tačiau reikia įdiegti ir Wordpress blogą kaip pvz www.example.com/blog/ adresu, šis sprendimas .htaccess pagalba jums padės:

  1. RewriteEngine on
  2. RedirectMatch temp ^/blog/wp-admin$ http://www.example.com/blog/wp-admin/
  3. RewriteRule blog$ /blog/ [L]
  4. RewriteRule blog/wp-admin$ /blog/wp-admin/ [L]
  5. RewriteRule ^$ app/webroot/ [L]
  6. RewriteRule (.*) app/webroot/$1 [L]

Šaltinis: sebgalarneau.com

Data 2009.04.15 Komentarai 0 Kategorija CakePHP Žymės ,