داستان شکل‌گیری زبان برنامه‌نویسی Julia

۵۷۹ بازديد

Julia هم چنان در ابتدای راه قرار دارد و در میان قدرتمندترین و پرنیازترین زبان‌های برنامه‌نویسی به حساب نمی‌آید، ولی اشاره به این دو نکته درک خوبی از محبوبیت روزافزون این زبان برنامه‌نویسی فعلاً گمنام به شما می‌دهد: اول از همه اینکه در همین ابتدای کار کاربران جولیا از مرز 200 هزار عدد گذشته‌اند و نکتهٔ دوم هم در نرخ رشد این زبان برنامه‌نویسی نهفته است؛ نرخ رشد این زبان برنامه‌نویسی در هر 9 ماه، چیزی در حدود ۲ برابر می‌شود.

در ادامه بخشی از مصاحبه‌ای که با ویرال شاه (Viral Shah)، یکی از مؤسسین Julia Computing در مورد تکامل و وضعیت سرعت رشد این زبان برنامه‌نویسی را با هم مرور می‌کنیم.

ما این پروژه را در سال 2009 آغاز کردیم که بعداً تبدیل به زبان برنامه‌نویسی جولیا شد. من در رشتهٔ علوم کامپیوتر تحصیل کردم. پایان‌نامهٔ من در دانشگاه کالیفرنیا بر روی محاسبات موازی متمرکز بود و بعدتر بخشی از محصول Star-P در شرکت Interactive Supercomputing Corp شد. زمانی که مایکروسافت این شرکت را خریداری کرد، من و جف بزانسون (Jeff Bezanson، دیگر مؤسس شرکت) کار خود را در مورد روش‌های جدید محاسبات موازی آغاز کردیم. به طور هم‌زمان هم من و استفان کارپینسکی (Stefan Karpinski، دیگر مؤسس شرکت) در مورد مشکلات مشابهی که در همکاری تحقیقاتی‌مان در UCSB داشتیم صحبت می‌کردیم. پس از آن، جف به آلن ادلمن (Alan Edelman، یکی دیگر از مؤسسین شرکت) که در پایان‌نامه‌ام همکاری داشت پیشنهاد پیوستن به ادامهٔ تحصیلات Ph.D در MIT را ارائه کرد و به این صورت ما 4 نفر یک‌جا جمع شدیم.

ویرال شاه در ادامهٔ داستان شکل‌گیری زبان برنامه‌نویسی جولیا این‌گونه می‌گوید که:

ما در سال 2009 موفق شدیم مشکل «دو زبانی» را حل کنیم. مهم‌ترین چیزی که مانع پیشرفت ما در محاسبات موازی می‌شد این حقیقت بود که کاربرانی که از زبان‌های برنامه‌نویسی سطح بالایی مانند R و Python استفاده می‌کنند باید بخش‌های اجرایی را در C یا ++C بازنویسی کنند. این مشکل به شدت باعث پایین آمدن کارایی می‌شد چرا که این کار همیشه موجب به وجود آمدن خطاهای انسانی، از بین رفتن وقت و تلاش، کاهش سرعت فروش و در نهایت عقب افتادن از رقبا می‌شد. این مشکل دو زبانی نه تنها در کار محققین، بلکه در کار دانشمندان، داده پژوهان، مهندسین و تحلیلگران مالی موانع زیادی ایجاد می‌کرد.

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

معرفی استراتژی‌هایی به منظور تست امنیت و عملکرد اپ‌های موبایل

۵۶۷ بازديد

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

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

کارایی اپلیکیشن‌های تلفن‌‌ همراه را می‌توان از طریق تعدادی از استراتژی‌های تست در فرآیندی تحت عنوان Performance Audit (بررسی عملکرد) مورد تجزیه و تحلیل قرار‌ داد به طوری که در این فرآیند عمداً ورودی یا ترافیک مخربی به اپلیکیشن هدایت می‌شود تا رفتارش در چنین شرایطی مورد بررسی قرار‌ گیرد. انواع مختلفی از روش‌ها و استراتژی‌های تست وجود دارند که برخی از مهم‌ترین آن‌ها عبارتند از:

Functional Testing 
این استراتژی تضمین می‌کند که تمام توابع، لینک‌ها و دکمه‌ها در اپلیکیشن همان‌گونه که انتظار می‌رود رفتار می‌کنند. همچنین از گزینه‌ها و لینک‌های مختلف بیشتری نیز استفاده می‌شود تا روند کلی برنامه تست و تأیید شود.

Interruption Testing
از آنجا که بسیاری از اپلیکیشن‌های موبایل نیاز به دسترسی به اینترنت دارند، لازم است تا رفتار آن‌ها در طول وقفه‌های مختلف حین اجرای اپلیکیشن بررسی شود (زمانی می‌توانیم برچسب خوب روی یک اپ موبایل بزنیم که بتواند تمامی این وقفه‌ها را بدون هیچ خطا، هشدار و یا اِکسپشنی هَندل کند.) که از آن جمله می‌توان به موارد زیر اشاره کرد:

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

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

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

Memory Leakage Testing
از آنجایی که دستگاه‌های تلفن همراه دارای محدودیت حافظه همچون حافظهٔ رُم، حافظهٔ داخلی، حافظهٔ خارجی و ... هستند، ضروری به نظر می‌رسد تا بررسی کنید ببینید که چه زمانی اپلیکیشن حافظه اضافی مصرف می‌کند (نیاز به توضیح نیست که اپلیکیشنی خوب است که بتواند با منابع کمتر به خوبی کار‌‌ کند و حافظه را به درستی مدیریت کند.)

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

Load Testing 
این تست نشان‌ می‌دهد که اپلیکیشن شما زمانی که در معرض استفادهٔ کاربران بسیار زیاد است، چه رفتاری از خود نشان خواهد داد. Load Testing (آزمون بار) بررسی می‌کند که در صورت بروز یک ترافیک سنگین از سوی کاربران، آیا اپ کِرَش می‌کند یا خیر (به عنوان مثال، اپلیکیشن در یک لحظه و به‌ صورت ناگهانی توسط هزار کاربر باز می‌شود تا توانایی اپلیکیشن برای هندل کردن چنین باری بررسی شود.)

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

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

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

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

HTML5 Robot: ابزاری به‌ منظور پیدا کردن تگ‌های سِمَنتیک مناسب برای اِلِمان‌­های صفحۀ وب

۵۶۳ بازديد

HTML5 Robot: ابزاری به‌ منظور پیدا کردن تگ‌های سِمَنتیک مناسب برای اِلِمان‌­های صفحۀ وب

 

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

استاندارد جدیدِ برنامه‌نویسی صفحات وب، HTML5، دنیای کدنویسی فرانت‌اند را متحول کرده است. این استاندارد جدید، المان‌های جدیدی را نیز برای طراحی صفحات وب همراه خود دارد که بسیاری از آن‌ها از لحاظ سِمنتیک، به مراتب دقیق‌تر از اِلِمان‌های ساده‌ای همچون div هستند.

اما چگونه بدانیم که برای مثال چه اِلِمان‌هایی برای Navigation Bar (لیست مهم‌‌ترین لینک‌های سایت و زیرمجموعۀ آن‌‌ها) و یا سایدبار صفحۀ وب ما بهترین گزینه هستند؟ در پاسخ به این سؤال، در ادامه سرویسی را معرفی خواهیم کرد که به صورت آنلاین این کار را انجام خواهد داد.

HTML5 Robot چیست؟
HTML5 Robot یک وب‌ اپلیکیشن رایگان است که به شما کمک می‌کند تا دریابید دقیقاً کدام تگ‌ها بهترین انتخاب برای کدنویسی صفحۀ اچ‌تی‌ام‌ال شما است. نحوۀ کار این ربات بدین‌ صورت است که ابتدا تگ‌های سمنتیک را بررسی کرده سپس به شما می‌گوید که کدام تگ‌ها در این موقعیت خاص برای پیج شما بهترین انتخاب هستند.

برای شروع، باید به یکسری سؤال بله/خیر پاسخ دهید تا نوع المان‌های صفحه‌ای که قصد ساخت آن را دارید، تعیین کنید (قبل از یافتن تگ مورد نیاز، به یکسری سؤال باید پاسخ دهید؛ بنابراین استفاده از آن زیاد سخت نیست. حتی دولوپرهای تازه‌‌کار نیز می‌‌توانند کار با ربات HTML5 را یاد گرفته و از آن لذت ببرند).

هر یک از این سؤالات به تعیین اینکه آن المانِ صفحه بخشی از محتوای اصلی سایت است یا یک افزونۀ فرعی یا یک چیز دیگر، کمک خواهد کرد. در نهایت، ربات HTML5 تمامی آخرین اِلِمان‌های اضافه‌ شده به استاندارد HTML5 را بررسی می‌کند و ایده‌ای متناسب با نیاز شما را ارائه خواهد داد.

در حال حاضر (۲۰۱۸)، این وب‌اپلیکیشن به زبان‌‌های انگلیسی و فرانسوی منتشر شده است اما این در حالی است که زبان‌های دیگری نیز ممکن است در آینده به آن افزوده شوند.

آموزش نصب Sublime Text روی گنو/لینوکس توزیع اوبونتو

۵۵۳ بازديد

آموزش نصب Sublime Text روی گنو/لینوکس توزیع اوبونتو

 

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

افزودن PPA سابلایم تکست ۳ روی اوبونتو
برای این منظور، ترمینال را باز کرده و دستور زیر را وارد نمایید:

$ sudo add-apt-repository -y ppa:webupd8team/sublime-text-3

لازم به ذکر است که دستور sudo سطح دسترسی شما را به سوپر ادمین تغییر می‌دهد؛ لذا باید با یوزری اقدام به نصب سابلایم نمایید که سطح دسترسی سوپر ادمین داشته باشد. سپس از طریق دستور زیر، اقدام به آپدیت ابزار پکیج مَنِجر سیستم‌عامل خود می‌کنیم:

$ sudo apt-get update

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

$ sudo apt-get install sublime-text-installer

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