Component develop tricky problem (JS)

Hehe, to skroz prirodno dolazi samo po sebi.
Zamisli da stavljas aplikaciju na mobitel gdje ona zbog standarda zna kako ce pristupiti tvojim SMS porukama, slanju poruka, tvojim slikama, kreiranju poziva…itd …a da ti ne možeš ograničiti što od toga će smjeti raditi?

Ovo upravo pokazuje koliki potencijal se oslobađa kada komponente propričaju zajedničkim jezikom.

A i dalje nije nista komplicirano…nije 2% kompleksnosti npm-a recimo (ne u koristenju, nego sto npm rjesava u pozadini)… fakat je jednostavna ideja.
A moras imati registery…jer upravo putem njega dodajes komponente. Recimo bacas stari dropdown van…i uzimas neki drugi. Tu zamjenu radiš jedino u registeryu, gdje normJS-u na taj način kažeš: “ovo nam je sada dropdown”. A sav ostali code zbog standariziranog HTMLa i JS metoda…se ne mora dirati.
Također onda možeš putem registera jednoj komponenti reći da radi s jednim modalom, a nekoj drugoj da radi s drugim…ako bi baš nastala potreba da rade sa različitim modal-ima.

ajde skrati malo pricu. ljudi se gube po ovoj temi. Svedi stvar na sto jednostavnije objasnjenje i sto manju implementaciju za sada.
Ja bi se trenutno drzao samo teorije, bez ulazenja u samu implementaciju. normJS mozes radit tek kad uspijes ljudima objasnit o cemu se radi u jednom twittu…

To si u pravu, ali postavljeno je pitanje…da detaljnije pojasnim taj dio oko povezivanja komponenti.

…na koje sam odgovarao.

Pa upravo taj pseudo kod koji si postavio postaviš u apstraktnu prototype klasu u npm paketu i importom paketa imaš definicije. Prototyping klasa radi baš to, zadaješ neku vrstu interface-a koji child klase poštuju.
Prototype, constructor, prototype chain.
(Pazi, ja se ne bavim pretjerano JS-om, ali ovo je klasični inheritance klasa.)

@bozoou Ne zezaj. Moje pitanje je bilo konkretno, trebalo je biti shvaćeno. Mislim da si se sapleo u tački 3 (i da se nekim čudom uspiješ konsolidovati sa ostalim tačkama). Dakle

Znaš način koji je nepoznat stotinama hiljada inžinjera ili je plan imati req/res trigger prema vlastitom serveru?
Pitanje je bilo, evo treći put, kako će detektovati sšta moja stranica ima a šta nema? Kako ćeš znati koji su sve objekti aktivni u mom kodu i koji im je state? Jedino ako parsuješ sve skripte sa trenutne stranice pa ti super kompjuter izvrti sve moguće flow kombinacije iz koda da bi na kraju dobio neki true/false (simplifikovano). Da ni ne računamo da (vjerovatno) za većinu bi mor’o posjedovati autentikaciju u radu sa AJAX-om na mojoj stranici (i.e. AJAX request sa CSRF-om čiji rezultat se koristi u ostatku JS koda na stranici).
Nažalost, ne objašnjavaš već se uplićeš k’o pile u kučine.

Da ja odradim gradjansku dužnost dok nije otišlo predaleko:

Nemoj me hebat. xd.
Nisam samo skužio jel ti to gore još uvijek rješavaš problem exportanja tablice u excel (xd) , ili tražiš način da indirektno kažeš: “Nemam pojma o čemu se ovdje radi.”

Znam način koji je nepoznat stotinama hiljada inžinjera :smiley: …detektovat će tako što ćeš joj ti reći što imaš što nemaš. xd. Tajna ti je upravo otkrivena, hehe.

Good luck with that.

Nisam te zezao, vidi ovo:

//registracija komponenti:
normJS.modal = PerinModal;
normJS.dropdown = IvinDropdown;


//..svaka komponenta može koristiti Perin modal i Ivin dropdown...
//..jer su dohvatljive putem normJS.modal i normJS.dropdown

Može li biti jednostavnije?

Još jednu stvar želim napisati, jer mislim da nije dovoljan fokus pao na to.
Spomenuo sam u jednom momentu da nas ovaj standard vadi od toga da rujemo po mulju i dnu…pa što bi to točno značilo?

Rovanje po mulju smatram kada radimo “debilan” posao, koji u svojoj pojavci nije kreativnost koja izvire iz nas … nego je više nalik “nužnom zlu” koji se mora odraditi.

Primjetit ćemo da kada god imamo tako neki “debilan” posao, poput recimo popisivanja requred klasa …da se pojavi neka ideja koja to automatizira. U PHP su se pojavile autoloading klase…u editorima su se pojavile opcije kada napišeš neku klasu, da je editor na svojoj razini prepozna i includa u zaglavlje…itd.

Hoću reći, kada je nešto “debilno” …onda se uglavnom može i automatizirati.

I sada, ako pogledamo jedan dan developera kako slaže web stranicu …mogli bi zaključiti:

Kreiranje ideje same stranice…ono što će stranica raditi…njena funkcija i svrha …to je zapravo kreativni posao koji stvara naš um.
Sve ostalo je “debilno”…i sigurno se svatko od vas našao u tome da ponavlja svakodnevno neke iste patterne kodiranja nebi li postigao željenu funkcionalnost. (To je već DRY kršenje, mada se samo isti patterni u pristupu ponavljaju…ne nužno i doslovni code)

Osvrnut ću se sada na onaj post, kada sam spomenuo da developer želi ugraditi neki button u komponentu koja prikazuje tablicu. Taj button recimo poziva funkciju da se eksporta tablicu u excel, ali može služiti što god…poanta je da developer želi ugraditi gumb koji ima neku korisnu funkciju za korisnika.
Stoga, kreativni dio posla je sljedeći:

“Ja želim omogućiti svojim korisnicima da eksportaju ovu tablicu u excel. Mislim da im je to korisno.”

Debilni dio posla je:

“Hmm…da bi ugradio taj gumb, moram zaviriti u HTML code ove tablice…moram razmisliti gdje ću staviti HTML code od buttona, moram vidjeti koji je uopće HTML code od buttona. Bemu kako ga uvijek zaboravim napamet. Hmm, moram prilagoditi stil buttona da se uklopi u dizajn ove komponente koja prikazuje tablicu. Hmm, gdje mi je css na kojem ću mijenjati ovu komponentu…kako mu pristupiti. Hoće li se što raspasti kada počnem prčkati po komponenti koja je vrag zna kako posložena ispod haube…itd. .itd.”

Sve je to poprilično “debilni” dio. Jedina kreativnost je bila da smo htjeli omogućiti korisniku export tablice …sve ostalo je nužno zlo koje se mora odraditi…

E sad, da imamo standard…koji kaže:

“svaka komponenta koja je toolBox-friendly mora imati predviđen toolBox za smještaj funkcija koje će biti ponuđene korisniku. Zatim mora imati standariziranu metodu za ugradnju buttona u taj user interface, neka je to: komponenta.toolBox.Add(…)

I što se dešava, cijeli gornji naš debilni posao, mijenjamo sa jednim jednostavnim pozivom, koji glasi:

komponenta.toolBox.Add({
   name:“Export table”, 
   description:“You can export and save this table, with just one click.”, 
   icon:‘file excel’, 
   funkc:exportToExcel(data)
});

…i svi naši problemi su rješeni.

Toliko smo stvar pojednostanili…a kako je to zapravo moguće? Od kuda se stvorila tolika dobit točno?

Pa zapravo ovako, taj “debilni” posao koji smo izbjegli, njega je odradio već netko umjesto nas. Umjesto da svaki puta kada neka osoba ugrađuje funkciju prema useru na toj komponenti i rješava taj isti “debilni” posao, taj zadatak smo pomakli na leđa tvorcu komponente.

I sada imamo da je taj zadatak obavljen samo jedan jedini put za sve. Stoga, to je opet DRY pristup …ali kako na osobnoj razini, tako je to DRY i na razini zajednice. Umjesto da svi ponavljamo iste stvari svako za sebe…pomakli smo taj posao u jednu točku na tvorca komponente. Tamo je to odrađeno samo jednom i moći će se dalje reciklirati koliko god puta treba.

Vidi, suštinski nam se pristupi razlikuju. Ono što ti smatraš debilanom, ja smatram izuzetnim dostignućem koje je neko postig’o.
Ali da se i tog ma’nem, mogu ti samo predložiti dvije stvari (koje su u principu jedna):

  1. Ako smatraš nevidjenim napretkom za Open Source zajednicu, digni repo na Github i zakotrljaj stvar
  2. Ako smatraš da je to New Big Thing koji bi ti donio finansijsku dobit, javi pošto je

Pošteno, drago mi je da se komunikacija vraća na ugodniji ton. Jer u zadnjim postovima sam te počeo doživljavati vrlo vrlo ciničnog, s neprikladnim komentarima s visoka. Što mi nikako nije sjelo, pošto si pitanjima pokazao da ne razumiješ o čemu pričam.
(Što je ok što ne razumiješ, ne krivim tu tebe…nego moju (ne)sposobnost tumačenja)

Ali nikako mi nije fora vidjeti da netko pametuje o nečemu što ne razumije o čem je riječ.

Uglavnom, i ja sam onda korigirao svoj ton na cinizam…pa vidim da nas je to odvelo u krivom smjeru. Što god, ja sam spreman na normalnu diskusiju, ako vidim da je i druga strana takva.
Jer iz ove teme se nebi trebalo očitovati da sam ja išao vrijeđati nečije stavove ili razmišljanja…pa nema razloga da se tema tako doživljava.

A sada, back ON TOPIC:

Vrijedna stvar je da spomenuti standard nebi nikome oduzeo mogućnosti trenutnih dostignuća…tko bi htio, mogao bi sve raditi na klasični način unutar toga standarda. Baš se ništa za njega nebi promjenilo…nebi tada čak niti trebao biti motiviran da se drži tog standarda…kao što sada netko nije motiviran da se prebaci na neki xy framework.

Ova tema je zapravo uvod tome zakotrljavanju. A hoće li biti ili neće nevidjenog napretka…ne računam na to. Kao što rekoh…radi bolje vlastite organizacije sam se odlučio na to da dobro standariziram neke stvari koje se učestalo ponavljaju. Nije mi primarno nametati drugima i očekivati bog zna što iz toga.

A kako sam to mislio započeti…pa ništa spektakularno zapravo. Otvorit ću paralelno temu na forumu, koja neće biti namjenjena ovakvoj diskusiji kao što je ova tema…nego će biti namjenjena diskusiji da ljudi prokomentiraju što i kako bi trebalo standarizirati. U suštini, ja ću postavljati svoje viđenje standarada, komponentu po komponentu…drugi će kritizirati.
Kritike su tu poželjne…i nadam se da će ih biti. Tako ćemo zapravo zajedno oblikovati standarde…a svi zajedno i ponešto naučiti. Jer ja naravno nisam sveznajući…pa će me valjda ljudi upozoriti da neke mogućnosti već postoje koje nije potrebno onda uključivati u te standarde.

Naravno, da bi ljudi komentirali…moraju imati neku ideju što radim. Zato je tu ova tema.
Ali mislim da će se stvari dodatno iskristalizirati kroz sam proces stvaranja standarada.

A u nekoj kasnijoj fazi ću napraviti platformu gdje može bilo tko testirati svoju komponentu da li zadovoljava standarde. Tako će ta platforma biti ruka vodilja koja će developeru reći:

“Gle, da bi tvoja kopmonenta poštivala taj i taj standard, mora imati tu i tu metodu”

…moći će upozoriti znači developera da li ima metode, da li metode dobro reagiraju na predviđene parametre koje mora primiti itd.

Također, i standard će se razvijati…pa će biti verzioniran. Pri tome će ta platforma reći developeru koju verziju standarda njegova komponenta trenutno ispunjava.

Nadalje, ta platforma će moći imati onda i spremljene te komponente koje se tamo testiraju…pa će biti i share point za iste.
Developer koji bi došao na tu stranicu uzeti neku komponentu, će moći klikanjem birati između različitih dropdown-ova, modala-a …i svih ostalih. Hoću reći, moći će poklikati neki set komponenti i vidjeti live na platformi kako one zajedno funkcioniraju kao cjelina.

Nakon što se odluči na neki set komponenti, on ih doduše ni netreba instalirati sa te platforme, nego mu platforma samo iz njegovog odabira generira dependency koji mu je potreban da sve instalira kroz npm.

Znači, ta platforma je jedan bitni dio normJS-a, ali ona će tek doći ako uvidim da mogu razvijati priču, a da se ne zapetljam…i da se to ne zakomplicira u krivom smjeru. Što se naravno može desiti, ali želim se sudariti s tim vlastitom kožom da shvatim onda “teži” način. (Rekao bi na bolji način)

