पोल पिंग, pubsub, pubsubhub, pubsubhubbub के

6 सितंबर, 2009 के द्वारा प्रशांत · टिप्पणियाँ
: के तहत दायर की प्रौद्योगिकी

मामले में आप उलझन में हैं, वहाँ ऊपर पागलपन में विधि पोस्ट के शीर्षक में है. टेक हलकों में यह संभावना नहीं है कि आप pubsubhubbub के बारे में सुना नहीं है. तेजी से कुछ ही महीनों में, यह एक शीर्ष तीन चीजों के बारे में बात कर दिया गया है. अन्य दो की जा रही समरूप एन्क्रिप्शन और गूगल लहर [ 1 ]. वर्तमान पोस्ट करने के लिए वापस आ रहा है - शीर्षक के मामले में संकेत मिलता है कि कैसे आप सामग्री को अन्य लोगों से मिलते हैं. जानकारी के बाद और अधिक स्पष्ट हो जाते हैं, अगर तुम बातें ब्लॉग के लिए सम्मान के साथ हो, भले ही वे धारणा ब्लॉग के लिए प्रतिबंधित नहीं कर रहे हैं कल्पना.

मतदान परिदृश्य जहां ग्राहकों सर्वर पूछ अगर कुछ नया आ गया है रखने के लिए संदर्भित करता है. कितनी बार अद्यतन करने के लिए पूछने हमेशा भी अक्सर या बहुत निराला मतदान के साथ एक समस्या हो जाएगा, लेकिन स्थिति बनाए रखने के रूप में एक पाठक ने बताया कि मतदान के साथ एक महान बात है, उस सर्वर नहीं है.

पिंग मामले में जहां जब एक लेख पोस्ट करने के लिए, आप (या अपने सॉफ्टवेयर) भी कुछ लोकप्रिय (केंद्रीय) अद्यतन सेवाओं को अद्यतन करने के लिए संदर्भित करता है. कुछ पृष्ठभूमि यहाँ .

अगले pubsub जो प्रकाशित / सदस्यता लेने के लिए, एक जल्द से जल्द पिच के लिए इसे बनाया गया था के लिए खड़ा है यहाँ इवान Henshaw Plath और केलन इलियट - McCrea - (72 स्लाइड्स लेकिन लायक के माध्यम से जा रहा). सम्मोहक उदाहरण वे के खिलाफ दिया था BobrDobr इस पर एक विशेष तिथि पर, फ़्लिकर 2,9 लाख बार क्रॉल करने के लिए 45,754 उपयोगकर्ताओं की नवीनतम फोटो, जिसमें से उन 24 घंटे में 6721 फ़्लिकर का दौरा किया था और संभवतः सकता है एक तस्वीर अपलोड. ध्यान दें कि वे प्रस्तावित एक नई तकनीक नहीं था, क्योंकि वे 'क्रांतिकारी नए 20 साल पुरानी तकनीक' बिंदु. यदि आप यह तो ब्लॉग के लिए एक XMPP साथ प्रमुख समस्याओं की उपस्थिति डेटा भूमि के ऊपर, जो के रूप में 60-70% के रूप में उच्च के रूप में हो सकता है एक बहुत कम किया जा सकता है.

pubsubhub के लिए सदस्यता हब प्रकाशित खड़ा है और pubsubhubbub एक प्रोटोकॉल है, जो कोर के pubsubhub के विचार है. जिसमें प्रकाशकों (ब्लॉगर्स कहना) जो हब (एक से अधिक केन्द्र है, जो एक दूसरे से बात हो सकता है) बादल में कहीं 'रहता है, के रूप में इस प्रोटोकॉल के प्रति या धक्का किया जा सकता है प्रोटोकॉल के प्रति के रूप में खींच लेकिन अगली कड़ी में अद्यतन श्रृंखला, ग्राहक के लिए हब (पाठकों को कहते हैं) यह हमेशा मॉडल धक्का है. इस पृष्ठ pubsubhubbub के लिए शुरू बिंदु अच्छा है, सिंहावलोकन स्लाइड अच्छा कर रहे हैं. कभी सुवक्ता अनिल डैश यह वर्णन यहाँ pushbutton वेब के रूप में.
दो अन्य संबंधित पढ़ता webhooks जो मूल रूप से http callbacks. GitHub का उपयोग करता है यह है, तो में भुगतान के अतुल्यकालिक सूचना के लिए पेपैल करता IPN तो कई दूसरों है. संबंधित अवधारणा है rsscloud है जो फिर pubsub हब है. का पालन करें इस जानकारी के लिए लिंक.

