گیک فارسی

نوشته های یک گیک فارسی از فعالیت ها ،‌ علاقه مندی ها و نقد هایش

رفع مشکل خط افقی روی ویدئو یا همون Screen Tearing در اوبونتو

نویسنده:
۱۷ مرداد ۹۵

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

Screen Tearing

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

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

– دوم اینکه من دقیقاً نمیدونم به فارسی به این مشکل چی میگن اما توی جستجو‌هایی که داشتم به لاتین بهش میگن Screen Tearing که اون را هم قطعاً اطمینان ندارم و مشکل توی مجموعه پاسخ‌های همین Screen Tearing حل شد و امیدوارم کسی که به فارسی دنبال راه حل میگرده بتونه این پست را پیدا کنه.

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

/usr/share/X11/xorg.conf.d/20-intel.conf

حالا محتوای زیر را توش بنویسین و سیستم را ریست کنین (شاید نیاز به ریست نباشه اما من که انجام دادم) :

Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "TearFree"    "true"
EndSection

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

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

نویسنده:
۵ خرداد ۹۵

شنبه شب شصت و نهمین فستیوال فیلم کن به پایان رسید و برای ما ایرانی‌ها با خبر های خوشی همراه بود ، کارگردان خوب کشورمون آقای اصغر فرهادی با فیلم فروشنده در بخش اصلی حضور داشتند و با توجه به سبقه آقای فرهادی نزد اهالی سینِما ، همه منتقدان و دوستدارانشون در انتظار بودند که ببینن نتیجه چه خواهد شد ؟!

کن ۲۰۱۶ - فرهادی و حسینی

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

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

نمایش صفحه سفید ،‌ کار نکردن کد روی سرور و از این دست مشکلات در PHP

نویسنده:
۲۴ اردیبهشت ۹۵

یکی از سؤالاتی که بارها مخصوصاً توسط تازه کار‌های PHP پرسیده میشه این هست که برنامه یا سایت روی سیستم خودمون به صورت Local درست کار میکنه اما وقتی به Server و سایت اصلی منتقلش میکنیم به مشکل میخوریم.

کدنویس عصبانی

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

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

بر روی Server از طریق کانفیگ PHP به صورت پیش‌ فرض مانع از نمایش خطا ها به کاربر می‌شوند که کاملاً درسته و شما خودتون باید نمایش خطا‌ها را دستی فعال کنید. برای این کار این دو خط را در ابتدای کدهای PHP خودتون قرار بدین :

error_reporting(E_ALL);
ini_set('display_errors','1');

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

php_flag display_startup_errors on
php_flag display_errors on
php_value error_reporting 32767

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

php_flag  log_errors on
php_value error_reporting 32767
php_value error_log  /full/path/to/log/file.log

حالا کافیه سایت را دوباره چک کنیم و این بار قطعاً خطاهای احتمالی را متوجه میشیم و میتونیم رفعشون کنیم.

بازنشاندن یا همون Reset کردن فیلد File Input با جاوا اسکریپت

نویسنده:
۲۳ اردیبهشت ۹۵

اگه به توسعه Ajax ی وب سایت‌های خودتون روی آورده باشین قطعاً یکی از دردسر هایی که باهاش مواجه شدین میتونه این باشه که چطور یک فیلد Input از نوع فایل را Reset کنید. چون با خالی کردنش یا Clone گرفتن و این چیزا Reset بشو نیست و مرورگر‌های مختلف هم رفتار‌های متفاوتی دارند که اگه اینطور نبود جای تعجب داشت مخصوصاً نسخه‌های قدیمی IE !!!

روش کلی این هست که کل ورودی ها را یا همون input را بگذاریم توی تگ form و حالا فرم را Reset کنیم. اما اگه بخواهیم فقط همون Input را بدون خرابکاری و تگ بازی و دینامیک Reset کنیم میتونیم از این کد استفاده کنیم :

با فرض اینکه اسم id اون Input مورد نظر myfile باشه :

function reset_fileinput(input_id){
	e = document.getElementById(input_id);
	$(e).wrap('<form>').closest('form').get(0).reset();
	$(e).unwrap();
}

reset_fileinput("myfile");

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

نویسنده:
۳ اسفند ۹۴

با توجه به شرایط خانواده‌های من و همسرم و مشکلات کوچیک و بزرگی که در طول دوران بارداری روبرو بودیم ،‌ امروز یعنی دوشنبه ، ۳ اسفند ۹۴ بالاخره ۹ ماه که شاید ۶ ماهش واقعاً برای من بسیار درگیرانه و پرمشغله از نظر خانوادگی گذشت به پایان رسید و صاحب عزیزترین دارایی و نتیجه زندگیم یعنی دختر کوچولوم شدم که گریه‌های نوزادیش شیرین‌ترین طنین‌های زندگیم هست و خواهد بود.

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

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

الیکا تولدت مبارک.

نظر دهید
دیدگاه‌ها برای بهترین و شیرین ترین رویداد زندگی من بسته هستند

معرفی فیلم Trumbo ،‌ یکی از بهترین فیلم‌هایی که امسال دیدم

نویسنده:
۲۱ بهمن ۹۴

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

ترامبو

قبل از هر چیز باید بگم امشب نسبت به این موضوع که متاسفانه اکثر علاقه‌مندان به سینِما انقدر که به کارگردان و بازیگر توجه میکنن به نویسنده اثر یعنی کسی که Screenplay را نوشته بی‌توجه هستند متأثر شدم و خودم یک نمونش که سعی میکنم در مورد نویسندگان فیلم‌های مورد علاقم توجه بیشتری داشته باشم.

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

بازیگر نقش دالتون ترامبو کسی نیست جز بازیگر فوق‌العاده Bryan Cranston که عموم به خاطر سریال بسیار محبوب Breaking Bad میشناسنش انصافاً در این فیلم بسیار خوب بازی کرده و نامزد جایزه اسکار هم شده. از دیگر بازیگران خوب فیلم میشه به Diane Lane و Helen Mirren اشاره کرد. کارگردان فیلم هم Jay Roach هست که بهترین فیلمش Meet The Parents میتونه باشه (با ارفاق).

فیلم را شدیداً توصیه میکنم چون هم به این موضوع اشاره داره که آمریکایی ها هم میتونن حماقت‌های بزرگ حتی در طول یک دهه در تاریخشون داشته باشن و هم اینکه فیلم در مورد یکی از نوابغ سینِما هست و بسیار مثبت و درسته. در ضمن به فیلم توی imdb نمره ۹ میدم.

حذف کاراکتر های غیر فارسی و انگلیسی و علائم از متن در PHP

نویسنده:
۷ بهمن ۹۴

یکی از سوالاتی که خیلی توی انجمن ها بهش برخورد کردم این هست که کاربر میخواد کاراکتر هایی که مدنظرش نیست را از یک رشته حذف کنه ،‌ در واقع میخواد whitelist یا همون فهرست سفید بگذاره ،‌ از اونجا که عموما دوستان نیاز به حفظ کاراکتر های فارسی و انگلیسی و علامت های پر استفاده در متون هستند من RegExp را برای این کاراکتر ها نوشتم اما شما میتونید کاراکتر های دیگه را با رعایت escape کردن کاراکتر غیر مجاز RegExp اضافه کنید:

$str = "^Ao طp9@ژ~|;_Zcی۸?(-)!";
function sanitize($str){
	echo preg_replace("/[^A-Za-z0-9_\?\-\(\)\! \ا\ب\پ\ت\ث\ج\چ\ح\خ\د\ذ\ر\ز\ژ\س\ش\ص\ض\ط\ظ\ع\غ\ف\ق\ک\گ\ل\م\ن\و\ه\ی\ک\آ\ی\ئ]/", "", $str);
}
echo sanitize($str);

بالا نیومدن سیستم با خطای عدم Mount شدن درایو اصلی لینوکس

نویسنده:
۴ بهمن ۹۴

امروز روی لپ‌تاپ قدیمیم میخواستم چند تا ایمیل را بررسی کنم و حواسم نبود که شارژ نداره ،‌ لپ‌تاپ را روشن کردم و رفتم USB Memory بیارم که فایل‌ها را بریزم روش ولی همینکه برگشتم دیدم لپ‌تاپ خاموش شده و متوجه شدم شارژ نداره ،‌ وقتی برق AC وصل کردم و میخواست بیاد بالا Grub سیستم را روی درایو sda که Home روش بود Boot نمیکرد و خطای Mount میداد و میرفت توی یک محیط با تعدادی دستور خاص.

اگه کاربر ویندوز بودم عموما استفاده از Recovery واین چیزا نتیجه‌ای نمیداشت و ویندوز را دوباره نصب میکردم اما نه ! سیستم عامل لینوکس هست و حتماً ابزاری برا ی رفع مشکل داره.Live CD اوبونتو را گذاشتم توی DVD-ROM و اوبونتو اومد بالا اما پیغام داد که نمیتونه Drive را Mount کنه. اومدم با دستور زیر دستی انجام بدم :

sudo mount /dev/sda3 /media/mysda

که خطای زیر را گرفتم :

mount: wrong fs type, bad option, bad superblock on /dev/sda3,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so 

طبق پیشنهادش دستور dmesg | tail را زدم و توی خط آخر نوشته بود:

EXT4-fs (sda3): error loading journal

با کمی جستجو متوجه شدم ext4 یه فایلی داره به نام Journal که وقتی سیستم به شکل غیر صحیح و اصولی Shutdown میشه لینوکس با استفاده ازش ناسازگاری ها و ناهماهنگیهای File System را تعمیر میکنه. حالا لینوکس برای Mount نیاز به این Journal داشت و گویا دچار مشکل شده بود.

پس دنبال Corrupt Journal گشتم و متوجه شدم با Gparted و قابلیت Check (روی درایو Right Click کنید و چک را انتخاب کنید). مشکل حل میشه. کمی فرآیندش زمان برد و پیام موفقیت داد اما میتونستی ببینی داره چه دستوری را اجرا میکنه :

sudo e2fsck -f -y -v /dev/sda3

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

تیم امید فوتبال ایران هیچ آینده درخشانی در انتظار نخواهد داشت!

نویسنده:
۲۶ دی ۹۴

بیش از چهل سال از آرزوی حضور تیم فوتبال امید ایران در بازی‌های المپیک میگذره اما با وجود داشتن بازیکنان خیلی خوب در بسیاری از دوره های اخیر همچنان شاهد تداوم ناکامی ها هستیم و گویا در المپیک ۲۰۱۶ هم اوضاع به همین منوال خواهد بود !

مری تیم امید

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

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

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

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

موضوع دیگه اینکه تیم کاملاً بی‌هدف و با مکتب علی اصغری بازی میکنه و کاملاً مشخصه نه میدونه چی میخواد ، نه چیدمان درستی برای همون چیزی که نمیخواد داره نه پلان های درست و حسابی برای موقعیت های مختلف بازی در نظر داره !

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

پی نوشت: (۲ بهمن ۹۴) خوب بالاخره بعد از برنامه ریزی غلط خاکپور و باخت به قطر مجبور به بازی با ژاپن شدیم و با اینکه بد هم باهاشون بازی نکردیم اما به بازی منسجم و حساب شده ژاپنی ها باختیم و با وجود اینکه این دوره بازیکنان خیلی خوبی داشتیم باز هم ناکام بزرگ نام گرفتیم.

اعتبار سنجی (Login) کاربر با استفاده از HTTP Authentication و PHP

نویسنده:
۲۵ دی ۹۴

توی یکسری از سناریو‌ها نیاز هست که بدون استفاده از فرم ورود به سایت با استفاده از نام کاربری و گذرواژه دسترسی کاربر را اعتبارسنجی کنیم. یکی از موارد میتونه سایت‌های اشتراک فایل باشه که باید دسترسی کاربر به فایل ، شارژ حجمی حساب کاربر و موارد دیگه را اعتبار سنجی کنیم.

Authentication

HTTP Authentication یا اعتبار سنجی از طریق پروتوکل HTTP مدت زمان زیادی هست که وجود داره و در گذشته خیلی استفاده میشده و حالا خیلی کم‌رنگ شده. اما برای سناریو‌هایی که در پاراگراف بالا اشاره کردم بهترین انتخاب هست و با کمک PHP میتونیم اعتبارسنجی را بدون نیاز به htpasswd. و فایل htaccess. انجام بدیم :

$username = null;
$password = null;

if (isset($_SERVER['PHP_AUTH_USER'])) {
 $username = $_SERVER['PHP_AUTH_USER'];
 $password = $_SERVER['PHP_AUTH_PW'];
} elseif (isset($_SERVER['HTTP_AUTHORIZATION'])) {
 if (strpos(strtolower($_SERVER['HTTP_AUTHORIZATION']),'basic')===0)
 list($username,$password) = explode(':',base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
}

if (is_null($username)) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'You need login information in http authentication format';
    die();
} else {
    echo "<p>Hello {$username}.</p>";
    echo "<p>You entered {$password} as your password.</p>";
}

نکته: برای ارسال نام کاربری و گذرواژه با URL باید با فرمت زیر عمل کرد :

http://user:pass@example.com/path-to-file

نکته: در این روش نام کاربری و گذرواژه عبور به صورت متن خام Plain Text ارسال میشه و برای فراهم کردن امنیت باید از SSL استفاده کنیم یا از روش Digest Authentication استفاده کنیم که به سر راستی روش Basic که شرح داده شد نیست اما همه نرم‌افزار ها و مرورگر ها ازش پشتیبانی میکنن.