• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
تعداد مطالب : 278
تعداد نظرات : 289
زمان آخرین مطلب : 3996روز قبل
داستان و حکایت

طبیعت انسان

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

دوشنبه 19/2/1390 - 16:49
داستان و حکایت

خدا هست  

 مردی برای اصلاح سر و صورتش به آرایشگاه رفت

 در بین کار گفتگوی جالبی بین آنها در گرفت

 آنها در رابطه به موضوعات و مطالب مختلف صحبت کردند

 وقتی به موضوع ((خدا)) رسید

 آرایشگر گفت : من باور نمیکنم خدا هم وجود داشته باشد  

 مشتری پرسید چرا باور نمیکنی؟  

آرایشگر جواب داد :کافیست به خیابان بروی تا ببینی چرا خدا وجود ندارد

به من بگو اگر خدا وجود داشت این همه مریض می شدند؟

بچه های بی سرپرست پیدا میشد؟

اگر خدا وجود میداشت نباید درد و رنجی وجود داشت

نمیتوانم خدای مهربانی را تصور کنم که اجازه میداد این همه درد و رنج و جود داشته باشد

مشتری لحظه ای فکر کرد اما جوابی نداد.

چون نمیخواست جر و بحث کند

آرایشگر کارش را تمام کرد ومشتری از مغازه بیرون رفت

به محض اینکه از مغازه بیرون آمد

مردی را دید با موهای بلند و کثیف و به هم تابیده و ریش اصلاح نکرده و ظاهرش کثیف و به هم ریخته بود

مشتری برگشت و دوباره وارد آرایشگاه شد

و به آرایشگر گفت :میدانی چیست!

به نظر من آرایشگر ها هم وجود ندارند

 آرایشگر گفت :چرا چنین حرفی میزنی؟من اینجا هستم.

من آرایشگرم همین الان موهای تو را کوتاه کردم

 مشتری با اعتراض گفت :نه.

 آرایشگرها وجود ندارندچون اگر وجود داشتند،

 هیچکس مثل مردی که بیرون است. با موهای بلند و کثیف و ریش اصلاح نکرده پیدا نمیشد  

آرایشگر: نه بابا !  آرایشگرها  وجود دارند موضوع این است که مردم به ما مراجعه نمیکنند 

مشتری تائید کرد: دقیقا نکته همین است

خدا هم وجود دارد !فقط مردم به او مراجعه نمیکنند و دنبالش نمیگردند

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

 

يکشنبه 18/2/1390 - 17:39
کامپیوتر و اینترنت
آشنائی با کوکی ها و روش استفاده آنها در ASP کلاسیک 

Cookie چیست؟
از یك كوكی می توان برای تشخیص كاربر استفاده كرد. کوکی یك فایل كوچك است كه سرور روی كامپیوتر كاربر قرار می دهد و هر مرتبه كه كاربر با همان مرورگر با آ ن سرور ارتباط برقرار می كند آن كوكی را نیز می فرستد. با استفاده از ASP هم می توان كوكی ایجاد كرد و هم آن ها را بازخوانی نمود.

چگونگی ساخت یك كوكی
فرمان Response.Cookies برای ساخت كوكی مورد استفاده قرار می گیرد:

<%
Response.Cookies("firstname")="Alex"
%>

 

ما در مثال بالا یك كوكی به اسم firstname ساخته ایم و مقدار Alex را به آن داده ایم. نكته مهم در اینجا این است كه دستور Response.Cookies باید قبل از برچسب <HTML> قرار گرفته باشد. همچنین می توان به یك كوكی چند صفت داد، مثل تاریخی كه باید در كامپیوتر كاربر از بین برود:

<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires="May 10,2002"
%>

 

حالا كوكی با اسم firstname مقدار Alex را دارد و در تاریخ 10 می 2002 از كامپیوتر كاربر پاك خواهد شد.

چگونگی گرفتن مقدار یك كوكی
دستور Request.Cookies برای خواندن مقدار یك كوكی مورد استفاده قرار می گیرد. در مثال زیر ما مقدار كوكی firstname را بازخوانی می كنیم و آن را نمایش می دهیم:

<%
fname=Request.Cookies("firstname")
response.write("Firstname=" & fname)
%>

 

یك كوكی با كلیدها
یك كوكی همچنین می تواند شامل مجموعه ای از مقدارهای متعدد باشد، كه در اینصورت گفته می شود كوكی دارای كلیدهایی است. در مثال زیر ما یك كوكی به اسم user خواهیم ساخت كه دارای كلیدهایی است كه شامل اطلاعات كاربر است:

<%
Response.Cookies("user")("firstname")="Alex"
Response.Cookies("user")("lastname")="Nasser"
Response.Cookies("user")("country")="Iran"
Response.Cookies("user")("age")="20"
%>

 

خواندن همه كوكی ها
مثال زیر تمام كوكی هایی كه سرور شما به كاربر فرستاده است را می خواند. توجه كنید كه كد زیر بررسی می كند كه آیا كلیدهای كوكی دارای صفت HasKeys هستند یا نه:

<p>")
    if Request.Cookies(x).HasKeys then
        for each y in Request.Cookies(x)
            response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
            response.write("<br /")
        next
    else
    Response.Write(x & "=" & Request.Cookies(x) & "<br />")
    end if
    response.write "</p>"
next
%>
</body>
</html>

 توسط مسلم ابراهیمی

يکشنبه 18/2/1390 - 8:30
کامپیوتر و اینترنت
   
 
این مقاله به بررسی کنترلهای مخفی یا hidden در فرم ها پرداخته و کاربرد آن را شرح می دهد. 

شاید تابحال این سؤال برایتان پپش آمده باشد كه صفت hidden در کنترلها چه كاربردی دارد و اصولا کنترلی كه مخفی باشد به چه دردی می خورد؟ من در این مقاله سعی براین دارم كه با نشان دادن كاربردهایی از این کنترلها، كارایی آنها را برایتان شرح دهم.

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

برای این منظور یك textbox مخفی با نام process و مقدار true در فرم مربوطه ایجاد كنید.

<input type=hidden name=process value=true> 

بعد action فرم حاوی آن کنترل را به همان صفحه قرار دهید. در ابتدای شروع تگ Form مقدار متغیر process را چك كنید. اگر این اولین باری باشد كه كاربر این صفحه را مشاهده می كند، متغیر process هیچ مقداری نداشته و خالی خواهد بود. اما اگر او قبلا کنترل شما را submit كرده باشد متغیر process مقدار true خواهد داشت. در زیر نمونه كدی را كه برای این منظور باید استفاده شود را آورده ام:

If Request.Form("process") Then
    RunFunction
Else
    Show MyForm
EndIf

دومین راه استفاده از کنترلهای مخفی، قرار دادن اطلاعاتی در کنترل میباشد كه شما می خواهید یا آنها از صفحه ای به صفحه دیگر منتقل كنید و یا اطلاعاتی را كه خودتان بوجود آورده اید (مثل UserId كه بعد از login كردن هر كاربر تولید می شود) بین صفحات انتقال دهید.

جای دیگری كه در آنجا استفاده از کنترلهای مخفی رایج می باشد، در صفحاتی است كه تعداد خاصی از ركوردهای یك بانك اطلاعاتی را در یك صفحه نمایش داده و با استفاده از دكمه های Next و Prev امكان دیدن تعداد ركوردهای بعدی را درصفحه بعد، فراهم می آورند. برای این منظور بعداز Submit كردن یك پرسش (یا فشردن یك دكمه مثل Next) نیاز به رد كردن تعداد ركوردهایی كه تا صفحه قبل نمایش داده بودیم داریم. در این روش وقتی كه كاربر روی دكمه Next، مثلا برای نمایش ۵۰ ركورد بعدی كلیك می كند، تعداد ركوردهای گذشته را كه نمایش داده شده اند، توسط مقدار یك Textbox مخفی به آن صفحه می فرستیم. سپس از این مقدار در عبارت SQL برای بدست آوردن ركوردهای موردنظر استفاده می كنیم.

يکشنبه 18/2/1390 - 8:26
داستان و حکایت
بستنی
پسر بچه ای وارد یک بستنی فروشی شد و پشت میزی نشست. پیشخدمت یک لیوان آب برایش آورد.
پسر بچه پرسید: یک بستنی میوه ای چند است؟ پیشخدمت پاسخ داد: پنجاه سنت. پسر بچه دستش را در جیبش فرو برد و شروع به شمردن کرد. بعد پرسید : یک بستنی ساده چند است؟ در همین حال تعدادی از مشتریان در اتتظار میز خالی بودند. پیشخدمت با عصبانیت پاسخ داد : 35 سنت. پسر دوباره سکه هایش را شمرد و گفت: لطفا یک بستنی ساده. پیشخدمت بستنی را آورد و به دنبال کار خود رفت.
پسرک نیز پس از خوردن بستنی پول را به صندوق پرداخت و رفت. وقتی پیشخدمت بازگشت، از آنچه دید حیرت کرد .
آنجا در کنار ظرف خالی بستنی دو سکه پنج سنتی و پنج سکه یک سنتی گذاشته شده بود برای انعام پیشخدمت
چهارشنبه 14/2/1390 - 14:22
داستان و حکایت

