Skip to main content

Posts

Showing posts from December, 2014

[algorithm] sleep sort

UPDATED : đã update phiên bản viết bằng golang ở cuối bài. Ngày hôm nay,  cộng đồng hackernews điên đảo vì một thuật toán sắp xếp được phát minh từ năm 2011 do một người ẩn danh đưa ra với tên gọi "sleep sort" . Nguyên văn implement trên bash như sau: #!/bin/bash function f () {     sleep "$1"     echo "$1" } while [ - n "$1" ] do     f "$1" &     shift done wait example usage: . /sleepsort.bash 5 3 6 3 6 3 1 4 7 Chỉ cần google là bạn sẽ tìm thấy nguồn, bài viết này sẽ không link đến trang mà thuật toán này được công bố, đơn giản vì không thích. Nếu lười gõ google, bạn có thể bấm vào đây .

[CLI] xargs - câu lệnh để xây dựng câu lệnh

Trên UNIX-like OS, không phải câu lệnh nào cũng nhận đầu vào qua stdin, và như thế có vẻ không tiện lắm để output của câu lệnh trước làm input cho câu lệnh sau - một tính năng tuyệt vời "pipeline" của shell. grep có thể lấy output của chương trình khác thành input của mình, ví dụ: $ ps -fU root | grep -E '[g]etty|^UID' UID        PID  PPID  C STIME TTY          TIME CMD root       850     1  0 17:19 tty4     00:00:00 /sbin/getty -8 38400 tty4 root       855     1  0 17:19 tty5     00:00:00 /sbin/getty -8 38400 tty5 root       864     1  0 17:19 tty2     00:00:00 /sbin/getty -8 38400 tty2 root       865     1  0 17:...

[CLI] printf

printf là gì? $ whatis printf printf (1)           - format and print data $ which printf /usr/bin/printf Chú ý các shell thường implement hàm printf có tính năng tương tự, để nâng cao hiệu năng do thường được sử dụng thường xuyên và sẽ không cần chạy printf ở process con. Về cở bản thì chức năng giống nhau và có thể dùng lẫn. Để đảm bảo đúng bài tut này, hãy gõ đầy đủ /usr/bin/printf Cú pháp printf FORMAT ARGUMENTS printf sẽ in ra terminal các argument đã định dạng theo với < FORMAT >. Tất cả các tham số truyền vào sau FORMAT đó đều là các ARGUMENTS.

[Sec] SASL

Simple Authentication and Security Layer ( SASL ) Nhìn tên thì có vẻ gì đấy bí hiểm nhưng bạn sẽ ngạc nhiên khi mở trang wikipedia của nó [1] ra vì nó rất ngắn. Cộng với chữ Simple ở đầu, hãy tin rằng đây là một thứ dễ hiểu và bạn sẽ hoàn toàn hiểu nó sau khi đọc hết bài này. Thậm chí RFC4422 cũng chỉ dài có 31 trang [2]. SASL là gì? SASL là một framework cho việc cung cấp 2 dịch vụ: - Authentication (xác thực) - Security layer (tầng bảo mật) cho các protocol (giao thức) hướng kết nối [3] (TCP là một trong số đó). SASL để làm gì? khi một giao thức đã hỗ trợ SASL, bạn không cần phải code thêm để xác thực người dùng (cơ bản nhất là sử dụng một cặp username/password) mà chỉ việc "đá quả bóng trách nhiệm" sang cho SASL (có thể là một thư viện hay một daemon), SASL sẽ thực hiện công việc xác thực người dùng theo cách bạn đã chọn, đồng thời cũng cung cấp các tính năng security như khả năng đảm bảo dữ liệu khi truyền được nguyên vẹn và bí mật.

[G01E01] 2 mũ n

Loạt bài về những quan tâm bất thường đến những thứ có vẻ bình thường. ý nghĩa của chữ G sẽ được giải thích nếu có 10 bài viết trong series này. Có bao giờ bạn nghĩ mình sẽ nhớ hết các luỹ thừa của 2? 2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 2^4 = 16 2^5 = 32 2^6 = 64 2^7 = 128 2^8 = 256 2^9 = 512 2^10 = 1024 2^11 = 2048 2^12 = 4096 2^13 = 8192 2^14 = 16384 2^15 = 32768 2^16 = 65536

[Programming] phê ROT13

