B4-1

پیوندها

پرینت با lp و پرینتر معمولی از طریق وایرلس

يكشنبه, ۱ خرداد ۱۴۰۱، ۰۳:۴۱ ق.ظ

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

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

حالا این مواردی که گفتم رو برای آشنایی شما با این برنامه عرض کردم ولی اصل موضوعی که باز برمیگرده به تنبلی من ، اینه که گهگداری خواهرزاده‌ها و برادرزاده‌ها توی واتساپ برای من یه فایل پی‌دی‌افی چیزی می‌فرستند و میگن برامون پرینت بگیر (کاربرگ تمرین و این چیزها که معلما میدن!) و این کار خیلی انرژی می‌خواد. چون باید توی واتساپ فایل رو ذخیره کنم ، بفرستمش به کامپیوتر ، توی فولدری که اون فایل پی‌دی‌اف هست روش کلیک کنم و بعد که باز شد گزینه‌ی پرینت رو پیدا کنم و بعد پرینتش کنم. ولی یک راه ساده‌تری که KDE Connect برای من درست کرده اینه که توی این برنامه می‌تونیم براش دستور تعریف کنیم. که مثلا وقتی با گوشیمون زدیم فلان دستور رو اجرا کن ، همون دستور توی کامپیوترمون اجرا بشه.

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

#!/bin/bash
Print_file=$(ls -t /home/MY_HOME/Downloads | head -1);
lp /home/MY_HOME/Downloads/$Print_file;

بعد از اینکه بهش قابلیت اجرایی شدن دادم اون رو بعنوان یه دستور معرفی کردم.

#ln -s /home/igolgoa/Downloads/.Print_last_file.sh /usr/bin/lfp

. و تو مرحله‌ی بعد مثل شکل زیر توی KDE Connect توی (توی کامپیوتر) قسمت Run Commands دستور lfp رو اضافه کردم.

 

حالا کافیه وقتی فایل رو برام آپلود کردند روی پی‌دی‌اف برم و اونو با KDE Connect (نسخه‌ی اندروید) بفرستم برای کامپیوترم و دستور lfp رو بزنم.

 

نسخه‌ی قابل دانلود برای پی‌سی

نسخه‌ی اندرویدی

  • محمد یاری

چرا قرعه‌کشی‌های فعلی قابل اعتماد نیستند؟

چهارشنبه, ۲۸ ارديبهشت ۱۴۰۱، ۰۹:۴۲ ب.ظ

چیزهایی که می‌تونه یک قرعه‌کشی سالم رو شکل بده چیه؟

 

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

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

حالا سئوالی که مطرحه اینه که ما می‌تونیم به سایت‌ها و اپلیکیشن‌ها و بانک‌ها و … که دارن برای ترغیب کاربر قرعه‌کشی می‌کنند اطمینان کنیم؟ از نظر من به هیچ وجه! می‌دونین چرا؟

  • من نمی‌دونم الگوریتمی که داره قرعه‌کشی رو انجام میده درست کار می‌کنه یا نه. اصلا فضایی که کاربران حقیقی توش هستند رو لحاظ می‌کنه یا همینجوری برای اینکه بگه قرعه‌کشی کرده یک اسم الکی با یک شماره‌ی الکی مثلا اصغر اصغری با ردیف شانس ۲۰۳۴۲ تا ۳۲۴۳۱ بهم تحویل میده .
  • من نمی‌تونم مطمئن باشم کسی که داره قرعه کشی انجام میده هیچ پارتی بازی‌ای نکرده و وزن قرعه‌ی خودش یا هر کسی که دوست داره رو تغییر نداده.

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

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

حالا سایت آمازون می‌بایست برای اینکه ثابت کنه که ده امتیازی رو که بخاطر ۱۰۰ دلار خریدِ من بهم داده حقیقیه (یعنی وزن قرعه‌ی من واقعیه) باید کاری انجام بده و این چطور ممکنه؟ اینطور که شبکه‌ای که قراره روش قرعه‌کشی انجام بشه از طریق آمازون به ترکنش‌هایی که مربوط به آمازونه روی شبکه‌ی انتقال پولی دسترسی داشته باشه (این موضوع که تراکنشی با انصراف و بازگشت پول کنسل شده هم باید به شبکه‌ی قرعه‌کشی اطلاع داده بشه).

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

 

البته هنوز برای چیزهایی که باعث افزایش امتیاز میشه مثلِ دعوت از دیگران و … چیزی به ذهنم نرسیده

  • محمد یاری

