بیگباکس را در دامین جدید ببینید!


newurl

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

http://www.drneamati.com

چه باید کرد؟


experience2

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

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

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

اما در زمینه علوم مربوط به فن آوری اطلاعات ، اعم از سخت افزار و یا نرم افزار ، و بویژه نرم افزار ، آنچه بیش از سایر انتقادات ، قابلیت پرداختن دارد ، موضوع عدم تناسب میان دروس و محتوای درسی نظام دانشگاهی با واقعیتها ، نیازها و پیشرفتهای روز این رشته های دانشگاهی است.

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

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

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

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

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

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

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

evolve1at300dpi

پرسش بعد ، آنست که اگر شما سالها از دریافت مدرک کارشناسی تان گذشته باشد ، و اکنون تمایل به ادامه آن داشته باشید ، چه باید کرد؟

به نظر من ، از ابتدا باید تکلیف خود را روشن کنید که آیا علاقمندی شما به تحصیل است و یا کار و افزایش مهارتهای شغلی در زمینه تحصیلی؟

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

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

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

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

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

اما علاوه بر موارد فوق ، دقت کنید پروژه انتخاب شده حتما شامل موارد زیر باشد:

1- حداقل دارای یک یا دو فرم وروداطلاعات باشد.

2- حداقل دارای یک یا دو گزارش پارامتریک باشد.

3- حتما چند کاربره باشد.

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

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

my-programming-bookshelf-large

پس از یافتن فهرستی مقایسه ای ، می توانید بر اساس زمانی که تمایل دارید طی آن ، پروژه به پایان برسد ، محیط مناسب را انتخاب نمایید.سپس ، مرحله فوق را برای انتخاب بانک اطلاعاتی مناسب انجام دهید.محیط اکسس ، سیکوئل سرور و…. چند محیط رایج را انتخاب کنید و مطالعه جامعی را در مورد آنها از نظر آیتمهای مهم در انتخاب بعنوان بانک اطلاعاتی مناسب برای توسعه نرم افزار را فهرست نموده و در هر آیتم آنها را با یکدیگر مقایسه کنید.

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

اکنون زمان یادگیری است.و همزمان با یادگیری و مرحله به مرحله ، پروژه را تولید نمایید.

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

موفق باشید.

ExperiencePoints-2008-10-20___Selected

ناگفته های وب


آیا تابحال از خودتون پرسیدید که منبع درآمد و انگیزه ادامه کار برای سایتهایی مانند گوگل ، یاهو ، ووردپرس  و …. چیست؟

خب اولین پاسخی که هر کسی ممکنه به این سوال بده اینه که : تبلیغات!

قصد دارم در این پست پاسخهای این سوال رو مورد بحث قرار بدم:

1- تبلیغات: بخش مهمی از درآمد سایتهایی مثل گوگل و یاهو و سایتهایی از این دست که بازدید کننده زیادی دارند ، تبلیغات و همچنین کسب در آمد از طریق کلیک بر روی لینکهای تبلیغاتی موجود در صفحات این وبسایتهاست.

2- امید به خرید: یکی دیگه از دلایل برای راه اندازی سایتهایی مانند ووردپرس و توییتر و… که به نظر میرسه منبع درآمدی ندارند ، امید به خرید این سرویس ها درآینده ، توسط شرکتهای بزرگی مثل میکروسافت ، گوگل ، یاهو و…. هست که نهایتا منجر به درج آگهی های تبلیغاتی و روشهای دیگر کسب درآمد توسط این سایتها برای خریدارانشون هست.بنابر این مالکان این سایتها باید منتظر بمونند تا میزان بازدید از این سایتها و مقبولیت اونها تا حد مشخصی بالا بره تا خرید اونها برای شرکتهای بزرگ توجیه اقتصادی داشته باشه.

3- اهداف سیاسی: برخی از این سایتها با منابع مالی برخی سیاستمداران بزرگ دنیا راه اندازی میشن.هدف این سیاستمداران از اینکار استفاده از این سایتها در وقت مقرر و عندالزوم هست.گاهی حتی درج یک تیتر خبری یکی دو خطی مثلا در بخش «پر بیننده ترین های سایت» میتونه تاثیر به سزایی در پیشبرد اهداف سیاسی داشته باشه.

4- پولشویی : در ایران ، اینکه شما پول لازم برای یک سرمایه گذاری کلان یا خرید یک کارخونه یا املاک و … رو از کجا آوردید و یا وجود مقدار متنابه پول در حساب بانکی شما ، اغلب مشکلی رو برای شما بوجود نمی آره.اما در کشورهایی مثل امریکا ، ژاپن ، انگلیس ، فرانسه ، آلمان و … مکانیزمهای کنترلی بسیار شدیدی وجود داره که این امکان یعنی پول بادآورده و یا پول ناشی از فعالیتهای غیر قانونی رو بسرعت مورد تعقیب قرار میده.خب در شرایطی اینچنین ، انتقال پول ، و همچنین توجیه استفاده از منابع مالی از این دست ، برای مراجع قانونی در کشورهای مذکور ، با اتکا به روشهای مدرن امروزی انجام میشه.بعنوان مثال ، خرید و فروش انواع عطر و ادکلن ، یکی از ابزارهای پولشویی محسوب میشه.در واقع شما عطری رو خریداری می کنید که ارزش واقعی اون مثلا هزار تومان هست ولی شما دارید برای اون ده هزار تومان پول میدید! این یعنی انتقال پول.همین کار در سطحی وسیعتر توسط پولشویان انجام میشه.مکانیزم مشابهی در مورد وبسایتها انجام میشه.حدس چگونگی انجامش کار مشکلی نیست.

5- آمار و اطلاعات:یکی دیگه از منابع درآمدی ، فروش اطلاعات و آمار بازدید کنندگان به خریداران هست.این موضوع بسیار مهمیه.بعنوان مثال ، گوگل هر ساله مبلغ هنگفتی پول از شرکتهای بزرگ دریافت می کنه که آمار خاصی رو از بازدیدها ، از مقالات خاص برای کسب میزان علاقمندی کاربران به موضوعات خاص ، مشخصات رایانه های اونها (گاها) ، و … در اختیار اونها قرار بده.مثلا یک شرکت با داشتن نوع خاصی از این آمار و اطلاعات ، شروع به سیاستگذاری خط تولید نرم افزاری و یا سخت افزاری خودش می کنه و در واقع با اینکار پیش بینی آینده بازار ممکن میشه.اینکار یعنی خرید اطلاعات ، نقش بسزایی در فروش اون محصول خاص خواهد داشت.شناخت وضعیت فعلی تقاضا و علاقمندی کاربران برای سیاستگذاری برنامه های آتی بسیار مهمه.

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

Objective-J جهشی بلند بسوی خدمات برخط


مدت زیادی از ارائه اولین نرم افزارهای رومیزی مشهور ، بصورت تحت وب و آنلاین نمی گذرد.فتوشاپ آنلاین توسط شرکت آدوبی ، و همچنین Office Live شرکت میکروسافت ، دو نمونه مطرح در این عرصه هستند که خود حرکتی نو در زمینه تولید و توسعه نرم افزار را رقم می زند.
به نظر می رسد با فراگیر شدن اینترنت پر سرعت و سهولت دسترسی به آن در همه جا (البته بجز ایران) ، توسعه دهندگان نرم افزار که همیشه با مشکلاتی چون کنترل کپی نرم افزار ، کپی رایت ، و به روز رسانی نرم افزارها ، پشتیبانی و …. مواجه بوده اند ، را به سمت تولید و توسعه فن آوریهای نرم افزاری خود در محیط اینترنت سوق داده است.
طبیعی است در صورتیکه شما یک اتصال اینترنتی پر سرعت داشته باشید ، طراحی یک تصویر ، روتوش آن ، و یا نگارش متن توسط Word و یا تهیه اسلاید توسط Powerpoint و…. بصورت برخط ، چندان تفاوتی با استفاده از نرم افزار رومیزی (Desktop Edition) آن نخواهد داشت و اساسا یکی از دلایل تداوم توسعه سیستمهای رومیزی تاکنون ، عدم وجود اینترنت پر سرعت ، در همه جا ، و برای همگان بوده است و در صورتیکه این امر محقق گردد ، مسلما شاهد کاهش چشمگیر نرم افزارهای رومیزی خواهیم بود.
استفاده از نرم افزارهای برخط ، موضوع کپی رایت و تامین مالی هزینه های تولید را تا حد زیادی برای تولید کننده ، برطرف می کند.
یکی از جدید ترین این سیستمهای بر خط ، مبتنی بر کتابخانه جاوای Framework-J محصول شرکت 280North هست که 280Slides نامگرفته است.این نرم افزار برخط تحت وب ، امکان تهیه انواع اسلایدها را ، همانند Powepoint اما بصورت کاملا برخط و تحت وب فراهم می کند و پرونده های تولید شده آن در قالب استاندارد با MS-Powerpoint 2007 هستند.
این سیستم را می توانید در http://280slides.com/Editor ببینید.
امیدوارم سورس آن نیز بزودی منتشر گردد.

نحوه استفاده از jQuery در ASP.Net-قسمت 2


در قسمت قبلی ، مختصری در مورد $ و همچنین نحوه انتخاب تگهای a گفته شد.jQuery روشهای متنوعی رو برای انتخاب یک ، چند یا همگی اشیای داخل پرونده HTML که حایز شرط خاصی هستند ، ارائه می ده.بعنوان نمونه یکی از اشکال استفاده از $ بصورت زیر هست:

$(selector)

که در اون بجای selector شما باید از عبارات انتخاب استفاده بکنید.همانطور که قبلا گفته شده ، $ به معنای کلاس پایه jQuery یا سازنده کلاس پایه jQuery هست.در واقع عبارت فوق با عبارت زیر یکسان هست:

jQuery(selector)

بعنوان نمونه ، شما می تونید از عبارت زیر برای انتخاب تمامی پیوندها (تگهای a) که در داخل بلاک پاراگراف (تگp) هستند ، در صفحه HTML می تونید از کد زیر استفاده کنید:

$(“p a”)

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

$(“div”)

که معنی اون اینست که تمامی تگهای div رو انتخاب بکنه که عملی رو که بعدا کد اونرو می نویسیم در موردش به اجرا بگذاره.حالا این کد رو توسعه میدیم:

$(“div”).html(“this text will displayed!”);

نتیجه عبارت فوق این هست که هرآنچه در بدنه تمامی تگهای div در پرونده HTML وجود داره ، با عبارت this text will displayed جایگزین بشه.ما می تونیم محدوده انتخاب رو با شرایطی محدود کنیم.مثلا برای اینکه فقط محتوای تگ div که کلاس css اون برابر با myclass هست رو با عبارت مورد نظر جایگزین بکنه:

$(“div.myclass”).html(""this text will displayed!");

توجه داشته باشید که باید قبلا یک پرونده از نوع css ساخته باشید و کلاسی با نام myclass در اون تعریف کرده باشید و سرانجام ، این پرونده css رو بصورت link در ابتدای پرونده html تعریف کرده باشید.بعنوان مثال ، فایل aspx باید بصورت زیر باشه:

image

یک نکته جالب این هست که مقدار برگشتی یا result هر کدوم از متدهاییکه استفاده می کنید ممکنه خود یکسری از element های html باشه.بعنوان مثال به کد زیر توجه کنید:

$(“div.myclass”).fadeout();

کد فوق باعث میشه تا جلوه fadeout در مورد تگهای div که کلاس اونها myclass هست اجرا بشه ، اما مقدار برگشتی تابع fadeout ، همین div هایی هست که کلاسشون myclass هست و در نتیجه شما میتونید بلافاصله پس از اجرای جلوه fadeout کارهای دیگری هم انجام بدین.به کد زیر توجه کنید:

$(“div.myclass”).fadeout().addClass(“mysecondclass”);

کد بالا باعث میشه که بلافاصله پس از اجرای جلوه fadeout ، کلاس این div ها هم تغییر بکنه و مثلا اگر در کلاس mysecondclass رنگ قلم و زمینه ، با کلاس myclass متفاوت باشه ، در اینصورت ، پس از اجرای این جلوه ، رنگ قلم و زمینه هم تغییر خواهد یافت.

روشهای دیگر انتخاب ، هم وجود داره که مثالهایی از اون رو می بینیم:

کد زیر ، اولین element یا تگ که در بلاک یک div با کلاس myclass وجود داره رو انتخاب می کنه:

$(“div.myclass”)[0]

یعنی تمامی تگهای بدنه یک تگ دیگر ، بصورت آرایه ای از element هی هستند که میتونید با ایندکسشون هم به اونها دسترسی پیدا بکنید.در مورد کد بالا ، مثلا میتونید بنویسید:

$(“div.myclass”)[0].innerHTML=”this text will be displayed!”;

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

$(“tr:nth-child(1)”);

کد زیر اولین تگ div موجود در صفحه رو که در ذیل تگ body تعریف شده انتخاب می کنه:

$(“body > div”);

کد زیر تمامی تگهای پیوند a رو که به یک پرونده از نوع zip اشاره می کنن انتخاب می کنه:

$(“a[href$=zip]”);

کد زیر تمامی تگهای div فرزندی body رو که دارای تگ a باشند رو انتخاب می کنه:

$("body > div:has(a)”);

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

نحوه استفاده از jQuery در ASP.Net و Visual Studio


image

برخی از دوستان در ایمیلهاشون به کرات این سوال رو مطرح کردند که آیا می شه از jQuery در ویژوال استودیو دات نت و برنامه نویسی تحت Net Framework. با ASP.Net استفاده کرد؟

همانطور که در پست تحت عنوان “JQuery چیست” توضیح دادم ، این کتابخانه و کتابخانه های مشابه مانند Prototype و YUI و GWT  از جمله پراستفاده ترین و محبوبترین کتابخانه های جاوااسکریپتی برای توسعه سیستمهای وبی هستند و مسلمه که استفاده از کتابخانه های جاوا اسکریپیتی براحتی در ویژوال استودیو ممکنه.

خاطر نشان می کنم که پس از انتشار Ajax Framework توسط میکروسافت ، به نظر بسیاری ، این بسته بسیاری از نیازهای توسعه دهندگان رو برطرف می کنه.اما در این باره ، سه موضوع جای بحث داره.

اول اینکه این بسته یک بسته نرم افزار باز هست اما منبع باز نیست.یعنی شما بدون محدودیت می تونید از اون در نرم افزارهاتون استفاده کنید اما سورسش در دستس نیست.لذا توسعه اون محدود به خود میکروسافت هست و طبیعیه که سفارشی سازی و امکانی مانند ساخت انواع متنوع Plugins برای اون فعلا وجود نداره یا بسادگی jQuery نیست.

دوم اینکه کار با jQuery برای ساخت نرم افزارهای مبتنی بر Ajax و یا استفاده از اون برای ایجاد رابطهای کاربری کاربرپسندتر ، بسیار ساده تر از Ajax Framework متعلق به میکروسافت هست.

و سومین موضوع اینکه ، ساخت خود مجموعه Ajax Framework بر اساس جاوا اسکریپت و بصورت یک پروژه Class در دات نت انجام شده و ما در همین مجموعه مقالات روش ساخت یک کنترل جدید برای ویژوال استودیو ، مبتنی بر جاوا اسکریپت رو توضیح خواهیم داد و البته جالبه بدونید که اغلب پکیج های تجاری مانند Telerik و WebUI هم مبتنی بر جاوااسکریپت و پروژه کلاس ، و بروشی مشابه آنچه توضیح خواهیم داد ، تولید شدند و شما با دونستن اون ، نیازی به خرید این بسته های گران قیمت و یا زحمات استفاده از نگارشهای کرک شده اونها در ایران نخواهید داشت.

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

در قسمت اول از این مجموعه مقالات ، به نحوه استفاده از jQuery خواهم پرداخت.

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

1- پکیج پایه که می تونید اونرو از سایت http://www.jquery.com دریافت کنید.این پکیج به دو صورت فشرده و ساده در دسترس هستند.همانطور که در یکی از پستهای قبلی درباره افزایش کارایی وب توضیح دادم ، سازندگان jQuery این کتابخونه رو بصورت فشرده هم برای دانلود در دسترس گذاشتن و با اینکار زحمت فشرده سازی اونرو از شما برداشتن.اما اگر مایلید تا اونرو شخصا توسعه بدین و کد اونرو مطالعه کنید ، می تونید که دانلود Uncompressed اونرو انجام بدین.برای تمامی کارهاییکه می خواهیم در آینده با jQuery انجام بدیم به یکی از ایندو نیاز داریم اما همانطور که گفته شد ، در صورتیکه کاربرد وب رو با jQuery توسعه دادید ، برای استفاده کاربر نهایی و یا upload سایت به میزبان اون ، حتما نسخه فشرده jQuery رو قرار بدید تا با اینکار کارایی وب هم افزایش پیدا بکنه.

2- jQuery User Interface یا jUI: این پکیج که مبتنی بر پکیج اول تولید شده ، شامل کنترلهایی برای ساخت رابط کاربری زیبا  ، جذاب و کارآمد و دارای قابلیت Ajax هست.شما میتونید مجموعه jUI رو از سایت http://code.google.com/p/jquery-ui دریافت کنید.اگر بخاطر موضوع تحریم ایران ، در دانلود اون مشکل دارید میتونید از آنتی فیلترهایی مانند Freegate استفاده کنید و یا اگر باز هم مشکلی بود ، کامنت بگذارید تا اونرو در جایی براتون بگذارم.

3- الحاقیه ها یا Plugins: همانند Firefox که یک نرم افزار آزاد با منبع باز هست ، مجموعه jQuery هم بصورت نرم افزار آزاد با منبع باز منتشر میشه و لذا کاربران زیادی اقدام به توسعه اون در قالب تولید Plugins های متعددی کردند.این الحاقیه ها رو میتونید بسته به نیازتون از سایت http://plugins.jquery.com دریافت کنید.

توصیه می کنم در پوشه پروژه وب خودتون ، و البته دنبال کردن این مباحث یک پروژه بنام Website1 در ویژوال استودیو ایجاد کرده و در همین پوشه ، یک پوشه بنام scripts ایجاد کنید و در اون هم یک پوشه دیگه بنام jq و در داخل این آخری ، سه پوشه دیگه بنامهای base برای پکیچ پایه ، یک پوشه pi جهت Plugins و نهایتا یک پوشه ui15 جهت قراردادن آخرین توزیع jUI یعنی نگارش 1.5 اون ایجاد کنید.بنابر این باید ساختاری مشابه زیر در پوشه Website1 داشته باشید:

Website1——->> jq

                         ————> base

                         ————> ui15

                         ————> pi

هر کدوم از پرونده های دانلود شده در بندهای 1 و 2 و 3 رو در پوشه خودش کپی کنید.

اولین کد خودمون رو برای دیدن نحوه کار با jQuery با نوشتن کد ساده ای در default.aspx مربوط به پروژه Website1 شروع می کنیم ، ابتدا کل کد پروژه رو یکجا می گذارم ، بعد مرحله به مرحله اونرو توضیح میدم:

image

خب بگذارید همین کد رو بررسی کنیم. در خط ششم ، ارتباط بین کتابخونه jQuery با این صفحه رو برقرار کردیم تا بتونیم در جاهای مختلف این صفحه از امکانات این کتابخونه استفاده کنیم ، توابعش رو فراخوانی کنیم و ….

همچنین یک تگ a هم در بدنه کد قرار دادیم که بتونیم یکی از قابلیتهای jQuery رو در مورد اون به آزمون بگذاریم.

در واقع ، کد اصلی jQuery ما ، خط 11 این صفحه هست که با تعریف یک جاوااسکریپت شروع می شه.علامت $ یک نام مستعار برای کلاس پایه شی ء jQuery هست که در این کتابخونه قبلا تعریف شده و شما به کرات از اون استفاده می کنید.بنابر این ، ترکیب ()$ کارش ، ساخت یک نمونه از کلاس jQuery هست.بزبان دیگه این ترکیب ، یک Constructor برای کلاس پایه  jQuery می باشد.

کار اصلی کتابخونه jQuery مبتنی بر شناسایی اشیای پرونده HTML بر اساس DOM هست.در واقع jQuery عملیات خودش رو با ارزیابی تگهای مربوط به این مدل بانجام میرسونه.بهمین دلیل ، لازم هست که ابتدا بررسی بشه که ساختار DOM در پرونده HTML وجود داره و اصطلاحا حضور داره یا نه؟

بنابر این ، کار با هر عملی در jQuery با فراخوانی یکی از توابع این کتابخونه بنام ready شروع میشه که یک متد برای شی ء Document متعلق به کلاس پایه jQuery هست که شما با ()$ اونرو ساختید.

لذا عبارت :

$(document).ready()

ابتدا یک کلاس پایه jQuery ایجاد میکنه و سپس متد ready از شی ء Document اونرو برای بررسی وجود مدل DOM در فایل HTML شما اجرا میکنه و اگر موفقیت آمیز بود ، ادامه کد اجرا خواهد شد.

همانطور که می بینید ، ادامه کد ، تعریف یک تابع جاوا اسکریپت برای عملی است که بعنوان نمونه ، می خواهیم انجام بدیم.این تابع که در بدنه متد ready و بنوعی بعنوان پارامتر متد  ready نوشته میشه (در این مثال ، در ادامه ،  تابعی خواهد بود که باعث میشه ، با کلیک بر روی هر لینک در این صفحه یک پنجره نمایش داده بشه که در اون متن Hello World رو خواهید دید):

function()

{

  $(“a”).click()

}

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

عبارت (“a”)$ به معنای انتخاب هست.یعنی تمامی تگهای a در صفحه باید انتخاب بشن تا عملیاتی که بعدا قراره براشون برنامه نویسی کنید ، برای اونها اعمال بشه.در این مثال ما می خواهیم رخداد click رو برای اونها کد نویسی کنیم.توجه داشته باشید (“a”)$ تمامی تگهای a رو انتخاب می کنه ، یعنی حتی اگر بر خلاف مثال ما ، بیش از یک تگ a یا لینک در صفحه وجود داشته باشه ، تابعی که نوشته خواهد شد ، بر روی همه اونها عمل خواهد کرد.

همانند متد ready ، شما عملی که در پاسخ به کلیک click بر روی تگهای a رو می خواید انجام بدید رو باید بصورت پارمتری از متد click پیاده سازی کنید.بنابر این ، تابع خودمونرو به شکل زیر توسعه می دیم:

function()

{

  $(“a”).click

  (

    ………… here we will write our java-script code………

  )

}

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

function()

{

  $(“a”).click

  (

     function()

       {  alert(“Hello World!”);  }

  )

}

خب ، حالا اگر کل کد اولیه رو که مرحله به مرحله ، توسعه اونرو توضیح دادیم ، اجرا کنید ، صفحه زیر رو خواهد دید :

image

و اگر بر روی لینک بالا کلیک کنید صفحه زیر رو خواهد دید:

image

در واقع تمامی کارهایی که تا بحال با استفاده از jQuery کردیم ، همانند اون هست که تنها یک خط زیر رو در فایلتون نوشته باشید:

<a href="" onclick="alert(‹Hello world›)">Link to Display Hello</a>

شاید در این مرحله این ذهنیت خطور بکنه که وقتی تمامی تلاش فوق برای کار نمایش یک پنجره Hello World فقط با یک خط قابل انجام هست ، پس چرا از jQuery استفاده کنیم؟

خب باید بگم این تنها یک مثال برای روشن شدن روش کلی استفاده از jQuery هست و اینکه شما با عباراتی مثل $ و همچنین کلاسه پایه jQuery آشنا بشین.در قسمت بعدی ، در مورد امکانات فوق العاده اون با ذکر مثالهای بیشتر بحث خواهیم داشت.

ویندوز 7 ، هسته کم حجم را هدف گرفته است!


بالغ بر 200 برنامه نویس در حال ساخت هسته (Kernel) جدید برای سیستم عامل آتی میکروسافت یعنی ویندوز 7 هستند که MinWin نام گذاری شده!

این کرنل دارای حدود 100 فایل به حجم تقریبی 25 مگابایت هست که واقعا قابل مقایسه با حدود 5000 فایل در کرنل 4 گیگابایتی ویندوز ویستا نیست.

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

هسته جدید قراره در انتشارهای بعدی ویندوز ، ویندوز سرور و همچنین سیستمهایی مانند Embedded Devices مثل سامانه های اسکن و … بکارگرفته بشه.

مطالب بیشتر در این زمینه رو میتونید در لینکهای زیر بخونید:
Windows get a ‘Mini-Me’
Microsoft to trim Windows bloat for 2010
http://www.osnews.com/story.php/18804/Thoughts-on-MinWin-Windows-7-and-Virtualisation/
Microsoft builds minin Windows core