Wednesday, 26 March 2014

Từ information đến skill

4h sáng,
tự dưng thèm 1 bát mì tôm trứng, cực kỳ!
Nhưng nhà không tàng trữ thứ đồ ăn độc hại ấy. Đành ôm bụng đói và sáng  dậy quyết định sẽ làm 1 bát phở bò :v

Theo ngài Sherlock Holmes, người ta thông minh nhất khi bụng đói, cũng là lúc mà người ta hay nói nhảm nhất :3 (thật ra câu này đọc trong Conan, thằng Conan bảo Sherlock Holmes nói thế mà mình google mãi không ra)

Từ khóa:
- information: thông tin
- skill: kỹ năng
- knowledge: kiến thức

Làm cách nào để biến 1 đống information thành 1 skill?

Để trở thành 1 skill, cần - hoặc phải hiểu nó - hoặc phải quen tay với nó. Nếu chỉ hiểu thôi, rồi người ta sẽ quên nó (theo thời gian và không gian), và cuối cùng thì vẫn phải quen tay thì mới biến nó thành skill được.


Monday, 17 March 2014

[VM] Từ VirtualBox đến docker

Bài này không trình bày dài dòng về các công nghệ ảo hóa.
Bài này là một dạng nhật ký về hành trình sử dụng những công nghệ ảo hóa trên chính chiếc laptop của mình.

Cuộc hành trình bắt đầu

ngày xửa ngày xưa...
khi mà thế giới loài người văn minh mới chỉ có Windows, một ngày nọ, chàng trai xứ sở hoa ban quyết mang Linux lạc hậu đến thế giới hiện đại này. Có lẽ là trước đó, nhưng bộ nhớ giới hạn chỉ có thể nhớ đến đây.VirtualBox là phần mềm ảo hóa đầu tiên mình sử dụng để chạy Ubuntu.

1. VirtualBox
Cũng không nhớ nổi lý do vì sao mình chỉ dùng VirtualBox mà chưa 1 lần cài VMWare vào máy. Trải nghiệm với VirtualBox khá dễ chịu, bởi ngày ấy mình vẫn còn là 1 cute user của Windows. Và quá trình tập tành cài đặt Ubuntu cũng được thực hiện ở đây.

VirtualBox là một giải pháp ảo hóa hóa phần cứng. VirtualBox chạy cả trên Windows, Linux và Mac. Nhờ VirtualBox, người dùng có thể chạy các hệ điều hành khác ngay trên hệ điều hành mình đang dùng. Đặt 1 chân sang thế giới khác!

Nhưng hãy tin, thay đổi là việc khó khăn, phải nhấn mạnh hơn là cực kỳ khó.
Bởi thế cho nên, trên kinh nghiệm bản thân, mình chẳng bao giờ tin rằng 1 đứa dùng chỉ Ubuntu trên 1 cái máy ảo sẽ dùng Ubuntu trên 1 cái máy thật. Trừ 1 vài trường hợp bất bình thường, và nó sẽ cài Ubuntu lên máy thật. Tất nhiên, dual boot.

Sunday, 16 March 2014

[bash] Script tạo user trên Linux OS-based

Script này cần 2 arguments, 1 là username, 2 là password (loại password đơn giản, không hỗ trợ các password cần escape ký tự đặc biệt) và chạy với quyền root.

https://github.com/hvnsweeting/tinyscripts/blob/master/chuser.sh

Tested on

$ bash --version | grep bash ; uname -r
GNU bash, version 4.2.45(2)-release (x86_64-unknown-linux-gnu)
3.13.5-1-ARCH

Sunday, 9 March 2014

Một số lệnh liên quan đến card sound trên Linux

Cơ bản là tự dưng 1 hôm loa không hát nữa, sửa mãi nó không khỏi.
Nay đã sửa xong, viết hồi ký. Mỗi lần sửa chữa này mất rất nhiều thời gian và học được không ít điều mới.

Bài viết thực hiện trên:
# uname -r
 3.13.5-1-ARCH

ALSA (Advanced Linux Sound Architecture) là một thành phần của Linux Kernel cung cấp driver cho các card sound.

PulseAudio là một "sound server". Máy tớ không dùng pulseaudio. (máy cài Ubuntu 12.04 mặc định là có dùng PulseAudio)

0. alsamixer
Dùng câu lệnh alsamixer để mở bảng "mixer" và chỉnh âm (các loại volume).

1. aplay


$ whatis aplay
aplay (1)            - command-line sound recorder and player for ALSA soundcard driver   

$ aplay -l  # List all soundcards and digital audio devices
**** List of PLAYBACK Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC269VB Analog [ALC269VB Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Tuesday, 4 March 2014

[bash] Brace expansion

$ for i in {1..11}; do echo hostxxx-$i; done                                                               
hostxxx-1
hostxxx-2
hostxxx-3
hostxxx-4
hostxxx-5
hostxxx-6
hostxxx-7
hostxxx-8
hostxxx-9
hostxxx-10
hostxxx-11
$ for i in {01..11}; do echo hostxxx-$i; done                                                             
hostxxx-01
hostxxx-02
hostxxx-03
hostxxx-04
hostxxx-05
hostxxx-06
hostxxx-07
hostxxx-08
hostxxx-09
hostxxx-10
hostxxx-11

Monday, 3 March 2014

awk và cut

Các tiện ích UNIX (UNIX utilities) thường nhận đầu vào là text, và output ra cũng là text. Để các chương trình nối lại được với nhau, tức dùng output của chương trình này làm imput cho chương trình kia, người ta sử dụng pipeline (" | ").

Cũng vì điều nói trên, mà việc bóc tách dữ liệu từ output của 1 chương trình là cần thiết, bởi 1 chương trình có thể sinh ra nhiều dòng text, trong khi bạn chỉ cần 1 dữ liệu nào đó trong đống text đấy. Bạn có thể copy bằng tay, nhưng bạn sẽ không muốn làm như thế nếu phải làm 1000 lần, okay?

2 trong số nhiều công cụ phục vụ mục đích trên là "cut" và "awk", mục đích chính (được dùng nhiều nhất) là dùng để cắt theo cột. Các ví dụ sau sẽ minh họa tính năng của cut và awk

$ echo "one/two/three" | cut -d'/' -f1
one
$ echo "one/two/three" | cut -d'/' -f2
two
$ echo "one/two/three" | cut -d'/' -f3
three
$ echo "one/two/three" | cut -d'/' -f2-
two/three
$ echo "one:two:three" | cut -d':' -f2-
two:three
$echo "/one/two/three" | cut -d'/' -f2
one

Và awk

hvn@lappy: ~ () $ echo "one:two:three" | awk -F':' '{print $1}'
one
hvn@lappy: ~ () $ echo "one:two:three" | awk -F':' '{print $1}'
one
hvn@lappy: ~ () $ echo "one:two:three" | awk -F':' '{print $2}'
two
hvn@lappy: ~ () $ echo "one:two:three" | awk -F':' '{print $1 $2}'
onetwo

Từ các output nói trên, hãy nhớ rằng cut và awk đều coi vị trí số 1 là vị trí trước "separator" đầu tiên (separator được chỉ định bởi -d với cut và -F với awk)

Sunday, 2 March 2014

Lấy External IP


Để lấy public IP của máy mình hiện tại, dùng lệnh:

$ dig +short myip.opendns.com @resolver1.opendns.com
113.190.182.179

Ngoài ra còn vài cách khác, có thể kể đến

$ curl icanhazip.com
113.190.182.179

source: https://coderwall.com/p/lyrjsq?utm_campaign=weekly_digest&utm_content=Privately+receive+personally+curated&utm_medium=email

Hết!

Saturday, 1 March 2014

List các địa chỉ mà máy mình đang connect tới

Nhân dịp rỗi việc, tự dưng thấy mạng chậm nghĩ máy mình bị hack, đành phải kiểm tra.

Dưới đây là 1 đoạn command trông khá tởm, sẽ sớm chuyển thành 1 script để mọi người tiện dùng.
Tác dụng là lấy top những  địa chỉ domain mà máy mình đang connect tới.

sử dụng câu lệnh ss -a để liệt kê các kết nối máy mình đang thực hiện

$ for i in `ss -a | grep -v 'Peer' | grep -v '*' | tr -s ' ' | cut -d' ' -f5- | sort | uniq -c| sort -nr| head | tr -s ' ' | cut -d' ' -f3 | cut -d ':' -f1 `; do echo "$i: $(dig -x $i +short)"; done
54.221.234.83: ec2-54-221-234-83.compute-1.amazonaws.com.
23.62.109.199: a23-62-109-199.deploy.static.akamaitechnologies.com.
31.13.68.33: edge-star-shv-03-hkg1.facebook.com.
198.252.206.25: stackoverflow.com.
173.252.102.241: channelproxy-shv-06-ash2.facebook.com.
108.160.163.108: snt-re4-8d.sjc.dropbox.com.
Mình viết khá là thô thiển nên mời mọi người tung ra các phiên bản ngắn hơn của các câu lệnh trên :D

1. dẫn đầu là 1 địa chỉ dùng cloud amazonaws, vào địa chỉ ấy thì đó là trang của dropbox (máy mình đang chạy dropbox)