본문 바로가기

전체 글357

[도서] 무던한 개발자를 위한 모던한 자바스크립트 무던한 개발자를 위한 모던한 자바스크립트 요즘 들어 자바스크립트가 생각보다 어렵다는 생각이 많이 든다. 최근의 자바스크립트 코드는 ES6 이후로는 내가 알던 그 자바스크립트가 맞나 싶을 정도 이다 그만큼 자바 스크립트도 많이 발전을 했고 시대의 트랜드에 맞는 다양한 기능들로 무장하기 시작했다. 일전에 살펴 보았던 "모던자바스크립트"가 초심자를 위한 내용이라면 이 책("무던한 개발자를 위한 모던한 자바스크립트")는 조금더 한 단계 나아간 개발자들을 위한 책이라고 생각된다. 이 책의 저자는 "카이 호스트만" 이다! 자바 개발자라면 익숙한 이름일 것이다. 많은 자바 개발자들이 그의 책으로 공부를 했었것이고 나 역시 그가 쓴 자바책으로 공부를 했었다. 그래서 저자 이름을 보고 더욱 기대를 했던것 같다. 그리고 .. 2022. 2. 21.
[도서] 모던자바스크립트 핵심 가이드 모던자바스크립트 핵심 가이드 프로그램 관련 직군에는 여러 영역이 있다. 웹 개발자도 그 직군중 하나이며, 다시 또 세부 영역으로 구분을 할 수 있다. 그 수 많은 세부 직군중 대표적인 영역이 프론트엔드와 백엔드 개발자 이다. 과거 우리나라에 닷컴버블이 한창 끼어있던 시절에는 이런 구분자체가 거의 없었고 한명의 개발자가 서버와 화면을 동시에 모두 개발해 내고 있었다. 현재는 많이 기술도 많이 발전해서 그 당시와 복잡도가 비교도 안되어 혼자서 모든 영역을 감당하기도 힘들지만 고객의 인식 변화나 요구사항도 그 시절과는 다르게 많이 변해 각자 자신의 영역에서만 활동 하는 경우가 많다. 하지만 아직도 많은 곳에서 한명의 개발자가 종합선물세트 마냥 모든 것을 해결해 주기를 원하기도 한다. 특히... 오래된 사이트(.. 2021. 12. 26.
[도서] 소프트웨어 스펙의 모든것 소프트웨어 스펙의 모든것 어느정도 개발 경력이 쌓이다 보니 좋든 싫든 관리자의 영역에 들어서게 된다. 난 머리가 백발이 될때까지 개발을 하고 싶지만 이제 어느 프로젝트를 가든지 많든 적든 어느 정도 관리자급의 업무를 요청 받는다. 현재 진행중인 이 프로젝트도 마찬가지다. (계약은 개발자로 했는데....) 내 의지와는 상관없이 년차와 등급 때문에 은근슬쩍 관리 업무를 떠앉게 된다. 그중에서 내가 가장 힘들어 하는 부분이 문서작성/관리 부분이다. 그리고 이 부분 때문에 프로젝트 진행 시 가장 많은 스트레스를 받고 있고, 어려워 하고 있는 부분이다. 그때 눈에 띄 책이 "소프트웨어 스펙의 모든것" 이었다. 지금 상황과 너무 딱 들어 맞는 내용! 현재 상황 때문인지 책을 집중에서 읽을 수 있었던거 같다. 문서가.. 2021. 11. 9.
[도서] 실리콘 밸리 리더십 실리콘 밸리 리더십 개발자들이 꼭 일해보고 싶은 회사 들이 있다. 구글, 아마존, 애플, 페이스북 등등.. 대부분의 그런 회사들은 미국에 있고 작게 시작하여 최고의 회사가 되었다. 저자 마이클 롭은 애플, 볼랜드, 넷스케이프, 핀터레스트 등 굵직한 IT기업에서 리더로 활동했고 그 경험을 이 책으로 엮어 냈다. 이 책은 크게 3가지 장으로 구분된다. 관리자로서, 임원으로서, 경영자로서 모두 역활이 다른 것이다. 롭이 들려주는 소중한 경험담은 현재 나의 일하는 방식이 어떤지 되 돌아볼 기회를 주었고 어떤 부분을 고쳐야 할지 다시 생각해 볼 수 있게 해주었다. 그리고 나의 상사, 또는 나의 고용주가 어떤 고민을 하고 있고 어떻게 해야 내가 그 들을 도와줄 수 있는지 조금은 알 수 있는 기회가 된것 같다. 난 .. 2021. 8. 22.
[JAVA] Util 클래스에서 세션 사용하기 직무에 따른 권한을 설정하기 위해 새로운 권한 설정 룰을 만들어야 할 상황이 발생했다. 일단 방향은 세션을 이용하되 직무에 따른 권한을 체크하기 위한 Util 클래스를 하나 신규를 생성하기로 했다. 문제는 util 클래스와 같은 contoller 이외의 클래스에서 세션값에 접근 할 수 있어야 한다는 것이다. 권한 체크 함수에 세션값을 넘기면 좋기는 하겠지만 controller 이외의 클래스에스 세션값을 확인 하기도 어렵기도 하지만 일일이 세션값을 확인해서 넘기는 작업은 번거롭고, 간편하지도 않으며, 그다지 좋아 보이지 않는다. (값을 확인 할 수 있으면 그 자리에서 처리하는게 낫지 않을까?) 이때 사용할 수 있는 방법이 RequestContextHolder와 ServletRequestAttributes를.. 2021. 8. 2.
[DB] 한 컬럼에 여러개의 결과 표현하기 쿼리 결과가 여러 줄인 데이터가 있다. 그런데 그중 한 컬럼의 내용반 다르고, 다른 컬럼의 결과는 똑같다. 그래서 내용이 다른 그 한 컬럼의 내용을 한 번에 받고 싶다. 이럴때 사용 할 수 있는 방법이 - oracle : LISTAGG(컬럼명 구분자) - mysql : GROUP_CONCAT(컬럼명 SEPARATOR 구분자) 함수를 이용하는 것이다. 두 함수 모두 지정 가능한 문자, 기호 등을 구분자로 하여 여려 행의 내용을 한 컬럼에 표기해 준다. oracle SELECT USER_ID, LISTAGG(USER_TASK, ',') WITHIN GROUP (ORDER BY USER_ID) AS USER_TASK FROM USER_TASK WHERE .... GROUP BY USER_ID 묶어야할 대상은 .. 2021. 7. 28.
[DB] WITH AS 문 사용하기 쿼리를 작성할때 과도한 서브 쿼리는 메인 쿼리의 더욱 복작하게 만든다. 이럴때 WITH AS 구문을 사용하면 그나마 복잡한 부분의 쿼리를 분리해 낼 수 있을 뿐만 아니라 반복적으로 쓰이는 서브 쿼리라면 성능의 향상을 덤으로 얻을 수 있다. 방법은 간단하다. 메인 쿼리 위에 WITH AS 구문을 사용해 서브 쿼리를 옮겨 놓는 것이다. WITH 이름 AS ( SELECT ... FROM ... WHERE ... ) SELECT .... FROM 이름 WHERE .... 서브쿼리가 여러개라 하더라도 걱정할 필요 없다. 각 서브쿼리를 , 로 구분하여 추가해 주면 된다. WITH 이름1 AS ( SELECT 문 ), 이름2 AS ( SELECT 문 ) SELECT ... FROM 이름1 LEFT OUTER JOI.. 2021. 7. 28.
[도서] 유닉스의 탄생 유닉스의 탄생 인류의 역사를 이야기 할때, 인간의 조상이 어떤 존재인지 빠지지 않고 이야기 하듯 컴퓨터의 발전사를 이야기 하기 위해서 빼놓을 수 없는 주제중 하나가 운영체제 일 것이다. 현 인류의 조상이 '호모 사피엔스' 라는 사실은 모두가 알고 있다. 그렇다면 현재 사용되고 있는 수 많은 컴퓨터들의 운영체제. 즉, 안드로이드나 맥OS(iOS)의 공통 조상도 있을까?(윈도우즈 빼고..) 있다. '유닉스' 라는 운영체제 이다. 오늘은 이 유닉스에 대해 다룬책 '유닉스의 탄생'에 대해 리뷰해 보려고 한다. 데니스 리치를 추모하며 이 책은 데니스 리치를 추모하는 글로 시작한다. 데니스 리치는 유닉스 초창기의 핵심 개발자 였고, C언어의 창시자 이다. (사실 이 책을 읽을때 까지만 해도 데니스 리치가 유닉스 개.. 2021. 7. 19.
[도서] 김상형의 SQL 정복 김상형의 SQL 정복 어떤 언어나 기술을 공부 할때 난 여러 가지 책과 포스팅을 모두 찾아 서로 비교해 가면서 공부를 한다. 그리고 시간이 지나면 똑같은 방법으로 이전에 공부했던 책이 아닌 다른 책으로 비슷하게 또 다시 흝어 본다. 이번에 DB에 대해 다시 공부할 필요를 느끼고 있었는데 때마침 한빛미디어에서 '김상형의 SQL정복'을 리뷰할 책으로 보내 주었다. 정말 타이밍도 기가 막히다는 생각이 든다. 그리고 운이 매우 좋았다. 이 책의 주 타겟은 아마도 개발 공부를 막 시작했거나 좀더 나은 개발자가 되기 위해 더 많이 공부를 하고 싶어 하는 초보 개발자들일 것이다. 그렇다면 매우 적절한 책을 선택하지 않았나 싶다. 책의 표지에도 써있는 것처럼 이 책에서는 책을 쓰는 시점을 기준으로 3가지 메이저 DB를.. 2021. 6. 20.
[JAVA] 문자열에서 숫자만 남기고 제거하기 (replaceAll) 지난번과 비슷한 일이 벌어졌다. 이번에는 날짜형식으로 된 8자리 데이터를 보내와야 하는데 싹다 무시하고 '0000-00-00' 형식으로 데이터가 날아왔다. 지난번에 작성한 특정 문자열을 제거하는 것으로는 해결이 되지 않는 문제다. 사실 지난번 문제보다 더 간단하다. 숫자만 빼고 모든 문자를 없애버리면 되기 때문이다. 따라서 문자열 메서드 중 replaceAll 을 사용하면 된다. 데이터가 '0000-00-00' 식으로 날아 왔기 때문에 단순히 str.replaceAll("-",""); str.replaceAll("-",""); 식으로 처리해 줘도 되겠지만 또 어떤 형식으로 날아 올지 알 수 없기 때문에 숫자 이외의 문자는 모두 제거 하기로 한다. 따라서 이번에도 정규식을 사용하기로 한다. str.repl.. 2021. 6. 16.
[JAVA] 문자열에 특정 문자가 있는지 확인(matches 이용하기) 다른 기관과 연계 업무를 하던 중 타 기관에서 보내온 파일에 문제가 있어 잘 동작하던 배치에 문제가 생겼다. 정확히 배치 자체의 문제라기 보다는 애초에 서로 약속된 레이아웃으로 데이터를 보내주지 않은 타기관의 문제이었지만 그 레이아웃 정의서만 믿고 예외 상황을 처리하지 않은 배치도 문제라면 문제다. 문제는 간단했다. 원래 '횟수' 로 넘어와야 할 데이터에 숫자 이외의 문자가 끼어 들었다는 것이다. '횟수'라는 이름에서 알 수 있듯이 해당 데이터는 숫자로만 구성된 문자열이다. 따라서 숫자 이외에 문자가 들어 있다면 예외를 발생시키거나 다른 동작을 시켜 주면 된다. 타기관에서 넘어오는 데이터는 텍스트 파일로 되어 있어 읽어 들이는 모든 데이터는 String 타입이다. String 에서 써먹을 수 있는 방법은.. 2021. 6. 9.
[JAVA] 한글이 포함된 문자열 자르기 java 에서 문자열을 자를때 일반적으로 subString 을 사용하는데 알아 두워야 할 점은 subString로는 한글 문자열을 자를 수 없다는 것이다. 정확히는 1바이트만 구성된 문자들(숫자, 영문자 등)의 문자열만 자를 수 있다고 보는게 맞다. 그럼 한글은 어떻게 자르나? 원리는 간단하다. 문자열을 바이트형으로 변환한 뒤 각 글자의 길이를 계산하여 처리하면 되는 것이다. 한글은 2바이트 문자이므로 문자열을 하나하나 반복하다가 해당 문자열이 1바이트 문자인지 2바이트 문자인지 확인 후 잘라 주는 것이다. 이때 주의할 점이라면 자르고자 하는 위치가 2바이트 문자열에 위치해 있다면 1바이트 앞으로 끊어서 읽어주면 된다. 간단한 내용이니 코드를 바로 보자. private String subStrBytes(.. 2021. 5. 13.