최신 EF의 경우 이전(EF 4.0)에 비해 600% 정도 빨라진 것이 인상적임.

예전에는 생 ADO.NET에 비해 EF가 엄청나게 느렸는데 격차가 많이 줄어 들었음.




저작자 표시
신고
by 흥배 2015.04.07 08:00
C#

const int MaxValue = 100;

const Vector2 Pos = new Vector2(100, 100); // error

static readonly Vector2 Pos = new Vector2(100, 100);

저작자 표시
신고
by 흥배 2015.03.30 08:00
C#

static class 읽기전용컬렉션

{

           static List<int> IntList = new List<int>();

 

           public static void Test()

           {

                     IntList.Add(11);

                     IntList.Add(12);

 

                     var list = GetList();

                     foreach(var value in list)

                     {

                                Console.WriteLine(value);

                     }

           }

 

           static System.Collections.ObjectModel.ReadOnlyCollection<int> GetList()

           {

                     return IntList.AsReadOnly();

           }

}

 

 

 

저작자 표시
신고
by 흥배 2015.03.26 08:00




저작자 표시
신고
by 흥배 2015.03.09 08:00
C#

static class Null_조사와_대입을_한번에

{

           public static void Check1()

           {

                     int x1 = 10;

 

                     int x2 = x1 > 10 ? 0 : x1;

                     Console.WriteLine("x2 {0}", x2);

 

                     x1 = 11;

                     int x3 = x1 >= 10 ? 0 : x1;

                     Console.WriteLine("x3 {0}", x3);

           }

 

           public static void Check2()

           {

                     TEST test1 = null;

 

                     var test2 = test1 ?? new TEST() { x = 10 };

                     Console.WriteLine("test2.x: {0}", test2.x);

           }

          

           class TEST

           {

                     public int x;

           }

}

 

저작자 표시
신고
by 흥배 2015.03.05 08:00
C#

int, double과 같은 값 타입은 null을 대입할 수 없지만 변수 선언 시 ? 같이 사용하면 null 대입이 가능하다.

(이 기능을 사용하면 박싱/언박싱이 발생하므로 주의해야 한다)

 

static class 값타입Null

{

           public static void Check()

           {

                     int? y = null;

 

                     if (y == null)

                     {

                                Console.WriteLine("y null");

                                y = 11;

                                Console.WriteLine("y {0}", y);

                     }

 

                     int? yy = GetIntValue();

                     if (yy == null)

                     {

                                Console.WriteLine("yy null");

                     }

           }

 

           static int? GetIntValue()

           {

                     return null;

           }

}

 

 

저작자 표시
신고
by 흥배 2015.03.02 08:00

Jil, 

Jil+Gzip, 

Jil+LZ4, 

JSON.NET, 

Protocol Buffer, 

MsgPack-CLI







출처: https://twitter.com/neuecc/status/565501570687987713/photo/1

저작자 표시
신고
by 흥배 2015.02.16 08:00

Mono for Unreal Engine

공식 사이트: http://mono-ue.github.io/

 

Mono for Unreal Engine Unreal Engine 4(UE4)에서 로직을 C#으로 기술할 수 있도록 하는 플러그 인.

 

UE4는 최신 기술을 사용한 고품질 그래픽을 표현하는 것이 가능한 게임 엔진.

이용하는 데 필요한 것은 19$/month이고 학생이라면 GitHub Student Developer Pack으로 무료.

 

UE4에서 로직을 기술하는 방법으로는 블루 프린트라고 하는 독자적인 시스템과 C++이 있지만, 이 플러그 인에 의해 C#으로도 로직을 기술할 수 있게 되었다.

 

Mono for Unreal Engine 자체는 UE4의 서브 스크립션을 가지고 있으면 무료지만 어째서인지 전화 번호와 주소 입력을 요구하고 있다.

개인 정보를 입력하는 이유는 궁금하지만 UE4에서도 C#를 쓸 수 있다는 것은 좋다.

 

 

 

Paradox Engine

공식 사이트: http://paradox3d.net/

 

Paradox Engine OROCHI Yebis 등 미들웨어로 유명한 실리콘 스튜디오의 게임 엔진.

완전히 무료.

공식 사이트에 접속하면 커다랗게 Create cross-platform games in C# 이라고 적혀 있다.

Paradox EngineUnity와 비슷하게 게임 화면을 보면서 요소의 배치 등을 할 수 있는 것은 아니다.

어디까지나 개발은 코딩이 주를 이룬다(일단 로드맵에는 A full scene editor이 있다).