اشتباه فرشتگان

درویشی به اشتباه فرشتگان به جهنم فرستاده میشود . پس از اندك زمانی داد شیطان در می آید و رو به فرشتگان می كند و می گوید : جاسوس می فرستید به جهنم!؟ از روزی كه این ادم به جهنم آمده مداوم در جهنم در گفتگو و بحث است و جهنمیان را هدایت می كند و... حال سخن درویشی كه به جهنم رفته بود این چنین است: با چنان عشقی زندگی كن كه حتی بنا به تصادف اگر به جهنم افتادی خود شیطان تو را به بهشت باز گرداند.

چهارشنبه 14/2/1390 - 14:13
کامپیوتر و اینترنت
ایجاد یك سیستم Login برای ورود اعضاء یك سایت  (قسمت 2)

اطلاعات ورودی كاربر در صفحه Login.htm پس از فشردن دكمه Login به صفحه Login_Action.asp ارسال می شوند.

ابتدا ما باید اطلاعات فرم را از صفحه اصلی، داخل صفحه جاری بازیابی كنیم این كار بوسیله شئ Request انجام پذیر است. پس از بازیابی اطلاعات، آنها را درون دو متغیر به نام های User و Pass برای استفاده های بعدی ذخیره می كنیم. سپس بوسیله شئ Connection با بانك اطلاعاتی ارتباط برقرار می كنیم. متد Open از شئ Connection آغاز ارتباط با بانك اطلاعاتی است. همیشه برای هرگونه دستیابی به بانك اطلاعاتی باید بوسیله این متد، ارتباط را با بانك اطلاعاتی را باز كنیم.

پس از شروع ارتباط با بانك اطلاعاتی حال ما نیاز به یك پرس و جو از بانك اطلاعاتی داریم. این كار بوسیله شئ RecordSet انجام پذیر است. سپس بوسیله متد Open از شئ RecordSet پرس و جو از بانك اطلاعاتی را آغاز می كنیم.

همانطور كه در كد موجود در قسمت اول این مقاله مشاهده می كنید دستور AdoRec.Open شامل دو مقدار است.

StrSQL : نام متغیری است كه حاوی دستور SQL برای پرس و جو از بانك اطلاعاتی است.
StrCon : مشخص كننده درایور و محل دقیق فایل بانك اطلاعاتی ماست (لازم به ذكر است كه ما دراینجا از یك ارتباط Dsn_Less استفاده كردیم).

ساختار اصلی هر برنامه Login معمولا بصورت زیر است :

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

در دستورات شرطی داخل كد بالا چند نكته وجود دارد كه بترتیب به بررسی آنها می پردازیم :

در اولین دستور شرطی متد EOF از شئ RecordSet به معنی پایان یك بانك اطلاعاتی است (همچنین متد BOF نمایانگر ابتدای یك بانك اطلاعاتی است) و واژه NOT هم، شرط جاری را منفی می كند. پس در شرط اول ما بیان كردیم كه اگر طبق دستور SQL پرس و جو در بانك اطلاعاتی به پایان بانك نرسیده باشد یعنی قبلا از رسیدن به پایان بانك اطلاعاتی، شئ RecordSet یك سطر از بانك اطلاعاتی را مطابق نظر ما یافته باشد(شناسه كاربری وارد شده در فرم معتبر باشد)، شرط بعدی اجرا خواهد شد.

در صورتیكه این شرط برقرار نباشد مرورگر پیغام خطایی مبنی بر اینكه شناسه كاربری وارد شده صحیح نمی باشد را نمایش می دهد. بدین معنی كه شناسه كاربری وارد شده در داخل فرم، در بانك اطلاعاتی یافت نشده است.

اما اگر این شرط برقرار باشد، شرط دیگری برای بررسی كلمه عبور، بیان می كنیم.

متغیر Pass حاوی كلمه عبور وارد شده توسط كاربر، در داخل فرم است و دستور AdoRec(Password) حاوی كلمه عبور اصلی است كه از بانك اطلاعاتی بازیابی شده است. (كلمه Password در دستور فوق، نام ستون مورد نظر در بانك اطلاعاتی است)

واژه Trim قبل از دستور AdoRec(Password) تمام فاصله های خالی قبل و بعد از كلمه عبور داخل بانك اطلاعاتی را حذف می كند و فقط كلمه عبور را بازیابی می كند.

مثلا اگر در هنگام ساختن بانك اطلاعاتی خود، ستون Password را با حد اكثر 15 كاراكتر ساخته باشید و كلمه Test را به عنوان كلمه عبور خود قرارداده باشیم، هنگام بازیابی این كلمه از بانك اطلاعاتی ما یك رشته با طول 15 كاراكتر داریم كه 11 كاراكتر آخر آن خالی است. بوسیله واژه Trim می توان این فواصل خالی را حذف كرد.

