یه نویسنده

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

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

یه نویسنده

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

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

۱۲ مطلب با کلمه‌ی کلیدی «زبانهای برنامه نویسی» ثبت شده است

راهنمای انتخاب رشته-رشته‌های مرتبط با کامپیوتر

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

در ابتدا لازم میدونم سابقه تحصیلی خودم رو از ابتدا تا این‌جا رو توضیح بدم:

۱- دیپلم کامپیوتر - فنی و حرفه‌ای در سال ۸۴

۲- کاردانی فناوری اطلاعات و ارتباطات(ICT) - در سال ۹۰

۳- کارشناسی مهندسی نرم افزار - در سال ۹۲

پس همونطور که میبینید از هموم ابتدا علاقه شدید به این رشته داشتم، و خوب به اون موفقیتهایی که دوست داشتم رسیدم، و الان هم هنوز مثل روزهایی اولی که با کامپیوتر روزی ۱۸ تا ۲۰ ساعت کار میکردم، کار میکنم.

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

با تمام حاشیه‌هایی که این رشته داره و تمام ایرادهایی که دیگران بهش میگیرن ولی اگر کمی علاقه داشته باشین و تلاش کنید، چنان غرق این رشته میشین که رهایی از اون غیر ممکن هست. مثلا یه روز با یکی از همکاران که ۱۵ سال از من بیشتر تجربه داشت، در مورد این که اگر روزی دکتر بگه شما دیگه نباید با کامپیوتر کار کنید چه حالی دارید؟ اولین جوابی که گفتن: میمیرم.

برای ورود به این رشته و موفقیت در اون به موارد زیر توجه کنید:


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

هنوزم خوب یادمه. وقتی بچه بودیم میرفتیم دکتر یه آمپی سیلین، شربت اکسپکتورانت کدئین، قرص استامینوفن و اگر هم خیلی شدید بود آمپول آمپی‌سیلین. خوب من تقریبا ۶ ماه پیش یه سرماخردگی شدید گرفتم رفتم دکتر دقیقا همون داروهای ۲۰ سال پیش رو داد. پس تو علم پزشکی عمومی چه تغییر کرده؟ و اون آقای دکتر با ۵۰ سال سن و تجربیات ۲۰ سال پیش هنوزم میتونه تو این جامعه کار کنه و تازه بهش میگن دکتر حرفه‌ای و با تجربه. ولی نه عزیزان رشته کامپیوتر و تمام شاخه‌هاش این طور نیست. بلکه به سرعت نور تغییر میکنه. امروز چیزی رو یادگرفتی قطعا تا ۱ یا دوسال آینده تغییراتی درش حاصل شده و شما برای یادگیری موارد جدید باید مطالعه داشته باشین.

اگر روحیه یادگیری همیشگی رو دارین و علاقه دارین مدام چیزهای جدید یاد بگیرین این رشته بسیار کاربردی و موفق هست. ولی شاید الان بدنتون داغ باشه و بگین آره دوست دارم یاد بگیرم ولی داریم افرادی با ۳۵ تا ۴۵ سال سن که اصلا حوصله خوندن یک صفحه مطلب انگلیسی رو ندارن و میخوان روی همون تجربیات گذشته پای‌بند باشند. خب این دوستان بخت و اقبال اون‌ها روز به روز کم میشه و چه بسا روزی یک جوان ۲۰ ساله بخاطر تجربیات جدید و بقول ما update ، مسئول بالادست این شخص بشه. در کل هر روز باید بین ۴۰ تا ۹۰ دقیقه برای یادگیری فناوری‌های جدید صرف کنید. مثلا تا همین ۵ سال پیش هر کسی که میخواست طراحی ui سایت انجام بده، براحتی با table ساختار سایت رو میچید و اصلا حرفی از responsive بودن و اجر بر روی تبلت و موبایل نبود. ولی الان باید این فناوری‌ها رو برای طراحی سایت بلد باشید و اصلا اون تجربیات قدیمی دیگه کاربردی نداره. پس اون شخص طراح باید بشینه و با داشتن تمام اون تجربیات، html5و css3 و حتی فریم‌ورک‌های ui مثل bootstrap رو یاد بگیره. الان اون فناوری قبلی که بلد بود شاید در فرم لاگین بتونه از ش استفاده کنه که اونم بازم با فناوری‌های جدید زیباتر در میاد.


۲. درس خوندن در این رشته و بعدش هم کار

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


