گیک فارسی

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

حذف کاراکتر های غیر فارسی و انگلیسی و علائم از متن در 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 که شرح داده شد نیست اما همه نرم‌افزار ها و مرورگر ها ازش پشتیبانی میکنن.

معرفی یکی از بهترین فیلم‌های ورزشی ساخته شده یعنی Secretariat

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

شاید دوستانی که مثل من علاقه‌مند به سینِما هستند و وبلاگ من را دنبال میکنن در فصل جوایز و پس از Golden Globe انتظار داشته باشن که من از فیلم‌های خوب امسال بنویسم اما متأسفانه هنوز فیلم خیلی شایان تحسینی ندیدم و حتی Martian هم فیلم خیلی شاهکاری که نظر من را جلب کنه نبود.

Secretariat

یکی از فیلم‌هایی که همیشه میخواستم بببینم Secretariat بود چون به نظر خیلی‌ها بهترین فیلم ورزشی با داستان واقعی هست که ساخته شده. من شاید این عنوان را خیلی قبول نداشته باشم اما قطعاً یکی از بهترین ها هستش.

Secretariat همونطور که در پایان فیلم اشاره میشه بهترین اسب تاریخ اسب دوانی Triple Crown بوده و همچنان رکوردهاش را اسبی نتونسته بشکنه. خوب اگه کوچکترین علاقه‌ای به اسب دوانی داشته باشین لازم نیست بیشتر توضیح بدم و قطعاً دیدنش را توی برنامه آیندتون خواهید گذاشت.

این فیلم با بازی Diane Lane و John Malkovich هیچ کمبودی از نظر بازیگر سرشناس نداره و کارگردانی هم بر عهده Randall Wallace بوده که Braveheart را نوشته و مردی در نقاب آهنین را کارگرانی کرده. اما دلیل مطرح کردن این فیلم برای من نه هنرپیشه و کارگردان هست و نه بحث سینمایی فیلم.

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