U slučaju da priča uspije, onda bi jednog dana postavio forum i automatski sistem putem kojega bi zajednica predlagala standarde i demokratski glasala za njih. Drugi dio zajednice bi isporučivao komponente prema standardima koji su demokratski izglasani.
To je već utopija…kada bi se na toj razini sustav automatizirao, ali to je ono što najdalje vidim iz ove točke da bi priča mogla postati. Dalje je nebo granica. U toj točci je stvoren jedan sasvim novi web…i ja nebi nikada bio ponosniji na ovom svijetu. :slight_smile:
Ali to su snovi…snovi služe da ih sanjamo…a oće li se ostvariti…nek bude kako bude.

Za tebe vidim da me poprilično podcjenjuješ, ali nije se desilo jednom kada bi svi rekli da je nešto ne moguće…a ja to uspješno napravim. :stuck_out_tongue: …i zato imam povjerenje u sebe…unatoč ne pronalasku istomišljenika.
Ovdje imam čak jednog djelomičnog, iznenađujuće,haha.

Može li konkretan/tačan citat mog posta koji te naveo na ovakav zaključak?
Možda si pobrk’o moje neslaganje u vezi nemogućnosti realizacije krucijalnih pitanja same ideje (i pitanja na koja nisam dobio odgovor) sa tim?

Da ti onda prevedem značenje slike koju si gore okačio:

Dunning-Krugerov efekt je sklonost prema kojoj ljudi ispodprosječne inteligencije smatraju da su inteligentniji nego što to jesu u stvarnosti i istodobno podcjenjuju inteligenciju ljudi koji im stoje nasuprot.

Ovu ljudsku sklonost pogrešnog procjenjivanja vlastite inteligencije prvi su opisali David Dunning i Justin Kruger 1999. po kojima je dobila svoje ime.

Daljnjim istraživanjem otkriveno je da u pogrešnoj procjeni vlastite inteligencije ulogu ima i vanjski faktor tako da muškarci smatraju kako u prosjeku imaju za 5 bodova višu inteligenciju, dok žene misle da imaju 5 bodova imaju nižu inteligenciju od stvarne.

Da te sada steram u lepi k, zato jer em vrijeđaš…kasnije si em nesvjestan da uopće vrijeđaš …imao bi potpuno pravo da to napravim.
Ali ne tjeram te ovim postom u lepi k…nego ti na lijepi način pokušavam reći da si sveo diskusiju na razinu “čiji je veći”. Skroz nepotrebno…

Evo ti još jedan primjer gdje ja to vidim kao omaložavanje sugovornika:

Najironičnije je od svega da ja jako dobro znam što želim i do detalja sam razradio ideju u glavi…a ti po pitanjima odaješ da ne kužiš ni generalno koncept i onda pametuješ s visoka. U tome vidim problem za neku ugodnu i konstruktivnu diskusiju.

Ti ako ne razumiješ kol’ko tehničke terminologije nedostaje u tvojim postovima k’o i poznavanja (postojeće) materije na nivou koncepta a zadati sebi ambiciju da pokupiš™ svaki object state sa svih web app-ova ne znam kako drugačije nazvati nego collect underpants projekt.
Ni 5 tema na forumu ne mogu pomoći tome. Ali github repo sa diskusijom kroz Issues tab bi bio dobar korak naprijed.
Kroz šumu ameba i lavova (lavove sam sad izmislio) u postovima, vrlo malo je toga što mi nudi billo kakav saznajni proces o samoj ideji.

Još jednom:

Da bi me k’o developera zainteresov’o, ti moraš meni (i ostalima) objasniti

kako si ovo uopšte zamislio da bi se uopšte znalo koliko ozbiljnosti ima u tvom naumu.

Jer,

(i slične stvari kojih je tema prepuna) ne odaje utisak nekog ko se ikad bavio ovim poslom.

Ali obojica smo svjesni šta je i na koji način najbolji utrošak vlastitog vremena, zar ne?

Izvinjenje za uvrede (ako su shvaćene k’o uvrede a ne otkrovenje vlastitih grešaka), nisu bile na ličnom već profesionalnom nivou diskusije.

Sorry, ali ovakvo izvinjavanje ne shvaćam ko izvinjavanje. To ti je ono na razini: “Sorry, kriv sam, ali…”
S tim ali, je samo zamaskirano izvinjavanje u novi još podmukliji napad.

Cijeli zadnji post ti je opet izvlačenje riječi iz konteksta i pokušavanje omaložavanja mene kao sugovornika. Super …to je tvoje mišljenje…ali prema tome onda i ja smatram da si ti debil (ili ti ispodprosječne inteligencije). Jer vidim naprosto da si zaglavio unutar jednostavnih ograničenja i umjesto da isplivaš iz njih…da konačno shvatiš jednostavne koncepte bez da kompliciraš…ti pokušavaš to rješiti na način da diskretiziraš mene kao sugovornika, pa ćeš onda kakti u svojim očima izgledati pametniji…tj. da si u pravu.

