Nova predikcija Anđela - Doorsi

Znači dobro su Anđeli rekli 5 godina, hehe

samo su okasnili skoro 10-ak hehe

Kako znaš da su kopirani? Da li postoji neki event koji se okine sa servera kad ta akcija bude gotova? Šta u tom slučaju koristiš za notificirati aplikaciju da je akcija izvršena? Ne zanima me kako kopirati 100GB podataka, zanima me samo kako aplikacija dobije povratnu informaciju da je 100GB kopirano ispod jedne sekunde.

Kad se već poistovječuješ sa Frame startupom, jel možeš vrtiti Adobe Photoshop na Doorsima?
Jel možeš pokrenuti bilo koji program, a da ga ti nisi napisao? Naravno da ne možeš. Nisi ni blizu tome, ni idejom ni realizacijom :wink:
Al nemoj se hvatati za ovaj dio, rađe odgovori na prethodna pitanja.

Ja znam jer sam napravio sustav.

A korisnik zna tako što može instantno nakon akcije kopiranja uređivati original ili kopiju neovisno jedno od drugoga.
To je uostalom target koji se želi ovdje postići kopiranjem, a što se dešava u pozadini da se to omogući je korisniku manje bitno.

On želi:

  • kopirati i uređivati neovisno kopiju od originala
  • ili kopirati i proslijediti nekome drugom korisniku tu kopiju, kako taj drugi korisnik mijenjanjem kopije nebi uništio njegov original.

Ako je to dvoje postignuto, korisnik se može u potpunosti ponašati kao da je original kopiran. A u kojem obliku ta fizička kopija postoji ili nepostoji na serveru, njemu to nije bitno.

Pitanje. U kojem dijelu taj projekt prekida suradnju sa serverom na kojem se vrti, i biva nešto novo?
Pretpostavljam da u pozadini ima web server, a kodiranje je u layer 3 ili 4, nikako 1 ili 2. U kojem dijelu je aplikacija (os) samostalna, mislim za komuniciranje sa hardverom (backend). Pretpstavljam da prema korisniku ovisi o pregledniku i to je ono što diktira pravilno UX oblikovanje?

Daj malo detalja… Ne tajni, ili kodova, nego logiku i ono po čemu je posebna…

Nisam siguran da razumijem pitanja, no pokušat ću odgovoriti.
A što se tiče detalja, ima toga puno da bi o svem pričao… ako bude konkretno pitanje (koje razumijem xd) odgovorit ću.

Pa ja iskreno nigdje ne tvrdim da je ova ideja posebna, naprotiv…velim da sigurno i drugi idu u ovom smjeru, jer ovo je na neki način neizbježni način korištenja računala u budućnosti… selidba u cloud, gdje će kućne mašine biti samo uređaji sa komunikaciju sa tim cloudom. Prednosti su mnogobrojne …

  • veća sigurnost podataka
  • veća dostupnost podataka (Od bilo kuda, bilo kada …sa bilo čijeg računala radimo kao da je naše. Isto kao i sa mobitela…)

Što se tiče Doorsa, tek sam otvorio vrata u tom smjeru…da ne bude zabune…da pomisliš da se odmah gore može instalirati Adobe, ko što ovom ispred tebe padoše na pamet…

Što se tiče memorije i filesystema koji sam spomenuo…to je bitan dio. Zato jer onaj tko će raditi aplikacije za Doorse, kreće od točke gdje mu je ulazni parametar neki podatak iz memorije filesystema. ( što znači da je user otvorio neki file iz svog filesystema koji je tako pokrenuo njegovu aplikaciju)

Što će reći da developer aplikacije radi samo alat za obradu i kreiranje tog memorijskog podatka. Što će reći da čitavu aplikaciju možeš napraviti samo u HTML/CSS/JS+ bez da si taknuo u bazu i serverski jezik.

