개발을 시작할 때 git을 꼭 같이 시작했으면 하는 이유

이미지
개발을 시작하면 반드시 접하게되는 단어들이 있습니다. 그 중 하나는 git 입니다. 그렇다면 git을 왜 써야하고, 어느정도까지 써야하는 걸까요? 그에 대한 생각을 간단히 적어보겠습니다. git은 왜 써야 할까요? git은 크게 2가지의 이유로 사용한다고 생각합니다. 버젼관리 협업도구 그래서 우리는 우리의 코드가 잘 못 되었거나 과거의 코드로 되돌릴 때, git을 씁니다. 예를 들면, 내가 작성했던 코드가 문제가 생겼을 때 과거로 돌아갈 수 있다면 얼마나 좋을까요? 하나하나 되돌리기를 하는 것이 아니라 특정의 시점으로 돌아갈 수 있다면 나의 실수를 만회하기에 좋겠죠? 여러분의 실수를 되돌리기 위해 git의 사용방법을 익혀두세요! 다른 개발자와 협업을 해야할 때 협업의 도구로서 git을 사용합니다. 개발을 혼자하는 개발자도 있지만 많은 개발자들이 하나의 프로덕트를 만들기 위해 협업을 하고 있습니다. 서로 일할 범위를 나누고 따로 작업한 다음에 하나로 합친다면, 일을 효율적으로 할 수 있고, 결과물도 더 빠르게 만들 수 있겠죠? 생산성을 높이기 위해 git을 사용하세요! git 어느정도까지 써야하는 걸까요? 왜 써야하는지 알았으니 그러면 얼마나 써야하는지 이야기 해봅시다. 먼저 버전관리를 하기 위해서라면, commit을 꼼꼼히 하고 해당 커밋 때로 돌아가는 방법을 알면 좋을 것 입니다. 아니면 다른 사람이 작업한 내용 중 일부 혹은 내가 과거에 작업한 내용을 살리기 위한 cherry-pick 등과 같은 기능들을 알면 유용하겠죠? 다른 사람들과 협업을 하려면, git-flow는 이헤하고 사용해야 합니다. 나 혼자 git에 commit, push, pull을 한다고 git을 사용할 줄 안다고 생각한다면, 실제 협업을 하면서 많은 어려움이 있을 것 입니다. 어느 브랜치에서 개발을 해야하고, 어느 브랜치로 merge를 해줘야 하는지 알고 있어야 합니다. 더 나은 개발을 위해서 개발자로 시작하면서 git을 왜 해야하는지, 얼마나 해야하는지는 잘 공감

Leeo Con

이미지
  Welcome to the LeeoCon. world! Just click for Drag & Drop the LeeoCon You can use several LeeoCons

Lullaby Recipe

이미지
  How to use Lullaby Recipe Type your username. 2.  Go to Kitchen tab to create your new recipe. 3.  Select the sound you like and tab ‘Blend’ button. 4.  Name and save your own mix. 5. Listen to your own recipe. If needed, control the volume for each sound.

SwiftUI에서 뷰를 떼어내는 방법

