Web design

Eloszo:
Mindig is maximalista voltam, es a leheto legjobban akartam mindent csinalni. eppen ezert a web programozas sohasem vonzott, mert messze nem eroforrashatekony. En meg commodore-on kezdtem programozni, aztan PC-n folytattam assemblyben, most mikrokontrollereket programozok. Ezekben az a kozos, hogy szamit a meret! Nem mindegy hany biten abrazolsz egy szamot, vagy vegzel vele muveletet. Igazabol ez sohasem mindegy, de a modern fejlesztokornyezetek, es programnyelvek elfedik ezt. Persze aki igazan ert hozza az ott is tudja, hogy egy osszeadas, szorzas, tomb indexeles muvelet hogy fog vegrehajtodni a processzoron (es a memoriaban, processzor cacheben). Bar ez nem mindig egyszeru, hiszen ma a platformfuggetlenseg sokszor fontosabb, igy nem is tudjuk min fog futni. Sokszor nem is erdekli a fejlesztoket hogy gyors legyen a kod, majd vesznek erosebb gepet ala, ha kell, inkabb az a lenyeges, hogy gyorsan kesz legyen. Ma a gyors fejlodes (es gyors profit) vilagaban a fejlesztesi ido az elsodleges. Ami nem baj, hisz a fejlesztes penz, es ha nem igyekszenek akkor masok hamarabb kijonnek ugyanazzal a termekkel.

A Web fejlesztesnel is fontos a gyors fejlesztes, de az elsodleges szempont az elerhetoseg. Mindig, mindenhonnan! Mig mas programokat telepiteni kell addig szinte minden PC-n van web bongeszo. Igy minden ami a weben fent van az barhonnan elerheto. Az mas kerdes, hogy ha mobiltelefonon GPRS-en keresztul egy megabyte-nyi flasht es java scriptet kell letolteni az oldal betoltodesehez annek nem fog a felhasznaloja orulni. A bongeszopiacon eles verseny van a gyors javascript motorok teren is. Barmennyire jol is irnak meg egy webes alkalmazast, mivel az bongeszon belul futtatott, igy mindig lassabb eroforras igenyesebb lesz mint egy jol megirt helyi program. Persze a jol megirtat fontos hangsulyozni, mert vannak programok amik egymaguk ki tudjak donteni a gepet.
Talan ez az overload nem latszik meg egy mai gepen, ha csak egy-ket program/bongeszoablak fut. Viszont nalam allandoan tele van a kepernyo ablakokkal, felbehagyott feladatokkal (irodalomkutatas…) Csak az operaban 29 tab van most nyitva, a firefoxban legalabb negyven oldal kb 10 ablakban, es IE-ben is meg van nyitva vagy 10, meg google chromeban is kb 10. A firefox es az opera csak egy-egy processzt hasznal mindketto 250..500MB memoria+ ugyanennyi virtualis memoriahasznalattal. A firefox igen gyakran egy gigaig is felmagy (mem+VM), ed volt mar olyan is hogy 1GM mem, 1.3GM VM hasznalattal futott (.. jart.. setalt.. cammogott). Az IE is siman felment kozel 400MB VM hasznalatik tegnap.
Nem ritkasag hogy a taskbaron 50-nel tobb ablak van (3 sorban), de van kepernyomentesem ahol 69 ablak volt megnyitva. Az se ritka, hogy remote desktop es vagy virtual PC is az ablakok kozott van amin tovabbi proceszek futnak (de ez nem annyira lenyeges az eroforras hasznalat szempontjabol). A lenyeg, hogy hard core felhasznalo vagyok, es az oprendszert, bongeszoket nem ezekhez az igenyekhez tervezik.
A chrome peldaul buszken hangoztatja hogy minden ablakhoz/tabhoz sajat processt hasznal, igy az egyik kiakadas nam akasztja meg a tobbiben a betoltest… Aki elolvasta az elozo postomban szereplo “Pushing the Limits of Windows: Processes and Threads” cikket az tudja, hogy a sok processnek megvannak a hatulutoi. Tegnap pl a chromeban tobb masodpercet kellett varnom hogy barmit reagaljon, vagy betoltodjon a google maps oldal (pedig ugye azt irja, hogy hasznaljak chrome-ot mert azzal gyorsabb). Persze ez azert van mert a bongeszok es egyebek (visual studio…) annyi memoriat foglaltak, hogy a ket giga rendszermemoria nem eleg, es szinte a teljes memoriajat kiswappeli page fileba, majd onnan probalja visszatoltogetni…
Csak a kontraszt kedveert a uTorrent kozel ezer torrentel a listajan (kb 50 fut is) (tudjatok linux image-ek) kevesebb mint20+40MB-ot hasznal! (a memoria meretek task manager adatok, a VMMap szerint se hasznal 65MB VM, 16MB WS-et) Pedig forgalomban is ez bonyolitja a legtobbet (tobb szaz giga). A FAR Managerbol szokott futni 5..10..20 db es csak nehany mega memoriat hasznal (colorer+autocomplete.. pluginekkel)

