یه نویسنده

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

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

یه نویسنده

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

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

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

صدا زدن متد خاصی در هنگام بسته شده پنجره در python

امکان داره که برنامه شما در task bar باشه یا مثل من یک فایل خارجی رو صدا زدید و در صورت بسته شدن نا بهنگام پنجره برنامه مورد نظر هنوز در حافظه باقی می ماند. راه حل این مشکل گزفتن event بسته شدن پنجره هست برای این کار در کلاس Frame کدهای زیر را قرار میدهیم


self.Bind(wx.EVT_CLOSE, self.OnClose)
برای گرفتن event هم تابع OnClose را بصورت زیر مینویسیم:

def OnClose(self, event):
           # Code For On Close Runing

بررسی قدرت رمز عبور در 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;
}

نمایش تاریخ شمسی در php

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

sudo apt-get install php5-intl

و در ویندوز فایل php.ini رو خط مربوط به Intl را پیدا و ; رو از کنار اون بردارید

;extension=php_intl.dll

برای نمایش تاریخ شمسی کد زیر رو استفاده کنید


    $format = datefmt_create('fa_IR@calendar=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm:ss');

    // time in locale as you wish
    echo datefmt_format($format, time()); // '۱۳۹۱/۰۲/۰۴ ۱۹:۱۵'
منابع

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

سلام بر دوستان

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

در این جلسه طریقه استفاده از فرمهای وب و ارسال مقادیر از طریق ajax و دریافت به صورت json.

در این ویدیو بیشتر بر روی json و پردازش مقادیر json پرداخته شده است.


دانلود از 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'));

بهترین توابع validation برای javascript

برای چک کردن مقدار ورودی کاربری روشهای زیادی هست که سمت کاربر معمولا با html5 یا javascript و یا هر دو با هم استفاده میشه. البته در اینجا با validation سمت سرور کار نداریم

ساعتها وقت نیاز هست تا یک تابع validation  رو بر روی تمام مرورگرها و سیستمها تست کنید تا از کار کرد خوب اون مطمئن بشید. در اینجا بهترین توابع validation رو که بر حسب تجربه جمع آوری کردم رو میزارم


برای number

// check 0-9 digit
function is_digit(input)
{
  return (input - 0) == input && (input + '').replace(/^\s+|\s+$/g, "").length > 0;
}

برای ایمیل
// Check if string is a valid email address
        function valid_email(fData)
        {
            var reg = new RegExp("^[0-9a-zA-Z]+@[0-9a-zA-Z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$");
            return reg.test(fData);
        }

اجبار بر پرکردن یک کادر(گذشتن از این تابع غیر ممکن است)
// Check if string is non-blank
        var isNonblank_re = /\S/;
        function none_blank(input) {
            return String(input).search(isNonblank_re) != -1
        }
تعداد حروف وارد شده در متن(زبان فارسی بدلیل encoding دو برابر نشان داده می‌شود)
// Get String Length
        function regGetStrLength(input)
        {
            var valLength = input.length;
            var reg = new RegExp("^[\u0391-\uFFE5]$");
                    var result = 0;
            for (i = 0; i < valLength; i++)
            {
                if (reg.test(input.charAt(i)))
                {
                    result += 2;
                }
                else
                {
                    result++;
                }
            }
            return result;
        }
البته کدهای دیگری هم هستن که به مرور زمان بعد از تکمیل شدن اینجا میزارم. تمام برنامه‌های نوشته شده رو در یک بسته میتونید دانلود کنید.

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

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

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

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