پیر پروگرمینگ در محصولات JetBrains

کاور پلاگین Code With Me، محصول شرکت JetBrains
کاور پلاگین Code With Me، محصول شرکت JetBrains

سلام.

حدود ۸ ماهی هست که Jetbrains، پلاگین Code with Me رو معرفی کرده که می‌شه باهاش مثل LiveShare توی VSCode یک محیط برنامه‌نویسی رو توی محصولات Jetbrains مثل IDEA، Pycharm, phpStorm و ... رو بین چند نفر به اشتراک گذاشت و تجربه‌ی برنامه‌نویسیِ باهم رو به شکل دورکاری داشت. توی این پست می‌خوام این محصول و نحوه‌ی استفاده ازش و چندتا تکنیک دیگه برای اینکه بتونیم تجربه‌ی خوبی از Pair programming داشته باشیم باهاتون به اشتراک بگذارم.


نیازمندی‌ها

این ویژگی از نسخه‌ی 2020.2.1 به بعد محصولات Jetbrains اضافه شده، پس لازمه که کسی که می‌خواد میزبان بشه، نسخه‌ی IDEش حداقل 2020.2.1 باشه، اینو بگم که لازم نیست ورژن professional باشه و روی نسخه‌های community هم این فیچر وجود داره.

دقت کنید تقریبا هرچی که می‌گم برای کسی هست که میزبان می‌شه، کسایی که میخوان وصل بشن و میهمان هستن لازم نیست این کارا رو بکنن تا برسیم به بخش میهمان‌ها :دی

نصب پلاگین Code With Me

توی IDEتون برید توی File بعد توی Settings، بعد توی قسمت Plugins، و در قسمت جستجوش، جستجو کنید Code With Me، پلاگین رو پیدا کنید و روی Install کلیک کنید.

صفحه‌ی نصب، تب Plugins و جایی که می‌شه سرچ کرد رو با فلش مشخص کردم، به آیکُن Code with me دقت کنید، اگر نسخه‌تون قدیمی باشه پیداش نمی‌کنید. نویسنده‌ش هم خود JetBrains هستش که توی شکل مشخص کردم.
صفحه‌ی نصب، تب Plugins و جایی که می‌شه سرچ کرد رو با فلش مشخص کردم، به آیکُن Code with me دقت کنید، اگر نسخه‌تون قدیمی باشه پیداش نمی‌کنید. نویسنده‌ش هم خود JetBrains هستش که توی شکل مشخص کردم.


نکته: اگر کلاً قسمت plugins کار نکرد، احتمالا برای اینکه آپدیت شدن jetbrains رو دور بزنید قبلا توی /etc/hosts احتمالا کلا jetbrains رو کاری کردین که یک جای نامعلومی رو ریسالو کنه، برید درستش کنید تا بشه نصب کرد پلاگینو :))

بعد از نصب احتمالاً ازتون می‌خواد که IDEتون رو ری‌استارت کنید. این کارو بکنید.

استفاده از Code with Me برای میزبان

بعد از نصب یک آیکُن برای Code with me به بالا راست صفحه اضافه می‌شه که با اون می‌تونید یک جلسه‌ی جدید کد زدن باهم رو شروع کنید.

با کلیک روی این دکمه، چندتا گزینه داره که می‌تونید یک جلسه‌ی جدید شروع کنید، جلسه رو متوقف کنید و دسترسی‌هایی که آدما دارن رو عوض کنید  و ...
با کلیک روی این دکمه، چندتا گزینه داره که می‌تونید یک جلسه‌ی جدید شروع کنید، جلسه رو متوقف کنید و دسترسی‌هایی که آدما دارن رو عوض کنید و ...


متأسفانه سرور پیش‌فرض Code with me رو نتونستم توی ایران استفاده کنم؛ اما نکته‌ی مثبت و خوش‌حال کننده این است که ورژن on-promise داره و من روی وی‌امم یه دونه‌شو بالا آوردم که شما هم می‌تونید ازش استفاده کنید.

برای این کار از قسمت Files، برید توی Settings؛ بعد برید توی قسمت Code with Me، گزینه‌ی Lobby server URL رو مقدارشو به

https://jetbrains-lobby.atofighi.ir

بگذارید. بعدش که ذخیره کنید و از دکمه‌ی Code with me که بالا راسته سشن جدید بسازید، برای اینکار روی دکمه‌ی Code with me کلیک کنید، بعد Enable Access and Copy Invitation Link کلیک کنید.

توی صفحه‌ی جدید می‌تونید میزان دسترسی آدمایی که به عنوان میهمان اضافه می‌شن رو مشخص کنید، مثلا کلا بهشون دسترسی بدین، فقط دسترسی نوشتن یا خوندن بدین یا اینکه مثلا دسترسی یه سری فایل خاص رو از طریق تب Custom بگیرید. بعدش روی Enable Access کلیک کنید. بعدش یک لینک بهتون داده می‌شه که توی Clipboard هست، لینک شبیه لینکی مثل این است:

