تبليغاتX
.:: لوتوس دنیای موبایل ::.
دانلود برنامه موبایل - ترفندها - دانلود نرم افزار کامپیوتر- دیکشنری آنلاین-شناسایی کاربر مخفی یاهو

 

سال ۱۳۸5مبارک باد

با عرض سلام به همگی بازدید کنندگان گرامی.

نوروز باستانی بار ديگر فرا رسيد. اين بار همراه با سالگرد اربعين حسين بن علی (ع). رعايت احترام سنتهای ملی و مذهبی در کنار يکديگر فرصتی است برای بزرگتر شدن٬ برای فهم فضاهای متفاوت که هر يک جايگاه خود را دارند.

+ نوشته شده در  دوشنبه 29 اسفند1384ساعت 13:42  توسط لوتوس  | 

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

فرض می کنیم که فایلی با ۸ کاراکتر داریم که بیشترین تکرار آن حرف g با 30 بار  و كمترين حرف تكرار شده a با 4 بار باشد مي توانيم با 3 بيت هر كاراكتر رت در كد دودويي نشان دهيم.

اما اين روش،روش چندان مناسبي نيست چون براي كاراكتر a كه فقط 4 بار تكرار شده 3بيت اختصاص داده ايم و براي كاراكتر g كه 30 بار تكرار شده ، هم 3 بيت. براي كاهش حجم فايل بهتر است كاراكتر‌هايي كه تعداد تكرار بيشتري دارند بيت كمتري اختصاص دهيم و براي كاراكتر‌هايي كه تعداد تكرار كمتري دارند بيت بيشتر.

مثال :

1-      3*(3+10+5+7+19+14+30) = 339

2-      3*5+10*3+5*5+7*4+19*3+25*2+14*3+30*2 = 290

 

همانطور كه ميبينيد حجم فايل در حالت دوم از حالت اول كمتر شده است.(290> 339). براي بدست آوردن كد جديد حروف به روش زير عمل مي كنيم:

1-      كاراكترها را بر اساس تعداد يه صورت صعودي مرتب مي‌كنيم.

2-      دو كاراكتر كوچكتر را با هم تركيب كرده و در يك درخت قرار ميدهيم به طوري كه دو كاراكتر فرزندان درخت و ريشه محموعه تعداد تكرار آنها باشد.

3-      گره جديد را به ليست قبلي اضافه ميكنيم.

4-      اگر هنوز كاراكتر وجود دارد كه در درخت اضافه نشده باشد به مرحله 1 ميرويم

 

ما از كدينگ هافمن براي ارسال و دريافت راحت اطلاعات و كاهش حجم اطلاعات ارسالي استفاده مي‌كنيم. حال اين مسئله مطرح مي‌شود كه با توجه به اينكه اطلاعان ارسالي به شكل بيت‌هاي صفر و يك است، گيرنده چطور كد را تشخيص مي دهد؟ چند راه وجود دارد: اولين حالت وقتي است كه ما همراه اطلاعات ارسالي درخت را هم بفرستيم كه اين روش بهينه نيست  چون هدف ما كاهش حجم اطلاعات ارسالي لود. راه بعدي اين است كه اطلاعات را با فراوانيها براي گيرنده بفرستيم در اين صورت گيرنده پس از دريافت، درخت مورد نظر را براي خود مي‌سازد، البته بايد ذكر كرد كه در ساخت درخت، اطلاعات كمتر سمت چپ و اطلاعات بيشتر در طرف راست درخت قرار گرفته‌اند.

پيچيدگي زماني:

1-      مرتب سازي با : n2 order يا n log n انجام مي‌گيرد.

2-      هر دفعه حذف دوتاي اول ليست مرتب شده و اضافه كردن مجموعه به ليست در جاي خودش ( تكرار تا زمانيكه به يكي از اطلاعات تنديل شود) كه اين تكرار (n-1) بار طول ميكشد.

پس order نهايي  n2  است ، البته با  n log2n    نيز قابل حل است. ( اين در حالي است كه روي داده‌ها درخت AVL بسازيم).

نكته :

با روش‌هاي مبتني بر مقايسه كمترين  n log n مرتبه زماني است مگر اينكه با روشهاي مبتني بر غير مقايسه مثل RadixSort مسئله را حل كنيم، آيا مي‌دونيد چطور؟؟؟

حجم اطلاعات در فابل اوليه:

اگر n كاراكتر داشته باشيم به log n2 بيت براي مشخص كردن كاراكترها نياز داريم. اگر كاراكتر Fi  بار تكرار شده باشد پس :

حجم فايل =

حجم فايل كد شده:

اگر n كاراكتر داشته باشيم و كاراكتر i ام Fi بار تكرار شده باشد و با ai بيت مشخص مي‌شود پس :

حجم فايل كد شده =  

 

+ نوشته شده در  دوشنبه 29 اسفند1384ساعت 13:24  توسط لوتوس  | 

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

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

Vital Desktop Video نام نرم افزاریست که به شما امکان ساخت دسکتاپی پویا و زنده و متفاوت را با تبدیل انیمیشن های جالب شما را و یا حتی امکان تبدیل فیلم های شما را به پس زمینه می دهد. سرعت بالا و نمایش تمام صفحه ( Full Screen ) از ویژگی های این نرم افزار .

به عبارت دیگر این نرم افزار خود یک ScreenSaver ساز سریع است که میتوانند انیمیشن های شما را هم به اسکرین سیور و هم به Wallpaper تبدیل نماید .

جزییات بیشتر در مورد این محصول شرکت Blink Development ......

Vital Desktop Video را می توانید از اینجا :

دانلود کنید نسخه ی 1.3.8 را با حجم 2.5 مگابایت

شماره سريال نسخه ي 1.3.8 نرم افزار :
www.nowa.ru
8F96A8D753DFFB3D6B9765B3EDF2ACFD

+ نوشته شده در  دوشنبه 22 اسفند1384ساعت 1:32  توسط لوتوس  | 

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

آیا ظاهر ساده و عادی این گفتگوها برایتان تکراری نشده است ؟ مایل به ایجاد تغییراتی برای زیبا تر و جذاب تر کردن گفتگو های خود هستید ؟

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

برخی ویژگی های این محصول جالب شرکت Ensurebit Software :

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

سازگاری با تمامی نرم افزار گفتگوی تصویری اینترنتی مانند :  MSN, Yahoo Messenger, ICQ , AIM, SKYPE .

نصب آسان نرم افزار تنها با چند کلیک !

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

بیان احساسات به روشی نو در اینترنت .

دارای فریم های مختلف , انیمیشن ها متفاوت و امضاهای گوناگونی برای زیباتر ساختن محیط و ارتباط است .

و ......

جزییات کامل تر در مورد این محصول .....

FunWebcam را میتوانید از اینجا :

دانلود کنید نسخه ی 1.03 را با حجم 7.2 مگابایت ( لینک غیر مستقیم )

کرک نسخه ی 1.03 نرم افزار :
http://www.crackserver.com/pages_cracks/FunWebcam.v1.03-TE.ZIP.rar.htm

+ نوشته شده در  دوشنبه 22 اسفند1384ساعت 1:30  توسط لوتوس  | 

فایلهای SWF فلش تقریبا عمده ترین و محبوب ترین فرمت انیمیشنی موجود در اینترنت را شامل می شوند .ولی به خاطر دارا بودن ویراستار بر روی خود , قابلیت ذخیره آنها در مرورگر ها با راست کلیک بر رویشان وجود ندارد .

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

Flash Saver محصولی مناسب و کارا از وب سایت  Ptshare.com است که به آسانی به شما امکان دانلود فایلهای SWF فلش را از صفحات وب می دهد . قابلیت دریافت تمامی فلش های اینترنتی از صفحات وب شامل وب سایتهای فلش , بازی های فلش , Flash MTV , فیلم های فلش , تبلیغات فلش و هر فایل فلشی با فرمت SWF .

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

