loading...
طراحی وب سایت

nariman بازدید : 45 سه شنبه 16 مهر 1392 نظرات (1)

تغيير ظاهر ابزار منوي ASP.NET با CSS نوشته شده توسط مصطفيASP.NET, ابزارهاي ASP.NET ?? مرداد ????

گاهي اوقات لازمه که ما منو رو به صورت دايناميک بزاريم و اون رو يا به ديتابيس يا به  xml وصل کنيم اما ظاهر اون ما رو دچار مشکل مي کنه  براي تغيير ظاهر اون به وسيله css  بايد در قسمت properties ابزار منو ويژگي  CssClass  کلاس مربوط به منو خودتون رو انتخاب کنيد و ويژگي RenderingMode روي list قرار بدين در اين حالت مي تونيم استايل مورد علاقه خودمون رو به منو بديم .

Home  »  #C • ابزارهاي ASP.NET   »   اعتبار سنجي چک باکس با CustomValidator

اعتبار سنجي چک باکس با CustomValidator نوشته شده توسط مصطفي#C, ابزارهاي ASP.NET ?? بهمن ????

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

 

براي اين کار يک پروژه جديد ايجاد کنيد و يک چک باکس ، Button ،  CustomValidator  و يک ValidationSummary براي نمايش ارور به فرم اضافه کنيد .

 

در قسمت properties  مربوط به  CustomValidator  يک ErrorMessage  وارد کنيد .

 

حالا روي CustomValidator  دو بار کليک کنيد تا وارد رويداد ServerValidate بشيد و سپس کد زير را در اين رويداد قرار داديد :

 

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)

{

    //determine if CheckBox1 is checked or not, if it is validate it, else don't

    if (CheckBox1.Checked)

        args.IsValid = true;

    else

        args.IsValid = false;

}

پروژه رو اجرا کنيد و نتيجه کار رو ببينيد .

Home  »  #C • ASP.NET   »   URL Rewriting در ASP.NET 4.0

URL Rewriting در ASP.NET 4.0 نوشته شده توسط مصطفي#C, ASP.NET ?? بهمن ????

در اين مقاله ياد مي گيريم که چطور به وسيله URL rewriting  اقدام به بازنويسي url کنيم .

زماني که ما از رشته هاي پرس و جو ( query string ) استفاده مي کنيم لزومي نداره که عين رشته رو کاربر ببينه :

 

 

 

براي اين کار ابتدا يک پروژه خالي از نوع وب ايجاد کنيد و يک صفحه با نام Default.aspx ايجاد کنيد .

 

يک hyperlink به صفحه اضافه کنيد .

در قسمت properties مربوط به hyperlink   به خاصيت NavigateUrl  مقدار ( Home/~ ) بدهيد .

به  خاصيت text اون مقدار ( Home ) را بدهيد .

hyperlink دوم رو به صفحه اضافه کنيد به خاصيت NavigateUrl  اون مقدار ( About/~ ) و به  خاصيت text اون مقدار ( About) را بدهيد .

يک lable هم اضافه کنيد تا نتيجه خروجي رو ببينيم .

پس تا اينجا ما دو تا لينک متفاوت داريم که نياز به بازنويسي دارد . براي اين کار بايد ابتدا URL mappings را در web.config فعال کنيم و دو تا url رو به صورت زير مشخص کنيم :

using System.Net.NetworkInformation;

به صفحه وب خودمون اضافه مي کنيم و از طريق کد زير mac address رودر label نمايش مي ديم :

 

 

        protected void Page_Load(object sender, EventArgs e)

        {

 

            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();

 

            Label1.Text = nics[0].GetPhysicalAddress().ToString();

 

        }

 

 

تبديل عکس رنگي به سياه و سفيد با css نوشته شده توسط مصطفيCSS ?? مرداد ????

سلام خدمت کاربران عزيز و همچنان عدرخواهي به خاطر تاخير در مطالب !

 

براي اينکه ما بتونيم تصوير رنگي رو به کمک css به صورت سياه و سفيد نمايش بديم بدون استفاده از جاوا اسکريپت  و يا حتي آپلود دو نسخه از تصوير از کلاس :

img.grayscale {

 

  /*  Chrome 19+, Safari 6+ ... */

  -webkit-filter: grayscale(1);

 

  /*  Firefox 3.5+, Firefox mobile */

  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'gs\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#gs");

 

  /* for IE6+ */

  filter: gray;

}

استفاده مي کنيم  اين کلاس در تمام مرورگرها به درستي اجرا مي شود .

 

و يک نکته رو اضافه کنم که خاصيت filter همونظور که مي دونيد از خاصيت هاي css3 هست و فقط مرورگرهاي به اصطلاح ( Webkit browsers ) اون رو پشتيباني مي کنند  ،

 

webkit يک موتور مرورگر وب يا موتور رندر هست که در حال حاضر در دو مرورگر گوگل کروم و سافاري به کار رفته  به همين خاطر زماني که از ( webkit-filter ) استفاده مي کنيد تنها مرورگرهاي کروم و سافاري پشتيباني مي کنند .

nariman بازدید : 27 دوشنبه 25 شهریور 1392 نظرات (0)

PHPJAVASCRIPTSQLHTMLCSSAJAXMVCSecurity

آموزش php - فرم ها

پس از يادگيري قواعد و دستورات اوليه زبان برنامه نويسي php ، اکنون وقت اين رسيده که اطلاعات خود را در دنياي واقعي تري به کار بگيريم. يکي از رايج ترين شيوه هاي استفاده از php استفاده از آن همراه با html ، براي جمع آوري طراحی سایت و پردازش اطلاعاتي است که کاربر براي ما ارسال ميکند. در اين بخش آموزشي يک نمونه خيلي خيلي ساده شده از دنياي واقعي مورد بررسي قرار خواهد گرفت که در آن از php براي پردازش اطلاعات استفاده مي کنيم.

مرحله اول ايجاد فرم دريافت اطلاعات از کاربر

فرض کنيد يک فروشگاه الکترونيکي داريم که در آن محصولاتي طراحی وب سایت  وجود دارد و خريدار (کاربر) وارد سايت شده ، نوع و تعداد کالاي مورد نظر خود را انتخاب مي نمايد. ابتدا بايد از html کمک بگيريم و فرمي شبيه فرم زير بسازيم. اگر با فرم ها در html آشنايي نداريد بخش آموزش html فرم ها را مطالعه کنيد. پس براي شروع فايلي به نام userCart.php ايجاد و مي کنيم و کد زير را در آن قرار مي دهيم:

CODE 9-1:

<h3>محصول مورد نظر خود را انتخاب نماييد</h3>

<form>

<b>نام محصول:</b>

<select>

    <option>بسته آموزشي php</option>

    <option>نرم افزار xampp</option>

    <option>جزوه هاي برنامه نويسي وب</option>

</select>

&nbsp;

<b>تعداد:</b>

<input type="text" />

&nbsp;

<input type="submit" value="ثبت سفارش" />

</form>

نتيجه قابل نمايش:

اگر همه کارها را درست و بادقت انجام داده باشيد بايد نتيجه به شکل زير براي شما نمايش داده شود:

محصول مورد نظر خود را انتخاب نماييد

&nbsp;

<b>تعداد:</b>

<input type="text" name="cQtty" />

&nbsp;

<input type="submit" value="ثبت سفارش" />

</form>

</body>

</html>

در کد بالا خاصيت method روش ارسال اطلاعات و خاصيت action پردازشگر اين فرم را تعيين ميکند. در اين مثال روش ارسال را get انتخاب کرديم و تصميم گرفتيم که اطلاعات اين فرم براي فايل process.php ارسال شود. به زبان ساده قرار است فايل process.php که در ادامه آن را ايجاد ميکنيم وظيفه پردازش اطلاعات ارسال شده توسط کاربر را بر عهده بگيرد.

 

مرحله دوم ساخت فايل process.php

حال بايد سراغ کد php برويم که قرار است کار پردازش اطلاعات فرم را انجام دهد. در اينجا فقط هدف نمايش اطلاعات دريافتي از کاربر است چرا که قرار بود مثال را خيلي خيلي ساده طرح کنيم.

 

براي شروع اين مرحله فايل processForm.php را ايجاد مي کنيم

CODE 9-3:

1   <html>

2   <body dir="rtl">

3   <?php

4      echo 'سفارش شما ثبت شد <br />';

5      echo 'سبد خريد شما شامل  <b>' . $_GET['cQtty'] . '  ' . $_GET['cItem'] . '</b> مي باشد';

6   ?>

7   </body>

8   </html>

در اين مثال قرار است کد php ي که نوشتيم نوع و تعداد کالاي انتخابي را براي کاربر سايت نمايش دهد. با دستور echo در قسمت قبلي آموزش php آشنا شديم ولي اگر خوب به خط 5 از کد 3-9 دقت کنيم دستور جديدي به نام $_GET مي بينيم و اگر بيشتر دقت کنيم cItem و cQtty هم آشنا به نظر ميرسند. $_GET در حقيقت آرايه اي است که مقادير ورودي فرم html ي که به سمت سرور submit شده است را در خود نگه مي دارد. براي دسترسي به مقادير اين آرايه نياز به کليد داريم. در اينجا کليد دسترسي نامي است که به عناصر فرم html خود داديم. مثلا دستور $_GET['cQtty '] در اين مثال تعداد سفارش کاربر را در اختيار ما قرار مي دهد.

 

براي آشنايي بيشتر با آرايه ها در php به مطالعه بخش آموزش آرايه ها در php مراجعه کنيد!

 

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

 

   1 . وقتي که در ويرايشگر متن کدها را نوشتيم نوع enconding صفحه را UTF8 انتخاب کنيم. براي مثال در notepad++ از منوي Encoding گزينه Encode in UTF8 without BOM را انتخاب مي کنيم و بعد فايل را ذخيره ميکنيم.

 

   2 . در تگ Body از خاصيت dir="rtl" استفاده مي کنيم.

 

تا اينجا ياد گرفتيم چطور مقادير ارسال شده از سمت کلاينت (کد html) را در کد php خود استفاده کنيم. در بخش هاي بعدي با ابعاد کاربردي تري از php آشنا خواهيم شد.

آموزش php - توابع

توسط: ميثم کريمي | ??-ارديبهشت-???? | PHP

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

 

 

 

حال فرض کنيم برنامه اي داشته باشيم که بخش هاي تکراري زيادي دارد بنابراين با دانسته هاي فعلي بايد هربار که مثلا نياز به قطعه کد X در برنامه داريم اين قطعه کد را در محل مناسب کپي نماييم و در صورتيکه که نياز به تغيير در اين قطعه کد داشتيم بايد در تمام جاهايي که آن را کپي کرده ايم تغييرات را اعمال نماييم. به شکل زير توجه نماييد:

 

 

 

برنامه نويسي به اين روش کاري بسيار بسيار بسيار سخت خواهد بود. کافي است يکبار در دنياي واقعي امتحان کنيد!!!

 

يکي از راهکارهايي که به نظر مناسب مي رسد اين است که قطعه کدي که در برنامه زياد تکرار مي شود را با يک نام مشخص نامگذاري کنيم و دربخش هايي از کد php که به آن نياز داريم فقط نام آن را بنويسيم و php به صورت خودکار هربار که به نام مشخص شده رسيد ابتدا قطعه کد مورد نظر را اجرا نمايد سپس دوباره به همان مکاني که نام قطعه کد را براي اجرا نوشته بوديم ، بازگردد و اجرا کدها را از سر بگيرد (اين کد بدون فراخواني نام آن هيچ وقت اجرا نخواهد شد). در اين روش هربار که نياز به تغيير در قعطه کد تکراري باشد فقط يکبار و در يکجا آن را تغيير مي دهيم. شکل زير نمايش درستي از روش جديد است:

 

 

 

