제2의 비엔지니어 인생관을 꿈꾸며

Posted
Filed under MSSQL
WITH  [임의의명칭] AS ( 사용하고픈 쿼리 ) 
select * from [WITH 에 서 만들어진 임시테이블 활용]


여러 쿼리 WITH 로 쓸경우 ( 컴마로 구분하여 연속적으로 작성한다 마치 WITH 만 생략된 느낌)
WITH [임시테이블명칭] AS (  ~ 사용하고픈  쿼리 ~ )
, [임시테이블 별칭] AS ( ~ 사용 하고픈 쿼리 ~)  
, [임시테이블 별칭] AS ( ~ 사용 하고픈 쿼리 ~)
select * from [WITH 에 서 만들어진 임시테이블 활용]
select * from [WITH 에 서 만들어진 임시테이블 활용]
→ 여기 (다음) 쿼리에서 활용하면 오류남 (WITH 마지막 쿼리만 유효)


1개의 테이블에서 쿼리된 집합결과를 별칭으로 사용
WITH USER1 AS
(
      select * from t_user where regDate = '2018-01-01'
)
select * from USER1


2개의 쿼리를 연결해서 각각의 별칭의 테이블로 사용하기
WITH USER1 AS
(
          select top 10 * from t_user where RegDate > '2018-01-01' and RegDate < '2018-02-01'
) , USER2 AS
(
          select top 10 * from t_user where RegDate > '2018-02-01' and RegDate < '2018-03-01'
( select * from USER1 )
   union
( select * from USER2 )




2개의 쿼리를 연결해서 각각의 별칭의 테이블로 사용 후 조인
WITH USER1 AS
(
          Select top 10 userid from t_user where RegDate > '2018-01-01' and RegDate < '2018-02-01'
) , USER2 AS 
(
     Select top 10 userid from t_user where RegDate > '2018-02-01' and RegDate < '2018-03-01'
) , USERTOT AS 
(
     (select * from USER1)
         union all
     (select * from USER2)
)
 select  UserName  from t_user A  right outer join USERTOT B on A.UserId = B.UserId 

WITH 로 만들어진 별칭에 대해서는  집합의 개념으로 테이블과 같이 다루어 질수있다.
목적에 따라 다르겟지만, 임시 데이터 활용을 위해 임시테이블(세션,메모리,뷰) 을 더 이상 안만들어도 되겟다.
2018/03/20 17:10 2018/03/20 17:10
Posted
Filed under MSSQL
일반적으로 프로그래밍에서 데이터 validation 이나 값의 체크는 DB 단보다는 유저인터페이스인 
어플단에서 1차적으로 필터링을 한다 하지만 Db 프로그래밍에서의 If 문 또한 자주이용하곤하는데

if 문 대신 case 문을 활용하기도 한다. 뭔가 좀더 간렬함 때문인데 , 아래 코드를보면
아래코드는 @a 의 값에 따라 @b 에 값을 할당하는 예제이다.

declare @a tinyint
declare @b char(3) 

set @b = '000' -- 기본으로  
set @a = 4  -- 일부러 없는 값을 넣음


if @a = 1  
   set @b = 'aaa'

if @b = 2 
  set @b = 'bbb'

if @c = 3
  set @b = 'ccc'

select @b  --  @b는?? 당연히  '000' 출력 너무 당연하다

이제 case when ~ then ~ 문을 살펴보자 

declare @a tinyint
declare @b char(3) 

set @b = '000' -- 기본으로  
set @a = 4  -- 일부러 없는 값을 넣음


set @b= case  

                when @a = 1 then 'aaa' 
                when @a = 2 then 'bbb'
                when @a = 3 then 'ccc'
End

select @b  -- @b 는?? Null 을 출력한다.

안타깝게도 case 문에서는  조건에 만족하는 값이 없으면 null 을 리턴한다.
그럼 난 리턴이 아닌 기본값 '000' 을 받고싶다면 아래와 같이 else 문을 활용하여야한다

set @b= case  
                when @a = 1 then 'aaa' 
                when @a = 2 then 'bbb'
                when @a = 3 then 'ccc'
             else @b   -- else 만 추가, 또는 else '000' 초기값 
End

select @b  -- @b 는 정상적으로 '000' 출력한다.

이번 아티클은 if / case 문법이나 용도를 몰라서라기보다,
case 문을 case 처럼(?) 사용하면 잘쓰는데, if 문 처럼(?) 쓰다보면  행하는 실수를 끄적여봣다.
2018/03/15 13:51 2018/03/15 13:51
Posted
Filed under jQuery

업무상(ajax 뿐만 아니라)  클라이언트쪽의 페이지 인코딩 과 서버측 인코딩이 달라서 한글이 깨지는 경우가 많이 발생한다.
물론 요즘 대부분 utf-8로 개발을 하기때문에 흔하지 않을수도있지만 환경에따라 ,어쩔수없이 euc-kr 와 utf-8을 동시에
이용해야 하는 경우가 있다.

나의 경우는,  클라이언트 페이지가 euc-kr(완성형 한글) 이지만 내부적으로 ajax 가 utf-8로 변환하여 
서버 페이지 (euc-kr)에 전송하면서,  클라이언트서버의 인코딩 환경이 맞지 않기(같지 않기때문) 때문에 생긴 문제였다

아래는 full code 는 아니지만 핵심만 요약해서 정리하였다(code가  중요하지는 않다)

(참고로 한글이 깨지지않게 하는 방법은 사실 URL 인코딩 말고, 다른방법도 있다. 하지만  URL 인코딩을 통해 데이터를 전송하면 ContentType 이나 Mime 설정 등.. 페이지 언어 설정이 필요없다.)

<script language="javascript">

       var txt;
       txt = encodeURI("가나다라마")  - // 1차  Url 인코딩(서버 함수일경우 서버 함수로)
       txt = encodeURI("가나다라마") -  // 2차  Url 인코딩(서버 함수일경우 서버 함수로)
         
        //  서브밋 처리

</script>

[변환후]

%EA%B0%80%EB%82%98%EB%8B%A4%EB%9D%BC%EB%A7%88  // 1차
%25EA%25B0%2580%25EB%2582%2598%25EB%258B%25A4%25EB%259D%25BC%25EB%25A7%2588 // 2차

(1차에서 변환한 문자열의, % 가 2차에서 %25 로만 변경된것을 볼 수 있다.)


그럼 왜 2번 해줄까? 

이유는 간단하다.  Url 인코딩된 문자열을 보존하기 위해서이다.
만약 1회만 할 경우,   서브밋시 서버에서 자동으로 디코딩을 1회 하면서 url 인코딩된 것이 
utf-8 데이터로 노출된다
그래서 한글로 변환하게되니 깨진다.  2회 하게되면,  서버측에서 자동 1회 인코딩하더라도, 1차로 Url인코딩된게 남아있기때문에 깨지지않는다.

{{ 2회 인코딩한 데이터 서버로 전송 }}
%25EA%25B0%2580%25EB%2582%2598%25EB%258B%25A4%25EB%259D%25BC%25EB%25A7%2588

{{ 서브밋 되면서 중간에 서버가 1번째 디코딩함 }}
%25EA%25B0%2580%25EB%2582%2598%25EB%258B%25A4%25EB%259D%25BC%25EB%25A7%2588

%EA%B0%80%EB%82%98%EB%8B%A4%EB%9D%BC%EB%A7%88

{{ 서버 페이지에서  2번째  디코딩함 }}
%EA%B0%80%EB%82%98%EB%8B%A4%EB%9D%BC%EB%A7%88 

 "가나다라마"  변환완료

 DB 저장함

2018/03/14 17:06 2018/03/14 17:06
Posted
Filed under C#

최대저장소 깃 허브와
최대 개발 커뮤니티 스택오버플로우에서 조사한  인기있는 프로그래밍 언어 랭킹 TOP

(2015년도 인기언어 래킹)



2018년에 수요 많은 프로그래밍 언어 7가지 

꾸준히 인기 있는 '자바' 

코딩 도조는 지난해 이맘때도 같은 조사를 했다. 당시와 비교하면 올해 조사에서 자바 개발자에 대한 구인 공고는 6천 건 쯤 줄었다. 하지만, 자바는 아주 잘 만들어진 언어로, 여전히 전세계 수 십억 개의 디바이스에서, 수 백만명의 개발자들이 사용하고 있는 만큼 1위 자리를 지켰다.

또, 코딩 도조는 안드로이드 앱 대부분이 자바 기반이고, 포춘 500대 기업 중 90%는 백엔드 개발을 위한 서버 단 언어로 자바를 채택하고 있다는 점을 강조했다.

확실히 뜨는 언어 '파이썬'

 

파이선 개발자 구직 게시글은 지난해보다 5천 여건 늘며, 인기가 상승했다.

파이썬은 과학 분야 연산, 데이터 마이닝, 머신러닝 등에 일반적으로 사용되고 있다. 코딩 도조는 머신러닝 기술에 대한 수요가 증가하면서 파이썬의 인기가 올라가고 있다고 설명했다.

웹 넘어 IoT까지 유망 언어 '자바스크립트'

 

자바스크립트 개발자에 대한 수요는 지난해와 비슷한 수준으로 나타났다.

코딩 도조 측은 전체 웹 사이트의 95%, 개발자의 80%가 자바스크립트를 사용하고 있기 때문에 이런 인기는 당연하다고 설명했다.

또 "리액트, 앵귤러JS 자바스크립트 기반 프론트엔드 프레임워크는 사물인터넷(IoT) 및 모바일 장치가 대중화되면서 거대한 잠재력을 가지게 됐다"면서 "자바스크립트의 인기가 빠르게 식진 않을 것 같다고"고 예상했다.

■ 레거시 시스템 터줏대감 C++

자바스크립트와 마찬가지로 C++에 대한 수요는 지난해와 비슷한 수준을 유지했다.

C++은 시스템/애플리케이션 소프트웨어, 게임 개발, 드라이버, 클라이언트 서버 애플리케이션, 임베디드 펌웨어 등에 보통 사용된다.

많은 프로그래머들이 C++은 배우고 사용하기 복잡하다고 생각하고, 파이썬이나 자바스크립트를 선호하지만, C++은 여전히 대기업 레거시 시스템에 많이 남아 있기 때문에 상위권을 유지하고 있다는 설명이다.

게임 개발에 많이 쓰이는 C#

C#에 대한 수요는 지난해와 비교해 약간 떨어진 것으로 나타났다. C#은 마이크로소프트가 만든 닷넷 플랫폼에서 작동하는 객체 지향 언어로, 비디오 게임 개발에 활발하게 사용되고 있다.

의외로 인기 상승 'PHP'

PHP는 지난해 9위에서 올해 6위로 인기 순위가 상승했다. 대부분 개발자들은 HTML로 처리할 수 없거나 마이SQL 데이터베이스와 상호작용하는 기능을 추가하기 위해 이 스크립팅 언어를 사용하고 있다.

접착제 언어로 명맥 유지 '펄'

펄은 지난해와 비교해 3천 건 정도 구인 수요가 줄어들었지만, 탑 7 리스트에 잔존하는데 성공했다.

펄은 계속해서 시스템, 네트워크 관리자들 사이에서 많이 사용되고 있다. 다른 언어나 라이브러리와 쉽게 연결할 수 있는 접착제 언어(glue language)라는 점에서 강점이 있다.

이밖에도 상위 7개 언어에 못들었지만, 최근 몇 년 간 인기를 얻으며 성장하고 있는 언어도 있다. 스위프트, R, 러스트 등이 해당한다. 프로그래밍 언어 이외의 기술은 SQL, 닷넷, 노드js 등이 꼽혔다.


출처 : ZD-Net
(http://www.zdnet.co.kr/news/news_view.asp?artice_id=20171211160110)

2018/03/05 15:11 2018/03/05 15:11
Posted
Filed under C#
가끔 개발하다보면 .net framework 버전 vs 비주얼 스튜디오와의 버전 vs 컴파일러버전 과의 궁금할때가있다. 물론 개발만 잘하면되는데, 그래도 궁금하다. .framework 1.0 (1.1?)은 공식적으로 버린지 오래고? ,  2.0(설치되어있어야함) ~ 비쥬얼 스튜디오 자신의 버전까지 지원한다. VisualStudio 2012는 3.0  ~ 4.5까지 설정에 따라 컴파일 이 된다. (단, framwork가 없으면 설치 해야함)


사용자 삽입 이미지



[가로버전]



이미지 출처:  http://sktype.tistory.com/112
이미지 편집 :  by sooli.com Pluginn 

2018/02/08 19:13 2018/02/08 19:13