인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Language/JavaScript (WEB)

🤖 구글봇 / 크롤러 방문 감지하기

검색봇이 크롤링/스크랩핑 하는지 감지하기 우리가 잘아는 대표적인 검색봇은 구글봇이 있다. 이 구글봇이 우리의 티스토리나 웹사이트를 크롤링해야 구글 노출을 시켜준다. 다만, 구글봇도 하나의 사용자처럼 웹사이트를 방문해 조회하기 때문에 내 홈페이지를 조회한게 로봇인지 사람인지 구분할 필요성이 생길 때 가 있다. 이때 간단하게 웹브라우저 전반에 대한 정보를 제공하는 window 객체의 navigator.userAgent 에 적힌 정보를 뒤져서 졍규식으로 봇이름을 가지고 있는지 판별하는 식으로 감지할 수 있다. const detectRobot = (userAgent) => { const robots = new RegExp([ /bot/,/spider/,/crawl/, // GENERAL TERMS /APIs-G..

category_image
인파_
2022.10.06
(0)
Language/JavaScript

📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제

정규 표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은 값을 입력하면 정규표현식에 의해 필터링되어 걸러져 경고창을 띄우는 화면을 본적이 있을 것이다. 이처럼 반복문과 조건문을 사용해야 할것같은 복잡한 코드도 정규표현식을 이용하면 매우 간단하게 표현할 수 있으며 주로 다음과 같은 상황에서 굉장히 유용하게 사용된다. 각각 다른 포맷으로 저장된 엄청나게 많은 전화번호 데이터를 추출해야 할 때 사용자가 입력한 이메일, 휴대폰 번호, IP 주소 등이 올바른지 검증하고 싶을 때 코드에서 특정 변수의 이름을 치환하고 싶지만, 해당 변수의 이름을 포함하..

category_image
인파_
2022.10.05
(0)
Language/Java (JVM)

☕ 자바는 Call by reference 개념이 없다 ❓

자바의 Call by Value / Call by Reference 프로그래밍을 하다보면 반드시 마주치는 것이 바로 call by value / call by reference 개념이다. 함수의 매개변수에서 값을 복사하느냐 주소값을 참조하느냐에 따라 반환 결과가 달라지기 때문에 대부분의 프로그래밍 교육과정에선 중요시 하게 여긴다. 자바에서도 역시 call by value 와 call by reference 동작 차이가 존재한다. 자바의 데이터형을 알아보면 크게 두가지로 나뉘게 된다. 기본형(primitive type) - Boolean Type(boolean), Numeric Type(short, int, long, float, double, char) 참조형(reference type) - Class ..

category_image
인파_
2022.10.05
(0)
Language/Java (JVM)

☕ 그림으로 보는 자바 코드의 메모리 영역(스택 & 힙)

자바의 메모리 영역 이번 포스팅에선 자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징에 대해서 알아보려고 한다. 자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다. JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static) 영역, Stack 영역, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당 되게 된다. 컴퓨터의 메모리는 사용할 수 있는 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우된다. 그래서 메모리 설계가 잘되어 있는 프로그램에 비해 그렇지 않은 프로그램은 속도 저하 현상이나 튕김 등의..

category_image
인파_
2022.10.04
(0)
Language/TypeScript

📘 타입스크립트 @데코레이터 개념 & 사용법

타입스크립트 Decorator 란 타입스크립트로 Angular.js 나 Nest.js 개발을 진행하다보면 필연적으로 데코레이터란 것을 접하게 된다. 자바(Java)를 해본 분들이라면 어노테이션과 비슷하다고 볼수 있지만, 자바 어노테이션은 컴파일 타임에 상관지만 타입스크립트 데코레이터는 컴파일 타임에는 상관하지 않아, 오히려 파이썬(Python)의 데코레이터와 거의 비슷하다고 말하는게 옳다. 데코레이터는 일종의 함수 이다. 데코레이터는 말 그대로 코드 조각을 장식해주는 역할을 하며, 타입스크립트에서는 그 기능을 함수로 구현하는 것이다. 예를들어 메소드 / 클래스 / 프로퍼티 / 파라미터 위에 @함수 를 장식해줌으로써, 코드가 실행(런타임)이 되면 데코레이터 함수가 실행되어, 장식한 멤버를 보다 파워풀하게 ..

category_image
인파_
2022.09.30
(0)
Language/TypeScript

📘 타입스크립트 공변성 & 반공변성 완벽 이해

타입의 공변성과 반공변성 타입스크립트는 자바스크립트에 타입을 추가해준 라이브러리 이지만, 타입을 다루는 언어이기도 하다. 그래서 어느새 타입 자체를 코딩하고 있는 자신을 발견하기도 한다. 타입을 코딩하는 도중 많이 당황하는 개념이 타입 간의 관계 이다. 어떤 타입은 다른 타입에 들어가는데 어떤 타입은 안 들어가서 결과가 다르게 나오는 당황스러운 경우가 있기 때문이다. 그리고 여러분들은 이런 이상한 인과를 찾아보다 결국 공변성(Covariance) 이라는 단어까지 도달했을 거라 추측한다. 타입스크립트에는 용어부터 어려워 보이는 이 단어 이외에도 3가지 더 개념이 있는데 간단히 정리하면 다음과 같다. 공변성(Covariance) : A가 B의 서브타입이면, T는 T의 서브타입이다. 반공변성(Contravar..

category_image
인파_
2022.09.29
(0)
Language/TypeScript

📘 타입스크립트 커스텀 Error 처리하기

타입스크립트 Error 처리 방법 자바스크립트에서는 어떤 값이든 에러로 던질수가 있다. 그러나 try catch 문에서 타입스크립트 에러를 처리하는데 아래와 같은 에러를 만나 본적이 있을 것이다. [typescript] Object is of type 'unknown'.ts(2571) (error object) 기존에는 error: any 타입 이었기 때문에, 자바스크립트와 같이 사용해도 ts error가 발생하지 않았다. 하지만 타입스크립트 v4.4 부터는 error의 object가 unknown type으로 정의 되어서, ts error가 발생하는 것이다. try { // ... } catch (err) { console.error(err.message); // Object is of type 'un..

category_image
인파_
2022.09.28
(0)
Language/Java (JVM)

☕ 실수 표현(부동 소수점) 원리 한눈에 이해하기

실수의 2진수 표현 10진수의 정수를 2진수의 정수로 변환할 수 있듯이, 10진수의 소수를 2진수의 소수로 변환할 수 있다. 예를들어 10진수 11.765625 를 2진수 소수로 변환하는 방법은 다음과 같다. 먼저 숫자를 정수부 11 와 소수부 0.765625 로 나누어주고, 각각 2진수로 변환해주면 된다. 정수부 2진수 변환 정수부에 2를 지속적으로 나눈다. 몫은 계속 2로 나누어주고, 나머지값은 따로 모아준다. 더이상 나눌수 없을때 나머지 값을 모아 연결해주면 1011(2)로 간단히 변환이 된다. 실수부 2진수 변환 절대값이 1보다 작은 10진수 소수에 2를 곱한다. 2를 곱한 결과는 1을 넘거나 넘지 않을 것이다. 만약 1을 넘었을 경우 결과에서 1을 떼어내고, 아니면 0으로 처리하며 다음 계산을 ..

category_image
인파_
2022.09.27
(0)
Language/Java

☕ JAVA 타입 형변환 원리 & 방법 - 완벽 정리

타입 변환 (Type Conversion) 하나의 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환 이라고 한다. 예를 들어 byte 타입을 int 타입으로 변환하거나 반대로 int 타입을 byte 타입으로 변환하는 행위를 말한다. 프로그램에서 값의 대입이나 연산을 수행할 때는 같은 타입끼리만 가능하다. 그래서 같은 정수라도 타입이 다르면 연산을 수행하기 전에 같은 타입으로 만들어야 하기 때문에 형변환 작업이 필요한 것이다. 타입 변환에도 규칙이 있는데, 메모리에 할당받은 바이트의 크기가 상대적으로 작은 타입에서 큰 타입으로의 타입 변환은 생략할 수 있다. 하지만 메모리에 할당받은 바이트의 크기가 큰 타입에서 작은 타입으로의 타입 변환은 데이터의 손실이 발생하게 된다. (용량이 다르니까) 따라서 ..

category_image
인파_
2022.09.26
(0)
Language/Java

☕ JAVA 기본 자료형 & 데이터 타입 - 한눈에 정리

정수 자료형 자바의 정수를 표현하기 위한 자료형은 대표적으로 int, long 이 있다. (byte, short 도 있지만 잘 사용하지 않는다.) 정수형 타입 할당되는 메모리의 크기 데이터의 표현 범위 byte 1바이트 -128 ~ 127 short 2바이트 -215 ~ (215 - 1) -32,768 ~ 32,767 int 4바이트 -231 ~ (231 - 1) -2,147,483,648 ~ 2,147,483,647 long 8바이트 -263 ~ (263 - 1) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 int age = 10; long countOfStar = 8764827384923849L; long 변수에 값을 대입할 때는 대입하는 숫자 값..

category_image
인파_
2022.09.25
(0)
Language/Java

☕ JAVA 변수의 기본형 & 참조형 타입 차이 이해하기

변수의 기본형 & 참조형 타입 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다. 그리고 자바에서 말하는 데이터 타입(자료형)이란, 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 키워드 이다. 이 데이터 타입(자료형)은 크게 기본형 타입 과 참조형 타입으로 구분 된다. 기본형(primitive type) : 계산을 위해 실제 값을 저장한다. 참조형(reference type) : 객체의 주소를 저장한다. null 또는 객체의 주소(4byte, 0x0 ~ 0xffffffff)를 갖는다. 기본형 타입 (Primitive Type) 기본형 타입에는 크게 논리형 (boolean), 문자형..

category_image
인파_
2022.09.24
(0)
Language/Java (JVM)

☕ 가비지 컬렉션 GC 튜닝 절차 맛보기

Garbage Collection 튜닝 자바(Java)가 C 언어에 비해 속도 차이가 나는 이유는 아키텍쳐 설계, 즉 JVM에 있는데, 미리 바이너리 코드로 컴파일되는 C언어에 비하여, 자바는 바이트 코드라는 중간 단계 컴파일을 해석하는데 있어서 시간이 소요되기 때문이다. 그리고 무엇보다 자바 어플리케이션 성능의 가장 큰 비중을 차지하는게 바로 가비지 컬렉션(GC)의 Stop-The-World 이다. 이전 포스팅에서 우리는 지금까지 GC의 힙 메모리 구성 및 동작 원리 그리고 GC의 알고리즘 종류에 대해 알아보았다. 그런데 만일 자바 애플리케이션 성능이 제대로 안나온다면 STW를 줄이기 위해 다른 GC 알고리즘 을 채택해서 돌아가게 하면 되지만, 이도 문제가 해결이 안된다면 비로소 GC 튜닝 이라는 것을..

category_image
인파_
2022.09.22
(0)