Srpska slova u Adobe Flex, PHP, MySQL kombinaciji

Nisam ni slutio da će me pravilno rukovanje našim slovima ovoliko namučiti, ali evo i konačnog rešenja. Naime, kao bazu koristim MySQL, te je prvo tu trebalo izvršiti modifikacije. Iako sam postavio tabele da im charset bude utf-8, tak sam kasno primetio da su kolone ostale u latin1, koji mi nije prihvattao ČĆĐ. što znači da prvo treba proveriti da li su u MySQL-u i tabela i željena kolona u UTF-8 charsetu.

Kako koristim AmfPhp za povezivanje sa MySQL-om, bilo je potrebno podesiti i njega, jer sam shvatio da se u PHP-u podaci nepravilno obrađuju. Nakon par pokušaja, ustanovio sam da Gateway.PHP treba podesiti tako da se Charset Handler postavi na UTF-8

$gateway->setCharsetHandler("none", "UTF-8","UTF-8");

i kako je to dalo samo delimične rezultate, morao sam čeprkati dalje i time sam došao do konačnog rešenja, a to je da se nakon kreiranja konekcije na bazu postavi:

myset_charset('utf8', $rsConnectionID);

gde je $rsConnectionID identifikator konekcije.

I to je to. Radi 🙂

Advertisements

CodeIgniter: Provera da li je u formi naveden fajl za upload

Prilikom programiranja jedne aplikacije imao sam potrebu da se na jednom obrascu (form) nađu slika i podaci i da sam obrazac služi kako za novi unos, tako i za izmenu postojećeg unosa.
Problem se javio ukoliko se u nekom momentu ne menja slika, a vrši se izmena nekog od podataka. Ukoliko u proceduri za validaciju pokrenem upload slike javlja se greška jer fajl nije priložen. Stoga sam odlučio da upload pokrenem samo u slučaju da je fajl priložen, a u suprotnom da izvršim samo izmenu ostalih podataka.

Nakon male pretrage po netu rešenje sam našao na www.stackoverflow.com:

Rešenje je u proveri vrednosti $_FILES varijable. Međutim, nije dovoljno samo proveriti da li fajl ima neku vrednost već i da li je veličina fajla veća od 0. Ukoliko njiedan fajl nije odabran za upload PHP će kao veličinu ($_FILES[‘userAvatar’][‘size’]) vratiti 0, a privremeno ime fajla ($_FILES[‘userAvatar’][‘tmp_name’]) neće biti postavljeno.

if (isset($_FILES['userAvatar']) && $_FILES['userAvatar']['size'] > 0){
     echo "fajl je priložen";
} else echo "fajl nije priložen" ;

YoxView jQuery galerija slika

Kako mi je bila potrebna jedna jednostavna jQuery galerija za prikaz fotografija, odlučio sam se za YoxView. Dopadljiva je, jednostavna za implementaciju, a uz to ima i pregršt opcija za fino podešavanje.

Sve je u početku izgledalo jednostavno. Samo je potrebno napraviti <div> klase „yoxview“ koji sadrži umanjeni prikaz sličica, kao u primeru:

<div class="yoxview">
    <a href="img/01.jpg"><img src="img/thumbnails/01.jpg" alt="Prva" title="Prva slika" /></a>
    <a href="img/02.jpg"><img src="img/thumbnails/02.jpg" alt="Druga" title="Druga slika" /></a>
    <a href="img/03.jpg"><img src="img/thumbnails/03.jpg" alt="Treća" title="Treća slika" /></a>
</div>

uključiti yoxview u stranicu:

<script type="text/javascript" src="yoxview/yoxview-init.js"></script>

i inicijalizovati ga:

    
    $(document).ready(function(){
       $('.yoxview').yoxview();
    });
    

sve ostalo bi trebala odraditi sam YoxView.

Međutim, Marfi se probudio i proveo sam dobro vreme čudeći se zašto neće da proradi. Na kraju sam napravio skroz pojednostavljenu verziju html-a, kako bih pokušao otkriti u čemu je problem. Naravno bez uspeha 😦

Zatim sam se setio da pogledam šta kaže debugger 🙂
Greška koju mi je debugger prijavio je:

Uncaught TypeError: Object # has no method 'delegate'

I onda malo gleduckanja po Netu i problem rešen 🙂
Naime metod „delegate“ je uveden od jQuery verzije 1.4.2, a ja sam uporno radio sa 1.3.2 🙂

Izmena veličine svih sličica u folderu na linuxu

Neki dan sam dobio disk sa stotinjak fotografija proizvoda, ali su fotografije bile isuviše velike da bi ih mogao direktno iskoristiti za web prodavnicu. Nekako po navici krenuh da ih učitavam u Gimp i smanjujem ručno. Kako mi je već nakon prve dosadilo, setih se Imagemagick koji me je nedavno spasao muke 🙂

Komanda koju sam u ovom slučaju koristio je „mogrify“. Pored smanjenja/uvećanja fotografija, ova moćna alatka može uraditi još prilično veliki broj modifikacija i transformacija slike, a sve opcije su dobro dokumentovane.

U terminalu sam otvorio folder u kome se nalaze slike i kucao:

mogrify -resize 650x500 *.jpg

u ovom slučaju mogrify smanjuje slike poštujući proporciju, tako da su mi nove slike uglavnom bile 650 x 433 tačaka.
Ukoliko vam je iz nekog razloga potrebno da slike budu tačno 650×500 tačaka, pa makar bile „razvučene“, mogrify može i to. Samo je potrebno dodati uzvičnik 🙂

mogrify -resize 650x500! *.jpg

Pozicioniranje PopUp prozora u Flex-u

Danas sam i ja naišao na problem da PopUpManager ne pozicionira baš pravilno komponente. Problem nastaje kada se klik desio u nekoj komponenti aplikacije. Recimo, ja sam koristio komponentu sa umanjenim prikazom slike koja kada se klikne na nju prikazuje centrirano uvećanu sliku. Kako se u aplikaciji nalazi više komponenata na različitim pozicijama, to je i uvećan prikaz različito centriran. Rešenje je u sledećem:

import mx.core.Application;

private var uvecanaSlika:uvecanaSlikaKomponenta;

private function prikaziUvecano(event:MouseEvent):void
{
uvecanaSlika = new uvecanaSlikaKomponenta();
uvecanaSlika = uvecanaSlikaKomponenta(PopUpManager.createPopUp(DisplayObject(Application.application.parentDocument), uvecanaSlikaKomponenta, true));
PopUpManager.centerPopUp(uvecanaSlika);
}

Flex: Korišćenje Label komponente kao linka

Kada se label komponenta koristi kao link, poželjno je da se kursor iznad nje prikazuje u obliku šake sa ispruženim kažiprstom, kao što je to uobičajeno. Sama label komponenta ima osobinu useHandCursor, međutim, kada ju postavimo na true nema efekta. Stoga, umesto

< mx:label usehandcursor="true">

treba koristiti:

< mx:label usehandcursor="true" buttonmode="true" mousechildren="false" >

Znači, pored useHandCursor treba uključiti i buttonMode, a mouseChildren isključiti. Ovo funkcioniše i za neke druge komponente, ne samo za label.

strReplace() funkcija u Flex-u

Nakon pretraživanja neta za sintaksom strReplace() funkcije u Flex-u ispostavilo se da takva funkcija ne postoji kao sastavni deo AS3, ali sam našao rešenje koje stoga prenosim ovde:

private function strReplace( original:String, replace:String,
replaceWith:String):String
{
var array:Array = original.split(replaceWith);
return array.join(replace);
}

kako ne bih morao i sledeći put da ju tražim 🙂