three_god의 등록된 링크

 three_god로 등록된 네이버 블로그 포스트 수는 103건입니다.

애플티비 4K 5세대 4개월 실사용 후기 (+애플TV 기능 꿀팁) [내부링크]

IT / 전자 애플티비 4K 5세대 4개월 실사용 후기 (+애플TV 기능 꿀팁) Maru Kim 2018. 11. 22. 5:41 이웃추가 본문 기타 기능 처음엔 미러링에 대한 욕심이 컸어요 ㅋㅋ 폰화면을 티비로 보고싶다 라는 생각에 뒤적뒤적 거리다가 애플티비를 발견! 한국에서 쓰기엔 별로라는 많은 우려의 글들이 많았지만 구매 고민하시는 분들에게 도움이 될 수 있도록 4개월동안 써본 후기를 !! 지극히 주관적 !! 으로 작성해봅니다. 애플티비 활용하기 1. 미러링 저는 미러링이 주목적이었는데요. 사실 미러링 동글로도 미러링정도는 충분히 대체 가능하다구 하네요. 문제는 알면서도 갖고싶어서 샀다는거죠. 일단 미러링은 제가 소유중인 아이패드,아이폰,맥북 의 화면들이 티비로 나오게 할수 있습니다. 위 사진처럼 아이폰에선 밑에서 쓸어올려서 화면미러링 버튼누르시면 됩니다. 맥북에 오른쪽 위를 보시면 요렇게 생긴것들이 보일겁니다. 두번째 보이는 모니터같이 생긴걸 눌러서 미러링 할 수 있습니다.

엘지 지패드3 V755 FHD LTE 솔직 후기 / 가성비 태블릿 추천 [내부링크]

IT / 전자 엘지 지패드3 V755 FHD LTE 솔직 후기 / 가성비 태블릿 추천 Maru Kim 2018. 11. 23. 3:52 이웃추가 본문 기타 기능 태블릿을 구매하려 하시는 분들께 조금이라도 도움이되고자 이 글을 작성하려는데요. 엘지 지패드3 V755 장단점에 대해 주관적으로 작성된 글이니 참고만 해주세요. LG Gpad3 V755 솔직 후기 매력 포인트 1. 가격 가격이 착해요 2018.11.23일 기준 최저가가 31만원으로 나올정도로 착한 가격이에요. 2. 자체 케이스 자체케이스로 케이스 포함해도 디자인이 깔끔하고 무엇보다 거치대가 함께 있어 불필요한 부피를 줄이고 가벼운 느낌으로 휴대가 가능합니다. 정면샷을 찍으려는데 자꾸 얼굴이 비쳐서.. 살짝 측면에서 찍은 모습입니다. 자체 케이스의 거치대를 활용하여 침대위에 세워둔 옆모습입니다. 역시 태블릿은 침대위에서 써줘야 제맛이죠. 3. 화면크기 10.1인치의 광활한 화면크기입니다. 폰으로는 세등분해서 볼 수 있는 네이버

에어팟 후기 [3개월 실사용] / 에어팟 기능 [내부링크]

일상 에어팟 후기 [3개월 실사용] / 에어팟 기능 Maru Kim 2018. 11. 23. 22:28 이웃추가 본문 기타 기능 시간이 지나도 가격이 떨어지지 않고 있는 에어팟 3개월 실사용 후기와 구매를 결정하기 전 알아두면 좋을 정보들을 작성해보려 합니다. 1. 가격 2. 디자인 3. 연결방법 4. 주관적 총평 글은 이렇게 구성되어 있으니 필요한 부분을 찾아서 보세요. 1. 가 격 뭐든 가격이 중요하겠죠. 여기저기 돈나갈데 많으니 가성비를 안따져볼 수가 없는데요. 제가 전자제품 살때 주로 애용하는 다나와 사이트의 가격정보입니다. 최저가가 20만원이라... 이어폰의 가격치곤 많이 세죠. 시중에 많이 판매되는 짝퉁들도 있지만 그런 제품들은 위험하게 설계되어 있다는 기사를 본 것 같네요. 안전을 위해서라도 눈물을 머금고 애플 정품을..ㅠ 2. 디자인 3개월 사용 후기지만 박스를 버리지 않는 버릇이 있으므로 개봉기 흉내좀 내봤네요..ㅋㅋㅋ 먼지가 조금 붙어있어서 티나는건 비밀 콩나물 논

야식은 역시 치느님! BHC 신메뉴 치하오 배달시켜먹은 솔직후기 [내부링크]

일상 야식은 역시 치느님! BHC 신메뉴 치하오 배달시켜먹은 솔직후기 Maru Kim 2018. 11. 25. 2:32 이웃추가 본문 기타 기능 BHC 치하오 치킨이 나온지 한참되긴 했지만 저는 아직도 맵스터 홀릭이라 이제야 처음 먹어보네요 저희 동네인 군포시 대야동에선 배달음식중 맛있는게 많지않은데 요기 BHC 만큼은 꾸준히 먹고 있어요 딩동 현관 벨소리만 들어도 참 설레입니다 역시 치느님!!!!ㅋㅋㅋㅋ 치하오는 뼈가 있는걸로도, 순살로도 시킬 수 있고 골고루 한마리와 닭다리만 나오는 것 중 선택도 가능합니다 저는 닭다리 매니아이기때문에 다리로만 시켰어요 연말이라고 달력이 딸려있더군요 뜻밖의 선물에 기분업 달력이 올드하지 않고 깔끔하네요 집에 둘만 해요 ㅋㅋ 이건 오늘 주문한 치하오 캬 비쥬얼 빨리 먹고싶어서 사진 1초만에 찍음 ㄲㄲ BHC 치하오는 고추튀김, 땅콩 ,파 에 라유소스로 중국 사천풍의 맛이라고 해요 사실 그런건 잘 모르겠고 그냥 일반인이 느낀 평가는 약간 매콤한 케첩

아이폰SE 후기 [1년 6개월 실사용] (아직 현역이다!!) / 아이폰XS와 스펙비교!! [내부링크]

IT / 전자 아이폰SE 후기 [1년 6개월 실사용] (아직 현역이다!!) / 아이폰XS와 스펙비교!! Maru Kim 2018. 11. 26. 0:52 이웃추가 본문 기타 기능 작년 5월쯤 카톡 켜지는데 10초씩 걸리는 아이폰5에 질려버려 꼭 맘에드는 아이폰SE로 넘어온지 벌써 1년 6개월이네요 당시 할부원금 40만원의 저렴한 금액으로 구매하여 여태껏 질리지 않은 아이폰SE의 매력탐구와 실사용 경험을 바탕으로 최신폰과 스펙 비교분석에 대해 써볼까 합니다. - 목차 - 1. 디자인 2. 크기 3. 아이폰XS와의 스펙비교 4. 아이폰XS와의 가격비교 이쯤에서 또 나와주는 개봉기인척ㅋㅋ (이럴때 써먹는 박스) 사용감 잔뜩 묻은 이어폰케이스.. 매력포인트 1 디자인 요 흰색 로즈골드색의 묘한 조합의 마지막세대.. 화면이 커지면서 뒷면의 색조합이 단조로워졌죠 애플 공홈에서 퍼온사진.. 아이폰6s와 최신판인 Xs의 간략한 디자인을 보시면 뒷면 색이 단조로운걸 볼 수 있어요 우리의 아이폰SE는

퓨마 롱패딩 추천!! 작년에 산 화이트 롱패딩 2계절째 착용 후기 !! [내부링크]

일상 퓨마 롱패딩 추천!! 작년에 산 화이트 롱패딩 2계절째 착용 후기 !! Maru Kim 2018. 11. 28. 1:18 이웃추가 본문 기타 기능 작년 롱패딩 열풍할때 구매한 롱패딩인데 개인적으로 지금까지도 너무 만족스러워서 매력포인트를 몇가지를 주관적으로 서술해 보고자 합니다. 날이 추워져서 다시 주섬주섬 롱패딩을 꺼내봅니다 ㅋㅋ 다른 롱패딩도 2벌 있지만 저의 최애 아이템은 역시 이거죠 캬~ 그럼 본격적으로 매력포인트를 짚어 보죠! - 목차 - 1. 깔끔한 디자인 2. 보온성 3. 가격, 가성비 갑 4. 실제 착용샷 5. 단점 1. 매력포인트 1 깔끔한 디자인 보시다시피 지퍼 자국이 잘 안보이네요. 자세히 보면 이곳 저곳에 숨어있답니다. 기본 주머니가 이렇게 양쪽으로 숨어있고 가슴쪽 주머니가 또 이렇게 숨어있네요. 보기엔 매우 작아보이나 아무리 큰 핸드폰도 완벽하게 들어갈 사이즈에요 동생 핸드폰인 아이폰8+도 넉넉하게 들어가네요. 그리고 요기 요 히든주머니!! 속주머니가 있

넷플릭스 4개월 이용 솔직 후기 [내부링크]

일상 넷플릭스 4개월 이용 솔직 후기 Maru Kim 2018. 11. 30. 23:06 이웃추가 본문 기타 기능 지난 포스팅의 애플티비를 지르고 바로 시청하기 시작했으니 정확히는 7월 18일부터 이용했으니 4개월 좀 넘었네요. 4개월동안 체험하며 개인적으로 느낀점들을 공유해 볼까 합니다. - 목차 - 1.넷플릭스 가격 (왓챠 플레이와 넷플릭스 가격비교) 2.넷플릭스 장점 3.넷플릭스 단점 가 격 (이용비) 앞서 말씀드렸다시피 저는 애플티비를 활용해보기 위해 한달 무료이용만 해 볼 생각이었는데 해지에 손이 안가더군요.. 넷플릭스 홈페이지에서 퍼온 오늘자 캡쳐사진 입니다. 오늘이 11월 30일이니까 12월 30일까지 무료네요!! 사실상 스탠다드부터!! 가격은 9500원부터 14500원까지 세분류로 되어있네요. 그치만 베이직은 비추입니다 HD급 화질도 안나온다면 이용가치가 별로 없어보이네요. 저는 스탠다드를 이용합니다. 어짜피 저희집은 UHD TV가 없어서 프리미엄이 별로 필요가 없을

씨게이트 외장하드 2Tb / 백업플러스 6개월 사용후기 [내부링크]

IT / 전자 씨게이트 외장하드 2Tb / 백업플러스 6개월 사용후기 Maru Kim 2018. 12. 2. 1:10 이웃추가 본문 기타 기능 제가 쓰고있는 외장하드 에 대한 후기를 써볼까 합니다. 요즘 컴퓨터던 노트북이던 아무리 많은 용량을 지원하더라도 깔린게 많으면 느려지는 느낌이라 컴퓨터,노트북을 가볍게 사용하려구 외장하드를 구매했네요. 외장하드에 자료 다 넣어놓구 컴퓨터,노트북은 기본 파일들만 운영하니 아주 쾌적하게 돌아가더군요. 외장하드 사고싶은데 아예 정보가 없으신 분들을 위해 짧은 경험담이라도 풀어봅니다! 그럼 6개월된 저의 외장하드 씨게이트 백업플러스 2Tb 후기를 작성해보겠습니다. 아 용량은 2TB로 2000기가쯤 되요. 이건 따로 언급 안하겠습니다! - 목차 - 1. 디자인 2. AS & SRS 3. 전송속도 4. 맥,윈도우 동시지원 5. 가격 6. 단점 1. 디 자 인 저는 이 로즈골드색으로 구매를 했어요. 핸드폰과 깔맞춤 해봤네요. 뒷면은 깔끔하게 흰색으로 되있

2017 아이패드 9.7 5세대 후기(1년 사용) / 스펙 비교 분석 [내부링크]

IT / 전자 2017 아이패드 9.7 5세대 후기(1년 사용) / 스펙 비교 분석 Maru Kim 2018. 12. 9. 4:02 이웃추가 본문 기타 기능 오늘은 작년 11월에 구매한 2017 아이패드 9.7의 1년 사용 후기를 작성해 보려 합니다! 이제 12월이니 일년 쪼끔 넘었네요 ㅋㅋ - 목차 - 1. 디자인 2. 스펙 3. 5세대 vs 6세대 스펙 비교 4. 주관적 사용 후기 5. 5세대 vs 6세대 가격 비교 6. 5세대,6세대 추천 케이스 1. 디 자 인 2017 아이패드 9.7의 디자인은 현재 2018 아이패드 9.7과 거의 일치하다고 보시면 됩니다. 케이스도 서로 호환 되구요. 케이스를 낀 정면 사진입니다. 필름을 잘못껴서 여기저기 기포가.. 그렇지만 걍 다시하기 귀찮아서 쓰고 있네요. 9.7인치 라는 사이즈가 감이 안오시는 분들을 위해 A4용지와 비교를 해봤어요. 참고하시면 될 것 같네요. 카툭튀가 없는 모습이에요 아이패드 프로 라인이 아니라서 카메라 성능은 비교적

FMM 2019 플레이 후기(3주) [내부링크]

일상 FMM 2019 플레이 후기(3주) Maru Kim 2018. 12. 12. 22:32 이웃추가 본문 기타 기능 축구게임 좋아하시나요?? 요즘 한창 즐겨 하는 모바일 게임이 있는데 이게 유료 게임이다 보니 결제하기 전엔 체험을 못하는 것 같아 제가 총대 메고 결제 후 후기 를 써봅니다 ㅋㅋ 이 게임은 PC버전이 원조고 알만한 축구팬들 은 다 알 정도로 어마어마한 대작이라더군요. 며칠 안 했지만 18-19 시즌부터 24-25 시즌까지 달려보고 현재까지 제가 아는 한 다 써보려고 합니다! 아 저는 아이폰으로 이용해요. 게임은 안드로이드에도 있으나 이 글의 기준은 ios 입니다! - 목차 - 1. 가격 & 추가 결제 여부 2. 플레이 방식 3. 패치 4. 환생 5. 에디터 1. 가격 & 추가 결제 여부 FMM 2019가 있고 FMT 2019가 있는데 FMM은 모바일 버전이고 FMT는 태블릿 버전이라 하더라고요. 저도 FMT는 안 해봐서 잘 모르겠으나 궁금해서 알아본 바로는 FMM은

