طراحی سایت | برنامه نویسی

آموزش طراحی سایت و برنامه نویسی

طراحی سایت | برنامه نویسی

آموزش طراحی سایت و برنامه نویسی

۱۲۷ مطلب در مرداد ۱۳۹۸ ثبت شده است

۱۰مرداد

کد خوب، تمیز، محکم و سریع است. اولین تجربه من در سریع تر کردن کدهای یک برنامه کاربردی SPP بود، که بیش از ۳۰ هزار خط کد داشت. این برنامه در بارگذاری داده ها بسیار کند بود و کاربران از کار با آن اصلا راضی نبودند، البته باید اقرار کنم که برنامه خیلی خوب نوشته شده بود، تمام فراخوانی های دیتابیس بهینه سازی شده بود، حلقه ها فقط در صورت نیاز استفاده می شدند و قواعد ماژولاریتی به خوبی در برنامه لحاظ شده بود.

speed

برای دو روز تمام بر روی این برنامه کار کردم و تست های مختلفی را روی آن آزمایش کردم و منطق برنامه را بررسی کردم، اما نتوانستم چیزی را که این برنامه را کند کرده بود، پیدا کنم. دیگر ناامید شده بودم که روز سوم مشکل را پیدا کردم. مشکل دستور wait به مدت ۲۰ ثانیه بود، که در یکی از بارگذاری های صفحات لحاظ شده بود :

WAIT FOR 20 SECONDS.

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

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

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

انجامش ندهید

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

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

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

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

باید لیستی از مشخصات برنامه تهیه کنید

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

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

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

بهینه ساز کامپایلر را فعال کنید

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

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

#سریعتر کردن برنامه #بهینه کردن برنامه

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

Header

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

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

چرخه رنگی مشهور

چرخه رنگی مشهوری که در دوران مدرسه یاد گرفته‌اید، را به خاطر بیاورید این شکل اساس انتخاب رنگ‌های شما را تشکیل می دهد :

colorwheel-1

همانطور که در چرخه رنگی بالا مشاهده می کنید، ترکیبات رنگی مختلفی برای انتخاب وجود دارد :

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

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

روانشناسی رنگ ها و ارزش برند

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

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

مخاطبان و یا جمعیت هدف

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

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

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

شناسایی برند

تحقیقات به خوبی نشان می دهد که رنگ ها تشخیص برند را تا ۸۰ درصد افزایش می دهند و انسان ها تمایل دارند خود را با رنگ ها مرتبط کنند، ما برند مک دونالد را با رنگ های خود یعنی قرمز و زرد می شناسیم حالا اگر شرکت ترکیبات رنگی برند خود را به رنگ‌های دیگر تغییر دهد چه می شود؟ آیا هنوز هم برند برای ما آشناست و یا فقط رنگ قبلی برای ما قابل قبول است؟

McDonalds-logo-in-different-colors

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

تاثیر رنگها بر احساسات

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

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

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

Color-emotion-gui

تعصبات را رها کنید

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

قانون 60-30-10 را رعایت کنید

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

  • ۶۰ درصد از رنگ های dominant (غالب) استفاده کنید
  • ۳۰ درصد از رنگ های secondary (ثانویه) استفاده کنید
  • ۱۰ درصد از رنگهای accent استفاده کنید

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

برای انتخاب رنگ مناسب به مخاطبان هدف خود توجه ویژه‌ای داشته باشید، ایجاد یک طرح رنگی مناسب در افزایش کاربران سایت شما تاثیر زیادی خواهند داشت.

#پالت رنگی #طرح های رنگی

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

CleanCode

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

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

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

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

اما سوالی که ممکن است اکنون در ذهن شما باشد این است که به عنوان یک برنامه نویس تازه کار چطور باید کد های تمیز بنویسید؟

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

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

در زیر نمونه مثالی خوب و بد در این مورد آورده شده است.

یک نمونه مثال خوب :

function getStudents(id) {
    if (id !== null) {
        go_and_get_the_student();
    } else {
        abort_mission();
    }
}

با نگاه کوتاهی به کد بالا به راحتی می توانید بگویید که از یک عبارت if/else در تابع استفاده شده است. آکولاد ها و تورفتگی های سازگار، مشاهده ابتدا و انتهای بلوک کد را ساده تر کرده است و در استفاده از آکولاد ها سازگاری رعایت شده است، یعنی آکولاد ابتدایی و انتهایی برای هر قسمت از کد کاملا مشخص است.

یک نمونه مثال بعد :

function getStudents(id) {
if (id !== null) {


        go_and_get_the_student();} 
    else 
    {
        abort_mission();
    }
    }

