/t/ - Tecnologia

Nome
Email
Messaggio
File
Password (Per rimozione del file)
Limiti: Caratteri: 7200
Numero massimo file: 10
Upload massimo supportato: 20MB
Lunghezza massima video: 5 minuti

Vai in fondo ] [ Torna ] [ Catalogo ]   [Archivio temporaneo] — 


File: 1726743666906.png (99.62 KB, 1695x670, ClipboardImage.png)

 No.1286

In questi giorni avevo intenzione di tornare ad utilizzare C++ senza sapere di preciso il perché. Comincio quindi dalla scelta del compilatore che si rivela essere l'ambiente mingw64 (dato che sono su winzozz) per poi procedere all IDE, quest'ultimo purtroppo Eclipse, dato che CLion come tutto il resto della suite IntelliJ sono diventati meme (assieme a VScode). Settato e poi il vuoto.

Comincio con il cercare in rete alcune idee per progetti intermedi, giusto per soddisfare la mia smania. Nulla di ché ma alla fine tra i vari siti mi ritrovo sempre proposto un sistema di gestione alunni/dipendenti e cazzi vari. Comincio a pensare allora a questa possibilità, e di base mi ritroverei a creare un programmino in CLI che comunica con un DB
>la CLI mi sta sul cazzo

Penso allora che dovrò realizzare una GUI
>>989
>PTSD

Escogito allora di dover realizzare un web server in C++, peccato che abituato a robette come Java+Tomcat e Python+Flask mi aspetto qualche framework cross-platform capace di gestire il tutto. Quanto cazzo mi sbagliavo! Dopo innumerevoli ricerche su Google (perché su youtube si trovano solo 2/3 video al riguardo) scopro che il networking in C++ deve essere gestito più "a basso livello" in termini di settings di comunicazione, come creare socket, metterlo in ascolto e altri cazzi che non ricordo da anni dopo l'esame di Sistemi e Reti da 9 crediti…

>Porco_dio.png

Il problema continua dato che in base al SO devono essere fatte delle chiamate di sistema, e quelle di winzozz sono scritte da ritardati, sebbene in certi casi rispettano la logica e la sintassi di quelle di sistemi UNIX-based (dopotutto si basano su standard di protocollo quale TCP/IP)

Insomma, mi riduco a fare un copia ed incolla del codice e sto ancora ora cercando di capire cosa fa ogni singola cazzo di riga di codice, e il manuale delle API di windows non aiuta affatto.

Mi sento un coglione perché mi son reso conto che fino ad ora, anche a livello accademico, ho sempre e solo gestito merda fatta da qualcun altro che sotto il cofano fa si e no girare la stessa merda che ho copiato ed incollato.

In ogni caso, esiste qualcosa che mi consente di portare avanti un progettino in C++ rispolverando le basi e senza farmi sentire un completo coglione?

Oltretutto nel 2024, vale ancora la pena considerarlo come linguaggio? C'è rust che praticamente è una sandbox piena di limitazioni e da imposizioni di scrittura che sfidano anche il mio di autismo. Vorrei rimanere nel compilato ma evitando bytecode e JVM. Che dite?

 No.1287


CrowCpp
https://crowcpp.org
Crow is a C++ framework for creating HTTP or Websocket web services. It uses routing similar to Python's Flask which makes it easy to use.

 No.1288

(non so se gira sotto mingw, buona fortuna, ne avrai bisogno)

un altro framework fico è openframeworks, ma è piu orientato a giochini e UI

 No.1289

>>1288
Il problemino è aggirare lo scoglio vcpkg per il corretto setup

 No.1290

File: 1726759909630.png (1.06 MB, 929x1009, ClipboardImage.png)

Il C++ è una merdaccia.

Nei primi anni '80 il suo inventore era partito dall'idea di "C with classes", cioè di estendere la "struct" del linguaggio C per darle constructor, destructor, metodi, e privilegi public/private.
E la classica, comodissima RAII (inizializzazione automatica di un oggetto appena dichiarato).
E di consentire che fossero "ereditabili".
E fin qui tutto bene.
L'unica difficoltà operativa era di scrivere una libreria standard di funzioni che evitasse al programmatore di "reinventarsi la ruota" ogni volta: "ehi, ti serve una linked list? una stringa? abbiamo tutto già pronto".

