Skip to main content
title

مقالات برنامه نویسی سایت


Vue.Js چیست

سه شنبه ۲۸ بهمن ۱۳۹۹

جاوا اسکریپت یک زبان اسکریپت‌­نویسی (یا برنامه­‌نویسی) است که برای افزودن ویژگی­‌های پیچیده (مانند انیمیشن­‌های 2 و 3 بعدی، نقشه­‌های واکنش­‌گرا و...) به وب­‌سایت از آن استفاده می­‌شود. برنامه‌­نویسان جاوا اسکریپت به منظور کدنویسی کم­‌تر و رسیدن به نتیجه مورد نظر در کوتاه‌­ترین زمان، از فریم‌­ورک‌­های این زبان مانند Vue ، React، Angular و... استفاده می­‌کنند. هر کدام از این فریم‌­ورک­‌ها شامل کتابخانه­‌های کوچک و بزرگ به همراه قواعد و دستورات خاص خود هستند و برنامه‌­نویسان برای انتخاب هر کدام از آن‌ها دلایل خود را دارند. شما نیز اگر در انتخاب کتابخانه­‌های جاوا اسکریپت برای یادگیری مردد هستید، ابتدا باید ویژگی­‌های هر کدام را به خوبی بشناسید. در مطالب قبلی درباره فریم‌ورک React Native صحبت کرده‌ایم و در ادامه این مقاله با فریم‌ورک در حال رشد و محبوب Vue.JS آشنا خواهیم شد.

فهرست محتوای این مقاله

فریم‌ورک Vue js چیست؟

چه ویژگی­‌هایی Vue.js را منحصر به فرد کرده است؟

کتابخانه‌های محبوب Vue js

کدام شرکت‌­ها از Vue js استفاده می‌­کنند؟

پیش نیازهای یادگیری Vue js

آینده شغلی Vue js

جمع‌بندی

فریم‌ورک Vue js چیست؟

ویو یک فریم‌ورک متن باز زبان javascript است که از آن برای توسعه رابط کاربری استفاده می­‌شود. Vue.js برای اولین بار در دسامبر سال 2013 توسط Evan You، یکی از کارمندان سابق گوگل، به دنیا معرفی شد. ایوان که در شغل پیشین خود از فریم­ورک Angular js در توسعه برنامه‌­ها استفاده می‌کرد، تصمیم گرفت تا فریم‌ورکی برای استفاده در پروژه‌­های خود خلق کند که به اندازه Angular قدرتمند و در عین حال سبک‌وزن و انعطاف‌پذیر باشد.

شما می­‌توانید از Vue.js در ساخت اپلیکیشن­‌های تحت وب تک صفحه‌ای یا حتی وب‌سایت­‌هایی در مقیاس بزرگ با ساختارهای مختلف استفاده کنید. همچنین می‌­توانید کامپوننت‌­هایی ایجاد کرده و در سایر بخش‌های پروژه یا حتی پروژه­‌های دیگر از آن استفاده کنید.

چه ویژگی­‌هایی Vue.js را منحصر به فرد کرده است؟

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

مستندات جامع و ساده

هر چیزی که برای کدنویسی با فریم‌­ورک Vue.js به آن نیاز داشته باشید، از مباحث ساده و مقدماتی گرفته تا کدهای نمونه، سوالات، روش‌های خطایابی، API و غیره همگی در مستندات سایت Vue.js موجود است. برای دسترسی به مستندات و راهنمای ساده استفاده از Vue.js اینجا را کلیک کنید.

یادگیری آسان

افرادی که به جاوا اسکریپت تسلط دارند به راحتی و با صرف چند ساعت برای آموزش Vue.js، می­‌توانند یک پروژه متوسط تولید کنند که این موجب امیدواری و هیجان بیش­تر برای یادگیری می‌شود. در نتیجه Vue.js بهترین انتخاب برای برنامه‌نویسانی با تجربه جاوا اسکریپت و حتی برنامه­‌نویسان کم تجربه است.

جامعه محور بودن JS

ممکن است برخی برنامه­‌نویسان Vue را انتخاب مناسبی ندانند زیرا این فریم‌ورک توسط شرکت‌­های بزرگی مانند Google که از Angular پشتیبانی می‌کند و همچنین Facebook که ارائه دهنده React Native است، پشتیبانی نمی‌شود. اما استفاده زیاد از این فریم‌ورک توسط برنامه‌نویسان، داشتن انجمن­‌های پرسش و پاسخ فراوان و همچنین استفاده شرکت‌­های بزرگ از این فریم‌ورک، موجب علاقه مندی برنامه‌نویسان سراسر جهان به توسعه و رشد سریع آن شده است؛ به گونه‌­ای که بسیاری از برنامه‌­نویسان Vue را بر سایر فریم­ورک­های جاوا اسکریپت ترجیح می­دهند.

ادغام آسان و انعطاف پذیری

کدهای نوشته شده با فریم­ورک Vue قابل استفاده در هر پروژه­ دیگری هستند. بیش از 81% از توسعه‌دهندگان تاکید کرده‌اند که این ویژگی Vue، مهم­ترین دلیل آن­‌ها برای استفاده از این فریم­‌ورک است. همچنین Vue.js نسبت به React Native و Angular حجم کمتر و در عین حال سرعت بالاتری دارد.

نسخه­‌های Vue.js

از زمان معرفی این فریم‌ورک تا امروز همواره شاهد توسعه و به روزرسانی آن بوده‌­ایم. اولین نسخه ویو در سال 2013 و جدیدترین نسخه آن (2.6) در فوریه سال 2019 عرضه شده است. در نسخه 3 ویو که در سال 2020 منتشر خواهد شد، شاهد تغییرات گسترده‌ای مانند کم شدن حجم، افزایش سرعت و بازنویسی برخی دستورات خواهیم بود.

فریم ورک جاوا اسکریپت

کتابخانه‌های محبوب Vue js

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

Element UI : ابزاری برای توسعه UI اپلیکیشن‌­های تحت وب و دسکتاپ است. اگر تمایل به ساخت اپلیکیشن­‌های دسکتاپ با استفاده از فریم‌ورک Electron دارید، این کتابخانه را به شما توصیه می‌کنیم.

IView : این کتابخانه ابزاری برای توسعه UI ویجت‌­ها و کامپوننت­‌ها است. با استفاده از این کتابخانه می‌­توانید کدهایی تمیز و قابل نگهداری داشته باشید.

Vuetify : برای ساخت کامپوننت­‌هایی با قابلیت استفاده مجدد می‌توانید از کتابخانه Vuetify استفاده کنید. این کتابخانه از طراحی متریال گوگل بهره‌­مند بوده و با تمامی مرورگرهای مدرن از جمله Safari 9 و IE11 سازگار است.

Mint UI : مینت یک کتابخانه رابط کاربری موبایل با کامپوننت‌­های Css و Js است. اگرچه این کتابخانه در کشور چین ساخته شده اما ترجمه انگلیسی مستندات آن نیز موجود است. سادگی و حجم بسیار کم این کتابخانه (حدودا 30kb) از علت‌­های محبوبیت آن است.

کدام شرکت‌­ها از Vue js استفاده می‌­کنند؟

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

Evan You سازنده این فریم‌­ورک اهل کشور چین است و بسیاری از کمپانی‌­های معتبر چینی مانند

Alibaba

Baidu

Xiaomi

و غیره Vue را برای توسعه انتخاب کرده‌اند. بسیاری از شرکت‌­های معتبر مانند ،GitLab، Adobe و com نیز از این فریم‌ورک در توسعه محصولات خود بهره می‌برند. Nasa نیز اخیرا آگهی‌­هایی برای استخدام توسعه‌­دهندگان مسلط به Vue منتشر کرده­ است.

پیش نیازهای یادگیری Vue js

از آنجا که ویو فریم‌ورکی برای توسعه رابط کاربری و برنامه‌نویسی تحت وب است، یادگیری Html5 و Css3 پیش از یادگیری آن ضروری است. ویو مبتنی بر جاوا اسکریپت است پس از این زبان محبوب نیز نباید غافل شد. علاوه بر این زبان‌ها آشنایی با مفاهیم برنامه‌نویسی شی گرایی (Objected-Oriented Programing) هم می‌تواند دید خوبی به شما بدهد گرچه ضروری نیست. اگر با این موارد آشنایی دارید یادگیری ویو برای شما بسیار آسان خواهد بود.

آینده شغلی Vue js

اینطور به نظر می­‌رسد که این فریم­‌ورک توانسته به سرعت جای خود را در دنیای توسعه دهندگان جاوا اسکریپت و فرانت-­اند باز کرده و با رقبای بزرگی مثل انگولار و React Native و غیره رقابت کند. اما موفقیت ویو به همین­جا ختم نمی‌شود و جای رشد و پیشرفت زیادی دارد. کمپانی‌ها نیز ترجیح می­‌دهند همواره از توسعه دهندگانی استفاده کنند که به فریم­ورک­‌های متن باز مدرنی مانند ویو تسلط دارند. شما نیز اگر به توسعه فرانت اند با فریم‌­ورک Vue علاقه­‌مند هستید فرصت را از دست ندهید و همین حالا آموزش حرفه ای فریم ورک VueJS 2.0 را شروع کنید.

جمع‌بندی

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

منبع

https://7learn.com/

Buddy CSS چیست

یک شنبه ۲۶ بهمن ۱۳۹۹

به عبارت ساده سی اس اس (CSS) زبانی است که با استفاده از آن می توان ظاهر کدهای زبان های Markupیی همچون اچ تی ام ال را تغییر داد. در واقع اچ تی ام ال (HTML) ساختار یک صفحه از وب سایت را ایجاد می کند و این در حالی است که سی اس اس (CSS) نحوه به نمایش در آمدن عناصر مختلف زبان اچ تی ام ال (HTML) را مشخص می سازد:

the relationship between html and css

برای روشن شدن مطلب، زبان اچ تی ام ال (HTML) را به اسکلت یک ساختمان تشبیه می کنیم. همانطور که در تصویر فوق می بینیم اسکلت ساختمان عاری از هرگونه زیبایی ظاهری فقط چهارچوب اصلی ساختمان را مشخص می سازد. در سمت چپ، همان سازه را می بینیم که با اعمال قوانین سی اس اس (CSS) ظاهری متفاوت به خود گرفته است. همانطور که در سمت چپ تصویر می بینیم با اعمال سه سری متفاوت از قوانین سی اس اس (CSS) توانسته ایم ساختاری یکسان را به سه مدل مختلف نمایش دهیم.

زبان CSS مخفف واژگان Cascading Style Sheet به معنی "الگوهای آبشاری" است. علت اختصاص صفت Cascading به معنی "آبشاری" به این زبان این است که قوانین این زبان به صورت آبشاری یا از بالا به پایین اعمال می شوند. برای روشن شدن این مسئله ابتدا نیاز است تا راه های مختلفی که از آن طریق می توان کدهای سی اس اس (CSS) را روی یک سند اچ تی ام ال (HTML) اعمال کرد مورد بررسی قرار دهیم:

به طور کلی سه راه برای استفاده از کدهای سی اس اس در یک سند اچ تی ام ال وجود دارد که عبارتند از:

Inline: منظور از این اصطلاح این است که می توان کدهای سی اس اس (CSS) را در قالب Attribute، داخل تگ های اچ تی ام ال (HTML) استفاده کرد. برای روشن شدن این مطلب کد زیر را مد نظر قرار می دهیم:

این یک پاراگراف است

همانطور که می بینیم داخل تگ آغازین

کلیدواژه style را نوشته و یک علامت مساوی مقابل آن قرار می دهیم. سپس داخل علامت های " " به هر تعداد Property که بخواهیم می توانیم مورد استفاده قرار دهیم و آن ها را با یک فاصله از یکدیگر جدا می سازیم. تا حد ممکن استفاده از این نوع نوشتن کدهای سی اس اس (CSS) توصیه نمی شود چرا که اگر بخواهیم روزی مقادیر یک تگ را تغییر دهیم، می بایست شروع به ویرایش کلیه کدهای سی اس اس (CSS) در کلیه فایل های اچ تی ام ال (HTML) نماییم.

2. Internal: منظور از این اصطلاح این است که می توان کلیه کدهای سی اس اس (CSS) را در تگ یک سند اچ تی ام ال (HTML) نوشت:

این یک پاراگراف است

در نسخه های قبلی اچ تی ام ال (HTML) برای تگ

این یک پاراگراف است

همانطور که در کد فوق می بینیم، ابتدا تگ را کامنت کرده ایم سپس در تگ ابتدا تگ های

منبع

https://natilos.ir/

طراحی وب، یکی از زمینه‌های رایج توسعه نرم‌افزاری در دنیای امروز است که دارای ابزارهای مختلفی برای برنامه‌نویسان و توسعه‌دهندگان است. به‌غیراز بخش‌های رایج یک وب‌سایت یا سامانه تحت وب که برای کاربران قابل‌مشاهده است و نیاز به استفاده از زبان‌های برنامه‌نویسی سمت مشتری (مانند HTML، CSS و JavaScript) دارد، بخش مهم دیگر این سامانه‌ها یا وب‌سایت‌ها، بخش سمت سرور است. دو زبان برنامه‌نویسی رایج در این حوزه، زبان‌های PHPو ASP.NET هستند که طیف وسیعی از توسعه‌دهندگان وب از آن‌ها استفاده می‌کنند.

در این میان، انتخاب بین این دو زبان برنامه‌نویسی، عموماً کار آسانی نیست و بسته به نیازهای توسعه وب، این انتخاب تغییر خواهد کرد. البته بسیاری از کاربران متخصصی که از هر دو زبان در توسعه پروژه‌های خود استفاده کرده‌اند، زبان برنامه‌نویسی PHP را بسیار بهتر از ASP.NET می‌دانند. در این مقاله، قصد داریم که این دو زبان را با یکدیگر از دیدگاه‌های مختلف بررسی کنیم و به‌درستی ادعای این دسته از متخصصین، برسیم. با ما همراه باشید.

مقایسه از دیدگاه بودجه و هزینه‌ها

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

آموزش PHPآموزش مرتبط: دوره صفر تا صد آموزش PHP پروژه محور

مقایسه از دیدگاه پشتیبانی و راهنمایی

قطعاً می‌دانید که PHP، محبوب‌ترین زبان برنامه‌نویسی تحت وب سمت سرور است که در بسیاری از وب‌سایت‌ها و سامانه‌های تحت وب، مورداستفاده قرار می‌گیرد. این مزیت، باعث شده است تا فروم‌ها، گروه‌های تخصصی و اسناد آموزشی و عیب‌یابی فراوانی برای آن در اینترنت وجود داشته باشد که به تازه‌کارها یا کسانی که در توسعه پروژه‌های خود دچار مشکل شده‌اند، کمک کند. این در حالی است که ASP.NET، حرفی در مقابل PHP نخواهد داشت و طیف مخاطبین کمتری را نیز شامل می‌شود.

برتریPHP نسبت بهASP

مقایسه از نظر سرعت عملکرد و پیاده‌سازی

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

در سوی دیگر، ASP.NET معمولاً بسیار تخصصی‌تر بوده و به‌سادگی امکان یافتن یک ماژول رایگان در آن وجود ندارد. بنابراین فرایند طراحی وب‌سایت با این زبان برنامه‌نویسی، عموماً وقت‌گیرتر و طولانی‌تر خواهد بود. البته باید این نکته را نیز بیان نمود که سرعت اجرای وب‌سایت‌های مبتنی بر ASP.NET نیز به لطف وب سرور IIS مایکروسافت، چندان کندتر از PHP نیست، ولی همچنان نیاز به در نظر گرفتن بودجه جهت پشتیبانی و استفاده از خدمات در آن دیده می‌شود.

مقایسه از دیدگاه سادگی فراگیری و توسعه

یادگیری PHP، از یک نظر‌گاه کلی، بسیار ساده از ASP.NET بوده و کاربر را درگیر پارامترهای تخصصی و پیچیده نخواهد نمود. این در حالی است که ASP.NET، تا حد زیادی مشابه زبان‌های مبتنی بر چهارچوب .NET مایکروسافت، مانند C# و ویژوال‌بیسیک بوده و پیچیدگی‌های بیشتری نیز دارد.

همین تفاوت باعث شده است که اکنون چهارچوب‌های توسعه فراوان و قدرتمندی برای PHP به وجود آیند که ازجمله معروف‌ترین آن‌ها، می‌توان به لاراول (Laravel) و سمفونی (Symphony) اشاره کرد. این فریم‌ورک‌های قدرتمند PHP، باعث شده‌اند که برنامه‌نویسان بتواند با مقدار کدهای کمتر، در مدت‌زمان کوتاه‌تری به نتایج محاسبات خود دست یابند. پیشنهاد میکنیم آموزش لاراول را از دست ندهید.

منبع

https://academyit.net/

NodeJS چیست

یک شنبه ۱۹ بهمن ۱۳۹۹

امروزه جاوا اسکریپت در جاهای مختلف حضور دارد و کارهای متنوعی با آن انجام می‌شود. هرچند جاوا اسکریپت را کنار HTML و CSS هسته وب می‌دانند اما از این زبان سطح بالا و مفسری به جزء وب در ساخت اپلیکیشن‌های موبایل، بازی‌های رایانه ای، برنامه‌های دسکتاپ و غیره نیز استفاده می‌شود. از مدت‌ها قبل یکی از آرزوهای برنامه نویسان جاوا اسکریپت این بود که بتوانند کدهای خود را به جز مرورگر کاربر در سمت سرور هم اجرا کنند. یعنی به کمک جاوا اسکریپت بتوانند ظاهر و منطق سرویس تحت وب خود را در کنار هم ایجاد کنند و دیگر برای برنامه نویسی سمت سرور سراغ زبان هایی مثل PHP یا Ruby نروند. یکی از محیط‌های هایی که به برنامه نویسان اجازه می‌دهد کدهای جاوا اسکریپت خود را سمت سرور اجرا کنند، Node.js می‌باشد. در این آموزش بررسی می‌کنیم که Node.js چیست و چه کاربردهایی دارد.

َNode.js چیست ؟

Node.js یک پلتفرم سمت سرور مبتنی بر موتور جاوا اسکریپت گوگل کروم (V8 Engine) می‌باشد. Node.JS تمام چیزهایی که برای اجرای یک برنامه نوشته شده به زبان جاوا اسکریپت را نیاز دارید برایتان فراهم می‌کند. آقای Ryan Dahl در سال 2009 Node.JS را معرفی کرد تا نشان دهد جاوا اسکریپت قدرتمند‌تر از این حرف‌ها است که فقط برای پویاسازی صفحات وب در فرانت اند استفاده شود. در واقع به کمک Node.js زبان برنامه نویسی جاوا اسکریپ به جای اجرا درمرورگر در محیط سرور اجرا می‌شود. Node.js به شما اجازه می‌دهد به آسانی و سادگی برنامه‌های تحت شبکه مقیاس پذیر و بزرگ بنویسید.

جاوا اسکریپت از سال 1995 در حال پیشرفت بود. هر چند این زبان تا مدت‌ها قبل حضور موفقی در سمت سرور نداشت و و تلاش هایی که توسط برنامه نویسان انجام شده بود، به مرور زمان از ذهن توسعه دهندگان دیگر محو می‌شد. تا اینکه با معرفی نود جی اس در سال 2009 مهره برگشت و به مرور زمان جاوا اسکریپت بیشتر و بیشتر در سمت سرور مورد استفاده قرار گرفت.

Node.js فریم ورک نیست

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

فریم ورک‌های زیادی با زبان جاوا اسکریپت طراحی شده اند و در بخش‌های مختلف مورد استفاده قرار می‌گیرند. برخی از فریم ورک‌های معروف جاوا اسکریپت عبارتند از: Angular، React، Meteor.js، Vue.js و غیره. استفاده از این فریم ورک‌ها تا حد زیادی کارایی و امنیت محصول ما را بالا برده و درمقابل هزینه‌ها را هم کاهش می‌دهد.

پس دقت داشته باشید که Node.js فریم ورک نبوده و تعریف دقیق آن "محیط اجرایی" یا "run-time environment" می‌باشد. در واقع نود جی اس کمی فراتر از فریم ورک رفته و دامنه کاربردهای آن کمی بیشتر از فریم ورک می‌باشد. Node.js محدود به برنامه‌های تحت وب نبوده و می‌توان از آن در ساخت میکروکنترلر ها، Rest APIها، بسته‌های سیستم عامل، رباتیک و حتی در مراحل پیشرفته در ساخت برنامه برای هواپیمای بدون سرنشین نیز استفاده کرد.

چرا باید از Node.js استفاده کنیم؟

Node.js چیست ؟

Node.js بازدهی و انعطاف بالایی دارد

نود در کنار V8 engine از زبان برنامه نویسی C++ استفاده کرده و سرعت بسیار بالایی دارد. هم V8 هم Node.js به صورت مرتب آپدیت شده و با قابلیت‌های جدید جاوا اسکریپت هماهنگ می‌شوند، همینطور بازدهی آنها بالاتر رفته و مشکلات امنیتی آنها نیز برطرف می‌شود. همینطور به دلیل استفاده از زبان جاوا اسکریپت انتقال فایل JSON (متداول‌ترین قالب انتقال داده در وب) به طور پیش فرض بسیار سریع خواهد بود.

Node.js کراس پلتفرم است

پلتفرم هایی مثل Electron.js یا NW.js به شما اجازه می‌دهند با نود جی اس برنامه‌های دسکتاپ بسازید. به این ترتیب می‌توانید برخی از کدهای برنامه تحت وب خود را در محیط ویندوز، لینوکس و مک اواس استفاده کنید. در واقع به کمک نود جی اس، همان تیمی که روی نسخه وب محصول کار می‌کنند، بدون نیاز به دانش تخصصی در زبان‌های C# یا Objective C یا سایر زبان هایی که برای ساخت برنامه‌های Native به کار می‌روند، می‌توانند یک برنامه دسکتاپ بسازند.

Node.js می‌تواند با میکروسرویس‌ها ترکیب شود

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

Node.js چه کاربردهایی دارد؟

ساخت برنامه‌های تک صفحه ای (SPA)