رمز پویا و هشدارهایی که به ما نمی‌دهند

چهارشنبه, ۱۱ فروردين ۱۴۰۰، ۰۱:۴۴ ق.ظ

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

سابق بر این ما کسی بودیم که تشخیص می‌دادیم که رمزمون رو به کی بگیم و کِی بگیم ولی حالا دیگه ماجرا عوض شده و کسی رمز ما رو حفظه که قوه تشخیص مجرم از غیر مجرم رو نداره و تنها به یک دستورالعمل عمل می‌کنه.

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

و خب ، چه کسی باید به شما متذکر بشه که ممکنه با عدم رعایت مسائل امنیتی براتون مشکل پیش بیاد؟ هیچ کس! چرا؟ چون در صورت از دست دادن بخشی از سرمایه‌تون بانک متحمل هیچ ضرری نمیشه!

 
 

 

 

  • محمد یاری

جبر خداگونه‌ی ماشین

سه شنبه, ۵ شهریور ۱۳۹۸، ۰۹:۱۱ ب.ظ

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

 

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

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

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

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

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

  • محمد یاری

چگونه پرینتر HP خودم رو توی جنتو نصب می‌کنم ؟

يكشنبه, ۱۸ آذر ۱۳۹۷، ۰۶:۰۵ ب.ظ

پیش از خوندن اون چیزی که من میخوام بگم این مطلب  رو که می‌تونه اطلاعات خوبی در مورد CUPS به شما بده بخونین ولی اگه حال ندارین و دنبال یک تعریف مختصر هستید باید بگم که کاپس یک نرم‌افزاره همین :D

و مثل یک کتابخانه نرم‌افزارهای مختلف رو از درگیر شدن با پرینتر دور نگه می‌داره. گویی که وظیفه‌ی پیدا کردن دیوایس‌های مختلف برای پرینت ، Job ها و تنظیمات مربوط به پرینت رو به اون محوّل می‌کنن و تنها یک اتصال کافیه که خدمات مربوط به پرینت رو دریافت کنند.

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

# emerge cups

بعد از اینکه کاپس نصب شد شما نیاز دارین که اون رو بعنوان یک پروسه‌ی اجرایی در هنگام بالا اومدن سیستم‌عامل اضافه کنین. من توی سیستم‌ام OpenRC دارم و به همین دلیل با rc-update اونو اضافه می‌کنم.

# rc-update add cupsd default

البته اگه نیاز ندارین که همیشه از پرینتر استفاده کنین با تایپ sudo cupsd در ترمینال اونو هر وقت نیاز داشتین اجرا کنین.

حالا که این کار رو انجام دادین و مثل من یک پرینتر HP دارین چیزی که برای شناسایی سخت‌افزارتون بهش احتیاج پیدا می‌کنین بسته‌ی hplip هست. این بسته برای شناسایی و نصب درایور سخت‌افزارتون استفاده می‌شه.

# emerge hplip

# hp-setup -i

خب همونطور که در بالا می‌بینین در مرحله‌ی بعد کافیه با اجرای hp-setup -i در ترمینال اقدام به نصب درایور کنید. امّا اگه مثل من در ایران زندگی می‌کنین پس از دومرحله که توی hp-setup طی کردین در هنگام دانلود درایور به مشکل برخواهید خورد. چرا؟ چون بازی در میاره و میگه که نمی‌تونم نصب کنم. که برای حل این مشکل باید از کشورهای دوست و وی‌پی‌ان‌هاش بهره ببرید. و خودتون رو به عنوان یک خارجی بهش معرفی کنین.

پس از تغییر هویت درایورتون دانلود و پس از پذیرفتن Licnese agreement درایور برنامه نصب میشه.

  • محمد یاری

مشکل Netbeans با فونت

