مستندات سی‌شارپ

 آموزش و مستندات زیر برگرفته از چندین سایت مختلف معتبر از جمله StackOverflow و مستندات مایکروسافت است. این آموزش ها توسط من ترجمه شده و تغییرات و یادداشت هایی نیز به آن اضافه شده است تا در اختیار کاربران وبلاگ آرین نرم افزار باشد.

توجه به دلیل اینکه مطلب هنوز کامل نشده است، نسخه PDF فعلا در دسترس نیست

زبان برنامه نویسی سی شارپ

C# یک زبان برنامه نویسی برای ساخت انواع مختلفی از نرم‌افزار هاست که روی چهارچوب دات‌نت طراحی شده است.

سی شارپ ساده، قدرتمند، دارای امنیت نوع و شی‌گراست. نوآوری های سی‌شارپ در عین حفظ رسایی و زیبایی زبان های خانواده سی به RAD یا توسعه سریع نرم افزارها منجر شده است.

شما با سی شارپ قادر به ساخت نرم افزار های ویندوزی، سرویس های وب XML، کامپوننت های توزیع شده، نرم‌افزار های کلاینت-سرور، نرم افزار های مرتبط با پایگاه داده و انواع بسیار مختلفی از نرم افزار های دیگر هستید. سی شارپ مجهز به ویرایشگر های کد بسیار قوی، رابط کاربری آسان و در دسترس، خطایاب مجتمع و بسیاری دیگر از ابزار های قدرتمندیست که توسعه نرم افزار های شما را با زبان سی‌شارپ و چهارچوب دات‌نت آسان می‌کند.

یک نکته کوچک در رابطه با این مطلب

لطفا توجه کنید که مخاطبین این مطلب کسانی هستند که با مفاهیم بنیادی برنامه نویسی آشنایی دارند. در صورتی که قبلا با زبان های دیگری کار کرده اید، به سرعت سی‌شارپ را با همین مطلب یاد خواهید گرفت

من مبانی برنامه نویسی را میدانم

در صورتی که زبان سی‌شارپ را روی سیستم خود ندارید، هم اکنون میتوانید از سایت ویژوال استودیو آن را همراه با این محیط توسعه بسیار قوی دانلود کنید.

  • VS Code

    ویژوال استودیو کد یکی از قدرتمند ترین ادیتور های موجود است که میتواند ویرایشگر بسیار خوبی برای توسعه نرم افزار های سی شارپ، به ویژه ساخت نرم افزار های ASP.Net MVC Core روی لینوکس باشد

    دانلود

  • Rider

    رایدر یکی از IDE خوب شرکت JetBrains ویژه دات‌نت است که روی سیستم عامل های مختلف اجرا می‌شود.

    دانلود

  • Visual Studio

    ویژوال استودیو و ویژوال استودیو Blend نسخه های محیط توسعه سی‌شارپ و به ترتیب ویژه کدنویسی حرفه ای و طراحی رابط کاربری حرفه ای هستند

    دانلود

  • Xamarin

    زامارین ویژه توسعه نرم افزار های موبایل و دسکتاپ برای اندروید، مک و ویندوز است و همچنین پروژه‌ها و ابزار های بسیار خوبی را جهت چندسکو کردن نرم افزار ها دارد

    دانلود

  • Xenko Game Engine

    زنکو یکی از موتور های برنامه نویسی قوی، رایگان و نوپای سی شارپ است که همواره جدید ترین امکانات سی‌شارپ در آن پیاده سازی می‌شود. برخلاف یونیتی، کتاب خانه های این موتور بازی سازی بسیار شبیه به کتاب‌خانه های دات‌نت است

    دانلود

  • Unity Game Engine

    یونیتی یک موتور بازی سازی بسیار قویست که بازی های آن توسط سی شارپ ساخته می‌شوند

    دانلود

به عنوان یک زبان برنامه نویسی شی گرا، سی شارپ مفاهیم کپسول‌کنندگی، وراثت و چندریختی را پشتیبانی میکند. تمامی متغیر ها و متد ها، از جمله متد Main یعنی نقطه ورود به نرم‌افزار، در تعاریف کلاس ها کپسول می‌شوند. یک کلاس میتواند به طور مستقیم وارث کلاس پدر باشد و در کنار آن رابط های مختلفی را پیاده سازی کند.

نکته کسانی که قبلا با زبان برنامه نویسی جاوا کار کرده اند باید بدانند در سی شارپ، متد هایی که متدهای مجازی والدشان را باز‌تعریف میکنند، برای جلوگیری از تعریف مجدد تصادفی باید کلیدواژه override را به تابع خود اضافه کنند. همچنین در سی‌شارپ یک struct کلاس سبکی است که به جای ذخیره شدن در فضای Heap و اشغال آن، در Stack ذخیره می‌شود. Struct ها میتوانند رابط ها را پیاده سازی کنند، ولی توانایی وراثت ندارند.

در کنار شی گرایی، سی شارپ با سازه های زبانی جدید خود ساخت یک نرم افزار را بسیار سریع تر میکند. از جمله:

  • متد های کپسول شده با عنوان موکل‌ها که ما را قادر به پیاده سازی اعلان رویداد‌ها میکنند
  • ویژگی‌ها که به ما قابلیت دسترسی به متغیر های Private را میدهند
  • نشان‌ها که قابلیت تعریف داده های اضافی درباره تایپ ها در زمان اجرا را برای ما فراهم می‌آورند
  • کامنت گذاری و مستند سازی XML به صورت خطی
  • زبان جامع پرس‌وجو و یا LINQ که قابلیت Query کردن داده ها با پشتیبانی از چندین نوع منبع مختلف داده را دارد
  • متد های Extension که با استفاده از آنها میتوانید بدون تغییر در ساختمان یک کلاس، متد های دلخواه خود را به عنوان افزونه به آن اضافه کنید. به عنوان مثال افزودن یک تابع به کلاس رشته : "someString".MyCustomMethod()

در صورتی که تمایل دارید با سایر نرم افزار های ویندوز مثل اشیا COM ارتباط برقرار کنید و یا از کتاب خانه های بومی Win32 استفاده کنید، با استفاده از عملیاتی که Interop نامیده میشود این کار از طریق سی شارپ به راحتی ممکن است. خدمات Interop باعث میشود که سی شارپ بتواند تقریبا همه کار هایی که یک اپلیکیشن بومی C++ انجام میدهد را انجام دهد. همچنین سی شارپ میتواند در مواقعی که دسترسی مستقیم به حافظه ضروری میشود، قابلیت اشاره گر ها در سی پلاس پلاس را در قالب کد unsafe در خود بگنجاند.

معماری چهارچوب دات نت

سی شارپ روی چهارچوب دات‌نت اجرا میشود. یک جز کامل ویندوز که شامل یک سامانه اجرایی مجازی به نام زمان اجرای زبان‌ مشترک و یا به اختصار CLR است. CLR یک پیاده سازی تجاری از زیربنای زبان مشترک یا با اختصار CLI میباشد؛ یک استاندارد جهانی که مبنای ساخت اجرا و توسعه محیط هایی‌ست که در آن زبان های برنامه نویسی و کتاب خانه ها مشابها با یکدیگر کار کنند.

سورس کد های سی شارپ به یک زبان میانی تبدیل میشوند که با مشخصات CLI همخوانی دارد.

کد میانی (IL) به همراه منابعی چون بیت‌مپ ها و رشته ها روی فضایی از هارد دیسک معمولا با فرمت exe و یا dll به عنوان فایل اجرایی که به آن Assembly گفته میشود ذخیره میشوند.

تمامی Assembly ها دارای یک Manifest هستند که اطلاعاتی را در مورد نوع اسمبلی، نسخه، فرهنگ و اطلاعات امنیتی شامل میشود.

زمانی که یک برنامه C# اجرا میشود، اسمبلی آن در CLR بارگذاری میشود که بنابر اطلاعاتی که درون manifest آن قرار دارد ممکن است رویداد های مختلفی رخ دهد. پس از آن، در صورتی که نیاز های امنیتی برآورده شوند، CLR به صورت درجا کامپایل کردن را انجام میدهد تا کد IL به دستورات بومی ماشین تبدیل شود.

