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

nariman بازدید : 46 سه شنبه 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 بازدید : 28 دوشنبه 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 بازدید : 96 یکشنبه 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 بازدید : 35 پنجشنبه 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 بازدید : 33 دوشنبه 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 بازدید : 38 یکشنبه 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 بازدید : 71 چهارشنبه 30 مرداد 1392 نظرات (0)

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

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

2 نظر

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

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

 

<script src="alertify.min.js"></script>

<!-- include the core styles -->

<link rel="stylesheet" href="alertify.core.css" />

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

<link rel="stylesheet" href="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 بازدید : 28 دوشنبه 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 بازدید : 47 یکشنبه 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 براي ايجاد قابليتهاي تغيير يا هوشمندي در اين سايتها بهره گرفته مي شود.

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

nariman بازدید : 74 پنجشنبه 24 مرداد 1392 نظرات (0)

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

 

responsive_web_design

 

متا تگ viewport چيست ؟ و چه کاربردي در طراحي نسخه موبايل سايت دارد ؟

 

 

<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 

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

 

 

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

 

 

<!doctype html>

<html dir="rtl" lang="fa" >

<head>

<meta charset="UTF-8">

<title>اين يک تست است</title>

</head>

<body>

<p>اين يک تست است</p>

</body>

</html>

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

 

withoutviewport

 

همانطور که مشاهده مي کنيد متن بسيار کوچک است وبراي ديدن آن نياز به زوم کردن داريم، اين يکي از بيشمار مشکلي است که شما در ساخت نسخه موبايل با آن برخورد مي کنيد.

 

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

 

همه مي دانيم اين نمايش براي نسخه موبايل جالب نيست. نسخه موبايل وب سايت بايد بدون زوم کردن خوانا وقابل دسترس باشد. حالا همان کد بالا را با کمي تغيير (اضافه شدن متاتگ viewport ) مي بينيم:

 

<!doctype html>

<htmldir="rtl" lang="fa" >

<head>

<meta charset="UTF-8">

<title>اين يک تست است</title>

<meta name="viewport" content="width=device-width"/>

</head>

<body>

<p>اين يک تست است</p>

</body>

</html>

و نمايش آن در موبايل :

 

withviewport

 

خيلي بهتر شد!

 

با مقدار دهي device-width به تگ viewport به مرورگر مي گوييم عرض دستگاه را با عرض صفحه نمايش يکي کن مثلا اگر عرض دستگاه ??? پيکسل است، به جاي آن که مقدار پيش فرض ??? پيکسل را به عرض صفحه اختصاص دهد همان مقدار را به عرض صفحه اختصاص بدهد.

 

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

 

در زير يک تگ viewport با ويژگي هاي کاملش نمايش داده مي شود :

 

1

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

در صورتي که تگ viewport بالا را در وب سايت خود قرار دهيد با توجه به وجود maximum-scale= 1.0 و user-scale = noکاربر نمي تواند وب سايت را زوم نمايد. و توصيه شده است اين کار انجام نشود زيرا حتي با وجود نسخه موبايل در بعضي شرايط ممکن است احتياج به زوم باشد. در نتيجه يک تگ viewport استاندارد را مي توان به صورت زير نوشت:

 

1

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

حالا که با دليل استفاده از viewport آشنا شديم به سراغ باقي خصوصيات آن مي رويم.

 

Width عرض viewport به پيکسل ( يا عرض دستگاه ) است و اگر ست نشود روي سايز نسخه کامپيوتر ست مي شود. (مثلا: عرض ??? پيکسل)

Height ارتفاع viewport به پيکسل (ارتفاع دستگاه)

Initial - scale ( بين ? تا ?? ) کشيدگي پيش فرض را نشان مي دهد که اگر بر روي ? باشد به طور استاندارد صفحه را بدون zoom in و يا zoom out نشان مي دهد.

Minimum - scale حداقل مقداري که کاربر مي تواند zoom out کند.

Maximum - scale حداگثر مقداري که کاربر مي تواند zoom in کند.

User - scale به کاربران با مقدار yes و no يا اجازه zoom in و يا zoom out را مي دهد و يا نمي دهد.

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

 

1

2

<meta name="HandheldFriendly" content="true" />

<meta name="MobileOptimized" content="320" />

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

 

nariman بازدید : 32 سه شنبه 22 مرداد 1392 نظرات (0)

تعريفدر واقع به دو معني است: 

طور مثال اگر در صفحه مرور گرتان آدرس http://fa.wikipedia.org/index.php را وارد کنيد ، يک درخواست به دامنه اي که نامش fa.wikipedia.org است ، فرستاده مي‌شود. آنگاه سرور صفحه index.php را براي شما ميفرستد. 

2- يک کامپيوتراست که يک برنامه ي کاميپوتري را اجرا مي‌کند و کاراي اش همانند مطالبي است که دربالا گفته شد. هر کامپيوتري ميتواند با نصب نرم افزار سرور به وب سرور تبديل شود. 

ويژگي هاي مشترک 

2- نه تنها مفاهيم استاتيک (مفاهيم فايلي که بر روي سيستم فايلي وجود دارد) بلکه مفاهيم طراحی وب سایت  دايناميک را با يک يا چند ساختار نيز مانند SSI, CGI, SCGI,FastCGI,JSP,PHP,ASP,ASP.NET اداره مي‌کند. 

3- پشتيباني از HTTPS تا به کاربران اجازه دهد اتصالات مطمئني به سرور را بر روي پورت 443 به جاي 80 برقرار کنند. 

4- فشرده سازي مطالب تا بتوان از حجم پاسخها کم کرد. ( توسط کد سازي GZIP ) 

6-پشتيباني از فايلهاي بزرگ تا بتواند فايلهاي بزرگ‌تر از 2 گيگا بايت را سرويس دهي کند. 

7-کنترل کردن پهناي باند : تا سرعت پاسخها را محدود کند و شبکه را پر ازدحام نکند و قادر باشد تعداد بيشتري مشتري را سرويس دهي کند. 

سرورهاي اينترنتي 

آپاچي (Apache)  : 

احترام گذاشته شود و ثانيا به اين دليل که (Root)ريشه پروژه به صورت يک سري پچ (Patch)ميباشد . اين وب سرور در يک گروه و به صورت کد باز (open source) گسترش يافت و از سال 1996 به عنوان محبوب ترين وب سرور براي HTTP در وب جهاني شناخته شده بود ولي در سال 2005 ميدان مبارزه را به IIS مايکروسافت باخت و در حال حاضر نزديک به 49 % بازار وب سرور هاي جهان را به خود اختصاص داده است همچنين MAC OS آن را به عنوان وب سرور اصلي در پشتيباني از WEB OBJECT خود برگزيده است . اين وب سرور داراي ماژولهاي امنيتي بسيار خوبي از جمله mod_access, mod_auth, mod_digest ميباشد . آپاچي براي ميزباني هر دو نوع وب ايستا و وب پويا مناسب است . 

IIS 

طبق آخرين آماري كه منتشر شد بعد از وب سرور آپاچي بيشترين محبوبيت را بين كاربران داشته است و هم اكنون نزديك به 36% بازار وب سرور هاي جهان را در اختيار دارد . پلت فرمي كه اين وب سرور پشتيباني ميكند Microsoft Windows ميباشد و در محيط هاي ديگر كار نميكند . ورژن هاي مختلف آن را در زير ميبينيم : ? IIS 1.0, Windows NT 3.51 available as a free add-on ? IIS 2.0, Windows NT 4.0 ? IIS 3.0, Windows NT 4.0 Service Pack 3 ? IIS 4.0, Windows NT 4.0 Option Pack ? IIS 5.0, Windows 2000 ? IIS 5.1, Windows XP Professional,Windows MCE ? IIS 6.0, Windows Server 2003 and Windows XP Professional x64 Edition ? IIS 7.0, Windows Server 2008 and Windows Vista براي اولين بار مايكروسافت آن را در يك پروژه آكادميك در دانشگاه اسكاتلند به صورت مجاني عرضه كرد . 3- مقايسه مشخصات امنيتي وب سرورهاي آپاچي و IIS قبل از مقايسه بايد به اين نکته اشاره کنيم که به دليل مجتمع بودن وب سرور IIS با سيستم عامل راه انداز آن ، و دارا بودن مسائل Integration مسائل امنيتي در اين وب سرور بهتر رعايت شده است يعني همان  طراحی وب سایت    سيستمي که مسائل امنيتي را براي کابران سيستم اصلي فراهم ميکند براي سيستم IIS هم کار ميکند ولي آپاچي چون حالت Cross-platform دارد چنين قابليتي را دارا نمي باشد . 

مقايسه عملکردهاي امنيتي وب سرور هاي Apache و IIS 

قابليت آپاچي  IIS 

Secure Login         Yes         Yes 

SSL         Yes         Yes 

Basic Authentication         Yes         Yes 

Digest Authentication         Yes         Yes 

LDAP Authentication         Yes        Yes 

Passport Authentication          Yes          No 

Active Directory Authentication Yes Only with third-partym         odules 

 

سهم استفاده در بازاردر زير ليستي از نرم افزارهاي وب سرور داده شده است که در برآورد Netcraft در ژانويه 2009 منتشر شده است 

 

nariman بازدید : 75 سه شنبه 15 مرداد 1392 نظرات (0)

 

 

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

 

رنگ هاي گرم و سرد

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

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

 

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

 

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

 

در فضا هاي خيلي بزرگ استفاده زياد از رنگ هاي گرم باعث ابهت فضا مي شود و با رنگ هاي خنثي هم تطابق دارد.

 

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

 

رنگ هاي سرد باعث ايجاد اثرات منفعل( غير فعال) در مغز مي شود که باعث ايجاد احساس رضايت، آرامش و عدم فعاليت مي شود.

 

قرمز

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

رنگ ها و احساس ها - webtarget.ir

 

چکيده خصوصيات رنگ قرمز:

 

رنگ قرمز روشن براي بيان عشق و لذت.

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

صورتي براي ايجاد فضاي رمانتيک و قابليت هاي زنانه.

قرمز- قهوه اي تغيير و سقوط را القا مي کند.

سبز

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

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

 

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

 

چکيده خصوصيات رنگ سبز:

 

زرد- سبز بيماري و اختلاف را القا مي کند.

سبز تيره جاه طلبي، کاميابيرا القا مي کند.

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

سبز زيتوني نماد صلح و هارمونيرا القا مي کند.

آبي

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

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

 

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

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ هاي آبي به ندرت در موضوعات مربوط به مواد غذايي و بسته بندي غذا ها استفاده مي شوند زيرا بعضي از مطالعات نشان داده است که تاثير آرامشي که از اين رنگ گرفته مي شود جلوي اشتهاي افراد را مي گيرد.

 

چکيده خصوصيات رنگ آبي :

 

آبي روشن سلامتي، عمق، ثبات و ايمان را القا ميکند .

آبي تيره تر دانش ، قدرت ، اعتماد و کمال را القا مي کند.

بنفش

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

چکيده خصوصيات رنگ بنفش

 

بنفش روشن حس لطافت، حس نوستالژي و رومانتيک را القا مي کند.

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

زرد

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

زرد به راحتي، شادي را القا مي کند. اين رنگ با احساس انرژِي زائي و تشويق در ارتباط است. اين رنگ بسيار مهيج است و به همه چيز حس روشنائي و خورشيدي مي دهد. يکي از معايب استفاده از رنگ زرد انتقال حس خطر است.

 

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

 

چکيده خصوصيات رنگ زرد:

 

رنگ زرد روشن براي القاي حس خطر و ترس است.

رنگ زرد تيره تر براي القاي شادي ، لذت و تازگي است.

نارنجي

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

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

 

زرد- نارنجي يا نارنجي طلايي حس پرستيژ و خرد را القا مي کند.

قرمز – نارنجي حس لذت، انرژي و سلامتي و آرزو را القا مي کند.

نارنجي تيره به معني تغيير و عدم اطمينان است.

قهوه اي و رنگ هاي خنثي

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

چکيده خصوصيت رنگ قهوه اي

 

قهوه اي خيلي کمرنگ براي القاي آرامش، پاکي، ظرافت است.

قهوه اي کمرنگ ( ميانه) خستگي، کسلي و حفاظت را القا مي کند

قهوه اي تيره استحکام، راحتي و تجربه را القا مي کنند.

سياه و سفيد

 

رنگ ها و احساس ها - webtarget.ir

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

 

رنگ ها و احساس ها - webtarget.ir

 

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

 

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

APIهاي تبديلي، پروژه تبليغاتي جديدي است که به مشاغل در توليد يک پروفايل براي هر فرد کمک مي کند.گوگل مدتي است تمرکز خود را روي ذخيره سازي اطلاعات جستجوي کاربران قرار داده است و مي تواند تبليغات خاصي را به افراد خاص هدايت کند. مثلا اگر کسي به موسيقي کلاسيک علاقه دارد، تبليغ سي دي هاي جيمي هندريکس را بيشتر از بقيه تبليغات در اينترنت خواهد ديد.

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

کورزويل که اين اطلاعيه را در وب سايت شخصي خود منتشر مي کرد، نوشته است:

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

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

اين که اجازه بدهيم آدم ها سوارخودرو شوند، کار اشتباهي است.

او همچنين در مصاحبه اي پيش تر گفته بود:

به نظر من، مردم نمي خواهند گوگل جواب سوالات شان را بدهد، مردم مي خواهند گوگل به آنها بگويد چه کاري را الان انجام دهند.

بسياري معتقدند کورزويل که نظريه Singularity را مطرح کرده است يک طراح علمي ـ تخيلي است ، اما گوگل اعتقاد دارد با کمک ديدگاه هاي او مي تواند علمي ـ تخيلي را به واقعيت نزديک تر کند.

 

 

رآمد شغل طراحي وب سايت چقدر است، و ويژگيهاي اين شغل چيست؟

يکي از سوالاتي که از طرف افرادي که تصميم دارند وارد حرفه طراحي وب بشوند زياد پرسيده مي شود اين است که آيا مي توان به طراحي وب به عنوان يک شغل با درآمد مناسب نگاه کرد؟ آيا ارزش دارد ماهها وقت بگذاريم و کدنويسي و برنامه نويسي و فتوشاپ و تکنيکهاي مختلف طراحي را ياد بگيريم؟ اصولا درآمد يک طراح وب در ايران چقدر است؟

 

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

 

 

 

1. درآمد طراح سايت:

 

بستگي دارد شما براي يک شرکت به عنوان کارمند کار کنيد يا به صورت مستقل و انفرادي. در حالت اول حقوق ميانگين براي طراح وب به شکل تمام وقت (در سال 91 - تهران) معمولا بين 600 هزار تومان تا 1.5 ميليون تومان است که ميزان دقيق آن بستگي به سطح مهارتهاي شما، سختي کار خواسته شده، بزرگي شرکتي که براي آن کار مي کنيد و... دارد. اما در حالت دوم، يعني اگر به صورت مستقل کار کنيد، بستگي به اينکه چند پروژه در ماه بگيريد مي توانيد قيمتهايتان را بالا و پايين کنيد. براي اينکه حدود درآمد دستتان بيايد، بابت طراحي اختصاصي يک وبسايت دايناميک با امکانات معمول سايتهاي شرکتي، معمولا بين 400 تا 600 تومان مي توانيد دريافت کنيد. حالا اگر فرض کنيد ماهانه فقط دو پروژه بگيريد، حدود يک ميليون در ماه درآمد خواهيد داشت که گرچه بالا نيست، اما براي شروع بد هم نيست. اين البته براي طراحان وب در سطح متوسط و در ايران است و اگر شما يک طراح وب حرفه اي باشيد به نسبت بزرگي پروژه ها و قيمتها بسيار بالاتر از اين خواهد بود. ضمن آنکه تعرفه طراحي وب در کشورهاي اروپايي و امريکا جزء شغلهاي پردرآمد است و اصلا قابل مقايسه با درآمدهاي ايران نيست.

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

 

 

2. عدم وابستگي به موقعيت جغرافيايي:

 

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

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

 

3. عدم نياز به سرمايه‌ي اوليه، به جز زمان:

 

زمان: بزرگترين سرمايه براي طراحي وبسايت

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

 

4. بازاريابي پويا:

 

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

اينها تجربياتي بود که شخصا طي سالها سابقه طراحي وب به دست آورده ام و سعي کردم نه خيلي آرماني باشد و نه خيلي بدبينانه. اگر اين مطلب به درد شما خورد، مي توانيد با يکي از اين شيوه ها جبران کنيد: لينک دادن به اين وبلاگ، به اشتراک گذاشتن اين مطلب، و کامنت گذاشتن! مرسي.

 

nariman بازدید : 159 شنبه 22 تیر 1392 نظرات (0)

Domain name space

 

Today, the Internet Corporation for Assigned Names and Numbers (ICANN) manages the top-level development and architecture of the Internet domain name space. It authorizes domain name registrars, through which domain names may be registered and reassigned.

The hierarchical domain name system, organized into zones, each served by domain name servers.

 

The domain name space consists of a tree of domain names. Each node in the tree holds information associated with the domain name. The tree sub-divides into zones beginning at the DNS root zone.

Domain name syntax

 

A domain name consists of one or more parts, technically called labels, that are conventionally concatenated, and delimited by dots, such as example.com.

 

7specifies a node example.com as a subdomain of the com domain, and www is a label to create www.example.com, a subdomain of example.com. This tree of labels may consist of 127 levels. Each label may contain from 1 to 63 octets. The empty label is reserved for the root node. The full domain name may not exceed a total length of 253 ASCII characters in its textual representation.[4] In practice, some domain registries may have shorter limits.

    A hostname is a domain name that has at least one associated IP address. For example, the domain names www.example.com and example.com are also hostnames, whereas the com domain is not. However, other top-level domains, particularly country code top-level domains, may indeed have an IP address, and if so, they are also hostnames.

    Hostnames impose restrictions on the characters allowed in the corresponding domain name. A valid hostname is also a valid domain name, but a valid domain name may not necessarily be valid as a hostname.

طراحی وب سایت 

Top-level domains

 

The top-level domains such as .com and .net and .org are the highest level of domain names of the Internet. A top-level domain is also called a TLD. Top-level domains form the DNS root zone of the hierarchical Domain Name System. Every domain name ends in a top-level or first-level domain label.

 

When the Domain Name System was devised, in the 1980s, the domain name space was divided into two main groups of domains.[5] The country code top-level domains (ccTLD) were primarily based on the two-character territory codes of ISO-3166 country abbreviations. In addition, a group of seven generic top-level domains (gTLD) was implemented which represented a set of categories of names and multi-organizations.[6] These were the domains gov, edu, com, mil, org, net, and int.

 

During the growth of the Internet, it became desirable to create additional generic top-level domains. As of October 2009, 21 generic top-level domains and 250 two-letter country-code top-level domains existed.[7] In addition, the ARPA domain serves technical purposes in the infrastructure of the Domain Name System.

 

