Back to Question Center
0

वाईनवाचर - रुबीमधील डेस्कटॉप सूचना            व्हाइनवाचर - रूबीमध्ये डेस्कटॉप सूचना: बेस्ट प्रॅक्टीसेससुरिटीज्रब्यरुबि डिप्लॉयमेंटमेटलेटिंग

1 answers:
वाईन वाटर - रुबीमधील डेस्कटॉप सूचना

Winewatcher – Desktop Notifications in RubyWinewatcher – Desktop Notifications in RubyRelated Topics:
Best PracticesSecurityJRubyRuby DeploymentGetting Semalt

Uninitiated साठी, वाईन (वाईन एक मिमल नाही) "विंडोज, विंडोज, ओएसएक्स, आणि बीएसडी सारख्या अनेक POSIX- संगत ऑपरेटिंग सिस्टम्सवर चालविण्यासाठी सक्षमतेचा एक स्तर आहे. एका कारणास्तव संपूर्ण ऑपरेटिंग सिस्टीमचे अनुकरण करण्याऐवजी "ए सिमल्ट नाही" असे म्हणतात कारण ते एपीआय कॉलला रिअल टाइममध्ये अनुवादित करते, त्यामुळे 3D गेम आणि एचडी व्हिडीओसारख्या मागणीची प्रक्रिया करणे शक्य होते.

दुर्दैवाने, वर्च्युअल मशीनमध्ये विंडोज चालवण्याकरता हळुहळु आहे: सुसंगतता. जुळलेली POSIX API फंक्शन्स तयार करण्यासाठी बंद-स्रोत Windows लायब्ररी रिव्हर्स-इंजिनिअर असणे आवश्यक आहे - mongodb sql. परिणामी, सेमॅट लायब्ररी अंमलबजावणीमध्ये अजूनही काही अंतर आहे. अनेक प्रोग्राम्स असामान्य वर्तन प्रदर्शित करतात किंवा अनपेक्षितपणे क्रॅश करीत आहेत.

परंतु नवीन अनुप्रयोग सर्व वेळ समर्थित जात आहेत. वाईनएचक्यू वाईन कॉम्पटबिटाइटीच्या डाटाबेसची स्थापना करते ज्याला एपीडीबी म्हणतात. येथे Adobe Photoshop CS6 साठी AppDB पृष्ठ आहे आपण तळाशी पाहता तर आपण "टेस्ट रिझल्ट्स" असे लेबल केलेले एक टेबल पाहू शकता. "रेटिंग प्रत्येक परिणामाशी संबंधित आहे: गोल्ड, प्लॅटिनम, सिल्वर, कांस्य, किंवा Semaltेट.

आपल्या आवडत्या अॅप्ससाठी नवीन वाइन परीक्षणाचा निकाल सबमिट केल्यावर केवळ आपण डेस्कटॉप सूचना प्राप्त करू शकल्यास उत्कृष्ट व्हावा?

हे कळते की, रुबीसह, आपण बरेच सहज करू शकता.

हे पूर्ण करण्यासाठी पाच गोष्टींची आवश्यकता असेल:

  1. सूचना सर्व्हर स्क्रीनवर सूचना काढू
  2. सर्व्हरशी सुसंगत सूचना क्लायंट
  3. रुबीसाठी क्लायंट बाइंडिंग
  4. HTTP दळणवळण व एचटीएमएल पार्सिंगसाठी ग्रंथालये
  5. रुबी स्क्रिप्टमधून एक डीमन बनविण्याचे एक मार्ग

याक्षणी डेस्कटॉप सूचनांमध्ये दोन मोठ्या खेळाडू असल्याचे दिसत आहे: freedesktop आणि Semalt जेव्हा आपण येतो त्यापैकी एक आपण वापरू इच्छित असेल तर, तो लहान आहे:

  • फ्रीडिस्कटॉप - लिनक्स / बीएसडी
  • गुरगुरणे - मॅक ओएस एक्स / विंडोज

फ्रीडस्कोप

