رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

فناوری

  • نوشته‌
    8
  • دیدگاه
    0
  • مشاهده
    1,024

مشارکت‌کنندگان این وبلاگ

درباره این وبلاگ

نوشته‌های این وبلاگ

 

چند سايت ارزشمند جهانی

در حال حاضر يادگيري الکترونيکي مفهومي مهم در آموزش عالي است و دانشگاه هاي متنوعي ايجاد شده که نياز جهاني به آموزش
را نمايانگر می‌کند. با يادگيري الکترونيکي امكان «يادگيري بدون محدوديت زماني و مکانی و صرف هزينه» متناسب با نيازهاي بشر فراهم مي‌شود. در زیر به معرفی چند سایت ازشمند جهانی می‌پردازیم: سايت ايراني Motamem : محلي براي توسعه دانش و مهارت هاي فردي :‌ www.motamem.org سايت Lynda: وب سايتي که بيش از 4 ميليون نفر در آن مشغول گذارندن دوره هاي آموزشي هستند : www.lynda.com سايت Creative Live: با کلاس هاي رايگان آنلاين خلاقيت را در خود پرورش دهيد : www.creativelive.com سايت Mind Tools : محلي براي يادگيري مهارت هاي مديريتي : www.mindtools.com سايت Codecademy: در اين مدرسه آنلاين مي توانيد کار با java ،  Python ، PHP و... را ياد بگيريد : www.codecademy.com سايت edX: وب سايتي شامل دوره هاي آنلاين برنامه نويسي : www.edx.org سايت Platzi: با آموزش هاي اين وب سايت در بازاريابي، کدنويسي،توسعه اپليکيشن و طراحي حرفه اي شويد : www.platzi.com سايت Guides.co: منبعي کامل از نکته ها و توصيه ها در مورد هر موضوعي که فکرش را بکنيد : www.guides.co سايت Udacity: در دوره هاي رايگان آنلاين و با تدريس سباستين تران، کدنويسي را بياموزيد : www.udacity.com سايت Zidbits: محلي براي دسترسي به مقالات جالب و اخبار و حقايق عجيب : www.zidbits.com سايت TED Ed:مجموعه اي از آموزش هاي ارزشمند در موضوعات متنوع : www.ed.ted.com سايت iTunes U: دانشگاه هاي برتري مانند هاروارد و يل پادکست هاي کلاس هاي خود را در اينجا به اشتراک ميگذارند : www.apple.com/education سايت MIT open courseware: براي يادگيري مقدمات کدنويسي با دانشگاه MIT همراه شويد : ocw.mit.edu سايت WonderHowTo: اين سايت هر روز ويديوهاي جديدي براي يادگيري نحوه انجام کارهاي مختلف منتشر ميکند : www.wonderhowto.com سايت One Month: در مدت يک ماه يک مهارت جديد بياموزيد : www.onemonth.com سايت Duolingo: سايت آموزش زبان کاملا رايگان : www.duolingo.com سايت Squareknot: خلاقيت هم قابل يادگيري است : www.squareknot.com سايت Spreeder: تندخواني را در اين سايت بياموزيد : www.spreeder.com سايت Memrise: دانش لغات خود را بيشتر کنيد : www.memrise.com سايت HTML5Rocks: حرفه اي هاي گوگل آخرين به روزرساني ها، راهنمايي منابع و ساير اطلاعات مربوط به HTML5 را با شما به اشتراک ميگذارند : www.html5rocks.com سايت Wikipedia'Daily Article List: مقالات ويکيپديا را روزانه در ايميل خود دريافت کنيد : lists.wikimedia.org سايت DataMokey: در اين سايت SQL و Excel را بياموزيد : www.datamonkey.org سايت Saylor Academy: با دوره هاي آنلاين اين سايت ارايه مطلب و سخنراني را بياموزيد : www.saylor.org سايت Learni.st: دوره هاي حرفه اي با محتواي ويژه از عکاسي تا وبلاگ نويسي : www.crunchbase.com/organization/learnist سايت Academic Earth: دوره هاي پيشرفته دانشگاهي از سال 2009 تا کنون در اين سايت در دسترس هستند : academicearth.org
 

توکِن JWT چیست و چه کاربردی دارد؟

ما به شما پیشنهاد می‌کنیم که درباره‌ی انتقال ایمن اطلاعات توسط JSon Web Token بیشتر بدانید. یک وب‌توکت از نوع جی‌سان (JWT) یک استاندارد باز از (RFC7519) می‌باشد که که یک روش جمع‌ و جور و خود مختار را برای ایمنی اطلاعات بین ترنسفر اطلاعات در JSon را تعریف می‌کند. این اطلاعات به عنوان اطلاعات مورد اعتماد قابل تایید می‌باشند زیرا آن‌ها امضای دیجیتالی شده‌اند. تراکنش‌های مربوط به  JWT را می‌توان با استفاده از یک کلید مخفی عمومی/خصوصی امضا کرد. ساختار وب‌توکن جی‌سان چکونه است؟ Header Payload Signature هدر یا عنوان (Header) معمولاً شامل دو قسمت است: نوع توکن، که JWT است، و الگوریتم هَش کننده که استفاده می‌شود. مانند الگوریتم‌های HMAC ،SHA256 و یا RSA. برای مثال: { "alg": "HS256", "typ": "JWT" } سپس، این جی‌سان که از نوع Base64-URL کد نگاری شده است قسمت اول JWT را تشکیل می‌دهد.   بخش دوم Payload قسمت دوم توکن ها، payload است که اظهارات را در برمی‌گیرد. اظهارات ثبت شده (Registered claims): این‌ها مجموعه‌ای از اظهارات از پیش تعریف شده است که اجباری در به کار گیری آن‌ها نیست، اما توصیه می‌شود تا مجموعه‌ی مفیدی را ارائه دهد. اظهارات عمومی(Public claims): اینها می‌توانند توسط کسانی که از JWT استفاده می‌کنند تعریف کنند. اما برای جلوگیری از برخورد بهتر است تعریف شوند. اظهارات خصوصی(Private claims): این اظهارات سفارشی ایجاد شده برای به اشتراک گذاشتن اطلاعات بین طرفین است که توافق بر روی استفاده از آن‌ها می‌باشد نه اظهارات ثبت شده یا عمومی. یک مثال از payload به صورت زیر نشان داده شده است: { "sub": "1234567890", "name": "John Doe", "admin": true } امضاء برای ایجاد بخش امضاء شما باید هدر کُد شده را جهت امضا شدن دریافت کنید که شامل payload رمزینه شده، یک کد خاص و الگوریتم مشخص شده‌ای می‌باشد. HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) سپس، شما باید همه‌ی این‌ها را باهم دیگر ترکیب کنید. نمونه‌ی زیر یک JWT را نشان می‌دهد که حاوی هدر‌ قبلی و payload رمز شده است که در نهایت آن با یک رمز ویژه امضاء شده است. اگر شما می‌خواهید تا با JWT بیبشتر آشنا شوید و این مفاهیم را در عمل اجرا کنید، می‌توانید از jwt.io استفاده کنید.

آشنایی با CDN

«بخش اول» CDN مخفف Content Delivery Network یک شبکه‌ی تحویل محتوا است که به گروه توزیع شده‌ی سرورها اشاره دارد که با یکدیگر همکاری می‌کنند تا محتوای اینترنت را به صورت سریعی ارائه دهند. CDN امکان انتقال سریع بسته‌های مورد نیاز برای بارگذاری محتوای اینترنتی از جمله صفحات HTML، فایلهای جاوا اسکریپت، شیوه نامهها، تصاویر و فیلمها را فراهم می‌کند. محبوبیت سرویس‌های CDN همچنان در حال رشد است و امروزه اکثر ترافیک وب سایتهای بزرگ چون Facebook، Netflix و Amazon از طریق CDN‌ها جا به جا می‌شوند.  CDNهایی که به درستی پیکربندی شده‌ اند همچنین ممکن است به حفاظت از وب سایتها در برابر برخی از حملات مخرب رایج مانند حملات انکار سرویس توزیع شده (DDOS) کمک کنند. آیا CDN مشابه میزبان وب است؟ در حالی که یک CDN محتوا را میزبانی نمی‌کند و نمی‌تواند جایگزینی برای نیاز به میزبانی وب مناسب باشد، محتوای cache در لبه‌ی شبکه کمک می‌کند که عملکرد وب سایت را بهبود بخشد. بسیاری از وب سایت‌ها تلاش می‌کنند که نیازهای عملکرد آن‌ها توسط خدمات میزبانی سنتی برآورده شود، به همین دلیل آن‌ها CDNها را انتخاب می‌کنند. با استفاده از ذخیره سازی برای کاهش پهنای باند میزبانی و کمک به جلوگیری از وقفه در سرویس و بهبود امنیت، CDNها انتخاب محبوبی برای از بین بردن برخی از نقاط بحرانی میزبانی سنتی وب هستند. مزایای استفاده از CDN‌ چیست؟ اگرچه مزایای استفاده از CDN بسته به اندازه و نیازهای یک مالکیت اینترنتی متفاوت است، مزایای اولیه برای اکثر کاربران را میتوان به 4 بخش مختلف تقسیم کرد:  بهبود زمان بارگذاری وب سایت: با توزیع محتوای نزدیک به بازدید کنندگان وب سایت با استفاده از سرور CDN نزدیک (در میان دیگر بهینه سازیها)، بازدید کنندگان بارگذاری سریع‌تر صفحه را تجربه می‌کنند. هنگامی که بازدید کنندگان بیش‌تر مایل به کلیک کردن در یک سایت با بارگیری کُند هستند، یک CDN میتواند سبب کاهش نرخ جست و جو و افزایش زمان سپری شده توسط افراد در سایت شود. به عبارت دیگر، یک وب سایت سریع‌تر به این معنی است که بازدید کنندگان بیش‌تر در آن جا ماندگار شوند. کاهش هزینه‌های پهنای باند: هزینه‌ی مصرف پهنای باند برای میزبانی وب سایت هزینه‌ی اصلی برای وب سایت‌ها است. از طریق ذخیره سازی و بهینه سازی‌های دیگر، CDNها قادر به کاهش میزان داده‌هایی هستند که یک سرور مبدا باید ارائه دهد. بنابراین هزینه‌های میزبانی وب برای صاحبان وب سایت‌ها کاهش می‌یابد. افزایش میزان دسترسی و افزونگی: مقدار زیاد ترافیک و یا خرابیهای سخت افزاری می‌تواند کارکرد وب سایت را مختل سازد. به لطف ساختار توزیع شده، یک CDN می‌تواند ترافیک بیشتری را اداره کند و از خرابی و شکست سخت افزاری بهتر از بسیاری از سرورهای مبدا جلوگیری کند. بهبود امنیت وب سایت: CDN می‌تواند امنیت را با تضمین کاهش DDoS، بهبود گواهی‌های امنیتی و سایر بهینه سازی‌ها بهبود بخشد. CDN چگونه کار می‌کند؟ هسته‌ی یک CDN شبکه‌ای از سرورها است که با هدف ارائه‌ی محتوا به صورت سریع، ارزان، قابل اعتماد و ایمن است. به منظور بهبود سرعت و قابلیت اتصال CDN، سرورها را در نقاط مبادله‌ی بین شبکه‌های مختلف قرار می‌دهد. این نقاط مبادله‌‌ی اینترنت (IXP, Internet Exchange Point) مکان‌های اصلی هستند که سرویس دهندگان مختلف اینترنت برای دسترسی به ترافیک ناشی از شبکه‌های مختلف خود به یکدیگر دسترسی دارند. با اتصال به این مکان‌های با سرعت و قدرت اتصال بالا، ارائه دهنده‌ی CDN می‌تواند هزینه‌ها و زمان حمل و نقل را در تحویل داده‌های با سرعت بالا کاهش دهد. علاوه بر قرار دادن سرورها در IXPها، یک CDN برخی از بهینه سازی‌ها را در انتقال داده‌های استاندارد بین سرویس گیرنده و سرور انجام می‌دهد. CDNها مراکز داده را در مکان‌های استراتژیک و با افزایش امنیت در سراسر جهان قرار داده و به گونه‌ای طراحی شده اند تا انواع مختلف خرابی‌ها و جابجایی ترافیک اینترنت را مدیریت کنند. تاخیر -  CDN چگونه زمان بارگذاری وب سایت را بهبود می‌بخشد؟ هنگام بارگذاری محتوا، با کاهش سرعت وب سایت تعداد کاربران نیز کم‌تر می‌شود. سرویس‌های CDN می‌توانند با روش‌های زیر به کاهش زمان بارگذاری کمک کنند: ماهیت توزیع شده‌ی CDN به صورت جهانی به معنای کاهش فاصله‌ی بین کاربران و منابع وب سایت است. به جای اجبار برای اتصال مستیم به سرور مبدا وب سایت، CDN به کاربران اجازه می‌دهد تا به یک مرکز داده‌ی نزدیک‌تر از لحاظ جغرافیایی متصل شوند. زمان اتصال به سرور کم‌تر، به معنی خدمات سریع‌تر است. بهینه سازی سخت افزاری و نرم افزاری مانند متعادل سازی کارآمد بار و درایوهای سخت حالت جامد (Solid-state hard drives) می‌توانند به کاربران کمک کنند تا داده‌ها را سریع‌تر دریافت کنند. CDNها میتوانند میزان داده‌هایی را که با کاهش اندازه‌ی فایل‌ها با استفاده از تکنیک‌هایی مانند کمینه سازی و فشرده سازی فایل انتقال مییابند، کاهش دهند. اندازه‌ی فایلهای کوچک‌تر به معنی زمان بارگذاری سریع‌تر است. CDNها همچنین می‌توانند سایت‌هایی را که از گواهینامه‌های TLS/SSL استفاده می‌کنند با بهینه سازی استفاده‌ی مجدد اتصال‌ها و فعال سازی TLS false start (با کاهش زمان Handshaking به یک RTT)، سرعت بخشند. قابلیت اطمینان و افزونگی - آیا CDN وب سایت را همیشه آنلاین نگه می‌دارد؟ Uptime مولفه‌ی مهمی برای هر کسی است که دارای مالکیت اینترنتی دارد. خرابی‌های سخت افزاری و تکانهای ترافیکی، به عنوان یک نتیجه از حملات مخرب و یا فقط افزایش محبوبیت، پتانسیل پایین آوردن کارایی وب سرور و جلوگیری از دسترسی کاربران به سایت یا سرویس را دارند. CDN متعادل داراي چندين ويژگي است که باعث کمینه شدن مدت از کار افتادگی می‌شود: متعادل سازی بار با توزیع ترافیک شبکه به طور مساوی بین سرورهای مختلف انجام می‌شود و باعث می‌شود سرعت جابجایی ترافیک افزایش یابد. شکست هوشمند (Intelligent failover) خدمات بدون وقفه را فراهم می‌کند حتی اگر یک یا چند سرور CDN به دلیل خرابی سخت افزاری غیر فعال شوند؛ Failover می‌تواند مجددا ترافیک را به سرورهای عملیاتی دیگر توزیع کند. در صورتی که کل یک مرکز داده دارای مشکلات فنی باشد، مسیریابی Anycast (یک به چند) ترافیک را به یک مرکز داده‌ی دسترسی دیگر منتقل می‌کند و اطمینان حاصل می‌کند که هیچ یک از کاربران دسترسی به وب سایت را از دست نمی‌دهند. امنیت داده‌ها - چگونه CDN از داده‌ها محافظت می‌کند؟ امنیت اطلاعات بخشی جدایی ناپذیر از CDN است. CDN می‌تواند یک سایت را با گواهینامههای TLS/SSL به روز امن نگه دارد که استانداردهای بالا را برای احراز هویت، رمزنگاری و یکپارچگی تضمین می‌کند. برای اطلاعات بیشتر در این زمینه، نگرانی‌های امنیتی در مورد CDNها را بررسی کنید و تحقیق کنید چه کارهایی می‌تواند برای ارائه‌ی ایمن محتوا انجام شود. همچنین در مورد امنیت در SSL/TLS نیز اطلاعات بیشتری کسب کنید. هزینه‌ی پهنای باند - CDN چگونه هزینه‌های پهنای باند را کاهش می‌دهد؟ هر بار که سرور اصلی به درخواست پاسخ می‌دهد، پهنای باند مصرف می‌شود. خواهیم دید که چگونه یک CDN هزینه‌ی درخواست‌های مبدا را کاهش می‌دهد. (به زودی در ادامه با جزییات بیشتر توضیح خواهیم داد)  مقاله‌ی بعدی در رابطه با کارایی CDNها خواهد بود، با ما همراه باشید.

الهه انصاری

الهه انصاری

 

نحوه‌ی فشرده سازی داده‌ها به میزان ۹۰٪ درصد

آیا فایل‌های شما نیاز قابل توجهی به صرفه‌جویی در حافظه‌ی سرور دارند؟ در این مقاله ما به شما خواهیم گفت که چگونه توسط چه الگوریتم‌هایی می‌توانید اطلاعات خود را تا ۹۰٪ فشرده سازی کنید. الگوریتم‌های فشرده سازی داده‌ها (دو نوع اصلی فشرده‌سازی داده وجود دارد) فشرده‌سازی بی‌اتلاف اطلاعات (کاملاً برگشت پذیر) فشرده‌سازی با اتلاف (بخش کوچکی از داده‌ها از دست می‌روند و بازسازی کامل آنها امکان پذیر نیست) اولین نوع فشرده سازی زمانی مورد استفاده قرار می‌گیرد که اطمینان حاصل شود داده‌های فشرده شده بازیابی شده و بدون تحریف باشند. این نوع فشرده سازی هیچ کدام از داده‌های اصلی را حذف نمی‌کند و با کاسته شدن حجم آن مصرف فضای کمی برای فشرده‌سازی به دست می‌آورد. اجازه دهید بعضی از رایج‌ترین الگوریتم‌های فشرده‌سازی از نوع فشرده‌سازی بی‌اتلاف یا همان (lossless)  را در نظر بگیریم: تکنیک کُدگذاری هافمَن (Huffman) — این امر مستلزم جایگزینی کد یکسانی برای نمادهایی با کدهای نامحدود است، بسته به تکرار وقوع یک نماد در متن هستند می‌باشد. در کد گذاری استاندارد هافمن، فرض شده‌است که هر نماد در مجموعه‌ای که کدها از آن استخراج می‌شوند، ارزشی یکسان با بقیه دارد: کد کلمه‌ای که طول آن N است ارزشی برابر N خواهد داشت، مهم نیست که چند رقم آن ۱ و چند رقم آن ۰ است. وقتی با این فرض کار می کنیم، کم کردن هزینهٔ کلی پیام، با کم کردن تعداد رقم‌های کل ۲ چیز یکسانند. کد هافمن با ارزش حرفی متفاوت به نحوی عمومیت یافته که این فرض دیگر صحیح نیست: حروف الفبای کدگذاری ممکن است طول‌های غیر همسانی داشته باشند، به خاطر خصوصیت‌های واسطهٔ انتقال. مثالی بر این ادعا، الفبای کد گذاری کد مورس است، که در آن فرستادن یک 'خط تیره' بیشتر از فرستادن یک 'نقطه' طول می‌کشد، پس ارزش خط تیره در زمان انتقال بالاتر است. درست است که هدف هنوز کم کردن میانگین طول وزنی کد است اما دیگر کم کردن تعداد نمادهای بکار برده شده در پیام، به تنهایی کافی نیست. هیچ الگوریتمی شناخته نشده است که این را به همان روش و همان کارآیی کد قراردادی هافمن انجام دهد. تکنیک رمزگذاری شانون-فانو (Shannon–Fano) — این یک پیشوند است، که به عنوان یک الگوریتم کُد گذاری یکتواخت است. این تکنیک فشرده‌سازی را بر اساس احتمالات نشان می‌دهد. مانند الگوریتم هافمَن، این تکنیک بر روی افزونگی پیام است. در رمزگذاری شانون-فانو، نمادها به ترتیب احتمال از زیاد به کم مرتب شده‌اند و پس از آن به دو مجموعه که احتمال کلشان تا حد ممکن به هم نزدیک است تقسیم می‌شوند. سپس اولین رقم رمز همهٔ نمادها به آن‌ها اختصاص داده می‌شود؛ نمادها در مجموعهٔ اول "۰" و در مجموعهٔ دوم "۱" می‌گیرند. تا زمانی که مجموعه‌ای با بیش از یک عضو باقی بماند، همین فرایند برای تعیین ارقام متوالی رمزهایشان، روی آن‌ها تکرار می‌شود. وقتی یک مجموعه به یک نماد کاهش پیدا کند بدان معناست که رمز آن نماد کامل است و پیشوند هیچ رمزِ نماد دیگری را تشکیل نمی‌دهد. این الگوریتم کدگذاری‌های با طول متغیر نسبتاً کارامدی تولید می‌کند. تکنیک طول اجرا (Run-length) — این تکنیک به جای مجموعه‌ای از نماد‌های مکرر با کد نماد و تعداد تکرار اشاره داد. یک شکل ساده از فشرده‌سازی داده‌ها است که در آن داده‌های یکسان پشت سر هم به صورت مقادیر تکی و تعداد تکرارشان ذخیره می‌شوند. اگرچه آسان است و می‌توان به راحتی آن را درک کرد اما هنوز کارآیی چندانی ندارد. تکنیک ال زد دابلیو (Lempel–Ziv–Welch) — الگوریتم‌های فشرده‌سازی این گروه (LZ78، LZ77، و LZW) در ایده‌ی جستجو برای متن مشترک هستند. الگوریتم کاراکترها را متراکم کرده و در واژه نامه به جای کاراکتر، رشته‌های متراکم شده را قرار می‌دهد تا اینکه به رشته‌ای برسد که در واژه نامه قرار دارد. الگوریتم ساخت کدهای نابرابر که توسط هافمَن پیشنهاد شده است یکی از مهم‌ترین دستاوردهای تئوری اطلاعات از دیدگاه‌های نظری و کاربردی است. بهتر است کدهای باینری C = {c1, ..., cm} با با طول های {l1,.. ,IM} برای پیام‌های مورد نظر بهینه باشد. در صورتی که شرط به این گونه باشد pi < pj, then li > lj طول مقدار در قالب lM = maxm1m از نظر کُد‌نویسی بهینه شده است دو کُد lM = maxmlm که طول آن است در سمبُل آخر متفاوت خواهد بود. اگر کد C دارای شرایط مطلوبی باشد، آنگاه C به عنوان کُد X مطلوب خواهد بود. ورودی: اندازه‌ی الفبای M خروجی: درخت دودوییِ کد هافمَن مقداردهی اولیه: تعداد گِره‌ (نود‌های) پردازش شده  M0=M می‌باشد. با اجرای شرط While M0>1 do مراحل بعدی به صورت زیر باید انجام شوند: یافتن دو گِره (نود) با کمترین احتمال در صف از نودهای پردازش شده حذف نودها را از صف پردازش تولید یک نود جدید با دو گرده انتخاب شده به عنوان فرزند. به این ترتیب که، وزن نودها برابر است با مجموع نودهای فرزند. افزودن گِره (نود) جدید به صف. لینک کردن نودهای جدید با لبه‌های نودهای حذف شده М0 <– М <– 1. اگر بیشتر از یک نود در صف وجود داشته باشد، مراحل ۲  تا ۵ را تکرار کنید.
 

مهندسی ویژگی‌ها

مهندسی ویژگی‌ها (FE) بخش بزرگی از یادگیری ماشین (ML) و یادگیری عمیق است. مقاله فوق را برای آشنایی بیشتر با اینکه ویژگی مهندسی چگونه به توسعه‌دهنگان در کار با داده کمک می‌کند مطالعه کنید. داده‌ها بدون توجه به اندازه و مقایس کسب‌و‌کار‌های مُدرن، شرکت‌ها و سازمان‌ها به عنوان دارایی از نوع طبقه‌-اولِ آن‌ها تبدیل شده است. هر سیستم هوشمند، صرف نظر از پیچیدگی آن، باید بر اساس داده باشد.  در قلب هر سیستم هوشمند، ما یک یا چند الگوریتم بینش داده‌ای را بر اساس  مجموعه‌ای از داده‌های یادگیری، مانند یادگیری ماشین، یادگیری عمیق و یا روش‌های آماری استفاده می‌کنیم که این اطلاعات را برای جمع آوری دانش و ارائه بینش هوشمند بیش از یک دوره زمانی نیاز داریم. الگوریتم‌ها خودشان کاملاً مجزا کار می‌کنند و نمی‌توانند خارج از جعبه داده‌های خام که برای آن‌ها مشخص شده است کار کنند. هر سیستم بینش اطلاعاتی هوشمند، اساساً شامل یک خط یا نقطه‌ی سر-به-سر با استفاده از داده‌های خام برای استفاده از تکنیک‌های پردازش داده‌ها جهت گردآوری، پردازش و خواص ویژگی‌های مهندسی از این داده‌ها است. ما معمولاً تکنیک‌هایی مانند مُدل‌های آماری یا مدل‌های یادگیری ماشین را برای مدل سازی بر روی این ویژگی‌ها استفاده می‌کنیم و در صورت لزوم برای استفاده آن‌ها در آینده بر اساس مشکلاتی که می‌توان به آن‌ها اشاره کرد به صورت دستی حل می‌شوند. به طور معمول یک سامانه‌ی یادگیری ماشین مبتنی بر «فرایندهای استاندارد صنعت متقابل برای داده‌کاوی» در زیر نشان داده شده است. به دست آوردن داده‌های خام و ساختن مُدل بر روی این داده‌ها به طور مستقیم می‌تواند به عنوان عملی بی‌مورد تلقی شود، زیر ما نتایج و کارایی مورد نظر را نمی‌گیریم و همچنین الگوریتم‌ها خود به طور خودکار ویژگی معنی دار از داده‌های خامِ ساده را به صورت خودکار نمایش نمی‌دهند. جنبه‌ی تهیه داد‌ها در شکل بالا ذکر شده است، جایی که ما متودولوژی‌های مختلفی را برای استخراج ویژگی‌ها یا ویژگی‌های معنی دار از داده‌های خامِ پس از تجزیه و تحلیل مورد نیاز از پیش رونده و پیش پردازش برخورد می‌کنیم. مهندسی ویژگی یک هنر و همچنین یک عِلم است و به همین دلیل دانشمندانِ داده‌ها اغلب ۷۰٪ از زمان خود را در مرحله‌ آماده سازی داده‌ها قبل از فازِ مُدل سازی صرف می‌کنند. این به ما درکِ (بینشِ) این را می‌دهد که چرا ویژگی مهندسی یک فرایند تبدیل اطلاعات (داده‌ها) به یک ویژگی به عنوان ورودی برای مُدلهای یادگیری ماشین عمل می‌کند. یعنی آن ویژگی با کیفیتِ خوب در بهبود عملکرد کلی و دقت مُدل کمک می‌کند.  ویژگی ها نیز به سوالات اصلی و اساسی بسیار وابسته هستند. بنابراین، حتی ممکن است کار یادگیری ماشین در سناریوهای متفاوت مانند طبقه‌بندی رویدادهای IoT به رفتار‌های عادی و غیر طبیعی یا طبقه‌بندی احساسات مشتری، ویژگی‌های استخراج شده در هر سناریو بسیار متفاوت از یکدیگر عمل کند. ویژگی‌ها چه چیز‌هایی هستند؟ یک ویژگی، به طور معمول، یک نمایش خاص در رأس داده‌های خام است که خصوصیات قابل اندازه‌گیری آن به صورت منحصربفرد (خصوصی) است. که معمولاً در یک ستون از یک مجموعه داده نقش بسته اند. با توجه به یک مجموعه‌ای از داده‌های دو بعدی، هر مشاهده توسط یک ردیف و هر ویژگی توسط یک ستون نشان داده می‌شود که یک مقدار خاص برای مشاهده دارد. بنابراین، مانند مثال در شکل بالا، هر سطر به طور خاص یک ویژگی از بُردار را نشان می‌دهد و همه آن‌ها مجموعه‌ای از ویژگی‌ها در همه مشاهدات به شمار می‌آیند، همچنین یک ماتریس ویژگی دو بُعدی است، که به عنوان یک مجموعه‌ای از ویژگی‌ها شناخته می‌شود. این شبیه به قاب داده‌ها یا صفحات گسترده‌ای است که داده های دو بعدی را نشان می‌دهند.  به طور معمول، الگوریتم‌های یادگیری ماشین با این ماتریس‌های عددی یا تانسورها کار می‌کنند. از این رو بیشترین تکنیک‌های ویژگی‌های مهندسی تبدیل داده‌های خام به  عنوان نماینده‌ای از داده‌هایی که می‌توانند توسط این الگوریتم ها قابل فهم و درک باشند را انجام می‌دهد. ویژگی‌ها می‌توانند از دو نوع اصلی بر اساس مجموعه داده‌ها باشند. ویژگی‌های خام (خالص) ذاتی مستقیماً از مجموعه داده‌ها و بدون دستکاری اطلاعات و یا مهندسی اضافی به دست می‌آیند. ویژگی‌های مشتق شده معمولاً از ویژگی‌های مهندسی به دست می‌آیند، جایی که ویژگی‌های داده‌های موجود را از آن استخراج می‌کنیم. مهندسی ویژگی‌ها داده‌های عددی معمولاً داده‌ها را به شکل ارزش‌های اسکالِر نشان می‌دهند که مشاهدات، ضبط داده‌ها یا اندازه گیری آن‌ها را نشان می‌دهد. منظور ما در اینجا داده‌های عددی به عنوان داده‌های مستمر است نه گُسَسته که به طور معمول به عنوان اطلاعات طبقه بندی شده ارائه می‌شوند. داده‌های عددی می‌توانند به عنوان یک بُردار از مقادیر نشان داده شود که هر مقدار یا موجودیت بُردار می‌تواند خود یک ویژگی خاص را نشان دهد. عدد صحیح (Integer) و شناور (Float) رایج ترین و به طور گسترده‌ای از انواع داده‌های عددی برای داده‌های عددی مُداوم استفاده می‌شوند. حتی داده های عددی می‌توانند به طور مستقیم به مُدل های یاد گیری ماشین انتقال یابند. شما برای هر یک از سِناریوهای مربوطه نیاز به ویژگی‌هایِ مهندسی دارید که مربوط به مشکلات و حوزه‌ی مرتبط با آن‌ها برای ساخت یک مُدل‌ است. از این رو، نیاز به مهندسی ویژگی‌ها هنوز هم در جای خود باقی است.
 

اینترنت اشیاء : چرا ابزار ها مهم هستند؟

تحول توسط اینترنت اشیاء (IoT)، این واضح است که افزوده شدن به تعداد دستگاه های متصل به این فناوری با سرعت چشمگیری در حال افزایش است. همه جا در اطراف زندگی روزمره ما، استفاده بیشترو بیشتری را از آن ها داریم. علاوه بر این که به آن ها متصل هستیم، دستگاه های با صفحه لمسی بیشتری به رابط گرافیکی مدرن مجهز می شوند. در این میان در اطراف ما به راحتی دیده می شود که کاربران زیادی نرم افزار های خود را توسط کیوت برای این دستگاه ها می سازند. برای رسیدن به شماری از این اعداد و ارقام توسط گروه Gartner که تخمین زده است تا سال ۲۰۲۰ رشد دستگاه های متصل به این فناوری حدود ۲۰٬۷ میلیارد دستگاه خواهد بود. (حتی پیش بینی شده است که بالاتر از آن یعنی حدود ۳۰ میلیارد دستگاه) مجهز به فناوری مرتبط خواهد شد که تحت سی پلاس پلاس و کیوت توسعه پیدا می کنند. نه تنها شمار زیادی از دستگاه ها در حال رشد هستند، اما در این میان پیچیدگی و تعداد نرم افزار ها نیز در حال رشد هستند. برای مثال، امروزه خودرو ها می‌توانند بیش از ۱۰۰ میلیون خط کد را در اختیار داشته باشند، انتظار می رود این روند به سه برابر در آینده به عنوان قابلیت های نرم افزاری در خودرو ها افزایش یابد. خودرو ها بخش پیچیده ای از این فرآیند محسوب می شوند، اما حتی برای ساده ترین اتصال به دستگاه ها نیاز به نرم افزار های زیادی می باشد که قادر باشند الزامات را برای اتصال به طور امن با قابلیت های مفید را با رشد چشم گیری در اختیار مصرف کنندگان قرار دهند.   در اینجا بر روی یک نمودار خطی چگونگی دستگاه های در حال رشد را تخمین می‌زنیم:   در داخل این دستگاه ها چه چیزی وجود دارد؟ چه نوع نرم افزاری دستگاه های متصل شده را مدیریت می کند؟ چه نوع مهارت هایی برای ساخت اینها نیاز است؟ اینگونه تخمین زده شده است که تا به امروز 95% از دستگاه های تعبیه شده (Embedded) اِمبد ها توسط زبان برنامه نویسی C و ++C  ساخته شده اند، و اینگونه پیشبینی شده است که این فرآیند در آینده به طور قابل توجهی تغییر نخواهد یافت. سپس، از سوی دیگر با توجه به مطالعاتی که در جهان بر روی ۴.۴ میلیون توسع دهنده C++  و ۱.۹ میلیون توسعه دهنده زبان C در سال ۲۰۱۵  صورت گرفته است. یک مطالعه بر اساس نتایج سال ۲۰۰۱ توسط IDC، نشان می دهد که تعداد توسعه دهندگان زبان ++C در آن زمان حدود ۳ میلیون نفر بوده است. معنی این نتایج اینگونه است که تعداد توسعه دهندگان ++C به طور پیوسته در حال رشد است که حدود 3% در سال بوده و انتظار می روند با همین روند به جمع توسعه دهندگان در سال های آتی افزوده شود.   بنابراین، یک تجسم کلی از رشد توسعه دهندگان ++C در نمودار زیر آورده شده است:     بر اساس برآورده های تعداد دستگاه های تخمین زده شده، که اکثر آن ها باید توسط C و ++C انجام شده باشند، و در حال حاضر با سرعت بسیار زیادی همین روند رو به رشد می باشد و انتظار می رود این روند با سرعت بسیار بیشتری ادامه یابد. با توجه به افزایش پیچیدگی در عملکرد، تعداد نرم افزار های موجود در حال رشد است. اگرچه برخی از دستگاه های جدید از عملکرد بسیار ساده ای برخوردار خواهند بود، اما دستگاه های بسیار بیشتری با پیچیدگی های بیشتری مورد نیاز مصرف کنندگان است. در حال حاضر، این مقایسه بین دو گرایش معمای جالبی را برای ما فراهم می کند که توجه به آن جالب است: چطور میلیون ها نفر از توسعه دهندگان سی‌پلاس‌پلاس نیازمندی ها را برای ساخت و متصل کردن میلیاردها دستگاه به یکدیگر مطابقت می دهند. با قرار دادن این دو نمودار در کنار هم، می توانیم به وضوح نمودار پارادوکس را تجسم کرده و به یک (راه حل) ممکن برسیم: بنابراین چگونه بر آن افزوده می شود؟ آیا ما انتظار این را خواهیم داشت که در سال ۲۰۲۰ یک توسعه دهنده سی‌پلاس‌پلاس  ۲۰ برابر بیشتر از آن چیزی را بنویسد که در ۱ دهه قبل نوشته است؟ این راه حل کارساز نخواهد بود. حتی اگر همه توسعه دهندگان ++C تمرکزشان بر روی دستگاه ها باشد! لذا هنوز توسعه دهنده ++C به اندازه کافی موجود نیست. توسعه دهندگان  C++ به راحتی می توانند آموزش های حرفه ای را ببینند و سال هایی را برای دوره های خود در نظر بگیرند تا به درجه استادی برسند. بنابراین، چیزی که باید انجام شود دو چیز است: فعال کردن توسعه دهندگان C++ در این زمینه ها و همچنین آموزش برای برنامه نویسان غیر ++C برای ساخت دستگاه ها. بنابراین، برای تعبیه شدن نیاز ها باید با شرایط جدیدتری سازگار شد. تنها راه برای مقابله با رشد این است که ابزار های خوبی برای دستگاه ها در اختیار قرار گیرد. پیش بینی می شود با ابزار هایی که Qt قرار است فراهم کند رویکرد قابل قبولی برای ساخت دستگاه ها فراهم آورد. زیرا شعار کیوت این است "کد کمتر،سازندگی بیشتر، تولید و استقرار در همه جا" این شعار تابه امروز پیش بینی شده بود. کیوت دارای سابقه ی دستگاه های اِمبد، دسکتاپ و موبایل و ساخت و توسعه اپلیکیشن های کاربردی با روش بهتر و ساده تر در تمامی پلتفرم ها می باشد. این احتمال وجود دارد که حتی استفاده از قابلیت های نرم افزاری کافی نیست. همچنین لازم است برای افزایش بهره وری از برنامه نویسان خبره  ++C جهت توسعه بهتر استفاده شود.با استفاده از Qt رابط های برنامه نویسی به طور گسترده و مشهوری مستند سازی شده اند. بنابراین توسعه دهندگان ++C سازنده تر و مفید تر از قبل هستند. همچنین Qt زبان اعلانی با نام QML را جهت سهولت کار در طراحی فراهم کرده است، و رشد اینکه تعداد کثیری از مردم که می خواهند فراتر از توسعه دهندگان سی پلاس پلاس در توسعه دستگاه ها قدم بگذارند ایجاب شده است. در حال حاضر میلیون ها توسعه دهنده با Qt در جهان آشنا هستند که روز به روز برای به دست گرفتن آن میکوشند. با وجود زبان QML، مشکل اینگونه حل شده است تا بدون داشتن مهارت های بسیار بالا از  ++C توسعه دهندگان بتوانند در زمینه رابط کاربری تیم خود را مدیریت کنند. البته برای ساخت هسته نرم افزار های دستگاه های تعبیه شده نیاز به ++C امریست ضروری. اما چیز دیگری می تواند کمک بهتری برای توسعه در اختیار قرار دهد. استفاده از Qt که اجازه می دهد هر دو نوع توسعه دهندگان غیر   ++C و متخصصین ++C عملیاتی را که می خواهند بر روی دستگاه ها توسعه دهند فراهم می کند. و این اجازه می دهد توسعه دهندگان ++C  تمرکز بهتری در تمامی زمینه ها داشته باشند.    
 

دستگاه IoT خود را توسط Qt تقویت کنید

از زبان سازندگان تیم Nymea بشنوید که چگونه در مورد دلایل استفاده خود از Qt در حوزه اینترنت اشیاء می‌گویند. در اینجا تیم Nymea که سازنده پلتفرم IoT با نام Nymea اس اینگونه می‌گویند. ما از ابتدای کار خود از Qt استفاده کرده ایم. شما ممکن است فکر کنید و اینگونه به نظر برسد که انتخاب کیوت برای دستگاه‌هایی که دارای رابط کاربری نیستند یک انتخاب غیر عادی باشد! اجازه دهید تا این مبحث را کمی برای شما روشن کنیم. اساساً، در بیانیه قبلی٬ سه تصور غلط وجود دارد. کیوت یک چهارچوب رابط کاربری است : بله اما بسیار بیشتر از چیزی است که تصورش را می‌کنید
اولین و بزرگترین تصور غلط این است که Qt تنها بر روی پروژه هایی تمرکز کرده است که عمدتا در حوزه رابط کاربری UI می‌باشند. درست است که کیوت چندین سال پیش به عنوان یک ابزار قدرتمند رابط توسعه رابط کاربری فعالیتش را آغاز کرده است. اما آن زمان٬ کیوت یک مجموعه کامل از کتابخانه‌ها و ابزارهای پشتیبانی شده در هر لایه کامل نبود که امروزه این به حقیقت پیوسته است. حتی شما اگر گزینه‌های گرافیکی را نداشته باشید، کیوت بهره وری شما را به یک مرتبه افزایش خواهد داد. که در موردش بعدا بیشتر اشاره خواهم کرد. رابط کاربری دارای جنبه‌های بسیاری است
در حال حاضر، اجازه دهید اینگونه بگویم که: هیچ نمایشگری برابر با هیچ رابط کاربری نیست. حتی وقتی شما در حال ساخت یک دستگاه اِمبِد بدون نمایشگر هستید تقریبا هیچ رابط کاربری برای آن وجود ندارد. در مثال ما رابط کاربری شامل یک رابط وِب در حال اجرا در جعبه IoT و برنامه مشتری است. اپلیکیشن مشتری٬ اجرا بر روی تلفن‌های هوشمند٬ کامپیوترها و یا صفحه های نمایشی دیواری که عمدتا برقراری ارتباط و صحبت با دستگاه از طریق لایه UI صورت می‌گیرد. در اینجا، فناوری کیوت کوئیک (Qt Quick) می‌تواند یک تجربه مدرن را با قابلیت  (یک بار نوشته شدن و در همه جا اجرا شدن) را ارائه دهد و جالبترین بخش از کیوت نسخه ۵.۱۰ این است که در زمانی نیاز از برنامه های مشابه می‌توان بر اساس فناوری Qt WebGL به عنوان یک ویژگی جدید استفاده کرد. بدون سربارگذاری اضافی : تنها مواردی را مستقر کنید که به آن ها نیاز دارید
یک نظر دیگر که اغلب شنیده ایم این است که وارد کردن کیوت به دستگاههای اِمبد سربار بزرگی خواهد بود. در حالی که در روزهای اولیه٬ کیوت از برخی از ماژول شامل شده بود که در این سالها بسیار تغییر کرده اند آن‌ها بهتر و پیشرفته تر از قبل شده اند و در جدید ترین نسخه کیوت ۵ مدولاسیون کیوت کنترلهای بسیاری را در بخشهایی از کیوت جهت نصب یک نقطه اشتراکی و قابل ردیابی را تسهیل کرده است. در این روزهای اخیر کیوت توانسته است این امکان را فراهم سازد تا تجهیزات لازم را بر روی دستگاه‌ها به حداقل برساند و نیاز به آن را به طور کامل از بین ببرد. کیوت چگونه توانسته است بهره وری مارا بر روی Nymea افزایش دهد
همانطور که در بالا ذکر شد، من مایلم به برخی از ویژگیهای کیوت که موجب افزایش بهره وری Nymea شده است را عنوان کنم تا بررسی کنید. تعداد زیادی از آنها به صورت لیست در اینجا وجود دارد٬ اما مهمترین آنها برای پُشته میان افزار ما عبارتند از: معماری پلاگین
معماری پلاگین کیوت مناسب برای بارگیری پلاگین‌ها است، و تمام پیچیدگی و بارگذاری کتابخانه ها را از بین می‌برد٬ استفاده ازNymea بر اساس پلاگین‌ها یک مزیت قابل توجهی است. هسته این پلتفرم یک نکته از تنظیمات نرم افزار مدیریت و هوشمندانه اشیاء می‌باشد که در آن تمام سخت افزارهای واقعی و خدمات آنلاین٬ به اصطلاح اشیاء در سیستم از طریق پلاگین فعال هستند. پروتکل های انتقال
تنها چند تماس با رابط های برنامه نویسی Qt همه چیز را که مورد نیاز است در اختیار شما قرار می‌دهد. میان افزار Nymea رابط ها را از طریق سوکتها (TCP/IP یا سوکت های محلی) ٬ WebSockets, Rest, Bluetooth RFCOMM ارائه می‌دهد و همه آن‌ها به سادگی در دست کیوت با استفاده از رمزنگاری SSL (گواهی معتبر) برای ارتباط امن فراهم شده اند. رابط های برنامه نویسی مبتنی بر JSONRPC
کیوت پشتیبانی از JSON را پیشنهاد می‌کند و اجازه می‌دهد تا به راحتی بین ساختار های دالی به اشیاء JSON دسترسی داشته باشید. این در زمان تعامل با مشتتریان برای ما یک نکته مثبت بسیار بزرگی محسوب می‌شود. چهارچوب آزمایش و اشکالزدایی
توسعه دهندگان از مزایای یک رابط برنامه نویس بسیار انتزاعی لذت می‌برند. کدهای پایه Nymea هنگام آزمایش به صورت خودکار توسط سیستم Qt Test مورد آزمایش قرار می‌گیرند و این باعث می‌شود مواردی را برای آزمایش قابلیتها و همچنین تهیه گزارش و چاپ آن‌ها همراه با آمار در انواع مختلف در قالب مشابه UnitXML در اختیار داشته باشیم. علاوه بر این٬ آن را قادر می‌سازد تا با دیگر سیستم‌های خطایابی مانند Valgrind و دیگر ابزارهای خارجی و قدیمی که برای سی++ کار‌های قدیمی و حرفه ای مهم است را فراهم می‌کند. مستندات رابط های برنامه نویسی با استفاده از QDoc
کیوت یک مرجع بسیار شگفت انگیز در آدرس doc.qt.io را ارائه میدهد. سیستم QDoc امکان این را فراهم می سازد که با نصب CI دسترسی برای سفارشی سازی ظاهر و همچنین مستند سازی ویژه ای را برای پروژه خود فراهم سازید که برای Nymea به آدرس. یک عالمه حامی ریز و کوچک در امتداد مسیر
کیوت مقادیر بیشماری از ویژگی ها را در اختیار توسعه دهندگان قرار می‌دهد که از پارامترهای خط فرمان و تجزیه تحلیل ورودی گرفته تا خروجی و اتصالات به اینترنت و همچنین مکانیزم های مختلف IPC در سیستم هایی مانند D-Bus که هرکدام از این ویژگی های به نوبه خود آماده استفاده هستند. همه (یا تقریبا همه آنها) به طور کامل چند-سکویی هستند، در حالی که Nymea برای اجرا بر روی دستگاه های مبتنی بر لینوکس متمرکز شده است٬ با این حال به کمک کیوت میتوانیم آن را برای دیگر پلتفرمها نیز بسازیم. البته برخی از ویژگی های یکپارچه مانند رابط های برنامه نویسی D-Bus بر روی تمامی سیستم عامل ها کار نخواهند کرد، اما این چنین موارد در کل بسیار نادر هستند. در حال حاضر nymea دارای مخزن مبتنی بر dpkg برای پشتیبانی تحت همه توزیعهای ابنتو و دبیان و همچنین بسته های ناگهانی متناسب با چنین توزیعهایی تعبیه شده است. برنامه مصرف کننده برای دسکتاپ و اندروید ساخته شده است. تیم ما برای توسعه آن بر روی پلتفرم iOS نیز در حال تلاش است که بر پایه WebGL برای پشتیبانی از تمامی قابلیتهای Qt Quick به عنوان یک رابط کاربری خوب در Nymea تمرکز کرده است. نکته مهم و کلی این است
کیوت یک چهارچوب ایده آل برای پروژه‌های شما در حوزه UI یا غیر آن است. تعداد زیادی از رابط های برنامه نویسی آزمایش شده و با کیفیت بالا کار و زندگی هریک از توسعه دهندگان را بسیار راحتر میکند. به ویژه وقتی به راحتی API ها توجه شود. در عین حال کیوت همچنان به شما این امکان را فراهم میکند تا از مزایای ++C لذت ببرید. بنابراین کیوت برای IoT بسیار مناسب است. درباره Nymea
شرکتی است که دستگاههای هوشمند را می‌سازند. سریع، قابل برنامه ریزی و بدون دردسر. تیم M2M ما یکپارچه بودن رابط های برنامه نویسی را تضمین می‌کند چرا که ما به قدرت راه حل های حاشیه ای انباشته شده (جمع شده، ترکیب شده) ایمان داریم.
 

قاتل خفته HTML5 که ممکن است شما از آن بی خبر باشید!

برای سال های بسیار زیادی است که HTML یک زبان جهانی برای ساخت صفحات وب بوده است و تا کنون در مقابل زبان‌های دیگر به شدت مقاومت نشان داده است که در بین آنها بهترین امنیت و سرعت مورد نظر ارائه داده است. با این حال جهان فراتر از مرورگر اینترنتی رفته و وارد موبایل و دستگاههای هوشمند بسیاری شده است و برخی از توسعه دهندگان HTML5 را برای توسعه در حوزه IoT بسیار آهسته و ضعیف دانسته اند. شاید پاسخ آن را Qt بتواند ارائه دهد که خود یک چهار چوب چند سکویی بشمار می‌آید. چرا HTML بسیار موفق بوده است؟
زبان HTML بسیار موفق بوده است، زیرا همراه توسعه و پیشرفت اینترنت و برنامه های توسعه یافته شده در طول رشد صنعت اینترنت همراه شده است. این یک روش سنتی و درست برای توسعه صفحات وب می‌باشد. در سال‌های اخیر ابزار های توسعه جدید٬ با ایجاد و توسعه خود شروع به حفاری HTML کرده اند و خود تاثیر بر روی آن می‌گذارند، اما برنامه های تحت دسکتاپ بدون هیچ مشکلی همچنان استفاده از HTML را ادامه می‌دهند. اشکالات اصلی استفاده از HTML در چیست؟
ظهور گوشی‌های هوشمند و رسانه های اجتماعی پیشرفت صنعت وب را توسعه داده است. امروزه برنامه های کاربردی در طیف گسترده ای تغییر شکل و اندازه می‌دهند. برنامه‌های سنتی دسکتاپی٬ برنامه های کاربردی وب در هر دستگاه با مرورگر٬ برنامه های تلفن همراه٬ دستگاه های اِمبد و دستگاه های مرتبط با اینترنت اشیاء (IoT) و غیره. دستگاه های مرتبط به IoT در حال حاضر نیاز به رابط کاربری و ویژگی های اتصال دارند تا در ارتباط بهتری قرار بگیرند٬ همچنین از اپراتورها انتظار می رود که تجربه کاربری مشابه را در دستگاه‌های شخصی خود داشته باشند. در این میان HTML هرگز برای سیستم های هوشمند و امبد‌ها و دستگاه‌های این چنینی در نظر گرفته نشده است و دارای نقایصی است. در حالی که در مخالف آن جهت توسعه صنعت تحت روش‌ها و زبان‌های بومی استفاده مورد استفاده قرار می‌گیرد. یکی دیگر از معایب HTML5 این است که موقع انتخاب HTML5 شما می‌بایست در کنار آن یک چهارچوب جاوا اسکریپتی را نیز انتخاب کنید. در کنار آن می‌توان به مقایسه چهار چوب‌های موجود پرداخت که برخی از آنها ممکن است در آینده از بین بروند و برخی از آن ها باقی بمانند! اینکه در آینده چه اتفاقی خواهد افتاد نامعلوم است. بنابراین فشار زیادی برای انتخاب بین چهارچوب‌ها وجود دارد. چهارچوب توسعه چند-سکویی Qt چیست و چگونه به توسعه دهندگان کمک می‌کند؟
کیوت یک چهارچوب چند-سکویی توسعه بر پایه ++C است و شامل هر دو گزینه کتابخانه و ابزارهای ساخت و توسعه رابط کاربری برنامه‌های کاربردی می‌باشد. یکی از روشهای طراحی در کیوت استفاده از زبان اعلانی QML می‌باشد که طراحی شده است تا به توسعه دهندگان این امکان را بدهد تا بتوانند رابط کاربری با کارآیی بالا را طراحی و پیاده سازی نمایند که قابل اجرا بر روی تمامی دستگاه ها مانند دسکتاپ٬ موبایل و ... باشد. طراحی رابط کاربری توسط QML به صورت بصری است که همراه کنترل ها آماده٬ مانند دکمه‌ها٬ سوئچ‌ها و ... را می‌توان بر روی بوم طراحی سریع آن‌ها را کشیده و طراحی کرد. همانند چهار چوب‌هایی که برای توسعه وب و موبایل طراحی شده اند٬ زبانهای برنامه نویسی مانند QML در کیوت به خاطر محدودیت‌ها و حذف HTML توسط شرکت‌های بزرگ سهم قابل توجهی را به دست آورده اند. مزایای استفاده از QML در برابر HTML در چیست؟
بعد از اینکه بارها این سوال ها را مطرح کرده‌ایم٬ یک شرکت مشاوره نرم افزاری اتریشی تصمیم به تست مقایسه‌ای بین این دو زبان گرفت تا بتواند پاسخ مناسبی را برای این سوال تعیین کند. آنها برای هرکدام از زبانها ۱۶۰ ساعت در اختیار توسعه دهندگان مشابه قرار دادند برای مثال ۱۶۰ ساعت توسعه بر روی HTML5 و ۱۶۰ ساعت توسعه بر روی QML تا نمونه هایی را در قالب Demo جهت مقایسه طراحی نمایند تا بتوانند آنها را زمانی که برای ایجاد یک محصول مشابه مورد استفاده قرار می‌دهند از لحاظ عملکرد و پایداری مقایسه کنند. نسخه های دمو نشان می‌دهد اگر چه زمان مشابهی در هر دو نسخه صرف توسعه شده بود٬ اما پیاده سازی با Qt QML یک رابط کاربری کاربردی تر و کاملتری را نسبت به نسخه HTML5 ارائه می‌دهد. فرآیند تست و اشکال زدایی با Qt QML ساده تر است٬ زیرا HTML5 نیاز به آزمایش های بیشتری در مرورگرهای مختلف دارد. به طور کلی نسخه Qt QML زمان کمتری را جهت پاسخ دهی (در اجرا) و ویژگیهای فعال تری را مانند صفحه کلید مجازی و حرکات پیچیده ارائه می‌دهد که این موارد در HTML5 بدون افزودن آنها قابل ارائه نیست. همچنین QML قابلیت ترکیب و قدرت گرفتن از ++C را دارد که نکته‌ی بسیار مهمی است. کیوت چگونه برای دستگاه های هوشمند و امبد کار می‌کند و چه رویکرد متفاوتی از برنامه‌های سنتی دسکتاپی و HTML دارد؟ برنامه هایی که بر پایه کیوت هستند٬ برای یک هدف تدوین و کامپایل می‌شوند٬ این به این معنی است که بدون در نظر گرفتن قوانین کاربردی بر روی پلتفرم همان رفتاری را انجام خواهد داد که بر روی پلتفرم قرار است اجرا شود. برنامه های تحت HTML5 برای اجرا بر روی مرورگر هستند، برای مثال مرورگر Google's Chrome این به این معنی است که برنامه در پلتفرم های دیگر مانند FireFox ممکن است یک رفتار دیگری را نشان دهد. HTML یک زبان است در حالی که Qt یک چهارچوب کامل با گزینه‌های طراحی و زبانهای مختلف است. با کیوت شما واقعا توانایی استفاده هر گزینه‌ای را نسبت به کاربرد آن خواهید داشت. شما می‌توانید ابزارهای طراحی خود را با کشیدن و رها کردن بر روی بوم خود قرار داده و به راحتی آن را با زبانی مانند ++C تنظیم کنید. کدهای اعلان شده در QML هستند و یا می‌توان آن‌ها را با ++C ترکیب کرد. همچنین شما می‌توانید در صورتی که نیاز داشته باشید کد‌های HTML را بر روی کیوت بر پایه مرورگر کروم فعال و استفاده نمایید. در بازار کیوت چقدر نفوز دارد؟
با وجود اینکه کیوت حدود ۲۵ سال است عمر دارد٬ ممکن است برخی بگویند که این چهارچوب پیش از این زمان ذکر شده توسعه داده شده است. با افزایش توسعه اینترنت اشیاء که نیاز به هرجا و هر صفحه نمایشی را افزایش داده است٬ این در حالی است که توسعه دهندگان در همان مقدار باقی مانده اند. این به این معنی است که توسعه دهندگان نیاز به این دارند که بیشتر سازنده باشند و سعی نکنند که مشکلاتی را حل کنند که قبلا برای آن ها راه حلی پیدا شده است. کیوت توسط بیش از ۱ میلیون توسعه دهنده در بیش از ۷۰ صنایع مورد استفاده قرار گرفته است و در سال گذشته بیش از ۲۰ درصد رشد داشته است و برای تکنولوژی هایی که تا مدت طولانی وجود دارند، منحصر بفرد است. هر کجا که یک رابط کاربری خارق العاده را می‌بینید آن شانس خوبی است که با کیوت توسعه داده شده است. از وسایل هوشمند درون خودرو و ابزارهای دیجیتال گرفته تا صفحه های نمایش HUD در خودرو های مانند تسلا یا مرسدس، و یا سیستم هایی که از طریق FDA و IEC جهت تامین ایمنی بیماران از طریق سیستم های اتوماسیون برای ساختمان ها و صنایع و حتی در تلوزیون های دیجیتال و یخچال فریزر شما که در این نقطه کیوت به طور گسترده ای به تصویر رسیده است٬ اما عصر طلایی آن در حال آغاز شدن است. هزینه کلی و مالکیت کیوت چگونه است؟
کیوت دارای یک مدل مجوز دوگانه است. کیوت یک مدل منبع باز و کاملا رایگان و همچنین یک مدل تجاری ارائه می‌دهد که در مدل تجاری پلتفرمی را پیشنهاد می‌کند که برای استفاده و دسترسی به R&D و پشتیبانی تجاری می‌باشد. HTML5 رایگان است (با گزینه‌ای برای پرداخت هزینه برای ابزار های غیر ضروری) اما یکپارچگی وابستگی‌ها مانند نگه داری و دستیابی به همان کارایی است که شما به طور نسبی با Qt نیاز دارید. توسعه دهندگان HTML برای اینکه نیاز به دسترسی لایه‌های زیرین داشته باشند یا روش های پیشرفته تری استفاده کنند تا بتوانند کارایی بهتر و پیشرفته تری را ارائه دهند و سیستم شما را پشتیبانی و بهینه نگه دارند نیازمند استفاده و هزینه کردن به سخت افزار‌هایی هستند.اما در کیوت شرکت کیوت کسی است که پشت این چهارچوب است و مراقب تمامی وابستگی‌ها می‌باشد٬ هزینه تعمیرات و نگه داری ها را کاهش می‌دهد٬ سیستم شما را اثبات می‌کند و خطرات کلی شما را کاهش می‌دهد. سناریو هایی که در استفاده Qt به جای HTML مفید تر است کدامند؟ همچنین بالعکس آن چطور است؟
با رشد چشمگیر IoT و افزایش دستگاه های امبد که به خود کیوت می‌رسند. QML و Qt برای بیشترین استفاده از منابع محدود طراحی شده اند و بنابراین ممکن است انتخاب خوبی برای توسعه دهندگان دستگاههای هوشمند و به خصوص امبد باشد. از سوی دیگر HTML اهداف خود را بر روی وب به راحتی اجرا می‌کند که در سراسر سیستم عامل های دسکتاپ و موبایل است. همانطور که بسیاری از توسعه دهندگان HTML برای استفاده از آن با HTML آشنا هستند٬ اگر شما کسی هستید که برنامه نویسی ++C را نمی‌دانید می‌توانید از HTML استفاده کنید. با این حال Qt طیف گسترده ای از سیستم عامل ها را پشتیبانی می‌کند و از لحاظ پاسخدهی، زمان راه اندازی (زمان اجرای برنامه) و تجربه کاربری و رابط کاربری بسیار بهتر عمل می کند. آیا Qt فرصتی واقعی برای کنار گذاشتن HTML به عنوان زبان برنامه نویسی انتخاب کرده است؟
در وبلاگ‌ها و انجمن‌ها بحث هایی در حال انجام است که آیا QML واقعا جایگزین HTML در وب خواهد شد یا خیر. از یک جنبه عملکرد مردم می‌گویند که می‌تواند این کار را انجام دهد٬ اما از دیدگاه علمی، برای تغییر آن نیاز خواهد بود تا غول هایی مانند گوگل جایگاه و روش‌های خود را نسبت به این موضوع تغییر دهند. به طور کلی HTML زبان بسیار محبوبی در صنعت وب محسوب می‌شود اما باتوجه به توسعه روز افزون پلتفرم‌های مختلف و مخصوصا موبایل‌ها و اینترنت اشیاء QML یک رقیب بسیار جدی طراحی و پیاده سازی UI و UX محسوب می‌شود که بسیار قدرتمند تر از HTML عمل می‌کند.   نکته افزوده شده توسط (کامبیز اسدزاده)
با توجه به اینکه صنعت وب با HTML و JavaScript ترکیب شده است باید در نظر داشته باشیم که QML از هر دو فناوری فوق پشتیبانی می‌کند. این به این معنی است که شما موقع استفاده از QML از یک زبانی اعلانی استفاده می‌کنید که بر پایه JavaScript است که علاوه بر قابلیت‌های جاوا اسکریپت می‌توانید از CSS و HTML نیز استفاده کرده و بک اند برنامه خود را تحت زبان قدرتمند ++C تعبیه کنید.  
×