단후이 로봇청소기 NR 15 솔직 후기 (2년) [내부링크]

재작년 여름에 구매하여 2년 넘게 사용중인 단후이 로봇청소기 1세대에 대한 솔직 후기를 작성해보려 합니다. 어짜피 단종된 제품인데 굳이 포스팅 하는 이유는 현재 판매중인 2세대나 3세대를 구매하시는데 참고라도 되었으면 해서 작성합니다!! 1세대와 같은 디자인으로 살짝 업그레이드한게 2세대이므로 2세대 구매 고민하시는 분들도 참고하시면 좋을 것 같습니다. - 목차 - 1. 디자인 2. 실제 사용 후기 3. 1세대 vs 2세대 vs 3세대 4. 가격 5. 총평 1. 디 자 인 제가 가진 1세대의 디자인은 2세대와 일치하네요. 제껀 화이트 색상이에요. 디자인은 전체적으로 깔끔하고 저는 만족!! 기어다니는게 귀염터짐ㅋㅋ 2. 실제 사용 후기 저희 엄마는 주로 거실에 놓고 전선이나 양말을 다 치워놓은 후 다 돌리게 해요. 거실은 엄마가 자주 돌려놔서 패쓰!! 저는 주로 제 방에다가 가둬놓구 한 30분정도 그냥 방치해놔요 ㅋㅋㅋ 거실에서 티비보거나 동생방에서 컴퓨터하거나 30분 후에 들어가면

용산 CGV IMAX관에서 아쿠아맨!! 후기(노스포) [내부링크]

생애 첫 IMAX 관람의 후기를 살짝 써볼까 합니다. -목차- 1. 용산아이파크몰 CGV 방문기 2. IMAX관 체험기 3. 아쿠아맨 후기(노스포) 1. 용산 아이파크몰 CGV 방문기 용산아이파크몰 CGV는 제가 자주 방문하던 곳인데요. 4DX만 봐서 IMAX는 처음이네요. 우선 용산 CGV에 들어서면 영화관이 굉장히 큽니다 ㅋㅋ 크리스마스 이브라 사람들이 너무많아서 사진 상태가 별로네요.. 그냥 대략적인 느낌만 보시면 될 것 같습니다. 입구에는 오늘 만날 아쿠아맨이 서있네요ㅋㅋ 용산 아이파크몰 CGV는 제가 가본 영화관중에 가장 크네요. 큰 영화관 좋아하시는 분들께 강력 추천!! 2. IMAX 체험기 일단 가격은 1인에 2만원정도입니다. 그리고 그것도 공휴일,좌석마다 달라서 잘 보셔야 할것 같아요.. 4dx의 가격과 비슷하네요. 일반 티켓의 두배지만 그 가치는 영화에 따라 달라지는 것 같아요. 오늘 본 아쿠아맨은 IMAX로 봤을때 재미가 두세배로 느껴질 영화였습니다. 첫 IMAX를

카카오프렌즈 입체형 보조배터리 개봉기!! [내부링크]

크리스마스 이브를 맞아 카카오프렌즈샵 강남점에 방문하여 귀요미들 쇼핑좀 했어요. 카카오 최고의 인기스타 라이언으로!! 6000mAh짜리 보조배터리를 선물받았어요!! LED 4칸 / usb / 5핀 으로 구성되있네요. 5핀잭을 꼽고 충전중인 모습입니다. 오른쪽 케이블은 사진상 매우 커 보이지만 5핀케이블이 확실합니다!!ㅋㅋ 이제품의 매력은 바로 요놈인데요.. 저는 전자담배(5핀) 충전하랴 아이폰(라이트닝) 충전하랴 여친폰(씨타입) 충전하랴 3개의 잭이 항상 필요했는데 저에게 완전 안성맞춤이네요. 이제품은 사실 가격이 좀 세요. 42000원짜리에 6000mAh의 용량이라 보조배터리로서의 가성비는 똥망이죠. 그렇지만 보고만 있어도 웃음지어 지는게 매력이네요. 저도 가성비가 중요한 사람이라 여태 처음 접한 카카오 프렌즈 제품인데 전자제품(?) 그 이상의 가치라고 생각되니 가격 전혀 비싸지 않네요. 추천합니다!!

카카오 프렌즈 여권케이스 착용후기!! [내부링크]

며칠전 카카오 프렌즈샵 강남점에 다녀왔는데요. 거기서 보조배터리만 산게아니구 요 여권케이스도 하나 구매했어요! 저는 이번에도 라이언을..ㅋㅋ 색상은 두번째 사진이 더 실물에 가깝네요. 첫번째 사진은 빛이 이상하게 비친건지 사진이 색상이 좀 누렇군요. 안에는 케릭터 없이 깔끔하고 카카오 프렌즈 적혀있네요~ 여권 장착!! 이거들고 여행다니면 신나겠죠?ㅋㅋ 투명 케이스도 있었으나 이게 맘에 들어서 이걸루 했네요. 가격은 16000원 입니다. 카카오 프렌즈 제품은 가격이 상당한 느낌이지만 기분좋게 여행다닐 수 있어서 아깝지 않은 느낌이네요.

카카오프렌즈 우산 사용후기!! [내부링크]

이 우산은 프렌즈샵에서 구매한건 아니지만 프렌즈샵 쇼핑기 쓰다보니 생각나서 이제 쓰네요~ 이번엔 라이언이아닌 어피치 입니다! 밝은색을 그닥 선호하진 않지만 역시 우산은 색이 밝아야 더 안전하겠죠. 책상 옆에다 펼쳐봤습니다. 어피치 하나만 그려져있는 깔끔한 디자인이에요. 여기저기 케릭터 붙어있는걸 선호하시는 분들에겐 인기가 없을 것 같네요. 저는 만족!! 반대로 돌려보니 그냥 우산이네요 ㅋㅋ 안에는 카카오프렌즈를 상징하는 노란색 탭이 붙어있어요. 안쪽 모습도 무난무난한 모습이네요. 깔끔하지만 어피치 케릭터로 살짝 포인트를 준 우산이에요. 접으면 사이즈도 스몰해서 휴대하기 간편하여 애정하는 우산입니다~~ 추천!!

태블릿 히키스 자바라 거치대 후기!! [내부링크]

아이패드 사용하시는 분들 거치대는 필수겠죠?? 저도 거치대 몇개 사용하는데 한개는 케이스에 달린 자체 거치대 한개는 이거처럼 매달아 놓는 자바라 거치대를 써요. 생각보다 매우 유용하거든요 ㅋㅋ 저는 책장에다 꼽아놓고 이런식으로 사용해요. 이런식으로 위에서 잡아주고 양손으로 조절하여 각을 잡아주면 되요. 윗부분을 먼저 고정 시키고 바로 태블릿을 장착하고 그리고 각도를 잡는걸 추천드립니다. 안그러면 원래 잡아놨을때 보다 태블릿을 장착하면 태블릿 무게때문에 살짝 밑으로 고정되거든요. 이 히키스 제품의 저 고정부분은 매우 강력해서 풀어질 걱정은 안해도 되요. 적어도 제껀 매우 강하게 결합 되어있네요. 다른 자바라 거치대와 별반 다를건 없지만 제가 사용해본 결과 이건 튼튼하긴 해요! 위에다가 결합을 해도 쉽게 풀어지는거 같은건 없네요. 저 얇은 하얀 부분들을 양손으로 구부리면서 각도 잡으시면 되요!! 제 역할은 충분히 해주니 기능이 같다면 비싼거 굳이 안찾아도 될 것 같습니다!!

봉지라면 버전 왕뚜껑 어떤맛일까?? [내부링크]

컵라면으로 즐겨먹던 왕뚜껑이 봉지로 나와서 한번 먹어봤어요. 제가 뭐 미식가 같은건 아니라서 그냥 지극히 일반인의 한사람으로서 먹어본 후기 입니다. 컵라면 왕뚜껑은 정말 완소라면이죠. 봉지라면은 어떨까 궁금합니다. 일단 겉면은 요렇게 생겼네요. 후레이크와 분말스프로 이루어져 있어요. 후면에는 물을 550ml 넣으라고 써져 있지만 저는 450ml를 넣었네요. 라면은 짭쪼름해야 맛있으니까요 ㅋㅋ 짠 완성!! 컵라면 왕뚜껑이라곤 하지만 비쥬얼적으러 봤을때 그냥 라면의 모습이에요. 컵라면과 같은게 있다면 후레이크정도?? 후레이크는 유사한것 같네요. 맛은 딱히 맵지 않았고 진라면 순한맛과 유사하다는 느낌을 받았어요. 컵라면 왕뚜껑의 맛은 아닙니다 ㅋㅋ 밥까지 말아서 먹었어요. 매우 맛있게 먹었으나 다른 라면에 비해 특색이 있다거나 하는 느낌은 없었던것 같네요. 그래도 맛있게 잘 먹었어요!

고성 델피노 리조트 D동 객실 방문후기!!! [내부링크]

1.1~1.3 까지 고성 델피노 리조트에서 휴양을 즐기다 왔는데요. 워낙 리조트가 커서 다른 곳 가지 않고 푹 쉬다 오기 참 좋은 것 같네요. 다른 정보들은 따로 다루기로 하고 우선 객실에 대한 정보들을 작성해보려 합니다. 가격은 성/비수기 마다 다르고 주말여부에 따라 다르지만 저희는 비수기로 2박에 30만원 정도였네요. 체크인/아웃도 성/비수기에 따라 다르지만 저희는 비수기이므로 15시 체크인 12시 체크아웃이었어요. 델피노 리조트는 이런식으로 구성되어 있고 제가 머물던 객실은 D동 807호 였습니다. 807호에서 베란다에서 찍은 울산바위의 모습입니다. 저희는 1박에 22000원씩 추가해서 설악산 뷰로 골랐어요. 사실 밤에는 보이지도 않지만 기분내는 비용으로 쓰였네요 ㅋㅋㅋ 아 그리고 807호는 울산바위가 살짝 측면에서 보입니다. 완전 정면으로 보이지 않아요. 그래도 따로 나가지 않고 객실에서 울산바위가 한눈에 보인다는 것은 매우 만족스러웠네요. 방은 총 두개고 방마다 화장실이 있

서울양양고속도로 가평 휴게소(양양방향) 방문기!! [내부링크]

며칠전에 고성에 다녀오면서 가평휴게소에 들렀는데요 먹거리는 뭐가 있고 규모는 얼마나 되는지 궁금하실 분들을 위해 포스팅을 작성합니다!! 가평휴게소는 이렇게 생겼어요! 놀라운건 1월1일 인데 양양방면이 이렇게나 많은 차로 가득 차 있었다는 거예요. 진짜 사람이 많았어요.. 그이유를 한번 볼까요?! 먼저 휴게소에서 가장 중요한건 먹거리겠죠?? 그중에서도 식사가 중요한데 여기 메뉴는 정말 어마어마합니다!! 딱봐도 메뉴가 정말 다양하죠?? 진짜 먹고싶었는데 홍천 휴게소도 방문할 예정이어서 꾹 참았습니다. 나중에 안거지만 홍천보다 여기 메뉴가 훨씬 다양하고 많더군요... 가평에서 드세요!!! 요거 요게!! 가평휴게소에서 가장 맛있다는 소문을 듣고 저도 한번 방문 해봤네요. 저는 5000원짜리 구매했는데 8개 들어있었어요! 바삭함을 유지하려면 봉지를 열어둬야 한다죠?? 전참시에서 이영자씨가 호두과자 드시면서 했던말을 떠올려 추워도 봉지 열어놓고 들구왔네요.. 크기는 요만해요 칙촉이랑 사이즈는

델피노 리조트 비엔토에서 만원의 행복!! [내부링크]

델피노 리조트내에도 다양한 식당들이 있는데요. 그중에서 제가 방문한 비엔토에 대한 솔직 후기를 작성해볼까 합니다. 비엔토에서 런치타임 만원의 행복이길래 또 놓칠수 없어서 방문했네요 ㅋㅋ 비엔토는 A동에 있어요. 이건 A동에서 바라본 풍경이에요. 정문으로 들어와서 바로 오른쪽으로 고개를 돌리면 이렇게 비엔토가 보여요!! 창밖의 풍경도 매우 좋았으나 햇빛이 강하게 들어와서 사진이 이렇게밖에 안나왔네요. 깔끔하고 모던한 분위기의 식당이었습니다. 6900원짜리 칠리버거 입니다. 막 맛있지도 맛없지도 않은 무난한 맛이었네요. 개인적으로 속은 맛있었으나 빵이 별로였다는 느낌을 받았어요. 그래도 뭐 이정도 리조트에서 이가격은 착하긴 합니다!! 창밖 풍경은 덤!! 이건 같은 가격의 치즈버거예요. 전 갠적으로 치즈가 좀 나았던 것 같네요. 버거마다 콜라 한잔이 딸려 나오는건 매우 마음에 들었네요!! 9900원짜리 로제 파스타 입니다. 비쥬얼만 봐도 훌륭하죠?? 이건 진짜 맛있게 먹었네요!! 로제를

[공유] 감성 RGB 측면 LED 기계식키보드 [내부링크]

펌 [공유] 감성 RGB 측면 LED 기계식키보드 Maru Kim 2019. 1. 7. 0:47 이웃추가 본문 기타 기능 출처by 대한민국표준쇼핑몰 | 네이버 쇼핑 플레이윈도 감성 RGB 측면 LED 기계식키보드 대한민국표준쇼핑몰 shopping.naver.com 스크랩된 글은 재스크랩이 불가능합니다.

범계 CGV 에서 영화 그린북 후기!!(영화내용 스포X) [내부링크]

