بایگانی برچسب: s

پاس چیه، چرا باید ازش استفاده کنیم و معرفی یه پاس برای تمرین و پروداکشن

قدیم‌ها وقتی یه سرویس می‌نوشتیم، مجبور بودیم سخت افزارش رو بذاریم در یک دیتا سنتر و به اینترنت وصلش کنیم و روش سیستم عامل نصب کنیم و … اما بعد که vps ها اومدن، حداقل دردسر سخت افزار از سر ما باز شد و یکضرب یه سیستم‌عامل داشتیم که باید کانفیگش میکردیم تا مثلا بتونیم جنگو، لاراول یا دیتابیس خودمون رو روش اجرا کنیم. اینو می دونستین؟ حتما می دونستین پس بذارین از یه جای جالب دیگه شروع کنم (:

تو نرم افزار اصطلاح مهمی هست به اسم Yaak Shaving یا تراشیدن موهای گاومیش. بحث هم سر اینه که وقتی مثلا تصمیم می‌گیرین پایه‌های میز ناهار خوری رو محکم کنین، اول باید صندلی هاش رو بذارین جایی مثل انباری که بشه میز رو جابجا کرد ولی می بینین تو انباری جا نیست و مجبورین لباس های قدیمی که اونجا انبار شده رو تحویل یه خیریه بدین ولی چون تو ماشین خودتون جا نمی شه باید زنگ بزنین به یه دوست قدیمی که وانت پراید داره و … و یکهو می بینین چون می خواستین میز ناهارخوری رو عوض کنین، مشغول تراشیدن موهای یه گاومیش هستین (: این تو دنیای نرم افزار خیلی زیاد اتفاق می افته. شما می خواین برنامه ای که نوشتین رو بذارین روی یک سرور ولی می بینین که سه روز مشغول کمپایل یه ماجول یا درست کردن مکانیزم های آپدیت یا بک آپ اتوماتیک و این چیزها هستین.

این مشکل رو توی دنیا، پاس حل می کنه. همون PaaS یا Platform as a Service. پلتفرم اونجایی است که برنامه شما روش اجرا می شه و اگر یه VPS خریده باشین شامل کارهایی می شه مثل درست کردن شبکه اون سرویس، راه انداختن گیت روش، تنظیمات امنیتی، آپدیت کردن، ساختن یوزرها، دسترسی به دیتابیس و غیره و غیره. بعدها هم آپدیت کردنش، خالی کردن هاردش، ارتقاء سخت افزارش و غیره و اطمینان از اینکه بعد از این کارها همه چیز درست کار می کنه. حالا فرض کنین یه شرکت بیاد و این خدمات رو به شما بده و بگه شما کافیه فقط نگران دیتا و برنامه‌تون باشین و بقیه چیزها شامل راه اندازی سرورها، استورج، مجازی‌سازی، سیستم عامل، شبکه و … با اونهاست. این شرکت کلی کار شما رو ساده و امن می کنه. توی این سیستم یکسری سرویس مرسوم از پیش تنظیم شده هست که شما می تونین انتخابشون کنین. مثلا می تونین بگین یه دیتابیس پستگرس یا مای‌اسکوئل لازم دارین و اون به شما یوزر و پسورد و روش اتصالش رو می ده. یا ممکنه بگین نیاز به جایی دارین که بتونه پروژه جنگوی شما رو اجرا کنه یا اصولا در سطحی دیگه، یه کانتینر (مثلا داکر) بهش بدین و بگین سه تا ازش بالا باشه و اگر لازم شد تا ۷ تا هم از اون بیاره بالا. این می شه یه سرویس پاس. سرویسی که کلی از زحمات ما به عنوان مدیر سیستم رو کم می کنه و اجازه می ده روی بخش معماری و برنامه نویسی مون تمرکز کنیم. همچنین انتظار می ره از هر چیزی که خودمون سر هم کرده باشیم، امن تر و قابل توسعه تر باشه.

هر پاسی، معمولا برنامه های کامند لاین خودش رو داره که اجازه می ده بگین «برنامه های داخل این دایرکتوری رو با یه پلتفرم با فلان مقدار رم و سی پی یو بیار بالا». با تنظیمی مثل این:

kind: ExternalService
name: mywebsite
spec:
  image_pull_policy: Always
  port: 80
  source:
    context: .
    media_path: ''
    project_type: django
    python_version: '3.5'
    static_path: static
    wsgi: fandoghapp.wsgi
  env:
    - name: Mysql_Host
        value: db
    - name: Mysql_Password
        value: 123456
    - name: Mysql_User
        value: root
    - name: DB_Name
        value: myDatabaseName

می تونین این رو بنویسین و بعد با استفاده از کامند لاینی که پاس بهتون داده، کد رو پوش کنین و کاری نداشته باشین سیستم عامل اصلی چیه یا چقدر رم داره یا چقدر سی پی یو یا آپدیت شده یا نه. در واقع در پاس ها، شما مسوولیت مدیریت سیستم و غیره رو می سپرین به یکی دیگه و فقط می گین «این کد رو روی سروری با فلان مقدار رم و سی پی یو اجرا کن» و خلاص (:

توی دنیا پاس های مشهوری مثل هروکو هستن که باعث می شه راه اندازی کد، بی نیاز از کارهای مدیر سیستمی بشه ولی خب تو ایران بهشون دسترسی نداریم. اما چند ماه قبل که از نگهداری سرور یه پروژه خسته شده بودم، سرچ کردم و دیدم توی ایران یه پاس هست به اسم فندق و بعد از مدتی تلاش و صحبت با ساپورتشون که خیلی هم با حوصله کمک می کرد، موفق شدم پروژه رو منتقل کنم اونجا و از اون موقع هیچ مشکلی نداشتم و کارهای حتی فان بعدی رو هم با فندق پیش بردم. به نظرم داکیومنت هاشون خیلی خوبه و ساپورتشون از داکیومنت ها هم بهتر. در ضمن دونستن و یادگرفتن کار با پاس،‌ کمی کار می بره ولی جزو مهارت هایی است که خیلی مهمه یه آدم فنی داشته باشه. پیشنهاد می کنم حتی به شکل تفریحی هم که شده، یه چیز کوچیک با سرورهای رایگانشون بالا بیارین – هرچند که به نظرم سرویس رایگانشون برای اکثر کارهای واقعی (حتی شخصی) خیلی کمه؛ ولی برای یادگیری کافیه.

این تبلیغه؟ (: بستگی داره به چی بگین تبلیغ. خودشون نمی دونن من دارم این رو می نویسم و نه فقط بهم پولی ندادن، که پول تک تک کارهایی که روشون کردم رو هم دادم و خواهم داد (: اما به این معنی تبلیغ/آگاهی است که : یه چیز خوب اونجاست که خوبه اگر لازم دارین استفاده اش کنین + یک مهارت مهم هست که خوبه یادش بگیرین. ولی خوب توی این دنیای مهمل این روزها، آدم از هر چی تعریف کنه حتما خواهد شنید: پول گرفته که می گه (: البته من ترجیح می دم پیش فرض این باشه چون واقعا تقریبا همه پول می گیرن که از هر چیزی که پول می ده، تعریف کنن (: به قول معروف «خیلی هاتون پرسیده بودین پس بکشین بالا» ((:

برای اینکه لینک گم نشه: این شما و این فندق و البته دوستان از پشت صحنه تذکر می دن که لیارا هم هست که من همین الان دارم تجربه اش کنم (:

وضعیت کرنل لینوکس در ۲۰۲۰

رسمی هست که بعضی‌ها هر سال وضعیت کرنل رو بررسی می‌کنم. منظورم وضعیت کد، فایل ها، کامیت‌ها و برنامه‌نویس هایی است که این کامیت‌ها رو انجام دادن. بر اساس آمار اولین روز ۲۰۲۰، کرنل لینوکس ۲۷میلیون و ۸۵۲هزار و ۱۴۸ خط است۷ شامل داکیومنت‌ها، کانفیگ ها، ابزارهای یوزر اسپیس و ..). این کرنل ۸۸۷هزار و ۹۲۵ کامیت داشته که محصول کار ۲۱۰۷۴ نفر آدمه. این ۲۷.۸ میلیون خط کد، در ۶۶هزار و ۴۹۲ فایل تقسیم شده.

در طول ۲۰۱۹، کرنل لینوکس ۷۴۷۵۴ کامیت دریافت کرده که از تاریخ ۲۰۱۳، پایین ترین رقم است! کامیت‌ها در سال‌ ۲۰۱۸ و ۲۰۱۷، حدود ۸۰هزار تا بوده و در ۲۰۱۶ حدود ۷۷هزار تا ودر سال های ۲۰۱۴ و ۲۰۱۵، ۷۵هزار. این کمتر شدن نویسندگان در مقایسه ۲۰۱۹ و ۲۰۱۸ هم وجود داشته. در ۲۰۱۹ تعداد نویسندگان ۴۱۸۹ بوده که کمی کمتر از عدد ۴۳۶۲ مربوط به سال ۲۰۱۸ است و البته بیشتر از عدد ۴۰۴۲ سال ۲۰۱۷. البته این کم تر شدن کامیت‌ها، در سطح کد تاثیر زیادی نداشته و با ۳میلیون و ۳۸۶هزار و ۳۴۷ خطی که امسال به کرنل اضافه شده (و البته ۱میلیون و ۶۹۶هزار و ۶۲۰ خط حذف شده)، میزان رشد کنترل تقریبا شبیه هر سال است.

از نظر فردی، بعد از خود توروالدز، دیوید اس میلر، کریس ویلسون، یوهابینینگ و کریستوفر هلویگ و توماس گلیزنر، بیشترین مشارکت رو در توسعه کرنل داشتن. در سطح شرکت‌ها هم مثل همیشه اینتل و ردهت فعالترین‌ها به آپ‌استریم بودن.

برای دیدن اطلاعات بیشتر می تونین به صفحه گیت استت نگاه کنین و برای درک بهتری از پروژه، این خروجی cloc است که کارش شمردن خطوط کد و نمایش آماری اون است. اگر count lines of code یا همون cloc رو روی کرنل اول ۲۰۲۰ رو اجرا کنیم، نتیجه اینه:

   66449 text files.
   66000 unique files.                                          
   11119 files ignored.

github.com/AlDanial/cloc v 1.82  T=67.33 s (822.2 files/s, 388799.5 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
C                                    27961        2761653        2292505       14061980
C/C++ Header                         19875         531782         956091        4300989
reStructuredText                      2153         101820          53725         270579
Assembly                              1320          46971         101470         230117
JSON                                   273              0              0         161955
Bourne Shell                           577          13299           9690          52817
make                                  2531           9485          10644          41766
SVG                                     58            117           1364          36216
Perl                                    59           6021           4422          30642
Python                                 118           4987           4588          26256
YAML                                   325           5205           1449          25529
yacc                                     9            697            359           4810
PO File                                  5            791            918           3077
lex                                      8            326            300           2015
C++                                     10            320            129           1933
Bourne Again Shell                      51            356            297           1765
awk                                     10            140            116           1060
Glade                                    1             58              0            603
NAnt script                              2            146              0            551
Cucumber                                 1             28             50            174
Windows Module Definition                2             15              0            109
m4                                       1             15              1             95
CSS                                      1             28             29             80
XSLT                                     5             13             26             61
vim script                               1              3             12             27
Ruby                                     1              4              0             25
INI                                      1              1              0              6
sed                                      1              2              5              5
---------------------------------------------------------------------------------------
SUM:                                 55360        3484283        3438190       19255242
---------------------------------------------------------------------------------------

اگر هم دوست دارین کرنل رو درک کنین۷ این کتاب قدیمی شروع خوبیه «درک کرنل لینوکس / لینک آمازون.

منبع اصلی

مشکل نرم‌افزاری پارکومترها، در ۲۰۲۰ اونها رو از کار انداخت

ماجرای باگ سال ۲۰۰۰ خیلی پر سر و صدا بود ولی عملا خطری درست نکرد. بحث این بود که شاید در حین سوییچ از سال ۱۹۹۹ به ۲۰۰۰، بعضی برنامه نویس ها سال رو فقط در رقم عوض کرده باشن و وقتی سال از ۹۹ تبدیل به ۰۰ می شه، کامپیوتر فکر کنه زمان به عقب برگشته و اتفاقات عجیبی بیافته. اما تقریبا هیچ اتفاق مهمی نیافتاد.

اما حالا در ۲۰۲۰ یه اتفاق بانمک داشتیم: از کار افتادن تعداد زیادی از پارکومترهای همه دنیا از نیویورک سیتی تا استرالیا. سازمان حمل و نقل می گه چون برنامه ای که در این پارکومترها استفاده شده با سال ۲۰۲۰ منطبق نیست، پارکومترها نمی تونن کردیت کارت قبول کنن و فقط با سکه یا اپ مخصوصشون می شه بهشون پول پرداخت کرد. این پارکومترها که توی شهر نیویورک سیتی هم هستن، توسط شرکت Parkeon نصب شدن و ظاهرا آپدیت مناسب رو دریافت نکردن و حالا لازمه که تک به تک سراغشون رفت و آپدیتشون کرد، حدود ۱۴۰۰۰ پارکومتر که حدود ۸۵۰۰۰ جای پارک رو مدیریت می‌کنن.

اگر شما هم برنامه‌ای می‌نویسین یادتون باشه ممکنه مدتی بسیار طولانی تر از اونی که فکر می کنین، فعال بمونه و خوبه که از روز اول حواستون به این مساله باشه، بخصوص تو ایران که ما به زودی با مساله «سال ۱۴۰۰» روبرو خواهیم بودیم و لازمه برنامه‌هامون تاریخ‌ها رو درست ذخیره کنن.

توییتر در تدارک یک «استانداردِ بازِ نامتمرکز» برای شبکه‌های اجتماعی است

بحث تمرکز در مقابل عدم تمرکز بحث خیلی مهمی در دنیای تکنولوژی است. از یک طرف جامعه به سمت سیستم های نامتمرکز علاقه داره که باعث به وجود آمدن چیزهایی مثل ایمیل و بیت کوین شده. اما حضور شرکت های بزرگ در همه این سال ها سیستم ها رو به سمت تمرکز سوق داده. از چیزهایی مثل تلگرام و فیسبوک گرفته تا حتی جیمیلی که باعث شده یکی از نامتمرکزترین تکنولوژی ها یعنی ایمیل، یک جور مرکزیت بزرگ پیدا کنه.

حالا توییتر و جک دورسی حرفی خلاف این روند عمومی زدن که به نظرم نکته مهمیه. جک دورسی توی توییتی گفته که گروه کوچیک و مستقلی رو فاند می کنه که بتونه با حضور مهندسان و طراحان، استاندارد باز جدیدی برای شبکه های اجتماعی نامتمرکز درست کنن. از اون جالبتر اضافه کرده که هدف طولانی مدت این پروژه اینه که بعد از ساخته شدنش، توییتر بتونه به عنوان یک کلاینت سازگار با اون کار کنه.

برای درک بهتر ماجرا، می تونین به همون مفهوم ایمیل رجوع کنین. ما در ایمیل یک پروتکل عمومی داریم که همه قبولش دارن (مثلا SMTP) و هر کس می تونه با استفاده از هر سرور یا کلاینتی، ایمیل خودش رو بسازه. حالا اگر من از jadi@jadi.net یه ایمیل بزنم به jadijadi@gmail.com، سرور من متوجه می شه که این روی سرور gmail.com است، به اونجا وصل می شه و با همون پروتکل استاندارد به gmail.com می گه که یه ایمیل برای یوزر jadijadi داره و تحویلش می ده. این مساله کاملا مستقل از اینه که من از چه برنامه ای برای سرور یا کلاینت ایمیلم استفاده می کنم و این سرورها هر کدوم چند تا یوزر دارن و بقیه موارد.

در نمونه مشابه، اگر یک پروتکل استاندارد باز برای شبکه های اجتماعی موجود باشه، کافیه من یک سرور منطبق با اون رو راه اندازی کنم و بتونم توش پست بنویسم و هر کسی که توی هر شبکه دیگه ای منو فالو می کنه، آپدیت من رو خواهد دید و می تونه بهش ریپلای بزنه و … در واقع این مفهوم «من تو توییتر هستم و تو توی فیسبوک پس نمی تونیم با هم گپ بزنیم» بر طرف می شه، درست همونطور که الان اگر من توی یاهو باشم و شما تو جیمیل، می تونیم به هم ایمیل بزنیم. در اون دنیا، کافیه شما توی یکی از این شبکه ها باشین (مثلا jadi@twitter.com) و هر کس از هر شبکه دیگه می تونه اکانت شما رو دنبال کنه و نوشته های شما رو توی کلاینت خودش ببینه و به شما جواب بده.

البته لازمه بدونیم که در حال حاضر تلاش هایی برای ساخت شبکه های اجتماعی غیرمتمرکز وجود داره که احتمالا مشهورترین اونها ماستودون است که اگر دوست داشتین به جمع کوچیکش بپیوندین، می تونین صفحه من رو هم اونجا ببینین: جادی رو ماستودون.

برای ایده هایی مشابه در مورد چت می تونین به این مطلب میدان مراجعه کنین که البته نقدهایی به مطلبش هست ولی ایده مشابهی رو پرورش می ده.

پایتون با جلو زدن از جاوا، به دومین زبان پر طرفدار گیت هاب تبدیل شد

در گزارش جدید گیت هاب که تحت عنوان «وضعیت اکتوورس» (اشاره به octocat که نماد گیت هاب است) منتشر می شه پایتون از جاوا جلو زده و بعد از جاوااسکریپت، دومین زبانی است که رپوزیتوری‌هاش بیشترین مشارکت رو جذب میکنن.

البته پایتون سریعترین زبان در حال پیشرفت نیست. این رکورد متعلق به دارت است که امسال ۵۳۲ درصد پیشرفت داشته – منطقا به خاطر فلاتر که فریمورک کراس پلتفرم گوگل است. رتبه بعدی مربوط می‌شه به راست که ۲۳۵ درصد پیشرفت کرده. پیشرفت پایتون در این یکسال ۱۵۱ درصد بوده که برای زبانی که پیش از این هم جزو ۳ زبان برتر ماجرا بوده، پیشرفت بسیار قابل ملاحظه‌ای است.

صدر جدول مشارکت کنندگان هم که به جاوااسکریپت اختصاص داره که منطقی هم هست: تقریبا صد در صد فرانت اند وب با این زبان کار شده و کتابخانه های عظیم مرتبطش، اونو حالا حالاها در جایگاه اول نگه خواهد داشت.

هکرهای روسی «خرس تنبل» بعد از سال‌ها مخفی بودن، کشف شدند

اسم تیم هکری، Cozy Bear است و تنبل شاید ترجمه مناسبی نباشه اما این خیلی مهم نیست. نکته مهم این تیم هکری که احتمالا به دولت روسیه نزدیکه، اینه که چند سال با ابزارهایی که قبلا شناخته شده نبود کار می کردن و لو نرفتن. در واقع بخش جذاب «عملیات روح» شیوه ارتباط کامپیوترهای هک شده با سیستم دستور و کنترل (Command and Control) یا به شکل مخفف C2 است.

مساله اینه که اگر شما یه کامپیوتر رو هک کنین، این کامپیوتر باید با یک مرکز تماس بگیره و اطلاعات رو به اون بفرسته و دستورات بعدی رو دریافت کنه. این مساله همیشه دردسر درست می کنه چون با لو رفتن اون مرکز، کامپیوترهای هک شده هم لو می رن یا اصولا ارتباطشون با هکرها قطع می شه.

تیم خرس تنبل از ۲۰۱۳ با اسم هایی مثل CozyDuke و APT29 و CozyCar و Office Monkey مورد اشاره قرار گرفته و جاهایی مثل وزرای اروپایی و سفارت آمریکا و اخیرا دولت نروژ رو هدف قرار داده. ظاهرا اونها با فیشینگ (ماحی گیری) کامپیوترها رو آلوده می کردن و بر اساس اهمیت اون کامپیوتر، بک دورهای دیگه ای روش نصب می کردن. اما نکته بامزه، شیوه ارتباط این بک دورها با C2ها است.

همونطور که توی عکس بالا می بینین حداقل از ۲۰۱۴، ابزارهای دوک (شامل مینی دوک و پالی گات دوک) برای ارتباط از شبکه های اجتماعی مثل ردیت، توییتر و ایمجر استفاده می کنن. در اصل اونها یو آر ال های کد شده سرورهای فرمان و کنترلشون رو تو این شبکه ها می ذارن و کامپیوترها آلوده با چک کردن این لینک ها، به سرورهای C2 متصل می شن! مثلا این توییت هم حاوی یه یو آر ال کد شده است که کامپیوترهای آلوده شده با چک کردن اونها کشف می کنن قراره به کجا وصل بشن.

کدی که می تونه از بیت مپ تصویری که توی یه سایت به اشتراک گذاری تصویر، یو آر ال رو در بیاره چنین چیزی می شه:

برای دیدن گزارش کامل ESET از ابزارهای کوزی بیر، این لینک رو نگاه کنین. ESET از روی تاریخ کمپایل ابزارها معتقده کمپین عملیات روح، از حوالی ۲۰۱۳ شروع شده و تا الان ادامه داره هرچند که بعد از این گزارش مطمئنا دیگه اونها رو نخواهیم داد و احتمالا به شکل جدیدی کارشون رو ادامه خواهند داد. یادتون باشه که ندیدن هکرها به معنی نبودن هکرها نیست (:

چطوری سورس بخونیم؟ دوره بلاکچین و رمزارزها و بیت کوین – جلسه ۰۰۷ – خوندن سورس بیت کوین

این اصطلاح «چطوری سورس بخونیم» نسبتا غیردقیقه. در واقع هر سورسی یک جور است و هر آدمی یه روشی برای شروع به خوندنش داره. بعضی ها از برنامه های تحلیل استفاده می کنم و بعضی ها از اولین تابع شروع می کنین و بعضی ها با سرچ و رسیدن به بخش مورد نظرشون سعی میکنن یه درک عمومی از کد پیدا کنن و بعد بخش های مورد نظر رو بخونن و هی عمیق تر بشن. من معمولا روش سوم رو دارم. اصطلاحا می گم در مواجهه با یک تابلو، باید اول کلش رو نگاه کرد و لذت برد و فهمید و بعد دقیق شد در جزییات. یکی دیگه شاید فکر کنه روش بهتر خوندن لوپ اصلی یا شروع برنامه است و دیدن اینکه در کل داره چیکار می کنه.

به هرحال، در این قسمت از مجموعه دوره بلاکچین و رمزارزها و بیت کوین (که لایو استریم می شه و توی توییتر و کانال تلگرامم خبرش رو می زنم) رسیدیم به جایی که می خوایم اولین نگاه رو به سورس بیت کوین بندازیم و چند تا سوال بچه ها رو از روش جواب بدیم. سوال ها اینها هستن:

  • یک نود که برای اولین بار اجرا می شه، از کجا می فهمه چطوری باید به شبکه وصل بشه؟
  • ماینر چطوری بلاک رو از شبکه می گیره و سعی می کنه اونو ماین کنه؟
  • اگر کسی هی روی شبکه چرت و پرت بفرسته و انرژی بقیه رو بیخودی حروم کنه، چی می شه؟

معلومه که این بالا و پایین کردن سریع کد به معنی «فهم» کند تیست بلکه بحث ریختن ترس است (: و پیدا کردن یک نقطه شروع. اکثر چیزهای سخت، سختن چون شروعشون رو عقب می ندازیم چون هی به کلش نگاه می کنیم و حاضر نیستیم از یه جای ریزش وارد بشیم. دقیقا به یک کوه فکر کنین که از دور نگاهش میکنین و می گین «واقعا چطوری باید از این رد شد؟» ولی وقتی قدم تو راه می ذارین و ادامه می دین، یکهو می بینین که رد شدین. به نظرم بهترین مثاله برای خوندن یه سورس بزرگ.

معلومه که برام خوشحال کننده است اگر بحث رو دوست دارین، عضو کانال های یوتوب و آپارات و توییچ بشین (:

پیدا کردن ایشوهای ساده برای مشارکت در هکتبرفست

ما همیشه می گیم «در پروژه های ساده مشارکت کنین» ولی جواب بعدی رو کمتر می دیم که «اون که کلیه، خب من دقیقا از کجا شروع کنم؟». اگر مهارتی بلد هستین که در دنیای نرم افزار آزاد ارزشمند است،این مطلب سعی می کنه جواب دقیق‌تری به شما بده. این مهارت هم لازم نیست حتما برنامه نویسی باشی. گاهی آدم ها نیازمند ترجمه، داکیومنت کردن، گرافیک، لوگو و چیزهای مشابه هستن و هکتبرفست فرصتی خوب برای این شروع است.

در واقع ایده اصلی هکتبرفست اینه که دست شما در کارهای واقعی روون‌ بشه. در نتیجه اگر مهارتی دارین که فکر می کنین به اندازه کافی توش پیش رفتین و می تونین کارهای واقعی بکنین الان باید آستین بالا بزنین. در هر حوزه ای که باشین یاد گرفتن گیت و درک عمومی مفهوم پول ریکوئست قدم اوله – البته با فرض اینکه در حد برقراری ارتباط، از پس زبان بر میاین. بعدش باید یک پروژه پیدا کنین که توش مشارکت کنین. خیلی از پروژه ها در صفحه issue (مشکلات) می نویسن چه مشکلاتی دارن یا قدم بعدی شون چیه. اونها همچنین برای پیدا شدن راحتتر مشکلات آسونی که یه تازه کار می تونه برش داره، برچسب هایی مثل up for grabs، low hanging fuit و از بیشتر good first issue می زنن تا بگن این مساله، به نظرشون پیچیدگی خاصی نداره و مناسبه برای کسی که تازه می خواد با ماجرا آشنا بشه.

پس کافیه به گیت هاب برین و در سرچ بار چیزی مثل این بزنین

label:"good first issue" type:issue state:open

و در نتایج، بخش issue ها رو انتخاب کنین. معمولا اونهایی که کامنتشون صفر است انتخاب های بهتری هستن چون هنوز کسی روشون کار نمی کنه. همچنین می تونین با اضافه کردن language:rust یا هر زبانی که دوست دارین، زبان پروژه رو هم انتخاب کنین. معلومه که css و html هم جزو گزینه ها هستن.

شاید بعضی ها تمرکز بیشتری روی پروژه داشته باشن و بعضی ها روی خود ایشو. مثلا ممکنه من بخوام حتما در پروژه ای ایشو حل کنم که خودش هم چیز باحالیه. یا شاید بخوام در یک پروژه بسیار ساده، یه ایشوی خیلی ساده پیدا کنم که بهم اجازه مشارکت بده. هر کدوم که باشه در نهایت شما چند تا ایشو می بینین و یکیش به نظرتون جالبتر میاد.

در این مرحله خیلی خوبه سری بزنین به سورس کد، اونو بگیرین و راهنمایی های احتمالی یا شیوه های مشارکت (ممکنه مثلا فایل CONTRIBUTE باشه اسمش) رو بخونین. تقریبا بعد از اینکه مطمئن شدین از پس حل کردن اون مساله بر میاین مراحل اصلی اینها هستن:

  • زیر ایشو بنویسین که علاقمند هستین روی این کار کنین. مثلا May I start working on this؟
  • پروژه رو Fork کنین تا پروژه روی اکانت شما هم بیاد
  • پروژه رو از اکانت خودتون کلون کنید رو کامپیوتر خودتون
  • یه برنچ جدید باز کنید. مثلا به اسم ایشویی که دارین حل می کنین
  • تغییرات رو انجام بدین و تست کنین و مطمئن بشین دقیق است. اگر لازمه در ایشو از صاحب پروژه نظر بخواین در مورد راه حل و شیوه انجاممش و …
  • کد خودتون رو به گیت هاب خودتون پوش کنین (git push origin branch_name)
  • حالا اگر به صفحه اصلی پروژه برین، می بینین که یه دگمه اومده برای ساخت پول ریکوئست جدید. اونو که فشار بدین می تونین بگین برنچ روی فورک شما رو مرج کنه روی پروژه اصلی. خوبه توی توضیحات دقیق بگین چیکار کردین و یه لینک هم به ایشو بدین که گیت هاب اتوماتیک زیر ایشو هم لینک پی آر شما رو بزنه

و منتظر باشین (:

درسته که اگر ۴ تا پی آر بزنین ممکنه بهتون یه تی شرت بدن ولی این فرصتی خوبه که یه قدم بالاتر از جایی که هستین بیاین و شروع کنین مشارکت در یک پروژه و سواد تئوری تون رو توی یک پروژه واقعی به کار ببرین. خیلی وقت ها شما که کد رو شناختین به کار ادامه می دین و ایشوهای بیشتری حل می کنین و از آدم های مهم همون پروژه می شین (:

این وسط آدم‌های زیادی هم سعی کردن سایت / ریپوزیتوری هایی بسازن که توش این تیپ ایشوهای راحت رو یکجا جمع کنن، به تفکیک زبان یا چنین چیزهایی. مثلا Up For Grabs یا ایشو هاب یا First Timers Only یا مجموعه مشهور Awesome For Beginners ولی اگر نظر من ر می خواین، همون تکنینک سرچ بهتر جواب می ده‌ (: