Dec 22 2008

projekts

Ar šo tekstu ir doma uzsākt jaunu sadaļu šajā resursā. Nākamgad uzsākšu darbu pie jauna, apjomīga web projekta un tēmas, kas šajā sakarā te varētu atspoguļoties – šī projekta tapšanas gaitā radušies risinājumi, atziņas, secinājumi.

Tātad par visu pēc kārtas – sīkākas detaļas gan neatklāšu, taču projekta novirziens ir ar spēcīgu sociālu piesitienu papildinot to ar mobilajām tehnoloģijām un gps. Tā kā manā pārziņā ir pats izstrādes process, tad jau tagad esmu pietiekami rūpīgi tam sācis gatavoties:) Protams, šeit lielu lomu spēlē tā pieredze, kas ir gūta strādājot “draugos”, bet ir arī šādas tādas atkāpes. Galvenokārt dēļ tām kompetencēm, kas sniedzas mazliet tālāk par pliku izstrādi – arī dzelži nav sveša lieta.

OS. Viennozīmīgi linux vai kaut kas no bsd saimes. No windows esmu aizgājis jau labu laiku atpakaļ un nejūtos tur vairs pietiekami spēcīgs. 

Webserveris. Nē, nebūs apache, to nu pavisam noteikti varu garantēt. Daudz lielāku efektu pie paredzētajiem lietojumiem var panākt ar Lighttpd vai Nginx, nevis smagnējo Apache. Lighttpd + FastCGI PHP performē vismaz uz pusi labāk. Iespējams, ka apache tiktu lietots java vai python risinājumā, bet tā kā izstrāde paredzēta php, tad ir iespēja izvēlēties. Kapēc php? Domāju, ka personīgi man nebūtu liela problēma iebraukt arī python vai ruby, bet pie projekta paplašināšanās varētu parādīties speciālistu iztrūkuma problēma. Patiesībā es sākumā diezgan nopietni metu acis arī python virzienā – īpaši jau advancētā python freimworka Django sakarā. Php nekā līdzvērtīga īsti nav, jo pašos pamatos jau php ir interpretators.. Ja tam visam vēl uzsēdina pa virsu vēl vienu loģikas slāni – zaudējam performanci vēl vairāk. Nē, dīvainā kārtā šoreiz es neatteikšos no framework, bet izmantošu īpaši vieglu risinājumu – codeIgniter, pie kura esmu nonācis izveicot diezgan plašus pētījumus un šis konkrētais ir tāds, kas iespējami tuvu stāv paša php funkcionalitātei. Iemesli framework lietošanai divi – izstrādes ātrums un kaut kāda nebūt koda sakārtošana/standartizēšana. Principā savos projektos esmu mēģinājis pieturēties pie MVC principa, bet nu ne vienmēr izdodas tā 100%. Tapēc arī ir doma pieturēties pie kaut kādiem rāmjiem, kurus uzliek framework. Ja nu kādam interesē dziļāka MVC un citu aplikāciju izstrādes principu analīze, tad skatīt šeit.
Jautāsiet kāpēc MVC, kāpēc vispār nodalīt funkcionalitāti no vizuālās daļas, jeb triviālākā līmenī php no html? Patiesībā viens pietiekami saprotams iemesls varētu būt datu izmantošana citā vizuālajā paskatā – kaut vai padošanai uz mobilo, jeb arī API gadījumā – vispār bez vizuālās daļas.

Dati. Pamatā mysql. Tiesa gan izmantojot palielu spektru no tām iespējām, ko šobrīd piedāvā mysql – gan procedūras/funkcijas, gan partīcijas un vēl šo to. Kā papildinājums, bet vairāk atslogs mysql un php – talkā nāks arī memcached un sphinx. Memcached vairāk bieži pieprasīto datu procesēšanai, sphinx – meklēšanai, atslēgas vārdiem (tagiem), kā arī geo funkcionalitātes nodrošināšanai (objektu atrašanai uzdotā rādiusā). Šajā sakarā – 2 jaukas prezentācijas par tēmu - Geo Distance Search with MySQL un fulltext search engine Sphinx.

Storage. Kas attiecas uz apjomīgiem datu masīviem, tad šobrīd vēl meklēju kaut ko pietiekami līdzvērtīgu Sun Solaris ZFS. Tā failu sistēma patiesi ir labi pārdomāta un neprasa lieku darbu tās apkalpošanā. Var jau būt, ka būs jāizmanto tā pati. Patiesībā šai tēmai vēl neesmu pievērsis īpaši daudz uzmanības. Modelis tuvu ideālajam būtu storage + vairāki proxy statiskajām lietām, bet nu tad jau redzēs.

