Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Prvá veľká aplikácia

Aktivity
Avatar
Lava
Člen
Avatar
Lava:8.4.2020 21:19

Prosil by som o pomoc s "návrhom" mojej prvej veľkej appky. Appka bude rozdelená na cca 2000 "divízií", čiže kvázi samostatných jednotiek, ktoré môžu fungovať nezávisle od seba, a v každej divizií môže byť od 10 - 1000 userov. Teraz je teda otázka, či to server a databáza zvládne. Zo začiatku toho bude menej a rozhodne si nemyslím, že by hneď v prvý rok funkčnosti appky bolo registrovaných stotisíc userov. Preto by som to zo začiatku umiestnil na normálny hosting, niekde na websupport, až keby to nezačalo stíhať, tak by som riešil nejaké VPSko, prípadne možno aj vlastný server.

No ale k veci... ide mi o to, či je z pohľadu výkonu lepšie urobiť pre každú divíziu samostatne akoby samostatnú inštaláciu projektu (ako napr. wordpress - je ich miliarda inštalacii, ale jednotlivé wordpressy nemajú medzi sebou prakticky nič spoločné), alebo či je lepšie to vtrepať všetko do jedného (ako napr. facebook).

Každá divízia prakticky už má internetovú stránku a teda by som svoj projekt vedel nainštalovať na subdoménu pre každú divíziu. Ušetrilo by sa miesto a určite by bola vyššia rýchlosť komunikácie s databázou.

Problém ale nastáva v tom, že čas od času budú chcieť niektoré divízie medzi sebou komunikovať, a toto netuším, ako poriešiť... niečo ako sú pluginy na wordpresse, že hoci je miliarda nezávislých inštalácií na nete, všetky sa pripájajú na rovnaký repozitár, ak človek inštaluje pluginy napr.

Musel by som potom urobiť ešte akoby niečo "nadradené", čo by sa vedelo dostať k datam každej divízie? A ako potom napr. v prípade "aktualizácií", či dorábania nových featur? Určite sú na to spôsoby a nebudem to musieť ručne kopírovať na tritisíc hostingov, to mi je jasne :D Len nemám s týmto skúsenosti, zato sa pýtam.

Zkusil jsem: nič, rozmýšľam

Odpovědět
8.4.2020 21:19
Aspartám, sacharín, to je môj vitamín
Avatar

Člen
Avatar
Odpovídá na Lava
:9.4.2020 10:37

Čo sa dá odpovedať na zámerne vágnu otázku? Žiaľ, len rovnako vágna odpoveď: musíš si pre tú svoju aplikáciu zvoliť škálovateľnú architektúru.

Hotovo, to je odpoveď na tvoju otázku. Nič ti však nepomôže. Zjavne si úplný začiatočník bez praxe čo ledva ovláda PHP a o architektúrach moderných web aplikácií nemáš ani šajn. Následkom čoho to na 99,9% nezvládneš, lebo príliš predbiehaš a pred tebou je ešte dosť dlhá cesta k tomu, aby si niečo podobné dal sám.

A áno, sám. Lebo ak očakávaš, že ťa niekto na nejakom webe zmysluplne navedie bez toho, aby vedel o čom hovoríš, tak na podobné špekulácie rovno zabudni.

 
Nahoru Odpovědět
9.4.2020 10:37
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.4.2020 11:31

Jak pise Vladislav. Napsat app neni problem. Problem je sladit hw pro tve pozadavky. To by mel resit nekdo zkuseny, kdo uz podobna reseni vytvarel. A Nebude to levna zalezitost.
Napriklad, servery pro google vyhledavac jsou jiny hw nez bezny pc. Nespis bude vyhodnejsi propojena sit miniserveru.

 
Nahoru Odpovědět
9.4.2020 11:31
Avatar
Odpovídá na Lava
Neaktivní uživatel:9.4.2020 11:56

Ahoj, já se přiznám, že jsem to téma chtěl přejít mlčením, ale trochu mě ve fórech určených pro řešení problémů vadí škatulkování na způsob, že "je něco zjevné". Tím spíš, když sám uvádíš, že s tím nemáš zkušenosti.

Nicméně ve zbytku budu s [me|]53059[/me|] souhlasit, protože z toho dotazu není vůbec patrné, co dané zadání představuje.

