لینوکس و من

لینوکس و پخش کننده‌های بلوتوث!

نویسنده : رضا عسکری | تاریخ: 1395/04/30

گوش دادن به موسیقی و رادیو و تقریبا هر چیز دیگه‌ای که بشه شنید یکی از اصلی ترین تفریحات منه. تقریبا 95 درصد همه چیزایی که گوش میکنم روی موبایلم ذخیره شده یا از طریق اپ‌های متنوع ارائه دهنده محتوای صوتی پخش میشه. خب که چی؟!‌ مشکل اینجاست که کیفیت صدای بلندگوی موبایل اصلا خوب نیست و حجم صدای مناسبی هم نداره.
کاری که میخوام انجام بدم اینه که به طریقی صدای گوشی رو به لپتاپ منتقل کنم تا بتونم از یک اسپیکر یا هدفون همزمان برای موبایل و لپتاپ استفاده کنم و مجبور نباشم هر کدوم رو جدا متصل کنم.
اگر با یک PC میخواستم این کار رو انجام بدم خیلی خیلی ساده بود. کارت صدا مادربردها 3 تا جک AUX داشتند که یکی برای خروجی بلندگو (همون سبزه) یکی مخصوص ورودی میکروفن(صورتی) یکی هم برای ورودی‌های غیرمیکروفن (آبی). حالا فقط کافی بود یکم سیم کشی کنم و آبی رو بزنم به گوشی و سبز رو بزنم به اسپیکر (احتمالا یه کوچولو تنظیمات نرم‌افزاری) و پایان.
ولی خب من از سیم‌کشی الکی متنفرم و علاوه براین لپتاپ من فقط یک پورت aux داره که دقیقا هم نمیدونم توش چه خبره به علاوه برای اتصال اسپیکر بهش نیاز دارم! پس باید به یک روش هیجان‌انگیر(!)‌ دیگه گوشی رو به لپتاپم متصل کنم.
اکثر توزیع‌های دسکتاپ گنو/لینوکس pulseaudio را به صورت پیشفرض نصب دارند. pulseaudio برنامه‌ایه که بین نرم‌افزار های مختلف و سخت افزارهای خروجی و ورودی صدا قرار میگیره و به شما اجازه میده کلی کار عجیب و غریب انجام بدید. مثلا صدای یک برنامه خاص رو کم کنید یا کلا قطع کنید، یا صدای اون برنامه رو بفرستید برای pulseaudioای که روی یک کامپیوتر دیگه اونور دنیا نصب شده و از اونجا بدید به خروجی صدا!

ادامه مطلب

اضافه کردن چند کلید دلخواه به کیبرد!

نویسنده : رضا عسکری | تاریخ: 1395/04/18

من یکی از کسانی هستم که کمتر از کیبرد لپتاپ استفاده میکنند و تقریبا 90 درصد اوقات یک کیبرد به لپتاپ متصل میکنم. اما کیبرد دوم من یک کیبرد کاملا ساده است(هیچ کلید اضافه ای برای کنترل مدیا و غیره ندارد) و خب این مساله کمی آزاردهنده است که برای رد کردن یک موسیقی از ماوس یا کیبرد لپتاپ استفاده کنم!

برای حل این مشکل 2 راه حل بیشتر نداشتم:
1- تغییر تنظمیات keyboard shortcut اوبونتو. این راه حل قطعا راه مناسبی نیست، چون نمیشه بیش از یک میانبر برای دستورهای کنترل مدیا تنظیم کرد(شاید بشه ولی من اطلاع ندارم!)، پس کل میانبر های اصلی کیبرد لپتاپ از کار می افتاد که اصلا خوشایند نیست.
2- اضافه کردن این کلید ها به کیبرد. (منظورم این نیست که به صورت فیزیکی چنتا کلید اضافه کنم!) یعنی چنتا شرتکات جدید داشته باشم که ازشون برای کنترل مدیا استفاده کنم.
ساده ترین راهی که برای این کار به نظر من رسید استفاده از  xdotool بود. از این ابزار میتوان برای شبیه سازی ورودی های موس و کیبرد (و سایر ورودی ها!)، و تغییر اندازه پنجره ها، و ... استفاده کرد. استفاده ما در اینجا خیلی ساده است و زیاد درگیر این ابزار نمیشیم. اگر علاقه دارید بیشتر با این پکیج آشنا بشید man در خدمت شماست!
خب xdotool یک دستور داره به اسم key که اسم هر کلیدی که بهش میگید رو فشار میده! (البته واقعا فشار نمیده! مجازیه!) مثلا:
 xdotool key a
