지금까지는 DB 연결 설정 정보를 입력해야 할 때마다 구글링으로 티스토리를 찾아보면서 설정했다.이번에 프로젝트를 하면서는 한번 공식문서에 의존해서 연결 정보를 입력해봐야겠다는 생각이 들어 공식문서를 읽고 이해한 내용을 정리해본다.스프링은 SQL 과 NoSQL 모두 연동할 수 있으나, 이 글은 SQL 기준으로 정리하였다. DataSource 설정스프링은 JDBC를 직접 이용해서 DB와 소통하는 것부터, ORM 기술을 이용해서 DB와 소통하는 것까지 폭넓은 방법을 제공한다. In-Memory DB먼저 개발환경에서는 보통 인-메모리 데이터베이스를 사용하는 경우가 많다. (in-memory embedded database)이름 그대로 메모리에 데이터를 저장하는 방식의 DB이므로, 데이터가 영구적으로 저장되지 않..
GDSC 개발팀 코드를 보면서 다양한 application.yml 파일이 나눠진 것을 보고 이렇게도 쓸 수 있구나 하는 것을 알게 되었다.구체적으로 profile 을 어떻게 분리할 수 있고, 설정 파일은 어떻게 작성해야 하는지 공식문서를 보면서 학습한 내용을 정리해본다. Profile스프링 profile을 사용하면 어플리케이션 설정을 분리하고, 분리된 설정을 특정 환경에서만 적용할 수 있다.@Configuration, @Component, @ConfigurationProperties 어노테이션 위에 @Profile 어노테이션을 통해 어떤 프로파일에서 이 빈을 등록할 것인지 명시할 수 있다.만약 @ConfigurationProperties 어노테이션이 @EnableConfigurationProperties..
전에 같은 컴퓨터공학과 밴드인 깔루아와 고스락이 자체 웹 사이트를 만들어서 홍보한 것을 본 적이 있다.(이번에 참고하려고 에타 열심히 찾아봤는데 지금은 안 보인다. 내가 착각한건가..?)그래서 전에 같은 동아리 동생에게 '우리도 웹사이트 만들면 재밌겠다' 라는 얘기를 한 적이 있다.그리고 그 친구가 진짜 다른 동아리 사람을 모아서 방학부터 6명으로 팀 프로젝트를 시작하게 되었다. 24/12/19 - 첫 회의첫 회의에서는 프로젝트 목표에 대해 이야기했다.처음에는 러프하게 '웹사이트 있으면 좋겠다'. '연습실 예약 기능 있으면 좋겠다'.로만 가볍게 생각했던 기능에 더해 프로젝트를 통해 어떤 것을 만들고 어떤 문제를 해결하고 싶은지 논의하였다. 6명이 각자 의견을 모아서 큰 기능에 대한 다양한 아이디어를 ..
2024년 2학기 회고에서는 2학기 활동을 정리해봤다면, 이번 글에서는 올해 세웠던 목표 중 이룬 것들과 이루지 못한 것들, 그리고 이루지 못한 목표들에 대한 원인을 고민해보면서 반성을 적어보려고 한다. 2024년 목표진로 관련 목표 1. 전공 과목 모두 A+ 맞도록 공부하기아직 문제해결기법의 성적이 나오지 않았지만, 이 과목은 절대 A+이 아님을 알고 있어서 이 목표는 이루지 못했다.그래도 컴구, 운체, 디비, 네트워크 주요 과목은 모두 A+을 받았으니 그 부분은 만족스럽다. 그렇다면 문해기는 왜 A+을 달성할 수 없었을까?내가 생각한 이유(사실 핑계..)는 언어의 장벽에 대한 부담 → 그로인한 흥미 저하 → 공부시간 감소 가 문제였다고 생각한다. 나는 시험을 칠 때 '이건 봤었는데, 공부를 안해서..
어제 마지막 시험이 끝나면서 드디어 3학년 2학기를 마쳤다.어디서 듣기로는 우리 컴공과는 3-1이 힘들고, 3-2는 오히려 널널하다고 했는데 나는 정반대였던 것 같다.(활동을 많이 해서가 아니라 전공이 너무 힘들었다.. 전공만 놓고 봤을 때의 이야기) 먼저 이번 학기에 했던 활동을 사소한 것까지 기억나는 대로 다 적어보면 다음과 같다. 1. 5전공 (feat. 에브리타임)2. 초급 알고리즘 스터디장3. 초급 백엔드 스터디 멘토4. GDSC 개발팀 BE 합류5. 밴드 동아리 공연6. DB 전공 스터디7. 우테코 7기 프리코스8. LG CNS 학사 인턴 지원 주변에서는 학교 수업 들으면서 스터디 2개를 진행하는게 가능하냐고 했지만,사실 스터디 활동에서 시간이 제일 많이 드는 부분은 강의 자료를 만드는 것..
PoS 이더리움은 PoS 방식의 컨센서스를 사용한다.알고리즘은 다음과 같다. 1. 각 노드는 32ETH 를 미리 예치한다.2. 랜덤하게 validator 를 선택한다.3. validator 가 블록을 만들어 뿌린다.4. 나머지 노드가 해당 블록의 유효성을 검증하고 투표한다.5. 2/3 이상이 찬성하면 블록체인에 포함된다. 이 과정에서 나쁜 행동을 하는 경우 (검증자, 투표 노드 모두) 자신이 담보로 맡긴 이더리움을 잃는 패널티를 받는다.투표를 할 때는, 내가 거짓투표를 하지 않았다는 증거로 내 서명을 포함해서 블록을 만들기 때문에, 블록에는 찬성한 사람들의 서명이 모두 들어있게 된다. 이때 모든 validator 의 서명을 다 포함하면 블록의 크기가 너무 커지기 때문에 BLS 시그니처를 사용한다.이는 하..
현재 이더리움은 크게 위와 같은 구조로 되어있따.먼저 EVM을 돌리고 있는 노드가 있고, Light Client 라는 전체 노드를 다 가진게 아니라 내 트랜잭션과 관련된 뭔가가 발생하면 그것만 모니터링 하는 노드가 있을 수 있고, 중앙화된 API 서버를 통해 이더리움 네트워크의 블록 채굴 내역등을 조회할 수 있는 서비스 등이 존재한다. (이런 게 조금 아이러니 하다. 탈중앙화 서비스의 정보를 얻기위한 서버는 중앙화라는 것) 그래서 현재는 이렇게 중앙화된 서버에서 이더리움과 관련된 정보를 제공하고 있지만, 나중엔 궁극적으로 이것까지 탈중앙화를 할 것이라고 이더리움 파운데이션은 예측하고 있다. 이는 사용자 인터페이스용으로 존재하는 이더리움과 별개의 P2P 네트워크라고 보면 된다. 2022년 PoS 로 ..
Account 이더리움 account는 크게 2가지가 있다. - externally owned accounts (eoa) : 스마트 컨트랙트를 갖고 있지 않으며, private key로 관리되는 account- contract account(ca) : 스마트 컨트랙트(코드)를 갖고 있으며, 코드로 관리되는 account 1번 계좌는 평범한 일반 유저의 계좌이다.2번 계좌는 만들어진 account, 코드가 포함된 어카운트이다. contract account 는 누군가 스마트 컨트랙트를 이더리움에 업로드하고 싶다고 할 때 '만드는 것' 이며, 이때 gas를 지불해야 한다.그래서 eth를 지불하면서 요청을 보내면 보통 별 문제 없이 만들어진다. (gas = eth 인가..?)업로드된 smart contrac..
이더리움은 2013년에 비탈릭 부테린이 만든 블록체인 프로젝트이다.이더리움의 목표는 탈중앙화된 어플리케이션(dAPP)을 만드는 플랫폼이 되는 것이 목표였다.(하지만 부테린의 영향력이 세서 오히려 탈중앙화에 방해가 되고 있다고..) 보통의 어플리케이션은 서버-클라이언트 구조로 되어있지만,이더리움의 목표는 중앙화된 서버가 없는 어플리케이션을 위한 플랫폼이 되는 것이다.더 정확히는 이더리움은 smart contract 라는 코드 (일종의 함수)를 실행하는 플랫폼이다.비트코인에서도 제한적으로 스크립트 실행을 허용했지만, 이더리움은 그보다 제한을 더 풀어서 어떠한 코드도 실행이 될 수 있다.이때 코드의 실행이 전세계에서 분산되어 일어나므로, 일종의 글로벌 컴퓨터와 같이 동작한다.그리고 코드의 실행 결과는 컨센서스..
이번 글에서는 지금까지 배운 내용을 토대로 RL, CFL, TM 을 비교해본다. aⁿ 은 레귤러 언어로서, DFA로 그릴 수 있었고, RE로 표현할 수도 있었고, 위와 같은 RG로 표현할 수도 있었다.(RG는 Linear Grammar 중에서 변수가 왼쪽에만 있거나, 오른쪽에만 있는 형태이면 된다.) CFL 의 경우, 대표적인 예시가 aⁿbⁿ 으로, 펌핑 렘마를 통해 RL 가 아님을 보일 수 있었고,CFG 를 통해 표현하거나, NPDA를 통해 표현할 수 있었다. 마지막으로 CFG 가 아닌 언어로 대표적인 것이 aⁿbⁿcⁿ 이었다. (이때, n ≥ 1 이어야 한다. 튜링머신은 λ를 취급하지 않기 때문)이 언어는 펌핑 렘마를 통해 CFL이 아니라는 것을 보일 수 있었고, 지난 글에서 마지막 예제 문..