본문 바로가기

전체 글

(174)
[Java][Spring] Dependency Injection : How to @Autowired fail case and The better case Java로 웹 프로젝트를 만들다보면, 반드시 필요한 것 중 하나인 의존성 주입(dependency injection)을 고려하게 된다. 의존성 주입이라 하면 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉을 뜻한다. 필자는 작업하던 프로젝트에서 @Autowired를 계속 쓰고 당연하게 주입해서 쓰곤 했다. (사실 대학에서도 의존성 주입 중 하나의 방법이라고 위 어노테이션을 설명없이 쓰라고만 했었다..) 그러던 중 문득 드는 생각. 내가 왜 저걸 써야하는가. 우선 이를 이해하기 위해서는 의존성 주입이 대해 좀더 알아봐야했다. DI, dependency injection 은 spring 프레임워크에서만 사용하는 것이 아닌 객체지향 프로그래밍에서 통용되는 개념이다. 강한 결합 객체 내부에서 다른 객체를 생..
[JavaScript] ECMAScript 자바스크립트 프로그램은 거의 항상 호스팅 환경의 콘텍스트에서 실행되므로 예측하기 어려운 부분이 어느정도 있다. 예를 들어, 작성한 코드를 다른 소스 코드와 함께 실행하거나, (브라우저 이외의) 다른 유형의 자바스크립트 엔진에서 실행하면 예상과 다르게 작동할 수 있다. 이번 내용은 이 문제를 간략하게 다루고자 한다. ECMAScript 자바스크립트의 공식적인 언어 명칭이 ECMAScript(ECMA는 표준 관리 주체 기관을 뜻함)라는 사실은 잘 알려져 있지 않다. 자바스크립트는 ECMAScript 언어의 상품명으로 통용되며, 더 정확하게는 명세의 브라우저 구현체이다. (필자도 이번에 알았다..=.=) 아래의 내용은 주요 호환성 차이를 열거한 내용이다. * 0123(10진수의 83)와 같은 8진수 리터럴은 ..
[JavaScript] 모듈, module 일반적으로 자바스크립트의 패턴을 모아둔 것을 모듈(module)이라고 부른다. 가장 흔한 모듈 패턴 구현 방법은 모듈 노출(Revealing Module)이고, 아래의 예시는 이것의 변형이다. 예시 ) function module() { var something = "cool"; var another = [1, 2, 3]; function doSomething() { console.log(something); } function doAnoter() { console.log(another.join(" | ")); } return { doSomething: doSomething, doAnother: doAnoter }; } var test = module(); test.doSomething(); // coo..
[JavaScript] 스코프 클로저, Scope Closure 클로저는 새롭게 문법과 패턴을 배워야할 특별한 도구가 아닌 그저 인식하고 받아들이면된다. 이는 자바스크립트의 모든 곳에 존재하며, 렉시컬 스코프에 의존해 코드를 작성한 결과로 그냥 발생한다. 그러므로 이 글을 통해 클로저의 전반을 파악하고, 목적에 따라 확인하고 받아들이고, 이용할 수 있도록 작성할 것이다. 예시 ) function test1() { var a = 2; function test2() { console.log(a); // 2 } test2(); } test1(); 위 예시와 같이 test2()는 렉시컬 스코프 검색 규칙(RHS 참조 검색)을 통해 바깥 스코프의 변수 a에 접근할 수 있다. 즉, test2()는 test1() 스코프에 대한 클로저를 가진다. 달리 말하면 test2()는 tes..
[JavaScript] 호이스팅, Hoisting 하나의 스코프 안에서 선언된 변수는 바로 그 스코프에 속하고 마찬가지로 하나의 블록 안에서 선언된 변수는 바로 그 블록에 속하게 된다. 하지만, 선언문이 스코프의 어디에 있는지에 따라 스코프에 변수가 추가되는 과정이 미묘한 차이가 있다. 예시 ) /* * 스코프 위에 선언된 변수인 경우 */ a = 2; var a; console.log(a); // 2 /* * 스코프 아래에 선언된 변수인 경우 */ console.log(b); // undefined var b = 2; 위의 예시를 설명하기에 앞서 자바스크립트 컴파일러를 돌아볼 필요가 있다. 자바스크립트 엔진이 코드를 인터프리팅하기 전에 컴파일 한다는 사실을 기억해보자. 컴파일레이션 단계 중에는 모든 선언문을 찾아 적절한 스코프에 연결해주는 과정이 있었..
[Scouter] 대-충 설치 및 설명 1 ) Scouter Server 설치 Scouter 홈페이지에 접속하여 적절한 위치에 scouter-all-[version].tar.gz 의 압축을 풀어준다. [Scouter 홈페이지] https://github.com/scouter-project/scouter/releases Releases · scouter-project/scouter Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter github.com 2 ) Scouter Server 실행 /server에서 startup.sh 또는 startup.bat 실행 % pwd /scouter/server % sh startup...
[Performance] 성능 보는 방법 (!! 보강 예정 !!)
[DBeaver] Access denied ‘test’@‘0.0.0.0’ Current charset is UTF-8 오류 해결 ⌗ 오류 현상 Access denied for user ‘test’@‘0.0.0.0’ (using password: YES) Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding' ⌗ 해결 방법 password charset이 달라서 발생한 현상으로, session 설정할때 driver setting에서 User Properties에 charset을 추가해준다. [참고] https://k9e4h.tistory.com/351 [오류관리] Dbeaver Password Charset Current charset is UTF-8. If passwor..

❥ CHATI Github