گیک فارسی

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

وقتی برنامه نود خودش را درگیر موضوعی میکنه که اشراف کامل روش نداره !!!

نویسنده:
۳۰ شهریور ۹۵

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

در مورد بحث فنی راستش من اصلاً استدلال های نود را قبول ندارم و به نظرم پیمانکار مجری نرم افزار خیلی قابل انتقاد آنچنانی نیست و مشکلات اشاره شده هم باگ نیستند. خبرنگار نود اومده توی سایت یک صندلی را گرفته و به سایت بانک رفته ولی پرداخت و تکمیل خرید را انجام نداده و برگشته توی سایت خرید بلیت و شاکی از اینکه چرا اون صندلی که انتخاب کرده بوده قابل خرید برای دیگران نیست ، غافل از اینکه نمیشه وقتی یک صندلی رفت توی سبد خرید اما پرداخت تکمیل نشده اون را برای انتخاب افراد دیگه باز گذاشت ، چون ممکنه ۱۰۰ نفر آنلاین باشن و چون زمان میبره تا فرد بره توی سایت بانک و اطلاعاتش را بزنه و خرید تکمیل بشه و برگرده. در این حین اگه صندلی رزرو نشه افراد دیگه ممکنه سریعتر از اونی که اول از همه اقدام کرده خرید را تکمیل کنند و صندلی از کف نفر اول بره. پس برای مدت زمان معینی نیاز هست که صندلی رزرو بشه و اگه خرید تا N دقیقه بعد انجام نشد کل خرید کنسل بشه و صندلی آزاد بشه که البته مسئول اون شرکت به صورت دست و پا شکسته اشاره کرد به همین موردی که گفتم اما فردوسی پور دیگه !

تنها ایرادی که بهشون وارد هست اینه که به جای سیاه کردن صندلی به عنوان ناموجود باید صندلی های رزرو را به رنگ دیگه ای نشون بدن و مرتب صفحه را توی بازه زمانی معینی Refresh کنند.

اما اشکال دومی که خبرنگار نود میگیره از اون چرت تره !!! گیر داده چرا با کد ملی هر شخصی میشه توی سیستم ثبت نام کرد ، افراد غریبه و حتی خانم‌ها؟! از اون عجیب تر هم مسئول اون شرکت هست که میگه حرف شما درسته و باید ثبت احوال با ما همکاری کنه و مثلاً پایگاه اطلاعاتی کل مردم مملکت را در اختیار ما بگذاره !!! در صورتی که قطعاً قصد از گرفتن این کد ملی این نبوده که شخص برای خرید بلیت تعیین هویت بشه !!! مگه برای ورود به ورزشگاه یا سینِما و کنسرت میشه دم در به همه گفت کارت ملیتون را بردارین بیارین ؟! خلاصه اینکه با گرفتن این کد ملی به هر دلیلی که بوده نمیشه ایرادی به سیستم وارد کرد.

تناظر کد ملی با بلیت وقتی ایراد میشه که نرم‌افزار اجازه نده کسی با یک کد ملی بیش از یک یا چند تا بلیت بگیره چون ممکنه کسی کد ملی مثل من را بدونه و بره حداکثر بلیت ممکن را بگیره و من نتونم با کد ملی خودم دیگه بلیت تهیه کنم. نه اینکه استدلالت این باشه که چرا میشه با کد ملی خانم هم بلیت گرفت! بعدش جناب فردوسی پور سایت باشگاه بارسلونا را نشون میدن و میگن با هر IP میشه ۶ تا بلیت خرید و شما هم بهتر بود همون IP را معیار قرار میدادین. ایشون توجه نمیکنن که IP هم مشکلات خودش را داره و مثلاً توی خود صدا و سیما اگه ۳۰ نفر بخوان از اینترنت اونجا اقدام کنند برای خرید بلیت از همین بارسلونا ، حداکثر همون ۶ تا بلیت را میتونن بخرند. در صورتی که افراد کاملاً متفاوتی هستند که دارند از یک IP استفاده میکنند.

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

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

کمی بحث طولانی شد اما واقعاً از برنامه نود با این سابقه انتظار نمیره بدون مشاوره با یکی از هم صنفی های این پیمانکار چنین نقد غیر کارشناسانه ای داشته باشه !!!

