초보자의 입장에서 ClassCastException이 발생하는 경우와 에러 해결 방법을 알아보자. Exception을 만났을 때 참고하기 가장 좋은 자료는 Java API 문서와 구글링을 통한 원인과 해결방법 검색이다. 먼저 API를 살펴보자. 구글에 검색할때는 "java api ClassCastException" 정도로 검색하면 된다. https://docs.oracle.com/javase/9/docs/api/java/lang/ClassCastException.html ClassCastException (Java SE 9 & JDK 9 ) docs.oracle.com API 문서를 살펴보게 되면 RuntimeException을 상속받는 클래스로 나온다. RuntimeException을 상속받는 Exce..
뭔가 알수 없는 에러로 인하여 "/etc/resolv.conf: No such file or directory" 에러를 만나는 경우가 있다. 물론 DNS를 수정하기 위해서 해당 파일을 편집하려고 했는데 만난 에러였다. 구글링을 해보니 해당 심볼릭 링크가 유효한 파일이 아닌걸로 보여져서 해당 심볼릭을 삭제하고 다시 만드니 정상적으로 편집이 되었다. rm /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf root 계정이 아닌 경우 sudo를 붙여서 하면 된다. 이후에 정상적으로 apt update가 수행되었다. 애초에 DNS를 변경을 하려고 했던 이유가 'apt update' 수행 시 아래 에러를 만났기 때문이었다. Temporary failure..
div 태그에 height를 퍼센트로 주고 싶을 때가 있다. 이때 대부분 제대로 설정이 되지 않는데 비교가 가능한 상위 태그에 height 값이 있게 만들어주면 그 아래 div 태그 또한 조정할 수 있음. 그러니까... 갑자기 쌩뚱맞게. abcd 이런식으로 height를 50%을 주더라도 적용되지 않는다. 대신... abcd 이런 식으로 상위에 크기가 표현된 태그가 제대로 있다면 내부에 있는 div에는 퍼센트로 적용이 가능하다. 대부분의 경우에 html, body 태그에 height를 100%를 주고 시작하면 처리가 가능해진다. style 태그 사이에 아래 내용을 추가해보자. 혹은 css 파일에 하단의 내용을 추가해보자. html, body{ height:100%; } 잘 처리가 되는군...
리눅스나 유닉스에서 디스크 용량을 확인할 때 DF나 DU 명령어를 사용한다. DF : 디스크의 남은 용량을 확인 df -k : 킬로바이트 단위로 현재 남은 용량을 확인 df -m : 메가바이트 단위로 남은 용량을 왁인 df -h : 보기 좋게 보여줌 df . : 현재 디렉토리가 포함된 파티션의 남은 용량을 확인 DU : 디렉토리 기준으로 사용량을 확인 du -a : 현재 디렉토리의 사용량을 파일단위 출력 du -s : 총 사용량을 확인 du -h : 보기 좋게 바꿔줌 du -sh * : 한단계 서브디렉토리 기준으로 보여준다.
오늘은 Django와 Flast를 비교해보고 장단점을 따져보도록 하겠다. 먼저 앞서 파이썬에 ㅍ도 모르는 자바 개발자가 간단하게 설치해보고 느끼는 점을 서술한 것으로 초보 기준이라고 생각하면 될듯 하다. 최근 다시 파이썬과 판다스, 형태소분석, 기타등등을 설치해서 이것저것 사용해보고 있다. 형태소 분석을 통해서 간단히 용어를 생성해주는 유틸리티를 만들었는데 내 피씨에서만 실행이 되니 좀 아쉬웠다. 그래서 아주아주 간단한 웹서비스를 통해서 내가 만든 유틸리티를 웹 서비스로 구현해보려고 했고 그래서 물망에 오른게 Django와 Flask다. 1. Django 강력한 기능이 많은 프레임워크라 할 수 있다. 굳이 자바로 비교하자면 파이썬 내에서 spring급 존재 위치를 가지고 있는 느낌이다. 기본적인 웹 개발..
안드로이드 Q(10) 부터는 더이상 '사용자가 재설정 할수 없는' 디바이스 식별자를 제공하지 않는다. 권한을 가진 앱은 READ_PRIVILEGED_PHONE_STATE 권한을 가져야 하나 Google Play 스토어에서 설치된 앱은 해당 권한을 선언할수 없다. 즉, 일반앱들은 접근이 불가하단 소리. ( 통신사 앱들 같은데서 사용할수 있다고 한다. 맞는지 잘 모르겠지만... ) 영향을 받는 것들은 아래 내용들이다. 옆에 값들은 호출을 하면 받는 값들이고. □ Build getSerial() - unknown □ TelephonyManager getImei() - null getDeviceId() - null getMeid() - null getSimSerialNumber() - null getSubscr..
최근 무료 SVN 툴인 TortoiseSVN를 사용하고 있는데 개인적으로 사용하는 폴더를 잘못 SVN 폴더로 지정되어버리는 바람에 disconnect 방법을 계속 찾았는데 나오지가 않아 방법을 찾아봤다. 1) .svn 폴더를 지운다. 일단 방법을 찾을 필요도 없이 해당 폴더 내에서 .svn 폴더를 삭제해버리니까 svn 연동이 바로 사라졌다. 2) TortoiseSVN 홈페이지에서 제공하는 어려운 방법을 이용한다. 1. 파일 탐색기에서 해당 소스 경로로 이동한다. 2. 해당 소스 폴더를 우클릭한다. 3. TortoiseSVN -> Export 를 선택한다. 4. Export 할 경로를 해당 소스 폴더와 동일(same path)하게 설정해서 Export 한다. 5. 그러면 Remove from version..
작년에 GAIQ를 취득했었는데 올해 다시 취득해야할 시간이 얼마 남지 않은듯 하다. 약 3달 남짓. GAIQ는 문제 은행식으로 제출되므로 미리 문제들을 한번씩 읽고 풀면 쉽게 풀 수 있다. 문제는 70문제이며 그 중 56문제 이상을 맞추면 통과할 수 있다. 대략 300문제 가량 되는것 같으니 이정도만 숙지해도 시험 보는데는 지장없을 것 같다. 여러 출처의 문제은행을 다시 합친거라 중복이 있을 수 있으나 정답은 같을 거다. 문제를 모으고 나름 제목에 강조, 정답에 음영을 넣는 수기 작업을 거친 노가다의 산물이다.... □ Which Reports Indicate How Traffic Arrived At A Website? Demographics Geo All Traffic Behavior □ Custom ..
요즘 플러터를 해보기 위해서 안드로이드 스튜디오를 설치하고 다시 안드로이드 에뮬레이터를 가지고 플러터를 띄워봤다. 일단 순정 안드로이드 에뮬레이터에 가속이란 가속을 다 먹여도 속도가 너무 안습이라 다른 방법을 찾아보려는데 지인분께서 지니모션을 대신 쓰면 쾌적하다는 말씀을 해주셨다. 그렇다면 응당 깔아서 써봐야한다. 지니모션을... 그러고보니 지니모션이라면 예전에 안드로이드 게임할때 돌리던 게 생각난다. 맞다. 바로 그거다. 요즘은 미뮤나 LDPlayer 등과 같은 플레이어에 밀린거 같은 바로 그녀석. 게임을 여러개 띄워서 부계정까지 띄워서 했던 그런 녀석들이었던 것 같다. 암튼 이녀석이 게임을 하기 위한 앱 플레이어가 아니라 개발쪽으로 전향을 했다니 좋은일인지 안 좋은일인건지는 모르겠지만 예전에 게임을 ..
플러터를 시작할때 만날수 있는 메세지 중 한개인것 같다. 공홈에 이런 내용들까지 표시되어있으면 얼마나 좋을까. 공홈대로 따라하면서 만나는 메세지이니만큼 같이 있으면 구글링하는 시간도 훨씬 줄여줄거니까. 공홈대로 flutter를 설정하다보면 아래의 메세지를 만나게 된다. flutter doctor - Android license status unknown. Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel beta, v1.4.9-hotfix.1, on Mac OS X 10.14.4 18E226, locale zh-Hans-CN) [!] Android toolchain - develop for Android dev..
최근 플러터를 시작해보고 있다. 역시나 공홈에 있는 대로 따라해봐도 시작부터가 쉽지 않다. 여러가지 부딪치는 문제들이 넘나 많은 것. Unable to locate a development device; please run 'flutter doctor' for information about installing additional components 세팅을 하다가 요런 메세지를 만나는 경우 'flutter doctor' 명령어를 통해서 플러터 환경을 체크해봐야 하는데 모든 조건이 클리어된 상태임에도 불구하고 저런 메세지를 만나게 된다. 구글링 끝에 만나게 된 답은 flutter config --android-sdk /path/to/android/sdk 처럼 flutter에 android sdk를 인식시켜..
최근 프로젝트에 들어가게 되어 쓸만한 무료 메신저가 있나 이래저래 검색해봤는데, 아무래도 Slack의 대안으로 손꼽히는 자체 설치형인 Mattermost가 최고인 것 같다. 나머지 클라우드형으로 손꼽히는 Rocket Chat이 있는데 이녀석은 자체 설치형이 아니라 회사에서 사용할 수가 없다. 업무용으로 이용하기 위해서는 기본적으로 자체설치형만 가능하다.( 일부 회사는 제외 ) 폐쇄망에서 이용해야하니까. 폐쇄망이란 인터넷망과는 연결을 단절시켜놓은 자체적으로만 구성된 망을 얘기한다. 말이 샜는데 그래서 이녀석을 집에서 잠깐 이용해보려고 가진 우분투 데탑에 설치해보기로 했다. 홈페이지에 접속해보니 설치할수 있는 방법에 대해서 자세히 기술되어있었는데 그중에 딱 눈에 띄는게 바로 "One-line Docker i..
요즘 Exception에 대해서 정리하는거에 재미가 들렸나보다. 오늘은 ArithmeticException에 대해서 알아보자. ArithmeticException의 원인 ArithmeticException의 원인은 단순하다. "java api ArithmeticException" 이런식으로 구글에서 검색해보자. 맨 상단에 oracle사의 javase api 문서가 나오게 된다. https://docs.oracle.com/javase/8/docs/api/?java/lang/ArithmeticException.html Java Platform SE 8 docs.oracle.com Thrown when an exceptional arithmetic condition has occurred. For exampl..
최근에 여러가지 이슈로 인하여 앱 배포주기가 미쳤다 싶을 정도로 매일매일 업데이트를 하고 있는데 요즘 부쩍 안드로이드 앱 배포 시간이 오래 걸리는 걸 느끼게 됐다. 불과 1,2달 전만 하더라도 한 30분~ 1시간 정도를 기다리면 앱이 배포 되었던 것이 요즘에는 4~5시간을 기다려야 스토어에 배포가 된다. 내 뇌피셜로는 최근에 구글이 요구했던 64bit 지원 내용과 targetSDK 버전을 올려야 하는 요구사항이 맞닥뜨려지면서 많은 앱들이 업데이트 되었을 것이고 그에 따라 수 많은 업데이트가 발생하면서 처리 시간이 늦어지는 게 아닌가 싶다. 구글측에서는 업데이트 제출 후에 최대 24시간이 걸릴수 있다고 얘기하고 있다. https://support.google.com/googleplay/android-dev..
오늘은 FileNotFoundException 에러의 원인과 해결 방법을 알아보자. 어제는 indexOutOfBound에 대해서 했고 Exception 3대장 두녀석은 포스팅을 했으니 이녀석도 정리 해야겠단 생각이 들었다. 정말 별거 없는 에러다. 이름만 봐도 에러 원인과 해결 방법을 알수 있는 놈이기도 하고 이걸 검색했다는 건 좀 더 딥한 그 무언갈 원했다는 느낌적인 느낌이 있다. ㅎㅎㅎ FileNotFoundException 원인은? java.io.FileNotFoundException로 발생하는데 말 그대로 파일을 찾을수 없는데 있다. 파일이 있는지 경로를 뒤져서 파일이 있는지 찾아보면 된다. 파일이 있어도 파일 읽기, 쓰기 권한이 없어서 발생할 수도 있으니 파일이 있다면 권한도 체크해보자. Fil..
오늘은 indexOutofBoundException를 만나는 이유와 에러 해결 방법을 알아보도록 하자. 자바로 코딩을 하는 사람들이면 늘상 만나는 Exception 중에서 3형제를 꼽는다면 꼭 안에는 들어갈법한 녀석이다. 안그런가? ㅎㅎ 얼마전인가 이 짤을 보고서는 피식 웃었던 기억이 난다. 그만큼 공감이 가는 짤이라고나 할까. indexOutofBoundException 발생하는 이유는? 저녀석이 나오는 이유는 배열이나 문자열을 접근할 때 가진 길이보다 높은 인덱스를 엑세스하려고 할때 나오는 예외다. 즉, 예를 들자면 길이가 3인 배열을 가지고 있는데 ( int[] a = new int[]{1,2,3}; ) a[0], a[1], a[2] 까지는 접근이 되지만 a[3]이상의 숫자로 접근을 시도하려고 하면..
1) 문제의 발견. 어제 브라우저에서 새창 링크를 사용할 때 새창에서 링크가 동작하지 않는 에러가 발생하는 것을 확인했다. 집에서 확인한거라서 기술적으로 왜 안되는지 정도만 분석을 했고 오늘 출근하고 나서 본격적인 확인에 들어갔다. 집에서 확인했을 때는 태그에서 target=_blank 속성을 이용했을 때 문제가 발견하는 것으로 확인이 됐다. 크롬 개발자도구에서 _blank를 삭제하니 제대로 동작이 되었고 href="javascript:moveFunc;" 와 같은 식으로 링크가 이동하도록 자바스크립트 함수가 걸려있는 페이지였다. 동적인 url 생성이 필요한 페이지라 자바스크립트로 이동 함수를 걸어두었던 것이다. 2) 링크 동작 에러의 원인 분석 이 방식이 화근이 되었다. 최근에 비슷하게 크롬 업데이트 이..
구글 애널리틱스(Analytics)란? 구글 애널리틱스를 쉽게 얘기하자면 온라인 방문자(고객) 로그 분석 솔루션이라고 명명하고 싶습니다. 각 블로그들을 운영하는 분들은 이와 유사한 기능을 보고들 있을 겁니다. 바로 네이버 블로그나 티스토리로 친다면 방문자 통계를 생각하시면 얼추 비슷한 느낌이 되겠습니다. 하지만 훨씬 상세한 데이터와 통계, 분석자료를 볼 수 있다는 점입니다. 어떤 글을 보면 웹, 모바일 로그 분석이라고 되어있는 걸 볼 수 있지만 고객이 인입될 수 있는 온라인 채널 모두라고 생각하면 되겠습니다. 그것이 PC든, 모바일이든 태블릿이든... 폼팩터와는 상관이 없다고 생각하는게 옳을 것 같다는거죠~ ㅎㅎㅎ 구글에서 애널리틱스를 검색해서 사이트의 디스크립션을 어떻게 해놨는지 한번 보겠습니다. 이 ..