회사 프로젝트 진행중 특이한 기능을 추가 하기로 했어요. 사진을 찍어서 특정 영역을 크롭 하는 기능을 추가 하는 것인데, 현재 진행중인 프로젝트는 Flutter 로 만들고 있었는데 Flutter 라이브러리를 아무리 뒤져봐도 최신 업데이트를 주기적으로 하는 Flutter 라이브러리가 보이지 않아 직접 native에 라이브러리를 추가 하여 Flutter로 읽어 오려 해요. 해당 문서는 Flutter 프로젝트에서 Android native 에 opencv 를 설치 하기 위한 문서에요 이제 시작 할게요. 1. 먼저 opencv를 다운 받아야 해요 아래 Github 에서 최신 releases 버전을 다운 받아 주세요. 저는 안드로이드 native에서 사용할 것이기 때문에 opencv-4.7.0-android-sd..
객체를 테이블에 맞추어 데이터 중심으로 모델링 하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. - 객체는 참조를 사용해서 연관된 객체를 찾는다. - 테이블과 객체 사이에는 이런 큰 간격이 있다. 단방향 연관관계 객체 지향 모델링 (객체 연관관계 사용) 객체 지향 모델링 (객체의 참조와 테이블의 외래 키를 매핑 ) @Entity public class Member { private Long id; @Column(name = "USERNAME") private String name; private int age; @Column(name = "TEAM_ID") private Long teamId; @ManyToOne @JoinColumn(name = "TEA..
@Entity - @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. - JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 주의 - 기본 생성자 필수 - final 클래스, enum, interface, inner 클래스 사용 x - 저장할 필드에 final 사용 x 데이터베이스 스키마 자동 생성 개발단계에서 Application 로딩 시점에 테이블 생성 기능이 있음 - DDL(Data Definition Language)을 어플리케이션 실행 시점에 자동 생성 - 테이블 중심 -> 객체중심 - 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 - 이렇게 생성된 DDL은 개발 장비에서만 사용 - 생성된 DDL은 웅영서버에서는 사용하지 않거나, 적절히 다담은 후에 사..
- JPA 를 이해하는데 가장 중요한 용어 - "엔티티를 영구 저장하는 환경" 이라는 뜻 - EntityManger.persist(entity) 엔티티의 생명주기 - 비영속 객체를 생성한 상태 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Member member = new Member(); member.setId("memberA"); member.setName("soycrab"); //객체를 저장한 상태(영속성 Context에 저장) ..
맥에서 종종 특정 파일을 터미널에서 실행시키려 할때 터미널을 열어 해당 폴더를 찾아가는 불편한 방식을 이용해요. 물론 여러가지 편한 방식도 있지만, 제가 사용하는 openinterminal 프로그램을 소개해 드릴게요. 아래처럼 파인더의 메뉴를 통해 바로 해당 파인더 위치에서 터미널을 열수 있어요!! 자 그럼 설치하로 가볼게요!! 설치 방법은 아주 간단해요. 아래 명령어를 터미널에 입력하고 기다리면 프로그램이 설치가 돼요. brew 명령어가 동작을 안한다면, 따로 brew 설치를 하고 다시 명령어를 입력해 주세요. brew install --cask openinterminal 설치가 완료되면 launchpad 에 openinterminal이 보일거에요 이걸 실행 시켜주세요. 마지막으로 1. 시스템설정 ->..
스프링 실습 도중 H2를 설치할 일이 생겨 메모를 해두어요. 먼저 아래 사이트에 접속하여 그림 1에 보이는 Download 에서 자신의 OS 에 맞는 설치 프로그램을 다운 받아요. https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar f..
오늘 살펴볼 라이브러리는 table_calendar 에요. 프로젝트를 진행하면서 캘린더를 커스텀해서 사용할 일이 생겼는데, 생각보다 기능이 다양해서 정리를 해두려해요. 자세한 정보는 아래 사이트에 들어가셔서 확인 가능해요 https://pub.dev/packages/table_calendar table_calendar | Flutter Package Highly customizable, feature-packed calendar widget for Flutter. pub.dev 라이브러리 추가를 해줘요. pubspec.yaml table_calendar: ^3.0.9 weekNumbersVisible: true, 아래 그림에 빨간색 원에 안에 숫자를 보여줄지 설정하는 변수에요 해당 연도에 몇주차 인지 표..
setState()는 StatefulWidget 에서 특정 오브젝트의 상태(값)를 변경하기 위해 사용하는 메소드에요 . 근데 이번에 showModalBottomSheet에서 요일을 선택하는 기능을 가진 화면을 작업하다가 setState 를 통해 상태 변경을 호출해도 화면이 변경되지 않는 현상을 발견했어요. 아래는 문제의 코드에요 showModalBottomSheet( context: context, builder: (context) { return Container( height: heightOfModalBottomSheet, child: RaisedButton(onPressed: () { setState(() { heightOfModalBottomSheet += 10; }); }), ); }); 아래는..
플러터로 개발을 하던중 서버쪽에서 알림에 이모지를 보여주고 싶다는 요청이 들어왔어요. 그와 동시에 알림 리스트 에 unicode 를 넣어서 내려 보내주기 시작했어요. 플러터 Text Widget 에서 유니코드 문자를 사용하려면 아래와 같은 형식으로 사용을 해야지만, Text("Is test. \u{1f60e}"} 클라이언트 개발자와 어떠한 협의도 없이 아래처럼 String 데이터를 내려 주는거에요........ U+1F389 나는 U+1F389 프로그래머에요 당연히 Flutter 에서는 지원하지 않는 형식이므로 원하는 형태로 보이지 않았고, 결국 유니코드 캐릭터가 포함된 값을 찾아서 플러터에서 인식할 수 있는 형태로 바꿔주는 방식을 직접 구현하게 되었어요. String unicodeContainStrin..