본문 바로가기

Programming

(135)
[iOS 개발팁] UITextView에 placeholder 추가하기 텍스트 입력할 수 있는 UITextView, UITextField를 사용하다보면, "제목을 입력해주세요", "내용을 입력해주세요" 등의 placeholder 값을 넣을 경우가 많습니다. 기본적으로 UITextField에서는 placeholder 프로퍼티를 제공하지만, UITextView에서는 placeholder 제공하지 않지 않습니다. 내용과 같은 많은 텍스트를 입력해야하는 경우에는 UITextViewDelegate를 사용하여, 텍스트를 입력받기전, 입력받은 후에 "내용을 입력해주세요" 텍스트를 넣어주었다가, 지워주어야합니다. 굉장히 불편한데요, UITextView를 상속받아 클래스를 만들고, placeholder 와 같은 기능을 구현하여 이용하면 편리합니다. 먼저, UITextView를 상속받은 클래..
[iOS 개발팁] 스토리보드 분리하기 iOS를 개발 시 Storyboard는 UI를 만들수 있는 편리한 도구 입니다. 하지만, 프로젝트가 커가면서, Storyboard에 UI를 계속 추가하다보면, 너무 많은 UI 때문에 Storyboard 로드가 느려집니다. 이를 방지하기 위해, Storyboard를 추가로 만들고 사용하는 팁을 알려드립니다. 우선 아래는 플랫폼사업팀에서 진행하는 아이프렌즈펫의 Main.Storyboard의 UI 들입니다. 현재 20개 이상의 화면이 Main.Storyboard에서 사용중이여서, 로드가 오래걸려서 짜증이 납니다. 플랫폼사업팀에서 진행중인 아이프렌즈펫 앱의 스토리보드 이번 아이프렌즈펫 1.9.0 버전, 스프린트에서는 "소모임" 이라는 기능을 추가하기 위해 기존 Main.Stroyboard 에 아래의 ViewCo..
[Angular] 모델, 값이 바뀌었는데 화면 template 이 업데이트 되지 않을 때 조치 팁 안녕하세요. 명동섞어찌개입니다. Angular 로 화면을 만들다 보면 종종 서버에서 값을 읽어와서 비동기로 화면이 업데이트 되는 상황에서, 화면에 바뀐 값이 반영되지 않는 경우가 생깁니다. 분명 ts (typescript) 의 값은 바뀌었고, 서버에도 문제가 없는데 html template 화면만 값이 제대로 표시되지 않는 경우가 있습니다. 이럴 때 사용할 수 있는 간단한 방법을 공유하려고 합니다. 1. ngIf = "flag == true" 를 씁니다.data.html 1 2 3 4 5 {{item}} data.ts 1 2 3 4 5 6 7 8 9 10 11 12 13 14data = null; . . . getData() { this.dataService.getDatas().subscribe( dat..
[Angular] history back 기능 구현 : 상세 화면 뒤로가기하여 목록 화면으로 이동 시 검색조건 그대로 보여주기 안녕하세요, 명동섞어찌개입니다. 오늘은 관리자 화면에서 검색 조건을 선택해서 검색 후, 필터링 된 결과물 상세보기를 한 다음 뒤로 돌아갔을 때 기존 검색조건이 그대로 남아있도록 하는 방법에 대해 알아보겠습니다. 말로 하니까 어려운데요;; 아래 화면을 보시면 !! 저 빨간 박스 부분에서 검색 조건을 선택하고, 아래에 필터링 된 결과물 목록 중 하나를 클릭해서 상세 페이지로 갔다가, 다시 목록 페이지로 돌아오면 기존에 선택한 검색 결과가 저장되지 않고 사라지는데요. 그걸 보존하는(?!) 방법을 알아보겠습니다. 구현 방법은.. 저같은 초짜는 localStorage 를 쓸까 cookie 를 쓸까 (.....;;;;) 별 생각을 다 하지만 가장 간단하고 흔하고 안전한 방법은 route 를 이용하는 겁니다 주소창에..
[Spring Boot] REST API 문서를 Swagger로 관리하기 안녕하세요 명동역 델리만쥬입니다~! 실무에서 REST API를 개발할때면 API 관련 문서를 만들어야 합니다. API의 요청, 반환 값이 변경되거나 주소 및 API 속성이 변경되었을시에 문서를 일일이 업데이트를 해줘야 하는 번거로움이 존재합니다. 이번 포스팅에서는 API관련 명세를 만들어주는 Swagger를 써보려고 합니다!~ 기본 베이스 ( Spring Boot, Spring MVC, AOP, Gradle을 적용한 REST API 설계 구조 ) 위의 가정 아래 시작하겠습니다! build.gradle에 아래와 같은 설정을 해줍니다. compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'compile("io.springfo..
[Spring Boot] JPA Auditing 으로 생성/변경일시 관리하기 안녕하세요. 남산돈가스입니다. 오늘은 Spring Boot + JPA 환경에서 Auditing을 이용하여 생성/변경일시를 관리하는 법에 대해 포스팅하겠습니다. 일반적으로 테이블을 설계할 때, 거의 필수적으로 관리되는 컬럼들이 있습니다. 대표적인 예로 생성일시, 변경일시 등이 있을 것이고, 또 최종 변경자, 최초 생성자도 있을 수 있겠네요. JPA환경에서 Entity들을 관리할 때, 이 모든 Entity에서 위에서 언급한 컬럼들을 일일이 관리하기엔 번거로움이 있을 것 같습니다. 또한, 코드 레벨에서 이 데이터들의 값을 관리하기는 더 어려운 일이 아닐 수 없겠죠. 이런 불편함들을 해소하고자(?) 혹은 Spring Data JPA가 아닌 다른 프레임워크 환경에서의 ORM에서 기본적으로 제공되던 것(ex. Se..
[Angular] HTTPInterceptor 를 이용하여 파일 업로드 중지하기 안녕하세요. 명동섞어찌개입니다. 오늘은 Angular 에서 파일 업로드 기능 개발 시, 원하는 시점에 파일 업로드를 중지하는 기능에 대해 알아보도록 하겠습니다. 요점은 페이지 이동이나 파일 업로드 취소 버튼을 누르는 순간, HTTPIntercepter 를 이용하여 서버에 보내는 요청을 취소하여 파일 업로드를 중지하는 기능을 만드는 겁니다! 1. HttpCancelService 를 만듭니다실질적으로 http 요청을 취소하는 부분입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; @Injectable() export class HttpCan..
[Spring Boot] Pageable 커스터마이징하기 안녕하세요. 남산돈가스입니다. 지난 포스팅 [Spring Boot] JPA + Pageable 을 이용한 페이징 처리 에서 마지막 Pageable 커스터마이징에 대한 언급을 했었는데, 이번 포스팅에서 그 내용을 다루어 보려고 합니다. 일반적으로, Pageable을 파라미터로 Controller를 구현하면 Request Parameter 를 통하여 Handling 할 수 있는 파라미터는 기본적으로 page, size, sort 이렇게 세 가지 입니다. page : 조회할 페이지 번호 (default : 0)size : 한 페이지 당 조회 갯 수 (default : 20)sort : 정렬 기준 (정렬할 기준컬럼,ASC|DESC)위와 같은 기본 설정을 가지고 Pageable 객체를 Handling 할 수 있습..