برخی دیگر از ویژگی های نرم افزار Flash Saver :

مجهز به نرم افزار Flash Player برای پخش فایلهای فلش دانلودی و تمامی فایلهای فلش موجود در سیستم .

ویژگی Copy URL برای دادن آدرس دقیق فایل فلش در اینترنت به شما .

توانایی جستجو در بین Log ها و فایلهای دانلودی و ویژگی پیش نمایش فایلها قبل از دانلود .

توانایی فرستادن فلش های زیبا به Email دوستان تنها با چند کلیک .

گرفتن عکس از محیط فایلهای SWF فلش .

دانلود تمامی فایلهای فلش موجود در یک آدرس اینترنتی .

و ...

جزییات کاملتر .....

Flash Saver را میتوانید از اینجا :

دانلود کنید نسخه ی 5.7 را با حجم 3.1 مگابایت

 

شماره سريال نسخه ي 5.7 نرم افزار :
Name: iNDUCT team 2006
Serial: FC26073586B9385F8

+ نوشته شده در  دوشنبه 22 اسفند1384ساعت 1:26  توسط لوتوس  | 

در بخش اول اين مقاله به بررسي و معرفي فريمورک دانت پرداخته گرديد. در اين بخش به بررسي CLR ، يکي از مهمترين عناصر موجود در فريمورک دات نت خواهيم پرداخت .
درابتدا لازم است تعريفي از CLR را داشته باشيم. CLR ، محيطي است که برنامه هاي دات نت بکمک آن اجراء مي گردند . برنامه هاي نوشته شده توسط هر يک از زبان هاي سازگار با دات نت پس از ترجمه توسط کمپايلر مربوطه به MSIL)Microsoft Intermediate language) ، ترجمه مي گردند ( به زبان فوق ، IL نيز گفته مي شود ) .

CLR از نماي نزديک
Common Type System(CTS) ( Data Types ,...)
Intermediate Language(IL) to native code compilers Execution Support (traditional runtime functions) Security
Garbage Collection,Stack Walk ,Code manager
Class Loader and memory layout

هدف از طراحي CLR ، نيل به اهداف زير بوده است :

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

برخورد اتوماتيک با مقولاتي همچون مديريت حافظه
در دات نت ، مجموعه اي گسترده از زيرساخت هاي برنامه نويسي بصورت اتوماتيک توسط CLR ارائه مي گردد. مديريت حافظه ، نمونه اي مناسب در اين زمينه است . پياده کنندگان نرم افزار بکمک ويژوال بيسيک در زماني نه چندان دور همواره نگران مسئله مديريت حافظه بودند . پياده کنندگان ويژوال بيسيک اينک و با استفاده از CLR ، نگراني خاصي در ارتباط با مديريت حافظه ، نخواهند داشت. ( CLR ، داراي توابع متنوعي در رابطه با مديريت حافظه است ) . برنامه نويساني که از ++C در محيط دات نت استفاده مي نمايند ، ديگر ضرورتي به استفاده از CoCreateInstance براي نمونه سازي يک کلاس و يا استفاده از malloc بمنظور اختصاص حافظه ، نخواهند بود. با بکارگيري امکانات CLR در ارتباط با مديريت حافظه مي توان با بخدمت گرفتن يک عبارت ساده خواسته خود را مشخص و CLR در زمان مورد نظر ، عمليات اختصاص حافظه را انجام خواهد داد . عملياتي ديگر، نظير جمع آوري اطلاعات زائد از حافظه ، از ديگر فرآيندهاي ضروري و مهمي است که توسط CLR و در ارتباط با مديريت حافظه انجام مي گردد.

حمايت از ابزارها ي متعدد
همانگونه که احتمالا" حدس زده ايد ، اغلب عملياتي که CLR انجام مي دهد، مشابه سيستم عامل است ،موضوع فوق هرگز بعنوان مهمترين رسالت CLR ذکر نمي گردد و مي بايست با صراحت به اين نکته ظريف اشاره گردد که هدف از طراحي CLR ، حمايت از پياده سازي نرم افزار با استفاده از زبان هاي برنامه نويسي متفاوت است . CLR مجموعه قدرتمندي از مدل هاي اشياء را ارائه که براي طراحان ، ديباگرها مفيد و قابل استفاده ، خواهد بود. با توجه به اينکه مدل هاي شي ارائه شده ، مربوط به زمان اجراء مي باشند ، امکان بکارگيري ابزارهاي طراحي شده مبتني بر مدل هاي ارائه شده ، در بين تمام زبانهائي که از CLR استفاده مي نمايند .، ميسر خواهد بود.
لازم است به اين نکته نيز اشاره گردد که مايکروسافت محدوديتي را در ارتباط با CLR بمنظور استفاده از زبان هاي مايکروسافت ايجاد ننموده است . توليدکنندگان زبان هاي برنامه نويسي ديگر با تغيير درمعماري زبان هاي خود ، امکان استفاده از CLR بهمراه مزاياي متعدد آن را بدست خواهند آورد.در چنين مواردي ، علاوه بر بهره جستن از تماي قابليت هاي CLR ، امکان ارتباط بين زبان ها نيز فراهم مي گردد. CLR ، قادر به کار با چندين زبان برنامه نويسي متفاوت است . ويژگي فوق ، داراي مزاياي مهم و گسترده اي براي پياده کنندگان خواهد بود. اشکال زدائي يک برنامه ، نمونه اي مناسب در اين زمينه است . CLR ، اين امکان را فراهم مي نمايد که بتوان ديباگري را پياده سازي و آن را در زبانهاي مختلف بخدمت گرفت . رفتار و عملکرد ديباگر در تمامي زبانها مشابه و معادل خواهد بود ( پرش از يک زبان به زبان ديگر ) .

متا ديتا
متاديتا ، " داده ئي در رابطه با داده " بوده و مي توان آن را بعنوان سطحي عميق تر از داده نسبت به خصلت هاي سطح سيستم در نظر گرفت. متاديتا ، عنصر اساسي براي تحقق اصل برنامه نويسي ساده ( تسهيل در امر برنامه نويسي ) مورد حمايت CLR است. متاديتا توسط يک کمپايلر توليد و بصورت اتوماتيک در يک فايل EXE و يا DLL ذخيره مي گردد.فرمت آن بصورت باينري است ولي فريمورک يک API بمنظور صدور متاديتا به / از يک XML Schema و يا يک کتابخانه نوع COM ارائه مي دهد . از Schema XML ، مي توان در بازيابي ورژن و ساير اطلاعات مرتبط با يک عنصر ترجمه شده ، استفاده کرد. اطلاعات ارائه شده توسط متاديتا ، مجموعه گسترده اي را شامل مي شود :

تشريح يک واحد بکارگيري ( اسمبلي ناميده مي شود ) : نام ، ورژن ، فرهنگ ( که مي تواند اطلاعاتي نظير زبان پيش فرض کاربر را مشخص نمايد) ، يک کليد عمومي براي بررسي، نوع هاي صادر شده توسط اسمبلي ، وابستگي ها به ساير اسمبلي ها ، مجوزهاي امنيتي مورد نياز بمنظور اجراء
کلاس هاي پايه و اينرفيس هاي استفاده شده توسط اسمبلي
خصلت هاي سفارشي : تعريف شده توسط کاربرو يا کمپايلر
برخي از موارد فوق نظير خصلت هاي سفارشي ، انتخابي مي باشند .کمپايلرها يکي از کاربران و استفاده کنندگان متا ديتا مي باشند . مثلا" يک کمپايلر مي تواند يک ماژول توليد شده نوسط يک کمپايلر متفاوت ديگر را بررسي و از متا ديتا بمنظور استفاده و درج ( Import ) ، نوع هاي cross-language استفاده نمايند. کمپايلرها مي توانند متاد يتا هائي را در ارتباط با ماژول هاي ترجمه شده خود نيز توليد نمايند.
متا ديتا يکي از روش هائي است که CLR را قادر به حمايت از مجموعه گشترده اي از ابزارها مي نمايد . برخي از استفاده کنندگان متاديتا ، عبارتند از :

