Articles

42 Progetti per praticare le competenze di programmazione

Posted by admin

Prima di andare oltre, segnalibro questo sito:

Avere un sacco di idee di progetto di programmazione è una brutta cosa, non condividere quelli con voi è ancora peggio. Quindi, è una sfida lunga un anno (qualcosa che i bambini di Instagram adorano in questi giorni), taggata come #42SkillsChallenge. Ecco come prendere parte a questa sfida follemente complessa, per ciascuno dei 42 progetti:

  1. Scegli un progetto dalla lista.
  2. Crea un repository GitHub per il progetto.,
  3. Inizia a lavorare, prova a implementare tutto da zero, reinventa la ruota dove possibile (a volte devi).
  4. Al termine, testalo, pubblica il tag #42SkillsChallenge da qualche parte nel repository (README o da qualche parte visibile).
  5. Condividi il tuo repository con il mondo.

Alcuni progetti sono semplici. Alcuni di loro sono difficili. È un ottimo modo per mettere in pratica le tue abilità, soprattutto prima di importanti interviste tecniche.

Tuttavia, ci sono progetti che sono ridicolmente complessi. Potrebbero volerci settimane o mesi per implementarli. Ecco dove sopravvivono le vere rock star., Colui che completa per primo tutti i progetti, sblocca un nuovo livello di competenza. Guarda i progetti, so di cosa sto parlando.

Inoltre, alcuni progetti potrebbero servire come grandi idee per startupers (coloro che odiano lavorare e amano arricchirsi rapidamente). Suggerisco di riunire una squadra per alcuni progetti qui sotto (o nel sito Web) e rilasciare un’app o un servizio piuttosto interessante e conquistare il mondo.,

L’elenco dei progetti

Progettare e implementare un server web leggero che i processi in arrivo le richieste di rete tramite il protocollo HTTP. Web server elabora e fornisce pagine Web ai client (di solito, browser). Le pagine sono documenti HTTP. Mentre la funzione principale è quella di servire il contenuto, un’implementazione completa di HTTP include anche modi di ricevere contenuti dai client., Questa funzione viene utilizzata per l’invio di moduli Web, incluso il caricamento di file (fonte). Per un’ispirazione, prova a imitare il server web Nginx.

Packet Sniffer

Uno sniffer di pacchetti (packet analyzer) è utilizzato per monitorare il traffico di rete, esaminando i flussi di pacchetti di dati che scorrono tra computer su una rete. Per iniziare con il progetto, studia bene i protocolli di rete., Quindi tuffati nell’implementazione di un’applicazione che rintraccia i pacchetti di rete e analizza il suo contenuto in una forma leggibile dall’uomo.

Analizzatore di Codice Statico

Statica del codice di analizzatori utilizzati per analizzare (ovviamente) il codice sorgente senza correre e scoprire i problemi che potrebbero portare a bug nell’applicazione in esecuzione. In questo modo, l’esecuzione di un analizzatore di codice statico per il progetto potrebbe risparmiare molto tempo nel debug., Progetti seri o sistemi mission-critical utilizzano analizzatori statici commerciali per verificare la qualità del codice.

Progetta e implementa il tuo analizzatore statico per qualsiasi lingua di tua scelta.

Spam Rivelatore

Implementare una libreria o un servizio che analizza i messaggi di posta elettronica per rilevare lo spam. Sei libero di implementarlo come plugin per il browser o come prodotto SaaS. Prova a utilizzare algoritmi di apprendimento automatico per migliorare il tuo sistema.,

Chess Engine

Un chess engine analizza la scacchiera e suggerisce le migliori prossima mossa. Oltre a ciò, potrebbe servire come avversario nel giocare con il computer. Implementare il motore di scacchi di nuova generazione AI-powered. Per un’ispirazione, dai un’occhiata allo Stoccafisso.,

Motori di Ricerca