چهارشنبه, ۱۴ آذر ۱۳۹۷، ۰۸:۱۳ ب.ظ
به این نیاز پیدا کردم که Netbeans رو نصب و برای مدّتی ازش استفاده کنم. بعد از نَصب با این موضوع مواجه شدم که فونتی که توی محیط Netbeans دیده میشه به شدّت زشته و آدم رو از کامپیوتر و هر چی که هست بیزار می‌کنه :))
پس از گشتن‌های بسیار و امتحان‌روش‌های محیر العقول و نگرفتن نتیجه در نهایت ویکی آرچ لینوکس به دادم رسید و گفتم برای اینکه اگه کسی مشکلی شبیه به من داره بتونه بدون دردسر حلش کنه اینجا هم بنویسمش.
خُب کافیه که  فایل netbeans.conf توی مسیر /etc/netbeans-X.Y/  رو ویرایش کنین و بگردین دنبال خط مربوط به تنظیمات پیش‌فرض ( که با  netbeans_default_options شروع میشه)   و مقادیر زیر رو توش جایگذاری کنین (مشخصا X.Y نسخه‌ی Netbeans نصب شده‌ی روی سیستم شماست)
-J-Dswing.aatext=TRUE -J-Dawt.useSystemAAFontSettings=on
و برای مثال خروجی خط مربوطه برای من این شکلی شده.
netbeans_default_options="-J-Dswing.aatext=TRUE -J-Dawt.useSystemAAFontSettings=on -J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScre$

  • محمد یاری

پراکندگیِ شانس در سیستم‌های قرعه کشی

سه شنبه, ۱۳ آذر ۱۳۹۷، ۰۵:۴۵ ب.ظ

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


در بعضی مسابقه‌ها و قرعه کشی‌ها مثلا میگن اگه فلان کار رو بکنید ۱۰۰۰ امتیاز کسب می‌کنید اگه بهمان کار رو بکنید ۲۰۰۰ امتیاز. هر بار مراجعه‌ی شما هم در هر روز ۳۰۰ امتیاز بهتون میده. که مجموع امتیاز شما میشه مقدار شانس شما!

چیزی که واضحه اینه که وقتی امتیازهای کوچک (مثلا ۱۲ امتیاز) نداریم و همه‌ی شانس‌ها مضربی از ۱۰۰ یا ۱۰۰۰ هستند در اون صورت فرقی نداره که صفرهای اضافه‌اش رو ورداریم یا نه! مثلا یک نفر ۱۶۰۰ امتیاز داره یک نفر ۴۰۰ و یک نفر ۴۳۰۰ .  اگه قرار به قرعه کشی بین این سه نفر باشه شخص اول شانزده شصت و سوم احتمال برد داره نفر دوم چار شصت و سوم و نفر سوم چهل و سه شصت و سوم و اگه ما دو صفر رو از شانس همشون برداریم هم فرقی نخواهد داشت!

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

در بعضی قرعه‌کشی‌ها (تو چند تا اپلیکیشن‌ دیدم) شما ردیف‌های شانستون بصورت خطّیه.برای نمونه اگه کل امتیازهایی که کاربران دارن  ۹٫۳۲۳٫۴۱۲ هست شما یک محدوده خطّی دارین. که مثلا ردیف شانستون از ۱٫۴۳۲ هست تا ۲٫۳۲۳ . و این دارای اشکاله. اونوقت می‌دونین چرا؟

بذارین براتون مثال بزنم.

اگه ما یک برنده رو با استفاده از انتخاب تصادفی عددهای یکان ، دهگان ، صدگان و .... انتخاب کنیم  در این صورت فرض کنید در مجموع ۴٫۰۰۰٫۱۲۳ امتیاز شانس برامون محتمل باشه.

شما که فَرد پیگیری بودین تونستین ۴٫۰۰۰٫۰۰۱ امتیاز کسب کنین.

فَرد دیگه‌ای هم بوده که مجموعا ۱۲۲ امتیاز کسب کرده. و ردیف شانس‌اش از ۴٫۰۰۰٫۰۰۲ شروع میشه و تا ۴٫۰۰۰٫۱۲۳ ادامه پیدا می‌کنه

برای اینکه سیستم بدرستی برای عددهای بعدی بهینه بشه باید از بزرگترین رقم شروع به قرعه کشی کنیم در این صورت شما که باید ۳۲ هزار برابر بیشتر شانس داشته باشید در عدد اول سه چهارم احتمال برنده شدن دارین. در ۳ رقم بعد جواب درست ۰۰۰ هست که از اونها کناره‌گیری می‌کنیم. در عدد بعد ۰ و ۱ وجود داره که شانس شما و نفر دوم ۵۰ درصد هست. در عدد بعدی شانس رقیبتون دو سوم شماست. در عدد آخر هم شانس شما دو چهارمه! و شما اگه به چنین شرایطی برسین می‌بینین بصورت ناعادلانه‌ای خواهید باخت.

