JavaRush /جاوا بلاگ /Random-UR /ہم درخواست کی تعیناتی کو نافذ کرتے ہیں - "A سے Z تک جاوا ...

ہم درخواست کی تعیناتی کو نافذ کرتے ہیں - "A سے Z تک جاوا پروجیکٹ"

گروپ میں شائع ہوا۔
سب کو سلام. ہم آپ کے پروجیکٹ کو لکھنے پر مضامین کا سلسلہ جاری رکھتے ہیں۔ "A سے Z تک جاوا پروجیکٹ": درخواست کی تعیناتی کو نافذ کرنا - 1

شاخوں کو ترتیب دیں۔

اہمیت کی بات یہ ہے کہ شاخوں میں گم نہ ہونے کے لیے اور ذخیرہ میں ان کی ترتیب، میں نے STEP_{number} کا سابقہ ​​شامل کرکے ان کا نام تبدیل کرنے کا فیصلہ کیا ۔ مثال کے طور پر، ہمارے پاس اہم کے علاوہ تین شاخیں ہیں:
  • JRTB-0
  • JRTB-2
  • JRTB-3
آپ فوری طور پر نہیں سمجھ پائیں گے کہ کس کے بعد جانا چاہئے۔ تو میں ان کا نام تبدیل کروں گا:
  • STEP_1_JRTB-0 - پہلا قدم
  • STEP_2_JRTB-2 - دوسرا مرحلہ
  • STEP_3_JRTB-3 - تیسرا مرحلہ
اور اسی طرح اگلے مضامین کے لیے۔ برانچوں کا نام تبدیل کرنے کے لیے، ریپوزٹری پیج پر جائیں ، برانچز باکس تلاش کریں ، اس پر عمل کریں: "A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 2ہر برانچ کے نیچے پنسل پر کلک کریں اور برانچ کا نام تبدیل کریں: "A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 3اور اس کے نتیجے میں ہمیں ملتا ہے: ویسے، میرے ٹیلیگرام چینل"A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 4 کو سبسکرائب کرنے والے ہر شخص کو مل گیا۔ فوری طور پر کہ میں نے شاخوں کا نام تبدیل کر دیا۔

ڈوکر کے بارے میں تھوڑا سا

Docker کیا ہے؟ مختصراً، یہ ایک ایسا ٹول ہے جس کی مدد سے آپ ایپلیکیشنز کو تیزی سے اور محفوظ طریقے سے تعینات (تعینات) کر سکتے ہیں، ان کے لیے ایک بند انفراسٹرکچر بنا سکتے ہیں، جو صرف ان کے لیے ضروری ہے۔ یہ اب بھی مشکل ہے، میں سمجھتا ہوں۔ عام طور پر، Docker کو ایک ترقیاتی پلیٹ فارم کے طور پر سمجھا جا سکتا ہے جہاں آپ تیزی سے اور مؤثر طریقے سے کام کر سکتے ہیں۔ ڈوکر کو ایک ایسے پروگرام کے طور پر سمجھا جا سکتا ہے جو سرور پر چلتا ہے۔ یہ پروگرام ایپلی کیشنز کے ساتھ کنٹینرز کو ذخیرہ کرنے کی صلاحیت رکھتا ہے۔ کنٹینر کیا ہے؟ یہ ایک علیحدہ انفراسٹرکچر ہے جس میں آپ اپنی ضرورت کی ہر چیز شامل کر سکتے ہیں۔ مثال کے طور پر، جاوا ایپلی کیشن کے لیے ہمیں ایپلیکیشن چلانے کے لیے JRE کی ضرورت ہے، کنٹینر میں یہ ہوگا، ہمیں کسی اور سافٹ ویئر کی ضرورت ہوگی - ہم اسے شامل کرسکتے ہیں۔ یا ہوسکتا ہے کہ ہمیں لینکس اور ٹامکیٹ سرولیٹ کنٹینر کی ضرورت ہو۔ یہ بھی کیا جا سکتا ہے۔ کنٹینرز تصویر کی بنیاد پر بنائے جاتے ہیں: یعنی یہ ایک مخصوص ٹیمپلیٹ ہے جس میں ڈوکر کنٹینر بنانے کے لیے ضروری سب کچھ لکھا جاتا ہے۔ یہ تصویر کیسے بنائی جائے؟ ہمارے معاملے میں، ہمیں پروجیکٹ کی جڑ میں ایک Dockerfile بنانے کی ضرورت ہوگی جس میں یہ بتایا جائے کہ کنٹینر میں کیا ہونا چاہیے۔ چونکہ ہم بوٹ کے ٹوکن کو کہیں بھی ظاہر نہیں کرنا چاہتے ہیں، اس لیے جب بھی ہم ایپلیکیشن کو تعینات کرنا چاہیں گے ہمیں اسے پاس کرنے کا سہارا لینا پڑے گا۔ آپ یہاں اور یہاں اس موضوع کے بارے میں مزید پڑھ سکتے ہیں ۔

ہم JRTB-13 لکھتے ہیں۔

ہمیں سرور پر اپنی درخواست کے لیے ایک تیز اور آسان تعیناتی کا عمل ترتیب دینے کی ضرورت ہے۔ یعنی ایک مشین کے لیے جو 24/7 کام کرتی ہے۔ آئیے ڈوکر کو ایک بنیاد کے طور پر لیں۔ لیکن ہماری فہرست میں کوئی ایسا کام نہیں ہے جو اس فعالیت کو شامل کرنے کا ذمہ دار ہو۔ اسے تخلیق کرتے وقت کسی نہ کسی طرح میں نے اسے یاد کیا۔ کوئی مسئلہ نہیں، ہم اسے ابھی بنائیں گے۔ گٹ ہب پر ایشو بنانے والے ٹیب پر جائیں اور فیچر کی درخواست کو منتخب کریں: "A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 5ٹاسک کی تفصیل شامل کریں، اس کی قبولیت کا معیار، سیٹ کریں کہ یہ مسئلہ کس پروجیکٹ سے تعلق رکھتا ہے اور آپ ایک نیا ایشو بنا سکتے ہیں: "A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 6اب، یہ دکھانے کے لیے کہ کام کو قبول کر لیا گیا ہے۔ کام کے لیے، To do on Progress سے کام کی حیثیت کو تبدیل کریں: "A سے Z تک جاوا پروجیکٹ": ایپلیکیشن کی تعیناتی کو نافذ کرنا - 7یہ ایک مشکل مضمون ہونے والا ہے۔ اگر آپ کو کوئی پریشانی ہے تو تبصرے میں لکھیں: میں ان کی نگرانی کروں گا اور اپنی بہترین صلاحیت کے مطابق جواب دوں گا۔ یہ ایک چھوٹا سا کسٹمر سپورٹ ہوگا :D

ایک ڈاکر فائل بنانا

ڈاکر فائل کیا ہے؟ ڈوکر کے لیے، یہ ایک اسکرپٹ ہے (مرحلہ وار ہدایات) کہ ڈوکر کنٹینر کے لیے تصویر کیسے بنائی جائے۔ ہماری درخواست کے کام کرنے کے لیے، ہمیں JDK، ورژن 11 کی ضرورت ہے۔ یعنی، ہمیں JDK 11 ڈاکر امیج کو تلاش کرنے اور اسے اپنی تصویر میں شامل کرنے کی ضرورت ہے۔ یہ اس کے مترادف ہے کہ ہم کس طرح میموری میں انحصار شامل کرتے ہیں۔ اس مقصد کے لیے Docker کے پاس DockerHub ہے ۔ مقامی طور پر تصاویر ڈاؤن لوڈ کرنے کے لیے، آپ کو وہاں رجسٹر کرنے کی ضرورت ہے۔ رجسٹریشن کے بعد، آئیے JDK11 کو تلاش کرتے ہیں۔ میں نے جو پایا اس سے، یہ کنٹینر ہے: adoptopenjdk/openjdk11 ۔ اس کنٹینر کی تفصیل میں وہ ہے جو dockerfile کے لیے درکار ہے:
FROM adoptopenjdk/openjdk11:ubi
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
آئیے اس فولڈر کو ٹھیک کرتے ہیں جس سے ہم جار فائل لیتے ہیں۔ ایم وی این پیکج ماون ٹاسک چلانے کے بعد ہمارے پاس اسے ٹارگٹ فولڈر میں موجود ہے۔ یہ سب کرنے سے پہلے، اپ ڈیٹ شدہ مین برانچ کی بنیاد پر، ہم اپنے کام کے لیے ایک نیا بناتے ہیں: STEP_4_JRTB-13 ۔ اب آپ کام کر سکتے ہیں۔ پروجیکٹ کی جڑ میں، Dockerfile ایکسٹینشن کے بغیر ایک فائل بنائیں اور اندر درج ذیل کو شامل کریں:
FROM adoptopenjdk/openjdk11:ubi
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
پہلی سطر وہ ہے جس پر تصویر کی بنیاد رکھی جائے گی - adoptopenjdk/openjdk11۔ دوسری لائن JAR_FILE نامی تصویر میں ایک دلیل شامل کرنا ہے، جو ٹارگٹ فولڈر میں واقع ہے۔ مزید یہ کہ موجودہ فولڈر کا تعین Dockerfile کے مقام سے ہوتا ہے۔ تیسری لائن - ہمارے پروجیکٹ کے جار کو ڈوکر امیج میں کاپی کریں۔ آخری لائن بنیادی طور پر ٹرمینل میں کمانڈ سے تخلیق کردہ ایک صف پر مشتمل ہے، جسے جگہ سے الگ کیا گیا تھا۔ یعنی، آخر میں درج ذیل پر عمل کیا جائے گا: "java -jar /app.jar" بوٹ ٹوکن کو خفیہ رکھنے کے لیے، کنٹینر کو شروع کرتے وقت ہمیں دو متغیرات پاس کرنے کی ضرورت ہوگی - بوٹ کا نام اور اس کا ٹوکن۔ ایسا کرنے کے لیے، ہم ایک سوال لکھیں گے جو ہمارے پروجیکٹ کو متغیر کے ساتھ شروع کرے۔ اور کیسے کرنا ہے؟ آپ کو اسے گوگل کرنے کی ضرورت ہے: یہاں ایک عام تفصیل کے ساتھ پہلا لنک ہے۔ ہم کیا کرنا چاہتے ہیں؟ ہمارے پاس application.properties فائل میں دو متغیر ہیں جن کی ہم وہاں وضاحت کرتے ہیں:
  • bot.username
  • bot.token
