Your software application is like an iceberg. Your users only see a
small fraction of the application, the parts that they interact with.
Your application can be a mess under the covers but as long as you have a
beautiful, quick interface that's super usable, your uses will think
your app is designed really well.
معماری تمیز در asp.net core
ASP.NET Core provides better support for clean, testable, maintainable architectures than any of its predecessors. Learn the underlying principles that apply to project/solution organization, how best to arrange your projects to support clean code, and how to refactor existing solutions toward this architecture. Examples will use ASP.NET Core but the principles covered apply to all languages and platforms.
کتاب Visual Studio 2015 Succinctly
In Visual Studio 2015 Succinctly, author Alessandro Del Sole explains how to take advantage of the highly anticipated features in Microsoft Visual Studio 2015. Topics include sharing code between different types of projects, new options for debugging and diagnostics, and improving productivity with other services in the Visual Studio ecosystem, such as NuGet and Azure.
فعالسازی GitHub Action مخصوص NET Core.
در ادامه قصد داریم از این قابلیت جدید، جهت Build خودکار پروژههای NET Core. و در آخر ارسال خودکار بستههای نیوگت متناظر آنها به سایت nuget.org، استفاده کنیم. برای این منظور به برگهی Actions مخزن کد خود مراجعه کنید (تصویر فوق). سپس در این صفحه، بر روی لینک Work flows for … more کلیک کنید:
تا امکان انتخاب گردش کاری متناظر با NET Core. ظاهر شود:
در اینجا بر روی دکمهی «Set up this workflow» کلیک کنید تا صفحهی ویرایشی این گردش کاری که با فرمت yml است، ظاهر شود.
محتویات آنرا برای نمونه میتوانید به صورت زیر تغییر دهید:
name: .NET Core Build on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 3.0.100-preview9-014004 - name: Build DNTCaptcha.Core lib run: dotnet build ./src/DNTCaptcha.Core/DNTCaptcha.Core.csproj --configuration Release
پس از تکمیل محتوای فایل yml در این مرحله، در کنار صفحه بر روی لینک start commit کلیک کنید، تا این فایل را به صورت خودکار در مسیر github\workflows\aspnetcore.yml ذخیره کند. بدیهی است تغییرات آنرا در قسمت commits مخزن کد نیز میتوانید مشاهده کنید.
این فایل on: [push] کار میکند. یعنی اگر تغییری را به مخزن کد اعمال کردید، همانند یک تریگر عمل کرده و عملیات Build را به صورت خودکار آغاز میکند.
اضافه کردن نماد گردش کاری GitHub به پروژه
هر گردش کاری تعریف شده را میتوان با یک نماد یا badge در فایل readme.md پروژه نیز نمایش داد:
فرمول آن نیز به صورت زیر است:
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
![Github tags](https://github.com/VahidN/DNTCaptcha.Core/workflows/.NET%20Core%20Build/badge.svg)
تکمیل گردش کاری Build، جهت تولید خودکار و ارسال یک بستهی نیوگت
برای ارسال خودکار حاصل Build به سایت نیوگت، نیاز است یک API Key داشته باشیم. به همین جهت به صفحهی مخصوص آن در سایت nuget پس از ورود به سایت آن، مراجعه کرده و یک کلید API جدید را صرفا برای این پروژه تولید کنید (در قسمت Available Packages بستهی پیشینی را که دستی آپلود کرده بودید انتخاب کنید).
پس از کپی کردن کلید تولید شدهی در سایت nuget:
به قسمت settings -> secrets مخزن کد خود مراجعه کرده و این کلید را به صورت زیر وارد کنید:
در ادامه برای دسترسی به این کلید با نام NUGET_API_KEY، میتوان از روش {{ secrets.NUGET_API_KEY }}$ در اسکریپت گردش کاری استفاده کرد.
اکنون که مخزن کد به همراه کلید API نیوگت است، میتوان مراحل dotnet pack (برای تولید فایل nupkg) و سپس dotnet nuget push (برای انتشار خودکار فایل nupkg) را به صورت زیر، به گردش کاری خود اضافه نمود:
name: .NET Core Build on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 3.0.100-preview9-014004 - name: Build DNTCaptcha.Core lib run: dotnet build ./src/DNTCaptcha.Core/DNTCaptcha.Core.csproj --configuration Release - name: Build NuGet Package run: dotnet pack ./src/DNTCaptcha.Core/DNTCaptcha.Core.csproj --configuration Release - name: Deploy NuGet Package run: dotnet nuget push ./src/DNTCaptcha.Core/bin/Release/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json
From today most of the Iranian developers who work on free/open-source projects get mail about suspending their accounts because of the U.S sanction over Iran , also they want a non-iranian passport to unlock accounts which means if your Iranian who works for a tech company remotely or using their service for developing free software are banned too!
also, some of Iranian couldn't clone projects from GitHub!
Visual Studio 2017 15.6 منتشر شد
- We improved solution load performance by optimizing design time build.
- We've added installation progress details on Visual Studio Installer.
- You can pause your installation and resume at a later time.
- We streamlined the update process so the notification takes you directly to the Installer.
- Non-administrators can create a VS layout.
- We added a new shortcut for Edit.Duplicate in the keyboard mapping.
- We made significant improvements to the F# language and tools, particularly for .NET Core SDK projects.
- The C++ compiler optimizes your code to run faster through improved optimizations.
- C++ Mapfile generation overhead is reduced in full linking scenarios.
- Debug options are available for Embedded ARM GCC support.
- We added strong name signing on CoreCLR for the C# compiler.
- Visual Studio Tools for Xamarin has lots of new productivity updates for iOS and Android developers.
- Python no longer requires a completion DB, and Anaconda users have support for conda.
- The Performance Profiler's CPU Usage Tool can display logical call stacks for asynchronous code.
- The CPU Usage tool displays source line highlighting and async/await code with logical 'Call Stack Stitching'.
- The debugger supports thread names set via SetThreadDescription APIs in dump debugging.
- Snapshot Debugging can be started from the Debug Target dropdown for ASP.NET applications.
- We've launched the initial implementation of Navigate to decompiled sources for .NET code navigation.
- New enhancements for Configure Continuous Delivery include support for TFVC, Git authentication over SSH, and containerized projects.
- You can now click on the Continuous Delivery tile in Team Explorer to configure automated build and deployments for your application.
- Team Explorer supports Git tags and checking out pull request branches.
- Service Fabric Tooling for the 6.1 Service Fabric release is now available.
- The Windows 10 Insider Preview SDK can be installed as an optional component.
- File versions for a number of Visual Studio executables now reflect the minor release.
- Test Explorer has a hierarchy view and real time test discovery is now on by default.
- We have added support for testing Win10 IoT Core applications.
- Visual Studio Build Tools supports TypeScript and Node.js.
- ClickOnce Tools support signing application and deployment manifests with CNG certificate.
- You can access Azure resources such as Key Vault using your Visual Studio accounts.
سایتهای بسیاری هستند که سرویسهایی را برای بدست آوردن مشخصات کشور، از روی IP ارائه میدهند؛ ولی اکثر آنها برای این سرویسی که ارائه میدهند هزینه دریافت میکنند. سایتی که من در این مقاله معرفی خواهم کرد این سرویس را به رایگان ارائه میهد، به شرط اینکه درخواستهای شما در هر ساعت بیشتر از 10000 نباشد. اگر این اتفاق روی دهد، یعنی درخواستهای شما به بیش از 10000 در ساعت برسد، درخواستهای شما با خطای HTTP 403, forbidden مواجه خواهد شد و تا زمانیکه محدودیت شما به پایان برسد، باید منتظر بمانید.
سرویسی که این سایت ارائه میدهد، سورس باز و رایگان میباشد. اگر شما با این محدودیت 10000 درخواست در ساعت مشکلی داشتید، میتوانید این
سرویس را از اینجا دریافت و آنرا در سرور
خودتان اجرا کنید. سورس سرویس هم بر روی github موجود هست.
freegeoip.net/{format}/{IP_or_hostname}
freegeoip.net/xml/4.2.2.2 : XML freegeoip.net/csv/8.8.8.8 :CSV freegeoip.net/json/github.com :JSON
http://freegeoip.net/xml/162.158.88.214
<Response> <IP>162.158.88.214</IP> <CountryCode>DE</CountryCode> <CountryName>Germany</CountryName> <RegionCode>HE</RegionCode> <RegionName>Hesse</RegionName> <City>Frankfurt am Main</City> <ZipCode>60438</ZipCode> <TimeZone>Europe/Berlin</TimeZone> <Latitude>50.1167</Latitude> <Longitude>8.6833</Longitude> <MetroCode>0</MetroCode> </Response>
اگر آدرس IP را مشخص نکنید مشخصات مربوط به IP آدرس خودتان را دریافت خواهید کرد.
در ادامه از یک برنامه console application برای دریافت این پاسخ ارسال شده از سرویس و استخراج دادهها از آن استفاده خواهیم کرد.
البته این روش برای برنامههای تحت وب هم به همین صورت خواهد بود و تفاوتی نمیکند.
از این روش میتوانید برای بلاک کردن کشورهایی که نمیخواهید به برنامهی شما دسترسی پیدا کنند استفاده کنید و یا اینکه بدانید ip هایی که از سایت شما بازدید میکنند از کدام کشورهای جهان هستند و یا کار خلاقانهای که میتوانید انجام دهید، نمایش مکانهای بازدید کنندهها بر روی نقشه گوگل، با استفاده از طول و عرض جغرافیایی که این سرویس در اختیارتان میگذارد، میباشدpublic static void ReadXmlElements(string ipAddress) { XDocument xdoc=XDocument.Load("http://www.freegeoip.net/xml/" + ipAddress); var country = xdoc.Descendants("Response").Select(c => new { IpAddress = c.Element("IP")?.Value, CountryCode = c.Element("CountryCode")?.Value, CountryName = c.Element("CountryName")?.Value, RegionCode = c.Element("RegionCode")?.Value, RegionName = c.Element("RegionName")?.Value, City = c.Element("City")?.Value, ZipCode = c.Element("ZipCode")?.Value, TimeZone = c.Element("TimeZone")?.Value, Latitude = c.Element("Latitude")?.Value, Longitude = c.Element("Longitude")?.Value, MetroCode = c.Element("MetroCode")?.Value, }); var countryData = country.First(); Console.WriteLine("CountryName :" + countryData.CountryName +Environment.NewLine + "CountryCode :"+countryData.CountryCode + Environment.NewLine + "RegionCode :"+countryData.RegionCode + Environment.NewLine + "RegionName :" + countryData.RegionName + Environment.NewLine + "City :" + countryData.City + Environment.NewLine + "ZipCode :" + countryData.ZipCode + Environment.NewLine + "TimeZone :" + countryData.TimeZone + Environment.NewLine + "Latitude :" + countryData.Latitude + Environment.NewLine + "Longitude :" + countryData.Longitude + Environment.NewLine + "MetroCode :" + countryData.MetroCode ); Console.ReadKey(); }
در متد main برنامه، متد ReadXmlElements را فراخوانی کرده و آدرس آی
پی مورد نظر را پاس میدهیم:
static void Main(string[] args) { ReadXmlElements("162.158.88.214"); }
یک نکته : برای مقایسه کد کشور بدست آمده، باید لیست کاملی از کشورهای جهان را در اختیار داشته باشید، تا بتوانید تصمیم بگیرید که آیا کشور درخواست کننده، مد نظر شما هست یا خیر. برای اینکار، کلاسی را آماده کردهام که شامل کل کشورهای جهان میباشد و نام و کد کشورها، در آن وجود دارد؛ به صورت زیر:
public class WorldCountries { public string CountryCode { get; set; } public string CountryName { get; set; } }
public static class GenerateCountries { public static IList<WorldCountries> CreateCountries() { return new[] { new WorldCountries { CountryCode = "AF", CountryName = "Afghanistan"}, new WorldCountries { CountryCode = "AX", CountryName = "Åland Islands"}, new WorldCountries { CountryCode = "AL", CountryName = "Albania"}, new WorldCountries { CountryCode = "DZ", CountryName = "Algeria"}, new WorldCountries { CountryCode = "AS", CountryName = "American Samoa"}, new WorldCountries { CountryCode = "AD", CountryName = "Andorra"}, new WorldCountries { CountryCode = "AO", CountryName = "Angola"}, new WorldCountries { CountryCode = "AI", CountryName = "Anguilla"}, new WorldCountries { CountryCode = "AQ", CountryName = "Antarctica"}, new WorldCountries { CountryCode = "AG", CountryName = "Antigua and Barbuda"}, new WorldCountries { CountryCode = "AR", CountryName = "Argentina"}, new WorldCountries { CountryCode = "AM", CountryName = "Armenia"}, new WorldCountries { CountryCode = "AW", CountryName = "Aruba"}, new WorldCountries { CountryCode = "AU", CountryName = "Australia"}, new WorldCountries { CountryCode = "AT", CountryName = "Austria"}, new WorldCountries { CountryCode = "AZ", CountryName = "Azerbaijan"}, new WorldCountries { CountryCode = "BS", CountryName = "Bahamas"}, new WorldCountries { CountryCode = "BH", CountryName = "Bahrain"}, new WorldCountries { CountryCode = "BD", CountryName = "Bangladesh"}, new WorldCountries { CountryCode = "BB", CountryName = "Barbados"}, new WorldCountries { CountryCode = "BY", CountryName = "Belarus"}, new WorldCountries { CountryCode = "BE", CountryName = "Belgium"}, new WorldCountries { CountryCode = "BZ", CountryName = "Belize"}, new WorldCountries { CountryCode = "BJ", CountryName = "Benin"}, new WorldCountries { CountryCode = "BM", CountryName = "Bermuda"}, new WorldCountries { CountryCode = "BT", CountryName = "Bhutan"}, new WorldCountries { CountryCode = "BA", CountryName = "Bosnia and Herzegovina"}, new WorldCountries { CountryCode = "BW", CountryName = "Botswana"}, new WorldCountries { CountryCode = "BV", CountryName = "Bouvet Island"}, new WorldCountries { CountryCode = "BR", CountryName = "Brazil"}, new WorldCountries { CountryCode = "IO", CountryName = "British Indian Ocean Territory"}, new WorldCountries { CountryCode = "BN", CountryName = "Brunei Darussalam"}, new WorldCountries { CountryCode = "BG", CountryName = "Bulgaria"}, new WorldCountries { CountryCode = "BF", CountryName = "Burkina Faso"}, new WorldCountries { CountryCode = "BI", CountryName = "Burundi"}, new WorldCountries { CountryCode = "KH", CountryName = "Cambodia"}, new WorldCountries { CountryCode = "CM", CountryName = "Cameroon"}, new WorldCountries { CountryCode = "CA", CountryName = "Canada"}, new WorldCountries { CountryCode = "CV", CountryName = "Cape Verde"}, new WorldCountries { CountryCode = "KY", CountryName = "Cayman Islands"}, new WorldCountries { CountryCode = "CF", CountryName = "Central African Republic"}, new WorldCountries { CountryCode = "TD", CountryName = "Chad"}, new WorldCountries { CountryCode = "CL", CountryName = "Chile"}, new WorldCountries { CountryCode = "CN", CountryName = "China"}, new WorldCountries { CountryCode = "CX", CountryName = "Christmas Island"}, new WorldCountries { CountryCode = "CC", CountryName = "Cocos (Keeling) Islands"}, new WorldCountries { CountryCode = "CO", CountryName = "Colombia"}, new WorldCountries { CountryCode = "KM", CountryName = "Comoros"}, new WorldCountries { CountryCode = "CG", CountryName = "Congo"}, new WorldCountries { CountryCode = "CK", CountryName = "Cook Islands"}, new WorldCountries { CountryCode = "CR", CountryName = "Costa Rica"}, new WorldCountries { CountryCode = "HR", CountryName = "Croatia"}, new WorldCountries { CountryCode = "CU", CountryName = "Cuba"}, new WorldCountries { CountryCode = "CW", CountryName = "Curaçao"}, new WorldCountries { CountryCode = "CY", CountryName = "Cyprus"}, new WorldCountries { CountryCode = "CZ", CountryName = "Czech Republic"}, new WorldCountries { CountryCode = "DK", CountryName = "Denmark"}, new WorldCountries { CountryCode = "DJ", CountryName = "Djibouti"}, new WorldCountries { CountryCode = "DM", CountryName = "Dominica"}, new WorldCountries { CountryCode = "DO", CountryName = "Dominican Republic"}, new WorldCountries { CountryCode = "EC", CountryName = "Ecuador"}, new WorldCountries { CountryCode = "EG", CountryName = "Egypt"}, new WorldCountries { CountryCode = "SV", CountryName = "El Salvador"}, new WorldCountries { CountryCode = "GQ", CountryName = "Equatorial Guinea"}, new WorldCountries { CountryCode = "ER", CountryName = "Eritrea"}, new WorldCountries { CountryCode = "EE", CountryName = "Estonia"}, new WorldCountries { CountryCode = "ET", CountryName = "Ethiopia"}, new WorldCountries { CountryCode = "FK", CountryName = "Falkland Islands (Malvinas)"}, new WorldCountries { CountryCode = "FO", CountryName = "Faroe Islands"}, new WorldCountries { CountryCode = "FJ", CountryName = "Fiji"}, new WorldCountries { CountryCode = "FI", CountryName = "Finland"}, new WorldCountries { CountryCode = "FR", CountryName = "France"}, new WorldCountries { CountryCode = "GF", CountryName = "French Guiana"}, new WorldCountries { CountryCode = "PF", CountryName = "French Polynesia"}, new WorldCountries { CountryCode = "TF", CountryName = "French Southern Territories"}, new WorldCountries { CountryCode = "GA", CountryName = "Gabon"}, new WorldCountries { CountryCode = "GM", CountryName = "Gambia"}, new WorldCountries { CountryCode = "GE", CountryName = "Georgia"}, new WorldCountries { CountryCode = "DE", CountryName = "Germany"}, new WorldCountries { CountryCode = "GH", CountryName = "Ghana"}, new WorldCountries { CountryCode = "GI", CountryName = "Gibraltar"}, new WorldCountries { CountryCode = "GR", CountryName = "Greece"}, new WorldCountries { CountryCode = "GL", CountryName = "Greenland"}, new WorldCountries { CountryCode = "GD", CountryName = "Grenada"}, new WorldCountries { CountryCode = "GP", CountryName = "Guadeloupe"}, new WorldCountries { CountryCode = "GU", CountryName = "Guam"}, new WorldCountries { CountryCode = "GT", CountryName = "Guatemala"}, new WorldCountries { CountryCode = "GG", CountryName = "Guernsey"}, new WorldCountries { CountryCode = "GN", CountryName = "Guinea"}, new WorldCountries { CountryCode = "GW", CountryName = "Guinea-Bissau"}, new WorldCountries { CountryCode = "GY", CountryName = "Guyana"}, new WorldCountries { CountryCode = "HT", CountryName = "Haiti"}, new WorldCountries { CountryCode = "HM", CountryName = "Heard Island and McDonald Islands"}, new WorldCountries { CountryCode = "VA", CountryName = "Holy See (Vatican City State)"}, new WorldCountries { CountryCode = "HN", CountryName = "Honduras"}, new WorldCountries { CountryCode = "HK", CountryName = "Hong Kong"}, new WorldCountries { CountryCode = "HU", CountryName = "Hungary"}, new WorldCountries { CountryCode = "IS", CountryName = "Iceland"}, new WorldCountries { CountryCode = "IN", CountryName = "India"}, new WorldCountries { CountryCode = "ID", CountryName = "Indonesia"}, new WorldCountries { CountryCode = "IR", CountryName = "Iran"}, new WorldCountries { CountryCode = "IQ", CountryName = "Iraq"}, new WorldCountries { CountryCode = "IE", CountryName = "Ireland"}, new WorldCountries { CountryCode = "IM", CountryName = "Isle of Man"}, new WorldCountries { CountryCode = "IL", CountryName = "Israel"}, new WorldCountries { CountryCode = "IT", CountryName = "Italy"}, new WorldCountries { CountryCode = "JM", CountryName = "Jamaica"}, new WorldCountries { CountryCode = "JP", CountryName = "Japan"}, new WorldCountries { CountryCode = "JE", CountryName = "Jersey"}, new WorldCountries { CountryCode = "JO", CountryName = "Jordan"}, new WorldCountries { CountryCode = "KZ", CountryName = "Kazakhstan"}, new WorldCountries { CountryCode = "KE", CountryName = "Kenya"}, new WorldCountries { CountryCode = "KI", CountryName = "Kiribati"}, new WorldCountries { CountryCode = "KP", CountryName = "Korea"}, new WorldCountries { CountryCode = "KW", CountryName = "Kuwait"}, new WorldCountries { CountryCode = "KG", CountryName = "Kyrgyzstan"}, new WorldCountries { CountryCode = "LV", CountryName = "Latvia"}, new WorldCountries { CountryCode = "LB", CountryName = "Lebanon"}, new WorldCountries { CountryCode = "LS", CountryName = "Lesotho"}, new WorldCountries { CountryCode = "LR", CountryName = "Liberia"}, new WorldCountries { CountryCode = "LY", CountryName = "Libya"}, new WorldCountries { CountryCode = "LI", CountryName = "Liechtenstein"}, new WorldCountries { CountryCode = "LT", CountryName = "Lithuania"}, new WorldCountries { CountryCode = "LU", CountryName = "Luxembourg"}, new WorldCountries { CountryCode = "MO", CountryName = "Macao"}, new WorldCountries { CountryCode = "MK", CountryName = "Macedonia"}, new WorldCountries { CountryCode = "MG", CountryName = "Madagascar"}, new WorldCountries { CountryCode = "MW", CountryName = "Malawi"}, new WorldCountries { CountryCode = "MY", CountryName = "Malaysia"}, new WorldCountries { CountryCode = "MV", CountryName = "Maldives"}, new WorldCountries { CountryCode = "ML", CountryName = "Mali"}, new WorldCountries { CountryCode = "MT", CountryName = "Malta"}, new WorldCountries { CountryCode = "MH", CountryName = "Marshall Islands"}, new WorldCountries { CountryCode = "MQ", CountryName = "Martinique"}, new WorldCountries { CountryCode = "MR", CountryName = "Mauritania"}, new WorldCountries { CountryCode = "MU", CountryName = "Mauritius"}, new WorldCountries { CountryCode = "YT", CountryName = "Mayotte"}, new WorldCountries { CountryCode = "MX", CountryName = "Mexico"}, new WorldCountries { CountryCode = "FM", CountryName = "Micronesia"}, new WorldCountries { CountryCode = "MD", CountryName = "Moldova"}, new WorldCountries { CountryCode = "MC", CountryName = "Monaco"}, new WorldCountries { CountryCode = "MN", CountryName = "Mongolia"}, new WorldCountries { CountryCode = "ME", CountryName = "Montenegro"}, new WorldCountries { CountryCode = "MS", CountryName = "Montserrat"}, new WorldCountries { CountryCode = "MA", CountryName = "Morocco"}, new WorldCountries { CountryCode = "MZ", CountryName = "Mozambique"}, new WorldCountries { CountryCode = "MM", CountryName = "Myanmar"}, new WorldCountries { CountryCode = "NA", CountryName = "Namibia"}, new WorldCountries { CountryCode = "NR", CountryName = "Nauru"}, new WorldCountries { CountryCode = "NP", CountryName = "Nepal"}, new WorldCountries { CountryCode = "NL", CountryName = "Netherlands"}, new WorldCountries { CountryCode = "NC", CountryName = "New Caledonia"}, new WorldCountries { CountryCode = "NZ", CountryName = "New Zealand"}, new WorldCountries { CountryCode = "NI", CountryName = "Nicaragua"}, new WorldCountries { CountryCode = "NE", CountryName = "Niger"}, new WorldCountries { CountryCode = "NG", CountryName = "Nigeria"}, new WorldCountries { CountryCode = "NU", CountryName = "Niue"}, new WorldCountries { CountryCode = "NF", CountryName = "Norfolk Island"}, new WorldCountries { CountryCode = "MP", CountryName = "Northern Mariana Islands"}, new WorldCountries { CountryCode = "NO", CountryName = "Norway"}, new WorldCountries { CountryCode = "OM", CountryName = "Oman"}, new WorldCountries { CountryCode = "PK", CountryName = "Pakistan"}, new WorldCountries { CountryCode = "PW", CountryName = "Palau"}, new WorldCountries { CountryCode = "PS", CountryName = "Palestine"}, new WorldCountries { CountryCode = "PA", CountryName = "Panama"}, new WorldCountries { CountryCode = "PG", CountryName = "Papua New Guinea"}, new WorldCountries { CountryCode = "PY", CountryName = "Paraguay"}, new WorldCountries { CountryCode = "PE", CountryName = "Peru"}, new WorldCountries { CountryCode = "PH", CountryName = "Philippines"}, new WorldCountries { CountryCode = "PN", CountryName = "Pitcairn"}, new WorldCountries { CountryCode = "PL", CountryName = "Poland"}, new WorldCountries { CountryCode = "PT", CountryName = "Portugal"}, new WorldCountries { CountryCode = "PR", CountryName = "Puerto Rico"}, new WorldCountries { CountryCode = "QA", CountryName = "Qatar"}, new WorldCountries { CountryCode = "RE", CountryName = "Réunion"}, new WorldCountries { CountryCode = "RO", CountryName = "Romania"}, new WorldCountries { CountryCode = "RU", CountryName = "Russian Federation"}, new WorldCountries { CountryCode = "RW", CountryName = "Rwanda"}, new WorldCountries { CountryCode = "BL", CountryName = "Saint Barthélemy"}, new WorldCountries { CountryCode = "KN", CountryName = "Saint Kitts and Nevis"}, new WorldCountries { CountryCode = "LC", CountryName = "Saint Lucia"}, new WorldCountries { CountryCode = "MF", CountryName = "Saint Martin (French part)"}, new WorldCountries { CountryCode = "PM", CountryName = "Saint Pierre and Miquelon"}, new WorldCountries { CountryCode = "VC", CountryName = "Saint Vincent and the Grenadines"}, new WorldCountries { CountryCode = "WS", CountryName = "Samoa"}, new WorldCountries { CountryCode = "SM", CountryName = "San Marino"}, new WorldCountries { CountryCode = "ST", CountryName = "Sao Tome and Principe"}, new WorldCountries { CountryCode = "SA", CountryName = "Saudi Arabia"}, new WorldCountries { CountryCode = "SN", CountryName = "Senegal"}, new WorldCountries { CountryCode = "RS", CountryName = "Serbia"}, new WorldCountries { CountryCode = "SC", CountryName = "Seychelles"}, new WorldCountries { CountryCode = "SL", CountryName = "Sierra Leone"}, new WorldCountries { CountryCode = "SG", CountryName = "Singapore"}, new WorldCountries { CountryCode = "SX", CountryName = "Sint Maarten (Dutch part)"}, new WorldCountries { CountryCode = "SK", CountryName = "Slovakia"}, new WorldCountries { CountryCode = "SI", CountryName = "Slovenia"}, new WorldCountries { CountryCode = "SB", CountryName = "Solomon Islands"}, new WorldCountries { CountryCode = "SO", CountryName = "Somalia"}, new WorldCountries { CountryCode = "ZA", CountryName = "South Africa"}, new WorldCountries { CountryCode = "GS", CountryName = "South Georgia and the South Sandwich Islands"}, new WorldCountries { CountryCode = "SS", CountryName = "South Sudan"}, new WorldCountries { CountryCode = "ES", CountryName = "Spain"}, new WorldCountries { CountryCode = "LK", CountryName = "Sri Lanka"}, new WorldCountries { CountryCode = "SD", CountryName = "Sudan"}, new WorldCountries { CountryCode = "SR", CountryName = "Suriname"}, new WorldCountries { CountryCode = "SJ", CountryName = "Svalbard and Jan Mayen"}, new WorldCountries { CountryCode = "SZ", CountryName = "Swaziland"}, new WorldCountries { CountryCode = "SE", CountryName = "Sweden"}, new WorldCountries { CountryCode = "CH", CountryName = "Switzerland"}, new WorldCountries { CountryCode = "SY", CountryName = "Syrian Arab Republic"}, new WorldCountries { CountryCode = "TW", CountryName = "Taiwan"}, new WorldCountries { CountryCode = "TJ", CountryName = "Tajikistan"}, new WorldCountries { CountryCode = "TZ", CountryName = "Tanzania"}, new WorldCountries { CountryCode = "TH", CountryName = "Thailand"}, new WorldCountries { CountryCode = "TL", CountryName = "Timor-Leste"}, new WorldCountries { CountryCode = "TG", CountryName = "Togo"}, new WorldCountries { CountryCode = "TK", CountryName = "Tokelau"}, new WorldCountries { CountryCode = "TO", CountryName = "Tonga"}, new WorldCountries { CountryCode = "TT", CountryName = "Trinidad and Tobago"}, new WorldCountries { CountryCode = "TN", CountryName = "Tunisia"}, new WorldCountries { CountryCode = "TR", CountryName = "Turkey"}, new WorldCountries { CountryCode = "TM", CountryName = "Turkmenistan"}, new WorldCountries { CountryCode = "TC", CountryName = "Turks and Caicos Islands"}, new WorldCountries { CountryCode = "TV", CountryName = "Tuvalu"}, new WorldCountries { CountryCode = "UG", CountryName = "Uganda"}, new WorldCountries { CountryCode = "UA", CountryName = "Ukraine"}, new WorldCountries { CountryCode = "AE", CountryName = "United Arab Emirates"}, new WorldCountries { CountryCode = "GB", CountryName = "United Kingdom"}, new WorldCountries { CountryCode = "US", CountryName = "United States"}, new WorldCountries { CountryCode = "UM", CountryName = "United States Minor Outlying Islands"}, new WorldCountries { CountryCode = "UY", CountryName = "Uruguay"}, new WorldCountries { CountryCode = "UZ", CountryName = "Uzbekistan"}, new WorldCountries { CountryCode = "VU", CountryName = "Vanuatu"}, new WorldCountries { CountryCode = "VE", CountryName = "Venezuela"}, new WorldCountries { CountryCode = "VN", CountryName = "Viet Nam"}, new WorldCountries { CountryCode = "VG", CountryName = "British Virgin Islands"}, new WorldCountries { CountryCode = "VI", CountryName = "US Virgin Islands"}, new WorldCountries { CountryCode = "WF", CountryName = "Wallis and Futuna"}, new WorldCountries { CountryCode = "EH", CountryName = "Western Sahara"}, new WorldCountries { CountryCode = "YE", CountryName = "Yemen"}, new WorldCountries { CountryCode = "ZM", CountryName = "Zambia"}, new WorldCountries { CountryCode = "ZW", CountryName = "Zimbabwe"}, }; } }
دریافت کد کامل این پروژه
1. Evaluate an expression with or without side effects
2. Breaking on Exceptions with or without source code
- Disable the "Enable Just My Code"
- Debug your references with DnSpy
4. Edit and Continue
5. Use OzCode
6. Special $ variables
7. Make sense of a complicated scenario with dotTrace Performance Profiler
ASP.NET MVC #1
در مورد کتاب ها سایت رسمی asp بخش جالب http://www.asp.net/mvc/books رو داره که من کتاب
Professional ASP.NET MVC 3 (Wrox Programmer to Programmer) رو انتخاب کردم و ازشم راضیم .
در مورد مدارک هم می دونم که فعلا فقط توی امتحان Exam 70-515 برای مدرک TS: Web Applications Development with Microsoft .NET Framework 4 تنها 20 درصد از امتحان رو بحث mvc تشکیل میده . ولی اولا که این مدارک 2 سال پیش تنظیم شده و ثانیا که مدرک گرفتن آدم رو برنامه نویس خوب نمیکنه .