전체 글 260

[Flutter] 로딩 위젯(ProgressIndicator)

Flutter에는 로딩 시 사용하는 위젯이 두 개 존재한다. 1. LinearProgressIndicator(추후 업데이트 예정) 2. CircularProgressIndicator LinearProgressIndicator, CircularProgressIndicator 모두 background와 valueColor라는 색상 매개변수를 제공한다. - backgroundColor: 위젯의 배경 색상을 의미한다. 기본적으로 셋팅된 동그라미 형태에 색을 지정하는 것이다. - valueColor: 애니메이션으로 움직이는 부분의 색상을 의미한다. 색상이 애니메이션이 되어야 하기에 AlwaysStoppedAnimation이라는 클래스에 감싸서 색상을 제공해야한다. (직접 구현하니 color을 지정해도 잘 동작한다..

Flutter/UI Widget 2023.03.27

[Flutter] 하드웨어(주변장치) 플러그인 종류

여러 플러그인 중 하드웨어를 다루는 플러그인은 크게 5가지가 존재합니다. 종류는 다음과 같다. 다음 포스팅에서 사용 방법에 대한 설명을 포스팅할 예정입니다. 1. 움직임을 측정하는 센서 ( plugin: sensors_plus ) - Accelerometer: 핸드폰의 움직이는 속도 측정 - Gyroscope: 핸드폰의 회전을 측정 - Magnetometer: 자기장을 측정 2. GPS ( plugin: geolocator ) - 위치 서비스 기능 - GPS 권한 관리 - 핸드폰 위치 업데이트 받기 - 위도 경도를 기반으로 거리 계산 3. 카메라 ( plugin: camera ) - 카메라 권한 관리 - 카메라가 찍는 화면 렌더링 4. 블루투스 ( plugin: flutter_blue ) - 주변 블루투..

[Flutter] 기본 위젯 알아보기

Flutter는 선언형 UI를 갖는다. 'Everthing is a Widget' 구글에서 플러터를 소개하는 문구입니다. 플러터에서 화면에 보여지는 UI와 관련된 모든 요소는 위젯으로 구성되어 있습니다. 위젯은 현재 주어진 상태를 기반으로 어떤 UI를 구현할지를 정의합니다. 즉, 플러터는 선언형 UI로 구성되어 있습니다. 명령형 UI 와 다르게 선언형 UI의 경우 View를 실행 중 생성하지 않습니다. 처음 생성된(선언한) UI에 대하여 값에 따른 변화를 주는 방식으로 구성되어 있습니다. 그래서 값에 따른 변화로 인해 View의 오버헤드를 신경쓰지 않아도 되니 생산성이 올라갑니다. 제가 생각하는 선언형 UI는 다음과 같습니다. "미리 선언을 해두어 형태가 정해져 있고, 상태(값, State)에 따른 형태..

Flutter/UI Widget 2023.03.27

[Flutter] Flutter에 대한 이해

Flutter의 정의 Flutter 플러터는 구글이 구현한 크로스 플랫폼 프레임워크 입니다. 안드로이드와 iOS, Web, Windows, masOS, Linux Desktop App까지 지원을 합니다. Flutter의 3계층 플러터 프레임워크는 3계층(임베드 계층, 엔진 계층, 프레임워크 계층)으로 나눠져 있습니다. Embedder(임베더) Layer 하드웨어와 가까운 Low-level 계층 (embed: 포함시키다) 운영체제의 자체적 기능을 모듈화했고, 운영 체제와의 연계를 위한 플랫폼의 엔트리 포인트를 제공해준다. 플러터가 현재 지원하는 6개의 각 플랫폼에서 구동되게 해주는 레이어다. 각 플랫폼의 네이티브 플랫폼과 직접 통신한다. 이 모듈들은 각 플랫폼의 네이티브 언어로 작성되어 있으며, 안드로이드..

프레임워크 vs 라이브러리 vs 모듈 vs 플러그인

목차 1. 프레임워크 2. 라이브러리 3. 모듈 4. 플러그인 5. 결론 1. 프레임워크(Framework: 뼈대, 구조) Frame: 틀, 규칙, 법칙 work: 일 소프트웨어의 목적 즉, 목적에 따라 효율적으로 구조를 짜놓은 개발 방식이다. 프레임워크란 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다. 즉, 일정한 형태의 틀에 맞추어 결과물을 만들도록 하는 것이 프레임워크이다. Application 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도 뼈대(구조)를 제공해주는 것이다. 그렇기에 자주 사용하는 코드를 매번 제로 베이스부터 만들지 않아도 되니 시간/비용을 절약할 수 있다. Flow(..

[Flutter] 개발 환경 구축(Mac)

처음 flutter를 개발하기 위해 세팅을 구축하는 방법에 대한 포스팅이다. 1. 해당 사이트에서 Flutter SDK(Software Development Kit)를 다운 받는다. SDK(Software Development Kit)는 flutter를 개발하기 위한 개발바구니이다. 이 SDK가 있어야 우리가 Dart 언어로 Flutter를 개발할 수 있다. Flutter SDK가 이를 컴파일하고 합하는 빌드라는 작업을 하게 되고 우리에게 앱이라는 프로그램을 제공 해주는 것이다. https://docs.flutter.dev/get-started/install Install Install Flutter and get started. Downloads available for Windows, macOS, L..

[용어 정리] 프로그램? 프로세서? 프로세스?

자료를 찾아보면 프로그램과 프로세서, 프로세스의 개념이 헷갈리는 경우가 있어서 이를 명확하게 구분하려 한다. 이 세 가지 개념은 확실한 차이가 존재하며 정확히 이해하고 있어야 한다. 컴퓨터 프로그램(영국 영어: computer programme, 미국 영어: computer program)은 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음(집합)이다. 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 프로세서(영어: processor, 문화어: 처리기)는 다음을 뜻할 수 있다. 중앙 처리 장치(CPU)는 명령어를 해석하는 컴퓨터의 한 부분이다. 마이크로프로세서(Microprocessor)는 마이크로컴퓨터의 한 부분이다. ..

UTF-8과 UTF-8-sig 의 차이점

UTF-8과 UTF-8-sig 의 차이점 파일을 읽을때 한국어의 경우 utf-8로 인코딩을 하게 된다. 그런데 파이썬으로 CSV 파일을 작업하고 엑셀로 데이터를 확인하는데 정상적으로 데이터가 들어가지 않고 칸이 밀린다거나 하는 문제가 발생했다. 이를 수정하기 위해 encoding 방식을 UTF-8-sig로 수정해서 해결했는데 UTF-8과 UTF-8-sig의 차이점이 궁금해져서 자료를 찾아보고 정리하게 되었다. 결론부터 말하면 UTF-8은 BOM을 포함한다. UTF-8-sig는 BOM을 포함하지 않는다. 그렇다면 BOM을 뭘까? BOM이란 BOM이란 문서 맨 앞에 눈에 보이지 않는 특정 바이트(byte)를 넣은 다음 이것을 해석해서 정확히 어떤 인코딩 방식이 사용되었는지 알아내는 방법을 나타냅니다. 자세하..

파이썬 크롤링 쿠팡 로그인 차단 접속 거부(Access Denied) 문제 해결 방법

https://msgoel.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%BF%A0%ED%8C%A1-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B0%A8%EB%8B%A8-%EC%A0%91%EC%86%8D-%EA%B1%B0%EB%B6%80-Access-Denied-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95 파이썬 크롤링 쿠팡 로그인 차단 접속 거부(Access Denied) 문제 해결 방법 파이썬 셀레니움 쿠팡 로그인 안되는 문제 (Access Denied) 파이썬 셀레니움으로 쿠팡 크롤링하시는 분들 계실텐데요. 어느 날 갑자기 쿠팡 접속이 ..

웹 드라이버 매니저

https://pythonblog.co.kr/coding/7/ 셀레늄 및 웹드라이버 매니저 설치 ■ 셀레늄은 웹 브라우저를 컨트롤하여 자동화를 구현할 수 있는 기능입니다. 1.크롬 브라우저 경로설정 python from selenium import webdriver driver = webdriver.Chrome(self.c pythonblog.co.kr https://velog.io/@dlalscjf94/Python-셀레니움-크롤링-시-매우-유용한-라이브러리webdrivermanager [Python] 셀레니움 사용 시 매우 유용한 webdriver_manager 개인적으로 작은 프로젝트들을 진행했던 일들이 있어서 크롤러 소스를 많이 만들고 업무를 자동화하거나 DB를 자동으로 쌓거나 하는 등의 작업들을 ..

한성 컴퓨터 TFX156T PRO 포터블, 포터블, 휴대용 모니터 리뷰

TFX156T PRO - 한성컴퓨터 포터블 모니터 , 포터블 모니터 , 휴대용 모니터 리뷰 한성 휴대용 모니터 리뷰 최근에 퇴사를 하게 되어 사무실 듀얼 모니터가 아닌 카페에서 노트북으로 코딩한다. 확실히 허리와 뒷목이 아픈 걸 느끼고 있을때 유투브 영상을 보고 바로 지름신 강림!!! https://www.youtube.com/watch?v=nIbr3uj5h8s 모델은 한성컴퓨터 TFX156TPRO 포터블 모니터 https://link.coupang.com/a/MLKXN 한성컴퓨터 39.62cm FHD 삼성 DEX 호환 폴더블 멀티터치 모니터 400 COUPANG www.coupang.com "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다." 삼성 노트북 연결했고 ..

카테고리 없음 2023.01.20

[Django] TextChoices

Enum과 같이 Case를 나눈는 경우 사용한다. 사용하는 방식은 구글에 널려 있는데 사용할 때 실용적으로 정리가 되어 있지 않아 정리한다. - 변수는 django에서 사용한다. - 중간 문자열은 DB에 저장되는 데이터이다. - 마지막 문자열은 관리자 페이지에서 사용한다. class CarrierCase(models.TextChoices): # 택배사 # django에서쓸 변수 = 'DB 저장 문자열', '관리자 페이지 쓸 문자열' blank = '', "없음" chunilps = "kr.chunilps", "천일택배", cjlogistics = "kr.cjlogistics", "CJ대한통운", cupost = "kr.cupost", "CU 편의점택배", cvsnet = "kr.cvsnet", "GS P..

Server/Django issue 2022.11.24

[Django] AWS S3 연동

우선 AWS S3를 장고에서 사용하기 위한 기본 셋팅을 포스팅 해두었다. https://yeongwoo-cho.tistory.com/309 [AWS] S3(Simple Storage Service) 일반적으로 API 서버에서 이미지 서버를 따로 두고 사용하며, 대표적으로 AWS S3 Service를 사용한다. AWS S3를 이미지 서버로 구축하고 연동하는 방법에 대해 알아보자. AWS S3의 단위: Burket 미디어, 정 yeongwoo-cho.tistory.com Django Setting django에서 S3를 연동 시키기 위해서는 두가지 라이브러리가 필요하다. django-storages를 통해 boto3를 사용한다. 이렇게 설치된 라이브러리를 django에서 사용하기 위해 settings.py에..

Server/Django issue 2022.09.14

[AWS] S3(Simple Storage Service)

일반적으로 API 서버에서 이미지 서버를 따로 두고 사용하며, 대표적으로 AWS S3 Service를 사용한다. AWS S3를 이미지 서버로 구축하고 연동하는 방법에 대해 알아보자. AWS S3의 단위: Bucket 미디어, 정적파일을 공유할 수 있도록 아마존 S3(simple storage service)를 설정하자! s3는 bucket이라는 단위를 사용한다. (RDS는 instance를 사용한다.) 버킷 생성 1. 버킷 만들기 (AWS S3 서비스를 선택해 버킷을 생성한다.) 2. 버킷 이름 및 지역 지정 버킷이름: id 와 같은 역할을 하며 같은 이름 사용 불가능 하다. 리전: 리전은 내가 실제 물리적으로 위치한 곳과 가까울수록 AWS 서비스가 빨라진다. (결국 네트워크임) 3. 옵션 구성 페이지이..

Cloud/AWS Services 2022.09.13

[Django] 아임포트 이론

용어정리 PG사 결제대행사. 내가 어떤 상품에 대해 XX카드로 5만원 결제를 원한다고 요청을 보내면, 온라인 상에서 실제로 XX카드를 들고 XX카드사에 결제를 해 주는 회사이다. 가맹점 이 PG사들과 계약을 맺고 PG사를 통해 결제를 맡기는 점포. 즉 우리의, 내가 관리하는 웹 서버이다. 결제 프로세스의 이론적 설명 https://github.com/iamport/iamport-manual/tree/master/인증결제 GitHub - iamport/iamport-manual: 아임포트(iamport) 결제연동을 위한 매뉴얼입니다. 아임포트(iamport) 결제연동을 위한 매뉴얼입니다. Contribute to iamport/iamport-manual development by creating an ac..

ETC/아임포트 2022.09.01

[HTTP] HTTP 메서드 활용 - HTTP API 설계 예시

우리가 회원 관리 API 를 제공한다고 가정해보자. 그때, URI GET POST 등을 어떻게 사용해야 하는지 배워보자. 그런데, POST와 PUT 모두 데이터를 등록할 때 사용하는데 이를 어떻게 구분해야 하는지가 중요하다. 이전에도 정리한 내용인데, URI는 리소스(members)를 식별하는 용도로 사용하는 것이다. 리소스의 행위를 식별하는 것은 최대한 지양해야 한다. 그런 행위들은 HTTP method를 통해 식별 가능하기 때문이다. GET의 경우 /members 을 request-target으로 지정한다. 데이터가 100만개 이면 적절한 필터링이 필요하고 이러한 필터링은 query parameter의 검색어를 통해 조회하게 된다. 정렬하고 싶으면 그것 역시 query parameter를 사용한다. ..

Server/HTTP 2022.08.12

[HTTP] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

/static/star.jpg 에 요청을 하게 되면 별 이미지를 내려준다. 이 경우는 클라이언트 요청 메세지의 header에 path만 지정하고 query parameter를 사용하지 않아도 된다. 조회를 할때 데이터를 전달하는 경우가 존재하며, 동적 데이터를 조회하는 경우이다. 예를 들어, 검색 조회의 경우 검색어를 query parameter로 보내게 된다. Form tag를 하용하고 /save 로 post 메소드를 사용하면 저장이 된다고 하자. submit type의 버튼을 누르게 되면 웹 브라우저는 form의 데이터를 읽어서 오른쪽 그림과 같이 HTTP 메세지를 생성하고 해당 HTTP 메세지를 packet으로 만들어서 인터넷 망으로 던지게 된다. 여기서, Content-Type을 applicati..

Server/HTTP 2022.08.11

[HTTP] HTTP Method

목차 HTTP API를 만들어보기 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드의 속성 HTTP API를 만들어보자 회원 목록 조회 - 회원 리스트를 확인할 수 있다. 회원 조회 - 회원 리스트에서 선택해서 상세화면으로 들어가면 회원을 조회할 수 있다. 회원 등록, 수정, 삭제가 필요하다. 회원을 조회하고 등록, 수정, 삭제하는 것이 리소스(자원)가 아니다. 미네랄을 캐는 행위가 리소스가 아니라, 미네랄 그 자체가 리소스이다. 회원이라는 것만 리소스로 식별하면 된다. 그것을 URI에 매핑하면 된다. 그래서 URI 는 다음과 같이 설계되어야 한다. 리소스에 집중해서 URL를 설계했는데, 조회 등록 수정 삭제는 어떻게 구분해야 하는거지? 답: HT..

Server/HTTP 2022.08.11