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

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

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

(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 می‌ریزه و توی کی دی ای می ونین بگین هر ساعت یک عکس اتفاقی از اون دایرکتوری نشون بده.

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


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

جادی تی وی ۰۱۰ – بررسی مشکلات اختراع دوباره چرخ با کمک پایتون و اسکرپینگ و ردیس

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

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

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

شطرنج مخفی در مسنجر فیسبوک رو فعال کنید

chess

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

  • چت کنین
  • استیکر و عکس و … بفرستین
  • تماس تصویری بگیرین
  • پول جابجا کنین

و شطرنج بازی کنین. برای اینکار کافیه به سادگی پیامی با این بفرستین:

@fbchess play

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

@fbchess b3 #پیاده ستون بی، به خونه سوم بره
@fbchess Nf3 #اسب به خونه اف سه
...
@fbchess help #راهنما لطفا

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