در دنياي برنامه نويسي به هر بلاک از کد که اسمي به آن اختصاص داده شده باشد و بتوان آن را در بخش هاي مختلف برنامه فراخواني کرد و پس از فراخواني و اجراي قطعه کد ، کنترل اجرا دوباره به بخش فراخوان بازگردد رويه (Procedure) و اگر اين رويه مقداري به عنوان نتيجه محاسبات خود باز گرداند به آن تابع (Function) مي گوييم.

 

در زبان php هر دو مفهوم ادغام شده اند و تحت عنوان تابع (Function) شناسايي مي شوند. براي تعريف يک تابع در زبان php به روش زير عمل مي کنيم:

 

function fName()

{

    // Code

}

براي اينکه تابعي در زبان php تعريف شود فقط و فقط کافي است در قطعه کد بالا fName را به نام مورد نظر خود تغيير دهيد و دستورات مورد نياز را در بخش Code بنويسيد.

 

معمولا پيشنهاد ميشود که اسامي توابع به نحوي انتخاب شوند که نام انتخاب شده معرفي کننده عملي باشد که تابع انجام مي دهد.

 

براي اجراي تابع در زبان php تنها کاري که بايد انجام شود اين است که بعد از تعريف تابع در محلي که نياز به فرخواني (اجرا) تابع داريم نام تابع را همراه با پرانتز باز و بسته بنويسيم:

 

fName();

دستور فوق در هر جايي از برنامه باشد دستورات داخل تابع بلافاصله اجرا شده و سپس اجرا دوباره از محل فراخواني از سر گرفته ميشود.

 

پارامترهاي توابع در php

توابع در برنامه نويسي قابليت و انعطاف زيادي به برنامه نويسي مي دهد ولي همه قابليت آن چيزي که تا اينجا بيان کرديم نبود. براي مثال فرض کنيد بخواهيم تابعي در php تعريف کنيم که جمع دو عدد را به کاربر نمايش دهد:

 

function addNumbers()

{

    $sum = $a + $b;

    echo $sum;

}

ولي نکته اينجاست که در کد بالا متغيرهاي $a و $b بايد به صورت سراسري تعريف شوند و اين بدين معناست که بايد برنامه خود را با دقت خيلي زيادي بنويسيم چراکه ممکن است در بخش هايي از کد مقادير اين متغيرها را دچار تغييرات ناخواسته نماييم ، ضمن اينکه از حافطه به شکل بهينه استفاده نکرده ايم.

 

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

 

راه حل مساله بالا تعريف پارامتر براي اين تابع است. پارامتر به زبان خيلي ساده متغيري است که به عنوان ورودي اطلاعات براي تابع مورد استفاده قرار ميگيرد. تعريف پارامتر براي توابع php خيلي ساده است کافي است نام آن را داخل پرانتزهاي جلوي نام تابع بنويسيم:

 

function addNumbers($a , $b)

{

    $sum = $a + $b;

    echo $sum;

}

مثال بالا تابع جمع دو عدد را با پارامترهاي $a و $b نشان مي دهد. بايد توجه طراحی وب سایت داشته باشيد که در اين مثال نيازي به تعريف متغيرهاي سراسري نيست ، و $a و $b به صورت محلي به عنوان پارامترهاي تابع addNumbers تعريف شده اند و بيرون از تابع قابل استفاده نخواهند بود.

 

براي ارسال مقدار به پارامترهاي تابع در زبان php به شکل زير عمل مي کنيم:

 

addNumbers(100,200);

با اجراي دستور فوق عدد 300 براي کاربر نمايش داده مي شود.

 

پايانگر اين بخش از آموزش هاي برنامه نويسي php - مقدماتي بازگرداني مقدار از تابع خواهد بود. در مثال جمع دو عدد اگر نخواهيم نتيجه را به کاربر نمايش دهيم و فقط نياز داشته باشيم که حاصلجمع را محاسبه کنيم چه بايد کرد؟ کاري ساده تر از استفاده از دستور return وجود ندارد. کافي است نتيجه را جلوي دستور return قرار دهيم:

 

function addNumbers($a , $b)

{

    $sum = $a + $b;

    return $sum;

}

يک نکته و آن اينکه مقدار بازگشتي از تابع (خروجي تابع) به شکل زير قابل استفاده خواهد بود:

 

$result = addNumbers(100,200);

در قطعه کد php بالا متغير $result حاوي خروجي تابع - در اين مثال مقدار 300 - خواهد بود.

nariman بازدید : 94 یکشنبه 17 شهریور 1392 نظرات (0)

ارسال ايميل همراه با فايل ضميمه به وسيله PHP

php-mail-attach

بعد از چند وقت دوباره برگشتم و به اميد خدا سعي ميکنم از اين به بعد بيشتر به سايت سر بزنم.

در اين قسمت براتون يک تابع رو معرفي ميکنم که خواهيد طراحی وب سایت ديد چطور ميشه با پي اچ پي ايميل رو به همراه فايل ضميمه ارسال کرد.

 

تابع زير اين کار رو براي شما انجام ميده :

 

1

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name,  $subject, $message) {

2

    $file = $path.$filename;

3

    $file_size = filesize($file);

4

    $handle = fopen($file, "r");

5

    $content = fread($handle, $file_size);

6

    fclose($handle);

7

    $content = chunk_split(base64_encode($content));

8

    $uid = md5(uniqid(time()));

9

    $name = basename($file);

10

    $header = "From: ".$from_name." <".$from_mail.">\r\n";

21

    $header .= "Content-Transfer-Encoding: base64\r\n";

22

    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";

23

    $header .= $content."\r\n\r\n";

24

    $header .= "--".$uid."--";

25

    if (mail($mailto, $subject, "", $header)) {

26

        echo "mail send ... OK"; // or use booleans here

27

    } else {

28

        echo "mail send ... ERROR!";

29

    }

30

}

براي استفاده از اين تابع به صورت زير عمل ميکنيم :

 

1

$my_file = "file1.pdf";

2

$my_path = $_SERVER['DOCUMENT_ROOT']."/myfiles/";

3

$my_name = "raj";

4

$my_mail = "info@domain.com";

5

$my_subject = "Email Subject ";

6

$my_message = "Refer the attached file.";

7

$to_email="to@domain.com";

8

  

9

mail_attachment($my_file, $my_path, $to_email, $my_mail, $my_name, $my_subject, $my_message);

 

ساخت URL هاي دلخواه با Htaccess

Posted on ??/??/?? | htaccess PHP

htaccess-security-seo

سلام

بنا به درخواست يکي از دوستان تصمبم گرفتم آموزش ساخت URL هاي دلخواه يا آدرسهاي کاربر پسند با استفاده از htaccess رو بذارم.

مزاياي اينجور آدرس دهي ها اول اينه که در موتورهاي جستجو بهتر شناخته ميشه.مزيت دوم هم که براي کاربراست.مثلا سايت twitter رو در نظر بگيريد »

 

 

 

همينطور که ميبينيد اين آدرس پروفايل به راحتي در ذهن کاربرا و هم در ذهن موتورهاي جستجو باقي ميمونه.

اما آدرسهاي ديگه اي مثل آدرس زير :

 

http://www.domain.com/profile.php?id=1304880680&action=edit

 

يک آدرس کاربر پسند نيست و به راحتي نميشه به خاطر سپردش.

براي ساخت آدرسهاي کاربر پسند دو راه وجود داره.

 

   استفاده فقط از Htaccess

 

   استفاده از Htaceess و Php

 

در هر دو راه بايد از فايل htaccess استفاه بشه. پس در ابتدا به آموزش htaccess ميپردازيم.

 

استفاده از Htaccess

 

فايل htaccess در حقيقت فايل تنظيمات وب سرور آپاچيه.

براي ساخت آدرسهاي زيبا توسط اين فايل ابتدا يک فايل با نام .htaccess بسازيد. سپس محتويات زير رو داخلش بنويسيد يا کپي کنيد :

 

1

Options +FollowSymLinks

2

RewriteEngine On

3

 

4

RewriteCond %{SCRIPT_FILENAME} !-d

5

RewriteCond %{SCRIPT_FILENAME} !-f

6

 

7

RewriteRule ^users/(\d+)*$ ./profile.php?id=$1

8

RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1

9

 

10

RewriteRule ^search/(.*)$ ./search.php?query=$1

حالا به معرفي و توضيح کدهاي بالا ميپردازيم.

خط اول ممکنه طراحی وب سایت در بعضي هاست ها نياز باشه براي همين قرارش ميديم

درخط دوم مشخص کرديم که ميخوايم از RewriteEngine استفاده کنيم و اين ماژول آپاچي رو فعال کرديم.

در خط سوم هيچي ننوشتيم :D

در خط چهارم و پنجم شرطي قرار داديم که اگر آدرس درخواستي فايل و پوشه نبود بقيه دستورات ميتونن اجرا بشن.اين دو شرط براي زمانيه که کاربر مثلا فايل example.com/images/logo.png فراخواني کنه ميخوايم که مستقيم فايل رو بهش نمايش بده.

 

سه خط آخر مهمترين دستورات ما هستن.در هر خط با استفاده از عبارات با قاعده چک ميکنيم که اگر با آدرس درخواستي هم سان(مساوي ، مچ ) بود صفحه مقابلش رو لود کنه.

دستور زير رو در نظر بگيريد :

 

RewriteRule ^users/(\d+)*$ ./profile.php?id=$1

 

در اين دستور هر وقت url به صورت مثلا www.phpro.ir/user/123 بود فايل profile.php?id=123 رو درخواست ميکنه و به کاربر نمايش ميده.

خطوط بعدي هم همينطور.

 

 

 

اگر آدرس مساوي با قسمت rule باشه ،درخواست به  قسمت url به ارسال ميشه.

RewriteRule rule url

 

با استفاده از اين روش هر ادرسي رو که دلمون بخواد ميتونيم بسازيم. اما مشکلي که اين روش داره اينه که اگر تعداد صفحات سايتمون زياد باشه بايد براي همه صفحات يک دستور بنويسيم.

راه حل رفع اين مشکل استفاده از روش دوم.

 

استفاده از Htaccess به همراه Php

 

در اين روش ابتدا همه درخواست ها رو به فايل index.php ( يا هر فايلي که خواستيد) ميفرستيد. سپس با دستورات php آدرس رو تجزيه ميکنيد و ازش استفاده ميکنيد.

 

براي اينکار در فايل htaccess خطوط زير رو بنويسيد ( محتويات قبلي رو پاک کنيد) :

 

1

    Options +FollowSymLinks  

2

    RewriteEngine On  

3

 

4

    RewriteCond %{SCRIPT_FILENAME} !-d  

5

    RewriteCond %{SCRIPT_FILENAME} !-f  

6

 

7

RewriteRule ^(.*)$ index.php?param=$1

تنها تفاوت اين فايل با قسمت قبل دستور خط آخره.

به جاي نوشتن دستورات مختلف براي صفحات مختلف سايت در فايل htaccess ، در اين قسمت تمام URL ها رو به فايل index.php ارسال ميکنيم.که اين کار به ما کمک ميکنه بقيه کارها رو با دستورات پي اچ پي انجام بديم.

همينطور که در بالا ميبينيد همه درخواستهارو در متغير $_GET['param'] ريختيم.

حالا در فايل index.php ميتونيم به راحتي از متغير $_GET استفاده کنيم.

 

1

if(isset($_GET['param']) AND !empty($_GET['param']))

2

{

3

    $page = $_GET['param'];

4

    if(file_exists('pages/'.$page.'.php'))

5

    {

6

        include($page.'.php');

7

    }else

8

    {

9

        include('404.php'); 

10

    }

11

}else

12

{

13

    include 'main.php';

14

}

در ابتدا چک کرديم براي خالي نبودن و ست شدن متغير $_GET['[param'] اگر شرط برقرار نبود فايل main.php يا همون صفحه اصلي سايت نمايش داده ميشه. در غير اينصورت چک کرديم که آيا فايل مورد نظر وجود داره يا خير. اگر وجود داشت include ميشه وگرنه به کاربر صفحه ??? نمايش داده ميشه.

nariman بازدید : 34 پنجشنبه 07 شهریور 1392 نظرات (0)

شما ميتوانيد يک آدرس اينترنتي براي عکس خود قرار دهيد يا از داخل کامپيوتر خود يک عکس را فراخواني کنيد.

براي درک بهتر ميتوانيد از مثال زير استفاده کنيد.

<span style="background-image: url('http://www.iraniantejarat.net/images/ecommerce/styles_new/201307/web_minithumb/100881_J8540_9066_001_web_minithumb.jpg')">براي اين span از تصوير زمينه استفاده شده است.</span>

براي اين span از تصوير زمينه استفاده شده است.

از ويژگي بالا تقريبا مي توان براي تمامي اجزاي صفحه استفاده کرد

در مثال پايين مي خواهيم يک عکس را در background صفحه فراخواني کنيم براي درک بهتر به مثال زير توجه کنيد

background-image: url(‘/ _______ ‘)

background-repeat:no-repeat;

no-repeat

از تکرار آن در صفحه جلوگيري ميکند background-repeat:no-repeat; ويژگي

شما مي توانيد بجاي مقدار no-repeat از مقدارهايي که در جداول پايين نوشته شده استفاده کنيد

همانطور که ملاحظه کرديد با استفاده از  طراحی وب سایت  استايل قدرت کنترل بيشتري بر روي background داريم چه اين تصوير زمينه براي قسمتي خاص باشد و چه براي همه ي صفحه استفاده شود با استفاده از جدول پايين مي توانيد از تمامي ويژگي هايي که مي توان از آن ها در کنترل تصويرهاي زمينه استفاده کرد بهره جست

 

  background-repeat

repeat: با استفاده از اين مقدار مشخص مي کنيم که اگر تصوير زمينه از اندازه ي پنجره کوچکتر بود چه به صورت افقي و چه به صورت عمودي تکرار شود تا

تمام صفحه را پوشش دهد

repeat-x: بااستفاده از اين گزينه تصوير را در راستاي افقي صفحه تکرار مي کنيم

repeat-y: بااستفاده از اين گزينه تصوير را در راستاي عمودي صفحه تکرار مي کنيم

no-repeat:اين گزينه مشخص مي کند که تصوير زمينه نبايد در هيچ جهتي تکرار شود

براي درک بهتر به مثال زير توجه کنيد .در اين مثال مي خواهيم يک عکس را در محور x تکرار کنيم

در اين مثال از css در head صفحه استفاده مي کنيم اما شما مي توانيد از تمامي مدل هاي استايل دهي استفاده کنيد

<html>

<head>

<style type="text/css">

body

{

background-image: url('/iraniantejarat.net/backgroundimage.html');

background-repeat:repeat-x;

}

</style>

</head>

 

<body>

<h1> hi dad</h1>

</body>

 

</html>

  background-attachment

از اين ويژگي زماني استفاده مي شود که شما از اسکرول بار صفحه استفاده مي کنيد و مي توانيد background را به صورت ثابت و يا متحرک همراه با اسکرول خوردن صفحه تنظيم کنيد از دو مقدار زير مي توان براي اين ويژگي استفاده کرد که به شرح زير مي باشد

fixed: با انتخاب اين گزينه تصوير زمينه در زمان اسکرول خورد سايت ثابت مي ماند

scroll: با استفاده از اين گزينه تصوير زمينه به همراه محتويات صفحه اسکرول مي خورد

براي درک بهتر به مثال زير توجه کنيد, در اين مثال  طراحی وب سایت  يک عکس به عنوان پس زمينه در نظرگرفته شده است

<style type="text/css">

<!--

body {

background-image:green url('2.jpg');

background-attachment:fixed;

background-repeat:no-repeat;

background-position:center center

 

}

-->

</style>

background-position

background-position- top right : توسط اين مقدار تصوير شما در بالا و سمت راست صفحه قرار خواهد گرفت

background-position-bottom right : توسط اين مقدار تصوير شما در پايين و سمت راست صفحه قرار خواهد گرفت

background-position-right center : توسط اين مقدار تصوير شما در سمت راست و ميانه صفحه قرار خواهد گرفت

براي درک بهتر به مثال هاي زير توجه کنيد

روش ?

<style type=”text/css”>

<!–

body {

background-image:green url(’2.jpg’);

background-attachment:fixed;

background-repeat:no-repeat;

background-position:top right

}

nariman بازدید : 32 دوشنبه 04 شهریور 1392 نظرات (0)

در بخش چهارم با ساختارهاي شرطي و تکرار در جاوا آشنا شديد. در اين بخش به مطالعه کلاس ها و اشيا، و روش استفاده از آنها در برنامه مي پردازيم.کلاس ها، ساختار منطقي هستند که کل زبان جاوا بر روي آن ساخته شده است زيرا شکل و ماهيت شي ء ها رادتعريف مي کنند، بدين ترتيب کلاس ها پايه و اساس برنامه سازي شي ء گرا را در جاوا تشکيل مي دهند . هر موضوعي که بخواهيد در برنامه هاي جاوا پياده سازي کنيد، مي بايست در قالب کلاس ها پياده سازي شود.

کلاس ها

شايد مهمترين نکته اي که بايد در مورد کلاس ها ياد بگيريم آن است که نوع جديدي از داده ها را تعريف مي کند. داده هاي نوع جديد را پس از تعريف شدن مي توان براي ايجاد شي ء هاي نوع مورد نظر به کار برد. از اين رو هر کلاس؛ الگويي template براي يک شيء است و هر شيء هم نمونه اي instance از يک کلاس به شمار مي آيد. چون هر طراحی وب سایت شي ء نمونه اي از يک کلاس است تغلب مي بينيم که دو واژه شيء و نمونه به جاي يکديگر به کار برده مي شوند.

 class classname{

Type instance-variable1;

Type instance-variable2;

//…Type instance-variable N; 

Type methodname1(parameter-list){

//body of method

}

Type methodname2(parameter-list){

//body of method

//…

Type methodnameN(parameter-list){

//body of method

}

}   

داده ها يا متغير هايي که در هر کلاس تعريف مي شوند؛ نمونه متغير instance variable ناميده مي شوند. روتين ها نيز در متد ها جاي ميگيرند. به طور کلي؛ به متد ها و متغير هايي که در هر کلاس تعريف مي شوند؛اعضاي member کلاس گفته مي شود. در بيشتر کلاس ها؛ متد هاي تعريف شده براي هر کلاس هستند که بر روي نمونه متغير ها کار مي کنند و به آنها دستيابي دارند. از اين رو؛ اين متد ها هستند که چگونگي استفاده از داده هاي هر کلاس را تعيين مي کنند.

دليل اينکه متغيرهاي هر کلاس ، نمونه متغير خوانده مي شوند ، آن است که هر نمونه از يک کلاس (يعني ، هر شي از يک کلاس) ، کپي خاص خود را از متغيرها دارد . از اين رو ، داده هاي هر شيء ،جداگانه و خاص خود آن بوده و با داده هاي يک شيء ديگر يکسان نيستند . 

تمام متدها همان شکل عمومي main() را دارند که تا به حال به کاربرده ايم . اما ، بيشتر متدها به عنوان يک متد ايستا يا عمومي مشخص نمي شوند . توجه داشته باشيد که در شکل عمومي کلاس ها ، متدي به نام main() مشخص نمي شود .

کلاس هاي جاوا نياز به متد main() ندارند . تنها زماني چنين متدي مشخص مي شود که کلاس مورد نظر ، نقطه آغازين برنامه تان باشد . به علاوه ، اپلت ها اصلا نياز به متدي به نام main() ندارند .

توجه :برنامه سازان C++ توجه داشته باشند که معرفي کلاس و پياده سازي متدها در يکچا ذخيره مي شوند و به طور جداگانه تعريف نمي شوند . اين امر گاهي اوقات سبب ايجاد فايل هاي java . بسيار بزرگ مي شود ، چه آنکه هر کلاس بايد کلا در يک فايل واحد تعريف شود . 

مطالعه کلاس ها را با يک مثال ساده آغاز مي کنيم . براي اين کار کلاسي به نام BOX تعريف مي کنيم که داراي سه نمونه متغير به نام Width , height , depth است . در حال حاضر ، BOX فاقد هر گونه متد است 

 class BOX {  

double width ;  

double height ;  

double depth ;

}

همان گونه که گفته شد ، هر کلاس ، نوع جديدي از داده ها را تعريف مي کند . در اين مثال خاص ، نوع جديدي که ايجاد مي شود ، BOX ناميده شده است . از اين نام براي تعريف شيء هاي نوع BOX استفاده خواهد شد . مهم است به خاطر بسپاريد که تعريف هر کلاس جديد تنها سبب ايجاد يک الگو مي شود ؛ يک شيء واقعي ايجاد نمي شود . از اين رو ، تعريف کلاس BOX در بالا سبب ايجاد هيچ شيئي از نوع BOX نمي شود .براي آنکه يک شيء BOX ايجاد شود ، مي بايست از عباراتي همچون سطر زير استفاده کنيد

BOX mybox = new BOX () ; 

// creat a box object called mybox

 پس از آنکه عبارت بالا اجرا شد ، mybox به عنوان نمونه اي از BOX ايجاد خواهد شد . از اين رو ، يک واقعيت «فيزيکي» از کلاس BOX ايجاد خواهد شد . فعلا ، نگران جزئيات اين عبارت نباشيد .باز هم لازم به ذکر است که هر گاه نمونه اي از يک کلاس را ايجاد مي کنيد ، شيئي ايجاد مي شود که نسخه خاص خودش را از هر يک از نمونه متغيرهاي تعريف شده در آن کلاس خواهد داشت . از اين رو ، هر شي BOX ، نسخه هاي خاص خودش را از نمونه متغيرهاي Width , height , depth خواهد داشت . براي دستيابي به اين متغيرها بايد از عملگر نقطه (.) استفاده کنيد . اين عملگر ، نام شيء را با نام «نمونه متغير» مرتبط مي کند .

به عنوان مثال ، براي آنکه مقدار ??? را به متغير Width از mybox تخصيص دهيد ، از عبارت زير استفاده کنيد :

Mybox . width = 100

عبارت بالا براي کامپايلر مشخص مي کند که مقدار ??? را به نسخه اي از width که در شي mybox است تخصيص دهد . به طور کلي ، از عملگر نقطه (.) براي دستيابي به نمونه متغيرها و متدهاي موجود در يکطراحی وب سایت شيء استفاده مي شود . در برنامه زير از کلاس BOX استفاده شده است :

 /* A program that uses the BOX class.

 Call this file BOXDemo.java03*

class BOX  {

    double width ;

    double height ;

    double depth ;

 }

   //this class declares an object of type BOX .

class boxvemo {

 public static void main (string args[])  

{

 BOX mybox = new BOX ();

 double vol ;

 // assign values to mybox's instance variables

 mybox.width = 10;

 mybox.height = 20;

 mybox.depth = 15;

 // compute volume of box

 vol = mybox.width*mybox .height *mybox.depth;

 System.out.println("volume is "+vol) ;

   }

 }

مي بايست فايل حاوي اين برنامه را Boxdemo.java بناميد ، چرا که متد main() در کلاسي است که Boxdemo نام دارد ، و نه BOX . کامپايلر جاوا هر کلاس را به طور خودکار در فايل .class ايجاد خواهد شد ؛ يکي براي Box و يکي هم براي Boxdemo . 

کمپايلر جاوا هر کلاس را به طور خودکار در فايل .class خاص خودش قرار مي دهد . لزومي ندارد که هر دو کلاس BOX و Boxdemo دريک فايل دخيره شوند. هر يک از کلاس ها را مي توانيد در فايل هاي خاص خودشان قرار دهيد :

 box.java و boxdemo.java

 براي آنکه اين برنامه را اجرا کنيد ، بايد boxdemo.class را اجرا کنيد. وقتي اين کار را انجام مي دهيد ، خروجي زير را خواهيد ديد :

Volume is 3000.0

همان گونه که پيش از اين گفته شد ، هر شيء نسخه هاي خاص خودش را از نمونه متغيرها خواهد داشت. اين بدين معناست که اگر دو شي نوع BOX داشته باشيد ، هر يک از آنها ، نسخه هاي خاص خودشان را از width.depth و height خواهند داشت . مهم است بدانيد که تغييراتي که در نمونه متغيرهاي يک شي ايجاد مي شوند، هيچ تاثيري بر نمونهه متغيرهاي شيء ديگر نخواهند داشت.

به عنوان مثال ، در برنامه زير دو شيء BOX تعريف شده است :

 // this program declares two box objects .

 class BOX {

    double width ;

    double height ;

    double depth ;

 }

 class boxDemo2 {

 public static void main (string args[]) {

 BOX mybox1 = new BOX ();

 BOX mybox2 = new BOX ();

 double vol ;

   // assign values to mybox's instance variables

mybox1.width = 10;

 mybox1.height = 20;

 mybox1.depth = 15;

 /* assign different values to mybox's instance variables*/

 mybox2.width = 3;

 mybox2.height = 6;

 mybox2.depth = 9;

  

 // compute volume of first box

Vol = mybox1.width*mybox1 .height *mybox1.depth;

 System.out.println("volume is "+vol) ;

  

 // compute volume of second box

 Vol = mybox2.width*mybox2 .height *mybox2.depth;

 System.out.println("volume is "+vol) ;

  }

 }

