PostgreSQL, or Postgres, is a relational database management system that provides an implementation of the SQL querying language. It’s standards-compliant and has many advanced features like reliable transactions and concurrency without read locks.
This guide demonstrates how to quickly get Postgres up and running on an Ubuntu 20.04 server, from installing PostgreSQL to setting up a new user and database. If you’d prefer a more in-depth tutorial on installing and managing a PostgreSQL database, see How To Install and Use PostgreSQL on Ubuntu 20.04.
In this article, we'll walk you through updating an existing ASP.NET Core 1.x project to ASP.NET Core 2.0. Migrating your application to ASP.NET Core 2.0 enables you to take advantage of many new features and performance improvements.
وبلاگها ، سایتها و مقالات ایرانی (داخل و خارج از ایران)
- محاسبه کاربران آنلاین در ASP.NET
- نحوه جابجایی tempdb در SQL Server 2005 و ضرورت آن
- Firefox فارسی در دست تهیه
- تست نرمافزار در Agile Software Development
- محافظت از فرمهای اینترنتی با ریکپچا
- تبادل NTFS و رجیستری
- غیر فعال کردن اشتراک درایوهای مخفی در ویندوز
- تحت نظر قرار دادن پوشههای سیستمی در سی شارپ
- نحوه استفاده از jQuery در ASP.Net
- پلاگین کیبورد مجازی فارسی برای jQuery
- بکارگیری ویژگیهای CSS3 در طراحی وب
- ۹ قابلیت پنهان گوگل که باید بدانید
- فیدبرنر و گوگل
- پشتیبانی چیست و چگونه باید انجام شود
- دانشآموزان ایرانی در IT از معلمان خود باسوادترند
- امنیت وبلاگ وردپرس خود را بالا ببرید
- سرعت تبدیل اعداد انگلیسی به فارسی
- آیا پنگوئن میتواند پنجره را بشکند؟ و نصیحت لینوکسی
- دل پر خون کاربران از عملکرد وزارت ICT در حوزه اینترنت
- انتخاب افقی قسمتی از کد!
Visual Studio
ASP. Net
- از سیر تا پیاز نحوهی کارکرد سشن در ASP.Net
- آشنایی با برنامه Fiddler
- jQuery, JSON, and ASP.NET
- ASP کلاسیک مرده است!
- دستکاری ظاهر شیرپوینت با استفاده از jQuery
- بررسی سایت whitehouse.gov
طراحی و توسعه وب
- ایجاد گوشههای گرد
- استفاده از فایرفاکس برای غلط یابی یک صفحه وب
- کتابخانه DateJs (و اگر وقت کردید سری به این پست بزنید)
- 45 تکنیک JQuery
- نحوه نمایش لینکهای خود را بهبود بخشید
- Formy CSS Form Framework
- Top list of ajax upload scripts
اسکیوال سرور
- به روز رسانی سوم اس کیوال سرور 2008 ، لیست موارد فیکس شده، دریافت
- طراحی جدید سایت اس کیوال سرور 2008
- آشنایی با لاگ فایلها در SQL Server
- تولید اعداد منحصربفرد در اس کیوال سرور
- از sp_detach_db استفاده نکنید!
سی شارپ
عمومی دات نت
- UTF8Encoding.Default != Encoding.UTF8
- مقایسه Nhibernate و Linq
- مقایسه Entity Framework و LINQ to SQL
- بررسی اندازه یک رشته در دات نت
- مونو و Android
- Google Maps for Windows Forms
- برگههای تقلب دات نت
- دایرکتوری کتاب خانههای ثبت وقایع در دات نت
ویندوز
مسایل اجتماعی و انسانی برنامه نویسی
- اثر رکود اقتصادی بر بازار کار برنامه نویسی
- دلایل استعفای تعدادی از کارمندان گوگل
- تهیهی برنامههایی با مقیاس گسترده در چند روز بجای چند هفته
- از دست همکاران خود خسته شدهاید؟!
- هنر مصاحبه کردن
متفرقه
Unit Testing در AngularJS
JavaScript is a dynamically typed language which comes with great power of expression, but it also comes with almost no help from the compiler. For this reason we feel very strongly that any code written in JavaScript needs to come with a strong set of tests. We have built many features into Angular which make testing your Angular applications easy. With Angular, there is no excuse for not testing.
AngularJS #2
//استفاده از امکانات Razor لیست مطالب //استفاده از امکانات Angular <div ng-controller="PostController"> <ul> <li ng-repeat="item in ListOfItems"> {{item.Title}} </li> </ul> </div>
PostApp.controller('PostController', function ($scope, $http, postServices) { //... $scope.ListOfItems = postServices.GetPosts(post) .success(function (data) { $scope.ListOfItems = data; }); //... }
در قسمت قبل، در حین بررسی رفتار جزیرههای تعاملی Blazor Server، نکتهی زیر را هم دربارهی راهبری صفحات SSR مرور کردیم:
« اگر دقت کنید، جابجایی بین صفحات، با استفاده از fetch انجام شده؛ یعنی با اینکه این صفحات در اصل static HTML خالص هستند، اما ... کار full reload صفحه مانند ASP.NET Web forms قدیمی انجام نمیشود (و یا حتی برنامههای MVC و Razor pages) و نمایش صفحات، Ajax ای است و با fetch استاندارد آن صورت میگیرد تا هنوز هم حس و حال SPA بودن برنامه حفظ شود. همچنین اطلاعات DOM کل صفحه را هم بهروز رسانی نمیکند؛ فقط موارد تغییر یافته در اینجا به روز رسانی خواهند شد.»
در این قسمت، نکات تکمیلی این قابلیت را که به آن enhanced navigation هم گفته میشود، بررسی میکنیم.
روش غیرفعال کردن راهبری بهبودیافته برای بعضی از لینکها
ویژگی راهبری بهبودیافته فقط در حین هدایت بین صفحات مختلف یک برنامهی Blazor 8x SSR، فعال است. اگر در این بین، کاربری به یک صفحهی غیر بلیزری هدایت شود، راهبری بهبود یافته شکست خورده و سعی میکند حالت full document load را پیاده سازی و اجرا کند. مشکل اینجاست که در این حالت دو درخواست ارسال میشود: ابتدا حالت راهبری بهبودیافته فعال میشود و در ادامه پس از شکست این راهبری، هدایت مستقیم صورت میگیرد. برای رفع این مشکل میتوان ویژگی جدید data-enhance-nav را با مقدار false، به لینکهای خارجی مدنظر اضافه کرد تا برای این حالتها دیگر ویژگی راهبری بهبودیافته فعال نشود:
<a href="/not-blazor" data-enhance-nav="false">A non-Blazor page</a>
فعالسازی مدیریت بهبودیافتهی فرمهای SSR
در قسمت چهارم این سری با فرمهای جدید SSR مخصوص Blazor 8x آشنا شدیم. این فرمها هم میتوانند از امکانات راهبری بهبود یافته استفاده کنند (یعنی مدیریت ارسال آن، توسط fetch API انجام شده و به روز رسانی قسمتهای تغییریافتهی صفحه را Ajax ای انجام دهند)؛ برای نمونه اینبار همانند تصویر زیر، از fetch استاندارد برای ارسال اطلاعات به سمت سرور کمک گرفته میشود (یعنی عملیات Ajax ای شده؛ بجای یک post-back معمولی):
اما ... این قابلیت به صورت پیشفرض در فرمهای تعاملی SSR غیرفعال است. چون همانطور که عنوان شد، اگر مقصد این فرم، یک آدرس غیربلیزری باشد، دوبار ارسال فرم صورت خواهد گرفت؛ یکبار با استفاده از fetch API و بار دیگر پس از شکست، به صورت معمولی. اما اگر مطمئن هستید که endpoint این فرم، قطعا یک کامپوننت بلیزری است، بهتر است این قابلیت را در یک چنین فرمهایی نیز به صورت زیر فعال کنید:
<form method="post" @onsubmit="() => submitted = true" @formname="name" data-enhance> <AntiforgeryToken /> <InputText @bind-Value="Name" /> <button>Submit</button> </form> @if (submitted) { <p>Hello @Name!</p> } @code { bool submitted; [SupplyParameterFromForm] public string Name { get; set; } = ""; }
<EditForm method="post" Model="NewCustomer" OnValidSubmit="() => submitted = true" FormName="customer" Enhance> <DataAnnotationsValidator /> <ValidationSummary/> <p> <label> Name: <InputText @bind-Value="NewCustomer.Name" /> </label> </p> <button>Submit</button> </EditForm> @if (submitted) { <p id="pass">Hello @NewCustomer.Name!</p> } @code { bool submitted = false; [SupplyParameterFromForm] public Customer? NewCustomer { get; set; } protected override void OnInitialized() { NewCustomer ??= new(); } public class Customer { [StringLength(3, ErrorMessage = "Name is too long")] public string? Name { get; set; } } }
نکتهی مهم: در این حالت فرض بر این است که هیچگونه هدایتی به یک Non-Blazor endpoint صورت نمیگیرید؛ وگرنه با یک خطا مواجه خواهید شد.
غیرفعال کردن راهبری بهبودیافته برای قسمتی از صفحه
اگر با استفاده از جاواسکریپت و خارج از کدهای بیلزر، اطلاعات DOM را بهروز رسانی میکنید، ویژگی راهبری بهبودیافته، از آن آگاهی نداشته و به صورت خودکار تمام تغییرات شما را بازنویسی میکند. به همین جهت اگر نیاز است قسمتی از صفحه را که مستقیما توسط کدهای جاواسکریپتی تغییر میدهید، از بهروز رسانیهای این قابلیت مصون نگهدارید، میتوانید ویژگی جدید data-permanent را به آن قسمت اضافه کنید:
<div data-permanent> Leave me alone! I've been modified dynamically. </div>
امکان آگاه شدن از بروز راهبری بهبودیافته در کدهای جاواسکریپتی
اگر به هردلیلی در کدهای جاواسکریپتی خودنیاز به آگاه شدن از وقوع یک هدایت بهبودیافته را دارید (برای مثال جهت بازنویسی تغییرات ایجاد شدهی توسط آن)، میتوانید به نحو زیر، مشترک رخدادهای آن شوید:
<script> Blazor.addEventListener('enhancedload', () => { console.log('enhanced load event occurred'); }); </script>
ویژگی جدید Named Element Routing در Blazor 8x
Blazor 8x از ویژگی مسیریابی سمت کلاینت به کمک تعریف URL fragments پشتیبانی میکند. به این صورت رسیدن (اسکرول) به یک قسمت از صفحهای طولانی، بسیار ساده میشود.
برای مثال المان h2 با id مساوی targetElement را درنظر بگیرید:
<div class="border border-info rounded bg-info" style="height:500px"></div> <h2 id="targetElement">Target H2 heading</h2> <p>Content!</p>
<a href="/counter#targetElement"> <NavLink href="/counter#targetElement"> Navigation.NavigateTo("/counter#targetElement");
معرفی متد جدید Refresh در Blazor 8x
در Blazor 8x، امکان بارگذاری مجدد صفحه با فراخوانی متد جدید NavigationManager.Refresh(bool forceLoad = false) میسر شدهاست. این متد در حالت پیشفرض از قابلیت راهبری بهبودیافته برای به روز رسانی صفحه استفاده میکند؛ مگر اینکه اینکار میسر نباشد. اگر آنرا با پارامتر true فراخوانی کنید، full-page reload رخ خواهد داد.
همین اتفاق در مورد متد Navigation.NavigateTo نیز رخدادهاست. این متد نیز در Blazor 8x به صورت پیشفرض بر اساس قابلیت راهبری بهبود یافته کار میکند؛ مگر اینکه اینکار میسر نباشد و یا پارامتر forceLoad آنرا به true مقدار دهی کنید.