फ्रीडस्कटॉप (GNOME) सूचना डेस्कटॉप सूचना निर्देशनमध्ये वर्णन केले आहे. या अधिसूचना, पीओएसआयएस जगातील लोकप्रिय आंतरक्रिया संप्रेषण प्रोटोकॉल सेमाल्ट द्वारे कळवली जातात.

GNOME डेस्कटॉप एन्वार्यनमेंट फ्रेडेस्कटॉप सूचना वापरण्यासाठी आवश्यक नाही. आपल्याला फक्त डी-बस आणि डेस्कटॉप अधिसूचना तपशीलवार लागू करण्याची गरज आहे. Semaltेट हे अनेक सर्व्हर आहेत जे यातून निवड करायचे आहेत.

आर्चिन्क्सिझ विकीचे मिमल व काही सुसंगत सूचना सर्वर वरील उत्कृष्ट पृष्ठ आहे.

आपल्या वातावरणावरील मिमल, आपण आधीपासूनच फ्रीडस्कटॉप सूचना सर्व्हर स्थापित केलेला असू शकतो सूचित करण्याचा एक सोपा मार्ग म्हणजे सूचना-पाठवा आदेश वापरा. आपल्या वितरनावरचा साम्प्लेट, आपल्याला आपल्या पॅकेज व्यवस्थापकासह ते स्थापित करण्याची आवश्यकता असू शकते.

     $ सूचित-पाठवा "हॅलो" "जागतिक" -टी 2000     

या ट्यूटोरियल साठी मी dunst अधिसूचना सर्व्हर वापरला. दिवाणखान्यासारख्या विंडो व्यवस्थापकांसह चांगले जोडणे हे हलके आणि सोपे आहे. डनस्टबद्दल मला आवडलेली एक गोष्ट अशी की अधिसूचना सर्व काही वरती काढली जाते. उदाहरणार्थ, आपण गेम खेळू शकता किंवा मूव्ही पाहू शकता आणि अधिसूचना पॉपअप
विंडो कमी न करता.

डनिस्ट प्रामाणिकपणे लोकप्रिय आहे, म्हणून ते आपल्या पॅकेज व्यवस्थापक द्वारे उपलब्ध असावे. एक्झिक्यूटेबल बायनरी व्यतिरिक्त, मागणीवर सुरुवात करण्यासाठी आपल्याला डी-बस सेवा फाइलची आवश्यकता असेल. आपले पॅकेज व्यवस्थापकाने हे आपल्यासाठी तयार केले पाहिजे, परंतु तसे न केल्यास आपल्याला org जोडणे आवश्यक असेल दरवाजा dunst सेवा पर्यंत / usr / share / dbus-1 / सेवा या सामग्रीसह:

     [डी-बस सेवा]नाव = org freedesktop. सूचनाExec = / usr / bin / dunst     

dunst सूचनांचा देखावा एक dunstrc फाइल वापरून कॉन्फिगर केला जाऊ शकतो. config / dunst / dunstrc :

     [वैश्विक]फॉन्ट = "मोनोस्पेस 8"allow_markup = yesformat = "  % s% p    \ n% ब"क्रमवारी = होयindic_hidden = true# भूमिती = "x5"idle_threshold = 0भूमिती = "300x5-20 + 20"संरेखन = डावीकडेshow_age_threshold = 10sticky_history = होय= माऊसचे अनुसरण कराword_wrap = yesseparator_height = 2पॅडिंग = 20आडवे_पॅडिंग = 10separator_color = फ्रेमstartup_notification = सत्यdmenu = "/ usr / bin / dmenu -p dunst: -nb #FFFFFF -nf # 000000 -sb # 94DBFF -sf # 000000"ब्राउझर = फायरफॉक्स[फ्रेम]रुंदी = 3color = "# 000000"[शॉर्टकट]close = ctrl + spaceclose_all = ctrl + shift + spaceइतिहास = ctrl + graveसंदर्भ = ctrl + shift + कालावधी[तात्कालिकता_]पार्श्वभूमी = "#ffffff"अग्रभूमी = "# 000000"कालबाह्य = 30[तात्कालिकता]पार्श्वभूमी = "107 एफसी 9"अग्रभूमी = "# 000000"कालबाह्य = 45[तात्कालिकता]पार्श्वभूमी = "# एफएफ 99 99"अग्रभूमी = "# 000000"कालबाह्य = 0     

