반응형

https://nomadcoders.co/

 

노마드 코더 Nomad Coders

코딩은 진짜를 만들어보는거야!. 실제 구현되어 있는 서비스를 한땀 한땀 따라 만들면서 코딩을 배우세요!

nomadcoders.co

- 자세한 내용은 노마드코더 다트 강의 참고

 

플러터로 크로스플랫폼 앱을 만들기 위해서 사용한다.

플러터로 앱을 만들기 위해서 다트를 필요로 하기 때문에 먼저 공부한다.

기초를 확실히 다져두어야 문제 발생 시,

다트 문제인지 플러터 문제인지 이해할 수 있어야 한다.

다트, 코틀린, 스위프트, 타입스크립트 모두 비슷하다.

 

다트를 특별하게 만들어 주는것은 무엇일까.

다트는 2개의 컴파일러를 가지고 있다.

Dart Web - dart 코드를 javascript로 변환해주는 컴파일러.

Dart Native - dart 코드를 여러 CPU 아키텍쳐에 맞게 변환해준다.

거의 모든곳에서 돌아가도록 개발 가능하다.

JIT - just-in-time (dartVM사용-결과바로확인) - 개발에 용이하다

AOT - ahead-of-time (컴 파일-바이너리배포-사용) - 배포후 사용에 용이하다

null safety - null 참조로 발생하는 문제 방지 (?! 나중에 설명?!)

Dart, Flutter 둘다 구글이 만들었다.

 

Dart 공부에는 편하게 아래 사이트를 이용할 수 있다.

별도로 설치할 필요 없고 코드 작성 후 결과를 확인할 수 있고,

특정 메소드에 대한 설명도 확인할 수 있다.

https://dartpad.dev/

 

DartPad

 

dartpad.dev

 

*1.0. Hello World

 

Dart, Flutter가 이미 설치되어 있다면 빈 프로젝트를 만들어서 테스트 해보아도 좋다.

외부에서 강의를 들으며 작성할 수도 있어서,

필요 시 스크린샷은 dartpad 에서 캡쳐해야 겠다.

 

 

main 함수는 Dart 프로그램의 시작점으로 중요하다.

main 함수가 없을 경우 실행하려고 하면 문제가 발생한다.

라인이 끝나는 경우 세미콜론을 잊지 말자.

 - 세미콜론을 쓰지 않는 경우도 있다. 그건 나중에...

 

* 1.1. The Var Keyword

1.

변수를 만들때에 var 라는 키워드를 사용한다.

업데이트 시 본래 타입과 일치해야한다.

그렇지 않을 경우 에러가 발생한다.

 

똑같은 타입의 데이터를 넣어주는 경우 에러가 발생하지 않는다.

 

2.

명시적으로 변수의 타입 지정하여 변수를 만들 수 있다.

 

두 방법은 어떨때에 사용될까.

var - 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 사용한다. (Dart스타일가이드의 권장 방식)

타입지정 - class에서 변수나 property를 선언할 때 사용한다.

 

* 1.2. Dynamic Type

dynamic - 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드.

무엇이든 될 수 있다고 생각하면 된다.

var 로 변수 선언 후, 값을 정의하지 않을 경우 아래와 같이 사용 가능하다.

dynamic 필요한 이유

 - 변수가 어떤 타입인지 알기 어려운 경우가 있기 때문.

 - 가끔씩 dynamic으로 살짝 돌아가는게 유용한 경우도 있기 때문.

 

var가 아니라 dynamic으로 직접 명시해줄 수도 있다.

 

값이 정의되어 있지 않은 경우 dynamic 변수 타입이 지정되어 있지 않아서

한정적인 자동완성 옵션들이 확인되는 것을 알 수 있다.

 

조건에서 특정 타입을 사용할 경우

아래와 같이 프로그램이 인식해서 해당 타입에 맞는 자동완성 옵션들을 확인할 수 있다.

vscode에서도 마찬가지이다.

이 부분은 Dart가 알아서 확인/처리해준다.

dynamic은 반드시 꼭 필요한 곳에만 사용되어야 한다.

 

#1.3. Nullable Variables

null safety - 개발자가 null 값을 참조할 수 없도록 하는 것.

 

