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.

Eilutės skaldymas į žodžių masyvą pagal norimą simbolių ilgį (PHP)

Prireikė tokios funkcijos, kuri eilutę padalintų į žodžių masyvą pagal norimą simbolių skaičių, tačiau “nenukastų” žodžių. Tarkim jeigu 3 žodžiai viršija simbolių ribą, tokių atveju paimti tik tai du. taigi, šiuo atveju PHP funkcija chunk_split netinka.

Kodas:

  1. function stringToWords($string, $chars) {
  2.  
  3.  $words = explode(' ', $string);
  4.  $n = count($words);
  5.  $first = 0;
  6.  
  7.  while($first <= $n) {
  8.  
  9.   $new_str .= ' '.$words[$first];
  10.   $new_len = strlen($new_str);
  11.  
  12.   if($new_len > $chars) {
  13.    $new[] = substr($tmp_str, 1);
  14.    $new_str = '';
  15.   } else {
  16.    if($first == $n) {
  17.     $new[] = substr($new_str,1);
  18.    }
  19.    $first++;
  20.    $tmp_str = $new_str;
  21.   }
  22.  }
  23.  return $new;
  24. }

Pavyzdys:

  1. <?php
  2. $s = 'It is a long established fact that a reader will be distracted by the
  3.        readable content of a page when looking at its layout. ';
  4. print_r(stringToWords($s, 25));
  5. ?>
  6. Rezultatas:
  7. Array
  8. (
  9.     [0] => It is a long established
  10.     [1] => fact that a reader will
  11.     [2] => be distracted by the
  12.     [3] => readable content of a
  13.     [4] => page when looking at its
  14.     [5] => layout.  
  15. )
Data 2009.11.20 Komentarai 0 Kategorija Developing'as Žymės

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.

Geriausias IE6 png klaidos fix’as

Net neabejoju, kad kiekvienas dirbantis web kūrimo srityje susidūręs su IE6 png kaip fono rodymo klaida. Sprendimo būdų taip pat yra daug, tačiau ne visi tinka. Kai kurie numuša css stilius, kiti iš vis neveikia ir pan. Atradau bene geriausia sprendimą – DD_belatedPNG. Parsisiunčiam iš autoriaus JavaScript bylą ir įterpiam į html:

  1. <!–[if IE 6]>
  2. <script src="DD_belatedPNG.js"></script>
  3. <script>
  4.   DD_belatedPNG.fix('.example_class');
  5. </script>
  6. <![endif]–>

DD_belatedPNG.fix(’.example_class’) dalyje vietoj “.example_class” nurodom reikiamą css klasę, kur yra img. Galimi ir keli variantai, pvz:
DD_belatedPNG.fix(’.example1, .example2, img’);

Data 2009.07.23 Komentarai 5 Kategorija Developing'as Žymės

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 , ,

Paprastas grafikų formavimas naudojant lenteles bei HTML5 & JQuery

Iš tiesų labai paprastas būdas gražiai atvaizduoti grafikus, naudojant paprastą lentelę (Table):

JQuery Visualize

Pačios lenteles pavyzdžio kodas bei jquery funkcija:

  1. <table >
  2.  <caption>2009 Individual Sales by Category</caption>
  3.  <thead>
  4.   <tr>
  5.    <td></td>
  6.    <th>food</th>
  7.    <th>auto</th>
  8.    <th>household</th>
  9.    <th>furniture</th>
  10.    <th>kitchen</th>
  11.    <th>bath</th>
  12.   </tr>
  13.  </thead>
  14.  <tbody>
  15.   <tr>
  16.    <th>Mary</th>
  17.    <td>150</td>
  18.    <td>160</td>
  19.    <td>40</td>
  20.    <td>120</td>
  21.    <td>30</td>
  22.    <td>70</td>
  23.   </tr>
  24.   <tr>
  25.    <th>Tom</th>
  26.    <td>3</td>
  27.    <td>40</td>
  28.    <td>30</td>
  29.    <td>45</td>
  30.    <td>35</td>
  31.    <td>49</td>
  32.   </tr>
  33.   …repetitive rows removed for brevity.
  34.  </tbody>
  35. </table>
  1.  
  2.    $(function(){
  3.     //make some charts
  4.     $('table').visualize({type: 'pie', pieMargin: 10, title: '2009 Total Sales by Individual'});
  5.     $('table').visualize({type: 'line'});
  6.     $('table').visualize({type: 'area'});
  7.     $('table').visualize();
  8.    });

Ir viskas, belieka įterpti šias bylas: JQuery, visualize plugin (js), visualize stilius (css). Tiesa, IE nesupranta HTML5, todėl papildomai reikia įterpti konverterį (archyve rasite):

  1. <!–[if IE]><script type="text/javascript" src="excanvas.compiled.js"></script><![endif]–>

Plačiau filamentgroup.com

webdunulis virtuvė – kokie naudojami įrankiai bei technologijos

Jau kuris laikas yra nusistovėję įrankiai bei technologijos, su kuriomis dirbu praktiškai kiekvieną dieną. Pasidalinu šia informacija su visais, galbūt kažkam pravers.

Programos:

Technologijos:

P.S. negarantuoju kad visos išvardintos programos turi visų platformų palaikymą. Aš naudoju Linux (Ubuntu).