L’amore nascosto

L’amore che non può vivere alla luce del sole. L’amore nascosto, l’amore clandestino. Quello che prende davvero. Quello che uccide davvero. L’amore che chiede ancora un ultimo bacio, per quanto insensato. L’amore che dovrebbe finire. Ma non ce la fai. Non vuoi. L’amore che ti si infila silenzioso sotto la pelle, sorregge le tue gambe, ti insegna a mangiare e respirare. Quando poi manca l’amore, cosa rimane?

Quanto sarebbe bello cambiare le cose.
Non eravamo pronti, è stato solo odio e fastidio alla fine.
Sapersi immensamente innamorati ed essere consci che sarebbe mai andata.

Penso di averti cambiata

Come spesso accade cerco i tuo nome su facebook ed ovviamente sono bloccato.
A volte mi fa male e a volte mi viene da ridere. Preferisco la seconda sensazione, vuoi vedere che inizio a vedere la luce in fondo al tunnel ? 🙂

Sai, pensavo che forse ti ho cambiata, in peggio, come credo di essere cambiato io in peggio. Non ero così attento all’immagine, al fisico, non sono mai stato una persona gelosa.

Eppure con te è uscito un me nuovo, lo odio e lo amo.
Mi dispiace tanto per come ti ho trattato, per la mia gelosia ma sono stato quello che sono stato in quella partentesi della mia vita.

Non eri così come adesso, che metti foto da vamp su instagram tutta sensuale, quello è quello che siamo diventati insieme perchè anche io faccio così ora.
Guarda com’eri ? 😀 … Tutta allegra felice e spensierata e tenera con i tuoi quaderni fumettosi e la coda innocente, eri meglio prima, e forse lo ero io.

Mi dispiace tanto se ho contribuito a farti diventare così.
O forse come sempre soffro di egocentrismo, saresti diventata così a prescindere da me, anzi, forse manco ti ricordi di me.

Eppure mi blocchi.
Ogni tanto ti odio così forte.
Spero che tu sia felice.

Da docker-compose a aws fargate

Al giorno d’oggi, molto spesso capita di affidarsi a Docker per generare e gestire le infrastrutture delle nostre applicazioni al fine di eseguire test in un ambiente locale. Molte volte, infatti, gli sviluppatori ricorrono a docker-compose per creare l’infrastruttura contenente la loro applicazione, il loro web server e i loro database in diversi container Docker.

In questo articolo, vedremo insieme come rilasciare un’intera applicazione pensata su docker-compose all’interno dell’ambiente AWS utilizzando il servizio AWS ECS Fargate. Prima di iniziare a mettere le mani in pasta, capiamo insieme cos’è AWS ECS Fargate.

Definizioni: Amazon ECS e AWS Fargate in pillole

Amazon ECS è il servizio che permette di eseguire e gestire cluster di container Docker. È totalmente gestito da Amazon Web Services e facilmente scalabile in base al traffico.

Le configurazioni con cui è possibile utilizzare Amazon ECS sono due:

  • Istanze EC2 che contengono i container: con questa configurazione, le EC2 e la loro alta affidabilità, sono totalmente in capo all’utilizzatore del servizio.
  • Modalità Fargate: in maniera totalmente automatica, gestisce i container fornendo le giuste risorse computazionali.

Conosciamo ora i tre attori principali:

  1. Cluster: il raggruppamento logico delle risorse ECS.
  2. Servizio: la risorsa che permette di eseguire e mantenere uno specifico numero di istanze, attive, delle Task Definition.
  3. Task-Definition: un file di testo, in formato JSON, che contiene tutte le configurazioni dei tuoi container.

Ora che abbiamo capito cos’è e come funziona AWS ECS Fargate, entriamo nel vivo della soluzione.

Setup: Convertire i container Docker in Fargate Task Definition

Prima di iniziare a creare risorse all’interno dell’account AWS, dobbiamo dividere tutti i docker definiti all’interno del file docker-compose. Per farlo, è necessario tenere a mente alcune considerazioni:

Database definiti all’interno del docker-compose

Nel caso in cui siano presenti database all’interno del docker-compose, è altamente consigliato convertirli in risorse AWS a se stanti mediante l’utilizzo dei giusti servizi che Amazon stessa mette a disposizione. 

Per i database di tipo relazionale, ad esempio, ci si può servire di AWS RDS, un servizio totalmente gestito che supporta le maggiori tipologie di database relazionali quali PostgreSQL, MySQL e Oracle. 

Per i database non relazionali o dedicati al cache delle applicazioni, invece, si può considerare l’utilizzo di AWS DynamoDB o AWS ElastiCache.

Prediligi un approccio Stateless invece di Stateful

Per permettere alle applicazione di scalare in maniera automatica è necessario un approccio stateless. Questo significa che due richieste provenienti dalla stessa sessione utente, potranno essere eseguite indistintamente su differenti istanze della tua applicazione.

Ora che abbiamo chiarito tutti gli aspetti fondamentali, possiamo iniziare a creare le risorse AWS necessarie all’interno del tuo account. Di come deployare un’applicazione utilizzando AWS Fargate abbiamo parlato in questo articolo.

Per quanto riguarda AWS Fargate e come deployare un’applicazione utilizzando questo servizio, ne abbiamo già parlato in questo articolo.

Se sei alla ricerca di un tool magico che crei automaticamente tutto al posto tuo, allora sei nel posto giusto! 

Step 0: Installare la nuova ECS CLI

Recentemente AWS ha rilasciato una nuova utility da terminale per interagire con AWS ECS in grado di aiutarci a creare, modificare e monitorare cluster e task direttamente dal nostro ambiente di sviluppo locale. Per installarla occorre semplicemente eseguire i seguenti comandi all’interno del tuo terminale:

sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-darwin-amd64-latest

per scaricarla all’interno della tua cartella bin.

chmod +x /usr/local/bin/ecs-cli

per fornirle i permessi di esecuzione.
Fatto questo, eseguiamo

ecs-cli --version

per verificare che tutto sia andato nel modo giusto.

Step 1: Definizione di un Cluster

Ora che abbiamo installato la CLI, possiamo iniziare a creare il nostro Cluster ECS. Per farlo dovremo prima configurarlo utilizzando la CLI ECS e poi rilasciarlo all’interno del tuo account AWS.

Per configurare il cluster eseguiamo:

ecs-cli configure --cluster test --default-launch-type FARGATE --config-name test --region eu-west-1

Questo comando definisce un nuovo cluster chiamato “test”, che di default andrà a lanciare i nostri task in modalità “FARGATE” nella regione dell’Irlanda.

Ora, l’unica cosa che rimane da fare è rilasciarlo. In caso sul tuo account sia già presente una VPC che vuoi utilizzare con questo cluster, ti basterà specificare il VPC ID e le subnet di riferimento all’interno del comando di deploy:

ecs-cli up --cluster-config test --vpc YOUR_VPC_ID --subnets YOUR_SUBNET_ID_1, YOUR_SUBNET_ID_2

Se invece vuoi che sia la CLI ECS a creare e configurare una nuova VPC al posto tuo, puoi semplicemente eseguire:

ecs-cli up --cluster-config test

Questo comando creerà un Cluster ECS vuoto e, se non hai specificato una tua VPC, uno Stack CloudFormation con all’interno le risorse della VPC.

Un’altra cosa da creare è il security group che verrà utilizzato dal nostro servizio ECS. Possiamo crearlo direttamente con la CLI AWS utilizzando questi comandi:

aws ec2 create-security-group --description test --group-name testSecurityGroup --vpc-id YOUR_VPC_ID

