개발 공부 10

[Rust] 에러 처리

러스트에서 에러는 복구 가능한(recoverable) 에러와 복구 불가능한(unrecoverable) 에러 두 가지가 존재한다. 러스트는 다른 프로그래밍 언어에서 사용하는 예외처리 기능이 없고 Resut 타입과 panic! 매크로를 사용해 에러를 잡는다. 복구 불가능한 에러는 panic! 매크로를 사용해 해결한다. 패닉을 일으키는 방법은 다음과 같다. 1. 코드가 패닉을 일으키는 동작을 할 때 (예시: 배열의 마지막 인덱스를 넘어선 접근) 2. panic! 매크로를 명시적으로 호출할 때 패닉이 발생하면 실패 메시지를 출력하고 unwind한 뒤 스택을 청소하고 종료한다. 패닉의 근원을 찾기 위해 호출 스택을 볼 수도 있다. 참고로 패닉 발생 시 unwind가 시작되면 스택을 훑어가며 데이터를 청소하는 과정..

[Rust] 0109 공부한 내용

1. 러스트의 변수 러스트에서 변수는 다른 프로그래밍 언어와 다르게 기본적으로 불변(immutable)이다. 변할 수 있는 수라서 '변수'인 건데 디폴트로 불변성을 가진다는 것이 특이하다. 만약 어떤 변수를 나중에 값을 변경할 수 있도록 만들고 싶다면 선언 시 'mut'를 붙여줘야 한다. let apple = 5 // immutable let mut apple = 10 // mutable io()::stdin().read_line(&mut guess) 여기서 guess의 참조 변수에도 mut를 해줘야 사용자가 입력한 값을 string에 추가할 수가 있음. 2. 구문과 표현식의 차이 - 구문: 어떤 동작을 수행하고 값을 반환하지 않는 명령 - 표현식: 결괏값을 평가함 코드 블록은 블록 안의 마지막 표현식을..

[Rust] 공부 시작

블록체인 학회 활동을 시작한지 어느덧 한 학기가 지났다. 여태 블록체인에 대한 개념만 익혔기 때문에 이번 방학부터는 본격적으로 개발에 시간을 쏟으려 한다. 우선 종강하자마자 파이썬을 배우고 장고까지 한번 훑었다. 백엔드와 프론트엔드 중 어느 쪽이 더 적성에 맞을지 몰라서 백엔드 개발을 빠르게 경험해보고 싶었는데 장고가 이에 적격이었다. (장고도 러닝 커브가 있지만 스프링에 비하면 훨씬 적다는 생각) 깊게는 아니지만 장고로 MTV를 개발해보니 백엔드가 참 재밌게 느껴졌다. 2학기에 네트워크, 자료구조 등의 전공 수업에 흥미를 느꼈던 것도 같은 맥락같다. 그래서 3월 전까지 백엔드를 깊게 파보기로 결심했다. 그리고 Rust로 이 공부를 해보려고 한다. 러스트(Rust)는 생겨난지 얼마 안 된, 신생 언어이다..

패스트캠퍼스 - Solidity로 시작하는 이더리움(EVM) 기반 블록체인 개발A to Z 수강 후기

- 본 게시물은 패스트캠퍼스 수강 후기 이벤트 참여를 위해 작성되었습니다 - 수강후기 블록체인에 대해 관심을 가지고 난 뒤 가장 먼저 패스트캠퍼스의 'Solidity로 시작하는 이더리움(EVM) 기반 블록체인 개발A to Z' 강의를 신청했습니다. 커리큘럼을 읽어봤을 때 블록체인에 대해 잘 모르는 입문자도 이 강의를 통해 블록체인 개념부터 개발까지 전반에 대해 지식을 쌓을 수 있을 것 같았습니다. 사실 그만큼 강의 분량도 어마어마하게 많습니다;; 그렇지만 한 분야에 대해 공부하려면 이 정도 노력은 들여야 한다고 생각합니다.. 오히려 자세히 다 다뤄주는 것이기 때문에 매우 만족하면서 수업을 듣고 있습니다:) 수업을 들으며 각 강의마다 내용을 구조화하기 위해 손으로 필기 노트도 따로 적고 있습니다. 나중에 ..

쉽게 배우는 운영체제(2판)- 1장 정답

책 정보 : 쉽게 배우는 운영체제 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 올해 1월에 출시된 '쉽게 배우는 운영체제(개정판)'을 읽고 있다. 해당 교재는 대학 강의용이라서 아쉽게도 연습문제 해답이 제공되지 않는다ㅜㅜ 그래도 1판은 출시된지 꽤 시간이 지나서 구글링하면 풀이가 꽤 있던데 2판은 아예 없다.. 그래서 1장부터 순서대로 문제와 답을 적어보려 한다. 연습문제는 한 챕터가 끝날 때마다 나온다. 혼자 공부한 대로 풀어본 다음, 책의 내용과 비교해서 최대한 올바른 답을 적으려 노력할 것이다. 그러나 '정답'이 공개되지 않았기 때문에 100%를 보장하긴 힘들다. (참고용으로 사용하시는 게 좋을듯 하다) 1장. 운영체제와 컴퓨터 01. 소프트웨어..

독하게 시작하는 C 프로그래밍 - 챕터 4 연습문제

챕터4. 연산자-기본 1번) 연산의 중첩에서 '임시 결과'는 일련의 연산 과정에서 앞선 연산의 결과를 말하며 후순위 연산의 대상이 된다. 이 임시 결과의 특징은 연산이 끝나면 바로 유실된다는 점이다. 2번) char형 자료와 int형 자료를 연산하면 type promotion에 따라 int형으로 임시 결과가 나온다. 3번) 2번과 같은 내용을 '형승격'이라고 하며 자료형이 다른 피연산자 간 연산을 실행할 때 표현 범위가 더 넓은 것을 따르게 됨을 말한다. 4번) 5/2 연산 결과는 int 2이다. 5번) 사용자로부터 정수를 입력받은 후 5로 나눈 나머지값을 출력하는 프로그램을 작성하면 다음과 같다. #include int main(void) { int n = 0; printf("정수를 입력하시오: ");..

독하게 시작하는 C 프로그래밍 - 챕터 3 연습문제

챕터 3. 표준 입출력 도구 - 연습문제 풀이 1번) #include int main (void) { char ch = 0; printf("입력 : "); getchar(); ch = getchar(); printf("출력 : %c", ch); return 0; } 2번) getchar()함수는 buffered input를 하는 반면, _getch()는 non buffered input을 하여 문자 하나를 입력 받는 함수다. 즉 _getch()는 사용자가 입력한 정보를 버퍼를 거치지 않고 바로 전달 받는다는 것이다. getchar()는 사용자가 입력한 정보 그 자체를 얻고자 하는 경우에 많이 사용하고 _getch()는 어떠한 입력이 발생했음 그 자체를 감지하는 목적성이 강하다. getchar()함수의 경..

알고리즘 첫걸음 C&자바편 - 챕터 8. 재귀 호출과 퀵 정렬

요즘 인프런과 유튜브에서 '널널한 개발자'님의 강의를 듣고 있는데 코딩이 어렵다고 하는 사람들은 문법공부와 동시에 이 문법을 적용해 로직 구현까지 한번에 해내려고 해서 힘들어하는 거라고 한다. 그래서 강사님이 추천하시는 프로그래밍 공부법은 무작정 코드부터 적으려고 하지말고 '생각'을 많이 해보고 이를 단순 무식할 정도로 세세하게 글로 작성해보는 거다. 그래서 나도 이번 챕터를 공부할 때부터는 글로 많이 적으면서 정리해보려고 노력 중이다. 챕터 8은 '재귀 호출' 과 '퀵 정렬'에 대해 다룬다. 재귀 호출(Recursive call)은 '함수 안에서 자기 자신을 호출하여 반복 처리한다'는 프로그래밍 기법이다. while이나 for 문을 통한 반복과는 전혀 다른 방식이다. 재귀 호출에서 주의해야 할 점은 반..

가장 쉬운 독학 알고리즘 첫걸음 (C&자바편)

프론트엔드 개발에 관심이 생겨서 프로그래밍 세계에 입문한지 약 한 달이 지났다. 개발자 취업의 필수 관문이라고 할 수 있는 '알고리즘' 공부도 슬슬 시작해보려고 한다. 나는 평생 알고리즘에 대해 깊게 생각해본 적이 없어서 사실 어떻게 공부를 시작해야 할지 조차 감이 없었다. 유튜브, 구글 등으로 찾아보니 너무 다양한 조언들이 널려 있어서 더 갈피를 못 잡고 있었다. 그러던 중 서점에서 괜찮은 책 하나를 발견했다. '야자와 히사오'라는 일본 작가의 이라는 책이다. 내용을 훑어보니 한달 동안 완료할 수 있는 플랜으로 구성되어 있고 나처럼 초보, 입문 수준을 위해 아주 기초적인 문제 유형부터 친절히 설명해 준다. 언어는 C와 JAVA 중 하나를 선택하라고 한다. 나는 둘 다 해본 적 없어서 앞으로 알고리즘 문..