thăm ḍ ư kiến, ping, pubsub, pubsubhub, pubsubhubbub

Ngày 06 tháng 9 năm 2009 bởi Prashant · B́nh luận
Nộp theo: công nghệ

Trong trường hợp bạn nghi ngờ, có một phương pháp trong sự điên rồ trên, trong tiêu đề của bài viết. Trong giới công nghệ cao là không chắc rằng bạn đă không nghe nói về pubsubhubbub. Trong vài tháng nhanh chóng, nó đă là một trong ba người đứng đầu nói chuyện về mọi thứ. Hai là homomorphic mă hóa và Google sóng [ 1 ]. Trở lại bài viết hiện tại trong tiêu đề cho thấy làm thế nào bạn nhận được các nội dung từ những người khác. Chi tiết sau trở nên rơ ràng hơn, nếu bạn tưởng tượng những điều xảy ra liên quan đến các blog, mặc dù họ được khái niệm không bị giới hạn đến các blog.

Bỏ phiếu đề cập đến kịch bản mà khách hàng yêu cầu các máy chủ nếu một cái ǵ đó mới đă đến. Thường yêu cầu cập nhật sẽ luôn luôn là một vấn đề với bỏ phiếu quá thường xuyên hoặc quá thường xuyên, nhưng là một độc giả đă chỉ ra ở đây là một điều tuyệt vời với bỏ phiếu là do máy chủ không phải duy tŕ trạng thái.

Ping đề cập đến trường hợp khi gửi một bài viết, bạn (hoặc phần mềm của bạn) cũng cập nhật một số dịch vụ cập nhật phổ biến (trung ương). Một số nền ở đây .

Tiếp theo là pubsub viết tắt cho xuất bản / đăng kư, một trong những sân sớm nhất cho nó đă được thực hiện bởi Evan Henshaw Plath và Kellan Elliott McCrea (72 slide nhưng giá trị sẽ thông qua). Buộc ví dụ họ đă chống lại điều này vào một ngày cụ thể, Friendfeed thu thập thông tin Flickr 2,9 triệu lần để có được những bức ảnh mới nhất của 45.754 người sử dụng, trong đó 6.721 đă truy cập Flickr trong những 24 giờ và có thể có khả năng "tải lên một bức ảnh. Lưu ư rằng những ǵ họ đề xuất không phải là một công nghệ mới, như họ chỉ ra cách mạng mới 20 công nghệ năm cũ '. Nếu bạn làm điều đó cho blog sau đó một trong những vấn đề lớn với XMPP - sự hiện diện của dữ liệu trên không, có thể cao tới 60-70% có thể được giảm rất nhiều.

pubsubhub là viết tắt cho xuất bản subscribe trung tâm và pubsubhubbub là một giao thức, cốt lơi trong đó là ư tưởng của pubsubhub. Nhà xuất bản trong đó (blogger) cập nhật các trung tâm (có thể có nhiều hơn một trung tâm, nói chuyện với nhau) cư trú "ở một nơi nào đó trong đám mây ', theo giao thức này có thể đẩy hoặc kéo theo giao thức liên kết tiếp theo trong chuỗi trung tâm, cho khách hàng (độc giả) luôn luôn được thúc đẩy mô h́nh trang này là điểm khởi đầu cho pubsubhubbub, tŕnh bày tổng quan là tốt. Anil Dash bao giờ hùng hồn mô tả ở đây là nút bấm web.
Hai lần đọc khác liên quan đến webhooks đó là cơ bản callbacks http. Github sử dụng nó, v́ vậy paypal thông báo không đồng bộ của thanh toán trong IPN V́ vậy, nhiều người khác. Khái niệm liên quan rsscloud pubsub trung tâm. Thực hiện theo liên kết này để biết thêm chi tiết.

Bạn có thể được viết tất cả những điều này ở đây là những ǵ, có hai 1. Những điều này là giá trị hiểu biết, tối thiểu ít nhất và 2. Blog này là pubsubhubbub kích hoạt thông qua appspot trung tâm bằng cách sử dụng này wordpress plugin và thức ăn chăn nuôi quá pubsubhubbub kích hoạt thông qua liên kết, Feedburner đây
-
[ 1 ]. - Tốt giới thiệu đọc mă hóa đầy đủ homomorphic là bài ​​viết này bởi Bruce Schneier và nói chuyện này là nhiều hơn hoặc ít hơn chỉ nguồn cho làn sóng Google.

-UPDATE - Bài viết này giải thích làm thế nào các yêu cầu của máy chủ công cộng để gọi lại có thể được làm việc xung quanh cho các khách hàng máy tính để bàn bằng cách sử dụng cổng XMPP (cho pubsubhubbub).

Một chút lắp ráp

29 Tháng 8, 2009 bởi Prashant · B́nh luận
Nộp theo: công nghệ

Sau khi đọc bài viết này về bộ đệm miễn phí khóa và nh́n thấy việc sử dụng của CAS (so sánh và trao đổi), tôi cảm thấy như đăng các mă lắp ráp để làm như vậy. Sử dụng trường hợp đó là viết một phương pháp bản địa và gọi nó từ Java (trở lại trong 1.5, khi cấu trúc dữ liệu đồng thời trong Java nhiều hơn hoặc ít hơn không tồn tại). Nếu không có thêm ado, tôi sẽ mở ra mă vào bạn :) . Đầu tiên là cho CAS và thứ hai là cho máy tính GCD bằng cách sử dụng thuật toán Euclid (điều này có thể được t́m thấy ở nhiều nơi và hướng dẫn).

Biên dịch và chạy hướng dẫn gcc file_name.c ; ./a.out

