یه نویسنده

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

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

یه نویسنده

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

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

۲۰ مطلب با کلمه‌ی کلیدی «کدphp» ثبت شده است

آموزش ajax و php - جلسه اول

سلام بر تمامی دوستان خوبم که همه روزه به این وبلاگ سر میزنن و همیشه هم میگن چرا آپدیت نمیکنید. باورکنید انقد سرمان شلوغ شده که نگو . نپرس.

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

در این مجموعه جلسات قصد آموزش ajax رو به کمک jquery دارم. و همچنین در سمت سرور از php و mysql استفاده کردم. در این جلسات نه تنها ajax رو یاد خواهید گرفت بلکه کار با دیتابیس در php اونم بروش pdo رو هم فراخواهید گرفت. این مجموعه قراره ۶ جلسه باشه که جلسه اول به معرفی ajax و روش استفاده از اون در jquery میپردازه

 دانلود از dropbox

  دانلود و نمایش در آپارات

دستورات مورد نیاز mysql در خط فرمان

با این که در کار با mysql یک DBMS قوی بنام phpmyadmin در اختیار برنامه‌نویسان می‌باشد. و حتی بالاتر از آن ابزار workbrench نیز در دسترس برنامه‌نویسان می باشد.
اما در بعضی شرایط مثل کار با سرور دیگر شما به محیط ui یا وقت نصب کردن و کار با phpmyadmin را ندارید در هر صورت بهترین راه بهره‌گیری از دستورات قوی mysql می باشد. در این‌جا دستورات اصلی مورد نیاز برای ساخت دیتابیس جدید و atach کردن یک دیتابیس به mysql میپردازیم:
۱− لاگین
برای لاگین دستور زیر را وارد کرده و در صورت داشتن پسورد آنرا در مرحله بعد وارد کنید و در غیر داشتن پسورد فقط enter را بزنید.
mysql -u root -p

۲−ساخت دیتابیس
بعد از لاگین کردن
CREATE DATABASE mydatabase

۳−حذف دیتابیس
DROP DATABASE mydatabase

۴− atach کردن یک دیتابیس از فایل sql به درون دیتابیس
 mysql -u root -p mydatabase < myfile.sql

5- گرفتن backup از دیتابیس
mysqldump -p -u root mydatabase>myfile.sql

کتابخانه bootstrap

امروزه نوشتن از پایه کمی منسوخ شده و فریم ورک‌های رنگارنگ جای خودشون رو در میان توسعه دهنده‌گان باز کردن. البته برنامه‌نویسان بر پایه ویندوز صرفا تنها چیزی که از فریم‌ورک به ذهن دارن همون NET. هست ولی برنامه نویسان بر پایه اوپن سورس دیدگاه بیشتری نسبت به فریم ورک دارن. مثلا در برنامه‌نویسی وب بر پایه مایکروسافت شما ASP.NET را میشناسید ولی در php شما با codeignite،cakephp،symfony و سلطان فریم‌ورک‌های این زمینه همون yii را خواهید داشت.

حتی فریم‌ورک‌ها به سمت سرور محدود نشدن و برای سمت‌کاربر مخصوصا css و javascript‌هم بعضی فریم‌ورک‌ها هستن. برای جاوااسکریپت jquery و برای css میشه bootstrap رو نام برد. هر کدوم از این فریم‌ورک‌ها سمت کاربر برای خودشون رقبایی دارن ولی فعلا اینها در بالای جدول قرار دارن.

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

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

۱− bootstrap rtl V2

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

۲− bootstrap rtl v3

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

۴− طراحی آنلاین

سایت layoutit.com یک محیط طراحی در خدت مت شما قرار میده که با drag&drop براحتی میتونید اجزای تمپلیت دلخواه رو بسازید.

در پست‌های بعدی چند نمونه تمپلیت مخصوصا برای بخش ادمین رو برای دانلود قرار میدم.

۵-ابزارهای جانبی برای بوت استارپ


توابع مفید mysql

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