Chápu 2000 divizí s rozsahem uživatelů od 10 do 1000 na divizi, ale co třeba daná divize nad aplikací představuje? Je to jen skupina oprávnění nad sdílenými daty nebo se takovou divizí liší i featury aplikace či rovnou její logika? A co jsou třeba ta sdílená data? To budou uložené soubory (např. výrobní dokumentace) nebo jsou to databázové záznamy o zákaznících, účetnictví, ... ? Jsou i data, která v žádném případě nesmí - byť jen omylem - druhá divize získat? V tak velké organizaci bývají týmy řešící informační bezpečnost a musíš aplikovat i jejich stanoviska na nakládání s daty.

Co mě úplně vyděsilo, je úvah nad provozem takového zadání na běžném hostingu bez vlastní kontroly nad konfigurací běhového prostředí a záloh. Ještě víc pak snaha ušetřit místo provozem na subdoméně (předpokládám tedy existující hostingy), kdy si neumím představit, že se 2000 divizí a jejich hostingů bude shodovat použitou technologií (PHP, .NET, Node.js) natož verzí použitých komponent a konfigurací.

A nad čím to chceš vlastně stavět? V každém druhém odstavci vzpomínáš WordPress, ale explicitně jako vybraná technologie nikde nezazní. Není tak patrné, zda máš v plánu programování celé aplikace, nebo chceš jen adaptovat featury WordPressu.

Těch neznámých věcí je opravdu hodně. V jejich kontextu a s dnešními nástroji je verzování a auto-deployment featur ten nejmenší problém.

Nahoru Odpovědět
9.4.2020 11:56
Neaktivní uživatelský účet
Avatar
Lava
Člen
Avatar
Lava:30.4.2020 8:46

Dobre, ďakujem za odpovede kamaráti. Trošku to teda upresnim...

Zamýšľam urobiť "manažéra" pre cirkevné potreby. Tzn. na slovensku máme cca 3000 farnosti, niektoré sú väčšie, tzn. majú stotisíc veriacich, iné zas majú 40 veriacich. Pochybujem, že by sa všetci zaregistrovali. Z vonkajšieho pohľadu je farnosť vlastne samostatná jednotka, z právneho pohľadu má každá farnosť svoje IČO (je teda právnicka osoba), vlastnú základňu farníkov (teda uživateľov), vlastné omše, vlastné financovanie... Viacero farnosti je následne združených pod "diecezu". Ale prakticky sa dieceza nestará o financie ani iné veci danej farnosti, čiže farnosť je kvázi akoby "nezávislá" do určitej miery.

Takže z tohto pohľadu existuje 3000 farnosti, každá si žije svojim životom a nemusí nič riešiť. Vedel by som teoreticky nainštalovať 3000 inštancií a bolo by po probléme.

Ale...

Čas od času sa stane, napr. že človek bol pokrstený v inej farnosti, ako aktuálne býva. Ak chce mať niekto svadbu v kostole, potrebuje doložiť svoj krstný list (resp. teda výpis z matriky z farnosti, kde bol pokrstený). Dnes sa toto rieši papierovo poštou, to znamená, že farar z farnosti A pošle dopis do farnosti B a následne z farnosti B pošle farár výpis z matriky do farnosti A. Proste je to blbosť v roku 2020 takto riešiť veci... A tu narážam na problém toho, že by bolo 3000 inštalacii... ako by spolu komunikovali? Teoreticky by som vedel zasielať nejaké personalizované maily, že by tí ľudia len klikali a automaticky by im ohadzovalo inputy a hľadalo v cudzích databázach. Ale ďalšie čaro je také, že nejakú "free" beta verziu toho projektu budem chcieť pomaly rozširovať o novu funkcionalitu atď... teda z tohto pohľadu ako budem robiť updaty? Kopirovať kody na 3000 rôznych FTPčiek?

Preto zamýšľam to urobiť pod "jednou strechou". A toto som sa v podstate chcel opýtať. Urobil som za život minimálne 500 webstránok s rozličným zameraním, niektoré majú návštevnosť 100 návštev denne, iné (napr. bachledka.sk), ktoré mávajú návštevnosť aj vyše milióna mesačne. V podstate všetky webové stránky aj aplikácie sú viacmenej o tom, že "CRUD" do databázy. A toto sa chcem opýtať, pri akom množstve dopytov, prihlásených ľudí, čo naraz píšu/čítajú z databázy, to už začne kapať?
Perdpokladám,ž e ak by sa to časom rozšírilo a bolo by trebars milion userov, že už by normálny hosting na websupporte nestačil a musel by so zriešiť dajake VPSko... ?

Editováno 30.4.2020 8:48
Nahoru Odpovědět
30.4.2020 8:46
Aspartám, sacharín, to je môj vitamín
Avatar
Hando
Člen
Avatar
Hando:1.5.2020 12:07

