Githawk: ์ปค๋ฐ‹ ๋ˆ„๋ฝ

์— ๋งŒ๋“  2019๋…„ 03์›” 10์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: GitHawkApp/GitHawk

GitHawk Upload by BasThomas

GitHawk Upload by BasThomas

๊ทธ๋ฆฌ๊ณ  various changes ์ปค๋ฐ‹์€ JSON์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

{
  "data" : {
    "repository" : {
      "viewerCanAdminister" : true,
      "mergeCommitAllowed" : true,
      "squashMergeAllowed" : true,
      "mentionableUsers" : {
        "nodes" : [
          {
            "login" : "terhechte",
            "avatarUrl" : "https://avatars2.githubusercontent.com/u/132234?v=4",
            "__typename" : "User"
          },
          {
            "login" : "BasThomas",
            "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
            "__typename" : "User"
          }
        ],
        "__typename" : "UserConnection"
      },
      "defaultBranchRef" : {
        "name" : "master",
        "__typename" : "Ref"
      },
      "issueOrPullRequest" : {
        "milestone" : null,
        "locked" : false,
        "labels" : {
          "nodes" : [

          ],
          "__typename" : "LabelConnection"
        },
        "title" : "[WIP] Parse show notes",
        "__typename" : "PullRequest",
        "viewerCanReact" : true,
        "changedFiles" : 11,
        "deletions" : 44,
        "mergeStateStatus" : "CLEAN",
        "commits" : {
          "nodes" : [
            {
              "commit" : {
                "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjQ0ZTdhYWNjYjIzNzdjMzE1MGVhYWY4MzI5Y2ZhNTA4ODliMTJlMTM=",
                "status" : null,
                "__typename" : "Commit"
              },
              "__typename" : "PullRequestCommit"
            }
          ],
          "__typename" : "PullRequestCommitConnection"
        },
        "closed" : false,
        "viewerCanUpdate" : true,
        "createdAt" : "2018-09-28T11:16:41Z",
        "baseRefName" : "master",
        "mergeable" : "MERGEABLE",
        "body" : "This adds a format for show notes that will parse them to HTML.\r\n\r\nThe following format is expected:\r\n\r\n```\r\n# title\r\n- description1: url1\r\n- description2: url2\r\n\r\n- description3: url3\r\n\r\n# anotherTitle\r\n- description4: url4\r\n```\r\n\r\nThis will generate:\r\n\r\n```html\r\n<div>\r\n  <p>\r\n  <h3>title</h3>\r\n  <ul>\r\n    <li><a href=\"url1\">description1</a></li>\r\n    <li><a href=\"url2\">description2</a></li>\r\n  </ul>\r\n  <ul>\r\n    <li><a href=\"url3\">description3</a></li>\r\n  </ul>\r\n  </p>\r\n  <p>\r\n  <h3>anotherTitle</h3>\r\n  <ul>\r\n    <li><a href=\"url4\">description4</a></li>\r\n  </ul>\r\n  </p>\r\n<div>\r\n```",
        "timeline" : {
          "pageInfo" : {
            "hasPreviousPage" : false,
            "startCursor" : "MQ",
            "__typename" : "PageInfo"
          },
          "nodes" : [
            {
              "messageHeadline" : "Add .xcodeproj to gitignore",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjdiZTNiOWYxMjBkN2JkZGMzYjYxMTk2ZmRiZWFjNGJiOTNkNjY4MGQ=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "7be3b9f120d7bddc3b61196fdbeac4bb93d6680d"
            },
            {
              "messageHeadline" : "Add a newline at the end of the generated script",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OmNlYWU0NThkOTlkZjNiZDRjNDFkMmQ5YTQ1MzQzNWZkYmFlYmMxZDY=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "ceae458d99df3bd4c41d2d9a453435fdbaebc1d6"
            },
            {
              "messageHeadline" : "De-indent enum cases",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjQ2NDVjODQzOTQ0MzlkMzZhMzM0MGE5NWUyYzg5OTUzZGQ3ZDAxNTc=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "4645c84394439d36a3340a95e2c89953dd7d0157"
            },
            {
              "messageHeadline" : "Remove unnecessary print statement",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjgyNGZhODI5OWI4OGQ1ZTE0Nzc0MjMwMjE2Y2M0MTQ1ODEzZDEzZTE=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "824fa8299b88d5e14774230216cc4145813d13e1"
            },
            {
              "messageHeadline" : "Rename seperator to separator",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OmEwYTg3YmM4YjQxMGM0YzhiYjdiOTEyZmM2OWRiNzNjMWRjZWY0NDM=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "a0a87bc8b410c4c8bb7b912fc69db73c1dcef443"
            },
            {
              "messageHeadline" : "Parse formatted notes to html",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjI2ZGU0MzNkOTdiOWYyMDdmODdiOWNjZTBhNGJkNzgxZjg2M2NhYzU=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "26de433d97b9f207f87b9cce0a4bd781f863cac5"
            },
            {
              "messageHeadline" : "Generate masse.swift",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjMyMmRiMDhmOGMyZjQ1OGY5YWRkMDk1MzQzMmNmNGExMThiNGIzMzY=",
              "author" : {
                "user" : {
                  "login" : "BasThomas",
                  "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                  "__typename" : "User"
                },
                "__typename" : "GitActor"
              },
              "oid" : "322db08f8c2f458f9add0953432cf4a118b4b336"
            },
            {
              "id" : "MDEyOklzc3VlQ29tbWVudDQ2NjM3NDA3Ng==",
              "body" : "What happened to this? It still says [WIP]. Is it ready for review? :)",
              "viewerCanUpdate" : true,
              "author" : {
                "login" : "terhechte",
                "avatarUrl" : "https://avatars2.githubusercontent.com/u/132234?v=4",
                "__typename" : "User"
              },
              "viewerDidAuthor" : false,
              "reactionGroups" : [
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "THUMBS_UP"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "THUMBS_DOWN"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "LAUGH"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "HOORAY"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "CONFUSED"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "HEART"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "ROCKET"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "EYES"
                }
              ],
              "viewerCanReact" : true,
              "viewerCanDelete" : true,
              "editor" : null,
              "__typename" : "IssueComment",
              "lastEditedAt" : null,
              "createdAt" : "2019-02-22T12:02:31Z"
            },
            {
              "id" : "MDEyOklzc3VlQ29tbWVudDQ2NjUwMDk3Ng==",
              "body" : "Yeah not super happy with the code. It works in theory, but want to take another look at making this a bit less error prone / easier to expand on later",
              "viewerCanUpdate" : true,
              "author" : {
                "login" : "BasThomas",
                "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                "__typename" : "User"
              },
              "viewerDidAuthor" : true,
              "reactionGroups" : [
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "THUMBS_UP"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "THUMBS_DOWN"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "LAUGH"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "HOORAY"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "CONFUSED"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "HEART"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "ROCKET"
                },
                {
                  "__typename" : "ReactionGroup",
                  "viewerHasReacted" : false,
                  "users" : {
                    "nodes" : [

                    ],
                    "totalCount" : 0,
                    "__typename" : "ReactingUserConnection"
                  },
                  "content" : "EYES"
                }
              ],
              "viewerCanReact" : true,
              "viewerCanDelete" : true,
              "editor" : null,
              "__typename" : "IssueComment",
              "lastEditedAt" : null,
              "createdAt" : "2019-02-22T18:38:01Z"
            },
            {
              "messageHeadline" : "Implemented a simplified markdown parser for notes",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjIyNTkxNTc5NTc3MDgwZmJiNjA3YzdjNmI0MGNmMGVmMWU1YTFmZGI=",
              "author" : {
                "user" : null,
                "__typename" : "GitActor"
              },
              "oid" : "22591579577080fbb607c7c6b40cf0ef1e5a1fdb"
            },
            {
              "author" : {
                "login" : "BasThomas",
                "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
                "__typename" : "User"
              },
              "editor" : {
                "login" : "BasThomas",
                "__typename" : "User"
              },
              "submittedAt" : "2019-03-08T20:23:29Z",
              "id" : "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3MjEyNDYxNzcz",
              "comments" : {
                "totalCount" : 7,
                "__typename" : "PullRequestReviewCommentConnection"
              },
              "lastEditedAt" : "2019-03-08T20:23:39Z",
              "viewerDidAuthor" : true,
              "createdAt" : "2019-03-08T20:18:29Z",
              "body" : "So cool! Hope to get some time during the weekend to take another look and play with it. Thanks @terhechte!",
              "__typename" : "PullRequestReview",
              "state" : "COMMENTED"
            },
            {
              "messageHeadline" : "Various Changes",
              "__typename" : "Commit",
              "id" : "MDY6Q29tbWl0MTQ1MzIyMTc3OjQ0ZTdhYWNjYjIzNzdjMzE1MGVhYWY4MzI5Y2ZhNTA4ODliMTJlMTM=",
              "author" : {
                "user" : null,
                "__typename" : "GitActor"
              },
              "oid" : "44e7aaccb2377c3150eaaf8329cfa50889b12e13"
            }
          ],
          "__typename" : "PullRequestTimelineConnection"
        },
        "viewerDidAuthor" : true,
        "id" : "MDExOlB1bGxSZXF1ZXN0MjE4OTM0OTIz",
        "number" : 1,
        "reviewRequests" : {
          "nodes" : [

          ],
          "__typename" : "ReviewRequestConnection"
        },
        "reactionGroups" : [
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "THUMBS_UP"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "THUMBS_DOWN"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "LAUGH"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "HOORAY"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "CONFUSED"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "HEART"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "ROCKET"
          },
          {
            "__typename" : "ReactionGroup",
            "viewerHasReacted" : false,
            "users" : {
              "nodes" : [

              ],
              "totalCount" : 0,
              "__typename" : "ReactingUserConnection"
            },
            "content" : "EYES"
          }
        ],
        "additions" : 443,
        "editor" : null,
        "assignees" : {
          "nodes" : [

          ],
          "__typename" : "UserConnection"
        },
        "merged" : false,
        "author" : {
          "login" : "BasThomas",
          "avatarUrl" : "https://avatars0.githubusercontent.com/u/4190298?v=4",
          "__typename" : "User"
        },
        "lastEditedAt" : null
      },
      "hasIssuesEnabled" : true,
      "rebaseMergeAllowed" : true,
      "__typename" : "Repository",
      "name" : "masse"
    }
  }
}
๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ๋คํ”„(์ž๋™ ์ƒ์„ฑ๋จ)
 ๋ฒ„์ „ 1.27.1(1546622353)
 ์žฅ์น˜: iPhone X(iOS 12.1.4)
 TestFlight: ์‚ฌ์‹ค

