본문 바로가기

프로그래밍사업46

윈도우에서 스프링 빌드(build) 하는 방법 Spring 윈도우에서 빌드(build)하는 방법 1. cmd 창을 열어 프로젝트 폴더로 갑니다. 2. gradlew.bat 치고 엔터 3. gradlew build 치고 엔터 4. build -> libs 폴더로 갑니다. 5. 프로젝트명-0.0.1-SNAPSHOT.jar 파일 있는지 확인 후 6. 그 파일이 있는 폴더로 가서 java -jar 프로젝트명-0.0.1-SNAPSHOT.jar 입력 매번 이렇게 하기 귀찮으면 배치 파일을 만들어서 사용하시면 쉽게 서버를 기동할 수 있습니다. 프로그래밍사업/사이드 프로젝트 2022. 11. 14.
[스프링 부트 + JPA + MySQL] 간단한 회원 관리 예제로 알아보는 스프링부트 -2탄 Repository 만들기 이번에는 DB에서 한 발자국 나아가 Repository를 만들어 보겠습니다. 리포지토리는 DB에 실제 저장, 불러오기 등의 기능을 구현하는 곳입니다. 실제 강의에서는 인터페이스를 이용해서 Memory기반에서 JDBC, JDBC Templete, JPA 순으로 다형성을 이용하여 구현하는 방법을 배웠으나, 저는 JPA만 가지고 구현하고 테스트 코드까지 정리해보겠습니다. 도메인 만들기 도메인은 아마도 MVC 모델에서 M에 해당하는 부분이 아닐까 추측해봅니다. 이 도메인은 우리가 다룰 데이터의 자료형이라고 생각하시면 됩니다. 저장할때도 Member 객체를 만들어서 저장할 것이고, 사용할때도 Memeber 객체를 이용하여 사용할 것입니다. JPA 관련 설정 @Entity: DB 테이블을 매핑 @Id: 이것을 pk.. 프로그래밍사업/사이드 프로젝트 2022. 11. 14.
[스프링 부트 + JPA + MySQL] 간단한 회원 관리 예제로 알아보는 스프링부트 -1탄 DB 설정편 스프링 부트, JPA, MySQL 사용법 정리 겸 김영한's 스프링 입문 강의 후기 기본적인 자바 문법 공부가 끝나가던 중 문법 공부만하는 것은 공부에 도움이 별로 안된다는 것을 파이썬을 공부하면서 느꼈기 때문에 요새 스프링을 공부하고 있습니다. 공부 교재는 인프런의 김영한님이 무료로 공개하신 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'를 듣고 제 머릿속에 남기기 위해 정리해보고자 합니다. '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'는 깊이 있는 내용보다는 가볍게 작은 프로젝트를 구현해보면서 스프링에대한 전반적인 이해와 많은 흥미를 유발하는 강의인것 같습니다. 강의 시간도 제일 긴것이 20분이이고 대부분 10분 내외로 중간 중간 .. 프로그래밍사업/사이드 프로젝트 2022. 11. 14.
[교대근무 관리프로그램] 관리프로그램 구현을 위한 FASTAPI - CRUD편- 월별, 연도별 데이터만 가져오기, 요일 구분하기 , in 사용법 이번 프로젝트에서 백엔드로는 FASTAPI를 사용하였습니다. CRUD를 구현을 위해 저는 SQLALchemy를 사용하여 연도와 월을 입력하면 해당 연도의 그 월의 자료만 가져올 수있는 기능(extract)과 날짜를 입력하면 요일(dayofweek,weekday )을 구분하는 기능 구현이 필요하였습니다. 아울러 or 대신 카테고리 데이터 유무를 판단할 수있는 in사용법도 알아보겠습니다. 요일 구분하는 기능 우선 쉬운 요일 구분하는 기능부터 알아보겠습니다. 요일을 구분하는 함수는 여러가지가 있지만 요일을 숫자로 구분하고 있습니다. 파이썬 datetime의 요일구분 파이썬의 datetime 라이브러리의 date.weekday(날짜) 함수에서는 월=0, 화=1로 구분하고 있습니다. from datetime im.. 프로그래밍사업/사이드 프로젝트 2022. 10. 4.
[교대근무 관리프로그램] 파이썬으로 교대근무 스케쥴표 엑셀로 저장하기 openpyxl로 스케쥴표를 엑셀로 저장하기 파이썬으로 엑셀을 사용하려면 openpyxl를 사용해야 합니다. openpyxl 기본 사용법, 딕셔너리의 키와 값을 바꾸는 방법 for문 안에 if없이 조건 사용하는 방법입니다. 기본 사용법 1. 워크북은 생성한다. wb = load_workboo(파일명) 2. 워크시트 객체를 생성한다. ws = wb["시트명"] 3. 셀에 값을 입력한다. ws.cell(row=1, column=1,value="A1") 4. 엑셀파일로 저장한다. wb.save(파일명) 물론 위에 방법 말고도 여러가지 방법이 있지만 제가 선택한 방법은 위에 방법입니다. 일단 이것에 앞서 저는 fastapi와 mysql을 이용해서 날짜별로 근무조를 입력해놓았습니다. 9월 1일을 예로 들면 주간 .. 프로그래밍사업/사이드 프로젝트 2022. 10. 3.
[교대근무 관리프로그램] 파이썬으로 교대근무 관리 시스템 만들어 보기 파이썬으로 교대근무 관리프로그램 만들기 프로젝트 왠만한 큰 기업들은 아마도 이미 교대근무 관련 시스템이 있을것이라 생각된다. 하지만 그렇지 못한 회사도 있기 마련... 그동안 쌓은 나의 프로그래밍 지식을 총 동원하여 교대근무 관리 시스템을 만들어 보았다. 물론 막 엄청나게 세련된 디자인과 기능을 가진 프로그램은 아니지만 지금 당장 필요한 기능들은 한 90%정도는 구현해보았습니다. 이번 포스팅에서는 A-Z까지 기능 구현을 어떻게 하는지 보다는 이 프로젝트를 하면서 제가 얻은 지식을 정리하는 시간을 가진다는 의미로 작성하였습니다. 프로젝트를 시작하게 된 계기 어쩌다보니 갑자기 교대근무의 시간외, 스케쥴표 등을 관리하는 업무를 맡게되면서 이 프로젝트를 시작하게 되었습니다. 일단 프로젝트 시작에 앞서 어떤 업무.. 프로그래밍사업/사이드 프로젝트 2022. 10. 3.
[직장인이 알아두면 좋은 파이썬] 정규표현식을 사용해서 금액(1000원) 중 숫자만 뽑아내기 만약 직장에서 보고서나 문서에 나온 금액 찾아야 하는 일이 생긴다면 어떻게 해야 될까요?? 처음부터 끝까지 읽어보면서 찾거나 '원'이라는 글자를 검색하면서 찾을 수도 있습니다. 이런 노가다 작업은 정규표현식 전방탐색을 사용하면 쉽게 해결할 수 있습니다. 철수는 1000원을 가지고 있고 영희는 2000원을 가지고 있습니다. 두 사람은 3000원으로 원숭이 인형을 2개 샀습니다. 위에 예문에서 금액만 뽑아 내기 위해서는 어떻게 해야 될까요?? 긍정형 전방탐색을 사용하면 됩니다. 긍정형 전방탐색 긍정형 전방탐색이란 어떠한 기준 앞에 해당 패턴이 일치하면 리턴하는 방법입니다. 그래서 원을 기준으로 정하기 위해 (?=원) 이라고 하면 원 앞에 있는 패턴만을 추출할수 있습니다. 금액을 추출하기 위해서 \d+을 사용.. 프로그래밍사업/사이드 프로젝트 2022. 10. 3.
[직장인이 알아두면 좋은 파이썬] 정규표현식으로 전화번호 뒷자리를 ####으로 바꾸기 파이썬을 처음 접하는 분들이라면 아마도 점프 투 파이썬이란 책에 대해 알고 계실거라 생각합니다. 이 책은 위키독스라는 사이트를 통해 무료로 공개되어 있어서 우선 이 사이트를 통해 접하고 저처럼 책을 구매하신 분들도 있을것 입니다. 그 중 이 책만의 특징적인 부분은 바로 정규표현식이라는 독특한 문법에 대해 설명하고 있는 책입니다. 이 정규 표현식을 활용하면 주민번호 뒷자리나, 전화번호 뒷자리를 손쉽게 바꿀수 있습니다. 특정한 조건에 맞는 텍스트를 추출하고 바꾸고 하는데 활용할 수 있습니다. 오늘은 전화번호 뒷에 4자리를 ####으로 바꾸는 방법을 소개하고 추후 왜 이렇게 하는지에 대해 설명하도록 하도록 하겠습니다. 전화번호 뒷자리를 ####으로 바꾸기 필요한 라이브러리 import import re 파이썬.. 프로그래밍사업/사이드 프로젝트 2022. 10. 2.
[직장인이 알아두면 좋은 파이썬] openpyxl로 pandas 데이터 프레임 만들기 직장인들이 가장 많이 사용하는 프로그램은 엑셀일 것입니다. 사실 파이썬과 같은 프로그래밍 언어를 모르더라고 엑셀만 잘 쓰면 일하시는데 큰 문제는 없을 것입니다. 하지만 매일 반복되는 작업을 자동화 하기위해 파이썬을 사용하면 정말 평소에 20분 걸리는 일도 5분만에 처리가 가능합니다. 저 역시 파이썬과 sql을 사용해서 매일 반복적으로 하는 일을 자동화 하여 평소 15분 걸리는 일을 1분 안에 처리하고 있습니다. 이처럼 매일 반복되는 일은 자동화를 통해 업무 효율을 극대화 할수 있습니다. 엑셀을 잘 쓰시는 분이시라면 매크로를 사용할 수도 있지만 파이썬을 배우는 여러모로 활용하기 좋기 때문에 파이썬을 하면 공부해보시는 것을 추천드립니다. 그래서 이번에는 파이썬으로 엑셀을 자동화하는데 필요한 라이브러리인 op.. 프로그래밍사업/사이드 프로젝트 2022. 9. 25.
[GCP,SSH] 맥북과 터미널(iTerm2)로 Google Cloud Platform SSH 접속하기 -- config 파일 작성으로 편하게 접속 구글 클라우드 플래폼(GCP) VM 인스턴스에 SSH 터미널로 접속하기 구글 클라우드 서비스를 VM free tier를 이용해서 간단한 토이 프로젝트를 진행중인데요. 매번 사이트에 접속해서 ssh 버튼을 눌러 접속하는 방식이 번거로워 맥과 터미널(iTerm2)를 이용하여 쉽게 접속하는 법을 알아보겠습니다. 1. 키를 생성한다. 퍼블릭 키와 프라이빗 키를 우선 생성합니다. 아래 명령에 대한 설명은 이전에 깃허브 계정 여러개 사용하기해서도 설명 했었는데요 -t [타입명] : 키를 생성할 타입명을 입력합니다. 기본값은 rsa 타입인데 깃허브에서는 더 강화된 타입인 ed25519을 권장하는것 같습니다. -f [파일명]: 키의 파일명을 입력할 수 있는 옵션으로 디폴트값은 키의 타입명으로 ~/.ssh폴더에 저장됩니.. 프로그래밍사업/사이드 프로젝트 2022. 8. 8.
[git] 코딩(프로그래밍) 공부할 때 깃(git) 활용법(git restore) git을 활용한 프로그래밍 공부법 1인 취미 개발자인 저는 깃을 버전 관리의 용도 보다는 주로 깃허브나 깃랩에 백업하는 용도로 사용하고 있었습니다. 그래서 단순히 git add. git commit, git push 이렇게 기계적으로 사용하고 있었는데요. 이번에 책장에 있던 'Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문' 이 책을 다시 한번 복습하면서 git을 활용하여 프로그래밍을 공부하는 방법을 정리해보았습니다. 기존에 내가 했던 공부법 그동안 프로그래밍 강좌를 따라하면서 강의 강의마다 commit을 해서 기록을 남겼습니다. 그리고 git reset --hard를 이용해 복습하고자 하는 커밋으로 완전히 파일을 되돌리고 시작했는데요. 이럴 경우 복습이 필요없는 파일까지 되돌아가는 상황이 벌어 집.. 프로그래밍사업/사이드 프로젝트 2022. 7. 26.
[git,ssh] 맥북에서 ssh를 이용해서 깃허브 계정 여러개 사용하기 보통 깃허브 아이디는 특별한 설정을 하지 않으면 컴퓨터마다 한개씩 밖에 사용이 안되는거 같더군요. 그래서 github나 gitlab 계정을 회사계정, 개인용 프로젝트 계정 이렇게 분리하고 싶을때는 ssh-keygen을 사용해야 합니다. 작업순서 1. ssh-keygen으로 공개키(Public key)와 개인용키(Public key)를 생성합니다. 2. github에 공개키 등록 3. 접속하기 공개키(Public key)와 개인용키(Public key) 생성 터미널에서 아래 명령어를 입력하면 공개키와 개인용키가 생성됩니다. 입력하면 암호를 입력하라고 하는데 그냥 저는 엔터를 두번 쳐서 암호를 생략했습니다. 어차피 저의 개인용 맥북이기 때문이죠 키 생성 명령어 ssh-keygen -t rsa -f ~/.ss.. 프로그래밍사업/사이드 프로젝트 2022. 7. 24.
[SQLALchemy, python,MySQL] date, time, DateTime 자료형 입력하고 불러오기(타임존 적용까지) SQL알케미와 MySQL로 날짜, 시간 입력하기 SQL알케미로 MySQL에 날짜, 시간을 입력하는 법을 알아보겠습니다. 그리고 날짜를 불러올때 timezone이 aware 가 아닌 naive로 받아오는거 같습니다. 그래서 relpace를 사용해서 타임존(timezone)을 적용해보도록 하겠습니다. 저는 보통 MYSQL로 직접 날짜나 시간을 저장할때는 TimeStamp 컬럼에 now() 함수를 사용하여 시간과 날짜를 입력하는데요 이번에는 SQLALchemy를 이용하여 해보도록 하겠습니다. 테이블 클래스 정의 class Time(Base): __tablename__ = "time_tbl" id = Column(Integer,primary_key=True, index=True) date_time = Colum.. 프로그래밍사업/사이드 프로젝트 2022. 7. 17.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 3탄 데이터 가져오기(Read, SELECT문) SQLAlchemy로 데이터 가져오기 공식문서를 보니 SQL 알케미를 이용해서 데이터를 가지고 오는 방법이 정말 여러가지가 있었습니다. 1.x 방식과 2.0방식 두가지가 있는데 주로 인테넷에서는 1.x 스타일로 설명 된것이 많아 저는 2.0방식을 소개해보도록 하겠습니다. 공식문서의 1.x 스타일과 2.0 스타일 비교 https://docs.sqlalchemy.org/en/14/changelog/migration_20.html#migration-orm-usage Migrating to SQLAlchemy 2.0 — SQLAlchemy 1.4 Documentation Previous: What’s New in SQLAlchemy 1.4? Next: 1.4 Changelog Up: Home On this pa.. 프로그래밍사업/사이드 프로젝트 2022. 7. 7.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 2탄 삭제, 수정 SQLAlchemy로 삭제하는 법과 수정하는 법 FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 1탄에 이어 이번에는 SQL 알케미로 삭제하는법과 수정하는 법을 정리해보 겠습니다. 삭제하기(DELETE) 삭제하기는 간단합니다. 특정 데이터를 가지고 오는 Select문을 작성한 객체를 만들어서 세션의 삭제하는 함수에 변수로 넣어 주면 됩니다. def delete_users(db:Session,pk:int): # db_user = db.query(User).filter(User.id==pk).first() db_user = db.execute(select(User).filter(User.email=="user.email")).scalars().first() if db_user: db.delete.. 프로그래밍사업/사이드 프로젝트 2022. 7. 5.
SQLAlchemy로 이미 있는 데이터베이스(기존 테이블) 사용하기 SQLAlchemy로 이미 있는 MySQL 의 기존 테이블 사용하기 python으로 MySQL이나 SQLite, Postgres를 사용하기위해 SQLALCHEMY 다시 공부하고 있습니다. 그러던 중 dbeaver를 이용해 기존 테이블을 sqlalchemy 가지고 오는 방법이 필요하여 이번 포스팅으로 작성하면서 머릿속을 정리해 보았습니다. 이걸 알아보면서 그냥 PyMySQL로 할까 말까 하다가 제 나름대로 기준을 어느걸 쓸지 조건을 정해보았습니다. FASTAPI를 쓸데는 sql알케미로 그외에 단순 작업할때는 PyMySQL을 사용하려 합니다. 물론 이 기준은 언제 다시 바뀔지 모르지만... 일단 SQLALchmey로 기존에 있는 DB에 접속하여 사용하는 방법은 찾아보기 어려워 제가 한번 정리해보았습니다. 그.. 프로그래밍사업/사이드 프로젝트 2022. 7. 5.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 1탄 초기설정, 데이터 입력하기 다시 정리하는 SQL 알케미 본 내용은 https://fastapi.tiangolo.com/ko/tutorial/sql-databases/ 해당 링크의 설명과 공식문서를 참조하였습니다. 이전에 2021.08.16 - SQLALCHEMY를 이용한 PostgreSQL 사용법 을 정리한적이 있었습니다. SQLALCHEMY를 이용한 PostgreSQL 사용법 SQL 알케미랑 SQL 서버와 연결하는 부분 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker URL = "postgresql://아이디:비밀번호@서버주소/DB이름" engine = create_engine(URL,ech.. jh-industry.tistory.com 기.. 프로그래밍사업/사이드 프로젝트 2022. 7. 4.
도커파일 사용법 - 도커를 이용한 FastAPI 서버 구축 방법 관련 정리 기본 컨셉 기본 FastAPI 서버 구성을 위해 우선 구글 클라우드 VM 인스턴스에 도커를 설치하고 VM 인스턴스 로컬저장소에 /code/app 폴더를 만들어서 컨테이너에 바인드 마운트하였습니다. 이렇게 하면 컨테이너에 접속하지 않고도 로컬 폴더(/code/app 폴더)에 있는 파이썬 코드만 수정하면 되어 코드 수정할때마다 컨테이너에 접속하지 않아되어 편리합니다. 기본 순서 1. 구글 클라우드 플래폼에 VM 인스턴스를 만든다. 2. VM 인스턴스에 도커를 설치한다. 3. 도커 파일을 만든다. 4. 도커 파일로 이미지를 생성한다. - 도커 명령어 sudo docker build -t myimage . 5. VM 인스턴스 로컬 저장소에 code/app/ 폴더를 생성하고 main.py 생성 후 폴더로 업로드 .. 프로그래밍사업/도커(docker) 2021. 11. 18.
[SQL] Postgres에서 중복도 제거하고 다른 컬럼 기준으로 정렬하기(DISTINCT, ORDER BY, subquery SQL(Postgres)로 해보기 //Postgres SELECT * FROM ( SELECT DISTINCT ON (중복을 제거할 컬럼명) * FROM 테이블명 WHERE name='a') as foo ORDER BY id DESC; // 정렬할 컬럼 python SQLAlchemy로 해보기 from sqlalchemy import desc // 중복을 제거한 서브커리를 생성한다. sub_images = db.query(테이블명).distinct(테이블명.컬럼명).filter(테이블명.컬럼명==컬럼에서찾을내용).subquery() // 서브커리를 ORDER BY로 정렬한다. tests = db.query(sub_images).order_by(desc("id")).all() SQLAlchemy에서 서브커.. 프로그래밍사업/사이드 프로젝트 2021. 11. 6.
장고(django)보다 쉽게 FastAPI로 간단한 CRUD 만들기 fastapi review 기본 설계 fastapi로 CRUD 구현 postgres를 사용할것임 orm은 SQLALCHEMY 사용할것임 순서 pip install fastapi[all] 패키지 설치 pip install sqlalchemy 패키지 설치 main.py 함수 생성 hello fastapi 구현 fastapi 서버와 postgres 서버 연결 pgAdmin으로 수동으로 DB 생성 postgres와 SQLALCHMY create_engine, sessionmaker 생성 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative.. 프로그래밍사업/사이드 프로젝트 2021. 10. 30.