۳. چیزی به اسم نظام مهندسی و خلاصه مسئول درست‌حسابی نداره 

اگر مورد اول رو خوب مطالعه کرده باشین به این پی بردین که چرا این رشته با رشته‌های دیگه تفاوت داره. حالا با این اوصاف چرا در رشته‌های مثل عمران( که اون هم مثل دکترها علم استاتیک دارن) نظام مهندسی دارن ولی در رشته‌ای مثل نرم‌افزار ما چنین چیزی نداریم. در بازار کار بسیار زیادن شرکتهایی که دارن کارهای در سطح ملی انجام میدن و با کمک بند پ چه پروژه‌هایی رو که نمیگیرن ولی از سطح سوادشون بپرسین از من میگم ۱۰۰- و حتی اوضاع وخیم‌تر از این هم هست. بنده تجربه جلسه با چند تا از این عزیزان رو داشتم. در جلسه‌ای که طرف مسئول شرکت بود و خلاصه خودش رو ۲۰ سال تجربه در این حرفه میدونست، فرق IDE رو با Compiler نمیدونست و توی جلسه برگشت به من گفت: ما توی #C  میریم و روی صفحه دکمه میزاریم، حالا شما توی GCC چطوری دکمه میزارین. برگشتم بهش گفتم توی زبان #C چیزی به ایم گذاشته دکمه تعریف نشد بلکه این امکانات IDE هست که شما امکان دکمه گذاشتن دارید و معمولا زبان #C رو هم با IDE معروف اون یعنی Visual Studio‌میشناسن. خلاصه با وجود نطام صنفی رایانه‌ای چیزی به اسم درو پیکر برای این رشته نیست. هر چقدر شما متخصص و تجربه داشته باشید، معمولا پروژه‌های top به بند پ میرسه(که شامل حال ما نمیشه). هر چند بارها مشاهده شده که همون شرکتهای بی‌تجربه کار رو خراب میکنن  بعدش ناچار مسئولان دست به دامن شرکت‌های و افراد با تجربه میشن برای جمع کردن خرابکاری اون دوستان. پس دارید وارد این رشته میشید از الان مسیر خودتون رو باید خوب بشناسید و بدونید که خودتون هستید و خودتون نه حامی هست و نه مسئولی.


۴. این رشته فقط برنامه‌نویسی نیست

نمیدونم چرا همه رشته کامپیوتر رو با برنامه‌نویسی میشناسن. در صورتی که یک باور بسیار غلط هست. این رشته تنوع بسیار بالایی داره و در چند سال اخیر هم شاخه‌های مختلفی از این رشته بوجود اومده مثل:

  • امنیت. چه در شبکه و چه در امنیت نرم‌افزار
  • شبکه. با توجه بر تمام مشتقات این شاخه، شاخه‌های جدید مثل voip که تلفیقی از شبکه و مخابرات هست
  • سخت‌افزار. باز هم با تمام زیر شاخه‌های جذاب، شاخه‌هایی مثل طراحی embedded
  • مستندات نرم‌افزاری. مثل تهیه مستندات برای ماژول نوشته شده یا نرم‌افزار انجام شده. یا حتی تهیه مستندات تجربیات برای یک پروژه تا در اختیار کارمندان دیگر گذاشته بشه
  • مدیر پروژه. این رشته اصلا مدیر پروژه مختص خودش رو میخواد
  • فناوری‌اطلاعات. کسی که به انواع فناوری‌های روز آشنا هست و میتونه شرکتها رو در تهیه محصول جدید یا انتخاب فناوری کمک کنه.
  • مسئول فنی و نگهداری و پشتیبانی. اگر بخوبی مواردی مثل شبکه و سخت‌افزار و پایگاه داده و خلاصه از هر فناوری یه سر رشته داشته باشید براحتی میتونید در قسمتهای فنی و مهندسی یا پشتیبانی شرکتها مشغول بکار بشید.
و حتی چندین زیر شاخه دیگه که من به ذهنم نرسید. ولی صرفا کدنویسی نیست. هر چن همین برنامه‌نویسی خودش چندین زیر شاخه داره و شما هم تا حدودی با اون‌های آشنا هستید:
  • برنامه‌نویسی دستکتاپ. مثل زبانهای #c و java
  • برنامه‌نویسی سیستمی مثل ++c/c و حتی اسمبلی
  • برنامه‌نویسی سایت  سمت سرور مثل php‌و asp.net
  • طراحی gui برای سایت مثل html,css,js
  • طراحی سه بعدی و گرافیک کامپیوتری
  • طراحی بازی و انیمیشن
پس این رشته شاخه‌های متنوعی داره و شما باید بر حسب علایق و توانایی یک کدوم رو انتخاب کنید.

۵. منابع رایگان و بی‌نهایت فروم و سایت برای حل مشکل
شما چه در مرحله یادگیری و چه در مرحله ورود به بازار کار، از منابع قابل دسترس برای این رشته دوق زده خواهید شد. البته در زبان فارسی بسیار کم و در زبان انگلیسی بسیار فراوان. برای یادگیری هز موضوعی صرفا در سایت لیندا یه جستجو بزنید چندین عنوان فیلم آموزشی تهیه میکنید یا در YouTube  چندین هزار فیلم آموزشی رایگان یپیدا میشود. سایت‌های رفع مشکل هم از stack overflow گرفته تا سایت برنامه‌نویس این خودمون.

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

۷. درسهایی مثل ساختمان داده، الگوریتم ،آمار و احتمالات و شبکه رو خوب بخونید
این دیگه بعد از مرحله انتخاب رشته هست. شما باید برای داشتن ذهن تحلیل‌گر به طراحی الگوریتم مسلط باشید و بتونید هر مسئله‌ای رو با دیدگاه تحلیل‌گر خودتون حل کنید. ساختمان داده فکر کنم توی تمام رشته‌های باشه(قبلا که این طوری بود) چون به شما کمک میکنه ساختار داده‌ها و کار با اون‌ها رو بهتر یاد بگیرید. معمولا این درس خیلی شبیه طراحی الگوریتم هست ولی با دیدگاه کار با داده و باد کدهای بیشتر سرو کار داره. آمار و احتمالات درس بسیار شیرین و کاربردی هست. به نظرم تمام انتگرال و دیفرانسیل رو از رشته نرم‌افزار بزارن کنار عوضش در حل سال تحصیلی چند واحد آمار و احتمالات اضافه کنن. ابن درس هم ذهن تحلیل‌گر شما رو تقویت میکنه و هم در حل بسیاری مشکلات سخت‌افزاری و نرم‌افزاری کاربرد داره. شاخه هوش مصنوعی،  داده‌کاوی و وب معنایی کلا روی آمار و احتمالات میچرخه. من همیشه با این که از ریاضی متنفر بودم(اغلب بین ۱۰ تا ۱۴ نمرم بود) ولی همیشه عاشق آمار و احتمالات بودم(نمرم بین ۱۷ تا ۲۰). پس این درسها رو جدید بگیرید و خوب بخونید. در آخر شبکه رو میشه مادر فناوری روز دونست. چون شما چه توی برنامه‌نویس، سخت‌افزار و فناوری‌اطلاعات مشغول به فعالیت بشید باید یک متخصص شبکه حرفه‌ای بشید. متاسفانه وقتی حرف از شبکه میاد همه فکر میکنم منظور سیم و کابل هست، نخیر دوستان منظورم فناوری‌های شبکه مثل شناخت پروتکل‌ها و نرم‌افزارهای شبکه هست. در شبکه ۱۰ درصد یا کمتر در حوزه passive هست و ۹۰ درصد اون در حوزه active شبکه.  در اولین توصیه کتاب دکتر احسان ملکیان بنام اصول شبکه و همچنین کتاب تازه ترجمه شده ایشون بنام شبکه های کامپیوتری از دیدگاه بالا به پایین(نوشته کرس و راس) رو تهیه و چندین و چندبار بخونید تا خوب یاد بگیرید. 

دیگر موردهای بیشتری ندارم  شاید چند روز یگه چیزهای بیشتری به ذهنم برسه که به این متن اضافه کنم. 
موفق باشید و آرزوی سربلندی برای تمام شما دوستان و عزیزان، رو از خداوند منان دارم.

همه کارها بصورت همزمان ارزش دنبال کردن ندارند

بعضی وقتها این وسواس بین تمام ما هست. مثلا برنامه‌نویسی php رو دنبال میکینم ولی برای این که از غافله عقب نباشیم و یا مثلا توی آگهی روزنامه‌ها استخدام برنامه نویس #c رو هم دیدم، میایم و در کنار تمام مشغله‌های کاری برنامه‌نویسی php، زبان دیگری رو هم درگیرش میشیم. این یکی از بدترین وسواسها هست که شخص بصورت همزمان از این شاخه به اون شاخه میپره و آخرش هیچ کدام کارها رو بصورت حرفه‌ای یاد نمیگیرن. این نوشته زیر از رولف دوبلی بسیار زیبا هست:

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

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

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

بسیاری از دروازه‌ها ارزش وارد شدن را ندارند حتی وقتی که دستگیره‌های درشان به‌راحتی بچرخد و باز شود. 

مجموعه آموزشی codeigniter

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

الگوریتم aes بین زبانهای مختلف

چند وقت پیش در یکی از کارها اومدیم از الگوریتم aes برای رد و بدل متن بین زبان #c و c استفاده کنیم. نا گفته نماند که پدرمان درآمد چون مایکروسافت طبق معمول برای راحت تر کردن کار برنامه نویس(به قول خودش) کلا این الگوریتم رو دگرگون کرده بود و اصلا دو تا خروجی ها یکسان نبودن بعد از کلی زیر رو کردن وب یه بنده خدایی توی stackoverflow اومده یه قطعه کد گذاشته که کار ما راه افتاد. البته این تجربه شد تا از این به بعد قبل از کد زدن ببینم شاید اصلا در استفاده از این روش مشکلی باشه و اتفاقا هم بود چون این برنامه نویس بنده خدا کلا داکیومنت aes مایکروسافت رو درسته قورت داده بود تا تونسته بود نوع padding و cbc و چیزای دیگه رو پیدا کنه و تطبیقش بده با c.

این گذشت و تا چند روز پیش مجبور بودم یه رشته متن رو بین زبان پایتون و php  رد و بدل کنم. دوباره توی stack گشتم و دیدم یه نفر تگه برنامه تمیزی نوشته بود. هر چند از padding جالبی استفاده کرده بود یدونه کاراکتر } نوع padding بود.

البته این بار مشکل به اندازه #c نبود چرا که نا سلامتی با دو تا زبان برنامه نویسی پدر و مادر دارد طرف بودیم. این کد رفته بود از ماژول crypto.cipher استفاده کرده بود. منم با نصب و استفادش مشکلی نداشتم

پروژه پیش رفت و طبق روال موقع کامپایل برنامه رسید که در تمام ویندوزهای 7 براحتی اجرا میشد ولی در xp ارور زیر رو داشت

actually the encrypted IV which was prefixed to the ciphertex

البته برای برطرف کردن این خطا دیگه تمام راه ها رو برای برطرف کردن خطا رفتم ولی اصلا جواب ندارد. تا به جایی رسیدم که رفتم توی باگ ریپورت پروژه یدونه issue گذاشتم(اینجا). البته الان که دارم مینویسم این پست رو کسی بهش جواب نداده.

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

کارشون واقعا جای تشکر داره اومده بود از پایه بر حسب ریاضیات و base64 الگوریتم aes رو راه انداخته بود. و جالب تر این که برای سه تا زبان php,python,javascript این کد رو نوشته بود و شما کافی بود libraryهای نوشته شده رو در برنامه فراخوانی کنید و ازش استفاده کنید. همچنین در بین زبانی هم درست کار میکرد و اگر مثلا با javascript کد میکردی در php و python برای دیکد کردنش همون خروجی مورد انتظار رو داشتی. 

من کل page و تمام سورس کدهارو اینجا میزارم تا دوستان هم استفاده کنن.

python


import aes
text = "Hello, world!"
password = "itsmysecret"
blocksize = 256   # can be 128, 192 or 256
crypted = aes.encrypt( text, password, blocksize )
# do something
decrypted = aes.decrypt( crypted, password, blocksize )
php

<?php
 
require_once('aes.class.php');
 
$text = 'Hello, world!';
$password = 'itsmysecret';
$blocksize = 256;  // can be 128, 192 or 256
 
$crypted = AES::encrypt( $text, $password, $blocksize );
// do something ...
$decrypted =  AES::decrypt( $crypted, $password, $blocksize );
?>( crypted, password, blocksize )
javascript
<?php
var text = 'Hello, world!';
var password = 'itsmysecret';
var blocksize = 256;   // can be 128, 192 or 256
 
var crypted = AES.encrypt( text, password, blocksize );
// do something...
var decrypted = AES.decrypt( crypted, password, blocksize );
?>
دانلود تمام محتویات و کدهای این پست
دریافت
عنوان: الگوریتم aes
حجم: 1020 کیلوبایت

آموزش کامل ارسال ایمیل توسط php در localhost

