├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── issue#1.md ├── issue#2.md ├── json ├── news-100.json ├── news-101.json ├── news-102.json ├── news-103.json ├── news-104.json ├── news-105.json ├── news-106.json ├── news-107.json ├── news-108.json ├── news-47.json ├── news-48.json ├── news-49.json ├── news-50.json ├── news-51.json ├── news-52.json ├── news-53.json ├── news-54.json ├── news-55.json ├── news-56.json ├── news-57.json ├── news-58.json ├── news-59.json ├── news-60.json ├── news-61.json ├── news-62.json ├── news-63.json ├── news-64.json ├── news-65.json ├── news-66.json ├── news-67.json ├── news-68.json ├── news-69.json ├── news-70.json ├── news-71.json ├── news-72.json ├── news-73.json ├── news-74.json ├── news-75.json ├── news-76.json ├── news-77.json ├── news-78.json ├── news-79.json ├── news-80.json ├── news-81.json ├── news-82.json ├── news-83.json ├── news-84.json ├── news-85.json ├── news-86.json ├── news-87.json ├── news-88.json ├── news-89.json ├── news-90.json ├── news-91.json ├── news-92.json ├── news-93.json ├── news-94.json ├── news-95.json ├── news-96.json ├── news-97.json ├── news-98.json └── news-99.json └── newsletter.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: godrm 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | fastlane/report.xml 81 | fastlane/Preview.html 82 | fastlane/screenshots/**/*.png 83 | fastlane/test_output 84 | 85 | # Code Injection 86 | # 87 | # After new code Injection tools there's a generated folder /iOSInjectionProject 88 | # https://github.com/johnno1962/injectionforxcode 89 | 90 | iOSInjectionProject/ 91 | .DS_Store 92 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 letswiftconf 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 레츠스위프트 뉴스레터 2 | 3 | 본 저장소는 레츠스위프트 커뮤니티에 참여하는 사람들이 자발적으로 iOS / Swift 관련 소식을 모아서 메일로 전송하기 위해서 사용하고 있습니다. 특정한 개인이나 회사의 상업적인 목적으로 사용하는 것을 제한하며, 한국 개발자 커뮤니티에 도움이 되는 방향에서 시작했습니다. 4 | 5 | ## 뉴스레터 아카이브 6 | 7 | #### 2020년 제1호~제22호 8 | 9 |
10 | 목록 펼쳐보기 11 |
12 | 13 | |호수|발행날짜|바로가기| 14 | |--|--|--| 15 | |제1호|2020년 2월 23일|[링크](https://stib.ee/o202)| 16 | |제2호|2020년 3월 8일|[링크](https://stib.ee/um12)| 17 | |제3호|2020년 3월 22일|[링크](https://stibee.com/api/v1.0/emails/share/IJHzXGwmCgg4MIcrOXd9ud_oiDTeVg==)| 18 | |제4호|2020년 4월 5일|[링크](https://stibee.com/api/v1.0/emails/share/9yZfOCB9Pp5zyuF-oHNGx39sDbro5Q==?fbclid=IwAR2Y0zYTSVsJR78N-JM4PH4rxX6fqBGBeacGMkXjmWk6NqsIuS6ajeXCStw)| 19 | |제5호|2020년 4월 19일|[링크](https://stibee.com/api/v1.0/emails/share/lDcnhD65tcmUBVDjcRy1JY1Ut4wMXA==)| 20 | |제6호|2020년 5월 3일|[링크](https://stibee.com/api/v1.0/emails/share/f3zE8J8_Z2NwM66l84TzNVz4LbbyYA==)| 21 | |제7호|2020년 5월 17일|[링크](https://stibee.com/api/v1.0/emails/share/9_dqwFcOIeQq-6dMlitXYpRhJLPVbQ==)| 22 | |제8호|2020년 5월 31일|[링크](https://stibee.com/api/v1.0/emails/share/QS9Xt0YTjRrzvY1i4Nj3DbTRWyot1Q==)| 23 | |제9호|2020년 6월 14일|[링크](https://stib.ee/q2F2)| 24 | |제10호|2020년 6월 28일|[링크](https://stib.ee/TEH2)| 25 | |제11호|2020년 7월 12일|[링크](https://stib.ee/KLJ2)| 26 | |제12호|2020년 7월 26일|[링크](https://stib.ee/7XL2)| 27 | |제13호|2020년 8월 09일|[링크](https://stib.ee/qhM2)| 28 | |제14호|2020년 8월 23일|[링크](https://stib.ee/kmP2)| 29 | |제15호|2020년 9월 13일|[링크](https://stib.ee/ddT2)| 30 | |제16호|2020년 9월 27일|[링크](https://stib.ee/sLW2)| 31 | |제17호|2020년 10월 11일|[링크](https://stib.ee/LHY2)| 32 | |제18호|2020년 10월 25일|[링크](https://stib.ee/XGb2)| 33 | |제19호|2020년 11월 08일|[링크](https://stib.ee/9Xe2)| 34 | |제20호|2020년 11월 22일|[링크](https://stib.ee/yjh2)| 35 | |제21호|2020년 12월 13일|[링크](https://stib.ee/0mn2)| 36 | |제22호|2020년 12월 27일|[링크](https://stib.ee/awp2)| 37 |
38 |
39 | 40 | #### 2021년 제23호~제46호 41 | 42 |
43 | 목록 펼쳐보기 44 |
45 | 46 | |호수|발행날짜|바로가기| 47 | |--|--|--| 48 | |제23호|2021년 1월 10일|[링크](https://stib.ee/Y1t2)| 49 | |제24호|2021년 1월 24일|[링크](https://stib.ee/wRw2)| 50 | |제25호|2021년 2월 14일|[링크](https://stib.ee/eO13)| 51 | |제26호|2021년 2월 28일|[링크](https://stib.ee/RG53)| 52 | |제27호|2021년 3월 14일|[링크](https://stib.ee/Rl83)| 53 | |제28호|2021년 3월 28일|[링크](https://stib.ee/QbC3)| 54 | |제29호|2021년 4월 11일|[링크](https://stib.ee/XdC3)| 55 | |제30호|2021년 4월 25일|[링크](https://stib.ee/SNK3)| 56 | |제31호|2021년 5월 09일|[링크](https://stib.ee/aCO3)| 57 | |제32호|2021년 5월 23일|[링크](https://stib.ee/f2S3)| 58 | |제33호|2021년 6월 13일|[링크](https://stib.ee/IAY3)| 59 | |제34호|2021년 6월 27일|[링크](https://stib.ee/s3c3)| 60 | |제35호|2021년 7월 11일|[링크](https://stib.ee/tBg3)| 61 | |제36호|2021년 7월 25일|[링크](https://stib.ee/2Ek3)| 62 | |제37호|2021년 8월 08일|[링크](https://stib.ee/RSo3)| 63 | |제38호|2021년 8월 22일|[링크](https://stib.ee/SPs3)| 64 | |제39호|2021년 9월 12일|[링크](https://stib.ee/h8z3)| 65 | |제40호|2021년 9월 26일|[링크](https://stib.ee/fa24)| 66 | |제41호|2021년 10월 10일|[링크](https://stib.ee/C174)| 67 | |제42호|2021년 10월 24일|[링크](https://stib.ee/NMB4)| 68 | |제43호|2021년 11월 14일|[링크](https://stib.ee/3TI4)| 69 | |제44호|2021년 11월 28일|[링크](https://stib.ee/H2M4)| 70 | |제45호|2021년 12월 12일|[링크](https://stib.ee/NqR4)| 71 | |제46호|2021년 12월 26일|[링크](https://stib.ee/EHW4)| 72 | 73 |
74 |
75 | 76 | #### 2022년 제47호~70호 77 | 78 |
79 | 목록 펼쳐보기 80 |
81 | 82 | |호수|발행날짜|바로가기| 83 | |--|--|--| 84 | |제47호|2022년 1월 09일|[링크](https://stib.ee/Oka4)| 85 | |제48호|2022년 1월 23일|[링크](https://stib.ee/rGf4)| 86 | |제49호|2022년 2월 13일|[링크](https://stib.ee/0gl4)| 87 | |제50호|2022년 2월 27일|[링크](https://event.stibee.com/v2/click/NTg2NTQvODg5NjY2LzQzMy8/aHR0cHM6Ly9zdGliLmVlL2tvcTQ)| 88 | |제51호|2022년 3월 13일|[링크](https://event.stibee.com/v2/click/NTg2NTQvOTA3NDA1LzQzMy8/aHR0cHM6Ly9zdGliLmVlL0xUdjQ)| 89 | |제52호|2022년 3월 27일|[링크](https://event.stibee.com/v2/click/NTg2NTQvOTI3Mzc2LzQzMy8/aHR0cHM6Ly9zdGliLmVlL0JpMDU)| 90 | |제53호|2022년 4월 10일|[링크](https://event.stibee.com/v2/click/NTg2NTQvOTQ3Njk5LzQzMy8/aHR0cHM6Ly9zdGliLmVlLzMzNjU)| 91 | |제54호|2022년 4월 24일|[링크](https://event.stibee.com/v2/click/NTg2NTQvOTY3OTE5LzQzMy8/aHR0cHM6Ly9zdGliLmVlL1VMQjU)| 92 | |제55호|2022년 5월 08일|[링크](https://stibee.com/api/v1.0/emails/share/QoEokQev05672MzzpiFoD-FctsgYPw==)| 93 | |제56호|2022년 5월 22일|[링크](https://stibee.com/api/v1.0/emails/share/Jx8rC3t8WrM8QAGYgmy-PgSvTyNlO6Q=)| 94 | |제57호|2022년 6월 15일|[링크](https://stibee.com/api/v1.0/emails/share/Or8cEaBrL_3KgmAGIHjJ56VBroWZH-U=)| 95 | |제58호|2022년 6월 26일|[링크](https://stibee.com/api/v1.0/emails/share/KYyDgkuDvRMDMuXt1X9_xk_58f09QAg=)| 96 | |제59호|2022년 7월 10일|[링크](https://stibee.com/api/v1.0/emails/share/gcy_yS1ABfuOY_RHeZiGmcszNQ46v0c=)| 97 | |제60호|2022년 7월 24일|[링크](https://stibee.com/api/v1.0/emails/share/3WcHpq6du11W52TU9QNvcDUogxMsmac=)| 98 | |제61호|2022년 8월 14일|[링크](https://stibee.com/api/v1.0/emails/share/gSYXADQ5RICHEj_12sIO_hHU_RhSclk=)| 99 | |제62호|2022년 8월 28일|[링크](https://stibee.com/api/v1.0/emails/share/VaczsTJWLIapzajSxTKtaamDxbuNbwc=)| 100 | |제63호|2022년 9월 12일|[링크](https://stibee.com/api/v1.0/emails/share/r1mcmyRy8E_N0W3_iwGDbWZnXTCQpUo=)| 101 | |제64호|2022년 9월 25일|[링크](https://stibee.com/api/v1.0/emails/share/exJP-auY89TKkk3Gc48vPSFEKt9g95Q=)| 102 | |제65호|2022년 10월 09일|[링크](https://stibee.com/api/v1.0/emails/share/EK1VsIs96Jh8caAYKnXxnAi328qjIQ0=)| 103 | |제66호|2022년 10월 23일|[링크](https://stibee.com/api/v1.0/emails/share/aOV4AynK69mLZYbfeIy2zdbLcIay3EI=)| 104 | |제67호|2022년 11월 13일|[링크](https://stibee.com/api/v1.0/emails/share/W283b-AB4joYuL7JNtlPJQBukr27zQ8=)| 105 | |제68호|2022년 11월 27일|[링크](https://stibee.com/api/v1.0/emails/share/EoqlCxT5I6pDUUqj3cu8svcg55_A4ls=)| 106 | |제69호|2022년 12월 11일|[링크](https://stibee.com/api/v1.0/emails/share/7DSXqm-Cts6G7k-yO15j_uLFeIR1WF4=)| 107 | |제70호|2022년 12월 27일|[링크](https://stibee.com/api/v1.0/emails/share/dHR-pgjRaTx2sxRIZYLYlyNIg2mirRA=)| 108 | 109 |
110 |
111 | 112 | #### 2023년 제71호~93호 113 | 114 |
115 | 목록 펼쳐보기 116 |
117 | 118 | |호수|발행날짜|바로가기| 119 | |--|--|--| 120 | |제71호|2023년 1월 08일|[링크](https://stibee.com/api/v1.0/emails/share/jkNShiJQ8hSS6VNFDkwvLls0v7Rdvps=)| 121 | |제72호|2023년 1월 24일|[링크](https://stibee.com/api/v1.0/emails/share/9AiHX0M9sZvEK92zPGavI_-MbmvKA-k=)| 122 | |제73호|2023년 2월 12일|[링크](https://stibee.com/api/v1.0/emails/share/RN-a5Kywsfwd0VC4AnMmXQBNXohdVE8=)| 123 | |제74호|2023년 2월 26일|[링크](https://stibee.com/api/v1.0/emails/share/7RDvzCXjN5jbiPCjUjJd4Xe68aNBM38=)| 124 | |제75호|2023년 3월 12일|[링크](https://stibee.com/api/v1.0/emails/share/hSckmYQEss_t4TF6dW0TpnR8DQLo7xs=)| 125 | |제76호|2023년 3월 26일|[링크](https://stibee.com/api/v1.0/emails/share/fCGh0CBhNxY8X9eOxMeRd75kBCTXHIs=)| 126 | |제77호|2023년 4월 9일|[링크](https://stibee.com/api/v1.0/emails/share/I8M3Up3o_VNTmPLudjFRmifUnARAjq0=)| 127 | |제78호|2023년 4월 23일|[링크](https://stibee.com/api/v1.0/emails/share/DnBC2Rw-XnEfSCysBnNi1AiWQ5mMZvI=)| 128 | |제79호|2023년 5월 14일|[링크](https://stibee.com/api/v1.0/emails/share/t68ai7i8O4BBhKikreQlGi8nz6JeAh4=)| 129 | |제80호|2023년 5월 28일|[링크](https://stibee.com/api/v1.0/emails/share/bGVX_L3h6C_gO06u0_xP4aZRD8rzsus=)| 130 | |특집호외|2023년 6월 11일|[링크](https://stibee.com/api/v1.0/emails/share/CJE7tsIG2rb57Wty6mGlhUe1cqlvDeI=)| 131 | |제81호|2023년 6월 18일|[링크](https://stibee.com/api/v1.0/emails/share/CjVxM7wuUMVEyEAsf_htlNSlWdHpK0k=)| 132 | |제82호|2023년 7월 9일|[링크](https://stibee.com/api/v1.0/emails/share/SYJaok0-DDqmGEgQAvUsa5zml-yy6u4=)| 133 | |제83호|2023년 7월 23일|[링크](https://stibee.com/api/v1.0/emails/share/hYCCpPK6A84gsuTaLCJgM48ypLgXPpY)| 134 | |제84호|2023년 8월 13일|[링크](https://stibee.com/api/v1.0/emails/share/QjguKyJoZqpB4rAfmr0YTYUSNMZP4AA)| 135 | |제85호|2023년 8월 27일|[링크](https://stibee.com/api/v1.0/emails/share/6G3CUGs8lhbuBzKD7NRYASVugWYRzdo)| 136 | |제86호|2023년 9월 10일|[링크](https://stibee.com/api/v1.0/emails/share/i17nGylDFuavq04ueKTJKiEfm9PWOqg)| 137 | |제87호|2023년 9월 24일|[링크](https://stibee.com/api/v1.0/emails/share/TbJkr0T76RjJIZZTTBB9t8D32B9m7Zs)| 138 | |제88호|2023년 10월 8일|[링크](https://stibee.com/api/v1.0/emails/share/h7XADL8wHZ8H_ge0jxPM00wajnMvuxY)| 139 | |제89호|2023년 10월 22일|[링크](https://stibee.com/api/v1.0/emails/share/KQ2EsRsmqx2shtUAQAMBlgsntJVMEHU)| 140 | |제90호|2023년 11월 12일|[링크](https://stibee.com/api/v1.0/emails/share/krzvXdEKhVlIa5w_dogDAmVnN6u5kEU)| 141 | |제91호|2023년 11월 26일|[링크](https://stibee.com/api/v1.0/emails/share/tl5bN4SuxCNvmzMDKogXVTZ8n98InIU)| 142 | |제92호|2023년 12월 10일|[링크](https://stibee.com/api/v1.0/emails/share/5ya0iEbe76StLXw7L9lBhYN6JC--Gq0)| 143 | |제93호|2023년 12월 24일|[링크](https://stibee.com/api/v1.0/emails/share/dq1zTQ4jeIb2QjP6aw2ZIWizIKZc3F8)| 144 | 145 |
146 |
147 | 148 | 149 | #### 2024년 제94호~117호 150 | 151 |
152 | 목록 펼쳐보기 153 |
154 | 155 | |호수|발행날짜|바로가기| 156 | |--|--|--| 157 | |제94호|2024년 1월 14일|[링크](https://stibee.com/api/v1.0/emails/share/LnBTYcDrRyIoBNTYfFAhooI_9xpLMKI)| 158 | |제95호|2024년 1월 28일|[링크](https://stibee.com/api/v1.0/emails/share/PkzDVPtQAlwMUqLHUAcwZBIJUHShirg)| 159 | |제96호|2024년 2월 11일|[링크](https://stibee.com/api/v1.0/emails/share/pMzM9Y3b-nCK0JBRE_bGVX1C824BtLA)| 160 | |제97호|2023년 2월 25일|[링크](https://stibee.com/api/v1.0/emails/share/jXhaOcjABOhqhJbxRHut2S66bDDbToI)| 161 | |제98호|2024년 3월 10일|[링크](https://stibee.com/api/v1.0/emails/share/lVyc3RF4xcOEfqkod67X38LnTaOJ5Qo)| 162 | |제99호|2024년 3월 24일|[링크](https://stibee.com/api/v1.0/emails/share/P7YofI2dbxLQXfUdz4PXd_cCfgfXsfk)| 163 | |제100호|2024년 4월 14일|[링크](https://stibee.com/api/v1.0/emails/share/QfW-ZF9S-rPHTt1rXu-sbJdcJ1SCVZg)| 164 | |제101호|2024년 4월 28일|[링크](https://stibee.com/api/v1.0/emails/share/rPSXwpa878AE72aohk3nEUSgK9e0sno)| 165 | |제102호|2024년 5월 12일|[링크](https://stibee.com/api/v1.0/emails/share/iH-SqRwB9XZStyyCO3qFYq3QMEwJGJ4)| 166 | |제103호|2024년 5월 26일|[링크](https://stibee.com/api/v1.0/emails/share/KG74OnSYYOv_-kdicyOYVmmmOEW98d4)| 167 | |제104호|2024년 6월 11일|[링크](https://stibee.com/api/v1.0/emails/share/2k6GpiYfTS78UIhi5di3ceb19kyuDsY)| 168 | |특집호외|2024년 6월 16일|[링크](https://stibee.com/api/v1.0/emails/share/6qJ6CmEQa00eNUEO6tVCHf_OBmbHgyQ)| 169 | |제105호|2024년 6월 23일|[링크](https://stibee.com/api/v1.0/emails/share/aGWpFXTxbEpCY4eZBZ4yVzh2pJMbMwo)| 170 | |제106호|2024년 7월 14일|[링크](https://stibee.com/api/v1.0/emails/share/0CvfljbrjGOzDz3t6s71jjwU2Rv31BM)| 171 | |제107호|2024년 7월 28일|[링크](https://stibee.com/api/v1.0/emails/share/LD0p_zeDkpsf43yFELEzW4VRrpIMSyw)| 172 | |제108호|2024년 8월 11일|[링크](https://stibee.com/api/v1.0/emails/share/nS0tUa6Aj3TvQRQQcM8IwwCcRo3AQW8)| 173 | |제109호|2024년 8월 25일|[링크](https://stibee.com/api/v1.0/emails/share/18J8XXqfAmCn02hsKUwkluXrAQZnoQc)| 174 | |제110호|2024년 9월 9일|[링크](https://stibee.com/api/v1.0/emails/share/hWe65GT8BVAE3cTHnQLhfEHmkb0kdd4)| 175 | |제111호|2024년 9월 22일|[링크](https://stibee.com/api/v1.0/emails/share/NyMFpvv5GBJ5FMv18NGcldd6O-HVrrY)| 176 | |제112호|2024년 10월 13일|[링크](https://stibee.com/api/v1.0/emails/share/GMoSdXfek7LAKmsXlmAFxLa8IRbtB_A)| 177 | |제113호|2024년 10월 27일|[링크](https://stibee.com/api/v1.0/emails/share/wU81iRDY96oFNvx-aufH47JIcY_1UTQ)| 178 | |제114호|2024년 11월 11일|[링크](https://stibee.com/api/v1.0/emails/share/eTs59IPU2ck8R--GQOngr_Co3WvshUM)| 179 | |제115호|2024년 11월 24일|[링크](https://stibee.com/api/v1.0/emails/share/Ca_SJ7c2Lhuwxg24Pf57CYZp14VJHZQ)| 180 | |제116호|2024년 12월 8일|[링크](https://stibee.com/api/v1.0/emails/share/2K0FvX0tTgw3AzkxLIgp5qP7RiAVVyk)| 181 | |제117호|2024년 12월 22일|[링크](https://stibee.com/api/v1.0/emails/share/cCeTUNF_r9fzVAj05Hs57nOjoM3UjyE)| 182 | 183 |
184 |
185 | 186 | #### 2025년 제118호~ 187 | |호수|발행날짜|바로가기| 188 | |--|--|--| 189 | |제118호|2025년 1월 12일|
| 190 | 191 | ## 편집자 192 | 193 | 김정(godrm) 194 | 195 | ## 운영 방식 196 | 197 | 1. 매호를 발행하기 전에 수집하기 위해서 이슈를 만듭니다. 198 | 2. 국내외 애플 개발자 또는 iOS, Swift 관련 최신 블로그나 발표자료, 소식을 수집합니다. 199 | 3. 수집된 자료를 바탕으로 뉴스레터에 포함할 지 여부를 편집자들이 결정합니다. 200 | 4. 수집한 자료를 몇 가지 카테고리로 나누고, 내용을 요약하거나 코멘트를 붙여서 정리를 합니다. 201 | 5. 발행일 직전에 메일링 서비스에 템플릿으로 옮기고 구독자들에게 발송합니다. 202 | 203 | ## 향후 계획 204 | 205 | - 해외 자료가 많고 좋은 것도 많지만, 한글 자료를 최우선적으로 공유하려고 합니다. 206 | - 이전 자료지만 의미있는 것을 발굴해서 공유할 예정입니다. 207 | - 레츠스위프트와 비슷한 외부 행사에 대한 소식도 전해드릴 예정입니다. 208 | - 회사별로 iOS 개발팀에 찾아가서, 개발문화와 개발 과정에서 중요하게 생각하는 점들을 인터뷰할 예정입니다. 209 | - 운영비용이 아직은 크지 않지만, 비용을 충당하기 위한 소규모 스폰서 내용도 포함할 수 있습니다. 210 | 211 | ## 라이센스 212 | 213 | 각 뉴스레터에 링크된 관련 글이나 자료는 링크에 있는 저작권을 따릅니다. 214 | 그 외에 본 저장소에서 작성한 내용에 대한 저작권은 레츠스위프트에 있습니다. 215 | 216 | ## 문의하기 217 | 218 | news@letswift.kr 219 | -------------------------------------------------------------------------------- /issue#1.md: -------------------------------------------------------------------------------- 1 | 2 | 반갑습니다. 레츠스위프트 뉴스레터를 시작합니다. 😋 3 | 4 | 첫 번째 뉴스레터라서 도메인 설정부터 메일링 시스템, 자료 수집과 자료를 정리하고 이 메일을 받으실 때까지 고민꺼리가 많았습니다. 국내 iOS 소식을 전하는 다양한 채널이 부족한 상황에서, 뉴스레터를 시작해주셨던 강사룡님께 다시 한 번 감사드립니다.👏👏👏 5 | 6 | 전세계에서 코로나19 바이러스로 인해 놀랍고도 슬픈 일들이 많아지고 있습니다. 지난주 목요일에 예정되어 있던 레츠스위프트 판교 모임도 3월로 잠정 연기됐습니다. 7 | 이런 상황에서 iOS 관련 소식과 커뮤니티 모임을 꾸준히 이어가는 것이 쉽지 않을 겁니다. 온라인에서 협업과 활동이 활발한 개발자 커뮤니티가 한 단계 성장하는 계기가 되었으면 합니다. 8 | 9 | 10 | 뉴스레터 발행은 매주 발행하는 것을 목표로 하겠지만, 당분간은 격주로 발행할 것 같습니다. 뉴스레터 발행을 위해서 여러 명이 협업하는 깃헙 저장소를 만들었습니다. 새로운 뉴스레터를 발행하기 위해서 자료를 수집하거나 토론하는 과정을 이슈로 관리하고 있습니다. [뉴스레터 저장소](https://github.com/letswiftconf/newsletter)에 여러분 누구나 이슈에 등록도 가능합니다. 👉 11 | 12 | 앞으로 다양한 시도를 하려고 합니다. 새로운 소식, 유물발굴, 해외 소식도 모아서 전달하는 것 뿐만 아니라 회사 채용이나 행사 안내 스폰서십도 가능할 것 같습니다. 레츠스위프트 2019에서 가장 관심이 많았던 것을 해소하기 위해, 제가 회사를 방문해서 기업 문화를 인터뷰하는 것도 생각하고 있습니다. 또 다른 아이디어가 있으시면 제안해주셔도 좋습니다. 13 | 앞으로도 많은 관심 부탁드립니다. 14 | 15 | 메일링 리스트 가입을 위해서 http://bit.ly/letswift-newsletter 링크를 공유해주시면 됩니다. 16 | 17 | --- 18 | 19 | 뉴스레터 발행은 매주 발행하는 것을 목표로 하겠지만, 당분간은 격주로 발행할 것 같습니다. 20 | 뉴스레터 발행을 위해서 깃헙에 저장소를 만들었습니다. 새로운 뉴스레터를 발행하기 위해서 자료를 수집하거나 토론하는 과정을 이슈로 관리하고 있습니다. 여러분 누구나 이슈에 등록도 가능합니다. 21 | [뉴스레터 저장소](https://github.com/letswiftconf/newsletter) 22 | 23 | 앞으로 다양한 시도를 하려고 합니다. 새로운 소식, 유물발굴, 해외 소식도 모아서 전달하는 것 뿐만 아니라 회사 채용이나 행사 안내 스폰서십도 가능할 것 같습니다. 24 | 레츠스위프트 2019에서 가장 관심이 많았던 것을 해소하기 위해, 제가 회사를 방문해서 기업 문화를 인터뷰하는 것도 생각하고 있습니다. 25 | 26 | --- 27 | 28 | [애플] [Sign with Apple 앱스토어 심사지침](https://developer.apple.com/kr/app-store/review/guidelines/#sign-in-with-apple) 29 | 30 | 4월부터 소셜 로그인을 하거나 다른 서비스로 로그인 하는 경우는 Sign with Apple을 강제한다고 했었는데 그 시점이 다가오고 있습니다. 31 | 준비중인 기업들이 많을텐데, 디자인 가이드 상으로 꼭 Sign with Apple 버튼을 동일하게 만들어야 하는건 아니라고 하더군요. 신규 앱이 아니더라도 이제 과감하게 도입해야 하는 시점일까요? 32 | 33 | 34 | [애플] Swift Playground for Mac [다운로드](https://apps.apple.com/kr/app/swift-playgrounds/id1496833156?mt=12) 35 | 36 | 아이패드 전용 앱이던 Swift Playground 앱을 카탈리스트로 변환해서 맥용으로 출시했네요. 실행해보기 완전 동일한 버전인 것 같습니다. 37 | 심각한 버그가 있는데, 아이패드 앱도, 새로 나온 맥용 앱도 iCloud 옵션을 사용하면 새로운 플레이그라운드를 열지 못하고 크래시됩니다 🤯 38 | 사용하시려면 iCloud 에서 Swift Playground를 끄고 사용하세요. 39 | 40 | 41 | [새로운 소식] [Alamofire 5.0.0 업데이트!](https://github.com/Alamofire/Alamofire/releases/tag/5.0.0) 42 | 43 | Alamofire의 메이저 버전 업데이트가 있었습니다. 애플이 추천하는 방향에 맞춰 DispatchQueue 적용하고 구조를 개선하기 위해서 코어를 다시 구현했다고 합니다. Decodable을 기본 지원하고, EventMonitor, RequestAdapter, RequestInterceptor 등 세부 과정을 제어하기 위한 인터페이스들이 추가되었습니다. 그 뿐만 아니라 Result 처리에 Swift 5 표준 타입을 사용하면서 이런저런 변화가 포함되어 있습니다. 44 | 보다 자세한 내용은 [마이그레이션 가이드](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%205.0%20Migration%20Guide.md)를 참고하세요. 45 | 46 | [류성두 블로그] [WWDC 세션 비디오, 무엇부터 어떻게 볼까?](https://sungdoo.dev/retrospective-or-psa/wwdc-watch-guide/) 47 | 48 | iOS 개발자들이 고민하는 문제의 답이 WWDC 자료에 이미 있는 경우가 많습니다. 물론 한글 자막도 없고 영어 압박이 있습니다. 그래서 어떻게 시작하면 좋은지 알려주고 있습니다. 49 | 50 | 51 | [민소네 블로그] [WWDC 2019 Binary Frameworks](http://minsone.github.io/ios/mac/ios-wwdc-2019-binary-frameworks-in-swift-little-summary-and-translate) 52 | 53 | 스위프트 5에서 ABI가 정해지고 나서 XCFramework 을 추천하고 있습니다. 54 | 뭐가 좋아진걸까요? WWDC 2019에서 발표한 내용을 민소네님께서 번역해서 정리해주셨습니다. 55 | 56 | 57 | [필권 블로그] [대수적으로 알아보는 타입 체계](https://pilgwon.github.io/post/episode-4-algebraic-data-types) 58 | 59 | 해외 블로그를 즐겨 번역해주시는 필권님이 데이터 타입에 대해 새로운 시각을 설명해셨습니다. struct와 enum 타입이 대수 관점에서 어떻게 다른지 살펴보세요. 60 | 61 | 62 | [해리 블로그] [PropertyWrapper를 이용한 값처리](https://medium.com/harrythegreat/swift-properywrapper를-이용한-값처리-a8ef0d87e8e) 63 | 64 | 이미 다른 자료로도 많이 보셨던 PropertyWrapper에 대한 글입니다. 처음 접하는 개발자도 이해하기 쉽게 쓰여져 있다고 생각해 공유합니다. PropertyWrapper의 사용 방법과 예제가 포함되어 있습니다. 65 | 66 | 67 | [Zedd 블로그] [Standard Library Preview Package](https://zeddios.tistory.com/m/962) 68 | 69 | 아직 Swift 배포 버전에 포함되지는 않았지만, Swift Evolution을 통과한 기능을 미리 사용해 볼 수 있는 Swift Package에 대해 친절한 zedd님 설명을 담고 있습니다. 70 | 71 | 72 | [해외 블로그] [iOS 성능에 대한 숨겨진 팁들](https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/) 73 | 74 | 전직 애플 개발자가 정리한 성능 개선을 위한 팁입니다. UILabel 조차 무겁다면 뭘 써야 할까요? 75 | 76 | --- 77 | 78 | 레츠스위프트 뉴스레터 (Let'Swift NewsLetter) 79 | 제1호 발행일 : 2020년 2월 23일 80 | 81 | [메일 내용](https://stibee.com/api/v1.0/emails/share/N0jv_6HH4tv3M6NK-8QumAhhL6TDqQ) -------------------------------------------------------------------------------- /issue#2.md: -------------------------------------------------------------------------------- 1 | ## 레츠스위프트 뉴스레터 2 | ##### 제2호 2020년 3월 8일 3 | 4 | ![img](https://s3.ap-northeast-2.amazonaws.com/img.stibee.com/24733_1583574350.png) 5 | 6 | JK 님을 위한 iOS / Swift 관련 소식을 담고 있는, 따끈따끈한 뉴스레터가 도착했습니다. 7 | 8 | 새로운 뉴스레터를 보내기까지 지난 2주가 짧게 느껴지기도 하면서, 재택 근무가 많아져서 다른 한 편으로 길게도 느껴집니다. 9 | JK 님은 2주동안 어떤 일이 있으셨나요? 집에만 있다보니 무인도에 갇힌 톰행크스처럼 변하고 있습니다. 10 | 그나마 소프트웨어 업계는 재택을 많이 하지만 그렇지 않은 회사들도 많은 것 같습니다. 11 | 판교 밋업도 아직 못하고 있으니, 모두가 건강하고 안전하지길 기원해봅니다 🙏🏻 12 | 13 | 누구나 함께하는 뉴스레터 저장소 👉 14 | 메일링 리스트 가입은 가입하기 링크 주변에 소개해주세요 🤩 15 | 16 | ---- 17 | 18 | ## 🤘WWDC 2020 취소되나🤘 19 | 20 | 자극적인 제목이긴 합니다만, MWC나 페이스북 F8, 구글 I/O 등 국제 컨퍼런스나 행사가 줄줄이 취소되고 있습니다. 21 | 헤어포스 원과 함께 하는 즐거운 키노트가 그리울 것 같습니다. 22 | 가고싶어도 쉽게 못 가서 이미 원격에서 보는 게 익숙하기도 합니다 🤦🏻‍♂️ 23 | 24 | 다음 뉴스레터를 보낼 쯤이면 관련 소식이 올라오지 않을까 예상해봅니다. 25 | 이제 본격적으로 애플 iOS / Swift 관련 소식을 알아보도록 하겠습니다. 26 | 27 | ---- 28 | 29 | ## 🇰🇷 국내 소식들 30 | 31 | [wayne님 블로그] [Moya를 시작하는 사람들을 위한 글](https://mildwhale.github.io/2020-03-07-getting-started-with-moya/) 32 | 테스트를 좀 더 잘하고 싶지만 어디부터 시작해야 할 지 어렵다면 Moya를 도입해보세요. 33 | 34 | [코드스쿼드 블로그] [Codable 과 NSCoding 프로토콜의 차이점](https://medium.com/@codesquad_yoda/codable-vs-nscoding-%EC%B0%A8%EC%9D%B4%EC%A0%90-4b47e240c0b8) 35 | 새로운 소식들을 전달하다가, 오랜만에 직접 블로그를 작성해봤습니다. 상속 관계가 있어 다형성 동작이 필요한 클래스를 인코딩/디코딩했을 때 Codable에서는 다이나믹 타입 정보가 포함되지 않아 다형성이 동작하지 않는 경우를 설명합니다. 이런 경우는 NSCoding과 NSKeyedArchiver 조합을 사용해야만 합니다. 글 하단에는 설명 동영상도 포함되어 있습니다. 36 | 37 | [노수진님 블로그] [iOS 개발자 싱가폴 이직기](https://soojin.ro/blog/singapore) 38 | 이맘때 연봉 협상을 하고나면 개발자들 마음이 싱숭생숭 해진다더네... 이런 거 공유해도 되는지 모르겠습니다만 재밌고 유익한 글입니다 😋 39 | 이 글을 보고 편집자 중에 한 분은 본인이 면접관일 때 이직사유를 물어본 것을 후회한다고 하셨습니다 :) 40 | 41 | 덧붙여서 이직 과정에서 준비한 오픈소스도 같이 공개해 주셨습니다. 프로젝트 이름이 직관적인 `바라봐(Baraba)` 입니다. https://github.com/nsoojin/baraba 42 | ARKit 이나 AVFoundation을 써서 사용자 얼굴을 트래킹하다가, 아이폰을 바라보고 있을때 화면에 테이블뷰, 컬렉션뷰 등 스크롤뷰 계열을 자동으로 스크롤해주는 라이브러리입니다. 단 코드 3줄이면 쉽게 적용해볼 수 있다고 합니다! 43 | 44 | [국내 도서] 제이펍에서 [핵심만 골라 배우는 SwiftUI 기반 iOS 프로그래밍](https://jpub.tistory.com/m/1018) 책을 출간했습니다. 다들 관심이 많은데 이제 SwiftUI 저변이 넓어질 수 있을까요? [샘플 미리보기](https://jpub.tistory.com/attachment/cfile2.uf@99D45B4D5E6092D2039764.pdf)도 있네요. 45 | 46 | ---- 47 | 48 | ## ✈️ 해외 소식들 49 | 50 | [스위프트 포럼] 드디어 [윈도우에서 스위프트 하위 Foundation을 빌드할 수 있게 되었다는 소식](https://forums.swift.org/t/swift-soars-ever-higher/34036)입니다. 51 | 정확히는 리눅스 테스트 케이스가 1714개 인데, 1706를 통과했다고 하네요. 아직 UNIX 계열 API 문제가 남아있다고 합니다. 52 | 정작 리눅스 계열도 macOS와 다르게 안되는게 남아있는데, 그래도 꽤나 진전이 되었네요. Visual Studio 에서 직접 스위프트를 컴파일할 수 있는 날이 곧 오나봅니다. 53 | 54 | [오픈소스] 며칠전에 애플에서 main argument 파싱을 도와주는 오픈 소스 저장소를 공개했습니다. https://github.com/apple/swift-argument-parser 55 | 재빠르게 이걸 사용하는 예제를 설명한 블로그 자료도 올라왔습니다. 한 번 살펴보시죠. 56 | https://www.avanderlee.com/swift/command-line-tool-package-manager 57 | 58 | [해외 블로그] [SwiftUI에서 데이터 흐름 관점으로 설명하는 글](https://kean.github.io/post/swiftui-data-flow) 59 | 선언적인 뷰를 만들고 @published, @ObservedObject, @binding, @State, @Environment 활용해서 데이터가 어떻게 전달되는지 설명해줍니다. 60 | 61 | [오픈소스] 아이콘팩토리에서 만든 마크다운 지원하는 [AttributedString](https://github.com/chockenberry/MarkdownAttributedString) 62 | 마크다운을 표시하려고 할 때 마땅한게 없었던 분들께 도움이 될 것 같아요. 63 | 64 | [오픈소스] 기존 Date/Time 보다 더 직관적인 [스위프트 날짜/시간 프레임워크](https://github.com/davedelong/time) 65 | 시간을 다스리는 닥터스트레인지가 되고 싶은 개발자(?)가 Time 이라는 스위프트 패키지로 배포하는 오픈소스를 공개했습니다. 지난 2년동안 더 직관적인 프레임워크를 만드는 걸 목표로 작업했다고 하네요. 66 | 67 | [기타] 10년전 git-flow를 만들었던 Vincent Driessen가 며칠전 [회고 문구를 기존 git-flow 소개글](https://nvie.com/posts/a-successful-git-branching-model/) 맨 앞에 추가했습니다. 역시 모든 것을 만족할 수 있는 방법은 없나 봅니다. 유명하다고 무조건 받아들여서 사용해야 하는 건 아니니까요. 68 | 69 | > If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow (like GitHub flow) instead of trying to shoehorn git-flow into your team. 70 | > To conclude, always remember that panaceas don't exist. Consider your own context. Don't be hating. Decide for yourself. 71 | 72 | [기타] [iOS 개발자 설문조사](https://iosdevsurvey.com/2019/) 73 | iOS 개발자 설문조사 중 최대 규모(2,290명)인 The iOS Developer Community Survey에서 결과를 발표했습니다. 주목할만한 내용을 꼽아보자면, 74 | 평균적인 iOS 개발자는 상용 앱 개발에서 8:2 정도의 비율로 Swift:Objective-C를 섞어 쓰고 있으며, 42%가 모든 코드를 Swift로 짜고 있다고 합니다. 75 | Swift 언어에 대한 평균 만족도는 8.3점(10점 만점)이었으며, 69.9%가 성숙기에 접어들었다고 평가했고, 14.1%만이 써드파티 라이브러리가 Objective C와의 호환성을 유지해야한다는데 동의했습니다. 76 | 65%의 응답자가 최근 1년 이내에 개인 앱을 앱스토어 올린 경험이 있다고 합니다. 그중 44%는 무료 앱이었다고 하고, 14.4%가 1년에 1,000 달러 이상 수익을 올린다고 합니다. 77 | AR기술 기반 비즈니스의 현황과 전망을 묻는 문항에 대한 평균 점수는 각각 3.3, 3.1으로 다소 비관적이었지만, AR 기술에 대한 자체에 대한 관심은 4.6점으로 조금 더 높았습니다. 78 | 79 | [기타] [2020년판 iOS 개발자 면접 질문](https://ordinarycoding.com/articles/ios-developer-interview-questions-2020/) 80 | 개발 면접에서 나올 수 있는 67개의 질문을 정리했습니다. 항상 기술적 호기심을 유지하고 있는 중급 정도의 개발자라면 어렵지 않게 대답할 수 있을 질문들이 많아 보입니다. 경험 많은 면접관은 단편적인 지식을 묻는 게 아니겠죠? 81 | 이런 질문으로 시작해서 기술의 장단점, 특징에 대한 분석, 왜 그런 개념이 생겼는지 배경이나, 무엇보다 그것의 내부가 어떻게 구현되어 있는지 등 심층적으로 파고들게 됩니다. 82 | 83 | [기타] LLVM 하위 그룹에 머신러닝 관련 처리를 위한 MLIR 관련 뉴스레터가 시작됐네요. 84 | https://llvm.discourse.group/t/mlir-news-1st-edition-2-21-2020/544 85 | 86 | [기타] [웹 어셈블리가 스위프트 패키지 매니저의 플랫폼에 추가](https://github.com/apple/swift-package-manager/pull/2640)될 것 같습니다. 87 | 이걸 보고나서야 찾아보니 WebAssembly support for the Swift(https://swiftwasm.org) 라는 프로젝트가 활발하네요. 프로젝트 홈페이지처럼 스위프트 코드를 웹 브라우저에서 wasm 기반으로 바로 실행할 수도 있습니다. 리뷰 대기중인 컨트리뷰터가 익숙하다 했더니 2019 try! Swift Tokyo 2019에 swift metatype에 대한 발표를 하셨던 분이시군요. (참조 https://kateinoigakukun.hatenablog.com/entry/2019/03/22/184356) 88 | 89 | ---- 90 | 91 | ## 📌짜투리 소식들 92 | 93 | [도구] Xcode 에서 [Internal Debug 메뉴를 활성화하는 방법](https://gist.github.com/dsabanin/e1fe9bdc03d429d6cbcc7be13add9e6d)이라고 합니다. 94 | 우리에게 이런 메뉴가 정말 필요할까요? 🤷🏻‍♀️힘내라 Xcode개발팀 💪🏻 95 | 96 | [도구] Xcode 빌드 설정 값에 대한 설명을 모아놓은 사이트 https://xcodebuildsettings.com 97 | 이걸 보니 예전에 Xcode 책에 정리했던 내용이 있던 것 같은데, 바뀐 부분도 있으니 자료를 다시 살려봐야겠네요. (언제한다고 말하지 않았...) 98 | 99 | [디자인] 디자이너가 정리한 iOS UI 디자인 용어 https://link.medium.com/IemomVQcq4 100 | iOS개발자 여러분, 디자이너가 물어보면 이렇게 알려주면 되나봅니다. 두둥 101 | 102 | [디자인] 디자이너 한 명에게 영감을 받아서 시작된 [뉴모피즘(Neumorphism)은 새로운 UI 트랜드가 될 수 있을까?](https://brunch.co.kr/@cliche-cliche/32) 아직 대유행을 하지 않지만 관심들이 많은 것 같습니다. [여기 사이트](https://neumorphism.io/#55b9f3)에서는 CSS로 뉴모피즘 디자인을 바로바로 확인할 수 있습니다. 103 | iOS 7부터 바뀌어버린 UI 디자인을 언제쯤 바꿀까요? iOS 13에서 다크모드가 들어갔었으니까, 갑자기 iOS 14에서 테마를 지원해준다거나 그러지는 않겠죠? 컬러 두 세트 지원하는 게 상당히 귀찮은 일이던데... 104 | 105 | [디자인-해외] [그림으로 설명하는 Apple iOS 13 디자인 가이드라인](https://learnui.design/blog/ios-design-guidelines-templates.html) 106 | 애플 HIG(Human Interface Guideline)은 UI구현을 위해 반드시 숙지하고 있어야 할 내용이지만, 글이 너무 길어서 영미인조차도 읽기 어려워하는 문서입니다. 이를 그림으로 알기 쉽게 설명하는 가이드라인 해설 문서가 최근 업데이트 되었습니다. 107 | -------------------------------------------------------------------------------- /json/news-48.json: -------------------------------------------------------------------------------- 1 | {"sequence":48,"releaseAt":664556400,"items":[{"title":"Account deletion within apps required starting January 31","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=mdkbobfo","comments":"새로운 앱 스토어 리뷰 가이드라인 5.1.1에 따르면 1월말부터 앱 내에서 계정 삭제를 지원해야 합니다.\n"},{"title":"Advanced Audio Graphs in Swift","keywords":["Framework","AXChart"],"location":"https:\/\/betterprogramming.pub\/advanced-audio-graphs-in-swift-e43e048840cd","comments":"iOS15에 추가된 Audio Graphs 관련 AXChart에 대한 글입니다. 저도 아직 전혀 써보지 않은 프로토콜이네요"},{"title":"Airbnb’s Page Performance Score on iOS","keywords":["Testing"],"location":"https:\/\/medium.com\/airbnb-engineering\/airbnbs-page-performance-score-on-ios-36d5f200bc73","comments":"Airbnb 작년 12월 블로그 - 페이지 성능 점수라는 개념을 iOS에서 정의하고 측정하는 과정을 설명합니다"},{"title":"An Approach for Migrating From Objective-C to Swift","keywords":["Swift","Objective-C"],"location":"https:\/\/www.steveonstuff.com\/2022\/01\/13\/migrating-from-objc-to-swift.html","comments":"오브젝티브-C를 Swift로 마이그레이션 접근법"},{"title":"App Design Inspiration — #40","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-40-2e01ad3d5f2f","comments":""},{"title":"App Design Inspiration — #41","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-41-351fe5af7dff","comments":""},{"title":"App Development Inspiration — #109","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-109-a724b76a383","comments":""},{"title":"App Development Inspiration — #110","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-110-c977e836362f","comments":""},{"title":"Asynchronous Calls in Swift 5.5 — Tasks and Task Groups","keywords":["Swift"],"location":"https:\/\/betterprogramming.pub\/exploring-asynchronous-tasks-and-task-groups-in-swift-5-5-8dd7bc639c8c","comments":"비동기 Task와 TaskGroup\n"},{"title":"Automatic Reference Count & Memory Management: Swift","keywords":["Swift","영어"],"location":"https:\/\/faun.pub\/automatic-reference-count-memory-management-swift-b31d1b094159","comments":"ARC와 메모리 관리"},{"title":"Avoid “Keyboard hiding TextField” Problem in iOS using Protocol","keywords":["UIKit","영어"],"location":"https:\/\/medium.com\/@satheeshkannan.ios\/avoid-keyboard-hiding-textfields-in-ios-using-protocol-71a4676aa5a2","comments":"TextField에 키보드가 보이는 동안 스크롤하려다 키보드가 사라지는 현상을 프로토콜로 추상화하기"},{"title":"BackLog for Mac","keywords":["OpenSource"],"location":"https:\/\/eternalstorms.at\/backlog\/","comments":"BackLog - 맥에서 특정 로그 메시지를 보기 위한 도구입니다"},{"title":"Building a Responder Chain Using the SwiftUI View Hierarchy","keywords":["SwiftUI"],"location":"https:\/\/betterprogramming.pub\/building-a-responder-chain-using-the-swiftui-view-hierarchy-2a08df23689c","comments":"뷰 계층을 이용해서 응답체인 구성하기"},{"title":"Building a Simple Movie App with Unit Tests in Swift","keywords":["Testing"],"location":"https:\/\/medium.com\/@alpertufan0\/building-a-simple-movie-app-with-unit-tests-in-swift-a19c52b0e76d","comments":"단순한 영화 앱을 단위 테스트하기"},{"title":"CarPlay apps without Apple’s blessings on a real car","keywords":["DeveloperTools"],"location":"https:\/\/fotidim.com\/carplay-apps-without-entitlements-in-an-actual-car-37a708758262","comments":"카-플레이 개발환경에 대한 글입니다."},{"title":"CloudKit, Sharing and Concurrency","keywords":["Framework","CloudKit"],"location":"https:\/\/marklucking.medium.com\/cloudkit-sharing-and-concurrency-ba86cc0bcc8c","comments":"CloudKit 관련 WWDC 2021 예제 코드를 async\/await 방식으로 수정한 사례입니다"},{"title":"Color System in SwiftUI","keywords":["SwiftUI"],"location":"https:\/\/rudrank.blog\/color-system-swiftui%0A%0A","comments":"스위프트UI 컬러 시스템"},{"title":"Create custom keyboards in iOS","keywords":["Framework"],"location":"https:\/\/levelup.gitconnected.com\/custom-keyboards-in-ios-affb62668d48","comments":"키보드 익스텐션으로 커스텀 키보드 만들기"},{"title":"Dependency Management in iOS","keywords":["DeveloperTools"],"location":"https:\/\/blog.devgenius.io\/dependancy-management-for-ios-27dd681d7ea0","comments":"패키지 의존성 관리도구 비교"},{"title":"Design Code for Unit Testing","keywords":["Testing"],"location":"https:\/\/levelup.gitconnected.com\/art-of-unit-testing-with-swift-40bac64c1d9b","comments":"단위 테스트를 하기 위한 설계"},{"title":"Explore the latest videos","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=c63z27o8","comments":"최근 테크토크 영상들이 올라왔습니다\n"},{"title":"File uploads with Swift","keywords":["Framework"],"location":"https:\/\/medium.com\/@chris_42047\/file-uploads-with-swift-d021e4012c12","comments":"파일 업로드\/다운로드 기능 소개\n"},{"title":"Fluent syntax extensions in Swift","keywords":["Swift","영어"],"location":"https:\/\/alejandromp.com\/blog\/fluent-syntax-extensions-in-swift\/","comments":"extension 문법에 대한 고찰\n"},{"title":"Frame vs. Bounds in iOS: Implementing a Visual Demonstration","keywords":["UIKit"],"location":"https:\/\/gabth.medium.com\/frame-vs-bounds-in-ios-implementing-a-visual-demonstration-1534a143ed1e","comments":"Frame과 Bound 개념 코드로 확인하기"},{"title":"GitHub Actions for iOS","keywords":["DeveloperTools"],"location":"https:\/\/medium.com\/nye-health\/github-actions-for-ios-81f705eba0db","comments":"iOS를 위한 깃헙 액션 워크플로우 설정"},{"title":"Guard statements in Swift explained with code examples","keywords":["Swift"],"location":"https:\/\/www.avanderlee.com\/swift\/guard-statements\/","comments":"guard 문법 살펴보기\n"},{"title":"How to Host Your DocC Documentation on the Web","keywords":["DeveloperTools"],"location":"https:\/\/betterprogramming.pub\/how-to-host-your-docc-documentation-on-the-web-3561874ffd0a","comments":"웹에서 DocC 문서 호스트하기"},{"title":"How to Retry Network Requests Using Swift’s Combine","keywords":["Framework"],"location":"https:\/\/betterprogramming.pub\/how-to-retry-network-requests-using-swifts-combine-5ac3f093adc5","comments":"콤바인으로 네트워크 요청 재시도하기"},{"title":"How to Use Swift Functions For Dependency Injection","keywords":["Swift","영어"],"location":"https:\/\/betterprogramming.pub\/use-functions-for-dependency-injection-in-swift-a885f38d8ed0","comments":"의존성 주입을 위한 함수 다루기. 내용을 살펴보면 클로저를 주입하는 방식을 소개하고 있습니다"},{"title":"How to create a nice custom loading screen animation for your iOS app using Swift 5","keywords":["UIKit"],"location":"https:\/\/medium.com\/@margels\/nice-loading-screen-animation-with-swift-5-0-d9b2794e294e","comments":"나만의 로딩 화면 애니메이션 구현하기"},{"title":"How to quickly test apps in other languages with an Xcode scheme","keywords":["Testing"],"location":"https:\/\/sarunw.com\/posts\/how-to-test-apps-in-other-languages-with-xcode-scheme\/","comments":"다른 언어로 테스트하기 위해 스킴 설정\n"},{"title":"Implementing iOS Alerts With The Factory Pattern","keywords":["Architecture","Factory"],"location":"https:\/\/betterprogramming.pub\/a-better-way-to-implement-alerts-on-your-swift-ios-projects-70de896bcdc2","comments":"팩토리 패턴으로 Alerts 생성하기"},{"title":"Injecting JavaScript in iOS WebViews","keywords":["Framework"],"location":"https:\/\/betterprogramming.pub\/injecting-javascript-in-ios-webviews-7bc664668bd2","comments":"웹뷰에 자바스크립트 주입하기"},{"title":"Introduction to Realm Sync for iOS","keywords":["Framework","Realm"],"location":"https:\/\/towardsdev.com\/introduction-to-realm-sync-for-ios-add466dcd278","comments":"Realm Sync 서비스로 데이터베이스 동기화처리하기"},{"title":"Localization on iOS","keywords":["DeveloperTools"],"location":"https:\/\/blog.hipolabs.com\/localization-on-ios-58b92c964e90","comments":"로컬라이즈를 지원하기 위한 방법 소개"},{"title":"MVVM Pattern in SwiftUI: A Practical Example","keywords":["Architecture","MVVM"],"location":"https:\/\/blog.devgenius.io\/mvvm-pattern-in-swiftui-a-practical-example-c79c5cc44f74","comments":"SwiftUI를 위한 MVVM 패턴 실용적인 예제\n"},{"title":"Protocol Composition in Swift","keywords":["Swift","영어"],"location":"https:\/\/swiftyvikash.medium.com\/protocol-composition-in-swift-a6fc083b0fb8","comments":"프로토콜 결합하기 Protocol Composition"},{"title":"Remote\/Push Notification in iOS Simulator — In 10 Easy Steps","keywords":["Framework","Notification"],"location":"https:\/\/imad-ali.medium.com\/remote-notification-in-ios-simulator-xcode-11-4-or-later-ios-13-4-or-later-8e5a77881ef0","comments":"시뮬레이터에서 리모트 노티 다루기"},{"title":"Secure JSON handling in Swift","keywords":["Framework"],"location":"https:\/\/medium.com\/swift2go\/secure-json-handling-in-swift-9362d20773f3","comments":"안전하게 JSON 값 다루기"},{"title":"Supporting async\/await as a module owner","keywords":["Swift","영어"],"location":"https:\/\/swiftindepth.com\/articles\/async-await-modules\/","comments":"라이브러리\/모듈 개발자 관점에서 async\/await 지원하기 위한 과정을 설명합니다"},{"title":"Swift Evolution Official Site","keywords":["Swift","영어"],"location":"https:\/\/apple.github.io\/swift-evolution\/%23?status=accepted&version=5.6","comments":"Swift 공식 사이트에서 제공하는 Evolution 제안 상태 사이트입니다. 예를 들어 쿼리 파라미터로 5.6에서 채택된 것만 고를 수 있습니다\n"},{"title":"Swift Keywords","keywords":["Swift"],"location":"https:\/\/www.swiftjectivec.com\/swift-keywords-v-3-0-1\/","comments":"스위프트 키워드 총정리\n"},{"title":"Swift Version","keywords":["Swift"],"location":"https:\/\/swiftversion.net\/","comments":"현재 Swift 최신 버전과 개발중인 버전에 대한 정보를 보여주는 간단한 웹 서비스\n"},{"title":"Swift computed properties can be tuples","keywords":["Swift","영어"],"location":"http:\/\/chriswu.com\/posts\/swiftui\/computedtuple\/","comments":"Computed Property를 튜플로 만들 수 있는지 삽질하기"},{"title":"SwiftUI List: Deep Dive","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/devtechie\/swiftui-list-deep-dive-a6cbb9ba1cc4","comments":"리스트 기능별 상세 설명\n"},{"title":"SwiftUI: How to Programmatically Scroll to a Row","keywords":["SwiftUI"],"location":"https:\/\/betterprogramming.pub\/swiftui-scroll-to-row-in-scrollview-29d2eb5deba5","comments":"행(row)을 코드로 스크롤 처리하기"},{"title":"Symmetric-key cryptography with CryptoKit for iOS","keywords":["Framework","CryptoKit"],"location":"https:\/\/tanaschita.com\/20220120-symmetric-key-cryptography-with-cryptokit\/","comments":"예전에도 소개했던 CryptoKit 관련 글을 올리는 블로그입니다. Symmertic-key 암호화 방식에 대한 글입니다"},{"title":"Tasks in Swift explained with code examples","keywords":["Swift"],"location":"https:\/\/www.avanderlee.com\/concurrency\/tasks","comments":"윗글과 같이 읽으면 좋을 Task에 관한 SwiftLee 블로그\n"},{"title":"The Cost of a Byte","keywords":["Culture","영어"],"location":"https:\/\/www.emergetools.com\/blog\/posts\/CostOfAByte","comments":"앱 사이즈와 데이터 크기가 얼마나 환경에 영향을 주는지 계산한 글입니다. 제목을 번역해보면 1 바이트의 환경 비용 정도가 되겠네요.\n"},{"title":"Themes, Elements, and Structure in SwiftUI","keywords":["SwiftUI"],"location":"https:\/\/betterprogramming.pub\/themes-elements-structure-in-swiftui-ac83652b5856","comments":"테마별 요소와 구조 다루기"},{"title":"UIView Lifecycle","keywords":["UIKit"],"location":"https:\/\/varga-zolt.medium.com\/uiview-lifecycle-part-5-faa2d44511c9","comments":""},{"title":"Use a Swift command-line tool in a GitHub workflow","keywords":["DeveloperTools"],"location":"https:\/\/blog.eidinger.info\/use-a-swift-command-line-tool-in-a-github-workflow","comments":"깃헙 워크플로우에서 Swift CLI 명령어 사용하기"},{"title":"What Is Autorelease Pool in Swift","keywords":["Swift","영어"],"location":"https:\/\/betterprogramming.pub\/what-is-autorelease-pool-in-swift-c652784f329e","comments":"오토릴리스 풀에 대한 소개"},{"title":"Which Way is Up? Normalized Coordinates in Swift","keywords":["UIKit","Framework"],"location":"https:\/\/stevenpcurtis.medium.com\/which-way-is-up-normalized-coordinates-in-swift-493e1ee584d7","comments":"프레임워크마다 다른 좌표 시스템 정규화하기"},{"title":"iKenndac \/ xcode-streamdeck-plugin - GitHub","keywords":["OpenSource"],"location":"https:\/\/github.com\/iKenndac\/xcode-streamdeck-plugin","comments":"Stream Deck 버튼들을 Xcode 버튼과 연결하는 플러그인 저장소"},{"title":"iOS Unit Tests and Asynchronous Calls","keywords":["Testing"],"location":"https:\/\/medium.com\/mobimeo-technology\/ios-unit-tests-and-asynchronous-calls-a8787b44d817","comments":"비동기 함수 테스트를 위한 가상 시간에 맞춰 동작하는 테스트 스케줄러"},{"title":"iOS library support both Cocoapods and Swift Package Manager","keywords":["DeveloperTools"],"location":"https:\/\/blog.devgenius.io\/ios-library-support-both-cocoapods-and-swift-package-manager-983c81b35080","comments":"CocoaPods과 Swift Package Manager 둘 다 지원하는 라이브러리 만들기"},{"title":"iOS testing — 4 crossroads technique — Part 2","keywords":["Testing"],"location":"https:\/\/medium.com\/vattenfall-tech\/ios-testing-4-crossroads-technique-part-2-3809ac46db98","comments":"지난 호에 소개했던 테스트 위한 사거리 방법 파트2가 올라왔습니다"},{"title":"macOS is Hot Garbage","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/@sergiointoronto\/macos-is-hot-garbage-6f3909835b0f","comments":"macOS는 왜 쓰레기인가?\n"},{"title":"pointfreeco \/ swift-custom-dump - GitHub","keywords":["OpenSource"],"location":"https:\/\/github.com\/pointfreeco\/swift-custom-dump","comments":"포인트프리 오픈소스 중에서 데이터 구조를 디버깅하기 위한 custom dump 저장소"},{"title":"Swift playgrounds for UX designers","keywords":["Design"],"location":"https:\/\/uxdesign.cc\/swift-playgrounds-for-ux-designers-8a0c0ae5b78f","comments":"UX 디자이너를 위한 스위프트 플레이그라운드"}],"version":"1.0"} 2 | -------------------------------------------------------------------------------- /json/news-59.json: -------------------------------------------------------------------------------- 1 | {"sequence":59,"releaseAt":679071600,"items":[{"title":"12 new features that will make things more practical in Xcode14! | by alicanbatur ","keywords":["DeveloperTools","Xcode"],"location":"https:\/\/medium.com\/@alicanbatur\/12-new-features-that-will-make-things-more-practical-in-xcode14-de0770e8f019","comments":"Xcode14에서 바뀐 내용들에 대한 간단한 소개입니다"},{"title":"7 New Features of The Second Beta of iOS 16 | by Nikhil Vemu ","keywords":["Culture","영문"],"location":"https:\/\/medium.com\/macoclock\/7-new-features-of-the-second-beta-of-ios-16-a49f6d9e50a9","comments":"iOS 16에 추가된 기능들 중에 베타2 기준으로 설명해주고 있습니다"},{"title":"7 Useful iOS Libraries You Should Use in Your Next ProjectーPart- 4 | by Farhan Tanvir ","keywords":["DeveloperTools","Framework"],"location":"https:\/\/medium.com\/geekculture\/7-useful-ios-libraries-you-should-use-in-your-next-project%E3%83%BCpart-4-7c424a36d8d5","comments":""},{"title":"A Brief Intro to Networking With Combine | by Ameen Mustafa ","keywords":["Framework","Combine"],"location":"https:\/\/medium.com\/@amnmustafa15\/a-brief-intro-to-networking-with-combine-ffb0f93e864b","comments":""},{"title":"All About MVVM Base Protocols | by Emin Teyhan USLU ","keywords":["Architecture","Swift"],"location":"https:\/\/medium.com\/@Teyhan\/all-about-mvvm-base-protocols-a11e8d033222","comments":"MVVM을 목표로 할 때 활용할 수 있는 프로토콜을 정리한 글입니다"},{"title":"App Design Inspiration 63 | Best UI UX Design Agency ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-63-b44347b812a0","comments":""},{"title":"App Design Inspiration 65 | App Design Agency ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-65-ae1880dcf7f6","comments":""},{"title":"App Development Inspiration 133 | Flutter Company ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-133-ab23c712c0a5","comments":""},{"title":"App Development Inspiration 134 | iPhone Firm ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-134-ae676448947e","comments":""},{"title":"Creating custom extension points for Mac apps with ExtensionKit | Rambo Codes","keywords":["AppKit","Framework"],"location":"https:\/\/rambo.codes\/posts\/2022-06-27-creating-custom-extension-points-with-extensionkit?","comments":"맥 앱에 익스텐션을 구현할 때 필요한 ExtensionKit에 대한 설명입니다. 저도 좀 써봐야겠네요"},{"title":"Data Visualization with Charts in SwiftUI 4.0 — with Code Snippets and Customizations | by Vin Osler ","keywords":["SwiftUI","Swift","Culture"],"location":"https:\/\/oslervin.medium.com\/data-visualization-with-charts-in-swiftui-4-0-with-code-snippets-and-customizations-ab55e22aeb33","comments":"데이터 시각화를 위해 SwiftUI Charts 프레임워크 소개입니다"},{"title":"EU Approves Landmark Legislation to Regulate Apple and Other Big Tech Firms - MacRumors","keywords":["Culture"],"location":"https:\/\/www.macrumors.com\/2022\/07\/05\/eu-approves-landmark-legislation-to-regulate-apple\/?","comments":"우리나라에서 앱 스토어에 대한 제재가 있던 것처럼, 유럽연합에서도 애플과 빅테크 기업들을 제재하기 위한 법이 생길꺼 같네요. \n얼마전 애플도 한국 앱 스토어부터 이외 결제를 열어주었는데, 결제와 운영까지 다 할 수 있는 큰 회사들에게 혜택이 집중되는 게 아니냐는 논란은 있습니다"},{"title":"EnvironmentObject in Views May Not be a Good Idea But Avoiding Them is Probably Much Worse | by Mohammad Azam ","keywords":["SwiftUI","Swift","Architecture","pick"],"location":"https:\/\/azamsharp.medium.com\/environmentobject-in-views-may-not-be-a-good-idea-but-avoiding-them-is-probably-much-worse-f5461cfb218","comments":"SwiftUI에서 ObservedObject나 EnvironmentObject 처럼 클래스로 데이터를 다룰 때는 고민스러울 것 같습니다"},{"title":"Error Handling in Swift iOS: How to Handle Common Errors in Your Code | by Rashad Shirizada ","keywords":["Framework","영문","pick"],"location":"https:\/\/medium.com\/@rashadsh\/error-handling-in-swift-ios-how-to-handle-common-errors-in-your-code-3602eae3ed4c","comments":"NSError 관점에서 스위프트 Error를 설명해주는 글입니다. 에러나 예외를 다루는 것도 비용이긴 한데, 언어에서 쉽게 처리해주다보면 놓치는 부분도 생기는 것 같습니다"},{"title":"Existential any in Swift explained with code examples - SwiftLee","keywords":["Swift","pick"],"location":"https:\/\/www.avanderlee.com\/swift\/existential-any\/?","comments":"Existential any에 대한 상세한 소개글입니다. some과 함께 자주 쓰게 될꺼 같습니다"},{"title":"Getting UIKit's UICalendarView from iOS 16 fully functioning in a SwiftUI app | Chris Wu","keywords":["UIKit","영문","pick"],"location":"http:\/\/chriswu.com\/posts\/swiftui\/uicalendarview\/?","comments":"UICalendarView에 대한 소개글입니다"},{"title":"Hello Swift Charts — Create SwiftUI Graphs for iOS 16 | by José Neves ","keywords":["SwiftUI","Framework","Swift"],"location":"https:\/\/betterprogramming.pub\/swift-charts-swiftui-ac246151480e","comments":"Charts에 대한 좀 더 상세한 소개글입니다"},{"title":"How iOS 16 makes your app launch faster | by Noah Martin ","keywords":["Framework","Testing","Swift","pick"],"location":"https:\/\/medium.com\/geekculture\/how-ios-16-makes-your-app-launch-faster-1c27fd442738","comments":"앱 시작 시간을 줄이는 노력을 많이 하고 사례도 많아졌습니다. 프로토콜이나 클로저, 다이나믹 프레임워크 등 다양한 기준에서 설명해주는 글입니다"},{"title":"How to Write Unit Tests for Combine’s Debounce Method in iOS | by Arek Pituła ","keywords":["Testing","Framework","Culture"],"location":"https:\/\/betterprogramming.pub\/how-to-write-unit-tests-for-combines-debounce-method-in-ios-2257f1523002","comments":""},{"title":"How to add Inner Shadows to Text in Swift UI 4.0 | by Liyicky ","keywords":["SwiftUI","Swift","영문"],"location":"https:\/\/medium.com\/@liyicky\/how-to-add-inner-shadows-to-text-in-swift-ui-4-0-5179867fc772","comments":""},{"title":"Implement SwiftUI Navigation With NavigationStack and NavigationSplitView | by Rob Sturgeon ","keywords":["SwiftUI","Culture","영문"],"location":"https:\/\/betterprogramming.pub\/implement-swiftui-navigation-with-navigationstack-and-navigationsplitview-d1d813a74941","comments":""},{"title":"Important Notes From WWDC 2022 | by Caner Çağrı ","keywords":["Culture","WWDC"],"location":"https:\/\/medium.com\/@canerrcagrii\/important-notes-from-wwdc-2022-62ebb9a84369","comments":"WWDC 2022를 보고 핵심 사항들만 요약한 글이네요. 아주 디테일한 부분까지는 아니지만 훓어보기 좋습니다"},{"title":"Introduction to XCTest framework | by Rajitha Liyanage ","keywords":["Testing","DeveloperTools","Framework"],"location":"https:\/\/medium.com\/@rajitha1911\/introduction-to-xctest-framework-a49dd3bff855","comments":"XCTest에 대한 가벼운 소개글입니다. 학습하면서 정리한 글 같은데 시작할 때 참고하시면 좋은 정도입니다"},{"title":"Is Writing Unit Tests Boring? 4 Reasons You Should | by Evgenii Shishko ","keywords":["Testing","Framework","Architecture"],"location":"https:\/\/betterprogramming.pub\/why-dont-you-write-unit-tests-you-should-begin-right-now-31a381554514","comments":"테스트에 대해 너무 쉽게 생각하거나 너무 어렵게 생각하는 경우가 많죠. 단순한 사례로 좋다 나쁘다 지루하다 평가하기 어려우니까요. 이 글을 쓴 분은 테스트가 지루하다고 느끼나 봅니다"},{"title":"Krzysztof Zabłocki - Hot Reloading in Swift","keywords":["DeveloperTools","영문"],"location":"https:\/\/merowing.info\/2022\/04\/hot-reloading-in-swift\/","comments":"2040년에 맥북은 십수년이 지났으니 실시간으로 컴파일하고 바로바로 앱에 반영해서 보여주겠지만, 아직은 그렇지 않으니까 (특히 제대로 안되는 핫로딩 미리보기) 불편하다는 이야기를 길게 써주셨네요. "},{"title":"Lightweight MVI architecture on iOS with UIKit | by Patrick Ngo ","keywords":["Architecture","Swift","UIKit"],"location":"https:\/\/itnext.io\/lightweight-mvi-architecture-on-ios-with-uikit-ef75e4797eeb","comments":"MVI 라고 해서 저는 Interactor가 들어가나 했는데 Intent군요! 이렇게 되면 비즈니스 로직이 State와 View에 흟어질 것 같은데 어색하네요"},{"title":"Meet Swift Regex (WWDC 2022) | by Steven Curtis ","keywords":["SwiftUI","Swift","영문"],"location":"https:\/\/stevenpcurtis.medium.com\/meet-swift-regex-wwdc-2022-b10d8073d00a","comments":"Swift Regex 소개글도 늘어나고 있습니다"},{"title":"Meet WeatherKit AND Swift Charts | by Daniel Slone ","keywords":["SwiftUI","Framework"],"location":"https:\/\/medium.com\/bilue\/meet-weatherkit-and-swift-charts-a568942631db","comments":"이번에 Objective-C를 지원하지 않고 새로 추가된 Swift 전용 프레임워크 - WeatherKit과 Swift Charts에 대한 소개글입니다"},{"title":"Overcoming Struggles with Auto Layouts | by Patricia Obregon ","keywords":["UIKit","Framework","Swift"],"location":"https:\/\/medium.com\/@patricia.obrgn\/overcoming-struggles-with-auto-layouts-2445321baadb","comments":"저도 오토 레이아웃을 하다보면 여전히 헷갈리고 허우적거리는 경우가 종종 있습니다. 학습하면서 정리한 것 같은데 그 포인트를 잘 짚어주는 것 같습니다"},{"title":"Property Wrappers in SwiftUI | by Ozkan Erdem ","keywords":["SwiftUI","Swift","DeveloperTools"],"location":"https:\/\/medium.com\/orion-innovation-turkey\/property-wrappers-in-swiftui-93da35d2d008","comments":""},{"title":"Quick guide on Proxyman for iOS development | iOS development on tanaschita.com","keywords":["DeveloperTools","영문"],"location":"https:\/\/tanaschita.com\/20220704-quick-guide-on-proxyman\/?","comments":"Proxyman으로 네트워크 트래픽 분석 방법에 대한 소개글입니다"},{"title":"RealityKit Meets SwiftUI — Build a Counter Augmented Reality in iOS | by Andronick Martusheff ","keywords":["SwiftUI","Testing","영문"],"location":"https:\/\/betterprogramming.pub\/how-to-add-text-to-an-arview-in-an-ios-application-tutorial-f3f746f4dc1f","comments":""},{"title":"SF Symbol Changes in iOS 16.0. Introduction | by Geoff Hackworth ","keywords":["DeveloperTools","영문"],"location":"https:\/\/hacknicity.medium.com\/sf-symbol-changes-in-ios-16-0-70a80660ba79","comments":""},{"title":"Swift Core Data — The Simple Way | by varun singh ","keywords":["DeveloperTools","영문"],"location":"https:\/\/varun-singhh.medium.com\/swift-core-data-the-simple-way-62adcb425042","comments":"코어 데이터 사용하기 위해 학습하면서 정리한 글이네요. "},{"title":"Swift Regex","keywords":["DeveloperTools","영문","pick"],"location":"https:\/\/swiftregex.com\/?","comments":"Swift Regex를 테스트해보고 DSL 코드로 바로 만들 수 있는 사이트입니다"},{"title":"Swift.org - Swift language announcements from WWDC22","keywords":["Swift","pick"],"location":"https:\/\/www.swift.org\/blog\/swift-language-updates-from-wwdc22\/?","comments":"WWDC22에 소개된 Swift 언어 관련 내용을 공식적으로 정리해 준 글입니다"},{"title":"SwiftUI Renderers and Their Tricks - The SwiftUI Lab","keywords":["SwiftUI","Swift","영문"],"location":"https:\/\/swiftui-lab.com\/swiftui-renders\/?","comments":""},{"title":"SwiftUI in iOS 16: Using ShareLink for Sharing Content Like Text and Photos | by Simon Ng ","keywords":["SwiftUI","Culture","영문"],"location":"https:\/\/medium.com\/appcoda-tutorials\/swiftui-in-ios-16-using-sharelink-for-sharing-content-like-text-and-photos-371555c04e57","comments":""},{"title":"The M2 MacBook Pro ‘Disaster’ Explained | by Mark Ellis ","keywords":["Hardware","영문"],"location":"https:\/\/medium.com\/macoclock\/apple-is-doomed-the-m2-macbook-pro-disaster-explained-fdb9fc33c396","comments":"M2 맥북프로 신형이 별로 수준이 아니라 재앙이라는 표현을 쓰는군요. 이번에는 좀 우려먹기가 심한 것 같기도 합니다"},{"title":"Using Schemes and .xcconfig files to organize builds delivery in iOS | by Federico Jordán ","keywords":["DeveloperTools"],"location":"https:\/\/medium.com\/@federicojordn\/using-schemes-and-xcconfig-files-to-organize-builds-delivery-in-ios-633ba7992703","comments":""},{"title":"VIP design pattern (or Clean Swift) | by Artun Erol ","keywords":["Architecture","Swift","영문"],"location":"https:\/\/medium.com\/@artun.erol\/vip-design-pattern-or-clean-swift-1c00fb1a4f6d","comments":""},{"title":"WWDC22 - Augmented Reality Digital Lounge | yono.ai","keywords":["Culture","WWDC","영문"],"location":"https:\/\/yono.ai\/articles\/wwdc22-arkit-realitykit-usdz-digital-lounge\/?","comments":"AR 디지털 라운지에 대한 질의응답을 모아준 사이트입니다"},{"title":"WWDC22: Wrap up and recommended talks – Hacking with Swift","keywords":["Culture","WWDC","pick"],"location":"https:\/\/www.hackingwithswift.com\/articles\/254\/wwdc22-wrap-up-and-recommended-talks?","comments":"폴 허드슨이 WWDC22 전체적으로 요약해서 추천하는 글입니다. 가장 균형감있게 정리가 잘 된 글인 것 같습니다"},{"title":"Why SwiftUI will make UIKit obsolete | by Ricardo Montemayor ","keywords":["SwiftUI","UIKit","Swift"],"location":"https:\/\/medium.com\/@ricardomongza\/why-swiftui-will-make-uikit-obsolete-5819dc1c6ef","comments":"이제는 놀랍지도 않은 소제인 것 같습니다. UIKit 은 과연 쓸모없어지는 것인가요 ㅎㅎ"},{"title":"Xcode 14 Beta 3 Release Notes | Apple Developer Documentation","keywords":["APPLE","pick"],"location":"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-14-release-notes","comments":"Xcode 14도 베타3로 올라갔습니다. macOS Ventura에서는 Xcode 13도 못쓰게 하더군요. \n이번 베타3에는 몇 가지 놀라운게 있는데, watchKit에서 더이상 Storyboard를 지원하지 않는다는 것과 Xcode Server가 사라지고 Xcode Cloud로 대체될 것이라네요"},{"title":"Xcode Cloud — Continuous Integration and Deployment | by Dharamrajsinh Jadeja ","keywords":["DeveloperTools","SwiftUI","UIKit"],"location":"https:\/\/medium.com\/mindful-engineering\/xcode-cloud-continuous-integration-and-deployment-41751b362a2b","comments":""},{"title":"aheze\/Multiliner: An Xcode source extension to expand lengthy lines.","keywords":["DeveloperTools"],"location":"https:\/\/github.com\/aheze\/Multiliner?","comments":"Xcode 플러그인 익스텐션이 몇 개 소개됐는데, 그 중에 코드를 여러 줄로 바꿔주는 도구입니다"},{"title":"iOS 16: Notable UIKit Additions | Swiftjective-C","keywords":["UIKit","SwiftUI","영문"],"location":"https:\/\/www.swiftjectivec.com\/ios-16-notable-uikit-additions\/","comments":"UIKit은 아직 죽지 않았다.는 맥락에서 이번에 바뀐 부분들을 요약해줍니다"},{"title":"iOS Architecture — The VaMPiRe: Part 3 | by Marco Guerrieri ","keywords":["Architecture","Swift","Testing"],"location":"https:\/\/medium.com\/kinandcartacreated\/ios-architecture-the-vampire-part-3-3138b14a4ea9","comments":"지난 호에서 Part1을 소개한 것 같은데, Part3까지 올라왔네요"},{"title":"iOS localization from zero to hero | by Iosif Moldovan ","keywords":["DeveloperTools","Framework","영문"],"location":"https:\/\/blog.devgenius.io\/ios-localization-from-zero-to-hero-2c50e30a1af3","comments":""},{"title":"insidegui\/VirtualBuddy: Virtualize macOS 12 and later on Apple Silicon","keywords":["DeveloperTools","pick"],"location":"https:\/\/github.com\/insidegui\/VirtualBuddy?","comments":"애플실리콘 맥에 macOS를 가상화해서 여러 버전을 띄워볼 수 있는 도구입니다"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-62.json: -------------------------------------------------------------------------------- 1 | {"sequence":62,"releaseAt":683305200,"items":[{"title":"5 reasons I still feel SwiftUI is premature | by Enebin ","keywords":["SwiftUI","UIKit","Framework","pick"],"location":"https:\/\/enebin.medium.com\/swiftui-5-points-i-still-feel-swiftui-is-premature-25a377cdf288","comments":"아직 SwiftUI가 시기상조인 5가지 이유. 저도 아직 제약사항이 있다는 부분에서 충분히 공감합니다"},{"title":"@ViewBuilder usage explained with code examples - SwiftLee","keywords":["SwiftUI","영어","pick"],"location":"https:\/\/www.avanderlee.com\/swiftui\/viewbuilder\/?","comments":"ViewBuilder 프로퍼티 래퍼를 사용하는 예시를 상세하게 설명해주고 있습니다"},{"title":"Animations of sorting algorithms in Swift Charts - YouTube","keywords":["Swift #pick"],"location":"https:\/\/www.youtube.com\/watch?v=UCSXF741iHI","comments":"스위프트 차트를 이용해서 라이브 코딩하면서 정렬 알고리즘을 설명하는 영상입니다"},{"title":"App Design Inspiration 71 | Custom App Design Firm ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-71-8ade675994e8","comments":""},{"title":"App Design Inspiration 72 | App UI Design Company ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-72-e274bc09b895","comments":""},{"title":"App Development Inspiration 140 | Enterprise Mobile Company ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-140-f8d60312bbde","comments":""},{"title":"Apple Car: Software and Money. by Jean-Louis Gassée | by Jean-Louis Gassée ","keywords":["Hardware"],"location":"https:\/\/mondaynote.com\/apple-car-software-and-money-51f86a3305d4","comments":"오랜만에 장 루이 가세 글입니다. 쉽지 않은 애플카에 대한 도전을 이야기하고 있습니다. "},{"title":"Apple M1 vs. M2 — Comparison | by Jakub Jirak ","keywords":["Hardware"],"location":"https:\/\/medium.com\/codex\/apple-m1-vs-m2-comparison-2673249f1fe2","comments":"기술적인 분석은 아니고 M1과 M2를 가볍게 비교해주는 글입니다"},{"title":"Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOS","keywords":["AppKit","영어"],"location":"https:\/\/blog.timac.org\/2022\/0818-state-of-appkit-catalyst-swiftui-mac\/?","comments":"macOS 내에서 애플이 개발할 때 사용한 프레임워크가 AppKit인지 Catalyst, SwiftUI 인지 분석한 글입니다. macOS Ventura에서는 SwiftUI 사용이 12%까지 늘어났네요!"},{"title":"Chrome and Safari have great competition, meet the new and futuristic browser | by Abraham Hernandez ","keywords":["Culture"],"location":"https:\/\/bootcamp.uxdesign.cc\/chrome-and-safari-are-about-to-die-meet-the-new-and-futuristic-browser-73fed83dfb9a","comments":"크롬과 사파리가 경쟁하면서 긍정적인 영향을 주고 있다는 글입니다. 사파리가 웹 개발자들에게는 여전히 이단아입니다만 표준 지원도 차츰 나아지고 있는 것 같습니다"},{"title":"Collect build data and run experiments using dynamic Xcode build settings | Medium","keywords":["DeveloperTools","Testing"],"location":"https:\/\/medium.com\/@lightricks-tech-blog\/ab-testing-xcode-build-settings-5559eb89b3c5","comments":"여러 앱 버전과 스페이지, A\/B 테스트 조건까지 빌드 설정에 넣다보면 복잡해지죠. 그걸 다루기 위해서 xcconfig를 다루는 방식에 대한 설명입니다"},{"title":"Create Custom View Components in SwiftUI | by Ricardo Montemayor ","keywords":["SwiftUI"],"location":"https:\/\/levelup.gitconnected.com\/create-custom-view-components-in-swiftui-845b65e8ba94","comments":""},{"title":"DocC Interactive Tutorials — How to create an iOS framework Pt5 | by El Moez Amira ","keywords":["DeveloperTools"],"location":"https:\/\/itnext.io\/docc-interactive-tutorials-how-to-create-an-ios-framework-pt5-51b7a1040604","comments":"DocC로 인터액티브 튜토리얼 문서를 작성할 때 과정을 설명해줍니다. "},{"title":"Exploring the UIColor and Color APIs in iOS | by Riccardo Cipolleschi ","keywords":["UIKit","SwiftUI"],"location":"https:\/\/betterprogramming.pub\/exploring-the-uicolor-and-color-apis-in-ios-68c9ea7a2162","comments":""},{"title":"Faster StoreKit testing by syncing in-app purchase products","keywords":["Testing","Framework"],"location":"https:\/\/www.avanderlee.com\/xcode\/storekit-testing-syncing-configuration-file\/?","comments":"StoreKit 구매를 테스트하는 과정을 설명합니다"},{"title":"From NSRegularExpression to SwiftRegex","keywords":["Framework","RegEx"],"location":"https:\/\/www.polpiella.dev\/from-nsregular-expression-to-swift-regex\/?","comments":""},{"title":"Handling Cell Interactions When Using UIHostingConfiguration in iOS 16 - Swift Senpai","keywords":["UIKit","SwiftUI"],"location":"https:\/\/swiftsenpai.com\/development\/uihostingconfiguration-cell-interactions\/?","comments":""},{"title":"How to Make Custom Test Assertions in Swift | Quality Coding","keywords":["Testing","Swift","영문"],"location":"https:\/\/qualitycoding.org\/swift-test-assertions\/?","comments":"나만의 Assertion 만들기"},{"title":"How to bridge async\/await functions to Combine's Future type in Swift","keywords":["Framework","Swift"],"location":"https:\/\/tanaschita.com\/20220822-bridge-async-await-to-combine-future\/?","comments":"콤바인 Future 타입과 async\/await 연결하는 방법을 설명합니다"},{"title":"How to save enum with associated value in UserDefaults using Swift | Sarunw","keywords":["Swift","영어"],"location":"https:\/\/sarunw.com\/posts\/how-to-save-enum-associated-value-in-userdefaults-using-swift\/?","comments":"열거형 연관값을 UserDefault에 저장하는 방법입니다"},{"title":"How to validate field using Combine in SwiftUI | by DevTechie ","keywords":["SwiftUI","Framework"],"location":"https:\/\/medium.com\/devtechie\/how-to-validate-field-using-combine-in-swiftui-cf25280b77bc","comments":""},{"title":"Implementing Parts of the Swift Compiler in Swift - Development \/ Compiler - Swift Forums","keywords":["Swift","DeveloperTools","영어"],"location":"https:\/\/forums.swift.org\/t\/implementing-parts-of-the-swift-compiler-in-swift\/59524?","comments":"스위프트로 스위프트 컴파일러를 구현하는 작업을 위해서 일부 콤포넌트부터 구현을 시작했다고 하죠. 그 과정에서 필수적인 요구사항을 정리한 글이 포럼에 올라왔습니다"},{"title":"Intrinsic Content Size: Swift’s Sizing Mystery | by Steven Curtis ","keywords":["UIKit"],"location":"https:\/\/stevenpcurtis.medium.com\/intrinsic-content-size-swifts-sizing-mystery-364e1b2629e4","comments":"고유한 콘텐츠 사이즈(Intrinsic Content Size)를 처리하는 방법입니다"},{"title":"Lenses and prisms in Swift - The.Swift.Dev.","keywords":["Swift","영어","pick"],"location":"https:\/\/theswiftdev.com\/lenses-and-prisms-in-swift\/?","comments":"스위프트에서는 적용되지 않았지만, 하스켈로 대표되는 함수형 언어에서 사용하는 렌즈와 프리즘에 대한 소개입니다. Struct를 통해 구현하고 있지만, 프로토콜을 활용하는 방법도 고려해보면 좋겠습니다"},{"title":"MVVM with SwiftUI + Combine | by Varun Mehta ","keywords":["Architecture","Framework"],"location":"https:\/\/medium.com\/@catchvarun25\/mvvm-with-swiftui-combine-51edb1a011ce","comments":""},{"title":"Massive view controller a.k.a view model in SwiftUI | by Jim Lai ","keywords":["SwiftUI","Architecture"],"location":"https:\/\/swift2931.medium.com\/massive-view-controller-a-k-a-view-model-in-swiftui-2dc8f23eb7ed","comments":"거대한 뷰컨트롤러를 만들던 것처럼 SwiftUI에서 거대한 ViewModel을 만들게 되는 현상에 대한 글입니다"},{"title":"Mastering grid layout in SwiftUI | Swift with Majid","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftwithmajid.com\/2022\/08\/10\/mastering-grid-layout-in-swiftui\/?","comments":""},{"title":"Morphing Nodes Under SceneKit | by Mark Lucking ","keywords":["Framework","SceneKit"],"location":"https:\/\/betterprogramming.pub\/morphing-nodes-under-scenekit-b6c72784265a","comments":""},{"title":"Actors and Data Races in Swift - Part 5 | by Tim Dolenko ","keywords":["Swift"],"location":"https:\/\/medium.com\/@timdolenko\/actors-and-data-races-in-swift-11d12f42c09b","comments":""},{"title":"Passwords Are Dead — This Is Newly Replacing It! | by Nikhil Vemu ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/macoclock\/passwords-are-dead-this-is-newly-replacing-it-826a97710b6b","comments":"애플 PassKey처럼 FIDO를 지원하는 경우가 많아지면 패스워드를 더이상 사용하지 않아도 되는걸까요! "},{"title":"Pulse 2.0 | kean.blog","keywords":["DeveloperTools","영문"],"location":"https:\/\/kean.blog\/post\/pulse-2?","comments":"애플 플랫폼의 로그 시스템 Pulse가 2.0으로 업데이트됐군요!"},{"title":"Recent Advances in Differentiable Swift | by Brad Larson ","keywords":["Swift","영문"],"location":"https:\/\/medium.com\/passivelogic\/recent-advances-in-differentiable-swift-f60ccc0c6f7e","comments":"구글에서 스위프트 for 텐서플로 팀이 해체되면서 창업한 PassiveLogic 에서 스위프트로 수학 모델을 구현하던 과정을 설명한 시리즈 글입니다. "},{"title":"Scrollable Segmented Control. This is a custom implementation | by N Musaev ","keywords":["UIKit","Framework","영어"],"location":"https:\/\/medium.com\/@n.musaev\/scrollable-segmented-control-5ed207409741","comments":"가로 스크롤 가능한 세그먼트 컨트롤 구현 예제입니다"},{"title":"String Parsing with Soulver Core | GitHub","keywords":["OpenSource"],"location":"https:\/\/github.com\/soulverteam\/SoulverStringParsing","comments":"Soulver 라는 앱의 핵심 라이브러리 중에서 계산식 문자열을 파싱하는 도구를 오픈소스로 공개했습니다. 개인은 무료 라이센스지만, 유료는 비용이 발생하는 조건입니다"},{"title":"Swift 5.7 removed limitation of type constrained extensions","keywords":["Swift"],"location":"https:\/\/twitter.com\/rudrankriyam\/status\/1559077672927600642?","comments":"Swift 5.7부터 자기 자신 타입을 표현하는 제약이 줄어들어서 조금더 유연해집니다"},{"title":"SwiftUI AttributedString is not there yet | by Thomas Ricouard ","keywords":["SwiftUI","Framework"],"location":"https:\/\/dimillian.medium.com\/swiftui-attributedstring-is-not-there-yet-63d49e9f9c16","comments":"SwiftUI AttributedString에 대한 특징과 제약사항을 설명해주는 글입니다. "},{"title":"The Best (Non-Apple) iPad Accessories for the Everyday User | by Adi Kakarla ","keywords":["Hardware"],"location":"https:\/\/medium.com\/macoclock\/the-best-non-apple-ipad-accessories-for-the-everyday-user-f3dcb24e990b","comments":"애플 제품 이외에 아이패드용 악세서리를 가볍게 추천해줍니다"},{"title":"The Lighter Swift Codegen for SQLite3 – Helge Heß – Software engineer.","keywords":["OpenSource","영어"],"location":"https:\/\/www.alwaysrightinstitute.com\/\/lighter\/?","comments":"SQLite3를 사용하기 위한 라이브러리와 도구"},{"title":"Using the Multipeer Connectivity Framework With SwiftUI 4 to Build a Game | by Joe Diragi ","keywords":["SwiftUI","Swift","DeveloperTools"],"location":"https:\/\/betterprogramming.pub\/using-the-multipeer-connectivity-framework-with-swiftui4-b2bf97f5be79","comments":"SwiftUI와 멀티피어 연결성 프레임워크를 사용해서 게임만드는 과정입니다"},{"title":"View Controller Presentation Changes in iOS and iPadOS 16 | by Geoff Hackworth ","keywords":["UIKit","Swift","pick"],"location":"https:\/\/hacknicity.medium.com\/view-controller-presentation-changes-in-ios-and-ipados-16-474c82c9ed2e","comments":"iOS16에서 UIViewController가 달라진 점을 상세하게 정리해준 글입니다. 특히 iPadOS에서는 Stage Manager 때문에 Window, Sheet, NavigationBar, SpiritView 크기 등이 소소하게 달라졌네요"},{"title":"WWDC22 한국어 비디오 자막 사용 가능 - 최신 뉴스 - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/kr\/news\/?id=lw8dnr3l","comments":"어머 이런 적은 처음이야! 열심히 번역해주신 분들께 감사합니다 "},{"title":"What is a RunLoop Anyway? Swift and iOS Guide | by Steven Curtis ","keywords":["Swift","Framework","pick"],"location":"https:\/\/stevenpcurtis.medium.com\/what-is-a-runloop-anyway-swift-and-ios-guide-aa574577331b","comments":""},{"title":"XCUITest: Add waitForNonExistence() to your iOS Automation Toolkit | by Andronick Martusheff ","keywords":["Testing","Architecture","Hardware"],"location":"https:\/\/medium.com\/@martusheff\/xcuitest-add-waitfornonexistence-to-your-ios-automation-toolkit-a16afdf0b5e8","comments":"XCUITest로 UI테스트 하면서 필요한 화면을 기다리는 방법입니다"},{"title":"민소네블로그 - Xcodeproj Gem을 활용하여 Xcode Test Plans 생성 스크립트 만들기","keywords":["DeveloperTools","한국어","pick"],"location":"https:\/\/minsone.github.io\/xcode-ruby-generate-xctestplan-using-xcodeproj-gem?","comments":"이제 단골손님이시군요. Xcode Test Plans를 생성하는 스크립트 만들기 관련입니다"},{"title":"async\/await in Swift. All the features you need to know about | by Tim Dolenko ","keywords":["Swift","DeveloperTools","영어"],"location":"https:\/\/medium.com\/axel-springer-tech\/async-await-in-swift-9a4c9546b288","comments":""},{"title":"Building a Graph With SwiftUI | by M Salman A ","keywords":["SwiftUI","영어"],"location":"https:\/\/betterprogramming.pub\/building-a-graph-with-swiftui-b16dc48f7fe6","comments":"SwiftUI로 그래프 시각화를 위해 그래프를 그리는 방법에 대한 쉬운 설명입니다. "},{"title":"See what JavaScript commands get injected through an in-app browser · Felix Krause","keywords":["Culture","영어"],"location":"https:\/\/krausefx.com\/blog\/announcing-inappbrowsercom-see-what-javascript-commands-get-executed-in-an-in-app-browser?","comments":"페이스북이 인앱 브라우저에 JS코드를 넣어서 모든 것을 추적하고 있다는 소식이 전해지면서, InAppBrowser.com 사이트를 만들어서 어떤 것이 주입되어 있는지 확인할 수 있습니다."},{"title":"sswg\/0019-graphql.md at main · swift-server\/sswg","keywords":["Swift"],"location":"https:\/\/github.com\/swift-server\/sswg\/blob\/main\/proposals\/0019-graphql.md?","comments":"스위프트 오픈소스 제안 내용 중에 서버 그룹에 올라온 GraphQL 관련입니다. Graphiti 라이브러리는 swift-nio 기반으로 어느정도 구현이 되어 있어 곧 사용해볼 수 있을꺼 같네요"},{"title":"swift-evolution\/0371-isolated-synchronous-deinit.md at main · apple\/swift-evolution","keywords":["Swift"],"location":"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0371-isolated-synchronous-deinit.md","comments":"아직 구현되지 않고 현재 리뷰중인 내용입니다만, deinit 시점에 데이터 레이싱 문제를 해결할 수 있도록 분리 처리하는 방법을 제안했네요. deinit 시점에 분리되서 동기\/비동기 메모리 처리를 할 수 있는 명령어가 생긴다고 생각하시면 될 것 같습니다"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-63.json: -------------------------------------------------------------------------------- 1 | {"sequence":63,"releaseAt":684514800,"items":[{"title":"A Disaster Named NSHashTable | by Kiarash Vosough ","keywords":["Swift","Framework"],"location":"https:\/\/medium.com\/divar-mobile-engineering\/a-disaster-named-nshashtable-d56b3d5c446f","comments":"오래전부터 Foundation에서 제공되는 NSHashTable에 대해 정리하면서 이상하다고 느낀 점을 표현한 글입니다"},{"title":"Accessibility in SwiftUI explained for UIKit developers - SwiftLee","keywords":["SwiftUI","UIKit","Accessibility"],"location":"https:\/\/www.avanderlee.com\/swiftui\/accessibility-uikit-developers\/?","comments":"UIKit 개발자에게 설명하는 SwiftUI 접근성 관련 기능들이라고 합니다"},{"title":"App Design Inspiration 73 | iPhone App Design Company ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-73-837d8c515685","comments":""},{"title":"App Development Inspiration 141 | iOS Firm ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-141-c236af7c6","comments":""},{"title":"App Development Inspiration 142 | Web and Mobile Company ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-142-104e84053231","comments":""},{"title":"App Development Inspiration 143 | Flutter Agency ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-143-cacf0d0a01fc","comments":""},{"title":"App Store Optimization (ASO) Checklist · ASO Tools and App Analytics by Appfigures","keywords":["Culture","영어"],"location":"https:\/\/appfigures.com\/resources\/guides\/app-store-optimization-checklist?","comments":"Appfigures에서 앱 스토어 최적화 ASO 기능을 위한 체크리스트를 제시해줍니다"},{"title":"Apple September Event. Everything there is to know | by Youssef Mohamed ","keywords":["Hardware","Culture"],"location":"https:\/\/medium.com\/macoclock\/apple-september-event-32cd5f5fcd26","comments":"애플 9월 이벤트에 대해 정리한 글이네요. "},{"title":"Apple Silicon and the library incompatibility problem for iOS development | by Suson Thapa ","keywords":["DeveloperTools","Framework","Hardware"],"location":"https:\/\/susuthapa19961227.medium.com\/apple-silicon-and-the-library-incompatibility-problem-for-ios-development-8c2d875283f2","comments":"애플 실리콘 맥북에서 특정 라이브러리 때문에 CPU 아키텍처가 안 맞다고 에러가 나는 경우에 대한 설명입니다"},{"title":"Apple Watch Series 8, SE, & Ultra — Everything You Need To Know | by Nikhil Vemu ","keywords":["Hardware","Culture"],"location":"https:\/\/medium.com\/macoclock\/apple-watch-series-8-se-ultra-everything-you-need-to-know-5807f3aaacc0","comments":"새로 나온 애플 워치에 대한 소개입니다"},{"title":"AttributedString, a better way to handle attributed strings in iOS 15 | by Jesus Guerra ","keywords":["UIKit","Framework"],"location":"https:\/\/medium.com\/@guerrix\/attributedstring-a-better-way-to-handle-attributed-strings-in-ios-15-6fdc2dafe97d","comments":""},{"title":"Concurrency in iOS: GCD | by Tifo Audi Alif Putra ","keywords":["Swift","Framework"],"location":"https:\/\/medium.com\/geekculture\/concurrency-in-ios-gcd-c3a69acd7f31","comments":""},{"title":"Create Live Activities With ActivityKit on iOS 16 | by Batikan Sosun ","keywords":["Framework","영어"],"location":"https:\/\/betterprogramming.pub\/create-live-activities-with-activitykit-on-ios-16-beta-4766a347035b","comments":"지난 호에서도 몇 개 소개했었는데, 라이브로 업데이트가 가능한 ActivityKit 관련 소개입니다"},{"title":"Crossing the Streams with Services | by Brennan Stehling ","keywords":["AppKit","FrameWork","영어","pick"],"location":"https:\/\/brennansv.medium.com\/crossing-the-streams-with-services-337fe6e51fe2","comments":"맥에서 XPC 서비스를 통해서 프로세스간 통신을 하는 방식에 대한 소개입니다."},{"title":"Customizing toolbars in SwiftUI | Swift with Majid","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftwithmajid.com\/2022\/09\/07\/customizing-toolbars-in-swiftui\/?","comments":"스위프트UI에서 툴바를 커스텀하게 변경하는 방법에 대해 소개합니다"},{"title":"Dealing with OAuth2.0 in iOS apps (swift) | by Saleh Masum ","keywords":["Framework","OAuth"],"location":"https:\/\/medium.com\/@salehmasum_9553\/building-a-lightweight-oauth2-0-compliant-network-layer-in-swift-ios-720ebf9ad18a","comments":"스포티파이에 OAuth2.0 으로 인증하고 엑세스 토큰을 받아서 요청하기까지 과정을 설명합니다"},{"title":"Dependency injection — Swinject | by Iosif Moldovan ","keywords":["Swift","영어"],"location":"https:\/\/blog.devgenius.io\/dependency-injection-swinject-5d8345331502","comments":"Swinject를 활용해서 의존성을 주입하는 방법에 대한 소개글입니다"},{"title":"ERD Diagrams for Core Data in Your iOS App | by Steven Curtis ","keywords":["Framework","CoreData","Swift","pick"],"location":"https:\/\/stevenpcurtis.medium.com\/erd-diagrams-for-core-data-in-your-ios-app-37cfae7ae3ab","comments":"코어 데이터를 표현하기 위한 EDR 요소를 설명합니다"},{"title":"Exploring SwiftUI Coordinators | by Pedro Alvarez ","keywords":["SwiftUI","Architecture"],"location":"https:\/\/betterprogramming.pub\/swiftui-coordinators-a27c2c9d701f","comments":""},{"title":"Font accessibility on iOS 14+ | by Benjamin Dumont ","keywords":["SwiftUI","Accessibility","영어"],"location":"https:\/\/medium.com\/just-tech-it-now\/font-accessibility-on-ios-14-179801958f64","comments":"iOS 14이상에서 폰트 접근성을 다루는 방법을 설명합니다"},{"title":"Get ready for iOS 16, tvOS 16, and watchOS 9 - Discover - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=3ne3586t","comments":"애플 이벤트가 끝나고 iOS 16, tvOS 16, watchOS 9 RC가 나와서 출시일에 맞춰서 앱을 심사할 수 있도록 준비하라는 안내가 나왔습니다"},{"title":"Handling multiple caches in App | by Ravi Gupta ","keywords":["Architecture","Cache","영어","pick"],"location":"https:\/\/bytes.swiggy.com\/handling-multiple-caches-in-app-cf1e98b74e3b","comments":"앱에서 다루는 에셋 리소스를 여러 캐시 방식으로 구현하는 방법을 소개하고 있습니다"},{"title":"Hello World iOS App Tutorial with Bazel | by Taha Bebek ","keywords":["DeveloperTools","Bazel","영어"],"location":"https:\/\/medium.com\/@tahabebek\/hello-world-ios-app-with-bazel-bfc6cf710501","comments":"Bazel로 빌드하는 구조에 대한 기초적인 설명입니다"},{"title":"How to Use Xcode Plugins in Your iOS App | by Riccardo Cipolleschi ","keywords":["DeveloperTools","SwiftUI"],"location":"https:\/\/betterprogramming.pub\/how-to-use-xcode-plugins-in-your-ios-app-13574261f210","comments":"Xcode 플러그인을 활용하는 방법을 소개합니다. 레츠스위프트 앱을 만들면서 플러그인 만들던 게 생각나네요"},{"title":"How to build a configurable widget with WidgetKit and SwiftUI","keywords":["SwiftUI","WidgetKit","영어"],"location":"https:\/\/tanaschita.com\/20220905-how-to-build-a-configurable-widget-with-widgetkit-and-swiftui\/?","comments":""},{"title":"How to show alert in SwiftUI (iOS 15+) | by DevTechie ","keywords":["SwiftUI","영어"],"location":"https:\/\/medium.com\/devtechie\/how-to-show-alert-in-swiftui-ios-15-8b99d9dcb214","comments":""},{"title":"How to: Create a bank-level security blur screen with SwiftUI | by MING ","keywords":["SwiftUI","Framework"],"location":"https:\/\/levelup.gitconnected.com\/how-to-create-a-bank-level-security-blur-screen-with-swiftui-49a0e569bdc6","comments":"은행 앱들이 보안을 위해 화면을 흐림처리하는 것을 스위프트UI로 구현한 예제입니다"},{"title":"Implement Your First Swift Package Build Plugin | by Riccardo Cipolleschi ","keywords":["DeveloperTools"],"location":"https:\/\/betterprogramming.pub\/implement-your-first-swift-package-build-plugin-9835a7aded0b","comments":"스위프트 패키지 빌드용 플러그인을 구현하는 방법입니다"},{"title":"Introducing MarkCodable","keywords":["OpenSource","Framework","영어","pick"],"location":"https:\/\/trycombine.com\/posts\/introducing-markcodable\/?","comments":"마크다운을 생성할 수 있도록 도와주는 마크다운 Codable 오픈소스 "},{"title":"MVVM + POP to deal with complex UI | by Mohshin Shah ","keywords":["Architecture","Swift"],"location":"https:\/\/medium.com\/ne-digital\/mvvm-pop-to-deal-with-complex-ui-d4c5b76a92e1","comments":""},{"title":"On Fixing vs Patching | Bas","keywords":["Culture","영어","pick"],"location":"https:\/\/www.basbroek.nl\/on-fixing-vs-patching?","comments":"개발자로써 버그를 만드는 과정, 그것을 해결하는 일은 당연히 해야하는 데도 피하게 되는 현상을 지적하는 글입니다. 강한 논조가 있는 것은 아니지만 생각해보게 되는 글이네요"},{"title":"Reduce Motion: How To Make Your iOS App Animations Accessible and Inclusive | by Amos Gyamfi ","keywords":["Accessibility","Culture","pick"],"location":"https:\/\/medium.com\/@amosgyamfi\/reduce-motion-how-to-make-your-ios-app-animations-accessible-and-inclusive-92b9de1304fb","comments":"접근성에 대한 글들이 꽤 있습니다. 그 중에서도 놓치기 위한 모션을 줄이는 것에 대한 글입니다. 애니메이션을 만들기만 할 뿐 놓치기 쉬운 부분 같습니다"},{"title":"Reusable Customisable Views in SwiftUI | by Petru Lutenco ","keywords":["SwiftUI","Swift","영어"],"location":"https:\/\/betterprogramming.pub\/reusable-customisable-views-in-swiftui-db6af84639fa","comments":""},{"title":"SF Font Expanded, Condensed, and Compressed: Three New font width styles in iOS 16 | Sarunw","keywords":["SwiftUI","UIFont","영어"],"location":"https:\/\/sarunw.com\/posts\/sf-font-width-styles\/?","comments":"SF Font에 새롭게 글자 폭에 대한 선택지가 생겼습니다"},{"title":"Sharing cross-platform code in SwiftUI apps · Jesse Squires","keywords":["SwiftUI","영어"],"location":"https:\/\/www.jessesquires.com\/blog\/2022\/08\/19\/sharing-code-in-swiftui-apps\/?","comments":""},{"title":"Swift.org - Announcing SwiftNIO IMAP","keywords":["ServerSide","Culture","영어"],"location":"https:\/\/www.swift.org\/blog\/swift-nio-imap\/","comments":"서버사이드 그룹에서 IMAPv4를 다룰 수 있는 SwiftNIO 기반 라이브러리를 오픈소스로 공개했습니다"},{"title":"SwiftUI Accessibility: Dynamic Type | Mobile A","keywords":["Accessibility","SwiftUI","영어"],"location":"https:\/\/mobilea11y.com\/guides\/swiftui\/swiftui-dynamic-type\/?","comments":"스위프트UI에서 접근성을 다루는 방법 - 다이나믹 타입에 대한 글입니다"},{"title":"SwiftUI Text Alignment | by Rob Maltese ","keywords":["SwiftUI","영어"],"location":"https:\/\/blog.devgenius.io\/swiftui-text-alignment-8bc9e4cb8afe","comments":""},{"title":"Three UIKit Protips — Steve's Real Blog","keywords":["UIKit","영어"],"location":"https:\/\/blog.steveasleep.com\/three-uikit-protips?","comments":""},{"title":"Updating SwiftUI Views From Objective-C Using MVVM | by Max Kalik ","keywords":["SwiftUI","Architecture","Swift","pick"],"location":"https:\/\/betterprogramming.pub\/updating-swiftui-views-from-objective-c-mvvm-9c4f38d6d9c8","comments":"특이하게 오브젝티-C기반으로 작성된 코드와 SwiftUI로 구현한 뷰를 연결하는 예제네요"},{"title":"Using CoordinateSpace to draw over a SwiftUI List | Matthew","keywords":["SwiftUI","Hardware","영어"],"location":"https:\/\/daringsnowball.net\/articles\/swiftui-coordinatespace\/?","comments":""},{"title":"VoiceOver navigation improvement tips for SwiftUI apps - SwiftLee","keywords":["Accessibility","VoiceOver","Culture","pick"],"location":"https:\/\/www.avanderlee.com\/swiftui\/voiceover-navigation-improvement-tips\/?","comments":"스위프트UI 앱에서 보이스오버로 내비게이션을 처리하도록 구현하는 설명입니다"},{"title":"Why You Should Migrate From RxSwift To Combine | by Kelvin Tan ","keywords":["Framework","Combine","RxSwift"],"location":"https:\/\/betterprogramming.pub\/why-you-should-migrate-from-rxswift-to-combine-6a3118751b31","comments":""},{"title":"Why iOS Developers Won’t Buy An iPhone 14 | by Steven Curtis ","keywords":["Hardware","영어"],"location":"https:\/\/stevenpcurtis.medium.com\/why-ios-developers-wont-buy-an-iphone-14-f11f66016046","comments":"왜 아이폰14를 개발용으로 사면 안되는지 설명하는 독특한 글입니다 (별내용은 없어요)"},{"title":"Why the MVC Architecture is Impossible to Implement in SwiftUI? | by Pedro Alvarez ","keywords":["Architecture","SwiftUI","Swift"],"location":"https:\/\/betterprogramming.pub\/swiftui-why-mvc-architecture-became-totally-inviable-aeeab4570d79","comments":""},{"title":"Xcode Cloud subscriptions now available - Latest News - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=5hlzzu3u","comments":"Xcode 클라우드가 이제 모든 개발자들에게 열렸습니다. 2023년말까지는 매달 25시간까지는 무료 티어를 제공한다고 합니다"},{"title":"Xcode's refactoring options for async\/await","keywords":["DeveloperTools","Swift"],"location":"https:\/\/blog.eidinger.info\/xcodes-refactoring-options-for-asyncawait?","comments":""},{"title":"Z Index in SwiftUI : Setting things in order. | by DevTechie ","keywords":["SwiftUI","영어"],"location":"https:\/\/medium.com\/devtechie\/z-index-in-swiftui-setting-things-in-order-ff8a2367cbf4","comments":""},{"title":"Zap the SceneDelegate in iOS 12 and just use the AppDelegate | by Steven Curtis ","keywords":["UIKit","Framework"],"location":"https:\/\/stevenpcurtis.medium.com\/zap-the-scenedelegate-in-ios-12-and-just-use-the-appdelegate-33ef1b93937f","comments":""}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-64.json: -------------------------------------------------------------------------------- 1 | {"sequence":64,"releaseAt":684514800,"items":[{"title":"Access Memory Directly in Swift. Not just screens of numbers | by Steven Curtis ","keywords":["Swift","Framework"],"location":"https:\/\/stevenpcurtis.medium.com\/access-memory-directly-in-swift-e79328f38641","comments":""},{"title":"Adding Support for Apple Watch Ultra Action Button","keywords":["Framework","영어"],"location":"https:\/\/crunchybagel.com\/adding-support-for-apple-watch-ultra-action-button\/?","comments":"워치 울트라 액션 버튼을 눌렀을 때 동작하도록 워치 키트 구현하기"},{"title":"An Introduction to ExtensionKit","keywords":["Framework","ExtensionKit","영어"],"location":"https:\/\/www.chimehq.com\/blog\/extensionkit-intro?","comments":"macOS 13 Ventura와 iOS 16부터 사용가능한 ExtensionKit에 대한 소개입니다"},{"title":"App Development Inspiration 144 | Kotlin Company ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-144-45d35f91969e","comments":""},{"title":"App Development Inspiration 145 | Android Mobile Company ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-145-52b34d84d1b7","comments":""},{"title":"Apple Universal Link setup in iOS | by Nishant Bhasin ","keywords":["Framework","영어"],"location":"https:\/\/nishbhasin.medium.com\/apple-universal-link-setup-in-ios-131a508b45d1","comments":""},{"title":"Apple’s Dynamic Island Is an Expertly Executed Bad Idea | by David Morelo ","keywords":["Culture","pick"],"location":"https:\/\/medium.com\/macoclock\/apples-dynamic-island-is-an-expertly-executed-bad-idea-ef7db0734954","comments":"다아나믹 섬이 나쁜 아이디어라고 3가지 근거로 이야기합니다"},{"title":"Apple’s Next Big Thing: A Business Model Change | by Jean-Louis Gassée ","keywords":["Culture","Hardware"],"location":"https:\/\/mondaynote.com\/apples-next-big-thing-a-business-model-change-e9b0145500c9","comments":"애플 비즈니스 모델의 변화에 대해 장-루이 가세 글입니다"},{"title":"Aspect Fit Layout Guide","keywords":["UIKit","영어","pick"],"location":"https:\/\/useyourloaf.com\/blog\/aspect-fit-layout-guide\/?","comments":"안전 영역에서 비율을 유지할 수 있는 레이아웃 가이드"},{"title":"Build a Tetris Game Using SwiftUI | by Mark Lucking ","keywords":["SwiftUI","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/build-a-tetris-game-using-swiftui-c8c9b1722259","comments":"스유로 테트리스 게임만들기"},{"title":"Core Data Basics in Swift. What is Core Data? | by Yianni Yiannakidis ","keywords":["Framework","DeveloperTools"],"location":"https:\/\/medium.com\/@ioagian1980\/core-data-basics-in-swift-9e5c86dee375","comments":"코어 데이터 핵심 요약과 시작하기"},{"title":"Deadlocks in Swift explained: detecting and solving - SwiftLee","keywords":["Swift","영어","pick"],"location":"https:\/\/www.avanderlee.com\/swift\/deadlocks-detecting-solving\/?","comments":"데드락 찾기와 해결하기"},{"title":"Displaying live activities in iOS 16 | Swift with Majid","keywords":["Framework","영어","pick"],"location":"https:\/\/swiftwithmajid.com\/2022\/09\/21\/displaying-live-activities-in-ios16\/?","comments":"다이나믹 섬 기능 추가된 정적 또는 동적 라이브 액티비티를 표시하기 위한 ActivityKit에 대한 설명입니다"},{"title":"Enabling Concurrency warnings in Xcode 14 – Donny Wals","keywords":["DeveloperTools","영어","pick"],"location":"https:\/\/www.donnywals.com\/enabling-concurrency-warnings-in-xcode-14\/?","comments":""},{"title":"Everything is about mutation: Structs vs Classes | by Azhman Zare ","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@azhman.developer\/everything-is-about-mutation-structs-vs-classes-6fde0dfde6","comments":""},{"title":"Explore the Dynamic Island — ActivityKit Tutorial | by Avi Tsadok ","keywords":["Framework","영어"],"location":"https:\/\/betterprogramming.pub\/explore-the-dynamic-island-activitykit-tutorial-a7b8e3f9e234","comments":"다이나믹 섬 기능 관련 또 다른 소개글입니다"},{"title":"External Display Support versus Stage Manager on iPadOS 16 | by Geoff Hackworth ","keywords":["UIKit","SwiftUI","pick"],"location":"https:\/\/hacknicity.medium.com\/external-display-support-versus-stage-manager-on-ipados-16-149e15dc700e","comments":"iPadOS 16에서 외장 디스플레이와 스테이지 매니저 때문에 UIScreen, UIWindow 처리가 꽤 복잡해졌습니다"},{"title":"Fixing Swift Actors and Delegate Error on Xcode 14 | by Max Kalik ","keywords":["Swift","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/fixing-swift-actors-and-delegate-error-on-xcode-14-87f933c9bbcc","comments":"액터와 델리게이트 에러 수정하기"},{"title":"Generate a man page for a Swift command-line tool","keywords":["Swift","DeveloperTools","영어"],"location":"https:\/\/blog.eidinger.info\/generate-a-man-page-for-a-swift-command-line-tool?","comments":"스위프트 명령어 도구를 위한 man 페이지 생성하기"},{"title":"Generating PDFs Dynamically Using PDFKit in Swift | by Marc Daou ","keywords":["Framework","PDFKit","영어"],"location":"https:\/\/betterprogramming.pub\/swift-generating-pdfs-dynamically-using-pdfkit-12c37168e106","comments":"PDFKit로 동적으로 PDF 다루기"},{"title":"Getting Started with iOS App Modularization — An Introduction | by Arya Surya ","keywords":["Architecture","영어"],"location":"https:\/\/medium.com\/tokopedia-engineering\/getting-started-with-ios-app-modularization-an-introduction-e1ee1b3ead6a","comments":""},{"title":"Goodbye Electron. Hello Tauri | by Ed Rutherford ","keywords":["Culture","영어"],"location":"https:\/\/betterprogramming.pub\/adi%25C3%25B3s-electron-a-rust-powered-alternative-has-arrived-and-its-lovely-bd26262dcf1a","comments":"일렉트론을 대체해서 프론트는 리액트, 백엔드는 러스트로 처리하는 Tauri에 대한 소개입니다"},{"title":"How does Python compare with Smalltalk? | by Richard Kenneth Eng ","keywords":["Culture","영어"],"location":"https:\/\/levelup.gitconnected.com\/how-does-python-compare-with-smalltalk-4e549d77171","comments":"파이썬과 스몰토크를 비교하는 가벼운 글입니다 "},{"title":"How iOS Apps Adapt to the various iPhone 14 Screen Sizes | by Geoff Hackworth ","keywords":["DeveloperTools","Framework","pick"],"location":"https:\/\/hacknicity.medium.com\/how-ios-apps-adapt-to-the-various-iphone-14-screen-sizes-b2504a39b58f","comments":"다양한 아이폰 14 화면 크기에 대해 정리한 글입니다"},{"title":"How to Add Makefile to Your iOS Project | by Maksym Teslia ","keywords":["DeveloperTools","Framework"],"location":"https:\/\/betterprogramming.pub\/adding-makefile-to-your-ios-project-802ac98fbe71","comments":"iOS 프로젝트에 makefile을 만들어서 스크립트를 실행하는 방법"},{"title":"How to Refresh Cell's Content When Using UIHostingConfiguration","keywords":["SwiftUI","UIKit"],"location":"https:\/\/swiftsenpai.com\/development\/refresh-cells-uihostingconfiguration\/?","comments":"UIHostingConfiguration 으로 셀 내용 새로고치기"},{"title":"How to: Create Dynamic Island Widgets on iOS 16.1 or above | by MING ","keywords":["Framework"],"location":"https:\/\/medium.com\/macoclock\/how-to-create-dynamic-island-widgets-on-ios-16-1-or-above-dca0a7dd1483","comments":"다이나믹 섬 위젯 예제를 만드는 방법입니다"},{"title":"Introducing The AppIntents Framework — A New Way to Integrate App’s Functionality Into the System | by Sadık Çoban ","keywords":["Framework","AppIntents"],"location":"https:\/\/betterprogramming.pub\/the-appintents-framework-a-new-way-to-hook-up-apps-functionality-to-the-system-96279feb4cce","comments":"이제 단축어를 이용해서 시리에게 특정 앱을 실행하는 게 가능해졌죠. AppIntents 프레임워크를 구현하는 예제입니다"},{"title":"Localizing App Shortcuts with App Intents","keywords":["Framework","Swift"],"location":"https:\/\/sowenjub.me\/writes\/localizing-app-shortcuts-with-app-intents\/?","comments":"App Intents로 단축어 구현할 때 언어별 지역화 처리하기"},{"title":"Native iOS Game Development w\/ Rust | Medium","keywords":["Culture","영어"],"location":"https:\/\/devmap.org\/native-ios-game-development-w-rust-a1134887c35f","comments":"Xcode도 없이 러스트와 함께 iOS 게임 구현하기. 초기 설정 부분이 많은데 앞으로 어떻게 진행되는지 궁금하네요"},{"title":"Performance-Profiling Swift on Linux: Getting Started | raywenderlich.com","keywords":["DeveloperTools","Swift","영어"],"location":"https:\/\/www.raywenderlich.com\/31390549-performance-profiling-swift-on-linux-getting-started?","comments":"레이웬더리치에 올라온 리눅스에서 스위프트 성능 프로파일링하기 자료입니다"},{"title":"Replacing if let in Swift 5.7 | @samwize","keywords":["Swift","영어"],"location":"https:\/\/samwize.com\/2022\/09\/22\/replacing-if-let-in-swift-5-7\/?","comments":"Swift 5.7 방식 if let으로 정규표현식 사용해서 전체 바꾸기"},{"title":"RobotsAndPencils\/XcodesApp: The easiest way to install and switch between multiple versions of Xcode - with a mouse click.","keywords":["DeveloperTools"],"location":"https:\/\/github.com\/RobotsAndPencils\/XcodesApp","comments":"원하는 Xcode 버전을 설치하고 스위치하는 도구 XcodesApp 새 버전이 나왔습니다"},{"title":"Shallow comparison of Swift Enum using Sourcery | by Ryuichi Fukami ","keywords":["DeveloperTools","Swift","영어","pick"],"location":"https:\/\/medium.com\/@ryu1sazae\/shallow-comparison-using-sourcery-7fa2d7cd5384","comments":"Sourcery로 Swift Enum 값 비교하는 코드 생성하기 "},{"title":"Swift 5.7: Optional Binding, Closure Type Inference, Clock, Noasync | by Remy Bounthong ","keywords":["Swift","영어","pick"],"location":"https:\/\/blog.appsynth.net\/swift-5-7-optional-binding-closure-type-inference-clock-noasync-657b583eb26d","comments":"Xcode 14 + 스위프트 5.7에 새롭게 바뀐 내용들"},{"title":"Swift.org - Swift 5.7 Released!","keywords":["Swift","pick"],"location":"https:\/\/www.swift.org\/blog\/swift-5.7-released\/?","comments":"정식 Xcode 14와 함께 Swift 5.7 릴리스됐습니다. "},{"title":"SwiftUI Lists Are Broken And Can’t Be Fixed | by Michael Long ","keywords":["SwiftUI","Framework"],"location":"https:\/\/betterprogramming.pub\/swiftui-lists-are-broken-and-cant-be-fixed-a7114d0baaba","comments":""},{"title":"SwiftUI Sharelink — new way of sharing without hustle | by Łukasz Stachnik ","keywords":["SwiftUI","DeveloperTools"],"location":"https:\/\/itnext.io\/swiftui-sharelink-new-way-of-sharing-without-hustle-bfd27861a356","comments":""},{"title":"Testing push notifications within XCTest - Testableapple","keywords":["Testing","DeveloperTools","pick"],"location":"https:\/\/testableapple.com\/note-32\/?","comments":"XCTest로 푸시 노티 테스트하는 방법"},{"title":"The Dynamic Island and Live Activities | Better Programming","keywords":["Swift","Framework","영어","pick"],"location":"https:\/\/betterprogramming.pub\/get-started-with-live-activities-and-the-dynamic-island-in-ios-16-f23d4f704128","comments":"다이나믹 섬과 라이브 액티비티 소개 글입니다"},{"title":"The SwiftUI Layout Protocol - Part 1 - The SwiftUI Lab","keywords":["SwiftUI","영어","pick"],"location":"https:\/\/swiftui-lab.com\/layout-protocol-part-1\/?","comments":"스위프트UI 레이아웃 프로토콜에 대한 상세한 글입니다"},{"title":"The Testing Guide For Combine Framework in Swift | by Pedro Alvarez ","keywords":["Testing","DeveloperTools","Framework"],"location":"https:\/\/betterprogramming.pub\/swift-combine-testing-guide-198a25af0445","comments":"콤바인 사용할 경우 목 객체로 테스트하는 방법"},{"title":"The iOS 16.1 Update Is Exactly What You Didn’t Know You Needed — What’s New? | by Nikhil Vemu ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/macoclock\/the-ios-16-1-update-is-exactly-what-you-didnt-know-you-needed-what-s-new-5d5a226edd0f","comments":"iOS 16.1 베타에 새로운 기능들"},{"title":"Variable WidgetBundle configuration based on conditions - SwiftLee","keywords":["Framework","SwiftUI","영어"],"location":"https:\/\/www.avanderlee.com\/swiftui\/variable-widgetbundle-configuration\/?","comments":"위젯키트에서 WidgetBundle 프로토콜 다루기"},{"title":"WeatherKit subscriptions now available - Latest News - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=wsx8rd26","comments":"날씨 API를 다루기 위한 WeatherKit 가입하고 사용할 수 있습니다. 애플 개발자들은 한 달에 50만건까지 무료라고 합니다"},{"title":"What's the 'any' keyword? Understanding Type Erasure in Swift","keywords":["Swift","영어"],"location":"https:\/\/swiftrocks.com\/whats-any-understanding-type-erasure-in-swift?","comments":"any 키워드와 타입 지우기 이해하기"},{"title":"Xcode 14 “Publishing changes from within view updates is not allowed, this will cause undefined behavior” – Donny Wals","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.donnywals.com\/xcode-14-publishing-changes-from-within-view-updates-is-not-allowed-this-will-cause-undefined-behavior\/?","comments":"SwiftUI 뷰 업데이트가 안되는 특정한 상황에 보라색 경고창에 대한 소개글입니다"},{"title":"Xcode 14부터 바뀐 것들. 릴리스 노트를 개발자 관점에서 살펴본 소소한 사항 | by Jung Kim ","keywords":["DeveloperTools","한국어","pick"],"location":"https:\/\/medium.com\/@jungkim\/xcode-14%25EB%25B6%2580%25ED%2584%25B0-%25EB%25B0%2594%25EB%2580%2590-%25EA%25B2%2583%25EB%2593%25A4-9dda016f25bd","comments":"Xcode 14에서 개선 사항이 많이 있지만, 잘 알려지지 않은 소소한 기능들 위주로 정리해봤습니다 "},{"title":"iPhone 14 Screen Sizes","keywords":["Hardware","영어","pick"],"location":"https:\/\/useyourloaf.com\/blog\/iphone-14-screen-sizes\/?","comments":"아이폰 14 화면 크기에 대한 정리"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-66.json: -------------------------------------------------------------------------------- 1 | {"sequence":66,"releaseAt":688143600,"items":[{"title":"JetBrains Fleet vs. VS Code by Selim Enes","keywords":["Culture"],"location":"https:\/\/medium.com\/@sellimenes\/jetbrains-fleet-vs-vs-code-is-fleet-vs-code-killer-b11e2feeea0d","comments":"젯브레인에서 온라인 협업이 가능한 Fleet 코드 편집기를 발표했습니다. VSCode와 비교하는 글이네요"},{"title":"Alternate App Icon Configuration in Xcode - SwiftLee","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.avanderlee.com\/swift\/alternate-app-icon-configuration-in-xcode\/?","comments":"Xcode에서 교체 가능한 대체용 앱 아이콘을 지정하는 방법입니다"},{"title":"Announcing the Reducer Protocol","keywords":["Swift","영어","pick"],"location":"https:\/\/www.pointfree.co\/blog\/posts\/81-announcing-the-reducer-protocol?","comments":"TCA 구조 개선을 하면서 프로토콜을 발표했습니다"},{"title":"App Design Inspiration 79 | Top UI UX Agency ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-79-6d47bb19330e","comments":""},{"title":"App Design Inspiration 80 | UI UX Agency ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-80-aee056e7ac64","comments":""},{"title":"App Development Inspiration 148 | Hybrid Company ","keywords":["Design","Swift"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-148-847cebe35c26","comments":""},{"title":"App Development Inspiration 149 | Mobile Firm ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-149-c59dc53bc6d8","comments":""},{"title":"App Store에 iOS 16.1 및 iPadOS 16.1 앱 제출하기 - 최신 뉴스 - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/kr\/news\/?id=z1erkhzr","comments":"새로운 아이패드 출시와 함께 iPadOS 16.1 가 나오면서 새 버전에 맞춰 앱을 출시할 수 있습니다"},{"title":"Async-await in swift. New Concurrency programming in Swift | Medium","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@ashokrawat086\/why-to-use-swift-async-await-b19993be27cf","comments":"async-await 정리가 가장 깔끔한 것 같습니다 "},{"title":"Bidirectional collection view with orthogonalScrollingBehavior","keywords":["UIKit","영어"],"location":"https:\/\/arturgruchala.com\/bidirectional-collection-view-with-orthogonalscrollingbehavior\/?","comments":"가로세로로 모두 스크롤 가능한 콜랙션뷰 다루기"},{"title":"See the Architecture of any Codeface","keywords":["DeveloperTools","Architecture","pick"],"location":"https:\/\/codeface.io\/","comments":"Codeface라는 폴더\/소스\/타입 관계를 보여주는 무료 도구입니다. 제가 만들고 있는 도구보다 다이나믹한 그래프가 장점이네요!"},{"title":"Creating Custom Higher-Order Functions Can Help You Write More Abstract Swift Code | by Maksym Teslia ","keywords":["Swift"],"location":"https:\/\/betterprogramming.pub\/creating-custom-higher-order-functions-can-help-you-write-more-abstract-swift-code-b0158793300e","comments":"나만의 고차 함수를 활용해서 좀 더 추상화를 잘하는 방법을 소개합니다"},{"title":"Deploying DocC with GitHub Actions | by Max Cobb ","keywords":["DeveloperTools","DocC","pick"],"location":"https:\/\/maxxfrazer.medium.com\/deploying-docc-with-github-actions-218c5ca6cad5","comments":"깃헙 액션으로 DocC 배포하기"},{"title":"Developer guide on the iOS file system","keywords":["Framework","영어"],"location":"https:\/\/tanaschita.com\/20221010-quick-guide-on-the-ios-file-system\/?","comments":"iOS 샌드박스 Bundle 컨테이너와 Data 컨테이너 디렉터리에 대한 설명입니다"},{"title":"Do You Know the Six Different Roles of an iOS Developer? | by Pedro Alvarez ","keywords":["Culture","pick"],"location":"https:\/\/betterprogramming.pub\/the-different-roles-for-an-ios-developer-3d146bf0c197","comments":"조직마다 다르지만 iOS 개발자가 하게되는 6가지 역할에 대한 설명입니다"},{"title":"Don’t Do Small Pull Requests | by Elli Engineering ","keywords":["Culture","영어","pick"],"location":"https:\/\/elli-engineering.medium.com\/dont-do-small-pull-requests-2b9f8793e4e8","comments":"큰 PR을 보내면 리뷰가 안된다는 얘기를 많이 하죠. 반대로 무조건 작은 크기로 PR보내는 것도 좋지 않다는 취지의 글이네요"},{"title":"Embracing Core Data in SwiftUI | by Mohammad Azam ","keywords":["SwiftUI","Framework","CoreData"],"location":"https:\/\/azamsharp.medium.com\/embracing-core-data-in-swiftui-997128bc6ccc","comments":""},{"title":"Fixing SwiftUI navigation with UIKit | by Jimmy Sanghani ","keywords":["SwiftUI","UIKit","Architecture"],"location":"https:\/\/blog.canopas.com\/fixing-swiftui-navigation-with-uikit-1110df63ca0e","comments":""},{"title":"Form Validation in UIKit Made Easy With Combine | by Mohd Hafiz ","keywords":["UIKit","Framework","Testing"],"location":"https:\/\/betterprogramming.pub\/form-validation-in-uikit-made-easy-with-combine-dd8245bacb6c","comments":""},{"title":"Generic Swift OAuth 2.0 in Async Way | by mein ","keywords":["Framework","Swift","pick"],"location":"https:\/\/luomein.medium.com\/generic-swift-oauth-2-0-in-async-way-ba53f686263f","comments":"async 방식으로 OAuth 2.0 인증 매니저를 구현한 예제입니다"},{"title":"How To Create a Button With Loading Indicator in iOS | by Mohd Hafiz ","keywords":["UIKit","Swift","Testing"],"location":"https:\/\/betterprogramming.pub\/how-to-create-a-button-with-loading-indicator-in-ios-b579e063b91c","comments":""},{"title":"How To Implement FaceID or TouchID in iOS | by Ege Sucu ","keywords":["Framework","FaceID"],"location":"https:\/\/betterprogramming.pub\/how-to-implement-faceid-or-touchid-in-ios-f3837cc2ff01","comments":"FaceID나 TouchID로 인증하도록 구현하는 예제네요"},{"title":"Khanlou | Which Collection","keywords":["Swift","영어"],"location":"https:\/\/khanlou.com\/2022\/10\/some-collections\/?","comments":"Grid 라는 2차원 배열을 다룰 때도 `some Collection` 형태로 배열 하나를 추상화하는 방식을 제안합니다"},{"title":"Live activities are about to be Live | by Quentin Fasquel ","keywords":["Framework","WidgetKit"],"location":"https:\/\/medium.com\/@quentinfasquel\/live-activities-are-about-to-be-live-5e73f6a2c8f6","comments":"다이나믹 아일랜드로 축구 경기 라이브로 표시하는 과정을 설명합니다. 실제로 써보니 애플 앱 이외에는 아직 부족해서 다양한 사례가 많이 나와야할 것 같더군요"},{"title":"Make SwiftLint available as a build tool plugin by technocidal · Pull Request #4176 · realm\/SwiftLint","keywords":["Culture"],"location":"https:\/\/github.com\/realm\/SwiftLint\/pull\/4176?","comments":"이제 SwiftLint를 SPM build tool plugin으로 활용할 수 있다고 하네요 👏🏼"},{"title":"Mastering NavigationStack in SwiftUI. NavigationPath. | Swift with Majid","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftwithmajid.com\/2022\/10\/05\/mastering-navigationstack-in-swiftui-navigationpath\/?","comments":""},{"title":"Memory management for async\/await and tasks in Swift","keywords":["Swift","영어"],"location":"https:\/\/tanaschita.com\/20221003-memory-management-for-async-await\/?","comments":"async\/await 기능을 사용할 때도 클로저 참조에 대한 메모리 관리가 필요하죠"},{"title":"Neumorphic Button in iOS 16 and SwiftUI | by DevTechie ","keywords":["SwiftUI","Framework","영어"],"location":"https:\/\/medium.com\/devtechie\/neumorphic-button-in-ios-16-and-swiftui-75360b41866e","comments":""},{"title":"Non-functional dependency injection in Swift | by Jim Lai ","keywords":["Swift","Architecture","SwiftUI"],"location":"https:\/\/swift2931.medium.com\/non-functional-dependency-injection-in-swift-beffe4151373","comments":"POP와 DI는 다르다. 에서 시작해서 프로토콜이 아니더라도 의존성 주입을 할 수 있다는 설명을 좀 길게 설명합니다"},{"title":"Remembering Steve Jobs. by Jean-Louis Gassée | by Jean-Louis Gassée ","keywords":["Culture","영어"],"location":"https:\/\/mondaynote.com\/remembering-steve-jobs-6f44f3567040","comments":"지난 10월 5일은 스티브 잡스의 기일이었죠. 잡스와 다른 삶을 살았던 장-루이 가세 컬럼에서 그가 남긴 유산에 대해 글을 남겼습니다. "},{"title":"Strategy Pattern and Swift | by No name ","keywords":["Architecture","Swift"],"location":"https:\/\/medium.com\/@amiddleeasterner\/strategy-pattern-and-swift-68ea2902dccb","comments":"개인적으로 디자인 패턴중에서 가장 핵심적인 패턴이라고 생각하는 전략 패턴에 대한 설명입니다"},{"title":"Swift Package Manager supports Git Submodules","keywords":["DeveloperTools","Swift","Culture","pick"],"location":"https:\/\/blog.eidinger.info\/swift-package-manager-supports-git-submodules?","comments":"SPM에서 깃 서브모듈을 지원하는 방법에 대해 설명합니다"},{"title":"SwiftUI Architecture — A Complete Guide to the MV Pattern Approach | by Mohammad Azam ","keywords":["SwiftUI","Architecture"],"location":"https:\/\/betterprogramming.pub\/swiftui-architecture-a-complete-guide-to-mv-pattern-approach-5f411eaaaf9e","comments":"계층적인 MV 패턴으로 SwiftUI 구조에 대해 설명합니다. 맞다\/틀리다 문제라기 보다 그 앱에 적절한 구조가 좋은 선택이 아닐까 싶네요"},{"title":"System Programming Interfaces (SPI) in Swift Explained","keywords":["Swift","DeveloperTools","Culture","pick"],"location":"https:\/\/blog.eidinger.info\/system-programming-interfaces-spi-in-swift-explained?","comments":"API보다 상위 수준에서 함수 기준을 나눌 수 있는 SPI 개념에 대해 소개합니다. "},{"title":"Tags List View in SwiftUI (Chips View) | by M.Abbas ","keywords":["SwiftUI","UIKit","Architecture"],"location":"https:\/\/medium.com\/geekculture\/tags-view-in-swiftui-e47dc6ce52e8","comments":"태그 리스트 뷰를 만드는 과정이네요"},{"title":"Testing Escaping Closures in Swift | by Felipe Ricieri ","keywords":["Testing","영어"],"location":"https:\/\/betterprogramming.pub\/testing-with-closures-ced7f3aa2186","comments":""},{"title":"The Layout Engine в Swift | by Timi Stark ","keywords":["UIKit","Framework"],"location":"https:\/\/medium.com\/@yatimistark\/the-layout-engine-%25D0%25B2-swift-3a0318c5a62a","comments":"오토 레이아웃을 처리하는 레이아웃 엔진에 대해 설명합니다"},{"title":"The Layout Protocol in iOS 16 | by Mark Lucking ","keywords":["SwiftUI","영어","pick"],"location":"https:\/\/betterprogramming.pub\/the-layout-protocol-in-ios-16-c86b31d87d1a","comments":"Layout 프로토콜에 대한 설명과 예제 코드입니다"},{"title":"The iPad 10th-generation 2022. Why Would Apple Think This is Okay? | by Youssef Mohamed ","keywords":["Hardware","영어"],"location":"https:\/\/medium.com\/macoclock\/the-ipad-10th-generation-2022-3317868e5439","comments":"아이패드 라인도 엄청 촘촘해졌습니다. 10세대 아이패드는 USB-C로 바뀌었지만 애플 펜슬 1세대만 지원해서 이상한 상태이긴 합니다"},{"title":"Three Ways to Refactor Massive SwiftUI Views - Holy Swift","keywords":["SwiftUI","Swift","Culture"],"location":"https:\/\/holyswift.app\/three-ways-to-refactor-massive-swiftui-views\/?","comments":"거대한 SwiftUI View를 리팩터링하기 위한 3가지 방법을 제안합니다"},{"title":"Top SwiftUI App Templates — Xcode Source Codes | by Apps","keywords":["SwiftUI","Swift","영어"],"location":"https:\/\/apps4world.medium.com\/top-swiftui-app-templates-xcode-source-codes-2797ffabd4ab","comments":"SwiftUI로 구현한 예제 앱들을 모아놓은 곳인데 무료는 아니고 $129 정도에 소스를 판매하는 곳입니다"},{"title":"Tutorial: Integrate ARKit Image Recognition With SwiftUI | Medium","keywords":["SwiftUI","Framework","Architecture"],"location":"https:\/\/coledennis.medium.com\/tutorial-integrate-arkit-image-recognition-with-swiftui-6da132c81dd1","comments":""},{"title":"Using The Proxy Pattern In Swift 5","keywords":["Architecture","영어"],"location":"https:\/\/digitalbunker.dev\/using-the-proxy-pattern-in-swift-5\/?","comments":""},{"title":"Visualise the Matthew Effect with Swift Charts | Software Development Notes","keywords":["SwiftUI","영어"],"location":"https:\/\/swdevnotes.com\/swift\/2022\/visualise-the-matthew-effect-with-swift-charts\/?","comments":"스위프트 차트로 Matthew 효과를 구현한 예제"},{"title":"Where View.task gets its main-actor isolation from – Ole Begemann","keywords":["SwiftUI","Swift","영어","pick"],"location":"https:\/\/oleb.net\/2022\/swiftui-task-mainactor\/?","comments":"새로운 기능이 생기면 간단해지고 추상화되면서 이렇게 원인을 파악하기 어려운 경우가 생기는 것 같습니다. 이제 View.task로 분리하면 어떤 일이 생기는지 살펴봐야 합니다"},{"title":"XCFramework + SwiftPackageManager | by Emrah ","keywords":["DeveloperTools","Swift"],"location":"https:\/\/blog.devgenius.io\/xcframework-swiftpackagemanager-c03f4b1903d9","comments":""},{"title":"Xcode 14 Single Size App Icon","keywords":["DeveloperTools","영어"],"location":"https:\/\/useyourloaf.com\/blog\/xcode-14-single-size-app-icon\/?","comments":"Xcode 14에서 사용하는 단일 크기 앱 아이콘 사용하는 방법입니다"},{"title":"Xcode 14.0 generates wrong concurrency code for macOS targets – Ole Begemann","keywords":["DeveloperTools","Swift","영어"],"location":"https:\/\/oleb.net\/2022\/xcode-14-mac-concurrency-bugs\/?","comments":"Xcode 14에서 macOS용 Swift Concurrency 코드 중에 withUnsafeContinuation()가 오류가 있다는 리포트입니다. 아직 패치가 안되고 있다네요 ㅜㅜ"},{"title":"iOS App As a Microservice. Modularize Your App With Tuist | by Alex Dremov ","keywords":["Architecture","Swift","ServerSide"],"location":"https:\/\/levelup.gitconnected.com\/ios-app-as-a-microservice-modularize-your-app-with-tuist-f706e8fae650","comments":"국내에서도 그렇고 Tuist로 앱을 모듈화하는 시도가 가장 트렌디한 것 같습니다 "},{"title":"iOS) Needle 로 의존성 주입하기 | by Kanghoon ","keywords":["Swift","Framework","한국어"],"location":"https:\/\/okanghoon.medium.com\/ios-needle-%25EB%25A1%259C-%25EC%259D%2598%25EC%25A1%25B4%25EC%2584%25B1-%25EC%25A3%25BC%25EC%259E%2585%25ED%2595%2598%25EA%25B8%25B0-f5019a4f2b92","comments":"당근마켓 개발팀에서 우버 Needle 프레임워크로 의존성 주입하는 방식에 대해 소개합니다"},{"title":"make your Swift package manifest more readable - @_sa_s ","keywords":["DeveloperTools","wift"],"location":"https:\/\/twitter.com\/_sa_s\/status\/1582329921371721729?","comments":"SPM에서 manifet 파일을 좀 더 사람에게 읽기 쉽게 표현하는 팁을 소개합니다. Pakage.swift 파일이 스위프트 코드라는 것을 잊고 있었네요 😅"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-68.json: -------------------------------------------------------------------------------- 1 | {"sequence":68,"releaseAt":691167600,"items":[{"title":"@dynamicCallable in Swift explained with code examples - SwiftLee","keywords":["Swift","영어","pick"],"location":"https:\/\/www.avanderlee.com\/swift\/dynamiccallable\/?","comments":"`@dynamicMemberLookup`과 함께 사용해서 유연한 접근이 가능하도록 도와주는 `@dynamicCallable`에 대한 소개입니다"},{"title":"A historical view on the Metropolitan Apple Watch face","keywords":["Design","영어","pick"],"location":"https:\/\/arun.is\/blog\/apple-metropolitan-face\/?_hsmi=235306774&_hsenc=p2ANqtz--k3TLf1pzzzwStYB3yZUe6B8yrUd6IuVsqjw3U-fn_bjLCyC9O523ldabIPoRo6j9ncycGobRCyktOQKws-xMUqBVsYQ&utm_content=235306773","comments":"Metropolitan 애플 워치 페이스에 영향을 준 손목 시계와 디자인에 대한 흥미로운 소개입니다"},{"title":"Adopt Async-Await in your project | Level Up Coding","keywords":["Swift","Concurrency","영어"],"location":"https:\/\/levelup.gitconnected.com\/adopt-async-await-in-your-project-d1117bf305be","comments":""},{"title":"An Introduction To SwiftUI Animations | by InRhythm","keywords":["SwiftUI","Swift"],"location":"https:\/\/medium.com\/@GetInRhythm\/an-introduction-to-swiftui-animations-9f91ebf4d611","comments":""},{"title":"App Design Inspiration 84 | Best UX Design Firm ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-design-inspiration-84-751647caaa93","comments":""},{"title":"App Development Inspiration 153 | iPhone Company ","keywords":["Design","영어"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-153-dd2afe2bbd2f","comments":""},{"title":"App Development Inspiration 154 | iPhone Agency ","keywords":["Design"],"location":"https:\/\/theymakedesign.com\/app-development-inspiration-154-548c68403077","comments":""},{"title":"AutoLayoutBuilder —My Swift Package to Reduce Boilerplate Code | by Chris Nevin ","keywords":["UIKit","Swift"],"location":"https:\/\/betterprogramming.pub\/autolayoutbuilder-294badac5015","comments":"UIKit에서 오토레이아웃 관련 코드가 길어지면 SnapKit 같은 것을 고려하게 되죠. 이미 아시겠지만 resultBuilder를 활용해서 빌더로 사용하는 방식입니다"},{"title":"Better SwiftUI navigation APIs","keywords":["SwiftUI","영어"],"location":"https:\/\/www.pointfree.co\/blog\/posts\/84-better-swiftui-navigation-apis?","comments":"포인트프리에서 내비게이션 API 개선하는 방향에 대한 소개와 제안입니다"},{"title":"Binary Targets in Swift Package Manager - SwiftLee","keywords":["DeveloperTools","Testing","영어","pick"],"location":"https:\/\/www.avanderlee.com\/optimization\/binary-targets-swift-package-manager\/?","comments":"SPM에서 바이너리 타깃 의존성을 다루는 방법입니다. 특정한 XCFramework 바이너리를 URL로 지정해서 빌드하지 않고 바로 사용하는 캐싱 효과를 줄 수 있습니다"},{"title":"C4 model — how to define your system | by IcePanel ","keywords":["Architecture","Swift","영어","pick"],"location":"https:\/\/icepanel.medium.com\/c4-model-how-to-define-your-system-592cba876662","comments":"사이먼 브라운Simon Brown이 UML을 단순화해서 제안한 C4 모델에 대한 소개입니다. C4 모델은 iOS 앱 개발자들에게도 개인적으로 추천하는 방법입니다"},{"title":"Combining opaque return types with primary associated types | Swift by Sundell","keywords":["Swift","영어"],"location":"https:\/\/www.swiftbysundell.com\/articles\/opaque-return-types-primary-associated-types\/?","comments":"제네릭한 불투명 리턴 타입을 활용해서 콤바인 다루는 방식입니다. 앞으로는 existential `any` 키워드를 자주 사용하게 될꺼 같네요"},{"title":"Concurrency in Swift: Continuations | by Paul O","keywords":["Swift","Concurrency","영어"],"location":"https:\/\/medium.com\/@paulwall_21\/concurrency-in-swift-continuations-22420cbcc57b","comments":"Continuations에 대한 소개"},{"title":"DALL-E API in Swift — Generate Faces | by Anupam Chugh ","keywords":["Framework","SwiftUI","pick"],"location":"https:\/\/betterprogramming.pub\/dall-e-api-in-swift-generate-faces-e39a2625a5a2","comments":"베타 API를 제공하고 있는 DALL-E를 활용해서 앱에 적용하는 방법이네요"},{"title":"Developing Apps with the HomeKit Accessory Simulator","keywords":["Framework","HomeKit","영어"],"location":"https:\/\/www.createwithswift.com\/developing-apps-with-the-homekit-accessory-simulator\/?","comments":"홈킷 악세서리 시뮬레이터로 개발하는 과정을 소개합니다"},{"title":"DynaTimer With DynamicIsland | by Furkan ","keywords":["SwiftUI","Framework"],"location":"https:\/\/furkanhanci.medium.com\/dynatimer-with-dynamicisland-7891692228f6","comments":""},{"title":"How Xcode 14 unintentionally increases app size | Emerge Tools Blog","keywords":["DeveloperTools","영어","pick"],"location":"https:\/\/www.emergetools.com\/blog\/posts\/how-xcode14-unintentionally-increases-app-size?","comments":"Xcode 14에서 bitcode가 제거되면서 앱 크기가 늘어나서 바이너리 심볼을 줄이는 방법에 대한 소개입니다"},{"title":"Five ways to break Swift Concurrency | Mobile Messages","keywords":["Swift","Concurrency","영어","pick"],"location":"http:\/\/blog.hobbyistsoftware.com\/2022\/11\/five-ways-to-break-swift-concurrency\/?","comments":"Concurrency를 쉽게 쓸 수 있지만 문서상에 있는 것과 다르게 동작하는 경우를 찾아냈네요. 제가 볼때는 대부분 Objective-C 런타임과 호환성이 떨어지는 것 같네요"},{"title":"Gift Card Hacking | by Claudio Moran ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/@claudio_moranb\/gift-card-hacking-821d63a0b248","comments":"기트프 카드 번호를 해킹하기(?) 당연히 악용하면 안 되겠지만 특이한 주제라서 가져와 봤습니다. "},{"title":"How I made my app 73% lighter","keywords":["DeveloperTools"],"location":"https:\/\/sowenjub.me\/writes\/how-i-made-my-app-73-percent-ligther\/?","comments":"단일 크기 앱 아이콘을 지원하면서 PDF나 SVG 벡터 이미지를 사용해서 앱 크기를 줄이는 방법에 대한 실험 결과네요"},{"title":"How to Announce Incoming Text Messages in CarPlay | Mac O","keywords":["Hardware","DeveloperTools","Swift"],"location":"https:\/\/medium.com\/macoclock\/how-to-announce-incoming-text-messages-with-carplay-4a6c788833ba","comments":""},{"title":"How to add Snapshot Tests in Xcode 14 + Cloud | by Arvydas Ciupaila ","keywords":["Testing","영어"],"location":"https:\/\/medium.com\/@arvcpl\/how-to-add-snapshot-tests-in-xcode-14-cloud-1ede416da028","comments":""},{"title":"Implement Real-Time Filtering With CIFilter | by Bahadır Sönmez ","keywords":["Framework","CoreImage"],"location":"https:\/\/betterprogramming.pub\/real-time-filtering-with-cifilter-bf7af16aee04","comments":""},{"title":"Introducing LicenseKit | Daniel Saidi","keywords":["DeveloperTools","영어"],"location":"https:\/\/danielsaidi.com\/blog\/2022\/11\/09\/introducing-license-kit?","comments":"쉐어웨어나 기간제, 여러 플랫폼에서 라이센스를 관리하도록 도와주는 라이브러리라고 합니다"},{"title":"Low Effort Over-engineering, or clean architecture? | by Jim Lai ","keywords":["Architecture","Swift"],"location":"https:\/\/swift2931.medium.com\/low-effort-over-engineering-or-clean-architecture-62a061e50335","comments":"이 분은 글을 시니컬하게 쓰는 편인데 클린 아키텍처를 따라하다가 효과가 떨어지는 오버-엔지니어링 LEO에 대해 이야기합니다."},{"title":"Pin a view to the bottom of safe area in SwiftUI","keywords":["SwiftUI","영어"],"location":"https:\/\/nilcoalescing.com\/blog\/PinAViewToTheBottomOfSafeArea\/?","comments":""},{"title":"Q&A: 10 Questions with Design Evangelism - Discover - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=s8sl4tpa","comments":"11월에도 Ask Apple 이벤트가 진행됐습니다. 디자인 관련 문의 중에서 10개를 정리했네요"},{"title":"Should You Multithread? An Experiment-Driven Approach | by Kyro ","keywords":["Culture","영어"],"location":"https:\/\/betterprogramming.pub\/should-you-multithread-an-experiment-driven-approach-92c09db6a1f","comments":"여러 번 계산하는 행렬 계산하는 구조를 만들고 병렬 연산을 위해서 스레드가 필요한가 실험적으로 증명하는 글입니다"},{"title":"Swift Evolution Monthly: October ‘22 | by Cihat Gündüz ","keywords":["Swift"],"location":"https:\/\/jeehut.medium.com\/swift-evolution-monthly-october-22-5d09bcbaa564","comments":"10월말 기준 Swift Evolution 요약 정리입니다. 다음 릴리스 쯤에 반영될 내용들이 흥미롭네요"},{"title":"Swift.org - Swift project in 2023","keywords":["Swift"],"location":"https:\/\/www.swift.org\/blog\/focus-areas-2023\/?","comments":"2023년에 스위프트 방향성에 대한 글입니다. Swift 6부터는 Concurrency, Generics, Ownership, Macros, C++ 호환성 등을 중점적으로 개선한다고 합니다"},{"title":"SwiftUI Binding Extensions | by Michael Long ","keywords":["SwiftUI"],"location":"https:\/\/betterprogramming.pub\/swiftui-binding-extensions-b6a9f27d2858","comments":""},{"title":"SwiftUI Labeled Content","keywords":["SwiftUI","영어"],"location":"https:\/\/useyourloaf.com\/blog\/swiftui-labeled-content\/?","comments":""},{"title":"Teabyte | Redact Lock Screen Widgets when the device is locked","keywords":["Framework","영어"],"location":"https:\/\/alexanderweiss.dev\/blog\/2022-11-19-redact-your-lockscreen-widgets-when-the-device-is-locked?","comments":"디바이스 잠금 상태에서 위젯을 바꾸는 방법입니다"},{"title":"The Ultimate Domain Language: Declarative Swift | by Manuel Meyer ","keywords":["Swift","영어"],"location":"https:\/\/betterprogramming.pub\/the-ultimate-domain-language-declarative-swift-37b0a04e4e32","comments":"그래픽 관련 연산을 위한 선언적인 표현이 가능하다는 것을 보여주고, Nimble로 테스트하는 코드까지 있어서 추천합니다"},{"title":"Tutorial: Build an iOS 16 Lockscreen-inspired AR Experience with Realitykit and Swift | Medium","keywords":["Framework","RealityKit"],"location":"https:\/\/coledennis.medium.com\/tutorial-build-an-ios-16-lock-screen-inspired-ar-experience-with-realitykit-and-swift-806f44195319","comments":"잠금화면처럼 동작하는 AR 앱을 만드는 과정입니다"},{"title":"Typewriter Effect in SwiftUI | by Ix","keywords":["SwiftUI","Swift"],"location":"https:\/\/betterprogramming.pub\/typewriter-effect-in-swiftui-ba81db10b570","comments":""},{"title":"Using complex gestures in a SwiftUI ScrollView | Daniel Saidi","keywords":["SwiftUI","영어"],"location":"https:\/\/danielsaidi.com\/blog\/2022\/11\/16\/using-complex-gestures-in-a-scroll-view?","comments":""},{"title":"Why It’s Not a Good Idea for the EU to Force Open iPhones to Allow Sideloading | by Jakub Jirak ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/macoclock\/why-its-not-a-good-idea-for-the-eu-to-force-open-iphones-to-allow-sideloading-ffe288ebc4ee","comments":""},{"title":"iOS 16 WeatherKit: detailed step-by-step implementation guide | by MszPro ","keywords":["SwiftUI","WeatherKit","영어"],"location":"https:\/\/articles.mszpro.com\/ios-16-weatherkit-detailed-step-by-step-implementation-guide-3ebc143f4547","comments":""},{"title":"iOS App Security 101. Comprehensive guide on iOS App Security | by Elina Semenko ","keywords":["DeveloperTools","Security"],"location":"https:\/\/medium.com\/mobilepeople\/ios-app-security-101-62f20b6640ba","comments":"이제 Privacy와 Security 가 귀찮을 정도로 챙기게 좀 있죠. 공부하면서 정리한 것 같은데 간략해서 좋습니다"},{"title":"iOS Design Guidelines: Illustrated Patterns (+ free templates)","keywords":["Design","DeveloperTools"],"location":"https:\/\/www.learnui.design\/blog\/ios-design-guidelines-templates.html","comments":"iOS 디자인 가이드라인에 대한 상세한 설명과 템플릿이 포함된 문서입니다. "},{"title":"Black Friday Deals for macOS \/ iOS Software & Books","keywords":["Culture"],"location":"https:\/\/github.com\/mRs-\/Black-Friday-Deals?","comments":"예전에도 한 번 소개했던 것 같은데, 블랙 프라이데이 딜로 올라온 맥\/iOS 소프트웨어와 책까지 포함되어 있습니다"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-69.json: -------------------------------------------------------------------------------- 1 | {"sequence":69,"releaseAt":692377200,"items":[{"title":"Thread Sanitizer: Xcode | by Mamta Sharma ","keywords":["DeveloperTools","Swift","영어"],"location":"https:\/\/mamtasharmaios.medium.com\/thread-sanitizer-xcode-7f694c17877d","comments":"굳이 번역하면 스레드 사용 버그를 찾는 스레드 소독제(?) - Thread Sanitizer 활용에 대한 소개입니다"},{"title":"ChatGPT Does SwiftUI | by Michael Long ","keywords":["SwiftUI","Swift","영어"],"location":"https:\/\/betterprogramming.pub\/chatgpt-vs-swiftui-febc24c6d8a","comments":"그야말로 입코딩(?)이 가능한 시대가 되어 갑니다. ChatGPT로 SwiftUI 코드를 작성한 예시네요"},{"title":"5 Harsh Truths for Success from Linus Torvalds | by Ugur Yagmur ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/codex\/5-harsh-truths-from-linus-torvalds-406ab20cea02","comments":"토발즈에게 배우는 5가지 뼈아픈 진실들 - 우리 업계에서 아쉬운 환상에 대한 이야기 같습니다"},{"title":"A new week of Ask Apple starts December 12 - Latest News - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=w8mnmpnp","comments":"10월부터 하고 있는 Ask Apple 주간이 내일부터 다시 시작됩니다"},{"title":"Allow XCTest to simulate location - Testableapple","keywords":["Testing"],"location":"https:\/\/testableapple.com\/note-35\/?","comments":"XCTest로 로케이션 정보 시뮬레이트하는 방법을 상세하게 설명합니다"},{"title":"Announcing Lottie 4.0 for iOS | by Cal Stephens ","keywords":["Framework","영어","pick"],"location":"https:\/\/medium.com\/airbnb-engineering\/announcing-lottie-4-0-for-ios-d4d226862a54","comments":"에어비엔비에서 성능 개선한 iOS용 Lottie를 업데이트했습니다"},{"title":"App Design Inspiration 87 | UX Product Design Company ","keywords":["Design","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-87-142a5e28b898","comments":""},{"title":"Apple, 대한민국 개발자를 위한 업데이트 공개 - Apple (KR)","keywords":["APPLE"],"location":"https:\/\/www.apple.com\/kr\/newsroom\/2022\/12\/apple-unveils-changes-for-developers-in-south-korea\/","comments":"앱 스토어 가격 정책이 세분화되고 부가세를 제외하고 가격을 정할 수 있다고 합니다"},{"title":"Area chart with a dimming layer up to the current point in time","keywords":["SwiftUI","Charts","영어"],"location":"https:\/\/nilcoalescing.com\/blog\/AreaChartWithADimmingLayer\/?","comments":""},{"title":"Building a Wrapping HStack With the SwiftUI Layout Protocol | by Konstantin Semianov ","keywords":["SwiftUI","Swift","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/building-a-wrapping-hstack-with-the-swiftui-layout-protocol-1e718239bf57","comments":"레이아웃 프로토콜을 이용해서 HStack 처럼 동작하도록 만드는 방법을 설명합니다"},{"title":"ChatGPT is pretty good at SwiftUI | by Hohyeon Moon ","keywords":["SwiftUI","Framework","영어"],"location":"https:\/\/hohyeonmoon.medium.com\/chatgpt-is-pretty-good-at-swiftui-67adc87de9ec","comments":"ChatGPT로 계산기를 만드는 과정을 설명합니다"},{"title":"Collecting Github Action workflow metrics using Swift","keywords":["DeveloperTools","영어","pick"],"location":"https:\/\/www.polpiella.dev\/collecting-gihub-actions-workflow-metrics-with-swift\/?","comments":"깃헙 액션 워크플로우에서 스위프트로 API를 호출해서 지표를 생성하는 방법을 설명합니다"},{"title":"Configuring App Updates for Mac Catalyst Apps With Sparkle | by Eskil Gjerde Sviggum ","keywords":["AppKit","영어"],"location":"https:\/\/betterprogramming.pub\/configuring-app-updates-for-mac-catalyst-apps-with-sparkle-beef7a90a515","comments":"맥용 카탈리스트 앱에서 Sparkle 라이브러리를 사용해서 업데이트하는 방법입니다"},{"title":"Create a Basic Shortcut using App Intents | Swiftjective-C","keywords":["Framework","영어"],"location":"https:\/\/www.swiftjectivec.com\/snip-create-a-basic-app-intent\/?","comments":"앱 인텐트를 활용해서 간단한 단축어 만들기입니다"},{"title":"Developer guide on the App Store Connect API","keywords":["DeveloperTools","영어"],"location":"https:\/\/tanaschita.com\/20221128-app-store-connect-api-quide\/?","comments":"앱 스토어 커넥트 서버 API를 연동하기 위한 가이드 문서입니다"},{"title":"Factory: Multiple Module Registration | by Michael Long ","keywords":["Swift","Architecture"],"location":"https:\/\/betterprogramming.pub\/factory-multiple-module-registration-f9d19721a31d","comments":"Resolver를 활용해서 팩토리 형태 여러 모듈을 등록하는 방법입니다"},{"title":"How I Optimize Memory Consumption for Content-Rich Apps | by Fahri Novaldi ","keywords":["Framework","SwiftUI","Culture"],"location":"https:\/\/medium.com\/@gremlinflat\/how-i-optimize-memory-consumption-for-content-rich-apps-9f1be8fe22af","comments":"인도네시아 Binus 애플 아카데미 러너가 메모리 소모 문제를 해결하는 과정을 정리한 글이네요"},{"title":"How to use FormatStyle to restrict TextField input in SwiftUI","keywords":["SwiftUI","영어"],"location":"https:\/\/www.avanderlee.com\/swiftui\/formatstyle-formatter-restrict-textfield-input\/?","comments":""},{"title":"Image Encryption in iOS: Part 1 | by Jade ","keywords":["Framework","Swift","영어","pick"],"location":"https:\/\/medium.com\/@pinkjuice66\/image-encryption-in-ios-part-1-c08f90c51293","comments":"이미지를 암호화하는 과정을 학습하면서 정리했네요. 낯선 용어들이 있지만 어렵지 않은 내용들입니다"},{"title":"Interactive SwiftUI View Using TCA | by mein ","keywords":["SwiftUI","Architecture","영어"],"location":"https:\/\/luomein.medium.com\/interactive-swiftui-view-using-tca-79a38d38fa76","comments":"간단한 TCA 구조를 학습하면서 샘플을 만드는 과정입니다. 따라해보기는 적당한 것 같습니다"},{"title":"Learn Generics in Swift | by Taha Bebek ","keywords":["Swift"],"location":"https:\/\/betterprogramming.pub\/generics-in-swift-2cd549c53075","comments":"제네릭과 관련된 개념들을 한꺼번에 정리해주는 글이네요. "},{"title":"Prototyping SwiftUI interfaces with OpenAI's ChatGPT","keywords":["SwiftUI","Framework"],"location":"https:\/\/www.createwithswift.com\/prototyping-swiftui-interfaces-with-openais-chatgpt\/?","comments":"ChatGPT로 요구사항을 설명하면서 앱 프로토타입을 만드는 과정이네요"},{"title":"Setting up a build tool plugin for a Swift package – Augmented Code","keywords":["DeveloperTools","Culture","영어","pick"],"location":"https:\/\/augmentedcode.io\/2022\/11\/28\/setting-up-a-build-tool-plugin-for-a-swift-package\/?","comments":"스위프트 패키지에서 빌드 도구 플러그인 설정하는 방법입니다. 빌드하기 전에 명령을 실행해서 코드를 생성할 때 유용하겠네요"},{"title":"Sheets in SwiftUI explained with code examples - SwiftLee","keywords":["SwiftUI","Testing","영어"],"location":"https:\/\/www.avanderlee.com\/swiftui\/presenting-sheets\/?","comments":""},{"title":"SwiftUI view modifier for paid app features","keywords":["SwiftUI","영어"],"location":"https:\/\/trycombine.com\/posts\/simple-view-modifier-to-handle-features-that-are-only-enabled-in-the-pro-version-of-the-app\/?","comments":""},{"title":"dataTile | Forget debugging in the console","keywords":["Testing","영어"],"location":"https:\/\/underplot.com\/dataTile\/?","comments":"dataTile 이라는 디버깅 데이터를 시각화해주는 앱입니다"},{"title":"Using Apple’s Built-in NaturalLanguage Framework For Sentiment Analysis in iOS App Development | by Kevin Jonathan ","keywords":["Framework","NL"],"location":"https:\/\/kevin-jonathan.medium.com\/using-apples-built-in-naturallanguage-framework-for-sentiment-analysis-in-ios-app-development-6c7001176680","comments":"자연어 처리 분석 라이브러리를 이용해서 감정 분석하는 앱을 만드는 과정입니다. 애플 예제와 크게 다르지는 않습니다"},{"title":"View Code’s Handbook for iOS Developers | by Pedro Alvarez ","keywords":["UIKit","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/ios-view-codes-handbook-1a08e28b0420","comments":"이 분 블로그 읽을 때마다 생각의 흐름을 잘 정리하는 것 같아서 추천합니다. UIView를 코드로 만드는 의식의 흐름을 정리했네요"},{"title":"What the ZSH is ZSH, and what is BASH anyway? An iOS developer’s guide | by Steven Curtis ","keywords":["Culture","영어"],"location":"https:\/\/stevenpcurtis.medium.com\/what-the-zsh-is-zsh-and-what-is-bash-anyway-an-ios-developers-guide-3faacbcee416","comments":"쉘 환경에 대한 시작점으로 좋은 것 같습니다"},{"title":"When dependency injection blows up in your face | by Jim Lai ","keywords":["Swift","Architecture","Framework"],"location":"https:\/\/swift2931.medium.com\/when-dependency-injection-blows-up-in-your-face-306047f1036c","comments":"Swinject 같은 프레임워크가 없어도 의존성 주입을 다룰 수 있을까에 대한 주장입니다"},{"title":"Why Don’t Macs With Apple Silicon Support eGPU? | by Jakub Jirak ","keywords":["Hardware","Culture"],"location":"https:\/\/medium.com\/macoclock\/why-dont-macs-with-apple-silicon-support-egpu-db13a705512c","comments":""},{"title":"clipped() doesn’t affect hit testing – Ole Begemann","keywords":["SwiftUI","영어"],"location":"https:\/\/oleb.net\/2022\/clipped-hit-testing\/?","comments":"clipped()로 잘라낸 경우에 경계 외부를 터치해도 처리가 된다는 얘기입니다"},{"title":"iOS 16.2 Keeps Getting Impressive — 7 More Features! | by Nikhil Vemu ","keywords":["Culture","Swift"],"location":"https:\/\/medium.com\/macoclock\/the-ios-16-2-update-is-way-bigger-than-weve-expected-7-amazing-features-a47ca64a47d4","comments":"iOS 16.2가 며칠내에 배포됩니다. 7가지 새로운 기능을 소개하는 글이네요. (이제 다같이 때창가능한가요)"},{"title":"iOS Sharing — Send SMS. 3-Steps to Send Out an SMS message | by Myrick Chow ","keywords":["Framework"],"location":"https:\/\/itnext.io\/ios-sharing-send-sms-6bf8c5050a26","comments":""},{"title":"open-turo\/token-text-view: A text view for creating tokenized text.","keywords":["Culture","OpenSources"],"location":"https:\/\/github.com\/open-turo\/token-text-view","comments":"UITextView에서 특정한 토큰을 구분해서 다룰 수 있도록 확장한 오픈소스"}],"version":"1.0"} 2 | -------------------------------------------------------------------------------- /json/news-70.json: -------------------------------------------------------------------------------- 1 | {"sequence":70,"releaseAt":693586800,"items":[{"title":"Another ChatGPT SwiftUI Session | by Michael Long ","keywords":["SwiftUI","Framework"],"location":"https:\/\/betterprogramming.pub\/another-chatgpt-swiftui-session-67359737033a","comments":"ChatGPT와 대화하면서 프로그래밍 코드를 만들어가는 경험을 이어서 설명합니다"},{"title":"App Design Inspiration 88 | Best App Design Company ","keywords":["Design","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-88-9e5603e34c7e","comments":""},{"title":"App Development Inspiration 156 | Android Company ","keywords":["Design"],"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-156-c9dc7381abf8","comments":""},{"title":"App Development Inspiration 157 | Kotlin Company ","keywords":["Design","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-157-f468c969700e","comments":""},{"title":"AppCode 2022.3 Release and End of Sales and Support | The AppCode Blog","keywords":["Culture"],"location":"https:\/\/blog.jetbrains.com\/appcode\/2022\/12\/appcode-2022-3-release-and-end-of-sales-and-support\/","comments":"아쉽게도 Xcode 대안이었던 AppCode가 종료된다는 소식이네요"},{"title":"Apple Watch App Development Guide | by Poonam Soni ","keywords":["Culture"],"location":"https:\/\/poonamong.medium.com\/apple-watch-app-development-guide-4a5aa41ec833","comments":"워치 앱을 개발하기 시작할 때 참고하면 좋은 가이드 문서입니다"},{"title":"Audio visualization using Swift\/SwiftUI | by Karen Mirakyan ","keywords":["Framework","Audio"],"location":"https:\/\/karenxpn.medium.com\/audio-visualization-using-swift-swiftui-ffbf9aa8d577","comments":"예제 코드 수준이라 오디오 파형을 이렇게 할 수 있다 정도입니다"},{"title":"Build Time Optimizations (Xcode) | by Dhruvil Patel ","keywords":["DeveloperTools"],"location":"https:\/\/bytes.swiggy.com\/build-time-optimizations-xcode-911c9c3ac8ff","comments":"빌드 옵션과 Xcode 기능을 활용해서 빌드 시간 최적화를 하는 팁입니다. 잘 모르던 옵션을 활용하면 좋겠네요"},{"title":"Building a Hexagonal Grid With the SwiftUI Layout Protocol | by Konstantin Semianov ","keywords":["SwiftUI","Layout"],"location":"https:\/\/betterprogramming.pub\/building-a-hexagonal-grid-with-the-swiftui-layout-protocol-f7b0efeeacbf","comments":""},{"title":"Building custom layout in SwiftUI. LayoutValueKey. | Swift with Majid","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftwithmajid.com\/2022\/12\/14\/building-custom-layout-in-swiftui-layoutvaluekey\/?","comments":""},{"title":"Bullet List With UIKit | by Ed ","keywords":["UIKit","영어"],"location":"https:\/\/medium.com\/@yeeedward\/bullet-list-with-uikit-30d5a68f7679","comments":"이제 UIKit 자료는 이렇게 처음 공부하는 분들 자료가 아니면 거의 없네요"},{"title":"Concurrency in modern Swift with Async & Await in SwiftUI — Part 1 | by DevTechie ","keywords":["SwiftUI","Swift"],"location":"https:\/\/medium.com\/devtechie\/concurrency-in-modern-swift-with-async-await-in-swiftui-part-1-dff1601f1e17","comments":""},{"title":"Configuring UI tests with launch arguments","keywords":["Testing","영어","pick"],"location":"https:\/\/www.polpiella.dev\/configuring-ui-tests-with-launch-arguments?","comments":"실행할 때 인자값에 따라서 UI 테스트를 다르게 하는 방법을 정리했네요"},{"title":"Creating a Google Fonts Browser in SwiftUI for MacOS | by Scott Andrew ","keywords":["SwiftUI","UIKit","영어","pick"],"location":"https:\/\/betterprogramming.pub\/creating-a-google-fonts-browser-in-swiftui-49c94787d14a","comments":"구글 웹 폰트 목록을 가져와서 보여주는 흥미로운 예제입니다."},{"title":"Factory: Circular Dependency Chains | by Michael Long ","keywords":["Swift","Architecture"],"location":"https:\/\/betterprogramming.pub\/factory-circular-dependency-chains-ece39a7d2bc8","comments":"순환 의존성이 있는 경우에 의존성을 다루는 `Factory`에서 컨테이너를 구현한 방법을 설명합니다. "},{"title":"Functional Reactive Programming using Combine framework | by Mahesh Nagpure ","keywords":["Framework"],"location":"https:\/\/medium.com\/@mahesh.nagpure.mailbox\/functional-reactive-programming-using-combine-framework-ea1e1d0c301a","comments":"저는 Reactive Programming을 함수형으로 다루는 방식과 FRP를 구분해야 한다고 생각하는 데 이 글은 좀 뒤섞여있네요. 그 부분이 좀 아쉬운 글입니다"},{"title":"Getting Started With Swift — C++ Interoperability | by Konstantin Semianov ","keywords":["Swift","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/getting-started-with-swift-c-interoperability-a361ed617184","comments":"Swift가 C++ 상호 호환성을 목표로 하고 개선 중입니다. 그와 관련해서 소수 찾기 코드를 비교해보는 글입니다"},{"title":"How to Create an iOS Lock Screen Widget? | by Lee Kah Seng ","keywords":["SwiftUI","Framework"],"location":"https:\/\/leekahseng.medium.com\/how-to-create-an-ios-lock-screen-widget-caf65f3dd7b8","comments":""},{"title":"Implementing Pinterest-like layout using compositional layout | by Evgenii Shishko ","keywords":["UIKit","Framework"],"location":"https:\/\/blog.devgenius.io\/implementing-pinterest-like-layout-using-compositional-layout-a21d8ae49d18","comments":"이제 iOS 13+ 이상으로 타깃을 올리는 곳이 많아져서 UICollectionViewCompositionalLayout 활용도가 높아질 것 같습니다"},{"title":"Java is Dead — 5 Misconceptions of developers that still think Java is relevant today! | by Sid Thomas ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/@sidh.thomas1\/java-is-dead-6-misconceptions-of-developers-that-still-think-java-is-relevant-today-683310849855","comments":"여전히 자바 백엔드 개발자가 세상을 지배한다고 믿는 분들이 많죠. 수요와 공급 측면에서만 봐야하는 것인지, 또 다른 시야는 무엇이 필요한지 생각해보는 글입니다. 물론 한국 시장과는 좀 다른 것 같네요"},{"title":"Lazy Closures Using Swift. Delay that heavyweight work | by Steven Curtis ","keywords":["Swift"],"location":"https:\/\/stevenpcurtis.medium.com\/lazy-closures-using-swift-bb658f7c8f87","comments":"lazy 변수를 만드는 것처럼 클로저를 선언할 때도 lazy를 활용할 수 있다는 짧은 글입니다"},{"title":"OptionSet in Swift explained with code examples - SwiftLee","keywords":["Swift","영어"],"location":"https:\/\/www.avanderlee.com\/swift\/optionset-swift\/?","comments":"OptionSet 프로토콜에 대한 설명입니다"},{"title":"Pop-Up And Pull-Down Buttons in AppKit | by Gabriel Theodoropoulos ","keywords":["AppKit","UIKit"],"location":"https:\/\/betterprogramming.pub\/pop-up-and-pull-down-buttons-in-appkit-17dd1ab2aa46","comments":"보기 드물게 맥용 팝업 버튼을 만드는 과정을 설명합니다"},{"title":"Quick Swift Tip: using CompactMap | by Alessandro Manilii ","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@alessandromanilii\/quick-swift-tip-using-flatmap-81a7a1005b47","comments":""},{"title":"Server-Driven UI using SwiftUI | by Elyes DER ","keywords":["SwiftUI","ServerSide","pick"],"location":"https:\/\/lyesderouich.medium.com\/server-driven-ui-using-swiftui-b91be442b3f6","comments":"토스에서도 서버에서 UI 뷰를 결정해서 내려주는 방식을 시도하고 있다고 들었는데, 비슷한 방법으로 뷰 아키텍처를 정하고 JSON으로 보낸 뷰를 구현한 방법을 설명합니다"},{"title":"Setting Up a Multiplayer 3D Chess Using RealityKit, ARKit, and SwiftUI | by Mark Lucking ","keywords":["Framework","SwiftUI"],"location":"https:\/\/betterprogramming.pub\/setting-up-a-multiplayer-3d-chess-using-realitykit-arkit-and-swiftui-905345301153","comments":"3D 체스 만들기를 설명합니다"},{"title":"Shaders | Dan Hollick ","keywords":["Framework","영어","pick"],"location":"https:\/\/typefully.com\/DanHollick\/gpnhhud?","comments":"쉐이더에 대해 설명하기 위해서 CPU와 GPU 차이점부터 설명하는 보기 드문 글이네요"},{"title":"Split View For iPad with Auto Layout Constraints | by lyvennitha sasikumar ","keywords":["UIKit","Framework"],"location":"https:\/\/lyvennithasasikumar.medium.com\/split-view-for-ipad-with-auto-layout-constraints-c24938dab40a","comments":""},{"title":"Swift Enum With Labeled Associated Values","keywords":["Swift","영어"],"location":"https:\/\/blog.eidinger.info\/swift-enum-with-labeled-associated-values?","comments":""},{"title":"Swift Stride Quick Guide","keywords":["Swift","영어"],"location":"https:\/\/useyourloaf.com\/blog\/swift-stride-quick-guide\/?","comments":""},{"title":"Swift global Phone Number Formatter & Mask easy to use | by Diney Bomfim ","keywords":["Framework","Swift","pick"],"location":"https:\/\/medium.com\/@dineybomfim\/swift-global-phone-number-formatter-mask-easy-to-use-d1889a973550","comments":"전세계 전화번호에서 국가 코드랑 포맷에 맞는지 검사하기 위한 방법을 설명합니다"},{"title":"Swift.org - The Future of Foundation","keywords":["Swift","영어","pick"],"location":"https:\/\/www.swift.org\/blog\/future-of-foundation\/?","comments":"OS X을 만들면서 C로 만들어진 Core Foundation과 Objective-C로 포장했던 Foundation이 이제 Swift 기반 오픈소스로 완전히 대체된다고 하네요. 
더 이상 C 코드도 없이 스위프트로만 구현하고, 작은 패키지 단위로 쪼개서 배포됩니다. 이미 애플 플랫폼이 아니라 리눅스에서 Foundation을 사용하면 경험해보실 수 있습니다"},{"title":"Swift: Declarative request builder | by brenno ","keywords":["OpenSource","Framework"],"location":"https:\/\/onnerb.medium.com\/swift-declarative-request-builder-9778bde0f721","comments":"네트워크 요청을 선언적으로 다루기 위해 RequestDL 이라는 오픈소스를 만들고 사용하는 방법을 정리한 글이네요"},{"title":"SwiftUI Is Not Yet Ready — UIKit is still the way to go! | by Sid Thomas ","keywords":["SwiftUI","UIKit","Testing","pick"],"location":"https:\/\/medium.com\/@sidh.thomas1\/swiftui-is-not-yet-ready-uikit-is-still-the-way-to-go-9ea6442d0d0","comments":"SwiftUI는 안되지만 UIKit으로 할 수 있는 것들을 짧게 정리한 글입니다"},{"title":"SwiftUI Tutorial -Creating a Style-able Address Form Component — Part 1 | by Taha Bebek ","keywords":["SwiftUI","Swift","UIKit"],"location":"https:\/\/medium.com\/@tahabebek\/advanced-swiftui-tutorial-creating-a-style-able-address-form-component-part-1-52bbd4f3ccbd","comments":""},{"title":"SwiftUI Tutorial: Create Child Views with ViewBuilder | by Arc Sosangyo ","keywords":["SwiftUI","Swift","Architecture"],"location":"https:\/\/blog.devgenius.io\/swiftui-tutorial-create-child-views-with-viewbuilder-e1ee5a312271","comments":"요즘 SwiftUI 따라하기 튜토리얼 글들이 엄청 많네요. 그 중에서도 ViewBuilder로 뷰를 생성하는 글입니다"},{"title":"The Importance of Code Ownership. Well-owned code is well-maintained code | by Elye ","keywords":["Culture","영어","pick"],"location":"https:\/\/betterprogramming.pub\/the-underestimated-importance-of-clear-code-ownership-baed758e47b8","comments":"코드가 처음 만들어지는 시점부터 성장하고, 재사용하고, (소유권이 없지만) 합쳐지고, 자동화되서 다른 부서로 넘어가고 변화할 때까지 흐름을 설명합니다"},{"title":"Timer, Interactive Ticks Using TCA | by mein ","keywords":["SwiftUI","UIKit","영어"],"location":"https:\/\/luomein.medium.com\/timer-interactive-ticks-using-tca-71c221b88e50","comments":"TCA로 타이머를 구현하는 과정에서 설정 화면을 다루는 예제입니다. "},{"title":"Tired Of Objc Method Swizzling? Check Out Swifty Alternative. | by Kiarash Vosough ","keywords":["Swift","Testing"],"location":"https:\/\/medium.com\/divar-mobile-engineering\/tired-of-objc-method-swizzling-check-out-swifty-alternative-c6606313a883","comments":"실험적으로 머지된 걸로 기억해서 `@_dynamicReplacement`를 써본 적이 없는데 잘 설명되어 있습니다"},{"title":"Using App Intents with iOS 16 | by Giulio Caggegi ","keywords":["Framework"],"location":"https:\/\/medium.com\/@giulio.caggegi\/use-app-intents-with-ios-16-90a341ccbc94","comments":""},{"title":"Using the C4 Model to Design Applications | by Ashley Peacock ","keywords":["Culture","Architecture"],"location":"https:\/\/medium.com\/pragmatic-programmers\/using-the-c4-model-to-design-applications-c2e0944018ad","comments":"전에 소개한 적이 있는 C4 모델로 설계하는 과정을 보여줍니다"},{"title":"What is copy on write? | by App Developer ","keywords":["Swift","영어","pick"],"location":"https:\/\/medium.com\/@iostpointblog\/what-is-copy-on-write-18701742e60c","comments":"배열 Copy on write를 실험적으로 보여주고, 직접 동작하도록 Struct를 만드는 예제입니다"},{"title":"What is the difference between Self vs self in Swift? | by App Developer ","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@iostpointblog\/what-is-the-difference-between-self-vs-self-in-swift-905321f6848a","comments":""},{"title":"Why DMG Disk Images Are Used To Install Applications On macOS | by Jakub Jirak ","keywords":["AppKit","Swift"],"location":"https:\/\/medium.com\/predict\/why-dmg-disk-images-are-used-to-install-applications-on-macos-ff7b5cf104f4","comments":"macOS에서 DMG로 앱 인스톨을 하는 이유를 설명합니다"},{"title":"Wi-Fi positioning system (WPS) on iOS | by ChihSheng, Feng ","keywords":["Framework","Swift","UIKit"],"location":"https:\/\/medium.com\/@wsx5031060310guy\/wi-fi-positioning-system-wps-on-ios-191c5c70a70f","comments":"WPS 원리와 동작을 설명합니다"},{"title":"Workaround: simctrl status_bar broken for iOS 16 simulators · Jesse Squires","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.jessesquires.com\/blog\/2022\/12\/14\/simctrl-status_bar-broken\/?","comments":"simctl 명령으로 status_bar 옵션이 안되는 내용입니다"},{"title":"iOS In-App Subscription Tutorial with StoreKit 2 and Swift","keywords":["Framework","StoreKit","영어"],"location":"https:\/\/www.revenuecat.com\/blog\/engineering\/ios-in-app-subscription-tutorial-with-storekit-2-and-swift\/?","comments":"StoreKit 2로 인앱 구독 구현하는 예제입니다"},{"title":"iOS View Code: A Solution To Keep the Encapsulation of the Pipeline | by Pedro Alvarez ","keywords":["Swift","SwiftUI"],"location":"https:\/\/betterprogramming.pub\/ios-view-code-a-solution-to-keep-the-encapsulation-f378dc8b1502","comments":"이전에 소개했던 코드로 뷰를 만드는 자기만의 방식을 정리한 글의 연장선입니다."}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-71.json: -------------------------------------------------------------------------------- 1 | {"sequence":71,"releaseAt":694796400,"items":[{"title":"Xcode Cloud: The basics 🚀 | by Developers at Coffee IT ","keywords":["DeveloperTools","영어"],"location":"https:\/\/medium.com\/@developers_coffeeit\/xcode-cloud-the-basics-a9b269ae9d97","comments":""},{"title":" What is Objective-C? | by Mammadowr ","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@mammadowr\/what-is-objective-c-f77ac5e06be5","comments":"이제는 스위프트 언어를 먼저 배운 개발자들이 많아지면서 오브젝티브-C 소개를 해야하는 상황이겠죠? 점차 `@objc` 런타임을 사용하는 경우가 줄어들고 맥락을 몰라도 되지만 여전히 필요하긴 한 것 같습니다"},{"title":"Part 3: Writing an Auto Layout DSL with Swift’s Operator Overloading and Result Builders | by Simeon Rumyannikov ","keywords":["UIKit","영어"],"location":"https:\/\/simeonrumyannikov.medium.com\/part-3-writing-an-auto-layout-dsl-with-swifts-operator-overloading-and-result-builders-%25EF%25B8%258F-aed6e269efb5","comments":"오토레이아웃 DSL을 만들고 연산자와 Result Builder를 활용해서 간결하게 표현하는 방식에 대한 설명입니다"},{"title":"A minimal implementation of State and Binding with Swift · Whacky Labs","keywords":["Swift","영어","pick"],"location":"https:\/\/whackylabs.com\/architecture\/combine\/swift\/ios\/2022\/12\/27\/minimal-state-binding\/?","comments":"State와 Binding을 최소 기능만 직접 구현하는 과정을 설명합니다"},{"title":"App Design Inspiration 90 | UI UX Design Firm ","keywords":["Design","Swift","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-90-d9408337b273","comments":""},{"title":"App Development Inspiration 158 | Phonegap Company ","keywords":["Design","DeveloperTools","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-158-79a07cc09dc1","comments":""},{"title":"App Development Inspiration 159 | Top Agency ","keywords":["Design","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-159-20dbe55a7331","comments":""},{"title":"Apple’s Freeform App Is Dangerously Good | by Attila Vágó ","keywords":["Hardware","Culture","DeveloperTools"],"location":"https:\/\/medium.com\/codex\/apples-freeform-app-is-dangerously-good-aa1f854e63de","comments":"Freeform 앱에 대해 상세한 소감이네요. 기능이 전문적인 프로토타입이나 디자인 도구보다는 확실히 공동작업에 맞춰진 것 같아서 모두 잡는 것은 아닌 것 같습니다."},{"title":"Auto-Completion Feature Improvements in Xcode 14","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.netguru.com\/blog\/auto-completion-feature-improvements-in-xcode-14?","comments":""},{"title":"Breaking Big Applications into Small Applications | by Erik Engheim ","keywords":["Culture","영어","pick"],"location":"https:\/\/erik-engheim.medium.com\/breaking-big-applications-into-small-applications-ef93b0bc570b","comments":"응용 프로그램들이 점점 기능이 많아지고 복잡해서 거대해지는 흐름을 설명하고, 다시 또 작은 앱으로 바뀌는 역사적인 흐름을 설명하는 긴 글입니다"},{"title":"Case Study: Building The Augmented Reality iOS Game “Match the ‘Moji” using ARKit and SwiftUI | by Cole Dennis ","keywords":["SwiftUI","Framework","Culture"],"location":"https:\/\/coledennis.medium.com\/case-study-building-the-augmented-reality-ios-game-match-the-moji-using-arkit-and-swiftui-ce6b9aaa41fa","comments":"ARKit으로 이모지와 비슷한 표정 짖기 게임을 구현하는 예시입니다"},{"title":"Concurrency in modern Swift with Async & Await in SwiftUI — Part 5 | by DevTechie ","keywords":["SwiftUI","Swift","영어"],"location":"https:\/\/medium.com\/devtechie\/concurrency-in-modern-swift-with-async-await-in-swiftui-part-5-abefd657377b","comments":"이렇게 async\/await 기능을 쓸 수 있다는 것은 알겠지만, 너무 직접적이라 아쉬운 예제네요"},{"title":"Creating Menu Bar Apps in SwiftUI for MacOS Ventura | by Schurigeln ","keywords":["AppKit","SwiftUI"],"location":"https:\/\/betterprogramming.pub\/create-menu-bar-apps-for-macos-ventura-or-higher-4c05a5b28e31","comments":"SwiftUI로 메뉴바 앱을 만드는 과정을 설명합니다"},{"title":"Custom PopoverView in SwiftUI — Popover with arrow and rounded corners.(Shape) | by Aisultan Askarov ","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/@aisultan.askarov\/custom-popoverview-in-swiftui-popover-with-arrow-and-rounded-corners-shape-4b012caee60b","comments":"커스텀 팝오버뷰 만들기 예시입니다"},{"title":"Data-Driven UI with UIKit | by Sidharth Juyal ","keywords":["UIKit","영어"],"location":"https:\/\/medium.com\/@chunkyguy\/data-driven-ui-with-uikit-864e490e902c","comments":"상세한 설명이 조금 부족해서 아쉽지만, 렌더링 흐름에 대해 간단하게 이해하는 데 도움이 됩니다"},{"title":"Dear Bosses: Ask, before buying a Macbook for Linux Programmers | by Nav ","keywords":["Hardware"],"location":"https:\/\/nav9.medium.com\/dear-bosses-dont-give-a-macbook-to-linux-programmers-4c4dcbfedc1","comments":"리눅스 개발자에게 맥북을 사기 전에 물어봐야 할 사항들이라고 합니다 "},{"title":"Delete Storyboard (Xcode 14 Edition) | by Steven Curtis ","keywords":["UIKit","Framework"],"location":"https:\/\/stevenpcurtis.medium.com\/delete-storyboard-xcode-14-edition-5bb78c150ff5","comments":"메인 스토리보드를 제거하고 코드로만 앱을 동작하려고 하면 해야하는 작업을 설명합니다"},{"title":"Distribute your XCFramework — How to create a XCFramework | by Oğuzhan Karakuş ","keywords":["DeveloperTools","Testing"],"location":"https:\/\/medium.com\/plus-minus-one\/distribute-your-xcframework-how-to-create-a-xcframework-cde8cdff00eb","comments":""},{"title":"Engineering goals: How to become a more successful developer","keywords":["Culture","영어"],"location":"https:\/\/www.avanderlee.com\/optimization\/engineering-goals-become-successful-developer\/?","comments":"SwiftLee 블로그를 운영하면서 회고글 + 새해 목표에 대해 작성한 글이네요. 우리는 어떻게 하면 좀 더 성공한 개발자라고 할 수 있을까요?"},{"title":"Enum explained in-depth with code examples in Swift","keywords":["Swift","영어"],"location":"https:\/\/www.avanderlee.com\/swift\/enumerations\/?","comments":""},{"title":"EnvironmentObject in SwiftUI | by Jim Lai ","keywords":["SwiftUI","Swift"],"location":"https:\/\/swift2931.medium.com\/why-you-should-use-environmentobject-in-swiftui-ecdc65525745","comments":""},{"title":"Even Better State Machines in Swift | by Markus Kasperczyk ","keywords":["Swift","영어"],"location":"https:\/\/betterprogramming.pub\/even-better-state-machines-3acd447652c6","comments":"프로토콜과 익스텐셜을 사용해서 일반적으로 State Machine을 다루는 방식을 상세하게 설명합니다. "},{"title":"Faster Apple Builds with the lld Linker | Michael Eisel","keywords":["DeveloperTools","영어"],"location":"https:\/\/eisel.me\/lld?","comments":"대표적인 링커라고 할 수 있는 ld64와 lld에 대해 비교해서 설명해줍니다"},{"title":"Implement custom filter and reduce in Swift | by App Developer ","keywords":["Swift","영어"],"location":"https:\/\/medium.com\/@iostpointblog\/implement-custom-filter-and-reduce-in-swift-32fd40c0c289","comments":"커스텀으로 filter와 reduce를 구현하는 예시입니다. 연습해볼 수는 있겠지만 과연 좋은 방법인가는 의구심이 드네요"},{"title":"Implementing address autocomplete using SwiftUI and MapKit | by Max Kalik ","keywords":["SwiftUI","Framework","Swift"],"location":"https:\/\/levelup.gitconnected.com\/implementing-address-autocomplete-using-swiftui-and-mapkit-c094d08cda24","comments":"주소 자동완성이 되는 텍스트 입력 뷰를 만드는 설명입니다"},{"title":"Limit Swift Concurrency's cooperative pool | Alexito","keywords":["Swift","DeveloperTools","영어"],"location":"https:\/\/alejandromp.com\/blog\/limit-swift-concurrency-cooperative-pool\/?","comments":"동시성에서 concurrent 스레드 개수를 제한해서 디버깅을 도와주는 방식을 설명합니다"},{"title":"Preventing Jailbreak in iOS Apps: Best Practices and Techniques | by Nikhil Vinod ","keywords":["Testing","Framework"],"location":"https:\/\/medium.com\/@nikhil.vinod\/preventing-jailbreak-in-ios-apps-best-practices-and-techniques-c1364c833c08","comments":"iOS 앱에서 탈옥 여부를 판단할 수 있는 여러 팁과 방식을 소개합니다"},{"title":"Previewing Stateful SwiftUI Views - Interactive Previews for your SwiftUI views | Peter Friese","keywords":["SwiftUI","영어"],"location":"https:\/\/peterfriese.dev\/posts\/swiftui-previews-interactive\/?","comments":"미리보기 중에도 여러 상태에 따라 보여질 수 있도록 인터액티브하게 만드는 방법"},{"title":"Scripting with Swift | by Christoffer Winterkvist ","keywords":["Swift","Architecture","SwiftUI"],"location":"https:\/\/medium.com\/fink-oslo\/scripting-with-swift-c8b929d1a7a3","comments":""},{"title":"Searchable vs. Textfield in a sheet deployed with presentationDetents","keywords":["SwiftUI","영어"],"location":"https:\/\/sowenjub.me\/writes\/searchable-vs-textfield-in-a-sheet-deployed-with-presentationdetents\/?","comments":""},{"title":"Securely debugging your app in production • Sidetrack","keywords":["Testing","영어","pick"],"location":"https:\/\/blog.sidetrack.app\/debugging-in-production?","comments":"실제품 앱에서 안전하게 디버깅하기 위한 방법들을 비교하기"},{"title":"Swift Learning Roadmap 2023 — The Ultimate Guide | by Steven Curtis ","keywords":["Swift","영어"],"location":"https:\/\/stevenpcurtis.medium.com\/swift-learning-roadmap-2023-the-ultimate-guide-fa96a28a4f75","comments":"스위프트와 iOS 개발을 배우기 위한 종합적인 가이드네요. 그리고보니 예전에 만든 로드맵을 업데이트할 타이밍인 것 같네요. 올해 꼭 업데이트해야겠어요"},{"title":"SwiftUI Combine | by Sarim Khan ","keywords":["Framework","Combine"],"location":"https:\/\/medium.com\/@sarimk80\/swiftui-combine-1b476e319bf5","comments":"콤바인 프레임워크에서 제공하는 기본 타입별로 예제로 설명하는 글입니다"},{"title":"SwiftUI Tip: Always correct corner radius for subviews | Filip Němeček","keywords":["SwiftUI","UIKit"],"location":"https:\/\/nemecek.be\/blog\/183\/swiftui-tip-always-correct-corner-radius-for-subviews?","comments":"SwiftUI에서 하위뷰 모서리를 제대로 깎는 방법"},{"title":"SwiftUI and Dark Mode | by Love the intersection where code meets customer ","keywords":["SwiftUI","Architecture","Swift"],"location":"https:\/\/blog.gbusto.com\/swiftui-and-dark-mode-950798111596","comments":""},{"title":"SwiftUI — Charts | by Krupanshu Sharma ","keywords":["SwiftUI","영어"],"location":"https:\/\/medium.com\/@sharma17krups\/swiftui-charts-7d73262150a1","comments":""},{"title":"Testing challenges in a mobile environment","keywords":["Testing","영어"],"location":"https:\/\/swiftindepth.com\/articles\/mobile_testing_challenges\/?","comments":"iOS 개발자가 테스트를 위해 준비하고 고려해야 할 사항들"},{"title":"The Builder Design Pattern in Swift | by Steven Curtis ","keywords":["Architecture","UIKit"],"location":"https:\/\/stevenpcurtis.medium.com\/the-builder-design-pattern-in-swift-27f963558b11","comments":"빌더 패턴을 구현한 깔끔한 예제네요"},{"title":"The Liskov Substitution Principle Isn’t Complex. Just Give It a Try | by Mohamed Mayallo ","keywords":["Architecture","Swift","pick"],"location":"https:\/\/betterprogramming.pub\/liskov-substitution-principle-isnt-complex-just-give-it-a-try-d4f84093ca5f","comments":"LSP 원칙에 대해 설명하고 위반을 감지하는 방법까지 설명해서 골라봤습니다"},{"title":"Tokenize String using Natural Language Processing in SwiftUI | by DevTechie ","keywords":["SwiftUI","Framework"],"location":"https:\/\/medium.com\/devtechie\/tokenize-string-using-natural-language-processing-in-swiftui-fdfbcb662fa","comments":""},{"title":"Top 10 mistakes swift developers do | by Ravi Ranjan ","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/@r.ranjanchn\/top-10-mistakes-swift-developers-do-1c20e81f93c5","comments":"iOS 개발자들이 흔히 하는 10가지 실수"},{"title":"Upcoming changes to the App Store receipt signing certificate - Latest News - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/news\/?id=ytb7qj0x","comments":"앱 스토어 영수증 사인용 인증서 갱신을 1월 18일부터 진행한다고 합니다"},{"title":"Using CallKit — How to Integrate Voice and Video Calling Into iOS Apps | by Amos Gyamfi ","keywords":["Framework","CallKit"],"location":"https:\/\/medium.com\/@amosgyamfi\/using-callkit-how-to-integrate-voice-and-video-calling-into-ios-apps-d4a61f6ea5ad","comments":""},{"title":"What’s New in PHP 8.2 | by Eugenio Carocci ","keywords":["Culture","ServerSide"],"location":"https:\/\/betterprogramming.pub\/whats-new-in-php-8-2-bcdf951cbd11","comments":"PHP 8.2 소개가 있어서 한 번 가져왔습니다"},{"title":"Xcode and CocoaPods: A clean and errorless switch between branches with different pods | by Arik Segal ","keywords":["DeveloperTools","영어"],"location":"https:\/\/medium.com\/codex\/xcode-and-cocoapods-a-clean-and-errorless-switch-between-branches-with-different-pods-513a67855879","comments":"브랜치별로 다른 pods를 스위치하는 방법에 대한 설명입니다"},{"title":"iOS development trends in review | Swift with Majid","keywords":["Culture","영어"],"location":"https:\/\/swiftwithmajid.com\/2022\/12\/27\/ios-development-trends-in-review\/?","comments":"2022년 회고글을 iOS 개발 트렌드로 분야별 정리한 글이네요"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-83.json: -------------------------------------------------------------------------------- 1 | {"sequence":83,"releaseAt":710521200,"items":[{"title":"Boost Your Swift Loop Performance By 87% | by Avi Tsadok ","keywords":["Swift"],"location":"https:\/\/betterprogramming.pub\/boost-your-swift-loop-performance-by-87-cf790fd3ff2d","comments":"90년대 PC 서버가 많아지던 때에 듣던 루프 펼치기(Loop unrolling) 최적화 기법을 23년에 다시 볼 줄 몰랐네요. objective-c 시절로 치면 세번째 index 방식보다 두번째 forEach라는 방식이 가장 빨라야 하는데 이건 unrolling 이라기보다 그냥 절반 탐색 같은데 말이죠"},{"title":"10 Essential iOS Development Libraries You Need to Know | by Rashad Shirizada ","keywords":["OpenSources"],"location":"https:\/\/medium.com\/@rashadsh\/10-essential-ios-development-libraries-you-need-to-know-d5e596e80290","comments":"대부분 알고 계시고 사용중일 것 같은 라이브러리들이네요"},{"title":"10 New iMessage Features That Would Finally Get You Excited For iOS 17 | by The Useful Tech ","keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/10-new-imessage-features-that-would-finally-get-you-excited-for-ios-17-e59257d1a47a","comments":"iOS 17 iMessage에 들어가는 기능들에 대한 소개입니다. 지금 이렇게 보더라도 막상 사용하지 않을 꺼 같기도 하고 그러네요. 잘 써먹어야 할텐데 자신이 없습니다"},{"title":"5 Existential Questions for the Vision Pro (to save humanity) | by Noah Miller ","keywords":["Culture","영어","pick"],"location":"https:\/\/medium.com\/predict\/5-existential-questions-for-the-vision-pro-to-save-humanity-5ab8e0523a81","comments":"😳 이거 너무 철학적인(?) 질문 아닌가요. 비전 프로는 무엇을 바꿀 수 있을까요"},{"title":"`@backDeployed` to extend function availability to older OS releases","keywords":["Swift","영어","pick"],"location":"https:\/\/www.avanderlee.com\/swift\/backdeployed-function-back-deployment\/?","comments":"스위프트 컴파일러가 버전을 안전하게 관리한다는 것 때문에 새 버전으로 빌드한 라이브러리를 하위 버전에서 사용할 수 없는 경우가 있었는데 그런 경우에 유용할 것 같습니다"},{"title":"Amazing iOS Materials. Websites and Blogs | by XCoder ","keywords":["Culture"],"location":"https:\/\/medium.com\/@ganeshrajugalla\/amazing-ios-materials-17e795799bf3","comments":"예전 자료지만 여전히 유효하고, 쓸모있는 참고 자료들이 있어서 소개합니다"},{"title":"App Development Inspiration 185 | Enterprise Company ","keywords":["Design"],"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-185-f6091a6e5132","comments":""},{"title":"Avoiding Memory Leaks in iOS | by Shubham ","keywords":["Swift"],"location":"https:\/\/medium.com\/@shiny.shubham\/avoiding-memory-leaks-in-ios-27f194fcbd5","comments":"ARC를 사용하지만 여전히 메모리에 사용하지 않는 인스턴스나 공간이 남는 누수 현상을 신경써야만 하죠. 다양한 경우가 있는데 몇 가지 팁을 소개해줍니다."},{"title":"Beginner's guide on Flutter for iOS developers","keywords":["Culture","영어"],"location":"https:\/\/tanaschita.com\/20230717-flutter-for-ios-developers\/?","comments":"iOS 개발자를 위한 플러터 가이드라서 직접 사용하지 않아도 비교해볼 만 합니다"},{"title":"Building Peak","keywords":["SwiftUI","영어"],"location":"https:\/\/harshil.net\/blog\/building-peak?","comments":"개인 피트니스 활동 대시보드 앱 Peak를 만들면서 후일담을 소개합니다"},{"title":"Combine — Role of Cancellable Explained | by DevTechie ","keywords":["Framework","Combine"],"location":"https:\/\/medium.com\/devtechie\/combine-role-of-cancellable-explained-360226da996d","comments":"Combine 중에 Cancellable에 대한 꽤 상세한 설명입니다"},{"title":"Composing Accessibility Identifiers for SwiftUI Components | by Kamil Wyszomierski ","keywords":["Accessibility","SwiftUI"],"location":"https:\/\/medium.com\/@kamil.wyszomierski\/composing-accessibility-identifiers-for-swiftui-components-10849847bd10","comments":"`Accessibility Identifiers`를 다루는 방법을 소개합니다. Xcode에 있는 인스펙터가 제한적이라 Appium Inspector로 할 수 있는 방법도 포함되어 있습니다"},{"title":"Creating custom Link preview instead of LPLinkView with SwiftUI. | by Arseni ","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/@alaputska\/creating-custom-link-preview-instead-of-lplinkview-with-swiftui-909512a4cb27","comments":""},{"title":"DI in SwiftUI | by Vitaly Batrakov ","keywords":["SwiftUI","Testing"],"location":"https:\/\/medium.com\/@batrakov.vitaly\/di-in-swiftui-9f929b50ab5c","comments":"의존성을 주입하기 위해서 Environment 또는 EnvironmentObject를 활용하는 방식을 소개합니다. "},{"title":"Designing a Weather app for visionOS - David Smith, Independent iOS Developer","keywords":["Design","영어","pick"],"location":"https:\/\/www.david-smith.org\/blog\/2023\/07\/12\/design-notes-40\/?","comments":"날씨 앱을 비전프로용으로 바꿔보는 과정을 설명합니다. 이걸 보니 아이폰 앱에서 아이패드 앱으로 넘어갈 때 화면 크기 때문에 고민해야 한다던 얘기가 떠오르네요. 무한대에 가까운 공간에 과연 정보를 어떻게 배치하고 다룰 수 있을까요"},{"title":"Display reconfigurations on macOS | Nonstrict","keywords":["Swift","AppKit","영어"],"location":"https:\/\/nonstrict.eu\/blog\/2023\/display-reconfigurations-on-macos\/?","comments":"맥에서 화면 배치를 바꿀 때 사용하는 C 함수를 연동한 이야기입니다. "},{"title":"Facade Design Pattern in Swift for Beginners (with async\/await) | by activesludge ","keywords":["Architecture","Swift"],"location":"https:\/\/medium.com\/aviv-product-tech-blog\/facade-design-pattern-in-swift-for-beginners-with-async-await-b8f751c49d74","comments":"파사드 패턴의 구현 방식에 대한 소개입니다만 복잡한 의존성을 가지는 구조를 단순화 시켜주는 용도지만, 메소드를 하나만 열어놓는다고 파사드가 되는 것은 아니라서 오해할 수 있는 글인 것 같습니다. 참고하세요"},{"title":"First Attempt at Designing for visionOS - David Smith, Independent iOS Developer","keywords":["Design","영어"],"location":"https:\/\/www.david-smith.org\/blog\/2023\/07\/10\/design-notes-39\/?","comments":"저는 이런 글이 너무 좋은 것 같은데요, 결과만 보여주지 않고 전체적인 변화 과정을 처음부터 보여주고 설명해주기 때문입니다"},{"title":"How to Use Swift Package Manager to Save Gigabytes of Network Traffic and Disk Space | by Geor Kasapidi ","keywords":["DeveloperTools"],"location":"https:\/\/betterprogramming.pub\/how-to-use-swift-package-manager-saving-gigabytes-of-network-traffic-and-disk-space-998bd148ad56","comments":"SPM 내부 폴더에 어떻게 빌드하고 캐싱하는지 설명해줍니다"},{"title":"Invisible Details of Interaction Design","keywords":["Design","영어","pick"],"location":"https:\/\/rauno.me\/craft\/interaction-design?","comments":"오호 이렇게 실생활 사례와 인터액션을 비교해주는 자료는 처음보는 것 같네요"},{"title":"Load custom fonts into your app using Swift Package Plugins","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.polpiella.dev\/load-custom-fonts-with-no-code-using-swift-package-plugins\/?","comments":"SPM에 커스텀 폰트를 넣어서 로딩하는 방법입니다"},{"title":"Mastering ScrollView in SwiftUI. Transitions | Swift with Majid","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftwithmajid.com\/2023\/06\/13\/mastering-scrollview-in-swiftui-transitions\/?","comments":""},{"title":"Mocking AsyncSequence in Unit Tests | by Max Chuquimia ","keywords":["Testing"],"location":"https:\/\/itnext.io\/mocking-asyncsequence-in-unit-tests-a4cb6a0d5e59","comments":"AsyncSequence 모킹하는 테스트 방식입니다"},{"title":"NSFetchRequest, NSPredicate and Stored Fetch Requests: Core Data Explained | by Steven Curtis ","keywords":["Framework","Swift"],"location":"https:\/\/stevenpcurtis.medium.com\/nsfetchrequest-nspredicate-and-stored-fetch-requests-core-data-explained-1295add41de1","comments":"코어 데이터 구조에서 가장 자주 사용하게 되는 Fecth와 Predicate 관련 설명입니다"},{"title":"OSLog and Unified logging as recommended by Apple - SwiftLee","keywords":["Framework","Swift"],"location":"https:\/\/www.avanderlee.com\/debugging\/oslog-unified-logging\/?","comments":"print와 NSLog 이제 안 쓰셔도 되는거 아시죠? "},{"title":"Performance optimization with SwiftUI: Boost your performance | by Ali Erdem Kökcik ","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/@alikokcik\/performance-optimization-with-swiftui-boost-your-performance-48ebd42be767","comments":"이런 자료가 더 많아져야 할텐데 SwiftUI는 여전히 바뀔만한 여지도 많고, 다른 것과 섞였을 때 사례들이 복잡해서 그런지 정리가 더 필요한 것 같습니다"},{"title":"Property Wrappers Vs Data Access Layer | AzamSharp","keywords":["SwiftUI","Swift","영어"],"location":"https:\/\/azamsharp.com\/2023\/07\/15\/property-wrappers-vs-data-access-layer.html?","comments":""},{"title":"Rogue Amoeba - Under the Microscope » Blog Archive » Alert: Poorly Thought Out Alerts","keywords":["AppKit","영어"],"location":"https:\/\/weblog.rogueamoeba.com\/2023\/07\/12\/alert-poorly-thought-out-alerts\/?","comments":""},{"title":"Separation of Concerns in Swift. Keep ’em separated | by Steven Curtis ","keywords":["Swift","pick"],"location":"https:\/\/stevenpcurtis.medium.com\/separation-of-concerns-in-swift-6b9a3e8d20d2","comments":"디자인 패턴이나 클린 코드 이전에 '관심사의 분리' 이것만 잘 지켜보자는 데 동의합니다. "},{"title":"Set a Preview Shape for Views Presenting Context Menus | Swiftjective-C","keywords":["SwiftUI","영어"],"location":"https:\/\/www.swiftjectivec.com\/snip-context-menu-preview-shape-in-swiftui\/?","comments":""},{"title":"Simplifying Swift Timers: solving memory leaks & complexity once and for all | by Oleg Dreyman ","keywords":["Swift"],"location":"https:\/\/olegdreyman.medium.com\/simplifying-swift-timers-solving-memory-leaks-complexity-once-and-for-all-1fecfeba4f29","comments":"타이머가 어떻게 구현하고 관리하느냐에 따라서 생각보다 다양한 상황에서 복잡한 문제를 만들어내기도 합니다. "},{"title":"Stream Video Calling: How To Build FaceTime Clone With SwiftUI | by Amos Gyamfi ","keywords":["SwiftUI","Framework"],"location":"https:\/\/medium.com\/@amosgyamfi\/stream-video-calling-how-to-build-facetime-clone-with-swiftui-3c1095c1869","comments":"페이스타임을 따라 만드는 과정을 비교적 상세하게 설명해줍니다"},{"title":"Swift Macro Toolkit: Making macro development a breeze - Community Showcase - Swift Forums","keywords":["OpenSources","영어"],"location":"https:\/\/forums.swift.org\/t\/swift-macro-toolkit-making-macro-development-a-breeze\/66266?","comments":"매크로 개발을 도와주는 툴킷 오픈소스 프로젝트를 소개하네요. 매크로 매우 좋은 도구일텐데 앞으로 엄청나게 남발(?)될까봐 살짝 두렵기도 합니다 ㅎㅎ"},{"title":"Swift.org - Introducing Swift HTTP Types","keywords":["Swift","영어","pick"],"location":"https:\/\/www.swift.org\/blog\/introducing-swift-http-types\/?","comments":"어후 숫자와 문자로 되서 불편했던 HTTP 프로토콜의 상수들이 소스 패키지로 만들어졌네요"},{"title":"SwiftUI apps at scale. It’s been production-ready since 2020 | by Jacob Bartlett ","keywords":["SwiftUI","Swift","Architecture"],"location":"https:\/\/betterprogramming.pub\/swiftui-apps-at-scale-19b7886384f7","comments":""},{"title":"SwiftUI onChange Deprecation","keywords":["SwiftUI","영어"],"location":"https:\/\/useyourloaf.com\/blog\/swiftui-onchange-deprecation\/?","comments":""},{"title":"SwiftUI: Ready For Prime Time? | by Michael Long ","keywords":["SwiftUI","Framework","pick"],"location":"https:\/\/michaellong.medium.com\/swiftui-ready-for-prime-time-53d3b96dfff0","comments":""},{"title":"Taskfile: a modern alternative to Makefile | by Giuseppe Santoro ","keywords":["DeveloperTools","영어"],"location":"https:\/\/itnext.io\/taskfile-a-modern-alternative-to-makefile-6b3f545f77bd","comments":"당장 쓸 일은 없을꺼 같은데 Makefile을 대체하는 (엄밀하게 대체라기 보다는 빌드보다 더 다양하게 사용할 수 있는 확장에 가깝겠네요) Taskfile을 소개합니다"},{"title":"The Power of Protocol-Oriented Programming with Swift | Level Up Coding","keywords":["Swift"],"location":"https:\/\/levelup.gitconnected.com\/protocol-oriented-programming-prioritizing-flexibility-and-reusability-f6f91ce373de","comments":"애플도 소개한 이후로 다시 안쓰는 것 같기도 한데 오랜만에 POP 글이 보이네요. 프로토콜을 적극 활용하자는 측면에서 공감합니다만 가이드라인이나 베스트 프랙티스가 잘 공유되지 못하는 것 같아서 아쉽습니다"},{"title":"The Ultimate Guide to Building SwiftData Applications | by Mohammad Azam ","keywords":["Framework"],"location":"https:\/\/betterprogramming.pub\/the-ultimate-guide-to-building-swiftdata-applications-d47247030dbb","comments":""},{"title":"The iPhone Pro’s 120Hz ProMotion Is FAKE! | by Andrew Zuo ","keywords":["Hardware"],"location":"https:\/\/andrewzuo.com\/the-iphone-pros-120hz-promotion-is-fake-8eea3b0b0297","comments":"아이폰 프로 모션은 카메라 촬영할 때만 120Hz로 동작하고, 나머지는 그렇지 않고 심지어 AOD 상태일 때는 1Hz 동작하기도 하죠"},{"title":"Top 9 tools for C4 model diagrams | by IcePanel ","keywords":["Culture"],"location":"https:\/\/icepanel.medium.com\/top-9-tools-for-c4-model-diagrams-4aef58cf1d80","comments":"개인적으로 앱을 설계하고 그림으로 그릴 때 UML 자신이 없으면 적어도 C4 모델에서 Context와 Component라도 그려보라고 추천합니다. C4 다이어그램을 그리기 좋은 도구라고 해서 소개해봅니다"},{"title":"Unity Launches Beta Program for visionOS | Business Wire","keywords":["Framework","DeveloperTools"],"location":"https:\/\/www.businesswire.com\/news\/home\/20230719202814\/en\/Unity-Launches-Beta-Program-for-visionOS-%25E2%2580%2594-Enabling-Unity-Developers-to-Create-Games-and-Apps-for-Apple-Vision-Pro?","comments":"유니티에서 비전오에스용 베타 프로그램을 시작했네요. "},{"title":"Unleash Your Creativity: Building Your Own Music App with SwiftUI for VisionPro — Step by Step Guide! | by The Flutter Way ","keywords":["SwiftUI"],"location":"https:\/\/itnext.io\/unleash-your-creativity-building-your-own-music-app-with-swiftui-for-visionpro-step-by-step-f610cf4ea614","comments":"비전 프로용 뮤직앱을 만들어보는 과정을 소개해주네요. 이렇게 따라 만드는 것도 필요하지만, 비전 프로에 적합한 UX가 무엇인가 고민이 더 되는 것 같습니다"},{"title":"Unreal Engine on M2 Pro | Medium","keywords":["Culture","영어"],"location":"https:\/\/medium.com\/@evan-richard\/unreal-engine-on-m2-pro-6b4fb1b14ec","comments":"언리얼 엔진이 5.2부터 이제 애플 실리콘을 네이티브로 지원해서 개발 환경이 넓어졌다고 하네요 (물론 5월 소식입니다)"},{"title":"WWDC23 SwiftUI Q&A. Interesting SwiftUI Q&A during WWDC23 | by Khoa Pham ","keywords":["SwiftUI","pick"],"location":"https:\/\/medium.com\/@onmyway133\/wwdc23-swiftui-q-a-ad871177bd55","comments":"(벌써 한 달이 지났지만) WWDC23 동안 SwiftUI 관련 질의응답을 모아놓은 글이네요. "},{"title":"Where are Xcode bookmarks stored? · Jesse Squires","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.jessesquires.com\/blog\/2023\/07\/11\/where-are-xcode-bookmarks-stored\/?","comments":"Xcode 15부터 저장하는 북마크는 어디에 저장될까요. 이것도 버전관리로 공유해야 하나 말아야 하나 고민이 됩니다 "},{"title":"Why Scrum Fails | Better Programming","keywords":["Culture","영어"],"location":"https:\/\/betterprogramming.pub\/why-scrum-fails-ac92cab05c6a","comments":"왜 스크럼은 실패하는가. 애자일이라는 게 그냥 문자 그대로, 방법을 그냥 따라한다고 되는 게 아니더라. 애자일다운 방법이 뭐냐. 근본적인 질문을 던지는 글이라서 좋네요. 솔직히 좀 길어서 읽기는 어려웠습니다 🫠"},{"title":"Why is it so damn difficult to create a binary framework for your Swift Package","keywords":["DeveloperTools","Swift"],"location":"https:\/\/blog.eidinger.info\/why-is-it-so-damn-difficult-to-create-a-binary-framework-for-your-swift-package?","comments":"SPM을 사용한다고 해서 모듈로 나눈 프레임워크를 빌드하고 배포하는 게 쉽지 않습니다. 특히 모듈과 패키지 의존성이 깊을수록 Xcode proejct 과 바이너리 프레임워크 생성하기까지 험난한 과정이 펼쳐집니다. 이건 애플이 해결해주면 좋을텐데 아직은 좀 정리가 덜 된 상황입니다 ㅜㅜ"}],"version":"1.0"} -------------------------------------------------------------------------------- /json/news-87.json: -------------------------------------------------------------------------------- 1 | {"items":[{"comments":"애플 이벤트가 끝나고 iOS 17 정식 버전이 업데이트됐습니다. 새로운 기능들 써보고 계신가요? NameDrop 과 함께 AirDrop 효과가 재밌게 바뀌었더군요! ","title":"8 Exciting New iOS 17 Features I Would Probably Never Use | by The Useful Tech ","location":"https:\/\/medium.com\/macoclock\/8-exciting-new-ios-17-features-i-would-probably-never-use-dc122fc3154b","keywords":["Culture"]},{"keywords":["Testing","영어"],"location":"https:\/\/forums.swift.org\/t\/a-new-approach-to-testing-in-swift\/67425?","comments":"애플이 스위프트 매크로를 활용해서 테스트 프레임워크를 개선해서 새로운 방식으로 테스트를 개선한다고 합니다. 초기 버전의 저장소를 함께 공개했습니다","title":"A New Approach to Testing in Swift - Evolution \/ Discussion - Swift Forums"},{"comments":"","title":"App Design Inspiration 123 | App Design Firm ","keywords":["Design","영어"],"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-123-3219d1bd5a74"},{"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-194-123f82f65c6f","comments":"","title":"App Development Inspiration 194 | IOS Agency ","keywords":["Design","ServerSide"]},{"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-195-fecadf6f3870","keywords":["Design","영어"],"comments":"","title":"App Development Inspiration 195 | Cross Platform Mobile Company "},{"keywords":["SwiftUI"],"location":"https:\/\/www.avanderlee.com\/swift\/app-intent-driven-development\/?","comments":"","title":"App Intent driven development in Swift and SwiftUI - SwiftLee"},{"title":"Bad practice: capturing self in a nested closure — Swift with Vincent","keywords":["Swift","영어"],"location":"https:\/\/www.swiftwithvincent.com\/blog\/bad-practice-capturing-self-in-a-nested-closure?","comments":"이 블로그는 아주 간단한 팁들을 모아서 보여줍니다. 이번에 소개한 글은 중첩한 클로저에서 weak self는 조심해야한다는 내용입니다"},{"title":"Betamagic - Core Data Lab 2.4 - Public Beta","location":"https:\/\/betamagic.nl\/news\/2023\/2023_03.html?","comments":"Core Data 내부 데이터 SQLite 파일을 탐색하도록 도와주는 Core Data Lab 유료 앱이 SwiftData DB도 지원하도록 나왔다고 합니다. 유료 버전이지만 코어 데이터를 활용하는 회사에서는 활용해보실 수 있을 것 같네요","keywords":["DeveloperTools","영어"]},{"comments":"저는 여전히 맥 앱에 로망이 있는데, AppKit 생산성이 떨어져서 UIKit 으로 Mac Catalyst 앱으로 종종 만들고 있습니다. 글의 사례는 맥 앱 스토어에 카탈리스트로 만든 맥앱을 올렸다면, iPad 앱을 애플실리콘 용으로 다시 맥앱 스토어에 올리지 못한다는 경험담입니다. ","keywords":["AppKit","영어"],"location":"https:\/\/thatvirtualboy.com\/remove-macos-catalyst\/?","title":"Considering Mac Catalyst? A word of caution... | thatvirtualboy"},{"keywords":["Culture","영어"],"location":"https:\/\/tomaszs2.medium.com\/contributors-angry-after-turbo-8-suddenly-drops-typescript-4ffd4e0be7cd","title":"Contributors Angry After Turbo 8 Suddenly Drops Typescript | by Tom Smykowski ","comments":"얼마전에 Turbo 8 오픈소스 커뮤니티에서 모 유명(?) 개발자가 타입스크립트 코드를 제거한 PR을 후다닥 머지해서 논란이 된 사례가 있었습니다. 찬반 토론이 격렬하게 진행중입니다. "},{"comments":"Xcode 15와 함께 릴리스된 Swift 5.9에 포함된 변경 사항 중에서 noncopyable 에 대한 설명입니다. `~Copyable`은 새롭게 적용된 Ownership 과 관련이 있으니 같이 살펴보시는 것을 추천드립니다","keywords":["Swift"],"title":"Demystifying NonCopyable Type | by Reshma Unnikrishnan ","location":"https:\/\/medium.com\/@reshmaUnni\/new-in-swift-5-9-noncopyable-type-c3860354ee4c"},{"comments":"입력 TextField에서 멀티라인을 처리하기 위한 방식을 소개합니다","location":"https:\/\/danielsaidi.com\/blog\/2023\/09\/15\/dismiss-keyboard-when-return-is-pressed-in-a-multiline-swiftui-textfield?","keywords":["SwiftUI","영어"],"title":"Dismiss keyboard when return is pressed in a multiline SwiftUI TextField | Daniel Saidi"},{"title":"Dive Deep into Your macOS: Terminal Commands You Didn’t Know You Needed | by Pedro Q Neves ","location":"https:\/\/medium.com\/@pedromilani14\/dive-deep-into-your-macos-terminal-commands-you-didnt-know-you-needed-160dbaabbaae","keywords":["Culture"],"comments":"터미널 명령으로 뭔가 확인해야 하는 경우가 종종 있는데요, 유용하게 써먹을 수 있으실 것 같습니다"},{"location":"https:\/\/betterprogramming.pub\/exploring-coredata-from-data-model-creation-to-managed-object-instances-3bc796b27b41","keywords":["Framework"],"comments":"코어 데이터 모델 선언부터 인스턴스 생성까지 흐름을 잘 설명해줍니다. SwiftData 때문에(?) Core Data 설명도 많아진 것 같네요","title":"From Data Model to Managed Object in Core Data | Better Programming"},{"title":"Generated Asset Catalog Symbols in Objective-C | Swiftjective-C","location":"https:\/\/www.swiftjectivec.com\/generated-asset-symbols-objective-c\/?","keywords":["UIKit","Swift","영어"],"comments":"Swift 와 Objective-C를 번갈아서 설명하는 자료입니다. 에셋 카탈로그 심볼 관련된 내용을 설명합니다"},{"comments":"스위프트UI 뷰가 동작하는 방식에 대해 전반적으로 설명하는 글입니다. ","location":"https:\/\/medium.com\/@sarathiskannan\/how-swiftui-view-works-7095f717d1c2","keywords":["SwiftUI"],"title":"How SwiftUI View Works | by Sarathi Kannan "},{"location":"https:\/\/medium.com\/@_DandyLyons\/how-to-add-apples-night-mode-to-your-swiftui-views-e172bb41dc94","title":"How to add Apple’s “Night Mode” to your SwiftUI Views | by Daniel Lyons ","keywords":["SwiftUI"],"comments":"나이트 모드 개발을 위한 설명입니다"},{"comments":"","title":"How to build an iOS Live Activity | by Marco Guerrieri ","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/kinandcartacreated\/how-to-build-ios-live-activity-d1b2f238819e"},{"title":"How to use Swift `@MainActor` and `@globalActor` | by Bassem Qoulta ","location":"https:\/\/blog.devgenius.io\/how-to-use-mainactor-and-globalactor-d5fd3794903d","comments":"저도 아직까지 액터를 막 쉽게 떠올려서 사용하지 못하고 있는데요, 글로벌 액터와 메인 액터에 대해 설명합니다","keywords":["Swift"]},{"title":"If and switch expressions in Swift - SwiftLee","location":"https:\/\/www.avanderlee.com\/swift\/if-switch-expressions\/?","keywords":["Swift","영어"],"comments":"Swift 5.9에 추가된 if와 switch 표현식에 대한 상세한 설명입니다. 이제 구문으로 비교식을 작성하거나 삼항 연산자 표현식에서 벗어나서 다양한 표현이 가능해지겠네요"},{"comments":"아이패드 스위프트 플레이그라운드 앱 프로젝트에서 사용할 라이브러리 배포하는 도구를 오픈소스로 만드는 분입니다","keywords":["OpenSources","영어"],"location":"https:\/\/forums.swift.org\/t\/in-app-libraries-for-swift-playgrounds-on-ipad\/67241?","title":"In-App Libraries for Swift Playgrounds on iPad - Community Showcase - Swift Forums"},{"title":"Inline Snapshot Testing","comments":"포인트프리에서 만든 오픈소스 스냅샷 테스트 라이브러리에 inline 스냅샷이 추가됐다고 하네요. 테스트 코드에 JSON이나 HTTP Response 등을 inline으로 포함시켜준다고 합니다","location":"https:\/\/www.pointfree.co\/blog\/posts\/113-inline-snapshot-testing?","keywords":["Testing","OpenSources","영어"]},{"title":"Introducing swiftly, a new Swift toolchain installer and manager - Community Showcase - Swift Forums","comments":"서버 사이드 워킹 그룹이 서버용 작업 저장소들을 분리했었는데, 이번에는 스위프트 툴체인을 배포할 수 있는 도구를 오픈소스로 시작했습니다. 이름은 `swiftly` 특정 버전 스위프트 툴체인을 관리할 수 있도록 도와줍니다","keywords":["DeveloperTools","영어"],"location":"https:\/\/forums.swift.org\/t\/introducing-swiftly-a-new-swift-toolchain-installer-and-manager\/67254?"},{"location":"https:\/\/betterprogramming.pub\/learnings-from-analyzing-20-successful-mobile-paywalls-db08d350e16d","keywords":["Design"],"title":"Learnings from Analyzing 20 Successful Mobile Paywalls | by Cihat Gündüz ","comments":"구매 화면에 대한 비교 분석글이라서 가져왔습니다"},{"title":"Migrating Ice Cubes to the SwiftUI Observation framework | by Thomas Ricouard ","keywords":["SwiftUI"],"location":"https:\/\/dimillian.medium.com\/migrating-ice-cubes-to-the-swiftui-observation-framework-821f90deebee","comments":"Observation 프레임워크로 마이그레이션한 경험을 공유합니다"},{"location":"https:\/\/dimillian.medium.com\/migrating-a-simple-structure-from-userdefault-to-swiftdata-6e6973b44bf9","comments":"UserDefaults를 SwiftData로 마이그레이션한 과정을 설명합니다","keywords":["Framework"],"title":"Migrating a simple structure from UserDefault to SwiftData | by Thomas Ricouard "},{"keywords":["Hardware"],"comments":"애플 이벤트에 대한 까칠한(?) 버전의 글입니다. 혁신은 없다 외국 버전이랄까요 ㅎㅎ","title":"No Lust In Wonderlust | by Attila Vágó ","location":"https:\/\/thegrayarea.tech\/no-lust-in-wonderlust-9caf427915f"},{"keywords":["SwiftUI"],"location":"https:\/\/medium.com\/swiftly-engineered-ios\/sf-symbols-animation-in-swiftui-af86f7b28968","comments":"","title":"SF Symbols Animation in SwiftUI | by Kelvin Tan "},{"location":"https:\/\/medium.com\/@salgarayes\/server-driven-ui-with-swiftui-99faa6a10e81","title":"Server Driven UI with SwiftUI | by Yeskendir Salgara ","keywords":["SwiftUI"],"comments":"최근에 토스나 리멤버 앱에서도 시도되고 있는 서버-주도 UI (서버사이드 렌더링)에 대한 글입니다. 디자인 시스템이 잘 되어 있고, 비교적 정형화된 컨텐츠를 다루는 경우 서버에서 주는 데이터로 쉽게 렌더링할 수 있을 것 같네요"},{"keywords":["SwiftUI"],"location":"https:\/\/medium.com\/swiftly-engineered-ios\/shimmer-effect-in-swiftui-621a2af2d2c6","comments":"","title":"Shimmer Effect in SwiftUI | by Kelvin Tan "},{"location":"https:\/\/christiantietze.de\/posts\/2023\/09\/sparkle-v2-5-adds-relevant-version-history-diffing\/?","title":"Sparkle v2.5 Adds Relevant Version Highlighting to Release Notes • Christian Tietze","comments":"맥 앱의 버전 업데이트 사실상 표준이 Sparkle 라이브러리 v2.5 새로운 기능에 대한 설명입니다.","keywords":["AppKit","영어"]},{"location":"https:\/\/medium.com\/macoclock\/stage-manager-on-ipados-17-the-ipad-isnt-just-a-big-iphone-any-more-ed071037bb9b","keywords":["Culture"],"comments":"Stage Manager가 본격적으로 활용되기 시작하면서 아이패드가 맥과 더 가까워졌죠. 11월이나 내년초에 새로운 아이패드 프로 출시가 있지 않을까 예상해봅니다","title":"Stage Manager on iPadOS 17: the iPad Isn’t Just a Big iPhone Any More | by Will J Murphy "},{"title":"Style your TipKit Tips | Teabyte","keywords":["Framework","영어"],"comments":"TipKit에 대한 간단한 설명입니다. 앞으로 자주 사용하게 될 것 같네요","location":"https:\/\/alexanderweiss.dev\/blog\/2023-09-16-style-your-tipkit-tips?"},{"location":"https:\/\/www.swift.org\/blog\/swift-5.9-released\/?","comments":"Xcode 15와 함께 출시된 Swift 5.9에 대한 공식 소개 글입니다. C++과 호환성도 높아지고 매크로로 언어 확장성이 높아진 게 특징이네요. 그 외에도 다양한 업데이트가 있으니 읽어보시길 추천드립니다. Swift 6로 넘어가기 전의 마지막 대규모 업데이트일 것 같습니다","keywords":["Swift","영어"],"title":"Swift.org - Swift 5.9 Released"},{"comments":"","title":"SwiftUI Custom Loading | by abraao nascimento ","location":"https:\/\/medium.com\/@abraaoan\/swiftui-custom-loading-773d398cb138","keywords":["SwiftUI"]},{"title":"There Is No “Batterygate”, Just Poorly Educated Apple Users | by Attila Vágó ","location":"https:\/\/medium.com\/bricksnbrackets\/there-is-no-batterygate-just-poorly-educated-apple-users-85acf788e51d","keywords":["Hardware"],"comments":"아이폰 15가 출시되기 직전에 아이폰 14 프로와 맥스가 배터리 성능이 빨리 떨어진다는 기사가 있었죠. 배터리는 결국 충전횟수가 정해져 있다보니 한계가 있을수 밖에 없죠. 이와 관련된 글입니다"},{"keywords":["SwiftUI","영어"],"title":"Understanding Container Background for Widget in iOS 17 - Swift Senpai","comments":"위젯에서 컨테이너 백그라운드를 다루는 방법을 설명합니다. 위젯은 작은 공간이라 더 꼼꼼하게 챙겨야 하는 것 같습니다","location":"https:\/\/swiftsenpai.com\/development\/widget-container-background\/?"},{"comments":"","title":"Understanding Publishers in SwiftUI and Combine | by Mike Pesate ","location":"https:\/\/medium.com\/bumble-tech\/understanding-publishers-in-swiftui-and-combine-27806aa78ba1","keywords":["SwiftUI"]},{"location":"https:\/\/betterprogramming.pub\/unit-tests-arent-tests-they-re-sensors-9574e7b8b7c7","keywords":["Culture"],"title":"Unit Tests Aren’t Tests, They’re Sensors | by Sam Cooper ","comments":"테스트에 대한 일반적인 글입니다. 단위 테스트는 단지 검증이 아니라 설계와 구현에 대한 변화를 확인하기 위한 센서로 보자는 글입니다. "},{"keywords":["SwiftUI"],"location":"https:\/\/medium.com\/airbnb-engineering\/unlocking-swiftui-at-airbnb-ea58f50cde49","comments":"에어비앤비 앱에서 SwiftUI를 도입한 과정을 설명합니다. 에어비앤비는 이미 디자인 시스템과 Epoxy라는 선언형 뷰 라이브러리가 있었는데, 이를 확장해서 구현했다고 하네요","title":"Unlocking SwiftUI at Airbnb | by Bryn Bodayle "},{"comments":"SwiftUI와 함께 사용할 때 `UIViewRepresentable`를 다룬 경험을 소개합니다","title":"Working With UIViewRepresentable — Chris Eidhof","keywords":["UIKit","영어"],"location":"https:\/\/chris.eidhof.nl\/post\/view-representable\/?"},{"location":"https:\/\/tomaszs2.medium.com\/xcode-15-released-its-an-ide-you-won-t-sweat-about-84977a6b5cd9","title":"XCode 15 Released: It’s An IDE You Won’t Sweat About | by Tom Smykowski ","comments":"Xcode 15에 포함된 내용들을 정리한 글입니다. 에디터도 바뀌고 프리뷰도 개선되고 테스트 리포트나 빌드 시스템까지 소소하게 추가된 기능이 많네요. ","keywords":["DeveloperTools"]},{"comments":"Xcode 14부터 추가된 Build Timeline 기능을 사용해서 빌드 시간을 최적화하는 방법을 설명합니다. 이제 시각적으로 보고 빌드 과정을 최적화할 수 있는 방법을 써먹어 봐야겠습니다","location":"https:\/\/emndeniz.medium.com\/xcode-build-time-optimization-abee9893e4c8","keywords":["DeveloperTools"],"title":"Xcode Build Time Optimization, Xcode 14 | Medium"},{"comments":"매크로를 이용한 새로운 스위프트 만의 단위 테스트 프레임워크 저장소입니다","keywords":["Testing"],"location":"https:\/\/github.com\/apple\/swift-testing","title":"apple\/swift-testing"},{"keywords":["APPLE"],"title":"iOS 17, 오늘부터 업데이트 가능 - Apple (KR)","comments":"다들 업데이트하셨죠? :) ","location":"https:\/\/www.apple.com\/kr\/newsroom\/2023\/09\/ios-17-is-available-today\/"},{"title":"iPhone 15 Screen Sizes","location":"https:\/\/useyourloaf.com\/blog\/iphone-15-screen-sizes\/?","keywords":["Hardware","영어"],"comments":"아이폰 15 계열의 세세한 화면 크기 정보를 알려주는 글입니다"},{"location":"https:\/\/medium.com\/macoclock\/iphone-15-vs-pixel-8-pro-28abd2590bbd","keywords":["Hardware"],"comments":"아이폰 15 프로 맥스와 픽셀 8 프로를 비교하는 글입니다. 아주 상세한 스펙 비교라기 보다는 주요 특징을 비교하고 있습니다","title":"iPhone 15 vs. Pixel 8 Pro | by David Lewis "}],"version":"1.0","sequence":87,"releaseAt":715964400} -------------------------------------------------------------------------------- /json/news-88.json: -------------------------------------------------------------------------------- 1 | {"version":"1.0","sequence":88,"items":[{"location":"https:\/\/medium.com\/macoclock\/these-are-the-only-macos-sonoma-features-i-care-about-1580044c7672","keywords":["Culture"],"comments":"맥오에스 소노마에 추가된 새 기능들에 대한 글입니다. 웹 앱이나 사파리 프로파일 기능은 당장 쓸모가 있을 것 같네요","title":"9 macOS Sonoma Features You Should Actually Care About | by The Useful Tech "},{"comments":"CoreData 모델을 마치 SwiftData 처럼 다둘 수 있도록 매크로를 활용하는 오픈 소스 프로젝트 ManagedModels에 대한 소개라고 봐도 될 것 같네요","keywords":["OpenSources","Framework","영어"],"title":"@Model for CoreData – Helge Heß – Software engineer.","location":"https:\/\/www.alwaysrightinstitute.com\/\/managedmodels\/?"},{"comments":"CRDT 라는 데이터 처리 단위로 분산 상태들 관리하는 개념을 소개하는 글입니다. ","title":"An Interactive Intro to CRDTs | jakelazaroff.com","keywords":["Culture","영어"],"location":"https:\/\/jakelazaroff.com\/words\/an-interactive-intro-to-crdts\/?"},{"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-126-4365d22749f","keywords":["Design"],"title":"App Design Inspiration 126 | Best App Design Company ","comments":""},{"keywords":["Design"],"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-127-11e32a03858e","title":"App Design Inspiration 127 | UI","comments":""},{"title":"App Design Inspiration 129 | Mobile App Design Firm ","location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-129-c84a1abc2cf3","comments":"","keywords":["Design"]},{"location":"https:\/\/medium.com\/macoclock\/apples-m3-chip-is-coming-10483f7ec4fe","keywords":["Hardware"],"title":"Apple’s M3 Chip Is Coming!. The MOST Important Apple Chip EVER! | by Youssef Mohamed ","comments":"아이폰 15 AP A17에 적용된 3nm 공정으로 M3가 나오지 않을까 기대하는 글입니다. 개인적으로는 아이패드 11인치가 M3 + miniLED로 나오길 기대하고 있습니다"},{"keywords":["DeveloperTools","영어"],"title":"Bezel • Show your iPhone on your Mac","location":"https:\/\/getbezel.app\/?","comments":"유료 앱입니다만 아이폰 화면을 맥과 보여주는 앱 - 베젤입니다"},{"keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/change-these-12-ios-17-settings-right-now-for-a-superior-experience-8f43e28a10ab","title":"Change These 12 iOS 17 Settings Right Now For a Superior Experience | by Nikhil Vemu ","comments":"iOS 17에 포함된 소소하지만 쓸모있는 기능들 모음 팁입니다"},{"keywords":["Framework","영어"],"location":"https:\/\/augmentedcode.io\/2023\/10\/02\/changes-to-url-string-parsing-in-ios-17\/?","title":"Changes to URL string parsing in iOS 17 – Augmented Code","comments":"문자열을 URL로 바꿀 때 개선된 사항을 설명해줍니다. URLComponents 파싱에서 살짝 귀찮았던 부분이 옵션으로 추가됐네요"},{"location":"https:\/\/blog.stackademic.com\/swiftui-menu-a-complete-guide-a6a2d2d97618","title":"Creating A SwiftUI menu: A Complete Guide | Stackademic","comments":"다양한 메뉴 표시 방식에 대한 설명입니다","keywords":["SwiftUI"]},{"keywords":["Swift","영어"],"title":"Crossing the Boundary | massicotte.org","comments":"async\/await 방식으로 actor로 분리된 경계에서 데이터를 전달하고 싶을 때 고민을 설명합니다. Sendable 타입과 non-sendable 타입을 구분해서 고민해볼 필요가 있겠네요","location":"https:\/\/www.massicotte.org\/crossing-the-boundary?"},{"keywords":["Hardware"],"title":"Does the iPhone 15 Pro Max Heat Up? | by Mark Ellis ","location":"https:\/\/medium.com\/macoclock\/does-the-iphone-15-pro-max-heat-up-b191fadb2ea0","comments":"지난주에 가장 뜨거운 주제(?)였던 아이폰 15 프로 맥스 발열 문제에 대한 글입니다. 뭐 특별한 결론이 있는 건 아니고 쓸사람은 잘 쓸꺼다. 그런 결론이네요 ㅎㅎ"},{"keywords":["SwiftUI"],"comments":"","title":"Exploring the onChange Modifier in SwiftUI | by Inyene Etoedia ","location":"https:\/\/medium.com\/@etoedia\/exploring-the-onchange-modifier-in-swiftui-24b18034b973"},{"keywords":["Culture","영어"],"comments":"유니티 라이센스 정책 변화로 개발자 커뮤니티 쪽이 엄청 시끄럽습니다. 단지 돈 문제가 아니라 신뢰의 문제로 넘어가서 다른 엔진으로 넘어가는 개발자들이 많네요","location":"https:\/\/medium.com\/codex\/goodbye-unity-b783a48c8b5d","title":"Goodbye, Unity. | by Mina Pêcheux "},{"title":"How async\/await works internally in Swift","keywords":["Swift","영어","pick"],"location":"https:\/\/swiftrocks.com\/how-async-await-works-internally-in-swift?","comments":"제가 읽은 async\/await 관련 글 중에서 가장 깊이가 있네요. 제 갖고 있던 심증(?)을 코드 수준에서 증명해줘서 이해하기 쉬웠습니다만 전체적으로 읽기 어려울 수 있습니다. 한 가지 확실한 건 async\/await가 간편하지만 모든 문제를 해결해주지는 않습니다. 이와 관련된 글을 써봐야겠네요. "},{"comments":"국내에서는 앱 클립이 많이 활성화되지는 않은 것 같습니다만 간단한 방식이 더 자주 보면 좋겠습니다","keywords":["Framework","영어"],"location":"https:\/\/www.polpiella.dev\/create-app-clips\/?","title":"How to create an App Clip for your app"},{"comments":"엑스코드 빌드 시스템에서 생길 수 있는 문제를 미리 분석하는 도구 XCBuildAnalyzer를 만들고 활용하는 방법에 대한 소개입니다","location":"https:\/\/medium.com\/@londeix\/inspecting-xcodes-build-system-graph-at-ease-e96573d5d340","keywords":["DeveloperTools","OpenSources"],"title":"Inspecting Xcode’s build system graph at ease | by Bartosz Polaczyk "},{"keywords":["Swift","영어"],"title":"Interoperability: Swift’s Super Power","location":"https:\/\/browsercompany.substack.com\/cp\/137231709?","comments":"ARC 브라우저를 만드는 브라우저 컴파니에 소속 Saleem 이라는 개발자가 스위프트 윈도우 포팅에 기여를 많이 하고 있습니다. ARC를 만들면서 경험 중에 일부 스위프트를 (엑티브엑스 기반 기술이었던) COM과 연결해서 API 연동한 내용입니다. "},{"comments":"꽤 상세한 콤바인 프레임워크에 대한 설명입니다","location":"https:\/\/elamir.medium.com\/mastering-combine-a-comprehensive-guide-for-ios-developers-711a0fe62be9","keywords":["Swift","Framework","pick"],"title":"Mastering Combine: A Comprehensive Guide for iOS Developers | by ElAmir Mansour "},{"comments":"애플 전문가들과 만나서 세션도 듣고 랩도 하는 시간이 열렸습니다. 한국 담당자분들도 세션을 하고 일부 인원은 1:1 컨설팅도 가능하다고 합니다","title":"Meet with Apple Experts - Apple Developer","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/events\/?"},{"comments":"","keywords":["Framework","Swift"],"title":"Multipart Request with URLSession and async\/await in Swift | by AsyncLearn ","location":"https:\/\/asynclearn.medium.com\/multipart-request-with-urlsession-and-async-await-in-swift-41b16a016cb2"},{"location":"https:\/\/www.polpiella.dev\/musickit-and-app-clips\/?","comments":"앱 클립을 활용해서 MusicKit으로 음악 요청까지 시도해보고 있네요. ","title":"MusicKit and App Clips","keywords":["Framework","영어"]},{"keywords":["Swift"],"title":"Observed macro | by Sasha Myshkina ","comments":"`@Observed` 매크로에 대한 간단한 소개글입니다","location":"https:\/\/medium.com\/@myshkinasasha\/inside-new-ios-17-observed-macro-41051859885f"},{"title":"One Week Impressions with the iPhone 15 Pro and the Apple Watch Series 9 | by Warner Crocker ","location":"https:\/\/medium.com\/@WarnerCrocker\/one-week-impressions-with-the-iphone-15-pro-and-the-apple-watch-series-9-48eb876c3b6a","comments":"새 폰과 워치를 사용한 경험담이라서 구경했습니다. 유투버들의 자극적인 리뷰보다는 담담한 평가입니다. 그나저나 이번 우븐 케이스는 다들 평가가 안 좋네요 ㅜㅜ ","keywords":["Hardware"]},{"keywords":["Framework","영어"],"comments":"여러분들은 iOS 최소 버전을 어떻게 정하고 계신가요? 써보고 싶은 기능을 넣고 싶을 때. 특정 버전을 버려도 될 때. 정답은 없지만 남들은 어떻게 하나 궁금한 것 같네요","title":"Picking your minimum iOS version to support - SwiftLee","location":"https:\/\/www.avanderlee.com\/workflow\/minimum-ios-version\/?"},{"comments":"SF 심볼즈 5가 업데이트됐습니다. 새로운 심볼이 추가됐고 애니메이션 이나 모션이 쉬워졌다고 합니다. ","keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/sf-symbols\/?","title":"SF Symbols - Apple Developer"},{"location":"https:\/\/www.danijelavrzan.com\/posts\/2023\/10\/swift-algorithms-chunked\/?","comments":"","title":"Split your data easily and efficiently with .chunked() | Danijela","keywords":["SwiftUI","영어"]},{"title":"Stable Diffusion with CoreML using the HuggingFace model for iOS, iPadOS, and macOS | by Yeskendir Salgara ","location":"https:\/\/medium.com\/@salgarayes\/stable-diffusion-with-coreml-using-the-huggingface-model-for-ios-ipados-and-macos-5474034006c","comments":"StableDiffusion 모델을 앱에서 직접 활용할 수 있도록 연결하는 방법을 소개합니다. API로 사용할 수 있는 방식들과 직접 모델을 로딩하는 방식을 비교해서 살펴보시면 좋겠네요","keywords":["Framework","OpenSources"]},{"keywords":["Swift","영어"],"title":"Swift Parameter Packs · paul-samuels.com","comments":"스위프트 5.9에 추가된 파라미터 팩 기능을 활용하는 사례입니다. 다양한 사례들이 나올꺼 같네요","location":"https:\/\/paul-samuels.com\/blog\/2023\/09\/29\/swift-parameter-packs\/?"},{"title":"Swift Splash | Apple Developer Documentation","keywords":["VisionOS","APPLE"],"location":"https:\/\/developer.apple.com\/documentation\/visionos\/swift-splash?","comments":"애플에서 비전오에스 전용 샘플을 공개했습니다. 3차원에서 워터슬라이드를 타는 앱을 구현하네요"},{"location":"https:\/\/www.swift.org\/blog\/whats-new-swift-debugging-5.9\/?","title":"Swift.org - Debugging Improvements in Swift 5.9","keywords":["DeveloperTools","Swift","영어"],"comments":"공식 블로그에 올라온 스위프트 관련 디버깅 개선 사항입니다. "},{"keywords":["SwiftUI","Swift"],"title":"SwiftData by Example: iOS 17 & SwiftUI 5 — Part 5 | by DevTechie ","location":"https:\/\/medium.com\/devtechie\/swiftdata-by-example-ios-17-swiftui-5-part-5-dd5be924b","comments":""},{"title":"Sync Data by NSUbiquitousKeyValueStore in SwiftUI | ITNEXT","keywords":["SwiftUI","Framework"],"location":"https:\/\/itnext.io\/sync-data-in-swiftui-using-nsubiquitouskeyvaluestore-83263b1373cc","comments":"CloudKit 서비스로 아이클라우드 서버에 키-값을 저장하는 방법에 대한 설명입니다"},{"keywords":["Architecture"],"location":"https:\/\/medium.com\/@sandofsky\/the-presentation-model-6aeaaab607a0","title":"The Presentation Model | by Ben Sandofsky ","comments":"2017년 글입니다만 Presentation 역할이 왜 필요한가 설명하는 부분은 꼭 한 번 읽어볼 만 합니다"},{"title":"The Role of Emotional Intelligence in Engineering Management | Phil Yates ","location":"https:\/\/pyartez.github.io\/management\/the-role-of-emotional-intelligence-in-engineering-management.html?","comments":"엔지니어링 매니지먼트 관점에서 감정을 어떻게 다스릴 수 있나 설명하는 글입니다","keywords":["Culture","영어"]},{"title":"The curious case of ShareLink with plain text strings — Dean’s blog","location":"https:\/\/blog.thomasdurand.fr\/story\/2023-09-24-curious-case-of-sharelink\/?","comments":"","keywords":["SwiftUI","영어"]},{"title":"Top-down iOS error architecture. How to handle errors in iOS apps | by Bartosz Polaczyk ","comments":"2018년 글입니다만 에러를 전달하는 구조에 대해 설명하는 글이라서 골라봤습니다","keywords":["Architecture","Testing"],"location":"https:\/\/medium.com\/@londeix\/top-down-error-architecture-d8715a28d1ad"},{"keywords":["DeveloperTools","한국어"],"comments":"29cm iOS 개발팀에서 피처 플래그와 마이크로 PR 로 하는 배포 관리에 대해 소개해주셨습니다. ","title":"Trunk-based development, Feature Flag, micro PR 와 함께 주 2회 배포하기 | 29CM TEAM","location":"https:\/\/medium.com\/29cm\/trunk-based-development-feature-flag-micro-pr-%25EC%2599%2580-%25ED%2595%25A8%25EA%25BB%2598-%25EC%25A3%25BC-2%25ED%259A%258C-%25EB%25B0%25B0%25ED%258F%25AC%25ED%2595%2598%25EA%25B8%25B0-b703d646d945"},{"location":"https:\/\/github.com\/apple\/swift\/pull\/68629?","comments":"`func callCat() throws CatError -> Cat` 이런 식으로 예외 타입을 명시해서 throw할 수 있는 기능이 머지됐다고 하네요","title":"Typed throws by DougGregor · Pull Request #68629 · apple\/swift","keywords":["Swift"]},{"comments":"","title":"UIKit View Lifecycle - viewIsAppearing","location":"https:\/\/useyourloaf.com\/blog\/uikit-view-lifecycle-viewisappearing\/?","keywords":["UIKit","영어"]},{"comments":"","keywords":["SwiftUI"],"title":"Understanding the Composable Architecture for SwiftUI Projects | by Lorrayne Paraiso ","location":"https:\/\/medium.com\/@lorrayneparaisoc\/understanding-the-composable-architecture-for-swiftui-projects-1b8e46366383"},{"keywords":["SwiftUI"],"title":"Unveiling the Data Modeling Principle of SwiftData | Better Programming","location":"https:\/\/betterprogramming.pub\/unveiling-the-data-modeling-principles-of-swiftdata-480c993d2f5c","comments":"SwiftData 관련 글이 점점 많아지고 있네요. 코어 데이터와 비교해서 데이터 모델링 원칙이 무엇일까 설명하고 있습니다"},{"location":"https:\/\/www.avanderlee.com\/swift\/value-and-type-parameter-packs\/?","title":"Value and Type parameter packs in Swift explained with examples","comments":"스위프트 5.9에 추가된 파라미터 팩 활용에 대해 다양하고 상세한 설명입니다. 역시 추천할 만한 하네요","keywords":["Swift","영어","pick"]},{"title":"When to refactor your code? | by Rob van der Leek ","comments":"파이썬 코드지만 일반적인 관점에서 리팩터링을 해야 하는 기준을 세우는 데 도움이 될 것 같습니다","location":"https:\/\/betterprogramming.pub\/when-to-refactor-your-code-4f457836dd3","keywords":["Culture","영어"]},{"location":"https:\/\/medium.com\/macoclock\/why-apple-adding-av1-support-is-a-big-deal-faa46a356f3c","comments":"SoC 온칩에 AV1에서 비디오 코덱 하드웨어 가속을 지원한다고 하네요. 앞으로 점점 더 성능이 좋아지겠죠?","keywords":["Hardware"],"title":"Why Apple Adding AV1 Support Is A Big Deal | by Andrew Zuo "},{"keywords":["Hardware"],"title":"Why Are There So Many Issues With the iPhone 15 Pro | by The Useful Tech ","comments":"또 다른 아이폰 15 프로에 대한 발열과 내구성에 대한 글입니다. ","location":"https:\/\/medium.com\/macoclock\/why-are-there-so-many-issues-with-the-iphone-15-pro-b2907f901c05"},{"comments":"엑스코드 브레이크포인트와 관련된 이런저런 팁들입니다","keywords":["DeveloperTools","영어"],"title":"Xcode Breakpoints 101 | Stackademic","location":"https:\/\/blog.stackademic.com\/xcode-breakpoints-101-39752aafa270"},{"keywords":["Culture"],"title":"iOS 17.1 Beta 1 Released — What’s New? (14 New Features!) | by Nikhil Vemu ","comments":"17.1 베타에 포함된 내용들을 소개합니다","location":"https:\/\/medium.com\/macoclock\/ios-17-1-beta-1-released-whats-new-14-new-features-542e34da8f27"},{"title":"polac24\/XCBuildAnalyzer: SwiftUI application to analyze Xcode build system graph (Experimental)","keywords":["OpenSources"],"comments":"XCBuildAnalyzer 저장소","location":"https:\/\/github.com\/polac24\/XCBuildAnalyzer?"}],"releaseAt":717174000} -------------------------------------------------------------------------------- /json/news-89.json: -------------------------------------------------------------------------------- 1 | {"items":[{"location":"https:\/\/developer.apple.com\/forums\/thread\/732320","title":"The Care and Feeding of Developer ID | Apple Developer Forums","comments":"애플 개발자 포럼에서 거의 모든 대답을 해주는(?) 에스키모님이 개발자 계정 백업과 복구에 대한 내용을 업데이트했네요. ","keywords":["APPLE","pick"]},{"location":"https:\/\/zoewave.medium.com\/resources-for-visionos-d16a37a54ac9","keywords":["VisionOS","Framework"],"title":"Apple visionOS Tech Stack | by Siamak ","comments":"비전오에스에서 개발하기 위해 다뤄야 하는 기술 스택을 설명해주고 있습니다"},{"keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/12-macos-apps-to-thrust-your-productivity-to-its-peaks-f00f369d4c97","title":"12 macOS Apps To Thrust Your Productivity To Its Peaks | by Nikhil Vemu ","comments":"무료도 있지만 대부분 유료 맥 앱을 소개해주고 있습니다. 저도 안 써본 앱이 많네요"},{"location":"https:\/\/medium.com\/macoclock\/5-unique-ways-to-fully-utilize-usb-c-on-the-iphone-15-d927e3a77c6f","keywords":["Hardware"],"title":"5 Unique Ways to Fully Utilize USB-C on the iPhone 15 | by The Useful Tech ","comments":"이제 아이폰에서 USB-C 연결하고 확장이 가능해졌습니다. 허브는 기본이고, 외장하드나 키보드도 바로 연결이 가능해졌죠"},{"location":"https:\/\/www.avanderlee.com\/concurrency\/preconcurrency-checking-swift\/?","keywords":["Swift","영어","pick"],"comments":"앞으로 스위프트 6부터는 concurrency executor(스레드) 사이에 sendable 한가 아닌가를 판단하거나 마이그레이션을 도와주도록 속성이 추가된다고 하네요","title":"@preconcurrency: Incremental migration to concurrency checking"},{"location":"https:\/\/www.polpiella.dev\/info-plist-swift-cli\/?","title":"Adding an Info.plist file to a Swift executable","keywords":["DeveloperTools","영어"],"comments":"CLI가 앱 번들이 아니라서 Info.plist를 추가하고 싶을 때 설정하는 방법을 설명합니다"},{"comments":"","title":"Advanced SwiftUI Animations - Part 6: CustomAnimation - The SwiftUI Lab","keywords":["SwiftUI","영어"],"location":"https:\/\/swiftui-lab.com\/swiftui-animations-part6\/?"},{"comments":"아코디언처럼 접혔다 펼쳐지는 뷰를 UIKit 기반으로 만드는 과정을 설명합니다","keywords":["UIKit"],"title":"An Accordion View in Swift and UIKit | by Steven Curtis ","location":"https:\/\/stevenpcurtis.medium.com\/an-accordion-view-in-swift-and-uikit-83c93f0958df"},{"location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-128-93b5d24e3654","title":"App Design Inspiration 128 | App Design Agency ","keywords":["Design"],"comments":""},{"keywords":["Design"],"comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-196-eee5fd79304b","title":"App Development Inspiration 196 | Custom Company "},{"title":"App Development Inspiration 198 | iOS Company ","comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-198-ad693cb90967","keywords":["Design"]},{"location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-199-460fbe373beb","keywords":["Design"],"title":"App Development Inspiration 199 | Top Android Company ","comments":""},{"location":"https:\/\/blog.timac.org\/2023\/1019-state-of-swift-and-swiftui-ios17\/?","keywords":["SwiftUI","Swift","영어","pick"],"comments":"애플 내부에서 만들어서 macOS, iOS 에 포함한 바이너리 중에서 Swift와 SwiftUI 비율을 측정하는 분이 iOS 17에 대한 통계를 포함했습니다. iOS 17에는 6030개 바이너리가 있고, 이 중에서 385개 SwiftUI로, Swift 코드는 1516개라고 합니다. 비율로 보면 Swift로 만든 바이너리가 17% 정도를 차지합니다","title":"Apple’s use of Swift and SwiftUI in iOS 17"},{"location":"https:\/\/www.swiftwithvincent.com\/blog\/bad-practice-not-using-phantom-types?","title":"Bad practice: not using Phantom Types — Swift with Vincent","keywords":["Swift","영어"],"comments":"서로 다른 타입을 비교할 때 당연하다고 생각하고 실수할 수 있는 것(예를 들어 ID 타입)을 미리 방지할 수 있도록 개선하는 방법입니다."},{"location":"https:\/\/www.pointfree.co\/blog\/posts\/116-being-a-good-citizen-in-the-land-of-swiftsyntax","keywords":["OpenSources","Swift","영어"],"comments":"포인트프리에서 SwiftSyntax를 사용할 때 버전 매칭 문제를 지적했습니다. 워낙 새로운 문법과 구조가 추가되다보니 버전을 매칭하는 게 중요하더군요","title":"Being a good citizen in the land of SwiftSyntax"},{"location":"https:\/\/medium.com\/@henribredtprivat\/create-an-ios-share-extension-with-custom-ui-in-swift-and-swiftui-2023-6cf069dc1209","comments":"공유 익스텐션을 만드는 과정을 설명합니다","keywords":["SwiftUI","Framework"],"title":"Create an iOS Share Extension with custom UI in Swift and SwiftUI (2023) | by Henri Bredt "},{"title":"Decodable SwiftData | by Drew Althage ","location":"https:\/\/betterprogramming.pub\/decodable-swiftdata-a-proof-of-concept-for-building-offline-first-ios-apps-5c5434ea61b5","comments":"서버가 없이 오프라인 모드인 상태로 데이터를 표시하거나 구현하도록 구현하는 과정을 설명합니다","keywords":["Swift"]},{"comments":"공간 컴퓨팅 화면 구성과 디자인을 위한 화면 요소 차이를 설명합니다. 해외는 커뮤니티나 개발사들 중심으로 다양한 사례가 공개되고 있는 것 같습니다. visionOS 앱 출시를 위한 스터디라도 해봐야겠네요","location":"https:\/\/www.createwithswift.com\/designing-for-visionos-shifting-from-ios-and-ipados\/?","title":"Design for Spatial Computing: from iOS\/iPadOS to visionOS","keywords":["VisionOS","Framework"]},{"location":"https:\/\/swift2931.medium.com\/destroy-dependency-injection-in-swift-caa092e30954","keywords":["Swift"],"comments":"까칠한 그 분(?)이 돌아오셨습니다. 코드 중복 관점에서 IoC나 DI가 오히려 더 중복된 코드를 만들어 내는 게 아니냐 질문을 던집니다. 단지 무엇을 OOO 한다고해서 모든 문제가 해결되는 것은 아니니까요","title":"Destroy dependency injection in Swift | by Jim Lai "},{"comments":"","keywords":["SwiftUI","Framework"],"location":"https:\/\/asynclearn.medium.com\/discover-whats-new-in-lottie-4-3-0-in-swiftui-2ddff19237c9","title":"Discover What’s New in Lottie 4.3.0 in SwiftUI | by AsyncLearn "},{"location":"https:\/\/medium.com\/@salgarayes\/docc-swift-documentation-8b8eca29bb00","comments":"저도 아직 DocC로 문서화를 해서 배포까지는 못 해봤습니다. 이제 코드로 문서화를 만드는 시스템은 정말 좋아진 것 같네요","keywords":["DeveloperTools"],"title":"DocC: Swift Documentation | by Yeskendir Salgara "},{"title":"Emotion Classification: iOS App with CoreML model trained by CreateML | by Yeskendir Salgara ","comments":"캐글에서 가져온 문제 데이터셋을 기반으로 CreateML로 모델을 만들고, 얼굴 표정을 분석하는 샘플 앱을 만들었네요. 가볍게 해보기 좋은 것 같습니다","keywords":["Framework"],"location":"https:\/\/medium.com\/@salgarayes\/emotion-classification-ios-app-with-coreml-model-trained-by-createml-483e5b80f4e4"},{"title":"Grape – Swift Package Index","location":"https:\/\/swiftpackageindex.com\/li3zhen1\/Grape?","comments":"그래프 엔진이면서 여러 물체 힘을 시뮬레이션 할 수 있도록 오픈소스 프로젝트를 만들고 계시네요","keywords":["OpenSources"]},{"title":"Harnessing the Trifecta of State: State Management with SwiftUI on iOS — Part 3\/4 | by Christian Gaisl ","comments":"상태 관리를 위해서 조심해야 할 점과 뷰모델을 기반으로 테스트를 시도하는 것을 설명합니다","location":"https:\/\/medium.com\/@cgaisl\/harnessing-the-trifecta-of-state-state-management-with-swiftui-on-ios-a3f62dde13ff","keywords":["SwiftUI"]},{"comments":"간단한 TCA 구조를 만드는 과정을 설명합니다","title":"Hey World! A SwiftUI list of countries with TCA | by Marco Taddei ","location":"https:\/\/proudlynerd.vidiemme.it\/hey-world-a-swiftui-list-of-countries-with-tca-eda608376d60","keywords":["Architecture","SwiftUI"]},{"comments":"제목만 보고 아키텍처 이야기인가 했는데, 디자인 시스템 중에서 토큰으로 만들어지는 컬러값 같은 JSON 토큰값을 기반으로 Swift 코드를 생성하는 과정을 설명합니다. Swift-Syntax를 다양하게 쓰는 사례인 것 같습니다","keywords":["DeveloperTools"],"title":"How MEGA engineered its iOS design tokens module | by MEGA ","location":"https:\/\/medium.com\/@mega-blog\/how-mega-engineered-its-ios-design-tokens-module-8c299b866df7"},{"location":"https:\/\/medium.com\/@artemkvasnetcky\/ios-microapps-architecture-part-2-1cc2ceefaaec","title":"IOS Microapps Architecture — Part 2 | by Artem Kvasnetskyi ","comments":"앱을 구성하는 요소들을 어떤 단위로 어떻게 묶어서 패키지 - 모듈로 묶을 것인가 점차 다양한 이야기가 공유되는 것 같습니다","keywords":["Architecture","DeveloperTools"]},{"title":"Introducing Insights, and new pricing - Reveal","location":"https:\/\/revealapp.com\/news\/introducing-insights-and-new-pricing\/?","keywords":["DeveloperTools","영어"],"comments":"유료 도구였네요. 바이너리 파일을 접근성 관점에서 분석해서 어떤 요소가 부족한가 이슈화시켜주는 앱이라고 합니다. 저도 써보지는 못한 앱이지만 흥미로왔습니다"},{"location":"https:\/\/blog.xavie.mirmon.co.uk\/macos-users-beware-amos-trojan-2f03c0848b1f","title":"MacOS users beware! AMOS Trojan | by Xavier Mirabelli-Montan ","keywords":["Culture"],"comments":"macOS라고 해서 바이러스나 악성 코드가 없는 건 아니죠. AMOS 라는 악성 코드에 대한 이야기입니다. "},{"comments":"미리보기 매크로에 대한 간단한 소개입니다","location":"https:\/\/swiftwithmajid.com\/2023\/10\/17\/mastering-preview-macro-in-swift\/?","keywords":["Swift","영어"],"title":"Mastering Preview macro in Swift | Swift with Majid"},{"location":"https:\/\/www.mothersruin.com\/software\/Apparency\/?","comments":"맥용 앱을 분석해서 보안 관점에서 취약성을 진단해주는 무료 앱입니다. ","title":"Mothers Ruin Software | Apparency","keywords":["DeveloperTools","영어"]},{"title":"NSSpain XI (2023) on Vimeo","location":"https:\/\/vimeo.com\/showcase\/10672108?","comments":"NSSpain 개발자 컨퍼런스 행사 영상이 공개되었습니다","keywords":["Culture"]},{"comments":"런타임에 속도를 조금이라도 개선할 수 있는 최적화 방법을 소개합니다. ","keywords":["Swift"],"title":"Optimizing work in iOS runtime. Photo by Bill Jelen on Unsplash | by Boris ","location":"https:\/\/itnext.io\/optimizing-work-in-ios-runtime-b2afc10ec775"},{"keywords":["Swift","영어"],"title":"Pádraig on the Computer — SwiftSyntax Code Generation Notes","location":"https:\/\/padraig.org\/swift-format\/2023\/10\/17\/swift-format-tips?","comments":"SwiftSyntax로 코드 생성을 하면서 느꼈전 소감(?) 정도 짧은 글입니다. "},{"comments":"SOLID 예시 코드인데 길지 않아서 가볍게 읽을 만합니다. 물론 내용은 SOLID라서 가볍지 않지만요 ;)","title":"SOLID Principles in Swift With Examples | by Alessandro Manilii ","location":"https:\/\/medium.com\/@alessandromanilii\/solid-principles-in-swift-with-examples-f3cd97f005f5","keywords":["Architecture"]},{"location":"https:\/\/swiftwithmajid.com\/2023\/10\/10\/sensory-feedback-in-swiftui\/?","title":"Sensory feedback in SwiftUI | Swift with Majid","keywords":["SwiftUI","영어"],"comments":""},{"title":"Siri Intents for WatchOS | by Faaiz D ","location":"https:\/\/medium.com\/simform-engineering\/siri-intents-for-watchos-b45798950f2c","keywords":["SwiftUI","Framework"],"comments":"워치 앱에서 시리를 통해서 앱에 데이터를 전달하기 위해 Intents를 사용하는 과정입니다"},{"comments":"스포티타이 iOS 팀에서 빌드 시스템을 Bazel로 대략 6개월동안 마이그레이션한 경험을 소개합니다. ","keywords":["DeveloperTools","영어","pick"],"title":"Switching Build Systems, Seamlessly - Spotify Engineering : Spotify Engineering","location":"https:\/\/engineering.atspotify.com\/2023\/10\/switching-build-systems-seamlessly\/?"},{"comments":"","location":"https:\/\/medium.com\/@jakir\/sync-swiftdata-with-icloud-using-cloudkit-34764a46ba54","keywords":["SwiftUI","Framework"],"title":"Sync SwiftData with iCloud using CloudKit | by Jakir Hossain "},{"title":"The Action Button: Taking Back Your iPhone | by Warner Crocker ","keywords":["Hardware"],"comments":"액션 버튼 쓰고 계신가요? 저는 아직 제대로 활용하지 못하는 것 같습니다. 자꾸만 캡처할 때 실수로 볼륨업 대신에 누르더라구요 ㅎㅎ","location":"https:\/\/medium.com\/@WarnerCrocker\/the-action-button-taking-back-your-iphone-839887007852"},{"keywords":["Hardware"],"location":"https:\/\/medium.com\/macoclock\/the-usb-c-iphone-backlash-is-coming-3d979e3ca6ff","title":"The USB-C iPhone Backlash Is Coming | by Jonathan Kim ","comments":"편리해진 부분도 있지만, 오히려 USB-C 관련 기기들이 너무 난립해서 약간 걱정스러운 부분이 있습니다. USB-C로 넘어갈 준비가 안된 분들도 꽤 많을테구요 ㅜㅜ"},{"title":"Thread dispatching and Actors: understanding execution - SwiftLee","location":"https:\/\/www.avanderlee.com\/concurrency\/thread-dispatching-actor-execution\/?","comments":"당분간은 비동기 상황에서 어떤 스레드에서 실행될 것인가, 관점에서 구조적인 동시성 프로그래밍을 연습이 필요할 것 같습니다. 반복문으로 별찍기 연습했던 것처럼 멀티 스레드 환경에 적합한 비동기 별찍기(?)는 무엇일까요 ㅎㅎ","keywords":["Swift","영어"]},{"title":"Unit Test the Observation Framework | by Jacob Bartlett ","keywords":["Testing"],"location":"https:\/\/betterprogramming.pub\/unit-test-the-observation-framework-d0f0fe240944","comments":"콤바인이 옛날 세상이고, Observation 프레임워크가 새로운 세상이라고 너무 강조하는 것 같지만, 테스트 관점에서는 또 다른 세상이네요"},{"title":"What is a Window in an iOS application? | by Ario Liyan ","keywords":["UIKit"],"location":"https:\/\/medium.com\/@Ariobarxan\/what-is-a-window-in-an-ios-application-72698e733f87","comments":"보기 드문 UIKit 자료지만, 윈도우 관련 설명이 좋아서 골라봤습니다"},{"title":"Why You Should Upgrade To macOS Sonoma | by Andrew Zuo ","comments":"","keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/why-you-should-upgrade-to-macos-sonoma-28806489d4c9"},{"keywords":["APPLE"],"location":"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-15_1-release-notes?","comments":"Xcode 15.1 베타가 올라왔습니다. `@IBDesignable` 삭제된다는 게 눈에 띄네요","title":"Xcode 15.1 Beta Release Notes | Apple Developer Documentation"},{"location":"https:\/\/towardsdatascience.com\/your-own-personal-llama-8cf24a9237cb","keywords":["Culture"],"comments":"생성형 AI를 개인화시키는 것은 여전히 관심들이 많네요. 나만의 코딩 스타일을 배워서 코딩해주는 시대가 얼마 남지 않았겠네요","title":"Your Own Personal LLaMa with Information Retreival | Towards Data Science"},{"title":"‘init(destination:isActive:label:)’ was deprecated in iOS 16.0: use NavigationLink(value:label:) inside a NavigationStack or NavigationSplitView’ | by Muhammad naufal adli ","location":"https:\/\/naufaladli0406.medium.com\/init-destination-isactive-label-was-deprecated-in-ios-16-0-933ba76a29b4","keywords":["SwiftUI"],"comments":""}],"sequence":89,"releaseAt":718383600,"version":"1.0"} -------------------------------------------------------------------------------- /json/news-91.json: -------------------------------------------------------------------------------- 1 | {"version":"1.0","sequence":91,"items":[{"title":"5 Common Mistakes Developers Make with Async\/Await in Swift | by Emin Emini ","keywords":["Swift"],"comments":"async\/await 을 사용하면 모든 비동기 처리 문제가 해결되는 것처럼 설명하는 경우가 있는데, 다른 어떤 기술과 마찬가지로 개발자가 실수하면 독이 되는 경우가 꽤 있습니다","location":"https:\/\/levelup.gitconnected.com\/5-common-mistakes-developers-make-with-async-await-in-swift-14ddd651312e"},{"title":"An early look at the future of testing with swift-testing","keywords":["Testing","영어","pick"],"comments":"애플에서 매크로 기반으로 개발중인 오픈소스 swift-testing을 실제로 사용하면 어떤 느낌인지 보여주는 글입니다. 내년쯤부터는 테스트 코드에도 매크로가 적극 도입될 것 같네요","location":"https:\/\/www.polpiella.dev\/swift-testing\/?"},{"keywords":["Design","영어"],"comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-204-3f0b53879587","title":"App Development Inspiration 204 | iOS Company "},{"title":"Apple M3: If you build it, will they come? | by Kostas Farkonas ","keywords":["Hardware"],"comments":"M3 계열 맥북과 아이맥이 나온 뒤로 많은 분들이 M1도 짱짱해, M2랑 별차이가 없어. 논란이 많이 되고 있는 가운데, 애플 입장에서도 매년 새로운 맥이 나오는 게 엄청난 도전인 것 같습니다","location":"https:\/\/medium.com\/turn-on-press-play\/apple-m3-if-you-build-it-will-they-come-92c9dd8a83ec"},{"comments":"내년 이맘때는 아이폰에서 RCS 방식으로 메시지를 주고 받을 수 있다고 합니다. 여전히 초록색 말풍선이 보일꺼고 안드로이드와 호환성이 올라가면 아이폰 사용자들만 이득보는 게 아닌가 싶기는 하네요","location":"https:\/\/medium.com\/macoclock\/apples-1st-round-win-rcs-is-finally-coming-to-iphone-0a7804381e12","keywords":["Culture"],"title":"Apple’s 1st round win — RCS is FINALLY coming to iPhone | by David Lewis "},{"location":"https:\/\/levelup.gitconnected.com\/awesome-terminal-applications-e4a06022dffa","title":"Awesome Terminal Applications | by Mohammad Faisal ","comments":"터미널 전용 앱을 추천해줍니다. 개인적으로는 `thefuck` 이거 너무 재밌네요. 오타냈을 때 욕이 저절로(?) 나오는 상황을 그대로 재연한 것 같습니다 ㅎㅎ ","keywords":["DeveloperTools","영어"]},{"location":"https:\/\/apps.apple.com\/us\/app\/bento-craft\/id6468541457?","title":"Bento|Craft on the App Store","keywords":["OpenSources"],"comments":"오픈 소스로 만들고 앱 스토어에 올린 애플 키노트 스타일로 주요 사항을 배치하도록 디자인을 도와주는 무료 앱입니다. 도시락처럼 칸을 나눠서 보여줘서 Bento 인가 봅니다"},{"title":"Beyond the Code: Exploring the Innovations of Swift 6 | by Melissa ","location":"https:\/\/blog.stackademic.com\/beyond-the-code-exploring-the-innovations-of-swift-6-e0290487699c","keywords":["Swift"],"comments":"길고 길었던 Swift 5.x 시대가 끝나갑니다. 내년부터는 Swift 6를 만날 수 있습니다. 상세하게 추가되는 내용을 설명하는 글은 아니고 변화하고 발전한 키워드 중심으로 흐름을 짚어주는 글입니다"},{"comments":"iOS 17에 추가된 `Assistive Access` 접근성 모드를 사용 경험을 바탕으로 개발자가 신경쓸 부분을 소개해줍니다","keywords":["Accessibility","영어"],"location":"https:\/\/www.swiftjectivec.com\/assisstive-access-on-ios-swift\/?","title":"Checking Out Assistive Access | Swiftjective-C"},{"title":"Controlling Actors With Custom Executors | Jack Morris","keywords":["Swift","영어"],"location":"https:\/\/jackmorris.xyz\/posts\/2023\/11\/21\/controlling-actors-with-custom-executors\/?","comments":"커스텀 Executor를 만들어서 Actor에 연결하는 과정을 설명합니다. 저자도 처음 구현해보느냐고 오버헤드가 심하다고 말하는 데요, 저는 올드스쿨이라 이런 과정이 필요하면 그냥 스레드를 만들면 안되나 싶기도 했습니다. DB에 동기적으로 연결해서 처리하는 executor를 만드는 과정이라고 합니다"},{"title":"Debugging SwiftUI views: what caused that change? - SwiftLee","comments":"SwiftUI는 뷰지만 결국 struct 기반 코드라서 디버깅 과정에서 확인할 수 있는 부분이 무엇인가 설명합니다","location":"https:\/\/www.avanderlee.com\/swiftui\/debugging-swiftui-views\/?","keywords":["SwiftUI","DeveloperTools","pick"]},{"comments":"CoreML 모델을 Vapor로 API를 만들어서 제공하는 방식에 대해 설명합니다. 예제 모델은 이미지를 보내서 처리해서 결과만 보내주도록 처리했네요","keywords":["ServerSide","Framework","pick"],"location":"https:\/\/betterprogramming.pub\/deploy-coreml-models-on-the-server-with-vapor-48809a853fae","title":"Deploy CoreML Models on the Server with Vapor | by Drew Althage "},{"location":"https:\/\/www.createwithswift.com\/ensure-visual-accessibility-glyphs-icons-and-symbols\/?","comments":"접근성 관점에서 그림 문자 Glyph와 아이콘, 도형이 어떤 차이를 가져오는 지 상세하게 설명해주는 글입니다. ","title":"Ensure Visual Accessibility: Glyphs, Icons and Shapes","keywords":["Accessibility","pick"]},{"keywords":["Architecture"],"comments":"","location":"https:\/\/rizumita.medium.com\/from-past-to-future-changes-in-ios-viewmodel-and-architecture-patterns-dd3632039c42","title":"From Past to Future: Changes in iOS ViewModel and Architecture Patterns | by Ryoichi Izumita "},{"title":"How I work paperless within the Apple ecosystem | by Tobias Hedtke ","comments":"종이를 사용하지 않고 아이패드로 필기하는 분들이 엄청 많아졌다고 하죠. 저는 아직도 사소한 메모는 종이에 하고, 정리가 필요한 메모나 스케치는 아이패드로 쓰기도 합니다. 여러분들은 어떻게 기록하시나요?","location":"https:\/\/medium.com\/@tobias.hedtke\/how-i-work-paperless-within-the-apple-ecosystem-fc9367c3f52d","keywords":["Culture"]},{"title":"How to customize the macOS menu bar in SwiftUI | Daniel Saidi","keywords":["AppKit","영어"],"location":"https:\/\/danielsaidi.com\/blog\/2023\/11\/22\/how-to-customize-the-macos-menu-bar-in-swiftui?","comments":"SwiftUI 가 맥 개발도 간편하게 도와주는 것 같습니다"},{"location":"https:\/\/tanaschita.com\/20231120-migration-with-swiftdata\/?","title":"How to migrate to a new schema with SwiftData in iOS","keywords":["Framework","Swift","영어"],"comments":"제목 그대로 SwiftData 스키마를 마이그레이션하는 방법을 소개합니다"},{"comments":"폴 허드슨이 메탈 쉐이더로 SwiftUI 화면을 만드는 방법 자료를 만들었네요","keywords":["SwiftUI","영어"],"location":"https:\/\/www.hackingwithswift.com\/articles\/262\/introducing-inferno-metal-shaders-for-swiftui?","title":"Introducing Inferno: Metal shaders for SwiftUI – Hacking with Swift"},{"comments":"M3 맥북이 논란이 되고 있습니다만, 역시나 교체 주지가 되어가고 필요한 분들에게는 좋은 선택이 아닐까 싶네요","title":"M3 MacBook Pro Worse Than Predecessor? | by Andrew Zuo ","location":"https:\/\/medium.com\/macoclock\/m3-macbook-pro-worse-than-predecessor-b483a966aee8","keywords":["Hardware"]},{"keywords":["OpenSources","영어"],"comments":"포인트 프리에서도 기존 오픈소스들에 매크로를 적극 도입하고 있습니다. `CasePaths` 매크로 버전을 소개합니다","location":"https:\/\/www.pointfree.co\/blog\/posts\/117-macro-bonanza-case-paths?","title":"Macro Bonanza: Case Paths"},{"comments":"viewThatFits 사용하는 다양한 케이스를 상세하게 설명해줍니다. 이런 자료가 많아져야 하는 데 그 사이에 또 바뀌면 어쩌죠 ㅜㅜ","title":"Mastering ViewThatFits | fatbobman ","location":"https:\/\/medium.com\/the-swift-cooperative\/mastering-viewthatfits-3294d74cb17b","keywords":["SwiftUI"]},{"title":"Metal in SwiftUI: How to Write Shaders | by Jacob Bartlett ","comments":"메탈 쉐이더를 SwiftUI 뷰에 적용하는 예제 코드입니다. ","keywords":["SwiftUI"],"location":"https:\/\/levelup.gitconnected.com\/metal-in-swiftui-how-to-write-shaders-b39c283d6523"},{"title":"Migrating a Core Data store to an App Group shared container","keywords":["Framework","영어"],"location":"https:\/\/www.polpiella.dev\/core-data-migration-app-group\/?","comments":""},{"location":"https:\/\/stevenpcurtis.medium.com\/modularizing-swiftui-projects-82fc25066814","title":"Modularizing SwiftUI Projects. Get separate! | by Steven Curtis ","keywords":["SwiftUI","Architecture"],"comments":"저는 `모듈화`라는 부분도 Swift Package 처럼 소스 코드 패키지로 분리하는 것과 XCFramework 처럼 프레임워크 번들로 분리하는 것을 구분했으면 좋겠습니다. 서로 역할과 방식이 조금 다른데 구분 없이 사용되는 것 같아서 아쉽네요"},{"location":"https:\/\/andrewzuo.com\/native-apps-are-dead-get-over-it-9944e5253c93","keywords":["Culture","영어"],"comments":"여전히 모든 앱의 구성이 네이티브가 아니거나, 반대로 일부만 네이티브인 경우도 많아지는 것 같습니다. 기술적인 선택이 아니라 마법 구슬이 필요한 수준인가 의문이 들기는 하네요","title":"Native Apps Are Dead — Get Over It | by Andrew Zuo "},{"comments":"지난주 화제의 중심에 있던 OpenAI. 새로 바뀐 Assistant와 Function API를 사용해서 앱을 만드는 과정입니다","location":"https:\/\/medium.com\/if-let-swift-programming\/openai-function-calling-ios-implementation-5b68b0f2e2f7","keywords":["Framework"],"title":"OpenAI Function Calling, iOS Implementation | by James Rochabrun "},{"title":"Scanner App using SwiftUI | by Nabendu Biswas ","comments":"","location":"https:\/\/nabendu82.medium.com\/scanner-app-using-swiftui-14cf4151d69a","keywords":["SwiftUI"]},{"location":"https:\/\/damian.fyi\/swift\/2023\/11\/13\/swift-strings-look-identical-but-aren't.html?","keywords":["Swift","영어"],"comments":"문자열 타입 동작과 데이터 비교는 늘 고민꺼리가 있는 것 같습니다","title":"Swift strings look identical but aren’t | Damian Mehers"},{"comments":"올해 오프라인 컨퍼런스가 대부분 부활했고, 다른 컨퍼런스에 이어서 SwiftLeeds 영상도 올라왔습니다","location":"https:\/\/www.youtube.com\/playlist?list=PL-wmxEeX64YRN8dTs88K6jot_NKmemMLb","title":"SwiftLeeds 2023 - YouTube","keywords":["Culture","영어"]},{"comments":"맥용 드래그 앤 드롭 관련이라 가져와봤습니다","keywords":["AppKit"],"title":"SwiftUI & macOS: Drag Files Into Dock | by Grace Huang ","location":"https:\/\/imgracehuang.medium.com\/swiftui-macos-drag-files-into-dock-0a5447edb9b2"},{"keywords":["SwiftUI","영어"],"location":"https:\/\/useyourloaf.com\/blog\/swiftui-splitview-compact-column-control\/?","title":"SwiftUI SplitView Compact Column Control","comments":"이제야 SplitView 기능을 내비게이션에서 제대로 쓸 수 있나봅니다 ㅜㅜ "},{"title":"SwiftUI | Button reverse engineering ","location":"https:\/\/levelup.gitconnected.com\/swiftui-button-reverse-engineering-a8fa2dc3a24e","keywords":["SwiftUI"],"comments":"리버스 엔지니어링이라기 보다는 따라만들기에 가깝습니다"},{"keywords":["SwiftUI"],"location":"https:\/\/medium.com\/@tezov.app\/swiftui-sugar-syntax-and-stateflow-a8d0032665fd","comments":"안드로이드 Flow 스타일로 State를 관리하는 방식이네요","title":"SwiftUI: Sugar syntax and StateFlow | by Tezov "},{"title":"The alternative to SwiftUI's Spacer","comments":"","location":"https:\/\/david.y4ng.fr\/the-alternative-to-swiftui-spacer\/?","keywords":["SwiftUI","영어"]},{"comments":"Xcode 대신 네오빔으로 개발 환경을 꾸민 분이 계시네요","keywords":["DeveloperTools","영어","pick"],"title":"The complete guide to iOS & macOS development in Neovim","location":"https:\/\/wojciechkulik.pl\/ios\/the-complete-guide-to-ios-macos-development-in-neovim?"},{"title":"The other operating system: BeOS 5 Personal Edition | Medium","comments":"한 때 OS X가 될 후보였던 BeOS 5에 대한 소개입니다. 구경해보세요 :) ","keywords":["Culture"],"location":"https:\/\/raduzaharia.medium.com\/the-other-operating-system-beos-5-personal-edition-4256ae78eb40"},{"comments":"UIView에 대한 길고긴 총정리 버전 같네요","title":"UIView Heritage: UIView subclass hierarchy | by Ario Liyan ","location":"https:\/\/medium.com\/@Ariobarxan\/uiview-heritage-uiview-subclass-hierarchy-392d72c3895d","keywords":["UIKit"]},{"keywords":["Testing","Swift"],"comments":"async\/await 코드가 많아지면서 테스트를 어떻게 할까 고민스러운 분들께 추천합니다","location":"https:\/\/www.avanderlee.com\/concurrency\/unit-testing-async-await\/?","title":"Unit testing async\/await Swift code - SwiftLee"},{"location":"https:\/\/medium.com\/theymakedesign\/what-is-ux-research-d61581654426","title":"What is UX Research: Methods, Tools, How to Conduct? | TMDesign","keywords":["Design"],"comments":""},{"keywords":["Culture","pick"],"location":"https:\/\/raduzaharia.medium.com\/writing-code-for-ms-dos-with-borland-pascal-7-a84b8c66f680","title":"Writing code for MS-DOS with Borland Pascal 7 | Medium","comments":"어쩌면 저만 관심있을 것 같지만, 저는 중학생 시절에 터보 파스칼 개발 환경에서 코딩했던 게 떠올라서 가져와봤습니다. "},{"comments":"ProRes log 영상을 촬영하기 위한 과정을 설명합니다","location":"https:\/\/medium.com\/macoclock\/iphone-15-pro-max-shooting-prores-log-is-not-easy-but-so-worth-it-fbfa1647b8d0","title":"but SO worth it! | by David Lewis ","keywords":["Hardware","영어"]},{"location":"https:\/\/github.com\/daprice\/Variablur","title":"daprice\/Variablur: Variable blur effects for SwiftUI, powered by Metal","keywords":["OpenSources"],"comments":"뷰 계층에 따라 뒷부분에 블러 효과를 만들어주는 오픈소스입니다"},{"comments":"곧 공개될 iOS 17.2 버전에 변화를 정리한 글입니다. 공간 비디오 영상을 촬영하는 게 어떤 느낌일지 궁금하네요","keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/ios-17-2-has-way-more-features-than-weve-expected-20-new-features-changes-dc0fbfe02355","title":"iOS 17.2 Has Way More Features Than We’ve Expected — 20 New Features & Changes! | by Nikhil Vemu "},{"location":"https:\/\/github.com\/mRs-\/Black-Friday-Deals\/tree\/master?","keywords":["Culture"],"comments":"매년 이맘때만 활성화되는 블랙 프라이데이 할인하는 소프트웨어와 책 정리 저장소입니다. 목록만 쓰윽 살펴봤는데 예년보다 적은 느낌이네요","title":"mRs-\/Black-Friday-Deals: Black Friday Deals for macOS \/ iOS Software & Books"},{"title":"쇼케이스 2023 | Apple 디벨로퍼 아카데미","location":"https:\/\/developeracademy.postech.ac.kr\/showcase","comments":"포항공대에 애플 아카데미가 오픈한 것을 기억하시나요? 12월 4일-5일에 2023년을 뜨겁게 보낸 러너들의 쇼케이스가 있다고 합니다. 관심 있는 분들은 신청서에 \"아카데미 관계자(레츠스위프트 뉴스레터)\"로 제출하시면 됩니다","keywords":["APPLE","한국어","pick"]},{"location":"https:\/\/medium.com\/delightroom\/%25ED%2581%25AC%25EB%25A1%259C%25EC%258A%25A4-%25ED%2594%258C%25EB%259E%25AB%25ED%258F%25BC-%25EB%258F%2585%25EC%259D%25B8%25EA%25B0%2580-%25EC%2595%25BD%25EC%259D%25B8%25EA%25B0%2580-b0ab2d936dac","title":"크로스 플랫폼 독인가? 약인가?. 딜라이트룸 생각은? | by Joon Won Lee ","comments":"크로스 플랫폼에 대한 앱 개발팀의 현실적인 고민을 볼 수 있어서 좋네요","keywords":["Culture","한국어","pick"]}],"releaseAt":721407600} -------------------------------------------------------------------------------- /json/news-93.json: -------------------------------------------------------------------------------- 1 | {"items":[{"keywords":["Swift"],"location":"https:\/\/levelup.gitconnected.com\/the-case-against-unowned-self-b34103618684","title":"The Case Against [unowned self] | by Jacob Bartlett ","comments":"대부분 strong 대신에 weak를 써야 하는 이유는 널리 알려져 있습니다. 반면에 unowned를 써야 하는 경우는 많지 않죠. 습관적으로 weak나 unowned를 사용하고 계시다면 도움이 될 만한 글입니다. \nweak는 사이드 테이블에 기록했다가 nil-zeroing 이라고 부르는 방식으로 weak 참조를 nil로 바꿔주는 과정을 거칩니다. 이런 동작이 참조가 빈번한 경우는 unowned도 고려해볼 만 하죠. "},{"location":"https:\/\/cdmrkt.medium.com\/10-best-swiftui-templates-to-elevate-your-ios-app-development-acd2c1f762be","comments":"해외에는 이런 식으로 특정한 분야 앱을 어느정도 만들어서 판매하는 모델이 있습니다. 처음 시작하기 막막한 경우는 도움이 될 수 있지만, 대신 코드 품질이나 세밀한 디자인까지는 기대하지 않으셔야 합니다","title":"10 Best SwiftUI Templates to Elevate Your iOS App development | by code.market ","keywords":["SwiftUI"]},{"keywords":["Culture"],"comments":"소소하지만 iOS 17 기능 중에서 새로운 기능 몇 가지를 소개합니다. 전화 끊기 기능은 공감이 확~ 되더라구요 ","title":"8 Hidden Things You Didn’t Know Your iPhone Can Do in iOS 17 | by The Useful Tech ","location":"https:\/\/medium.com\/macoclock\/8-hidden-things-you-didnt-know-your-iphone-can-do-in-ios-17-69ddf2a8716b"},{"location":"https:\/\/levelup.gitconnected.com\/a-modern-approach-to-swift-method-swizzling-04b0b25f8241","keywords":["Swift"],"comments":"이전에도 한 번 소개한 적이 있는데 Objective-C 런타입 문법 대신 스위프트 문법으로 스위즐링 구현하는 방법입니다","title":"A modern approach to Swift method swizzling | by Tuan Hoang "},{"keywords":["SwiftUI"],"title":"Adding AI-generated image description to Ice Cubes | by Thomas Ricouard ","location":"https:\/\/dimillian.medium.com\/adding-ai-generated-image-description-to-ice-cubes-c4e7990a5915","comments":"아이스큐브라는 mastodon 앱에 OpenAI API로 이미지를 생성하는 기능을 추가한 과정을 설명합니다"},{"location":"https:\/\/medium.com\/apple-virtual-reality-augmented-reality\/apple-forced-to-pause-ios-18-development-due-to-shocking-amount-of-bugs-4f3ada962dfa","keywords":["Culture","pick"],"title":"Apple Forced to Pause iOS 18 Development Due to Shocking Amount of Bugs | by The Afronomist ","comments":"불름버그 내부 소식통(?)에 의하면 새로운 OS 작업을 보류하고 버그 수정과 내부 품질 개선에 시간을 쏟는다고 합니다. 제 기억으로는 18년도쯤에도 비슷한 분위기가 있었는데요, 판데믹 이후로 문제가 더 심해진 게 아닌가 의심을 받는 상황이네요. "},{"location":"https:\/\/medium.com\/macoclock\/apples-biggest-challenge-with-the-m3-chips-433eb76e7a5d","keywords":["Hardware"],"title":"Apple’s Biggest CHALLENGE With the M3 Chips | by Michael Swengel ","comments":"M3 가 빨리 나온게 M2 계열 맥 판매가 기대이하라서 아닐까 추측하는 글입니다. M3는 상황이 나아졌을까요? 애플의 적은 애플이다. 라는 문장으로 설명이 끝난 것 같네요. 아이폰은 카메라 기능이 매번 조금씩 달라지지만 맥북은 그정도는 아니니까요"},{"keywords":["Design","pick"],"comments":"폰트 디자이너가 프로그래밍용 모노스페이스 폰트를 만드는 과정을 설명한 조금 특이한 글을 가져와봤습니다. 타이포그래피 스토리도 재밌더라구요!","title":"Astigmata : My Monospace Programming Font | by Jason Knight ","location":"https:\/\/medium.com\/codex\/astigmata-my-monospace-programming-font-b28ccfa9b025"},{"keywords":["Framework"],"title":"Backend-Driven UI on Native iOS apps | by Andrea Scuderi ","comments":"솔직히 읽고나서도 이 글은 분류하기 애매했습니다. 백엔드가 내려주는 UI 데이터를 어떻게 해서 UI 컴포넌트와 연결할 지 여러 가지 방법을 알려줍니다. ","location":"https:\/\/medium.com\/justeattakeaway-tech\/backend-driven-ui-on-native-ios-apps-613c3e8c579f"},{"comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-design-inspiration-138-fd18ee1742b7","title":"Bold and Interactive User Experience Designs | TMDesign","keywords":["Design","영어"]},{"title":"Clear and Tech-savvy Mobile UI\/UX Design Examples | TMDesign","comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-208-cb29fe238c9f","keywords":["Design","영어"]},{"title":"Comparing Desktop Application Development Frameworks | by Wassim ","comments":"크로스 플랫폼 기반으로 데스크톱 앱 개발에 대한 비교 자료입니다. 크로스 플랫폼들이 매우 쓸모가 많아졌음에도 불구하고 여전히 모든 기술이 모든 곳에 다 적합하기는 어려운 것 같아요","keywords":["Culture"],"location":"https:\/\/medium.com\/@maxel333\/comparing-desktop-application-development-frameworks-electron-flutter-tauri-react-native-and-fd2712765377"},{"comments":"커스텀으로 프로그래스뷰를 만드는 과정이네요","title":"Custom ProgressView in SwiftUI | by M.Abbas ","location":"https:\/\/blog.stackademic.com\/custom-progressview-in-swiftui-c94f51ba598b","keywords":["SwiftUI"]},{"location":"https:\/\/blog.martinp7r.com\/posts\/decoupled-stacked-sheet-navigation-with-multiple-modals-in-swiftui\/?","comments":"","title":"Decoupled stacked sheet navigation with multiple modals in SwiftUI | Martin","keywords":["SwiftUI","영어"]},{"title":"Design tool canvas handles","location":"https:\/\/bjango.com\/articles\/designtoolcanvashandles\/?","comments":"","keywords":["Design","영어"]},{"keywords":["Swift","영어"],"comments":"이렇게 까지 해서 미래의 기능을 땡겨(?)써야 하나 싶기는 합니다. SPM에서 미래에 나올 컴파일러 기능을 활성화하는 방식입니다","title":"Enable upcoming Swift features in SPM","location":"https:\/\/www.polpiella.dev\/enable-upcoming-swift-features-in-spm\/?"},{"location":"https:\/\/medium.com\/the-swift-cooperative\/exploring-key-property-wrappers-in-swiftui-state-binding-stateobject-observedobject-191384f1e984","title":"Exploring Key Property Wrappers in SwiftUI | fatbobman ","keywords":["SwiftUI"],"comments":"State와 Binding, Environment 그리고 거의 동일한 버전의 Object를 다루는 프로퍼티 래퍼에 대한 요약 정리 글입니다. 주요한 쓰임새와 중간에 참조로 다른 글들을 링크로 걸어준 것도 깔끔하네요"},{"title":"Export Apple Notes to a PostgreSQL Database with Python and AppleScript | by Jacob Ferus ","comments":"애플 노트 앱 내용을 DB로 옮기는 파이썬 스크립트와 애플 스크립트 설명입니다","keywords":["DeveloperTools"],"location":"https:\/\/itnext.io\/synchronize-apple-notes-to-a-postgresql-database-with-python-and-applescript-2df69bbfbe9b"},{"title":"Flat and Illustrative Mobile Application Design Works | TMDesign","location":"https:\/\/medium.com\/theymakedesign\/mobile-application-design-works-vol-209-5e2463e7f9af","comments":"이런 디자인들을 볼 때마다 막 개발 욕구가 생기기는 하네요. 새해에는 온라인으로 모여서 모각코로 만들어보는 도전꺼리로 진행해봐도 좋겠다 싶네요. ","keywords":["Design","영어"]},{"location":"https:\/\/blog.stackademic.com\/the-beauty-of-swift-language-generics-eda036d5b227","comments":"다른 언어와 비교해서 스위프트 제너릭 문법을 설명해주게 좋네요","keywords":["Swift"],"title":"The Beauty of Swift Language - Generics | by Tim Wang "},{"title":"In-Depth Guide to iCloud Documents | fatbobman ","keywords":["Framework"],"location":"https:\/\/itnext.io\/in-depth-guide-to-icloud-documents-fundamental-setup-and-file-operations-62cc4d9610de","comments":"iCoud 기반 문서를 다룰 때 설정 흐름과 파일 다루는 방식을 설명합니다"},{"location":"https:\/\/levelup.gitconnected.com\/keypath-one-hidden-gem-in-swift-76ab301b069d","keywords":["Swift"],"title":"KeyPath: one hidden gem in Swift | by Tim Wang ","comments":"KeyPath를 적당히 활용할 수 있는 여러 경우를 알려줍니다"},{"location":"https:\/\/swiftwithmajid.com\/2023\/12\/05\/mastering-mapkit-in-swiftui-customizations\/?","title":"Mastering MapKit in SwiftUI. Customizations. | Swift with Majid","keywords":["SwiftUI","영어"],"comments":""},{"location":"https:\/\/medium.com\/codex\/mastering-ui-design-with-swiftui-9c54193ee954","title":"Mastering UI Design with SwiftUI | by Rashad Shirizada ","keywords":["SwiftUI"],"comments":""},{"location":"https:\/\/anup2028.medium.com\/on-demand-resources-in-ios-02b5cd08ad82","keywords":["Framework"],"comments":"앱 스토어에 따로 보관하는 On-demand Resources 기능을 써보도록 배포해 보셨나요? 초기 다운로드하는 앱 용량을 줄일 수 있고 리소스가 많아서 번들 관리가 복잡한 경우나 단계별로 리소스를 다운받아야 하는 경우에 적합한 방법입니다. ","title":"On-Demand Resources in iOS | by Anup Kumar Sahu "},{"location":"https:\/\/www.plainswift.com\/?","title":"Plain Swift - a simple Swift IDE for Windows","keywords":["DeveloperTools","영어"],"comments":"윈도우즈 환경에서도 스위프트 컴파일러로 컴파일하고 실행해 볼 수 있는 개발 환경을 만드는 분이 있네요. 물론 VSCode보다 기능이 부족하고 디버깅도 안되고 스위프트 코드만 동작하는 것 같습니다"},{"title":"Google’s Code Review Process | Medium","comments":"구글 엔지니어는 이렇게 일한다. 책에도 나오는 내용이고, 꽤나 긴 글입니다만 구글에서는 어떻게 코드리뷰를 진행하는 지 설명해주는 글입니다","keywords":["Culture"],"location":"https:\/\/arminnorouzi.medium.com\/googles-code-review-process-dd8bff262df"},{"title":"Seamless and Smooth Mobile App Design Examples | TMDesign","keywords":["Design","영어"],"comments":"","location":"https:\/\/medium.com\/theymakedesign\/app-development-inspiration-207-3b7b95a85600"},{"title":"Sequential and Simultaneous Ops With Async Await | by Alessandro Manilii ","location":"https:\/\/medium.com\/@alessandromanilii\/sequential-and-simultaneous-ops-with-async-await-398341669035","comments":"","keywords":["Swift"]},{"keywords":["Swift","영어"],"comments":"","title":"SwiftData Deleting Data","location":"https:\/\/useyourloaf.com\/blog\/swiftdata-deleting-data\/?"},{"comments":"스유와 안드로이드 젯팩 컴포즈를 하나씩 비교해주는 글이라서 흥미롭게 읽었습니다","title":"SwiftUI VS Jetpack Compose | by Can Akyıldız ","location":"https:\/\/medium.com\/@canakyildz\/swiftui-vs-jetpack-compose-7b716672b44b","keywords":["SwiftUI"]},{"title":"SwiftUI View Models: Lifecycle Quirks | by Luis Recuenco ","keywords":["SwiftUI"],"location":"https:\/\/medium.com\/the-swift-cooperative\/swiftui-view-models-lifecycle-quirks-8dd967e84e31","comments":"SwiftUI가 나오고 나서 애플이 제시한 이런저런 프로퍼티 래퍼를 사용하는 방식 때문에 더 혼란을 주는 게 아닌가 싶기는 합니다. 상태 관리의 모든 것이 정해지지 않아서 너무 황무지 같은 느낌입니다 ㅎㅎ"},{"keywords":["DeveloperTools","영어"],"comments":"dSym 파일로 크래시 로그를 다시 심볼화해서 보는 과정을 설명해줍니다","title":"Symbolicate crash logs with Xcode - SwiftLee","location":"https:\/\/www.avanderlee.com\/xcode\/symbolicate-crash-logs-reports\/?"},{"keywords":["Testing"],"location":"https:\/\/arturgruchala.com\/testing-network-calls-using\/?","comments":"`URLProtocol`을 사용해서 URL 테스트하고 계신가요? 이름이 프로토콜이지만 추상 클래스라는 게 볼 때마다 놀라운 타입이지만 매우 쓸모있는 기능입니다","title":"Testing network calls using URLProtocol"},{"keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/the-apple-products-that-android-has-no-answer-for-c28644796fb1","title":"The Apple products that Android has no answer for | by Lewis J Doyle ","comments":"안드로이드 진영과 단일 브랜드 회사 애플을 직접 비교하기는 어렵지만, 애플 스토어는 꽤 큰 차이가 있는 것 같습니다. 그렇지만 모든 사람이 애플 방식, 애플 기술, 애플 제품을 좋아하는 건 아니죠"},{"location":"https:\/\/azamsharp.medium.com\/the-complete-guide-to-json-web-tokens-jwt-authentication-in-ios-0b30b3eebacc","keywords":["Framework","SwiftUI","pick"],"title":"The Complete Guide to JSON Web Tokens (JWT) Authentication in iOS | by Mohammad Azam ","comments":"로그인 화면부터 시작해서 서버 JS 코드까지 보여주고 URLSession 으로 차근차근 JWT 인증을 받는 흐름을 설명해줍니다"},{"title":"Top 10 Unique Apps — December 2023 | by Clark ","comments":"꽤 신경써서 분류한 상세한 앱 분석 글이네요. 이 분 매달 작성하고 있어서 이전 달도 살펴보시면 좋겠네요","keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/top-10-unique-apps-december-2023-dcdd811df1d3"},{"title":"Transferable drag & drop with only a FileRepresentation not working on macOS | Nonstrict","location":"https:\/\/nonstrict.eu\/blog\/2023\/transferable-drag-drop-fails-with-only-FileRepresentation\/?","comments":"`Transferable` 프로토콜을 이용해서 맥용 앱에 드래그 앤 드롭을 구현하면 동작하지 않는 경우가 있다는 내용이네요. 새로운 기능이 생기면 맥에서는 은근 문제가 있는 것 같아요","keywords":["AppKit","영어"]},{"keywords":["Swift","영어"],"location":"https:\/\/nilcoalescing.com\/blog\/TriggerPropertyObserversFromInitializersInSwift\/?","comments":"","title":"Trigger property observers from initializers in Swift"},{"location":"https:\/\/nonstrict.eu\/blog\/2023\/darwin-notifications-app-extensions\/?","comments":"macOS에 있는 여러 프로세스 사이에서 Notification을 보낼 수 있는 것처럼 iOS용 DarwinNotificationCenter를 만들었네요. 별도 프로세스로 실행되는 익스텐션에서 앱에 노티를 보낼 수 있습니다. ","title":"Using Darwin Notifications to communicate with App Extensions | Nonstrict","keywords":["OpenSources","영어"]},{"comments":"최근 몇 년 사이에 앱 스토어에 추가된 기능 중에서 잘 모르고 지나치는 것들 중에 캠페인 채널 별로 앱 스토어에 접근하는 데이터를 수집하도록 도와주는 캠페인 링크 기능에 대한 설명입니다","keywords":["DeveloperTools","영어"],"location":"https:\/\/www.avanderlee.com\/optimization\/campaign-links-app-store-connect\/?","title":"Using campaign links to track impressions, downloads, and sales"},{"location":"https:\/\/medium.com\/@jankammerath\/vintage-programming-on-macintosh-system-7-5-with-think-c-resedit-5d05c23a8016","comments":"90년대 맥 시스템 7에서 간단한 앱을 만드는 과정을 설명하는 글입니다. Think C로 코딩하고 ResEdit로 화면을 만드는 과정을 설명합니다. 마지막으로는 MacTCP로 Finger 프로토콜을 구현한 예제까지 보여주네요 ㅎㅎ \n저도 가끔 사무실에 있는 G3 iMac에서 비슷한 짓을 해서 웃어봤습니다","title":"Vintage Programming On Macintosh System 7.5 With Think C & ResEdit | by Jan Kammerath ","keywords":["Culture"]},{"keywords":["Architecture"],"comments":"TCA를 선택한 배경을 솔직하게 설명해주고 있습니다. TCA가 모든 것을 해결해주지는 않으니까 팀이 받아들이기 위해서 노력했다는 부분이 인상적입니다","title":"Why I chose The Composable Architecture for SwiftUI and never looked back | by Francisco Gindre ","location":"https:\/\/pacugindre.medium.com\/why-i-chose-the-composable-architecture-for-swiftui-and-never-looked-back-b3ffc3e22d1f"},{"location":"https:\/\/medium.com\/@kkbhardwaj20\/ios-17-unveiling-swiftui-scrollview-modifiers-b057fa1d6567","comments":"","title":"iOS 17: Unveiling SwiftUI ScrollView Modifiers | by Kamal Bhardwaj ","keywords":["SwiftUI"]},{"comments":"각자에게 추억의 게임, 레트로 게임기가 있으신가요? 예전 패키지 게임은 기계와 타이틀만 소장하고 있으면 지나도 다시 할 수 있는 반면에 온라인 게임 이후로는 계속하고 싶어도 못하는 게임들이 많아졌다는 푸념을 들어본 적 있습니다. 아이폰 앱 스토어 시장에서 게임 (또는 앱)은 어떤 생명력을 가지고 있을까요?","keywords":["Culture"],"title":"iOS as a Legitimate Gaming Platform | by Carl St. James ","location":"https:\/\/carlst-james.medium.com\/ios-as-a-legitimate-gaming-platform-45ed036d8013"},{"location":"https:\/\/medium.com\/macoclock\/macos-sonoma-14-2-released-14-new-features-you-need-to-know-d68570122cda","keywords":["Culture","영어"],"title":"macOS Sonoma 14.2 Released — 14 New Features You NEED To Know! | by Nikhil Vemu ","comments":"소노마 14.2에 포함된 새로운 기능들을 소개합니다. 그나저나 드디어 맥에도 샤잠이 들어갔군요!"},{"keywords":["Culture"],"location":"https:\/\/medium.com\/macoclock\/watchos-10-2-released-4-new-features-to-try-out-ea9d79b5b52e","comments":"","title":"watchOS 10.2 Released! — 4 New Features to Try Out | by Nikhil Vemu "},{"location":"https:\/\/medium.com\/wantedjobs\/%25EA%25B8%25B0%25ED%259A%258D-%25EB%25B3%2580%25EA%25B2%25BD%25EC%259D%2580-%25EB%25AC%25B4%25EC%25A1%25B0%25EA%25B1%25B4-%25EC%259A%25A9%25EC%259D%25B8%25EB%2590%2598%25EC%2596%25B4%25EC%2595%25BC-%25ED%2595%2598%25EB%2582%2598-feadf449190e","comments":"iOS 나 Swift 개발 이야기는 아니지만 앱 개발자들도 토론해볼 만한 주제 같습니다. 짧은 개발 주기와 개발자의 생산성, 테스트 코드로 대변되는 코드 품질까지도 어느 하나만 강조할 수 없는 기준들이죠. 우리는 어떤 가치를 지켜야할까 질문을 던져봅니다","title":"잦은 기획의 변경은 무조건 용인되어야 하나? | by Seunghoon Lee ","keywords":["Culture","pick"]}],"sequence":93,"version":"1.0","releaseAt":723826800} -------------------------------------------------------------------------------- /newsletter.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Let'Swift Newsletter", 3 | "updatedAt": "2023-11-26T21:00:00Z", 4 | "categories": [ 5 | "APPLE", 6 | "Culture", 7 | "Hardware", 8 | "Swift", 9 | "Architecture", 10 | "UIKit", 11 | "SwiftUI", 12 | "AppKit", 13 | "Framework", 14 | "VisionOS", 15 | "ServerSide", 16 | "Accessibility", 17 | "DeveloperTools", 18 | "Testing", 19 | "OpenSources", 20 | "Design" 21 | ], 22 | "issues": [ 23 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-47.json", 24 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-48.json", 25 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-49.json", 26 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-50.json", 27 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-51.json", 28 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-52.json", 29 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-53.json", 30 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-54.json", 31 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-55.json", 32 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-56.json", 33 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-57.json", 34 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-58.json", 35 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-59.json", 36 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-60.json", 37 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-61.json", 38 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-62.json", 39 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-63.json", 40 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-64.json", 41 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-65.json", 42 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-66.json", 43 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-67.json", 44 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-68.json", 45 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-69.json", 46 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-70.json", 47 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-71.json", 48 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-72.json", 49 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-73.json", 50 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-74.json", 51 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-75.json", 52 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-76.json", 53 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-77.json", 54 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-78.json", 55 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-79.json", 56 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-80.json", 57 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-81.json", 58 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-82.json", 59 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-83.json", 60 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-84.json", 61 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-85.json", 62 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-86.json", 63 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-87.json", 64 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-88.json", 65 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-89.json", 66 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-90.json", 67 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-91.json", 68 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-92.json", 69 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-93.json", 70 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-94.json", 71 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-95.json", 72 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-96.json", 73 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-97.json", 74 | "https://raw.githubusercontent.com/letswiftconf/newsletter/master/json/news-98.json" 75 | ] 76 | } 77 | --------------------------------------------------------------------------------