» سه شنبه 5 بهمن 1395 |   ورود or عضویت flags/iran.gif flags/usa.gif flags/saudiarabia.gif flags/sweden.gif flags/france.gif
Show me the SUN
درباره‌ آفتابگردان

« آفتابگردان » به عنوان یک کانون مجازی با هدف فراهم كردن ‎محیطی لذت‌بخش، علمی و مفید و همچنین در دسترس قرار دادن آن‌چه یك کاربر رایانه ‎نیاز دارد، اعم از نرم‌افزارها، آموزش‌های کاربردی، اخبار، نقد و بررسی‌ها، راهنمایی‌ها و ‎...؛ ایجاد شده است.
‎شما می‌توانید، با ‎ثبت نام در سایت عضو خانواده بزرگ و باصفای آفتابگردان شوید و در ‎انجمن‌های گفتگو با دیگر اعضای سایت به بحث و تبادل نظر بنشینید.
‎آفتابگردانی‌ها هدفشان همیاری یکدیگر در زمینه‌های مختلفِ شغلی، درسی، ‎کامپیوتری و ... است و در این راه تا حد توان، از هیچ اقدامی دریغ ‎نمی‌ورزند.
‎امیدواریم شما نیز با حضور در این جمع و اشتراک دانسته‌هایتان با دیگران، آن‌ها را در رسیدن به اهدافشان یاری دهید...

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






طراحی و میزبانی سایت خود را
به تیم آفتابگردان بسپارید!







کلیپ ویدئویی معرفی آفتابگردان

اخبار کوتاه سایت:
‎با وارد کردن ایمیل خود در کادر زیر می‌توانید از ارسال اخبار جدید در سایت از طریق ایمیل، مطلع شوید:


- مرور اخبار با RSS:
- RSS چیست؟


بلوک کاربری
 
عضویت
کلمه عبور را فراموش کرده ام

 
کاربران سایت:
مجموع: 19,182
آخرین: jaberjavidi

کاربران حاضر درسایت:
مهمان: 292
عضو: 3
مجموع: 295

Last Seen Users:
iman  |  Hamid  |  amirhosein  |  sergio  |  qwerty13  |  0927659050  |  mehrdokht  |  javatti  |  alimot  |  jaberjavidi  |  zts2007  |  mrzigarani  |  carbon  |  irhotelbooking  |  roozbeh1369  |  mohsen_5488  |  babani  |  hamid_reza  |  nooranifar  |  start11  |  mohammad768  | 

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

آخرین نظرات کاربران
  Mas00di: جالب بود ممنون از وقتی که گذاشتید. در مطلب: فرکانس چیست؟ (What is Frequency)

  کامبیز: سلام من الان چند هفته ای میشه که فارغ‌التحصیل شدم ولی هنوز نرفتم واسه تسویه‌حساب دانشگاه و هنوز واسه سربازی هیچ اقدامی نکردم و می خواستم واسه سرباز معلمی ثبت نام... در مطلب: چطور امریه آموزش و پرورش بگیریم؟ یا چطور «سرباز معلم» شویم؟

  علی: سلام مطلبی که میخواستم و به جواب نرسیدم لطفا یکی راهنماییم کنه میخواهم مک بوک بخرم ولی نمیدونم ایا این امکان داره برنام های مهندس مثل اتوکد التیوم دیزاینر مولتی سی... در مطلب: لپ تاپ اپل (MacBook) بخریم یا نخریم؟ (تجربه من از خرید مک بوک)

  یوسف: سلام من قصد دارم در دانشگاه رشته کامپیوتر بخونم ایا در همه رشته هاش ریاضی دارد؟ در مطلب: چرا رشته کامپیوتر اینقدر ریاضی دارد؟ آیا لازم است؟ + پیشنهادی به آموزش و پرورش

  محمدحسن: سلام . برای یاد گرفتن برنامه نویسی به هیچ وجه نیاز به رشته مرتبط نیست. 20 نفر از صد نفر از قویترین برنامه نویسان دنیا زیر 15 سال سن دارند . اگر مهندسی خوندی خیلی خودت رو ت... در مطلب: من چگونه PHP را یاد گرفتم؟ (یا: چگونه طراح وب شویم؟)

  سعید صلاحی نیارق: واقعا ازتون ممنونم که تجربیات خود را در اختیار ما می گذارید در مطلب: از سایت attari24.ir چیزی بخریم یا نخریم؟ (تجربه خرید کالاهای مرتبط با طب سنتی)

  وحید: با سلام من خودم دمبال xbox one بودم ولی الان پشیمونم فکر کنم ps3 و xbox360 کنسولهای بهتری البته تو ایران باشن چون ما ها از دوره اتاری و میکرو و سگا یاد گرفتیم دکمه پاور رو بزنی... در مطلب: Xbox One بخریم یا نخریم؟ (تجربه من در مورد خرید ایکس باکس وان)

  محمد رضا: مهندس جان نقاش شدن استعداد ذاتی و نبووغ و خلاقیت میخواد که نصیب هر آدمی نمیشه. هنر با دو دوتا چهارتا کردن تو مهندسی خیلییی فرق داره!... در مطلب: دوره دکترا چند ترم است؟ چند درس دارد؟ (نکاتی در مورد دکترا)

  Hamed: با سلام. چون کشور نیاز ب سرباز دارن شما اگر درخاست بدید در زیر30روز جوابتون میاد در مطلب: نکاتی که باید درباره دوره آموزشی سربازی بدانید

  Hamid: سلام. در نمرا ۳ این امکان وجود دارد: http://yourl.ir/nomra3 در مطلب: محصول دیگری از آفتابگردان: نُمرا؛ سیستم اعلام آنلاین نمرات (سیستم مدیریت آموزشگاه)