La mia preferita. Ho sempre voluto implementare un motore di ricerca web super-duper in grado di competere con Google. Come puoi intuire, non è successo niente. Forse puoi implementare un motore del genere?

Progettare e implementare un sistema che indicizza miliardi di documenti in tutto il mondo, li memorizza in modo efficiente, e risponde alle query degli utenti con l’elenco più rilevante di documenti.,

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., Innanzitutto, è un’applicazione GUI. Successivamente, comprende i documenti HTTP e, naturalmente, comprende e rende correttamente HTML e CSS. E sì, esegue anche JavaScript (almeno le cose di base).

Quindi, nessun motore Chromium consentito. Un semplice browser web implementato da zero. Questa è dura. Almeno per me. È possibile saltare alcune parti brutte e mantenerlo di base, ma ancora, è difficile.,

Database In-Memory

un Altro dei miei preferiti. Il progetto sta sostanzialmente implementando il Redis. Un database in memoria mantiene tutto in memoria. Se si aggiunge un linguaggio di query ad esso, qualche azienda seria sarà sicuramente assumere.,

Minimalista OS

Un sogno di molti. Conosco molti programmatori che hanno sognato di implementare il proprio sistema operativo da zero. E una delle motivazioni di tali intenzioni suicide è immergersi nei livelli più bassi di codifica e familiarizzare con il metallo. Tutti amano il metallo!

Puoi mantenerlo semplice, ma almeno implementare diverse funzionalità critiche per il sistema operativo., E farlo da zero, ma si può dare un’occhiata al kernel di Linux. Dopo tutto, Linus ha dato un’occhiata a Minix in qualche modo.

Video Sottotitoli Generatore

Realizzare un programma che prende un video come input, analizza il contenuto, fa un po ‘ di elaborazione vocale e produce i sottotitoli per il video. Va bene avere una limitazione sulla lunghezza del video (1 o 2 minuti sarebbe fantastico).,

Custom Cipher

Ricordate quei film che gli hacker? Hai mai sognato di diventarlo? Questa è la tua occasione per fare un passo verso quel sogno infantile.

Progetta un cifrario. Implementa un’applicazione che codifica e decodifica le informazioni in base a tale codice.

Sarebbe bello se scrivessi alcuni test automatici per verificare la forza della tua creazione. In altre parole, hackerare la propria sicurezza.,

P2P Applicazione di Messaggistica

Implementare un’applicazione per chattare con un amico. La sfida è di farlo in un modo che omette un server centralizzato e avvia una connessione diretta tra due client di chat.,

la Traduzione automatica

Qualcosa di simile a Google Translate. Progetta e implementa un servizio (se hai un po ‘ di tempo libero, implementa anche l’app) che traduce un sacco di testo da una lingua all’altra.

Scegli le due lingue che desideri. Cerca di rendere il traduttore più intelligente, allenalo o correggilo lungo la strada.,

Notizie automatiche Presentatore

Si sta andando come questo. Immaginate i lettori di notizie regolari, come Feedly. E ora, immagina il presentatore di notizie della CNN, parlando di alcune ultime notizie, coronavirus,ecc. Ora, immagina un personaggio simile a un cartone animato, che legge le notizie a te (all’utente) come fanno i veri presentatori.,

Progettare e implementare un software che raccoglie le notizie (generalmente, sottoscrive i feed RSS impostati dall’utente), e li legge ad alta voce come un presentatore di notizie animato.

Sistema di Pagamento

Probabilmente avete sentito parlare di PayPal o di una Striscia o qualsiasi altro sistema di pagamento. Ora, progettare un nuovo (o di prossima generazione?) sistema di pagamento simile a uno di quelli. Simula le transazioni finanziarie e dimostra che il sistema è infallibile agli attacchi., Questo è difficile da raggiungere.

Relational Database Management System

vi siete Mai chiesti come fanno i database di lavoro sotto il cofano? Ora avete la possibilità di costruire uno. Progettare e implementare un DBMS relazionale simile a MySQL o PostgreSQL (non necessariamente supportando SQL). Non dimenticare l’indicizzazione. Sarà bello avere transazioni, ma questo non è obbligatorio.,