So sánh và Trao đổi

   # Bao gồm 
  # Bao gồm 
 / / Trao đổi - newvalue, comperand cũ / giá trị dự kiến
 / *
  * Chức năng thực hiện các điều sau đây nếu giá trị tại * dest là bằng oldvalue sau đó thay thế nó bằng cách newvalue khác để nó không thay đổi: làm tất cả những nguyên tử
  *
  * Có hai lựa chọn giá trị trả về
  * 1.is giá trị ban đầu * dest và để lại gánh nặng của fxn gọi để so sánh nó với oldval
  * 2.  làm điều đó hơn ở đây và trở về 0 hoặc 1, điều này sẽ có hiệu quả hơn
  ** /

 / * Sau đó thay đổi nó thành vĩ mô * /
 int cas (int * dest, int oldvalue, int newvalue)
	 printf ("(% d,% d,% d)", * dest, oldvalue, newvalue);
	 / * Int cas (int dest, int oldvalue, int newvalue) {* /
	 / * Int cas (int dest, int newvalue, int oldvalue) {* /
	 int kết quả = 1; * 1 cho thấy cas thành công và 0 cho thấy rằng nó không thành công * /
	 / * Btw cần phải thiết lập cc clobbering cờ!  * /
	 __asm__ __ volatile__ (
			 "Movl% 2,% eax \ n \ t"
			 "Movl% 3,% ebx \ n \ t"
			 "Movl% 0,% ecx \ n \ t"
			 "Khóa \ n \ t"
			 "CMPXCHG ebx%% (% ecx%) \ n \ t" / * KHÓA nên trên cùng một ḍng * /
			 "Jz Làm \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "Làm: \ n \ t"
			 : "M" (dest), "g" (kết quả)
			 : "G" (oldvalue), "g" (newvalue), "m" (dest)
			 : "% Eax,% ebx, ecx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldvalue, newvalue);
	 Kết quả trả lại;
 }

 / * TODO
  * Viết khác fxn asm đặt trên fxn trong một ṿng lặp trong khi và tiếp tục cố gắng, trừ khi nó thành công * /

 int main () {
	 int a = 5, b = 6;
	 int * c = (int *) malloc (sizeof (int));
	 * C = 6;
	 / * Int c = 6; * /
	 printf ("% d \ n", cas (c, b, b));
	 printf ("% d \ n", cas (c, b, a));
	 printf ("% d \ n", cas (c, a, a));
	 printf ("% d \ n", cas (c, b, b));
	 * C = 6;
	 / * C = 5; * /
	 printf ("thay đổi giá trị của * c% d \ n", * c);
	 printf ("% d \ n", cas (c, b, b));
	 printf ("% d \ n", cas (c, b, a));
	 printf ("% d \ n", cas (c, a, a));
	 printf ("% d \ n", cas (c, a, b));
	 printf ("% d \ n", cas (c, b, a));
	 trở về 0;
 }

Định dạng ghi chú - có vẻ như highlighter cú pháp wp được thêm cuối cùng, bỏ qua điều đó.

GCD

 # Bao gồm 
 int UCLN (int a, int b) {
     int kết quả;
     / * Tính toán Greatest Common Divisor bằng cách sử dụng thuật toán Euclid * /
     volatile__ __asm__ __ ("movl% 1,% eax;
                           "Movl% 2,% ebx;"
                           "CONTD: cmpl $ 0,% ebx;"
                           "Je Làm;
                           "Xorl%% EDX, EDX%%;
                           "Idivl%% ebx;"
                           "Movl%% ebx, eax%%;
                           "Movl% edx,% ebx%;
                           "Jmp CONTD;
                           "DONE: movl% eax,% 0;": "= g" (kết quả): "g" (a), "g" (b)
     );

     Kết quả trả lại;
 }

 int main () {
     int 1, thứ hai;
     printf ("Nhập hai số nguyên:");
     scanf ("% d% d", và trước tiên, và thứ hai);

     printf ("GCD% d% d là% d \ n", đầu tiên, thứ hai, gcd (đầu tiên, thứ hai));

     trở về 0;
 }

Cricketing Thế giới đang chờ đợi một trật tự thế giới mới

Ngày 25 tháng 8 2009 bởi Prashant · B́nh luận
Nộp theo: misc

Sau một loạt kéo dài năm kiểm tra và khoảng hai tháng, Anh tro khai hoang.

Chúng ta hăy nói về đội chiến thắng đầu tiên để trung b́nh của họ là 'trung b́nh' nếu bạn không muốn quan trọng. Greame Swann đóng góp với dơi sẽ được tính không kém so với đóng góp với bóng. Stuart Broad - tốt nhất tất cả tṛn là không khởi động cho các thử nghiệm thứ 5. Andrew Strauss là chỉ phù hợp batsman và Jimmy Anderson là chỉ phù hợp bowler.

Ở đây không phải để trách móc những thành tựu của đội chiến thắng, nhưng để đưa vào quan điểm thực tế mà bất chấp tất cả những điều này, Australia đă mất. bạn sẽ phải suy nghĩ vài giây, nếu được yêu cầu đặt tên bowler tốt nhất của họ. Đúng, nó là BW Hilfenhaus,. Hauritz tốt hơn kỳ vọng của everbody nhưng vẫn không đủ tốt để được lựa chọn cho hai năm thử nghiệm. Nam Phi không bao giờ trở thành một beater thế giới mà không có một ṿng quay đẳng cấp thế giới, Australia không thể hy vọng vẫn là một mà không có một một trong những đủ tốt ít nhất. Magician rời sân khấu và nó không giống như nghệ thuật nữa, quên ma thuật. Ponting đứng cao trong số những con người thấp hơn và Michael Clarke đứng lên rất thường xuyên, nhưng mà làm cho họ một nhóm với một số cầu thủ rất tốt và không phải là một đội bóng rất tốt.
Ashes 2009 sẽ được nhớ cho Ashes cuối Andrew Flintoff của, Stuart Broad của đến như 1 tất cả tṛn (nếu ông cho biết thêm văn hóa dân gian Ashes một số chi tiết bắt đầu đầy hứa hẹn của ông), và một trong các thế kỷ đầu tiên nổi bật nhất của mọi thời đại bởi Trott nhưng nó cũng sẽ là nhớ đến như là điểm nơi ifs and buts về uy quyền tối cao của Úc cuối cùng đă được đưa vào phần c̣n lại, nó là hơn. Đừng làm cho tôi sai, họ vẫn có thể t́m Mike Hussey hoặc Stuart Clark nhưng bạn cảm thấy sự đóng góp của tất cả các cầu thủ vĩ đại thời gian khi họ bị mất đi. Đôi khi họ đến để nhắc nhở bạn của ḿnh trong IPL nhưng họ vẫn không thể thay thế. Chúng ta hăy cảm thấy may mắn v́ đă nh́n thấy Warne, McGrath và Gilchrist chơi với nhau và được hỗ trợ bởi Waughs, Ponting, Hyden, Martin và Langer.

Đi về phía trước, Nam Phi sẽ luôn luôn vẫn là một đội bóng rất tốt nhưng họ cần phải giành chiến thắng trận bán kết và nhất quán hơn trên toàn cầu, Việt Nam sẽ vẫn c̣n enigmatically rực rỡ, súng trẻ Ấn Độ có thể sẽ t́m thấy nó khó khăn để điền vào những đôi giày của người tiền nhiệm đặc biệt. Sri Lanka tiếp tục thể hiện cái nh́n thoáng qua của nghệ thuật thủ công. Tuy nhiên, chúng ta có thể phải chờ cho đôi khi trước khi có một đội ngũ tất cả ra chiếm ưu thế trước khi đội trưởng phàn nàn về sự thiếu cạnh tranh, như Steve Waugh đă làm một lần.

Trên một lưu ư liên quan - chúng ta hăy chào đón sự trở lại sắp tới của Asif, ông có 1 rất nhiều địa ngục tiềm năng, cho phép của hy vọng để nh́n thấy một số trong đó và cũng chào đón Andy Hoa awatar mới, bên phải, bạn không thể giữ người đàn ông tốt xuống cho lâu dài.

ruby 1 lót để tạo ra băm

20 tháng 8 năm 2009 bởi Prashant · B́nh luận
Nộp theo: công nghệ

Hôm qua trong khi đi qua một trong các chương tŕnh cũ của tôi, tôi t́m thấy này được viết bởi tôi trở lại:

#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic

Để giết một số bị đ́nh hoăn cho tôi tiết lộ rằng raw_text trông giống như

 

, Phải nó đă được cắt từ xác nhận thanh toán paypal.

Trên đường nếu bị phá vỡ trong các phần đọc tốt hơn:

  unescaped_array = CGI.unescape (raw_text). split ('&')
   unescaped_array = unescaped_array.collect {| x | b = x.split ("="); b.push (không) nếu b.size == 1;}
   flattened_array = unescaped_array.flatten
   hash = Hash [* flattened_array] 

Hăy để thực hiện các bước cá nhân trong IRB:

  irb (main): 009:0> unescaped_array = CGI.unescape (raw_text) chia ('&')    

 => ["SUCCESS", "mc_gross = 10.00", "protection_eligibility = không hợp lệ", "payer_id = U7PPJJ4TSJ47E", "thuế = 0.00", "payment_date = 09:45:30 ngày 10 Tháng Bảy 2009 PDT", "payment_status = chờ "]                                                                         

 irb (main): 013:0> unescaped_array = unescaped_array.map {| x | b = x.split ("="); b.push (không) nếu b.size == 1;}  

 => [["SUCCESS", nil], ["mc_gross", "10,00"], ["protection_eligibility", "không hợp lệ"], ["payer_id", "U7PPJJ4TSJ47E"] ["thuế", "0.00"] ["payment_date", "09:45:30 ngày 10 tháng bảy 2009 PDT"], ["payment_status", "chờ"]]                               

 irb (main): 014:0> flattened_array = unescaped_array.flatten     

 => ["SUCCESS", con số không, "mc_gross", "10,00", "protection_eligibility", "không hợp lệ", "payer_id", "U7PPJJ4TSJ47E", "thuế", "0.00", "payment_date", "09:45: 30 ngày 10 tháng 7 năm 2009 PDT "," payment_status "," chờ "]
 irb (main): 015:0>
 hash = Hash [* flattened_array]
 => {"Thuế" => "0.00", "payment_status" => "chờ", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "THÀNH CÔNG" => con số không, "payment_date" = > "09:45:30 Jul 10, 2009 PDT", "protection_eligibility" => "không hợp lệ"} 

BTW, * được gọi là nhà điều hành splat trong ruby

Một cách khác để tạo ra băm từ mảng của cặp 'là để sử dụng tiêm:

  hash = [[1,2], [3,4]] tiêm ({}). {| kết quả, yếu tố | kết quả [element.first] = kết quả [element.last]; kết quả} 

Có là một trong nhiều cách :) Viết một ṿng lặp, tôi sẽ để lại như một bài tập cho các độc giả!

Dưới đây là một chút trường hợp sử dụng không liên quan của việc tạo ra băm từ mảng:

  IRB (chính): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.  : Ít hơn :: lớn hơn}

 => {: Ít hơn => [1, 2, 3, 4]: lớn hơn => [7, 9]} 

