نوشته شده توسط : tahlildadeh

 


اهداف دوره 
:

 

 


 

 

 

 

 

آشنایی با محیط توسعه Android ، آشنایی با معماری بر اساس تفکر Android در ابزار قابل حمل، اصول برنامه نویسی Intent، مدیریت توسعه پلتفرم های قابل حمل ، برنامه نویسی پایه ای Android، آشنایی با کلاسهای جاوا در محیط توسعه Android، آشنایی با طراحی برنامه های پایه و کاربردی، روش های ذخیره و بازیابی اطلاعات ، کار با پیام کوتاه و چند رسانه ای ، موقعیت یاب فعال

 

 

 

 

 

 

 

سر فصلهاي دوره:

 

 

 

 

 

-          معماری Android و مفاهیم اولیه

o        اندروید

o        نسخه ها و ویژگی های انروید

o        تفاوتهای سخت افزاری

o        صفحه نمایش

o        سنسورها

o        اشکال زدایی سخت افزاری برنامه ها

o        توسعه اندروید

-          برنامه نویسی ساخت یافته

o        برنامه های کاربردی

o        ایجاد پروژه جدید

o        فایل اندروید

o        چرخش صفحه

o        ذخیر و بازیابی اطلاعات

o        استفاده از Button , text view

o        تولید رویداد

o        انواع داده ای و لیستهای انتخاب

o        تولید خروجی نهایی

 

 

-          اجرای همزمان، سرویس نویسی و ایجاد هشدار on-line

 

 

o        Thread در اندروید

o        توضیح سرویس گرایی در اندروید

o        تعیین اولویت

o        اشتراک داده ای بین برنامه ها

o        متوقف شدن یک برنامه

o        نگهدارنده ها

o        زمانسنج کاهنده در برنامه ها

o        مدیریت مقادیر اولیه در سیستم

o        تولید گیرنده Receiver

o        تولید ویجت های کوچک

o        نمایش اطلاعات در نواز وضعیت

-          واسط کاربری

o        دایرکتوریها و صفات وابسطه

o        انتخاب منبع جایگزین

o        کنترل عرض و طول المانها

o        صفات متن

o        ایجاد فرم

o        دکمه های تصویری

o        چک باکس و دکمه های چند وضعیتی

o        تولید منو

 

 

-          UI Event

 

 

o        مدیریت کننده رویدادها

o        رهگیری برنامه ها

o        تعریف منو در فایل XML

o        رویدادهای لمسی

o        اشاره گرهای پرتابی

o        تصاویر سه بعدی

 

 

-          Multimedia

 

 

o        تصاویر و تکنیکهای وابسطه

o        بارگذاری تصاویر

o        فایل صوتی

o        ضبط فایل صوتی

o        اضافه کردن مدیا به برنامه های کاربردی

 

 

-          Hardware Interface

 

 

o        دوربین و توابع وابسطه

o        شخصی سازی

o        سنسورها

o        استفاده از سنسورهای دما و نور

o        بلوتوث

o        ابزار تلفن و کنترل آن

o        لرزش دستگاه

o        دسترسی به شبکه های بدون سیم

-          شبکه سازی و شبکه بندی

o        Sms و پیام کوتاه

o        ارسال خودکار پیام کوتاه

o        استفاده از وب

o        HTTP POST

o        HTTP GET

o        اتصال به سایت

-          ذخیره سازی داده ها

o        اشتراک گذاری داده ها

o        ایجاد و بازیابی

o        SQLite

o        سایر پایگاه داده ها

o        ذخیره و بارگذاری فایل

 

 

-          Position Trace

 

 

o        مبانی مکان یابی

o        آخرین موقعیت

o        کار با Google Map

o        تبدیل موقعیت به آدرس

o        اضافه کردن Google Map به برنامه ها

o        ایجاد هشدار بر اساس یک موقعیت خاص

 

 

o        علامت گذاری موقعیت ها

برای شرکت در کلاسهای اندروید به سایت زیر رجوع کنید:

آموزش اندروید

آموزش برنامه نویسی اندروید

تدریس اندروید



:: بازدید از این مطلب : 262
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : سه‌شنبه 03 مرداد 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

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



نسخه اول اندروید


این نسخه از آندروید که اولین نسخ آن است در تاریخ ۲۳ ستامبر ۲۰۰۸ ببر روی گوشی htc dream G1 معرفی شد.


قابلیت‌ها :


برنامه بازار اندروید (Android Market) جهت نصب و بروز رسانی برنامه‌ها از طریق اینترنت.


مرورگر وب با قابلیت نمایش کامل صفحه‌های اینترنتی با پسوند (HTML٫XHTML) و بزرگنمایی محتوای صفحه


پشتیبانی از دوربین البته این نسخه از اندروید فاقد قابلیت تغییر رزولوشن تصویر یا تغییر سفیدی یا رنگ تصویر بود


هماهنگ سازی حساب Gmail با برنامه Gmail اندروید از طریق اینترنت.


هماهنگ سازی حساب Gmail با برنامه(People app)اندروید از طریق اینترنت.


هماهنگ سازی حساب Gmail با تقویم اندروید از طریق اینترنت.


برنامه Google Maps یا نقشه‌های گوگل برای مشاهده نقشه‌ها و تصاویر ماهواره ای از خیابان‌ها و گذرگاه‌ها و همچنین پیدا کردن کسب و کار محلی و جهت یابی در هنگام رانندگی با استفاده از GPS


قابلیت جستجوی گوگل که به کاربر امکان جستجو در اینترنت و برنامه‌های تلفن همراه یا در میان لیست مخاطبین و تقویم را می‌دهد.


قابلیت گوگل تالک (Google Talk) جهت پیام فوری از طریق اینترنت.


پشتیبانی از پیامک متنی (SMS) و پیامک تصویری (MMS)


مدیا پلیر با قابلیت پخش فایلهای رسانه ای (media files). البته این نسخه فاقد پشتیبانی از اجرای فیلم و بلوتوث استریو بود.


برنامه یوتیوب (YouTube) جهت تماشای فیلم‌های این سایت از طریق اینترنت.


اعلام اطلاعیه‌های(Notifications) نوار وضعیت از طریق زنگ قابل انتخاب یا ال ای دی (LED) و لرزاننده (vibration) تلفن همراه.


وجود برنامه‌هایی مانند: زنگ هشدار(Alarm Clock)، تقویم، برنامه تماس گیر (Dialer)، لانچر صفحه خانگی(Home screen (launcher، گالری عکس(pictures gallery) و تنظیمات


پشتیبانی از اتصالات بی سیم، Wifi و بلوتوث








آندروید ۱٫۱


در تاریخ ٩ فوریه ٢٠٠٩ اندروید ١٫٠ به ١٫١ بروز رسانی شد.


آندروید ۱٫۵ یا Cupcake (کیک فنجانی)


نسخه ۱٫۵ اندروید در ۳۰ آوریل ۲۰۰۹ منتشر شد. این نسخه اندروید مبتنی بر کرنل لینوکس ۲٫۶٫۲۷ بود. از جمله قابلیت‌هایی که در این ویرایش گنجانده شده بود شامل:


امکان ضبط فیلم از طریق دوربین فیلمبرداری


فرستادن فیلم به سایت یوتوب Youtube و عکس به سایت پیکاسا Picasa به صورت مستقیم از روی گوشی


صفحه کلید مجازی با قابلیت پیش‌بینی کلمات وارد شده


پشتیبانی از پخش استریوی موسیقی از طریق بلوتوث (A2DP) و کنترل پخش موسیقی یا ویدیو از طریق بلوتوث (AVRCP).


قابلیت اتصال اتوماتیک به دستگاه‌های بلوتوث


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


جابجایی انیمیشنی تصاویر به هنگام عوض شدن صفحات


آندروید ۱٫۶ Donut


در ۱۵ سپتامبر ۲۰۰۹ اندروید نسخه ١٫۶ یا دونات منتشر شد. این نسخه اندروید مبتنی بر کرنل لینوکس نسخه ۲٫۶٫۲۹ بود و قابلیت‌های زیر را به اندروید افزود:


بهبود در سرویس اندروید مارکت


رابط کاربری یکپارچه برای دوربین عکسبرداری، دوربین فیلمبرداری و گالری تصاویر


امکان انتخاب چند عکس برای پاک کردن در منوی گالری


به‌روزرسانی ویژگی جست‌وجوی صوتی


به‌روزرسانی ویژگی جست‌وجو با قابلیت جست‌وجو در موارد نشانه‌گذاری شده (Bookmarks)، تاریخچه (History)، اسامی‌(Contacts) و وب از صفحه اصلی (Home Screen)


پشتیبانی از تکنولوژی‌های به‌روز شده CDMA/EVDO، ۸۰۲٫۱x، *** و موتور Text to speech


پشتیبانی از رزولوشن WVGA برای صفحه نمایش


افزوده شدن قابلیت‌های حرکتی در سیستم عامل و ابزار برنامه‌نویسی برای برنامه‌نویسان








آندروید ۲ و ۲٫۱ Eclair (نان خامه‌ای)


هر دو نسخه ۲ و ٢٫١ اندروید مانند نسخه ١٫۶ مبتنی بر کرنل لینوکس ۲٫۶٫۲۹ طراحی شده‌اند. اندروید ویرایش ۲ در ۲۶ اکتبر ۲۰۰۹ معرفی شد. 


در سوم دسامبر ۲۰۰۹ SDK نسخه ۲٫۰٫۱ معرفی شد و SDK ویرایش ٢٫١ در ۱۲ ژانویه ۲۰۱۰ منتشر گردید. اهم امکانات اضافه شده در این نسخه به شرح زیر هستند:




سرعت سخت‌افزاریِ بهبود یافته


ویژگی چند لمسی Multi Touch


پشتیبانی از رزولوشن‌های بیشتر برای صفحه نمایش


رابط کاربری به‌روزرسانی شده


مرورگر اینترنتی با قابلیت پشتیبانی از HTML5


دفترچه تلفن به‌روزرسانی شده


گوگل مپ نسخه ۳٫۱٫۲


پشتیبانی از Microsoft Exchange


افزوده شدن امکان فلاش داخلی برای دوربین


افزوده شدن زوم دیجیتال دوربین


به‌روزرسانی صفحه کلید مجازی


پشتیبانی از بلوتوث نسخه ۱/۲


اضافه شدن قابلیت کاغذ دیواری‌های متحرک


اضافه شدن امکان ارسال فایل با استفاده از بلوتوث








آندروید ۲٫۲ Foryo (ماست یخ زده)




اندروید نسخه ۲٫۲ در ۲۰ مه ۲۰۱۰ معرفی شد. این ویرایش اندروید مبتنی بر کرنل لینوکس نسخه ۲٫۶٫۳۲ است و قابلیت‌های زیر به آن اضافه شده است:




افزایش سرعت سیستم عامل، حافظه و عملکرد سیستم بین ۲ تا ۵ برابر نسخه ۲


افزایش سرعت اجرای برنامه‌های کاربردی با استفاده از تکنیک‌های JIT


اضافه شدن موتور جاوا اسکریپت V8 کروم به مرورگر اینترنتی


افزایش پشتیبانی از Microsoft Exchange با قابلیت‌هایی چون سیاست حریم شخصی به‌روز شده، همسان‌سازی تقویم و …)


اندروید مارکت به‌روز شده با قابلیت به‌روزرسانی خودکار برنامه‌های کاربردی


شماره‌گیری صوتی و انتقال دفترچه تلفن از طریق بلوتوث


امکان نصب برنامه‌های کاربردی بر روی حافظه‌های جانبی


پشتیبانی از فلش نسخه ۱/۱۰ • بهبود عملکرد دوربین در حالت‌های عکس و فیلمبرداری








آندروید ۲٫۳ Gingerbread (نان زنجبیلی)




اندروید نسخه ۲٫۳ یا نان زنجفیلی در ۶ دسامبر ۲۰۱۰ معرفی شد. این ویرایش اندروید مبتنی بر کرنل لینوکس نسخه ۲٫۶٫۳۵ است. امکانات اضافه شده در این نسخه به شرح زیر هستند:




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


پشتیبانی از صفحه نمایش بزرگتر و رزولوشن بیشتر (WXGA و بیشتر) [۵]


پشتیبانی از تماس اینترنتی یا تماس‌های VoIP


افزودن قابلیت ان‌اف سی(NFC) یا همان ارتباط حوزه نزدیک.


ان‌اف سی (NFC) گونه‌ای وسیله ارتباطی بی‌سیم بین دو دستگاه که در مجاورت همدیگر قرار دارند هست که معمولا این فاصله حداکثر چند سانتی‌متر است. 


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



:: بازدید از این مطلب : 175
|
امتیاز مطلب : 6
|
تعداد امتیازدهندگان : 2
|
مجموع امتیاز : 2
تاریخ انتشار : سه‌شنبه 03 مرداد 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

 


عنوان دوره : دوره آموزشی #C

 

پیش نیاز : آشنایی با منطق برنامه نویسی

 

 

نرم افزار های مورد استفاده :

 

 MICROSOFT VISUAL STUDIO 2010

MICROSOFT SQL SERVER 2008 R2

 

فهرست مخاطبین:

  •  این دوره برای افرادی طراحی شده است که با یک زبان برنامه نویسی آشنایی دارند و می خواهند دانش عملی خود را در زمینه برنامه نویسی شیءگرا، مفاهیم پایه ای .NET Framework افزایش دهند.
  •  برنامه نویسانی که برنامه نویسی را به طور تجربی آموخته اند و دانش کافی از معماری .NET، نحوه مدیریت حافظه در .NET و ویژگیهایی نظیر Genericها، delegate ها، Boxing و UnBoxing  و همچنین Reference Typeو  Value Type و تفاوت آنها و ... را به خوبی    نمی دانند از مخاطبین این دوره هستند.
  •  دانشجویانی که با تکنولوژی XML و کاربردهای آن در صنعت نرم افزار آشنا نیستند و یا به صورت عملی برنامه نویسی ننموده اند نیز از مخاطبین این دوره هستند.

 

 

اهداف دوره:

 

 

 

 

 

  • مبانی C#
  •  متغیرها
  •  کنترل جریان
  •  حلقه ها
  •  دستورات پرش (Jump)
  •  آبجکت ها و انواع دادهای
  •  متد ها
  •  خاصیت ها
  • وراثت
  • عملگر ها و Cast ها
  • رشته ها و عبارات با قاعده
  • مجموعه ها
  • Generic ها
  • خطاها و Exception ها
  •  کار با Visual Studio 2010
  • فرم ها و کنترلهای ویندوزی
  •  ADO.Net
  •  Connection Oriented Database Programming
  •  Connection Less Database Programming
  •  XML و .NET
  •  اعمال تغییرات documentهای XML با استفاده از Model Document Object
  •  خواندن و نوشتن documentهای XML
  •  دسترسی به documentهای XML با استفاده از مدل Xpath Data

 

سرفصلهای دوره:

  • مبانی #C
  • پیش از شروع کار
  • اولین برنامه C# شما
  • کد برنامه
  • کامپایل و اجرای برنامه
  • نگاهی دقیق تر

o متغیرها

  • مقدار دهی متغیرها
  • محدوده (scope) متغیر
  • تداخلات scope مربوط به متغیر محلی
  • تداخلات scope مربوط به فیلد ها و متغیر های محلی
  • ثابت ها (Constants)
  • انواع داده ای از پیش تعیین شده
  • انواع مقداری و انواع ارجاعی
  • انواع CTS
  • انواع مقداری از پیش تعیین شده
  • انواع integer
  • انواع Floating-point (نقطه اعشار)
  • نوع دسیمال
  • نوع بولین (Boolean )
  • نوع کاراکتری
  • انواع ارجاعی از پیش تعیین شده
  • نوع آبجکت (Object)
  • نوع رشته ای (String)

o کنترل جریان

  • دستورات شرطی
  • دستور if
  • دستورswitch

o حلقه ها

  • حلقۀ for
  • حلقۀ While
  • حلقۀ do…while
  • حلقۀ foreach

o دستورات پرش (Jump)

  • دستور goto
  • دستور break
  • دستور continue
  • دستور return
  • Enumeration ها

 

آبجکت ها و انواع دادهای

  • کلاس ها و ساختارها
  • اعضای کلاس
  • اعضای داده ای (Data Members)
  • اعضای تابعی (Function Members)

o متد ها

  • تعریف کردن متد ها
  • بکارگیری متد ها
  • ارسال پارامتر ها به متد ها
  • پارامتر های ref
  • پارامتر های خروجی
  • عمل Overloading متد

o خاصیت ها

  • خاصیت های فقط خواندنی و فقط نوشتنی
  • معرف های (modifiers) دسترسی مربوط به خاصیت ها
  • نکته ای در مورد عمل inlining
  • سازنده ها (Constructors)
  • سازنده های ایستا (Static Costructors)
  • فراخوانی سازنده ها از طریق سایر سازنده ها
  • فیلد های فقط خواندنی
  • ساختار ها (structs)
  • ساختار ها از انواع مقداری هستند
  • ساختار ها و وراثت
  • سازنده های مربوط به ساختار ها
  • کلاس های Partial (بخش بخش شده)
  • کلاس های ایستا (Static Class)
  • کلاس Object متد های System.Object
  • متد ()ToString

وراثت

  • انواع وراثت
  • وراثت پیاده سازی (Implementation) در مقابل وراثت واسط
  • وراثت چند گانه (multiple inheritance)
  • ساختار ها و کلاس ها
  • پیاده سازی وراثت
  • متد های مجازی
  • پنهان سازی متد ها
  • فراخوانی نسخه های پایه ای (Basic) توابع
  • کلاس ها و توابع مجرد(Abstract)
  • کلاس ها و متد های sealed (مهر و موم شده)
  • سازنده های کلاس های مشتق شده
  • افزودن یک سازنده بدون پارامتر به یک سلسله مراتب
  • افزودن سازنده های با پارامتر به یک سلسله مراتب
  • تعریف کننده ها (Modifiers)
  • تعریف کننده هی مرئیت (visibility modifiers)
  • سایر modifier ها
  • واسط ها(Interfaces)
  • تعریف و پیاده سازی واسط ها
  • واسط های مشتق شده (Derived Interface )

 

عملگر ها و Cast ها

  • عملگر sizeof
  • عملگر typeof
  • مقایسه آبجکت ها برای تساوی (Equality)
  • مقایسه انواع ارجاعی از نظر Equality (تساوی)
  • متد مجازی Equals()
  • متد ایستای Equals()
  • عملگر مقایسه (==)
  • تبدیلات user-defined
  • پیاده سازی cast های user-defined
  • تبدیلات (casts) مابین کلاس ها
  • Cast های boxing و unboxing
  • رشته ها و عبارات با قاعده
  • System.String
  • ساخت رشته ها
  • اعضای StringBuilder
  • قالب بندی رشته ها
  • چگونه رشته قالب بندی می شود
  • مثال FormattableVector
  • عبارتهای با قاعده (Regular Expressions)
  • مقدمه ای بر عبارت های با قاعده

مجموعه ها

  • بررسی گروه هایی از آبجکت ها
  • Collection ها
  • تعریف یک مجموعه
  • لیست های آرایه ای(ArrayList)
  • دیکشنری ها و HashTable ها

Generic ها

  • مروری بر Generic ها
  • کارایی (Performance)
  • تعیین نوع ایمن(Type Safety)
  • استفاده مجدد از کد باینری
  • افزایش میزان کد ها
  • قواعد نام گذلری
  • کلاس های مجوعه Generic
  • مروری بر روی مجموعه های Generic
  • بکارگیری کلاس List

خطاها و Exception ها

  • نگاهی به خطا و مدیریت خطا
  • کلاس های Exception
  • کلاس های Exception کلاس پایه (base)
  • به دام انداختن خطا ها
  • پیاده سازی چندین بلاک catch
  • به دام انداختن Exception هایحاصل از سایر کد ها
  • خاصیت های System. Exception
  • اگر یک Exception مدیریت نشود چه اتفاقی می افتد؟
  • بلاک های try تودر تو
  • اصلاح نوع Exception
  • مدیریت Exception های مختلف موجود در مکان های مختلف
  • کلاس های خطای User-Defined
  • به دام انداختن Exception های User-Defined
  • تعریف کردن کلاس های Exception

Visual Studio 2010

  • کار با Visual Studio 2010
  • ایجاد یک پروژه
  • انتخاب یک پروژه
  • پروژه کنسولی که اخیراً ایجاد شده است
  • سایر فایل های ایجاد شده
  • Solution ها و پروژه ها
  • افزودن یک پروژه دیگر به Solution
  • تنظیم پروژه startup
  • کد برنامۀ ویندوزی
  • خواندن پروژه های Visual Studio 6
  • مرور کردن و کد نویسی یک پروژه
  • ویرایش گر پوشه ای
  • سایر پنجره ها
  • پنجره Design view
  • پنجره Properties
  • پنجره Class view
  • پنجره Object browser
  • پنجره Server Explorer
  • ساخت یک پروژه
  • ساخت (building ) ، کامپایل (Compiling) و ایجاد (making)
  • اشکال زدائی و عرضۀ build ها
  • بهینه سازی (Optimization)
  • نشانه های debugger (اشکال زدا)
  • دستورات اضافی اشکال زدائی سورس کد
  • انتخاب یک پیکر بندی
  • ویرایش یک پیکر بندی
  • Break point ها
  • پنجره watch
  • Exception ها
  • عمل refactoring

فرم ها و کنترلهای ویندوزی

 

 

  • ایجاد یک برنامه Windows form
  • سلسه مراتب کلاس
  • کلاس control
  • اندازه و مکان
  • شکل ظاهری(appearance)
  • تعامل با کاربر(user interaction)
  • عملکرد ویندوز(windows functionality)
  • کنترل ها و کامپوننت های استاندارد
  • کنترل button
  • کنترل CheckBox
  • کنترل RadioButton
  • CheckedListBox و ListBox و ComboBox
  • DateTimePicker
  • ErrorProvider
  • HelpProvider
  • ImageList
  • Label
  • ListView
  • PictureBox
  • ProgressBar
  • MaskedTextBox و TextBox و RichTextBox
  • Panel
  • TableLayoutPanelوFlowLayoutPanel
  • SplitContainer
  • TablePages وTableConrol
  • ToolStrip
  • MenuStrip
  • ContextMenuStrip
  • ToolStripMenuItem
  • ToolStripManager
  • ToolStripContainer
  • فرم ها
  • کلاس فرم
  • نمونه سازی و تخریب فرم
  • شکل ظاهری
  • Multiple Document Interface (MDI)
  • کنترل های سفارشی
  • صفات کنترل
  • کنترل سفارشی مبتنی بر TreeView
  • کنترل کاربر(UserControl)

ADO.Net

 

 

 

 

  • آشنایی با Connection
  • آشنایی با Command
  • آشنایی با DataAdapter
  • تراکنشها در Ado.Net
  • آشنایی با Dataset
  • آشنایی با DataTable
  • آشنایی با DataView
  • پروسه Data-Binding در فرم های ویندوز
  • آشنایی با BindingContext

معرفی XML و .NET

  • XML چیست؟
  • مزایای XML
  • برنامه های XML
  •  قوانین گرامر XML
  • Markup، حساس به Case است
  • یک document باید فقط یک عنصر ریشه ای داشته باشد
  • یک Start tag باید End Tag نیز داشته باشد
  • Tagهای Start و End باید بطور صحیحی nest شود
  • Valueهای Attribute باید در علامات نقل قول "" قرار گیرند
  • DTDها و Schemaهای XML
  •  Parse کردن اسناد XML
  • XSLT
  • XPath
  • .Net Framework
  • .Net و XML
  • اسمبلی ها و فضاهای نامی
  • مدل Parse کردن کلاسیک XML در .Net Framework
  • مدل Parse کردن LINQ محور در .Net Framework
  • فایل های پیکربندی .Net
  • ADO.NET
  • کنترل های سرور ASP.NET
  • XML Serialization
  • Remoting
  • سرویس های وب
  • XML Documentation
  • ویژگی های SQL Server XML
  •  کارکردن با Visual Studio
  • ایجاد برنامه های تحت ویندوز
  • ایجاد Libraryهای Class

دستکاری documentهای XML با استفاده از مدل document object

  • استفاده از DOM Parser
  • کی از DOM استفاده کنیم؟
  • یک نمونه از سندXML  
  • باز کردن یک سندXML موجود برای parse کردن
  • پیمایش در سندXML  
  •  جستجوی عناصر و nodeهای ویژه
  • بازیابی عناصر ویژه با استفاده از متد GetElementByTagName()
  • بازیابی عناصر ویژه با استفاده از متد GetElementByld()
  • انتخاب nodeهای ویژه با استفاده از متد SelectNodes()
  • انتخاب یک node واحد ویژه با استفاده از متد SelectSingleNode()
  • اصلاح کردن سندهایXML  
  • پیمایش بین nodeهای مختلف
  • اصلاح کردن محتویات موجود
  • حذف کردن محتویات موجود
  • اضافه کردن محتویات جدید
  • استفاده از متدهای Helper
  • کارکردن با فضای سفید (White Space)
  • کارکردن با فضای نامی
  • درک رویدادهای کلاس XmlDocument

 

خواندن و نوشتن documentهای XML

  • readerها و writerهای XML چه چیزی هستند؟
  • کی از readerها و writerها استفاده کنیم؟
  • کلاس های reader
  • کلاس XmlTextReader
  • کلاس XmlValidationaReader
  • کلاس XmlNodeReader
  •  خواندن سندها با استفاده از XmlTextreader
  • باز کردن سندهای XML
  • خواندن Attribute، عناصر، و مقادیر
  • بهبود اجرا با استفاده از جداول نامی
  • کارکردن با فضاهای نامی
  • حرکت بین عناصر
  • متد ReadSubTree()
  • متد ReadToDescendant()
  • متد ReadToFollowing()
  • متد ReadToNextSibling()
  • متد Skip()
  • حرکت بین Attribute
  • خواندن محتویات
  • متد ReadinnerXml()
  • متد ReadOuterXml()
  • متد ReadString()
  • نوشتن سندهای XML
  • Export کردن ستون ها به صورت عنصر
  • Export کردن ستون ها به صورت Attribute
  • تعیین رمزگذاری کاراکتر
  • فرمت کردن Output
  • ساپورت فضای نامی
  • کارکردن با داده هایNontextual
  • Serialize کردن داده ها
  • Unserialize کردن داده ها

 دسترسی به documentهای XML با استفاده از مدل Xpath Data

  • مروی بر XPath
  • موقعیت Path
  • Axis
  • تستهای Node
  • اسناد
  • عملکردهای Xpath
  • مدل Xpath Data
  • ایجاد XpathNavigator
  • پیمایش در سند XML با استفاده از XPathNavigator
  • انتخاب کردن nodeها
  • پیمایش بین Attribute
  • بازیابی XML درونی و بیرونی
  • به دست آوردن یک XmlReader از XPathNavigator
  • به دست آوردن یک XmlWriter از XPathNavigator
  • ویرایش سندهای XML با استفاده از کلاس XPathNavigator

آموزش سی شارپ

تدریس سی شارپ

 



:: بازدید از این مطلب : 1376
|
امتیاز مطلب : 12
|
تعداد امتیازدهندگان : 4
|
مجموع امتیاز : 4
تاریخ انتشار : سه‌شنبه 06 تیر 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش MVC

 


Model - View - Controller

MVC3 آخرین تکنولوژی مایکروسافت در زمینه تولید صفحات وب (تا این لحظه ، یعنی مارچ 2011) می باشد که کم کم جایگزین روش قبلی تولید صفحات وب (Web Forms) می شود و جالب اینجاست که به شدت از سوی مایکروسافت تبلیغ می شود و منابع آن به سرعت انتشار می یابند. این تکنولوژی که در حال حاضر نسخه 3 آن منتشر شده است دارای مزیتهای زیر نسبت به تکنولوژی قبلی (Web Forms) می باشد(در واقع موارد ذیل مشکلات وب فرمها هستند).

  • در وب فرمها ، برنامه نویس کنترل زیادی روی خروجی HTML تولید شده توسط ASP.NET ندارد و اگر شما سورس کد صفحه را ببینید ، شاهد کد HTML شلوغی هستید که مشکل می توانید از آن سر در بیاورید
  • در وب فرمها با رد و بدل شدن ViewState در هنگام ارسال به سرور ، حجم آن زیاد می شود و صفحه به اصطلاح پف می کند 
  • ایجاد واحد تست (Unit Test) در وب فرمها مشکل است 
  • چرخه رد و بدل شدن فایل بین کلاینت و سرور پیچیده است

 تکنولوژی MVC تمام مشکلات فوق را حل می کند و مزایایی نیز دارد از جمله :

  • Method Request است یعنی شما می توانید به جای فراخوانی کل یک صفحه ، یک متد را فراخوانی کنید
  • Partly Open Source است . یعنی بخشی از کدهای اصلی آن "باز" است و می توانید تحت استاندارد نرم افزارهای متن باز ، آن را ویرایش کنید

من در ابتدا تصمیم داشتم که در 5 الی 6 مقاله کل مبحث را خلاصه کنم ولی ترجیح دادم تا به جای آن ، بصورت گام به گام یک پروژه MVC را شروع کنم و در طی آن مطالب جدید را بیان کنم. اما قبل از شروع :

- نصب برنامه :

 MVC2 در ویژال استودیو 2010 نگارش Ultimate از پیش نصب شده است ولی اگر بدنبال نصب MVC3 هستید ، از آدرس http://www.microsoft.com/web  ابزار WebMatrix را نصب کنید. این ابزار پس از نصب ، پنجره Web Platform Installer 3 را در اختیار شما می گذارد که نه تنها می توانید MVC3 را نصب کنید ، بلکه می توانید برنامه های مفید دیگه ، مثل تنظیمات توصیه شده مایکروسافت برای IIS7 یا موتور (engine) بسیاری از CMS های معروف مثل DotNetNuke ، Drupal , Joomla , Umbarco را نیز نصب کنید (یکی به عجایب هفت گانه دنیا اضافه شده !!!)

- مبانی MVC:

من چون نمی خواهم خیلی وارد مباحث تئوریک شوم بصورت خلاصه توضیح می دهم و زمانی که پروژه را شروع کردیم ، خودتان این مفاهیم را بهتر متوجه می شوید . برای شروع از MVC2 آغاز می کنیم و پس از طرح مباحث اصلی MVC3 را نیز شرح می دهم .

در MVC سه جزء اصلی وجود دارد :

  • Model
  • Controller
  • View

Model کلاسهایی برای ارتباط با دیتابیس و استفاده از تکنیک هایی مثل Linq و Entity Framework هستند

Controller قلب MVC است و کنترل کننده درخواستهای کاربر است ، کلاسهایی هستند که در آنها ، متدهای (اکشن های) مختلف جهت پاسخگویی به درخواست کاربر و انتخاب Model و یا View (خروجی) مناسب ، وجود دارد.

View رابط کاربری است یعنی آنچه کاربر باید ببیند را در آن نمایش می دهیم.

- ایجاد پروژه جدید : برای ایجاد پروژه جدید مطابق معمول از منوی File ویژال استودیو ، گزینه New و سپس Project را انتخاب کنید و سپس یکی از قالبهای زیر را انتخاب کنید :

  • ASP.NET MVC2 Web Application
  • ASP.NET MVC2 Empty Web Application

(البته اگر MVC3 را نصب کرده باشید ، MVC3 را هم می بینید) تفاوت دو قالب فوق در این است که اولی شامل یک سری الگوهای آماده ، مثل Membership دات نت فریم ورک ، مراجع Jquery ، کلاسهای CSS از پیش ساخته شده است ولی دومی (Empty) اینها را ندارد و خودتان باید آنها را اضافه کنید برای شروع ، قالب اول را انتخاب کنید، نام و مسیر مناسبی برای آن انتخاب کنید و پروژه را ایجاد نمایید ، از شما سوال می شود که آیا تمایلی به ایجاد واحد تست دارید یا خیر (که من برای شروع خیر را انتخاب می کنم، توی شکل زیر Yes انتخاب شده !) :



پس از ایجاد باید شکل Solution Explorer شما به صورت زیر باشد :



 همانطور که می بینید پوشه های مجزایی برای هر دسته از فایلها وجود دارد : مثل Controller , View , Model , ... پوشه Script شامل فایلهای جاوا اسکریپت و Jquery و MicrosoftAjax است . پوشه Conetnt هم محلی برای نگهداری فایلهای CSS و تصاویر است. اگر برنامه را اجرا کنید (F5) باید صفحه ای آبی رنگ با پیام Welcome to ASP.NET MVC! مشاهده کنید.

برای شروع کار فایل HomeController.cs از فولدر Controllers را باز کنید . کدهای زیر را در آن می بینید :

namespace _30Sharp_com_MVC.Controllers
{
    public class HomeController : Controller
    {
        [HandleError]
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                ViewData["Message"] = "Welcome to ASP.NET MVC!";

                return View();
            }

            public ActionResult About()
            {
                return View();
            }
        }

    }
}

نکاتی که از کد فوق برداشت می کنیم :

هر فایل از نوع Controller با کلمه دلخواهی شروع می شود و بدنبال آن کلمه Controller می آید و این نام دلخواه در URL سایت تاثیر می گذارد . قالب URL در MVC به فرم زیر است :

Web site address/Controller/Action

اکشن / کنترلر / آدرس اصلی سایت

برای مثال برنامه را اجرا کنید ، روی لینک About  کلیک کنید و URL صفحه را ببینید ، چیزی شبیه این می بینید (به جز شماره پورت که متفاوت است)

http://localhost:34256/Home/About

به متدها و رخدادهای صفحه در ام وی سی ، Action می گویند و در هر کنترلر می توانید چندین اکشن بیاورید و یا Overload کنید خروجی اکشن ها ، به صورت پیش فرض ActionResult است ولی می تواند هر نوع دیگری باشد (مثلا string) . در یک کنترلر شما ممکن است چندین اکشن داشت که برای هر اکشن یک View ایجاد می کنید و در آن ، مشخص می کنید که کاربر چه خروجی را باید مشاهده کند . برای مثال زیر اکشن About ، من اکشن دیگری به نام Contact ایجاد می کنم و در آن اطلاعات خود را در Message ذخیره می کنم :

public ActionResult Contact()
{
    ViewData["Message"] = "My Email : Amir.Madadi@hotmail.com and My Contact is 0422760153";
    return View();
}