Ahoj.
Neposkytnu asi žádnou odpověď, ale položil bych si na tvém místě ještě další otázky. Víceméně budeš tvořit jakési CRM, či nějaký podnikový systém - církev-firma, věřící-zákazník. Samozřejmě se svými specifiky. Což vyžaduje dost podrobnou analýzu problému.

1.) Je vůbec šance, že to bude mít tolik uživatelů? Propojení církví atd. do společné aplikace je natolik "velká" věc, že si nedovedu představit, že by se dobrovolně do tvé aplikace zapojili. Církve samotné asi dost těžko, farnosti možná a věřící - no, neznám úplně věkové rozložení, ale z mé představy např. starších lidí a jejich schopnosti a ochoty práce s počítačem... :/ Vyplatí se to?
2.) GDPR? Při rozsahu, o jaká data může potenciálně jít, je to již celkem zásadní otázka. Budou se posílat dokumenty? Kde budou uloženy - zabezpečeny. Co záznamy v databázi?
3.) Opravdu budou dotazy na databázi ten největší problém? Jak často budou reálně probíhat? Resp. jak často bude aplikace používaná?
4.) Komunikace mezi jednotlivými subjekty by se dala řešit např. přes datovou schránku. Netuším, jak je to na Slovensku, ale předpokládám, že stejně jako u nás. I tak se ji lidi pořádně nenaučili používat.

1 vs. mnoho instalací - určitě je lepší spravovat 1 aplikaci, než řešit instalaci, problémy, náklady atd. rostoucí s každou další "instalací". Určitě nechceš říct zákazníkovi "stáhněte si na stránkách toto, nahrajte to na váš webhosting... "

