این روزا کد زدن تو ایران یهجورایی شبیه دوی با مانع شده. دقیقا همون لحظهای که یه فنجون قهوه ریختی و با کلی ذوق میخوای پروژهات رو بیاری بالا، یهو میبینی ترمینال پر از ارورهای قرمز تایماوت میشه. اینجور وقتا آدم با خودش میگه اصلا با این وضعیت اینترنت چطور لینوکس یاد بگیرم؟ یا چطور پروژهام رو دیپلوی کنم؟ اما خب ما برنامهنویسیم و کارمون حل کردن همین مشکلاته. وقتی دسترسی به سرورهای جهانی قطع میشه، پیدا کردن مخازن دور زدن نت ملی تبدیل میشه به یه نیاز اساسی که بتونیم کارمون رو پیش ببریم.
دور زدن نت ملی برای برنامهنویسان الان دیگه فقط یه ترفند نیست، بلکه یه مهارت واجبه که هر دولوپری باید تو آستینش داشته باشه تا پروژهاش لنگ نمونه. تو این گپ و گفت خودمونی قراره بهتون بگم چطور از شر این قطعیها خلاص بشید.
چالش دولوپرها در ایران
همه ما این درد رو کشیدیم که وسط یه کار مهم، ارور docker pull در ایران قشنگ اعصابمون رو به هم میریزه. یا مثلا روی سروریم و یه مشکل apt-get update در نت ملی باعث میشه ساعتها وقتمون تلف بشه. این خطاها یعنی ارتباط ما با دنیای بیرون قطع شده و باید دنبال یه راه میانبر بگردیم. اینجاست که داشتن یه لیست میرورهای داخلی (Mirror) خیلی به دردمون میخوره. ما باید از سرورهای واسطهای که داخل ایران هستن استفاده کنیم تا دسترسی به داکر و پایتون در نت ملی برامون فراهم بشه و پروژههامون استاپ نخوره.
میرورهای داخلی پایتون
خب بریم سراغ راهحلها. بچههای بکاند خوب میدونن که نصب پکیجهای پایتون نت ملی گاهی چقدر رو اعصابه. وقتی میخوای یه پروژه جدید استارت بزنی، نصب جنگو با نت ملی اونقدر طول میکشه که آدم کلا حس کد زدنش میپره. اما سایت رانفلر یه میرور خیلی خفن آورده که کارمون رو راحت کرده. شما با استفاده از این مخزن میتونید بدون اختلال اینترنت پکیجها رو نصب کنید. برای این کار کافیه تو ترمینال خودتون دستور زیر رو وارد کنید :
اگر هم دلتون میخواد کلا سیستم رو جوری تنظیم کنید که همیشه به صورت پیشفرض از همین مخزن ایرانی استفاده کنه، باید اون رو به صورت گلوبال تعریف کنید. کدهای زیر دقیقا همین کار رو براتون انجام میدن :
pip config --user set global.index https://mirror-pypi.runflare.com/simple
pip config --user set global.index-url https://mirror-pypi.runflare.com/simple
pip config --user set global.trusted-host repo.hmirror.ir
حالا سوال اینه که بعد از زدن این کُدها چکار کنیم؟ هیچی! سیستم شما الان وصله به مخزن داخلی. حالا خیلی شیک و مجلسی دستور همیشگی خودتون رو بزنید، مثلا بنویسید :
pip install django
و اینتر کنید. میبینید که بدون نیاز به فیلترشکن و با سرعت نور جنگو روی سیستمتون نصب میشه! اگه میخواید بدونید چه کارهای دیگهای میشه تو این شرایط کرد، حتما مقاله پایتون با نت ملی رو تو سایتمون بخونید. راستی اگه هنوز اول راهید و میخواید این زبان شیرین رو یاد بگیرید، پیشنهاد میکنم یه سر به دوره آموزش برنامه نویسی پایتون ما بزنید که صفر تا صد داستان رو براتون باز کردیم.
مخازن لینوکس در ایران
داستان فقط پایتون نیست. فرض کنید یه سرور اوبونتو گرفتید و میخواید چندتا ابزار ساده روش نصب کنید. اینجاست که داشتن یه میرور نت ملی برای لینوکس از نون شب واجبتر میشه. استفاده از میرورهای داخلی لینوکس باعث میشه دانلود پکیجها خیلی سریعتر انجام بشه. شرکت آروان کلاد مخازن خوبی برای این کار داره. حالا چطور باید این میرور رو روی لینوکس ست کنیم؟ خیلی ساده است! باید برید سراغ فایل لیست سورسهای لینوکس و آدرسهای اصلی رو با آدرس آروان عوض کنید. فقط کافیه این دستور رو تو ترمینال سرور بزنید :
sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirror.arvancloud.ir/ubuntu/|g' /etc/apt/sources.list
با این یه خط کد، آدرس مخزن شما عوض میشه. حالا برای تست، دستور :
apt-get update
رو بزنید و بعدش برای اینکه خیالتون راحت بشه یه برنامه مثل اچتاپ رو با این دستور :
apt install htop
نصب کنید. میبینید که چقدر سریع و بدون ارور کار میکنه! برای مسلط شدن به این محیط جذاب، دوره آموزش لینوکس اِسِنشیالز تو سایت ما دقیقاً همون چیزیه که نیاز دارید. وقتی ترمینال رو مثل کف دست بشناسید، حتی میتونید وارد حوزههای امنیتی بشید و با دیدن دوره متخصص تست نفوذ ( آموزش هک ) یه مسیر شغلی هیجانانگیز رو شروع کنید.
دردسرهای داکر و ایمیجها
رسیدیم به غول مرحله آخر که داکر باشه. تحریمها کاری کردن که ما حتی نتونیم یه ایمیج ساده رو دانلود کنیم. اما آروان یه کشرجیستری راه انداخته که میتونیم ازش استفاده کنیم. مثلا اگه میخواید ایمیج انجینایکس رو بگیرید، به جای اینکه مستقیم اسمش رو بنویسید، آدرس آروان رو تنگش میزنید. مثلا اینجوری توی ترمینال مینویسید و اینتر میکنید :
docker pull docker.arvancloud.ir/nginx:latest
داکرفایل اختصاصی نابغهها
برای اینکه کارتون رو راحت کنم، یه نمونه Dockerfile برای اینترنت ملی نشستم نوشتم که اختصاصی توسط سایت خودمون یعنی نابغهها شخصیسازی شده. توی این داکرفایل، مسیرها و آدرسها رو جوری تنظیم کردم که بدون هیچ وابستگی به اینترنت خارج، پروژهتون بیلد بشه. همونطور که تو برنامهنویسی باید حواسمون به خیلی چیزا باشه، مثلا بدونیم فرقِ sound null safe با null safe چیه تا باگ نخوریم، تو نوشتن داکرفایل هم باید حواسمون به آدرس مخازن باشه. تو این کد، من ایمیج رو از آروان گرفتم، بعد مخازن دبیان رو به آروان تغییر دادم و برای نصب پیشنیازهای پایتون هم از میرور رانفلر استفاده کردم. مسیر کپی فایلها رو هم خیلی ساده روی پوشه اصلی اپ تنظیم کردم. اینم از کُدش :
# Pull official base image from Arvan mirror
FROM docker.arvancloud.ir/python:3.12-slim-bullseye
# Maintainer info - NABEGHEHA
LABEL maintainer="sales@nabegheha.com"
LABEL website="https://nabegheha.com"
# Set environment variables for Python mirror
ENV PYTHONUNBUFFERED=1 \
PIP_INDEX_URL=https://mirror-pypi.runflare.com/simple
# Replace Debian mirrors with ArvanCloud
RUN sed -i 's|http://deb.debian.org/debian|http://mirror.arvancloud.ir/debian|g' /etc/apt/sources.list \
&& sed -i 's|http://security.debian.org/debian-security|http://mirror.arvancloud.ir/debian-security|g' /etc/apt/sources.list
# Install Nginx
RUN apt-get update -o Acquire::Check-Valid-Until=false \
&& apt-get install -y nginx \
&& rm -rf /var/lib/apt/lists/*
# Set up work directory for Nabegheha project
WORKDIR /nabegheha/app
# Install Python dependencies via internal mirror
COPY ./requirements.txt .
RUN pip install --upgrade pip \
&& pip install -r requirements.txt
# Copy project files
COPY ./src .
# Configure Nginx for the project
COPY ./config/nginx.conf /etc/nginx/nginx.conf
# Expose port
EXPOSE 80
# Setup and run entrypoint
COPY ./scripts/entrypoint.sh .
RUN chmod +x ./entrypoint.sh
CMD ["./entrypoint.sh"]
میرور فلاتر در رانفلر
فکر نکنید این محدودیتها فقط برای بکاندیهاست. بچههای موبایل هم حسابی درگیرن و برای بالا آوردن پروژههاشون با فلاتر با نت ملی مکافات دارن. اما سایت رانفلر به فکر دولوپرهای موبایل هم بوده و یه میرور خیلی عالی برای فریمورکهای گوگل راه انداخته. ببین، وقتی تو داری با فلاتر کار میکنی و مثلاً دستور flutter pub get رو میزنی تا یه پکیج نصب بشه، فلاتر به صورت پیشفرض میره سراغ سرورهای اصلی گوگل (مثل سایت pub.dev) تا فایلها رو دانلود کنه. اما چون اینترنت ما محدودیت داره، این ارتباط قطع میشه و ارور تایماوت میگیری.
سایت «رانفلر» اومده یه سرور داخل ایران گذاشته و تمام اون فایلهای گوگل رو کپی کرده روی سرور خودش. کاری که ما باید بکنیم اینه که به سیستمعامل خودمون بگیم: «از این به بعد اگه فلاتر خواست چیزی دانلود کنه، نذار بره سمت گوگل، آدرسش رو عوض کن و بفرستش سمت سرور رانفلر.» به این کار میگن تغییر متغیرهای محیطی سیستم. حالا چطوری انجامش بدیم؟ بستگی داره ویندوز باشی یا لینوکس/مَک.
اگه از ویندوز استفاده میکنی، کار خیلی سادست. اول کلید ویندوز کیبوردت رو بزن تا منوی استارت باز بشه و بعد عبارت Environment Variables رو جستجو کن. همون اول یه گزینه برات میاره که نوشته Edit the system environment variables، روی همون کلیک کن. توی پنجره کوچیکی که باز میشه، اون پایین دکمه Environment Variables رو پیدا کن و روش کلیک کن. حالا تو پنجره جدیدی که باز شده، تو همون قسمت بالایی روی دکمه New کلیک کن تا متغیر اول رو بسازیم. تو کادر اول یعنی نام متغیر باید عبارت زیر رو وارد کنی :
PUB_HOSTED_URL
و تو کادر دوم که مقدار متغیره، آدرس سایت رانفلر یعنی :
https://mirror-flutter.runflare.com/pub
رو قرار بدی و در نهایت دکمه اوکی رو بزنی.
برای متغیر دوم هم دوباره همون مسیر رو تکرار کن و روی دکمه New کلیک کن. این بار اسم متغیر رو
FLUTTER_STORAGE_BASE_URL
بذار و آدرسش رو هم
https://mirror-flutter.runflare.com/storage
وارد کن و اوکی کن. بعد از اینکه همه پنجرهها رو بستی، یه نکته خیلی مهم وجود داره. حتماً باید ویرایشگر کد خودت مثل اندروید استودیو، ویاسکد یا حتی ترمینالت رو کامل ببندی و دوباره باز کنی تا ویندوز این تنظیمات جدید رو بشناسه.
حالا اگه از لینوکس یا مک استفاده میکنی، کار خیلی سریعتر پیش میره و فقط با ترمینال سر و کار داری. اول ترمینال سیستم عاملت رو باز کن. ما باید فایل تنظیمات رو ویرایش کنیم. اگه از محیط پیشفرض لینوکس استفاده میکنی فقط کافیه بنویسی :
nano ~/.bashrc
تا فایل تنظیمات برات باز بشه. وقتی فایل باز شد، با کلیدهای کیبورد برو به آخرین خط و دو تا آدرس رانفلر رو اونجا کپی کن. خط اول باید عبارت :
رو قرار بده. بعد از این کار، فایلت رو ذخیره کن و بیا بیرون. تو محیط nano با گرفتن همزمان کلیدهای کنترل و حرف او (O) و بعد زدن اینتر، فایل ذخیره میشه و با کنترل و حرف ایکس (X) خارج میشی. در نهایت برای اینکه این تنظیمات همون لحظه روی سیستم عاملت اعمال بشه، کافیه دستور
source ~/.bashrc
رو تو ترمینال اجرا کنی.
وقتی این تنظیمات رو انجام بدید، تازه میفهمید 6 ویژگی جالبِ فلاتر چقدر میتونه روند توسعه اپلیکیشن رو سریع و لذتبخش کنه. اگر هم هنوز دودل هستید که وارد این حوزه بشید یا نه، دونستن 5 دلیل برای یادگیری فِلاتِر قطعا نظرتون رو عوض میکنه. بازار کار این فریمورک به شدت داغه و با دیدن برنامههای ساخته شده با فِلاتِر متوجه میشید که چه اپلیکیشنهای بزرگی تو دنیا با همین تکنولوژی نوشته شدن. اگه میخواید تو این زمینه حرفی برای گفتن داشته باشید، دوره آموزش فریمورک فِلاتر تو سایت نابغهها منتظرتونه تا شما رو به یه متخصص تبدیل کنه.
دنیای عجیب دارت
حالا که حرف از موبایل شد، نمیشه از زبان پایه این فریمورک یعنی دارت چیزی نگفت. استفاده از دارت با نت ملی هم دقیقا با همون میرورهایی که بالاتر برای فلاتر گفتم حل میشه و شما میتونید پکیجهای دارت رو راحت دانلود کنید. این زبان به شدت جذابه و خوندن درباره خالقینِ زبانِ برنامه نویسی دارت نشون میده که چه مهندسهای باهوشی پشت این پروژه بودن. اگه یکم تو این زبان عمیق بشید، به 10 ویژگی عجیبِ زبانِ دارت برمیخورید که کلا دیدگاهتون رو به برنامهنویسی شیگرا عوض میکنه. برای یادگیری اصولی این زبان هم ما یه دوره کامل به اسم آموزش برنامه نویسی دارت داریم که میتونید ازش استفاده کنید.
سایر مخازن داخلی
حالا یه وقت هست شما اصلا حال نمیکنید با آروان کار کنید یا سرورشون اون روز کنده. اینجا جای نگرانی نیست چون گزینههای دیگهای هم داریم. مثلا سایت لیارا یه میرور خیلی قدرتمند برای داکر داره. اگه بخواید از لیارا استفاده کنید، کافیه به جای آدرسی که بالاتر گفتم، آدرس هاب لیارا رو جایگزین کنید. مثلا برای دانلود همون ایمیج اوبونتو، تو ترمینال مینویسید
docker pull hub.liara.ir/ubuntu
و به همین سادگی ایمیج از سرورهای لیارا دانلود میشه. شرکتهای دیگهای مثل پاردیز و چابکان هم سرویسهای مشابهی دارن. چون تعدادشون زیاده، بهترین کار اینه که یه سر به سایت هر کدوم بزنید، داکیومنتهاشون رو بخونید و طبق آموزش همون سایت میرور رو روی سیستمتون ست کنید.
حرف آخر
آقا درسته که شرایط یهکمی پیچیده شده، ولی ما تو سایت نابغهها همیشه اینجاییم تا با هم این گرهها رو باز کنیم. با استفاده از همین مخازن دور زدن نت ملی که بهتون معرفی کردم، میتونید به راحتی از سد این قطعیها بگذرید و مثل سابق با سرعت بالا پروژههاتون رو بیلد کنید. یادتون نره که این ترفندها رو همیشه یه جا یادداشت کنید تا روز مبادا به کارتون بیاد. دمتون گرم که تا اینجا همراهم بودید، پرقدرت برید سراغ کدهاتون و نذارید هیچ اروری متوقفتون کنه.
امتیاز شما به مقاله
4.9 / 5. 43
43 رای 4.9
4.9
(43)
قوانین ارسال دیدگاه
متوجه شدم
برای ثبت نظر، حتما اسم و فامیل خود را به فارسی وارد کنید.
حتما ایمیل صحیح را وارد کنید تا در صورت بررسی کارشناسان، پاسخ برای شما ایمیل شود.
داخل متن کامنت کدهای برنامه نویسی قرار ندهید.
5نقد و بررسیها
رضاپور
6 اردیبهشت 1405
سلام استاد در آینده اگر امکانش باشه ،میشه یاد بدین چطور سوپابیس رو بر روی هاست شخصی خودمون اجرا کنیم ؟چون اصلا منیع فارسی نیست که آموزش بده ،ممنون از زحماتتون❤️
( 2 )
موافقم با دیدگاه
امیرمحمد قاسمی
28 فروردین 1405
دم شما گرم آقای معلمی خیلی جواب بود! دست شما درد نکنه دوستان مخرن مایکت هم هست برای گردل (maven.myket.ir) علاوهبر کتابخانه ها، Gradle Wrapper و android sdk میتونید باهاش نصب کنید
ران فلیر برای پکیج های فلاتر عالیه، ولی گریدل رو چه کنیم؟ از همون روش افلاین مقالتون استفاده کنیم یا میرور هم هست که درست کنه، ران فلیر برای گریدل میرور داره و من هم ست کردم ولی خب نمیدونم چرا کار نمی کنه.
ما همیشه تاکید کردهایم که بهترین سرمایهگذاری، سرمایهگذاری روی خودتان است. سایت آموزشی نابغهها با هدف ارائه آموزشهای برنامه نویسی و لینوکس به شما در مسیر موفقیت کمک میکند. برای شما موفقیت و تجربهای مفید در سایت آرزو میکنیم.
ivahid Specialized and Professional Web Design &
Development Company