설문 조사, 핑, pubsub, pubsubhub, pubsubhubbub

에 의한 2009년 9월 6일 prashant · 댓글
: 아래 출원 기술

당신은 의심의 여지가있는 경우에는 위의 광기의 방법은 게시물의 제목에있다. 하이테크 서클에서는 당신이 pubsubhubbub 들어하지 않을 수도 있습니다. 빠른 몇 개월에서, 그것은 사물 이야기 세 가지 중 하나가되었습니다. 다른 두 사람은되는 homomorphic 암호화 및 Google 파도 [ 1. ]. 현재 게시물로 돌아갑니다 - 제목 용어는 다른 사람으로부터 내용을 얻을 방법을 나타냅니다. 당신이 일을 그들이 개념 블로그에 국​​한되지 않더라도, 블로그와 관련하여 일어나는 상상한다면 다음 세부 정보 더 명확된다.

폴링은 고객 뭔가 새로운 올라 오실 경우 서버를 물어 보는 경우를 말합니다. 얼마나 자주 업데이 트를 요청하는 것은 항상 너무 자주 또는 너무 드문 여론 조사에 문제가 될 것입니다 있지만, 독자가 지적한대로 현재 폴링과 하나가 큰, 문제는 그 서버임을 상태를 유지할 필요가 없습니다.

핑이 기사를 게시할 때 (또는 소프트웨어)도 인기있는 (중앙) 업데이트 서비스를 업데이 트하는 경우를 말합니다. 어떤 배경이 여기에 .

다음은 그것이 만들어진 위해 가입 / 최초의 경기장 중 하나를 발행 약자 pubsub입니다 여기 에반 Henshaw-플라스와 Kellan 엘리엇-McCrea (를 겪고 72 슬라이드하지만 가치)에 의해. 그들이 반대 준 매력적인 예제는 이랬다 - 특정 날짜에, 6721 그 24 시간 안에 플리 커를 방문했고 '잠재적'사진을 업로드 있었 중, 45,754 사용자의 최신 사진을 얻을 플리커 2,900,000 번 기어 Friendfeed. 참고 저런 사람들이 '혁명적인 새로운 이십년 오래된 기술을'지적으로 그들이 제안하는 것은 새로운 기술이 아니었다. 그런 다음 블로그 할 경우에는 XMPP와 주요 문제 중 하나 - 60~70%만큼 높은 수 있기 데이터 오버헤드가 많이 줄일 수 있습니다.

가입 허브를 게시 위해 pubsubhub는 약자 pubsubhub의 아이디어 핵심 중 pubsubhubbub는 프로토콜입니다. 궁극적으로 게시자 (블로거라고)이 밀어이나 프로토콜에 따라 당길 수있는 프로토콜에 따라, '구름 어딘가에'를 살고 있지만에서 다음 링크 (서로 이야기 하​​나 이상의 허브가 될 수 있음) 허브를 업데이 트 클라이언트에 체인, 허브는 (독자 말씀) 항상 모델을 누르면됩니다. 페이지 pubsubhubbub에 대한 포인트 시작 맛있어, 개요 슬라이드 좋다. 적 웅변 아닐 대쉬 그것을 설명합니다 여기에 푸시 웹 있습니다.
두 기타 관련 읽기입니다 webhooks 기본적으로 HTTP 콜백입니다. Github이 사용하는 그것을, 그래서에서 지불 비동기 알림을위한 페이팔 않습니다 ipn . 너무 많은 다른 사람들이 그렇지 있습니다. 관련 개념은있다 rsscloud 다시 pubsub 허브입니다. 따라 해당 자세한 사항은 링크를.

현재 이러한 모든 쓰기의 요점이 뭔지 궁금 수도 두 1 없습니다. 이런 일들은 알고 가치가 있으며, 최소한 적어도 2시. 이 블로그는이 워드 프레스를 사용 appspot 허브를 통해 현재 활성화 pubsubhubbub는 플러그인 과 피드도 피드 버너, 링크를 통해 사용할 수 pubsubhubbub는 여기에
-
[ 1 ]. - 완전히 homomorphic 암호화 읽기 입문 좋다 브루스 Schneier에 의해 기사와 이야기는 Google 파에 대해서만 원천 더 많거나 적은 있습니다.

- 업데이트 - 게시물은 콜백에 대한 공개 서버의 요구 사항이 XMPP 게이트웨이 (pubsubhubbub 용)를 사용하여 데스크톱 클라이언트의 주변에 근무하는 방법을 설명합니다.

어셈블리의 비트

에 의한 2009년 8월 29일 prashant · 댓글
: 아래 출원 기술

읽은 다음 자물쇠를 무료로 버퍼에 대한 기사를하고 CAS의 사용 (비교 및 스왑)보고, 나는 동일한 기능을 수행할 어셈블리 코드를 게시하는 것 같은 느낌이 들었지. 네이티브 메소드를 작성하고 자바 (다시 1.5에서 자바의 동시 데이터 구조가 더 많거나 적은 존재하지 않은있을 때)에서 전화 있었을 통해 케이스를 사용합니다. 발표, 난 당신에 코드를 보여줄 게​​요 :) . 먼저 CAS위한 것이며 두 번째는 유클리드의 알고리즘 (이 하나뿐 아니라 여러 장소와 자습서에서 찾을 수있다)를 사용하여 컴퓨팅 GCD입니다.

컴파일하고 실행 지침 gcc file_name.c ; ./a.out

