گیک فارسی

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

وارد سازی اطلاعات از پایگاه های دیگر (MSSQL , Excel – XLS- XLSX , …) به MySQL

نویسنده:
۸ خرداد ۹۳

قطعا یکی از مشکلاتی که برنامه نویسان زیاد با اون روبرو می‌شوند انتقال اطلاعات از یک پایگاه اطلاعاتی به پایگاه دیگر مخصوصاً با نوع متفاوت است. مثلاً اطلاعات را از MSSQL به MySQL انتقال دهیم. یا از یک فایل Microsoft Access یا حالا هر پایگاه اطلاعاتی فایلی یا Relational. معمولاً این کار را با ابزار های رایگان مانند MySQL Workbench یا پولی مانند Navicat انجام میدهند.

اما گاهی پیش میاد که امکان انتقال مستقیم وجود نداره. در این حالت بهترین راه خروجی گرفتن اطلاعات در یک مرحله به CSV و یا در دو مرحله به Xls یا Xlsx یا Ods و سپس به CSV.

زمانی که فایل CSV نهایی را داشته باشیم با خود دستورات SQL ، واردسازی به راحتی انجام پذیره. کافیه با دستور زیر به MySQL Server وصل بشیم :

mysql -u [username] --password=[password] --database=[database] –local-infile=TRUE

بعدش با دستور زیر محتویات فایل را داخل جدول مورد نظر میریزیم :

LOAD DATA LOCAL INFILE '/home/geekfarsi/file.csv' INTO TABLE [tablename] FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\n' (field1, field2);

نکته : در ویندوز آدرس دهی اینطوری انجام میشه :

c:\\path\\to\\csvfile.csv

نکته : در ویندوز به جای n\ ازr\n\ استفاده میکنیم.

نکته : در صورتی که محتویات داخل فایل CSV فرمت utf-8 دارند قبل از دستور واردسازی از دستورات زیر استفاده کنید :

SET NAMES 'utf8'
SET character_set_connection = 'utf8'

محاسبه تعداد پیامک فارسی و انگلیسی بر حسب تعداد کاراکتر ارسالی

نویسنده:
۴ خرداد ۹۳

امروز روز ضرر کوچیک مالی بود اون هم به دلیل ندونستن ! من توی کار کردن یک قانون مهم دارم و اون اینه که اشتباهت را بپذیر حالا در مقابل هر کسی حتی آبدارچی یا نگهبان زحمتکشی که برای تو یا توی محیط کاری تو کار میکنه. منشی یکی از مشتری‌ها امروز تماس گرفت که چرا ما سه روز پیش فلان تعداد پیامک شارژ کردیم و بر حسب محاسبات من باید یک سوم ازش باقی مونده باشه.
بعد از کمی بررسی متوجه شدم که برنامه من تعداد پیامک بر اساس کاراکتر را درست نشون نمیده. در‌ واقع برنامه من ۱۴۰ کاراکتر پیامک را تقسیم بر ۷۰ کرده و گفته این دو تا پیامک میشه که بر اساس پروتوکلی که امروز باهاش آشنا شدم کاملاً غلطه و ۳ تا پیامک حساب میشه.

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

اول توضیح بدم که هر پیامک از ۱۴۰ بایت تشکیل شده که پیامک های انگلیسی ۷ بیتی یعنی میتونه شامل ۱۶۰ کاراکتر (حتماً میدونین که space هم کاراکتر حساب میشه!) و پیامک های فارسی ۱۶ بیتی که میتونه شامل ۷۰ کاراکتر باشه. حالا زمانی که یک پیامک از این تعداد بایت تجاوز کنه علاوه بر اون ۱۴۰ بایت برای هر پیامک بایستی یک بخش به نام UDH به ابتدای هر بخش اضافه بشه تا مشخص کننده توالی پیامک ها باشه. این UDH دو استاندارد داره که یکی ۵ بایتی + یک بایت برای Reference Number و دیگری ۶ بایت + ۲ بایت برای Reference Number است. و شما باید بپرسین که ارائه دهنده خدمات پیامک انبوه شما از کدومش استفاده میکنه. در مورد مربوط به من ، اون شرکت داشت از مدل ۵ +‌ ۱ که نهایتاً ۶ بایت میشه استفاده میکرد.

