Co je to socket

Pokud jste četli něco o internetu, nebo o linuxu, pravděpodobně jste narazili na slovo socket. Víte ale co tento termín znamená?

TCP socket je koncový bod (endpoint) spojení. Je definován IP adresou a portem. Port je identifikátor konkrétní služby (programu). Cílem portu je rozlišit mezi více koncovými body na stejné IP adrese. Ve stejný čas může existovat pouze jeden socket pro IP a port, ale může existovat více spojení. TCP spojení je definováno dvěma koncovými body (endpointy, sockety)

It is the socket pair (the 4-tuple consisting of the client IP address, client port number, server IP address, and server port number) that specifies the two endpoints that uniquely identifies each TCP connection in an internet. (TCP-IP Illustrated Volume 1, W. Richard Stevens)

In most C-derived languages, TCP connections are established and manipulated using methods on an instance of a Socket class.
https://stackoverflow.com/…/what-is-the-difference-between-a-port-and-a-socket

Unix domain socket (IPC socket – inter-process communication socket) je koncový bod pro datovou komunikaci mezi procesy na stejném operačním systému. Je to způsob, jak procesy na stejném stroji mohou mezi sebou komunikovat. A jelikož v linuxu je vše buď adresář nebo soubor, socket je soubor (speciální soubor).

When Unix programs do any sort of I/O, they do it by reading or writing to a file descriptor. A file descriptor is simply an integer associated with an open file. But (and here’s the catch), that file can be a network connection, a FIFO, a pipe, a terminal, a real on-the-disk file, or just about anything else. Everything in Unix is a file! So when you want to communicate with another program over the Internet you’re gonna do it through a file descriptor, you’d better believe it.
http://beej.us/guide/bgnet/html/#what-is-a-socket

Obecně řečeno je tedy socket endpoint sloužící pro komunikaci. Mohli jste ale ještě narazit na slovo WebSocket. To je jiný příběh. WebSocket je komunikační protokol, umožnující obousměrnou full-duplex komunikaci, který je umístěn v 7 vrstvě OSI modelu (podobně jako HTTP protokol).

Další zdroje: Unix domain socket, WebSocket

Instalace Javy na Ubuntu

Nejdřív zjistíme, zda je Java již nainstalována či ne.

java -version

Command 'java' not found, but can be installed with:

apt install default-jre
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless

Jak je z výpisu patrné, nainstalována není. Pokud potřebujete JDK, naistalujete jej pomocí:

apt install default-jdk

Když po instalaci zkontroluje verzi, objeví se vám podobný výpis.

java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

Změna shellu v Linuxu

To jaký shell, který uživatel používá, můžete vidět v souboru /etc/passwd. Je to poslední záznam v každém řádku. Pokud vám daný shell nevyhovuje, můžete jej změnit.

Změna uživatelem

chsh
Password:
Changing the login shell for email
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]:

Vyberte nový shell, nebo potvrďte stávající stisknutím klávesy enter.

Změna administrátorem

Pokud jste administrátor, můžete uživatelům měnit shell pomocí příkazu chmod a přepínače -s.

usermod -s /bin/bash user

Uveďte nový shell a uživatele, kterému jej chcete nastavit.

Vlastní klávesové zkratky v Ubuntu

V předchozím příspěvku jsem ukázal, jak pomocí programu terminátor zobrazit v konzoli více oken. V tomto příspěvku si ukážeme jak si pro terminátor vytvořit vlastní klávesovou zkratku. V Ubuntu je nastaveno Ctrl + Alt + T pro spuštění terminálu. Stejnou zkratku použijeme pro terminátor. Nejdříve musíme tuto zkratku zneplatnit pro spuštění konzole: System Settings -> Keyboard -> Shortcuts -> Launcher -> kliknout na „Launch terminal“ a stisknout klávesu Delete.

Následně tuto zkratku přiřadíme programu terminátor: System Settings -> Keyboard -> Shortcuts -> Custom Shortcuts -> tlačítko + -> zadejte název a bash příkaz pro spuštění programu ->

-> Apply -> označte přidaný řádek a zadejte zkratku Ctrl + Alt + T.

První přihlášení do PostgreSQL v Ubuntu

Pokud se po instalaci PostgreSQL pokusíte přihlásit pomocí psql, dostanete pravděpodobně chybu Peer authentication failed for user „postgres“

psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

Oprava: Zkoušel jsem instalaci PostgreSQL verze 10 na Linux Mint a bylo možné se přihlási uživatelem postgres tímto způsobem:
sudo su – postgres (přepnutí na uživatel postgres)
psql -U postgres

V Ubuntu je ve výchozím nastavení vypnuto přihlašování pro uživatele postgres. Do psql se můžeme připojit pomocí příkazu sudo

sudo -u postgres psql postgres

Vytvoříme nového uživatele (roli) s heslem password a schopností vytvářet databáze.

Číst dálPrvní přihlášení do PostgreSQL v Ubuntu

hdfs dfs -ls vrací “no such file or directory”

Pokud si zprovozníte HDFS, spustíte démony (start-dfs.sh a start-yarn.sh) a zkusíte zadat příkaz pro výpis aktuálního adresáře, může se stát, že dostanete chybu "no such file or directory”. Tato chyba může být způsobena tím, že pro aktuálního uživatele nemáte vytvořenu složku v /user (která také nemusí být vytvořena). Zkuste nejdříve, zda vám funguje tento příkaz.

hdfs dfs -ls /

Pokud nedostanete žádnou chybu, a zároveň žádný výpis, znamená to, že zatím nemáte vytvořeny žádné složky ani soubory. Zkuste tento příkaz.

Číst dálhdfs dfs -ls vrací “no such file or directory”

Zobrazení čísla řádků souboru v Linuxu

Jedním ze způsobů, jak zobrazit čísla řádků v Linuxu je použít program cat. Pomocí přepínače -n (–number) lze zobrazit čísla řádků. Nejdříve si pomocí ls -l / > myfile vytvoříme soubor s nějakým obsahem (v tomto případě výpis root adresáře do souboru s názvem myfile). Poté zobrazíme čísla řádků.

Číst dálZobrazení čísla řádků souboru v Linuxu