IT

반응형


 

SQLP (Structured Query Language Professional)

SQLD (Structured Query Language Developer)

 

1. 개요

SQL?

SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다.

 

SQLD

SQLD

한국데이터산업진흥원(KData)에서 주관하는 국가공인 민간자격증으로 Structured Query Language + Developer의 약자로 SQL 개발자를 의미합니다. 국가공인자격인 정보처리기사와 자주 비교되지만 정보처리기사보다는 조금 더 전문적이고 실무에 가까운 자격이라고 할 수 있습니다.

 

SQLP

 

SQLP

SQLD와 마찬가지로 한국데이터산업진흥원에서 주관하는 국가공인 민간자격증으로 Structured Query Language + Professional의 약자이며 SQL 전문가를 의미합니다. SQLD의 상위 자격증입니다

 

2. 응시자격

SQLD

별도의 응시자격 제한 요건이 없습니다.

 

SQLP

필기 시험일 기준으로 경력/학력 또는 자격기준 중 한 가지 이상 요건 충족시에만 응시가 가능합니다

 

경력/학력 기준

  • 학사학위 이상 취득자
  • 전문학사학위 취득 후 실무경력 2년 이상인 자
  • 고등학교 졸업 후 실무경력 4년 이상인 자

자격기준

  • 국내·외 데이터베이스 관련 자격을 취득한 자
  • 데이터아키텍처 전문가(DAP), 데이터아키텍처 준전문가(DAsP), SQL 개발자(SQLD) 자격을 취득한 자
반응형

3. 시험과목

 

SQLD (90분 - 50문항)

1과목 데이터 모델링의 이해 (10문항)
         - 데이터 모델링의 이해
         - 데이터 모델과 성능

2과목 SQL 기본 및 활용 (40문항)
         - SQL 기본
         - SQL 활용
         - SQL 최적화 기본 원리

 

SQLP (180분 - 필기 70문항 / 실기 2문항)

필기

1과목 데이터 모델링의 이해 (10문항)
         - 데이터 모델링의 이해
         - 데이터 모델과 성능

2과목 SQL 기본 및 활용 (20문항)
         - SQL 기본
         - SQL 활용
         - SQL 최적화 기본 원리

3과목 SQL 고급활용 및 튜닝 (40문항)
         - 아키텍처 기반 튜닝원리
         - Lock과 트랜잭션 동시성 제어
         - SQL 옵티마이저 원리
         - 인덱스와 조인
         - 고급 SQL 튜닝

실기

SQL 고급활용 및 튜닝 실무 (2문항)

 

4. 합격기준

SQLD : 100점 만점 기준 60점 이상, 과락 기준 40점 미만

SQLP : 100점 만점 기준 75점 이상, 과락 기준 40점 미만 + 응시자격심의 서류 통과자

 

5. 시험일정

2021년 기준 시험일정입니다.

자격명 시험명 접수기간 수험표발급 시험일 결과발표 증빙서류 제출기간
SQL
전문가

개발자
제40회 SQL 전문가/개발자 2.22 ~ 2.26 3.5 3.20(토) 4.16 4.16 ~ 4.23
제41회 SQL 전문가/개발자 5.3 ~ 5.7 5.14 5.29(토) 6.25 6.25 ~ 7.2
제42회 SQL 전문가/개발자 8.9 ~ 8.13 8.20 9.5(일) 10.1 10.1 ~ 10.8
제43회 SQL 전문가/개발자 10.25 ~ 10.29 11.5 11.20(토) 12.17 12.17 ~ 12.24

 

6. 응시수수료와 실시기관 홈페이지

- 응시료 (2021. 09. 12 기준)

SQLD : 50,000원

SQLP : 100,000원

 

- 실시기관 및 시험 전반에 대한 안내 : KData(한국데이터산업진흥원)

 

7. 유효기간

SQLD, SQLP : 2년 (보수교육 이수 후 영구자격으로 전환)

 

8. SQLD, SQLP 자격증을 취득해야하는 이유?

  • 높은 취득 난이도로 인한 SQL 스킬 증명
    SQLD의 경우에도 SQL에 전문성이 강화된 시험으로 60점 합격의 시험치고도 꽤나 어려운 난이도를 자랑하고 있어 인정받는 시험이고, SQLP의 경우에는 75점 합격에 실기까지 포함된 굉장히 어려운 시험으로 취득 자체만으로도 SQL에 대한 높은 이해능력을 인정받을 수 있습니다.
  • 보수교육 이수만 하면 영구자격
    이전에 알아본 CCNA CCNP와 같은 자격은 3년의 자격 유효기간이 있으나 SQLD, SQLP는 보수교육을 이수하면 영구자격으로 전환되어 추후에 다시 자격시험에 응시하지 않아도 되는 장점이 있습니다.
  • DB 실무에 도움이 되는 자격
    Oracle 이외에도 MySQL, MS-SQL, 요즘 핫한 PostgreSQL 등 모두에 공통적으로 활용가능한 SQL 기본 문법에 대한 능력에 대한 평가를 받을 수 있기 때문에 DB 실무에서도 폭넓에 활용이 가능한 지식을 다루는 자격이라고 볼 수 있습니다. 

 


 

최근 DB와 관련된 수업을 들으면서 관심이 생긴 SQLD, SQLP 자격에 대한 정리를 해보았습니다. SQLP의 경우 상당히 난이도가 있고 합격 기준 또한 높아서 쉽지 않더라도, SQLD의 경우는 한 번 도전해볼만한 메리트가 있다고 생각합니다. 다만 다른 국가공인 자격에 비해 응시료가 높은 편이라 충분히 준비되었을 때 응시하는 것이 좋아보입니다. 

반응형
반응형

Go의 인기 Web Framework 'Gin' 


해당 튜토리얼은 'Building Go Web Applications and Microservices Using Gin'의 내용을 번역하며 개인적으로 정리한 것입니다.


이번 시간에는 각 기사(Article)를 선택할 때 표시될 수 있는 핸들러와 템플릿을 추가하도록 하겠습니다.

 

1. 라우터 설정

이전 라우터와 동일한 방식으로 단일 기사에 대한 요청을 처리하기 위해 새 라우터를 설정하도록 합니다. 모든 기사들의 핸들러는 동일하겠지만, 각 기사별 URL은 다를 수 있다는 점을 고려해야 합니다. Gin을 사용하면 다음과 같이 경로 매개변수를 정의해서 해당 조건을 처리할 수 있습니다.

 

router.GET("/article/view/:article_id", getArticle)

 

이 라우터는 위 경로와 맞는 요청에 대해 라우터를 일치시키고, 라우터의 마지막 부분 값을 article_id 에 저장하도록 합니다. 이 라우터는 getArticle을 정의합니다.

 

이로 인해 업데이트된 routes.go 파일의 코드는 다음과 같습니다.

 

▶ routes.go

 

// routes.go

package main

func initializeRoutes() {

  // 인덱스 라우터 처리(Handle)
  router.GET("/", showIndexPage)

  // /article/view/some_article_id 부분에 대한 GET 요청 처리
  router.GET("/article/view/:article_id", getArticle)

}

 

2. 뷰 템플릿 작성

 

우리는 templates/article.html 이라는 이름으로 새로운 템플릿을 생성할 필요가 생겼습니다. 해당 파일은 index.html 템플릿과 유사한 방법으로 만들 수 있습니다. 다만 이 경우 기사 목록이 포함된 Payload 변수 대신 단일의 기사가 포함될 것입니다.

 

▶ article.html

 

<!--article.html-->

<!-- header.html 템플릿을 이 위치에 포함시킵니다 -->
{{ template "header.html" .}}

<!--기사 제목을 표시합니다-->
<h1>{{.payload.Title}}</h1>

<!--기사 본문 내용을 표시합니다-->
<p>{{.payload.Content}}</p>

<!-- footer.html 템플릿을 이 위치에 포함시킵니다 -->
{{ template "footer.html" .}}

 

3. 라우터 핸들러 생성

기사 페이지 핸들러 getArticle은 다음의 작업을 수행합니다.

 

3-1. 표시할 기사의 ID를 추출합니다

알맞는 기사를 가져와 표시하려면 먼저 Context에서 ID를 추출해야 합니다. 추출하는 방법은 다음과 같습니다.

 

c.Param("article_id")

 

여기서의 c 는 Gin을 사용할 때 라우터 핸들러의 매개변수인 Gin Context를 의미합니다.

 

3-2. 기사 가져오기

이 부분은 models.article.go 파일에 정의된 getArticleByID() 함수를 통해 수행할 수 있습니다.

 

article, err := getArticleByID(articleID)

 

models.article.go에 포함된 getArticleByID 함수는 다음과 같습니다

 

func getArticleByID(id int) (*article, error) {
  for _, a := range articleList {
    if a.ID == id {
      return &a, nil
    }
  }
  return nil, errors.New("기사를 찾을 수 없습니다")
}

 

이 함수는 기사 목록을 반복하고 ID가 전달된 ID와 일치하는 기사를 반환합니다. 일치하는 기사가 없으면 오류를 반환합니다.

 

3-3. 기사를 전달하는 article.html 템플릿을 렌더링합니다

다음과 같은 코드를 사용해 수행할 수 있습니다.

 

c.HTML(
    // ----- HTTP Status를 200(OK)로 설정합니다 ------ //
    http.StatusOK,
    // ----- article.html 템플릿을 사용합니다 ------ //
    "article.html",
    // ---- 페이지에서 사용하는 데이터를 전달합니다 ----- //
    gin.H{
        "title":   article.Title,
        "payload": article,
    },
)

 

위의 코드를 포함하여 업데이트된 handlers.article.go 파일은 다음과 같이 구성될 것입니다.

 

▶ handlers.article.go

 

// handlers.article.go

package main

import (
  "net/http"
  "strconv"

  "github.com/gin-gonic/gin"
)

func showIndexPage(c *gin.Context) {
  articles := getAllArticles()

  // 템플릿 렌더링을 위해 Context의 HTML 메소드 호출
  c.HTML(
    // ----- HTTP Status를 200(OK)로 설정합니다 ------ //
    http.StatusOK,
    // ----- article.html 템플릿을 사용합니다 ------ //
    "index.html",
    // ---- 페이지에서 사용하는 데이터를 전달합니다 ----- //
    gin.H{
      "title":   "Home Page",
      "payload": articles,
    },
  )
}

func getArticle(c *gin.Context) {
  // ----- 기사 ID가 유효한지 확인합니다 ----- //
  if articleID, err := strconv.Atoi(c.Param("article_id")); err == nil {
    // ----- 기사가 존재하는지 확인합니다 ----- //
    if article, err := getArticleByID(articleID); err == nil {
      // Call the HTML method of the Context to render a template
      c.HTML(
        http.StatusOK,
        "article.html",
        gin.H{
          "title":   article.Title,
          "payload": article,
        },
      )

    } else {
      // ---- 기사를 찾을 수 없는 경우 오류와 함께 중단합니다 ---- //
      c.AbortWithError(http.StatusNotFound, err)
    }

  } else {
    // ---- URL에 잘못된 기사 ID가 지정된 경우 오류와 함께 중단합니다 ---- //
    c.AbortWithStatus(http.StatusNotFound)
  }
}

 

이제 어플리케이션을 Build하고 실행시켜봅니다. http://localhost:8080/article/view/1 에 접속하면 다음과 같은 화면이 뜨게됩니다.

 

제목과 내용이 정상적으로 출력됩니다

 

 

반응형
반응형

BOJ 문제풀이!

 


 

BOJ 2884번 알람 시계 Go Lang 문제풀이입니다.

 

45분인지 아닌지를 확인하기 위해 If문을 사용해서 45분 보다 많이 남았을 때, 딱 45분일 때, 45분 미만일 때로 분류해서 작성합니다.

 

시간은 h, 분은 m으로 입력값을 받아서 다음과 같이 나타낼 수 있습니다.

 

package main

import (
	"fmt"
)

func main() {
	var h int
	var m int
	fmt.Scan(&h, &m)

	if m-45 >= 0 {
		fmt.Printf("%d %d\n", h, m-45)
	} else if h == 0 {
		fmt.Printf("%d %d\n", 23, 15+m)
	} else {
		fmt.Printf("%d %d\n", h-1, 15+m)
	}
}

 


 

 

 

 

반응형
반응형

BOJ 문제풀이!


 

BOJ 14681번 사분면 고르기 Go Lang 문제풀이입니다.

 

x좌표와 0보다 큰 경우와 0보다 크지 않은 경우를 if 문을 통해 나누고, 그 안에서 다시 y좌표가 0보다 큰 경우와 크지 않은 경우에 따라 각각의 사분면이 표시될 수 있도록 Println합니다.

 

package main

import (
	"fmt"
)

func main() {
	var x, y int
	fmt.Scanln(&x)
	fmt.Scanln(&y)

	if x > 0 {
		if y > 0 {
			fmt.Println(1)
		} else {
			fmt.Println(4)
		}
	} else {
		if y > 0 {
			fmt.Println(2)
		} else {
			fmt.Println(3)
		}
	}
}

 


 

 

 

반응형
반응형


Amazon Elastic Compute Cloud !

 

AWS 서비스들 가운데에서도 가장 유명하고 기본적인 서비스 중 하나로 EC2가 있습니다. AWS EC2Amazon Elastic Compute Cloud의 약자로 AWS 클라우드에서 확장 가능한 컴퓨팅 스토리지를 제공하는 서비스를 말합니다. EC2에서 원하는 사양의 인스턴스를 생성하여 가상 서버를 구축하고, 네트워킹 및 보안 구성과 스토리지 관리를 할 수 있습니다. 트래픽이 늘어나면 그 필요량만큼의 인스턴스를 생성하여 대응할 수 있고, 필요없어진 인스턴스는 종료하면 일정 시간 후 자동으로 삭제되어 과금되지 않습니다. 우리가 일반적으로 아는 가장 기본적인 클라우스 서버의 기능을 생각하시면 될 것입니다.

 

AWS EC2는 쉽게 배울 수 있고, 빠르게 사용이 가능하며, 프리 티어 유저분들의 경우 12개월간 특정 인스턴스를 무료로 사용하실 수 있습니다. 이전에 포스팅한 프로모션 크레딧을 사용하시면 더욱 좋을 것입니다.

 


 

 

우선 AWS EC2를 사용하기 위해서 콘솔 가입을 해주시고, 로그인 하신 후에 서비스 중 EC2를 선택해서 접속해주세요. 저는 자주 쓰는 서비스들 중 하나기 때문에 즐겨찾기 해두었습니다.

 

인스턴스를 비워둔 상태로, 처음 접속하시면 저와 똑같이 이렇게 보이실 것입니다.

 

NEW EC2 Experience가 적용되어 이전의 UI와 조금 다릅니다만 이전에 사용하셨던 분들도 사용하시기에는 큰 차이가 없습니다. 위의 화면은 EC2 대시보드라고 부릅니다.

 

 

EC2 사용을 위해 인스턴스를 생성해보도록 하겠습니다. 우측 상단의 인스턴스 시작을 눌러줍니다.

 

 

EC2를 사용하기 위해서 먼저 OS, App Server, App이 포함된 AMI를 선택합니다. 각 OS별로 프리 티어 사용가능 여부가 표시되어있으므로 확인하시고 프리 티어 사용자 분들께서는 프리 티어를 사용해보시는 것을 추천드립니다.

 

 

Amazon Linux 2와 같은 자체 Linux OS부터 Ubuntu, Red Hat, Debian, MS Server 등 다양한 OS 선택이 가능합니다. 프리 티어만 따로 보기도 가능합니다. 원하는 OS와 Application이 있는 사양을 선택하시면 됩니다.

 

 

프리 티어 사용 가능한 항목은 별도의 표시가 되어있습니다. t2 micro 유형이 프리 티어 사용 가능 항목이며 t2 부터 z1d 까지 정말 많은 종류의 인스턴스가 있습니다. 사양별로 선택이 가능하도록 잘 분류되어있습니다.

 

각 스펙별로 세분화하여 등록되어 있어 원하는 인스턴스를 자유롭게 선택 가능합니다.

 

다음 보안 그룹을 구성해줍니다. 

 

 

왼쪽 하단의 규칙 추가를 통해 원하는대로 규칙을 추가할 수 있으며 한 번 생성한 보안 그룹은 이후의 다른 인스턴스를 만들때 다시 활용이 가능합니다. 

 

 

HTTP와 IMAP, POP3와 같은 다양한 유형을 선택할 수 있으며 사용자 지정 TCP를 통해 TCP 포트 범위를 별도 지정하여 활용할 수 있습니다.

 

 

나머지 구성을 모두 끝내면 키 페어 생성 또는 선택 창이 뜹니다. 여기서 생성되는 키는 해당 인스턴스에 접속할 때 필요하므로 안전하게 잘 보관해주시고 유출되지 않도록 주의해야할 것입니다. 또 혹시 실수로 지우거나하는 경우 해당 서버에 접속이 안되니 관리에 특별히 신경써야합니다. 원하는 폴더에 잘 보관하셔서 키를 생성 혹은 기존에 생성하신 키 페어를 선택하신 후에 인스턴스를 시작할 수 있습니다.

 

 

다음과 같이 인스턴스가 생성되고 실행 중 상태가 뜨면 접속이 가능합니다.

 

 

인스턴스를 우클릭하고 연결을 선택하시면 다음과 같이 4가지 연결 방식 중 하나를 선택하여 우리가 방금 생성한 인스턴스에 연결할 수 있습니다.

 

성공적으로 접속되었으니 테스트 삼아 docker 설치도 해보았습니다.

 

 

터미널이나 cmd창에서 접속하기 위해서는 키 페어를 저장하고 있는 디렉토리로 가셔서 다음 명령어를 통해 접속이 가능합니다.

 

ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name

 

일반적으로 연결할 때 SSH 클라이언트를 클릭해보면 쉽게 명령어를 복사 붙여넣기 할 수 있도록 되어있으니 참고해주세요.

 


 

우리는 몇 번의 클릭만으로도 아주 간단하게 AWS EC2를 시작해볼 수 있었습니다. 이제 EC2를 활용해서 클라우드 컴퓨팅을 직접 체험해보세요!

반응형

+ Recent posts