طراحان
ديباگرها
توليد کنندگان پروکسي
ساير کمپايلرها
مرورگرها نوع / شي

حمايت و ارتباط چندين زبان
مهمترين ويژگي و بنوعي هدف CLR ، حمايت از زبانهاي برنامه نويسي متفاوت و امکان ارتباط ( همبستگي ) بين زبانهاي مختلف است .با بهره گيري از يک سيتم نوع ( CTS ) و با اعمال تمامي کنترل هاي لازم در ارتباط با فراخواني اينترفيس، CLR امکان ارتباط مناسب و شفاف بين زبان هاي برنامه نويسي را فراهم مي نمايد.
درگذشته يک زبان برنامه نويسي بکمک عناصر COM ، قادر به نمونه سازي و استفاده از عناصر نوشته شده توسط يک زبان برنامه نويسي ديگر بود .در برخي موارد، فراخواني اينگونه عناصر، مشکلاتي را از بعد مديريتي ايجاد مي کرد. بهرحال Subclassing يک عنصر نوشته شده به زبان ديگر، مستلزم وجود پتانسيلي خاص بودکه صرفا" پياده کنندگان حرفه اي قادر به انجام و استفاده از آن بودند. در فريمورک دات نت، مي توان از يک زبان بمنظور subclass ( کلاس زيرمجموعه که از يک کلاس پايه ديگر مشتق شده باشد ) يک کلاس نوشته شده به زبان ديگر استفاده نمود. کلاس نوشته شده به زبان ويژوال بيسيک مي تواند از يک کلاس پايه نوشته شده با ++C و يا کوبال به ارث رسيده مي باشد. برنامه VB ، ضرورتي به آگاهي از زبان استفاده شده بمنظور نوشته کلاس پايه ، نخواهد داشت .بدين ترتيب ، زمينه بهره گيري و استفاده از تمامي مزاياي توارث در پياده سازي فراهم و در صورتيکه کلاس پايه تغيير نمايد ، ضرورتي به ترجمه مجدد کلاس زير مجموعه نخواهد بود.چگونه اين کار انجام مي شود ؟ اطلاعات ارائه شده توسط متاديتا ، اين امر را امکان پذير مي سازند . در اين رابطه هيچگونه IDL(Interface Definition Language در دات نت وجود نداشته و يک اينترفيس کلاس صرفنظر از زبان استفاده شده براي توليد آن ، همواره يکسان مشاهده خواهد شد. CLR از متايتا بمنظور مديريت تمامي اينترفيس ها و فراخواني بين زبان ها استفاده مي نمايد توارث بين زبانها ، زمينه تحقق يک معماري باز را فراهم خواهد کرد .

سيتم نوع
يکي از اجزاء مهم CLR که حضور و عملکرد آن تاثير مستقيمي بر حمايت از چندين زبان را بدنبال دارد ، CTS)Common Type System) است .در سيستم فوق ، تمامي نوع هاي داده (حتي نوع هائي نظير : Long و Boolean )، بعنوان شي پياده سازي شده اند . بدين ترتيب هماهنگي بين نوع ها در يک سطح پائين تر و بمنظور سازگاري بيشتر بين زبان ها ، صورت مي پذيرد. با توجه به اينکه تمامي زبانها از نوع هاي کتابخانه اي يکساني استفاده مي نمايند ، فراخواني يک زبان از زبان ديگر نيازمند تبديل نوع، نخواهد بود.
يکي از مهمترين ويژگي هاي دات نت ، namespace است .namespace ، امکان سازماندهي کتابخانه هاي شي را بصورت سلسله مراتبي فراهم مي نمايد.بدين ترتيب امکان مراجعه به آنان بسادگي و به دور از هرگونه نا همخواني و يا تضادي ، محقق خواهد شد .بمنظور استفاده از امکانات موجود در کتابخانه هاي کلاس ، مي بايست در ابتدا براي آنان يک مرجع ايجاد نمود.مرجع فوق ،امکان استفاده از نوع ها را بصورت خلاصه در کد نوشته شده ،فراهم خواهد آورد. در ويژوال بيسيک با استفاده از يک عبارت Import ، اين امر محقق خواهد شد. يک ماژول فرم ويژوال بيسيک در دات نت مي تواند بصورت زير ، آغاز گردد :

Imports System.WinForms
Imports MyDebug = System.Diagnostics.Debug


در اولين خط ، امکان استفاده از تمامي خصلت ها و متدها ي استاندارد مرتبط با فرم ها ، براي کد موجود درماژول ، فراهم خواهد شد.دومين خط ، از يک نام مستعار استفاده مي نمايد. يک شاخه از ساختار سلسله مراتب شي ( يک مسير مشخص بر روي ساختار درختي ) ، مي تواند شناسه خاص خود را داشته باشد که صرفا" در ماژول مربوط معتبر خواهد بود. در ماژول مورد نظر مي توان بمنظور مراجعه به شي System.Diagnostics.Debug ، از MyDebug استفاده گردد.

بکارگيري و اجراء
واحد بکارگيري همانگونه که قبلا" اشاره گرديد ، يک اسمبلي است. اسمبلي، مي تواند شامل يک و يا چندين فايل بهمراه ويژگي خود تشريحي باشد . اسمبلي شامل يک "مانيفست" بوده که تمامي متاديتا صادر شده توسط اسمبلي و ساير اطلاعات لازم بمنظور بمنظور بکارگيري و اجراء را مشخص مي نمايد. يک اسمبلي داراي ورژن خاص خود است . اسمبلي ها با يکديگر ترکيب و برنامه ها را بوجود مي آورند . يک برنامه داراي يک و يا چندين اسمبلي بوده و ممکن است شامل فايل ها و داده هاي اختصاصي برنامه نيز باشد .
کد مبداء ماژول ها ي يک اسمبلي به IL)Intermediate Language) ترجمه مي گردند . در ادامه و قبل از اجراء ، IL به کد مختص يک ماشين ترحمه خواهد شد. ترجمه با استفاده از روش هاي متفاوت و بدفعات ممکن است محقق گردد. معمولا" ترجمه به کد مختص يک ماشين ، صرفا" يک مرتبه انجام و نتيجه براي استفاده در موارد بعد و آتي Cache خواهد شد. CLR ، شامل مجموعه اي از کمپايلرهاي JIT)Just-In-Time) است که مسئوليت تبديل IL به کد مختص يک ماشين را برعهده دارند . بدين ترتيب ، مي توان برنامه ها ي نوشته شده در دات نت را بصورت کد IL ترجمه شده ، توزيع نمود. در ادامه با استفاده ازکمپايلرهاي دات نت بر روي يک ماشين خاص ، کدهاي بهينه و مختص آن ماشين توليد خواهد شد.در سناريوي فوق امکان استفاده از اسکريپت ها بهمراه ماژول نيز وجود دارد ، درچنين مواردي آنان قبل از استفاده ترجمه خواهند شد. در سيستم هاي موجود ، اسکريپت هاي تفسير شده ( در ASP و يا Windows Scriptiong Host ) ، هرگز ترجمه نمي شوند. در دات نت ، اينچنين اسکريپت هائي در اولين مرتبه دستيابي به IL تبديل و در ادامه به کد مختص ماشين مربوطه تبديل و براي استفاده مجدد cache ، خواهند شد.
در بخش سوم اين مقاله ، به بررسي کلاس هاي پايه فريمورک دات نت خواهيم پرداخت
+ نوشته شده در  دوشنبه 22 اسفند1384ساعت 1:5  توسط لوتوس  | 

در حين انجام كار با فايل ها ممكن است خطايي رخ دهد . بعنوان مثال ، عدم
وجود فضاي كافي براي ايجاد فايل ، آماده نبودن دستگاهي كه فايل بايد در آنجا
تشكيل گردد و يا مواردي از اين قبيل منجر به بروز خطا مي شوند . با استفاده از
تابع ()ferror مي توان از بروز چنين خطايي مطلع گرديد . الگوي تابع ()ferror
در فايل stdio.h قرار داشته و بصورت زير است : int ferror( FILE *fp)

در الگوي فوق ، fp اشاره گري است كه مشخص مي كند اين تابع بايد بر روي چه
فايلي عمل كند. اين تابع يك تابع منطقي است . بدين معني كه اگر خطايي در رابطه
با فايل ها رخ داده باشد اين تابع ارزش " درستي " وگرنه ارزش " نادرستي " را
برمي گرداند . براي تشخيص خطا در كار با فايل ها ، بلافاصله پس از هر فعلي كه
روي فايل انجام مي شود بايد از اين تابع استفاده نمود .

مثال : برنامه اي كه كاراكترهاي tab را از فايل حذف كرده و بجاي آن به تعداد
كافي فضاي خالي (blank) قرار مي دهد . اسامي فايل هاي ورودي و خروجي از طريق
آرگومان به برنامه وارد مي شود .

#include "stdio.h"
#include "stdlib.h"

#define TAB_SIZE 8
#define OUT 1
#define IN 1
void err(int );
void main(int argc / char *argv[])
{
FILE *in / *out;
int tab / i ;
char ch ;
if(argc!=3)
{
printf("\n incorrect number of");
printf(" parameters" );
printf("\n\t press a key... " );
getch )(;
exit(1 );
}
in=fopen(argv[2] / "wb" );
if( in==NULL)
{
printf("\n cannot open");
printf(" output file." );
printf("\n\t press a key... " );
getch )(;
exit(1 );
}
tab=0;
do {
ch=getc(in );
if( ferror(in))
err(IN );
if(ch=='\t')
{
for( i=tab ; i < 8 ; i++)
{
putc(' ' / out );
if( ferror(out))
err(OUT );
}
tab=0 ;
}
else
{
putc(ch / out );
if( ferror(out))
err(OUT );
tab ++ ;
if( tab==TAB_SIZE ||
ch=='\n' || ch=='\r')
tab=0;
}
}while( !feof(in ));
fclose(in );
fclose(out );
}
void err(int eror)
{
if( eror==IN)
printf("\n error on input file.");
else
printf("\n press a key... ");
getch )(;
exit


+ نوشته شده در  یکشنبه 21 اسفند1384ساعت 23:44  توسط لوتوس  | 

در محیط خشک و بی روح و مجازی اینترنت , تنها راه بیان احساسات و نمایش خود استفاده از شکلک های کوچک و بامزه ایست که Smiley نام دارند . این شکلک های قشنگ و متنوع تقریبا در تمامی محیط های گفتگو به طرق صور گوناگون مورد استفاده قرار می گیرند , نرم افزارهای قدرتمند Yahoo Messenger , MSN Messenger و سایر نرم افزار های گوفنگو و حتی تالارهای گفتگو شکلکهای خاص و محدود خود دارا هستند و در هر ارتقا هر نسخه به نسخه ی جدید حتما اضافه نمودن این شکلکها را مد نظر می گیرند . ولی با وجود این شکلکهای متفاوت , بازهم احساسات زیاد و متعددیست که شما با آنها نمی توانید بان کنید .

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

پشتیبانی بسیاری از محیط های اینترنتی  :

PostSmile قابل استفاده در تمامی تالارهای گفتمان اینترنتی ( فروم ها ) مانند انجمن های بزرگ P30World , و تمامی Webmail های معروف اینترنتیست , Webmail هایی مانند Hotmail , YahooMail و GMail و ........

علاوه بر این ها با تمامی نرم افزارهای معروف Email Client مانند  Outlook, Outlook Express, Eudora, Thunderbird, IncrediMail, AOL Mail و بسیاری دیگر که به صورت HTML-Based هستند را تحت پشتیبانی دارد .

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

کلکسیون های زیبا و متنوع گوناگون :

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

کلسیون های متعددی با موضوعات Collections Home, Alphabet Collection , Autumn & Halloween , Bugs Collection , Christmas Collection , Classic Collection , Classic II Collection , Emotions Collection , Holiday Collection , Love Collection , Love II Collection , Magic Collection , Marine Collection , Sports & Recreation, Spring & Easter , Summer Collection , Summer ABC , Winter & Christmas , Zodiac Collection و بسیاری دیگر که در حال اضافه شدن می باشند .

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

محیط بسیار آسان و استفاده ی راحت از شکلک ها دیگر ویژگی خوب این نرم افزار است که تنها با یک Drag&Drop ساده از محیط نرم افزار به محیط های اینترنتی قادر به اضافه نمودن شکلکها هستید .

قابلیت ویرایش کلسیون ها و اضافه و حذف نمودن شکلکها نیز ویژگی خوب دیگری از این نرم افزار است .

دانلود

+ نوشته شده در  جمعه 12 اسفند1384ساعت 1:44  توسط لوتوس  | 

WinAntiVirus 2006 نام ویروس کشی جدید و قدرتمند است که تقریبا سال گذشته اولین نسخه ی آن به بازار عرضه شد .

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

در نسخه ی 2.0 این نرم افزار که به تازگی عرضه شده , ویژگی های جدیدی چون Malware Detection Engine یا موتور قدرتمند شناسایی نرم افزارهای مخرب ناشناس که از سرعت و کارایی بالایی برخوردار است , دیوار آتش قدرتمند درونی که سیستم شما را در مقابل انواع حملات و خطرها محاظفت ایمن می سازد و ظاهر جدید و زیبا و آسان نرم افزار  اشاره کرد .

این نرم افزار قادر به محاظفت از سیستم شما در برابر نامه های آلوده ای که توسط نرم افزارهای مختلف Email Client شما دریافت شود , می باشد .

نرم افزارهایی که WinAntiVirus 2006 با آنها سازگاری دارد شامل : Microsoft® Outlook® Express 4.0/5.X/6.0 , Microsoft Outlook 97/98/2000/XP , Netscape® Messenger 4.X, Netscape Mail 6.0 , Eudora® Light 3.0, Eudora Pro 4.0, Eudora 5.0 است .

مجهز بودن به Anti-Spyware یا ضد جاسوس مناسب و قدرتمند و نرم افزار Pop-up Blocker از دیگر ویژگی های خوب این محصول می باشند .

دانلود

دانلود 1

دانلود 2

 

+ نوشته شده در  جمعه 12 اسفند1384ساعت 1:39  توسط لوتوس  | 

بسیاری از ویروسها , تروجانها و نرم افزارهای جاسوسی جدید برای اینکه از عملکردشان پنهان و ناشناس باقی بماند خود را به صورت مخفی به حالت اجرا در می آورند , در این صورت دیگر شما در حالت طبیعی نامی از آنها در Process List ویندوز های سری NT مشاهده نمی کنید . از طرفی دیگر حتی در صورت داشتن یک ویروس قدرتمند و به روز نیز ممکن است نتوانید از دست ایگونه نرم افزارهای تازه نوشته شده ی مخرب آسوده خاطر بمانید . HiddenFinder نرم افزار امنیتی جدید و بسیار مفیدیست که قادر به شناسایی و نابودی فایلهای مخفی در حال اجراست . ویژگی Summary Statistics نرم افزار : در این بخش نرم افزار شما میتوانید لیست برنامه ها , درایور ها و فایهای مخفی در حال اجرا را با جزییات شان مشاهده کنید . نابودی فایلهای ناشناس در حال اجرا تنها با یک کلیک : بلی , به آسانی و تنها با یک کلیک میتوانید این فایلهای مشکوک را از حالت اجرا حذف کنید و با حذف نمودن فایل اصلی آن از اجرای مجدد آن جلوگیری به عمل آورید . این نرم افزار با ویندوزهای 2000 Professional و Server وWindows XP سازگار است . HiddenFinder را می توانید از اینجا : دانلود کنید نسخه ی 1.2.02 را با حجم 0.9 مگابایت تصاویری از محیط نرم افزار : 1 ,
+ نوشته شده در  جمعه 12 اسفند1384ساعت 1:29  توسط لوتوس  | 

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

مقدمه
بمنظور ايجاد برنامه هاي توزيع شده قدرتمند و انعطاف پذير ، موارد متعددي وجود دارد که مي بايست به آنها توجه گردد:

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

مي توان از سرويس هاي نرم افزاري و منابع خارجي بمنظور طراحي و پياده سازي نرم افزار مورد نظر خود استفاده کرد.
امکان ايجاد منابع نرم افزاري بيشتري بصورت ماژولار ، وجود خواهد داشت ( کيت هاي نرم افزاري با قابليت استفاده مجدد ) .
هزينه توليد نرم افزار کاهش و بهره وري افزايش خواهد يافت .
مطرح شدن ايده عرضه نرم افزار بعنوان سرويس . بدين ترتيب در مقابل عرضه يک نرم افزار Stand-alone ، مي توان از رويکرد نرم افزار بعنوان سرويس ، استفاده نمود.
عناصر معماري مبتني بر سرويس
معماري مبتني بر سرويس براي پياده سازي برنامه هاي توزيع شده ،ايده آل مي باشد . معماري فوق ،امکان پياده سازي پويا ، آزاد و گسترده برنامه هاي توزيع شده را فراهم مي نمايد.
امروزه شاهد بکارگيري سيستم هاي متعددي مي باشيم که خود از چندين برنامه و يا زير سيستم استفاده مي نمايند. با توجه به ارتباط بين سيستمها با يکديگر ، ايجاد و اعمال يک تغيير در ارتباط با هر يک از زير سيستمها مي تواند باعث بروز اشکال در تعداد زيادي از عناصر وابسته و يا ساير برنامه ها گردد . رويکرد فوق ، افزايش هزينه نگهداري اين نوع سيستم ها را بدنبال خواهد داشت .
معماري مبتني بر سرويس ، وابسته به سه عنصر اساسي است که هر يک داراي جايگاه خاص خود مي باشند : Service Provider ( ارائه دهنده سرويس ) ، Service consumer ( مصرف کننده سرويس ) و Service broker ( کارگزار سرويس ) . شکل زير معماري فوق را نشان مي دهد .


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

ارتبا ط بين وظايف سه گانه
عناصر سه گانه اشاره شده در معماري مبتني بر سرويس ، با يکديگر مرتبط تا زمينه تحقق عمليات زير فراهم گردد :

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

معماري سرويس هاي وب و معماري مبتني بر سرويس
عناصر اساسي در معماري سرويس وب عبارتند از :

ارائه دهنده سرويس وب .گره اي در شبکه که مسئوليت ميزبان نمودن يک سرويس وب را برعهده خواهد داشت .
مصرف کننده سرويس . گره اي در شبکه که مسئوليت ميزبان نمودن هر سرويس گيرنده اي را که قادر به ارتباط با استفاده از HTTP باشد را برعهده مي گيرد. مرورگرها ، برنامه هاي کنسول و برنامه هائي با رابط کار گرافيکي سنتي ، نمونه هائي از برنامه هاي سرويس گيرنده مي باشند.
کارگزار سرويس وب. گره اي در شبکه که مسئوليت ميزبان نمودن يک ريجستري سراسري از تمامي سرويس هاي وب در دسترس را برعهده خواهد داشت .( نظير يک کتاب آدرس جامع ) .
تمامي گره هاي فوق ، قادر به ارتباط با يکديگر از طريق شبکه هاي مبتني بر پروتکل TCP/IP مي باشند . در سرويس هاي وب ، سه گره تعريف شده در معماري مبتني بر سرويس ، متناظر با عناصر سرويس هاي وب خواهند بود:
کارگزار سرويس ، مسئوليت ميزبان نمودن UDDI)Universal Description,Discovery and Integration ) را برعهده خواهد داشت .
ارائه دهنده سرويس ، مسئوليت عرضه سرويس هاي وب از طريق صفحات ASP.NET با انشعاب asmx . را برعهده خواهد داشت .
مصرف کننده سرويس ، قابليت برقراري ارتباط از طريق HTTP ويا SOAP)Simple Object Access Protocol) را دارا مي باشد .