CLR خدمات دیگری را نیز مربوط به جمع آوری خودکار زباله های حافظه، مدیریت استثناها و مدیریت منابع انجام میدهد. گاهی به کدی که توسط CLR اجرا میشود، «کد مدیریت شده» نسبت داده میشود، در مقایسه با کد های «مدیریت نشده» ای که به یک ماشین بومی کامپایل میشوند و یک سیستم خاص را هدف میگیرند.

دیاگرام زیر ارتباط زمان-اجرا و زمان-کامپایل فایل های سورس کد سی شارپ، کتاب خانه های چهارچوب دات‌نت، اسمبلی ها و CLR را توضیح میدهد.

 

این قابلیت همکاری زبانی یکی از ویژگی های کلیدی در دات‌نت است. چرا که کد میانی ای که توسط کامپایلر سی شارپ تولید میشود با مشخصات نوع مشترک مطابقت دارد. کد میانی تولید شده توسط سی شارپ میتواند با کد تولید شده توسط نسخه های دات‌نتی ویژوال بیسیک، سی پلاس پلاس و یا بیش از ۲۰ زبان سازگار با CTS تعامل داشته باشد.

پروژه Hello World

تقریبا میتوان گفت اولین مرحله در یادگیری هر زبان برنامه نویسی، یادگیری گرفتن خروجی از آن است. نحوه دریافت خروجی در یک زبان برنامه نویسی، به ویژه آن هم در سی شارپ که انواع متفاوتی از پروژه ها و پلتفرم ها را پشتیبانی میکند به روش های بسیاری ممکن است. خروجی ما میتواند یک متن نوشته شده در یک کنسول، یک برچسب در فرم های ویندوزی، متنی در یک بلاک متنی، پیغامی با دکمه تایید و یا ... باشد. اما ما راحت ترین راه یعنی نمایش متن در یک کنسول بدون رابط کاربری را انتخاب میکنیم تا در ابتدای کار برخی از مفاهیم مورد نیاز را هم بیاموزیم.

یک سنت قدیمی

در میان برنامه نویسان یک سنت قدیمی مرسوم است که حین شروع با یک زبان برنامه نویسی جدید ابتدا عبارت Hello World چاپ شود. بدون شک این سنت یک وحی منزل الهی نیست و شما مختارید تا کد و دستورات چاپ و الی آخر خود را در این آموزش به هر شکلی که دوست دارید تغییر دهید و آن ها را تست کنید.
در یادگیری برای خود محدودیتی قائل نشوید.

روش کار:

  • ابتدا ویژوال استودیو را باز کنید.
  • در منو ابزار ها به بخش File → New Project بروید
  • از میان انواع مختلف نرم افزار ها روی Console Application کلیک کنید
  • در Solution Explorer فایل Program.cs را باز کنید
  • چیزی شبیه به فایل زیر را خواهید دید. کد موجود در تابع Main را همانند زیر به تابع Main خود اضافه کنید
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AryanSoftware
{
  class Program
  {
    static void Main(string[] args)
    {
      // یک پیام را در کنسول چاپ میکند
      Console.WriteLine("Hello, World!");

      /* منتظر کاربر بمان تا کلیدی را فشار دهد
         این دستور یکی از راه های معمولی‌ست که توسط آن از
         از بسته شدن کنسول و ناپدید شدن آن قبل از اینکه برنامه نویس
         محتوای چاپ شده در کنسول را ببیند جلوگیری میکند
      */
      Console.ReadKey();
    }
  }
}

نمونه کد شماره یک

  • در نوار ابزار روی Debug → Start Debugging کلیک کنید تا برنامه خود را اجرا و عیب یابی کنید. این کار به وسیله کلید F5 هم امکان پذیر است. همچنین درصورتی که مایلید بدون فعال شدن ابزار های عیب یابی ویندوز تنها از برنامه خود اجرا بگیرید دکمه های ترکیبی Ctrl + F5 را بفشارید.

در صورتی که قبلا با زبان های دیگری کار کرده باشید به احتمال زیاد بخش های زیادی از کد برای شما مفهموم است. در صورتی هم که کد ها برایتان چیزی بیشتر از چند حرف انگلیسی نیست عیبی ندارد. همه بخش های کد به موقع توضیح داده خواهد شد ولی فعلا به طور مختصر به این توضیحات بسنده کنید:

  • خطوط شروع شونده با using در ابتدای کد در حال اعلان این موضوع است که شما از توابع و کلاس های موجود در فضای‌‎نام های گفته شده در خطوط یکم تا پنجم استفاده میکنید. یک فضای‌نام قلمرویی‌ست که در آن چندین کلاس تعریف شده است. کلاس های موجود در یک فضای نام نمیتوانند هم نام باشند ولی در فضای‌نام های متفاوت میتوان کلاس هایی با نام های یکسان وجود داشته باشد. به عنوان مثال در کتاب خانه کلاس های دات‌نت برای دو کلاس متفاوت، نام یکسان Button انتخاب شده است که یکی در فضای نام System.Windows.Forms و دیگری در فضای نام System.Windows.Controls وجود دارد و این دو به دلیل اینکه در دو فضای متفاوت هستند با دیگری تداخلی ندارند.
  • کلاس Console که در تکه کد بالا از دو تابع WriteLine() و ReadKey() موجود در آن استفاده کردیم، بخشی از فضای نام System است که در اولین خط وارد کد شده. اگر در ابتدای کار این فضای نام را با استفاده از کلیدواژه using وارد کد نمیکردیم، باید به طور مستقیم میگفتیم که از کلاس کنسول موجود در System استفاده میکنیم و کد ما به شکل زیر تغییر میکرد:
...
System.Console.WriteLine("Hello, World!");
...
System.Console.ReadKey();
...
  • سایر using ها فعلا برای ما کاربردی ندارند، ولی از آنجا که کلاس های موجود در آنها پر کاربرد است و در غالب نرم افزار ها به آنها نیاز میشود به طور پیشفرض در کد نوشته میشوند.
  • خط شامل namespace AryanSoftware { ... } در حال اعلان این موضوع است که تمامی کلاس هایی که بین دو براکت تعریف می‌شوند بخشی از فضای‌نام AryanSoftware خواهند بود.

نکته

شما میتوانید برای یک فضای نام اسم مستعار انتخاب کنید. فرض کنید در فضای نام MyNamespace.Inner1.Inner2 کلاس MyClass وجود داشته باشد. آنگاه میتوانید از کلاس موجود در آن به این شکل استفاده کنید:

using s = MyNamespace.Inner1.Inner2;
...
s.MyClass.SomeMethod();
برای استفاده از تمامی متد های استاتیک یک کلاس نیز میتوان از using static ...; استفاده کرد
  • بخش static void Main(string[] args) { ... } تعریف رفتار تابع Main و نقطه شروع یک برنامه سی شارپ است. static و void کلید واژه های رزرو شده سی شارپ هستند که درباره آنها بعدا صحبت خواهیم کرد.
  • شما ممکن است در کد خود پشت تابع Main و یا کلید واژه class، کلید واژه های public را مشاهده کنید. در باره این مورد نیز بعدا صحبت خواهد شد.
  • string[] args پارامتر تابع Main است که به آن پاس داده می‌شود و در بدنه تابع میتوان از مقادیر آن استفاده کرد. این آرگومان ها در هنگام اجرای برنامه توسط کنسول به آن داده میشوند و در حالت عادی اجرای نرم افزار محتوای args آرایه ای بدون عنصر است.
  • // Comment ویژه کامنت گذاری درخط و /** Line 1 ... Line 2 **/ برای کامنت گذاری در چند خط است.

برخی از کتاب خانه های دات نت

توضیحات فضای نام

فضای نام سیستم کلاس های بنیادی و پایه که به طور مشترک برای نوع داده های مقداری و ارجاعی، رویداد ها و هندل کنندگان رویداد ها، رابط ها، نشان ها و هندل کردن استثنا هاست

System

این فضای نام شامل تمام کلاس های مورد نیاز برای ساخت و کار با فعالیت ها در Windows Workflow Foundation است

System.Activities

این فضای نام، نوع های مورد نیاز برای شناسایی، ثبت نام، فعال سازی و کنترل افزونه ها و اجازه افزونه ها برای ارتباط با نرم افزار میزبان است

System.AddIn

این فضای نام کلاس هایی را شامل میشود که عناصر یک سند شامل سورس کد که خود از تولید و کامپایل سورس کدها در یکی از زبان های برنامه نویسی پشتیبانی کند را بیان کند

System.CodeDom

این فضای نام انواعی را شامل میشود که کلکسیون های استاندارد، ویژه و عام منظوره ای را تعریف کنند

System.Collections

این فضای نام انواعی را شامل میشود که رفتار کنترل ها و کامپوننت ها را در زمان اجرا و یا زمان طراحی پیاده سازی میکنند. فضای نام های فرزند از چهار چوب توسعه پذیری مدیریت شده پشتیبانی میکنند، کلاس های نشان که اطلاعات اضافی ویژه کنترل های داده های پویا برای ASP.NET را فراهم میکند، و شامل کلاس هایی‌ست که به شما اجازه میدهد تا رفتار زمان طراحی کامپوننت ها و رابط کاربری آنها را تعریف کنید

System.ComponentModel

این فضای نام کلاس هایی مربوط به دسترسی و مدیریت داده ها از منابع مختلف را شامل میشود. فضای نام پدر و برخی از فضای نام های فرزند با یکدیگر معماری ADO.NET و تهیه کنندگان داده ADO.NET را تشکیل میدهند. به عنوان مثال، تهیه کنندگان برای SQL-Server، Oracle، ODBC و OleDB. سایر فضای نام های فرزند کلاس هایی را شامل میشوند که توسط ADO.NET Entity Data Model (EDM) و WCF Data Services استفاده میشوند.

System.Data

این فضای نام شامل کلاس هایی برای آرایش نرم افزار های تکنولوژی ClickOnce است

System.Deployment

این فضای نام به توسعه دهندگان این امکان را میدهد که به سادگی به موقعیت کامپیوتر دسترسی داشته باشند. اطلاعات موقعیت ممکن است از منابع متفاوتی چون GPS، سه گوشه سازی Wi-Fi و یا سه گوشه سازی اطلاعات داده موبایل همراه باشد. این فضای نام تهیه‌کنندگان چند گانه موقعیت روی کامپیوتر را کپسول میکند و از اولویت و انتقال یکپارچه بین آنها پشتیبانی میکند. به عنوان یک نتیجه، توسعه دهندگان نیازی به دوخت نرم افزار به تنظیمات سخت افزار برای موقعیت یابی کامپیوتر نخواهند داشت.

System.Device.Location

این فضای نام شما را قادر میسازد تا با پردازش های سیستم، لاگ رویداد ها، و شمارندگان کارایی ارتباط برقرار کنید. فضای نام های فرزند کلاس هایی را شامل میشوند تا با ابزار های آنالیز کد ارتباط داشته باشند، از قرارداد ها پشتیبانی کنند، پشتیبانی زمان طراحی برای مانیتورینگ نرم افزار ها و ابزار ها را توسعه دهند، از داده رویداد ها که از زیر ساخت ردیابی Event Tracing for Windows (ETW) استفاده میکند لاگ بگیرند، از لاگ رویداد ها بخوانند و روی آن بنویسند، داده های کارایی را جمع آوری کنند، و از اطلاعات نماد عیب یابی بخوانند و یا روی آن بنویسند

System.Diagnostics

این فضای نام شامل نوع هایی‌ست که دسترسی به دایرکتوری فعال را از طریق کد مدیریت شده فراهم میکند

System.DirectoryServices

این فضای نام شامل کلاس هایی‌ست که از کاربرد های ساده گرافیک GDI+ پشتیبانی میکند. فضای نام های فرزند از گرافیک های دو بعدی و برداری پیشرفته، کاربرد های پیشرفته تصویری، و خدمات پرینت و تایپوگرافی پشتیبانی میکند. همچنین یک فضای نام فرزند نوع هایی را شامل میشود تا منطق رابط کاربری و نقاشی را در هنگام طراحی توسعه دهد.

System.Drawing

این فضای نام شامل کلاس ها و رابط هایی‌ست که از زمان اجرای زبان پویا پشتیبانی میکند.

System.Dynamic

این فضای نام شامل نوع هایی است که خدمات معماری COM+ را تعریف میکنند؛ که زیر ساخت ها را برای برنامه های تجاری فراهم میکند. یک فضای نام فرزند از مدیریت منابع مالی، یکی از خدمات COM+ که امکان مشمول شدن اشیا بدون تراکنش به معاملات هماهنگ کننده توزیع شده معامله های مایکروسافت ایجاد میکند پشتیبانی میکند. فضای نام های فرزند به طور خلاصه در این جدول و به طور مفصل در مستندات توضیح داده شده اند.

System.EnterpriseServices

این فضای نام شامل کلاس هایی‌ست که اطلاعات مربوط به فرهنگ، از جمله زبان، منطقه/کشور، تقویم های کاربردی، فرمت های رایج نمایش تاریخ، ارز، اعداد و ترتیب گذاری رشته ها را تعریف میکنند. این کلاس های برای نوشتن نرم افزار های جهانی (بین المللی) مفید اند. کلاس هایی همچون StringInfo و TextInfo کاربرد های پیشرفته جهانی سازی از جمله پشتیبانی از جایگزینی و پردازش عناصر متنی را فراهم میکنند.

System.Globalization

این فضای نام شامل کلاس هایی برای احراز هویت و مجوز برای برنامه های دات‌نت است.

System.IdentityModel

این فضای نام شامل نوع هایی‌ست که از ورودی و خروجی، شامل قابلیت خواندن و نوشتن داده روی جریان ها به‌صورت همگام و یا ناهمگام، فشرده سازی داده در جریان ها، ساخت و استفاده از مخازن ایزوله، مپ کردن فایل ها روی آدرس منطقی یک برنامه، ذخیره چندین شی داده در یک مخزن، ارتباط ناشناس و یا نام گذاری شده با پایپ ها، پیاده سازی لاگ شخصی سازی شده، و هندل کردن جریان داده ها از پورت های سریال و به آنها پشتیبانی میکند.

System.IO

این فضای نام شامل نوع های‌ست که از کوئری هایی که از زبان سیستم جامع پرس‌وجو استفاده میکنند پشتیبانی میکند. همچنین شامل نوع هایی است که کوئری ها را به عنوان یک شی در یک درخت عبارت ارائه میکنند.

System.Linq

این فضای نام شامل نوع هایی است که دسترسی به مدیریت اطلاعات و مدیریت رویداد ها در مورد سیستم، دستگاه ها، و برنامه هایی که به زیر ساخت ابزارهای مدیریت ویندوز وابسته هستند را تهیه میکند. این فضای نام ها همچنین شامل نوع هایی ضروری برای کاربردی کردن نرم افزار ها هستند تا مدیریت اطلاعات و رویدادشان را از طریق WMI به مشتریان بالقوه ارائه دهند.