Bạn có thể làm việc nhiều hơn, về cơ bản kết quả của khối được sử dụng như là ch́a khóa cho rằng phần tử trong bảng băm kết quả.

gmail, mutt và sửa chữa msmtp

17 tháng tám năm 2009 bởi Prashant · B́nh luận
Nộp theo: công nghệ

Nếu bạn sử dụng mutt và smtp để truy cập gmail. Đây là một tin tức (xấu). Kẻ mát vào Google một lần nữa thay đổi giấy chứng nhận. Oh, bạn hỏi làm thế nào để nó biết nó? Đơn giản mutt bắt đầu phàn nàn về chứng chỉ xấu khi cố gắng sử dụng msmpt, khét tiếng 'msmtp: TLS giấy chứng nhận xác minh không thành công: giấy chứng nhận không có một tổ chức phát hành được biết đến chào tôi trên màn h́nh.

Để vượt qua xác nhận -
Chỉ cần chạy sau

$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off

Nơi Server Thwate cũ bây giờ bạn nhận được sau đây trong phân khúc công ty phát hành
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

May mắn thay, sửa chữa là đơn giản, đây là những ǵ bạn cần phải làm trên debian

# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814

Sau này chỉ cần thay đổi ḍng sau trong bạn ~ /. Msmtprc

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

để

tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt

Git và Khảo sát Awesome

Tháng Tám 15, 2009 bởi Prashant · B́nh luận
Nộp theo: misc

Dưới đây là hai liên kết cho cuộc khảo sát của git (phiên bản kiểm soát hệ thống) và cộng đồng (quản lư cửa sổ) tuyệt vời. Nếu bạn sử dụng một trong những, xin vui ḷng đưa ra một số thời gian để điền vào bảng câu hỏi. Hăy suy nghĩ về nó như là cách đơn giản nhất để đóng góp cho phần mềm mà bạn sử dụng.
Dưới đây là các liên kết:

Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54

Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

Lưu ư - (t́m thấy trên các trang nhưng ở dưới cùng :) ) -
"Nếu bạn đă bật cookie, bạn luôn có thể tŕnh điều tra một phần đầy, và quay trở lại câu trả lời của bạn ở thời gian sau đó, hoàn thành nó sau này."

Việc sáp nhập băm trong các tập tin conf yaml

31 Tháng Bảy 2009 bởi Prashant · B́nh luận
Nộp theo: công nghệ

YAML là khá tiện dụng để viết các tập tin cấu h́nh. Chính lợi thế đó, nó đọc tập tin văn bản. Điều này làm việc thực sự tốt nếu tập tin cấu h́nh của bạn là bằng phẳng (không có hệ thống phân cấp) và không có lần lặp lại.
Nếu tập tin cấu h́nh của bạn có lặp lại sau đó nó làm cho cảm giác để phân biệt những yếu tố và tái sử dụng chúng. Những ǵ tôi có nghĩa là chúng ta hăy nói rằng bạn tập tin cấu h́nh của bạn trông như thế này:

  phát triển:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: your_server
     đăng nhập: your_login
     mật khẩu: top_secret
 sản xuất:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: your_server
     đăng nhập: your_login
     mật khẩu: top_secret 

Giả sử trên mă trong / tmp / test.yml ở đây là làm thế nào bạn có thể đọc trong python, ruby
$cat readyml.py

 # / Usr / bin / env python
 từ pprint nhập khẩu pprint như Trang
 # Trong debian cần phải cài đặt python-yaml
 từ nhập khẩu yaml tải, băi chứa, load_all
 hash = tải (mở ('/ tmp / test.yml'))
 Trang (hash ['phát triển']) 


$ cat readyml.rb

  # / Usr / bin / env ruby
 yêu cầu 'Trang'
 hash = YAML :: tải (File.open ('/ tmp / test.yml').)
 Trang băm ['phát triển'] 

đây là một tiện dụng lót cho phiên bản ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' hoặc bạn có thể thử trong IRB hoặc giao diện điều khiển python.

Lưu ư rằng trong đoạn mă trên, tất cả mọi thứ khác hơn là đầu ra vị trí tương tự trong phát triển và một phần sản xuất. Đây là nơi định danh nút yml đến để giải thoát. Ư tưởng là đơn giản có một bộ các giá trị mặc định và ghi đè lên tại địa điểm khác nhau.
Bạn có thể kéo nó ra ngoài như sau:

  mặc định: - mặc định
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: người gửi
     smtp_server: your_server
     đăng nhập: your_login
     mật khẩu: top_secret
 phát triển:
   <<: * Mặc định
 sản xuất:
   <<: * Mặc định
   output_location: prod_location 


$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Tuyệt vời, nó hoạt động (tm).
Có thể cho rằng chúng tôi giao dịch ở một số rơ ràng cho một chút ma thuật. Đây là một lời giải thích nhỏ: &, và <<: & là anchor thẻ có thể được hiểu như là định danh nút, * là nút tham chiếu và <<: là viết tắt của hợp nhất băm.

Để biết thêm chi tiết xem một trong hai thông số kỹ thuật yaml hoặc wikipedia
Cho đến nay rất tốt nhưng có một nắm bắt ở đây, những sáp nhập băm không phải là đệ quy. Nó có nghĩa là: chúng ta hăy nói rằng bạn muốn có tên người gửi thư trong hai môi trường khác nhau, bạn có thể bị cám dỗ để làm như sau:

  mặc định: - mặc định
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: người gửi
     smtp_server: your_server
     đăng nhập: your_login
     mật khẩu: top_secret
 phát triển:
   <<: * Mặc định
   mail:
     SENDER_NAME: sender_dev
 sản xuất:
   <<: * Mặc định
   output_location: prod_location
   mail:
     SENDER_NAME: sender_prod 

Cho phép kiểm tra

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
nil
$

