CSS pagrindai

Taigi, trumpai apie css.

css naudojamas norint atskirti tinklalapio išdėstymą, loginę struktūrą, nuo jo atvaizdavimo, stiliaus.

Tinklalapio elementai išdėstomi html pagalba, o css’u nurodome tų elementų savybes.

Pavyzdžiui, html’as :

<div>

<div>

tekstas tekstas tekstas

<ul>

<li> pirmas

<li> antras

<li> trečias

<li> ketvirtas

</ul>

</div>

<div>

man patinka css

</div>

</div>

css gali būti arba tam pačiam faile, arba atskiram. Jei css yra kitame faile, jį reikia nurodyti head srityje:

<head>
<link rel=“stylesheet“ type=“text/css“ href=“stilius.css“>
</head>

Patogiausia ir daryti css’ą atskirame faile, bet jei tokios galimybės nėra, galima jį įdėt kartu. Bet apie tai atskirai, dabar apie patį css.

Tarkim, norim padaryti, kad tai, kas yra div srityje, būtų melsvo fono. Css faile rašom taip:

div {background-color: #ccccff}

Tarkim, norim, kad būtų melsvo fono ir žaliomis raidėmis:

div {background-color: #ccccff; color:green;}

Ir dar, tarkim, norim, kad sąrašo elementai (li) būtų truputį patraukti į dešinę.

Tada css failo turinys atrodytų taip:

div {background-color: #ccccff; color: green;}

li {margin-left: 40px;}

Taigi, yra selectoriai, yra savybės ir yra galimos tų savybių reikšmės, kurias galima nurodyti.

Galimas savybes galima sužinoti, pavyzdžiui, čia: http://www.w3schools.com/css/default.asp Galimos savybių reikšmės taip pat ten nurodytos prie kiekvienos savybės.

Dabar toliau 🙂 Viršuje parodyta, kaip nustatyti savybes visiems vienodiems elementams, pavyzdžiui, visiems div elementams. Bet tarkim, norim, kad vienas div’as būtų vienoks, o kitas – kitoks. Arba, kad pirmas sąrašo elementas būtų vienoks, o kiti – kitokie.

Tam reikalui yra sugalvoti identifikatoriai  (id) ir klasės (class).

<div class=“isorinis“>

<div class=“vidinis“ id=“turinys“>

tekstas tekstas tekstas

<ul>

<li class=“pirmas“> pirmas

<li> antras

<li> trečias

<li> ketvirtas

</ul>

</div>

<div class=“vidinis“ id=“apacia“>

man patinka css

</div>

</div>

css failas galėtų atrodyti taip:

.isorinis {padding: 20px;}

.vidinis {border: solid 1px;}

#apacia {font-size: 10px;}

li.pirmas {font-style: italic;}

Čia . (taškas) nurodo klasę, o # (grotelės) – identifikatorių (id). Taigi, ką tik nurodėm, kad elementas, kuriam priskirta klasė “isorinis“ turi būti su 20px vidine parašte, o elemento, kurio klasė “vidinis“ – su rėmeliu. Taip pat nurodėm, kad konkretaus elemento, kurio id – “apacia“ teksto dydis turi būti 10px. O sąrašo elementas, kurio klasė “pirmas“ – pasviręs.

Tą pačią klasę galima nurodyti skirtingo tipo elementams.

<div class=“grazus“>

<p> labas </p>

<p class=“grazus“> pasauli </p>

</div>

Jei šiam html parašysim css:

.grazus {border: solid 1px;}

tai rėmelį uždės div’ui ir dar apatiniam paragrafui.

Apibendrinant, stilių galima nurodyti pagal

  • elementą, pavyzdžiui, visiems <div> elementams,
  • pagal id – konkrečiam elementui, pavyzdžiui div’ui “apacia“
  • pagal klasę – įvairiems elementams su nurodyta klase, pvz. “vidinis“

Dar yra kai kurie išskirtiniai atvejai, pvz. kaip gražinti aplankytas nuorodas, ar kaip pridėti turinį prie elementų su css, bet čia kitam kartui 🙂

Gero css’inimo 🙂

Reklama

Gerosios programavimo praktikos

Bandau parengti gero programavimo praktikos vadovą, ir sugalvojau įkelti viską ir čia. Gal bus naudinga ir kitiems. O gal rasit ką pakomentuoti?

Gerosios programavimo praktikos taip ir vadinasi todėl, kad vadovaudamiesi jomis programuojame geriau. Nors per paskaitas būsimiems programuotojams daug kalbama, kaip tai svarbu, bet to nesuprantam tol, kol nepradedam programuoti patys ir nesusiduriam su problemomis, kurių kiltų mažiau, jei šiomis praktikomis vadovautumėmės.

Vadovaujantis susitartais standartais, darbas vyksta daug sklandžiau. Tai ypač svarbu, kai prie vieno projekto dirba ne vienas programuotojas, o komanda. Bet tai svarbu ne tik dirbant komandoje, bet ir programuojant po vieną.

Gerųjų programavimo praktikų laikymasis padeda didinti darbo efektyvumą. Taip padarom daugiau ir kokybiškiau per tą patį laiką.

Vardų suteikimo susitarimas

Vardų susitarimai svarbu tam, kad galima būtų atskirti kintamųjų naudojimo apimtį, pvz. kintamieji su priesaga l_ – lokalūs, su g_ – globalūs ir pan.

Vardų aiškumas

Siūloma rašyti save dokumentuojantį kodą. Kintamiesiems, funkcijoms, procedūroms, paketams svarbu suteikti tokius vardus, kurie atitiktų to kintamojo ar kodo dalies paskirtį. Svarbu, kad skaitant patį kodą, būtų aišku, ką tas kodas atlieka.

PL/SQL kalboje kintamųjų vardai yra case sensitive, todėl nerekomenduojama naudoti CamelCase tipo vardų suteikinėjimo, rekomenduojama naudoti tik mažąsias raides.

Konstantos – rekomenduotina vien didžiosiomis raidėmis.

Net trumpai naudojamiems kintamiesiems svarbu naudoti reikšmę turinčius pavadinimus. Tokie kintamųjų vardai, kaip i, j galėtų būti suteikiami tik labai trumpose kodo dalyse.

Komentarai

Naudojant save dokumentuojančio kodo programavimo stilių, komentarus siūloma dėti tik ten, kur jie tikrai reikalingi:

  • Prie funkcijų, procedūrų, klasių ir kitų programinių blokų. Prie funkcijos ar procedūros reikia trumpai aprašyti jos paskirtį, ką ji daro, aprašyti parametrus ir grąžinamas reikšmes. Jei funkcija atlieka nedidelį ir aiškų veiksmą ir jos paskirtis aiški iš pavadinimo, komentaras nebūtinas (?)
  • Jei kode yra neaiškių vietų ar atskirų loginių blokų, juos taip pat reikia komentuoti.
  • Dėl aiškesnio skaitomumo, funkcijų ir procedūrų pabaigas patartina pažymėti komentaru.
  • Komentarus rašom prieš pradėdami programuoti kodo dalį (funkciją, procedūrą) – tam, kad būtų iš anksto aišku, kam ta kodo dalis bus skirta, o ne tada kai ją baigiam.

Gero vardų suteikimo/komentavimo pavyzdys:

Compare this typical code:

float a, b, c; a=9.81; b=5; c= .5*a*(b^2);

To this self-documenting code, which shows what is being done:

const float gravitationalForce = 9.81;

float timeInSeconds = 5;

float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2)

And then to this documented code, which better explains why it is being done:

/* compute displacement with Newton’s equation x = vₒt + ½at² */

const float gravitationalForce = 9.81;

float timeInSeconds = 5;

float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2)

And this example of a poor commenting style:

const float a = 9.81; //gravitational force

float b = 5; //time in seconds

float c = (1/2)*a*(b^2) //multiply the time and gravity together to get displacement.

Dokumentavimas

Kodą būtina dokumentuoti tam, kad kartu dirbantys žmonės, ar tie, kurie vėliau pradės dirbti prie projekto, žinotų, kas ir kodėl yra daroma, galėtų greitai susipažinti su projektu ir pradėti prie jo dirbti.

Jei naudojamas save dokumentuojantis kodas ir pakankamai komentarų, dokumentuoti svarbu tik pagrindinius dalykus.

Dokumentacijoje turėtų būti:

  • Duomenų bazės ER diagrama.
  • Proceso aprašymas, nurodant, kaip kokios procedūros/funkcijos jame dalyvauja (?)
  • Procedūrų, funkcijų, klasių aprašymai:
  1. Aprašymas, ką procedūra daro
  2. Argumentų ir grąžinamų reikšmių tipai
  3. Apribojimai argumentams

Jokių hardcodinimų

Rekomenduotina vengti „hardcodinimų“. Dažniausiai pasitaikantys atvejai:

  • Pasikartojantys SQL sakiniai kode. Rekomenduojama tam naudoti funkcijas/procedūras (t.y., pasirašyti tam API).
  • Į Web‘ą išvedamas tekstas rašomas pačiame kode. Rekomenduojama tam naudoti šablonus, esančius atskirai nuo kodo ar kintamuosius, kurių tekstas aprašytas atskirai.

(Čia galima rasti daugiau, gal vėliau parašysiu.)

Frameworkai

Frameworkai pagreitina darbą, nes dalis reikalingų dalykų juose jau yra padaryta.

Rekomenduojami skaitiniai

PHP gero programavimo gidas: http://www.odi.ch/prog/design/php/guide.php

PEAR Naudojami programavimo standartai: http://pear.php.net/manual/en/standards.php

Mantis klaidų registravimo sistema

Darbe reikia įsidiegti kažką projektų tvarkymui, stebėsenai, tai bandau Mantis.

Štai jis: http://www.mantisbt.org/

Daug nerašysiu, tiesiog surašysiu pastabas, mintis, kilusias jį bebandant, gal trumpai apie jo naudojimą, pastebėtus pliusus ir minusus.

Pradžiai, kodėl pasirinkom jį:

  1. jis parašytas PHP,
  2. turi LDAP integraciją
  3. Open Source,
  4. galima sujungti su SVN
  5. Gana gerai vertinamas

Sistema suinstaliuota, domiuosi pluginais. Jų galima rasti čia:

http://www.mantisbt.org/wiki/doku.php/mantisbt:related_tools

Pradėjau kurti projektus ir vartotojus. Patarimas: jei jūsų komandoje nėra problemų su anglų kalba, geriau ją ir palikit, nes lietuviškam vertime susigaudyti tikrai sunku.

Trumpas ir aiškus aprašymas pradžiai: https://www.linux.com/learn/tutorials/451190:weekend-project-manage-bugs-with-mantis

Toliau gal bus dar 🙂

OLAP ir duomenų saugyklos

rašyta gana seniai, apie 2003 m., bet gal kam pravers 🙂

Duomenų saugyklos ir jų taikymai

Kas yra duomenų saugykla

Duomenų saugykla (DS) – nuo veiklos sistemų atskira duomenų saugojimo sistema. Joje saugomi duomenys yra statiški, t.y., nekeičiami, o tik papildomi ir skirti užklausoms ir analizei, o ne transakcijoms.

Žymiausių DS technologijų tyrinėtojų pateikiami apibrėžimai:

“Orientuotas į teminę sritį, integruotas, skirtingas laike, nekintantis duomenų rinkinys, skirtas paremti vadybos sprendimų priėmimo procesą.” W.H. Inmon

“Transakcinių duomenų kopija, struktūruota specialiai užklausoms ir analizei.” Ralph Kimball

Duomenų saugyklose kaupiami įvairūs istoriniai organizacijų duomenys. Dažniausiai tai būna veiklos sistemose, kurios kasdien naudojamos versle ir kuriose duomenys greitai kinta, esančių transakcinių duomenų kopijos, daromos kas tam tikrą laiko tarpą. Šie duomenys yra sutvarkomi taip, kad vėliau gerai tiktų kuo įvairesnėms užklausoms, ataskaitoms, analizei. Paprastai DS saugomi kelių metų trukmės organizacijos duomenys, fiksuojami gana dažnai – kas savaitę, kasdien, priklausomai nuo taikymo. DS integruoja duomenis apie įvairias organizacijos veiklos sritis tam, kad duomenys nebūtų dubliuojami, taip pat, kad juos galima būtų analizuoti plačiau, būtų lengviau rasti ryšius tarp duomenų.

DS taikymo sritys

Vienas svarbiausių DS pritaikymų – sprendimų pagalbos sistemos (SPS). Dažniausiai duomenys saugyklose kaupiami tam, kad vėliau juos galima būtų analizuoti, gauti įvairias ataskaitas bei pagal jas spręsti ar pasirinkta teisinga organizacijos veiklos kryptis, kurie sprendimai efektyvūs, kurie ne, taip pat numatyti tolesnę organizacijos veiklos kryptį, ieškoti, kokius pakeitimus galima būtų padaryti, siekiant pagerinti rezultatus. Šiose sistemose duomenų saugyklos naudojamos kartu su OLAP (interaktyvi duomenų analizė), duomenų gavybos (DG) priemonėmis.

Šių sistemų pritaikymų yra gana įvairių. Daugiausiai jas naudoja didelės verslo organizacijos, bankai, telekomunikacijų bendrovės, įvairūs tyrimų centrai, valstybinės organizacijos. Prekybinės organizacijos jas taiko kainų politikos pasirinkimui, reklamos bei klientų išlaikymo programoms, rinkos tyrimams, gamybinės – gamybos krypčių, gaminamų produktų linijų, būtino kokybės lygio nustatymui, bankai, draudimo kompanijos – klientų patikimumo, rizikos lygio nustatymui.

Taip pat duomenų saugyklas naudoja įvairios mokslinės, valstybinės organizacijos, duomenų rinkimui, kad vėliau galima būtų palyginti jų kitimą laike, pagal geografiją ir panašiai, rasti įvairius ryšius.

Duomenų saugyklų savybės

Orientacija į teminę sritį. DS paprastai būna orientuotos į verslo sritį, jos kuriamos pagrindu imant konkrečios verslo srities struktūrą, veiklas.

Duomenų vieningumas (integruotumas). Duomenys iš skirtingų sistemų turi būti vieningi ir suderinti tarpusavyje.

Duomenų skirtingumas laike. Nauji duomenys į duomenų saugyklą perkeliami kas tam tikrą laiko tarpą, kiekvieną kartą jie būna pasikeitę. Tai leidžia analizuoti kaip jie kinta laike, pastebėti įvairias tendencijas.

Duomenų nekintamumas. Vieną kartą į duomenų saugyklą įkelti duomenys jau nebekeičiami ir iš jos nešalinami, jie ten yra visą laiką tokie, kokie buvo juos įkraunant. Vienintelis jos atnaujinimas – tai papildymas duomenimis, prijungiant juos prie jau esančių.

Duomenų saugyklų projektavimo būdai

Skaityti toliau “OLAP ir duomenų saugyklos“

Ar jums reikia Flash’inio intro

Užtikau jumoristinę iliustraciją apie flash’ines užsklandas:

http://angryaussie.wordpress.com/2009/07/15/should-your-website-have-a-flash-intro/

Puiki iliustracija, reiks parodyt kai kas nors tokios užsklandos užsimanys. Tokie dalykai tik lankytojų atbaidymui tinka 🙂

Drupal

Viena geriausių TVS. Pagrindinė to priežastis – jos lankstumas. Visų pirma tai TVS, kurią galima pritaikyti įvairaus stiliaus tinklapiams – ir blogams, ir forumams, ir sudėtingiems naujienų portalams, jei reikia ir e-komercijai, ir tiesiog paprastam informaciniam tinklapiukui 🙂

Ja sukurtų tinklapių dizainas gali būti labai įvairus ir dinamiškas, tai nebūtinai tik turinys+2 meniu stulpeliai 🙂

Labai svarbi savybė – turinio susiejimas, kurią leidžia Taxonomy modulis. Tai būdas parodyti tą patį turinį skirtingose vietose, skirtingais būdais, ar tam tikroje vietoje rodyti tik ten reikalingą turinį.

Dėl savo išplečiamumo ji gali būti pritaikoma ir greit sukuriamai paprastai svetainei ir didžiuliam portalui.