전체 글 92

[Oracle] 여러 row 하나로 합치기

주로 MySql을 사용하다 오랜만에 Oracle을 사용하니 생각보다 불편한 점이 많았다. 이전에 Oracle에서 MySql로 넘어왔을때도 그랬었는데... 그중 여러 row를 하나의 Column으로 합칠때 찾아보니 Oracle 버전마다 방법이 모두 달라 정리해보기로 했다. 테스트는 9버전대에서 진행하였고, 10 이후 버전은 테스트를 못해봤지만 동작하리라 추측한다. SELECT type , SUBSTR(XMLAgg(XMLElement(x, ',', name) ORDER BY code).Extract('//text()'), 2) name_9i , wm_concat(name) name_10g , ListAgg(name, ',') WITHIN GROUP(ORDER BY code) name_11g FROM t GR..

Development/Etc 2020.03.05

Windows10 시작프로그램 폴더 위치

윈도우 시작시 자동으로 특정 프로그램이나 특정 폴더를 열고자 하기 위해 검색하니, Win키 + R 버튼을 눌러서 열리는 폴더에 추가하면 된다고 나온다. 그러나, Wox 프로그램을 사용하고 있는터라, 위 단축키를 사용해서는 해당 폴더로 접근이 되지 않았다. 찾아보니 아래와 같이 두가지 방법이 있었다. 1. C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 2. C:\Users\[UserName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 이 중 위 단축키로는 2번 경로의 폴더가 열린다.

Development/OS 2020.02.18

git reset 으로 날린 내용 복구

개요 git 으로 소스관리를 하고 있는데, 중요한 작업(merge 등) 수행전에는 보통 stash 등을 사용해서 작업내용을 보존해놓고 작업을 진행하고 있다. 그런데 가끔씩 stash 를 까먹거나, brach merge 등으로 싹 날려먹는 경우가 있곤 했다. 작업양이 적으면야 상관없겠지만, commit 등을 잔뜩 만들어놓고 push 를 안한 상태에서 이런 일이 발생하면 아찔해진다. 해결 이런 경우 아래 명령어로 복구가 가능했다. git reflog git reset --hard 첫번째 명령어를 실행하면, 그간 수행해온 git 명령어들이 보여지며, 첫번째는 commit_id, 두번째가 commit-hash-id 이다. 이 commit-hash-id 를 통해 특정 작업 시점으로 되돌아갈 수 있다.

Development/Etc 2019.11.08

빈값 체크

Javascript 에서는 빈값을 체크하는게 사용해본 다른 언어와 약간 달랐다. 다른 언어에서는 비교할 대상의 타입에 따라 비교방식이 달라지는데, javascript는 아래와 같이 아주 간단하게 확인할 수 있었다. let value = ""; if (value) { console.log("not empty"); } else { console.log("empty"); } "" 외에도 javascript 에서 다음 값들을 모두 false로 판단한다. "", null, undefined, 0, NaN 0을 제외한 값들을 확인할 때, 유용하게 사용할 수 있을 듯 싶다.

암호화/복호화

웹개발시 암호화는 로그인 비밀번호를 암호화하곤 하여 대부분 단방향으로만 암호화를 진행했었다. 그런데 간혹 양방향으로 암호화/복호화가 필요한 경우가 있어 별도의 Class로 이를 구현하였고 정리하고자 작성한다. package com.test.xxx; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec..

Development/Etc 2019.10.21

HttpClient timeout 설정

구글에 검색하면 나오지만, 이전 버전에 자료들이 주로 나와서 현재(19.10월) 기준 동작되는 내용을 정리 int CONNECTION_TIME_OUT = 3; RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder.setConnectTimeout(CONNECTION_TIME_OUT * 1000); requestBuilder.setConnectionRequestTimeout(CONNECTION_TIME_OUT * 1000); requestBuilder.setSocketTimeout(CONNECTION_TIME_OUT * 1000); HttpClient client = HttpClientBuilder.create().setD..

네트워크 저장소 mount

Linux(ubuntu) 를 주로 서버로 사용하기에 외부 저장소를 mount할 경우가 간혹 생기곤 한다. 다음 명령어와 같이 간단하게 연결하여 사용할 수 있다. 우선 연결에 앞서 mount될 directory 를 생성한다. $ mkdir -p /home/tmp_dir 그 후 외부 저장소의 주소를 생성한 directory에 연결하면 해결 $ sudo mount IP주소:mount경로 /mount할 경로 ex) $ sudo mount 123.456.789.012:/mnt/mount_dir/data/ /home/tmp_dir/ 그런데, 이렇게 연결하면 서버가 켜져있는 동안에만 연결이 유지가 되게 된다. 서버를 내렸다 올릴 경우가 많지는 않지만, 생각보다 자주 발생하기에, 서버가 켜질 경우 자동으로 mount ..

Development/OS 2019.10.10

문자열 비교

단순히 문자열끼리 비교할 경우에는 "str1".equals("str2") 과 같이 사용할 수 있다. "str1" 의 값이 null인지 여부를 체크하여야 해서 불편한 경우에는 StringUtils.equals("str1", "str2") 를 사용하기도 한다. 여러 문자열 중 내가 원하는 문자열이 있는지 찾고자 하는 경우에는 일일이 비교해야 하는 번거로움이 있는데, 아래와 같이 문자열리스트를 사용하여 처리할 수 있다. private static final List COMPARE_LIST = new ArrayList(Arrays.asList("str1", "str2", "str3")); if (COMPARE_LIST.contains("compare_str")) { // Logic 처리 }