본문 바로가기
반응형

프로그래밍/Java13

자바의정석 도서 구입 과정에 대한 이야기. 어느듯 큰 아들이 성장하여 내년이면 고등학교에 입학 할 시기가 되었다. 솔직한 마음으로 인문 고등학교를 거쳐 대학을 갔으면 하는 바람이 있지만, 이 녀석의 별안간 공표?에 나는 한동안 망설였다. 마이더스 고등학교에 IT관련 과를 가 보겠다고 말하는 걸 듣고 한동안 뭐지? 라는 생각이 들었다. 왜 그랬을까? 나도 똑같은 길을 가고 있는 사람인데 자식이 그 길을 가겠다는거에 왜 낯설음이 느껴지는 걸까? 나는 좀 더 주변 사물과 이해 관계를 이해한 다음 깊이 있는 공부를 했으면 하는데 아들 녀석은 그게 아닌듯하다. 거의 2주 정도 고민을 한 것 같고, 아들이 하고 싶다고 하니, 극구 반대하고 싶지는 않았다. 하고 싶다고 하는걸 하게 하고 더욱이 내가 더 힘을 실어 줄 수 있다면 더 좋지 않겠나? 싶은 생각이 .. 2023. 7. 30.
Java List 사용자 정의 정렬 예제 @Override public int compareTo(ShowMainResBody o) { if (o.seq seq) { return -1; } return 0; } 몇 몇의 개발자가 스쳐 지나가면서 소스는많이 닳고 변해 버렸다. 따라가면서 읽기도 힘들고, 뭐가 뭔지도 모르겠고... 이걸 한땀 한땀 리팩토링을 하면서 작성자의 의도를 읽어, 정정해야하는가? 나둬야 하는가를 가지고 동료한 이야기 한 후, 그냥 두기로 했다. 리스트 형태로 결과를 내려줘야 하는 API에, 초기 설계 당시 없던 order by에 대한 다양한 요건이 들어왔고 가장 빠르게 해결할 수 있는 방법은, 그간에 어떤 일들이 있던 없던 제일 마지막에 만들어진 List형태에.. 2023. 6. 29.
Java Long 타입의 비교 에피소드? Long타입의 변수가 2개 있다. 두 값을 비교해서 같을 때 데이터베이스의 특정 컬럼의 값을 업데이트 하는 로직이다. 아주 간단한 작업이다. 로컬에서 테스트할 때 로컬 데이터베이스에 있는 Row를 가지고 테스트했을 때는 잘 되었다. 분명 값이 변경되는걸 확인했고 스웨그로 몇 번을 테스트했다. 그리고 개발 서버에 배포를 하고 프론트 개발자분들에게 API가 개발되었다고 이야기했다. 퇴근길에 안된다는 메일을 받았고 온통 왜지? 라는 물음을 가지고 있었다. 출근을 해서 소스를 열어보고 테스트를 진행했다. 클라이언트에서 테스트한 Long형 값을 가지고 개발 데이터베이스와 연결했는데, 정말 변경이 일어나지 않는다. 뭔 일이지? 하는 마음에 혹시 비교가 잘못되나 싶어 if문에 log를 남겨보았다. 역시나 서로 다르다.. 2023. 2. 2.
Java 매달, 첫번째 월요일 확인 예제 매주 월요일, 특정 정보를 수집하도록 만들어진 크롤러가 있다. 이 크롤러는 특정 사이트의 링크정보를 조합, 동적 URL을 생성하고 해당 URL로 접속했을 때 나오는 데이터를 수집하는 기능이 있다. URL을 만드는데 소요되는 시간이 약 20분정도, 이 시간을 아껴보고자 CSV파일을 이용, 동적 URL에 들어가는 파라미터 정보를 사전에 수집, 파일로 생성한 다음 실제 크롤링을 할 때 생성되어 있는 파라미터정보(CSV파일)를 읽어서 사용하도록 했다. 처음에는 상당한 시간을 단축할 수 있었다. 그런데 시간이 지나면서 조금씩 문제가 나타나기 시작했다 동적으로 생성한 URL의 파라미터 값들이 변경되는 즉, 메인 페이지의 링크정보가 변질 또는 없어지는 경우가 발생하면서 순차적인 리스팅 크롤링이 되지 않는 현상이 나타.. 2020. 6. 29.
Java Calendar를 이용한 두 날짜의 차이 계산 Java Calendar를 이용한 두 날짜의 차이 계산 특정일자를 설정하고 현재 시간에서 몇분이 남았는지 계산하는 코드가 필요했다. 타겟이 되는 날짜를 2019년 5월 16일 0시 0분 0초로 설정을 하고 현재 날짜와 차이가 0보다 클 때에만 특정 업무를 수행하도록 하기 위해서 자바의 Calendar를 이용해서 계산하는 방식을 만들었다. 아주 간단하게 ^^ /** * 이벤트 오픈 여부 결정 * @return */ public boolean isEventPopupOpen(boolean force) { boolean retValue = false; if (force) return true; Calendar target = Calendar.getInstance(); target.set(2019, 4, 16, .. 2019. 5. 15.
Jsoup Elements 정렬(Comparator) Jsoup Elements 정렬(Comparator) 오늘 특정 페이지를 크롤링하다 보니 스크래핑 해야할 부분에 노드가 뒤죽박죽 섞여있어 순차적으로 파싱을 하는데 문제가 있다는걸 해가 다 떨어졌을 때 알게 되었다. 헉, 다시 다 짜야하는건가? 하고 고민을 잠시 하다, 스크래핑 시작 전에 Elements로 반환된 Nodes를 정렬을 해서 항목 노드의 이름이 같은것끼리 모아야겠다는 생각을 하게되었고 인터넷에 찾아 보니 예제가 있어서 응용해서 해보니 비교적 쉽게 정렬이 되었다. 어려운 소스는 아니지만 자바에 익숙하지 않아서 ^^ 오늘 포스팅은 짧지만 유용한 자바의 Collections.sort를 이용해서 Elements의 정렬을 바꾸는 소스 코드다. Elements nodes = doc.select("#tab.. 2019. 1. 30.
반응형