आप सोच रहे होंगे ये सब यहाँ लिखने की क्या बात है हो सकता है, वहाँ दो 1. ये बातें जानने लायक है, कम से कम से कम से कम और 2. यह ब्लॉग अब appspot इस WordPress का उपयोग कर हब के माध्यम से सक्षम pubsubhubbub प्लगइन और चारा भी pubsubhubbub है Feedburner, लिंक के माध्यम से सक्षम यहाँ
-
[ 1 ] परिचयात्मक अच्छा पूरी तरह से समरूप एन्क्रिप्शन पढ़ने के लिए है इस लेख ब्रूस Schneier और इस बात को और अधिक या कम गूगल लहर के लिए केवल स्रोत है.

- अद्यतन इस पोस्ट में बताते हैं कि कैसे कॉलबैक के लिए सार्वजनिक सर्वर की आवश्यकता डेस्कटॉप ग्राहकों के लिए चारों ओर कर सकते हैं XMPP प्रवेश द्वार (pubsubhubbub के लिए) का उपयोग कर काम किया.

विधानसभा की एक बिट

29 अगस्त, 2009 के द्वारा प्रशांत · टिप्पणियाँ
: के तहत दायर की प्रौद्योगिकी

पढ़ने के बाद यह ताला मुक्त buffers के बारे में लेख और कैस के उपयोग (तुलना और स्वैप) देख, मैं विधानसभा कोड पोस्ट करने के लिए भी ऐसा ही लगा. मामले का प्रयोग करें वहाँ एक देशी विधि लिखने के लिए और यह जावा (1.5 में वापस आ गया, जब जावा में समवर्ती डेटा संरचनाओं और अधिक या कम गैर विद्यमान थे) से फोन किया गया था. आगे की हलचल के बिना, मैं आप पर कोड दिलाने हूँ :) . पहले कैस के लिए और 2 के लिए कंप्यूटिंग GCD यूक्लिड के एल्गोरिथ्म (यह एक कई स्थानों और ट्यूटोरियल के रूप में अच्छी तरह से में पाया जा सकता है) का उपयोग.

संकलित करें और चलाने के निर्देश gcc file_name.c ; ./a.out

