개발을 하다보면 가끔 ClassNotFoundException를 만날수 있는데 어떤 상황에서 ClassNotFoundException가 발생하는지 정리해보기로 하자. 1) ClassNotFoundException 원인 동적으로 클래스를 문자열로 로딩을 시도하다가 클래스가 없는 경우 발생. 1) Class.forName( String className ) 2) ClassLoader.loadClass( String className ) 외에 String으로 클래스를 찾는 여러 메소드들... 크게 이 두가지 클래스를 사용하는 경우에 발생한다. 요즘에는 프레임워크나 라이브러리 사용으로 Class.forName을 많이 사용하지는 않겠지만 옛날에는 JDBC를 직접적으로 연결할 때 Class.forName으로 JDB..
오늘은 노트북 거치대 추천 비교 를 해보려고 한다. 나같은 경우 과거 허리와 목디스크를 둘다 경험했었고 현재도 진행형이다. ㅠㅠ 그럼에도 프로그래밍 개발을 하는 직업적으로나 또 취미적으로나 컴퓨터를 많이 하기 때문에 노트북을 최근 마련한 이후 누워서 노트북을 하려는 욕구가 매우 강해 누워서 할 수 있는 스탠드 제품들을 검색, 알아봤고 이중 노트북 기울기 각도가 가장 좋은 베드 트레이드 형태의 스탠드(거치대)를 구매하기로 마음 먹었다. 허리와 목이 많이 아파 집에서만큼은 누워서 하고 싶었기 때문이다. 나 뿐만 아니라 책상이 아니라 소파 혹은 침대 등에서 컴퓨터를 하는 사람은 이런 아이템 하나쯤은 구비해야하지 않겠냐하는 생각도 있다. 요즘도 허리가 안좋아서 병원을 다니고 있는데 척추의 건강에 있어서 시작도 ..
얼마 전 업무를 하다 java.lang.NoClassDefFoundError 를 만났는데 상당수 ClassNotFoundException와 헷갈리는 부분이 있을 것 같다. 과거에도 이 에러를 많이 만났지만 그때마다 어찌저찌 해결만 했을 뿐 명확히 포스팅으로 정리해본적이 없어서 정리를 해본다. 1. 원인 java.lang.NoClassDefFoundError가 발생하는 이유는 컴파일 환경에서는 클래스 참조가 되었지만 실행 환경에서는 해당 클래스를 찾을수 없는 경우 발생한다. 그래서 코딩을 할때는 아무 문제가 없다가 spring boot나 was로 실행 시킬 때 만나거나, PC에서 개발 할때는 아무 문제가 없다가 서버에 올렸을 때 만나게 된다. 재연을 해보고 싶다면 클래스 두개를 만들어 하나에 종속되게 만들..
오늘은 http https 차이에 대해서 알아보자. IT쪽 일을 하다보면 http https에 대해서 대충 보안이 된다라고만 애매하게 이해하고 넘어가는 경우가 많다. 아마 이쪽 일을 계속 한다면 평생 기본으로 깔아야할 지식에 속하므로 http https 차이에 대해서 확실하게 이해하고 넘어가보자. http https 차이를 이해하기 위해서는 먼저 http에 대해서 알아야 한다. (당연한 소릴...) http란 HyperText Transfer Protocol의 약자다. HyperText(하이퍼텍스트)는 링크가 걸려있는 텍스트를 생각하면 되고 ( 이렇게 링크가 걸린것 ) 이를 넷상에서 전송하는 프로토콜이 http 되시겠다. 조금 더 쉽게 생각한다면 http는 텍스트 통신이다. 브라우저에 텍스트 주소를 치면..
드라마 열혈사제가 '19년 4월 20일 40부로 마무리 되었다. 전 특수부대 출신의 신부(김남길 역)가 자신을 거둬준 신부의 피살사건을 직접 수사하는 과정을 그린 드라마다. 인생 드라마 선덕여왕 이후 뭔가 어울리는 역할을 만나지 못하는 느낌이었는데 이번 신부복이 어울리는 것 마냥 아주 맞춤 역할을 맡았다. 마치 선덕여왕에 비담이 다시 돌아온듯한 느낌이었다. 극 중 출연 인물을 한명씩 알아보자. 주연 김남길. 비담이 사제로 다시 돌아왔다. 그 모습이 어디갔을까 했는데 다시 그때 그 모습이다. 김남길은 184cm의 쭉쭉 벋은 키와 팔,다리의 액션이 아주 멋진 배우다. 이렇게 사제복이 어울릴줄이야... 한국의 키아누 리브스 같다. 남자가 봐도 멋지니 여자가 보면 어떨까... 다른 조연들도 아주 매력적이다. 천..
오늘도 출근한 뒤 브라우저를 켜서 잠시 우두커니 보는데 평소에 www.naver.com로 보였던 주소창이 naver.com으로 보이는 거다... 언제부터 이랬지? 왜 변경됐지? www.naver.com을 입력해봐도 주소창에는 여전히 naver.com으로만 보인다. 이상해서 F12(개발자도구)를 누르고 실제로 통신하는쪽을 봤더니 www.naver.com 으로 되고 있었다. ( 뭐... 뭐지? ) 잠시 후에 무심코 주소창을 더블 클릭해보니... 표현이 생략된거였다. 분명 얼마 전까지만 해도 www가 보였었던거 같은 느낌적인 느낌인데 갑자기 안보이니까... 이렇게 생략이 되면 우리같은 웹 개발하는 사람들한테는 영향이 있긴 있으니까... 찾아봤다. 주소창이 제대로 보이지 않는다는건 개발자한테는 확실히 오해의 소..
최근 운영 중인 안드로이드 앱에서 간헐적으로 특정 기능들이 동작이 안되는 증상에 대한 문의가 있어서 증상을 확인해보니 웹뷰에서 서버통신을 할때 사용하는 xhr에서 cors 에러가 발생하고 있었다. 처음에는 상황을 전혀 이해할 수가 없었다. 최근 앱을 업데이트 한 적도 없었는데 모바일 웹과 같은 통신 방식을 사용하는데에 앱에서만 CORS가 발생하니 환장할 노릇이었다. 여러가지 테스트를 해보다가 알게된 사실인데 안드로이드 폰을 재시작하거나 앱을 강제종료하고 시작하면 정상적으로 동작이 된다는 사실이었다. 여기에 대해 여러가지 해석을 했다. 1. 특정 기종 따른 것? - 처음에는 갤럭시 기종에 대해 여러가지 신고가 들어와서 확인해보니 OS도 다양하고 기종도 다양했다. 이 경우는 제외. 2. 코르도바를 사용하는 ..
알기 쉽게 설명하려고 하는 스위치의 종류와 차이점에 대해서 포스팅을 해보도록 합시다. 우선 여기서 말하는 스위치는 네트워크 스위치를 말합니다. 네트워크 스위치의 사전적 의미부터 알아봅시다. 위키에 따르면 네트워크 스위치(network switch)는 처리 가능한 패킷의 숫자가 큰 것으로, 네트워크 단위 들을 연결하는 통신 장비로서 소규모 통신을 위한 허브보다 전송 속도가 개선된 것이다. 간단히 스위치라고 부르는 경우가 많으며, MAC 브리지, 스위칭 허브(switching hub), 포트 스위칭 허브(port switching hub)라고도 한다. 와... 무슨 말이지 이게... 어려운 말은 됐고요. 간단하게 생각합시다. 우리가 볼 때는 인터넷을 할 수 있는 랜선 있잖아요? 그거 여러개 꽂을 수 있는거...
자바 8이 나온지 언 5년 정도가 지났다. 지금은 자바 12버전까지 나와있으니(현재 19년 8월 5일) 현재 업무로 사용하는 메이저 버전은 자바 6이다. 물론 7도 있고, 일부 8도 있긴 하지만 메이저 사용 버전은 6이다. 아마도 조만간 메이저 버전이 업데이트 될거다. 차세대 시스템을 하게 될테니 말이다. ( 뭐, 그게 아니더라도 ... ) 사실 자바 버전업에 대해서 무관심했다. 큰 변화가 아니라고 생각했고, 사용할 때가 되어서 익히면 된다라는 생각이 있으니까. 대충 맞는 생각이라 본다. 미리 익히는 기술은 어차피 깊이가 낮고 poc 수준 이상이 될수도 없을 뿐더러 시간이 지나면 완전히 잊혀질 가능성이 높기에... 내용에 대한 설명보다는 느낀 후기에 대해서 정리해본다. 일반 책의 대부분의 내용에서는 기존..
오늘 웹 서핑을 하다가 웹 개발자 로드맵 2019 버전이라는 걸 봤는데 한번쯤 보면서 생각을 정리할 필요가 있는것 같다. 이제 웹 개발자라는건 어디에서나 그 어떤 시스템을 개발하기 위해 필요한 개발자라는 건 이견이 없을 듯 하다. 로드맵을 보니 질려버릴 정도로 많은 내용들이 있었다. https://github.com/kamranahmedse/developer-roadmap kamranahmedse/developer-roadmap Roadmap to becoming a web developer in 2019. Contribute to kamranahmedse/developer-roadmap development by creating an account on GitHub. github.com 그럼에도 굳이 ..
어제인 7월 31일 고용노동부에서 재량근로제 운영 가이드를 발표했다고 한다. 고용노동부 정책자료실에 가면 운영 가이드를 다운로드 받을 수 있어 이곳에 올려두니 시간이 좀 있는 사람들은 이 가이드를 읽어보기를 추천한다. 각종 뉴스에 따르면 일본의 수출규제 대응 차원에서 기업들이 재량근로제 활용이 필요한데 규정이 불명확하다는 어려움을 겪어 이번 정부 발표가 있었다고 한다. 주요 골자는 추가적으로 적용되는 직종을 14개로 늘렸다. 가이드 내 근거법령을 읽어보자. 근로기준법 제58조(근로시간 계산의 특례) ③업무의 성질에 비추어 업무 수행 방법을 근로자의 재량에 위임할 필요가 있는 업무 로서 대통령령으로 정하는 업무는 사용자가 근로자대표와 서면 합의로 정한 시간을 근로한 것으로 본다. 이 경우 그 서면 합의에는..
오늘 큰 사건이 터졌다. 바로 SKT가 스타벅스 쿠폰과 여러 추첨 상품을 미끼로 깃헙 별을 돈주고 산 것이다. 상세내용이 보고 싶다면 아래 링크를 따라가면 확인할 수 있다. 문제의 SKT 깃헙 스타 이벤트 링크 http://web.archive.org/web/20190729114458/http://b2b.tworld.co.kr/bizts/special/eventMetatron.bs SKT metatron GitHub Star 이벤트 metatron discovery GitHub Star 이벤트 참여하고 시원한 여름을 선물받자! 이벤트 응모만 해도 선착순 500분께 스타벅스 기프티콘의 행운을 드립니다. 또 추첨을 통해 백화점 상품권, 영화예매권 등 푸짐한 추가 경품의 행운도 놓치지마세요! web.archi..
이번에 별도 시스템을 개발하면서 다른 도메인으로 파일을 업로드 하는 서비스를 개발했다. 파일을 업로드 해야하기에 jsonp 방식을 이용하지 않고 multipart 방식의 업로드를 해서 CORS 처리를 받는 시스템쪽 헤더에 추가했다. 지금 생각해보니 jsonp로도 파일을 올릴수 있을거 같은데... 암튼 Access-Control-Allow-Origin: * 이렇게 검색하면 비슷한 자료가 많이 나올텐데 개발할 당시에는 아무 문제 없이 테스트가 되었고 서비스도 오픈을 했는데 동작이 안되는거다. 알고보니 특정 조건이 맞지 않는 경우 cors 처리 시에 예비요청(pre-flight)이라는 options 방식으로 request 이후에 다시 정상 request를 날린다고 한다. 즉 Cross-origin HTTP(s..
필자는 vue를 github.io 페이지에서 스태틱 페이지를 올리는데 사용하고 있다. github.io에서 vue-router를 이용하기 안좋은 점은 웹서버의 설정을 컨트롤 할수가 없어서 다이렉트 url을 사용할수가 없다는데 있다. `/sub/#util1` 처럼 서브경로를 활용하기에 웹서버 설정이 필수라는것 같은데... github.io를 예제나 페이지 단위 별로 url을 이용할수 없다는게 마음에 들지 않아 ( 잘 찾다보면 우회할 방안이 있을지도 모르겠다. ) vue-router 사용할 생각을 접어버리고 popstate 이벤트를 통해 컨트롤 하도록 코딩을 했다. 아래 인덱스 파일을 참고하면 된다. https://github.com/nhj7/nhj7.github.io/blob/master/index.htm..
일전에 bitbucket에 있던 저장소를 github에 옮기기 위해 자료를 검색해보고 이곳에 남긴다. 우선 방법은 github에 잘 소개되어있다. https://help.github.com/en/articles/duplicating-a-repository Duplicating a repository - GitHub Help Duplicating a repository Mac Windows Linux All To duplicate a repository without forking it, you can run a special clone command, then mirror-push to the new repository. Before you can duplicate a repository and push..
요즘 개인 토이프로젝트에서는 github과 bitbucket을 사용하고 있다. bitbucket은 공개하기 창피한 프로그램이 올라가있는것 같지만... 조만간 github로 옮겨볼 생각이다. git 을 혼자만 사용하다 보니 체계적으로 아는 내용이 많이 부족하다. 매일 pull , push , commit 정도밖에 사용하지 않으니 다른 옵션들은 전무하게 모른다. 요즘은 vscode를 이용해서 프론트소스와 nodejs를 코딩하는데 amend와 signed off 옵션이 보여서 무엇인가 알아보고자 한다. amend(고치다, 수정하다) : 커밋 객체(commit object)를 새로 만든다. 커밋 ID가 새로 발생하며 옵션에 따라 내용이 조금 변하는 수준이다. 이전 커밋에 포함된 정보가 자동 현 커밋객체에 복사된..
오늘 오랜만에 atom 에디터를 열일이 있어서 실행했는데 열리지가 않았다. 프로그램 재설치도 여러번해봤지만 그래도 실행이 되지 않아 여러가지 원인을 찾다가 겨우 찾았다. 일단 원인은 .atom 폴더 내에 있는 config.cson 파일이었다. 해당 파일을 편집하다가 엉뚱한 내용을 넣어둔 채로 저장했던것 같다. 요즘은 애들도 내 위로 올라와서 키보드를 마구 치다가 간다. 그래서 작업중이던 에디터에도 많은 영향을 주는데 여기 아래에 'runner'라는게 들어있으니 atom이 작업관리자에서 보면 뜨긴 하는데 ui가 보여지지 않는 현상이 발생한다. 이방법으로도 안된다면 .atom 폴더를 아예 날리고 하면 되는데 그랬다간 주요 설정들이 다 날아가니 하나씩 폴더들을 날려보면서 반응을 살펴보는 것이 좋을 것 같다. ..
Java 1) Gc에 대해 달달 외울 정도. 2) 메모리 구조 달달 외우게 Kafka RabbitMQ TDD, CI, CD 애자일 블로킹, 논블로킹 JPA에서 락은? spring 토비 qos 레벨1 레벨2 카프카 웹개발자라면 브라우저 동작 방식은 알아야. 폴리글랏 프로그래밍 - 임백준 객체지향 특징및 설계 jvm(gc 튜닝) jdk8 + (람다 스트림) 스프링 thread safe jpa 쿼리튜닝 캐시(redis) git 브랜치 관리 전략 test 코드 작성 성능 테스트 대용량 처리 선점 이슈(lock - 낙관적 비관적) 기초자료구조 및 시간복잡도 알고리즘 tcp/ip http 동기 비동기 block nonblock msa 리팩토링 기존에 했던 업무 트러블슈팅 시스템 디자인. 기술 면접 대비(포프 유툽 ..