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

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

Genialiai paprastas būdas web formų apsaugai nuo spam

Užklydęs pas Eimantą komentaruose radau genialiai paprastą sprendimą, kaip apsaugoti web formas nuo spamo:

su CSS užslėpti lauką, kurio pavadinimas yra tarkim “description1″. Su sąlyga, kad spam botas nežino, kurių laukų reikia, o kurių ne, jis bijodamas to, kad neužpildys kokio privalomo lauko, suvaro ką nors visur.

O čia imi ir patikrini, jeigu laukas, kurio vartotojas net neturėjo matyti užpildytas – spiri lauk.

Minties autorius – Artūras.

Data 2009.06.18 Komentarai 1 Kategorija Developing'as Žymės ,

Palengvinkim bei pagreitinkim CSS rašymą su LESS

Trumpai, LESS yra Ruby gems programa, leidžianti plačiau išnaudoti darbą su CSS. Jeigu kartais tenka padirbėti su CSS, tai šis įrankis nebus labai naudingas, tačiau kam tenka ištisai dirbti šioje srityje, verta pagalvoti apie pabandymą. Įdiegimas bei naudojimas labai paprastas.
Plačiau susipažinti einam tiesiai prie pavyzdžių:

Less

Data 2009.06.18 Komentarai 0 Kategorija Developing'as Žymės

BaseApp ypatingai lengvas (iki 50Kb) PHP5 karkasas, įkveptas CakePHP API

Nors BaseApp dar nėra jokios dokumentacijos, bet tas lengvumas patraukė dėmesį. Trumpai aprašomas:

  • Ypatingai mažas (iki 50Kb archyvuotas)
  • Labai greitas
  • Beveik jokios konfigūracijos
  • Greit išmokstamas
  • Lengvai išplečiamas
  • Licenzija be apribojimų

Techninės detalės:

  • PHP5
  • Pilnai MVC
  • CakePHP API bei šablonai
  • Active Records bei ORM
  • Reikšmių validacija bei helper’iai
  • Beveik visos palaikomos duomenų bazės
  • FireBug palaikymas
  • “Sausainių” (Cookie) bei sesijų valdymas

Kas dirbęs su CakePHP, manau nesunkiai sugebėtų šiek tiek pažaist su šiuo karkasu ir be dokumentacijos.

CakePHP biblioteka #1

1. Puikus rašinys, kaip pagreitinti aplikacijos veikimą. Pagrindas – cache.

2. Trumpas CSS stiliaus gabaliukas, pagerinantis  log informacijos peržiūrą. O jeigu reikia išsamios informacijos (cookie, sesijų reikšmės ir t.t.) – Debug Kit plugin.

3. JQuery naudojimas su CakePHP: I dalis, II dalis.

4. JQuery įskiepis, kuris įjungia submit mygtuką jeigu informaciją į teksto laukelį užpildyta.

5. Šiek tiek SEO, “pagražinant” nuorodas su mod_rewrite

Mashup idėja – Lietuviai twitter’yje

Kilo tokia idėja – nedidelis lietuviškas twitter mashup’as . Surinkti dauguma lietuvių (rašančių lietuviškai) į vieną vieną, su papildomom galimybėm, statistikom ir pan. Tai pradžioj nebūtų kažkas labai naudingo, labiau mokymosi tikslais. O jei per laiką kils tikrai gerų idėjų – galbūt išaugtų ir į kažką naudingo bei įdomaus.

Kol likus laisvai minutej vykdomi programavimo darbai, lieka atviras ir laisvas klausimas dėl pavadinimo. Tad jei kas turėsit pasiūlymų (tiek ir pačio projekto idėjų), pašom pasidalinti.