비교 및 스왑

   # 포함 
  # 포함 
 / / 교류 - newvalue, comperand이 예상 / 오래된 가치입니다
 / *
  * 기능은 실제로 다음과 같은 일을 반복해 - * 이명 령의 값이 다른 newvalue 그것이 변하지두고으로 교체 후 oldvalue와 동일한 경우 : 않는 모든 atomically
  *
  * 리턴 값에 대한 두 가지 옵션이 있습니다
  * 1.is 초기 * 이명 령의 가치와 oldval와 비교하기 위해 전화 fxn의 부담을 떠나
  * 2.  이쪽으로 수행하고 0 또는 1을 반환,이보다 효율적이어야합니다
  ** /

 / * 나중에 매크로로 변경 * /
 INT 카스 (INT * 이명 령, int는 oldvalue, INT newvalue) {
	 printf ( "(% d 개, % D, % d 개)", * 이명 령, oldvalue, newvalue);
	 / * int는 카스 (INT 이명 령, int는 oldvalue, INT newvalue) {* /
	 / * int는 카스 (INT 이명 령, int는 newvalue, INT oldvalue) {* /
	 int는 결과 = 1 ;/ * 카스가 성공했다는 한 공연하고 / *이 실패했음을 0 보여줍니다
	 / * btw 플래그가 clobbering에 대한 참조를 설정해야합니다!  * /
	 __asm​​__의 __의 volatile__ (
			 "movl % 2, %로 % eax \ N \ T"
			 "movl % 3, % % ebx 명령이 \ N \ T"
			 "movl %의 0, % % ecx에 \ N \ T"
			 "LOCK \ N \ T"
			 "%의 %를 ebx 명령, (% % ecx에)를 CMPXCHG 것은 \ N \ t"/ *는 같은 줄에 있어야 잠궈한다 * /
			 "점프 온 제로는 \ N \ t를 완료"
			 "movl 0달러, % 1 \ N \ T"
			 "완료합니다 : \ n \ t"
			 : "= m"(이명 령), "= g"(결과)
			 : "G"(oldvalue), "G"(newvalue), "M"(이명 령)
			 : "로 % eax", "% ebx 명령이", "ecx은", "CC"
			 );
	 printf ( "(% d 개, % D, % d 개)", * 이명 령, oldvalue, newvalue);
	 결과를 반환;
 }

 / * TODO
  * 한동안 루프에 fxn 위에두고 다른 ASM fxn를 작성하고 * /를 성공하지 못한다면 계속 시도

 int는 메인 () {
	 INT = 5, B = 6;
	 INT * C = (INT *) malloc (sizeof (INT));
	 * C = 6;
	 / * int는 C = 6; * /
	 printf ( "% d 개 \ N", 캐스 (C, B, B));
	 printf ( "% d 개 \ N", 캐스 (C, B, A));
	 printf ( "%는 D \ N", 캐스 (C,,));
	 printf ( "% d 개 \ N", 캐스 (C, B, B));
	 * C = 6;
	 / * C = 5 * /
	 printf ( "*의 변화하는 가치를 C %까지 D \ N", * C);
	 printf ( "% d 개 \ N", 캐스 (C, B, B));
	 printf ( "% d 개 \ N", 캐스 (C, B, A));
	 printf ( "%는 D \ N", 캐스 (C,,));
	 printf ( "% d 개 \ N", 캐스 (C, A, B));
	 printf ( "% d 개 \ N", 캐스 (C, B, A));
	 0을 반환;
 }

서식 노트 - WP 구문 형광펜 것 같아이 추가됩니다 결국, 그렇게 무시합니다.

GCD

 # 포함 
 정수 gcd (INT, B INT) {
     int는 결과;
     / 유클리드의 알고리즘을 사용하여 * 컴퓨트 최대 공약수 * /
     __asm​​__의 __의 volatile__ ( "movl % 1, %로 % eax;"
                           "movl % 2, % % ebx 명령;"
                           "CONTD : cmpl 0달러, % % ebx 명령;"
                           "적 다;"
                           "xorl % % edx가, %, % edx가;"
                           "idivl % % ebx 명령;"
                           "movl %의 %를 ebx 명령, %로 % eax;"
                           "movl % % edx가, %의 %를 ebx 명령;"
                           "jmp는 CONTD;"
                           "완료 : movl %로 % eax, % 0;": "= g"(결과) : "G"(), "G"(B)
     );

     결과를 반환;
 }

 int는 메인 () {
     먼저 두 번째 INT;
     printf ( "두 정수 입력 :");
     scanf ( "% d 개 % d 개", & 먼저 및 초);

     printf ( "% d 개 & % d 개 중 GCD는 %입니다 d 개 \ N", 첫째, 둘째, gcd (두 번째, 첫 번째));

     0을 반환;
 }

Cricketing 세계는 새로운 세계 질서을 기다립니다

에 의한 2009년 8월 25일 prashant · 댓글
아래 출원 : 기타

다섯 테스트 및 오버 개월, 영국 매립지 재를 스팬 시리즈 후에.

의 처음 승리하는 팀을 얘기하자 - 당신이 중요한 싫으면 그 중간 순서는 '평균'입니다. 박쥐와 Greame 스완의 기여가 공을 가진 기여에 못지 계산하지 않습니다. 스튜어트 확장 - 최고의 올라운더 제 5 회 시험이 아닌 스타터했습니다. 앤드류 스트라우스는 유일하게 일관된 타자 였고 지미 앤더슨이 유일한 일관 투수였다.

여기서 포인트는 천하 무적의 업적을 야단 치고 있지만 관점에서이 모든에도 불구하고, 호주 잃어버린 사실을 넣어하지 않는 것입니다. 그들의 최고의 투수 이름을 지정하라는 메시지가있다면 당신은 몇 초 동안 생각해야합니다. 맞아요, 그것도 BW Hilfenhaus했습니다. Hauritz는 everbody의 기대보다 실적이 있지만 여전히 다섯 시험 두 가지로 선정 될 자격이 아니었어요. 남아 프리카 공화국은 세계적인 수준의 회전자없이 세계 때리는가 된 적이 호주 하나의 좋은 충분히 이상없이 가지 앞서게 될 수 없습니다. 마술사는 무대를 떠나 그것은 마법을 잊고, 더 이상 미술 작품 같다되지 않습니다. Ponting는 시시한 인간 사이에 높이 서와 마이클 클라크는 매우 자주 일어 나셔서,하지만 그건 아주 좋은 선수가 아니라 아주 좋은 팀과 팀을 만듭니다.
재로 2009은 앤드류 Flintoff의 마지막 재로, (그는 그의 유망 시작으로 좀 더 화산재의 민속을 추가하는 경우), 그리고 Trott의 모든 시간을 가장 효과적으로 드러내는 데뷔 세기 중 하나지만, 그것도 될 것이다 올라운더로서 스튜어트 확장의 도착을 위해 기억한다 IFS와 호주의 패권에 대한 꾸물거리지 마침내 안식을했던 지점으로 기억, 그것은 끝났습니다. 그들이 누락된 갈 때 오해하지 말라 그들은 여전히​​ 발굴 마이크 Hussey 또는 스튜어트 클락은 있지만 모든 시간 괜찮은 밴드의 기여를 느낄 수 있습니다. 때로는 IPL에 자신 생각나게 와서 그러나 아직 그들은 교체할 수 없습니다. Warne, 맥그래스는 및 Gilchrist는 Hyden, 마틴과 랭거 함께 연주하고 Waughs에 의해 지원되고, Ponting 볼 수있게 되서위한 축복 느껴 보자.

앞으로, 남아 프리카 공화국은 항상 아주 좋은 팀으로 남아있을 것입니다 그러나 그들은 준결승에서 우승하며 세계보다 일관성 있어야, 파키스탄 enigmatically 화려한 유지됩니다, 인도 젊은 총은 아마도 특별한 전임자의 신발을 채울 힘든 발견할 것이다. 스리랑카 기술과 예술의 흘긋을 계속 보여주한다. 그러나, 우리는 모두 지배적인 팀 데 앞이나 스티브 Waugh 한번 그랬던 것처럼 대장이, 경쟁의 부족들이 불평하기 전에 언제 기다려야 할 수도 있습니다.

관련 메모에서 - 시작하자 Asif의 돌아오지 환영합니다, 그 잠재력의 지옥을 많이 가지고, 그럼 그 중 일부를 볼 수 있으며, 새로운 awatar에서 앤디 꽃을 환영합니다 지금 바로 당신이 오랫동안 좋은 사람을 지킬 수 있도록 노력하겠습니다하자.

해시 만들 루비 한 라이너

에 의한 2009년 8월 20일 prashant · 댓글
: 아래 출원 기술

내 옛날 프로그램 중 하나를 통해 가고있는 동안 어제,이 상황이 언제 나한테 의해 작성된 발견 :

#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

서스펜스의 일부를 죽이는 것은 나를 raw_text가 어떻게 생겼다고 공개하자

 

, 바로 그것은 페이팔 지불 확인서에서 해고되었습니다.

라인 위에 부품에서 깨지면 더 읽습니다 :

  unescaped_array = CGI.unescape (raw_text). 분할 ( '&')
   unescaped_array = unescaped_array.collect {| X | B = x.split ( "="); b.push (전무) b.size == 1면; B}
   flattened_array = unescaped_array.flatten
   해시 = 해시 [* flattened_array] 

irb에서 개별 단계를 수행하자 :

  irb (주). 009:0> unescaped_array = CGI.unescape (raw_text) 분할 ( '&')    

 => [ "성공", "mc_gross = 10.00", "protection_eligibility = 부적합", "payer_id = U7PPJJ4TSJ47E", "세금 = 0.00", "payment_date = 9시 45분 30초 2009년 7월 10일 PDT", "payment_status는 = 보류 중 "]                                                                         

 irb (주) : 013:0> unescaped_array = unescaped_array.map {| X | B = x.split ( "="); b.push (전무) b.size == 1면; B}  

 => [[ "성공", 전무], [ "mc_gross", "10.00"] [ "protection_eligibility", "부적합"] [ "payer_id", "U7PPJJ4TSJ47E"] [ "세금", "0.00"] , [ "payment_date", "9시 45분 30초 2009년 7월 10일 PDT"] [ "보류", "payment_status"]]                               

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

 => [ "성공", 전무, "mc_gross", "10.00", "protection_eligibility", "부적합", "payer_id", "U7PPJJ4TSJ47E", "세금", "0.00", "payment_date", "9시 45분 : 7월 30일 10, 태평양 서머 타임 20시 09분 ","payment_status ","보류 중 "]
 irb (주) : 015:0>
 해시 = 해시 [* flattened_array]
 => { "세금"=> "0.00", "payment_status"=> "보류 중" "payer_id"=> "U7PPJJ4TSJ47E", "mc_gross"=> "10.00", "성공"=> 전무, "payment_date"= }> "9시 45분 30초 2009년 7월 10일 PDT", "protection_eligibility"=> "부적합" 

BTW, *는 루비의 표시와 연산자라고합니다

'쌍 배열'에서 해시 만드는 또 다른 방법은 주사를 사용하는 것입니다 :

  해시 = [[1,2], [3,4]] ({}) 주사. {| 결과, 요소 | 결과 [element.first] = 결과 [element.last];} 결과 

하나 더 방법이 있습니다 :) 나는 독자들에게 운동으로 떠날 것을 루프를 작성하세요!

다음은 배열의 해시를 만드는 약간의 관련이없는 유스 케이스는 다음과 같습니다

  irb (주) : 005:0> [1,2,3,4,7,9] group_by {| X | X <5.?  : 낮은 :: 더욱}

 => {: 후진 => [1, 2, 3, 4] : 큰 => [7, 9]} 

당신은 기본적으로 블록의 결과가 결과 해시에서 해당 요소에 대한 키로 사용되며, 더 많은 일을 할 수있다.

Gmail은, 똥 개야 및 msmtp 수정

에 의한 2009년 8월 17일 prashant · 댓글
: 아래 출원 기술

당신은 개가 배를와 SMTP를 Gmail에 액세스하는 데 사용합니다. 여기에 (나쁜) 소식입니다. 구글의 멋진 사내가 다시 인증서를 바꾸었습니다. 오, 당신이 물어 보 기나 했어 - 어떻게 그것을 알 수 있습니까? 단순 바보는 줄을 msmpt, 악명 사용하려 할 때 나쁜 인증서 문제 삼기 시작 'msmtp를 : TLS 인증서 검증 실패 :. 인증서 알려진 발급자도없는' 화면에 나와 인사.

확인을 건너려면 -
그냥 다음 실행

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

오래된 Thwate 서버 대신 이제는 발급자 세그먼트에 따라받을
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

다행히 해결은 간단하다, 여기는 여러분이 데비안을 할 필요가

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

이 단지에서 다음 줄을 변경 후에 /를 정도요. 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

놈이 및 굉장 설문 조사

에 의한 2009년 8월 15일 prashant · 댓글
아래 출원 : 기타

두 놈이에 의한 조사를위한 링크 (버전 제어 시스템)과 멋진 (창 관리자) 커뮤니티입니다. 당신도이 중 사용하는 경우, 설문을 작성하는 데 시간을 내줄하시기 바랍니다. 여러분이 사용하는 소프트웨어에 다시 기여할 수있는 간단한 방법이라고 생각하시면됩니다.
다음 링크는 다음과 같습니다

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

그럼요 ~ - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

참고 - (마찬가지로 해당 페이지에 있지만 하단의 발견 :) ) -
"당신이 쿠키가 활성화되어있다면, 당신은 항상 부분적으로 채워진 설문 조사를 제출하고, 나중에 당신의 대답으로 돌아갑니다, 나중에 그것을 완성하실 수 있습니다."