Lâu rồi cảm giác phê ấy mới trở lại ~^.^~ Giống như mỗi lần vắt óc giải một bài ProjectEuler và bấm vào nút check kết quả thấy nó màu xanh :3 Hôm nay là ROT13, thật ra nó chẳng có gì phức tạp cả, nhưng sau khi implement được ROT13 sử dụng một ngôn ngữ mới thì lại phải phê. Tại sao lại là ROT13 - 13 - 13 - 13 ? ROT13 (" rotate by 13 places") là một phương pháp "mã hoá" đơn giản bằng việc thay thế 1 chữ cái bằng chữ cách nó 13 chữ cái trong bảng chữ cái tiếng Anh. Lý do có số 13 (mà không phải 14 hay 15 cho trăng tròn) bởi bảng chữ cái tiếng Anh gồm 26 chữ, và nhờ vậy mà để giải mã các ký tự đã bị đảo đi, người ta chỉ cần dịch nó đi tiếp 13 chữ là thu được kết quả ban đầu. Tưởng tượng bảng chữ cái là một vòng tròn như sau: ... a b c ... x y z a b c ... Hoặc tưởng tượng khác đi một chút, hãy chia bảng chữ cái làm đôi và xếp cạnh nhau, ta có: a  b  c  d  e  f  g  h  i  j  k  l  m n  o  p  q  r ...

Phát hiện giật mình về GCC, gcj, g++...

=)) giật tít kênh14 phải gọi là thánh :3 compiler là gì? trình biên dịch là gì? là một loại phần mềm biến code thành mã máy (thứ mã kỳ diệu để điều khiển máy tính). Ngày xửa ngày xưa, thời học C, có dùng gcc để compile code C, và mình cứ nghĩ nó chỉ để compile C thôi (G là GNU , CC đoán là C compiler). Đến nay mới phát hiện ra bí mật diệu kỳ này: GCC là viết tắt của GNU Compiler Collection - một tâp hợp nhiều compiler cho các ngôn ngữ khác nhau bao gồm: C, C++, Objective-C, Java, Fortran, Ada, golang. Sự thật thì ngày xưa gcc là viết tắt của "GNU C compiler", nhưng đã từ rất lâu rồi, sau khi thêm các compiler khác vào project thì project GCC mới đổi ý nghĩa như vậy. Java??? wth? Chính xác là java, và compiler của nó có tên là GCJ , thế nhưng từ ngày Sun công khai mã nguồn của jdk , project GCJ đã chết và cơ bản giờ chỉ còn ở đó cho đẹp.  (tin update cuối cùng của project này check cách đấy 3 giây là "September 22, 2009") C++? vậy G++ là cái gì?

sysctl - cấu hình các tham số kernel khi đang chạy

sysctl là một công cụ đơn giản ( vâng, đơn giản hơn cả ls ), công việc của nó chỉ có hiển thị hoặc thay đổi một tham số nào đó của kernel. Vấn đề biết phải thay đổi tham số nào, để làm gì mới là phần ... phức tạp. Hỏi theo phong cách CCGU : # whatis sysctl sysctl (8)           - configure kernel parameters at runtime # whereis sysctl sysctl: /sbin/sysctl /etc/sysctl.d /etc/sysctl.conf /usr/share/man/man8/sysctl.8.gz Hiển thị 1 parameter có tên là net.ipv4.ip_forward (để cho phép forward gói tin) : # sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0 Thay đổi giá trị của parameter nói trên: # sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1 Các settings của sysctl nằm ở /etc/sysctl.conf và có thể trong thư mục /etc/sysctl.d , để thay đổi có hiệu lực cả sau khi reboot , cần sửa các file này thay vì set trực tiếp bằng sysctl. Các parameter mà sysctl thao tác được liệt kê ở dạng file tại thư mục /proc/sys . ...

[postgres] Xem các số liệu thống kê về Postgresql

Postgresql cung cấp rất nhiều thông tin về chính nó, các database, ... đại loại là tất cả các thông số mà bạn sẽ cần. Postgres có sẵn nhiều view, chỉ việc mở ra và xem, danh sách các view trong bảng này: http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE Để xem các stats này sử dụng postgres chạy lệnh psql : # su postgres -s /bin/sh $ psql psql (9.2.4) Type "help" for help. postgres=# Gõ một query để xem, ví dụ với view " pg_stat_database ": postgres=# select * from pg_stat_database; output sẽ khá là khó nhìn. Giống thế này:

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG