باگ خوب یا بد؟

16 11 2010
software-bug

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

مدتی قبل بر روی تعویض یکی از نرم افزارهای یک اداره دولتی مشغول رایزنی بودیم. نرم افزار مربوطه با فاکس پرو و تحت داس نوشته شده بود. بحث بر سر انتقال اطلاعات از آن نرم افزار به نرم افزار جدید بود و لازم بود تا حتما فرمت ذخیره سازی و نام جداول و فیلدهای آن مشخص شود. دلیل این هم که ما نمی توانستیم چنین کاری انجام دهیم عدم نام گذاری صحیح دیتابیس بود. به طور مثال نام یک جدول WRK و نام چند فیلد اول مشخص و بقیه با اسامی مانند F1 تا F20 نام گذاری شده بودند. و البته جالبتر اینکه این نرم افزار در چند شعبه و همچنین شهر های مجاور هم مورد استفاده قرار دارد.

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

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

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

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

خودتان قضاوت کنید…





چند اشتباه در طراحی پایگاه داده

20 03 2010
Database - سال نو مبارک

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

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

سال نو همه مبارک و خوش و خرم باشید!

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

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

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

  • استفاده ازنوع داده های رشته ای به عنوان اندیس یا  کلید اصلی

نوع داده varchar و هر نوع داده کاراکتری یا رشته ای بدترین نوع انتخاب برای اندیس جدول است. این اشتباه زمانی بدتر خواهد شد که این فیلد به عنوان کلید اصلی نیز استفاده کنید؛ و سرانجام اشتباه با استفاده از این کلید به عنوان کلید خارجی تکمیل خواهد شد!

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

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

راه حل: راه حل بسیار ساده استفاده از انواع داده عددی مانند int یا bigint است. در عین حال می توانید از سایر انواع ساده دیگر نیز استفاده کنید.

  • عدم استفاده از اندیس یا کلید اصلی

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

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

این نکته را هم در نظر داشته باشید که بدون کلید اصلی و یا یک کلید یکتا نمی توانید ارتباطی مابین جداول بر قرار کنید.

  • استفاده از فیلد های NULL بی مورد

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

Database

در کنار استفاده از فیلدهای null می توانید از مقادیر پیش فرض هم استفاده کنید تا هیچ فیلدی ندانسته خالی رد نشود. این کار کدهای sql شما را هم کوتاه تر خواهد کرد.

در همین زمینه مطالعه کنید:

10 Common Design Mistakes

Ten Common Database Design Mistakes

Database Performance Philosophy





Sourceforge.net هم برای ایران تحریم شد

24 01 2010
SF.net

Sourceforge.net از معدود سرویس های پروژه های باز برای ایران بسته شد! بخوانید

Users residing in countries on the United States Office of Foreign Assets Control sanction list, including Cuba, Iran, North Korea, Sudan and Syria, may not post Content to, or access Content available through, SourceForge.net.

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

آنچه که مسلمه ضربه این تحریم رو برنامه نویسان خواهند خورد و نه کسی دیگه! باید به فکر انتقال پروژم به جای دیگه باشم.

ایمان در این پست سایتهای مختلف میزبانی پروژه های باز رو معرفی کرده. البته مدتی قبل برای یه کار گروهی با xp-dev.com کار کرده بودم و جالب بود.

  • نحوه دانلود با وجود تحریم ها

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

تنها کاری که لازمه رفتن به این آدرس و جستجو برای پروژه مورد نظرتون هست. برای مثال پروژه ++Notepad در این آدرس قرار داره و صفحه دانلودش اینجا هست.





وصله ماکروسافت برای رفع مشکل 7 ماهه من

31 07 2009

یک هفته پیش متوجه منشا و علت اصلی اشکالی شدم که نزدیک به 7 ماه بود من رو مشغول به خود کرده بود و نمی توانستم دلیل اصلی اون رو پیدا کنم.
مشکل مروبط به عملکرد کلاس CookieContainer هست که اشکال داره و در شرایط خیلی خاص دچار مشکل کوچکی می شه که باعث اشکالات عجیبی برای یکی از پروژه هام شده.
به هر حال بعد از گزارش دیروز من به ماکروسافت امروز خبر دار شدم که مشکل رو حل کردن و قراره در dotNET 4 قرار داده بشه.
برام خیلی خوشحال کننده است که تونستند در یک روز مشکل رو حل کنند. اما چه فایده که همچنان مشکل فعلی باقی خواهد ماند.
مشکل مربوطه رو اینجا بخونید:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521

اینجا هم گذاشته بودم:
http://stackoverflow.com/questions/1047669/cookiecontainer-bug





ایران و ترکیب احتمالی IBM و SUN

24 03 2009
IBM Sun

اگه در جریان خبرهای دنیای IT باشید حتما شنیده اید که IBM بر سر میز مذاکره خرید Sun به مبلغ 6.5 بـیلیـون دلار آمریکا هست.
این خرید در صورتی که اتفاق بیفته یکی از رویداد بسیار مهم سالهای اخیر خواهد بود چرا که Sun سازنده Java و پیشتاز تکنولوژی های وابسته در 15 سال گذشته هست.

قبل از اینکه به مقوله ایران بپردازم به بررسی تاثیرات این ترکیب بر محصولات این دو غول می پردازم.

Java
جاوا پرکاربردترین زبان برنامه نویسی و صد البته مهمترین تکنولوژی در دست این دو شرکت است. همانطور که شاید بدانید هردو شرکت IBM و SUN دارای کتابخانه زمان اجرای جاوا (JVM) هستند.
نتیجه این ترکیب می تواند open source تر شدن کتابخانه های Sun به عنوان اصلی ترین سازنده کتابخانه های جاوا بشود. چرا که sun با داشتن لیسانس opensource مخصوص به خود محدودیت هایی را ایجاد کرده است.
آنچه که از وابستگی محصولات IBM به جاوا و تاریخچه این شرکت نتیجه می شه اینه که این شرکت به هیچ وجه کنترل و توسعه جاوا را به شرکت زیر مجموعه احتمالی sun خود نخواهد داد و سعی خواهد کرد محصولی قوی تر و ترکیبی از این دو کتابخانه بدست بیاورد.

ابزارهای Java
IBM قبلا محیط توسعه مخصوص خود را برای Java داشت که البته به Eclipse انتقال یافت. هم اکنون نیز این شرکت به شدت از Eclipse همایت می کند. در آن طرف Netbeans قرار دارد که به شدت توسط Sun توسعه داده می شود.
تنیجه این ترکیب می تونه به سیاست های بعدی شرکت ترکیب شده IBM/Sun بستگی داشته باشه که پشتیبانی حرفه ای از یکی از این محصولات را به مرور زمان حذف کند. به هر حال در طولانی مدت این دو محصول نخواهند توانست با هم کنار بیایند و یکی باید حذف شود.

بانک اطلاعاتی

MySQL محصول فعلی Sun رو می توان گل سرسبد شرکت ترکیب شده دانست. دلیل آن هم به خاطر تعداد کاربران و همچنین متخصصین آن کاملا مشخص است.
در آن طرف DB2 محصول IBM قرار دارد که برای پایگاه داده های بزرگ و سرور ها طراحی شده است.
از اونجایی که MySql محدودیت کاری برای کاربران سطح پایین تا سرور های بزرگ را ندارد که این حیطه گسترده برای DB2 وجود ندارد، مطمئنا شرکت ترکیب شده از MySql برای جذب کاربران بیشتر و سپس سوق دادن آنها به سمت DB2 استفاده خواهد.
به هر حال شاید همکاری و تعامل هرچه بیشتر این دو پایگاه داده خواهیم بود.

سیستم عامل

AIX سیستم عامل بر مبنای Unix شرکت IBM در مقابل Solaris شرکت Sun که آن هم بر مبنای Unix است حرفی برای گفت ندارد. این احتمال قوی است که کاربران AIX به یک نسخه ویژه از Solaris انتقال داده بشوند.
از آنجایی که Sun هیچ نسخه ای از سیستم عامل مبتنی بر Linux ندارد این احتمال بعید به نظر نمی رسد که آبی بزرگ هم از ویژگی Solaris به سیستم عامل لینوکس خود اضافه کند.

در حال حاضر هر دو شرکت به شدت در حال تلاش در پیشرفت در محاسبات ابری (cloud-computing) هستند. آنچه که مسلم است ترکیب تیم تحقیقات این دو شرکت و پیشرفت سریع تر شرکت ترکیب شده در این زمینه است.

و سرانجام از لحاظ سخت افزار از آنجایی که IBM ارادت خاصی به پردازنده Power خود دارد به احتمال قوی شاهد توقف خط تولید پزدازنده های SPARC و اضافه شده تیم آن به تیم پردازنده Power و PowerPC باشیم.

و اما ایران

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

تغییرات حاصله از ترکیب این دو شرکت بیشتر در زمینه بانک اطلاعاتی و ابزارهای Java در ایران مشاهده خواهد شد.
هر دو محیط توسعه Netbeans و  Eclipse با توجه به نظر سنجی هایی که در فروم برنامه نویس و سایتی دیگر انجام شده تقریبا تعداد کاربر یکسانی دارند. پس می توان نتیجه گرفت که با محو یا حذف تدریجی یکی از این دو محصول شاهد مهاجرت کاربران به محیط دیگری باشیم که اتفاق مهمی نخواهد بود.

در مورد بانک اطلاعاتی همانطور که در بالا ذکر کردم MySql همچنان با قدرت به کار خود ادامه خواهد داد. با توجه به اینکه MySql در میان Php کاران و Linux کراران طرفدار بسیاری دارد، پس نگرانی در این زمینه وجود نخواهد داشت.
نتیجه ای که البته بعید هم به نظر نمی رسد حرکت عده ای به سمت DB2 خواهد بود تا از ویژگی های این پایگاه داده هم مطلع بشوند. با توجه به اینکه یک نسخه رایگان و کوچک از این پایگاه داده هم عرضه می شود.

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

این ترکیب بر دنیای برنامه نویسان جهان بسیار تاثیر گذار خواهد بود. بزرگترین اثر گرفته از این ترکیب Oracle خواهد بود. چراکه بسیاری از برنامه ها و سیستم های مدیریت پایگاه خود را بر پایه Java پایه نهاده و صد البته چشم به نتیجه این مذاکرات دوخته است.

موفق باشید.

منابع:

http://www.sdtimes.com/link/33356
http://www.infoworld.com
http://www.multicoreinfo.com
http://osnews.com

مطالب مرتبط:

دریافت نسخه جدید Netbeans 6.5 به همراه JDK





12 نکته برای افزایش سرعت کدنویسی در Visual Studio

15 11 2008

نسخه های اخیر Visual Studio یعنی 2005 و 2008 کلید های میانبر و ابزارهای متفاوتی را عرضه کرده اند که به برنامه نویس اجازه می دهد با فشردن چند کلید در عوض رفتن به میان منو های مختلف، به راحتی به مقصود خود برسد.

این ابزارها و کلید های میانبر در سرعت نوشتن کد تاثیر زیادی دارند و باعث حفظ تسلط بر روی کد می شوند.

در این مقاله سعی می کنم تا به این نکات بپردازم و سعی خواهم کرد تا بدون نیاز به ماوس، کارهای مورد نظر رو توضیح بدم.

  • اضافه کردن namespace به صورت خودکار

در هنگام نوشتن کد بسیار پیش می آید که برگشتن به اول صفحه در فایلهایی که مقدار زیادی کد دارند سخت به نظر برسد و یا حالتی را در نظر بگیرید که اسم namespace رو فراموش کردید.

در این حالت تنها کافی است که نام کلاس رو وارد کرده و کلید .+CTLR (کلید کنترل همراه با نقطه) را بزنید. در این صورت منویی ظاهر خواهد شد. در این منو فضای نام مورد نظرتون رو با ماوس و یا کلید های بالا و پایین صفحه کلید انتخاب کرده و اینتر را بزنید. در این صورت آن فضای نام به صورت خودکار به فایل اضافه خواهد شد:

suggestion

این ویژگی برای VS 2005 و VS 2008 کار می کند

  • استفاده از الگوهای کد نویسی

تکه الگو های کد یا code snippet ها تکه کد هایی هستند که تمامی یک عبارت را به صورت خودکار درج می کنند.

این تکه الگو ها به چند روش در دسترس هستند. برای مشاهده و انتخاب از لیست کلید های CTRL+K و CTRL+X رو فشار دهید. در لیست نمایش داده شده می توانید یکی از را اتخاب کنید که در این صورت کد مربوط به آن الگو درج خواهد شد.

روش بعدی، وارد کردن نام الگو و سپس فشردن دوبار کلید tab هست. برای مثال برای درج الگوی ویژگیها (Property) به این صورت عمل کنید: prop + tab +tab

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

snippetچند نمونه از الگوها:

درج الگوی try..catch: try+tab+tab

درج الگوی try..finally: tryf+tab+tab

حلقه for: for+tab+tab

شرط switch: switch+tab+tab

پراپرتی فقط خواندنی همراه با متغیر: propg+tab+tab

  • مرتب سازی و حذف ورودی های کلاس (using یا Imports) های زاید

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

برای رفع این مشکل در محیط کد نویسی بر روی صفحه کلید راست کنید تا منو باز شود. در زیر منوی Organize usings چند گزینه وجود دارد که می توانید از آنها برای ویرایش ورودی های کلاس استفاده کنید. مقصود ما فعلا گزینه Remove and sort   است که باعث حذف شدن موارد زاید و مرتب سازی بقیه آنها می شود:

remove-sort

این ویژگی فقط بر روی VS 2008 کار می کند

  • تبدیل به توضیح کردن و یا غیر فعال کردن چندین خط کد

ممکن است خواسته باشید که چندین خط کد را یکباره غیرفعال و یا اینکه به توضیح تبدیل کنید. در این حالت فقط کافی است که متن مورد خودتان را انتخاب کرده و از ترکیب کلید های CTRL+K و CTRL+C استفاده کنید.

برای برگرداندن به حالت اولیه در متون انتخاب شده از ترکیب کلید های CTRL+Kو CTRL+U استفاده کنید.

این مورد در تمامی ویرایشگر های VS قابل استفاده است. از جمله html و javascript و vb.net و web.config و ..

  • ایجاد خودکار ویژگها (Property) از روی متغیر

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

برای این منظور بر روی متغیر قرار گرفته و کلید های CTRL+E و CTRL+R را فشار دهید. در این صورت پنجره ای ظاهر خواهد شده که همراه با چند وِیژگی دیگر نامی را پیشنهاد خواهد داد. پنجره را تایید کنید تا وِیژگی ایجاد شود.

نکته ای لازم به ذکر هست که برای گرفتن نتایج خوب از این روش باید نام متغیرهای خودتون را با (_) شروع کنید.

encapsulate-field

  • فرمت کردن و منظم کردن کد تنها با فشار چند کلید

معمولا کدی که می نویسیم کاملا مرتب نیست و کمی به هم ریخته به نظر می رسد. فاصله ها رعایت نشده و یا اینکه کد ها منظم نوشته نشده اند. در نسخه های 2005 و 2008 این امکان فراهم شده است تا کد نوشته شده به صورت خودکار فرمت و قالب دهی شود. میتوانید به جای صرف وقت برای تنظیم و مرتب کردن کد به صورت دستی از این کلید میانبر استفاده کنید.

ترکیب کلیدهای CTRL+K و CTRL+D

  • کپی، بریدن و درج یک خط به صورت سریع

برای کپی کردن و یا بردین یک سطر از کدتان لازم نیست که حتما آن خط را انتخاب کنید.

برای این منظور روی خط مورد نظر قرار گرفته و برای کپی کردن کلید CTRL+C و برای بریدن کلید CTRL+X و برای درج کردن از حافظه کلید CTRL+V را فشار دهید.

  • کلیدهای میانبری دیگری برای کپی، بریدن و درج

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

Copy: CTRL+Insert

Cut: Shift+Del

Paste: Shift+Insert

  • کامل کردن خودکار نام متغیر ها و کلاس ها

در هنگام نوشتن کد اگر نام متد و یا کلاسی را کامل به یاد نمی آورید و یا اینکه چند حرف اول آن را به یاد می آورید، کافی هست که چند حرف اول را تایپ کرده و ترکیب کلید های CTRL+Space را فشار دهید.

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

  • دسترسی به لیست کلاسها در محیط ویرایش گر کد

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

برای دسترسی به این لیست بدون نیاز به ماوس از ترکیب کلید های CTRL+F2 استفاده کنید.

navigationbar

  • کامپایل پروژه و اجرای آن و انصراف از کامپایل

برای اینکه کد خود را کامپایل کنید لازم نیست که حتما از منوها اقدام کنید. از ترکیب کلیدهای زیر استفاده کنید.

کامپایل تمامی solution: ترکیب CTRL+Shit+B

لغو کامپایل (زمانی که برنامه در حال کاپایل است، قابل استفاده است): CTRL+Break

کامپیل و اجرا در حالت عادی: ترکیب CTRL+F5

کامپیل و اجرا در حالت Debug: ترکیب F5

  • انتخاب یک عنصر تنها با یک کلیک

برای انتخاب یک عنصر تنها کافی است کلید CTRL را پایین نگه داشته و بر روی آن کلیک کنید.

اگر کلید CTRL را همچنان پایین نگه دارید و توسط ماوس متن انتخابی را بکشید، در این صورت یک کپی از متن را می توانید در هر جایی قرار دهید.





وسوسه ای به نام مهاجرت

7 11 2008

نمی دونم تا حالا به مهاجرت فکر کردین یا نه، اما حداقل بیشتر آدمایی که من میشناسم به این مسئله فکر کردن. تو حرفه ای که من کار می کنم یعنی تولید نرم افزار، چند عامل هست که به نظرم باعث میشه افراد چنین فکر کنن.

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

در کنار این مورد، مسئله مالی هم خیلی مهم هست. با نگاهی به سایت HotJobs یاهو و شغل های برنامه نویسی می تونید رنج حقوق رو مشاهده کنید. معمولا کمترین حقوق از پایه ای 40,000 در سال هست و بسته به حرفه های مختلف این مورد افزاریش پیدا می کنه. برای مثال برنامه نویسان .NET در حدود 60,000 تا 80,000 دلار دریافت می کنند و مدیران شبکه در حدود 140,000 دلار و در نهایت مدیران و مدیران ارشد بالای 200,000 دلار.

این ارقام آدم رو خیلی وسوسه می کنه و در مقایسه مبالغ ناچیزی که در ایران دریافت می کنیم بسیار زیاد هستند.

اما این همه مسئله نیست، طبق بررسی انجام شده در سال 2007 شغل برنامه نویسی بهترین شغل در آمریکا و وکیلی پردرآمدترین شغل بوده است. انتخاب به عنوان بهترین شغل بدین جهت است که استرس های اضافی ندارد و دارای ریسک کمی می باشد. همچنین امکانات رفاهی مناسبی در اختیار آنها قرار می گیرد.

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

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

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

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

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

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

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