دانلود آهنگ محسن بهمنی شعبده باز

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ محسن بهمنی شعبده باز

در این پست می توانید آهنگ محسن بهمنی شعبده باز را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ محسن بهمنی شعبده باز

download song | Singer: Mohsen Bahmani | Song name: Shobade Baz  | With the text song Share To Mohsen Bahmani-Shobade Baz on your social network

خواننده نام آهنگ ترانه سرا دسته بندی
محسن بهمنی شعبده باز آهنگ شاد

 

 

متن آهنگ محسن بهمنی شعبده باز

——-| ♫ 🎵 ♬ |——-

🎵 من مست جنونم بات شونه به 🎵

🎵 شونم بی تو نمیتونم ای جان 🎵

🎵 چشمات پر رازه یه شعبده بازه ای 🎵

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

——-| ♫ 🎵 ♬ |——-

🎵 با یه لبخندت میکشی دلمو سمت 🎵

🎵 نگاهت دل میشه پا بندت ای شیرین 🎵

🎵 شیرینم عشقتو تو سینم این همه ادم 🎵

🎵 اما فقط من چشماتو میبینم قلبم با تو 🎵

🎵 بدجوری جفته واست بازم پاش که بیوفته 🎵

🎵 هر جا باشی دارم هواتو این رویا خیلی 🎵

🎵 شیرینه با تو این ترفندت با یه لبخندت 🎵

——-| ♫ 🎵 ♬ |——-

🎵 میکشی دلمو سمت نگاهت دل میشه 🎵

🎵 پابندت ای شیرین شیرینم عشقتو تو 🎵

🎵 سینم این همه ادم اما فقط من چشماتو میبینم 🎵

——-| ♫ 🎵 ♬ |——-

محسن بهمنی شعبده باز

دانلود آهنگ محسن بهمنی شعبده باز

دانلود آهنگ میثم ابراهیمی جان جان

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ میثم ابراهیمی جان جان

در این پست می توانید آهنگ میثم ابراهیمی جان جان را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ میثم ابراهیمی جان جان

download song | Singer: Meysam Ebrahimi | Song name: Jan Jan  | With the text song Share To Meysam Ebrahimi-Jan Jan on your social network

خواننده نام آهنگ ترانه سرا دسته بندی
میثم ابراهیمی جان جان ترانه عاشقانه

 

 

متن آهنگ میثم ابراهیمی جان جان

——-| ♫ 🎵 ♬ |——-

🎵 آروم جونمی وای وای تو عشق دلمی 🎵

🎵 جان جان به دل میشینه اون حرفات 🎵

🎵 نمیشه هیچکس بیاد جات جز تو کسی 🎵

🎵 توی قلبم نمیتونه بیاد قطعا همه کسی 🎵

🎵 که تو عشقم تا آخرش بمون با من دلبستن 🎵

——-| ♫ 🎵 ♬ |——-

🎵 به تو عادتمه میگم دوست دارم اونم 🎵

🎵 جلو همه نگو میرم که میدونی این دیوونه 🎵

🎵 بدجور حساسه رو این کلمه دلبستن به تو 🎵

🎵 عادتمه میگم دوست دارم اونم جلو همه 🎵

🎵 نگو میرم که میدونی این دیوونه بدجور 🎵

🎵 حساسه رو این کلمه یه جوری عاشقم 🎵

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

🎵 باشم آنی تو این شهر هی دلم دستاتو 🎵

——-| ♫ 🎵 ♬ |——-

🎵 میخواد صدات آرامشه ای جان من فقط 🎵

🎵 عشقمو میخوام با هیشکی راه نمیام 🎵

🎵 دلبستن به تو عادتمه میگم دوست دارم 🎵

🎵 اونم جلو همه نگو میرم که میدونی این 🎵

——-| ♫ 🎵 ♬ |——-

🎵 دیوونه بدجور حساسه رو این کلمه 🎵

🎵 دلبستن به تو عادتمه میگم دوست 🎵

🎵 دارم اونم جلو همه نگو میرم که میدونی 🎵

🎵 این دیوونه بدجور حساسه رو این کلمه 🎵