이미지
SwiftUI에서 UI를 그리다 보면, 뷰를 따로 떼어내서 작업을 해야하는 경우들이 발생합니다. 글로 설명해서는 상상하기 어려우니 아래 코드를 보면서 이야기 해보겠습니다. struct ContentView : View { var body : some View { VStack { VStack { Text ( "리이오" ) Rectangle () .fill (Color.red) .frame ( height : 30 ) Text ( "올리비아" ) } .background (.green) Button { print ( "done" ) } label : { Text ( "Button" ) } } } } 우리의 코드는 VStack 안에 또다른 VStack과 Button이 있습니다. 저 사용자 이름이 들어있는 VStack이 복잡해질 경우 따로 떼어내서 작업을 하는 경우가 많습니다. 일단은 body가 길어지면 보기 힘들기 때문이죠. 이 때 사용하는 방법에는 여러가지가 있지만 오늘은 2개를 비교해 보겠습니다. 새로운 Struct를 만든다 새로운 뷰를 그리기 위해서 새로운 struct를 만들어서 그리는 방법이 있습니다. 이전 코드보다 보기가 한결 쉬워졌습니다. 또 ProfileView 부분이 늘어나도 ContentView는 늘어나지 않아서 가독성도 좋습니다. struct ContentView : View { var body : some View { VStack {

Self Check In 앱 설명 글

이미지
이 글은 Self Check In 앱의 사용 법을 설명 해 놓은 글 입니다. 1. You can scan QRCode by camera 2. When you scan valid QRCode, You can check data at calendar 3. You can make profile by Sign In with Apple 4. You can create QRCode by create group 5. Also you can join group 6. Enter group code  

[인터뷰질문 020] raw strings 이란 무엇인가요?

이미지
관련주제 : Swift  난이도 : 하 raw strings raw strings 는 swift5에 추가된 자연스러운 String을 쓰는데 도움을 주는 기능입니다. 지연스러운 String은 어떤 걸까요? 아래의 문자열을 비교해 보겠습니다! let naturalString = # "" Hello world! "" # let unNaturalString = "\"Hello world!\"" print(naturalString) // "Hello world!" print(unNaturalString) // "Hello world!" 익숙함에 따라 어떤 문자열이 더 자연스러운지가 다를 수 있을텐데요, 설명을 드리자면 # 기호 사이에 "" 이렇게 문자열을 나타내주는 기호가 있다면, 그 사이에 있는 어떤 특수 문자도 자연스럽게 처리해줍니다. 기존에는 \ 기호를 특수 문자 앞에 붙여서 이 기호가 특수 기호인지 나타낼 필요가 없습니다. 말 그대로 자연스러운 문자열을 만들 수 있는 것입니다. 만약 문장 안에 # 기호를 사용해야 한다면, ## 기호를 문장의 시작과 끝에 붙여주면 됩니다. 활용법 기존에 문자열 사이에 변수를 넣는 방법과 다르니 유의 해주세요! let name = "Leeo" let normalString = "Hello, \(name) !" let rawString = # "Hello, \#(name)!" # let wrongRawString = # "Hello, \(name) !" # print (normalString) // Hello, Leeo! print (rawString) // Hello, Leeo! print (wrongRawString) // Hello, \(name)! 메리트 특정 상황에서 사용했을 때, 메

[인터뷰질문 019] property observers란 무엇인가요?

이미지
프로퍼티와 옵져버 swift를 쓰다보면, 다양한 프로퍼티들이 있습니다. 쉽게 변수라고 알고있죠. 그리고 옵져버는 관찰자 혹은 감시자 정도로 번역할 수 있는데요. property observers 를 직역해보면 변수 관찰자 정도가 될테고, 그 내용은 프로퍼티의 수정사항을 탐지하는 것 입니다. 즉 프로퍼티(저장 프로퍼티)에 변경사항이 생기면, 옵져버가 알려주고, 특정 코드블럭을 실행할 수 있습니다. 글로만 설명하면 어려우니 코드를 통해 알아보도록 하겠습니다. class PointCounter { var totalPoint: Int = 0 { willSet (newTotalPoint) { print ( "점수의 합을 \(newTotalPoint) 점으로 변경할 예정입니다." ) } didSet (oldTotalPoint) { print ( " \(totalPoint - oldTotalPoint) 점이 변경되었습니다." ) } } } let pointCounter = PointCounter () // 점수의 합을 200점으로 변경할 예정입니다. pointCounter.totalPoint = 200 // 200점이 변경되었습니다. // 점수의 합을 300로 변경할 예정입니다. pointCounter.totalPoint = 300 // 100점이 변경되었습니다. // 점수의 합을 200점으로 변경할 예정입니다. pointCounter.totalPoint = 200 // -100점이 변경되었습니다. willSet didSet 이름부터 매우 직관적이죠? 이름에서 부터 알 수 있듯이 willSet은 프로퍼티가 변경되기 바로 직전에 호출 됩니다. 그리고 예상한 대로 didSet은 프로퍼티가 변경된 직후에 호출 됩니다. 그러니 우리가 pointCounter.totalPoint 를 500으