Nechci působit negativně, ale zdá se mi, že profit při daných nákladech bude minimální či spíše nikdy nevyváží investovaný čas. :(

 
Nahoru Odpovědět
1.5.2020 12:07
Avatar
Lava
Člen
Avatar
Odpovídá na Hando
Lava:13.5.2020 11:48

No, po dlhšom čase som sa tu opäť dostal :D

Základ tohto projektu je v tom, aby sa dali planovať veci pre jednotlive farnosti. Z konferencie biskupov slovenska mi zaželali veľa šťastia, že môžem do toho isť, ale že im to je jedno. Takže cirkev o tom vie. Ja to chcem urobiť tak, že keď si to nejaky farar pozrie a skusi free verziu, padne na prdel a s radosťou zacaluje 40€ za ročnu full verziu. Aj dnes použivaju kadejake krosy a ine platene programy napr. na farsku finančnu administrativu, tam by to mali pod jednou strechou.

Praktické využitie je v mnohych smeroch, čo sa týka farnosti ako samostatnej jednotky. Ja som v mojej farnosti organista (varhanník) a je nás dokopy 5. Pomaly každý deň si musíme volať/písať e-maily o tom, kto má ísť na ktorú omšu hrať, proste je to dosť o hubu a nebaví ma to. Kňazi, miništranti, lektori (tí čo čítajú čítania) majú presne to isté. A preto ma napadla táto myšlienka.
Generátor omši pokladam za jadro celého projektu, tzn. každý rok pred začiatkom adventu farár otvorí generátor omši a vygeneruje omše na celý rok. Vie napr že každý týždeň má omšu v nedeľu o 18:00, tak to v tom generatore tak nastaví. Vie, že na tej omši hrajem na varhany ja, tak to tak nastaví. Všetko nakonfiguruje a jediným buttonom vygeneruje 1000 omši (čiže 1000 rows do DB) s tým, že už bude všetko nastavené. Pre každú omšu bude nastavený kňaz, organista, lektori, miništranti, kostolník. Pre každú omšu sa bude dať zapísať intencia (to už prostredníctvom iného formulára), tzn. že na aký úmysel je slúžená. A tam to tiež bude výhoda napr. taká, že čas od času príde do kostola babka a dá 300€ so slovami - odslužte 60 omši na ten a ten úmysel. Kostolník prevezme cash a potom pol dňa zapisuje do kalendára ako hlupák 60 krát to isté (myslím normálny stolový kalendar, žiadna PC appka). Následne to týždeň čo týždeň kaplán prepisuje do farských oznamov, že za koho bude táto a táto omša. Lenže aj toto by sa dalo na jeden klik a má to hneď vygenerované. Poznám 100 kňazov osobne a každému, čo už nepamätá druhú svetovú vojnu, sa to páčilo. Samozrejme, dzedovia, čo majú dvesto a viac rokov a nevedia si ani vytlačiť biskupov list z e-mailu, tak pre nich to nemá význam, no dnes už máme aj 70 ročných kňazov, čo celkom dobre dávajú na PC a pochopili by to, naučili sa s tým robiť.
Ďalšia vec, napr z pohľadu človeka... chceš krstiť dieťa, alebo nahlásiť pohreb, alebo svadbu, tak proste vypíšeš v appke form a appka ti automaticky vygeneruje všetky potrebné dokumenty, ktoré vytlačiš, podpišeš a doručiš na faru (v budúcnosti napr. zapracujem elektronický podpis), automaticky sa to uloží aj do farskej elektronickej matriky, nie jak dnes kňaz každý rok na silvestra celý deň vypisuje matriku krstov, svadieb a pohrebov jak idiot, lebo sa mu za celý rok nakopí 300 záznamov.
Takže z môjho pohľadu to význam má.

Len teraz ide o to, koľko tých dát musí byť, aby to začalo kapať na bežnom hostingu? Jedine toto riešim, nič iné. KEď bude 200 kňazov naraz insertovať po 1000 rows do DB, čo sa stane? Zožere to, spadne databáza, alebo čo?

Ohľadom GDPR - to dám samozrejme vypracovať špecializovanej firme, aj keby to 3000€ malo stať...

Nahoru Odpovědět
13.5.2020 11:48
Aspartám, sacharín, to je môj vitamín
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.5.2020 12:34

Urcite jsou hostingy, kde tohle nebude problem.
Ale pochybuji, ze by knez najednou odesilal 1000 zaznamu. Mysleno behem 1s. Jakykoliv vetsi interval je pro server flakacka. V online hre rd2.cz, kdyz jsem to jeste hraval, tak bylo online kolem 300 hracu (behem 5s ten hrac udelal klik na dalsi stranku a stravil tam treba pul hodiny nebo se vykecaval na forku). To nejspis jako server pouzivali pred 15 lety bezny pc. Je fakt, ze se nedelili o rezii s dalsimi programy. Takze dnesni servery s tim nebudou mit problem. A kdyz, urcite se da koupit drazsi hosting.

Mozna bych zvazil pridelit k tomu carovy kod. Kdyz vypise svatbu, tak aby udaje o ni nemusel prepisovat a vyhledavat 10x, tak by naskenoval carovy kod z papiru.
Chtelo by to skutecne zmapovat, co ti lidi delaji, proc to delaji a hlavne treba z nekolika nezavislych mist. Z pohledu vsech lidi, kterych se to dotyka, co by jim vyhovovalo. Idealne, shromazdit 5 takovych skupin lidi z 5 okresu, editory, moderatory, zakazniky, a zjistit od nich, jakym zpusobem s tim pracuji.
Treba zjistis, ze vyplnit rukou formular neni pro ty lidi takova zatez jako prace s pc nebo cekat, nez to tam nekdo pretuka do pc. Ze spousta tech formularu se pouzije pouze k jedinemu ucelu. Vykopirovat je 100x stoji par korun, kdezto tisk beznou tiskarnou uz je mnohem drazsi.
Tatka pracoval pro MRP ucetnictvi. Maji aktualni produkt podle zakonu CR. Maji i slovenskou verzi. Spousta lidi je s tim spokojena. Mozna by ti to usnadnilo tu cast, ktera resi ucetnictvi.

 
Nahoru Odpovědět
13.5.2020 12:34
Avatar

Člen
Avatar
Odpovídá na Lava
:13.5.2020 14:18

Teraz už lepšie chápem o čo ti ide. A tak ti viem rovno povedať, že si nemyslím, že potrebuješ 3000 inštalácií. Myslím, že sa z nedostatku skúseností pozeráš na problém z nesprávneho uhla pohľadu a všetko čo potrebuješ je (progresívna?) SPA web aplikácia. Ktorá úplne postačí ak bude postavená nad jediným web hostingom, nad jediným databázovým serverom. Plus žiadne GDPR zatiaľ nemusíš riešiť, žiadna dátová schránka nie je potrebná, žiadne PHP, žiadny Wordpress - ten je na toto nevhodný, atď. Plus by som zmenil model a nepredával to za 40€ jednorázovo, ale za pravidelný, nízky mesačný poplatok. Platiteľný aj na rok vopred samozrejme, ale hlavne pravidelný, nie jednorazový. Lebo aj o ten web sa bude treba starať pravidelne, nie jednorázovo. Plus by som dovolil registráciu aj jednotlivých farníkov, nie len kňazov. Atď., atď. Veľký projekt, presnejšie rozsiahly, ale realizovateľný s bežne dostupnými open source technológiami nad nijak špeciálne drahým hostingom.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
13.5.2020 14:18
Avatar
Lava
Člen
Avatar
Lava:13.5.2020 18:30

Cirkev ma trosku ine pravidlá, co sa tyka uctovnictva, ma rozne ulavy atd...
To je to, co som chcel vediet. Poplatok som mal na mysli 40€ rocne na farnost. Je ich 3000, keby do projektu slo 2000 farnosti, tak cca 8k € mesacne. To by sme sa uzivili aj dvaja koderi :-)
Wordpress teda nie... Nie som idiot. Zacal som na laraveli. Ale potom som zistil, ze ma obmedzuju vsetky tie laravelovske somariny a potom mi zrazu zacal hadzat z nicoho nic error (asi zas daco composer), tak som sa inspiroval tuto serialom o vlastnom cms, z ktoreho som pouzil ciastocne router (nice urls nepotrebujem v intranet appke) a este nejake veci ma vypisy atd... takze v podstate vanilla php. Zatial mam poriesenu registraciu a prihlasovanie uzivatelov (vratane zapametania prihlasenia, forgotten pwd, mail verification) a user roles... Tak uvidime,co z toho bude napokon :-)

