NOGUEN 블로그
그외
2024.06.02 02:26
Develop 카테고리의 최신 글
[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
2024.09.28 18:12
개요Flutter로 페이지를 만들고 라우팅까지 할 수 있게 된 뒤, 각 페이지에 네트워킹을 붙이게 될 쯤 굉장히 난처한 부분을 마주하게 된다. 바로 이전 페이지로 돌아가면서 데이터 패칭을 하는 것이다. A(Page)에서 B로 이동한 뒤, B에서 A에 연결된 데이터에 영향이 가는 작업을 수행한 뒤 다시 A로 돌아오면 변경된 사항을 반영해주어야 한다. 이를 해결하는 가장 쉬운 방법은 강제 새로고침을 넣어 사용자에게 이를 전가하는 방식인데 이는 유저 친화적이지 않기에 보통은 뒤로 이동하면 자동으로 데이터 패칭이 되게끔 개발한다. 하지만 보통 데이터 패치는 페이지가 생성되는 `init`에서 수행되고, 각 페이지와 연결된 Controller(혹은 Notifier가 있다면)는 다른 Controller들과 독립적..
[React][개발기] CI/CD 도입
React
2024.08.08 21:03
⚠️ 이전에 개발하고 있던 딜레마 카페 글 아닙니다...!개요CI/CD 도입 배경 이전에 개발하고 있던 개인 프로젝트인 딜레마 카페는 잠시 중단하고, 웹 개발 외주(어디인지는 보안상의 문제로 기재하지 않겠다.)를 받아 이를 진행하고 있다. 네이버 지도 API를 넣기 위해 일시적으로 배포를 진행했는데, 이 배포 과정을 매번 할 생각을 하니 꽤나 귀찮겠다는 생각이 들어 CI/CD(Continuous Integration/ Continuous Deployment)를 도입했다. 현재는 좀 위험한 CI/CD 배포나 테스트를 자동으로 진행할 수 있어서 CI/CD를 도입하는데, 나는 우선 내가 올린거는 바로바로 반영이 되게끔 설정을 해놓았다. 지금 내가 해놓은 방식은 굉장히 위험한 방식이긴 하다. 현재로써는 잘못된 ..
[Flutter] Dart는 싱글 스레드 언어
Flutter
2024.08.04 21:21
개요싱글 스레드인데 어떻게? 처음 Dart가 싱글 스레드 언어라는 말을 들었을 때는 별 생각이 없었다. 그냥 그런가보다... 했었는데 Future와 Stream을 사용하다가 문득 Dart는 싱글 스레드 언어라는 것이 떠오르며 이런 생각이 들었다. '싱글 스레드인데 비동기는 어떻게 하는거지?' 싱글 스레드는 이름 그대로 Single, 하나의 스레드라는 것으로 한 번에 하나의 명령을 수행할 수 있다. 그런데 비동기를 처리하기 위해서는 스레드가 하나만 있어서는 안된다. 명령을 처리하는 스택이 하나이기에 5초를 대기하라는 명령, 혹은 1시간을 대기하라는 명령은 다른 명령들을 막아버린다. 이렇게 지연 시키는 행동을 Block이라고 하는데, 싱글 스레드라면 구조적으로 이렇게 될 수 밖에 없다는 것이다. 시간을 재..
[Flutter] Dart의 컴파일 과정
Flutter
2024.08.04 17:54
개요의문의 시작 Flutter를 통해 개발을 하면, '한 번에 두 가지, 필요에 의하면 여섯 가지의 플랫폼까지도 동시에 개발을 할 수 있다니 굉장히 편리하잖아?' 라는 생각과 '근데 웹으로 대체하던데...' 라는 생각 등등 여러가지 생각이 들곤 한다. 그런데 생각이 좀 더 진행이 되고 나니 '이걸 어떤 방식으로 수행하는 거지?' 라는 의문이 들기 시작했다. 빌드는 정해진 결과 "여섯 가지의 플랫폼으로 빌드가 가능"이라는 말은 결과지 과정이 아니다. 그리고 우리가 Dart 코드를 짜서 Flutter앱을 만드는 것도 어떻게 보면 결과에 해당되는 부분이고 과정에 해당되는 부분은 아니다. 우리는 Dart코드를 작성할 때 당연하게도 여섯가지의 플랫폼으로 빌드가 된다는 것을 상정하고 있으니 말이다. 여러가지 플랫폼..
스펙업! 카테고리의 최신글
신입 개발자 포트폴리오 작성 - 3 (첨삭)
스펙 업!
2024.11.12 21:18
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
[면접 질문] 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 (프로젝트 작성)
스펙 업!
2024.06.08 12:30
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)
스펙 업!
2024.06.02 01:46
신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하고 있다. 처음에는 점핏이나 사람인과 같은 플랫폼에서 제공하는 이력서noguen.com 신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성)개요프로필에 이어서... 신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서와 이것저것 취업에 필요한 것들을 준비를 하noguen.com 신입 개발자 포트폴리오 작성 - 3 (첨삭)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)신입 개발자 포트폴리오 작성 - 1 (프로필 작성)개요포트폴리오를 작성하게 된 계기산업기능요원을 준비하기 위해 이력서..
[면접 질문] 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
데이터베이스
2024.04.04 19:42
Transactions DBMS의 성능을 향상시키기 위해서는 사용자 프로그램의 동시 실행이 필수적이다. 디스크 액세스는 빈번하게 발생하며 비교적 느리기 때문에 CPU를 활용하여 여러 사용자 프로그램을 동시에 처리하는 것이 중요하다. 사용자 프로그램은 데이터베이스에서 검색한 데이터에 대해 많은 작업을 수행할 수 있지만, DBMS는 데이터베이스에서 읽거나 쓰는 데이터에만 관심이 있기 때문이다. DBMS는 사용자 프로그램을 추상화하여 트랜잭션(Transaction)이라는 개념으로 표현한다. 트랜잭션은 읽기와 쓰기의 연속으로 구성된 DBMS의 추상적인 사용자 프로그램이다. 트랜잭션은 일련의 데이터베이스 작업으로 구성됩니다. 일반적으로 트랜잭션은 다음과 같은 단계로 진행된다. 시작 (Begin) 트랜잭션이 시작되..
통계 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
운영체제
2024.03.04 21:23
개요 운영체제는 항상 한정된 자원을 두고 자신과의 싸움을 한다. ▼ 자원은 계속해서 늘어나고 있지만 자원이 늘어나는 만큼 더 많이 사용하게 되어 자원은 항상 부족하다. 프로세스가 구동이 되려면 메모리 자원과 CPU자원이 필요하다. 모든 프로세스가 자원을 원하는 만큼 가져가면 좋겠지만 그렇게 다 주기엔 자원이 모자르기에 누구에게, 얼마나, 얼마동안 줄 지를 결정해야한다. 이렇게 프로세스에게 자원을 주는 일련의 행위를 Scheduling, 해당 행위를 맡고있는 OS의 일부분을 Scheduler라고 부른다. Q. Scheduler의 정체가 정확히 무엇인지? 하드웨어? 아니면 프로세스? A. 스케쥴러는 하드웨어나 별도의 프로세스가 아닌 OS의 기능중 하나이다. Term에 따른 종류 스케쥴러는 term을 단위로 ..
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++
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 풀이다이나믹 프로그래밍을 사용하면 되는 문제다.다이나믹 프로그래밍을 사용하면 쉽게 풀린다는 것은 문제를 보고 바로 알았지만 시행..
세그먼트 트리
Algorithm 개념
2024.11.22 20:12
세그먼트 트리(Segment Tree)는 구간에 대한 쿼리(예: 합, 최소값, 최대값 등)를 효율적으로 처리하기 위해 사용되는 자료구조입니다. 이 자료구조는 부분합 쿼리와 같은 문제에서 유용하며, 특히 값의 업데이트와 쿼리를 모두 효율적으로 처리해야 하는 상황에 적합합니다.1. 세그먼트 트리의 특징 • 시간 복잡도 • 쿼리 처리 및 업데이트:  • 초기 트리 빌드:  • 사용 조건 • 주어진 배열이 변동될 수 있을 때(업데이트가 자주 발생할 때) • 배열의 특정 구간에 대한 질의(쿼리)를 자주 수행할 때 • 트리의 크기 • 배열의 크기를 이라고 할 때, 세그먼트 트리의 크기는  정도로 메모리를 할당하는 것이 일반적입니다.2. 세그먼트 트리의 구성 • 세그먼트 트리는 이진 트리 구조를 기반으로 하며..
백준 2116번 주사위 쌓기 - C++
PS
2024.11.21 21:22
문제천수는 여러 종류의 주사위를 가지고 쌓기 놀이를 하고 있다. 주사위의 모양은 모두 크기가 같은 정육면체이며 각 면에는 1부터 6까지의 숫자가 하나씩 적혀있다. 그러나 보통 주사위처럼 마주 보는 면에 적혀진 숫자의 합이 반드시 7이 되는 것은 아니다.주사위 쌓기 놀이는 아래에서부터 1번 주사위, 2번 주사위, 3번 주사위, … 의 순서로 쌓는 것이다. 쌓을 때 다음과 같은 규칙을 지켜야 한다: 서로 붙어 있는 두 개의 주사위에서 아래에 있는 주사위의 윗면에 적혀있는 숫자는 위에 있는 주사위의 아랫면에 적혀있는 숫자와 같아야 한다. 다시 말해서, 1번 주사위 윗면의 숫자는 2번 주사위 아랫면의 숫자와 같고, 2번 주사위 윗면의 숫자는 3번 주사위 아랫면의 숫자와 같아야 한다. 단, 1번 주사위는 마음대로..
프로그래머스 전력망을 둘로 나누기 - C++
PS
2024.11.20 21:15
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이완전 탐색과 BFS가 섞인 문제다.오늘도 피곤 이슈로... 대략적인 풀이만 올리고 다음에 몰아서 풀이를 올릴 예정이다. 우선 n이 작고, 제공되는 간선의 수도 100 보다 작기 때문에 모든 경우의 수를 다 해볼 수 있다.그러면 첫번째부터 마지막 간선까지 선을 하나씩 제거해나가며 BFS를 돌려보면 된다. 문제 조건이 하나만 끊어도 둘로 나눠지게 설계되어있기에 모든 간선을 한 번씩 끊어보며 확인해보면 된다. 그런데 처음에는 두 번 다 돌려야 하나? 했는데 양 쪽 구간을 모두 확인한다고 두번 돌릴 필요는 없다.n이 정해져있기 때문에 한쪽이 k개라면,..
프로그래머스 소수 찾기 - C++
PS
2024.11.19 23:11
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이대략적인 풀이는 오늘 작성하고 자세한 풀이는 내일 작성하겠다... (시간 이슈)next_permutations라는 함수가 있는데, 배열에 있는 다음 순열을 만들어주는 함수다.이를 이용해서 처음부터 끝까지 순열을 만들고 숫자로 바꾸면서 에라토스테네스의 체로 검사를 해주면 된다. 이런 함수가 있다는 걸 알았지만 dfs로 푸는게 좋지 않나 싶어서 재귀적으로 만드는 걸로 했다.이것저것 체크할 게 많아져서 굉장히 귀찮아지지만... 일단 이렇다. 자세하게 어떻게 돌아가는지는 시간이 충분할 때 작성하겠다. C++ 코드#include #include #inc..