анкета, пинг пубсуб, пубсубхуб, пубсубхуббуб

У случају да сте скептични, постоји метод у лудило изнад, у наслову овог поста. У технолошким круговима мало је вероватно да нисте чули за пубсубхуббуб. У брзим неколико месеци, он је био један од топ три разговарали о стварима. Друга два бића хомоморпхиц шифровање и Гоогле Ваве [ 1.. ]. Враћајући се на тренутну поруку - термини у наслову указују како сте добили садржаје од других људи. Следећи детаљи бити јасније, ако замислите ствари дешава у вези са блоговима, иако су концептуално не ограничава само на блогове.

Анкетирање се односи на сценарију, где клијенти стално постављају нови сервер, ако нешто није искрсло. Колико често се питају да ли постоје исправке ће увек бити проблем са гласања сувише често или сувише ретки, али као један читалац је указао овде да је једна велика, ствар са гласања је да сервер не мора да одржи стање.

Пинг се односи на случај кад су писати чланак, ви (или ваш софтвер) такође ажурира неке популарне (централна) Упдате Сервицес. Неки позадина овде .

Следећа је пубсуб што је скраћеница за објављивање / претплатите, једна од најранијих терену јер је направљен овде је Еван Хенсхав-Платх и Келлан Елиот-МцЦреа (72 слајдова али вреди пролази кроз). Убедљив пример дали су против била ова - одређеног датума, Фриендфеед Флицкр индексирао 2,9 милиона пута да бисте добили најновије фотографије 45,754 корисника, од чега је 6.721 је посетио Флицкр у тим од 24 часова и могли су 'потенцијално' уплоадед а пхото. Имајте на уму да оно што није предложио нове технологије, како истичу, револуционарне нове 20 година стару технологију ". Ако то урадите за блогове Тада један од главних проблема са КСМПП подаци - присуство изнад главе, што може бити као висок као 60-70 одсто може се смањити много.

пубсубхуб скраћеница за објављивање субсцрибе чвориште и пубсубхуббуб је протокол, језгро које је идеја пубсубхуб. Где издавачи (рецимо блогере) ажурирате чвориште које (може бити више од једног чворишта, који разговарају једни с другима) налази 'негде у Облак ", по протоколу ово се може гурнути или повући по протоколу, али следећа карика у ланац, чвориште за клијента (рецимо читаоце) увек је пусх модел. Ова страница је добра полазна тачка за пубсубхуббуб, преглед слајдови су добри. Икада елоквентан Анил цртица га описује овде као тастером Интернету.
Два других сродних цитано су вебхоокс која је у основи хттп повратних позива. Гитхуб користи га, тако се за ПаиПал асинхроних обавештења плаћања у ИПН Тако раде многи други.. Повезано концепт рссцлоуд што је опет пубсуб чвориште. Пратите овај линк за више детаља.

Можда се питате шта је поента писања овде све то, постоје два 1. Ове ствари су вредно знајући, минимално бар и 2. Овај блог је пубсубхуббуб омогућити сада преко аппспот чвориште користећи овај вордпресс плугин и хране за животиње је превише пубсубхуббуб омогућен преко Феедбурнер, линк овде
-
[ 1 ]. - Добро прочитајте уводни за шифровање је потпуно хомоморпхиц овај чланак Бруце Сцхнеиер, а ово је прича мање-више само извор Гоогле таласа.

-Упдате - Ова порука објашњава како се захтев јавног сервера за повратни позив се ради око за десктоп клијената помоћу ИксМПП Гатеваи (за пубсубхуббуб).

Мало окупљање

Након читања овај чланак о коцницом слободних бафера и виде употребу (ЦАС упоредите и свап), осећала сам се као постављањем асемблерског кода да уради исто. Користите случај тамо је била да напишем нативе методу, а зову га из Јаве (назад у 1.5, када упоредне структуре података у Јави су били мање или више не постоје). Без даљег одлагања, ја ћу ослободите код на вас :) . Први је за ЦАС и друго је за рачунарство пуњење за ГЦД користећи Еуклидов алгоритам (ово се може наћи у многим местима и кроз менторски рад, као).

Компајлирати и покренути инструкције gcc file_name.c ; ./a.out