Rất tiếc, một cái ǵ đó đă đi sai, vấn đề như đă đề cập ở trên là hợp nhất hash không phải là đệ quy và khi hợp nhất nó thay thế thư mặc định của thư sản xuất mà chỉ có một ch́a khóa. Giải pháp / công tŕnh xung quanh là cuộn thêm một cấp độ:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAME: người gửi
   smtp_server: your_server
   đăng nhập: your_login
   mật khẩu: top_secret

 mặc định: - mặc định
   <<: * Common_settings
   mail:
     <<: * Mail_defaults
 phát triển:
   <<: * Mặc định
 sản xuất:
   <<: * Mặc định
   mail:
     <<: * Mail_defaults
     SENDER_NAME: sender_prod

Cho phép kiểm tra lại

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Bạn có nói rằng bạn có thêm một mức độ làm tổ, bạn có thể chắc chắn cuộn thêm một cấp nữa, nhưng sau đó nó trở thành một mớ hỗn độn. V́ vậy, nếu bạn không cố gắng để viết giải pháp cho tháp Hà Nội trong một tập tin conf, nó là tốt hơn để restucture tập tin conf hơn đào vào yaml hay cái ǵ khác. Nhưng đó là cuộc gọi của bạn anyway.

Lập tŕnh tuyệt vời t́m giải pháp đơn giản để vấn đề phức tạp

30 Tháng Sáu 2009 bởi Prashant · B́nh luận
Nộp theo: misc

Sau một thời gian dài, tôi có thể t́m thấy các nguồn sau đây trích dẫn nội dung bài viết này,

Junior lập tŕnh tạo ra các giải pháp đơn giản cho vấn đề đơn giản. Các lập tŕnh viên cao cấp tạo ra các giải pháp phức tạp cho các vấn đề phức tạp. Lập tŕnh tuyệt vời t́m thấy giải pháp đơn giản cho những vấn đề phức tạp.

Đó là từ một bài luận được gọi là đẹp Phần mềm Charles Connell.

Một số khác yêu thích của tôi là The Zen của Python -

Đẹp là tốt hơn so với xấu xí.
Rơ ràng là tốt hơn so với tiềm ẩn.
Đơn giản là tốt hơn so với phức tạp.
Phức tạp là tốt hơn so với phức tạp.
Flat là tốt hơn so với lồng nhau.
Thưa thớt là tốt hơn so với dày đặc.
Khả năng đọc tính.
Trường hợp đặc biệt không phải là đặc biệt, đủ để phá vỡ các quy tắc.
Mặc dù thực tiễn nhịp đập tinh khiết.
Lỗi không bao giờ vượt qua âm thầm.
Trừ khi rơ ràng im lặng.
Trong khi đối mặt với sự mơ hồ, từ chối sự cám dỗ để đoán.
Nên có một và tốt hơn rơ ràng chỉ có một cách để làm điều đó.
Mặc dù theo cách đó có thể không được rơ ràng lúc đầu, trừ khi bạn là Hà Lan.
Bây giờ là tốt hơn so với không bao giờ.
Mặc dù không bao giờ là thường tốt hơn * phải * bây giờ.
Nếu thực hiện là khó để giải thích, đó là một ư tưởng tồi.
Nếu thực hiện dễ dàng để giải thích, nó có thể là một ư tưởng tốt.
Không gian tên là một ư tưởng tuyệt vời honking - cho phép ta làm nhiều hơn nữa của những người!
-------------------------
và sau đó là cổ điển Tao của Lập tŕnh

-

các khoản tín dụng trên liên kết trang web

Translated by Geoffrey James

Phiên âm bởi Duke Hillard

Truyền qua Anupam Trivedi, Sajitha Tampi các các Meghshyam Jagannath

Re-html-ized và thay đổi nội dung bởi Kragen Sittler

-

Book 1 - The Void Im lặng

V́ vậy spake các lập tŕnh tổng thể:

"Khi bạn đă học được để giật lấy mă lỗi từ khung bẫy,
sẽ có thời gian cho bạn để lại. "

1,1

Một cái ǵ đó bí ẩn được h́nh thành, sinh ra trong khoảng không im lặng. Chờ đợi một ḿnh và
bất động, nó là cùng một lúc và chuyển động liên tục. Nó là nguồn gốc
của tất cả các chương tŕnh. Tôi không biết tên của nó, v́ vậy tôi sẽ gọi nó là Tao
Lập tŕnh.

Nếu Tao là rất tốt, sau đó hệ thống điều hành là rất tốt. Nếu điều hành
hệ thống là rất tốt, sau đó tŕnh biên dịch là rất tốt. Nếu tŕnh biên dịch là rất tốt,
sau đó ứng dụng là rất tốt. Người sử dụng được hài ḷng và có tồn tại
hài ḥa trên thế giới.

Tao lập tŕnh chảy xa và trả về trên gió của buổi sáng.

1,2

Tao đă sinh ra ngôn ngữ máy. Ngôn ngữ máy đă khai sinh ra
lắp ráp.

Lắp ráp đă sinh ra tŕnh biên dịch. Hiện nay có 10.000
ngôn ngữ.

Mỗi ngôn ngữ có mục đích của nó, tuy nhiên khiêm tốn. Mỗi ngôn ngữ thể hiện
Yin và Yang của phần mềm. Mỗi ngôn ngữ có vị trí của nó trong Đạo.

Tuy nhiên, không chương tŕnh trong COBOL nếu bạn có thể tránh nó.

1,3

Ban đầu là Đạo. Tao đă sinh ra không gian và thời gian.
Do đó, không gian và thời gian là Yin và Yang của chương tŕnh.

Các lập tŕnh viên không hiểu Đạo luôn luôn chạy hết thời gian
và không gian cho các chương tŕnh của họ. Các lập tŕnh viên có hiểu luôn Tao
có đủ thời gian và không gian để hoàn thành mục tiêu của họ.

Làm thế nào nó có thể là khác?

1,4

Các lập tŕnh viên khôn ngoan là nói về Đạo và sau nó. Trung b́nh
lập tŕnh viên được biết về Tạo và t́m kiếm cho nó. Lập tŕnh ngu ngốc
nói về Tao và cười vào nó.

Nếu nó không được cho tiếng cười, sẽ không có Tao.

Những âm thanh cao nhất là khó khăn nhất để nghe.
Đi về phía trước là một cách để rút lui.
Tài năng tuyệt vời cho thấy chính nó vào cuối cuộc đời.
Ngay cả một chương tŕnh hoàn hảo vẫn có lỗi.

-------------------------

Tập 2 - Thạc sĩ cổ đại

V́ vậy spake các lập tŕnh tổng thể:

"Sau ba ngày mà không cần lập tŕnh, cuộc sống trở nên vô nghĩa."

2,1

Những lập tŕnh cũ bí ẩn và sâu sắc. Chúng tôi không thể hiểu được
suy nghĩ của họ, v́ vậy tất cả chúng tôi làm là mô tả của họ xuất hiện.

Nhận thức, giống như một con cáo qua các nước. Cảnh báo, giống như một chung về
chiến trường. Loại, giống như một bà chủ chào vị khách của ḿnh. Đơn giản, giống như
uncarved khối gỗ. Đục, giống như hồ đen trong các hang động tối tăm.

Ai có thể cho biết những bí mật của trái tim và tâm trí của họ?

Câu trả lời chỉ tồn tại trong Tao.

2,2

Grand Master Turing đă từng mơ thấy ông là một máy tính. Khi lai tỉnh, ông
kêu lên:

"Tôi không biết liệu tôi đang Turing mơ ước rằng tôi là một máy tính, hoặc một
máy mơ ước mà tôi đang Turing! "

2,3