همانگونه که اشاره گرديد، در معماري يک سرويس وب از سه عنصر اساسي استفاده مي شود : ارائه دهنده سرويس وب ، استفاده کننده سرويس وب و کارگزار سرويس وب . در ادامه به تشريح هر يک از عناصر فوق خواهيم پرداخت . ( در اين بخش از مقاله به بررسي ارائه دهنده سرويس پرداخته و در بخش دوم اين مقاله ، مصرف کننده سرويس و کارگزار سرويس ، تشريح خواهند شد ) .

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

سرويس دهنده وب
يک ارائه دهنده سرويس مي بايست حداقل شامل يک گوش دهنده ( listener ) پروتکل باشد . براي سرويس هاي وبي که توسط فريمورک دات نت و يا ويژوال استوديو دات نت ، پياده سازي مي گردند ، گوش دهنده پروتکل مي بايست يک HTTP listener باشد . با توجه به اينکه يک ارائه دهنده سرويس قادر به ميزبان نمودن چندين سرويس وب خواهدبود ،ارائه دهنده سرويس ،مي بايست امکان هدايت مناسب يک درخواست به سرويس وب مناسب را دارا باشد . ( قابل مقايسه با سرويس RPCCC) Remote Procedure Call Subsystem)، که مسئوليت پاسخگوئي به درخواست هاي وارده DCOM وهدايت آنان به يک سرويس دهنده مناسب COM است) .مصرف کنندگان ناشناخته سرويس وب ، قادر به دستيابي به يک ارائه دهنده سرويس مي باشند . بنابراين لازم است ، سرويس دهنده وب سرويس هاي پايه امنيتي را حداقل در سطح پروتکل، ارائه نمايد. IIS ، که يک سرويس دهنده وب است ، سرويس هاي مورد نياز يک سرويس وب را ارائه مي نمايد :

IIS يک HTTP listener است
IIS با استفاده از معماري ISAPI ، مي تواند بعنوان يک gateway در رابطه با سرويس هاي وب رفتار نموده و علاوه بر ميزباني از سرويس هاي وب متعدد ، زمينه هدايت صحيح آنان را نيز فراهم نمايد.
IIS زيرساخت قابل ملاحظه اي در رابطه با امنيت را ارائه مي نمايد .
IIS و سرويس هاي وب
يک سرويس دهنده وب نظير IIS ، قادر به فراخواني يک سرويس از جانب يک سرويس گيرنده با استفاده از گزينه هاي متعددي است . سرويس دهنده وب قادر به فعال نمودن ( اجراء ) يک برنامه CGI)Common Gateway Interface) ، اجراي يک مفسر اسکريپت بمنظور برخورد با صفحات ASP و يا فراخواني يک برنامه ISAPI است .زمانيکه IIS همراه با CLR فعاليت مي نمايد ، از يک فيلتر ISAPI بمنظوربررسي درخواست هائي در ارتباط با صفحات با انشعاب asmx استفاده و در ادامه يک ميزبان زمان اجراء را فعال مي نمايد . ميزبان زمان اجراء ، کد مربوط به سرويس وب را که توسط فريمورک دات نت پياده سازي شده است ، اجراء خواهد کرد.

در بخش دوم اين مقاله به بررسي نقش و جايگاه مصرف کنندگان و کارگزاران سرويس ها ي وب ، خواهيم پرداخت .
+ نوشته شده در  دوشنبه 8 اسفند1384ساعت 17:47  توسط لوتوس  | 