범계 CGV에서 영화 그린북을 감상하구와서 범계 CGV 후기와 영화 그린북 후기를 남겨보려 합니다. - 목차 - 1. 범계 CGV 후기 2. 영화 그린북 후기 1. 범계 CGV 후기 범계에는 CGV와 롯데시네마가 있는데요. 범계 CGV는 옆에 있는 롯데시네마에 비해 규모가 작아서 극장 자체도 좀 작아요. 큰 극장을 선호하는 여친님 때문에 범계CGV는 안가다가 이번에 리뉴얼하고 리클라이너 좌석덕분에 여친님의 마음을 사로잡아서 가보게 되었어요. 저는 티멤버쉽 VIP가 있어서 표는 한장씩 따로 예매했어요. VIP가 연 6회 무료라서 꼭 써줘야 하거든요 ㅋㅋ 규모가 협소하긴 하지만 이 전좌석 리클라이너 보이시나요?? 리클라이너 좌석을 간단히 설명하자면 버튼으로 등받이랑 발받이가 조정이 되어서 거의 눕듯이 영화 관람이 가능하게 됩니다. 그치만 이 리클라이너가 1관과 2관밖에 없으니 꼭 잘 보고 가셔야해요!! 제 예매표를 보면 2관[리클라이너] 라고 써있네요!! 이렇게 허벅지 오른쪽에 보시면

성신여대 명랑 핫도그 !!!모짜 체다 핫도그!! [내부링크]

성신여대 명랑핫도그에 갔어요! 1번출구 근처에 있어서 쉽게 찾을 수 있어요. 지하철 타러 갈때마다 보여서 갈때마다 먹고싶어짐 주의!! 명랑 핫도그는 체인이라 여기저기 있지만 지점마다 조금씩 맛이 달라서 성신점 맛을 기록해놓을려구요ㅋㅋ 개인적인 후기니 다른분들껜 크게 도움이 안될 수 있습니다 ㅋㅋ 저는 기본핫도그를 좋아하지만 여기만오면 꼭 다른걸 먹게 되더라구요. 이번엔 모짜체다 핫도그!! 토핑 고구마 추가!!(+800원) 토핑 감자 추가는 +500원인데 300원 더 비싸더군요. 뚱캔 음료도 판매중이네요. 여기선 마실거리도 판매해요. 테이크아웃이라 좀 저렴하네요. 버블티도 있었던 것 같은데 찍지 못했군요. 시즈닝도 다양하고 소스도 다양해서 맛이 없을 수 없겠죠?ㅋㅋ 비쥬얼 죽여주죠? 모짜 체다 핫도그에 치즈 시즈닝에 치즈 소스까지 칠하니 아주 치즈맛이 풍부하고 꿀맛탱 jmt!!!! 개인적으론 +500원 이던 감자 토핑이 더 맛있었던 것 같네요. - 모짜체다+고구마토핑 총평 - 5개중

치킨플러스 군포 대야미점 반반치킨 솔직후기!!! [내부링크]

늘 BHC치킨만 주문하다가 오늘 처음 치킨플러스 대야미점에서 치킨을 주문해봤어요. 모든 치킨이 12900~13900원의 가격을 형성하고 있어 가격도 저렴하고 기름도 깨끗한걸 쓴다그러고 배민후기들도 괜찮아서 주문해봤네요. 가격표 입니다. 빛반사되서 보이지 않는 부분은 눈맞은 치킨 13900원 마늘 스태미나 치킨 13900원 입니다. 치킨 자체가 저렴하니 큰콜라를 추가 주문해도 가격이 저렴해요. 저는 후라이드반 핫초킹반 반반치킨에 큰콜라를 추가주문하고 배달팁이 붙어서 17000원 정도 나왔네요. 이렇게 작은 박스에 깔끔하게 포장되어 있어요. 양념소스도 들어있네요. 양념소스는 후라이드 시키면 주는 것 같아요. 저는 핫쵸킹반 후라이드반이라 소스 하나가 들어있었네요!! 반씩 깔끔하게 포장된 모습 맛은 과연 어떨까.. 두근두근 먼저 이 핫쵸킹부터 맛봤습니다! 전 개인적으로 이 핫쵸킹이 정말 맛있었네요. 매운걸 잘 못먹는 저도 오 매콤하네 이렇게 먹을 수 있을 정도의 맵기였어요. 맛도 정말 최고

비발디파크 달인 렌탈샵 방문 솔직 후기!! [내부링크]

3년만의 스키장 방문으로 의류와 데크, 리프트권이 모두 필요해서 비발디파크 인근 렌탈샵인 달인 렌탈샵을 찾아갔어요. 달인렌탈샵 강원도 홍천군 서면 한치골길 1027 우선 위치입니다. 사전에 여기저기 알아보고 찾아간거여서 기대 만빵! 사전에 달인 렌탈샵 홈페이지에서 알아본 가격표 입니다. 저희는 리프트,의류,장비 패키지로 뉴오후권을 사용하여 69000원의 저렴한 가격으로 이용을 했어요. 외관은 깔끔하게 잘되어 있어요. 강습이 유명하다는데 그건 안해봐서 잘 모르겠네요. 출입구 왼쪽에는 이렇게 보드와 스키가 쭉 진열되어 있어요! 저희는 5인에서 방문했는데 5인 다 보드를 대여했어요. 렌탈샵 내부의 의류 진열장이에요. 마음에 드는 옷을 직접 골라서 입어보고 고를 수 있어요. 의류 퀄리티는 꽤 높은 것들도 있고 별로인것도 있네요. 어짜피 직접 고르는 거라서 잘뽑으면 매우 만족스러울 겁니다. 개인적으로 의류대여부분은 만족 스러웠어요. 친구들도 꽤 만족한 눈치더군요. 색도 다양하고 사이즈도 다양

이수/사당역 수제버거 맛집 미스핏츠 방문 후기!! [내부링크]

수제버거가 요즘 너무땡겨서 자주 방문하는 동선인 이수/사당역 주변의 수제버거 맛집을 찾아봤어요. 그러다 요기 미스핏츠를 발견!! 먼저 위치 투척합니다!! MISFITS 서울특별시 동작구 동작대로17길 5 태성카쎈타 사당역과 이수역 사이지만 이수역에 조금 더 가깝네요! 가게 외관의 모습 한 6~7테이블 정도 받을 수 있는 규모였습니다. 주력 음식들이 칠판 같은 곳에 써져있네요 !! 가게 이용설명서가 있네요. 재료의 신선도를 위해 적당량만 비치해놓는다는 문구가 매우 마음에 들었습니다. 버거 메뉴 입니다! 저희는 볼케이노와 화이트 크림 베리를 선택했어요!! 햄버거 먹는데 감자튀김이 빠지면 섭하죠! 이런 스낵들도 낱개로 주문이 가능합니다. 물론 감자튀김 같은 경우는 주로 위의 버거 메뉴에서 세트메뉴를 이용하면 좀 더 저렴하게 드실 수 있어요! 방문 후기들로 빼곡히 써져있는 벽면이 보이네요!! 메뉴들의 이해를 돕기위해 주방 위에 각 메뉴들의 사진이 걸려있어요. 주문 즉시 조리된다고 하여 15

인도음식 첫 도전!! 사당 인도요리 전문점 깔리 방문 솔직 후기!! [내부링크]

외국음식이 그닥 입맛에 맞지 않는것 같아 그동안 인도요리를 피해왔는데 그래도 한번쯤은 먹어보고싶어서 한번 도전해 봤네요! 제가 방문한 곳은 사당역 인근의 깔리 라는 인도요리점인데요. 깔리 서울특별시 서초구 방배천로 21 우선 위치는 11번출구에서 매우 가까워요. 주말에는 공영주차장이 무료라서 11번출구 바로 근처의 공영주차장을 이용했네요. 가시면 3층에 인도요리 깔리라고 아주 잘 보입니다! 처음느낌의 긴장되는 마음으로 입장!! 인도분 사장님께서 맞아주시네요. 분위기도 인도인도 합니다!! 인테리어도 인도인도 하구 현지 느낌을 내시려고 신경 많이쓴게 눈에 보입니다. 8시 반쯤 방문하긴 했는데 손님이 조금 계셔서 이 사진은 먹고 나오면서 찍은 사진이에요. 규모가 큰 식당은 아니지만 자리 자체는 넓직넓직 합니다. 사장님들께서 저희 자리를 정리해주고 계신 모습!! 라씨와 각종 주류들도 준비되어있고 물티슈도 있네요. 메뉴판을 통째로 찍어봤어요. 역대 최다 메뉴였던것 같네요. 메뉴가 정말 다양해

아이폰X 중고 구매 후기 / 아이폰X 지금 사도 괜찮나?(날짜확인) [내부링크]

글 읽기 전에 현재 시점에서의 후기란점 (2019년 8월 1일) 을 참고해주세요!! 아이폰X은 한국기준으로 2017년 11월 24일 출시로 1년 9개월이 지났는데요. 후속작인 아이폰Xs 조차도 출시한지 11개월이 지나갑니다. (2018년 9월 12일) IT기술들의 발전이 매우 빠르게 변화하는 요즘시대에 이 핸드폰을 지금 사도 될까 하시는분들이 많을 것 같아요. 저도 같은 생각을 했었고 그 결과 결국 구매하게 되었네요. 그래서 제가 알아보면서 얻은 간략한 정보들과 중고구매 후기를 작성함으로써 같은 생각을 하시는 분들께 참고라도 되고자 몇글자 적어봅니다. -목차- 1. 아이폰X 중고구매시 유의사항 2. 아이폰X(256g) 가격 3. 아이폰X vs 아이폰Xs 스펙 비교 4. 아이폰X vs 아이폰Xs 가격 비교 1. 아이폰X 중고구매시 유의사항 유의사항을 적기전에 중고구매를 한 이유를 설명하자면 당연히 가격때문이지요. 물론 기기값때문인 부분도 있지만 매월 나가는 통신비를 완전히 줄일 수 있

[랑그릿사 모바일] 레온 (전직/스킬/장비/용병) 초보자 육성정보 + 랑그릿사 등급표 [내부링크]

이번엔 모바일게임인 랑그릿사 중에서도 최고 인기캐릭터인 레온에 대한 초보자용 육성정보에 대해 적어볼까 합니다. -목차- 1. 레온 전직 2. 레온 스킬 3. 레온 장비 4. 레온 용병 5. 랑그릿사 등급표 글쓰기에 앞서 제 덱들의 현황입니다. 그닥 훌륭한 상태는 아니지만 제가 속한 8섭에선 꽤 준수한 편이에요. 1. 레온 전직 레온은 보통 왼쪽테크와 중앙테크를 다 뚫어주는 편입니다. 저는 가운데서 35렙 전직스킬 초절강화를 먹어주고 왼쪽테크를 탔으나 초절강화를 써줄 베른하르트나 알테가 있다면 그냥 왼쪽먼저 쭉 뚫어도 무방할 것 같습니다. 룬스톤을 한번 먹이면 그담부턴 자유롭게 전직이 가능합니다. 물론 약간의 돈이 소모되긴 합니다. 2. 레온 스킬 레온의 오른쪽 소드맨을 제외한다면 여기있는 스킬이 전부에요. 45렙 전에는 군단정비, 제국의돌격, 엑티브 공격 스킬 (돌격 or 맹렬한돌격) 이렇게 3개를 듭니다. 맹렬한 돌격은 딜은 조금 떨어지나 확정 방깍이 있어서 활용도가 꽤 높고 돌격

[랑그릿사 모바일] 알테뮬러 (전직/스킬/장비/용병) 초보자 육성팁 [내부링크]

저번 글에서는 레온에 대해서 썼는데 이번에는 알테뮬러에 대해서 써볼까 합니다. 전략, 제국덱에서 비병과 창병으로 다양한 포지션에서 쓰이는 알테뮬러를 어떻게 육성하는게 좋을지 다뤄보겠습니다. - 목차 - 1. 알테뮬러 전직 2. 알테뮬러 스킬 3. 알테뮬러 장비 4. 알테뮬러 용병 먼저 저의 알테뮬러입니다. 앞서 다룬 레온보단 뒷전인 모습입니다. 사실 레온이 알테와 함께있을때 더 날아다니기때문에 키우는 영향이 가장 큽니다. 1. 알테뮬러 전직 알테뮬러는 창병으로 써서 탱도 가능하고 비병으로 써서 딜탱도 가능합니다. 사실 알테뮬러는 투자가 많이 필요한 캐릭이에요. 레온처럼 조금만 손봐도 확 티나게 강해지는 스타일은 아니기때문에 키우시다 보면 얘는 딜도 안되고 탱도안되네 라는 느낌이 들 때도 있습니다. 제 알테도 아직은 딜도 안되고 탱도 안되는 느낌이지만 꾸준히 키워주니 아주 살짝 극복이 된듯 싶어요. 비병으로 쓰실때는 가운데 테크 타주시고 창병은 왼쪽 테크입니다. 35렙때 배우는 초절강

[랑그릿사 모바일] 리아나 (전직/스킬/장비/용병/고유스킬) 초보자 육성 팁 [내부링크]

레온과 알테뮬러에 이은 세번째 글이네요. 레온,알테뮬러와 더불어 저의 거의 모든 출전을 함께하는 리아나에 대한 초보자 육성 방향에 대해 써볼까 합니다. - 목 차 - 1. 리아나 전직 2. 리아나 스킬 3. 리아나 장비 4. 리아나 용병 5. 리아나 고유스킬 글 들어가기에 앞서 저의 리아나 스펙입니다. 알테나 레온같은 딜러들에 비해 투자가 덜 되어있네요. 적당한 힐량을 위한 지력과 끔살 방지를 위한 방어력을 조금씩만 투자해 주면 되고 딜러,탱커 다 키우고 여유가 되시면 그때 슬슬 더 강화해주시면 됩니다. 1. 리아나 전직 리아나는 가운데 테크 프로핏으로 가시면 됩니다. 애정캐라면 룬스톤 쓰실수도 있겠지만 다른 캐릭들에 비해 효율이 낮습니다. 룬스톤은 다른친구들에게 주세요!! 2. 리아나 스킬 다른 캐릭터들은 상황에 따라 스킬을 다르게 가져가기도 하지만 리아나는 힐,어게인,홀리힐이 거의 고정입니다. 가장 기본적인 힐입니다. 꽤 많은 힐량과 디버프 제거 1개까지 반드시 들어야할 스킬입니