Упоредите и Свап

   # Инцлуде 
  # Инцлуде 
 / / Размена - неввалуе, цомперанд је стари / очекивана вредност
 / *
  * Функција заправо ради следеће ствари - ако вредност од * дестинације једнак онда олдвалуе заменили га неввалуе остало оставите непромењен: да ли све ово атомицалли
  *
  * Постоје две опције за повратну вредност
  * 1.ис почетна вредност од РСД * дестинације и оставити терет позивање фкн да га упореди са олдвал
  * 2.  урадите то овде и вратити 0 или 1, то би требало да буде ефикаснија
  ** /

 / * Га касније променили у макро * /
 Инт ЦАС (инт * дест, инт олдвалуе инт неввалуе) {
	 принтф ("(% д,% д,% д)", * дест, олдвалуе, неввалуе);
	 / * Инт ЦАС (инт дест, инт олдвалуе инт неввалуе) {* /
	 / * Инт ЦАС (инт дест, инт неввалуе инт олдвалуе) {* /
	 инт резултат = 1 ;/ * 1 показује да ЦАС успели и 0 показује да нису успели * /
	 / * Бтв треба да подесите за Цц застава цлобберинг!  * /
	 __асм__ __ волатиле__ (
			 "Мовл% 2,%% еак \ н \ т"
			 "Мовл% 3,%% еак \ н \ т"
			 "Мовл% 0,%% ецк \ н \ т"
			 "Лоцк \ н \ т"
			 "ЦМПКСЦХГ%% ебк, (%% ецк) \ н \ т" / * треба ЛОЦК бити на истој линији * /
			 "Јз ДОНЕ \ н \ т"
			 "Мовл $ 0,% 1 \ н \ т"
			 "Урађено: \ н \ т"
			 : "= М" (дест), "= Г" (резултат)
			 : "Г" (олдвалуе), "Г" (неввалуе), "М" (ДЕСТ)
			 : "% Еак", "% еак", "ецк", "ЦЦ"
			 );
	 принтф ("(% д,% д,% д)", * дест, олдвалуе, неввалуе);
	 врати резултат;
 }

 / * ТОДО
  * Напише још једну АСМ фкн који ставља изнад фкн у петљи и држати док покушавате уколико не успева * /

 маин () {
	 инт = 5, б = 6;
	 инт * Ц = (инт *) маллоц (сизеоф (инт));
	 * Ц = 6;
	 / * Инт = 6; * /
	 принтф ("% д \ н", ЦАС (Ц, Б, б));
	 принтф ("% д \ н", ЦАС (Ц, Б,));
	 принтф ("% д \ н", ЦАС (Ц,,));
	 принтф ("% д \ н", ЦАС (Ц, Б, б));
	 * Ц = 6;
	 / * Ц = 5; * /
	 принтф ("мења вредност * Ц до% д \ н", ц);
	 принтф ("% д \ н", ЦАС (Ц, Б, б));
	 принтф ("% д \ н", ЦАС (Ц, Б,));
	 принтф ("% д \ н", ЦАС (Ц,,));
	 принтф ("% д \ н", ЦАС (ц, б));
	 принтф ("% д \ н", ЦАС (Ц, Б,));
	 ретурн 0;
 }

Форматирање белешке - изгледа као маркер вп синтаксе додаје на крају, да се игноришу.

ГЦД

 # Инцлуде 
 Инт ГЦД (инт, инт б) {
     инт резултат;
     / * Израчунати највећи заједнички делилац користећи Еуклидов алгоритам * /
     __асм__ __ волатиле__ ("мовл% 1,%% еак;"
                           "Мовл% 2,%% еак;"
                           "ЦОНТД: цмпл $ 0,%% еак;"
                           "Је ДОНЕ;"
                           "Ксорл%% едк,% едк%;"
                           "Идивл%% еак;"
                           "Мовл% еак%,%% еак;"
                           "Мовл%% едк,%% еак;"
                           "ЈМП ЦОНТД;"
                           "Урађено: мовл%% еак,% 0;": "= Г" (резултат): "Г" (), "Г" (Б)
     );

     врати резултат;
 }

 маин () {
     инт први, други;
     принтф ("Унесите два цела броја:");
     сцанф ("% д% д", & година, и друго);

     принтф ("% д од ГЦД &% д је% д \ н", први, други, нзд (први, други));

     ретурн 0;
 }

Црицкетинг Свет чека новог светског поретка

Након низа распона пет тестове и око два месеца, Енглеска Искрено пепео.

Хајде да разговарамо о победничком тиму први - њихов средњи ред је 'просечан' ако не желите да се критична. Греаме Сванн допринос са палицом ће се рачунати не мање од доприноса са лоптом. Стјуарт Широко - све најбоље Специјалиста је без стартер за 5. теста. Ендрју Штраус је био једини играч који удара у бејзболу доследан и Џими Андерсон била је само доследан куглаш.

Поента је да не изгрди достигнућа победничког тима, али да се стави у перспективу чињеницу да упркос свим овим, Аустралија изгубљену. мораћете да мислите за пар секунди, ако је замолио да именују своје најбољи куглаш. Право, било је БВ Хилфенхаус. Хауритз евербоди надмашила је очекивања, али још није био довољно добар да буде изабран за две од пет тестова. Јужна Африка никада није постао светски ударач без светске класе центрифугом, Аустралија не може да се надају да ће остати једно без једног доброг довољно један најмање. Мађионичар је напустио сцену, а не изгледа као уметност више, заборавити магију. Понтинг стоји висок међу мање смртнике и Мајкл Кларк устане врло често, али да их чини тим са неким веома добрим играчима, а не врло добар тим.
Пепео 2009 ће бити упамћен за последњих Асхес Ендрјуа Флинтофф корисника, Стуарт Броад доласку као сви универзални уређај (ако он додаје неке више Асхес фолклор свом обећавајућем почетку), а један од најважнијих казивања деби века свих времена од стране Тротт али ће такође бити упамћен као месту где оклијевања и изговора око превласти Аустралије коначно су ставили на одмор, то је готово. Немојте ме погрешно схватити они и даље могу ископати Мајк Хуссеи или Стјуарт Кларк, али осећате допринос свих времена великанима када оду недостаје. Понекад они долазе да вас подсети на себе у ИПЛ, али још увек се не могу заменити. Хајде да се осећају благословио видевши Варне, Мекграт и Гилцхрист играју заједно и што је подржавао Ваугхс, Понтинг, Хиден, Мартин и Лангер.

Идући напред, Јужна Африка ће увек остати веома добар тим, али они морају да победе и полуфинала буду доследни широм света, Пакистана ће остати енигматицалли бриљантан, индијски Иоунг Гунс ће вероватно сматрају да је тешко да попуне ципеле за ванредне претходника. Шри Ланка треба да настави да покаже мојих опажања дела у заната. Али, можда ћемо морати да сачека негде пре него што је све од доминантан тим или пре Капитен жали недостатка конкуренције, као и Стив Ваугх урадио једном.

На вези назнаком - хајде да поздрављају долазак леђа Асифа, има ђавола пуно потенцијала, надајмо се да бисте видели нешто од тога и такође добродошли Ендија цвет у новом аватар, зар не можете да задржите добре људе доле дуго.

рубин један лајнере да створи Хасх

Јуче док пролази кроз један од мојих старих програма, нашао сам ово написао мени негде назад:

#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

Да убију неке од неизвесности дозволите ми да обелодани да рав_тект изгледа

 

, Зар она је смањена са паипал уплате признања.

Изнад линије ако је сломљен у деловима гласи боље:

  унесцапед_арраи = ЦГИ.унесцапе (рав_тект). Сплит ('&')
   унесцапед_арраи унесцапед_арраи.цоллецт = {| к | = Б к.сплит ("="); б.пусх (нула) ако б.сизе == 1, б}
   флаттенед_арраи = унесцапед_арраи.флаттен
   хасх хасх = [* флаттенед_арраи] 

Урадимо појединачне кораке у ИРБ:

  ИРБ (главни). 009:0> унесцапед_арраи = ЦГИ.унесцапе (рав_тект) Сплит ('&')    

 => ["УСПЕХ", "мц_гросс = 10.00", "протецтион_елигибилити = неподобним", "паиер_ид = У7ППЈЈ4ТСЈ47Е", "порез = 0.00", "паимент_дате = 10 Сеп 2009 09:45:30, ПСТ", "паимент_статус = чекању "]                                                                         

 ИРБ (главни): 013:0> унесцапед_арраи унесцапед_арраи.мап = {| к | = Б к.сплит ("="); б.пусх (нула) ако б.сизе == 1, б}  

 => [["УСПЕХ", нула], ["мц_гросс", "10.00"], ["протецтион_елигибилити", "неподобним"], ["паиер_ид", "У7ППЈЈ4ТСЈ47Е"], ["порез", "0.00"] , ["паимент_дате", "10. јул 2009 09:45:30, ПСТ"], ["паимент_статус", "На чекању"]]                               

 ИРБ (главни): 014:0> флаттенед_арраи = унесцапед_арраи.флаттен     

 => ["УСПЕХ" нула ", мц_гросс", "10.00", "протецтион_елигибилити", "неподобним", "паиер_ид", "У7ППЈЈ4ТСЈ47Е", "порез", "0.00", "паимент_дате", "09:45: 30 Јун 10, 2009 ПСТ "," паимент_статус "," На чекању "]
 ИРБ (главни): 015:0>
 хасх хасх = [* флаттенед_арраи]
 => {"Порез" => "0.00", "паимент_статус" => "На чекању", "паиер_ид" => "У7ППЈЈ4ТСЈ47Е", "мц_гросс" => "10.00", "успех" => нула, "паимент_дате" = > "Нов 10 09:45:30, ПСТ 2009", "протецтион_елигибилити" => "неподобним"} 

БТУ, * се зове Сплат оператер у рубином

Други начин за креирање хасх од 'низа парова' је да користите убризгати:

  хасх = [[1,2], [3,4]] убризгати ({}). {| Резултат елемент, | Резултат [елемент.фирст] = резултат [елемент.ласт]; резултат} 

Постоји још један начин :) Написати петљу, да ћу оставити као вежба на читаоце!

Овде је мало везе случај коришћења стварања хасх од низова:

  ИРБ (главни): 005:0> [1,2,3,4,7,9] гроуп_би {| к | к <5.?  : Мање :: већу}

 => {: Мање => [1, 2, 3, 4]: већа => [7, 9]} 

То можете да урадите више ствари, у основи резултат блока се користи као кључ за тај елеменат у добијеном хашиш.

Гмаил, и Мутт мсмтп поправити

Ако користите Мутт и СМТП приступ Гмаил. Овде је (лоша) вест. Кул момци поново на Гоогле променио сертификат. О, да ли питате - како се то зна? Једноставно Мутт почео жале на лоше потврде када покушавате да користите мсмпт и злогласни наслова мсмтп: ТЛС сертификата верификација није успело:. Сертификат није добио познатог издавача ' поздравио ме на екрану.

Да пређе потврдили -
Само покрените следећи

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

На месту старог Тхвате Сервер сада сте се након издаваоца у сегменту
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Срећом Решење је једноставно, овде је оно што треба да урадите на Дебиану

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

После овога само промените следећу линију у / мсмтпрц сте ~~~В.

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

Гит и Ауесоме Анкета

Ево два линка за анкету по ГИТ (систем контроле верзија) и супер (виндов манагер) заједнице. Ако користите било који од ових, молимо вас да се мало времена да попуните упитник. Мислите о томе као најједноставнији начин да се допринесе назад на софтверу који користите.
Овде су линкови:

Гит - хттп://ввв.сурвс.цом/сурвеи?ид=2ПИМЗГУ0&цханнел=К0ЕКЈ3НФ54

Авесоме - хттп://ввв.сурвс.цом/сурвеи?ид=8БВЕВ3ФО&цханнел=БХ07ЦК040Д

Напомена - (Ас пронађен на тим страницама, али на дну :) ) -
"Ако имате омогућене колачиће, увек можете поднети делимично испуњен анкету, и врате се својим одговорима на касније време, завршите га касније."

