یه نویسنده

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

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

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌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

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

حالا نمیخوام فلسفه پسورد و امنیت اطلاعات رو پیش بکشم بحثم روی کم کرد فشار سرور به کمک توابع داخلی و توکار هست. واقعا تعجب میکنم با این که زبانهای برنامه‌نویسی به مرور زمان توابع و امکانات جدید بهشون اضافه میشه و حتی در دیتابیس‌ها هم شاهد این موضوع هستیم باز هم افزادی هستن که سرور رو مشغول کارهای پیش‌پا افتاد و الگوریتم‌های سنگین میکنن. مثلا یه برنامه‌نویس میاد یک کلاس برای هش کردن پسوردها مینویسه که توش از تمام توابع(از 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

اخطار در اعماق کدها

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

برای تحویل پایانی نام کاربری رو ali1 دادیم و پسورد رو 1234 که سیستم هنگ کرد. گفتم شاید از تابع ساخت پسورد hash هست غیر فعال کردم دیدم نشد. گفتم شاید از دیتابیس هست دیدم نبود. گفتم شاید بخاطر تابعی که برای جلوگیری از sql_injection نوشتم باشه دیدم نبود خدایا تمام برنامه رو زیر رو کرد.

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

برنامه‌نویسی پایتون

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


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

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