موضوعات اخبار
معرفي سايت
اطلاعیه‌های آفتابگردان
ياهو
مايكروسافت
گرافيك
اخبار ميكس و مونتاژ
بازي‌هاي كامپيوتري
اخبار عمومي
اخبار IT
سخت افزار
نرم افزار
گوگل
سيستم‌هاي مديريت محتوا
اخبار موبايل
دانستني‌هاي IT
برنامه‌ نويسي
Mozilla & Firefox
از همه جا
اخبار شرکت Adobe
ابزار فارسي
مطالب مفید مرتبط با زبان انگلیسی
برای جوانان
مطالب مذهبی، قرآنی و فرهنگی
لینوکس
شرکت Apple
فیلم‌های مستند
دنياي نرم​افزارهاي رايگان
اخبار تستا
این کلمه یعنی چی؟
بخریم یا نخریم
تجارت الکترونیک
بازی‌های تولیدی آفتابگردان
آکادمی آنلاین آفتابگردان
مطالب و دانستنی‌های جالب
ایده‌های جالب
مطالب مفید مرتبط با روانشناسی
قرآن با نگاه رشته کامپیوتر
ویژه دانشجویان رشته کامپیوتر
ایده‌های کوچک با موفقیت‌های بزرگ
مطالب مرتبط با پزشکی

مطالب پیشنهادی

آرشیو اخبار به صورت موضوعی


Aftabgardan: برنامه‌ نويسي

جستجو پیرامون این موضوع:   
[ برگشت به صفحه اصلی | انتخاب موضوع جدید ]

برنامه ای برای یادگیری و آموزش الگوریتم با انیمیشن و به صورت ویژوال

یادگیری و یاد دادن الگوریتم‌ها همیشه یکی از دغدغه‌های دانشجویان و اساتید رشته کامپیوتر بوده است! به همین دلیل یکی از سخت‌ترین درس‌ها برای دانشجویان این رشته معمولاً درس‌هایی مثل ساختمان داده‌ها و طراحی الگوریتم است. حالا در نظر بگیرید درسی مثل «طراحی الگوریتم پیشرفته» در دکترا چقدر انرژی از دانشجویان می‌گیرد!؟ کمتر استادی پیدا می‌شود که بتواند ادعا کند کتابی مثل Introduction to Algorithms را می‌تواند به مقاطع مختلف تدریس کند و دانشجویان نیز بفهمند که او چه می‌گوید!

از طرف دیگر برای یک برنامه‌نویس که با برنامه‌های پیشرفته سر و کار دارد، لازم است که یک مرجع از الگوریتم‌های پرکاربرد داشته باشد؛ به همین دلیل من از یکی از دانشجویان خواستم به عنوان پایان‌نامه کارشناسی‌اش ۱۰۰ الگوریتم پرکاربرد در برنامه‌نویسی را در یک PDF جمع‌آوری کند که در بخش آموزش‌ها قرار دادیم:

 ۱۰۰ الگوریتم پرکاربرد در برنامه‌نویسی در یک PDF

اما یکی از کاربران خوب سایت، آقای زنگویی (که یک عادت خوب دارند و آن اینکه هر وقت یک مطلب عالی پیدا کنند، بر من منت می‌گذارند و برای من هم می‌فرستند و من واقعاً مدیون ایشان و چند کاربر دیگر شبیه ایشان هستم و نمی‌دانم چطور قدردانی کنم... و البته از همه کاربران هم خواهش می‌کنم اگر یک مطلب «ناب» که جای آن در آفتابگردان خالی است پیدا کردند به ایمیل بنده ارسال کنند که هم خودم استفاده کنم و هم در موقعیت مناسب با هزاران کاربری که روزانه از طریق جستجو و... مهمان آفتابگردان می‌شوند، به اشتراک بگذارم) یک برنامه پیدا کرده‌اند که الگوریتم‌های مطرح را به صورت ویژوال و با انیمیشن به کاربر آموزش می‌دهد:

Algorithms ; Explained and Animated

http://img.aftab.cc/news/95/algorithms_app.png

خوشبختانه این اپلیکیشن، هم نسخه‌ی آندرویدی دارد و هم نسخه‌ی آیفونی. البته در نسخه غیررایگان آن، الگوریتم‌های پیشرفته‌تر که در سطح ارشد و دکترا است (مثل الگوریتم K-Means که ما تازه ترم پیش در درس داده‌کاوی پاس کردیم! یا کد هافمن و...) قفل هستند و باید نسخه کامل را با قیمت ۳ دلار خریداری کنید تا دسترسی داشته باشید.

- دانلود نسخه رایگان Algorithms برای آندروید

- دانلود نسخه رایگان Algorithms برای آیفون

 

من واقعاً به این برنامه نیاز داشتم! خیلی راحت روی تبلت می‌ریزم و با ویدئو پرژکتور به دانشجوها نشان می‌دهم تا اینقدر زحمت برای جا انداختن یک الگوریتم مثل الگوریتم‌های مرتب‌سازی و امثالهم لازم نباشد!

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

وقتی در Apple Store جستجو کردم دیدم چند برنامه رایگان دیگر نیز برای آموزش بهتر الگوریتم‌ها وجود دارد؛ مثل Directory of Algorithms که یک مخزن نسبتاً متنی کامل از تمام الگوریتم‌های مهم و پرکاربرد است و Sorting Algos و...

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

موفق باشید؛
حمید رضا نیرومند


[برنامه‌ نويسي]
2 نظر| لينك ثابت

ارسال شده بوسیله Hamid در مورخه : یکشنبه، 2 آبان، 1395 (670 مشاهده)

اهمیت «اتکاپذیری» و عاقبتِ «پیچیدگی های غیرضروری» در تولید محصول! (به خصوص محصول نرم افزاری)

نمی‌دانم شما هم در مساجد مختلف، با این صحنه مواجه شده‌اید؟

http://img.aftab.cc/news/94/complexity.jpg

وسط تصویر را می‌گویم. به ساعت‌ها نگاه کنید...

من در شهر خودمان شاید در ده مسجد با این صحنه روبه‌رو شده‌ام! (هر چند روزهای اول، هیأت امنا و واحد فرهنگی از آن ساعت دیجیتال ذوق‌زده هستند، اما بعد از چند ماه، ترجیح می‌دهند خاموش باشد!)

می‌دانی آن ساعت دیجیتال چقدر امکانات دارد؟ ساعت، نمایش اوقات شرعی، اذان‌گویی به افق شهر شما، نمایش حدیث، نمایش صفحه‌ی تلاوت قرآن، نمایش نماز اول یا دوم، نمایش دما و و و... اما با وجود همه این امکانات چه شده است که خاموش است؟ فکر می‌کنی آیا یک مسجد، آن محصول را به مسجدِ دیگر پیشنهاد خواهد کرد؟ اما آن تابلوِ نمایش حدیث روز و شماره صفحه‌ی قرآن که سمت چپ، پایین عکس است را ببین! این محصول را چطور؟ آیا یک مسجد به مسجدِ دیگر، استفاده از آن تابلو سنتیِ اعلام شماره صفحه را معرفی خواهد کرد؟ فکر می‌کنی فروشنده‌ی آن ساعت دیجیتال موفق‌تر است یا آن تابلو سنتی که نهایتاً دو تا کار (حدیث روز و شماره صفحه قرآن) را انجام می‌دهد؟

