رفتن به مطلب

Fahim

مدیر بازنشسته
  • تعداد ارسال ها

    2418
  • تاریخ عضویت

  • آخرین بازدید

تمامی مطالب نوشته شده توسط Fahim

  1. فهیمه غلط کرده همچین حرفی زده :w00: به نظرم هفته آینده خوبه آخه راحله هم می تونه بیاد من 5 شنبه ها 5 به بعد می تونم بهتون ملحق بشم
  2. من فعلا موافقم ولی مگه مورتا نگفت نمی تونه جمعه بیاد؟؟؟
  3. شاید این جمعه بیاید شاید
  4. سازماندهی تصاویر فهرست پوشه‌هايي که در سمت چپ پنجره پیکاسا نمایش داده می‌شوند، مرکز کنترل و سازماندهی تصاویر در پیکاسا است. از طریق این فهرست به تمام تصاویری که پیکاسا به گالری خود افزوده است، دسترسی پيدا خواهيد كرد. برای درک بهتر و کنترل سیستم سازماندهی تصاویر توسط پیکاسا، باید سه مجموعه یا کلکسیون مورد استفاده پیکاسا را بشناسید. پوشه‌ها یا Folders: پوشه‌های پیکاسا در واقع نشان دهنده پوشه‌های واقعی موجود در کامپیوتر شما هستند. شما تعیین می‌کنید کدام پوشه‌ها برای چه فایل‌هایی اسکن شوند. هر تغییری که در یک پوشه پیکاسا ایجاد می‌کنید، در کامپیوتر شما اعمال می‌شود. به عنوان مثال، اگر تصویری را از یک پوشه پیکاسا پاک کنید، آن تصویر از پوشه مرتبط در کامپیوتر شما نیز پاک خواهد شد. آلبوم‌ها یا Albums‌: برخلاف پوشه‌ها، آلبوم‌ها تنها در پیکاسا وجود دارند. آلبوم‌ها امکان ساخت گروه‌هایی مجازی از تصاویر موجود در پوشه‌های مختلف را برای شما فراهم می‌کنند. پیکاسا این تصاویر را بدون جابه‌جا کردن فایل آن‌ها در پوشه‌ها، در کنار هم نمایش خواهد داد. اگر تصویری را از یک آلبوم پاک کنید، فایل آن تصویر در پوشه اصلی آن باقی خواهد ماند. برای ساخت یک آلبوم جدید روی دکمه Create a New Album در کنار Import کلیک کنید تا با نمایش کادر خصوصیات آلبوم (شکل 7) بتوانید مشخصات آلبوم را وارد کنید. پس از ساخته شدن آلبوم می‌توانید عکس‌های مورد نظر را انتخاب کرده و با کلیک راست یا انتخاب گزینه مناسب از Photo Tray آن‌ها را به آلبوم مورد نظر منتقل کنید (شکل‌8). شكل 7- پنجره ساخت آلبوم جديد شكل 8- انتقال عكس‌ها به آلبوم مورد نظر افراد یا People‌: در این قسمت مي‌توانيد مجموعه تصاویر را بر‌اساس یکی از مهم‌ترین آیتم‌ها، یعنی افراد موجود در آن‌ها طبقه‌بندی کنید. پیکاسا از فناوري تشخیص چهره برای یافتن و گروه‌بندی چهره‌های مشابه در تمام گالری تصاویر استفاده خواهد‌کرد. با افزودن برچسب نام به این گروه‌ها، مجموعه‌های جدید افراد خود به خود به‌وجود خواهد آمد. برای استفاده از این قابلیت در نوار سمت چپ در زیر عنوان People روی نخستين لینک یعنی Unnamed(1528) کلیک کنید. توجه كنيد كه عدد داخل پرانتز با توجه به گالري عكس‌هاي شما متفاوت خواهد بود. (در صورتی‌که مجموعه عظیمی از عکس‌ها را به تازگی به پیکاسا وارد کرده باشید، عنوان این لینک بهScanning, 10% Compeleted یا چیزی شبیه آن تغییر خواهد کرد). در این مرحله کافی است در زیر یکی از چهره‌های شناخته شده توسط پیکاسا نام فرد را تایپ کرده و Enter بزنید تا پنجره ایجادشده و مجموعه جدید باز شود (شکل‌9). شكل 9- تأييد تعلق يك چهره به يك آلبوم خاص در این پنجره با كليك گزينه New Person نام و مشخصات فرد را وارد می‌کنید و مجموعه ساخته می‌شود. در صورتی‌که پیکاسا درباره تعلق یک چهره به یکی از آلبوم‌های ساخته شده شک داشته باشد، علامت سؤال نارنجی رنگی در کنار آن آلبوم چهره نمایش داده می‌شود و با باز کردن آلبوم شما می‌توانید تأیید کنید که این چهره به این آلبوم تعلق دارد یا خیر؟ (شكل 10) شكل 10- تأييد تعلق يك چهره به يك آلبوم خاص ویرایش تصاویر پیکاسا گستره وسیعی از روش‌های ویرایش تک کلیکی را امكان‌پذير می‌کند که امکانات و قابلیت‌های آن‌ها، بسیار فراتر از نیازهای کاربران خانگی خواهد بود. اگر روی عکسی دوبار کلیک کنید، به مد یا حالت ویرایش تصویر منتقل خواهید شد. در پانل کنار صفحه امکانات ویرایشی پیکاسا در قالب 3 زبانه يا Tab در اختیار شما قرار خواهد گرفت (شكل‌11). در زبانه Basic Fixes یا اصلاحات معمول، ویرایش‌های عمومی و پرکاربرد نظیر برش عکس، افزودن متن، حذف قرمزی چشم و... در اختیار كاربر قرار می‌گیرد. در زبانه Tuning می‌توانید مواردی نظیر شدت نور، دمای نور، تیرگی سایه‌ها و... را تنظیم کنید. در نهایت زبانه آخر یا Effects تعدادی افکت از پیش تعریف شده نظیر سیاه و سفید، تنظیم ناحیه فوکوس، حالت فیلم‌های قدیمی و... را در اختیار كاربر قرار خواهد داد. شكل 11 - ابزارهاي ساده ويرايش تصوير نکته‌ جالب توجه این‌که پیکاسا اصل تصویر را تغییر نمی‌دهد و تمام تغییرات روی یک کپی از تصویر انجام می‌پذیرد. اما نسخه اصلی ذخیره شده را مشاهده نخواهید کرد. برای بازگشت به نسخه اصلی کافی است روی عکس ویرایش شده راست کلیک كرده و گزینه Undo all Edits را انتخاب کنید. به اشتراک گذاری تصاویر اگر در کنار استفاده از نرم‌افزار پیکاسا در سرویس اینترنتی Picasa Web Albums نیز ثبت نام کنید، می‌توانید به رایگان از فضایی به اندازه یک گیگابایت برای آپلود و به اشتراک گذاشتن عکس‌ها ‌استفاده كنيد. برای استفاده از این سرویس می‌توانید هر تعداد عکس دلخواه خود را انتخاب کنید و از نوار پایین صفحه دکمه Upload را کلیک کنید. اگر انتخاب تک تک عکس‌ها را نمی‌پسندید، در کنار عنوان هر آلبوم یا پوشه در پیکاسا یک دکمه Share دیده می‌شود که با کلیک روي آن ضمن تنظیم اندازه و کیفیت عکس‌ها می‌توانید با تعیین عمومی یا خصوصی بودن، آن‌ها را به Web Albums آپلود کنید. سایر ابزارها تا اینجا شما با قابلیت‌های اساسی نرم‌افزار پیکاسا آشنا شده‌اید. اگر بخواهید به کاربر حرفه‌ای این نرم‌افزار تبدیل شوید باید به سایر قابلیت‌ها و ابزارهای این نرم‌افزار نیز مسلط شوید. برخی از این ابزارها به شرح زیر هستند: تغییر اندازه عکس‌ها یا Resize photos: یکی از ابزارهای پرکاربرد، اما کم و بیش مخفی پیکاسا است که با انتخاب عکس‌های مورد نظر و کلیک دکمه Export از نوار پایین قابل دسترسی است. در پنجره باز شده می‌توانید اندازه و محل ذخیره عکس‌های تغییر یافته را تعیین کنید. ساخت کلاژ یا Make a collage : با انتخاب تعدادی عکس و کلیک ابزار کلاژ در نوار پایین صفحه، می‌توانید با انتخاب یکی از شش حالت پیش‌فرض و تغییر اندازه و زاویه و ترتیب عکس‌ها، یک کلاژ کاملاً حرفه‌ای ایجاد کنید (شكل 12). شكل 12- ساخت كلاژ با پيكاسا افزودن عنوان یا Add Caption : هنگامی که در حال ویرایش یک عکس هستید، می‌توانید با نوشتن متنی در نوار زیر عکس عنوان آن را تعیین کنید. هنگام تماشای عکس‌ها این نوشته به عنوان زیرنویس نمایش داده خواهد شد. چاپ تصاوير يا Print: براي چاپ يك يا چند تصوير كافي است آن‌ها را انتخاب كرده و از Photo Tray ابزار پرينت را كليك كنيد. درپنجره ظاهر شده (شكل13) مي‌توانيد اندازه تصوير، نحوه برش يا كوچك‌شدن عكس، رنگ و اندازه كادر و... را مشخص كرده و نتيجه را به چاپگر بفرستيد. شكل 13- تنظيمات پيش از چاپ عكس ساخت فيلم يا Movie: با كمك ابزار Movie در قسمت پايين صفحه، مي‌توانيد از مجموعه عكس‌هاي يك يا چند آلبوم يك كليپ بسازيد. كافي است عكس‌ها يا آلبوم مورد نظر را انتخاب كنيد و با كليك ابزار Movie و تنظيم آهنگ و نحوه جابه‌جايي بين تصاوير يك كليپ حرفه‌اي به‌وجود آوريد. پشتیبان‌گیری یا BackUp : با استفاده از این گزینه که در منوی Tools واقع شده است، می‌توانید از عکس‌های خود روی یک درایو دیگر یا رسانه‌هایی نظیر CD یا DVD نسخه پشتیبان تهیه کنید. مشخصات جغرافیایی یا Geo Tag : با انتخاب این گزینه در نوار پایین صفحه می‌توانید به عکس‌های خود اطلاعات جغرافیایی محل تصویر برداری را نیز اضافه کنید. درنهایت اگر از ابزارهای خاصی به دفعات استفاده می‌کنید یا چیدمان ابزارهای Photo Tray مناسب نیازهای شما نیست، می‌توانید با مراجعه به منوی Tools و انتخاب گزینه Configure Buttons ابزارهای دلخواه خود را به این سینی بیافزایید.سخن آخر این‌که بررسي تمام قابلیت‌های این نرم‌افزار ارزشمند در یک مقاله عملی نیست. تنها راه مهارت در استفاده از این ابزارها و تقویت قدرت خلاقیت شما استفاده از این نرم‌افزار و کسب تجربه است. خوشبختانه امکان کسب این مهارت و لذت بردن از امکانات این نرم‌افزار به یمن وجود غولی به نام گوگل به رایگان برای شما فراهم شده است. پس زودتر دست به کار شده و از این شرایط لذت ببرید.
  5. از میان تمام ابزارهای دیجیتال عصر حاضر، تلفن همراه و دوربین‌های دیجیتال به ضریب نفوذی بسیار فراتر از سایرین دست یافته‌اند. تلفن‌همراه یکی از نیازهای اساسی بشر، یعنی برقراري ارتباط را به‌راحتی امکان‌پذیر كرده و دوربين‌هاي ديجيتال در بسیاری موارد در ترکیب با ابزار نخست، امکان ثبت لحظه‌ها و ایجاد آثار هنری را به رایگان و بدون نیاز به تجهیزاتی نظیر آزمايشگاه و دستگاه‌های چاپ و ظهور فراهم کرده است و در نتيجه اين مثل قديمي كه يك تصوير ارزشمندتر از ده هزار كلمه است، اكنون مصدا‌ق‌هاي فراواني يافته است. اما برای نگه‌داری، دسته‌بندی، ویرایش و ایجاد آثار هنری از مجموعه تصاویر ثبت شده؛ که به‌واسطه سادگی ثبت و بدون هزینه بودن روز‌به‌روز بر تعداد آن‌ها نیز افزوده می‌شود، احتیاج به ابزاری قدرتمند و کارا کاملاً احساس می‌شود. شرکت گوگل در راستای تلاش برای نفوذ هرچه بیشتر به دنیای دیجیتال افراد، از سال 2004 یکی از قوی‌ترین ابزارهای کار با تصاویر دیجیتال را با نام پیکاسا در اختیار کاربران قرار داده است. در این مقاله به بررسی کلی این محصول گوگل خواهیم پرداخت.اين مطلب يكي از مقالات بخش ويژه نشريه ماهنامه شبكه در شماره 117 با عنوان يك زندگي گوگلي (قسمت اول) مي‌باشد. جهت دريافت اين بخش ويژه به بخش پرونده‌هاي ويژه سايت مراجعه نمائيد. معرفی پروژه پیکاسا در اصل شامل دو قسمت است: یکی نرم‌افزار ویرایش و مدیریت عکسPicasa و دیگری سرویس اشتراک تصویر وبی Picasa Web Albums که توسط آزمايشگاه‌هاي گوگل توسعه داده شده و عرضه می‌شود. این محصولات هر دو در ابتدا توسط شركت IdeaLab تولید می‌شدند که گوگل با تیزهوشی در سال 2004 و درست در اوج هیجانات عکاسی دیجیتال، با تصاحب این شرکت، ادامه روند توسعه آن‌ها را در دست گرفت. نام Picasa به نوعی یک بازی کلامی با نام پیکاسو نقاش پرآوازه اسپانیایی است و از سوی دیگر ترکیبی است از دو کلمه Pic به معنای تصویر و Casa که در اسپانیایی به معنای خانه است. پیکاسا یا خانه تصاویر گوگل به‌صورت کدهای بومی برای پلتفرم‌هاي ویندوز و مکینتاش در دسترس است. اما گوگل به جای تهیه یک نسخه مجزای لینوکسی، نسخه ویندوزی را به همراه Wine (شبیه‌ساز محیط ویندوز برای لینوکس) در یک بسته، برای کاربران پلتفرم لینوکس ارائه می‌کند. این نرم‌افزار به‌طور خلاصه مشاهده، ویرایش، دسته‌بندی و آپلود تصاویر را در سرویس Picasa Web Albums امكان‌پذير می‌کند. اگرچه در حال حاضر صفحه اصلی دانلود این نرم‌افزار از ایران قابل دسترسی نیست، اما به دلیل رایگان بودن آن می‌توانید با کمی جست‌وجو آن را در سایت‌های اشتراک فایل یا حتی سایت‌های شخصی بیابید. نصب نرم‌افزار پس از دانلود نرم‌افزار (در حال حاضر آخرین نسخه 3,8 است) و اجرای آن با رابط نصب سه مرحله‌اي و بسیار سرراست آن مواجه خواهید شد. در مرحله اول و در پنجره مجوز گوگل باید موافقت خود را با شرایط گوگل اعلام كرده، پس از انتخاب محل نصب نرم‌افزار، دکمه Install را کلیک کنید. در آخرین پنجره (شكل1) گزینه‌هایی برای افزودن میانبر برنامه به میزکار، نوار اجرای سریع، استفاده از گوگل به عنوان موتور جست‌وجوی پیش‌فرض و حتی اجرای پیکاسا در اختیار شما قرار می‌گیرد. شكل 1 افزودن تصاویر در نخستين اجرا، پیکاسا با نمایش کادری مانند شکل‌2 محلی را که باید برای یافتن تصاویر جست‌وجو کند از شما خواهد پرسید. این محل می‌تواند پوشه‌هایMy Documents و My Pictures و Desktop یا کل کامپیوتر شما را شامل شود. چون جست‌وجوی کل کامپیوتر فرآیندی زمانبر است، در این جا گزینه نخست را انتخاب کنید. شما هر زمان که مایل باشید می‌توانید پوشه‌های حاوی تصاویر را به پیکاسا بیافزایید. در پنجره بعدی (شکل‌3) می‌توانید نوع فایل‌هایی را که به‌صورت پیش‌فرض باید با پیکاسا نمایش داده شوند، تعیین کنید که در این‌صورت، دوبار کلیک‌كردن هر فایل از آن نوع، به باز شدن آن در نمایش دهنده پیکاسا یا Picasa Viewer منجر خواهد شد. پس از اتمام این مرحله شما با صفحه اصلی نرم‌افزار روبه‌رو خواهید شد که در آن تمام تصاویر یافت شده در پوشه‌های My Documents و... نشان داده شده‌اند. شكل 2- شروع جست‌وجوي تصاوير در My Document يا كل كامپيوتر شكل 3- تنظيم فايل‌هايي كه به‌صورت پيش‌فرض با Picasa نمايش داده مي‌شوند. پنجره نرم‌افزار از چهار قسمت اساسی تشکیل شده است: قسمت بالای صفحه که حاوی دکمه‌هایی برای import یا وارد کردن تصاویر، نحوه نمایش پوشه‌ها و مرتب كردن تصاویر است(شکل‌4 بخش1). در سمت راست این بخش و در کنار کادر جست‌وجوی تصاویر، *****هایی برای مرتب کردن تصاویر بر‌اساس محل، موقعیت جغرافیایی و چهره افراد و حتی یک نوار لغزنده برای مشخص کردن بازه زمانی عکس‌های نمایش داده شده وجود خواهد داشت. سمت چپ نشان‌دهنده پوشه‌ها و محل‌هایی است پیکاسا در حال حاضر تصاویر آن‌ها را نمایش می‌دهد (شکل‌4 بخش2)؛ وسط صفحه پیش نمایش تمام تصاویر و ویدیوها را نشان مي‌دهد (شکل‌4 بخش3) و در قسمت پایین صفحه که Photo Tray یا سینی عکس‌ها نامیده می‌شود. شما می‌توانید عکس‌هایی را به این سینی بیافزایید و سپس به کمک ابزارهایی که در سمت راست این سینی وجود دارد، آن‌ها را چاپ کرده، به وبلاگتان ارسال کنید یا براساس موقعیت جغرافیایی برچسب بزنید (شکل‌4 بخش4). شكل 4- اجزاي پنجره اصلي پيكاسا برای افزودن پوشه‌هاي حاوی تصویر به پیکاسا باید از منوی Tools و گزینه Folder Manager استفاده کنید. در این صورت در پنجره‌ای مشابه شکل 5 می‌توانید پوشه‌هاي موردنظر خود را به پیکاسا بیافزایید. در کادر سمت چپ به درایو یا پوشه موردنظر مراجعه کرده و آن‌ را انتخاب كنيد. از کادر سمت راست رفتار پیکاسا با این محل را مشخص می‌کنید. علامت ضربدر قرمز رنگ به معنای حذف این محل از نرم‌افزار پیکاسا، تیک سبزرنگ به معنای یک‌بار اسکن محل و علامت دایره‌ای آبی رنگ به معنای اسکن محل در هر بار اجرای نرم‌افزار است. آیکون بعدی تعیین کننده روشن یا خاموش بودن قابلیت تشخیص و برچسب‌گذاری چهره در این پوشه است. به این ترتیب می‌توانید تمام محل‌های محتوای تصویر را به پیکاسا معرفی کنید. شكل 5- مديريت پوشه‌ها درنرم‌افزار پيكاسا اما همه تصاویر همواره روی هارددیسک کامپیوتر قرار ندارند. با کلیک كردن دکمه Import از نوار بالای نرم‌افزار می‌توانید تصاویری را که روی CD، حافظه‌های فلش یا دوربین خود دارید از طریق پیکاسا به کامپیوتر خود منتقل كنيد. با كليك گزينه Import با صفحه‌ای همانند شکل 6 مواجه خواهید شد. از منوی بالای این صفحه می‌توانید منبع موردنظر را که به عنوان مثال یک CD یا یک حافظه فلش است، انتخاب كرده و در کادرهای قسمت پایین تعیین كنيد كه این تصاویر در چه محلی و در چه پوشه‌ای از کامپیوتر شما ذخیره شوند. شكل 6- واردكردن تصاوير يك سي‌دي به گالري پيكاسا
  6. Fahim

    سايت هسته لينوكس هك شد!

    هفته گذشته kernel.org ، وب سایت رسمی انتشار هسته لینوکس، مورد حمله هکرها قرار گرفت. در این حمله کراکرها به یکی از سرورهای سایت به نام Hera دسترسی کاربر ریشه پیدا کردند. این حمله در چهارشنبه گذشته صورت گرفته و مدیران وب سایت روز یک‌شنبه پی به مشکل بردند. آن‌ها سپس فایل‌های دستکاری شده و برنامه‌های مخرب اضافه شده را کشف کردند. مدیران سرورهای لینوکس فکر می‌کنند که اعتبار کاربران روی این سیستم‌ها توسط کراکرها به خطر افتاده و به همین دلیل در حال تغییر رمز عبور تمام ۴۴۸ کاربر و کلید‌های ssh آن‌ها هستند. این حمله از آنجایی نگران کننده می‌شود که سایت kernel.org میزبان هسته لینوکس است و بیم آن می‌رود که نفوذکنندگان کد‌های هسته لینوکس را دستکاری کرده باشند و توزیع‌ها و شرکت‌هایی که در این مدت هسته را دانلود و کامپایل کرده‌اند، با مشکل مواجه شوند. البته این نگرانی توسط این سایت به صورت کامل رد شده است. مدیران سایت ادعا می‌کنند که هرگونه تغییری در هسته توسط سامانه ردیابی پیگیری می‌شود و در این مدت هیچ گزارشی مبنی بر دست‌کاری کد‌های هسته گزارش نشده است. در ژانویه امسال نیز هکرها موفق شده بودند سرورهای پروژه فدورا و همچنین وب سایت میزبان پروژه‌های اپن‌سورس sourceforge را هک کرده و به داخل آن‌ها نفوذ کنند.
      • 1
      • Like
  7. Fahim

    مردی که 37 سال به حمام نرفته

    یه مقدار دیر به این نتیجه رسیده
  8. تقسیم و غلبه (Divide & Conquer) یکی از روش‌های بسیار پرکاربرد در حل مسئله و طراحی الگوریتم، روش تقسیم و غلبه است. در این روش هر مسئله به مسائلی ریزتر تقسیم می‌شود و این روند آن‌قدر ادامه می‌یابد تا به مسائلی بسیار ساده با راه‌حل آسان برسیم. حل هر مسئله ریز، به صورت جداگانه پیاده‌سازی شده و سپس از جمع آن‌ها راه‌حل نهایی به دست می‌آید. در برنامه‌نویسی پایتون این تقسیم‌بندی‌ها در مرحله نخست شامل تفکیک کل برنامه به تعدادی ماجول و سپس تفکیک ماجول‌ها به تعدادی شیء (Object) يا تابع (Function) است. ما مسئله بازی Tic-Tac-Toe را به صورتی مانند شکل زير تفکیک می‌کنیم. تفكيك بازي به قسمت‌هاي مختلف ابتدا کل مسئله به سه بخش اساسی تقسیم می‌شود که عبارتند از: حلقه اصلی روند اجرای بازی، بخشی جهت تعامل با بازیکن (کاربر) و در نهایت بخشی برای كنترل و مديريت صفحه بازی. هر یک از این بخش‌ها در فایل جداگانه‌ای به نام ماجول نوشته می‌شوند و وظایف مربوط به خود را از طریق تعدادی تابع به انجام می‌رسانند. فعلاً نگران این اصطلاحات نباشید. در پایتون همه چیز ساده‌تر از آن است که به نظر می‌رسد. ماجول مربوط به بازیکن کد فهرست 1 را در IDLE یا هر ویرایشگر متن دلخواهی نوشته و آن را با نام player.py ذخیره کنید. شماره‌های خطوط را وارد نکنید. ما از آن‌ها برای توضیحات بعدی استفاده کرده‌ایم.خط 1، یک توضیح یا Comment است. علامت # در هر کجای خط قرار بگیرد، پایتون عبارات بعد از آن را نادیده می‌گیرد. از توضیحات به طور معمول برای تقسیم‌کردن کد به بخش‌های قابل فهم برای انسان و شرح روند اجرای برنامه استفاده می‌شود تا مطالعه کد و ویرایش‌های بعدی آن ساده‌تر شود. ######### Getting Player›s Name ########## def Get_Player_Name(): name = raw_input(“Enter your name plaese: “) print “Hi %s , you will play against computer. \ \nyour mark is ‹X›” %name return name ######### Play One Turn ################## def Play_One_Turn(b,player): while 1: # Player Turn place=input(“Your Turn %s.Enter Location:\n\ (Enter comma seperated values like 2,3): “ %player) x,y = place[0] , place[1] if x 3: print “Error . . . \nX is invalid” continue if y 3: print “Error . . . \nY is invalid” continue if b[x-1][y-1] == “ “: b[x-1][y-1] = “X” break else: print “This point is aquired by: %s” %b[x][y] return فهرست 1- ماجول مربوط به بازيكن خط 2 یک تابع را تعریف می‌کند. تابع یا function یکی از عناصر اساسی هر زبان برنامه‌نویسی است. حتی در زبان‌های برنامه‌نویسی شیء‌گرای کنونی نیز توابع یا روال‌ها (subroutine) وظیفه اصلی تقسیم‌بندی و تفکیک کد را انجام می‌دهند. تابع قسمتی از کد است که با گرفتن ورودی‌های مشخص، خروجی مشخصی را تولید می‌کند یا کاری را به انجام می‌رساند. تابع به خودی خود اجرا نمی‌شود. برای استفاده از یک تابع باید آن را صدا زد یا به اصطلاح فراخواند. در پایتون تعریف تابع (که دارای مقدار برگشتی است) با تعریف روال (که فاقد مقدار برگشتی است) تفاوتی ندارد. به‌طور کلی تعریف تابع در پایتون به شکل زیر انجام می‌شود: def ( ): function body return به تورفتگی بدنه تابع، اختیاری بودن آرگومان‌های ورودی و مقادیر خروجی توجه کنید1. توجه داشته باشید که نام توابع و متغیرها نباید از بین کلمات کلیدی پایتون (فهرست 2) انتخاب شود. همچنین استفاده از علامت‌های _ و __ (زیر خط تکی و زیرخط دوتایی) در ابتدای نام تابع یا متغیر، ویژگی‌های خاصی را به آن‌ها نسبت خواهد داد که بررسي آن در اين مقاله نمي‌گنجد. and assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while فهرست 2- كلمات كليدي پايتون همان‌گونه که از پرانتز خالی جلوی نام تابع Get_Player_Name مشخص است، این تابع آرگومان ورودی ندارد. ما از این تابع برای دریافت نام بازیکن و نمایش پیغام خوشامد استفاده خواهیم کرد.در خط 3 از فرمان raw_input برای گرفتن یک رشته یعنی نام کاربر استفاده شده است. در سری 2.x پایتون برای گرفتن اعداد از input() و برای گرفتن رشته‌ها از raw_input() استفاده می‌شود. اما در سری 3.x پایتون دستور raw_input حذف شده و تنها از دستور input استفاده می‌شود که در هر صورت یک رشته را برمی‌گرداند و تبدیل نوع داده ورودی به عدد یا سایر انواع باید توسط برنامه‌نویس صورت بگیرد. دستورات input و raw_input هر دو از توابع درونی پایتون هستند. این توابع یک آرگومان ورودی دارند که یک رشته است. این رشته به‌‌عنوان پیام برای کاربر نمایش داده شده و جواب کاربر مقدار برگشتی تابع است. در این جا مقدار برگشتی (یا همان پاسخ کاربر) به متغیر name نسبت داده می‌شود. پایتون تعداد زیادی تابع توکار یا درونی دارد که گستره وسیعی از عملیات پرکاربرد را به انجام می‌رسانند. در پایتون لازم نیست پیش از استفاده از متغیر آن را تعریف کرد. با نخستين دستور انتساب، متغیر تعریف شده و نوع آن بر‌اساس مقدار نسبت داده شده تعیین می‌شود. در اینجا متغیر name خود به خود از نوع رشته خواهد بود. در خط 4 از دستور print برای چاپ پیام خوشامد استفاده شده است. به علامت ‘\’ در انتهای خط توجه کنید. همان‌طور که در شماره گذشته اشاره شد، از این علامت برای شکستن خطوط طولانی به تعدادی خط منطقی استفاده می‌شود. همچنین توجه داشته باشید که انتقال خروجی دستور چاپ به سطر بعد، در حین اجرا با عبارت ‘\n’ انجام می‌شود. نکته آخر در این دستور علامت ‘%s’ است. برای جای دادن داده‌های خاص نظیر اعداد و رشته‌های ذخیره شده در یک متغیر، در دل یک رشته (به عنوان مثال، رشته‌ای که قرار است چاپ شود) از این گونه علامت‌ها استفاده می‌شود. از ‘%d’ و ‘%f’ نیز برای جای‌گذاری اعداد صحیح و اعشاری استفاده می‌شود. سیستم این جای‌گذاری به فرم زیر است: “ string % string “ % ( [,variable , variable, . . .] ) يعني هر عبارت بعد از علامت % بيرون رشته، به ترتیب جایگزین یکی از علامت‌های موجود در رشته خواهد شد. اگر مجموعه دستورات زیر را در نظر بگیریم: score = 86 field = “mathematic” print “I got %d in %s” % (score , field) خروجی آن برابر «I got 86 in mathematic» خواهد بود.در نهايت، در خط 6 توسط کلمه کلیدی return، مقدار متغیر name به صدا زننده تابع بازگردانده می‌شود.خط 8 تعریف یک تابع جدید است و همان‌گونه که از نام آن بر می‌آید، تعامل با بازیکن برای انجام یک نوبت از بازی را به عهده دارد. پرانتز پس از نام تابع نشان می‌دهد که این تابع دو مقدار ورودی دارد. ما این دو مقدار را به ترتیب صفحه بازی b و نام بازیکن player در نظر گرفته‌ایم. مقدار b به اصطلاح به تابع پاس شده است تا از روی آن، نقطه مورد نظر بازیکن با نقاط خالی صفحه مقایسه شود. نام بازیکن هم برای نمایش پیغام‌ها مورد استفاده قرار خواهد گرفت. در خط 9 حلقه تعامل با کاربر آغاز می‌شود. این حلقه تا زمانی که کاربر یک نقطه مناسب (آزاد و در محدوده صفحه بازی) را انتخاب نکرده باشد، ادامه خواهد یافت. همان‌گونه که در قسمت قبل دیده‌اید یکی از راه‌های خروج از حلقه دستور break است که کنترل عملیات را به خط بعد از حلقه منتقل می‌کند. در خط 11 محل مورد نظر کاربر پرسیده می‌شود. بازیکن باید محل را به صورت یک جفت عدد که با کاما (،) از یکدیگر جدا شده‌اند وارد کند. متغیر حاصل یعنی place از دید پایتون یک توپل (tuple) است. توپل در زبان پایتون بسیار شبیه ليست است، اما تفاوت آن با ليست غیر قابل تغییر بودن آن است؛ يعني عناصر یک ليست را می‌توان ویرایش کرد، اما عناصر موجود در توپل را نمی‌توان تغییر داد. بعدها درباره توپل بیشتر صحبت خواهیم کرد. تنها نکته مهم این است که برای ارجاع به عناصر ليست یا توپل از علامت [] در جلوی نام ليست یا توپل استفاده می‌شود. توجه کنید که مانند غالب زبان‌های برنامه‌نویسی اندیس توپل‌ها و ليست‌ها‌ از عدد صفر آغاز می‌شود.بنابراین، در خط 13، place[0] عضو نخست توپل را به‌عنوان x و place[1] عضو دوم آن را به‌عنوان y جدا می‌کند. در خطوط 14 تا 19، مقادیر x و y کنترل می‌شوند تا در محدوده صفحه باشند. اگر اعداد در محدوده صفحه بازی (3×3) نباشد یک پیغام خطا چاپ شده و به کمک دستور continue حلقه گردش بعدی را انجام می‌دهد. در هر حلقه، چه از نوع for و چه از نوع while، دستور continue باعث می‌شود که روند فعلی حلقه قطع شده و کنترل دوباره به ابتدای بدنه حلقه بازگردد. در خط 20 کنترل می‌شود که آیا محل انتخاب شده (که اکنون مطمئن هستیم در محدوده صفحه بازی است) قبلاً اشغال شده یا خير؟ اگر اشغال نشده باشد، علامت مختص بازیکن در آن ثبت شده و با دستور break از حلقه خارج می‌شویم. چون اندیس ليست‌ها و توپل‌ها از صفر شروع می‌شود برای کنترل صفحه بازی از x و y یک واحد کم کرده‌ایم. خط 23 استفاده از دستور else را نشان می‌دهد. در صورتی‌که شرط if آخر درست نباشد، کنترل به دستور else منتقل می‌شود. در این حالت پیامی مبنی بر اشغال بودن نقطه مورد نظر چاپ شده و حلقه دوباره از ابتدا اجرا می‌شود. همان‌طور که در خط 25 مشاهده می‌کنید، این تابع مقدار برگشتی ندارد. نکته مهمی که همیشه باید به خاطر داشته باشید این است که در پايتون ليست‌هاي پاس شده به تابع نظیر b، به‌صورت «ارجاع به محل» یا By Reference مورد استفاده قرار خواهند گرفت و بنابراین هر تغییری در آن به طور مستقيم به متغیر اصلی (اینجا یعنی صفحه اصلی بازی board) اعمال خواهد شد و در نتیجه به مقدار بازگشتی نیازی نخواهد بود. ماجول مربوط به صفحه بازی در فهرست 3، ماجول دوم که سازنده و کنترل کننده صفحه بازی است، نمایش داده شده است. این ماجول را تایپ کرده و با نام board.py ذخیره کنید. با یک نگاه کلی و با توجه به توضیحاتی که تا‌کنون داده‌ایم، مشخص می‌شود که این ماجول سه تابع برای ساخت صفحه نمایش، چاپ آن و کنترل برنده بازی تعریف می‌کند. ######### Creating the Board ############# def Create_Board(): b=[] for i in range(3): b.append([]) for j in range(3): b.append(“ “) return b ######### Printing the Board ############# def Print_Board(b): s=”” for j in range(2,-1,-1): s=s+”\n-------------\n|” for i in range(3): s= s+ “ “ + b[j]+ “ |” s=s+”\n-------------\n” print s return ########## Checking for Winner ########### def Check_Winner(b): for sign in [“X” , “O”]: #check rows for i in range(3): score=0 for j in range(3): if b[j] == sign : score += 1 if score == 3 : return sign #check columns for j in range(3): score=0 for i in range(3): if b[j] == sign : score += 1 if score == 3 : return sign #check diameters score1=score2 =0 for i in range(3): if b== sign: score1 +=1 if b[2-i] == sign: score2 += 1 if score1 == 3 or score2 == 3: return sign #check if board is full empty = 0 for i in range(3): for j in range(3): if b[j] == « «: empty += 1 if empty == 0: return “No one” return None فهرست 3- ماجول مربوط به صفحه بازي در خط 3 متغیری به نام b از نوع ليست تعریف می‌شود. این متغیر در این مرحله هیچ عضوی ندارد.در خط 4 با یک دستور for حلقه‌ای با سه بار تکرار تعریف می‌شود که در خط 5 به کمک متد append یک ليست تهی دیگر را به ليست b اضافه می‌کند. در دو خط بعدی با یک حلقه for دیگر، به این ليست داخلی، سه رشته با مقدار “ “ افزوده می‌شود. در نهایت متغیر b به فرم زیر در‌خواهد آمد: b= [[“ “,“ “,“ “],[“ “,“ “,“ “],[“ “,“ “,“ “]] همان‌طور که پیش‌تر توضیح دادیم برای دسترسی به عناصر داخل ليست از اندیس‌ها و علامت [] استفاده می‌کنیم. بنابراین، b[0] نخستين عضو b است که خود یک ليست دیگر است و b[1][2] به سومین عضو در دومین عضو b اشاره می‌کند. ما از این تجرید برای شبیه‌سازی مختصات یا همان x و y صفحه بازی استفاده کرده‌ایم. به عبارت دیگر، عنصر نخست b نماینده ستون نخست یا x=1 و به عنوان مثال، عنصر دوم نماینده ستون دوم خواهد بود. به همین شکل مقدار b[2][1] نماینده محتویات نقطه‌ای با مختصات (3،2) خواهد بود. ليست‌ها که از قسمت قبل با تعریف آن‌ها آشنا شده‌اید، از پرکاربردترین انواع بنیادی پایتون هستند. ليست در واقع چیزی شبیه آرایه در سایر زبان‌ها است، با این تفاوت که لازم نیست از ابتدا اندازه آن را مشخص کنید یا نوع داده آن را تعریف كنيد و همچنین هنگام اجرای برنامه مي‌توانيد هم خود ليست و هم عناصر آن را تغییر دهید. همان‌گونه که دیدید با متد append می‌توان هر چیزی را به ليست اضافه کرد.در خط 10 تابع دیگری برای چاپ صفحه نمایش تعریف می‌شود. در خط 11 متغیر s از نوع رشته و با مقدار تهی تعریف شده است. خط 12 نمونه دیگری از کاربرد range() را نشان می‌دهد. همان‌طور که به‌احتمال حدس زده‌اید، range() هم یکی از توابع داخلی پایتون است. در این خط، تابع range() سه آرگومان گرفته است که به ترتیب عدد شروع‌، عدد پایان و میزان تغییر در هر مرحله است. فرم کلی دستور range() مانند زیر است: range ( [start ,] [,step] ) اکنون می‌دانید که عبارت فوق يعني آرگومان stop یا پایان ليست تولیدی الزامی ولي آرگومان شروع و مقدار افزایش در هر مرحله اختیاری است. نتیجه خروجی range(2,-1,-1) در اینجا ليستي با مقدار [ 2 , 1 , 0 ] است. دلیل استفاده از این ليست معکوس این است که هنگام چاپ، ليست از بالا به پایین یعنی از خانه‌هايي به مختصات (1,3)، (2,3) و (3,3) چاپ می‌شود در حالی‌که مقادیر موجود در متغیر b به ترتیب از (1,1)، (1,2) و الی آخر شروع می‌شوند. مجموعه خطوط 13 تا 16 با ترکیب عناصر b و کاراکترهای “-“ و “|” جدول‌هايي شبیه شکل 2 را برای بازی به وجود آورده و چاپ می‌کنند. شكل 2- شبيه‌سازي صفحه بازي به دلیل طولانی بودن تابع سوم ما از توضیح خط به خط آن صرف نظر می‌کنیم. این تابع به رغم ظاهر طولانی، منطقی بسیار ساده دارد. به طور خلاصه این‌که در خط 21 حلقه‌ای تعریف می‌شود که تنها دوبار یک بار با مقدار X (نماینده بازیکن) و بار دیگر با مقدار O (نماینده کامپیوتر) اجرا خواهد شد. در خطوط 22 تا 29، با یک سری حلقه‌ for امتیاز X یا O در همه سطرها محاسبه می‌شود که اگر تنها در یک سطر برابر 3 بود، علامت X یا O با دستور return به عنوان برنده به صدا زننده تابع بازگردانده شده و عملکرد تابع تمام می‌شود. در خطوط 31 تا 37 همین کار برای ستون‌ها انجام می‌شود. در نهایت در خطوط 39 تا 46، قطرهای صفحه بازی کنترل مي‌شود. رسیدن کنترل اجرا به خط 48، به این معنی خواهد بود که بازی تاکنون هیچ برنده‌ای نداشته است. در این‌جا کل صفحه برای وجود خانه‌های خالی بررسي می‌شود که در‌صورت عدم، وجود بازی مساوی اعلام خواهد شد. در‌صورتی‌که صفحه بازی هنوز جای خالی داشته باشد، مقدار None یا هیچ، که از مقادیر از پیش تعریف شده پایتون است، برگشت داده می‌شود. ماجول اصلی فهرست 4 ماجول اصلی یا کنترل کننده برنامه را نشان می‌دهد. این مجموعه کد را تایپ‌کرده و با نام main.py در کنار سایر فایل‌ها ذخیره کنید. به خط 1 که با علامت #! شروع شده است، به اصطلاح شی‌بنگ یا shebang گفته می‌شود. این خط در محیط‌های لینوکسی به سیستم عامل اعلام می‌کند که برای اجرای این اسکریپت (در صورتی‌که به آن مجوز اجرا داده شده باشد) از چه مفسر یا مترجمی استفاده کند. در سیستم ویندوز یا سایر موارد این خط همانند یک توضیح یا comment دیده می‌شود. #! /usr/bin/env python ######### importing required modules ##### import random from board import Create_Board , Print_Board , Check_Winner from player import Get_Player_Name , Play_One_Turn ########## Main Section ##################### player=Get_Player_Name() board = Create_Board() Print_Board(board) while 1: Play_One_Turn(board,player) Print_Board(board) winner = Check_Winner(board) if winner None: print “Game Over \n%s won the game . . . “ %winner break while 1: # Computer Turn x = random.randint(1,3) y = random.randint(1,3) if board[x-1][y-1] == “ “: board[x-1][y-1] = “O” print “Computer Turn . . .” break Print_Board(board) winner = Check_Winner(board) if winner None: print “Game Over \n%s won the game . . . “ %winner break فهرست 4- ماجول اصلي خطوط 4 و 5 و6 ماجول‌ها و توابع مورد نظر را بارگذاری مي‌كنند. دستور import برای استفاده از ماجول‌ها به کار می‌رود. این دستور برای یافتن ماجول مورد نظر نواحی خاصی از سیستم را جست‌وجو می‌کند. یکی از این نواحی پوشه یا فولدری است که فایل import کننده در آن قرار دارد. ناحیه دیگر کتابخانه استاندارد یا Standard Library است. دستور import به دو صورت قابل اجرا است. روش اول به شكل زير است: import [,module ,module , . . .] روش دوم نيز مطابق نمونه زير است: from import [,function|variable|class, . . .] تفاوت این دو حالت در این است که روش نخست خود ماجول را به صورت یک موجوديت وارد اسکریپت فعلی می‌کند و برای استفاده از اجزای آن باید از سیستم نقطه‌گذاری استفاده کرد. نظیر آنچه در خط 21 و دستور random.randint() دیده می‌شود. اما در حالت دوم بخش مورد نظر به طور مستقيم وارد اسکریپت فعلی شده و بدون نام بردن ماجول مادر آن قابل استفاده است. همانند خط 11 که در آن Print_Board() که از ماجول board وارد شده بود، به طور مستقيم مورد استفاده قرار گرفته است. در خط 4، random که یکی از کتابخانه‌های استاندارد پایتون است، بارگذاری می‌شود. همان‌طور که قبلاً گفته شد، کتابخانه استاندارد پایتون طیف وسیعی از کاربردها را به‌سادگی برای کاربر فراهم مي‌كند. کتابخانه random توابعی در زمینه کار با اعداد تصادفی فراهم کرده است. سه خط نخست بخش اصلی، نام بازیکن را پرسیده و پس از خوشامد‌‌گویی، صفحه بازی را ایجاد و چاپ می‌کند. پس از آن حلقه بازی شروع می‌شود. این حلقه در خطوط 15 تا 18 و خطوط 28 تا 31 در‌صورت برنده شدن یک بازیکن یا پرشدن صفحه شکسته می‌شود. در این حلقه به ترتیب در خط 13 بازیکن از طریق تابع Play_One_Turn() یک نوبت بازی می‌کند. سپس در خط‌بعدی صفحه بازی چاپ شده و وجود یا عدم وجود برنده بررسي می‌شود. سپس نوبت به کامپیوتر می‌رسد که با یک حلقه while و استفاده از اعداد تصادفی سعی می‌کند، یک خانه صفحه را انتخاب کند. تابع randint() که در کتابخانه random تعریف شده است، با گرفتن دو عدد صحیح، یک عدد صحیح تصادفی بین آن دو (یا مساوی یکی از آن‌ها) تولید خواهد کرد. پس از خروج از این حلقه، صفحه بازی دوباره چاپ شده، برنده کنترل می‌شود و حلقه اصلی از نو شروع به کار خواهد کرد. اگرچه این برنامه چندان کاربردی نبود و در بسیاری از قسمت‌ها می‌توان آن را به گونه‌ای بهتر پیاده سازی کرد، اما حاوی نكته‌هاي بسیار مهمی درباره کار با زبان پایتون است. اگرچه کل کدهای این مقاله از سایت مجله قابل دریافت است، اما توصیه می‌کنيم دست‌كم یک بار آن‌ها را تایپ کنید تا با خطاهای احتمالی حین تایپ و رفع اشکال برنامه نیز آشنا شوید. در قسمت بعدی با بخش‌هایی پرکاربرد از کتابخانه استاندارد پایتون آشنا خواهید شد و برنامه قسمت بعد، استفاده مفیدتر و جالب‌تری از چرخه‌های پردازنده شما خواهد کرد. پی نوشت: 1- در نوشتن فرم کلی دستورات علامت به معنای اجباری، [ ] به معنای اختیاری و علامت | به معنای یا است.
  9. احمد شريف‌پور اشاره: اول: زمانی به برنامه‌نویسی به دید امری عجیب، پیچیده و حتی جادویی نگریسته می‌شد که تنها در‌توان خوره‌های کامپیوتر و نوابغ علوم الکترونیک و کامپیوتر بود. با ساده‌تر شدن زبان‌های برنامه‌نویسی و کاربرد روزافزون کامپیوتر در زندگی روزمره این دیدگاه به‌سرعت در حال منسوخ شدن است. تقریباً هر کاربر ساده کامپیوتر ممکن است در شرایطی قرار گرفته باشد که آرزو کند کاش برنامه‌ای برای انجام عملی خاص وجود داشت یا چه خوب می‌شد سیستم را برای انجام چنین عملی برنامه‌ریزی کرد. امروزه، این آرزو بیش‌از هر زمان دیگری قابل تحقق است. دوم: می‌گویند یادگیری هر زبان تازه، بعد جدیدی به شخصیت فرد می‌افزاید. اگرچه این مَثل ممکن است درباره زبان‌های برنامه‌نویسی درست نباشد، اما آشنا شدن با هر زبان برنامه‌نویسی جدید و پارادایم‌های حاکم بر آن، به‌یقین ‌به تعالی منطق برنامه‌نویس، افزایش قابلیت‌های وی و از همه مهم‌تر بهبود روش حل مسئله توسط وی منجر‌خواهد‌شد. در‌اين‌ميان، پایتون انتخابی مناسب برای کاربران مبتدی و حرفه‌ای خواهد بود (کمی بعد با دلایل این انتخاب آشنا خواهید شد). اين مقاله گزيده‌اي است از مجموعه مقالاتي در شماره‌های مختلف مجله Full Circle Magazine (مجله رسمی توزیع لینوکس اوبونتو) كه به‌صورت بسیار ساده و در‌عين‌حال کاربردی به معرفی این زبان و قابلیت‌های آن خواهد پرداخت. يكي دو قسمت ابتدايي اين مجموعه به معرفي زبان پايتون و آشنايي ابتدايي با آن اختصاص داده شده است. مطالب سایر قسمت‌ها کاملاً مستقل از یکدیگر بوده و هریک با ارائه مثال‌های کاربردی به بررسی جنبه‌ای خاص از پایتون خواهد پرداخت. انتخاب اول مجموعه عظیم زبان‌های برنامه‌نویسی موجود را بر‌اساس ویژگی‌ها و قابلیت‌هایشان به دسته‌های مختلفی طبقه‌بندی کرده‌اند. دسته‌بندی‌هایی نظیر شيء‌گرا در برابر روال‌گرا یا اپن‌سورس در برابر منبع بسته، مستقل از پلتفرم در برابر وابسته به پلتفرم، ترجمه‌ای در برابر تفسیری و . . . هر یک از این دسته‌ها نشانگر ویژگی‌ها و امکاناتی هستند که ممکن است از یک دیدگاه خاص بسیار مفید و ارزنده محسوب شده و از دیدگاهی دیگر به‌عنوان محدودیت شناخته‌شوند. همین امر انتخاب یک زبان را برای شروع یادگیری به انتخابی دشوار تبديل مي‌كند. در‌اين‌ميان، زبان‌های مشهور یا زبان‌های پرکاربرد لزوماً انتخاب‌های مناسبی نخواهند‌بود. به‌عنوان‌مثال، زبان‌هایی نظیر C یا ++C به برنامه‌نویس این امکان را می‌دهند که برنامه‌های خود را با جزئیات بسیار بالا نوشته و با سرعت فوق العاده‌ای اجرا كنند. اما این سرعت بالا و کنترل شدید برنامه‌نویس بر تمام جزئیات به قیمت صرف زمان بیشتر برای کدنویسی و رفع اشکال کد تمام خواهد شد. نکته جالب‌توجه اين‌كه در بسیاری از موارد سرعت اجرای برنامه‌ها چندان مهم نیست. در‌حال‌حاضر نیز با ارزان شدن مداوم قدرت پردازش سیستم‌ها، بسیاری از برنامه‌نویسان معتقدند، هدر رفتن درصدی از نیروی پردازش پردازنده در اثر استفاده از زبان‌های سطح بالا و در‌عوض فراهم‌شدن زمان بیشتر برای تمرکز برنامه‌نویس بر فعالیت اصلی‌اش یعنی کدنویسی، معامله‌ای مقرون‌به‌صرفه است. زبانی که برای شروع یادگیری انتخاب می‌شود در ابتدا باید ساده باشد، به برنامه‌نویس تفکر سیستمی و منطقی را بیاموزد، اصول کدنویسی درست را به کاربر آموزش دهد، قادر به پاسخ‌گویی به غالب نیازهای کاربر باشد و در‌‌نهايت این‌که بهتر‌است به سیستم‌عامل یا ابزار خاص و پیچیده‌ای وابسته نباشد. بر‌همین‌اساس، بسیاری پایتون را بهترین زبان برای شروع یادگیری برنامه‌نویسی می‌دانند. پایتون زبانی سطح بالا، داینامیک، اسکریپتی، تفسیری، شيء‌گرا، آزاد، اپن‌سورس و مستقل از پلتفرم است که در سال 1991 توسط گوئيدو وان روسوم ابداع شد. باید توجه داشت که معرفی پایتون به‌عنوان زبان مناسب مبتدیان به‌معنای کم بودن قابلیت‌های آن نیست. هم‌اکنون پایتون به‌عنوان یکی از قدرتمندترین ابزارهای برنامه‌نویسی سیستمی، برنامه‌نویسی وب و... مورد استفاده قرار می‌گیرد. چرا پایتون؟ اگرچه ممكن است بسیاری از برنامه‌نویسان قديمي که با زبان‌هایی نظیر جاوا و C سروکار داشته‌اند، برنامه‌نویسی با پایتون را چندان جدی نگیرند و حتی آن را کودکانه بدانند، اما این امر از قابلیت‌های این زبان نخواهد‌ کاست. در‌عوض، تعداد زیادی از برنامه‌نویسان (کسانی نظیر برنامه‌نویسان گوگل) پایتون را به‌دلیل سادگی، خوانایی و امکانات فراوان به هر زبان دیگری ترجیح می‌دهند. طرفداران پایتون که غالباً Pythonistas نامیده می‌شوند، معتقدند، این زبان به‌قدری کامل و کار با آن به‌قدری لذت‌بخش است که برای تمام نیازهای برنامه‌نویسی می‌توان به آن مراجعه‌کرد. آن‌ها برای این ادعا دلایل فنی هم ارائه می‌کنند که برخی از آن‌ها به‌شرح زیر است: سادگی پایتون زبانی بسیار ساده و مینی‌مالیستی است. خواندن یک برنامه خوب پایتون همانند خواندن یک متن انگلیسی است. این طبیعت شبه‌کد (Pseudo-Code) یکی از بزرگ‌ترین نقاط قوت پایتون است و به شما این امکان را می‌دهد که به‌جای تمرکز روی زبان بر ‌روش حل مسئله تمرکز کنید. سهولت یادگیری سادگی این زبان باعث می‌شود، یادگیری آن از غالب زبان‌های موجود ساده‌تر باشد. برخی عقیده دارند ، یک روز تعطیلي آخر هفته برای یادگیری دستور و قواعد زبان پایتون و بخشی از کتابخانه استاندارد آن کافی است. آزاد و اپن‌سورس بودن (FLOSS) یکی از بارزترین نمونه‌هایFLOSS (سرنام Free/Libre and Open Source Software) پايتون است. به‌عبارت‌ساده‌تر، شما می‌توانید نسخه‌هایی از این نرم‌افزار را آزادانه توزیع کنید، کدهای منبع آن را بخوانید، تغییر دهید و از آن در برنامه‌هايتان استفاده کنید. اساس FLOSS بر‌جامعه‌ای بنا شده که افراد آن دانش خود را با یکدیگر به‌اشتراک می‌گذارند. یکی از دلایل برتری پایتون نیز همین است که به‌صورت مداوم توسط جامعه‌ای که تنها خواسته‌اش بهتر شدن این زبان است، بررسی شده و بهبود داده می‌شود. سطح بالا بودن (High-Level) هنگام کدنویسی در پایتون لازم نیست نگران جزئیات سطح پایین باشید. مدیریت حافظه، جمع‌آوری پسماندها (Garbage Collection) و... همه توسط خود زبان انجام خواهد‌شد. قابلیت حمل (Portable) به‌واسطه طبیعت اپن‌سورس پایتون، این زبان به بسیاری از پلتفرم‌ها انتقال داده شده‌است. تمام برنامه‌های شما می‌توانند بدون هیچ تغییری روی تمامی این پلتفرم‌ها اجرا شوند. البته به‌شرطی که با هوشیاری از قابلیت‌های خاص وابسته به پلتفرم پرهیز‌کنید. برنامه‌های پایتون شما به‌سادگی روی لینوکس، ویندوز، FreeBSD‌، مک، سولاریس، آمیگا، پلی‌استیشن، Pocket PC و... قابل اجرا هستند. تفسیری بودن (Interpreted) برنامه‌ای که با یکی از زبان‌های ترجمه‌ای نظیر C یا #C نوشته می‌شود، توسط کامپایلر و تنظیم تعداد زیادی گزینه و Flag به زبان قابل فهم ماشین تبدیل‌می‌شود. وقتی برنامه را اجرا می‌کنید، Loader/Linker برنامه، آن را به حافظه کپی کرده و اجرا می‌کند. بر‌خلاف این زبان‌ها پایتون به مترجم نيازي ندارد و برنامه شما به‌طور‌مستقيم از روی کد اجرا می‌شود. در‌واقع در پشت پرده، مفسر پایتون برنامه شما را به‌حالتی واسطه‌ای به‌نام ByteCode تبدیل کرده و سپس اجرا‌می‌كند. تمام این‌ها باعث می‌شود که استفاده از پایتون ساده‌تر شود. زیرا لازم نیست نگران چرخه کدنویسی، کامپایل، کنترل، اصلاح کد، کامپایل دوباره یا نگران گزینه‌های کامپایلر، در دسترس بودن و لینک شدن کتابخانه‌های موردنظر و... باشید. این سیستم قابلیت حمل برنامه را نیز افزایش می‌دهد. زیرا کافی است شما کد را به سیستم دیگری کپی کنید و برنامه بدون نیاز به کامپایل دوباره به‌سادگی اجرا می‌شود. شيء گرایی (Object Oriented) پایتون از هر دو شیوه برنامه‌نویسی شيء‌گرا و روال‌گرا به‌خوبی پشتیبانی می‌کند. در زبان‌های روال‌گرا، برنامه بر‌مبنای تعدادی روال یا تابع ساخته می‌شود که در‌‌واقع چیزی جزء قطعات کد با قابلیت استفاده دوباره نیستند. در زبان‌های شيء‌گرا برنامه بر‌‌پایه اشیايی ساخته می‌شود که اطلاعات و عملکرد را یک‌جا نگه‌داری می‌کنند. پایتون در مقایسه با زبان‌هایی نظیر #C یا جاوا روش بسیار ساده‌تری برای برنامه‌نویسی OOP دارد. قابلیت توسعه (Extensible) اگر در برنامه شما قطعه‌ کدی حساس وجود دارد که لازم است با سرعت بالایی اجرا شود یا می‌خواهید الگوریتم به‌‌کار‌رفته در آن را مخفی کنید، می‌توانید آن قسمت را به زبان‌C یا #C بنویسید و آن را از داخل برنامه پایتون اجرا کنید. قابلیت جاسازی (Embeddable) می‌توان پایتون را به‌صورت توکار (Embedded) در برنامه‌های C یا #C یا زبان‌های دیگر به‌کار‌ برد و از اين طريق به استفاده‌كنندگان برنامه‌ قابلیت اسکریپت‌نویسی را هدیه کرد. کتابخــانــه استــانــــدارد غنــــــی (Extensive Library) کتابخانه استاندارد پایتون بسیار گسترده و غنی است. این کتابخانه که به‌همراه نصب استاندارد پایتون در دسترس خواهد بود، می‌تواند گستره عظیمی از امور را نظیر Regular Expression‌، Document Generation، Unit‌Testing‌،Threading‌،Database‌،Web Browsing،FTP‌، XML‌، HTML ،Cryptography ،GUI وEmail پوشش دهد. در کنار کتابخانه استاندارد پایتون، تعداد زیادی کتابخانه خوش‌ساخت دیگر نظیر wxPython (برای ساخت رابط گرافیکی)، Twisted (فریم ورک توسعه اینترنت)، PIL یا Python Imaging Library (برای ویرایش تصاویر) نیز در دسترس شما است.اما در‌نهایت شاید مهم‌ترین دلیل طرفداران پایتون هیچ یک از موارد فوق نباشد. آنچه آن‌ها را شیفته این زبان می‌کند لذتی است که از کار با چنین زبان ساده و قدرتمندی نصیب برنامه‌نویس خواهد شد. چه کسانی از پایتون استفاده می‌کنند؟ به‌دلیل ماهیت اپن‌سورس و رایگان‌بودن، آمار دقیقی از استفاده‌کنندگان این زبان در دسترس نیست، اما شاید نام‌بردن تعدادی از بزرگ‌ترین شرکت‌های مرتبط و غیر‌مرتبط با IT که از این زبان استفاده می‌کنند تا حدی‌نشان‌دهنده عمومیت و قدرت این زبان باشد. مشهورترین کاربر زبان پایتون غول دنیای اینترنت یعنی گوگل است. پایتون به‌عنوان زبان مورد‌علاقه برنامه‌نویسان گوگل شناخته می‌شود. موتور پردازش ابری گوگل با نام Google App Engine از پایتون پشتیبانی می‌کند. شما می‌توانید برنامه‌هایی را که به‌‌محاسبه‌هاي سنگین و پیچیده نياز دارند با پایتون نوشته و از طریق App Engine اجرای آن را به سرورهای قدرتمند گوگل بسپارید. ناسا نیز از دیگر استفاده‌کنندگان پایتون است. به‌صورت دقیق‌تر شرکت United Space Alliance شرکت اصلی پیمانکار مسئول نگه‌داری شاتل‌ها در ناسا از پایتون برای برنامه‌نویسی‌های علمی، طراحی رابط کاربر و توسعه سریع نرم‌افزار بهره می‌برد. همچنین شرکت اتودسك که از بزرگ‌ترین تولید‌کنندگان نرم‌افزارهای طراحي به كمك كامپيوتر (‌CAD‌) و مصور‌سازي است، از پایتون برای ایجاد قابلیت اسکریپت‌نویسی در محیط مايا استفاده می‌کند. اما تصور نکنید که استفاده از پایتون تنها به‌محاسبه‌هاي علمی و کاربردهای مهندسی محدود است؛ جرج لوكاس شرکت ILM (سرنام Industrial Light and Magic) را در سال 1975 برای ایجاد جلوه‌های ویژه فیلم اصلی جنگ ستارگان تأسیس كرد. اين شركت هم اکنون برای ایجاد جلوه‌های ویژه، گرافیک کامپیوتری و مدیریت سیستم‌ها از پایتون استفاده می‌کند. و در‌نهایت می‌توان از شرکت فيليپس نام برد. این توليد‌كننده سرشناس وسایل الکترونیکی و مصرفی برای توسعه سریع نرم‌افزار، کنترل خط تولید و سیستم کنترل کیفیت خود از پایتون بهره می‌برد. براي مشاهده فهرست کاملی از کاربران مشهور پایتون بر‌اساس زمینه فعالیت به‌همراه خلاصه‌ای کوتاه از نحوه استفاده و دلایل به‌کارگیری این زبان مي‌توانيد به آدرس[Hidden Content] مراجعه كنيد. کدام پایتون ؟ کدام ابزار؟ زبان پایتون در‌حال‌حاضر در دو ويرايش متفاوت منتشر می‌شود. ويرايش اول سری‌2.x پایتون است که اکنون توزیع استاندارد پایتون به‌شمار‌مي‌آيد وبه نسخه 7/2 رسیده است. توسعه در این دسته بر‌مبنای حفظ سازگاری با نسخه‌‌های قبلی انجام می‌شود. ويرايش دوم سری 3.x پایتون است که از ابتدا بدون سازگاری با نسخه‌های 2.x و با هدف ایجاد قابلیت‌های بیشتر و به‌روز‌تر در زبان تولید‌شده و اکنون به نسخه 1/3 رسیده است. این نسخه هنوز همانند سری دوم عمومیت نیافته و به‌همین‌دلیل در این مجموعه مقاله‌ها از سری 2.x استفاده خواهد‌شد. به‌يقين تمام کدهای نوشته شده در این مجموعه با هر نسخه‌اي‌ بالاتر از 2/2 سازگار بوده و قابل اجرا هستند.این سری مقاله‌ها بر‌مبنای سیستم‌عامل لینوکس (به‌صورت خاص اوبونتو) نوشته شده‌اند. اما تمام کدها روی تمام سیستم‌ها قابل اجرا هستند. اگر در کدها از توابع و ویژگی‌های خاص وابسته به سیستم‌عامل استفاده شده باشد، در‌كنار کد به آن اشاره‌خواهد‌شد. درصورتی‌که شما از یکی از توزیع‌های مشهور لینوکس استفاده می‌کنید، به‌ احتمال زیاد پایتون از پیش روی سیستم شما نصب شده است. برای سیستم‌عامل‌های ویندوز و مک می‌توانید با مراجعه به سایت رسمی پایتون(www.python.org) نسخه مناسب سیستم‌‌عامل خود را دانلود کرده و نصب كنيد. کار با زبان برنامه‌نویسی پایتون به‌هیچ ابزار یا امکانات خاصی احتیاج ندارد. تنها با داشتن یک ویرایشگر متن ساده نظیر Gedit در لینوکس یا Notepad در ویندوز می‌توانید شروع به کدنویسی کنید. اما در‌صورتی‌که ویرایشگر شما از رنگ‌بندی کد (Syntax Highlight) و سیستم تورفتگی خودکار (Auto Indent) پشتیبانی کند، سرعت کدنویسی و تصحیح شما بسیار بالاتر خواهد‌رفت. غالب ویرایشگرهای متن لینوکس نظیر Kate (در محيط KDE) و (Gedit (GNOME از هر دوی این قابلیت‌ها پشتیبانی می‌کنند. در ویندوز می‌توانید از ++Notepad که نرم‌افزاری آزاد و رایگان است استفاده‌کنید. همچنین در ویندوز و مک نصب استاندارد پایتون محیط برنامه‌نویسی پیش‌فرض پایتون یا IDLE را نیز به‌همراه خواهد‌داشت که بسیار فراتر از یک ویرایشگر متن ساده در نوشتن و تصحیح کد به شما کمک خواهد‌کرد. در تمام توزیع‌های لینوکس، این برنامه از مخازن سیستم به‌سادگی قابل نصب است. با مراجعه به‌آدرس [Hidden Content] می‌توانید فهرست ویرایشگرها و محیط‌های توسعه موجود را برای پایتون مشاهده کنید. مثال مقدماتی 5 دقیقه‌ای نمونه کد پایتون فرض کنید می‌خواهیم حاصل عبارت (g(x)=x/(1-x را برای مقادیر x معادل 0.9 ، ...، 0.3 ، 0.2 ، 0.1 بیابیم. کافی ‌است در یک فایل متنی مثلاً با نام fme.py کد موجود در فهرست 1 را نوشته و در خط فرمان با تایپ دستور زیر آن را اجرا کنید. python fme.py $ خروجی برنامه مانند فهرست 2 خواهد بود (می‌توانید این عملیات را در IDLE نیز انجام دهید. کافی‌ است پس از باز‌کردن برنامه از منوی File گزینه New Window را انتخاب كرده، کد موردنظر را تایپ كرده و پس از ذخیره کردن با F5 اجرا كنيد). for i in rage (10) : x=0.1*i print x print x/ (1-x*x) فهرست 1 >>> 0.0 0.0 0.1 0.10101010101 0.2 0.208333333333 0.3 0.32967032967 0.4 0.47619047619 0.5 0.666666666667 0.6 0.9375 0.7 1.37254901961 0.8 2.22222222222 0.9 4.73684210526 >>> فهرست 2 ليست‌ها در پایتون این برنامه چگونه کار می‌کند؟ در ابتدا تابع ()range پایتون نمونه‌ای از استفاده ليست‌ها را در این زبان نشان می‌دهد. در زبان پایتون ليست چیزی شبیه آرایه است. ليست‌ها یکی از انواع بنیادی پایتون هستند. تابع ()range درواقع یک ليست را برمی‌گرداند که در اینجا عبارت است از [0,1,2,3,4,5,6,7,8,9] . به علامت‌های [] توجه کنید. این روش رسمی پایتون برای نشان دادن یک ليست است. ليست در‌واقع ردیفی از اشیاي مختلف (هر تعداد شيء با هر ترتیب و هر نوعی) است که داخل [] قرار دارند و با کاما از یکدیگر جدا شده‌اند. پس دستور اول کد ما در واقع معادل عبارت زیر است: :[for i in [0,1,2,3,4,5,6,7,8,9 همان‌طور که حدس می‌زنید این کد باعث ده بار گردش حلقه می‌شود که در بار نخست i ‌‌برابر صفر و در بار دهم برابر9 است. پایتون یک ساختار while هم دارد (البته بدون until). همچنین مانند C++/C دستور break برای خروج کامل از حلقه در‌دسترس است (فهرست3). >>> x=5 >>> while 1: x += 1 if x == 8: print x break 8 >>> فهرست 3 تعریف بلوک در پایتون حال به علامت دونقطه انتهای دستور for توجه کنید که شروع یک بلوک‌ کد را اعلام می‌کند. برخلاف زبان‌هایی نظیر C++/C یا حتی Perl ، که از {} برای تعریف بلوک استفاده می‌کنند، پایتون از ترکیب دونقطه و تورفتگی برای تعریف بلوک‌ها استفاده می‌کند. ما با دونقطه به پایتون می‌گوییم که قصد داریم یک بلوک کد را آغاز کنیم و با تورفتگی ابتدای خطوط دستورات آن بلوک را تعریف می‌کنیم. برای تورفتگی می‌توانیم از 3 یا 4 یا 10 فضای خالی استفاده کنیم. میزان این فضای خالی تا زمانی که در تمام کد رعایت شود، اهمیتی ندارد. بنابراین، در‌صورت وارد کردن کد (فهرست4) با خطای دستوری پایتون مواجه می‌شویم، زیرا تنها در صورتی می‌توانیم در یک بلوک از تورفتگی استفاده کنیم که بخواهیم بلوک دیگری در دل آن ایجاد‌کنیم (فهرست‌5). >>> for i in range (10) : print 0.1*i print g(0.1*i) File “”, line 3 print g(0.1*i) IndentationError: unexpected indent >>> فهرست 4 >>> for i in range (10) : if i%2 == 1 : print 0.1*i 0.1 0.3 0.5 0.7 0.9 >>> فهرست 5 در این حالت فقط زمانی که متغیر i یک عدد فرد است ما دستور چاپ را اجرا مي‌كنيم. عملكرد % یا mod همانند C++/C باقی‌مانده‌تقسیم را باز‌‌‌‌می‌گرداند. دوباره به علامت دونقطه در انتهای دستور if و فاصله‌گذاری ابتدای دستور print دقت ‌کنید. همین‌طور دقت داشته باشید که مانند C++/C/perl احتیاجی به علامت نقطه کاما در انتهای دستورات نیست. هر خط جدید به‌معنای دستوری جدید خواهد بود. در‌صورتی‌که خطی طولانی دارید می‌توانید برای شکستن آن از علامت"\" استفاده کنید (فهرست 6). >>> y=7 >>> z=12.5 >>> x = y + \ z >>> >>> x 19.5 فهرست 6 پوسته تعاملی (خط فرمان پایتون) یکی از قابلیت‌های جذاب پایتون خط فرمان تعاملی آن است. شما به‌صورت معمول زیاد از این قابلیت استفاده نمی‌کنید، اما برای بررسی برخی امکانات و آزمايش سریع دستورات بسیار مفید خواهد بود. هرگاه به‌عملکرد درست قسمتی شک دارید باید از سیستم آزمایش و خطا استفاده کنید و بهترین و سریع‌ترین روش آزمودن استفاده از خط فرمان تعاملی پایتون است. به‌جای نوشتن کد در فایل متنی و اجرای آن ما کد را در پوسته پایتون نوشته و اجرا می‌کنیم. با تایپ دستور Python به‌تنهایی یا اجرای IDLE به پوسته پایتون دسترسی خواهیم داشت (شکل زير). در اینجا با اجرای پایتون اعلان حالت تعاملی یعنی >>> به‌نمایش در‌می‌آید. سپس شروع به تایپ خط به خط کد می‌کنیم. هر زمان که داخل یک بلوک کد باشیم اعلان ویژه " ..." به‌نمایش در‌می‌آید. وقتی در‌انتهای کد یک خط خالی را وارد کنیم، پایتون متوجه اتمام کد شده و آن را اجرا می‌كند. درباره پوسته تعاملی توجه داشته باشید که بین پلتفرم‌های مختلف تفاوت‌های کمی وجود دارد. به‌عنوان‌مثال، ممکن است فاصله‌گذاری به‌صورت خودکار انجام نشود یا در ویندوز شما با تایپ CTRL + Z از پوسته خارج می‌شوید، اما در لینوکس باید از CTRL + D استفاده کنید. همچنین توجه کنید که در IDLE اعلان " . . ." به‌نمایش در‌نمی‌آید. در حالت تعاملی ارجاع به یک شیء یا ساخت یک شیء یا نوشتن یک عبارت بدون نسبت دادن آن به یک متغیر باعث چاپ شدن مقدار آن می‌شود (فهرست7). >>>for i in range (4) : 3*i 0 3 6 9 >>> open (“x.txt”) >>> فهرست 7 در مثال دوم ما فایل x.txt را باز کرده‌ایم که نتیجه حاصل یک شیء فایل است و چون آن را به‌متغیری (معمولاً f) نسبت نداده‌ایم، شیء فایل چاپ شده است (فایل x.txt باید در مسیر جست‌وجوی پایتون موجود باشد).پایتون به‌عنوان یک ماشین حساب یکی از قابلیت‌های دیگر پوسته تعاملی امکان استفاده از آن به‌عنوان یک ماشین حساب سریع است. به‌عنوان‌‌مثال، برای محاسبه مقدار 88.88 به‌علاوه پنج درصد کافی‌ است، عبارت اول را تایپ کنیم (فهرست8 ) یا برای تبدیل اعداد بین مبنای 10 و 16 از دستورات قسمت دوم استفاده کنیم. >>> 1.05*88.88 93.323999999999998 >>> >>> >>> 0x12 18 >>> hex (18) '0x12' >>> فهرست 8 اگر به محاسبه‌هاي ریاضی خاصی احتیاج داشته باشیم باید ابتدا کتابخانه math را از مجموعه کتابخانه‌های استاندارد پایتون import کنیم. دقیقاً همانند سیستمی که در سي‌يا سي‌شارپ با دستور include# پیاده‌می‌شود، سپس می‌توانیم با سیستم نشانه‌گذاری نقطه‌ای از توابع تعریف شده در کتابخانه math استفاده کنیم. در شكل زير استفاده از توابع ()sin و ()sqrt نشان‌داده‌شده‌است. همچنین توجه کنید که در محیط IDLE با تایپ math و علامت نقطه و مکثی کوتاه فهرست توابع موجود کتابخانه ظاهر‌می‌شود. شما اکنون تا حدودی با زبان پایتون آشنا شده‌اید و کم‌و‌بیش توانایی‌ها و قابلیت‌های آن را می‌شناسید. اگر در قسمت‌های بعدی این مجموعه با ما همراه باشید، در هر قسمت با جنبه‌ای تازه و کاربردی از این زبان آشنا خواهید‌شد. قسمت‌های بعدی درعین‌سادگی و کاربردی بودن مستقل از یکدیگر بوده و برای مطالعه و استفاده از آن‌ها به مهارت خاصی نياز ندارید و حتی لازم نیست به پایتون چندان مسلط باشید، زیرا در هر قسمت مطالب پایه‌ای مرتبط آورده خواهند‌شد. اما در‌صورتی‌که زیبایی پایتون توجه شما را جلب کرده و مشتاق یادگیری بهتر این زبان هستید، به‌ترتیب دو منبع زیر را به شما پیشنهاد می‌کنیم: 1- A Byte of Python (Swaroop C H) [Hidden Content] 2- Dive into Python (Mark Pilgrim) [Hidden Content] متأسفانه زبان هر دو منبع انگلیسی است و هنوز مرجعی مناسب و رایگان به زبان فارسی وجود ندارد. در‌پایان به‌خاطر داشته‌باشید که دنیای نرم‌افزار دنیایی است که در آن تنها محدودیت، خلاقیت و دانش شما از برنامه‌نویسی است.
  10. راستش نمی تونم بگم کدوم بهتره چون همشون رو امتحان نکردم من خودم دومی رو نصب کردم و فعلا راضی بودم
  11. راستش برای خود من تا به حال مشکلی پیش نیودمده من دومی رو نصب کردم
  12. نرم افزار CCleaner فایل ها و کدهای اضافی را از Internet Explorer, Windows Explorer و بخش های دیگر کامپیوترتان پس از بررسی و تائید، پاک می کند. این نرم افزار همچنین می تواند بسیاری دیگر از برنامه های نصب شده بر روی سیستم را شناسایی کرده و آثار مخربی را که در نتیجه کار کردن با اینگونه نرم افزارها بوجود می آید، از بین ببرد. برنامه هایی همانند اپرا، فایرفاکس، مایکروسافت آفیس، Nero، نوار ابزار گوگل، مولتی مدیا پلیرهای مختلف و … CCleaner برخلاف سایر نرم افزارها در حذف اینگونه فایل ها و اطلاعات خودسرانه عمل نمی کند، که در نتیجه آن شما چیزی را از دست بدهید که نمی خواستید، بلکه این امکان را به شما می دهد تا دقیقاً مشخص کنید به دنبال حذف کدام دسته از فایل ها و اطلاعات هستید. البته کار CCleaner به اینجا ختم نمی شود، برای عیب یابی و رفع عیب رجیستری، نیاز چندانی به برنامه های پرحجم ندارید چرا که این نرم افزار باهوش و آرام می تواند رجیستری ویندوز شما را نیز چک کرده و ایراد های آن را رفع کند. در این کار نیز ریسک نمی کند تا مانند برخی برنامه ها شما را در دردسر بیاندازد، در ضمن قبل از شروع به رفع عیب پیشنهاد ایجاد یک BackUp برای هرگونه خرابکاری احتمالی را نیز می دهد، ناگفته نماند باز اختیار عمل دست شماست و می توانید مشخص کنید چه قسمت هایی از رجیستری عیب یابی گردند. در قسمت Tools این نرم افزار نیز یک Uninstaller تعبیه شده که همان کار Add or Remove Programs ویندوز را انجام می دهد، می توانید به آسانی برنامه های اضافی را از روی سیستم خود پاک کنید. و نیز یک StartUp برای کنترل برنامه هایی که هنگام بالا آمدن ویندوز اجرا می شوند و Ram سیستم را در بیشتر موارد، بی جهت اشغال می کنند. امکانات نسخه جدید : # اضافه شدن پشتیبانی برای اینترنت اکسپلور ۹ # اضافه شدن پشتیبانی برای فایر فاکس ۴ # اضافه شدن پاکسازی کش فید برای اینترنت اکسپلور # اضافه شدن پاکسازی آمار افزونه های اینترنت اکسپلور # اضافه شدن مدیریت کوکی های iTunes # اضافه شدن پاکسازی برای ذخیره کردن/بازکردن مسیرهای دایکتوری مرورگر اپرا # بهبود پاکسازی برای ذخیره کردن مروگر موزلا / فایرفاکس # بهبود قابلیت بهبود نگه داشتن کوکی # بهبود پاکسازی برای نرم افزار های از کار افتاده # بهبود پاکسازی پیشرفته برای فایل های اضافی از کار افتاده # اضافه شدن پاکسازی رجستری برای سرویس های ویندوز # اضافه شدن پاکسازی برای قواعد از کار افتاده فایروال # اضافه شدن کشف نامعتبر برای مقصود کمک مرورگر دانلود: CCleaner 3.05.1408
  13. ویندوز ۷ ، سیستم عاملی که هر روز بر محبوبیت آن افزوده می شود به نحویکه از ماه آوریل سهام آن در بازار آمریکا از ویندوز XP (یکی از برترین محصولات کمپانی مایکروسافت) پیشی گرفته است. با توجه به آنکه هر روز کاربران بیشتری ترجیح می دهند سیستم عامل خود را به ویندوز ۷ ارتقاء دهند، ما نیز تصمیم گرفتیم ۵ آنتی ویروس رایگان با کارآمدی بسیار خوب را برای این دسته از کاربران پیشنهاد دهیم. به گزارش وین بتا به نقل از BrotherSoft در جمع آوری این لیست دقت فراوانی بکار رفته است تا بتواند برای شما مفید باشد. ۱- آنتی ویروس رایگان Avast آنتی ویروس Avast در دو نسخه ارائه می شود رایگان و تجاری. این آنتی ویروس محافظت کاملی را از تمام بخش های کامپیوتر به عمل می آورد. در موتور مرکزی آنتی ویروس Avast بخش هایی مانند محافظت از سرقت اطلاعات شخصی، دیواره آتش و ضد هرزنامه افزوده شده است تا کاربران را در برابر انواع ویروس ها، تروجان ها و کلاه برداری های اینترنتی ایمن نماید. آنتی ویروس Avast به صورت خودکار بروز رسانی می شود. دانلود کنید. 2- آنتی ویروس رایگان AVG کمپانی AVG سال ها است که در زمینه تولید محصولات امنیتی از جمله آنتی ویروس به فعالیت می پردازد و به واسطه حسن شهرت، علاقه مندانی دارد بسیار وفادار. آنتی ویروس AVG علاوه بر نسخه رایگان یک نسخه تجاری نیز دارد که قیمت بالایی دارد اما نسخه رایگان به همان اندازه کارآمد و در بین کاربران محبوب است. محیط ظاهری آنتی ویروس AVG کاربرپسند و ساده است. این آنتی ویروس در کمتر از یک دقیقه نصب می شود و به محافظت از اطلاعات ارزشمند شما می پردازد. دانلود کنید. 3- آنتی ویروس رایگان مایکروسافت Security Essentials آنتی وروس کمپانی مایکروسافت تحت نام Microsoft Security Essentials شناخته می شود به صورت بلادرنگ به حفاظت از کامپیوترهای خانگی در برابر تهدید ناشی از ویروس ها، نرم افزارهای جاسوسی و دیگر بد افزارهای موجود در اینترنت می پردازد. آنتی ویروس مایکروسافت رایگان بوده و به آسانی قابل دانلود و نصب است. با استفاده از تکنولوژی جدید مایکروسافت مطمئن خواهید بود کامپیوتر شما محافظت خواهد شد. دانلود کنید. 4- آنتی ویروس رایگان پاندا کلود قطعاً آنتی ویروس پاندا کلود، اولین آنتی ویروس رایگان بر پایه فنآوری ابری (Cloud) است که سیستم کاربران را در برابر انواع ویروس ها، برنامه های جاسوسی، روتکیت ها و برنامه های مزاحم تبلیغاتی محافظت می کند. آخرین نسخه آنتی ویروس پاندا کلود Beta 3 می باشد که قابل نصب بر روی ویندوز ۷ به صورت ۳۲/۶۴ بیتی است. دانلود کنید. 5- آنتی ویروس رایگان Avira یکی از کم حجم ترین و ساده ترین آنتی ویروس های موجود در بازار، آنتی ویروس Avira می باشد. این آنتی ویروس عملکر بسیار خوبی در شناسایی ویروس ها و دیگر تهدیدات رایانه ای دارد. یک نکته منفی که می توان در رابطه با نسخه رایگان این آنتی ویروس به آن اشاره داشت، عدم پشتیبانی از اسکن ایمیل ها است. البته اگر ایمیل آلوده ای قصد خرابکاری در رایانه شما را دشاته باشد Avira به آن اجازه نخواهد داد. دانلود کنید.
  14. گفته می خوام به زودی خداحافظی کنم باید دید منظورش از نزدیک دقیقا چیه ؟
  15. Fahim

    آدمهاي ساده

    آدم های ساده متاسفانه فقط مورد سو استفاده اطرافیانشون هستند .
  16. Fahim

    Blender را بشناسيم

    فرمت فایل‌هاي نرم‌افزار Blender فرمت اصلی و داخلی این نرم‌افزار، Blend است که امکان ذخیره‌‌سازی صحنه‌هاي مختلف در قالب یک فایل را به کاربر مي‌دهد. درباره این فرمت، در نظر داشته باشید، فایلی که با فرمت Blend ایجاد شود، توسط تمام نسخه‌هاي این نرم‌افزار (چه قدیمی و چه جدید) قابل شناسایی و کار است. از طرفی تمامی اطلاعات مربوط به صحنه، بافت‌ها، صداها، مواد و... در همین فایل ساده ذخیره مي‌شوند که حجم بسیار اندکی دارد. پروژه‌هاي معروف ساخته شده با Blender یکی از رایج‌ترین کارها برای به اصطلاح جا انداختن نرم‌افزارهای جدید و معرفی امکانات آن‌ها به کاربران در سراسر دنیا، به خصوص در زمینه طراحی انیمیشن و بازی، استفاده از آن‌ها در ساخت پروژه‌هاي گوناگون و معرفی ابزار و امکانات این نرم‌افزارها به علاقه‌مندان است. نرم‌افزار Blender پس از ورود به بازار، با استقبال به نسبت خوبی از سوی کاربران مواجه شد، اما همواره این شک و تردید وجود داشت که این نرم‌افزار، بیشتر یک برنامه تفریحی است تا یک برنامه تخصصی که بتوان به کمک آن، پروژه‌هاي قابل‌قبول تولید کرد. تون روزندال، برای اثبات نادرستی این ادعا، به همراه تیمی متشکل از طراحان و برنامه‌نویسان، نسبت به ساخت پروژه‌هاي گوناگونی در ابعاد به نسبت بزرگ اقدام کرد تا با این کار بتواند توانایی‌هاي نرم‌افزار ارزشمند خود را بیشتر از قبل به دیگران نشان دهد. از جمله این پروژه‌ها مي‌توان به انیمیشن کوتاه Elephants Dream اشاره کرد (شكل 4). این انیمیشن کوتاه 9 دقیقه‌ای، نخستين پروژه تمام عیاری بود که به کمک نرم‌افزار Blender ساخته شد. اين داستان، روایت‌گر تقابل زندگی انسان‌ها با ماشین‌ها در دنیای به شدت صنعتی آینده بود. این پروژه با بودجه‌ای حدود 150 هزار دلار و در عرض هشت ماه ساخته و در 24 مارس سال 2006 به‌صورت ویدیویی به بازار عرضه شد. فضای سورئال فیلم و روش‌هاي به کار گرفته شده در ساخت آن، باعث جلب نظر منتقدان و مردم شد و نتیجه، برنده شدن آن به عنوان بهترین انیمیشن کوتاه در جشنواره فيلم سه‌بعدي اروپا بود. بعد از موفقیت این انیمیشن، تیم طراح Blender تصمیم گرفت، با ارتقای نرم‌افزار به کمک کاربران و به مدد اپن‌سورس بودن آن، ساخت پروژه‌اي بزرگ‌تر را با جزئیات بسیار بیشتری آغاز کند. حاصل کار، ساخت انیمیشن Big Buck Bunny بود (شكل5). شكل 5- انیمیشن کوتاه Big Buck Bunny این انیمیشن کوتاه ده دقیقه‌ای، برای طرفداران انیمیشن در ایران، شناخته شده‌تر از سایر محصولات تولید شده با Blender است. این کار هم که با بودجه‌ای تقریباً 150‌هزار دلاری ساخته شد، روایت‌گر داستان خرگوشی است که برای انتقام‌‌گرفتن از سه سنجاب، نقشه جالب و پیچیده‌ای طرح‌ریزی می‌کند. توجه به جزئيات، یکی از مهم‌ترین نقاط قوت اين انيميشن بود. ایجاد ساختار پوست حیوانات و طراحی دقیق و ظریف کاراکترها، این انیمیشن را به یکی از به یادماندنی‌ترین کارهای کوتاه تبدیل کرد. کاری که در آوریل سال 2008 و پس از هفت ماه کار، به بازار عرضه شد و مورد توجه علاقه‌مندان به انیمیشن‌هاي کامپیوتری قرار گرفت. بعد از موفقیت این دو پروژه بزرگ و چندین و چند پروژه کوچک دیگر، کم‌کم زمان آن رسیده بود تا توانایی‌هاي Blender در ساخت بازی‌هاي کامپیوتری به کاربران معرفی شود. به همین دلیل، طراحان Blender ، باز هم به سرپرستی آقای روزندال، نسبت به ساخت یک بازی کامپیوتری اقدام کردند. بازی که تحت عنوان Yo Frankie ! به بازار عرضه شد. این بازی كه بر‌اساس شخصیت‌ها و اتمسفر انیمیشن Big Buck Bunny توليد شده است، نخستين بازی تولید شده توسط Blender بود. به‌طور كلي طراحی مدل‌ها، انیمیشن و طراحی مراحل بازی به کمک نرم‌افزار Blender انجام شد و موتور بازی داخلی Blender در کنار موتور بازی Crystal 3d و با بهره‌گیری از اسکریپت‌هاي پايتون، محصول نهایی را به بازار ارائه کردند. نکته جالب توجه اين است که از این بازی دو نسخه وجود دارد. نسخه نخست اين بازي با بهره‌گیری از موتور‌بازی Blender و با زیر عنوان A Furry Vendetta به بازار ارائه شد و نسخه دیگری از آن نيز با استفاده از موتور‌بازی Crystal 3d و با زیرعنوان Furry Funny Frankie منتشر شد. هر دو بازی مراحل و کاراکترهای یکسانی دارند، اما نوع بازی (Game Play) آن‌ها به تابعیت از موتور بازیشان متفاوت است. جايگاه Blender Blender از همان ابتدا خود را به عنوان نرم‌افزاری مطرح کرد، که خلاقیت‌ها و نوآوری‌هاي فراوانی در عرصه گرافیک سه‌بعدی دارد و آینده‌ای روشن در انتظار آن است. آینده‌اي که امسال با رونمایی از نسخه جدید، شاید نزدیک‌تر و ملموس‌تر به نظر برسد. استفاده از Blender به هیچ عنوان به معنای بی‌نیازی از استفاده از نرم‌افزارهایی مانند 3dMax و Maya نیست و باید در نظر داشت که این نرم‌افزار مي‌تواند به عنوان یک ابزار کمکی، بسیاری از کارهایی را که با سایر نرم‌افزارها نیز قابل انجام است، به شکلی سریع‌تر و ساده‌تر به انجام رساند. طراحی بدن انسان یا هماهنگی حرکات لب و دهان با گفتار (LipSink) در نرم‌افزارهایی مانند 3dMax و ... نیز قابل انجام هستند، اما نرم‌افزاری مانند Poser مي‌تواند در خیلی از موارد، کار را برای کاربر راحت‌تر کند. Blender نیز دقیقاً همین حالت را دارد. کسانی که قصد کار در حیطه گرافیک سه‌بعدی را دارند، مي‌توانند در عین به کارگیری نرم‌افزارهایی مانند 3dMax، از امکانات جانبی Blender و سایر نرم‌افزارهای مشابه (Zbrush، Rhinoceros و ...) نیز جهت افزایش سرعت و کیفیت کار خود، بهره گیرند. منابع: - www.blender.org - www.wikipedia.com - www.imdb.com
  17. Fahim

    Blender را بشناسيم

    بسیاری از علاقه‌مندان به گرافیک سه‌بعدی با نرم‌افزارهایی مانند 3dMax یا Maya آشنا هستند. این نرم‌افزارها به دلیل قدمت و از طرفی منابع آموزشی فراوانی که در ارتباط با آن‌ها وجود دارد، بیشتر از سایر نرم‌افزارها بین کاربران شناخته شده هستند. اما در کنار این نرم‌افزارهای قدرتمند و معروف، نرم افزارهایی نیز هستند که تسلط به آن‌ها مي‌تواند راه دسترسی به نتیجه مطلوب را به مراتب ساده‌تر یا حداقل کوتاه‌تر کند. Blender از جمله مهم‌ترین این نرم‌افزارها است که در این شماره قصد داریم به بهانه انتشار نسخه جدید آن، شما را با تاریخچه، کاربردها و امکانات این نرم‌افزار آشنا کنیم. نرم‌افزاری که به‌رغم قدمت کم، با توجه به امکانات فوق‌العاده زیاد و نقاط مثبت فراوانش، توانسته به سرعت جای خود را در میان ابزارهای طراحی گرافیک سه بعدی و ساخت بازی‌هاي کامپیوتری باز کند و پا به پای بزرگان و نامداران این شاخه از علوم کامپیوتر، گروه زیادی را جذب خود کند. تاریخچه نرم‌افزار Blender در ابتدا به عنوان یک نرم‌افزار خانگی توسط استودیوی انیمیشن NeoGeo در آلمان و شرکت NaN (سرنام Not a Number Technology) طراحی شد. طراح اصلی این برنامه تون روزندالTon Roosendaal)) بود (شكل1) که در سال 1998 شرکت NaN را برای گسترش و پخش این نرم‌افزار تأسیس کرد و طراحان تمام حقوق آن زمان و آینده این نرم‌افزار را در ازای یک‌صد هزار یورو واگذار کردند. در سال 2002 روزندال با دریافت کمک‌هاي مردمی ظرف‌کمتر از دو ماه اعلام‌ کرد، دیگر قصد درآمدزایی از فروش این نرم‌افزار را ندارد و نسخه نهایی آن را به صورت اپن‌سورس و رایگان در اختیار کاربران قرار مي‌دهد. تعهدی که تا به امروز نیز پا برجا مانده است. طراحان Blender از همان ابتدای کار، چشم‌انداز وسیعی برای کار خود در‌نظر داشتند و مي‌دانستند که یکی از عوامل موفقیت آن‌ها، اجراپذیر بودن نرم‌افزار روی پلتفرم‌هاي مختلف است. امروزه، نرم‌افزار Blender روی بسیاری از پلتفرم‌ها و سیستم عامل‌هاي شناخته شده نظير MS Windows ،Mac OS X ،Free BSD ،IRIX Net BS و Open BSD ،Amiga OS ،Be OS ،Morph OS ،Pocket PC قابل اجرا است. بهبود کارایی و راحتی کار با نرم‌افزار، جزء اهدافی است که با ظهور هر نسخه جدید، بیش از پیش به آن توجه مي‌شود. در بهار امسال، نسخه 2,57 این نرم افزار، روی سایت [Hidden Content] قرار گرفت و سهولت کار و افزایش امکانات جانبی به نسخه اصلی قبلی، باعث شگفتی کاربران آن شد. این نسخه کماکان روی سایت Blender به صورت رایگان قابل دریافت است. شكل 1 - تون روزندال پديدآورنده Blender به همراه کاراکتر Big Buck Bunny امکانات نرم‌افزار Blender Blender نرم‌افزاری رایگان و اپن‌سورس است که مي‌تواند عصای دست علاقه‌مندان به گرافیک سه‌بعدی باشد. اما صرف رایگان یا اپن‌سورس بودن این نرم‌افزار نیست که باعث مي‌شود شما را به امتحان آن دعوت کنیم. Blender مجموعه‌اي از امکانات را در اختیار کاربر خود قرار مي‌دهد که شاید در نگاه نخست تکرار امکانات نرم‌افزارهای گرافیکی سه‌بعدی دیگر به نظر برسد. اما نقطه قوت اصلی این نرم‌افزار، توجه آن به جزئیات طراحی و مدل‌سازی سه‌بعدی و باز گذاشتن دست کاربران در اعمال سلیقه‌شان است. به عنوان مثال، این نرم‌افزار در کنار بهره‌گیری از امکانات بدیهی گرافیک سه‌بعدی مانند ابزار ساخت مدل‌هاي سه بعدی ((3D Modeling و ایجاد بافت‌هاي متنوع (Texturing)، امکاناتی مانند استفاده از ساختارهای دو بعدی در ايجاد احجام سه‌بعدی (UV Unwrapping) را فراهم می‌کند که در این امر به مراتب قدرتمندتر از سایر نرم‌افزارهای مشابه سه‌بعدی‌عمل مي‌کند. از دیگرقابليت‌هاي این نرم‌افزار مي‌توان به ایجاد ساختار اسکلتی قابل متحرک‌سازی (Rigging) و ایجاد پوست‌بدن و پردازش ساختار کششی مربوط به آن Skinning Animation)) اشاره‌کرد که هرچند در نرم‌افزاری مانند 3dMax هم انجام‌پذیرند، اما در Blender کاربر مي‌تواند با دقت بیشتری نسبت به ایجاد کاراکتر اقدام‌کند. کاربران حرفه‌ای‌تر 3dMax مي‌دانند که کارکردن با ساختار پوست کشیده شده روی اسکلت یک کاراکتر، یکی از دشوارترین و زمان‌برترين مراحل طراحی کاراکتر با Max است، اما کافی است فقط یک بار Blender را در این زمینه امتحان کنید تا تفاوت را كاملاً احساس کنید. اینجا دیگر خبری از مشکلات ناشی از کشیدگی پوست، در رفتگی‌هاي پوست از عضلات، انجام محاسبات برای به دست آوردن Envelope‌ها و غيره نیست. از طرفی نرم‌افزارهایی مانند Maya یا Max در طراحی داینامیکی ذرات و شبیه‌سازی آن‌ها (Particle Simulation)، قدرت عمل قابل قبولی دارند، اما در Blender این توانایی، از حد قابل قبول، بسیار فراتر است. شبیه‌سازی جریانات سیال مانند مایعات یا دود و شبیه‌سازی ذراتی مانند برف و باران، در نرم‌افزار Blender بسیار دقیق‌تر و با پارامترهای فراوان تری در دسترس کاربر قرار دارند. از طرفی نرم‌افزار Blender با بهره‌گیری از سیستم تدوین غیرخطی (Non-Linear Simulation) به کاربران خود اجازه مي‌دهد تا پس از مدل‌سازی و ايجاد انیمیشن مورد نظر خود، نسبت به ویرایش و نهایی‌کردن محصول خود اقدام کنند. این نرم‌افزار در کنار به کارگیری شبیه‌سازی‌هاي پیشرفته شامل طراحی اندام واقعی، داینامیک اجسام نرم، ابزار قدرتمند طراحی کاراکتر، ایجاد مواد و کامپوزیت‌هاي واقعی و بسیار نزدیک به خصوصیات فیزیکی دنیای واقعی، در واقع جعبه ابزاری از قدرتمندترین امکانات گرافیک سه‌بعدی را ارائه مي‌كند. امکاناتی که شاید به این شکل در هیچ نرم‌افزار دیگری وجود نداشته باشند و حاصل به کارگیری آن‌ها به مراتب از نتایج حاصل از کار با دیگر نرم افزارها قوی‌تر باشد. همچنين شايد امکان فوق‌العاده ارزشمند موتور بازی Blender برای استفاده از این نرم‌افزار جمع و جور اما ارزشمند و دوست داشتنی دليل قانع كننده‌اي باشد. اما در نسخه آخر این نرم‌افزار که در بهار امسال ارائه شد، برخی از خصوصیات قبلی مورد بازنگری قرار گرفت و بهبود یافت و از طرفی برخی خصوصیات و امکانات جدید به این نرم‌افزار، اضافه شد. برخی از مهم‌ترین خصوصیات آخرین نسخه نرم‌افزار Blender عبارتند از‌: 1 – پشتیبانی از اشکال هندسی پایه گوناگون و متنوع مورد نیاز در طراحی سه‌بعدی که نسبت به نرم‌افزارهای مشابه، تنوع و گوناگونی بیشتری دارند و به طراح این اجازه را مي‌دهند تا با بهره‌گیری از آن‌ها، نسبت به ايجاد انیمیشن دلخواه اقدام کند. 2 – افزایش امکانات رندرگیری و سازگاری با نرم‌افزار YafaRay (یکی از نرم افزارهای رایگان و تخصصی تهیه رندر) 3 – افزودن امکانات جانبی به ابزار ساخت انیمیشن با استفاده از فریم‌هاي کلیدی(KeyFrame Animation) از جمله بهبود وضعیت کار با آرماتورها و اسکلت بندی بدن موجودات، تغییر فرم دادن‌ها، وزن‌دهی به اجسام و.... 4 – تعیین نحوه برخورد و تصادم مش‌ها (Mesh Collision) که طراحان بازی به خوبی به ارزش آن واقفند. با استفاده از این امکان، سازندگان بازی مي‌توانند بدون نیاز به یک موتور بازی مجزا، نسبت به تعریف محدوده تصادم اشیا اقدام کنند و به عنوان مثال تعریف کنند که اگر کاراکتری رو‌به‌روی یک کلبه چوبی قرار گرفت، با ایجاد حالت Collision امکان رد شدن او از درون چوب وجود نداشته باشد. 5 – امکان استفاده از اسکریپت‌نویسی به زبان پايتون جهت ايجاد ابزار جدید برای ساخت بازی‌هاي کامپیوتری 6 – افزایش امکانات تدوین غیرخطی صوتی و تصویری برای ویرایش نهایی انیمیشن‌ها شاید مهم‌ترین ابزار نسخه‌هاي جدید، یعنی Game Blender که ابزار تکامل یافته‌اي از تعامل کاربران با پروژه را در اختیار طراحان قرار می‌دهد. این ابزار که به نوعی یک زیرپروژه (Sub-Project) در دل نرم‌افزار اصلی محسوب می‌شود، یکی از کاربردی‌ترین ابزارهای فعلی برای طراحان و سازندگان بازی‌ها است که با درنظر گرفتن اصول تعامل کاربر، دست طراح را در ايجاد بازی بسیار باز گذاشته و این امکان را به او مي‌دهد که حتی بدون دانش برنامه‌نویسی تخصصی، بتواند با طراحی انیمیشن، محیط و کاراکترها، نسبت به ايجاد یک بازی کامل اقدام كرده و با بهره گیری از موتور بازی داینامیک خود نرم‌افزار، محصول نهایی را ارائه کند. رابط کاربري شاید در نگاه نخست، کار کردن با Blender برای کاربرانی که به استفاده از نرم‌افزارهایی مانند 3dMax عادت دارند، کمی دشوار به نظر برسد. در Blender تقریباً هر تابعی، یک کلید میانبر مستقیم دارد و اصولاً کار کردن با Blender در نگاه نخست کمی دشوار به نظر مي‌رسد (شكل2). شكل 2 - محیط نرم‌افزار Blender و نمونه کاراکتر ايجاد شده توسط این نرم‌افزار اما اپن‌سورس‌بودن این نرم‌افزار، باعث شده تا بسیاری از کاربران حرفه‌ای، به کمک یکدیگر، با افزایش امکانات تعاملی نرم‌افزار آن را به یکی از نرم‌افزارهای گرافیکی بسیار خوش دست و كاربر پسند تبديل کنند. در نسخه آخر این نرم‌افزار، رابط كاربري امکانات زیر را در بر مي‌گیرد: 1 – مدهای طراحی در نرم‌افزار Blender دو مد طراحی اصلی وجود دارد: Object Mode و Edit Mode. در حالت Object Mode، کاربر مي‌تواند تمام تغییرات دلخواه را روی شيء یا اشیا مورد نظر، به شیوه نرم‌افزارهایی مانند 3dMax و Maya اعمال کند. مثلاً انجام اعمالی مانند Move و Scale و Rotate در این حالت امکان‌پذیر است. اما با تغییر مد (‌توسط کلید Tab‌) کاربر مي‌تواند جزئیات دلخواه خود را به شکل کاملی ویرایش کند. مثلاً انجام تغییرات در یک گره خاص از مش، در این حالت امکان‌پذیر است. شاید در نگاه نخست به نظر برسد که وجود این مدها، کار را برای کاربر دشوار می‌کند، اما پس از کمی کارکردن، متوجه مزایای این دو حالت مي‌شوید و شاید پس از آن کار کردن با 3dMax و نرم افزارهایی با ساختار مشابه آن، برای‌ شما کمی سخت به نظر برسد‌! 2 – استفاده از کلیدهای میانبر تا قبل از ارائه نسخه 2,3 این نرم‌افزار، استفاده از کلیدهای میانبر، تنها راه وارد کردن فرامین بود و شاید به همین دليل بود که بيشتر کاربران از امتحان کردن Blender ترس و واهمه داشتند و فکر مي‌کردند که یادگیری این نرم‌افزار، کار بسیار دشوار و طاقت فرسایی است. اما نسخه‌هاي بعدی ( از جمله نسخه57,2) با به کارگیری منوهای گرافیکی، کار را برای کاربران بسیار ساده کردند. اما به هر حال در نظر داشته باشید که تسلط به کلیدهای میانبر، باعث افزایش چشم‌گیر سرعت کار شما خواهد شد. طراحی یک انیمیشن یا بازی، به خودی خود، فرآيندي سنگین و زمانبر است، در این ميان کسانی که با تسلط به کلیدها کار می‌کنند، حداقل در حیطه زمان، بسیار جلوتر از کاربرانی هستند که در منوها، در به در به دنبال گزینه دلخواه خود می‌گردند. 3 – ورودی‌هاي عددی یکی از امکانات بهبود‌یافته نسخه جدید، کارکردن با ورودی‌هاي عددی، برای وارد کردن اندازه‌ها و تغییرات مورد نیاز در اندازه، زاويه‌هاي چرخش و... است. از طرفی به کمک همین قسمت، کاربران حرفه‌ای‌تر مي‌توانند با بهره گیری از پايتون، نسبت به وارد کردن فرمول‌هاي ریاضی مورد نیاز برای ترسیم اشکال و احجام هندسی، اقدام كنند. 4 – رابط گرافیکی کاربر در Blender به یک یا چند صفحه تقسیم مي‌شود که خود این صفحات زیرمجموعه‌هاي پرشماری برای برطرف‌كردن احتیاجات کاربر دارند. این رابط گرافیکی، قابلیت شخصی‌سازي را دارند و کاربر مي‌تواند بر‌اساس نیاز خود برای انجام کارهایی خاص از قبیل تدوین ویديویی انیمیشن‌ها یا بافت دهی، آن‌ها را به دلخواه خود تنظیم کند(شكل3). شكل 3- محیط شخصی شده نرم‌افزار Blender با مطالعه جدول 1، مشاهده مي‌کنید که امکانات سخت‌افزاری مورد‌‌نیاز برای اجرای نرم‌افزار Blender به شکل چشم‌گیری، پایین‌تر از بسیاری از نرم‌افزارهای گرافیک سه‌بعدی است.
  18. شرکت خودروسازی فولکس واگن، کوچک‌ترین و اقتصادی‌ترین خودروی یک‌نفره خود را معرفی می‌کند. شرکت خودروسازی فولکس‌واگن که به طراحی و تولید خودروهای کاملا اقتصادی شهرت دارد، این‌بار نمونه مفهومی یک خودروی یک نفره و کاملا اقتصادی را با نام نیلس (NILS) معرفی کرده است. بر اساس گزارش گیزمگ، شرکت خودروسازی فولکس‌واگن با الهام از طراحی خودروهای فرمول وان (F1)، نمونه مفهومی از یک خودروی یک نفره الکتریکی با بدنه آلومینیومی و وزنی در حدود 460 کیلوگرم طراحی کرده است. طراحان فولکس واگن می‌گویند: نیلس (NILS) با داشتن یک موتور الکتریکی 25 کیلوواتی می‌تواند حداکثر با سرعت 130 کیلومتر در ساعت حرکت کند.
      • 3
      • Like
  19. Fahim

    طراحی یک نرم‌افزار مطمئن

    بررسی مدل دربیش از دو دهه گذشته، یکی از جذاب‌ترین دیدگاه‌ها برای بررسی درستی سیستم‌های کنترلی مبتنی بر کامپیوتر، بررسی مدل یا «Model Checking» بوده است. بررسی مدل روشي مبتنی بر ریاضیات برای آزمایش ویژگی‌های رفتاری مورد انتظار یک سیستم بر پایه یک مدل مناسب است که این کار از طریق امتحان و نظارت خودکار و قاعده‌مند روی تمام حالت‌های مدل انجام می‌شود. "بزرگ‌ترین مشکل روش آزمايش مدل همان‌طور که پیش‌تر اشاره شد، انفجار فضای حالات است. با پردازنده‌ها و حافظه‌های کنونی، پیشرفته‌ترین ابزارهای بررسی مدل تنها قادر به بررسی فضای حالتی با بزرگی 108 تا 109 حالت هستند." جذابیت روش بررسی مدل نیز آن است که روشی کاملاً خودکار است و در صورتی‌که هنگام آزمایش مدل، یکی از ویژگی‌های مورد انتظار سیستم برآورده نشود، مثال نقض یا حالتی که موجب بروز خطا یا برآورده نشدن آن انتظار شده است، توسط بررسی‌کننده اعلام می‌شود که این امر، اطلاعات ارزنده‌ای در راستای برطرف كردن نقص و اصلاح سیستم در اختیار طراح و سازنده آن قرار می‌دهد. به همین دلیل، روش هوشمند و مؤثری برای کشف و برطرف كردن خطا در بررسی سخت‌افزارها و مهندسی نرم‌افزار نیز به شمار می‌رود. ضمن آن‌که خصوصیت مبتنی بر ریاضی‌بودن آن موجب می‌شود که قطعیت درستی روش آن (مستقل از درستی ابزار) صد‌درصد و قابل اثبات باشد. بسیاری از برنامه‌های موفق صنعتی، موفقیت خود را مدیون کارایی و دقت ابزارهای آزمايش مبتنی بر روش بررسی مدل بوده‌اند. روش بررسی مدل، به یک مدل از سیستم و یک ویژگی مورد انتظار از آن سیستم نیاز دارد تا طی یک سری قواعد مشخص بررسی کند که آیا مدل داده شده، آن ویژگی را برآورده می‌کند یا خیر؟ از جمله مواردی که در بسیاری از سیستم‌ها بررسی می‌شوند، عدم وجود بن‌بست (Deadlock) در ویژگی‌های ثابت و تغییرناپذیر و درخواست-پاسخ های سیستم است. بن‌بست به حالتی گفته می‌شود که با رسیدن به آن حالت، سیستم دیگر قادر به پیشروی و گذار به حالت دیگر نباشد. نقص برنامه زمانی یافت می‌شود که سیستم در بررسی این ویژگی به اشکال برخورد کند و یک سیستم زمانی بدون اشکال تلقی می‌شود که در بررسی تمام انتظارات سیستم با اشکالی برخورد نکند. بنابراین، بدون اشکال بودن سیستم همواره با انتظاراتی که از آن سیستم داریم در رابطه است، نه ویژگی‌های مطلق آن. در شکل 2 شِمايي از بررسی درستی یک سیستم نشان داده شده است. به دلیل پیشرفت‌های مداوم الگوریتم‌ها و ساختمان‌های داده و در کنار آن پیشرفت خیره‌کننده فناوری‌های سخت‌افزاری، بررسی مدل که دو دهه قبل تنها برای مثال‌های ساده کار می‌کرد، امروزه برای بسیاری از طرح‌های واقعی و عملی كاربردي است. به‌طوری که می‌توان از آن به عنوان یک روش کامل، پرکاربرد و مهم در بررسی و برطرف كردن خطا در دو دهه گذشته یاد کرد.در بررسی مدل از روش‌های فرمال استفاده می‌شود که تقريباً در ده تا پانزده درصد پروژه‌های نرم‌افزاری به‌کار می‌روند. اگر بخواهیم روش‌های فرمال را به اختصار معرفي کنیم، می‌توانيم بگوييم روش‌هایی بر پایه ریاضیات کاربردی هستند که برای مدل‌سازی و تحلیل سیستم‌های ICT با هدف بررسی صحت کارکرد سیستم با تکیه بر قدرت ریاضیات به کار می‌روند. روش‌های فرمال پتانسیل فراوانی در بررسی و صحت‌سنجی نرم‌افزار در فرآیند طراحی برای توسعه‌دهندگان دارد و به همین دلیل استفاده از آن در طراحی نرم‌افزارهای حساس و حیاتی به شدت توصیه شده است. استانداردهای مبنتی بر روش‌های فرمال در سازمان فضایی ناسا، IEC (سرنام International Electrotechnical Commission)، ESA (سرنام European Space Agency) و FAA (سرنام Federal Aviation Authority) نیز مؤید همین صحبت است.طی دو دهه گذشته، تحقیقات در روش‌های فرمال به توسعه روش‌هاي گوناگون بررسی و صحت‌سنجی منجر شده که کشف زود هنگام عیوب نرم‌افزارها را تسهیل کرده است. این روش‌ها به همراه ابزارهای نرم‌افزاری قدرتمندی که می‌تواند بسیاری از مراحل بررسی را به‌صورت خودکار در آورد، همراه شده و به این ترتیب موجب ایجاد تحولی در طراحی و تولید نرم‌افزارهای مطمئن شده است. بررسی‌ها نشان داده، رویه‌های بررسی فرمال می‌توانست بسیاری از عیوب نرم‌افزاری و سخت‌افزاری را از جمله اشکال موشک فضایی Ariane-5، پردازنده‌های پنتیوم2، ماشین پرتودرمانیTherac-25 و... را کشف کند. ضمن این‌که ماجول‌های فضاپیمای Deep Space-1 ناسا که در سال 1998 به فضا پرتاب شد، با استفاده از روش بررسی مدل و روش‌های فرمال آزمایش شد. از آنجا که بررسی مدل رفتار سیستم، به شکلی دقیق و غیرمبهم به زبان ریاضی توصیف شده است، با استفاده از ابزارهای یاد شده می‌توان علاوه‌بر تشخیص خطا، ابهامات رفتاری، ناسازگاری‌ها، ناکامل بودن روش‌ها و... را نیز در فاز طراحی کشف کرد که این موارد در حالت معمول مدت‌ها بعد از گذشت فاز طراحی آشکار می‌شوند. شكل 3- «بررسي مدل» می‌دانیم در بررسی مدل، تمام حالت‌های ممکن سیستم امتحان می‌شود. همانند بازی شطرنج کامپیوتری که قبل از هر حرکت، تمام حرکت‌های ممکن بررسی می‌شود، یک بررسی کننده مدل نیز با رفتاری مشابه در تمامی راه‌های ممکن، به دنبال راهی می‌گردد تا مثال نقضی برای برآورده نشدن یک ویژگی یا انتظار سیستم پیدا کند و با نرسیدن به این موفقیت، برآورده شدن آن انتظار را نتیجه می‌دهد. بزرگ‌ترین مشکل این روش همان‌طور که پیش‌تر اشاره شد، انفجار فضای حالات است. با پردازنده‌ها و حافظه‌های کنونی، پیشرفته‌ترین ابزارهای بررسی مدل تنها قادر به بررسی فضای حالتی با بزرگی 108 تا 109 حالت هستند. با استفاده از الگوریتم‌های هوشمند و ساختمان داده‌های مناسب برای مسائل به‌خصوص فضای حالات بزرگ‌تری به اندازه 1020 تا حتی 10476 حالت نیز قابل بررسی است. حتی پتانسيل كشف کوچک‌ترین و ظریف‌ترین خطاهایی که در مرور دقیق، آزمايش‌ها و شبیه‌سازی‌ها کشف نشده باقی می‌مانند، در صورت داشتن زمان، منابع کافی و مواجه‌نشدن با پدیده انفجار فضای حالات، وجود خواهد داشت. شکل 3 دیدگاه کلی بررسی مدل را به صورت خلاصه بیان می‌کند. "هرگز نمی‌توان صد‌درصد تضمین داد یک سیستم در ابعاد واقعی بدون اشکال است. اما همچنان می‌توان از بررسی مدل به عنوان یک روش مؤثر و کارا برای کشف خطاهای احتمالی در طراحی استفاده کرد." برای این‌که بررسی مدل با دقت بالا امكان‌پذير شود، ویژگی‌های سیستم باید به روشی دقیق و غیر مبهم توصیف شود. از مهم‌ترین و کلی‌ترین ویژگی‌های یک سیستم می‌توان به موارد زير اشاره کرد: Safety: یک چیز بد هرگز رخ ندهد. Liveness: یک چیز خوب همواره رخ بدهد. Functional Correctness: آیا سیستم کاری را که از آن انتظار می‌رود انجام می‌دهد؟ Reachability: آیا حالات دلخواه سیستم از حالت آغازین دسترس‌پذیر است؟ آیا ممکن است سیستم با رسیدن به یک حالت بن‌بست، متوقف شود؟ Fairness: آیا تحت شرایط به‌خصوصی یک اتفاق به‌طور مکرر رخ می‌دهد؟ Realtime: آیا سیستم به موقع عمل می‌کند؟ هرکدام از این ویژگی‌ها در سیستم‌های مختلف تفسیرهای گوناگونی خواهد داشت که با توجه به ساختار سیستم و مدل مربوطه، بررسی شده و برقراری آن تأیید می‌شود. نقات قوت از مهم‌ترین نقاط قوت تکنیک بررسی مدل می‌توان به موارد زیر اشاره کرد: - با توجه به این‌که بررسی مدل یک دیدگاه کلی برای صحت‌سنجی ارائه می‌کند، برای گستره وسیعی از برنامه‌ها مانند سیستم‌های تعبیه شده، مهندسی نرم‌افزار و طراحی سخت‌افزار كاربردي است. - این روش از بررسی جزئی نیز پشتیبانی می‌کند. به بیان دیگر، می‌توان ویژگی‌ها را تک تک بررسی کرد و نیازی به تعیین کامل نیازمندی‌ها نیست. بنابراین، می‌توان اولویت بررسی را ابتدا به موارد مهم‌تر و ضروری‌تر اختصاص داد. - درصورت وجود اشکال و کشف نادرستی یک ویژگی، اطلاعات مفیدی برای تشخیص و برطرف كردن آن تولید شده و در اختیار قرار خواهد گرفت. - اين پتانسيل وجود دارد که کل کار تنها با فشار یک دکمه انجام شود و به‌طور کلی استفاده از تکنیک بررسی مدل، به تعامل یا درجه بالایی از تجربه و تخصص نیازی ندارد. - استفاده از این روش با سرعت زیادی در حال رشد است و استقبال از آن در صنعت روز به روز در حال افزایش است. شرکت‌های سخت‌افزاری متعددی آزمایشگاه اختصاصی خود را برای بررسی صحت کارکرد محصولات خود راه‌اندازی کرده‌اند و حتی آشنایی به این روش به عنوان يكي از مفاد شرایط استخدامی برخی از شغل‌ها مطرح شده است. در آینده شاهد نسخه‌های تجاری بررسی‌کننده‌های مدل نیز خواهیم بود. - به راحتي مي توان اين تكنيك را در چرخه فعلی توسعه نرم‌افزارها قرار داد و منحنی یادگیری آن چندان شیب‌دار نیست و مطالعات تجربی نشان داده که این کار زمان توسعه را کاهش می‌دهد. - پایه ریاضی دقیقی دارد و بر پایه تئوری الگوریتم‌های گراف، ساختمان داده‌ها و منطق است. نقاط ضعف هر روش در کنار مزایایی که دارد، در بر گيرنده برخي از نكته‌هاي منفي است. از جمله نقاط ضعف روش بررسی مدل می‌توان به موارد زیر اشاره کرد: - به دلیل نا‌متناهی بودن داده‌ها، این روش اصولاً برای برنامه‌های کنترلی كاربردي است و برای برنامه‌هایی برپایه داده مناسب نیست. - برای موضوعات تصمیم‌پذیر قابل استفاده است و برای سیستم‌های با حالات نامتناهی یا استدلال درباره انواع داده‌ای انتزاعی که به منطق‌های تصمیم‌ناپذیر یا نیمه‌تصمیم‌پذیر نیاز دارند،كاربردي نیست. - این روش تنها مدل سیستم را بررسی می‌کند و خود سیستم واقعی یا نمونه آزمایشی آن را بررسی نمی‌کند. بنابراین، روش‌های دیگر بررسی مانند آزمايش برای پیدا کردن خطاهای تولید و ساخت (برای سخت‌افزار) و همچنین یافتن اشکالات کدنویسی (برای نرم‌افزار) به عنوان مکمل این روش ضروري است. - در این روش تنها نیازمندی‌های حالت‌دار بررسی می‌شوند و درباره درستی سایر ویژگی‌های بررسی نشده نمی‌توان نظری داد. - گاهی بر اثر زیاد شدن تعداد حالت‌ها، به دلیل محدود بودن میزان حافظه با انفجار فضای حالت روبه‌رو خواهیم شد. به‌رغم وجود روش‌های مؤثر بسیار برای مقابله با این مشکل، مدل‌های سیستم‌های واقعی ممکن است همچنان برای جا گرفتن کامل در حافظه، بسیار بزرگ باشند. - برای یافتن برخی انتزاعات مناسب به منظور به‌دست آمدن مدل‌های کوچک‌تر به برخی تخصص‌ها و مهارت‌ها نیاز است. - به دلیل آن‌که بررسی کننده‌های مدل نیز مانند هر نرم‌افزار دیگری ممکن است نقص نرم‌افزاری داشته باشند، تضمینی وجود ندارد که نتیجه تولید شده کاملاً درست باشد. در نتیجه تمام این توضیحات، می‌توان به این نکته رسید که هرگز نمی‌توان صد‌درصد تضمین داد یک سیستم در ابعاد واقعی بدون اشکال است. اما همچنان می‌توان از بررسی مدل به عنوان یک روش مؤثر و کارا برای کشف خطاهای احتمالی در طراحی استفاده کرد و با تکیه بر آن به میزان چشم‌گیری سطح اطمینان به نرم‌افزار را بالا برد. منبع : ماهنامه شبکه
  20. Fahim

    طراحی یک نرم‌افزار مطمئن

    وابستگی به کامپیوتر و سیستم‌های نرم‌افزاری تقریباً در تمام جنبه‌های زندگی روزمره به سرعت در حال افزایش است و این وابستگی به شکلی است که ما حتی در بسیاری موارد، از وجود و نقش کامپیوتر و نرم‌افزار در آن‌ها بی‌اطلاع هستیم. بسیاری از امور کنترلی در خودروهای امروزی از قبیل ترمز، کیسه هوا، کنترل موتور و سوخت‌رسانی بر پایه نرم‌افزارهای تعبیه‌شده(Embedded) در سيستم كامپيوتري خودرو کار می‌کنند. تلفن‌های همراه، سیستم‌های ارتباطی، دستگاه‌های پزشکی، سیستم‌های صوتی و تصویری و همچنین حمل و نقل و راه و ترابری، سیستم‌های تولیدی و کنترلی و بسیاری از تجهیزات الکترونیکی در کل برای افزایش کارایی، انعطاف‌پذیری بیشتر و کاهش هزینه، به میزان زیادی از نرم‌افزارها استفاده می‌کنند. در اين ميان برخي سيستم‌ها به نحوی با جان و مال انسان‌ها سر و‌کار دارند و بروز خطا و خرابی در آن‌ها موجب خسارت‌های جبران‌ناپذیری خواهد شد. طراحی این سیستم‌ها که از آن‌ها تحت عنوان سیستم‌های حساس و حیاتی (Safety-Critical) یاد می‌کنیم باید به گونه‌ای کاملاًً مطمئن انجام شود. حتماً شما هم در مواردی هنگام استفاده از دستگاه‌های خودپرداز بانک با این مسئله مواجه شده‌اید که سیستم دچار اشکال شده باشد و موقتاً قادر به پاسخ‌گویی نباشد. این‌گونه اشکال‌ها را در چنین سیستمی می‌توان پذیرفت. اما در همین سیستم، اشکال در نقل و انتقال پول غیرقابل‌پذیرش است. به این معنا که اگر سیستم قادر به پاسخ‌گویی نباشد، خسارتی به کسی وارد نمی‌شود، اما در صورتی که کاری را انجام می‌دهد، تحت هیچ شرایطی و با بروز هر رخدادی نباید این کار با اشتباه همراه شود. اهمیت اين مسئله در سیستم‌هایی مانند سیستم اطفاي حریق، سیستم کنترل پرواز هواپیما، راکتورهای هسته‌ای، دستگاه‌های پرتونگاری، سیستم‌های کنترل موشک، فضاپیماها و مواردی از این قبیل بسیار بیشتر است و نرم‌افزارهایی که با این‌گونه موارد در ارتباط هستند باید کاملاً عاری از خطا بوده و تمام شرایط ممکن برای آن پیش‌بینی شده و تصمیم درست در هر یک از آن شرایط تعریف شده باشد و در گام بعد، این طراحی به طور کاملاً دقیق پیاده‌سازی و آزمايش شده باشد. البته، این کار هزینه‌های زیادی از جنبه مالی و زمانی در پی خواهد داشت. اما حساس و حیاتی بودن آن، چنین هزینه‌هایی را توجیه می‌کند.كاري که شاید برای نرم‌افزارهای معمول به هیچ‌عنوان مقرون به صرفه نبوده و گاهی نابخردانه باشد. شكل 1- هزينه‌هاي مطرح شدن، كشف و اصلاح عيوب در طول چرخه حيات نرم‌افزار وجود اشکال در نرم‌افزارهای پیچیده‌ای همچون ویندوز، در نهایت به توقف سیستم و شروع دوباره دستگاه و در بدترین شرایط به از دست رفتن اطلاعات منجر می‌شود که در اغلب موارد اگر آن اطلاعات به معنای واقعی، حیاتی‌باشد قبلاً نسخه پشتیبان از آن تهیه شده است. صرف نظر از امکان انجام آزمايش کامل این نرم‌افزار، اهمیت این مسئله در نگاه کلی به قدری نیست که شرکت سازنده آن چندین سال با قدرتمندترین سخت‌افزارهای پردازشی، آن را بررسی کرده و در نهایت آن را به ناچار با قیمت چند میلیون دلار روانه بازار کند! اما وجود خطای نرم‌افزاری در یک موشک فضایی مانند Araine-5 می‌تواند موجب انفجار آن تنها در 36 ثانیه پس از پرتاب شود. نمونه‌هایی از این قبیل در تاریخ کم نبوده‌اند. به ‌عنوان مثال، وجود اشکال در بخش کنترل ماشین پرتودرمانی Therac-25 موجب تششع بیش از اندازه امواج رادیواکتیو و مرگ شش بیمار سرطانی شد. در نمونه‌ای ديگر كه خوشبختانه تلفات جاني در پي داشت، خطای نرم‌افزاری در سیستم تحویل بار مسافران موجب تأخیر نه ماهه افتتاح فرودگاه دنور (Denver) و ضرر روزانه 1/1 میلیون دلار شد که در نوع خود خسارت سنگینی به شمار می‌رود. یا به عنوان نمونه خطاي سخت‌افزاری در طراحی، می‌توان به وجود خطا در بخش تقسیم ممیز شناور در پردازنده‌های پنتیوم2 اینتل اشاره کرد که در اوایل دهه 90 موجب جمع‌آوری پردازنده‌ها از بازار و ضرر 475 میلیون دلاری و از سوی دیگر ضربه خوردن به شهرت و اعتبار این شرکت به عنوان یکی از بزرگ‌ترین تولیدکنندگان تراشه در دنیا شد. مرور دقیق (Peer Review) مرور دقیق و آزمايش نرم‌افزار در عمل، عمده‌ترین روش‌هاي بررسی نرم‌افزارها به‌شمار می‌روند. مرور دقیق به طور معمول توسط یک تیم از مهندسان نرم‌افزار که عضو تیم توسعه سیستم تحت بازبینی نیستند، انجام می‌شود. کد کامپایل نشده و هنوز اجرا نشده است، اما به صورت ایستا و به‌طور کامل تحلیل و بررسی می‌شود. مطالعات تجربی نشان می‌دهد، مرور دقیق، یک روش مؤثر است که طی آن 31 تا 93 درصد و به‌طور میانگین 60 درصد عیوب سیستم کشف می‌شود. با این‌که این روش اغلب به صورت موردی و کلی انجام می‌شود، انواع اختصاصی‌تر از رویه‌های مرور دقیق، مانند زمانی که به دنبال اهداف خاصی از کشف خطا هستیم می‌تواند مؤثرتر واقع شود. می‌توان گفت، حدود هشتاد درصد تمام پروژه‌های نرم‌افزاری به شکلی از این روش استفاده مي‌كنند. تجربه نشان داده،‌ به دلیل ایستا بودن روش مرور دقیق، کشف خطاهای ظریف و کوچک از قبیل خطاهای مربوط به همزمانی اجرای دستورات و نقص‌های الگوریتم، با استفاده از این روش مشکل است. "مرور دقیق (Peer Review)، یک روش مؤثر است که طی آن 31 تا 93 درصد و به‌طور میانگین 60 درصد عیوب سیستم کشف می‌شود." آزمايش نرم‌افزار آزمايش، بخش مهمی از هر پروژه مهندسی نرم‌افزار را تشکیل می‌دهد و به طور معمول نخستين چیزی که برای یافتن خطا در نرم‌افزارها به ذهن می‌رسد، همین است. بین سي تا پنجاه درصد کل هزینه‌های یک پروژه نرم‌افزاری به آزمايش آن اختصاص داده می‌شود. برخلاف مرور دقیق که کد به صورت ایستا و بدون اجرای آن تحلیل و بررسی می‌شود، آزمايش، یک روش پویا است که در آن نرم‌افزار به صورت واقعی اجرا می‌شود و با دادن‌ورودی، مجبور‌کردن نرم‌افزار به طی یک مسیر اجرایی دلخواه و مقایسه خروجی تولید شده با مستندات موجود برای توصیف سیستم، نتیجه آزمايش حاصل می‌شود. مزیت اصلی آزمايش آن است که می‌توان آن را برای انواع نرم‌افزار، از برنامه‌های کاربردی گرفته تا کامپایلرها و سیستم عامل‌ها به‌کار گرفت. در این راستا دو اصطلاح و مفهوم کلی تحت عنوان آزمايش جعبه سیاه و آزمايش جعبه سفید وجود دارد. در آزمايش جعبه سیاه بدون درنظر‌گرفتن ساختار برنامه و متدهای آن و مستقل از چگونگی پیاده‌سازی آن‌ها، ورودی‌های مشخصی داده می‌شود و در صورتی که خروجی مورد انتظار دریافت شد، فرض می‌شود که برنامه درست نوشته شده است. بدیهی است که چون همه ورودی‌های ممکن به سیستم داده نشده، این احتمال وجود دارد که در طول حیات سیستم، به یک ورودی خاص آزمايش نشده برخورد کنیم که سیستم در آن حالت به علت وجود خطا، خروجی مطلوب تولید نکند. از این رو،گفته می شود که این نوع آزمايش می‌تواند بیانگر وجود خطا باشد، اما نمی‌تواند درباره عدم وجود خطا نظری بدهد. به همین دلیل، این روش برای آزمايش نرم‌افزارهای حساس و حیاتی مناسب نیست. برای این‌گونه نرم‌افزارها باید تمامی حالت‌هایی که سیستم ممکن است تحت شرایطی به آن‌ها برسد، تولید و بررسی شود که به این روش، آزمايش جعبه سفید گفته می‌شود. با بزرگ شدن نرم‌افزار، تمام حالات ممکن با سرعت فزاینده‌ای زیاد می‌شود. به همین دلیل، بررسی تمام حالات به میزان قابل توجهی زمان‌گیر است که گاهی برای کم کردن این زمان راهی جز بالا بردن قدرت پردازشی و صرف هزینه وجود ندارد. البته، صرف نظر از امکان انجام، به دلیل محدود بودن فناوری‌های سخت‌افزاری پردازش اطلاعات، حتی با توانمندترین ابرکامپیوترها نیز نمی‌توان یک نرم‌افزار پیچیده و بزرگ را در طول مدت عمر انسان به طور کامل به روش جعبه سفید آزمايش کرد و در عمل تنها زیرمجموعه‌ای از مسیرهای اجرایی بررسی می‌شوند. تنها دلیل این‌که تاکنون نرم‌افزار بزرگ و پیچیده بدون اشکال تولید نشده است و از طرف دیگر، حتی بزرگ‌ترین سیستم‌عامل‌های مطمئن تولید شده، از نظر پیچیدگی به مراتب از ساده‌ترین سیستم‌عامل‌های کامپیوترهای شخصی کوچک‌تر و محدودتر هستند، همین امر است. شكل 2 - شماي كنترل سيستم از طريق روش «بررسي مدل» هر نرم‌افزار برای تصمیم‌گیری و گذار از یک حالت به حالت دیگر به نحوی از دستورات شرطی استفاده می‌کند. اگر یک نرم‌افزار بدون هیچ شرطی نوشته می‌شد، کل برنامه تنها یک سلسله مراتب اجرایی و به بیان دیگر تنها یک مسیر داشت که برای تضمین صحت اجرا کافی بود یک بار درستی اجرای آن مسیر بررسی شود. اما به دلیل آن‌که هیچ نرم‌افزار پیچیده‌ای بدون وجود شرط قابل‌نوشتن نیست و از آنجا که هر شرط با ایجاد یک دوراهی در تصمیم‌گیری تعداد مسیرهای اجرای برنامه را افزایش می‌دهد، بررسی تمام مسیرهای ممکن و اطمینان از صحت اجرای تمام آن‌ها همیشه ساده نیست. در آزمايش جعبه سفید برنامه‌ها، تمام مسیرهای ممکن در اجرای برنامه که از آن تحت عنوان فضای حالات نیز یاد می‌شود، از نظر درستی کارکرد بررسی می‌شوند. گاهی به دلیل آن‌که تعداد شرط‌ها بسیار زیاد است، فضای حالات به حدي وسیع می‌شود که در آن صورت با پدیده‌ای تحت عنوان انفجار فضای حالات روبه‌رو خواهیم شد و اضافه شدن حتی یک شرط به بدنه اصلی برنامه ممکن است تعداد حالات را تا دو برابر افزایش داده و سال‌ها به زمان آزمايش برنامه بیافزاید! بنابراین، یکی از بزرگ‌ترین اشکالات تولید نرم‌افزارهای مطمئن در زمانی که برنامه از حدی بزرگ‌تر می‌شود، انفجار فضای حالات در آزمايش آن‌ها خواهد بود. "مشکل دیگر در آزمايش نرم‌افزار، تشخیص زمان پایان دادن به این فرآیند است. در عمل، مشکل و گاهی غیرممکن است که مقدار آزمايش برای رسیدن به میزان مشخصی از چگالی عیوب را مشخص کنیم." مشکل دیگر در آزمايش نرم‌افزار، تشخیص زمان پایان دادن به این فرآیند است. در عمل، مشکل و گاهی غیرممکن است که مقدار آزمايش برای رسیدن به میزان مشخصی از چگالی عیوب را مشخص کنیم. چگالی عیب در اصطلاح به تعداد عیوب برنامه نسبت به تعداد خطوط کد قابل اجرای برنامه، بدون احتساب تعداد خطوط توضیحات غیراجرایی داخل کد (Comments) گفته می‌شود. به‌طور کلی، هر زمان از تعداد خطوط کد صحبت می‌شود، منظور کدهای قابل اجرا بدون احتساب توضیحات است. "مشکل دیگر در آزمايش نرم‌افزار، تشخیص زمان پایان دادن به این فرآیند است. در عمل، مشکل و گاهی غیرممکن است که مقدار آزمايش برای رسیدن به میزان مشخصی از چگالی عیوب را مشخص کنیم." مطالعات نشان می‌دهد مرور دقیق و آزمايش، «دسته‌های متفاوتی» از خطاها را در «مراحل متفاوتی» از چرخه توسعه نرم‌افزار ،کشف می‌کنند و به همین دلیل، این دو روش نمی‌توانند جایگزینی برای یکدیگر به شمار آیند و به طور معمول در کنار هم به‌کار گرفته می‌شوند. در طراحی نرم‌افزارها گفته می‌شود، بهتر است هرچه زودتر خطاها را پیدا کنید. زيرا هزینه‌های جبران یک نقص نرم‌افزاری در زمان نگه‌داری به‌طورکلی پانصد برابر بیشتر از برطرف كردن یک مسئله در مراحل اولیه طراحی است. بنابراین، بررسی سیستم باید در مراحل آغازین فرآیند طراحی انجام شود. شکل 1 نموداری از هزینه‌های مطرح شدن خطاها، کشف و اصلاح آن‌ها را در چرخه حیات نرم‌افزار نمایش می‌دهد. با توجه به این نمودار حدود پنجاه درصد تمام نقص‌ها طی مدت برنامه‌نویسی، یعنی زمانی که کد نرم‌افزار نوشته می‌شود، مطرح شده و بيشتر خطاها هنگام آزمايش یافت می‌شوند. درحالی‌که تنها پانزده درصد تمام خطاها در مرحله طراحی اولیه کشف می‌شوند.
  21. Fahim

    یه سوال تخصصی داشتم خدمتتون!

    گوشی من رو باید سه چهار تا سکه بندازی داخلش تا شاید پیامت ارسال بشه :icon_razz: از خیر صحبت کردن باهاش هم باید بگذریم در نوع خودش جان سختیه البته
  22. هفته گذشته سازمان تنظیم مقررات و ارتباطات رادیویی با هدف شفاف‌سازی و کنترل بازار فروش خدمات اینترنتی، نحوه ارائه سرویس‌های پرسرعت اینترنت (ADSL) را اعلام کرد. براساس ابلاغیه سازمان تنظیم مقررات، اپراتورهای ارائه دهنده سرویس ADSL نباید هیچ‌گونه محدودیتی در میزان حجم آپلود، دانلود و زمان اتصال در طول دوره ارائه خدمات ایجاد کنند. در واقع براساس این ابلاغیه شرکت‌های ارائه‌دهنده اینترنت پرسرعت باید براساس تعرفه‌های مصوبه کمیسیون تنظیم مقررات خدمات خود را عرضه و به فروش برسانند و همین تعرفه‌ها را نیز باید پیش از آغاز تبلیغات و عرضه برای تایید به اداره نظارت و صدور پروانه‌های سازمان تنظیم مقررات ارائه دهند. براساس گفته مقامات سازمان تنظیم مقررات این ابلاغیه، دستور جدیدی از سوی سازمان تنظیم نبوده و پیش از این نیز این سازمان برای کنترل بازار چنین درخواستی را به شرکت‌های PAP‌ ارائه کرده، اما تاکنون تنها چند شرکت حاضر به همکاری با سازمان تنظیم شده‌اند و در همین راستا و برای کنترل و نظارت بیشتر بازار رگولاتوری با جدیت بیشتری اجرای این ابلاغیه را دنبال می‌کند. شرکت‌های ارائه دهنده خدمات اینترنت پرسرعت ADSL و شرکت مخابرات ایران در حال حاضر نزدیک به ۲٫۵ میلیون خط اینترنت پرسرعت در کشور نصب کرده‌اند که از این تعداد یک میلیون و ۲۰۰ هزار پورت به مشترکان واگذار شده و در حال استفاده است. آنچه موجب شده رگولاتوری شرکت‌های اینترنتی را از فروش کیلویی اینترنت بازدارد، رعایت حداقل حقوق کاربران در ضریب‌های اشتراک واگذاری اینترنت است، زیرا مطابق محاسبات رگولاتوری کاربری که از پهنای ۱۲۸ کیلوبیت با ضریب اشتراک یک به یک برخوردار است باید امکان حداقل ۴۱ گیگابایت دانلود ماهانه را داشته باشد و در صورت ضریب اشتراک یک به ۱۰ نیز کاربر باید از حداقل محدودیت ۴ گیگابایت برخوردار باشد. براین اساس مبنای محاسبه ظرفیت یک خط، حداکثر سرعت دانلود در حالت نرخ اشتراک ۱ به ۱ است و اپراتورها برای ارائه این خدمات مطابق مصوبه کمیسیون تنظیم مقررات ارتباطات، مجاز به اشتراک سرویس با نرخ حداکثر ۱ به ۱۰ خواهند بود. علی اصغریان، مدیرکل دفتر نظارت بر سرویس‌های فناوری اطلاعات سازمان تنظیم مقررات در توضیح این ابلاغیه می‌گوید: «آن‌طور که این خبر در رسانه‌ها مطرح شده سازمان قصد توقف فروش حجمی اینترنت را ندارد. در پروانه شرکت‌های PAP به صورت واضح ذکر شده است که اگر آنها بسته به نیاز مشتری تصمیم داشته باشند بسته‌های خاص شامل محدودیت حجمی و زمانی را به مشتریان‌شان ارائه کنند باید بسته پیشنهادی خود را قبل از ارائه برای تایید به سازمان تنظیم مقررات ارسال کنند تا سازمان هم در زمان مشخص این بسته پیشنهادی را بررسی و آن را تایید کند.» وی در ادامه می‌افزاید: «براساس مصوبه ۴۹ سازمان، حداکثر ضریب اشتراک پهنای باند بین ۱۰ نفر است یعنی اینترنت با سرعت ۱۲۸ نامحدود باید بین ۴ تا ۴۱ گیگ حجم دانلود داشته باشد که حجم ۴ گیک باید به صورت تضمینی بین ۱۰ کاربر حتما به اشتراک گذشته شود. در این بین ممکن است کاربر پر مصرفی وجود داشته باشد که نیاز به حجم دانلود بیشتری داشته باشد که در این صورت شرکت‌های اینترنتی نباید از حجم اشتراک ۱۰ کاربر استفاده کنند و باید برای دریافت پهنای باند اضافی درخواست خود را به سازمان ارائه کنند.» بنا بر اظهارات وی ارائه حجم دانلود نامحدود منوط به این است که شرکت‌های اینترنتی بسته پیشنهادی خود را برای بررسی و تایید به بخش فنی و صدور پروانه سازمان تنظیم ارسال کنند تا بتوانند بعد از تایید پهنای باند مورد درخواست خود را دریافت و به مشتریان خود ارائه کنند. اصغریان هدف سازمان برای پافشاری به انجام این ابلاغیه را ساماندهی بازار و ارتقای حقوق مشتریان ذکر می‌کند و می‌گوید: با اجرای درست این ابلاغیه از این پس مشتریان به طور دقیق می‌دانند که چه سرویسی، با چه سرعت، حجم واقعی و با چه تعرفه‌ای خریداری می‌کنند و فروشنده نیز می‌داند که چه سرویسی با چه کیفیتی به دست مشتریان خود می‌رساند. وی در پاسخ برخی شرکت‌ها که این کار سازمان را مانعی برای رقابت در بازار عنوان می‌کند، می‌گوید: «این ابلاغیه به هیچ وجه قصد وارد کردن ضربه به فعالیت شرکت‌های اینترنتی یا از بین بردن رقابت در بین آنها را ندارد، بنا بر اظهارات وی سازمان تمام تلاش خود را انجام می‌دهد تا مشتریان به حق واقعی خود برسند و در این بین نیز شرکت‌ها متضرر نشوند.» براساس توضیحات اصغریان، مشترکان ADSL باید توجه داشته باشند سرعت اینترنت ۱۲۸نامحدود به معنای داشتن حجم دانلود بین ۴ تا ۴۱ گیگ است که نرخ اشتراک پهنای باند ۱ به ۱۰ به معنای استفاده همزمان حداکثر ۱۰ نفر از ظرفیت یک خط است و در این بین باید به صورت تضمینی حجم دانلود ۴ گیک به هر یک از کاربران برسد. عموما ظرفیت خطوط اینترنت براساس کیلوبیت بر ثانیه (kbps) سنجیده و سرعت دانلود براساس کیلوبایت (kBps) اندازه‌گیری می‌شود که روش تبدیل آنها به یکدیگر با استفاده از فرمول ظرفیت تقسیم بر ۸ مساوی سرعت قابل حصول است و لازم است کاربران در زمان اندازه گیری ظرفیت خط یا سرعت دانلود خود به این واحدها توجه کنند. اما در این میان شرکت‌هایی هستند که نه‌تنها ضریب اشتراک آنها پا را فراتر از اشتراک ۱۰ نفره گذاشته، بلکه حداقل حجم دانلود آنها با تلفیقی از دانلود و آپلود در کنار هم عدد حداقلی و حتی کمتر از آن را تشکیل می‌دهند و امکان دانلود آنها به مراتب کمتر از آن چیزی است که باید در واقعیت انجام شود. به گفته مسوولان سازمان تنظیم، این سازمان با این ابلاغیه به دنبال جلوگیری از این اتفاق است و اینکه در صورت نیاز مشتری به پهنای باند شرکت‌ها موظف به خرید پهنای باند بیشتر باشند. منبع : وین بتا
  23. شاید تاکنون از طریق خبرها متوجه شده باشید که مایکروسافت قصد دارد در ویندوز ۸ از نوار ابزار حالت “Ribbon” استفاده نماید، یعنی مانند نوار ابزار مجموعه آفیس و مجموعه نرم افزاری windows live essentials یک رابطه کاربری جذاب و با استفاده ساده برای کاربران. اخیراً مایکروسافت در ویدیوی جدیدی اینترفیس جدید Windows Explorer در ویندوز ۸ را نشان داده است. هدف مایکروسافت این است که رابطه کاربری Windows Explorer را به بهترین شکل ممکن بهینه کند تا بتوان به راحتی دستورات مختلف را اجرا کرد. همچنین یکی دیگر از ویژگی های Ribbon استفاده راحت تر در تبلت ها و کل دستگاهای لمسی است که با ویندوز کار می کنند. همانطور که در تصویر بالا می بینید به راحتی می تواند عملیات Copy, Paste, Delete, Rename, Cut را انجام دهید و هدف مایکروسافت هم همین بوده یعنی تمرکز روی مدیریت فایلها و انجام کارهای مربوطه. در تب به اشتراک گذاری (SHARE) شما به راحتی میتوانید فایلهای خود را با دیگران به اشتراک بگذارید، آنها را ایمیل و یا رایت کنید. همچنین می توانید فایل های خود را در یک شبکه داخلی به اشتراک بگذارید یا قبل از اشتراک فایل را فشرده کنید! در این تب میتوانید نوع نمایش محتویات را مشخص کنید. به عنوان مثال عکسها در چه سایزی مشخص شوند. یا اطلاعات مربوط به عکس را ببنید یا مخفی کردن فایل ها از این نوار ابزار صورت می گیرد. در این تب میتوانید دسترسی سریعی به برنامه های میانبر داشته باشید و همچنین تغییر پوشه ها و تنظیمات جستجو در این بخش وجود دارند. از نام این نوار معلوم است که کارش چیست! جستجوی سریع و دقیق. مثلا میتوانید براساس محدوده تاریخ یا اندازه فایل به دنبال فایل مورد نظر بگردید. مدیریت کتابخانه ها در ویندوز به عنوان مثال اضافه کردن یک پوشه عکس به کتابخانه عکس. مثلا گذاشتن عکس پشت صفحه دسکتاپ یا دیدن عکسها به صورت اسلاید شو. در این تب میتوانید کارهای مربوط به دیسک را انجام دهید فرمت کردن، Cleanup کردن و… منبع: دنیای مایکروسافتی من
      • 3
      • Like
  24. نشریه نشنال جئوگرافیک به رسم هر هفته مجموعه ای از برترین عکسهای نجومی که طی هفته گذشته توسط اخترشناسان یا محققان مختلف به ثبت رسیده اند را منتشر کرده است. به گزارش خبرگزاری مهر، نشنال جئوگرافی در گزارش فضایی این هفته خود مجموعه ای از عکس جدید تلسکوپ هابل، تصویری هوایی از روسیه و چهره آبله گون سیارک وستا را به نمایش گذاشته است. بقایای آتشفشانی نور خورشید سایه ای هلال مانند را بر روی کف حفره ای در سیاره مریخ ایجاد کرده است، این حفره گرد احتمالا به لوله ماگمایی اتصال دارد که در حین منجمد شدن مواد مذاب بر روی سطح سیاره به وجود آمده اما جریان مواد مذاب در زیر آن همچنان در جریان بوده است. این تصویر توسط مدارگرد اکتشافی مریخی ناسا به ثبت رسیده و دانشمندان با استفاده از سایه ایجاد شده تخمین زدند کف حفره در عمق 20 متری قرار گرفته است. کهکشانی که خمیده شد کهکشانی که نسبت به کهکشان راه شیری کوچکتر است در این تصویر در حالی دیده می شود که یکی از بازوهای آن خمیده شده است، این تصویر که به تازگی توسط هابل به ثبت رسیده نشان می دهد یکی از بازوهای کهکشان NGC 2146 در حدود 45 درجه خمیده تر شده است. بدیهی ترین توضیح برای این پدیده تاثیر نیروی گرانش کهکشانی ناشناخته در نزدیکی این کهکشان است که منجر به تغییر شکل آن شده است. تالابهای بالتیکی تصویر نور غروب بر چهره تالابهای آب در نزدیکی کالینینگراد روسیه توسط ساکنان ایستگاه فضایی بین المللی به ثبت رسیده است. این تالابها به واسطه برجستگی های کوچکی از آبهای آزاد دریای بالتیک جدا افتاده اند. تالابی که در بالای تصویر قرار دارد تالاب "کورونین" در نزدیکی لیتوانی است و تالاب دیگر "ویستولا" نام دارد. سیارک آبله گون سایه های تیره رنگ به خوبی حفره های موجود بر روی چهره سیارک مشهور وستا، که با الهام از اسم الهه ای یونانی نام گذاری شده را نمایان کرده است. فضاپیمای داون سازمان ناسا در هنگامی که در مدار این سیارک در حرکت بود این تصویر را به ثبت رساند، این تکه سنگ کیهانی بخشی از کمربند اصلی سیارکهای سامانه خورشیدی است که در مدار میان مریخ و مشتری قرار دارد. شهاب‌سنگ کوهستان "آند" "ادسون رامیرز" دانشمندی است که در 16 آگوست 2011 در حین مطالعه بر روی ساختارهای زمینی در آند بولیوی با پدیده ای شگفت انگیز مواجه شد: جسمی بزرگ از آسمان به زمین سقوط کرد و دنباله ای از دود را بر بالای قله های کوهستان آند از خود به جا گذاشت. دانشمندان بر اساس تصویری که رامیرز از این جرم به ثبت رسانده آن را شهابسنگی به بزرگی 50 سانتیمتر توصیف کرده اند. سنگی به اندازه "فرصت" این سنگ بزرگ که "Ridout" نام دارد بخشی از لبه حفره ادیسه را پوشانده است، حفره ای که خود بر روی لبه حفره ای بزرگتر به نام "اندیور" قرار گرفته است. این تصویر یکی از اولین تصاویری است که مریخ نورد "فرصت" ناسا پس از رسیدن به حفره ادیسه آن را به ثبت رسانده است. گفته می شود این قطعه سنگ بقایای برخورد میان فضاپیمای ادیسه و سیاره مریخ باشد. طول این سنگ 1.5 متر است، طولی که با ابعاد خود "فرصت" برابری می کند. ردپای ستاره ها بر فراز دریاچه "قند" نوردهی طولانی مدت باعث شده تا امتداد حرکت ستاره ها بر فراز سیاره "شوگر" (قند) در بریتیش کلمبیای کانادا به خوبی قابل مشاهده باشند. این تصویر نشان می دهد چگونه ستاره ها در اطراف قطب شمالی آسمان حرکت می کنند، نقطه ای خیالی در نزدیکی ستاره پولاریس که به شکل نقطه ای درخشان در بالا و چپ تصویر دیده می شود قرار دارد.
      • 3
      • Like
  25. Fahim

    اولیش چی بود؟

    اولین پست حذف شد. اولین تاپیک هم به دست محمد به باد فنا رفت اولین نام کاربریم fahim! بود اولین آواتارم هم
×
×
  • اضافه کردن...