اما در مثال بالا چه چیزی مشکل دارد؟ استفاده درستی از تورفتگی ها نشده است و نمی‌توانید بگویید پایان تابع کجاست و یا شروع بلوک if/else کجاست؟ آکلاد ها گیج کننده بوده و سازگاری ندارند. فاصله بین خطوط با هم هم سازگار نیستند.

شاید عیوب ذکر شده در مثال بالا کمی اغراق گونه باشد اما همین مثال ساده، استفاده از تو رفتگی ها و سازگاری را به خوبی نشان می‌دهد. نمی‌دانم عقیده شما چیست؟ اما خوب می دانم که یک کد تمیز باید خوانایی بهتری داشته باشد.

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

  • در VS Code از پلاگین Prettier استفاده کنید
  • در Atom از پلاگین Atom Beautify استفاده کنید
  • در Sublime Text از پلاگین Prettify استفاده کنید

از متغیرهای واضح و نام‌های مناسب برای متد ها استفاده کنید

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

function changeStudentLabelText(studentId){
	const studentNameLabel = getStudentName(studentId);
}


function getStudentName(studentId){
	const student = api.getStudentById(studentId);
	return student.name;
}

کد بالا از جهات مختلفی کدی خوب در نظر گرفته می‌شود. توابع و آرگومانهای آن به صورت کاملا واضح نامگذاری شده اند، وقتی یک توسعه دهنده این کدها را می‌خواند در ذهنش کارایی آن کاملاً واضح هست. او می داند که اگر با استفاده از شناسه studentId تابع ()getStudentName را فراخوانی کند، نام دانش آموز را خواهد داشت.  داخل تابع ()getStudentName فراخوانی متغیرها و متد ها کاملاً واضح نامگذاری شدند.

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

از یک استایل خاص برای نام گذاری در کل برنامه خود استفاده کنید. از قاعده camelCase و یا under_scores بهره جوید(از یکی از آنها نه هر دو)

توابع متدها و متغیرها را با توجه به کاری که انجام می دهند، نام گذاری کنید اگر متن شما چیزی برمی گرداند از کلمه get در ابتدای نامگذاری آن استفاده کنیند

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

از کامنت ها در جایی که ضروری است استفاده کنید

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

کامنت های مستند

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

/**
 * Solves equations of the form a * x = b
 * @example
 * // returns 2
 * globalNS.method1(5, 10);
 * @example
 * // returns 3
 * globalNS.method(5, 15);
 * @returns {Number} Returns the value of x for the equation.
 */
globalNS.method1 = function (a, b) {
    return b / a;
};

کامنت های  Clarification 

کامنت ها Clarification توضیحاتی را برای کسانی که قصد نگهداری و توسعه کار شما را دارند، مشخص می‌کنند. مثال زیر این نوع کامنت ها را نشان می‌دهد :

/*
This function calls a third party API. Due to some issue with the API vender, the response returns "BAD REQUEST" at times. If it does, we need to retry
*/
function getImageLinks(){
	const imageLinks = makeApiCall();
	
	if(imageLinks === null){
		retryApiCall();
	} else {
		doSomeOtherStuff();
	}
}

مثال هایی از کامنتهای بد

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

کامنت تکراری که ارزشی را ایجاد نمیکند :

// this sets the students age 
function setStudentAge();

کامنت گمراه کننده :

//this sets the fullname of the student
function setLastName();

کامنت مسخره و خنده دار :

// this method is 5000 lines long but it's impossible to refactor so don't try
function reallyLongFunction();

از تکرار کدها اجتناب کنید

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

بیش از حد به تمیز کردن کدها نپردازید

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

#کد تمیز

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

React-Native-Apps-Illustration

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

چیزهایی که در زمان انتخاب فریمورک برای توسعه موبایل باید در نظر داشته باشید

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

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

React Native چیست؟

React Native فریمورکی برای ساخت برنامه های موبایل کراس پلتفرم با استفاده از زبان جاوا اسکریپت است. به طورخلاصه ایده اصلی پشت این فریمورک ساخت رابط کاربری چند سکویی با استفاده از JSX است که در انتها به کدهای بومی در اندروید و ios تبدیل می‌شوند. منطق برنامه شما کاملاً در جاوا اسکریپت نوشته می شود، بنابراین نیازی به دانستن  جاوا و یا کاتلین برای اندروید و C یا سوئیفت برای ios به منظور ساخت برنامه های موبایل نخواهید داشت.

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

استارتاپ های موفقی که از React Native استفاده می کنند

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

  •  Discord یک برنامه کراس پلتفرم برای متون، ویدیو و ارتباطات صوتی با بیش از ۲۵۰ میلیون کاربر در سراسر جهان است. اگرچه این برنامه به طور خاص برای گیمر ها ساخته شده است، اما بسیاری از نسل‌های جدید از آن به عنوان یک پلتفرم رسانه اجتماعی استفاده می‌کنند.
  • Uber Eats یک برنامه تحویل غذا است که به صورت یکپارچه رستوران‌ها، رانندگان و مشتریان را به همدیگر متصل می کند. اپلیکیشن این کمپانی با استفاده از React Native توسعه داده شده است.
  • Delivery.com مشتریان را قادر می‌سازد که به صورت آنلاین به کسب و کارهای محلی سفارش دهند. هر روز بیش از یک میلیون مشتری از اپلیکیشن این مجموعه که با React Native نوشته شده است استفاده می کنند.
  • Gyroscope اپلیکیشنی است که به کاربران خود کمک می‌کند که به اهدافی در زندگی مانند کم کردن وزن، رسیدن به بهره وری بیشتر و بهبود رفاه کلی دست یابند. این برنامه می تواند فعالیت های فیزیکی یک کاربر را ردیابی کنند و پیشنهاداتی برای بهبود آنها ارائه دهد. تمام اینها با React Native پیاده سازی شده است.
  • Townske به شما اجازه می دهد بهترین مکان ها را برای کافه ها و رستوران ها پیدا کنید. برنامه موبایل Townske ظاهر زیبا و سهولت استفاده را به React Nativeبدهکار است.

مزایای استفاده از React Native

همانطور که ملاحظه کردید، بسیاری از شرکت‌ها به لطف استفاده از React Native به موفقیت‌های بزرگی دست یافته اند. اما چه چیزی به طور خاص این فریمورک را برتری داده است؟ بگذارید نگاهی به نقاط قوت فریمورک React Native بیندازیم :

  • هزینه‌های توسعه. به دلیل این که کدی که می نویسید در هر دو پلتفرم اندروید و ios کاربرد دارد، هزینه توسعه برنامه شما بسیار پایین خواهد بود. حتی یک توسعه دهنده تنهای React Native هم می تواند برنامه را برای هر دو پلتفرم توسعه دهد.
  • فراوانی توسعه دهندگان با استعداد. React Native بر اساس جاوا اسکریپت پیاده سازی شده است. زبان جاوا اسکریپت زبان برنامه نویسی مشهوری است. بر اساس آمار سایت Stack Overflow بیش از ۷۰ درصد از کاربران، این زبان را می شناسند. بنابراین توسعه دهندگان با استعداد زیادی در بازار وجود دارد که می توانید از آنها برای ساخت اپلیکیشن خود استفاده کنیم.
  • زمان رسیدن به بازار. با استفاده از React Native برنامه‌های خود را بسیار سریعتر از روش های سنتی می‌توانید توسعه دهید. برای نمونه برنامه‌ای که مجموعه ما چندی پیش وارد بازار کرد، فقط سه ماه برای طراحی آن زمان صرف شد.
  • پشتیبانی از هر دو سیستم عامل موبایل.  React Native به شما اجازه می دهد برنامه خود را برای هر دو سیستم عامل اندروید و ios به صورت همزمان منتشر کنید. حتی اگر با یک پلت‌فرم شروع کنید، جابجا شدن به پلتفرم دیگر کار ساده ای خواهد بود.
  • کامپوننت های رابط کاربری قابل استفاده مجدد. وقتی برنامه‌ای با استفاده از  React Native توسعه می‌دهید، شما باید به تعریف کامپوننت ها در جاهای مختلف برنامه بپردازید، این کامپوننت ها همچون بلاک های قابل استفاده مجدد، یک بار نوشته می شوند و می توانند جاهای مختلف استفاده شوند و در وقت و هزینه شما صرفه جویی کنند.
  • کامپوننت های بومی قابل استفاده مجدد. شما همچنین می توانید به سادگی اپلیکیشن های  React Native را با استفاده از کامپوننت های بومی گسترش دهید. می توانید از قابلیت هایی مانند camera و GPS استفاده کنید.
  • ثبات و پایداری. React Native نسبتا فریمورکی جدید است، ولی به لطف پشتیبانی‌های فیس بوک بسیار پایدار است. این فریمورک در FB و Instagram نیز استفاده شده است. این تکنولوژی روز به روز در حال بهتر شدن است و کمپانی‌های بزرگ تری از آن استفاده می‌کنند.

ریسک های استفاده از React Native

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

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

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

#React Native #فریمورک جاوا اسکریپت

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

reactnaive

در واقع عبارت "یک بار بنویس و در هر جای دیگر استفاده کن" عبارت بی ربطی هم برای این فریمورک نیست. این عبارت زمانی که React Native به بازار آمده بود، مشهورترین عبارت در مورد این فریمورک بود، بعد از سه سال کار کردن با React Native به خوبی فهمیده ام که عبارت ذکر شده در بالا همیشه هم درست نیست. اگرچه می توانیم از اکثر کدها بین دو سیستم عامل اندروید و ios به صورت مشترک استفاده کنیم، اما بالاخره این دو سیستم عامل با همدیگر تفاوت هایی هم دارند.

۴ تفاوت عمده میان توسعه‌ی اندروید و ios

سیستم‌عامل

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

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

می توانید برنامه خود را با استفاده از React Native برای هر دو سیستم عامل اندروید و ios بسازید، اما نمی توانید نحوه اجرای صحیح برنامه ها را وقتی از ویندوز استفاده می کنید بررسی کنید. ویندوز نمی تواند XCode و شبیه ساز های آن را اجرا کند. این برنامه تنها برای سیستم عامل مکینتاش تهیه شده است. اینجا است که ممکن است کمی محدود شوید زیرا XCode ابزار بسیار مفیدی است و اغلب وقتی بر روی اپلیکیشن های React Native کار می کنم از آن استفاده می برم.

عناصر بومی

ممکن است در ابتدا چندان واضح به نظر نرسد، اما در زمان استفاده از عناصر کتابخانه React Native ممکن است سورپرایز شوید. برای مثال کامپوننت Picker نتایج متفاوتی را در شبیه ساز های اندروید و ios تولید می‌کند و این به خاطر این است که در پشت کار React Native عناصر جاوا اسکریپت را به عناصر مخصوص هر پلتفرم تبدیل می‌کند.

تفاوت عناصر Picker تولید شده در پلتفرم اندروید و ios در شکل زیر کاملا مشخص است :

react

استایل های خاص - سایه ها

سایه ها موضوع مهم دیگری در تفاوت میان پلتفرم اندروید و ios هستند. با استفاده از React Native شما تنها برنامه خود را با استفاده از جاوا اسکریپت استایل دهی می کنید. نام استایل ها و مقادیر آنها معمولا با نحوه کار css در وب مطابقت دارند(به استثنای نام ها که با قاعده کمل کیس نوشته می شوند مثلا borderRadius به جای border-radius )

تفاوت میان تولید سایه ها در دو پلتفرم اندروید و ios در زیر آمده است :

react2

همانطور که مشاهده می کنید، هیچ سایه ای در حالت اندروید وجود ندارد، زیرا اندروید از سایه ها در React Native پشتیبانی نمی کند و به منظور ایجاد کمی سایه باید از مشخصه elevation استفاده کنیم. با افزودن کد elevation: 20 می‌توان سایه ها را برای عناصر در اندروید به وجود آورید :

react3

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

اتصال به کتابخانه‌های ثالث

زمانی که می‌خواهیم از کتابخانه‌های ثالثی در برنامه خود استفاده کنیم، اغلب اوقات با اضافه کردن آنها به عنوان یک وابستگی و اجرای کد زیر به مقصود خود خواهیم رسید :

react-native link "library-name"

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

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

خلاصه

اگر چه تفاوت هایی بین توسعه در سیستم عامل های اندروید و ios وجود دارد، اما همچنان React Native تکنولوژی فوق العاده ای است. زیرا به شما اجازه می‌دهد، از اغلب کد های خود در هر دو سیستم عامل به صورت اشتراکی استفاده کنید. بعد از مدتی کار با React Native دریافته ام که محدودیت های ویندوز هم می تواند نوعی مزیت باشد، زیرا بیشترین مشکلاتی که در زمان توسعه برنامه ها با React Native داشتم مربوط به برنامه‌های اندروید بوده است. وقتی عملکردی را به صورت صحیح برای اندروید پیاده سازی کردم احتمال ۹۹% این عملکرد برای ios نیز به خوبی کار می کرده است. 

#React Native #فریمورک جاوا اسکریپت

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

angularreact

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

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

مقایسه ری اکت و آنگولار

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

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

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

باید در مورد Vue صحبت کنیم

reactangular

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

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

سهولت پذیرش و توسعه دهندگان حرفه‌ای

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

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

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

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

نتفلیکس از چه فریمورکی استفاده می کند؟

با استفاده از نتفلیکس می توانید فیلم ها و مجموعه های تلویزیونی را به صورت اینترنتی مشاهده کنید، این مجموعه بزرگ از ری اکت استفاده می‌کند، اگر به تصویر بزرگتری از اکوسیستم این برنامه توجه کنیم، به خوبی خواهیم فهمید که تکنولوژی های front-end تنها بخش کوچکی از این مجموعه بزرگ هستند.

پی پال از آنگولار استفاده می کند، این موضوع را می توان از نشانه ng در سورس این سایت به خوبی مشاهده کرد. هر دوی نتفیلیکس و پی پال به یک اندازه بزرگ هستند و از تکنولوژی های ری اکت و آنگولار که توسط فیسبوک و گوگل پشتیبانی می شود، استفاده می کنند.

angular

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

همه چیز در مورد راه حل مناسب است نه ابزار مناسب

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

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

angular

صحبت پایانی

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

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

#ری اکت #آنگولار

منبع: لرن سورس


شهربانو دوستی
۱۰مرداد

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

grasshopper

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

Enki

Enki

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

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

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

Grasshopper

Grasshopper

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

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

SoloLearn

SoloLearn

یکی از بهترین برنامه ها برای یادگیری کدنویسی SoloLearn است. بیشتر برنامه هایی که در این مقاله به آن اشاره خواهیم کرد از تعداد کمی زبان برنامه نویسی پشتیبانی میکنند، اما SoloLearn از طیف وسیعی از زبان ها اعم از C، ++C ، جاوا، جاوا اسکریپت، پی اچ پی، پایتون ، رابی، سیپوئیفت و .. پشتیبانی میکند.

مانند بسیاری از برنامه های ذکر شده در این مقاله، SoloLearn هم از بازی ها برای تشویق شما به استفاده از آن استفاده کرده است. شما به مهارت های بیشتری دست پیدا خواهید کرد، زمانی که سطح خود را در این نرم افزار ارتقا میدهید، حتی میتوانید به رقابت با افراد دیگری که در سراسر جهان از این نرم افزار استفاده میکنند، بپردازید.
 
بیشتر قابلیت های این نرم افزار رایگان است، البته برخی ویژگی های آن نیز پولی هستند، با پرداخت7 دلار در ماه یا 48 دلار در سال میتوانید از نسخه Pro این نرم افزار استفاده کنید.

Codeacademy Go

Codeacademy

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

#اپلیکیشن های برنامه نویسی

منبع: لرن سرس


شهربانو دوستی
۰۹مرداد

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

csharp

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

سی شارپ ار کجا آمده است؟

سی شارپ یک زبان برنامه‌نویسی سطح بالا بوده که توسط مایکروسافت ایجاد شده‌است و در سال ۲۰۰۰ از آن رونمایی شد. مایکروسافت در سال‌های بعد از آن به شدت برای توسعه این زبان سرمایه گذاری کرد. زبان سی شارپ بر پایه زبان های C و ++C ساخته شده است اما استفاده از آن نسبت به زبان های فوق آسان تر است. این زبان محبوب دارای مجموعه ی وسیعی از کتابخانه‌ها برای انجام وظایف مختلف برنامه نویسی است.

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

یادگیری سی شارپ آسان است

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

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

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

سی شارپ یک جامعه آنلاین بزرگ دارد

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

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

این زبان توسط شرکت مایکروسافت پشتیبانی میشود

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

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

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

توسعه بازی های Unity

unity

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

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

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

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

مایکروسافت به تازگی .NET Core را به عنوان نسخه ای متن باز و ساده سازی شده از دات نت فریمورک معرفی کرده است. رایگان بودن و نصب آسان این پلتفرم و همینطور مستقل بودن از سیستم عامل های مختلف از ویژگی های NET Core است و این یعنی توسعه دهندگان میتوانند برنامه های خود را برای هر سیستم عامل تولید کنند.

ASP.NET و ASP.NET Core

asp_net

ASP.NET دومین تکنولوژی در اینترنت است که برای توسعه برنامه های سمت سرور بعد از PHP استفاده میشود. خدمات کاربردی این تکنولوژی به منظورساخت صفحات استفاده میشود. Asp.net یک تکنولوژی بوده که در آن از زبان سی شارپ به منظور برنامه نویسی سمت سرور استفاده میشود. جدیدا نسخه ASP.NET Core نیز از این تکنولوژی منتشر شده است که به انعطاف پذیری در توسعه وب کمک میکند.

اپلیکیشن خود را برای اندروید و یا IOS بسازید

Xamarin_Logo

توسعه برنامه های اندرویدی معمولا در جاوا انجام میشود. برای توسعه برنامه های IOS نیز معمولا از سوئیفت یا Objective C استفاده میشود. و این یعنی اگر بخواهید توسعه در هر دو پلت فرم را یاد بگیرید، حداقل باید به دو زبان مسلط باشید. زامارین برای حل این مشکل طراحی شد.

این چارچوب به شما این امکان را می‌دهد که برنامه های موبایل خود را با سی شارپ کدنویسی کنید و سپس آن را هم برای iOS و هم برای Android کامپایل کنید. این به این معنی است که شما می‌توانید از همان کد برای هر دو سیستم‌عامل استفاده کنید.

آیا سی شارپ برای یادگیری شما زبانی مناسب است؟

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

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

منبع: لرن سورس


شهربانو دوستی
۰۹مرداد

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

global-AI-competition_main

هر کسی که کمی با این موضوع آشنا باشد می‌داند که پایتون و R برای سالیان سال، انتخاب های اولیه برای یادگیری ماشین بوده‌اند. با این حال، اوضاع در حال تغییر است. طبق بررسی به عمل آمده توسط گیت هاب درباره بهترین تکنولوژی‌های یادگیری ماشین، جاوااسکریپت جایگاه سوم را پس از پایتون و  ++C اشغال کرده‌است , در حالی که R به مکان هشتم نزول پیدا کرده است.

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

  • تطبیق پذیری :  جاوا اسکریپت راه را برای توسعه همه‌جانبه و مستقل از پلتفرم باز می‌کند تا برنامه نویسان بتوانند از یک زبان برای انجام طیف وسیعی از کارها استفاده کنند. با استفاده از جاوا اسکریپت ، شما میتوانید به طور گسترده ای از آنگولار و ری اکت در طراحی front-end استفاده کنید، در حالیکه فریمورک Node.js به شما اجازه می‌دهد تا قسمت سمت سرور را مقیاس پذیر و قدرتمند بسازید. فریمورک محبوب دیگر جاوا اسکریپت، ری اکت نام دارد که برنامه نویسان وب را قادر می‌سازد تا برنامه‌های کاربردی تلفن همراه را برای ios و اندروید توسعه دهند.
  • محبوبیت : طبق نظرسنجی انجام شده توسط سایت Stackoverflow ، زبان جاوا اسکریپت محبوب‌ترین فن‌آوری مورد استفاده 67 درصد از توسعه دهندگان حرفه‌ای است. با افزایش تقاضا برای برنامه‌های هوشمند و افزایش سرعت سخت‌افزار ، الگوریتم ‌های یادگیری ماشین در جهان جاوا اسکریپت نیز به سرعت در حال تحول هستند و از پشتیبانی جامعه فعالی از توسعه دهندگا برخوردارند.

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

mljs1

یادگیری ماشین چیست و چه تفاوتی با یادگیری عمیق دارد؟

هوش مصنوعی (AI): هوش مصنوعی توسط ویکی‌پدیا به عنوان هوشی که توسط ماشین ها به نمایش گذاشته میشود، یاد میشود. به عبارت دیگر، به توانایی سیستم‌های کامپیوتری برای تقلید از رفتار و تفکر انسان هوش مصنوعی گفته میشود.

  • یادگیری ماشین (ML): یادگیری ماشین زیرمجموعه ای از هوش مصنوعی است و براساس این مفهوم که افراد می‌توانند به ماشین‌ها آموزش دهند تا داده‌ها را تجزیه و تحلیل کنند و راه حلی برای مشکلات روزانه بیابند، بنا نهاده شده است. این مفهوم برای دهه‌ها مورد توجه بوده است و در ابتدا در سال 1959 پایه گذاری شد. عبارت "یادگیری ماشین"، سفری طولانی را برای تبدیل شدن از ایده‌ای صرف به برنامه های عملی در جامعه مدرن طی کرده است. در زمان کنونی یادگیری ماشین در تمام جنبه‌های زندگی، از جمله تکنولوژی‌های اتومبیل، تکنولوژی های مربوط به تلویزیون، خرید های شخصی و غیره یافت می‌شود.
  • یادگیری عمیق : یادگیری عمیق مهم‌ترین شاخه از یادگیری ماشین است. وظیفه اصلی آن تقلید از روشی است که مغز انسان کار می‌کند، یا دقیق‌تر، رسیدن به نحوه باور دانشمندان در رابطه با روش کارکرد مغز ما. سیستم‌های یادگیری عمیق می‌توانند با استفاده از شبکه‌های عصبی چند لایه‌ای، مقادیر قابل‌توجهی از اطلاعات را مدیریت کنند. این شبکه‌های پردازش عمقی، قادر به استخراج الگوهای مختلف تا زمانی که سیستم، شی مورد نظر را تشخیص دهد، هستند.
  • شبکه های عصبی مصنوعی (ANNs) : شبکه های عصبی مصنوعی سیستم‌های پیچیده‌ای هستند که برای تقلید از اتصالات نورون ها در مغز انسان طراحی شده‌اند. همه پیشرفت‌های اخیر در تصویر و تشخیص گفتار و همچنین پردازش زبان های طبیعی بدون ANN ها غیر ممکن خواهد بود.

mljs2

بهترین فریمورک های یادگیری ماشین در جاوا اسکریپت کدامند؟

پاسخ به این سوال به اهداف مورد نظر ما ، تجربه قبلی تیم توسعه و چندین عامل دیگر بستگی دارد. براساس تجربه کار با فریمورک های مختلف جاوااسکریپت برای یادگیری ماشین ، 9 تکنولوژی را که قطعا در سال ۲۰۱۹ بسیار ارزشمند هستند را انتخاب کرده ایم. در زیر به توضیح هر کدام خواهیم پرداخت :

فریمورک Brain.js

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

  • شبکه های عصبی Feed-forward : در این شبکه ها داده‌ها همیشه در یک جهت حرکت می‌کنند و هرگز به عقب جریان نمی‌یابند.
  • شبکه های عصبی بازگشتی (RNNs) : این شبکه ها میتوانند قطعات مرتبط از اطلاعات را ذخیره کرده و از آن‌ها در زمینه‌ای برای درک و طبقه‌بندی داده‌ها استفاده کند.
  • شبکه‌های حافظه کوتاه‌مدت و بلند مدت (LSTMs): این شبکه ها برای یاد گرفتن وابستگی‌های بلند مدت ساخته شده اند. از این الگوریتم‌های پیشرفته در الکسای آمازون ، تشخیص گفتار گوگل و تکنولوژی های ترجمه استفاده شده است. LSTM بزرگ‌ترین دستاورد در حوزه هوش مصنوعی است که در همه چیز از روش‌های تشخیص پزشکی گرفته تا ترکیب های موسیقی استفاده می‌شود.

mljs3

فریمورک ConvNetJS 

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

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

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

فریمورک DeepForge

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

mljs4

فریمورک Keras.js

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

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

فریمورک Mind

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

فریمورک STDLib

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

  • دارای مجوعه ای گسترده از توابع ریاضی (چیزی حدود 150 تابع)
  • ابزارهای عمومی برای برنامه‌نویسی تابعی و جریان کنترل ناهمگام.
  • دارای ابزارهای مختلف برای اعتبار سنجی داده‌ها و شناسایی ویژگی‌ها.
  • دارای Api های مناسب برای تحلیل و تجسم داده ها

فریمورک  Synaptic

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

فریمورک TensorFlow.js

این فریمورک که توسط تیم گوگل توسعه داده شده است، پایه و اساس نرم‌افزارهای شبکه عصبی پیشرفته مانند DeepDream را تشکیل می‌دهد که می‌تواند تصاویر را ثبت ، ردیابی و طبقه‌بندی کند. این پلت فرم  متشکل از ابزار ها، کتابخانه‌ها، و دیگر منابعی است که اجازه می‌دهد یک توسعه دهنده برنامه‌های کاربردی را بر روی شبکه‌های عصبی عمیق ایجاد کند. در اصل ، TensorFlow دارای یک رابط برنامه‌نویسی پایتون است که هسته آن در ++C نوشته شده است.

mljs5

فریمورک WebDNN

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

mljs6

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

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

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

#یادگیری ماشین #فریمورک جاوااسکریپت

منبع: لرن سورس


شهربانو دوستی
۰۹مرداد

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

maxresdefault

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

تیم ما از قبل چندین پروژه از از نسخه 7 این فریمورک به نسخه 8 ارتقا داده است و در نتیجه همه پیشرفت‌هایی که در این نسخه ارائه شده است را آزمایش کرده است. در این مقاله نگاهی سریع به مهم‌ترین تغییراتی که در این فریمورک به وجود آمده است خواهیم داشت و نشان خواهیم داد چطور برنامه شما میتواند از آنها سود ببرد.

بارگذاری Differential

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

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

مزایا : اندازه bundle های تولید شده برای مرورگرهای امروزی به میزان ۷ تا ۲۰ درصد کاهش می‌یابد. به ترتیب به طور قابل ملاحظه ای سرعت بارگذاری برنامه شما افزایش می یابد.

angular1

پشتیبانی از Web worker

جاوا اسکریپت یک زبان single-threaded است، بنابراین کدهای مختلف را نمی‌توان همان زمان اجرا کرد. خوشبختانه آنگولار وب ورکرهایی دارد که شما را قادر می‌سازد تا فایل‌های بزرگ ( انیمیشن‌های ، ویدیوها ، و غیره ) را در thread های پس‌زمینه انتقال دهید و thread اصلی را همچنان برای ارتباط با کاربران  آزاد نگه دارید. وب ورکر ها به طور قابل‌توجهی اجرای وظایف سنگین CPU را تسریع می‌کنند.

در آنگولار ۸ ، می‌توانید وب ورکر ها را مستقیما ً با استفاده از CLI تولید کرده و از آن‌ها در برنامه خود استفاده کنید .

مزایا : سرعت توسعه بالاتر , زمان بارگذاری کمتر و تقویت تجربه کاربری.

بروزرسانی های CLI

در نسخه هشتم ، CLI مجهز به API های سازنده جدیدی شده است که به شما این امکان را می‌دهد که فرآیندهای ساخت و آزمایش را سفارشی سازی کنید. همچنین بهبودهایی هم در AngularFire  فراهم آمده است ، کتابخانه ای رسمی از آنگولار که پلتفرم توسعه موبایل (Firebase) را به آنگولار متصل میکند. حالا می‌توانید کد خود را مستقیما ً با استفاده از CLI انتشار دهید این کار همه چیز را سریع‌تر و آسان‌تر از همیشه می‌سازد.

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

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

پیش نمایش Ivy 

فریمورک آنگولار از زمان انتشار نسخه 2 تا کنون از لحاظ اندازه و فضایی که اشغال میکند راه دور و درازی را پیموده است، اما هنوز خیلی سنگین است و فضای زیادی از حافظه را در مقایسه با ریکت و ویو جی اس اشغال میکند. موتور رندرکننده Ivy برای حل این مشکل طراحی شده‌است.

Ivy چیست؟ در واقع یک موتور فریمورک است. در حال حاضر آنگولار از از  View Engine استفاده می‌کند که به طور کامل توسط Ivy جایگزین می‌شود. با وجود این واقعیت که این یک تغییر قابل‌توجه است، برنامه‌های آنگولار مثل همیشه عمل خواهند کرد، اما با بهبودهای زیر را خواهید داشت :

  • سادگی در کد نویسی
  • برای تمپلت ها قابلیت چک کردن انواع بهبود می یابد
  • فایل های bundle کوچکتر (Ivy بعضی فایل های کد را تا 97 درصد کاهش حجم میدهد)
  • تست های سریع تر
  • کامپایل سریعتر
  • نیازمندی های حافظه ای کمتر
  • ابزارهای تقویت شده برای پیدا کردن خطاها

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

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

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

تغییرات و بهبودهای دیگر

  • پشتیبانی از TypeScript 3.4 و حتی بالاتر : برنامه‌های کاربردی جدیدی که از طریق cli ایجاد شده‌اند، از آخرین نسخه TypeScript به صورت پیشفرض استفاده میکنند.
  • بهینه سازی حجم فایل های PNG : شما می‌توانید از pngcrush ، یک خط فرمان متن باز جدید، برای کاهش اندازه فایل‌های PNG بدون افت کیفیت استفاده کنید.
  • سازگاری با نسخه های قبلی : آنگولار8 دارای سازگاری معکوس است و این بدان معناست که با ارتقا پروژه خود به نسخه جدید، همچنان برنامه شما با نسخه های قدیمی تر سازگاری دارد.
  • بهبود مهاجرت از AngularJS : ویژگی های اضافه شده به ngUpgrade مهاجرت اپلیکیشن های بزرگ از AngularJS  به نسخه های جدید را آسان کرده است.
  • پشتیبانی آزمایشی از Bazel : Bazel یک سیستم ساخت سریع و مقیاس پذیر است که بیش از یک دهه است که توسط گوگل مورد استفاده قرار می‌گیرد. در واقع، خود آنگولار با استفاده ازBazel  ایجاد شده است. در حال حاضر، تیم آنگولار با هدف یکپارچه‌سازی، این ابزار قدرتمند  را در اکوسیستم آنگولار قرار داده است.

آیا باید برنامه های خود را به آنگولار نسخه 8 ارتقا دهید؟

آنگولار نسخه ۷ تا آوریل ۲۰۲۰ پشتیبانی خواهد شد، بنابراین زمان کافی برای ارتقا پروژه خود به نسخه 8 را دارید . اما توصیه می‌کنیم هر چه زودتر به آخرین نسخه مهاجرت کنید. هرچه زودتر این بهبودها را انجام دهید ، برای برنامه شما بهتر است. علاوه بر این ، مهاجرت به آنگولار ۸ به شما این امکان را می‌دهد که مطمئن شوید که برنامه شما برای استفاده از موتور جدید آماده است و در آینده ای نزدیک به آن مهاجرت میکند.

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

#آنگولار 8

منبع: لرن سورس


شهربانو دوستی