전체 글

푸더기의 다사다난한 블로그입니다
서류 합격! 사실 이번년도에 삼성 인턴을 넣을 생각은 없었습니다. 대학원 생각도 있었고, 막학년이니 졸업유예하고 1년 쉬어가고 싶다는 생각도 했었기 때문입니다. 그러나 코딩테스트 한 번 봐보고 싶기도 하고, 그래도 나름 삼성인데 한 번 해보면 좋지 않을까? 하며 서류 마감일 당일에서야 자소서를 적기 시작하고 서류 마감 1분 전에 제출했습니다ㅋㅋㅋ 그래서.. 백업본도 없어서... 면접까지 가는게 제일 무서워요.. 자소서 문항은 대충 여기에 왜 지원했는지, 사회 이슈에 대한 소견 등등 항상 나오던 그 문항들 나왔습니다. 프로젝트 관련하여 서술할 곳이 많이 없어서 그건 좀 아쉬웠습니다. 그리고 대학교에서 들은 모든 강의에 대한 학점을 기입하는 문항도 있었어요! 이거 있는 줄 몰랐다가 서류 못넣을 뻔 했습니다...
귀납적 정의? 귀납적 정의는 프로그래밍 언어의 문법과 의미론, 데이터 구조 등을 이해하고 정의하는데 사용된다. 귀납적 정의는 자기 참조적 정의, 유한한 방법으로 무한 집합 정의의 특징을 가진다. 자기 참조적 정의란 집합이나 구조를 그 자체의 용어로 정의한다. 정의할 대상이 그 정의 내에서 자기 자신을 참조한다. 유한한 방법으로 무한 집합 정의란 유한한 설명으로 무한한 요소를 포함하는 집합을 정의할 수 있다. 복잡하고 무한한 패턴과 구조를 간단하고 명확한 규칙으로 표현할 수 있다. 예를 들어, 연결 리스트는 빈 리스트는 연결 리스트이고, 단일 노드 뒤에 연결 리스트가 오면 그것도 연결리스트이다. 이진 트리는 빈 트리는 이진 트리이고 두 개의 자식을 가진 노드가 모두 이진 트리일 경우 그 노드도 이진 트리이..
본 포스팅은 Java17 / Gradle / 인텔리제이 / MacOS 환경에서 쓰여졌다. 서론 스프링부트에서 사용되는 디렉토리(패키지) 구조와 build.gradle등의 설정 파일들을 소개하려 한다. 루트 폴더 스프링부트 프로젝트를 열어보면, 루트폴더에는 .gradle, .idea, build, gradle, src 폴더와 각종 파일이 존재한다. src는 우리가 작성할 소스 코드와 리소스 파일이 저장될 곳이다. 하위 구조는 후술하겠다. build.gradle은 프로젝트의 gradle 빌드 파일로, 의존성 관리, 플러그인 설정, 빌드 구성 등이 정의된다. 상세한 정보는 후술하겠다. .gradle/gradle은 gradle 빌드 도구 관련 설정/캐시 등 관련 파일이 저장되고, .idea는 인텔리제이 관련 설..
본 포스팅은 Java17 / Gradle / 인텔리제이 / MacOS 환경에서 쓰여졌다. 자바 설치 먼저 자바가 안깔려있다면 자바를 설치해야한다. 맥 OS에서는 brew를 통해 손쉽게 설치할 수 있다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew가 깔려있지 않다면, 위 명령어로 설치할 수 있다. brew install openjdk@17 brew를 통해 jdk를 설치한다. 여기서는 Java17을 사용할 것이기 때문에 @를 통해 버전을 명시해주었다. vi ~/.zshrc export JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.3/l..
새해 맞이하고 9일이나 지나서 쓰는 신년 계획...취업.. 결국엔 백엔드백엔드, 참 폭넓은 분야고 그만큼 할게 많다. 근데? 내가 해둔게 없다... 컴퓨터 전공을 시작한 지 벌써 군생활 포함 5년째에 한거라곤 알고리즘, 게임개발, 게임회사인턴. 백엔드는 강의 프로젝트에서 대충 맛보거나 창업동아리에서 맛본 정도. 그 조차도 자바가 너무너무너무너무너무 하기 싫어서 파이썬과 NodeJS로 했다. 게임쪽 많이 해놨으면 거기 가면 되는거 아니냐 싶겠지만 인턴생활동안 현업자분들에게 게임업계실황을 듣고 "아! 여긴 해외는 몰라도 한국은 아닌거같다!" 란 소감을 느껴버려 결국 진로는 돌고돌아 백엔드를 택했다. 사실 시스템이나 데이터에도 관심이 있어서기도 하다. 백엔드로 경력쌓고 이직하는 루트가 제일 안정적으로 보이니까..
Diffie-Hellman Key Exchange 공개값 q = 큰 소수 α = 원시근 비대칭키 생성 Xa = random value (1 < Xa < q-1) Ya = α^Xa mod q 대칭키 생성 K = Yb^Xa mod q ElGamal Cryptography 공개값 q = 큰 소수 α = 원시근 비대칭키 생성 Xa = random value (1 < Xa < q-1) Ya = α^Xa mod q 암호화 k = random value (1 < k < q-1) K = Ya^k mod q C1 = α^k mod q C2 = KM mod q (C1, C2)가 암호문 복호화 K = C1^Xa mod q M = C2*K^-1 mod q RSAES-OAEP 메시지 암호화 DataBlock = Hash(L) ..
UP Process? 소프트웨어를 반복/점진적 개발 단계는 도입 - 고심 - 구현 - 전이가 반복된다. 이 단계들에 요구/분석/설계/구현/테스트/배포 작업을 병렬적으로 진행한다. 시간이 지나며 집중해야하는 작업은 바뀌게 되는데, Inception: 비즈니스 모델링, 프로젝트 관리 Elaboration: 요구사항, 디자인, 환경설정 Construction: 구현, 구성 변경 관리 Transition: 구현, 테스트, 배포, 구성 변경 관리 따위로 나눌 수 있다.
GRASP Pattern? General Responsibility Assignment Software Pattern, OO 디자인의 핵심은 각 객체에 책임을 부여하는 것으로, 책임을 부여하는 원칙을 말하는 패턴이다. 총 9가지의 원칙을 가지고 있다. Information Expert 책임을 수행할 수 있는 데이터를 가지고 있는 객체에 책임을 부여한다. 정보 은닉을 통해 자신의 데이터를 감추고 오직 메소드로만 데이터를 처리하고 외부에는 그 기능(책임)만 제공한다. Creator B 객체가 A 객체를 포함 B 객체가 A 객체의 정보를 기록 B 객체가 A 객체를 긴밀히 사용 B 객체가 A 객체의 생성에 필요한 정보 가짐 위 관계 중 하나라도 포함되면 A의 생성을 B의 책임으로 부여한다. Controller ..
푸더기
푸더기와 푸닥푸닥