ده چیت شیت پرکاربرد
Rider 2018.1.1 منتشر شد
معرفی پروژه Tune
الگوریتم پردازش دوطرفهی یونیکد، جهت و سمت نمایش متن را بر اساس خواص جهتی هر حرف مشخص میکند. در این حالت اگر متن مورد نمایش، انگلیسی و یا فارسی خالص باشند به خوبی عمل میکند؛ اما اگر ترکیب این دو را در یک رشته داشته باشیم، نیاز است نحوهی جهت گیری و نمایش حروف را به Unicode bidirectional algorithm معرفی کنیم. این نوع مشکلات را فارسی زبانها در حین نمایش ترکیبی از متن فارسی و انگلیسی در Tooltips، برنامههای نمایش زیرنویسهای فیلمها، برنامههای گزارشگیری و امثال آن به وفور مشاهده میکنند.
راه حل استاندارد یونیکد آن، استفاده از حروف نامرئی یونیکد است که جهت نمایشی متن جاری را بازنویسی میکنند:
U+202A: LEFT-TO-RIGHT EMBEDDING (LRE) U+202B: RIGHT-TO-LEFT EMBEDDING (RLE) U+202D: LEFT-TO-RIGHT OVERRIDE (LRO) U+202E: RIGHT-TO-LEFT OVERRIDE (RLO) U+202C: POP DIRECTIONAL FORMATTING (PDF)
این تا اطلاع ثانوی یا POP نیز توسط حرف U202C مشخص شده و به پایان میرسد. به عبارتی یونیکد شبیه به یک پشته یا Stack عمل میکند.
مثال اول
عبارت «متن فارسی به همراه جملهی this is a test انگلیسی» را در نظر بگیرید. اکنون فرض کنید میخواهیم از آن جهت ارائه یک فایل readme مخصوص GitHub با فرمت mark down یا md استفاده کنیم:
همانطور که ملاحظه میکنید، جمله معکوس شدهاست. برای رفع این مشکل میتوان از کاراکتر نامرئی یونیکد 202b استفاده کرد. البته در mark down امکان تعریف سادهتر این کاراکتر به صورت ذیل نیز پیش بینی شدهاست:
‫
مثال دوم
اغلب نمایشگرهای چپ به راست متون نیز در حالت پیش فرض، عبارت مثال اول را معکوس نمایش میدهند:
اگر از notepad استفاده کنید، به صورت توکار امکان افزودن RLE را به ابتدای جمله دارد:
مثال سوم
در زبانهای دات نتی نیز جهت نمایش صحیح متون ترکیبی، میتوان حرف RLE را به صورت ذیل به ابتدای یک جمله اضافه کرد:
public const char RightToLeftEmbedding = (char)0x202B;
تشخیص راست به چپ بودن متن
در محیط وب جهت نمایش صحیح یک متن نیز میتوان به مرورگرها کمک کرد. تعریف dir=rtl تفاوتی با قرار دادن RLE در ابتدای یک متن ندارد. در این حالت نیاز است بدانیم حروف RTL در چه بازهای از شماره حروف یونیکد قرار میگیرند:
Right-to-left Unicode blocks for modern scripts are: Consecutive range of the main letters: U+0590 to U+05FF - Hebrew U+0600 to U+06FF - Arabic U+0700 to U+074F - Syriac U+0750 to U+077F - Arabic Supplement U+0780 to U+07BF - Thaana U+07C0 to U+07FF - N'Ko U+0800 to U+083F - Samaritan Arabic Extended: U+08A0 to U+08FF - Arabic Extended-A Consecutive presentation forms: U+FB1D to U+FB4F - Hebrew presentation forms U+FB50 to U+FDFF - Arabic presentation forms A More Arabic presentation forms: U+FE70 to U+FEFF - Arabic presentation forms B
private static readonly Regex _matchArabicHebrew = new Regex(@"[\u0600-\u06FF,\u0590-\u05FF]", RegexOptions.IgnoreCase | RegexOptions.Compiled); public static bool ContainsRtlFarsi(this string txt) { return !string.IsNullOrEmpty(txt) && _matchArabicHebrew.IsMatch(txt); }
RTLText.module.js
نمایش صحیح عبارات ممیز دار در یک گزارش راست به چپ
استاندارد یونیکد یک سری کاراکتر را «کاراکتر ضعیف» معرفی کردهاست. برای مثال کاراکتر اسلش بکار رفته در یک تاریخ هم از این دست است. بنابراین اگر در یک گزارش تولیدی، شماره کد ممیز دار و یا یک تاریخ را معکوس مشاهده میکنید به این علت است که یک «نویسه ضعیف» مثل اسلش نمیتواند جهت را تغییر دهد؛ مگر اینکه از یک «نویسه قوی» برای دستکاری آن استفاده شود (مانند RLE و POP که در ابتدای بحث معرفی شدند).
یک مطلب تکمیلی در این مورد: «iTextSharp و نمایش صحیح تاریخ در متنی راست به چپ»
این اصول در تمام محیطهایی که از یونیکد پشتیبانی میکنند صادق است و تفاوتی نمیکند که ویندوز باشد یا Adobe reader و یا یک ابزار گزارشگیری که اصلا برای محیطهای راست به چپ طراحی نشدهاست.
کار با اعراب در متون راست به چپ
در یونیکد یک حرف میتواند از یک یا چند code point تشکیل شود. در حالت FormC، هر حرف، با اعراب آن یک code point را تشکیل میدهند. در حالت FormD، حرف با اعراب آن دو code point را تشکیل خواهند داد. به همین جهت نیاز است رشته را تبدیل به حالت D کرد تا بتوان اعراب آنرا مجزای از حروف پایه، حذف نمود.
البته اعراب در اینجا به اعراب عربی ختم نمیشود. یک سری حروف اروپایی مانند "ä" ،"ö" و "ü" را نیز شامل میشود.
یک مطلب تکمیلی در این مورد: «حذف اعراب از حروف و کلمات»
Windows 11 و امنیت مبتنی بر TPM آن
The Trusted Platform Module (TPM) is a chip that is either integrated into your PC’s motherboard or added separately into the CPU. Its purpose is to help protect encryption keys, user credentials, and other sensitive data behind a hardware barrier so that malware and attackers can’t access or tamper with that data.
معرفی ویژگی Hot Reload در .NET 6.0.
مقدمهای بر NET MAUI.
An Introduction to .NET MAUI For Mobile Development
.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML.
.NET MAUI is open-source and is the evolution of Xamarin.Forms, extended from mobile to desktop scenarios, with UI controls rebuilt from the ground up for performance and extensibility. If you've previously used Xamarin.Forms to build cross-platform user interfaces, you'll notice many similarities with .NET MAUI. However, there are also some differences. Using .NET MAUI, you can create multi-platform apps using a single project, but you can add platform-specific source code and resources if necessary. One of the key aims of .NET MAUI is to enable you to implement as much of your app logic and UI layout as possible in a single code-base.
0:00 - Setup Visual Studio and MAUI Project
00:16:25 - Create MAUI Pages with C#
00:27:42 - Create MAUI Pages with XAML
00:32:28 - Explore MAUI Layouts
00:39:38 - Static Shared Resources
00:44:36 - Platform Specific Values
00:50:11 - Page Navigation
LINQPad is a powerful testing tool for all .NET developers that can help them deliver solutions in less time. In Getting the Most from LINQPad Succinctly, returning Succinctly series author José Roberto Olivas Mendoza lays out different ways to extend the functionality built into LINQPad. In this ebook, you’ll learn how to use LINQPad to query Entity Framework models in Visual Studio, how to work with the LINQPad command-line utility, how to write your own extensions and visualizers, and how to write custom data context drivers.
-
A Quick Tour of LINQPad
-
LINQPad and Entity Framework
-
LINQPad Scripting
-
LINQPad Extensibility
-
Custom Data Context Drivers