SPA مخفف single-page app بوده و برنامه هایی گفته می‌شود که تمام بخش‌های آن در یک صفحه پیاده سازی می‌شود. از SPA بیشتر برای ساخت شبکه‌های اجتماعی، سرویس‌های ایمیل، سایت‌های اشتراک ویدئو و غیره استفاده می‌شود. یکی از معروف‌ترین سایت هایی که به این شکل ساخته شده است، سرویس اشتراک ویدئو یوتیوب است. از آنجایی که نود جی اس از برنامه نویسی نامتقارن یا asynchronous به خوبی پشتیبانی می‌کند، برای ساخت برنامه‌های SPA انتخاب خوبی به حساب می‌آید.

ساخت برنامه‌های RTA

RTA مخفف real-time app می‌باشد. یعنی برنامه هایی که به صورت لحظه ای دارای تغییرات مختلفی هستند. به احتمال زیاد قبلا با این نوع برنامه‌ها کار کرده اید. برای مثال Google Sheets، Spreadsheets یا Slack از این دست برنامه‌ها هستند. در کل برنامه‌های تعاملی، ابزارهای مدیریت پروژه، کنفرانس‌های ویدئویی و صوتی و سایر برنامه‌های RTA عملیات‌های سنگین ورودی/خروجی انجام می‌دهند.

ساخت چت روم

یکی از معروف‌ترین نمونه‌های برنامه RTA چت روم‌ها و پیام رسان‌ها هستند. احتمالا روزانه از پیام رسان و چت روم‌های مختلف استفاده می‌کنید و دوست دارید یک چت روم برای خودتان بسازید. در واقع نود جی اس یک انتخاب عالی برای این کار است. اگر قصد ساخت چنین محصولی را دارید، باید به موارد مختلفی مثل تحمل ترافیک زیاد کاربران، سبک بودن محصول، سرعت بالای ارسال پیام‌ها وغیره توجه داشته باشید. تمام این موارد به کمک نود جی اس و یک فریم ورک جاوا اسکریپت مثل Express.js در سمت سرور قابل پیاده سازی است.

ساخت بازی‌های آنلاین تحت مرورگر وب

ایده ساخت چت روم جذاب است، اما جذابیت آن زمانی بیشتر می‌شود که یک بازی هم برای مرورگر وب بنویسید و کنار آن بازی یک چت روم هم ارائه کنید. به کمک نود جی اس می‌توان به توسعه بازی تحت وب پرداخت. در واقع با ترکیب تکنولوژی‌های HTML5 و ابزارهای جاوا اسکریپت ( مثل Express.js یا Socket.io یا غیره ) می‌توانید بازی‌های دوبعدی جذابی مثل Ancient Beast یا PaintWar بسازید.

جمع بندی

وقتی از برنامه نویسی سمت سرور صحبت می‌کنیم، احتمالا اولین چیزی که به ذهنتان می‌رسد PHP است، بعد هم احتمالا ذهنتان به سمت مایکروسافت و تکنولوژی ASP.Net می‌رود. اما جاوا اسکریپت هم با معرفی نود جی اس و امکانات قابل قبول در حوزه برنامه نویسی سمت سرور هم ورود کرد. نود جی اس یک محیط اجرایی رایگان برای زبان جاوا اسکریپت است که کارهای متنوعی انجام می‌دهد. نود جی اس رایگان است، یک جامعه بزرگ از برنامه نویسان پشت آن قرار دارند و یک پکیج منیجر بسیار قدرتمند به نام NPM یا Node Package Manager برای آن ساخته شده که نزدیک به نیم میلیون پکیج در آن قرار دارد. هر چقدر بیشتر با این پلتفرم کار کنید این سوال برایتان به وجود می‌آید که چرا زودتر سراغ نود جی اس نرفتم. اگر تجربه ای از کار با نود جی است دارید خوشحال می‌شویم با ما و کاربران سون لرن به اشتراک بگذارید.

منبع

https://7learn.com/

NPM چیست

یک شنبه ۱۹ بهمن ۱۳۹۹

در این درس از نقشه راه طراحی سایت، به معرفی یک کتابخانه‌ی قدرتمند می‌پردازیم. npm بحث امروز ماست. همراه ما باشید.

npm چیست؟

npm یک کتابخانه‌ی بزرگ است که یک نصاب و Package Manager به حساب می‌آید. این کتابخانه Open source و رایگان می‌باشد.

NPM برگرفته از نام Node Package Manager و به معنای یک نرم‌افزار مدیریت بسته node.js است.

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

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

معرفی زبان javaScript

Package Manager چیست؟

در حین برنامه‌نویسی گاهی لازم است در پروژه، از یک یا چند کتابخانه استفاده کنیم.

در گذشته لازم بود حتماً این کتابخانه‌ها را دانلود و به پروژه اضافه می‌کردیم.

گاهی وابستگی یک کتابخانه به چند فایل یا کتابخانه‌ی دیگر کارکردن را بسیار پیچیده می‌کرد. زیرا باید تمام آن فایل و کتابخانه‌های وابسته را نیز به پروژه اضافه کنیم!

از این رو ابزاری به نام Package Manager ایجاد شد تا اعمالی مثل نصب، بروزرسانی و حذف کتابخانه‌ها را به صورت خودکار انجام دهد.

از مزایای استفاده از Package Managerها این است که نیازی نیست به فکر اضافه کردن فایل‌های جانبی و وابسته به کتابخانه‌ی اصلی باشیم. این ابزار قادر است این کتابخانه‌ها را دانلود و نصب نماید.

موارد کاربرد npm

افزودن پکیج های مختلف به پروژه

اجرا کردن پکیج ها بدون دانلود با استفاده از اجرای دستور در (CLI (command line

بروزرسانی آسان پکیج های استفاده شده

اشتراک گذاری کدها با سایر کاربران npm

کنترل آسان ورژن پروژه

npm دارای یک command line‌ است که برای دانلود و نصب نرم‌افزار استفاده می‌شود.

npm‌ چه کاربردی دارد؟

نصب npm

برای نصب این ابزار محبوب به نصب Node.js نیاز دارید. یعنی شما باید از طریق آدرس ابتدا node.js را نصب کنید تا npm همراه آن نصب شود.

بعد از نصب node.js‌ برای اطمینان از نصب npm کافیست cmd ویندوز را باز کنید و دستور npm –v را تایپ کنید تا ورژن آن نمایش داده شود.

منبع

https://adminesite.com/

NET Core چیست

یک شنبه ۱۹ بهمن ۱۳۹۹

بسیاری از برنامه نویسان قدیمی و افرادی که علاقه زیادی به مایکروسافت و برنامه های انحصار طلب مایکروسافت نداشتند اصلی ترین علت را انحصار طلبی و عدم توانایی اجرا در سایر پلتفرم ها مطرح مینمودند. مایکروسافت در چند سال اخیر به لزوم اوپن سورس، چند پلتفرم بودن پی برده است که سیستم هایی نظیر Azure و سایر سرویس ها را برای رفع این نواقص ارائه داده است. یکی از پروژه های اساسی مایکروسافت در زمینه برنامه نویسی NET CORE. میباشد. مایکروسافت اساسی ترین پلتفرم برنامه نویسی خود را با این پروژه ارائه داده است. NET CORE. پلت فرم اوپن سورس و سریع میباشد که برای همه دیوایس ها از جمله موبایل، وب ، اپلیکیشن های ویندوزی ، لینوکس و MAC میباشد که شما قادر هستید برنامه های خود را با این فریم ورک و پلتفرم جدید به راحتی قابل حمل کرده و در تمامی دیوایس ها پیاده کنید.

ویژگیهای اساسی NET CORE. چیست؟

اوپن سورس: اولین ویژگی مثبتی که همه برنامه نویسان را مجددا به سمت مایکروسافت کشانده است اوپن سورس بودن آن میباشد که شما میتوانید این پلتفرم را بسته به نیاز خود شخصی سازی کنید.

NET CORE. و برنامه های اجرا شده در این پلتفرم بسیار سبک و کم حجم میباشند.

Cross Platform میباشد، شما با NET CORE. به معنای کامل میتوانید بصورت یکپارچه در تمامی سیستم عامل ها و دیوایس ها پروژه خود را پیاده کنید.

توسعه راحت و سریع NET CORE. باعث شده است پروژه ها و استارت آپ های زیاد به جهت راحتی در تیم برنامه نویسی این پلتفرم را انتخاب کنند.

پشتیبانی از Github و نیوگت برای برنامه های اوپن سورس

هزینه های پایینتر، از دیگر مشکلات برنامه های ویندوزی هزینه نگهداری و منابع مورد نیاز آنها بود. با کاهش محسوس حجم برنامه ها و منابع مورد نیاز میتواند یکی دیگر از بهترین مزیت های NET CORE. را هزینه نگهداری پایین آن درنظر گرفت.

پشتیبانی از خط فرمان بسیار قدرتمند برای نصب بسته های پیش نیاز

.NET CORE جایگزین دات نت فریم ورک میباشد؟

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

در حال حاضر شما توسط دات نت کور میتوانید برنامه های تحت وب، کتابخانه ای و کنسول را برنامه نویسی کنید. البته همانطور که میدانید در برنامه های Asp.net خیلی وقت هست که مایکروسافت از وب فرم پشتیبانی نمیکند و در صورتی که قصد استفاده از Asp.net روی پلتفرم .NET CORE میبایست حتما روی MVC پروژه های خود را پیاده سازی کنید.

کتابخانه هایی که برای دات نت فریم ورک و ابزارهایی که برای آن تهیه شده است به قدری زیاد هست که برنامه نویسان .Net احتمالا با شنیدن این موضوع که هنوز دات نت کور ابزارهای بسیار کمتری نسبت به .Net دارد نا امید خواهند شد. ولی نبایستی فراموش کرد که پلتفرم جدید مایکروسافت بسیار جدید میباشد و نیاز به زمان زیادی دارد تا همانند .Net از لحاظ کلاس ها، ابزارها و … تکمیل گردد.

بعد از ارائه موفق .NET CORE مایکروسافت اعلام کرده است که Asp.NET 5 و همچنین MVC5 قابلیت اجرا پیاده سازی بر روی دات نت کور را دارا میباشند. همچنین هم اکنون در صورتی که شما برنامه خود را با .NET CORE و ASP.NET 5 پیاده سازی کرده اید میتوانید برنامه های خود را علاوه بر ویندوز با Mono Runtime روی لینوکس و مک اجرا کنید.

.NET CORE روی سرورهای فعلی ویندوز اجرا میگردد؟

یکی از اساسی ترین سوالات برنامه نویسان مخصوصا برنامه نویسان .NET این هست که آیا میتوانند برنامه های Asp.Net که بر پایه .Net Core پیاده سازی شده اند را روی سرور ویندوز اجرا کنند؟ جواب این سوال شاید برای خیلی از کاربران ساده تر از این میباشد که بخواهیم روی آن بحث کنیم، ولی واقعیت این هست که در حال حاضر تمامی شرکت های هاستینگ سرور های خودرا آماده برای .Net Core نکرده اند. با توجه به اینکه اجرای این برنامه ها کمی متفاوت میباشد احتمالا شرکت هایی که به امنیت بیشتر اهمیت میدهند هنوز ریسک این را نپذیرند که در اولین فرصت .Net Core را پشتیبانی کنند. البته کنترل پنل محبوب پلسک بصورت پیش فرض از .Net Core پشتیبانی میکند و حتی در نسخه جدید Onyx هنگام نصب پلسک میتوانید .Net Core را براحتی بدون هیچ دانشی نصب کنید.

در انتها پیشنهاد میگردد در صورتی که برنامه نویس .Net هستید شک نکنید که بایستی به دات نت کور کوچ کنید و در اولین فرصت شروع به یادگیری آن کنید. همچنین در صورتی که میخواهید برنامه نویسی را شروع کنید باهم پیشنهاد میگردد در کنار سایر زبانها و پلتفرم ها، دات نت کور را نیز در لیست انتخاب پلتفرم یادگیری خود نیز قرار دهید.

معرفی الگوی MVC

جمعه ۱۷ بهمن ۱۳۹۹

mvc چیست؟

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

دیاگرام الگوی معماری MVC

آموزش mvc

برای شروع یادگیری چارچوب MVC تسلط به اصول شی‌گرایی توصیه می‌شود. الگوی معماری MVC در اکثر فریمورک‌ها استفاده شده است، بنابراین پیش‌نیاز درک نحوه کار فریمورک‌ها، آشنایی با این الگوی معماری است. در ادامه به آموزش mvc میپردازیم.

الگوی معماری MVC

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

روتر (Router) در معماری mvc

در MVC ایده کلی، وجود یک فایل index.php برای ارسال کلیه درخواست‌ها به آن است، درخواست‌ها با کمک روتر، مسیریابی می‌شوند. روتر کنترلر مورد نظر را فراخوانی میکند و کار روتر همینجا تمام می شود. دفت کنید که وظیفه روتر در برخی فریمورک‌ها بیشتر است که در بخش‌های بعدی مربوط به MVC این مورد را کاملتر توضیح خواهیم داد، فعلا در همین حد از ما بپذیرید که روتر یا مسیریاب وظیفه مسیریابی درخواست‌های کاربر را دارد.

کنترلر (Controller) ها در mvc

در بخش روتر توضیح دادیم که کار روتر چیست، اما شاید بپرسید دلیل استفاده از روتر چیست، مستقیما از کنترلر استفاده کنیم، فرض کنید کاربر آدرس زیر را فراخوانی کند:

index.php?c=controller&m=action¶m1=val1¶m2=val2

در فایل روتر مشخص شده که این کد باید کدام اکشن از کدام کنترلر را فراخوانی کند و پارامتر را به آن تحویل دهد. همانطور که متوجه شده‌اید کنترلر ام وی سی یک کلاس است که برای پردازش درخواست‌های ارسالی به لینک‌های مشخص ساخته شده است، اکشن نیز متدی از این کلاس است که وظیفه خاصی را انجام دارد. البته شاید بابت کاربرپسند بودن لینک‌های بالا مشکل داشته باشید که با فعال‌سازی ماژول mod_rewrite می‌توانید لینک‌های خود را مثلا به شکل زیر یا هر شکلی دوست دارید اختصاصی‌سازی نمایید:

baversion.com/class/method/param1/param2/

حتی می‌توانید به روتر بگویید که برای درخواست‌هایی که مثلا به آدرس baversion.com/blog ارسال شد، متد index از کلاس Blog را فراخوانی کند که می‌گویند اکشن index از کنترلر Blog فراخوانی شده است، پارامترهای بعدی نیز ممکن است با استفاده از دستورات مشخص شده در روتر، حتی کنترلر و اکشن دیگری را فراخوانی کند، مثلا برای وبلاگ کلاسی باشد که یک اکشن مسئول پردازش درخواست‌های مربوط به پست‌ها، اکشن دیگر مربوط به دسته‌بندی‌های مطالب و هر اکشنی برای یک عملی باشد، برای صفحه مدیریت کنترلر Admin و با توجه به درخواست‌های مختلف، اکشن‌های متفاوتی فراخوانی شوند.

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

مدل (Model) در معماری mvc

مستقیما داده‌ها، منطق و قواعد برنامه را مدیریت می‌کند، کار با بانک اطلاعاتی. دستورات CRUD در این قسمت نوشته می‌شوند و تمام ارتباطات با دیتابیس باید از طریق همین لایه انجام پذیرد. مهمترین بخش از منطق برنامه مدل است.

کنترلر ورودی‌ها را دریافت و تبدیل به دستوراتی برای مدل و ویو می‌کند، اگر این دستورات قرار باشد کار ذخیره داده مثلا ویرایش یک فایل یا تغییر یا افزودن داده‌ای در دیتابیس را انجام دهند، متد مورد نظر از مدل فراخوانی می‌شود و مدل وظیفه‌اش را انجام می‌دهد و در صورت نیاز داده‌هایی را برمی‌گرداند، کنترلر دوباره داده‌ها را بررسی می‌کند تا ببیند نیاز است مدل دیگری فراخوانی شود یا باید آن‌ها را برای نمایش به ویو بدهد.

ویو (View) در معماری mvc

این لایه وظیفه نمایش محتوا به کاربر را دارد، همچنین اطلاعات و ورودی‌های کاربر را نیز گرفته و به لایه کنترلر می‌دهد و مانند مدل ارتباطی دو طرفه با کنترلر دارد. ویو داده‌ها را در قالب مناسب نمایش می‌دهد.



Web Assembly

جمعه ۳ بهمن ۱۳۹۹

بازی زندگی (Life Game)

برای اثبات مفاهیم ارائه شده از بازی زندگی طراحی شده از سوی Conway به عنوان مسئله استفاده کرده‌ایم. این بازی بدون بازیکن است و قواعد ساده‌ای دارد:

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

تنها ورودی بیرونی، حالت اولیه است.

تعامل سلول جاری با سلول همجوار افقی، عمودی و قطری حالت کنونی سلول را تعیین می‌کند.

یک سلول زنده که کمتر از دو همسایه آن زنده باشند، می‌میرد.

یک سلول زنده که دو یا سه همسایه‌اش زنده باشند، برای نسل بعدی زنده می‌ماند.

یک سلول زنده که بیش از سه سلول همسایه‌اش زنده باشند، می‌میرد.

یک سلول مرده که دقیقاً سه سلول همسایه‌اش زنده باشند، زنده می‌شود.

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

ما می‌خواهیم این راه‌حل را با سه راهبرد پیاده‌سازی کنیم: جاوا اسکریپت خالص، وب‌اسمبلی، و وب ورکرها. پیچیدگی زمانی الگوریتم ما روی همه رویکردها برابر با (O(m*m است که n عرض دنیا و m ارتفاع آن است. از آنجا که رندر برای هر سه رویکرد یکسان است، آن را در اندازه‌گیری‌های خود لحاظ نمی‌کنیم.

جاوا اسکریپت محض

معماری زیرساختی برای این رویکرد شامل ایجاد یک بازی جدید و سپس ایجاد و ارسال حالت نخست (ماتریسی پر شده از 0 و 1) به آن است. کامپوننت game این حالت را نگه‌داری می‌کند و تابعی به نام next بازمی‌گرداند که حالت بعدی را هنگام فراخوانی بازگشت می‌دهد. در این صورت تابع ()getNextState را از فایل environment.js فراخوانی می‌کنیم که پیاده‌سازی جاوا اسکریپت خالص است.

const next = game(

document.getElementById('game'),

COLUMNS,

LINES,

createGameMatrix(LINES, COLUMNS), // generates the initial state

strategy(

STRATEGY,

COLUMNS,

LINES,

initialConfig

) // Defines which strategy to use to calculate the next state

function loop() {

next().then(() => {

requestAnimationFrame(loop);

loop()

const next = game(

document.getElementById('game'),

COLUMNS,

LINES,

createGameMatrix(LINES, COLUMNS), // generates the initial state

strategy(

STRATEGY,

COLUMNS,

LINES,

initialConfig

) // Defines which strategy to use to calculate the next state

function loop() {

next().then(() => {

requestAnimationFrame(loop);

});

};

loop();

داخل کامپوننت environment.js همچنان مسئله را به تابع‌های تخصصی کوچک‌تر افراز می‌کنیم. بدین ترتیب به روشی آسان‌تر می‌توانیم بهینه‌سازی کامپایلر JIT را تحریک کنیم. این بهینه‌سازی‌ها را در مقاله بعدی بررسی خواهیم کرد. این تابع‌ها به محاسبه حالت کنونی همسایه‌های فوقانی، تحتانی و کناری پرداخته و همه حالت‌های گوشه‌ای را پوشش می‌دهند.

میانگین سرعت این محاسبه حالت از 9 تا 4 میلی‌ثانیه برای یک ماتریس 800×450 متفاوت است. برای مشاهده تصویر در ابعاد اصلی روی این لینک کلیک کنید.

ممکن است از این که چقدر این محاسبات برای حالت بعدی متفاوت هستند و یا این که چرا این همه تابع وجود دارد شگفت‌زده شوید. برای پاسخ به این سؤال باید با طرز کار کامپایلرهای JIT آشنا باشیم و بدانیم که چگونه این وضعیت موجب شده است که جاوا اسکریپت امروزه تا این حد سریع باشد. در بخش بعدی این نوشته این موضوع را بررسی می‌کنیم.

اندکی از تاریخچه جاوا اسکریپت

جاوا اسکریپت در سال 1995 از سوی «برندن آیک» (Brendan Eich) طراحی شد و هدف وی ارائه زبانی بود که طراحان به کمک آن بتوانند اینترفیس‌های دینامیک را با آن به سادگی پیاده‌سازی کنند. به بیان دیگر جاوا اسکریپت برای این ساخته نشده که سریع باشد؛ بلکه هدف اولیه این بود که لایه رفتاری را به صفحه‌های HTML به روشی راحت و سرراست اضافه کند.

ایتنرنت در دهه 90 میلادی

زمانی که جاوا اسکریپت معرفی شد، اینترنت این گونه به نظر می‌رسید.

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

در دهه 2000 میلادی فناوری‌هایی مانند Ajax موجب شدند که وب اپلیکیشن‌ها، پویاتر شوند، جیمیل در سال 2004 و گوگل مپ در سال 2005 آغازگر روندی برای استفاده از این فناوری ای‌جکس بودند. این روش جدید برای ساخت وب اپلیکیشن‌ها موجب شد که بیشتر بخش منطقی برنامه در سمت کلاینت نوشت شود. در این زمان جاوا اسکریپت باید عملکرد خود را ارتقا می‌داد و این اتفاق در سال 2008 با ظهور گوگل و موتور V8 آن که همه کدهای جاوا اسکریپت را به طور بی‌درنگ به بایت‌کد کامپایل می‌کرد رخ داد. اما اینک شاید بپرسید طرز کار کامپایلرهای JIT چگونه است؟

آشنایی با طرز کار کامپایلرهای JIT

اگر بخواهیم کامپایلرهای JIT را به طور خلاصه توضیح دهیم، زمانی که کد بارگذاری شد، کد منبع به یک بازنمایی درختی تبدیل می‌شود که «درخت ساختار مجرد» (Abstract Syntax Tree) یا AST نامیده می‌شود. پس از آن بسته به این که از چه موتور/سیستم عامل/پلتفرمی استفاده می‌شود، یا یک نسخه مبنا از کد کامپایل می‌شود و یا بایت‌کد تولید می‌شود که باید تفسیر شود.

در این مرحله profiler به رصد و گردآوری داده‌های اجرای کد می‌پردازد. البته این توضیح بسیار مختصر بوده و تفاوت‌هایی در میان موتورهای مرورگر مختلف در این زمینه وجود دارد.

در گام نخست، همه چیز از تفسیر عبور می‌کند، این فرایند تضمین می‌کند که کد پس از ایجاد AST سریع‌تر اجرا می‌شود. زمانی که قطعه کدی چندین بار اجرا می‌شود، مانند تابع ()getNextState ما، تفسیر عملکرد خود را از دست می‌دهد، زیرا باید قطعه کد یکسانی را به طور مکرر تفسیر کند و زمانی که این اتفاق بیافتد profiler این قطعه کد را به صورت «کد گرم» (Warm Code) علامتگذاری می‌کند و «کامپایلر مبنا» (Baseline Compiler) وارد عمل می‌شود.

کامپایلر مبنا

برای این که طرز کار JIT را بهتر نشان دهیم از این پس از قطعه کد زیر به عنوان مثال استفاده می‌کنیم:

function sum (x, y) {

return x + y;

}

[1, 2, 3, 4, 5, '6', 7, 8, 9, 10].reduce(

(prev, curr) => sum(prev, curr),

function sum (x, y) {

return x + y;

}

[1, 2, 3, 4, 5, '6', 7, 8, 9, 10].reduce(

(prev, curr) => sum(prev, curr),

0

);

زمانی که پروفایلر یک قطعه کد را به صورت «کد گرم» علامتگذاری می‌کند، JIT کد را به کامپایلر مبنا می‌سپارد که یک کد کامپایل شده می‌سازد و در همین حال پروفایلر همچنان به گردآوری داده‌ها در ارتباط با فراوانی و انواع کدهای اجرا شده ادامه می‌دهد. زمانی که این بخش از کد اجرا می‌شود (در مثال فرضی ما بخش ;return x + y است) JIT تنها کافی است این بخش کامپایل شده را مجدداً اجرا کند. زمانی که کد گرم چندین بار به روش مشابه فراخوانی شود، به صورت «کد داغ» (hot code) علامتگذاری می‌شود.

کامپایلر بهینه‌ساز

زمانی که یک قطعه کد به صورت کد داغ علامت‌گذاری شود، «کامپایلر بهینه‌ساز» (Optimizer Compiler) یک نسخه باز هم سریع‌تر از این کد می‌سازد. این وضعیت تنها بر مبنای این فرضیه عمل می‌کند که کامپایلر بهینه‌ساز، نوع متغیرها یا شکل شیءهای مورد استفاده در کد را بهینه‌سازی می‌کند. در مورد مثال فرضی ما می‌توان تصور کرد که «کد داغ» ;return x + y هر دو مقدار x و y را به صورت number فرض می‌کند.

مشکل این است که در مواردی کد با چیزی مواجه می‌شود که کامپایلر بهینه‌ساز انتظار ندارد، برای نمونه در مورد مثال ما با (‘sum(15, ‘6 فراخوانی می‌شود، چون y یک string است. زمانی که این اتفاق می‌افتد، پروفایلر فرض می‌کند که فرضیات آن اشتباه بوده است و همه چیز را کنار گذاشته و به نسخه کامپایل شده مبنا (یا تفسیری) باز می‌گردد. این مرحله «غیر بهینه‌سازی» (Deoptimization) نام دارد. برخی اوقات این اتفاق چنان مکرر رخ می‌دهد که حتی نسخه بهینه شده نسبت به نسخه مبنا کندتر می‌شود.

جمع‌بندی

برخی موتورهای جاوا اسکریپت در خصوص کمّیت تلاش‌های بهینه‌سازی محدودیت‌هایی دارند و زمانی که به این حد برسند دیگر برای بهینه‌سازی تلاش نمی‌کنند. برخی دیگر مانند V8 به صورت شهودی زمانی که می‌بینند احتمالاً کد «غیربهینه‌سازی» خواهد شد از بهینه‌سازی آن اجتناب می‌کنند. این فرایند bailing out نام دارد.

بنابراین به طور خلاصه مراحل کامپایلر JIT را می‌توان به صورت زیر توصیف کرد:

تجزیه

کامپایل

بهینه‌سازی/غیر بهینه سزی

اجرا

Garbage Collector

منبع

https://blog.faradars.org/

python چیست

چهار شنبه ۱۲ آذر ۱۳۹۹
پایتون چیست؟

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

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

پایتون چیست و چگونه به‌وجود آمد؟

زبان برنامه‌نویسی پایتون در سال ۱۹۹۱ میلادی توسط یک برنامه‌نویس هلندی به‌نام خیدو فان روسوم (Guido van Rossum) ایجاد شد، این زبان با قابلیت‌های فراوان و شگفت‌انگیزی که دارد تحولی در دنیای برنامه‌نویسی به‌وجود آورده است، از توسعه‌ی برنامه‌های تحت وب گرفته تا ایجاد بازی‌های رایانه‌ای!

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

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

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

زبان برنامه نویسی پایتون چه ویژگی هایی دارد؟

اولین و مهمترین ویژگی این زبان «سادگی و آسانی» آن می باشد. این ویژگی آموزش پایتون را به یکی از بهترین گزینه ها برای انتخاب کسانی تبدیل کرده است که قصد دارند برای اولین بار به آموزش برنامه نویسی بپردازند. پایتون را خیلی سریع می توانید یاد بگیرید و به سرعت کدنویسی را با آن شروع کنید. اما اشتباه نکنید، سادگی پایتون به معنای ضعیف بودن آن نیست، بلکه python یک زبان برنامه نویسی مفسری، چندمنظوره و سطح بالاست که از شی گرایی و برنامه نویسی ساختار یافته به طور کامل پشتیبانی می کند.

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

پایتون زبانی قدرتمند و منعطف است که ساختاری بسیار منظم و کدنویسی در آن بسیار راحت است. این زبان برنامه نویسی تمرکز زیادی روی خوانایی کدها دارد، به طوری که هر کسی می‌تواند به راحتی کدهای این زبان را بخواند و با آن ارتباط برقرار کند. همانطور که اشاره شد، پایتون از انواع روش‌های برنامه نویسی مثل پروسه‌ای، تابعی و البته شیء گرایی پشتیبانی می‌کند. همین مورد باعث شده که در پروژه‌های بزرگ و حساس روی پایتون حساب باز کنند.

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

هر نرم افزار یا ابزار جدید که معرفی می‌شود، برای انتشار از یک پروانه یا مجوز (License) استفاده می‌کند. این مجوزها ماهیت برنامه را مشخص می‌کنند و به بقیه نشان می‌دهند که چطور باید از نرم افزار استفاده کرد. مثلا نرم افزارهای آزاد ۴ سطح آزادی را به برنامه نویس تضمین می‌دهند و لایسنس GPL این چهار سطح را در خود جا داده است. ۴ سطح آزادی که نرم افزارهای آزاد باید از آن پیروی کنند عبارتند از:

کاربران بتوانند نرم افزار را به هر منظوری استفاده کنند.

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

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

دیگر کاربران بتوانند نسخه‌های بازنشر شده را ویرایش کرده و دوباره انتشار دهند.

پایتون تحت پروانه اختصاصی خودش به نام PSFL یا Python Software Foundation License منتشر می‌شود. این مجوز کاملا مشابه مجوز GPL است، اما در بند چهارم سخت‌گیری کمتری برای بازنشر نرم افزارها در نظر گرفته است. به همین دلیل توسعه دهندگان به راحتی برای این زبان کتابخانه های زیادی طراحی کرده اند و به لطف آن‌ها پایتون کتابخانه‌های مشهوری دارد که در توسعه و پیشرفت آن نقش مهمی ایفا کردند. این کتابخانه‌ها بودند که پایتون را محبوب‌تر کرده و پای این زبان را به حوزه‌های مختلفی مثل طراحی سایت، طراحی اپلیکیشن، هوش مصنوعی و داده کاوی باز کردند.

مزایای پایتون چیست؟

حضور ماژول های شخص ثالث

Python (PyPI) شامل چندین ماژول شخص ثالث است که باعث می شود Python بتواند با بسیاری از زبان ها و سیستم عامل های دیگر ارتباط برقرار کند.

کتابخانه های پشتیبانی گسترده:

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

منبع باز:

زبان پایتون تحت مجوز OSI تأیید شده است که استفاده و توزیع آن را آزاد می کند ، از جمله برای اهداف تجاری. علاوه بر این ، توسعه آن توسط جامعه ای انجام می شود که از طریق میزبانی کنفرانس ها، برای کد آن همکاری می کنند و ماژول های بی شماری را برای توسعه آن فراهم می کنند.

یادگیری سریع و آسان:

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

ساختار داده های کاربر پسند: :

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

بهره وری و سرعت:

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

مزایای پایتون

معایب پایتون چیست؟

سرعت:

پایتون کندتر از C یا C ++ است. پایتون یک زبان سطح بالا است ، برخلاف C یا C ++ به سخت افزار نزدیک نیست.

توسعه موبایل:

پایتون یک زبان خیلی خوب برای توسعه موبایل نیست. این یک زبان ضعیف برای محاسبات موبایل است. به همین دلیل است که برنامه های اندکی در تلفن های همراه مانند Carbonnelle در آن ساخته شده اند.

مصرف حافظه:

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

دسترسی به پایگاه داده:

پایتون با دسترسی به بانک اطلاعات محدودیت هایی دارد. در مقایسه با فن آوری های رایج مانند JDBC و ODBC ، لایه دسترسی به پایگاه داده Python کمی توسعه نیافته و بدوی است.

خطاهای زمان اجرا:

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

منبع

https://www.prjmarket.com/

Java چیست

چهار شنبه ۱۲ آذر ۱۳۹۹
جاوا چیست؟

جاوا JAVA یک زبان برنامه نویسی است که درسال 1994 توسط یکی از مهندسین شرکت سان (sun) به نام جیمز گوسلینگ نوشته شد، جیمز از نوشتن برنامه با ++C خسته شده بود و جاوا را برای رفع نیازهای خود طراحی کرد. مثل لینوکس ترودلز که لینوکس (Linux) را برای استفاده خود پدید آورد.جیمز ابتدا نام این برنامه را oak گذاشت. در آن‌زمان شرکت sun از توسعه oak منصرف شد ولی با پیشرفت و گسترش اینترنت و مشخص شدن قابلیت های برنامه و تطابق بعضی ویژگی های آن با نیازهای اینترنت شرکت sun پروژه oak را فعال نمود و نام جاوا را برای آن برگزید.

نام جاوا از Jsut Another Vague Acronym گرفته شده است و دلیل آن این بود که تیم برنامه نویسان جاوا به قهوه خیلی علاقه داشتند. این موضوع در لوگوی جاوا هم مشهود است!!

نگارش نسخه اول جاوا در سال 95 آغاز شد و در سال 97 نسخه 1/1 و در سال 98 نسخه 1/2 به بازار ارایه شد. البته تا کنون نسخه های متفاوت با قابلیت های متفاوت به بازار ارایه شده است. جاوا زبان مادر برای سیستم عامل سولاریس است، مثل بیسیک برای سیستم عامل ویندوز و زبان سی برای یونیکس.

مهم ترین ویژگی جاوا این است که اساسا شی گراست به این معنی که توانایی استفاده مجدد و مکرر از کدهای از پیش نوشته شده را دارد.

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

سادگی، قابل انتقال بودن، کارایی بالا، استحکام، پویایی و ایمنی بالا از دیگر قابلیت های جاوا است.

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

جاوا در واقع یک زبان برنامه نویسی شی گرا وبسیار قدرتمند است و تمام خصوصیت های ++C و C را داراست. البته خصوصیت های مشکل ساز آن مثل وراثت و اشاره گرها را کنار گذاشته است. برنامه نویسانی که با C++ آشنا هستند خیلی راحت و سریع می توانند JAVA را یاد بگیرند. با جاوا کد نویسی بسیار آسان تر است و کدها و کلاس ها و کتابخانه های آماده جاوا باعث می گردد نوشتن یک برنامه با جاوا از نظر تعداد خطوط و زمان لازم تقریبا یک سوم یک برنامه ++C است.

.NET رقیب JAVA؟

.NET فرمی است که به وسیله مایکروسافت MicroSoft برای ساخت سایت ها با قابلیت های زیاد و متفاوت ایجاد شده است به طوری که قسمتی از یک پروژه را می توان با ++CV و بخش دیگر را با برنامه ای دیگر نوشت و در نهایت کل آن توسط یک واسطه به نام MSIL ترجمه شده و در محیط .NET قابل اجرا است.

J2EE (نسخه جدید JAVA) به وسیله شرکت SUN و با همکاری شرکت های IBM و HP تهیه شده است. در این قالب تنها زبانی که مورد استفاده قرار می گیرد جاوا است، و بر خلاف .NET که فقط روی محیط های سازگار با ویندوز عمل می کند، مستقل از سخت افزار است.

بین .NET و JAVA کدام را انتخاب کنیمًـ؟

- قابلیت انتقال برنامه ها روی سیستم های مختلف و شعار اصلی جاوا یعنی: "یک بار بنویس و هر جا استفاده کن" (Writeonce-Run anywhere) موضوعی بسیار حایض اهمیت است که بسته به نیاز شما و نوع برنامه شما می تواند خیلی مهم باشد.

- در محیط هایی که چند نوع سیستم سخت افزاری وجود دارد قطعا برنامه های تحت جاوا مناسب تر است ولی اگر در محیط مورد نظر شما از سیستم عامل ویندوز استفاده می شود استفاده از .NET هزینه کمتری در برخواهد داشت.

- .NET ویژگی هایی دارد که با آن می توان سایت های جذاب و زیباتری ساخت اما در سایت های پیچیده و بزرگ و جایی که کارایی مهمتر از ظاهر است بهتر است از جاوا استفاده کنیم.

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

هر تکنولوژی که ایجاد می شود؛ هر برنامه ای که مورد توجه عموم قرار می گیرد قطعا مورد توجه نفوذگران هم واقع می شود، هر سیستمی که بخواهد بماند و پیشرفت کند نیاز به ایمنی دارد و اینجاست که سدهای حفاظتی جاوا و مدل های امنیتی آن که حاصل تلاش زبردست ترین برنامه نویسان دنیاست مورد توجه قرار می گیرد. مدل چهار لایه امنیتی جاوا جلوی خیلی از اقدامات خرابکارانه و نفوذی را می گیرد، ولی هیچ سدی 100درصد غیر قابل نفوذ نیست!!

در هر حال انتخاب بین این دو نیاز به بررسی دقیق، آینده نگری و مشخص شدن اهداف دراز مدت و میزان سرمایه گذاری شما دارد زیرا هزینه هایی که یک برنامه جاوا دربر دارد در اکثر موارد چندین برابر یک برنامه .NET خواهد بود.

منبع

https://behpardazan.com/


گفتگو در مورد طراحی سایت و سئو