Articles

42 proiecte pentru a exersa abilitățile de programare

Posted by admin

înainte de a merge mai departe, marcați acest site web:

Să ai o mulțime de idei de proiecte de programare este un lucru rău, să nu le împărtășești cu tine este și mai rău. Deci, este o provocare de un an (ceva ce copiii Instagram adoră în aceste zile), etichetat ca #42skillschallenge. Iată cum să participați la această provocare incredibil de complexă, pentru fiecare dintre cele 42 de proiecte:

  1. alegeți un proiect din listă.
  2. creați un depozit GitHub pentru proiect.,
  3. începeți să lucrați, încercați să implementați totul de la zero, reinventați roata acolo unde este posibil (uneori trebuie).
  4. când ați terminat, testați-l, postați eticheta #42skillschallenge undeva în repo (README sau undeva vizibil).
  5. Împărtășește-ți repo-ul cu lumea.unele proiecte sunt simple. Unele dintre ele sunt greu. Este o modalitate foarte bună de a practica abilitățile dumneavoastră, mai ales înainte de interviuri tehnice importante.cu toate acestea, există proiecte care sunt ridicol de complexe. Ar putea dura săptămâni sau luni pentru a le pune în aplicare. Acolo supraviețuiesc adevăratele vedete rock., Cel care finalizează mai întâi toate proiectele, deblochează un nou nivel de expertiză. Uită-te la proiecte, știu despre ce vorbesc.

    De asemenea, unele proiecte ar putea servi drept idei grozave pentru startup-ii (cei care urăsc să muncească și adoră să se îmbogățească rapid). Vă sugerez să adunați o echipă pentru unele proiecte de mai jos (sau pe site) și să eliberați o aplicație sau un serviciu destul de cool și să cuceriți lumea.,

    lista de proiecte

    Proiectarea și implementarea unui server web ușor că procesele primite cereri de rețea prin protocolul HTTP. Web server procesează și livrează pagini web către clienți (de obicei, browsere). Paginile sunt documente HTTP. În timp ce funcția principală este de a servi conținut, o implementare completă a HTTP include, de asemenea, modalități de primire a conținutului de la clienți., Această caracteristică este utilizată pentru trimiterea formularelor web, inclusiv încărcarea fișierelor (sursă). Pentru o inspirație, încercați să imitați serverul web Nginx.

    Sniffer de Pachete

    Un sniffer de pachete (packet analyzer) este folosit pentru a monitoriza traficul în rețea prin examinarea fluxuri de pachete de date care curg între calculatoarele dintr-o rețea. Pentru a începe cu proiectul, studiați bine protocoalele de rețea., Apoi, scufundați-vă în implementarea unei aplicații care urmărește pachetele de rețea și analizează conținutul acesteia într-o formă care poate fi citită de om.

    Cod Static Analizor

    Cod Static analizoare sunt utilizate pentru a analiza (evident) codul sursă, fără a fi și de a descoperi problemele care ar putea duce la bug-uri în aplicația care rulează. În acest fel, rularea unui analizor de cod static pentru proiectul dvs. ar putea economisi mult timp în depanare., Proiectele serioase sau sistemele critice folosesc analizoare statice comerciale pentru a verifica calitatea codului.proiectați și implementați propriul Analizor static pentru orice limbă la alegere.

    Spam Detector

    Pună în aplicare o bibliotecă sau un serviciu care analizează e-mailuri pentru a detecta spam-ul. Sunteți liber să-l pună în aplicare ca un plugin de browser, sau ca un produs SaaS. Încercați să utilizați algoritmi de învățare automată pentru a vă îmbunătăți sistemul.,

    Motor de Șah

    Un motor de șah analizează tabla de șah și sugerează cele mai bune următoarea mișcare. În afară de asta, s-ar putea servi ca un adversar în joc cu computerul. Implementați motorul de șah alimentat de AI de generație următoare. Pentru o inspirație, aruncați o privire la Stockfish.,

    Motor de Căutare Web

    Preferata mea. Întotdeauna am vrut să pună în aplicare un motor de căutare web super-duper, care va concura cu Google. După cum puteți ghici, nu sa întâmplat nimic. Poate puteți implementa un astfel de motor?proiectați și implementați un sistem care indexează miliarde de documente din întreaga lume, le stochează într-o manieră eficientă și răspunde la întrebările utilizatorilor cu cea mai relevantă listă de documente.,

    Command-Line Terminal

    This one is easy to describe. Implement a terminal app that replicates all the main Linux commands. Try to make the interface as fancy as you can.

    Web Browser

    Sounds simple, but it’s not., În primul rând, este o aplicație GUI. Apoi, înțelege documentele HTTP și, desigur, înțelege și redă în mod corespunzător HTML și CSS. Și da, execută și JavaScript (cel puțin lucrurile de bază).deci, nu este permis niciun motor Chromium. Un browser web simplu implementat de la zero. Asta e dură. Cel puțin pentru mine. Puteți sări peste unele părți urât și păstrați-l de bază, dar totuși, este greu.,

    Date În Memorie

    una dintre favoritele mele. Proiectul este practic re-punerea în aplicare a Redis. O bază de date în memorie păstrează totul în memorie. Dacă adăugați o limbă de interogare, o companie serioasă vă va angaja cu siguranță.,

    Minimalist sistem de OPERARE

    Un vis de multe. Cunosc mulți programatori care au visat să-și implementeze propriul sistem de operare de la zero. Și una dintre motivația pentru astfel de intenții suicidare este să se scufunde în cele mai scăzute niveluri de codificare și familiarizare cu metalul. Toată lumea iubește metalul!puteți să-l păstrați simplu, dar cel puțin să implementați mai multe caracteristici critice pentru sistemul de operare., Și faceți-o de la zero, dar puteți arunca o privire asupra kernel-ului Linux. La urma urmei, Linus a avut o privire la Minix în unele moduri.

    Video Subtitrare Generator

    Pună în aplicare un program care are un video ca intrare, analizează conținutul, are o voce de prelucrare și produce subtitrare pentru video. Este bine să aveți o limitare a lungimii videoclipului (1 sau 2 minute ar fi grozav).,

    Cifru Personalizat

    Amintiți-vă acele filme despre hackeri? Ai visat vreodată să devii unul? Aceasta este șansa ta de a face un pas spre acel vis copilăresc.

    proiectați un cifru. Implementați o aplicație care codifică și decodează informații bazate pe acel cifru al dvs.

    ar fi minunat dacă veți scrie câteva teste automate pentru a verifica puterea creației dvs. Cu alte cuvinte, hack propria securitate.,

    P2P Aplicație de Mesagerie

    Implementeze o aplicație pentru chat cu un prieten. Provocarea este de a face într-un mod care omite un server centralizat și inițiază o conexiune directă între doi clienți de chat.,

    de Traducere automată

    Ceva de genul Google Translate. Proiectați și implementați un serviciu (dacă aveți timp liber, implementați și aplicația) care traduce o grămadă de text dintr-o limbă în alta.

    Alegeți oricare două limbi pe care le doriți. Încercați să faceți traducătorul mai inteligent, să-l antrenați sau să-l corectați pe drum.,

    Automatizate Prezentator de Știri

    Ai de gând să place acest unul. Imaginați-vă cititorii de știri regulate, cum ar fi Feedly. Și acum, imaginați-vă prezentatorul de știri al CNN, vorbind despre unele știri de ultimă oră, coronavirus etc. Acum, imaginați-vă un personaj asemănător unui desen animat, care vă Citește știri (utilizatorului), așa cum fac prezentatorii adevărați.,proiectați și implementați un software care colectează știri (în general, se abonează la fluxurile RSS setate de utilizator) și le citește cu voce tare ca prezentator de știri animat.

    Sistem de Plată

    Probabil ați auzit de PayPal sau Dungi sau orice alt sistem de plată. Acum, proiectați o nouă (sau următoarea generație?) sistem de plată similar cu unul dintre acestea. Simulați tranzacțiile financiare și dovediți că sistemul este infailibil la atacuri., Acesta este greu de realizat.

    Date Relaționale Sistem de Management

    întrebat Vreodată cum face de lucru baze de date sub capota? Acum aveți șansa de a construi unul. Proiectați și implementați un DBMS relațional similar cu MySQL sau PostgreSQL (care nu acceptă neapărat SQL). Nu uitați de indexare. Va fi minunat să aveți tranzacții, dar aceasta nu este obligatorie.,

    Asistent Virtual

    Ceva de genul Siri, dar fără control vocal. Trebuie doar să tastați un text, să creați mementouri, să puneți întrebări etc. Setul de caracteristici depinde de dvs., dar utilizatorul trebuie să-l simtă ca o aplicație solidă de asistent virtual.acest proiect este destinat pentru spartphones, adică ar trebui să îl scrieți fie pentru Android, fie pentru iOS, fie pentru ambele folosind unele chestii React Native/Flutter.,

    Colector de Gunoi

    Întrebare: care e diferenta intre C++ si C#? Una dintre diferențe este că acesta din urmă are un colector de gunoi. Acum, implementați un colector de gunoi care poate fi utilizat fie ca serviciu separat, fie ca modul integrat. Limba și ținta sunt la alegere.,

    Dropbox Clona

    Dropbox este o aplicație de partajare de fișiere. Este format din clienți pentru aproape toate sistemele de operare, inclusiv Android și iOS. De asemenea, are un backend imens. Proiectați și implementați propria versiune a unei aplicații de partajare a fișierelor care funcționează cel puțin pentru 10 utilizatori și oferă 100 Mb de spațiu fiecăruia. Implementați atât serverul, cât și clientul (cel puțin pentru un sistem de operare).,

    Container Sistem de Management

    Lasă-mă să pun descrierea Docker.Docker este un set de produse platform as a service (PaaS) care utilizează virtualizarea la nivel de sistem de operare pentru a livra software în pachete numite containere. Containerele sunt izolate unele de altele și își grupează propriile software, biblioteci și fișiere de configurare; ele pot comunica între ele prin canale bine definite., Toate containerele sunt conduse de un singur nucleu al sistemului de operare și sunt astfel mai ușoare decât mașinile virtuale.

    implementați propriul Docker.

    Container Orchestrator

    Ea devine mai greu și mai greu. După ce ați terminat cu Docker, proiectați și implementați un orchestrator.pentru inspirație, uitați-vă la Docker Swarm sau Kubernetes.,

    Software-ul Antivirus

    Nu conteaza daca folositi Linux. E carantină peste tot din cauza virușilor. Implementați un antivirus bun și testați-l implementând câteva viruși. Aceasta nu este o sarcină ușoară, dar când ați terminat cu implementarea unui sistem de Operare minimalist, ar trebui să fie mai ușor să abordați acest lucru.,

    Firewall

    Firewall-uri monitoriza cererile de rețea a închide sau a deschide porturi de pe computer. Ele sunt practic primul eșalon din sistemul de apărare. Proiectarea și punerea în aplicare a unui software firewall. Cel puțin încercați ceva de genul netstat care are și permisiuni pentru a închide porturile sau a alerta la cererile de rețea suspecte.,

    Versiune a Sistemului de Control

    Cel mai probabil sunt folosind Git. S-ar putea să fi folosit SVN sau chiar CVS. Oricum, ideea este simplă. Implementați un nou sistem de control al versiunilor. Scopul pentru ceva mai bun decât Git.de asemenea, amintiți-vă, Linus a scris prima versiune a Git în două săptămâni sau cam asa ceva. Acceptați provocarea, scrieți-vă VCS în mai puțin de 13 zile. În fața ta, Torvalds!,

    Diagrama UML Generator

    Ia oricare dintre dumneavoastră preferat de limbaje de programare care acceptă OOP. Implementați un instrument care ia codul sursă al proiectului ca intrare și generează diagrame UML pentru acesta.,

    Seriilor de Timp de Date

    Acesta este un software de baze de date care stochează și prelucrează serii de timp mai eficient decât regulate de date, sisteme de management. Aflați care sunt seriile de timp și apoi proiectați și implementați un sistem de baze de date cu serii de timp.,

    Lock-free Structuri de Date

    Blocare-gratuit programare este greu de înțeles. Am încercat, doar am înțeles.

    implementați un set de structuri de date fără blocare ca o bibliotecă care poate fi utilizată în proiecte de programare.,

    Trafic Notificatorul

    Implementeze o aplicație (sau un serviciu) care notifică utilizatorul despre blocaj de trafic.mai mult decât atât, sugerează o rută mai bună către o anumită destinație (stabilită de utilizator).aceasta este una dintre acele aplicații care ar putea servi ca o idee bună pentru o pornire. Implementați un serviciu cu adevărat de calitate, iar succesul este garantat., Puteți combina acest lucru cu asistentul virtual introdus mai devreme, iar rezultatul va fi minunat.

    Muzică de Fuziune

    Implementarea unui software care îmbină două sau mai multe piese muzicale împreună pentru a produce unul nou.,

    Generator de Rețetă

    Aplicația (sau serviciu) generează noi rețete și învață prin cale. Deci, atunci când gătiți după rețeta sa, îl evaluați pentru a-i spune cât de bun a fost. Nu este o idee proaspătă, dar poate fi utilă.,

    Browser-ul Plugin-ul pentru Carduri Flash

    au fost o mulțime de greu de proiecte pentru punerea în aplicare. Acesta este un pic mai ușor. Implementați un plugin de browser (pentru orice browser) care permite stocarea cardurilor flash și apoi le arată aleatoriu utilizatorului (poate fi configurat).,

    Aplicație Apel Video

    Există mai multe aplicații apel video, Zoom, Skype, Google Hangouts.dar totuși, funcționează prost dacă conexiunea la internet este slabă. Poate ar trebui să inventezi un nou algoritm de compresie (vezi mai jos) și să-l combini cu această aplicație pentru a implementa o nouă aplicație superbă de apel video? Nu sunt sigur., Practic, acest proiect reprezintă PiperChat, proiectați și implementați cea mai bună aplicație de chat video de calitate acolo.

    Dezordine Tester

    Pare o nebunie, un prieten mi-a sugerat asta. Scrie un software (sau un instrument), sau poate concepe o formulă (nu sigur) care testează rezultatele unui generator de numere aleatoare și verifică dacă acestea sunt într-adevăr aleatoare.,

    Microservices Cadru

    Un Design destul de elegant microservices cadru care sprijină modele de bază și oferă un set de implementări afară de la cutie. Asigurați-vă că acoperiți descoperirea serviciilor și comunicarea microserviciilor.cu cât adăugați mai multe funcții în cadrul dvs., cu atât aveți șanse mai mari de a câștiga provocarea.

    Alegeți orice limbaj de programare doriți.,

    Funcțional Limbaj de Programare

    A inventa un nou limbaj de programare în paradigmă funcțională. Fii succint, dar oferă tot mediul pentru a implementa programe în limba ta și a le rula fără durere.,

    Joc de Strategie Motor

    Una dintre cele mai bune moduri de a studia OOP este prin proiectarea de jocuri. Jocuri, de obicei, se bazează pe motoare.proiectarea și punerea în aplicare a unui motor de joc pentru jocuri de strategie. De preferat, implementați un joc bazat pe motor pentru a-l testa.,

    Simulare Lume

    Westworld se apropie.implementarea unui serviciu care permite simularea lumi complexe cu set diferit de date inițiale. Cu cât sunt mai multe detalii, cu atât este mai bine sistemul. Acesta este destul de greu, ar putea dura foarte mult să-l termine. Păstrați-l simplu atunci când vă simțiți blocat.,

    Film de Sistem de Recomandare

    E o minciună, Netflix recomandarea sistemul e de rahat. În afară de listele de filme alese manual, nu am văzut nicăieri un sistem solid de recomandare a filmelor.

    vă rugăm să remediați această nebunie. Proiectarea și punerea în aplicare cel mai bun sistem de recomandare film acolo.

    (este posibil să aveți nevoie de razuirea multor baze de date pentru a colecta date despre filme.,)

    Pied Piper

    Cineva ar trebui să facă acest lucru. Proiectați și implementați un algoritm de compresie care comprimă fișierele mari în cele mici. Este adevărat că obținerea rezultatului perfect este foarte greu, dar încercați să nu vă limitați la acele gânduri. Scopul imposibilului, https://en.wikipedia.org/wiki/Weissman_score

Leave A Comment