Forwarded from Mr (Mohammad SheykhVeysi)
#آشنایی_با_تاریخ_و_زمان
#قسمت_اول
تاریخ و زمان بخش مهمی از زندگیه روزمره و همچنین جزئی جدایی ناپذیر در پروژه های ماست
در این مقاله به بررسی تایپ های مختلف برای نگه داری تاریخ و زمان می پردازیم و پیرامون آنها طی قسمت های مختلف بحث خواهیم کرد.
یک شئ از نوع
یکی از این مشخصه ها
کاربران و همچنین برنامه نویسان به فرمت های مختلفی از زمان تاریخ و زمان نیاز دارند. برای مثال تاریخ در فرمت
پاسخ واضح است . هر متد برای هدف خاصی است . در اینجا به بررسی برخی میپردازیم
DateTimeOffset
این تایپ در
فرمت ذخیره سازی تاریخ و زمان در این تایپ به این شکل است
اکثر مشخصه های این تایپ با تایپ DateTime یکسان هستند اما مشخصه های جدیدی نیز به آن اضافه شده است
برای مثال اگر متغیری از نوع
اما در بعضی سناریو های خاص مشکلاتی و چالش هایی وجود دارد به عنوان مثال اگه سناریویی مانند مثال زیر داشته باشید :
#قسمت_اول
تاریخ و زمان بخش مهمی از زندگیه روزمره و همچنین جزئی جدایی ناپذیر در پروژه های ماست
در این مقاله به بررسی تایپ های مختلف برای نگه داری تاریخ و زمان می پردازیم و پیرامون آنها طی قسمت های مختلف بحث خواهیم کرد.
DateTime
این نوع داده یک ساختار ValueType
مانند int , double
و .. است که در فضای نام System
قابل دسترسی میباشد. این struct
اینتر فیس های IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
پیاده سازی کرده است .یک شئ از نوع
DateTime
دارای متد هایی برای دستکاری زمان میباشد، متدهایی برای افزودن Day ,Hour,Minute
و همچنین متدهایی یرای تبدیل یک رشته با فرمت تاریخ و زمان به یک شئ ار نوع DateTime
و همچنین دارای مشخصه هایی برای دریافت روز ، ماه ، ساعت از آن شی است.یکی از این مشخصه ها
Kind
میباشد و مشخص کننده نوع زمان برساس مقادیر خروجی زیر است Unspecified، Utc، Local timeDateTime Formatting
کاربران و همچنین برنامه نویسان به فرمت های مختلفی از زمان تاریخ و زمان نیاز دارند. برای مثال تاریخ در فرمت
"mm/dd/yyyy"
که به صورت 05/31/2019 نمایش داده خواهد شد.Handling Nullable DateTimeهمانطور که گفته شد
DateTime
یک ValueType
است و به طور پیشفرض نمیتوان به آن مقدار(به اصطلاح) null
را اختصاص داد . یکی از راه های اینکه یک ValueType
مقدار null
را بپذیرد باید
elvis-operator را بعد از تعریف نوغ یک متغیر استفاده کرد DateTime? nullDateTime = null;بدین ترتیب
valueType
شما نال پذیر خواهد شد .Parse string to DateTime object
گاهی نیاز داریم تا یک رشته را که فرمت تاریخ و زمان دارن به یک شئ DateTime
تبدیل کنیم تا عملیات مورد نظرمان را روی انجام دهیم برای انجام دادن این کار متد های متعددی در اختیارمان قرار دارد مثال : Convert.ToDateTime()
DateTime.Parse()
DateTime.ParseExact()
DateTime.TryParse()
DateTime.TryParseExact()
سوالی که ممکن است در ذهن شما ایجاد شود این است که دلیل این تعداد متد برای تبدیل رشته به زمان چیست ؟ پاسخ واضح است . هر متد برای هدف خاصی است . در اینجا به بررسی برخی میپردازیم
DateTime.ParseExact()
این متد یه شما این اطمینان را میدهد که رشته خودرا به یک فرمت مشخص تبدیل کنید . اما اگر فرمت رشته ورودی با فرمت تعیین شده توسط شما متفاوت باشد سبب صادر شدن یک خطا در برنامه میشود پس اگر از فرمت رشته ورودی خود مطممئن هستید وقصد تبدیل آن به فرمت خود را دارید این متد انتخاب خوبی است.DateTime.TryParseExact()
خروجی این متد یه مفدار بولین است و این اطمینان رو به شما میدهد که رشته ورودی قابل تبدیل به فرمت مشخص شده میباشد یا خیر. واگر قابل تبدیل نباشد خطاهای صادر شده را مدیریت میکند.پس از این جهت هیچ نگرانی برای شما وجود ندارد. DateTimeOffset
این تایپ در
Net framework 3.5
معرفی شد از این نوع تایپ زمانی باید استفاده کرد که اختلاف زمانی برحسب UTC برای ما مهم باشد و بخواهیم در هنگام ذخیره سازی تاریخ و زمان ، زمان به صورت محلی ذخیره نشود و به همراه آن اختلاف زمانی(Offset) نیز ذخیره شود.فرمت ذخیره سازی تاریخ و زمان در این تایپ به این شکل است
Date + Time + Offsetدرواقع تعبیر و نام گذاری این تایپ به این شکل(
DateTimeWithOffset
) باعث درک بهتر این مسئله میشود.اکثر مشخصه های این تایپ با تایپ DateTime یکسان هستند اما مشخصه های جدیدی نیز به آن اضافه شده است
DateTimeOffset.DateTime
این مشخصه مقدار زمان را بدون تبدیل ان به زمان محلی برمی گرداند.DateTimeOffset.LocalDateTime
این مشخصه مقدار زمان را براساس زمان محلی برمیگرداند.DateTimeOffset.Offset
این مشخصه میزان Offset از UTC را برمیگرداند.DateTimeOffset.UtcDateTime
این مشخصه زمان را براساس UTC برمیگرداند.برای مثال اگر متغیری از نوع
DateTimeOffset
تعریف کنیم وزمان حال را به آن اختصاص دهیم نتیجه به این صورت خواهد بود05/31/2019 03:11:56 PM +04:30
که 05/31/2019 03:11:56 PM
تاریخ و زمان و +04:30
و اختلاف زمانی نسبت به UTC
خواهد بود که اگر اختلاف زمانی را با تاریخ و زمان جمع کنیم UTC
بدست خواهد آمد. این بهترین راه برای کار کردن با محدوده زمانی های مختلف است.Storing DateTime (UTC) vs. storing DateTimeOffsetهمیشه و همیشه زمان را به صورت
UTC
در دیتابیس ذخیره کنید و متناسب با منطقه زمانی کاربر نمایش دهید.اما در بعضی سناریو های خاص مشکلاتی و چالش هایی وجود دارد به عنوان مثال اگه سناریویی مانند مثال زیر داشته باشید :
#ادامه_مطلب
*زمانی که شما یک سرور و چندین کلاینت با time zone های متفاوت دارید
*کلاینت اطلاعاتی را با توجه به تاریخ میسازد
*کلاینت قرار است اطلاعات ساخته شده را روی سرور ذخیره کند
**برای سناریو بالا اگر زمان را به صورت
زمان هم به صورت
و همچنین همه ی کلاینت ها از زمان
**برای همین سناریو اگر زمان را فقط به صورت
زمان فقط به صورت UTC ذخیره می شود و دیگر کلاینت ها از زمان محلیه جایی که دیتای مربوطه در آن سازماندهی و ساخته شده اطلاعاتی ندارند
شما اطلاعاتی در مورد زمان محلی مکانی که اطلاعات در آن ساخته شده است، اطلاعاتی ندارید
دیگر کلاینت ها تنها می توانند زمان محلی خود را از پایگاه داده (با استفاده از زمان UTC) محاسبه کنند نه زمان محلی کلاینتی که داده ها در آن ایجاد شده اند.
مثال ساده در این مورد سیستم رزرو بلیط هواپیما است که بلیط باید دو زمان را شامل شود.1-زمان بلند شدن هواپیما (منطقه زمانی شهری که از ان پرواز را شروع کرده است) و زمان فرود هواپیما (منطقه زمانی شهری که در آن فرود می آید)
TimeSpan
ازکاربردهای این نوع داده برای ذخیره فواصل زمانی استفاده میشود . که میتواند این فواصل زمانی را در قالب اعداد مثبت و منفی ذخیره کند. این نوع تایپ بهترین نوع برای ذخیره سازی ساعت میباشد
*به دلیل گستردگی مبحث زمان بقیه توضیحات در قسمت های بعد ارائه خواهد شد .
*زمانی که شما یک سرور و چندین کلاینت با time zone های متفاوت دارید
*کلاینت اطلاعاتی را با توجه به تاریخ میسازد
*کلاینت قرار است اطلاعات ساخته شده را روی سرور ذخیره کند
**برای سناریو بالا اگر زمان را به صورت
DateTimeOffset
ذخیره کنیمزمان هم به صورت
UTC
و همچنین اختلاف زمانی (Offset
) با زمان محلی کلاینت ذخیره میشود و همچنین همه ی کلاینت ها از زمان
UTC
همه دیتا ها و همچنین از زمان محل جایی که هر داده در آن سازماندهی و ساخته شده است اطلاع دارند**برای همین سناریو اگر زمان را فقط به صورت
UTC
ذخیره کنیم در اینصورت زمان فقط به صورت UTC ذخیره می شود و دیگر کلاینت ها از زمان محلیه جایی که دیتای مربوطه در آن سازماندهی و ساخته شده اطلاعاتی ندارند
شما اطلاعاتی در مورد زمان محلی مکانی که اطلاعات در آن ساخته شده است، اطلاعاتی ندارید
دیگر کلاینت ها تنها می توانند زمان محلی خود را از پایگاه داده (با استفاده از زمان UTC) محاسبه کنند نه زمان محلی کلاینتی که داده ها در آن ایجاد شده اند.
مثال ساده در این مورد سیستم رزرو بلیط هواپیما است که بلیط باید دو زمان را شامل شود.1-زمان بلند شدن هواپیما (منطقه زمانی شهری که از ان پرواز را شروع کرده است) و زمان فرود هواپیما (منطقه زمانی شهری که در آن فرود می آید)
TimeSpan
ازکاربردهای این نوع داده برای ذخیره فواصل زمانی استفاده میشود . که میتواند این فواصل زمانی را در قالب اعداد مثبت و منفی ذخیره کند. این نوع تایپ بهترین نوع برای ذخیره سازی ساعت میباشد
*به دلیل گستردگی مبحث زمان بقیه توضیحات در قسمت های بعد ارائه خواهد شد .
Docs
TimeSpan Struct (System)
<p sourcefile="api/System.TimeSpan.yml" sourcestartlinenumber="1" jsonPath="/summary">Represents a time interval.
Forwarded from Web Devs
#ABluePersianDateTimePicker
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
Install-Package ABluePersianDateTimePicker -Version 1.0.4@fullStackDevs
dotnet add package ABluePersianDateTimePicker --version 1.0.4
<PackageReference Include="ABluePersianDateTimePicker" Version="1.0.4" />
paket add ABluePersianDateTimePicker --version 1.0.4
#javascript
#VSCode
ویژوال استودیو کد , تجربه ای عالی در ویرایشگر متن درست مثل IDE ارائه می دهد ، در اینجا برخی از extentions هایی در ویژوال استودیو کد موجود هست که برای توسعه وب با استفاده از جاوا اسکریپت، HTML و CSS مفید است.
این مجموعه شامل extentions ,git tools و تم های پیشنهادی میباشد که شما بستگی به نیازهایتان می توانید برخی از آنها را انتخاب کنید و یا غیر فعال کنید
🔹️ Download and try:
https://marketplace.visualstudio.com/items?itemName=GulajavaMinistudio.javascript-complete-packs
🔸️ List of extensions , Github Sources and release notes can be seen here:
https://github.com/GulajavaMinistudio/FullJSExtensionPackCode
#Code #Extensions #Pack
@fullStackDevs
#VSCode
ویژوال استودیو کد , تجربه ای عالی در ویرایشگر متن درست مثل IDE ارائه می دهد ، در اینجا برخی از extentions هایی در ویژوال استودیو کد موجود هست که برای توسعه وب با استفاده از جاوا اسکریپت، HTML و CSS مفید است.
این مجموعه شامل extentions ,git tools و تم های پیشنهادی میباشد که شما بستگی به نیازهایتان می توانید برخی از آنها را انتخاب کنید و یا غیر فعال کنید
🔹️ Download and try:
https://marketplace.visualstudio.com/items?itemName=GulajavaMinistudio.javascript-complete-packs
🔸️ List of extensions , Github Sources and release notes can be seen here:
https://github.com/GulajavaMinistudio/FullJSExtensionPackCode
#Code #Extensions #Pack
@fullStackDevs
Visualstudio
Full JavaScript Complete Pack - Visual Studio Marketplace
Extension for Visual Studio Code - All essential extension and theme that useful for web development with JavaScript and Node JS in front end and back end.
#Docker
#Container
این روزها صحبت داکر #Docker در محافل فناوری داغ است و به احتمال زیاد از گوشه و کنار تعریفهای داکر به گوش شما خورده است.
حدود ۵ سال پیش فردی با نام سالامان هایکز (Solomon Hykes)، سازوکاری با نام داکر را راهاندازی کرد. هدف از این کار تعامل راحتتر با کانتینرها (Containers) بود. این ایده با موفقیت روبرو شد و در سال ۲۰۱۴ پس از انتشار داکر نسخه ۱.۰ شاهد افزایش محبوبیت آن بودیم.
در نتیجه شرکتها یکی پس از دیگری اپلیکیشنهای تحت سرور را به جای ماشینهای مجازی در بستر داکر راهاندازی کردند. جالب است بدانید چندین بانک بزرگ در زمانی که داکر هنوز در نسخه ۱.۰ به سر میبرد از این فناوری کمک گرفتند که این امر برای فناوری که در نسخه اولیه قرار دارد از امنیت بالای داکر حکایت میکند.
ابنا به گزارش داکر چیزی بیشتر از ۳.۵ اپلیکیشن در کانتینرها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن از این طریق دانلود شده است.
شرکت های بزرگی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کرده اند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده میکنند.
🔹داکر چیست؟
داکر امکانی را فراهم آورده است که پروسهها و نرمافزارها به صورت مجزا در محیط کاملا ایزولهای بر روی کرنل لینوکس راهاندازی شود که به این محیط و بستهی ایزوله، کانتینر (Container) میگویند.
کانتینر این امکان را برای برنامه نویسان و توسعه دهندگان اپلیکیشن ها فراهم می کند تا یک برنامه را با تمام ماژول ها و کامپوننتهای وابسته آن ( مانند کتابخانه ها ، توابع و … ) یکی کرده و به صورت یک پکیج درآورده تا آن برنامه تولید شده در پلتفرم ها و سیستمهای مختلف بدون مشکل اجرا شود.
داکر وظیفه مدیریت کانتینرها را به عهده دارد و بیشتر شبیه یک ماشین مجازی عمل میکند، تفاوت داکر با ماشین مجازی در این است که در VM (یا ماشین مجازی) برای اجرای اپلیکیشن و برنامه های مختلف که بخواهیم به صورت ایزوله و مجزا از هم کار کنند باید VM های مختلف ساخته شود که همین موضوع بار پردازشی و هدر رفت منابع سیستمی را روی سرور به همراه دارد.
ولی در Docker روی یک VM خاص که میتواند دارای سیستم عامل ویندوز یا لینوکس باشد، ماژول داکر نصب شده و سپس روی سرویس داکر، کانتینرهای مختلف حاوی برنامه ها و اپلیکیشن های مختلف نصب و اجرا میشوند بدون اینکه کانتینرها به هم دسترسی داشته باشند. بدین صورت کانتینرها از هم ایزوله هستند و نیاز ما برای ایجاد چندین VM را مرتفع میسازند.
📌لینک منبع
@fullStackDevs
#Container
این روزها صحبت داکر #Docker در محافل فناوری داغ است و به احتمال زیاد از گوشه و کنار تعریفهای داکر به گوش شما خورده است.
حدود ۵ سال پیش فردی با نام سالامان هایکز (Solomon Hykes)، سازوکاری با نام داکر را راهاندازی کرد. هدف از این کار تعامل راحتتر با کانتینرها (Containers) بود. این ایده با موفقیت روبرو شد و در سال ۲۰۱۴ پس از انتشار داکر نسخه ۱.۰ شاهد افزایش محبوبیت آن بودیم.
در نتیجه شرکتها یکی پس از دیگری اپلیکیشنهای تحت سرور را به جای ماشینهای مجازی در بستر داکر راهاندازی کردند. جالب است بدانید چندین بانک بزرگ در زمانی که داکر هنوز در نسخه ۱.۰ به سر میبرد از این فناوری کمک گرفتند که این امر برای فناوری که در نسخه اولیه قرار دارد از امنیت بالای داکر حکایت میکند.
ابنا به گزارش داکر چیزی بیشتر از ۳.۵ اپلیکیشن در کانتینرها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن از این طریق دانلود شده است.
شرکت های بزرگی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کرده اند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده میکنند.
🔹داکر چیست؟
داکر امکانی را فراهم آورده است که پروسهها و نرمافزارها به صورت مجزا در محیط کاملا ایزولهای بر روی کرنل لینوکس راهاندازی شود که به این محیط و بستهی ایزوله، کانتینر (Container) میگویند.
کانتینر این امکان را برای برنامه نویسان و توسعه دهندگان اپلیکیشن ها فراهم می کند تا یک برنامه را با تمام ماژول ها و کامپوننتهای وابسته آن ( مانند کتابخانه ها ، توابع و … ) یکی کرده و به صورت یک پکیج درآورده تا آن برنامه تولید شده در پلتفرم ها و سیستمهای مختلف بدون مشکل اجرا شود.
داکر وظیفه مدیریت کانتینرها را به عهده دارد و بیشتر شبیه یک ماشین مجازی عمل میکند، تفاوت داکر با ماشین مجازی در این است که در VM (یا ماشین مجازی) برای اجرای اپلیکیشن و برنامه های مختلف که بخواهیم به صورت ایزوله و مجزا از هم کار کنند باید VM های مختلف ساخته شود که همین موضوع بار پردازشی و هدر رفت منابع سیستمی را روی سرور به همراه دارد.
ولی در Docker روی یک VM خاص که میتواند دارای سیستم عامل ویندوز یا لینوکس باشد، ماژول داکر نصب شده و سپس روی سرویس داکر، کانتینرهای مختلف حاوی برنامه ها و اپلیکیشن های مختلف نصب و اجرا میشوند بدون اینکه کانتینرها به هم دسترسی داشته باشند. بدین صورت کانتینرها از هم ایزوله هستند و نیاز ما برای ایجاد چندین VM را مرتفع میسازند.
📌لینک منبع
@fullStackDevs
Docker
Docker: Accelerated Container Application Development
Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.
#TypeScript
🔹 تایپ اسکریپت ورژن 3.5 اعلام شد.
البته یه انتشار عظیم نیست ولی روی بحث های بهبود سرعت ، performance و incremental compilation ( در زمینه ی کامپایل استفاده میشود) کار کرده
http://tiny.cc/unac8y
@fullStackDevs
🔹 تایپ اسکریپت ورژن 3.5 اعلام شد.
البته یه انتشار عظیم نیست ولی روی بحث های بهبود سرعت ، performance و incremental compilation ( در زمینه ی کامپایل استفاده میشود) کار کرده
http://tiny.cc/unac8y
@fullStackDevs
TypeScript
Announcing TypeScript 3.5 | TypeScript
Today we’re happy to announce the availability of TypeScript 3.5! If you’re new to TypeScript, it’s a language that builds on JavaScript that adds optional static types. TypeScript code gets type-checked to avoid common mistakes like typos and accidental…
#VueJs
Vue.js 2.2 complete api cheat sheet
تمام Api های موجود در vue js بهمراه مثال آورده
📌 لینک مطلب
@fullStackDevs
Vue.js 2.2 complete api cheat sheet
تمام Api های موجود در vue js بهمراه مثال آورده
📌 لینک مطلب
@fullStackDevs
#PWA
Patterns for Promoting PWA Installation on Mobile
How to promote the installation of Progressive Web Apps and best practices to follow.http://tiny.cc/ycpn8y
@fullStackDevs
Patterns for Promoting PWA Installation on Mobile
How to promote the installation of Progressive Web Apps and best practices to follow.http://tiny.cc/ycpn8y
@fullStackDevs
Google Developers
Patterns for Promoting PWA Installation (mobile) | Web Fundamentals
How to promote installation of Progressive Web Apps and best practices.
#DesignPattern
#TypeScript
دیزاین پترن در تایپ اسکریپت
🌀 Design Pattern in TypeScript
https://refactoring.guru/design-patterns/typescript
@FullStackDevs
#TypeScript
دیزاین پترن در تایپ اسکریپت
🌀 Design Pattern in TypeScript
https://refactoring.guru/design-patterns/typescript
@FullStackDevs
refactoring.guru
Design Patterns in TypeScript
The catalog of annotated code examples of all design patterns, written in TypeScript.
#Azure
#AppService
نه ( ۹ ) نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
لینک مطلب
#AppService
نه ( ۹ ) نکته پرفورمنسی برای Azure App Service
سرویس Azure App Service مهمترین سرویس Azure برای هاستینگ اپلیکیشنها است که امکانات scaling زیادی دارد. هر App Service جلوی خود یک Load Balancer دارد تا بتواند ترافیک را پخش و بالانس کند.
در مقاله زیر از Telerik، اسکات آلن ۹ نکته پرفورمنسی برای کار با App Service را توضیح داده که کمک میکنند اصطلاحا Even Faster شوید!!!
لینک مطلب
Telerik Blogs
Nine Performance Tips for Azure App Services
Squeezing every bit of performance from your application hosted in Azure App Services will help you save money and keep your customers happy.
This media is not supported in your browser
VIEW IN TELEGRAM
#VSCode
#Edge
VS Code - Elements for Microsoft Edge (Chromium)
ابزار Elements مرورگر را در داخل ویرایشگر VSCode نمایش دهید و از آن سریعتر برای رفع نکات ظاهری، طرح بندی (Layout) و CSS با سایت خود استفاده کنید.
یک افزونه VSCode که به شما اجازه می دهد از ابزار مرورگر داخل ویرایشگر استفاده کنید. این ابزار به یک نمونه از Microsoft Edge متصل می شود که به شما امکان می دهد که میتوانید در زمان اجرا ساختار HTML ، طرح را تغییر دهید و یا css را اصلاح کنید و دیگر نیاز نیست تغییرات رو روی مرورگر ببینید و به vscode برگردید برای تغییرات !
برای نصب این افزونه میتونید از لینک زیر استفاده کنید.
Elements for Microsoft Edge
@fullStackDevs
#Edge
VS Code - Elements for Microsoft Edge (Chromium)
ابزار Elements مرورگر را در داخل ویرایشگر VSCode نمایش دهید و از آن سریعتر برای رفع نکات ظاهری، طرح بندی (Layout) و CSS با سایت خود استفاده کنید.
یک افزونه VSCode که به شما اجازه می دهد از ابزار مرورگر داخل ویرایشگر استفاده کنید. این ابزار به یک نمونه از Microsoft Edge متصل می شود که به شما امکان می دهد که میتوانید در زمان اجرا ساختار HTML ، طرح را تغییر دهید و یا css را اصلاح کنید و دیگر نیاز نیست تغییرات رو روی مرورگر ببینید و به vscode برگردید برای تغییرات !
برای نصب این افزونه میتونید از لینک زیر استفاده کنید.
Elements for Microsoft Edge
@fullStackDevs
#Security
#Hsts
#قسمت_اول
What Is Hsts?
پروتکل Http یک پروتکل ناامن است و اگر هکر ی بتواند دربین کلاینت و سرور موفق به شنود خط شود به راحتی دیتای تبادل شده بدون کدگذاری شدن برای او قابل مشاهده خواهد بود .
نام این حملات
( SSL-stripping یا man-in-the-middle )
میباشد.
برای حل این مشکل از نسخه امن Http با عنوان Https استفاده میکنیم اما این پروتکل نیز ضعف های امنیتی خود را دارد .
زمانی که برای وب سایت خود ssl تهیه میکنید و https را فعال میکنید از این به بعد وب سایت شما از طریق یک درخواست Https در دسترس خواهد بود اما شما نیز بایستی تنظیمات وب سایت خود را به گونه انجام دهید که فقط به صورت https در دسترس باشد و فقط درخواست های Https را بپزیرد در غیر اینصورت کاربر میتواند درخواستی مبتی بر Http به سایت شما انجام دهد. و مراحل آن به صورت زیر است .
1. کاربر ابتدا ادرس sabteahval.ir را در نوار آدرس مرورگر خود می نویسد.
2. مرورگر به صورت پیشفرض آدرس
http://www.sabteahval.ir/
را بار گذاری میکند.
3.و وب سایت sabteahval.ir در پاسخ درخواست به صورت ریدایرکت دائمی یا موقت به آدرس
https://www.sabteahval.ir/
مرور گر را آگاه میسازد .
4. واین بارمرورگر این ریدایرکت را میبیند و به جای سایت قبلی وبسایت
https://www.sabteahval.ir/
را بارگذاری میکند.
همانطور که میبینید با اینکه برای وب سایت خود ssl تهیه نموده و Https را فعال نموده اید باز هم وب سایت شما پذیرای دارخواست های http بوده و میتوانید در معرض حملات
SSL-stripping
قرار بگیرید و هکر در مرحله 3 (بالا) می تواند کاربر را به آدرس دیگری که تقریبا مشابه سایت شماست ریدایرکت کند.(فیشینگ)
وقتی که Hsts را فعال میکنید . اولین باری که مرورگر کاربر به سایتان درخواست http می فرستد در پاسخ درخواست ، هدر
Strict-Transport-Security
به ResposeHeader افزوده میشود و از این به بعد این هدر بر روی مرورگر کاربر فعال باقی میماند. و از این به بعد که کاربر بخواهد درخواستی http به سایتان بفرستد با فعال بودن این هدر مرورگر به صورت پیشفرض یک درخواست Https میفرستد.
@fullStackDevs
#Hsts
#قسمت_اول
What Is Hsts?
پروتکل Http یک پروتکل ناامن است و اگر هکر ی بتواند دربین کلاینت و سرور موفق به شنود خط شود به راحتی دیتای تبادل شده بدون کدگذاری شدن برای او قابل مشاهده خواهد بود .
نام این حملات
( SSL-stripping یا man-in-the-middle )
میباشد.
برای حل این مشکل از نسخه امن Http با عنوان Https استفاده میکنیم اما این پروتکل نیز ضعف های امنیتی خود را دارد .
زمانی که برای وب سایت خود ssl تهیه میکنید و https را فعال میکنید از این به بعد وب سایت شما از طریق یک درخواست Https در دسترس خواهد بود اما شما نیز بایستی تنظیمات وب سایت خود را به گونه انجام دهید که فقط به صورت https در دسترس باشد و فقط درخواست های Https را بپزیرد در غیر اینصورت کاربر میتواند درخواستی مبتی بر Http به سایت شما انجام دهد. و مراحل آن به صورت زیر است .
1. کاربر ابتدا ادرس sabteahval.ir را در نوار آدرس مرورگر خود می نویسد.
2. مرورگر به صورت پیشفرض آدرس
http://www.sabteahval.ir/
را بار گذاری میکند.
3.و وب سایت sabteahval.ir در پاسخ درخواست به صورت ریدایرکت دائمی یا موقت به آدرس
https://www.sabteahval.ir/
مرور گر را آگاه میسازد .
4. واین بارمرورگر این ریدایرکت را میبیند و به جای سایت قبلی وبسایت
https://www.sabteahval.ir/
را بارگذاری میکند.
همانطور که میبینید با اینکه برای وب سایت خود ssl تهیه نموده و Https را فعال نموده اید باز هم وب سایت شما پذیرای دارخواست های http بوده و میتوانید در معرض حملات
SSL-stripping
قرار بگیرید و هکر در مرحله 3 (بالا) می تواند کاربر را به آدرس دیگری که تقریبا مشابه سایت شماست ریدایرکت کند.(فیشینگ)
وقتی که Hsts را فعال میکنید . اولین باری که مرورگر کاربر به سایتان درخواست http می فرستد در پاسخ درخواست ، هدر
Strict-Transport-Security
به ResposeHeader افزوده میشود و از این به بعد این هدر بر روی مرورگر کاربر فعال باقی میماند. و از این به بعد که کاربر بخواهد درخواستی http به سایتان بفرستد با فعال بودن این هدر مرورگر به صورت پیشفرض یک درخواست Https میفرستد.
@fullStackDevs
#Security
#Hsts
#قسمت_دوم(قسمت اخر)
Enforce SSL And Use Hsts in Asp Core
در این پست که پست آخر در این مورد نیز میباشد به فعال سازی Https و نحوه افزودن هدر Strict-Transport-Security به ResposeHeader می پردازیم .
برای فعال سازی Hsts مسلم است که ابتدا باید Https را فعال نمایید که به دو صورت انجام میشود.
1.فعال کردن https فقط برای بخش هایی از سایت
2. فعال کردن Https برای کل سایت
در حالت اول میتوانید از اتریبیوت [RequireHttps] بربالای کنترل خود استفاده کنید.(این روش اصلا برای webapi توصیه نمی شود).
روش دوم استفده از گلوبال فیلتر هاست و به این صورت انجام میشود
Third Party Library
نظیر
اما از این نسخه به بعد میدلوری به نام
هدر را برای SubDomain های تان نیز فعال میکند.
MaxAge
مدت زمان فعال بودن هدر
ExcludedHosts
افزودن لیست سایت های که نیاز به فعال سازی هدر Hsts را برای آنها نیست.
Preload
اما هنوز ما مشکلی با اولین در خواست به سایتمان که به صورت پیشفرض توسط مرورگر http ارسال میشود داریم . این مشکل را میتوانید به کمک سایت https://hstspreload.org/ حل کنید
کافیست دامنه سایت تان را در آن ثبت کنید و در Release های بعدی مرورگر کروم دامنه سایت تان به صورت توکار در Preload List های مروگر خواهد بود و مرورگر میداند برای سایت تان باید از Https استفده کند.
مرورگر های فایر فاکس ، سافاری ،اپرا، IE 11 ،Edge نیز از همین Preload List کروم استفاده میکنند.
@fullStackDevs
https://t.me/fullStackDevs
#Hsts
#قسمت_دوم(قسمت اخر)
Enforce SSL And Use Hsts in Asp Core
در این پست که پست آخر در این مورد نیز میباشد به فعال سازی Https و نحوه افزودن هدر Strict-Transport-Security به ResposeHeader می پردازیم .
برای فعال سازی Hsts مسلم است که ابتدا باید Https را فعال نمایید که به دو صورت انجام میشود.
1.فعال کردن https فقط برای بخش هایی از سایت
2. فعال کردن Https برای کل سایت
در حالت اول میتوانید از اتریبیوت [RequireHttps] بربالای کنترل خود استفاده کنید.(این روش اصلا برای webapi توصیه نمی شود).
روش دوم استفده از گلوبال فیلتر هاست و به این صورت انجام میشود
if (!_env.IsDevelopment())
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
}
مرحله بعدی فعال کردن Hsts میباشد. از نسخه 2.1 فریم Asp Core به بعد به صورت توکار میدلوری برای پیاده سازی Hsts به فریم وورک اضافه شد و تا قبل ان باید ازThird Party Library
نظیر
NWebsec.AspNetCore.Middleware
Joonasw.AspNetCore.SecurityHeaders
استفاده می کردید .اما از این نسخه به بعد میدلوری به نام
app.UseHsts();
به صورت توکار وجود دارد که کار افزودن هدر Strict-Transport-Security
انجام میدهد . if (env.IsDevelopment())
{
//
}
else
{
app.UseHsts(); // Add This
}
برای انجام تنظیمات خاص خود بر روی این هدر میتوانید در ConfigureServices
کانفیگ های خود را به این صورت اعمال نمایید.if (!_env.IsDevelopment())
{
services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
}
IncludeSubDomainsهدر را برای SubDomain های تان نیز فعال میکند.
MaxAge
مدت زمان فعال بودن هدر
Strict-Transport-Security
بر روی مرورگر کاربر به صورت پیشفرض 30 روز تنظیم شده است.ExcludedHosts
افزودن لیست سایت های که نیاز به فعال سازی هدر Hsts را برای آنها نیست.
Preload
اما هنوز ما مشکلی با اولین در خواست به سایتمان که به صورت پیشفرض توسط مرورگر http ارسال میشود داریم . این مشکل را میتوانید به کمک سایت https://hstspreload.org/ حل کنید
کافیست دامنه سایت تان را در آن ثبت کنید و در Release های بعدی مرورگر کروم دامنه سایت تان به صورت توکار در Preload List های مروگر خواهد بود و مرورگر میداند برای سایت تان باید از Https استفده کند.
مرورگر های فایر فاکس ، سافاری ،اپرا، IE 11 ،Edge نیز از همین Preload List کروم استفاده میکنند.
@fullStackDevs
https://t.me/fullStackDevs
Telegram
Web Devs
Articles, News, Jokes, Quotes, Back-End and UI/UX for web developers.
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Forwarded from Web Devs
#NewVersion
Fix bug on installing!
@fullStackDevs
Fix bug on installing!
Install-Package ABluePersianDateTime -Version 1.0.5
dotnet add package ABluePersianDateTime --version 1.0.5
paket add ABluePersianDateTime --version 1.0.5
@fullStackDevs
Forwarded from Web Devs
#PersianDateTime
#CSharp
🔹 ساختار تاریخ شمسی با متد های تبدیل به تاریخ میلادی و یا هجری
🔸 متدهای مختلف برای بدست آوردن رشته های مختلف تاریخ شمسی با فرمت های متفاوت و اعداد فارسی
🔹 پشتیبانی از سال کبیسه
🔸 شبیه سازی کامل ساختار DateTime
.NetFramework 4.5
نصب پکیج :
#CSharp
🔹 ساختار تاریخ شمسی با متد های تبدیل به تاریخ میلادی و یا هجری
🔸 متدهای مختلف برای بدست آوردن رشته های مختلف تاریخ شمسی با فرمت های متفاوت و اعداد فارسی
🔹 پشتیبانی از سال کبیسه
🔸 شبیه سازی کامل ساختار DateTime
.NetFramework 4.5
نصب پکیج :
Install-Package ABluePersianDateTime -Version 1.0.3
dotnet add package ABluePersianDateTime --version 1.0.3
paket add ABluePersianDateTime --version 1.0.3
@fullStackDevsForwarded from Web Devs
#ABluePersianDateTimePicker
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
توضیحات تکمیلی
نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"
🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"
🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"
🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"
ورژن جدید ریایز شده :
Install-Package ABluePersianDateTimePicker -Version 1.0.4@fullStackDevs
dotnet add package ABluePersianDateTimePicker --version 1.0.4
<PackageReference Include="ABluePersianDateTimePicker" Version="1.0.4" />
paket add ABluePersianDateTimePicker --version 1.0.4