목록Tutorials (196)
KoreanFoodie's Study
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 4 : 객체를 사용하기 전에 반드시 그 객체를 초기화하자 핵심 : 1. 기본제공 타입의 객체는 직접 손으로 초기화하자. 2. 생성자에서는, 생성자 본문 내무에 데이터 멤버에 대한 대입문을 넣지 않고 초기화 리스트를 사용하자. 또한 데이터 멤버가 선언된 순서와 똑같이 나열하자. 3. 여러 번역 단위에 있는 비지역 정적 객체들의 초기화 순서 문제는 피해서 설계해야 한다. 비지역 정적 객체를 지역 정적 객체로 바꾸면 된다. 생성자를 다음과 같이 쓰는 것은, 생성과 동시에 '초기화' 하는 것이 아닌, '대입'을 행하는 것이다. class Us..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 3 : 낌새만 보이면 const 를 들이대 보자! 핵심 : 1. const 를 붙여 선언하면 컴파일러가 사용상의 에러를 잡아내는 데 도움을 준다. const 는 어떤 유효범위에 있는 객체에도 붙을 수 있으며, 함수 매개변수 및 반환 타입에도 붙을 수 있으며, 멤버 함수에도 붙을 수 있다. 2. 컴파일러 쪽에서 보면 비트수준 상수성을 지켜야 하지만, 우리는 개념적인(논리적인) 상수성을 사용해서 프로그래밍해야 한다. 3. 상수 멤버 빛 비상수 멤버 함수가 기능적으로 서로 똑같게 구현되어 있을 경우에는 코드 중복을 피하는 것이 좋은데, 이때..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 2 : #define 을 쓰려거든 const, enum, inline 을 떠올리자 핵심 : 1. 단순한 상수를 쓸 때는, #define 보다 const 객체 혹은 enum 을 우선 생각하자. 2. 함수처럼 쓰이는 매크로를 만들려면, #define 매크로보다 인라인 함수를 우선 생각하자. 항목 2의 핵심은, 가급적 선행 처리자보다는 컴파일러와 친하게 지내는 게 좋다는 것이다. 다음과 같은 예를 보자. #define ASPECT_RATIO 1.653 위의 경우, 해당 부분을 디버깅할 때, ASPECT_RATIO 는 컴파일러가 쓰는 기호 테..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 1 : C++ 를 언어들의 연합체로 바라보는 안목은 필수 핵심 : 1. C++ 를 사용한 효과적인 프로그래밍 규칙은, C++ 의 어떤 부분을 사용하느냐에 따라 달라진다! C++ 을 이루고 있는 하위 요소 (Building Block) 은 크게 4 가지이다. C (C 에는 템플릿도 없고, 예외도 없고, 오버로딩도 없다) 객체 지향 개념의 C++ (클래스를 쓰는 C 에 관한 모든 것들. 캡슐화, 상속, 다형성, 가상함수 등) 템플릿 C++ (템플릿 메타 프로그래밍까지) STL (container, iterator, algorithm, fu..
크립토 좀비에서 제공하는 튜토리얼을 통해 배우는 Solidity 문법을 정리하고 있습니다! Lesseon 6 에서는 Web3.js 를 이용해 이더리움과 front-end 사이의 동작에 대해 배울 수 있었다. index.html 이라는 코드에 필요한 자바스크립트 코드를 정리해 놓았다. 이번 장을 정리한 내용은 다음과 같다. 1. Web3.js smart contract 상에서 함수를 호출하고 싶으면, 노드에게 다음과 같은 내용을 전달해야 한다. smart contract 의 주소 호출할 함수와 전달할 매개변수 이때, 이더리움 노드는 JSON-RPC 라는 언어로 소통한다. JSON-RPC 쿼리문은 다음과 같은 형식으로 이루어져 있다. // Yeah... Good luck writing all your fun..
크립토 좀비에서 제공하는 튜토리얼을 통해 배우는 Solidity 문법을 정리하고 있습니다! Lesseon 5 에서는 ERC721 의 적용과 SafeMath 에 대한 간단한 예제를 다루고 있다. 기존 코드에 zombieownership.sol 을 추가했다. 1. ERC721 우리가 흔히 NFT 라고 부르는 토큰은, 각 토큰이 'unique' 하다는 특징을 가진다. 예를 들어, "Steve" 라는 이름의 좀비가 있고, 이것을 토큰으로 만들면, 다른 이름을 가진 토큰들과는 구별되어야(distinguishable) 한다. 또한 ERC721 토큰은 쪼갤 수 없다. "Steve" 라는 좀비가 있다고 했을 때, 0.237 만큼의 "Steve" 로 쪼개어 보낼 수 없다는 뜻이다(물론 최근에는 NFT 도 쪼개는 논의가 ..
크립토 좀비에서 제공하는 튜토리얼을 통해 배우는 Solidity 문법을 정리하고 있습니다! Lesseon 4 에서는 payable 개념에 대해서 조금 더 다룬다. 이전 게시글에서 zombieattack.sol 을 추가해, 좀비가 공격할 수 있도록 만들었다! 이번 장을 정리한 내용은 다음과 같다. 1. payable Modifier 이더리움에는 Ether 를 주고 받을 수 있는, payable 함수라는 녀석이 존재한다. contract OnlineStore { function buySomething() external payable { // Check to make sure 0.001 ether was sent to the function call: require(msg.value == 0.001 ethe..
크립토 좀비에서 제공하는 튜토리얼을 통해 배우는 Solidity 문법을 정리하고 있습니다! Lesseon 3 에서는 가스 소모와 코드 효율성 등에 대해 공부할 수 있었다. 기존에 zombiefactory.sol 과 zombiefeeding.sol 로 나누어진 코드에 zombiehelper.sol 과 ownable.sol 을 추가했다. 이번 장을 정리한 내용은 다음과 같다. 1. Immutability of Contracts 이더리움에 컨트랙트를 배포하면, 해당 컨트랙트는 불변(immutable) 이 된다. 따라서, contract 에 문제가 생기면 이를 수정하는 것이 아니라 다른 smart contract 의 주소를 유저에게 제공하는 식으로 패치를 해야 한다. 2. Ownable Contracts 만약 ..
크립토 좀비에서 제공하는 튜토리얼을 통해 배우는 Solidity 문법을 정리하고 있습니다! 이전 게시글에서 작성했던 코드를 조금 확장해서, 좀비를 생성하는 것 말고도 다른 여러 가지 기능을 추가적으로 구현했다. 다른 개체를 먹고 다른 개체의 dna 와 섞인 새로운 좀비를 생성하거나, cryptokitty 의 dna 를 불러와서 좀비를 만들어보는 등의 함수가 구현되어 있다. 편의를 위해, 코드를 zombiefactory.sol 과 zombiefeeding.sol 로 나누었다. 이번 장을 정리한 내용은 다음과 같다. 1. Ethereum blockchaing 은 accounts 로 이루어져 있고, 각 accounts 에는 address 가 있다. 2. mapping 을 통해 C++ 에서의 map 같은 기능을..