yaml conf 파일에 병합 해시

에 의한 2009년 7월 31일 prashant · 댓글
: 아래 출원 기술

YAML은 설정 파일을 작성하기위한 매우 편리합니다. 주요 장점은 그것이 텍스트 파일처럼 보인다는 점이다. 여러분의 설정 파일들이 (없음 계층) 평면이며 어떠한 반복이 없다면 이건 정말 잘 작동합니다.
여러분의 구성 파일에 반복있다면 그것은 이러한 요소를 분리하고이를 재사용하는 것이 가장 중요합니다. 내가 말하려는 건이게 -하자 당신이 설정 파일은 다음과 같습니다 말 :

  개발 :
   input_location : common_input
   output_location : dev_location
   이메일 :
     smtp_server : your_server
     로그인 : your_login
     비밀 번호 : top_secret
 생산 :
   input_location : common_input
   output_location : dev_location
   이메일 :
     smtp_server : your_server
     로그인 : your_login
     비밀 번호 : top_secret 

여기에 / tmp를 / test.yml 코드에 위의 가정하면 파이썬과 루비에서 읽을 수있는 방법입니다
$cat readyml.py

 #!는 / usr / 빈 / 유럽 표준안 파이썬
 PP와 같은 pprint 가져오기 pprint에서
 # 데비안에서 파이썬 yaml를 설치해야
 yaml 수입 부하, load_all, 덤프에서
 해시 = 하중 (오픈 ( '/ tmp를 / test.yml'))
 PP (해시 [ '발전']) 