——-| ♫ 🎵 ♬ |——-

میثم ابراهیمی جان جان

دانلود آهنگ میثم ابراهیمی جان جان

دانلود آهنگ محمد اصفهانی بی واژه

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ محمد اصفهانی بی واژه

در این پست می توانید آهنگ محمد اصفهانی بی واژه را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ محمد اصفهانی بی واژه

download song | Singer: Mohammad Esfahani | Song name: Bi Vaazhe  | With the text song Share To Mohammad Esfahani-Bi Vaazhe on your social network

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

 

 

متن آهنگ محمد اصفهانی بی واژه

——-| ♫ 🎵 ♬ |——-

🎵 منو دریا منو بارون منو آسمون 🎵

🎵 صدا کن اسممو واژه به واژه تو 🎵

🎵 دل ترانه جا کن منو تنها منو عاشق 🎵

🎵 منو خوب من صدا کن منو از همین 🎵

——-| ♫ 🎵 ♬ |——-

🎵 ترانه واسه ما شدن صدا کن 🎵

🎵 منو بی واژه صدا کن هم صدا تر 🎵

🎵 از همیشه به همون اسم عزیزی 🎵

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

🎵 صدام کن واسه هر چی عاشقانس 🎵

🎵 واسه حرفای قشنگی که نگفته 🎵

🎵 شاعرانس منو دریا منو بارون منو آسمون 🎵

🎵 صدا کن اسممو واژه به واژه تو دل ترانه 🎵

——-| ♫ 🎵 ♬ |——-

🎵 جا کن منو شب صدا کن اما اون شبی 🎵

🎵 که تورو داره اون شبی که جای ماهش 🎵

🎵 تورو پیش من بیاره منو آیینه صدا کن 🎵

🎵 که میخوام مثل تو باشم که برای با 🎵

🎵 تو بودن میخوام از خودم جدا شم 🎵

——-| ♫ 🎵 ♬ |——-

محمد اصفهانی بی واژه

دانلود آهنگ محمد اصفهانی بی واژه




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

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

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

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

مقاله قبلی انصراف شرکت Mars One Ventures از مسابقه‌ی سفر به مریخ
مقاله بعدی برنامه‌ی روسیه برای ایجاد استقلال اینترنتی در این کشور



دانلود آهنگ محمد اصفهانی زرین کلاه

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ محمد اصفهانی زرین کلاه

در این پست می توانید آهنگ محمد اصفهانی زرین کلاه را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ محمد اصفهانی زرین کلاه

download song | Singer: Mohammad Esfahani | Song name: Zarrin Kolah  | With the text song Share To Mohammad Esfahani-Zarrin Kolah on your social network

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

 

 

متن آهنگ محمد اصفهانی زرین کلاه

——-| ♫ 🎵 ♬ |——-

🎵 بسیار سالها به سرِ خاکِ ما رود 🎵

🎵 کاین آبِ چشمه آید و بادِ صبا رود 🎵

🎵 دامن کشان که می ‌رود امروز بر 🎵

🎵 زمین فردا غبارِ کالبُدش در هوا رود 🎵

——-| ♫ 🎵 ♬ |——-

🎵 یا رب یا رب مگیر بنده‌ ی مسکین 🎵

🎵 و دست گیر کَز تو کَرم برآید و بر ما 🎵

🎵 خطا رود خاکت در استخوان رود ای 🎵

🎵 نفسِ شوخ چشم مانند سرمه‌ دان 🎵

🎵 که درو وتیا رود مانند سرمه‌ دان که 🎵

🎵 درو وتیا رود ور سایبان حُسن عمل 🎵

🎵 اعتماد نیست سعدی مگر به سایه‌ ی 🎵

🎵 لطفِ خدا رود سعدی مگر به سایه‌ ی 🎵

——-| ♫ 🎵 ♬ |——-

🎵 لطفِ خدا رود اگر زرین کلاهی عاقبت 🎵

🎵 هیچ به تَخت ار پادشاهی عاقبت 🎵

🎵 هیچ گَرت مُلکِ سلیمان در نِگین 🎵

🎵 است در آخِر خاکِ راهی عاقبت هیچ 🎵