من هم زیاد با این محاسبات ریاضی حال نمیکنم و نتیجه اینکه برای پیامک فارسی چند تایی ، پیامک اول ۷۰ کاراکتر ، پیامک دوم ۶۴ کاراکتر و پیامک سوم ۶۷ کاراکتر میشه ارسال کرد. در مورد صورت مسأله من مشکل این بود که پیامک دو تایی میتونه ماکسیمم ۱۳۴ کاراکتر بشه ولی من داشتم ۱۴۰ کاراکتر ارسال میکردم که سه تایی خواهد شد.

در مورد پیامک های انگلیسی هم پیامک اول ۱۶۰ کاراکتر ، پیامک دومی ۱۴۵ کاراکتر و سومی هم ۱۵۶ کاراکتر میتونه باشه. فراموش نکنین که این‌ها را باید با هم جمع بزنین یعنی پیامک دوتایی انگلیسی میتونه ماکسیمم ۳۰۴ کاراکتر باشه و سه تایی ماکسیمم ۴۶۰ کاراکتر !

مهاجرت به لینوکس | نصب اوبونتو در کنار ویندوز

نویسنده:
۱ خرداد ۹۳

پیرو نوشته‌ای که با عنوان «مهاجرت به لینوکس | کدام توزیع ؟» منتشر کردم. در سومین مرحله و بعد از انتخاب Ubuntu به عنوان توزیع مورد نظر و دانلود اون از سایت سازنده ، در نظر دارم تا آموزش بدم چطور Ubuntu را در کنار ویندوز نصب کنیم. قطعاً مدتی زمان میبره تا شخص خودش را با سیستم عامل جدید وفق بده و به‌ قدری در استفاده از اون مهارت کسب کنه که سیستم عامل قبلی یعنی ویندوز را کلاً بی خیال بشه و شاید برای پشتیبانی از پروژه های قبلی اون را نگه داره یا توی یک VM (بخوانید ماشین مجازی) نصبش کنه.

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

خوب ما آخرین نسخه Ubuntu (ترجیحاً LTS یا همون «با پشتیبانی دراز مدت») را از سایتش دانلود کردیم و اون را روی یک CD یا DVD به قول معروف Write یا صحیح‌تر Burn کردیم. در این مرحله CD را توی Drive قرار میدیم و سیستم را ریست میکنیم. از اونجا که Ubuntu به صورت Bootable و Live CD هستش. سیستم عامل بدون نیاز به نصب اجرا میشه و سیستم بالا میاد. ما میتونیم بدون نصب سیستم عامل اون را تست کنیم و مطمئن بشیم که همه سخت‌افزار ما را شناخته و کلاً یک بررسی جامع قبل از نصب داشته باشیم.

مهمترین و اصلی‌ترین بخش از نصب Ubuntu ساماندهی پارتیشن ها هستش. به نظر من بهترین روش برای اختصاص پارتیشن های لینوکس حالت سه پارتیشنی هستش یعنی Root , Home , Swap (از چپ بخوانید!) که فایل‌های سیستمی لینوکس توی Root قرار میگیره ، فایل‌های برنامه‌ها ، فیلم ، موسیقی و غیره توی Home قرار میگیره و Swap هم که در موارد مرتبط با Ram مثل زمانی که Ram کم میاد و … (از حوصله این مطلب خارجه) کاربرد داره.

قطعاً سناریو های متفاوتی برای پارتیش های شما وجود داره و من نمیتونم برای تک به تک اونها مثال بزنم. اما فرض را بر این میگذاریم که شما کلاً میدونین پارتیشن های Primary و Extended و Logical چی هستند که اگه نمیدونین باید اول در مورد اونها کمی اطلاعات به دست بیارین. و فرض دوم هم بر این میگذاریم که شما دو تا پارتیشن دارین یکی پارتیشن مربوط به ویندوز یکی هم پارتیشن مربوط به فایل‌های مولتی مدیا مثل عکس و فیلم و بازی و موسیقی و غیره. ویندوز روی یک Primary پارتیشن نصب شده و پارتیشن مولتی مدیا شما یا روی Primary هست و یا روی Extended که شامل یک Logical پارتیشن شده. از اونجا که بیشترین فضا به پارتیشن مولتی مدیا شما اختصاص داده شده . ما نیاز داریم تا فضای مورد نیاز برای پارتیشن های لینوکس را که من مجموعا ۵۰ گیگ در نظر میگیرم (البته میتونید کم یا زیادش کنین) را از پارتیشن مولتی مدیا فعلی تأمین کنیم.

ما برای دستکاری پارتیشن ها از ابزار Gparted توی Ubuntu استفاده میکنیم. این ابزار را میتونید با زدن Ctrl-D و تایپ gparted و زدن Enter اجرا کنید.من قصد ندارم در حال حاضر ابزار Gparted را آموزش بدم و شاید در نوشته‌های آتی اون را معرفی و آموزش دادم.

اگر فرض را بر این بگذاریم که پارتیشن مولتی مدیا ویندوز از نوع Primary هستش کافیه با استفاده از Gparted اون را Shrink یا کوچیک کنیم تا فضای خالی مثلاً به اندازه ۵۰ گیگ آزاد بشه و بعدش توی اون فضای خالی یک پارتیشن ۵۰ گیگی از نوع Extended بسازیم و سه پارتیشن لینوکس را از نوع Logical توی اون پارتیشن Extended ایجاد کنیم.

اگر فرض را بر این بگذاریم که پارتیشن مولتی مدیا ویندوز از نوع Logical و توی یک Extended باشه. کافیه اون پارتیشن Logical را به اندازه مثلاً ۵۰ گیگ کوچیک کنیم و ۳ تا پارتیشن Logical مربوط به لینوکس را توی فضای خالی شده اون پارتیشن Extended ایجاد کنیم.

حجم پارتیشن های لینوکسی را میشه برای Root به اندازه ۱۰ گیگابایت ، برای Swap به اندازه Ram (مثلاً ۴ گیگ برای رم ۴ گیگی) ، مابقی هم برای Home در نظر بگیریم.حالا میتونید تغییرات را توی Gparted اعمال کنید و منتظر بشین تا عملیات کامل بشه.

حالا روی آیکون Install کلیک میکنیم تا پنجره نصب باز بشه. پس از انتخاب زبان باید برای برنامه نصب مشخص کنیم از کدام پارتیشن ها استفاده کنه. پس روی «انتخاب دستی پارتیشن ها» کلیک میکنیم. و نوع پارتیش ها را با انتخاب آن‌ها (Mount Point) تعیین میکنیم.(Root همون / هستش).

حالا با ادامه دادن به Wizard به راحتی Ubuntu را نصب می کنیم.

بعد از نصب Ubuntu به جای Windows Bootloader حالا Bootloader ی به نام Grub جایگزین شده تا انتخاب کنید کدام سیستم عامل Boot بشه. نصب که تمام شد با ریست کردن و انتخاب Ubuntu از Bootloader به راحتی Ubuntu بالا میاد و کار نصبش تموم شده.

حالا باید مطمئن بشیم که Windows هم به راحتی Boot میشه و بالا میاد. اما چرا ممکنه نیاد ؟ به خاطر اینکه بعد از Repartitioning احتمال داره که Filesystem مربوط به Windows دچار مشکل یا به هم ریختگی شده باشه که احتمالش هم کم نیست. پس اگه بعد از انتخاب Windows از منوی Grub خطایی گزارش شد و Windows بالا نیومد نگران نشین. کافیه CD مربوط به ویندوز را بگذارین توی Drive و پس از Boot شدنش به Setup برین و از گزینه Repair your system و در صورت عدم توفیق از دیگر گزینه های Repair And Recovery Tools استفاده کنید.

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