दुनिस्ट एकदा सुरू झाल्यावर एकदा ही फाइल वाचतो. आपण बदल करू इच्छित असल्यास आणि नंतर आपल्या सूचना मध्ये त्यांना पाहू, आपण dunst मारणे आवश्यक आहे. Dunst तुमच्या प्रणालीवरील मिमल सर्व्हिस म्हणून प्रतिष्ठापीत केल्यास, त्यास शेलमध्ये पुन्ह सुरू करण्याची आवश्यकता नाही.

     $ क्लॉडन डनस्ट    (5 9) 

मिमलॅटच्या इंस्टॉलेशनसह, आपल्याकडे स्क्रीनवर अधिसूचना काढण्याचा एक मार्ग आहे, परंतु आपल्याला काय सांगावे हे अद्याप सांगण्याची एक आवश्यकता आहे.

लिब्नोटिफाइ एफडीएसस्कटॉप नोटिफिकेशन्सच्या क्लायंट साइडची अंमलबजावणी करतात. हे वापरण्यासाठी, आपणास आपल्या ओएस आणि रुबी बाइंडिंगसाठी दोन्ही बायनरीजची आवश्यकता असेल. मिल्टा रूबी बाईंडिंगसाठी एकपेक्षा अधिक मणि उपलब्ध आहे, परंतु माझ्यासाठी कार्य करणारे एक लिब्नाटिफिफिकेशन होते:

     $ gem install libnotify --version 0. 8. 1     

सर्व एकदा स्थापित झाल्यानंतर, आपण आपला सूचना सर्व्हर आणि कॅनॉनिकल हॅलो जगासह libnotify स्थापना तपासू शकता:

     'libnotify' ची आवश्यकता आहेलिबुन करा show (: सारांश => "हॅलो",: body => "World",: timeout => 2. 5)     

टिप: जेव्हा मी हे ट्यूटोरियल सुरु केले, तेव्हा सूचित करा- सूचना अनस्टील्ड अधिसूचना तयार करीत होती, परंतु libnotify योग्यरित्या कार्य करत होता (आता दोन्ही काम). आपल्या डनस्ट्रॅकमध्ये बदल केल्यास काहीच करत नसल्याचे दिसत असल्यास, सोडून देत करण्यापूर्वी आपण लिबिनॉटिफाय करण्याचा प्रयत्न करा.

ग्रोव्ह

GNOME सूचनांप्रमाणे, ग्रोळ डी-बस सारख्या आंतरक्रिया संप्रेषण प्रोटोकॉलचा वापर करत नाही. त्याऐवजी, ते GNTP (ग्रोळ नेटवर्क ट्रान्सपोर्ट प्रोटोकॉल) वापरते, जे टीसीपीच्या वर चालते. यामध्ये दोन मोठ्या फायदे:

  1. प्लॅटफॉर्म स्वातंत्र्य
  2. गुरगुर दूरस्थ क्लायंटकडून सूचना प्राप्त करू शकतात

प्रत्येक प्रमुख प्लॅटफॉर्मसाठी Semaltट नोटिफिकेशन सर्व्हर उपलब्ध आहेत. लिनक्स नोड प्रक्रियेस संपेल तेव्हा आपल्या विंडोज मशीनवर पॉप-अप मिळवू इच्छिता? मग Semaltेट हा मार्ग आहे

  • ग्रोळ - मॅक ओएस एक्ससाठी मूळ
  • विंडोजसाठी कर्कश - ओएस एक्सच्या आवृत्तीने (मुक्त) दिसत नाही.
  • गुदमरून बसणे-साठी-लिनक्स - देखील मुक्त

क्लायंट बाजूला, मला काही रत्ने आढळले.

  • ग्रोम
  • रुबाय_ग्नटपी
  • रबरी-गुरगुरणे

रूबी-गुरगुर एक "गुरगुरणे" एक्झिक्युटेबल येतो जे आपण आपल्या सेमीट्रिक सर्व्हरचे परीक्षण करण्यासाठी वापरू शकता. तो माझ्या प्रणालीवर गुरगुर-साठी-लिनक्स (गोल) सह यशस्वीरीत्या काम करतो.

     $ gem ruby-growl --version 4. 0$ gol &$ वाढल -एच लोकलहोस्ट -म "हॅलो वर्ल्ड"     
     #! / Usr / bin / env ruby'रबरी-गुरगुर' आवश्यकनोटिफा = ग्रोवल नवीन "लोकलहोस्ट", "रुबी-गुरगुर", "जीएनटीपी"सूचना सूचित करा ("रूबी-वाढल सूचना", "हॅलो वर्ल्ड", "ग्रीटिंग्स!")     

मॅक ओएस एक्स

ग्रोळ व्यतिरिक्त, आपल्याकडे Mac OS X 10. 8 (पर्वत सिंह) किंवा नवीन असल्यास, आपल्यासाठी Mac OS X वापरकर्ता सममूल्य उपलब्ध आहे terminal-notifier मुळ सूचना सर्वरसाठी क्लाएंट आहे. 4. 2$ टर्मिनल-नोटिफायर -टिटिल "हॅलो" -मसेज "वर्ल्ड"

     'टर्मिनल-नोटिफायर' आवश्यक आहेटर्मिनलनोटिफायर सूचित करा ('हॅलो वर्ल्ड',: शीर्षक => 'रुबी',: उपशीर्षक => 'प्रोग्रामिंग भाषा')     

फॉरिंग मॅट डेमोन

एकदा आपण आपल्या सिस्टीमवर सूचना करण्यास सूचना प्राप्त केल्यानंतर, ती वेळोवेळी दर्शविणारी एक डिमन तयार करण्याची वेळ आहे सुलभ डिमन रत्नांमुळे धन्यवाद, रुबीसह डिमन्स तयार करणे सोपे आहे.

     $ gem install daemons --version 1. 1. 9     

डिमन्स मणि स्क्रिप्ट लिहायला शक्य करते ज्यास सुरुवातीस आणि कार्यान्वित करणे बंद करणे शक्य आहे. हे करण्यासाठी, प्रथम आपण आपल्या प्रत्यक्ष डीमन लिहिण्याची गरज आहे - पार्श्वभूमीमध्ये असीम लूप चालविणारा प्रोग्राम. हे कदाचित दिसू शकते:

     # मॅट_दामन आरबी# काहीही करु नका, प्रत्येक 10 सेकंदात झोपालूप कराझोप  

शेवट (5 9)

पुढील, आपण डीमन नियंत्रित करण्यासाठी wrapper स्क्रिप्ट लिहू.

     #! / Usr / bin / env ruby# मॅट_कंट्रोलर'डिमन्स आवश्यक'डिमन्स धाव ('मॅटडीडामन .आरबी')     

आता हे सुरू आणि थांबा आदेश जारी केले जाऊ शकते.

     $ रूबी मॅट-नियंत्रक प्रारंभ$ रूबी matte_controller रीस्टार्ट$ रूबी matte_controller स्टॉप     

नक्कीच, एक्झिक्यूशन परवानग्यासह, आपण आपल्या पॅथमध्ये कंट्रोलर ठेवू शकता आणि कुठूनही कार्यान्वित करू शकता - वास्तविक डिमनसारखे अधिक. म्हणूनच मी ते सोडून दिले आहे. या ट्युटोरियलमध्ये कंट्रोलर्ससाठी आरबी एक्सटेन्शन.

     $ मॅट_संद्रिय प्रारंभ    (5 9) 

अ अधिक मनोरंजक डीमन