چگونه پس از ۴ سال استفاده از لینوکس ، دیگران را به استفاده و مهاجرت به لینوکس تشویق میکنم ؟

نویسنده:
۱۸ شهریور ۹۵

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

مهاجرت به لینوکس

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

اما اگه این معرفی به کسی باشه که از کامپیوتر حرفه ‌ای تر استفاده میکنه یکسری موضوعات هستند که سد راه می‌شوند و متقاعد کردن هم نه درسته و نه عملی !!! کلاً در این مواقع باید ببینم طرف چی میخواد. مثلاً همکار های خودم که در زمینه برنامه نویسی وب کار میکنند را میشه تا ۹۵ درصد قانع کرد و اون ۵ درصد هم بر میگرده به اینکه طرف با کامپیوترش بازی میکنه یا حوصله نداره بشینه کمی با Gimp کار کنه تا بفهمه در زمینه وب کارش را حل میکنه یا LibreOffice در حد کاری که ما ازش انتظار داریم کامله.

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

۱ – کسانی که اهل Game هستند و Steam هم راضیشون نمیکنه و قصد استفاده از کنسول های بازی و جایگزینیش با کامپیوتر هم ندارند.

۲ – کسانی که حاضر نیستند حتی نیمی از زمانی که صرف یادگیری ویندوز کردند را برای لینوکس صرف کنند و به همینکه نمیتونن کاری را به راحتی ویندوز انجام بدن ازش زده میشن.

۳ – کسانی که از نرم‌افزار های تخصصی منحصر به ویندوز استفاده میکنند و جایگزین مناسبی روی لینوکس براش وجود نداره یا احساس میکنن لینوکس ارزش جایگزینی و یادگیری یک نرم‌افزار معادل را نداره !!!

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

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

عدم سازگاری !
من نمیتونم در مورد سازمان ها و اینکه چرا از لینوکس استفاده نمیکنن نظر بدم توی این پست اما قطعاً اینکه گلستان با توجه به اینکه حتی روی ویندوز باید روی نسخه های خاصی از IE نمایش داده بشه دلیل بر عدم سازگاری نیست و کم‌سوادی عده‌ای را میرسونه که با هر هنری که دارن تونستند به صورت انحصاری محصولی که بد ساخته شده را بفروشن !!! خلاصه اینکه بنده هم با اداره ها در ارتباط هستم (البته سالی یکی دو بار و نه بیشتر) و گاهی نیاز میشه از ویندوز کناری سیستمم برای برخی کار‌هاشون استفاده کنم. اما بیش از ۹۰ درصد کار ها با همون لینوکس راه میفته و نیاز به ویندوز نداره ! در مورد نرم‌افزار های وطنی هم راستش مورد نبوده که شخصاً نیاز روزمره بهش داشته باشم و اگه برای کسی چنین نرم افزاری وجود داره خوب این مشکل ایشون میشه و نمیشه تعمیم داده به همه.

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

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

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

در پایان توصیه میکنم اگه لینوکس را تا حالا امتحان نکردین حتماً در کنار ویندوز نصب کنید و هر از گاهی وقت بگذارین براش تا بتونین ازش سر در بیارین و شاید یک روز کلاً مهاجرت کردین به لینوکس./

مشکل در نمایش اطلاعات فارسی به صورت علامت سوال از پایگاه داده MySQL در PHP

نویسنده:
۱۶ شهریور ۹۵

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

مشکل نمایش متون فارسی به صورت علامت سوال

از اونجا که غالباً هر کسی در بخشی از پروسه انجام کار مشکل داره من به ترتیب مراحل اطمینان از درستی انجام کار را در چند شماره توضیح میدم :

۱ – زمانی که پایگاه داده را روی سیستم خودتون نصب میکنید اطمینان حاصل کنید که در مراحل نصب ، پشتیبانی از utf8 را در تنظیمات mysql انجام میدین. روی هاست ها میشه ۹۹ درصد مطمئن بود که از utf8 روی mysql پشتیبانی میشه.

۲ – زمانی که جدول را ایجاد میکنید بهتره برای جلوگیری از مشکلات آتی و فارغ از اینکه Charset پیش‌فرض و Colltation پیش‌فرض در زمان نصب MySQL چی بوده خودتون جداول را با Charset از نوع utf8 و Collation از نوع utf8_persian_ci ایجاد کنید.