میں ایک ڈاکر کنٹینر چلانا چاہتا ہوں اور ہر بار وہاں اپنی قیمت پاس کرنا چاہتا ہوں تاکہ کوئی بھی ان اقدار کو نہ دیکھ سکے۔ میں جانتا ہوں کہ SpringBoot میں، ماحول کے متغیرات جو جار پروجیکٹ کے شروع ہونے پر سیٹ ہوتے ہیں وہ application.properties فائل میں موجود لوگوں پر فوقیت حاصل کریں گے۔ درخواست میں متغیر کو پاس کرنے کے لیے، آپ کو درج ذیل کنسٹرکشن کو شامل کرنے کی ضرورت ہے: -D{variable name}=”{variable value}” ۔ ہم گھوبگھرالی منحنی خطوط وحدانی کو شامل نہیں کرتے ہیں ؛) ہمیں ایک درخواست موصول ہوگی جو ہماری ایپلیکیشن کو پہلے سے طے شدہ اقدار کے ساتھ لانچ کرے گی - بوٹ کا نام اور ٹوکن: java -jar -Dbot.username="test.javarush.community_bot" -Dbot۔ token=”dfgkdjfglkdjfglkdjfgk” *.jar اب ہمیں ان متغیرات کو ڈوکر کنٹینر کے اندر منتقل کرنے کی ضرورت ہے۔ یہ ایک ماحولیاتی متغیر ہے۔ اس بات کو یقینی بنانے کے لیے کہ مستقبل میں ہمارا ڈیٹا بیس آسانی سے اور ہماری ایپلیکیشن کے ساتھ مسائل کے بغیر کام کرے، ہم docker-compose استعمال کریں گے۔ یہ ایک علیحدہ ٹول ہے جس میں آپ کام، آغاز اور کنٹینرز کے درمیان انحصار کو منظم کر سکتے ہیں۔ دوسرے لفظوں میں، یہ ایک انفراسٹرکچر کے کنٹینرز کا انتظام کرنے کے لیے ڈوکر کے اوپر ایک اضافہ ہے۔ اس کے علاوہ، docker-compose چلانے سے پہلے، ہمیں اس بات کا یقین کرنے کی ضرورت ہے کہ ہم نے سرور سے تمام کوڈ کی تبدیلیاں نکال لی ہیں، ایپلیکیشن بنائی ہے اور پرانے ورژن کو روک دیا ہے۔ اس کے لیے ہم ایک bash اسکرپٹ استعمال کریں گے۔ واہ... یہ سب مشکل لگتا ہے، میں اتفاق کرتا ہوں۔ لیکن ایپلیکیشن کی تعیناتی کے ساتھ کام کرنا ہمیشہ ایک مشکل اور پیچیدہ عمل ہوتا ہے۔ لہذا، ہمارے پاس ایک بہت اچھی اسکیم ہے:
  1. آئیے bash اسکرپٹ کو چلاتے ہیں۔
  2. bash اسکرپٹ docker-compose چلاتا ہے۔
  3. Docker-compose ہماری درخواست کے ساتھ ایک docker کنٹینر لانچ کرتا ہے۔
  4. ڈوکر کنٹینر ہماری درخواست چلاتا ہے۔
اور اب ہمیں یہ یقینی بنانے کی ضرورت ہے کہ دو متغیرات - بوٹ کا نام اور اس کا ٹوکن - پوائنٹ 1 سے پوائنٹ 4 تک جائیں۔ اور تاکہ یہ دونوں متغیرات ہماری جاوا ایپلی کیشن کو لانچ کرتے وقت استعمال ہوں۔ آئیے آخر سے شروع کی طرف چلتے ہیں۔ ہم پہلے ہی جانتے ہیں کہ jarnik شروع کرنے کے لیے کس کمانڈ پر عمل درآمد کرنے کی ضرورت ہے۔ لہذا، ہم Dockerfile کو ترتیب دیں گے تاکہ یہ دو متغیرات کو قبول کرنا اور انہیں درخواست پر منتقل کرنا سیکھے۔ ایسا کرنے کے لیے، آئیے Dockerfile کو درج ذیل شکل تک کم کرتے ہیں۔
FROM adoptopenjdk/openjdk11:ubi
ARG JAR_FILE=target/*.jar
ENV BOT_NAME=test.javarush_community_bot
ENV BOT_TOKEN=1375780501:AAE4A6Rz0BSnIGzeu896OjQnjzsMEG6_uso
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Dbot.username=${BOT_NAME}", "-Dbot.token=${BOT_TOKEN}", "-jar", "/app.jar"]
آپ دیکھ سکتے ہیں کہ ہم نے دو لائنیں شامل کیں اور ENTRYPOINT کو اپ ڈیٹ کیا۔ لائنز:
ENV BOT_NAME=test.javarush_community_bot
ENV BOT_TOKEN=1375780501:AAE4A6Rz0BSnIGzeu896OjQnjzsMEG6_uso
انکوڈر فائل کے اندر متغیرات کا اعلان کریں۔ پہلے سے طے شدہ طور پر ان کی ایک قدر متعین ہوتی ہے۔ اگر، اس ڈاکر فائل سے تصویر بناتے وقت، ایسے ناموں کے ساتھ ماحولیاتی متغیرات کو پاس کیا جاتا ہے، تو قدریں مختلف ہوں گی۔ اور ENTRYPOINT میں ہم نے کچھ اور عناصر شامل کیے جو ان ماحولیاتی متغیرات کو پڑھیں گے:
"-Dbot.username=${BOT_NAME}", "-Dbot.token=${BOT_TOKEN}"
یہاں آپ دیکھ سکتے ہیں کہ لائن کے اندر، ${} کی تعمیر کا استعمال کرتے ہوئے، BOT_NAME اور BOT_TOKEN کی اقدار کو پاس کیا جائے گا۔ اگلا، ہمیں یہ سکھانے کی ضرورت ہے کہ ان متغیرات کو کیسے حاصل کیا جائے اور اسے docker-compose میں منتقل کیا جائے۔

docker-compose.yml بنائیں

آپ کے لیے YAML فارمیٹ کے بارے میں الگ سے پڑھنا اچھا ہو گا، ورنہ مضمون پہلے ہی تیزی سے بڑھ رہا ہے۔ ہمارے لیے، یہ .properties قسم کے متغیرات کی صرف ایک اور تفصیل ہے۔ صرف خصوصیات میں یہ ایک نقطے کے ذریعے لکھا جاتا ہے، لیکن YAML میں یہ کچھ زیادہ خوبصورتی سے کیا جاتا ہے۔ مثلاً اس طرح۔ پراپرٹیز میں دو متغیرات: javarush.telegram.bot.name=ivan javarush.telegram.bot.token=pupkin لیکن .yaml میں (.yml کی طرح) یہ اس طرح ہوگا:
javarush:
	telegram:
		bot:
		  name: ivan
		  token: pupkin
دوسرا آپشن زیادہ خوبصورت اور قابل فہم ہے۔ خالی جگہیں بالکل اسی طرح ہونی چاہئیں جیسا کہ اوپر بتایا گیا ہے۔ آئیے کسی طرح ہماری application.properties اور application.yml کا ترجمہ کریں۔ سب سے پہلے آپ کو اسے بنانے کی ضرورت ہے۔ پروجیکٹ کی جڑ میں، docker-compose.yml فائل بنائیں اور وہاں درج ذیل لکھیں:
version: '3.1'

services:
 jrtb:
   build:
     context: .
   environment:
     - BOT_NAME=${BOT_NAME}
     - BOT_TOKEN=${BOT_TOKEN}
   restart: always
پہلی لائن ڈوکر کمپوز ورژن ہے۔ سروسز: کہتا ہے کہ اس کے بعد درج ذیل تمام سطریں (شفٹ ہو جائیں گی) ان خدمات کا حوالہ دیتی ہیں جنہیں ہم ترتیب دے رہے ہیں۔ ہمارے پاس اب تک ان میں سے صرف ایک ہے - ایک جاوا ایپلی کیشن جسے jrtb کہتے ہیں ۔ اور پہلے سے ہی اس کے نیچے اس کی تمام ترتیبات ہوں گی۔ مثال کے طور پر، build: context: . کہتا ہے کہ ہم Dockerfile کو اسی ڈائرکٹری میں تلاش کریں گے جیسے docker-compose.yml۔ لیکن ماحول: سیکشن اس بات کو یقینی بنانے کے لیے ذمہ دار ہو گا کہ ہم ضروری ماحولیاتی متغیرات کو Dockerfile میں منتقل کریں۔ بس ہمیں کیا ضرورت ہے۔ لہذا، ہم ذیل میں متغیرات کو منتقل کرتے ہیں۔ Docker-compose انہیں سرور آپریٹنگ ماحول کے متغیرات میں تلاش کرے گا۔ آئیے انہیں bash اسکرپٹ میں شامل کرتے ہیں۔

bash اسکرپٹس بنانا

آخری مرحلہ ایک bash اسکرپٹ بنانا ہے۔ پروجیکٹ کی جڑ میں start.sh نامی فائل بنائیں اور وہاں درج ذیل لکھیں:
#!/bin/bash

# Pull new changes
git pull

# Prepare Jar
mvn clean
mvn package

# Ensure, that docker-compose stopped
docker-compose stop

# Add environment variables
export BOT_NAME=$1
export BOT_TOKEN=$2

# Start new deployment
docker-compose up --build -d
تمام باش اسکرپٹس کے لیے پہلی لائن کی ضرورت ہے: یہ اس کے بغیر کام نہیں کرے گی۔ اور پھر - ٹرمینل میں کمانڈز کا صرف ایک سیٹ جس پر عمل کرنے کی ضرورت ہے۔ میں نے ہر کمانڈ میں تبصرے شامل کیے ہیں لہذا یہ واضح ہونا چاہئے۔ میں صرف ایک چیز کی وضاحت کرنا چاہتا ہوں کہ $1 اور $2 کا کیا مطلب ہے۔ یہ دو متغیر ہیں جو bash اسکرپٹ کے شروع ہونے پر پاس ہو جائیں گے۔ برآمد کمانڈ کا استعمال کرتے ہوئے، انہیں سرور متغیرات میں شامل کیا جائے گا اور docker-compose میں پڑھا جائے گا۔ یہ Ubuntu کے لیے کام کرتا ہے، شاید ونڈوز کے لیے نہیں، لیکن مجھے یقین نہیں ہے۔ اب آپ کو stop.sh اسکرپٹ شامل کرنے کی ضرورت ہے، جس سے کام رک جائے گا۔ اس میں کئی سطریں ہوں گی:
#!/bin/bash

# Ensure, that docker-compose stopped
docker-compose stop

# Ensure, that the old application won't be deployed again.
mvn clean
یہاں ہم ڈوکر کمپوز کو روکتے ہیں اور پروجیکٹ جارنک کو صاف کرتے ہیں، جو آخری تعمیر کے بعد سے پڑا ہوا ہے۔ ہم یہ اس بات کو یقینی بنانے کے لیے کرتے ہیں کہ ہمارے پروجیکٹ کو درست طریقے سے دوبارہ بنایا جائے۔ نظیریں تھیں، اسی لیے میں شامل کر رہا ہوں) نتیجے کے طور پر، ہمارے پاس 4 نئی فائلیں ہیں:
  • Dockerfile - ہماری درخواست کی تصویر بنانے کے لیے ایک فائل؛
  • docker-compose.yml - ترتیبات کے ساتھ ایک فائل کہ ہم اپنے کنٹینرز کو کیسے لانچ کریں گے۔
  • start.sh - ہماری درخواست کی تعیناتی کے لیے bash اسکرپٹ؛
  • stop.sh ہماری درخواست کو روکنے کے لیے ایک bash اسکرپٹ ہے۔
ہم اپنی درخواست کے ورژن کو 0.2.0-SNAPSHOT سے 0.3.0-SNAPSHOT میں بھی اپ ڈیٹ کریں گے۔ آئیے RELEASE_NOTES میں نئے ورژن کی تفصیل شامل کریں اور تھوڑا سا ری فیکٹر کریں کہ وہاں کیا تھا:
# ریلیز نوٹس ## 0.3.0-SNAPSHOT * JRTB-13: پروجیکٹ میں تعیناتی کا عمل شامل کیا گیا ## 0.2.0-SNAPSHOT * JRTB-3: Telegram Bot کمانڈز کو سنبھالنے کے لیے نافذ کردہ کمانڈ پیٹرن ## 0.1.0-SNAPSHOT * JRTB -2: اسٹب ٹیلیگرام بوٹ شامل کیا گیا * JRTB-0: اسپرنگ بوٹ سکیلیٹن پروجیکٹ شامل کیا گیا
اور README میں ہم ایک نیا پیراگراف شامل کریں گے جس میں یہ بیان کیا جائے گا کہ ہماری درخواست کو کیسے تعینات کیا جائے:
## تعیناتی کی تعیناتی کا عمل ہر ممکن حد تک آسان: مطلوبہ سافٹ ویئر: - bash اسکرپٹ کو چلانے کے لیے ٹرمینل - docker - docker-compose ایپلی کیشن کو تعینات کرنے کے لیے، مطلوبہ برانچ میں سوئچ کریں اور bash اسکرپٹ چلائیں: $bash start.sh ${bot_username} ${bot_token } بس۔
بالکل، سب کچھ انگریزی میں لکھا جاتا ہے. ہمیشہ کی طرح، ہماری نئی بنائی گئی برانچ STEP_4_JRTB-13 میں ہم نام کے ساتھ ایک نیا عہد بناتے ہیں: JRTB-13: ڈوکر کے ذریعے تعیناتی کے عمل کو نافذ کریں اور اسے آگے بڑھائیں۔ میں ان چیزوں پر تفصیل سے غور کرنا چھوڑ دیتا ہوں جو میں نے پہلے ہی پچھلے مضامین میں بیان کیا ہے۔ مجھے ایک ہی بات کو دہرانے کا کوئی فائدہ نظر نہیں آتا۔ اس کے علاوہ، جن لوگوں نے اس کا پتہ لگایا اور خود کیا ان سے کوئی سوال نہیں ہوگا۔ یہ میں اس بارے میں بات کر رہا ہوں کہ نئی برانچ کیسے بنائی جائے، کمٹ کیسے بنائی جائے، ریپوزٹری میں کمٹ کو کیسے آگے بڑھایا جائے۔

نیچے کی لکیر

آج میں نے بہت ساری نئی معلومات دکھائی ہیں جن پر احتیاط سے غور کرنے اور اضافی پڑھنے کے ساتھ اس کو بڑھانے کی ضرورت ہے۔ سب سے اہم بات: ONE (!!!) کمانڈ کی مدد سے، ہماری ایپلیکیشن کو تعینات کرنے کے لیے ضروری ہر کام کیا جائے گا۔ یہ اتنا اچھا ہے کہ میں آپ کو بتا بھی نہیں سکتا۔ ہاں، متغیرات کو صحیح طریقے سے آگے بڑھانے کا طریقہ سمجھنے کے لیے مجھے ڈاکر دستاویزات میں کافی وقت گزارنا پڑا۔ اب سے، ٹیلی گرام بوٹ ہمیشہ مین برانچ کے تازہ ترین ورژن پر کام کرے گا۔ ٹیلیگرام بوٹ کا لنک۔ آج ایسے مواد کا کوئی لنک نہیں ہوگا جسے پڑھنا اچھا لگے: ذمہ داری آپ پر عائد ہوتی ہے۔ آپ کو معلومات کی تلاش سیکھنے کی ضرورت ہے۔ میرے ٹیلیگرام چینل کو سبسکرائب کرنے والے ہر شخص کو بوٹ کی تعیناتی کے بارے میں فوری طور پر معلوم ہو گیا۔ دوستو، کیا آپ کو یہ پروجیکٹ پسند ہے؟ اسے ایک ستارہ دو ! اس طرح یہ مزید مقبول ہو جائے گا اور زیادہ سے زیادہ لوگ اس کے بارے میں جان سکیں گے اور اس سے سیکھ سکیں گے۔ ہمیشہ کی طرح، میں تجویز کرتا ہوں کہ گٹ ہب پر رجسٹر ہوں اور اس سیریز اور اپنے دوسرے پروجیکٹس کو فالو کرنے کے لیے اپنے اکاؤنٹ کو فالو کریں جن پر میں وہاں کام کرتا ہوں۔ اب ہم ڈیٹا بیس کو جوڑنے کے لیے تیار ہیں۔ اگلا مضمون طویل ہو گا اور اس میں ہم ڈیٹا بیس کے ساتھ کام کرنے کے لیے ہر ضروری کام کریں گے۔ تمام تفصیلات JRTB-1 میں ہیں ۔

سیریز کے تمام مواد کی فہرست اس مضمون کے شروع میں ہے۔

تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION