Hosting Google Firebase: deploy App

      Pokażę jak mniej więcej można skorzystać z darmowego hostingu oferowanego przez Google. Oto kolejne kroki:

  1. Najpierw powinniśmy zainstalować Node.js:
    https://nodejs.org/en

2. Sprawdzenie instalacji w cmd lub terminalu.

3. Instalacja jakiegoś edytora, np. Visual Studio Code.

 

4. Uruchomienie strony Google Firebase.

5. Stworzenie projektu i nadanie mu jakiejś nazwy.

6. Kolejno instalacja firebase w konsoli, narzędzi firebase i zalogowanie się do serwisu.

 

7. I teraz możemy zainicjalizować szablon aplikacji i deployować aplikację na hosting.

Możemy wcześniej w katalogu public zedytować plik index.html. Na przykład tak jak poniżej.

Gotową aplikację możemy podejrzeć pod udostępnionym adresem URL.

Google Firebase to nie tylko hosting. Mamy tu też dostęp m.in. do bazy danych, autentykacji i wielu innych.

Nowy proces w terminalu i dalsza praca

Często zdarza się, że pracując w terminalu pod linux-em uruchamiając nowy proces poza terminalem chcemy wciąż mieć możliwość korzystania z linii poleceń terminala.

Jest to możliwe dzięki użyciu znaku specjalnego – ampersanda – ‘&’, na końcu komendy. Uruchamia się wtedy jakaś aplikacja już w nowym procesie i można dalej korzystać z terminala.

Przykład:
Komendą ‘ps’ wyświetlamy uruchomione procesy:

Załóżmy teraz, że chcemy otworzyć dowolny edytor tekstowy i dalej pracować w dotychczas otwartym oknie. Domyślnie nie jest to możliwe:

Jednak, gdy użyjemy znaku ampersanda:

Możemy wówczas pracować i w nowo otwartej aplikacji niezależnie z terminalem, gdyż utworzył się oddzielny proces, co jest pokazane na obrazku powyżej.

Problem z zalogowaniem się na konto MySQL

Gdy nie możemy zalogować się na Nasze konto w bazie danych mysql, np. :

sudo mysql -u root -p

Powyższa komenda nie działa – logowanie jest nieskuteczne.


Polecam usunąć wszystko co zainstalowaliśmy:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

sudo rm -rf /etc/mysql /var/lib/mysql

sudo apt-get autoremove

sudo apt-get autoclean

 

Zainstalować od nowa:

sudo apt-get install mysql-server mysql-client mysql-common mysql-server-core-8 mysql-client-core-8

 

Stworzyć nowego użytkownika:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

 

I nadać wszystkie przywileje dla utworzonego użytkownika:

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

 

Powinno teraz zadziałać logowanie:

mysql -h host -u user -p

 

 

Przydatne polecenia:

CREATE DATABASE name; #stworzenie nowej bazy danych
USE name; #wybór istniejącej bazy danych
SELECT DATABASE(); #podgląd w jakiej bazie danych aktualnie się znajdujemy

Zmiana rozmiaru zdjęcia w Ubuntu/terminalu

Najpierw instalujemy ImageMagick komendą:

sudo apt-get install imagemagick

Następnie dokonujemy zmiany rozmiaru zdjęcia:

convert -resize 20% source.png dest.jpg

gdzie kolejno podajemy procent ile ma mieć nowe zdjęcie w stosunku do oryginału. Plik źródłowy i końcowy z wybranym rozszerzeniem.

Utworzenie bazy danych, użytkownika i nadanie dostępu w PostgreSQL oraz logowanie

Jeżeli chcemy rozpocząć pracę z bazami danych, musimy początkowo wykonać kilka kroków by móc z niej korzystać.

Nejpierw logujemy się jako postgres:

sudo -i -u postgres

gdzie i- to logowanie, a u znaczy nazwę użytkownika.
Następnie logujemy się do bazy PostgreSQL:
psql

Teraz tworzymy bazę danych:
CREATE DATABASE <nazwa_bazy_danych>;

Potem tworzymy użytkownika z hasłem:
CREATE USER <nazwa_uzytkownika> WITH ENCRYPTED PASSWORD ‘<moje_haslo>’;

I przydzielamy uprawnienia:
GRANT ALL PRIVILEGES ON DATABASE <nazwa_bazy_danych> to <nazwa_uzytkownika>;

 

Logujemy się następująco:

psql -U <nazwa_uzytkownika> -d <nazwa_bazy_danych>

Może nam wówczas wyskoczyć taki błąd:
psql: error: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: FATAL: Peer authentication failed for user “<nazwa_uzytkownika>”

Musimy wtedy zlokalizować plik konfiguracyjny pg_hba.conf:
locate pg_hba.conf

