-
티스토리 글을 구글 블로그(블로그스팟)로 옮기기
야호펫의 글들이 6천 개를 넘어서 7천 개를 향해 늘어나고 있는 지금,티스토리의 글을 구글 블로그로 옮기고 싶다는 생각은 하지만 엄두를 못내고 있었습니다. 상상만 하던 일이었는데, 와우, 그게 가능하네요.아래 영상을 보고 따라 했더니,글쎄, 티스토리 글들이 구글 블로그로 옮겨지지 뭡니까! https://youtu.be/pdnqzpIcaI4?si=hbLm72CO7mVGPI13 다만 제한사항이 있다면, 하루에 100개 정도밖에 옮길 수 없다는 것입니다. 야호펫의 글이 7천 개가 된다면...두 달 넘게 걸린다는 얘기죠. 티스토리에서 애드센스가 조금씩 반응하고 있는데,'구글로 이전하면 좀 나아지려나'하는 생각... 백업 겸, 블로그 이전 겸,하루에 100개씩 글을 옮길 예정입니다.그리고 구글 테마를 찾아보..
2024.08.28
-
리눅스용 윈도우 하위 시스템(WSL) 설치하기
WSL은 Windows Subsystem for Linux(리눅스용 윈도우 하위 시스템)의 약자로, WSL과 리눅스 배포판을 설치하면 리눅스 커맨드를 윈도우에서 실행할 수 있습니다. 설치방법은 다음과 같습니다.1. 윈도우 메뉴에 'Powershell' 검색한 다음 '관리자로 실행' 클릭2. 아래 커맨드를 복사해서 Powershell에 붙여넣은 후 엔터dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 3. 컴퓨터 재부팅4. Microsoft Store로 들어가서 'Ubuntu' 검색 후 설치 * 여러 결과가 나오는데, 버전이 따로 없는 첫 번째 결과가 가장 최신 LTS 버전입니다...
2024.11.07
-
티스토리 블로그 백업 데이터의 이미지를 webP형식으로 한 번에 바꾸기
티스토리 블로그를 백업하고 궁금했던 점 한 가지는...'이미지가 jpg와 png 형식으로 되어있는데, 이걸 webp 형식으로 변환할 수 없을까?' 하는 것이었습니다. 글이 약 6,800여 개가 되니, 이걸 하나하나 수작업으로 바꿀 수도 없고... 궁금해서 GPT와 대화를 하면서, 그 해답을 찾았습니다.아래처럼 말이죠. 티스토리를 백업한 압축파일을 풀고,그때 생긴 디렉토리 안에다. script_name.py라는 이름으로 파일을 하나 만들어 넣어줬습니다.그리고 실행을 하니, 지금 열심히 돌아가고 있습니다. jpg 파일과 png 파일을 webP 파일로 바꾸고, 원래 있던 이미지 파일은 자동으로 삭제합니다. from PIL import Imageimport osfrom pathlib import Pathimp..
2025.01.23
-
프로젝트 마지막 단계, 템플릿 생성
'도서 몰' 프로젝트 중에서 User와 관련한 코딩 마지막 단계는 템플릿을 생성하는 것입니다.이 부분은 프런트엔드 부분이라 하겠습니다. 다시 한번 코딩 순서를 정리하면, 'entity - repository - service - controller - trmplate'이 프로젝트 생성 순서입니다. 이 순서를 따라 코딩을 하면, 백엔드 부분을 완성할 수 있습니다. 스프링부트를 이용한 프로젝트 진행... 어렵게만 생각했는데, 이 순서를 따라 하니 쉽게 접근할 수가 있군요. 그동안 조금씩 누적되었던 코딩 실력이 체계적으로 정리되는 것 같아 기쁩니다. 자바스크립트, 파이썬을 공부하면서 자바에 대해 조금 소원해진 면이 있었는데, 프로젝트 코딩 순서를 따라 하니 다시 자바와 정이 드는 느낌입니다. '도서 몰' 프로..
2024.12.04
-
프로젝트 세 번째 단계, service와 serviceImpl 생성
entity와 repository를 만든 후,service를 생성하는데, 여기에는 UserService와 UserServiceImpl 두 개의 클래스가 있습니다. UserServicepackage com.lion.demo.service;import com.lion.demo.entity.User;import java.util.List;public interface UserService { int CORRECT_LOGIN = 0; int WRONG_PASSWORD = 1; int USER_NOT_EXIST = 2; User findByUid(String uid); List getUsers(); void registerUser(User user); void updateUs..
2024.12.04
-
비주얼스튜디오에서 'Emmet' 사용으로 코딩을 쉽고 재밌게
Emmet이란?HTML과 CSS 문서를 빠르게 작성할 수 있게 도와주는 편집기의 확장기능이다.몇 자를 적고 TAB 또는 ENTER키를 누르면 자동적으로 나머지 코드를 생성시켜 주는 기능이다. 비주얼스튜디오에서 html을 작성할 때 Emmet을 사용하면 코딩을 쉽고 재밌게 할 수 있다. css 식별자를 입력하면... 바로 코드를 생성시켜 준다. 예를 들어, 비주얼스튜디오에서 'div'만 입력하면... 자동으로 아래처럼 코드를 만들어 준다.이를 확장해서div.class1 이렇게 입력하면, 다음과 같은 코드가 생성된다. 편리한 Emmet 기능... 적극 활용해서 재밌게 코딩하자![Emmet 사용 예]div>div.class-A div#myID(h1+h2>p)+div>div
2024.10.15
-
티스토리 크롤링, 제목 영어로 번역, 마크다운 파일 생성 & 해시노드 업로드
티스토리를 크롤링해서 해시노드로 데이터를 이전하는 코드를 작성했습니다. 해시노드에 한글 제목을 slug로 해서 업로드했을 때, 약 7,000개의 글 중에서 5,000개 미만의 글이 업로드됐는데, 아마도 이건 slug가 중복되어 그런 것이라 예상합니다. 티스토리를 크롤링하면, 제목이 한글로 추출되는데...이렇게 하면 해시노드에 적용되는 slug 부분이 아주 엉망이 되어 버립니다. 그래서 크롤링하면서, slug 부분은 제목을 영어로 번역하도록 코딩했습니다. 저장되는 마크다운 파일의 제목은 YYYY-MM-DD-제목.md로 저장됩니다.이렇게 해서 zip파일로 압축한 후 업로드하면...깔끔히 업로드되고, 글의 uri도 slug가 될 것입니다.각 글에 들어가서 slug를 수정하려고 했는데, 이렇게 하니까...약 7..
2025.02.08
-
티스토리 크롤링 & 마크다운 파일 만들기, 해시노드 업로드
티스토리 블로그를 크롤링하여, 깃허브 블로그 Jekyll 스킨에 맞도록 마크다운 파일을 만드는 코드입니다.티스토리 스킨은 '#1' 스킨을 적용한 후 크롤링을 진행하였습니다. 깃허브 블로그에 올라가는 파일은 YYYY-MM-DD-제목.md 형식으로 저장됩니다.마크다운 파일을 만들면서 제목, 작성일, 카테고리, 태그 등이 자동으로 저장되도록 하였습니다. import requestsfrom bs4 import BeautifulSoupimport osimport timefrom datetime import datetimeimport redef get_page_content(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;..
2025.02.08
-
개발 19~25일차, 티스토리 이전 테스트 진행
티스토리 블로그 이전을 위해 다양한 방법을 시도해 봤습니다. 1. 이미지 파일 변환우선 티스토리를 백업받은 다음, 폴더 안의 이미지를 jpg와 png에서 webP 파일로 바꿨습니다.관련 내용은 이전 글에 기록하였습니다. https://act2.tistory.com/132 티스토리 블로그 백업 데이터의 이미지를 webP형식으로 한 번에 바꾸기티스토리 블로그를 백업하고 궁금했던 점 한 가지는...'이미지가 jpg와 png 형식으로 되어있는데, 이걸 webp 형식으로 변환할 수 없을까?' 하는 것이었습니다. 글이 약 6,800여 개가 되니, 이걸 하나act2.tistory.com 2. 이미지 주소 변경그다음에는 html '이미지 주소'와 변환한 파일이 일치하도록 html의 이미지 주소를 수정했습니다. imp..
2025.01.30
-
깃허브 주요 명령어 정리
git initgit add .git commitgit loggit statusgit restore --staged README.mdgit statusgit remote add https://~git remote -vgit branch -m master maingit push -u origin main git push --set-upstream origin main로컬저장소에 있는 브랜치와 원격저장소에 있는 브랜치를 연결하는 명령어git fetchgit pullgit branch --set-upstream-to=origin/main maingit pullgit pushgit checkout -b feature/#1git push origin feature/#1git branch --set-upstream..
2025.01.21
-
개발 14~18일차, 스프링 배치!
14일차부터 오늘까지는 스프링 배치 프로젝트를 공부했습니다.중간에 구글 블로그 제작을 하느라 옆길로 세기는 했지만, 그래도 중심에는 스프링 배치가 있었습니다. 이커머스 api와 batch, 이렇게 2개의 패키지에 왜 그리 파일이 많은지요? 프로젝트를 하면서... Docker와 DBever를 비롯해 Spring, Spring Batch, Postgres, Grafana, Prometheus, Pushgateway 등의 기술 스택을 사용했습니다. 프로젝트 진행 절차는 다음과 같습니다.상품 대량 등록 기능 개발상품 대량 다운로드 기능 개발이커머스 API 개발일별 거래 데이터 보고서 기능 개발일별 상품 현황 보고서 기능 개발Spring Batch에 JPA 적용 Java와 Spring을 활용한 백앤드 웹개발...
2025.01.21
-
개발 12~13일차, Spring Batch를 활용한 이커머스 데이터 처리
어제와 오늘은 Spring Batch를 공부하고 있습니다.천만 개의 데이터를 업로드하고 다운로드하기!와우, 완전 매력적입니다. Postgres, Prometheus, Pushgateway, Grafana, DBeaver!이런 게 있는 줄 누가 알았겠습니까. 지금까지 커뮤니티 서비스, 동영상 서버, 채팅 서버를 구축해 봤는데, 스프링 배치를 이용한 이커머스 사이트 구축이 더 재밌는데요. 새로운 서비스를 접해볼 수 있음에 감사하며, 오늘도 열공! # docker-compose.ymlservices: postgresql: image: postgres:latest restart: always volumes: - ./data/ecommerce-db:/var/lib/postgr..
2025.01.14
-
개발 9~11일차, Websocket을 활용한 실시간 메시징 도메인 서버 개발
채팅 서버를 개발하는 것이 생각했던 것보다 어렵군요. 채팅방과 상담사 기능이 들어가니 쉽지가 않네요. 백앤드 심화과정에서는 Websock만을 이용했었는데, Stomp를 추가하고, 과거 메시지 보기, 신규 메시지 알림, 그리고 채팅방과 상담사 기능까지 추가하니 코딩하기가 정말 어렵습니다. 그리고 처음부터 끝까지 하나하나 코딩하다 보니, 쉬운 철자 하나 때문에 오류가 발생하는 등 곳곳에서 오류가 발생하네요. 예상은 하루정도 일정을 잡았는데, 사흘이 걸렸고, 내일까지 이 프로젝트를 연습해야 할 것 같습니다.온라인 강의를 보면서 따라 하는데도 이렇게 오류가 발생하네요. 그래도 이런 오류들을 발견하고, 하나하나 해결하는 것도 재미가 있습니다. 그런데 한 사흘쯤 걸리니까 힘도 드는군요. 내일은 구글 로그인과 서..
2025.01.12
-
개발 8일차, video-with-redis / WebSocket 연습
어제와 오늘은 video-with-redis라는 프로젝트를 연습했습니다. 이 프로젝트는 유튜브나 틱톡과 유사한 프로젝트입니다. 특이한 점은, RDBMS인 MySQL뿐 아니라 NoSQL인 MongDB와 Redis를 사용한다는 것입니다. 이전에 연습했던 community-feed 프로젝트처럼 커뮤니티 서비스는 콘텐츠(게시글) 작성이 많은 반면, 각 콘텐츠의 조회수는 적은 편입니다. 반면 동영상, 웹툰 등의 콘텐츠 서비스는 create는 커뮤니티 서비스에 비해 적지만, 각 콘텐츠의 조회는 많은 편입니다. 두 번째로 연습한 프로젝트는 후자에 해당하는 경우였습니다.제가 운영하고 있는 야호펫(뉴스 사이트)도 한번 작성한 글은 오래도록 검색되는 걸 보면콘텐츠 작성보다는 조회가 중심인 서비스라 할 수 있겠습니다...
2025.01.08