خوندن پسورد با پایتون

توی دنیای پایتون تقریبا می‌تونین مطمئن باشین که همیشه برای اکثر کارهای معقول، یه کتابخونه وجود داره. خوندن یه ورودی به شکلی رو صفحه نشون داده نشه هم کار معقولی است، در نتیجه حتما براش کتابخونه هست. کتابخونه‌ getpass رو در کتابخونه استاندارد داریم که موقعی که اگر به شکل

getpass.getpass('password:')

صداش بزنین، می‌نویسه passwrod و منتظر می‌مونه ورودی بدین. بعد بدون اینکه رو صفحه چیزی نشون بده، بعد از زدن انتر ورودی رو برمی‌گردونه. نسبتا بی‌مزه ولی کارا. برای بامزه‌تر کردنش، کتابخونه stdiomask رو داریم:

import stdiomask

stdiomask.getpass(prompt = 'Password: ')

که خب می‌پرسه پسورد و به جای چیزهایی که شما وارد می کنین، * می‌ذاره یا می‌تونین با پارامتر mask بهش بگین چی‌بذاره.

حرکت سریع و ساده بین ورک‌اسپیس‌های گنوم

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

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

اما مشکلی که دارم اینه که توی گنوم جدید (این چند سال!) به حالت پیش فرض این صفحه ها زیر هم قرار گرفتن و اگر بخوام از اولی به نهمی برسم باید هی کنترل آلت پایین رو بزنم و سر راه هم از همه چیزهای دیگه رد بشم. منطقا اگر اینها یه دیوار ۳ در ۳ بودن خیلی راحتتر به مقصد می رسیدیم. راه حل؟ قبلا یه پلاگین داشتم که اینها رو به شکل دیوار ۳ در ۳ می چید ولی از امروز تصمیم گرفتم با شورتکات بین اینها حرکت کنم. اینجوری تو کامند لاین می شه گفت که کنترل آلت n بره به ورک‌ اسپیس n. گفتم شاید به درد شما هم بخوره:

dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-1 "['1']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-2 "['2']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-3 "['3']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-4 "['4']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-5 "['5']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-6 "['6']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-7 "['7']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-8 "['8']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-9 "['9']"

خروجی عجیب پایپ لاین یونیکس، این رو امتحان کنین و سوادتون رو عمیق تر کنین

اگر از یونیکس / لینوکس / مک و کامند لاین های مشابه استفاده می کنین خروجی این دستور رو چک کنین:

(echo red; echo green 1>&2) | echo blue

خروجی به شکل جالبی ممکنه هر کدوم از اینها باشه:

blue
green

یا

green
blue

یا

blue

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

اما ببینیم اینجا وضع چیه. ما داریم دو تا کامند echo اجرا می کنیم و خروجی رو پایپ می کنیم به یک echo دیگه. مساله اینه که پرانتز یک شل جدید درست می کنه و اکو دستور داخلی شل است. پس ما دو تا اکو داریم که با هم مسابقه می ذارن.

توجه کنید که اگر echo red اجرا بشه، خروجی اش به عنوان ورودی به echo blue داده می شه که تاثیری نداره.

یک چیز دیگه رو هم اینجا باید بلد باشیم و اون SIGPIPE است. توی یونیکس پروسه رو با سیگنال ها کنترل می کنیم و وقتی می گیم kill -9 folan در واقع با فرستادن سیگنال ۹ به فلان، مجبورش کردیم سریعا قطع بشه. یک سیگنال SIGPIPE هم داریم که برابر عددی اش ۱۳ است و وقتی ارسال می شه که یک پروسه سعی کنه روی پایپی که بسته شده بنویسه. این کار باعث پایان کار اون پروسه می شه. این رو هم می دونیم که echo دستور داخلی است و وقتی در داخل یک شل اجرا می شه، تنها یک پروسه داره – حتی اگر دو بار اجرا بشه.

حالا برگردیم سر عبارت قشنگمون:

(echo red; echo green 1>&2) | echo blue

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

  1. هر دو اکوی سمت چپ تموم می شن و بعد اکوی سمت راست اجرا می شه. اینجا اول سبز چاپ می شه و بعد آبی
  2. اکوی قرمز چاپ می شه (و کاربردی نداره چون به ورودی اوکی بعدی تبدیل شده که بی معنیه) و بعد اکوی آبی تموم می شه و بعد اکوی سبز. در اینجا SIGPIPE نداریم چون اکوی سمت چپ در حال اجرا است و نتیجه «آبی سبز» خواهد بود.
  3. اول از همه اکوی آبی اتفاق می افته و قبل از اینکه اکوی قرمز تموم بشه و چیزی روی پایپ بیاد، SIGPIPE رو می فرسته. اینکار کل شل داخل پرانتز سمت چپ رو می بنده و نتیجه فقط آبی است

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

جادی تی وی – بررسی دو ترفند هیجان انگیز هکرهای روس در نوشتن بدافزار تورلا

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

اشتباه زدم، فاک!

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

برنامه با پایتون است و برای نصبش کافیه بزنین:

sudo -H pip install thefuck

و بعد از اولین fuck، خودش راهنمایی می کنه که چی رو باید کجا بنویسین. احتمالا یک کد کوتاه رو در bashrc. یا zshrc. و بعد اجرای دوباره bash یا zsh.

راه انداختن کلیدهای تغییر روشنایی لپ‌تاپ ایسوس ذن‌بوک روی لینوکس

روی لپ‌تاپ Zenbook UX310 ایسوس اوبونتو و فدورا رو تست کردم و همه چیز بدون هیچ مشکل کار می کنه. البته اصلا سراغ کارت گرافیکی بازی نرفته ام ولی دیفالت کار می کنه. تنها چیزی که یکضرب کار نکرد کلیدهای تغییر روشنایی بود.

