Link-uri de răsfoit pe timp de ploaie

La mine plouă :/

Astea fiind zise și fără nicio ordine a preferinței:

Cam atât pentru moment.

Am actualizat la PHP 7.4

A mers mai smooth decât mă  aștepatm! 🙂

Am instalat toate extensiile necesare pe care trebuie să le aibă PHP-ul ca WordPresul să funcționeze corect, dar pentru versiunea 7.4. Care erau aceleași ca cele pentru PHP 7.2, versiunea cu care am instalat blogul.

Poți să le vezi cu următoarea comandă:

apt list --installed | grep php7.x

Unde x reprezintă numărul versiunii. Valabil și pentru output-ul comenzii.

Și primești acest rezultat:

libapache2-mod-php7.2/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 all [installed]
php7.2-cli/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2-common/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2-curl/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-dev/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-gd/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-json/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2-mbstring/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-mysql/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-opcache/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2-readline/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed,automatic]
php7.2-xml/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-xmlrpc/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]
php7.2-zip/bionic,now 7.2.30-1+ubuntu18.04.1+deb.sury.org+1 amd64 [installed]

Și cu apt install php7.4-nume_extensie le instalezi. Se poate folosi tasta Tab pentru completarea automată a numelui.

După ce au fost instalate, trebuie să îi spui server-ului Apache, ce versiune de handler pentru PHP să folosească. Înainte era cel pentru vechea versiune de PHP, care acum trebuie dezactivat.

a2dismod php7.2 //dezactivare handler
systemctl restart apache2 //restart server
a2enmod php7.4 //activare handlerphp 7.4

Bineînteles că eu am procedat fix invers, dar dupa ce am dezactivat handler-ul pentru 7.2, cel de 7.4 a intrat automat.

Cam aceste lucruri le-am facut și până acum nu s-a stricat nimic. Încă nu m-am uitat in log-uri. 🙂

PS: Să faci un back-up înainte de actualizare! 😁

Corona tracker – tracking the virus

De vreo 2 săptămâni, meșteresc la o aplicație de vizualizare a evoluției cazurilor de COVID19 în lume și în țară. Față de altele, este mai simplistă, dar pentru mine este un exercițiu de a prezenta datele într-o manieră ușor de înțeles de către toată lumea și de a experimenta diferite concepte de programare.

Stack-ul folosit cuprinde Java, Spring Boot și o bază de date MySQL, pe backend, iar pe frontend Bootstrap pentru layout, DataTables pentru tabelele din aplicație și HighCharts pentru chart-ul cu evoluția globală a cazurilor. Datele pentru chart sunt stocate în baza de date.

Sursele de date folosite sunt:

* CSV-ul cu situația la nivel global. Mai multe informații precum și alte csv-uri cu diferite agregări de date aici

  • Pentru satisticile cu evoluția în țară, am folosit api-ul pus la dispoziție de comuitatea geo-spațial.org

Aplicația este open source și codul poate fi văzut aici, iar acesta este live aici.

Alte proiecte similare

 

Java 13 si reducerea verbozității

Puteam să jur că am apăsat pe butounul de Publish din editor. 👴

La momentul în care am început să scriu articolul, Java 13 nu era in stadiul de GA, dar acum mai sunt 5 zile si și apare Java 14. 😀

Două noi funcționalități vor contribui la reducerea verbozității in baza de cod a aplicațiilor.

 

 Text blocks sau multi line strings sau raw strings

Un feture bine venit. Pe scurt:

String html = """
               <html>
                   <body>
                       <p>Hello, World</p>
                   </body>
               </html>
       """;

String json = """
               {
                   "name":"mkyong",
                   "age":38
               }
               """;

Sintaxa este asemănatoare, dacă nu identică cu ce este in Kotlin și Python. Încă nu există conceptul de string interpolation ca în C# sau Javascript, darrrrr este binevenit și acest lucru. Văd utilitatea acestei construcții în query-urile sql complexe. Dacă mai intră în joc și parametrii, se poate folosi String#format

var query = String.format("""
        select * from table where name = %s
        """, name);

var query1 = """
select * from table where name = %s"""
        .formatted(Main.class.getName());//deprecated method

System.out.println(query);
System.out.println(query1);

Rezultatul este următorul:

select * from table where name = cosmin

select * from table where name = com.company.Main

Mai multe lucruri despre aceast feature si o analiză mai detaliată, in acest link

 

Switch expressions

Sunt multe de discutat despre acest lucru, alții au făcut-o mai bine si mai în detaliu. Eu mă voi rezuma la un exemplu de cod scurt și la obiect

    static void howMany(int k) {
        System.out.println(
                switch (k) {
                    case  1 -> join("-", "java", "javascript", "C#"); // a complicated expression :D
                    case  2 -> "two" ;
                    default -> "many";
                }
        );
    }
// howMany(1) = java-javascript-C#

Sigur, nu recomand acel mod de screre al codului 😀

 

In loc de concluzie

Cam atât din partea mea!

Cel putin pe partea de scriere de cod.

De asemenea, las câteva link-uri cu mai multe detalii despre ce am scris mai sus, precum si alte functionalități introduse in limbaj

  1. https://blog.codefx.org/java/java-13-guide/
  2. https://mkyong.com/java/what-is-new-in-java-13/
  3. https://openjdk.java.net/projects/jdk/13/
  4. https://www.baeldung.com/java-pattern-matching-instanceof
  5. https://blog.codefx.org/java/enable-preview-language-features/
  6. https://vladmihalcea.com/multiline-string-java-text-blocks/

 

You have a new mail

De fiecare data când intru cu ssh pe un sistem Linux, primesc acest mesaj You have a new mail.  Acesta se poate citi în /var/spool/mail, fișierul având numele utilizatorului.

La o simplă căutare pe Google, am aflat următoarele lucruri:

  • Este un mesaj care conține output-ul unui job de cron, log, sau, in cazul meu, o logare nereușită
  • Chiar este un email cu toate elementele necesare

Las acest link, pentru cei care doresc să citească mai mult. 🙂

.

Marele final – build-ul 2019

Mai bine mai târziu decât niciodată.

  • Un an si ceva de sală
  • Chiar am scris mai des pe blog
  • Mai mult Java, C#, programare și activitate pe Github
  • Am început, timid, să fac voluntariat in Code4Romania
  • Mi-am gestionat mai bine timpul (rămâne sa vedem în 2020 😁)
  • Am încercat noul editor de la WordPress, Gutenberg și nu prea mi-a placut
  • Multe altele 😀