1. sudo apt install openjdk-11-jdk 형식으로 원하는 자바버전을 모두 설치한다. 2. update-alternatives --config java 명령어로 원하는 자바 버전을 선택 가능하다. 3. .bashrc 에 export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) 를 추가한다. 자바 버전을 바꿀 때 마다. source .bashrc를 실행해줘야 한다. 이 명령라인은 단순히 현재 설정된 자바의 버전을 JAVA_HOME에 할당한다.
1. 자바스크립트를 사용하면 할수록 혼란스러운 것이 이 키워드이다. 개인적으로 실행환경과 더블어 자바스크립트의 양대 산맥이다. 그 다음이 비동기식 처리 정도로 보인다. 2. 사실 this을 이해하려면 실행환경이 어떻게 만들어지고 어떤 절차로 변수환경, Lexcial Chain, this가 생성되고 creation phase와 execution phase에 이들이 각각 어떻게 변화는지를 우선 이해하는 것이 필요하다. 3. 하지만, 이 내용들을 이해하는 것은 상당히 까다롭다. 그리고 고급 라이브러리를 개발할 수준이 아니면 그다지 필요없는 것이 사실이다. 4. this는 위의 내용들과 밀접하게 관련되어 있지만 별도로 이해해도 무방하다. 5. 설명 사전 지식 - this 키워드는 함수 호출시에 동적으로 설정되는..
1. 코틀린은 자바를 기반하고 있기 때문에 toString(), equals(), hashCode() 메소드를 기본적으로 제공한다. 코틀린의 기본 클래스는 Any로 자바와 차별화를 시도하고 있는데, 사실 코드는 별차이가 없다. 2. 그런데 문제는 코틀린의 equals, hasCode는 생각하고는 다르게 동작한다. 여기에 ==, === 가 더해지면 더 이상 공부하기 싫어진다. 그래서 여기에 메모해 둔다. 3. 상속받은 equals 기본 동작은 객체의 주소 값의 비교이다. 이것은 코틀린의 == 이 수행 되었을 때 동작과 일치한다. 3-1 == 는 기본적으로 객체의 주소값을 비교하여 일치값을 판단한다. 3-2 코틀린에서 객체의 값을 비교하고 싶을 때는 별 수 없이 생성한 클래스의 equals를 override..
1. 결론은 답이 없다. 윈도우 폴더에서 개발하는 것 밖에 없다. 2. WSL 성능이 좋아지면서 WSL 환경으로 전환하고 있다. 그런데 다 좋은데 문제가 생겼다. 2-1 nodemon으로 go 개발을 하는데 소스 변경 시 재기동이 되지 않는다. 2-2 아래는 왼쪽은 D:/practice/go/hotel 오른쪽은 /home/pilseong/practice/go/hotel 에 소스가 있다. 2-3 윈도우 폴더에서 리눅스 파티션으로 옮겨서 작업을 하려고 하는데 WSL2로 들어와 작업을 하면 문제가 생겼다. 2-4 그냥 쉽게 생각하면 안되는 이유가 nodemon -L 같은 걸 쓰면 되지 않을까 생각 할 수 있는데, -L 옵션은 아래의 경우 같이 윈도우 폴더에 있을 때만 의미가 있다. 2-4-1 즉 윈도우 폴더를..
1. Go 언어 대한 다양한 참고자료가 있지만 Effective Go라는 go 언어 홈페이지에 걸린 문서가 아주 유용하다. 중요한 부분의 핵심만 정리하려고 한다. 2. 문서의 Data 파트에 New와 Make 부분이 있다. 둘 다 자원 할당을 위한 함수들이다. 여기서는 New만 정리한다. 3. New - 메모리를 할당해 주고 해당 메모리 내용을 모두 0으로 설정한다. 그런 후 할당한 메모리의 포인터를 반환한다. 3-1 0으로 설정한다는 것의 의미는 new로 할당받은 메모리 블록에 C언어처럼 쓰레기 값이 들어있지 않기 때문에 별도의 쓰레기 값을 제거하기 위한 초기화 작업이 필요없다는 뜻이다. 3-2 다시 말하면 bytes.Buffer 같이 내부적으로 데이터를 읽는 byte slice의 경우 0으로 초기화없..
1. Go는 아주 단순한 문법을 가진 아주 간단한 언어이다. 정적 타입, 간단한 문법, 직관적인 구조 때문에 소스를 이해하기가 굉장히 쉽다. 소스를 보고 분석하는 데 필요한 시간이 다른 언어에 비해 굉장히 짧다. 다르게 해석할 여지가 없기 때문이다. 기본 라이브러리 소스도 바로 볼 수 있고 그냥 죽보면 직관적으로 쉽게 따라갈 수 있다. 스프링이나 자바 라이브러리와는 다르게 굉장히 쉽다. 2. 문제는 C언어를 생각하고 쉽게 생각하면서 포인터를 사용하려고 하면 안되는 것이 많다. 예를 들면 slice 포인터를 받아서는 개체에 []문법으로 접근할 수가 없다. 아래에 문법을 보면 pointer receiver를 사용할 경우 d[i] 같이 접근하는 게 불가능하다. 항상 (*d)[i] 처럼 접근해야 한다. 3. 이..
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- mapping
- WebMvc
- Many-To-Many
- 하이버네이트
- one-to-one
- login
- 매핑
- 상속
- XML
- hibernate
- Angular
- 스프링
- 설정
- RestTemplate
- 로그인
- crud
- 외부파일
- Spring
- 자바
- one-to-many
- spring boot
- Rest
- jsp
- Spring Security
- form
- 설정하기
- 스프링부트
- Security
- Validation
- MYSQL