๐Ÿ› bug

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋น ๋ฅธ ์ •๋ณด @wayni208 @BasThomas : " https://github.com/Contravariance/masse/pull/1/commits "๋ฅผ ๋ณด๋ฉด ๋‚ด๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ปค๋ฐ‹์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ปค๋ฐ‹์€ ๋„์ž๊ธฐ git( git commit -m ๋“ฑ)์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋‹ค๋ฅธ ๊ธฐ๊ณ„์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž‘์—… ์ปดํ“จํ„ฐ์—์„œ ์ด์ƒํ•œ ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๋‚ด git ID๊ฐ€ ๋‚ด๋ถ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ github์˜ ID์ด๋ฏ€๋กœ ๋‚ด ๊ณต๊ฐœ github์˜ ID์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ผ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ•˜๋Š” ๊ฒƒ์€ ์ด๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋“  ์ด๊ฒƒ์„ ๊นจ๋œจ๋ฆฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ID๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ž‘์—… ์ปดํ“จํ„ฐ์—์„œ ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ปคํ”Œ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

๋ชจ๋“  18 ๋Œ“๊ธ€

2527 ์†์ž„์ˆ˜?

GitHawk ์™€ ํ•จ๊ป˜

๊ทธ๋ž˜ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ด! ์ปดํ“จํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ์— JSON์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜์ค‘์— ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์„ ํŒŒํ—ค์ณ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