خروجي اين برنامه در زير نشان داده شده است :

Volume is 3000.0 

Volume is 162.0

همانگونه که مي بينيد ، داده هاي mybox1 ، کاملا جداي از داده هاي موجود در mybox2 هستند .شيوه تعريف کردن شيءهاهمان گونه که در بالا شرح داده شد ، وقتي کلاسي را ايجاد مي کنيد ، در واقع يک نوع جديد براي داده ها ايجاد مي شود . از اين نوع جديد مي توانيد براي تعريف کردن شيئ هايي از آن نوع استفاده کنيد . اما رسيدن به شئ هاي يک کلاس ، نوعي فرآيند دو مرحله اي است .

نخست اينکه ، بايد متغيري است که مي تواند به يک شئ ارجاع داشته باشد. دوم اينکه ، مي بايست يک نسخه فيزيکي واقعي از شئ به دست آوريد و آن را به آن متغير تخصيص دهيد. اين کار را مي توانيد با استفاده از عملگر new انجام دهيد. عملگر new ، حافظه اي را به طور پويا (يعني در زمان اجرا) به شئ تخصيص مي دهد و نشاني آن را بر مي گرداند. اين نشاني سپس در متغير ذخيره مي شود . از اين رو ، تمام شئ هاي نوع کلاس در جاوا بايد به طور پويا تخصيص يابند . 

اينک به جزئيات اين رويه مي پردازيم .درنمونه برنامه هاي زير از سطري مشابه عبارت زير براي تعريف شيئي از نوع BOX استفاده خواهد شد:

 BOX mybox = new BOX();

دو مرحله پيش گفته در عبارت بالا ترکيب شده اند . عبارت بالا را مي توان براي نشان دادن هر يک از مراحل به صورت زير بازنويسي کرد :

 BOX mybox ; // declare refrence to object

 mybox = new box (); // allocate a box object

درسطر نخست ، mybox به عنوان نشاني شيئي از نوع box تعريف مي شود . پس از اجراي اين خط ، مقدار null در mybox ذخيره خواهد شد که نشانگر آن است که متغير هنوز به هيچ شيء واقعي ارجاع ندارد . هر گونه اقدام براي استفاده از mybox در اين مرحله منجر به بروز خطاي زمان کامپايل خواهد شد .

سطر دوم هم موجب تخصيص شيء واقعي و تخصيص نشاني آن به mybox مي شود . پس از اجراي سطر دوم ، مي توانيد از mybox مي شود . پس از اجراي سطر دوم ، مي توانيد از mybox به گونه اي استفاده کنيد که گويي يک شيء Box است. اما mybox صرفا نشاني حافظه شيء BOX واقعي را نگهداري مي کند .تاثير اين دو سطر در شکل ?-? به تصوير کشيده شده است .

توجه : خوانندگاني که با C/C++ آشنايي دارند ، احتمالا متوجه شده اند که به نظر مي رسد که نشاني شيء ها مشابه نشانه روها باشد . اين گمان و تصور واقعا درست است . نشاني هر شي طراحی وب سایت مشابه نشانه رو نقطه اي از حافظه است . تفاوت اصلي – و کليد امنيت جاوا – آن است که نشاني همچون نشانه رو ها قابل پردازش و مديريت نيست . از اين رو ، ارجاع آنها را نمي توان به نقطه دلخواهي از حافظه تغيير داد و يا همچون يک صحيح با آنها کار کرد . نگاهي دقيقتر به newهمانگونه که در قسمت پيش شرح داده شد ،

عملگر new ، حافظه هر شيء را به طور پويا تخصيص مي دهد .شکل کلي آن در ذيل نشان داده شده است :

Class-var = new classname();

Class-var ، متغيري از نوع کلاسي است که ايجادمي شود ، classname نام کلاسي است که نمونه اي از آن ايجاد مي شود . constructor کلاس با نام کلاس و دو پرانتزي که پس از آن قرار گرفته اند ، مشخص مي شود . constructor مشخص مي کند که هنگام ايجاد شيئي از نوع کلاس ، چه اتفاقي رخ مي دهد . constructor هاي خاص خودشان را در تعريف کلاس مشخص مي کنند . اما ، اگر constructor به طور صريح مشخص نشود ، در آن صورت جاوا آن را به طور خودکار تامين مي کند . در خصوص کلاس box همين طور است . فعلا از constructor پيش فرض استفاده مي کنيم . 

به زودي خواهيد ديد که چگونه مي توانيد constructor هاي خاص خود را تعريف کنيد .در اين مقطع ممکن است از خود بپرسيد که چرا نيازي به استفاده از new براي مواردي چون اعداد صحيح يا کارکترها نيست . پاسخ اين پرسش آن است که انواع داده هاي پايه جاوا به صورت شيء پياده سازي نمي شوند. بلکه ، به صورت متغيرهاي «معمولي» پياده سازي مي شوند . اين کار به خاطر بازدهي بيشتر انجام مي گيرد . 

همان گونه که خواهيد ديد ، شيء ها ،ويژگيها و خصوصيات زيادي دارند که لازم است طرز برخورد با آنها نسبت به انواع داده هاي پايه متفاوت باشد . با عدم تحميل سربار خاص شيء ها به انواع داده هاي پايه ، جاوا قادر به پياده سازي کارآمدتر انواع داده هاي پايه مي شود . 

مهم است به خاطر داشته باشيد که new حافظه شيء ها را در طي اجرا ايجاد کنند . اما ، از آنجايي که حافظه محدوداست ، اين احتمال وجود دارد که new به دليل عدم وجود حافظه کافي نتواند حافظه لازم براي يک شيء را تخصيص دهد . اگر چنين اتفاقي رخ دهد . استثنا زمان اجرا پيش خواهد آمد (چگونگي مديريت اين استثنا ها را د آينده بررسي خواهيم کرد).

تمايز بين کلاس ها و شيء ها را يک مرتبه ديگر مرور مي کنيم . هر کلاس، نوع جديدي از داده ها را ايجاد مي کند که مي توان براي ايجاد شيء ها به کار برد . يعني ، هر کلاس نوعي چارچوب منطقي ايجاد مي کند که رابطه بين اعضايش را تعريف مي کند . وقتي شيئي از يک کلاس معين را تعريف مي کنيد ، در واقع نمونه اي از آن کلاس ايجاد مي کنيد . از اين رو ، هر کلاس ، نوعي ساختار منطقي است . هر شيء نيز نوعي واقعيت فيزيکي است (يعني هر شيء فضايي را در حافظه اشغال مي کند) . 

مهم است که اين تمايز را به ذهن خود بسپاريد .تخصيص متغيرهاي ارجاع به شيءوقتي عمل تخصيص انجام مي گيرد، عملکرد متغيرهاي ارجاع به شيء با آنچه انتظار داريد تفاوت دارد . به عنوان مثال ، فکر مي کنيد دو عبارت زير چه عملي انجام مي دهند؟

 BOX b1 = new BOX () ;

 BOX b2 = b1;

ممکن است چنين تصور کنيد که نشاني نسخه اي از شيئي که b1 به آن ارجاع دارد ، به b2 تخصيص مي يابد . يعني ، ممکن است چنين فکر کنيد که b1 و b2 هر دو به يک شيء ارجاع خواهند داشت . تخصيص b1 و b2 موجب تخصيص حافظه يا کپي کردن بخشي از شيء اوليه نمي شود . بلکه صرفا سبب مي شود که b2 نيز به همان شيئي که b1 به آن ارجاع دارد ، ارجاع داشته باشد .

از اين رو ، هر گونه تغيير در شيء از طريق b2 ، بر شيئي که b1 به آن ارجاع دارد ، تاثير خواهد گذاشت ، چرا که هر دو آنها يک شيء هستند .اين وضعيت در زير به تصوير کشيده شده است : 

اگر چه b1 و b2 هر دو به يک شيء ارجاع دارند ، اما به هيچ شکل ديگر مرتبط نيستند . به عنوان مثال ، تخصيص مقداري ديگر به b1 صرفا سبب قطع ارتباط آن با شيء اوليه مي شود که البته ، هيچ تاثيري بر b2 نخواهد داشت . به عنوان مثال :

 BOX b1 = new BOX();

 BOX b2 = b1 ;

 // …

 b1= null ;

b1 در اينجا با null مقدار دهي شده ، اما b2 هنوز به همان شيء اوليه ارجاع دارد .

nariman بازدید : 37 یکشنبه 03 شهریور 1392 نظرات (0)

براي ايجاد اين تاپيک بحثي طولاني در تاپيک زير شده و علاوه بر قوانين رايج انجمن اين تاپيک يکسري قوانين خاص خودش را نيز داراست و اين بنا به نظر دوستان انجمن بود :

