분류 전체보기

CS/어셈블리

[SPARC] 2. Computer System Organization

지난 포스팅에서 어셈블리언어는 CPU가 이해할 수 있는 0과 1로 구성된 기계어에 인간이 보기 쉽게 의미를 부여한 언어라고 하였고, ISA 는 CPU 가 다룰 수 있는 명령어 종류 셋으로서, CPU에 종속되어있는 일종의 카탈로그라고 하였다. 그렇다면 ISA마다 명령어 종류가 다르다는 것은 ISA마다 어셈블리언어가 다르다고 봐도 무방할 것이다. ISA는 크게 2가지 종류가 있다. CISC 와 RISC (리스크 라고 읽는다.) CISC (Complex Instruction Set Computer) 는 말 그대로 명령어 종류가 복잡하다. 명령어의 종류가 많아 지난 포스팅에 적었듯 그래서 할 수 있는 기능이 RISC에 비해 많다. 각 종류마다 명령어의 크기가 가변적이다. (1byte ~ 15bytes) 그래서 ..

CS/어셈블리

[SPARC] 1. Introduction & Computer System Organization

- What's Assembly Language CPU는 전기 신호를 받아들이는 '회로' 이다. 따라서 CPU로 명령을 전달할 때는 전기 신호로 전달하는데, 이 신호를 전압에 따라 0과 1로 표현할 수 있다. 이 0과 1로 구성된 신호를 '기계어' 라고 한다. 프로그램은 CPU에게 일련의 명령을 내리는데, 사람이 CPU에게 내릴 명령을 작성할 때 0과 1로 구성된 기계어로 명령을 작성하는 것은 매우 어렵다. 따라서 프로그램을 작성하는 사람의 편의를 위해 만들어진 High Level Language 가 C, Python 같은 언어이다. 물론 High Level Language 는 CPU 같은 회로가 이해할 수 있는 형태가 아니기에 이를 변환하는 과정이 필요하고, 이를 '컴파일' 이라고 한다. 컴파일의 과정..

개인 프로젝트/[2021] 코드악보 공유APP

22. 노트북으로 프로젝트 환경 세팅 옮기기

군대를 갔다와서 컴퓨터를 사고나니 플러터 버전이 달라져있어 프로젝트를 처음부터 다시 만들기로 했다. 그래서 새 컴퓨터에서 새 개발환경을 다시 세팅해 기존 소스코드를 참고하여 처음부터 개발을 시작했다. 방학이 끝나고 개강한 뒤 학교 기숙사로 왔다. 데스크탑을 가져올까 하다가 그냥 노트북만 들고왔는데, 노트북에는 플러터 2.0 버전과 구버전의 안드로이드 스튜디오가 깔려 있는 상황 2021년에 처음 이 앱을 개발하던 시기의 개발환경이 세팅되어 있는 상태였다. 안드로이드 스튜디오에서 제공하는 flutter 업데이트 기능을 이용해 flutter를 업데이트하고, chocolate 를 이용해 dart-sdk 도 설치했다. flutter doctor 를 검색해보니 분명 자바가 이미 깔려있는데 java version 을..

Android/Flutter

[flutter doctor] could not determine java version 오류

집에서 데스크탑으로 작업을 하다가, 학교 기숙사에 오면서 노트북으로 작업을 하려고 하는 상황이었다. 노트북에는 구버전 안드로이드 스튜디오와 플러터 2.x 버전이 깔려있었다. 플러터를 3.x 버전으로 업데이트하고 실행을 하기 전 flutter doctor 를 실행시켰는데 이런 오류가 나왔다. [√] Flutter (Channel stable, 2.5.3, on Microsoft Windows [Version 10.0.19042.1348], locale en-IN) [!] Android toolchain - develop for Android devices (Android SDK version 31.0.0) X Could not determine java version [√] Chrome - develop ..

알고리즘 (PS)/BOJ

[백준] 28458 - Mahjong Tenpai (P5)

https://www.acmicpc.net/problem/28458 28458번: Mahjong Tenpai 3통을 가져왔을 경우 3삭 2개를 머리로 사용한 후 3삭 4삭 5삭의 슌쯔를 몸통1, 3삭 4삭 5삭의 슌쯔를 몸통3, 1통 2통 3통의 슌쯔를 몸통3, 3통 3통 3통의 커쯔를 몸통4로 볼 수 있다. 6삭을 가져왔을 경 www.acmicpc.net 주어진 마작패가 대기패인지 아닌지 판별하고 대기패라면 완성패가 되기 위해 추가해야 하는 패를 출력하는 문제이다. 일단 대기패의 구성 숫자가 13장이고, 완성패의 구성숫자가 14장으로 크지 않고 패의 종류도 많지 않아서 브루트포스를 돌리면 되겠다고 생각했다. 그래서 34종류의 모든 패를 하나씩 대기패에 추가해보고 그렇게 구성한 패가 완성패인지 아닌지 판..

알고리즘 (PS)/BOJ

[백준] 28457 - Every? Only One's Marble (G1)