Darbu plānošana. Nenoliedzami šādam apjomīgam projektam nepietiks ar N mēnešu dead-line – iespējami sīki jāsadala un jāuzrauga (arī pašam sevi) darbu plāni pietiekami nopietni. Ir apskatīti virkne webisku rsinājumu un izskatās, ka derēs praktiski jebkurš no tiem. Patiesībā šajā sakarā pietiekami konspektīvs, bet tajā pašā laikā arī informatīvs tekstiņš varētu būt šis.

Izstrādes process. Vairākas reizes neveiksmīgi esmu mēģinājis sadzīvot ar kādu nebūt IDE – Zend, Komodo, Aptana, bet kaut kā nav sanācis. Nezinu kapēc – nesanāk un viss:) Neliekas ērti, noderīgi un procesu paātrinoši. Es tad labāk apmierinos ar koda redaktoru, kas nodrošina man aktuālās prasības.

Kas attiecas uz client side risinājumiem –  visam vajadzētu notikt pēc labākajiem web 2.0 standartiem – ajax, autocomplete, jQuery, multiple file upload ir tikai daži no atslēgas vārdiem:) Patiesībā jaunu velosipēdu grūti izdomāt – liela daļa risinājumu visticamāk tiks brutāli noskatīti no labākajiem industrijas piemēriem.

 

Nu iesākumam kaut kā tā. Nezinu, vai turpmāka iedziļināšanās projekta tapšanas gaitā būs interesanta, taču es vismaz būšu mēģinājis ko darīt lietas labā:)