امّا شاید هم پیش خودتون بگین سیستم قرعه کشی توی کامپیوتر به شیوه‌ی دیگه‌ای هست و بصورت تَک عدد نیست و چیزی که تو میگی در اون صدق نمی‌کنه. که من حق رو به شما می‌دم! امّا اگه به نسبت درصد شانستون در فضای قرعه کشی شانس شما رو پخش کنن باز هم هیچ چیزی رو از دست نمی‌دین :D

  • محمد یاری
از اونجایی که آپدیت‌کردن کار لذّت بخش و مفرّح ذاتیه در زمان اجباری سعی کردم که جنتو رو آپدیت کنم ولی با کلّی کانلفیکت روبرو شدم تصمیم گرفتم که ری‌اینستالش کنم ولی قبل از اینکه به دسکتاپ برسم سر نصب qt-webkit به مشکل بر میخوردم و موقع کامپایل رم بصورت کامل اشغال می‌شد و هیچ چیز اضافه‌ای به سواپ ریخته نمی‌شد. همین شد که بی‌خیال شدم و مینت نصب کردم.
چن روز پیش سیستمم رو ارتقاء دادم باز همون مشکل رو با ۴ گیگ رم پیدا کردم! یعنی در هنگام کامپایل تمام فضای رَم اشغال می‌شد و کرنل‌پیج‌ها یا فضایی که emerge در رم اشغال می‌کرد با کمبود فضای رم به swap انتقال داده نمی‌‌شد.
در خروجی دستور زیر مقدار فضای اختصاص داده شده برای سواپ و مقدار استفاده شده از اون و priority اش قابل مشاهده‌است.
mohamnt@moahmnt# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda7                               partition       4194300 0       -2
خب نمیدونم واقعا بخاطر تغییری که من در تنظیمات سواپ انجام دادم این اتفاق افتاد یا چیز دیگه‌ای مسبب‌اش بوده ولی با تغییر مقدار Priority در صورت پُر شدن رَم ، پردازه‌هایِ کش شده به سواپ انتقال داده می‌شدند.

اونطور که من سرچ کردم مقدار Priority عددی بین ۰ تا ۳۲۷۶۷ هست و نمیدونم چرا بصورت پیش‌فرض وقتی بدون این پارامتر سواپ رو جایگذاری می‌کنیم مقدار منفی دو می‌گیره.
خلاصه اینکه این مقدار رو می‌شه به دو صورت تغییر داد.
۱ - یک با دستور swapon
mohamnt@moahmnt# swapoff /dev/sdaX #برداشتن پارتیشن سواپ از پارتیشن‌های ماونت شده
mohamnt@mohamnt# swapon -p 1 /dev/sdaX #جایگذاری دوباره با درج پارامتر

۲ - ویرایش فایل etc/fstab/ و دادن مقدار به  pri در سطر مربوط به Swap
/dev/sdaX none swap defaults,pri=100 0 0

پ ن: در صورتیکه شما چند پارتیشن رو بعنوان swap جایگذاری کرده باشید در ابتدا از پارتیشی که مقدار Priority بیشتری داشته باشه استفاده میشه.

  • محمد یاری
اگه توی AVD Manager نوشته که Virtual Device شما Missing شده :D شما اقدام به دانلود ایمیج مخصوص دیوایس مورد نظرتون می‌شین که خیلی از اوقات بعلت قطعی اینترنت و وضعیت بغرنجش به مشکل بر می‌خورین.
من بعد از چند بار تلاش بی‌سرانجام به این نتیجه رسیدم که فایل مورد نظرم رو که در صفحه‌ی دانلود و نصب به لینکش دسترسی دارم (

x86-28_r07.zip ) خودم دانلود کنم و بعد اقدام به نصبش کنم.




پس از نصب امّا دیدم راهی واسه نصب کردنش وجود نداره و AVD تنها از طریق دانلود کردن این فایل نصبش می‌کنه و گزینه‌ای برای نصب آفلاین نداره و غم سر تا سر وجود منو فرا گرفت :D

ولی راهکار این بود که ابتدا Android Studio رو باز کردم و تا مرحله‌ی دانلود پیش رفتم. در این مرحله توی مسیر :

~/Android/Sdk/system-images/

