:: Kunagorn Sirikup :: C# Developer

30/6/57

การสร้าง Version Control ด้วย Visual Studio Online

วันนี้จะมาแนะนำเกี่ยวกับเรื่องของ Team Foundation Server ซึ่งหลายๆคน คงรู้จักและเคยใช้งานกันมาบ้างนะครับ ในหลายๆบริษัทใหญ่ๆก็ใช้ Team Foundation Server ในการทำงานเพื่อเก็บ Source Code รวมถึงทำ Version Control สำหรับการทำงานเป็นทีม ซึ่งใช้งานง่ายและสะดวกมากครับ แต่ก็มีค่า License ที่แพงอยู่เหมือนกัน แต่ใครที่อยากลองใช้งาน Team Foundation Server เพื่อทำงานของเราเอง หรืออาจจะทำงานกับเพื่อนเป็นกลุ่มเล็กก็สามารถใช้งาน Team Foundation Server ได้เหมือนกันนะครับ โดยมีขั้นตอนดังนี้

เริ่มแรกเข้ามาที่เว็บไซต์ http://www.visualstudio.com แล้ว Login โดยใช้ Windows Live Account ถ้าใครไม่มีก็ต้องไปสร้างก่อนนะครับ
























เมื่อ Login แล้ว เริ่มแรกให้เราสร้าง Account สำหรับ Visual Studio Online ก่อน โดยคลิ๊กที่ Create a free account now ดังรูป



















จากนั้นกำหนดชื่อ Account ของ Visual Studio Online

















เพียงเท่านี้เราก็สร้าง Visual Studio Online Account เรียบร้อยแล้วครับ หลังจากนั้นสามารถสร้าง Project ที่เราต้องการใช้งาน Source Control โดยสามารถเลือกรูปแบบการใช้งานได้ ดังนี้





















Version Control ได้ 2 แบบ คือ
- Team Foundation Version Control
- Git

Process Template ได้ 3 แบบ คือ
- Microsoft Visual Stuudio Scrum 2013.3
- MSF for Agile Software Development 2013.3
- MSF for CMMI Process Improvement 2013.3

หลังจากสร้าง Project เรียบร้อยแล้วจะแสดงหน้าจอ เราจะมาลองเริ่มใช้งาน Team Foundation Server โดยในตัวอย่างนี้ผมจะใช้ Visual Studio เพือ Connect กับ Team Foundation Server นะครับ เราสามารถ Run Visual Studio ได้เลย โดยกด Open with Visual Studio connect ดังรูป






















เมื่อ Run Visual Studio แล้วจะมี Dialog Box ให้เรา Login ด้วย Window Live Account ก่อน ดังรูป




























ตอนนี้เราก็จะสามารถใช้งาน Team Foundation Server  ได้แล้ว สังเกตว่าในส่วนของ Team Explorer ด้านขวามือจะมีโปรเจค SDS ที่ผมสร้างไว้เมื่อตอนต้นขึ้นมา



















เพียงเท่านี้เราก็สามารถทำ Version Control ได้แล้วนะครับ
























ต่อมาเราลองมาดูกันว่า Visual Studio Online สามารถทำอะไรได้บ้าง เมื่อผมเข้ามาในหน้าแรกจะแสดงหน้าจอรายละเอียดต่างๆของ Visual Studio Online ของเรา ไม่ว่าจะเป็น Project ดังรูป


























ที่นี้ตำถามต่อมา คือ แล้วถ้าเราทำงานเป็นทีมจะให้เพื่อนๆในทีมเข้ามาใช้งานได้อย่างไร สังเกตที่แทบข้างบนก็จะมีในเมนู Users ให้เราสามารถเพิ่ม Users ในทีมที่ต้องการเข้ามาใข้งานได้ ดังรูป















Visual Studio Online ก็เป็นอีกเครื่องมือนึงที่น่าสนใจที่ช่วยในการพัฒนาระบบนะครับ ถ้าสนใจก็สามารถใช้งานได้ที่ http://www.visualstudio.com กันนะครับ


3/6/57

รีวิว Swift ภาษาใหม่จาก Apple

9439-1111-Screen-Shot-2014-06-02-at-24709-PM-l


Swift เป็นภาษาที่ Apple ได้พัฒนาขึ้นมาใหม่เพื่อรองรับการพัฒนาแอพบน iOS และ OS X ซึ่ง Swift ก็มีรูปแบบไม่แตกต่างจากการการเขียนด้วยภาษา C และ Objective-C แต่สิ่งที่เป็นข้อแตกต่างก็คือ Apple บอกว่า Swift เป็นภาษาทีเข้าใจง่าย รวมถึงมี Syntax ที่ไม่ซับซ้อน

Apple ให้คำจำกัดความ Swift ว่าเป็นภาษาที่มีความปลอดภัย รวมถึงมีการรวมฟังก์ชั่นใหม่ๆที่ทำให้การเขียน Code ง่ายขึ้น มีความยิดหยุ่นสูง และสนุกมากขึ้น (จริงๆอันหลังไม่น่าจะจริงนะครับ 55+) โดยใช้ Compiler, Debugger และ Framework เดิม รวมถึงมีการจัดการหน่วยหน่วยความจำให้ทำงานง่ายและมีประสิทธิภาพดีขึ้นโดยใช้ Automatic Reference Counting (ARC)

ที่นี้เรามาลองดูส่วนที่ข้อดีของ Swift กันนะครับว่ามีอะไรบ้าง
1. ไม่ต้องการมีการ Import Library เข้ามาเพื่อเรียกใช้งานฟังก์ชั่นต่างๆ ดังนั้น Swift จึงสามารถเขียนใช้ Code เพียงแค่บรรทัดเดียวก็ทำงานได้ เช่น การเขียน "Hello World"

  • println("Hello, world")

2. การ Code ที่เขียนที่จุดเริ่มการทำงานจะถูกมองเป็น Global Scope ดังนั้นจึงไม่จำเป็นต้องเขียน Code อยู่ใน Main Function

3.ไม่ต้องใส่ ; (semi colon) เพื่อบอกว่าจบการเขียน Code แต่ละบรรทัด

4. การประกาศค่าคงที่ (Constant) ใช้คำว่า let และใช้คำว่า var ประกาศตัวแปร การประกาศค่าคงที่ ไม่จำเป็นต้องกำหนดค่า ในขณะที่ Compile แต่ต้องมีการกำหนดค่า นั้นหมายความว่าเราสามารถกำหนด Constant แค่ครั้งเดียวแต่สามารถใช้ได้หลายที่

  • var myVariable = 42
  • myVariable = 50
  • let myConstant = 42


ค่าคงที่หรือตัวแปรจะมีประเภทข้อมูลเหมือนกับค่าที่กำหนดลงไป เพราะ Complier จะดูจากค่าที่กำหนดลงไปเพื่อสร้างประเภทข้อมูลเอง แต่ในกรณีที่เราต้องการที่จะกำหนดประเภทตัวแปรเองก็สามารถทำได้โดยใส่ : (Collon)

ตัวอย่าง Implicit Type

  • let implicitInteger = 70
  • let implicitDouble = 70.0

ตัวอย่าง Explicit Type

  • let explicitDouble: Double = 70


5. การรวมค่าใน String จะถูกเขียนค่าในวงเล็บและเขียนทับขวา (\) ก่อนวงเล็บ ตัวอย่างเช่น 

  • let firstname = "Kunagorn"
  • let lastname = "Sirikupt"
  • let appleSummary = "My first name is \(firstname ) ."
  • let fruitSummary = "My full name is \(firstname + lastname ) ."

6. การสร้าง Array และ Dictionaries จะใช้เครื่องหมาย brackets ([]) โดยสามารถเข้าถึง elements ต่างๆได้โดยการระบุ Index หรือ Key 

  • var shoppingList = ["catfish", "water", "tulips", "blue paint"]
  • shoppingList[1] = "bottle of water"
  • var occupations = [
  • "Malcolm": "Captain",
  • "Kaylee": "Mechanic",
  • ]
  • occupations["Jayne"] = "Public Relations"

ตัวอย่าง การประกาศ  Array และ Dictionaries ว่าง ดังนี้

  • let emptyArray = String[]()
  • let emptyDictionary = Dictionary<String, Float>()

7. Control Flow - ใช้คำสั่ง if และ switch ในการควบคุมเงื่อนไขการทำงานต่างๆ ส่วนการวนลูปใช้ for-in, for, while, and do-while โดยไม่จำเป็นใส่วงเล็บเมื่อกำหนดเงื่อนไขต่างๆ แต่ต้องใส่วงเล็บปีกกาเพื่อกำหนดขอบเขตของการทำงาน

  • let individualScores = [75, 43, 103, 87, 12]
  • var teamScore = 0
  • for score in individualScores {
  • if score > 50 {
  • teamScore += 3
  • } else {
  • teamScore += 1
  • }
  • }
  • teamScore


8. Functions and Closures - สามารถสร้างฟังก์ชั่นเพื่อ return ค่าออกมาได้

  • func greet(name: String, day: String) -> String {
  • return "Hello \(name), today is \(day)."
  • }
  • greet("Bob", "Tuesday")

9. Objects and Classes - สามารถสร้าง Class เพื่อเรียกใช้งานได้ การประกาศ Properties สามารถทำได้เหมือนกับการประกาศค่าคงที่และตัวแปร

  • class Shape {
  • var numberOfSides = 0
  • func simpleDescription() -> String {
  • return "A shape with \(numberOfSides) sides."
  • }
  • }

เมื่อสร้าง Class เสร็จแล้ว เราสามารถสร้าง Instance ให้กับ Class ได้ และสามารถใช้งาน Properties หรือ Method นั้นได้โดยใช้ . (dot)

  • var shape = Shape()
  • shape.numberOfSides = 7
  • var shapeDescription = shape.simpleDescription()

10. Enumerations and Structures - สามารถใช้ enum เพื่อสร้าง enumeration เหมือนกับการสร้าง Class และสามารถสร้าง Method ที่เกี่ยวข้องได้

  • enum Rank: Int {
  • case Ace = 1
  • case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
  • case Jack, Queen, King
  • func simpleDescription() -> String {
  • switch self {
  • case .Ace:
  • return "ace"
  • case .Jack:
  • return "jack"
  • case .Queen:
  • return "queen"
  • case .King:
  • return "king"
  • default:
  • return String(self.toRaw())
  • }
  • }
  • }
  • let ace = Rank.Ace
  • let aceRawValue = ace.toRaw()


นี่ก็เป็นตัวอย่างเล็กๆน้อยสำหรับการเขียน Swift ซึ่งในความคิดผมคิดว่าคงมีประโยชน์มากทีเดียวกับผู้มือใหม่ที่ต้องการเขียน iOS เพราะ Code สามารถเข้าใจได้ง่าย ไม่ซับซ้อน รวมถึงมี Library ต่างไว้ให้งานมากมาย รวมถึงคนที่เขียน iOS อยู่แล้ว รวมถึงก็สามารถพัฒนาต่อได้ง่ายเพราะ Swift มีรูปแบบไม่แตกต่างจากการการเขียนด้วยภาษา C และ Objective-C 

credit : https://developer.apple.com 

6/1/57

Average File Size With LINQ

ตัวอย่างนี้เป็นการหาค่า Average ขนาดไฟล์ทั้งหมดที่อยู่ใน Directory โดยใช้ความสามารถของ LINQ ช่วยในการคำนวณ สามารถทำได้ ดังนี้
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get list file name from directory
            string[] dirfiles = System.IO.Directory.GetFiles("C:\\Learning");

            // Calculate average size
            var avg = dirfiles.Select(file => 
                new System.IO.FileInfo(file).Length).Average();

            // Calculate and Transform Format
            avg = Math.Round(avg / 1000000, 2);
            Console.WriteLine("The Average file size is {0} MB",avg);
            Console.ReadLine();
        }
    }
}

ที่นี้มาลองทดสอบการทำงานกันดูนะครับว่า Code นี้ทำงานยังไง
เริ่มแรกผมสร้าง Folder ชื่อ Learning อยู่ที่ C:\Learning ดังรูป
จากนั้นเมื่อ Run โปรแกรมคำสั่งแรกจะทำการดึงชื่อไฟล์ทั้งหมดที่อยู่ใน Directory ที่เรากำหนดไว้ออกมาในรูปแบบของ String[] ดังรูป
จากนั้นจะเอาไฟล์ทั้งหมดมาทำการคำนวณและหาค่าเฉลี่ย สุดท้ายจะได้ Output ค่า Average ออกมา ดังรูป