Một lập tŕnh từ một công ty máy tính rất lớn đến một phần mềm
hội nghị và sau đó trở về báo cáo quản lư của ḿnh, nói: "Điều ǵ sắp xếp
của các lập tŕnh viên làm việc cho các công ty khác? Họ cư xử tồi tệ và
không quan tâm đến xuất hiện. Tóc dài và bù xù của họ và
quần áo đă nhàu nát và cũ. Họ bị rơi bộ khách sạn của chúng tôi và họ
những tiếng ồn thô lỗ trong quá tŕnh tŕnh bày của tôi. "

Người quản lư nói: "Tôi chưa bao giờ gửi cho bạn hội nghị. Những người
lập tŕnh sống vượt ra ngoài thế giới vật lư. Họ xem xét cuộc sống vô lư,
t́nh cờ trùng hợp ngẫu nhiên. Họ đến và đi mà không biết hạn chế.
Không được chăm sóc, họ chỉ sống cho các chương tŕnh của họ. Tại sao họ nên bận tâm
với quy ước xă hội?

"Họ đang sống trong Đạo".

2,4

Một người mới hỏi Thầy: "Đây là một lập tŕnh viên không bao giờ thiết kế,
tài liệu hoặc kiểm tra các chương tŕnh của ḿnh. Tuy nhiên, tất cả những ai biết anh ta xem xét ông là một trong
các lập tŕnh tốt nhất trên thế giới. Tại sao điều này? "

Thầy trả lời: "Đó là lập tŕnh viên đă làm chủ được các Tao. Ông đă đi
vượt qua nhu cầu thiết kế; ông không trở nên tức giận khi hệ thống
tai nạn, nhưng chấp nhận vũ trụ mà không cần quan tâm. Ông đă đi vượt ra ngoài
cần tài liệu hướng dẫn; ông không c̣n quan tâm nếu có ai khác nh́n thấy mă của ḿnh.
Ông đă vượt quá sự cần thiết để thử nghiệm, mỗi chương tŕnh của ḿnh là hoàn hảo
bên trong ḿnh, thanh thản và thanh lịch, mục đích của họ hiển nhiên. Quả thật,
ông đă bước vào mầu nhiệm của Đạo. "

-------------------------

Book 3 - Thiết kế

V́ vậy spake các lập tŕnh tổng thể:

"Khi chương tŕnh đang được thử nghiệm, nó là quá trễ để làm cho thiết kế
thay đổi. "

3,1

Có một lần là một người đàn ông đi đến một triển lăm thương mại máy tính. Mỗi ngày, khi cha
nhập vào, người đàn ông nói với các bảo vệ ở cửa:

"Tôi là một kẻ trộm, nổi tiếng với những kỳ công của tôi v́ ăn cắp. Hăy
cảnh giác, triển lăm thương mại này không được thoát khỏi unplundered. "

Bài phát biểu này băn khoăn bảo vệ rất nhiều, bởi v́ có hàng triệu
đô la của thiết bị bên trong máy tính, v́ vậy ông xem người đàn ông cẩn thận. Nhưng
người đàn ông chỉ đơn thuần là đi lang thang từ gian hàng này đến gian hàng, ồn ào lặng lẽ với chính ḿnh.

Khi người đàn ông để lại, bảo vệ đă đưa anh sang một bên và t́m kiếm quần áo của ḿnh, nhưng
không có ǵ được t́m thấy.

Vào ngày tiếp theo của chương tŕnh thương mại, người đàn ông quay lại và khiển trách nhân viên bảo vệ
nói: "Tôi trốn thoát với một chiến lợi phẩm rộng lớn ngày hôm qua, nhưng ngày nay thậm chí c̣n
tốt "V́ vậy, bảo vệ theo dơi ông ngày càng chặt chẽ, nhưng không có kết quả.

Vào ngày cuối cùng của triển lăm thương mại, bảo vệ có thể kiềm chế sự ṭ ṃ của ḿnh
không c̣n. "Sir Thief", ông nói, "Tôi nên lúng túng, tôi không thể sống trong
ḥa b́nh. Xin soi sáng cho tôi. Đó là những ǵ mà bạn đang ăn cắp? "

Người đàn ông mỉm cười. "Tôi đang ăn cắp ư tưởng," ông nói.

3,2

Có một lần là một lập tŕnh tổng thể những người đă viết các chương tŕnh phi cấu trúc. A
người mới lập tŕnh viên, t́m cách bắt chước ông, cũng bắt đầu viết
không có cấu trúc chương tŕnh. Khi những người mới yêu cầu tổng thể để đánh giá của ḿnh
tiến bộ, tổng thể chỉ trích ông để viết các chương tŕnh phi cấu trúc,
nói, "Điều ǵ là phù hợp với tổng thể là không thích hợp cho
mới làm quen. Bạn phải hiểu Đạo trước khi vượt qua cấu trúc. "

3,3

Có một lần một lập tŕnh đă được gắn liền với các ṭa án của lănh chúa
Vũ. Các lănh chúa yêu cầu các lập tŕnh viên: "Đó là dễ dàng hơn để thiết kế:
kế toán trọn gói hoặc một hệ thống điều hành? "

"Một hệ điều hành", trả lời các lập tŕnh viên.

Các lănh chúa thốt lên một dấu chấm than của sự hoài nghi. "Chắc chắn kế toán
gói là tầm thường bên cạnh sự phức tạp của một hệ điều hành ", ông
nói.

"Không phải như vậy", cho biết các lập tŕnh, "khi thiết kế một gói phần mềm kế toán,
lập tŕnh hoạt động như một trung gian giữa người có khác nhau
ư tưởng: làm thế nào nó phải hoạt động, báo cáo của nó phải xuất hiện, và làm thế nào nó phải
phù hợp với pháp luật thuế. Ngược lại, một hệ điều hành không giới hạn
xuất hiện bên ngoài. Khi thiết kế một hệ thống điều hành, các lập tŕnh viên
t́m kiếm sự ḥa hợp đơn giản giữa máy tính và những ư tưởng. Đây là tại sao một
hệ điều hành dễ dàng hơn để thiết kế. "

Các lănh chúa của Wu gật đầu và mỉm cười. "Đó là tất cả tốt và tốt, nhưng
đó là dễ dàng hơn để gỡ lỗi? "

Các lập tŕnh viên không trả lời.

3,4

Một nhà quản lư đến các lập tŕnh tổng thể và cho thấy anh ta yêu cầu
tài liệu cho một ứng dụng mới. Người quản lư yêu cầu tổng thể: "Làm thế nào dài
nó sẽ làm để thiết kế hệ thống này nếu tôi chỉ định lập tŕnh để nó? "

"Nó sẽ mất một năm," tổng thể kịp thời.

"Nhưng chúng ta cần hệ thống này ngay lập tức hoặc thậm chí sớm hơn! Làm thế nào lâu
nếu tôi chỉ định mười lập tŕnh để nó? "

Các lập tŕnh tổng thể cau mày. "Trong trường hợp đó, nó sẽ mất hai năm."

"Và tôi nếu chỉ định một trăm lập tŕnh cho nó?"

Các lập tŕnh tổng thể nhún vai. "Sau đó thiết kế sẽ không bao giờ
hoàn thành ", ông nói.

-------------------------

Book 4 - mă

V́ vậy spake các lập tŕnh tổng thể:

"Một chương tŕnh tốt bằng văn bản là thiên đường riêng của ḿnh, một chương tŕnh viết kém là
địa ngục của riêng của nó. "

4,1

