본문 바로가기

Dev Story

배움에 있어 재미있게란? 어떤 일을 새로 배울려고 할때 정해진 규칙이나 문법을 배워야 한다. 자신의 성향이 잘 맞으면 배우는데 있어 거부감이 적고 진도도 잘 나가겠지만 반대인 경우에는 답답하고 중도에 포기할 가능성이 많다. 이럴때 재미있게 생각 하면 어떨가 한다. 그 재미있게란 자신이 생각하는 논리대로 배움을 진행 하면 답답했던 가슴이 조금이나마 뚫리지 않을가 생각이 든다. 예를들어 데이터 분석을 하는 방법 에 대해 배우는 과정이라고 해보자 시간의 흐름에 따라 변하는 시계열 데이터가 있다고 과정할때 점선에 해당하는 부분을 예측 하는 문제를 풀어야 한다면 자신만의 방식으로 먼저 풀어 나가 보는 것이다. 중학교때 배웠던 y=ax+b 를 눈짐작으로 그어서 Y축과 X축에 특정값을 대입하여 a에 해당 하는 기울기를 구하고 절편 b를 구하..
MS SQL->ORACLE 트리거 변환 방법 MS SQL 로 작성된 트리거를 오라클 트리거로 변환할 때 예시를 몇자 적어 볼가 한다. [MSSQL] ⓛ CREATE TRIGGER [T_EMP_MOVE_AFTER_DELETE] ON [EMP_MOVE] AFTER DELETE, UPDATE AS BEGIN DECLARE @OLD$EMP_NO DECIMAL(19,5), @OLD$DEPT_NO DECIMAL(19,5), @OLD$EMP_NAME NVARCHAR(2), ② DECLARE CUR CURSOR FOR SELECT EMP_NO , DEPT_NO, EMP_NAME, ③ FROM DELETED OPEN CUR FETCH NEXT FROM CUR INTO @OLD$EMP_NO, @OLD$DEPT_NO, @OLD$EMP_NAME WHILE @@FETCH..
Word2Vec 을 활용한 연관 키워드 뽑기 #1 전 회사 프로젝트 때 특정 카테고리 별로 키워드를 분류 하는 작업이 필요했다. 처음에는 사용자가 수동으로 키워드 분류 작업을 하는 프로그램을 개발 하게 되었고 이걸 머신러닝 알고리즘 을 이용해 자동으로 키워드 분류 가 가능 할 거 같아 제안 했었다. 여러 알고리즘 중에 눈에 띄던 Word2Vec 알고리즘을 실무에 적용 하기 까지의 좌충우돌 스토리를 쓸가 한다. " 그때 경험을 기록 으로 남겨둘려고 블로그를 쓴다. " 이때 당시에 만들었던 키워드 수동 분류 툴 방금전에 말했듯이 이건 사용자가 직접 수동으로 분류해야만 했다. (C# WinForm 에 DevExpress 를 사용해서 깔끔하게 뽑히긴 했다.) 이건 개발자로써 UI좀 만들고 CRUD 만 할 줄 알면 누구나 쉽게 만들수 있는 프로그램이라 큰 의미는..
실무에 사용 되는 오라클 커서 (CURSOR) 사용법 1) 정의 - 커서를 짧고 간략하게 설명 하면 "SQL문을 처리한 결과 집합을 가리키는 포인터이다." 이걸 약간 더 길게 설명 하면 SQL 처리 결과 를 오라클 서버 프로세스 내부의 Private SQL Area 라는 메모리 영역에 저장되는데 클라이언트 프로세스에서 포인터(커서)라 는 것이 가리키고 있다. 아래 두줄은 같은말 `` - 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치. - 커서는 SELECT 문의 결과 집합을 처리하는데 사용된다. 아래 그림은 위에 설명을 한 장의 이미지로 설명했다. 커서의 정의에 대해서 알아 보았으니 종류에 대해서 알아 보자. 종류로는 암시적, 명시적 커서로 나뉜다. 2) 암시적 커서 : 오라클 내부에서 PL_SQL(INSERT, UPDATE, DELETE 등등.)..
오라클 테이블 반환 (PIPELINED TABLE) 함수 작성법 오라클 에서 함수(Function) 를 작성하여 반환 값으로 보통 하나의 문자나 숫자 형태로 반환할 경우가 있지만 테이블 형태로도 반환 할 수 있다. 그 테이블 형태로 반환 하는 방법을 정리해 놓았다. 1. 레코드 타입 선언 - 함수에서 반환하는 레코드의 스키마를 정의 - FUNC_MULTIVALUES 함수명 정의 --레코드 타입 선언 CREATE OR REPLACE TYPE FUNC_MULTIVALUES AS OBJECT ( AUTH_NO VARCHAR2(10) ); 2. 테이블 타입 선언 - 함수에서 반환하는 레코드의 집합(테이블) 정의 - “T_” + 함수명 (명칭 정의 임의로 해도 상관은 없다.) --테이블 타입 선언 CREATE OR REPLACE TYPE T_FUNC_MULTIVALUES AS..
MSSQL -> Oracle 자주 사용 되는 날짜 시간 변환 편 개발로 먹고 살다 보면 종종 기존에 사용하던 DB를 변경 해야 하는 경우가 발생한다. 보통은 SQL을 직접 작성 한 경우가 많아서 변환되어야 할 DB에 맞게 수정을 해야 한다. 자바의 하이버네이트나 파이썬의 ORM 같은 서드파티를 사용하면 변환할 DB가 호환이 되서 돌아 가겠지만 우리의 "레거시 시스템" 들은 이런저런 이유로 인해 전통기술을 사용해야 한다. 요즘 드는 생각은 이런 일거리도 생겨야 누군가는 일을 더 하지 않겠는가... 예전에 Oracle -> MariaDB로 변환한 적이 있었는데 이번엔 MSSQL-> Oracle로 변환하는 프로젝트에 금방 익숙해졌던것 같다 하면서 정리해두었던 날짜, 시간 변환을 몇가지 기록 해둘가 한다. MSSQL Oracle 결과 CONVERT(CHAR(18), GETD..
Lazy 클레스를 이용한 싱글패턴 - 실무편(DB 관리 클레스) 이 글 을 쓰는 목적은 DotNet4.0 부터 사용가능한 Lazy 클래스 는 싱글톤 적용시 간편 하면서도 멀티 쓰레딩에 안전한 방법이라 소개 하고자 포스팅 하게 되었다. (물론 많은 분들이 알고 계실테지만..) 정의: 객체 초기화 시점을 지연해서 객체가 필요한 시점에 초기화 가 이루어지고 이후 생성된 객체를 참조 하게 된다.용도: 메모리 효율을 높일수 있다, 싱글톤에 효율적으로 사용 된다. 간략하게 클레스 구조를 설명하자면 객체 생성시 new를 사용하면 바로 객체가 생성 되므로 팩토리(Factory) 패턴을 이용하여 객체를 생성한다(사용을 위한 선언과 실제 객체가 생성되는 시점을 관리 할 수 있으므로) 한번 생성된 객체는 이후에는 재사용 되므로 싱클톤(Singleton) 패턴을 띠고 있다. 출처:http..
실무에 적용한 전략패턴 (C# 기준) 안녕하세요 구독자 여러분 오늘은 디자인 패턴의 하나인 전략 패턴을 활용해실무에서 사용한 엑셀 파싱 하는 프로그램 소스를 설명 할가 합니다. 전략 패턴은 하나의 목적을 위해 다양한 전략(방법) 을 활용해만드는 패턴을 말합니다. 조금더 세부적으로 말하면 단위별로 문제 해결을 위한 알고리즘들을 정의하고각각의 알고리즘을 캡슐화 합니다 캡슐화된 알고리즘을 조합해 해결 하고자 하는 목적을 완성 시키는 전략을 말합니다. 위 패턴을 어떻게 적용 했는지 설명 하겠습니다. 아래 그림은 엑셀파일 하나를 로드 하여 각각의 탭에 있는 내용을 파싱해서 매출액을 출력 하는 프로그램을 짠 다고 가정 해봅시다. 첫번째 그림은 탭 마다 같은 내용에 매출액을 구하는 공식이 똑같기 때문에하나의 클래스 혹은 함수로 처리를 다 할 수가 있습니..