자라자
🌱 자라자의 기술블로그
-
ABOUT
ABOUT
2022.08.11자라자의 기술 블로그를 방문해주셔서 감사합니다. 이 블로그는 개발 공부를 하며 생긴 지식, 생각들을 정리하는 공간입니다. 웹 프론트엔드 개발을 주력으로 개발하고 있습니다. 현재 소프트웨어마에스트로 13기 연수생으로 활동하고 있습니다. 블로그의 메뉴구성 Tech Note : 주관을 전달하는 글입니다. 개발을 하다 생각한 내용을 소재로 정확한 정보보다는 생각을 전달하는 데 목적을 둡니다. Dev Log : 개발 중 디버깅이나 에러 해결 로그, 특정 기능 구현 등 정보 전달을 목적의 글입니다. Study Log : 강의 책, 개발 공식 문서 등 특정 리소스를 읽고 정리하는 공간입니다. Settings : 환경 설정 요령에 대한 글입니다. PS : 알고리즘 공부 및 문제 풀이에 대해 다룹니다. Diary : 일.. -
저는 시간을 이렇게 씁니다.
저는 시간을 이렇게 씁니다.
2022.02.05들어가며 저의 닉네임이자 이 블로그의 이름이 자라자인 이유를 아시나요? 자라자에는 무려 세 가지 뜻이 담겨 있답니다. 설명하는 것은 참 낯간지러운 일이지만, 그래도 말해보자면 1. 자라자! (Let's grow up!) 2. 잘 하자! (Let's do it well!) 3. 자라 자(please sleep) 소리를 들을 때까지 열심히 하자. 라는 뜻이 담겨 있지요. 하하. 닉네임으로 이런 이름을 택할 정도로 저는 성장하고 싶습니다. 어제보다 더 나은 오늘을 사는 것이 오늘의 목표이고, 더 유능한 개발자가 되기 위해서 하루하루 공부를 이어가고 있습니다. 성장은 기록에서 나온다 사실 이번 글에서 다루고 싶었던 내용은 성장 자체라기보다 성장을 위한 방법론입니다. 저는 성장을 위해서는 절대적인 시간투자가 필요.. -
잘하는 프론트엔드 개발자란?
잘하는 프론트엔드 개발자란?
2022.09.03잘하는 프론트엔드 개발자란 무엇일까요? 최근 프론트엔드 개발을 진행하면서 들었던 생각을 간략하게 정리해보았습니다. 아래 조건들이 잘하는 프론트엔드 개발자가 되기 위해 집중해야 할 전부라고는 할 수 없겠지만, 실력 있는 프론트엔드 개발자라면 아래 역량을 모두 갖추고 있을 것이라고 생각합니다. 미려한 사용자 경험을 전달하는 역량 빠른 속도로 구현하는 역량 협업할 수 있는 역량 1. 미려한 사용자 경험을 전달하기 '미려하다'는 ''아름답고 보기에 매우 좋다'는 뜻의 우리 말입니다. 조금은 모호한 편이라고 할 수 있지만, 세분화해보면 아래와 같을 것입니다. 사용자가 느끼기에 화면이 아름답고 조작이 편할 것 (UI/UX) 성능 상 이슈가 없도록 구현할 것 웹 접근성을 고려하여 ..
🍀 새로 나온 글
-
POCU Academy COMP2500 개체지향 프로그래밍 및 설계 수강 후기
POCU Academy COMP2500 개체지향 프로그래밍 및 설계 수강 후기
2023.08.12최근 3개월간 POCU Academy에서 개체지향 프로그래밍 및 설계 (Java)를 수강했습니다. POCU Academy나 COMP2500에 대한 사전 지식이 전혀 없다면 위 링크를 둘러보시면 도움이 되실 겁니다. 대학교 정규 학기처럼 3달간, 완전한 온라인 환경에서, 강의 그리고 과제와 실습을 통해 개체지향에 대해 배우는 과정입니다. 대학교와 같이 시험도 있고요. 기말고사가 끝나고 학기를 정리하는 차원에서 수강 후기를 작성했습니다. POCU Academy에서 수업을 듣고 싶지만 고민 중이신 분 들을 이라면 이 글이 도움이 되었으면 합니다. 전반부는 POCU Academy에 대하여, 후반부는 COMP2500에 대하여 느낀 점을 적었습니다. 비전공자가 POCU Academy를 만나기까지 독자 분의 수강 결.. -
자라자. 함께.
자라자. 함께.
2022.10.27김창준님의 저서 함께 자라기 - 애자일로 가는 길을 읽었습니다. 이 책은 정말 특별한 책인데요, 제 인생 첫 직장 생활에서의 첫 사수분께서 선물해주신 책이랍니다. 스타트업에서 개발 인턴을 했는데 퇴사할 때 책을 선물로 받았어요. 선물 받고 읽은 지는 한참 됐지만 이제서야 글을 쓰는 게으른 나... '함께 자라기' 라니... 책 받았을 때 처음 들었던 생각은 '이렇게 완벽한 제목을 가진 책이 있다니!!' 였습니다. 블로그에서 닉네임으로 쓰고 있는 자라자와 찰떡궁합이니까요. 더불어 이 책은 소프트웨어 마에스트로와도 연관이 있었습니다. 저자 김창준 님이 이전에 소프트웨어 마에스트로 멘토셨다고 해요. 지금은 멘토를 안 하시는 것으로 알고 있지만, 그 분이 계실 때 지도를 받았다면 또 새로운 경험들을 많이 쌓지 .. -
Permission_handler 비디오 접근
Permission_handler 비디오 접근
2022.09.06현재 경매 정보 서비스 비드를 개발하고 있습니다. 플레이스토어에 올라간 상태인데 앱을 업데이트하려다 리젝을 먹었습니다. TL;DR 비디오 접근은 카메라 권한과 마이크 권한을 모두 고려해야 합니다.. 첫 번째 리젝 애플에서는 리젝 사유를 친절하게, 스크린 샷까지 찍어서 알려줍니다. 채널톡에는 상담자가 파일을 전송할 수 있는 기능이 있습니다. 카메라로 사진이나 비디오를 전송할 수도 있습니다. 과거에는 플러터 공식 웹뷰인 webview_flutter를 사용하고 있었는데요, 파일 전송을 하거나 카메라에 접근하는 경우 권한이 없으면 앱이 그냥 튕겼습니다. 안드로이드와 아이폰이 다르게 동작했는데, 아이폰의 경우 앱이 강제 종료되고, 안드로이드의 경우 클립모양 버튼 자체가 클릭이 안됐습니다. 그런데, 기존 웹뷰에 큰.. -
잘하는 프론트엔드 개발자란?
잘하는 프론트엔드 개발자란?
2022.09.03잘하는 프론트엔드 개발자란 무엇일까요? 최근 프론트엔드 개발을 진행하면서 들었던 생각을 간략하게 정리해보았습니다. 아래 조건들이 잘하는 프론트엔드 개발자가 되기 위해 집중해야 할 전부라고는 할 수 없겠지만, 실력 있는 프론트엔드 개발자라면 아래 역량을 모두 갖추고 있을 것이라고 생각합니다. 미려한 사용자 경험을 전달하는 역량 빠른 속도로 구현하는 역량 협업할 수 있는 역량 1. 미려한 사용자 경험을 전달하기 '미려하다'는 ''아름답고 보기에 매우 좋다'는 뜻의 우리 말입니다. 조금은 모호한 편이라고 할 수 있지만, 세분화해보면 아래와 같을 것입니다. 사용자가 느끼기에 화면이 아름답고 조작이 편할 것 (UI/UX) 성능 상 이슈가 없도록 구현할 것 웹 접근성을 고려하여 .. -
gitlab에서 github으로 미러링 과정 중 인증 문제 해결하기
gitlab에서 github으로 미러링 과정 중 인증 문제 해결하기
2022.08.30프로젝트를 깃랩에서 관리하고 배포를 위해 깃허브로 미러링을 시켰습니다. 액세스 토큰을 다시 발급받으면서 토큰이 갱신되었는데, 갱신된 토큰을 다시 입력해도 깃랩에서 계속 오류가 뜨면서 미러링이 안되는 문제가 있었습니다. 해결 방법 Mirroring Repository에 username 뒤에 토큰을 같이 입력해주면 됩니다. https://username:personalacesstoken@gihub.com/repo.git Reference https://forum.gitlab.com/t/authentication-fails-when-trying-to-mirror-gitlab-com-repo-to-github/3137 -
Lighthouse로 성능 개선하기
Lighthouse로 성능 개선하기
2022.08.30Lighthouse 성능 개선하기 경매정보 검색 앱 '비드'를 만드는 과정에서 Lighthouse를 이용해 성능을 개선해보았습니다. 발단 LightHouse 는 클라이언트 사이드에서 웹 성능을 측정해주는 간편한 도구입니다. 퍼포먼스, 접근성, SEO 등을 평가합니다. 아무런 생각 없이 기능위주의 구현을 했다가 뭔가 느린 것 같아서 측정을 해보니 Performance 31점, TTI 11초라는 참담한 결과를 맞이하였습니다... 문제 진단 우선 어디가 문제인지 점검하기 위해서 @next/bundle-analyzer를 설치해서 파일 크기를 확인해보았습니다. 일단 const.ts의 파일이 매우 크다는 것을 알 수 있었습니다. 필터가 굉장히 덩치가 큰데, 필터 구조가 복잡하기 때문입니다. 지역, 법.. -
JS DeepDive 정리 1장 - 20장
JS DeepDive 정리 1장 - 20장
2022.08.11자바스크립트 딥다이브를 읽으며 중요하거나 모르는 내용 위주로 정리했습니다. 1. 프로그래밍이란? 프로그래밍이란 컴퓨터에게 실행을 요구하는 커뮤니케이션이다. 구문과 의미의 조합이다. 문제 해결을 위해 컴퓨팅 사고력을 요한다. 우리는 프로그래밍 언어를 작성하고, 컴파일러는 그것을 기계어로 번역한다. 문법적으로 틀리지 않아도, 요구사항에 부합하지 않으면 의미가 없다. 결국 프로그래밍은 요구사항을 분석하고, 함수의 집합으로 변환하고, 흐름을 제어하는 일이다. 2. 자바스크립트란? 넷스케이프에서 브라우저에서 동작하는 프로그래밍 언어를 도입하기로 결정 → 모카 → 라이브스크립트 →자바스크립트 JScript 의 등장으로 위기를 맞았으나 표준화 기구 ECMA 인터내셔널에 JS의 표준화를 요청, ECMAScript로 명.. -
ABOUT
ABOUT
2022.08.11자라자의 기술 블로그를 방문해주셔서 감사합니다. 이 블로그는 개발 공부를 하며 생긴 지식, 생각들을 정리하는 공간입니다. 웹 프론트엔드 개발을 주력으로 개발하고 있습니다. 현재 소프트웨어마에스트로 13기 연수생으로 활동하고 있습니다. 블로그의 메뉴구성 Tech Note : 주관을 전달하는 글입니다. 개발을 하다 생각한 내용을 소재로 정확한 정보보다는 생각을 전달하는 데 목적을 둡니다. Dev Log : 개발 중 디버깅이나 에러 해결 로그, 특정 기능 구현 등 정보 전달을 목적의 글입니다. Study Log : 강의 책, 개발 공식 문서 등 특정 리소스를 읽고 정리하는 공간입니다. Settings : 환경 설정 요령에 대한 글입니다. PS : 알고리즘 공부 및 문제 풀이에 대해 다룹니다. Diary : 일.. -
gitlab에서 github으로 미러링 과정 중 인증 문제 해결하기
gitlab에서 github으로 미러링 과정 중 인증 문제 해결하기
2022.08.07프로젝트를 깃랩에서 관리하고 배포를 위해 깃허브로 미러링을 시켰습니다. 액세스 토큰을 다시 발급받으면서 토큰이 갱신되었는데, 갱신된 토큰을 다시 입력해도 깃랩에서 계속 오류가 뜨면서 미러링이 안되는 문제가 있었습니다. 해결 방법 Mirroring Repository에 username 뒤에 토큰을 같이 입력해주면 됩니다. https://username:personalacesstoken@gihub.com/repo.git Reference https://forum.gitlab.com/t/authentication-fails-when-trying-to-mirror-gitlab-com-repo-to-github/3137 -
플러터로 웹뷰 세팅하기
플러터로 웹뷰 세팅하기
2022.08.01Flutter 앱에 WebView 추가 를 읽으면서 정리한 글입니다. pubspec.yaml에 의존성 추가 아래 명령어로 플러그인을 추가합니다. flutter pub add webview_flutter flutter pub get main.dart 에 웹뷰 추가 import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; void main() { runApp( const MaterialApp( home: WebViewApp(), ), ); } class WebViewApp extends StatefulWidget { const WebViewApp({Key? key}) : super(key: key.. -
리액트 쿼리 공식문서 번역 및 요약
리액트 쿼리 공식문서 번역 및 요약
2022.07.20React Query 리액트 쿼리 공식문서를 정주행하면서 중요한 내용을 정리해보았습니다. Overview 리액트 쿼리는 종종 누락된 데이터를 가져오는 라이브러리로 설명되곤 하지만, server state를 fetching, caching, synchronizing, updating할 수 있습니다. 기존의 상태관리 라이브러리들은 비동기적인 업무를 처리하거나 서버 상태를 관리하는데 좋지 않았습니다. 서버 상태는 우리가 통제할 수 없는 원격에서 유지되고 있으며, 비동기적인 API 호출을 요구하고, 다른 사용자에 의해 변경될 수 있고, 당신의 클라이언트에 있는 서버 상태는 oudated 상태가 될 수 있습니다. 서버상태를 관리하다보면, 캐싱, 요청의 중복 처리, 데이터의 최신 상태 관리, 최적화와 lazy lo.. -
온룸 코드 리팩토링하기 - 1편 : 안티 닌자 코드
온룸 코드 리팩토링하기 - 1편 : 안티 닌자 코드
2022.06.24TL;DR 닌자 코드 패턴의 존재를 알았고, 안티 닌자 패턴으로 기존 코드(ownroom.link)를 개선해보고 싶었습니다. 첫 진입점인 Home컴포넌트에서 banner +1,2,3,4,5로 무분별한 네이밍을 발견했습니다 이 부분이 문제인 줄 알았는데요, 진정한 닌자 코드는 따로 있었습니다! 컨테이너가 너무 많은 역할을 맡았습니다. 기존의 Container & absolute 방식 대신, 플러터에서 아이디어를 얻어 컴포넌트 위치를 체계화시켰습니다. 최근 들어 사이드 프로젝트가 하고 싶어졌습니다. 그런데 막상 무언가를 하려고 보니 어떤 걸 새로 만드는 것보다 만들어 둔 것을 일단 다듬고 코딩 스타일을 가다듬는 것이 제 실력 향상에 도움이 될 것이라는 판단이 들었습니다. 좋은 코드와 나쁜 코드의 기준은 이전.. -
백준 1068 트리 파이썬 풀이
백준 1068 트리 파이썬 풀이
2022.06.23정답 코드 # BOJ 1068 트리 # 2022 06 23 08:39 - 09:12 import sys input = sys.stdin.readline def main(): v = int(input()) graph = [[] for _ in range(v) ] connection = list(map(int,input().split())) root = -2 for idx, value in enumerate(connection): if value == -1: root = idx else: graph[value].append(idx) deleteNode = int(input()) if deleteNode == root : print(0) return # print(graph) parentNode = conne.. -
백준 1240번 노드 사이의 거리 파이썬 풀이
백준 1240번 노드 사이의 거리 파이썬 풀이
2022.06.22정답 코드 #BOJ 1240 #2022 06 17 05:56~ import sys from collections import deque input = sys.stdin.readline def main(): n, m = map(int,input().split()) graph = [[] for _ in range(n+1)] for _ in range(n-1): v1, v2, d = map(int,input().split()) graph[v1].append((d,v2)) graph[v2].append((d,v1)) ans = [] for _ in range(m): v1, v2 = map(int,input().split()) cur=v1 distance=0 q = deque() q.append((0,v1)) v.. -
백준 1039번 교환 파이썬 풀이
백준 1039번 교환 파이썬 풀이
2022.06.08K번 할 수 없는 경우는? M이 1이하인 경우 M에서 0인 자리수를 전부 뺐을 떄 1이하 라고 생각했는데, 사실 9000이면 0끼리 교환하면 되니까 틀린 조건. 2자리일 때 일의자리가 0인 경우이다. BFS와 DFS의 핵심은 수형도에 있다. 정답풀이 #2022.06.08.00:01 - 00:43 from collections import deque import sys input = sys.stdin.readline def main (): n,k = map(int,input().split()) m = len(str(n)) if m == 1 : print(-1) return if m==2 and n%10 ==0: print(-1) return def swap(cur, i,j): # 12345 1,3 -> 1.. -
삶은 문제의 집합이다.
삶은 문제의 집합이다.
2022.06.06생각 정리 1. 삶은 문제의 집합이다. 하나 하나가 쉽게 해결되지 않는 문제들이지만, 그렇기 때문이 인생이 재밌는 것 아닐까? 2. 문제에 집중하자. 문제 외적인 것들에 시간을 많이 투자하지 말자. 3. 집중은 의지보다 환경으로 만드는 게 더 쉽고, 오래간다. 4. 문제를 해결해야 하는데 필요한 일의 양이 정해져 있다면, 단기적으로 일의 속도를 높이는 건 어딘가에서 부작용을 초래한다. 건강이라던지. 불필요한 시간 투자를 줄이는 것이 훨씬 쉽다. -
백준 1713 후보 추천하기
백준 1713 후보 추천하기
2022.05.26정답코드 import sys input=sys.stdin.readline n=int(input()) student=int(input()) candidate={} for idx,i in enumerate(list(map(int,input().split()))): if i in candidate: candidate[i][2]+=1 else: if(len(candidate)==n): del candidate[sorted(list(candidate.values()),key=lambda x:(-x[2],-x[1]))[-1][0]] candidate[i]=[i,idx,1] print(' '.join(list(map(str,sorted(candidate.keys()))))) -
백준 1062 가르침 파이썬 풀이
백준 1062 가르침 파이썬 풀이
2022.05.261차시도 import sys from collections import defaultdict input = sys.stdin.readline def main(): N, K = map(int,input().split()) if K < 5 : print(0) return alphaCheck = 0 wordList = [] for _ in range(N): word = input().rstrip() wordList.append(word) wordSet = set(list(word)) for w in wordSet: alphaCheck |= 1 -
2022 상반기 생존신고
2022 상반기 생존신고
2022.05.22두 번의 정규직 제안과 거절 저는 현재 무직자입니다. 졸업 후 현재까지 2번의 정규직 제안을 받았으나 모두 거절했습니다. 올해 1월에 2021 서울기업 청년 SW인재 스카우트 라는, 중소기업과 구직청년을 매칭해주는 정부사업이 있었습니다. 코딩테스트를 응시했습니다. 원칙적으로는 코딩테스트 응시 후 기업에 지원을 해야하는데 지원 전에 기업쪽에서 먼저 연락이 왔습니다. 자바 백엔드 개발자를 뽑는 채용이었는데, 저는 자바를 몰랐습니다. 그렇지만 면접은 경험해보고 싶어서 그동안 프론트엔드 개발을 했던 내용으로 포트폴리오를 제출했고 면접을 통과했습니다. 오퍼를 받게 되었지요. 답장을 드리기로 한 마지막 날까지 정말 많이 고민했습니다. 일단 일을 시작해서 배우면서 이직을 하자 vs 공부가 부족하니 좀 더 공부를 하자.. -
백준 node.js 입력받기
백준 node.js 입력받기
2022.05.14const fs = require("fs") const filePath = process.platform === "linux"?"/dev/stdin":"./input.txt"; const newline = process.platform === "linux"?'\n':'\r\n'; input= fs.readFileSync(filePath).toString().split(newline); -
오토핫키 셋팅
오토핫키 셋팅
2022.05.03https://bacha.tistory.com/99 AutoHotkey로 방향키 대신 wasd 또는 ijkl를 방향키로 쓰기 - AutoHotkey 다운 부터 키맵 설정, 시작 프로 (최종 코드는 가장 아래에 있습니다.) 코딩을 하다보면 방향키를 사용할 때가 많다. 하지만 방향키는 상대적으로 오른쪽에 위치해서 손목을 계속 꺾어야 하는 불편함이 있다. 평소에는 괜찮았는 bacha.tistory.com SetCapsLockState, AlwaysOff #If GetKeyState("Capslock","P") k::Up h::Left j::Down l::Right u::Home i::End `;::BackSpace /::Del '::Send, {"} c::^c v::^v f::^f q::pgDn w::pgUp.. -
git branch 공부하기
git branch 공부하기
2022.02.26들어가며 https://learngitbranching.js.org/ 를 통해 깃허브 브랜치를 공부하고 개념들을 정리해본다. Git commit 소개 커밋은 스냅샷 이다. Git은 커밋을 가볍게 유지하고자 하기 때문에, 변경내역(delta)을 저장한다. 정답 코드: git commit git commitGit 브랜치 브랜치는 커밋에 대한 참조이다. 하나의 커밋과 그 부모 커밋들을 포함하는 작업내역이라고 생각하면 된다. 브랜치는 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않는다. git branch명령어는 현재 지점에 새로운 브랜치를 만들어 놓는다. 즉 가장 최근 커밋을 참조하는 다른 브랜치를 생성한다. 생성만 할 뿐, 이동하지는 않는다. 이동 명령어는 git checkout 브랜치명으로 할 수 있.. -
백준 1759 암호만들기 C++
백준 1759 암호만들기 C++
2022.02.18[문제 링크] https://www.acmicpc.net/problem/1759 [입출력 예] 입력 출력 4 6 a t c i s w acis acit aciw acst acsw actw aist aisw aitw astw cist cisw citw istw [소스코드] //11:57 #include using namespace std; int L, C; char arr[15]; char res[15]; char v[15]; void func(int k){ if( k == L){ bool noVowel=true; int consonantCnt = 0; for (int i=0; iarr[i]; sort(arr,arr+C); func(0); return 0; } -
백준 1920 수 찾기 파이썬
백준 1920 수 찾기 파이썬
2022.02.18[문제 링크] https://www.acmicpc.net/problem/1920 [입출력 예] 입력 출력 5 4 1 5 2 3 5 1 3 7 9 5 1 1 0 0 1 [소스코드] import sys input=sys.stdin.readline from collections import deque input() a=list(map(int,input().split())) input() test=list(map(int,input().split())) for i,x in enumerate(test): test[i]=[x,i,0] a.sort() test.sort() a=deque(a) test=deque(test) ans=[] while(a and test): cur_a=a.popleft() cur_test=t.. -
BOJ 2580 스도쿠 C++
BOJ 2580 스도쿠 C++
2022.02.16[문제 링크] https://www.acmicpc.net/problem/2580 [입출력 예] 입력 출력 0 3 5 4 6 9 2 7 8 7 8 2 1 0 5 6 0 9 0 6 0 2 7 8 1 3 5 3 2 1 0 4 6 8 9 7 8 0 4 9 1 3 5 0 6 5 9 6 8 2 0 4 1 3 9 1 7 6 5 2 0 8 0 6 0 3 7 0 1 9 5 2 2 5 8 3 9 4 7 6 0 1 3 5 4 6 9 2 7 8 7 8 2 1 3 5 6 4 9 4 6 9 2 7 8 1 3 5 3 2 1 5 4 6 8 9 7 8 7 4 9 1 3 5 2 6 5 9 6 8 2 7 4 1 3 9 1 7 6 5 2 3 8 4 6 4 3 7 8 1 9 5 2 2 5 8 3 9 4 7 6 1 [소스코드] //14:54 .. -
백준 1182 부분수열의 합 파이썬 풀이
백준 1182 부분수열의 합 파이썬 풀이
2022.02.12[문제 링크] https://www.acmicpc.net/problem/ [입출력 예] 입력 출력 5 0 -7 -3 -2 5 8 1 [소스코드] import sys input = sys.stdin.readline cnt=0 def func (i ,tot): if i==n: if tot==m: global cnt cnt+=1 return func(i+1,tot) func(i+1,tot+arr[i]) n,m=list(map(int,input().split())) arr=list(map(int,input().split())) func(0,0) if(m==0): cnt-=1 print(cnt) -
온룸 파일 다운로드 관련 이슈와 해결한 방법
온룸 파일 다운로드 관련 이슈와 해결한 방법
2022.02.11export const downloadConsultingReportAsync = createAsyncThunk( 'user/DOWNLOAD_APPLICATION', async (customer: string) => { const response = await axios({ url: `https://api.ownroom.link/api/consultings/report/download?nickname=${customer}`, method: `get`, headers: { Authorization: `Bearer ${getCookie('token')}`, }, }); const a = document.createElement('a'); a.href = response.data.url; a.click(); r.. -
Redux Toolkit 알아보기
Redux Toolkit 알아보기
2022.02.10들어가며 출처: 코딩애플 프론트엔드에서 중요한 문제 중 하나가 전역상태를 어떻게 관리할 것인가 라고 생각한다. 특히나 React로 프로젝트를 구성했다면 여러 컴포넌트들 사이에서 props를 주고 받는 것이 프로젝트 규모가 커질수록 부담스러워질 수 있다. 컴포넌트 깊이가 깊어질수록 상위 컴포넌트의 state를 갱신하는 과정이 복잡해지고, 이는 컴포넌트 간의 결합도를 강화시킨다. 컴포넌트 간의 독립성을 추구하기 위해, 그리고 state 갱신에 관한 에러를 방지하기 위해 redux가 등장하였다. Redux에 대한 자세한 설명은 생략하기로 하고, 이 글에서는 Redux Toolkit을 이용해서 프로젝트를 어떻게 구성했는지를 설명해보려고 한다. 그냥 바닐라(?) 리덕스 대신 리덕스 툴킷을 이용한 이유는 보일러플레.. -
백준 2178 미로탐색 C++
백준 2178 미로탐색 C++
2022.02.10[문제 링크] https://www.acmicpc.net/problem/2178 [입출력 예] 입력 출력 4 6 101111 101010 101011 111011 15 [소스코드] //20:35시작 #include using namespace std; #define X first #define Y second int board[100][100]; int v[100][100]; int n,m; int dx[4]= {1,0,-1,0}; int dy[4]= {0,1,0,-1}; void printBoard(){ for (int i=0; i -
백준 3055번 탈출 파이썬
백준 3055번 탈출 파이썬
2022.02.09[문제 링크] https://www.acmicpc.net/problem/3055 [입출력 예] 입력 출력 3 3 D.* ... .S. 3 [소스코드] import sys from collections import deque input = sys.stdin.readline dx=[1,0,-1,0] dy=[0,1,0,-1] r, c = list(map(int,input().split())) board1 = [] Dx, Dy , Sx,Sy=0,0,0,0 water=deque() for i in range(r): tmp=list(input().rstrip()) for j in range(c): if tmp[j]=='D': Dx =i Dy =j if tmp[j]=='S': Sx = i Sy = j if tmp[j.. -
백준 15683 감시 C++
백준 15683 감시 C++
2022.02.09[문제 링크] https://www.acmicpc.net/problem/15683 [입출력 예] 입력 출력 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 6 0 0 0 0 0 0 0 20 [소스코드] #include using namespace std; #define X first #define Y second int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; int n,m; int board1[10][10]; //사무실 정보 저장용 int board2[10][10]; //색칠용 vector cctv; bool OOB (int a, int b){ return a=n || b=m; } // 위치와 방향을 주면, "그 다음 점부터.. -
백준 9663 N-Queen
백준 9663 N-Queen
2022.02.09[문제 링크] https://www.acmicpc.net/problem/9663 [입출력 예] 입력 출력 8 92 [소스코드] #include using namespace std; bool isused1[40]; bool isused2[40]; bool isused3[40]; int cnt =0; int n; void func(int cur){ if (cur==n){ cnt++; return; } for (int i=0; i>n; func(0); cout -
백준 1780번 종이의 개수 풀이
백준 1780번 종이의 개수 풀이
2022.02.09[문제 링크] https://www.acmicpc.net/problem/1780 [입출력 예] 입력 출력 9 0 0 0 1 1 1 -1 -1 -1 0 0 0 1 1 1 -1 -1 -1 0 0 0 1 1 1 -1 -1 -1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 -1 0 1 -1 0 1 -1 0 -1 1 0 1 -1 0 1 -1 0 1 -1 1 0 -1 0 1 -1 10 12 11 [소스코드] #include #define endl '\n'; using namespace std; int arr[2187][2187]; int cnt[3]; //0번째 : -1 개수, 1번째: 0 개수 , 2번째: 1 개수 bool checkArr(int r1, .. -
백준 17478 재귀함수가 뭔가요? C++
백준 17478 재귀함수가 뭔가요? C++
2022.02.08[문제 링크] https://www.acmicpc.net/problem/17478 [입출력 예] 입력 출력 2 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. "재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어." __"재귀함수가 뭔가요?" __"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. __마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. __그의 답은 대부분 옳았다고 하네. 그런데 어느 날.. -
백준 1074번 Z C++
백준 1074번 Z C++
2022.02.08[문제 링크] https://www.acmicpc.net/problem/1074 [입출력 예] 입력 출력 2 3 1 11 [소스코드] // 14:37 풀이 시작 #include using namespace std; int arr[2][2]={{0,1},{2,3}}; int func (int n, int r, int c){ if(n==1){ return arr[r][c]; } // 이전 단계에서 한 변의 길이 int prev = 1c; cout -
백준 11729번 하노이 탑 이동순서 C++
백준 11729번 하노이 탑 이동순서 C++
2022.02.08[문제 링크] https://www.acmicpc.net/problem/11729 [입출력 예] 입력 출력 3 7 1 3 1 2 3 2 1 3 2 1 2 3 1 3 [소스코드] #include using namespace std; void func(int a, int b, int n){ if (n==1){ cout