본문 바로가기

전체 글

(174)
[Java] java.lang.IllegalArgumentException: Request header is too large 오류 해결 ⌗ 오류 현상 org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Request header is too large at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:718) at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuf..
[Git] 충돌 해결, Conflict solution 공동으로 작업하고 있는 origin에 연결된 브랜치(origin develop)에 충돌이 발생하는 경우 해결하는 방법을 작성했습니다. 1 ) git checkout feature/test 내가 작업하는 브랜치(feature/test)로 이동 2 ) git pull origin develop 공동으로 작업하고 있는 origin에 연결된 브랜치(origin develop)의 내용을 가져옴(pull) 3) 충돌 여부 확인 3-1) 충돌이 발생한 경우 : 충돌한 파일을 수정 3-2) 출돌이 발생하지 않은 경우 : 4번으로 진행 4) git add . 작업하고 있는 브랜치(feature/test)의 Untracked Files를 모두 한번에 stage(혹은 Index) 함 5) git status On branc..
[JavaScript] 함수/블록 기반 스코프 함수 기반 스코프 function test(a) { var b = 2; function sub() {...} var c = 3; } sub(); // fail console.log(a, b, c); // fail 선언문이 스코프의 어디에 있는지는 중요하지 않다. 스코프 안에 있는 모든 변수와 함수는 그 스코프 버블에 속한다. a, b, c, sub 모두 test()의 스코프 버블에 속하므로 test() 바깥에서는 이들에게 접근할 수 없다. 따라서 호출된 확인자가 글로벌 스코프에는 없기 때문에 ReferenceError 오류를 발생시킨다. 함수 스코프는 모든 변수가 함수에 속하고함수 전체에 걸쳐 사용되며 재사용 된다. 일반 스코프에 숨기 1 ) 함수를 선언하고 그안에 코드를 넣는다. 2 ) 작성한 코드에서..
[JavaScript] 렉시컬 스코프, Lexical Scope / 동적 스코프, Dynamic Scope ⌗ 스코프, Scope 특정 상소에 변수를 저장하고 나중에 그 변수를 찾는데는 잘 정의된 규칙이 필요하는데 이를 스코프(Scope)라고 한다. 변수를 검색하는 이유는 변수에 값을 대입(LHS 참조)하거나 변수의 값을 얻어오기(RHS 참조) 위해서다. 스코프는 두가지 방식으로 작동하는데, 1 ) 렉시컬 스코프, Lexical Scope : 다른 방식보다 훨씬 더 일반적이고 다수의 프로그래밍 언어가 사용하는 방식 2 ) 동적 스코프, Dynamic Scope : Bash Scripting이나 Perl 의 일부 모드와 같은 몇몇 언어에서 사용하는 방식 렉시컬 스코프, Lexical Scope 일반적인 언어의 컴파일러는 첫 단계로 토크나이징 또는 렉싱이라 불리는 작업을 시작하여, 렉싱 처리 과정에서 소스 코드 ..
[JavaScript] 스코프, Scope ⌗ 스코프, Scope 특정 상소에 변수를 저장하고 나중에 그 변수를 찾는데는 잘 정의된 규칙이 필요하는데 이를 스코프(Scope)라고 한다. 변수를 검색하는 이유는 변수에 값을 대입(LHS 참조)하거나 변수의 값을 얻어오기(RHS 참조) 위해서다. 자바스크립트는 일반적으로 '동적' 또는 '인터프리터' 언어로 분류하나, 사실은 '컴파일러 언어'다. 물론 자바스크립트가 전통적인 많은 컴파일러 언어처럼 코드를 미리 컴파일하거나, 컴파일한 결과를 분산 시스템에서 이용할 수 있는 것은 아니다. 전통적인 컴파일러 언어의 처리과정에서는 프로그램을 이루는 소스 코드가 실행되기 전에 보통 3단계를 거치는데, 이를 '컴파일레이션, Compilation'이라고 한다. 1 ) 토크나이징, Tokenizing / 렉싱, Le..
[JavaScript] 연산자 우선순위 연산자를 하나만 사용하는 경우도 있지만 여러가지를 복합적으로 사용하게 되는 경우도 발생한다. 따라서 연산자에도 우선 순위를 매겨 연산자의 실행 순서를 결정하고, 우선 순위가 높은 연산자가 먼저 실행된다. 특히, 우결합성이 있는 조건 연산자( ? : )와 우선순위가 헷갈리는 논리 AND, OR 연산자( &&, || )는 주의하여 사용하자. 공식 문서에 나와있는 연산자 우선 순위는 다음과 같고, 이를 전부 외울 수는 없다. 일반적으로 사람이 논리적으로 생각하는 방식 대로 우선 순위가 매겨져 있으나, 애매한 경우에는 괄호를 사용하여 해결하면 된다. 우선 순위 연산자 유형 결합성 연산자 21 그룹 없음 ( … ) 20 멤버 접근 좌결합성 … . … 계산된 멤버 접근 좌결합성 … [ … ] new (매개변수 리스..
[JavaScript] 느슨한(==)/엄격한(===) 동등 비교, 추상 관계 비교 느슨한(==)/엄격한(===) 동등 비교 많은 서적이나 블로그에서 보면 대부분 "==는 값의 동등함을, ===는 값과 타입 모두의 동등함을 비교한다" 는 글을 본 적이 있을 것이다. 이는 그럴 듯한 내용이지만 사실 정확하진 않다. 정정하자면, "동등함의 비교시 ==는 강제변환을 허용하지만, ===는 강제변환을 허용하지 않는다." 엄격한(===) 비교는 느슨한(==) 비교에 비해 타입까지 비교해야하니 당연히 일이 더 많다. 그러나, 마치 느슨한(==) 비교가 엄격한(===) 비교보다 눈에 띄게 처리가 더뎌서 성능에 영향을 끼친다고 생각하지 말자. 불과 몇 마이크로 초 단위(1 마이크로 초 = 100만분의 1초)의 차이일뿐 이다. 게다가 타입이 같은 두값의 동등 비교라면 ==와 ===의 알고리즘은 동일하다...
[JavaScript] 강제변환 - 암시적 강제변환, Implicit Coercion 이 글의 내용은 자바스크립트의 강제변환의 좋고 나쁨을 충분히 이해하고, 자신의 프로그램에 적절한지 스스로 현명하게 판단할 수 있도록 하기위한 내용을 작성했다. 어떤 값을 다른 타입의 값을 바꾸는 과정이 명시적이면 '타입 캐스팅, Type Casting' 이고, 값이 사용되는 규칙에 따라 암시적이면 '강제변환, Coercion' 이라고 한다. '타입 캐스팅'은 정적 타입 언어에서 컴파일 시점에, '강제 변환'은 동적 타입 언어에서 런타임 시점에 발생한다. 본 글은 '강제 변환'을 세부적으로 나눠 '명시적 강제변한'과 '암시적 강제변환'으로 구별할 것이며, '명시적 강제변환'은 코드만 봐도 의도적으로 탕입변환을 일으킨다는 사실이 명백한 반면, '암시적 강제변환'은 다른 작업 도중 불분명한 부수 효과로부터 발..

❥ CHATI Github