حال در صورت برقراری این شرط یعنی اگر كلمه عبور وارد شده كاربر با كلمه عبور داخل بانك اطلاعاتی مطابقت كند، یك پیغام خوش آمد گویی حاوی نام كاربر روی نمایشگر ظاهر خواهد شد. اما اگر این شرط برقرار نباشد یعنی شناسه كاربری معتبر باشد اما كلمه عبور درست نباشد پیغام خطایی مبنی بر اینكه كلمه عبور صحیح نیست روی صفحه نمایشگر پدید می آید.

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

در پایان نیز بجاست كه مطالب اندكی راجع به حفاظت اطلاعات در صفحات سایت بیان نماییم.

شما باید همیشه بخاطر داشته باشید كه ارسال اطلاعات در داخل این شبكه عظیم، هیچگاه امن و خالی از خطر نیست. خطراتی از قبیل دسترسی هكرها به اطلاعات شخصی شما و یا گم شدن اطلاعات شخصی در داخل شبكه هنگام ارسال آنها به مقصد و... همیشه اطلاعات شما را تهدید می كنند.

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

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

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

اما شما به عنوان یك طراح و برنامه نویس وب، می توانید راهكارهای مفید و مختلفی برای كاهش این خطرات در سایت، بیاندیشید.

EnCode كردن (كد كردن) داده ها و سپس DeCode كردن آنها در مواقع لزوم می تواند راه حل مناسبی باشد. همچنین ساختن یك نسخه پشتیبان از اطلاعات روی سرور هم می تواند در برخی از مواقع مفید واقع شود.

اما با تمام این اعمال خطر كاملا رفع نخواهد شد و همیشه خطراتی اطلاعات شخصی كاربران شما را تهدید می كند اما با این حال شما باید همواره به كاربران اطمینان بدهید كه از اطلاعات آنها محافظت می كنید.

چهارشنبه 14/2/1390 - 9:2
کامپیوتر و اینترنت
ایجاد یك سیستم Login برای ورود اعضاء یك سایت 

امروزه اغلب سایتهایی را كه مشاهده می كنید معمولا دارای یك سیستم Login هستند كه بوسیله یك شناسه كاربری (UserID) و یك كلمه عبور (Password)، قادر به تشخیص افراد خاصی از میان تمام مراجعه كنندگان به سایت هستند.

یك نمونه بارز آن صفحه SignIn سایت معروف Yahoo! برای ورود به پست الكترونیك كاربران است كه یاهو پس از بررسی وجود شناسه كاربری و صحت كلمه عبور وارد شده، به كاربران اجازه ورود به صندوق پستی خود را می دهد.

در این مقاله سعی شده است با ساخت یك برنامه ساده Login توضیحاتی درباره ساختار و نحوه كار آنها بیان نماییم :

قبل از هر چیز ما نیاز به ساختن یك بانك اطلاعاتی برای ذخیره كردن اطلاعات كاربران سایت داریم. این بانك اطلاعاتی می تواند بوسیله برنامه های مختلفی از جمله Access ساخته شود. بانك اطلاعاتی مورد نیاز برای این برنامه شامل یك جدول بنام Members و دو ستون به نامهای UserID وPassword برای ذخیره اطلاعات كاربران است.

همچنین دستور SQL برای ساختن این جدول در صفحات ASP بصورت زیر است:

Create Table Members (
UserID(20)
Password(15)
)

 

پس از ساختن این بانك اطلاعاتی نیاز به ساخت یك فرم ساده برای دریافت اطلاعات كاربران داریم كه آنرا در داخل صفحه ای بنام Login.htm می سازیم.

این صفحه به سادگی و بوسیله دستورات مقدماتی HTML قابل تهیه است.

<HTML>
<HEAD><TITLE>Login</TITLE></HEAD>
<BODY>
<TABLE cellSpacing="0" cellPadding="0" border="0" width="300" align="center">
    <TR><TD align="center" Colspan="2"><H2>Login Members</H2></TD></TR>
    <TR Height="35">
        <TD align="right" Width="100"> 
        <FORM Method="post" Action="Login_Action.asp">
            UserID&nbsp;:&nbsp;
        </TD>
        <TD align="Left">
        <INPUT type="text" name="UserID" Size="20">
        </TD>
    </TR>
    <TR Height="35">
        <TD align="right">
        Password&nbsp;:&nbsp;
        </TD>
        <TD align="left">
        <INPUT type="Password" name="Password" Size="20">
        </TD>
    </TR>
    <TR Height="35"><TD align="center" Colspan="2">
        <INPUT type="Submit" name="Submit" value="Login">
        </TD></TR>
