목록분류 전체보기 (393)
나의 발자취

contextMenu는 iOS에서 3D Touch나 길게 눌렀을 때 나타나는 팝업 메뉴다. 사진을 3d 터치로 눌러서 신고하기 버튼을 누른다고 할 때 나타나는 바로 여기다. 내 앱은이미지를 길게 누르거나 3D Touch하면"신고하기" 옵션이 포함된 메뉴가 팝업으로 나타나고그 메뉴에서 "신고하기"를 선택하면 ReportView가 표시되는 구조이다. 문제 상황현재 ChallengeImagesGrid.swift에서 '신고하기'를 누르면 아래와 같이 바로 접수 화면으로 넘어가야하는데, 로딩이 오래걸리는지 뭔지 흰 화면만 뜨는것이다. 지금 상황은 contextMenu 안에서 showReportView.toggle()을 호출그리고 별도의 .sheet modifier에서 ReportView를 표시이 구조에서 ..

generateTestData를 만들어주고 이미지를 랜덤으로 가져오도록 했다.그리고 미안하지만 user id 1은 희생양이 되었다. 하루에 하나의 사진만 업로드가 가능하므로, 벌크 업로드를 위해 createdAt을 오늘 날짜랑 겹치지 않게 바꾸어주었다. 그리고 일단 테스트를 위해 챌린지 id = 11에다가 넣어주었다. 마지막으로, 터미널에서 파일을 실행해준다. 그럼 아래와 같이
스위프트를 하면서 심심찮게 \.self 나 \.dismiss를 볼 수 있다. 이는 KeyPath인데, KeyPath는 타입의 특정 속성을 참조하는 방법입니다. 쉽게 말해서 "경로"를 나타내는 것 예시는 이렇다.struct Person { let name: String let age: Int}let people = [ Person(name: "Kim", age: 25), Person(name: "Lee", age: 30), Person(name: "Park", age: 35)]// 1. KeyPath 사용let names = people.map(\.name) // ["Kim", "Lee", "Park"]// 위 코드는 아래와 동일:// let names = people.map ..
// 2-1. 챌린지 이미지 조회 APIconst getChallengeImages = async (req, res) => { const { challengeId } = req.params; const { page = 1, limit = 20 } = req.query; // 페이지네이션 적용 try { const images = await ChallengeImage.findAndCountAll({ where: { challenge_id: challengeId }, include: [{ model: User, attributes: ["nickname", "profile_picture"] }], order: [["createdAt", ..

일단, 연습용 빈 레포지토리를 만든다. 그리고 이전에 만든 guestbook을 push 해준다. 애져 포탈에 들어와서 App Services > 웹 앱을 새로 만들어준다. Application Insights 적용 안함 이제 깃에 있는 소스코드가 애져에 배포가 될 것이다.로컬에서 개발을 하고 push를 하게 되면, 자동으로 push event를 받아서 빌드하고 배포를 하는 자동화를 실행해줄것이다.자동화의 경우 .yml 파일로 하는데, 이 파일은 Github Action에서 생성해서 주게 된다. 배포 슬롯 생성을 해준다. 배포 센터에 간다. 소스에서 Github를 선택한다.로그인을 해준다. 기본 인증을 선택해준다. 그러면 이렇게 빨간 알림창이 뜰것이다. 클릭해서 들어가면, '구성'으로 오..

이렇게 "status"값이 저장된다. 실제 DB를 확인해보면 이 모든게 공백까지 포함해서 다 ... 저장된다. 보니까 status의 타입이 CHAR(1)로 저장되어서 발생하는 문제였다.따라서 아래와 같이 고쳐줬다. 그런데 이렇게 해도 에러가 났다. 시퀄라이저는 바차를 지원하지 않기 때문에.. 이렇게 바꾸어주었다. 잘 된다그리고선 마이그레이션을 지우고 다시 실행...1. CHAR(1)특징:고정 길이 문자열을 저장데이터 길이가 필드의 정의된 길이보다 짧으면 **빈칸(공백)**으로 채워 저장예를 들어, CHAR(1) 필드에 "A"를 저장하면 길이가 1이므로 그대로 저장됩니다. 하지만, CHAR(5)에 "A"를 저장하면 "A "로 공백이 추가됨장점:고정 길이로 저장하므로 조회 성능이 약간 더 좋다. (주로..

지난 프로젝트에 이어서2024.11.21 - [분류 전체보기] - [SwiftUI] Notification 기능 구현하기 [SwiftUI] Notification 기능 구현하기지난 포스팅2024.11.21 - [앱 개발/iOS] - [UIKit] Notification 기능 구현하기 [UIKit] Notification 기능 구현하기이번에는 UIKit을 이용해서 Noti를 만들어볼것이다.AppDelegate는 app lifecycle 전체를 관리하는 파일이wildguess.tistory.com didRegister...을 만들어준다. 그리고 이 안에는 아까 UIKit의 내용을 붙여넣는다. func application(_ application: UIApplication, didRegisterFo..