[개발이야기#055] SubVersion(SVN)을 사용하는 방법 - SVN 용어 설명

안녕하세요 가야태자 @talkit 입니다. 오늘은 앞에서 준비 과정중에 있던 SVN 사용하기를 실제로 해보겠습니다. 오늘을 위해서 SVN 호스팅 서버에 가입하고, TortoiseSVN도 설치를 진행 했습니다. SVN을 위해서 알아야할 용어 우선 저장소에 연겨하기 전에 용어를 좀 살펴 보겠습니다. 우선 기본적으로 저장소 또는 리파지토리 , 레포지토리 등은 궁극적으로 저장소 를 말 합니다. 저희가 생성한 소스의 버전들이 들어갈 저장소가 리파지토리, 레포지토리가 됩니다. 저장소에 trunk , tags , branch 라는 하위 폴더를 가지거나 안가지게 할 수 있습니다. trunk 는 주 버전 저장소라고 부릅니다. branch 는 가지 저장소 입니다. tags 는 특정 포인트의 저장소라고 하겠습니다. trunk, tags, branch trunk 는 메인 버전을 저장하는 곳이고, 솔루션을 만들어서 팔고 있는데 A사, B사 C사에서 커스트마이징 해달라고 한 버전이 있으면 해당 버전을 branch 로 즉 지점으로 만들어서 저장하고 발전시켜 나갑니다. tags 는 주로 유지보수를 위해서 많이 사용합니다. 1.0 버전, 2.0버전, 3.0 버전 이런식으로 특정 버전의 태그를 만들어두고 해당 태그를 이용해서 유지 보수 합니다. 솔루션을 여러회사에 파는 개발사 같은 경우에는 브런치와 tags가 다 만들어 질 수 있습니다. 솔루션을 클라우드로 서비스하는 경우에는 tags가 주로 만들어 집니다. 정리 리포지토리, 레파지토리, 저장소 소스의 버전들이 저장되는 저장소를 말 합니다. trunk - 주요 버전 저장소 메인 버전을 관리하는 저장소 입니다. branches - 지점 버전 저장소 솔루션이 여러곳에 납품되고 해당 소스가 일부 다를 경우 branches를 이용해서 관리할 수 있습니다. tags - 특정일이나 특정 버전 저장소 어떤 회사는 매달 1번씩 버전을 업그레이드 한다면, 태그를 일자로 찍을 수 있습니다. 버전이 올라...

[개발이야기#053] SubVersion(SVN)을 사용하는 방법 - 호스팅 방법

이미지
안녕하세요 가야태자 @talkit 입니다. 오늘은 지난 번글에 이어서 SubVersion의 서버에 대해서 말씀 드리겠습니다. 우선 오늘 하려고 하는 것은 호스팅(클라우드) 방법으로 SVN을 사용하는 법을 실제로 해보겠습니다. RiouxSVN 가입하기 우선 클라우드 서비는 가입을 해야 합니다. Register — RiouxSVN 위 주소에서 가입을 합니다. 이름과 이메일 그리고 사용자아이디(username), 비밀번호2번, 캡차를 입력하시고, I agree to ToS(Terms of Service, 약관)을 체크하고 Create Account를 클릭 하면 끝입니다. 저도 가입 하겠습니다. 이미 가입한게 맞네요 ^^ 다른 이메일 주소로 가입 해보겠습니다. ^^ 액티베이션 코드를 이메일에서 클릭해줍니다. 제가 빨간색으로 칠해 놓은 아이들이중요 정보 입니다. 그리고 젤 길게 칠해 놓은 링크를 누르십시오. 저링크 누르면 인증은 성공 했으니 login을 클릭하시구요. 로그인 화면에서 아이디/패스워드 넣으시고 로그인 하시면 됩니다. 대시보드는 이렇게 생겼네요 ^^ 저기 보시면 create new repository 라는 버튼 보이시죠 저걸 클릭 합니다. 위와 같은 이미지가 나옵니다. 저기서 레파지토리 제목과 이름을 적는데 제목은 스페이스와 대소문자를 넣어도 되고 이름은 소문자만으로 스페이스없이 넣으면 됩니다. 저는 Steemit으로 넣고 steemit으로 넣겠습니다. 아래에 Next Step을 클릭하십시오. 밑에 옵션을 체크 합니다. trunk,branches,tags 전략은 SVN의 버전 관리에 중요한 내용입니다. 저기서는 옵션이기는 하지만, 체크하고 Next Step을 누르십시오. 위 이미지에서는 이메일로 주요 정보를 전송할 것인가를 묻고 있습니다. 체크하고 Confirm creation을 클릭하십시오. 위 이미지와 같이 레포지토리가 생성 되었습니다. 여기까지 잘 따라 하셨으면 오늘은 마치도록 하겠습니다. ^...

[개발이야기#054] SubVersion(SVN)을 사용하는 방법 - TortoiseSVN

이미지
안녕하세요 가야태자 @talkit 입니다. 지난 번 글에 이어서 SVN의 버전 관리 이야기를 계속하겠습니다. 저는 솔직히 주로 eclipse 라는 개발도구에서 SVN을 사용합니다. 하지만, 제가 제일 처음에 접한 윈도우즈용 클라이언트인 TortoiseSVN 도 소개 할겸 TortoiseSVN을 이용해서 버전 관리를 해보도록 하겠습니다. TortoiseSVN 설치하기 Home · TortoiseSVN 위 사이트에서 다운로드를 진행 합니다. Downloads를 클릭하면 위와 같이 나오는데 위 그림의 맨 아래 실제 페이지의 중간 쯤에 파란색 아이콘 중 저는 64bit 버전을 다운로드합니다. 여러분도 정말 옛날 컴이 아니라면 ^^ 64비트를 클릭해서 다운로드 하시면 됩니다. 그러면 어디다 저장할 것인지 묻고, 적당한 위치에 다운로드 하시면 됩니다. 저는 그냥 다운로드 폴더에 다운로드 했습니다. 다운로드 위치에 가시거나 다운로드 받은 브라우져의 다운로드에 가시면 Open 버튼이 있을 겁니다. 설치는 무쟈게 쉽습니다. 첫 화면에서 Next 두번째도 Next 세번째 화면에서 저는 command line client tools를 설치 합니다. ^^ X 버튼을 클릭하고, will be install로 선택하시면 됩니다. 그리고, Next 이제 설치를 시작 합니다. Install 클릭하고 뜨는 화면에서 예 누르시면 됩니다. 인스톨 누르고 조금 걸리네요 ^^ 위 화면에서 Finish를 클릭 합니다. 이제 설치가 다되었습니다. 저는 보통 c:\dev 라는 폴더를 생성 합니다. 그리고 그안에 프로젝트를 넣는데요 오늘은 그냥 seemitp 라는 폴더를 하나만들겠습니다. C:\dev\steemitp 위 폴더가 생겼구요. 해당 폴더의 빈 화면에서 오른쪽 마우스를 눌렀을때 Windows 11은 한번더 확장을 시켜서 위와 같은 그림이 나오면 잘 설치가 된겁니다. 오늘은 여기까지 진행 하겠습니다. 다음글에서는 원격지 리포지토리...

[개발이야기#052] 스팀잇 글을 복사해서 Blogger.com에 복사하자.

이미지
안녕하세요 가야태자 @talkit 입니다. 우리는 거의 매일 매일 블로그에 글을 작성하고 있습니다. 하지만, 스팀잇이 방문자수가 적네요. 방문자 수가 많은 사이트로 만들고 나만의 광고를 달 수 있는 Blogger.com 스팀잇의 글을 전송해보고자 합니다. 티스토리에 전송하고 싶지만, 티스토리가 API를 막았습니다. T.T 셀레니움으로도 해보려고 하는데 제 블로그는 캡차로 막혀 있습니다 T.T 그래서, 블러그 사이트를 변경하려고 합니다. 블로거닷컴은? 구글에서 운영하는 블로그 입니다. 관리 사이트는 https://blogger.com 입니다. 그리고, 사용자들을 만나는 페이지는 사용자아이디.blogspot.com 입니다. 그래서 제 블로거 주소는 가야태자의 구글 블로그 입니다. 구글 클라우드 API 활성화 블로그 닷컴에 글을 보내려면 구글 클라우드를활성화 해야 합니다. API 및 서비스 – kjh0523 Cloud – Google Cloud Console 위 사이트에서 보면 blogger api가 있고 저 API를 활성화 해야 합니다. 구글 API 시크릿 키 획득 + 사용자 인증정보 만들기를 클릭 하시구요. 저기서 OAuth 클라이언트ID를 선택하십시오. 어플리케이션 유형을 데스크톱으로 저는 진행 했습니다. 만들기를 누르십시오. 위 그림에서 JSON 다운로드를 클릭하시면 됩니다. 이렇게 하면 일단 API 상으로 블로그에 포스팅할 준비가 되었습니다. 블로그 아이디 확인하기 ``` from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow import pickle import os def authenticate_google(): scopes = ["https://www.googleapis.com/auth/blogger"] credentials = None if os.pa...

[개발이야기#051] SubVersion(SVN)을 사용하는 방법 - 서버

이미지
안녕하세요 가야태자 @talkit 입니다. 오늘은 지난 번 글에 있어서 버전관리 2탄으로 SVN을 어떻게 사용하는가를 알려 드리려고 합니다. 서버를 어떻게 할 것인가? SubVersion은 서버 클라이언트로 이루어진 소프트웨어 입니다. 따라서 SubVersion을 사용하려면 서버가 필요 합니다. 클라이언트는 다음글에서 이야기 하고 서버를 어떻게 할 것인가에 대해서 말씀 드리겠습니다. 두가지 방식이 있습니다. 요즘 유행하는 클라우드(호스팅 서비스)를 사용하는 방법과 직접 인스턴스나 컴퓨터에 서버를 설치하는 방법이 있습니다. 두가지 서비스의 장단점 호스팅 서비스의 경우는 클라우드가 늘 그렇듯이 돈내고 사용만 하면 된다는 장점이 있는 반면, 대표이사 또는 PM등의 성격상 밖으로 소스코드를 내보기기를 싫어 하시는 회사에서는 사용할 수 없는 단점이 있습니다. 직접 설치의 경우는 위 내용의 반대가 단점입니다. ^^ 소스코드를 사내에서 관리할 수 있고, 외부 네트워크가 안되는 곳에서도 사용가능 합니다. 하지만, 아케텍터나 소프트웨어 관리자가 SubVersion서버를 관리해야하는 단점이 있습니다. 이게 따라 호스팅 서비스를 어떻게 할 것인가를 알아보겠씁니다. SVN은 인기가 없는 것인지 호스팅 서비스가 많이 살아 있지를 않네요 t.t 호스팅 서비스를 사용하기 소스코드를 공개하신다면, https://www.sf.net 사이트에 가입하고 프로젝트 만드시고 사용하시면 됩니다. 여기도 유료가 있는지는 제가 잘 모르겠습니다. 오늘 좀 뒤져 봤는데 플랜에 관한 내용이 없어서요 T.T 예전에 사용을 했던 것 같은데 여기를 이용하시면 오픈소스가 아니어도 무료로 사용할 수 있습니다. 단, 50메가 이내만 가능하네요 그리고, 프로젝트도 네개 까지만 호스팅이 가능 합니다. 이건 뭐 이메일 주소만 만드시면 되니 얼마든지 사용가능 합니다. 단, 이미지가 별로 포함되지 않은 사이트만 개발이 가능 할 것 같습니다. RiouxSVN — Free, Private Sub...

[개발이야기#047] 인공지능 이야기 내글을 요약해서 다른곳에 보내 보자.

안녕하세요 가야태자 @talkit 입니다. 오늘 할려고 하는 인공지능 관련 내용은 그냥 python으로 한글 문서를 요약해줄 수 있을까라는 생각에 ^^ 해봤습니다. 그랬다가 결국에는 T5모델까지 가게 되었습니다. ^^ 관련글 [AI] 무료 사용 가능한 LLM API 서비스 — Steemit - @anpigon [개발이야기#045] 인공지능 이야기 윈도우에서 Ollama 사용해보기 — Steemit [개발이야기#046] 인공지능 이야기 윈도우에서 Ollama 사용해보기 with Python — Steemit 소스코드 ``` import pymysql from krwordrank.sentence import summarize_with_sentences from transformers import AutoTokenizer, AutoModelForSeq2SeqLM MySQL 연결 정보 db_host = "mysql_server_address" db_user = "mysql_user_id" db_password = "mysql_user_password" db_name = "steemit_postings" KoT5 모델 및 토크나이저 로드 tokenizer = AutoTokenizer.from_pretrained("lcw99/t5-large-korean-text-summary") model = AutoModelForSeq2SeqLM.from_pretrained("lcw99/t5-large-korean-text-summary") postings 테이블에서 데이터 가져오기 함수 def get_post_content(post_id): connection = pymysql.connect( host=db_host, user=db_user, password=db_password, db=db_name ) try: with c...

[개발이야기#048] 옵시디안을 윈도우와 아이패드에서 같이 사용해보자. - 옵시디안 설치

이미지
안녕하세요 가야태자 @talkit 입니다. 다음주도 좀 바쁘고 개발글은 주말에 조금씩 작성 가능할 것 같습니다. 이번주는 많이 바빠서 하나의 글도 출판을 못했습니다. ^^ 저는 여러가지 메모앱을 사용하고 있습니다. 윈도우즈에서는 옵시다인 , Google Keep 애플에서는 애플 메모 , Goodnotes 를 사용하고 있습니다. 그런데, 아이패드로 보면 옵시디안의 글을 볼만 합니다. Goodnotes는 너무 좋습니다. 참 저기에 notion 도 사용하고 있습니다. 그런데 제가 하는 업무가 통합입니다. ^^ 시스템 통합이요. SI라고 부릅니다. 그런데, 지금 보니 메모 통합이 필요합니다. 윈도우즈에 보는 메모, 아이오에스에서 보는 메모가 다릅니다. ^^ 이걸 극복하기 위해서 고려해본 툴이 옵시디안 입니다. 오늘은 그 첫번재 일환으로 옵시디안을 설치해보겠습니다. 설치문서는 누구보다 잘쓰는 저 이기 때문에 옵시디안이 궁금하신 분들은 따라해보시면 좋을 것 같습니다. 제 메인 PC에는 옵시디안이 설치 되어 있습니다. 지금은 제가 서브로 사용하고 있는 그램노트북 입니다. 집에서 PC로 전환하고 나서는 잘 사용하지 않고요 오늘 처럼 스타벅스에 와서 사용하고 있습니다. ^^ 여기에 일단 옵시디안을 다시 설치해보겠습니다. ^^ 옵시디안 다운로드 https://obsidian.md/download 위 URL에서 다운로드 하실 윘습니다. 옵시디안 for windows를 다운로드하시면 됩니다. 옵시디안 설치 설치 관리자 실행 다운로드 하셨으면 저기 오른쪽 위에 다운로드 버튼 누르시면 나와 있을 겁니다. 실행 버튼을 클릭하십시오. 저는 그냥 제 계정만 사용하고 있어서 다음 누릅니다. 설치 위치도 저기다 넣을꺼기 때문에 그대로 합니다. 변경 하실 분들은 변경 하시면 됩니다. 설치 버튼 누르시면 잘 설치 됩니다. 위와 같이 나오면 끝입니다. 그리고 마침 누르시면 옵시디안이 실행 될 겁니다. 옵시디안 최초의 볼트 만들기 앞 챕터에...

[개발이야기#049] 소프트웨어 버전 관리 시스템은 무엇인가?

소프트웨어 버전 관리 시스템이란 무엇일까? 안녕하세요, 가야태자 @talkit 입니다. 오늘은 간단하게 버전 관리 시스템(Version Control System, VCS) 에 대해 이야기해 보겠습니다. 버전 관리 시스템이란? 버전 관리 시스템은 말 그대로 소프트웨어의 소스 버전을 관리하는 시스템입니다. ChatGPT 에게 물어보니 아래와 같이 정의해 주더군요: 버전 관리 시스템(Version Control System, VCS) 은 파일이나 소프트웨어의 변경 이력을 추적하고 관리할 수 있는 도구 또는 시스템입니다. 주로 소스 코드의 변경을 관리하며, 협업 환경에서도 여러 사용자가 작업한 내용을 효율적으로 추적하고 통합할 수 있습니다. 이처럼 버전 관리 시스템은 현대 소프트웨어 개발에서 필수적인 도구입니다. 그렇다면, 버전 관리 시스템이 없던 시절 에는 어떻게 버전 관리를 했을까요? 버전 관리 시스템이 없던 시절 사실, 없었다기보다는 우리가 몰랐던 시절 에도 나름의 방법으로 버전 관리를 해왔습니다. 1. 폴더와 날짜로 관리 가장 간단한 방법은 날짜별로 폴더를 만들어 파일을 복사 하는 것이었습니다. 변경 전으로 복원할 일이 생기면 어제의 폴더에서 데이터를 복사해와서 수정하는 방식이었죠. 혼자 작업하는 경우에는 어느 정도 이 방식이 가능했습니다. 2. 협업 시의 버전 관리 팀 단위로 협업할 경우에는 각자 위와 같은 방식으로 파일을 관리하면서, 공통된 파일을 합치기 위해 머지 데이(Merge Day) 라는 개념을 도입했습니다. 머지 데이는 일주일에 한 번씩 모든 개발자가 자신이 작업한 내용을 공통 버전에 반영하는 날이었습니다. 물론 이 과정은 많은 수작업과 시간 이 필요했습니다. 버전 관리 시스템의 발전 버전 관리 시스템은 이러한 비효율성을 극복하기 위해 등장했습니다. 대표적인 세 가지 세대를 소개합니다: 1세대: CVS (Concurrent Versions System) CVS는 초기의 버전 관리 시스템 중 하나로, 파...

제 3회 포스팅 큐레이션 대회 참가 제안서 - 소프트웨어 개발 방법에 관한 이야기

안녕하세요 가야태자 @talkit 입니다. https://steemit.com/kr/@goodpost-kr/3-11-21 이번에도 #postingcuration 대회 기간이 돌아 왔습니다. 참가하실 분들은 위의 글을 참조 하시면 됩니다. 저는 이번에 소프트웨어 개발 방법에 관하여 라는 주제로 참여 하고 합니다. 저는 현재 시니어 개발자, 아키텍터로 근무하고 있습니다. 그래서 실제로 제가 준비하고 있는 프로젝트인 SteemSteps라는 프로젝트의 개발환경을 구축하려고 합니다. 개발 환경 구축에는 개발 언어 선정 부터 어떻게 개발결과를 자동화 할것인가 등을 다루게 될 것 같습니다. 가야태자의 개발이야기에 목차는 1. 버전관리소프트웨어에 대하여 2. 버전관리소프트웨어의 선정 3. 지속적인 통합 소프트웨어에 대하여 4. 지속적인 통합 소프트웨어의 선정 5. 개발자와 사용자 그리고 개발자간의 대화는 어떻게 할 것인가? 6. 테스트는 어떻게 진행되는가? 7. 프로덕션(제품화)를 위한 과정은 어떻게 되는가? 위 순서대로 글을 한번 적어 보도록 하겠습니다. 일단 늘 해오던 일이고, 앞으로도 해갈 일이라서 한번 정리해 놓으려고 합니다. 많은 관심 부탁 드립니다. 감사합니다. Posted through the ECblog app ( https://blog.etain.club )

[개발이야기#050] 스팀잇에 파일 업로드 하는 소스코드

이미지
안녕하세요 가야태자 @talkit 입니다. 7년전 소스코드가 동작을 합니다. imagehoster-python-client/imagehoster at master · emre/imagehoster-python-client 이미지를 자동으로 업로드 하고 싶은게 제 생각이었고, 해당 내용은 위코드 입니다. 위코드가 그런데 위 그림에서 보시듯이 6년 전 소스 코드입니다. 그런데 잘 됩니다. 위 이미지가 제가 테스트해본 이미지 입니다. ^^ (steemit) C:\dev\pythonWorkspace\steemit>python image_upload.py File uploaded: https://cdn.steemitimages.com/DQmaeDdW6WwfTxmeGJoPfW1iPFmnqU8yoTzLUfznjMUhYBh/image 제가 또 전에 말씀 드렸듯이 python은 초보 입니다. 그래서 조금 변경 했습니다. 소스코드 ``` import hashlib import os import struct from binascii import hexlify import ecdsa import requests from steem.commit import PrivateKey class ImageUploader: API_BASE_URL = "https://steemitimages.com" CHALLENGE = b"ImageSigningChallenge" def init (self, username, posting_wif): self.username = username self.posting_wif = posting_wif def checksum(self, filename): """ This function creates a binary sha256 digest with the image concatenated with the imageSigningChallenge....