String일수도, null일수도 있다는걸 표현하기 위해서 '?'를 사용한다.

기본적으로 모든 변수는 non-nullable이다.

null이 될 수 없다는 뜻이다.

또한 아래와 같이 줄여서 표현할 수도 있다.

1번과 2번은 동일한 의미로 사용된다.

 

*1.4. Final Variables

final - 한 번 정의된 변수를 수정할 수 없게 만들때 사용한다.

javascript나 typescript의 const와 똑같다.

딱 한번만 설정될 수 있다.

final과 변수명 사이에 String 같은 타입을 넣어줄 수도 있다.

어짜피 Dart에서는 변수값 정의할 때 타입을 알기 때문에 타입을 작성하지 않아도 된다.

 

*1.5. Late Variables

late는 final이나 var 앞에 붙여줄 수 있는 수식어이다.

late는 초기 데이터 없이 변수를 선언할 수 있게 해준다.

초기 데이터 정의를 하지 않고 사용한다면,

dart는 값을 넣기 전에는 접근하지 않아야 한다는 것을 에러로써 알려준다.

추후 데이터가 정의된다면 에러는 발생하지 않는다.

 

*1.6. Constant Variables

dart의 const는 javascript나 typescript와 다르다.

dart의 final 키워드와 비슷하다.

 

dart에서 const는 compile-time constant를 만들어준다.

컴파일 시 정확히 알 수 있는 하드코딩된 값을 사용해야 한다.

앱을 컴파일해서 앱스토어에 올리기 전에 이미 알고 있는 상수 값을 다룰때 사용한다.

ex) max_allowed_price

 

만약 어떤 값인지 모르고 그 값이 API로부터 온다거나

사용자가 화면에서 입력해야 하는 값이라면

그 변수는 final이나 var가 되어야 한다.

 

*1.7. Recap

변수 섹션 복습.

 

'2023' 카테고리의 다른 글

Dart_3_nomadcoders  (0) 2023.07.26
Dart_2_nomadcoders  (0) 2023.07.25
sql,nosql,앱개발,정처기,,,230616  (0) 2023.06.18
2023.01.16. Daily Coding Problem: Problem #3 [Medium]  (0) 2023.01.16
2023.01.14. Daily Coding Problem: Problem #1 [Easy]  (0) 2023.01.16
반응형

의식의 흐름대로 남기는 것
하고 싶은 것이 생겼다
일단 하고싶다는 생각만 가지고 있는 상태

계획은 나중에
할 수 있을때
지금은 못버틸것 같다

게임용 노트북은 있지만
개발용 경량 노트북을 별도로 보유하고 있지는 않다
그렇다
갤럭시탭으로는 사실상 진지하게 개발을 할 수는 없다
이 갤럭시탭을 처분하고 소형이어도 그냥 노트북을 사는것이 나을것 같다는 생각이 든다
이렇게 탭으로 할 수 있는 일을
플립이나 폴드로도 충분히 할 수 있다고 생각되고 있다.
탭에 펜으로 작성하면 나중에 언제 다시 끄집어내서 복습하지 않는 것 같기 때문이다.
차라리 폰에 작성을 해두면 언제든
더 볼 수 있는 가능성이 높지만,
탭은 시간과 장소가 허락되는 곳에서만 꺼내서 무언가 할 수 있기 때문이다.

특히 2023년말까지 농협에서만 있을테니 더 그럴것 같다.

무엇이든 스마트폰으로 컨트롤을 하고 그냥 집컴을 계속 켜두거나
클라우드 서버나 플랫폼형 서비스를 사용하는게 좋을 것 같다는 생각이 든다.
갤럭시 탭으로 내가 한것들? 이 제품의 값어치만큼 생산적이라고는 말 못하겠다.


정보처리기사
2023년 정기 기사 3회
필기원서접수(휴일제외)
20230619 ~ 20230622 (월10:00~목18:00)
필기시험
20230708~20230723 (0715~0716  반드시 접수)
합격발표
20230802 (수)
실기원서접수(휴일제외)
20230904~20230907 (월10:00~목18:00)
실기시험
20231007~20231020
최종합격자발표
20231115 (수)


정처기 필기/실기 둘다 양 많다
고등학생, 대학생, ISTQB공부할 때에는 어떻게 공부했더라
공부를 어떻게 해야하는지 감을 잃어버린것 같다

