git log에 최신 커밋이 안 보일 때 복원하기
·
Git
Git 작업을 하다가 잘못된 명령어 조작으로 한참 뒤의 commit으로 돌아가 HEAD로 위치하게 되었고git log로 살펴보니 돌아가버린 commit 시점으로부터 앞의 commit들(원래 HEAD가 위치했던)이보이지 않아 당황했다...돌아가고 싶은 commitID만 알면 되는데... 그 commit들이 git log를 통해 보이질 않으니 순간 블랙 아웃   그렇게 폭풍 구글링을 하다가 나를 구원해줄 블로그를 찾았다.https://www.letmecompile.com/git-restore-lost-commits/ 깃(Git) 에서 유실된 커밋(commit) 복원하기깃(Git)을 이용하여 작업을 하다가 리베이스(rebase) 실수 또는 잘못된 명령어나 조작 실수 등 다양한 이유로 인해 자신의 피땀눈물이 담..
[프로그래머스 Level 4] 입양 시각 구하기 (2)
·
SQL 문제 풀이
테이블 정보 문제보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.  결과 예시  문제 풀이 (MySQL)SET @HOUR = -1;SELECT (@HOUR := @HOUR + 1) AS HOUR, (SELECT COUNT(HOUR(B.DATETIME)) FROM ANIMAL_OUTS B WHERE @HOUR = HOUR(B.DATETIME) ) AS COUNTFROM ANIMAL_OUTS ALIMIT 24; 위에 예시를 보다시피 7시부터 데이터가 존재한다.그러므로 단순히 HOUR(DATET..
[Spring Boot] 엑셀(xlsx) 파일 파싱 후, 서비스 로직에 추가하는 코드 작성하기
·
SpringBoot
발단교내에서 진행하는 캠퍼스SW아카데미인 TABA 프로젝트 기간에 발생했던 내용들을 기록하고자 한다.  우리팀의 경우 이미지 인식 AI를 활용한 두피 관리 서비스를 주제로 개발을 진행했었다.아래 사진과 같이 사용자의 두피 사진을 통해 6가지 증상을 측정하는데,6가지 증상에 대한 사용자의 두피 점수와 성별 및 같은 나이대에 대한 평균 값과 비교하여한눈에 보기 쉽게끔 육각형 그래프로 나타내고자 했었다.   프론트에서 이러한 육각형 그래프를 그리기 위해서는백엔드에서 사용자의 성별과 나이대에 맞는 평균 값을 보내줘야했다.해당 값들은 AI 파트를 맡은 팀원이, 추출한 값들을 엑셀(xlsx) 파일로 보내줬고이를 스프링부트에서 파싱하여 프론트에 값들을 보내도록 구현했다.  아래 사진은 해당 엑셀 파일의 일부로,남/여..
Tmax AI Bigdata Academy 4기를 마치며
·
Tibero DB (Tmax AI Bigdata Academy)
👨‍💻프로젝트 기간 (기획) 11월부터 조가 편성되어서 프로젝트가 진행되었는데우리 조는 아래 3가지 주제 중에서 이미지 인식 AI를 활용한 서비스 개발이었다. 1. 생성형 AI(ChatGPT)를 활용한 챗봇 서비스 개발2. 크롤링 데이터 솔루션을 통한 데이터 수집3. 실제 데이터 바탕의 이미지 인식 시스템 구축 11월 첫째 주와 둘째 주까지는 팀원들과 아이디어 브레인스토밍 과정을거치면서 선정된 아이디어를 가지고 피드백을 갖는 시간인중간 발표를 준비했다. 우리조의 아이디어는 이미지 인식을 활용한 사용자의 두피 상태를 체크하고맞춤형으로 샴푸를 추천해주고 캘린더 기능으로 기록하는 서비스로 선정되었다.AI Hub에 좋은 데이터가 많아서 두피 관련 자료를 보고 팀원들과의 브레인스토밍 과정에서해당 아이디어를 건..
[Redis] backup1, backup2... 그리고 Failed opening the RDB file crontab (in server root dir /etc) for saving: Read-only file system
·
Redis
현재 진행하고 있는 프로젝트에서 회원가입, 로그인 과정에 레디스를 사용하여 작업을 처리하고 있다.그런데 배포 서버에 돌아가고 있는 레디스에 접속하여 키값들을 확인해보니, 존재해야 할 키값들이 온데 간데 없는 것이었다. 아래처럼 로컬 환경에서 설치하여 테스트한 레디스와 같이 "signupAuth"와 "autoLogin" 키값들이 보이지않았다. 그리고 처음보는 backup1, backup2 이런 값들이 들어있었다.찾아보니 redis의 기본포트(6379)로 봇으로 특정되는 누군가가 flushall 명령어를 날려서 해당 레디스의 key값들을 삭제하려는 시도를 수행하면서 기존에 저장되어있던 데이터가 모두 삭제되고 backup1, backup2, backup3 .... 과 같은 백업 정보만 남은 것이다.  그래서 ..
[CI/CD] SpringBoot 프로젝트를 AWS LightSail에 Docker, Github Actions를 활용하여 배포 및 Tibero6와 연결하기
·
CI CD
CI/CD란?CI는 Continuous Integration의 약자로 지속적 통합을 의미하며, CD는 Continuous Delivery로 지속적 배포를 의미한다.이는 애플리케이션 개발 단계를 자동화하여, 계속 똑같은 작업을 반복하는 수고로움을 덜어주는 기능이다. CI 구축하기Github Action 설정 CI는 브랜치에 머지하기 전, 테스트를 통해서 오류가 있는지 확인하는 작업이라 생각하면 될 것 같다.자바 기반의 스프링부트를 사용했기 때문에 아래 사진처럼 GitHub Actions를 만들 때 Java with Gradle을 사용하였다.  그러면 아래 사진과 같은 Edit 창이 뜨게 된다.해당 .yml 파일에 원하는 과정을 작성하여 저장하면 CI 설정을 할 수 있다.  아래 코드는 CI.yml 예시 파..
[CI/CD] React 프로젝트를 AWS LightSail에 Docker, Github Actions와 Runners를 활용하여 배포해보기
·
CI CD
이번 교내 캠퍼스 아카데미에서 프로젝트를 수행하게 되면서 백엔드와 인프라 구축을 맡게 되었다.백엔드 프레임워크 2개를 쓰게 되어 총 인스턴스를 3개 정도 띄울 거 같은데그중 첫 번째인 프론트엔드에 해당하는 인스턴스를 생성하고, CI CD를 적용하여 배포를 진행해 보고자 한다.블로그와 문서들을 참고하여 기록해 둔 것이니 설명이나 내용이 부족한 부분이 있을 수 있음을 고려하고 보면 좋을 것 같다(여담으로 Tmax 측에서 AWS와 계약을 하여, 인스턴스 비용을 지원해 주기로 해서 부담이 줄어들었다!)   AWS LightSail 인스턴스 생성create instance 버튼을 클릭하여 인스턴스 생성을 진행한다.나의 경우 Ubuntu 20.04 LTS 버전으로 OS 환경을 선택했다.이후, 로컬 cmd를 통해 서..
Spring Boot JPA와 Tibero6 연동 간 발생했던 에러들 정리
·
Tibero DB (Tmax AI Bigdata Academy)
이제 본격적인 팀 프로젝트가 시작되었다. 우리 팀의 경우 이미지 인식을 주제로 하는 프로젝트를 진행하게 되었고, 백엔드의 경우 두 개의 프레임워크를 사용하기로 했는데 하나는 Flask, 나머지 하나는 SpringBoot이다.사용자가 image를 보내면 Flask를 통해 학습시킨 AI 모델에 전달하여 결괏값을 보내주고,AI와 관련되지 않은 다른 기능들은 SpringBoot를 통해 구현하려고 한다.사실 Django 하나로 모두 구현해도 되지만, 현 팀원들의 니즈와 현재 공부하고 있는 분야를 최대한 적용하고자위와 같은 결정을 하였다!   본론으로 들어와서,현재 SpringBoot와 Tibero6를 로컬환경에 연결하면서 발생했던 오류들과 어떤식으로 해결했는지 기록해두려고 한다. 아래의 Tibero 에러 참조 안..
알아두면 유용한 Git 용어/명령어 정리
·
Git
Git 용어 모음Git에서 파일들의 상태Git에서 파일들은 크게 다음 2가지 상태를 가진다.Untracked 상태Tracked 상태 그리고 Tracked 상태는 다시 아래와 같은 3가지 상태로 나눌 수 있다.Staged 상태Unmodified 상태Modified 상태 1. Untracked 상태Untracked는 '추적되지 않고 있는'이라는 뜻이다. 이 상태는 파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태를 뜻한다. 예를 들어, 파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않았다면 이 상태이다. 2. Tracked 상태파일이 Git에 의해 그 변동사항이 추적되고 있는 상태이다.Staged 상태파일의 내용이 수정되고나서, staging area에 올라와있는 상태를 S..
Spring Boot JPA를 통해 Tibero6와 연동하기
·
Tibero DB (Tmax AI Bigdata Academy)
벌써 교내에서 진행하는 TABA 수업의 운체, AI, DB, Tibero 시험들이 모두 끝났다..이제 팀별 프로젝트만을 남겨두고 있는데, 백엔드를 공부하고 있기때문에 Spring Boot와이번 프로젝트에서 DB를 평소에 사용하던 MySQL이 아닌 Tibero6를 사용해보고 싶어 미리 기록해두려고 한다.(이러고 스프링이랑 티베로 안쓰면 ㅠㅠ)  참고Tibero6를 윈도우나 리눅스 환경에서 설치했다고 가정하고연동했던 과정을 기록했습니다. Window 환경에서 Tibero6 설치https://codecollector.tistory.com/1613 (Tibero) - Window에 설치 및 연결해보기🍳머리말 local환경에서 Tibero6과 TiberoStudio2를 설치하고 연결해보는 설명글입니다. 📕 T..