Lasi vēl

  • web izstrāde – fona procesi
  • So You Think You Can Dance
  • atkal jau par iPad
  • atkal jau LV projekts
  • projekts – procesā
  • 8 komentāri

    8 komentāri to “projekts”

    1. AldiZzon 22 Dec 2008 at 10:21

      Vai vēlvienus “draugus” maz vajag? :) Pat manaa seetas lapelee var aicinat draugus… :) un tas nekad nav bijis ka primarais, bet ka piedeva! :)

    2. alxon 22 Dec 2008 at 11:16

      Primāri šis nav domāts produkts Latvijas tirgum un ar citu sociālo novirzienu, bet ja mēģina atbildēt un retorisko jautājumu – vēl vienus draugus vajadzētu gan:) Labākus, ērtākus, skaistākus un draudzīgākus gala lietotājam:)

    3. jkon 22 Dec 2008 at 12:49

      Mhm, interesanti. Starp citu, arī pie python/django ir vērts izmantot lighttpd+fastcgi nevis apache.

    4. Maksim Berjozaon 22 Dec 2008 at 13:52

      - Par apache loti piekritu, vel palidz eaccelerator veidigie cache risinajumi.
      - Es uzsaku ari codeigniter – loti patik, bet man paradijas viedoklis – ja app
      perfomancam tad python, ja izstradashanas elegancej, tad ruby.

      Butu interesanti lasit proekta tapshanas procesu, var but nedauz par mysql arhitekturas, tas perfomance.

      Veiksmi!

    5. Reinison 23 Dec 2008 at 23:54

      ZFS ir portēts un iet ar FreeBSD, es pats to tā izmantoju, un tas pat ir relatīvi stabils. Daži cilvēki viņu laižot produkcijas vidēs bez problēmām. FreeBSD izstrādātāji gan joprojām to portu vērtē kā eksperimentālu, un, to lietojot ar pārāk maz atmiņu, noteikti nāktos saskarties ar problēmām. Stabils tas ir uz Solaris 10, bet Solaris ir pārāk grūti lietot tā “bagāžas” dēļ, kamēr OpenSolaris joprojām nav pabeigts un piemērots produkcijas videi.

      Uz Linux nekā tieši tāda nav, un ZFS tur nemaz nav vērts gaidīt licenžu nesavietojamības dēļ. It kā tur ir FUSE, bet tas neesot normāli lietojams, un sīkāk es nezinu. Bez ZFS iespejām gan var iztikt, tāpēc man liekas, ka tas reti kuru atturētu lietot to vai citu OS.

      Aizliekot vēl kādu vārdu par FreeBSD, tas var nebūt acīmredzami labāks par Linux visos aspektos, bet kopumā uz to noteikti ir vērts skatīties. Tas ir populārākais risinājums no BSD saimes, un tam ir laba reputācija attiecība uz drošību, ātrumu un stabilitāti. Galvenās grūtības ar to droši vien tomēr slēpjas cilvēkos, jo vairums ir pieraduši pie Linux un justos neērtāk ar FreeBSD, kā arī ir programmatūra, ko tur var palaist tikai caur Linux emulāciju. Es pats liktu FreeBSD, jo man labāk patīk portu kolekcijas par SRPM sistēmu un visiem YUM vai APT, pat ja tie nav slikti. Vēl man patīk PF daudz labāk par iptables utt.

      Par Python es piekrītu, pat ja jebkurš sakarīgs PHP programmētājs to ātri iemācītos, es pa visu šo laiku esmu redzējis Latvijā tikai vienu vai divus sludinājumus, kurā tas ir prasīts, un no tā secinu, ka retais to māk. Tas nozīmē, ka atrast cilvēkus, kas ar to var strādātu, būtu nedaudz grūtāk. Vai tas ir būtiski gan ir atkarīgs no projekta. Pašam man ļoti simpatizē gan tā valoda, gan ietvari kā Django. Tagad, kad ikdienā sanāk biežāk rakstīt PHP, nākas īpaši novērtēt atšķirību starp labi projektētu valodu un slikti projektētu.

      Darbu plānošanai normāls, pat ja nekas īpašs, un bezmakas ir Zoho Projects. Es par to nejūsmoju, bet tas darbojas. activeCollab man patīk labāk, bet tas daudz maksā. Līdzīgs activeCollab un bezmaksas ir Project Pier, bet tas ir mazāk noslīpēts.

      Par jQuery laika gaitā ir tikai apstiprinājies, ka to ir vērts lietot, tur neko piebilst vairs nevar.

      Kopumā, vēlu veiksmi un ceru izlasīt vēl kaut ko interesantu par topošo projektu.

    6. slepenaison 24 Dec 2008 at 00:30

      Ja mēs domājam par vienu un to pašu projektu tad es gan gribētu teikt, ka tas būs lielā mērā draugiem.lv dvīņu brālis un GPS, mobile funkcionalitāte ir praktiski vienīgā, kas padarīs to nedaudz atšķirīgāku.

      Bet vai mums nav par daudz šo sociālo tīklu? ORB, Draugiem.lv, TaviDraugi.lv (history), visādi tanki utt. Diez vai dvīnis ar nelielām atšķirībām spēs novākt pietiekami lielu publiku lai tas darbs kas tur tiks ieguldīts atmaksātos. Pašai idejai ir jābūt jaunai nevis jāpārstrādā ritenis, bet nu tās ir tikai manas domas un neesmu pietiekami labi informēts.

    7. ernestson 10 Jan 2009 at 15:05

      Ļoti interesants apraksts. Vēl jo interesantāk to ir lasīt tāpēc, ka mēs iekš Soon jau kādu laiku strādājam, pēc visa spriežot, pie līdzīgas idejas jau kādu mirklīti. Daudzi no tevis minētajiem elementiem gan idejiskā, gan tehniskajā pusē ir arī mums kabatās.

      Vēlu veiksmi un izdošanos,

      Ernests

    8. juriicon 05 May 2009 at 05:26

      nu pitonam nav ne vainas – pats esmu +/- zveerinaats PHPists,tachu desktopam sho to esmu darinaajis iesh pitona (PHP ar visiem saviem atvisnaajumiem tomeer nav normaala event baazeeta valoda) :D

      tachu ja tev jaadomaa par to ka vajadzees veelaak nemt darbaa programmerus tad PHP shajaa gadiijumaa ir praatiiga izveele – jo par sapraatiigu cenu atradiisi labu koderi, iipashi shobriid :)

      tachu man liekas ka vispirms vajag uzveidot projektu kas var skeiloties un palaist to pirms visas 100 fiicas ir ieviestas un tad leenaa garaa tjuunot to, audzeet klikus un tad tikai skeilot – jo kaa jau lielai daljai projektu ir iespeeja neizdoties vai izdoties mazaakaa meeraa kaa gribeets (un parasti probleema ir maarketinga galaa nevis izstraadee, jo ja ir laiks un nauda uztaisiit var looti daudz ko)

    Trackback URI | Comments RSS

    Iekomentēt