Edytujemy dowolnym edytorem:
sudo gedit <znaleziona_lokalizacja>

Następującą linię:
local   <nazwa_bazy_danych>   <nazwa_uzytkownika>   peer

Zamieniamy na:
local   <nazwa_bazy_danych>   <nazwa_uzytkownika>   md5

Jeżeli nie ma, to dopisujemy. Pamiętamy o stosowaniu tabulacji, zamiast spacji pomiędzy wyrazami.
Po zapisaniu zmian, trzeba jeszcze zrestartować system:
sudo service postgresql restart

I teraz powinna się pojawić możliwość zalogowania:
psql -U <nazwa_uzytkownika> -d <nazwa_bazy_danych>

Ubuntu 20.04 i instalacja RStudio

W nowszych dystrybucjach linux-a może istnieć problem zainstalowania RStudio, które nie jest jeszcze na chwilę obecną wydane pod to konkretne wydanie Ubuntu (problem z zależnościami bibliotek).

Rozwiązanie problemu:
Uruchomić w terminalu komendę:

sudo aptitude install clang

Następnie otrzymamy mniej więcej coś takiego:

Następujące NOWE pakiety zostaną zainstalowane:   
  clang clang-10{a} lib32gcc-s1{a} lib32stdc++6{a} libc6-i386{ab} libclang-common-10-dev{a} libclang-cpp10{a} 
  libobjc-9-dev{a} libobjc4{a} libomp-10-dev{a} libomp5-10{a} libpfm4{a} libz3-4{a} libz3-dev{a} llvm-10{a} llvm-10-dev{a} 
  llvm-10-runtime{a} llvm-10-tools{a} 
0 pakietów aktualizowanych, 18 instalowanych, 0 do usunięcia i 0 nieaktualizowanych.
Do pobrania 57,8 MB archiwów. Zajęte po rozpakowaniu: 377 MB.
Następujące pakiety mają niespełnione zależności:
 libc6-i386 : Wymaga: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.3 is installed
Następujące działania rozwiążą problemy z zależnościami:

     Zatrzymanie bieżących wersji następujących pakietów:
1)     clang [niezainstalowany]                          
2)     clang-10 [niezainstalowany]                       
3)     lib32gcc-s1 [niezainstalowany]                    
4)     lib32stdc++6 [niezainstalowany]                   
5)     libc6-i386 [niezainstalowany]                     
6)     libclang-common-10-dev [niezainstalowany]         



Zaakceptować rozwiązanie? [Y/n/q/?] n

Wybieramy “n”, że się nie zgadzamy.
Następnie, gdy pojawi się:

Następujące działania rozwiążą problemy z zależnościami:

     Usunięcie następujących pakietów:                                      
1)     libc-dev-bin [2.31-0ubuntu9.3 (now)]                                 

     Instalacja następujących pakietów:                                     
2)     libc-dev-bin:i386 [2.31-0ubuntu9.2 (focal-updates)]                  

     Cofnięcie następujących pakietów do wcześniejszych wersji:             
3)     libc6 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]     
4)     libc6:i386 [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)]
5)     libc6-dbg [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 
6)     libc6-dev [2.31-0ubuntu9.3 (now) -> 2.31-0ubuntu9.2 (focal-updates)] 



Zaakceptować rozwiązanie? [Y/n/q/?] Y

Akceptujemy wyświetlone rozwiązanie poprzez “Y”. W następnym kroku też kontynuujemy i powinna zacząć się wybrana konfiguracja.
Po zakończeniu instalujemy RStudio komendą:

sudo gdebi rstudio-[downloaded_version].deb

Heroku deploy – z przykładem aplikacji

Przedstawię pokrótce jak można wrzucić utworzoną aplikację na serwery Heroku.

 

Tutaj przykład utworzonego prostego “Hello World” we frameworku Javy – Springu:
https://github.com/traininguniverse/HerokuDeployExample

 

Ściągamy repo i następnie je otwieramy w terminalu:

cd HerokuDeploExample-master

 

Żeby mieć zastosowanie do deploy-owania nowej własnej aplikacji usuwamy ukryty folder “.git”.

 

I zaczynamy tak jakbyśmy mieli tworzoną aplikację od nowa.
Najpierw inicjalizujemy puste repozytorium:

git init

 

Dodajemy na podstawie danych z Heroku ustawienia lokalne git:

git config user.email “imie.nazwisko@domena.pl”
git config user.name “Imie Nazwisko”

 

Dodajemy pliki i zatwierdzamy:

git add .
git commit -m “Add app”

 

Tworzymy aplikacje na Heroku – podajemy nazwę:

heroku create app-name

 

Sprawdzamy czy zdalne repo jest dobrze ustawione:

git remote -v

