یه نویسنده

مقاله، کتاب، برنامه و ...

مقاله، کتاب، برنامه و ...

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌php و سیستم‌عامل لینوکس تشکیل می‌دهند.

طبقه بندی موضوعی

۵۰ مطلب با موضوع «کاربردی» ثبت شده است

استفاده از تابع jdf در codeigniter

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

codeigniter بهترین فریم ورک از نظر یادگیری و تسلط سریع هست و حتی در پروژه های کوچک و متوسط بسیار کاربردی. در این پست قصد دارم تا تابع jdf رو در codeigniter راه اندازی کنم.

5ساعت خطایابی صرفا بخاطر استفاده از کتابخانه از قبل کانفیگ شده

این چند روز روی یه سایت خبری دارم کار میکنم(البته از رنگ بنفش). انواع اقسام گالری‌ها روی این سایت پیاده سازی کردم. از تایکر خبری گرفته تا اسلایدر متن و عکس. بیشتر وقت من روی این سایت کار کردن با کتابخونه‌ها و پلاگین‌های jquery برای راه اندازی اسلایدر.

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

خلاصه کار ما کشید به پلاگین گالری galleria که والا انصافا خیلی هم امکانات متنوعی داره. البته برای تهیه تمپلیت‌های متنوع اون باید مبلغ پرداخت بشه. ولی توی سایتها بگردید اگر همون تم رو استفاده کرده باشه میتونید کل کتابخونه به همراه تم رو دانلود کنید. منم سایتی پیدا کردم که تمپلیت folio رو نصب و راه‌اندازی کرده بود. گفتم دیگه دنبال خوندن مستندات برای کانفیگ و نصبش نرم و مستقیما از کانفیگ‌های همین سایت استفاده کنم.

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


اول فکر میکردم شاید پلاگین‌ها دارن روی هم تاثیر میزارن با فایرباگ تست کردم دیدم مشکل خاصی نیست. به فکر غیرفعال کردم اسکرول ماوس بر روی همون div افتادم دیدم نشد. و خلاصه همه کار کردم. بعد از حدود ۴ ساعت بالا و پایین زدن و مقایسه فایل css اصلی گالریا با کانفیگ شده اون فهمیدم از فایل کانفیگ css همون سایت که div نمایش گالریا رو بخاطر همخونی با تمپلیت سایتش حدود 10000px- به طرف چپ برده بود و این بر روی سایت من باعث باز شدن صفحه به عرض 10000 شده که با اولین اسکرول به انتهای عرض طرف چپ میرفت.

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

توابع مفید mysql در برنامه نویسی- تابع UNIX_TIMESTAMP

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

در این جا قصد دارم تا چند تا از توابع مفید mysql که دونستن اونها به سرعت بیشتر برنامه کمک میکنه.


بدست آوردن زمان unix:

در برنامه نویسی php با تابع time زیاد سر و کار خواهید داشت مثلا برای ثبت مقاله جدید در سایت نیاز به تاریخ درج مقاله هم هست که از قطعه کد زیر برای بدیت آوردن زمان فعلی و ذخیره اون در دیتابیس استفاده میشه


<?php
$time = time();
$sql = "INSERT INTO `article`(`a_title`,`a_content`,`a_time`)
VALUES
('$title','$content','$time')
?>

 در اینجا اصل کار برای ذخیره زمان فعلی همون تابع time هست که بعد از ذخیره به کمک تابع جامع jdf به راحتی به فرمت دلخواه هجری شمسی نشون داده میشه. البته قابلیتهای زمان unix و همچنین تابع time برای زمان یونیکش بیشتر از اینها هست.

ولی با چرخیدن در مستندات mysql پی به تابع UNIX_TIMESTAMP بردم که کار با تاریخ یونیکس رو راحت کرده و نیازی به فراخوانی تابع time در هر بار ثبت مقاله جدید نیست. نمونه‌ای از اجرای تابع UNIX_TIMESTAMP رو در زیر مشاهده می‌کنید.

حالا تکه کد بالا بصورت زیر در میاد

<?php
$sql = "INSERT INTO `article`(`a_title`,`a_content`,`a_time`)
VALUES
('$title','$content','UNIX_TIMESTAMP(now())')
?>

در برنامه‌های بزرگ که نیاز به فراخوانی زیاد تاریخ درج داره مثل ثبت ساعات ورود و خروج کاربران استفاده کمتر از تابع php و استفاده مستقیم از توابع mysql میتونه در روند اجرای برنامه و از درگیر شدن با الگوریتم‌های مختلف کم کنه. در این روش در همان لحظه‌ای که کوئیری زده میشه ساعت هم توسط mysql بدیت میاد و در دیتابیس ذخیره میشه