필기시험까지 한달 안되게 남았으니
그동안 꾸준히 매일 조금씩이라도 감을 잃지 않도록 공부하고
이번에 반드시 실패없이
합격해야만 한다


앱개발을 한다면 DB는 뭘 쓰지?
이것 저것 써봤는데
마리아db를 생각했는데
몽고db가 갑자기 생각나서
sql vs nosql 의 고민으로 번졌다
전체적으로 여유가 있을 때 블로그에 몇줄 남기는거라
나중에 다시 안볼지 모르지만 참고 링크만 몇개 남겨둔다
https://ckddn9496.tistory.com/96

MongoDB와 MySQL 비교

MongoDB 홈페이지에 소개하는 MongoDB와 MySQL 비교에 대하여 정리한 내용입니다. MongoDB vs. MySQL 주요 차이점 MySQL은 Oracle 사가 갖고 있는 대표적인 관계형 데이터베이스(RDBMS) 입니다. 다른 관계형 데이

ckddn9496.tistory.com

https://velog.io/@kihongsi/DB-MariaDB%EC%99%80-MySQL-%EC%A4%91-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%82%98

[DB] MariaDB와 MySQL 중 무엇을 써야 하나?

MariaDB? MySQL?

velog.io

https://mjmjmj98.tistory.com/43

[DB] SQL vs NoSQL(mySQL vs MongoDB) 비교, 차이점

SQL과 NoSQL 소개 [SQL(Structured Query Language)] SQL은 RDBMS(관계형 데이터베이스 관리 시스템)의 데이터를 관리하기 위해 설계된 프로그래밍 언어로, NoSQL보다 오래되고 많이 사용되어 왔습니다. SQL의 예

mjmjmj98.tistory.com

'2023' 카테고리의 다른 글

Dart_2_nomadcoders  (0) 2023.07.25
Dart_1_nomadcoders  (0) 2023.07.24
2023.01.16. Daily Coding Problem: Problem #3 [Medium]  (0) 2023.01.16
2023.01.14. Daily Coding Problem: Problem #1 [Easy]  (0) 2023.01.16
2023.01.13.vue build  (0) 2023.01.13
반응형

(Original)

Good morning! Here's your coding interview problem for today.

This problem was asked by Google.

Given the root to a binary tree, implement serialize(root), which serializes the tree into a string, and deserialize(s), which deserializes the string back into the tree.

For example, given the following Node class

class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

The following test should pass:

node = Node('root', Node('left', Node('left.left')), Node('right'))
assert deserialize(serialize(node)).left.left.val == 'left.left'

 


(Google번역)

좋은 아침! 오늘의 코딩 인터뷰 문제는 다음과 같습니다.

이 문제는 Google에서 요청했습니다.

이진 트리의 루트가 주어지면 트리를 문자열로 직렬화하는 serialize(root)와 문자열을 다시 트리로 역직렬화하는 deserialize(s)를 구현합니다.

예를 들어 다음 노드 클래스가 주어진 경우

class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

다음 테스트를 통과해야 합니다.

 

node = Node('root', Node('left', Node('left.left')), Node('right'))
assert deserialize(serialize(node)).left.left.val == 'left.left'

 


시간내서 하나씩 고민하고 풀어보기.

(메일에 쌓아둘순 없으니..)

매일 문제을 받고 싶다면 아래 링크에서 구독해보세요.

(단, 문제 풀이는 프리미엄 구독자만 받을 수 있음)

https://www.dailycodingproblem.com/

 

Daily Coding Problem

There's a staircase with N steps, and you can climb 1 or 2 steps at a time. Given N, write a function that returns the number of unique ways you can climb the staircase. The order of the steps matters. For example, if N is 4, then there are 5 unique ways:

www.dailycodingproblem.com

 

'2023' 카테고리의 다른 글

Dart_1_nomadcoders  (0) 2023.07.24
sql,nosql,앱개발,정처기,,,230616  (0) 2023.06.18
2023.01.14. Daily Coding Problem: Problem #1 [Easy]  (0) 2023.01.16
2023.01.13.vue build  (0) 2023.01.13
2023.01.12.  (0) 2023.01.12

+ Recent posts