</TABLE>
</FORM>
</BODY>
</HTML>

در كد بالا چند نكته قابل توجه وجود دارد :

Form method=Post: نحوه ارسال اطلاعات فرم را مشخص می كند. بدین صورت كه اگر ما بخواهیم اطلاعات دریافتی از یك كاربر را به صفحه دیگری برای پردازش ارسال كنیم، باید از این متد، یعنی متد Post استفاده كنیم. اطلاعاتی كه بوسیله متد Post ارسال می شوند، در صفحه بعدی بوسیله شئ Request و بصورت زیر قابل بازیابی هستند.

Request.Form("fieldname")

 

Action=Login_Action.asp: مقداری كه در مقابل ویژگی Action در دستور Form قرار گرفته، نام فایلی است كه اطلاعات فرم پس از دریافت از كاربر، به آن صفحه ارسال می شود.

ویژگی Name در دستور Input: نام متغیری است كه كلمه ورودی كاربر در فیلد جاری در آن ذخیره می شود. هر كلمه ای كه كاربر در یك فیلد وارد می كند در صفحه مقصد بوسیله نامی كه برای آن فیلد تعیین شده قابل دسترسی است.

پس از ساخت بانك اطلاعاتی و یك فرم ساده برای دریافت اطلاعات كاربران، نوبت به ساخت صفحه ای برای پردازش و پاسخ متقابل به اطلاعات ورودی كاربران است. این صفحه را با نام Login_Action.asp می سازیم.

<%@Language="VBScript"%>
<%
User = Request.Form("UserID")
Pass = Request.Form("Password")
Set AdoCon = Server.CreateObject("ADODB.Connection")
StrCon = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Users.mdb")
AdoCon.Open StrCon
Set AdoRec = Server.CreateObject("ADODB.Recordset")
StrSQL = "SELECT * FROM Members WHERE UserID ="" & User & """
AdoRec.Open StrSQL, StrCon
IF NOT AdoRec.EOF Then
    IF Pass = Trim(AdoRec("Password")) Then
        Response.Write ("Welcome " & User)
    Else
        Response.Write ("Invalid Password")
    End IF
Else
    Response.Write ("Invalid UserID")
End IF
Set AdoCon = Nothing
Set StrCon = Nothing
Set AdoRec = Nothing
%>
سه شنبه 13/2/1390 - 12:10
داستان و حکایت

کرگدن و دم جنبانک   

یک كرگدن جوان، داشت تنهایی توی جنگل می رفت. دم جنبانكی كه همان اطراف پرواز می كرد، او را دید. و از او پرسید كه چرا تنهاست. كرگدن گفت: «همه ی كرگدن ها تنها هستند.» دم جنبانک گفت: «یعنی تو یک دوست هم نداری؟» كرگدن پرسید: «دوست یعنی چی؟» دم جنبانک گفت: «دوست، یعنی كسی كه با تو بیاید، دوستت داشته باشد، و به تو كمک بكند.» كرگدن گفت: «ولی من كه كمک نمی خواهم.» دم جنبانک گفت: «اما باید یك چیزی باشد، مثلاً لابد پشت تو می خارد، لای چین های پوستت پر از حشره های ریز است. یكی باید پشت تو را بخاراند، یكی باید حشره های پوستت را بردارد.» كرگدن گفت: «اما من نمی توانم با كسی دوست بشوم. پوست من خیلی كلفت و صورتم زشت است. همه به من می گویند پوست كلفت.» دم جنبانک گفت: «اما دوست عزیز، دوست داشتن به قلب مربوط می شود نه به پوست.» كرگدن گفت: «قلب؟ قلب دیگر چیست؟ من فقط پوست دارم و شاخ.» دم جنبانک گفت: «این كه امكان ندارد، همه قلب دارند.» كرگدن گفت: «كو؟ كجاست؟ من كه قلب خودم را نمی بینم!» دم جنبانک گفت: «خب، چون از قلبت استفاده نمی كنی، آن را نمی بینی؛ ولی من مطمئنم كه زیر این پوست كلفت یك قلب نازک داری.» كرگدن گفت: «نه، من قلب نازک ندارم، من حتماً یك قلب كلفت دارم.» دم جنبانک گفت: «نه، تو یك قلب نازک داری. چون به جای این كه دم جنبانک را بترسانی، به جای این كه لگدش كنی، به جای این كه دهن گنده ات را باز كنی و آن را بخوری، داری با او حرف می زنی.» كرگدن گفت: «خب، این یعنی چی؟» دم جنبانک جواب داد: «وقتی كه یک كرگدن پوست كلفت، یك قلب نازک دارد یعنی چی؟! یعنی این كه می تواند دوست داشته باشد، می تواند عاشق بشود.» كرگدن گفت: «اینها كه می گویی یعنی چی؟» دم جنبانک گفت: «یعنی ... بگذار روی پوست كلفت قشنگت بنشینم، بگذار ... » كرگدن چیزی نگفت. یعنی داشت دنبال یک جمله ی مناسب می گشت. فكر كرد بهتر است همان اولین جمله اش را بگوید. اما دم جنبانک پشت كرگدن نشسته بود و داشت پشتش را می خاراند. داشت حشره های ریز لای چین های پوستش را با نوك ظریفش برمی داشت. كرگدن احساس كرد چقدر خوشش می آید. اما نمی دانست دقیقاً از چی خوشش می آید. كرگدن گفت: « اسم این دوست داشتن است؟ اسم این كه من دلم می خواهد تو روی پشت من بمانی و مزاحم های كوچولوی پشتم را بخوری ؟» دم جنبانک گفت: «نه اسم این نیاز است، من دارم به تو كمک می كنم و تو از اینكه نیازت برطرف می شود احساس خوبی داری، یعنی احساس رضایت می كنی. اما دوست داشتن از این مهمتر است .» كرگدن نفهمید كه دم جنبانک چه می گوید اما فكر كرد لابد درست می گوید. روزها گذشت، روزها، هفته ها و ماه ها، و دم جنبانک هر روز می آمد و پشت كرگدن می نشست، هر روز پشتش را می خاراند و هر روز حشره های كوچک را از لای پوست كلفتش بر می داشت و می خورد، و كرگدن هر روز احساس خوبی داشت. یك روز كرگدن به دم جنبانک گفت: «به نظر تو این موضوع كه كرگدنی از این كه دم جنبانكی پشتش را می خاراند و حشره های پوستش را می خورد احساس خوبی دارد، برای یك كرگدن كافی است؟» دم جنبانک گفت: «نه، كافی نیست.» كرگدن گفت: «بله، كافی نیست. چون من حس می كنم چیزهای دیگری هم هست كه من احساس خوبی نسبت به آنها داشته باشم. راستش من می خواهم تو را تماشا كنم.» دم جنبانک چرخی زد و پرواز كرد، چرخی زد و آواز خواند، جلوی چشم های كرگدن. كرگدن تماشا كرد و تماشا كرد و تماشا كرد. اما سیر نشد. كرگدن می خواست همین طور تماشا كند. كرگدن با خودش فكر كرد این صحنه قشنگ ترین صحنه ی دنیاست و این دم جنبانک قشنگ ترین دم جنبانک دنیا و او خوشبخت ترین كرگدن روی زمین. وقتی كه كرگدن به اینجا رسید، احساس كرد كه یک چیز نازک از چشمش افتاد. كرگدن ترسید و گفت: «دم جنبانک، دم جنبانک عزیزم، من قلبم را دیدم، همان قلب نازكم را كه می گفتی. اما قلبم از چشمم افتاد، حالا چكار كنم؟» دم جنبانک برگشت و اشک های كرگدن را دید. آمد و روی سر او نشست و گفت: «غصه نخور دوست عزیز، تو یک عالم از این قلبهای نازک داری.» كرگدن گفت: « اینكه كرگدنی دوست دارد دم جنبانكی را تماشا كند و وقتی تماشایش می كند، قلبش از چشمش می افتد یعنی چی؟» دم جنبانک چرخی زد و گفت: «یعنی این كه كرگدن ها هم عاشق می شوند.» كرگدن گفت: « عاشق یعنی چی؟» دم جنبانک گفت: « یعنی كسی كه قلبش از چشمهایش می چكد.» كرگدن باز هم منظور دم جنبانک را نفهمید، اما دوست داشت دم جنبانک باز حرف بزند، باز پرواز كند و او باز هم تماشایش كند و باز قلبش از چشمهایش بیفتد. كرگدن فكر كرد اگر قلبش همین طور از چشم هایش بریزد، یک روز حتماً قلبش تمام می شود. آن وقت لبخندی زد و با خودش گفت: «من كه اصلاً قلب نداشتم! حالا كه دم جنبانک به من قلب داد، چه عیبی دارد، بگذار تمام قلبم برای او بریزد!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
دوشنبه 12/2/1390 - 17:35
کامپیوتر و اینترنت

در این مقاله سعی می شود كه با بررسی برخی از ویژگی های زبان #C، ضرورت های فراگیری آن، توضیح داده شود.  

