ááŸá±ážááááºá á¡áááá·áºáá±ážá á¬ááŒá±á¬ááºáž áááááá¬áá»á¬ážááŸáá·áºá¡áá° áá±ááºáá®á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºááẠááá¯ááá¯áá»á±á¬áºááœáŸááºááœááºáá±á¬ááºážááŒá®áž ááá·áºáá¯ááºáá¯ááºá áœááºážá¡á¬ážááá¯ááẠááá¯ážáááºá á±ááá¯ááºáááºá
Linux/Unix ááœáẠáá»áœááºá¯ááºááá¯á·ááá±á·á
ááºáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠááœááºáááºážááá¯ááºážáááááá¬áá»á¬ážá
áœá¬ááᯠá¡áá¯á¶ážááŒá¯ááẠ- á¥ááá¬á áá
áºááºá¡áá¯á¶ážááŒá¯ááŸá¯ááŸáá·áº á
áá
áºá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá
á±á¬áá·áºááŒáá·áºááẠdu á á€áááááá¬á¡áá»áá¯á·ááẠá¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠáááºááŸááá±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááááºáááºážááẠ1984 ááœááºáá±á«áºáá¬áá²á·ááŒá®áž du áááááá¯á¶ážááœááºááŸáááŸá¯ááẠ1971 áá¯ááŸá
áºááœááºááŒá
áºáááºá
ááŸá áºááœá±ááŒá¬áá¬áá¬áá²á·á¡áá»áŸ áá®áááááá¬ááœá±ááᯠáá±ááºáá®ááŒá®áž ááá°áá®áá²á·á áá áºááœá±áá® áááºáá±á¬ááºáá¬áá²á·áá±ááá·áº áá±áá¯áá»á¡á¬ážááŒáá·áºáá±á¬á· áá°ááá¯á·áá²á· ááááá¬ážááŸááºážáá²á· áá±ážááœá¬áááœá¬ážáá±ážáá²á áá°ááá¯á·áá²á· á¡ááœááºá¡ááŒááºáá²á· á¡áá¯á¶ážáááºááŸá¯ááœá±ááááºáž á¡áá»á¬ážááŒá®áž ááŒá±á¬ááºážáá²áááœá¬ážáá«áá°ážá
á€á¡áá¬áá»á¬ážááẠá
áá
áºá
á®áá¶ááá·áºááœá²áá°áá»á¬ážá
áœá¬ ááá¯á¡ááºáá±á¬ áá±á¬ááºážááœááºáá±á¬áááááá¬áá»á¬ážááŒá
áºáááºá ááá¯á·áá±á¬áºá á¡ááá¯ááºážá¡ááá¯ááºážááẠá¡ááá¯á¡áá»áá¯ážáá¶á
á¬ážááœáá·áºáá»á¬ážááᯠáá±ážáá±á¬ááºááá·áº á¡á
á¬ážááá¯ážáááááá¬áá»á¬ážááᯠáá®ááœááºáá²á·áááºá áááºážááá¯á·áá²á០á¡áá»áá¯á·ááẠááá¯ážááá¯ážááŸááºážááŸááºáž áá±ááºáá®ááŒá®áž ááŸááá±á¬ interface ááŸáááŒá®áž á¡áá»áá¯á·ááŸá¬ á¡áá¯á¶ážááŒá¯ááá¯ááºá
áœááºážááᯠáá»á¬ážá
áœá¬ ááá¯ážáááºá
á±áááºá á€áá¬áá¬ááŒááºáá»ááºááœááºá áá¯á¶ááŸáẠLinux command line tools áá»á¬ážá¡ááœáẠá¡ááŒá¬ážááœá±ážáá»ááºá
áá¬áá«ážáá¯á¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááºá
1. ncdu vs du
NCurses Disk á¡áá¯á¶ážááŒá¯ááŸá¯ (
ncdu ááẠáá áºááºááᯠááá¯ááºážááŒá¬ážá áááºááŒá¬ááŒá®áž á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶áž áááºážááœáŸááºáá»á¬áž ááá¯á·ááá¯áẠááá¯ááºáá»á¬ážááŒáá·áº á á®áá¬ážáá±á¬ ááááºáá»á¬ážááᯠááŒáááẠá¥ááá¬-
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
ááŒáŸá¬ážááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá·áºááœááºážááŸá¯áá»á¬ážááᯠáááºááœá¬ážááá¯ááºáááºá Enter ááŸáááºáá«áá ncdu ááẠááœá±ážáá»ááºáá¬ážáá±á¬ directory á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠááŒááááá·áºáááº-
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááá·áºááá¯ááºáá»á¬áž disk space á¡áá»á¬ážáá¯á¶ážáá°áááºááᯠáá¯á¶ážááŒááºááẠá€áááááá¬ááᯠáááºáá¯á¶ážááá¯ááºáááºá áááºáááºááŒáŸá¬ážááá¯ááºááá¯ááŸáááºááŒááºážááŒáá·áº ááááºáááºážááœáŸááºááá¯á·ááœá¬ážááá¯ááºáááºá ncdu ááŒáá·áº áááºááẠd key ááá¯ááŸáááºá ááá¯ááºáá»á¬ážááá¯áá»ááºááá¯ááºáááºá ááá»ááºááẠá¡áááºááŒá¯áá»ááºáá±á¬ááºážáááºá áááºááá¯ážááŸááá±á¬ ááá¯ááºáá»á¬áž ááá±á¬áºáá áá¯á¶ážááŸá¯á¶ážááŒááºážá០áá¬ááœááºááẠáá»ááºááŒááºáž á¡ááºá¹áá«áááºááᯠááẠááááºááá¯áá«áá áááºáááº-áᬠá¡áá¯á¶ážááŒá¯ááœáá·áº áá¯ááºááᯠááœáá·áºááẠ-r ááœá±ážáá»ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá«- ncdu -rá
ncdu ááẠLinux ááááºáá±á¬ááºážáá»á¬ážááŸáá·áº ááŒáá·áºáá»á®ááŸá¯áá»á¬ážá áœá¬á¡ááœáẠáááá¯ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠFedora ááœáẠáááºážááá¯ááá¬ážáááºááá¯ááŸá±á¬ááºáá¬áá±áá¬áá»á¬ážá០ááá¯ááºááá¯ááºááá·áºááœááºážááẠdnf ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
$ sudo dnf install ncdu
2. htop vs top
áá°áááºáž htop ááẠá€áá²á·ááá¯á· ááŒá áºáááº-
ááááºááá¯ááºážááŸáá·áº ááá°áááº-
ááá¯á·á¡ááŒááºá htop ááẠááááºááœáẠá
áá
áºá¡ááŒá±á¬ááºáž ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»áẠá¡áá»ááºá¡áááºááŸáá·áº á¡á±á¬ááºááŒá±ááŸá áá¯ááºáá±á¬ááºáá»ááºááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡áááá·áºáá±ážááá·áº á¡ááá·áºáá
áºáá¯ááᯠááŒááááºá ááœá²á·á
ááºážááŸá¯á
ááááºááá¯ááœáá·áºááẠF2 ááá¯ááŸáááºááŒááºážááŒáá·áº áááºážááᯠconfigure áá¯ááºááá¯ááºáá«áááºá áááºáááºáá»á¬ážááœáẠáááºááẠá¡áá±á¬ááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááá¯ááºáááºá áááºááá
áºáá»á¬ážááᯠááá·áºááẠááá¯á·ááá¯áẠáááºááŸá¬ážááá¯ááºáááºá ááá¯á·ááá¯áẠááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºáá±á¬ááºááᯠááŒáááá·áº ááœá±ážáá»ááºááŸá¯áá»á¬ážááᯠááŒá±á¬ááºážáá²ááá¯ááºáááºá
ááááºáááºážáá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážáá»á¬ážá áááºáááºáá»á¬ážááᯠááŒááºáááºááŒááºážááŒáá·áº áááºáá°á¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬áºáááºáž htop ááẠááá¯ááá¯áááºááœá±á·áá»ááŒá®áž á¡áá¯á¶ážááŒá¯áááá¯ááá¯ááœááºáá°á á±áááºá
3. tldr vs man
tldr command line tool ááẠcommand áá»á¬ážá¡ááŒá±á¬ááºáž ááá¯ážááŸááºážáá±á¬ á¡áá°á¡áá® á¡áá»ááºá¡áááºááᯠááŒááááºá á¡áá»á¬ážá¡á¬ážááŒáá·áº á¥ááá¬áá»á¬ážááŒá
áºáááºá á¡ááá¯ááºážá¡ááá¯ááºážá áá®ááœááºáá²á·áá¬áá«á
tldr ááẠáá°áá¬ážá¡ááœáẠá¡á á¬ážááá¯ážááŒááºážááá¯ááºááŒá±á¬ááºáž áááááŒá¯ááá·áºáááºá áááºážááẠcanonical ááŸáá·áº á¡ááŒáá·áºá á¯á¶áá¯á¶áž man page output tool ááŒá áºáá±áá²ááŒá áºáááºá ááá¯á·áá±á¬áº á¡áá»áá¯á·ááá á¹á áá»á¬ážááœáẠáá°ááẠáááá¯á¡ááºáá±á¬á·áá«á á¡áááá·áºáá áºáá¯á¡ááŒá±á¬ááºáž áá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá»ááºá¡ááẠáááá¯á¡ááºáá±á¬á¡áá«á áááºážá á¡ááŒá±áá¶á¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážááᯠááŸááºáá¬ážááẠááŒáá¯ážá á¬ážáá±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá curl command á¡ááœáẠman page ááœáẠá á¬ááŒá±á¬ááºáž 3000 áá®ážáá«ážáá«ááŸááááºá curl á¡ááœáẠtldr á á¬áá»ááºááŸá¬ááẠá á¬ááŒá±á¬ááºáž áá ááŸááºáááºá áááºážáá¡ááá¯ááºážá¡á áááºá€áá²á·ááá¯á·áá±á¬áá¯á¶ááááºá
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDR ááá¯áááºááŸá¬ âááŸááºááœááºážáááºá ááááºáá°áž"- ááá¯ááá¯áááºááŸá¬á áááºážáá¡ááœááºá¡áá»áœá¶á áá¬ážáá»á¬ážááŒááºážááŒá±á¬áá·áº á á¬áá¬ážá¡áá»áá¯á·ááᯠáá áºáá»á°ááŸá¯áá²á·áááºá á¡áá¯á¶ážáááºáá±á¬áºáááºáž man pages ááẠáá áºáá«áá áºáá¶ááœáẠááŸááºááœááºážáá±á¬ááŒá±á¬áá·áº á€áááááá¬á¡ááœáẠáá¬áááºááẠááá·áºáá»á±á¬áºáá«áááºá
Fedora á¡ááœáẠtldr ááᯠPython ááŒáá·áº áá±ážáá¬ážáá¬ážáááºá dnf áááºáá±áá»á¬ááᯠá¡áá¯á¶ážááŒá¯á áááºážááᯠááá·áºááœááºážááá¯ááºáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áááááá¬ááá¯áááºáááºááẠá¡ááºáá¬áááºá¡áá¯á¶ážááŒá¯ááœáá·áº ááá¯á¡ááºáááºá ááá¯á·áá±á¬áº Fedora á Python áá±á¬ááºáááºááẠá€á á¬áá»ááºááŸá¬áá»á¬ážááᯠá¡á±á¬á·ááºááá¯ááºážá¡áá¯á¶ážááŒá¯ááœáá·áºá¡ááœáẠáá±á«ááºážáá¯ááºáá¯ááºááŒá®áž áááºááŸáºáá¯ááºááœáá·áºááŒá¯áá¬ážáááºá
4.jq vs sed/grep
jq ááẠcommand line á¡ááœáẠJSON áááá¯áááºáá¬ááŒá áºáááºá áááºážááẠsed ááá¯á·ááá¯áẠgrep ááŸáá·áº áááºáá°áá±á¬áºáááºáž JSON áá±áá¬ááŸáá·áº á¡áá¯ááºáá¯ááºááẠá¡áá°ážáá®ááá¯ááºážáá¯ááºáá¬ážáááºá áááºááẠáá±á·á ááºáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááœáẠJSON ááá¯á¡áá¯á¶ážááŒá¯ááá·áº developer ááá¯á·ááá¯áẠá áá áºá á®áá¶ááá·áºááœá²áá°ááŒá áºáá«áá áááºážááẠááá·áºá¡ááœáẠáááááá¬ááŒá áºáááºá
jq á á¡áááá¡á¬ážáá¬áá»ááºááŸá¬ grep ááŸáá·áº sed áá²á·ááá¯á·áá±á¬ standard text processing tools áá»á¬ážááẠJSON áá±áá¬áááºáá±á¬ááºáá¯á¶ááᯠáá¬ážáááºááŒá®áž ááŸá¯ááºááœá±ážáá±á¬áá±ážááœááºážáá»á¬ážááᯠá áá¬ážáááºáá áºáá¯áááºážááœáẠáááºáá®ážááá¯ááºááŒááºážááŒá±á¬áá·áºááŒá áºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠဠJSON ááá¯ááºááœáẠááœááºááááºáá¬á¡áááºáá»á¬ážááᯠááŸá¬ááœá±ááẠááŒáá¯ážá á¬ážáá±áááº-
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
string name ááá¯ááŸá¬ááẠgrep ááá¯ááœáá·áºáá«á
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep ááẠá áá¬ážáá¯á¶ážá¡áááºáá«ááŸááá±á¬ á á¬ááŒá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠááŒááºáá±ážáááºá áááºážááá¯ááá·áºáááºááẠgrep á¡ááœáẠáá±á¬ááºáááºááœá±ážáá»ááºá áá¬á¡áá»áá¯á·ááᯠáááºááá·áºááœááºážááá¯ááºááŒá®áž ááœááºááááºáá¬á¡áááºáá»á¬ážááá¯ááŸá¬ááœá±ááẠáá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážá¡áá»áá¯á·ááᯠááŒááºááŸááºá¡áá¯á¶ážááŒá¯áá«á
jq ááá¯á¡áá¯á¶ážááŒá¯á áá°áá®áá±á¬ááááºáááŸááááºá
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
ဠcommand ááẠááá·áºá¡á¬áž container ááŸá áºáá¯áá¯á¶ážá á¡áááºáá»á¬ážááá¯áá±ážáááá·áºáááºá á¡áááºá áááºááẠáá¯áááááœááºááááºáá¬á á¡áááºááá¯áᬠááŸá¬ááœá±áá±áá«áá á¡áááºážá¡áá»ááºážááŒááºá ááºá á¡ááœáŸááºážááááºážááᯠá áá¬ážáááºááœáẠááá·áºááœááºážáá«-
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
jq ááẠáá±áá¬ááœá²á·á ááºážáá¯á¶á¡ááŒá±á¬ááºážáááá±á¬ááŒá±á¬áá·áº ááá¯ááºáá±á¬áºáááºá¡áááºážáááºááŒá±á¬ááºážáá²ááœá¬ážáá±á¬áºáááºáž áá°áá®áá±á¬ááááºáá»á¬ážááá¯áá¯ááºáá±ážáááºá á€ááá á¹á ááœáẠgrep ááŸáá·áº sed ááẠááŸááºáááºá áœá¬ á¡áá¯ááºááá¯ááºáá«á
jq ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá
áœá¬ááŸááá±á¬áºáááºáž áááºážááá¯á·ááá¯áá±á¬áºááŒááẠá¡ááŒá¬ážáá±á¬ááºážáá«ážáá
áºáᯠááá¯á¡ááºáá«áááºá ááá¯ááá¯ááááŸáááá¯áá«ááááºááœááºáá«á
5. fd vs ááŸá¬áááº
á¥ááá¬á¡á¬ážááŒáá·áºá Git repository directory á¡ááœááºážááŸá ááá¯ááºáá»á¬ážááᯠááŸá¬ááœá±ááá·áºá¡áá« fd ááẠ.git directory á¡áá«á¡ááẠáá»áŸáá¯á·ááŸááºááá¯ááºáá»á¬ážááŸáá·áº ááá¯ááºááœá²ááœá²áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáááºáá¯ááºááŒá®áž .gitignore ááá¯ááºá០áááºá¹áá±ááá»á¬ážááᯠáá»á áºáá»á°ááŸá¯áá«áááºá áá±áá¯áá»á¡á¬ážááŒáá·áºá áááºážááẠáááá¡ááŒáááºááŒáá¯ážá á¬ážáá¬ááœáẠááá¯ááá¯áááºááá¯ááºááá·áºááááºáá»á¬ážááᯠááŒááºáá±ážááŒááºážááŒáá·áº ááŸá¬ááœá±ááŸá¯áá»á¬ážááᯠá¡ááŸáááºááŒáŸáá·áºáá±ážáááºá
áá°áááºážá¡á¬ážááŒáá·áºá fd ááẠá¡áá±á¬ááºááœááºááŸáááŸá¯ááŸáá·áºá¡áá° áááºááŸááááºážááœáŸááºááœáẠcase-insensitive ááŸá¬ááœá±ááŸá¯ááᯠáá¯ááºáá±á¬ááºáááºá find command ááá¯á¡áá¯á¶ážááŒá¯á áá°áá®áá±á¬ááŸá¬ááœá±ááŸá¯ááẠcommand line ááœááºá¡ááá¯áá±á¬ááºáá»á¬ážááá¯ááá·áºááœááºážáááºááá¯á¡ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááŸá directory ááœáẠ.md (ááá¯á·ááá¯áẠ.MD) ááá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŸá¬áááºá áááºááẠá€áá²á·ááá¯á·áá±á¬ ááŸá¬ááœá±ááŸá¯ command ááᯠáá±ážáá¬ážááááá·áºáááº-
$ find . -iname "*.md"
fd á¡ááœááºáááºážáááºá€áá²á·ááá¯á·áá±á¬áá¯á¶ááááºá
$ fd .md
ááá¯á·áá±á¬áº á¡áá»áá¯á·ááá á¹á áá»á¬ážááœááºá fd ááẠáá±á¬ááºáááºááœá±ážáá»ááºá áá¬áá»á¬áž ááá¯á¡ááºáááº- á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá»áŸáá¯á·ááŸááºááá¯ááºáá»á¬ážááŸáá·áº áááºážááœáŸááºáá»á¬ážáá«áááºááá¯áá«áá ááŸá¬ááœá±áá¬ááœáẠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áááá¯á¡ááºáá±á¬áºáááºáž -H option ááᯠá¡áá¯á¶ážááŒá¯ááá«áááºá
fd ááᯠLinux ááŒáá·áºááŒá°ážááŸá¯áá»á¬ážá áœá¬á¡ááœáẠáááá¯ááºáá«áááºá Fedora ááœááºáááºážááá¯á€áá²á·ááá¯á·ááá·áºááœááºážááá¯ááºáááºá
$ sudo dnf install fd-find
áááºážáá¬á០á áœáá·áºááœáŸááºá áᬠáááá¯áá°ážá
Linux command line tools á¡áá áºááᯠáááºá¡áá¯á¶ážááŒá¯áá±áá«ááá¬ážá áá«ááŸááá¯áẠá¡áá±á¬ááºážááœá±áá±á«áºááŸá¬ áá®ážááá·áºááá¯ááºáá±áá¬ážá áá«áá±ááá·áº ááá·áºááŸá¬ áá±á«ááºážá ááºáá áºáá¯ááŸáááá¯ááºáá»á±áá»á¬ážáá«áááºá ááá·áºá¡ááœá±á·á¡ááŒá¯á¶ááᯠcomment ááœáẠáá»áŸáá±áá«á
ááŒá±á¬áºááŒá¬á¡ááŒá áº
áá»áœááºá¯ááºááá¯á·ááá±á¬ááºáááºáá»á¬ážá
áœá¬ááẠá¡áá»áá¯ážáá¶á
á¬ážááœáá·áºáá»á¬ážááᯠáááºááá¯ážáá¬ážááŒá®ážáá¬ážááŒá
áºáááºá epic áá¬áá¬áá»á¬áž!
á€
source: www.habr.com