aws ec2 authorize-security-group-ingress --group-id SECURITY_GROUP_ID_CREATED --protocol tcp --port 80 --cidr 0.0.0.0/0 --region eu-west-1

Questi comandi creano un security group associato alla VPC ID che hai passato in input al comando e ne autorizzano l’accesso sulla porta 80 da Internet. In output a questo comando vedrai l’id del security group generato. Prendi nota di questo id e del nome che hai specificato per crearlo, in quanto ci serviranno più avanti.

Step 2: Creazione del ruolo di esecuzione

Adesso che abbiamo il nostro cluster correttamente rilasciato e funzionante sul nostro account, dobbiamo creare un ruolo AWS IAM che verrà utilizzato dalla Task Definition. Questo ruolo contiene le policy di accesso dei nostri container alle risorse AWS. Per creare questo ruolo, creiamo prima un nuovo file chiamato “assume_role_policy.json” con questo contenuto:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Eseguiamo poi il seguente comando:

aws iam --region eu-west-1 create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file://assume-role_policy.json

Una volta che il ruolo è stato creato, dobbiamo solo agganciare la policy che permetterà ai container di creare dei nuovi Log Group su AWS CloudWatch. Puoi semplicemente farlo eseguendo questo comando:

aws iam --region eu-west-1 attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Step 3: Docker-Compose File e File di configurazione Ecs

Il prossimo step è quello di modificare il nostro docker-compose file con alcune configurazioni AWS. Ricordati che, al momento della scrittura di questo articolo, le uniche versioni di docker-compose supportate sono la 1, 2 e la 3.
Supponiamo di avere un docker-compose come questo:

version: '3'
services:
  web:
    image: nginx 
    ports:
      - "80:80"

Come puoi vedere, definisce semplicemente un servizio web NGINX, ed espone il tutto sulla porta 80. Quello che dobbiamo fare adesso è aggiungere le configurazioni per i logs come da best practices AWS. Queste configurazioni permetteranno ad AWS di gestire i log mediante il servizio AWS CloudWatch.

version: '3'
services:
  web:
    image: nginx 
    ports:
      - "80:80"
    logging:
      driver: awslogs
      options: 
        awslogs-group: tutorial
        awslogs-region: eu-west-1
        awslogs-stream-prefix: web

Le configurazioni per il log contengono:
la proprietà driver che deve essere settata con “awslogs”, la quale dice ad ECS di utilizzare il servizio CloudWatch per salvare i log del container.
La sezione options che definisce il nome del log group che verrà creato automaticamente su CloudWatch, la regione AWS e il prefisso per lo stream di log.

Adesso che abbiamo modificato il docker-compose, non ci resta che creare un nuovo file, “ecs-params.yml”, contenente tutte le configurazioni del nostro ECS Cluster e del nostro servizio ECS. In questo file potremo specificare:
Tutte le configurazioni di networking come la vpc dove eseguire il servizio e le relative subnets.
Il ruolo di esecuzione del nostro container, dove utilizzeremo il ruolo definito nel secondo step.
Tutte le configurazioni per il nostro container, come CPU e RAM del container.

Per il nostro esempio, definiremo un file contenente le configurazioni di base:

version: 1
task_definition:
  task_execution_role: YOUR_ECS_TASK_EXECUTION_ROLE_NAME
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 0.5GB
    cpu_limit: 256
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - "YOUR SUBNET ID 1"
        - "YOUR SUBNET ID 2"
      security_groups:
        - "YOUR SECURITY GROUP ID"
      assign_public_ip: ENABLED

Nel campo “task_execution_role”, andremo a inserire il nome del ruolo definito nel secondo step.

Nel campo “subnets” e nel campo “security_groups”, invece, inseriremo gli ID delle subnet pubbliche e l’id del security group definiti nel primo step.

Step 4: Deploy del docker-compose

Ci siamo! È il momento di rilasciare la nostra soluzione sull’account AWS:

ecs-cli compose --project-name test service up --create-log-groups --cluster-config test

Verifichiamo lo stato del servizio eseguendo il comando qui sottro e il gioco è fatto!

ecs-cli compose --project-name test service ps --cluster-config test

E anche per oggi è tutto. In questo articolo abbiamo visto insieme come rilasciare un’applicazione che fa uso di docker-compose all’interno dell’ambiente AWS, con un focus sulla nuova ECS CLI messa a disposizione da Amazon.

Deploying WordPress and MySQL with Persistent Volumes in Kubernetes

This tutorial shows you how to deploy a WordPress site and a MySQL database using Minikube. Both applications use PersistentVolumes and PersistentVolumeClaims to store data.

PersistentVolume (PV) is a piece of storage in the cluster that has been manually provisioned by an administrator, or dynamically provisioned by Kubernetes using a StorageClass. A PersistentVolumeClaim (PVC) is a request for storage by a user that can be fulfilled by a PV. PersistentVolumes and PersistentVolumeClaims are independent from Pod lifecycles and preserve data through restarting, rescheduling, and even deleting Pods.Warning: This deployment is not suitable for production use cases, as it uses single instance WordPress and MySQL Pods. Consider using WordPress Helm Chart to deploy WordPress in production.Note: The files provided in this tutorial are using GA Deployment APIs and are specific to kubernetes version 1.9 and later. If you wish to use this tutorial with an earlier version of Kubernetes, please update the API version appropriately, or reference earlier versions of this tutorial.

Objectives

  • Create PersistentVolumeClaims and PersistentVolumes
  • Create a kustomization.yaml with
    • a Secret generator
    • MySQL resource configs
    • WordPress resource configs
  • Apply the kustomization directory by kubectl apply -k ./
  • Clean up

Before you begin

You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube, or you can use one of these Kubernetes playgrounds:

To check the version, enter kubectl version. The example shown on this page works with kubectl 1.14 and above.

Download the following configuration files:

  1. mysql-deployment.yaml
  2. wordpress-deployment.yaml

Create PersistentVolumeClaims and PersistentVolumes

MySQL and WordPress each require a PersistentVolume to store data. Their PersistentVolumeClaims will be created at the deployment step.

Many cluster environments have a default StorageClass installed. When a StorageClass is not specified in the PersistentVolumeClaim, the cluster’s default StorageClass is used instead.

When a PersistentVolumeClaim is created, a PersistentVolume is dynamically provisioned based on the StorageClass configuration.Warning: In local clusters, the default StorageClass uses the hostPath provisioner. hostPath volumes are only suitable for development and testing. With hostPath volumes, your data lives in /tmp on the node the Pod is scheduled onto and does not move between nodes. If a Pod dies and gets scheduled to another node in the cluster, or the node is rebooted, the data is lost.Note: If you are bringing up a cluster that needs to use the hostPath provisioner, the --enable-hostpath-provisioner flag must be set in the controller-manager component.Note: If you have a Kubernetes cluster running on Google Kubernetes Engine, please follow this guide.

Create a kustomization.yaml

Add a Secret generator

Secret is an object that stores a piece of sensitive data like a password or key. Since 1.14, kubectl supports the management of Kubernetes objects using a kustomization file. You can create a Secret by generators in kustomization.yaml.

Add a Secret generator in kustomization.yaml from the following command. You will need to replace YOUR_PASSWORD with the password you want to use.

cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass
  literals:
  - password=YOUR_PASSWORD
EOF

Add resource configs for MySQL and WordPress

The following manifest describes a single-instance MySQL Deployment. The MySQL container mounts the PersistentVolume at /var/lib/mysql. The MYSQL_ROOT_PASSWORD environment variable sets the database password from the Secret.

application/wordpress/mysql-deployment.yaml 
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim

The following manifest describes a single-instance WordPress Deployment. The WordPress container mounts the PersistentVolume at /var/www/html for website data files. The WORDPRESS_DB_HOST environment variable sets the name of the MySQL Service defined above, and WordPress will access the database by Service. The WORDPRESS_DB_PASSWORD environment variable sets the database password from the Secret kustomize generated.

application/wordpress/wordpress-deployment.yaml 
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim
  1. Download the MySQL deployment configuration file.curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml
  2. Download the WordPress configuration file.curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml
  3. Add them to kustomization.yaml file.
cat <<EOF >>./kustomization.yaml
resources:
  - mysql-deployment.yaml
  - wordpress-deployment.yaml
EOF

Apply and Verify

The kustomization.yaml contains all the resources for deploying a WordPress site and a MySQL database. You can apply the directory by

kubectl apply -k ./

Now you can verify that all objects exist.

  1. Verify that the Secret exists by running the following command:kubectl get secrets The response should be like this:NAME TYPE DATA AGE mysql-pass-c57bb4t7mf Opaque 1 9s
  2. Verify that a PersistentVolume got dynamically provisioned.kubectl get pvc Note: It can take up to a few minutes for the PVs to be provisioned and bound.The response should be like this:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql-pv-claim Bound pvc-8cbd7b2e-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s wp-pv-claim Bound pvc-8cd0df54-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s
  3. Verify that the Pod is running by running the following command:kubectl get pods Note: It can take up to a few minutes for the Pod’s Status to be RUNNING.The response should be like this:NAME READY STATUS RESTARTS AGE wordpress-mysql-1894417608-x5dzt 1/1 Running 0 40s
  4. Verify that the Service is running by running the following command:kubectl get services wordpress The response should be like this:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE wordpress LoadBalancer 10.0.0.89 <pending> 80:32406/TCP 4m Note: Minikube can only expose Services through NodePort. The EXTERNAL-IP is always pending.
  5. Run the following command to get the IP Address for the WordPress Service:minikube service wordpress --url The response should be like this:http://1.2.3.4:32406
  6. Copy the IP address, and load the page in your browser to view your site.You should see the WordPress set up page similar to the following screenshot.wordpress-init

Warning: Do not leave your WordPress installation on this page. If another user finds it, they can set up a website on your instance and use it to serve malicious content.

Either install WordPress by creating a username and password or delete your instance.

Cleaning up

  1. Run the following command to delete your Secret, Deployments, Services and PersistentVolumeClaims:kubectl delete -k ./

What’s next

Non so niente

.. Socrate diceva non so niente, proprio perché se non so niente problematizzo tutto. La filosofia nasce dalla problematizzazione dell’ovvio: non accettiamo quello che c’è, perché se lo facciamo, ce lo ricorda ancora Platone, diventeremo gregge, pecore. La filosofia nasce come istanza critica, non accettazione dell’ovvio, non rassegnazione a quello che oggi va di moda chiamare sano realismo. Mi rendo conto che realisticamente uno che si iscrive a filosofia compie un gesto folle, però forse se non ci sono questi folli il mondo resta così com’è… Allora la filosofia svolge un ruolo decisamente importante, non perché sia competente di qualcosa, ma semplicemente perché non accetta qualcosa, e questa non accettazione di ciò che c’è non la esprime attraverso revolverate o rivoluzioni, l’esprime attraverso un tentativo di trovare le contraddizioni del presente e dell’esistente, e argomentare possibilità di soluzioni: in pratica, pensare. E il giorno in cui noi abdichiamo al pensiero abbiamo abdicato a tutto.

Umberto Galimberti
Percorsi di emancipazione, democrazia ed etica

Salutini

Sto per andare via da voi miei piccolini e mi avete spezzato il cuoricino così tanto che ho bisogno di scrivere, la mia valvola di sfogo.
Sono questi i momenti in cui vorrei ci fosse un regista, un regista della mia vita capace d’immortalare il momento che spero rimanga sempre impresso nella mia testa

