All
19 posts
github label sync, 깃허브 라벨 쉽게 적용하기

블로그 이전했습니다! https://computasha.com/Git/improvement/github+label+sync%2C+깃허브+라벨+쉽게+적용하기 새로운 레포를 만들 때마다 라벨을 다시 만드려니 너무 귀찮았다. 수작업 그자체.. 이걸 어떻게 해결할까 고민하다 github label sync 라는 라이브러리를 찾았다! github label sync는 label 템플릿을 만들어서 관리하고 이를 repo에 바로 적용할 수 있게 도와주는 라이브러리이다. 설치 방법과 repo에 적용하면서 겪은 에러까지 공유하고자 한다. Financial-Times/github-label-sync github 1. ✅ 요구사항 Node.js가 설치되어 있어야 한다. 레포에 접근하기 위해 GitHub access token이 필요하다. labels.json 파일이 필요하다. (아래 labels.json 설정 참고) 2. 🏷️ labels.json 설정 새롭게 적용할 label config 인  을…

July 22, 2023
etc.
TDD(Test-Driven Development)에 대해 알아보자

블로그 이전했습니다! https://computasha.com/Clean+Code/테스트/TDD(Test-Driven+Development)+개념과+장단점 ✨ 오늘의 목표 : TDD 이해하기 👩‍💻 TDD란? TDD(Test-Driven Development)는 테스트가 코드 작성을 주도하는 개발 방식이다. 요구 사항에 따른 자동화된 테스트케이스를 작성한 후, 해당 테스트를 통과하는 가장 간단한 코드를 작성하고 리팩토링 하는 과정의 반복이다. 새로운 기능을 추가할 때 테스트 코드를 작성함으로써, 새로운 기능이 제대로 작동함과 동시에 기존의 기능들이 잘 작동하는지 테스트를 통해 간단히 확인할 수 있다. (기존에 소프트웨어가 먼저 개발되고 테스트 사례가 나중에 만들어지는 것과는 정반대의 방식이다!) 🔁 TDD 과정 based on the book Test-Driven Development 1. Add a test TDD에서는, 새로운 기능을 추가하기 전에 제대로 동작하는 경우 통과하는 테…

January 13, 2023
CS
JPEG와 PNG의 차이점

블로그 이전했습니다! https://computasha.com/basic/term/JPEG와+PNG의+차이점 ✨ 오늘의 목표 : JPG와 PNG의 차이점을 이해하고, iOS 개발에 더 적합한 포맷 알기 🖼️ JPEG 포맷이란 JPEG(Joint Photographic Experts Group) 파일은 이미지를 저장하는 가장 일반적인 형식이다. JPEG 파일은 빠른 저장과 전송을 위해 손실 압축 방식으로 이미지를 저장한다. 손실 압축 방식이란, 사람의 눈으로 볼 수 없는 시각적 데이터를 제거하고 색상 변형을 평균화하는 방법으로, 이를 통해 이미지 파일의 크기를 최대한 작게 유지할 수 있다. 다만 압축을 할때 원본 이미지의 품질이 훼손될 수 있다는 단점이 있다. 🖼️ PNG 포맷이란 PNG(Portable Network Graphic) 포맷은 무손실 압축 방식을 사용하므로 압축 시 모든 원본 데이터를 유지한다. 중요한 정보가 손실되지 않기 때문에 디테일한 이미지를 저장하는데 적합하다. 다…

January 07, 2023
CS
reversed() 함수 이해하기

문제 프로그래머스 ‘푸드파이트대회’ 문제를 풀다가 문자열을 역순으로 정렬해서 사용하기 위해 reversed() 함수를 사용했다. 근데 과 같이 사용하니 에러가 발생했다..! reversed() 정의 알고보니 reversed() 함수는 새로운 배열을 리턴하는 게 아니라, ReversedCollection을 반환한다. ReversedCollection : A collection that presents the elements of its base collection in reverse order. 해결 방법 따라서 과 같이 다시 String으로 변환을 해줘야 문자열로 사용이 가능하다. 공식 문서 : https://developer.apple.com/documentation/swift/array/reversed() 문제 reversed() 정의 해결 방법

January 04, 2023
Swift
피츠의 법칙, 엄지 영역

피츠의 법칙(Fitts’ Law) 💁🏻 개요 대상에 도달하는 시간은 대상까지의 거리와 대상의 크기와 관련있다. ☝️ 요점 터치 대상의 크기는 사용자가 정확하게 선택할 수 있을 정도로 커야 한다. 터치 대상 사이에 충분한 거리가 필요하다. 터치 대상은 쉽게 도달할 수 있는 영역에 배치해야 한다. 👍 엄지 영역(the Thumb Zone) 한 손으로 스마트폰을 사용할 때 엄지손가락을 편안하게 뻗을 수 있는 영역을 보여주는 다이어그램. 왼손 사용자와 오른손 사용자 모두에게 자연스러운 영역이 사용자를 위한 최적의 영역이다. (중간에 위치한 다이어그램) 이미지 출처 피츠의 법칙(Fitts’ Law) 💁🏻 개요 ☝️ 요점 👍 엄지 영역(the Thumb Zone)

February 20, 2022
UX/UI
정적/동적 바인딩, 정적/동적 타입

⛓️ 바인딩이란? 함수를 컴파일하면, 선언된 함수의 코드는 메모리에 저장되고 함수 호출문에는 코드의 메모리 주소값이 저장된다. 여기서 프로그램을 실행하면 함수 호출문에서 함수 코드가 저장된 주소로 이동한 후 함수를 실행하고 원래 위치로 돌아오는데 이때 함수 호출문에서 함수 코드가 저장된 주소로 연결하는 과정을 바인딩이라고 한다. 🏃🏻 동적 바인딩 의 경우, 컴파일 과정에서는 부모 클래스의 함수를 참조하지만 런타임 과정에서 실제로는 자식 클래스의 함수와 바인딩된다. 왜? 의 경우, 컴파일 과정에서 정의된 타입 형식을 참조해서 어떤 클래스와 메소드를 참조할지 결정하는데(=super class의 메소드) 의 경우에는 런타임에 실제 객체를 찾으니까 오버라이드된 자식 클래스의 메소드의 결과가 출력된다. → 다형성(Polymorphism)을 잘 보여준다 (컴파일러는 static method에 대해 실제 객체를 찾는 작업을 하지 않음) 대부분의 객체 지향 언어가 을 지원한다물론 예외도 있음 필요…

February 16, 2022
CS
객체 지향 프로그래밍, OOP의 개념과 특징

블로그 이전했습니다! https://computasha.com/basic/term/객체+지향+프로그래밍%2C+OOP의+개념과+특징 프로그래밍 패러다임과 함수형 프로그래밍에 관해서는 여기를 참고해주세요! OOP란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, ‘객체’들의 상호작용(메시지 주고받기, 데이터 처리 등)으로 프로그램 로직을 구성하는 프로그래밍 패러다임이다. 💡 프로그래밍 패러다임 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. OOP의 특징 1. 캡슐화, Encapsulation 💊 한 객체가 특정한 하나의 목적을 위해 필요한 데이터…

February 12, 2022
CS
Apple Developer Academy @ POSTECH 지원 후기

📃 애플 개발자 아카데미 지원 후기 포스텍- Apple 개발자 아카데미 (Apple Developer Academy @ POSTECH)에 지원했다. 작년 5월부터 한국에도 생긴다고 소식이 들려오더니 결국 포스텍에 들어섰다. iOS를 부트캠프를 통해 더 배우고 싶어서 야곰님의 커리어 스타트 캠프, 코드스쿼드 등을 찾아보고 있었는데.. 무려 애플이 만드는 부트캠프라니..! 이건 무조건 도전해야겠다 싶었다. (심지어 다른 곳은 내가 돈을 내고 수업을 듣는데, 여기는 월 100만원을 지원해준다… 갓 애플) 👉 2022년 선발 일정 2022년 처음 열리는 한국 애플 개발자 아카데미는 2022년 3월 1일 기준 이면 모두 지원 가능하다. 서류는 2021년 12월 31일까지 접수 가능했고, 12월 한달동안 5번 정도 인포 세션을 가지면서 아카데미에 대한 정보를 얻을 수 있었다. (초반 인포 세션에서 말씀해주신 내용과 후반의 내용이 달라지는 걸로 봐서는 계속해서 커리큘럼을 수정하고 발전해나가…

February 04, 2022
etc.
클라우드 컴퓨팅의 이점

💰 1. 자본 비용을 가변 비용으로 대체 가능 자본 비용은 자산, 산업용 건물 또는 장비와 같은 실제 자산을 획득, 업그레이드 및 유지하기 위해 회사에서 사용하는 돈을 의미한다 → 이 경우 사용 여부와 관계없이 계속해서 비용이 든다 반면, 가변 비용은 클라우드 컴퓨팅을 사용하여 쉽게 변경하거나 피할 수 있는 비용을 의미한다 사용 방법이 결정되기도 전에 데이터 센터와 서버에 대규모로 투자를 하는 대신, 리소스를 사용할 때만, 그리고 사용한 만큼의 리소스에 대해서만 비용 지불 → 기술 비용 절감 또한 몇 주 또는 며칠이 아니라 몇 분 만에 온디맨드로 새로운 애플리케이션에 맞추어 필요한 만큼의 공간을 구축할 수 있다 → 이로 인해 유지 관리 부담이 적어지므로 IT 요구 사항과 비즈니스 요구 사항에 더 집중할 수 있음 👨‍👩‍👧‍👧 2. 규모의 경제로 얻어지는 혜택 수많은 고객의 사용량이 클라우드에 누적되므로 AWS와 같은 공급자는 더 높은 규모의 경제를 달성할 수 있으며 따라서 사용량에 따라 …

January 30, 2022
Cloud
프로그래밍 패러다임과 함수형 프로그래밍

블로그 이전했습니다! https://computasha.com/basic/term/프로그래밍+패러다임%2C+함수형+프로그래밍 💫 프로그래밍 패러다임 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 명령형 프로그래밍 : 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식 절차지향 프로그래밍 : 수행되어야 할 연속적인 계산 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#) 선언형 프로그래밍 : 어떤 방법으로 해야 하는지(How)를 나타내기보다 무엇(What)과 같은지를 설명하는 방식 함수형 프로그래밍 : 순수 함수를 조합하고 소프트웨어를 만드는 방식 (클로저…

January 29, 2022
CS
220125 AWS: 신입 개발자를 위한 팁

👨🏻‍🏫 오늘 세미나는 AUSG 5기 참여자 배진수님, 김민태님, 황성찬님, 우수연님이 진행해주셨습니다. 기억에 남는 이야기 내 행동, 경험에 대해 5F 회고가 필요하다. Fact (사실) Feeling (느낌) Finding (교훈) Future action (향후 행동) Feedback (피드백) 그중에서도 피드백이 가장 중요하다고 말씀하셨다. → 매번 느끼지만 단순히 경험만으로 쌓이는 경험치는 많지 않다. 경험을 통해 교훈을 얻고 과정,결과를 피드백하면서 많이 성장하는 것 같다. 내가 잘하고 있는지 체크하기 위한 항목 테스트코드 코드리뷰 발표 블로그 커뮤니티 참여 → 나는 테스트코드와 특히 코드리뷰에서 부족한 점이 많다. 혼자서 하는 코드리뷰보다 다양한 부트캠프나 커뮤니티에 참여해서 다른 사람들과 코드 리뷰를 주고받고 싶다. 소프트스킬 : 커뮤니케이션 능력, 유연성, 팀워크, 문제해결능력, 시간관리 최고의 복지는 최고의 동료다. 자율과 책임을 가지고 성숙한 조직 문화 만들기 → 해…

January 25, 2022
🧑🏻‍💻
MVC 디자인 패턴

디자인 패턴은 특정한 상황에서 반복적으로 일어나는 일반적인 문제를 해결하기 위한 일종의 템플릿이다. 디자인 패턴을 잘 활용하면, 앱의 코드를 모듈화할 수 있고 버그 수정과 변경이 더 쉬워진다. 그중에서도 오늘 살펴볼 디자인 패턴은 MVC 패턴이다. (오리지널 MVC 패턴이 아닌 애플이 발표한 Cocoa MVC 패턴..! = 요즘 말하는 MVC 패턴) 🤳🏻 Model-View-Controller (MVC) 현재 Cocoa Touch 개발에서 가장 많이 사용되는 디자인 패턴이다. 이 디자인 패턴은 앱 내의 모든 오브젝트가 Model, View, Controller 중 하나의 역할을 맡아 수행하도록 한다. 그리고 이렇게 같은 역할을 하는 오브젝트들을 모아서 레이어라고 부른다. 👪 MVC 레이어의 역할과 관계 우선 각 레이어의 역할을 살펴보자 다음은 레이어 간의 상호 작용을 보여주는 다이어그램이다. MVC 디자인 패턴은 코드를 Model, View, Controller 중 하나로 구분한…

January 24, 2022
iOS
CPU 코어와 스레드

블로그 이전했습니다! https://computasha.com/basic/term/CPU+코어와+스레드 CPU 코어 CPU = centeral Processing Unit, 중앙 처리 장치 코어 = 물리적인 CPU의 프로세서를 의미 CPU 코어의 역사 싱글 코어 👤 = 한 명이 컴퓨터에서 일한다 = 한 번에 하나씩만 처리 가능 → 한 번에 여러 개 처리하기 위해서는 현재 실행 중인 프로그램 간 전환을 빨리해서 사용자로 하여금 동시에 실행하고 있는 것처럼 느끼게 함 그전에도 멀티코어의 개념은 등장했는데 개발하지 않은 이유 1980년쯤에는 싱글 코어로도 원하는 연산 수행 충분히 가능했음 여태 만들어진 코드가 싱글 코어에서 최적의 성능을 보임 (이전 프로그램은 하나의 일을 분배해서 나누는데 시간이 더 오래걸렸음) 좀 느리다 싶으면 CPU의 클럭을 올려서(=채찍질을 더 열심히 해서) 더 빨리 계산하게 만들면 감당 가능했음 → 근데 이게 2004년도쯤 오니까 CPU가 과부화 돼서 뜨거워지기…

January 22, 2022
CS
익숙함을 이용한 디자인, 제이콥의 법칙

제이콥의 법칙(Jakob’s Law) 💁🏻 개요 사용자는 새로운 사이트나 앱을 접했을 때, 이미 알고 있는 기존의 UX와 동일한 방식을 기대한다. 이 사실을 간과하고 디자인하면 사용자의 혼란과 불만을 초래할 수 있다. ☝️ 요점 사용자는 다른 제품들도 자신에게 익숙한 방식으로 작동하길 원한다. 익숙한 방식을 활용함으로써(기존 멘탈 모델을 활용하면) 사용자는 처음 접하는 제품이나 서비스더라도 사용법을 금세 깨우칠 수 있고, 이는 곧 뛰어난 사용자 경험으로 연결된다. 제품이나 서비스의 변화를 꾀할 때는, 사용자에게 익숙한 모델을 특정 기간 동안 사용할 수 있게 만들어서 부조화를 최소화한다. 💡 멘탈 모델(Mental model) 사물이 실제로 어떤 방식으로 작동할 것이라고 생각하는 누군가의 사고 과정에 대한 설명 좋은 사용자 경험 -> 디자이너의 멘탈 모델 = 사용자의 멘탈 모델 제이콥의 법칙(Jakob’s Law) 💁🏻 개요 ☝️ 요점

January 20, 2022
UX/UI
클라우드 컴퓨팅의 배포 모델 : Public, Private, Hybrid

💥 클라우드 컴퓨팅 배포 모델 각 모델은 애플리케이션을 배포할 수 있는 클라우드 환경을 나타낸다 ☁️ 퍼블릭 클라우드 (Public Cloud) 클라우드 서비스 제공 업체가 인프라를 소유하고 있고, 인터넷을 통해 일반적인 기업이나 개인에게 클라우드 인프라 서비스를 제공한다 퍼블릭 클라우드 기반 애플리케이션은 모든 구성 요소가 클라우드에 배포된다 → 애플리케이션의 모든 부분이 클라우드에서 실행된다 -> 사용자는 가상화된 컴퓨팅, 리소스에 서비스로 바로 액세스한다 다만 모두에게 개방된 서비스다 보니, 온프레미스 인프라에 비해 보안이 취약할 수 있다 퍼블릭 클라우드의 이점 : 💰비용, 💺 편리성 최소 투자 : 사용량에 따라 요금이 청구되기 때문에 선불 수수료가 없어서 리소스가 즉시 필요한 기업에 적합함 설치 비용 없음 : 클라우드 서비스 제공업체가 전체 인프라를 제공하기 때문에 하드웨어를 설치할 필요가 없음 유지 관리가 필요 없음 : 유지보수 작업은 클라우드 서비스 제공자가 수행함 인…

January 19, 2022
Cloud
Github 블로그에 댓글 기능 추가하기 - Utterances

블로그 이전했습니다! https://computasha.com/tools/etc./Github+블로그에+댓글+기능+추가하기+-+Utterances 무료에다가 테마도 다양하고 광고도 없어서 선택했다. (Disqus 라는 것도 있던데 그건 부분 유료라서 보류…) 💡 동작 원리 Utterances가 로드되면, GitHub  issue search API 를 사용하여 ,  또는 을 기준으로 페이지와 관련된 이슈를 찾는다. 페이지와 일치하는 이슈가 없으면  utterances-bot 이 누군가 댓글을 달 때 자동으로 이슈를 만든다 ~ 💬 Utterances 사용하기 https://utteranc.es 에서 필요한 정보 4가지 정도만 입력하면 Utterances를 추가할 수 있는 코드를 만들어준다. 하나하나 과정을 살펴보자. 1. Repository 만들기 우선 https://github.com 에서 Utterances 와 연결할 repo(=Repository)가 필요하다. 모두가 이슈와 댓…

January 13, 2022
etc.
클라우드 컴퓨팅의 서비스 모델 : IaaS, PaaS, SaaS

💥 IaaS, PaaS, SaaS 각 모델은 클라우드 컴퓨팅 스택의 각기 다른 부분에 해당한다. 이를 통해 IT 리소스에 대한 다양한 수준의 제어를 제공하고 있다. 1. IaaS(서비스형 인프라) = Infrastructure as a Service 일반적으로 네트워크 기능과 서버, 가상 또는 전용 컴퓨터에 대한 액세스를 제공하고 스토리지 공간도 제공한다. IT 리소스에 대한 최고 수준의 유연성과 제어 기능을 제공한다. 현재 많은 IT 부서 및 개발자에게 익숙한 기존 구현 방식(=온프레미스 방식)과 가장 유사하다. 대표적인 예시로 AWS의 EC2(Amazon Elastic Compute Cloud)가 있다. 2. PaaS(서비스형 플랫폼) = Platform as a Service PaaS를 사용하면 기반 인프라를 관리할 필요가 없다. (하드웨어 및 운영체제와 관련된) 자동화 기능을 통해 관리되므로 프로비저닝 작업이 아니라 애플리케이션을 배포하고 관리하는 데 집중할 수 있다. …

January 12, 2022
Cloud
클라우드 컴퓨팅에 대해 알아보자

☁️ 정의 컴퓨팅 파워, 데이터베이스, 스토리지, 애플리케이션 및 기타 IT 리소스를 온디맨드로 인터넷을 통해 제공하고 사용한 만큼만 비용을 지불하는 것 → 서비스 공급자(ex. AWS)가 제공하는 리소스를 사용자가 필요한 만큼 가져와서 원하는 솔루션을 만들 수 있다 → 이런 리소스는 전 세계에 위치한 데이터 센터에 구축된 서버 컴퓨터에서 실행된다 💡 온디맨드(On-Demand) 요구 사항에 따라 즉시 제공/공급하는 방식, 공급이 아닌 수요가 모든 것을 결정하는 시스템 및 전략을 총칭하는 용어 🤷🏻 기존 컴퓨팅 VS 클라우드 컴퓨팅 클라우드 컴퓨팅을 사용하면 인프라를 소프트웨어로 생각하고 사용할 수 있다 🏢 기존 컴퓨팅 = 하드웨어 솔루션, = 온프레미스 방식 비용, 시간이 매우 많이 소요된다 기존 컴퓨팅 방식은 물리적이므로 공간, 하드웨어 자체에 대한 투자 등등 상당한 규모의 사전 투자가 필요하다. 유지·관리도 필수. 유지·관리를 위해서는 공간, 직원, 물리적 보안, 계획, 자…

January 11, 2022
Cloud
다시 시작하는 Github 블로그

나는 배운 내용을 나만의 언어로 기록하고 새기는 과정을 거쳐야 비로소 내 지식이 된다고 믿는 ‘기록광’ 이다. 그리고 그 과정에서 끊임없이 고민하고, 해결하고, 성장하는 걸 즐긴다. 그렇다고 해서 종이 세상에만 갇혀 있는 건 아니고, 종이에 빼곡히 새겨진 지식만큼이나 새로운 경험, 커뮤니케이션을 좋아한다! 그리고 이제 Github 블로그를 매개체로 종이에 쌓인 지식을 다른 사람들과 공유하고 또 배워가고자 한다. 항상 겸손한 배움의 자세를 가지고, 제가 가진 지식을 사람들과 공유하며, 어제보다 오늘 더 나은 개발자로 성장하겠습니다! 항상 겸손한 배움의 자세를 가지고, 제가 가진 지식을 사람들과 공유하며, 어제보다 오늘 더 나은 개발자로 성장하겠습니다!

January 09, 2022
etc.