NOGUEN 블로그
NOGUEN 블로그
그외
2024.06.02 02:26
Develop 카테고리의 최신 글
[Flutter][Issue] Flutter 카카오 로그인 릴리즈 키
[Flutter][Issue] Flutter 카카오 로그인 릴리즈 키
Flutter
2024.12.29 16:10
문제 상황 서비스를 배포하고나서 안드로이드 기기에서 카카오 로그인이 안된다는 버그 리포트를 받았다. 안드로이드 기기에서만 안된다는 것을 제보받고 패키지의 문제인가 생각을 했다. 그런데 그런 이슈가 있다는 걸 듣지도 못했고, 디버그 모드에서 잘 동작하는 것을 확인하고나서 카카오에 등록한게 문제가 생겼다는 것을 인지했다.  원인과 해결원인 Android 플랫폼 등록을 할 때 키 해시를 등록하는 부분이 있다. 테스트를 할 때에는 디버그 키 해시를 받아서 등록을 해놓는데, 구글 플레이에 앱이 등록되고 나서는 릴리즈 키 해시를 등록해줘야한다. ▼  조금 더 정확히 말하자면, 디버그 앱은 안드로이드 스튜디오에서 자동으로 서명해준 키 스토어로 서명되어있다. 그에 반해 구글 플레이에 등록되는 앱은 개발자가 직접 생성한..
[JS] CommonJS와 ES모듈
[JS] CommonJS와 ES모듈
React
2024.12.13 23:55
개요프론트엔드 개발을 막 접했을 시점에 VScode에서 이런 경고 문구를 보게 되었다. ▼ JS에 대해 잘 모르기도 했고, 애초에 ES 모듈이 뭔지 그리고 CommonJS 모듈이 뭔지도 몰랐기도 하고 잘 동작하기에 그냥 넘어갔었다. 그런데 이런 사소한 것들을 그냥 지나치면 나중에 큰 문제가 될 수 있을 거 같아 한 번 찾아보면서 정리를 해봤다. CommonJSCommonJS란 CommonJS는 Node.js의 초기 모듈 시스템으로, 모듈을 로드하고 관리하기 위해 설계된 시스템이다. 주로 서버사이드에서 사용이 된다. 상당히 레거시한 느낌이 강하지만 Node.js 생태계 전반에서 사용되고 있으며 많은 라이브러리에서 지원이 된다. (개요에서 필자가 뭔지도 모르고 썼음에도 동작할 수 있었던 이유다.) Commo..
[Flutter][Widget][Issue] TabBar 왼쪽에 공간이 생기는 현상
[Flutter][Widget][Issue] TabBar 왼쪽에 공간이 생기는 현상
Flutter
2024.12.11 22:57
문제 상황 TabBar를 이용하여 한 페이지에 여러 개의 뷰를 보여주는 UI는 거의 대부분의 앱에서 사용될 정도로 흔하다. 일반적으로는 고정된 개수의 TabBar를 사용하기에 스크롤 할 일이 없는데, 때로는 여러 개의 TabBar를 두어 스크롤이 들어가기도 한다. 그런데 스크롤을 넣기 위해 `isScrollable`을 `true`로 바꾸면 사진과 같이 왼쪽에 의문의 Padding이 들어가게 된다. ▼ 왜 이 빈 공간이 생기는 것이고, 어떻게 하면 제거할 수 있을까?  원인과 해결원인 원인은 `TabAlignment`에 있다. 사진의 설명에 나와있듯, 만약 TabBar의 `isScrollable`이 `true`가 되면 TabBar는 기본적으로 52pixel의 offset을 갖게 된다.  정확히는 `isSc..
[Flutter][Error] Lexical or Preprocessor Issue (Xcode): 에러 해결
[Flutter][Error] Lexical or Preprocessor Issue (Xcode): 에러 해결
Flutter
2024.10.16 18:46
발단iOS18 업데이트와 함께 Xcode도 16버전으로 업데이트가 됐다. iOS 시뮬레이터의 경우 최신 버전을 깔지 않으면 앱 디버깅을 수행할 수 없다는 에러 문구가 나오기에 최신 버전으로 강제로 업데이트 했고, Xcode도 이에 맞추어 같이 업데이트를 했다. 그러나 문제가 발생했는데, 앱 빌드를 할 때 아래와 같은 에러가 나왔다는 것이다. ▼ 발생한 에러Lexical or Preprocessor Issue (Xcode): Include of non-modular header inside framework module 'firebase_storage.FLTTaskStateChannelStreamHandler':  해결Xcode와 firebase에 관련된 에러인데, 어떤 부분을 손 봐야할 지 모르겠어서 검..
[Flutter] Event Bus 패턴
[Flutter] Event Bus 패턴
Flutter
2024.09.28 18:12
개요Flutter로 페이지를 만들고 라우팅까지 할 수 있게 된 뒤, 각 페이지에 네트워킹을 붙이게 될 쯤 굉장히 난처한 부분을 마주하게 된다. 바로 이전 페이지로 돌아가면서 데이터 패칭을 하는 것이다.  A(Page)에서 B로 이동한 뒤, B에서 A에 연결된 데이터에 영향이 가는 작업을 수행한 뒤 다시 A로 돌아오면 변경된 사항을 반영해주어야 한다. 이를 해결하는 가장 쉬운 방법은 강제 새로고침을 넣어 사용자에게 이를 전가하는 방식인데 이는 유저 친화적이지 않기에 보통은 뒤로 이동하면 자동으로 데이터 패칭이 되게끔 개발한다.  하지만 보통 데이터 패치는 페이지가 생성되는 `init`에서 수행되고, 각 페이지와 연결된 Controller(혹은 Notifier가 있다면)는 다른 Controller들과 독립적..
스펙업! 카테고리의 최신글
신입 개발자 포트폴리오 작성 - 3 (첨삭)
신입 개발자 포트폴리오 작성 - 3 (첨삭)
스펙 업!
2024.11.12 21:18
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
[면접 질문] Flutter 심화 질문/답
[면접 질문] Flutter 심화 질문/답
스펙 업!
2024.08.08 21:08
Flutter의 컴파일 과정 [Flutter] Dart의 컴파일 과정개요의문의 시작 Flutter를 통해 개발을 하면, '한 번에 두 가지, 필요에 의하면 여섯 가지의 플랫폼까지도 동시에 개발을 할 수 있다니 굉장히 편리하잖아?' 라는 생각과 '근데 웹으로 대체하던데noguen.com  Dart 언어의 장단점 [Flutter] 코드가 어떻게 화면이 되나요(2) — Dart Virtual Machine중간언어(기계어)로 프로그램을 실행하기 위해서는, 가상의 머신이 필요하다.medium.com  Dart는 싱글 스레드 언어 [Flutter] Dart는 싱글 스레드 언어개요싱글 스레드인데 어떻게? 처음 Dart가 싱글 스레드 언어라는 말을 들었을 때는 별 생각이 없었다. 그냥 그런가보다... 했었는데 Futu..
신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)
신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)
스펙 업!
2024.06.08 12:30
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)
스펙 업!
2024.06.02 01:46
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
[면접 질문] Flutter 기본 질문
[면접 질문] Flutter 기본 질문
스펙 업!
2024.03.05 22:57
Flutter란?Flutter는 구글에서 개발한 모바일 어플리케이션 개발용 오픈소스 프레임워크다. Dart언어로 작성되었으며 안드로이드 및 iOS 모바일 앱 개발 뿐만 아니라 웹, 데스크톱 및 IoT 기기 등 다양한 플랫폼에서도 실행이 가능하다. Flutter는 빠른 개발 및 확장성을 지원하고, 다양한 애니메이션 및 사용자 인터페이스 요소를 포함하고 있다.  Flutter와 타 모바일 개발 플랫폼들과의 차이점React Native와의 차이점Flutter의 높은 성능Flutter의 Dart언어는 네이티브 코드로 컴파일 될 수 있다. 허나 React Native는 네이티브 모듈과 통신하기 위해 JavaScript 브리지를 사용하기 때문에 성능이 Flutter에 비해 약간 낮을 수 있다. 응용 프로그램 크기F..
CS 카테고리의 최신 글
Transaction Management Overview
Transaction Management Overview
데이터베이스
2024.04.04 19:42
Transactions DBMS의 성능을 향상시키기 위해서는 사용자 프로그램의 동시 실행이 필수적이다. 디스크 액세스는 빈번하게 발생하며 비교적 느리기 때문에 CPU를 활용하여 여러 사용자 프로그램을 동시에 처리하는 것이 중요하다. 사용자 프로그램은 데이터베이스에서 검색한 데이터에 대해 많은 작업을 수행할 수 있지만, DBMS는 데이터베이스에서 읽거나 쓰는 데이터에만 관심이 있기 때문이다. DBMS는 사용자 프로그램을 추상화하여 트랜잭션(Transaction)이라는 개념으로 표현한다. 트랜잭션은 읽기와 쓰기의 연속으로 구성된 DBMS의 추상적인 사용자 프로그램이다. 트랜잭션은 일련의 데이터베이스 작업으로 구성됩니다. 일반적으로 트랜잭션은 다음과 같은 단계로 진행된다. 시작 (Begin) 트랜잭션이 시작되..
통계 DB의 보안(내용보완필요)
통계 DB의 보안(내용보완필요)
데이터베이스
2024.04.04 19:35
개론 앞에서는 DB외에도 일반적으로 사용하는 방법을 알아보았다. 이제는 통계 DB에서의 개인정보 유출을 배워본다. 통계 DB 통계 DB에서는 개인의 정보를 다룬다. 그러나 해당 DB에서는 집계 질의문만 처리해주기 때문에 특정 개인의 정보를 알 수 없다. 평균 나이, 최소 나이, 최고 나이 등등과 같은 집계 정보만 주기에 고라니의 나이나 고라니의 몸무게와 같이 특정 데이터는 얻을 수 없다. 추론 문제 그러나 추론이 가능하다. 예를 하나 들어보자. 나이와 등급이 연결되어있는 통계 DB가 있다고 해보자. 등급은 꽤나 민감한 정보로 아무도 모르지만 현재 노근은 대학 내의 학생 중 최고령자의 이름을 알고 있다. 그리고 이 최고령자가 유일무이하단 것도 알고 있다. 이 상황에서 노근은 해당 사람의 나이를 모름에도 등..
인터넷 응용프로그램의 보안
인터넷 응용프로그램의 보안
데이터베이스
2024.03.08 19:08
암호화 대칭적 암호화(Symmetric Encryption) 암호화에 필요한 키가 복호화 키로도 사용이 되는 암호화 방식을 말한다. 키가 하나만 있으면 되기에 간편한 방법이지만 키를 건네줄 때 부담이 생기게 된다. 암호화된 내용도 중간에서 가로챌 수 있는데 키라고 중간에 못 가로챌 일은 또 없다. 이렇게 하나의 키로 암호화와 복호화를 모두 하게 되면 키를 교환하는데에 부담이 생기게 된다. 공개키 암호화(Public-Key Encryption) 그래서 이런 부담을 줄이고자 나온게 공개키 암호화다. 각 사용자들은 모든 사람에게 알려진 공개 암호화 키와 자신만 알고 있는 비공개 복호화 키를 하나씩 갖고 있다. 사용자가 아마존에게 암호화된 주문 정보를 보내는 것을 예시로 보자.▼ 아마존은 암호화를 해주는 pub..
CPU Scheduling
CPU Scheduling
운영체제
2024.03.04 21:23
개요 운영체제는 항상 한정된 자원을 두고 자신과의 싸움을 한다. ▼ 자원은 계속해서 늘어나고 있지만 자원이 늘어나는 만큼 더 많이 사용하게 되어 자원은 항상 부족하다. 프로세스가 구동이 되려면 메모리 자원과 CPU자원이 필요하다. 모든 프로세스가 자원을 원하는 만큼 가져가면 좋겠지만 그렇게 다 주기엔 자원이 모자르기에 누구에게, 얼마나, 얼마동안 줄 지를 결정해야한다. 이렇게 프로세스에게 자원을 주는 일련의 행위를 Scheduling, 해당 행위를 맡고있는 OS의 일부분을 Scheduler라고 부른다. Q. Scheduler의 정체가 정확히 무엇인지? 하드웨어? 아니면 프로세스? A. 스케쥴러는 하드웨어나 별도의 프로세스가 아닌 OS의 기능중 하나이다. Term에 따른 종류 스케쥴러는 term을 단위로 ..
Process
Process
운영체제
2024.03.04 20:49
프로세스(Process)란? 프로세스란 지금 실행하는 프로그램을 의미하며, 프로그램의 가장 기본적인 단위를 의미하기도 한다. 프로세스의 문맥(Context) 현재 혹은 특정 지점을 놓고 봤을 때 프로세스가 어디까지 수행됐는지, 프로세스를 실행시키기 위해 어떤 메모리 공간을 만들었는지, Program Counter가 어디를 가리키고 있는지를 알려주는 정보를 프로세스의 문맥이라고 한다. 프로세스의 요소 각 프로세스는 크게 아래의 2가지를 갖는다. address space(core image) process table entry 여기서 entry는 해당 프로세스를 수행하기 위해 필요한 정보와 나중에 수행하기 위해 필요한 레지스터 값과 상태를 저장한다. Entry보다는 Process Control Block이라..
Algorithm 카테고리의 최신 글
백준 11722번 가장 긴 감소하는 부분수열 - C++
백준 11722번 가장 긴 감소하는 부분수열 - C++
PS
2024.11.23 16:02
문제수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10}  이고, 길이는 3이다. 입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력첫째 줄에 수열 A의 가장 긴 감소하는 부분 수열의 길이를 출력한다. 문제 링크https://www.acmicpc.net/problem/11722  풀이다이나믹 프로그래밍을 사용하면 되는 문제다.다이나믹 프로그래밍을 사용하면 쉽게 풀린다는 것은 문제를 보고 바로 알았지만 시행..
백준 2116번 주사위 쌓기 - C++
백준 2116번 주사위 쌓기 - C++
PS
2024.11.21 21:22
문제천수는 여러 종류의 주사위를 가지고 쌓기 놀이를 하고 있다. 주사위의 모양은 모두 크기가 같은 정육면체이며 각 면에는 1부터 6까지의 숫자가 하나씩 적혀있다. 그러나 보통 주사위처럼 마주 보는 면에 적혀진 숫자의 합이 반드시 7이 되는 것은 아니다.주사위 쌓기 놀이는 아래에서부터 1번 주사위, 2번 주사위, 3번 주사위, … 의 순서로 쌓는 것이다. 쌓을 때 다음과 같은 규칙을 지켜야 한다: 서로 붙어 있는 두 개의 주사위에서 아래에 있는 주사위의 윗면에 적혀있는 숫자는 위에 있는 주사위의 아랫면에 적혀있는 숫자와 같아야 한다. 다시 말해서, 1번 주사위 윗면의 숫자는 2번 주사위 아랫면의 숫자와 같고, 2번 주사위 윗면의 숫자는 3번 주사위 아랫면의 숫자와 같아야 한다. 단, 1번 주사위는 마음대로..
프로그래머스 전력망을 둘로 나누기 - C++
프로그래머스 전력망을 둘로 나누기 - C++
PS
2024.11.20 21:15
문제  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이완전 탐색과 BFS가 섞인 문제다.오늘도 피곤 이슈로... 대략적인 풀이만 올리고 다음에 몰아서 풀이를 올릴 예정이다. 우선 n이 작고, 제공되는 간선의 수도 100 보다 작기 때문에 모든 경우의 수를 다 해볼 수 있다.그러면 첫번째부터 마지막 간선까지 선을 하나씩 제거해나가며 BFS를 돌려보면 된다. 문제 조건이 하나만 끊어도 둘로 나눠지게 설계되어있기에 모든 간선을 한 번씩 끊어보며 확인해보면 된다. 그런데 처음에는 두 번 다 돌려야 하나? 했는데 양 쪽 구간을 모두 확인한다고 두번 돌릴 필요는 없다.n이 정해져있기 때문에 한쪽이 k개라면,..
프로그래머스 소수 찾기 - C++
프로그래머스 소수 찾기 - C++
PS
2024.11.19 23:11
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이대략적인 풀이는 오늘 작성하고 자세한 풀이는 내일 작성하겠다... (시간 이슈)next_permutations라는 함수가 있는데, 배열에 있는 다음 순열을 만들어주는 함수다.이를 이용해서 처음부터 끝까지 순열을 만들고 숫자로 바꾸면서 에라토스테네스의 체로 검사를 해주면 된다. 이런 함수가 있다는 걸 알았지만 dfs로 푸는게 좋지 않나 싶어서 재귀적으로 만드는 걸로 했다.이것저것 체크할 게 많아져서 굉장히 귀찮아지지만... 일단 이렇다. 자세하게 어떻게 돌아가는지는 시간이 충분할 때 작성하겠다.  C++ 코드#include #include #inc..
백준 2839번 설탕 배달 - SWIFT
백준 2839번 설탕 배달 - SWIFT
PS
2024.11.19 22:12
문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N..
image