B4-1

پیوندها

سیستم‌های نامطمئن قرعه کشی

پنجشنبه, ۱۱ مرداد ۱۳۹۷، ۰۱:۳۱ ق.ظ
تمام قرعه‌کشی‌هایی که با زرق و برق «زنده» به خورد بیننده داده میشه ساختاری این چنینی داره.

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

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

بنظر من بهترین راهکار اینه که شرکتی معتبر بعنوان شخص ثالث (یک بخش از گوگل به اسمِ Google Ghor'e Keshi  مثلن :D )  دیتابیس رو  در اختیار داشته باشه و با هویّت سنجی بتونه کاربرانی که شانس قرعه‌کشی دارن رو تائید کنه و یک درصد بالا (مثلا ۹۰ درصد) از کاربران تائید شده شاخصی بر ساختگی نبودن دیتابیس باشه.  و این شرکت دیتابیس رو برای شفاف سازی با یک سری اطلاعات که حریم شخصی فرد رو به خطر نندازه بصورت پابلیک با «عدد و وزن شانس» منتشر کنه.

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

استفاده از اینترنت گوشی اندرویدی در مینت

دوشنبه, ۱۸ تیر ۱۳۹۷، ۰۱:۲۷ ق.ظ

آخرین تجربه‌ی من در رابطه با استفاده از اینترنت گوشی بر‌میگرده به زمانی که  Nokia X-3 داشتم و بخاطر نبودن اینترنت پرسرعت توی روستامون از طریق این گوشی فلک‌زده و کابلش و kppp با سختی و مرارت‌های خاصی به اینترنت وصل می‌شدم اونم Edge :)

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

  • محمد یاری

پایان خدمت - پایان زندگی

يكشنبه, ۱۰ تیر ۱۳۹۷، ۱۲:۴۴ ق.ظ
با تموم شدن خدمت قصد کردم که یه سر و سامونی به اینجا بدم. البته با فاصله گرفتن از قواعد مرسومی که متاسفانه در وبلاگ‌های خُشک فارسی رونق پیدا کرده :D
  • محمد یاری

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

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

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

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

من بشخصه سعی خواهم کرد که تمام چیزهایی که منو با سیستم درگیر کرده و باهاش سر و کله زدم رو یک گوشه یادداشت کنم که دوباره اگه خواستم همون کار رو انجام بدم نیاز نباشه که باز هم برم دنبال راه حل مشکلم بگردم. شما هم همین کار رو بکنید. هر چند این تجربیات دهن پُر کن و غیرمعمول نباشه

  • محمد یاری

رایت ایزوی ویندوز روی مموری

سه شنبه, ۱۱ اسفند ۱۳۹۴، ۱۲:۵۴ ب.ظ

طبق پیش‌زمینه‌هایی که در مورد dd داشتم  تلاش کردم ایزوی ویندوز رو روی فلش بریزم تا دیگران ازش استفاده کنن! ولی ویندوزه دیگه، کاریش نمیشه کرد.

چیزای مختلفی رو آزمایش کردم ولی ms-sys  از همه‌شون ساده‌تر و رونتر بود.

برای نصب‌اش توی توزیع خودتون اقدام کنید. حالا ما اینجوری نصبش می‌کنیم

#emerge ms-sys
روی سیستمون این بسته‌ها رو باید داشته باشید: ntfs-3g,fdisk. و همینطور نیاز به یه حافظه جانبی مثل فلش‌مموری هم دارید، چون خالی خالی نمیشه که!
با fdisk تموم پارتیشن‌های فلش‌مموری رو پاک کرده و پس از ساخت یک پارتیشن و رایت بوت‌فلگ (بوسیله‌ی آپشن a در محیط برنامه fdisk) مراحل زیر رو پیش بگیرید.
ما فرض می‌کنیم که می‌خواین ویندوز 7 که اسم ایزویی که دانلود کردین win7.iso هست رو روی فلش‌مموری که در لیست fdisk -l به صورت /dev/sdc1 شناخته شده رایت کنین.و آپشن برای باقی شما ممکنه فرق داشته باشه که می‌تونین man مربوط به ms-sys و همینطور fdisk رو بخونین براش.
#ms-sys -7 /dev/sdc
#mount -o loop win7.iso /mnt/iso
#mount /dev/sdc1 /mnt/usb
#cp -r /mnt/iso/* /mnt/usb

++++++
  • محمد یاری

آپدیت کرنل

يكشنبه, ۲۱ تیر ۱۳۹۴، ۰۳:۲۴ ق.ظ

از اونجایی که توی لینوکس آپدیت کردن خودش عمل لذت بخشیه و یکی از چیزهای لذت بخش برای آپدیت کردن کرنلِ می‌خواستم تجربه‌ی خودم رو در این زمینه بنویسم تا شاید بکارتون بیاد.

خب بصورت عادی بعد از اینکه شما با دستور

#emerge --sync

شاخه portage رو بروز می‌کنید و با دستوراتی مثل

#emerge -uDN @world

تمام بسته‌هایی که امکان آپدیت شدن دارند رو آپدیت می‌کند یکی از چیزهایی که ممکنه آپدیت بشه سورس کرنل یا همون gentoo-sources هست . برای اینکه ببینید که آیا چند ورژن از سورس کرنل رو روی سیستمتون دارید می‌تونید با دستور

#eselect kernel list
output: برای من
Available kernel symlink targets:
[1] linux-4.0.5-gentoo *

  لیستی از کرنل‌ سورس‌های موجود رو که در شاخه /usr/src قرار دارند ببینید. و طبعا بعد از انجام این دستور شما سورس کرنلی رو که به صورت پیش‌فرض برای کامپایل درایورهای سخت‌افزاری مورد استفاده قرار می‌گیره رو بصورت یک علامت * در روبرو می‌بینید. این سورس کرنل همون سورس کرنلی هست که بصورت شورتکات توی /usr/src به دایرکتوری linux لینک شده.

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

#eselect kernel set number

بجای number عددی که به عنوان شماره کرنل روبروی سورس قرار داده شده رو وارد می‌کنید و به این صورت مسیر پیش‌فرض /usr/src/linux به سورس کرنل جدید اشاره می‌کنه.

اگر مثل من حوصله سر و کلّه زدن زیاد و یا اطلاعات کافی ندارین با دستور

#genkernel all

شروع به کامپایل کرنل جدید بکنید و پس از گذشتن زمانی (بسته به cpu شما که چند هسته‌ای باشه و غیره) این کار به پایان می‌رسه. و باید تنظیمات مربوط به LILO یا GRUB رو بر مبنای کرنل جدید آپدیت کنید.

که فک کنم برای LILO شما پس از ویراییش فایل /etc/lilo.conf با دستور

#lilo -v

بوت لودر رو تازه سازی می‌کنید

و در Grub2 هم کافیه که با دستور

#grub2-mkconfig -o /boot/grub/brub.cfg

تنظیمات گراب رو آپدیت کنید.

حالا مرحله بعدی اینه که ما درایورهای سخت‌افزاری که پیشتر بصورت خودکار شناسایی نشده (برای مثال درایور کارت گرافیک کارت صدا و …) رو دوباره نصب کنیم که اگه نسخه‌ی جدیدی براش نیومده باشه و همچنین  توی مسیر /usr/portage/distfiles باشه نیاز به دانلود هم نیست و در مجموع زمان زیادی هم نمی‌بره :)

همچنین پس از نسخه قبلی اگه مثل من از این عادت‌ها دارین که کرنل قدیمی رو پاک کنید با استفاده از  eclean کارتون راه میافته ، برای نصبش از
#emerge eclean-kernel
استفاده کرده و در نهایت توی ترمینال از خدمات نقدی و غیر نقدی‌اش استفاده ببرین

پ ن: سعی کنید کرنل‌های قدیمی رو بعد از اطمینان کامل از اینکه کرنل جدید بخوبی کار می‌کنه و مشکلی براتون درست نمی‌کنه پاک کنید تا مثل من به مشکل برنخورین :D

  • محمد یاری

Yakuake

شنبه, ۲۰ تیر ۱۳۹۴، ۰۸:۱۰ ق.ظ

آدمِ به ظاهرِ دسکتاپ اهمیت‌دهنده‌ای هستم. از KDE استفاده می‌کنم. و بعد از Gnome 3 ترجیح دادم به جای استفاده از تسک منیجر از گوشه‌ی سمت چپ بالا! برای مشاهده‌ی پنجره‌ها استفاده کنم. و حال اینکه وقتی پنجره‌های زیادی باز باشن سوئیچ کردن بینشون یک کمی سخت می‌شه و از اونجایی که ترمینال یک چیز پر استفاده است و پر سوئیچ کردنه! بهترین کار استفاده از یک شورتکات برای دسترسی سریعه. و اگه چیزی که این قابلیت رو به همراه میاره زیبا هم باشه که چه بهتر :D

برای همین منطور شما می‌تونین از Yakuake استفاده کنید و با نصب از طریق

#emerge yakuake 

و اجرا کردنش از طریق کلید F12 بهش دسترسی سریع داشته باشین.  برای اینکه مجبور نباشین هر بار بعد از اجرای مجدد ویندوز مجبور نباشین راه‌اندازی کنین yakuake رو می‌تونین از قسمت system setting>>startup & shutdown >>add program برنامه‌ی yakuake رو ادد کنید تا بعد از بالا اومدن سیستم خودش اجرا بشه.

نمایی از آن مرحوم :

  • محمد یاری

مطالبی چند در مورد /etc/portage

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

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

خب ، حالا این فایل‌ها و دایرکتوری‌ها چی هستند؟

1 - make.conf

ما بصورت عادی برای کامپایل یک بسته مثل ffmpeg بعد از مرحله کانفیگ کردن و چک کردن نیازمندی‌ها توسط ./configure به کامپایلر می‌گیم که پردازنده ما دو هسته‌ائیه و این کار رو با دستور make -j2 انجام می‌دیم. خب چون قراره در اینجا emerge تمام این کارها رو انجام بده ما یکبار برای همیشه ! این دستور رو توی این فایل ذخیره می‌کنیم . همچنین در USE موجود توی این فایل هم براس تعیین می‌کنیم که چه ترجیحاتی رو لحاظ قرار بده برای مثال ما که از qt و kde استفاده می‌کنیم توی USE با -gtk دستور می‌دیم که بسته رو بر اساس qt کامپایل کنه (اگه اشتباه نکنم)

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

2 - package.mask

بذارین اینو با یه مثال توضیح بدم. خُب کارت گرافیک من GT220 ه. که اگه بخوام بصورت عادّی براش درایور مربوط به nvidia رو نصب کنم آخرین ورژن درایو کارت گرافیکی با دستور emerge nvidia-drivers نصب می‌شه در صورتیکه این درایور با کارت من سازگار نیست و رده کارتهای گرافیکی من  درایورهای کمتر از nvidia-drivers-341.0.0 رو ساپورت می‌کنه پس توی این فایل به emerge می‌فهمونیم که در صورت آپدیت شدن نسخه درایور فقط در صورتیکه نسخه‌ پایین‌تر از این نسخه آپدیت شده اونو برای من دانلود کن نسخه‌های

>=x11-drivers/nvidia-drivers-341.0.0

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

3 - package.license

همونطور که از اسمش پیداست مربوط به لایسنس بعضی محصولات مثل adobe-flash هست و ما برای اینکه اونا رو نصب کنیم باید لایسنس‌های اونا رو مدنظر قرار بدیم.

4- package.accept_keywords

در صورتیکه شما بخوای بسته‌ی خاصی رو روی سیستم نصب کنید ، بسته‌هایی که بصورت پایدار برای یک نسخه درنظر گرفته میشه بصورت پیش فرض انتخاب می‌شن. برای مثال یک نسخه خاص از کرنل (در حال حاضر 4.0.5)  یا فایرفاکس (نسخه 31) براتون نصب میشه ولی توی شاخه portage ایبیلد‌های مخصوص نسخه‌های اخیر هم وجود داره. برای اینکه بتونین این نسخه‌ها رو نصب کنید به emerge دستور می‌دید که بجای نسخه‌ی در نظر گرفته شده نسخه‌ای که شما بهش گفتین رو نصب کنه.

(البته یه سری چیزها هم داره که من نمی‌فهمم که اگه شما بگین خوشحالمون می‌کنین :D )

5- دایرکتوری patches

در این شاخه و شاخه هایی که زیرش قرار دارند مثلا زیر شاخه www-client و زیر شاخه‌ی firefox شما می‌تونین پچی که خودتون دوست دارین رو برای نسخه‌ای از برنامه که قراره نصب بشه قرار بدین تا سورس به همراه اون پچ کامپایل بشه.

6- package.use اینو مطمئن نیستم چندان!!

توی این فایل بنا به اینکه توی فایل make.conf و در قسمت USE  یک سری از فلگ‌ها باعث استفاده نشدن یک سری بسته ها می‌شد (چه روان توضیح دادم!!!) برای مثال با -gtk شما دستور به استفاده نشدن gtk دادید ولی برخی بسته‌هایی که نصب خواهید کرد به این بسته نیاز خواهند داشت برای همین شما دستور می‌دین برای بسته‌های خاصّی در حین کامپایل بسته‌هایی که توی USE اونها رو ممنوع کردین یا اینکه اصلا توی USE وجود نداره استفاده بشه.

پ ن: هدفم از نوشتن پست این بوده که یک توضیحی برای این شاخه داشته باشیم تا آدم سردرگم نشه و بدونه با دستوراتی که وارد می‌کنه چه کاری انجام میده، لذا اگه اشتباه یا کوتاهی‌ای هست بگین درست کنیم :)

  • محمد یاری

من و نصب php

دوشنبه, ۷ ارديبهشت ۱۳۹۴، ۰۷:۰۷ ب.ظ

از اونجائی که برای چندمین بار تصمیم گرفتم php رو یاد بگیرم تصمیم به نصب apache و php گرفتم تا کار خودمو شروع کنم. و یه خورده ریزه کاری توی این راه انجام دادم که گفتم اینجا بنویسمش.

در ابتدا یوزفلگ‌هایی که نیاز به اضافه کردن هست رو به make.conf درمسیر /etc/portage/ اضافه می‌کنیم.

فلگ‌های مهمی که همراه نصب php می‌تونیم به USE اضافه کنیم در زیر لیست شده

USE="... php cgi cli fpm apache2 cgid ..."

و همچنین خط زیر رو هم به make.conf اضافه می‌کنیم

PHP_INI_VERSION="production"
PHP_TARGETS="php5-4

و بسته‌های مورد نیازمون رو نصب می‌کنیم

#emerge  dev-lang/php
#emerge
www-server/apache

از اونجایی که بعضی یوزفلگ‌هایی مثل ssl  رو که نیاز ندیدیم اضافه کنیم اضافه نکردیم /etc/conf.d/apache2  رو ویرایش می‌کنیم و  -D SSL -D SSL_DEFAULT_VHOST رو ازش حذف می‌کنیم  و همزمان باهاش D PHP5 - رو  اضافه می‌کنیم

APACHE2_OPTS="-D PHP5 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE"

و همچنین فایل httpd.conf رو در مسیر /etc/apache2 ویرایش می‌کنیم و برای اینکه روی لوکال‌هاست قراره تمرین  کنیم ServerName localhost رو بهش اضافه می‌کنیم به شرطی که لوکال هاست رو به فایل /etc/hosts اضافه کرده باشیم.

و بعد سعی می‌کنیم با دستور زیر تست کنیم که آیا آپاچی کار می‌کنه یا نه اصلا!

#apache2ctl start

که می‌بینیم کار نمی‌کنه و با خوندن /var/log/apache2/error_log

Configuration Failed
[Mon Apr 27 18:42:08 2015] [alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "*****"

که یه ماژولی لود نمیشه و این ماژول توی /etc/apache2/httpd.conf قابل غیرفعال شدن هست و ما هم غیر فعالش می‌کنیم.

و بعد از اون هم با اجرای موفق apache و وارد کردن 127.0.0.1 توی مرورگر تمام شور و نشاطمون برای شروع کردن php فروکش می‌کنه و ما میریم تا هفته‌ها و شاید ماه‌های بعد که دوباره هوس php کار کردن به سرمون بزنه

پ ن: اگه قصد دارین که apache همراه با بالا اومدن سیستمتون شروع به کار کنه می‌تونین با استفاده از دستور زیر اونو فعال کنین

#rc-update add apache2 default

منابع: apache  php و فروم جنتو