[랑그릿사 모바일] 보젤 (고유 스킬/전직/스킬/장비/용병) 초보자 육성팁 [내부링크]

이번에는 레온, 알테, 리아나 공략에 이어 저의 유일한 법사이고 암흑덱에서 유일하게 초절기를 보유중인 보젤에 대해서 초보자 육성팁을 작성해보고자 합니다. - 목차 - 1. 보젤 고유스킬 2. 보젤 전직 3. 보젤 스킬 4. 보젤 장비 5. 보젤 용병 제 보젤 현황입니다. 전력은 레온,알테와 비슷하지만 레온 알테 같은 폭딜은 안나오는듯한 느낌입니다. 1. 보젤 고유스킬 보젤이 마방템만 가는 이유입니다. 또 피해 입힐때마다 확률적으로 디버프를 부여하는데 이게 성급에 따라 확률이 변합니다. 마방 수치와, 디버프 갯수는 성급이 올라도 변함 없네요. 3성 - 50% 4성 - 60% 5성 - 80% 6성 - 100% 제껀 4성이라 60%입니다. 2. 보젤 전직 보젤은 가운데 테크가 메인 테크고 2스톤으로 왼쪽까지 뚫어 줘야 완성입니다. 왼쪽은 마물속성이고 가운데는 마법사 속성이라 양쪽 다 마스터 하더라도 속성상 카운터가 없는 마법사 속성을 씁니다. 왼쪽에선 어떤스킬을 배우고 가운데에선 어떤 스

[UIKit] 프로토콜 UISearchBarDelegate [내부링크]

1. 타 입 UIKit 프레임워크 환경에선 유저들의 입력값을 전달하기 위해서 Delegate 을 주로 사용하는데요. 오늘은 검색창에 유저들의 입력값을 전달하기 위한 프로토콜 UISearchBarDelegate를 사용해보았습니다. 공식문서 보시면 얘의 타입은 프로토콜입니다. 애플 공식문서: https://developer.apple.com/documentation/uikit/uisearchbardelegate/ UISearchBarDelegate | Apple Developer Documentation A collection of optional methods that you implement to make a search bar control functional. developer.apple.com 이렇게 생겼죠. 그럼 적용시킬땐 어떻게 할까요? 아래와 같이 import UIkit class MainVC: UIViewController, UISearchBarDelegate 여러분의

[UIKit] 키보드 내리기(특정 View 제외하기) [내부링크]

써치바를 클릭했을때 키보드가 올라오는건 다들 잘 알고 계실겁니다. 저는 써치바 이외의 화면을 터치했을때 키보드가 내려가는 메소드를 구현하려고 합니다. 이 작업을 위해선 탭을 감지할 UITabGestureRecognizer, 탭을 했을때 키보드를 치워줄 endEditing, 특정부분의 터치를 무시해줄 메소드 gestureRecognizer 에 대해서 알아야합니다. 그럼 이놈들을 차근차근 알아봅시다. UITabGestureRecognizer 에 대해서 먼저 볼게요 애플 공식문서: https://developer.apple.com/documentation/uikit/uitapgesturerecognizer/ UITapGestureRecognizer | Apple Developer Documentation A discrete gesture recognizer that interprets single or multiple taps. developer.apple.com @MainActor cl

LongPressGesture - SwiftUI [내부링크]

#LongPressGesture #SwiftUI #DispatchQueue 오늘은 LongPressGesture 에 대해서 알아볼건데요 아이폰 쓰시는 분들 배경화면에서 앱아이콘 쭉 탭해보면 좀 뭉특한 진동 나오면서 앱 이동이나 삭제 이런게 가능해 지는데 이런 것들이 LongPressGesture입니다. 그냥 말 그대로 길게 누를때 의 제스처이지요. 2가지 예제를 만들어 보면서 개념 챙겨보려고 하는데요. 하나는 유튜브에서 나온 예제 하나는 공식문서에 나온 예제 이렇게 두가지를 살펴보면서 개념 챙겨볼게요. LongPressGesture 실습 1 우선 유튜브의 프로젝트부터 보겠습니다. 영상 출처는 글 제일 하단에 남겨놓을게요. SwiftUI 에 대한 많은 실습들이 있어서 추천할만한 유튜브입니다. 역시 영어 듣기가 문제긴 합니다만 잘하시는 분들에겐 별 문제 안되겠네요. 말로하는것 보단 영상이 깔끔하죠. 누르면 게이지가 차고 손떼면 다시 돌아가고 꽉차면 초록불로 바뀌고 리셋누르면 다시 초기화

MagnificationGesture - SwiftUI [내부링크]

SwiftUI 프레임워크의 제스처중 하나인 MagnificationGesture에 대해서 알아보겠습니다. 우리가 흔히 쓰는 두 손가락으로 확대하는 그 제스처를 구현하는 방법입니다. 애플의 예제를 보면서 내용들을 살펴보려고 합니다. https://developer.apple.com/documentation/swiftui/magnificationgesture Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Discover iOS iPadOS macOS tvOS watchOS Safari and Web Games Business Education WWDC Design Human Interface Guidelines Resources Videos Apple Design Awards Fonts Accessibility Localization Accessories Develop Xcod

DragGesture - SwiftUI [내부링크]

이번엔 DragGesture를 살펴보겠습니다. 애플의 공식문서를 보면서 정의와 예제들을 살펴보겠습니다. https://developer.apple.com/documentation/swiftui/draggesture Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Discover iOS iPadOS macOS tvOS watchOS Safari and Web Games Business Education WWDC Design Human Interface Guidelines Resources Videos Apple Design Awards Fonts Accessibility Localization Accessories Develop Xcode Swift Swift Playgrounds Tes... developer.apple.com 공식예제가 그닥 와닿지 않아서 살짝 변경했습니다.

RotationGesture - SwiftUI [내부링크]

오늘은 SwiftUI의 제스처중 RotationGesture를 살펴보려합니다. 우선 공식문서의 정의를 보자면, 회전 모션과 흔적의 각도를 인식 하는 제스처라고 되어있습니다. 그렇다면 밸류값이 Angle로 나올 것같네요. 그럼 엑스코드의 정의로 다시 들어가 볼까요? 기본값으로 1도를 가지고있고 밸류값으로 역시 Angle을 갖네요. 그러면 @State변수 설정 할때 Angle값을 사용해야겠구나 생각할 수 있겠습니다. 그럼 일단 여기까지만 정의를 읽어보고 예제를 살펴보겠습니다. 별 특별할거 없고 그냥 돌리기만하면 끝이네요 간단하쥬? 계속 밀던 3단계 방법으로 만들어 보겠습니다. 1. @State 변수 설정 2. 제스처 설정 3. 적용 1. @State 변수 설정 Angle의 변화를 담아내야하니 Angle 타입으로 만들어 줘야겠죠? @State var angle = Angle(degrees: 0.0) 초기값 0으로 넣어줍니다. 2. 제스처 설정 이번건 정말 간단합니다. 그냥 angle이 바

ScrollViewReader - SwiftUI [내부링크]

SwiftUI 프레임워크의 ScrollViewReader 에 대해서 알아볼건데요. 더불어 @Namespace 와 rgb를 사용한 커스텀컬러도 함께 알아보겠습니다. 출처: https://developer.apple.com/documentation/swiftui/scrollviewreader Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Discover iOS iPadOS macOS tvOS watchOS Safari and Web Games Business Education WWDC Design Human Interface Guidelines Resources Videos Apple Design Awards Fonts Accessibility Localization Accessories Develop Xcode Swift Swift Playgrounds Tes... devel

Swift 문법 (The Basics) (1/2) [내부링크]

스위프트 문법에서 공식문법서에 있는 기초 파트를 하나씩 정리해보고자 합니다. 출처 : https://bbiguduk.gitbook.io/swift/language-guide-1/the-basics 기본 (The Basics) bbiguduk.gitbook.io 공식문서를 번역해놓은 사이트 입니다. 공식 문서와 연결된 번역사이트는 한국어,중국어,스페인어 밖에 없네요. 그럼 차례대로 한번 살펴보겟습니다. 다들 아시겠지만 진짜 아예 처음보는 쌩초보들을 위해 도움을 드리자면 제 예시의 사진속 분홍색 코드들이 전부다 문법이라고 보시면 되겠습니다. 저는 처음할때 뭐가 문법이고 뭐가 프레임워크인지 너무 헤깔렸어서... 1. 상수와 변수 (Constants and Variables) 2. 주석 3. 세미콜론 4. 정수 (Integers) 5.부동 소수점 숫자 (Floating-point Numbers) 6. 정수와 부동소수점 변환 7. 타입 별칭(Typealias) 8. 부울(Booleans) 1

[Swift 문법] escaping 클로저 [내부링크]

원래 글의 흐름대로라면 기초문법을 먼저 다루고 얘는 클로저 파트에서 나중에 다뤄야 하지만 이거를 쓰고 싶어서 먼저 작성합니다. 얘는 우선 매개변수로 클로저를 갖는 메소드 일때 쓰입니다. 표기법은 @escaping 을 클로저 앞에 명시 해주며 사용합니다. escaping 클로저를 갖는 함수가 호출되면 함수 액션만 실행이 되고 클로저의 액션은 실행하지 않고 그냥 들고있습니다. 일종의 킵이라고 보면됩니다. 간단하게 정리하자면 '클로저는 킵한다' 라고 이해하시면 될 것 같습니다. 그럼 공식문서의 예제들을 확인해 보겠습니다. 공식문서 출처 원문 : https://docs.swift.org/swift-book/LanguageGuide/Closures.html Closures — The Swift Programming Language (Swift 5.6) Note Don’t worry if you aren’t familiar with the concept of capturing. It’s exp

ARC(Automatic Reference Counting) 자동 참조 카운트 [내부링크]

오늘은 ARC에 대해서 다뤄볼까 합니다. 꼭 알고계셔야 하는 내용이니 천천히 살펴봅시다. ARC는 말그대로 앱의 효율적인 메모리 사용을 위해 자동으로 참조횟수를 관리하는 시스템이에요. 굳이 사용하려고 안해도 swift에서 알아서 사용하는 법칙입니다. 일종의 패시브스킬이라고 보면 되요. 그럼 이 패시브가 어떤 능력을 갖고 있는지 알아야겠죠? 우선 Reference를 관리해주는 시스템이기 때문에 값타입인 놈들이랑은 상관없고 Class타입에만 적용됩니다. Class 타입을 안쓸수는 없으니까 꼭 알아둬야겠죠. 저는 간단하게 정리하여 쓰는 것이기 때문에 세부내용은 반드시 밑의 공식문서를 살펴보시길 권합니다. 아 그리고 이제부터 ARC에 대해 설명할때 ARC가 발동한다 이런 표현이 있는데 이는 패시브가 발동한다 이런 의미로 보시면 되는데요. 이게 패시브는 항상 켜져있는건데 이게 무슨소린가 이렇게 생각하실 수도 있다는 생각이 들어서 명확히 해두려고합니다. 일단 표현을 어떻게 하던지간에 핵심은 클

[Swift] inout 파라미터(In-Out Parameters) [내부링크]

함수의 파라미터 인자 값을 직접 변경해주고 싶을 때 쓰입니다. 공식문서 예제를 볼까요? func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 프린트 값을 찍어서 직접 살펴보겠습니다. 젤 위 함수는 매개변수 a와 b의 값이 서로 바뀌게 하려는 함수 입니다. 오 계획대로 numberOne 이 3이되고 numberThree가 1이 되었네요. 그럼 swapTwoInts 함수의 호출부에 나오는 & 이거는 뭘까요? 호출부를 작성해봤더니, swapTwoInts(a: &Int, b: &Int) 이런 가이드가 잡히는데요. &는 inout 표시입니다. 아무리 같은 Int타입이더라도 이걸 표기해줘야 호출부의 매개변수로 들어갈 수 있습니다. 출처 : https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID166 Functions —

[Swift]The Basics 기본문법 (2/2) [내부링크]

1. 튜플 2. 옵셔널 3. 에러핸들링 4. 주장과 전제조건 지난번 글에 이어 기본문법에 대해 마저 살펴볼려고 합니다. 출처: https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html The Basics — The Swift Programming Language (Swift 5.6) In addition to familiar types, Swift introduces advanced types not found in Objective-C, such as tuples. Tuples enable you to create and pass around groupings of values. You can use a tuple to return multiple values from a function as a single compound value. Swift also introduces optional types, wh... docs.s

[SwiftUI] Form, Section,Picker, Toggle [내부링크]

Form 에 대해서 정리를 하고 싶어서 정리해봤습니다. 나름대로 목차를 만들어봤습니다. 1. Form 2. Form vs Vstack 3. Section 4. Picker in Form 5. Toggle 1. Form Form이 뭔지 궁금하니 애플의 공식문서 예제를 살펴봅시다. 출처: https://developer.apple.com/documentation/swiftui/form/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Discover iOS iPadOS macOS tvOS watchOS Safari and Web Games Business Education WWDC Design Human Interface Guidelines Resources Videos Apple Design Awards Fonts Accessibility Localization Accessor

[SwiftUI] 기본 통신(1) - Combine을 활용한 통신 [내부링크]

통신을 통한 다양한 작업들이 가능하지만 그중에서 가장 기본적인 작업인 url 주소에 데이터를 요청하고 나온 데이터를 받는 작업을 정리해보고자 합니다. 예제는 정대리님의 유튜브 예제를 활용해보고자 합니다. 1편: https://www.youtube.com/watch?v=aMes-DVVJg4&list=PLgOlaPUIbynqyJHiTEv7CFaXd8g5jtogT&index=25 2편: https://www.youtube.com/watch?v=zpk8ZviA8Pg&list=PLgOlaPUIbynqyJHiTEv7CFaXd8g5jtogT&index=26 1편에서는 알라모파이어로 통신을 하여 데이터를 가져오는 기본적인 방법을 다루고, 2편에서는 라우터를 만들어 refresh를 하는 예제를 다루고 있습니다. 이 글에선 1편 내용의 일부인 데이터를 가져오는 부분을 다루겠습니다. 정대리님의 영상과 다른점은 urlImage 라이브러리 대신 AsyncImage라는 SwiftUI 프레임워크로 다루었고,