این، نمونه‌ی بارزِ برخورد انسان‌ها با یک محصول پیچیده و غیرقابل اتکا است!

دو دلیل برای خاموش کردن آن ساعت دیجیتال وجود دارد:

دلیل اصلی: پیچیدگی‌های غیرضروری!

بله، آن ساعت دیجیتال خیلی کارها انجام می‌دهد اما چه محیط و چه افرادی قرار است با آن کار کنند؟ محیط و افرادی که اکثرشان افرادی هستند که توانایی کار با امکانات دیجیتال را ندارند... یک بار مسؤول رسیدگی به امور یکی از مساجد که پیرمرد هفتاد هشتاد ساله‌ای بود، ریموت‌کنترل و دفترچه ساعت را آورد پیش من و یکی از دوستان که او هم فارغ‌التحصیل کامپیوتر بود و خواست که امکاناتش را تنظیم کنیم. ما حدود نیم ساعت درگیر مطالعه دفترچه و تنظیم کردن بودیم و آخرش هم خیلی از امکاناتش را غیرفعال کردیم چون اولاً چیزی مثل دما، غیرضروری بود و ثانیاً آنقدر تنظیمات برخی از امکاناتش پیچیده بود که حوصله تنظیم کردن آن‌ها را نداشتیم!
تصور کن: می‌خواهیم الان به شماره صفحه‌ی قرآن یک شماره اضافه کنیم. به نظر شما چند نفر در مسجد هستند که فی‌البداهه (بدون آموزش) بتوانند یک شماره به آن ساعت دیجیتال اضافه کنند و چند نفر هستند که به شماره آن تابلو سنتی یکی اضافه کنند؟
هر کس که در این عکس ایستاده اگر بگویی یک شماره به آن تابلو سنتی اضافه کن می‌تواند اما آن تابلو دیجیتال چطور؟

پس ای تولیدکننده نرم‌افزار یا سخت‌افزار و هر محصول دیگر! دقت کن: انسان‌ها محصول ساده‌ای که آموزش کمتری لازم داشته باشد را به محصول پُرامکانات و پُر زرق و برقی که نیاز به آموزش‌های بیشتر داشته باشد ترجیح می‌دهند! حتی اگر در ابتدا از داشتن آن محصول پر زرق و برق، ذوق‌زده شده باشند...

امکانات غیرضروری آن ساعت دیجیتال را بررسی کنید! کدام مسجد در حالی که رادیو هست و همه از نظر روانی ترجیح می‌دهند از صدای زنده‌ی رادیو استفاده کنند، از اذان‌گوی مرده‌ی آن استفاده می‌کند؟ حتی اکثر مساجد با آن امکان مشکل دارند و اعصاب همه را خرد کرده! چون وسط اذان گفتنِ مؤذن و گاهی وسط نماز(!) شروع به اذان‌گفتن می‌کند و مجبورند ساعت را یک لحظه از برق بکشند و دوباره به برق بزنند تا صدا قطع شود! نمایش دما در مسجد چه فایده‌ای دارد؟ (می‌دانی چقدر انرژی و هزینه‌ی تمام‌شده برای مشتری، صرف پیاده‌سازی این امکانات غیرضروری شده؟ و می‌دانی چقدر به پیچیدگی منوی تنظیمات آن اضافه کرده است؟)

دلیل دوم: اتکاپذیری!

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

پس، ای تولیدکننده! دقت کن: انسان‌ها حاضرند از خیرِ خیلی از امکانات بگذرند اما یک محصول اتکاپذیر داشته باشند!

اتکاپذیری در تولید یک محصول آن‌قدر مهم است که ما یک درس به نام «نرم‌افزارهای اتکاپذیر» در این ترم از دکترا داشتیم که جزئی‌ترین موارد اتکاپذیری را بررسی کردیم.

دلم می‌خواهد این تصویر مهم از این درس اینجا باشد که حداقل خودم کلمات مهم و دوست‌داشتنی آن‌را هر بار مرور کنم:

http://img.aftab.cc/news/94/dependebility.png

به شاخه‌ی Attributes (ویژگی‌های اتکاپذیری) دقت کنید:
- محصول باید Availability داشته باشد. یعنی آمادگی ارائه سرویس صحیح. یعنی هر وقت که به آن نیاز بود در دسترس باشد. ممکن است یک محصول خیلی قابل اعتماد باشد (مثل نرم‌افزار دستگاه خودپرداز) اما در دسترس‌پذیری‌اش کم باشد (باز هم مثل دستگاه خودپرداز!!)
- محصول باید Reliability داشته باشد. یعنی تداوم سرویس صحیح. یعنی در یک بازه زمانی که مورد استفاده قرار می‌گیرد، سرویس صحیحی ارائه کند.
- محصول باید Safety داشته باشد. یعنی خطرات جانی برای کاربران و طراحانش نداشته باشد. (هر نوع خطری، گاهی اعصاب کاربر را به هم می‌ریزد)
- باید Confidentiality یعنی محرمانگی داشته باشد. یعنی اطلاعات را به افراد غیرمجاز ارائه نکند.
- باید Integrity یعنی یکپارچگی داشته باشد. یعنی نسخه‌هایی از یک سری اطلاعات با مقادیر مختلف در سیستم وجود نداشته باشد. مثلاً معدل را در پنل کاربری ۱۴.۵ محاسبه کند و در پنل مدیریت ۱۵
- باید Maintainaility داشته باشد. یعنی نگهداری آن مشکل یا غیرممکن نباشد.

حالا آن ساعت دیجیتال و آن ساعت سنتی و تابلو سنتی را از لحاظ این ویژگی‌ها بررسی کنید و ببینید کدام برنده است؟ کدام دردسترس‌تر است؟ کدام قابل اعتمادتر است؟ کدام ایمنی بیشتری دارد؟ کدامیک قابلیت نگهداری بیشتری دارد؟

 

خلاصه:

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

همانطور که «بزرگ شدن» جزء غیرقابل توقف در موجودات است و شما نمی‌توانید جلو بزرگ شدن خودتان را بگیرید، محصولی که تولید می‌کنید نیز بخواهید یا نخواهید به مرور به امکانات آن و در نتیجه به پیچیدگی آن افزوده خواهد شد... اینکه چطور در برابر این پیچیده شدن بایستید و گولِ شهوتی به نام «امکانات بیشتر» در تولید محصول را نخورید، یک هنر است. به طور مثال ممکن است خیلی از مشتریانِ محصولات ما به خاطر نبودن برخی امکانات در محصولات، دلخور باشند اما ما دلخوری چند نفر محدود را به خاطر نبودن آن امکانات، به دلخوری تمام مشتریان به خاطر بودن آن امکانات (و طبیعتاً پیچیده شدن آن محصول به خاطر آن امکانات) ترجیح می‌دهیم و تلاش می‌کنیم آن‌ها را با بیان این حقیقت‌ها قانع کنیم...

موفق باشید؛
حمید رضا نیرومند


[برنامه‌ نويسي]
2 نظر| لينك ثابت

ارسال شده بوسیله Hamid در مورخه : شنبه، 3 بهمن، 1394 (1080 مشاهده)

«برنامه نویسی جنبه گرا» (AOP) و «برنامه نویسی نظارت گرا» (MOP) چیست؟ (سمینار مهندس نیرومند در این زمینه)

یکی از درس‌های بسیار عالی که این ترم داشتیم، درس Software Testing (آزمون نرم‌افزار) بود. درس بسیار مهم و لازمی برای امثال ما برنامه‌نویس‌ها بود. مباحث بسیار جذابی مطرح شد که قطعاً تأثیر زیادی در برنامه‌نویسی‌های من خواهد داشت. به خصوص اینکه استاد بسیار توانایی داشتیم که بر لذتش افزود.

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

به هر حال، علی رغم اینکه اکثر دوستان هم‌کلاسی من یک موضوع تئوری بدون پیاده‌سازی انتخاب و ارائه کردند، اما طبق معمول، من مصر بودم که کارم به پیاده‌سازی برسد و الحمد لله موضوع خوبی پیدا کردم و با اینکه دو هفته‌ی تمام وقتم را گرفت و واقعاً اذیتم کرد اما به پیاده‌سازی رسید.

موضوع ارائه، JavaMOP بود و پنج‌شنبه ۲۶ آذر ۹۴ نوبت من بود که ارائه دهم.

ویدئوی دسکتاپ و صدای من ضبط شده که پیشنهاد می‌کنم به خصوص افرادی که با کدنویسی سر و کار دارند، آن‌را دانلود و مشاهده کنند.

قبل از ارائه لینک دانلود، باید توضیحاتی در مورد موضوع سمینار بدهم:

آزمون نرم‌افزار

این روزها یکی از مهم‌ترین مباحث در تولید نرم‌افزارهای Reliable (قابل اعتماد)، بحث تست نرم‌افزار است. دلیل آن هم مشخص است: اگر نرم‌افزار به درستی تست نشود، همان اتفاقی می‌افتد که در مورد موشک آریان ۵ افتاد:

لینک ویدئو

 می‌دانید دلیل این انفجار چه بوده؟ دلیل از نگاه خودشان:

The number was too big, and an overflow error resulted

یک Overflowی ساده در یکی از متغیرهای برنامه! (یعنی یک عدد، کم‌کم زیاد شده و به حدی رسیده که در متغیر برنامه جا نشده و برنامه هنگ کرده و...)

حالا تصور کنید ناسا قرار است زبده‌ترین انسان‌های کره‌ی زمین را بفرستد فضا و در بین آسمان و زمین به خاطر این مشکلات، موشک منفجر شود!!

و یا در سیستم‌های Safety Critical (حیاتی) مثل پمپ‌های تزریق خودکار انسولین، اگر نرم‌افزار درست کار نکند می‌دانید چه می‌شود؟ اصلاً چرا راه دور برویم!؟ همین نرم‌افزار تستای خودمان، می‌دانید گاهی چقدر کارش حساس می‌شود؟ مثلاً یک سازمان، کلی تبلیغ کرده و هزاران نفر همزمان آنلاین شده‌اند که در آزمون شرکت کنند، بعد، آزمون تمام می‌شود و می‌فهمیم که پاسخ کاربران به درستی ثبت نشده!! (چیزی که ما واقعاً درگیرش هستیم و دائم داریم برای کارهای بزرگ بهبودهایی را اعمال می‌کنیم تا حتی اگر مشکل از سخت‌افزار یا نرم‌افزارهای سرور و یا تنظیمات آن بود، باز هم تستا «قابل اعتماد» باشد و آبروی مشتریان به خطر نیفتد)

همه این‌ها اهمیت تست نرم‌افزار را می‌رساند.

برنامه‌نویسی جنبه‌گرا یا AOP چیست؟

اگر برنامه‌نویس باشید می‌دانید که نسل اول برنامه‌نویسی، برنامه‌نویسی Structural بود. چیزی که در زبان C با آن کار کرده‌اید. پس از چند سال، برنامه‌نویسی‌ای مطرح شد به نام OOP یا Object Oriented Programming (برنامه‌نویسی شیئ‌گرا) که بهبودهای زیادی به برنامه‌نویسی ساختارمند داد و فعلاً بیشترین استقبال را دارد. اما مدتی هست که نوع جدیدی از برنامه‌نویسی مطرح شده به نام Aspect Oriented Programming یا برنامه‌نویسی جنبه‌گرا. در این نوع برنامه‌نویسی، شما دغدغه‌های خود را در قالب Aspect (جنبه) مطرح می‌کنید.
انصافاً با این نوع برنامه‌نویسی کار، بسیار راحت‌تر می‌شود و از تکرار کدها بسیار بسیار کاسته می‌شود.

در مورد AOP در سمینار صحبت کرده‌ام...

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

برنامه‌نویسی نظارت‌گرا یا MOP چیست؟

ببینید، چیزی که به همه برنامه‌نویسان اثبات شده و در رأس آن‌ها به ناسا که هزاران نرم‌افزار را نوشته و آن‌ها را بارها و بارها با تمام معیارهای آزمون نرم‌افزار تست کرده (و دیتا سِت‌ها [Data Set = مجموعه داده‌ها]ی نرم‌افزارها و تست‌های خود را در آدرس https://data.nasa.gov منتشر کرده که در مقاطع بالاتر می‌فهمید که این دیتا ست‌ها مرجع تحقیقات بسیار جذابی در کل دنیا در سطوح ارشد و دکترا است که فرصت توضیحش نیست) این است:

هر چقدر هم که شما قبل از اجرای برنامه، آن‌را تست کنید، در حین اجرا ممکن است خطاهایی در برنامه مشاهده شود.

در اصطلاح گفته می‌شود مسیرهای برنامه آنقدر زیاد است که ما نمی‌توانیم برای همه مسیرها «داده آزمون» تولید کنیم و نمی‌توانیم «پوشش مسیر» داشته باشیم.

(حالا من یک چیز از «تست» می‌گویم، شما یک چیز می‌شنوید! باید این درس را پاس کنید و سر کلاس‌ها باشید تا بفهمید منظور من از «تست» چه تست‌های عظیمی است! با وجود آن تست‌های عظیم، باز هم برنامه در حین اجرا با مشکل مواجه می‌شود)

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

بنابراین نیاز داریم که برنامه را در حین اجرا دائماً زیر نظر بگیریم و دائماً شرایط را با یک سری Specification (یعنی توصیفی که انتظار داریم نرم‌افزار طبق آن عمل کند و معمولاً در قالب Formal Specification یعنی توصیف رسمی و به زبان‌هایی مثل LTL و ERE و FSM و CFG و امثالهم بیان می‌شود) مقایسه کنیم، به محض اینکه نرم‌افزار پایش را از آن شرایط فراتر گذاشت (در اصطلاح Violate شد)، تصمیم درخوری اتخاذ می‌کنیم...

به این «زیر نظر گرفتن لحظه‌ای برنامه در حال اجرا و مقایسه شرایط موجود با توصیف رسمی برنامه» در اصطلاح Runtime Verification (اعتبارسنجی در حین اجرا) گفته می‌شود. که ناسا ۱۵ سال است (یعنی از سال ۲۰۰۱ تا حالا هر سال یک سمینار به نام RV برگزار می‌کند و غول‌های برنامه‌نویسی جهان می‌آیند در مورد این موضوع بحث می‌کنند...)

حالا MOP یا Monitoring Oriented Programming (برنامه‌نویسی نظارت‌گرا)، بستری است برای Runtime Verification (که البته فعلاً در ابتدای راه است اما به مرور مانند OOP جای خود را باز خواهد کرد)

 

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

برای دانلود فایل rarشده با حجم حدود ۱۰۰ مگابایت روی لینک زیر کلیک کنید:

http://yourl.ir/JavaMOP_dl

http://img.aftab.cc/news/94/javamop_presentation.png

 چون می‌خواهم دانشجوها در درس شیوه ارائه و دروسی که ارائه دارد، از اسلایدها به عنوان الگو استفاده کنند و از طرفی در ویدئو، انیمیشن‌های آن ضبط نشده و به دلم ننشست، اسلایدها را هم برای دانلود می‌گذارم. یک بار با Space اسلایدها را مرور کنید و به سادگی و در عین حال، انیمیشن‌های آرام و به‌موقع آن دقت کنید:

دانلود اسلایدها

 

به نکات ریزی که در ارائه هست دقت کنید:

- طبیعتاً ارائه مقابل ده پانزده نفر هم‌کلاسی‌هایی که هر کدام استاد دانشگاه و اکثراً در حد خود من هستند کمی سخت است. (به‌خصوص اینکه من نخودی کلاس هستم!! یعنی کوچک‌ترین عضو کلاس!!) کلاً اوائل هر ارائه‌ای، ارائه دهنده، در اوج استرس خواهد بود اما وقتی کمی گذشت، ریلکس‌تر می‌شود. دقت کنید که اگر مثل من در ابتدای ارائه نفس‌تان گرفت، بهترین ترفند این است که یک لحظه یک شوخی با جمع کنید و جمع را کمی از حالت رسمی خارج کنید. حتی می‌توانید حقیقت را بگویید: مثلاً با خنده بگویید: از استرس نفسم بند آمده!! :)
همین موضوع باعث می‌شود یک لحظه یک توقف ایجاد شود و شما به حالت طبیعی خود برگردید. دقت کنید که من چطور جو سنگین ابتدای جلسه را با یک شوخی به یک جو خودمانی تبدیل کردم...

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

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

- به ارائه دقت کنید که هم ضرب المثل در آن مطرح می‌شود، هم جوک مطرح می‌شود (و البته سریعاً کنترل می‌شود که جو رسمی کلاس به هم نریزد به «خُب»ی که بعد از یک خنده می‌گویم دقت کنید)، هم جدی می‌شود، هم به اندازه کافی تئوری دارد و هم به اندازه کافی پیاده‌سازی دارد...
یک ارائه خوب دانشگاهی باید به این صورت باشد. ترکیبی از همه خوبی‌ها و همه چیز به اندازه.

- در حین ارائه، من وسط کلاس هستم و اسلایدها را با موس بی‌سیم اپل که بسیار شیک و باکلاس است (نه صدای تیک‌تیک آن‌را کسی می‌شنود نه حواس را پرت می‌کند)، کنترل می‌کنم. (فقط ۵ ساعت روز قبل از ارائه درگیر بودم که موس را که به خاطر یک آپدیت، در ویندوز 10 شناخته نمی‌شد دوباره بشناسانم! نهایتاً با حذف آخرین آپدیت، دوباره موس فعال شد. حرفه‌ای‌ها دقت کنند: اگر خواستید درایور یک قطعه از داخل مخازن خود ویندوز حذف شود که به طور خودکار نصب نشود، موقع Uninstall یک تیکی در آن پنجره هست که نوشته Delete this driver که باید زده شود. ۵ ساعت درگیر این تیک بودم!! می‌خواهم بگویم یک ارائه خوب، ارزش دارد ساعت‌ها وقت صرفش کنی...)

- به گیرها و توضیحات استاد خیلی دقت کنید.

- اگر می‌خواهید یک ارائه موفق داشته باشید، پیشنهاد می‌کنم ارائه‌هایی که در این محصول گذاشته‌ایم (به خصوص ارائه آقای Reynolds) را تماشا کنید: آموزش ارائه در کنفرانس و سمینار و همینطور سمینارهای شرکت‌های بزرگ را تماشا کنید: ویدئوهای سمینارهای شرکت‌های بزرگ در فروشگاه سایت

 

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

نکته پایانی:

یک پیشنهاد حیاتی به دوستان برنامه‌نویسی که قصد ادامه تحصیل در رشته‌ی نرم‌افزار را دارند: فقط یک جمله: هر چه زودتر بروید سمت جاوا! (تمام مباحث روز دنیا بر اساس جاوا بیان می‌شود)

موفق باشید؛
حمید رضا نیرومند


[برنامه‌ نويسي]
1 نظر| لينك ثابت

ارسال شده بوسیله Hamid در مورخه : سه شنبه، 8 دی، 1394 (1751 مشاهده)

آنتولوژی چیست؟ XML چیست؟ RDF چیست؟

بحث را با یک مثال آغاز می‌کنم. تصور کنید در یک صفحه روی وب، نوشته شده است:

کتاب «چگونه یک تجارت الکترونیک راه اندازی کنم» نوشته «حمید رضا نیرومند» در سال ۱۳۹۳ توسط انتشارات آفتابگردان منتشر شد.

دقت کنید که این جمله چقدر پرمحتواست! نام یک کتاب، نویسنده‌ی آن، سال انتشار و انتشارات آن کتاب در این جمله وجود دارد، اما متأسفانه موتورهای جستجو این جمله را فقط یک سری «کلمه» می‌بینند ولاغیر‍! یعنی این جمله از نگاه موتورهای جستجو هیچ بار معنایی ندارد در حالی که حداقل چهار نکته مهم در آن بود!

برای اینکه بهتر متوجه شوید، به من بگویید من اینجا چه نوشته‌ام؟

 我爱神

همانطور که شما این متن را فقط یک عبارت (احتمالاً) سه کلمه‌ای می‌بینید، موتور جستجو هم جمله‌ی اول را یک عبارت چند کلمه‌ای می‌بیند!

عبارت بالا که به زبان چینی است، معادل «من خدا را دوست دارم» است. این می‌توانست به عنوان یکی از علاقه‌مندی‌های من معرفی شود اما فقط یک عبارت شامل سه کلمه دیده شد.

 

همانطور که می‌دانید ما تا به حال دو نسل از وب را پشت سر گذاشته‌ایم:

۱- وب ۱ یا وب سنتی: همان وبی که آقای «تیم برنرزلی» اختراع کرد و حاوی یک سری صفحات ساده که در آن‌ها متن و عکس بود، همین!

۲- وب ۲ یا اشتراکی: وبی که ظهور شبکه‌های اجتماعی (Social Networks) را شاهد بودیم و کاربران با استفاده از اشتراک هر نوع داده، یک لذت خاصی از وب بردند و می‌برند.

اما یک وب دیگر در راه است به نام «وب ۳ یا وب معنایی» (Semantic Web):

در وب ۳ ما به دنبال این هستیم که صفحات به طور کامل برای موتورهای جستجو و هر نوع موتور تحلیل‌گر دیگر، شناخته شده باشد و همان جمله که در بالا گفتم فقط یک سری کلمه‌ی ساده در نظر گرفته نشود!

خوب، حالا می‌شود آنتولوژی و RDF را بهتر معرفی کرد!

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

دانلود کتاب نمایه‌سازی؛ گردآوری شده توسط حمید رضا نیرومند

آنتولوژی چیست؟

آنتولوژی در لغت از دو کلمه onto به معنی «هستی» و logy به معنی «مطالعه» تشکیل شده است. ریشه آنتولوژی در فلسفه است و به ارسطو نسبت داده می‌شود. در علوم کامپیوتر و در حوزه وب معنایی، آنتولوژی مفهوم کلمات و ارتباط بین آن‌ها در حوزه‌ای که مورد استفاده قرار می‌گیرند را نشان می‌دهد. امروزه با حجم عظیمی از اطلاعات مواجه هستیم. به منظور دستیابی مؤثر به اطلاعات، به سیستمی نیاز است که بتواند به طور مناسبی، اطلاعات را از وب استخراج کرده و به طور مناسبی به کاربران ارائه دهد، اما این کار به سادگی میسر نمی‌باشد. آنتولوژی به وجود آمده است تا این مشکلات را مرتفع سازد.

روش‌های معنا بخشیدن به صفحات وب

  1. XML
  2. URI
  3. RDF

XML چیست؟

XML مخفف Extensible Markup Language و به معنی «زبان نشانه‌گذاری قابل توسعه» است.
فایل XML یک فایل متنی ساده و یک پایگاه داده قابل حمل به حساب می‌آید.
در این زبان تگ‌ها توسط برنامه‌نویس تعریف می‌شود و خود زبان، تگ‌های مشخصی ندارد. (پس یعنی دیگران هستند که زبان را «توسعه» می‌دهند. پس این، یک «زبان قابل توسعه» است)
معمولاً هر تگِ والد، نمادِ یک موجودیت و تگ‌های داخلی، صفات آن موجودیت یا همان سرستون‌ها در پایگاه داده هستند.
این زبان امروزه در تمامی نرم‌افزارها برای انتقال اطلاعات یا تنظیمات از یک محل به محل دیگر کاربرد دارد.

توضیحی در مورد تفاوت پسوند doc با docx:

خیلی‌ها سؤال می‌کنند که این پسوند x که انتهای پسوندهای آفیس از نسخه ۲۰۰۷ به بعد اضافه شد (docx و xlsx و pptx و...) به چه معناست؟

برای اینکه بهتر درک کنید، یک مثال از تستا بزنم:

ما در تستا ۲ در مقطعی نیاز پیدا کردیم که مدرس از یک آزمون در تستایی که روی سیستمش نصب کرده، خروجی بگیرد و آن خروجی را به تستایی که روی سایتش نصب کرده بارگذاری کند. من در آن زمان هر چند نام XML را شنیده بودم، اما درکش برایم سخت بود. بنابراین به سراغ XML نرفتم و خودم یک سری قوانین کلی در نظر گرفتن و مشخصات و سؤالات آزمون را با آن قواعد در یک فایل متنی ساده ذخیره کردم. مثلاً خروجی تستا ۲ را ببینید.

http://img.aftab.cc/news/93/testa_xml.png

اگر به این فایل نگاه کنید، خواهید دید که یک سری عدد آنجا خط به خط هست. فرض کنید شما بخواهید یک نرم افزار بنویسید که خروجی تستا را بگیرد و آزمون آن‌را برگزار کند. از من می‌پرسید آن اعداد چیست؟ مثلاً عدد ۱ که در خط چهارم است، نماد فعال بودن آزمون است یا نماد نمایش داده شدن نمرات بعد از آزمون یا...؟ اگر بگویم من خودم هم یادم نمی‌آید شاید باور نکنید! باید بروم کدها را تحلیل کنم بعد به شما بگویم... اگر من یک نرم افزار دیگر هم می‌نوشتم و شما از آن سؤال می‌کردید باید می‌رفتم کدهای نرم افزار دوم را هم بررسی می‌کردم بعد به شما آموزش می‌دادم که هر خط برای چیست... دقت کنید: به خاطر معنا نداشتن کلمات، نه تنها خود برنامه‌نویس ممکن است به اشتباه بیفتد، کسی هم که می‌خواهد با آن فایل کار کند بدتر به اشتباه می‌افتد و از آن بدتر اینکه این قوانین ممکن است در یک نرم افزار دیگر فرق کند!! دقیقاً مشکلی که برنامه‌نویسان با آفیس داشتند! فرض کنید مثلاً نرم افزار OpenOffice که یک آفیس رایگان است می‌خواست فایل‌های doc را بخواند. باید می‌رفت از برنامه‌نویس Word می‌پرسید آقا این اعداد که نوشته‌اید هر کدام چه ویژگی‌ای از این فایل ورد است؟ تعداد صفحاتش؟ تعداد لغاتش؟ برنامه‌نویس مثل من ممکن بود یادش برود اعداد هر خط نماد چیست... حالا فکر کنید می‌خواست پسوند xls (اکسل) را هم پشتیبانی کند! باید می‌رفت سراغ برنامه‌نویس Excel می‌پرسید: آقا! این اعداد در فایل شما چه معنی‌ای دارد؟ او هم احتمالاً یادش نمی‌آمد و باید می‌رفت کدها را تحلیل می‌کرد...

این شد که XML که زبان مشترک برای فایل‌های پایگاه‌داده‌ای قابل حمل است به وجود آمد.

برای درک تفاوت فایل قبلی با فایلی که با XML نوشته شده، به خروجی تستا ۳ نگاه کنید. این همان آزمون بالاست، اما ببینید همه چیز چقدر قشنگ با تگی که آن‌را معنا می‌بخشد احاطه شده‌اند! حالا آن عدد ۱ که در خط چهارم است را شما هم می‌توانید بفهمید که چیست! احسنت، نماد رندوم بودن سؤالات آزمون است...

حالا می‌فهمید این x در انتهای docx نماد چیست... بله، نماد XML. یعنی خروجی‌های آفیس هم از آن نسخه به بعد با XML نوشته شد تا درک و کار با آن بسیار بسیار آسان‌تر از یک فایل با قوانین نامشخص باشد.

 

مثال: جداول موجود در پایگاه داده‌ی یک کتابخانه به شکل زیر است، از داده‌های آن یک خروجی XML بگیرید.

Books

bidCodeISBNtitleauthorpublisherpubDate
11001978-964-531-102-3Learn InternetHamid Reza NiroomandAftabgardan2015
21002978-964-531-302-1C# in 24 HoursQomiNaqous2010
       

Members

midCodeFirstNameLastName
1100AliHasani
2101HojjatRahimi
    
خروجی XML:
<library>
            <books>
                        <book>
                                    <bid>1</bid>
                                    <code>1001</code>
                                    <ISBN>978-964-531-102-3</ISBN>
                                    <title>Learn Internet</title>
                                    <author>Hamid Reza Niroomand</ author>
                                    < publisher >Aftabgardan</ publisher >
                                    <author>2015</ author>
                        </book>
                        <book>
                                    <bid>2</bid>
                                    <code>1002</code>
                                    <ISBN>978-964-531-302-1</ISBN>
                                    <title>C# in 24 Hours</title>
                                    <author>Qomi</ author>
                                    < publisher >Naqous</ publisher >
                                    <author>2010</ author>
                        </book>
            </books>
            <members>
                        <member>
                                    <mid>..</mid>
                                    به همین صورت، مانند بالا ادامه دهید...
                        </member>
 
            </members>
            …
 
</library>
همانطور که می‌بینید، تمام کلماتی که در XML هستند، کاملاً مشخص است که چه هستند. مثلاً می‌شود به راحتی فهمید که Learn Internet یک عنوان (title) برای یک کتاب (book) در بین کتاب‌های (books) یک کتابخانه (library) است.

URI چیست؟

مخفف Uniform Resource Identifier و به معنی «شناسه یک‌شکل منابع» و شناسه یا آدرسی است که از روی اجزای آن می‎توان اطلاعات کافی در مورد آن منبع از جمله رده یک شی و رده‌های بالاتر آن به دست آورد.

مثالی از یک URL بدون به‌کارگیری مفاهیم وب معنایی:

http://aftab.cc/linkestan/showlink.php?id=1400

از روی این آدرس نمی‌توان فهمید که این لینک در مورد چه چیزی است.

همان لینک با به‌کارگیری مفاهیم وب معنایی:

http://aftab.cc/linkestan/link/pdf/learn-c-sharp-in-24-hours

از روی این لینک می‌توان فهمید که لینک به یک pdf در مورد آموزش C#‎ است.

 URL چیست؟

مخفف Uniform Resource Locator و به معنی «مشخص‌کننده‌ی موقعیت منبع به صورت یک‌شکل» است که یک نوع URI به شمار می‎آید. منظور از URL همان آدرس عکس‌ها و ویدئوها و صفحات (منابع) روی اینترنت است.
 

RDF چیست؟

مخفف Resource Description Framework و به معنی «چهارچوپ توصیف منابع» است.

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

با استفاده از XML می‌توانیم موجودیت‌های مختلف و صفات آن‌ها را تگ‌گذاری کنیم اما معنای آن‌ها را نمی‌توانیم بیان کنیم به عنوان مثال: اگر کسی برچسب قیمت را با PRICE نشانه‌گذاری کند و شخص دیگری با COST نشانه‌گذاری کند هیچ راهی برای فهم مترادف بودن این دو عبارت به وسیله XML وجود ندارد، اینجاست که RDF به کار می‌آید.

هر عبارت RDF به صورت یک سه-تایی (Tripple) بیان می‌شود: فاعل،گزاره، مفعول.

۳ موضوع اصلی در RDF      

http://img.aftab.cc/news/93/rdf_1.png 

1-    Subjects: فاعل جمله

2-    Predicates: گزاره یا فعلی که فاعل انجام می‌دهد.

3-    Objects: مفعول یا اسمی که جانشین مفعول شده است و کار، روی آن انجام می‌شود.

مثال:

http://img.aftab.cc/news/93/rdf_2.png 

مزایای RDF نسبت بهXML :

1- RDF یک فهم مشترک از یک مفهوم واحد را ارائه می‌دهد زیرا گاهی اوقات ما برای یک مفهوم از دو لغت متمایز استفاده می‌کنیم یا بلعکس از یک لغت برای دو مفهوم متفاوت استفاده می‌کنیم.

2-RDF بین مفاهیم در وب و دنیای واقعی ارتباط برقرار می‌کند.

مثال: جمله «آقای تیم برنزلی، وب را اختراع کرد» را به صورت RDF نمایش دهید.

<وب><اختراع کرد><آقای تیم برنزلی>

روش اعمال RDF به یک صفحه با HTML5

مثال: عبارت [نام من حمید رضا نیرومند است. من ایران را دوست دارم. کتاب مورد علاقه من «آینده خود را خلق کنید» نوشته «برایان تریسی» است] را به صورت HTML5+RDFa بنویسید؟

http://img.aftab.cc/news/93/rdf_3.png

 1-    در تگ html با استفاده از صفت prefix نسخه rdf ای که استفاده می‌کنید را تعیین کنید. (این آدرس در حقیقت آدرس یک Vocabulary است و به موتور جستجو می‌فهماند که کلماتی که شما برای معنا بخشیدن به عبارات استفاده کرده‌اید از آن «فرهنگ لغات» یا «فضای نام» انتخاب شده. مثلاً وقتی می‌خواهید بگویید «ایران»، یک علاقه‌مندی برای «حمید رضا نیرومند» است، از چه کلمه‌ای استفاده کرده‌اید و کجا تعریف شده که این کلمه به معنی علاقه‌مندی است؟ مثلاً دیکشنری که من در کد بالا معرفی کرده‌ام را ببینید)

2-    در تگ body (یا هر تگ کلیِ دیگر) یک صفت about اضافه کرده و نام فاعل (یا یک آدرس اینترنتی در مورد فاعل) که این صفحه در مورد آن است را بیان کنید.

3-    در صفحه، کلمات مهم مانند نام شخصیت، نام کتاب، .. که با فاعل رابطه‌ای دارند را با تگی مانند <span> احاطه کنید و به این تگ یک صفت rel (مخفف relation به معنی رابطه) اضافه کنید و در مقدارِ آن، رابطه‌ی آن کلمه با فاعل را بنویسید. (مثلاً «کتاب آینده خود را خلق کنید» به عنوان interest یعنی علاقه مندی برای صاحب این صفحه معرفی شده)

4-    اگر کلمه‌ای در صفحه بود که صفت فاعل بود، آن‌را با تگ span احاطه کنید و یک صفت property به آن اضافه کرده و بگویید که این کلمه چه صفتی برای فاعل است. (مثلاً «حمید رضا نیرومند» یک nickname یا اسم و فامیل برای فاعل به حساب می‌آید)

نکته: توجه کنید که نام صفات و ارتباطات باید حتماً در vocabulary که در ابتدای صفحه به آن آدرس داده‌اید وجود داشته باشد.
 
سخن پایانی:
اگر یک طراح وب هستید، سعی کنید شما هم تا حدی که می‌توانید، با استفاده از نکات بالا، به «وب معنایی» و «معنا بخشیدن به وب» کمک کنید.
 
موفق باشید؛
حمید رضا نیرومند


[برنامه‌ نويسي]
8 نظر| لينك ثابت

ارسال شده بوسیله Hamid در مورخه : چهارشنبه، 24 دی، 1393 (4889 مشاهده)

کدنویسی سریع‌تر با Emmet

دوستانی که در دوره آموزش ویدئویی Sublime شرکت کرده‌اند و یا کار با این نرم افزار را بلد هستند، می‌دانند که این نرم افزار چه نعمتی است!

اگر می‌خواهید سرعت کدنویسی شما دو برابر قبل شود، پیشنهاد می‌کنم افزونه Emmet را روی Sublime نصب کنید!

(فراموش نکنید که ابتدا از طریق این آموزش، Package Control را روی سابلایم نصب کنید)

پس از نصب، مثلاً فقط کافی‌ست تایپ کنید:

ul.menu>li*4

و تب را بزنید تا همین دستور، خروجی‌اش این بشود:

<ul class="menu">

       <li></li>

       <li></li>

       <li></li>

       <li></li>

</ul>

یعنی خودش می‌فهمد که شما یک تگ ul نیاز دارید با کلاس menu و داخل آن ۴ تا li نیاز دارید!

یا مثلاً بنویسید:

div#container>div#header+div#rightCol

تا خروجی‌اش این شود:

<div id="container">

    <div id="header"></div>

    <div id="rightCol"></div>

</div>

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

این نوع کدنویسی قبلاً با عنوان Zen-Coding شناخته می‌شد و حالا نام آن Emmet شده...

کل مخفف‌هایی که می‌توانید تایپ کنید در Emmet Cheat Sheet آمده.

ضمن اینکه یک دوره ویدئویی نیز توسط عزیزانمان در سایت کارآزموده برگزار شده که می‌توانید از طریق لینک‌های زیر این ویدئوها را دانلود کنید: اینجا کلیک کنید

 

موفق باشید؛
حمید رضا نیرومند

<div id="container">    <div id="header"></div>    <div id="rightCol"></div></div>


[برنامه‌ نويسي]
3 نظر| لينك ثابت

ارسال شده بوسیله Hamid در مورخه : شنبه، 20 دی، 1393 (2272 مشاهده)

مجموع خبرها 38 (8 صفحه | درهر صفحه 5)
[ 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Home | Forums | Download | Learning | Music | Gallery | Search | Site Map | About Us | Contact Us

Copyright 2004-2016. All rights reserved.
© by Aftabgardan Cultural Center : Aftab.cc