Jeżeli istnieje już utworzona aplikacja (np. poprzez panel na stronie internetowej), to wywołujemy komendę:
heroku git:remote -a app-name

 

Wrzucamy repozytorium na serwer:

git push heroku master

Automatycznie ta przykładowa aplikacja z github-a zostaje już uruchomiona.

 

Otwieramy aplikację komendą:

heroku open

W przeglądarce dodajemy jeszcze na końcu w pasku adresu napis “/hello”.
Powinno ukazać Nam się tekst “Hello World”.

Montowanie zewnętrznego/dodatkowego dysku w Ubuntu 20.04 Focal Fossa

Często zdarza się, że pewne partycje, które trzeba montować ręcznie pod systemem Linux, klikajać w ich ikonę w menedżerze plików, Nautilusie nie zawsze mają chciane przez nas prawa dostępu, czyli np. zapis danych.
Najpierw przedstawię metodę automatycznego montowania tych partycji/dysków wraz ze startem systemu.
Niestety czasem ten sposób jest zawodny, gdyż często pojawiają się błędy systemu plików i urządzenie nie jest montowane, np. przy NTFS.

Automount z startem systemu:

Pobranie UUID konkretnego urządzenia: (można łatwo skopiować/wkleić w terminalu uuid poprzez kombinację [(SHIFT +CTRL +C)=kopiuj, (SHIFT +CTRL +V)=wklej]


ls -l /dev/disk/by-uuid/*

Edycja pliku systemowego do automontowania urządzeń:


mkdir /media/folder-montowania-urzadzenia
sudo nano /etc/fstab

W powyższym pliku zapisujemy sekwencję, rozdzieloną znakiem tabulacji:

UUID     /dev/nazwa-urzadzenia-w-linuksie/     /media/folder-montowania-urzadzenia     system-plikow,np.ntfs     defaults(ustawienia domyślne)     0     0

Krótkie wyjaśnienia:
Najpierw tworzymy folder do zamontowania dysku.
W pliku w jednej linii wprowadzamy dane.
I tu, zamiast defaults możemy, np. zastosować:
exec = wykonywanie plików
rw = tryb odczytu-zapisu
users = wszyscy użytkownicy
auto = tryb automatyczny
remount = ponowne montowanie
wpisujemy powyższe słowa kluczowe w miejscu defaults, po przecinku bez żadnych odstępów pomiędzy słowami
Ostatnie cyfry: 0 0, to:
dump – zazwyczaj zero
pass – używane przez program fsck, w której kolejności system plików jest sprawdzany. Wartość admina/roota jest 1. Swap/partycja wymiany nie musi być sprawdzana i jest równa zero. Inne systemy plików powinny mieć 2.

Montujemy wszystkie urządzenia ponownie:


mount -a

I powyższy sposób jest jak najbardziej prawidłowy, niestety jak wystąpią jakieś błędy zdarza się, że urządzenie zostanie zamontowane, np. tylko do odczytu, albo w ogóle.

 

Druga metoda, to stworzenie prostego skryptu w bashu:

#!/bin/bash 
#to jest komentarz

#odmontowywujemy urządzenie 
sudo umount /dev/nazwa-urzadzenia media/folder-montowania 

#montujemy 
sudo mount -o defaults,exec,rw,users,auto -t ntfs /dev/nazwa-urzadzenia media/folder-montowania 

#naprawiamy ewentualne błędy w systemie plików 
sudo ntfsfix /dev/nazwa-urzadzenia 

#przemontowywujemy ponownie 
sudo mount -o remount,defaults,exec,rw,users,auto -t ntfs /dev/nazwa-urzadzenia media/folder-montowania

Nie zapomnijmy o nadaniu praw wykonania do pliku:


chmod +x nasz-skrypt.sh

Jeszcze większym ułatwieniem jest stworzenie skrótu na pulpicie do skryptu (metoda działa pod Ubuntu 20.04):

Tworzymy plik na pulpicie z rozszerzeniem .desktop:

#!/usr/bin/env xdg-open
[Desktop Entry] 
Version=1.0 
Type=Application 
Terminal=true
Exec=/home/user/mount-disks.sh 
Name=Mount disks
Comment=Mount disks 
Icon=/home/user/Obrazy/hdd-mount.ico

Exec – ścieżka do naszego skryptu
Icon – ikona, jaką chcemy żeby się nam wyświetlała

Nie zapomnijmy jak poprzednio nadać prawa wykonania i jeszcze klikamy na pliku prawym przyciskiem myszy i wybieramy “Zezwól na uruchamianie”.

Teraz za pomocą drugiej metody, po uruchomieniu skryptu wpisujemy hasło root-a, sprawdzane i naprawiane są struktury plików i zamontowane powinny być nasze urządzenia dla wszystkich użytkowników z prawami wykonania, odczytu i zapisu.