این فایل‌های pyc لعنتی

روی یک پروژه دارم کار می‌کنم که با پایتون۲ نوشتن، مشکلی که توی پایتون۲ هست اینه که پایتون فایل‌های بایت‌کد (pyc) رو کنار همون فایل اصلی سورس می‌سازه، اینجوری خیلی دایرکتوری شلوغ می‌شه و کمی کار کردن با فایل‌ها آزار دهندس. (البته توی پایتون۳ این مشکل یه جورایی رفع شده – پایتون یه فولدر به اسم __pycache__ می‌سازه و فایل‌های pyc رو توش می‌ریزه)

برای حل این مشکل اول فایل‌های pyc رو پاک کنید، سپس اگه از virtualenv استفاده می‌کنید این خط رو ته فایل activate اضافه کنید:

اگر هم از virtualenv استفاده نمی‌کنید می‌تونید اون خط رو ته فایل .bashrc تون اضافه کنید. (هر چند انجام این کار رو توصیه نمی‌کنم)

مشکل کار نکردن کلیدهای media برای بعضی برنامه‌ها

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

این اسکریپت یه ارگومان می‌گیره که عملیاتی که می‌خواید انجام بشه رو مشخص می‌کنه (play, pause, next) سپس دستور انجام این عملیات رو به مدیاپلیرهایی که ازشون ساپورت می‌کنه می‌فرسته. اینجوری می‌تونین مستقیما از این اسکریپت استفاده کنید:

برای استفاده کافیه این اسکریپت رو جایی ذخیره کنید سپس وارد قسمت تنظیمات شورت‌کات‌های کیبورد دسکتاپتون بشید و برای کلیدهای مدیا این اسکریپت با آرگومان مربوطه صدا بزنید.

مثلا من توی xfce اینجوری تنظیمات رو اعمال کردم:
xfce4-keyboard-shortcuts

این اسکریپت الان از deadbeef clementine rhythmbox vlc quodlibet پشتیبانی می‌کنه. احتمالا برای این که پشتیبانی از یه پلیر دیگه رو اضافه کنید فقط کافیه اسم اون رو توی این خط اضافه کنید. (بعضی مدیا پلیرها لازمه قبلش پلاگینی به اسم dbus یا mpris رو فعال کنید.)

یک رابط کاربری خوب برای مفسر پایتون

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

ولی باید قبول کنیم مفسر پایتون رابط کاربری بد و مزخرفی داره، ipython رو تست کردم ولی خیلی دوست نداشم، به نظرم زیادی بود، دنبال یک چیز ساده‌تر بودم

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

اینجا چندتا عکس از این برنامه گذاشتم، این برنامه توی ترمینال اجرا شده

حین کد زدن یه سری کلمات کلیدی رو پیشنهاد می‌ده که برای اوتوکامپلیشن می‌تونید با tab بینشون سوئیچ کنید
bpython-autocomplete
داکیومنت‌های کد رو به این صورت نشون میده
bpython-docs
اینجا من یک کلاس ساده پایتون نوشتم، همینطور که می‌بینید وقتی می‌خام از یکی از توابع اون کلاس استفاده کنم راهنماشو نشون می‌ده (به سینتکس هایلایتینگ زیبا در bpython هم توجه کنید)
bpython-mydocs
ارورها رو هم اینجور نشون می‌ده
bpython-error
اینجا هم یک حلقه for نوشتم
bpython-for

امکان دیگه هم که داره و خیلی خوشم اومد اینه که با ctrl+s می‌تونید کلیه دستوراتی که زدید به همراه خروجی‌هاشون توی یک فایل ذخیره کنید، مثلا دستور بالا (حلقه for) رو توی یه فایل ذخیره کردم:

برای نصب bpython پکیج bpython یا bpython3 رو از پکیح منیجر نصب کنید. یا این که از طریق pip پکیج bpython رو نصب کنید.

حذف یک خط از فایل با sed

مثلا می‌خواهید خط پنجم یک فایل رو پاک کنید:

این دستور خط پنجم فایل ورودی رو حذف و نتیجه رو نشون می‌ده. اگه بخواهید خروجی توی همون فایل ورودی ذخیره بشه این دستور رو بزنید:

پی‌نوشت: البته از دستور awk هم می‌شه برای این کار استفاده کرد
پی‌نوشت: استفاده از head و tail پشت سر هم یک ایده دیگس.

ارسال خروجی یک دستور به کلیپ‌بورد

xclip رو نصب کنید و به این صورت از اون استفاده کنید:

حالا خروجی برنامه توی کلیپ‌بورد شما قرار داره می‌تونید اون رو توی برنامه‌های دیگه پیست کنید.

برای این که راحت‌تر باشید می‌تونید یک alias براش بسازید مثل این (این خط رو توی فایل bashrc تون اضافه کنید)

و از این به بعد به این صورت ازش استفاده کنید:

خیلی کار پیچیده‌ای نیست به نظرم توضیح بیشتری لازم نداره.

البته راه دیگش هم اینه که خروجی رو با موس انتخاب کنید و کپی کنید 😀