[SwiftUI]AsyncImage [내부링크]

SwiftUI의 AsyncImage를 다뤄보려고 합니다. 얘 이름에서 느낄수 있듯이 url주소에서 나오는 이미지를 내 앱에 그려주는 그런 역할을 하는 아이입니다. iOS15.0 이상에서 지원되는 구조체라 당장 앱에 적용하긴 힘들겠지만 그래도 상당히 편리한 객체이므로 한번 사용해보겠습니다. 예제는 https://blog.naver.com/three_god/222700212241 [SwiftUI] 기본 통신(1) - Combine을 활용한 통신 통신을 통한 다양한 작업들이 가능하지만 그중에서 가장 기본적인 작업인 url 주소에 데이터를 요청하고 나... blog.naver.com 여기의 View 부분을 만드는 것으로 해보겠습니다. 여기 들어가보기 귀찮은 분들을 위해 같은 예제 동영상을 올립니다. 예제 보시죠. HStack과 VStack, AsyncImage와 Text 들로 간단하게 만들 수 있습니다. HStack{ AsyncImage() Spacer() VStack { Text() Te

[UIKit] 기본 통신(2) - URLSession (feat. @escaping Closer) [내부링크]

UIKit의 분류에 넣어 놨지만 사실 SwiftUI에서도 쓸 수 있습니다. Combine을 놔두고 굳이 쓰지 않을뿐. 지난번 글에서 Combine과 URLSession을 활용하여 기본적인 통신작업인 데이터 가져오기에 대해서 알아봤는데요. https://blog.naver.com/three_god/222700212241 [SwiftUI] 기본 통신(1) - Combine을 활용한 통신 통신을 통한 다양한 작업들이 가능하지만 그중에서 가장 기본적인 작업인 url 주소에 데이터를 요청하고 나... blog.naver.com 이번엔 가장 기본적인 URLSession만으로 데이터 가져오는 작업을 해보겠습니다. 다른 재료들은 위 글에 다 써놓은 글의 중복이 되버리니 딱 통신을 시도하는 부분만을 떼어서 알아보겠습니다. 애플 공식 문서를 먼저 읽어보면서 시작할건데요. 읽어보기에 앞서 기본 통신 작업의 과정을 간단하게 살펴보려합니다. 1. URLSession의 싱글턴 인스턴스인 shared로 dat

[iOS] DateFormatter [내부링크]

오늘은 DateFormatter 에 대해서 알아봅시다. 오늘도 애플공식문서 보면서 하나씩 살펴보죠. 공식문서 : https://developer.apple.com/documentation/foundation/dateformatter/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Languages Swift SwiftUI Tools SF Symbols Swift Playgrounds TestFlight Xcode Xcode Cloud Topics & Technologies Accessibility Accessories App Extensions App Store Audio & Video Augmented Reality Business... developer.apple.com 정의를 보면 날짜와 텍스트 사

[SwiftUI]Combine - Published [내부링크]

오늘은 Combine의 핵심인 Published에 대해서 살펴보겠습니다. 애플공식문서 먼저 살펴보겠습니다. https://developer.apple.com/documentation/combine/published/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Languages Swift SwiftUI Tools SF Symbols Swift Playgrounds TestFlight Xcode Xcode Cloud Topics & Technologies Accessibility Accessories App Extensions App Store Audio & Video Augmented Reality Business... developer.apple.com 값을 Published로 감싼 형태네요. 정의를

[SwiftUI] Timer [내부링크]

오늘은 iOS에서 Timer 에 대해 다뤄보려고 합니다. 사실 얘는 굳이 SwiftUI 에서만 쓰이는것은 아니지만 굳이 SwiftUI로 분류한 이유는 밑의 목차에서 TimerPublisher 때문입니다. Publisher를 온전하게 사용하기 위해선 Combine이 필요하고 Combine은 SwiftUI 에서 가장 좋은 퍼포먼스를 보이기 때문이죠. 애플 공식문서를 바탕으로 오늘의 목차를 짜봤습니다. 1. 공식문서 둘러보기 2. 스탑워치 예제 3. 실시간 뉴욕시계 예제 (feat. TimerPublisher) 1. 공식문서 둘러보기 애플공식문서 링크 : https://developer.apple.com/documentation/foundation/timer/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS L

[Swift] String Format Specifiers [내부링크]

지난번 타이머를 만들면서 이런저런 자료들을 참고하다보니 String(format: "%.2f", number) 이런식으로 사용한것들이 눈에 보이길래 자세히 알아봤습니다. https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFStrings/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 String Format Specifiers Format Specifiers The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification ; the specifiers are summarized in Table 1 . Note that you can also use the “

[SwiftUI] @State @Binding [내부링크]