توجه: اگه این دو مورد خیلی براتون ملموس نیست اهمیتی نداره ! اگه توی phpmyadmin یا هر برنامه مدیریت پایگاه داده‌ای که استفاده میکنید میتونید فارسی بنویسین و ذخیره کنین و نمایش بگیرین پس کلاً با utf8 مشکل ندارین مگه جاهای خاص که ربطی به موضوع این پست نداره و اگه مشکل دارین با پشتیبانی شرکت میزبان وب خودتون تماس بگیرین.

۳ – حتماً اطمینان حاصل کنید که charset صفحه html را توی تگ meta برابر با utf8 قرار بدین :
در html4 و xhtml

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

در html5

<meta charset="UTF-8">

۴ – اگه از کتابخونه mysql توی php استفاده میکنید حتماً بعد از mysql_connect (دقیقاً بعدش نه اینکه بعد از select گرفتن این کار را انجام بدین !!!) mysql_set_charset را اجرا کنین :

$link = mysql_connect("server_ip_address","mysql_user_name","mysql_pass",true);
mysql_set_charset('utf8',$link);

توجه: ممکنه خیلی جاها ببینید گفته باشن این دو query را بعد از connect اجرا کنین :

mysql_query("SET NAMES 'utf8'",$link);
mysql_query("SET character_set_connection = 'utf8'",$link);

اما تابع mysql_set_charset بهتر و بهینه تره چون باعث میشه زمان استفاده از تابع mysql_real_escape_string که برای جلوگیری از حملات SQL Injection خیلی مهم هست کاراکتر های یونیکد به درستی escape بشن که در حالت پیشنهادی دوم این اتفاق نمیفته و شما در مقابل برخی حملات SQL Injection در خطر قرار میگیرین !

۵ – اگه از کتابخونه mysqli استفاده میکنید بعد از connect متد set_charset را صدا بزنید :

$db = new mysqli('server_ip_address', 'db-user', 'db-pass', 'db-name');
$db->set_charset("utf8");

۶ – اگه از کتابخونه pdo استفاده میکنید زمان connect باید charset را توی dsn مشخص کنید:

$link = new PDO("mysql:host=localhost;dbname=DB;charset=utf8");

توجه: کلاً بهتره کتابخونه mysql را بی‌خیال بشین چون دیگه توی نسخه های جدید php پشتیبانی نمیشه و کلاً حذف شده. اما در مورد mysqli و pdo خیلی سلیقه‌ای هست که توصیه میکنم اگه از mysql استفاده میکنید و قصد جایگزینیش با mssql و پایگاه های دیگه را ندارید حتماً از mysqli استفاده کنید چون سریعتر از PDO هست و برای پایگاه داده mysql بهینه شده.

اگه همه موارد را درست رعایت کرده باشین هیچ مشکلی در نمایش و درج فارسی با پایگاه داده MySQL توی PHP نخواهید داشت. من در پایان هم یک نمونه کد جهت تست قرار میدم :

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>نمایش محتوای جدول</title>
<style>
  body{
      font-family:tahoma;
      font-size:12px;
  }
</style>
</head>

<body>
<?php
  $db = new mysqli('localhost', 'db-user', 'db-pass', 'db-name');
  if($db->connect_errno > 0){
      die('خطا در زمان اتصال به پایگاه داده [' . $db->connect_error . ']');
  }else{
      $db->set_charset("utf8");
      $result = $db->query("select * from tbl_names");
      echo "<table border='1' style='direction:rtl'>";
      echo "<tr style='font-weight:bold;background-color:#ccc'>";
      echo "<td>نام</td>";
      echo "<td>نام خانوادگی</td>";
      echo "<td>کد ملی</td>";
      echo "</tr>";
      while($row = $result->fetch_assoc()){
        echo "<tr>";
        echo "<td>{$row['fld_name']}</td>";
        echo "<td>{$row['fld_family']}</td>";
        echo "<td>{$row['fld_idnumber']}</td>";
        echo "</tr>";
      }
      echo "</table>";
      $result->free();
      $db->close();
  }
?>
</body>

</html>

موفق باشین.

رفع مشکل خط افقی روی ویدئو یا همون 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);