![react](https://tistory1.daumcdn.net/tistory/4365896/skin/images/react-logo.png)
목록📖 전체보기 (254)
즐겁게, 코드
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BF22H/btq27pdsz85/PVJf2khvyq7A3awxxxGMq1/img.png)
솔리디티를 활용해 다양한 방법으로 스마트 컨트랙트의 로직을 작성할 수 있음을 알고 계실 것입니다. 그런데 아마 처음 컨트랙트를 작성하게 되면 막막한 점이 한둘이 아닐 것입니다. pragma solidity >= 0.7.0 < 0.8.0; contract CMToken { // 어... 뭐부터 써야 할까... } 토큰의 필수 요소이 누락되는 것을 막고 토큰들이 이더리움 생태계에서 *호환될 수 있도록 하기 위해 이더리움에는 여러 표준 인터페이스가 존재하는데요, 오늘은 그 중 가장 기본적인 ERC-20 인터페이스를 직접 구현해보도록 하겠습니다. (※ 예를 들어 ERC-20 기반으로 구현된 찬민토큰이 있다면, 같은 ERC-20 기반의 펀디엑스(NPXS)와도 호환될 수 있다는 의미입니다.) 1. ERC-20 인터..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tbJ6z/btq3auRPqHh/trJ17eutUpJMkL66CzHRu0/img.png)
Geth(Go + Etherium)는 이더리움 기반 블록체인 네트워크를 구성하기 위한 클라이언트 소프트웨어인데요, 오늘은 Geth를 활용해 이더리움 기반 블록체인을 구성하고 블록을 직접 마이닝해 이더를 획득하는 과정을 소개해보려 합니다. Geth는 geth.ethereum.org/downloads/ 에서 설치할 수 있습니다. (※ MacOS는 이상하게도 Geth 설치 파일이 아닌 실행 스크립트만을 제공하기 때문에, 이곳에서 소개하는 터미널을 통한 설치 방법을 이용하시길 바랍니다.) 1. Private Network 구축하기 먼저 실습을 진행할 폴더를 하나 만들어준 후 아래의 json 파일을 genesis.json 이라는 이름으로 저장해줍니다. (※ chainId는 본인의 ID이므로 원하는 대로 수정해도 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bOkScg/btrysBe3dOs/UEQErogLjWXi7k5OoqsAk0/img.png)
산학프로젝트 과목의 AWS 특강을 듣고 CI/CD와 인프라에 대한 내용에 관심이 생겨 찾아보던 중, "도커" 라는 플랫폼을 통해 개발과 운영 환경을 통합할 수 있음을 알게 되었습니다. 이번 글에서는 도커와 도커의 핵심 구성요소인 이미지와 컨테이너에 대해 간단히 정리해보도록 하겠습니다. 1. Why Docker? 당연하지만 회사나 조직에서 근무하는 모든 인원들의 개발 환경이 같을 수는 없습니다. 누구는 리눅스를, 누구는 맥을, 누구는 Node.js 14를, 누구는 Node.js 12를... 이렇게 모두 다른 환경에서는 설치 과정과 실행방법이 모두 다를 수밖에 없지만, 도커를 활용하면 어떤 환경에서든 동일한 조건과 방법으로 소프트웨어를 실행할 수 있습니다. (※ 아마 여기서 버추얼박스같은 가상 OS를 떠올리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/deVrz4/btq2P4tE74R/4KSG8UIj9iqVqYSg1kKqLK/img.png)
1. 가스 - 이더리움 DApp이 사용하는 연료 솔리디티에서는 DApp의 함수를 실행할 때마다 가스라고 불리는 화폐를 지불해야 하는데요, 사용자는 이더(ETH, 이더리움의 화폐)를 이용해서 가스를 사기 때문에 결국 이더를 소모해야만 합니다. 함수를 실행하는 데에 얼마나 많은 가스가 필요한지는 함수가 얼마나 복잡한지에 따라 달라집니다. 각각의 연산은 소모되는 가스 비용(gas cost)이 있고 그 연산을 수행하는 데에 소모되는 컴퓨팅 자원의 양이 비용을 결정하는데요, 예를 들어 storage에 값을 쓰는 것은 두 개의 정수를 더하는 것보다 비용이 높으며 함수의 전체 가스 비용은 함수를 구성하는 개별 연산들의 가스 비용을 모두 합친 것과 같습니다. 이더리움에서 함수를 실행하는 것은 사용자들에게 실제 돈을 쓰..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cMUQX7/btq2OQhJojK/mzJh94meV6yu92WwSqhXFk/img.png)
1. 컨트랙트의 소유권 pragma solidity "^0.4.19"; contract myContract { function sendEther(address _address, uint _amount) external { send(_address, _amount); } } 이더(돈)를 보내는 sendEther 라는 함수가 컨트랙트에 존재하는 상태입니다. 다만 sendEther는 external 로 선언되어 누구나 호출할 수 있는 상태인데요, 컨트랙트의 소유자만 특정 함수에 접근할 수 있도록 하기 위해 Ownable 이라는 라이브러리를 활용합니다. [Ownable.sol 라이브러리 코드 전문] /** * @title Ownable * @dev The Ownable contract has an owner a..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8wDld/btq2M3nAdgZ/KLEIsMfzJWJKWLPhRuY1Xk/img.png)
[백준 온라인 저지 링크] 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 애매한 점을 하나 정리해드리면, N번째 지점은 밟자마자(발판이 움직이든 로봇이 움직이든) 내려간다고 생각하시면 됩니다. 또, 로봇이 전진하기 위해 현재 칸에 로봇이 있어야 하고 다음 칸에는 로봇이 있어서는 안되는 걸 잊으면 안됩니다! (이걸 처리하지 않으면 세 번째, 네 번째 케이스에서 걸립니다 ㅠㅠㅠ) if belt[N - i] > 0 and robot[N - i - 1] == True and robot[N - i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lhAxk/btq2MyVj02Z/fYNk0v60Ko8NpEp4j9wFaK/img.jpg)
이 글은 한국기술대학교 컴퓨터공학부의 OS 공개강의를 시청한 후 정리한 내용입니다. 목차 스레드의 개념 스레드의 구현 사용자 수준 스레드 (다대일 모델) 커널 수준 스레드 (다대다 모델) 혼합 스레드 1. 스레드의 개념 프로세스는 커널 위에서 실행되고 있는 작업인데요, 프로세스가 자원을 어떻게 배분할지 제어하는 친구가 바로 스레드입니다. 비유를 들어보자면 한 연구를 수행한다고 할 때, 프로세스는 연구실이 되고 스레드가 연구원이라고 생각하면 될 듯 합니다. (연구비가 연구실마다 배정되어 연구원들이 이를 나눠 사용하듯, 프로세스의 스레드들은 공동의 자원을 소모합니다.) 스레드는 보다 작은 프로세스라는 의미로 Light Weight Process(LWP) 라고 부르기도 하며, 프로세스 활용의 기본 단위가 됩니..