دسته بندي ها

جستجو

لينک هاي روزانه

جعبه پیام




امکانات


آرشيو

خبرنامه

آمار

آنلاین : 1
بازدید امروز : 1
بازدید دیروز : 11
بازدید هفته گذشته : 35
بازدید ماه گذشته : 137
بازدید سال گذشته : 2190
کل بازدید : 10192

لينک دوستان

 PHP بهتر است يا ASP ؟ فرق PHP و ASP.NET در طراحی وب سايت

فرستاده شده توسط nitaran در پ., 01/10/2013 - 16:43

PHP و ASP زبان هاي متداول برنامه نويسي تحت وب هستند که براي طراحي سايت هاي دايناميک بکار مي روند. از نظر کاربرد هر دو مي توانند صفحات وب سايت با کارايي و طرح قالب مشابه را توليد کنند.

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

براي ما چند معيار در  طراحی وب سايت  اهميت دارد که روي انتخاب ما تاثير خواهد داشت.



مقايسه اي بر طراحی وب سايت PHP و ASP.NET

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

پي اچ پي PHP

زبان PHP با هدف نوشتن اسکريپتهاي وب نوشته شد. در واقع هدف فرار از پيچيدگيهاي Perl و نوشتن CGI با زبانهايي مثل C و ارائه دستوراتي ساده براي  طراحی وب سايت بود.پي اچ پي اوليه زباني با دستورات محدود و ساده بود که بيشتر براي کارهاي ساده و براي طراحان وب سايتها و نه برنامه نويسان حرفه اي بود. اين زبان کم کم پيشرفت کرد و بخصوص Open Source بودن آن باعث شد تسريع اين حرکت شد. در مرحله اول تعداد دستورات و توابع اين زبان گسترش پيدا کرد بطوريکه امروز نيز براحتي کارهاي نسبت پيچيده اي (مثل کار با سوکتها يا تصاوير) با توابع اين زبان قابل اجراست.همچنين از لحاظ معماري اين زبان با پشتيباني از طراحی وب سايت  شي گرايي پيشرفت مهم ديگري داشته است. پي اچ پي به طور کلي يکي از زبانهاي معمول براي نوشتن اسکريپتهاي اجرايي در محيط يونيکس ، لينوکس (هرچند که در ويندوز نيز به خوبي اجرا مي شود) و کار با نرم افزار مديريت بانک اطلاعات MySQL است.


همانطور که اشاره شد هر دو زبان برنامه نويسي از نظر کارايي يکسان هستند يعني اگر بخواهيم هر وب سايت با هر قابليتي را طراحي و راه اندازي کنيم اينکار هم با ASP قابل اجرا است و هم با PHP

بحث هزينه :

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

از طرف ديگر بسياري از ملزومات و اصطلاحا Addon ها براي ASP و سرور ويندوز هزينه در برخواهند داشت . حال آنکه PHP  يک زبان لايه باز است و ماژول هاي آن نياز به پرداخت هزينه ندارد.

 پس از نظر هزينه PHP براي  طراحی وب سايت  گزينه بهتري است.

 

بحث عموميت :

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

خيلي از چيزهايي که يک برنامه نويس و طراحی وب سايت  نياز دارد براي PHP بسرعت يافت مي شود از انواع سيستم هاي مديريت محتوا ( CMS ها ( گرفته تا فريم ورک ها و همين عموميت يکي از مزاياي اين زبان است.

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

بنابراين با توجه به معيارهاي فوق استفاده از زبان برنامه نويسي PHP در طراحي سايت مطلوب تر است اما از نظر کارايي هر دو يکسان هستند.
 
نوشته شده در يکشنبه 26 خرداد 1392 ساعت 13:18 توسط : padideh | دسته : | 311 بازدید
  • []

  •  گزينشکرها (selectors)

     
     
    در اين جلسه از آموزش طراحی وب سایت css با ساير گزينشگرهايي که در Css3 معرفي شده اند صحبت خواهيم کرد.
    اگر دومين پست از آموزش css را خوانده ايد، با هم درمورد گزينشکرها صحبت کرديم
    گفتيم که در css شش نوع گزينشگر براي انتخاب المنتها وجود دارد که يگي از ان ها کلاس هاي کاذب (pseudo-class) بودند، که اين سلکتورها براي نمايش رويدادهاي صفحه از جمله، کليک، هاور، فوکوس و ... استفاده مي شوند. در css کلاس هاي کاذب ديگري نيز وجود دارد که مربوط به طريقه انتخاب فرزندان (child) يک المنت پدراست. ما ميخواهيم در اين جلسه  طراحی وب سایت در مورد آن ها توضيح دهيم.
    کلاس هاي کاذب توارثي
     
     
    کد html زير را در نظر بگيريد
    1
    <ul>
    2
     <li>Lang
    3
     <ul>
    4
     <li>HTML</li>
    5
     <li>CSS</li>
    6
     <li>Javascript</li>
    7
     </ul>
    8
     </li>
    9
     
    10
    <li>CMS
    11
     <ul>
    12
     <li>Wordpress</li>
    13
     <li>Joomla</li>
    14
     <li>Drupal</li>
    15
     </ul>
    16
     </li>
    17
    </ul>
    حال اگر بخواهيم به هر يک از اين گزينه ها يک رنگ متفاوت اختصاص دهيم، چه ميکرديم؟ حتما براي هر يک class تعريف مي کرديم و رنگ مورد نظر را انتخاب مي کرديم. خب اين روش درست است اما اگر ندانيم class آن چيست چطور؟ اگر سايت  طراحی وب سایت دايناميک باشد، و اين اطلاعات بعدا اضافه شود به طوريکه نميتوان براي آن ها class تعريف کرد؟؟ در اين صورت بايد از کلاس هاي کاذب توارثي استفاده کنيم.
    کلاس هاي کاذب توارثي موجود در css به ترتيب اين ها هستند :
    nth-child(n)
    nth-last-child(n)
    first-child
    last-child
    حال به تعريف دقيقتر اين کلاس هاي کاذب مي پردازيم :
     
    nth-child(n) و nth-last-child(n)
     
     
    nth-child(n) : با استفاده از اين کلاس کاذب مي توان براي تک تک المنت هاي يک صفحه طراحی وب سایت ، بدون استفاده از id يا class براي آن ها يک استايل متفاوت تعيين کنيم.
    حرف n در داخل پرانتز يک عدد طبيعي است 1,2,3,...
    اين عدد تعيين کننده چندمين فرزند از يک المنت پدر است
    به طور مثال اولين تگ شماري 1 را دارد دومين شماره 2 و...
    به کد css زير دقت کنيد تا متوجه شويد چگونه ميتوانيم به هر يک از li هاي کد html بالا استايل متفاوت دهيم.
    1
    ul li {
    2
     color: blue;
    3
     font: 24px tahoma;
    4
     text-shadow: -1px 1px 1px #333;
    5
    }
    6
     
    7
    ul li:nth-child(1){color: red;}
    8
    ul li:nth-child(2){color: green;}
    9
    ul li:nth-child(1) li:nth-child(1){color: orange;}
    10
    ul li:nth-child(1) li:nth-child(2){color: brown;}
    11
    ul li:nth-child(1) li:nth-child(3){color: pink;}
    12
    ul li:nth-child(2) li:nth-child(1){color: gray;}
    13
    ul li:nth-child(2) li:nth-child(2){color: silver;}
    14
    ul li:nth-child(2) li:nth-child(3){color: yellow;}
    البته در مروگر ie فقط از نسخه 9+ کار ميکند.
    اگر کد را اجرا کنيد نتيجه اي شبيه زير خواهيد داشت.
     
    کلاس کاذب nth-last-child(n) برعکس nth-child(n) عمل ميکند، به اين صورت که از اخر به شمارش المنت ها ميپرداز.
    اگر nth-last-child را جايگزين nth-child در کد css بالا کنيم نتيجه کد  طراحی وب سایت  به شکل زير خواهد بود.
     
    first-child و last-child
     
     
    همانطور که از اسم کلاس ها معلومه first-child اولين فرزند از يک المنت پدر last-child آخرين فرزند از يک المنت پدر رو انتخاب ميکنند.
    کد css زير را به کدهاي css بالا اضافه کنيد
    1
    ul li:first-child li {font-size: 18px;}
    2
    ul li:last-child li {font-size: 14;}
    نتيجه
     
    ديگر کلاس هاي کاذب
     
     
    selection : اين کلاس  طراحی وب سایت  کاذب استايل المنت را هنگامي که ان را انتخاب ميکنيم، (در حالي که کليک چپ رو نگه داشتيم روي المنت ميکشيم يا CTRL + A ( در حالت پيشفرض مرورگرها
    هنگامي که به طور مثال متني رو انتخاب ميکنيم، رنگ متن سفيد، و پس زمينه ان آبي ميشود. ما توانيم با استفاده از اين کلاس کاذب اين رنگ را هر کدام از المنتها تغيير دهيم يا ان را براي کل صفحه تعيين کنيم.
    کد css :
    1
    ::selection {
    2
     background: #999;
    3
     color: #edb;
    4
    }
    5
     
    6
    ::-moz-selection {
    7
     background: #999;
    8
     color: #edb;
    9
    }
    10
     
    11
    ::-webkit-selection {
    12
     background: #999;
    13
     color: #edb;
    14
    }
    المنت هاي کاذب (pseudo-elemnt)
     
     
    بعلاوه کلاس هاي کاذبي  طراحی وب سایت  که گفتيم، المنت هاي کاذب نيز وجود دارند.
    ::first-letter تغيير استايل اولين کاراکتر از يک متن.
    کد html :
    1
    <p>7learn: javascript and web design tutarials</p>
    کد css :
     
    1
    p {font-size: 20px;}
    2
    p::first-letter {font-size: 36px;}
     
     
    ::first-line تغيير استايل اولين خط از يک متن.
     
    1
    <p>7learn: javascript and web design tutarials<br>7learn: javascript and web design tutarials</p>
    کد css :
     
    1
    p {font-size: 20px;}
    2
    p::first-line {font-size: 36px;}
    بسيار خب آموزش اين جلسه طراحی وب سایت نيز به پايان رسيد در جلسه بعدي به معرفي گزينشگرهاي صفت (attribute) و باقي گزينشگرها ميپردازيم.
    نوشته شده در سه شنبه 28 خرداد 1392 ساعت 12:31 توسط : padideh | دسته : | 252 بازدید
  • []




  • ا
    در هر جاي كامپيوتر كه دوست داريد فلدري به نام my-first-webpage بسازيد.

    textEditor خودتان را كه در جلسات قبل توضيح داديم باز كنيد كد زير را در آن كپي كنيد


    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


    The Most Basic Web Page in the World
    content="text/html; charset=utf-8"/>


    This is a very simple web page to get you started.
    Hopefully you will get to see how the markup that drives
    the page relates to the end result that you can see on
    screen.

     

    This is another paragraph, by the way. Just to show how it
    works.



    د:

    طراحی وب سایت 

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

    نام فايل را انتخاب نماييد البته با پسوند html مانند my-first-webpage.html

    از منوي كشويي save as type گزينه all files را انتخاب نماييد

    از منوي كشويي Encoding گزينه UTF-8 را انتخاب نماييد.

    و حالا دكمه save را بزنيد.


    اهميت UTF-8

    اين كاراكتر ست (Character Set) اجازه مي دهد زبان هاي ديگر هم بتوانند به درستي صفحه شما را ببينند. فرض كنيد يك كاربر كره اي كه زبان انگليسي ندارد بخواهد صفحه شما را ببيند ، اين كاراكتر ست است كه اجازه ميدهد شما با مشكلي مواجه نشويد.

    اولين آناليز شما


    زمان مناسبي است كه در مورد 2 تگ p و h1 و البته عناصر ديگر صحبت كنيم.

    تيترها و سلسله مراتب آن (H)

    تيترها عناصر بلاك و بسته شونده (container)هستند و سلسله مراتب مخصوص به خود را دارند و از h1 تا h6 وجود دارند.
    از h1 براي مهم ترين تيتر از h2 براي تيتر كم ارزش تر و از h3 براي تيتر كم ارزش تر از h2 و به همين ترتيب تا h6

    پاراگراف (p)

    يك تگ بلاك و بسته شونده (container) است و براي يك بلوك متني استفاده مي شود اين بدان معني است كه متن هاي خوتان را بايد داخل اين تگ قرار دهيد.

    ليست (list)

    فرض كنيد مي خواهيد ليست وب سايت هاي طراحي شده خودتان را نمايش دهيد ،


    و اما ليست ها دو گونه اند:

    Ol-order list : براي ليست هاي ترتيبي

    Ul-unorder list: براي ليستهاي غير ترتيبي

    به مثال زير دقت كنيد:

    طراحی وب سایت 

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


    Lists - an introductioncontent="text/html; charset=utf-8"/>


    Lists - an introduction

     

    Here's a paragraph. A lovely, concise little paragraph.

     

    Here comes another one, followed by a subheading.

     

    A subheading here

     

    And now for a list or two:



      • This is a bulleted list
     
      • No order applied
     
      • Just a bunch of points we want to make


    And here's an ordered list:



      1. This is the first item
     
      1. Followed by this one





      ظاهر همه ليست ها به همين سادگي نيستند و امروزه در طراحي وب سايت حرفه اي استفاده زيادي دارد. براي نمونه مي توانيد به فوتر وب سايت شرکت طراحي سايت وب اسکالا نگاهي بياندازيد تا ديدتان نسبت به استفاده از اين عنصر بازتر شود.
    نوشته شده در شنبه 22 تير 1392 ساعت 13:01 توسط : padideh | دسته : | 179 بازدید
  • []


  • 1
    class Database
    2
    {
    3
    ….
    4
    public function select($query)
    5
    {
    6
    // کدهاي مربوط به تابع
    7
    }
    8
    }
    مقادير از ديتابيس مينويسيد.خب همينطور که ميدونيد بقيه اعضاي تيم بايد از اين متد استفاده کنن.اما يک تابع
    مينويسيد تا قبل از اجراي دستور select چک کنه که آيا جدول مورد نظر در ديتابيس وجود داره يا خير؟

    1
    function table_exists($table)
    2
    {
    3
    ///
    4
    }
    تابع table_exists تابعي هست که نبايد توسط بقيه استفاده بشه و فقط بايد توسط متدهاي اصلي کلاس
     استفاده بشن.يعني در متد select قبل از اجراي کوئري طراحی وب سایت مورد نظر چک کنه که آيا جدول مورد نظردر ديتابيس 
    وجود داره يا خير اگر نبود پيغام خطا بده :

    1
    function select()
    2
    {
    3
    if($this->table_exists($table))
    4
    {
    5

    6
    }else
    7
    {
    8
    return false;
    9
    }
    10
    }
    منظور من از مثال بالا اين بود که در برنامه نويسي شيء گرا بايد بعضي از متدها و متغيرهاي کلاس رو از ديد بقيه 
    کساني که از کلاس ما(که شامل بقيه کلاسها هم ميشه) استفاده ميکنن مخفي نگه داريم تا نتونن توي مقادير
     و نحوه کار کرد کلاس خواسته يا ناخواسته خلل ايجاد کنن.

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

    در برنامه نويسي شيء گرا سه نوع نحوه دسترسي داريم :

    Public

    Private

    Protected

    در ادامه به توضيح هر کدوم از اينها ميپردازيم.

    Public

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

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

    1
    class Database
    2
    {
    3
    public function select()
    4
    {
    5
    ///codes
    6
    }
    7
    }
    هنگامي که از کلمه کليدي public قبل از function استفاده ميکنيم به محيط خارج از کلاس اجازه ميديم که به متد 
    ما دسترسي داشته باشن.

    1
    include 'database.php';
    2
    $db = new Database();
    3
    $db->select();
    با اجراي کد بالا ميبينيد که کلاس Database اجازه دسترسي به متد select رو به شما ميده.

    چون متد select به صورت public يا عمومي تعريف شده.

    Private

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

    1
    class Database
    2
    {
    3
    public function select()
    4
    {
    5
    ///codes
    6
    }
    7
    private function table_exists($table)
    8
    {
    9
    ///
    10
    }
    11

    12
    }
    در کد بالا تابع table_exists در خارج از کلاس در دسترس نيست و با اجراي کد زير پيغام خطا دريافت خواهيد کرد:

    1
    include 'database.php';
    2
    $db = new Database();
    3
    $db->table_exists('users');
    Protected

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

    ارث بري

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

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

    ?- در هر جاي پروژه که بخوايم يک کوئري خاص رو اجرا کنيم بايد يک شيء از اين کلاس بسازيم بعد کوئري مورد نظر
     رو بهش پاس بديم تا اجرا بشه.

    ?- يک کلاس بنويسيم با نام Users که از کلاس Database ارث بري کنه.سپس به واسطه کلاس Users به متدهاي
    کلاس Database دسترسي پيدا کنيم.

    شايد بپرسيد که چه فرقي داره؟ در روش دوم هم ما بايد هر طراحی وب سایت جا تو پروژه نياز داشتيم از کلاس Users يک شيء بسازيم
    . اما نکته اي که هست اينه که ما ميتونيم به واسطه کلاس Users يه سري تنظيمات رو فقط يکبار تعريف کنيم. با 
    مثال بيشتر متجه ميشيد.

    روش اول :

    کلاس Database

    1
    class Database
    2
    {
    3
    private $table;
    4
    private $primary_key;
    5
    public function __construct($table , $pk)
    6
    {
    7
    $this->table = $table;
    8
    $this->primary_key = $pk;
    9
    }
    10

    11
    public function exec($query)
    12
    {
    13

    14
    // کدهاي مربوط
    15
    }
    16
    }
    در روش اول براي هر بار اجراي يک کوئري بايد ابتدا نام جدول سپس کليد اصلي جدول رو تنظيم کنيم :

    1
    include 'database.php';
    2
    $db = new Database('users' , 'user_id);
    روش دوم :

    کلاس Database رو مثل قبل مينويسيم با اين تفاوت که نوع متغيرهاي $table , $primary_key رو از نوع protected ميزاريم
     که بتونيم در کلاس فرزند بهشون مقدار بديم  :

    1
    class Database
    2
    {
    3
    protected $table;
    4
    protected $primary_key;
    5
    public function __construct($table , $pk)
    6
    {
    7
    $this->table = $table;
    8
    $this->primary_key = $pk;
    9
    }
    10

    11
    public function exec($query)
    12
    {
    13

    14
    // کدهاي مربوط
    15
    }
    16
    }
    در روش دوم بايد يک مرحله بيشتر انجام بديم. در اين روش بايد براي هر جدول در ديتابيس يک کلاس جدا
    بسازيم مثلا کلاس Users که بايد از کلاس Database ارث بري کنه (با استفاده از کلمه کليدي extends ):

    1
    class Users extends Database{
    2
    <pre> protected $table = &#039;users&#039;;
    3
    protected $primary_key = &#039;user_id&#039;;</pre>
    4
    }
    بيايد مزاياي روش دوم رو بررسي کنيم.

    فرض کنيد شما در پروژه ??? بار به ديتابيس متصل ميشيد و جدول users رو دستکاري ميکنيد. ممکنه در آينده نام 
    جدول يا نام کليد اصلي جدول رو بخوايد تغيير بديد. اگر از روش اول استفاده کنيد :

    1
    include 'database.php';
    2

    3
    $db = new Database
    4

    5
    ('users' , 'user_id);
    بايد همه جاهايي که کد بالا رو نوشتيد پيدا کنيد و تغييرش بديد.اما در روش دوم در صورتي هر تغييري در ديتابيس
     اجام بشه و نام فيلد اصلي و جدول تغيير کنه فقط با يکبار تغيير در کلاس Users ميتونيد توي کل پروژه اين تغيير 
    رو اعمال کنيد.ميبينيم روش دوم يکي از مزاياي شيء گرايي که ” نگهداري و توسعه آسان ” هست رو در اختيار ما ميذاره.

    بحث ارث بري يکي از شيرين ترين بحثهاي برنامه نويسي شيء گراست.تا اينجا رو گفتم که با مفهومش آشنا بشيد 
    و کاربردش رو ببينيد به اميد خدا حتما در يک پست جدا در موردش صحبت ميکنيم.

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

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

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

    اين بحث هم به پايان رسيد.اميد وارم خوب توضيح داده باشم و مفهوم رو رسونده باشم.به هر حال چيزي که توي آموزش PHP مد نظرم هست اينه که مفهوم رو بفهميد و سعي کنيد خودتون رو درگير اصطلاحات مختلف نکنيد.برنامه نويسي شيء گرا واقعا لذت بخشه.
    نوشته شده در دوشنبه 18 شهريور 1392 ساعت 12:22 توسط : padideh | دسته : | 197 بازدید
  • [ادامه مطلب] []

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

    در اين نوع از چينش يک بخش هايي با نام sideBar و contentBody اضافه شده است . با توجه به نوع و حتي 
    رنگ پس زمينه اين بخش ها , مي توان از تکنيک طراحی وب سایت هاي متفاوتي براي چينش صفحه استفاده نمود که در ادامه
     توضيحات بيشتري در اين زمينه ارائه خواهد شد.

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

    در نمونه و مثال نخست با توجه به نوع طرح و رنگ يکسان پس زمينه sideBar و contentBody همسان نبودن ارتفاع
     از ديد مخاطب پنهان خواهد ماند و نا هماهنگي در طرح ايجاد نخواهد کرد .

    DEMO

    ساختار HTML

    <div class="container">
    <div class="header">
    <h1><a href="http://www.webtarget.ir/">webtarget.ir</a></h1>
    <h2>دو ستون - عرض ثابت</h2>
    </div>
    <div class="navigation">
    <ul>
    <li><a href="#">خانه</a></li>
    <li><a href="#">درباره ما</a></li>
    <li><a href="#">خدمات</a></li>
    <li><a href="#">ارتباط با ما</a></li>
    </ul>
    </div>
    <div class="content">
    <div class="contentBody">
    <h2>آموزش چينش صفحات وب سايت با استفاده از CSS</h2>
    <p>کد نويسي بر اساس استاندارد W3C انجام شده است</p>
    <p>چينش بر اساس زبان فارسي و از راست به چپ است - rtl </p>
    <br class="clearfloat" />
    </div>
    <div class="sideBar">
    <h3>سر فصل براي ستون کناري</h3>
    <p>با ساختار و چينش هاي استاندارد آشنا مي شويد</p>
    </div>
    <br class="clearfloat" />
    </div>
    <div class="footer">
    Copyright©webtarget.ir|2011
    </div>
    </div>
    کدهاي CSS

    @charset "utf-8";
    /* CSS Document */
    /*-------------------------*/
    /* Design & Style by */
    /* Amir Sorouri */
    /* Sorouri.amir@gmail.com */
    /*-------------------------*/

    /*--------- reset ---------*/

    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, font, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    }
    ol, ul {
    list-style: none;
    }
    body { font:62.5%/1.7em Tahoma, Arial, sans-serif;direction:rtl;}

    /* ---------- Requirment ----------*/
    .container {font-size:1.2em;}
    .clearfloat {clear:both; height:1%;}
    h1 , h2 , h3 { font-family:Arial, Helvetica, sans-serif;}
    h1 { font-size:1.8em;}
    h2 { font-size:1.6em;}
    h3 { font-size:1.4em;}

    /* ---------- Main -----------*/
    .container
    {
    width:960px;
    margin: 0 auto;
    background:#fff;
    }

    .header
    {
    background:#ccc;
    padding: 20px;
    }
    .header h1 { text-align:left;}
    .header h1 a{ text-decoration:none; color:#09F;}
    .navigation
    {
    background:#333;
    height:30px;
    line-height:30px;
    }

    .navigation ul li
    {
    float:right;
    }

    .navigation li a
    {
    display: block;
    height:30px;
    padding:0 15px;
    color:#fff;
    text-decoration: none;
    border-left: 1px solid #fff;
    }

    .navigation li a:hover { background:#09F; }

    .content
    {
    background:#eee;
    }

    .contentBody
    {
    width:650px;
    float:right;
    padding:20px;
    }

    .contentBody p { text-align:justify; line-height:17px;}

    .contentBody h2
    {
    margin: 0 0 .5em;
    }

    .sideBar
    {
    width:250px;

    float:left ;
    padding:20px 0 20px 20px;

    }
    .sideBar h3
    {
    margin: 0 0 .5em;
    }

    .footer
    {
    background:#ccc;
    padding: 20px;
    text-align:left;
    }
    براي ظاهر شدن اين ناهماهنگي در چينش صفحه کافيست که sideBar و contentBody داراي رنگ پس زمينه متفاوتي شوند

    .sideBar
    {
    width:250px;
    float:left ;
    padding:20px 0 20px 20px;
    background:#ddd;

    }
    در اين رابطه بهتر است مطالب زير را مطالعه نمائيد

    آشنايي با مفهوم Margin , Padding , Border در CSS
    Margin , Padding – خلاصه نويسي دستورات CSS
    خلاصه نويسي دستورات CSS – Background
    رنگ مورد استفاده در پس زمينه sideBar در ابتدايطراحی وب سایت اين مثال را نيز حذف نمائيد .به همين
     سادگي به نظر مي رسد 
    که نا هماهنگي بر طرف شده باشد . ملاحظه مي نمائيد که با افزايش محتويات contentBody همچنان در چينش 
    ناهماهنگي به وجود نخواهد آمد و contentBody و sideBar داراي ارتفاع يکسان و رنگ پس زمينه متفاوت خواهند بود .

    نمايش صفحه

    ساختار HTML

    <div class="container">
    <div class="header">
    <h1><a href="http://www.webtarget.ir/">webtarget.ir</a></h1>
    <h2>دو ستون - عرض ثابت</h2>
    </div>
    <div class="navigation">
    <ul>
    <li><a href="#">خانه</a></li>
    <li><a href="#">درباره ما</a></li>
    <li><a href="#">خدمات</a></li>
    <li><a href="#">ارتباط با ما</a></li>
    </ul>
    </div>
    <div class="content">
    <div class="contentBody">
    <h2>آموزش چينش صفحات وب سايت با استفاده از CSS</h2>
    <p>کد نويسي بر اساس استاندارد W3C انجام شده است</p>
    <p>چينش بر اساس زبان فارسي و از راست به چپ است - rtl </p>
    <br class="clearfloat" />
    </div>
    <div class="sideBar">
    <h3>سر فصل براي ستون کناري</h3>
    <p>با ساختار و چينش هاي استاندارد آشنا مي شويد</p>
    </div>
    <br class="clearfloat" />
    </div>
    <div class="footer">
    Copyright©webtarget.ir|2011
    </div>
    </div>
    کدهاي CSS
    @charset "utf-8";
    /* CSS Document */
    /*-------------------------*/
    /* Design & Style by */
    /* Amir Sorouri */
    /* Sorouri.amir@gmail.com */
    /*-------------------------*/

    /*--------- reset ---------*/

    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, font, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    }
    ol, ul {
    list-style: none;
    }
    body { font:62.5%/1.7em Tahoma, Arial, sans-serif;/* font-size 1em = 10px */ direction:rtl;}

    /* ---------- Requirment ----------*/
    .container {font-size:1.2em;}
    .clearfloat {clear:both; height:1%;}
    h1 , h2 , h3 { font-family:Arial, Helvetica, sans-serif;}
    h1 { font-size:1.8em;}
    h2 { font-size:1.6em;}
    h3 { font-size:1.4em;}

    /* ---------- Main -----------*/
    .container
    {
    width:960px;
    margin: 0 auto;
    background:#fff;
    }

    .header
    {
    background:#ccc;
    padding: 20px;
    }
    .header h1 { text-align:left;}
    .header h1 a{ text-decoration:none; color:#09F;}
    .navigation
    {
    background:#333;
    height:30px;
    line-height:30px;
    }

    .navigation ul li
    {
    float:right;
    }

    .navigation li a
    {
    display: block;
    height:30px;
    padding:0 15px;
    color:#fff;
    text-decoration: none;
    border-left: 1px solid #fff;
    }

    .navigation li a:hover { background:#09F; }

    .content
    {
    background:url(sideBarBg.jpg) repeat-y left top #eee;
    }

    .contentBody
    {
    width:650px;
    float:right;
    padding:20px;
    }

    .contentBody p { text-align:justify; line-height:17px;}

    .contentBody h2
    {
    margin: 0 0 .5em;
    }

    .sideBar
    {
    width:250px;
    float:left ;
    padding:20px 10px;

    }
    .sideBar h3
    {
    margin: 0 0 .5em;
    }

    .footer
    {
    background:#ccc;
    padding: 20px;
    text-align:left;
    }
    نوشته شده در سه شنبه 2 مهر 1392 ساعت 14:18 توسط : padideh | دسته : | 191 بازدید
  • []

  •  
    گاهي اوقات لازمه که ما طراحی وب سایت منو رو به صورت دايناميک بزاريم و اون رو يا به ديتابيس يا به  xml وصل کنيم
     اما ظاهر اون ما رو دچار مشکل مي کنه  براي تغيير ظاهر اون به وسيله css  بايد در قسمت properties ابزار
     منو ويژگي  CssClass  کلاس مربوط به منو خودتون رو انتخاب کنيد و ويژگي RenderingMode روي list قرار بدين
     در اين حالت مي تونيم استايل مورد علاقه خودمون رو به منو بديم .
    براي اين کار يک پروژه جديد ايجاد کنيد و يک چک باکس ، 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 رو به صورت زير مشخص کنيم :

    <urlMappings enabled="true">
    <add url="~/Home" mappedUrl="~/Default.aspx?page=Home"/>
    <add url="~/About" mappedUrl="~/Default.aspx?page=About"/>
    </urlMappings>
    حالا براي مشاهده نام صفحه درخواست شده در رويداد لود صفحه کد زير رو قرار مي ديم :
    Label1.Text = Request.QueryString["page"];
    بدست آوردن mac address با asp.net نوشته شده توسط مصطفيASP.NET ?? مرداد ????
    براي نمايش mac address ابتدا فضاي نام :

    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 ) استفاده مي کنيد تنها مرورگرهاي کروم و سافاري پشتيباني مي کنند .
    نوشته شده در سه شنبه 16 مهر 1392 ساعت 13:29 توسط : padideh | دسته : | 131 بازدید
  • []

  •  
    کاراکتر “$”: اين کاراکتر به طراحی وب معني پايان خط هست. دقيقاً عکس “^” عمل ميکنه.
    کاراکتر “|”: اين کاراکتر به معني “يا” هست. مثلا براي بررسي مطابقت يا عدم مطابقت يه نويسه با يکي
    از کلمات red يا bed اين الگو رو ميخوايم:
    1
    /^bed|red$/
    پرانتز “()”: براي ايجاد زير الگوها در يک الگو ازش استفاده ميکنيم. مثلا اگه بخوايم نويسه اي با يکي از
     کلمات bed يا red مطابقت کنه به الگوي زير نياز داريم:
    1
    /^(r|b)ed$/
    براکت “[]“: اينا وقتي کاربرد داره که بخوايم يه گروه خاص از کاراکترها رو با يه نويسه مقايسه کنيم. مثلا
    واسه اينکه ببينيم يه نويسه از a و b و h تشکيل شده يا نه اين الگو رو مينويسيم:
    1
    /^[abh]+$/
    کاراکتر “+” و “*”: “+” يکي يا بيشتر و “*” هيچي يا بيشتر. مثلا براي بررسي اينکه يه نويسه از نوع 
    عدديه يا نه اين الگو لازمه:
    1
    /^[?-?]+$/
    ”{n,m}”: يعني هر الگويي که قبلش قرار داره بايد بين n تا m بار تکرار شده باشه.
    و تابع preg_match که به ترتيب الگو و نويسه رو دريافت ميکنه و اگر نويسه با الگو مطابقت کنه true رو برمي گردونه.
    خب فعلاً تا همين جا رو داشته باشيد تا بعد.

    بهترين کتابخانه هاي کار با نرم افزارهاي آفيس Word , Excel , Power Point
    Posted on ??/??/?? | PHP کدهاي آماده
    15205298
    مجموعه نرم افزاري آفيس يکي از پرکاربرد ترين نرم افزارهاي شرکت مايروسافته که تقريبا ميشه توي هر
     کامپيوتري اون رو پيدا کرد. براي اين پست تصميم گرفتم کتابخانه هايي رو معرفي کنم که کار مارو براي 
    ارتباط با اين نرم افزار ها راحت تر ميکنه.


    ?- PHP PowerPoint

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



    دانلود و آموزش : http://phppowerpoint.codeplex.com/



    2- PHP Word

    PHP Word يکي ديگه از کتابخانه هايي هست که براي ساخت فايلهاي word نوشته شده. اين کتابخانه
     فايلهايي با پسوند docx به کاربرا ميده.

    اضافه کردن متنهاي قالب بندي شده ، اضافه کردن عکس ، اضافه کردن header و footer , … از قابليتهاي ا
    ين کتابخانه هستند.



    دانلود و آموزش : http://phpword.codeplex.com/



    3- PHP Excel Reader

    کتابخانه اي فقط براي خواندن فايلهاي excel .



    دانلود و آموزش : http://code.google.com/p/php-excel-reader/



    4 – Excel Writer (XML) For PHP

    اين کتابخانه براي ساخت صفحات اکسل به وسيله php کاربرد داره.



    دانلود و آموزش :http://sourceforge.net/projects/excelwriterxml/



    5 -PHP Export Data

    يک کتابخانه براي خروجي گرفتن از اطلاهات به صورت xml , CSV , TSV



    دانلود و آموزش : https://github.com/elidickinson/php-export-data



    6. PHP Excel

    با استفاده از اين کتابخانه ميتونيم آرايه هاي ذو بعدي در php رو به فايلهاي اکسل تبديل کنيم.



    دانلود و آموزش : http://code.google.com/p/php-excel/



    7. SimpleExcel PHP

    کتابخانه ساده اما قدرتمندي که براي نوشتن و خواندن فايلهاي اکسل به وسيله php کاربرد داره.

    نوشته شده در دوشنبه 25 آذر 1392 ساعت 15:00 توسط : padideh | دسته : | 176 بازدید
  • []


  • صفحه قبل 1 صفحه بعد
    سفارش تبليغات
    سفر به ترکیه | فرش کاشان | آژانس هواپیمایی | منزل مبله در شیراز | کفسابی | هتل و اقامت | آموزش بازاریابی | میز کانتر | گیت کنترل تردد | نوبت دهی پزشکان شیراز | پاپ آپ نمایشگاهی | دکتر نوروزیان | منزل مبله شیراز | طلایاب | سفر به تایلند| ثبت شرکت | راهنمای سفر | سفر به گرجستان | سفر به روسیه | منزل مبله | فلزیاب | محمد دبیری
    X
    تبليغات