cmder

یه Console Emulator خوب برای ویندوز

واقعیتش اینه که خیلی‌هامون داریم از سیستم عامل ویندوز استفاده می‌کنیم، حالا به هر دلیلی. فی‌المثل من مهندسی برق خوندم و اکثر برنامه‌هایی که باهاشون کار می‌کنم تحت ویندوز اجرا میشن، پس اکثر مواقع باید تو ویندوز زندگی کنم. البته از حق نگذریم، ویندوز ۱۰ هم خیلی بهتر و خوش‌قیافه‌تر از اَسلاف و جد و آباءش شده و کار کردن توش همچین بدک هم نیست. در هر صورت، اگه به هر دلیلی با ویندوز کار می‌کنید، حتما از فقدان یه خطِ فرمان درست و درمون رنج می‌برید. گرچه cmd یا همون Command Prompt تو ویندوز در دسترسه و علاوه بر اون جدیدا تو ویندوز PowerShell هم داریم، ولی الحق و الانصاف دوتاشون با هم دو زار نمی‌ارزن! گرچه شاید تو گفتن این جمله زیاده‌روی کرده باشم، ولی انصافا Command Prompt ضعیفه و PowerShell هم که انگار از مریخ اومده! برای یه کار کوچیک باید کلی چیز عجیب و غریب تایپ کنیم توش! از همه‌ی این‌ها گذشته، این دوتا قیافه‌ی خوبی هم ندارن. گرچه تو ویندوز ۱۰ قیافه‌شون یخورده درست درمون‌تر شده.

(بیشتر…)

بیشتر بخوانید

html5 localStorage

ذخیره کردن داده‌ها تو localStorage با store.js ساده و دوست‌داشتنی!

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

(بیشتر…)

بیشتر بخوانید

mathematics in javascript

جاوااسکریپت به روایت آمیرزا: فاجعه‌ی اعداد بزرگ!

هشدار: رویت هلالِ روی ماهِ اعدادِ بزرگ در جاوااسکریپت با چشم غیرمسلح امکان‌پذیر نمی‌باشد!!

اگه شما یه دانشجوی رشته‌ی فنی مهندسی مثل برق یا مکانیک باشید، حتما یکی از دغدغه‌هاتون انجام محاسبات فنی یا به قول فرنگی‌ها Technical Computation هست. از طرفی اگه شما علاوه بر یه مهندس برق یا مکانیک، یه گیکِ علاقه‌مند به برنامه‌نویسی هم باشید، ممکنه دوست داشته باشید به جای کار با Matlab سنت‌شکنی کنید و با یه چیز شادتری پروژه‌هاتون رو انجام بدید. مثل چی؟ مثل جاوااسکریپت!

(بیشتر…)

بیشتر بخوانید

JetBrains

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

 

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

(بیشتر…)

بیشتر بخوانید

Hacker Rank

میدان مبارزه‌ای به نام HackerRank

سایت HackerRank جاییه که میتونید توانایی‌های خودتون رو بسنجید و قابلیت‌هاتون رو به بوته‌ی آزمایش بسپارید. اگه طالب چالش‌های برنامه‌نویسی هستید و تو کوچه پس کوچه‌های برنامه‌نویسی میگردید و فریاد هَل مَن مُبارز می‌زنید، این گوی و این میدان!

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

چالش‌های این سایت دو قسمت دارند: تمرین‌ها (Practice) و مسابقه‌ها (Contest).

(بیشتر…)

بیشتر بخوانید

js data types javascript

جاوااسکریپت به روایت آمیرزا: همه تنبلا! (یا به قول فرنگی‌ها Lazy ways)

تو جاوااسکریپت یه سری راه ساده و سرراست برای تبدیل کردن یک متغیر از یک نوع به نوع دیگه هست که فرنگی‌ها بهش میگن lazy ways و درصورت نیاز میتونیم ازشون برای تبدیل یک متغیر از یک نوع داده به یک نوع داده دیگه استفاده کنیم. مثلا وقتی یک عدد که در قالب رشته (string) هست ضربدر یک عدد دیگه کنیم، نتیجه از نوع عدد میشه. این حالت برای عملگر منها یا همون تفریق هم حاکمه!

(بیشتر…)

بیشتر بخوانید

حلقه یگانه ارباب حلقه ها

مقایسه‌ی زبون‌های برنامه‌نویسی بر پایه‌ی ارباب حلقه‌ها!

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

منبع اصلی این نوشته وبسایت کارل چئو هست، اما هر جایی که لازم دیدم دخل و تصرف کردم!

(بیشتر…)

بیشتر بخوانید

ES2015 ES6

ES2015 یا ES6 چیه؟

ES2015 مخفف ECMAScript2015 هست، که همون ES6 هست، یا به عبارت دیگه ECMAScript6. اگه اهل برنامه‌نویسی و طراحی وب باشید حتما میدونید که ECMAScript همون جاوااسکریپت خودمونه! یا بهتر بگیم: جاوااسکریپت همون ECMAScript هست! این زبون جاوااسکریپت که اینقدر محبوب‌القلوب شده، در واقع اسم اصلیش ECMAScript بوده و هست، حالا اینکه چرا بهش میگن جاوااسکریپت خودش داستانیه! تو طول تاریخ این ECMAScript به اسم‌های مختلفی ظهور کرده، از جمله Mocha، LiveScript و در نهایت JavaScript، که البته همین جاوااسکریپت یه نسخه‌ی مایکروسافتی هم داشت که بهش میگفتن JScript.

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

الغرض، این زبون نازنین تو سال ۲۰۱۵ دستخوش تغییراتی اساسی شد، تغییراتی که میتونه دانشی که از جاوااسکریپت دارید رو تا حدودی به چالش بکشه! این تغییرات تحت نسخه ES6 ارائه شدند که چون تو سال ۲۰۱۵ انجام شد، معروف شده به ES2015.

اگه خوشحالتون میکنه باید بگم تو نسخه‌ی جدید جاوااسکریپت حمایت از Unicode هم بیشتر شده و حتی امکان Unicode Regex هم فراهم شده. البته تغییرات ES2015 خیلی خیلی بیشتر از این حرفاست. برای دیدن لیست ویژگی‌های جدید ES2015 بهتون توصیه میکنم تا صفحات زیر رو چک کنید:

ECMAScript 6 — New Features: Overview & Comparison

Overview of ECMAScript 6 features

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

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

دانلود فیلم آموزش ضروریات JavaScript ES6

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

درضمن، موقع نوشتن این مطلب متوجه شدم که حمید فرجی تو بابون یه مطلب خوب درمورد ES6 نوشته، بهتون توصیه میکنم که این نوشته رو هم مطالعه کنید.

جاوا اسکریپت نسخه جدید ES6 – نصب و راه اندازی ‌‌‌Babel JS (حمید فرجی)

شاد باشید و به‌روز تا همیشه جوون بمونید!

قربان شما،

آمیرزا

بیشتر بخوانید

React.JS

چرا من React.js رو انتخاب کردم؟

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

راستش اول فکر می‌کردم برای فریمورک سمت کاربر، انتخاب‌های زیادی ندارم. از قبل آشنایی مختصری با Angular.JS داشتم و فکر میکردم هرچی هست و نیست همینه! چرا؟ چون هنوز جز اون چیز دیگه‌ای رو نمیشناختم. در هر صورت، قبل از شروع کار با Angular تصمیم گرفتم جست‌جویی کنم، بلکه بهتر از اون رو پیدا کنم. تو جست‌جوهام خیلی زود به چهارتا اسم رسیدم: Angulr, Ember, Backbone, React. باز دوباره من موندم و یه انتخاب سرنوشت‌ساز!

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

(بیشتر…)

بیشتر بخوانید

i love javascript

جاوااسکریپت به روایت آمیرزا: خاص‌ها!

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

اعداد خاص!

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

Infinity و Infinity- که همون مثبت و منفی بینهایت هستند. قاعدتا اگه با چیزی جمع یا کم بشن باز هم همون بینهایتی که هستند باقی میمونن.

مقدار خاص سوم هم چیزی نیست جز NaN که مخفف Not a Number هست. گرچه داد میزنه من عدد نیستم، ولی گولش رو نخورید، چون از جنس اعداد هست. چرا؟ چون هر عملیاتی روی اعداد که نتونه منجر به یک نتیجه‌ی بامعنی بشه، NaN رو برمیگردونه. اینطوری میشه گفت: شاید NaN عدد نباشه، اما حاصل از عملیاتهای ناموفق عددی هست. با دستور typeof میتونید نوع متغیرها رو چک کنید، اگه این دستور رو برای NaN اجرا کنید میبینید که number رو برمیگردونه:

typeof NaN;
          // number

و اما یک نکته دیگه درمورد NaN، و اون اینکه NaN هیچوقت برابر خودش نیست!!! یعنی چی؟ یعنی عبارت منطقی

NaN == NaN

نتیجه‌ای جز false در پی نداره. چون NaN حاصل یک عملیات ریاضی بی‌معنیه، که لزوما نباید برابر نتیجه‌ی عملیات‌های بی‌معنیِ دیگه‌ای باشه! تونستم منظورم رو برسونم؟

راستی، یه تابع هم داریم به اسم ()isNaN که چک میکنه یه متغیر عدد نیست یا هست (دقت کنید! نگفتم عدد هست یا نه، گفتم عدد نیست یا هست). منظور اینه که اگه یه عدد به صورت رشته متنی هم ذخیره شده باشه، این تابع میتونه برامون تشخیصش بده. اگه متغیری که به ورودی این تابع میدیم، به هیچ وجه من الوجوه عدد نباشه، این تابع مقدار true رو برمیگردونه، یعنی این متغیر عدد نیست یا به قول فرنگی‌ها Not A Number. مثالهای زیر میتونن کمک کنن که راحتتر با کارکرد این تابع آشنا بشیم:

var num = '2016';
typeof num;
          // string
 
isNaN(num);
          // false
 
isNaN(2016);
          // false
 
var b = '2016March';
isNaN(b);
          // true

مقادیر خاص!

تو جاوااسکریپت دو مقدار خاص هم داریم. این مقادیر چیزی نیستن جز undefined و null. این دو تا مقدار خیلی شبیه بهم هستند، اول که دیدمشون فکر کردم که داداش‌های دو قلو هستن، اما بیشتر که دقت کردم دیدم تفاوتهایی با هم دارند که دونستنش خالی از لطف نیست!

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

var myVar;
typeof myVar;
          // undefined
 
typeof myLovelyVar
          // undefined

تفاوت اول undefined با null اینه که خود حضرت جاوااسکریپت به متغیرهای تعریف نشده مقدار undefined میده و اصلا کاری به کار null نداره. در واقع مقدار null رو کاربر خودش میتونه به متغیری نسبت بده وگرنه جاوااسکریپت خودش تو اینجور واقع فقط میره سراغ برگردوندون undefined.

اما تفاوت اساسی این دو مقدار اینه که undefined واقعا هیچی نیست و اگه تو یه عملیات ریاضی استفاده بشه، نتیجه‌ای بی‌معنی تولید میکنه! اما null در عملیاتها نقش صفر رو بازی میکنه و عملیاتهای ریاضی رو بی‌معنی نمیکنه و به فنا نمی‌بره! به مثالهای زیر توجه کنید:

result1 = 2 + null;
          // ۲
 
result2 = 5 * null;
          // ۰
 
result3 = 2 + undefined;
          // NaN

توجه داشته باشید که null فقط در عبارات ریاضی نقش صفر رو بازی میکنه، نه جاهای دیگه! در هر صورت، از نظر منطقی null برابر undefined هست، اما null برابر صفر نیست!

null == undefined;
          // true
null == 0;
          //false

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

قربان شما،

آمیرزا

بیشتر بخوانید