به xserver میگه که a روی کیبرد فشار داده شد!
خب تا الأن یه کد کوچک دارم که میتونم جای اینکه به خودم زحمت بدم، دستم رو دراز کنم و کلیدی رو روی کیبرد لپتاپ فشار بدم، به کامپیوتر دستور بدم اینکارو انجام بده!
ادامه مطلب

چند ترفند ssh برای انتقال فایل

نویسنده : رضا عسکری | تاریخ: 1395/04/1

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

ssh <server_ip> cat /path/to/file >/path/to/file/on/client
حال برای مثال اگر با فایلی مواجه باشیم که خواندن آن نیاز به دستور روت دارد به سادگی میتوان نوشت:
ssh -tt <server_name> sudo cat /path/to/file > /path/to/save/file
اما مزایای این روش فقط به همین جا محدود نمیشود میتوان کار های جالب تری انجام داد که برای sftp غیر ممکن است. مثلا:
 ssh <server_ip> curl http://example.com >/path/to/save
ssh <server_ip> "dd if=/dev/sdx |gzip -c9" >/path/to/save
که از اولی میتوان برای دانلود مستقیم یک فایل به کمک ssh و از دومی برای بکاپ گرفتن از یک سیستم روی شبکه کمک گرفت. تقربیا میتوان از هر ترکیبی استفاده کرد. و stdout هر دستوری را که روی سرور اجرا میشود مستقیما روی کلاینت ذخیره کرد و از مزایای رمزنگاری و ارتباط امن ssh بهره برد.
علاوه بر این میتوان از این مزیت در جهت عکس نیز استفاده کرد. مثلا به کمک این دستور میتوان از سیستم بکاپ گرفت و مستقیما روی یک کامپیوتر روی شبکه ذخیره کرد:
"dd if=/dev/sdx| gzip -c9 |ssh <server_name> "cat > /path/to/file
تذکر: فراموش کردن " ها میتواند نتایج جالبی داشته باشد :)
حتی میتوان فایل هایی را بازنویسی کرد که ویرایش آنها نیاز به دستور روت دارد.
cat /file/on/client |ssh -tt <server_address> sudo tee /path/to/file
نکته:‌ درصورت استفاده از sudo در دستورات ssh باید از سویچ -tt استفاده کنید.

علاوه بر همه این مثال ها میتوان از قدرت bash و ابرازهای مختلف استفاده کرد و به ترکیب‌های هیجان‌انگیز بیشتری رسید. اگر مثال های جالبتری به ذهنتان رسید آنهارا باما در میان بگذارید.

آپدیت:
به توصیه یکی از دوستان تصمیم گرفتم توضیح مختصری درباره دستور scp به این پست اضافه کنم.
ادامه مطلب

استفاده از گرافیک nvidia در لینوکس

نویسنده : رضا عسکری | تاریخ: 1394/10/17

یکی از سوالاتی که همیشه ذهن من رو درگیر خودش میکرد این بود که چرا من 2 تا پردازشگر گرافیکی روی لپتاپم دارم اما فقط میتونم از پردازشگر اینتل استفاده کنم و این که اصلا چطور میشه بین این دوتا سویچ کرد؟! تااین که نشستم ته و توی قضیه رو در آوردم.

داشتن دو پردازشگر گرافیکی در کنار هم نتیجه تکنولوژیه به نام ٬آپتیموس٬ که شرکت nvidia اون رو توسعه میده و فلسفه اصلیش هم اینه که روی لپتاپ ها 2 تا پردازشگر داشته باشیم که یکی ضعیف‌تر و کم مصرف‌تر باشه و یک پردازشگر قوی (پرمصرف) برای پردازش‌های بزرگتر. این کار باعث میشه که لپتاپ دیرتر شارژش رو در شرایط عادی از دست بده و اگر یک پردازش بزرگ داشتید یک پردازشگر پرقدرت برای انجامش داشته باشد.

توی ویندوز همه این کارا خیلی راحت انجام میشه.(و از حق نگذریم در این زمینه خیلی خوب کار میکنه) اما توی لینوکس این کار خیلی باحال‌تره یعنی من میتونم به راحتی کامند بزنم و یک برنامه رو با پردازشگر nvidia اجرا کنم یا این که بذارم با همون intel اجرا بشه.

