
BitTorrent के DHT का उपयोग करने वाले विकेंद्रीकृत फ़ीड। यह विचार Arvid और The_8472 के "DHT RSS feeds" से लिया गया है http://libtorrent.org/dht_rss.html
BitTorrent के DHT का उपयोग करके विकेंद्रीकृत फ़ीड। आइडिया Arvid और The_8472 "DHT RSS फ़ीड" से http://libtorrent.org/dht_rss.html
BitTorrent का DHT संभवतः इंटरनेट पर सबसे लचीले और सेंसरशिप-प्रतिरोधी नेटवर्कों में से एक है। PeerTweet इस नेटवर्क का उपयोग करके उपयोगकर्ताओं को ट्वीट प्रसारित करने की अनुमति देता है जो कोई भी सुन रहा है। जब आप PeerTweet शुरू करते हैं, तो यह एक हैश @33cwte8iwWn7uhtj9MKCs4q5Ax7B उत्पन्न करता है जो आपके Twitter उपयोगकर्ता नाम (जैसे @lmatteis) के समान है। अंतर यह है कि आपका पूरा नियंत्रण है कि क्या पोस्ट किया जा सकता है क्योंकि केवल आपके पास उस पते से जुड़ी निजी कुंजी है। इसके अलावा, DHT के कारण, आप जो पोस्ट करते हैं उसे कोई भी सरकार या संस्था नहीं रोक सकती।
एक बार जब आप अन्य PeerTweet पतों पर भरोसा करते हैं (और वे स्पैम नहीं हैं), तो आप उन्हें फ़ॉलो कर सकते हैं। यह आपके क्लाइंट को कॉन्फ़िगर करता है कि वह इस उपयोगकर्ता के ट्वीट्स को संग्रहीत करें और उन्हें समय-समय पर DHT पर प्रसारित करें ताकि उनकी फ़ीड जीवित रहे। खातों को फ़ॉलो करने का यह सहयोग DHT नेटवर्क में फ़ीड को जीवित रखने की अनुमति देता है। PeerTweet प्रोटोकॉल आपके कार्यों जैसे I just followed @919c.. या I just liked @9139.. और I just retweeted @5789.. भी प्रकाशित करता है। यह नए उपयोगकर्ताओं को उन पतों को खोजने की अनुमति देता है जिन पर वे भरोसा कर सकते हैं; यदि मैं उपयोगकर्ता @6749.. पर भरोसा करता हूँ और वे @9801.. को फ़ॉलो कर रहे हैं, तो शायद मैं @9801.. को स्पैम नहीं के रूप में चिह्नित कर सकता हूँ। अपने कार्यों के बारे में सार्वजनिक रूप से ट्वीट करने का यह विचार इस सोशल ग्राफ के भविष्य के क्रॉलिंग विश्लेषण के लिए शक्तिशाली संभावना भी देता है।
PeerTweet DHT RSS फ़ीड प्रस्ताव http://libtorrent.org/dht_rss.html द्वारा प्रदान की गई अधिकांश कार्यान्वयन दिशानिर्देशों का पालन करता है। हमने इसे वर्तमान BEP44 प्रस्ताव के ऊपर लागू किया है जो DHT नेटवर्क पर get() और put() कार्यक्षमता प्रदान करता है। इसका मतलब है कि, केवल DHT का उपयोग यह घोषित करने के लिए नहीं करना कि वर्तमान में कौन से टोरेंट डाउनलोड किए जा रहे हैं, बल्कि हम इसका उपयोग छोटी मात्रा में डेटा (लगभग 1000 बाइट्स) डालने और प्राप्त करने के लिए भी कर सकते हैं।
PeerTweet दो प्रकार की वस्तुओं के बीच अंतर करता है:
@lmattes हैंडल के समान)। फ़ीड हेड लगभग निम्नानुसार संरचित है:{
"d": <युग से लेकर हेड में संशोधन तक बीते मिनटों का अहस्ताक्षरित पूर्णांक>,
"next": <फ़ीड में अगले 4 आइटमों के 80 बाइट्स तक, सीधे 1,2,3 और 4 हॉप दूर। प्रत्येक 20 बाइट्स।>,
"n": <फ़ीड का utf8 नाम>,
"a": <आपके अवतार के रूप में प्रस्तुत करने के लिए छवि का utf8 http url>,
"i": <आपकी फ़ीड का utf8 विवरण>
}
{
"d": <युग से लेकर आइटम बनाए जाने तक बीते मिनटों का अहस्ताक्षरित पूर्णांक>,
"next": <फ़ीड में अगले 4 आइटमों के 80 बाइट्स तक, 1, 2, 4 और 8 हॉप दूर। प्रत्येक 20 बाइट्स।>,
"t": <आपके ट्वीट की utf8 सामग्री। 140 वर्णों तक>
}
सूची में अन्य वस्तुओं के लिए कई संकेतक होने का कारण समानांतर लुकअप की अनुमति देना है। हमारा स्किप सूची कार्यान्वयन नियमित कार्यान्वयन से भिन्न है और नेटवर्क लुकअप के लिए लक्षित है, जहाँ प्रत्येक आइटम में 4 संकेतक होते हैं ताकि जब हमें कोई आइटम प्राप्त हो, तो हम सूची में अन्य वस्तुओं के लिए समानांतर में 4 get() अनुरोध जारी कर सकें। यह उपयोगकर्ताओं के फ़ीड तक समय पर पहुँचने के लिए महत्वपूर्ण है क्योंकि DHT लुकअप में अप्रत्याशित प्रतिक्रिया समय होता है।
जब आप किसी को फ़ॉलो करते हैं, तो आप मूल रूप से अपने क्लाइंट को सूचित कर रहे हैं कि वह उनकी फ़ीड डाउनलोड करें और इसे समय-समय पर पुनर्प्रकाशित करें। DHT नेटवर्क स्थायी नहीं है, और आइटम लगभग 30 मिनट के बाद नेटवर्क से जल्दी से बाहर हो जाते हैं। चीजों को जीवित रखने के लिए, आपकी फ़ीड के अपटाइम के लिए कई अनुयायी होना महत्वपूर्ण है। अन्यथा आप अभी भी कहीं एक सर्वर रख सकते हैं जो 24/7 चलता है और हर 30 मिनट में आइटम को पुनर्प्रकाशित करके आपकी फ़ीड को जीवित रखता है।
निर्भरताएँ स्थापित करें।
$ npm install
ऐप में कुछ नेटिव बाइंडिंग हैं। मैंने इसे अपने कंप्यूटर पर चलाने के लिए इस कोड का उपयोग किया:
स्रोत: https://github.com/atom/electron/blob/master/docs/tutorial/using-native-node-modules.md
npm install --save-dev electron-rebuild
# हर बार जब आप "npm install" चलाते हैं, तो यह चलाएँ
./node_modules/.bin/electron-rebuild
# विंडोज पर यदि समस्या हो, तो प्रयास करें:
.\node_modules\.bin\electron-rebuild.cmd
विंडोज पर ed25519-supercop को काम करने के लिए मुझे node-gyp और सभी Python2.7 और Visual Studio सामान स्थापित करना पड़ा जो node-gyp को चाहिए: https://github.com/nodejs/node-gyp
फिर इसे विंडोज पर बनाने के लिए ये कमांड चलाएँ:
npm install -g node-gyp
cd ./node_modules/ed25519-supercop/
HOME=~/.electron-gyp node-gyp rebuild --target=0.36.9 --arch=x64 --dist-url=https://atom.io/download/atom-shell
इन दो कमांड को एक साथ अलग-अलग कंसोल टैब में चलाएँ।
$ npm run hot-server
$ npm run start-hot
नोट: नोड संस्करण >= 4 और npm संस्करण >= 2 की आवश्यकता है।
अधिक जानकारी के लिए electron-debug देखें।
अधिक जानकारी के लिए redux-devtools-dock-monitor देखें।
यदि आप किसी तीसरे पक्ष के लाइब्रेरी का उपयोग करते हैं जिन्हें webpack के साथ नहीं बनाया जा सकता, तो आपको उन्हें अपने webpack.config.base.js में सूचीबद्ध करना होगा:
externals: [
// अपने नोड तृतीय पक्ष लाइब्रेरी यहाँ रखें जिन्हें webpack के साथ नहीं बनाया जा सकता (mysql, mongodb, और इसी तरह..)
]
आप फ़ाइल में उन पंक्तियों को पा सकते हैं।
.module.css का उपयोग करके css फ़ाइल को css-modules के रूप में आयात करें।
$ npm run package
सभी प्लेटफ़ॉर्म के लिए ऐप पैकेज करने के लिए:
$ npm run package-all
अपने ऐप को --all विकल्पों के साथ darwin (osx), linux और win32 (windows) प्लेटफ़ॉर्म के लिए पैक करने के लिए electron-packager का उपयोग करें। निर्माण के बाद, आप उन्हें release फ़ोल्डर में पाएंगे। अन्यथा, आपको केवल अपने OS के लिए एक मिलेगा।
test, tools, release फ़ोल्डर और package.json में devDependencies को डिफ़ॉल्ट रूप से अनदेखा किया जाएगा।
हम एप्लिकेशन आकार में कमी के लिए डिफ़ॉल्ट रूप से कुछ मॉड्यूल के peerDependencies को अनदेखा विकल्प में जोड़ते हैं।
babel-core की आवश्यकता babel-loader को होती है और इसका आकार ~19 MB है।node-libs-browser की आवश्यकता webpack को होती है और इसका आकार ~3MB है।नोट: यदि आप रनटाइम में उपरोक्त किसी मॉड्यूल का उपयोग करना चाहते हैं, उदाहरण के लिए:
require('babel/register'), तो आपको उन्हेंdevDependenciesसेdependenciesमें स्थानांतरित करना होगा।
कृपया Building windows apps from non-windows platforms देखें।
यदि आप नेटिव-जैसा यूज़र इंटरफ़ेस (OS X El Capitan और Windows 10) चाहते हैं, तो react-desktop आपके लिए एकदम सही हो सकता है।
यह https://github.com/chentsulin/electron-react-boilerplate प्रोजेक्ट का एक फोर्क है।
MIT