- فشرده سازی قبل از اجرای برنامه (Pre-Compression) یعنی که شما قبل از اینکه برنامه خود را در محیط اصلی نصب و اجرا کنید، فایلهای اسکریپت آن را فشرده کنید. یعنی کاربران فایل اسکریپت فشرده شده را درخواست و دانلود میکنند و عملیات اضافی در سمت سرور انجام نمیشود. به عنوان مثال شما از فایل JQuery.min.js به جای jquery.js استفاده کنید. یعنی استفاده از نسخه فشرده شده اسکریپت ها.
- فشرده سازی زمان اجرا (Run-time Compression) یعنی فشرده سازی اسکریپتهای مورد نیاز کاربر توسط خود برنامه وب (به صورت خودکار و یا توسط یک ماژول اضافی). این عمل باعث میشود که در هر بار درخواست هر کاربر برای یک فایل، برنامه آن را مجدد فشرده سازی کند (و یا از cache استفاده کند). این عمل به معنی استفاده بیشتر از منابع پر ارزش سرور شما میباشد. به عنوان مثال شما بخواهید در هر مرحله درخواست هر کاربر jquery.js را فشرده کنید!
uploader.bind('FileUploaded', function(up, file, info) { var obj = JSON.parse(info.response); $('form#quoteRequest').append('<input type="hidden" name="file_name" value="' + obj.result.cleanFileName + '" />'); //note obj.result.cleanFileName instead obj.cleanFileName });
خودکار کردن تعاریف DbSetها در EF Code first
- تمام مدلهای شما باید از کلاس مشخصی مثلا BaseEntity مشتق شوند.
- یا در تنظیمات برنامه مشخص کنید در حین Reflection چه فضای نامی باید جستجو شود.
- و یا مثلا مانند ASP.NET MVC اگر کلاسی نامش به عبارت خاصی ختم شد و همچنین از کلاس پایه خاصی نیز مشتق شده بود آنگاه بررسی شود.
ب)
- مرحله بعد اندکی ویرایش متد loadEntities است جهت خواندن مدلهای واقع شده مثلا در یک فضای نام خاص یا مشتق شده از یک کلاس پایه خاص و سپس افزودن خودکار آنها به modelBuilder همانند چیزی که در مثال فوق پیاده سازی شده.
در مثال بالا فقط یک اسمبلی جستجو میشود؛ اگر نیاز است تمام اسمبلیهای بارگذاری شده در برنامه جستجو شوند، روش کار مراجعه به AppDomain است:
foreach (Assembly currentassembly in AppDomain.CurrentDomain.GetAssemblies()) { Type t = currentassembly.GetType("typeName", false, true); if (t != null) {return currentassembly.FullName;} }
روشهایی که قرار هست در ادامه توضیح داده شوند بر اساس کوئری بازگشتی میباشند. الگوریتمهای متنوعی بر اساس recursive CTE برای حل این مساله خلق شده اند. که من تنها به دو روش آن اکتفا میکنم.
Recursive CTE در نسخهی 2005 به SQL Server اضافه شده است. توسط این تکنیک مسائل پیچیده و گوناگونی را میتوان بسادگی حل نمود. مخصوصا مسائلی که ماهیت بازگشتی دارند مثل پیمایش یک درخت یا پیمایش یک گراف وزن دار.
روش اول:
یک کوئری بازگشتی دارای دو بخش هست به نامهای Anchor و recursive. در بخش دوم کوئری باز خودش را فراخوانی میکند تا به داده هایی که در مرحله قبل تولید شده اند دسترسی پیدا کند در اولین فراخوانی توسط عضو recursive، دادههای تولید شده در قسمت Anchor قابل دسترسی هستند. در قسمت دوم، کوئری آنقدر خود را فراخوانی میکند تا دیگر سطری از مرحله قبل وجود نداشته باشد که به آن مراجعه کند.
توضیح تکنیک:
در گام اول اندیس شروع و پایان کلمه اول را بدست میآوریم.
سپس در گام بعدی از اندیس پایان کلمه قبلی به عنوان اندیس شروع کلمه جدید استفاده میکنیم.
و اندیس پایان کلمه توسط تابع charindex بدست میآید.
کوئری تا زمانی ادامه پیدا میکند که کلمه برای تجزیه کردن در رشته باقی مانده باشد. فقط فراموش نکنید که حتما باید آخر عبارت یک کارکتر space داشته باشید.
DECLARE @S VARCHAR(50)='I am a student I go to school '; WITH CTE AS ( SELECT 1 rnk, 1 start, CHARINDEX(' ', @s) - 1 ed UNION ALL SELECT rnk + 1, ed + 2, CHARINDEX(' ', @s, ed + 2) - 1 FROM CTE WHERE CHARINDEX(' ', @s, ed + 2) > 0 ) SELECT rnk, SUBSTRING(@s, start, ed - start + 1) AS word FROM CTE /* Result rnk word ----------- ------- 1 I 2 am 3 a 4 student 5 I 6 go 7 to 8 school */
روش دوم:
در این روش در همان CTE عبارت تجزیه میشود و عمل تفکیک به مرحله بعدی واگذار نمیشود،
در گام اول، اولین کلمه انتخاب میشود. و سپس آن کلمه از رشته حذف میشود. با این روش همیشه اندیس شروع کلمه برابر با 1 خواهد بود و اندیس پایان کلمه توسط تابع charindex بدست خواهد آمد.
در گام بعدی اولین کلمه موجود در رشته ای که قبلا اولین کلمه از آن جدا شده است بدست میآید و باز مثل قبلی کلمه انتخاب شده از رشته جدا شده و رشته برش یافته به مرحله بعد منتقل میشود.
در این روش مثل روش قبلی آخر عبارتی که قرار هست تجزیه شود باید یک کارکتر خالی وجود داشته باشد.
DECLARE @a VARCHAR(50)='I am a student I go to school '; WITH MyWords(ranking, word, string) AS( SELECT 1, CAST(SUBSTRING(@a, 1, CHARINDEX(' ', @a) - 1) AS VARCHAR(25)), STUFF(@a, 1, CHARINDEX(' ', @a), '') UNION ALL SELECT ranking + 1, CAST(SUBSTRING(string, 1, CHARINDEX(' ', string) - 1) AS VARCHAR(25)), STUFF(string, 1, CHARINDEX(' ', string), '') FROM MyWords WHERE CHARINDEX(' ', string) > 0 ) SELECT ranking, word FROM MyWords;
ranking word ----------- ------------------------- 1 I 2 am 3 a 4 student 5 I 6 go 7 to 8 school
شروع نصب:
--------------
git config --global user.name "Hessam"
git config --global user.email "hessam@localhost.com"
git config --global --list
git config --global core.editor notepad
git config --global color.ui auto
کدامیک از قلمهای فارسی ذیل خواناتر هستند؟
در بقیه حالات حتی اگ هم ناراضی باشن سخنی نمیگویند ولی در یک نظرسنجی که کاربر دو نمونه رو ببینه میشه به نکات مهمتری رسید. فونت یکان یکی از فونتهای مورد علاقه من هست ولی در وب رضایت چندانی ازش ندارم. هر چند تا مدتها جز معدود فونتهای مجاز و خوب بود. دلیل اینکه ازش ناراضی هستم این هست که چندان برای وب بهینه نیست و در حالتهای سایز خیلی بزرگ و کوچک فرم خودش رو از دست میده ولی وزیر و صمیم این مشکل چندان حاد نیست. چون بسیار بهینهتر شدند یا مثلا تاهما تا موقعی که 9pt هست بسیار خوب عمل میکنه، بزرگتر بشه به یک فاجعه تبدیل میشه. من از صمیم راضی هستم چون واقعا برای خواندن مطالب بلند برای چشم عالی هست. خیلی حالت رسمی داره.
که وارد قسمت مدیریتی میشویم طبق تصویر زیر :
در مرحله بعد با مراجعه به ویژوال استودیو پروژه خود را با ویژوال استودیو ایجاد میکنیم و پروژه خود را به Team Foundation Serve مایکروسافت متصل خواهیم کرد . با کلیک بر روی Team از منوی ویژوال استودیو Manage Connections را انتخاب کرده و طبق تصویر زیر اطلاعات در خواستی را وارد میکنیم و بر روی Connect کلیک میکنیم
در مرحله بعد بر روی Solution پروژه راست کلیک کرده و Add Solution to Source Control را انتخاب میکنیم و با مشاهده پنجره Add Solution to Source Control بر روی ok کلیک کرده و با مراجعه به Solution Explorer پروژه مشاهده میکنیم که علامت + سبز رنگ در کنار Itemهای پروژه مشاهد میشود و این نشان دهنده این میباشد که پروژه ما هنوز به Team Foundation Server مایکروسافت منتقل نشده است . و برای انتقال بر روی Solution پروژه راست کلیلک کرده و ..Check In را انتخاب میکنیم و در قسمت Comment میتوانیم توضیحاتی را اضافه کرده و دوباره بر روی Check کلیک کرده و Itemهای پروژه ما منتقل سرور مایکروسافت میشود .
روش دوم :
در این روش ما نیاز به Windows Server 2012 R2 و نرم افزار 2015 Microsoft Team Foundation Server داریم و مراحل را در این روش طبق مقاله زیر جلو میبریم که میتوانید به مراجعه به لینک زیر به مقاله دسترسی داشته باشید .
Senior Developer به چه کسی گفته می شود؟
حدود 8 سال از ارائه اولین نگارش دات نت فریم ورک میگذرد و در ادامه مرور سریعی خواهیم داشت بر عناوین کتابخانههای اضافه شده به این مجموعه:
دات نت فریم ورک 1.0
اولین ارائه عمومی آزمایشی آن در PDC 2000 صورت گرفت و در اوایل 2002 به عموم عرضه شد (2/13/2002).
عبارت کد مدیریت شده را به دنیا معرفی کرد (managed code) و شامل اجزای زیر بود:
• GC, JIT
• C#
• Coherent Framework
• XSP….ASP+…ASP.NET!
• WinForms
در اوایل 2003 به همراه ویندوز سرور 2003 و VS 2003 ارائه شد.
• Mobile ASP.NET controls
• Built-in support for ODBC and Oracle databases.
• IPv6 support.
در اواخر 2005 ارائه شد (11/07/2005) و شامل تازههای زیر بود:
• ASP.NET for the Masses
○ Application Building Blocks
§ Parts, Authentication, Role Management, etc
○ Visual Web Developer
• Client Development
• ClickOnce!
در اواخر 2006 ارائه شد (11/06/2006) و موارد زیر را به این فریم ورک افزود:
• Windows CardSpace - Digital identity interface.
• Windows Presentation Foundation : WPF
○ Vector Graphics, Media and UI
○ Enters the age of UX
• Windows Communication Foundation : WCF
○ Unified messaging model
• Windows Workflow Foundation : WF
○ Coordinating work with durable applications
در پایان 2007 ارائه شد (11/19/2007) و تازههای زیر را به همراه داشت:
• Linq
• Expression Trees and Lamda Methods
• Extension Methods
• Paging Support for ADO.NET
• Managed Wrappers for WMI and AD
• Enhancements to WCF and WF
• System.CodeDom namespace
• ASP.NET AJAX
• WCF/WF
○ REST Services
○ Workflow Services
• Client
○ Sync
○ Client app services
سرویس پک یک دات نت فریم ورک 3.5
در اواسط 2008 ارائه شد (8/11/2008) و به همراه تغییرات زیر بود:
• ASP.NET Dynamic Data
• ADO.NET
○ Entity Framework
○ Data Services (Astoria)
• WCF
○ AtomPub ServiceDocuments
• Client
○ Client Profile
○ Performance
§ Working set and startup time
• Silverlight 2
○ RTM end of 2008
○ Brings power of .NET to the web client
○ Media and RIA .NET platform
دات نت فریم ورک 4.0
نگارش بتای آن در دسترس است و احتمالا نگارش نهایی آن در سال آیندهی میلادی به همراه VS2010 ارائه میشود. این مجموعه تازههای زیر را به همراه خواهد داشت:
• Base Class Library Improvements
○ Managed Extensibility Framework
○ More Core Data Structures
○ I/O Improvements
• Parallel Computing
○ Task Parallel Library
○ Parallel Linq (PLINQ)
○ Coordination Data Structures (CDS)
• Client
○ WPF
§ Client Profile
§ Business Focused Controls
§ Win7 Advances (Multi-touch, etc)
○ ADO.NET
§ Entity Framework v2
□ Code-First Development
□ TDD Support
□ Foreign-Key Support
○ ASP.NET
§ ASP.NET Dynamic Data Improvements
§ ASP.NET MVC
§ ASP.NET Dynamic Data for MVC
§ Extensible Caching Framework
○ WF & WCF
§ Fully Declarative Services
§ Workflow Enhancements
□ New flowchart modeling
□ Workflow Rules Integration
□ … much more…
§ WCF Enhancements
□ Durable Duplex
□ WS-Discovery & UDP Channel
□ In-Process Channel
§ RIA (Silverlight)
□ Simplified N-tier development
□ Business-focused framework
SELECT DEPARTMENTNAME, GENDER, COUNT(1) AS COUNT FROM DBO.DIMEMPLOYEE GROUP BY DEPARTMENTNAME,GENDER ORDER BY DEPARTMENTNAME,GENDER
SELECT EMPLOYEEKEY,FIRSTNAME,LASTNAME, MIDDLENAME,TITLE,HIREDATE, BIRTHDATE,EMAILADDRESS,PHONE,GENDER FROM DBO.DIMEMPLOYEE WHERE DEPARTMENTNAME=@DEPARTMENTNAME AND GENDER=@GENDER