System.Management
این فضای نام ویژه پخش فایل های صدا و دسترسی به صداهایی است که توسط سیستم تهیه میشود. System.Media
این فاضی نام شامل نوع هایی است که شما را قادر به اتصال به مانیتور و مدیریت پیام های صف بندی شده شبکه و ارسال، دریافت، یا نظر انداختن به پیام ها میکند. یک فضای نام فرزند شامل کلاس هایی است که میتوان از آن برای گسترش پشتیبانی کلاس های پیام در زمان طراحی استفاده کرد. System.Messaging
این فضای نام شامل کلاس هایی به منظور تهیه یک رابط برنامه نویسی ساده برای چندین پروتکل شبکه، دسترسی و به روزرسانی تنظیمات با برنامه نویسی برای فضای نام های System.Net، تعریف سیاست های حافظه نهان برای منابع وب، ساخت و ارسال ایمیل، ارائه هدر برای تبادل ایمیل های اینترنتی چند منظوره، دسترسی به داده های ترافیک شبکه و اطلاعات آدرس شبکه، و دسترسی نظیر-به-نظیر کاربرد های شبکه است. فضای نام های اضافه فرزند یک پیاده سازی مدیریت شده از رابط سوکت های ویندوز و دسترسی به جریان های شبکه برای ارتباط امن تر بین میزبان ها را تهیه میکنند. System.Net
این فضای نام شامل نوع اعداد هستند که نوع ابتدایی اعداد را کامل میکنند، از جمله Byte، Double و Int32 که توسط چهارچوب دات‌نت تعریف می‌شوند. System.Numerics
این فضای نام شامل نوع هایی‌ با پشتیبانی از چاپ، که دسترسی به ویژگی های اشیا چاپ سیستم را فراهم میکنند و امکان کپی سریع از تنظیمات آن ها به یک شی دیگر از همان نوع را ایجاد میکنند، و همچنین از تعامل مدیریت شده اشیا System.PrintTicket و ساختمان های مدیریت نشده GDI DEVMODS نیز پشتیبانی میکنند. System.Printing
این فضای نام شامل نوع هایی است که نمایش مدیریت شده از نوع های بارگذاری شده، متدها و فیلدها را تهیه میکند و همچنین میتواند به طور پویا نوع ها را بسازد و فرا بخواند. یک فضای نام فرزند شامل نوع هایی ست که میتواند یک کامپایلر یا یک ابزار دیگر را قادر سازد تا ابرداده ها و زبان میانی مایکروسافت را تولید کنند. System.Reflection
این فضای نام شامل نوع هایی است که توسعه دهندگان را قادر به ساخت، ذخیره و مدیریت منابع یک نرم افزار با فرهنگ مخصوص میکند. System.Resources
این فضای نام شامل نوع هایی است که از آثار متقابل برنامه ها با CLR و نوع هایی که دارای ویژگی هایی چون کش کردن داده های نرم افزار،  هندل کردن پیشرفته استثناها، فعال سازی برنامه ها با قلمرو نرم افزار ها، COM متقابل، نرم افزار های توزیع شده، سریال سازی و دیسریال سازی و نسخه گذاری هستند پشتیبانی میکند. فضای نام های اضافه، نویسندگان کامپایلر را قادر میسازند تا نشان هایی را تعریف کنند که روی رفتار زمان اجرای CLR تاثیر بگذارد، یک قرارداد اطمینان بین مجموعه ای از کد ها و دیگر کد هایی که به آن وابسته اند تعریف، و یک تهیه کننده مقاوم برای بنیاد ارتباطات ویندوز پیاده سازی میکند. System.Runtime
یک مارشالینگ درونی برای چهارچوب دا‌ت‌نت تعریف میکند. System.Runtime.InteropServices.CustomMarshalers
این فضای نام شامل کلاس هایی است که سامانه امنیت و اجازه ها را در دات‌نت ارائه میکنند. فضای نام های فرزند نوع هایی را فراهم میکنند که دسترسی به بازرسی اشیا قابل امن شدن را کنترل و احراز هویت میکند، خدمات رمزنگاری را فراهم میکند، دسترسی به دستورات و منابع را بسته به سیاست ها کنترل میکند و همچنین از مدیریت حقوق برای محتواهایی که توسط نرم افزار ها تولید شده اند پشتیبانی میکند. System.Security
این فضای نام شامل نوع های ضروری برای ساخت خدمات بنیاد ارتباطات ویندوز و نرم افزار های مشتری‌ست. System.ServiceModel
این فضای نام شامل نوع هایی‌ست که شما را قادر به پیاده سازی، نصب و کنترل سرویس های ویندوز و همچنین گسترش پشتیبانی زمان طراحی سرویس های ویندوز میکند System.ServiceProcess
شامل نوع هایی برای تشخیص صداست. System.Speech
این فضای نام شامل نوع هایی برای انکودینگ کاراکترها و تولید رشته هاست. یک فضای نام فرزند شما را قادر میسازد تا متن ها را به وسیله عبارات منظم پردازش کنید. System.Text
این فضای نام شما را قادر به برنامه نویسی چندنخه میکند. یک فضای نام فرزند نوع هایی را برای راحت تر کردن نوشتن موازی و کدهای ناهمگام تهیه میکند. System.Threading
این فضای نام یک مدل برنامه نویسی Actor را که از پیامی با پشتیبانی پردازش داخلی برای گذر از جریان های داده ای درشت و Task های خط‌لوله ارائه میدهد. برای اطلاعات بیشتر جریان داده ها (کتاب خانه کار های موازی) را ببینید. System.Threading.Tasks.Dataflow
این فضای نام کامپوننت Timer که یک رویداد را در زمان های خاص اجرا میکند را شامل میشود. System.Timers
این فضای نام شامل نوع هایی است که از معاملات با ثبت نام های چندگانه، شرکای توزیع شده،  اعلانات چند فازه و مدت دار پشتیبانی میکنند. یک فضای نام فرزند شامل نوع هایی است که تنظیمات استفاده شده با نوع های Sysyem.Transactions را توضیح میدهد. System.Transactions
این فضای نام شامل نوع هایی است که مرورگر/سرور را قادر به برقراری ارتباط میسازد. فضای نام های فرزند شامل نوع هایی هستند که از احراز هویت فرم های ASP.NET، خدمات نرم افزار ها، کش کردن داده ها روی سرور، تنظیمات نرم افزار های ASP.NET، داده های پویا، هندل کننده های HTTP، سریال کننده های JSON، ترکیب کاربرد های AJAX در ASP.NET، امنیت ASP.NET و وب سرویس ها پشتیبانی میکنند. System.Web
این فضای نام شامل نوع هایی است که در نرم افزار های بنیاد ارائه در ویندوز، از جمله انیمیشن ها، کنترل های رابط کاربری، انقیاد داده ها و تبدیل نوع ها استفاده میشود. فضای نام System.Windows.Forms و فرزندانش هم برای استفاده در نرم افزار های Windows Forms استفاده میشوند. System.Windows
این فضای نام شامل نوع هایی است که برای توسعه نرم افزار هایی که از بنیاد جریان کار در ویندوز استفاده میکنند، استفاده میشود. این نوع ها پشتیبانی زمان طراحی و زمان اجرا برای قوانین و فعالیت ها را تهیه میکنند تا موتور زمان اجرای جریان کار را تنظیم، میزبانی و عیب یابی کنند. System.Workflow
این فضای نام شامل نوع هایی است که از تجزیه و پردازش زبان نشانه گذاری توسعه پذیر پشتیبانی کنند. System.Xaml
این فضای نام شامل نوع هایی برای پردازش XML است. فضای نام های فرزند از سریال کردن اسناد و یا جریان های XML، اسکیما های XSD، XQuery 1.0 ، XPath 2.0 و LINQ به XML (که یک رابط برنامه نویسی در-حافظه XML برای تغییر راحت اسناد XML است) پشتیبانی میکند. System.XML
این فضای نام و تمامی اعضای آشکار آن بخشی از پوشش مدیریت شده رابط دستیابی Component Object Model (COM) هستند. Accessibility
این فضای نام شامل نوع هایی است که از MSBuild و افزونه های عیب یابی برای بنیاد جریان کار در ویندوز پشتیبانی میکنند. Microsoft.Activities
این فضای نام شامل نوع هایی است که دسترسی برنامه ریزی شده به موتور MSBuild و کنترل آن را تهیه میکند. Microsoft.Build
این فضای نام شامل نوع هایی است که از کامپایل و تولید کد از سورس کد های نوشته شده به زبان برنامه نویسی سی‌شارپ، و نوع هایی با پشتیبانی از دستورات بین سی‌شارپ و زمان اجرای زبان پویا پشتیبانی میکند. Microsoft.CSharp
این فضای نام شامل نوع هایی ست که از کامپایل و تولید کد های زبان JScript پشتیبانی میکنند. Microsoft.JScript
این فضای نام شامل کلاس ها، رابط ها و شمارنده هایی است که مخصوص یکپارچگی CLR چهار چوب دات‌نت مایکروسافت و SQL Server مایکروسافت؛ و همچنین محیط اجرایی پردازش های موتور پایگاه داده SQL Server است. Microsoft.SqlServer.Server
این فضای نام شامل کلاس هایی است که از کامپایل و تولید کد های نوشته شده به زبان برنامه نویسی Visual Basic پشتیبانی میکنند. فضای نام های فرزند شامل نوع هایی هستند که از خدمات کامپایلر ویژوال بیسیک و نوع هایی که شامل مدل نرم افزاری ویژوال بیسیک، فضای نام My، عبارات لامبدا و تبدیلات کد پشتیبانی میکنند. Microsoft.VisualBasic
این فضای نام شامل نوع هایی برای پشتیبانی از کامپایلر سی پلاس پلاس، نوع هایی که STL/CLR را پیاده سازی میکنند و همچنین رابط های جنریک کتاب خانه STL/CLR است. Microsoft.VisualC
این فضای نام شامل نوع هایی است که به رویدادهای مطرح شده توسط سیستم عامل سیدگی می کنند، رجیستری سیستم را اداره می کنند و فایل ها و هندل های سیستم عامل را ارائه میکنند. Microsoft.Win32
این فضای نام شامل نوع هایی است که از پوسته ها و پیش نمایش ها در نرم افزار های Windows Presentation Framework (WPF) پشتیبانی میکنند. Microsoft.Windows
تنها شامل یک نوع برای نگاشت ارائه دهندگان آتوماسیون مشتری ست. UIAutomationClientsideProviders
شامل نوع هایی است که کامپایلر تولید میکند و قرار نیست به طور مستقیم در کد شما استفاده شود. XamlGeneratedNamespace

متغیر ها و نوع های آماده سی شارپ

به کد زیر نگاه کنید:

var myName = "Aryan";
string myLastName = "Ebrahimpour";

Console.WriteLine("myName"); // Prints: myName
Console.WriteLine(myName); // Prints: Aryan
Console.WriteLine(myName + " " + myLastName); // Prints: Aryan Ebrahimpour

int number1 = 2;
int number2 = 3;

string strNumber1 = "2";
string strNumber2 = "3";

Console.WriteLine(number1 + number2); // Prints: 5
Console.WriteLine(strNumber1 + strNumber2); // Prints: 23

uint myBirthYear = 1376;
var isTired = false;
bool isThinking = true;
float dpiScaleFactor = 1.25;
  • در سی شارپ میتوانید متغیر ها را به شکل ساده تری تنها با کلید واژه var تعریف کنید. به این نوع تعریف متغیر، تعریف متغیر به صورت Implicit میگویند.با استفاده از این کلید واژه، نوع متغیر در هنگام اجرا تشخیص داده می‌شود. توجه کنید که از این نوع تعریف نمیتوانید در Initialization استفاده کنید به عنوان مثال عبارت int i = (i = 20); یک گزاره درست است ولی عبارت var i = (i = 20); با خطای کامپایل مواجه میشود.

کانال تلگرام «اطلاعیه های مهم» آرین نرم افزار ایجاد شد.

در صورتی که تمایل دارید از طریق تلگرام از به‌روز‌رسانی نرم افزار ها مطلع شوید از طریق این لینک وارد کانال شوید:

 دریافت اطلاعیه های مهم از تلگرام

در ضمن،

ما هم مثل شما از اسپم متنفریم

Windows Presentation Foundation