Nije ti to prvi puta da radiš…to je pattern koji radiš još od tamo kada nisi mogao razumjeti da se code refraktorira iz inicijalne potrebe da se održi DRY struktura. I onda kada više nemaš što reći…nabacaš nepovezan 101 stručni termin nebi li tako izgledao pametnije. A ne kužiš time da odmagliš od inicijalne teme…prestaneš pričati skroz o temi…nego se random razbacuješ stručnim terminima. To je tvoja maska…moguće i nesvjesna.

Nadodat ću, ti zaista jesi načitana biblija struke…pa nije čudno da ti je takav obrambeni mehanizam. Ali daj brate…pored čitanja, počni malo i razmišljat. Moj topli savjet tebi…u istom revijalnom tonu na koji se ti obraćaš meni.

Glavni sam u web odjelu IT firme koja radi jedno 5 milijona kn dobiti godišnje. I to sam postao svega tri mjeseca nakon zaposlenja…uz činjenicu da sam prije toga 10g radio isključivo samostalno od kuće…i da mi je to prvi official job …mislim da je progress čisto ok.

Uz to, još sam se morao adaptirati na C# backend tehnologiju…a došao sam sa PHP-a.

Da, nikada se nisam bavio ovim poslom…a tvoja moć zapažanja je vrhunska. Svaka čast.

Doduše, da nebi bili zamaskirani bitni detalji …taj web odjel je tek u nastanku. Ali prije mene ih je dosta prošlo kroz firmu…i otišlo jer ih ostatak IT sektora, direktori, nisu zadržali. Samnom su super zadovoljni.

Ni ja niti bilo ko drugi na temi ti ne brani da napraviš šta želiš.
Ako moja pitanja u vezi teme shvataš drugačije od diskusije u vezi sa samim projektom/idejom (jer nemaš odgovor na njih?) imaš dva načina: ili da savladaš materiju ili ne savladaš.
U logici se zove princip isključenja trećeg.
Ja stvarno nemam problema ni sa jednim tvojim izborom od ta dva.

Za posljednji post, stvarno :hail:

Edit. Al’ kad se već q*čimo, ja ljetos radio za čovjeka koji je svoj sajt projekt prod’o za $16m
Tako da pričom o lovi mene ne možeš puno impresionirati, već jedino znanjem.

Vidiš, ja mislim da si ti taj koji ne uspjevaš ukapirati odgovore, a ne da ja nemam odgovore. Ja pri tome ne krećem vrijeđati tebe, ali si ti daješ za pravo vrijeđati mene pod opaskom da je to pošteno upozoriti mene da sam ispodprosječno inteligentan?

Pri tome imaš i krcmara koji ti pokušava istu stvar objasniti…ali ne, ti si jedini pametan koji niš ne kužiš. Fakat si biserčina…

Ma što vam je momci, vi ste obojica dva velika stručnjaka, :slight_smile:
nije na vašem nivou takva diskusija. :hushed:
Ajmo, predlažem


:handshake: :o:

Lurk-ovaću sa minimumom javljanja. Ja iscrpio načine da saznam više.

Gle, osobno sam mu ponudio nekoliko postova iznad ruku mira i da nastavimo temu u konstruktivnom tonu.
Čisto sam time apelirao da ga upozorim da je cijelu temu poprilično podcjenjivački nastrojen prema meni…i da kvari diskusiju.

No pazi molim te, on na to pita mene:

…apelirajući da mu pokažem gdje je to bio podcjenjivački.
A post neposredno prije je okačio sliku da sam kao ispodprosječno inteligentan, haha.

I onda kasnije par postova unutar kvazi isprike piše:

Ma ne smeta mene to, hehe…od hvale se ne živi…samo kada vidim da se netko pravi toliko grbav da je istovremeno 100% podcjenjivački nastrojen i istovremeno mu još moraš pojašnjavati da je podcjenjivački nastrojen…onda znaš s kime imaš posla. A to je da mene koristi da liječi svoje komplekse.
Bez brige, nisam to osjetio samo u ovoj temi.

I znam ja dobro da je on pun znanja i načitan i sve to…ali svaki puta kada mu rasprava ne krene po volji, brzo prebacuje lopticu na liječenje kompleksa.