I vostri faccini pieni di lacrime che m’implorano di rimanere, i vostri abbracci, Simone, il più fisico, che con la manina cerca la mia barba, struscia la manina, ci gioca, cerca un contatto, mi bacia facendomi sentire le sue guanciotte lacrimose umide .
Mi tenete li, sul divano e non volete che mi alzi, ogni secondo un’ora.
E’ li che capisci che il tempo è relativo, il vero senso della frase “Un giorno, tre autunni”.
Sento e posso toccare l’amore vero, quello che sai è per sempre.

Come si fa a spiegare, come?

Come si fa a spiegare.

“Mi mancherai” mi hai detto Simone, con quella sua vocina meravigliosa che il tempo ti cambierà a favore di una voce sempre più matura ma sempre più lontana da me. Si cresce.

Vorrei che alcune cose rimanessero congelate nel tempo, vorrei che voi rimaneste sempre così ma non si può ed in fondo è bello così, ci godiamo un momento che rimarrà una perla nel nostro cuore e per mano continuiamo a crescere.

Ora che avete chiuso la porta e siete andati, tocca piangere a me.

Sempre insieme.

22 Luglio 2020

Mi hai bloccato ancora.

Mi rendo conto che questa cosa ricorre spesso nel mio Diario, dimmi perchè lo fai ?
Dimmi, che cosa sei venuta a fare nella mia vita se devi farmi stare male, perchè non mi rispetti lasciandomi andare completamente.

Ogni volta mi dai questi barlumi di speranza ed io faccio sempre fatica a risistemare le cose.

Allora ho deciso, ho deciso che devo per forza volermi bene ed è per questo che ti ho bloccato anche io e non ti sbloccherò mai più perchè voglio stare bene.

Sempre, sempre sarai una cosa bella per me, non usare mai l’odio per pensarmi, io non lo farò mai.

Alcuni passi di questa canzone mi fanno pensare a te.

Dimmi cosa sei venuta a fare
Se vuoi restare oppure andare via
Ma quanto pesa la malinconia
Ma quanto costa dire una bugia
E parlavamo dei tuoi esami all'università
Tu che eri come colore e forme per Cézanne
Anche se adesso fuori è buio un giorno smetterà
Con te diventava sole anche una lucciolaDi tutte quelle che ho incontrato, tu sei l'unica
Che senza fare nulla mi ha rubato l'anima
Se vuoi tenerla bene, ma un giorno riportala
Ti prego non farle del male, custodiscilaDimmi cosa sei venuta a fare
Se vuoi restare oppure andare via
Ma quanto pesa la malinconia
Ma quanto costa dire una bugia
Come un dipinto nella notte ti verrò a cercare
Per te giuro ho sceso forse un milione di scale
Afferrami la mano prima di cadere
Tutti i girasoli adesso son fiori del maleSe vuoi da bere, ti offro un drink
Rompi un bicchiere, sembrava un film
Tu vino bianco, io niente alcool
Cambi discorso, parliamo d'altro
Dimmi che ore sono dai
dimmi che ora siamo noi
Siamo un'ora indietro, sai
il resto lo vedremo poi
Siamo sentimento, ho un presentimento
Che il passato esiste, ma il futuro è incerto
Mentre perdi le parole, cerchi gocce dentro il mare
Come piogge di ricordi che non passerà
Cerchi dentro i tuoi sospiri
Ti senti sempre più sola, bere assenzio
Come fossi un quadro di DegasDimmi cosa sei venuta a fare
Se vuoi restare oppure andare via
Ma quanto pesa la malinconia
Ma quanto costa dire una bugia
Come un dipinto nella notte ti verrò a cercare
Per te giuro ho sceso forse un milione di scale
Afferrami la mano prima di cadere
Tutti i girasoli adesso son fiori del maleCi siamo persi per riprenderci
Ci siamo scelti per non sceglierci
Ma anche tra mille anni sarò ancora qui
Siamo eterni come il bacio di KlimtDimmi cosa sei venuta a fare
Se vuoi restare oppure andare via
Ma quanto pesa la malinconia
Ma quanto costa dire una bugia
Come un dipinto nella notte ti verrò a cercare
Per te giuro ho sceso forse un milione di scale
Afferrami la mano prima di cadere
Tutti i girasoli adesso son fiori del male