حالا نمیخوام فلسفه پسورد و امنیت اطلاعات رو پیش بکشم بحثم روی کم کرد فشار سرور به کمک توابع داخلی و توکار هست. واقعا تعجب میکنم با این که زبانهای برنامه‌نویسی به مرور زمان توابع و امکانات جدید بهشون اضافه میشه و حتی در دیتابیس‌ها هم شاهد این موضوع هستیم باز هم افزادی هستن که سرور رو مشغول کارهای پیش‌پا افتاد و الگوریتم‌های سنگین میکنن. مثلا یه برنامه‌نویس میاد یک کلاس برای هش کردن پسوردها مینویسه که توش از تمام توابع(از sha و md5 گرفته تا rand و چیرهای دیگه) استفاده کرده تا کار هش کردن پسورد رو انجام بده. اولا باید گفت درصد رمز نگاری و استفاده از الگوریتم‌های پیشرفته کاملا وابسته با پروژه و شرایط کارفرما داره. مثلا رمز نگاری یه فروشگاه الکترونیکی که هر کاربر قراره مبلغی از حسابش کم بشه و توی بودجه اکانتش درون سایت قرار بگیره با یه سایت شخصی ساده کاملا فرق داره. در فروشگاه اگر اکانتش لو بره امکان داره پولی رو از حسابش برداشت شده توسط شخص دیگری که اکانت رو هک کرده به حساب دیگری واریز بشه یا خرید انجام بگیره در صورتی که خود صاحب اصلی اکانت اصلا اطلاع نداشته. 

در php تابع crypt رو خوب یادبگیرید که امکانات زیادی مثل salt رو هم داره. ولی در دیتابیس mysql تابع ENCRYPT کار مشابه crypt رو انجام میده.

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


استفاده از این تابع بصورت زیر هست:

INSERT INTO

`tbl_user`(`username`,`email`,`password`)

VALUES

('seifzadeh','mehrdad@gmail.com',ENCRYPT('1234'));

راه اندازی command tools فریم ورک yii بر روی اوبونتو

تجربه من در codeigniter‌و راه اندازی دو پروژه توسط اون بسیار لذت بخش بود از قابلیت‌های این فریم ورک:

۱− همه چیز دست برنامه نویس و تغییرات در اون بسیار راحت

۲− یادگیری فوق العاده سریع

۳− دوری از تنظیمات زیاد برای استفاده از تمپلیت یا مدل

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

ولی نبود command line در اون خیلی عذاب آوره در صورتی که بیشتر فریم ورک‌های ابزاری برای crud,controller,model و خیلی از کارهای دیگه که ضرف چند ثانیه میشه بیشتر زحمات عمومی یک پروژه رو انجام داد.

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

و اما بریم سر اصل قضیه برای اضافه کردن command line در سیستم عامل لینوکس اوبونتو ابتدا به مسیر پوشه ای که yii رو در اون extra کردید برید و البته باید در پوشه framework باشید و دستور زیر رو وارد کنید تا مسیر جاری برای نشون داده بشه

pwd

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

/home/mehrdad/host/yii/framework

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

export PATH=$PATH:/path/to/framework

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

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

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

توابع مفید 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 بدیت میاد و در دیتابیس ذخیره میشه

بهترین کتاب برای یادگیری php

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

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

در این بین کتابهای الکترونیک و رایگان هم هستن. مثلا نویسنده ای مثل احمد بادپی که واقعا کتابهای خوبی نوشته. حالا در اینجا یه کتاب خوب و کامل در مورد برنامه نویسی php معرفی میکنم که نوشته آقای شهرکی هست. ایشون برنامه نویس وب هستن و تمام نکات و ترفندها رو همراه با مثال آموزش دادن. کتاب ۱۲ فصل در ۱۴۷ صفحه هست. خلاصه بیشتر مباحث رو آموزش داده. از فصل ۸ کتاب شروع میکنه به نوشتن یه cms و در فصل ۹ اون رو تکمیل میکنه. حتی به مبحث شی گرایی هم به توجه شده. 

این کتاب به صورت مستقیم از سایت آموزش برنامه نویسی ncis.ir قابل دانلود هست که در لینک زیر هم میتونید مستقیما دانلودش کنید.

دریافت
حجم: 6.2 مگابایت

همچنین کتاب آقای سید محمدرضا حسینیان راوندی هم بسیاری از مطالب پیشرفته مثل curl و pdo رو در برمیگره.

منبع

دریافت
حجم: 2.31 مگابایت

هاست رایگان

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

ساخت فرم به کمک php

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