https://www.acmicpc.net/problem/28457 28457번: Every? Only One's Marble 첫 번째 줄에는 보드의 크기 $n$, 시작 시 가지는 돈 $S$, 시작점을 지나면 받게 되는 월급 $W$, 황금 열쇠 카드의 개수 $G$가 주어진다. ($3\leq n\leq 10$, $1\leq G\leq 4n-8$, $1\leq S,W\leq 10^7$) 그다음 $G$개의 www.acmicpc.net 부루마블 게임을 구현하는 문제다. 그래도 플레이어가 1명이라 구현 난이도가 엄청 높진 않다. (플레이어가 여러명인 Yut Nori 같은 문제 구현에 비하면..) 구현할 때 다음과 같은 2가지 사항에 주의해야했다. 1. 보드의 사이즈가 작을 때는 주사위 한번으로 2바퀴를 돌 수도 ..

개인 프로젝트/[2021] 코드악보 공유APP

21. 악보에 태그 기능 추가하기

악보에 태그 기능을 달면 더 좋겠다는 아이디어가 생각났다. 블로그 태그 같이 자유롭게 여러개를 다는 기능보다는 작성자가 직접 난이도와 곡 장르를 정해진 태그 중 골라서 매기는 기능이다. 이 기능이 추가되면 사용자들이 좀 더 편하게 악보를 찾을 수 있을 것이다. 난이도와 장르를 구분하지 않고 이렇게 enum 하나에 묶은 뒤, 각 값마다 태그의 배경색과 보여질 내용을 하드코딩했다. 난이도와 장르를 enum 하나에 묶은 이유는 Flutter의 Chip 이라는 기본 위젯을 가볍게 커스터마이징해서 Tag 라는 커스텀 위젯을 만들었는데, 이 Tag 라는 위젯에 TagContent 라는 하나의 enum 을 넘겨서 장르와 레벨을 모두 표현하고 싶었기 때문이다. enum을 구분하면 위젯도 GenreTag, LevelTa..

개인 프로젝트/[2021] 코드악보 공유APP

20. 플레이스토어 출시

기본적인 기능은 어느정도 만들어졌다고 생각해서 플레이스토어에 한번 출시해보기로 마음먹었다. 구글 개발자 계정은 전에 만들어두었다. 근데 앱을 등록하는 절차가 정말 복잡했다. 앱 정보 뿐만 아니라, 미국 세금 관련 정보, 국내 결제 정보 같은 것도 입력해야하는데 낯선 부분이 정말 많았다. 앱 아이콘을 간단하게 만드는 방법을 검색해서 피그마로 만들었다. 그래픽 이미지는 어디에 쓰이는 건지 모르겠다. 앱 링크 공유하면 나오는 이미지라는데 해보니까 앱 아이콘으로 나오던데..? 1학년때 디디입 수업을 들으면서 앱 아이콘 디자인 과제를 해본 게 조금 도움이 되었다. 진짜 너무 힘들었던 수업인데 이럴 때 도움이 되네.. 스크린샷을 올려준다. 같은 태블릿 스크린샷인데 10인치에 사이즈가 안맞는다고 안올라가서 당황했다...

Infra/Firebase

[Firebase] 플레이스토어 배포 후 구글 로그인 안됨

나는 Firebase Auth 와 플러터의 구글 로그인 공식 라이브러리를 이용해 로그인 및 인증을 구현한 상황 분명 로컬에서 실행해서 테스트할 땐 잘 되던 구글 로그인이 플레이 스토어에 배포한 앱을 받아 설치하면 로그인 이후 화면이 바뀌지 않는 문제가 발생했다. 해결방법은 생각보다 간단했다. 구글 플레이 콘솔에 들어가서 앱을 선택한 뒤, 설정 > 앱 서명 에 들어간다. 화면에서 '앱 서명' 탭을 클릭하면 이렇게 인증서 지문이 나오는데, SHA-1 인증서 지문을 복사한다. Firebase Console 설정의 '프로젝트 설정' 으로 들어간다. 디지털 지문 추가를 누른 뒤, 아까 복사해둔 SHA-1 지문을 붙여넣으면 끝! 앱을 다시 배포한다거나 하지 않고도 로그인이 정상적으로 잘 되는 것을 알 수 있다. 내..

개인 프로젝트/[2021] 코드악보 공유APP

19. 그룹 기능 구현과 Firestore 데이터 구조 고민

지금까지는 아이디어를 결과로 보여준다는 느낌으로, 떠오르는 생각들을 바로 구현해 나갔었다. 설계를 해보려고 했는데 머릿속에 다 정리된 내용을 손으로 다시 하나하나 옮기려니 단순작업을 하는 느낌이었기 때문에 의지가 생기지 않았다. 그러다 그룹 기능을 구현하던 중 고민거리가 생겼다. 내가 의도하는 그룹의 기능은 일종의 밴드 그룹같은 느낌이다. 특정 유저끼리 모여서 그룹을 구성하면 그 그룹에서 매주 정기공연을 한다고 하자. 그럼 매주 정기 공연마다 연주할 악보 셋리스트가 달라질 것이다. 그래서 그룹을 만들면 일정을 만들고, 매 일정마다 어떤 악보들을 넣을지 고를 수 있도록 기능을 만들었다. 예를 들어, 위 화면 같은 경우, 테스트 라는 일정에서 '내 손을 잡아' 의 악보를 넣은 상황이다. 이렇게 일정마다 악보..

에버듀
'분류 전체보기' 카테고리의 글 목록 (36 Page)