Paradox Engine을 실행하면 Paradox Studio라는 툴이 켜진다.

Paradox Studio는 에셋(화상이나 음성 등)을 관리하는 기능이 주를 이루고 있다.

프로젝트를 작성하면 Visual Studio와 같은 형식의 sln파일이 생기므로 코드를 Visual Studio에서 관리, 에셋을 Paradox Studio에서 관리 라는 형태로 개발이 가능.

 

, 특징으로는

async/await대응

  일부의 비동기 처리의 메소드는 await을 붙여서 호출 할 수 있게 되어 있다.

저 레벨 API 접근

  DirectX OpenGL의 저 레벨 API에 접근할 수 있다.

확장 HLSL

HLSL을 확장한 언어로 쉐이더를 편리하게 다루기 쉽다.

 

참고로 올해 오픈 소스 버전이 출시 되었고, 바이너리판과 오픈 소스 버전으로 서로 라이센스가 다르다.

바이너리판에서 만든 게임은 로열티 무료로 특별히 조건이 없다.

오픈 소스 버전은 GPLv3이므로 소스로부터 빌드한 Paradox Engine에서 만든 게임은 GPLv3으로 소스를 공개할 필요가 있다.

 

 

 

출처: http://qiita.com/jag5X/items/68606bfbb768019a8354

 

 

저작자 표시
신고
by 흥배 2015.01.20 08:00
.net, C#


 







저작자 표시
신고
by 흥배 2015.01.12 08:00

닷넷 프레임워크 4.0에 도입된 Dynamic 기능을 활용해서 가볍고 동적으로 데이터(DB)를 접근할 수 있는 컴포넌트

 

보통 데이터베이스의 데이터를 코드를 쉽게 접근하는 방법으로 ORM 모델을 사용하거나 mini-ORM을 사용하기도 하는데 Simple.Data를 사용하면 코드를 통해서 자동으로 DB 쿼리문이 만들어진다.

오픈소스로 GitHub를 통해서 얻을 수 있다.

https://github.com/markrendle/Simple.Data



public User FindUserByEmail(string email)

{

    return Database.Open().Users.FindAllByEmail(email).FirstOrDefault();

}

이 코드는 User 테이블의 Email 필드를 키로 모든 데이터를 가져오는 것이다.

Users.FindAllByEmail 동적코드로 



위의 Database.Open().Users.FindAllByEmail(email).FirstOrDefault();

ADO.NET 코드로 표현하면 아래와 같다.


public User FindUserByEmail(string email)

{

    User user = null;

    using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))

    using (var command = new SqlCommand("select id, email, hashed_password,

                                                                     salt from users where email = @email", connection))

    {

        command.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = form.Email);

        connection.Open();

        using (var reader = command.ExecuteReader())

        {

            if (reader.Read())

            {

                user = new User { Id = reader.GetInt32(0), Email = reader.GetString(1),

                                          Password = reader.GetString(2), salt = reader.GetString(3)};

            }

        }

    }

    return user;

}


Simple.Data를 사용하면 위의 코드가 아래의 단 한줄로 끝난다 !!! 

Database.Open().Users.FindAllByEmail(email).FirstOrDefault();



지원하는 데이터베이스

ADO-based access to relational databases, with providers for:

  SQL Server 2005 and later (including SQL Azure)

  SQL Server Compact Edition 4.0

  Oracle

  MySQL 4.0 and later

  SQLite

  PostgreSQL

  SQLAnywhere

  Informix

MongoDB

OData



SimpleData에 대해서 더 자세히 알고 싶다면 아래의 문서를 참고한다.
http://simplefx.org/simpledata/docs/




MongoDB

MongoDBSimple.Data.MongoDB 라고 따로 분리 되어 있다. 

https://github.com/craiggwilson/Simple.Data.MongoDB


주의 사항

1. 몽고디비 컬렉션의 컬럼 이름이 ID 이면 안된다.

이유는 기본으로 몽고디비는 컬렉션에 문서를 만들 때 _id 컬럼을 만드는데 우리가 ID 컬럼을 만들면 Simple.Data.MongoDB에서 이름을 부여할 때 중복된다. -_-

2. 쿼리를 하면 모든 컬럼 값을 다 가져온다. 일부만 가져올 수 없다.

Cast도 그냥 정적 클래스(혹은 구조체)에 담아주는 것이지 일부 컬럼만 가져오는 것이 아님

저작자 표시
신고
by 흥배 2014.08.22 08:00
| 1 2 3 4 5 6 |