——-| ♫ 🎵 ♬ |——-

🎵 الهی آتشِ عشقم به جان زد شرر زان 🎵

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

🎵 آتشِ عشق بر آن آتش دلم پروانه سان 🎵

🎵 زنبر آن آتش دلم پروانه سان زن 🎵

——-| ♫ 🎵 ♬ |——-

محمد اصفهانی زرین کلاه

دانلود آهنگ محمد اصفهانی زرین کلاه

دانلود آهنگ محمد اصفهانی تو رفتی

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ محمد اصفهانی تو رفتی

در این پست می توانید آهنگ محمد اصفهانی تو رفتی را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ محمد اصفهانی تو رفتی

download song | Singer: Mohammad Esfahani | Song name: To Rafti  | With the text song Share To Mohammad Esfahani-To Rafti on your social network

خواننده نام آهنگ ترانه سرا دسته بندی
محمد اصفهانی تو رفتی عاشقانه

 

 

متن آهنگ محمد اصصفهانی تو رفتی

——-| ♫ 🎵 ♬ |——-

🎵 تقاص چی رو میگیری که تا اینجا 🎵

🎵 کشوندیمون کجای راه و کج رفتیم 🎵

🎵 که تا اینجا رسوندیمون اگه من جای 🎵

——-| ♫ 🎵 ♬ |——-

🎵 تو بودم میون این همه دردم یه روز 🎵

🎵 از چشم این مردم تو رو پنهون نمیکردم 🎵

🎵 تو رفتی بعد تو حالم یه حالی مثل 🎵

🎵 مردن بود تو هم تنها شدی اما کجا 🎵

——-| ♫ 🎵 ♬ |——-

🎵 حالت مثل من بود تو رفتی بعد تو حالم 🎵

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

🎵 اما کجا حالت مثل من بود اگه دلگیری از 🎵

🎵 دنیا منم مثل تو آشفتم ولی من جای تو 🎵

🎵 بودم به مردم راست میگفتم یه دردی 🎵

🎵 سوخت تو سینم که تو از خاطرم بردی 🎵

🎵 من اون زخمی رو خوردم که , تو از حس 🎵

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

——-| ♫ 🎵 ♬ |——-

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

🎵 اما کجا حالت مثل من بود تو رفتی بعد 🎵

🎵 تو حالم یه حالی مثل مردن بود تو هم 🎵

🎵 تنها شدی اما کجا حالت مثل من بود 🎵

——-| ♫ 🎵 ♬ |——-

محمد اصصفهانی تو رفتی

دانلود آهنگ محمد اصفهانی تو رفتی


سال گذشته، روسیه برنامه مالی ملی دیجیتال خود را معرفی کرد. این نام برنامه‌ای است که در طی آن دولت قصد دارد تا ارائه دهندگان اینترنت داخلی را به مقدار کافی تجهیز کند تا در صورت قطع شدن احتمالی دسترسی این کشور به اینترنت، شهروندان روس به مشکلی جدی در اتصال به وب برنخورند و کسب و کار داخلی بمختل نشود. تحت برنامه ریزی‌های انجام شده،  ISP های روسیه ترافیک وب را به نقطه‌های مسیریابی (routing points) در داخل کشور هدایت می‌کنند و آنگاه بر روی کپی خود از سیستم نام ‌گذاری دامنه یا (DNS) اتکا خواهند کرد. DNS به نوعی دایرکتوری یا فهرست راهنما از دامنه‌ها و آدرس‌هایی است که بر پایه اینترنت جهانی شکل گرفته‌‌اند.

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

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

دانلود آهنگ حامد برادران فقط باش

  • دسته‌بندی نشده
  • فوریه 13, 2019
بدون دیدگاه

این مطلب از وب سایت دان موزیک • دانلود آهنگ. انتشار گردید.

دانلود آهنگ حامد برادران فقط باش

در این پست می توانید آهنگ حامد برادران فقط باش را با دو کیفیت اصلی ۱۲۸ و ۳۲۰ به همراه متن اهنگ دانلود کنید

دانلود آهنگ حامد برادران فقط باش

download song | Singer: Hamed Bardaran | Song name: Faghat Bash  | With the text song Share To Hamed Bardaran-Faghat Bash on your social network

خواننده نام آهنگ ترانه سرا دسته بندی
حامد برادران فقط باش بزودی…

 

پخش بزودی از رسانه دان موزیک

 

 متن آهنگ حامد برادران فقط باش

——-| ♫ 🎵 ♬ |——-

🎵 اعشقم باش و فقط باش و فقط باش و بگو می مونم 🎵

🎵 ابه تو دل دادم و دل دادیو من میدونم 🎵

🎵 اعشقم باش و فقط باش و فقط باش و بگو می مونم 🎵

🎵 ابه تو دل دادم و دل دادیو من میدونم 🎵

🎵 الالالای لای لالالای 🎵

——-| ♫ 🎵 ♬ |——-

حامد برادران فقط باش

دانلود آهنگ حامد برادران فقط باش



فرانسیسکو سانچز بایو (Francisco Sánchez-Bayo)، زیست شناس محیط زیستی در دانشگاه سیدنی، در مورد این نتیجه‌ی به دست آمده به گزارشگر مجله‌ی گاردین ابراز داشته است:

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

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

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

دانشمندان پیش از این نیز عوامل انسانی را در این انقراض مقصر اصلی می‌دانستند. آن‌ها باور داشتند که افزایش جمعیت انسانی و مصرف گرایی بیش از حد نیاز بشر عامل اصلی ششمین انقراض گروهی در تاریخ کره‌ی زمین خواهد بود.  نویسندگان این نظرسنجی که ۷۳ گزارش را در مورد کاهش تعداد حشرات بررسی کرده‌اند، می‌گویند کشاورزی کنترل نشده (به ویژه استفاده‌ی بیش از حد از آفت کش‌های سمی برای محیط زیست)، تغییرات آب و هوایی و شهر سازی عوامل تاثیر گذار اصلی بر این کاهش جمعیت حشرات است. پروانه‌ها و mothها یکی دیگر از گونه‌هایی هستند که به شدت تحت تاثیر این کاهش قرار گرفته‌اند. تعداد گونه‌های پروانه‌ای در زمین‌های کشاورزی در انگلستان، در ده سال اول قرن حاضر، به میزان ۵۸ درصد کاهش یافته است. نویسندگان همچنین ابراز داشتند:

Hymenoptera (دسته‌ای از حشرات که شامل زنبورها، waspها و مورچه ها می‌شود)، سرگین غلتان‌ها، سنجاقک‌ها و mayflyها در میان جمعیت  حشرات با ضریب بیشتری تحت تاثیر این موارد قرار گرفته‌اند و با سرعت بالاتری در حال انقراض هستند.

نظرات خود را در مورد این فاجعه‌ی جهانی با ما در میان بگذارید.




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

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

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

توجه داشته باشید که کدهای موجود در این مقاله در نسخه ۳۰ مرورگر کروم مورد آزمایش قرار گرفته‌اند. این نسخه از ورژن ۸ موتور جاوا اسکریپ قدرت گرفته است.

  1. در زمان تعریف یک متغیر حتما نوع آن (var، let یا const) را مشخص کنید.

تخصیص یک متغیر ناشناس باعث تولید متغیر سراسری (Global variable) خواهد شد. تا جایی که امکان است از تعریف این دسته از متغیرها در کدنویسی پرهیز کنید.

همچنین سعی کنید به هیچ‌عنوان از عبارت var برای تعریف متغیرهای خود استفاده نکنید. به چه دلیل؟ برای اطلاعات بیش‌تر اینجا کلیک کنید

  1. به جای == از === استفاده کنید.

عملگر == یا (!=) تنها یک نوع تبدیل خودکار را در عبارت انجام خواهد داد و سپس به سراغ مقایسه دو عبارت می‌رود.

اما عملگر === (یا !==) هیچ تبدیلی را شامل نمی‌شود و از ابتدا، تنها مقدار و نوع دو عبارت را با یکدیگر مقایسه می‌کند، اگر نوع عبارات با یکدیگر برابر نباشد، عملگرد === بدون اتلاف وقت false را به خروجی می‌برد. به همین دلیل نیز عملکرد سریع‌تری نسبت به == دارد.

[۱۰] === ۱۰    // is false
[۱۰]  == ۱۰    // is true
'۱۰' == ۱۰     // is true
'۱۰' === ۱۰    // is false
 []   == ۰     // is true
 [] ===  ۰     // is false
 '' == false   // is true but true == "a" is false
 '' ===   false // is false 
  1. عبارات undefined، null، ۰، false، NaN، ‘ ‘ (رشته خالی)، همگی در عبارات boolean اشاره به مقدار false دارند.

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

  1. در پایان عبارات از ; (سیمی‌کالن) استفاده کنید.

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

  1. از تکنیک object constructor بیش‌تر استفاده کنید.

عمل object constructor همانطور که نام آن پیداست، باعث تولید یک آبجکت می‌شود. این روش با نظمی که ارائه می‌دهد می‌تواند کدنویسی را تا حد زیادی بهبود بخشد.

function Person(firstName, lastName){
    this.firstName =  firstName;
    this.lastName = lastName;        
}  

var Saad = new Person("Saad", "Mousliki");
  1. در هنگام استفاده از typeof، instanceof و constructor دقت لازم را داشته باشید.

عبارت typeof عملگری برای برگرداندن نوع متغیر در قالب یک رشته است. توجه داشته باشید که استفاده از typeof در null به صورت یک شیء (Object) به خروجی خواهد رفت. علاوه بر این، انواع مختلف اشیاء در جاوا اسکریپ، نظیر آرایه، دیتا و … نیز به حالت شیء برگردانده می‌شوند.

عبارت constructor یکی از خصوصیات prototype است که می‌توان دستور آن را به وسیله کدنویسی لغو کرد.

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

var arr = ["a", "b", "c"];
typeof arr;   // return "object" 
arr  instanceof Array // true
arr.constructor();  //[]
  1. ساخت یک تابع خودفراخوان

این نوع تابع در جاوا اسکریپ با نام Self-Invoked شناخته می‌شود. تابع خودفراخوان بعد از تولید، بدون نیاز به فراخوانی شروع به اجرا خواهد شد. شکل کلی این دسته از توابع به صورت زیر است:

(function(){
    // some private code that will be executed automatically
})();  
(function(a,b){
    var result = a+b;
    return result;
})(۱۰,۲۰)
  1. دریافت مقادیر تصادفی از میان یک آرایه

var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119];

var  randomItem = items[Math.floor(Math.random() * items.length)];
  1. دریافت یک عدد تصادفی در محدوده‌ای مشخص

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

var x = Math.floor(Math.random() * (max - min + 1)) + min;
  1. تولید آرایه‌ای از اعداد صفر تا مقدار مشخص

var numbersArray = [] , max = 100;

for( var i=1; numbersArray.push(i++) < max;);  // numbers = [1,2,3 ... 100] 
  1. تولید کاراکترهایی با حروف الفبای تصادفی

function generateRandomAlphaNum(len) {
    var rdmString = "";
    for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
    return  rdmString.substr(0, len);

}
  1. برهم‌زدن آرایه‌ای از اعداد به صورت تصادفی

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
numbers = numbers.sort(function(){ return Math.random() - 0.5});
/* the array numbers will be equal for example to [120, 5, 228, -215, 400, 458, -85411, 122205]  */
  1. حذف فاصله از رشته string

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

String.prototype.trim = function(){return this.replace(/^s+|s+$/g, "");};  
  1. افزودن یک آرایه به آرایه دیگر

var array1 = [12 , "foo" , {name "Joe"} , -2458];

var array2 = ["Doe" , 555 , 100];
Array.prototype.push.apply(array1, array2);
/* array1 will be equal to  [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */
  1. تبدیل آبجکت arguments به یک آرایه

 آبجکت arguments از جهاتی به آرایه شبیه است، به عنوان مثال از ویژگی length برخوردار می‌باشد و شمارش خواص آن نیز به مانند آرایه‌ها از صفر شروع می‌شود اما از اعمالی مثل forEach یا map پشتیبانی نمی‌کند. به همین دلیل در بعضی شرایط نیاز داریم تا arguments را به آرایه تبدیل کنیم.

var argArray = Array.prototype.slice.call(arguments);
  1. تأیید تابع در صورتی که متغیر تنها به صورت عدد باشد

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

function isNumber(n){
    return !isNaN(parseFloat(n)) && isFinite(n);
}
  1. تأیید تابع در صورتی که متغیر به صورت یک آرایه باشد

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

function isArray(obj){
    return Object.prototype.toString.call(obj) === '[object Array]' ;
}
  1. دریافت کم‌ترین یا بیش‌ترین مقدار در یک آرایه

var  numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; 
var maxInNumbers = Math.max.apply(Math, numbers); 
var minInNumbers = Math.min.apply(Math, numbers);
  • پاک‌کردن اطلاعات یک آرایه

var myArray = [12 , 222 , 1000 ];  
myArray.length = 0; // myArray will be equal to [].
  1. استفاده از split به جای delete برای پاک‌کردن یک آیتم از آرایه

برای پاک‌کردن یک آیتم در آرایه از split به جای عمل delete استفاده کنید.

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

پس به جای کد زیر …

var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; 
items.length; // return 11 
delete items[3]; // return true 
items.length; // return 11 
/* items will be equal to [12, 548, "a", undefined × ۱, ۵۴۷۸, "foo", 8852, undefined × ۱, "Doe", 2154,       119]   */

از این روش استفاده کنید:

var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; 
items.length; // return 11 
items.splice(3,1) ; 
items.length; // return 10 
/* items will be equal to [12, 548, "a", 5478, "foo", 8852, undefined × ۱, "Doe", 2154,       119]   */

به خاطر داشته باشید که عمل delete تنها در حذف ویژگی‌های یک آبجکت کاربرد دارد.

  1. کوتاه‌کردن یک آرایه با استفاده از عمل length

این تکنیک نیز درست مانند مثال ۱۹ عمل می‌کند.

var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ];  
myArray.length = 4; // myArray will be equal to [12 , 222 , 1000 , 124].

علاوه بر این، اگر length را مقداری بیش‌تر از طول آرایه قرار دهید، آیتم‌های جدیدی با مقادیر undefined ساخته خواهد شد.

(عکس۲۰)

  1. استفاده منطقی از عبارات AND/OR

عبارات زیر عملکردی درست مانند عبارت ;()if (foo == 10) doSomething خواهند داشت:

var foo = 10;  
foo == 10 && doSomething(); // is the same thing as if (foo == 10) doSomething(); 
foo == 5 || doSomething(); // is the same thing as if (foo != 5) doSomething();

همچنین می‌تواند از عبارت OR برای تنظیم مقدار پیش‌فرض در یک متغیر استفاده کرد:

function doSomething(arg1){ 
    arg1 = arg1 || 10; // arg1 will have 10 as a default value if it’s not already set
}
  1. استفاده از تابع ()map برای ایجاد حلقه میان آیتم‌های یک آرایه

var squares = [1,2,3,4].map(function (val) {  
    return val * val;  
}); 
// squares will be equal to [1, 4, 9, 16]
  1. گرد‌کردن یک عدد

var num =2.443242342;
num = num.toFixed(4);  // num will be equal to 2.4432

توجه داشته باشید که تابع toFixed مقدار string را به خروجی می‌برد، نه یک عدد.

  1. نکات مربوط به مسائل Float

در زبان جاوا اسکریپ مقدار  ۰٫۳ === ۰٫۱ + ۰٫۲ برابر با false است.

این تناقض از نسخه ۶۴ بیت باینری در استاندارد IEEE 754 نشأت می‌گیرد که باعث شده تا تمام اعداد جاوا اسکریپ به صورت floating point ذخیره شوند.

برای حل این مشکل می‌توانید از توابع  ()toFixed و یا ()toPrecision استفاده کنید.

  1. بررسی خواص یک آبجکت هنگام استفاده از حلقه for-in

قطعه کد زیر از تکرار حلقه درون خواص prototypeآبجکت جلوگیری می‌کند:

for (var name in object) {  
    if (object.hasOwnProperty(name)) { 
        // do something with name                    
    }  
}
  1. استفاده از کاما در تعریف یک متغیر

var a = 0; 
var b = ( a++, 99 ); 
console.log(a);  // a will be equal to 1 
console.log(b);  // b is equal to 99
  1. ذخیره متغیرها برای اعمال محاسبات

در این قطعه کد، با استفاده از انتخاب‌گر jQuery، عناصر DOM را ذخیره می‌کنیم:

var navright = document.querySelector('#right'); 
var navleft = document.querySelector('#left'); 
var navup = document.querySelector('#up'); 
var navdown = document.querySelector('#down');
  1. تأیید متغیر قبل از ارسال به تابع isFinite

isFinite(0/0) ; // false 
isFinite("foo"); // false 
isFinite("10"); // true 
isFinite(10);   // true 
isFinite(undefined);  // false 
isFinite();   // false 
isFinite(null);  // true  !!! 
  1. از استفاده مقادیر منفی در index آرایه‌ها پرهیز کنید

توجه داشته باشید که مقادیر ارسال شده به تابع splice منفی نباشند. در غیر این صورت باعث بروز باگ نرم‌افزاری می‌شود.

var numbersArray = [1,2,3,4,5]; 
var from = numbersArray.indexOf("foo") ;  // from is equal to -1 
numbersArray.splice(from,2);    // will return [5]
  1. تکنیک سریال‌سازی (در هنگام استفاده از فایل JSON)

به عبارات مقایسه شده زیر توجه کنید:

var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; 
var stringFromPerson = JSON.stringify(person); 
/* stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}"   */ 
var personFromString = JSON.parse(stringFromPerson);  
/* personFromString is equal to person object  */
  1. از استفاده eval و عمل Function constructor پرهیز کنید.

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

var func1 = new Function(functionCode);
var func2 = eval(functionCode);
  1. از تابع with در کدنویسی استفاده نکنید.

متغیرها با استفاده از تابع ()with در دامنه سراسری (global scope) درج خواهند شد. از این رو، اگر متغیر دیگری نیز از نام مشابهی برخوردار باشد، ممکن است باعث بروز تناقض و ایجاد باگ نرم‌افزاری شود.

  1. از حلقه for-in برای آرایه‌ها استفاده نکنید.

به جای کد زیر …

var sum = 0;  
for (var i in arrayNumbers) {  
    sum += arrayNumbers[i];  
}

از این عبارت استفاده کنید:

var sum = 0;  
for (var i = 0, len = arrayNumbers.length; i < len; i++) {  
    sum += arrayNumbers[i];  
}

علاوه بر این، از آنجایی که تعاریف i و len اولین جمله در حلقه for هستند، پس تنها یک بار فراخوانی خواهند شد. به همین دلیل نیز قطعه کد بالا بسیار سریع‌تر از کد زیر عمل خواهد کرد:

for (var i = 0; i < arrayNumbers.length; i++)

همانطور که مشاهده می‌کنید، عبارت arrayNumbers.length در هربار تکرار حلقه، از نو محاسبه می‌شود.

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

  1. به جای رشته‌های string ، توابع را به setTimeout و setInterval ارسال کنید.

در صورت ارسال رشته به این دو تابع، رشته به مانند eval (در مثال ۳۲) ارزیابی خواهد شد. از این رو عملکردی کندتر را ارائه خواهد داد.

پس به جای قطعه کد زیر …

setInterval('doSomethingPeriodically()', 1000);  
setTimeout('doSomethingAfterFiveSeconds()', 5000);

از این روش استفاده کنید :

       setInterval(doSomethingPeriodically, 1000);  
setTimeout(doSomethingAfterFiveSeconds, 5000);
  1. به جای استفاده پی‌درپی از if/else از switch/case استفاده کنید.

زمانی که تعداد شروط if در برنامه میان ۲ تا ۱۰ عنوان باشد، بهتر است از switch/case استفاده کنید تا برنامه علاوه بر سرعت بالاتر، از نظم بیش‌تری برخوردار باشد.

  1. استفاده از switch/case با محدوده عددی

با استفاده از روش زیر، می‌توان از عبارت switch/case در محدوده عددی استفاده نمود.

function getCategory(age) {  
    var category = "";  
    switch (true) {  
        case isNaN(age):  
            category = "not an age";  
            break;  
        case (age >= 50):  
            category = "Old";  
            break;  
        case (age <= 20):  
            category = "Baby";  
            break;  
        default:  
            category = "Young";  
            break;  
    };  
    return category;  
}  
getCategory(5);  // will return "Baby"
  1. ساخت یک آبجکت و اختصاص آبجکت دیگر به عنوان ویژگی prototype در آن

function clone(object) {  
    function OneShotConstructor(){}; 
    OneShotConstructor.prototype= object;  
    return new OneShotConstructor(); 
} 
clone(Array).prototype ;  // []
  1. حذف کدهای HTML از یک متن

function escapeHTML(text) {  
    var replacements= {"<": "<", ">": ">","&": "&", """: """};                      
    return text.replace(/[<>&"]/g, function(character) {  
        return replacements[character];  
    }); 
}
  1. از استفاده try-catch در یک حلقه پرهیز کنید.

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

var object = ['foo', 'bar'], i;  
for (i = 0, len = object.length; i <len; i++) {  
    try {  
        // do something that throws an exception 
    }  
    catch (e) {   
        // handle exception  
    } 
}

از این روش استفاده کنید:

var object = ['foo', 'bar'], i;  
try { 
    for (i = 0, len = object.length; i <len; i++) {  
        // do something that throws an exception 
    } 
} 
catch (e) {   
    // handle exception  
} 
  1. استفاده از تابع setTimeout درون XMLHttpRequests

می‌توانید در صورت طولانی شدن زمان درخواست XHR از سرور (به عنوان مثال به دلیل مشکلات اینترنت)، از تابع setTimeout برای لغو درخواست استفاده کنید.

var xhr = new XMLHttpRequest (); 
xhr.onreadystatechange = function () {  
    if (this.readyState == 4) {  
        clearTimeout(timeout);  
        // do something with response data 
    }  
}  
var timeout = setTimeout( function () {  
    xhr.abort(); // call error callback  
}, ۶۰*۱۰۰۰ /* timeout after a minute */ ); 
xhr.open('GET', url, true);  

xhr.send();

البته به خاطر داشته باشید که در حالت کلی باید از ارسال درخواست‌های همگام (XHR (synchronous پرهیز کنید.

  1. سروکار زدن با خطای timeout در WebSocket

به طور کلی، سرور در زمانی که ارتباط Websocket ایجاد شده باشد و فعالیتی در مدت ۳۰ ثانیه انجام نشود، خطای timeout ارسال خواهد کرد. همچنین فایروال نیز ممکن است بعد از مشاهده عدم فعالیت شبکه، این خطا را ارسال کند.

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

(مقدار timerID را نسبت به نیاز خود تغییر دهید.)

        var timerID = 0; 
function keepAlive() { 
    var timeout = 15000;  
    if (webSocket.readyState == webSocket.OPEN) {  
        webSocket.send('');  
    }  
    timerId = setTimeout(keepAlive, timeout);  
}  
function cancelKeepAlive() {  
    if (timerId) {  
        cancelTimeout(timerId);  
    }  
}

تابع ()keepAlive باید در قسمت پایانی عبارت ()onOpen افزوده شود. همچنین ()cancelKeepAlice نیز در آخر عبارت ()onClose کاربرد خواهد داشت.

  1. عملگرهای اولیه بسیار سریع‌تر از عملگرهای تولیدشده در توابع هستند.

به عنوان مثال، به جای این قطعه کد …

var min = Math.min(a,b); 
A.push(v);

از این روش استفاده کنید:

var min = a < b ? a : b; 
A[A.length] = v;
  1. از ابزارهای زیباساز و همچنین خلاصه‌ساز کد غفلت نکنید.

قبل از اجرای پروژه حتما از ابزارهایی مثل JSLint برای مرتب‌سازی کد و همچنین JSMin برای خلاصه‌سازی استفاده کنید.

****

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

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

آخرین دیدگاه‌ها

    دوستان

    دسته‌ها