SwiftUI 프레임워크를 사용하다 보면 필연적으로 얘네들을 만나게 되는데 제대로 들어가기에 앞서 간단하게 얘네들의 역할과 필요한 이유를 먼저 써보겠습니다. 기존 UIKit에서는 ViewController를 통하여 변화를(delgate등) 감지 해서 그릴 수 있었습니다. 그러나 ViewController가 없는 SwiftUI에서도 변화(유저가 값을 입력한다, 버튼을 터치한다, 화면을 터치한다 등등) 들을 감지할 수 있는 시스템이 필요하겠죠. 그렇다면 얘네들은 어떻게 변화를 감지할까 1. @State 얘를 한마디로 정의하자면 '변화감지' 입니다. 간단한 예제를 만들어 보겠습니다. struct ContentView: View { @State var deviceName = "Magic Mouse" var body: some View { VStack(spacing: 45) { HStack(spacing: 45){ Button(action: { deviceName = "Magic Mouse"

[SwiftUI] Shape [내부링크]

#SwiftUI #Shape #Capsule #Circle #Ellipse #RoundedRectangle #Rectangle 스유에서는 다양한 모형들을 기본 지원합니다. 오늘은 필요한 모형을 직접 만들어서 추가하는걸 해보려고 합니다. 우선 스유에서 직접 지원하는 모형들을 한번 볼게요. 요러한 것들이 있습니다. 코드로 보면 struct ShapeBootcamp: View { var body: some View { VStack { Capsule() .frame(width: 100, height: 50) Circle() .frame(width: 100, height: 50) Ellipse() .frame(width: 100, height: 50) Rectangle() .frame(width: 100, height: 50) RoundedRectangle(cornerRadius: 10) .frame(width: 100, height: 50) } } } 이렇게 생겼습니다. 이러한 것들이 있는

[SwiftUI] Custom Arc Shape [내부링크]

#SwiftUI #Custom #Arc #Shape #addQuadCurve #addArk 지난번에는 예제로 Shape를 통해 다이아몬드를 만들면서 구현 원리까지 확인해봤습니다. 이번에는 곡선까지 커스텀하게 만들어 보려고 합니다. 저번에는 다이아몬드를 만들어봤으니 이번에는 클로버를 만들어볼게요. 제가 만들어놓은건데 아래 그림 한번 볼까요. 요렇게 만들어볼겁니다. 혹시 "아 그거 이모지에 다 있는거 멍청하게 헛짓거리 하고 있냐" 하실수도 있겠습니다만..ㅋㅋㅋ 아 저도 알고있습니다만 기왕 예제 만들어보는거 뭐 만들 목표가 있어야 재밌잖아요 그럼 말 나온김에 이모지 클로버랑 비교해볼까요?? 제꺼가 좀 낫지않나요??ㅋㅋㅋ 그만 떠들고 이제 본론으로 들어가보죠. 여느때처럼 예제 만들어 보고 애플 공식문서를 통해서 사용된 코드들 구현 원리를 살펴볼게요. 저는 하나 하나 그려줬습니다. 원 3개랑 아래 나뭇가지 이렇게 4개 분류해서 그려줬는데요 4개를 다 그리는 과정이라 꽤나 코드가 길지만 자세히

[SwiftUI] AnimatableData [내부링크]

#SwftUI #AnimatableData #RoundedRectangle #Shape AnimatableData를 설명하기위해 서론이 상당히 길어질 것 같습니다. 정확한 원리와 기능을 제대로 알지 못하시는 분들은 서론 길어도 스킵하시면 안될 것 같습니다. 그럼 시작해볼게요. 우리가 스유로 UI를 그릴때 RoundedRectangle을 많이 씁니다. 그런데 이 애플에서 만든 RoundedRectangle 어떻게 만드는지 아시나요? https://blog.naver.com/three_god/222838021780 [SwiftUI] Shape #SwiftUI #Shape #Capsule #Circle #Ellipse #RoundedRectangle #Rectangle 스유에서는 다양한 ... blog.naver.com https://blog.naver.com/three_god/222838955636 [SwiftUI] Custom Arc Shape #SwiftUI #Custom #Arc

[SwiftUI] Generic Type [내부링크]

#SwiftUI #Generic Generic 은 문법할때 한 적이 있습니다만 읽기만 해봤지 직접 구현해본적이 없더군요. 그래서 예제 한번 만들어 보면서 정리해보려합니다. 예제를 만들어 보면서 살펴볼건데요. 한가지 상황에 몰입을 해봅시다. 우리가 친구들한테 명함을 받았다고 칩시다. 근데 그 명함의 양식에는 이름, 나이, 연락처 를 적게 되어있었는데요. 이름은 String 나이는 Int 로 잘 적어줬지만 이 친구들이 연락처에 누구는 이메일 주소를 누구는 핸드폰 번호를 이렇게 줬습니다. 몽땅 String으로 주는게 지극히 정상이지만 이 예제를 구현하고 싶은 그자식(?)은 폰번호를 반드시 Int로 받고 싶습니다. 누가봐도 이상한 예제지만 우리는 이 상황에 몰입을 해야만 합니다. 어쨋든 그럴 경우에 모델을 두개로 분류해서 만들어 줘야하는 문제가 발생합니다. 예를 들면 struct MyFriendInfoPhoneNumber { let name : String let age: Int let c

[SwiftUI] View Builder [내부링크]

#SwiftUI #ViewBuilder 오늘은 ViewBuilder 에 대해서 알아보겠습니다. 얘의 효과를 간단하게 표현하자면 호출부에서 그릴 수 있다는 점입니다. 예전에 Escaping 클로저에 대해서 다룬 적이 있는데요. 호출부에서 로직을 짜주는 얘의 효과와 비슷한 것이죠. 역시 말로만 들어선 헤깔리니 예제를 만들어 보면서 ViewBuilder 에 대해서 익혀보겠습니다. 나름대로 예제를 만들어 봤는데요. 명함이라는 뷰를 만들어서 호출부에서 뒷배경을 그려주는 그런 예제를 만들어봤습니다. 아래 그림을 보시죠. 명함이라는 뷰 인스턴스 2가지를 VStack으로 그려준 예제입니다. 위는 디즈니 직원 명함 아래는 애플 직원 명함 뭐 이런 컨셉입니다..ㅋㅋㅋ 이름, 연락처, 이메일, 글자색 은 인스턴스 변수로 받고 뒷배경을 ViewBuilder로 받아 호출부에서 그려줬습니다. 그럼 호출부인 메인뷰의 코드를 먼저 한번 볼까요? struct ViewBuilderBootcamp: View { va

[Swift] Associated Types [내부링크]

#Swift #associatedtype 요 며칠 프레임워크 자체를 다루는데 집중하느라 본의아니게 계속 외면해왔던 친구가 있습니다. 걔가 바로 오늘 다룰 associatedtype 입니다. 최근 다루던 프로토콜에서 계속 나왔지만 이악물고 외면하다가 이제야 마주합니다..ㅋㅋ 스위프트 공식문서를 보면서 차근차근 살펴볼게요. https://docs.swift.org/swift-book/LanguageGuide/Generics.html Generics — The Swift Programming Language (Swift 5.7) The Problem That Generics Solve Here’s a standard, nongeneric function called swapTwoInts(_:_:) , which swaps two Int values: func swapTwoInts ( _ a : inout Int , _ b : inout Int ) { let temporaryA = a a

[SwiftUI] AttributedString 으로 부분 underline 구현하기 [내부링크]

#SwiftUI #underline #AttributedString SwiftUI로 개인 어플을 제작중인데 Text에 밑줄이 필요한 상황이었습니다. SwiftUI 에서 텍스트에 밑줄을 쳐보려는데 Text를 통해서 하는게 아니고 AttributedString을 사용해보려고 합니다. 아무래도 오랜시간 사용되어왔던 UIKit에 비해서 SwiftUI는 구글링했을때 나오는 자료가 상대적으로 빈약하기 때문에 더 효율적인 방법이 있을 수도 있다는 생각이 들지만 일단 제가 사용해본 방법을 기록해보려합니다. 먼저 가장 기본적인 방법인 Text에 underline 메소드를 달아서 밑줄을 쳐볼게요. 그리고 이 방법의 한계를 인식하고 AttributedString을 써보는 흐름으로 글을 진행해보겠습니다. 그럼 어떤 텍스트를 만들고싶은지 예제 한번 볼까요? 뭐 이런식으로 뒷부분 밑줄쳐주려고 합니다. 이건 매우 간단합니다. 우선 코드를 볼게요. struct BasicUnderlineBootcamp: View

[SwiftUI] Custom Button Style [내부링크]

#SwiftUI #ButtonStyle #ButtonStyleConfiguration 오늘은 ButtonStyle을 사용해서 커스터마이징 하는 예제 몇개 살펴보고 예제 후에는 구현 원리에 대해서 차근차근 살펴볼까 합니다. 그럼 ButtonStyle을 구현해봅시다. 이걸 뭐하러 하냐 우선 밑에 영상 하나 봅시다. 버튼 누르면 버튼이 약간 작아지고 색깔도 연해지고 하잖아요? 근데 예를 들어 나는 눌렀을때 파란색이되고 버튼은 더 커졌으면 좋겠다. 이럴수도 있단 말이죠? 그런데 이게 모든 버튼을 이렇게 만들고 싶단 말이죠? 이걸 모든 버튼에다가 일일이 설정해주기 이 얼마나 번거로운일입니까? 어떻게 보면 저번에 다룬 ViewModifier랑 비슷한 역할을 한다고 보면 될 것 같습니다. 그러면 몇가지 예제를 만들어볼게요. 첫번째 예제로는 버튼 3가지를 만들어주고 같은 스타일로 통일해줄게요. 이런것쯤이야 ButtonStyle을 몰라도 구현하기는 간단한건데 프로젝트의 덩치가 커질수록 좀 더 간결한

[SwiftUI] Published Property를 Codable하게 [내부링크]

#Published #Codable #Property 예전에 이부분에대해 다루기로 해놓고 한창 까먹고 있었는데 블로그 글들 검토하다가 안한걸 발견해서 이제서야 다룹니다. Swift에서 Property들은 기본적으로 Encode, Decode 될 형태들이 내장되어 별다른 조치를 취하지 않고 Codable 프로토콜만 붙여주면 되었습니다. 여기에 Publishe 래퍼가 붙어있는 프로퍼티라면 얘기가 달라집니다. 이럴때는 내장되어 있지 않아서 직접 설정해줘야합니다. 제 모델을 한번 봅시다. class Memo: Identifiable, ObservableObject, Codable { let id: UUID @Published var content: String @Published var isSecret: Bool = false @Published var password: String = "" let insertDate: Date } Published 변수가 3개나 있습니다. 얘는 위처럼 C

[SwiftUI] Animation 기본제공 효과 살펴보기 [내부링크]

#SwiftUI #Animation #Custom 앱을 설계하다보면 유저 경험의 질을 높히기 위해 Animation 효과를 자주 주는데요. 요 기본 제공되는 애니메이션들의 효과를 느낌적인 느낌으로만 대강 이해하고 있는것 같다는 느낌이 들어서 한번 쫙 정리해두고 두고두고 활용하려고 기록해봅니다. 애플 공식문서에서 보시면 https://developer.apple.com/documentation/SwiftUI/Animation Apple Developer Documentation Skip Navigation Apple Developer News Discover Design Develop Distribute Support Account Light Dark Auto Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode X

[SwiftUI] AnyTrasition(transition(_:)) [내부링크]

#SwiftUI #AnyTransition #Transition 오늘은 Trasition에 대해서 살펴보려고 합니다. 원래는 Custom Transition 을 만들고 이를 사용하는 예제를 몇가지 다루려고했는데 제가 아직 블로그에 Trasition 도 기록을 안해놔서 이거 먼저하고 다음탄으로 Custom Transition을 다뤄보려고 합니다. 먼저 transition을 이해해볼게요. 이를 번역해보면 전환, 전개방법 뭐 이런식으로 번역이 되는데 이 느낌에서도 느낄수 있듯이 무언가 전환되고 바뀌는 듯한 느낌을 받습니다. View에서 transition(_:) 이 메소드를 통해 매개변수로 AnyTransition 을 넣어 연결시킬 수 있습니다. 헌데 이 transition 만으로는 아무런 효과도 줄 수 없습니다. 얘는 anitmation과 함께 사용되어야 하는데요. 이를 테면 투수가 공을 던지는 행위를 애니메이션이라고 한다면 직구 인지 ,변화구 인지가 transition 이라고 생각하면

[SwiftUI] Custom Transition [내부링크]

#SwiftUI #Custom #Transition #AnyTransition 미리 예고한대로 Custom Transition을 구현해볼까 합니다. 기본 Transition 을 아직 안보신 분들은 지난번에 쓴 글 https://blog.naver.com/three_god/222834963495 [SwiftUI] AnyTrasition(transition(_:)) #SwiftUI #AnyTransition #Transition 오늘은 Trasition에 대해서 살펴보려고 합니다. 원래는 Cust... blog.naver.com 요거를 먼저 보고 보시면 좀 나을 것 같습니다. 오늘도 예제를 하나 구현해보고 공식문서 보면서 원리를 살펴볼게요! 오늘 구현하려 하는 예제는 아래 영상을 보시죠. 설명하자면 들어올땐 화면 밖에서 빙글빙글 돌면서 들어오고 사라질땐 제자리에서 돌면서 사라지게 Custom Transition을 적용해준 모습입니다. 얘를 구현하기 위해서 간략한 순서를 적어보자면 1)

[SwiftUI] matchedGeometryEffect [내부링크]

#SwiftUI #matchedGeometryEffect #Namespace 오늘은 matchedGeometryEffect 를 써보려고 합니다. 소문자로 시작하는거 보니 메소드의 냄새가 마구나죠? 여느때처럼 예제하나 만들면서 시각적으로 이해해보고 애플 공식문서를 살펴보면서 구현원리를 정확하게 이해하는 식으로 진행해볼게요. 먼저 예제보면서 어떤 역할을 하는 친군지 대강 이해해봅시다. 저희 집 엘지티비에서 웨이브앱을 켰을때 나오는 로딩뷰인데요. 나름 흉내내서 예제 만들어봤습니다. 예제를 보시면 파란공이 나오는데 쟤한테 정체성을 부여한거라고 보시면 됩니다. 코드를 보시면 공을 5개 만들어 주는데 이놈이 그놈이다 라고 표시를 해주고 이놈이 그놈이니 한놈이 움직인 것처럼 이펙트를 부여해줘 이런 느낌입니다. 코드로 보는게 이해가 빠르겠죠? HStack { VStack(spacing: 0) { Text("W") if loadingIndex == 0 { Circle() .foregroundColo

[iOS] Local Push Notification [내부링크]

오늘은 Notification 에 대해 알아볼건데요. 서버 API에서 온게 아닌 Local Push Notification 에 대해서 살펴보려합니다. 일단 Notification이 뭔지 알아볼게요. 직역하면 그냥 알림인데 시각적으로 보는게 편하겠죠? 여러분의 카톡을 보시면 요렇게 생긴걸 볼 수 있습니다. 제꺼엔 66이라고 써있는 요거 그리고 얘 뿐만 아니라 얘 알림 하나가 올때 "친구1: 응 지금 가고 있어!" 뭐 이런식의 팝업이 위에 잠깐 뜨는걸 알 수 있는데 얘를 Notification 이라고 합니다. 얘는 서버에서 온거라 오늘 할거랑 방법이 조금 다르지만 어짜피 Notification 이라는 본질은 같으니 그림으로 보기엔 큰 차이 없을 것 같네요. 자 이제 Notification 이라는게 대충 뭔지 알았으니 어케 구현하는지 차근차근 봅시다. 어떤식으로 예제를 구현할지 스케치 해봤어요. 글씨가 좀 지저분해서 보기힘든 분들을 위해 설명하자면 버튼 5개 들어가는데 1번: 알림 허가

[SwiftUI] Haptic Feedback [내부링크]

#SwiftUI #UIImpactFeedbackGenerator #UINotificationFeedbackGenerator #UISelectionFeedbackGenerator #UIFeedbackGenerator 오늘은 Haptic Feedback 의 작업을 할 수 있는 UIFeedbackGenerator에 대해 알아보겠습니다. 부제로는 ‘스유에서 Haptic 쓰기’ 이렇게 되겠네요 얘는 추상적 개념으로 하위클래스 3개중 하나를 인스턴스화해서 써야합니다. 그럼 얘의 하위클래스에는 뭐가 있고 어떤 기능들을 하는지 보는게 오늘의 목표 되겠습니다. 공식문서에서 보시면 https://developer.apple.com/documentation/uikit/uifeedbackgenerator/ Apple Developer Documentation Skip Navigation Apple Developer News Discover Design Develop Distribute Support Ac

[SwiftUI] AVAudioPlayer [내부링크]

#SwiftUI #AVAudioPlayer 오늘은 SwiftUI에서 사운드를 다뤄보려고합니다. 여태까지 각종 뷰나 데이터처리에 관한건 많이했지만 사운드에 관한건 안해본것 같네요. 사운드 파일을 xcode 프로젝트에 넣어주고 그걸 실행해서 앱에 사운드가 들리는 그런 예제를 만들어보면서 필요한 클래스나 메소드들도 함께 분석해볼게요. 우선 아무거나 두가지 사운드를 내려받고 메인뷰의 버튼을 클릭했을때 해당 사운드가 나오는 뭐 그러한 간단한 예제입니다. 저는 이런식으로 만들어줬어요. 팝 사운드와 펀치사이드를 준비해놨습니다. 그럼 시작해보죠 지난번 Haptics와 마찬가지로 싱글턴 방식으로 AVAudioPlayerManager 를 만들고 player 라는 AVAudioPlayer 타입의 프로퍼티 를 만든 후 사운드를 재생하는 메소드를 선언할거에요. 코드로 볼게요. import AVKit class AVAudioPlayerManager { static let shared = AVAudioPlay

[SwiftUI] sort, sorted (feat. Combine) [내부링크]

#swift #sort #sorted 오늘은 정렬기능을 다뤄보려는데요 당연히 배열에 대한 정렬이니 일단 배열이 필요하겠죠? 먼저 구조체를 하나만들고 그 인스턴스들의 배열을 만들어 볼게요. func initList() { let friend1 = FriendInfo(name: "김서연", gender: "c", contact: "010-1234-5678", relation: "고등학교", age: 20) let friend2 = FriendInfo(name: "김민준", gender: "cc", contact: "010-2345-6789", relation: "고등학교", age: 21) let friend3 = FriendInfo(name: "이서준", gender: "cc", contact: "010-3456-7890", relation: "중학교", age: 22) let friend4 = FriendInfo(name: "민서윤", gender: "c", contact: "010

[iOS] filter(feat. Combine, SwiftUI) [내부링크]

#Swift #SwiftUI #filter 오늘은 filter에 대해서 살펴보려합니다. 그리고 더불어 이 기능을 활용해 검색어를 입력하고 배열에서 해당 검색어가 포함된 배열이 보이는 이런 작업을 해보려합니다. SwiftUI, Combine 으로 구현할 생각입니다. 예제는 지난글에서 썼던 예제를 활용해보려 합니다. https://blog.naver.com/three_god/222827538155 [SwiftUI] sort, sorted (feat. Combine) #swift #sort # sorted 오늘은 정렬기능을 다뤄보려는데요 당연히 배열에 대한 정렬이니 일단 배열이 필요... blog.naver.com 요기서 썼던 배열인데 예고했던대로 재탕합니다. 우선 구현하고 싶은 시뮬레이션을 먼저 볼게요. 이렇게 구현하려면 먼저 전체 배열을 상수로 해서 기본값으로 주고 변수로된 배열이 화면에 비춰지게끔 하려고 합니다. 아 먼저 코드에는 정답이 없습니다. 뭐로 가든지 간에 원하는 구현을 잘

[SwiftUI] View Modifier [내부링크]

#SwiftUI #ViewModifier 오늘은 ViewModifier 에 대해서 살펴보려합니다. 혼자 프로그래밍할때는 반복되는 귀찮은 작업들을 처리할때 쓸 수 있고 협업으로 할때는 코드 자체의 가독성을 높여줄 수 있는 구조체라고 생각됩니다. 먼저 애플 공식문서 같이볼게요. https://developer.apple.com/documentation/swiftui/viewmodifier/ ViewModifier | Apple Developer Documentation A modifier that you apply to a view or another view modifier, producing a different version of the original value. developer.apple.com 정의를 보면 뷰나 다른 뷰 모더파이어에 적용하는 변경자로 다른 버전의 오리지널 값을 생성한다. 나름 이해하기 쉽게 의역한건데 이번에도 역시 정의만으론 난해합니다. 제가 개인적으로 이해

[Swift] Concurrency - TaskGroup [내부링크]

지난번 글에서 비동기적 작업을 가능케하는 Async let 에 대해서 다뤘었습니다. https://blog.naver.com/three_god/222801376890 [Swift] Concurrency - Async let 지난 글에 이어 이번에도 Swift Concurrency에 대해 알아보려 합니다. 그동안 다뤘던 Async - Await 이... blog.naver.com Async let 을 자세히 보시면 각각의 클로저를 상수화(let) 하여 쓰는 형태입니다. 이러한 점에서 불편한 부분이 있었는데 그 대안으로 가능한게 이 TaskGroup 입니다. 그럼 여느때처럼 애플 공식문서 먼저 보시면서 예제도 다뤄볼게요. https://developer.apple.com/documentation/swift/taskgroup/ TaskGroup | Apple Developer Documentation A group that contains dynamically created child t

[SwiftUI] Alert [내부링크]

오늘은 SwiftUI에서 Alert 를 다루는 방법을 한번 살펴보려 합니다. 먼저 Alert가 모냐 우리가 자주 보던겁니다. 이런거나 이런걸 Alert 라고 합니다. 자 그럼 나의 앱 프로그램에서 얘를 띄워줄려면 어떻게 해야하는지 한번 살펴봅시다. Alert는 원래 구조체였습니다. 아니 정확히 말하면 아직까진 구조체지만 앞으로는 아닐거다 라고 보는게 맞을것 같네요. 애플 공식문서를 볼게요. https://developer.apple.com/documentation/swiftui/alert/ Alert | Apple Developer Documentation A representation of an alert presentation. developer.apple.com 여기 들아가보시면 Alert 구조체의 시대는 끝났다. 이제는 View modifier 로 다뤄라 뭐 이런식으로 써져있습니다. 그래서 Preseatation Modifiers로 다뤄줘야 합니다. 그럼 이건 어트케 쓸수있냐

[SwiftUI] WWDC22 - Swift Charts (Beta) [내부링크]

올해의 WWDC를 보면서 그냥 보지만 말고 내용들을 블로그에 기록을 해놓으면 좀 더 재밌게 볼 수 있을 것 같다는 취지에서 기록을 합니다. 아직 iOS 16 버전 부터가 정식버전이 아니라 iOS 16 이상부터 지원하는 Charts 역시도 베타일 수밖에 없는데요. 따라서 예제를 직접 만들어볼 수도 없는 상황입니다. 사용하는 실기기 하나뿐이라 베타를 성급하게 올릴 수가 없네요 ㅠㅠ 정식버전 출시하면 글 제목 뒤에 베타딱지 떼고 예제 직접 올리고 글을 수정하는 방식으로 작성하려고 합니다. 여차하면 그냥 새로운글 작성하고 그 링크를 올릴 수도 있습니다. 서론이 길었는데 여튼 먼저 애플 공식문서를 읽어봅시다. https://developer.apple.com/documentation/charts/chart Chart | Apple Developer Documentation A SwiftUI view that displays a chart. developer.apple.com 정의는 간단하네요

[SwiftUI] TabView [내부링크]

SwiftUI 의 TabView에 대해서 알아볼건데요 일단 TabView가 뭔지 그림으로 먼저보는게 편하겠죠? Swift On Tap 이라는 사이트에서 가져온 예제의 움짤입니다. 이처럼 밑에 tab이 있는 형태의 뷰가 TabView입니다. 이제 어떻게 생겼는진 알았고 애플 공식문서를 살펴볼게요. https://developer.apple.com/documentation/swiftui/tabview/ TabView | Apple Developer Documentation A view that switches between multiple child views using interactive user interface elements. developer.apple.com 먼저 정의를 보시면 여러 상호적인 UI 요소들을 사용하는 차일드뷰 를 스위치 하는 뷰 직역하면 이렇긴 한데 우리가 위에서 그림을 안보고 넘어왔다면 난감하게 딱 좋았겠네요. 공식문서의 예제는 밑의 탭아이템의 설정만 보여주

OAuth 2.0 [내부링크]

모든 기술들은 필요에 따라 생겨납니다. 모든 라이브러리들도 사람들이 필요로 하면서 생기는거죠. 따라서 이 기술이 생겨난 배경을 이해해해야 비로소 기술자체에 대한 이해가 완성된다고 할 수 있습니다. 저도 이 기술을 다뤄본 적은 있지만 정확한 개념과 이 기술이 생겨난 이유에 대해서 모르고 있었는데 오늘에서야 이해를 완성시켜보려고 합니다. 오늘 다룰 건 OAuth 2.0 입니다. 어떤 수요에 따라 생겨나게 되었고 구체적으로 어떻게 작동하는지 기술해보려합니다. 우선 앱을 개발하는 내가 이 기술이 왜 필요한가? 라는 것부터 시작해볼게요. 다들 잘 알고 계실 빽다방 어플을 받아보시면 이런 소셜 로그인 화면을 만날 수 있는데 이런것이 OAuth 2.0이 사용되는 예시라고 할 수 있습니다. 이용자의 입장에서 나는 빽다방 어플로 빽다방 서비스를 이용하고 싶은데 뜬금없이 애플, 페이스북, 카카오, 페이코 로 로그인이 가능한겁니다. 이런 걸 OAuth 2.0식으로 해석해보자면 '나' 는 Resource

[CS] HTTP/ Request, Response [내부링크]

오늘은 Hyper Text Transfer Protocol 의 약자인 HTTP에 대해서 알아보려 합니다. Protocol이라는 표현에서 알 수 있듯이 얘는 인터넷 통신할 때 쓰이는 규칙입니다. 앱 개발 하는 입장에서 이게 왜 필요하냐? 당연하게도 인터넷이 안되는 앱은 반쪽짜리 앱일 수밖에 없고 서버에서 데이터를 받을 때 혹은 서버로 데이터를 보낼 때 어떤방식으로 보내는지 그 과정을 정확하게 파악할 필요가 있기 때문에 앱 개발 하는 사람도 이에 대한 정확한 이해는 필수라 생각합니다. 그럼 지금부터 이 규칙이 어떤 규칙인지 살펴봅시다. 인터넷이라는건 간단하게 연결입니다. 정보를 원하는 자가 있고 정보를 제공하는 자가 있습니다. 이 둘의 연결이 인터넷인겁니다. 정보를 원하는 자는 정보를 Request 할겁니다. 정보를 제공하는 자는 이 Request에 Response 하겠죠. 그런데 이 둘이 서로 알아들을 수 없는 얘기를 한다면 서로 연결, 즉 정보교환이 안되는겁니다. 그래서 서로 알아들

[iOS] Alamofire - Making Requests (1) [내부링크]

이번시간에는 알라모파이어로 Request의 구성요소들을 알아보려합니다. 총 2편으로 작성할 예정이고 1편에서는 알라모파이어 문서의 Usage 파트의 request 2편에서는 Advance Usage 파트의 request 를 알아보려 합니다. https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#making-requests Alamofire/Usage.md at master · Alamofire/Alamofire Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub. github.com 위 알라모파이어 공식문서의 1회독 느낌 으로 작성한 글이라 제가 잘못 이해한부분이 있을 수 있는점 양해바랍니다. 애플의 바닐라 버전과 비교해보면 request는 dataTask

[iOS]Alamofire - Adapting and Retrying Request with RequestInterceptor(토큰갱신 및 재시도) [내부링크]

오늘은 알라모파이어에서 오늘 제목 그대로 요청인터셉터를 사용하여 요청을 갱신, 적용 하는 방법을 다뤄보려합니다. 알라모파이어의 공식문서에서 분류해놓은대로 RequestAdapter RequestRetrier Using Multiple RequestInterceptors AuthenticationInterceptor 차례대로 다뤄볼게요. 1) RequestAdapter RequestAdapter 프로토콜은 다음과 같은 한가지 메소드를 요구합니다. func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result<URLRequest, Error>) -> Void) 이 메소드는 매개변수로 URLRequest와 Session 을 요구합니다. 얘네들은 앞서 다뤘었죠 제 뇌피셜로 젤 중요하다면서..ㅋㅋ 여튼 어떤식으로 사용하는지 공식문서쪽에서 제시한 예시를 볼게요. let accessToken: Str

[Swift] Concurrency - Task [내부링크]

지난번 글에서 URL의 이미지를 받는 과정에서 Async Await 을 한번 써봤는데요. 거기서 설명하지 않은 Task 에 대한 부분을 여기서 다뤄보고자 합니다. Task 애플 공식문서 의역하면서 먼저 글을 작성해보고자 합니다. 의역이라 조금 틀릴 수도 있으니 가급적 원문을 보시는편이 좀 더 도움이 되실듯 싶습니다. 애플 공식 문서: https://developer.apple.com/documentation/swift/task/ Task | Apple Developer Documentation A unit of asynchronous work. developer.apple.com 먼저 정의를 보면 비동기작업의 단위 라고 되어있습니다. 선언은 아래와 같이 되어있네요. @frozen struct Task<Success, Failure> where Success : Sendable, Failure : Error Success 와 Failuer 두가지 타입을 갖는 구조체네요. 이제 Over

[Swift] Concurrency - Async let [내부링크]

지난 글에 이어 이번에도 Swift Concurrency에 대해 알아보려 합니다. 그동안 다뤘던 Async - Await 이나 Task 같은 도구들이 비동기적 함수에 쓰인다 라는건 알겠는데 정작 비동기적인 모습을 보여주진 못했습니다. 여기에서야 비로소 비동기적 면모를 보이게 됩니다. 그럼 Swift 공식문서를 보고 예시를 함께 들어 보면서 자세히 들여다봅시다. Swift 공식문서: https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html Concurrency — The Swift Programming Language (Swift 5.7) The additional scheduling flexibility from parallel or asynchronous code also comes with a cost of increased complexity. Swift lets you express your intent in a wa

[Swift] Concurrency - MainActor [내부링크]

MainActor는 간단하게 말하면 Async - Await 에서 쓰는 DispatchQueue의 메인쓰레드 라고 보시면 됩니다. 다들 아시는 부분일테지만 그래도 쓰레드를 간단하게 설명하자면 Xcode에서 프로그램을 짤 때 기본적으로 UI 를 그릴 때 필요한 부분 은 Main 쓰레드에서 돌리고 나머지는 빽그라운드에서 돌린다고 보시면 되는데 빽그라운드에서 돌리다가 이제 UI 를 그리기 전에 쓰레드를 바꿔줘야하면 그때 쓰는게 DispatchQueue 였습니다. 얘와 같은 역할을 하는 친구가 MainActor 입니다. 공식문서를 보면서 한번 살펴볼게요. https://developer.apple.com/documentation/swift/mainactor/ MainActor | Apple Developer Documentation A singleton actor whose executor is equivalent to the main dispatch queue. developer.appl

[Swift] Concurrency - Task - .task [내부링크]

지난번에 Task 에 대해서 알아봤는데요. https://blog.naver.com/three_god/222800050982 [Swift] Swift Concurrency - Task 지난번 글에서 URL의 이미지를 받는 과정에서 Async Await 을 한번 써봤는데요. 거기서 설명하지 않은... blog.naver.com 추가로 좀 다룰게 있어서 2편으로 왔습니다. 유튜브보다가 이거 좀 헤깔려서 블로그 쓰면서 정리좀 해봅니다. 1) 공식문서 살펴보기 2) 위 유튜브에서 나온 예제 이렇게 진행합니다. 그럼 시작할게요. 인스턴스 메소드로서의 task 를 애플 공식문서로 함께 볼게요. 애플 공식문서: https://developer.apple.com/documentation/swiftui/anyshape/task(priority:_:)/ task(priority:_:) | Apple Developer Documentation Adds an asynchronous task to perf

[iOS] Async-Await - URL 이미지 가져오기 [내부링크]

작년 WWDC 에서 가장 핫했던 Async-Await 를 사용하여 URL 이미지를 받고 화면에 띄우는 작업을 해보려고 합니다. 기존에 사용하던 방법들과 어떠한 차이가 있는지 비교해보려 합니다. 어제 올린 글인 https://blog.naver.com/three_god/222780304435 [SwiftUI] URL 이미지 가져오기(feat. UIImage, MVVM, Combine) SwiftUI에선 AsyncImage 라는 구조체가 있어 이를 활용하여 URL이미지를 가져올 수 있었습니다. 그... blog.naver.com 이 글은 오늘의 작업을 하기위한 빌드업이었습니다..ㅋㅋ 이 작업은 Combine을 이용한 방법이 되겠고 Async - Await 을 사용한 방법과 예전에 사용하던 @escaping 을 사용한 방법 요 3가지를 비교하면서 코드진행이 어떻게 되고 코드 가독성은 어떤게 나을까 이러한 것들을 비교해보도록 하겠습니다. 1.@escaping 2.Combine(dataTas

[SiwftUI] LazyVGrid , LazyHGrid [내부링크]

오늘은 View의 일종인 LazyVGrid , LazyHGrid 를 써서 뷰를 그려보려 합니다. 이름에서 대충 짐작 하시다시피 한개만 할줄알면 나머지 한개는 똑같은 원리입니다. 그럼 먼저 LazyVGrid 를 그려보고 LazyHGrid는 어떻게 생겼는지 그림으로만 확인해볼게요. 1. LazyVGrid 사실 View 타입들은 그냥 그림으로 먼저 보는게 이해가 가장 빠릅니다. 요렇게 수직으로 배치하는 형태입니다. 이제 대충 감을 잡으셨을테니 공식문서를 볼게요. https://developer.apple.com/documentation/swiftui/lazyvgrid/ LazyVGrid | Apple Developer Documentation A container view that arranges its child views in a grid that grows vertically, creating items only as needed. developer.apple.com 그림을 한번 봤

[iOS] FileManager - URL에서 받은 이미지를 캐시에 저장해두기 [내부링크]

안쓰는 앱을 삭제할때 "캐시데이터만 삭제하기" 이런 옵션을 혹시 보신적이있나요? 오늘은 여기다가 뭘 저장해보려고합니다. URL 주소에서 이미지를 다운받아 UI에 그려주는 작업을 여러번 했는데 UI가 보일때마다 다운받아서 그릴게 아니라 처음에 다운받고 받은걸 어따 저장해놓은 후 다음번에 다시 보일때는 저장해놓은걸 갖고 오면 훨씬 빠르겠죠? 아무래도 네트워킹이라는건 최소한의 딜레이란게 있으니 저장해놓은걸 갖다가 쓰는게 속도면에서도 안정성면에서도 이상적입니다. 얘가 캐시에 없으면 다운받고 있으면 가져오고 이런식으로 로직을 짜면 훨씬 더 매끄러운 앱이 되겠죠. 위에서 설명한 작업들을 영상으로 함께 보시죠. 각각의 로직에다가 프린팅을 찍어서 얘가 이미지를 어디서 가져오는지 확인해봤는데 처음보는 이미지는 다운로드하고 한번 본 이미지는 로컬에서 가져오는 모습을 볼 수 있었습니다. 물론 이런식으로 말고도 얘는 정말 유용한 방법이니 이번 기회에 제대로 익혀둡시다. 이작업을 하려면 먼저 FileMan

[iOS] Alamofire - Session [내부링크]

그동안은 라이브러리 안쓰고 되도록 바닐라버전으로 해결하고자 했는데 복잡한 네트워킹에서 만큼은 이 라이브러리가 좋다고 판단되기도 하고 수많은 사람들이 애용하기도 해서 유행하는건 저도 해봐야죠. 우선 그동안 제가 쓰던 네트워킹은 특정 URL에 접속하여 거기서 나온 데이터를 쓰는 방식이었습니다. 그러나 이 라이브러리를 쓰면 Session 을 커스텀하게 만들어주고 Router 로 Request를 만들어서 parameter 에 따라서 요청 URL이 변경하고 요청이 가능하더군요. 또한 로그인 서비스 같은 토큰이 필요한 작업에서도 유용하게 쓰입니다. 물론 이런 작업이 가능한 바닐라에도 있겠지만 어쩐지 다들 Alamofire를 쓰는 것같아서 저도 찍먹 해보겠습니다. 일단 지금은 1회독 하는 느낌으로 글을 적으려 하니 틀린 부분이 있을 수 있는점 양해바랍니다. 직접 사용해보면서 나중에 추후 보완하도록 하겠습니다. 오늘은 Session 을 커스텀하게 만드는 방법을 함께 찾아보려합니다. 알라모파이어의

[iOS] NSCache 로 캐시저장, 삭제 [내부링크]

지난 글에서 FileManager로 캐시에 저장, 가져오기 작업을 해봤는데요. NSCache로 하는 방법도 있어서 한번 써봤습니다. NSCache 의 공식문서를 보면서 하면 어렵지 않게 할 수 있을겁니다. https://developer.apple.com/documentation/foundation/nscache/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode Xcode Cloud SF Symbols Topics & Technologies Accessibility Accessories App Extensions App Store Audio & Video Augmented Reality Business Des

[iOS] Alamofire - Making Requests(2) [내부링크]

지난시간에 이어 이번엔 Request를 구성하는 방법 2탄을 다뤄보려합니다. 지난번에 언급했다시피 이번엔 Advanced Usage 부분의 Making Request를 다룹니다. 사실상 알라모파이어의 공식문서를 1회독 하는 느낌의 글이라 정확한 정보는 아래의 알라모파이어 공식문서를 살펴보시면 좋을 것 같습니다. https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#making-requests Alamofire/AdvancedUsage.md at master · Alamofire/Alamofire Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub. github.com 애플의 바닐라 버전에도 URLRequest 를 통해 Request를 커스터마이

[SwiftUI] Lottie 라이브러리 적용하기(UIViewRepresentable) [내부링크]

스유에서 Lottie 애니메이션을 적용하고싶은데 라이브러리가 UIkit 위주로 되어있어서 이를 SwiftUI 에서 사용할 수 있도록 해줘야 합니다. UIView 형태로 만든 뷰를 View 형태로 바꿔줘야합니다. 이때 쓰이는게 UIViewRepresentable 이죠. UIViewRepresentable 프로토콜하면 func makeUIView(context: Context) -> UIView { } func updateUIView(_ uiView: UIView, context: Context) { } 얘네 둘을 받아야하는데 첫번째 메소드로 UIView를 만들어 주면 됩니다. func makeUIView(context: Context) -> UIView { let view = UIView(frame: .zero) let animationView = AnimationView() animationView.animation = Animation.named(fileName) animation

[SwiftUI] MVVM에서 Core Data 로 데이터 관리하기 [내부링크]

Core Data 프레임워크는 스유에서만 사용이 가능한건 아니지만, Core Data를 MVVM 아키텍처에서 사용해보려고 요 카테고리에 분류해놨습니다. 우선 공식문서에서 정의랑 역할 같은 것부터 알아봅시다. 애플공식문서: https://developer.apple.com/documentation/coredata/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode Xcode Cloud SF Symbols Topics & Technologies Accessibility Accessories App Extensions App Store Audio & Video Augmented Reality Business Desi

[SwiftUI] EnvironmentValues [내부링크]

이거 한번 정리해야지 하면서 이제서야 합니다. 열린 sheet를 끌때 항상 쓰던 방법인 @Environment(\.dismiss) var dismiss 요런 아이가 있었는데 얘가 바로 EnvironmentValues의 일종입니다. 계속 쓰면서도 제대로 모르고 아 언제한번 정리해야지 하다가 이제서야.... 그럼 애플 공식문서 읽어보면서 정리해보겠습니다. 애플공식문서: https://developer.apple.com/documentation/swiftui/environmentvalues Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode Xcode Cloud SF Symbols Topics & Technologie

[SwiftUI] NavigationTitle 색 변경하기 [내부링크]

스유에서 네비게이션 타이틀의 색상을 변경해보겠습니다. 잘 아시겠지만 맨 위에 있는 놈이 네비게이션 타이틀인데 색이 칙칙해서 영 써먹을 수가 없습니다. 그래서 바꿀려고 봤더니 어케해야할지를 모르겠습니다. 우리들의 공식 헬퍼 애플에게 다시 방문해봤습니다. https://developer.apple.com/documentation/familycontrols/familyactivityitem/navigationtitle(_:)-1tkw7/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode Xcode Cloud SF Symbols Topics & Technologies Accessibility Accessories Ap

[SwiftUI] Combine, combineLatest [내부링크]

오늘은 두가지 이상의 Publisher 들을 연동시킬수 있는 메소드인 combineLatest 를 사용해보겠습니다. Combine은 UIKit 에서도 사용 가능하지만 역시 스유와 찰떡이니 스유 카테고리에 넣는게 좋을 것 같습니다. 먼저 애플 공식문서를 보겠습니다. https://developer.apple.com/documentation/combine/publishers/concatenate/combinelatest(_:)/ combineLatest(_:) | Apple Developer Documentation Subscribes to an additional publisher and publishes a tuple upon receiving output from either publisher. developer.apple.com 정의를 보시면 추가 퍼블리셔를 구독하고 두 퍼블리셔로부터 출력을 받으면 튜플로 나온다. 이렇게 되어있는데 전 처음에보고 좀 먼소린가 했네요. 먼가 이 공

[UIKit] SwiftUI에서 키보드 내리기 [내부링크]

오늘 다룰건 앱에서 앱키보드를 다 쓰고 서치 버튼을 누른다거나 저장버튼을 누른다거나 할때 앱키보드가 내려가게 하는 메소드 에 대해서 보려고합니다. 이 작업을 할때 사용되는 코드 들을 하나씩 살펴보겠습니다. 1. sendAction(_:to:from:for:) 2. Selector 3.resignFirstResponder 요 세가지키워드를 중심으로 차근차근 살펴보겠습니다. 저는 스유를 쓰고 있는데 유킷에서 주워오는게 하두 많아가지고 얘네 둘이 분류하는게 의미가 있나 싶긴하지만 그래도 꿋꿋하게 분류하면서 쓰겠습니다. 그도 그럴것이 애초에 스유 베이스가 유킷이라 뭐 어쩔수 없는 것 같습니다. 애플에서도 유킷으로 분류해놔서 저도 일단은 유킷에다가 작성합니다. sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) 저는 얘를 사용해서 키보드를 내리는 작업을 하는데 이번 기회에 정리한번 해두는게

[SwiftUI] URL 이미지 가져오기(feat. UIImage, MVVM, Combine) [내부링크]

SwiftUI에선 AsyncImage 라는 구조체가 있어 이를 활용하여 URL이미지를 가져올 수 있었습니다. 그런데 제가 https://blog.naver.com/three_god/222701164654 [SwiftUI]AsyncImage SwiftUI의 AsyncImage를 다뤄보려고 합니다. 얘 이름에서 느낄수 있듯이 url주소에서 나오는 이미지를... blog.naver.com 이 글에서 언급했다시피 얘는 iOS 15이상에서만 사용할 수 있고 쓰레드를 직접 관리할 수 없다는 단점이 있습니다. 사실 애플이 이걸 만들면서 알아서 잘 관리되게 했겠지만, 우리가 마주할 수 있는 상황들이 아주 버라이어티 하기때문에 이 과정을 정확하게 이해하고 메모리를 직접 관리할 수 있게끔 UIImage를 활용한 기존의 URL이미지 다운로드 과정을 기록하려 합니다. 과정은 다음과 같습니다. 1.통신하여 나온 데이터를 UIImage로 변형 2.위 UIImage를 활용하여 Image로 뷰 그리기 1. cl

[iOS]UserDefaults 를 활용한 데이터 save [내부링크]

앱을 껐다가 다시켰을때 이전의 기록들이 보전되는 방법중에 가장 간단한 방법인 UserDefaults를 사용한 save 방법 에 대해서 써보려 합니다. 메모앱 같은 간단한 데이터들을 저장할때 사용하기 유용합니다. 예제를 먼저 보겠습니다. 사실 껏다가 켰을때 데이터가 보전되어있다 이거만 보면되는데 불필요하게 움짤이 긴거같네요. 제가 만든 메모앱에서는 메모라는 클래스가 있고 뷰모델에서 메모의 배열들로 UI 를 그려내는 방식이라서 이 메모의 배열만 저장하고 꺼내오고 하면 되는 간단한 방식입니다. 그럼 공식 문서 먼저 보시죠. https://developer.apple.com/documentation/foundation/userdefaults/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Languages Sw

[Swift] required init() [내부링크]

프로퍼티 래퍼 변수들을 가진 클래스 를 Codable 하게 만들어 주는 과정에서 required init() 를 사용하는 부분이 있길래 따로 정리해봅니다. 제가 이해하기론 이 놈은 선언된 그 클래스에선 사실상 init() 과 같은 역할을 하고 이 클래스를 상속받는 서브클래스에 영향을 미치는 겁니다. 그러니까 상위 클래스에 required init() 이 정의되어 있다면, 이 내용을 하위클래스에서 반드시 구현해 주어야 합니다. 헤깔리는 부분이 있다면 반드시 구현해주어야 하는데 생략이 가능할 때가 있다는 부분이었습니다. 그렇다면 반드시 구현해주는걸 원칙으로 하고 자동으로 상속되어 생략이 가능한 조건만 확인하면 무난할 것 같네요. 여기서 자동 상속은 swift init 의 기본적인 특성으로 required init()에 한정된 이야기는 아닙니다. 그냥 init()의 기본적인 자동 상속 특성도 한번 짚고 넘어간다고 생각하시면 될 것 같습니다. 이니셜라이저는 굉장히 중요한 개념이니 나중에 따

[SwiftUI] map, compactMap, tryMap [내부링크]

컴바인 쓰다보면 아주아주 자주 보이는 놈들인데 너무 대충 알고 있는것 같아서 이 참에 제대로 다뤄볼려고 들고 나왔습니다. 기본적으로 다 맵인 놈들이니까 맵을 먼저 알아봐야겠죠? 1. map map(_:) 애플 공식 문서 : https://developer.apple.com/documentation/combine/publishers/breakpoint/map(_:)-3cjxw/ Apple Developer Documentation An unknown error occurred. Apple Developer Documentation Platforms iOS iPadOS macOS tvOS watchOS Tools Swift SwiftUI Swift Playgrounds TestFlight Xcode Xcode Cloud SF Symbols Topics & Technologies Accessibility Accessories App Extensions App Store Audio & V

[Swift] Type Property [내부링크]

NetworkingManager 라는 class 를 만들고 여기다URLSession DataTask 같은 네트워킹 메소드들을 만들어 주면서 아주 자연스럽게 static func 를 써주는 나의 모습을 보고 static func나 static var 같은 애들이 정확하게 어떤 특성을 갖고 있나, 나는 얘네들에 대해서 제대로 알고 있는것인가 라는 생각이 들어서 자문자답중에 아 얘네는 제대로 정리를 해봐놔야겠다 싶어서 글을 씁니다. 느낌적인 느낌만 알고 이거 제대로 해명을 못하겠더군요.ㅠㅠ 이런것들이 잔뜩 있을텐데 앞으로도 하나하나 다 정리해 보도록 하겠습니다. 일단 제가 내놓은 자답은: 인스턴스를 생성할 필요 없이 사용할 수 있는 메소드 or 프로퍼티 였습니다. 메소드도 같은 논리일테니 여기서는 타입프로퍼티에 대해서 다뤄보겠습니다. 이거 하나로도 잘 써먹고 있었으나 앞으로도 자주 쓸텐데 확실하게 알아두는게 좋을 것 같습니다. 그럼 애플 문법 가이드를 살펴보면서 원문의 흐름에 따라 정리해

[iOS] XCode 에서 새 폰트 추가하기 [내부링크]

XCode 에서 새 폰트를 적용 시키는 방법을 한번 살펴봅시다. 일단 폰트를 다운받아야겠죠. 다운받고 이 폰트를 이제 서체관리자 앱으로 확인해봅니다. 여기서 PostScript 이름으로 Xcode 에서 인식하니 폰트파일의 이름이 다른거라면 얘로 바꿔줍시다. 폰트 파일 이름 바꿔주지 않아도 적용할때 PostScript의 이름으로 적어주면 상관 없지만 혼란을 방지하기 위해 저는 바꿔주었습니다. 그리고 엑스코드에다 이 폰트를 넣어줍시다. 이런식으로요. 그럼 이제 엑스코드 들어가셔서 Info 를 눌러봅시다. 요기에다가 우리 폰트를 추가해줍시다. 파일이름 확장자까지 적어줘야합니다. 저는 Item 0에다가 추가했습니다. 이런식으로 적용하면 끝 전 이렇게 적용했습니다만, 더 간단한 방법이 있거나, 틀린점이 있다면 꼭 댓글 부탁드립니다.

[SwiftUI] TextEditor 색 바꾸기 [내부링크]

보통은 앱만들때 다크모드 일때, 라이트모드 일때를 분류해서 색을 나누는게 정석이고 그때그때 기본색상이 달라서 딱히 건들필요 없을수도 있습니다만, 커스텀 색상을 주고싶을때나 저처럼 앱 컨셉이 아주 다크다크한 느낌이라 라이트모드 없이 그냥 다크하게 만들고 싶을때는 색을 바꿔줘야합니다. 그래서 TextEditor 를 쓰려는데 얘 백그라운드가 새하얗게 되있네요. 백그라운드를 변경하려 애써봐도 기본값에 접근할수가 없는지 변하지가 않았습니다. 기본값에 접근하는 키는 역시 UIKit 쪽에 있었습니다. 스유도 결국은 UIKit 애들이 재료인거라 어지간한 해결책은 다 여기있네요. 한줄이면 끝납니다. TextEditor 를 써줄 뷰에다가 요거 한줄 적어주었습니다. 이렇게 UITextView 에 접근하여 기본 배경색을 빼줬습니다. 그런 이후에 다른 뷰 만들때처럼 background(.black) 이런식으로 변경해줬더니 적용되는걸 확인할 수 있었습니다. 추가하기 전 추가한 후 텍스트 에디터부분은 아래코드