يك نكته درباره اشاره گرها (pointers) به برنامه نويسان Cو C++و

اگر يك برنامه نويس مجرب Cو C++و هستيد ، حتما" مي دانيد كه اين برنامه ها
از اشاره گرها پشتيباني مي كنند . اما در مباحث قبل حرفي از اشاره گرها نزديم .
دليل آن بسيار ساده است : جاوا امكان استفاده از اشاره گرها را نداده و از آنها
پشتيباني نمي كند . ( دقيقتر بگوييم كه جاوا از اشاره گرهايي كه توسط برنامه
نويسان قابل دسترسي يا قابل تغيير باشند ، پشتيباني نمي كند. ) جاوا اشاره گرها
را مجاز نمي داند ، زيرا اين اجازه سبب مي شود تا ديواره آتش بين محيط اجرايي
جاوا و رايانه ميزبان شكافته شود . ( بياد آوريد كه مي توان به يك اشاره گر هر
آدرسي از حافظه را اختصاص داد حتي آدرسهايي كه ممكن است خارج از سيستم حين
اجراي جاوا باشند . ) چون Cو C++و استفاده گسترده اي از اشاره گرها دارند ، ممكن
است تصور كنيد كه از دست دادن اشاره گرها در جاوا افت زيادي بوجود خواهد آورد .
اما اين امر حقيقت ندارد . جاوا بطوري طراحي شده كه ماداميكه شما در محدوده
محيط اجرايي بمانيد ، هيچ نيازي به استفاده از اشاره گر نداشته ، ضمن اينكه در استفاده از آنها مزيتي هم نخواهد داشت .

+ نوشته شده در  دوشنبه 8 اسفند1384ساعت 17:45  توسط لوتوس  | 

در مثالهايي كه تاكنون مطرح گرديد، فايل يا فقط بعنوان وسيله ورودي استفاده
گرديد و يا فقط بعنوان وسيله خروجي ، در اين قسمت مشاهده خواهد شد كه چگونه
ميتوان يك فايل را هم بعنوان وسيله ورودي و هم بعنوان وسيله خروجي مورداستفاده
قرار داد. براي اين منظور كافي است در تابع ()fopen بجاي mode از يكي از عبارات r+
يا r+tا ( باز كردن فايل text موجود بعنوان ورودي و خروجي ) ، w+يا w+tا
( ايجاد يك فايل text بعنوان ورودي و خروجي ) ، a+يا a+tا ( ايجاد فايل text و
يا باز كردن فايل text موجود ، بعنوان ورودي و خروجي ) ، r+b ( باز كردن فايل
باينري موجود ، بعنوان ورودي و خروجي ) ، w+b ( ايجاد يك فايل باينري بعنوان
ورودي و خروجي ) و ياa+b ( ايجاد و يا بازكردن فايل موجود باينري بعنوان ورودي
و خروجي ) استفاده نمود . بعنوان مثال ، دستورات زير را در نظر بگيريد :

fp1= fopen( "test.dat"/ "w+b");( 1)
fp2= fopen( "sample.dat"/ "r+b");( 2)
fp3= fopen( "test2.dat"/"a+t");( 3)

دستور (1) ، فايلي بنام test.dat را از نوع باينري و بصورت ورودي و خروجي
باز مي كند كه اشاره گر fp1 به آن اشاره مي كند . اگر فايل test.dat قبلا" وجود
داشته باشد محتويات قبلي آن از بين خواهند رفت .دستور(2)، فايلي بنام sample.dat
را كه اكنون بر روي درايو جاري وجود دارد از نوع باينري و بصورت ورودي و خروجي
باز مي كند . اگر فايل sample.dat بر روي درايو جاري وجود نداشته باشد ، پيام
خطايي صادر خواهد شد . دستور (3) ، فايلي بنام test2.dat را از نوع text و به
صورت ورودي و خروجي باز مي كند . اگر فايل test2.dat قبلا" وجود نداشته باشد
ايجاد خواهد شد و اگر وجود داشته باشد اطلاعات قبلي آن محفوظ بوده و اطلاعات جديد
به انتهاي آن اضافه خواهد شد .
در حين كار با فايل ها ( نوشتن اطلاعات بر روي آنها و يا خواندن اطلاعات از
آنها ) براي برگشت به ابتداي فايل ( تغيير " موقعيت سنج فايل " طوري كه ابتداي
فايل اشاره كند ) بايد فايل را بسته و مجددا" آن را باز نمود ( البته با توجه
به مطالبي كه تاكنون در مورد فايل ها گفته شد ) . اين مطلب در مثال هايي كه
تاكنون مطرح شد به چشم مي خورد . اصولا" شايد در فايل هايي كه فقط بعنوان خروجي
و يا فقط بعنوان ورودي باز مي شوند، نياز به برگشت به ابتداي فايل ( بدون بستن
و باز كردن مجدد آن ) احساس نشود، ولي اين امر در مورد فايل هاي ورودي و خروجي
به عنوان يك نياز مطرح است . براي اين منظور از تابعي بنام ()rewind استفاده
مي گردد . الگوي تابع ()rewind در فايل stdio.h قرار داشته و بصورت زير است : void rewind( FILE *fp)

در الگوي فوق ، fp به فايلي اشاره مي كند كه " موقعيت سنج " آن بايد به
ابتداي فايل اشاره نمايد .

مثال : برنامه اي كه رشته هايي را از ورودي خوانده و در يك فايل text قرار
مي دهد و سپس محتويات اين فايل را خوانده و به صفحه نمايش منتقل مي كند .

#include "stdio.h"
#include "stdlib.h"

void main(void)
{
FILE *fp ;
char str(80);
if((fp=fopen("test"/"w+"))==NULL)
{
printf("cannot open file\n" );
exit(1);
}
printf("enter a string");
printf("(Enter to quit:)\n");
while( 1)
{
gets(str);
if(!str[0])
break ;
strcat(str/"\n");
fputs(str/fp);
}
printf("\n the content of");
printf(" file is:\n\n");
rewind(fp);
fgets(str / 79 / fp);
while( !feof(fp))
{
printf("%s"/str);
fgets(str / 79 /fp );
}
fclose(fp );
}

نمونه اي از خروجي برنامه بالا :

( متن وارد شدهه از طريق صفحه كليد به فايل text ) enter a string(Enter to quit:)
<< top of file >>
this is an example for
read/write file.
<>

( متن موجود در فايل text كه به خروجي منتقل شده است ) the aontent of file is:

<< top of file >>
this is an example for
read/wri


+ نوشته شده در  دوشنبه 8 اسفند1384ساعت 17:43  توسط لوتوس  | 

براي نوشتن رشته ها در فايل ، از تابع ()fputs و براي خواندن رشته ها از قايل
از تابع ()fgets استفاده مي گردد . الگوهاي اين دو تابع بصورت زير مي باشند : int fputs( const char *str/ FILE *fp)
char *fgets( char *str/ int length/ FILE *fp)

در الگوي فوق ، fp اشاره گري است كه مشخص مي كند اين توابع بايد بر روي چه
فايل هايي عمل كنند . در تابع ()fgets اشاره گر str به رشته اي اشاره مي كند كه
بايد در فايل نوشته شود . اين اشاره گر در تابع ()fputs به رشته اي اشاره مي كند
كه اطلاعات خوانده شده از فايل در آن قرار مي گيرند . length طول رشته اي را كه
بايد از فايل خوانده شود مشخص مي كند . نحوه عمل تابع ()fgets به اين صورت است
كه :
از ابتداي فايل شروع به خواندن مي كند تا به انتهاي يك خط برسد و يا رشته اي
به طول length كاراكتر را از فايل بخواند. برخلاف تابع ()gets، در تابع ()fgets
كاراكتري كه انتهاي خط را مشخص مي كند جزئ رشته اي خواهد بود كه اين تابع از
فايل مي خواند .