During the 32nd International Public ICANN Meeting in Paris in 2008,[8] ICANN started a new process of TLD naming policy to take a "significant step forward on the introduction of new generic top-level domains." This program envisions the availability of many new or already proposed domains, as well a new application and implementation process.[9] Observers believed that the new rules could result in 

 

Below the top-level domains in the domain name hierarchy are the second-level domain (SLD) names. These are the names directly to the left of .com, .net, and the other top-level domains. As an example, in the domain example.co.uk, co is the second-level domain.

 

Next are third-level domains, which are written immediately to the left of a second-level domain. There can be fourth- and fifth-level domains, and so on, with virtually no limitation. An example of an operational domain name with four levels of domain labels is www.sos.state.oh.us. The www preceding the domains is the host name of the World-Wide Web server. Each label is separated by a full stop (dot). 'sos' is said to be a sub-domain of 'state.oh.us', and 'state' a sub-domain of 'oh.us', etc. In general, subdomains are domains subordinate to their parent domain. An example of very deep levels of subdomain ordering are the IPv6 reverse resolution DNS zones, e.g. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa, which is the reverse DNS resolution domain name for the IP address of a loopback interface, or the localhost name.

 

Second-level (or lower-level, depending on the established parent hierarchy) domain names are often created based on the name of a company (e.g. bbc.co.uk), product or service (e.g. hotmail.com). Below these levels, the next domain name component has been used to designate a particular host server. Therefore, ftp.wikipedia.org might be an FTP server, www.wikipedia.org would be a World Wide Web server, and mail.wikipedia.org could be an email server, each intended to perform only the implied function. Modern technology allows multiple physical servers with either different (cf. load balancing) or even identical addresses (cf. anycast) to serve a single hostname or domain name, or multiple domain names to be served by a single computer. The latter is very popular in Web hosting service centers, where service providers host the websites of many organizations on just a few servers.

 

The hierarchical DNS labels or components of domain names are separated in a fully qualified name by the full stop (dot, .).

Internationalized domain names

Main article: Internationalized domain name

 

The character set allowed in the Domain Name System is based on ASCII and does not allow the representation of names

History

 

The first commercial Internet domain name, in the TLD .com, was registered on 15 March 1985 in the name symbolics.com by Symbolics Inc., a computer systems firm in Cambridge, Massachusetts.

 

By 1992, fewer than 15,000 .com domains had been registered.

 

In December 2009 there were 192 million domain names.[11] A large fraction of them are in the .com TLD, which as of March 15, 2010 had 84 million domain names, including 11.9 million online business and e-commerce sites, 4.3 million entertainment sites, 3.1 million finance related sites, and 1.8 million sports sites.[12] As of July 2012 the .com TLD has more registrations than all of the others combined[13]

Administration

nically by an administrative organization operating a registry. A registry is responsible for maintaining the database of names registered within the TLD it administers. The registry receives registration information from each domain name registrar authorized to assign names in the corresponding TLD and publishes the information using a special service, the whois protocol.

 

Registries and registrars usually charge an annual fee for the service of delegating a domain name to a user and providing a default set of name servers. Often, this transaction is termed a sale or lease of the domain name, and the registrant may sometimes be called an "owner", but no such legal relationship is actually associated with the transaction, only the exclusive right to use the domain name. More correctly, authorized users are known as "registrants" or as "domain holders".

 

ICANN publishes the complete list of TLD registries and domain name registrars. Registrant information associated with domain names is maintained in an online database accessible with the WHOIS service. For most of the 250 country code top-level domains (ccTLDs), the domain registries maintain the WHOIS (Registrant, name servers, expiration dates, etc.) information.

 

Some domain name registries, often called network information centers (NIC), also function as registrars to end-users. The major generic top-level domain registries, such as for the COM, NET, ORG, INFO domains and others, use a registry-registrar model consisting of hundreds of domain name registrars (see lists at ICANN or VeriSign). In this method of management, the registry only manages the domain name database and the relationship with the registrars. The registrants (users of a domain name) are customers of the registrar, in some cases through additional layers of resellers.

 

 

    Administrative contact. A registrant usually designates an administrative contact to manage the domain name. The administrative contact usually has the highest level of control over a domain. Management functions delegated to the administrative contacts may include management of all business information, such as name of record, postal address, and contact information of the official registrant of the domain and the obligation to conform to the requirements of the domain registry in order to retain the right to use a domain name. Furthermore the administrative contact installs additional contact information for technical and billing functions.

    Technical contact. The technical contact manages the name servers of a domain name. The functions of a technical contact include assuring conformance of the configurations of the domain name with the requirements of the domain registry, maintaining the domain. Based on traditional requirements (RFC 1034), typically a minimum of two servers is required.

 

Domain names may be formed from the set of alphanumeric ASCII characters (a-z, A-Z, 0-9), but characters are case-insensitive. In addition the hyphen is permitted if it is surrounded by a characters or digits, i.e. it is not the start or end of a label. Labels are always separated by the full stop (period) character in the textual name representation.

Business models

 

Domain names are often seen in analogy to real estate in that (1) domain names are foundations on which a website (like a house or commercial building) can be built and (2) the highest "quality" domain names, like sought-after real estate, tend to carry significant value, usually due to their online brand-building potential, use in advertising, search engine optimization, and many other criteria.

 

A few companies have offered low-cost, below-cost or even cost-free domain registrations with a variety of models adopted to recoup the costs to the provider. These usually require that domains be hosted on their website within a framework or portal that includes advertising wrapped around the domain holder's content, revenue from which allows the provider to recoup the costs. Domain registrations were free of charge when the DNS was new. A domain holder can give away or sell infinite number of subdomains under their domain name. For example, the owner of example.org could provide subdomains such as foo.example.org and foo.bar.example.org to interested parties.

 

 

Main article: List of most expensive domain names

 

The business of resale of registered domain names is known as the domain aftermarket. Various factors influence the perceived value or market value of a domain name.

 

Most of the million dollar domain deals are carried out privately and go unreported. As of 2011, the most expensive domain name sales on record were:

 

    Insure.com $16 million in 2009 [14]

طراحی وب سایت 

Domain name confusion

 

Intercapping is often used to emphasize the meaning of a domain name. However, DNS names are not case-sensitive, and some names may be misinterpreted in certain uses of capitalization. For example: Who Represents, a database of artists and agents, chose whorepresents.com, which can be misread as whore presents. Similarly, a therapists' network is named therapistfinder.com. In such situations, the proper meaning may be clarified by use of hyphens in the domain name. For instance, Experts Exchange, a programmers' discussion site, for a long time used expertsexchange.com, but ultimately changed the name to experts-exchange.com.

 

Intellectual property entrepreneur Leo Stoller threatened to sue the owners of StealThisEmail.com on the basis that, when read as stealthisemail.com, it infringed on claimed (but invalid) trademark rights to the word "stealth".

Use in web site hosting

 

    URL: http://www.example.net/index.html

    Top-level domain name: net

    Second-level domain name: example.net

    Host name: www.example.net

 

A domain name may point to multiple IP addresses in order to provide server redundancy for the cybernetic services to be delivered; such multi-address capability is used to manage the traffic of large, popular web sites. More commonly, however, one server computer, at a given IP address, may also host web sites in different domains. Such address overloading enables virtual web hosting, commonly used by large web hosting services to conserve IP address space. IP-address overloading is possible through a feature in the HTTP version 1.1 protocol, but not in the HTTP version 1.0 protocol, which requires that a request identify the domain name being referred for connection.

Abuse and regulation

 

Critics often claim abuse of administrative power over domain names. Particularly noteworthy was the VeriSign Site Finder system which redirected all unregistered .com and .net domains to a VeriSign webpage. For example, at a public meeting with VeriSign to air technical concerns about SiteFinder,[16] numerous people, active in the IETF and other technical bodies, explained how they were surprised by 

Despite widespread criticism, VeriSign only reluctantly removed it after the Internet Corporation for Assigned Names and Numbers (ICANN) threatened to revoke its contract to administer the root name servers. ICANN published the extensive set of letters exchanged, committee reports, and ICANN decisions.[17]

 was a significant issue in the attempt to create a .xxx top-level domain and sparked greater interest in alternative DNS roots that would be beyond the control of any single country.[18]

 

Additionally, there are numerous accusations of domain name front running, whereby registrars, when given whois queries, automatically register the domain name for themselves. Network Solutions has been accused of this.[19]

nariman بازدید : 40 پنجشنبه 20 تیر 1392 نظرات (0)

 

:: طراحي وب سايت با CSS

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

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

شد، بسيار ضروري است که بدانيم که در هر نسخه متني HTML در واقع 2 عنصر جداگانه وجود دارد. يکي محتوا است – که شامل متن و تصاويري است که افراد در وب سايت آنها را ديده و مطالعه مي کنند؛ و ديگري ساختار صفحه است – DIVs ويا Table که عناصر و ويژگي هاي مختلف در صفحه را تعريف مي کند.

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

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

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

اين بدان معني است که تا زماني که صفحه با همان پايهء عناصر ساختاري باشد مي توان کاملاً با CSS تبديل کرد – براي مثال ستون سمت چپ را ساخته و تصوير پيش زمينه عنوان و يا صفحهء اصلي را اضافه نموده و ادامه دهيد. اما شناخت نسخهء متني HTML که شامل ساختار و محتوا هستند مرحلهء اول طراحي سايت با CSS در اين کار مي باشد.

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

براي انجام اين کار در مرحلهء بعدي ساختار بنيادي بايد يک تقسيم بندي ديگر داشته باشيد.table عنوان براي مثال بايد به سه table داخلي تقسيم شود: table سمت چپ – table سمت راست و table اصلي؛ تقريباً تمام ترکيبات ممکن که شما نياز داريد تا با CSS هر سبکي که در طراحي سايت مي خواهيد به نمايش بگذاريد. تنها کاري که بايد انجام دهيد اين است که محتوا و مطالب را در منطقهء مربوطه قرار دهيد.

 

بهره گيري از منافع جداسازي اين سه بخش که تمامي استاندارد ها مانند تبديل پس زمينهء محو به رنگهاي جامد، تصوير پس زمينه براي اضافه کردن لبه هاي گرد(rounded corners)، تغييرات در داخل و خارج تصاوير فقط با CSS انجام مي شود. Table داخلي مي تواند شناور بوده و مي تواند يک تصوير را بر روي ديگري قرار دهد.

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

:: در ادامه ...

طراحی وب سایت 

    صفحه قبل

    آموزش نرم افزارهاي مرتبط

    مقالات بهينه سازي سايت

    مقالات مرتبط با طراحي سايت

    مديريت ارتباط با مشتري

    مديريت محصول

    مديريت بازاريابي و فروش

    روابط عمومي و تبليغات

    اندازه گيري رضايت مشتري

    مديريت برند

    آموزش هاي تصويري

    آموزش هاي صوتي

    دوره ها و کارگاه هاي آموزشي

 

:: برو به ...

 

    خدمات طراحي سايت

    خدمات پارس فناوران

    محصولات پارس فناوران

 

By Pars Fanavaranمعرفي پارس فناوران به دوستان با ارسال ايميل خبرخوان اضافه کردن به علاقه مندي ها

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 19
  • کل نظرات : 5
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 14
  • آی پی دیروز : 11
  • بازدید امروز : 16
  • باردید دیروز : 7
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 24
  • بازدید ماه : 23
  • بازدید سال : 47
  • بازدید کلی : 2,608