개인적으로 토이프로젝트를 하기위해서 사용했던 atom을 떠나보내고(아톰아 그동안 정말 잘 썼다.) vscode로 갈아탄지는 좀 되었지만 쉽사리 익숙해지지는 않는거 같다. 우선 atom보다 동작이 빠릿빠릿한 느낌이 좋다. 그리고 비주얼스튜디오를 만든 ms사의 노하우가 녹아들어간 ide인 만큼 엄청난 지지를 받고 있는 것 같다. ( 좋아요 좋아. ) 개인적인 토이 프로젝트는 스태틱한 github.io에 올리는 웹 페이지, 그리고 node.js, 자바 웹 프로젝트가 있는데 node를 실행하기 위해서 하는 방법을 해봤다. 우선 F5를 누르게 되면 디버깅 모드로 실행이 되는데 맥북 2018을 사용하는 나로서는 F5가 매우 불편하다. FN을 누른 뒤에 다시 F5를 찾아서 두번을 눌러야 하니까. 그래서 단축키를 설정..
나도 일단 nodejs에는 완전히 문외한이므로 환경 구성하는 것을 진행해보겠습니다. 목표는 기본적인 개발환경 구성인데. 쉽게 따라하기 가능하도록 디테일한 설명도 첨부해 보려고 합니다. 일반적인 개발환경 세팅을 하려면 어떻게 해야할까요? 우선 설치해야할 nodejs 버전을 정하고 개발 툴도 찾아보고 소스의 버전관리가 가능하도록 github에 연동하여 서버에 배포하여 서비스를 구동 할 수 있도록 구성하는 것일텐데. "한번 까짓거 해봅시다." 저 같은 경우 집에 한대의 PC가 우분투용으로 놀고 있기도 하고 구글 클라우드 프리티어의 경우 무료로 1년간 쓸 수 있으니 해보시기 바랍니다. 거기다가... 마이크로 서버는 뭐... 계속 무료 제공이지 않을까 싶긴하니까요. 성능이 문제긴 한데 그렇게 리소스 마니 먹는 개..
구글 클라우드 사용 시 비용이 예산보다 초과하거나 결제 금액이 발생하는 경우 알림을 설정할 필요가 있습니다. 예상하지 못한 금액이 발생하면 안되니까요. 바로 알림 설정에 들어가보도록 하겠습니다. 구글 클라우드 플랫폼은 편의상 GCP로 표현하도록 하겠습니다~ 1. GCP 접속 --> 결제 --> 예산 및 알림 선택 그리고 '예산 만들기' 선택 2. 예산 이름 입력 후 '다음' 선택 저는 예산이 없음으로 할것이기 때문에 '예산 없음' 으로 했습니다. 다음을 선택해줍시다. 3. 알람 기준 금액 입력 후 다음 저는 0.1 달러를 입력했습니다. 조금이라도 금액이 발생하면 바로 알람을 받고 조치를 해야하기 때문입니다. 각자 기준에 맞는 금액을 넣어줍니다. 그리고 '비용에 크레딧 포함'이 체크 되어있습니다. GCP는..
예전에 구글 클라우드 프리티어를 1년간 사용했었는데요. 그리고 나서 AWS를 프리티어가 끝나는 1년마다 메뚜기처럼 옮겨다니니 불편했습니다. 그래서 오늘 구글 클라우드 플랫폼에서 항상 무료로 사용할 수 있게 등록을 진행해보려고 합니다. AWS나 애저 같은 경우에는 VM 인스턴스가 항상 무료가 아니기 때문에 1년 프리티어의 사용이 끝나고 나면 요금을 내는 체계로 전환되는 수밖에 없죠. 하.지.만 우리의 갓 구글님께서는 항상 무료라는 혜자스러운 면모를 보여줌으로서 우리같은 영세한 사람들을 구글 클라우드 플랫폼으로 유입을 이끌고 있다고 생각이 됩니다. 그럼 오랜만에 구글 클라우드 플랫폼으로 다시 가게 되었는데요. 프리티어는 이미 계정에서 끝난 상황이고 항상(평생) 무료 사용할 수 있는 정보에 대해 정리해보도록 ..
IOS에서 사용하는 웹뷰인 UIWebView와 WKWebView에 대해서 정리해봅니다. 당연히 정리하는 이유는 최근 애플에서 관련 메일을 받아서라고 할까요? 아마 저와 같은 메일을 받아보신 분들이 꽤 될수도 있으리라 생각되고, 아니면 그냥 UIWebView와 WKWebview에 대해 궁금하신 분들이 있을수도 있을것 같습니다. Dear Developer, We identified one or more issues with a recent delivery for your app, ************** Your delivery was successful, but you may wish to correct the following issues in your next delivery:ITMS-90809: D..
안녕하세요. 오늘은 몇일 전에 변경된 크롬 80 버전 업데이트 변경내용에 대해서 정리해보려고 합니다. 전에 크롬 업데이트 내용을 간과하고 있다가 크롬 업데이트 후 버그가 발생하는 바람에 아주 애먹었던 경험을 생각해보면요. 주기적으로 되는 업데이트 내용에 대해서 미리미리 파악하고 있어야 겠다는 생각이 듭니다. 1. 개발자를 위한 새로운 SameSite=None; 보안 쿠키 설정에 대비 1.1 Cross-site, same-site 쿠키 컨텍스트 이해하기 첫번째로 쿠키 컨텍스트를 이해해야 합니다. 서로 다른 도메인에서 같은 쿠키에 접근하는 경우 Cross-site, 혹은 third party' 라고 합니다. 두번째로 같은 도메인에서 쿠키에 접근하는 것을 same-site 쿠키, 'first party' 라고..
맥북에 brew를 설치하는 과정의 포스팅입니다. 아주 간단합니다. 일단 brew로 구글에 검색해보면 Homebrew 홈페이지가 나옵니다. 쉽게 말하자면 맥os용 패키지 관리자인데요. 리눅스를 설치할 때 yum 이나 apt를 생각해보면 이해가 쉬울 것 같습니다. 1. brew 홈페이지 접속 https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 바로 이 주소의 사이트입니다. 여기 보면 아래 처럼 설치하면 된다고 나옵니다. 그대로 해주기만 하면 됩니다. 2. 설치 커맨드 입력 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homeb..
요즘 이것 저것 많이 건드려(만들어) 보려고 하는데요. 서버리스 상태로 무언가 만들기 위해서는 cors 프록시 서버가 필수적으로 필요합니다. cors 프록시 서버로 가끔 쓰거나 상용 서비스가 아닌 간단한 서비스, 토이프로젝트를 돌리기 위해서는 헤로쿠(heroku)만한 것이 없어 보입니다. 조금 더 자유도가 높은 게 필요하다면 여기서 당연히 AWS로 눈을 돌리면 되는것이지요. 프리티어가 생각보다는 꽤나 짱짱하게 돌아갑니다. 1년밖에 안되서 그렇지... 우선 cors 프록시로 사용할 프로젝트는 직접 만드는게 아닌 이미 잘 만들어져있는 cors-anywhere 라는 프로젝트를 포크해와서 그대로 헤로쿠에 연결해서 띄우는 작업으로 나만의 cors 프록시를 만들겁니다. 헤로쿠와 깃헙을 연동하고 프록시를 만들기를 찾..
오늘은 공개키와 비밀키 암호화 방식에 대해서 알아보겠습니다. 우리가 실제로 PC나 모바일, 태블릿 등의 제품을 이용할 때 눈에 보이지 않게 뒤에서 항상 일어나는 일들이 있지요. 세상의 모든 암호화를 둘로 나눈다. 바로 데이터 암호화와 복호화입니다. 우리가 사용하는 인터넷도 이제는 http(암호화가 안되는 인터넷 프로토콜 방식) 서비스를 찾기 힘듭니다. 거의 모든 개인 쇼핑몰, 영세한 사이트들 조차 https( 암호화가 되는 인터넷 프로토콜 방식 )를 기본적으로 적용하고 있습니다. 우리가 일상생활에서 인터넷만 이용하더라도 기본적으로 암호화 처리가 이루어지고 있다는 거죠. 또 앱을 이용하거나 웹을 이용할 때 비밀번호나 주민등록번호와 같은 민감한 정보들은 아예 별도로 암호화 처리하도록 되어있는 경우도 많습니다..
나름 저도 개발자이고 웹과 앱을 운영하는 입장에서 웹디자인에 대해서 아예 관심이 없을 수가 없습니다. 이번에 좋은 글을 보게 되어 제 블로그에 옮겨담는 정리를 해봅니다. 좋은 디자인과 경험 UI/UX는 홈페이지와 앱을 운영하는데 있어 최고로 중요한 요소가 된지 오래입니다. 2020년 최고의 웹디자인 트렌드 개발자가 당연히 디자이너가 될수는 없더라도 개발자가 항상 관심을 가지고 봐야 하는 분야라고 봅니다. 개발자가 시스템을 모르고 코딩을 할수 없듯이요. 웹 사이트를 이미 운영하고 있거나 웹 사이트를 시작하기 위해 새해 결심을 했더라도 웹 디자인 세계에서 무슨 일이 일어나고 있는지 아는 것은 항상 긍정적입니다. 우리는 2020년에 가장 인기있는 트렌드에 대비하고, 실수를 피하기 위해 일반적인 실수에 대해 경..
오늘은 IllegalAccessError 예외 대해서 알아보자. 말 그대로 실행되는 시점에 메소드가 없거나 필드가 없는 경우에 발생하는데 대개 컴파일 시점에 잡히기 때문에 자주 만나는 예외는 아니다. 하나하나 알아보자. 1. IllegalAccessError 원인 자주 만날수는 없지만 원인을 알아보자. package test; public class test { public static void main(String[] args) { System.out.println(test2.a); System.out.println(test3.a); test2.printA(); test3.printA(); } } class test2{ static String a = "바보"; static void printA() {..
자바에서 NumberFormatException 원인과 에러/예외 해결 방법을 알아보자. java.lang 패키지에 속하는 놈이다. 1. NumberFormatException 원인은? 일단 이름에서도 유추할 수 있듯이 숫자가 아닌 녀석을 숫자 형으로 변환하려고 할 때 일어난다. 아마 가장 많이 만나는 유형은 Integer.parseInt(String s) 를 사용하면서다. 문자열을 int 형으로 변환할 때 사용하게 되는데 의도치 않게 숫자 외에 형태가 들어가있을 때 우리는 이놈을 만나게 된다. 최대한 간단한 샘픔을 보면서 이해해보자. package practice; public class test_NumberFormatException { public static void main(String[] ar..
Java를 한다면 RuntimeException을 수도 없이 만나게 된다. 물론 직접적인 RuntimeException 을 만나진 않을 것이다. 단지 아래와 같은 RuntimeException을 상속 받는 아주 많은 RuntimeException 을 만난다는 뜻이다. AnnotationTypeMismatchException, ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DataBindingEx..
좀 웃기는 상황이다. 내가 개발하는 피씨는 여러개인데 그 중에 한대가 vscode, atom 등의 개발툴이 먹통인데 원인은 찾지 못하고 ... ( 대충 짐작은 간다만... 해결 불가능한 이슈임. ) 그래서 nodeclipse를 사용하려고 한다. 안되는 피씨에서는 nodeclipse를 되는 맥북이나 윈도우에서는 vscode를 ... 그래서 nodeclipse를 쓰려고 테스트로 디버깅을 해보다가 저 에러 메세지를 만났다! Failed to connect to Standalone V8 VM nodeclipse는 node 디버깅 시에 --debug 옵션으로 5858포트에 붙게 되어있는데 nodejs 8이상 버전부터는 --inspect 옵션과 9229 포트를 사용해야 디버깅이 가능하다. 즉... nodeclips..
최근 node로 뭔가 프로그램을 만드려고 하는데 하도 안만진지 오래 되어 작업을 하다 말고 버전을 최신화 해야겠단 생각에 윈도우와 리눅스에 버전을 둘다 최신화 하였다. 물론 버전을 업데이트 할 때는 LTS 정도로만 업데이트해도 충분하다고 생각한다. 윈도우에는 node.js 홈페이지에서 파일을 다운받아 설치하면 이전 버전으로 알아서 덮어씌워준다. 특별한 이유가 없다면 LTS 버전을 쓰자. 개인적으로 우분투를 쓰고 있는데 우분투나 Debian은 아래처럼 설치해주면 된다. # Using Ubuntu curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs # Using Debian, as root ..
오늘은 아주 가끔 만날수 예외를 알아보자. IllegalAccessException라는 녀석인데 직역하면 불법접근예외다. java.lang.IllegalAccessException 에러의 원인은 접근할수 없는 필드나 메소드에 접근하는 경우에 발생한다고 생각하면 되겠다. Case 1. 컴파일 시에 참조되었던 클래스, 필드, 메소드가 실제 프로그램 구동환경 하에 참조하려고 할 때 접근할 수 없는 경우 클래스가 삭제되었거나 다른 버전의 소스가 컴파일 되어 넣어지는 경우 발생할 수 있다. 자신이 직접 개발하는 소스는 IDE가 자동으로 감지하여 에러를 뱉어줘서 컴파일 에러를 발생시켜서 발생하기 쉽지 않고 통상적으로 참조하는 라이브러리의 버전이 다른 경우 많이 발생한다. 따라서 참조하는 라이브러리의 클래스, 필드,..
오늘은 아주 빈번하게 만나게 되는 IndexOutOfBoundsException, ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException 예외에 대해서 알아보자. 이 세가지는 비스무리하기 때문에 한꺼번에 알아보자. API 문서를 보면 원인이 아주 쉽게 나온다. Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.Applications can subclass this class to indicate similar exceptions. 배열, 문자열 또는 벡터와 같은 일종의 인덱스가 범위를 벗어 났음을..
오늘은 CloneNotSupportedException 에러 해결 방법을 알아보자. 사실 업무 하면서 CloneNotSupportedException를 만나기란 쉽지 않다. 거의 대부분의 개발 작업을 프레임워크와 라이브러리 기반에서 하다보니 만나기 어렵겠다. 혹시 빠른 해결방법을 원한다면 스크롤 쭉 내리면 되겠다. Exception에 대한 원인을 살펴보기 위해서는 java api document를 살펴보는게 좋다. 구글에 대고 치면 항상 링크가 나온다. "java api doc" , 혹은 "CloneNotSupportedException api doc" 등등 API 상에서 나타내는 원인을 살펴보자. 원문 ) Thrown to indicate that the clone method in class Obje..