توجه : بسیاری از بخش‌های این نوشته به استناد از مطلب سایت Dedoimedo با عنوان How to install windows 7 and ubuntu side by side نوشته شده است. اگرچه موضوعات مطرح شده همگی تجربه شخصی و عملی این جانب می باشند.

در پست بعدی مهاجرت به لینوکس در مورد نصب سرویس های مورد نیاز برای برنامه نویسی و توسعه وب یا همون LAMP خواهم نوشت.

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

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

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

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

فکر نکنم خیلی از زمان ساختش گذشته باشه و هنوز محبوب نیست و شما اگه از این ایده خوشتون اومده میتونین donate کنین یا مثل من توی وبلاگتون یا به دوستان خودتون معرفیش کنین.

مهاجرت به لینوکس | کدام توزیع ؟

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

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

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

من با توجه به تحقیقاتی که خودم انجام دادم متوجه شدم کلاً کار با خانواده Debian راحت تره و دو تا از محبوب‌ترین توزیع‌ها یعنی Ubuntu و Mint هم از همین خانواده هستند و فقط به خاطر پشتیبانی بیشتری که احساس کردم در مورد Ubuntu وجود داره و انجمن بسیار خوبی هم به فارسی برای علاقه مندانش هست Ubuntu را انتخاب کردم.

شما میتونید آخرین توزیع را از سایت اوبونتو دانلود کنین و بدون اینکه نصبش کنین با Burn کردنش روی CD (معمولاً در فرمت iso هست) به صورت Live CD با گذاشتنش توی CD Rom و ریست کردن سیستمتون امتحانش کنین.

در سومین مرحله از مهاجرت به لینوکس به صورت کامل نصب اوبونتو را در کنار ویندوز آموزش خواهم داد.

نایب قهرمانی فوتسال و هجوم رسانه‌ها و مردم به تیم ملی

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

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

تیم ملی فوتسال

در کل این دوره تیم ملی تا قبل از بازی با ژاپن همه تیم ها را با نتایج سنگین برده بود. در بازی با ژاپن هم در بیشتر از ۸۰٪ وقت بازی ایران حکمفرما بود و ژاپن دفاع میکرد. ما دو تا گل خیلی خوب زدیم و یک گل روی ضربه ایستگاهی که خطا هم نبود خوردیم و گل بعدی هم روی اشتباه بازیکن خودمون و گل به خودی ! در‌ واقع ژاپن هیچ کار مثبتی توی زمین نمیکرد و توان مقابله با ایران را نداشت و میدونست اگه حمله کنه مثل بقیه گل میخوره. نکته دیگه هم اینکه دروازه بانشون یا روی شانس بود یا واقعاً بهترین دروازه بان این دوره از مسابقات بود. بهترین بازیکن ژاپن بود و خیلی موقعیت از ایران گرفت.

امروز که تیتر اخبار از جمله خبرگزاری فارس را میخوندم تعجب کردم. این تیتر فارس «دست به دست هم دادیم تا نابودی فوتسال!/ چهارمی جهان که هیچ، دیگر آقای آسیا هم نیستیم». واقعاً باعث تعجبم شد ! مثل اینکه خبرنگار اصلاً بازی را ندیده. ژاپن دیروز همونقدر خوش شانس بود که ما با برد جلوی کره و صعود به جام جهانی خوش شانس بودیم. همه قبول دارند کره بهتر از ما بازی کرد و ما توی اون بازی خیلی شانس آوردیم و همون تک موقعیت را گل کردیم و بس. توی ایران که خیلی بد تر بود و در هر دو بازی برد حق کره بود اما ما بردیم.

