آویزه : %d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87

سری آموزش های طراحی وب با فریم ورک tedjs (ساخت todo list)

یکی از مثال هایی که اغلب اوقات زده می شود ، طراحی todo list می باشد.

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

فایلی ایجاد نمایید. در اینجا فایل lib.js را ایجاد می نماییم.

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

نام تگ عنصر را todo می گذاریم

همانطور که مشاهده می کنید از تابع define ، زیر مجموعه شی ted استفاده کرده ایم. با این کار یک عنصر با نام todo ساخته ایم که هیچ گونه مشخصه (Attribute) مخصوصی ندارد.

با این کار عنصر به صورت پیش فرض با display:none در نظر گرفته می شود.

در قدم بعد باید تابع سازنده عنصر را طراحی کنیم.

برای ایجاد تابع سازنده ، از تابع ted.create استفاده می کنیم. ورودی اول این تابع تابع تعریف شده می باشد و ورودی دوم آن تابع سازنده می باشد.

حال شروع به نوشتن محتویات تابع می نمایید.

ابتدا متغیر های مورد نیاز را تعریف می کنیم.

عنصر todo دارای عناصر فرزند می باشد. عنصر list ، insert و remove ..

عنصر list برای وارد کردن مقدار های ابتدایی به کار گرفته می شود.

عنصر insert درصورت استفاده می توانید نامی برای دکمه وارد سازی اطلاعات به لیست تعیین نمایید.

و عنصر remove نیز برای تعیین نام دکمه حذف از لیست به کار می رود.

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

در قدم بعدی می بایست درون html را خالی کرد تا محتوای جدید وارد شود.

در این مرحله لیست های ابتدایی درصورت وجود را وارد HTML می کنیم. لیست های ابدایی درون متغیر list ذخیره شده اند.

در اینجا اپلیکیشن ایجاد شده و اطلاعات نمایش داده شده اند. اما در صورتی که بخواهیم اطلاعاتی را اضافه یا حذف کنیم ، نمی توانیم. پس می بایست برای دکمه های insert و remove ، رویدادی ایجاد کنیم تا به عمل کاربر واکنش دهند.

کار کتابخانه به آخر رسیده. تنها یک مرحله مانده. اما برای پیشرفته تر کردن عنصر می توانیم تدبیری بیندیشیم که درصورتی که از طریق جاوا اسکریپت عنصر list به اپلیکیشن اضافه شد ، بتواند مقدار را ارزیابی کرده و وارد نماید. پس از رویداد inchange که مختص tedjs می باشد استفاده می کنیم تا ورودی های جدید را بررسی کرده و وارد نماییم.

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

در اینجا کار تمام است. کتابخانه ما ایجاد شد و ما می توانیم از آن استفاده نماییم. در زیر می توانید نمونه اجرا شده را ببینید ، کد ها را تغییر دهید و نتیجه را ببینید.



دسته بندی: آموزش, فریم ورک تد جی اس, مقاله

پردازش موازی یا خطی در جاوا اسکریپت ، مسئله این است!(قسمت دوم)

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

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

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

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

موتور V8 گوگل  برای اجرای دستورات از روش non-blocking I/O استفاده می کند ، تمامی فعالیت ها در یک نخ کنترل می شوند .

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

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

این امکان به دلیل آن است که موتور V8 خود در سطح زبان ، فرایند نخ را شبیه سازی کرده است. با این تفاوت که نام آن Event Loop  می باشد.

در این زبان صفی به نام Event Loop تعبیه شده است که دستوراتی که به I/O نیاز دارند و یا Event ها را در آن زمان بندی می نماید.

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

دستور Ajax نیز مانند Event یک دستور I/O می باشد که در این صف قرار می گیرد. دستورات I/O همانطور که گفته شد برای اجرا به نخ دیگری ارسال می شوند که همراه خود دستور فراخوانی را حمل می کنند. هنگامی که فرایند I/O به اتمام برسد فراخوان اجرا می شود و پاسخ دستور I/O درون صف Event Loop وارد می شود تا در زمان مناسب اجرا شود.

event loop

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

به عنوان مثال در قطعه کد زیر:

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

تابع setTimeout یک time event ایجاد می کند که به صورت مجزا درون صف Event loop وارد می شود. پس می بایست منتظر بماند تا Main Code اجرایش تمام شود که در این مورد حلقه زمانی طولانی سپری خواهد کرد.

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

نوع دیگر Event  ها Timer ها هستند. توابعی مانند setTimeout  و setInterval .

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

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

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

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

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



دسته بندی: مقاله

روز برنامه نویس – ۱۳ سپتامبر

امروز یعنی ۱۳ سپتامبر ، ۲۵۶ امین روز از سال (میلادی) ، روز برنامه نویس را به همه برنامه نویسان تبریک می گم. ان شا الله همه برنامه نویسان آینده درخشانی داشته باشند.

توضیحات از ویکی پدیا :

روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) به عنوان روز برنامه‌نویسان نام گرفته‌است. روسیه اولین کشوری بود که این روز را به عنوان روز برنامه‌نویس به رسمیت شناخت و پس از آن کشورهای آلمان، کانادا، چین، کرواسی، فرانسه، گوآتمالا، هند، بلژیک، استرالیا، نیوزیلند، لهستان، اسلوونی، بریتانیا، و ایالات متحده آمریکا نیز این روز را به عنوان روز برنامه‌نویس به رسمیت شناختند.

از جمله دلایل انتخاب عدد ۲۵۶ به عنوان روز برنامه‌نویس می‌توان به موارد زیر اشاره کرد:

عدد ۲۵۶ بزرگترین توان عدد ۲ کوچکتر از ۳۶۵ که تعداد روزهای یک سال است، می‌باشد. در سیستم دودویی کامپیوتری تعداد اعدادی که می‌توان در یک بایت جا داد ۲۵۶ تا می‌باشد. عدد ۲۵۶ به صورت کلی برای برنامه‌نویس‌ها عددی آشناست.

در تقویم شمسی :

در تقویم شمسی، ۲۵۶امین روز سال شمسی مصادف با ۱۰ آذرماه را می‌توان به‌عنوان روز برنامه‌نویس نامید. این تاریخ غیررسمی بوده و در تقویم رسمی ایران ثبت نشده‌است. اما برای ثبت رسمی آن کمپین جمع‌آوری امضاء راه افتاده است

تاریخچه :

ولنتین بالت، کارمند یک شرکت کامپیوتری در روسیه در اوایل سال ۲۰۰۲ امضاهایی را جهت ارسال به دولت روسیه جهت به رسمیت شناختن روزی با عنوان روز برنامه‌نویس جمع‌آوری کرد.

در ۲۴ ژوئیه ۲۰۰۹ وزارت ارتباطات روسیه، درخواستی جهت به رسمیت شناختن یک روز تحت عنوان روز برنامه‌نویس را اعلام کرد.

در ۱۱ سپتامبر ۲۰۰۹ رئیس جمهور پیشین روسیه دمیتری مدودف این روز را به عنوان روز برنامه‌نویس نام‌گذاری کرد.



دسته بندی: متفرقه

اپلیکیشن اندرویدی تاریخ ادبیات صوتی

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

تمامی تاریخ ادبیات ها به صورت تصویر سازی ذهنی به وسیله داستان و به صورت صوتی طراحی شده.

« این اپلیکیشن در گجت های با اندروید بالا تر از ۲٫۳ قابل اجرا می باشد»

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

۱) این نرم افزار با تمام رزولوشن های گوشی و تبلت های موجود سازگاری کامل دارد. واز رزولوشن ۳۲۰*۲۴۰ و بیشتر را پشتیبانی می کند.

۲)همانطور که از نام این نرم افزار پیداست در این نرم افزار تصویرسازی ها به صورت صوتی ارائه شده اند که کاربر بتواند در هر شرایطی از محتوای آموزشی آن بهره ببرد.

۳)در این نرم افزار علاوه بر تاریخ ادبیات قسمتی تحت عنوان “انواع ادبی” اضافه شده است که به انواع آثار مکتوب و منثور اشاره دارد مثلا یاد می گیرید که اثر«حیات یحیی» از نوع حسب حال می باشد. لازم به ذکر است که این نوع سوالات به شدت مورد پسند طراحان کنکور سراسری می باشد.

۴)در این نرم افزار سه دوره آزمون تستی (از آسان به دشوار) قرار داده شده است که در پایان هر آزمون درصدی را که کاربر کسب می کند به او نشان داده خواهد شد که این امکان به شدت می تواند در تثبیت آموخته های شما موثر باشد.

۵)با توجه به صوتی بودن این نرم افزار و وجود صوت ها و تصاویر متعدد در آن ، حجم کم یکی دیگر از نقات قوت این اپلیکیشن خواهد بود.

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

دانلود نسخه نمایشی (بازار)

دانلود نسخه نمایشی (ایران اپس)

iranapps

bazare



دسته بندی: فعالیت ها