توضیح اینکه شئی ViewData از نوع دیکشنری است که در آن می توانید کلید تعریف کنید و به آن مقدار دهید که من در اینجا کلیدی یه نام Message تعریف کرده ام و اطلاعات تماس را درون آن ریخته ام .

حال باید برای این اکشن یک View ساخت تا مشخص کنیم کاربر چه چیزی را ببیند. برای این کار روی اکشن کلیک راست می کنیم و گزینه Add View را انتخاب می کنیم :

سپس پنجره زیر ظاهر می شود :

در مورد امکانات این پنجره بعدا صحبت می کنیم ، فعلا پیش فرضها را قبول کنید و روی Add کلیک کنید . خواهید دید که فایلی به نام Contact.aspx در فولدر View ایجاد می شود . در تگ Asp:Contect id="Content2" خط زیر را اضافه کنید :

<h2><%: ViewData["Message"] %>h2>

کد صفحه Contact.aspx شما باید شبیه این باشد :

آموزش MVC

تدریس MVC

حال برنامه را اجرا کنید و بعد از شماره پورت تایپ کنید : Home/Contact/ یعنی چیزی شبیه این :

http://localhost:34256/home/contact

اگر متن تایپ شده را در صفحه می بینید، به خود تبریک بگویید ، چون اولین صفحه وب خود را با تکنولوژی MVC ساخته اید.

