فریم ورک Ruby On Rails چیست؟
الگوی طراحی برنامههای این فریمورک نیز MVC یا Model View Controller است. (شکل۱)
RoR بر اساس دو اصل مهم استوار است:
اول، اصل؛ DRY یا Don’t Repeat Yourself به این معنا که اطلاعات، در یک مکان مشخص و منفرد قرار دارد و نیازی نیست که مثلاً برنامهنویس، نام ستون اطلاعات را مشخص کند و به جای آن Ruby میتواند این اطلاعات را از پایگاه داده استخراج کند.
دوم، CoC یا Convention over Configuration به اینمعنا که فریمورک هوشمند است و برنامهنویس فقط باید جنبههای نامشخص برنامه را مشخص کند.
RoR از دو جزء اصلی تشکیل شده است: اول زبانی به نام Ruby با Syntax بسیار تمیز و کاملاً شیءگرا که شاید بتوان Ruby را ترکیبی از مزایای زبانهای برنامهنویسی دیگر دانست؛ مثلاً سادگی Pythons، عملکرد Perl و ظرافت مفهمومی Smaltalk.
جزء دوم، Rails است؛ فریمورکی با منبع باز برای Ruby جهت طراحی برنامههای تحت وب و برنامههایی که به صورت مستقیم با پایگاه داده در ارتباطند یا به قول معروف Database-Driven هستند.
یکی از مزایای Rails نسبت به فریمورکهای دیگر این است که با آن میتوان با سرعت بیشتر، تقریباً ده برابر، برنامهنویسی کرد. علت این سرعت بالا، شاید در استفاده از زبان Ruby و پشتیبانی از دو اصل مهمی است که قبلاً ذکر شد (CoC و DRY).
در RoR، با خطوط کمتری از کد، میتوانیم برنامه تحت وب خود را بسازیم و طبیعتاً از آنجایی که کدهای ما کم است، برای آن بهراحتی قابل درک خواهد بود و خطای کمتری را در خود خواهد داشت و Debugging آسانتر خواهد شد.
در حالت کلی RoR نسبت به دیگر فریمورکهای برنامهنویسی تحت وب چیز جدیدی ندارد و تنها فرق آن با دیگر فریمورکها، تعاملی است که بین Ruby و Rails در آن وجود دارد. تنها قابلیت RoR این نیست که سریعتر از فریمورکهای دیگر است، بلکه کدهای برنامه در آن بسیار واضحترند و قابلیت تعمیرپذیری بالاتری نیز دارند.
Rails فریمورکی است که از مدل MVC پیروی میکند و به صورت جامع، تمامی لایههای این مدل را پشتیبانی میکند. در صورتی که فریمورکهای دیگر معمولاً تنها قسمتی از این مدل را پشتیبانی میکنند و برنامهنویس را مجبور به هماهنگ کردن اجزای سیستم میکنند.
اضافه بر این، همانطور که قبلاً نیز بحث شد RoR به صورت CoC است و به این ترتیب، نیازی نیست که برنامهنویس به صورت دستی، جداول پایگاه داده را به اشیای برنامه، مرتبط کند چراکه برنامه این عمل را به صورت خودکار انجام خواهد داد.
همچنین در Rails، تهیه برنامهها بر خلاف فریمورکهای دیگر فقط یک مرحله دارد. در Rails کافی است برنامه خود را تغییر داده و نتیجه آن را مستقیماً مشاهده کنید.
یکی دیگر از امتیازات Rails درخصوص تهیه برنامههای تحت وب این است که عملیات CRUD یا Delete ،Create – Retrieve – Update و نمایی از پایگاه داده به صورت خودکار آماده میشود.
Rails، خود از اجزایی تشکیل شده است که با همدیگر در ارتباط نزدیک هستند؛ البته این اجزا میتوانند به صورت مستقل نصب شوند. برخی از این اجزا عبارتند از:
- ORM :Active Record و ارتباطدهنده مدل (model) به جداول بانک اطلاعاتی
- Action Pack: سازنده View و Controller در معماری MVC
- Prototype سازنده اجزای داخل صفحه وب از جمله ایجکس
-Action Mailer: مسئول دریافت و ارسال ایمیل
- Action Web Service: پشتیبان SOAP ،XML و WSDL
قطعه کد زیر نمونهای از کدهای RoR را نشان میدهد که عبارت Hello World را نمایش میدهند:
منابع: ماهنامه شبکه
کدامیک از Framework های PHP را برگزینیم؟

فریم ورک
های بسیار زیادی برای PHP نوشته شده است که هر کدام ویژگیها و امکانات
خاص خودشان را دارد. برای برگزیدن یکی از آنها، نیاز به بررسی همه و
آشنایی نسبی با آنها دارد. در این
نوشته پنج Framework مشهور را برگزیده و بررسی شده است. این بررسی
میخواهد یک Overview کلی از هر کدام را نشان دهد تا برای دیگران، انتخاب
آسانتر شود.
همچنین این Framework از PHP 4 پشتیبانی نمیکند و تنها در PHP 5 اجرا میشود. با توجه به تلاشهای زیاد این (یکی از مزایای Zend این است که شما فقط از کتابخانه های مورد نیازتان استفاده می کنید و این امر برنامه ها را سبک تر می کند) بد نیست بدانید که در بین سایتهای ایرانی، سایت مشهور کلوب با کمک Zend Framework درست شده است. ولی به سیمفونی از ORM مشهوری به نام Propel خوب حدس
طبیعتا Zend Framework سرشناسترین و بالاترین گزینه ما است؛ چون که Zend،
شرکتی که پشت PHP است آن را طراحی و تولید کرده است. این Framework
امکانات زیادی داشته و بسیار قدرتمند است و هر آن چه که برای تولید یک
پروژه بزرگ لازم داشته باشید در خود دارد. License آن هم BSD است که به شدت انعطاف پذیر بوده و شرط میکند که در صورت توسعه آن باید کد تولید شده کاملا انعطاف پذیر باشد.
اخیر برای ارتقاء به PHP 5 در سرورها شاید این مسئله کمتر به چشم بیاید
ولی به هر روی ناهماهنگی با یکی از گستردهترین نسخههای PHP در این
Framework به چشم میخورد.
Framework و کامپوننتهای فراوان آن برای پروژههای خیلی خیلی بزرگ مناسب
است ولی برای خیلی از پروژهها چیزهایی را ارائه میکند که خیلی بیشتر از
نیاز آنها است و همچنین به طور نسبی از پیچیدگیهایی برخوردار است. خیلی
از چیزهایی که Zend Framework داره، خیلی کم کاربرد است. در هر حال، گزینه
برگزیده من Zend Framework نیست. به باور من Zend Framework خیلی خوش دست
نیست و یاد گرفتن آن زمان زیادتری میبرد و زمان زیادی لازم هست تا بفهمید
دقیقا چگونه کار میکند. این پیچیدگی مخصوصا اگر بخواهید با یک تیم کار
کنید، سبب میشود تا زمان زیادی برای آموزش تیم از بین برود. همچنین این
Framework شما را به پیروی از MVC اجبار نمیکند. این مساله اگر چه از یک
سو سبب انعطافپذیری میشود ولی از سوی دیگر هم ممکن است کار شما را غیر
استاندارد کند.
یکی از مشهورترین و محبوبترین Frameworkها و یکی از بهترین برابرهای Rails
در PHP به شمار میآید. از MVC کامل پشتیبانی میکند. کاربران خیلی زیاد و
فعالی دارد که ویژگی مهمی به حساب میآید. اگر چه من اصلا از Mambo خوشم
نمیآید ولی این CMS محبوب Mambo هم قرار است در نسخههای آینده از CakePHP استفاده کند.
اما این سیستم دو تا اشکال کوچک هم دارد. یکی این که بیش از اندازه کند
است (برای خواندن گزارش یک Benchmark خوب بین CakePHP، Zend Framework و
CodeIgniter اینجا
را ببینید). این مساله در صورتی که هزینه سرور برای شما اهمیت داشته باشد،
خودش را بیشتر نشان میدهد. دوم این که اسامی کلاسهایی CakePHP خیلی عمومی
طراحی شده است. برای نمونه کلاس Database که اگر شما هم کلاس مشابهی داشته
باشید، سبب ایجاد ناهماهنگی در کد شما میشود و به طور کلی چنین اسمگذاری
و به کار نگرفتن پیشوند مناسب مانند Cake سبب بدبینی نسبی من به طراحی این
سیستم شده است.
همچنین ORMی که در CakePHP طراحی شده است، توارث را پشتیبانی نمیکند و به
باور من چندان استاندارد نیست. (با Hackهایی میتوان مشکل توارث ORM در
CakePHP حل کرد. در این باره رک: Kelnishi.com)
طور کلی نصب CakePHP خیلی ساده است و راه انداختن اولیه سایت باهاش کار
ساده و آسانی است. بر خلاف Zend Framework که نمیدانستید از کجا باید
آغاز کنید، در CakePHP خیلی سریع میتوانید یک سایت ساده راه بیاندازید.
ولی انجام کارهای پیشرفتهتر به دلیل نبودن مستندات کافی و راهنماهای
مناسب کمی با CakePHP دشوار است. در هر حال گزینه انتخابی من CakePHP هم
نیست.
از همه گزینههای دیگر متفاوت است. بر پایه MVC درست نشده است. طراح Prado
این کار را برای پروژه دکترایش انجام داده است و در طراحی آن Delphi را مد
نظر داشته و تلاش کرده تا یک Framework کاملا Object Oriented و Event
Driven درست کند. اگر با ASP.NET کار کرده باشید، Prado را خیلی مشابه با
آن خواهید یافت. در Prado همه چیز حتی یک Label و Button هم Object است که
Propertyها و Eventهای خاص خودش را دارد. همچنین زبانی شبیه به HTML برای
طراحی ظاهر صفحات دارد (دقیقا شبیه به ASP.NET و Tagهای asp: این زبان)
من اگر چه ASP.NET را دوست دارم و باهاش کار هم میکنم و اگر چه فکر
میکنم Prado سیستم خیلی قشنگ و تمیزی است ولی Prado هم گزینه برگزیده من
نیست؛ چون پشتیبانی یک سیستم از MVC برایم اهمیت زیادی دارد.
این Framework خیلی شبیه به CakePHP و از آن سادهتر و کوچکتر است و به
همین خاطر هم از لحاظ سرعت از CakePHP خیلی بهتر است ولی خوب به همان
اندازه هم امکانات کمتری دارد. این Framework شما را مجبور به پیروی کامل
از MVC نمیکند، بنابراین برای یادگیری نوآموزان بهتر است. از Ajax هم
مستقیما پشتیبانی نمیکند. ولی Code Igniter ویژگیهای خوبی هم دارد. این
Framework در PHP 4 هم کار میکند و از لحاظ سبک برنامهنویسی به سبک
برنامهنویسی PHP 4 نزدیک است. به همین خاطر برای Port کردن کدهای قدیمی
به یک Framework گزینه مناسبی است. همچنین دارای Community بزرگی است و
کامپوننتها و مثالهای فراوانی برایش پیدا میشود. این Framework هم همانند
CakePHP گزینش من نیست.
این Framework امکانات بسیار زیادی دارد و ماژولهای جداگانه را برای
انجام کارهای خودش به کار میگیرد: مانند DB Layer که با امکانات زیاد
خودش واقعا لایه بانک اطلاعاتی شما را به بهترین شکل پشتیبانی میکند و
امکان نوشتن برنامه مستقل از بانک اطلاعاتی را به شما میدهد. (اگر چه این
ویژگی در Frameworkهای دیگر هم هست).
برای انجام پروژههای بزرگ symfony به خاطر امکانات زیادش، گزینه خیلی
خوبی است ولی با این حال، پیچیدگیهای Zend Framework را هم ندارد. این
Framework هم تنها بر روی PHP 5 کار میکند. License آن هم MIT است که
License خوب و انعطافپذیری به حساب میآید. همچنین این Framework به خوبی
AJAX را پشتیبانی میکند و امکاناتی برای ساختن صفحات Admin سایت دارد که
کار طراحی بخش مدیریتی سایت را خیلی آسان میکند.
بهره میگیرد که به باور من سیستم بسیار قدرتمندی است. اگر چه در CakePHP
هم ORM هست ولی در آن جا از یک سیستم داخلی استفاده شده است. به کار گیری
یک ORM بیرونی سبب افزایش سرعت توسعه سیمفونی شده است؛ چون که Propel
سیستم خیلی مشهوری بوده و به طور عادی خودش در حال توسعه هست. این مساله
همچنین هوشمندی طراحان سیمفونی را نشان میدهد.
زدنش سخت نیست. Framework برگزیده من symfony است. طراحی دقیق و محکم،
سرعت مناسب، امکانات خیلی زیاد، مستندات و Community بزرگ آن، وجود ویژگی
Admin Generator و سیستم کنترل دسترسی که سبب میشود من بتوانم در زمان
طراحی صفحات سایت به مسائل مهمتر و افزودن ویژگیهای اصلی بپردازم، از
دلایل این گزینش من است.
نگاهی گذرا بر برخی قابلیت های جدید در ASP.NET 4

نسخه جدید ASP.NETقابلیت های خوبی به وب فرم ها و visual web developer
اضافه شده که در زیر بعضی از اونها رو بررسی میکنیم
۱- توانایی ست کرد Meta tag
2-کنتر بیشتر روی View state
3-کنترل بیشتر روی Id ایجاد شده برای کنترل ها
۴-کنترل بیشتر روی تگ های ایجاد شده برای بعضی کنترل های دیتابیسی
۵- تمپلیت های جدید برای پروژه ها
در قسمت بعدی چند نمونه از این تغییرات را با هم خواهیم دید.
است. در asp.net 4 یک خاصیت جدید به نام ViewStateModeبه کنترل ها اضافه
شده که به کمک آن میتوانید عملکرد Viewstate هر کنترل را به طور جداگانه
تعیین نمایید. این خاصیت سه مقدار Desable,Enable,Inherit را میپذرد و
تعین میکند که Viewstate از صفحه به ارث برده شود، فعال باشد یا غیر فعال.
قابلیت بعدی کنترل روی ID ایجاد شده برای کنترل ها میباشد. در نسخه های
قبلی اگر کنترلی داخل یوزرکنترل قرار میگرفت یا کنترل درون صفحه ای قرار
میگرفت که درون یک مستر پیچ قرار داشت، به نام آن کنترل پیشوند هایی اضافه
میشد تا یکتا بودن نام آن کنترل را در صفحه تضمین کند. این نامها در بساری
از مواقع خوانایی کمی داشتند و مهم تر از همه هیچ کنترلی روی این نام ها
نداشتیم. در نسخه جدید ASP.NET این قابلیت برای برنامه نویس فراهم شده است
که کنترل دقیقی برو روی نام های ایجاد شده برای کنترل ها داشته باشد.
برای این منظور از خاصیت جدید ClientIDMode استفاده میکنیم که تعیین میکند
نام به صورت اتوماتیک ایجاد شود، ثابت باشد، به ارث برسد یا از قاعده ما
پیروی کند.
و در آخر تمپلیت های جدید نیز برای انواع جدید از پروژه ها به این نسخه
اضافه شده است. مانندDynamic Data, ASP.NET MVC,Entity Templatesو …
برای آشنایی کامل تری با این امکانات میتوانید به اینجا مراجعه کنید.
همین دیگه! تموم شد.
مقدمه ای بر Xml
• HTML برای نمايش اطلاعات و برای تمركز روی چگونگی ديده شدن اطلاعات طراحی شده است.
قبل از ادامه اين بحث، شما بايد مقداری درك پايه ای از موارد زير داشته باشيد:
• WWW,HTML و اساس ساخت صفحات وب
• زبانهای اسكريپت وب مانند JavaScript , VBScript
XMLچيست؟
• XML برگرفته شده از كلمات Extensible Markup Language است.
• XML يك Markup Language مانند HTML است.
• tag (برچسب) های XML از قبل تعريف شده نيستند، شما خودتان بايد آنها را تعريف كنيد.
• XML از يك (Document Type Definition) DTD برای شرح اطلاعات استفاده ميكند.
• XML با يك DTD طراحی ميشود تا خود-توصيف باشد.
تفاون اصلی بين XML و HTML
• XML برای حمل اطلاعات طراحی شده است.
• XML يك جايگزين برای HTML نيست.
• XML و HTML برای هدفهای مختلفی طراحی شده اند.
• HTML برای نمايش اطلاعات و XML برای شرح و حمل و نقل اطلاعات است.
XML كاری انجام نميدهد!
شايد اين موضوع برای درك كردن كمی مشكل باشد، اما XML كاری انجام نميدهد. XML ساخته نشده تا كاری انجام دهد. XML به عنوان يك راه برای سازماندهی كردن، ذخيره كردن و فرستادن اطلاعات ساخته شده است. مثال زير يك يادداشت از Jani به Tove است كه در ساختار XML ذخيره شده است:
Tove Jani Reminder Dont forget me this weekend!
XML آزاد و قابل گسترش
• برچسبهای XML از قبل تعريف شده نيستند، شما بايد برچسبها را خودتان درست كنيد.
• برچسبهايی كه در HTML بكار ميروند از پيش تعريف شده هستند و مؤلف سندهای HTML فقط ميتواند از برچسبهای تعريف شده در HTML استاندارد استفاده كند ( مانند
و
).
• XML به مؤلف اجازه ميدهد تا برچسبهای خود و ساختار آنها را تعريف كند.
• برچسبهای مثال بالا ( مانند و) در XML استاندارد تعريف شده نيستند، اين برچسبها توسط مؤلف سند XML تعريف شده اند.
XML يك مكمل برای HTML
• XML يك جايگزين برای HTML نيست.
• درك اينكه XML يك جايگزين برای HTML نيست خيلی مهم است.
• در آينده گسترش وب احتمال داده ميشود كه XML برای شرح اطلاعات به كار خواهد رفت،درحاليکه كه HTML برای فرمت و نمايش اطلاعات به كار خواهد رفت.
• شايد اين بهترين تعريف از XML باشد: ابزاری مستقل از سخت افزار و نرم افزار برای انتقال اطلاعات است.
XML ميتواند اطلاعات را از HTML جدا كند
• با XML اطلاعات شما در خارج از HTML ذخيره ميشود.
• هنگامی كه HTML برای نمايش اطلاعات استفاده ميشود، اطلاعات در درون HTML ذخيره شده است. با XML اطلاعات ميتواند در فايلهای جدای XML ذخيره شود. در اين روش شما ميتوانيد HTML را به عنوان لايه ای روی اطلاعات و برای نمايش آنها فرض كنيد و مطمئن باشيد كه تغيير در اطلاعات لايه های زيرين احتياج به تغيير HTML شما نخواهد داشت.
XML يك مكمل برای HTML
• XML يك جايگزين برای HTML نيست.
• درك اينكه XML يك جايگزين برای HTML نيست خيلی مهم است.
• در آينده گسترش وب احتمال داده ميشود كه XML برای شرح اطلاعات به كار خواهد رفت،درحاليکه كه HTML برای فرمت و نمايش اطلاعات به كار خواهد رفت.
• شايد اين بهترين تعريف از XML باشد: ابزاری مستقل از سخت افزار و نرم افزار برای انتقال اطلاعات است.
XML ميتواند اطلاعات را از HTML جدا كند
• با XML اطلاعات شما در خارج از HTML ذخيره ميشود.
• هنگامی كه HTML برای نمايش اطلاعات استفاده ميشود، اطلاعات در درون HTML ذخيره شده است. با XML اطلاعات ميتواند در فايلهای جدای XML ذخيره شود. در اين روش شما ميتوانيد HTML را به عنوان لايه ای روی اطلاعات و برای نمايش آنها فرض كنيد و مطمئن باشيد كه تغيير در اطلاعات لايه های زيرين احتياج به تغيير HTML شما نخواهد داشت.
13 افزونه برتر برای Firefox برای طراحان وب
اگرچه من به عنوان کاربر وب از افزونه های زیادی استفاده می کنم، اما به عنوان یک طراح وب استفاده از برخی افزونه ها دردسر های طراحی وب را به شدت کم می کنند و مطمئن هستم بدون این افزونه های فایرفاکس واقعا نمی توانم کار طراحی وب را انجام بدهم.
در ادامه لیستی از 14 افزونه برتر برای فایرفاکس برای طراحان وب را قرارداده ام.
Web Developer:

اگر بخواهم از بین افزونه های موجود برای Firefox فقط یکی را انتخاب کنم، مطمئنا آن یک گزینه فقط Web Developer است. از جمله ویژگی هایی از این افزونه که معمولا از آنها استفاده می کنم، تغییر در CSS و مشاهده تغییرات بر روی صفحه در حین ایجاد تغییرات، و همینطور برای HTML است. از دیگر ویژگی های آن امکان غیر فعال کردن موقت javascript است. دستکاری کوکی ها، دستکاری فرم ها و ایجاد تغییرات بسیار زیاد در آنها، حذف کوکی ها با تعیین شرایط خاص، غیر فعال کردن تصاویر، مشخص کردن عناصر خاص در صفحه که کادر قرمزی دور آنها کشیده شود و نیز استفاده از لینک های در دسترس برای بررسی Validate بودن صفحه از جمله ویژگی هایی است که معمولا به طور روزانه از آنها استفاده می کنم.
البته ویژگی های Web Developer محدود به همین موارد نیست و حتما باید آن را نصب کنید و امتحان کنید تا به قدرت آن پی ببرید!
Firebug:

اگرچه این افزونه برای رفع اشکالات در javascript معروف تر است، اما به این کاربرد محدود نیست. از جمله کاربردهای این افزونه پیدا کردن کد مربوط به یک عنصر در صفحه با اشاره کردن به آن عنصر توسط ماوس است.
معمولا طراحی وب بدون وجود این افزونه بسیار مشکل است و اگرچه آن را در ردیف دوم بعد از Web Developer معرفی کردم، اما اصلا کم ارزش تر از آن نیست. نکته جالب توجه در مورد این افزونه این است که افزونه های دیگری برای Firebug نوشته شده اند که قابلیت های جدیدی به Firebug اضافه می کنند!
ScrapBook:

یکی از برترین افزونه هایی که به نظر من همه ی مرورگرها باید نظیر آن را داشته باشند، Scrapbook است. معمولا طراحان وب لیست عظیمی از صفحات وب را باید در رایانه شون نگهداری کنند که مدیریت و نگهداری اون کار بسیار سختی است. علاوه بر اون معمولا وقتی از گزینه Save برای ذخیره کردن صفحه ای استفاده کنیم، هیچ وقت صفحات به طور کامل ذخیره نمی شوند.
اما Scrapbook این مشکل را حل کرده است. علاوه بر این که ذخیره کردن صفحات به راحتی و به طور کامل توسط این افزونه انجام می شود، این افزونه مدیریت بسیار قوی را بر صفحات ذخیره شده در اختیار ما قرار می دهد. قابلیت جستجوی متن خاص در کل سایت های ذخیره شده هم از قابلیت های Scrapbook است. علاوه بر این ها امکان تعیین عناصری که در خود صفحه وجود ندارند و لینکی از اونها در صفحه وجود دارد نیز ممکن است. حتی می توان عمق ذخیره سازی را معین کرد تا این افزونه تا عمق خاصی در لینک هایی که پیدا می کند پیش برود و همه ی آنها را تحت یک نام ذخیره کند.
در یک کلام، این افزونه فوق العاده است!
Fiddler:

برخلاف مواردی که تا به حال معرفی شدند، Fiddler یک افزونه نیست. بلکه یک نرم افزار مجزا از Firefox است. اما به علت نیازی که به آن وجود دارد تصمیم گرفتم در این لیست قرار بدهمش. البته بی دلیل هم نیست، چون در ابتدا قصد داشتم افزونه Live Http Headers رو در لیست قرار بدم. اما چون ویژگی های Fiddler بسیار بیشتر است، Fiddler جای Live Http Headers را گرفت. بعد از نصب نرم افزار، افزونه ای هم بر روی Firefox نصب می شود که به راحتی می توان Fiddler را فعال یا غیر فعال کرد.
در یک کلام، Fiddler برای نشان دادن کل ترافیک ارسالی و دریافتی مرورگر استفاده می شود. برای ساختن نرم افزارهای تحت وب واقعا چنین چیزی فوق العاده مورد نیاز است.
FireFTP:

ساده، ولی بسیار کارآمد! یک مدیر FTP در Firefox.
Window Resizer:

مسلما همه ی کاربران وب از یک Resolution به صفحه ی وب نگاه نمی کنند. برای اینکه بدانیم سایت ما در Resolutionهای مختلف چطور نمایش داده می شود، می توانیم از این افزونه ساده استفاده کنیم. البته همین قابلیت در Web Developer هم وجود دارد، اما کار با این افزونه کمی راحت تر است.مخصوصا که اندازه های پیش فرض را هم از قبل تعریف شده دارد.
YSlow:

افزونه ای برای Firebug! این افزونه که توسط یاهو ساخته شده است، چند نکته اساسی برای بالا بردن سرعت بارگذاری سایت ها را بررسی می کند. البته واقعا بعضی موارد را نمی توان کاری کرد. رعایت بعضی از موارد هم ممکن است سرعت مشاهده را برای کاربران با اینترنت سرعت پایین نامناسب تر کند. به هر حال باید با دقت به این موارد توجه کرد.
MeasureIt:

گاهی اوقات طراح وب نیازمند آن است که اندازه بخشی از صفحه وب را بر حسب pixel بداند. این افزونه جالب به راحتی این امکان را در اختیار طراح وب قرار می دهد تا بتواند با کشیدن یک مستطیل بر روی صفحه طول و عرض آن را بر حسب pixel بدست آورد
IE Tab:

در صورتی که بخواهیم بدانیم سایتی در مرورگر Internet Explorer به چه شکلی نمایش داده می شود، اما نخواهیم Firefox را ترک کنیم، می توانیم از این مرورگر استفاده نماییم.
GA?:

افزونه کوچکی که نشان می دهد آیا Google Analytics برای سایتی که در حال دیدن آن هستیم فعال است یا خیر
Selenium IDE:

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

این افزونه اطلاعاتی را مرتبط با SEO به طراح وب می دهد. اطلاعاتی نظیر PageRank در سایت های مختلف، قیمت تقریبی محاسبه شده سایت، امکانات SEO نصب شده در سایت و موارد دیگر
LiveClick:

بسیاری از طراحان وب مجموعه ای از RSS Feed ها را به نوار Bookmark در Firefox اضافه کرده اند. بررسی تک تک آنها برای بررسی آن که آیا به روز رسانی شده اند یا خیر فقط وقتی تعدادشان محدود باشد معقول به نظر می رسد. اما برای طراح وبی که نوار ابزار خودش را با 14 مورد پر کرده باشد که بعضی از آنها هم مجموعه ای از RSS Feedها باشند، بررسی دستی آنها فقط یک کابوس است! استفاده از این افزونه باعث می شود تا به طور خودکار Feedها بررسی شوند و در صورتی که مورد جدیدی در آنها وجود داشته باشد، به رنگ قرمز نمایش داده شوند.
استفاده از PHP در Visual Studio.net!
البته در صورتی که ویژوال استدیو رو رو سیستمتون دارید کارتون راحت تره چون فقط یه فایل 35 مگابایتی رو برای VS.net 2005 دانلود میکنین. در غیر اینصورت باید فایل 85 مگابایتی رو که محیط Runtime دات نت 2.0 رو هم داره بدانلودین!
حتی نسخه ای از این نرم افزار برای VS.net 2003 هم وجود داره .
واقعا احمقانه اس اگه فکر کنیم که این نرم افزار رایگانه! فقط تا 30 روز میتونین نسخه آزمایشیشو استفاده کنین.

ترفند های php

.
این ترفندها رو شاید تا حالا دیده باشید ولی برای کاربرانی که میخواهند تازه شروع کنند به یادگیری PHP میتونه خیلی مفید و جذاب باشه. خوب شروع میکنیم.
ترفند ۱ : شمارش کاراکترهای یک رشته
اغلب برنامهنویسان برای این کار از تابع strlen() استفاده میکنند اما یک راه حل راحتتر وجود داره. البته در این روش بایستی تعداد کاراکتری که میخواهید کنترل کنید را داشته باشید.
ترفند ۲ : استفاده از Echo به عنوان یک تابع$string = ‘testing’;if(isset($string[6]))
echo “The string ‘$string’ is at least 7 characters long.”;
else
echo “The string ‘$string’ is less than 7 characters long.”;
?>
همیشه برای اتصال رشتهها در PHP معمول شده است که از نقطه (.) استفاده شود. اما شما در تابع echo میتوانید رشتههایتان را به صورت کاما (,) از هم جدا کنید.
ترفند ۳ : تا جایی که ممکن است از نقل قول تکی (‘) به جای نقل قول دوتایی (“) استفاده کنید$string1 = ‘test-string1′;
$string2 = ‘test-string2′;
$string3 = ‘test-string3′;echo ‘String #1: ‘, $string1, ‘
’;
echo ‘String #2: ‘, $string2, ‘
’;
echo ‘String #3: ‘, $string3, ‘
’;
?>
بوسیلهی استفاده از کاراکتر نقل قول تکی زمان پارس کردن رشتهها توسط PHP را کاهش میدهید. این کار نه تنها برنامههایتان را سریعتر میکند بلکه برای برنامهنویس هم امکان تشخیص سریعتر اینکه در یک رشته از چه متغیرهایی استفاده شده است را فراهم میکند.
همچنین هنگامی که از آرایههای انجمنی (ایندس بوسیلهی رشته) استفاده میکنید همیشه از کاراکترهای نقل قول تکی استفاده کنید. این کار شما به PHP کمک میکند تا دقیقا بداند که منظور شما چه بوده است.
ترفند ۴ : متغیر متغیر در PHP
از این روش زمانی میتوانید استفاده کنید که اسم متغیرهای شما بایستی تغییر کنند ولی دیگر نیاز ندارید که همهی متغیرهای قبلی استفاده شده را هم تغییر بدهید. بلکه متغیری از نوع متغیر ایجاد کرده و به آن اشاره میکند ( شبیه اشارهگر عمل میکند )
$var1 = ‘nameOfVariable’;خروجی این برنامه همان رشتهای است که در متغیر nameOfVariable قرار گرفته است.
$nameOfVariable = ‘This is the value I want!!!’;
echo $$var1;
?>
ترفند ۵ : استفاده از آرایه در فیلدهای فرمها
نه تنها میتوانید فیلدها را به صورت آرایه در PHP بگیرید بلکه میتوانید به صورت مستقیم نیز در همان فرم به آنها را به صورت آرایه تعریف کنید. این کار برای عناصری مانند checkbox ها در فرم ها مفید است که کاربر میتواند بیش از یک گزینه را انتخاب کند.
هنگامی که این فرم به یک صفحهی PHP پست میشود میتوانید تمامی مقادیر checkbox ها را در یک آرایهی hobbies داشته باشید.
ترفند ۶ : بافر کردن خروجی در PHP
خیلی پیش میآید که خروجی که میخواهید نمایش دهید دقیقا آن جایی نیست که میخواهید نمایش دهید. البته در اغلب کتابهای پیشرفتهی PHP این مورد به عنوان یک مطلب مهم مورد پوشش قرار گرفته. ولی برای کاربرانی که تازه آشنا میشوند بگم که این مورد به خصوص برای زمانی که برنامهی شما میخواهد با Cookie ها یا Session ها کار کند ، نباید قبل از ارسال سرآیند http هیچگونه خروجی به مرورگر ارسال شود. بوسیلهی این ترفند میتوانید هرجا که خواستید echo بزنید ولی فقط زمانی که شما بخواهید نمایش داده شود :
قبل از بافر کردن بایستی ob_start را فراخوانی کرده و سپس در انتها با تابع ob_get_contents() خروجی که ارسال کردهاید را بگیرید و بافر کردن را با ob_end_clean() پایان بدهید و سپس هرجا که خواستید متغیر ذخیره شده را به خروجی ببرید.ob_start();echo ‘Print to the screen!!!’;
$getContent = ob_get_contents();
ob_end_clean();// Do whatever you want…
// Do something with the printed content (only if you want)…echo ‘Now: ‘ . $getContent;?>
آموزش Vb.net (بخش سوم)
برای تعريف يک متغير در ويژوال بيسيک دات نت از عبارت Dim استفاده می شود. برای مثال چمله زير يک متغير جديد به نام myVar تعريف می کند:
Dim myVar
هنگامی که يک متغير مانند فوق بدون در نظر گرفتن نوع آن تعريف شود، آن متغير بعنوان يک شئ (Object) در نظر گرفته می شود. يک متغير از نوع شئ در دات نت می تواند شامل انواع داده از قبيل رشته، عدد يا انواع پيچيده تر مانند کلاس باشد.
اغلب نيازی نيست که از متغيرهای از نوع شئ در برنامه استفاده شود چرا که اين متغيرها باعث کاهش کارآيی و سرعت برنامه می شود. هنگامی که از يک متغير از نوع شئ استفاده شود، نوع مناسب آن متغير در زمان اجرا تشخيص داده می شود و اين باعث کندی می شود. بنابراين بهتر است که نوع داده را از ابتدا مشخص کنيم.
جهت مشخص نمودن نوع داده از کلمه کليدی As استفاده می کنيم. بعنوان مثال يک متغير از نوع رشته بصورت زير تعريف می شود:
Dim myVar As String
مجموعه دات نت انواع داده ای زير را پشتيبانی می کند:
• Boolean: جهت مقادير درست يا نادرست
• Byte: جهت مقادير صحيح صفر تا ۲۵۵ (تنها مقادير مثبت)
• Char: جهت مقادير نويسه ها يا حروف يونيکد
• Date: جهت مقادير تاريخ و زمان بين اول ژانويه ۰۰۰۱ و ۳۱ دسامبر ۹۹۹۹
• Decimal: جهت مقادير صحيح بين صفر و مثبت و منفی ۷۹,۲۲۸,۱۶۲,۵۱۴,۲۶۴,۳۳۷,۵۹۳,۵� �۳,۹۵۰,۳۳۵ (۱۶ بايت)
• Double: جهت مقادير اعشاری با دقت مضاعف
• Integre: جهت مقادير صحيح بين +۲,۱۴۷,۴۸۳,۶۴۷ و -۲,۱۴۷,۴۸۳,۶۴۸ (۴ بايت)
• Long: جهت مقادير صحيح بين -۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۸ و +۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۷ (۸ بايت)
• Short: جهت مقادير صحيح بين -۳۲,۷۶۸ و +۳۲,۷۶۷ (۲ بايت)
• Single: جهت مقادير اعشاری با دقت واحد
• String: جهت مقادير رشته ای با تعداد حروف صفر تا دو ميليارد حرف
پر کاربردترين انواع داده ای عبارتند از Integer، Decimal، Date، Boolean و String.
دقت کنيد که نوع داده ای Currency يا Money برای مقادير پولی در نظر گرفته نشده است و شما می توانيد برای مقادير پولی از نوع Decimal استفاده کنيد.
آموزش Vb.net (بخش اول)
برنامه نويسی کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان است . برای نيل به هدف فوق ، می بايست تمامی مراحل لازم بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل های ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار برای آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم می گردد ) . VB.NET ، زبانی است که می توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان ) مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، می توان محصولاتی راايجاد که زمينه استفاده از آنان در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيری يک تکنولوژی در ابتدا می بايست شيوه راه رفتن را بياموزيم و در ادامه اقدام به دويدن نمود .
VB.NET يکی از زبان های حمايت شده در دات نت می باشد . با استفاده از زبان فوق علاوه بر اينکه می توان برنامه های مبتنی بر ويندوز را پياده سازی نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه های مبتنی بر وب که از تکنولوژی ASP.NET استفاده می نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان در دات نت ، مجموعه مقالاتی در رابطه با آموزش اصولی اين زبان آماده شده که بتدريج بر روی سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفی اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با ويژگی های منحصر بفرد برنامه های مبتنی بر ويندوز در قياس با برنامه های مبتنی بر DOS ، آشنا شده و پس از مروری مختصر به روند شکل گيری نسخه های متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم .
برنامه نويسی مبتنی بر DOS در مقابل ويندوز
برنامه نويسی مبتنی بر ويندوز دارای تفاوت های عمده ای نسبت به برنامه نويسی سنتی در محيط DOS است.برنامه های DOS ، مسيری دقيق و مشخص را ازابتدا تا پايان دنبال می نمايند . رويکرد فوق ، باعث بروز محدوديت هائی در رابطه با عملکرد برنامه ها از يکطرف و تحميل محدوديت هائی به کاربران در طی نمودن مسير مشخص شده ، می گردد. از زاويه ای خاص می توان عملکرد يک برنامه مبتنی بر DOS را مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائی سالن ، می بايست طول سالن طی تا به انتهای آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، می بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا" امکان بازنمودن درب های خاصی ، وجود خواهد داشت . ويندوز ، دنيای جديدی از برنامه نويسی مبتنی بر "رويداد" را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک Textbox ، نمونه هائی از يک "رويداد" می باشند. کدهای نوشته شده ، نحوه برخورد با يک رويداد را مشخص می نمايد. برای رسيدن به انتهای يک سالن کافی است بر روی "انتهای سالن " ، کليک نمود و ديگر ضرورتی به پيمودن تمامی مسير تا رسيدن به انتهای سالن نخواهد بود . درصورتيکه به انتهای سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلی نيست که انتظار آن را داشته ايم ، بسادگی می توان مقصد جديدی را برای خود انتخاب ، بدون اينکه ضرورتی به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل های لازم در ارتباط با حرکت شما را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ی مورد نظر انجام خواهد داد . با استفاده از VB.NET ، می توان کدهای لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان می توانند کدهای لازم در رابطه با رويدادهائی که امکان تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه می توان از نوشتن کدهای ديگر بمنظور برخورد با رويدادهای غيرضروری ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معنی است که اگر می خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد "کليک" را داشته باشد ، می بايست صرفا" کد مربوط به رويداد " کليک"، نوشته گردد و الزامی به نوشتن کدهای لازم بمنظور برخورد با رويداد "کليک مضاعف" ، وجود نخواهد داشت . در دنيای برنامه نويسی DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام می دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
يکی ديگر از مزايای مهم برنامه های ويندوز ، عدم وابستگی برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بينی و برنامه نويسان نياز به آگاهی از نحوه عملکرد يک دستگاه سخت افزاری خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتی به آگاهی از نحوه عملکرد هر نوع چاپگر ليزری، بمنظور ايجاد خروجی مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين های عمومی که با درايورهای مورد نظر مرتبط می گردند ، فراهم می نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد .
روتين های عمومی اصطلاحا" Windows (API ) Application Programming Interface ناميده می شوند .
تاريخچه ويژوال بيسيک
قبل از معرفی ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه استفاده از ++C بهمراه موارد پيچيده ای در اين خصوص بودند . بدين ترتيب ، صرفا" افراد خاص آموزش ديده، قادر به خلق نرم افزارهای قدرتمند بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و می توان اين ادعا را داشت که امروزه خطوط زيادی از برنامه های نوشته شده با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسی تحت ويندوز را با حذف عمليات اضافی برای نوشتن کدهای لازم جهت طراحی بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ، زمانيکه بخش رابط کاربر ، ترسيم می گردد ، برنامه نويس می تواند کدهای لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنيای برنامه نويسی با تغيير مهمی مواجه گرديد. در اين راستا امکانات مناسبی برای نوشتن برنامه های مبتنی بر بانک های اطلاعاتی ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدی با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه های شماره چهار و پنج ، قابليت های نسخه سه را افزايش و اين امکان را برای پياده کنندگان نرم افزار فراهم نمود تا برنامه های خود را جهت اجراء در محيط ويندوز 95 ، طراحی و پياده سازی نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن کدهائی گرديدند که امکان استفاده از آنان توسط ساير پياده کنندگان نرم افزار که از زبانی ديگر استفاده می کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدی بمنظور دستيابی به بانک های اطلاعاتی را ارائه نمود: ADO)ActiveX Data Objects ) . يکی از اهداف اوليه طراحی ADO ، امکان دستيابی به بانک های اطلاعاتی برای پياده کنندگان برنامه های مبتنی بر وب است که از تکنولوژی ASP ، استفاده می نمايند.
همزمان با ارائه جديدترين نسخه ويژوال بيسيک که VB.NET ناميده می شود ، بسياری از محدوديت های مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته ويژوال بيسيک با انتفادات فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياری آن را نظير يک اسباب بازی در دنيای وسيع زبان های برنامه نويسی می پنداشتند. VB.NET با غلبه بر مشکلات نسخه های پيشين ، توانسته است در مدت زمان کوتاهی ، بعنوان يک ابزار پياده سازی بسيار قدرتمند مطرح و گزينه ای مناسب برای برنامه نويسان در تمامی سطوح باشد .
نصب VB.NET
برای نصب VB.NET ، از دو رويکرد متفاوت می توان استفاده کرد :
• نصب بهمراه ويژوال استوديو دات نت
• نصب نسخه استاندارد
هر يک از گزينه های فوق ، امکان ايجاد برنامه های مبتنی بر ويندوز را فراهم می نمايند . مراحلی که در ادامه ذکر می گردد ، نحوه نصب ويژوال استوديو را تشريح می نمايد .
مرحله اول : برنامه Setup.exe را از روی CD مربوطه فعال نمائيد.
مرحله دوم : جعبه محاوره ای ، مراحل و اولويت های عمليات نصب را نشان خواهد داد. بمنظور صحت عملکرد VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازی عناصر (Components) است . بر روی گزينه Windows Component Update ، کليک نمائيد.
مرحله سوم : برنامه نصب در ادامه سيستم را بررسی تا نوع عناصری را که می بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازی به وضعيت ماشينی که بر روی آن ويژوال استوديو دات نت نصب می گردد، بستگی خواهد داشت .
مرحله چهارم : با توجه به اينکه ممکن است در زمان بهنگام سازی لازم باشد چندين مرتبه سيستم راه اندازی گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتی به نشستن و نگاه کردن به کامپيوتر و واکنش لازم ( درج نام و رمز عبور به سيستم ) پس از هر مرتبه راه اندازی سيستم نباشد . بدين ترتيب در زمان راه انداری سيستم ، عمليات مربوطه بصورت اتوماتيک و بدون نياز به تايپ نام و رمز عبور ، انجام خواهد شد . عمليات فوق ، اختياری است و در صورتيکه گزينه فوق انتخاب نگردد ، با هر مرتبه راه اندازی سيستم، پيام مناسب ارائه و می بايست واکنش لازم ( تايپ نام و رمز عبور) را انجام داد .
مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now ، بهنگام سازی عناصر (Components) آغاز می گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده می شود . در مقابل عنصر جاری برای بهنگام سازی نيز يک فلش قرمز رنگ نسان داده می شود.
مرحله ششم : پس از بهنگام سازی عناصر ، مجددا" به صفحه اصلی Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم می گردد.( کليک نمودن برروی گزينه Visiual Studio.NET )
نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازی نمائيد ، لازم است IIS و FrontPage Extensions قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روی کامپيوتری نصب می گردد که دارای سيستم عامل ويندوز 2000 نسخه Professional است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمی توانيد برنامه های تحت وب را بصورت محلی بر روی کامپيوتر خود پياده سازی نمائيد .
مرحله هفتم : نظير اکثر برنامه های نصب ، ليستی از گزينه های موجود ( شامل عناصر ) برای نصب در اختيار شما قرار می گيرد . شما می توانيد ، صرفا" آنچيزی را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتی به استفاده از ويژوال ++C دات نت را نداريد ، می توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه ای که در اين مرحله انتخاب نمی گردد ، می توان در صورت ضرورت آن را در آينده نصب کرد. برای هر يک از امکاناتی که قرار است نصب گردند ، سه بخش اطلاعاتی متفاوت نمايش داده می شود :
بخش Feature Properties . فايل ها ی مورد نظر برای نصب و ميزان فضای مورد نياز را نشان می دهد .
بخش Feature description . هر Feature چيست و چه عملياتی را انجام می دهد .
بخش Space Allocation ، وضعيت فضای ذخيره سازی هارد را با توجه به گزينه های انتخاب شده ، نشان خواهد داد .
نکته : زمانيکه ويژوال استوديو دات نت ، اجراء می گردد مجموعه ای از اطلاعات بين ديسک و حافظه مبادله می گردد . بنابراين لازم است به ميزان کافی ظرفيت آزاد بر روی هارد ديسک وجود داشته باشد ، در اين راستا نمی توان دقيقا" مشخص نمود که به چه ميزان فضای آزاد نياز خواهد بود ولی حداقل يکصد مگابايت توصيه می گردد .
مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه ای گسترده از فايل های مستندات ( راهنما ) است . در اين مرحله می توان تنظيمات لازم در خصوص اجرای مستندات از طريق CD و يا دايرکتوری نصب شده بر روی هارد را انجام داد . در اين زمينه می توان يک مسير بر روی هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روی CD باقی بمانند .
مرحله نهم : پس از انتخاب عناصر مورد نظر برای نصب ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز می گردد . مدت زمان نصب ، بستگی به موارد انتخابی و نوع سيستم دارد . مثلا" نصب تمام ويژوال استوديو دات نت بهمراه تمامی مستندات بر روی يک ماشين با دارا بودن 256 مگابايت حافظه اصلی، سرعت 650 مگاهرتز و دوازده گيگابايـت هارد ديسک ، حدود يک ساعت طول خواهد کشيد .
مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسی لازم در خصوص بهنگام سازی انجام می گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود .
آموزش Vb.net (بخش دوم)
متغيرها حاملهای دربرگيرنده مقاديری هستند که در جريان يک برنامه کاربردی می توانند تغيير کنند. برنامه نويسی بدون آنها، اگر نگوئيم غيرممکن، اما به سختی امکان پذير است. در ASP.NET، متغيرها در چند لايه وجود دارند.
لايه اول، لايه Application است. در اينجا در هر صفحه برنامه کاربردی، همه متغيرها در دسترس همه کاربران قرار دارد. معمولا يک قطعه داده نسبتا کوچک که در معرض استفاده مکرر است، همانند اطلاعات مربوط به ارتباط با بانک اطلاعاتی، در اين لايه ذخيره می شود.
لايه دوم، لايه Session است. در اين لايه، همه متغيرها در سرتاسر برنامه کاربردی يا تا برقرار بودن جلسه کاربر، در دسترس يک کاربر بخصوص هستند.
لايه سوم و آخر، لايه Page است. در اينجا همه متغيرهای تعريف شده در صفحه در سرتاسر آن صفحه در دسترس هستند. متغيرهای تعريف شده در يک صفحه ASP.NET از صفحه ديگر قابل دستيابی نيستند.
به علاوه در زمان استفاده از code-behindها در صفحات ASP.NET، در پيمانه های کلاس خود به متغيرهای سطح Procedure ،Private ،Public و Block دسترسی داريد. متغيرهای عمومی در کلاس هايی که در آنها ايجاد شده اند و نيز پيمانه های کلاس ديگر قابل دسترسی هستند. جلوی اين متغيرها کلمه کليدی Public قرار می گيرد. متغيرهای خصوصی تنها در دسترس توابع و روال های کلاس هايی هستند که در آنها تعريف شده اند.
قبل از متغيرهای خصوصی کلمه کليدی Private قرار می گيرد. متغيرهای سطح Block تنها در بلوک های برنامه ايجاد کننده خود در دسترس می باشند. قبل از متغيرهای سطح Procedure و Block کلمه کليدی Dim قرار می گيرد.
نکته حائز اهميت اين است که بايد به خاطر بسپاريم که هميشه بايد نوع داده های متغير خود را تعريف کنيم. در زير ليستی از انواع داده های پشتيبانی شده در VB.NET آورده شده است.
Boolean: درست يا نادرست
Byte: برای داده های عددی 0 تا 255
Char: برای يک کاراکتر يونيکد
Date: اطلاعات تاريخ و زمان
Decimal: اطلاعات عددی صحيح
Double: داده های عددی اعشاری
Integer, Long, Short, Single: داده های عددی صحيح
Object: متغير حامل پيش فرض جهت نگهداری هر نوع شئ
String: رشته های حرفي
در نگارشهای قبلی ويژوال بيسيک و در VBScript همه متغيرها بطور پيش فرض از نوع داده variant بودند. Variant در VB.NET وجود ندارد و با نوع داده Object جايگزين شده است.
مقایسه ی دو نرم افزار C#.net و Vb.net
نت فریم ورک چیست. نکته بسیار مهمی که اخیرا متوجه شدم اینست که هنوز بسیاری از افراد به اشتباه تصور می کنند زبان سی شارپ خیلی بهتر از زبان VB.NET است. حتی بعضی از برنامه نویسان آماتور که به تازگی با Framework دات نت آشنا شده اند به من گفتند که (( میگن VB.NET ضعیفه ، فقط سی شارپ! )) متاسفانه بسیاری از مدیران شرکت های نرم افزاری نیز دچار این توهم جدی هستند که سی شارپ نسبت به VB.NET مزیت قابل توجهی دارد و حتی قابل مقایسه نیست ! در این یادداشت می خواهم تفاوتهای اصلی این دو زبان را دقیقا ادرس بدهم و نسبت به این برداشت به شدت غلط هشدار بدهم. ابتدا یک پاراگراف از مقاله ای که اخیرا درباره معرفی زبان سی شارپ برای ماهنامه شبکه نوشتم را اینجا (با اضافه کردن چند جمله تکمیلی بیشتر) تکرار می کنم:

تفاوتهای اصلی میان دو زبان بیشتر در گرامر و Syntax زبان است. در مقاله مفصلی که از اینجا قابل دریافت است ، مایکروسافت تمام کلیدواژهها و syntax دو زبان را نظیر به نظیر بررسی کرده است و شما پس از مطالعه دقیقا این مقاله ۱۸ صفحه متوجه خواهید شد که این دو زبان تفاوت اندکی از نظر قابلیت ها و مزیتها دارند و هیچ کدام از نظر راندمان برنامه تولید شده و مدیریت حافظه به دیگری رجحان ندارند.
تنها چیزی که می توانم بگویم اینست که زبان سی شارپ زبان خلاصهتر و موجزتری است. این شاید بهترین توصیف برای سی شارپ باشد. به عبارت دیگر برای پیاده سازی یک قطعه کد در زبان سی شارپ به حجم برنامهنویسی کمتری نیاز است. این مشابه تفاوت برخی زبانهای تکلم در دنیاست. مثلا خیلی از جملات در زبان ژاپنی ممکن است تنها به دو کلمه احتیاج داشته باشند در حالی که در برخی زبانها مثل فارسی شاید نتوان اغلب جملات را با تنها دو کلمه بیان کرد.
یکی از تفاوتهای شناخته شده میان دو زبان ، امکان تعریف سندهای مربوط به سورس برنامه است. در زبان سی شارپ میتوانید سندهایی از نوع XML ایجاد کنید که با سورس کد برنامه شما پیوند خورده است. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی میتوانید خیلی راحت Documentation آن را نیز آماده کنید. چنین قابلیتی در VB.NET وجود ندارد اما خبر خوب اینست که در نسخه بعدی پلاتفرم داتنت (موسوم به Whidbey) این قابلیت به VB.NET افزوده شده است.
یک تفاوت دیگر بین دو زبان آن است که در سیشارپ میتوانید عملگرها یا Operator های سفارشی بسازید. مثلا علامت > را طوری تعریف کنید که عبارت Today > Yesterday معنا پیدا کند و عملگرهای ریاضی بزرگتر و کوچکتر تنها محدود به اعداد نباشد. البته این قابلیت نیز در نسخه بعدی VB.NET افزوده شده است. در حقیقت همین چند درصد تفاوت فعلی میان قابلیتهای گرامر دو زبان ویژوال بیسیک داتنت و سیشارپ ، در نسخه شماره دو چارچوب داتنت ناپدید شده است. مقایسهای میان قابلیت های سی شارپ و ویژوال بیسیک داتنت را میتوانید .
بنابراین دقت کنید که برتر بودن زبان سی شارپ نسبت به VB.NET چیزی جز یک شایعه و افسانه نیست. این دو زبان حدود فقط ۵ درصد با یکدیگر اختلاف دارند. حتی پیشرفته ترین مفاهیم برنامه نویسی OOP نیز در VB.NET وجود دارند (مثل مفهوم Delegates). کسانی که چنین اظهار نظرهایی می کنند یا هنوز فکر می کنند که همان تفاوت میان C و VB کماکان در مورد VB.NET و #C نیز وجود دارد یا اینکه شناخت صحیحی از پلاتفرم دات نت ندارند. در واقع خیلی رک بگویم : کسانی که (بخصوص مدیران و کارشناسان ارشد شرکت های نرم افزاری) به این توهم دچارند کمترین آشنایی فنی با چارچوب دات نت ندارند. من به این افراد و نیز به نوآموزان فناوری دات نت اکیدا توصیه می کنم پیش از انتخاب یک زبان مبتنی بر دات نت ، حتما با اصول و مبانی NET Framework آشنا شوند.
تکمیل ۱: یک سوال ، اگر سی شارپ و VB.NET از نظر قدرت و توانایی با هم فرقی ندارند پس مایکروسافت چرا این دوتا را درست کرد؟ دلیلش اینست که مایکروسافت نمی توانست برنامه نویسان هریک از این دو گروه را وادار به پذیرش syntax زبان دیگر کند. بهتر بود که آنهایی که به syntax زبان سی عادت دارند با همان روش ادامه بدهند و آنهایی که به ویژوال بیسیک علاقه دارند به همان منوال ادامه دهند. البته کار کسانی که از VB6 به VB.NET می آیند خیلی مشکل است زیرا VB.NET یک زبان OOP پیشرفته است و این موضوع کار برنامه نویسان ویژوال بیسیک را که به راحت طلبی عادت کرده بودند سخت می کند. ولی برنامه نویسان C کار چندان مشکلی ندارند و می توانند از دانش خود در زمینه برنامه نویسی شیء گرا کماکان بهره بگیرند.
تکمیل ۲: صادقانه بگویم که زبان سی شارپ در اصل برای رقابت و چشم و همچشمی با جاوا خلق شده است و مزیت خاص دیگری نسبت به VB.NEّT ندارند. در واقع چون syntax سی شارپ خیلی شبیه جاوا و C است ، این ویژگی می تواند برخی از برنامه نویسان جبهه رقیب - جاوا - را قانع کند که ((بابا ! این سی شارپ و فناوری دات نت واقعا یک رقیب جدی برای جاوا است...)) همین ! واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.
تکمیل ۳: لطفا مدیران و کارشناسان شرکت های برنامه نویسی چشم و گوششان را باز کنند : نباید بین برنامه نویسان این دو زبان تبعیض قائل شد. نباید حقوق و دستمزد این دو گروه متفاوت باشد. اگر شرکت شما هنوز یک دسیپلین مشخص درباره زبان سورس کد برنامه هایی که در شرکت می نویسید ندارد ، انتخاب زبان برنامه نویسی را به برنامه نویسان دات نت تحمیل نکنید. اصلا فرقی نمی کند که یک پروژه را با کدام یک از این دو زبان اجرا کنید (این برای دهمین بار !)
C#.NET بر گرفته از قدرت ++C و امنیت JAVA بوده، به همین دلیل هم به جرات می توان گفت یکی از بهترین نرم افزارهای برنامه نویسی NET. می باشد.
شاید هدف اصلی مایکرو سافت از #C کمرنگ کردن نرم افزار محبوب جاوا از میادین بوده
آموزش پاسکال قسمت سوم
3 2 1 a
B+...+3+2+1 1..b b..1 واكنش
Begin
Writeln (' enter a,b :');
Readln(a,b);
Case a of
1:begin
for i:=1 to b do
write(i);
end;
2:begin
or I;=b downto 1 do
write(i);
end;
3:begin
sum:=0;
for i:=1 to b do
sum:=sum+I;
write(sum);
end;
end.
آرايه ها :
آرايه ها به عناصري اتلاق ميشود كه با يك نام تعدادي محل از حافظه را كنترل كند براي تشخيص محلها از انديس استفاده ميشود
انواع آرايه ها :
1- آرايه هاي يك بعدي
2- عناصر دو بعدي
3- آرايه هاي سه بعدي
تعريف آرايه ها :
var
نوع of ]انديس پايان..انديس شروع: array [ نام آرايه
نوع متغير آرايه : متغير آرايه
خواندن آرايه :
مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و در يك آرايه بريزد.
Var
A:array[1..100] of real;
Begin
For i:=1 to 100 do
Readln(a[i]);
مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و 50 تاي اول را چاپ كند سپس تعداد نمرات 20 را مشخص كند.
Var
A:array[1..100] of real;
Begin
For I;=1 to 100 do
Writeln('enter no(',I,')');
Readln(a[i]);
For i:=1 to 50 do
Writeln(a[i]);
S:=0;
For i:=1 to 100 do
If i:=1 to 100 do
If a[i]=20 then
S:=s+1;
Writeln(s);
End.
پيدا كردن max,min
عنصر اول =min
حلقه براي گردش در آرايه
Min < عنصر فعلي if
عنصر فعلي min :=
Write(min);
مثال : برنامه اي بنويسيد كه با دريافت نمرات 100 دانش آموز بالاترين و پايين ترين نمره را در بين اين 100 نفر پيدا كند.
Var
A:array[1..100] of real;
I:integer;
Begin
For i:=1 to 100 do
Readln(a[i]);
Min:=a[1];
Max:=a[1];
For i:=2 to 100 do
Begin
If a[1]< min then
Min:=a[i];
If a[i]>max then
Max := a[i];
End;
Writeln('max is :',max,'min is :',min);
End.
مثال : برنامه اي بنويسيد كه با دريافت 100 اسم به ما بگويد تعداد تكرار اسم ali چند بار است وآيا اسم hassan بيشتر ذكر شده يا اسم reza ؟
Var
A:array [1..100] of string;
Begin
For i:=1 to 100 do
Readln(a[i]);
Ali:=0;
Reza:=0;
Hassan:=0;
For i:=1 to 100 do
Begin
If a[i]='ali' then
Ali:=ali+1;
If a[i]='reza' then
Reza:=reza+1;
If a[i]='hassan' then
Hassan:=hassan+1;
Endd
Writeln(ali is :',ali);
If reza>hassan then
Writeln('reza')
Else
Writeln('hassan');
End.
مثال : برنامه اي بنويسيد كه با دريافت نام و نمره 100 دانش آموز تنبل ترين فرد كلاس را مشخص كند.
Var
Name:array[1..100] of string;
No:array[1..100] of real;
Begin
For i:=1 to 100 do
Begin
Readln(name[i]);
Readln(no[i]);
End;
Min:=no[1];
Namemin:=name[1];
For i:=2 to 100 do begin
If no[i] Begin
Min:=no[i];
Namemin:=name[i];
Writeln(namemin);
End.
آرايه هاي دو بعدي:
وقتي از آرايه دوبعدي استفاده ميكنيم بايد از دو حقه for استفاده كنيم.
مثال : برنامه اي بنويسيد كه نمرات 4 كلاس كه هر يك 20 دانش آموز دارد را از ورودي دريافت وتنبل ترين فرد را در اين 4 كلاس مشخص كند.
Var
A:array[1..20,1..4] of real;
Begin
For i:=1 to 4 do
Begin
For j:=1 to 20 do
Readln(a[j,i]);
End;
Min:=a[1,1];
For i:=1 to 4 do
For j:=1 to 20 do
If a[j,i]< min then
Min:=a[j,i];
Writeln(min);
End.
مثال : در يك آرايه 100*20دوهزار كاراكتر نگهداري ميشود برنامه اي بنويسيد كه تعداد تكرار حرف A را با a مقايسه كند و همچنين به ما بگويد آيا كاراكتر z در اين ماتريس وجود دارد ؟
Var
A:array[1..20,1..100] of character;
Bool:Boolean;
B,b1:integer;
Begin
For i:=1 to 100 do
For j:=1 to 20 do
If a[I,j]='A' then
B:=b+1;
If a[I,j]='a' then
B1:=b1+1;
If a[I,j]='z' then
Bool:=true;
End;
If b>b1 then writeln('A>a');
If b If b=b1 then writeln('A=a');
If true then writeln('''z''exist');
End.
تكليف : ميخواهيم نام و نمره تعدادي دانش آموز يك كلاس را از ورودي دريافت كنيم و مشخص كنيم كه تنبل ترين و زرنگ ترين فرد كلاس كيست.چند نفر نمره زير 10 گرفتند؟نام كساني كه نمره آنها در بازه 17 تا 15 مي باشد ب همراه نمره آنها چاپ شود آخرين نفر نامش end است حداكثر تعداد دانش آموزان 100 نفر است.
Var
a:array [1..100] of string ;
b:array[1..100] of real;
begin
i:=1;
read(a[i]);
while a[i]<>'end' do begin
readln(b[i]);
i:=i+1;
readln(a[i]);
end;
j:=i-1;
min:=a[1];
max:=a[1];
for i:= 2 to j do
begin
if b[i] >max then
begin
max:=b[i];
name:a[i];
end;
end
writeln(name);
count:=0;
for i:=1 to j do
if b[i]<=10 then
count:=count+1;
writeln(count);
for i:=1 to j do
if (b[i]<17) and (b[i]>15) then
write(b[i],a[i]);
end.
تكليف : برنامه اي بنويسيد كه حاصل اين عبارت را حساب كند.
i/i!=1/1!+2/2!+3/3!+4/4!+5/5!
N!= 1*2*3*4*…*n
Begin
Sum:=0;
For n:=1 to 5 do
Begin
For m:=1 to n do
F:=f*m;
Sum:=sum+n/f;
End;
Writeln(sum);
End.
تكليف : برنامه اي بنويسيد كه نمرات 80 دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودي دريافت كند سپس به سوالات زير جواب دهد.
1- معدل هر يك از كلاسها
2- نمره تنبل ترين و زرنگترين شخص در هر كلاس به طور جداگانه
Var
A:array [1..4,1..20] of real;
Begin
For i:=1 to 4 do
For j:=1 to 20 do
Begin
Writeln('please enter nomreh');
Readln(a[I,j]);
End;
For i:=1 to 4 do
Begin
Sum:=0 ;
For j:=1 to 20 do
Begin
Sum:=a[I,j]+sum;
End;
Writeln(sum/20,'average of this class');
End;
For i:=1 to 4 do
Begin
Max :=a[1,1];
Min:=a[1,1];
For j:=2 to 20 do
Begin
If a[I,j]>max then
Max :=a[I,j];
End;
Writeln(I,min,max);
End;
End.
- String :
String آرايه اي از كاراكترهاست .اغلب لازم است كاراكترهايي در رشته موجود درج شوندو يا كاراكترهايي به جاي بخشي از رشته نوشته شوند , زيررشته اي در رشته جستجو گردد و يا دو رشته با هم الحاق شوند.
رشته تهي : طول رشته ثابت نيست و با داداه هايي كه در آن ذخيره شده است مشخص مي گردد.كاراكترهايي كه در رشته قرار مي گيرد از حداكثر طولي كه براي آن تعيين ميشود بيشتر نخواهد بود. اگر name رشته كاراكتري باشد دستور زير name را به رشته تهي تبديل ميكند:
Name:='';
تبديل رشته به اعداد :
در پاسكال زير برنامه هايي وجود دارند كه به آساني ميتوانند رشته ها را پردازش كنند. زيربرنامه val رشته عددي را گرفته به مقدار عددي تبديل ميكند.
رشته عددي رشته اي است كه حاوي كاراترهاي '0' تا '9' و نقطه مميز باشد مثل '12.5' و'13.5' زيربرنامه val به صورت زير به كار ميرود.
Val (st,number,error)
St رشته اي است كه بايد به عدد تبديل شود و number متغيري است كه رشته تبديل شده به عدد در آن قرار ميگيرد. چنانچه در رشته st كاراكتر نا معتبري (كاراكترهاي غير از( '0' تا '9' و'.' ) , محل وجود آن كاراكتر در پارامتر error قرار ميگيرد. اگر error برابر با صفر باشد معنايش اينست كه كاراكتر نا معتبري وجود ندارد. اگر number از نوع صحيح باشد st به مقدار صحيح و اگر number از نوع اعشاري باشد st به مقدار اعشاري تبديل ميشود .
مثال زير را در نظر بگيريد:
Var st :string;
Num,e:integer;
St:='352';
Val (st,num,e);
مقدار 352 در متغير num ومقدار صفر در متغير e قرار ميگيرد اكنون دستورات زير را در نظر بگيريد :
St:='35#'2;
Val (st,num,e);
با اجراي دستور val به دليل وجود كاراكتر' # ' كه كاراكتر نامعتبري در اعداد است عدد 2 در متغير e قرار ميگيرد و معنايش اينست كه كاراكتر شماره 2 ( شماره گذاري از صفر شروع ميشود) نامعتبر است و عمل تبديل صورت نميگيرد و مقدار num تعريف نشده است.
تبديل عدد به رشته :
براي تبديل مقدار عددي به رشته عددي از زيربرنامهstr استفادهميشود و به صورت زير به كار ميرود:
Str (number : format,numstring)
با اين دستور مقداري كه در number قرار دارد به رشته اي به طول format تبديل ميشود و در رشته numstring قرار ميگيرد . دستورات زير را در نظر بگيريد:
Var x:integer;
St:string;
X=352;
Str(x:5,st);
با اجراي اين دستور مقدار 352 به رشته '352' تبديل شده در st قرار ميگيرد
آموزش پاسکال قسمت دوم
BEGIN
WRITELN('ENTER TWO NUMBER');
READLN(A,B);
CASE A OF
0..5 :WRITELN(B*B);
68:WRITELN(A*B)
ELSE
WRITELN('ENTER 0..5 OR 68');
END;
END.
- معادل برنامه بالا با دستور If :
Begin
Writeln('enter 2 number');
Readln(a,b);
If (a>=0)and(a<=5) then
Writeln(b*b)
Else
If a=68 then
Writeln(a*b)
Else
Writeln('enter 0..5 or68');
End.
تكليف : روشي براي تلفظ اعداد پيدا كنيد.
حلقه تكرار :
1- تعداد معين
2- تعداد معين
Do مقدار نهايي to { مقدار شروع=: متغير for
downto
begin
___
___
___
end;
توجه مهم : در برخي از حلقه ها دستورات داخل حلقه به متغير حلقه مرتبط مي باشند و در برخي موارد هيچگونه ارتباطي وجود ندارد.
حلقه for براي تعداد تكرار معين به كار ميرود
Downto : در مواردي به كار ميرود كه مقدار اوليه از مقدار نهايي بيشتر باشد
مثال : برنامه اي بنويسيد كه توان دوم اعداد 100 تا 200 را چاپ كند.
Begin
For i:=100 to 200 do
Begin
Writeln(i*i);
End;
End.
نكته : اجازه نداريد مقدار متغير حلقه را در داخل بدنه عوض كنيد .
مثال : برنامه اي بنويسيد كه حاصلجمع اعداد 100..1 را چاپ كند.
Begin
Sum:=0;
For i:=1 to 10 do
Begin
Sum:=sum+i
End;
Write(sum);
End.
مثال : برنامه اي بنويسيد كه حاصلجمع مضارب 5 بين 0 تا 100را به دست آورد.
Begin
Sum:=0;
For I:=1 to 20 do
Begin
Sum:=sum+i*5;
End;
Writeln(sum);
End.
مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و اعداد ما بين اين دو عدد را چاپ كند (a
Begin
Writeln('enter a,b');
Readln(a,b);
For I:= a to b do
Writeln(i);
End.
مثال : برنامه اي بنويسيد كه با يك حلقه for اعداد بين100..1 و738..353و 950..940 را چاپ كند
Begin
For i:=1 to 950 do
Begin
If ( i>=1) and (i<=100) then
Writeln(i);
If (i>353) and (i<=738) then
Writeln(i);
If (i>=940) and (i<=950) then
Writeln(i);
End;
End.
معادل برنامه بالا با استفاده از دستور case :
Begin
For i:=1 to 950 do
Case I of
1..100,353..738,940..950: writeln(i);
end;
end.
)باقيمانده)mod?
مثال :
X mod y
مثال : برنامه اي بنويسيد كه مضارب 7 بين 1 تا 100 را چاپ كند
Begin
For i:= 1 to 100 do
Begin
If I mod 7 = 0 then
Writeln(i);
End;
End.
مثال : برنامه اي بنويسيد كه تعداد مضارب 5و7 را در بازه 231~846 چاپ كند.
Begin
K:=0;
C:=0;
For i:=846 downto 231 do
Begin
If I mod 5 = 0 then
C:=c+1;
If I mod 7 = 0 then
K:=k+1;
End;
Writeln('5=',c,'7=',k);
End;
End.
مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان 100 كارگر را از ورودي دريافت و مبلغ حقوق آنها را بر اساس فرمول زير حساب كند0
1000*تعداد فرزند + حقوق پايه = حقوق كل
Begin
For i:=1 to 100 do
Begin
Writeln('enter salary and number of children');
readln(salary,num);
kol := salary + num * 1000;
writeln(kol);
end;
end.
مثال : برنامه اي بنويسيد كه 100 عدد را از ورودي دريافت و ميانگين و حاصلجمع آنها را به ما بدهد.
Begin
Sum:=0;
For i:= 1 to 100 do
Begin
Writeln('enter num');
Readln(num);
Sum:=sum+num;
End;
Ave:=ave/100;
Writeln(sum,ave);
End.
تعداد تكرار نامعين :
Do شرط while
begin
___
___
___
end;
مثال : برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند
Begin
I:=1;
While i<=100 do
Begin
Write(i);
I:=i+1;
End;
مثال : برنامه اي بنويسيد كه تعدادي اسم را از ورودي دريافت و به ما بگويد چند بار اسم ali تكرار شده است(آخرين اسم end است).
Var
S:integer;
St:string;
Begin
Read(st);
While st<> 'end' do
Begin
If st='ali' then
S:=s+1;
Read(st);
End;write(s);
End.
مثال : برنامه اي بنويسيد كه تعدادي عدد كه آخرين آنها صفر است را از ورودي دريافت و حاصلجمع آنها را چاپ كند.
Begin
Readln(num);
T:=1;
While num<>0 do
Begin
Sum:=sum+num;
Readln(num);
T:=t+1;
End;
Writeln('s=',s,'average',s/t);
End;
تكليف : براي دانش آموزان يك كلاس برنامه اي بنويسيد كه نام آنها به همراه تعداد نمرات و سپس نمرات آنها را به فرم زير از ورودي دريافت كند.تعداد دانش آموزان كلاس نامعين است ولي آخرين نفر نامش end است .برنامه ميبايستي پس از دريافت هر يك از اطلاعات پيامي به شكل زير چاپ كند.
Average: Sum: Ali Name:
3
18
20
13.5
program test;
var
name:string[10];
ave,sum,nomreh:real;
num,i:integer;
begin
writeln('enter name ' );
readln(name);
while name <> 'end' do
begin
writeln('enter num:');
readln(num);
for i:=1 to num do
begin
writeln('enter nomreh: ');
readln(nomreh);
sum:=sum+nomreh;
end;
ave:=sum/num;
writeln('name:',name,'sum:',sum,'ave:',ave);
writeln('enter name ');
readln(name);
end;
end.
تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است
1) load
2) save
3) edit
4) exit
please select a number :
program test;
var
num:integer;
begin
writeln(' 1) load');
writeln(' 2) save');
writeln(' 3) edit');
writeln(' 4) exit');
writeln(please select a number : ');
readln(num);
while num<>4 do
begin
case num of
1:writeln('loading');
2:writeln('saving');
3:writeln('editing');
end;
end;
end.
جمع و تفریق اعداد بزرگ در c++
آموزش پاسکال قسمت اول
زبان پاسكال يكي از زبانهاي برنامه سازي است كه ويژگيهاي آموزشي آن بسيار بالاست يعني زبان خوبي براي آموزش برنامه نويسي منظم و دقيق است.قابليت خوانايي و درك برنامه هاي اين زبان بالاست وميتوان برنامه هايي نوشت كه احتمال خطاهاي آنها بسيار اندك باشد علتش اين است كه يك زبان ساختار يافته (structed) است .
ساختار كلي برنامه چيست؟
1-تعريف
2-به وسيله procedure و functionقسمتهاي تكراري را از بين ببريم
3-بدنه
فرم كلي پاسكال:
;اسم Program
; تعريف ثابت const
; تعريف نوع type
; تعريف متغيرها var
( پارامترها ) نام procedure
begin
____
____
____
end ;
;نوع تابع ( پارامترها ) نام function
begin
____
____
____
end ;
begin
____
____
____
end .
متغير : محلي است كه داراي يك اسم مي باشد و مي توان مقداري را در آن ذخيره كرد
انواع متغيرها در پاسكال:
Integer :انواع عددي صحيح شامل اعداد بدون نقطه مميز است
نوع مقاديري كه مي پذيرند طول(بايت)
byte 0 تا 255 1
Shortint 128- تا 127 1
integer 32768- تا 32767 2
Word 0 تا 65535 2
Longint 2147483648- تا 2147483647 4
اعداد اعشاري:
انواع عددي اعشاري شامل اعدادي با نقطه مميز است
نوع مقاديري كه ميپذيرند ارقام با معني طول(بايت)
single 1.5e-45 تا3.4e38 7 تا 8 4
real 2.9e-39 تا 1.7e38 11 تا 12 6
Double 5.0e-324تا 1.7e308 15 تا 16 8
extended 1.9e-4951تا 1.1e493 19 تا 20 10
انواع داده هاي اعشاري
-Char :
نوع داده كاراكتري كه با كلمه char مشخص مي شود ميتواند يك كاراكتر را در خود نگهداري كند بنابراين كاراكترها در يك بايت از حافظه كامپيوتر ذخيره مي شوند
String - :
اين نوع داده ها براي ذخيره رشته ها مثل اسامي افراد به كار مي رود و با كلمه كليدي string مشخص ي گردد
براي هر رشته بايد طول معلوم كنيم اگر طولي تعريف نشود به طور پيش فرض 80 در نظر گرفته ميشود(مقدار طول حداكثر 255 است)
- Boolean :
نوع ديگري از داده ها در پاسكال وجود دارند كه داده هاي بولي خوانده مي شوند مقادير بولي داراي دو ارزش درستي يا نادرستي اند كه در پاسكال با صفر و يك نمايش داده مي شوند صفر به معني نادرستي و يك به معني درستي به كار ميرود اين نوع داده ها با كلمه Boolean تعريف ميشوند.
دستورات ورودي در پاسكال:
دستور Readlnبراي خواندن اطلاعات از ورودي به كار ميرود.
فرمت آن به صورت مقابل است:
(اسامي متغيرها)read/ln
اسامي متغيرها بايد با كاما از يكديگر جدا شوند..
براي چاپ اطلاعات در خروجي از دستور write/ln استفاده ميكنيم.
فرمت آن به صورت مقابل است:
' يك پيام '
( متغير ) write/ln
عبارت محاسباتي
انتساب متغيرها:
مقدار ثابت
( متغير )=: متغير
عبارت محاسباتي
مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و حاصلجمع آن دو را چاپ كند .
Program add;
Var
a,b:integer;
begin
writeln('enter 2 num');
readln(a,b);
c:=a+b;
writeln('result is =',c);
end.
تكليف : چرا برنامه بايد ادب داشته باشد ؟
مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان يك كارگر را از ورودي دريافت و مبلغ حقوق وي را بر اساس فرمول زير حساب كنيد.
10*تعداد فرزندان + حقوق پايه =حقوق كل
Program test;
Var
Salary:longint;
Child:byte;
kole:integer
Begin
Writeln('enter salary and number of child);
Readln(salary,child);
Kole := salary + child *10
Writeln('kole is ',kole);
END.
اولويت عملگرها:
/ *
- +
شرط:
then شرط if
Begin
____
____
____
end
else
begin
____
____
____
end;
نكته : دستورالعمل قبل از IF سمي كالن نمي گيرد
عناصر شرط:
< > <= >= = <>
اپراتورها :
AND OR NOT XOR
NOT A
1 0
0 1
XOR OR AND B A
0 1 1 1 1
1 1 0 0 1
1 1 0 1 0
0 0 0 0 0
مثال : برنامه اي بنويسيد كه با دريافت دو عدد بزرگترين آنها را چاپ كند.
Program test;
Var
a,b:integer;
if a>b then
begin
writeln(a);
end
else
writeln(b);
end.
مثال : برنامه اي بنويسيد كه با دريافت سه عدد به عنوان ضرايب y=ax2+bx+c معادله درجه دو را حل كند(اين برنامه را با يك If بنويسيد).
Var
A,b,c:integer;
D,x1,x2:real;
Begin
Writeln('enter a,b,c');
Readln(a,b,c);
D:=b*b-4*a*c;
If (d >=0 ) then
Begin
X1:=(-b+sqrt(d))/2*a);
X1:=(-b-sqrt(d))/2*a);
مثال : برنامه اي بنويسيد كه تعداد فرزندان وحقوق پايه و رتبه يك كارگر را از ورودي دريافت و حقوق كل وي را بر اساس فرمول زير حساب كند.
كسريها - مزايا +بيمه = حقوق كل
5*رتبه +1000* تعداد فرزند = مزايا
ماليات + بيمه = كسريها
بيشتر كمتر يا مساوي 2 تعداد فرزند
تعداد فرزندان 1000 بيمه
هر چيزي ديگر 20 تا 0 رتبه
حقوق پايه حقوق پايه*100/10 ماليات
begin
writeln('enter salary and grade and number of child');
readln(salary ,num,grade);
if num<=2 then
bimeh:=100
else
bimeh :=num*500;
if (grade>=0) and (grade<=20)then
net := 10/100*salary
else
if grade >20 then
begin
net:=20/100*salary;
mazaya:=num*1000+grade*50;
kasry:=bimeh+net;
kol :=salary + mazaya-kasry;
end;
writeln(kol);
end.
تكليف : در يك تركيب شيميايي 4 عنصر شركت دارند مقدار مجاز براي تهيه ماده اي به نام asxd به اين صورت است.
A 0 ~ 50
S 0.5 ~ 0.83
X 81 ~ 92 or 824 ~ 901
D -100 ~ 100
با دريافت مقادير a,s,x,d از ورودي به ما بگويد كه آيا مي توان اين ماده را توليد كرد يا نه ؟
Begin
Num:=0;
Writeln('please enter a s x d');
Readln(a,s,x,d);
If (a>0) and(a<50) then
Num:=num+1;
If (s>0.5)and (s<0.83) then
Num:=num+1;
If ((x>81)and(x<92))or ((x>824)and(x<901))then
Num:=num+1;
If (d>-100) and (d<100) then
Num:=num+1;
If num=4 then
Writeln('yes can')
Else
Writeln('you can not');
End.
تكليف : برنامه اي بنويسيد كه با دريافت سه عدد و با فرض اينكه عدد دوم وتر ميباشد به ما بگوييد كه آيا اين سه عدد تشكيل يك مثلث قايم الزاويه مي دهد يا خير؟
-CASE:
CASE ميتواند تعداداي شرط را بگيرد و انتخاب كند.
مقاديري كه دستور CASE ميپذيرد ORDINAL است مقاديري كهORDINAL هستند داراي تركيب نيستند و همچنين قابل شمارش هم هستند مثل INTEGER,CHARACTER,BYTE,BOOLEAN,LONGINT,…
پسREAL,STRING ORDINAL<---- نيستند
CASE تنها دستوري است كه BEGIN ندارد ولي END دارد
مقدارها ميتوانند شامل يك مقدار يا چند مقدار كه از يكديگر با كاما جدا شده اند باشند و يا يگ سري شمارشي باشند مثل:
1:------
1,10,28:------
1..100,150..243:---------
'A'..'Z':---------
Of متغير Case
Begin : مقدار1
-------
-------
End;
Begin : مقدار2
-------
-------
End;
Begin :Else
-------
-------
End;
End.
مثال : برنامه اي بنويسيد كه يك عدد را از ورودي دريافت ( (0<=x<3وتلفظ آنها را چاپ كند.
BEGIN
READLN(X);
CASE X OF
0:WRITELN('ZERO');
1:WRITELN('ONE');
2:WRITELN('TWO')
ELSE
WRITELN('ERROR');
END;
END.
این تابع بازگشتی برای برنامه 8 وزیر می باشد. ( c++
#include
using namespace std;
int chess[8][8];
bool put(int move);
bool check(int,int);
int main()
{
int i,j;
printf("The Chess Befor Inserting Minister In It:\n");
for(i=0;i<8;++i)
{
for(j=0;j<8;j++)
printf("%6d ",chess[i][j]);
printf("\n");
}
put(0);
printf("The Chess After Inserting 8 Minister In It:\n");
for(i=0;i<8;++i)
{
for(j=0;j<8;j++)
printf("%6d ",chess[i][j]);
printf("\n\n");
}
return 0;
}
bool put(int move)
{
if(move>=8)
return true;
int i;
for(i=0;i<8;i++)
if(check(move,i))
{
chess[move][i]=1;
if( put(move+1))
return true;
else
chess[move][i]=0;
}
return false;
}
bool check(int row,int col)
{
int i,j;
for(i=0;i<8;i++)
if(chess[i][col])
return false;
for(i=row+1,j=col+1;i<8&&j<8;++i,++j)
if(chess[i][j])
return false;
for(i=row-1,j=col-1;i>=0&&j>=0;--i,--j)
if(chess[i][j])
return false;
for(i=row-1,j=col+1;i>=0&&col<8;i--,++j)
if(chess[i][j])
return false;
for(i=row+1,j=col-1;i<8&&col>=0;++i,--j)
if(chess[i][j])
return false;
return true;
}
ساختن یک کرنومتر به کمک کتابخانه ی Time در C++
#include
using namespace std;
int main()
{
tm *t;
t=new tm;
while(1)
{
system("cls");
cout<
return 0;
}
پروژه تبدیل تاریخ هجری شمسی به میلادی ( با تابعی جداگانه) در ++c
#include
#include
#define yy 621
#define mm 3
#define dd -9
void convert(int,int,int,int*,int*,int*);
main()
{
int y,m,d,ly,lm,ld;
clrscr();
cout<<"\n This is Lunar based calendar convertor to AD ";
cout<<"\n\n Enter a year :";
cin>>y;
cout<<"\n Enter a month :";
cin>>m;
cout<<"\n Enter a day :";
cin>>d;
convert(y,m,d,&ly,&lm,&ld);
cout<<"\n\n date miladi = "<
}
void convert(int y,int m,int d,int*ly,int*lm,int*ld){
int lyy,ldd,lmm;
lyy=y+yy;
lmm=m+mm;
ldd=d+dd;
if (ldd > 30){
ldd = ldd - 30;
lmm = lmm + 1;
}
if (ldd < 1){
ldd = ldd + 30;
lmm = lmm -1;
}
if (lmm > 12){
lmm = lmm - 12;
lyy = lyy + 1;
}
if (lmm < 1){
lmm = lmm + 12;
lyy = lyy - 1;
}
*ly=lyy;
*ld=ldd;
*lm=lmm;
}
افزونه nofollow کردن لینک ها جهت بهبود سئو در وردپرس
به طور کلی برای کسب محبوبیت بیشتر نزد موتورهای جستجو، هر چه قدر دیگران به شما لینک بدهند و شما به دیگران لینک ندهید بهتر است.
افزونه nofollow-links طوری طراحی شده است که به شما اجازه می دهد بدون هیچگونه کد نویسی لینک های مورد نظرتان را nofollow کنید.
چنانچه نمی دانید ویژگی nofollow چیست، و همچنین برای دانلود افزونه به ادامه مطلب مراجعه کنید:
این ویژگی ربات موتور جستجو را راهنمایی می کند تا یک لینک خاص رهگیری نشود. با یک مثال غیرفنی به اهمیت استفاده از چنین ویژگی پی می بریم. فرض کنید یک صفحه وب سایت یا وبلاگ مانند سطلی پر از آب و لینک های آن صفحه مانند سوراخ هایی در سطل بوده و رتبه موتورهای جستجو به یک صفحه همانند آبی که در داخل سطل ریخته می شود، باشد. هر چقدر تعداد سوراخ ها بیشتر باشد آب سطل کمتر و در نتیجه رتبه داده شده نیز کمتر خواهد بود.
حال باید تشخیص دهیم که کدام یک از سوراخها باید گرفته شود! نکات زیر کمک می کند تا بتوانید سوراخهایی که گرفته شوند را تشخیص دهید.
۱٫ استفاده از ویژگی لینک Nofollow برای اسپانسرها و تبلیغات ها
حامیان و تبلیغات ها ممکن است همیشه با موضوع یک صفحه مرتبط نباشد. پس بهتر است که برای لینک آنها از ویژگی Nofollow استفاده کنیم.
۲٫ استفاده از ویژگی لینک Nofollow در نظرات
لینک های مربوط به قسمت نظرات اهمیت مهمی در رتبه دهی به یک صفحه دارد، چرا که ممکن است لینک های داده شده به موضوع فعالیت وب سایت مرتبط نباشد.
۳٫ استفاده از ویژگی لینک Nofollow در لینک به سایت هایی که با فعالیت وبلاگ و یا سایت مرتبط نیست
هنگام لینک دادن به سایت های دیگر محتوای آنرا کنترل کنید تا در صورت مرتبط نبودن با فعالیت شما از ویژگی Nofollow در لینک آنها استفاده نمایید.
۴٫ استفاده از ویژگی لینک Nofollow برای لینک هایی که قابل رهگیری نیستند
برای لینک دادن به صفحاتی را که برای رهگیری به رمز عبور نیاز دارند، از ویژگی Nofollow استفاده کنید.
افزونه ساختن نقشه سایت در وردپرس
برای اینکه کاربران سایتتان بتوانند به راحتی مطالب مورد نیازشان را پیدا کنند، و در سایتتان سردرگم نشوند، می توانید از افزونه Dagon Design Sitemap Generator استفاده کنید.
توجه داشته باشید این افزونه برای نمایش نقشه سایت به کاربران سایت می باشد نه موتورهای جستجو!
جهت مشاهده نمونه و دانلود افزونه به ادامه مطلب مراجعه کنید.
جهت مشاهده نمونه اینجا کلیک کنید.
جهت استفاده از این افزونه کافیست پس از فعال کردن افزونه کد زیر را در صفحه مورد نظرتان کپی کنید.
دانلود
رفع خطای ftp در وردپرس
خطای ftp که معمولا گاهی بعد از انتقال سرور یا تغییراتی در هاست و در موقع بروزرسانی و یا نصب افزونه و قالب در وردپر مشاهده میشود آزار دهنده است . اما این خطا به آسانی قابل رفع است . فقط کافیست مراحل زیر را دنبال و انجام دهید.
پس از تکمیل مقادیر زیر کد ها را در فایلconfig.php قراردهید
موارد username و password و yoursite.com باید دقیق و صحیح وارد شود
سنجش میزان سئو سایت
امروز یکی از سرویس های کاربری مورد نیاز وبمستر های را معرفی خواهم کرد . سئو تاثییر زیادی در موفقیت و افزایش بازدید سایت دارد برای مشاهده میزان سئو سایت luceon سرویس سنجش سئو را با نام Rupert SEO validator راه اندازی کرده که با وارد کردن آدرس سایت براحتی و در کمترین زمان میتوان میزان سئو سایت مورد نظر را مشاهده کرد و با تحلیل ارایه شده به نقاط ضعف و قوت سئو سایت پی برد.
برای سنجش سئو سایت از از این لینک استفاده کنید
افزونه عضویت در سایت برای وردپرسپخش اختصاصی

کد زیر برای نمایش فرم عضویت و پنل در قالب:
کنترل پنل
- Identified as .
- /wp-admin/”>پیشخوان
= 1 ) : ?>
- /wp-admin/post-new.php”>ارسال مطلب
= 1 ?>
- /wp-admin/profile.php”>پروفایل
- /wp-login.php?action=logout&redirect_to=”>خروج
- /wp-admin/”>پیشخوان
منوی کاربری
پلاگین ثابت نگه دارنده هر پست در وردپرسپخش اختصاصی

قالب بسیار زیبای لوگوفان برای وردپرس

تولتیب بسیار زیبا به کمک جی کوئری و سی اس

پلاگینی برای نمایش دادن آمار دقیق ورودی گوگل
لینک دانلود l لینک مستقیم وردپرس
دوازدهمین جلسه Css3 – استفاده از تصاویر در حاشیه باکسها (Image Border)
این ویژگی در مرورگرهای کروم ۲+ ، سافاری ۳٫۱+ ، فایرفاکس ۳٫۵+ و اپرا ۱۰٫۵+ پشتیبانی می شود.
برای دریافت فایل نمونه و کد به ادامه مطلب مراجعه کنید…

border-width: 19px;
-webkit-border-image: url(images/border-image.gif) 19 19 19 19 repeat;
-moz-border-image: url(images/border-image.gif) 19 19 19 19 repeat;
border-image: url(images/border-image.gif) 19 19 19 19 repeat; /* for Opera */
تذکر : بجای اعداد، باید اندازه تصویر را وارد کنید.
دانلود : فایل نمونه
منبع : سورس گذر