Một chương tŕnh nên được ánh sáng và nhanh nhẹn, chương tŕnh con của nó kết nối giống như một
chuỗi ngọc trai. Tinh thần và mục đích của chương tŕnh nên được giữ lại
trong suốt. Có nên không quá ít hoặc quá nhiều, không
ṿng lặp không cần thiết cũng không biến vô dụng, không thiếu cấu trúc cũng không
quá cứng nhắc.

Một chương tŕnh phải thực hiện theo Luật ngạc nhiên ít nhất '. Pháp luật này là ǵ?
Nó chỉ đơn giản rằng chương tŕnh nên luôn luôn đáp ứng cho người sử dụng trong cách
astonishes anh ta ít nhất.

Một chương tŕnh, không có vấn đề phức tạp, nên hành động như một đơn vị duy nhất. Chương tŕnh
nên được đạo diễn bởi logic bên trong hơn là bởi sự xuất hiện ra bên ngoài.

Nếu chương tŕnh bị lỗi trong các yêu cầu này, nó sẽ được ở trong trạng thái
rối loạn và nhầm lẫn. Cách duy nhất để sửa chữa này là viết lại
chương tŕnh.

4,2

Một người mới hỏi chủ: "Tôi có một chương tŕnh mà đôi khi chạy và
đôi khi hủy bỏ. Tôi đă theo các quy tắc của chương tŕnh, nhưng tôi
hoàn toàn có vách ngăn. Lư do cho điều này là ǵ? "

Các bậc thầy trả lời: "Bạn đang bối rối bởi v́ bạn không hiểu Tao.
Chỉ có kẻ ngốc hy vọng hành vi hợp lư từ người đồng nghiệp của ḿnh. Tại sao bạn
mong đợi nó từ một máy tính mà con người đă xây dựng? Máy tính mô phỏng
quyết định luận, chỉ có Tao là hoàn hảo.

"Các quy tắc của chương tŕnh là tạm thời, chỉ Tao là vĩnh cửu. Do đó
bạn phải suy ngẫm Tao trước khi bạn nhận được giác ngộ. "

"Nhưng làm thế nào tôi sẽ biết khi tôi đă nhận được sự giác ngộ?" Hỏi
mới làm quen.

"Chương tŕnh của bạn sau đó sẽ chạy một cách chính xác," chủ trả lời.

4,3

Một tổng thể đă được giải thích bản chất của Tao của một người mới của ḿnh. "Các
Tao được thể hiện trong tất cả các phần mềm bất kể như thế nào không đáng kể, "
chủ.

"Tao ở một máy tính cầm tay?" Hỏi những người mới.

"Đó là," ông trả lời.

"Tao là một tṛ chơi video?" Tiếp tục những người mới.

"Nó thậm chí là trong một tṛ chơi video", ông chủ.

"Tao trong DOS cho một máy tính cá nhân?"

Các bậc thầy ho và thay đổi vị trí của ḿnh một chút. "Bài học trên
cho ngày hôm nay ", ông nói.

4,4

Hoàng tử Vương lập tŕnh đă được mă hóa phần mềm. Ngón tay của ḿnh khi nhảy
bàn phím. Chương tŕnh biên dịch mà không có một thông báo lỗi, và chương tŕnh
chạy như một cơn gió nhẹ nhàng.

"Excellent!" Hoàng tử kêu lên, "Kỹ thuật của bạn là không vết!"

"Kỹ thuật?" Cho biết các lập tŕnh viên chuyển từ thiết bị đầu cuối của ḿnh, "Những ǵ tôi
theo là Tao - vượt ra ngoài tất cả các kỹ thuật! Khi tôi lần đầu tiên bắt đầu chương tŕnh tôi
sẽ thấy trước khi toàn bộ vấn đề trong một đoàn thể. Sau ba năm tôi không có
c̣n nh́n thấy khối lượng này. Thay vào đó, tôi sử dụng chương tŕnh con. Nhưng bây giờ tôi thấy không có ǵ.
Toàn bộ con người tồn tại trong một khoảng trống vô tướng. Giác quan của tôi là nhàn rỗi. Linh hồn tôi,
miễn phí để làm việc mà không có kế hoạch, theo bản năng riêng của ḿnh. Trong chương tŕnh ngắn của tôi,
viết riêng của ḿnh. Đúng, đôi khi có những vấn đề khó khăn. Tôi thấy họ
, tôi làm chậm, tôi xem âm thầm. Sau đó, tôi thay đổi một ḍng mă
và những khó khăn tan biến như nhát khói nhàn rỗi. Sau đó tôi biên dịch
chương tŕnh. Tôi ngồi yên và để cho niềm vui của công việc điền con của tôi. Tôi đóng của tôi
mắt cho một thời điểm và sau đó đăng nhập. "

Hoàng tử Wang cho biết, "có mà tất cả các lập tŕnh viên của tôi là khôn ngoan!"

-------------------------

Book 5 - Bảo tŕ

V́ vậy spake các lập tŕnh tổng thể:

"Mặc dù một chương tŕnh nhưng ba ḍng, một ngày nào đó nó sẽ phải được
duy tŕ. "

5,1

Một cánh cửa cũng được sử dụng không cần dầu trên bản lề của nó.
Một ḍng chảy nhanh chóng, không phát triển tŕ trệ.
Cả âm thanh cũng không phải suy nghĩ có thể đi du lịch thông qua chân không.
Phần mềm thối nếu không được sử dụng.

Đây là những bí ẩn lớn.

5,2

Một người quản lư hỏi một lập tŕnh bao lâu nó sẽ mất anh ấy để kết thúc
chương tŕnh mà ông đang làm việc. "Nó sẽ được hoàn thành vào ngày mai,"
lập tŕnh kịp thời trả lời.

"Tôi nghĩ rằng bạn là không thực tế", người quản lư nói, "Thực sự, làm thế nào
lâu nó sẽ mất? "

Các lập tŕnh viên suy nghĩ một lúc. "Tôi có một số tính năng mà tôi muốn
thêm. Điều này sẽ mất ít nhất hai tuần, "ông nói.

"Ngay cả đó là quá nhiều để mong đợi", khẳng định người quản lư, "Tôi sẽ là
hài ḷng nếu bạn chỉ đơn giản là cho tôi biết khi chương tŕnh hoàn tất ".

Các lập tŕnh viên đă đồng ư đến điều này.

Vài năm sau đó, người quản lư đă nghỉ hưu. Trên đường nghỉ hưu
bữa ăn trưa, ông đă phát hiện ra các lập tŕnh viên ngủ vào thiết bị đầu cuối của ḿnh. Ông đă
lập tŕnh tất cả các đêm.

5,3

Một lập tŕnh viên mới làm quen được một lần được giao nhiệm vụ viết mă cho một gói tài chính đơn giản.

Những người mới làm việc dữ dội trong nhiều ngày, nhưng khi ông chủ xem xét
chương tŕnh của ḿnh, ông phát hiện ra rằng nó có chứa một tŕnh soạn thảo màn h́nh, một tập hợp các
tổng quát đồ họa thói quen, một giao diện thông minh nhân tạo, nhưng
không đề cập đến bất cứ điều ǵ nhỏ nhất của tài chính.

Khi người chủ hỏi về điều này, người mới trở nên phẫn nộ. "Đừng
thiếu kiên nhẫn, "ông nói," Tôi sẽ đưa vào các công cụ tài chính cuối cùng. "

5,4

Có một nông dân bỏ bê một loại cây trồng, ông đă trồng?
Một giáo viên giỏi bỏ qua ngay cả những sinh viên khiêm tốn nhất?
Có một người cha tốt cho phép một đứa trẻ duy nhất để chết đói?
Một lập tŕnh tốt từ chối để duy tŕ mă của ḿnh?

-------------------------

Sách 6 - Quản lư

V́ vậy spake các lập tŕnh tổng thể:

"Hăy để các lập tŕnh viên và quản lư số - sau đó tất cả sẽ là
sản xuất. "

6,1

Khi quản lư tổ chức các cuộc họp bất tận, các lập tŕnh viên viết các tṛ chơi. Khi
kế toán nói lợi nhuận hàng quư, ngân sách phát triển là về để
được cắt giảm. Khi các nhà khoa học cấp cao nói chuyện với bầu trời xanh, những đám mây để cuộn
.

Quả thật, đây không phải là Đạo của Lập tŕnh.

Khi nhà quản lư đưa ra cam kết, các chương tŕnh tṛ chơi được bỏ qua. Khi
kế toán thực hiện kế hoạch dài hạn, sự hài ḥa và trật tự sắp được
phục hồi. Khi các nhà khoa học cao cấp giải quyết các vấn đề ở bàn tay,
vấn đề sẽ sớm được giải quyết.

Quả thật, đây là Đạo của Lập tŕnh.

6,2

Tại sao các lập tŕnh sản xuất không?
Bởi v́ thời gian của họ là lăng phí trong các cuộc họp.

Tại sao các lập tŕnh nổi loạn?
Bởi v́ quản lư can thiệp quá nhiều.

Tại sao các lập tŕnh từ chức từng người một?
Bởi v́ họ đă được đốt cháy.

Sau khi làm việc cho quản lư yếu kém, họ không c̣n giá trị công việc của họ.

6,3

Một người quản lư sắp bị sa thải, nhưng một lập tŕnh viên làm việc cho ông
phát minh ra một chương tŕnh mới trở nên phổ biến và tiêu thụ khá tốt. Kết quả là,
quản lư giữ lại công việc của ḿnh.

Người quản lư đă cố gắng để cung cấp cho các lập tŕnh viên một tiền thưởng, nhưng các lập tŕnh viên
từ chối, nói rằng, "Tôi đă viết chương tŕnh bởi v́ tôi nghĩ rằng nó là một
khái niệm thú vị, và v́ vậy tôi hy vọng không có phần thưởng. "

Người quản lư khi nghe nhận xét, "lập tŕnh này, mặc dù ông nắm giữ
một vị trí nhỏ của ḷng tự trọng, hiểu rơ nhiệm vụ thích hợp của một
nhân viên. Hăy để chúng tôi thúc đẩy ông đến vị trí cao quư của quản lư
tư vấn! "

Nhưng khi được kể lại này, các lập tŕnh một lần nữa từ chối, nói rằng, "Tôi tồn tại v́ vậy
mà tôi có thể lập tŕnh. Nếu tôi được thăng chức, tôi sẽ làm ǵ, nhưng lăng phí
thời gian của mọi người. Tôi có thể đi ngay bây giờ? Tôi có một chương tŕnh mà tôi đang làm việc trên ".

6,4

Một nhà quản lư đă lập tŕnh của ḿnh và nói với họ: "Liên quan đến công việc của bạn
giờ: bạn sẽ phải để đến lúc chín vào buổi sáng và để lại
năm vào buổi chiều "Vào lúc này, tất cả trong số họ đă trở nên tức giận và một số
từ chức vào ngay tại chỗ.

V́ vậy, người quản lư nói: "Tất cả các quyền, trong trường hợp đó, bạn có thể thiết lập của riêng bạn
giờ làm việc, miễn là bạn hoàn thành các dự án đúng tiến độ ".
lập tŕnh, bây giờ hài ḷng, bắt đầu vào buổi trưa và làm việc với wee
giờ buổi sáng.

-------------------------

Sách 7 - Công ty Trí Tuệ

V́ vậy spake các lập tŕnh tổng thể:

"Bạn có thể chứng minh một chương tŕnh cho một giám đốc điều hành công ty, nhưng bạn có thể không
làm cho anh ta biết chữ máy tính. "

7,1

