전체 글 183

Solidity 생성자(constructor) - 공부하는 도비

Smart Contract은 자바의 클래스나 인터페이스(객체)와 비슷합니다. 그래서 생성자라는 개념이 있고, 오늘은 Solidity의 생성자에 대해 알아보겠습니다. * What is a Constructor in Solidity 생성자는 타 언어처럼, 상태 변수를 바꾸거나 초기화할 때 사용이 됩니다. 또한, 생성자를 필수적으로 쓰진 않아도 됩니다. 생성자는 constructor이라는 키워드를 사용하여 만듭니다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract Exconstructor { constructor([optional-parameters]) access-modifier { } } - optional-parameters : 생성자에..

Blockchain/Solidity 2023.02.01

자바 static 변수와 static 메소드 - 공부하는 도비

오늘은 자바의 static 변수와 static 메소드에 대해 알아보려고 합니다. 1. static 변수 변수 앞에 static이라는 키워드를 붙이면, 자바는 메모리 할당을 딱 한 번만 하게 됩니다. 따라서 메모리 사용에 이점이 있죠. 따라서 static으로 선언한 변수를 참조할 땐, 같은 곳의 메모리 주소를 바라보기 때문에 static 변수의 값을 공유할 수 있습니다. 아래 예제를 통해 이 말이 무엇인지 설명하겠습니다. 함수를 선언하고 객체가 해당 함수를 참조할 때마다 카운터가 올라가는 코드를 구현한다고 가정해 보겠습니다. - static을 사용하지 않고 구현을 하면 다음과 같은 결과를 얻게 됩니다. // non-static 변수 class Counter { int count = 10; Counter()..

JAVA 2023.01.30

JDK 다운, PATH 환경 설정 - 공부하는 도비

이클립스를 사용하려면 우선 사용자 컴퓨터에 JDK 설치와 PATH 환경 설정이 되어있어야 합니다. * JDK 설치 경로 https://www.oracle.com/kr/java/technologies/downloads/#java19 Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com (JDK17과 19의 차이) https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html JDK 19..

JAVA 2023.01.26

Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비

Solidity에서 ether를 전송하는 스마트 컨트랙트를 작성하기 위해선, payable의 개념이 필수적입니다. "payable means that you can transfer ether with the transaction." payable엔 두 가지 종류가 있습니다. 1. address payable 2. function payable address 타입과 함께 사용되면 지불가능한 주소(address payable)의 타입이 되고, function과 함께 사용되면 지불가능한 함수 (function _ () payable)이 됩니다. Members of Address Payable Types : address payable 타입의 멤버엔 .transfer과 .send가 있습니다. - .transfe..

Blockchain/Solidity 2023.01.04

delete element of array and mapping - 공부하는 도비

