آشنایی با GraphQL
معمولا برای دسترسی به داده های یک وب سرویس باید آدرسهای مشخصی را صدا بزنید و روی اطلاعات دریافتی هم کنترلی ندارید. روش GraphQL می تواند جایگزین این سیستم شود و در قالب یک Query اطلاعات مورد نیاز را از سرور درخواست کند.
کتابخانه GraphQL در سرور قرار میگیرد و با یک آدرس اطلاعات وب سرویس را در اختیار کلاینت قرار می دهد. کلاینت در قالب json فرمت داده های مورد نیازش را مشخص می کند و فقط همان را از سرور دریافت میکند.
با GraphQL لازم نیست حجم زیادی از داده را از وب سرویس دریافت کنید و سپس فیلتر کنید. همچنین این ابزار قابلیت join کردن و تهیه ی گزارشهای تو در تو را هم دارد.
هرچند فیسبوک کتابخانه هایی برای استفاده در محیط #C و جاوا اسکریپت تهیه کرده اما GraphQL تنها یک ساختار و یک روش عرضه ی اطلاعات است و شرکتها می توانند آن را به شیوه ی مورد علاقه ی خود پیاده کنند.
معمولا برای دسترسی به داده های یک وب سرویس باید آدرسهای مشخصی را صدا بزنید و روی اطلاعات دریافتی هم کنترلی ندارید. روش GraphQL می تواند جایگزین این سیستم شود و در قالب یک Query اطلاعات مورد نیاز را از سرور درخواست کند.
کتابخانه GraphQL در سرور قرار میگیرد و با یک آدرس اطلاعات وب سرویس را در اختیار کلاینت قرار می دهد. کلاینت در قالب json فرمت داده های مورد نیازش را مشخص می کند و فقط همان را از سرور دریافت میکند.
با GraphQL لازم نیست حجم زیادی از داده را از وب سرویس دریافت کنید و سپس فیلتر کنید. همچنین این ابزار قابلیت join کردن و تهیه ی گزارشهای تو در تو را هم دارد.
هرچند فیسبوک کتابخانه هایی برای استفاده در محیط #C و جاوا اسکریپت تهیه کرده اما GraphQL تنها یک ساختار و یک روش عرضه ی اطلاعات است و شرکتها می توانند آن را به شیوه ی مورد علاقه ی خود پیاده کنند.
آشنایی با Blockchain در بین کوین
بیت کوین اولین جایی بود که بلاکچین کاربرد خودش را نشان داد. هیچ دولت یا سازمانی اطلاعات بیت کوین را نگه داری نمیکند. بلکه این اطلاعات بین نودها پخش است و هر کدام یک کپی از آن دارند.
هر وقت یک تراکنش جدید در بیت کوین اتفاق می افتد اطلاعات آن به عنوان بلاک جدید به زنجیره ی بلاکهای قبلی اضافه میشود.
در بیت کوین هر 10 دقیقه اطلاعات بلاکها باید توسط الگوریتمهای ریاضی سنگین صحت سنجی شود. این کار توسط نودها انجام میشود.
هر نود بعد از انجام محاسبات اطلاعاتش را با سایر نودها به اشتراک می گذارد. اگر 51 درصد نودها به نتیجه ی یکسان برسند اطلاعات نهایی هش میشود و به عنوان بلاک جدید ثبت میشود.
بلاک جدید یک حقیقت یا Fact به شمار میرود و از این رو همه ی نودها دفاتر خود را با آن آپدیت می کنند.
تراکنشها و تشکیل شدن بلاکهای جدید بین کوین را می توانید زنده در سایت زیر مشاهده کنید.
https://blockchain.info/
بیت کوین اولین جایی بود که بلاکچین کاربرد خودش را نشان داد. هیچ دولت یا سازمانی اطلاعات بیت کوین را نگه داری نمیکند. بلکه این اطلاعات بین نودها پخش است و هر کدام یک کپی از آن دارند.
هر وقت یک تراکنش جدید در بیت کوین اتفاق می افتد اطلاعات آن به عنوان بلاک جدید به زنجیره ی بلاکهای قبلی اضافه میشود.
در بیت کوین هر 10 دقیقه اطلاعات بلاکها باید توسط الگوریتمهای ریاضی سنگین صحت سنجی شود. این کار توسط نودها انجام میشود.
هر نود بعد از انجام محاسبات اطلاعاتش را با سایر نودها به اشتراک می گذارد. اگر 51 درصد نودها به نتیجه ی یکسان برسند اطلاعات نهایی هش میشود و به عنوان بلاک جدید ثبت میشود.
بلاک جدید یک حقیقت یا Fact به شمار میرود و از این رو همه ی نودها دفاتر خود را با آن آپدیت می کنند.
تراکنشها و تشکیل شدن بلاکهای جدید بین کوین را می توانید زنده در سایت زیر مشاهده کنید.
https://blockchain.info/
Blockchain
Blockchain Explorer - Bitcoin Tracker & More | Blockchain.com
The most popular and trusted Bitcoin block explorer and crypto transaction search engine.
در PWA اطلاعات صفحه توسط تکنیک Server-Side-Rendering در سرور تولید میشود و به صورت یکجا به مرورگر ارسال میشود. اطلاعات در مرورگر کش میشود و یک اسکریپت کوچک در پس زمینه کار آپدیت اطلاعات صفحه و ارسال نوتیفیکیشن را به عهده دارد.
استفاده از تکنیک SSR سرعت لود شدن صفحه را بالا میبرد و حس اپ های محلی را به کاربر القا می کند. از آنجا که صفحه کش میشود جابجایی میان صفحات بسیار سریع است و هر وقت رویدادی باید به اطلاع کاربر برسد دسترسی به سیستم نوتیفیکیشن وجود دارد.
این اپ ها به گونه ای طراحی میشوند که بدون اینترنت هم کار کنند. این وظیفه ی Service Worker است که در زمانی که ارتباط با اینترنت قطع است از کش اطلاعات را لود کند.
از آنجا که PWA خود سایت است و مستقیما در موتور جستجوگر گوگل پیدا میشود شانس اینکه کاربرها از آن استفاده کنند بالا میرود. همچنین هزینه ی برنامه نویسی محلی برای انواع سیستم عامل ها از بین میرود.
بسیاری از شرکتها از جمله سامسونگ تلاش می کنند تسلط گوگل و اپل بر بازار اپ را از بین ببرند و از این رو سرمایه گذاری زیادی در این زمینه انجام داده اند. تویتر جدیدترین رویکرد به این سمت است اما آخرین نخواهد بود.
استفاده از تکنیک SSR سرعت لود شدن صفحه را بالا میبرد و حس اپ های محلی را به کاربر القا می کند. از آنجا که صفحه کش میشود جابجایی میان صفحات بسیار سریع است و هر وقت رویدادی باید به اطلاع کاربر برسد دسترسی به سیستم نوتیفیکیشن وجود دارد.
این اپ ها به گونه ای طراحی میشوند که بدون اینترنت هم کار کنند. این وظیفه ی Service Worker است که در زمانی که ارتباط با اینترنت قطع است از کش اطلاعات را لود کند.
از آنجا که PWA خود سایت است و مستقیما در موتور جستجوگر گوگل پیدا میشود شانس اینکه کاربرها از آن استفاده کنند بالا میرود. همچنین هزینه ی برنامه نویسی محلی برای انواع سیستم عامل ها از بین میرود.
بسیاری از شرکتها از جمله سامسونگ تلاش می کنند تسلط گوگل و اپل بر بازار اپ را از بین ببرند و از این رو سرمایه گذاری زیادی در این زمینه انجام داده اند. تویتر جدیدترین رویکرد به این سمت است اما آخرین نخواهد بود.
آنچه باید از F8 امسال بدانید :
زاکربرگ که سال سختی را پشت سر گذاشت در اولین قدم وعده داد که بخش App Review به زودی شروع به کار می کند. این بخش در چند ماه گذشته و بعد از رسوایی لو رفتن اطلاعات کاربرها از دسترس برنامه نویسان خارج شده بود.
از این پس یک سیستم هوش مصنوعی کار پیدا کردن و حذف اکانتهای تقبلی فیس بوک را انجام می دهد. این سیستم تا حالا بیش از 100 هزار حساب را از چرخه ی فیس بوک خارج کرده است.
دکمه ی حذف تاریخچه اضافه میشود تا کاربران بتوانند همه ی کارهایی که در فیس بوک انجام داده اند از دیتابیس آن حذف کنند.
قابلیت جدید Watch Party به کاربران امکان میدهد با هم یک ویدیو را به صورت زنده تماشا کنند و روی آن نظر دهند.
دکمه ی عضویت در گروه برای اپ های گوشی اضافه شده است تا از هر جایی بتوان مستقیما به گروههای فیس بوک اضافه شد.
فیس بوک رسما امکان دوست یابی یا Dating رابه این پلتفرم اضافه می کند تا کاربران بتوانند علاوه بر ارتباط با دوستان و آشنایان با افراد جدید هم آشنا شوند. البته این بخش باید توسط کاربر به صورت مجزا فعال شود. تنها چند ساعت بعد از انتشار این خبر ارزش سهام سایت Match Group بیش از 22 درصد سقوط کرد.
علاوه بر اینها نسخه ی Graph API 3.0 فیس بوک هم در راه است و PyTorch 1.0 هم که کتابخانه برنامه نویسی هوش مصنوعی فیس بوک است برای استفاده برنامه نویسان به صورت رایگان و سورس باز عرضه میشود.
در آخر اینکه زاکربرگ اعلام کرد Jan Koum یکی از موسسان WhatsApp از تیم توسعه ی فیس بوک جدا میشود و از زحمات او تشکر کرد.
زاکربرگ که سال سختی را پشت سر گذاشت در اولین قدم وعده داد که بخش App Review به زودی شروع به کار می کند. این بخش در چند ماه گذشته و بعد از رسوایی لو رفتن اطلاعات کاربرها از دسترس برنامه نویسان خارج شده بود.
از این پس یک سیستم هوش مصنوعی کار پیدا کردن و حذف اکانتهای تقبلی فیس بوک را انجام می دهد. این سیستم تا حالا بیش از 100 هزار حساب را از چرخه ی فیس بوک خارج کرده است.
دکمه ی حذف تاریخچه اضافه میشود تا کاربران بتوانند همه ی کارهایی که در فیس بوک انجام داده اند از دیتابیس آن حذف کنند.
قابلیت جدید Watch Party به کاربران امکان میدهد با هم یک ویدیو را به صورت زنده تماشا کنند و روی آن نظر دهند.
دکمه ی عضویت در گروه برای اپ های گوشی اضافه شده است تا از هر جایی بتوان مستقیما به گروههای فیس بوک اضافه شد.
فیس بوک رسما امکان دوست یابی یا Dating رابه این پلتفرم اضافه می کند تا کاربران بتوانند علاوه بر ارتباط با دوستان و آشنایان با افراد جدید هم آشنا شوند. البته این بخش باید توسط کاربر به صورت مجزا فعال شود. تنها چند ساعت بعد از انتشار این خبر ارزش سهام سایت Match Group بیش از 22 درصد سقوط کرد.
علاوه بر اینها نسخه ی Graph API 3.0 فیس بوک هم در راه است و PyTorch 1.0 هم که کتابخانه برنامه نویسی هوش مصنوعی فیس بوک است برای استفاده برنامه نویسان به صورت رایگان و سورس باز عرضه میشود.
در آخر اینکه زاکربرگ اعلام کرد Jan Koum یکی از موسسان WhatsApp از تیم توسعه ی فیس بوک جدا میشود و از زحمات او تشکر کرد.
موتور V8 چطور کار می کند ؟
جاوا اسکریپت بر مبنای استاندارد ECMAScript کار میکند که مجموعه ای از دستورالعمل برای ترجمه و اجرای کد است. شرکتهای مختلف موتور مترجم خود را دارند. مثلا مایکروسافت از Chakra استفاده میکند.
مهمترین قابلیت جاوا اسکریپت این است که یک زبان داینامیک است و برای استفاده از متغیر ها نیاز به تعریف پیشین وجود ندارد. هرچند این موضوع کد نویسی را ساده تر میکند اما کار مترجم را سخت می کند. مترجم باید تمام مسیرهای ممکن برای ترجمه ی یک عبارت را بررسی کند و این کار را در زمان کوتاه انجام دهد.
موتور V8 از روش JIT استفاده میکند یعنی فقط کدهایی که قرار است اجرا شوند را ترجمه می کند. اما در نسخه جدید V8 یک مترجم دوم هم اضافه شده که به نام Optimizing Compiler شناخته میشود. کار این کامپایلر دوم تشخیص کدهای "داغ" در پروژه و کش کردن آن است. ساختار این کدها تا زمانی که تغییر نکند در حافظه ی موقت کش میشود.
در موتور V8دیگر استفاده از try-catch یا eval و with تاثیری در سرعت ندارد. مهمترین نکته حفظ نوع متغیرهاست. در واقع هرچه به سمت زبان های استاتیک برویم سرعت پردازش بیشتر میشود.
جاوا اسکریپت بر مبنای استاندارد ECMAScript کار میکند که مجموعه ای از دستورالعمل برای ترجمه و اجرای کد است. شرکتهای مختلف موتور مترجم خود را دارند. مثلا مایکروسافت از Chakra استفاده میکند.
مهمترین قابلیت جاوا اسکریپت این است که یک زبان داینامیک است و برای استفاده از متغیر ها نیاز به تعریف پیشین وجود ندارد. هرچند این موضوع کد نویسی را ساده تر میکند اما کار مترجم را سخت می کند. مترجم باید تمام مسیرهای ممکن برای ترجمه ی یک عبارت را بررسی کند و این کار را در زمان کوتاه انجام دهد.
موتور V8 از روش JIT استفاده میکند یعنی فقط کدهایی که قرار است اجرا شوند را ترجمه می کند. اما در نسخه جدید V8 یک مترجم دوم هم اضافه شده که به نام Optimizing Compiler شناخته میشود. کار این کامپایلر دوم تشخیص کدهای "داغ" در پروژه و کش کردن آن است. ساختار این کدها تا زمانی که تغییر نکند در حافظه ی موقت کش میشود.
در موتور V8دیگر استفاده از try-catch یا eval و with تاثیری در سرعت ندارد. مهمترین نکته حفظ نوع متغیرهاست. در واقع هرچه به سمت زبان های استاتیک برویم سرعت پردازش بیشتر میشود.
پروژه ی RazorPages با LiteDB
در این پروژه با استفاده از قابلیت جدید RazorPages در ASP Core یک برنامه ی CRUD مدیریت باگ ایجاد می کنیم. برای قسمت دیتابیس هم از LiteDB که یک دیتابیس اسنادی NoSQL است استفاده شده که ساده و سبک است و سرور مرکزی ندارد. کل حجم کتابخانه آن 360 کیلوبایت است و می توانید برای پروژه های کوچک از آن بهره ببرید.
استفاده از RazorPage چهارچوب ذهنی متفاوتی با MVC دارد. با توجه به اینکه دیگر Controller نداریم کدهای مربوط به اکشن درون فایل همنام ویو پیاده می شوند. در نگاه اول این موضوع کمی عجیب به نظر میرسد. اما بعد از پیاده کردن یک پروژه متوجه می شوید که چرا این سیستم جدید به محیط MVC اضافه شده است.
مهمترین نکته این است که می توان از RazorPages در کنار MVC بهره برد و لازم نیست یکی را فدای دیگری کنیم. برای پروژه هایی که صفحات و فرم های زیادی دارند و مستقیما از سرور استفاده می کنند این روش خیلی ساده تر است. همچنین اگر می خواهید SPA پیاده کنید یا استفاده ی زیادی از Javascript می کنید بازم هم گزینه ی خوبی است ولی باید API را درون کنترلر پیاده کنید.
لینک دانلود پروژه
https://github.com/codehaks/BugPages
در این پروژه با استفاده از قابلیت جدید RazorPages در ASP Core یک برنامه ی CRUD مدیریت باگ ایجاد می کنیم. برای قسمت دیتابیس هم از LiteDB که یک دیتابیس اسنادی NoSQL است استفاده شده که ساده و سبک است و سرور مرکزی ندارد. کل حجم کتابخانه آن 360 کیلوبایت است و می توانید برای پروژه های کوچک از آن بهره ببرید.
استفاده از RazorPage چهارچوب ذهنی متفاوتی با MVC دارد. با توجه به اینکه دیگر Controller نداریم کدهای مربوط به اکشن درون فایل همنام ویو پیاده می شوند. در نگاه اول این موضوع کمی عجیب به نظر میرسد. اما بعد از پیاده کردن یک پروژه متوجه می شوید که چرا این سیستم جدید به محیط MVC اضافه شده است.
مهمترین نکته این است که می توان از RazorPages در کنار MVC بهره برد و لازم نیست یکی را فدای دیگری کنیم. برای پروژه هایی که صفحات و فرم های زیادی دارند و مستقیما از سرور استفاده می کنند این روش خیلی ساده تر است. همچنین اگر می خواهید SPA پیاده کنید یا استفاده ی زیادی از Javascript می کنید بازم هم گزینه ی خوبی است ولی باید API را درون کنترلر پیاده کنید.
لینک دانلود پروژه
https://github.com/codehaks/BugPages
GitHub
codehaks/BugPages
A sample CRUD project using ASP Core 2.1 RazorPages and LiteDB embeded database - codehaks/BugPages