Một người mới hỏi chủ: "Ở phía đông là một cây cấu trúc tuyệt vời
rằng người đàn ông gọi `công ty trụ sở chính. Nó được cồng kềnh ra khỏi h́nh dạng với
Phó Chủ tịch và kế toán. Nó phát hành vô số các bản ghi nhớ, mỗi
nói `Go, Do đó! hoặc `Go, ở đây! và không ai biết có nghĩa là ǵ. Mỗi
năm tên mới được đưa vào các ngành, nhưng tất cả đều không có kết quả. Làm thế nào có thể
một thực thể không tự nhiên như vậy được? "

Các bậc thầy trả lời: "Bạn nhận thấy cấu trúc này bao la và
làm khó chịu v́ nó không có mục đích hợp lư. Bạn có thể vui chơi giải trí từ
gyrations vô tận của nó? Bạn không thích sự dễ dàng thanh thản của chương tŕnh
bên dưới các chi nhánh trú ẩn? Tại sao bạn lại làm phiền bởi nó
vô dụng? "

7,2

Ở phía đông có một con cá mập lớn hơn tất cả các loài cá khác.
thay đổi thành một con chim có cánh giống như những đám mây làm đầy bầu trời. Khi điều này
chim di chuyển trên khắp đất nước, nó mang lại một tin nhắn từ doanh nghiệp
Trụ sở chính. Thông báo này giảm xuống vào giữa của các lập tŕnh viên,
giống như một ṃng biển làm cho nhăn hiệu của ḿnh trên băi biển. Sau đó, con chim gắn kết trên
và gió, với bầu trời màu xanh ở mặt sau của nó, trở về nhà.

Lập tŕnh viên mới làm quen nh́n kỳ diệu của loài chim, ông hiểu được nó
không. Lập tŕnh trung b́nh dreads của chim, ông lo ngại
thông điệp của ḿnh. Các lập tŕnh tổng thể tiếp tục làm việc tại thiết bị đầu cuối của ḿnh,
anh ta không biết rằng con đă đến và đi.

7,3

Magician của Tháp Ngà mang phát minh của ḿnh mới nhất cho
tổng thể lập tŕnh để kiểm tra. Ảo thuật gia bánh một chiếc hộp lớn màu đen vào
văn pḥng của tổng thể trong khi tổng thể im lặng chờ đợi.

"Đây là một, tích hợp máy trạm phân phối, mục đích chung", bắt đầu
ảo thuật, "thái được thiết kế với một hệ điều hành sở hữu độc quyền
hệ thống, ngôn ngữ thế hệ thứ sáu, và nhà nước nhiều người sử dụng nghệ thuật
giao diện. It took my assistants several hundred man years to construct.
Is it not amazing?”

The master raised his eyebrows slightly. “It is indeed amazing,” he
nói.

“Corporate Headquarters has commanded,” continued the magician, “that
everyone use this workstation as a platform for new programs. Do you agree
to this?”

“Certainly,” replied the master, “I will have it transported to the
data center immediately!” And the magician returned to his tower, well
pleased.

Several days later, a novice wandered into the office of the master
programmer and said, “I cannot find the listing for my new program. Làm
you know where it might be?”

“Yes,” replied the master, “the listings are stacked on the platform in
the data center.”

7.4

The master programmer moves from program to program without fear. Không
change in management can harm him. He will not be fired, even if the
project is cancelled. Why is this? He is filled with Tao.

————————————————————————–

Book 8 – Hardware and Software

Thus spake the master programmer:

“Without the wind, the grass does not move. Without software, hardware is
useless.”

8.1

A novice asked the master: “I perceive that one computer company is much
larger than all others. It towers above its competition like a giant among
dwarfs. Any one of its divisions could comprise an entire business. Why is
this so?”

The master replied, “Why do you ask such foolish questions? That company
is large because it is large. If it only made hardware, nobody would buy
nó. If it only made software, nobody would use it. If it only maintained
systems, people would treat it like a servant. But because it combines all
of these things, people think it one of the gods! By not seeking to
strive, it conquers without effort.”

8,2

A master programmer passed a novice programmer one day. The master noted
the novice's preoccupation with a hand-held computer game. “Excuse me,”
he said, “may I examine it?”

The novice bolted to attention and handed the device to the master. "Tôi
see that the device claims to have three levels of play: Easy, Medium, and
Hard,” said the master. “Yet every such device has another level of
play, where the device seeks not to conquer the human, nor to be conquered
by the human.”

“Pray, great master,” implored the novice, “how does one find this
mysterious setting?”

The master dropped the device to the ground and crushed it underfoot.
suddenly the novice was enlightened.

8.3

There was once a programmer who worked upon microprocessors. “Look at how
well off I am here,” he said to a mainframe programmer who came to visit,
“I have my own operating system and file storage device. I do not have to
share my resources with anyone. The software is self- consistent and
easy-to-use. Why do you not quit your present job and join me here?”

The mainframe programmer then began to describe his system to his friend,
saying “The mainframe sits like an ancient sage meditating in the midst
of the data center. Its disk drives lie end-to-end like a great ocean of
machinery. The software is as multifaceted as a diamond, and as convoluted
as a primeval jungle. The programs, each unique, move through the system
like a swift-flowing river. That is why I am happy where I am.”

The microcomputer programmer, upon hearing this, fell silent. But the two
programmers remained friends until the end of their days.

8.4

Hardware met Software on the road to Changtse. Software said: “You are
Yin and I am Yang. If we travel together we will become famous and earn
vast sums of money.” And so the set forth together, thinking to conquer
the world.

Presently they met Firmware, who was dressed in tattered rags and hobbled
along propped on a thorny stick. Firmware said to them: “The Tao lies
beyond Yin and Yang. It is silent and still as a pool of water. It does
not seek fame, therefore nobody knows its presence. It does not seek
fortune, for it is complete within itself. It exists beyond space and
time.”

Software and Hardware, ashamed, returned to their homes.

————————————————————————–

Book 9 – Epilogue

Thus spake the master programmer:

“It is time for you to leave.”

————————————————————————–

If you liked these, you may also like to read worse is better

A bit of shell redirection

May 10, 2009 by prashant · B́nh luận
Nộp theo: công nghệ

Here is how we normally do shell redirection
$ ./pgm.sh args >out.txt 2>err.txt
I wanted to modify it a bit and run as follows
$ ./pgm.sh args
with the requirement that output and error should go to some filename computed inside pgm.sh based on args. One illustrative case could be when date is part of args. So you would like stdout to go to say /your/directory/pgm_out_YYYYMMDD.txt 1

The problem with standard way of redirecting N>file.txt ie, associating file descriptor N to file.txt , is that it works only for the newly forked process and not for the current process.
do đó,
$ echo hi 1>out.txt ; echo hii will send hi to out.txt but will print hii to stdout. 2

This is where exec comes to our rescue. If we add exec 1>somefile.txt then output from rest of the script will go to somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$./test.sh will redirect hi as well as hii to out.txt

Similarly to redirect stdout as well as stderr we'll do something like this
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Now coming back to original point of redirecting to some file from inside the shell, let's say program computed the filename in some variable OUTFILE, we could have just done exec 1>$OUTFILE

That solves the current problem. But you may like to go through following example which achieves 'random access' of file in shell script. Example is from here
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890

With comments, this code is self explanatory.
-
1 It can also be done by $ ./pgm.sh args >pgm_out`date +%Y%m%d` but idea is to generate this file name based on some logic in program itself.
2 1 in 1>out.txt is redundant but it clarifies here that we are redirecting fd 1

Sony VAIO review

April 29, 2009 by prashant · B́nh luận
Filed under: reviews

A month back I bought a vaio NS25G and have been planning to write this post since then. This post is primarily notes to self and review of the same. Let's get off the mark quickly -

Post has two parts -

I. Review of hardware
II. Installing debian and things to setup

I. Review of hardware

Since I am not a VAIO marketing guy, I'll start other way round -

Why you may not like to buy this laptop :

  1. No bluetooth : believe me, in 2009 sony sells laptop without bluetooth. Sure you can use usb stuff but …
  2. Screen size is 15.4 inches : if you travel a lot then this laptop may not be very handy and also 2.9kg laptop is not exactly the lightest around.
  3. No HDMI output.
  4. No separate graphics card and the likes.(and no dedicated video memory

Now , why you may like to buy it :

  1. This laptop is a damn good desktop. What I mean is this if your requirement is like me – mostly writing programs and trying to use it 25 out of 24 hrs, then with a big screen , extremely comfortable keyboard layout with spacious palm rest and good compute power , it makes a very good combination.
  2. It L2 cache is 2MB and processor/memory system bus are 800MHz. I don't play games so can't say about that but for anything else but a core 2 duo processor with 2GHz freq is good, this is more than enough.
  3. From my usage, I see processor mostly clocks at 1.2GHz, and memory usage ~500MB. That just reinforces previous point.
  4. Battery backup is good, ~2 hrs is what I get.

Just one more thing here – being Sony, it will cost you a bit than other laptops with similar configuration, but that is a call u have to make.

II. Configuring linux (to run out of box ! ) :
It came pre installed with Vista( I think home premium or some fancy name like that). Dungara booted once and created another partition of 150 GB. Debian testing is what I always install and then up(down?)grade to 'unstable' sid.

Things which worked without any problem:

  1. X - unsurprisingly X server had not problem with starting or resolution. After one of the upgrades X refused to start though, but 'X -configure' generated a conf file which worked pretty well.
  2. Audio - Audio output and external mic work fine. kernel version 2.6.29-1-686 #1 SMP and alsa version 1.0.17. This is what you get from
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video cam – just works
  4. Hibernate to disk and back – no problem
  5. Wireless - in short – just works.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    I think kernel 2.6..27 onwards it works with the stock kernel source. You dont have to install ndiswrapper or things like t
    hat. As a note, please say good buy gnome-network-manager and welcome wicd, it is just a gui layer but behind the scene they have fixed lot of config stuff like wpasupplient and more.

What doesn't work -

  1. Somehow internal mic refuses to work : ( External mic works fine though. Latest alsa sources did not compile cleanly on debian, so for the time being I bought external Internal mic, will try to dig into it sometime in future though.

Few more misc hints for deiban:

  • Package for devnagri font- ttf-indic-fonts
  • Package for flash player – flashplugin-nonfree
  • Entry in sources.list for mplayer and likes – deb http://www.debian-multimedia.org sid main
  • Entry in sources.list for e17 – deb http://debian.alphagemini.org/ unstable main
  • Entry in sources.list for skype – http://download.skype.com/linux/repos/debian/ stable non-free

oneliner for increasing and decreasing the brightness -

[root]prashant@vaio09:12 PM$ cat bin/incbrightness.sh
#!/usr/bin/env bash
echo $[1+`cat /sys/class/backlight/acpi_video0/brightness `] >/sys/class/backlight/acpi_video0/brightness

you'll have to put this in sudo though.
and to decrease change + to – and … you get the idea, right !

A bit more, if you use enlightenment(e17) here are few more hints -

[enlightenment key bindidings]

You can use following key code and mapping

mute :
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
hibernate :
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
volume decrease :
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
volume increase:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
increase brightness :
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
decrease brightness
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Trang sau »