Quando poi aggiunse l'idea del polimorfismo e dell'overload delle funzioni, iniziò il caos.
E in quarant'anni il caos si è moltiplicato abbestia: eccezioni, templating, nuove keywords, nuovi pragmas…
È stato tutto un aggiungere feature sempre più ridicole.
E per interi decenni i messaggi di errore sono stati un casino assurdo (centinaia di righe per una virgola di troppo).

Avrebbe dovuto fermarsi lì, all'ereditarietà e proibire qualsiasi nuovo progetto "interno", e concentrarsi su uno standard per le feature più utilizzate (semafori/mutex, problema c10k, ecc.) e dire a chiunque esagerasse: "se chiedi questo significa che il C++ non è il linguaggio adatto a te".

Avrebbe addirittura potuto far certificare dal compilatore che un dato file sorgente è "più sicuro" perché privo di aritmetica di puntatori e utilizzante solo RAII. (Certo, troppo spesso c'è bisogno di allocazioni dinamiche e puntatori, ma se "educhi" il developer ad avere le operazioni "pericolose" in un unico file, faciliti drammaticamente il debugging).

Da anni il C++ tenta di scopiazzare freneticamente il Rust: range, varianti, ecc.
L'ultima ridicola novità è lo scopiazzo di borrow checking, mutabilità, lifetimes, ecc. (sul serio: https://safecpp.org/P3390R0.html )

TL;DR: ti conviene imparare il Rust per i grossi progetti, e il Ruby per i piccoli progetti.

Certo, c'è la ridicola faccendaccia del dover fare tutto a basso livello in Rust (devi preparare il buffering se vuoi leggere da un file, e devi gestire a semi-basso livello i socket se vuoi fare un webserver, esattamente la stessa caciara che avresti fatto in C/C++, ma son cose inevitabili se vuoi creare un sorgente ricompilabile anche su qualche altra piattaforma). Ma nel medio e lungo termine dà soddisfazione.

E comunque una volta assaggiati i rognosissimi borrow-checking e lifetimes comincerai a chiederti come mai nessuno ci aveva mai pensato prima.

p.s.: il mio webserver personalizzato è scritto in Ruby è 159 righe di codice. Tante, eh? Infatti include la configurazione iniziale e sanitizza e gestisce cookies, parametri da url e da form, timeout anomali, eccesso di request, status, e persino debug se la request è da localhost. Qualora il mio blog superasse le 20-30 requests al secondo, dovrò riscrivermelo, e certo non me la caverò con 159 righe di Rust o C++

 No.1291

File: 1726760823818.png (79.83 KB, 984x818, ClipboardImage.png)

Boh, per il momento mi sono arreso e ho deciso di fare qualche esercizio di ricorsione basilare, a tempo perso…

>>1290
Rust sega troppo le gambe e scoccia subito per via del suo essere "memory safe" che non so fino a che punto sia un meme anche se da quel che ho capito è stato integrato nel kernel in linux, ma di sicuro se devo scegliere in che ambito ricreare il networking, non sceglierei né il C++ né Rust…

Ruby, avevo intenzione di esplorarlo, ne vale la pena?

 No.1292 RABBIA!

>>1291
>Ruby è un linguaggio di programmazione interpretato
Come non detto

 No.1293

>>1290
Il C ha senso solo perché è modellato praticamente sull'Assembler.
(infatti oggi ha senso solo per robe come il kernel Linux: il singolo programmatore, scrivendo in C, praticamente sa cosa verrà generato in assembler, sa che non ci saranno sorprese, che non ci saranno function calls al di fuori di quelle che ha scritto lui, che non ci saranno movimenti sullo stack che non ha fatto lui, ecc.)

Il C++ poteva aver senso solo perché qualcuno cominciava a rendersi conto che il C, facile da imparare, non era adatto a "grossi progetti" nei quali la garbage collection e la programmazione funzionale creavano più problemi di quanti non ne risolvessero. E le robette come Basic e Pascal erano altrettanto inadatte.

Rust è tuttora il linguaggio definitivo per qualsiasi progetto "di sistema" (se dovete scrivere un gestionale userete un linguaggio adatto).

 No.1294

>>1293
Fnaculo, me ne ritorno su GO

 No.1295

File: 1726764885647.png (37.37 KB, 1206x403, ClipboardImage.png)

>>1291
Sì, ne vale la pena.
Contiene il meglio di Python e di Perl, più una sintassi leggibile e senza fronzoli. Si diventa produttivi in un solo pomeriggio.

Niente fronzoli: guarda come definisco la funzione isPalindromo.
Duck typing: "parola" non definisco di che tipo è; è sufficiente che supporti le funzioni che verranno usate (altrimenti ERROR).

While parola: "finché parola non è nil, si può procedere"
Niente fronzoli: "ritorna false se il primo e l'ultimo carattere non coincidono". Le if possono essere anche poste dopo, se non c'è ambiguità.

Nota come gli indici negativi indicano gli ultimi caratteri (-1 l'ultimo, -2 il penultimo…).
Dopo il confronto, elimino il primo e l'ultimo carattere e proseguo col while. Nota l'uso di range ("da 1 a… -2").

Niente fronzoli: il return si può perfino omettere, perché ogni funzione restituisce l'ultimo valore calcolato. E quindi se metto true… ritornerà true.

Niente fronzoli: le parentesi tonde per indicare gli argomenti, quando non ci sono ambiguità, si possono sopprimere. Perciò puts "Inserire parola".

Gets: prende una riga di input conservando il carriage return finale (che infatti la funzione "chomp" lo toglie, se è presente). Immagina leggere la prima riga di un file scrivendo solo: riga = open('file.txt').gets

Nota come all'interno di una stringa si possano eseguire espressioni e chiamate di funzioni e prenderne il risultato:
puts "uno più due fa #{1+2}" # indovina cosa ti scrive

Nota pure che le stringhe le puoi delimitare o da apici singoli, o da doppi.
Così, per evitare i backslash, ho usato 'è palindroma'

Nota pure l'operatore "x ? a : b" come nel linguaggio C.

E non è detto che la mia versione sia la più sintetica.
Vedi ad esempio la funzione "reverse" delle stringhe:
https://stackoverflow.com/questions/57966597/how-to-check-if-a-word-is-a-palindrome-without-using-string-reverse-method-in

 No.1296

File: 1726766265552.png (23.42 KB, 1075x156, ClipboardImage.png)

>>1294
Il Go è una merda, non per niente è un prodotto Google sotto mentite spoglie di "community"

Quando annunciarono la 1.0 ci stavo per cascare anch'io, senza capire che essendo una roba di Google era intesa ad essere usata dai monkeycoders (le scimmie caga-codice, quelli che a 39 anni stanno ancora a scrivere procedurine backend rendendosi conto che in vent'anni ancora non riescono a uscire dal girone dantesco Java + Python + Go + Javascript) e che prima o poi avrebbe tradito clamorosamente tutte le promesse (infatti alla fine della fiera hanno introdotto i generics e altre cazzate che non ricordo ma che erano comunque da girone dantesco).

>>1295
Avevo dimenticato di far notare che se da una stringa togli tutti i caratteri e poi tenti di indicizzare, ti resta un bel nil, cioè la parola è palindroma, ed esce col true.

Cioè certe cose che negli altri linguaggi sono pericolose (indici fuori stringa, nil al posto di una stringa, ecc.) in Ruby diventano features: if/while escono sia col false che col nil.

Ruby ha anche le regex, comodissime.
"Sei uno sporcaccione" se la parola che hai inserito contiene "merd", "strunz", "stronz", e quella 'i' dopo l'espressione regex indica case insensitive, cioè sei uno sporcaccione anche se scrivi usando qualche maiuscola.

 No.1297

>>1295
>>1296
Sarà che la sintassi la trovo complicata (abituato ad altri tipi) ma il solo fatto che sia interpretato è un grosso no…

 No.1298

>>1297

"Interpretato" significa solo due cose:
1. che è lento ma solo se devi trattare quantità di dati pazzesche
2. che il sorgente resta leggibile se lo installi dal cliente

 No.1301

ruby cadrà nel dimenticatoio prima di c/c++ .

 No.1302

File: 1726829924746.png (110.9 KB, 962x841, ClipboardImage.png)

Tutto sommato, Go non è malaccio dai

 No.1303 RABBIA!

>>1302
Una cosa "simpatica" è che ho dovuto usare
>utf8.RuneCountInString(stringa)
Perché
>len(stringa)
Non conta i caratteri ma il numero di byte

 No.1304

una cosa che mi fa rosicare A BESTIA di go è che richiede gli import in ordine alfabetico (!) e se li importi e non li usi non ti compila un cazzo

dioporco sei un computer, mettili in ordine tu e se non li uso non li linki e basta, che cacata, vaffanculo


nella stessa vena odio l' uso whitespace di python. Ho scoperto che c'è un preprocessore chiamato bython dove puoi usare {} al posto del whitespace, devo trovare un modo per usarlo dentro jupyter
/rant

 No.1305

>>1302

Simile al C++ e inutilmente verboso.

Penso che l'obbligo di importare in ordine alfabetico e la caciara sugli unused import siano dovuti proprio a scassare gli zebedei ai caga-codice distrattoni.

Go è letteralmente creato per quei coglioni che sanno pochi elementi basilari di programmazione e non riescono a imparare niente, non riescono a imparare concetti astratti (motivo per cui i generics non li avevano mai voluti inserire nel linguaggio, salvo poi a un certo punto doversi ricredere perché c'era troppo codice copiaincollato in enormi codebase sparpagliate nel mondo).

 No.1306

>>1304
Python è una merda, ma è dovuto al fatto che il suo inventore era piuttosto autistico (il nome del linguaggio deriva da una merda di spettacolo musical di merda, e le spaziature dipendevano dall'autismo autisticamente sperglord), peggiorando poi nel tempo.
A furia di mantenere la retrocompatibilità, arrivarono alla 2.6-2.7 che era tutto un casino.

Sicché lui e i suoi fidatissimi progettarono drammatici cambiamenti al linguaggio, salvo poi scontrarsi con la vecchia guardia che voleva la maggior retrocompatibilità possibile, e ci furono comunque anni di guerre (e di bugs/crash dovuti al porting 2→3) prima che Python 3.x prendesse piede. E comunque le distro devono ancora contenere la 2.x prima di scatenare il caos.

E tutto questo perché quelle merde di distro maintainers preferirono Python a Ruby, in quanto Ruby richiedeva qualche megabyte in più di spazio su disco. (Ah, i bei tempi di OpenMoko, e quindi di Maemo…).

Una delle faccende più tragicomiche fu la print, che nel Python 1 e 2 era un comando (quindi la sintassi era peculiare), mentre nel 3 diventava una funzione (quindi gestirla divenne un casino).

Sono uno dei pochi fortunati che a suo tempo non si è cimentato su Python e Go, divertendosi poi a veder naufragare nella frustrazione coloro che ci avevano creduto. (Vale lo stesso per tutta quella catasta di merda di Angular, React, eccetera, condoglianze a chi ci ha dovuto lavorare e sputarci sangue).

 No.1309

File: 1726844994594.png (77.57 KB, 866x760, ClipboardImage.png)

>>1305
>l'obbligo di importare in ordine alfabetico
Anon ma che vai blaterando? In pic rel ho importato prima strings e poi fmt e ha compilato normalmente string importato a casaccio proprio per verificare sta cosa degli import

In ogni caso sembra gestire i puntatori proprio come nel C/C++ il che è buono immagino

Sto solo avendo un pelo di difficoltà ad immaginare come muovermi in termini di OOP, dato che qui abbiamo le strutture e ho difficoltà a capire come implementare i metodi e se c'è una suddivisione public/private/protected

 No.1312

>>1309
versioni precedenti.

 No.1313 RABBIA!

File: 1726848759977.png (35.07 KB, 881x403, ClipboardImage.png)

una cosa assai interessante che ho scoperto è che Go, a differenza di C/C++ non supporta alcun tipo di aritmetica dei puntatori, probabilmente sulla falsa riga delle motivazioni di rust

In questo caso azz punta all'indirizzo di del secondo elemento dell array cioè 6 che ipotizziamo stia alla locazione 0x0000000af
In C/C++ facendo azz++ si dovrebbe incrementare di 1 l'indirizzo della locazione, arrivando a 0x0000000b0 e di conseguenza puntando al 3° elemento dell array, cioè 44, questo sempre che C/C++ allochi sequenzialmente gli indirizzi, non ricordo se funziona così e nel caso richiedo delucidazioni…

In Go non go capito cosa cazzo ho fatto, credo di aver fatto
>un casting ad un puntatore ad intero
>ricreato un puntatore che punta ad azz
>???

Boh, aiuto

 No.1314 RABBIA!

File: 1726850466879.png (22.27 KB, 408x344, ClipboardImage.png)

>>1313
>questo sempre che C/C++ allochi sequenzialmente gli indirizzi
Non ho provato in C ma ho usato Go ein pratica ho messo in stampa gli indirizzi dei vari elementi

>0xc000067f20

>0xc000067f28
>0xc000067f30
>0xc000067f38

Traduciamo gli indirizzi in decimale per una lettura più semplice non serve a un cazzo dato che pure in hex si capisce lo span di 8 unità

>824634146592

>824634146600
>824634146608
>824634146616

E sembrerebbe che sono in sequenza, nonostante lo span di 8 unità (che non ricordo a cosa è dovuto ma di sicuro è giusto, dato che quando programmavo in assembly MIPS avevo un span di 4 unità)

Quindi l'allocazione statica avviene in tempo di compilazione ma va? e avviene in sequenza, mi piacerebbe ricordare perché lo span è di 8 unità

 No.1315

>>1314

Allineamento a 64 bit (alias 8 bytes) e heap sempre a partire dall'indirizzo virtuale c000eccetera. Che poi x86 consente di usare anche allineamenti a 8 bit, solo che si usano allineamenti a 64 bit (talvolta 128) perché si risparmia un ciclo di clock…

Comico che la prima allocazione cominci a 0x67f20, cioè in quel momento sei appena in poche righe del main e hai già consumato oltre 425 kilobytes di sbobba varia.

Il MIPS che programmavi tu aveva evidentemente allineamento a 32 bit.

 No.1316

File: 1726927151136-0.png (45.38 KB, 667x698, ClipboardImage.png)

File: 1726927151136-1.png (41.8 KB, 497x709, ClipboardImage.png)

>>1315
Ah ecco svelato l'arcano, grazie mille un abbraccio! Ringraziando iddio non credo di aver bisogno di far aritmetica con i puntatori in Go dato che non esiste una vera e propria "aritmetica" qui

Nel mentre continua ad aumentare un pelino la mia lista di dubbi su Go anche se per il momento lo trovo "bello e caro".

C'è questa situazione dove sto provando una sorta di OOP attraverso le struct, e già qui mi pare una bestemmia.

Definita la struct mi risulta poco intuitiva la definizione dei metodi in particolare la sezione tra func e nome del metodo.

Nella 1a pic quando mando in stampa l'id non appare, ma se nella seconda pic imposto un puntatore alla riga 14 va

 No.1320

File: 1726996552604.png (59.5 KB, 476x412, ClipboardImage.png)

si capisce che ruby e php sono passati a miglior vita perchè non si usano neanche più nella barzellette

 No.1321

>>1286
>la CLI mi sta sul cazzo

Complimenti, ti sei candidato a una vita di programmatore stressato e sottopagato.

Ci sono cose che si possono fare solo con la CLI. Esempio:
- dimmi quanti clic in Windows/Mac ti servono per eseguire questa sequenza:
"compila questo sorgente 25 volte scaricando di volta in volta un jpeg a caso, e poi altre 25 rovinando la parte finale del jpeg della volta precedente, e assicùrati di trovare 25 compilazioni corrette e testate, e 25 corrette ma che danno errore; produci un file di log conclusivo con le sole differenze fra i 25+25 di cui sopra".

La Xerox inventò l'interfaccia grafica.

La Apple la copiò quasi identica, con lo scopo di abolire la command-line.
La Apple però dovette inventarsi qualcosa di scriptabile, come le Hypercard (e altri tentativi successivi di linguaggi di scripting), fino ad approdare alla fine a Mac OS X che era praticamente un kernel Unix ("Darwin"), con un po' di armamentario Unix, e con un'interfaccia grafica spalmata sopra.

Windows nacque perché bisognava pur copiare il successo del Mac, visto che i software MSDOS che andavano in grafica avevano tutti interfacce diverse.

Salvo le parti che richiedono immagini (come il Catasto e poche altre cose), l'intera Pubblica Amministrazione italiana (e pure le Poste) potrebbe basarsi benissimo su interfacce testuali o addirittura solo CLI.

Il madornale errore fatto nei primi anni '80 fu quello di adottare gli Olivetti M20 (con Zilog Z8000) e poi M24 (con 8086) anziché commissionare ad Olivetti un computer totalmente su specifiche statali, non di grandi prestazioni, con solo testo e grafica "artigianale", facile da riparare e manutenzionare, e marchiarlo come standard italiano obbligatorio per la PA e per la scuola.

Scrivere un sistema operativo che gestisse files e directories era fin troppo facile. MSDOS fu creato scopiazzando il CP/M che era in assembler, e MSDOS 3.0 conteneva ancora stupidissime feature del CP/M che nessuno aveva mai usato (ad esempio gli FCB, file control blocks, che erano il modo cervellotico di aprire files, mentre già da MS/DOS 1.0 avevi la normale "open" a cui passare il nome del file, e dal 2.0 avevi persino le directories).

Il bello di uno standard "PC statale" era che le aziende, pur di produrne dei cloni (a costo quasi zero perché la licenza sarebbe stata quasi gratis per chi costruiva/riparava in Italia), avrebbero fatto di tutto per conservare in Italia il più possibile della filiera produttiva (e invece abbiamo sprecato SGS, STM e altre aziende che avevano know-how), e avremmo avuto "PC statali" 100% certificati made in Italy (cioè esenti da "sanzioni"), con interscambio file con MSDOS/Windows/Mac ("siete liberi di comprarvi tecnologia straniera e veloce, ma per essere approvato per la PA e per la scuola, un software deve girare sui "PC statali"). Immaginate sistema operativo e software, coi sorgenti a disposizione delle FF.OO. o presentabili in tribunale come prova, anziché poter dire "mi hanno hackerato il pc/tablet/cellulare, vostro onore! non ne so niente, il cane mi ha mangiato i compiti, qualcuno ha messo la droga nella mia macchina e poi l'ha richiusa".

Ovviamente l'evoluzione del "PC statale" avrebbe fatto gola alla ricerca universitaria e avremmo avuto un "Italinux" che girava forte sui "PC statali" più potenti, senza distribuire idiosincrasie obbligatorie come i signal, la fork, il divieto (per decenni) di scoprire l'acqua calda (le Access Control Lists, i Cgroups2, ecc.).

Infine, avremmo costruito anche un'internet "interna" che copra solo il suolo italiano, centralizzata, inizialmente ad uso esclusivo della PA e dei servizi pubblici. (La Russia lo ha fatto: se qualcuno "stacca" la Russia dall'internet, tutti i servizi pubblici, bancari, shopping, social, continuano a funzionare; perderanno Facebook ma resteranno con VKontakte funzionante… mica fessi: l'internet è ancor più indispensabile dell'energia elettrica).

Basta, ora vado a nanna a smaltire la birra. Però quanto detto sopra è tutto vero.

 No.1322

Grazie Granigliafag, questo filo mi ha fatto capire che ho fatto più che benissimo a non intraprendere la carriera della scimmia codificante, infatti sono un neetazzo fallitazzo

 No.1323

File: 1727042473284.png (11.4 MB, 3024x4032, ClipboardImage.png)

>>1322
Mi hai fatto ricordare "Cicciobomba", il giuvinotto importante della comitiva, che a vent'anni (sarà stato nel 2002) si vantava di essere Programmatore Siquel (tutti lo ammiravamo, eravamo ragazzini sognatori), e che gli davano nientepopodimeno che uno Stipendio (porca paletta, uno Stipendio!) per fare questi mostruosi Programmi col Siquel, roba importante regà, si chiamavano Queri, che poi il Dibbì è una cosa seria, ragazzuoli, nèh.

Ventidue anni dopo quel giuvinotto è ultraquarantenne stempiato, semipelato e con numerosi capelli bianchi (bianche persino certe sopracciglia) e… -indovinereste mai?- …è ancora Programmatore Siquel nella stessa azienda. Premio fedeltà, ragazzuoli. Avrà cambiato sì e no tre tipi database nel corso degli anni ma le Queri sono sempre le stesse. Avrà imparato anche cose nuove del Siquel ma che non ha mai usato perché altrimenti qualcuno dei capi lo cazzia: "qui nessuno deve prendere iniziativa, già ci sono troppe cose scassate".

E quindi INSERT INTO TCLIENTI i soliti VALUES di 'sta ceppa. Ricontrolla per la terza volta la SELECT FROM TFORNITORI se il CODICEAZIENDA degli ultimi dieci-quindici inserimenti è stato scritto con le "o" anziché con lo "0" perché la nuova segretaria glielo puoi spiegare in mille modi ma non capirà mai (però ne capisce benissimo di selfie sui social, non per niente c'ha l'Ai Foune).

Certo, nel frattempo il cagacodice si è pure sposato (that's incredible) e c'ha pure una figlia di due anni che è più costosa di una cambiale. Ma vede davanti a sé solo un futuro fatto di UPDATE TNUOVIORDINI SET SCADCODICE2 a 'sta ceppa a pois. Le stesse cose che faceva nel 2002. Però ora c'ha il Macbook costoso del 2019, quindi sembra più professionale quando fa le Queri.

Carriera? L'unico momento in cui si è sentito premiato è stato quando nel 2014 hanno installato il distributore di merendine e caffè finti. Ma sta nel pianerottolo comune, è da condividere con le due losche aziendine dello stesso pianerottolo. Che a volte ti sembra che non esistano, perché non ci vedi quasi mai nessuno e hanno le persiane quasi sempre abbassate (proprio loro che hanno le finestre che guardano sulla strada anziché sulle pareti di cemento del "cortile" interno).

Il baretto ha cambiato gestione varie volte, eppure ha una clientela fissa composta di voialtri cagacodice e di altri disperati delle aziendine che hanno affittato uffici in quello stesso stabile bianco sporco con garage sottodimensionato. Il barista pelato vi detesta ma vi sorride sempre. Sa tutto di voi e dell'azienda, quello che non gli avete confidato lo ha sentito dalle vostre conversazioni. Ma qualora cambiasse lavoro, dal giorno dopo non ricorderà più la vostra faccia né il vostro nome.

Dopo la centesima SELECT della giornata esci di corsa che pioviggina, devi farti duecento metri fino in cima alla salita e non hai l'ombrello. Vai Pietro Mennea! Finalmente arrivi alla tua cara vecchia Punto del 2003 che comprasti a rate coi primi anni di stipendio. Diciotto chilometri per tornare a casa. Duecentomila chilometri dopo sembra pronta sempre a mollarti definitivamente (motivo per cui la parcheggi in cima alla salita, che magari ogni tanto c'è da avviarla a spinta), ma finché non finisci di pagare il mutuo non ti puoi permettere neppure una bici. Tua moglie ti detesta ma non vuole che lasci quel posto di lavoro finché non ne avrai trovato un altro più serio e più stabile. Cioè mai.

È brutta la vita della scimmietta cagacodice. L'ultimo venerdì prima di andare in pensione starai ancora cercando di connetterti al DB per fare una ALTER TABLE urgente in produzione e risistemare le cose che un altro cagacodice aveva sballato alterando la tabella FISCHI anziché FIASCHI.

 No.1324

>>1323
suspiciously detailed, o come cazz si dice su reddit

 No.1325 RABBIA!

File: 1727179708425.mp4 (495.47 KB, 1280x720, Rupert_1.mp4)

>>1324
>reddit

 No.1326

>>1296
>Go
>una roba di Google intesa ad essere usata dai monkeycoders

Lavorando in ambito networking, sono a contatto con gli schiavi del devops e questa affermazione non potrebbe essere più vicina alla realtà.

 No.1328

Go (programming language)

Wikipedia
https://en.wikipedia.org › wiki
·
Traduci questa pagina
Go is a statically typed, compiled high-level programming language designed at Google [12] by Robert Griesemer, Rob Pike, and Ken Thompson.

KEN THOMPSON, signori. Se non foste usciti dall' itis l' altroieri sapreste chi è

 No.1337

>>1323
>>1323
Sembra comfy

 No.1365

File: 1727820134727.png (285.83 KB, 1414x2138, Capture _2024-10-01-23-56-….png)

Granigliafag, che ci guadagni a postare (e, di conseguenza, ad essere insultato) da quei minorenni minorati del quarto?
E poi con un tristissimo èggiustopost, allora te le vai proprio a cercare

 No.1367

>>1365
Mona chissene fotte dell'opensorci, il progetto morirà tra due anni come tutti

 No.1368

>>1365
>>1367
Ma che cazzo ahahahaha, pure su /g/?

Ammetto che il filo era parecchio una baita anche se sotto sotto cercavo consensi contro quel figlio di puttana che non mi implementa MinWindowSize()



[Post a Reply]
Elimina post [ ]

[Nuova risposta]
Vai in cima ] [ Torna ] [ Catalogo ]