<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Sonny Cucumber</title>
    <link>https://sonny6786.tistory.com/</link>
    <description>Hello I'm korean Cucumber.
I Like Kimbab, and you?</description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 17:08:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Sonny Cucumber</managingEditor>
    <image>
      <title>Sonny Cucumber</title>
      <url>https://tistory1.daumcdn.net/tistory/4924061/attach/5be7d196515c438092611f8cbf1dc083</url>
      <link>https://sonny6786.tistory.com</link>
    </image>
    <item>
      <title>Swift) Error Handling(오류 처리)를 알아보자</title>
      <link>https://sonny6786.tistory.com/66</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qwFJb/btsEdSJzVIY/msokheXpUIKSBmyxaZ59O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qwFJb/btsEdSJzVIY/msokheXpUIKSBmyxaZ59O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qwFJb/btsEdSJzVIY/msokheXpUIKSBmyxaZ59O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqwFJb%2FbtsEdSJzVIY%2FmsokheXpUIKSBmyxaZ59O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;안녕하세요 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 시작해보겠습니다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;개발에 있어서, 오류 처리는 &lt;u&gt;아주 아주 중요한 부분임!!&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;안정성을 위해서도 사용자 경험에 있어서도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;중요한 부분이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예상치 못한 오류를 막기 위해 꼭 알아야함!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같은 PrintError라는 열거형을 예로 들면&lt;/p&gt;
&lt;pre id=&quot;code_1706675667740&quot; class=&quot;crystal&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;swift&quot;&gt;&lt;code&gt;enum PrinterError: Error {
    case outOfPaper
    case noToner
    case onFire
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래 코드의 메소드 send 안에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에러를 처리해주려면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에러가 발생할 가능성이 있는 메소드의 제목 옆에 throws를 써준 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오류가 발생하는 구간에 throw를 써주면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기서 throws 키워드는 오류를 던질 수 있음을 나타내고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;throw 키워드를 사용해서 오류를 던짐&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706687251594&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;func send(job: Int, toPrinter printerName: String) throws -&amp;gt; String {
    if printerName == &quot;Never Has Toner&quot; {
        throw PrinterError.noToner
    }
    return &quot;Job sent&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이외에도 에러를 다루는 방법은 몇가지가 더 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;do-catch 키워드로 에러를 처리할 수 있음&lt;/p&gt;
&lt;pre id=&quot;code_1706687311222&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;do {
    let printerResponse = try send(job: 1040, toPrinter: &quot;Bi Sheng&quot;)
    print(printerResponse)
} catch {
    print(error)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 do 블록 안에 오류가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;발생할 수 있는 코드를 작성하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에러가 발생할 시&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;catch 안의 중괄호로 보내&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오류를 처리한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;try 키워드는 에러가 발생할 수 있지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한번 트라이 해볼께 라는 의미이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 오류가 발생하면 catch 블록으로 전달된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에러가 특정하게 여러가지로 나뉜다 싶으면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;catch를 두번 이상 써주는 것도 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 개별적으로 오류를 처리하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;switch 키워드 문과 유사하다고 보면된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 예시&lt;/p&gt;
&lt;pre id=&quot;code_1706687555860&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;do {
    let printerResponse = try send(job: 1440, toPrinter: &quot;Gutenberg&quot;)
    print(printerResponse)
} catch PrinterError.onFire {
    print(&quot;I'll just put this over here, with the rest of the fire.&quot;)
} catch let printerError as PrinterError {
    print(&quot;Printer error: \(printerError).&quot;)
} catch {
    print(error)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이외에도 모든 코드가 실행된 후에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작동하게 하는 키워드가 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 defer 키워드다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 키워드 안에 있는 코드는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에러가 발생하는 것에 상관없이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작동하게 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706687842001&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var fridgeIsOpen = false
let fridgeContent = [&quot;milk&quot;, &quot;eggs&quot;, &quot;leftovers&quot;]

func fridgeContains(_ food: String) -&amp;gt; Bool {
    fridgeIsOpen = true
    defer {
        fridgeIsOpen = false
    }

    let result = fridgeContent.contains(food)
    return result
}
fridgeContains(&quot;banana&quot;)
print(fridgeIsOpen)

//false가 프린트 됨&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Swift</category>
      <category>SWIFT</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/66</guid>
      <comments>https://sonny6786.tistory.com/66#entry66comment</comments>
      <pubDate>Wed, 31 Jan 2024 17:08:58 +0900</pubDate>
    </item>
    <item>
      <title>Swift) Struct와 Class: mutating의 역할</title>
      <link>https://sonny6786.tistory.com/65</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C7MR7/btsEf3qb3Ab/8myCbDVlDIeqbfhjyL6lX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C7MR7/btsEf3qb3Ab/8myCbDVlDIeqbfhjyL6lX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C7MR7/btsEf3qb3Ab/8myCbDVlDIeqbfhjyL6lX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC7MR7%2FbtsEf3qb3Ab%2F8myCbDVlDIeqbfhjyL6lX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Swift에서는&amp;nbsp; struct와 class라는 중요한 두가지 타입이 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;mutating 키워드 사용에 중요한 영향을 미친다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;mutating:&amp;nbsp; 돌현변이, 변하게 만들다 &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뜻에서 부터 딱 감이 잡히지 않는가???&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;뭔가 안의 내용물을 바꿔준다는 느낌을 준다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 아래 코드를 살펴보자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706603400551&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SimpleClass: ExampleProtocol {
    var simpleDescription: String = &quot;A very simple class.&quot;
    var anotherProperty: Int = 69105
    func adjust() {
        simpleDescription += &quot;  Now 100% adjusted.&quot;
    }
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription

struct SimpleStructure: ExampleProtocol {
    var simpleDescription: String = &quot;A simple structure&quot;
    mutating func adjust() {
        simpleDescription += &quot; (adjusted)&quot;
    }
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;값 타입과 참조 타입&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;대체 왜 Struct에서만 쓰이는거냐???&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이건 class와 struct의 타입을 먼저 살펴봐야한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Swift에서 struct는 값 타입이고 class는 레퍼런스, 즉&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참조 타입이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 struct의 메서드는 해당 struct의&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;속성, 즉 프로퍼티 값들을 변경할 수가 없다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Mutating의 역할&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉 이 변경할 수 없는 값들을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바꿔주기 위해서 mutating을 써주는건데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마치 공장에서 똑같이 찍어내는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;공산품들 중 몇가지 수정해서 찍어내고 싶을 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;mutating을 써준다고 생각하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 class에선 참조 타입이기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;mutating이 필요가 없는거지&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주의사항!&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 class는 참조가 전달되기 때문에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;속성 값을 변경하면 참조가 가리키는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;객체가 변경되기 때문에 주의해야한다 !!&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/p&gt;</description>
      <category>Swift</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/65</guid>
      <comments>https://sonny6786.tistory.com/65#entry65comment</comments>
      <pubDate>Tue, 30 Jan 2024 17:38:47 +0900</pubDate>
    </item>
    <item>
      <title>Swift) Enum: RawValue와 Optional 값 처리</title>
      <link>https://sonny6786.tistory.com/64</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccZb5x/btsEdCNIT5X/J7blYoAtrEw5tdZjyfrrXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccZb5x/btsEdCNIT5X/J7blYoAtrEw5tdZjyfrrXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccZb5x/btsEdCNIT5X/J7blYoAtrEw5tdZjyfrrXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccZb5x%2FbtsEdCNIT5X%2FJ7blYoAtrEw5tdZjyfrrXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;The Swift Programming Language를 읽어보던 중&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;enum의 rawValue를 사용하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;왜 옵셔널&lt;/b&gt; 값으로 나오는지가&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;궁금해서 알아봤다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 해당 코드&lt;/p&gt;
&lt;pre id=&quot;code_1706580547889&quot; class=&quot;swift&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;swift&quot;&gt;&lt;code&gt;enum Rank: Int {
    case ace = 1
    case two, three, four, five, six, seven, eight, nine, ten
    case jack, queen, king

    func simpleDescription() -&amp;gt; String {
        switch self {
        case .ace:
            return &quot;ace&quot;
        case .jack:
            return &quot;jack&quot;
        case .queen:
            return &quot;queen&quot;
        case .king:
            return &quot;king&quot;
        default:
            return String(self.rawValue)
        }
    }
}

Print(Rank(rawValue: 3))&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 코드에서 프린트 문은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Optional(Rank.three)로 나오게 되는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;이는 rawValue가 enum의 케이스 중에서&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;일치하지 않는 경우가 있을 있기 때문에&lt;/u&gt;&lt;br /&gt;optional로 찍히게 된다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1706581697889&quot; class=&quot;gauss&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;swift&quot;&gt;&lt;code&gt;if let convertedRank = Rank(rawValue: 3) {
    let threeDescription = convertedRank.simpleDescription()
    print(threeDescription)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;따라서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;if let을 사용해서 Optional 인지 체크해주고&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Enum의 펑션인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;simpleDescription() 메소드를 써주면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;3이 프린트로 찍힌다&lt;/p&gt;</description>
      <category>Swift</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/64</guid>
      <comments>https://sonny6786.tistory.com/64#entry64comment</comments>
      <pubDate>Tue, 30 Jan 2024 11:28:34 +0900</pubDate>
    </item>
    <item>
      <title>XCode) 커스텀 단축키: 커서 바로 밑, 위에 라인 추가하기</title>
      <link>https://sonny6786.tistory.com/63</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 큐컴벌입니다! !&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단축키를 애용하는 저에게 iOS 개발을 하면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;굉장히 불편했던 점 중 하나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 Visual Studio 에 있는 단축키인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;⇧ + ↩ 를 누르면 작동하는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;커서 바로 밑 라인 추가!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;XCode만 쓰신 분들은 잘 모르실 수도 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 단축키 없이 이 작동을 하려면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;⌘ + -&amp;gt; 를 눌러 해당 라인 끝으로 간 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Enter 를 눌러야&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 커서 바로 밑에 라인을 추가할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;...?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 무슨 귀찮은 짓이람&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이 기능을 추가하고 싶었으나..!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;XCode의 설정, 키 바인딩에는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 기능이 없는 것ㅠㅠ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이 기능을 추가하기 위해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;키 바인딩을 커스텀 해줘야한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705810171607&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;open /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위 코드를 터미널에서 입력 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.14.07.png&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJvxue/btsDLsQ0Pa2/j2AWi0Nct9FXvmdO7xXIpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJvxue/btsDLsQ0Pa2/j2AWi0Nct9FXvmdO7xXIpK/img.png&quot; data-alt=&quot;IDETextKeyBindingSet.plist&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJvxue/btsDLsQ0Pa2/j2AWi0Nct9FXvmdO7xXIpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJvxue%2FbtsDLsQ0Pa2%2Fj2AWi0Nct9FXvmdO7xXIpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;239&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.14.07.png&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;IDETextKeyBindingSet.plist&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 파일의 내용을 변경해주면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 변경이 안될 시&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파일의 정보 가져오기 들어가서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;권한을&amp;nbsp;읽기&amp;nbsp;및&amp;nbsp;쓰기&amp;nbsp;로&amp;nbsp;변경해주기&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;-&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;코드를 열어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 코드들을 가장 아래쪽에 추가해주면 되는데&lt;/p&gt;
&lt;pre id=&quot;code_1705811447781&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;   &amp;lt;key&amp;gt;My Custom Actions&amp;lt;/key&amp;gt;
    &amp;lt;dict&amp;gt;
    &amp;lt;key&amp;gt;Move to next line&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;moveDown:, moveToEndOfLine:&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;Make new line below&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;moveToEndOfLine:, insertNewline:&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;Make new line above&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;moveUp:, moveToEndOfLine:, insertNewline:&amp;lt;/string&amp;gt;
    &amp;lt;/dict&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.15.32.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8ZVuG/btsDNIsvIYo/sQxFKUq7YklwonhklR7kzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8ZVuG/btsDNIsvIYo/sQxFKUq7YklwonhklR7kzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8ZVuG/btsDNIsvIYo/sQxFKUq7YklwonhklR7kzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8ZVuG%2FbtsDNIsvIYo%2FsQxFKUq7YklwonhklR7kzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;440&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.15.32.png&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수정, 저장 후 XCode를 재실행하여&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;설정(⌘ + ,)을 들어가준 후&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.38.16.png&quot; data-origin-width=&quot;1796&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U1XOP/btsDKLiZPDX/wFZnmJCXcou5desj4mjm20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U1XOP/btsDKLiZPDX/wFZnmJCXcou5desj4mjm20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U1XOP/btsDKLiZPDX/wFZnmJCXcou5desj4mjm20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU1XOP%2FbtsDKLiZPDX%2FwFZnmJCXcou5desj4mjm20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;314&quot; data-filename=&quot;스크린샷 2024-01-21 오후 1.38.16.png&quot; data-origin-width=&quot;1796&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;원하는 단축키로 지정해주면 끝!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저같은 경우 ⇧ + ↩&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;⇧ + ⌃ + ↩(enter)로 지정해줬습니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Jan-21-2024 13-43-10.gif&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZQvQq/btsDHnKrIkP/3fRE6jdgujYqNefoVxBEi0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZQvQq/btsDHnKrIkP/3fRE6jdgujYqNefoVxBEi0/img.gif&quot; data-alt=&quot;⇧ + enter 누를 시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZQvQq/btsDHnKrIkP/3fRE6jdgujYqNefoVxBEi0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ZQvQq/btsDHnKrIkP/3fRE6jdgujYqNefoVxBEi0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;99&quot; data-filename=&quot;Jan-21-2024 13-43-10.gif&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;⇧ + enter 누를 시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Jan-21-2024 13-43-14.gif&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLSCnI/btsDJ0m9rKa/GlG3dps679dW3za2Hy2R31/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLSCnI/btsDJ0m9rKa/GlG3dps679dW3za2Hy2R31/img.gif&quot; data-alt=&quot;⇧ + ⌃ + enter 누를 시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLSCnI/btsDJ0m9rKa/GlG3dps679dW3za2Hy2R31/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bLSCnI/btsDJ0m9rKa/GlG3dps679dW3za2Hy2R31/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;99&quot; data-filename=&quot;Jan-21-2024 13-43-14.gif&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;⇧ + ⌃ + enter 누를 시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;* 참고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ios-development.tistory.com/1288&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ios-development.tistory.com/1288&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Swift</category>
      <category>xcode</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/63</guid>
      <comments>https://sonny6786.tistory.com/63#entry63comment</comments>
      <pubDate>Sun, 21 Jan 2024 13:48:46 +0900</pubDate>
    </item>
    <item>
      <title>분산원장기술에 대해 Araboja</title>
      <link>https://sonny6786.tistory.com/62</link>
      <description>&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;블록체인 기술의 핵심인 분산원장기술,&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7aPaW/btryygo6b2U/7t3Rm0DlXbW7551UHUoMbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7aPaW/btryygo6b2U/7t3Rm0DlXbW7551UHUoMbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7aPaW/btryygo6b2U/7t3Rm0DlXbW7551UHUoMbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7aPaW%2Fbtryygo6b2U%2F7t3Rm0DlXbW7551UHUoMbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;375&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 이름에 담긴 뜻부터 나눠보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;분산 + 원장인데&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;분산되어있는 원장(데이터, 거래 내역) 이라고 보면된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;DLT라고도 불린다 (Distributed Ledger Technology)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;블록체인이 널리 알려지고 대중적이기 전에 기존의&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;금융이나 여타 다른 시스템들은 중앙집중원장의 형태를 띄고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 중앙화된 데이터 관리 형태라고 보면 되는데.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 원래까지 아무 문제없이 잘 굴러갔던 이유는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 거대한 기업들이 제공했던 시스템을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수수료(신뢰비용)를 지불하면서까지&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보안에 철저하게 보관하며 잘 관리해줄 것이라고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아주 '굳게' 믿고 있었던 터인데,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 점점 문제가 생기기 시작한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;비용문제&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qwTt3/btryyex5ybC/KQh0Pwmp0qkUhET8Ohrcgk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qwTt3/btryyex5ybC/KQh0Pwmp0qkUhET8Ohrcgk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qwTt3/btryyex5ybC/KQh0Pwmp0qkUhET8Ohrcgk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqwTt3%2Fbtryyex5ybC%2FKQh0Pwmp0qkUhET8Ohrcgk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제 3자인 중앙관리시스템 들의 관리시스템이자 주체들은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거래자들 사이에서 알게모르게 과도한 관리와 수수료를 청구하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연하게도 데이터를 유지하고 관리하며&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보안에도 엄청나게 많은 돈을 써야한다. 당연하게도 그건&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;유저들, 즉 소비자들에게 부담이 갈 수밖에 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;시간문제&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy6RdU/btryxJynOwg/X7O7Jk7L6lxvv10LcTr881/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy6RdU/btryxJynOwg/X7O7Jk7L6lxvv10LcTr881/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy6RdU/btryxJynOwg/X7O7Jk7L6lxvv10LcTr881/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy6RdU%2FbtryxJynOwg%2FX7O7Jk7L6lxvv10LcTr881%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;287&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또 이 관리시스템의 문제는 중간에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;엄청나게 많은 중간다리가 포함되어있기도 하면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(금융, 물류)해외로 넘어갈 경우 여러 미들맨이 생기면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전체적인 프로세스에서 시간과 비용이 증가하면서&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;효율성이 떨어지게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거기다 해외송금 해본 사람들은 알 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한국인에게 하루 이상걸리는건 절대 이해못할 일..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;요즘에야 하루이틀 걸린다지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예전엔 얼마나 오래걸렸을까? 거기다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이해못할 수수료까지..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;보안문제&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7suJH/btryxIlSA6r/JwAm4y4FHd0tAKkt8xmKI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7suJH/btryxIlSA6r/JwAm4y4FHd0tAKkt8xmKI1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7suJH/btryxIlSA6r/JwAm4y4FHd0tAKkt8xmKI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7suJH%2FbtryxIlSA6r%2FJwAm4y4FHd0tAKkt8xmKI1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;240&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이건 뭐 쉽게 생각할 수 있듯이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스 뚫리면 그냥 끝이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 요즈음엔 너무나도 많은 공격을 받곤 하는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;대기업이 보안에 어느정도 써야하는걸&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인지하지 못하고 털리곤 하는 것 같은데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보안은 그냥 한번 털리면 끝이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;운나쁘면 비용을 써감에도 털리는게 보안인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;쓰지도 않고 털리는게&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기억이 안날 때 쯤이면 털렸다고 뉴스나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;포스팅이 올라와있다...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인터파크나 제일 유명하게는 페이스북까지ㅇㅇ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;자 그럼 분산원장의 장점이 뭘까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmlFUW/btryzCrcQr4/lVZe8E0iwOJ4EynmIXOUs0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmlFUW/btryzCrcQr4/lVZe8E0iwOJ4EynmIXOUs0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmlFUW/btryzCrcQr4/lVZe8E0iwOJ4EynmIXOUs0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmlFUW%2FbtryzCrcQr4%2FlVZe8E0iwOJ4EynmIXOUs0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;222&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 분산되어있기에 중앙화된 방식들보다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인증과 증명의 효율성, 보안성, 투명성 면에서 더 나을 수밖에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 자세히 설명하자면 데이터의 인증이 필요없이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;유저가 직접 거래내역을 소유하고 공유할 수 있기에 차별성을 가진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 분산되어있기에 해킹도 쉽지 않고 위조는 더 어렵게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 덕분에 &lt;u&gt;개인끼리&lt;/u&gt; 제3자 없이 거래가 가능해지는 것.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉 Web3와 블록체인의 기반이 되는게 이 분산원장 기술이다.&lt;/p&gt;</description>
      <category>BlockChain</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/62</guid>
      <comments>https://sonny6786.tistory.com/62#entry62comment</comments>
      <pubDate>Tue, 5 Apr 2022 23:38:26 +0900</pubDate>
    </item>
    <item>
      <title>[Rust for Solana] Cargo</title>
      <link>https://sonny6786.tistory.com/61</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NR5Pi/btryoYC1Hni/LLiXKEFpiKpMke5IKwkye1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NR5Pi/btryoYC1Hni/LLiXKEFpiKpMke5IKwkye1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NR5Pi/btryoYC1Hni/LLiXKEFpiKpMke5IKwkye1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNR5Pi%2FbtryoYC1Hni%2FLLiXKEFpiKpMke5IKwkye1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;220&quot; height=&quot;147&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Cargo란 npm 처럼 러스트의 빌드 시스템 및 패키지 매니저다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;버젼 확인을 위해서는 cargo --verison으로 확인!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;프로젝트 생성하기&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;cargo new hello_cargo --bin&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;--bin은 바이너리. 이는 라이브러리가 아닌 실행가능한 앱으로 만들어줌&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 10.31.07.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H5P5w/btryt6siU8E/q56kLHm2i4T5QEDOzi1KeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H5P5w/btryt6siU8E/q56kLHm2i4T5QEDOzi1KeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H5P5w/btryt6siU8E/q56kLHm2i4T5QEDOzi1KeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH5P5w%2Fbtryt6siU8E%2Fq56kLHm2i4T5QEDOzi1KeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;105&quot; data-filename=&quot;스크린샷 2022-04-04 오후 10.31.07.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트를 생성하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 10.42.56.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chbPO7/btryn8eQkAx/fMGKqisrH3B2Ar3aOSjrhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chbPO7/btryn8eQkAx/fMGKqisrH3B2Ar3aOSjrhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chbPO7/btryn8eQkAx/fMGKqisrH3B2Ar3aOSjrhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchbPO7%2Fbtryn8eQkAx%2FfMGKqisrH3B2Ar3aOSjrhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;196&quot; data-filename=&quot;스크린샷 2022-04-04 오후 10.42.56.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;요로케 Cargo.toml과 main.rs 그리고 gitignore이 생기며&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;git 저장소도 초기화됨&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Cargo.toml을 열어보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnv765/btrypjtuddP/rN85CyDljaeIwpnZ0DFsX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnv765/btrypjtuddP/rN85CyDljaeIwpnZ0DFsX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnv765/btrypjtuddP/rN85CyDljaeIwpnZ0DFsX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnv765%2FbtrypjtuddP%2FrN85CyDljaeIwpnZ0DFsX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;230&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 파일은 toml(tom's obvious, minimal language)포맷으로 작성,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것이 Cargo의 환경설정 포맷.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막 라인 [dependencies]은 우리의 프로젝트의&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;의존성들의 리스트를 적을 수 있는 섹션의 시작점.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;러스트에선 코드의 패키지를 크레이트(Crate)라고 부름&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기선 다른게 필요없지만 다음에 써보자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;암튼 Cargo가 만든 프로젝트는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;src폴더 안에 코드를 위치시키고 toml 환경파일을 가지게해준다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 Cargo로 하지 않았으면 똑같이 src폴더 안에 넣어주고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적합한 toml파일을 생성하면 된다요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;Cargo 프로젝트를 빌드하고 실행하기&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Cargo없이 했을 때와 차이점을 살펴보자요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-05 오후 4.56.35.png&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qcIur/btryxH0H9Uk/wX3Rb9xxfPErckmyzgK1h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qcIur/btryxH0H9Uk/wX3Rb9xxfPErckmyzgK1h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qcIur/btryxH0H9Uk/wX3Rb9xxfPErckmyzgK1h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqcIur%2FbtryxH0H9Uk%2FwX3Rb9xxfPErckmyzgK1h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;137&quot; data-filename=&quot;스크린샷 2022-04-05 오후 4.56.35.png&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;cargo build 를 찍어보면 현재 폴더가 아닌&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 폴더 안에 target/debug/hello_cargo 가 생긴다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위 캡쳐 이미지 제일 아래 명령어를 입력하면 Hello, World! 가 생김ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 cargo build를 실행하면 Cargo.lock이라는 새로운 파일을 생성.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내가 방금 만든 이 프로젝트는 의존성 (dependencies)가 없으니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파일의 내용이 얼마 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 이렇게 빌드하고 직접 실행하는 대신에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;cargo run 으로 간편하게 실행할 수도 있다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 상황에선 코드가 수정된 적이 없는 것을 확인하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴파일하지 않고 바로 바이너리 파일을 실행하게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 수정되어있다면 빌드할거고!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Cargo는 cargo check 이라는 커맨드도 제공,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-05 오후 5.11.18.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q13tl/btryu9c8ym7/GkaQyk6GsKjkA1ON8s4vW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q13tl/btryu9c8ym7/GkaQyk6GsKjkA1ON8s4vW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q13tl/btryu9c8ym7/GkaQyk6GsKjkA1ON8s4vW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq13tl%2Fbtryu9c8ym7%2FGkaQyk6GsKjkA1ON8s4vW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;65&quot; data-filename=&quot;스크린샷 2022-04-05 오후 5.11.18.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실행파일(바이너리)을 제공해주지는 않지만&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴파일 되는지를 빠르게 확인해준다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이건 왜 쓰이는걸까? 당연하게도&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실행파일 만드는 단계를 생략하기 때문인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;완벽하게 준비되기 전에는 check만 해주는 것이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막에 cargo build해준다고 보면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마침내 배포 준비가 되었으면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;cargo build --release를 사용하면 &lt;u&gt;최적화와&lt;/u&gt; 함께 컴파일해준다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 위에랑 다르게 target/debug가 아닌&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;target/release에 실행파일을 만들어준다고 한다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최적화는 우리의 러스트 코드를 빠르게 해주지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컴파일 시간이 길어진다. 이래서 다른 프로필이 생기는 이유.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하나는 개발용 하나는 최종빌드용&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;관례로서의 Cargo&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단순한 프로젝트와 함께 cargo를 사용하는 것은 그냥 rustc을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이용하는 것에 비해 큰 가치를 제공해주지는 못합니다만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 복잡해질 수록 Cargo는 진가를 발휘할거다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여러개의 크레이트로 구성된 복잡한 프로젝트오 함꼐라면 Cargo가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;빌드를 조직화하도록 하는 것이 훨씬 쉽습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 프로젝트들 상에서 작업을 하기 위해서,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우리는 Git을 사용하여 체크아웃하고 그 폴더로 가서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;빌드하기 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649146622084&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone someurl.com/someproject

cd someproject

cargo build&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 명령어를 사용할 수도 있음!&lt;/p&gt;</description>
      <category>Rust/Basics</category>
      <category>Rust</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/61</guid>
      <comments>https://sonny6786.tistory.com/61#entry61comment</comments>
      <pubDate>Tue, 5 Apr 2022 17:17:14 +0900</pubDate>
    </item>
    <item>
      <title>[Rust For Solana] 첫번째 프로그램의 해부</title>
      <link>https://sonny6786.tistory.com/60</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/shFwQ/btrx4Sbyqa4/RcSiXFYQcArx1PiBqaXwv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/shFwQ/btrx4Sbyqa4/RcSiXFYQcArx1PiBqaXwv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/shFwQ/btrx4Sbyqa4/RcSiXFYQcArx1PiBqaXwv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FshFwQ%2Fbtrx4Sbyqa4%2FRcSiXFYQcArx1PiBqaXwv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;220&quot; height=&quot;147&quot; data-origin-width=&quot;220&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YUJRE/btrx4TuOeky/lxrZKqpgLZJ705XPqKLSh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YUJRE/btrx4TuOeky/lxrZKqpgLZJ705XPqKLSh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YUJRE/btrx4TuOeky/lxrZKqpgLZJ705XPqKLSh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYUJRE%2Fbtrx4TuOeky%2FlxrZKqpgLZJ705XPqKLSh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;214&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어려운건 아니지만 조금 더 자세하게 살펴보자면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;println! 은 러스트 &lt;u&gt;매크로&lt;/u&gt; 라고 불린다. 함수라고 불리려면 ! 없이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;println으로 입력되어야했음.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉 !은 보통의 함수 대신에 &lt;u&gt;매크로를&lt;/u&gt; 호출하고 있다고 이해하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;+ 그리고 러스트 스타일은 텝이 아닌 스페이스 네개로 들여쓰기를 함.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-31 오후 6.37.58.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yBtRL/btrx5zQpvBt/bYkq19uT4DUNi9cJ49d4pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yBtRL/btrx5zQpvBt/bYkq19uT4DUNi9cJ49d4pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yBtRL/btrx5zQpvBt/bYkq19uT4DUNi9cJ49d4pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyBtRL%2Fbtrx5zQpvBt%2FbYkq19uT4DUNi9cJ49d4pK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;54&quot; data-filename=&quot;스크린샷 2022-03-31 오후 6.37.58.png&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 실행하기 위해선 rustc 명령어가 필요한데&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보자마자 모르겠어서&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-31 오후 6.40.30.png&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRbrji/btrx4RRj7Qx/9YenyGKFnEyZeeU4AlYTO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRbrji/btrx4RRj7Qx/9YenyGKFnEyZeeU4AlYTO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRbrji/btrx4RRj7Qx/9YenyGKFnEyZeeU4AlYTO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRbrji%2Fbtrx4RRj7Qx%2F9YenyGKFnEyZeeU4AlYTO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;70&quot; data-filename=&quot;스크린샷 2022-03-31 오후 6.40.30.png&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;rustc 는 컴파일러란다.&lt;/u&gt; 모르겠으면 바로 구글선생님에게 물어보자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;암튼 컴파일러는 우리의 코드를 가져가서 실행가능한 바이너리 코드로 만들어준다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 바로 ./main 을 넣어주면 실행이 되는 것.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.55.30.png&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb68Eb/btryp4W1omX/w8IKWoVOjuEmUMepAIxeT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb68Eb/btryp4W1omX/w8IKWoVOjuEmUMepAIxeT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb68Eb/btryp4W1omX/w8IKWoVOjuEmUMepAIxeT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb68Eb%2Fbtryp4W1omX%2Fw8IKWoVOjuEmUMepAIxeT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;260&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.55.30.png&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;무슨 exe파일같은 파일이 생겼다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저 파일을 더블클릭하거나 터미널에서 ./main&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;명령어를 입력해주면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.56.33.png&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjOWhW/btryqi1DQdU/O1SIAH6CLiFsbT4nf7ZLkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjOWhW/btryqi1DQdU/O1SIAH6CLiFsbT4nf7ZLkk/img.png&quot; data-alt=&quot;쟌!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjOWhW/btryqi1DQdU/O1SIAH6CLiFsbT4nf7ZLkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjOWhW%2Fbtryqi1DQdU%2FO1SIAH6CLiFsbT4nf7ZLkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;153&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.56.33.png&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;쟌!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 자바스크립트와 같은 동적 언어에 더 친숙하다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그램의 컴파일과 실행을 따로 하지 않았을 것,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 러스트는 ahead-of-time compiled 언어인데,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이는 우리가 프로그램을 컴파일하고, 이걸 누군가에게 준다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그들은 러스트 없이도 실행이 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반대로 누군가가 확장자가 .rb .py .js파일을 준다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;각각 루비 파이썬 JS구현체가 설치되어있어야 실행이 가능하다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉 하나의 명령어로 컴파일하고 실행이 가능하다.&lt;/p&gt;</description>
      <category>Rust/Basics</category>
      <category>Rust</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/60</guid>
      <comments>https://sonny6786.tistory.com/60#entry60comment</comments>
      <pubDate>Mon, 4 Apr 2022 22:20:36 +0900</pubDate>
    </item>
    <item>
      <title>[iterm] 특정 파일을 실행 시 바로 종료되는 현상</title>
      <link>https://sonny6786.tistory.com/59</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;iterm에러.gif&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhKamK/btrymHgwZwo/yddH835UWAopOM24v5vBRk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhKamK/btrymHgwZwo/yddH835UWAopOM24v5vBRk/img.gif&quot; data-alt=&quot;????&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhKamK/btrymHgwZwo/yddH835UWAopOM24v5vBRk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bhKamK/btrymHgwZwo/yddH835UWAopOM24v5vBRk/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;418&quot; data-filename=&quot;iterm에러.gif&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;????&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아니 이게 무슨 일이지????&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 되기 전에 무슨 경고창이 떠서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;별 생각없이 수락한게 이렇게 되나보다..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;암튼,, 뭘 어떻게 찾아봐도 잘 안나온다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이럴 경우엔 코드의 문제라기보단 내부적인게 더 큰거같아서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;올려놓은 스크린샷은 iterm에서 실행되는 것인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본 터미널에서 확인을 해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.33.25.png&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X8bCA/btrytkRKpyA/0T62THArG1wjLIgVQeOVzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X8bCA/btrytkRKpyA/0T62THArG1wjLIgVQeOVzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X8bCA/btrytkRKpyA/0T62THArG1wjLIgVQeOVzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX8bCA%2FbtrytkRKpyA%2F0T62THArG1wjLIgVQeOVzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;192&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.33.25.png&quot; data-origin-width=&quot;1066&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 끝나는 것을 확인할 수 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;음... 이렇게 봐선 잘 모르겠는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;iterm 환경설정에서 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.34.16.png&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vAcox/btryp4JqdXG/OF2KkZBfNUlfUFOI75lEGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vAcox/btryp4JqdXG/OF2KkZBfNUlfUFOI75lEGk/img.png&quot; data-alt=&quot;??????&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vAcox/btryp4JqdXG/OF2KkZBfNUlfUFOI75lEGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvAcox%2Fbtryp4JqdXG%2FOF2KkZBfNUlfUFOI75lEGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;266&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.34.16.png&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;??????&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어쩌라는거지&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;암튼 조금 더 둘러봤는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Saving session... completed를 보고 나서 생각난게&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.35.50.png&quot; data-origin-width=&quot;1820&quot; data-origin-height=&quot;1138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLvQ2u/btryrCkZ723/BRkZkBag2zDpNekv4VzsOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLvQ2u/btryrCkZ723/BRkZkBag2zDpNekv4VzsOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLvQ2u/btryrCkZ723/BRkZkBag2zDpNekv4VzsOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLvQ2u%2FbtryrCkZ723%2FBRkZkBag2zDpNekv4VzsOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;375&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.35.50.png&quot; data-origin-width=&quot;1820&quot; data-origin-height=&quot;1138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이거다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그램 돌리는? 것을 세션이라고 하나보다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 saving session...completed 후에 윈도우가 닫힌게 생각나서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;After a session ends가 눈에 들어왔나보다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.39.09.png&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8HeEW/btryn9YYOf6/ibeItgc2KVnGC8ps8fXnWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8HeEW/btryn9YYOf6/ibeItgc2KVnGC8ps8fXnWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8HeEW/btryn9YYOf6/ibeItgc2KVnGC8ps8fXnWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8HeEW%2Fbtryn9YYOf6%2FibeItgc2KVnGC8ps8fXnWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;144&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.39.09.png&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 No Action 으로 바꿔주면!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.40.00.png&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8QcY2/btryqZOzNUQ/RJvgjn8XrknK6ZQCJgpQW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8QcY2/btryqZOzNUQ/RJvgjn8XrknK6ZQCJgpQW0/img.png&quot; data-alt=&quot;iterm2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8QcY2/btryqZOzNUQ/RJvgjn8XrknK6ZQCJgpQW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8QcY2%2FbtryqZOzNUQ%2FRJvgjn8XrknK6ZQCJgpQW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;76&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.40.00.png&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;iterm2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.47.30.png&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdIhCY/btrygZI2TL6/s9dwY1Rk87ZGhkgXQPCGSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdIhCY/btrygZI2TL6/s9dwY1Rk87ZGhkgXQPCGSK/img.png&quot; data-alt=&quot;terminal&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdIhCY/btrygZI2TL6/s9dwY1Rk87ZGhkgXQPCGSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdIhCY%2FbtrygZI2TL6%2Fs9dwY1Rk87ZGhkgXQPCGSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;184&quot; data-filename=&quot;스크린샷 2022-04-04 오후 8.47.30.png&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;terminal&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;똑같쥬?&lt;/p&gt;</description>
      <category>Error</category>
      <category>terminal</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/59</guid>
      <comments>https://sonny6786.tistory.com/59#entry59comment</comments>
      <pubDate>Mon, 4 Apr 2022 20:48:00 +0900</pubDate>
    </item>
    <item>
      <title>[Rust] rustc 컴파일 시 실행안되는 오류</title>
      <link>https://sonny6786.tistory.com/58</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 6.54.51.png&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRZ6iU/btrykgQW8Ui/WEWesyKkDKjyBfXDEsj4Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRZ6iU/btrykgQW8Ui/WEWesyKkDKjyBfXDEsj4Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRZ6iU/btrykgQW8Ui/WEWesyKkDKjyBfXDEsj4Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRZ6iU%2FbtrykgQW8Ui%2FWEWesyKkDKjyBfXDEsj4Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1888&quot; height=&quot;1068&quot; data-filename=&quot;스크린샷 2022-04-04 오후 6.54.51.png&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;???? 분명 저번주엔 됐는데 왜 안돼 ?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;명령어 라인 도구(Command Line tools)가 안깔려서 그런거였음...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;맥 기변 하고나서 이걸 안깔아줘서 안됐나보다.. 이런&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;xcode-select --install&lt;/u&gt; 입력해주면 잘 작동한다 흑&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-04 오후 6.56.23.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX9AjV/btryoYQfn50/K1zX2W5TZHepOGyO7TOtL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX9AjV/btryoYQfn50/K1zX2W5TZHepOGyO7TOtL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX9AjV/btryoYQfn50/K1zX2W5TZHepOGyO7TOtL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX9AjV%2FbtryoYQfn50%2FK1zX2W5TZHepOGyO7TOtL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1244&quot; height=&quot;460&quot; data-filename=&quot;스크린샷 2022-04-04 오후 6.56.23.png&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Error</category>
      <category>Rust</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/58</guid>
      <comments>https://sonny6786.tistory.com/58#entry58comment</comments>
      <pubDate>Mon, 4 Apr 2022 19:04:20 +0900</pubDate>
    </item>
    <item>
      <title>거래소간 차익거래를 위한 텔레그램 봇</title>
      <link>https://sonny6786.tistory.com/57</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최근에 잠시 역프가 잠깐 생기면서 이전에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;구상하고 싶었던 프로그램이 있었는데,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이전엔 전부 손으로 옮겨다니면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;눈으로 그 가격차이를 확인하고,, 직접 계산하면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;차이를 포착하면서 이거저거 시도해보곤 했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 굳이 손으로 해야하나..? 싶어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;구글링을 좀 해보니 이미 내가 생각했던 것들은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 다 패키지로 만들어져있다 ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;중간중간에 실패하긴 했지만 만들고나니 너무 뿌듯하다,,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일단 최근에는 이런 기회가 잘 포착이 (수익이 나는) 안나기도하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 이걸 실제로 거래를 하기에는 살짝 무리가 있지 않을까 싶어서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;거래가 체결되고 다른 계정으로 보내는 기능은 넣지 않았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Mar-31-2022 17-33-14.gif&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rISPg/btrx30U4YiF/dhfeFwksf27McVQbT90YTK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rISPg/btrx30U4YiF/dhfeFwksf27McVQbT90YTK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rISPg/btrx30U4YiF/dhfeFwksf27McVQbT90YTK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/rISPg/btrx30U4YiF/dhfeFwksf27McVQbT90YTK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;418&quot; data-filename=&quot;Mar-31-2022 17-33-14.gif&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바이낸스 - FTX 동시상장 되어있는 크립토 중에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가격 차이가 0.25 퍼 이상인 것들을 불러오면서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 정보를 그대로 내 텔레그램으로 보내주는 봇이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0.25퍼는 내가 지정한 퍼센트고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저 텔레그램 봇은 나에게만 보내는게 아니라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;채널에도 보내면 어떨까 생각도 했는데 못찾음.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;암튼 오랜만에 파이썬 다시 만져보는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꽤 어려웠을 것 같았는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;머리가 잊혀지더라도 손이 기억하니 다행이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT</category>
      <category>Arbitrage</category>
      <category>PYTHON</category>
      <author>Sonny Cucumber</author>
      <guid isPermaLink="true">https://sonny6786.tistory.com/57</guid>
      <comments>https://sonny6786.tistory.com/57#entry57comment</comments>
      <pubDate>Thu, 31 Mar 2022 17:40:52 +0900</pubDate>
    </item>
  </channel>
</rss>