본문 바로가기

전체 글451

기술면접 강의 안녕하세요 이번에 개발자 기술면접 강의를 열게 되었습니다. 지금까지 이직하면서 정말 많은 면접을 봤습니다. 신기했던 점은 기술면접에 나오는 질문들은 정해져있습니다. 지금까지 자주 나왔던 질문들을 엮어서 강의로 만들어봤습니다. https://www.inflearn.com/course/%EB%84%A4%EC%B9%B4%EB%9D%BC%EC%BF%A0%EB%B0%B0-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91 20번 넘게 면접 본 네카라쿠배 개발자의 이직 기술면접 기출 강의 - 인프런 | 강의 직접 2년 만에 연봉을 2배 이상 올려보고 알려주는 기술면접 기출문제 해설 강의입니다. 지금까지 20번 넘게 면접을 보았던 경험을 녹여 알려드립니.. 2021. 8. 9.
React 프로젝트에서 eject 를 하거나 바닥부터 만들어야 하는 이유 create-react-app 을 써서 만들면 초반에 웹팩 관련 설정을 하지 않아도 되어서 되어서 편리하다고 생각 할 수 있다. toss slash 컨퍼런스의 발표 내용 중에서 CRA로 앱을 만들면 몇가지 설정을 하기 불편해서 하지 않는다는 내용이 있다. 무슨 설정일까 궁금했다. 1. import 경로를 alias 하는데 문제가 있다. import aaa from '@project/component' 이렇게 작성하면 편리하다. import aaa from '../../../../components' 이렇게 작성하는 것은 불편하다. @project/component 이렇게 쓰기 위해서 alias 경로를 수정하려면 tsconfig.json 같은 파일들을 조금 수정해야 한다. 결론적으로 CRA로 만들면 eje.. 2021. 7. 28.
프론트엔드 웹 서비스에서 우아하게 비동기 처리하기 (feat. Toss Slash 컨퍼런스) 문제가 있는 코드 예시 function fetchAccounts(callback) { fetchUserEntity((err, user) => { if(err) { callback(err, null); return; } fetchUserAccounts(user.no, (err, accounts) => { if(err) { callback(err, null); return; } callback(null, accounts); }); }); } 안 좋은 이유 1. err , 성공 경우가 전혀 나뉘어있지 않다. 안 좋은 이유 2. 매번 비동기 호출을 할때마다 에러 처리를 해야한다. 좋은 코드로 바꾼 예 async function fetchAccounts() { const user = await fetchUserE.. 2021. 7. 15.
블록체인 / 이더리움 / 클레이튼 / 트랜잭션 블록체인은 트랜잭션으로 변화하는 상태 기계다 현재 블록은 이전블록의 상태 + 현재 블록의 내용을 담는다. 변경하는 값들을 계속 반영한다. 이전 블록의 최종 상태는 현재 블록의 초기상태이다. 트랜잭션과 가스 트랜잭션의 목적은 블록체인의 상태를 변경하는 것 가스는 트랜잭션을 처리하는데 발생하는 비용 이더리움은 가스비 많이 내면 트랜잭션이 우선 처리 된다. 클레이튼은 가스비 많이 낸다고 우선처리 되지 않는다. 그냥 선착순 ----------------------------------------------------------------------------------------------------------------------- 트랜잭션과 서명 트랜잭션을 보내려면 그 지갑으로 검증할 수 있는 서명이 필요하.. 2021. 7. 14.
블록체인 네트워크 합의 - consensus 블록체인에서는 각각의 노드에 원장을 갖고 있다. 그래서 현재 하려는 트랜잭션이 맞는지 노드들끼리 합의를 한다. POW Proof Of Work - 블록체인에서 신규 블록을 제안하기 위해서 해야 하는 일 작업을 증명하면 신원을 몰라도 신규 블록을 제안할 권리를 가진다. 합의 알고리즘 합의하는 방법이 몇가지 있다. POW 지금의 블록에는 해시 값이 있다. nonce 는 현재 블록을 해시한 값을 바꾸기 위한 임의 값이다. hellonode를 100 번 해시해도 항상 같은 값이 나온다. 1 + hellonode 를 해시하면 다른 값이 나온다. nonce + 을 하면 다른 해시 값이 나오는 것이다. BFT-variants - BFT 기반 합의 알고리즘 - 작은 그룹 (참여 노드가 20개.. 2021. 7. 13.
블록체인 앱 개념도 이렇게 블록체인 노드들이 소통할때 세부적으로는 아래 그림과 같은 구조가 된다. 노드마다 로컬에 블록체인 DB의 복사본을 갖고있다. json rpc를 통해서 노드들끼리 통신한다. client process는 전반적으로 로컬 노드가 이더리움 앱을 실행하도록 하는 주체다. memory pool 은 로컬 메모리다. jvm이 java를 실행한다면 evm은 솔리디티, evm바이트 코드로 작성된 스마트 컨트랙트를 실행한다. 2021. 6. 18.
solidity 디앱개발 시작 솔리디티 hello world https://remix.ethereum.org/ Remix - Ethereum IDE remix.ethereum.org 솔리디티 앱 개발을 테스트 해볼수 있는 사이트다. 처음에 들어가면 Ballot.sol 같은 파일이 한 3개 있다. sol 파일은 모두 지워주면 된다. 그리고 SimpleCoin.sol 이라는것을 만들었다. contract SimpleCoin { mapping (address => uint256) public coinBalance; constructor() public { coinBalance [0x14723A09ACff6D2A60DcdF7a4AFf308FDDC160C] = 10000; } function transfer(address _to, uint25.. 2021. 6. 17.
git rebase 하는 방법 깃에 커밋을 자잘하게 너무 많이 했을때 기록을 바꾸고 싶을 수 있다. 최종 진짜최종 정말진짜최종 이건진짜최종커밋 ..... 이렇게 커밋 되었을때 맨 마지막 것 1개만 남기고 나머지 기록이 없던 것처럼 할 수 있다. rebase 를 사용하면 된다. git rebase -i @~2 @~2는 최근 2개 커밋들 중에서 삭제할 커밋을 고르겠다는 의미이다. pick f711f6d 최종 pick 21015de 최종최종 // 여기서 pick을 s로 바꿔준다. pick v3fer0d 정말정말최종 // 여기서 pick을 s로 바꿔준다. # Rebase 710f0f8..a5f4a0d onto 710f0f8 # # Commands: # p, pick = use commit # r, reword = use commit, but.. 2021. 5. 14.
git merge 할때 한쪽 브랜치 내용 선택하기 git merge 할때 conflict 가 많이 나는 경우가 있다. 겹칠때 한쪽 브랜치를 선택하도록 미리 옵션을 줄 수 있다. git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EA%B3%A0%EA%B8%89-Merge Git - 고급 Merge Merge 작업할 때 공백 처리 옵션을 사용하면 Git이 꽤 잘해준다. 하지만, Git이 자동으로 해결하지 못하는 때도 있다. 이럴 때는 외부 도구의 도움을 받아 해결한다. 예를 들어 Git이 자동으로 해결해 git-scm.com merge 명령을 사용할 때 -Xours 나 Xtheirs 옵션을 추가하면 된다. git merge -Xours targetBranch 현재 브랜치 기준으로 덮어쓰기 ( ours 우리 소스를 쓸게! u.. 2021. 5. 11.