معمولا وقتی که روی یک لپتاپ با تکنولوژی اپتیموس لینوکس نصب میکنید اکثر توزیع ها درایور های intel رو نصب و از اون استفاده میکنند و پردازشگر nvidia (قویتره!) رو میذارن خاک بخوره! ولی خب قطعا راه هایی وجود داره برای استفاده از این نیروی خفته!

1- بعضی لپتاپ ها توی BIOS این امکان رو دارن که بین گرافیک ها سویچ کنید. یعنی یکی رو خاموش کنید یا هر دو رو فعال کنید. یعنی کافیه پردازشگر intel رو غیرفعال کنید وسیستم رو بوت کنید تا کل سیستم از nvidia استفاده کنه. خب این کار مشکلات خودش رو داره . اولا، این کار لپتاپ رو پرمصرف میکنه و مشکل دوم این که بعضی مادربودها توی بایوس چنین امکانی رو ندارن ( اینو میگم چون روی لپتاپ خودم اینجوری بود....یا شاید من پیداش نکردم)
2- استفاده از درایور رسمی nvidia که چند تا مشکل داره. اولا که اجازه نمیده درست و حسابی بین GPU ها سوییچ کنید، دوما درایورش ( معادل فارسی درایور چیه؟!‌ راننده!!) یک درایور بسته است ... خودتون میدونید دیگه ( سوما ... اعتراف میکنم که دلیل اصلی که از این روش استفاده نمی‌کنم اینه که نتونستم کانفیگش کنم... یعنی با کانفیک xorg به مشکل خوردم و بعد از دو روز تلاش ولش کردم... شاید بعدا یک پست درباره این روش گذاشتم )
3- استفاده از درایور بازمتن nouveau که امکان سویچ کردن رو میده اما بازم چند مشکل داره . اولا نسبت به درایور رسمی nvidia عملکرد ضعبف‌تری داره ، دوما هیچ امکان و تنظیماتی برای صرفه‌جوبی در مصرف انرژی نداره.(من که کلا سمتش نرفتم... اگر کسی تجربه‌ای داره خوشحال میشم اگر کامنت کنه)
4- اما روش چهارم استفاده از زنبور‌عسل ( کلا چیز مفیدیه...آفرین بهش!) یک جواب بازمتن به تمام نیازهای لینوکسی هایی که میخوان از تمام نیروهای نهفته در سخت‌افزار لپتاپـشون استفاده کنند!

*چون مطلب داره طولانی میشه توضیحات درباره این روش رو در ادامه مطلب قرار دادم ادامه مطلب

ایجاد فضای swap بدون پارتیشن بندی مجدد هارد درایو

نویسنده : رضا عسکری | تاریخ: 1394/10/17


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

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

در این جا من روش دوم رو توضیح میدم.
اول یک فایل به کمک دستور dd درست میکنیم. حجم این فایل بهتره 2 برابر حجم رم و کمتر از 8 گیگ باشه. یعنی اگر 2 گیگ رم دارید این فایل رو به اندازه 4 گیگ درست کنید ولی اگر رم شما 16 گیگه اون رو به اندازه 8 گیگ درست کنید. من شک دارم اگر 8 گیگ از اطلاعاتی که قرار بوده روی رم نوشته بشه رو روی هارد قرار بدیم سیستم اصلا بتونه کارا کنه!

 dd if=/dev/zero of=/swap.img bs=1024 count=<اندازه فایل به کیلو بایت>

بعد فایل رو به عنوان swap فرمت می کنیم. ( از این دستور میشه برای خالی کردن swap هم استفاده کرد. البته قبل از اون باید swap رو غیر فعال کنید. و جلوی دستور آدرس پارتیشن رو به صورت /dev/sdX وارد کنید
 mkswap /swap.img

بعد از اون کافیه فایل رو به عنوان swap به سیستم عامل معرفی کنیم
 swapon /swap.img


برای غیر فعال کردنش هم کافیه دستور زیر رو وارد کنید
 swapoff -a

پ.ن:
1- تمام دستورات بالا باید با دسترسی روت اجرا بشه
2- این اولین پست من توی این وبلاگ بود. امیدوارم رضایت شمارو جلب کرده باشم.