Szoval nagyabol ennyi mar sok is a webes alkalmazasok, es weboldalak eroforras hatekonysagarol. Teny, hogy rendkivul kenyelmes, es a vilag is a mobilitas fele megy.
Ha viszont web oldalt tervezunk, akkor tervezzunk jot. Itt kapasbol ket reszre lehet osztani: a kliensben megjeleno oldal, es az azt generalo szerverre. aztan azokat tovabb: webszerver, adatbazis szerver, cgi/php/asp(x)/jsp… eloallito program/script. php eseten lehet gyorsitan cache megoldasokkal, hogy ne keljen minden hozzaferesnel ujraforditani/ertelmezni a scriptet pl. eAcceleratorral. Klieons oldalon htlm, java script, css, flash, java applet… megoldasok kozul lehet valasztani, kombinalni… Ill. szinten ide tartozik nem utolsosorban, hogy hogy fog az oldalkinezni, hogy lehet hasznalni. (ez ezert kezdtem el irni ma)

(web) Design. Meg koli alatt olvastam webdesign pszihologiat. Nehany inkek kint is van az oldalamon http://szikraistvan.no-ip.info/. A kedvencem a regi HTML Hell page. Ezek magaval az oldal megjelenesevel foglalkoznak.
Itt van meg par link:
Top Ten Mistakes in Web Design
113 Design Guidelines for Homepage Usability
Guidelines for Visualizing Links
Web 2.0 Can Be Dangerous
Feature Richness and User Engagement
The Need for Web Design Standards
The Power of Defaults
Site Map Usability
Training Wheels User Interface
Information Foraging: Why Google Makes People Leave Your Site Faster
Top Ten Guidelines for Homepage Usability
Deep Linking is Good Linking
The Canonical Intranet Homepage
The Difference Between Intranet and Internet Design
Growing a Business Website: Fix the Basics First
Fancy Formatting, Fancy Words = Looks Like a Promotion = Ignored
Eyetracking Research
Show Numbers as Numerals When Writing for Online Readers
How Little Do Users Read
How Users Read on the Web
Does the Internet Make Us Lonely?
Banner Blindness: Old and New Findings
The Ten Most Violated Homepage Design Guidelines
Writing for the Web

Szinten a design resze az ami mogotte van, vagyis maga a kod. Egy programot/oldalt rengeteg fele keppen meg lehet irni. En azt szeretem ha a forraskod majdnem olyan latvanyos mint maga a megjelenitett kezelofelulet 🙂
Persze egy webes oldalnal nem art utana egy minimalizalot raengedni (html, js, css), hogy minnel kevesebb adatot kelljen a halozaton atkuldeni. Ezen persze segit ha a szerver es a kliens tamogatja a gzippel tomoritett adatatvitelt.
A htmlben, css-ben, es java scriptben lehet hosszu ertelmes classokat, es id-ket hasznalni, vagy rovid ertelmetleneket is. Ha kesz vagyunk (vagy legalabbis azt hiszuk), akkor lehet hogy erdemes a deployment szakaszaban a kiszolgalora mar minimalizalt verziot felrakni. Nem utolso sorban az oldal visszafejteset is neheziti (ha ez cel), viszont ha szerkeztheto, adatbazisbol generalt css-eket hasznalunk, akkor erdemes megtartani az ertelmes classokat, id-kat.
Maga az oldal megjelenes strukturalasara is tobb megoldas van. Pl. a phpBB 2.x meg tablakat hasznalt a design elemek elhelyezesere, a phpBB 3.x, a wordpress mar div elemekkel alakitja ki a kinezetet.
Table Layouts vs. Div Layouts: From Hell to… Hell?
in-line vs. kulonallo javascript/css file…
Yahoo!’s Rules for High Performance Web Sites.

Technologiak, eszkozok:
en.wikipedia.org/wiki/Minification_(programming)
code.google.com/p/minify/

Virtual PC (2007) vhd

How-To: Compress/Shrink/Compact (dynamically expanding) virtual hard drive files.
1/ Delete all trash, temp (Disk Cleanup, ccleaner, remove servicepack+hotfix uninstall)
(hibernation should not be enabled on a Virtual PC, use save state instead)
2/ Defrag (?)
3/ Mount “C:\Program Files\Microsoft Virtual PC\Virtual Machine Additions\Virtual Disk Precompactor.iso”
and run it.
4/ shut down the Virtual PC
Run the VPC2007 Virtual Disk Wizard
Virtual PC console -> File -> Virtual Disk Wizard -> Edit an existing virtual disk -> Compact it -> Replacing the original file

Reference:
HOWTO: Compress Virtual PC virtual hard disks (.VHDs)
Compacting a Virtual Hard Disk
prepare virtual hard disk file

Ido” – Time

“Fun” Facts:
Tudtatok, hogy a Delphi TTimer felbontasat bar 1 ms lepesenkent lehet allitani, de a valodi felbontasa csak 1/64 s (masodperc) = 15.625ms (Windows Timer). Regebben, meg a DOS-os idokben olvastam a PC idozito/ora felepiteserol, es BIOS megszakitasairol. Oh a kedves INT 08h es 1ch (a kedvenc Ralf Brown interrupt list-bol) es az Intel 8254 rendszer ora, ami interruptot general minden 54.936 ms-onkent, kb. 18.2-szor masodpercenkent.
Azota nem kovettem a PC architekturanak/operacios rendszernek ezen valtozasat (egyebeket igen). Hat itt az ideje egy kicsit utananezni:
“timestamps that you can obtain from Windows NT are limited to a maximum resolution of 10 or 15 milliseconds, depending on the underlying hardware.”
Implement a Continuously Updating, High-Resolution Time Provider for Windows
Jelenleg idobellyegezesre a GetSystemTimeAsFileTime -ot hasznalom (100ns=0.1us LSB). Sajnos ennek a felbontasa messze elmarad az abrazolasi pontossagtol: 155860 LSB=15.586ms.
Teljesitmeny meresre, optimalizalasra RDTSC utasitast. (CPU orajel)

Egyebkent a leiras hibas az MSDN-en “Retrieves the current system date and time. The information is in Coordinated Universal Time (UTC) format.”
GetSystemTimeAsFileTime Function
A helyes leiras a FILETIME Structure-nal van: “Contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC).”
FILETIME Structure
Vagyis 1601.01.01 ota eltelt UTC masodperceket adja vissza ami nem azono az UTC formatummal, aminek pont az a lenyege, hogy kulon abrazolja a percet a masodperctol egy stringben, ami lehetove teszi a szokomasodpercek bevitelet, vagyis elofordulhat hogy 59 utan nem 00 jon a masodperc helyen, hanem 60. Igazabol vilagos leirast az UTC formatumara nem talaltam, bar sok helyen lattam az ISO 8601 abrazolast.

Nahat mar a magyar wikipedian is fent van:
Szökőmásodperc
Egyezményes koordinált világidő

Ezt erdemes megnezni:
www.fourmilab.ch/cgi-bin/Earth
www.fourmilab.ch/cgi-bin/uncgi/Earth/action?opt=-p
www.fourmilab.ch/earthview/satellite.html

Tavoli asztal es a Web szerver

Karacsony alkalmaval tavol kerultem a gepemtol, es amikor szuksegem lett volna a tavoli asztalra, meg az FTP szerverre akkor derult ki hogy egyik se megy. 🙁
Hogy azert mert nincs elinditva/bekapcsolva, vagy mert a tuzfalon nincs engedelyezve abban nem voltam biztos. Nem olyan regen telepitettem ujra a gepet, es ezek szerint meg nem hasznaltam.
Szerencsere a Web szerverem ment a gepen, es elorelatasomnak koszonhetoen sikerult strategiailag elhelyezett scriptek segitsegevel es egy webes filekezelovel parancsokat/WMI scripteket futtatni amivel engedelyeztem a tavoli asztalt (remote desktop/terminal services).

Windows update?

Mult heten az egyik gepen megkattant valami, mikor visszaultem ele a kepernyovedotol nem lehetett megszabadulni, atvaltani masik ablakra, ezert ujrainditottam. Ezutan mar nem jott be a Windows XP szokasos bejelentkezo kepernyoje, csak a regi tibusu bejelentkezo ablak felhasznaloi nevre es jelszora varva. (NT, Win2000, 2003, domainban levo XP, vagy Ctlr+Alt+Del sima XP-n stilusu). Amikor bejelentkezek az explorer.exe errorral leal, es semmi sem erheto el (task manager sem).

A pontos uzenet:
“The application failed to initialize properly (0xc0150002). Click on ok to terminate the application”
Itt egy reszletesebb leiras

A safe mode bootolsa sem mukodik, csak a safe mode with command prompt. Halozaton keresztul elerheto a gep, es lehet filokat fel/le tolteni.

Mivel nem volt kedvem ujrainstallalni a gepet , mas megoldas utan neztem.
A %windir%\WinSxS letorlese megoldotta a problemat, persze a taskbarrol eltunt par dolog, mint pl a start gomb… Ezutan egy masik geprol atmasoltam ezt a konyvtarat, es most mar mukodik. Biztos nem tokeletes, de eddig nem vettem eszre kulonbseget.

Hogy mi okozta a problemat amikor hozza se nyultam a gephez az nem vilagos meg mindig.

Masik story:
Egyik haverom felrakta mult heten a frissitest az IE7-hez asszem a KB958215 es a KB960714-et es azota nem mukodik a logikai analizator programja. Mar kapcsolatba lepett a supporttal. Masik gepen meg a program es a logikai analizator is.

FT Orphaning

Ne szerelj gepet menet kozben!
Tegnap …vagy mikor, ugy osszefolynak a napok… vagy vasarnap esete, vagy hetfo hajnalban nekialltam matatni valamit a gepen, persze menet kozben. Ugyanis zugott/zorogott a gephaz. Hiaba szerverhaz a kedves amikor benne van 6-8 hdd es mind kozel 7200rpm-mel porog akkor az egy milimeteres acellemezek is rezonalnak benne. Ugy latszik a csendes rezonanciamentes hazakra meg nem forditanak kello figyelmet, nem tesztelik rendesen. Amikor visszaultem ele, akkor lattam hogy valami nincs rendben, proci 100%-on, a gep szinte semmire se reagal, meg a Numlock/capslock reakciora is masodperceket kell varni.
Eszrevettem a sarokban az FT Orphaning uzenetet, amitol masodpercek alatt kivert a viz. Elmondtam egy imat es fel-masfel ora alatt sikerult minden ablakot lezarni, disk managerben megkeresni a hibas lemezt. Ekkor mar keszultem az osszes lehetosegre, megprobaltam visszaemlekezni, mirol mikori backup all rendelkezesre, mik azok amikrol gond nelkul le tudok mondani, vagy mennyire fognak hianyozni. A lenyeg hogy a mirroron levo anyagok megmaradjanak, most csak arra kell figyelni, nehogy mind a ket disk egyszerre adja be a kulcsot.
Leallitottam a gepet, kivettem a problemas lemezt, es beraktam egy masik gepbe. Kivancsi voltam, hogy mukodik-e vagy csak atmeneti zavar (pl kontakt hiba) volt-e a hiba oka. Csak arra kellett figyelni, hogy semmilyen adat ne irodjon at a lemezen, kulonos tekintettel a dynamic disk azonositokra, timestampekre. Semmikeppen nem akartam hogy bottoljon a vinyorol a gep, mert a mukodo oprendszer mirrorja is rajta talalhato, es a vegen meg errol a hdd-rol szinkronizalna, a hibas adattal felulirva a jot. Miutan a BIOS felismerte a lemezt ki is kapcsoltam, nekem ez eleg volt ahhoz, hogy visszarakjam a sajat helyere es ott probalkozzak. A gep szepen fel is allt, a windows nekikezdett az ujraszinkronizalasnak. Ugy latszik nem tortent vegleges kar.
Mindenesetere mar nekialltam egy mass backup projectnek.

Thunderbird vs. 16k bit root CA

A thunderbird erthetetlen hibaablakokkal utasitja el a levelek alairasat, es titkositasat hogyha a tanusitvanyt kiallito CA lanc egyike 8kbitnel nagyobb RSA kulcsu tanusitvanyt hasznal. Legalabbis erre gyanakszom, mert mar volt ilyen problemam a Firefox-szal. A bibaablakok semmilyen error code-ot nem tartalmazank, cak, hogy valami nem stimmel, lehet hogy a tanusitvany datuma jart le …bla-bla-bla. Termeszetesen a felsorolt hibalehetosegek egyike sem igaz.
Igy kenytelen voltam letrehozni egy uj root CA-t kizarolag a levelalairasokra hasznalt tanusitvanyok eloallitasahoz.
(A MS Office 2003 Outlook jol kezelte az osszes hozza vagott tanusitvanyt a 16kbites CA-val eloallitott 4kbitest is.)

Optimal Coding 6 – 2D algorithms

Line and Circle drawing
Line-Drawing Algorithms
Bresenham’s line algorithm
Implementations in Delphi

Here is my old “Pascal” line drawing function for 256 color SVGA in DOS:
procedure LineSVGA256(x1,y1,x2,y2:word;c:byte);assembler;
var xtav,ytav,xdir,ydir:word;
asm mov dx,0ffffh; mov ax,0a000h; mov es,ax; mov ax,x1; mov bx,x2
sub ax,bx; jnc @negxdir; neg ax; neg dx
@negxdir: mov xtav,ax; mov xdir,dx; mov dx,0ffffh; mov ax,y1; mov bx,y2
sub ax,bx; jnc @negydir; neg ax; neg dx
@negydir: mov ytav,ax; mov ydir,dx; cmp ax,xtav; jc @vizsintes
@fuggoleges: or byte ptr cs:[@incdecf],00001000b; cmp xdir,1; jnz @i0; and byte ptr cs:[@incdecf],11110111b
@i0: or byte ptr cs:[@addsubf],00101000b; cmp ydir,1; jnz @i2; and byte ptr cs:[@addsubf],11010111b
@i2: mov cx,ytav; mov bx,cx; shr bx,1; inc cx; push bx
mov ax,y1; mov bx,VideoUResX; mul bx; add ax,x1; jnc @ide1; inc dx
@ide1: mov di,ax; mov ax,4f05h; xor bx,bx; int 10h; pop bx; mov al,c
@_0: mov es:[di],al
@addsubf: sub di,VideoUResX
jnc @05; add dx,ydir; push bx; mov ax,4f05h; xor bx,bx; int 10h; mov al,c; pop bx;
@05: add bx,xtav; cmp bx,ytav; jc @_1; sub bx,ytav;
@incdecf: dec di
jno @_1; add dx,xdir; push bx; mov ax,4f05h; xor bx,bx; int 10h; mov al,c; pop bx;
@_1: loop @_0; jmp @vege
@vizsintes: or byte ptr cs:[@addsubv],00101000b; cmp ydir,1; jnz @i1; and byte ptr cs:[@addsubv],11010111b
@i1: or byte ptr cs:[@incdecv],00001000b; cmp xdir,1; jnz @i3; and byte ptr cs:[@incdecv],11110111b
@i3:mov cx,xtav; mov bx,cx; shr bx,1; inc cx; push bx
mov ax,y1; mov bx,VideoUResX; mul bx; add ax,x1; jnc @ide2; inc dx
@ide2: mov di,ax; mov ax,4f05h; xor bx,bx; int 10h; pop bx; mov al,c
@_2: mov es:[di],al
@incdecv: dec di
jno @15; add dx,xdir; push bx; mov ax,4f05h; xor bx,bx; int 10h; mov al,c; pop bx;
@15: add bx,ytav; cmp bx,xtav; jc @_3; sub bx,xtav;
@addsubv: sub di,VideoUResX
jnc @_3; add dx,ydir; push bx; mov ax,4f05h; xor bx,bx; int 10h; mov al,c; pop bx;{}
@_3: loop @_2
@vege:
end;

Midpoint circle algorithm/Bresenham’s circle algorithm
Circle-Drawing Algorithms