Ján Fečík


osobná stránka · blog

Dátum: sobota, 23. novembra 2024
Čas: 22:49:33, 1732398573, @951
Meniny má: Klement, Klementín
IP adresa: 3.147.75.46

Ako som začal programovať zoznamku

Toto bude taká moja prvá časť o tom ako som sa rozhodol skúsiť spraviť čosi pre mňa nové. Keďže jeden funkčný a celkom dosť navštevovaný web už mám, tak prečo nevyskúšať čosi ďalšie a tak si pri tom trošku rozšíriť aj obzory a tiež pomôcť aj iným spôsobom ľuďom. Predsa len som vďaka svojmu prvému už skoro 10 rokov funkčného webu nepriamo pomohol niekoľko desiatkam tisícov problémov, tak prečo nepomôcť niekomu aj takýmto spôsobom. V minulosti som vlastnil pár desiatok pekných domén na ktorých som mal vždy v pláne čosi vytvoriť, ale chýbali mi trochu znalosti a hlavne chuť na to, tak vždy som ich nechal expirovať. Lenže znalosti sa dajú naberať len tak keď človek čosi vytvorí a popritom rieši aj vzniknuté problémy na ktoré natrafí, takže iná možnosť nie je.

Programovanie zoznamky - začiatky  ·  Ako som neveril, že zoznamku dokončím

Od roku 2012 mám jednu voľnú doménu, ktorú som si nechal zaregistrovať za pomoci vesmírneho programu, ktorý vznikol za pomoci webhostingovej spoločnosti WebSupport a ponúkol ako prvý na svete registráciu slovenskej domény z neďalekého vesmíru. Aj keď sa táto v podstate reklamná kampaň niesla v duchu, že sa jedná o registráciu slovenských domén z vesmíru, tak o tom by sa isto dalo polemizovať, lebo k registrácií domén prišlo vo výške 25 km nad morom a hranica vesmíru začína až od 100 km nad zemským povrchom, ale to odbočujem od témy. Každopádne som sa touto ich akciou dostal k peknej trojpísmenkovej doméne a doteraz som nevedel čo s ňou.Ako som začal programovať zoznamkuPo migrácii svojich pár webhostingových služieb na jeden spoločný webhosting chcem viac využiť jeho potenciál a prvá vec čo ma napadla, že na tej doméne spravím pracovný portál. Lenže názov qlp.sk znie trošku divne pre portál kde si ľudia môžu hľadať prácu, vytvárať svoje životopisy a plno iných veci. Keď som sa zahľadel na tie tri písmena tak som v tom videl možnosť pekného loga kde by l reprezentovalo nejakú tehlovú stenu, z jednej strany je opretá tvár chlapa z profilu a z druhej strany žena. Tak som dostal teda myšlienku spraviť na tej doméne zoznamovací portál, veď qlp vyzerá samo o sebe celkom pekne, aj keď to teda nič popravde neznamená, ale tak nikde nie je napísané, že z toho nemôžem mať pekne navštevovanú zoznamku. Myšlienka je to síce pekná, ale za prvé, zoznamovacích stránok je na Slovensku neúrekom a každá ma to svoje, tak prečo by mal niekto tu moju vôbec navštevovať, za druhé, vôbec netuším o čom také zoznamky môžu byť, keďže som nikdy takú službu nepoužíval a za tretie, ako ju vôbec spraviť? Veď jediné čo som doteraz naprogramoval je len táto stránka kde mi beží môj mini redakčný systém pre blog. Chcel som si rozšíriť obzor v programovaní, ale pýtal som sa sam seba, nepúšťam sa do niečoho čo buď nikdy nedokončím, alebo to bude totálne nepoužiteľné? Je to veru ťažká otázka.

