Development/Language 32

[Java] 원격파일 유효여부 체크

백엔드 개발중 파일 생성스케쥴을 걸어놓는 경우가 생겼다. 해당 파일을 프론트에서 다운을 받아야 하기에, 처음에는 아래 로직으로 체크한 후 다운을 받게 구현하였다. String addr = "파일경로"; for (int idx = 0; idx < 10; idx++) { Thread.sleep(500); File f = new File(addr) if (f.exists()) { break; } } 서버에 파일이 존재하는 경우에는 별다른 문제없이 정해진 시간동안 기다면서 중간중간 체크하여 문제없이 동작하였는데, 파일이 원격에 존재하는 경우에는 항상 없는 것으로 체크하는 현상이 발견되었다. 이 문제를 아래와 같이 URLConnection을 이용하여 조치하였다. String addr = "파일주소"; for (i..

순열, 조합, 중복순열

python에서 순열, 조합등을 구현하려면 제법 귀찮게 코드를 작성하여야 한다. 그런데 찾아보니 외부 라이브러리를 통해 간단히 구현할 수 있어, 정리해보려 한다. 1. 순열(Permutaion) from itertools import permutations nums = [1, 2, 3] permute = permutations(nums, 2) print(list(permute)) [(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)] 2. 조합(Combination) from itertools import combinations nums = [1, 2, 3] combination = combinations(nums, 2) print(list(combination)) [(1,2), (..

Python 반올림 오류 해결

문제 python에서는 숫자를 올리고 내리고자 하는 경우에는 python 내장 모듈인 math 모듈을 import하여 사용할 수 있다. 그리고 반올림은 간단히 round() 를 사용하면 된다. 그런데 round() 함수의 결과가 기대와는 다르게 나오는 경우를 발견하였다. 1.5의 반올림 값은 2이고, 2.5의 반올림 값은 3이다. 지극히 당연하기에 round(1.5), round(2.5) 의 결과값을 각각 2, 3 으로 기대하고 해당 함수를 실행시켜보았다. 실행결과 round(1.5)의 결과는 예상과 같게 2가 나왔지만, round(2.5)의 결과는 예상과는 다르게 2 가 나왔다. 원인 python에서 반올림 기본설정은 반올림할 자리의 수가 5이면 반올림 할 때 앞자리의 숫자가 짝수면 내림하고 홀수면 올..

빈값 체크

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

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..

문자열 비교

단순히 문자열끼리 비교할 경우에는 "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 처리 }

숫자 List 를 문자 List 로 변환

이전에 list를 문자열로 변환하는 내용을 작성하였는데, 이 방법이 문자로 이루어진 list만 가능하였다. list가 숫자로 이루어진 경우(지난번 예시)에는, 에러가 발생하면서 멈춰버린다. 이 경우 숫자 list를 문자 list로 변환하면 해결이 가능하다. [0, 0, 0, 0] -> ["0", "0", "0", "0"] 문자_list = list(map(str, 숫자_list)) 이를 응용해서 숫자 List를 문자열로 변환할 때는 아래와 같이 할 수 있다. " ".join(list(map(str, 숫자_list)))

동적으로 테이블 row(column) 합치기

테이블을 생성하다보면 같은 내용이 나와 합쳐야 할 경우가 종종 생긴다. 데이터가 정해져 있다면, html 단에서 합쳐버리면 되지만, 동적으로 데이터가 변경되는 경우에는 이 방법으로는 곤란하다.찾아보니 아래와 같이 처리가 가능했다.$(".className").each(function () {var rows = $(".className:contains('" + $(this).text() + "')");if (rows.length > 1) {rows.eq(0).attr("rowspan", rows.length);rows.not(":eq(0)").remove();}});데이터에 따라 합쳐질 td 에 className 으로 class 를 정해놓으면, 위 function 이 실행되면서, 같은 내용의 td 가 합쳐진..