Обједињавање Хешеви у иамл конф фајлова

ИАМЛ је прилично згодан за писање конфигурационе фајлове. Основна предност је у томе, то се чита као текстуалну датотеку. Ово ради заиста добро ако ваш конфиг фајл је равна (без хијерархија) и нема понављања.
Ако ваша датотека конфигурације има понављања онда има смисла да се одвоје од те елементе и поново их. Оно што ја мислим је ово - рецимо да ваша датотека конфигурација изгледа овако:

  Развој:
   инпут_лоцатион: цоммон_инпут
   оутпут_лоцатион: дев_лоцатион
   Емаил:
     смтп_сервер: иоур_сервер
     Логин: иоур_логин
     лозинка: топ_сецрет
 производња:
   инпут_лоцатион: цоммон_инпут
   оутпут_лоцатион: дев_лоцатион
   Емаил:
     смтп_сервер: иоур_сервер
     Логин: иоур_логин
     лозинка: топ_сецрет 

Под претпоставком изнад кода у / тмп / тест.имл Ево како можете да прочитате у Питхон и Руби
$cat readyml.py

 # / Уср /! Бин / енв питхон
 ппринт из увоза ппринт као пп
 # У Дебиану потребно је да инсталирате Питхон-иамл
 иамл из увоза оптерећења, лоад_алл, депонија
 хасх = оптерећење (отварају ('/ тмп / тест.имл'))
 ПП (хасх ['развој']) 


