نکته : آشنایی با کد نویسی و مفاهیم #F برای درک بهتر مطالب توصیه میشود.
معرفی پروژه FSharpX
این قسمتها عبارتند از :
FSharpx.Core : شامل مجموعه ای کامل از توابع عمومی، پرکاربرد و ساختاری است که برای این زبان توسعه داده شده اند و با تمام زبانهای دات نت سازگاری دارند؛
FSharpx.Http : استفاده از #F در برنامه نویسی مدل Http؛
FSharpx.TypeProvider : این پروژه خود شامل چندین بخش است که در این جا چند مورد از آنها را عنوان میکنم:
- FSharpx.TypeProviders.AppSetting : متد خواندن و نوشتن (setter و getter) را برای فایلهای تنظیمان پروژه (Application Setting File) فراهم میکند.
- FSharpx.TypeProviders.Vector : برای محاسبات با ساختارهای برداری استفاده میشود.
- FSharpx.TypeProviders.Machine : برای دسترسی و اعمال تغییرات در رجیستری و فایلهای سیستمی استفاده میشود.
- FSharpx.TypeProviders.Xaml : با استفاده از این افزونه میتوانیم از فایلهای Xaml، در پروژههای #F استفاده کنیم و WPF Designer نرم افزار VS.Net هم برای این زبان قابل استفاده خواهد شد.
- FSharpx.TypeProviders.Regex : امکان استفاده از عبارات با قاعده را در این پروژه فراهم میکند.
یک مثال از عبارات با قاعده:
type PhoneRegex = Regex< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)"> PhoneRegex.IsMatch "425-123-2345" |> should equal true PhoneRegex().Match("425-123-2345").CompleteMatch.Value |> should equal "425-123-2345" PhoneRegex().Match("425-123-2345").PhoneNumber.Value |> should equal "123-2345"
ایتدا یک پروژه از نوع F# Console Application ایجاد کنید. از قسمت Project Properties (بر روی پروژه کلیک راست کنید و گزینه Properties را انتخاب کنید) نوع پروژه را به Windows Application تغییر دهید(قسمت Out Put Type). اسمبلیهای زیر را به پروژه ارجاع دهید:
- PresentationCore
- PresentationFramework
- WindowBase
- System.Xaml
با استفاده از پنجره Package Manager Console دستور نصب زیر را اجرا کنید(آخرین نسخه این پکیج 1.8.31 و حجم آن کمتر از یک مگابایت است):
PM> Install-Package FSharpx.TypeProviders.Xaml
حال یک فایل Xaml به پروژه اضافه کنید و کدهای زیر را در آن کپی کنید:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF F# Sample By Masoud Pakdel" Height="350" Width="525"> <Grid Name="MainGrid"> <StackPanel Name="StackPanel1" Margin="50"> <Button Name="Button1">Who are you?</Button> </StackPanel> </Grid> </Window>
open System open System.Windows open System.Windows.Controls open FSharpx type MainWindow = XAML<"MainWindow.xaml"> let loadWindow() = let window = MainWindow() window.Button1.Click.Add(fun _ -> MessageBox.Show("Masoud Pakdel") |> ignore) window.Root [<STAThread>] (new Application()).Run(loadWindow()) |> ignore
در تابع loadWindow یک نمونه از کلاس MainWindow ساخته میشود و برای button1 آن رویداد کلیک تعریف میکنیم. دستورات زیر معادل دستورات شروع برنامه در فایل program پروژههای #C است.
[<STAThread>] (new Application()).Run(loadWindow()) |> ignore
پروژه را اجرا کنید و بر روی تنهای Button موجود در صفحه، کلیک کنید و پیغام مورد نظر را مشاهده خواهید کرد. به صورت زیر:
var department = (from d in context.Departments where d.Name == DepartmentNames.English select d).FirstOrDefault();
فرق بین TFS ،SVN و GIT در چیست؟
و چند نکته:
- SVN یک سرور است که البته برای اجرا نیازی به ویندوز سرور ندارد. روی ویندوز XP هم نصب میشود.
- TortoiseSVN کلاینت SVN است. با استفاده از آن نیازی نیست تا فرامین کار کردن با SVN را حفظ کنید. با Windows explorer یکی میشود و بعد از آن در کلیک راست آن حضور خواهد داشت.
- Visual SVN Server یک نصاب ساده کننده نصب SVN در ویندوز است. خصوصا اینکه اعتبار سنجی یکپارچه با ویندوز را هم به صورت خودکار ارائه میدهد.
- Visual SVN یک افزونه است برای VS.NET جهت یکپارچه کردن آن با امکانات TortoiseSVNدرون ویژوال استودیو. یک نسخه رایگان هم به نام AnkhSVN بجای آن وجود دارد.
ایجاد یک Fork جدید در GitHub
برای ارسال تغییرات انجام شده بر روی یک پروژه، نیاز است به صاحب یا مسئول آن مخزن در GitHub مراجعه و سپس درخواست دسترسی اعمال تغییرات را نمود. در این حالت، احتمال اینکه جواب منفی دریافت کنید، بسیار زیاد است. جهت مدیریت یک چنین مواردی، قابلیتی به نام ایجاد یک Fork پیش بینی شدهاست.
در بالای هر مخزن کد در GitHub، یک دکمه به نام Fork موجود است. بر روی آن که کلیک کنید، یک کپی از آن پروژه را به مجموعهی مخزنهای کد شما در GitHub اضافه میکند. بدیهی است در این حالت، مجوز ارسال تغییرات خود را به GitHub و در اکانت خود خواهید داشت. نحوهی اطلاع رسانی این تغییرات به صاحب اصلی این مخزن کد، ارسال همان PR یا Pull Request است.
دریافت مخزن کد Fork شده از GitHub به کمک Visual Studio
پس از اینکه Fork جدیدی را از پروژهای موجود ایجاد کردیم، نیاز است یک Clone یا کپی مطابق اصل آنرا جهت اعمال تغییرات محلی، تهیه کنیم. برای اینکار VS.NET را گشوده و به برگهی Team Explorer آن که در کنار Solution Explorer قرار دارد، مراجعه کنید.
در اینجا بر روی دکمهی Connect در نوار ابزار آن، کلیک کرده و در صفحهی باز شده، بر روی لینک Clone کلیک نمائید. در اینجا میتوان آدرس مخزن کد Fork شده را جهت تهیه یک Clone مشخص کرد؛ به همراه محلی که قرار است این Clone در آن ذخیره شود.
آدرس HTTPS وارد شده، در کنار تمام مخازن کد GitHub قابل مشاهده هستند:
پس از تکمیل این دو آدرس، بر روی دکمهی Clone کلیک نمائید. پس از پایان کار، اگر به آدرس محلی داده شده بر روی کامپیوتر خود مراجعه کنید، یک کپی از فایلهای این مخزن، قابل مشاهده هستند.
اعمال تغییرات محلی و ارسال آن به سرور GitHub
در ادامه، این پروژهی جدید را در VS.NET باز کرده و تغییرات خود را اعمال کنید. اکنون نوبت به ارسال این تغییرات به سرور GitHub است. برای این منظور به برگهی Team Explorer مراجعه کرده و بر روی دکمهی Home آن کلیک کنید. سپس گزینهی Changes را انتخاب نمائید:
در اینجا توضیحاتی را نوشته و سپس بر روی دکمهی Commit کلیک کنید.
پس از هماهنگ سازی محلی، اکنون نوبت به هماهنگ سازی این تغییرات با مخزن کد GitHub است. بنابراین بر روی لینک Sync در پیام ظاهر شده کلیک کنید و در صفحهی بعدی نیز بر روی دکمهی Sync کلیک نمائید:
اکنون اگر به پروژهی GitHub خود مراجعه کنید، این تغییر جدید قابل مشاهدهاست:
مطلع سازی صاحب اصلی مخزن کد از تغییرات انجام شده
تا اینجا کسی از تغییرات جدید انجام شدهی توسط ما باخبر نیست. برای اطلاع رسانی در مورد این تغییرات، به مخزن کد Fork شده که اکنون تغییرات جدید به آن ارسال شدهاند، مراجعه کنید. سپس در کنار صفحه بر روی لینک Pull request کلیک نمائید:
در اینجا بر روی دکمهی New pull request کلیک کنید:
در ادامه تغییرات ارسال شما نمایش داده خواهند شد. آنها را بررسی کرده و مجددا بر روی دکمهی Create pull request کلیک کنید:
در اینجا عنوان و توضیحاتی را وارد کرده و سپس بر روی دکمهی Create pull request کلیک نمائید:
یکی سازی تغییرات با مخزن اصلی
اکنون صاحب اصلی مخزن کد یک ایمیل را دریافت خواهد کرد؛ همچنین اگر به مخزن کد خود مراجعه نماید، آمار Pull requests دریافتی قابل مشاهده است:
پس از انتخاب یکی از آنها، لینکی برای بررسی تغییرات انجام شده و همچنین دکمهای برای یکی سازی آنها با پروژهی اصلی وجود دارد:
دریافت این تغییرات در مخزن کد محلی توسط صاحب اصلی پروژه
اکنون که این تغییرات با پروژهی اصلی Merge و یکی شدهاند، صاحب اصلی پروژه جهت تهیهی یک کپی محلی و بهبود یا تغییر آنها میتواند به صورت ذیل عمل کند:
ابتدا به برگهی Team explorer مراجعه کرده و بر روی دکمهی Home آن کلیک کنید. سپس گزینهی Unsynced commits را انتخاب نمائید. در صفحهی باز شده بر روی دکمهی Sync کلیک نمائید. به این ترتیب آخرین تغییرات را از مخزن کد GitHub به صورت خودکار دریافت خواهید کرد:
با انتخاب ok باز نیز با قالب جدیدی به شکل زیر برای انتخاب پروژه مواجه میشوید.
اینجا همه چیز تکراری است به غیر از گزینه Configure Authentication.
همهی گزینهها تکراری اند به غیر از گزینه Individual User Accounts. البته این همان FormsAuthentication قبلی است. نکته قابل توجه، یکپارچی آن با سرویسهای اجتماعی و شبکههای سرویس دهنده است. البته در نسخهی قبلی نیز این سیستم وجود داشت، ولی این دفعه با ASP.NET Identity یک پارچه است که در ادامه بیشتر آن را خواهید دید.
البته گویا حالت دیگری به نام Organizational Accounts نیز وجود دارد که گویا برای فعال سازی،باید یک بستهی به روز رسانی دریافت میکردم، که من نکردم.(اینترنت حجمی و شبانه دانلود کردن...)
این حالت که در شکل زیر مشخص است، امکان یکپارچگی احراز هویت با Active Directory در windows server و azure را دارد.
با توجه به پوشهی مدل این را متوجه میشویم که مایکروسافت هم به لزوم ViewModel اعتقاد پیدا کرده است.
با اجرا کردن پروژه bootstrap و responsive بودن آن، خودنمایی میکنند.