مثال : برنامه اي كه رشته هايي رااز ورودي ( صفحه كليد ) خوانده و در يك فايل
قرار مي دهد . از آنجايي كه تابع ()gets كاراكتري كه پايان خط را مشخص مي كند
به رشته اضافه نمي كند ، در حين نوشتن بر روي فايل اين كاراكتر به رشته خوانده
شده اضافه مي شود . براي خاتمه برنامه كافي است به جاي رشته ، فقط كليد enter
وارد شود .

#include "stdio.h"
#include "stdlib.h"

void main(void)
{
FILE *fp ;
char str[80];
if((fp=fopen("test"/"w"))==NULL)
{
printf("cannot open file\n" );
exit(1);
}
printf("enter a string");
printf("(ENTER to quit:)\n");
while( 1)
{
gets(str);
if(!str[0])
break ;
strcat(str/"\n");
fputs(str/fp);
}
fclose(fp );
}

نمونه اي از اجراي برنامه مثال بالا :

enter a string(ENTER to quit:)
in the name of god.
this is a sample file
for string i/o.
bottom of


+ نوشته شده در  دوشنبه 1 اسفند1384ساعت 17:35  توسط لوتوس  | 

حتما" دقت كرده ايد كه طي بحث گذشته درباره انواع داده و آرايه ها هيچ حرفي
از رشته ها يا نوع داده رشته (string data type) مطرح نشد . علت عدم پشتيباني
جاوا از اين نوع نيست . بلكه علت آن است كه نوع رشته در جاوا تحت نام string
يك نوع ساده نيست . اين مفهوم در جاوا با آرايه اي از كاراكترها ( آنگونه در C
و C++ مي باشد ) متفاوت است . در جاوا string تعريف كننده يك شي ئ است و توصيف
كامل رشته ، مستلزم درك كاملي از جنبه هاي گوناگون شي ئ گرايي است . بهمين دليل
مبحث رشته ها را بعد از بحث اشيائ خواهيم گفت . اما چون ممكن است تا آن زمان از
رشته هاي ساده درمثالها استفاده شود، لذا معرفي مختصري از رشته ها ارائه ميدهيم .
نوع string براي معرفي و اعلان متغيرهاي رشته اي استفاده مي شود . همچنين
مي توانيد آرايه هايي از رشته ها را اعلان كنيد . يك ثابت رشته اي داخل علامت " "
را مي توان به يك متغير string نسبت داد . يك متغير نوع string را مي توان به
متغير ديگري از همان نوع نسبت داد . مي توانيد يك شي ئ از نوع string را بعنوان
يك آرگومان به ()println استفاده نماييد . بعنوان مثال ، برنامه بعدي را در
نظر بگيريد :

+ String str = "this is a test";
+ String.out.println(str);

در اينجا str يك شي ئ از نوع string است كه رشته "this is a test" به آن
منتسب شده است . اين رشته توسط دستور ()println بنمايش درمي آيد .
بعدا" خواهيد ديد اشيائ string داراي جنبه ها و خصلتهايي هستند كه آنها را
بسيار قدرتمند و سهل الاستفاده ساخته است . اما در بحثهاي بعدي شما فقط از اده خواهيد نمود .

+ نوشته شده در  دوشنبه 1 اسفند1384ساعت 17:33  توسط لوتوس  | 

امکانات و پتانسيل هاي گسترده ارائه شده توسط دات نت ، امکان طراحي و بکارگيري برنامه هاي پيچيده توزيع شده را براحتي ميسر مي سازد. پياده سازي برنامه هاي اينچنين بزرگ و پيچيده در گذشته داراي چالش هاي خاص خود بود و در برخي موارد غير ممکن بنظر مي آمد. در اين مقاله قصد داريم به بررسي يک برنامه نمونه در اين رابطه پرداخته و پس از آناليز نيازها و خواسته هاي موجود ، نحوه استفاده از دات نت را بمنظور تامين خواسته هاي فوق ، بررسي نموده تا از اين رهگذر پلات فرم دات بهمراه پتانسيل هاي آن بهتر شناخته گردد.
بدين منظور يک سيستم نمونه وام در يک بانک فرضي را بررسي مي نمائيم . سيستم فوق، داراي کاربران متعددي است که از طريق دستگاههاي متفاوت ( کامپيوتر ، موبايل ، PDA ) قصد استفاده از خدمات مربوطه را دارند.سيستم فوق ، همچنين داراي همکاران تجاري ( Business Partner) متفاوتي است که بنوعي با آنان تعامل اطلاعاتي دارد . برخي از همکاران تجاري از اطلاعات موجود در سيستم بعنوان مصرف کننده استفاده ( دائره پيگيري وام هاي ديرکرد) و برخي ديگر اطلاعاتي را توليد ( آژانس هاي ارائه دهنده خدمات بررسي کارت هاي اعتباري ) و در اختيار سيستم وام ، قرار خواهند داد.اين سيستم همچنين داراي کاربران متعدد با نگرش هاي متفاوت نسبت به سيستم مي باشد. کارکنان بانک ، مديريت سيستم و کاربران عادي ، جملگي بعنوان کاربران سيستم فوق محسوب شده و هر يک با توجه به نگرش و خواسته خود از سيستم استفاده خواهند کرد.
شکل زير ، دياگرام کلي سيستم فوق را بهمراه برنامه ها و کاربران مربوطه ، نشان مي دهد . همانگونه که در شکل مشاهده مي شود تمامي عمليات سيستم را مي توان به هشت گروه متفاوت تقسيم و در ادامه اقدام به ارائه راهکار مربوطه در اين زمينه نمود .


يک سيستم نمونه وام بانکي که از دات نت استفاده مي نمايد

در ادامه به بررسي عمليات هشت گانه فوق پرداخته و امکانات دات نت را در اين راستا ، بررسي مي نمائيم .

1 - بانک اطلاعاتي وام گيرندگان. بانک اطلاعاتي، شامل داده ( اطلاعات ) مورد نظر در ارتباط با هريک از دريافت کنندگان وام است . بانک اطلاعاتي فوق ، همچنين شامل view هائي از بانک اطلاعاتي مشتريان بانک است . بانک اطلاعاتي وام گيرندگان ، مي تواند با استفاده از امکانات سرويس دهنده SQL ، اينفورميکس ، DB2 و يا ساير سيستم هاي مديريت بانک اطلاعاتي، ايجاد و داده ها را در خود ذخيره نمايد.

2 - لايه داده ( Data Tier ) . لايه فوق، بعنوان لايه داده در معماري سرويس گيرنده - سرويس دهنده N-tier ، مطرح مي باشد . لايه داده از ADO.NET بمنظور ارتباط با سيستم بانک اطلاعاتي استفاده و يک رويکرد شي گراء از داده ها را براي لايه logic ، ارائه مي نمايد. بعبارت ديگر رکوردهاي بانک اطلاعاتي و فيلدها به اشيائي تبديل ( map ) تا اطلاعات مربوط به مشتريان ، وام ها ، پرداخت ها و ساير موارد مرتبط توسط آنان ارائه گردد. در اين راستا ، مي توان از #C و يا ويژوال بيسيک دات نت و يا ساير زبان هاي سازگار با دات نت در لايه داده ، استفاده کرد.

3 - لايه منطق ( Logic Tier ) . لايه منطق، شامل قوانيني است که سياست هاي راهبردي نرم افزار را تعيين مي نمايد ( Business rules ) .لايه فوق، بمنزله قلب سيستم خواهد بود. مجددا" مي توانيم براي کدينگ برنامه ها و عناصر مورد نياز در لايه فوق از زبان #C و يا ويژوال بيسيک دات نت و يا ساير زبانهاي سازگار با دات نت استفاده نمائيم. انتخاب زبان برنامه نويسي در اين لايه ، ارتباطي با زبان استفاده شده در لايه داده ، نخواهد داشت . سازگاري بين زبانها نظير توارث بين زبانها ، بدين معني است که ما مي توانيم مناسبترين زبان را بمنظور پاسخگوئي به نيازها و عمليات مورد نظر خود، انتخاب نمائيم . CLR بهمراه پتانسيل هاي موجود ، امکان انتخاب زبان هاي مورد نظر را با توجه به نوع خواسته ها فراهم و در صورت نياز نيز مي توان از ترکيب آنها با يکديگر استفاده کرد.