مایكروسافت در مصاف با جاوا، بدنبال ارائه یك زبان كامل بود كه سایه جاوا را در میادین برنامه نویسی كم رنگ تر نماید. شاید بهمین دلیل باشد كه #C را ایجاد كرد. شباهت های بین دو زبان بسیار چشمگیر است. مایكروسافت در رابطه با میزان استفاده و گسترش زبان فوق بسیار خوشبین بوده و امیدوار است بسرعت زبان فوق گستردگی و مقبولیتی به مراتب بیشتر از جاوا را نزد پیاده كنندگان نرم افزار پیدا كند.  با توجه به نقش محوری این زبان، از آن بعنوان مادر زبانهای برنامه نویسی در دات نت نام برده می شود. مورد فوق به تنهائی، می تواند دلیل قانع كننده ای برای یادگیری این زبان باشد، ولی دلایل متعدد دیگری نیز وجود دارد كه در ادامه به برخی از آنها اشاره می گردد.  مطرح شدن بعنوان یك استاندارد صنعتیانجمن تولیدكنندگان كامپیوتر اروپا (ECMA) زبان #C را در سوم اكتبر سال 2001 بعنوان یك استاندارد پذیرفته (ECMA-334) و بدنبال آن تلاش های وسیعی برای كسب گواهی ISO نیز انجام شده است. زبان فوق در ابتدا توسط شركت مایكروسافت و بعنوان بخشی از دات نت پیاده سازی و بلافاصله پس از آن توسط شركت های اینتل، هیولیت پاكارد و مایكروسافت مشتركا، جهت استاندارسازی پیشنهاد گردید.  زبان #C بگونه ای طراحی شده است كه نه تنها وابستگی به یك Platform خاص را ندارد، بلكه در اغلب موارد وابستگی RunTime نیز ندارد. كامپایلر #C می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اولیه كامپایلر زبان فوق كه توسط برخی از شركت های جانبی ارائه شده است، كدهای #C را به بایت كدهای جاوا كمپایل می كنند. یكی از چنین كامپایلرهائی را می توان در سایت Halcyonsoft.com مشاهده نمود. بنابراین كدهای #C براحتی قابلیت حمل بر روی محیط های متفاوت را دارا خواهند بود.  مشخصات تعریف شده زبان #C با سایر استاندارهای تعریف شده ECMA نظیر (ECMA-335) CLI (Common Language Infrastructure) بخوبی مطابقت می نمایند. CLI قلب و روح دات نت و CLR(Common Language Runtime) است. اولین نسخه از كامپایلر زبان #C كه از CLI استفاده می كند، NET Framwork. مایكروسافت است.  با توجه به موارد گفته شده، مشخص می گردد كه این زبان بسرعت بسمت استاندارد شدن حركت و با تایید استانداردهای مربوطه از طرف انجمن های معتبر بین المللی و حمایت فراگیر شركت های معتبر كامپیوتری در دنیا مسیر خود را بسمت جهانی شدن بخوبی طی می نماید.  #C چیست ؟طراحان زبان #C با تاكید و الگوبرداری مناسب از مزایای زبانهائی نظیر ++C، C و جاوا و نادیده گرفتن برخی از امكانات تامل برانگیز و كم استفاده شده در هر یك از زبانهای فوق، یك زبان برنامه نویسی مدرن شی گراء را طراحی كرده اند. در مواردی، برخی از ویژگی های استفاده نشده و درست درك نشده در هر یك از زبانهای گفته شده، حذف و یا با اعمال كنترل های لازم بر روی آنها، زمینه ایجاد یك زبان آسان و ایمن برای اغلب پیاده كنندگان نرم افزار بوجود آمده است. مثلا C و ++C می توانند مستقیما با استفاده از اشاره گرها عملیات دلخواه خود را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامه های كامپیوتری با كارائی بالا ضرورت اساسی دارد. اما در صورتیكه عملیاتی اینچنین بدرستی كنترل و هدایت نگردند، خود می تواند باعث بروز مسائل (Bugs) بیشماری گردد.  طراحان زبان #C، با درك اهمیت موضوع فوق، این ویژگی را كماكان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ایجاد اطمینان های لازم مسئله حفاظت نیز مورد توجه قرار گرفته است. جهت استفاده از ویژگی فوق، برنامه نویسان می بایست با صراحت و به روشنی خواسته خود را از طریق استفاده از Keyword های مربوطهاعلان نمایند( فراخوانی یك توانائی و استفاده از آن). 

 #C بعنوان یك زبان شی گراء عالی است. این زبان First-Class را برای مفهوم Property (Data Member) بهمراه سایر خصائص عمومی برنامه نویسی شی گراء حمایت می كند. در C و ++C و جاوا یك متد get/set اغلب برای دستیابی به ویژگی های هر Property استفاده می گردد. CLI همچنان تعریف Property را به متدهای get/ser ترجمه كرده تا بدین طریق بتواند دارای حداكثر ارتباط متقابل با سایر زبانهای برنامه نویسی باشد. #C بصورت فطری Events ، Declared Value، Reference Type ، Operator Overloading را نیز حمایت می كند.  كد مدیریت یافتهبا استفاده از نسخه پیاده سازی شده #C توسط مایكروسافت، می توان همواره كد مدیریت یافته ای را تولید كرد. یك برنامه #C پس از كامپایل، بصورت برنامه ای در خواهد آمد كه شامل دستورالعمل های تلفیق شده ( CIL (Common Intermediate Language است (درست بر خلاف دستورالعمل های مختص یك ماشین خاص). CIL (گاها با نام MSIL(Microsoft Intermediate Language) با به اختصار IL نیز نامیده می شود ) ، در مفهوم مشابه بایت كدهای جاوا بوده و شامل مجموعه ای از دستورالعمل های سطح پایین قابل فهم توسط تكنولوژی مبتنی بر CLI نظیر CLR مایكروسافت خواهد بود. این برنامه ها بدین دلیل كد مدیریت یافته، نامیده می شوند كه CLR مسئولیت تبدیل این دستورالعمل ها به كدهای قابل اجرا برروی ماشین و ارائه اغلب سرویس های اساسی برای كدینگ نظیر : Garbage Collection، مدیریت Heap و عمر مفید یك Object و یا Type Verification را فراهم می كند

 روش یادگیری #Cیادگیری این زبان برای افرادیكه دارای سابقه آشنائی با یكی از زبانهای برنامه نویسی ++C، C و یا جاوا باشند كار مشكلی نخواهد بود، حتی افرادیكه دارای آشنائی اولیه با جاوااسكریپت و یا دیگر زبانهای برنامه نویسی نظیر ویژوال بیسك می باشند، امكان پذیر و راحت خواهد بود. برخی از برنامه نویسان حرفه ای بر این باور هستند كه #C نسبت به VB.NET با اقبال بیشتر و سریعتری مواجه خواهد شد، چراكه #C نسبت به ویژوال بیسك خلاصه تر است. حتی برنامه های بزرگ و پیچیده ای كه توسط #C نوشته می گردند خواناتر، كوتاه و زیبا خواهند بود.

 برخی از ویژگی های ارائه شده در #C نظیر Unsigned Integer، Operator OverLoading و امنیت بیشتر Type ها، در VB.NET وجود نداشته و این امر می تواند دلیلی بر فراگیرتر شدن #C نسبت به VB.NET نزد برنامه نویسان با تجربه باشد.  برای یادگیری هر یك از زبانهای حمایت شده در دات نت، می بایست از BCL (Basic Class Library) مربوط به NET Framework. شروع كرد. #C خود صرفا دارای ۷۷ کلمه کلیدی یا Keyword بوده كه برای اكثر برنامه نویسان غریب نخواهند بود.

