#پست_مجدد این پست تا به حال بیش از ۱۰۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
مفهوم Tow way bindig یکی از مهمترین امکاناتی است که فریم ورک AngularJS در اختیار برنامهنویسان قرار میدهد. این امکان به این صورت است که با تغییر view model، scope model نیز تغییر میکند و بلعکس. کاری که این فریم ورک برای ایجاد ارتباط بین view و scope model انجام میدهد به این صورت است که زمانیکه scop model تغییر می کند، به صورت خودکار $scope.$apply() صدا زده می شود که متعاقب آن $rootScope.$digest() فراخوانی میشود. با فراخوانی این سرویس، سیکل digest روی $scopeRoot شروع به کار کرده و تمام سرویسهای $watch را اجرا می کند. سرویس $watch مقدار view Model را با scope model مقایسه و مقادیر جدید را جایگزین میکند.
مقاله زیر توضیحات کاملی درباره سرویس های $apply و $digest داده و چرخه وصل کردن view به scope را به طور کامل شرح داده است.
https://www.sitepoint.com/understanding-angulars-apply-digest
#مریم_داودی
لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a
کانال تلگرام:
@SoftwarePhilosophy
___
مقاله زیر توضیحات کاملی درباره سرویس های $apply و $digest داده و چرخه وصل کردن view به scope را به طور کامل شرح داده است.
https://www.sitepoint.com/understanding-angulars-apply-digest
#مریم_داودی
لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a
کانال تلگرام:
@SoftwarePhilosophy
___
Sitepoint
Understanding Angular's $apply() and $digest() - SitePoint
This article explores Angular's $apply() function and the $digest cycle. The reader will learn when $apply() must be called manually.
پیش بینی می شود که تکنولوژیهای واقعیت مجازی و واقعیت افزوده تا سال 2020 بتوانند 150 میلیارد دلار درآمد داشته باشند که بیشترین سهم را واقعیت مجازی یا Augmented Reality دارد. در نتیجه یادگیری استفاده از این تکنولوژی و یا تولید برنامههایی برپایه این تکنولوژی به برنامه نویسان موبایل توصیه میشود. در این راستا خیلی از شرکت ها،SDK هایی برای سیستم عامل های Android و IOS تولید کرده اند که بین آن ها Wikitude از همه پر طرفدارتر بوده است. توضیحات تکمیلی و نسخه آزمایشی آن را می توانید در لینک زیر پیدا کنید.
http://www.wikitude.com/products/wikitude-sdk/
#کاروان_جافی
لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027
کانال تلگرام:
@SoftwarePhilosophy
___
http://www.wikitude.com/products/wikitude-sdk/
#کاروان_جافی
لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027
کانال تلگرام:
@SoftwarePhilosophy
___
Wikitude
Augmented Reality Experiences with Wikitude Cross Platform SDK
Build Augmented Reality Experiences for iOS, Android, Smart Glasses. Use Wikitude AR SDK! Object & Image Recognition, Scene Recognition
Forwarded from Iran .Net
یکی از مسائلی که عمدتا در پروژه های نرم افزاری پیش می آید، ارسال ایمیل می باشد. متن ایمیل ها باید داینامیک بوده و با توجه به پارامتر های مختلف تغییر کند. همچنین ایمیل ها باید ظاهری خوب و دلچسب داشته باشند.
کتابخانه Mailzory می تواند در حل این موضوع به کمک تان بیاید. شما می توانید قالب هایی را با Razor طراحی کنید. سپس این قالب و مقادیر مدل های تان را به Mailzory تحویل دهید تا محتوای ایمیل را تولید کرده و برای گیرندگان ارسال کند.
پروژه های دیگری هم نظیر Postal وجود دارند که می توانند در ارسال ایمیل به کمک شما بیایند. اما متاسفانه روند توسعه Postal متوقف شده و در سناریوهایی عملا نمی توانید از آن استفاده کنید.
توجه کنید که از پروژه Mailzory می توانید در Desktop Application ها و Web Application ها استفاده کنید.
https://github.com/mirsaeedi/Mailzory
کتابخانه Mailzory می تواند در حل این موضوع به کمک تان بیاید. شما می توانید قالب هایی را با Razor طراحی کنید. سپس این قالب و مقادیر مدل های تان را به Mailzory تحویل دهید تا محتوای ایمیل را تولید کرده و برای گیرندگان ارسال کند.
پروژه های دیگری هم نظیر Postal وجود دارند که می توانند در ارسال ایمیل به کمک شما بیایند. اما متاسفانه روند توسعه Postal متوقف شده و در سناریوهایی عملا نمی توانید از آن استفاده کنید.
توجه کنید که از پروژه Mailzory می توانید در Desktop Application ها و Web Application ها استفاده کنید.
https://github.com/mirsaeedi/Mailzory
GitHub
GitHub - mirsaeedi/Mailzory: Mailzory helps you to send emails which are based on Razor templates. Mailzory is dependent on RazorEngine…
Mailzory helps you to send emails which are based on Razor templates. Mailzory is dependent on RazorEngine project. - GitHub - mirsaeedi/Mailzory: Mailzory helps you to send emails which are based ...
یکی از تکنیکهایی که در مدیریت پروژههای نرمافزاری برای مدیریت کارها استفاده میشود استفاده از مفهوم «کانبان» است. این روش که شرکت تویوتا از آن در سیستم تولید just-in-time خود استفاده میکند برای پروژههای نرمافزاری نیز سازگار شدهاست.
یکی از اهداف کانبان، شناسایی گلوگاههای کاری است تا بتوان به فرایندی بهینهتر برای تولید نرمافزار رسید.
لینک زیر پس از توضیح مفهوم کانبان، نحوه استفاده از بورد کانبان را در پروژههای نرمافزاری شرح دادهاست.
http://kanbanblog.com/explained/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
یکی از اهداف کانبان، شناسایی گلوگاههای کاری است تا بتوان به فرایندی بهینهتر برای تولید نرمافزار رسید.
لینک زیر پس از توضیح مفهوم کانبان، نحوه استفاده از بورد کانبان را در پروژههای نرمافزاری شرح دادهاست.
http://kanbanblog.com/explained/
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Kanbanblog
What is Kanban?
A summary of Kanban for managers.
#پست_مجدد این پست تا به حال بیش از ۱۱۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
کپی کردن کامل یک object معمولا یا از طریق Serialization انجام میشود یا از طریق Reflection. همیشه Serialization محدودیتهای خاص خود را دارد. برای مثال در XmlSerialization ارجاعات حلقهای (Circular References) باعث مشکل میشوند. همچنین سرعت کپی از طریق سریالایزیشن نسبت به Reflection بسیار کمتر است. از طرفی سرعت کپی شدن از طریق Reflection هنوز نسبت به کپی دستی (manually copy functions) کمتر است.
مقاله جدید روش جدیدی را برای کپی اشیا از طریق Expression Trees در زبان C# ارائه دادهاست که هم قدرت Reflection را دارد و سرعت آن تقریبا برابر با روش «کپی دستی» است. خواندن این مقاله روشی که Expression Tree از آن استفاده میکند را بسیار خوب توضیح داده است و در مثالهای عملی قدرت این ساختار را نمایش داده است.
http://www.codeproject.com/Articles/1111658/Fast-Deep-Copy-of-Objects-by-Expression-Trees-Csha
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
مقاله جدید روش جدیدی را برای کپی اشیا از طریق Expression Trees در زبان C# ارائه دادهاست که هم قدرت Reflection را دارد و سرعت آن تقریبا برابر با روش «کپی دستی» است. خواندن این مقاله روشی که Expression Tree از آن استفاده میکند را بسیار خوب توضیح داده است و در مثالهای عملی قدرت این ساختار را نمایش داده است.
http://www.codeproject.com/Articles/1111658/Fast-Deep-Copy-of-Objects-by-Expression-Trees-Csha
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Codeproject
Fast Deep Copy by Expression Trees (C#)
Deep cloning code made with Linq.Expressions. Tests and test classes are enclosed.
فرایند رفع Bug و یکپارچه کردن آن با فرایند توسعه نرمافزار معمولا یکی از چالشهایی است که تیمهای برنامهنویسی با آن مواجه میشوند. معمولا اسپرینتها بر اساس نیازمندیها برنامهریزی میشوند) و باگها استثناهایی هستند که در اجرای معمولی اسپرینت اختلال ایجاد میکنند (در متدولوژیهای مختلف نیازمندی به عنوان استوری یا Backlog یا Requirement شناخته میشود). در قبال یکپاچه کردن فرایند رفع باگها میتوان از دو رویکرد استفاده کرد.
۱. در یک اسپرینت میتوان با باگها همانند یک نیازمندی برخورد کرد.
۲. در اسپرینت میتوان با باگها همانند تسکهایی برخورد کرد که مربوط به یک نیازمندی خاص هستند و اصولا هر باگ حتما باید به عنوان فرزند یک نیازمندی تعریف شود.
هرکدام از این روشها مزایایی دارد. در لینک زیر این مفاهیم شرح دادهشده و نمودار فرایند چرخش باگ در فرایندهای Agile, Scrum و CMMI مقایسه شده است.
https://www.visualstudio.com/docs/work/backlogs/manage-bugs
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
۱. در یک اسپرینت میتوان با باگها همانند یک نیازمندی برخورد کرد.
۲. در اسپرینت میتوان با باگها همانند تسکهایی برخورد کرد که مربوط به یک نیازمندی خاص هستند و اصولا هر باگ حتما باید به عنوان فرزند یک نیازمندی تعریف شود.
هرکدام از این روشها مزایایی دارد. در لینک زیر این مفاهیم شرح دادهشده و نمودار فرایند چرخش باگ در فرایندهای Agile, Scrum و CMMI مقایسه شده است.
https://www.visualstudio.com/docs/work/backlogs/manage-bugs
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Docs
Create & manage bugs using Agile tools - Azure Boards and TFS
Manage technical debt and triage bugs using Agile tools in Azure Boards & Team Foundation Server
موضوع انتقال پیوسته دادهها با در نظر گرفتن تعدد سرورها و ابزارهای مختلفی که این روزها در نرم افزارها استفاده میشود به موضوع داغی تبدیل شده است. Data Factory ابزار مایکروسافت است جهت ذخیره سازی، انتقال و پردازش دادهها در فضای ابری. در مجموعه مقالات زیر آموزش داده میشود چگونه از این ابزار قدرتمند جهت انتقال داده ها از Blob Storage به SQL Server استفاده کنیم. نکته قابل توجه این است که میتوانید این ابزار را از طرق مختلف تنظیم و مدیریت کنیم: Copy Wizard،Azure portal، Visual Studio، PowerShell، REST API، و .NET API
https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-data-from-azure-blob-storage-to-sql-database/
#کامران_کمایی
لینکدین: www.linkedin.com/in/kamaei
کانال تلگرام:
@SoftwarePhilosophy
___
https://azure.microsoft.com/en-us/documentation/articles/data-factory-copy-data-from-azure-blob-storage-to-sql-database/
#کامران_کمایی
لینکدین: www.linkedin.com/in/kamaei
کانال تلگرام:
@SoftwarePhilosophy
___
Microsoft
Copy data from Blob Storage to SQL Database using Data Factory
This tutorial shows you how to use Copy Activity in an Azure Data Factory pipeline to copy data from Blob storage to SQL database.
#پست_مجدد این پست تا به حال بیش از ۱۶۰۰ بار مشاهده شده و به نظر میرسد برای خوانندگان جدید کانال جذاب باشد.
Forwarded from Software Philosophy
عملگرهای null-conditional یکی از جذابترین امکاناتی است که به C# 6.0 اضافه شدهاند. برای همه برنامهنویسان همیشه چک کردن مقدار null بسیار زمانگیر است و عموما خوانایی کد را نیز کم میکند. مخصوصا اگر قرار باشد برای عبارتی مانند
person.Children[2].FavoriteSinger.SendMessage("Hello")
بخواهید null بودن را چک کنید.
آیا person==null است؟ اگر نیست، آیا Children اصلا آیتم 2 دارد و null نیست، اگر نیست، خواننده محبوب دارد؟
برای بررسی درست و نوشتن یک کد Null Safe باید حداقل ۱۰ خط کد نوشته شود. اما با ویژگی جدیدی که در C# 6.0 اضافه شده میتوانید از کد یک خطی زیر استفاده کنید:
Person?.Children?[2]?.FavoriteSinger?.SendMessage("Hello")
برای آشنایی کامل با این قابلیت و حالتهای مختلفی که میتواند کدهای شما را سادهتر کند لینک زیر توضیحات خلاصه و جامعی دادهاست.
https://msdn.microsoft.com/en-us/library/dn986595.aspx
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
person.Children[2].FavoriteSinger.SendMessage("Hello")
بخواهید null بودن را چک کنید.
آیا person==null است؟ اگر نیست، آیا Children اصلا آیتم 2 دارد و null نیست، اگر نیست، خواننده محبوب دارد؟
برای بررسی درست و نوشتن یک کد Null Safe باید حداقل ۱۰ خط کد نوشته شود. اما با ویژگی جدیدی که در C# 6.0 اضافه شده میتوانید از کد یک خطی زیر استفاده کنید:
Person?.Children?[2]?.FavoriteSinger?.SendMessage("Hello")
برای آشنایی کامل با این قابلیت و حالتهای مختلفی که میتواند کدهای شما را سادهتر کند لینک زیر توضیحات خلاصه و جامعی دادهاست.
https://msdn.microsoft.com/en-us/library/dn986595.aspx
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
در یک جلسه Sprint Planning چه میگذرد؟ هدف این جلسه برنامهریزی صحیح و اجرایی، برای انجام کارها است. برای رسیدن به این هدف، این جلسه باید به طور صیحیح اجرا شود. در این جلسه ضمن تعیین الویتها، تخمین زمانی کارها نیز مشخص میشود. از آنجایی که این جلسه به طور تیمی برگزار میشود یکی از کاراییهای اصلی آن انتقال صحیح مفاهیمی است که باید تولید شود. در این جلسه شرکتکنندگان به درک مشترکی از استوریهایی که باید تولید شوند میرسند. این درک مشترک شامل موارد «درک استوری»، «درک نیازمندیهای استوری»، «درک زمان مورد نیاز برای توسعه» و ... میباشد.
لینک زیر روش اجرای این جلسات را به صورت فرمال و رسمیتر توضیح دادهاست.
https://msdn.microsoft.com/en-us/library/ee191595(v=vs.100).aspx
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
لینک زیر روش اجرای این جلسات را به صورت فرمال و رسمیتر توضیح دادهاست.
https://msdn.microsoft.com/en-us/library/ee191595(v=vs.100).aspx
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from Iran Agile
یکی از بزرگترین چالش ها در دنیای توسعه نرم افزار ارتباط بین توسعه دهندگان (برنامه نویس، طراح UI و …) با مدیران (مدیرمحصول، مدیر پروژه و…) است، از طرفی توسعه دهندگان مدیران را متهم به “ماست مالی کردن و بزن درویی کار کردن” می کنند، مدیران هم برنامه نویس ها را به “اضافه کاری بی مورد یا هیجان فنی یا تولید چیزی که مشتری لازم ندارد” متهم می کنند. اما واقعیت چیست؟
http://blog.scrum.ir/2016/10/market-window-technical-debt/
http://blog.scrum.ir/2016/10/market-window-technical-debt/
مفهوم Planning Poker یا Scrum Poker یکی از روشهای بسیار موثر و کارا در تخمین فعالیتهای نرمافزاری است. این روش که مانند یک بازی اجرا میشود فرایند تخمین کار را به یک کار جذاب و کارا تبدیل میکند. با اینکه این فرایند بسیار شبیه یک بازی اجرا میشود، ولی تمام مراحلی که برای انجام این بازی طراحی شدهدارای دلایل بسیار عمیقی است. برای مثال اینکه افرادی که تخمین میزنند نباید از تخمین یکدیگر خبر داشتهباشند دلیل روانشناسی دارد و حتی آزمایشهای جالبی برای اثبات آن ساخته شده است.
لینک زیر مفهوم Planning Poker که در اسکرام استفاده میشود را توضیح داده و برخی از دلایل پشت فرایند آن را هم تشریح کردهاست.
https://en.wikipedia.org/wiki/Planning_poker
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
لینک زیر مفهوم Planning Poker که در اسکرام استفاده میشود را توضیح داده و برخی از دلایل پشت فرایند آن را هم تشریح کردهاست.
https://en.wikipedia.org/wiki/Planning_poker
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
Forwarded from Iran .Net
معرفی dotNet Standard
می دانیم پلتفرم دات نت در حال گسترش می باشد و مایکروسافت قصدی جدی برای حضوری همه جانبه در همه سیستم عامل ها دارد و می خواهد فارغ از سیستم عامل ها، بهترین انتخاب برای توسعه نرم افزار ها باشد. این روز ها دات نتی بودن یک فرصت مغتنم می باشد.
اما متاسفانه در حال حاضر برای توسعه تحتِ دات نت، فریم ورک های متفاوتی وجود دارد. در کنار نسخه اصلی و قدیمیِ دات نت فریم ورک، با فریم ورک های دیگری هم مواجه هستیم. مثلا فریم ورک Mono برای کار بر روی لینوکس و مک و... یا فریم ورک dotNet Framework CE و dotNet Micro Framework برای کار بر روی سیستم های توکار با حافظه و توان پردازشی محدود، زامارین برای توسعه بر روی سیستم عامل های موبایل نظیر اندروید و آیفون و اخیرا هم dotNet Core به این مجموعه اضافه شده است.
مسئله ای که اکوسیستمِ فعلیِ توسعه ی مبتنی بر دات نت با آن مواجه است، این می باشد که هر کدام از این چارچوب ها، علی رغمِ شباهت ها، در بخش های بسیاری با یکدیگر متفاوت می باشند و به طور کلی دارای کلاس ها، رفتار ها و API های متفاوتی می باشند. در نتیجه کدی که شما در یکی از این فریم ورک ها می نویسید دلیلی ندارد در پلتفرم های دیگر هم قابل اجرا باشد. همچنین دات نت کور بسیاری از API ها دات نت سنتی را ندارد و در بعضی جاها دارای تفاوت های اساسی با آن می باشد.
برای حل معضل از هم گسیختگیِ اکوسیستمِ دات نت، یکپارچه سازی API ها و بالا بردن توانایی اجرا بر روی همه پلتفرم ها، مایکروسافت مدتی است که استانداردی را تحت عنوان dotNet Standard معرفی کرده است. dotNet Standard در واقع مجموعه ی بسیار بزرگ و کاربردی ایی از API هاست که فریم ورک های مختلف می بایست آن ها را پیاده سازی کرده و این API ها بین همه فریم ورک ها یکسان باشند.
در نتیجه اگر کد شما از API ها موجود در استاندارد استفاده کرده باشد، می توانید مطمئن باشید که کد تان تحت دات نت کور، زامارین، دات نتِ سنتی و ... بدون هیچ تغییری کامپایل خواهد شد. این موضوع موجب خواهد شد شما یکبار بنویسید و در همه جا بتوانید اجرا کنید. این استاندارد همچنین نسخه بعدیِ دات نت کور را بسیار غنی تر خواهد کرد، چرا که دات نت کور برای پیروی از این استاندارد ملزم می باشد که بسیاری از نقص های فعلی را جبران کند.
فکر می کنم آشنایی با مفهوم dotNet Standard از الزاماتِ کار ما در دنیای جدید و مدرن دات نت باشد. برای همین خواند مقاله زیر را به شما توصیه می کنم.
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
* گیت هاب پروژه dotNet Standard
https://github.com/dotnet/standard
می دانیم پلتفرم دات نت در حال گسترش می باشد و مایکروسافت قصدی جدی برای حضوری همه جانبه در همه سیستم عامل ها دارد و می خواهد فارغ از سیستم عامل ها، بهترین انتخاب برای توسعه نرم افزار ها باشد. این روز ها دات نتی بودن یک فرصت مغتنم می باشد.
اما متاسفانه در حال حاضر برای توسعه تحتِ دات نت، فریم ورک های متفاوتی وجود دارد. در کنار نسخه اصلی و قدیمیِ دات نت فریم ورک، با فریم ورک های دیگری هم مواجه هستیم. مثلا فریم ورک Mono برای کار بر روی لینوکس و مک و... یا فریم ورک dotNet Framework CE و dotNet Micro Framework برای کار بر روی سیستم های توکار با حافظه و توان پردازشی محدود، زامارین برای توسعه بر روی سیستم عامل های موبایل نظیر اندروید و آیفون و اخیرا هم dotNet Core به این مجموعه اضافه شده است.
مسئله ای که اکوسیستمِ فعلیِ توسعه ی مبتنی بر دات نت با آن مواجه است، این می باشد که هر کدام از این چارچوب ها، علی رغمِ شباهت ها، در بخش های بسیاری با یکدیگر متفاوت می باشند و به طور کلی دارای کلاس ها، رفتار ها و API های متفاوتی می باشند. در نتیجه کدی که شما در یکی از این فریم ورک ها می نویسید دلیلی ندارد در پلتفرم های دیگر هم قابل اجرا باشد. همچنین دات نت کور بسیاری از API ها دات نت سنتی را ندارد و در بعضی جاها دارای تفاوت های اساسی با آن می باشد.
برای حل معضل از هم گسیختگیِ اکوسیستمِ دات نت، یکپارچه سازی API ها و بالا بردن توانایی اجرا بر روی همه پلتفرم ها، مایکروسافت مدتی است که استانداردی را تحت عنوان dotNet Standard معرفی کرده است. dotNet Standard در واقع مجموعه ی بسیار بزرگ و کاربردی ایی از API هاست که فریم ورک های مختلف می بایست آن ها را پیاده سازی کرده و این API ها بین همه فریم ورک ها یکسان باشند.
در نتیجه اگر کد شما از API ها موجود در استاندارد استفاده کرده باشد، می توانید مطمئن باشید که کد تان تحت دات نت کور، زامارین، دات نتِ سنتی و ... بدون هیچ تغییری کامپایل خواهد شد. این موضوع موجب خواهد شد شما یکبار بنویسید و در همه جا بتوانید اجرا کنید. این استاندارد همچنین نسخه بعدیِ دات نت کور را بسیار غنی تر خواهد کرد، چرا که دات نت کور برای پیروی از این استاندارد ملزم می باشد که بسیاری از نقص های فعلی را جبران کند.
فکر می کنم آشنایی با مفهوم dotNet Standard از الزاماتِ کار ما در دنیای جدید و مدرن دات نت باشد. برای همین خواند مقاله زیر را به شما توصیه می کنم.
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
* گیت هاب پروژه dotNet Standard
https://github.com/dotnet/standard
.NET Blog
Introducing .NET Standard - .NET Blog
Questions? Check out the .NET Standard FAQ. You can find the latest version of the compatibility matrix here. In my last post, I talked about how we want to make porting to .NET Core easier. In this post, I’ll focus on how we’re making this plan a reality…
کتابخانه LinqToTwitter یکی از LINQ Provder های جذاب است که روی معماری LINQ بنا شدهاست. به وسیله این کتابخانه به راحتی میتوانید روی توییتر با استفاده از LINQ جستجو کنید. معماری LINQ بسیار زیبا و قابل گسترش طراحی شدهاست. این معماری به این صورت است که خود LINQ به صورت یک «زبان پرسجو مستقل از تکنولوژی» طراحی شدهاست. سپس از مفهومی به نام LINQ Provider برای اجرای پرس و جو استفاده میشود. لیست Provider های زیر معمولا شناخته شدهتر هستند:
• LinqToObjects
• LinqToSql
• LinqToEntityFramwork
• LinqToXml
اما با توجه به معماری LINQ میتوان روی هر بستر اطلاعاتی LINQ Provider های جدید نوشت که LinqToTwitter یکی از آنهاست. در اینترنت میتوان Provider های جذاب دیگری مانند LinqToFacebook را نیز جستجو کرد.
https://github.com/JoeMayo/LinqToTwitter
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
• LinqToObjects
• LinqToSql
• LinqToEntityFramwork
• LinqToXml
اما با توجه به معماری LINQ میتوان روی هر بستر اطلاعاتی LINQ Provider های جدید نوشت که LinqToTwitter یکی از آنهاست. در اینترنت میتوان Provider های جذاب دیگری مانند LinqToFacebook را نیز جستجو کرد.
https://github.com/JoeMayo/LinqToTwitter
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
GitHub
GitHub - JoeMayo/LinqToTwitter: LINQ Provider for the Twitter API (C# Twitter Library)
LINQ Provider for the Twitter API (C# Twitter Library) - JoeMayo/LinqToTwitter
همانند سمت سرور، سمت کلینت نیز storage هایی جهت ذخیره اطلاعات وجود دارد که با توجه به نیاز می توان از آنها استفاده کرد.
از جمله این storage ها، میتوان به session storage, local storage و cookie اشاره کرد.
دانستن تفاوت بین این سه storage و میزان دسترسی به اطلاعات آنها میتواند به انتخاب مناسب در موقعیتهای متفاوت کمک کند.
باید بدانید که Session storage مربوط به هر تب از browser است بنابراین در تب جدید دیگر وجود ندارد.
و نیز Local storage حافظهای مربوط به browser است، بنابراین اطلاعات مربوط به آن در تمام تب های browser در دسترس خواهد بود و حتی با باز و بسته شدن browser نیز پاک نخواهد شد. اطلاعات موجود در local storage در browser تا زمانی که به طور دستی history مربوط به browser پاک شود یا از طریق جاوا اسکریپت این حافظه خالی شود وجود خواهد داشت.
در انتها Cookie حافظه ای است که مانند local storage عمل می کند با این تفاوت که اطلاعات موجود در cookie از سمت سرور نیز در دسترس بوده و در واقع در سمت سرور می توان از اطلاعات cookie استفاده کرد.
مقاله زیر به طور کامل تفاوت این سه حافظه را ذکر مثال بیان کرده است.
http://www.c-sharpcorner.com/uploadfile/cd7c2e/difference-between-local-storage-session-storage-ans-cookie
#مریم_داودی
لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a
کانال تلگرام:
@SoftwarePhilosophy
___
از جمله این storage ها، میتوان به session storage, local storage و cookie اشاره کرد.
دانستن تفاوت بین این سه storage و میزان دسترسی به اطلاعات آنها میتواند به انتخاب مناسب در موقعیتهای متفاوت کمک کند.
باید بدانید که Session storage مربوط به هر تب از browser است بنابراین در تب جدید دیگر وجود ندارد.
و نیز Local storage حافظهای مربوط به browser است، بنابراین اطلاعات مربوط به آن در تمام تب های browser در دسترس خواهد بود و حتی با باز و بسته شدن browser نیز پاک نخواهد شد. اطلاعات موجود در local storage در browser تا زمانی که به طور دستی history مربوط به browser پاک شود یا از طریق جاوا اسکریپت این حافظه خالی شود وجود خواهد داشت.
در انتها Cookie حافظه ای است که مانند local storage عمل می کند با این تفاوت که اطلاعات موجود در cookie از سمت سرور نیز در دسترس بوده و در واقع در سمت سرور می توان از اطلاعات cookie استفاده کرد.
مقاله زیر به طور کامل تفاوت این سه حافظه را ذکر مثال بیان کرده است.
http://www.c-sharpcorner.com/uploadfile/cd7c2e/difference-between-local-storage-session-storage-ans-cookie
#مریم_داودی
لینکدین:
https://www.linkedin.com/in/maryam-davoudi-7913565a
کانال تلگرام:
@SoftwarePhilosophy
___
C-Sharpcorner
Difference Between Local Storage, Session Storage And Cookies
In this article I'll tell you about the differences between Session Storage, Local Storage and Cookies.
گرافیک سه بعدی کامپیوتری و ساخت بازیهای کامپیوتری جز تکنولوژیهای پیچیده محسوب میشود. اینکه یک ویدئو ساخته شده سه بعدی بتواند کاملا واقعی به نظر برسد کاری بسیار سخت است. در حقیقت ۳ عامل خیلی مهم وجود دارد که باعث واقعی شدن یک نمایش گرافیکی سه بعدی میشود.
۱. حرکتهای طبیعی (Motion)
۲. سایهها (Shadow)
۳. بافتها (Texture)
مفهوم سایه فقط به سایه جسم روی زمین ختم نمیشود. به عنوان مثال، برای اینکه موهای یک شخص طبیعی دیده شود سایه تک تک تارهای مو باید به درستی روی بقیه تارهای مو بیفتد و این یعنی حجم وحشتناکی از محاسبات در ثانیه! مفهوم بافت مفهومی است که به یک مدل سه بعدی معنای قابل لمس میدهد و آن را برای ما ملموس میکند.
ویدئوی زیر که توسط شرکت Method Studios ساخته شدهاست یکی از نمونههای فوقالعاده است که سه مفهوم بالا در آن به زیبایی نمایش داده شدهاست.
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
۱. حرکتهای طبیعی (Motion)
۲. سایهها (Shadow)
۳. بافتها (Texture)
مفهوم سایه فقط به سایه جسم روی زمین ختم نمیشود. به عنوان مثال، برای اینکه موهای یک شخص طبیعی دیده شود سایه تک تک تارهای مو باید به درستی روی بقیه تارهای مو بیفتد و این یعنی حجم وحشتناکی از محاسبات در ثانیه! مفهوم بافت مفهومی است که به یک مدل سه بعدی معنای قابل لمس میدهد و آن را برای ما ملموس میکند.
ویدئوی زیر که توسط شرکت Method Studios ساخته شدهاست یکی از نمونههای فوقالعاده است که سه مفهوم بالا در آن به زیبایی نمایش داده شدهاست.
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
نحوه تعریف متغییرها در یک برنامه می تواند تاثیر زیادی بر کارآیی برنامه داشته باشد. مقاله زیر با زبانی ساده نشان می دهد که چگونه boxing و unboxing می تواند بر بهینه سازی برنامه تاثیر داشته باشد و شش مفهوم Stack ، Heap ، Value type ، Reference Type ، boxing و unboxing را توضیح داده است. همچنین در این مقاله مشاهده میکنید که چگونه Cast کردنهای بیهوده میتواند سرعت برنامه ما را تحت تاثیر قرار دهد.
http://www.codeproject.com/Articles/76153/Six-important-NET-concepts-Stack-heap-value-types
#کاروان_جافی
لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027
کانال تلگرام:
@SoftwarePhilosophy
___
http://www.codeproject.com/Articles/76153/Six-important-NET-concepts-Stack-heap-value-types
#کاروان_جافی
لینکدین:
https://uk.linkedin.com/in/karvan-jafi-96897027
کانال تلگرام:
@SoftwarePhilosophy
___
CodeProject
Six Important .NET Concepts: Stack, Heap, Value Types, Reference Types, Boxing, and Unboxing
An introduction to stack, heap, value types, reference types, boxing, and unboxing
کتابخانه Audit.Net کتابخانه فوقالعادهای است که امکان هندل کردن تمامی سناریوهای مربوط به لاگ کردن و Audit را با معماری بسیار زیبایی در اختیار معماران نرمافزار میگذارد. این کتابخانه از فلسفه Convenction over Configuration استفاده کرده و برای تنظیم کردن آن علاوه بر روشهای متداول، به زیبایی از Fluent API استفاده شدهاست.
مساله Audit کردن عملیات برنامه همیشه انرژی زیادی از برنامهنویسان سیستمهای بزرگ میگیرد. ساخت Audit در مکانهای مختلف برنامه میتوانید اتفاق بیافتد. برای مثال در بستر Object، EntityFramework، WebApi، WCF و بسترهای دیگر میتوان فرایند Audit را فعال کرد. پیچیدگی دیگر مربوط به نحوه ذخیرهسازی Audit است. میتوان آنها را در File، Event Log، Sql Database، NoSQL Database، Azure Blob Store و بسترهای مختلف دیگر ذخیره کرد.
https://github.com/thepirat000/Audit.NET
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
مساله Audit کردن عملیات برنامه همیشه انرژی زیادی از برنامهنویسان سیستمهای بزرگ میگیرد. ساخت Audit در مکانهای مختلف برنامه میتوانید اتفاق بیافتد. برای مثال در بستر Object، EntityFramework، WebApi، WCF و بسترهای دیگر میتوان فرایند Audit را فعال کرد. پیچیدگی دیگر مربوط به نحوه ذخیرهسازی Audit است. میتوان آنها را در File، Event Log، Sql Database، NoSQL Database، Azure Blob Store و بسترهای مختلف دیگر ذخیره کرد.
https://github.com/thepirat000/Audit.NET
#مهران_داودی
لینکدین:
https://ir.linkedin.com/in/mehrandvd
کانال تلگرام:
@SoftwarePhilosophy
___
GitHub
GitHub - thepirat000/Audit.NET: An extensible framework to audit executing operations in .NET and .NET Core.
An extensible framework to audit executing operations in .NET and .NET Core. - thepirat000/Audit.NET
👍1