Dakujem vam vsetkym za rady

Nahoru Odpovědět
13.5.2020 18:30
Aspartám, sacharín, to je môj vitamín
Avatar
Lava
Člen
Avatar
Lava:13.5.2020 18:36

Este dve veci - co to je SPA appka? Veci ako react, angular, vue a pod. mi nic nehovoria. Javascriptu sa vyhybam jak cert krizu. Cim menej JS, tym lepsie :-D takze ak sa ta SPA tyka toho, tak ti nedam.
Ja som sa na to pozrel z ineho pohladu - chcel by som to zrobit komplet vsetko na kolene. Vlastne jquery a font awesome su jedine veci, ktore do toho projektu includujem. Ani bootstrap, ani ziadne ine somariny. Na datepicker este budem musiet asi natiahnut jquery UI, ale to je fakt vsetko. Dovod je ten, ze som vsetko robil ja a tym padom budem poznat appku do najmensieho detailu. Nevyhoda je zas ta, ze znovuobjavujem koleso, miniem na to stokrat viac casu a mozem narobit stokrat viac chyb. S tym ale nejako ratam.

Nahoru Odpovědět
13.5.2020 18:36
Aspartám, sacharín, to je môj vitamín
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:13.5.2020 20:23

SPA nedelam ale ja jsem to pochopil tak ze se jedna o aplikaci ktera vyuziva API a z neho si pomoci requestu bere potrebne data, komponenty bez nutnosti restartovat celou stránku, vždy jen to co je potřeba, SPA se vice podoba desktopove aplikaci nez klasicky web.

Jako vyhody SPA se bere napriklad:

  • rychlejsi nacitani (nemusi se nacitat cely web)
  • castecny offline pristup
  • univerzalnost (muzes udelat jednu aplikaci pro vsechny platformy: mobil, web, desktop)
  • pri dobrem designu to vypada elegantne
  • i presto ze se hlavni cast odehrava na strane klienta neni problem udelat neco jako router
  • a mnoho dalsiho

Urcite znas napriklad Spotify, to je treba SPA.

Jestli jsem to napsal spatne tak se omlouvam, kdyztak me opravte.

Nahoru Odpovědět
13.5.2020 20:23
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:13.5.2020 20:31

Jeste jedna vec, uz neni duvod se vyhybat javascriptu diky vecickam jako je typescript atd. aspon ja to tak mam :D

Nahoru Odpovědět
13.5.2020 20:31
Řeš pouze to, co dokážeš ovlivnit.
Avatar

Člen
Avatar
Odpovídá na Lava
:13.5.2020 22:19

Ono to nebude CMS, skôr databázová aplikácia. A malo by to byť riešené práve s React, Angular, alebo Vue. A backend by stačil ako REST API s Node + Express. A plus MySQL ako databázový server. Ale ak to skúsiš urobiť sám, s PHP a po starom, s Bootstrap a jQuery, tak si na tom vylámeš zuby. Ono práve na to, aby si sa nezamotal v rozsiahlejšej aplikácii, vznikol React a pod.

 
Nahoru Odpovědět
13.5.2020 22:19
Avatar
Lava
Člen
Avatar
Lava:13.5.2020 22:34