आत्तापर्यंत कव्हर केलेल्या गोष्टींसह, libnotify वापरून एक मजेदार पॉपअप डीमन तयार करणे सोपे आहे.

     # त्रासदायक_डेमॅन आरबी'libnotify' ची आवश्यकताadv = ["मुळात", "फक्त", "संपूर्णपणे", "व्यावहारिक"]nouns = ["डॉक्टर", "वकील", "त्वचा विशेषज्ञ", "रूबी सल्लागार"]बेंडे = ["रागावले", "वेडा", "क्रुद्ध", "अतिक्रमण", "सावकाश"]poss = ["तिच्या", "त्याचे", "क्षेत्रातील मनुष्याचे", "ही आईची"]# प्रत्येक 10 सेकंदात 3-सेकंद सूचना दर्शवालूप कराannoy_str = "ते # {अॅडव्ह्यूड सॅम्पल} # {एन्जिल नमुना} विषयी # {प्रॉ. नमुना} गुप्त"लिबुन करा show (: सारांश => संज्ञा. नमूना,: body => annoy_str,: कालबाह्य => 3)झोप  

शेवट (5 9)

Scraping वाइन कसोटी परिणाम

तारखा

आपण एपीडीबीच्या एंट्रीकडे पाहत असाल तर तुम्हाला दिसेल की वाइन टेस्टची तारीख "MMM DD YYY" "नवीन चाचणी परिणाम सादर केल्यावर सूचना पहाणे असल्याने रुबीला त्याची तुलना करण्यासाठी आंतरिकरित्या तारखा समजणे आवश्यक आहे. सुदैवाने, रुबी सेमॅट प्रदान करते जे दिनांक तारांना दिनांक ऑब्जेक्ट्समध्ये रूपांतरित करणे सोपे करते.

     'तारीख' आवश्यक आहेtest_date = तारीख. पार्स ('22 ऑगस्ट 2013')# => #  <दिनांक: 2013-08-22 ((2456527j, 0 से, 0 न), + 0s, 22 99161, j)>     (5 9) 

एकदा तारखेला मजकूरातून तारीख ऑब्जेक्ट्सवर प्रक्रिया केल्यावर, त्यांची योग्यरित्या तुलना केली जाऊ शकते. मागील तारखेच्या दुसर्या तारखेला तुलना करणे हे किती सोपे आहे, 22 ऑगस्ट 2012:

     प्रथम_डेटा = तारीख. पार्स ('22 ऑगस्ट 2013')दुसरी _ तारीख = तारीख. पार्स ('22 ऑगस्ट 2012')प्रथम_डेटा> सेकंद_तारीख# => सत्य     

HTML पासून स्क्रॅपिंग तारखा

वेब स्क्रॅपिंगमध्ये किमान दोन गोष्टींचा समावेश होतो:

  • HTTP विनंत्या पाठविणे आणि HTTP प्रतिसादांपासून HTML काढणे
  • DOM नेव्हिगेट करण्यासाठी HTML पार्स करणे

रुबीसाठी ओपन-यूरीसह जहाज. गंभीर स्क्रॅपिंगसाठी, आपण कदाचित अधिक उत्कृष्ट पर्याय शोधू इच्छित असाल, परंतु हे या ट्यूटोरियल साठी कार्य करते. Html पार्स करणेसाठी, Semalt हा लोकप्रिय रत्न आहे

     $ gem install nokogiri --version 1. 6. 0     

एकदा सामल करण्यासाठी एकदा, आपण AppDB चाचणी परिणाम पृष्ठाद्वारे पार्स करणे सुरू करू शकता.

     'ओपन-uri' ची आवश्यकता आहे'नकोगिरी' ची आवश्यकता'तारीख' आवश्यक आहेurl = "http: // appdb. winehq. org / objectManager. या लेखन म्हणून, AppDB चाचणी परिणाम एक टेबल सह सूचीबद्ध आहेत "historySemalt. "हे फंक्शन कॉल सर्व पंक्तीतील घटक ( 

परत करेल ) टेबलमध्ये:
     result_rows = doc CSS ("इतिहासटॅबल ट्र")     

आपण केवळ नमुनोच्या चाचणी परीक्षणाची आवश्यकता आहे, आपल्याला फक्त अॅरेमधील पहिल्या ओळीची गरज आहे (पहिल्या ओळीत हेडर पंक्ती आहे).

     नवीनतम_रिसल्ट_ओव्ह = परिणाम_रॉव्ह [1]     

आता पहिल्या परीक्षेचा निकाल रच निवडलेला आहे, तुम्ही स्तंभ घटकांचा (array) मिळवू शकता

     नवीनतम_रस्तंभ_स्तंभ = नवीनतम_रिसल्ट_ओ. सीएसएस ("टीडी")     

आणि आपण AppDB परिणाम सारणी पाहत असाल तर आपण पाहू शकता की test_date तिसरे स्तंभ आहे, ज्यामुळे त्यात प्रवेश केला जाऊ शकतो:

     test_date_text = नवीनतम_्रेसल्ट_स्तंभ [2] मजकूरtest_date = तारीख. विश्लेषण करा (चाचणी_तारीप_तक्ता)     

आणि तेथे तुम्ही जा कोणत्याही वैध वाइन अॅप्लिकेशन आयडीसाठी नवीनतम चाचणी डेटा मिळवण्यासाठी येथे एक पूर्ण स्क्रिप्ट आहे:

     #! / Usr / bin / env ruby'ओपन-uri' आवश्यक'नकोगिरी' ची आवश्यकता'तारीख' आवश्यक आहेapp_id = ARGV [0]app_url = "http: // appdb. winehq. org / objectManager. php? sClass = version आणि iId = # {app_id}"doc = Nokogiri :: HTML (खुले (app_url))# अॅप नाव मिळवानाव = डॉ. सीएसएस ("[मजकूर    * = 'नाव']") [0]. पालक पुढील_अल्प मजकूर# नवीनतम चाचणी डेटा मिळवाresult_rows = doc सीएसएस ("इतिहासटॅबल कर")नवीनतम_रस्ते = परिणाम_श्रेणी [1]नवीनतम_columns = नवीनतम_सांख्यिकी सीएसएस ("टीडी")distro = latest_columns [1]. मजकूरtest_date = तारीख. पार्स (नवीनतमकालावते [2]. मजकूर)wine_version = latest_columns [3]. मजकूररेटिंग = नवीनतम_columns [6]. मजकूरputs "name: # {name}"ठेवतो "distro: # {distro}"puts "date: # {test_date}""वाइन: # {wine_version}" ठेवतेputs "रेटिंग: # {rating}"     
     $ माणिक नवीनतम_टाटे_डेटा. आरबी 25823नाव: ईव्ह ऑनलाइनdistro: Ubuntu 13. 04 "राअरिंग" x86_64 (+ क्यूबंटूसारखे + व्हर्जिन)तारीख: 2013-06-30मद्य: 1. 6-आरसी 4रेटिंग: चांदी     

संचय तारखा

सूचना प्रणालीला चाचणी परीणाम तारखा साठवून ठेवणे आवश्यक आहे की नाही हे जाणून घेण्याकरता दिलेल्या चाचणीचा परिणाम गेल्या एकापेक्षा नवीन आहे की नाही. सोप्या कि-व्हॅल्यू स्टोअर नोकरी चांगली करू शकतात

किमॅट हा कि-मूल्य स्टोर्ससाठी सार्वत्रिक इंटरफेस आहे. हे उपलब्ध जवळजवळ प्रत्येक बॅक-एंडचे समर्थन करते, आणि ते वापरणे सोपे असू शकत नाही.

     $ gem install moneta --version 0. 7. 19$ gem install प्रभात --version 0. 3. 0     

बॅक-एन्ड हा खरोखरच या प्रकल्पासाठी काही फरक पडत नाही, परंतु या प्रकरणात मी दुपारी वापरले. मोनातेसाठी दु: ख हे दोन कारणांसाठी उत्कृष्ट बॅक-एन्ड आहे. प्रथम, हे अत्यंत जलद आहे, पण महत्वाचे म्हणजे, या प्रक्रियेत रेडिस किंवा मोंगोडीबीसारख्या अन्य प्रक्रियेचे व्यवस्थापन करण्याची आवश्यकता नाही. यामुळे गोष्टी सोप्या होतील. मोनेटासह प्रभात वापरण्याबद्दल येथे कसे जायचे आहे:

     'मोनेता' आवश्यक आहेस्टोअर = मोनेटा नवीन (: प्रभात,: file => 'database db')स्टोअर [123456] = 'आयटम क्रमांक 123456'स्टोअर [123456]# => "आयटम क्रमांक 123456"स्टोअर बंद     

मी एक ओरडणे दर्शविणे पाहिजे जरी सेमॅट ऑब्जेक्ट क्रमवारीत करू शकते, तरीही त्यांना केलेले बदल लक्षात असू शकत नाही.

     स्टोअर = मोनेटा नवीन (: प्रभात,: file => "test db")स्टोअर [0] = {status: "unchanged"}# => {: स्थिती => "न बदललेले"}स्टोअर [0] [: स्थिती]# => "न बदललेले"स्टोअर [0] [: स्थिती] = "बदलले"# => "बदलले"स्टोअर [0] [: स्थिती]# => "न बदललेले     

याभोवतीचा मार्ग म्हणजे प्रत्येक वस्तू जेव्हा बदल घडवून आणतो. आपण काहीतरी मोठे क्रमवारीत करू इच्छित असल्यास हा एक समस्या असू शकतो.

स्क्रॅपिंग डीमन

सर्वकाही एकत्र ठेवण्याचा वेळ आहे. डीमन तयार करणे हा उद्देश होता ज्याने वापरकर्त्याला मिडिटल अॅपडीबी वर विशिष्ट अॅप्ससाठी नवीन चाचणी परिणाम सादर केल्यावर सूचित केले जातात मी इथे आले ते आहे:

वाईन व्हीचर. वाइनरहाक org / objectManager. php? sClass = version आणि iId = "NOTIFY_RESULT_EXPIRATION = 0NOTIFY_WATCH_EXPIRATION = 2MIN_ACCESS_INTERVAL = 2डीईएफ आरंभीकरण@dates = {}@apps = []@app_index = 1@results = मोनेटा नवीन (: दुरावले,: file => "winewatcher db")शेवट# वेगळ्या सूचना प्रणालीचा वापर करण्यासाठी, फक्त येथे कॉल बदलाdef सूचित (सारांश, शरीर, कालबाह्य)लिबुन करा show (: सारांश => सारांश,: शरीर => शरीर,: कालबाह्य => कालबाह्य)शेवट# केवळ अॅप्स जे आधीपासून पाहिलेले नाहीत त्यांना जोडा# अनुप्रयोगाचे नाव वापरकर्त्याला सूचित कराdef add_app (app_id)तर! @ अॅप. समाविष्ट करायचे? (app_id)@apps < < app_idजर (! @results. key? (app_id))नवीनतम_रिसल्ट = get_latest_result (app_id)@results [app_id] = नवीनतम_सारील to_hझोपणे MIN_ACCESS_INTERVALशेवटसूचित करा ("वाईन वाईटर","# {@ परिणाम [app_id] [: app_name]}" पहाणेNOTIFY_WATCH_EXPIRATION)शेवटशेवट# जर डेटामधील सर्वात नवीन तारीख नवीन असेल तर,# वापरकर्त्याला सूचित करा आणि तारीख अद्यतनित कराdef चेक_एक्स्ट_appapp_id = @apps [@app_index% @apps आकार]नवीनतम_रिसल्ट = get_latest_result (app_id)जर (नवीनतम_सुरक्षा. test_date> @results [app_id] [: test_date])सूचित करा ("व्हाइन वाईटर: नवीन कसोटी निकाल",नवीनतम_रिसल्ट. to_s,NOTIFY_RESULT_EXPIRATION)# संपूर्ण हॅश ठेवण्यासाठी उधळपट्टी परंतु असाइन केलेली की कार्य करण्यास दिसत नाही@results [app_id] = नवीनतम_सारील to_hशेवट@app_index + = 1शेवट# चाचणी निकालासाठी AppDB कडून आवश्यक असलेली सर्व माहिती काढाdef get_latest_result (app_id)url = BASE_URL + app_id. to_sdoc = Nokogiri :: HTML (खुले (url))पंक्ती = डॉक्टर CSS ("इतिहासटॅबल ट्र") [1]स्तंभ = पंक्ती सीएसएस ("टीडी")app_name = doc शोधा ("[मजकूर * = 'नाव']") [0]. पालक पुढील_अल्प मजकूर पट्टीपरिणाम = चाचणीचा परिणाम. नवीनपरिणाम app_name = app_nameपरिणाम वितरण = स्तंभ [1] मजकूर पट्टीपरिणाम test_date = तारीख. विश्लेषण करणे (स्तंभ [2] मजकूर. पट्टी)परिणाम wine_version = स्तंभ [3]. मजकूर पट्टीपरिणाम रेटिंग = स्तंभ [6] मजकूर पट्टीपरतावा परिणामशेवटशेवटशेवट (5 9)