JS+ ima plus, zato jer on ima sve što i JS + ono što podržava Doors kompajler. Znači to je obogaćen Javascript putem kojega se može više toga definirati nego sa običnim JS-om. Neke od tih instrukcija se prevode i u serverski jezik …o čemu dev aplikacije ne morati niti biti upoznat. Tako npr. postoje novi tipovi varijabli: Novi tipovi varijabli - kako vam se čine i kako bi ih nazvali … koji da bi se ostvarili nastaju zajedničkim radom servera + clienta, a dev aplikacije treba kucati samo novu deklaraciju varijable…tipa: “uservar x” i dobije puno pozadinske logike na gotovo.
Ta JS+ sintaksa će se obogaćivati putem po potrebi … glavno je da sada postoji točka kompajliranja koja dopušta rast i razvoj te sintakse…

Što se time dobiva?
Pa dobiva se da osoba sa malo znanja (samo HTML/CSS/JS) može praviti bogatu aplikaciju…koja već ima u sebi ugrađene usere, inbox, povezivanje usera u timove…itd…itd… sve to svaka nova Doors aplikacija dobiva na gotovo, kao što svaka nova windows aplikacija dobiva windows okruženje na gotovo. Ne moraš tipa kretati iz DOS-a i graditi cijelo UI sučelje itd…itd…za svaku sitnu “pizdariju” od aplikacije, nego se zato služiš windowsima kao startnom točkom. Tako ovdje krećeš od startne točke Doors, koji već u sebi nudi sve ono što treba svaka moderna web aplikacija.

Ja osobno to vidim drastičnim boost-om u produktivnosti jer sve te frame stvari će se uvijek rješavati samo na jednom mjestu (Doorsi) i sve aplikacije koje će se publishirati preko Doorsa će automatski dobivati nadogradnje tog frame-a …ko što i windows aplikacije uživaju svaku novu verziju windowsa. (Oke, uživaju dok god je backward compatible, hehe …ako nije, gubi se uživancija xd)

I to je strogi DRY koncept, da se iste stvari ne ponavljaju bespotrebno više puta…ta neće svatko tko pravi novu aplikaciju praviti svoje windowse. Na webu se to upravo dešava …isti/sličan frame aplikacije nastaje gotovo sa svakom novom modernijom web aplikacijom. Twiter, facebook, Ovaj forum …svi oni trebaju iste stvari: usere, inbox, povezivanje usere u timove…itd…itd… ima toga hrpetinu stvarno.

Evo koliko malo codea je potrebno da se doda bazična aplikacija, u ovom slučaju texteditor (obična textarea) koja se otvara ako korisnik klikne dblClick na file.txt i koja može mijenjati taj file u filesystemu:

var test_textApp = function(){
	
	var instance = this;
    //config section
	instance.title='Texteditor'; 
    ....
    ....
 
	/*
	parametri koje app nasljedi nakon što ju Doors inicijalizira...
		instance.$content;
		instance.$get('element_aid')
            ....
            ....
	*/

	return instance;
}


test_textApp.prototype.onOpen=function(fileContent){
	
	var instance=this;
	var html = "<textarea aid='text'  style='height:100%;width:100%'></textarea>";

	deffer(function(){

		var textarea = instance.$get('text');
		textarea.value = fileContent;

	});

	var send = {html:html};
	return send;

}

test_textApp.prototype.onSave(){

	var instance=this;
	return instance.$get('text').value;

}

U suštini samo se definira onOpen() metoda koja prima sadržaj iz file-a kojeg korisnik otvara …i ta metoda vraća HTML/JS/CSS koji oblikuju prozor u kojem se aplikacija prikazuje korisniku. Doorsi brinu o tom prozoru i vanjskom okruženju tog prozora …a sadržaj prozora oblikuje app sa onim HTML/CSS/JS koji se kreiraju na onOpen().

App još samo mora deklarirati metodu onSave() koja se trigira onog momenta kada korisnik odluči spremiti ono što je radio sa aplikacijom. Tada taj content koji vraća onSave() metoda opet oblikuje file koji korisnik samostalno odlučuje koji će biti. Aplikaciju se to ne tiče.
Ono što će app izmjenjivati sa fileSystemom će biti puno bogatije od ovako raw sadržaja… no i ovo je varijanta…

Ovo je najsuroviji prikaz … što je aplikaciji potrebno da se uključi u Doors sustav. …a target je upravo to da se sa jako malo code-a kreće iz jedne već vrlo visoke točke pred publishiranje aplikacije.

Zamisli samo da hoćeš napraviti ovakav primitivni editor…a da zbog toga moraš cijeli sistem dići iz nule… i sve konfigurirati. Ovdje taj system unaprijed postoji i on je poletna točka za početak razvoja nove aplikacije.

Tipa možeš imati ideju za neku jednostavnu aplikaciju i prodajni potencijal iste…a može te skuplje vremenski koštati integracija kartičnog plaćanja i payPal-a nego izrada same aplikacije. A sa Doorsima dobiješ mogućnost naplate svoje aplikacije na gotovo.

Tako gore gdje vidiš da aplikacija definira title parametar u sekciji konfiguracije …tamo će developer samo kroz parametre birati koliko tipa aplikacija košta konačnog usera, koji su načini trial verzije prodaje aplikacije itd… a o distribuciji i izvedbi toga brine sustav Doors i profit od prodaje te aplikacije prosljeđuje na račun autora aplikacije. Znači, preskaču se ogromni koraci … pogotovo za nekoga tko niti nebi znao to sve samostalno izvesti. …a sposoban je da kuca HTML/CSS/JS i da kreira nešto pametno i korisno. (Naravno, Doors može ako želi definirati proviziju od svega što se proda preko njega.)

Heto…nadam se da sam bolje dočarao koncept… a što se tiče tvojih pitanja u nastavku…

Nisam najbolje razumio. Doors u svojoj biti jeste isto što i svaka web aplikacija, ali podržava pokretanje novih aplikacija unutar sebe.

Također postoje unutar njega predkompajleri i JS-a i PHP-a …tako da su mogućnosti razne što će se od toga napraviti. Cilj je svesti sintaksu php+js na univerzalnu sintaksu JS+ koju kuca developer … koji jednog dana neće niti znati koja čudesa se dešavaju u pozadini, ko što niti ja ne znam koja čudesa napravi browser od Javascripta koji ja kucam za njega…i kao što nitko od nas više ne zna kako se jezici koje mi kucamo prevode skroz do assemblera i tih najnižih razina određenih procesorskih jezika…
Sve je to evolucija programskih jezika na djelu… čim prolaze novi sloj kompajliranja.

Server se vrti na php-u (zasad, ne znači da će uvijek biti tako) … i trenutno je ograničen mogućnostima PHP jezika.

…ako sam išta uspio odgovoriti od tvojih pitanja, jer su mi malo mutna. No dočarao sam gore koncept i problematika koja se rješava, pa su možda sada stvari jasnije. :wink:

Opet, ni na najednostavnije tehničko, arhitekturalno pitanje nisi dao odgovor, već mi pričaš o tome šta korisnik želi? :man_facepalming:

Uglavnom, to šta tebi request vrati success ne znači da se nešto stvarno i dogodilo. Malo bolje to testiraj pa ćeš vidjeti. Ovo o čemu ti pričaš je moguće jedino na način da sve držiš uvijek na jednom mjestu, i samo dodaš symlink na novu putanju. I eto 100GB “kopirano” na drugo mjesto u manje od sekunde :joy:

Da li možeš kopirati 100GB na moj server koji vrti Doorse za manje od sekunde?

Komplicirano i nepotrebno.

Tu dolazimo do potreba rest-api servisa, mikroservisa, sigurnosti, baza podataka itd.

Olako se shvacaju problemi i daju rjesenja.

Imam zahtjeve za db cluster od 5 servera i 3 web servera, i svaki server od 32 cores i 512 GB rama.

Kako cu to na dorsima imati?

Ovo šta on radi je klasični monolit, skalirati možeš samo vertikalno dok se sve ne raspadne u 3 pm.

Automatski testovi se vrte jedno 7 minuta… i na tisuće kombinacija se tada testira …

Velim ti što se dogodilo…u sistemu nastaju dvije nezavisne kopije i user može nakon toga svaku od njih nezavisno uređivati.

U tom slučaju to nebi bile nezavisne kopije, nego bi uređivanjem jedne kopije mijenjao i drugu.
Ja niti ne tvrdim da fizički duplam memoriju, ali potižem ono što se traži. A to je da nakon kopiranja postoji kopija identična originalu i da se svaki od njih može nezavisno uređivati od drugoga. Time to nazivam kopijom, a što se točno dešava sa memorijom je igra.

Kada kazem da nastaju dvije nezavisne kopije unutar sistema… to znači da su unutar sistema. Svako napuštanje kopije sistema je moguće, no onda sam ograničen ili downloadom ili mogućnosti brzine tvoga servera da primi kopiju.
U svakom slučaju, kako korisnik manipulira filesystemom koji za njega postoji samo unutar Doorsa, tako on niti ne može kopiju slati na tvoj server prije nego ju downloada. Što za njega znači da se svaka kopija unutar Doorsa stvarno ponaša kao kopija… no isto tako to ne znači da on može birati gdje će te kopije osvanuti. (Tipa na tvom serveru). Takvo kopiranje ga onda ne štiti od toga što će biti ako grom zvekne u Doors server… jer sve te kopije su dostupne isključivo na serveru. No to kopiranje i ne predstavlja kopiranje u svrhu backupiranja podataka i bijega od mogućeg groma?.. jer čemu za to backup na istom serveru?

No što se tiče backupiranja podataka u svrhu zaštite od “groma”… Doorsi o tome samotalno brinu i prave fizički odvojen i zaštićen backup. Nije na useru da o tome razmišlja. Takav backup se istina ne odvija ispod sekunde (odvija se normalnim brzinama)… ali sasvim i nepotrebno, jer u niti jednom momentu user ne čeka taj backup da se kreira. To ide po automatizmu u pozadini.

A ono dok user manipulira svojim podacima i dok nešto kopira… to ima instant na raspolaganju nezavisne kopije. Dvije…ili koliko god ih napravi…i bez obzira ako će kopirati i 1000GB :slight_smile:

Znači ako sam dobro shavtio, u tom tvom file manageru ako uploadam jednu sliku, pa ju zatim kopiram, I dalje imam jednu sliku? Ili ima dvije slike? Ako imam jednu, onda ustvari nisam ništa kopirao. Ako imam dvije, a zauzeće memorije je ostalo isto i nakon kopiranja, onda opet ništa nisam kopirao.

Jel verziranje, nesto kao git?

A što je sa potencijalom? :slight_smile:
HINT: Svemir je potencijal svih mogućnosti, što ne znače da su sve ostvarene ovdje i sada.

Neznam po kojim ti kriterijima zaključuješ dali kopija postoji ili ne, ali ja ću ti ponoviti još jednom svoj kriterij koji kaže:

Nakon kopiranja slike, user može pristupiti svakoj od slika (originalu A i kopiji B)…te ako uredi sliku A u nekom image editoru (koja je original od B) B se neće promjeniti od onoga kakva je bila nakon kopiranja.
A ako uredi sliku B (koja je kopija od A) …tada se A neće promjeniti od onoga kakva je bila ranije.

Tvoja pretpostavka koja leži u tome da je nešto kopirano samo ako se poduplala memorija, dolazi samo iz toga što ne vidiš način da nešto kopiraš, a da ne poduplaš memoriju.
No uvjet kopijama je:
1. A je identičan kao B (nakon kopiranja)
2. A je nezavisan od B i obratno

Tvoj uvjet što očekuješ da se memorija mora poduplati da bi prihvatio da je nešto kopirano…uopće nije nužan uvjet da bi ostvario gornje uvjete za ponašanje kopija A i B.

Znači A i B postoje nezavisno i korisnik može svakoj od njih nezavisno pristupiti od one druge.
Hoćeš li ti to zvati kopijama ili ne (samo zato što ne razumjiješ kako sam to postigao na razini memorijskih sektora) …neće utjecati na ponašanje tih kopija.

Ja ti objašnjavam kako se sustav ponaša, a ti to zovi kako ti je drago.
Gumbić je svakako nazvan “Copy” i za konačnog usera neće biti nikakve razlike u procesu kopiranja…osim toga što će moći kopirati 1000+GB ispod jedne sekunde. Hoće li to korisnici prihvatiti zvati kopiranjem ili ne … ja vjerujem da hoće. :slight_smile:

Možda bi se mogle povući neke paralele.
…btw…stvar je poprilično banalna i jednostavna…ali eto, namjerno malo mudrujem da vidim tko će se prvi sjetiti. :slight_smile:

Dobre ideje su inače uvijek jednostavne…a ovo je prosto ko pasulj. :slight_smile:

A sto je sa microservisima ili distribuiranim aplikacijama ili paralelnim programiranjem?

Ovo sto @bozoou hoce prikazat je za banalne stvari. Postoje sustavi za verzioniranje dokumenata i otvaraju i uredjuju se preko weba.

Ako netko ima potrebe da mu word ili excel dokument budu vise od 100 mb, onda nesto krivo radi. Autocad verzija postoji za web, a cini mi se da ima cad u browseru.

Za ozbiljne sustave nije, gdje je 500 microservisa gdje se sve odvija u realnom vremenu, sustav distribuiran, gdje je potrebno horizontalno skaliranje itd…

A to si iščitao iz čega?
Pa netko možda želi kopirati galeriju slika od 100MB … i želi da onome kome pošalje kopiju…da taj smije raditi štogod s kopijom a da ne uništi original.

Nigdje se ne spominju single fileovi od 100MB ili 100GB…

zato postoji verzioniranje dokumenata.

kad promijeniš dokument, piše tko je mijenjao i kad i dostupna ti je bilo koja verzija dokumenta od početka.

Ne vidim smisla zašto bi netko radio na kopiji.

kako češ spojiti dva dokumenta od različitih usera?

verzioniranje dokumenata radi na isti princip kao git, smao je očito drukčiji algoritam.

Verzioniranje ima jednu primjenu, kopiranje drugu.
Kopiraš npr film/video i nekom ga daješ. Taj će ili editirati klip ili neće … tvoj original ostaje čitav i netaknut.
Kopirat možeš i npr hrpu nekakvih report izvještaja i prosljeđuješ ih tipa šefu. On će možda pola tih izvještaja (tipa .pdf-ova) sačuvati, a pola će brisati jer mu netrebaju). Ti opet želiš da je tvoj original folder sa svim izvještajima netaknut bez obzira što on brisao ili ne…

Zašto ti moram ovakve gluposti objašnjavati? :confused:

Ako misliš da je verzioniranje alternativa kopiranju… daj apel mikrosoftovcima i jabukovcima da izbace copy opciju i da bude samo verzioniranje…

Da i? Imas platformu dms, i prvi dokument je original, osoba A napravi promjene, to je novi dokument, original ostaje. Osoba B napravi promjene na dokumentu od osobe A, to je novi dokument. Dokument od osobe A mozes obrisati, original dokument ostaje kao i dokument od osobe B. Verzioniranje treba da se vide sve promhene, nadalje tu su prava pristupa itd.
Original dokument je zakljucan, a iz njega nastaju kopije. I u svakoj verziji se prati tko je sto mijenjao, kad i sto je mijenjano. A tu je i pretrazivanje.

Kopiranje je za po doma, u velikim sustavima iskljucivo erp, dms i ostalo sto treba.

A drugo reporti idu direktno iz erp-a, i podaci su obicno prekalkulirani. Ili iz sumarnih tablica koje se automatski pune/brisu ovisno o akcijama korisnika, a reporti su sastavni dio erp-a koji obicno ima i dashboard. I opet sa pravima pristupa, tako da pojedine dijelive app-a, vide pojedini korisnici, odnosno oni koji moraju.