$ cat readyml.rb

  #!는 / usr / 빈 / 유럽 표준안 루비
 'PP'를 필요로
 해시 = YAML ::로드 (File.open은 ( '/ tmp를 / test.yml'). 읽기)
 PP 해시 [ '발전'] 

여기에 루비 버전 편리한 한 라이너입니다
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' 또는 irb이나 파이썬 콘솔에 동일하게 시도해 볼 수 있습니다.

위의 코드 조각에서 모든 출력 위치가 개발 및 생산 부분에 동일 이외합니다. yml 노드 식별자가 구하러 오는 곳입니다. 아이디어는 기본값 집합을 가지고 있으며 서로 다른 장소에서 그들을 무시 간단하다.
다음과 같이 당신은 그것을 떨어져 당길 수 :

  기본값 : & 기본값
   input_location : common_input
   output_location : dev_location
   이메일 :
     SENDER_NAME : 보낸 사람
     smtp_server : your_server
     로그인 : your_login
     비밀 번호 : top_secret
 개발 :
   << : * 기본값
 생산 :
   << : * 기본값
   output_location : prod_location 


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

좋아요, 그것은 (TM) 동작!.
확실하게 우리는 마법의 비트에 대한 몇 가지 선명도를 바꿨습니다. 여기 작은 설명은 다음과 같습니다 : &, *와 << : & 앵커 태그있는이 노드 식별자로 이해할 수 있고, *는 노드 참조 및 <<입니다 해시 병합을 의미합니다.

자세한 내용도 볼 내용 yaml 사양 이나 위키 피 디아를
지금까지 캐치 여기가 너무 좋아하지만,이 해시 병합은 재귀하지 않습니다. 어떻게 그것이 의미하는 것은 이것이다 : 빨리 두 개의 환경에서 메일에 다른 발신자 이름을 갖고 싶어라고, 당신은 다음 작업을 수행하는 유혹 수 있습니다

  기본값 : & 기본값
   input_location : common_input
   output_location : dev_location
   이메일 :
     SENDER_NAME : 보낸 사람
     smtp_server : your_server
     로그인 : your_login
     비밀 번호 : top_secret
 개발 :
   << : * 기본값
   이메일 :
     SENDER_NAME : sender_dev
 생산 :
   << : * 기본값
   output_location : prod_location
   이메일 :
     SENDER_NAME : sender_prod 

체크하자

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

죄송합니다, 뭔가 잘못 됐어, 위에서 언급한 바와 같이 문제가 해시 병합은 재귀 아니라고하고 병합하는 동안 그것은 하나의 열쇠를 갖고 생산 우편으로 기본의 메일을 대체했습니다. 주위 솔루션 / 작품 하나 더 수준을 풀다하는 것입니다 :

  common_settings : & common_settings
 input_location : common_input
 output_location : dev_location
 mail_defaults : & mail_defaults
  SENDER_NAME : 보낸 사람
   smtp_server : your_server
   로그인 : your_login
   비밀 번호 : top_secret

 기본값 : & 기본값
   << : * common_settings
   이메일 :
     << : * mail_defaults
 개발 :
   << : * 기본값
 생산 :
   << : * 기본값
   이메일 :
     << : * mail_defaults
     SENDER_NAME : sender_prod

다시 확인하자

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

여러분이 둥지를 하나 더 수준이라고 했나, 잘 확실히 한 번 더 수준을 풀다 수 있지만, 그러면서 그것은 엉망이된다. 당신은 conf 파일 파일 하노이의 타워에 대한 솔루션을 작성하려고하지 않는면, 그것은 yaml 아니면 다른 문제로 파고보다 믿어 파일을 restucture 것이 좋습니다. 그러나 어쨌든 당신 전화입니다.

위대한 프로그래머는 복잡한 문제를 간단한 솔루션을 찾을

에 의한 2009년 6월 30일 prashant · 댓글
아래 출원 : 기타

오랜 시간 후에 나는 다음과 같은 인용-위한 소스를 찾을 수

주니어 프로그래머는 간단한 문제에 간단한 해결책을 만듭니다. 수석 프로그래머는 복잡한 문제에 대한 복잡한 솔루션을 만듭니다. 위대한 프로그래머는 복잡한 문제에 간단한 해결책을 찾습니다.

그것은라는 에세이에서입니다 예쁜 소프트웨어 찰스 Connell에 의해.

나의 또 다른 좋아하는 그런 사람이 파이썬의 선 (禅) -

아름다운가 추한 것보다 낫다.
명시적는 암시적보다 낫다.
단순 복잡한 것보다 낫다.
단지 복잡한 것보다 낫다.
평면은 중첩보다 낫다.
스파스는 울창한보다 낫다.
가독 카운트.
특별한 경우이 규칙을 깰 정도로 특별하지 않습니다.
실용성은 순결을 뛰고 있지만.
오류가 자동으로 전달해서는 안됩니다.
명시적으로 입막음을하지 않는 한.
모호함의 얼굴에 맞춰 유혹을 거부합니다.
그렇게 한과 선호 하나 - 확실한 방법이 있어야합니다.
당신은 네덜란드가 아니라면 그런식으로 처음에는 명확하지 않을 수 있지만.
이제는 결코보다 낫다.
바로 지금 * 자주 *보다 낫다 없었으나.
구현 설명하기 힘들다면, 그것은 잘못된 생각입니다.
구현이 쉬운 경우, 좋은 생각이있을 수 있습니다.
네임 스페이스 하나의 빵 좋은 생각이 있습니다 - 그 것들이 더 해보 자구!
-------------------------
그리고 고전이 프로그래밍의 어르신은

-

연결에 같은 크레딧 사이트

제프리 제임스에 의해 번역

듀크 Hillard에 의해 베꼈는데

Anupam Trivedi, Sajitha Tampi 및 Meghshyam Jagannath 통해 전염

다시화된 그리고 크래 Sittler에 의해 조장

-

책 1 - 사일런트 공허

따라서 마스터 프로그래머를 spake :

"당신이 트랩 프레임에서 오류 코드를 잡아 가기 위해 배운 그건
당신이 가야할 시간이 될 것입니다. "

1.1

신비 뭔가 조용한 공간에서 태어나, 형성된다. 혼자 대기 및
unmoving, 그것은 지속적인 움직임은 아직 아직 한번입니다. 그것은 소스입니다
모든 프로그램의. 나는 그것의 이름을 몰라요, 그래서 그것의 타오 부를거야
프로그래밍.

타오는 대단해 경우 운영 체제는 아주 좋습니다. 만약 운영
시스템이 훌륭 다음 컴파일러는 아주 좋습니다. 컴파일러는 큰 경우,
그러면 응용 프로그램이 아주 좋습니다. 사용자가 만족하고 거기에 존재하고 있습니다
세계의 조화.

프로그래밍의 어르신들은 멀리 흐르고 아침 바람에 돌아갑니다.

1.2

타오는 기계 언어로 탄생했다. 기계 언어로 낳았어
어셈블러.

어셈블러는 컴파일러를 낳았다. 지금 만있다
언어.

각 언어는 그러나 겸손 목적을 가지고 있습니다. 각 언어를 표현
소프트웨어의 음과 양. 각 언어 어르신 내에 자리하고 있습니다.

당신이 그것을 피할 수있다면 코볼 프로그램에 없습니다.

1.3

처음에는 타오였다. 타오는 공간과 시간에 탄생했다.
따라서 공간과 시간은 프로그래밍의 음과 양입니다.

타오를 이해하지 프로그래머는 항상 시간이 없어요
자신의 프로그램과 공간. 타오 언제나를 이해 프로그래머
자신의 목표를 달성하기위한 충분한 시간과 공간이 있습니다.

어떻게 다르게 될 수 있을까?

1.4

현명한 프로그래머는 타오에 대해 얘기하고 다음과 같이한다. 평균
프로그래머는 타오와 대한 검색에 대해서 얘기하고 있습니다. 바보 프로그래머
타오에 대해 얘기하고 한 번 웃고있다.

그것이 웃음이 아니었 으면 더 타오은 없을 것입니다.

높은 소리는 듣기 힘들 수 있습니다.
앞으로 것은 퇴각하는 방법입니다.
위대한 재능은 인생에서 자체 늦게 보여줍니다.
비록 완벽한 프로그램은 아직 버그가 있습니다.

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

도서 2 - 고대 석사

따라서 마스터 프로그래머를 spake :

"프로그래밍없이 3 개월 후엔, 인생은 의미가됩니다."

2.1

예전의 프로그래머들은 신비롭고 심오했다. 우리는 알 수 없다
그들의 생각, 그래서 우리가해야할 일은 자신의 모습을 설명하는 것입니다.

인식한 물을 건너는 여우처럼. 에 대한 일반적인 것처럼 경고
전장. 친절하고, 그녀의 손님을 맞이하는 안주인처럼. 같은 단순
나무 uncarved 블록. 어두운 동굴에서 검은 구멍처럼 불투명.

누가 그들의 마음과 마음의 비밀을 알 수 있습니까?

대답은 타오에 있습니다.

2.2

그랜드 마스터 튜링 한번 그 기계가있는 걸 봤어요. 그는이 깼을땐
외쳤다 :

"나는 내가 기계 인걸요 것을 꿈꾸고, 또는를 튜링인지 아닌지 모르겠다
나는 튜링됨을 기계를 꿈꾸고! "

2.3

매우 큰 컴퓨터 회사에서 프로그래머는 소프트웨어에 갔어요
"어떤 종류 : 그러면 회의하고 말하면서 매니저에게보고를 반환
때문에 프로그래머들은 다른 회사에서 일해? 그들은 나쁘게 행동하고 있었다
외모로 관심을 가지지 않는. 그들의 머리는 길고 깔끔하지 못한 그들이었다
옷 주름과 살이 었으니까. 그들은 우리의 환대 제품군을 충돌하고
내 프레 젠 테이션 도중 무례하게 소리를했다. "

매니저는 말했다 : "나는 회의에 파견한 말았 어야지.
프로그래머는 물리적인 세계를 넘어서 살고 있습니다. 그들은, 인생은 부조리 고려
우발적인 우연의 일치. 그들은 와서 한계를 모른 채 이동하십시오.
치료없이 그들은 자신의 프로그램에 살고 있습니다. 왜 귀찮게한다
사회적 관례와?

"그들은 타오 내에서 살아있다."

2.4

초보자가 주인을 물었 : "여기 설계 결코 프로그래머입니다
문서 또는 테스트를 자신의 프로그램을. 그러나 그가 그에게 중 하나를 고려 아는 모든 사람
세계 최고의 프로그래머. 왜에요? "

마스터는 대답한다 : "프로그래머는 타오를 장악하고있다니다. 그는 갔어
설계의 필요성을 넘어, 그는 화가가되지 않는 경우 시스템
충돌은 있지만 걱정없이 우주를 받아들입니다. 그는 넘어 갔어
문서에 필요한, ​​다른 사람이 자신의 코드를 볼 수있다면 그는 더 이상 관심이 없다.
그는 테스트의 필요성을 넘어 갔어, 그 각 프로그램에 완벽하게
자체 내에서, 고요한하고 우아한, 그들의 목적 자명한. 정말,
그는 타오의 신비를 입력했습니다. "

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

도서 3 - 디자인

따라서 마스터 프로그래머를 spake :

"프로그램이 테스트되고있는 때, 디자인을 만들기 위해 너무 늦었 잖아
변경됩니다. "

3.1

한 컴퓨터 전시회에 간 사람이 있더라구요. 그는 같은 하루
입력, 남자가 문 앞에 경비를 말했다 :

"나는 좀도둑 질 내 업적에 대해 알려져 큰 도둑이다. 한다
2004 년,이 전시회를 위해 탈출 unplundered하지 않는다. "

수백만이 있었기 때문에이 연설은, 크게 경비를 방해
컴퓨터 장비 내부에 달러가, 그래서 신중하게 사람을 지켜 보았다. 하지만
사람은 단지 자신에게 조용히 흥얼, 부스에서 부스를 어슬렁.

남자가 떠난 후, 경비원은 그를 옆으로 데려 다가 그의 옷을 수색했지만
아무것도 찾을 수 없었다.

전시회의 다음날, 남자는 반환과 경비를 chided
말씀 : "내가 어제 방대한 전리품을 가지고 도망,하지만 오늘도 될 것입니다
더. "경비가 점점 밀접하게 그를 지켜 그래서 있지만 에선 아무 소용.

전시회의 마지막 날, 경비원은 그의 호기심을 억제할 수
더 이상 없습니다. "각하의 도둑"고 정말 난처한이다 "고 말했다, 난 살 수 없다
평화. 가르치려하시기 바랍니다. 당신이 훔친 것을 무엇입니까? "

남자는 미소를 지었다. "나는 아이디어를 훔치고하고있다"고 말했다.

3.2

한 구조화 프로그램을 작성 마스터 프로그래머가 발생했습니다.
초보 프로그래머, 그를 모방하려는도 쓰기 시작했다
구조화되지 않은 프로그램. 초보자는 자신을 평가하는 주인을 물었을 때
진보, 주인, 구조화 프로그램을 작성하는 그를 비판
마스터에 적합한 무엇입니까 "라고하는 것은 적합하지 않습니다
초보. 당신은 구조를 초월하기 전에 타오 이해해야합니다. "

3.3

지도자의 법정에 붙어 있 었지 프로그래머가 있었지
오의. "디자인하는 것이 더 쉽습니다 : 그쪽에서 프로그래머에게 물어
회계 패키지 또는 운영 체제? "

"운영 체제"프로그래머가 대답 하였다.

그쪽에서 불신의 감탄을 선포. "당연히 회계
패키지는 그는 "운영 체제의 복잡 옆에 하찮은이다
고 말했다.

"별로"프로그래머는 회계 패키지를 디자인할 때 "라고
프로그래머는 사람이 다른 데 사이의 중재자로 작동
아이디어는 : 그것이 작동하는 방법, 어떻게 그 보고서가 나타납니다, 그리고 어떻게해야합니다
조세 법률에 따르다. 반대로, 운영 체제는 제한받지 않는다
외부의 겉모습에. 운영 체제를 제작하고, 프로그래머
기계와 아이디어 사이의 가장 단순한 조화를 찾고 있습니다. 이것은 이유
운영 체제가 설계하기 더 쉽습니다. "

오의 그쪽에서 고개를 끄덕과 미소를 지었다. "그게 잘하고 잘하지만,
이것은 디버깅하기 쉽습니다? "

프로그래머는 아무런 회신을하지 않았다.

3.4

관리자는 마스터 프로그래머에 가서 그에게 요구 사항을 보여주었다
새 응용 프로그램에 대한 문서. 관리자는 주인을 물었다 : "얼마나
그것은 내가 5 대 프로그래머를 할당할 경우이 시스템을 설계 걸릴까요? "

그는 "한 일 년은 걸릴 것"주인이 즉시 말했다.

"그러나 우리는 즉시 혹은 빨리이 시스템이 필요하다! 얼마나 것입니다
내가 것을 열번 프로그래머를 할당한다면 받아? "

마스터 프로그래머가 frowned. "이 경우, 두 년이 걸릴 것입니다."

"그리고 나는 그것에 백 프로그래머를 어떻게 할당한다면?"

마스터 프로그래머는 어깨를 으쓱했다. "그럼 디자인은 결코
완료 "라고 말했다.

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

책 4 - 코딩

따라서 마스터 프로그래머를 spake :

"잘 작성된 프로그램은 자체의 천국이다; 저조한 작성된 프로그램입니다
자체 지옥. "

4.1

프로그램이 가볍고 민첩해야 그 서브루틴은 마치 연결된
진주의 문자열입니다. 프로그램의 정신과 의도는 유지되어야
전역. 산에서 너무 적게 또는 너무 많이 없다, 둘 다한다
불필요한 루프도 쓸모없는 변수도 구조의 부족이나
압도적인 강성.

프로그램은 적어도 놀랍게도 '의`율법을 따라야합니다. 이 법률은 무엇입니까?
그것은 프로그램이 항상 방식으로 사용자에게 응답해야하는 간단
그 이상 그를 astonishes.

프로그램, 하나의 단위로 얼마나 복잡한 행동하여야한다 상관없이. 프로그램
내에서 논리적으로보다는 보여도 감독하여야한다.

프로그램이 이러한 요구 사항에 실패하면, 그것의 상태에있을 것입니다
무질서와 혼란. 이것을 해결하는 유일한 방법을 다시 작성하는 것입니다
프로그램.

4.2

초보자는 주인을 물었다 : "나는 가끔 실행되는 프로그램을 가지고
때때로 중단. 나는 프로그래밍의 규칙을 따라했습니다 아직 난
완전히 당황하고. 이것에 대한 이유는 무엇인가? "

주인이 대답했다 : "당신이 타오를 이해하지 않기 때문에 당신은 혼란스러워하고 있습니다.
바보만이 그의 동료 인간의 이성적인 행동을 기대합니다. 왜 그렇게
인간이 만들었다는 것을 기계에서 그것을 기대? 컴퓨터 시뮬레이션
결정론, 오직 타오가 최적입니다.

"프로그래밍의 규칙은 일시적인이므로 오직 어르신은 영원한 것입니다. 따라서
당신은 계몽을받을 전에 타오 명상해야한다 "고 말했다.

"하지만 제가 깨달음을받은 경우 어떻게 알 수 있습니까?"물어
초보.

"당신의 프로그램이 그러면 제대로 실행 될 것"마스터 대답 하였다.

4.3

주인은 그의 초보자 중 하나의 타오의 성격을 설명했다. "
타오는 모든 소프트웨어에서 구현되는 -에 관계없이, "얼마나 하찮은 고 말했다 중
마스터.

"휴대용 계산기에서 타오가?"초보자는 물었다.

"이것은이다"회신이 왔어요.

"어르신들이 비디오 게임에있어?"초보자를 계속했다.

"이것은 심지어 비디오 게임에"주인이 말했다.

"그리고 타오는 개인용 컴퓨터를 위해 DOS에?"

주인이 헛기침을하며 조금씩 자신의 위치를​​ 이동. "수업이 끝나고
오늘은, "그는 말했다.

4.4

프린스 왕의 프로그래머는 소프트웨어를 코딩했습니다. 그의 손가락이 따라 춤을
키보드. 오류 메시지없이 컴파일 프로그램 및 프로그램
부드러운 바람처럼 도망가.

"끝내주는 군!"왕자 "는 귀하 기법이 결점입니다!"외쳤다

"기술은?"프로그래머는 무엇 나 "그의 터미널에서 선회했다
따라가 타오입니다 - 모든 기술 넘어! 내가 처음 난을 프로그램 시작시
나 전에 대량의 모든 문제를 볼 것이다. 삼년 전 노 후
이상이 미사를 보았다. 대신, 나는 서브루틴을 사용. 하지만 지금은 아무것도 표시되지 않습니다.
내 모든 존재는 형태없는 무효에 있습니다. 내 감각은 유휴 상태입니다. 나의 정신,
계획없이 일을 할 자유, 자체 본능은 다음과 같습니다. 짧은 내 프로그램의
자체를 씁니다. 사실, 가끔 어려운 문제가 없습니다. 난 그들을보고
오고, 나는 천천히, 나는 조용히 지켜봐. 그렇다면 코드의 한 라인을 변경
그리고 어려움 유휴 연기 퍼프처럼 사라지다. 나는 다음을 컴파일
프로그램. 난 아직도 앉아서 작품의 기쁨이 내 존재를 채우려하자. 나는 가까이 내
그때 잠시 눈을하고 로그오프합니다. "

프린스 왕은 "그건 내 프로그래머들이 전부처럼 현명했다 줄래!"라고

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

책 5 - 유지 관리

따라서 마스터 프로그래머를 spake :

프로그램은 세 줄의 길이 있지만지만 '언젠가는 꼭 사랑일 필요합니다
유지. "

5.1

잘로는 도어는 경첩에는 기름이 필요 없다.
한줄기 흐르는 기류가 정체 성장하지 않습니다.
소리도 생각도 마찬가 진공을 통해 여행을하실 수 있습니다.
소프트웨어는 사용하지 않을 경우 썩게.

이들은 큰 의문입니다.

5.2

관리자는 끝내려고 그를 얼마나 걸릴 지 프로그래머에게 물어
그가 일하고있는 프로그램입니다. "그것은 내일 완료됩니다"
프로그래머가 즉시 대답 하였다.

"난 당신이 비현실적인되고있는 것"관리자는 방법을 솔직히 "고 말했다
걸립니까? "

프로그래머는 잠깐 생각. "내가하고자하는 몇 가지 기능을 가지고 있습니다
추가할 수 있습니다. 이것은 최소 2 주가 걸릴 것 "이라고 마침내 말했다.

"비록 그 기대 너무 많이이다"관리자가 나는 것이다 "주장
프로그램이 완료되면 간단하게 말해주면 만족. "

프로그래머는 이것으로 동의했다.

몇 년 후, 관리자는 은퇴. 자신의 은퇴로가는 길에서
오찬, 그는 터미널에서 자고 프로그래머를 발견했다. 그 남자는
밤새 프로그래밍.

5.3

초보 프로그래머 한번 간단한 금융 패키지를 코드에 할당되었다.

초보자는 많은 일 동안 결승선을 향해 격렬하게 일을하지만, 그 주인 경우 검토
그의 프로그램은, 그는 그것이 화면 편집기의 집합을 포함 것을 발견
일반 그래픽 루틴, 인공 지능 인터페이스지만,
재정 아무것도없는 조금 언급.

주인이 물어하면 초보자는 분개했다. "하지 마
그래서 참을성이, 나는 결국 금융 물건을 올려놓을 게요 "라고 말했다". "

5.4

훌륭한 농부가 그 조작했습니다 작물을 게을리하는가?
좋은 선생님도 가장 천한 학생을 감상할 수 있습니까?
좋은 아버지는 한 어린이가 굶어 수 있습니까?
좋은 프로그래머는 자신의 코드를 유지하기 위해 거절합니까?

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

도서 6 - 관리

따라서 마스터 프로그래머를 spake :

그리고 모두가 될 것입니다 - "프로그래머가 많은과 관리자들이 몇 냅둬
생산성을. "

6.1

관리자가 끝없는 회의를 개최하면 프로그래머는 게임을 써주세요. 언제
회계사는 분기별 이익에 대해 얘기, 개발 예산에 관한
절단한다. 수석 과학자가 푸른 하늘을 말할 때, 구름이 롤백하려고합니다
인치

정말,이 프로그래밍의 타오 아닙니다.

관리자가 약속을 할 때, 게임 프로그램은 무시됩니다. 언제
회계사가 장기 계획을 확인, 조화와 질서가 될거야
복원된. 수석 과학자 드로 문제를 해결할 때,
문제는 곧 해​​결될 것입니다.

Truly, this is the Tao of Programming.

6.2

Why are programmers non-productive?
Because their time is wasted in meetings.

Why are programmers rebellious?
Because the management interferes too much.

Why are the programmers resigning one by one?
Because they are burnt out.

Having worked for poor management, they no longer value their jobs.

6.3

A manager was about to be fired, but a programmer who worked for him
invented a new program that became popular and sold well. As a result, the
manager retained his job.

The manager tried to give the programmer a bonus, but the programmer
refused it, saying, “I wrote the program because I thought it was an
interesting concept, and thus I expect no reward.”

The manager upon hearing this remarked, “This programmer, though he holds
a position of small esteem, understands well the proper duty of an
employee. Let us promote him to the exalted position of management
consultant!”

But when told this, the programmer once more refused, saying, “I exist so
that I can program. If I were promoted, I would do nothing but waste
everyone's time. Can I go now? I have a program that I'm working on.”

6.4

A manager went to his programmers and told them: “As regards to your work
hours: you are going to have to come in at nine in the morning and leave
at five in the afternoon.” At this, all of them became angry and several
resigned on the spot.

So the manager said: “All right, in that case you may set your own
working hours, as long as you finish your projects on schedule.” The
programmers, now satisfied, began to come in at noon and work to the wee
hours of the morning.

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

Book 7 – Corporate Wisdom

Thus spake the master programmer:

“You can demonstrate a program for a corporate executive, but you can't
make him computer literate.”

7.1

A novice asked the master: “In the east there is a great tree-structure
that men call `Corporate Headquarters'. It is bloated out of shape with
vice presidents and accountants. It issues a multitude of memos, each
saying `Go, Hence!' or `Go, Hither!' and nobody knows what is meant. Every
year new names are put onto the branches, but all to no avail. How can
such an unnatural entity be?”

The master replied: “You perceive this immense structure and are
disturbed that it has no rational purpose. Can you not take amusement from
its endless gyrations? Do you not enjoy the untroubled ease of programming
beneath its sheltering branches? Why are you bothered by its
uselessness?”

7.2

In the east there is a shark which is larger than all other fish. 그것
changes into a bird whose wings are like clouds filling the sky. When this
bird moves across the land, it brings a message from Corporate
Headquarters. This message it drops into the midst of the programmers,
like a seagull making its mark upon the beach. Then the bird mounts on the
wind and, with the blue sky at its back, returns home.

The novice programmer stares in wonder at the bird, for he understands it
not. The average programmer dreads the coming of the bird, for he fears
its message. The master programmer continues to work at his terminal, for
he does not know that the bird has come and gone.

7.3

The Magician of the Ivory Tower brought his latest invention for the
master programmer to examine. The magician wheeled a large black box into
the master's office while the master waited in silence.

“This is an integrated, distributed, general-purpose workstation,” began
the magician, “ergonomically designed with a proprietary operating
system, sixth generation languages, and multiple state of the art user
interfaces. 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
said.

“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. 수행
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. 아니
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
it. 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. “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

쉘 리디렉션의 비트

에 의한 2009년 5월 10일 prashant · 댓글
: 아래 출원 기술

여기서 우리가 일반적으로 쉘 리디렉션을 수행하는 방법이다
$ ./pgm.sh args >out.txt 2>err.txt
나는 그것을 조금 수정하려고 다음과 같이 실행
$ ./pgm.sh args
출력 및 오류는 인수를 기반으로 pgm.sh 내부 계산 일부 파일 이름으로 이동해야한다는 요구와. 날짜가 인수의 일부인 경우 하나 설명의 사건이 될 수 있습니다. 그럼 당신은 당신을 / 디렉토리 / pgm_out_YYYYMMDD.txt / 인사 이동 STDOUT을 사고 싶은데요 1

리디렉션의 표준 방식에 문제가 N>file.txt 즉, file.txt로 파일 설명자 N을 연결, 그것들은 오직 새로 갈래의 프로세스가 아닌 현재의 프로세스의 동작한다는 것입니다.
그래서
$ echo hi 1>out.txt ; echo hii . out.txt에게 안부 보내드립니다지만 STDOUT에 hii을 출력합니다 2

곳이야 exec 우리 구조대에 온다. 우리가 추가하는 경우 exec 1>somefile.txt 후 스크립트의 나머지 부분에서 출력 somefile.txt로 이동합니다

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$. / test.sh는 out.txt에뿐만 아니라 hii 인사 리디렉션됩니다