Assistente Virtuale

Qualcosa di simile a Siri, ma senza il controllo vocale. Basta digitare un testo, creare promemoria,porre domande, ecc. Il set di funzionalità dipende da te, ma l’utente deve sentirlo come una solida applicazione di assistente virtuale.

Questo progetto è destinato a spartphones, cioè, dovresti scriverlo per Android, o per iOS, o per entrambi usando alcune cose React Native/Flutter-like.,

Garbage Collector

Domanda veloce: che differenza c’è tra C++ e C#? Una delle differenze è che quest’ultimo ha un garbage collector. Ora, implementare un garbage collector che può essere utilizzato sia come servizio separato o un modulo integrato. La lingua e il target sono a tua scelta.,

Clone di Dropbox

Dropbox è un’applicazione di condivisione file. Si compone di client per quasi tutti i sistemi operativi, tra cui Android e iOS. Ha anche un enorme backend. Progettare e implementare la propria versione di un’applicazione di condivisione file che funziona almeno per 10 utenti e fornisce 100 Mb di spazio a ciascuno di essi. Implementare sia il server che il client (almeno per un sistema operativo).,

Contenitore Sistema di Gestione

Mi permetta di mettere la descrizione della finestra Mobile.

Docker è un insieme di prodotti PaaS (Platform as a Service) che utilizza la virtualizzazione a livello di sistema operativo per distribuire software in pacchetti chiamati contenitori. I contenitori sono isolati l’uno dall’altro e raggruppano i propri software, librerie e file di configurazione; possono comunicare tra loro attraverso canali ben definiti., Tutti i contenitori sono gestiti da un singolo kernel del sistema operativo e sono quindi più leggeri delle macchine virtuali.

Implementa la tua finestra mobile.

Contenitore Orchestrator

Diventa più difficile e più difficile. Dopo aver fatto con Docker, progettare e implementare un orchestratore.

Per ispirazione, guarda Docker Swarm o Kubernetes.,

il Software Antivirus

Non importa si utilizza Linux. E ‘ in quarantena ovunque a causa dei virus. Implementare un buon antivirus e testarlo implementando un paio di virus. Questo non è un compito facile, ma quando hai finito di implementare un sistema operativo minimalista, dovrebbe essere più facile affrontarlo.,

Firewall

I firewall di monitorare le richieste di rete, aprire o chiudere le porte sul computer. Sono fondamentalmente il primo scaglione nel sistema di difesa. Progettare e implementare un software firewall. Almeno prova qualcosa come netstat che ha anche le autorizzazioni per chiudere le porte o avvisare su richieste di rete sospette.,

Sistema di Controllo di Versione

È probabilmente l’utilizzo di Git. Potresti aver usato SVN o anche CVS. Ad ogni modo, l’idea è semplice. Implementare un nuovo sistema di controllo della versione. Mira a qualcosa di meglio di Git.

Inoltre, ricorda, Linus ha scritto la prima versione di Git in due settimane o giù di lì. Accetta la sfida, scrivi il tuo VCS in meno di 13 giorni. Alla faccia tua, Torvalds!,

Diagramma UML Generatore

Prendere qualsiasi vostro preferito linguaggi di programmazione che supportano OOP. Implementare uno strumento che prende il codice sorgente del progetto come input e genera diagrammi UML per esso.,

Time Series Database

È un software di database che memorizza ed elabora serie di tempo in modo più efficiente rispetto ai normali sistemi di gestione di database. Scopri cosa sono le serie temporali e quindi progetta e implementa un sistema di database di serie temporali.,

Blocco Strutture di Dati

Blocco di programmazione è difficile da afferrare. Ci ho provato, ho solo capito.

Implementa un insieme di strutture dati senza blocco come libreria che può essere utilizzata nei progetti di programmazione.,