Spravil som si teda menší prieskum a poobzeral sa po niektorých internetových zoznamkách, zaujímalo ma o čom to teda vôbec je, aký ľudia ich navštevujú, aký majú na ne názor, ako vôbec tieto zoznamky fungujú a plno iných dôležitých vecí. Po asi mesačnom behaní po rôznych zoznamkách som zistil kopec vecí, ktoré som mohol teda použiť. Tiež som zistil aj to, že zoznámiť sa s kýmkoľvek a to skutočne nepreháňam je ľahšie ako si niektorí myslia, že to nejde. Po mojom prieskume som sa dostal k tomu hlavnému a to realizácií celého systému, ktorý mi to bude obhospodarovať. Ako prvé ma napadlo, že ako vôbec na to? Veď jediné čo som naprogramoval je možno pár nejakých jednoduchších funkcií, redakčný systém na tomto blogu a toď vsio :-) takže som začal premýšľať ako to vôbec naprogramovať. Vytvoriť nejaký účet a v ňom zadať nejaké údaje, to veru nie je ťažké, k tomu nejakú registráciu a prihlasovanie sa, to tiež nejako zvládnem, ale ako riešiť vyhľadávanie? Nový člen či členka si vytvorí účet, môže zadať nejaké veci o sebe a čo ďalej? Keďže som si stanovil ciel, že túto zoznamku spravím len pre Slovensko, tak ma napadlo si vytvoriť tri tabuľky v databáze a to tabuľku pre región, okres a obec respektíve mesto. Istotne sa to dá vyriešiť aj iným spôsobom a to využiť predpokladám nejaké API kde sa takéto dáta dajú v reálnom čase získavať, toto skutočne netuším ako to robia veľké zahraničné weby, ale tak spravil som to po svojom, veď tým aj tak nechcem spraviť dieru za hranicami Slovenska. Takže som si to navrhol tak, že všetky obce na Slovensku budem mať vo svojej vlastnej tabuľke a tým by som vedel obhospodáriť nejaké jednoduché vyhľadávanie. Odkiaľ ale zobrať zoznam všetkých obcí na Slovensku a priradiť ich k danému okresu a regiónu? Po pár hodinách som sa dostal k zoznamu všetkých obcí na Slovensku čo bolo super, lenže ako to dostať do databázy a mať ich aj správne priradené do svojich okresov a regiónov? Kým by som čosi vymyslel, tak by to trvalo dlhšie ako si to asi sám popridávať do databázy, takže som si spravil jednoduchý formulár za pomoci ktorého som si pridal 8 regiónov, následne som cez neho pridal všetkých 79 okresov k daným regiónom a potom som začal postupne pridávať všetky obce a mestá, kde som už vyberal len okres do ktorého patria a tým sa mi automaticky priradil k nim aj región. Keď som sa do toho pustil, tak som si do danej tabuľky pridal jeden stĺpec navyše a to s počtom obyvateľov v danej obci, čo sa možno niekedy v budúcnosti hodí. Keďže máme 2900 obcí, kde sú zarátané všetky obce, mestá a tri vojenské obvody, tak to dá celkom časovo zabrať a tým pádom som strávil nad tým ak si dobre spomínam 4 dni od večera do polnoci. Celkom som si tým rozšíril obzor nie len o demografii ale aj čosi o Slovensku, keďže som zistil, že máme na Slovensku obec s názvom Praha :-) kto z vás také niečo vedel? alebo že máme pár obci kde je len 10 až 20 obyvateľov a tam mi zostal tak trochu rozum stáť. Ako je vôbec možné aby bolo niečo také registrované ako obec, prečo také niečo ako registrácia obce nespĺňa určité podmienky? To si akože môžem kúpiť stavebný pozemok, na ňom postaviť 4 rodinné domy a hneď si tam môžem prifariť značku Fečíkovo? Ale tak budíš, to že je toto banánová republika už vedia všetci, nie len my Slováci. Tiež som si nemohol povšimnúť toho, že máme na Slovensku dosť obcí s rovnakým názvom, ktoré sú síce v rôznych okresoch, ale ako toto vôbec mohol niekto schváliť a povoliť? To si akože môžem namiesto Jankoviec, či Fečíkova vytvoriť obec Bratislava? Nevyznám sa čo všetko musí niečo také spĺňať, len tak nahlas polemizujem, ale príde mi to totálne pribrzdené. Skutočne by ma zaujímalo, že či je také niečo aj v iných štátoch čo možno niekedy zistím, keďže chcem do svojej databázy pridať aj české obce a mestá. Pýtal som sa na názor kamaráta z Prahy na to a sám sa ma spýtal, či to mám v pláne spraviť aj pre českých návštevníkov, tak som sa rozhodol, že to ešte tak môžem spraviť. Tiež som si pri tom pridávaní obcí a miest všimol, že máme len jednu obec na písmeno E a volá sa Egreš. Možno je takých písmen viac, ale na túto si tak dosť spomínam, keďže mi vtedy prišli na rozum egreše :-) Keď som to dokončil, tak som si povedal, že je to pekné keď mám v databáze všetky obce na Slovensku a čo akože teraz ďalej? V hlave som mal už asi 30% zoznamky spravenej, ale naprogramovaných riadkov som mal nula.