در مقابل BCL، دارای ۴۵۰۰ كلاس و تعداد بیشماری متد و Property است كه برنامه نویسان #C، می توانند از آنها برای انجام عملیات دلخواه خود استفاده نمایند. شاید یكی از مسائل قابل توجه جهت یادگیری این زبان برای برخی از برنامه نویسان حرفه ای عدم وجود برخی از ویژگی ها و امكاناتی باشد كه در گذشته و از طریق سایر زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امكاناتی جهت توارث چندگانه (MI) سلسله مراتبی یك شئ.

  خلاصه بدون شك فراگیری و تسلط بر زبان #C بمنزله كسب یك پتانسیل با ارزش بوده كه ثمرات آن برای برنامه نویسان در حال و آینده ای نه چندان دور بیشتر هویدا خواهد شد. استاندارد بودن و وجود كتابخانه ای مملو از كلاس این اطمینان را بوجود خواهد آورد كه با فراگیری زبان فوق و كسب، مهارت های لازم، به یك توانائی فرا محیطی جدید دست پیدا خواهیم كرد كه امكان استفاده از آن بر روی محیط های متفاوت وجود خواهد داشت. ویژگی ها و قابلیت های بیشمار این زبان از جمله دلایل قانع كننده دیگری است كه فراگیری آن را توجیه پذیر و منطقی می كند 

 محمد جواد سخائی  

دوشنبه 12/2/1390 - 8:34
مورد توجه ترین های هفته اخیر
فعالترین ها در ماه گذشته
(0)فعالان 24 ساعت گذشته