Programiranje

to 'odmah vidis source code' danas je malo uvrnuto, kad ti JS prodje kroz webpack, minifikatore, obfuskatore dobijes nesto nalik na ovo
vidjao sam i kriptovano, ali to se lako procita i vidi sta radi, kad se razumes u materiju :P
kad dobijes sekvencu binarnog koda koji ide u JiT, malo teze... da ne duzimo dalje,
cela poenta ove tehnologije je da se premesti heavy lifting na klijenta, sa servera,
sto, po meni nije dobra ideja, jer sve staviti da se izvrsava iz browsera, a da pri tom
ne znas sta ce se izvrsavati, nije dobra ideja. Rekoh, sa ovim Windows bi postao
crna rupa, a ne bi dobro prosao ni jedan operativni sistem...
Pogledaj samo na sta sve treba da brine browser kako bi obezbedio bezbednost,
bas na njihovoj stranici, i za sta jos nemaju resenja. A to je samo pretpostavka,
jer mogucnosti da se nadju rupe su ogromne...
 
Znas kako, ovaj covek misli kao ja. Prouci sta kaze da sad ne ulazimo zasto je webassembly bad idea ;
https://www.forcepoint.com/fr/blog/x-labs/webassembly-potentials-and-pitfalls
Ne osporavam, ovo tek treba da se dokaze da ce da radi.
Ali ima i druga strana medalje. Kao sto neko moze da injectuje wasm kod moze danas i da ugura i injectuje i JS kod. Ima gomila nekog software koji bas to rade - upucaju ti silan JS kod naknadno kad uloadujes stranu. Ne vidim razliku sta je tu manje ili vise opasno. OK ovako asemblirani kod najdalje sto moze da se disasemblira. Ali sta sve rade sa postojecim sistemom je zapanjujuce.
 
Ne osporavam, ovo tek treba da se dokaze da ce da radi.
Ali ima i druga strana medalje. Kao sto neko moze da injectuje wasm kod moze danas i da ugura i injectuje i JS kod. Ima gomila nekog software koji bas to rade - upucaju ti silan JS kod naknadno kad uloadujes stranu. Ne vidim razliku sta je tu manje ili vise opasno. OK ovako asemblirani kod najdalje sto moze da se disasemblira. Ali sta sve rade sa postojecim sistemom je zapanjujuce.
Sa JS, lako se otkriva, dok sa binarnim kodom malo teze... sta god da radi JS, to pretvara u *text* koji ide u interpreter. Ovo ne samo da je to
nego omogucava vise od toga, inace ne bi imalo svrhu... nece ovo nikad zaziveti, pre svega zato sto niko normalan nece omoguciti
to u browseru...
https://github.com/stevespringett/disable-webassembly
 
web je apstrakna masina, razni vm su takodje apstraktne masine. Ko ti garantuje da java byte code ili .net ili stavec sto je kompajlirano da radi u OS nije vec puno rupa. U svetu desktop aplikacija. Ovako browser postaje virtualna masina koja komunicira sa drugima. Slazem se da se baca stvar na browser/client i da je sve to vec dovoljno kompleksno. Browser raste puta broj otvorenih tabova ... resursi cao cao. Ali sve se manje prave desktop aplikacije. Web nije savrsen i ne moze bas sve na njemu, ali generalno i danas, racunam da 80-90 OS resursa ide na browser kod nekog ko ne koristi mnogo desktop aplikacije. Ako kao na telefonima sve radis u nekom WEB view, a i to je vidim neka praksa i na OS desktop aplikacijama (sve su postale webolike). Opet je isto, obrni okreni browser je medijator promene.
Ali postali su preteski.
 
web je apstrakna masina, razni vm su takodje apstraktne masine. Ko ti garantuje da java byte code ili .net ili stavec sto je kompajlirano da radi u OS nije vec puno rupa. U svetu desktop aplikacija. Ovako browser postaje virtualna masina koja komunicira sa drugima. Slazem se da se baca stvar na browser/client i da je sve to vec dovoljno kompleksno. Browser raste puta broj otvorenih tabova ... resursi cao cao. Ali sve se manje prave desktop aplikacije. Web nije savrsen i ne moze bas sve na njemu, ali generalno i danas, racunam da 80-90 OS resursa ide na browser kod nekog ko ne koristi mnogo desktop aplikacije. Ako kao na telefonima sve radis u nekom WEB view, a i to je vidim neka praksa i na OS desktop aplikacijama (sve su postale webolike). Opet je isto, obrni okreni browser je medijator promene.
Ali postali su preteski.
To sto skidas binaryije pa izvrsavas na OS je druga prica. Znas sta skidas i to je kljucna stvar zasto su Linux i macOS sigurniji od Windows-a.
E sad niko te ne sprecava bilo gde da skines malware, pa ga pokrenes na svojoj masini.
Ove je prica da sa nekog web sajta ti neko uvali malware i pokrene ga na tvojoj masini bez tvog znanja.
Bilo bi mi jako cudno da neko dozvoli da se ovo radi sa tvojom masinom bez *eksplicitne dozvole*.
 
  • Transmission and execution does not require TLS, HSTS, or any other transport layer security mechanism
ali zato te google i ne gleda ako nisi https, ladno moze da se kaze da barem sto se opsteg neta tice http je mrtav

  • Integrity checking is not possible as WASM modules are not required to be signed by their author
legit ovo jeste problem, ali opet, i taj signature mehanizam je sam po sebi problematican, kako ja mogu da verujem potpisu? to dalje ide na odrzavanje baze potpisa sa jedne strane (hakable), a sa druge nije to sistem kljuceva, pa da mi autor salje samo za mene.... uostalom kad si poslednji put proveravao md5 za neku aplikaciju koju si skinuo sa neta?

svakako neki mehanizam bi bio pozeljan, samo kakav? secure store?
 
To sto skidas binaryije pa izvrsavas na OS je druga prica. Znas sta skidas i to je kljucna stvar zasto su Linux i macOS sigurniji od Windows-a.
E sad niko te ne sprecava bilo gde da skines malware, pa ga pokrenes na svojoj masini.
Ove je prica da sa nekog web sajta ti neko uvali malware i pokrene ga na tvojoj masini bez tvog znanja.
Bilo bi mi jako cudno da neko dozvoli da se ovo radi sa tvojom masinom bez *eksplicitne dozvole*.
pa da ima i taj 'consent' mehanizam. a i to smo probali - ono windows warning - you have possibly dangerous program - do you want to continue? (execute)
 
oce da pocnemo sa anti virusom za browser? :hahaha:
Pazi ovo, lik iz zezanja napravio: https://rreverser.com/webassembly-shell-with-a-real-filesystem-access-in-a-browser/
ali zato te google i ne gleda ako nisi https, ladno moze da se kaze da barem sto se opsteg neta tice http je mrtav
https stiti samo od prisluskivanja. Ne stiti od laznih sajtova i cega sve ne. Stiti i kad sajtu istekne ili nema sertifikat, potom stiti
od mitm napada. No u ovom slucaju ne pomaze, jer na kraju krajeva ides redom po sajtovima, jedini nacin da
znas jel maliciozan ili nije je da browser uradi lookup u bazu...
Problem je sto vec ima dovoljno nacina da te hakuju sa JS, samo nam fali jos ovo :P
 
Pazi ovo, lik iz zezanja napravio: https://rreverser.com/webassembly-shell-with-a-real-filesystem-access-in-a-browser/

https stiti samo od prisluskivanja. Ne stiti od laznih sajtova i cega sve ne. Stiti i kad sajtu istekne ili nema sertifikat, potom stiti
od mitm napada. No u ovom slucaju ne pomaze, jer na kraju krajeva ides redom po sajtovima, jedini nacin da
znas jel maliciozan ili nije je da browser uradi lookup u bazu...
Problem je sto vec ima dovoljno nacina da te hakuju sa JS, samo nam fali jos ovo :P
maliciozan? sta da kazemo za google tag manager? samosvesno otvoris rupu. da moze da se od napolje ubaci bilo sta.

ovo za wasi je mega interesatno. #1 goal:

  1. Define a set of portable, modular, runtime-independent, and WebAssembly-native APIs which can be used by WebAssembly code to interact with the outside world. These APIs preserve the essential sandboxed nature of WebAssembly through a Capability-based API design.
Mada tvrde da je to za sada eksperimentalno. Ali ima dosta besposlenih ljudi koji ce da ishakuju rupe jos u ranoj fazi.

Otrcace sigurno a onda mora da se desi neki skandal i onda ce da se uozbilje. Sad treba napraviti signature za wasm kod - mehanizam gde mozes da utvrdis da li je menjan ili nije.
 
maliciozan? sta da kazemo za google tag manager? samosvesno otvoris rupu. da moze da se od napolje ubaci bilo sta.