Vrhol som sa teda do premýšľania, ako to celé spraviť aby to fungovalo. Vytvoril som si jednoduchú registráciu s prihlasovaním sa, čo mám v pláne neskôr vylepšiť a viac zabezpečiť. Registráciu som rôzne poošetroval, trebárs možnosť zaregistrovať minimálne 18 ročného veku, kde bude do úvahy braný aj daný deň registrácie. Najprv som to riešil len cez aktuálny rok mínus 18 rokov, čo je ale samozrejme nezmyselné riešenie a neskôr som to prerobil cez unix timestamp. To je počet sekúnd od 1.1.1970 čo mi prišlo tiež ako sprostosť, hlavne keď som chcel odpočítať 18 rokov čo bolo tiež nezmyselné riešenie z mojej strany až som to nakoniec spravil poriadne ako by sa malo, ale to až pri tom keď som riešil vyhľadávanie. Musel som poošetrovať aj rozmedzie vekovej hranice aby niekto nezadal, že hľadá ľudí od 30 do 20 rokov :-) taktiež ošetrenie zadaného emailu kde overujem či existuje MX záznam danej domény atď., je toho veľa čo všetko sa tam testuje. Po dokončení registrácie som sa vrhol na profil a začal pridávať rôzne pripravené možnosti na výber. Dostal som sa až na tuším cez 70 možností čo si tam člen alebo členka môže zadať a každá z týchto možností má na výber 2 až pár desiatok možnosti z ktorých sa dá vybrať. K toľkým možnostiam som sa dostal len vďaka prieskumu medzi kamarátmi a kamarátkami. Cez 90% z nich bolo za to, aby bolo možné do profilu zadať čo najviac vecí o sebe, tak som teda zvedavý. Výhoda toho bude v budúcností aj tá, že potom môžem lepšie vytvoriť filtrovanie či chcem partnera čo má podobné záujmy alebo je opakom mňa atď., ale tak tým sa budem zaoberať pri väčšom množstve ľudí čo to bude využívať a nie teraz. To mi ale vnuklo myšlienku z inej zoznamky kde za vyplnený celý profil dostal daný člen nejaké hodnotenie, že má vyplnený celý profil. Napadlo ma, že členov môžem nejakým spôsobom prinútiť aby si ten profil vyplnili. Ja som to teda vymyslel ináč a to že za vyplnený celý profil bude mať daný člen rozšírené členstvo a navyše je tým mimo iné riešenie aj radenie výsledkov vo vyhľadávaní. Čiže ten kto chce byť stále čo najvyššie bude musieť mať čo najviac vyplnený profil, zároveň musí mať nahranú profilovú fotografiu čo je hlavný parameter pri vyhľadávaní, tiež tam je do úvahy braná posledná aktivita atď. Nahrávanie profilovej fotky a fotografií je kapitola sama o sebe, keďže nechcem spravovať tisíce možných fotiek a albumov, ktoré by tam ľudia mohli nahrávať, tak po premyslení som to nechal len na jednu profilovú fotku, ktorá sa pri nahraní upraví na štvorec a zmenší na jednotnú veľkosť. Možno to do spustenia dorobím s možnosťou pridať pár fotiek, ale to si ešte celé premyslím či to má význam.

Takže profil by sme mali hotový a teraz ho treba ale nejako upravovať, tak som sa vrhol do toho. Tiež samotné riešenie možností v profile som dlho premýšľal ako spraviť aby som mohol jednu vec využiť pri viac veciach a nie len na zobrazovanie či editáciu. Nakoniec som z každej možnosti čo je v profile spravil samotnú funkciu, ktorá podľa zadaných parametrov má viac výstupov. Tiež som chcel ošetriť aj mužský a ženský rod, aby tento môj zoznamovací portál zobrazoval profil podľa toho či sa jedná o muža alebo ženu a ináč ma to nenapadlo ako to spraviť takto cez funkcie. Isto by mi nejaký programátor povedal, že som to mal riešiť cez objektové programovanie, ale to je nateraz pre mňa španielska dedina. Zatiaľ majú tieto funkcie na zobrazovanie a zároveň editáciu profilu v kóde skoro 5000 riadkov, čo je celkom vtipné keďže s tým moc vodu nenamútim :-) Pri niektorých možnostiach v profile som mal ale aj také kolónky, kde si člen alebo členka môže zvoliť viac možností a jeden deň som strávil len s tým ako to najlepšie vyriešiť, keďže na také niečo som potreboval použiť jquery a to bolo pre mňa čosi nové, ale po pár hodinách sa mi podarilo aj to vyriešiť a teraz si tam registrovaný člen alebo členka môže pri kliknutí na nejakú možnosť vybrať viac ďalších možností a nie len jednu.

Po dokončení celého profilu som sa pustil do vyhľadávania a keď viem, že kto má aké mesto v profile, tak je už jednoduché ho spraviť čo aj v hlave bolo, ale navrhnúť to tak ako som chcel bolo pre mňa trošku viac náročnejšie. Nakoniec sa mi to podarilo spraviť a teraz tam je možné vyhľadávať podľa toho či som muž, alebo žena a hľadám muža alebo ženu, rozmedzie veku, lokalita, ktorú som zatiaľ nechal ošetrenú len cez región, lebo to nemá moc zmysel mať takto bez ľudí podľa mesta, ale pripravené to mám a predpokladám, že kým to tam pridám, tak mi bude už fungovať aj vyhľadávanie v okruhu podľa km od zadaného bydliska. No a nakoniec posledným parametrom je to, že čo vôbec hľadám s možnosťou nezáleží kedy systém vypľuje všetkých a nebude sa tento parameter brať do úvahy, čím ošetrím nulové výsledky takto na začiatok a zas niekomu to môže byť skutočne jedno aký vzťah hľadá, predsa len chatovať sa dá s kýmkoľvek. Po dokončení celého profilu a vyhľadávania ma napadlo, že by bolo celkom vhodné to rovno celé aj zabezpečiť. Takže som si napísal funkciu, ktorá mi každý vstup ošetrí či sa jedna o čísla v danom intervale v akom majú byť, tiež som systém ošetril proti SQL Injection, CSRF a celá stránka beží cez HTTPS čo je protokol, ktorý sa stará o to aby dáta medzi klientom a serverom šifrované. To znamená bezpečné a nemohol ich niekto medzi členom a zoznamkou odchytávať. Čiže ako také zabezpečenie som tam dúfam spravil a viem, že ho budem musieť stále nejako zdokonaľovať. Tento môj zoznamovací portál som začal programovať niekedy na konci augusta. Dnes máme už pomaly polovicu októbra a v postate nič nemám. Funguje mi tam zatiaľ len registráciu nového profilu, prihlásenie, editáciu profilu a vyhľadávanie podľa zadaných parametrov. Dúfam, že to do konca roka dorobím celé a od začiatku 2015 bude možné túto moju zoznamku možné používať. Snáď v novembri napíšem druhú časť z tejto mojej predpokladám trilógie o tvorení zoznamky a bude v ňom, že ju mám už skoro hotovú :-)

Článok bol zobrazený 6271 krát a obsahuje 2284 slov
Pridané 12. októbra 2014