반응형

.NET Framework 란?

닷넷 프레임워크는 크게 두 가지로 나눌 수 있는데, 프로그램을 개발할 때 필요한 서비스 집합과 프로그램 실행 환경으로 구성되며, 닷넷 프레임워크에 기반한 개발언어에는 C#.NET, VB.ENT, C++.NET, J#.NET 등이 있습니다.

사용자 삽입 이미지

< 닷넷 프레임워크 구성도 >




.NET Framework 구성 요소


< 닷넷 프레임워크 구성 요소 >


닷넷 프레임워크는 크게 "공용 언어 런타임(Common Language Runtime, CLR)"과 "닷넷 프레임워크 클래스 라이브러리"로 나눌 수 있습니다.
CLR은 닷넷을 사용할 때 여러 언어를 사용할 수 있게 해주는 기술로서, 프로그래머를 대신해서 닷넷 형식(Type)들의 위치를 지정하고, 이 형식들을 로드하고 관리하는 역할을 합니다.

닷넷 프레임워크 클래스 라이브러리는 애플리케이션을 개발할 때 필요한 기능들의 묶음으로, 필요한 기능을 개발자가 일일이 만들지 않아도 이미 만들어진 클래스 라이브러리를 사용해서 구현할 수 있게 한 것입니다. 클래스 라이브러리는 기본 클래스 라이브러리(BCL, Basic Class Libray)와 윈도우 사용자 인터페이스, ASP.NET, ADO.NET으로 나눌 수 있습니다.

  • 기본 클래스 라이브러리(BCL) : 클래스 라이브러리 중 가장 핵심적인 기능을 하는 클래스 모음
  • 윈도우 사용자 인터페이스 : 닷넷 언어로 윈도우 프로그램을 만들 때 지원하는 클래스
  • ASP.NET :  닷넷 언어로 웹 프로그래밍을 할 때 지원하는 클래스
  • ADO.NET : 데이터베이스를 사용할 때 지원하는 클래스

 공용 언어 런타임(CLR)

<공용 언어 런타임(CLR) 구성 >


CLR을 성명하기 전에 먼저, 고유 코드에 대해서 이해할 필요가 있습니다.

고유 코드(Native Code)란 윈도우 같은 운영체제에서 직접 해석하 수 있는 코드로서 원시 코드라고도 부릅니다. 그렇지만 일반적인 프로그래밍 언어는 개발의 편의를 위해서 사람이 읽고 해석할 수 있도록 작성하기 대문에 이 자체로는 운영체제에서 해석할 수 없습니다. 따라서 컴파일(compile)이라는 과정을 통해서 운영체제에서 해석하 수 있도록 고유 코드로 변환해줘야 합니다.

따라서 CLR도 닷넷 언어로 만들어진 코드를 읽고 해석한 후, 운영체제에서 해석할 수 있게 컴파일 해주는 일종의 가상머신(Virtual Machine)아라고 이해하면 쉽습니다.

그렇지만 VB.NET, C#등과 같은 닷넷 언어는 윈도우 등 운엉체제의 고유 코드로 바로 컴파일 되지 않고, 마이크로소프트 중간 언어 (MSII, MicroSoft Intermediate Language)로 컴파일 됩니다. 따라서 운영체제에서 닷넷 애플리케이션을 바로 실행할 수 없는데, 닷넷 애플리케이션을 실행하려면 닷넷 프레임워크의 CLR에 있는 JIT(Just-In-Time) 컴파일러를 통해서 MSIL 코드를 고유 코드로 변환한 후 실행해야 합니다.

결국, CLR과 JIT 컴파일러를 통해 MSIL 코드를 고유코드(실행 가능한 코드)로 변환하는 역할을 합니다.

사용자 삽입 이미지

< 공용 언어 런타임(CLR)의 역할 >


그렇다면 왜 닷넷에서는 닷넷 코드를 바로 실행 가능한 코드로 컴파일하지 않고 MSIL을 만들까요? MSIL을 사용하는 이유는 닷넷 언어가 C# 뿐만 아니라 VB.NET, J#.NET, C++.NET 등 개발 언어가 다양하기 때문에 이를 통합적으로 해석한 후에 고유 코드를 만들기 위해서 입니다.

MSIL은 프로그램을 한번 만들어 놓으면 그것이 어느 플랫폼에서 만들어졌는지에 상과없이 자신의 플랫폼에서 사용할 수 있게 해줍니다. 그래서 닷넷이 다중 플랫폼을 지원할 수 있는 것입니다.

VB.NET, C#, C++.NET 등으로 만든 프로그램을 MSIL로 컴파일하면 exe, dll 파일 등으로 만들어져 보관했다가, 실행될 CPU와 운영체제가 결정되면 그에 맞는 JIT 컴파일러를 통해 실행 코드가 생성되어 사용되는 것입니다.


 기본 클래스 라이브러리(BCL)

BCL은 닷넷 언어를 이용해서 쉽게 개발할 수 있도록 기존 마이크로소프트의 다양한 개발 라이브러리를 닷넷에서 사용할 수 있게 통합해 놓은 기본적인 클래스 라이브러리의 모음입니다. 이러한 BCL은 네임스페이스를 사용해서 논리적으로 그룹화되어 있습니다.

BCL은 모든 닷넷 기반 애플리케이션과 컴포넌트에서 공통으로 자주 사용하는 System, System.Collections, System.Diagnostics 등과 같은 네임스페이스를 포함하고 있습니다. 또한 네트워크 연결, 프로토콜 구현, 파일과 스트림 입출력 클래스, 멀티스레딩, 텍스트 처리, 정규 표현식(Regular Expression) 그리고 리플렉션(Reflection) 등의 기능도 함께 포함하고 있습니다.


 ADO.NET : 데이터와 XML

ADO.NET은 닷넷 프레임워크의 일부로 System.Data 네임스페이스와 하위 네임스페이스에서 제공하는 데이터 접근 기술입니다. ADO.NET은 인터넷이나 인트라넷과 같은 비연결 기반 프로그래밍 모델을 제공하는데, 다음과 같이 구성됩니다.

  • System.Data 네임스페이스
    ADO.NET 객체 모델을 구성하는 클래스로 이뤄져 있습니다. ADO.NET 객체 모델은 크게 연결 기반 계층과 비연결 기반 계층으로 나눠져 있기 때문에 개발하고자 하는 형태의 애플리케이션 아키덱처에도 적합하게 사용할 수 있습니다.
  • System.Xml 네임스페이스
    W3C 호환 XML 작성기(XML Writer), 그리고 XSLT와 XPath 등 많은 XML 관련 기술을 위한 클래스로 이뤄져 있습니다.

 윈도우 사용자 인터페이스

윈도우 폼(Window Form)은 닷넷 프레임워크 기반의 윈도우 애플리케이션을 개발하기 위한 새로운 플랫폼입니다.

특히 윈폼은 풍부한 사용자 인터페이스를 포함하는 윈도우 애플리케이션을 개발하기 위해서, 명료하고 객체지향적이며 확장 가능한 클래스의 집합으로 구성되어 있습니다. 또한 분산 계층(Multi-Tier) 솔루션에서 로컬 사용자 인터페이스로 활용될 수도 있습니다.

윈폼 생성에 관련된 클래스는 System.Window.Form 네임스페이스에 포함되어 있으며, 윈폼 유형은 크게 표준 윈도우, MDI 윈도우, 대화상자로 나눌 수 있습니다.


 ASP.NET

ASP.NET은 강력한 웹 애플리케이션을 개발하기 위한 프로그래밍 프레임워크입니다. 그리고 ASP.NET 웹폼(Web Forms)은 쉬우면서도 강력한 방법으로 웹 사용자 인터페이스 페이지를 생성할 수 있게 하며, ASP.NET 웹서비스는 분산 웹 기반 애플리케이션 생성을 위한 빌딩 블록(Building Block)을 제공합니다.

  • System.Web 네임스페이스
    웹 서비스와 웹 사용자 인터페이스 모두에 공통으로 사용될 수 있는 캐싱, 보안, 애플리케이션 환경 설정 등과 같은 하위 단계 서비스를 위한 클래스를 제공합니다.
  • System.Web.Services 네임스페이스
    프로토콜 등과 같은 웹 서비스를 핸들링하기 위한 클래스를 제공합니다.
  • System.Web.UI 네임스페이스
    웹 페이지나 컨트롤과 같이 사용자 인터페이스의 컨트롤에 대한 클래스를 제공합니다.

ASP.NET에서의 컨트롤은 크게 System.Web.UI.HtmlControls 네임스페이스에서 제공하는 HTML 태그와 직접 매핑되는 HTML 컨트롤, System.Web.UI.WebControls 네임스페이스에서 제공하는 강력한 웹 컨트롤로 나눌 수 있습니다.

반응형
반응형

1. 개요

.NET Framework 3.5에 포함된 LINQ의 기능 중 XML 문서를 처리하는 방법에 대해 알아본다.
여기서 XML 문서는 Naver OpenAPI에 있는 이미지 검색 Response로 오는 RSS 2.0 Spec의 형식이다.

2. Naver OpenAPI를 사용하려면

Naver의 OpenAPI는 다른 사이트와 마찬가지로 apikey를 발급을 받아야 한다.
OpenAPI( http://openapi.naver.com/index.nhn ) 사이트로 가서 API 이용등록 수정 ( http://openapi.naver.com/register.nhn ) 메뉴를 참고하여 일반키를 발급 받도록 하자.
검색 결과 API는 총 16가지가 있다.
(지식 IN, 블로그, 카페/카페글, 전문자료, 웹문서, 책, 쇼핑, 백과사전, 국어사전, 일어사전, 영어사전, 뉴스, 지역, 동영상, 이미지, 내PC)
이 중 여기서는 이미지 검색을 하도록 한다. ( http://openapi.naver.com/page.nhn?PageId=1_15 )

요청변수는 아래 그림을 참고한다.

RequestParams

http://openapi.naver.com/search?key=test&query=go&target=image&start=1&display=10 를 이용하여 확인하며 RSS 2,0 스펙으로 응답이 오는 것을 알 수 있다. 이제 이 스펙을 참조하여 LINQ를 사용해보자.

http://openapi.naver.com/sample/image.xml 
 XML


3. LINQ 사용하기

LINQ를 사용하면 XML 문서를 간단히 객체화 할 수 있다.

string url = string.Format("http://openapi.naver.com/search?key={0}&query={1}&target=image&start=1&display=12", _apikey, query);

XDocument xdoc = XDocument.Load(url);

var result = from item in xdoc.Descendants("item")
             select new
             {
                 Title = item.Element("title").Value,
                 Link = item.Element("link").Value,
                 Thumbnail = item.Element("thumbnail").Value
             };


_flowLayoutPanel.Controls.Clear();


foreach (var searchResult in result)
{
    AsyncListItem item = new AsyncListItem();    // AsyncListItem은 단지 제가 만든 UserControl일 뿐입니다.
    item.Size = new Size(100, 100);
    item.Text = searchResult.Title;
    item.ImageURI = searchResult.Thumbnail;

    _flowLayoutPanel.Controls.Add(item);
}


XDocument class XML을 다루는 class로서 웹 uri를 참조할 수 있는 Load라는 static 메소드를 제공한다.
발급 받은 API KEY와 Query할 문자열로 uri를 구성하여 Load 함수를 호출한다.

C# 3.0 Spec에 Query Expression 이라는 것이 새롭게 추가되었다.
from, in, where, select, group, into, orderby, joint, let 등의 키워드를 사용할 수 있고 그것들을 마치 SQL문 형식처럼 사용할 수 있다.
그러나 기존의 SQL은 SELECT * from [TABLE] WHERE [Expr] 이런 식이였다면
C#의 Query Expression은 select가 제일 뒤에 붙는다는 점이 차이점이라고 할 수 있다.
그러나 잘 생각해 보면 보통 DB에서 쿼리를 할 때 SELECT 부분이 제일 나중에 수행되기 때문에 C#에서의 select의 위치가 어쩌면 당연하다고 볼 수 있다.
select 다음에 new 로 Anonymous Type의 객체를 생성하는 부분을 볼 수 있는데, 이또한 C# 3.0에 새롭게 제공되는 기능이다.
Query Expression의 결과로 나오는 var result는 IEnumerable<Anonymous Type>의 형식으로 떨어지게 되고,
이 Anonymous Type을 생성하면서 사용한 Title, Link, Thumbnail은 Property로 등록되게 된다.
그렇게 때문에 foreach를 사용하여 result 를 사용할 수 있는데 위의 코드를 보면 알겠지만 Anonymous Type의 Property로 접근하는 것을 확인 할 수 있다.


4. 샘플 프로젝트

sample
[ 샘플 프로그램 스크린 샷]

AsyncListItem이라는 UserControl을 만들었는데 단순히 PictureBox와 Label 컨트롤을 포함시킨 것 밖에는 없다.
ListView를 사용할 수도 있었지만, 사진을 받아오는 부분을 비동기로 구현하기가 좀 까다로운 부분이 있어서
PictureBox의 LoadAsyn를 사용하여 비동기로 이미지를 받게 쉽게 구현하였다.
( 이 샘플의 목적은 LINQ와 OpenAPI를 설명하기 위함이다. )

주의 : api는 꼭 본인이 발급받아서 사용하기 바란다.


Release binary 를 실행하려면 꼭  .NET Framework 3.5 가 깔려있어야 한다.
반응형
반응형

1. WEB2.0 의 본질
ㆍ초기 WEB의 기술적 장벽 극복
ㆍ사용자 참여로 만드는 새로운 가치
ㆍ가치 창출을 위해 필요한 것들
   - Contents
   - Open API & Tools
   - UI Library


2. Mashup 트랜드
ㆍProgrammable Web
ㆍ지도 + 사진 이 절반, 쇼핑, 검색, 여행, 동영상, 뉴스, 부동산


3. 유용한 컨텐츠
ㆍ고품질 이미지 : flickr
   - 전세계 20억장의 이미지
   - 미국 의회 도서관 사진
ㆍ고해상도 위성지도
   - Yahoo, Google, MS
ㆍ검색 전자상거래
   - Naver, Daum, Auction
ㆍ공공정보
   - public.resource.org


4. Yahoo! Pipes
ㆍPipes
   - Rewire the web
   - 2007.2 월 등장
   - 모듈을 통한 시각적 매쉬업 지원


5. 매력적 인터페이스
ㆍYUI : 10명의 개발자
   - http://developer.yahoo.com/yui/
ㆍGoogle Chart aPI : URL 파라메터
   - http://code.google.com/apis/chart/
ㆍ위자드웍스 UI
   - http://www.wzdapi.com/styleguide


6. Open Trend 2008
ㆍ사진, 지도 매쉬업의 여전한 인기
ㆍ쉬운 Mashup 플랫폼, 도구 필요
   - MS Silverlight, MS POPFLY, Yahoo! Pipes
ㆍ다양한 컨텐츠 활용
   - 이미지, 동영상, 온라인 스토리지
ㆍ상용 Open API 등장
   - 통계, 보안, 모니터링 제공
ㆍUI 라이브러리 다양화

반응형
반응형

출처 : HOONS 닷넷

1.Refactoring 이란?

VS.NET 2005의 생산성을 높여주기 위해서 지원하게 된 기능입니다. 이름에서 느낄수 있듯이 바로 코드 자동화 기능이 추가 된 것이죠. 소스 코드에 있는 변수의 이름을 일관적으로 바꾸는 작업이나 프로세스를 자동화하는 등의 여러 자동화 작업등을 이용할 수 있습니다. 아래 그림을 살펴 봅시다.



닷넷2005 편집기에서 오른쪽 마우스를 눌러보면 Refactor라는 메뉴가 추가 되어있고, 오른쪽에 여러 기능들이 있습니다. 바로 추가된 코드 자동화 기능으로 정의 하셔도 크게 문제 없을것 같습니다. VS2005를 사용하면서 반드시 알아 두어야 할 기능 들로 생각이 듭니다.
이번 아티글에서는 Refactoring의 3가지 기능을 살펴보고 다음 아티글에서 나머지 기능을 알아보도록 하겠습니다.

2.Rename..
기능그 첫번째 기능으로 Rename 기능을 살펴 보도록 하겠습니다. 이 기능은 기존에 자주 사용해오던 [찾기]->[바꾸기]->[모두바꾸기]의 기능과 많은 연관이 있어 보입니다_-_ㅋ
Rename은 특정 변수의 변수명을 일괄적으로 변경해 줍니다.소스및 주석에서의 이름도 변경이 됩니다. 이것은 단순히 텍스트를 인식해서 바꾸는 것이 아닌 쓰여진 변수의 이름만 Rename 처리를 합니다.
아래 예제를 보면서 Rename 기능을 살펴 보도록 하겠습니다.
 
단축키Ctrl + R + R

DEMO

class Program
{
    public string strHoons = "Refatoring";

    static void Main(string[] args)
 
   {
        strHoons += " World!!";
        Console.WriteLine(strHoons);
    }
}

코드를 살펴보면 단순히 strHoons라는 변수를 사용하였고, strHoons를 출력 하였습니다.
그런데 왠지 Hoons라는 변수이름이 맞지 않는것 같습니다._-_; 우리는 여기서 strRefactor 라고 변경을 해보도록 합시다

이제 strHoons변수에서 오른쪽 마우스를 누릅니다. 그리고 Refactor를 선택해 봅시다.


Rename을 선택합니다.

 

NewName에 새로운 이름을 작성합니다. (strRefactor)


새로운 이름을 적게 되면 Preview 마법사가 실행되며, 적용 여부를 결정하게 됩니다.


3. Extract Method

기능Extract Method.. 조금 맘에 기능입니다.
이 Extract Method 기능은 자신이 원하는 코드를 Block으로 잡으면 그 부분을 메서드로 바꾸어 주는 것입니다.
이 Extract Method는 단순히 선택 Block을 Void형 메서드로 만들어 버리는 것이 아니라 코드 상황에 따라 특정 Return값을 뱉어 내는 메서드를 만들어 버립니다.

단축키Ctrl+R+M

DEMO



특정 블락을 드래그 하여 Extract Method를 실행합니다.


 
그리고 메소드명을 적습니다. 확인을 눌러 결과를 확인합니다.
 

 class Program
{
    public string strRefactor = "Refatoring";

    static void Main(string[] args)
    {
        WriteRefactor();
    }
 

    private static void WriteRefactor()
    {
        strRefactor += " World!!";
        Console.WriteLine(strRefactor);
    }
}

그럼 아래에 WriteRefactor() 메서드가 작성되어 지고,
기존 코드는 메서드쪽으로 옮겨 가게 되는것을 볼수 있을 것입니다.
이번에는 다른 예를 살펴 봤습니다.

 static void Main(string[] args)

{

    strRefactor += " World!!";

    Console.WriteLine(strRefactor);

}

 ▼ " World!!" 부분을 드래그 하여 Extract Method를 실행해 보았습니다.

static void Main(string[] args)

{

    strRefactor += ReturnStr();

    Console.WriteLine(strRefactor);

}

private static string ReturnStr()

{

    return " World!!";

}

결과를 보시면 이렇게 string 형을 리턴하는 메서드를 만들어 냅니다.



4. Encapsulate Field

기능Encapsulate Field!! 개인적으로 가장 맘에 드는 기능입니다. 자동 캡슐화!! public 공적 변수를 변환해 자동으로 프로퍼티를 생성해 줍니다.
잘 이해가 안되는 분들, 이제 눈으로 기능을 확인해 봅시다..^^

단축키
Ctrl + R + F (이 기능 만큼은 단축키를 외웁시다.)

기능
 


프로퍼티명을 적어 줍니다.



결과가 기대 됩니다.!! 두근두근
이제 결과를 살펴 봅시다.

 public string strRefactor = "Refatoring";

▼ 실행 결과

private string strRefactor = "Refatoring";

public
string StrRefactor
{

    get { return strRefactor; }
    set { strRefactor = value; }
}


놀랍지 않습니까?! 단순히 Ctrl+R+F를 실행한 결과로 자동으로 캡슐화 기능을 실행시켜 프로퍼티가 탄생합니다.



5. 정리
예전 닷넷 2002에서 2003이 발표되었던 때와는 전혀 분위기가 다르군요. 2005의 발표는 정말 많은 기대가 됩니다.
이번 아티글에서는 Refactory 3가지 기능에 대해서 알아 봤습니다. 다음 아티글에서는 Refactory의 나머지 기능에 대해서 다루어 보도록 하겠습니다.

반응형
반응형

회원이 비밀번호를 분실했을때 소정의 인증절차를 통과했을 경우 임의로 암호를 바꿔서 메일로 보내줄때 필
요해서 작성해봤습니다.
예전에도 이 게시판에 클래스 형태로 작성해서 올렸었는데 클래스 사용에 익숙치 않은분이 많은것 같아서 함
수로 정의했습니다.

생성되는 문자열 범위는 [a-zA-Z0-9]입니다.
함수의 인수에 얻고자하는 범위를 숫자로 입력해서 호출하면 됩니다.

// ASP.NET(C#) ----------------------------------------------
public string RandomString(int strLen)
{
  int rnum=0;
  int i, j;
  string ranStr = null;

  System.Random ranNum = new System.Random();

  for(i=0; i<=strLen; i++)
  {
    for(j=48; j<=122; j++)
    {
      rnum = ranNum.Next(48,123);
      if(rnum>=48 && rnum<=122 && (rnum<=57 || rnum>=65) && (rnum<=90 || rnum>=97))
      {
        break;
      }
    }

    ranStr += Convert.ToChar(rnum);
  }

  return(ranStr);
}
// use ex.: Label1.Text = RandomString(10);

반응형
반응형
http://www.ibm.com/developerworks/kr/library/wa-ajaxintro5/#fig2

JavaScript를 사용하여 웹 페이지 업데이트 하기에 관련된 IBM사이트의 기사이다

지금까지 DOM을 사용하면서 DOM이 도대체 뭐지? 하는 바보 같은 생각을 하고 있었다니.

내가 지금 사용하고 있는게 어떤건지도 모르고 쓰고 있었다는 내 자신이 한심스럽게

느껴졌다.. 음.반성하라.!~

반응형
반응형
단순한  function의 기능을 넘어서는 정도의

자바스크립트 언어가 되어가고 있는 현실(?)이 되어가는 듯하다.

현재 SilverLight에 큰 기대와 관심을 가지고 있는 지금

1.0으로 개발을 해보았다.

오로지 스크립트 언어로만 개발이 가능한 버전으로써

객체지향방식의 프로그래밍을 한다는게 여간 쉬운 일이 아니다..

음.. 이럴 줄 알았으면 소프트웨어 공학등의 공부를 열심히 하는건데

너무 소흘한게 아닌지..

어떠한 프로젝트개발에는 설계 부터가 시작이긴 하지만

막 코딩으로 되는 반 절차적(?)인 프로그래밍은 어떻게 될 듯하지만

이거는 설계가 생명이다.

다시 힘내자.!!

다음주부터 MBC로 출근을 해야하고 아!! 멀다..멀어..ㅋㅋ
반응형
반응형
<HTML>
<HEAD>
<TITLE> </TITLE>

<!------1. 아래의 코드를 HEAD 부분에 복사해 넣으세요 -------------->

<script>
<!--
var type=navigator.appName
if (type=="Netscape")
var lang = navigator.language
else
var lang = navigator.userLanguage

// 국가코드에서 앞 2글자만 자름
var lang = lang.substr(0,2)

// 영어인 경우
if (lang == "en")
window.location!.replace('english.html')

// 독일어인 경우
else if (lang == "de")
window.location!.replace('german.html')

// 스페인어 인 경우
else if (lang == "es")
window.location!.replace('spanish.html')

// 위의 어느것도 아닌경우 (디폴트 페이지)
else
window.location!.replace('korean.html')
//-->
</script>

<!-- 아래, 국가코드를 참고 하세요

af Afrikaans
ar-ae Arabic (U.A.E.)
ar-bh Arabic (Bahrain)
ar-dz Arabic (Algeria)
ar-eg Arabic (Egypt)
ar-iq Arabic (Iraq)
ar-jo Arabic (Jordan)
ar-kw Arabic (Kuwait)
ar-lb Arabic (Lebanon)
ar-ly Arabic (Libya)
ar-ma Arabic (Morocco)
ar-om Arabic (Oman)
ar-qa Arabic (Qatar)
ar-sa Arabic (Saudi Arabia)
ar-sy Arabic (Syria)
ar-tn Arabic (Tunisia)
ar-ye Arabic (Yemen)
be Belarusian
bg Bulgarian
ca Catalan
cs Czech
da Danish
de German (Standard)
de-at German (Austria)
de-ch German (Switzerland)
de-li German (Liechtenstein)
de-lu German (Luxembourg)
el Greek
en English
en English (Caribbean)
en-au English (Australia)
en-bz English (Belize)
en-ca English (Canada)
en-gb English (Great Britain)
en-ie English (Ireland)
en-jm English (Jamaica)
en-nz English (New Zealand)
en-tt English (Trinidad)
en-us English (United States)
en-za English (South Africa)
es Spanish (Spain Modern)
es Spanish (Spain Traditional)
es-ar Spanish (Argentina)
es-bo Spanish (Bolivia)
es-cl Spanish (Chile)
es-co Spanish (Colombia)
es-cr Spanish (Costa Rica)
es-do Spanish (Dominican Republic)
es-ec Spanish (Ecuador)
es-gt Spanish (Guatemala)
es-hn Spanish (Honduras)
es-mx Spanish (Mexico)
es-ni Spanish (Nicaragua)
es-pa Spanish (Panama)
es-pe Spanish (Peru)
es-pr Spanish (Puerto Rico)
es-py Spanish (Paraguay)
es-sv Spanish (El Salvador)
es-uy Spanish (Uruguay)
es-ve Spanish (Venezuela)
et Estonian
eu Basque
fa Farsi
fi Finnish
fo Faeroese
fr French (Standard)
fr-be French (Belgium)
fr-ca French (Canada)
fr-ch French (Switzerland)
fr-lu French (Luxembourg)
gd Gaelic (Scotland)
gd-ie Gaelic (Ireland)
he Hebrew
hi Hindi
hr Croatian
hu Hungarian
in Indonesian
is Icelandic
it Italian (Standard)
it-ch Italian (Switzerland)
ja Japanese
ji Yiddish
ko Korean
ko Korean (Johab)
lt Lithuanian
lv Latvian
mk Macedonian
ms Malaysian
mt Maltese
nl Dutch (Standard)
nl-be Dutch (Belgium)
no Norwegian (Bokmal)
no Norwegian (Nynorsk)
pl Polish
pt Portuguese (Standard)
pt-br Portuguese (Brazil)
rm Rhaeto-Romanic
ro Romanian
ro-mo Romanian (Moldavia)
ru Russian
ru-mo Russian (Moldavia)
sb Sorbian
sk Slovak
sl Slovenian
sq Albanian
sr Serbian (Cyrillic)
sr Serbian (Latin)
sv Swedish
sv-fi Swedish (Finland)
sx Sutu
sz Sami (Lappish)
th Thai
tn Tswana
tr Turkish
ts Tsonga
uk Ukrainian
ur Urdu
ve Venda
vi Vietnamese
xh Xhosa
zh-cn Chinese (PRC)
zh-hk Chinese (Hong Kong, S.A.R. China)
zh-sg Chinese (Singapore)
zh-tw Chinese (Taiwan)
zu Zulu
-->

</HEAD>

<BODY>

</BODY>
</HTML>
반응형

+ Recent posts