본문 바로가기
728x90
반응형

Language30

[Java] SHA 암호화 알고리즘 안녕하세요. J4J입니다. 이번 포스팅은 sha 암호화 알고리즘에 대해 적어보는 시간을 가져보려고 합니다. SHA란? sha는 secure hash alogirthm의 약자로 해시를 이용한 암호화 알고리즘입니다. sha는 크게 다음과 같이 나뉩니다. sha-0 sha-1 sha-2 sha-0은 최초로 만들어진 sha함수를 일컫는 말입니다. 그리고 이후로 sha-0을 변형하여 등장한 것이 sha-1입니다. 여기서 또다시 변형이 이루어져 sha-224, sha-256, sha-384, sha-512 등의 암호화 방식이 등장했는데 이들을 sha-2라고 일컫습니다. sha-0과 sha-1은 160비트의 해시값을 만들어내는 방식이고 특히 sha-1은 SSL, TLS, SSH 등의 많은 프로토콜과 프로그램에서 사용.. 2021. 11. 8.
[Java] NodeJS와 매핑되는 AES 암호화 (Feat. React) 안녕하세요. J4J입니다. 이번 포스팅은 자바에서 노드와 매핑되는 aes암호화 방식에에 대해 적어보는 시간을 가져보려고 합니다. AES 암호화 회사에서 업무를 보던 도중 react에서 aes암호화 처리가 된 데이터를 spring에 넘겨주고 spring에서 복호화를 하여 데이터를 확인해야 하는 상황이 생겼었습니다. aes암호화를 하는 방법은 검색을 해봤을 때 정말 여러 가지 방법이 있는 것으로 확인되지만 react는 react에서만, spring은 spring에서만 서로 암복호화가 되었습니다. 문제를 해결하기 위해 여러가지 시도를 해봤고 그중 발견한 방법에 대해 글을 남겨놓으려고 합니다. 우선 aes 암호화 방식은 aes128, aes192, aes256 등의 방식들이 존재하는데 key의 길이가 길어질수록.. 2021. 11. 2.
[Java] URLConnection을 이용한 API 호출 안녕하세요. J4J입니다. 이번 포스팅은 url connection을 이용한 api 호출에 대해 적어보는 시간을 가져보려고 합니다. 최근 회사 업무와 카카오 공채 2차 알고리즘 준비를 하다 보니 자바를 이용하여 rest api를 호출하는 코드를 자주 다루게 되었습니다. 하지만 시간이 지나면 결국에 다시 까먹게 될 것이고 현재 알고 있는 내용을 정리해 보고자 작성하게 되었습니다. 자바에서 rest api를 호출하는 방법은 여러가지가 있는 것으로 보입니다. 그리고 그런 방법들은 어떨지는 모르겠으나 제가 사용하는 방법은 json클래스를 사용하기 위해 jar파일을 등록해야 하기 때문에 jar파일부터 프로젝트에 집어넣어 보도록 하겠습니다. 들어가기에 앞서 아래 내용들은 자바를 위한 내용들입니다. 만약 스프링에 사.. 2021. 10. 2.
[JavaScript] 비동기 처리와 Callback, Promise, Async/Await 안녕하세요. J4J입니다. 이번 포스팅은 비동기와 callback, promise, async/await에 대해 적어보는 시간을 가져보려고 합니다. 비동기란? 비동기라고 하는 것은 간단하게 말씀드리면 특정 기능이 수행될 때 해당 기능이 모두 완료될 때까지 기다리지 않고 다른 기능들을 수행하는 것을 의미합니다. 대표적으로 사용되는 곳이 서버쪽과 데이터를 주고받을 때 사용되는데 클라이언트에서 서버 쪽에 비동기 요청을 해놓고 클라이언트에서는 다른 작업을 수행하고 있다가 서버 쪽에서 모든 작업이 완료되어 response를 해주면 그 순간 전달받은 데이터를 클라이언트에서 사용하는 방식입니다. 장/단점 비동기처리를 사용했을 때의 장점은 작업 처리 속도가 빨라진다는 것입니다. 서버에 작업 처리를 요청해두고 클라이언트.. 2021. 6. 29.
[JavaScript] 클로저 (Closure) 안녕하세요. J4J입니다. 이번 포스팅은 클로저에 대해 적어보는 시간을 가져보려고 합니다. 클로저란? 클로저는 내부 함수가 외부 함수의 환경을 기억하는 것을 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정해보겠습니다. 코드를 해석해보면 myLog라는 변수에는 getLog함수가 저장되어 있는 상황입니다. 그리고 myLog에 파라미터를 집어넣어 getLog함수를 실행시켜 봤더니 'message comment: hi!'라는 값이 출력이 되었습니다. 일반적으로 getLog함수만을 위와 같이 정의하여 사용하게 된다면 message라는 변수값을 찾지 못해 에러가 발생되는 것이 정상적입니다. 하지만 이런 생각과 달리 위의 코드는 정상적으로 실행되었고 심지어 Log함수에서 저장한 message변수값이 그대로 담.. 2021. 6. 22.
[JavaScript] This와 Call, Apply, Bind 안녕하세요. J4J입니다. 이번 포스팅은 this와 call, apply, bind에 대해 적어보는 시간을 가져보려고 합니다. This란? this라고 하는 것은 코드를 실행한 object를 의미합니다. 그리고 다음 코드와 같이 일반적으로 어느 상황에서든 this값을 출력해보면 항상 Window가 출력이 됩니다. 하지만 이런 this값이 바꿔지는 경우도 당연히 존재하고 다음과 같은 방법들이 있습니다. 객체 내부에 함수 선언 new키워드 사용 call, apply, bind 메서드 사용 객체 내부에 함수 선언 객체 내부에 함수를 선언하는 예제 코드는 다음과 같은 코드가 있습니다. obj라는 이름의 객체 내부에 log라는 함수를 선언하여 this를 출력해봤습니다. 그 결과 {a: 3, log: f}라는 결과.. 2021. 6. 21.
[JavaScript] Lexical Scope 안녕하세요. J4J입니다. 이번 포스팅은 Lexical Scope에 대해 적어보는 시간을 가져보려고 합니다. Lexical Scope란? lexical scope는 자바스크립트에서 변수를 찾아 사용할 수 있는 범위를 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정해보겠습니다. getName이라는 함수 내부에서 name이라는 변수를 출력해보면 함수 내부에서 name이라는 변수를 선언한 적이 없지만 'name'이라는 값이 출력이 됩니다. 왜냐하면 getName이라는 함수에서는 자기 자신에게 name이라는 변수가 없다면 상위 실행 문맥에 존재하는 name변수를 탐색하여 찾은 변수값을 출력해주기 때문입니다. 그리고 이처럼 사용할 수 있는 변수값들의 범위를 lexical scope라고 합니다. Lexica.. 2021. 6. 20.
[JavaScript] 실행 문맥 (Execution Context) 안녕하세요. J4J입니다. 이번 포스팅은 실행 문맥에 대해 적어보는 시간을 가져보려고 합니다. 실행 문맥이란? 실행 문맥은 말 그대로 자바스크립트에서 코드가 실행되는 문맥을 의미하는 추상적인 용어입니다. 문맥마다 소유하고 있는 변수, 상위 문맥들의 변수를 찾는 스코프 등에 대한 정보들을 가지고 있습니다. 실행 문맥은 3가지로 나눌 수 있습니다. 전역 실행 문맥 함수 실행 문맥 Eval 실행 문맥 전역 실행 문맥은 자바스크립트가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. 함수 실행 문맥은 함수가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. Eval 실행 문맥은 Eval 함수가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. 실행 문맥 속성 실행 문맥의 속성 값들도 3가지가 존재합니다. arg.. 2021. 6. 20.
[JavaScript] == vs === 안녕하세요. J4J입니다. 이번 포스팅은 ==과 ===를 비교해보는 시간을 가져보려고 합니다. == 자바스크립트에서 사용되는 == (equal)은 다음과 같은 특징을 가지고 있습니다. 값을 비교할 때 사용됨 강제 형 변환을 먼저 수행한 뒤 값이 같은지를 비교 좀 눈에띄는 특징은 강제 형 변환을 먼저 수행한다는 것입니다. 강제 형변환을 하기 때문에 타입이 서로 다르지만 값이 같을 경우에는 true를 반환하게 되어 실수 값과 문자열을 비교하더라도 true가 나올 수 있는 상황이 발생됩니다. 간단한 예시를 들면 다음과 같은 결과들이 나올 수 있습니다. === 자바스크립트에서 사용되는 === (strict equal)은 다음과 같은 특징을 가지고 있습니다. 값을 비교할 때 사용됨 타입과 값을 모두 같은지를 비교.. 2021. 6. 16.
[JavaScript] 함수 표현식 / 함수 선언식 안녕하세요. J4J입니다. 이번 포스팅은 함수 표현식과 함수 선언식에 대해 적어보는 시간을 가져보려고 합니다. 함수 표현식 함수 표현식이란 함수를 정의할 때 자바스크립트 변수에 정의된 함수들을 저장하는 것을 의미합니다. 예를 들어 다음 코드들처럼 let, const, var와 같은 자바스크립트 변수에 함수를 생성하여 저장하는 방식이 함수 표현식입니다. 함수 선언식 함수 선언식은 function 키워드 옆에 함수 명을 지정하여 함수를 정의하는 방식입니다. 예를 들어 다음 코드들처럼 함수를 생성하는 것들이 함수 선언식을 이용한 방식입니다. 차이점 우선 함수 표현식과 함수 선언식은 모두 함수를 정의할 때 사용한다는 공통점을 가지고 있습니다. 하지만 그와 달리 차이점들도 존재합니다. 제가 알고 있는 차이점은 다.. 2021. 6. 15.
[JavaScript] 호이스팅 (Hoisting) 안녕하세요. J4J입니다. 이번 포스팅은 호이스팅에 대해 적어보는 시간을 가져보려고 합니다. 호이스팅이란? 호이스팅이라고 하는 것은 선언된 변수들을 최상단으로 끌어올려주는 것을 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정하겠습니다. 일반적인 상황에서 해당 코드를 해석해보면 a라는 변수가 선언된 위치에 도달하기 전에 a변수를 사용했기 때문에 에러가 발생될 것이라고 생각을 할 수 있습니다. 하지만 해당 코드는 호이스팅에 의해 에러가 나지 않습니다. 왜냐하면 호이스팅이 되어 자바스크립트가 인식하는 실제 코드는 다음과 같기 때문입니다. 참고적으로 위의 코드는 a변수를 출력했을 때 3이라는 값이 나오지 않고 undefined라는 값이 나오게 됩니다. 그리고 이렇게 변수 선언 위치를 최상단으로 끌어올려주.. 2021. 6. 14.
[Java] URL을 이용한 파일 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 파일 업로드에 대해 적어보는 시간을 가져보려고 합니다. 이전에 2021.03.08 - [IT/Java] - [Java] URL을 이용한 이미지 업로드라는 포스팅을 작성한 적이 있는데 이번에 포스팅될 내용은 이미지뿐만 아니라 pptx, jar, txt 등의 다른 파일들도 업로드를 할 수 있습니다. 다른 말로는 이미지 업로드 방식의 상위 버전(?)일 수도 있겠습니다. 적용 방법 업로드 할 타겟 파일을 만들기 위해 텍스트 파일 하나를 첨부해보겠습니다. 위의 파일을 다운로드하는 URL은 https://blog.kakaocdn.net/dn/bhK3bF/btqZ3fko0Nb/GXa1NlyVQzNhT4GYZDeoL1/uploadTestFile.txt?attac.. 2021. 3. 15.
[Java] Jsoup을 이용한 html 파싱 안녕하세요. J4J입니다. 이번 포스팅은 Jsoup을 이용한 html 파싱에 대해 적어보는 시간을 가져보려고 합니다. 파싱이란? 파싱은 한글로 뜻풀이를 해보면 구문 분석이라는 뜻으로 문장을 이루고 있는 구성 성분을 분해하여 구조화하는 것을 의미합니다. 이게 무슨 말이냐? 간단하게 말하면 화면을 만들기 위해 사용되는 html태그 및 정보들을 가져와 새로운 구조를 만든다고 생각하면 됩니다. 그리고 자바에서 html 파싱을 할 수 있도록 도와주는 라이브러리가 Jsoup입니다. html을 파싱하는 이유에는 사람들마다 다른 이유들이 존재하겠지만 저 같은 경우는 보통 웹 페이지에 있는 데이터를 가져와 여러 가지 테스트를 하고 싶을 때 사용합니다. 하지만 웹 페이지에 있는 데이터를 가져올 때 조심해야 될 점은 가져와.. 2021. 3. 9.
[Java] URL을 이용한 이미지 업로드 안녕하세요. J4J입니다. 이번 포스팅은 URL을 이용한 이미지 업로드에 대해 적어보는 시간을 가져보려고 합니다. 만약 본인의 파일을 선택하여 서버에 업로드하는 방법에 대해 알고 싶으시면 다음 포스팅을 참고하시면 됩니다. - 2021/03/04 - [IT/Spring] - [Spring] 파일 업로드 - MultipartFile(With. React) - 2021/03/05 - [IT/Spring] - [Spring] 파일 업로드 - MultipartRequest(With. React) 적용 방법 업로드를 할 타겟 이미지를 만들기 위해 임의로 사진 파일을 등록해보겠습니다. 등록한 위의 이미지의 경로는 https://blog.kakaocdn.net/dn/VIxFi/btqZqqf3QFS/n2otuLtHQo8.. 2021. 3. 8.
[Java] 자바기초 - 컬렉션(Collection) 안녕하세요. J4J입니다. 이번 포스팅은 컬렉션에 대해 적어보는 시간을 가져보려고 합니다. 컬렉션이란? 컬렉션이라고 하는 것은 자바에서 데이터를 유용하게 담기 위해 만들어 둔 인터페이스로 컬렉션 프레임워크라고도 많이 부릅니다. 말 그대로 인터페이스이기 때문에 사용자들이 사용하기 위해서는 인터페이스를 상속받아 정의해 둘 필요가 있었고 정의된 클래스들을 자바에서 제공하여 언제 어디서든 사용할 수 있습니다. ※ 인터페이스에 대해 모르신다면? [Java] 자바기초 - 추상클래스와 인터페이스(abstract/interface) 종류 컬렉션의 종류는 List, Set, Map 총 3가지가 있습니다. 이 3개는 모두 인터페이스이기 때문에 위에 말씀드린 것처럼 해당 인터페이스를 상속받아 구현시켜둔 클래스들이 다양하게 .. 2020. 12. 31.
[Java] 자바기초 - 제네릭(Generic) 안녕하세요. J4J입니다. 이번 포스팅은 제네릭에 대해 적어보는 시간을 가져보려고 합니다. 제네릭이란? 자바로 프로그래밍된 코드들을 보시면 인스턴스를 생성할 때 꺽쇠("")들로 표현된 코드들을 보신 경험이 있을 것인데 이런 코드들이 모두 제네릭이 적용된 코드들입니다. 제네릭이라고 하는 것은 클래스 내부에서 사용될 변수들의 타입을 지정해주는 역할을 수행합니다. 다른 표현으로는 담고 싶은 데이터 타입을 정해 다른 데이터 타입은 담을 수 없도록 해준다 라고 말할 수 있습니다. 제네릭을 일상생활에서 비유하자면 뷔페에 갈 때 이쪽은 한식코너, 저쪽은 양식코너와 같이 분류하는 것이라고 생각하면 됩니다. 제네릭을 사용하는 이유는 원치 않은 데이터 타입을 담을 때 컴파일 과정에서 발견하기 위해 사용됩니다. (코드 작성.. 2020. 12. 28.
[Java] 자바기초 - 객체지향(OOP) - 다형성(Polymorphism) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 다형성에 대해 적어보는 시간을 가져보려고 합니다. 다형성이란? 다형성이라고 하는 것은 다형성이라는 말을 그대로 풀이하여 여러 가지 형태를 가질 수 있는 특성을 의미합니다. 다른 표현으로는 자바에서 하나의 인스턴스를 생성할 때 한 클래스에 대해서만 생성하는 것이 아니라 여러 클래스에 대해 인스턴스를 생성할 수 있다는 것을 말합니다. 무슨 말인지 이해가 되지 않으실 것 같아 바로 코드로 표현해보겠습니다. package oop; public class Animal { String zooName = "J4J Zoo"; public void getZooName() { System.out.println(zooName); } public .. 2020. 12. 27.
[Java] 자바기초 - 객체지향(OOP) - 상속화(Inheritance) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 상속화에 대해 적어보는 시간을 가져보려고 합니다. 상속화란? 자바에서 상속화라고 하는 것은 부모 클래스에 정의된 변수 및 메서드 들을 자식 클래스에서 상속받아 사용할 수 있게 되는 것을 말합니다. 일상 속에서 부모의 재산을 그대로 상속받는다는 것과 유사한 개념이라고 생각하시면 됩니다. 상속화를 사용하는 이유는 무엇일까요? 그 이유는 코드의 재사용성을 극대화시키기 위해서입니다. 상속화를 사용한다면 부모 클래스에서 정의한 변수 및 메서드들을 여러 자식 클래스에서도 사용할 수 있기 때문에 재사용성이 증가하게 되고 더불어 자식 클래스에서는 동일한 코드들을 다시 작성할 필요가 없기 때문에 코드가 간결해지게 됩니다. 또한 사용 중인 메서.. 2020. 12. 26.
728x90
반응형