कस्टम OTP व्यवहार
OTP व्यवहारों की संरचना समझें और सामान्य पैटर्न को समाहित करने वाले अपने कस्टम सामान्य व्यवहार बनाना सीखें
कस्टम OTP व्यवहार, CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
परिचय: OTP व्यवहार क्या हैं?
आपने GenServer और GenStatem जैसे OTP व्यवहारों के बारे में सीखा है। ये मजबूत और दोष-सहिष्णु घटक बनाने का एक मानक तरीका प्रदान करते हैं।
लेकिन यदि आपके पास कोई ऐसा बार-बार आने वाला प्रतिरूप हो, जिसे मौजूदा व्यवहार पूरी तरह से संभाल नहीं पाते हों, तो क्या होगा? ऐसे में कस्टम OTP व्यवहार उपयोगी होते हैं!
इनकी सहायता से आप अपनी सामान्य घटक संरचना परिभाषित कर सकते हैं।
कस्टम व्यवहार क्यों?
कस्टम व्यवहार बनाने के कई प्रमुख लाभ हैं:
- कोड का पुनः उपयोग: सामान्य तर्क को एक बार समाहित करके कई मॉड्यूलों में पुनः उपयोग करें।
- एकरूपता: सुनिश्चित करें कि आपके व्यवहार का अनुसरण करने वाले सभी घटक किसी विशेष इंटरफ़ेस और संरचना का पालन करें।
- अमूर्तीकरण: जटिल आंतरिक विवरण छिपाकर उपयोगकर्ताओं के सामने सरल API प्रस्तुत करें।
- रखरखाव-योग्यता: मुख्य तर्क में बदलाव केवल एक ही स्थान पर करना पड़े।
व्यवहार की संरचना
एक OTP व्यवहार में आमतौर पर दो मुख्य भाग होते हैं:
- व्यवहार मॉड्यूल: यह मॉड्यूल सार्वजनिक इंटरफ़ेस (वे फ़ंक्शन जिन्हें उपयोगकर्ता कॉल करते हैं) परिभाषित करता है और अक्सर कॉलबैक मॉड्यूल के लिए सहायक फ़ंक्शन भी प्रदान करता है। यह किसी सामान्य सर्वर से जुड़ने के लिए
-behaviour(gen_server)या इसी प्रकार की विशेषता का उपयोग करता है। - कॉलबैक मॉड्यूल: वास्तविक तर्क यहाँ होता है। यह व्यवहार मॉड्यूल के लिए आवश्यक कॉलबैक फ़ंक्शन (जैसे
init/1,handle_call/3) लागू करता है।
इसे दोनों के बीच एक अनुबंध की तरह समझिए।
व्यवहार मॉड्यूल: इंटरफ़ेस
अन्य मॉड्यूल जिस "व्यवहार मॉड्यूल" के विरुद्ध -behaviour(...) लिखते हैं, वह यही होता है। कस्टम व्यवहारों के लिए आप अक्सर ऐसा मॉड्यूल परिभाषित करेंगे, जो किसी मौजूदा सामान्य व्यवहार (जैसे gen_server) को समेटता है, लेकिन उसमें अपना विशिष्ट API जोड़ता है।
यह आपके कस्टम व्यवहार का उपयोग करने वालों के लिए क्लाइंट-पक्षीय इंटरफ़ेस की तरह काम करता है।
मुख्य बातें:
- यह सार्वजनिक फ़ंक्शन परिभाषित करता है (जैसे
start_link/0,my_action/1)। - ये फ़ंक्शन आमतौर पर आंतरिक रूप से
gen_server:start_link/3याgen_server:call/2को कॉल करते हैं। - यह
-callbackविशेषता का उपयोग करके कॉलबैक मॉड्यूल निर्दिष्ट करता है।
कॉलबैक मॉड्यूल: तर्क
आपके कस्टम व्यवहार की मुख्य कार्यक्षमता "कॉलबैक मॉड्यूल" में रहती है। यही वह मॉड्यूल है, जो अंतर्निहित सामान्य व्यवहार (जैसे gen_server या gen_statem) द्वारा परिभाषित आवश्यक फ़ंक्शन वास्तव में लागू करता है।
- इसे
init/1,handle_call/3,handle_cast/2आदि जैसे फ़ंक्शन लागू करने अनिवार्य हैं। - ये फ़ंक्शन अवस्था का प्रबंधन करते हैं और संदेशों का उत्तर देते हैं।
- व्यवहार मॉड्यूल (जैसे
gen_server) सीधे इसी मॉड्यूल को कॉल करता है।
काउंटर व्यवहार: शुरुआत
आइए, एक सरल कस्टम काउंटर व्यवहार बनाते हैं। हम पूर्णांक गणना का प्रबंधन करने के लिए gen_server को समेटेंगे।
पहले व्यवहार मॉड्यूल परिभाषित कीजिए, जो क्लाइंट API की तरह काम करता है और अंतर्निहित gen_server शुरू करता है।
-module(my_counter).
-behaviour(gen_server). % We wrap gen_server
-export([start_link/0, get_count/0, increment/0, decrement/0]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
% Public API for starting the counter
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
% --- gen_server callbacks (for *this* module acting as callback) ---
% This is where the initial state is set
init([]) ->
{ok, 0}. % Initial count is 0काउंटर व्यवहार: फ़ंक्शन
अब, अपने काउंटर के साथ काम करने के लिए सार्वजनिक फ़ंक्शन (increment, decrement, get_count) जोड़ते हैं और उनके संगत handle_call तर्क को लागू करते हैं।
ये सार्वजनिक फ़ंक्शन वास्तविक काउंटर प्रक्रिया को अनुरोध भेजने के लिए gen_server:call/2 का उपयोग करेंगे।
-module(my_counter).
-behaviour(gen_server).
-export([start_link/0, get_count/0, increment/0, decrement/0]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
% Public API for interacting with the counter
get_count() ->
gen_server:call(?MODULE, get_count).
increment() ->
gen_server:call(?MODULE, increment).
drcrement() ->
gen_server:call(?MODULE, decrement).
% --- gen_server callbacks ---
init([]) ->
{ok, 0}.
handle_call(get_count, _From, State) ->
{reply, State, State};
handle_call(increment, _From, State) ->
NewState = State + 1,
{reply, NewState, NewState};
handle_call(decrement, _From, State) ->
NewState = State - 1,
{reply, NewState, NewState};
handle_call(_Request, _From, State) ->
{reply, {error, unknown_request}, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.कस्टम काउंटर का उपयोग
हमारा my_counter व्यवहार परिभाषित हो जाने के बाद, अब हम इसे Erlang शेल या किसी अन्य मॉड्यूल से आसानी से उपयोग कर सकते हैं। ध्यान दीजिए कि क्लाइंट-पक्षीय कोड कितना सरल है!
आपको gen_server के विवरण जानने की आवश्यकता नहीं है; आपको केवल कस्टम व्यवहार के API का उपयोग करना है।
-module(counter_app).
-export([run/0]).
run() ->
% Start our custom counter behavior
io:format("Starting counter...~n"),
my_counter:start_link(),
io:format("Current count: ~p~n", [my_counter:get_count()]),
io:format("Incrementing...~n"),
my_counter:increment(),
io:format("Current count: ~p~n", [my_counter:get_count()]),
io:format("Decrementing...~n"),
my_counter:decrement(),
io:format("Current count: ~p~n", [my_counter:get_count()]),
% Stop the counter (optional, usually supervisors handle this)
gen_server:stop(my_counter),
io:format("Counter stopped.~n").कस्टम व्यवहार कब उपयोग करें
कस्टम OTP व्यवहार शक्तिशाली होते हैं, लेकिन हर घटक को इनकी आवश्यकता नहीं होती। कस्टम व्यवहार बनाने पर विचार कीजिए, जब:
- आप स्वयं को बार-बार समान
gen_serverयाgen_statemका प्रारंभिक कोड लिखते हुए पाते हैं। - आप कई घटकों में किसी विशेष प्रतिरूप या इंटरफ़ेस को लागू करना चाहते हैं।
- आपको किसी जटिल अंतर्निहित प्रक्रिया के लिए सरल, उच्च-स्तरीय API उपलब्ध कराना हो।
- आप कोई पुनः उपयोग योग्य लाइब्रेरी या ढाँचा घटक बना रहे हों।
त्वरित जाँच
आपने कस्टम OTP व्यवहारों के बारे में सीखा है। आइए, अपनी समझ की जाँच करें।
पुनरावलोकन और अगले चरण
आपने कस्टम OTP व्यवहारों की दुनिया का अध्ययन किया है!
- हमने देखा कि कस्टम व्यवहार आपको सामान्य प्रतिरूपों को समाहित करने देते हैं।
- इनमें आमतौर पर एक **व्यवहार मॉड्यूल** (सार्वजनिक API) और एक **कॉलबैक मॉड्यूल** (तर्क) शामिल होते हैं।
gen_serverजैसे मौजूदा व्यवहारों को समेटकर आप शक्तिशाली, पुनः उपयोग योग्य घटक बना सकते हैं।
कस्टम व्यवहारों में दक्षता आपको अत्यधिक मॉड्यूलर और एकरूप Erlang अनुप्रयोग बनाने में सक्षम बनाती है।
एआई शिक्षक के साथ Erlang सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “कस्टम OTP व्यवहार” पाठ निःशुल्क है?
हाँ — वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कस्टम OTP व्यवहार” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कस्टम OTP व्यवहार” में मैं क्या सीखूँगा?
OTP व्यवहारों की संरचना समझें और सामान्य पैटर्न को समाहित करने वाले अपने कस्टम सामान्य व्यवहार बनाना सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“कस्टम OTP व्यवहार” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- स्टेट प्रबंधन के लिए GenStatem
- इवेंट हैंडलिंग के लिए GenEvent
- कस्टम OTP व्यवहार
- हॉट कोड स्वैपिंग और लाइव अपग्रेड