What is CI/CD

Our space is about mobile CI/CD but, let’s start with the basics in this article before going into the details of why mobile CI/CD is actually different than other CI/CD flows in our future articles.

Image for post

What is Continuous Integration?

Continuous Integration (CI) is the building process for every code pushed to a repository automatically.

This is of course a very simplified definition and CI contains a number of different components, which are like the building blocks that come together to become a workflow.

A CI workflow may include operations like compiling the app, static code reviews and unit/UI testing with automated tools.

There are a number of different tools for CI/CD, some of the most popular ones are Jenkins, Travis and CircleCI, but mobile CI/CD requires specialization and in our space, we will be talking more about mobile CI/CD tools like Appcircle and Bitrise.


What is Continuous Delivery (or Deployment)?

Continuous Delivery (CD) is the delivery of the application for use with the components like the generation of environment-specific versions, codesigning, version management and deployment to a certain provider.

For mobile apps, the deployment can be done to a testing platform like TestFlight (for end user testing on actual devices) or Appcircle (for actual or virtual device testing).

Similarly, the release version of the app can be deployed to App Store and Google Play for B2C apps or to an enterprise app store for B2E apps.


Finally, what is a CI and CD pipeline?

With all CI/CD components are in place and connected together in an automated manner, they form an application pipeline. You just push your code and the code is processed through the pipeline.

CI is mainly responsible for processing the contents of the pipeline and CD is mainly responsible for directing the contents of the pipeline in the right direction.

In a well-functioning application pipeline, you don’t see the actual contents, it just flows by itself, but you have a full visibility on what is flowing and to where just like an actual pipeline.

17 Luglio 2020

Il silenzio può esser cura.

Silenzio dei tuoi messaggi e della tua voce. La mimica di un rapporto di coppia che non poteva esser realtà, perché c’era sempre qualcosa che non andava.

Mi sorprendo: ti penso ancora e non riesco a capire perché abbia questi momenti di sconforto che, nello stesso momento, creano connessione, come se ti sentissi. Ho sempre la percezione di sentirti.

 Ora ciò che conta è partire, poi ci saranno amici, serate, e la voce saggia del Mare. I miei bambini.

Ho intenzione di fare il cammino di Santiago.

Spero presto un giorno di sorprendermi a ricordarti solo con affetto, senza alcun rimpianto.  Senza più la tua voce di velluto, quella voglia pazzesca di sentire e cercarti in chiunque. Le tue labbra, il tuo profilo, profumo, sorriso.

Il silenzio a volte é il vuoto. Ma può anche esser Cura.

15 Luglio 2020

Oggi mi sento proprio triste.

Ho litigato con Emma e Simone, non per colpa loro ma esclusivamente mia.

Ci vuole tanta pazienza e stare da solo non è facile.

Ci sono giorni come questo che ti cerco così forte che credo tu lo senta.

Chissà se lo senti anche tu la connessione.

Io l’ho sempre sentita.

È che ogni tanto crolla tutto e penso solo di essere un disilluso stupido romantico.

Tu sarai felice e contenta ed io sono qui a sentire connessioni.. a sperare in chissà cosa.

Mi sento così stupido.

Solo.

Non riesco ad andare avanti perché vorrei solo avere un tuo bacio.

Quanto erano belli i nostri baci.

Mi manchi. Piango.

Forse non dovrei vedere film come oneday.

Vorrei tanto parlarti ma la porta è chiusa.