$ cat readyml.rb

  # / Уср /! Бин / енв рубин
 захтевају наслова ПП наслова
 хасх = ИАМЛ :: оптерећење (Филе.опен ('/ тмп / тест.имл'). реад)
 ПП Хасх ['развој'] 

Овде је згодно за један путнички авион рубина верзији
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' , или можете покушати да исти у ИРБ или Питон конзолу.

Имајте на уму да у горе наведеном фрагмент кода, све је друго него излаз локација је иста у развој и производњу дела. Ово је место где имл чвор идентификатор долази да спасе. Идеја је једноставна имају скуп подразумеваних вредности и заменити их на другом месту.
Можете да га растргнути као што следи:

  а: дефаултс и подразумеване
   инпут_лоцатион: цоммон_инпут
   оутпут_лоцатион: дев_лоцатион
   Емаил:
     СЕНДЕР_НАМЕ: пошиљалац
     смтп_сервер: иоур_сервер
     Логин: иоур_логин
     лозинка: топ_сецрет
 Развој:
   <<: Дефаултс РСД *
 производња:
   <<: Дефаултс РСД *
   оутпут_лоцатион: прод_лоцатион 


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

Одлично, то ради (тм).
Убедљиво смо тргује неке јасноћу на мало магије. Овде је мало објашњење: &, * и <<: и што је сидро Таг се може схватити као чвора идентификатора, је * и референтни чвор <<: скраћеница за хеш стапања.