توی اینکه ما همچنان با ۱۰ قهرمانی سرور آسیا هستیم و قطعاً بهترین تیم آسیا کسی شک نداره اما دیروز ژاپن با خوش شانسی برد و قهرمان شد. جای انتقادات الکی و توی سر مربی زدن سعی کنیم روند رو به رشد بهتری داشته باشیم و بهتر از ژاپن برنامه‌ریزی و پشتیبانی کنیم.من از کسی دفاع نمیکنم و وقتی هم که آقای شمس را بر کنار کردند مخالف بودم اما دیگه در این حد هم که انتقاد میکنند جای انتقاد نیست. بعضی مواقع بجای گوشزد کردن مشکلات و انتقاد سازنده با تبر به جون ریشه میفتیم ! این بده و باید یاد بگیریم همه میتونند تخریب کنند و تخریبی انتقاد کنند اما همه نمیتونند پیشرفت کنندو انتقاد سازنده بکنند.

داغ شدن دوباره بحث کپی رایت و رعایت حق مؤلف در رسانه ها

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

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

امروز یکی از مجریان این برنامه‌ها که داشت در مورد رعایت حق مؤلف صحبت میکرد حرف خیلی خنده داری زد که نشون دهنده عدم آگاهی خودش و برنامه سازش از موضوعی هست که دارند در موردش برنامه سازی هم میکنند. ایشون میگفتن «اگر کپی رایت و حقوق مولفین را برای نرم‌افزار های خارجی (منظورش Windows و Office و Photoshop و Autocad و … هست) رعایت نمیکنین این کار را برای نرم‌افزار هایی که توسط متخصصین داخلی تولید شده انجام بدین و کرک و کپی نکنید».

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

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

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

سریال فوق‌العاده Boss با حال و هوای سیاسی و درام

نویسنده:
۱۷ اردیبهشت ۹۳

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

سریال Boss

خالق این سریال فرشاد صفی‌نیا هستش که نویسندگی اثری مثل Apocalypto را به همراهی Mel Gibson انجام داده و ایرانی بودن خالق اثر خودش میتونه مشوقی برای دیدن این سریال خیلی خوب باشه. بازیگر نقش اول سریال هم Kelsey Grammer هستش که همه وی را با سریال کمدی و محبوب Frasier می‌شناسند. وی با بازی در سریال Boss برنده جایزه Golden Globe برای بهترین بازیگر نقش اول مرد در یک سریال درام در سال ۲۰۱۲ شد.

فکر نکنم با این تفاسیر هنوز کسی نسبت به انتخاب من خرده بگیره و شاید پیش خودش بگه واقعاً شبکه STARZ چه دلیلی برای عدم ساخت سریالی که Golden Globe گرفته داشته. اما خوب چه میشه کرد بالاخره تصمیمات اشتباه هم بعضی مواقع گرفته میشه.

در مورد سریال باید بگم که این سریال در مورد شهردار شیکاگو هست که دچار یک بیماری و اختلال عصبی شدید غیر قابل بازگشت و پیش رونده میشه و سعی میکنه با غلبه و پنهان کردن بیماریش همچنان سکان قدرت را در دست بگیره. دیالوگ های این سریال و روایت داستانش حرف نداره و شما را به سرعت با خودش همراه میکنه. شخصیت پردازی در سریال فوق‌العاده هستش. بازیگری هنرپیشه نقش اول در جایی که Golden Globe را گرفته جای تعریف برای من نمیگذاره و فقط میتونم به بازی خیلی خوب Connie Nielson که در نقش همسر شهردار هست اشاره کنم.

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

خواندن فایل‌های پایگاه داده dbf از طریق PHP

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

این آموزش را پیرو درخواست یکی از همکاران و نیاز احتمالی دیگران روی وبلاگ میگذارم که نیاز داشت فایل‌های dbf را از طریق php بخونه و جالبه که با وجود بهره‌مندی از Linux VPS و اینکه میتونسته از طریق php-dbase کارش را انجام بده ولی به دو تا مشکل خورده. اول اینکه با سیستم عامل لینوکس آشنایی نداشته و نمیتونسته بسته های مورد نیاز را نصب کنه (از جمله دلایلی که نوشته «چرا یک برنامه نویس وب باید به مهاجرت به لینوکس فکر کنه» را نوشتم) و دوم اینکه مسئول هاست هم به هر دلیلی که داشته از نصب بسته ها با ذکر دلایل امنیتی پوچ ، طفره رفته.