@wayni208 ์€ #2527์„ ๋ณด๊ณ  ๋‹ค๋ฅธ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌ๋ฉด ์†์ž„์ˆ˜๋‹ค

GitHawk ์™€ ํ•จ๊ป˜

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰ ํƒญ์—์„œ ๊ฒ€์ƒ‰ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๋‚˜๋ฅผ ์œ„ํ•ด ๊นœ๋ฐ•์ด๋ฉฐ ํ…์ŠคํŠธ ์ž…๋ ฅ์ด๋‚˜ ๋ถ™์—ฌ ๋„ฃ๊ธฐ๋ฅผ ๋ฐ›์•„๋“ค์ด๊ฑฐ๋‚˜ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์žฅ์น˜์—์„œ ์•„์ง ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ถ„์‚ฐ/์งˆ๋Ÿ‰#1

GitHawk ์™€ ํ•จ๊ป˜

๋‚˜์—๊ฒŒ๋„ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค. iPad sim์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘Œ

GitHawk ์™€ ํ•จ๊ป˜

์ด๊ฒƒ์€ ์ด์ƒํ•œ ๊ฒƒ์ด๋ฉฐ GitHub ์ธก์˜ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. JSON์€ ๋ˆ„๋ฝ๋œ ์ปค๋ฐ‹์˜ ์‚ฌ์šฉ์ž ํ•„๋“œ์— "null"์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. GitHawk๋Š” null์„ ๊ฐ€์ ธ์˜ค๊ณ  AutoCompleteUser์—์„œ ๊ฐ€์ ธ์˜จ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํƒ€์ž„๋ผ์ธ์— ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub๋Š” null์„ ๊ฐ€์ ธ์˜ค๊ณ  ํƒ€์ž„๋ผ์ธ์—์„œ ๊ธฐ๋ณธ ์•„๋ฐ”ํƒ€ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