ovo za wasi je mega interesatno. #1 goal:

  1. Define a set of portable, modular, runtime-independent, and WebAssembly-native APIs which can be used by WebAssembly code to interact with the outside world. These APIs preserve the essential sandboxed nature of WebAssembly through a Capability-based API design.
Mada tvrde da je to za sada eksperimentalno. Ali ima dosta besposlenih ljudi koji ce da ishakuju rupe jos u ranoj fazi.

Otrcace sigurno a onda mora da se desi neki skandal i onda ce da se uozbilje. Sad treba napraviti signature za wasm kod - mehanizam gde mozes da utvrdis da li je menjan ili nije
Ne znam kakve veze ima tag menadzer sa ovom pricom...
Gledaj, ovo nece nikad zaziveti... ajde, za pocetak, nadji web stranu sa testom da prikaze jel ti je web assembly enabled ili ne?
 
Mene vise interesuju emulatori masina iz 80ih :P
ja sam godinama bio na 8080/z80 i hd64180, a radio sam dosta i sa 6502, ali mnogo vise sa ovim prvim zato sto nam je bio mnogo laksi kao kontroler - hardverski. A mozda sto smo ga bolje poznavali, bio je dostupan za nabavki a i po ceni.

Ali me ne bije nostalgija za igricama jer mi je bilo mnogo zanimljvije da pravimo nesto.

Pre nesto manje od jedno 20tak godina kupim neki TI kalkulator koji je bio sazidan oko z80. Nekad davno masine na kojima smo radili kod su bile velicine sporeta :) Tada sam sanjao da imam z80 u nekoj dzepnoj varijanti.... da mogu da programiram nesto u autobusu :)

Medjutim kad je doslo do toga da imam z80 u dzepu, svet je poodmakao mnogo dalje i cela ta magija vise nije bas toliko bila magicna. A mogao si ladno da na PC poteras z80 asembler i da prebacis kod na kalkulator. Bio je cak neki kabl za prebacivanje. Ali ja sam tada vec na stolu imao iMac.

Jos uvek imam neku rascupanu knjigu z80 reference, pa se gledimo nostalgicno s vremena na vreme.

Danas bi se vise zanimao sa:

1670785088380.png
 
Ovo mi nikada nece biti jasno kad citam postove ljudi koji pocinju da uce, kako vi sebe naterate da sedite svaki boziji dan po 3 sata i ucite?
Meni ovo deluje totalno nerealno. Mogu da razumem da se uci tako na pocetku kad si jos izlozen i kad ide mekano, kad udaris kurcem od ledinu i pocne da bude zajebano, kad razmisljas da si debil i da to nikada neces nauciti, kako se ti motivises tada da sedis i ucis 3 sata.
Meni paznju ne drzi nista duze od 15 minuta, evo od 15h se ***** sa ovim JS. 15 minuta gledam klip, jos toliko vezbam to sto sam video i posle 30 minuta zevam po netu i opet ciklus u krug.
Ko spoji sat dnevno taj treba da se sutira nogom u dupe od srece. Jos ako uzme malo da vezba to sto je sve gledao/citao to je prava stvar.
Na muci se poznaju junaci. Prosto rečeno. Ako naletiš na problem i nemaš volje da ga rešiš onda treba da razmisliš da li je to za tebe. Ja ne mogu da se smirim dok ne pronadjem rešenje. Davno mi je jedan iskusan programer rekao da ako nemaš osećaj uzbudjenja kad nešto proradi i kad rešiš neki problem onda to nije za mene. Progoreću brzo. Bio je u pravu. Programiranje traži čeličnu volju i koncentraciju i pre svega, ljubav prema poslu.
 
od tad do danas, kako ide?
Ima uspona i padova ali nisam odustao. Nekad ceo dan učim a nekad manje. Uglavnom odvojim bar pola sata dnevno. Jednom sam progoreo i napravio kraću pauzu ali sam se povratio. Moj savet svima koji počinju je da ne razmišljaju mnogo koji jezik da odaberu, ne možeš u prvih mesec dana znati šta ti najbolje leži.
 
Ima uspona i padova ali nisam odustao. Nekad ceo dan učim a nekad manje. Uglavnom odvojim bar pola sata dnevno. Jednom sam progoreo i napravio kraću pauzu ali sam se povratio. Moj savet svima koji počinju je da ne razmišljaju mnogo koji jezik da odaberu, ne možeš u prvih mesec dana znati šta ti najbolje leži.
slazem se. Nego nesto mi se cinilo da si bio trazio posao. U programiranju ucenju nema kraja svejedno.
 