Jop, ja vam verim kamarati... nikde nie je napísané, že ak mi tento projekt vyjde a prinesie mi 8k € mesačne, že to postupne nebudem prerabať do "modernejšej" verzie, aj za použitia reactu a vue a týchto škaredosti. Momentálne mi to nič nehovorí. Moje jquery znalosti končia pri vytvorení custom slideshow enginu... takže tak. Chcem to postaviť na niečom, čo ako-tak viem robiť a uvidime, ako sa to vyvinie. Osobne sa nebránim novým technologiam, ale toto robím vo voľnom čase v podstate.... Takže zatiaľ to bude PHP a uvidíme ako ďalej.
Zoberte si také csfd, zľavomat, alebo aj starú dobrú hru webgame (u nej je problém ten, že v roku 2005 zaspali na vavrinoch, ale mali 6-7k hráčov počas najlepšej éry...) všetko to sú PHPčkové projekty. Ak mi niekto chce tvrdiť, že php už je old school a že zomiera, tak mu neverím, lebo chcete-nechcete, stále php tvorí 80% internetu.

Ale v zásade či php, či vue, či react, či java, či dot net, všetko to je stále len lopata, ktorou treba vykopať jamu. A či vykopem jamu s fiskars lopatou, alebo festa lopatou, alebo tesco value lopatou, stále bude napokon diera vykopaná ;)

Takže áno, zatiaľ to robím "po starom" vanilla php + custom CSS (bez bootstrapu), ako som písal, v projekte používam len jquery a font awesome, to je všetko, čo je externá knižnica. Všetko ostatné je moje.

Jasne, že toto nebude CMS, ja som len chcel povedať, že som sa inšpiroval tým own CMS, čo tu je na itnetworku v sekcií PHP a použil som z neho nejaké veci na "štart". Napr. ten class autoloader, alebo aj router, ktorý som si ale upravil tak, aby fungoval po starom na $_GEt a nie na pretty urls. Aj wordpress má vo wp-admine query stringy a ide. Inak osobne pokladám wordpress za kôpku hnoja, čo sa kódu týka.

Nahoru Odpovědět
13.5.2020 22:34
Aspartám, sacharín, to je môj vitamín
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.5.2020 9:04

Zatracovanim bootstrap delas chybu.
Js potrebujes take, minimalne pro http requesty.

Ja bych na to sel zpusobem web-services (webove sluzby). Nevim, jka se to jmenuje v modernim pojde ale v zasade jde o to, ze pres url adresu ziskas vysledek sql dotazu. Ono je to mirne pomalejsi nez primy pristup, ale vyhodnejsi, zhlediska dalsiho zpracovani.

Cili, mas sql dotaz seznam uzivatelu
SELECT * FROM uzivatele ...

Zavolas to z url
ws.php?service=u­serlist&format=json

A tvuj php program ws.php overi session prihlaseni uzivatele. Overi, zda ma prava na ten sql dotaz. Zjisti data sql dotazu. A preformatuje je do zvoleneho formatu. Format si definujes jako json pro requesty, xml pro externi app,csv text pro excel, text, html kod. Samozrejme si kod pro prevod doprogramujes jen tam, kde potrebujes.
Ale takhle budes mit jednotnou platformu, ktere predas jmeno funkce, parametry v url a ona to preformatuje na sql dotaz. Vse na jednom miste.
Vyhoda je, ze to muzes pouzit pro js requesty, prave pro ajax. Nevyhoda je mensi rychlost zpracovani, pokud bys chtel v externi app zavolat nekolik tech url a zpracovat je v jinem formatu.
Priklad. My jsme pouzivali Stag. To je web system pro studium na VS. Pouzival tez WS. Vyuzivali jsme to s kolegou k tomu, aby jsme pro ruzne lidi zpracovali ruzne vystupy. Spoustu ws umel zobrazit jako pdf, treba rozvrhy. Nebo XLS pro excel. Nebo hodne jsme pouzivali CSV pro excel. Vytahli jsme tabulku seznam stud. program. K ni doplnili seznam oboru. A k ni z dalsich WS vytahli info o oborech. Cili, jsme volali treba 2000x url pozadavek. Coz je pomerne zatez. Nektere veci se zpracovavali i 5s. (sql dotaz, primy, by to ziskal za 0.1s, zobrazil so 1-2s) Nicmene, takove jsme potrebovali jednou za pul roku a v dobe, kdy z systemu nikdo nebyl. Vysledky te tabulky jsme pak prevadeli z excelu do wordu a rozesilali ucitelum, aby si opravili v infu o studijnim oboru.
Stag je jiny pripad. Co popisujes ty, to by mel zvladnout bezny pc. Stag mel v sobe 10.000 studentu. Bezel na IBM platforme (ktera sama o sobe stala asi pul milionu), ktera je sama o sobe desne draha. Tusim, pronajem na rok vsech sluzeb vychazel na pul milionu CZK. Ale slo o spolehlive reseni, servisovali nam to, zalohovali. Zadna starost. Univerzita zacala setrit a presli jsme na IS muni. Levnejsi, ale tez o dost horsi system. Nicmeme, protoze vedeni a ucitele u Stagu umeli vyuzit asi 1% sluzeb, tak zmena se jich nedotkla, ted jsou to 2%, ktere musi pouzivat, protoze tam pro zmenu nema kolega pristup, aby delal za ne jako u Stagu :) Stoji nas to asi 1/5. Sql databazi nemame pristupnou (u stagu jsme meli vlastni programky s sql dotazy). Takze jsme odkazani uplne na cizi sluzby. Na druhou stranu, kolega nemusi zpracovavat vytahovat informace, ktere ten system neumi zobrazit.


Ok. Zpet k tvemu problemu.
Je pekne, ze navrhujes vlastni reseni. Ze tvuj tip je 2000 farnosti. Ale mozna bys nejdriv mel zjistit, jakym zpusobem to dostavad farnosti resi. Mozna pouzivaji i lepsi reseni, nekteri. Ono se muze ukazat, ze do toho navezes maximalne ty, co nemaji zadne reseni nebo tech par lidi, kterym to sam ukazes a vyzkousi si s tij pracovat. Coz muze byt i desitka lidi, jen.

 
Nahoru Odpovědět
14.5.2020 9:04
Avatar
Lava
Člen
Avatar
Odpovídá na Peter Mlich
Lava:14.5.2020 9:13

No takto... v cirkevnych kruhoch sa pohybujem od svojich 6 rokoch, kedy som bol 4 roky miništrant :D Od 13 som začal hrať na organe. Zažil som 100 kňazov, hral som v 50 rozličnych farnostiach, s mnohými som v kontakte aj dnes. Viem približne, ako to chodí globálne, že naša SK cirkev (myslím konferenciu biskupov slovenska - KBS) nič také nerieši. Oni ani nevedia vyriešiť (alebo nechcu) ako platiť organistov a kostolníkov, takže čas od času farár niečo odsype zo zvončeka, čo sa považuje za "milodar" farnosti organistovi za jeho čas a ochotu. Ale nejake dohody o pracovnej činnosti rozhodne nečakaj. To len na okraj.
V praxi nie je nič. Viem ako to farnosti riešia. Zapisuju do kalendara (papieroveho), čo zabera neskutočný čas. Jednotlivé dokumenty si farnosti medzi sebou posielajú poštou ako pred sto rokmi. No proste neexistuje fakt nič. Maximalne nejaké väčšie farnosti majú shared google calendar, ale to je všetko, fakt. Ver mi. Ak by niečo existovalo, tak do toho nejdem...

Tieto webservices sme používali, keď som robil v Quatre (Kiskove užery), lenže ja som s nimi priamo nepracoval, vždy som ich považoval za "hotovú" vec. To znamená, že som zavolal servicu (rest, soap,...) s parametrami a viac som sa nestaral, ako to funguje tam. Takže vlastne neviem, načo je tento systém dobrý (no teraz už viem, keď si to napísal vyššie), myslel som, že to má vplyv na rýchlosť a použiteľnosť, aby to proste databáza "dávala" ako sa povie. Tam boli terabajtové databázy s miliardou riadkov, tak som bol na tom, že ak by som priamo pustil dajaky SQL query z mojho kódu, tak to proste chcipne.

Nahoru Odpovědět
14.5.2020 9:13
Aspartám, sacharín, to je môj vitamín
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.5.2020 12:27

tady mam takovou jednoduchou class na WS.
Z kodu vidis, ze tam mam normalni volani sql dotazu "getFaqContentById" a je mozne to zavolat pres

$SQL = new classSql($config);
$pageEngine = new classPageEngine();
$WS  = new classWebServices($SQL, $pageEngine);
$path = $WS->service('getFaqContentById', array('id'=>$QA['id']));

// kdybych to chtel jako sluzbu, tak si udelam soubor
// --- getFaqContentById.php ---
require_once 'init.php';
$SQL = new classSql($config);
$pageEngine = new classPageEngine();
$WS  = new classWebServices($SQL, $pageEngine);
$id = isset($_GET['id']) ? $_GET['id'] : '';
$WS->service('getFaqContentById', array('id'=>$QA['id']), 'json');
// Nebo si udelam prave soubor ws.php, ktery by se mi staral o url requesty.
// Ale to tam zrovna nepouzivam, nepotrebuji.
// A jenom slo o takovy pokus prepsat sql dotazy to takove podoby.


