본문 바로가기

TIL173

성공적인 자체 워크샵 (22.11.06 TIL) '하루만 쉬고 싶다'를 입에 달고 살던 요즘, 아무래도 환기가 필요하다는 생각에 Boni, Jules (a.k.a Boni's sister)와 함께 2주 전부터 계획한 '자체 워크샵(겸 호캉스) 떠나기'를 오늘 드디어 실행했다. 비록 멀리 떠난 것도 아니고 서울 한복판에 있는 호텔에서 단출하게 1박 2일을 보내는 것이지만 그래도 또 친구와 함께 있으니까 확 리프레쉬되는 게 기분이 참 좋은 하루이다. 아무래도 '바쁘다 바빠 현대사회!'를 외치는 취준생 2명에 현업 디자이너 한 명이 모이다보니 호캉스를 와서도 놓을 수 없는 현생이었지만 놀러만 온 것은 아니라서 집중해서 작업하다가도 재미있는 이야깃거리로 수다 떨고, 알면 좋은 알좋신잡이 있으면 공유하기도 하고, 또다시 집중해서 작업하는 등 알찬 하루를 보냈다.. 2022. 11. 6.
옵셔널 체이닝 '?.' (22.11.05 TIL) 이번 12주차는 리액트를 배우는 주차! 그 중 아샬님이 최신 문법이라고 하시며 알려주신 옵셔널 체이닝. const id = (latestTask?.id || 0) + 1; 한 번에 봐서는 무슨 문법인 지 알 수 없다. 일단 먼저 공식문서를 살펴보자. 옵셔널 체이닝 (optional chaining) ?. 을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있다고 한다. 옵셔널 체이닝이 필요한 이유 사용자가 여러 명 있을 경우, 그 중 몇명은 주소 정보를 가지고 있지 않다고 가정할 때 user.address.street 으로 주소 정보에 접근하면 에러가 발생할 수 있다. let user = {}; // 주소 정보가 없는 사용자 alert(user.address.street); // un.. 2022. 11. 5.
Java - Stack 과 Queue (22.11.04 TIL) 오늘 코딩 테스트 풀 때 하드코딩으로 구현하다가, 검색해보니 Stack 을 쓰면 쉽게 풀리는 걸 알게되어서 정리하는 글! 1. Stack 1) LIFO (후입선출, Last In First Out) : 나중에 넣은 객체가 먼저 빠져나가는 자료 구조. 2) LIFO 자료구조를 구현한 클래스로 Stack 을 응용한 대표적인 예가 JVM 스택 메모리. 3) 스택의 활용 예시) 수식 계산, 수식 괄호 검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 4) 주요 메서드 리턴타입 메서드 설명 boolean empty() 스택이 비어있는 지 알려줌. Object push(Object item) 주어진 객체(item)를 스택에 넣음. Object peek() 스택의 맨 위 객체를 가져옴. 객체를 스택에.. 2022. 11. 4.
Checked Exception vs Unchecked Exception (22.11.03 TIL) 에러(Error) 와 예외(Exception) 프로그래밍에서 예외란, 입력 값에 대한 처리가 불가능하거나 프로그래밍 실행 중에 참조된 값이 잘못 된 경우 등 정상적인 프로그램의 흐름을 어긋나는 경우를 말한다. 예를 들어 배열의 범위를 벗어났다거나(ArrayIndexOutOfBoundsException), null 을 참조했다거나(NullPointerException), 존재하지 않는 파일의 이름을 입력한 경우 (FileNotFoundException) 등이 있다. 자바에서 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링할 수 있다. 반면 에러는 시스템에 무언가 비정상적인 상황이 발생한 경우이다. 주로 자바 가상 머신에서 발생하는 것이며, 예외와 반대로 이를 애플리케이션 코드.. 2022. 11. 3.
해시 함수란 (22.11.02 TIL) 를 읽던 중 해시 함수의 개념 정리 하는 겸 쓰는 오늘의 TIL! 해시 함수는 임의의 길이를 가진 데이터를 '특정 길이의 데이터'로 변환하는 과정을 의미한다. 블록 암호화는 원래 값을 각 블록으로 나눠 전체 데이터를 온전히 (원본 데이터와 같거나 더 큰 크기로) 암호화했다. 하지만 해시 함수는 원본 데이터 값이 얼만큼 길든 상관없이 정해진 길이로 줄여서 변환해 버린다. 원본 일부가 손실되는 '압축'과 비슷한 형태라고 생각하면 된다. 위 그림에서 입력 값(M)의 길이는 상관없지만, 출력되는 해시 값(H)의 길이는 고정한다. 암호화 알고리즘과 달리 해시 함수에는 키가 없다. 그 대신에 해시 값의 길이가 암호화 알고리즘에서 키 길이와 동일한 역할을 한다. 해시 함수와 블록 암호화 알고리즘은 난수처럼 보이는 결.. 2022. 11. 2.
암호 기법 간단 분류 (22.11.01 TIL) 안전한 암호 시스템을 구축하기 위해서는 누군가 암호문을 보았을 때 원본 메시지와 키 정보를 알 수 없어야 한다. 이렇게 원본 메시지와 키 정보를 감추는 과정을 다른 말로 '혼돈과 확산' 이라고 한다. 혼돈(Confusion)은 암호문에서 키를 알아내기 어렵게 하는 성질이고 확산(Diffusion)은 암호문에서 원본 메시지를 알아내기 어렵게 하는 성질이다. 현대의 '통신'을 수학으로 모델링하고 안전한 통신 개념을 처음으로 정립한 클로드 섀넌(Claude Elwood Shannon) 은 혼돈과 확산을 암호 시스템의 안전성을 확보하려면 꼭 달성해야 하는 목표로 정했다. 이 두 가지 성질이 있어야 비로소 안전한 암호 시스템이라고 말할 수 있는 것이다. 보통 혼돈을 달성하는 여러 방법 중에서 Substitutio.. 2022. 11. 1.