전체 글 188

C# var 키워드(암시적으로 형식화된 로컬 변수) - 공부하는 도비

오늘은 파이썬과 C, 자바에는 없지만, C#에는 있는 신기한 키워드 var에 대해 알아보겠습니다. 파이썬을 제외하고 프로그램 언어에서 변수를 선언해줄 때, 대부분 "int, double, float, string" 등등 선언할 변수의 타입을 미리 지정해줍니다. var는 "int, double, float, string" 위치에 대신 쓸 수 있는 키워드로, C# 컴파일러는 var 변수에 저장되는 값을 자동으로 추론해서 적당한 형식으로 변환하는데, 이 기능을 형식 추론이라고 한다. 아래 코드의 num1은 정수형 변수로 (명시적) 선언되었고, 반면 num2는 var 변수로 (암시적) 선언되었다. using System; class HelloWorld { static void Main() { int num1 =..

C# 2023.07.25

자바 GUI 텀프 '행렬식과 역행렬 계산기' - 공부하는 도비

자바 GUI를 활용한 행렬식과 역행렬 계산기입니다. 행렬 크기를 입력후, 그 크기에 맞게 행렬 요소를 입력해주면 그에 따른 역행렬이 계산됩니다. 아래 처럼 숫자가 아닌 문자를 입력했을 땐, 역행렬이 계산되지 않습니다. 만약, 아래와 같은 오류 메시지를 출력하기 싫다면 에러 처리를 해주시면 됩니다. 또한, 역행렬이 없는 행렬이 입력되면 "역행렬이 존재하지 않습니다."가 추가로 출력됩니다. 아래에 전체 코드를 첨부해두겠습니다. import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Matrix extends JFrame implements..

JAVA/TermProject 2023.06.18

자바 GUI 텀프 '아스키코드 및 유니코드 변환기' - 공부하는 도비

자바 GUI를 활용한 아스키코드와 유니코드 변환기입니다. 아스키코드표도 파일을 저장하여 경로를 입력하면, 출력이 됩니다. 아래에 전체 코드와 아스키코드표 사진을 첨부해두겠습니다. 위 사진의 "이미지 파일 경로"에 아스키코드표 사진의 경로를 입력해주세요. (Ex. "C:/Desktop/Ascll_Code.png") import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AskiUniConvrtr extends JFrame { private JTextField inputTextField; private JButton ascicodeButt..

JAVA/TermProject 2023.06.18

Send Ether to the Smart Contract (2) 및 block.timestamp 개념 - 공부하는 도비

저번 피드에서 스마트 계약으로 이더를 보내는 방법을 알아보았습니다. 2023.01.04 - [Blockchain/Solidity] - Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비 Send Ether to the Smart Contract (1) 및 payable 개념 - 공부하는 도비 Solidity에서 ether를 전송하는 스마트 컨트랙트를 작성하기 위해선, payable의 개념이 필수적입니다. "payable means that you can transfer ether with the transaction." payable엔 두 가지 종류가 있습니다. 1. address payab yang-wistory1009.tistory.com 오늘은..

Blockchain/Solidity 2023.02.01

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