یکی از دردسرهای تست برنامه های php‌در هاست محلی امکان ارسال ایمیل هست. برای حل این مشکل باید تبدیل به میل سرور بشید یا از smtp کمک بگیرید. در این جا نحوه راه اندازی smtp در لینوکس رو آموزش میدم تا راه حلی باشه برای برنامه نویسان php‌که در از سیستم عامل لینوکس(معمولا بر حسب دبیان) استفاده میکنن. در این روش ما ابزار ssmtp رو نصب میکنیم و مقدار sendmail_path رو در فایل php.ini برابر با ssmtp قرار میدیم.

در ابتدا باید ابزار ssmtp رو نصب کنید:

sudo apt-get install ssmtp
برای کانفیگ ssmtp به مسیر زیر برید و اون رو برای کافیگ باز کنید

sudo nano /etc/ssmtp/ssmtp.conf
بعد از باز کردن فایل مقدارهای رو بصورت زیر تغییر بدید البته بعضی متغرها مثل root درش وجود داره که باید مقدار رو جلوش قرار بدید و بعضی متغیرها رو هم باید جدید بنویسید در هر صورت فایل فوق رو بصورت زیر تغییر بدید

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids &lt; 1000
# Make this empty to disable rewriting.
root=your-full-gmail-address

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=your-full-gmail-address

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

UseSTARTTLS=YES
AuthUser=your-gmail-username-here
AuthPass=your-gmail-password-here
  • در جلوی root نام کامل آدرس ایمیل gmail خودتون رو بنویسید مثلا: mehrdadSeifzadeh@gmail.com
  • در جلوی hosrname نیز نام کامل ایمیل خودتون رو وارد کنید
  • AuthUser هم نام کامل ایمیل خودتون
  • AuthPass هم رمز عبور ایمیل خودتون رو وارد کنید

بعد از این نوبت به کانفیگ کردن user برای ارسال ایمیل هست
sudo nano /etc/ssmtp/revaliases
بعد از باز کردن فایل فوق تغییرات زیر رو در اون وارد کنید
root:username@gmail.com:smtp.gmail.com:587
localusername:username@gmail.com:smtp.gmail.com:587
بجای username هم نام ایمیل خودتون رو بنویسید
در آخر نوبت به تغییر فایل php.ini و قرار دادن مقدار sendmail_path برابر با ssmtp هست برای این کار ابتدا فایل php.ini رو از مسیر زیر باز کنید

sudo nano /etc/php5/apache2/php.ini
رشته sendmail_path رو پیدا کنید و اون رو برابر با مقدار زیر قرار بدید

sendmail_path = /usr/sbin/ssmtp -t
و در آخر apache رو دوباره راه اندازی کنید
sudo service apache2 restart
حالا تمام ایمیل های شما از طریق smtp‌و سرور گوگل ارسال میشه

بررسی قدرت رمز عبور در php

برای این کار کلاس PasswordMeter خیلی کاربرد داره. از منبع اصلی دانلود کنید و یا از اینجا

روش استفاده


<?php
include 'classPasswordMeter.inc.php';
$rrr = new classPasswordMeter('123456dsacasdf');
echo $rrr->CalculateStrenght();

توابع مورد نیاز آرایه برای javascript

در برنامه های تحت وب بسیار از جاوا اسکریپت و ویژگی ها ان مثل آرایه، کوکی، اعتبار سنجی(validation) و ... استفاده میشود

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

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

۱− جستجوی موجود بودن مقدار در آرایه


function inarray(inc,arr){
    return ($.inArray(inc, arr) > -1);
}
۲−حذف یک مقدار از یک آرایه

Array.prototype.remove = function() {
    var what, a = arguments, L = a.length, ax;
    while (L && this.length) {
        what = a[--L];
        while ((ax = this.indexOf(what)) !== -1) {
            this.splice(ax, 1);
        }
    }
    return this;
};

var ary = ['three', 'seven', 'eleven'];

ary.remove('seven');

/*  returned value: (Array)
three,eleven
*/
۳- وجود مقدار تکراری در دو آرایه

function intersection_destructive(a, b)
{
  var result = new Array();
  while( a.length > 0 && b.length > 0 )
  {  
     if      (a[0] < b[0] ){ a.shift(); }
     else if (a[0] > b[0] ){ b.shift(); }
     else /* they're equal */
     {
       result.push(a.shift());
       b.shift();
     }
  }

  return result;
}

دستورات مورد نیاز 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 براحتی میتونید اجزای تمپلیت دلخواه رو بسازید.

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

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


راه اندازی 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