तुलना करें और स्वैप

   # शामिल 
  # शामिल 
 / / विनिमय - टिप्पणी परिवर्तन, comperand पुराने / उम्मीद मूल्य है
 / *
  * समारोह वास्तव में निम्नलिखित बात करता है - अगर * गंतव्य पर मूल्य के बराबर है तो यह और टिप्पणी परिवर्तन यह अपरिवर्तित छोड़ द्वारा प्रतिस्थापित oldvalue: atomically इन सभी करते हैं
  *
  * मान के लिए दो विकल्प हैं
  * * गंतव्य के 1.is प्रारंभिक मूल्य और को बुला fxn के बोझ को छोड़ने के लिए यह oldval साथ तुलना
  * 2.  ऐसा करने पर यहाँ और लौटने 0 या 1, यह और अधिक कुशल होना चाहिए
  / **

 / * बाद में यह मैक्रो में परिवर्तन * /
 int कैस (int गंतव्य * int oldvalue, int टिप्पणी परिवर्तन)
	 printf ("(% d,% d,% d)" * गंतव्य, oldvalue, टिप्पणी परिवर्तन);
	 * / Int (int के गंतव्य, oldvalue int, int टिप्पणी परिवर्तन) कैस {* /
	 * / Int (int गंतव्य, int टिप्पणी परिवर्तन, int oldvalue) कैस {* /
	 int परिणाम = 1, "* 1 से पता चलता है कि कैस सफल और 0 से पता चलता है कि यह विफल रहा है * /
	 / * Btw झंडा clobbering के लिए सीसी सेट की जरूरत है!  * /
	 __asm__ __ volatile__ (
			 "Movl 2%,% EAX \ n \ t"
			 "Movl 3%,% EBX \ n \ t"
			 "Movl% 0% ECX \ n \ t"
			 "ताला \ n \ t"
			 "% EBX, CMPXCHG (% ECX) \ n \ t" / * एक ही पंक्ति पर बंद कर देना चाहिए * /
			 "Jz \ \ n किया
			 "Movl $ 0, 1% \ n \ t"
			 ": \ N \ t किया"
			 "= मीटर (गंतव्य)," = छ "(परिणाम)
			 (Oldvalue) "जी", "जी" (टिप्पणी परिवर्तन), "मीटर" (गंतव्य)
			 EAX% ","% EBX "," ECX "," सीसी "
			 );
	 printf ("(% d,% d,% d)" * गंतव्य, oldvalue, टिप्पणी परिवर्तन);
	 परिणाम वापसी;
 }

 / * TODO
  * एक और asm fxn है जो थोड़ी देर के पाश में fxn ऊपर डालता है लिखने के लिए और कोशिश कर रहा है जब तक यह * / सफल रहते हैं

 int मुख्य () {
	 int एक = 5, ख = 6;
	 int * ग = (int *) malloc (sizeof (int));
	 * ग = 6;
	 * / Int ग = 6; / *
	 printf ("% d \ n", कैस (ग, ख ख));
	 printf ("% d \ n", कैस (ग, ख, एक));
	 printf ("% d \ n" ", कैस (ग,,) एक);
	 printf ("% d \ n", कैस (ग, ख ख));
	 * ग = 6;
	 / * ग = 5; * /
	 printf ("* का बदल रहा है मूल्य ग% s \ n", * ग);
	 printf ("% d \ n", कैस (ग, ख ख));
	 printf ("% d \ n", कैस (ग, ख, एक));
	 printf ("% d \ n" ", कैस (ग,,) एक);
	 printf ("% d \ n", कैस (ग, ए, बी));
	 printf ("% d \ n", कैस (ग, ख, एक));
	 0 वापसी;
 }

स्वरूपण नोट - wp वाक्यविन्यास हाइलाइटर की तरह लगता है जोड़ने का है अंत में, कि उपेक्षा.

GCD

 # शामिल 
 int gcd (int एक, int ख) {
     int के परिणाम;
     / * कंप्यूट महानतम यूक्लिड एल्गोरिथ्म का उपयोग करते हुए आम भाजक / *
     __asm__ __ volatile__ ("movl 1%,% EAX;"
                           "Movl% 2% EBX;"
                           "जारी: cmpl $ 0% EBX;"
                           जेई किया;
                           "Xorl% edx,% edx;"
                           "Idivl% EBX;"
                           "Movl% EBX,% EAX;"
                           "Movl% edx,% EBX;"
                           Jmp जारी;
                           "ठीक है: movl% EAX, 0%," "= छ" (परिणाम): "जी" (एक), "जी" (ख)
     );

     परिणाम वापसी;
 }

 int मुख्य () {
     प्रथम, द्वितीय लिए int;
     printf ("दो integers दर्ज करें:");
     scanf ("% d घ" और पहली, दूसरी और);

     printf ("% और% d d की GCD% d \ n" ", पहली, दूसरी, gcd (प्रथम, द्वितीय));

     0 वापसी;
 }

गहरे लाल रंग का एक हैश बनाने liners के

20 अगस्त, 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

रहस्य का कुछ को मार मुझे खुलासा है कि raw_text की तरह लग रहा है

 

, यह सही पेपैल भुगतान रसीद से काट दिया गया है.

रेखा से ऊपर अगर भागों में टूट बेहतर पढ़ता है:

  विभाजन unescaped_array = CGI.unescape (raw_text). ('और')
   unescaped_array = unescaped_array.collect {| x | ख = x.split ("="}); b.push (शून्य) b.size == 1 अगर;
   flattened_array = unescaped_array.flatten
   हैश = हैश [* flattened_array,] 

आईआरबी में अलग अलग चरणों:

  विभाजन 009:0> unescaped_array है = CGI.unescape (raw_text) ('और'): (मुख्य) IRB.    

 => ["सफलता", "mc_gross 10.00 =", "protection_eligibility = अयोग्य," payer_id = U7PPJJ4TSJ47E "," कर 0.00 = "," payment_date = 09:45:30 10 जुलाई, 2009 पीडीटी "," payment_status = लंबित "]                                                                         

 (मुख्य) IRB: 013:0> unescaped_array = unescaped_array.map {| x | ख = x.split ("="}); b.push (शून्य) b.size == 1 अगर;  

 => [["सफलता" शून्य, "mc_gross", "10.00"] ["protection_eligibility", "अयोग्य"] ["payer_id", "U7PPJJ4TSJ47E"] ["कर", "0.00"] ["payment_date", "09:45:30 10 जुलाई, 2009 पीडीटी"] ["payment_status", "लंबित"]]                               

 (मुख्य) IRB: 014:0> flattened_array = unescaped_array.flatten     

 => ["सफलता" शून्य, "mc_gross", 10.00 "," protection_eligibility "," अयोग्य "," payer_id "," U7PPJJ4TSJ47E "," कर "," 0.00 "," payment_date "," 09:45: 30 पीडीटी 10 जुलाई, 2009 "," payment_status "," लंबित "]
 (मुख्य) IRB: 015:0>
 हैश = हैश [* flattened_array,]
 => {"कर" => "0.00", "payment_status" => "लंबित", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10.00", "सफलता" => शून्य, "payment_date = > "09:45:30 10 जुलाई, 2009 पीडीटी", "protection_eligibility" => "अयोग्य"} 

Btw, * माणिक में सूचक ऑपरेटर कहा जाता है

जोड़े की सरणी 'से हैश बनाने के लिए एक और रास्ता इंजेक्षन उपयोग करने के लिए है:

  हैश = [1,2 [], [3,4] इंजेक्षन ({}). {| परिणाम, तत्व | परिणाम [element.first] = परिणाम [element.last]; परिणाम} 

वहाँ एक और तरीका है :) एक पाश लिखें, कि मैं पाठकों के लिए एक व्यायाम के रूप में छोड़ दूँगा!

यहाँ एक बिट arrays से हैश बनाने के असंबंधित उपयोग के मामले है:

  (मुख्य) IRB: 005:0> [1,2,3,4,7,9] group_by {| x | x 5 <?  : कम :: अधिक}

 => {: कम => [1, 2, 3, 4]: बड़ा => [7, 9]} 

आप अधिक बातें करते हैं, मूल रूप से ब्लॉक के परिणाम के रूप में प्रयोग किया जाता है जिसके परिणामस्वरूप हैश में उस तत्व के लिए कुंजी हो सकता है.

जीमेल मठ, और msmtp तय

17 अगस्त, 2009 के द्वारा प्रशांत · टिप्पणियाँ
: के तहत दायर की प्रौद्योगिकी

यदि आप मठ और एसएमटीपी जीमेल का उपयोग करने के लिए उपयोग करें. यहाँ एक खबर (खराब) है. गूगल पर शांत लोग फिर से प्रमाणपत्र बदल दिया. ओह, आप से पूछना था - यह कैसे जानते हो? सरल मठ बुरा प्रमाण पत्र के बारे में शिकायत जब msmpt, कुख्यात उपयोग करने की कोशिश कर रहा शुरू कर दिया 'msmtp: टीएलएस प्रमाणपत्र सत्यापन विफल:. प्रमाण पत्र एक ज्ञात का जारीकर्ता नहीं मिला है' मुझे स्क्रीन पर बधाई दी.

पार करने के लिए की पुष्टि -
बस के बाद चलाने के

$ 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

सौभाग्य से तय सरल है, यहाँ है कि आप क्या debian पर क्या करने की जरूरत

# 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

Yaml conf फ़ाइलों में मर्ज हैश

31 जुलाई, 2009 के द्वारा प्रशांत · टिप्पणियाँ
: के तहत दायर की प्रौद्योगिकी

YAML विन्यास फाइल लिखने के लिए काफी आसान है. प्राथमिक लाभ यह है कि, यह पाठ फ़ाइल की तरह पढ़ता है. वास्तव में अच्छी तरह से काम करता है अगर आपके config फाइल फ्लैट (कोई पदानुक्रम) और कोई repetitions के.
यदि repetitions के अपने विन्यास फाइल है तो यह समझ में आता है उन तत्वों को अलग करने और उन्हें पुनः प्रयोग. यह मैं क्या मतलब है - हम कहते हैं कि आप अपने config फाइल इस तरह दिखता है:

  विकास:
   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 / bin / अजगर वातावरण
 pprint पीपी के रूप में आयात pprint से
 # Debian में अजगर yaml स्थापित करने की आवश्यकता है
 yaml आयात लोड, load_all के डंप से
 हैश = लोड (खुले ('/ tmp / test.yml के'))
 पीपी (हैश 'विकास']) 


$ cat readyml.rb

  # / Usr / bin / वातावरण माणिक
 'पीपी' की आवश्यकता है
 हैश = :: लोड () File.open ('/ tmp / test.yml पढ़ें) YAML
 पीपी हैश ['विकास'] 

यहाँ रूबी संस्करण के लिए एक आसान एक लाइनर
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' या आप आईआरबी या अजगर कंसोल में एक ही कोशिश कर सकते हैं.

ध्यान दें कि उपरोक्त कोड स्निपेट में, सब कुछ अन्य की तुलना में उत्पादन विकास और उत्पादन के भाग में एक ही स्थान है. यह है, जहां 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"
$

महान, यह (टीएम) काम करता है!.
बेशक हम जादू का एक बिट के लिए कुछ स्पष्टता कारोबार किया. यहाँ एक छोटा सा विवरण है: और, * और << और जो लंगर टैग नोड पहचानकर्ता के रूप में समझा जा सकता है, * नोड संदर्भ और << है: हैश मर्ज के लिए खड़ा है.

अधिक जानकारी के लिए या तो देखो 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 या कुछ में खुदाई से conf फ़ाइल restucture. लेकिन है कि आपकी कॉल वैसे भी है.

खोल पुनर्निर्देशन का एक बिट

यहाँ है कि कैसे हम सामान्य रूप से खोल पुनर्निर्देशन
$ ./pgm.sh args >out.txt 2>err.txt
मैं यह एक बिट को संशोधित करना चाहता था, और के रूप में चलाने
$ ./pgm.sh args
आवश्यकता है कि उत्पादन और त्रुटि कुछ pgm.sh अंदर args पर आधारित गणना फ़ाइल नाम के लिए जाना चाहिए के साथ. एक निदर्शी मामला है जब तारीख args का हिस्सा है हो सकता है. तो आप stdout / निर्देशिका / / pgm_out_YYYYMMDD.txt कहना चाहते करने के लिए जाना होगा 1

पुनः निर्देशित कर के मानक तरीका के साथ समस्या N>file.txt यानी, file.txt के लिए फ़ाइल विवरणक एन जोड़ है, कि यह केवल नव काँटेदार प्रक्रिया के लिए और नहीं वर्तमान प्रक्रिया के लिए काम करता है.
इसलिए
$ echo hi 1>out.txt ; echo hii हाय out.txt के लिए भेज लेकिन stdout में नमूना मुद्रित होगा. 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 के रूप में नमूना के रूप में अच्छी तरह से अनुप्रेषित करेगा

इसी तरह के रूप में के रूप में अच्छी तरह से 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` लेकिन विचार करने के लिए ही प्रोग्राम में कुछ तर्क पर आधारित इस फ़ाइल नाम उत्पन्न है.
1 2 1 में> out.txt निरर्थक है लेकिन यहां यह स्पष्ट है कि हम 1 fd पुनः निर्देशित कर रहे हैं

या पैमाने पर करने के लिए पैमाने पर नहीं

11 जनवरी, 2009 के द्वारा प्रशांत · टिप्पणियाँ
: के तहत दायर की प्रौद्योगिकी

जबकि क्षैतिज विभाजन डेटाबेस के बारे में बात कर , आतंक विरोधी प्रसिद्धि की DHH पता चलता है कि स्केलिंग सामान प्रतीक्षा करने के लिए, निश्चित रूप से कहना है आपके व्यापार की जरूरत है यह आवश्यकता होती है जब तक प्रतीक्षा कर सकते हैं. उनका लेख निश्चित रूप से समझ में आता है के लिए छोटे setups startups के कहना. कहने के लिए नहीं है कि startups में आप डेमो प्रोग्राम लिखने पर दिया है कि वहाँ केवल आप की सेवा पर ध्यान केंद्रित करना चाहिए एक दिन में 24 घंटे हैं के बारे में कैसे अपने आवेदन 13,142 मिलियन का भार संभाल लेंगे चिंता पर अपनी नींद खोने से अधिक पूरा करने के रास्ते में 1000 उपयोगकर्ताओं का कहना है उपयोगकर्ताओं को. यदि आप उन कई प्रयोक्ताओं के लिए आप पता चल जाएगा कि कैसे पैमाने पर करने के लिए. के लिए startups के scalability के एक अच्छा समस्या को हल करने के लिए, लेकिन एक बहुत ही अच्छा है समस्या है, मेरा मतलब है किसी भी startup करने के लिए इस समस्या में चलाने के लिए प्यार होता!

अन्य संबंधित लेख में जेरेमी Zawodny लिखते आप श्री मूर पर निर्भर नहीं है अगर आप, scalability समस्या है चाहिए.

चूंकि इन लेख का उल्लेख मूर के नियम लेकिन मैं मदद नहीं लिखना है कि मूर के नियम एक कंप्यूटर विज्ञान में सबसे सामान्यीकृत कानून होना चाहिए कर सकते हैं. उसके ट्रांजिस्टर घनत्व बारे में मूल भविष्यवाणी से, अब इस कानून में उद्धृत है कहीं भी तुम घातीय वृद्धि के पार चलो.