برای راه انداختنشون کافیه فایل

 /etc/default/grub

رو ادیت کنیم و خط زیر رو به آخرش اضافه کنیم:

GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi="

این باعث می شه عبارتی که اضافه کرده ایم به انتهای فایل‌های تنظیمات گراب اضافه بشه. بر اساس اینکه لپ‌تاپ efi است یا بایوس لازمه که تنظیمات گراب رو دوباره ایجاد کنیم. روی لپ تاپ من که fedora داره و uefi، این دستور اینکار رو می کنه:

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

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

بعد از ریبوت، دگمه‌های کم و زیاد کردن نور صفحه نمایش من کار می ‌کنن.

پروسه ضبط جادی تی وی ها؛ ضبط تصویر دوربین و اسکرین کست صفحه و صدای میکروفون روی لینوکس

در ضبط جادی تی وی‌ها می‌بینین که من تصویر دوربین رو گوشه صفحه دارم و همزمان تصویر صفحه رو ضبط می کنم (اسکرین کست) و صدای خودم رو هم کنارش می ذارم و در نهایت فایل هایی که تولید می کنم اندازه و کیفیت کاملا قابل قبولی دارن. زیاد پرسیده می شه اینکار چطور انجام می شه.

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

ترکیب کار من در واقع چهار قسمته: نشون دادن دوربین، ضبط تصویر و صدا در شرایطی که دوربین روی صفحه نشون داده می شه و بعد کمی ادیت کردن و در نهایت کوچیک کردن فایل نهایی. بذارین قدم ها رو با هم چک کنیم.

نشون دادن وبکم روی صفحه

اینجا من به سادگی یک کد دارم:

mplayer -tv driver=v4l2:width=320:height=240: -vo xv -vf mirror tv://  -geometry "99%:99%" -noborder -ontop

این کد از برنامه mplayer استفاده می کنه و بهش می گه ورودی رو از دوربین بگیر و با ابعاد فلان و بهمان در فلان گوشه نشون بده بدون اینکه کادر داشته باشه و همیشه هم اینو بنداز روی بقیه پنجره ها. من این رو توی یک بش اسکریپت کوچیک گذاشتم وهر بار بخوام دوربین دیده بشه اجراش می کنم.

ضبط تصویر

حالا که دوربین روی صفحه دیده می شه باید بتونم کل صفحه و صداهام رو ضبط کنم. اینجا برنامه ای که من استفاده می کنم kazam است که مخصوص KDE است اما بقیه جاها هم به خوبی کار می کنه. انواع گزینه های دیگه هم هست از جمله istanbul و recordmydesktop-gtk و روش های ضبط مستقیم با ffmpeg ولی در نهایت من بعد از کمی تجربه با kazam در شرایطی که mp4 ضبط می کنه بهترین نتیجه رو گرفتم و بقیه خط ها رو دیگه تست نکردم. حالا من یک فایل بزرگ mp4 دارم که با کیفیت بالا صفحه و میکروفون رو ضبط کرده.

برای اطلاعات بیشتر در مورد ضبط خوب صدا بدون هزینه زیاد این پست رو نگاه کنین: ضبط صدای خوب در لینوکس با هزینه کم برای پادکسترها

ادیت

برای ادیت هم من چند برنامه رو تست کردم و در نهایت اولین برنامه ای که دستم باهاش راه افتاد kdenlive بود که بازم مال کی دی ای است! برنامه های دیگه هم هست ولی خب این برای من از همه زودتر کارهایی که می خواستم رو کرد. ادیت فیلم بسیار ساده انجام می شه و حتی از صدا هم راحتتره: گذاشتن چند تا ترک و جلو عقب کردن و افکت هایی در حد فید این و فید آوت. بعد از ادیت من فایل رو با یکی از گزینه های export که بهم فایلی با پسوند m2t می ده اکسپورت می کنم. این پروسه طول می کشه ولی کسی از یک ساعت اکسپورت گرفتن نمی ترسه!

تولید فایل نهایی

بعد از اینکه kdenlive اکسپورت یا رندر رو تموم کرد و به من یک فایل خیلی بزرگ (مثلا دو گیگی) m2t داد که صدا و تصویرش خوبه، با استفاده از ffmpeg فایل رو به شکل عجیبی کوچیک می کنم بدون اینکه کیفیت یا صدا ضرر خاصی بکنن. دستور مورد استفاده من اینه:

ffmpeg -i $1 -acodec libmp3lame -b:a 16k -ac 1 -s 1366x768   $1.done.mp4 

که بازم به عنوان یک اسکریپت بش کار می کنه و هر فایلی بهش بدم رو بعد از نیم ساعت کار با پسوند mp4 با سایز ۱۳۶۶ در ۷۶۸ که اندازه مانیتور من است و یک کانال صدای ۱۶ کیلویی و کدک mp3lame تحویلم می ده.


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

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

CoffeeSprouts_EN-US13503324158_1366x768

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

$ chmod 755 bingwallpaper.sh

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

crontab -e
42  */4 *   *   * /home/jadi/bin/bingwallpaper.sh

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

این اسکریپت نیازمند curl است که باید نصب بشه و همینطور از تظیمات gsettings استفاده می کنه که توی اوبونتو و بعضی لینوکس ها جواب می ده. در لینوکس ها یا میزکارهای دیگه با می تغییر می تونین نتیجه بگیرین. مثلا این اسکریپت فایل های عکس رو توی Pictures/BingDesktopImages می‌ریزه و توی کی دی ای می ونین بگین هر ساعت یک عکس اتفاقی از اون دایرکتوری نشون بده.

معلومه که خوندن این اسکریپت به اکثر ما هم چیزهایی هم یاد خواهد داد.


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