#2527์—์„œ

์ด๊ฒƒ์€ ์ด ํŠน์ • ์ปค๋ฐ‹์— ๋Œ€ํ•œ JSON์ž…๋‹ˆ๋‹ค.
fkling-json

์ด๊ฒƒ์ด GitHub์— ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
fkling-github

#2677์—์„œ

์ด๊ฒƒ์€ ์ด ํŠน์ • ์ปค๋ฐ‹์— ๋Œ€ํ•œ JSON์ž…๋‹ˆ๋‹ค.
contravariance-json

์ด๊ฒƒ์ด GitHub์— ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
contravariance-details

๊ทธ๋ฆฌ๊ณ  ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ. ์ด ์ปค๋ฐ‹์„ ํด๋ฆญํ•˜๊ณ  ํŒŒ์ผ์„ ๋ณผ ๋•Œ๊นŒ์ง€ "์‚ฌ์šฉ์ž"๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
contravariance-github-details

๊ทธ๋ž˜์„œ... ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ GitHub์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปค๋ฐ‹์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ปค๋ฐ‹ ๊ฐœ์ฒด(๋˜๋Š” ์ปค๋ฐ‹์„ ํ‘œ์‹œํ•˜๋Š” ๊ฐœ์ฒด)์— ์„ ํƒ์  ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์ €์ž๊ฐ€ ์•„๋‹Œ ์ปค๋ฐ‹"๊ณผ "์ž‘์„ฑ์ž ์ปค๋ฐ‹"์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@BasThomas๊ฐ€ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•ด ์ฃผ์ง€๋งŒ ์ƒˆ๋กœ์šด "๋น„์ž‘์„ฑ์ž ์ปค๋ฐ‹" ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด IssueOrPullRequest.graphql ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

ํ , ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JSON์„ ๊ทธ๋Ÿฌํ•œ ๊ฐ์ฒด๋กœ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

๊ณ„์‹œ๋ฅผ ๋ฐ›์€ ๊ฒƒ ๊ฐ™์•„์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

@BasThomas๋Š” ์—ฌ์ „ํžˆ ์ด ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋งŽ์ด ๋ฐœ์ „ํ•˜์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ ๋งŽ์ด ๋ฐฐ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜‰ Contravariance ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ž‘์—…ํ•  ๋•Œ ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๋ณ„๋„์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” Xcode์ฒ˜๋Ÿผ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” git ๋ช…๋ น์ค„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ˆ„๋ฝ๋œ ์ปค๋ฐ‹์— ์–ด๋Š ๊ฒƒ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด์จŒ๋“  ๋กœ๊ทธ์ธ์ด ๊ถ๊ทน์ ์œผ๋กœ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ null์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ปค๋ฐ‹์ด๋ผ๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” "์ด๋ฆ„"์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ๋‚ด์šฉ์ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ปค๋ฐ‹์—์„œ ์ด๊ฒƒ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ณด๊ณ  ์žˆ๋˜ ์–ด์ ฏ๋ฐค(์ด๋ฆ„, Mr. Bas Broek)์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ด์ œ ์ƒˆ๋กœ์šด NonUser ์ปค๋ฐ‹ ๋ชจ๋ธ, ์…€ ๋ฐ ์„น์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์‰ฌ์šด ์ˆ˜์ •์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์„ ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค ๋‹น์‹ ์€ ์•„์ง๋„ ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ๊ทธ๋“ค์ด ์ •ํ™•ํžˆ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ปค๋ฐ‹์ธ์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค โ€” @terhechte ๊ฐ€ ๋” ๋งŽ์ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰

์–ด์จŒ๋“  ๋กœ๊ทธ์ธ์ด ๊ถ๊ทน์ ์œผ๋กœ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ null์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ปค๋ฐ‹์ด๋ผ๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” "์ด๋ฆ„"์„ ์ „๋‹ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ๋‚ด์šฉ์ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ œ์•ˆํ•œ ๋Œ€๋กœ NonUser -์ด๋ฆ„/์‚ฌ์šฉ์ž๊ฐ€ ์—†๋Š” ์ปค๋ฐ‹ ๋ชจ๋ธ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ ํ‘ธ์‹œ๋œ ์ปค๋ฐ‹?

๋‚ด๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์‰ฌ์šด ์ˆ˜์ •์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์„ ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋„๋Š” ์ ˆ๋Œ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค! ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋ณด๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ž‘์—…์„ ์„ ํƒํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜ƒ ๋ผ๋ฒจ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ํ˜„์žฌ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ํ•จ๊ป˜ ์ž์œ ๋กญ๊ฒŒ (์ดˆ์•ˆ) pull ์š”์ฒญ์„ ์—ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฑฐ๊ธฐ์— ๋‚จ๊ฒจ ๋‘์‹ญ์‹œ์˜ค. :)

ใ…‹ใ…‹ใ…‹ใ…‹

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•˜๋Š” ์ปค๋ฐ‹์€ "๋‹ค์–‘ํ•œ ๋ณ€๊ฒฝ"๊ณผ ๋‹น์‹ ์ด ๋งŒ๋“  ๋ฐ”๋กœ ์ง์ „์˜ ์ปค๋ฐ‹์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ปค๋ฐ‹ํ•˜๋ฉด "์‚ฌ์šฉ์ž" ํ•„๋“œ๊ฐ€ "null"์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  "์ด๋ฆ„"์ด "์•Œ ์ˆ˜ ์—†์Œ" ๋˜๋Š” ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹จ์ˆœํžˆ ๋‚ด ํ˜ธ๊ธฐ์‹ฌ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ปค๋ฐ‹์„ ํ‘ธ์‹œํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํƒœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž ์ƒํƒœ๋Š” ์—ฌ์ „ํžˆ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜‚ ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ด€์ ์—์„œ ํƒœ๊ทธ ๋’ค์— ์ˆจ๊ฒจ์ง„ ์˜๋ฏธ์— ๋Œ€ํ•œ ์„ค๋ช…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ฐค์— ์ข€ ๋” ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ์ œ์•ˆํ•˜์‹  ๋Œ€๋กœ ๋‹ค์‹œ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์‹œ๋„์— ์‹คํŒจํ–ˆ์ง€๋งŒ GraphQL์—์„œ null ์œ ํ˜•์— ๋Œ€ํ•ด ์ฝ๊ณ  ์žˆ์—ˆ๊ณ  ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ํ•˜๊ณ  PR ์ดˆ์•ˆ๋„ ์ œ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, Bas. ๋ฐฐ์šธ ๊ฒƒ๋„ ๋งŽ๊ณ  ์žฌ๋ฏธ์žˆ์–ด์š”. ๋‚ด๊ฐ€ PITA๊ฐ€ ๋œ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๐Ÿ™‚

GitHawk ์™€ ํ•จ๊ป˜

๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์ฆ๊ธฐ๊ณ  ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ค์œผ๋‹ˆ ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—‰๋ฉ์ด๊ฐ€ ์•„ํ”„๋‹ค๊ณ  ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค... ๋‹น์‹ ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค!

๋น ๋ฅธ ์ •๋ณด @wayni208 @BasThomas : " https://github.com/Contravariance/masse/pull/1/commits "๋ฅผ ๋ณด๋ฉด ๋‚ด๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ปค๋ฐ‹์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ปค๋ฐ‹์€ ๋„์ž๊ธฐ git( git commit -m ๋“ฑ)์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋‹ค๋ฅธ ๊ธฐ๊ณ„์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž‘์—… ์ปดํ“จํ„ฐ์—์„œ ์ด์ƒํ•œ ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๋‚ด git ID๊ฐ€ ๋‚ด๋ถ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ github์˜ ID์ด๋ฏ€๋กœ ๋‚ด ๊ณต๊ฐœ github์˜ ID์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ผ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ•˜๋Š” ๊ฒƒ์€ ์ด๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋“  ์ด๊ฒƒ์„ ๊นจ๋œจ๋ฆฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ID๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ž‘์—… ์ปดํ“จํ„ฐ์—์„œ ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ปคํ”Œ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

@BasThomas ์™€ @terhechte์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ๋‚ด๊ฐ€ ์ด๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ์ด๋ฒˆ ์ฃผ๋ง์— ๋‹น์‹ ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