728x90

문득 컴퓨터에 설치된 프로그램들을 정리하고 싶을때가 있다.
오늘이 그랬다.
제어판에 들어가서 '프로그램 추가/제거'에 들어가 안쓰는 프로그램이 있는지 살펴보았는데 눈에 띄는 프로그램명이 하나있다.
'Microsoft Update Health Tools'

Microsoft Update Health Tools

Health? 건강 관련된 프로그램인가...? 뭐지..ㅋㅋㅋ
삭제해도 되는것인지 구글에 검색해보았다.

https://www.minitool.com/lib/microsoft-update-health-tools.html

 

What Is Microsoft Update Health Tools? Here Is an Introduction!

You may want to get some information about Microsoft Update Health Tools, and this post is what you need. You can know what it is and should you uninstall it.

www.minitool.com

위 링크에 따르면 이 프로그램은 윈도우 업데이트를 위해 필요할 수 있는 작업을 수행하거나 일부를 변경한다고 되어있다.

세부 사항 (구글번역)



Microsoft Update Health Tools는 삭제할 수 있는 걸까? 삭제해도 되는 걸까? 삭제해야 하는걸까? 
대답 : 
삭제할 수 있는 걸까? -> 손상 없이 제거할 수 있다고 한다.
삭제해도 되는 걸까? -> 삭제해도 된다.
삭제해야 하는 걸까? -> 아니다.

위에 소개한 링크에 따르면 해당 소프트웨어는 위험한 프로그램이 아니기 때문에 그대로 두는 것이 좋다고 말하고 있다.
또, 다른 블로그에서 찾아본바로는 삭제를 해도 윈도우 업데이트를 하게 되면 다시 살아나는 경우도 있다고...
괜히 스트레스 받지말고 그냥 두자...

 

728x90
728x90

Node.js의 프레임워크인 Express를 알아보고자

AWS의 EC2서비스에 우분투18으로 인스턴스를 추가하고 Express설치를 했다.

 

근데 테스트해봐야지 하고 브라우저에서 'http://인스턴스아이피:3000'을 아무리 호출해도 접근이 되지 않는 문제가 발생했다.

'뭐가 문제지..'하고 EC2의 보안설정도 확인하고 ufw도 확인하고 iptables도 다 확인했는데 도무지 접근이 안되었다..

혼자서 끙끙대다가 회사의 인프라팀장님께 도움을 받았는데 문제의 원인은 소스코드에 있었다.

app.js의 소스코드는 아래와 같았는데

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
	  res.statusCode = 200;
	  res.setHeader('Content-Type', 'text/plain');
	  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
	  console.log(`Server running at http://${hostname}:${port}/`);
});

여기서 문제가 발생하게 되었던 부분은 'hostname'쪽이었다.

hostname을 '127.0.0.1'이 아니라 인스턴스의 eth0아이피로 설정해주니 외부에서 접근이 되며 해결이 되었다.

 

-----------------------------------------------------------------------------------------------

착오가 있었다.

express를 설치했는데 접근이 되지 않았던 문제가 아니었다.

위의 소스코드는 node.js로 hello world를 표시하는 웹서버 코드였다.

그냥 익스프레스를 설치하니 따로 호스트네임을 설정하지 않아도 바로 접근이 되었다.

휴우..ㅋㅋㅋㅋ

728x90
728x90

리눅스 기준, 코드나이터 설치는 아주 간단하다.

