Xcode의 빌드 과정GCC를 통해 C언어를 빌드 하듯, Swift 언어는 Xcode를 통해 빌드가 됩니다. 따라서 이번에는 Xcode의 빌드 과정에 대해 학습해보았습니다. Swift는 C언어 기반이기 때문에 컴파일 과정이 매우 비슷합니다. 전처리기 (Preprocessing)전처리기는 소스 코드를 컴파일러가 읽을 수 있는 형식으로 전환해줍니다. Swift에는 전처리기가 없기 때문에 매크로 등을 정의할 수 없습니다. 하지만 전처리문을 부분적으로라도 사용할 수 있도록 [Build Settings] → ‘Active Compilation Coditions’를 제공해줍니다. Swift에서는 release와 debug를 구분하거나, OS를 구분할 때에 전처리문을 사용합니다.#if DEBUGprint("디버그"..
컴파일컴파일 과정이란 사람이 작성하는 High Level Programming Language로 구성된 소스 코드를 기계가 이해할 수 있는 Low Level Programming Language로 바꾸는 과정을 의미합니다. 그 중에서 컴파일러가 어떻게 동작하는지 간단하게 정리해보았습니다. 컴파일러 소스 코드가 기계어로 변환되기 위해선 Front End → Middle End(IR) → Back End의 변환을 거쳐야 합니다. Front EndFront End는 C나 Java 등의 언어의 문법을 해석하는 역할을 합니다. Front End는 다음과 같은 순서로 진행됩니다.Scanner가 소스 코드를 받습니다.Scanner는 소스 코드를 의미가 있는 단어로 쪼개어 단어들을 토큰으로 만드는 역할을 합니다.숫자,..
컴파일컴파일 과정이란 사람이 작성하는 High Level Programming Language로 구성된 소스 코드를 기계가 이해할 수 있는 Low Level Programming Language로 바꾸는 과정을 의미합니다. 흔히 우리가 프로그래밍을 하고 실행 코드를 실행하는데, 실행이 되기 위해선 컴퓨터는 해당 코드를 ‘컴파일’하게 되는 것입니다. 그 결과로 우리가 원하는 결과를 얻을 수 있는 것입니다. GCC를 통해 C언어가 컴파일되는 과정을 알아보겠습니다. 컴파일 4단계컴파일 과정은 전처리(Preprocessing) → 컴파일(Compiler) → 어셈블리(Assembly) → 링커(Linker) 순서로 이루어집니다. 전처리기(Preprocessor)전처리 과정은 소스 코드 파일(.c)을 .i 파일로..
학교에서 진행한 프로젝트에서 프론트엔드 개발과 배포를 맡아 진행하였고, 도커를 기반으로 온프레미스 환경에 서버를 배포하는 작업을 하였습니다.제가 해당 프로젝트를 진행하면서 직면했던 가장 큰 문제점은 DB Connection Refused 에러였습니다. 문제 상황개발이 다 완료된 후 개발 서버에 배포를 진행하였는데, DB와 백엔드의 연동이 되지 않아 발생한 문제였습니다. 기존에 다른 플랫폼이 설정한 레퍼런스를 기반으로 실행해보았지만, 백엔드와 DB가 연동이 되지 않았습니다. 해결 방법우선 다른 플랫폼의 배포 과정을 확인해보니, 다른 플랫폼 같은 경우에는 개발 서버에 DB 컨테이너가 이미 있다는 가정하에 백엔드 컨테이너를 실행하고 있었다는 점이 저희 플랫폼과 다른점이었습니다. 따라서 해당 레퍼런스를 기준으로..
navigationItem.title과 관련하여 신기한 점을 발견하였습니다.// 1번navigationItem.title = "안녕하세요"// 2번navigationItem.title = "\(getNicknameFromUserDefaults() ?? "대장")님의 다마고치"// 3번let title = "\(getNicknameFromUserDefaults() ?? "대장")님의 다마고치"navigationItem.title = title1번과 같이 문자열 보간법이 없이 정의하면 해당 title이 backBarButtonItem이 나타나는데, 2,3번과 같이 문자열 보간법으로 title을 지정하면 ‘Back’버튼이 나오는 현상을 발견하였습니다. navigationItem.backBarButtonIte..
개발을 진행하면서 (개인적으로) 매우 흥미로운 것을 발견하였습니다. @IBAction func textFieldTExtChanged(_ sender: UITextField) { print("sender -> ", sender.text) // 만약 숫자만 포함 if isNumber(sender.text) { // Q. 왜 옵셔널인데 sender.text만 해도 옵셔널이 해제되는거지? // 문자열 보간법으로 작성하면 Optional로 나타남!! resultLabel.text = "\\(sender.text)" // 하지만 text에 바로 할당하면..
스토리보드를 학습하는 과정에서 스토리보드는 어떻게 실행되는 것인지에 대해 학습해보고자 합니다. 스토리보드에 대해 알기 위해선 XIB와 NIB에 대한 이해가 필요합니다. XIB란 Xcode Interface Builder의 약자로, 화면을 구성할 때 사용되는 XML 형식의 파일입니다. XML 파일이기 때문에 바이너리보단 사람이 이해하기 쉽고, 수정된 부분을 확인할 수 있어 소스코드로 관리할 수 있습니다. 직접 수정을 하기 위해선 XML 문법에 맞춰서 수정해야 하지만, Xcode에서 Interface Builder(스토리보드)를 제공하여 GUI 형태로 수정할 수 있도록 해줍니다. NIB는 Nextstep Interface Builder의 약자로, 화면을 구성하는 클래스들을 바이너리 형태의 압축 파일로 저장하..
[Gold V] 1, 2, 3 더하기 4 - 15989 문제 링크 성능 요약 메모리: 69100 KB, 시간: 12 ms 분류 다이나믹 프로그래밍 제출 일자 2024년 2월 7일 20:38:29 문제 설명 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 1+3 (3+1) 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 10,00..