آنچه باید از 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
چهارگانه ی ACID
دیتابیس های رابطه ای مانند SQL Server معمولا بر مبنای ACID کار میکنند. دیتابیس هایی که از این قوانین پیروی نمیکنند سرعت بیشتری دارند و سیال تر هستند اما اعتماد پذیری به داده های آنها کاهش پیدا میکند. بسیاری از دیتابیس های NoSQL از ACID صرف نظر میکنند.
بر مبنای اصل Atomicity داده ها باید از قانون همه یا هیچ پیروی کنند. یعنی یا تمام فیلدها درون جدول ذخیره میشود یا هیچکدام ذخیره نمیشود. دیتابیس باید در همه حال (قطع شدن اینترنت ، برق ، خطای سیستم) این وضعیت را حفظ کند.
بر مبنای Consistency دیتابیس بعد از هر تراکنش از یک حالت معتبر به یک حالت معتبر جدید برود. مواردی مانند نوع فیلدها ، محدودیت های اعمال شده بر آن و رابطه ی بین جداول همیشه باید رعایت شود.
بر مبنای Isolation هر تراکنش برای خود یکتا هست و به ذخیره شدن و یا نشدن سایر تراکنش ها مربوط نیست. اگر تعداد زیادی تراکنش در دیتابیس همزمان اعمال شود هیچکدام نباید روی دیگری اثر گذار باشد.
بر مبنای Durability اطلاعات هر تراکنش بعد از آنکه در دیتابیس اعمال شد باید ذخیره شود. اطلاعات نباید در اثر قطعی برق یا خطای سیستم از بین برود. در واقع هروقت دیتابیس نتیجه ی تراکنش را بر میگرداند برنامه نویس میداند اطلاعات جایی در دیسک ذخیره شده است و در آینده ی دور هم قابل دسترسی می باشد.
دیتابیس های رابطه ای مانند SQL Server معمولا بر مبنای ACID کار میکنند. دیتابیس هایی که از این قوانین پیروی نمیکنند سرعت بیشتری دارند و سیال تر هستند اما اعتماد پذیری به داده های آنها کاهش پیدا میکند. بسیاری از دیتابیس های NoSQL از ACID صرف نظر میکنند.
بر مبنای اصل Atomicity داده ها باید از قانون همه یا هیچ پیروی کنند. یعنی یا تمام فیلدها درون جدول ذخیره میشود یا هیچکدام ذخیره نمیشود. دیتابیس باید در همه حال (قطع شدن اینترنت ، برق ، خطای سیستم) این وضعیت را حفظ کند.
بر مبنای Consistency دیتابیس بعد از هر تراکنش از یک حالت معتبر به یک حالت معتبر جدید برود. مواردی مانند نوع فیلدها ، محدودیت های اعمال شده بر آن و رابطه ی بین جداول همیشه باید رعایت شود.
بر مبنای Isolation هر تراکنش برای خود یکتا هست و به ذخیره شدن و یا نشدن سایر تراکنش ها مربوط نیست. اگر تعداد زیادی تراکنش در دیتابیس همزمان اعمال شود هیچکدام نباید روی دیگری اثر گذار باشد.
بر مبنای Durability اطلاعات هر تراکنش بعد از آنکه در دیتابیس اعمال شد باید ذخیره شود. اطلاعات نباید در اثر قطعی برق یا خطای سیستم از بین برود. در واقع هروقت دیتابیس نتیجه ی تراکنش را بر میگرداند برنامه نویس میداند اطلاعات جایی در دیسک ذخیره شده است و در آینده ی دور هم قابل دسترسی می باشد.
تعریف Global Filter در ASP Core
گاهی نیاز داریم یک فیلتر در همه ی اکشنهای سایت اجرا شود. مثلا اگر اکشنی برای Redirect کاربر به صفحه ی عدم دسترسی نیاز داریم یا می خواهیم خطاهای ایجاد شده را در دیتابیس لوگ کنیم می توانیم از Global Action Filters در ASP Core استفاده کنیم. در این آموزش نحوه تنظیم Global Filter در محیط ASP Core MVC نمایش داده میشود.
آپارات :
https://www.aparat.com/v/X4HzU
گاهی نیاز داریم یک فیلتر در همه ی اکشنهای سایت اجرا شود. مثلا اگر اکشنی برای Redirect کاربر به صفحه ی عدم دسترسی نیاز داریم یا می خواهیم خطاهای ایجاد شده را در دیتابیس لوگ کنیم می توانیم از Global Action Filters در ASP Core استفاده کنیم. در این آموزش نحوه تنظیم Global Filter در محیط ASP Core MVC نمایش داده میشود.
آپارات :
https://www.aparat.com/v/X4HzU
بیلد 2018
ساتیا نادلا صحبتهایش را با محور حفظ حریم شخصی آغاز کرد. ضمن اینکه از GDPR استقبال کرد گفت همه ی خدمات مایکروسافت تا ماه دیگر آماده است این قوانین را پیاده کند. همچنین قرار است قابلیت پیاده سازی GDPR در فریم ورکها هم پیاده شود. (در ASP Core قبلا اضافه شده است)
نادلا همچنین درباره توسعه ی خدمات ابری Azure صحبت کرد.
به زودی قرار است Azure IOT به صورت سورس باز در اختیار برنامه نویسان قرار بگیرد تا گامی مهم به سمت اینترنت اشیا توسط مایکروسافت برداشته شود.
کینکت جدید با قابلیت های بیشتر و سنسورهای قویتر به زودی عرضه میشود.
ترکیب هوش مصنوعی با Azure و قابلیت اجرای محلی درون دستگاههایی مانند دوربین های مدار بسته و پهپادها نیز از دیگر امکاناتی است که مایکروسافت از امروز عرضه آنها رو شروع میکند.
مایکروسات 365 که ترکیبی یکپارچه از Skype و Cortana و هوش مصنوعی است می تواند بسیاری از نیازهای تجاری شرکتها را برطرف کند.
قابلیت برنامه نویسی بات برای همه ی سرویس ها در نظر گرفته شده است.
نادلا در پایان گفت همه ی خدمات مایکروسات برای شرکتهایی که در زمینه ی معلولان فعالیت می کنند به شکل ویژه عرضه میشود و این شرکت می خواهد سهم بزرگی در توسعه ی این نوع فن آوری ها داشته باشد.
ساتیا نادلا صحبتهایش را با محور حفظ حریم شخصی آغاز کرد. ضمن اینکه از GDPR استقبال کرد گفت همه ی خدمات مایکروسافت تا ماه دیگر آماده است این قوانین را پیاده کند. همچنین قرار است قابلیت پیاده سازی GDPR در فریم ورکها هم پیاده شود. (در ASP Core قبلا اضافه شده است)
نادلا همچنین درباره توسعه ی خدمات ابری Azure صحبت کرد.
به زودی قرار است Azure IOT به صورت سورس باز در اختیار برنامه نویسان قرار بگیرد تا گامی مهم به سمت اینترنت اشیا توسط مایکروسافت برداشته شود.
کینکت جدید با قابلیت های بیشتر و سنسورهای قویتر به زودی عرضه میشود.
ترکیب هوش مصنوعی با Azure و قابلیت اجرای محلی درون دستگاههایی مانند دوربین های مدار بسته و پهپادها نیز از دیگر امکاناتی است که مایکروسافت از امروز عرضه آنها رو شروع میکند.
مایکروسات 365 که ترکیبی یکپارچه از Skype و Cortana و هوش مصنوعی است می تواند بسیاری از نیازهای تجاری شرکتها را برطرف کند.
قابلیت برنامه نویسی بات برای همه ی سرویس ها در نظر گرفته شده است.
نادلا در پایان گفت همه ی خدمات مایکروسات برای شرکتهایی که در زمینه ی معلولان فعالیت می کنند به شکل ویژه عرضه میشود و این شرکت می خواهد سهم بزرگی در توسعه ی این نوع فن آوری ها داشته باشد.
آشنایی با Live Share
با این تکنولوژی دو برنامه نویس می توانند کدهای یک پروژه را به صورت مشترک تغییر دهند. در حالی که فایل های اصلی پروژه فقط روی یکی از دو سیستم قرار دارد.
وقتی می خواهید یک کد را با شخص دیگر به اشتراک بگذارید کافی است با افزونه LiveShare یک لینک بسازید و آن را برای شخص دیگر بفرستید.
نفر دیگر می تواند روی سیستمش به صورت زنده کد شما را ویرایش و اجرا کند بدون آنکه پروژه را دانلود کرده باشد. او می تواند کد را دیباگ کند و همچنین درون کد از Intellisense استفاده کند. نیاز به نصب پکیج ها و رفنس ها ندارد و شما می توانید محل قرار گیری او را ببینید. هچنین او میتواند روی یک فایل دیگر پروژه کار کند در حالی که شما روی قسمت مربوط به خود کار می کنید.
همچنین طرف دیگر می تواند برنامه را روی سرور محلی شما در سیستم خودش اجرا کند و تست های برنامه ی شما را اجرا کند.
با این تکنولوژی دو برنامه نویس می توانند کدهای یک پروژه را به صورت مشترک تغییر دهند. در حالی که فایل های اصلی پروژه فقط روی یکی از دو سیستم قرار دارد.
وقتی می خواهید یک کد را با شخص دیگر به اشتراک بگذارید کافی است با افزونه LiveShare یک لینک بسازید و آن را برای شخص دیگر بفرستید.
نفر دیگر می تواند روی سیستمش به صورت زنده کد شما را ویرایش و اجرا کند بدون آنکه پروژه را دانلود کرده باشد. او می تواند کد را دیباگ کند و همچنین درون کد از Intellisense استفاده کند. نیاز به نصب پکیج ها و رفنس ها ندارد و شما می توانید محل قرار گیری او را ببینید. هچنین او میتواند روی یک فایل دیگر پروژه کار کند در حالی که شما روی قسمت مربوط به خود کار می کنید.
همچنین طرف دیگر می تواند برنامه را روی سرور محلی شما در سیستم خودش اجرا کند و تست های برنامه ی شما را اجرا کند.