코드이그나이터 홈페이지(https://codeigniter.com)에 접속 후, 소스를 다운로드 받아 프로젝스 소스위치에 업로드하면 된다.

왼쪽 하단의 Download 버튼을 클릭하면 zip파일로 다운로드 된다.

 

 

 

 

 

728x90
728x90

C#을 공부하다보니 헷갈리는것이 생겼다.

바로 'String'(첫글자 대문자)와 'string'


구글신에 검색해보니

'string'은 'System.String'의 별칭(alias)이라고 한다.

해서 기술적으로 다른점은 없다고.

* 마치 'System.Int32'를 'int'로 나타내는것과 같다.


이 지식의 출처는 아래에.

http://h5bak.tistory.com/96

https://stackoverflow.com/questions/7074/what-is-the-difference-between-string-and-string-in-c

728x90
728x90

전자정부 프레임워크를 실행할때,

'org.springframework.web.context.ContextLoaderListener'라는 에러를 내며 실행이 안될때가 있다.


해결방법은..

개발환경 v1.0(eclipse 3.4기반)의 경우

- Project 메뉴 선택 -> Clean... 선택 후.. 프로젝트 재빌드 수행..

- 프로젝트 선택 -> context menu -> Maven -> Update Project Configuration

- 프로젝트 선택 -> context menu -> Run as -> maven clean

- 프로젝트 선택 -> context menu -> Run as -> maven package 후.. 오류 확인..

- Servers view에서 tomcat 서버 삭제 후.. 재등록...



개발환경 v2.0(eclipse 3.6 기반)의 경우

- 프로젝트 선택 -> context menu -> Properites 선택

- Deployment Assembly 항목 선택 후.. Add.. 선택

- Java Build Path Entries 선택 .. -> Maven Dependencies 선택...


728x90
728x90

MySQL과 큐브리드는 생각보다 많이 비슷하고도 많이 다르다.


이번에 MySQL로 쓰고있던 것을 큐브리드로 갈아타는 작업이 생겼는데,

작업을 하며 검색했던 차이점을 나중에 또 찾는 수고스러운 작업을 피하기 위해 여기에 메모해둔다.


아직은 찾은 종류가 많진 않은데 작업하면서 계속 추가할 예정이다.



1. MySQL에서 형변환 시 

CAST(TEMP_COL AS CHAR) 에서 CAST(TEMP_COL AS CHAR(2)) 으로 변경했다.

CHAR에 범위가 들어가 있지 않아서 에러가 난듯했다.

* 근데  SELECT CAST('F' AS CHAR) FROM DB_ROOT; 를 하면 에러는 안나는데... 

  여하튼 CHAR에서 CHAR(범위)로 바꾼뒤 쿼리는 정삭적으로 실행되었다.



2. 예약어 쓰기

MySQL에서는 YEAR, MONTH, DAY를 쌍따옴표를 쓰지 않고도 알리아스로 쓸 수 있다.

하지만 큐브리드에서는 예약어를 쓸때 꼭 쌍따옴표로 감싸줘야 한다.


MySQL : SELECT '2016' AS YEAR FROM DUAL;

cubrid : SELECT '2016' AS "YEAR" FROM DB_ROOT;

* 물론 예약어는 되도록 쓰지않는것이 좋을것 같다.



3. SYSDATE 사용

MySQL에서는 현재날짜를 사용할때 NOW() 또는 SYSDATE()를 이용한다.

큐브리드에서는 각각 NOW()와 SYSDATE로 써야한다.


MySQL : SELECT SYSDATE(), NOW() FROM DUAL;

cubrid : SELECT SYSDATE, NOW() FROM DB_ROOT;



4. REPLACE사용

MySQL에서는 REPLACE함수를 사용할때 인자를 홑따옴표로 감싸도 되고 쌍따옴표로 감싸도 된다.

SELECT REPLACE('2016-09-07','-','') FROM DUAL;     -- OK

SELECT REPLACE("2016-09-07","-","") FROM DUAL;  -- OK


하지만 큐브리드에서는 홑따옴표로 감싸야만 한다.

SELECT REPLACE('2016-09-07','-','') FROM DB_ROOT;        -- OK

SELECT REPLACE("2016-09-07","-","") FROM DB_ROOT;     -- ERROR



5. 날짜연산

잘못된 구문이긴 한데 기존에 Mysql에서

SELECT DATE('2016-09-07')-DATE('2016-09-01') FROM DUAL;

같은 구문을 쓰고 있는게 있었다.

(두 날짜의 차이를 구하는 올바른 함수는 DATEDIFF(날짜1, 날짜2)이다.)


위의 구문을 돌리면 결과값으로 6이 나온다.

왜냐, 20160907이라는 숫자값에서 20160901이라는 숫자값을 빼기 때문이다.

SELECT DATE('2016-09-07')-DATE('2015-09-01') FROM DUAL;

위의 쿼리를 돌리면?

결과값으로 10006이 나온다. 20160907 - 20150901 로 계산하기 때문이다.


암튼, MqSQL에서는 이런식으로도 쿼리 실행이 가능한데 큐브리드에서는 안된다.

큐브리드에서 두 날짜의 차이를 비교하려면 DATEDIFF함수를 써야한다.

SELECT DATEDIFF(DATE('2016-09-07'),DATE('2016-09-01')) FROM DB_ROOT;       -- OK


오늘 날짜랑 비교하려면 

SELECT DATEDIFF(DATE(SYSDATE),DATE('2016-09-01')) FROM DB_ROOT;           -- OK

이렇게 쓰면 된다.



6. MySQL의 varbinary에서 큐브리드의 BIT VARYING으로

간혹, MySQL에서 데이터 컬럼 중에 varbinary타입을 쓰는 경우가 있다.

이경우 큐브리드에서는 BIT VARYING타입을 써야하는데,

이때 where절에서 조회하는 방법이 바뀔 수 있다.


varbinary타입이 내가 많이 쓰는 쪽은 아니라서 맞는진 모르겠지만

기존에 구문이

SELECT COL1 FROM TEMP_TBL WHERE COL1 = '1';   -- (COL1이 varbinary타입일경우) ( 결과 : 31 )

위처럼 쓰여지고 있었다.

재미있는건 해당 컬럼에 insert를 할때 그 데이터가 hex(16진수)화 되어서 들어가는데 where절에서 조건을 1로 줘서 조회를 하면

결과는 1이 hex화된 31이 나온다.


이런 상황에서 큐브리드로 갈아타려면

insert할때는 들어가는 값을 hex함수로 감싸서 넣어주어야 하고

select할때는 where 절에서는 "CAST(OTHBC_YN AS VARCHAR) = hex('1')" 과 같이 varchar로 cast한 컬럼값과 hex화된 데이터 값을 비교하도록 변경하여야 한다. 

입력 : INSERT INTO TEMP_TBL ( COL1 ) VALUES ( HEX('1') );

조회 : SELECT COL1 FROM TEMP_TBL WHERE CAST(COL1 AS VARCHAR) = hex('1')



728x90

'개발 > DB' 카테고리의 다른 글

[오라클] LEFT OUTER JOIN과 LEFT JOIN의 차이점  (3) 2016.09.08
728x90


없다.



결론부터 말하면 LEFT OUTER JOIN과 LEFT JOIN의 결과는 같다.


LEFT OUTER JOIN을 줄여쓰면 LEFT JOIN이 된다.



또,

INNER JOIN을 줄여쓰면 그냥 JOIN이 된다.



나는 헷갈려서 그냥 OUTER, INNER를 명시적으로 써주는 편인데

같이 개발하시는 다른분들이 다 줄여쓰셔서 다 바꿨다..



구글링 해보면 이것저것 많이들 나온다.


아래는 내가 구글링 했던 블로그이다.

참고하시길...

http://egloos.zum.com/sweeper/v/3002220 <- OUTER JOIN

http://egloos.zum.com/sweeper/v/3002133 <- INNER JOIN

728x90

'개발 > DB' 카테고리의 다른 글

MySQL에서 CUBRID로 바꿀때 변경했던 것들  (0) 2016.09.20
728x90

이런저런 프로젝트를 진행하다보면 특정 기능에대해 지정된 제이쿼리 플러그인을 써야할때가 많다.

이번에 들어가게 될 프로젝트에서 달력 플러그인으로 'Full Calendar'가 지정되었다.

해서 내용이나 한번 훑을겸 해서 블로그에 남겨놓는다.


일단 뭐 디자인같은 경우도 깔쌈하게 잘 되어있는것 같고,

지원 기능들도 문서화가 잘 되어있는것 같아 사용하기에는 정말 편한것 같다.



월별



주별



일별


일정 목록



위 사진을 보면 알겟지만 사용자입장에서 월별, 주별, 일별, 일정목록을 볼 수 있도록 기능이 잘 되어있다.



플러그인 다운 및 자세한 내용은 https://fullcalendar.io/ <- 에서 확인 가능하다.


728x90

'개발 > Script' 카테고리의 다른 글

[JQuery 플러그인] 룰렛 플러그인 Winwheel.js  (0) 2016.09.08
728x90

룰렛을 쉽게 만들어 주는 제이쿼리 모듈이 있다.


Winwheel.js이라는 모듈인데 문서화가 잘 정리되어 있어서 사용하기에 편리했던것 같다.






룰렛 개발을 진행하면서 건드려보았던 몇몇 기능들을 대충 나열해보자면

- 룰렛 항목 지정

- 룰렛 항목 넣었다 빼기

- 테두리 색 지정

- 글자색 지정

- 배경색 지정

- 스탑기능

- 룰렛 이미지 지정 기능

- 특정 항목에서 멈추도록 하는 기능

등등이 있었다..ㅋㅋ



http://dougtesting.net/ <- 으로 들어가서 확인이 가능하다.

728x90

'개발 > Script' 카테고리의 다른 글

[JQuery 플러그인] 달력 플러그인 Full Calendar  (0) 2016.09.08
728x90

CI라는 것이 있다.

Continuous Intergration의 약자로써 직역하면 지속적인 통합이라는 뜻이다.



위의 그림을 보면, (디자이너들이 보면 암걸리는 이미지...)

여러명의 개발자들이 SVN을 이용하여 버전관리를 하고 있고(1), 

최종적으로 개발이 완료된 프로젝트 소스를 FTP를 이용하여 서버에 업로드를 하고(2),

웹서버를 재구동 하여(3) 테스트를 진행한다.

이 일련의 작업들은 손이 많이 가는 작업이 아닐 수 없다.


예전에 K모 회사에서 저 일련의 작업들을 내가 도맡아서 진행을 한 적이 있었는데,

일단 프로젝트 끝나고 운영서버에 소스들 반영하는 날에는 야근확정이었다.

(그래서 프로젝트 작업 끝났다고 하면 겁나 싫어했다..ㅋㅋㅋ)


그런데 저런 일련의 작업들을 모두 프로그램화 한것이 바로 CI다.

주기적으로 SVN체크를 하는 작업이나, SVN에 올라온 소스들을 서버에 올리고, 그 서버의 was를 재가동 시키는것도 가능하다.

CI툴로 유명한것으로는 Hudson, Jenkins 등등이 있는데 검색해보니

Jenkins가 Hudson제작진들이 나와서 새로 만든 툴 이라고 한다. (더 좋다고 한다.)


하여 Jenkins에 대해 짤막하게 나마 메모한다.

일단 Jenkins를 구축하기 위해서는 

1. 형상 관리 시스템이 있어야 한다.(SVN이나 Git)

2. 자동으로 빌드할 수 있는 무언가를 하여야 한다.(Maven, Ant)

3. 배포 전략도 고민하면 좋다고 한다.(빌드 후 테스트웹서버로 올린다 라던가..)

이어야 한다고 한다.



설치방법 및 사용법등은 하단의 도움이 된 사이트들을 참고한다..



도움이 된 사이트들

http://happystory.tistory.com/89

http://younghooni.tistory.com/entry/CI-System-Jenkins-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

http://gold9ine.tistory.com/entry/Jenkins-%EC%A0%A0%ED%82%A8%EC%8A%A4-%EC%84%A4%EC%B9%98

http://kimseunghyun76.tistory.com/353

http://lng1982.tistory.com/132

728x90

+ Recent posts