یا به اختصار WPF؛ تکنولوژی مایکروسافت برای طراحی نرم افزار های مدرن با تجربه کاربری بسیار قوی است که از ترکیب یکی از زبان های برنامه نویسی پشتیبانی شده توسط فریم ورک دات‌نت (معمولا C#) و زبان مارک‌آپ XAML بهره میبرد.

این زیرساخت بخشی از چهارچوب معروف مایکروسافت به نام  NET Framework. بوده و از مشهور ترین نرم افزار های ساخته شده توسط آن، محیط توسعه Visual Studio است. در این مطلب نگاهی اجمالی به ویژگی های این زیرساخت می‌اندازیم.

Microsoft Visual Studio, Written in C++ and C# with WPF Microsoft Visual Studio » and «Blend for Visual Studio», Written in C++ and C# with WPF»

امکانات WPF

  • Hardware Accelrated and Direct 3D: نرم‌افزار های توسعه داده شده با WPF به طور پیش‌فرض از امکانات مربوط به شتاب دهنده های گرافیکی، سخت افزاری و DirectX بهره میبرند. 
  • رابط کاربری XAML: رابط کاربری نرم افزار های WPF با مارک‌آپ XAML و Layout های بسیار کارا و قوی تعریف میشوند. به همین دلیل واکنش‌گرا کردن آن بسیار آسان و تغییرات رابط کاربری برای تغییرات احتمالی در آینده نیاز به تغییر بزرگی در بخش های متفاوت برنامه ندارد.
  • پشتیبانی از فرمت های چند رسانه ای: WPF انواع مختلفی از فرمت های چند رسانه ای و پخش کننده های آن ها را به طور پیش‌فرض در خود جای داده و پشتیبانی میکند.
  • تغییر آسان قالب ها و استایل ها: در WPF تغییر ظاهر کنترل ها و تعریف Template های جدید برای نمایش دیتا بسیار آسان است. به عنوان مثال میتوانید به محتوای یک لیست‌باکس کنترل های مختلف مثل عکس یا چک‌باکس اضافه کنید و تغییرات ظاهری متفاوتی را در آن اعمال کنید.
  • جهانی‌سازی: توسعه نرم افزار های چند زبانه و چند‌چینشی به وسیله امکاناتی که WPF در اختیار شما قرار میدهد بسیار آسان است.
  • پشتیبانی از اسناد XPS و PDF و ...: WPF از از امکانات مربوط به گزارش گیری و همچنین پردازش و ایجاد اسناد و کتاب های الکترونیکی بهره میبرد.
  • کتاب خانه ها: برای این زیر ساخت کتاب خانه ها و ابزار های متفاوت بسیاری توسعه داده شده است.
  • برنامه نویسی سه بعدی: در WPF، دقیقا همانند یک موتور بازی سازی امکانات مربوط به ایجاد اشیا گرافیکی و اعمال دوربین و انیمیشن بر روی آن ها تعبیه شده است. اگرچه طراحی سه بعدی در WPF سخت تر از موتور های بازی سازی ست.
  • انیمیشن: WPF از کتاب خانه ها و ابزار بسیار قدرتمندی در زمینه ساخت و توسعه انیمیشن روی کنترل ها و اشکال هندسی، تایم‌لاین ها و استوری‌برد ها بهره میبرد.
  • انقیاد داده: از آنجا که معماری ساخت نرم افزار در WPF مبتنی بر Model-View-ViewModel یا به اختصار MVVM است، انقیاد داده (Data Binding) به اشکال مختلف و بسیار کارآمد در آن پیاده سازی شده است.
  • گرافیک: رندر کننده گرافیکی WPF وابسته به وکتور ها و بردار های گرافیکی‌ست. لذا کیفیت تصاویر و همچنین ظاهر و ساختار برنامه در مانیتور ها با ریزولوشن های متفاوت حفظ می شود. همچنین در این زیرساخت تنظیمات متفاوتی مربوط به hdpi وجود دارد.

در مقایسه با Windows Forms

اگرچه که تکنولوژی فرم های ویندوزی (Windows Forms) تکنولوژی مرده ای نیست و همچنان پشتیبانی و استفاده می‌شود، اما کسانی که با هر دو تکنولوژی WPF و WinForms کار کرده اند و با جادوی WPF آشنایی دارند، برای طراحی نرم افزار های خود هرگز به سمت Windows Forms نمی روند. یکی از دلایلی که هنوز از Windows Forms استفاده می شود این است که امکانات کمتر ولی طراحی راحت تری دارد و برخلاف WPF؛ برای ساخت و توسعه نرم افزار ها شما نیاز به دانش عمیق در مورد اصول طراحی یک نرم افزار مهندسی شده ندارید. نقطه مشترک WPF و WinForms استفاده از رابط های برنامه نویسی Win32 یا همان Classic Desktop است.

در مقایسه با WinRT

نرم افزار های UWP نیز مانند WPF دارای رابط XAML هستند و به طور کلی، شباهت های بسیار زیادی از نظر کنترل ها و Layout با WPF دارند. برخلاف WPF که روی تمامی نسخه های ویندوز که دات نت فریم ورک روی آن نصب شده باشد قابل اجرا هستند، نرم افزار های UWP تنها روی ویندوز های 8 و بالاتر قابل اجرا هستند و بسته به نوع API میتوانند به سیستم عامل نسخه بالاتری نیاز داشته باشند.

نرم افزار های WPF نیز میتوانند به وسیله Desktop Bridge روی Windows Store قرار بگیرند و یا از امکانات ویژه سیستم عامل های به روز تر مانند Widnows 10 استفاده کنند. اما برای توسعه نرم افزار های ویژه این سیستم عامل ها، نرم افزار های Universal و WinRT انتخاب بهتری‌ست.

 نرم افزار نگهبان چشم، نرم افزاری فارسی و بومی برای محافظت از چشم های شما و ویژه کسانی هست که به مدت طولانی به مانیتور کامپیوتر و لپ تاپشون نگاه میکنند. با استفاده از این برنامه و تنظیم کردن زمان های دلخواه برای نمایش پیام میتونید وقت هایی رو به استراحت کردن اختصاص بدید.

ویژگی های نرم افزار:

    • تنظیم دو نوع استراحت کوتاه مدت و بلند مدت
    • تنظیم ساعات زمانی استراحت ها
    • قابلیت اجبار به استراحت ویژه کسانی که میخوان برنامه مجبورشون کنه که استراحت کنن
    • جمع آوری و مدیریت داده های آماری
    • اجرا با استارپ‌آپ ویندوز
    • رابط کاربری زیبا و در دسترس (تحت پروژه کیت رابط کاربری هستی Hasti UI Kit توسعه داده شده توسط آرین نرم افزار)
    • قابلیت توقف و ایست‌موقف نرم افزار
    • دسترسی آسان از Taskbar
    • اطلاع دادن به کاربر یک دقیقه قبل از استراحت بلند مدت
    • استراحت کوتاه یا بلند به صورت دستی
    • در صورتی که نرم افزار متوقف کنید، نرم افزار در اجرای بعدی نیز (استارت‌آپ) متوقف خواهد بود
سورس کد روی گیت هاب منتشر شد. همچنین منتظر نظرات و پیشنهادات به منظور بهبود نرم افزار هستم (:
نگارش فعلی نرم افزار: ۱.۰.۱
این نرم افزار برای اجرا نیاز به نرم افزار .Net Framework نسخه ۴.۵.۲ دارد که به طور پیشفرض روی اکثر سیستم های خانگی نصب است. در صورتی که این فریم ورک را ندارید و هنگام اجرای نرم افزار پیامی مبنی به نصب این فریم ورک دریافت میکنید از لینک داده شده، این پیش نیاز را نصب کنید.

دانلود فایل نصبی نرم افزار (فایل فشرده Zip)

سورس کد در گیت هاب

 این پروژه، نرم افزاری تحت شبکه مثل تلگرام ولی با امکاناتی مثل درخواست دوستی و یا ثبت چندین شماره برای یک کاربر است. ویژگی های زیر در نرم افزار پوشش داده شده:

  • ارسال پیام و چت با دوستان در محیطی گرافیکی
  • ذخیره داده هایی مثل پاسخ به پیام قبلی یا ذخیره زمان ارسال در سرور (این API در رابط کاربری نرم افزار پیاده سازی نشده)
  • درخواست دوستی به کاربری با شماره همراه و یا شناسه کاربری
  • جستجو در شبکه دوستان با عمق دلخواه و نمایش مسیر به فرد مورد نظر، (مثالی از یک جستجو با عمق چهار: آرین ← عرفان ← نیکان ← محمد)
  • کد نویسی شی گرا
  • لاگ نویسی سرور
  • کامنت و توضیحات در کد
  • استفاده از دیتابیس SQLite برای ذخیره سازی داده ها و Embed کردن آنها در کنار فایل های سرور و بهره گیری از Socket Programming
  • کنترل های شخصی سازی شده در رابط کاربری

توجهات
توجه ۱: این نرم افزار صرفا یک پروژه دانشجویی و طرح اولیه بوده و قطعا انگشت کوچیکه تلگرام هم نمیشه پس به دید آموزشی بهش نگاه کنید فقط (:
توجه ۲: اسم این نرم افزار به احترام استاد عزیزم دکتر میر روشندل در ابتدا «میروگرام» بود که در اواسط پروژه به دلایلی به «آریوگرام» تغییر نام پیدا کرد. تفاوت اسم نرم افزار و اسم برخی از پوشه ها هم به همین دلیله.

دانلود پروژه، نرم افزار ها و فایل پایگاه داده

روش تبادلات داده در نرم افزار:

اطلاعات پروژه:

Project Informations
Name: Aryogram (Mirogram)
Type: Server, Client and database file
Language: C# with .NET Framework 4.5 + XAML
Developer: Aryan Ebr
License: Open Source, Aryan Software Productions
Project Type: Visual Studio 2017 Solution (.sln)

اسکرین شات سرور

<

اسکرین شات های نرم افزار


 سلام. و با عرض پوزش بابت تاخیر بلند مدت بنده. این بار با نرم افزار پروژه ساختمان های داده ترم سوم مون در خدممتون هستم که شامل پروژه های زیره:

  • برش مستطیل: پیدا کردن مساحت بزرگ ترین مستطیل ممکن از اتصال چند مستطیل به هم چسبیده.
  • فشرده سازی هافمن: فشرده کردن فایل متنی به وسیله الگوریتم فشرده سازی هافمن
  • هرم جستجوی دودویی: ساخت Treap متوازن با ورودی دلخواه
  • بازی مسیر یابی مارپیچ: پیاده سازی الگوریتم های جستجوی عمق اول (DFS) و جستجوی سطح اول (BFS) روی یک صفحهMaze

دانلود نرم افزار به صورت تکی (بدون پروژه)

اطلاعات پروژه:

Project Informations
Name: Guilan Data Structure Projects (Persian)
Type: Project + Single Runnable Application
Language: C# with .NET Framework 4.5
Developer: Aryan Ebr
License: Open Source, Aryan Software Productions
Project Type: Visual Studio Solution (.sln)

اسکرین شات ها:





استاد درس برنامه سازی پیشرفته مون برای پروژه یکی مونده به آخر تعیین کرد که بازی معروف ویندوز XP یعنی MineSweeper رو بسازیم. راستش من خودم که اون زمان مین روب بازی میکردم اصلا نمیدونستم چی به چیه. فقط سر چند تا بلوک کلیک میکردم و بعدش یا میترکیدم یا در بهترین حالت چند تا عدد رو صفحه بازی نمایش داده میشدن. خلاصه اینکه تازه سر این پروژه فهمیدم داستان چیه.

کلیت قضیه بازی و قوانینش به این شکله که شما طول و عرض و درصد مین های بازی رو تعیین میکنید. بعد یه سری خونه میاد که با انتخاب هر خونه، اگه بمب باشه شما میبازید، و اگه نباشه تعداد بمب های اطراف اون خونه رو روی بلوک انتخاب شده نشون میده (و شما با یه سری محاسبه های بازی ریاضی ای میتونید بمب ها رو راحت تر تشخیص بدید). همچنین این بازی دارای قابلیت بسط خودکاره (خانه های جایزه) که اگه مثلا شما رو خونه ای کلیک کردید که هیچ بمبی اطرافش نبود، تمام خونه های همسایه روشون کلیک میشه و نمایش داده میشن ( و اگه اون ها هم احیانا خونه هایی داشتن که هیچ بمبی کنارشون نبود باز خونه های اطرافشون رو آزاد میکنن. یادداشت فنی: تابع بازگشتی)

ویژگی هایی که پوشش دادم:

  • قابلیت دریافت تنظیمات بازی (مثل طول، عرض و تعداد مین) در صفحه اصلی بازی
  • طراحی رابط کاربری نسبتا مناسب
  • قابلیت ذخیره بازی پس از خروج در نیمه بازی و امکان بارگذاری مجدد بازی (یادداشت فنی: با استفاده از ObjectSerialization)
  • پخش صدا و رابط با آیکون های فلت
  • برنامه نویسی شی گرا
  • قابلیت ذخیره رکورد زمان بازی ها و نمایش آنها به صورت جدولی
  • امکان پرچم گذاری روی خانه ها
  • قابلیت خروج از بازی (: حالا شاید فکر کنید خیلی ساده بود این قسمتش ولی نبود ((:

 برای اجرای این بازی نیاز به نرم افزار Java Runtime Enviorment هست. در صورتی که این پیش نیاز رو ندارید میتونید از لینک درج شده دانلودش کنید.
Project Informations
Name: Minesweeper (Persian)
Type: Project + Single Runnable Jar File
Language: Java +Swing Technology
Developer: Aryan Ebr
License: Open Source, Aryan Software Productions
Project Type: Eclipse Project

دانلود پروژه بازی (محیط توسعه اکلیپس) 

دانلود بازی بدون پروژه (فایل قابل اجرا JAR)


MineSweeper

 چند وقت قبل وبلاگ جادی (کیبرد آزاد) مطلبی رو منتشر کرد تحت عنوان نظر سنجی گسترده وضعیت برنامه نویس ها و سیستم ادمین های ایران که هدفش این بود که با زندگی شغلی و غیر شغلی برنامه نویسا آشنا بشیم.

 حالا نتایج این نظر سنجی منتشر شده و خوشبختانه با استقبال خوبی هم رو به رو بوده.

به نقل از رادیو گیک:

یک ماه قبل نظر سنجی گسترده ای رو شروع کردیم که بتونه به ما ایده مناسبی از وضعیت زندگی مون بده. اینکه بدونیم تقریبا رنج حقوق چیه، تخصص های مورد نیاز چیه، علاقمندی آدم ها چیه و کشف کنیم که بقیه برنامه نویس ها و سیستم ادمین های ایرانی نه فقط چطور کار می کنن که چطور زندگی می کنن (: خوشبختانه استقبال بسیار خوب بود و بیشتر از هزار نفر به پرسشنامه جواب دادن. از نظر من جواب دادن به این پرسشنامه یک قدم مهم بود توی بهتر شدن درک ما از شرایط خودمون و بهتر کردن وضعیت چونه زنی و پیشرفت شرایط کاری مون...

نمایش نتایج نظرسنجی

نمایش مطلب کامل در کیبرد آزاد

 نرم افزار محاسبه گر عبارات منطقی + پروژه

 راهنمای نرم افزار


 عملگر های & و . برای عملگرAND،

 عملگر های | و + برای عملگرOR،

 عملگر های -> ، <- و <->برای عملگر هایشرطی،

 عملگر های T و 1 برای عملگرTrue،

 عملگر های F و 0 برای عملگرFalse

Project Informations
Name: Logical Experssion Solver
Type: Project + Single app
CPU Target: both
Language: C# WPF + Xaml
Developer: Aryan Ebr
License: Open Source, Aryan Software Productions
Project Type: Visual Studio sln File

دانلود نرم افزار به همراه پروژه 

دانلود نرم افزار بدون پروژه


به نقل از رادیو گیک:

چند سالی است که نمی دونم چرا هر بار آخر سال فکر می کنم باید یک نظرسنجی گسترده درست کنم تا از برنامه نویس ها در مورد خیلی چیزها سوال کنیم، ولی اینکار رو نمی کنم و بعد می گم «سال بعد». اما امسال بالاخره دست به عمل زدم و با همکاری و نظر یکسری از دوستان، یک پرسشنامه طراحی کردیم. ایده این پرسشنامه اینه که در مورد زندگی و شرایط کار برنامه نویس ها، توسعه دهنده ها و مدیر سیستم ها سوال بپرسه و بعد نتایج رو به شکل آزاد به همه بده. سوال ها در بخش های مختلفی (دموگرافیک، زندگی و کار) هستن. بزرگترین فایده اش این دو تا است:
  • با هم آشنا می شیم و درکی پیدا می کنیم از شرایط همدیگه. چجوری کار می کنیم، با چی کار می کنیم و چه زبون ها و تکنولوژی هایی چقدر شایع هستن
  • از اون مهمتر می فهمیم که با چقدر سابقه در کجا تقریبا چقدر باید حقوق بگیریم. این اصلی ترین انگیزه است تا درک خوبی از بازار کارمون پیدا کنیم.
در نتیجه اگر در نظر سنجی گسترده وضعیت برنامه نویس ها و سیستم ادمین های ایران شرکت کنین و جواب ها رو دقیق بدین و مهمتر از اون لینک و مفهومش رو جاهای دیگه پخش کنین عالی می شه. هر چقدر پر شدنش گسترده تر باشه باعث می شه بایاس به سمت خواننده های من، لینوکسی ها، اوپن سورسی ها، … کمتر بشه و جواب ها دقیق تر باشه و به همه ما توی شرایط کاری آینده کمک کنه. خیلی مسخره است که ما اکثرا نمی دونیم که مثلا یک برنامه نویس پی اچ پی حرفه ای با حدود ۱۰ سال سابقه کار در یک شرکت ۱۰۰ نفره تقریبا چقدر باید حقوق بگیره. برای حل این مشکل و خبردار شدن از وضعیت همدیگه نظر سنجی گسترده وضعیت برنامه نویس ها و سیستم ادمین های ایران منتظر شماست: جواب بدین و پخش کنین تا همه از نتایجش استفاده کنیم.

شرکت در نظر سنجی

 پروژه متن باز بازی دوز در محیط گرافیکی با زبان ++C

 برای اجرای نرم افزار نیاز به نرم افزار C++ Runtime ویژه سیستم های 32 بیتی و یا 64 بیتی هست. در صورتی که این فایل ها رو ندارید میتونید از لینک های درج شده دانلودشون کنید.

Project Informations
Name: Tic Tac Toe Game, Single Player + Multi Player
Type: Project + Single app
CPU Target: both
Language: C++ CLR
Developer: Aryan Ebr
License: Open Source, Aryan Software Productions
Project Type: Visual Studio sln File

دانلود پروژه بازی دوز 

دانلود بازی دوز بدون پروژه


 احتمالا توی وبگردی هاتون سایت هایی رو دیدید که وقتی با مرورگر فایرفاکس واردشون میشید، در بخش جستجویی بالای مرورگر علامت + میاد. به این معنی که میتونید این سایت رو به صورت جستجوی همیشگی به مرورگر اضافه کنید. منظورم همین تصویر زیره:

 

 

 برای ساخت همچین ابزاری برای وبلاگ خودتون با ما همراه باشید. خبر خوب هم اینه که اگه احیانا امکانات جاوا اسکریپت رو هنوز از بلاگ بیان خریداری نکردید، مشکلی وجود نداره. چون ما قرار نیست از جاوا اسکریپت استفاده کنیم.

 البته باید گوشزد کنم که من این ابزار رو برای وبلاگ های تحت سیستم بلاگ بیان و همچنین جستجوگر سلام آماده سازی کردم و اگه از سیستم وبلاگدهی دیگه ای استفاده میکنید یا میخواید این ابزار از سایتی به جز سلام جستجو کنه باید تغییرات مورد نظر خودتون رو اعمال کنید.

 

آموزش ساخت


در قدم اول برای ساخت ابزار، شما نیاز به یک فایل XML دارید که اطلاعات جستجوگر رو داخل خودش قرار بده. برای ساخت این فایل XML دو تا راه وجود داره.

راه حل اول:


۱- نرم افزار کد ساز وبلاگ رو دانلود کنید.

۲- ابزار ساخت جستجوگر فایرفاکس رو که سازگاری کامل با نرم افزار بالا داره رو دانلود کنید.

۳- در منو بالای نرم افزار، روی «مدیریت افزونه ها» و سپس «نصب افزونه از فایل...» کلیک کنید و فایل افزونه ای که دانلود کردید رو انتخاب کنید.

۴- نرم افزار از شما میخواد که دوباره اجرا بشه. پس از ریستارت نرم افزار از منو  بالا وارد «ابزار ها و افزونه ها» بشید و ابزار «جستجوگر فایرفاکس» رو انتخاب کنید.

۵-اطلاعات سایتتون رو داخل نرم افزار بنویسید.

۶- دکمه «ساخت XML جستجوگر» رو بزنید و کد ها رو تحویل بگیرید. توی ابزار گفته شده، همه بخش هایی که نیازه تغییر کنه رو آوردم و اگه حتی یه خط کدنویسی هم بلد نباشید باز میتونید جستجوگر مورد نیاز خودتون رو به راحتی تولید کنید. بلدید هم که چه بهتر (:

دانلود ابزار دانلود نرم افزار کد ساز

 

راه حل دوم:


اگه به هر دلیلی نمیخواید از نرم افزار کد ساز استفاده کنید میتونید فایل XML زیر رو به دلخواه خودتون تغییر بدید و با وبلاگ خودتون سازگار کنید

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"> <ShortName>آرین نرم افزار</ShortName> <Description>جستجو در آرین نرم افزار :: سلام</Description> <InputEncoding>UTF-8</InputEncoding> <Image width="16" height="16" type="image/x-icon">http://bayanbox.ir/view/6129694182783141553/blogfav.png </Image> <Url type="text/html" method="GET" template="http://blogs.salam.ir/blog.ir"> <Param name="site" value="aryan-pc.blog.ir" />
<Param name="q" value="{searchTerms}" /> </Url> <Url type="application/x-suggestions+json" template="http://salam.ir/onlineAutocomplete/autocomplete?action=complete&amp;format=opensearch&amp;q={searchTerms}" /> <moz:SearchForm>http://salam.ir/</moz:SearchForm> <Url type="application/opensearchdescription+xml" rel="self"
template="http://salam.ir/static/salam.xml" />
</OpenSearchDescription>

 

بعد از اینکه به یکی از دو روش بالا، فایل XML رو تولید کردید اون رو با فرمت xml ذخیره و در بیان باکس خودتون آپلود کنید.

بعد از آپلود، آدرس فایل آپلود شده رو کپی کنید و در آخر کد زیر رو به بخش <head> از قالب خودتون کپی کنید:

<link href="آدرس فایل آپلود شده اینجا وارد شود" title="آرین نرم افزار" type="application/opensearchdescription+xml" rel="search">

 

الان اگه با مرورگر فایرفاکس وارد وبلاگتون بشید میبیید که تغییرات جستجوگر اعمال شده.

شاد باشید (;

 فریم ورک الکترون، تکنولوژی متن باز جدیدی برای ساخت نرم افزار های cross-platform و یا قابل اجرا در سیستم عامل های مختلفه. این فریم ورک با استفاده از زبان های HTML ، CSS و جاوا اسکریپت و همچنین بهره گیری از مرورگر کرومیوم میتونه نرم افزار دلخواه شما رو برای لینوکس، مک و یا ویندوز کامپایل و ترجمه کنه. تا حالا نرم افزار های زیادی توسط این فریم ورک تولید و عرضه شده است که از اونها میشه به ویرایشگر قدرتمند اتم اشاره کرد. همچنین شرکت های مطرحی مثل مایکروسافت هم برای نرم افزار های چند پلتفرمه خودشون مثل Microsoft Visual Studio Code در حال استفاده از این فریم ورک هستند. تو این مقاله میخوایم یه آشنایی مختصری با این فریم ورک داشته باشیم. توصیه میکنم برای ساخت نرم افزار دلخواه خودتون با این فریم ورک، از ویرایشگر اتم استفاده کنید. البته بدیهیه که اجباری توی این کار نیست.

 پیش نیاز ها


  • منابع

    الکترون و اتم پروژه های متن بازن و سورسشون توی گیت هاب هست. اگه مایل به همکاری با سازندگان این نرم افزار ها هستید میتونید یه سر به گیت هاب بزنید

    منابع

  • اتم

    ویرایشگر اتم، یه ویرایش گر پیشرفته با قابلیت نصب پکیج و پوسته کاربرپسنده. شایان ذکره که این ویرایشگر هم توسط الکترون ساخته شده.

    دانلود اسناد

  • الکترون

    برای دانلود الکترون میتونید از دستورات npm و یا لینک زیر استفاده کنید. اگه از npm دانلود میکنید نگاهی به شروع با الکترون بندازید

    دانلود اسناد

شروع


برای ساخت نرم افزار خودتون یه پوشه دلخواه بسازید که حاوی فایل های زیر باشه:

  • package.json
  • main.js
  • index.html

به طور پیشفرض میتونید از محتوا های زیر برای فایل ها استفاده کنید. فایل شناسایی پکیج ها به نرم افزار (package.json):

{
"name" : "your-app",
"version" : "0.1.0",
"main" : "main.js"
}

محتوای جاوا اسکریپت:

var {app} = require('electron')  // کنترل هسته نرم افزار
var BrowserWindow = require('browser-window');  // ساخت پنجره نرم افزار

// گزارش سقوط نرم افزار
require('crash-reporter').start();

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is GCed.
var mainWindow = null;

// دستورات مربوط به خروج نرم افزار پس از بسته شدن تمامی پنجره ها
app.on('window-all-closed', function() {
  // On OS X it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform != 'darwin') {
    app.quit();
  }
});

// این متد بعد از اینکه الکترون فراخوانی شود اجرا میشود
// initialization and is ready to create browser windows.
app.on('ready', function() {
  // ساخت پنجره نرم افزار
  mainWindow = new BrowserWindow({width: 800, height: 600});

  // لود کردن فایل اچ تی ام ال و طراحی رابط کاربری نرم افزار
  mainWindow.loadUrl('file://' + __dirname + '/index.html');

  // دستور زیر ابزار های توسعه را برای نرم افزار فعال میکند. رفع مشکل طراحی
// و دیباگ کردن اسکریپت ها را قبل از انتشار نرم افزار به این بخش بسپارید // mainWindow.openDevTools(); // Emitted when the window is closed. mainWindow.on('closed', function() { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; }); });

فایل اچ تی ام ال شما هم میتونه چیزی شبیه این باشه:

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using io.js <script>document.write(process.version)</script>
and Electron <script>document.write(process.versions['electron'])</script>.
</body>
<
/html>

بعد از ساخت فایل ها هم پوشه پروژتون رو داخل فریم ورک الکترون بکشید تا اجرا بشه.

برای اطلاعات بیشتر و شخصی سازی نرم افزار به بخش اسناد الکترون مراجعه کنید. به طور مثال اگه میخواید پنجره نرم افزار توسط کاربر تغییر اندازه داده نشه کافیه تکه کد resize: false رو به بخش تنظیمات پنجره توی فایل main.js وارد کنید.

این نرم افزار قدیمیست و به روز رسانی آن متوقف شده است. در صورت انتشار نسخه نوین تری از این نرم افزار از طریق کانال تلگرام اطلاع رسانی خواهد شد.
نرم افزار کد ساز وبلاگ نرم افزاری برای تولید ابزار های پیشرفته وبمستر و همچین تگ های اولیه ساده هر قالب مثل لینک و تصویر و ... است. استفاده از این نرم افزار نیاز به  آشنایی با علومی چون HTML و CSS و ... ندارد و کد ها به طور خودکار مطابق میل شما تولید میشود. این نرم افزار برای تمامی سیستم های وبلاگدهی و سایت ها قابل استفاده است.
این نرم افزار برای افرادی که آشنایی با زبان های طراحی وب ندارند و یا طراحان وبی که میخواهند ساخت ابزار ها را سریع تر انجام دهند مناسب است.

چه چیزی در این نسخه تغییر کرده است؟

  • تغییر نسخه دوازدهم: رفع باگ عمومی بارگذاری ابزار ها
  • مسطح شدن نرم افزار (Flat)
  • قابلیت دریافت دو نوع متغیر در ساخت افزونه (جعبه متنی و جعبه لیستی)
  • ارتقا نرم افزار ساخت افزونه
  • کاهش حجم نرم افزار و افزایش سرعت
  • قابلیت نمایش ندادن سورس وبلاگ شما (با درج یک تکه کد خاص به ساختار قالب)
  • افزودن بخش «کپی در» به توضیحات افزونه (برای راهنمایی این که کد در کدام قسمت قالب کپی شود)
توجه: برای اجرای این نرم افزار ابتدا باید دات نت فرم ورک 4 روی سیستم شما نصب باشد. این نرم افزار به صورت پیشفرض روی اکثر سیستم های خانگی نصب است ؛ اما در صورتی که هنگام اجرا با خطا مواجه میشوید میتوانید از این لینک این فرم ورک را دانلود کنید: دانلود دات نت فرم ورک چهار
برنامه نویس هستید و میخواهید ما را در بهتر شدن نرم افزار یاری کنید؟ به صفحه توسعه دهندگان سر بزنید

دانلود نسخه دوازدهم نرم افزار کد ساز وبلاگ


دانلود افزونه های نرم افزار کد ساز


آموزش ساخت افزونه برای نرم افزار



تصاویر محیط برنامه


نرم افزار کد ساز وبلاگ

 دوستانی که مایل به توسعه و یا شخصی سازی بیشتر نرم افزار ویرایش گر متن فارسی هستند هم اکنون میتوانند پروژه این نرم افزار را از آرین نرم افزار دریافت کنند.

Project Informations
Name: Persian Notepad  - Text Editor Version 2
Type: Project
CPU Target: both
Language: VisualBasic.NET using .NET Framework 4
Developer: Aryan Ebr
Licence: Open Source, Aryan Software Productions
Project Type: Visual Studio sln File

دانلود پروژه نرم افزار ویرایشگر متن نسخه دوم 

دانلود نرم افزار ویرایشگر متن نسخه دوم