cherry-forest의 등록된 링크

 cherry-forest로 등록된 티스토리 포스트 수는 25건입니다.

[Dart] 한글, 영어, 숫자, 특정 특수문자만 포함하는 정규식 [내부링크]

Dart의 정규식은 대체로 다른 언어들과 거의 유사하다. 1. 한글만 포함 r'^[ㄱ-ㅎ가-힣]$' r' 문자열의 시작 ^ 입력 시작 [] 문자의 집합 (-는 문자의 범위) ㄱ-ㅎ ㄱ, ㄴ ,ㄷ... 가-힣 가, 나, 다... $ 입력 끝 2. 영어만 포함 r'^[a-zA-Z]$' a-z a, b, c... A-Z A, B, C... 3. 숫자만 포함 r'^[0-9]$' 0-9 0, 1, 2... 4. 한글, 영어, 숫자, 특수문자(・)만 포함 r'^[ㄱ-ㅎ가-힣a-zA-Z0-9・]$' 5. 글자수 제한 r'^[ㄱ-ㅎ가-힣a-zA-Z0-9・]{1,10}$' {1,10} 최소 1 ~ 최대 10 6. 테스트 해당 사이트는 정규식 결과를 그림으로 보여줘서 이해하기 쉽다. https://regexper.com..

GET, POST 차이 [내부링크]

차이점 결론부터 말하면, GET은 주로 리소스를 조회할때 사용하며 전송할 데이터를 쿼리스트링을 통해 전송하고 멱등이다. POST는 주로 리소스를 생성할 때 사용하며 전송할 데이터를 HTTP 메시지의 Body에 담아 전송하고 멱등이 아니다. GET, POST란? HTTP Method 종류는 총 9가지이며 이 중에서 GET, POST는 자주 사용되는 메소드이다. HTTP Method가 무엇인지 알려면 먼저 REST API에 대해서 알아야 한다. 간단하게 REST API는 HTTP URI로 리소스를 명시하고 HTTP Method를 이용해서 해당 리소스에 대한 CRUD Operation을 적용해서 클라이언트와 서버 사이의 요청과 응답을 처리하는 방식이다. HTTP API와 REST API는 거의 유사한 의미로 ..

GestureDetector에서 전체 행 클릭이 안될 때 (+ InkWell 효과 없애기) [내부링크]

GestureDetector( onTap: () { ... }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '테스트', ), Icon(Icons.chevron_right), ], ), ), GestureDetector 위젯을 사용하면 다음과 같이 클릭 이벤트를 적용할 수 있다. 이 때, row의 text나 icon을 제외한 부분은 클릭할 수 없다. 전체 row를 클릭할 수 있는 첫번째 방법은 behavior: HitTestBehavior.translucent를 추가해주면 된다. GestureDetector( behavior: HitTestBehavior.translucent,// 추가 onTap: () ..

[셀프 상표 등록 3] 개인이 직접 상표권 등록하는 방법 [내부링크]

상표등록 절차는 크게 사전조사 > 출원 > 심사 > 등록 순으로 진행된다. 이전 셀프 상표 등록2 에서는 상표권을 출원하기 전 특허고객번호(출원인코드)를 발급받는 방법에 대해 알아보았고, 이번 셀프 상표 등록3 에서는 상표권을 출원하는 방법에 대해 알아보려고 한다. 상표권 출원하기 1. 로그인 2. 공동인증서로 로그인 3. 신청/체출 > 국내출원 4. 명세서/서식 작성 클릭 5. 웹작성/제출 클릭 6. 상표 > 출원절차서류 7. 상표등록출원서 클릭 8. 팝업창 확인후 '확인' 클릭 9. 필수(*)로 체크되어 있는 부분 작성 먼저 등록대상 입력방법을 '고시 명칭만 입력'으로 선택해주고 등록대상의 추가 버튼을 클릭한다. (참고로 고시 명칭으로만 입력할 경우 수수료를 아낄 수 있다. 고시된 명칭만 포함하면 상..

[셀프 상표 등록 2] 개인이 직접 상표권 등록하는 방법 [내부링크]

상표등록 절차는 크게 사전조사 > 출원 > 심사 > 등록 순으로 진행된다. 이전 셀프 상표 등록1 에서 사전조사를 진행하고 상표권을 조회하는 방법에 대해서 알아보았고, 이번 셀프 상표 등록2 에서는 상표권을 출원하기 전 특허고객번호(출원인코드)를 발급받는 방법에 대해 알아보려고 한다. 특허고객번호 발급받기 1. 특허로 홈페이지 접속 https://www.patent.go.kr/smart/portal/Main.do 특허로 출원부터 등록 까지 편리하게 www.patent.go.kr 2. 특허고객등록 클릭 3. 특허고객등록 클릭 4. 특허로 통합설치 프로그램 다운로드 설치를 완료하려면 사용중인 [Web Browser]를 재실행 해야 한다는 팝업이 뜨면 '예' 버튼 클릭 5. 특허로 홈페이지에 다시 접속해서 설..

[셀프 상표 등록 1] 상표등록 절차 및 상표권 조회하는 방법 [내부링크]

상표등록 절차는 크게 사전조사 > 출원 > 심사 > 등록 순으로 진행된다. 셀프 상표 등록1 에서는 사전조사를 진행하고 상표권을 조회하는 방법에 대해 알아보려고 한다. 1. 사전조사 직접 상표권을 등록하려면 먼저 사전조사가 필요하다. 등록하려는 상표가 선출원 또는 선등록되어 있는지 아래 링크를 통해 확인 가능하다. http://kdtj.kipris.or.kr/kdtj/searchLogina.do?method=loginTM 상표 < SEARCH - KIPRIS 특허정보 검색서비스 kdtj.kipris.or.kr 상표권 조회 해당 링크로 접속하면 상표를 검색할 수 있다. 먼저 등록하려는 상표를 입력하고 돋보기 버튼을 클릭해서 해당 상표가 현재 출원중이거나 등록된 상표인지 확인한다. 두번째로 한글로 구성된 상..

게임용 (롤, 오버워치2) 가성비 데스크탑 맞추기 [내부링크]

동생 게임용 PC를 맞추기 위해 견적을 내보았다. 롤, 오버워치2를 주로 한다고 해서 최저 사양은 아니고 권장 사양보다 조금 더 좋게 구성했다. 이 정도면 왠만한 pc방보다 사양이 좋은 것 같다. 결론부터 말하면 본체, 모니터, 키보드, 마우스, 스피커 풀셋으로 대략 130만원 견적이 나왔고 각각의 구성은 아래와 같다. 본체 견적 100만원대 (나는 여기서 SSD, 케이스 등에서 낮춰서 90만원 정도로 견적을 잡았다.) QHD 해상도에서 플레이하려면 그래픽카드가 RTX 3060 정도는 되어야 할 것 같다. CPU는 인텔 13400이 좋아보이지만 가성비로 AMD 5600X를 선택했다. 메인보드는 AM4 소켓을 지원하는 적당한 것 메모리는 일단 16GB(8*2) SSD는 PCIe4.0을 지원하는 가성비 아무..

[Flutter] 이미지 크기 조절 fit 옵션 (BoxFit) [내부링크]

이미지 크기를 설정할 때 width, height 값을 주면 되고, BoxFit 클래스를 이용하면 설정한 크기 안에서 이미지 크기를 조절할 수 있다. Image.asset( 'test.png', width: 500, height: 250, fit: BoxFit.cover ), Boxfit.fill, Boxfit.contain, Boxfit.cover, Boxfit.fitWidth, Boxfit.fitHeight, Boxfit.none 각각의 차이를 비교해 보면 아래와 같다. 1. Boxfit.fill 설정한 크기에 맞게 비율이 변경되어 채워진다. 2. Boxfit.contain 설정한 크기 이내에서 비율이 변경되지 않고 가능한 한 크게 한다. 3. Boxfit.cover 비율이 변경되지 않고 설정한 크기..

맥북 MS 워드 줄바꿈 단락 엔터 화살표() 없애는 방법 [내부링크]

이러한 줄바꿈 화살표를 없애는 방법은 아래와 같다. 1. 상단메뉴에서 빠른 실행 도구 모음(…) > 기타 명령 클릭 2. 모두 표시 클릭 3. 보기 클릭 4. 인쇄되지 않는 문자 표시에서 단락 표시 체크 해제 (단락 이외에도 모두 표시하고 싶지 않을 때는 모두 체크 해제하면 된다.)

[Flutter] Margin과 Padding의 차이 [내부링크]

차이점 결론부터 말하면, Margin은 위젯 바깥쪽(외부여백)이고 Padding은 위젯 안쪽(내부여백)을 의미한다. Container( color: Colors.amber, width: double.infinity, margin: const EdgeInsets.only(top: 8), padding: const EdgeInsets.symmetric(vertical: 30), child: ... ) EdgeInsets란? 플러터에서는 margin, padding을 줄 때 css, js와 달리 EdgeInsets라는 클래스를 사용한다. EdgeInsets에서 margin과 padding을 주는 방법 EdgeInsets.all(5)// 전채 영역 EdgeInsets.only(top: 5)// 특정 영역 Edg..

[Flutter] No Material widget found 오류 [내부링크]

오류 To introduce a Material widget, you can either directly include one, or use a widget that contains Material itself, such as a Card, Dialog, Drawer, or Scaffold. 해결 Material 위젯을 사용하기 위해서는 상위 트리에 Card, Dialog, Drawer 또는 Scaffold와 같은 Material 자체를 포함하는 위젯을 사용해야 한다. @override Widget build(BuildContext context) { return Scaffold(// 추가 body: SafeArea( ... ) ); }

[Flutter] Flutter 웹에서 URL의 # 제거 [내부링크]

URL에 포함되어있는 #을 제거해보자. 1. pubspec.yaml에 flutter_web_plugins를 추가한다. dependencies: flutter_web_plugins: sdk: flutter 2. main.dart에 userPathUrlStrategy()를 추가한다. void main() { usePathUrlStrategy();// 추가 runApp(const MyApp()); } references https://docs.flutter.dev/development/ui/navigation/url-strategies

크롬 http error 400 오류 해결 [내부링크]

오류가 발생하는 해당 사이트의 쿠키를 삭제해주면 된다. 1. 크롬에서 더보기 > 설정 2. 개인 정보 보호 및 보안 > 쿠키 및 기타 사이트 데이터 삭제 3. 모든 사이트 데이터 및 권한 보기 4. 오류가 발생하는 해당 사이트 검색 > 휴지통 클릭 5. 삭제

위도 경도 찾기(구글 지도에서 찾고 싶은 장소의 좌표 확인하기) [내부링크]

1. 구글지도 열기 2. 찾고싶은 장소 마우스 우측 버튼으로 클릭 3. 이곳이 궁금한가요? 클릭 4. 좌표가 생기면 클릭 5. 좌표 확인 위도: 37.527019 경도: 126.934416

permission denied for sequence 오류 날 때 sequence 권한주기 [내부링크]

시퀀스 조회 # 전체 시퀀스 조회 select * from pg_catalog.pg_sequences; # 특정 시퀀스 현재값 조회 select currval('abc_id_seq'); SQL Error [42501]: ERROR: permission denied for sequence abc_id_seq : 권한이 없는 경우에 나는 오류이며 권한을 주면 된다. SQL Error [55000]: ERROR: currval of sequence "abc_id_seq" is not yet defined in this session : 권한이 있지만 값이 없을 경우에 나는 오류이며 nextval을 실행하면 된다. 시퀀스 권한 주기, 시퀀스 다음값 생성 # 시퀀스 권한 주기 grant usage, select ..

[Flutter] 위젯 사이에 간격 두기 (SizedBox vs Spacer) [내부링크]

SizedBox 1. Row, Column 위젯에서 간격을 만들 때 사용한다. width, height 값을 지정해주는 지정된 크기의 위젯이다. Row( children: [ Text(), // Row에서는 height가 고정되고 Column에서는 width가 고정되므로 하나만 지정하면 된다. SizedBox( width: 20 ), Text(), ], ) 2. Container 등 child 위젯의 크기를 지정할 때 사용한다. SizedBox( width: 200, child: Container(), ) 참고) Container와 SizedBox의 차이 width와 height를 지정하지 않았을 경우, Container는 최대 크기로 확장되며 SizedBox는 child 크기에 맞게 적용된다. Spac..

[Flutter] Flutter에 움직이는 이미지 넣기 (Lottie) [내부링크]

Lottie란 Airbnb에서 개발한 오픈소스 모바일 라이브러리이다. JSON 기반의 애니메이션 파일로 gif 같은 다른 형식에 비해 가볍고 벡터 기반이라 확대 축소에 따른 해상도 저하가 없다. IOS, 안드로이드, 웹, React Native 같은 다양한 플랫폼을 지원한다. Flutter에 적용 1. https://lottiefiles.com/ 에서 원하는 이미지를 찾아서 저장한다. Discover > Free Ready-to-use Animations에서 무료 이미지를 찾을 수 있다. 2. 원하는 이미지를 JSON 파일로 다운로드한다. 3. 다운로드 받은 JSON 파일을 assets 디렉토리에 넣어준다. 4. pubspec.yaml에 assets 디렉토리 등록 flutter: assets: - ass..

리눅스 디렉토리 구조 [내부링크]

디렉토리 구조 리눅스는 유닉스 계열을 바탕으로 만들어진 오픈소스 운영체제이고 유닉스와 마찬가지로 모든 것을 파일로 관리한다. 디렉토리 구조를 활용해 파일들을 관리하고 이 위치에 따라 파일들을 참조하여 시스템을 동작시킨다. / / 모든 디렉토리의 최상위 디렉토리 (루트 디렉토리) /bin, /sbin 둘 다 바이너리 파일로 컴파일된 실행 파일들을 포함하고 있다. /bin 리눅스를 사용할 때 자주 사용하는 기본적인 명령어가 저장된 디렉토리 (cd, ls, mv, rm 등) /sbin 주로 시스템이 사용하는 시스템 관리자용 명령어를 저장하고 있는 디렉토리 (sysctl 등) /home, /root /home 개별 사용자의 디렉토리를 관리하는 디렉토리 (예를들어 새로운 사용자 user1을 생성하면 /home/u..

서버 접속 안될 때 port, 방화벽 확인 [내부링크]

예를 들어, http://1.1.1.1:8080 에 접속이 안된다고 하자. 1. 먼저 서버에서 8080 포트가 열려있는지 확인해야 한다. 해당 포트가 LISTEN 상태인데 연결이 되지 않으면 방화벽을 확인해야 한다. > netstat -nap | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN - 2. 이제 로컬에서 연결되는지 확인해본다. ❯ nc -vz 1.1.1.1 8080 # 연결 성공시 Connection to 1.1.1.1 port 8080 [tcp/cbt] succeeded! # 연결 실패시 nc: connectx to 1.1.1.1 port 8080 (tcp) failed: Connection refused 3. 방화벽을 확인하고 열어준다. > sudo ..

ps -ef | grep, ps -aux | grep 차이 [내부링크]

1. ps(Process Status) 현재 실행중인 프로세스 목록과 상태를 보여준다. ps 옵션은 OS 계열에 따라 다르게 사용한다. System V 계열에서는 -를 사용하고 BSD 계열을 -를 사용하지 않는다. System V 계열 ps -ef | grep [찾고싶은 프로세스] [ ps 옵션 ] -e 모든 프로세스 출력 -f 프로세스의 다양한 정보 출력 프로세스 소유자(UID), 프로세스 식별자(PID), 부모 PID(PPID) 등 BSD 계열 ps aux | grep [찾고싶은 프로세스] [ ps 옵션 ] a 터미널에 연관된 프로세스 출력 u 프로세스의 사용자/소유자, 프로세스가 사용하는 CPU 양(%CPU), 프로세스가 사용하는 메모리 양(%MEM),가상 메모리 사용량(VSZ), 실제 메모리 크기..

vi 한줄 복사 [내부링크]

1. 한줄 복사 복사하고 싶은 위치로 커서 이동 > yy 2. 현재 위치 아래에 붙여넣기 붙여넣고 싶은 위치로 커서 이동 > 소문자 p 3. 현재 위치 위에 붙여넣기 붙여넣고 싶은 위치로 커서 이동 > 대문자 p

PostgreSQL db, schema, user, role 생성 [내부링크]

PostgreSQL을 설치하면 default user로 postgres가 생성되며 superuser 권한을 가진다. 여기에 database를 생성하면 default schema로 public schema가 생성되며 모든 user가 객체를 생성할 수 있다. 따라서 user가 public schema에서 객체를 생성할 수 없도록 하고 신규 database와 schema를 생성해보자. # public schema revoke revoke all privileges on schema public FROM public; # user 생성 create user {user} with password '{password}'; # db 생성 create database {database} owner {user}; # d..

[Flutter] 화면전환 Navigator Push, Navigator Pop [내부링크]

플러터에서는 화면에서 다른 화면으로 이동할 때 Navigator를 사용한다. 이 때 push, pop 메소드를 사용해서 화면을 이동하는데 stack 자료구조에 대한 간단한 이해가 필요하다. stack이란 자료를 쌓아올리는 것을 말하며, 자료를 넣는 것을 push, 자료를 꺼내는 것을 pop이라고 한다. 꺼내지는 순서는 가장 최근에 push한 자료부터이며 이처럼 가장 나중에 넣은 값이 먼저 나오는 것을 LIFO(Last In First Out)이라고 한다. Navigator의 push 메소드를 사용해서 메인 페이지 -> 상세 페이지 -> 결제 페이지 순으로 이동했다면, pop 메소드를 사용해서 결제 페이지 -> 상세 페이지 -> 메인 페이지로 돌아올 수 있는 것이다. 1. Navigator.Push() P..

[Flutter] SingleChildScrollView안에 ListView 스크롤 막기 [내부링크]

SingleChildScrollView와 ListView를 같이 사용하면 스크롤 기능이 충돌해 오류가 발생한다. 이를 해결하기 위해서는 ListView의 스크롤을 비활성화해주면 된다. SingleChildScrollView( child: ListView( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), ) ) - shrinkWrap: true - ListView가 전체 화면이 아닌 필요한 공간만 차지하도록 한다. - physics: NeverScrollableScrollPhysics() - ListView의 스크롤 기능을 비활성화한다. references https://api.flutter.dev/flutter/widgets/ListView-cla..

Spring Cloud Config - 1 [내부링크]

목차 더보기 1. 이론 2. 설정 - Config 서버 생성 - Config server가 사용할 저장소 구현 이론 중앙화 된 설정 서버 Spring Cloud Config는 분산 시스템에서 환경설정을 외부로 분리하여 관리할 수 있는 기능을 제공한다. Config Server를 사용하여 모든 환경(개발, 테스트, 프로덕션 등)에 대한 어플리케이션들의 속성을 한 곳에서 관리할 수 있다. 장점 설정 관리의 용이성 운영중에 서버 빌드 및 배포 없이 환경설정 변경 가능 설정 1. Config 서버 생성 1) Config Server Dependency 추가하여 새로운 스트링부트 프로젝트 생성 actuator dependency 추가 (actuator는 서버 구동 테스트용으로 사용 후 삭제) dependencie..