http://forum.ubuntu.ir/index.php/topic,52662.0.html

قانون مهم و اصلي اينکه : براي مرتب بودن وانسجام مطالب 

 

خواهشا به هيچ عنوان به تاپيک پاسخ ندهيد

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

 

و اما جاوا چيست ؟

 

جاوا يک زبان برنامه نويسي قدرتمند است که ...

 

جاوا قابل حمل است به اين معني که برنامه هايي که در جاوا مينويسيم قابليت اجرا بر روي پلتفورم ها و سيستم هاي ديگر را دارا هستند.مثلا برنامه اي که در لينوکس نوشته ايد ميتوانيد در مک يا ويندوز هم اجرا کنيد!!

 

جاوا يکي از زبانهاي خانواده C است و با رويکردي جديد در زمينه هايي چون شي گرايي و چند نخي قدرت زيادي پيدا کرده و براي کساني که با زبانهاي خانواده C آشنايي دارند يادگيري آن سريع است.

 

جاوا يکي از قويترين زبان هاي شي گراست و طراحي آن متناسب با نيازهاي مهندسي نرم افزار و روش هاي نوين توسعه کد بوده است!

 

جاوا حاوي کتابخانه هاي قدرتمندي در زمينه هاي مختلف چون رابط هاي کاربري (GUI)، رياضيات ، چن نخي ، کا با استثنا ها، اپلت ها،  استريم ها و ... است و توسط شرکت قدرتمند اوراکل پشتيباني ميشود.

 

و اکنون جاوا اوپن سورس است!

نسخه هاي جاوا!

 

جاوا در سه نسخه استاندارد (JAVA SE) ، تجاري (JAVA EE) و مخصوص دستگاههاي کوچک (JAVA ME) توسعه يافته که بحث ما در اين آموزش در ابتدا نسخه Standard Edition  و سپس مسائل تخصصي ٍEnterprise Edition خواهد بود! 

 

نصب جاوا و محيط توسعه اکليپس در اوبونتو

 

در اين آموزش برنامه ها را در محيط مجمع توسعه اکليپس نوشته و اجرا ميکنيم.

 

براي اجراي برنامه ها به زبان جاوا نياز به JDK روي سيستم خود داريد.

 

اگر کاربر اوبونتو هستيد يک راه ساده براي نصب همزمان JDK و ٍEclipse استفاده از کد زير در ترمينال است : 

 

 

کد: [انتخاب]

sudo apt-get install eclipse

 

(***اگر خداي نکرده لينوکسي نيستيد در مک و ويندوز براي دريافت JDK به سايت java.com و براي دريافت eclipse به eclipse.org مراجعه کنيد. :))

 

اگر جاوا و اکليپس را نصب کرديد حالا آماده ايد که اولين برنامه خود را در جاوا بنويسيد :)

 

Hello, World

 

اکليپس را باز کنيد. به مسير زير برويد :

 

file > New > Java Project

 

در صفحه باز شده در بخش Project Name  يک نام مانند Hello وارد کرده و finish  را بزنيد.

 

اگر صفحه welcome همچنان روي صفحه بود آن را ببنديد!

 

در بخش سمت چپ صفحه در قسمت package explorer روي نام پروژه ي خود کليک راست کرده و به مسير زير برويد :

 

New > class

 

در پنجره ظاهر شده در بخش name نام کلاس را وارد کنيد ( در اين بخش FirstInUbuntu را وارد کنيد براي استفاده از کدهاي زير.) و finish  را بزنيد.

 

حال در بخش مياني صفحه کدهايي مشاهده ميکنيد.آنها را پاک کنيد و کد زير را در آن بنويسيد :

 

کد: [انتخاب]

public class FirstInUbuntu {

   public static void main(String [] args){

      System.out.print("Hello, world");

   }

}

 

و سپس با استفاده از ميانبر ctrl + f11 يا استفاده از مسير زير برنامه را اجرا کنيد.

 

خب اين هم از اولين برنامه به زبان جاوا، سلام دنيا!

 

با اجراي اين کد بايد عبارت Hello, world در بخش پايين اکليپس قسمت console نمايان شود.

 

 

 

اين هم يک عکس از محيط IDE به همراه کد نوشته شده در بالا و اجرا شده ي آن :

http://mohsenelf.opendrive.com/files/66574362_L7rYy/java1.png

 

 

توضيح کد بالا :

 

هر برنامه جاوا شامل بخشهايي است که در زير به چند بخش مورد نياز ما در اين کد ميپردازيم و در هر قسمت بنا به نياز بخشهاي ديگر را توضيح ميدهيم.

 

هر  برنامه جاوا شامل حداقل يک کلاس اصلي است و حداقل يک متد به نام main به عنوان متد اصلي است ولي اين در ساده ترين حالت است و معمولا تعداد زيادي کلاس و متد در برنامه هاي نوشته شده خود خواهيم داشت.

در مورد چيستي کلاس ها و متد ها در آينده بيشتر خواهيم گفت. در کد بالا قطعه کد زير تعريف کلاسي به نام FirstInUbuntu است :

 

کد: [انتخاب]

public class FirstInUbuntu {

 

}

در حالت کلي براي تعريف يک کلاس عمومي در جاوا از ساختار زير استفاده ميکنيم :

 

} نام کلاس public class

 

بدنه کلاس

 

{

 

بدنه کلاس شامل اجزايي است که (تا اينجا صرفاً متدها را ميشناسيم ازين اجزا!) کد هاي برنامه در آنها نوشته ميشوند.

 

و اما متد ها: متدها تکه هايي از برنامه هستند ( چيزي تقريبا شبيه توابع در سي) که در کلاسها بسته بندي ميشوند و هر کدام مسئوليت خود را دارند و در حقيقت کلاس ها بسته هايي حاوي متد هستند!

 

در کد بالا قطعه کد زير بخش تعريف متد آن است :

 

کد: [انتخاب]

 

   public static void main(String [] args){

     

   }

در حالت کلي متدهاي استاتيک عمومي به صورت زير تعريف ميشوند :

 

}( آرگومانها ) نام متد  نوع بازگشتي  public static 

 

بدنه متد

 

{

 

 

توجه داشته باشيد که در برنامه هاي دسکتاپ به زبان جاوا هميشه نياز به متدي به نام  main که بصورت زير تعريف ميشود داريم دقيقا با همين ساختار که در آينده راجع به آن بيشتر خواهيم گفت :

 

کد: [انتخاب]

 

   public static void main(String [] args){

     

   }

 

 

 و بدنه متد ها هم شامل کدهايي است که براي اجرا مينويسيم که در کد بالا قطعه زير بدنه متد main است که عبارت Hello, world را در صفحه نمايش ميدهد :

 

کد: [انتخاب]

System.out.print("Hello, world");

 

چند نکته که نبايد فراموش کنيد :

 

0 - جاوا حساس به بزرگي و کوچکي حروف است، اگر به اين مساله توجه نکنيد کدهاي شما اجرا نميشوند!

1 - نام کلاس عمومي بايد با نام فايل ساخته شده که کد در آن نوشته ميشود بايد دقيقاً همنام باشند وگرنه منجر به خطا ميشود.

2 - اگر نقاط گنگي در آموزش بود، صبور باشيد در پست هاي بعدي مو شکافانه تر مطرح خواهند شد ;)

 

-----------------------------------------------

 

يک نسخه PDF از اين مطلب توسط دوست خوبمون آقاي سلمان العلما شيرازي تهيه شده که از لينک زير ميتونيد اون رو دريافت کنيد :

http://bazaar.launchpad.net/~lezzatejava/lezzatejava/trunk/view/head:/LezzateJava.pdf

 

و براي ويرايش و مشارکت در پروژه و تهيه نسخه خودتان ميتوانيد از لينک زير در لانچ پد استفاده کنيد :

https://launchpad.net/lezzatejava

 

 

 پيشنهادات و انتقادات خود را در تاپيک زير مطرح کنيد :

http://forum.ubuntu.ir/index.php/topic,52662.0.html

و سوالات خود را در تاپيک زير مطرح کنيد :

http://forum.ubuntu.ir/index.php/topic,54807.0.html

و دوباره خواهش ميکنم که به اين تاپيک اينجا پاسخ نديد ;)

« آخرين ويرايش: 07 بهمن 1391، 01:13 ب‌ظ توسط داريوش عباسي »

 خارج شده است

اشکهايي که براي شکست ميريزيم،همان عرقيست که براي پيروزي نريختيم. {آدولف هيتلر}  ----   www.teamgeek.ir

 آفلاين محسن ح.

Hero Member

*

 

ارسال: 855

جنسيت : پسر

فقط مينت !!!

 

لذت جاوا :) آموزش برنامه نويسي در لينوکس به زبان جاوا

« پاسخ #1 : 22 بهمن 1391، 09:43 ب‌ظ »

با اجازه ي آقا داريوش !

منم يه چيزايي دارم از جاوا ياد ميگيرم ، تا الان ??? صفحه خوندم ميخوام خلاصه ي اينايي که ياد گرفتمو بگم ، ايشالا که مفيد باشه :)

-----------------------------------------------------------------------------

 

خب واسه شورع کار رو با نوشتن يه برنامه که ?تا کلاس داره که اولي متد (همون تابع !) main توشه و کلاس دوم حاوي يک سري متد ديگس که توسط کلاس اول ازش يه شيئ ميسازيم تا بتونيم ازش استفاده کنيم .

 

داخل پرانتز مهم ! :

داده ها توي جاوا ? مدل هستن يا اصلي (Primitive) هستن يا ارجاعي (Refrence) 

واسه تشخيص اين ? مدل :

اگه داده اي از يکي از ? نوع زير بود اصليه (خود جاوا ميدونه چيه ، واسش تعريف شده) و اگه نبود ارجاعيه (يا ما يا کسه ديگه اي اون مدل داده رو واسش تعريف کرديم)

اون ? نوع : boolean , byte , char , short , int , long , float , double

 

خب حالا ميريم سراغ اون ?تا کلاس !

توي eclipce يه پروژه ي جديد ايجاد کنيد و توي قسمت Package Explorer روي پروژه راست کليک کنين و يه کلاس جديد اضافه کنين به اين نام :

کد: [انتخاب]

GradeBookTest

حالا يه پنجره واستون مياد که محتويات کلاس جديدتون رو نمايش ميده ، کدهاش رو با اينا جايگزين کنين تا اولين کلاسمون ايجاد بشه :

کد: [انتخاب]

public class GradeBookTest

{

public static void main(String[] args)

{

GradeBook myGradeBook1 = new GradeBook("mohsen 01");

myGradeBook1.displayName();

 

GradeBook myGradeBook2 = new GradeBook("mohsen 02");

myGradeBook2.displayName();

}

}

 

همين روند رو واسه ايجاد کلاس دوم طي کنين و اسمشو بزارين :

کد: [انتخاب]

GradeBook

و کدهاش رو هم اينا رو قرار بدين :

کد: [انتخاب]

public class GradeBook

{

private String courseName;

 

public GradeBook(String name)

{

courseName = name;

}

 

public void setName(String name)

{

courseName=name;

}

 

public String getName()

{

return courseName;

}

 

public void displayName()

{

System.out.printf("Welcome to the grade book for \n%s!\n" , getName());

}

}

 

خب حالا با اجرا کردن برنامه (run) نتيجه ميشه چاپ کردن اين عبارات :

کد: [انتخاب]

Welcome to the grade book for 

mohsen 01!

Welcome to the grade book for 

mohsen 02!

 

خب حالا بيايم ببينيم اينا چي بودن و اصلا چه فايده اي داره ياد گرفتن اين چيزا !

 

اول يه چيزي رو بگم ، اونايي که برنامه نويسي طراحی وب کار کردن ميدونن که واسه اينکه يه کلاس بتونه از يه کلاس ديگه يک شيي ايجاد کنه يا کلا بهش دست رسي داشته باشه ، بايد اول کدهاي اون برنامه بايد کلاس مورد نظر شناسونده بشه به برنامه يعني بايد بهش بگيم که آقا (!) ما ميخوايم از فلان کلاس توي برنامه استفاده کنيم !

اما توي جاوا واسه کلاس هايي که توي يک پوشه قرار گرفته باشن نيازي به اين کار نيس و موقع کامپايل شدن خودش ميفهمه !

 

خب پس اينکه اين ?تا چجوري ميفهمن وجود همديگه رو کاملا روشن شد !

 

اما کدهاي ما چيکار ميکنن ؟!

توي کلاس اول که متد main توش بود (و متد main همونطور که ميدونين اولين متدي هستش که برنامه موقع اجرا شدن اجراش ميکنه) ، ما خواستيم که از يه مدل داده که خودمون درست کرديم استفاده کنيم ، واسه استفاده از کلاس ها ما مستقيما نميتونيم به خودشون دسترسي داشته باشيم (واسه دست نخورده موندن کدهاي اصلي کلاس و امنيت بيشتر برنامه!) واسه همين يه نمونه از اون کلاس ايجاد ميکنيم و باهاش کار ميکنيم که بهش ميگن شيئ

پس ما يک شيئ از کلاس GradeBook ايجاد کرديم که بتونيم از ويژگي هاش استفاده کنيم ،

کد: [انتخاب]

GradeBook myGradeBook1 = new GradeBook("mohsen 01");

توضيح اين خط :

myGradeBook1 نامي هست که واسه داده ي خودمون انتخاب کرديم که از نوع GradeBook تعريف شده و چون ميخواستيم بهش مقدار اوليه بديم موقع new کردن (همون ايجاد يه کپي از کلاس مد نظر) بهش مقدار mohsen01 رو داديم

 

نکته! : براي اينکه بتونيم بهش مقدار اوليه بديم بايد توي کلاس GradeBook سازنده ي کلاس رو ايجاد کنيم (Constructor) ، سازنده چيه ؟! سازنده ي کلاس شبيه يک متد ميمونه ولي بدون نوع بازگشتي (حتي void هم نيس ، کدهاي کلاس دوم رو ببينين) که همنام با کلاس مورد نظره و توش به متغيير هاي اون کلاس مقاديري اختصاص پيدا ميکنه و اين سازنده ي کلاسه که موقع فراخواني يا شروع استفاده از يه کلاس ، اجرا ميشه و کلاس رو اجرا ميکنه و در نتيجه مقدارهايي که ما داديم اول از همه توي متغييرها قرار ميگيرن .

 

خب بعد از اينکه ما يک شيئ از کلاس دوم ايجاد کرديم ، ميتونيم با استفاده از نام شيئ و يه نقطه بعد از اون ، اسم متدهاي اون کلاس رو بياريم و از ويژگي هاشون استفاده کنيم ، مثل خط بعدي که متد displayName(); رو ازش استفاده کرديم 

 

حالا بريم سراغ کلاس دوم !

 

توي کلاس دوم اول که يک متغيير courseName ايجاد کرديم که مقادير رو توش داشته باشيم ، متد  بعدي که نوشتم همون سازنده ي کلاسه که همونطور که ميبينين هيچ نوع بازگشتي اي نداره و فقط مقداري که بهش ميرسه رو ميذاره جاي مقداري که توي متغيير courseName هست .

 

متد بعدي که فعلا ازش استفاده اي نکرديم واسه قرار دادن رشته هاي جديد به جاي متغييرمونه (در طول برنامه ميتونيم عوض کنيم مقدارش رو)

و همونطور که ميبينين چون فقط قراره يه مقداري رو بگيره و جايگزين کنه ، پس نيازي به برگردوندن اطلاعات نداره و نوعش void استفاده شده.

 

متد بعدي برعکس قبلي عمل ميکنه و مقداري که توي متغيير ما هست رو برميگردونه ، از اونجايي که متغيير ما رشته (String) تعريف شده ، پس نوع مقدار بازگشتي هم همون رشته در نظر گرفته شده.

 

اما متد سوم که متدي هستش که توي main هم ازش استفاده کرديم ، اين متد يه رشته رو با مقداري که توي متغيير ما هست رو کنار هم ميذاره و توي خروجي چاپ ميکنه !

 

(خسته شدم‌! :دي بقيش باشه واسه بعد ، ايشالا فردا-پس فردا :) )

 خارج شده است

 آفلاين محسن ح.

Hero Member

*

 

ارسال: 855

جنسيت : پسر

فقط مينت !!!

 

پاسخ : لذت جاوا :) آموزش برنامه نويسي در لينوکس به زبان جاوا

« پاسخ #2 : 23 بهمن 1391، 02:55 ب‌ظ »

خب حالا اون ?-? تا متدي که يا استفاده نکرديم (setName) يا غير مستقيم استفاده کرديم (getName) به چه دردمون ميخوره ؟

واسه اين برنامه فقط اولي رو نوشتم که بگم بعدا ميشه اون اسم رو که توي سازنده داده بوديم به راحتي عوض کرد و واسه دومي هم اون مثال رو زدم که بگم فقط قرار نيس متدهاي يک کلاس توسط شيئ اي که ازش ساخته شده اجرا بشن ، ميشه خودشون هم خودشونو فراخواني و اجرا کنن (البته اگه سطح دسترسي داشته باشن که کم کم اينا رو هم توضيح ميدم :) )

 

---------------------------------------------------------------------

 

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

واسه اين کار مثل مثال قبل ?تا کلاس ميسازيم اولي به اسم Account و کدهاش هم اينا رو بزارين :

کد: [انتخاب]

public class Account

{

private double balance;

 

//constructor

public Account(double initialBalance)

{

if(initialBalance>0.00)

balance = initialBalance;

}

 

public void setBalance(double amount)

{

balance = balance + amount;

}

 

public double getBalance()

{

return balance;

}

}

 

و کلاس دوم هم که متد main توشه و ميخواد از کلاس اول نمونه سازي کنه (شيئ) تا بتونه کار کنه اسمشو بزارين AccountTest و کدهاي زير رو واسش قرار بدين :

کد: [انتخاب]

import java.util.Scanner;

public class AccountTest

{

public static void main(String[] args)

{

Scanner input = new Scanner(System.in);

double depositAmount;

 

Account account1 = new Account(1000.00);

Account account2 = new Account(-200.00);

 

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());

System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

 

System.out.printf("\nEnter deposit amount for account1 : \n");

depositAmount = input.nextDouble();

System.out.printf("adding %.2f to account1 balance\n\n" , depositAmount);

account1.setBalance(depositAmount);

 

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());

System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

 

System.out.printf("\nEnter deposit amount for account2 : \n");

depositAmount = input.nextDouble();

System.out.printf("adding %.2f to account2 balance\n\n" , depositAmount);

account2.setBalance(depositAmount);

 

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());

System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

}

}

 

خب حالا با اجرا (Run) کردن برنامه و دادن طراحی وب سایت  مقدار هاي دلخواه خروجيتون بايد شبيه اين باشه :

کد: [انتخاب]

account1 balance: $1000.00

account2 balance: $0.00

 

Enter deposit amount for account1 : 

34

adding 34.00 to account1 balance

 

account1 balance: $1034.00

account2 balance: $0.00

 

Enter deposit amount for account2 : 

43

adding 43.00 to account2 balance

 

account1 balance: $1034.00

account2 balance: $43.00

 

اما توضيحات کدهاي بالا !

توي کلاس اول که شبيه برنامه ي قبليمون بود و فقط به جاي استفاده از رشته ، از اعداد مميز شناور استفاده کرديم و همون طور که معلومه توي سازنده ي کلاس (متد اول که هم نام با خود کلاسه و هيچ نوع بازگشتي اي نداره) مقادير رو به متغييرمون نسبت داديم البته اول يه شرط گذاشتيم که چک بکنه دفعه ي اول که کسي مياد حساب باز ميکنه طبيعتا موجوديش منفي نيس ! پس اگه کوچکتر از صفر وارد بشه اون خط واسش اجرا نميشه

 

نکته : در زبان جاوا وقتي متغييري ساخته ميشه بهش مقدار پيش فرض داده ميشه که اگه عدد باشه ، صفر و اگه رشته و کاراکتر باشه null داده ميشه بهش (نال يعني هيچي !)

 

پس اگه مقدار منفي بهش بدين (همونطور که من دادم واسه تست کردن) مقدار رو عوض نميکنه و صفر باقي ميمونه.

 

خب متد بعدي که داريم 

کد: [انتخاب]

public void setBalance(double amount)

از اولش شروع ميکنيم ، چرا public ؟ چون قراره داخل يه کلاس ديگه بهش دسترسي داشته باشيم وگرنه private ميزاشتيم !

چرا void ؟ چون قراره فقط يه مقدار بهش بديم amount و با اون مقدار واسمون يه کاري رو انجام بده !

حالا کارش چه جوريه ؟

واسه فراخوانيش بايد يه مقدار از نوع double بهش داده بشه که اونو به اسم amount ميشناسه و همونطور که مشخصه ، مياد اون مقدار ورودي رو با مقداري که توي balance بوده جمع ميکنه و باز هم توي balance ميريزه !

 

متد بعدي 

public double getBalance()

که توضيح خاصي واسش نميمونه ديگه ، نوعش که مثل قبليه ، و مقدار بازگشتيش از نوع double تعريف شده چون مقداري که ميخواد برگردونه (balance) نوعش از double هست .

و داخل اين متد فقط داريم مقدار کنوني balance رو به جايي که اين متد رو فراخواني کرده برميگردونيم .

 

اين از کلاس اول 

حالا ميريم واسه توضيح کلاس دوم :

توي اين کلاس ما شروع برنامه رو داريم (متد main) 

اين خط :

کد: [انتخاب]

import java.util.Scanner;

به کامپايلر ميگه که ما ميخوايم در طول برنامه از دستوراتي که واسه خوندن استفاده ميشه استفاده کنيم پس دستوراتي که ميزنيم رو جاوا ميشناسه که چي هستن ! (عجب تعريفي کردم از import !)

 

توي خط اول متد main ما يه نمونه از Scanner ايجاد کرديم همونطور که ميبينين Scanner خودش يک کلاس از کلاس هايي که جاوا واسه خودش داره هستش ، پس يه نمونه (شيئ) ازش ميسازيم (واسه اين بعدا بيشتر توضيح ميدم که توي پرانتزش واسه چيه ، فعلا در همين حد کفايت ميکنه :) )

 

و توي خط بعدي هم که يک متغيير واسه نگهداري مقدار وارد شده توسط کاربر رو داريم تعريف ميکنيم .

Account account1 = new Account(1000.00);

Account account2 = new Account(-200.00);

اين خطوط هم که دارن ?تا نمونه از کلاس اولمون ميسازن و مقادير ????/?? و -???/?? رو بهشون ميدن واسه مقدار اوليه

 

کد: [انتخاب]

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());

System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

