▼ 스위프트 UI를 사용할 때 이미지를 가져와 사이즈를 화면에 맞게 조절하고 원 모양의 이미지를 만드는 방법을 알아보겠습니다. 이미지를 사용하는 방법은 아주 간단한데 사용하는 패턴은 여러가지가 될 수 있으니 알아두는게 좋습니다. 우선 예제를 실행하기 전에 Assets 폴더에 img 라고 아무 이미지나 하나 넣어줍니다. ▼ 다음과 같이 VStack을 하나 만들고 그 안에 Image를 하나 새로 만들어줍니다. 보는 것과 같이 이미지가 화면이 꽉찬 것을 볼 수 있습니다. 기본으로 이미지를 추가하게 되면 높이를 기준으로 좌우가 넓게 표현됩니다. ▼ 이번에는 .resizable() 을 추가해서 화면을 폭에 맞추어보겠습니다. 화면이 아래위로 꽉차서 비율이 깨지는 것을 볼 수 있습니다. ▼ 이제 .aspectRati..
아이폰 앱을 만들면 무한 스크롤을 구현해야 하는 경우가 있습니다. 주로 서버에서 보내온 데이터가 페이징 처리가 되있는 경우에 무한 스크롤을 구현합니다. 더보기 버튼을 만들어서 구현할 수 도 있지만 더 보기 버튼 보다는 무한 스크롤로 테이블 뷰를 구현하는 것이 더 자연스럽습니다. 지금 부터 무한 스크롤을 위해서 필요한 것들과 방법에 대해서 알아보겠습니다. ViewModel 코드 (데이터 정의) ▼ 우선 통신하는 부분을 보겠습니다. 코드가 길어서 복잡해보이겠지만 단순합니다. totalPage, currentPage, isLoading 변수를 선언해줍니다. 데이터 통신이 끝나면 테이블 뷰 데이터에 기존 데이터를 포함해서 appendData를 해줍니다. 또한 통신이 시작하기 전에 isLoading 값을 true..
스위프트의 동적 멀티플라이어 오토레이아웃을 사용하다보면 동적으로 멀티플라이어 값을 동적으로 바꿔야 할 경우가 있습니다. 특히나 iPad iPhone을 동시에 개발 할 때 필요합니다. 해당 비율을 동적으로 주기 위해서는 NSLayoutConstraint에 multiplier를 적용해주면 되지만 몇 가지 생각해야 하는 것이 있습니다. 다음과 같이 Constraint를 removeConstraint로 삭제한 뒤에 다시 addConstraint를 이용해 추가해줘야 합니다. 또한 새로 화면을 업데이트 하기 위해서 layoutIfNeeded 함수를 호출해줘야 합니다. ▼ 우선 다음과 같이 extension을 사용해 constraintWithMultiplier라는 함수를 만들어줍니다. 내부적으로 하는 일은 그냥 새로..
JPA를 사용하면서 JQPL 로 쿼리를 작성했는데 다음과 같은 에러 문제를 겪었습니다. GROUP BY 명령을 실행할 때 MySQL 5.7 이상 버전 부터는 sql_mode 옵션을 변경해줘야 합니다. GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 오래된 데이터베이스에서는 문제없이 동작하는 코드 였는데 새로운 MySQL 을 도커로 설치하고 실행하니 문제가 되어서 찾아보았습니다. only_full_group_by 옵션을 비활성화 하는 방법은 다음과 같습니다. 관리자 권한으로 로그인 한뒤에 mysql 에서 다음과 같이 입력해서 only_full_group_by 옵션을 꺼주면 됩니다. 참고로 MySQL 뿐만아니라 MariaDB에서도..
Oh-my-zsh 설치하기 https://ohmyz.sh/ Oh My Zsh - a delightful & open source framework for Zsh Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with several helpful functions, helpers, plugins, themes, and a few things that make you shout... OH MY ZSH! ohmyz.sh 다음 스크립트를 복사해서 터미널에 붙여넣기 합니다. ▼ 다음과 같은 화면이 보인다면 설치가 완료되었다는 뜻 입니다. ▼ 다음..
Homebrew Homebrew는 macOS 에서 지원하지 않는 프로그램들을 설치할 수 있는 패키지 관리자 중에 하나입니다. 리눅스에서 apt 나 yum 같은 역할을 합니다. 하지만 맥은 대부분의 필수 유틸리티는 기본적으로 설치되어 있거나 Appstore에서 다운로드하기 때문에 개발자와 같은 특수한 경우를 제외하고는 잘 설치하지 않습니다. 기존 인텔 CPU 맥에서는 아무런 문제가 없었지만 M1 맥 출시 이후에 homebrew를 설치하다 보면 문제가 생깁니다. brew 명령어가 실행되지 않는 문제가 있는데 homebrew를 설치하고 나서 나오는 메시지를 참고해서 수정 가능합니다. https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS..
▼ 우선 도커 명령어를 사용해서 다음과 같이 NginX 이미지를 다운로드 합니다. ▼ 이미지를 다운로드 받았다면 다음과 같이 새로운 컨테이너를 생성합니다. --name : 실행할 컨테이너의 이름을 입력합니다. -d : 백그라운드로 실행합니다. -p : 포트를 설정합니다. (내부는 80으로 지정하고 외부는 8080으로 지정합니다.) ▼ 컨테이너 상태를 확인하기 위해서 컨테이너 내부로 들어갑니다. ▼ nginx -v 명령을 통해서 버전을 확입합니다. ▼ ps 명령을 사용해서 nginx의 상태를 확인해야 하지만 해당 명령이 없을 경우 apt-get 명령을 통해서 procps 를 설치합니다. ▼ procps 가 설치되었다면 다음과 같이 ps 명령을 이용해서 nginx의 상태를 확인합니다. grep 명령으로 프로..
스프링 부트 도커 파일 설정 ▼ 최상위 경로에 다음과 같이 docker 파일을 만들어줍니다. EXPOSE에 원하는 포트를 입력합니다. FROM - JDK를 설정합니다. ENV - 환경변수 설정를 설정합니다. WORKDIR - 환경변수를 경로로 지정합니다. COPY - 빌드된 jar 파일을 application.jar의 파일명으로 복사합니다. EXPOSE - 실행될 포트를 설정합니다. CMD - 명령어 옵션을 입력합니다. 빌드 및 컨테이너 실행 ▼ 프로젝트를 빌드하기 전에 gradlew 파일을 실행 가능하도록 권한을 변경합니다. ▼ gradlew를 이용해서 프로젝트를 빌드합니다. -x 옵션으로 test 프로젝트는 빌드하지 않습니다. ▼ 도커 이미지 생성을 위해서 빌드를 합니다. 임의로 my라는 이름을 주었..
평소에 소스 머지를 위해서 소스트리나 깃허브의 Github Desktop으로 작업을 합니다. Git에 특화되어 있고 인텔리제이에 비해서 다양한 언어로 된 IDE를 독립적으로 관리할 수 있기 때문이죠. 하지만 최근에 인텔리제이로 작업을 많이 하게 되면서 그런 툴들을 쓰는 것도 귀찮고 해서 직접 인텔리제이에서 머지(merge) 작업을 하는 방법을 알아보았습니다. 매우 간단하고 편리합니다. 인텔리제이 Merge Branch ▼ 메뉴바에서 Git 메뉴를 선택하고 하위 메뉴중에 Merge...를 선택합니다. ▼ 머지할 대상 브랜치를 선택합니다. (현재 브랜치는 master) ▼ 다양한 옵션을 선택할 수 있습니다. --no-ff : fast-foward 관계라 하더라도 강제로 merge commit을 생성하고 병합..
포스트맨을 사용하다보면 다음과 같은 에러가 뜰 수 있습니다. "Could not send request" CORS Error: The request has been blocked because of the CORS policy 이때 옆에 보면 Use Postman's Desktop Agent 라는 버튼을 볼 수 있는데요. 이 버튼을 눌르면 Desktop Agent 를 사용해서 CORS 문제를 해결할 수 있습니다. 단 Desktop Agent 를 설치해야 하는데요. 설치 방법은 간단합니다. 포스트맨 CORS 에러 한 가지 주의하실 점은 포스트맵 데스크탑용 프로그램이 아닌 에이전트라는 점 입니다. 포스트맨은 데스크탑용 어플리케이션을 사용하거나 웹 브라우저를 통해서 사용할 수 있는데요. 웹 브라이저에서 사용중..
코드 스니핏(Code Snippet) Snippet은 작은 조각이란 뜻으로 보통 프로그래밍 개발 시 미리 작성해 놓은 다양한 단축 구문을 모아놓은 템플릿이라고 할 수 있습니다. 이미 맥에도 유료나 무료의 다양한 Code Snippet 툴들이 존재합니다. 하지만 오늘 알아볼 Xcode의 Snippet은 기본 제공되며 체계적으로 코드를 저장한다면 강력한 개발 도구가 될 수 있을 것 같습니다. ▼ 단축키는 Command + Shift + L 입니다. 보통 스토리보드나 XIB에서 해당 단축키를 누르면 이미지 라이브러리가 노출됩니다. 일반 코드를 보고 있다가 단축키를 누르면 Snippet 라이브러리가 노출됩니다. ▼ 만약 다음과 같이 av라고 검색하면 API 버전을 체크하는 구문을 검색할 수 있습니다. 오른쪽 하..
오늘은 아이폰의 기본 중에 기본인 컬렉션 뷰를 사용하는 방법을 알아보겠습니다. 사실 예전에는 테이블 뷰를 많이 사용했습니다만, 현재는 테이블 뷰 보다는 컬렉션 뷰를 더 많이 사용하죠. 하지만 그냥 일반적인 리스트 화면을 만들때는 컬렉션 뷰 보다는 테이블 뷰가 간편할 때가 많습니다. 그 이유는 테이블 뷰를 사용하면 ColleciontView와 달리 FlowLayout 델리게이터 없이 편리하게 리스트를 구현할 수 있기 때문이죠. 오늘은 처음 컬렉션 뷰를 사용해서 아주 기본적인 레이아웃 설정을 하는 방법을 알아보겠습니다. 디자인 설정 ▼ 스토리보드에 UICollectionView를 드래그해서 올리고 오토레이아웃을 좌우상하단에 걸어줍니다. 그리고 delegate, dataSource를 뷰 컨트롤러에 연결해주면 ..