Nädalavahetus ja php ja ajax

Käisin maal. Sõin hullult igasugu marju. Õeldakse et segi ei tohi süüa kuid ma panin valimatult vaarikaid, mustsõstraid, punasõstraid jne.

Muuseas oskan nüüd php-st andmeid JSON formaadis extjs scriptile ette kärutada. Kes teab kui suur pein oli vanasti javascriptile andmeid ette anda siis need teavad kui suur eelis see on 🙂 Ise olen rahul.

Extjs library

5 aastat tagasi sellise funktsionaalsuse loomiseks nullist läks ikka natukene aega (Sorteerimine, grupeerimine, menüüd jne.) Probleemiks oli ka siis see, et iga üks nokitses oma funktsionaalsuse.
Nüüd on tark kasutada avalike gruppide ka. ehk ka Sinu, poolt arendatavaid teeke. Siin on üks näide extjs library võimalustest. Kuna ma ei ole just väga quru javaskriptis siis natuke võttis aega, samas luban ennest sellel alal tublisti arendada 🙂

Hetkel on siis olemas n.n GUI või siis client side code.

gridPanel

Edasi tuleb siduda andud lahendus andmebaasiga kasutades Zend framework libraryt.

ImageMagick versus some GUI image editor

I am not every day image editor. Usually once a month I need resize some pictures and put them in my webpage. And every time I have the same problem pictures are too big.
Ok what to do? Lets compare “window user” and “Linux user” behaivor.

Windows user:
1. Start
2. many clicks and menus to find some image editor app.
3. Quickest solution to use Paint if it has that name 🙂 Worst case to use Photoshop or something.
4. File menu -> Open file -> browse file -> …
5. Hard work with mouse.
6. Save file.

this is minimum actions 90% there will be few restarts.

Linux users:
(Every linux user has open terminal app somewhere)
1. convert pic.png -resize 600×600 pic.jpg (600 is example)

Plaan c++, postgre, pdf

Vastavalt sellele kuidas mul vaba ajaga on annan tead kuidas projekt areneb.

Eesmärk: Vastavalt sisendandmetele sooritatakse postgreSQL andmebaasis päring ning kasutades programmeerimiskeelt C++ tekitatakse PDF fail mis hiljem prinditakse.

Kasutatavad ressursid:
Programmeerimiskeel – C/C++
PostgreSQL db layer for C++ – libqxx (http://pqxx.org/development/libpqxx/)

Alustan vaikselt C postgreSQL connect testi.
Vajalikud headerid:
libpgeacy.h – port install libpgeacy
libpq-fe.h – see tundub poevat postgre dev paketis – fink install postgresql82-dev

Hetkel on asi sellises seisus ja kell on 00:30 aitab. Magama:
make all
Building target: tousuleht
Invoking: MacOS X C Linker
gcc -o “tousuleht” ./pgconnect.o
Undefined symbols:
“_connectdb”, referenced from:
_main in pgconnect.o
“_fetch”, referenced from:
_main in pgconnect.o
“_doquery”, referenced from:
_main in pgconnect.o
“_disconnectdb”, referenced from:
_main in pgconnect.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [tousuleht] Error 1

Selgus et MAC OS X ei oma sellist tooli nagu ldd aga omab hoopis otool -L

linux.ee pealt aidati ka:

[17:17] <Kang> Margusja_: postgres’i teek tundub puudu olevat.
[17:17] <Kang> -lpsql
[17:19] <kaups_AU> Margusja_: -lpgsql ?
[17:19] <Kang> failinimi on kuju libXYZ.so või libXYZ.a
[17:19] <kaups_AU> või mis iganes selle postgresi libra nimi võiks olla
[17:20] <Kang> sellele vastavalt gcc võti on -lXYZ
[17:21] <jussuf> -lpq peaks postgresi lib olema

Peale väikest otsimist paigaldasin fink abil libpqxx2 ja libpqxx2-shlibs

Jälle üks fakt, et igasugused poolautomaatsed builderid on saatanast.
kasutasin käsureal gcc asemel g++ compilaatorit ja hetkel tundub et mul on vajalikud libraryd olemas
libpqxx on see mida ma siis vajan.

Ja mida me veel õppisime. gcc on c compiler ja g++ on c++ compiler.

Kellelgi on sama probleem: http://archives.postgresql.org/pgsql-interfaces/2003-01/msg00115.php

Uhh nii!
Sain ka Mac OS X 10.5.2 peal postgre connection algfaasi kokku.
kasutasin C library (libpq) (C koodis #include libpq-fe.h)
Kuna gcc ei leidnud kohe libpq libraryt siis tuli minu süsteemis talle see ette anda -L/gw/lib -lpq – Selgitame:
-l lingib mingi library koodi külge. syntax: -lXXXX kus XXXX on mingi library, antud juhul oli tegu libpq kus lib jäetakse siis ära. Süsteemis asus library /sw/lib/libpq.a

Hetkel on kenasti asi seal maal, et postgresi baasiga on korralik ühendus olemas kasutades libpq ja C programmeerimiskeelt. Samuti saan andmebaasis andmeid kenasti lugeda ja kuvada.

Tänase õhtu nokitsemine lõppes sellega, et saan vastava CODE sisestamisega vastu vastava CODE andmed.

Asi on siis niikaugel et postgreSQL-ist saan seda mida tahan ja C array-sse suudan ka kogu selle kola kenasti panna.

Natuke nokitsemist ja Mac OS X 10.5 pdflib pakk peal ja kompilaator ka rahul.

Probleeme oli korra mõningate funktioonide leidmisega:

“_HUnlock”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_CurResFile”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
“_FSpOpenDF”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontFormat”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSpOpenResFile”, referenced from:
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontContainer”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfontfile in libpdf.a(ft_hostfont.lo)
“_HLock”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_GetResource”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_CopyCStringToPascal”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfontfile in libpdf.a(ft_hostfont.lo)
“_GetEOF”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontFromFontFamilyInstance”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_CloseResFile”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSpGetFInfo”, referenced from:
_pdc_init_output in libpdf.a(pc_output.lo)
“_FSGetCatalogInfo”, referenced from:
_FSPathMakeFSSpec in libpdf.a(pc_file.lo)
“_FSpSetFInfo”, referenced from:
_pdc_init_output in libpdf.a(pc_output.lo)
“_UseResFile”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSClose”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSpMakeFSRef”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontFamilyFromName”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_ReleaseResource”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSRefMakePath”, referenced from:
_FSMakePath in libpdf.a(pc_file.lo)
“_FSPathMakeRef”, referenced from:
_FSPathMakeFSSpec in libpdf.a(pc_file.lo)
“_PBMakeFSRefSync”, referenced from:
_FSMakePath in libpdf.a(pc_file.lo)
“_Get1IndResource”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
“_Get1NamedResource”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FSOpenResourceFile”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_GetHandleSize”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_ResError”, referenced from:
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_Count1Resources”, referenced from:
_pdf_get_metrics_type1 in libpdf.a(p_type1.lo)
_pdf_t1open_fontfile in libpdf.a(p_type1.lo)
“_FSRead”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
ld: symbol(s) not found

Need lahenesid vastavalt siis kompilaatorile -framework võtmetega antavate parameetritega:

gcc -L/sw/lib/ -lpq -I /sw/include/postgresql/ -I/sw/include/ -lpdf -framework CoreServices pgconnect.c -o pgconnect

Peale seda kompilaator kaebas:Undefined symbols:
“_FMGetFontFormat”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontContainer”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfontfile in libpdf.a(ft_hostfont.lo)
“_FMGetFontFromFontFamilyInstance”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
“_FMGetFontFamilyFromName”, referenced from:
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
_fnt_get_hostfont in libpdf.a(ft_hostfont.lo)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Puudu oli Fonts.h mis asus Mac OS X ApplicationServises framework kaustas.
Lisasime veel ühe framework-i ja kompilaator rahul
gcc -L/sw/lib/ -lpq -I /sw/include/postgresql/ -I/sw/include/ -lpdf -framework CoreServices -framework ApplicationServices pgconnect.c -o pgconnect

PDF fail luuakse kenasti – hetkel on küll loodava faili taustal PDFLIB reklaamurl.

Subnet Cheat Sheet ehk IP network mask e kuidas arvutada oma IP ala

Kui sa tead oma IP ala netmaski, näiteks 255.255.255.248 siis 256-248=8. Siit lahuta veel 2, sest gateway ja broadcast kuuluvad siia sisse. 8-2=6. Siit tulenevalt sul on 6 kasuliku IP-ga IP range. Nüüd tead, et võrk, näiteks 192.168.0.x, on jagatud 8ks osadeks.  Siit siis annab tuletada 192.168.0.248/8


/8 /255.0.0.0 16,777,215 Used to be called an `A-class'
/16 /255.255.0.0 65,535 Used to be called an `B-class'
/17 /255.255.128.0 32,767
/18 /255.255.192.0 16,383
/19 /255.255.224.0 8,191
/20 /255.255.240.0 4,095
/21 /255.255.248.0 2,047
/22 /255.255.252.0 1,023
/23 /255.255.254.0 511
/24 /255.255.255.0 255 Used to be called a `C-class'
/25 /255.255.255.128 127
/26 /255.255.255.192 63
/27 /255.255.255.224 31
/28 /255.255.255.240 15
/29 /255.255.255.248 7
/30 /255.255.255.252 3

Hosts Netmask Amount of a Class C
/30 4 255.255.255.252 1/64
/29 8 255.255.255.248 1/32
/28 16 255.255.255.240 1/16
/27 32 255.255.255.224 1/8
/26 64 255.255.255.192 1/4
/24 256 255.255.255.0 1
/23 512 255.255.254.0 2
/22 1024 255.255.252.0 4
/21 2048 255.255.248.0 8
/20 4096 255.255.240.0 16
/19 8192 255.255.224.0 32
/18 16384 255.255.192.0 64
/17 32768 255.255.128.0 128
/16 65536 255.255.0.0 256

Guide to sub-class C blocks

/25 — 2 Subnets — 126 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.126 .127
.128 .129-.254 .255
/30 — 64 Subnets — 2 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.2 .3
.4 .5-.6 .7
.8 .9-.10 .11
.12 .13-.14 .15
.16 .17-.18 .19
.20 .21-.22 .23
.24 .25-.26 .27
.28 .29-.30 .31
.32 .33-.34 .35
.36 .37-.38 .39
.40 .41-.42 .43
.44 .45-.46 .47
.48 .49-.50 .51
.52 .53-.54 .55
.56 .57-.58 .59
.60 .61-.62 .63
.64 .65-.66 .67
.68 .69-.70 .71
.72 .73-.74 .75
.76 .77-.78 .79
.80 .81-.82 .83
.84 .85-.86 .87
.88 .89-.90 .91
.92 .93-.94 .95
.96 .97-.98 .99
.100 .101-.102 .103
.104 .105-.106 .107
.108 .109-.110 .111
.112 .113-.114 .115
.116 .117-.118 .119
.120 .121-.122 .123
.124 .125-.126 .127
.128 .129-.130 .131
.132 .133-.134 .135
.136 .137-.138 .139
.140 .141-.142 .143
.144 .145-.146 .147
.148 .149-.150 .151
.152 .153-.154 .155
.156 .157-.158 .159
.160 .161-.162 .163
.164 .165-.166 .167
.168 .169-.170 .171
.172 .173-.174 .175
.176 .177-.178 .179
.180 .181-.182 .183
.184 .185-.186 .187
.188 .189-.190 .191
.192 .193-.194 .195
.196 .197-.198 .199
.200 .201-.202 .203
.204 .205-.206 .207
.208 .209-.210 .211
.212 .213-.214 .215
.216 .217-.218 .219
.220 .221-.222 .223
.224 .225-.226 .227
.228 .229-.230 .231
.232 .233-.234 .235
.236 .237-.238 .239
.240 .241-.242 .243
.244 .245-.246 .247
.248 .249-.250 .251
.252 .253-.254 .255
/26 — 4 Subnets — 62 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.62 .63
.64 .65-.126 .127
.128 .129-.190 .191
.192 .193-.254 .255
/27 — 8 Subnets — 30 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.30 .31
.32 .33-.62 .63
.64 .65-.94 .95
.96 .97-.126 .127
.128 .129-.158 .159
.160 .161-.190 .191
.192 .193-.222 .223
.224 .225-.254 .255
/28 — 16 Subnets — 14 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.14 .15
.16 .17-.30 .31
.32 .33-.46 .47
.48 .49-.62 .63
.64 .65-.78 .79
.80 .81-.94 .95
.96 .97-.110 .111
.112 .113-.126 .127
.128 .129-.142 .143
.144 .145-.158 .159
.160 .161-.174 .175
.176 .177-.190 .191
.192 .193-.206 .207
.208 .209-.222 .223
.224 .225-.238 .239
.240 .241-.254 .255
/29 — 32 Subnets — 6 Hosts/Subnet

Network # IP Range Broadcast
.0 .1-.6 .7
.8 .9-.14 .15
.16 .17-.22 .23
.24 .25-.30 .31
.32 .33-.38 .39
.40 .41-.46 .47
.48 .49-.54 .55
.56 .57-.62 .63
.64 .65-.70 .71
.72 .73-.78 .79
.80 .81-.86 .87
.88 .89-.94 .95
.96 .97-.102 .103
.104 .105-.110 .111
.112 .113-.118 .119
.120 .121-.126 .127
.128 .129-.134 .135
.136 .137-.142 .143
.144 .145-.150 .151
.152 .153-.158 .159
.160 .161-.166 .167
.168 .169-.174 .175
.176 .177-.182 .183
.184 .185-.190 .191
.192 .193-.198 .199
.200 .201-.206 .207
.208 .209-.214 .215
.216 .217-.222 .223
.224 .225-.230 .231
.232 .233-.238 .239
.240 .241-.246 .247
.248 .249-.254 .255

5 minutiga Windows XP Home -> Windows XP Professional

Kõne MS Eestisse ja sealpoolne teenindaja väitis et ei ole võimalik ja heal juhul muutuvad ainult logod. Küsimusele et kas see on legaalne, vastas teenindaja et teie oma asi mida te oma ostetud windosiga teete.

Win XP HOME ei tohiks toedata domeeni logimist. Peale allpool tehtud uuendamist hakkas ta igatahes järsku domeeni kogimist toetama!

1. Avame regedit (kes ei tea, mis see on ja kuidas käivitada – Start->Run ja avanenud aknakese väljale kirjutame regedit ning klikkame OK nuppu)
2. Valime kataloogi: HKEY_LOCAL_MACHINE ja liigume alajaotusse SYSTEM
3. Näeme seal mitut alajaotust nimega ControlSet, milledel lisaks numbrid (näiteks ControlSet001 ja ControlSet003). Meie vajame seda, mis on kõige suurema numbriga.
4. Edasi valime eelneva alt alajaotuse nimega Control ja siis ProductOptions
5. Home versioonil on seal parameeter ProductSuite “multifunctional parameter” väärtusega Personal – see tuleks eemaldada ja tema asemele seal samas anda väärtus nimega Brand tüübiga “DWORD” väärtusega 0 !
6. Sulgeme ristikesest Regedit akna ja restardime arvuti. Uuesti startimis ajal vajutame klahvi F8 saamaks ette mustal ekraanil startimis võimaluste menüüd. Selles menüüs teeme valiku “Last known good configuration” kasuks.
7. Ongi valmis. Selleks, et tagasi saada omale Windows XP Home peate sama õpetuse järgi muutma selle registri võtme endiseks.

Arvutiabi

Tihti on arvutikasutajad kodus, kontoris jne hädas. Vahel on häda nii väike et kedagi eraldi kutsuda ei ole mõtet. Samas tahaks nagu veast lahti saada!  Hea võimaluse selleks annab väike programmijupp mille peab abivajaja endale tõmbama ja valima sealt abistaja nime ning sellele klikkima.

Tõmba programm SIIT
Vali siis vastavalt, kas ma olen kodus või tööl, nimi ja tee sinna toppeltklikk.
Nüüd lihtsalt vaata mida ma teen ja oota.
See programm ei instaleeri sinu arvutisse midagi!
Peale programmi sulgemist ei saa ma enam sinu arvutisse!