Jump to content

c3m3d3

Members
  • Posts

    45
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by c3m3d3

  1. Eu am fost angajat cu contract de muncă la 17 ani pe 2800 lei net. Lucram remote din Timişoara pentru o companie din Bucureşti pe React / React Native. Apoi după 8-9 luni am început să merg iar la interviuri şi am fost încadrat ca mid-level la o companie de outsourcing din Timişoara, acolo primeam 8k lei net. Făcusem şi 18 ani între timp şi puteam să lucrez 8h/zi, înainte puteam doar 6 deci e posibil să fii afectat şi asta. Acum, 1 an şi ceva mai târziu am reuşit să-mi înfiintez PFA fără să am studii şi am trecut total spre freelancing. Viaţa-i bună, dar eu sunt foarte specializat pe Javascript (MERN Stack) şi mai nou am început să experimentez şi cu partea de devops + cloud stuff în AWS, e cam dificilă treaba dacă nu rămâi up to date cu tehnologiile moderne. Eu am totuşi noroc că am realizat devreme faptul că trebuie să investesc bani în mine ca să pot să fac şi mai mulţi bani. Ca şi resurse, plătesc lunar undeva la $200-250 pe subscripţia de la Frontendmasters + diferite cursuri pe care mi le mai cumpăr de pe Udemy.
  2. Salut, ţi le cumpăr eu pe toate cu plată prin trasnfer bancar. Ţi-am lăsat PM
  3. Da, cu propunerea ca inainte sa primesti access la el sa iti fie verificat istoricul postarilor de aici. Ar avea sens ca persoanele ce au doar postari de trolling sau nu au contribuit cu nimic tehnic sa nu fie acolo.
  4. Eu as recomanda sa nu te duci la cercuri de elevi ce fac pregatire pentru olimpiada. Ar trebui evitate in special daca sunt si predate de studenti. Multi habar nu au ce fac acolo si organizeaza acele cercuri ca sa ii stoarca pe parinti de bani. Pe langa asta, multi studenti nu sunt capabili de nimic practic in afara de algoritmica. Pune mana si fa experienta hands-on. E foarte important sa inveti de la oameni din industrie cu experienta. Daca te inconjori cu prunci de clasa a 9-a si studenti degenerati ce nu stiu cum sa faca rost mai repede de bani pentru alcool, nu o sa ai nicio sansa. Cauta pe Youtube cursul CS50 de la Harvard si parcurge tot de acolo. O sa-ti ofere o introducere destul de bunicica. Apoi pune mana si incepe sa te uiti peste Freecodecamp.org iar in paralel poti sa urmaresti cursurile lui Mosh Hamadani pe partea de JS. Freecodecamp ar trebui sa iti ofere ceva hands on stuff iar din cursurile lui Mosh ar trebui sa intelegi mai deep ce faci. Instaleaza aplicatia Meetups si du-te la event-uri de programare, nu conteaza daca sunt de Python de Java sau oricealtceva, scopul tau ar trebui sa fie sa cunosti cat mai multi programatori buni cat mai repede, in modul asta iti poti face si “pile” pentru cand o sa te angajezi. Eu m-am lovit mult de absolventi de politehnica si alte facultati ce mi-au scos ochii ca nu sunt un inginer adevarat pentru ca nu am studii. Daca dai si tu de persoane de acest gen ignora-i si indeparteaza-i. Scopul tau final nu ar trebui sa fie sa stii programare multa. Cunosc foarte multi “ingineri” ce stiu tot ce misca intr-un reactor nuclear insa ei tot ce fac este ca stau in spatele unui monitor si rezolva task-uri de peste 20 ani. Nu e okay sa fii in stadiul asta. Scopul tau ar trebui sa fie sa stii suficient cat sa creezi orice iti trece tie prin cap. Consider ca ar trebui pus mai mult accent pe partea de business ca sa fii capabil sa vinzi ceea ce faci. La finalul zilei scopul este sa produci bani.
  5. Eu as recomanda sa pui mana sa inveti dezvoltare in loc de securitate. Nu o sa fii capabil sa-ntelegi nimic oricum nici daca parcurgi ce au zis baietii mai sus, degeaba rezolvi challenges de securitate daca habar nu ai ce se-ntampla. O sa ajungi ca si @KRONZY. Sunt doua variante: Inveti foarte bine networking sau Inveti foarte bine Reverse Engineering. Indiferent de cat de bun "hacker" ai fi, o sa ramai mereu la un nivel mediocru daca nu o sa ai si cunostiinte de dezvoltare. "Hackerii" aia smecheri trebuie sa fie si programatori buni in primul rand. Pe langa alte lucruri, trebuie sa stii sa scrii si tu cod secure, sa fii capabil sa-ti creezi propriile tool-uri si mai mult de atat, sa stii sa-i educi si pe altii sa faca asta. Iar toate aceste lucruri includ mai multe skill-uri. Atat soft-skills cat si hard-skills. Asa ca iesi din casa si comunica cu lumea. Asta te va ajuta atat la interviuri cat si la avansat in cariera. Eu am ajuns sa dau bani grei pe cursuri ca sa nu mai fiu inapt social. Ai 15 ani, asta inseamna ca mai ai 1 an pana cand te poti angaja legal 6h / zi. Si mai ai inca 3 ani pana cand te poti angaja 8h/zi. Daca pui mana si incepi acum sa inveti programare 100h pe saptamana, in 4 luni ai sa-nveti cat invata altii intr-un an ( asumand 40h/saptamana la restul). Si poate ai noroc sa prinzi o pozitie de junior peste un an, daca stii sa-ti "vinzi potentialul". Eu la 16-17 ani lucram deja ca si Mobile Dev. Incepe cu ceva usor, poate front-end. Apoi invata si back-end. Fa aplicatii simple si apoi invata si notiuni de system design / arhitectura ca mai apoi sa refactorizezi ce ai facut deja. Limbajul este destul de irelevant dar mie mi s-a parut mai usor sa fac totul in Javascript de exemplu.
  6. Aha, si package-lock.json ce face? Puneti ba mana si invatati ce fac tool-urile pe care le folositi. Voi chiar puteti sa fiti multumiti de voi in halul asta?
  7. Poti sa ne explici te rog, de ce ar fi nevoie si de package.json daca ai deja un package-lock.json?
  8. Am inteles. Eram doar curios cum am spus. Spune-mi totusi, daca ai fi intrebat sa explici cum poate fi reparata respectiva vulnerabilitate cum ai raspunde daca tu nu intelegi ce o genereaza in primul rand? Si mai rau, nici nu pare ca doresti sa vrei sa-ntelegi. "Ce conteaza ce cod am folosit". Cum adica nu conteaza? Conteaza, conteaza foarte mult. iti zic eu ca primul vector enuntat mai sus, nu o sa functioneze cum ti-ai dorit, pentru ca functia Alert() ia un singur parametru. Ar functiona doar un contextul in care ai variabila source definita pe undeva, dar nu ar afisa-o, in caz contrar ti-ar da un refference error frumos. Ce ai facut tu acolo este foarte foarte messy, conteaza mult si cat de eleganta este solutia ta. Eu nu incercam sa te descurajez, ci doar sa te-ndemn sa-ntelegi mai bine ce se-ntampla, pentru ca iti usurezi viata. Cheers!
  9. Din ce vad acolo ai luat la rand toti vectorii posibili fara sa ai idee ce-nseamna fiecare, nu-ncerc sa fiu critic, pentru ca poate esti baiat destept. Am si eu niste curiozitati totusi, pentru ca eu sunt mai prostut. Din ce vad ai folosit urmatoarele doua treburi pe acolo: 1. <body onload=alert(/xss/,source)> 2. alert(String.fromCharCode(88,83,83)) Care-i treaba cu al 2-lea argument dat la primul alert(), ce ar trebui sa faca? Also, daca sunt cazuri in care passezi la Alert un String direct si iti merge, de ce mai folosesti si String.fromCharCode()? O fi oare pentru ca ai copiat tot ce-ai prins, sau esti mai destept decat pari?
  10. Ma de cate ori sa-ti zic ca e super irelevant ce framework folosesti? In realitate observi cu greu diferenta de performanta intre Angular / React / Vue daca nu ai o aplicatie heavy, toate rahaturile astea exista pentru ca in unele poti avea diferite arhitecturi cu care diferite echipe sunt mai confortabile si pot fi mai productivi. Angular e folosit in general de aia ce vin de pe Java si vor sa se simta smecheri cu type-uri pe front-end. Vue e folosit in general de aia ce au incercat sa-nvete React si nu au reusit si dau cu hate spre corporatii ca-i facut de o singura persoana. React e smecher si e folosit de aia ce-s siguri pe ei si stiu Javascript, dar toate fac aceelasi rahat. In toata platforma asta a ta de vrei tu sa o faci cea mai mare problema nu ar trebui sa fie in ce tehnologie o dezvolti ci cum o vinzi. Am dezvoltat niste aplicatii B2B la o companie ce erau de tot rahatul, banale, dar au fost vandute catre Facebook si generau profit de milioane pentru ca oamenii de pe marketing au stiut cum sa-si faca treaba. E mai important sa infasori cacatul intr-o punga frumoasa decat sa faca ceva aplicatia ta. La dracu, in general in industria IT e mai important sa stii sa vorbesti decat sa ai abilitati tehnice. Pune mana si-nvata cum sa bullshit your way around the system. Invata pe cine sa pupi in cur, cand si unde, si nu o sa mai fii nevoit sa te gandesti la ce framework-uri sa alegi. Tu nu observi ca in Silicon Valley cel mai bine platiti nu sunt programatorii ci managerii?
  11. Nu stiu CodeIgniter dar pot sa-ti fac rapid un API in Node, la care sa-mi trimiti tot HTML-ul si un link catre WM iar eu sa-ti returnez un PDF cu watermark-ul. Te-ar ajuta?
  12. Irelevanta varsta, eu am 18. Ca sa-ti raspund despre Vue, nu prea conteaza. Eu la interviuri (Si am dat destul de multe pana acum), nu am fost luat la intrebari despre framework-uri, ci mai mult au fost intrebari de Javascript Vanilla, ce mergeau mai deep. Eu zic sa parcurgi un curs basic de Javascript, si apoi sa pui mana si sa intelegi tot ce scrie in seria de carti You Don't Know JS. Ca sa-ti faci o idee, am enumarat mai jos cateva intrebari comune ce mi-au fost mie adresate pe la interviuri, unele la companii destul de maricele ( IBM de exemplu). - Diferenta dintre var/let/const - Ce este scoping/hoisting ( Aici am fost pus o data si sa explic la nivel de ce face interpretor-ul JS, am fost intrebat si de Temporal Dead Zone) - Keyword-ul 'this', 2 companii mi-au dat de rezolvat probleme bazate pe asta. Problemele constau in mai multe obiecte ce returnau propriul context, si poate mai faceau si alte treburi pe langa. Deveneau tot mai complexe pentru ca puteai sa ai 4-5 obiecte carora le este dat un alt context ca si parametru in constructor, si era destul de usor sa pierzi firul. - La toate am fost intrebat de Event Loop, la 1 una dintre ele am fost pus si sa fac o schema in care arat event loop-ul, aka cum ajunge ceva in stack, cum ajunge in task queue, webapis, de exemplu la asta putini stiu ca setTimeOut() si altele related, sunt parte din webapi, si nu vin din V8 Engine. Again, asta e si ea o chestie la care te puteau prinde destul de easy. - La absolut toate interviurile am fost intrebat intr-un fel sau altul de modul in care type-urile primitive si type-urile non-primitive sunt date catre alte treburi (ex, alea non-primitive sunt date dupa locatia din memoria in timp ce alea primitive sunt date direct ca si valoare), la una dintre firme am avut si o problema pe baza acestei reguli. - Am fost intrebat si de Redux foarte mult, dar asta pentru ca eu am aplicat pe pozitii de React in general. Intrebariile de Redux erau destul de banale si constau in a explica diferenta dintre un dispatch/action/reducer/store, aka efectiv sa vorbesti de tot ciclul prin care trece state-ul. -Am fost intrebat la toate interviurile de pana acum pe React, de ciclul de viata al unei componente. Again, din cate vezi in general intrebariile nu sunt bazate neaparat pe framework-uri, si chiar daca eu am aplicat pe pozitii ce erau specifice pentru anumite framework-uri era esential sa stii js si la nivel mai deep. Deci de asta zic sa nu te focusezi neaparat pe Vue ci mai mult pe Javascript in sine. Vue e fun, dar aici in orasul meu are un job market cam scazut, daca vrei job cat mai repede bagi tare JS si React. Poti sa-mi scrii daca vrei sa te ajut cu prepararea pentru interviuri
  13. Javascript in combinatie cu frameworks precum React. Eu am ajuns lejer la 1800-1900 net euro dupa 8-9 luni de experienta. Acum depinde si cat de bine te vinzi la interviu. De precizat si ca asta nu s-a intamplat in cadrul aceeleasi companii, eu incepusem cu 600 euro, iar apoi la a 2-a companie crescusem la 1600, iar acum la a 3-a am cerut mai mult decat la cea precedenta. Nu depinde doar de limbaj salariul, conteaza mult si cum te vinzi, trebuie sa stii si ceva politica sa-ti iasa schemele astea cu contraofertele.
  14. Prin meniu te referi la un drawer? Nu fac Android nativ, dar, nu ai putea să creezi drawer-ul și să pui o animație de loading în el pentru toți, iar mai apoi după ce primești datele din firebase să updatezi state-ul și să adaugi iteme în el?
  15. 1. înveți Javascript 2. Înveți Electron.js -> https://electronjs.org/ 3. Folosești D3.js -> https://www.d3-graph-gallery.com/ 4. În final o să ai aplicație ce rulează independent atât pe linux, osx și windows 5. Profit??
  16. Hmmm, aveți încredere să vă țineți salariul în Revolut?
  17. Dacă scopul tău e să ai un job cât mai repede, atunci mai degrabă învață JavaScript. Caută cursuriile lui Mosh de Javascript Basics, apoi JavaScript OOP. Le găsești pe Udemy cât și pe site-uri de torrente. Mai apoi învață React.js și ești good to go
  18. c3m3d3

    Switch Color

    Perfect! Până în acest punct ai reușit să salvezi culoarea aleasă în LocalStorage. Valoarea aia o să rămână acolo și după refresh. Acum tot ce ai de făcut este să accesezi respectiva valoare după ce pagină s-a încărcat. Repet, ca să accesezi ceva din localStorage folosești: localStorage.getItem('numeCheie'); Partea asta de mai sus îți caută cheia respectivă în localStorage. Și îți returnează ce a găsit în ea. Mai departe, este cam irelevant dacă ți-o returnează și tu nu o stochezi nicăieri, deci o pui într-o variabilă în modul ăsta. let culoareaMea = localStorage.getItem('myColor'); Acum, variabila culoareaMea conține valoarea pentru cheia myColor din localStorage. Ce trebuie să faci mai departe este ca atunci când pagina s-a încărcat, să setezi culoarea pentru respectivul div cu valoarea din culoareaMea. Văd că folosești ceva CMS și mă gândesc că HTML-ul este generat din mai multe părți și poate nu vrei să te complici să vezi de unde e generat, așa că în acest context poți să te folosești de un alt event listener. Sunt două mari event-uri în JavaScript ce sunt emise în momentul în care se încarcă o pagină și anume: DOMContentLoaded și load. - DomContentLoaded este emis imediat ce DOM-ul a fost încarcat ( Doar HTML-ul fără CSS și imagini ) - load este emis după ce totul a fost încărcat ( DOM / CSS / Imagini ) În cazul tău, load este event-ul pe care trebuie să-l "asculți" deoarece tu modifici CSS. Iar treaba asta o faci în felul următor: <script> // Aici așteptăm eventul de 'load' ca să știm când s-a încărcat pagina window.addEventListener("load", function(){ const culoareaPrecedenta = String( localStorage.getItem('myColor') || '#fff' ); // Aici iau culoarea precedentă din localStorage // De asemenea o transform în String ca să nu fie probleme document.getElementById('content_box').style.background = culoareaPrecedenta; // Aici schimb culoarea actuală cu ce avem în localStorage }); </script> Pune treaba asta la sfârșitul paginii
  19. Salut, pot eu să-ți dezvolt atât pentru IOS cât și Android
  20. c3m3d3

    Switch Color

    Dacă folosești Chrome, în Developer Tools poti vedea acolo ce ai în Local Storage. Apasă F12, apoi du-te la tab-ul Application, iar în stânga o să-ți apară "Storage". Sub Storage o să ai Local Storage cu mai multe site-uri, caută site-ul tău și deschide-l. Mai departe de acolo ai să vezi toate cheiile și valoriile din LocalStorage setate de respectivul site, în cazul tău trebuie să apară ceva cu cheia "MyColor" și o anumită valoare. Rămâi cu consola deschisă atunci când schimbi culoarea și vezi dacă se adaugă ceva acolo sau nu.
  21. c3m3d3

    Switch Color

    Cum ai făcut? Încearcă ca imediat după ce s-a încărcat pagina să verifici dacă variabila din localStorage propusă de Gecko, conține culoare. Asta deoarece funcția ta este apelată doar atunci când alegi ceva din acel select, nu și când se-ncarcă pagina, prin urmare culoarea nu are cum să fie schimbată. Funcția changeBack ar trebui să arate în felul următor: const changeBack = () => { // Aici luamm o culoare let back = document.getElementById('colorPicker').value; // Aici stocam culoarea in localStorage sub denumirea 'myColor' localStorage.setItem('myColor', String(back)); // Aici setăm culoarea unui element cu valoarea aleasă document.getElementById('content_box').style.background = back; } Până în acest punct ceea ce ai făcut a fost că ai stocat o culoare în LocalStorage, mai departe trebuie să iei culoarea respectivă după ce s-a încărcat pagina și să o setezi pe un element. Pentru asta, poți de exemplu să asculți event-ul onLoad pe <body>. Ex: <body onload="functiaMea()" Iar functiaMea() poate să fie ceva de acest gen: const functiaMea = () => { // Aici iau culoarea precedenta din localStorage, iar dacă una precedenta nu există se va returna codul pentru culoarea albă const culoareaPrecedenta = localStorage.getItem('myColor') || '#fff'; // Aici schimb culoarea document.getElementById('content_box').style.background = culoareaPrecedenta } Ca și bonus: Am să asum că ești începător, și mă gândesc că modul în care Gecko verifică culoarea precedentă te pune în confuzie și ți se pare criptic, mă refer la: const culoareaPrecedenta = localStorage.getItem('myColor') || '#fff'; Aici pornește de la faptul că funcția getItem() ce aparține de LocalStorage, returnează false sau true în funcție de dacă a găsit cheia respectiva ( 'myColor' ) sau nu. Mai departe, pe baza acestui lucru poți face diferite verificări. @Gecko a ales să se folosească de modul în care expresiile sunt evaluate în JavaScript, și să folosit de operatorul OR ( || ) ca să scrie asta mai pe surt. Ca să-ți faci o idee, expresia de mai sus se poate scrie și sub forma: let culoareaPrecedenta = null; if( localStorage.getItem('myColor') === true ) { culoareaPrecedenta = localStorage.getItem('myColor'); } else { return '#fff' } // În JavaScript condițiile din if sunt toate "transformate" în booleans ( true or false ) prin urmare dacă dorești să verifici dacă ceva e adevarat, poți să renunti la " === true ", // iar if statement-ul tău poate să fie și în modul: if( localStorage.getItem('myColor') ) { // do stuff } Totuși e cam lunguiața, deci o variantă mai scurtă ar fi folosind shorthand if statements aka așa: // În prima fază verifici dacă există o culoare, în a 2-a fază dacă există o returnezi, dacă nu returnezi culoarea albă let culoareaPrecedenta = localStorage.getItem('myColor') === true ? localStorage.getItem('myColor') : '#fff'; // Totuși, ții minte ce am spus mai sus legat de evaluarea expresiilor? Ea poate să fie scrisă și mai scurt așa: let culoareaPrecedenta = localStorage.getItem('myColor') ? localStorage.getItem('myColor') : '#fff'; Știind aceste lucruri, poți să te folosești de modul în care expresiile din stânga și dreapta operatoriilor sunt evaluate și să ajungi la varianta originală care este una scurtă. În cazul operatorului OR ( || ) condițile din stânga și dreapta lui sunt evaluate la True sau False. Și la nivel fundamental, la executare o să ajungi să ai ceva de acest gen: let color = localStorage.getItem('myColor') || '#fff'; // Aici e posibil ca funcția getItem să returneze False, by default în JavaScript orice String este evaluat ca și True. // Prin urmare dacă culoarea ta nu este găsită se va ajunge la ceva de genul: let color = false || "#fff" // Mai departe, având în vedere că operatorul OR păstrează doar condițiile adevărate ( TRUE ), iar string-urile sunt TRUE, se va ajunge la: let color = "#fff"; Iar dacă ar fi ca localStorage să conțina o valoare adevărată, atunci s-ar ajunge la true || true, iar având în vedere că în JavaScript expresiile sunt executate de la stânga la dreapta, se va păstra ce este în partea stângă a operatorului. În acest mod, poți face tot felul de chestii cu operatori, să zicem că dacă dorești ca atunci când nu există o culoare precedentă, să nu faci nimic. Ei bine poți să te folosești de operatorul AND ( && ) pentru asta și să faci ceva de genul: let color = localStorage.getItem('myColor') && localStorage.getItem('myColor'); Prin treaba de mai sus, color o să fie setat 'undefined' în functie de dacă există sau nu o culoare setată înainte Poți să-mi scrii dacă ai nevoie cu ajutor legat de JavaScript în general. Spor!
  22. Bre nu ești capabil să folosești un map() și filter() și îți permiți să faci gură? :(
  23. Ahaha BETIT. I-am scris eu acum cativa ani un articol pe blog, m-a platit cu 5 dolari apoi mi-a sters contul si si-a asumat toate drepturile de autor. Articolul a fost cel mai de success articol pe care l-a avut site-ul lui de stiri vreodata. (Inginerie Sociala & Facebook stuff)
  24. Esti Aerosol sau Kronzy? Damn, long time no see. Ohh, Sith. Imi amintesc cand m-ai invatat de networking si futut minore, ti-am folosit sfaturile. Cat despre BTC, n-aveam eu mare avere.
×
×
  • Create New...