فولدرها رو یکی یکی برین جلو تا به ته خط برسین .(توجه داشته باشین که show hidden رو هم فعال کنید تا به فولد .installer رو ببینین. برای مثال من توی این مسیر رفتم:

~/Android/Sdk/system-images/android-28/google_apis/x86/.installer

و فایل .installData توی این پوشه به ما اطلاعاتِ مربوط به نصب شبیه ساز دیوایس مد نظرمون رو میده.


#Wed Nov 07 11:00:40 IRST 2018
class=com.android.repository.impl.installer.BasicInstaller
path=/tmp/PackageOperation07

همونطور که مشاهده می‌کنین فایل ایمیجی که قراره دانلود بشه توی مسیری که با path مشخص شده ذخیره خواهد شد.

حالا لازمه که یک بار AVD رو ببندید.در این مرحله پوشه‌ی .installer و فایل .installData که بصورت موقت ساخته شده بود حذف میشه و لازمه که شما بصورت دستی اونها رو بسازین. بعد از اون توی مسیر /tmp/PackageOperation07 یا هر چیز دیگه‌ای که توی path مشخص شده برین و فایلی که دانلود کردید رو با فایلی که اونجاست جایگزین کنین. دوباره AVD رو باز کنین و شبیه ساز مدنظرتون (یا شبیه ساز پیشفرض) رو دوباره انتخاب کنین.


توجه داشته باشید که اسم فایل و فایلی که توی فولد PackageOperation وجود داره یکی باشه

  • محمد یاری

سخنی چند در مورد متادیتای MP3

شنبه, ۲۴ شهریور ۱۳۹۷، ۱۱:۰۳ ب.ظ

تا سال ۸۸ که کاربر ویندوز بودم برای گوش دادن به آهنگ‌ها شیوه‌ی کارم اینطور بود که فولدرهای مختلف با اسامی خواننده‌‌ها داشتم و برای گوش کردن بهشون مجبور بودم یک مسیری رو طِی کنم و با انتخاب همه آهنگ‌های اون فولدر آهنگ گوش کنم. ولی بعد از اینکه به لینوکس مهاجرت کردم با  Rhythmbox آشنا شدم که چه چیز خفنیه. نحوه‌ی کارشم اینطور بود که با جستجوی متادیتای آهنگ اون‌ها رو دسته بندی می‌کرد. برای مثال در صورتی که متادیتا درست نوشته می‌شد می‌تونستیم خواننده‌ها رو بر اساس Artist ، Genre ، Album و .... مرتب کنیم. و این کار منو راحت می‌کرد. دلیل این قضیه هم این بود که من می‌تونستم به آهنگ‌های داخل مجموعه‌ام رتبه بدم (۰ ستاره تا ۵ ستاره) تا بر این اساس مرتب بشن. می‌تونستم پلی لیست‌ آهنگ‌هام رو بهتر سازماندهی کنم. می‌تونستم برای انتخاب یه خواننده‌ی دیگه سریع جابجا بشم. امّا اینجا چند مشکل وجود داشت ( و هنوز هم وجود داره).

۱- بخش عظیم آهنگ‌هایی که گوش می‌کنیم فارسیه و سایت‌های فارسی زبان متادیتا رو وسیله‌ی برای تبلیغ خودشون می‌دونن و از هر صد تا سایت شاید یک سایت رو ببینین که تگ‌های آهنگ رو تغییر نمی‌ده.

۲- یک ساختار یکپارچه و منسجم برای نوشتن متادیتا وجود نداره (برای مثال بعضی سایت‌ها سال انتشار اثر رو به میلادی درج می‌کنن بعضی‌ها به هجری شمسی)

۳ - دسته‌بندی‌هایی که بر اساس‌اش آهنگ‌ها مرتب می‌شن ایراد داره. یعنی در ابتدا که قرار شد برای این سیستم قانون نانوشته‌ای وضع بشه به بعضی موارد دقّت نشد.


حالا برای این ۳ مورد ۳ راهکار وجود داره. البته که هیچ کسی به حرف من گوش نمی‌کنه ولی این چیزیه که بصورت آرمانی بهش فکر می‌کنم. و هر مورد رو به تفضیل توضیح می‌دم :D


۱- به نظر من بهترین تبلیغ برای هر سایت عملکرد حرفه‌ای اونه. مطمئنا خیلی‌های دیگه مثلِ من، سایتِ موزیکی رو برای مراجعه دوباره بوکمارک می‌کنن که بدونن تگ‌های موسیقی رو جهت تبلیغ ویرایش نکرده و خیلی‌های دیگه مثل من به افرادِ دیگه سایتی رو معرفی می‌کنن که موزیک رو به هرزنامه‌ی خودش بدل نکرده باشه.

۲- اکثر خواننده‌ها و کسانی که توی کار موسیقی هستند قطعاتی رو به صورت تکّی منتشر می‌کنند که جدایِ از آلبومه. راهی که میشه اینها رو دسته بندی کرد اینه که بعنوان قطعات «تکی» به عنوان یه آلبوم در نظرش گرفت. خیلی اوقات می‌بینیم که توی متادیتا این قطعات رو به عنوان یک قطعه از آلبوم Singles برای دانلود قرار می‌دن. مشکل این کار اینه که توی نرم‌افزارهای پخش، هر آهنگی که تگِ آلبومش Singles باشه رو بعنوان یک قطعه از آلبوم Singles در نظر میگیره. برای مثال شما ۱۰ قطعه تکی از داریوش اقبالی دارید و ده قطعه تکی از دمیس روسس ؛ در هنگام ایندکس کردن متادیتا نرم‌افزار پخش این بیست تا آهنگ رو توی یه آلبوم نشون میده. برای حل این مشکل بنظر من باید یا نرم‌افزارهای پخش هوشمند عمل کنند و آلبوم رو به صورت تگ (خواننده+Singles) جدا نشون بدن یا ما خودمون باید این کار رو انجام بدیم. برای مثال برای اینکه این دو «تکی» ها قاطی نشن باید توی تگ آلبوم مثلا بنویسیم: Dariush Singles

۳- کسانی که در ساخت یک اثر مشارکت دارند گاهی وقتا بیش از یک نفرن. بعضی وقت‌ها یکی از این افراد به عنوان هم‌خوانِ حضور داره گاهی هم به خودش جداگونه توی این آهنگ یا قطعه می‌خونه :D

راهی که پیش روی ما هست اینه که یا جفتشون رو به عنوان آرتیست توی تگ اضافه کنیم یا اینکه یکی از این دو نفر رو ثبت کنیم.

ایرادِ ثبت کردن اسم هر دو نفر ( یا چند نفر) اینه که نرم‌افزارهای پخش این چیزی رو که ثبت کردیم به عنوان یک آرتیست می‌شناسه. و این موضوع باعث میشه تعداد آرتیست‌های مجموعه‌‌ی ما توی نرم‌افزار پخش به طور دروغین زیاد بشه. برای مثال شما یک کار مشترک از ابی و داریوش داری اگه توی قسمت Artist متادیتا بنویسی Ebi , Dariush اونوقت موقع شناسایی آرتیست آهنگ‌ها خواهید دید که این اسم به عنوان یک آرتیست جدا از ابی و داریوش شناخته شده که شامل یک آهنگه!

به نظر من برای رفع این مشکل هم می‌بایست این طور عمل می‌شد که ما با «,» آرتیست‌ها رو جدا می‌کردیم و نرم‌افزار پخش می‌فهمید که این اثر بیش از یک آرتیست داره. و بعد بر همین اساس این آهنگ رو توی دسته بندی کردن به لیست آهنگ‌های هر دو اضافه می‌کرد. مثلا آهنگ نون و پنیر و سبزی هم به آهنگ‌های داریوش اضافه بشه هم به آهنگ‌های ابی.


و در آخر پیشنهادم به شمایی که آثار خواننده‌هایِ وطنی رو اورجینال تهیه می‌کنین:


نرم‌افزار Rhythmbox یا خیلی نرم‌افزارهای دیگه در هنگام RIP کردن گزینه‌ای برای نوشتن متادیتا دارن. این متادیتا علاوه بر اینکه برای نوشته شدن روی خودِ آهنگ کاربرد داره بلکه به سایت موزیک برینز هم فرستاده میشه. این کار بوسیله Acoustic Fingerprint یا همون شناسایی هویت موسیقی انجام می‌گیره. و مزیت این کار اینه که اگه شما اطلاعات یک اثر رو به این سایت بفرستین نفر بعدی که با یک نرم‌افزار از موزیک برینز برای پیدا کردن متادیتای آهنگ بهره می‌بره بدون هیچ زحمتی فقط با ریپ کردن اطلاعات اثر براش کپی میشه، بدون هیچ زحمتی!

برای مثال شما امروز آلبوم «ایران من» همایون شجریان رو خریدین و می‌خواین به فایل‌های MP3 تبدیلش کنین. اگه کسی قبل از شما اونو ریپ کرده باشه و اطلاعاتشو فرستاده باشه موزیک برینز شما نیاز نیست وقتی رو برای وارد کردن دوباره‌ی این اطلاعات صرف کنین. :)


تصویری از محیط Rhythmbox

  • محمد یاری