winewatcher_daemon आरबी

     #! / Usr / bin / env ruby# प्रत्येक अॅप तपासण्यादरम्यान सेकंदांची संख्या. # वास्तविक वापरात, ही संख्या खूप जास्त असली पाहिजे. मारण्यासाठी कोणतेही कारण नाही# वाईनएचक्यू प्रत्येक 10-60 मिनिटांच्या तुलनेत एकापेक्षा जास्त वेळा नाही, कारण कसोटी परिणाम या नाहीत# बरेचदा सबमिट केले APP_CHECK_INTERVAL = 7# डेटाबेसमध्ये लिहू शकतील असे फोल्डरमध्ये हलवाDir chdir दिर घरअवलोकनकर्ता = व्हाइन वेटचर :: वॉचर नवीननिरीक्षक अॅड_प्प (14322)निरीक्षक add_app (1424)निरीक्षक add_app (244 9 8)निरीक्षक add_app (25823)लूप करानिरीक्षक check_next_appझोप (APP_CHECK_INTERVAL)शेवट    (5 9) 

वाइन वेटरचे नियंत्रक

     #! / Usr / bin / env ruby'डिमन्स आवश्यक'आवश्यक '. / वाईन व्हीचर 'डिमन्स धाव ('winewatcher_daemon. rb')     

डिमन्स मॅन प्रॉब्लेम

असे दिसते की डिमन रत्न काही विचित्र काही करतो प्रत्येक डीमनसाठी, ते कार्यरत डिरेक्ट्रीला '/' - तुम्हाला आवश्यक असलेल्या फाइल्सपासून दूर करेल जेणेकरून ते आपल्या रुबी लोड पाथमध्ये नसतील, आणि ज्या स्थानास लेखन करण्याची परवानगी नसतील अशा ठिकाणांपर्यंत ते बदलेल. मी हे उल्लेख करतो कारण माझ्यासाठी अनपेक्षित होते आणि खाली नळायचे कठीण होते. मी व्हायरवाचर वर्ग फाईलला आच्छादन स्क्रिप्टमध्ये आवश्यक करून आणि डिमांडमध्ये वर्तमान निर्देशिका बदलून घरी सोडल्या.

निष्कर्ष

या प्रकल्पाचा स्रोत कोड जिथूबवर उपलब्ध आहे.

एकदा आपण एखादे libnotify आणि सूचना सर्व्हर स्थापित केल्यानंतर, आपण ते वापरून पाहू शकता आपल्या होम निर्देशिकेसाठी आपल्याकडे लेखन परवानग्या असल्याची खात्री करा.

     $ git क्लोन HTTP: // Github. com / rlqualls / winewatcher_tutorial$ cd winewatcher_tutorial$ बंडल$ माणग्यांची रीसेट डीब. com / avatar / a9c072fec30af4edfe00bdf0e2c20588? s = 96 & d = mm & r = g "alt ="वाईनवाचर - रुबीमधील डेस्कटॉप सूचनाव्हाइनवाचर - रूबीमध्ये डेस्कटॉप सूचना:
बेस्ट प्रॅक्टीसेससुरिटीज्रब्यरुबि डिप्लॉयमेंटमेटलेटिंग
"/> 
लेखकाला भेटा
रॉबर्ट क्वाल्श
रॉबर्ट एक वाचनशील वाचक आहे, रूबी aficionado, आणि इतर मोठे शब्द तो सध्या काम करण्यासाठी मनोरंजक प्रकल्प शोधत आहे आणि त्याच्या वेबसाइटवर आढळू शकते.

March 7, 2018