Traffico Notificatore

Implementare un’applicazione (o un servizio) che informa l’utente circa il traffico.

Più di questo, suggerisce un percorso migliore verso una destinazione (impostata dall’utente).

Questa è una di quelle applicazioni che potrebbero servire come una buona idea per un avvio. Implementare un servizio davvero di qualità e il successo è garantito., È possibile combinare questo con l’assistente virtuale introdotto in precedenza, e il risultato sarà meraviglioso.

la Musica di Fusione

Implementare un software che consente di unire due o più brani musicali insieme per produrre una nuova.,

Ricetta Generatore

L’app (o servizio) genera nuove ricette e impara attraverso la strada. Quindi, quando cucini secondo la sua ricetta, lo valuti per dirgli quanto era buono. Non è una nuova idea, ma può ancora essere utile.,

Browser Plugin per Flash Cards

C’erano un sacco di duro progetti da implementare. Questo è un po ‘ più facile. Implementare un plugin per il browser (per qualsiasi browser) che permette di memorizzare le schede flash e poi li mostra in modo casuale all’utente (può essere configurato).,

Chiamata Video dell’Applicazione

Ci sono diversi video chiamata applicazioni, Zoom, Skype, Google Hangout.

Ma ancora, funzionano male se la connessione Internet è scarsa. Forse dovresti inventare un nuovo algoritmo di compressione (vedi sotto) e combinarlo con questa applicazione per implementare una nuova superba applicazione di videochiamate? Non ne sono sicuro., Fondamentalmente, questo progetto rappresenta PiperChat, progettare e implementare la migliore applicazione di chat video di qualità là fuori.

la Casualità Tester

Sembra pazzesco, un amico mi ha suggerito questo. Scrivi un software (o uno strumento), o forse escogita una formula (non sicura) che testa i risultati di un generatore di numeri casuali e verifica se quelli sono davvero casuali.,

Microservices Quadro

La progettazione di una bella pulita microservices framework che supporta i modelli di base e fornisce una serie di implementazioni di fuori della scatola. Assicurati di coprire la scoperta del servizio e la comunicazione dei microservizi.

Più funzioni aggiungi al tuo framework, maggiori sono le possibilità di vincere la sfida.

Scegli qualsiasi linguaggio di programmazione che desideri.,

Linguaggio di Programmazione Funzionale

Inventare un nuovo linguaggio di programmazione funzionale paradigma. Sii succinto, ma fornisci tutto l’ambiente per implementare programmi nella tua lingua ed eseguirli in modo indolore.,

Gioco di Strategia Motore

Uno dei modi migliori per studiare OOP è attraverso la progettazione di giochi. I giochi di solito sono basati sui motori.

Progettare e implementare un motore di gioco per i giochi di strategia. Preferibilmente, implementare un gioco basato sul motore per testarlo.,

Simulazione del Mondo

Westworld è venuta.

Implementare un servizio che consente di simulare mondi complessi con diversi set di dati iniziali. Più i dettagli, migliore è il sistema. Questo è piuttosto difficile, potrebbe richiedere molto tempo per finirlo. Keep it simple quando ti senti bloccato.,

Filmato Sistema di Raccomandazione

È una bugia, Netflix, sistema di raccomandazione fa schifo. Oltre a liste raccolte a mano di film, non ho visto un solido sistema di raccomandazione di film da nessuna parte.

Per favore, risolvi questa follia. Progettare e implementare il miglior sistema di raccomandazione film là fuori.

(Potrebbe essere necessario raschiare un sacco di database per raccogliere dati sui film.,)

Pied Piper

Qualcuno dovrebbe fare questo. Progettare e implementare un algoritmo di compressione che comprime file di grandi dimensioni in quelli piccoli. È vero che raggiungere il risultato perfetto è molto difficile, ma cerca di non limitarti a quei pensieri. Obiettivo per l’impossibile, https://en.wikipedia.org/wiki/Weissman_score

Leave A Comment