https://jetbrains-lobby.atofighi.ir/felaan#p=PY&fp=bahmaan

این لینک رو به دوستتون بدید تا به عنوان مهمان وارد بشه، دقت کنید که بعد از اینکه دوستتون تلاش کرد وارد بشه از شما سوال می‌شه که بهش دسترسی بدین یا ندین. (جلسات حداکثر ۵ نفره می‌تونن باشن.)

اکسپت رو بزنید تا دوستتون اضافه بشه.

پلاگین Code with Me برای میهمان

به عنوان میهمان لازم هست که یک کلاینت خیلی سبک که محیطی شبیه به IDEهای اصلی داره باید نصب کنید، کافی است لینکی که میزبان بهتون داده رو باز کنید.

اگر کلاینت رو از قبل نصب داشته باشید برنامه‌ی IntellJ Client باز می‌شه و منتظر تأیید میزبان می‌شه.

در غیر این صورت روی Something going wrong توی صفحه‌ای که براتون اومده کلیک کنید و آموزش نصب کلاینت رو دنبال کنید.

برای ویندوز باید یک برنامه نصب کنید و برای لینوکس یک دستور رو توی terminal باید اجرا کنید.

خب، بعد از اجرا تقریبا کار تمومه.

یک نمونه از اجرا.
یک نمونه از اجرا.

خب از Pair programming استفاده کنید. نکات و تجربه‌هایی که باعث می‌شه تجربه‌تون بهتر بشه رو در ادامه میگم.

نکات اضافه

فالو کردن و فالو شدن

کنار دکمه‌ی Code with Me در بالا راست، لیست افرادی که توی جلسه هستن رو می‌بینید، اگه روی یه نفر کلیک کنید می‌تونید فالوش کنید، ببینید کجاست و scroll شدن و ایناشون رو هم می‌بینید.

اشتراک ترمینال

می‌تونید ترمینال هم به اشتراک بگذارید، یه مشکلی که من دیدم این بود که وقتی میزبان ترمینال جدید می‌ساخت به اشتراک گذاشته نمی‌شد، ولی میهمان‌ها ترمینال‌هایی که میساختن مشترک بود. فقط دقت کنید که دسترسی ترمینال خیلی دسترسیِ زیادیه، مثلا می‌تونن میهمان‌ها به کل داده‌های کامپیوترتون دسترسی داشته باشن که اگه بهشون اعتماد ندارید ریسک داره :دی

ویس و ویدئو

به نظر توی نسخه‌های جدید‌تر code with me امکان اشتراک ویس و ویدئو با jitsi هم وجود داره، ولی من تست کردم نبود :-( (اگه فهمیدید چجوری باید اضافه بشه به منم یاد بدین :دی) از google meet و اینا می‌شه استفاده کرد و صدا رو هم.

اشتراک سرور!

یکی از چیزایی که خیلی لازم می‌شه مخصوصا وقتی وب پیاده می‌کنیم اینه که مثلاً پورت ۸۰۰۰ رو به اشتراک بگذاریم بین خودمون.

برای اینکار ابزار‌هایی وجود داره که پورت به اشتراک بگذاریم، ابزار مطمئن و راحتی که پیدا کردم https://localhost.run هست، مثلا اگه پورت ۸۰۰۰ رو بخوایم به اشتراک بگذاریم کافی هست این دستور رو توی ترمینال بزنیم:

ssh -R 80:localhost:8000 localhost.run

در جواب بهتون یک url می‌ده که اون رو به اشتراک بگذارید اوکیه. امنیتش هم در اندازه‌ی port forwarding اس‌اس‌اچ هستش و خب دسترسی عجیبی به کامپیوترتون پیدا نمی‌کنه.

امنیت

دقت کنید که کدهاتون توی سرور قرار نمی‌گیره و ارتباط به صورت end-to-end encryption خواهد بود، به همین خاطر نگرانی دزدی شدن کدتون رو نباید داشته باشید.

راه حل‌های آلترناتیو

جز Code with me ابزارهای دیگه‌ای هم هستن که روی jetbrains کار می‌کنن، یکی از نمونه‌هاشون https://www.codetogether.com هست، این لینک یک مقایسه بینشون انجام داده (البته فکر کنم کمی دقیق نیست مقایسه‌ش) و می‌تونید انتخاب کنید.

در آخر

خب، حرفام تموم شد. کلاً که از اهمیت Pair programming و مزایاش هرچی بگیم کمه و دوران دورکاری باهم کد زدن خیلی کم شده، اگه تجربه‌ی خوبی داشتید یا ابزاری می‌شناسید که تجربه‌ی خوبی ازش داشتید لطفا توی دیدگاه‌ها به منم معرفی کنید.

فازو داشتید دوست دارم در آینده در بلاگم هم ازین مدل مطالب بذارم (ان‌شاءالله) و دنبالم کنید :دی

دمتون گرم.