마찬가지로 STDOUT뿐만 아니라 STDERR을 리디렉션하는 우리는이 같은 역활을 할 수
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

이제 쉘 내부에서 일부 파일에 리디렉션의 원래 지점으로 돌아오고, 이제는 프로그램이 몇 가지 변수 OUTFILE에 파일 이름을 계산 말하고, 우리가 할 수 있었 exec 1>$OUTFILE

그것은 현재의 문제를 해결합니다. 하지만 당신은 쉘 스크립트에서 파일의 '랜덤 액세스'를 달성 다음 예제를 통해 가보고 있습니다. 예 출신 여기에
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

댓글을 통해,이 코드는 자체 설명이다.
-
1 또한하여 수행할 수 있습니다 $ ./pgm.sh args >pgm_out`date +%Y%m%d` 있지만 아이디어가 프로그램 자체에서 일부 로직을 바탕으로이 파일 이름을 생성하는 것입니다.
2 1의 1> out.txt 중복이지만 우리가 FD 1 리디렉션하는 것으로 명확히

소니 VAIO 검토

에 의한 2009년 4월 29일 prashant · 댓글
: 아래 출원 리뷰

개월 뒤에 저는 바이오 구입 NS25G을 하고 그 이후 해당 게시물을 작성할 계획되었습니다. 이 게시물에는 자신과 같은 검토를 주로 참고 사항입니다. 의 신속 마크를 내려하자 -

포스트는 두 부분으로 구성되어 있습니다 -

하드웨어 I. 검토
II. 데비안과 상황 설정하기 설치하기

I. Review of hardware

제가 VAIO 마케팅자가 아니므로, 나는 다른 방법으로 라운드를 시작 하죠 -

왜이 노트북을 사고 싶어하지 않을 수 있습니다 :

  1. 어떤 블루투스 : 날 믿으는 2009 년 소니 블루투스없이 노트북을 판매 없다. 물론 당신의 USB 물건을 사용할 수도 있겠지만 ...
  2. 화면 크기는 15.4 인치 : 당신이 여행을 많이하는 경우 다음이 노트북은 매우 유용하지 않을 수 있으며 2.9kg 노트북 정확히 주변에 가벼운되지 않습니다.
  3. 없음 HDMI 출력.
  4. 별도의 그래픽 카드가없고 좋아한다. (없이 전용 ​​비디오 메모리

자, 당신은 왜 그것을 사고 싶어 수 있습니다

  1. 이 노트북들은 존나 좋은 바탕 화면이다. 주로 넓은 손바닥 휴식과 좋은 컴퓨팅 파워와 매우 편안한 키보드 배치는 대형 스크린과 함께 다음 프로그램을 작성하고 24 시간으로 그것을 25 밖으로 사용하려합니다 그것은 매우 잘 지내십 - 내가 말하려는 건이게 당신의 요구 사항 나같은 경우는 조합.
  2. 그것은 L2 캐시가 2메가바이트이​​며 프로세서 / 메모리 시스템 버스는 800MHz의입니다. 그 있지만 다른 있지만 2GHz 주파수와 코어 2 듀오 프로세서가 좋은 무언가에 대해 말할 수 있도록 게임을 안하는이 충분히있다.
  3. 제 사용량부터 나는 1.2GHz에서 대부분의 프로세서 클럭을보고, 메모리 사용량은 5백메가바이트 정도요. 바로 이전 시점을 강화.
  4. 배터리 백업이 좋다 ~ 2 시간은 내가 얻은거야.

여기에 한 가지 더 - 소니되고, 그것은 당신에게 유사한 구성을 가진 다른 노트북보다 조금 비용을 부담해야하지만, 그 U 만들 필요는 전화입니다.

II. Configuring linux (to run out of box ! ) :
그것은 미리 비스타 (전 홈 프리미엄이나 그런 화려한 이름을 생각)과 함께 설치 왔어요. Dungara가 한번 부팅과 150 GB 중 다른 파티션을 만들었습니다. 데비안 테스트는 내가 항상 시드 '불안정'으로 등급을 설치한 후 최대 (다운?) 무엇이다.

아무 문제없이 일을 할 것들 :

  1. X - unsurprisingly X 서버가 시작하거나 해상도 문제가 없었습니다. 업그레 이드 한 후 X 그래도 시작을 거부하지만, 'X-configure'의 꽤 잘 작동 믿어 파일을 생성.
  2. 오디오 - 오디오 출력 및 외부 마이크 작​​업 괜찮아요. 커널 버전 2.6.29-1-686 # 1 SMP와 ALSA 버전 1.0.17. 이것은 당신이 어디서 얻은거야
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. 비디오 캠 - 그냥 작동
  4. 디스크 및 뒤쪽으로 최대 절전 모드 - 천만에
  5. 무선 - 짧은에서 - 그냥 작동합니다.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    나는 커널 2.6 .. 그것이 주식 커널 소스와 함께 작동 27 이후를 생각합니다. 당신은 t와 같은 ndiswrapper이나 물건을 설치할 필요가 없다
    모자. 참고로 좋은 구매 GNOME-네트워크 관리자라고하고 wicd 환영 해주십시오, 단지 GUI 계층이지만 장면 뒤에 그들은 wpasupplient 이상과 같은 구성 물건을 많이 해결했습니다.

어떻게 작동하지 않습니다 -

  1. 아무 래도 내장 마이크가 작동을 거부 : ( 외부 마이크하지만 잘 동작합니다. 최신 ALSA 소스하지만 미래에 언젠가는 그 안으로 파고 것을 시도할 것이다, 나는 외부 내부 마이크를 대접한 것에 대해 매우, 데비안을 정상적으로 컴파일되지 않았습니다.

deiban에 대한 몇 가지 기타 힌트 :

  • devnagri 글꼴 ttf-indic - 글꼴 패키지
  • 플래시 플레이어 패키지 - flashplugin-nonfree
  • mplayer와 저자에 대한 sources.list 파일에있는 엔트리 - 뎁 http://www.debian-multimedia.org 시드 메인
  • E17을위한 sources.list 파일에있는 엔트리 - 출신 불안정 메인을 http://debian.alphagemini.org/~~V
  • 스카이 프에 대한 sources.list 파일에있는 엔트리 - http://download.skype.com/linux/repos/debian/ 안정 비 무료

증가하고 밝기를 감소를위한 oneliner -

[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

그래도는 sudo에서 이것을 넣어야 할 겁니다.
오른쪽, 그리고 ... 당신은 아이디어를 얻을 -하고 + 변화를 줄일 수 있습니다!

여기서 깨달음 (E17)를 사용하면 조금 더, 조금만 더 힌트입니다 -

[계몽 키 bindidings]

당신은 다음 키 코드와 매핑을 사용할 수 있습니다

음소거 :
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
최대 절전 모드 :
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
볼륨 감소 :
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
볼륨 증가 :
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
밝기를 증가 :
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
밝기를 감소
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

다음 페이지»