اضافه و کم کردن عناصر صفحه به کمک jquery

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

راهکارهای زیادی برای این کار وجود داره که من اضافه کردن عناصر به کمک id و حذف همون عنصر با id از قبل داده شده.

در ابتدا فرم آپلود رو بصورت آپبود چند تایی بصورت زیر آماده میکنیم.

اضافه و حذف کردن عناصر قراره در داخل تگ‌ div که با add_element مشخص شده صورت بگیره.

دو تا دکمه برای اضافه کردن و کم کردن هم در زیر فرم قرار گرفته شده.

حالا میرسیم به کد نویسی jquery:

در ابتدا دو تا متغییر برای نگهداری و کم و زیاد کردن شماره به المنت تعریف مکنیم.

var current=1;
var prev;

با کلیک بر روی دکمه add باید عنصر جدید به فرم ما اضافه بشه. برای این که فرم بهم نریزه من اون رو در داخل یک div قرار دادم تا با هر با اضافه کردن یک div که همراه با یک جعبه فایل هست بر روی صفحه اضافه بشه

 

$(document).ready(function(){
$('#add').click(function(){
   $('#add_element').append('<div id="adu'+current+'"><input type="file"  name="files[]"/></div>');
   prev = current;
   current += 1;
   console.log(prev+'--'+current);
});

اگر firebox رو روشن کنید با هر با اضافه شدن عنصر در زیر صفحه مقدار current جدید رو نشون میده. در ابتدا مقدار current رو در prev ذخیره میکنه تا برای حذف عنصر آخرین عنصر اضافه شده رو داشته باشیم. برای اضافه کردن عنصرهای جدید با مقدار id جدید هم یکی به تعداد current اضافه میشه.

و برای حذف عناصر اضافه شده:

 

$('#del').click(function(){
	$('#adu'+prev).remove();
	prev -= 1;
});

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

 


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

دریافت
حجم: 73.3 کیلوبایت

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

بعد از نصب وب سرور و php بر روی لینوکس اوبونتو در حالت عادی نمایش خطاها در حالت خاموش است و برای روشن کردن آن ابتدا دستور زیر را در حالت super user برای باز کردن فایل php.ini و ویرایش آن وارد کنید:

sudo gedit /etc/php5/apache2/php.ini


در فایل باز شده بدنبال display_errors بگردید که باید در خط ۵۳۷ باشد. مقدار پیش‌فرض آن off است که آنرا برابر On کنید.


این zend زننده ...

الان نزدیک دو هفته هست که فقط میخوام zend رو نصب کنم و یه نمونه برنامه با اون بنویسم ولی واقعا کلافه کننده و زننده هست. مثلا zend در ورژن ۱ بصورت فایل دانلود میشد و با استفاده از command میتونستی کنترل‌ها رو بسازی و خودش همه چیو کنترل میکنه

ولی در ورژن ۲ ابتدا باید composer  نصب کنی و بعد بصورت depends تمام فایل‌های مورد نیاز پروژه رو بصورت خودکار تیکه تیکه از وب دانلود میکنه. من هر دو روش رو جلو رفتم. روش اول کلا ارور میده و فایل htaccess. بخوبی بر روی وب سرور من کانفیگ نمیشه. جالب اینجاست ۵تا فیلم آموزشی از وب گرفتم و ۵تاشون روش مخلفی رو برای نصب گفتن. تازه ۴ تا از این ویدیوها دارن روی mac نصب میکنن و فقط یکی از اون‌ها بر روی ویندوز نصب میکنه.

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

آخه منه برنامه‌نویس چقدر وقت دارم بشینم دو ساعت نصبش کنم و بعدش بشینم کار با اون رو یاد بگیرم. تازه مدتی بشینم ماژول‌ها و کار با توابع اون رو یاد بگیرم. به نظرم بیخیال شدن از این zend زننده بهتر از ادامه دادنش باشه.

در واقع بی حق نیستن بیشتر برنامه‌نویس‌ها میرن سراغ codeigniter یا کیک‌پی‌اچ‌پی.

خلاصه دو هفته از وقت ما هدر رفت اونم به نتیجه.

آموزش تعمیرات بوت در ویندوز و لینوکس

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

مشکل از جایی شروع شد که با فرمت ویندوز۷ قدیمی کلا بوت لپ تاپ بهم ریخت. نه روش نصب گراب از طریق دیسک راه انداز رو جواب میداد و نه boot repair دیسک نصب ویندوز ۷ برای نصب بوت ویندوز جواب داد. و این شد شروع یه ماجراجویی جدید و برطرف کردن این مشکل.

مشکل در نشناختن پارتیشن بوت توسط خودم بود. چون اوبونتو با دستور fdisk -l جلوی پارتیشن بوت   *  میزد که اینبار هیچی نشون نمیداد و منم الکی یکی از درایوهارو انتخاب میکردم و خلاصه دردسر. از اون طرف ویندوز۷ نمیتونست با منوی boot repair خودش رو تعمیر کنه. ولی راه حلش رو یافتم که شامل مراحل زیر بود:

ابتدا باید دی وی دی ویندوز۷ رو بوت کرد و به محیط cmd برید و دستورات زیر رو وارد کنید:

bootrec /fixmbr

bootrec /fixboot

البته ابتدا دستور اول و بعد دوم. بعدش لینوکس اوبونتو رو زنده راه‌اندازی کنید و دستورات زیر رو برای نصب نرم‌افزار boot-repair رو وراد کنید:

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install boot-repair

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

من از فایل deb نرم‌افزار boot-repair پشتیبان گرفتم و میتونید با دانلود اون و زدن دستورات زیر اون رو نصب کنید.

sudo dpkg -i *.deb

منبع

نصب aptana stdio 3 روی اوبونتو

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

برای نصب روی اوبونتو ابتدا باید jvm بر روی اوبونتوی شما نصب باشه:

sudo apt-get install openjdk-7-jre libwebkitgtk-1.0-0 git-core

بعد از اون آخرین نسخه aptana رو از سایت رسمی اون دانلود کنید البته بسته لینوکس رو دریافت کنید. حجمی بین ۱۳۰مگابایت داره.

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

ابتدا باید فرمت آیکون اون رو xpm به png تغییر بدید. میتونید از سایت convertmyimage استفاده کنید یا از فایل تبدیل شده‌ای که بنده تهیه کردم استفاده کنید.

روش کار اینه که ابتدا فایلهایی که از حالت فشده خارج کردید به پوشه opt ببرید. و بعد فایل aptanastdio3.desktop رو درست کنید. پس یه پوشه در home درست کنید و اسم اون رو aptana بزارید و بعد فایل دانلود شده aptana رو اونجا کپی کنید و از حالت فشرده خارج کنید. بعد فایل icon.png رو که دانلود یا تبدیل کردید رو در اون کپی کنید.

در ترمینال دستورات زیر رور وارد کنید تا فایل‌ها به opt انتقال پیدا کنن


فایل‌ها به opt انتقال پیدا کرد ولی هنوز در لیست نرم‌افزارها نیست. باید فایلی به اسم aptanastudio.desktop در پوشه applications درست کنید. برای این کار از ابزار محبوب nano استفاده میکنیم. ابتدا نانو رو نصب کنید:

sudo apt-get install nano

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

cd /usr/share/applications

حالا با نانو یک فایل به اسم aptanasudio3.desktop رو در همین مسیر باز کنید:

و حالا اسکریپت زیر رو اون کپی کنید:

[Desktop Entry]

Version=1.0

Encoding=UTF-8

Name=Aptana Studio 3

GenericName=Integrated Development Environment

Comment=Aptana Strudio 3 Integrated Development Environment

Exec=/opt/Aptana_Studio_3/AptanaStudio3 %F

TryExec=/opt/Aptana_Studio_3/AptanaStudio3

Icon=/opt/Aptana_Studio_3/icon.png

StartupNotify=true

Terminal=false

Type=Application

MimeType=text/xml;application/xhtml+xml;application/x-javascript;application/x-php;application/x-java;text/x-javascript;text/html;text/plain

Categories=GNOME;Development;IDE;

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


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

دانلود اسلاید بسیار مفید درباره شی‌گرایی در php

دوستانی که قصد دارن مبحث شی‌گرایی رو در php یاد بگیرن میتونن از اسلاید انگلیسی و بسیار مفید زیر استفاده کنن.

دریافت
عنوان: شی‌گرایی
حجم: 567 کیلوبایت
توضیحات: پی اچ پی

در نا امیدی بسی امید است

همیشه مرورگر اینترنت اکسپلورر مایکروسافت IE امید طراحان وب رو به نا امیدی تبدیل می‌کرد. هیچ چیز زجر آورتر از این نیست که این مرورگر حتی نسخه‌های ۶ و ۷ و ۸ کاملا با هم فرق دارن و هر صفحه‌ای که طراحی میشه مدام باید در تمام نسخه‌ها تست بشه. مثلا امیر عباس عبدلی بر روی سیستمش بصورت مجازی دو تا ویندوز داره و مدام نسخه‌ها رو در اونها تست میکنه.

ولی انگار امیدی هست و کاربران کم کم دارن از IE جدا میشن و میان سمت مرورگرهای دیگه امار مقایسه سال ۲۰۱۲ با ۲۰۱۳ رو از سایت sitepoint.com گرفته شده: