محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
محمد افاضاتی
محمد افاضاتی برنامه نویس python php دیتابیس های postgresql mongodb و ...

رونوشتی از علاقه مندی هایم برای ماندگار تر شدن!

تبلیغات

طبقه بندی موضوعی

Feedburner RSS

Others

توییتر

۱۲ مطلب با موضوع «کامپیوتر :: برنامه نویسی :: javascript» ثبت شده است

یکی از مهمترین قسمت‌های طراحی فاز test و debug است. اینکه روند اصلی کد در همه جا درست اجرا می شود؟ اینکه کلاً منطقی کد درستی نوشته اید؟ البته خیلی از javascript developer ها اینکار را نمی‌کنند و کار را خلاصه به console می‌کنند ولی آیا روش درستیست؟ نمی‌شود مطلقاً به این کار خرده گرفت ولی در نظر گرفتن چند نکته ضروریست
کدی که قابلیت test دارد با کد معمولی متفاوت است. برای اینکه قابل تست باشید تا جای ممکن نباید چیز جدید در end method ها استفاده کنید و همه چیز را از کسی که شما را call کرده‌اید بگیرید ولی معمولاً کد ها اینگونه نیست برای همین هنگام debug کردن اینکه کار کجا خراب شده است سختر می شود.

۱ نظر موافقین ۰ مخالفین ۰ ۱۷ مهر ۹۱ ، ۱۵:۱۸
محمد افاضاتی

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

CoffeeScript -> http://jashkenas.github.com/coffee-script/

این زبان در حقیقت در نهایت به javascript تبدیل می‌شود فقط اتفاقی که می‌افتد کد کوتاه تری را با این زبان باید بزنید به طور مثال شما دیگر چیزی رو declare نمی‌کنید یا کلاً از آکولاد استفاده نمی‌کنید و همه چیز با tab مشخص می‌شود

۰ نظر موافقین ۱ مخالفین ۰ ۱۷ مهر ۹۱ ، ۰۹:۵۷
محمد افاضاتی

یکی از جنبه‌های مهم نرم‌افزار real-time بودن قضیه است. همه چیز در لحظه ممکن است تغییر کند و application js نباید منتظر refresh از سمت کاربر باشد.
شاید شما این مشکل را با pull request های مداوم حل کنید. ولی آیا این راه درستیست؟ چند درصد request های شما بیهوده است؟
راه حل درست تر این است که هنگام تغییر سرور به نرم‌افزار سمت کاربر بگوید که تغییر صورت گرفته request بزن یا اینکه واقعاً تغییرات را بگوید.
البته همه جا نیاز به این کار نیست. بعضی دیتاها اصلاً مهم نیستند بعضی نرم‌افزار ها اینقدر کوچک هستند و بازدید کمی دارند که شما request بیهوده بزنید بهتر است. در کل باید به نسبت جایی که قرار است کار صورت بگیرد به این قضیه نگاه کنید.

۲ نظر موافقین ۲ مخالفین ۰ ۱۷ مهر ۹۱ ، ۰۹:۴۷
محمد افاضاتی

در زبان javascript کلاً چیزی به اسم Dependency Management وجود ندارد یعنی شما به راحتی نمی‌توانید بالای فایلتان بنویسید Import X و از X استفاده کنید. کلاً قرار است که همه نیاز ها در خود html پایه با load کردن درست فایل‌ها انجام شود.
در نهایت اگر درست هم به همه چیز دقت کنید همچین نتیجه‌ای خواهد داشت

<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="jquery.ui.js" type="text/javascript" charset="utf-8"></script>
<script src="application.utils.js" type="text/javascript" charset="utf-8"></script>
<script src="application.js" type="text/javascript" charset="utf-8"></script>
<script src="models/asset.js" type="text/javascript" charset="utf-8"></script>
<script src="models/activity.js" type="text/javascript" charset="utf-8"></script>
<script src="states/loading.js" type="text/javascript" charset="utf-8"></script>
...

۲ نظر موافقین ۰ مخالفین ۰ ۲۱ شهریور ۹۱ ، ۰۷:۱۷
محمد افاضاتی

یکی از مهمترین قسمت‌های الگوهای طراحی (هر سه مورد MVVM MVC MVP ) قسمت View آن است.
اینکه داده‌ای که داده شده است کجا تبدیل به template می شود؟
به هر صورت باید در container view مربوط به application دیتای مورد نظر را نشان داد.

۱ نظر موافقین ۳ مخالفین ۰ ۱۵ شهریور ۹۱ ، ۱۵:۲۲
محمد افاضاتی

State در حقیقت وضعیت حاضر نمایشی کاربر است. اینکه الان چی باید ببیند اینکه قبل تر چی دیده اینکه با کلیک بر روی فلان دکمه چه خواهد دید؟ در روش‌های سنتی همه چیز با استفاده از لینک های ثابت و session کاربر قابل handle بود ولی در روشی که همه چیز سمت javascript هست چی؟ آیا به همین راحتیست؟
state را اینگونه تعریف می‌کنند: جواب‌های متفاوتی که بر اساس یک درخواست ثابت می‌آید. به طور مثال یک آدرس ممکن از برای کاربر عضو یک شکل بیاید و برای کاربر غیر عضو یک شکل دیگر load شود.
در کل یک application یک state فعال دارد و لیستی از state های گذشته. ارتباط بین دو state یک transaction هست که برای حرکت در بین state ها call می شود.

۰ نظر موافقین ۱ مخالفین ۰ ۱۴ شهریور ۹۱ ، ۰۹:۵۳
محمد افاضاتی

هنگامی که شما یک اطلاعات را از سرور دریافت می‌کنید آیا بهتر نیست اطلاعات را نگه دارید تا در درخواست مجدد همین اطلاعات از آن‌ها استفاده کنید؟
کلاً لایه model از سمت view می‌تواند دیده شود و همه نیاز های sync از طریق خود model حل شود. (دقت کنید که این موارد پیشنهادیست و به نسبت نرم‌افزار شما باید حل شود. ممکن از عمل sync جزیی از لایه controller شما باشد یا …)
مهمترین سؤال این مسأله این است دیتای مورد نظر کجا ذخیره شود؟

۱ نظر موافقین ۳ مخالفین ۰ ۱۴ شهریور ۹۱ ، ۰۹:۱۸
محمد افاضاتی

مهمترین ورودی کاربر Event است. تمام اتفاقاتی که قرار است منجر به حرکتی بشود با استفاده از Event می‌تواند handle شود. اتفاقاتی مثل click و …
البته مرورگر ها در بعضی موارد رفتار های متناقضی دارند که خوشبختانه ابزار هایی مثل JQuery کمک زیادی جهت یکسان سازی این Event ها می کنند.

۱ نظر موافقین ۱ مخالفین ۰ ۱۴ شهریور ۹۱ ، ۰۹:۰۷
محمد افاضاتی

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

لیستی از الگو های طراحی:

  • Constructor Pattern     
  • Module Pattern    
۵ نظر موافقین ۱ مخالفین ۰ ۱۳ شهریور ۹۱ ، ۱۴:۳۳
محمد افاضاتی

برای هر پروژه ای نیاز به تعریف class وجود دارد. روش‌های مختلفی برای تعریف وجود دارد که چند موردش عبارت است از:
 

استفاده از function

یکی از معمول ترین روش هاست. در این حالت شما یک function تعریف می‌کنید و موارد را در context همان اضافه می کنید.

۳ نظر موافقین ۰ مخالفین ۰ ۱۲ شهریور ۹۱ ، ۱۶:۲۲
محمد افاضاتی