ORDER BY order_by_expression [ COLLATE collation_name ] [ ASC | DESC ] [ ,...n ] [ <offset_fetch> ] <offset_fetch> ::= { OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS } [ FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY ] }
Create Table Testoffset (BusinessEntityID int, FirstName varchar(100) , LastName varchar(100) ); Insert into Testoffset (BusinessEntityID,FirstName,LastName) Values(1,'Ken','Sánchez') ,(2,'Terri','Duffy') ,(3,'Roberto','Tamburello') ,(4,'Rob','Walters') ,(5,'Gail','Erickson') ,(6,'Jossef','Goldberg') ,(7,'Dylan','Miller') ,(8,'Diane','Margheim') ,(9,'Gigi','Matthew') ,(10,'Michael','Raheem')
SELECT BusinessEntityID, FirstName, LastName FROM Testoffset ORDER BY BusinessEntityID OFFSET 3 ROWS FETCH First 3 ROWS only
.NET Conf: Focus on Microservices is a free, one-day livestream event that features speakers from the community and .NET teams that are working on designing and building microservice-based applications, tools and frameworks. Learn from the experts their best practices, practical advice, as well as patterns, tools, tips and tricks for successfully designing, building, deploying and running cloud native applications at scale with .NET.
At Microsoft Build Live today, we are sharing a first look at our plans for .NET Core 3. The highlight of .NET Core 3 is support for Windows desktop applications, specifically Windows Forms, Windows Presentation Framework (WPF), and UWP XAML. You will be able to run new and existing Windows desktop applications on .NET Core and enjoy all the benefits that .NET Core has to offer.
متدهای async تقلبی
خلاصهای از پروتکل HTTP/2
Eazfuscator یکی از برنامههای با کیفیت code obfuscation مخصوص دات نت فریم ورک است. این برنامه رایگان بوده و استفاده از آن به سادگی drag & drop فایل dll یا exe برنامه خود بر روی پنجره آن میباشد (یا استفاده از آن از طریق خط فرمان جهت اتوماسیون اینکار)
ویژگیهای آن:
Automatic code protection with variety of supported obfuscation techniques:
- Symbol renaming
- String encryption
- Constant literals pruning
- Method signatures overload induction
- Class hierarchy linerization
- Code control flow obfuscation
- Assemblies merging
Supports .NET Framework versions 2.0, 3.0 and 3.5
Supports .NET Compact Framework versions 2.0 and 3.5
Supports Silverlight assemblies and XAP packages
Supports XNA applications for Windows, Xbox 360 and Zune platforms
Can obfuscate any 100% managed .NET assembly
Provides revolutionally innovative and easy to use GUI interface as well as classical command line interface
Microsoft Visual Studio integration. Supported versions are Microsoft Visual Studio 2005 and 2008 including Express editions
Supports automatic builds
پ.ن.
بنابر تجربه شخصی با این ابزارها (تجاری و غیرتجاری)، این تنها برنامهای است که جهت code obfuscation اسمبلیهای ASP.Net در محیط کاری مشکل ساز نشده و سایت پس از مدتی با پیغامهای عجیب و غریب از کار نمیافتد.
فرض کنید به یک سرور مراجعه کردهاید و شکایت از CPU Usage مربوط به پروسه w3wp.exe یا همان IIS Worker Process است که بالای 90 درصد میباشد. بر روی این سرور هم هیچ چیز دیگری نصب نیست و مطابق مقررات موجود، قرار هم نیست که برنامهای نصب شود. اکنون سؤال این است که چطور تشخیص میدهید، کدام قسمت یکی از برنامههای دات نتی در حال اجرا (در اینجا یکی از برنامههای ASP.NET هاست شده)، سبب بروز این مشکل شده است؟ کدام ترد بیشترین زمان CPU را به خود اختصاص داده است؟ چطور باید خطایابی کرد؟
اولین کاری که در این موارد توصیه میشود مراجعه به برنامهی معروف process explorer و بررسی برگهی threads آن است. در اینجا حتی میتوان call stacks مرتبط با یک ترد را هم مشاهده کرد. اما ... این برگه در مورد پروسهها و تردهای دات نتی، اطلاعات چندانی را در اختیار ما قرار نمیدهد.
خوشبختانه امکان دیباگ پروسههای دات نتی در حال اجرا توسط کتابخانهی MdbgCore.dll پیش بینی شده است. این فایل را در یکی از مسیرهای ذیل میتوانید پیدا کنید:
C:\Program Files\Microsoft SDKs\Windows\vXYZ\bin\MdbgCore.dll
C:\Program Files\Microsoft SDKs\Windows\vXYZ\bin\NETFX 4.0 Tools\MdbgCore.dll
در ادامه میخواهیم توسط امکانات این کتابخانه، به stack trace تردهای در حال اجرای یک برنامه دات نتی دسترسی پیدا کرده و سپس نام متدهای مرتبط را نمایش دهیم:
using System;
using System.Collections;
using System.Diagnostics;
using Microsoft.Samples.Debugging.MdbgEngine;
namespace CpuAnalyzer
{
class Program
{
static void Main(string[] args)
{
var engine = new MDbgEngine();
var processesByName = Process.GetProcessesByName("MyApp");
if (processesByName.Length == 0)
throw new InvalidOperationException("specified process not found.");
var processId = processesByName[0].Id;
var process = engine.Attach(processId);
process.Go().WaitOne();
foreach (MDbgThread thread in (IEnumerable)process.Threads)
{
foreach (MDbgFrame frame in thread.Frames)
{
if (frame == null || frame.Function == null) continue;
Console.WriteLine(frame.Function.FullName);
}
}
process.Detach().WaitOne();
}
}
}
خوب در مرحله بعد شاید بد نباشد که این متدها را بر اساس CPU usage آنها مرتب کنیم. به این ترتیب بهتر میتوان تشخیص داد که کدام متد مشکل ساز بوده است. برای این منظور باید به API ویندوز و تابع GetThreadTimes مراجعه کرد و اولین پارامتر ورودی آن، همان thread.CorThread.Handle اولین حلقه مثال فوق میباشد. هر کدام که جمع KernelTime + UserTime بیشتری داشت، همان است که مشکل درست کرده است.
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool GetThreadTimes(IntPtr handle, out long creation, out long exit, out long kernel, out long user);
for (int i = 0; i < 10; i++)
{
foreach (MDbgThread thread in (IEnumerable)process.Threads)
{
//...
}
process.Go();
Thread.Sleep(1000);
process.AsyncStop().WaitOne();
}
در کل این مثال جای کار زیاد دارد. برای مثال طراحی یک رابط کاربری برای آن و نمایش جزئیات بیشتر. به همین منظور حداقل سه پروژه مشابه را میتوان نام برد:
همه چیز در مورد CLR : قسمت اول
- ربطی به زبان برنامه نویسی ندارند؛ درست است. اما CLR یعنی Common Language Runtime . این محیط اجرایی و JIT آن ASLR را میسر میکنند . حتی اسمبلیهای ngen شده هم از دات نت 3.5 به بعد دارای ASLR فعال هستند. همچنین DEP هم از طریق روشن کردن سوئیچ NXCOMPAT کامپایلر فراهم شدهاست (از زمان دات نت 2 به بعد). یعنی اگر OpenSSL را با دات نت مینوشتند، هیچ وقت مشکل heartbleed رخ نمیداد.