array의 인덱스 번호로 element 삭제 방법 pragma solidity ^0.8.1; contract Practice { uint256[] private arr; function remove(uint256 _index) private { require(_index < arr.length, "index out of bound"); for (uint i = _index; i < arr.length - 1; i++) { arr[i] = arr[i + 1]; } arr.pop(); } function test() external { // case_1 arr = [1, 2, 3, 4, 5]; remove(2); // want : arr = [1, 2, 4, 5] // checking assert(arr[..

Blockchain/Solidity 2023.01.02

require() 사용 - 공부하는 도비

Solidity는 에러를 제어하기 위해 다양한 함수를 제공하고, 일반적으로 에러가 발생하면 원래의 상태로 돌아갑니다. 에러를 컨트롤하기 위해서, 다음과 같은 메소드들이 있습니다. ● require(bool condition) ● require(bool condition, string memory message) ● assert(bool condition) ● revert() ● revert(string memory reason) 오늘은 위 메소드들 중 require를 자세하게 살펴보겠습니다. 1. require(bool condition) - In case condition is not met, this method call reverts to original state. This method is to..

Blockchain/Solidity 2023.01.02

msg.sender 사용 - 공부하는 도비

2022.12.29 - [블록체인] - [블록체인] (Solidity).balance(uint256) 사용 - 공부하는 도비 [블록체인] (Solidity) .balance(uint256) 사용 - 공부하는 도비 오늘은 특정 주소를 셋팅한 후, 그 주소의 잔고를 출력 또는 리턴 받아보겠습니다. Remix - Ethereum IDE Solidity 0.8.1 (버전이 높을 수록 다 좋은 것은 아닙니다. 0.8.1버전은 아마 글 쓰는 시점 가장 최신 yang-wistory1009.tistory.com 저번 피드에서 특정 주소의 잔고를 리턴/출력하는 방법을 알아보았습니다. 오늘은 constructor() 생성자를 사용하여 계약 배포자의 주소를 설정하고, 그 주소의 잔고를 리턴 받아보겠습니다. Remix - E..

Blockchain/Solidity 2023.01.02

<address>.balance(uint256) 사용 - 공부하는 도비

오늘은 특정 주소를 셋팅한 후, 그 주소의 잔고를 출력 또는 리턴 받아보겠습니다. Remix - Ethereum IDE Solidity 0.8.1 (버전이 높을 수록 다 좋은 것은 아닙니다. 0.8.1버전은 아마 글 쓰는 시점 가장 최신버전이나 각자가 생각하는 가장 stable한 버전을 쓰시면 됩니다.) .balance (uint256)은 Wei 형태로 주소의 balance를 리턴합니다. 1ether는 10^18 wei와 동일합니다. 1. 코드에 특정 주소를 적어두고, 그 주소의 balance를 return 받기 pragma solidity ^0.8.1; contract test { address public myAddress = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC..

Blockchain/Solidity 2022.12.29

Ethereum Goerli Test Network로 테스트 이더 받기 - 공부하는 도비

블록체인을 공부하면서 느끼는 건 지금 현재도 여러 새로운 기술이 나오고 변경되고 있다는 것이고, 예전에 잘 써왔던 사이트들이 안된다거나 사용할 수 없는 경우가 많다는 것이다. 저는 Ethereum Goerli Test Network로 테스트 이더를 받아서 썼던 거 같은데, 오늘 보니 공식 사이트 이용이 안돼서 새로운 사이트를 알려드리려고 합니다. 우선, Buy를 눌러주고 Get Ether도 눌러줍니다. 그럼 다음과 같은 사이트가 나오는데, 이 사이트에서 더 이상 이더를 얻을 순 없습니다. 아래 링크로 이동해줍니다. https://goerlifaucet.com/ 간단히 로그인을 해줍니다. 메타마스크의 사용자 주소를 붙여 넣고 Send Me ETH를 클릭해 줍니다. 네트워크 상황에 따라 다르겠지만, 잠시만 ..

Blockchain/Solidity 2022.12.20

메타마스크에 테스트 네트워크 활성화 - 공부하는 도비

저번 피드에서 메타 마스크를 설치해보았습니다. 2022.12.20 - [블록체인] - [블록체인] 메타 마스크 설치 - 공부하는 도비 [블록체인] 메타마스크 설치 - 공부하는 도비 디지털 자산을 보유하는 방식엔 총 3가지가 있습니다. 1. 거래소에서 생성되는 지갑에 보관 2. 하드 월렛 형태로 보관 (하드 월렛 : USB나 외장하드디스크 형태의 지갑) 3. 웹 브라우저의 확장 프로 yang-wistory1009.tistory.com 오늘은 메타마스크에 테스트 네트워크 설정 방법에 대해 알아보겠습니다. 처음 설치하면, 메인넷 밖에 없을 텐데요. 여러 가지 시도를 해보려면 테스트 네트워크가 필요합니다. 설정에 들어가서, 고급에 들어가 줍니다. 꺼져있는 두 탭을 켜기로 변경해줍니다. 그럼 아래 그림처럼 테스트..

Blockchain 2022.12.20

메타마스크 설치 - 공부하는 도비

디지털 자산을 보유하는 방식엔 총 3가지가 있습니다. 1. 거래소에서 생성되는 지갑에 보관 2. 하드 월렛 형태로 보관 (하드 월렛 : USB나 외장하드디스크 형태의 지갑) 3. 웹 브라우저의 확장 프로그램 등을 설치하여 사용자가 온라인상에서 직접 디지털 자산 지갑을 생성하고 관리하는 방법 오늘은 3번 내용에 해당하는 웹 브라우저 확장 프로그램인 메타 마스크를 설치해보겠습니다. 설치하는 방법은 굉장히 간단합니다. 크롬에 metamask를 검색 후, chrome에 추가합니다. 그럼 아주 귀여운 여우가 반겨줍니다. 동의해주시고 원하는 비밀번호를 설정해줍니다. 메타 마스크는 닉모닉(비밀 복구 구문)을 통한 비밀번호 재설정을 지원하기 때문에, 지갑 생성 시 메타 마스크에서 주는 닉모닉을 반드시 잘 보관해야 합니..

Blockchain 2022.12.20

VSCODE HTML 자동 완성 수정 (Configure User Snippets) - 공부하는 도비

visual code에서 html이라는 단어만 써도 아래 그림처럼 html 문법에 맞는 형식을 사용할 수 있습니다. 하지만 html:5를 선택한 경우 너무 많은 내용이 들어가 있고, 복잡해 보입니다. 그래서 오늘은 "Configure User Snippets" 사용하여 html 자동완성 파일을 수정해볼까 합니다. 1. VSCODE 왼쪽 하단의 설정에서 "Configure User Snippets"을 선택해줍니다. 2. html.json 선택 3. html.json 파일 수정 html.json을 클릭하면 아래 사진처럼 주석이 포함된 코드가 있습니다. 주석에 있는 예제에 따라 새롭게 html.json을 작성해보겠습니다. 작성 후에는 반드시 저장을 해야합니다.!! (티스토리에는 .json 확장자를 지원해주지 ..

WEB 2022.12.08

Features and Properties Hash functions - 공부하는 도비

오늘은 해시 함수의 특징과 속성에 대해 설명해보겠습니다. 해시함수란? 해시함수는 숫자로 된 입력값을 다른 압축된 숫자 값으로 변환시키는 함수입니다. 해시함수에 대한 입력은 임의의 길이이지만, 출력은 항상 고정된 길이입니다. 해시 함수에 의해 반환되는 값을 메시지 다이제스트(message digest) 또는 단순히 해시 값(hash value)이라고 합니다. Features of Hash Functions 해시 함수의 특징은 크게 네 가지로 나눌 수 있습니다. 1) 고정된 길이의 출력 값(Hash value) n-bit 출력 값을 갖는 해시 함수를 n-bit 해시 함수라고 하고, 자주 사용되는 함수(sha, MD)는 160-bit와 512-bit사이의 값을 출력합니다. 2) 효율성 일반적으로 입력 메시지 ..

Computer Security 2022.12.05

**kwargs 사용과 예제 - 공부하는 도비

저번 피드에선 파이썬의 * 연산자 의미에 대해 알아보았습니다. 2022.12.02 - [파이썬/파이썬 이론] - [파이썬] *args 사용과 예제 - 공부하는 도비 [파이썬] *args 사용과 예제 - 공부하는 도비 C언어를 처음 배운다면 * 연산자가 주는 위협감은 어느 정도 있을 꺼라 예상이 되는데, 파이썬에서 * 연산자는 포인터가 아닙니다. 파이썬 함수 선언을 보면, 입력 매개변수의 개수를 정확히 지 yang-wistory1009.tistory.com * 연산자가 하나일 땐, 함수 입력 매개변수의 개수를 알 수 없을 때 사용하며 그 함수의 결과 값은 tuple 자료형을 가진다고 설명을 했습니다. ** 연산자일 때도, 함수 입력 매개변수의 개수를 알 수 없을 때 사용하지만, 그 함수의 결과 값은 dic..

Python/Python Basic 2022.12.02

*args 사용과 예제 - 공부하는 도비

C언어를 처음 배운다면 * 연산자가 주는 위협감은 어느 정도 있을 꺼라 예상이 되는데, 파이썬에서 * 연산자는 포인터가 아닙니다. 파이썬 함수 선언을 보면, 입력 매개변수의 개수를 정확히 지켜야 합니다. def fun(data_1, data_2): print("Input Data :", data_1, data_2) fun(10, 20) # 오류 발생 fun(50) 만약 함수의 입력 매개변수에 몇 개의 데이터가 들어갈지 정확히 모른다면 어떻게 될까요? 그때 사용하는 것이 *args입니다. args는 arguments의 약자이고, 함수의 입력 매개변수에 몇 개 들어가는지 모를 때 사용합니다. 또한 *args를 사용하면 함수의 return값은 tuple의 형태를 가집니다. 아래 예제처럼 args_fun함수에 ..

Python/Python Basic 2022.12.02

파이썬 type hinting - 공부하는 도비

type hinting 이란, 말 그대로 파이썬 코드를 작성할 때 타입에 대한 힌트(정보)를 제공하는 것입니다. 오늘은 파이썬 함수에 한정해서 type hinting에 대해 설명해보겠습니다. 파이썬에 타입 힌팅이 추가되기 전에는, 주석을 사용하여 타입에 대한 정보를 줘야 했습니다. 코드를 직접 작성한 개발자에게는 도움이 될지는 모르지만, 정해진 표준이 없어서 개인마다 주석의 의미가 다르게 이해될 수 있었습니다. hint는 함수의 매개변수와 리턴 값의 자료형이 무엇인지 명시적으로 표현해줍니다. 바로 예제를 보겠습니다. def fun_mul(x : int) -> tuple: y1 = x * 100 y2 = x * 200 y3 = x * 300 return y1, y2, y3 result = fun_mul(1..

Python/Python Basic 2022.12.02

한글 오피스 2020 실행, 삭제 안되는 오류 고치기 - 공부하는 도비

이번에 윈도우 10에서 11로 업데이트를 진행했습니다. 그러면서 윈도우 10에서 발생 안 했던 오류가 엄청나게 나왔고.. 한글 파일도 오류가 발생했습니다. 제어판에서도 삭제가 안되니 참 답답했는데, 제가 한 방법으로 오류를 고칠 수 있으니 따라 해 보시면 될 거 같습니다. 우선 한글에서 쓰는 Visual C++ 파일이 있는데, 저 파일들이 제대로 설치되지 않거나 중복돼있는 경우 위와 같은 오류가 발생합니다. 1. 설정 => 앱 => 설치된 앱 2. 아래 두 파일을 삭제 - Microsoft Visual C++ 2013 Redistributable (x86) - Microsoft Visual C++ 2015 Redistributable (x86) (한글 오피스 버전마다 파일의 이름이 다르긴 한데, 이 경우..

Basic IT Knowledge 2022.12.01

C언어 구조체 연결 리스트 - 공부하는 도비

연결 리스트란, 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조입니다. 아래 그림처럼 Link 필드(포인터 필드)에 다음이나 이전 노드의 주소 값을 저장하여 각 노드를 연결합니다. 오늘은 구조체를 사용하여 연결 리스트를 구현해보겠습니다. C언어에서 연결리스트의 노드 종류는 크게 머리 노드와 일반 노드로 나뉩니다. - 머리노드(head node) : 단일 연결 리스트의 기준점이며, 첫 번째 노드를 가리키는 용도로 사용됩니다. 이 노드엔 데이터를 저장하지 않습니다. - 일반 노드 : 연결 리스트에서 데이터가 저장되는 실제 노드를 의미합니다. 맨 마지막 노드의 Link 필드엔 NULL 값이 들어갑니다. 구조체를 이용하여 연결 리스트 구현 #include #inc..

C Programming 2022.11.23

문자열 복사 (strcpy) - 공부하는 도비

C언어에는 문자열을 복사하는 함수 strcpy가 있다. 파이썬을 쓰다가 오랜만에 C를 쓰려고 하니, 파이썬에서 쉽게 되던 문법이 C언어에선 작동 안 되는 경우가 많다. 예를 들어, 아래 코드 처럼 두 문자열 a, b가 있을 때 b = a 또는 a = b 를 해도 문제가 없다. # 파이썬 문자열 복사 a = 'Dobby' b = 'Free' print("a의 문자열 : %s" %a) print("b의 문자열 : %s\n" %b) print("!! a를 b에 복사 !!") b = a print("복사된 b의 문자열 : %s" %b); 하지만, C에서 저런 문법을 썼다가는 아래와 같은 오류가 발생한다. (error: assignment to expression with array type) 파이썬처럼 문자열을..

C Programming 2022.11.22