Ovih dana programiram web backend server, to se sad uci. Koristim node express i ejs za dinamicki prikaz , ljudi moje srece kad sam submitovao formu u json fajl i kreirao tabelu na drugoj html stranici koja vuce podatke iz tog fajla i izbacuje ih u obliku tabele.Ima jos jedan chapter i onda krecu sql i mongo, ako mi se i ovo dopadne, mislim da sa sigurnoscu mogu da kazem da zelim da budem backend programer.
Front end je kul, ali niupola kul kao backend. Skakao sam od srece po sobi.
 
Primetio sam samo jedan mali problem, moracu da pustim malo duze da ovo traje da vidim jel privremeno, ali od kako sam poceo da ucim po par sati i da kodiram po 3-4 sata, primetio sam da jako lose spavam i da mi je sve teze da zaspim. Jel se to i vama desava ili je to neki moj trip?
Ako ostanem do kasno u ovome, onda sam se tek sjebao. Nema sanse da zaspim.
 
mene zanima koji je moj nivo programiranja. recimo da li je ovaj kod pocetnika ili juniora

import { Addend } from "/Addend.js";
export function calculate(dividend, divisor) {
/* divide addends with highest degree, after that multiply that result with divisor and substract from dividend, continue until dividen.degree > divisor.degree */
let arrDividend = [...dividend];
// save results of devision in result array
const result = [];
while (
(findAddendWithHightestDegree(arrDividend)?.degree || -1) >=
findAddendWithHightestDegree(divisor).degree
) {
let devisionValue = division(
findAddendWithHightestDegree(arrDividend),
findAddendWithHightestDegree(divisor)
);
result.push(devisionValue);
let substractArr = multiplication(devisionValue, divisor);
arrDividend = subtractionMany(arrDividend, substractArr);
console.log(result);
}
return result;
}
export function division(dividendTerm, divisorTerm) {
return new Addend(
`${Math.floor(dividendTerm.coefficient / divisorTerm.coefficient)}x^${
dividendTerm.degree - divisorTerm.degree
}`
);
}
// multiplication of two Addends help function for mulltiplication
function multipliSingle(term1, term2) {
return new Addend(
`${term1.coefficient * term2.coefficient}x^${term1.degree + term2.degree}`
);
}
export function multiplication(factor1, factor2) {
return factor2.map((addend) => multipliSingle(factor1, addend));
}
// finding addend with highest degree in array
function findAddendWithHightestDegree(arrayOfAddends) {
if (arrayOfAddends.length === 0) return;
return arrayOfAddends.reduce((maxAddend, addend) =>
maxAddend.degree > addend.degree ? maxAddend : addend
);
}
export function subtraction(minuend, subtrahend) {
minuend = minuend || new Addend("0x^0");
subtrahend = subtrahend || new Addend("0x^0");
// case degrees are not the same do nothing, but skip if one of addends is 0;
if (
minuend.degree !== subtrahend.degree &&
!subtrahend.degree &&
!minuend.degree
)
return;
return new Addend(
`${minuend.coefficient - subtrahend.coefficient}x^${
minuend.degree || subtrahend.degree
}`
);
}
function subtractionMany(minuendArr, substractArr) {
const subArr = [];
// find the highest degree in minuendArr, we assume minuendArr is higher degree then substractArr
/* if not then just change the code belove, not max of minuendArr, but max from both */
let maxDegreeAddend = findAddendWithHightestDegree(minuendArr);
for (let i = maxDegreeAddend.degree; i >= 0; i--) {
let addendMinu = minuendArr.find((addend) => addend.degree === i);
let addendSub = substractArr.find((addend) => addend.degree === i);
if (
(addendMinu || addendSub) &&
subtraction(addendMinu, addendSub).coefficient
)
subArr.push(subtraction(addendMinu, addendSub));
}
return subArr;
}
const seka = [new Addend("6x^3"), new Addend("15x^2"), new Addend("14x^1")];
const mama = [new Addend("2x^1"), new Addend("5x^0")];
console.log(calculate(seka, mama));
 
U principu, webassembly radi u sva 4 browsera koja sam probao: Safari, Firefox, Edge, Vivaldi, sa time da ispravno radi samo u Vivaldiju...
Koja rupetina
Radi i na macOS i na Linux, welcome drive-by malware and antiviruses on Linux and macOS
:P
 
Poslednja izmena:

Back
Top