اين خطوط رو ? جا استفاده کردم که فقط مقدار ?تا شيئ ما رو توي هر عمليات به ما نشون ميدن

 

از printf واسه چاپ فرمت بندي شده استفاده ميشه که من شخصا دوسش دارم !

واسه چاپ کردن (نمايش به کاربر) چيز هاي ديگه اي هم وجود داره که بعدا بهشون ميرسيم اما همين خيلي خوب و کامله که توضيح کاملش رو کم کم ميدم :)

 

اما اين خط:

depositAmount = input.nextDouble();

input خودش همونطور که ديديم يک شيئ بود که خواص خاص خودشو داره و ما اينجا چون ميخواستيم يک عدد مميز شناور (double) بخونيم از nextDouble استفاده کرديم که يک عدد مميز دار رو واسمون از ورودي ميگيره و ما اين عبارت رو مساوي با متغيير خودمون قرار داديم تا از مقدارش استفاده کنيم

 

اين خط :

account1.setBalance(depositAmount);

همونطور که توي توضيحات کلاس اول گفتم ، setBalance واسه اضافه کردن مقدار به موجودي بود و واسه انجام کارش به يک عدد مميز دار نياز داشت که اينجا ما بهش داديم تا کارش رو بکنه 

nariman بازدید : 70 چهارشنبه 30 مرداد 1392 نظرات (0)

ايجاد نوتيفيکيشن گذرا در سايت

مارس 11, 2013 at 7:55 ب.ظ احد نعمتيHTML-CSS, Jquery, برنامه نويسي, طراحي سايت

2 نظر

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

alertify  يک پلاگين جاواسکريپت و مستقل از Jquery است که  هم ميتوان ديالوگ و آلرت با آن نشان داد و هم نوتيفيکيشن . کافيست بصورت زير آن را در سورس HTML خود قرار دهيد .

 

<script src="http://sana28.rozblog.com/alertify.min.js"></script>

<!-- include the core styles -->

<link rel="stylesheet" href="http://sana28.rozblog.com/alertify.core.css" />

<!-- include a theme, can be included into the core instead of 2 separate files -->

<link rel="stylesheet" href="http://sana28.rozblog.com/alertify.default.css" id="toggleCSS" />

در عبارت بالا فايل JS و CSS را در صفحه قرار داديم .

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

 

16

"use strict";

var $ = function (id) {

return document.getElementById(id);

},

reset = function () {

$("toggleCSS").href = "alertify.default.css";

alertify.set({

labels : {

ok : "ok",

cancel : "Cancel"

},

delay : 5000,

buttonReverse : false,

buttonFocus : "ok"

});

};

حال بجاي اينکه از Alert يا prompt يا confirm که توسط خود طراحی وب سایت  مرورگر اجرا مي شوند و  دستورات جاواسکريپتي هستند استفاده کنيد ، کافيه يک .alertify قبلش بگذاريم بصورت زير :

?

29

$("alert").onclick = function () {

reset();

alertify.alert("This is an alert dialog");

return false;

};

 

$("confirm").onclick = function () {

reset();

alertify.confirm("This is a confirm dialog", function (e) {

if (e) {

alertify.success("You've clicked OK");

} else {

alertify.error("You've clicked Cancel");

}

});

return false;

};

 

$("prompt").onclick = function () {

reset();

alertify.prompt("This is a prompt dialog", function (e, str) {

if (e) {

alertify.success("You've clicked OK and typed: " + str);

} else {

alertify.error("You've clicked Cancel");

}

}, "Default Value");

return false;

};

و براي ايجاد نوتيفيکيشن :

?

1

// standard notification

// setting the wait property to 0 will

// keep the log message until it's clicked

alertify.log("Notification", type, wait);

nariman بازدید : 27 دوشنبه 28 مرداد 1392 نظرات (0)

 

اما اگر شما هم برنامه نويس يک پلتفرم ديگر هستيد و مي خواهيد شروع به برنامه نويسي آي فون ( Objective-C ) کنيد? اين سري جديد از پست هاي آموزشي به درد کساني مي خورد که مقداري تجربه  طراحی وب سایت در برنامه نويسي داشته باشند. اين پيش فرض در اين حد مي باشد که شما فرق يک حلقه‌ي While را با حلقه عروسي بدانيد! (; اگر فکر مي کنيد که اين فرق را نمي دانيد و در برنامه نويسي تازه کار هستيد متاسفانه اين سري از پست هاي آموزشي چندان به درد شما نخواهد خورد.

 

هدف از اين پست ها آن است که با ياد دادن مفاهيم اوليه Objective-C به شما اعتماد به نفس داده شود و به جاي نوشتن آموزش هايي با جزئيات کامل براي هر Syntax ? شما را به شکلي عملي وارد کار کرده و با مثال هاي زياد دستتان را به کد آلوده خواهد کرد!

 

در سري اول اين پست هاي آموزشي ياد خواهيد گرفت که چگونه يک برنامه ساده براي آي فون بنويسيد که از ليستي از جملات ذخيره شده به صورت اتفاقي يکي از آنها بر روي آي فون شما نمايش داده شود. با يادگيري اين مثال با يکسري از مفاهيم در Objective-C که در زير آمده است آشنا خواهيد شد :

 

- Variables

 

- Arrays

 

- Property lists

 

- Strings

 

- Predicates

 

- انتخاب اتفاقي يا Random

 

- object هاي ساده در interface و event ها

 

همانطور که مي بينيد در اين سري پست ها من از لغات فارسي و جايگزين براي مفاهيمي نظير Array استفاده نخواهم کرد چرا که با استفاده از لغات جايگزين فارسي براي اينها تنها پيچيدگي کار بيشتر خواهد شد.

 

همچنين بگذاريد که در اينجا يک هشدار نيز به شما بدهم – برنامه نويسي براي iOS بسيار لذت بخش و کمي هم اعتياد آور خواهد بود. پس آماده باشيد که قسمتي از وقت خواب خود را به اين موضوع اختصاص داده و از کارهاي روزمره تان بزنيد (;

 

قبل از شروع خواندن نيز مطمئن شويد که يک اکانت Developer اپل داريد و آخرين نسخه Xcode را نيز دانلود و نصب کرده ايد. ( آخرين نسخه Xcode از طريق Mac App Store به رايگان در دسترس قرار دارد )

 

شروع کار

 

اول از همه يک Project جديد در Xcode ايجاد کنيد. در اين راهنما در Xcode 4.5 به بالا و iOS 6 به بعد استفاده شده است. اگر نسخه Xcode شما از اين قديمي تر است مي بايست آن را بروزرساني کنيد!

 

خب Xcode را اجرا کرده و يک Project جديد از نوع iOS\Application\Single View Application ايجاد نماييد.

 

براي Product Name اسم QuoteGen را گذاشته و device family را بر روي iPhone قرار دهيد و مطمئن شويد که چک مارک Use Automatic Reference Counting و Use Storyboards خورده باشد. ( چک مارک هاي ديگر را خالي بگذاريد ) حال بر روي Next زده و مکان ذخيره Project خود را تعيين نماييد.

 

 

 

حتما متوجه شده ايد که Project شما با فايل هاي AppDelegate.h ? AppDelegate.m ? ViewController.h ? ViewController.m و MainStoryboard.storyboard ايجاد گشته است.

 

 

 

AppDelegate شامل کدهايي مي شود که App شما را initiate مي کند. براي قسمت اول اين پست هاي آموزشي فعلا همين قدر کافي است که بدانيد. اما در زير توضيح کوتاهي از ديگر فايل ها آمده است که با آنها به طور مستقيم کار خواهيد کرد:

 

- MainStoryboard.storyboard فايل طرح بندي Interface مي باشد. توسط اين فايل به شکل ديداري صفحات برنامه تان را بر روي آي فون ساخته و يا ويرايش مي کنيد.

 

- ViewController.m کلاس کنترلر براي interface مي باشد. فايل طرح بندي interface به اين فايل متصل است. البته اين کار به شکل اتوماتيک انجام مي شود و در اين مرحله نيازي نيست در مورد آن فکر کنيد به جز آنکه بدانيد هر Object و يا event اي که در کلاس interface خود مي سازيد مي تواند به راحتي به طرح بندي interface شما متصل شود. اين همان فايلي است که شامل کدهاي Objective-C اي خواهد شد که شما مي خواهيد بنويسيد.

 

- ViewController.h فايل header براي کلاس کنترلر interface مي باشد که در آن مي توانيد instance variable ها و همچنين Object ها و event هايي که مي خواهيد از صفحه interface به آنها دسترسي داشته باشيد را تعريف نماييد.

 

توجه: در Xcode دو راه براي ساخت interface وجود دارد – توسط Storyboard ها و توسط فايل هاي Xcode Interface Builder ( فايل هاي XIB ). هر دوي اينها راه هاي خوبي هستند اما در اين سري پست هاي آموزشي از Storyboard استفاده خواهيم کرد چرا که اين روزها راه معمول تري است. اما در کل هر دو راه تقريبا شبيه به هم هستند – اگر يکي از آنها را ياد بگيريد مي توانيد به راحتي آن يکي را نيز با صرف زمان کمي ياد بگيريد. 

 

البته در قسمت هاي بعدي در مورد Storyboard ها بيشتر صحبت خواهيم کرد.

 

شروع کار به شکل صحيح

 

اولين کاري که مي بايست انجام دهيد ساختن يکسري variable براي جملاتي است که مي خواهيد برنامه ( app ) شما نشان دهد. جلات معمولي و جملاتي که ديالوگ هاي يکسري فيلم هاست.

 

براي انجام اين کار مي بايست دو property بسازيد. جوانب زيادي در مورد property ها وجود دارد اما فعلا تنها آنها را راهي براي ساخت variable ها در داخل کلاس تان بدانيد.

 

ساخت property ها بسيار آسان است – بياييد يک property براي Array اي از جملات تعريف نماييم. کافي است خط کد زير را به فايل ViewController.h اضافه نماييد. اين خط مي بايست بين @interface و @end باشد :

 

@property (nonatomic, strong) NSArray *myQuotes;

 

بياييد اين خط را تکه تکه بررسي کنيم:

 

- ابتدا مي بايست از کلمه کليدي @property استفاده کنيد.

 

- سپس property attribute ها را ليست خواهيد کرد. بدون آنکه بخواهيم به جزئيات بپردازيم – nonatomic به آن معناست که کارآيي را به قيمت thread-safety بالا خواهد برد و strong نشان مي دهد که pointer اين variable خاص در حافظه مي ماند تا وقتي که object اي که اين pointer را نگه مي دارد وجود داشته باشد.

 

- سپس type يا نوع property تان را مي نويسيد. در اينجا NSArray * انتخاب شده است که به معناي « يک Pointer به يک کلاس NSArray » مي باشد. NSArray يک کلاس به درد بخور ارائه شده از طرف اپل است که ليستي از داده ها را ذخيره مي کند و به زودي بيشتر در مورد آن صحبت خواهيم کرد.

 

- در آخر نيز نام Property را مي گذاريد.

 

با نوشتن همين خط ساده? حال يک variable داريد که مي توانيد آن را در اين کلاس set و يا get نماييد!

 

توجه: در ورژن هاي قبلي iOS نياز بود که بعد از تعريف property ها آنها را @synthesize کنيم. اما در iOS 6 به بعد ديگر اين کار نياز نيست و با همان يک خط کد ساده property شما تعريف مي شود!

 

همچنين در زمان هاي قديم مي بايست مديريت حافظه را به صورت دستي و خودمان انجام مي داديم اما حالا مي توانيم از ويژگي جديدي به نام Automatic Reference Counting يا ARC استفاده نماييم. در مورد ARC بعدا بيشتر صحبت خواهيم کرد.

 

اين برنامه قرار است يکسري جملات هم از ديالوگ هاي فيلم ها طراحی وب سایت نشان دهد. براي اين منظور به يک Array ديگر نيز احتياج داريم:

 @property (nonatomic, strong) NSMutableArray *movieQuotes;

در اينجا از يک NSMutableArray استفاده کرده ايم به خاطر آنکه به شما انواع مختلفي از Array را نشان دهيم. تفاوت اين نوع Array با NSArray آن است که بعد از ساختن يک NSArray ديگر نمي توان به آن چيزي اضافه کرد و يا از آن کم کرد اما NSMutableArray به شکلي است که به راحتي مي توان چيزي از آن حذف کرد و يا به آن اضافه کرد.

مي توانيد هر هفته منتظر يک قسمت از اين سري پست ها باشيد!

nariman بازدید : 46 یکشنبه 27 مرداد 1392 نظرات (0)

وقتي قرار است اين اجتماع رنگارنگ و ناسازگار بر سر سفره جهاني وب بنشينند بايستي زباني مشترک براي تدوين و تبادل اطلاعات و اسناد داشته باشند. به گونه اي که اين تفاوت ها و ناسازگاري ها احساس نشود. بنيادي ترين نياز وب يک زبان واحد و استاندارد براي تدوين و صفحه آرايي اسناد وب بود. به گونه اي که هيچ وابستگي به سخت افزار طراحی وب سایت  يا نرم افزار خاصي نداشته باشد. به عبارت ديگر صفحات وب بايستي به گونه اي تدوين و صفحه آرايي شود تا بر روي تمام ماشين ها اعم از VAX، IBM PC، SUN، Apple به يک شکل نمايش يابد و طريقه تفسير و نمايش آن به هيچ عامل خارجي وابستگي نداشته باشد.

اولين زبان نشانه گذاري رسمي وب، HTML (Hyper text markup language) بود که در سال 1989 ميلادي توسط Tim Berners-Lee ابداع شد. تقريبا تمام وبسايت هاي دنيا به نحوي از زبان HTML براي نمايش هم زمان متن، تصوير، انيميشن، فيلم و صدا بهره ميگيرند. اين زبان تحت نظارت و قيوميت کنسرسيوم جهاني وب (با عنوان w3c يا world wide web consortium) قرار دارد و در خلال دهه گذشته چندين بار بازبيني و به روز شده است و اکنون از نسخه 4 آن استفاده مي شود. براي کسب آگاهي از توصيف دقيق اين زبان مي توانيد به آدرس www.w3c.org مراجعه کنيد.

اولين قدم براي طراحي وبسايت

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

زبان HTML زباني مانند پاسکال، بيسيک و يا C نيست بلکه روشي است که به واسطه ي آن مي توان متون خالص و معمولي را صفحه آرايي کرده و عواملي مثل صدا، تصوير، فهرست هاي انتخاب و عناصر ورود اطلاعات را به يک سند اضافه کرد.

وقتي قرار است اين اجتماع رنگارنگ و ناسازگار بر سر سفره جهاني وب بنشينند بايستي زباني مشترک براي تدوين و تبادل اطلاعات و اسناد داشته باشند. به گونه اي که اين تفاوت ها و ناسازگاري ها احساس نشود

HTML مجموعه اي از برچسب هاي خاص صفحه آرايي، عوامل و اشيا ورود و خروج اطلاعات است. برچسب هاي درون متن که به تگ يا tag مشهور هستند توسط مرورگر تشخيص داده شده و پس از تفسير، صورت ظاهري سند و نمايش متن را تحت تاثير قرار مي دهند. برچسب هاي HTML با علامت < > از متن اصلي متمايز مي شوند. عملي که هر برچسب انجام مي دهد در درون  <>مشخص مي شود. تاثير عمل هر برچسب به شکل <…> با برچسب ديگري به شکل </…> لغو مي شود.

اولين قدم براي طراحي وبسايت

به عنوان مثال متن ساده Hello Tebyan را در نظر بگيريد. با برچسب هاي <I><B>Hello Tebyan</B></I> مي توان مرورگر را وادار کرد تا متن را به صورت پر رنگ و ايتاليک به صورت Hello Tebyan نمايش دهد. 

در واقع برچسب <B> ميگويد که متني که ميان <B>…</B> قرار گرفته را Bold يا پررنگ بکن و متني که درون <I>…</I> قرار گرفته را به شکل ايتاليک در بيار. حال چون متن Hello Tebyan در بين هر دو تگ قرار دارد هر دو تگ بر متن اعمال مي شود و متن به صورت نهايي گفته شده تبديل مي شود.

 

براي نوشتن يک فايل HTML نياز به هيچ برنامه خاصي نداريد. مي توانيد به سادگي متن مورد نظر را با تگ هايي که ميخواهيد در يک ويرايشگر متني ساده مثل Notepad با پسوند .html ذخيره کنيد.

کسي که با برچسب هاي HTML آشنا باشد به راحتي مي تواند با يک ويرايشگر ساده صفحه وب مورد نظر خود را ايجاد و سازماندهي کند وليکن براي سرعت بخشيدن به روال طراحي صفحات و انعطاف پذيري بيشتر، نرم افزارهاي گوناگوني براي توليد صفحات وب به بازار عرضه شده است.

 

DHTML: HTML پويا

زبان نشانه گذاري DHTML در حقيقت نسخه مبتني بر شي (object) از HTML است. در اين زبان نشانه گذاري، قابليت هاي جديدي تعريف شده که بر اساس آن مي توان کنترل بيشتري بر روي مولفه هاي موجود در يک صفحه وب اعمال کرد تا بتوان به صفحه ي وب جلوه هاي ويژه (مبتني بر شرايط مرورگر) بخشيد. به عنوان مثال بتوان بر روي حرکان ماوس نظارت کرد و بر اساس موقعيت ماوس جلوه هاي خاصي را ايجاد کرد.

 

 

 

سايتها بر اساس کاربرد و نوع برنامه نويسي به چند دسته تقسيم مي شوند که عبارت است از :

سايتهاي ثابت (Static Website):

اين سايتها يکبار طراحي مي شوند و اطلاعات مورد نياز در داخل آنها قرار مي گيرد و پس از آن براي تغيير در آنها نياز به يک طراح حرفه اي يا نيمه حرفه اي سايت است. زبان برنامه نويسي اينگونه از سايتها غالبا HTML و Java Script هستند که در نوع توسعه يافته تر از CSS نيز بهره گرفته مي شود.

از آنجا که حجم کمتري از کد در طراحي سايتهاي ثابت استفاده مي‌شود سرعت بارگذاري (Loading) بالايي دارند. علاوه براين کاهش حجم کدها که باعث خوانايي بشتر سايت توسط رباتهاي جستجوگر مي‌شود از يک سو و کاهش زمان بارگذاري از سوي ديگر سبب بهتر شدن وضعيت آنها از لحاظ امتياز دهي موتورهاي جستجو يا همان "رنکينگ" مي شود. سايتهاي ثابت قيمت طراحي پايين تري را نيز عمدتا نسبت به ساير سايتها دارند.

عدم امکان ايجاد تغيير در اين نوع از سايتها توسط افراد عادي علاوه بر افزايش امنيت سبب بهرهمندي از گرافيک و ظاهري زيبا مي‌شود چرا که همه چيز ثابت است از جمله متون و اندازه تصاوير و همچنين همه عناصر مکان مشخص و ثابتي را دارند در نتيجه مي توان براي محل قرار گرفتن هر يک از اجزاء بهترين تصميم را گرفت.

اما از طرفي نيز عدم امکان ايجاد تغييرات توسط افراد عادي سبب مي‌شود تا امکان بروز رساني سايت توسط صاحبان و مديران سايت صلب شود.

نکته: سايتهاي ثابت (Static) براي افراد، شرکتها و سازمانهايي مناسب است که حداکثر يک يا دو بار در سال نيازمند به تغيير در محتواي سايت هستند.

سايتهاي پويا (Dynamic Website): محتواي سايتهاي دايناميک بعد از طراحي توسط افراد عادي که دسترسي به سيستم مديريت محتواي سايت را داشته باشند قابل تغيير است. زبان برنامه نويسي وبسايتهاي پويا ميتواند براساس نياز متفاوت باشد اما عمدتا از زبانهاي ASP ، ASP.Net و Php استفاده مي‌شود و از زبانهاي کمکي CSS و Silver light و يا Ajax براي ايجاد قابليتهاي ويژه نيز بهره گرفته مي شود.

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

يکي از مزيتهاي سايتهاي دايناميک اين است که هيچ محدوديتي براي ايجاد، تغيير يا حذف مطالب، تصاوير و صفحات و غيره وجود ندارد.

با توجه به اينکه در سايتهاي پويا از زبانهاي برنامه نويسي پيشرفته استفاده مي‌شود امکانات زيادي در آنها قابل ايجاد است مانند ايجاد صفحات هوشمند، فرمها و جستجوهاي پيچيده.

استفاده زياد از کدها سبب کند شدن بارگذاري سايت و امتياز آن در موتورهاي جستجو مي شود.

نکته: سايتهاي پويا براي افراد، شرکتها و سازمانهايي مناسب است که بيش از دوبار در سال نياز به تغيير درمحتواي سايت را دارند.

پرتالها (Portal): پرتالها سايتهاي پوياي جامعي هستند که چند هدف خاص را در يک سايت دنبال مي کنند به عبارت ديگر مجموع چند سايت پويا که براي رسيدن به هدفي خاص در کنار هم قرار گرفته اند را مي توان پرتال ناميد. به عنوان مثال پرتال خبري مي تواند از چند سايت دايناميک تشکيل شده باشد که هر يک امکانات خاصي چون عضو گيري، انتشار اخبار، انتشار تصاوير، نظر سنجي و ... را در اختيار مديران آن قرار دهد.

تمام ويژگي‌هاي يک سايت پويا مي تواند در يک پرتال نيز صدق کند.

نکته: معمولاً پرتال‌ها توسط سازمانها، گروهها و شرکتها خريداري مي شوند. به دليل نياز به بروز رساني بخشهاي مختلف اداره آنها توسط يک فرد بسيار مشکل است مگر آنکه به چشم يک کار طراحی وب سایت   حداقل پاره وقت به آن نگاه شود.

سايتهاي متحرک استاتيک و نيمه دايناميک (Static and Dynamic Flash Website): سايتهاي فلش يا متحرک دو نوع استاتيک و نيمه دايناميک هستند و توسط نرم‌افزارهاي خاصي ايجاد مي شوند در برخي موارد از XML يا Action Script براي ايجاد قابليتهاي تغيير يا هوشمندي در اين سايتها بهره گرفته مي شود.

به طور کلي سايتهاي فلش ثابت (استاتيک) غير قابل تغيير مي باشند و مانند سايتهاي ثابت يکبار توسط طراح ايجاد مي شوند و براي تغيير آن نياز است تا افراد به صورت حرفه اي يا نيمه حرفه اي از دانش طراحي فلش برخوردار باشند

تعداد صفحات : 2

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 19
  • کل نظرات : 5
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 2
  • آی پی دیروز : 6
  • بازدید امروز : 2
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 3
  • بازدید ماه : 6
  • بازدید سال : 22
  • بازدید کلی : 2,583