본문 바로가기

전체 글

(139)
iOS Study : 4주차 - SwiftUI 다크모드를 지원하는 방법 아래와 같이 ColorSchema를 켜서 다크 모드를 킬 수 있다. 아래처럼 다크모드 상태에서의 색 지정도 가능하다. import SwiftUI struct ContentView: View { var body: some View { Text("Gang") .background(Color("GangColor")) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } 컴포넌트를 구분하는 방법 Divider()를 사용하여 구분선을 사용 가능하고 색상, 크기 조정도 가능하다. import SwiftUI struct ContentView: View { var b..
iOS Study : 4주차 - 사용자 정의 타입, 클로저 사용자 정의 타입 구조체 스위프트의 대부분의 타입은 구조체로 이루어져 있고, 구조체는 값 타입이다. 타입 이름은 대문자 카멜 케이스를 사용하여 정의한다. struct 이름 { /* 구현부 */ } 프로퍼티 및 메서드 구현 프로퍼티 - 구조체 안에 들어가는 인스턴스 변수 메서드 - 구조체 안에 있는 함수 struct Sample { // 가변 프로퍼티 - 값 변경 가능 var mutableProperty: Int = 100 // 불변 프로퍼티 - 값 변경 불가능 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method"..
Ep16 : 모놀리식 아키텍처 / 마이크로 서비스 아키텍처 모놀리식 아키텍처 모놀리식 아키텍처는 소프트웨어 프로그램의 전통적인 모델로, 자체 포함 방식이며 다른 어플리케이션과 독립적인 통합된 유닛으로 만들어 진다. 모놀리식 아키텍처는 모든 비즈니스 관련 사항을 함께 결합하는 하나의 코드 베이스를 갖추 대규모의 단일 컴퓨팅 네트워크이다. 즉, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 상태이다. 장점 애플리케이션이 하나의 코드 베이스에 기반을 두어 단순하기 때문에 개발 속도가 빠르다. 실행 파일 또는 디렉토리가 하나여서 배포가 쉽다. 하나의 코드 베이스로 애플리케이션을 구축하여 개발이 더 쉽다. 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있다. 하나의 중앙 집중식 장치이므로 분산된 어플리케이션..
Ep16 : 비즈니스 로직 비즈니스 로직 비즈니스 로직이란 프로그램의 핵심 로직을 뜻한다. 즉, 어떻게 데이터가 생성되고 저장되고 수정되는지를 정의한 것이다. 예를 들어서 인터넷으로 물건을 구매하기 전에 장바구니에 담을 때마다 결제 금액이 변경되는 것을 볼 수 있는데 이렇게 물건이 추가되면 금액이 바뀌는것이 비즈니스 로직이다. 우리가 알고 있는 CRUD를 구현하다보면 특정 상황에 맞게 더 복잡하게 구현을 할 때가 있는데 이것도 비즈니스 로직이라고 표현할 수 있다. 여태까지 진행했던 flastagram에서 비즈니스 로직은 resource 부분이라고 할 수 있다. 아래 코드를 살펴보자 resource/post.py에 있는 게시글 수정을 구현하는 코드이다. 주석을 보면 게시글을 수정하기 위해서 데이터를 검증하고 게시글의 존재를 체크, ..
Java Study : 4주차 - 백준 문제풀이 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net package baekjoon; import java.util.Scanner; import java.util.Arrays; public class B10818 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int[] Array ..
Java Study : 4주차 정리 - 배열과 ArrayList, 상속과 다형성 배열 배열을 사용하면 자료형이 같은 자료 여러개를 한 번에 관리할 수 있다. 배열 선언과 초기화 배열 선언 배열을 사용하려면 선언을 먼저 해야 하는데 변수와 마찬가지로 자료형을 함께 선언한다. 배열을 이루는 각각의 자료를 배열 요소라 하며, 배열 요소는 자료형이 모두 같다. 자료형[] 배열 이름 = new 자료형[개수]; int[] studentIDs = new int[10]; //int형 요소가 10개인 배열 선언 배열 초기화하기 자바에서 배열을 선언하면 선언과 동시에 특정 값으로 초기화할 수도 있다. 배열이 초기화 요소의 개수만큼 생성 되므로 [ ] 안의 개수는 생략한다. int[] studentIDs = new int[] {101, 102, 103}; //개수는 생략 new int[]도 생략 가능하..
CS Study 4주차 : Blocking/Non-Blocking Blocking/Non-Blocking 블로킹과 논 블로킹은 처리되어야 하는 작업이 전체적인 작업 흐름을 막는지에 대한 관점이다. Blocking 블로킹(Blocking)은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 자신의 작업을 멈추고 해당 작업을 기다렸다가 다시 자신의 작업을 시작한다. 위 과정을 정리하면 아래와 같다. 유저가 커널에게 read 작업을 요청 커널은 데이터가 입력될 때까지 무한정 대기한다(Blocking) -> 리소스가 일을 하지 않고 낭비된다. 데이터가 입력되면 커널이 유저에게 결과를 전달한다. Non-Blocking 논 블로킹(Non-Blocking)은 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것을 의미한다. 위 과정을 정리하면 아래와 같다. 유저가 커널에게 re..
iOS Study : 3주차 - SwiftUI 컴포넌트 사이의 공간을 만들어 주는 Spacer struct ContentView: View { var body: some View { VStack { Image(systemName: "bolt") .resizable() .frame(width: 60) .aspectRatio(contentMode: .fit) Spacer() //컴포넌트 사이에 공간을 만들어 줌 HStack { Image(systemName:"heart") Spacer() Text("Bolt!") } .padding(.horizontal, 80) Spacer() Button { print("Bang!") } label: { Text("Hit!") } } } } 색상을 그려주는 Color struct ContentView: View { v..