4 - برنامه محلي و اختصاصي دپارتمان وام . ممکن است ، قصد داشته باشيم که يک برنامه با کاربرد داخلي را بعنوان يک برنامه مبتني بر ويندوز سنتي ايجاد نمائيم . با استفاده از معماري سرويس گيرنده - سرويس دهنده ، اين نوع برنامه ها قادر به ارتباط مستقيم با لايه منطق از طريق شبکه داخلي محلي بانک، خواهند بود. برنامه فوق ، مشابه مدل فرم هاي ويژوال بيسيک است . با استفاده از ويژوال استوديو دات نت ، مي توان بسادگي اقدام به طراحي فرم هاي مورد نياز نمود. فرم هاي ويندوز، مي توانند شامل تمامي کنترل هاي شناخته شده ويندوز باشند . ( Check box,Labels,List boxes ) . فرم هاي ويندوز، همچنين شامل يک نسخه جديد از Windows Graphic Device Interface)GDI) مي باشند .

5 - برنامه هاي کنسول مديريت . شايد بانک از اينفورميکس بر روي يونيکس بعنوان سيستم مديريت بانک اطلاعاتي استفاده مي نمايد. در صورتيکه چنين وضعيتي باشد ، ما ممکن است مديراني را داشته باشيم که تمايل به اجراي برنامه هاي دات نت از طريق ايستگاههاي يونيکس را داشته باشند . کلاس Systrm.Console ، قادر به ايجاد برنامه ها ي خط دستوري است که امکان فعال شدن و انجام عمليات مربوطه ،از طريق يک اتصال telnet محقق مي گردد. مثلا" با استفاده از ويژوال بيسيک دات نت و يا #C مي توان يک برنامه کنسول را طراحي و پياده سازي نمود.بدين ترتيب ، مديريت قادر خواهد بود تا با استفاده از يک پلات فرم ديگر ، از تاريخ سررسيد وام ها ، آگاهي يابد.

6 - سرويس هاي وب Business partner ( توليد). درمدل فوق ، داراي يک همکار تجاري هستيم : مجموعه اي از آژانس ها ي استخدام شده توسط بانک بمنظور پيگيري وام هائي که داراي تاخير در پرداخت مي باشند. در گذشته! ، مي بايست يک برنامه batch خاص را طراحي را تا بصورت روزانه حساب هاي هاي تاخير دار را استخراج و آنها را بر روي يک فايل ذخيره و براي هر يک از آژانس ها ارسال نمايد. با استفاده از دات نت ، مي توان عمليات فوق را بصورت يک سرويس وب طراحي تا حساب هاي تاخير دار را براي سرويس گيرندگان راه دور، نمايش دهد. اين بدان معني است که آژانس هاي مربوطه قادر به بکارگيري برنامه هاي اختصاصي خود بمنظور ارتباط با سيستم وام و استخراج حساب هاي هاي تاخير دار در صورت ضرورت مي باشند. اگر بپذيريم که وب سايت ها، خدماتي را در اختيار انسان قرار مي دهند ، مي توان گفت که سرويس هاي وب توسط ساير برنامه ها استفاده و خدمات خود را در اختيار آنان قرار خواهند داد ( تحول در ارتباط بين برنامه ها و فصل جديدي براي گفتگوي برنامه ها ). رويکرد فوق ، باعث ظهور نسل جديدي از برنامه ها ( مدل فدرال) خواهد شد . در اين راستا ، سرويس هاي وب مستقلي ايجاد که با استفاده از آنان و يا ترکيبي از آنان مي توان ، برنامه هاي قدرتمندي را ايجاد کرد.

7 - سرويس هاي وب Bussiness partner ( مصرف ) . سيستم وام ممکن است همچنين خود بعنوان يک مصرف کننده سرويس هاي وب توليدي توسط ساير همکاران تجاري باشد . درمدل فوق ، يک آژانس کارت اعتباري ، سرويس وبي را ايجاد تا مشتريان تجاري را قادر به بررسي کارت اعتباري در برنامه وام نمايد.مسئوليت بررسي صحت کارت اعتباري و ساير عمليات مرتبط با آن ، توسط آژانس مربوطه انجام و ماحصل آن براي برنامه متقاضي ارسال خواهد گرديد ( طراحي و پياده سازي يک سرويس وب که مسئوليت فوق را برعهده خواهد گرفت ). دات نت، ابزارها ي لازم بمنظور ايجاد يک سرويس گيرنده بمنظور استفاده از سرويس و ارتباط آن با سيستم وام را فراهم مي نمايد .

8 - برنامه هاي مشتريان مبتني بر وب . با استفاده از ASP.NET ، مي توان بسرعت يک برنامه وام مبتني بر وب را ايجاد تا امکان دسترسي سريع به سيستم وام را براي مشتريان مربوطه ، فراهم نمايد. همچنين با استفاده از Mobile Internet Toolkit ، مي توان اينترفيسي خاص را طراحي تا بر اساس آن ، مشتريان مربوطه قادر به استفاده از سيستم وام بکمک دستگاههاي handheld نظير تلفن هاي مبتني بر وب و يا PDA باشند.

همانگونه که در برنامه فوق ، مشاهده مي گردد برخي از عناصر ( نسبت به مدل هاي قبل از دات نت ) از مدل فوق ،حذف شده است . مثلا" در مدل ارائه شده خبري از عناصر COM و يا CORBA وجود ندارد در مقابل ما از توان سرويس دهنده وب بمنظور استفاده از زيرساخت سرويس هاي وب XML مربوط به ASP.NET استفاده تا امکانات سيستم وام را در اختيار سرويس گيرندگان از راه دور قرار دهيم. براي حمايت دستگاههائي موبايل و ساير دستگاههاي مشابه از سرويس دهندگان اضافي و يا فيلترهاي خاصي استفاده نشده است . در اين راستا از کنترل هاي ارائه شده Mobile Internet Toolkit بمنظور تشخييص و حمايت چندين دستگاه استفاده شده است . همچنين در اين رابطه امکانات خاصي دررابطه با حمايت مرورگرهاي متفاوت اضافه نشده است . اين بدان معني است که برنامه هاي ASP.NET قادر به استفاده از مزاياي ويژگي هاي توسعه يافته مرورگرهاي سطح بالا بوده و بر اساس آن ، مرورگرها مي توانند بصورت اتوماتيک HTML لازم براي مرورگرهاي قديمي را با توجه به پتانسيل هاي مربوطه خود ، ارائه نمايند.
همانگونه که مشاهده گرديد ، طراحي و پياده سازي يک سيستم پيچيده و مدرن که شامل چندين اينترفيس و چندين نوع کاربر است ( کارکنان بانک ، همکاران تجاري که از پلات فرم هاي خاص خود استفاده مي نمايند ، مشتريان بانک که از دستگاههاي متعددي بمنظور ارتباط با سيستم استفاده مي نمايند ) ، با استفاده از پلات فرم دات نت ، بخوبي ميسر خواهد شد.دات نت در رابطه با طراحي و پياده سازي اين نوع سيستم ها ، تمامي امکانات مورد نياز را در اختيار طراحان و پياده کنندگان سيستم هاي نرم افزاري قرار خواهد داد .

+ نوشته شده در  دوشنبه 1 اسفند1384ساعت 17:27  توسط لوتوس  | 

سلام

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

برام دعا کنید

مرسی از همتون

منتظرم باشید

+ نوشته شده در  دوشنبه 1 اسفند1384ساعت 16:56  توسط لوتوس  |