Categoria: Senza categoria

  • arkenidar.com/github

    https://arkenidar.com/github

    questo link porta all’ elenco dei raggruppamenti tematici di file di programmazione detti ” git repositories ” .

    ogni raggruppamento tematico è ricopiabile ovunque si voglia mediante una azione dell’ utente di ” clonazione git ” .

    ad esempio ricopio nel mio personal computer per modificarlo e lo ricopio su un computer pubblico ( ” computer server ” ) per pubblicarlo , ma in modo che sia utilizzabile , a differenza di github che non è preposto a questo ma ad altro .

    esempio di repository : https://github.com/arkenidar/php_http_apps_todo

    esempio di clonazione : gh repo clone arkenidar/php_http_apps_todo

    esempio di copia utilizzabile : arkenidar.com/app/todo

    in genere è possibile cercare & trovare un repository , “clonarlo” & personalizzarlo per usarlo .

    molti dei repository pubblicati hanno disponibilità di studio oltre che uso , i meccanismi sono esposti per imparare ad usarli nelle proprie creazioni anche personalizzate , ma la licenza dice a riguardo anche sul creare copie proprie secondo regole specifiche variamente liberali .

  • Introduco ChatGPT

    Oggigiorno c’è disponibilità di servizi di AI specializzati nel fornire contenuti sotto forma di discussione . interagendo si fruisce . di cosa ? è un sistema intelligente generativo : produzione testi in lingua ( supporto al redigere , riassume, spiega , traduce ) , di coding info-tech ( conosce linguaggi tecnici ) , anche di immagini ( generazione di immagini e di testo ) . tutti questi vengono prodotti nel dialogare , nel prompt in cui inserire botta e risposta , sotto forma di richieste in linguaggi naturali come l’ English e l’ Italiano che uso . questi linguaggi li comprende , come può anche comprendere codici di coding info-tech . e supporta i programmatori così . l’ interazione può essere costruzione passo per passo ( steps , fasi e passi ) , aggiunte , modifiche , debugging ( risoluzione problemi di costruzione tecnica ) , anteprima html ( questa soltanto in ClaudeAI ) . inoltre si possono copiare e incollare , scaricare , files singoli , zip files anche contenenti in un file una molteplicità di files , e parti di files ( ad esempio una modifica di differenza incrementale , cosa varia tra due versioni in modo da fare patching , rattoppo ) . Tutte le AI generative che ho sperimentato hanno facoltà di ragionamento , che venendo affinato dagli impiegati e gestori rispettivi migliorano e ad oggi non sappiamo quanto possano migliorarsi anche con nostra e mia sorpresa . Attingono , anche oltre alle definizioni date , da informazioni e comprensioni estratte dagli input degli utilizzatori e dagli input dei gestori . possono attingere da testi di libri , manuali , articoli , e altre knowledge – bases , archivi di conoscenze e comprensioni . anche prese da una risorsa web avendone indirizzo per raggiungerla , leggerla e sfruttarla nel servizio che offre .

  • S. Operativi per PC: Windows e Linux

    Sistemi operativi per Personal Computers: Microsoft Windows e distribuzioni GNU/Linux di varia provenienza.

    Esperienza personale mia: ho avuto possibilità di essere un utente di PC da anni. Ho usato Microsoft DOS e Microsoft Windows su vari PC di tipo IBM-compatibile.

    E’ successo tanto. Gli standard si sono evoluti, ad esempio per l’hardware e per la grafica in particolare. Vari software hanno conosciuto periodi anche d’oro ma con dei declini successivi.

    La TV promuoveva la cultura secondo cui i computers sono piuttosto importanti, ma importanti perchè?

    Nel tempo ho notato degli aspetti che non erano di performance tecniche o meglio, c’erano pure ma ho conosciuto aspetti legali e finanche politici.

    Legali per le leggi anti-pirateria, come per le licenze dei software e la pirateria della diffusione illecita di files commerciali (proprietà intellettuale).

    Ho anche avuto contatto con la cosiddetta “programmazione” definita come la capacità di costruire programmi informatici già menzionati con la parola “software”. Più tardi si è parlato di “sviluppatori di software”.

    Sei bravo? Rendilo un mestiere! Molti mi pressavano e io ho lasciato che avvenisse, così ho studiato per diventare “sviluppatore di programmi software”. Una storia noiosissima, secondo il metro degli standard hollywoodiani. Non l’informatica di Hollywood. Ma la “mia” informatica, per come l’ho vissuta.

    Ho conosciuto anche il sistema operativo Debian con GNOME di quei tempi, ho usato MEPIS assime a mio fratello (dividevamo il fardello), poi anche KUbuntu con quel KDE di quei tempi (ricordi universitari di hardware supportato o meno per Ubuntu/Mepis).

    Poi i social network. Una voragine. I social network hanno cambiato la società (beh lo dice il nome stesso). Ma che facciamo e che faremo?

    Così siamo nei giorni in cui Windows 11 fa la sua comparsa ufficiale (anche nel mio terzo PC HP, l’unico che è adatto, l’unico ad avere HD SSD tra l’altro, i primi due sono più antichi).

    E siamo nei giorni in cui si promette il Gaming per sistemi Linux (GNU/Linux precisamente), con drivers adatti specifici che supportano l’hardware, e … si torna alla questione dell’hardware supportato di anni e anni fa, ancora attuale. Del resto l’hardware è del dominio del sistema operativo e ho iniziato parlando di PC e hardware dei PC (IBM-compatibili!).

    Sistemi Operativi per l’hardware dei PC.

  • DOM for HTML and XML

    Document Object Model means a programmatic way of dealing with the structure of a Document (both XML Document or HTML document).

    This is DOM: https://www.w3schools.com/xml/dom_intro.asp

    But HTML adds to it: https://www.w3schools.com/jsref/dom_obj_document.asp

    E.g. this is HTML not XML: https://www.w3schools.com/jsref/met_node_insertadjacenthtml.asp

    BTW one well/widely understood way of dealing with this is: https://api.jquery.com/category/manipulation/

    ADDENDUM: there are other ways such as Ractive’s dynamic templating.

    https://ractive.js.org/tutorials/iterative-sections/

  • rsync with BASH scripting for backup

    Introduction: I needed to backup copy from my remote server (arkenidar.com personal website) to my local computer, incrementally, 3 important directories, into my Dropbox so to keep them. This does not keep into account database backup so this plus servmask’s “All-in-One WP Migration plugin” enabled me to move my partially WordPress partially “custom HTML” personal web site from Linode to DigitalOcean, after also screwing an Ubuntu’s release upgrade, with ensuing security concerns (php sources were exposed also config php files, because they weren’t processed by misconfiguration after upgrade).

    Scripting enable to ease the automating of keeping this.

    There are variables for configuring for personal use. The variable RSOPT (rsync options) enable to inject options to the rsync use.

    I am publishing because initially it was very basic and simple then it kind of grew, so I am showing it. And pertinent feedback is esteemed valuable by me.

    #!/usr/bin/env sh
    
    # env RSOPT="--dry-run" ~/Dropbox/my-www/rsync-backup-www.sh
    # env RSOPT="--dry-run --delete" ~/Dropbox/my-www/rsync-backup-www.sh
    
    HOST=arkenidar.com
    THIS=backup-www
    DEST=~/Dropbox/my-www/$THIS
    mkdir --parents $DEST
    line="-------------------------------------------------"
    echo $line
    cd $DEST && RSYNC="rsync $RSOPT -arvz root@$HOST:" && \
    echo ">> $RSYNC/root ." && $RSYNC/root . && echo $line && \
    echo ">> $RSYNC/etc/apache2 ." && $RSYNC/etc/apache2 . && echo $line && \
    echo ">> $RSYNC/var/www ." && $RSYNC/var/www . && echo $line && \
    echo ">> backup DONE (BUT databases aren't included)"
    echo $line
    

    then became:

    It has a FOR loop with BREAK condition, mimicking the “command1 && command2 && command3” semantics.

    It prints the command before executing it (ala Makefile perhaps), by custom code.

    This is my first more meaningful BASH script so I am a beginner in this. And it spanned Ubuntu Server, KUbuntu, Manjaro, Windows 10 (Cygwin, Mingw, Termius for shells). Also a use of Dropbox is used to keep them somewhere safe but accessible, other options? Someone told me of Deja-Dup but is it for remote servers? Of course one can creatively find other ways, evaluate them together using our skills and experiences, so I am asking and presenting this as clear as I manage to.

    
    HOST=arkenidar.com
    THIS=backup-www
    DEST=~/Dropbox/my-www/$THIS
    mkdir --parents $DEST
    line="-------------------------------------------------"
    echo $line
    cd $DEST && RSYNC="rsync $RSOPT -arvz root@$HOST:" && \
    
    for dir in /root /etc/apache2 /var/www ; do
    COMMAND="$RSYNC$dir ."
    echo ">> $COMMAND" && $COMMAND
    
    if [ $? -ne 0 ] ; then
        echo $line
        echo ">> Exit status is FAILURE, exiting."
        echo $line
        exit 1
    fi
    
    echo $line
    done
    
    echo ">> backup DONE (BUT databases aren't included)"
    echo $line
  • Tools per Windows (Software Makers & MS-Windows)

    Git installer che fornisce anche GitBash (GNU bash da loro preso da MinGW, minimal GNU for Windows)

    Avendo git installato si può usare un client git grafico, per git come Sublime Merge (BTW ho anche Sublime Text), o anche MS Code (MS gestisce GitHub) gestisce Git e GitHub.

    Tra gli IDE, uno specifico per il C/C++ e sue API (ed anche Fortran BTW) è CodeBlocks. Uno tra gli IDE “generici” è MS Visual C++/Visual Studio (da cui si ispira MS Code).

    Per accedere al server remoto uso ssh, o via MSYS o via CygWin (ambo i casi installo “openssh”).

  • arkenidar tools

    E’ possibile usare 3 tools protetti da password per avere nel browser: shell+upload+editing.

    Si installano clonando il repository Git ospitato su github.com/arkenidar/tools.

    Si configura la password creando un file avente questo nome: “secrets.php”.

    E questo contenuto:

    <?php $secret_password= “…password…qui…”;

    E’ tutto semplicistico ma può avere un valore didattico o anche in quanto tools può consentire alcune operazioni.

  • usare il cervello

    Vorrei imparare ad usare il mio cervello. Ho un concetto ampio di uso. Uso che sviluppa le funzioni e abilità. Uso che dà percezioni ampliate e dettagliate. Uso che gestisce le facoltà di uso della memoria e della memorizzazione, con tutto quello che è richiamo mnemonico, ricombinazione delle memorie, percezione delle strutture mnemoniche di memorizzazione e richiamo. Capacità di sentire percettivamente, esterna, coi sensi esterni, più percezione ulteriori. Capacità di osservare, di superare la catalogazione della realtà ma vederla senza limitazioni di percezione insite nella catalogazione. Percezione dei fenomeni con capacità di anticipazione senza però scadere in manie di controllo e dominio delle realtà e delle cose, dei sistemi. Capacità di percepire le esigenze altrui, le emozioni e mentalità altrui e proprie, con capacità di interazione anche se interfacciata da suoni, grafica, o testo, vedasi chat, presenza, etc. Capacità di cogliere i dettagli, da attento osservatore di tutta la realtà, niente escluso, anche i dettagli delle proprie realtà interiori, fittizie o fondate che siano. Capacità di superare le illusioni, la convenienza, la pigrizia fisica e fisiologica, l’indagare sempre a fondo per comprendere. Le capacità di comunicare, di usare linguaggi e mezzi comunicativi, stratagemmi e tecniche, ma senza scadere nella manipolatività. Avere una disposizione verso la vita e le vite che possa favorire che avvenga quanto necessario, e anche uno svolgimento dei processi vitali agevole o comunque possibile. Capacità di raccogliere internamente e ricollezionare, ricapitolare, sapere e sapere di sapere e di non sapere, distinguendo, sapendo come si sa, se i mezzi sono adeguati. Sapere per non ignorare e negare attivamente o passivamente la vita. Sapere vivere tutti gli attimi, sapere riconoscere cosa è unico in quell’attimo sfuggente e viverlo prima che non sia più. Riconoscere le proprie virtù senza idealizzare, le proprie caratteristiche anche ripetitive o negate e non ammesse a nessuno, saper riconoscere i propri difetti, sapere cosa hanno causato e causeranno, sapere come rimuoverli e spezzarli affinché nuociano sempre meno. Sapere costruirsi interiormente, non soltanto logisticamente e interpersonalmente, socialmente, sapere divenire e maturare, sapere invecchiare e morire. Saper essere mortali come siano soggetti a limitatezza, imperfezione, incompletezza, temporaneità, mortalità, limitatezze di percezione, di funzionamento, di espressione, di capacità di scelta, di attuazione e di coerenza, di dominio di sé senza mancare di essere anche spontanei senza reprimere ma esprimere e non esprimere con maestria dei propri mezzi. Saper rinunciare, saper accettare ciò che non conviene, saper arrendersi, saper riconoscere e discriminare che atteggiamenti avere anche senza scadere nel pessimismo passivo, vittime di destini che invece possiamo influenzare, come di fatti accade consapevoli o meno. Sapersi ergere oltre la miseria umana, oltre le impotenze e frustrazioni, oltre le mancanze e i vuoti, oltre le incapacità e gli ostacoli. Avere obiettivi senza però esagerare diventando ciechi al riconoscere che non ci sono soltanto obiettivi e quindi mezzi, ma anche processi nel tempo e cose che non possiamo interamente determinare finché siamo in queste condizioni, nostre, mie e tue e di molti prima e forse dopo di noi.

  • Grafica 2D e GameDev [ITA]

    Un canale YouTube molto interessante per chi vuole usare C++ e API di grafica.

    Sviluppo Giochi usando SDL (sua API)

    SDL-PrinceOfPersia: da un gioco DOS un suo meticoloso ReMake usando SDL2. https://github.com/NagyD/SDLPoP . BTW per compilarlo: https://github.com/NagyD/SDLPoP#gnulinux-1

  • About SDL2 combos [ENG]

    SDL2 (Simple DirectMedia Layer) is the software layer that allows a cross platform handling of basilar Video Output, User Input, and so on. It has allowed Software Creators to reuse “programs source codes” across (as I said) several Platforms namely Windows, GNU/Linux, Mac and more recently even Android.

    SDL2 can be used as a BackEnd for OpenGL(*) applications, providing cross-platform windowing, graphic output in “desktop” windows, input both from Mouse, Gamepad, Keyboard. (*) Vulkan too more recently

    SDL2 can be used as a BackEnd for Cairo Graphics, too, allowing cross-platform app creation with advanced graphics and vector graphics.

    https://github.com/tsuu32/sdl2-cairo-example

    https://cairographics.org/SDL/ and other links listed below mentioned in the above linked page: https://github.com/tsuu32/sdl2-cairo-example

    Helpful Links

  • Sistemi Operativi

    Si fa il download di un file “*.iso” di “immagine memoria avviabile”, utile a produrre CD/DVD avviabili, ma anche scrivibile su memorie rimovibili elettroniche di tipo Flash, scrivibili elettronicamente e riscrivibili (scrittura non definitiva).

    Ad esempio ho usato questi sistemi avviabili per provare prima e installare dopo alcuni Sistemi Operativi: Windows 10, Debian, Manjaro, Mint.

    Per questo si può scaricare uno di tali file che sono avviabili all’accensione del computer, inserendo una memoria piena di uno di questi, e avviando anziché da hard-disk interno invece da memoria esterna rimovibile: DVD avviabile, Flash USB, SD card, etc.

    Per scaricare si possono usare anche clients BitTorrent (ad esempio Transmission).

    Per poi scrivere il file “*.iso” così ottenuto in una memoria esterna da cui avviare il sistema operativo da installare al riavvio del computer, a fini di installazione (memoria esterna poi rimuovibile e anche resettabile), installazione su memoria interna non rimuovibile (che solitamente ha già almeno un Sistema Operativo ma si può fare spazio per dedicare una o più “partizioni del disco” ai vari requisiti dell’installazione dei sistemi operativi. Un requisito è spazio libero in memoria del disco interno).

    Si può scrivere tale file ISO mediante Etcher, ad esempio. Oppure altro esempio è qualcosa del tipo:

    sudo dd if=manjaro-kde-21.2.2-220123-linux515.iso of=/dev/sdb status=progress bs=4M && sync && echo “iso dd DONE” # ManjaroOS, KDE

    singolo rigo che combina più operazioni, via shell Bash-like, su sistema Unix-like
  • intuito? domanda!

    https://www.youtube.com/watch?v=7tXl2M14Yhg&t=14s

    (YOUTUBE) Never try to be intuitive, Sadhguru about intuition and gut feeling (non incorporabile come i video precedenti, accessibile da YouTube ma non da siti esterni come questo)

  • HTTPd, PHP, WordPress

    Impersonalmente (per quanto possibile e pratico):

    HTTPd https://httpd.apache.org/ anche chiamato Apache2 è un software che consente di fornire delle cose partendo da un link HTTP (anche detto URL, qualcosa come https://google.com).

    Può fornire anche HTML+Scripts in modo da dare agli utilizzatori non soltanto testi (o ipertesti) ma anche modi di interagire. In questo PHP e JavaScript sono importanti.

    WordPress è un sistema di pubblicazione sul WWW di Internet. Usa PHP e JS (JavaScript), e in quanto WorldWide Web usa HTML (linguaggio nato per gli HyperTexts).

    Personalmente:

    Si possono fare siti con i suddetti ingredienti in tanti modi. Con gli stessi ingredienti tante ricette possibili (ed esistono pure altri ingredienti sui quali non mi concentro adesso). Con gli ingredienti del HTTP/HTML PHP/JS ad esempio è costruita anche WikiPedia, ed anche altre casistiche esistono.

    Dicono che sia storico, ma anche obsoleto, ma quel che fa lo fa bene. Se cercate qualcosa che faccia tutto, auguri, partitene alla sua ricerca e quando tornate fatemi indagare su cosa avete trovato, qualora si possa trovare qualcosa che fa tutto e lo fa bene.

  • piccoli passi: nota Facebook

    [PREMETTENDO] Leggere prima questo articolo : https://www.caveri.it/blog/2016/05/02/le-preghierevera-e-falsadi-saint-exup%C3%A9ry

    l’arte dei piccoli passi.

    Non ti chiedo né miracoli né visioni
    ma solo la forza necessaria per questo giorno!
    Rendimi attento e inventivo per scegliere
    al momento giusto
    le conoscenze ed esperienze
    che mi toccano particolarmente.
    Rendi più consapevoli le mie scelte
    nell’uso del mio tempo.
    Donami di capire ciò che è essenziale
    e ciò che è soltanto secondario.
    Io ti chiedo la forza, l’autocontrollo e la misura:
    che non mi lasci, semplicemente,
    portare dalla vita
    ma organizzi con sapienza
    lo svolgimento della giornata.
    Aiutami a far fronte,
    il meglio possibile,
    all’immediato
    e a riconoscere l’ora presente
    come la più importante.
    Dammi di riconoscere
    con lucidità
    che le difficoltà e i fallimenti
    che accompagnano la vita
    sono occasione di crescita e maturazione.
    Fa’ di me un uomo capace di raggiungere
    coloro che hanno perso la speranza.
    E dammi non quello che io desidero
    ma solo ciò di cui ho davvero bisogno.

    Signore, insegnami l’arte dei piccoli passi.

    Antoine de Saint-Exupéry

    Andre Memnun says «I know that many problems solve themselves, so please teach me patience.You know how much we need friendship. Make me worthy of this nicest, hardest, riskiest and most fragile gift of life.Give me enough imagination to be able to share with someone a little bit of warmth, in the right place, at the right time, with words or with silence.Spare me the fear of missing out on life.» *_*

    https://www.facebook.com/notes/396439118024690/

  • Spring Framework

    Di recente sto studiando (anzi ri-studiando, proseguendo/approfondendo) il vasto framework Spring.

    Ho applicato lo studio in alcune basi di source code, che elenco qui:

    https://github.com/arkenidar/combo/

    https://github.com/arkenidar/spring-demo1

    In esse mostro:

    • Templating lato server con Thymeleaf o FreeMarker.
    • Templating lato client con AJAX JSON via JQuery e RactiveJS per il templating lato client reattivo.
    • Gestione delle variabili di sessione (va configurato ad esempio su DBMS come session storage).
    • Accesso ad RDBMS via JDBC (sia PostgreSQL che MySQL) con inserimento di dati presi dal database nel template (in un caso un template FreeMarker).

    Potrebbe essere abbastanza per iniziare (per chi non ha iniziato magari concretamente dopo le lezioni) e per approfondire ancora (senza perdersi e disperdere gli sforzi che devono essere sforzi mirati).

    PS: ho fatto qualcosa di simile negli studi di backend web in linguaggio Go, per ExpressJS di NodeJS, e ovviamente in PHP (dato che è stato il mio primo e più esteso studio di backend web).

  • HTTP e Web

    Nelle web-app (applicazioni software costruite mediante tecnologie web e fruibili via web) ci sono due suddivisioni: client e server.

    Un client si connette al server. Nel caso web, quindi avendo un server HTTP, ci sono Richieste HTTP (HTTP Request) e Risposte HTTP (HTTP Response).

    Un utente mediante il client HTTP (ad esempio un web-browser come Mozilla Firefox o Google Chrome) effettua richieste HTTP che il server (backend) risponderà con una risposta HTTP che il client HTTP elaborerà (nel frontend, la parte vicina all’utente, ad esempio che gestisce l’aspetto grafico dell’interfaccia grafica utente di una web-app).

    Per gestire le richieste ci si serve ad esempio di un Controller, un componente software che risponde alle richieste all’interno della web-app lato server (back-end).

    Mi vengono in mente alcuni design pattern, ovvero modi riutilizzabili di strutturare i meccanismi software, modi ricorrenti e standardizzati conseguentemente.

    Il pattern Front Controller specifica che le richieste HTTP sono filtrate dal front controller che le gestisce, gestendo quindi un filtraggio dell’accesso alle risorse HTTP, ad esempio con blocchi in caso di mancata autorizzazione all’accesso, elaborazioni quali il templating HTML, che vedremo tra poco, e tutte le altre necessità che questa strutturazione software consente di risolvere (strutturazione architetturale).

    Il Templating HTML è un modo di riusare del codice HTML, che però può variare, avendo quindi parti prefissate e altre inserite all’occorrenza dinamicamente dal software. Il look appare consistente anche grazie a questo.

    Nel design pattern MVC (ModelloVistaControllore) il controllore gestisce le richieste HTTP (iniziate dal client e risposte dal server che le invia al client che le elabora). La vista è un template HTML che viene dinamicizzato dal Modello contenente i dati del software da mostrare (inserendo tali dati nella vista/template HTML).

    Il templating può essere effettuato sia lato server sia lato client, anche mescolando gli approcci risolutivi nella stessa applicazione.

    Un templating lato server è ottenibile quando il controllore passa i dati del modello alla vista come template HTML elaborato lato server. Al client arriva il template già riempito con i dati.

    Un templating lato client HTTP è ottenibile mediante una richiesta del modello al server, e una volta ricevuto il modello dal server esso riempirà le parti dinamiche del template lato client (ad esempio un client HTML+JavaScript che mediante il JS genera l’ HTML dinamico servendosi dei dati del modello ottenuto mediante una apposita richiesta HTTP, stile AJAX/REST). Il client riempe il template con i dati, presi i dati dal server (e dall’utente).

    Quindi i template esistono sia nel client che nel server, seguendo un design di una architettura distribuita, in questo caso distribuita tra clients e servers (come potrebbe anche esserlo tra nodi di rete e peers vedasi PeerToPeer/P2P).

  • focus sistemi software

    Questo è il focus che emerge e che probabilmente mi guiderà. Non dico di seguirlo, forse neanche io lo seguirò tra scelte vincolate e necessità di scelta.

    Java

    Linguaggio storico. Linguaggio longevo e attivamente usato. Sta ancora crescendo. Applicabile come Web Back-end con Spring Web.

    JavaScript

    Linguaggio modernizzato, accresciuto di recente, con TypeScript ha un supporto alla tipizzazione statica (tipizzazione in questo simile a Java). Applicabile come Web Front-end, sia come Javascript/ECMAScript che come TypeScript.

    https://www.analyticsinsight.net/top-10-programming-languages-used-in-popular-websites/
    articolo d’ispirazione a questo mio articolo, poi modificato al mio caso personalizzato