قبل از پایان ، نگاهی به ساب فولدرهای View بیندازید ، خواهید دید که به ازای هر Controller یک فولدر وجود دارد که در آن View های مربوطه نگهداری می شوند (در حال حاضر باید Account ، Home و Shared را ببینید) که فولدر Shared برای ذخیره کردن اجزای مشترک مثل Master Page ها استفاده می شود.

خب تا اینجای کار یک پروژه جدید MVC ایجاد کردیم ، کمی در مورد ساختار MVC صحبت کردیم و یک View جدید به پروژه اضافه کردیم . در مقاله بعدی صفحاتی با کارایی بیشتر ایجاد می کنیم، تا آن موقع مروری بر دانسته های خود درباره Linq to SQL داشته باشید ، چرا که بزودی از آن در صفحات Model استفاده می کنیم

 



:: بازدید از این مطلب : 430
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : دوشنبه 28 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش PHP

 

آموزش php - قسمت اول - نصب Xampp

 آموزش PHP

تدریس PHP

برای شروع کار با php نیاز به نصب مفسر اون داریم که ما پکیج Xampp رو برای کارمون انتخاب کردیم. مراحل نصب رو باید به صورت زیر دنبال کنیم:

Wink در اولین مرحله خوش آمدگویی داریم پس Next رو کلیک می کنیم

مسیر نصب رو مشخص کنید

Choose Install Location

اضافه نمودن ادامه مطلب ]
برچسب ها و کلمات کلیدی :
کلمات را با "." (نقطه) از هم جدا کنید. مانند : عکس.عکس طبیعت.عکس منظره
موضوع :

 ثبت موقت و عدم نمایش در وبلاگ 
 در حال نمایش/نمایش داده شود 
این مطلب در تاریخ زیر در وبلاگ به نمایش درآید
تاریخ :              زمان :  : 
دسترسی به مطلب فقط مخصوص اعضا
این مطلب در صفحه اصلی نمایش داده شود
این مطلب به صورت ثابت در ابتدای وبلاگ نمایش داده شود؟(پست ثابت)
درج رمز برای ادامه مطلب ]

برای آموزش این قسمت و توضیحات کامل و چگونگی قرار دادن عکس در وبلاگ اینجا را کلیک کنید

< قبلی بعدی >
 

در صورتی که میخواهید Apache و MySQL به عنوان سرویس های ویندوز نصب بشند گزینه های Install Apache as Service و Install MySQL as Service رو تیک بزنید! انتخاب این گزینه ها اختیاریه. تنها نکته ای که هست اینه که در صورتیکه IIS رو سیستم تون نصبه و Apache رو نصب کنید باید حتما پورت IIS یا Apache رو تغییر بدید وگرنه Apache پیغام خطای Port Busy بهتون میده! بعد روش تغییر پروت IIS و Apache رو میبینیم. خوب تا اینجا کار تقریبا تمومه فقط باید دکمه Install رو بزنید.

Xampp Options

حالا اگه به مشکل خاصی نخورده باشید کار نصب تموم شده!

اینم کنترل پنل Xampp هستش که با اون میتونید Apache و MySQL رو Start یا Stop کنید! یادتون باشه اگر تیک Install as Service رو نزده باشید باید هر بار که می خواهید روی وب سایتتون کار کنید Apache و MySQL فعال باشند یعنی باید دکمه Start کنارشون رو کلیک کنید (Runningرو کنار Apache و MySQL نمایش بده)

Xampp Control Panel

حالا مرورگرتون را باز کنید و در آدرس بار مرورگر تایپ کنید localhost یا 127.0.0.1 هر کدومشو رو که بنویسید فرقی نمی کنه! اگر همه چیز خوب پیش رفته باشه باید صفحه زیر رو ببینید که باید تویه این صفحه زبان صفحات Xampp رو انتخاب کنید پس روی English کلیک کنید!

Xampp Splash Screen

حالا باید صفحه زیر براتون نمایش داده بشه! اگه این صفحه نمایش داده شد یعنی همه چی خوب پیش رفته اگه که نه تو بخش انجمن ها مطرح کنید تا بهتون کمک کنیم مشکل حل شه!

Xampp Install Success



:: بازدید از این مطلب : 171
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : یکشنبه 27 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش ASP.NET

 

 

مشكل نمايش منوهاي ASP.NET در IE 8
امروز متوجه شدم كه كنترل استاندارد منو ASP.NET در مرورگر Internet Explorer 8 بدرستي نمايش داده نمي شود مشكل به اين صورت است كه زير منوها (Dynamic Items) بصورت سفيد و خالي نمايش داده مي شوند. به جناب گوگل متوسل شدم و با كمي جستجو راه حل مشكل رو پيدا كردم.براي رفع اين مسئله بايستي حالت z-index مربوط به Dynamic menu style را برابر با يك عدد بزرگ قرار دهيم،بصورت ذيل:


DynamicMenuStyle BackColor="#B5C7DE" CssClass="IE8Fix"
.IE8Fix
{
    z-index: 1000;
}
 

 



:: بازدید از این مطلب : 264
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : یکشنبه 27 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش SQL

 

مقدمه :‌
كاربرد روز افزون بانك اطلاعاتي SQL مرا بر آن داشت تا مطالبي هر چند كوتاه جهت خوانندگان محترم سايت تهيه نماييم. قبلا از هر چيز لازم به ذكر است كه مطالب ذيل در حد آشنايي بوده و دوستان براي دستيابي به تكنيكهاي بيشتر مي بايست از كتابهاي مرجع و Book online خود SQL Server استفاده نمايند. در مطالب زير كه سلسله وار مباحث SQL Server  را مرور خواهيم كرد , سعي شده تا ابتدا مطالب مقدماتي جهت آشنايي آورده شود و سپس اگر عمري باقي بود به مطالب پيشرفته آن بپردازيم. همچنين براي يادآوري خدمت دوستان ابتدا مرور سريعي بر چند دستور SQL كه كاربرد بيشتري دارند خواهيم پرداخت و سپس به SQL Server  و مطالب آن خواهيم پرداخت . مطالب زير اكثرا از كتاب Microsoft SQL Server 7.0 Database Implementation Training  انتخاب گرديده است . اين كتاب به همراه CD‌آموزش آن به عنوان يك مرجع براي امتحانات مايكروسافت استفاده مي‌شود.
جداول بكار رفته نيز همگي در SQL Server 7.0 در Database Northwind موجود هستند.

 

دستور Select

 

اين دستور كه دستوري مستقل نيست و حتما بايد با اجزايي بكار رود جهت ساخت پرس و جو بر روي بانك اطلاعاتي بكار مي‌رود و ركوردهايي كه با شرايط اين دستور همخوان باشد به عنوان نتيجه پرس و جو برمي‌گرداند .  چهار كلمه كليدي وجود دارند كه بخشهاي ارزشمند اين دستور را تشكيل مي‌دهند :

 

1-select
2-from
3-where
4-order by

شكل كلي دستور :

Select [*|distinct column1, column2,…]
From table[,table2,…]
Where شرط
Order by نام فيلد يا شماره فيلد

مثال :

Select * from customers

اين دستور تمام ركوردهاي جدول customers را برمي‌گرداند. كه نتيجه 91 سطر از اطلاعات اين جدول خواهد بود

 

حال  اگر شرط

Country ='uk'

اضافه كنيم ، فقط اطلاعات مشتريان انگليس جواب خواهند بود كه به 7 سطر تقليل مي‌يابد.

select * from customers
where Country ='uk'

 

حال

select City,Country from customers
order by city

فقط ستونهاي نام شهر (city) و نام كشور (Country) را بر گردانده و بر اساس نام شهر مرتب ميكند. دستور بالا با دستور پايين هردو يك جواب را ميدهند :


select City,Country from customers
order by 1

 

كه 91 سطر بازگردانده خواهد شد . در نتيجه پرس و جو تعدادي سطر تكراري وجود دارد مانند شهر London  كه اگر از كلمه Distinct‌ در Select  استفاده كنيم اين سطرهاي تكراري حذف خواهد شد .


select distinct City,Country from customers
order by 1

 

و جواب 69 سطر خواهد بود.

 

استفاده از توابع در Select

1- Count  :

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

 

Select  Count(*)  from  Customers

 

where  Country ='uk'

 

در اصل تعداد مشترياني را ميشمارد كه در كشور انگليس هستند. كه عدد 7 جواب است.



2- Sum :

مجموع يك فيلد عددي را برمي‌گرداند.


Select  sum(Quantity)  from [Order Details]

 

مجموع فيلد Quantity  را براي فيلدهايي كه شماره محصول آنها ( Productid) برابر 11 است را محاسبه ميكند


نكته 1  :

 در دستور select  مي‌توان از اسم مستعار استفاده كرد ، يعني نام جديدي را براي يك ستون در نظر گرفت  به عنوان مثال select قبل را  به شكل زير بكار برد :


Select  sum(Quantity)  as Sum_QTY
from [Order Details]
where productid = 11

 

كه Sum_QTY يك اسم مستعار براي مجموع است. استفاده از كلمه كليديas  ‌اختياري است.


نكته 2  :

 در دستور select  هرگاه اسم فيلدي اسم خاص باشد و يا فاصله بين اسم باشد مثل  Order Details  كه فاصله بين اسم جدول است حتماُ از علامت براكت []  ميبايست استفاده كرد.


نكته 3 :

استفاده از group by   :

 

هنگامي كه از توابع count ‌   و  Sum  به همراه يك  فيلد ديگر در دستور          select  استفاده مي‌شود از group by    استفاده مي‌كنيم .

 

به عنوان مثال دستور زير جمع مقادير  فيلد  Quantity  را براي هر شماره محصول  محاسبه ميكند .


Select  productid, sum(Quantity) as sum_qty
from [Order Details]
group by  productid

 

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


productid   sum_qty     

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

61         603

3          328

32         297

6          301

41         981

64         740

9          95

12         344

 

در صورتيكه دستور ordr by 1  بعد از group by  استفاده كنيم نتيجه بر اساس كد محصول مرتب خواهد شد.

 

آموزش SQL SERVER
نكته 4 :

دستور  where   مي تواند خود  شامل  يك دستور select    باشد :

select * from Products
where ProductID  in
    ( select distinct ProductID from [order details] where Quantity >70)
order by ProductID

 

تنها نكته اي كه مي بايست توجه كرد اين است كه نام فيلدي كه در شرط آورده مي شود حتما در دستور select   آورده شود, به عبارت ديگر select   درون شرط تنها يك ستون را مي بايست برگرداند .

 

تمرين :  با فرض اينكه دو جدول Products و order details داراي ستون (فيلد) يكسان  ProductID  هستند , يك دستور Select  بنويسيد كه تمام فيلدهايي از Products را نشان دهد كه فيلد ProductID  آن با ProductID  جدول order details يكي باشد.؟

 

حل :  

Select pr.*
From  Products  as pr , [order details] as od
Where pr. ProductID = od. ProductID

 

قابل به ذكر است كه بيش از 90% از كارهايي كه ما برروي جداول انجام مي دهيم با select  و تركيبات آن انجام مي شود. لذا بدست آوردن تبحر در نوشتن select  ها مي تواند شما را در تهيه برنامه ها ياري كند.

تدریس SQL SERVER

3-Min,max :

بيشترين و كمترين مقدار فيلد را در بانك اطلاعاتي بدست مي دهد.

Select min (Quantity)
from [Order Details]


4-Top n :

تعداد n سطر اول بانك اطلاعاتي را برمي گرداند.

Select top 5 *
from [Order Details]

 

5 سطر اول بانك را برمي گرداند.

 

نكته 3 :  در حالت بالا اگر مقدار سطر 5 و 6 يكي باشد فقط سطر 5 جواب خواهد بود براي گريز از اين حالت از شكل زير در اين دستور استفاده ميكنيم :

 

Select top n with ties   *

 

From table


5-Into

Select * from table1 into table2

 

اطلاعات table1 را به table2 كپي ميكند. البته table2 بايد از قبل وجود نداشته باشد.

 

اين دستور خود table2  را ميسازد.

دستور select قويترين و كاربردي ترين دستور در sql است كه خود ماهها نيازمند تمرين و آموزش است . براي اطلاعات بيشتر به books online خود Sql Server  مراجع كنيد.

دستور Delete

 

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

 

شكل كلي دستور :


Delete table1
Where شرط

مثال :

 

فرض كنيد جدول authors موجود باشد و فيلد كليد آن au_id باشد. براي حذف 10 سطر اول اين جدول از دستور زير استفاده مي كنيم :


DELETE authors
FROM
(SELECT TOP 10 * FROM authors) AS t1
WHERE authors.au_id = t1.au_id

دستور insert

 

براي اضافه كردن اطلاعات به يك جدول از اين دستور استفاده ميشود.


Insert into table1 (f1,f2,…)
Values (v1,v2,…)

 

كه f1,f2  نام فيلدها و v1,v2  مقادير آنها ميباشد.

 

البته ميتوانيد مقادير را نتيجه يك select  قرار داد.

مثال :


Insert into table1
Select top 10
From table2

 

مقدار 10 سطر اول را   از table2 را در table1 درج ميكند. البته بايد تعداد فيلدها يكي باشد. در غير اينصورت از values استفاده كنيد.



:: بازدید از این مطلب : 115
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : یکشنبه 20 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش SEO

 

آموزش سئو-سئو-تگh1-موتور جستجوی گوگل-بهینه سازی سایت-بهینه سازی وب سایت

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

 

قانون استفاده از تنها یک تگ h1

سال های سال است که گفته می شود که باید تنها از یک تگ h1 استفاده نمود . این مورد بار ها و بار ها هم توسط کسانی که با بهینه سازی سایت آشنا هستند در انجمن ها و سایت ها به کاربران تازه کار توصیه می شود. شرایطی که این قانون رو بوجود آورده :

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

 

خوب اگر این دو تا اصل رو در نظر بگیریم چون تگ h1 عدد یک داره پس یک بار و تگ h2 چون دو هست باید دوبار ولی می دونید که این طوری نیست و ما توی هر صفحه بیشتر از دوبار ممکنه از h2 استفاده کنیم. یک بار دیگه بیاید که شماره اول این شرط رو بخونیم “از اونجایی که هر صفحه می تونه فقط یک عنوان داشته باشه پس باید از یک تگ h1 استفاده نمود.” به نظر شما این قانون نسبی نیست ! بیشتر اوقات ما در صفحات اول سایت های پرتال مانند که صفحه به چند بخش تقسیم شده ما بیشتر از یک عنوان در صفحه داریم . منظور من عناوین اخبار نیست منظورم بخش ها یا همون Sections هست. اگر به طور مثال ما در اون بخش یه قسمت آخرین خبر ها رو داشته باشیم و در قسمت دیگه آخرین ارسال ها رو مطمئنا ذات صفحه ما دو قسمتی هست مگر اینکه ما نادیده بگیریم یا به خاطر این قانون خودمون رو به کوچه علی چپ راهنمایی کنیم !

نقض قانون استفاده از تنها یک تگ h1

همون طور که می دونید من توی صفحه اول تات وب من از دو تا تگ h1 استفاده کردم. ولی خوب شما احتمالا تا الان با خودتون گفتید که همه اینایی که گفتی درست ولی از کجا که معلوم حرف تو درست باشه یه دنیا دارن می گن که نه ! در جواب باید بگم که استفاده از چند تا تگ h1 تا به حال چندین هزار بار از بخش پشتیبانی مدیران سایت گوگل پرسیده شده و در یک ویدئوی رسمی که در وبلاگ وب مستر سنترال گوگل هست آقای Matt Cutts که سرپرست این بخش جستجو هست دقیقا این جواب رو به صورت رسمی داده . به نظر شما اگر خود گوگل می گه مشکلی در استفاده از چند تا تگ h1 نیست آیا بقیه می تونن بگن گوگل غلط کرده ما از گوگل که موتور جستجو خود گوگله بیشتر می دونیم ؟!!!!

البته این مورد رو دقت داشته باشید که طبق صحبت آقای Matt Cutts درسته می شه چند تا تگ h1 داشت ولی دیگه درست نیست کل صفحه رو پر کنیم از تگ h1 . مطمئنا هم اینکه از لحاظ ظاهری قشنگ نمی شه و هم اینکه درست نیست.به یاد داشته باشید در بهینه سازی سایت هیچ چیز صد در صد نیست و همه چیز نسبی هستش



:: بازدید از این مطلب : 85
|
امتیاز مطلب : 11
|
تعداد امتیازدهندگان : 3
|
مجموع امتیاز : 3
تاریخ انتشار : پنج‌شنبه 17 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش SQL

 

آموزشگاه تحلیل داده برگزار کننده دوره های تخصصی SQL


تماس :  02188146330 - 02188146323 - 09123840871


دانلود کتب تخصصی برنامه نویسی در سایت رسمی آموزشگاه : 

www.tahlildadeh.com



:: بازدید از این مطلب : 147
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : چهارشنبه 09 فروردین 1391 | نظرات (0)
نوشته شده توسط : tahlildadeh

آموزش PHP

 

متدهای جادویی در PHP

PHP شامل تعدادی از متدهاییست که با نام ” متدهای جادویی ” شناخته میشن.این متدها با دو زیر خط (Underline یا underscore) شروع میشن.این متدها در جاهای مختلف استفاده میشن و خیلی مفید هستن.در ادامه نگاهی میکنیم به متهای جدویی در PHP .

 

متد سازنده کلاس یا __construct()

اگر با برنامه نویسی شیء گرا در PHP آشنا باشید حتمن با این متد کار کردید.این متد هنگامی که یک نمونه از یک کلاس ساخته میشه اجرا خواهد شد.مثال زیر رو در نظر بگیرید :

class Animal{

function __construct()

{

echo 'Animal';

}

}

$animal = new Animal();

// output : Animal 

در کلاس Animal یک متد ایجاد کردیم با نام __construct() و در این متد رشته Animal رو نمایش دادیم. هنگامی که از کلاس Animal یک نمونه ایجاد میکنیم تابع __construct() اجرا میشه و رشته Animal در خروجی نمایش داده میشه.

متد مخرب یا __destruct()

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

مثال :

class DB{

…..

function __destruct()

{

$db->disconnect();

}

…..

}

$db = new DB();

unset($db); 

در کلاس بالا هنگامی که تابع unset میخواد کلاس $animal رو از حافظه خارج کنه متد __destruct() اجرا میشه و ارتباط با دیتابیس قطع میشه.

Overloading در PHP

در PHP واژه Overloading به معنی ایجاد متدها و متغیرهای داینامیک است. این متدها و متغیر ها به وسیله متدهای جادویی یا Magic Methods ساخته میشن.

ساخت متغیرهای داینامیک در PHP

متد __set

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

مثال :

class Car

{

private $vars = array() ;

function __set($name , $value)

{

$this->vars[$name] = $value ;

}

}

$car = new Car();

$car->wheel = 4 ;

$car ->color = 'red';

$car->name = 'BMW'; 

برای داشتن متغیرهای داینامیک بهترین راه استفاده از آرایه هاست. در کلاس Car یک آرایه با نام $vars ایجاد کردیم . دسترسی به آرایه $var به صورت Private تعریف شده یعنی در بیرون از کلاس به این آرایه دسترسی نداریم.سپس با متد __set متغیر $var رو مقدار دهی میکنیم.متد __set دو پارامتر میگیره.اولی نام کلید (key) و دومی مقدار (value) .

هنگامی که شما از کد زیر استفاده میکنید :

$car->color = 'red'; 

در حقیقت دارین ار زیر رو انجام میدید :

$car->vars['color'] = 'red'; 

همینطور که میبینید استفاده از متد __set خیلی میتونه در کار با کلاسها به ما کمک کنه.

متد __get()

هنگامی که از متد __set برای ایجاد متغیرهای داینامیک در کلاس استفاده میکنیم نیاز داریم که بتونیم به این متغیرهای داینامیک دسترسی داشته باشیم و از مقادیر این متغیرها استفاده کنیم.با استفاده از متد __get به راحتی میتونیم این ار رو انجام بدیم.

class Car

{

private $vars = array() ;

function __set($name , $value)

{

$this->vars[$name] = $value ;

}

function __get($name)

{

return $this->vars[$name];

}

}

$car = new Car();

//set values

$car->wheel = 4 ;

$car ->color = 'red';

$car->name = 'BMW';

// Get values

echo $car->color ; 

متد __get یک پارامتر میگیره که این پارامتر در اصل نام متغیرمونه. هنگامی که از کد :

echo $car->color ; 

استفاده میکنیم در حقیقت کد زیر در پشت صحنه اتفاق میافته :

echo $car->vars['color'] ; 

ساخت متدهای داینامیک در PHP

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

   __call متد جادویی

با استفاده از متد __call میتونیم توابعی به صورت داینامیک بسازیم.این تابع دو مقدار میگیره اولی نام متد و دومی پارامترهای تابع مورد نظر رو میگیره. برای درک بهتر به مثال زیر دقت کنید :

مثال : فرض کنید شما یک کلاس برای کار با دیتابیس نوشتید.خیلی خوبه که در کلاس شما توابعی باشه تا به صورت مستقیم با فیلدهای جدول شما در ارتباط باشه.مثلا هنگامی که میخواید با استفاده از فیلد ID درون دیتابیس جستجو کنید تابعی داشته باشید به صورت findByID یا اگر جستوجوی شما بر اساس فیلد name باشه با تابع findByName بتونید دستور SQL مورد نظر رو اجرا کنید.برای این کار دوراه دارید.

اول اینکه به ازای هر فیلد جدولتون یک تابع بسازید مثلا :

class Database

{

…

function findByID($id)

{

$sql = " SELECT * FROM users WHERE id = $id";

return $this->db->query($sql);

}

function findByName($name)

{

$sql = "SELECT * FROM users WHERE name = $name";

return $this->db->query($sql);

}

}

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

حالا ببینیم روش دوم برای این کار چیه.

روش دوم استفاده از متد جادویی __call

class Database

{

function __call($method , $args)

{

$field =strtolower( substr($method , 6 , strlen($methods) – ۶)) ;

$sql = "SELECT * FROM $this->table WHERE $field = $args[0] " ;

return $this->db->query($sql);

}

}

$db = new Database();

$db->findByID(10);

$db->findByName('saeed');

حالا ببینیم متد جادویی __call چه کاری انجام میده که میتونیم متدهای داینامیک بسازیم.

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

$field =strtolower( substr($method , 6 , strlen($methods) – ۶)) ; 

در خط بالا ابتدا از متغیر $method قسمت findBy رو حذف کردیم.رشته ای که باقی میمونه نام فیلد جدولمونه.سپس به حروف کوچک تبدیلش کردیم و داخل دستور SQL ازش استفاده کردیم.

با این کار به تعداد فیلدهای جدول راه هست برای جستو توی دیتابیس!!

متد جادویی __callStatic

این تابع از PHP نسخه ۵٫۳ معرفی شد. دقیقا مثل __call استفاده میشه اما همینطور که از نامش مشخصه برای متدهای static کاربرد داره.

گاهی اوقات ممکنه لازم داشته باشیم یک شیء رو به یک رشته تبدیل کنیم.اگر بخواید با دستور echo یک شیء رو در خورجی چاپ کنید یک خطا اتفاق میافته :

$car = new Car();

echo $car;

// fatal error: Object of class Car could not be converted to string

متد __toString()

این زمانی اجرا میشه که بخوایم یک شیء رو در خروجی نمایش بدیم.

class Car

{

function __toString()

{

return get_class();

}

}

$car = new Car();

echo $car ; // Car

اگر داخل کلاس متد __toString() رو پیاده سازی کرده باشیم هنگامی که با دستور echo شیء $car رو میخوایم توی خروجی نمایش بدیم با خطا مواجه نمیشیم.در مثال بالا هنگامی که دستور echo $car; اجرا میشه تابع get_class() اجرا میشه.

باد آوری : تابع get_class() نام کلاس جاری رو بر میگردونه.

Serialization

Serialization به تبدیل یک شیء یا یک آرایه به رشته گفته میشه.از Serialization برای نگهداری اشاء در فایل یا دیتابیس استفاده میشه.هنگامی یک شیء رو به حالت اول برگردونیم Unserialize گفته میشه.هنگامی یک کلاس رو serialize میکنیم تمام متغیرها و اعضای کلاس ذخیره خواهند شد.اما مشکلی که هست اینه که ممکنه نخواسته باشیم مثلا متغیری که کانکشن دیتابیس رو تگهداری میکنه هم ذخیره یشه.برای این کار از متد __sleep() استفاده میکنیم.

متد جادویی __sleep()

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

مثال :

class My

{

public $a;

public $b;

function __construct(){

$this->b = 'salam';

$this->a = 'a';

}

function __sleep()

{

//return get_object_vars($this);

return array('b');

}

}

$m = new My();

$a = (serialize($m));

var_dump(unserialize($a));

/*خروجی :

object(My)#2 (2) { ["a"]=> NULL ["b"]=> string(5) "salam" }

*/

همینطور که میبینید در خروجی کد بالا فقط متغیر $b دارای مقدار هست.این به این خاطره که آرایه ای که در متد __sleep() برگردانده شده فقط شامل متغیر b هست.

return array('b'); 

این هط میگه که هنگام serialize کلاس My فقط متغیر b حق ذخیره شدن رو داره.

متد __wakeup()

این متد هنگامی اجرا میشه که تابع unserialize() اجرا میشه.به عنوان مثال اگر هنگام serizalize یک شیء اتصال به دیتابیس رو بسته باشید داخل متد __wakeup میتونید این اتصال رو دوباره برقرار کنید.

class Database {

//...

public function __wakeup() {

// reconnect to the network

$this->connect();

}

//...

}

متد __invoke()

این متد هنگامی اجرا میشه که بخواید از یک شیء به عنوان یک تابع استفاده کنید.

 

خروجی بالا به شکل زیره :

__invoke method. $x = 5

متد جادویی __autoload()

متدهایی که در قسمت قبل آموزشش رو مشاهده کردید همگی در کلاسها قابل استفاده بودن. تابع __autoload یک تابع مستقل محسوب میشه.این تابع برای لود مستقیم کلاسها به کار میره.هنگامی که میخواید از یک کلاس یک شیء ایجاد کنید ابتدا نیاز هست که با دستور include یا require کلاس مورد نظر رو لود کنیم.

require 'classes/database.class.php';

$db = new Database();

با استفاده از تابع __autoload از require کردن های زیاد راحت میشیم.

در مثال بالا تمام کلاسهای پروژه ما در پوشه classes نگهداری میشن.

function __autoload($classname)

{

$class = 'classes/'.strtolower($classname).'.class.php';

require $class;

} 

با استفاده از تابع بالا در هر جای پروژه میتونیم به صورت خودکار کلاسها رو لود کنیم.

$db = new Database();

حرف آخر

متدهای جادویی در PHP خیلی مفید هستن و انعطاف زیادی به برنامه نویسی شیء گرا میدن.با استفاده از این متدها لذت برنامه نویسی شیء گرا دوچندان میشه.

اگر دقت کرده باشید در مقاله بالا سعی کردم ازاصطلاحات ساده برای دوستانی که اول راه هستند و با برنامه نویسی شیء گرا آشنایی زیادی ندارن استفاده کنم.مثلا یک جا از کلمه “متد (Method) ” و جای دیگه از کلمه ” تابع (function) ” استفاده کردم.منظورم از این کار این بوده که به کسانی که اول راه شیء گرایی هستن بفهمونم این ها فقط “اصطلاح” ـه و ممکنه در جاهای مختلف نامهای مختلفی داشته باشه.هنگامی که یک تابع در یک کلاس قرار میگیره به اصلاح بهش میگن ” متد ” اما مهم نیست بهش چی میگن مهم اینه که “تابع” همون “متد” ـه.

مهم درک مفهوم شیء گرایی هست و لطفا ذهن خودتون رو درگیر این اصطلاحات نکنید.



:: بازدید از این مطلب : 163
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : پنج‌شنبه 25 اسفند 1390 | نظرات (0)

data-aos="flip-right"
💬 نظرات کاربران
💬ثبت نام کاربران
💬ورود کاربران