// --- class web-services ---

class classWebServices
{
var $SQL;

function __construct($sql, $pageEngine = '')
        {
        $this->SQL = $sql;
        $this->pageEngine = $pageEngine;
        }

public function checkPermition($name='')
        {
//      if (!$this->pageEngine->checkPermition($name))
//              {
//              echo "Nemas dostatecna opravneni.";
//              exit();
//              }
        return true;
        }

public function service($name, $opt=array(), $format='')
        {
        if (!is_callable(array($this, $name)))
                {
                return;
                }
        return $this->{$name}($opt, $format);   //      call_user_func(array($this, $name));
        }

public function format($data, $format='')       // output format php array (/ json / xml / csv - not implement)
        {
        if ($format=='')
                {
                return $data;
                }
        }
public function query($query)
        {
//echo $query.'<br>';
        $arr    = array();
        $result = $this->SQL->query($query);
        while ($row = $this->SQL->fetch($result))
                {
                $arr[] = $row;
                }
        return $arr;
        }

public function queryInsert($query, $params, $format='', $perm='')
        {
        $this->checkPermition($perm);
        foreach($params as $key=>$value)
                {
                $params[$key] = $this->SQL->escapeValue($value);
                }
        $query = vsprintf($query, $params);
        return $this->SQL->query($query);
        }

public function queryCount($query, $params, $format='', $perm='')
        {
        $this->checkPermition($perm);
        foreach($params as $key=>$value)
                {
                $params[$key] = $this->SQL->escapeValue($value);
                }
        $query  = vsprintf($query, $params);
        $result = $this->SQL->query($query);
        $count  = $this->SQL->fetchCount($result);
        return $count;
        }

public function queryItemAll($query, $params, $format='', $perm='')     // array(array())
        {
        $this->checkPermition($perm);
        foreach($params as $key=>$value)
                {
                $params[$key] = $this->SQL->escapeValue($value);
                }
        $query  = vsprintf($query, $params);
        $data   = $this->query($query);
        return $this->format($data);
        }

public function queryItemOne($query, $params, $format='', $perm='')     // array(array())
        {
        $this->checkPermition($perm);
        foreach($params as $key=>$value)
                {
                $params[$key] = $this->SQL->escapeValue($value);
                }
        $query  = vsprintf($query, $params);
        $data   = $this->query($query);
        $data   = isset($data[0]) ? $data[0] : $data;
        return $this->format($data);
        }


public function getFaqContentById($opt=array(), $format='')     // faq.php
        {
        $query = "SELECT * FROM `faq` WHERE `id` = '%d' LIMIT 1";
        return $this->queryItemOne($query, array(
                $opt['id']
                ), $format);
        }
 
Nahoru Odpovědět
14.5.2020 12:27
Avatar
Odpovídá na Lava
Michal Oravec:20.5.2020 0:02

Kvopka hnoja bude tvoje pseudo CMS.

By the way

https://www.itnetwork.cz/…7ea2200c2c9b

Chlapec po 4 rokoch ziadna zmena, radsej na to kasli...

 
Nahoru Odpovědět
20.5.2020 0:02
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.5.2020 8:28

V tom forku zminuje nette, to by mozna nebylo spatne. Zalezi na tom, co mu vyhovuje. Ja davam prednost primemu kodovani v php vlastnim stylem a classy nez frameworkum. Ale nebranim se tomu, kdyz to nekdo chce jinak, umim pracovat i s nimi. Pokud mam upravit jiz funkcni program, jsem schopny si v classech a pres google dohledat, jak tu ci onu zmenu provest spravne s vyuzitim frameworku.

K nette, autor poskytoval sveho casu i skoleni.

Michal Oravec - Tak, je rozdil, kdyz programuje v praci a ve svem volnem case. To je jasne. Ja to taky vidim jako blede, hackersky pristupne osobni udaje levou zadni. Ale neberme mu iluze. Me programy taky nejsou vzdy zazrak, presto funguji :)
Ja bych sel do nejakeho uz hotoveho free cms, treba. On to asi ted vidi jako brnkacku, ze to nejake frameworky za nej vsechnu udelaji. Ale ve skutecnosti se jedna asi o pulrocni programovani a testovani, nez to vsechno odladi do jakez takez podoby.
Zvlast mne prekvapuje, jak snadno se vzdava bootstrapu :) " Ani bootstrap, ani ziadne ine somariny."

Editováno 20.5.2020 8:30
 
Nahoru Odpovědět
20.5.2020 8:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.