За више детаља погледајте било иамл спецификације или Википедиа
До сада је тако добро, али овде постоји цака, ови хасх стапања нису рекурзивно. Шта то значи је ово: рецимо да желите да имате другачије име пошиљаоца за пошту у два окружења, можда ћете бити у искушењу да урадите следеће:

  а: дефаултс и подразумеване
   инпут_лоцатион: цоммон_инпут
   оутпут_лоцатион: дев_лоцатион
   Емаил:
     СЕНДЕР_НАМЕ: пошиљалац
     смтп_сервер: иоур_сервер
     Логин: иоур_логин
     лозинка: топ_сецрет
 Развој:
   <<: Дефаултс РСД *
   Емаил:
     СЕНДЕР_НАМЕ: сендер_дев
 производња:
   <<: Дефаултс РСД *
   оутпут_лоцатион: прод_лоцатион
   Емаил:
     СЕНДЕР_НАМЕ: сендер_прод 

Омогућава проверити

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

Упс, нешто је пошло наопако, проблем као горе поменуто је да је хеш стапање није рекурзивна и док стапање је заменио маил подразумевано поштом производње који има само један тастер. Решење / решили да се одвијати још један ниво:

  цоммон_сеттингс: & цоммон_сеттингс
 инпут_лоцатион: цоммон_инпут
 оутпут_лоцатион: дев_лоцатион
 маил_дефаултс линкови: & маил_дефаултс
  СЕНДЕР_НАМЕ: пошиљалац
   смтп_сервер: иоур_сервер
   Логин: иоур_логин
   лозинка: топ_сецрет

 а: дефаултс и подразумеване
   <<: Цоммон_сеттингс РСД *
   Емаил:
     <<: Маил_дефаултс РСД *
 Развој:
   <<: Дефаултс РСД *
 производња:
   <<: Дефаултс РСД *
   Емаил:
     <<: Маил_дефаултс РСД *
     СЕНДЕР_НАМЕ: сендер_прод

Летс проверите поново

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

Да ли ви кажете да имате један више ниво гнезде, добро се дефинитивно може одвијати још један ниво, али онда то постаје хаос. Дакле, ако не покушавате да напише решење за куле Ханоја у конф фајл, боље је да рестуцтуре цонф фајл од копања у иамл или нешто друго. Али то је ионако ваш позив.

Велики програмери наћи једноставне решења за сложене проблеме

После дужег времена сам могао наћи извор за следећи цитат-

Јуниор програмера креирате једноставне решења за једноставне проблеме. Сениор програмери креирали комплексна решења за комплексне проблеме. Велики програмери наћи једноставна решења за комплексне проблеме.

То је из есеја под називом Лепа Софтвер Цхарлес Цоннелл.

Други фаворит је једна од рудника Зен Питхон -

Лепа је боље него ружно.
Експлицитно је боље него имплицитно.
Једноставно је бољи од комплекса.
Комплекс је боље него компликовано.
Стан је боље него нестед.
Редак је боље него густа.
Читљивост рачуна.
Посебни случајеви нису довољно посебан да се прекрше правила.
Иако практичност побеђује чистоту.
Грешке никада не би требало да прође тихо.
Осим ако експлицитно ућуткани.
У лице двосмислености, одбијају искушењу да погоде.
Ту би требало да буде један и по могућству само једну очигледно начин да то урадите.
Иако на тај начин не може бити јасно на први поглед, осим ако сте Холанђани.
Сада је боље него никада.
Иако је често никад бољи него право * * сада.
Ако имплементација је тешко објаснити, то је лоша идеја.
Ако имплементација је лако објаснити, може бити добра идеја.
Именски простори су један хонкинг одлична идеја - да се уради више од оних!
-------------------------
и онда постоји класична Тао програмирање

-

кредити као на повезаној локацији-

Превео Џејмса Џефрија

Транскрибовати војводе Хиллард

Емитује Анупам Триведи и Сајитха Тампи и Мегхсхиам Јаганнатх

Ре-хтмл-ваном и Едитед би Краген Ситтлер

-

Књига 1 - Тихи Празнина

Тако је говорио програматор мастер:

"Када сте научили да отме код грешке из клопке оквира, она
ће бити време да оду. "

1.1

Нешто мистериозно је формирана, рођен у мирном празнини. Чека сами и
непокретни, она је истовремено и даље, а ипак у сталном покрету. То је извор
од свих програма. Не знам своје име, тако да ћу га зову Тао
Програмирање.

Ако је велики Тао, онда оперативни систем је одличан. Ако оперативни
Систем је супер, онда компајлер је супер. Ако компајлер је супер,
онда апликација је велика. Корисник је драго и постоји
хармонија у свету.

Тао програмирање тече далеко и врати на ветар јутра.

1.2

Тао родила машински језик. Машина језик родила
асемблер.

Асемблер је родила компајлера. Сада има десет хиљада
језици.

Сваки језик има своју сврху, али скромно. Сваки језик изражава
Јин и Јанг софтвера. Сваки језик има своје место у оквиру Тао.

Али не програмира у ЦОБОЛ ако можете да га избегнете.

1.3

У почетку је била лоса. Тао родила простору и времену.
Зато су простор и време Јин и Јанг програмирања.

Програмери који не схватају Тао су увек понестаје времена
и простор за своје програме. Програмери да схвате Тао увек
имају довољно времена и простора да остваре своје циљеве.

Како би то могло бити другачије?

1.4

Мудар програматор рекао о Тао и прати га. Просечна
програмер је причао о Тао и потрази за њом. Глупи програмер
је рекао о Тао и смеје на њу.

Ако није било смеха, не би било лоса.

Највиши звуци су најтеже да чују.
Идући напред је начин да се повуку.
Велики таленат показује се касно у животу.
Чак и савршен програм и даље има бугова.

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

Књига 2 - Тхе старих мајстора

Тако је говорио програматор мастер:

"После три дана без програмирања, живот постаје бесмислен."

2.1

Програмери старих били мистериозан и дубока. Не можемо да докучимо
њихове мисли, тако да све што радимо је описати свој изглед.

Свестан, попут лисице прелазу воду. Алерт, као уопште о
бојно поље. Врста, као домаћица поздравне њени гости. Једноставно, као
унцарвед комади дрвета. Непрозирно, попут црне базенима у тамним пећинама.

Ко може рећи тајне њихових срца и умова?

Одговор постоји само у Тао.

2.2

Велики Мајстор Тјуринг једном сањао да је машина. Када је се пробудио
узвикнуо:

"Не знам да ли сам Туринг сањам да сам машина, или
машина сања да сам Туринг! "

2.3

Програмер из веома великог рачунара компаније отишао у софтверу
Конференцију, а затим се вратио да се јави свом менаџеру, говорећи: "Каква
од програмери раде за друге компаније? Они су лоше понашали и били су
неупућена наступа. Њихова коса је била дуга и запуштен и њихове
одећа била наборана и стари. Они срушио нашу угоститељску пакет и они
направио непристојне звуке током мојој презентацији. "

Менаџер је рекао: "Требао сам вам никада послат на конференцији. Они који
програмери живе изван физичког света. Они сматрају живот апсурд,
случајна коинциденција. Они долазе и одлазе без познавања ограничења.
Без бриге, они живе само за своје програме. Зашто би се замарали
са друштвеним конвенцијама?

"Они су живи у Тао."

2.4

Почетник питао Мајстора: "Овде је програмер који никада не дизајнира,
докумената или тестови своје програме. Ипак, сви који га знају га сматрају једном од
најбољи програмери на свету. Зашто је ово? "

Учитељ одговара: "Тај програматор је савладао Тао. Он је отишао
изван потребе за дизајн, а он не постане љут када систем
срушио, али прихвата универзум без бриге. Он је отишао даље
потребно за документацију, он више не брине да ли још неко види своју шифру.
Он је отишао даље од потребе за тестирање, сваки од његових програма су савршени
у себи, спокојан и елегантан, њихова сврха сама по себи. Заиста,
ушао је у мистерију Тао. "

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

Књига 3 - Пројектовање

Тако је говорио програматор мастер:

"Када се програм тестира, сувише је касно да се дизајн
измене. "

3.1

Било некада био човек који је отишао у шоу Цомпутер Траде. Сваки дан као он
ушао, човек је рекао стражару на вратима:

"Ја сам велики лопов, познат по својим подвига крађа. Бити
Имајте на уму, за овај сајму неће побећи унплундеред. "

Овај говор увелико поремећен чувара, јер су милиони
долара унутра рачунарске опреме, па је пажљиво посматрао човека. Али
човек само одлутали од штанда до штанда, зуји тихо себи.

Када човек отишао, стражар га је одвео на страну и претресали своју одећу, али
ништа није било да се нађе.

На следећој дана сајма, човек се вратио и цхидед чувара
говорећи: "Ја сам побегао са огромном плена јуче, а данас ће чак бити
боље "Дакле, стражар га је гледао све ближе., али без успеха.

Последњег дана на сајму, стражар могао да обузда своју радозналост
више не. "Господине Тхиеф", рекао је он, "ја сам тако збуњени, не могу да живе у
мир. Молим вас просветли ме. Шта је то што краду? "

Човек се насмешио. "Ја сам краду идеје", рекао је он.

3.2

Било некада био мајстор програмер који је писао неструктурираних програме.
програмер почетник, покушавају да га имитирају, такође почео да пише
неструктурирани програми. Када почетник питали на мастер да процени његов
напредак, мајстор га је критиковао за писање неструктурираних програма,
говорећи: "Шта је потребно за мајстора није прикладна за
почетник. Морате схватити Тао пре превазилази структуру. "

3.3

Некада је било програмер који је у прилогу суду у господар рата
Уу. Варлорд питали на програматор: "Који се лакше дизајн: на
рачуноводствени пакет или оперативни систем? "

"Оперативни систем", одговорио је програматор.

Варлорд изговорио узвика у неверици. "Сигурно рачуноводство
Пакет је тривијално поред сложености оперативног система ", рекао је
рекао је.

"Није тако", рекао је програмер, "приликом дизајнирања рачуноводствене пакет,
програмер ради као посредник између људи имају различита
идеје: како то да раде, како њени извештаји морају појавити, и како она мора
у складу са пореским законима. Насупрот томе, оперативни систем није ограничен
спољних наступа. Приликом пројектовања оперативног система, програмер
тражи најједноставнији хармонију између машине и идеје. То је разлог зашто
оперативни систем је лакше дизајнирати ".

Варлорд Уу климну главом и осмехну се. "То је све добро и добро, али
који је лакше отклањање грешака? "

Програмер направио никакав одговор.

3.4

Менаџер је отишао на главни програмер и показао му услове
документ за нове апликације. Менаџер се питали на мастер: "Колико дуго
ће бити потребно да пројектује овај систем ако доделите пет програмере на њу? "

"То ће бити годину дана", изјавио је одмах мајстор.

"Али морамо овај систем одмах, или чак и раније! Колико дуго ће то
предузети ако сам доделити десет програмера на њу? "

Мајстор програмер намршти. "У том случају, биће потребно две године."

"А шта ако сам доделити стотину програмере на њу?"

Мајстор програмер слегну раменима. "Онда дизајн никада неће бити
завршен ", рекао је он.

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

Књига 4 - Цодинг

Тако је говорио програматор мастер:

"Добро написан програм је свој рај, лоше написан програм
сопствени пакао. "

4.1

Програм би требало да буде лаган и окретан, њени потпроцедура повезани као
ниска бисера. Дух и намера програма треба чувати
током. Ту би требало да буде ни премало или превише, ни
Непотребно петље ни бескорисна променљивих, ни недостатак структуре нити
велика крутост.

Програм би требало да следи закон мањег `запрепашћење". Шта је овај закон?
То је једноставно да програм увек реагује на корисника на начин
који га задивљује најмање.

Програм, без обзира на то колико сложена, треба да делују као једна целина. Програм
треба да буде усмерена од стране логике у него по спољашњем изгледу.

Ако програм не у овим захтевима, то ће бити у стању
неред и конфузија. Једини начин да се исправи ово да преправи
програма.

4.2

Почетник питали на мастер: "Имам негде програм који покреће и
понекад прекида. Поступио сам правила програмирања, али сам
потпуно збуњен. Шта је разлог за ово? "

Учитељ одговори: "Ви сте збуњени јер не разумеју Тао.
Само будала очекује рационалном понашању од својих колега човека. Зашто радите
Очекујемо га у машину која су људи конструисан? Рачунари симулирају
детерминизам, само лоса је савршен.

"Правила програмирања су пролазна, само лоса је вечна. Дакле
Тао морате размишљати пре него што примите просветљење. "

"Али како да знам када сам добио просветљење?", Упитао
почетник.

"Ваш програм ће затим покренути исправно", одговорио је мастер.

4.3

Мајстор је објаснио природу Тао да један од његових почетника. "
Тао је оличен у свим софтвера - без обзира колико незнатна ", рекао је
мајстор.

"Да ли је лоса у ручни калкулатор?", Упитао је почетник.

"То је," дошао одговор.

"Да ли је лоса у видео игри?" Наставио почетника.

"То је чак иу видео игри", рекао је мајстор.

"И да ли је лоса у ДОС за персонални рачунар?"

Мастер избацили и мало померио своју позицију. "Лекција је завршена
за данас ", рекао је он.

4.4

Кнеза Ванг је програмер је кодирање софтвер. Његови прсти плесали по
тастатура. Програм састављен без поруку о грешци, а програм
ран као благи ветар.

"Одлично!" Принц узвикнуо: "Ваша је беспрекорна техника!"

"Техника?", Рекао је програмер окреће од свог терминала, "Оно што сам
прате је лоса - изнад свих техника! Када сам први пут почео да се и програм
да види пред собом цео проблем у једној масе. После три године сам без
више видела ову масу. Уместо тога, користио сам потпроцедура. Али сада видим ништа.
Моје цело биће постоји у безоблични празнини. Моја чула су беспослени. Мој дух,
слободно да раде без плана, следи сопствени инстинкт. Укратко, моја програму
пише се. Истина, понекад постоје тешки проблеми. Ја их видим
цоминг, успори, ја ћутке гледају. Онда сам промени једну линију кода
и тешкоће нестају као дим пуфф типа у стању мировања. Онда сам компајлирати
програма. Ја још увек седим и нека радост рада попуните мог бића. Да затворим свој
очи на тренутак и онда одјавите. "

Принц Ванг је рекао: "Да ли би то све моје програмера су били мудри!"

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

Књига 5 - Одржавање

Тако је говорио програматор мастер:

"Иако програма бити три линије, али дуго, једног дана ће морати да буде
одржава. "

5.1

Добро половне врата не треба уље на шаркама.
Свифт-тече поток не расте стагнира.
Ни звук ни мисли могу да путују кроз вакуум.
Софтвер иструне ако се не користи.

То су велике мистерије.

5.2

Менаџер питао програмер колико би му потребно да се заврши
Програм на којем је радио. "То ће бити завршен сутра,"
програмер одмах одговорио.

"Мислим да су нереални", рекао је менаџер "Искрено, како
дуго ће то трајати? "

Програматор размисли за тренутак. "Имам неке функције које желим да
додај. Ово ће трајати најмање две недеље ", рекао је на крају рекао.

"Чак и да је превише очекивати", инсистирао је менаџер "Ја ћу бити
задовољан ако само ми реци када се програм заврши. "

Програмер пристао на то.

Неколико година касније, директор у пензији. На путу до одласка у пензију
ручак, открио програматор спавања на свом терминалу. Он је био
програмирање целу ноћ.

5.3

Програмер почетник је једном додељен кодирати једноставан финансијски пакет.

Почетник радио фуриозно много дана, али када је његов господар прегледан
његов програм, он је открио да она садржи едитор екрана, скуп
генерализована графика рутине, вештачка интелигенција интерфејс, али
није најмањи помен било чега финансијског.

Када мајстор питао о томе, постао искушеник огорчен. "Немојте бити
тако нестрпљив ", рекао је он," Ја ћу ставити у финансијске ствари на крају. "

5.4

Да ли добар пољопривредник занемарити исечак он је засадио?
Да ли добар учитељ гледају чак и најнезнатнију студента?
Да ли добар отац дозволити да се једно дете од глади?
Да ли добар програмер одбије да одржи своју шифру?

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

Књига 6 - Менаџмент

Тако је говорио програматор мастер:

"Нека буде многи програмери и руководиоци неколико - онда ће све бити
продуктиван ".

6.1

When managers hold endless meetings, the programmers write games. When
accountants talk of quarterly profits, the development budget is about to
be cut. When senior scientists talk blue sky, the clouds are about to roll
in.

Truly, this is not the Tao of Programming.

When managers make commitments, game programs are ignored. When
accountants make long-range plans, harmony and order are about to be
restored. When senior scientists address the problems at hand, the
problems will soon be solved.

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. Do
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
она. 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. "Ја
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. And
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

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.
so
$ 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

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
ИИ. 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"

Следећа Страна »