قبل از کدنویسی هم برای دوستانی که آشنایی با dbf ندارند باید بگم که dbf یک نوع پایگاه داده بر پایه فایل هستش (مثل Microsoft Access) که برنامه نویسای FoxPro تحت داس و حالا Visual FoxPro ازش استفاده میکنند. توی ایران هم به خاطر نوشته شدن برنامه‌های شرکت های بیمه و دیگر نهاد‌ها با FoxPro ، خیلی‌ از برنامه نویسان که در حال ارتقاء نر م افزار های قدیمی هستند بهش بر میخورند.

یک نکته دیگه هم اینکه استفاده از php برای خوندن فایل‌های dbf فقط زمانی کاربرد داره که نیاز باشه فایل‌ها به سرور منتقل و سپس عملیاتی مثل پردازش و انتقال به MySQL و یا کلاً نمایش اطلاعاتش مطرح باشه و اگه قصد دارین فقط تبدیل کنین ، کافیه درایور های ODBC که مایکروسافت تولید کرده را نصب کنین و با یک نرم‌افزار که قابلیت Migeration داره و توی وب هم زیاده مثل MySQL Workbench اطلاعات را به جداول MySQL منتقل کنین.

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

require('./dbf_class.php');
    $dbf = new dbf_class('path_to_dbf_file');
    echo('<table border=1 cellspacing=0>');
    echo('<tr>');
    echo('<td>No.&nbsp;</td>');	
    for($j=0; $j<$dbf->dbf_num_field; $j++){
	    echo '<td>'.$dbf->dbf_names[$j]['name'].'</td>';
    }
    echo '</tr>';
    for($i=0; $i<$dbf->dbf_num_rec; $i++){
        if ($row = $dbf->getRow($i)) {
	        echo('<tr>');
        	echo('<td align="right">'.$i.'</td>');
	        for($j=0; $j<$dbf->dbf_num_field; $j++){
				echo '<td>'.htmlentities($row[$j]).'</td>';
    	    }
        	echo '</tr>';
        }
    }
    echo('</table>');

یک نکته که مجال توضیح توی این نوشته نیست و در آینده حتماً در موردش خواهم نوشت اینه که متون فارسی توی این جداول معمولاً یونیکد یا Windows-1256 نیست و از IranSystem استفاده شده. نحوه تبدیل از IranSystem به یونیکد را به زودی توی وبلاگ خواهم گذاشت.

چرا یک برنامه نویس وب باید به مهاجرت به لینوکس فکر کنه ؟

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

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

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

اولین سؤال این خواهد بود که من توی کارم از چه نرم‌افزار هایی استفاده میکنم ؟ آیا کپی رایت را در مورد اونها رعایت میکنم یا از نسخه‌های کرک شده استفاده میکنم؟ جواب سؤال متأسفانه عدم رعایت کپی رایت هستش ! از ویندوز گرفته تا فتوشاپ و Dream Weaver یا Zend Studio ! اما خریدن این نرم‌افزار ها خیلی پر هزینه هستش و من اگه بخوام هزینه این‌ها را بدم و هر سال هم Upgrade و این حرفا که دیگه …

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

مگر نه اینکه PHP از نهضت Open Source هست و من کاملاً به Net. ترجیحش دادم ؟ مگر نه اینکه Firefox و Apache و MySQL هم از همین نهضت هستند و من به Internet Explorer و IIS و MSSQL ترجیحشون دادم ؟ پس لینوکس هم به عنوان سیستم عامل Open Source باید حرف‌هایی برای گفتن داشته باشه. همین تفکرات و سؤالات ، هر برنامه نویسی وبی را علاقه‌مند به کسب تجربه و آشنایی با لینوکس میکنه.من در پست های آینده وب لاگ موضوع مهاجرت به لینوکس را ادامه میدهم و تجاربی که در راه این مهاجرت به دست آوردم را در اختیار خوانندگان قرار میدهم.

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