Skip to content

생계형 개발자 수첩 ver4.0

이제 나이 먹어 강제로 4.0 버전업됨, 일인개발자임, 파키스탄식 코딩.. 오래된 코드도 다시 쓴다.

Month: 2018 8월

시놀로지(Synology) NAS에 GitHub처럼 운용하기 ( Feat. gogs ) 2/2

Posted on 2018년 8월 28일 - 2018년 9월 25일 by kimczip

지난번 포스팅에서는 gogs를 NAS에 설치하는것까지 진행해 보았다.

나스가 도메인이 연결 되있고, 그대로 실행한다면 웹브라우저에서 나타나지 않을 수 있다.

이번 네트워크 설정 부분은 사용자마다 다를수 있으므로 참고 정도로 보는게 옳은것 같다.

 

네트워크 환경 및 향후 시나리오

  • 공유기에서 NAS가 NAT-> DMZ모드로 설정되어있음 ( 보안 취약함 )
  • 도메인 연결됨
  • https 프로토콜 사용
  • 서브도메인으로 gogs사용

 

네트워크 설정

우선 도메인 제공 업체에서 DNS설정 부터 해준다.

git.kimcblog.com을 사용할 예정이라 CNAME 레코드를 추가 해준다.

다음으로 NAS의 DSM 관리 페이지로 이동하여 제어판 => 응용 프로그램 포털 => 역방향 프록시메뉴로 이동한다.

생성 버튼을 눌러 다음과 같이 입력한다.

위의 예시는 HTTPS 프로토콜을 사용하는 예시인데, HTTPS 프로토콜을 사용한다면 추가로 인증서 작업을 해줘야 한다.

제어판 => 보안 => 인증서로 이동한다.

인증서 발급 절차

  1. 추가버튼을 누른다.
  2. 새 인증서 추가 체크후 다음
  3. 설명은 자기가 알아보게 적고, Let’s Encrypt에서 인증서 얻기 체크 후 다음
  4. 도메인 이름 : git.kimcblog.com | 이메일 : 자신의 이메일 | 주체 대체 이름 : git.kimcblog.com 후 적용

을 누르면 인증서가 발급된다.

발급된 인증서를 선택하고 구성 버튼을 눌러 서비스항목에 git.kimcblog.com 항목을 git.kimcblog.com 인증서로 선택하여 확인을 누른다.

 

이 설정이 완료 되면 브라우저에서 https://git.kimcblog.com/ 입력하면 인스톨 페이지가 뜰 것이다.

 

 

gogs 초기 설치 셋팅

  • 데이터베이스 유형 : 시놀로지에 기본으로 제공하는 MariaDB를 설치 하였을 경우 MySQL을 선택한다.
  • 호스트 : 기본포트를 사용하였다면, MariaDB5는 ‘127.0.0.1:3306’ MariaDB10은 ‘127.0.0.1:3307’을 입력한다.
  • 사용자 : DB root계정을 사용해도 무방하나, 별도의 계정으로 운용하는걸 권장한다.
  • 비밀번호 : 사용자 계정의 비밀번호를 입력한다.
  • 데이터베이스 이름 : 이전 포스팅에서 phpMyAdmin으로 생성한DB ‘gogs’를 그대로 입력한다.
  • 애플리케이션 이름 : 원하는값 이름으로 설정
  • 저장소 최상위 경로 : 기본값으로 운영해도 무방하나, 필자는 volume 하위 폴더에 둠
  • 데몬 사용자 계정 : root 으로 입력
  • 도메인 : 메인 도메인 입력 ( kimcblog.com )
  • SSH 포트 : 기본 포트를 사용한다면 그대로, 다르다면 해당값 입력
  • HTTP 포트 : 기본 포트를 사용한다면 그대로, 다르다면 해당값 입력
  • 애플리케이션 URL : 서브 도메인을 운용하기 때문에 https://git.kimcblog.com/ 입력
  • 로그 경로 : 기본값으로 운영해도 무방

추가 설정은 상황에 맞게 입력하면 된다.

위의 상황에 따라 적절한 값을 입력하고 Gogs설치하기를 누른다.

위와 같이 설치가 완료 되었다.

Posted in 3.0Tagged git, gogs, NAS, 시놀로지1 Comment

시놀로지(Synology) NAS에 GitHub처럼 운용하기 ( Feat. gogs ) 1/2

Posted on 2018년 8월 28일 - 2022년 8월 25일 by kimczip

시놀로지 Nas에 Git Server가 있지만, SSH 또는 Telnet으로 접속해서 매번 명령어를 처야하는 번거로움도 있고,

명령어에 관한 지식도 배워야하고 이만 저만 번거로움이 있는게 아니다.

git을 쉽게 사용하고픈 마음에 검색좀 해봤는데 GitHub 처럼 Web Service를 제공 하는 방법이 있어

포스팅하게 되었다.

물론 현재 글쓰고 있는 시점에 시놀로지 Nas 패키지센터에 GitLab이라는 패키지를 제공하여 한방에 해결해주는

기능이 있지만, 어떠한 이유인지 서비스가 몇분 운용 되면 멈춤 현상 때문에 패키지를 삭제하고 다른 방법을 찾게 된거다.

위와 같은 설치형 무료 Git 서비스는 다음과 같다.

서비스명 지원OS URL
Bonobo Git Server Win https://bonobogitserver.com
gogs Linux/Mac/Win https://gogs.io
gitea Linux/Mac/Win https://gitea.io

이 포스팅은 다음과 같은 시나리오로 작성

  • gogs 사용
  • 서브도메인 운용 ( ex. https://git.kimcblog.com )
  • 장비 : Synology DS218+, NAS OS : DSM 6.2.23739 Update2

gogs 설치 전 준비 사항

NAS 패키지 센터에서 다음 패키지들을 설치한다.

  • Git Server
  • MariaDB 5 또는 MariaDB 10
  • phpMyAdmin

이후, phpMyAdmin에 접속하여 gogs라는 이름으로 데이터베이스를 생성

추후 SSH 접속을 하기 때문에 제어판 => 터미널 및 SNMP 메뉴에서 SSH 서비스 활성화에 체크

시놀로지 설치 패키지 gogs.spk 파일 만들기

gogs-spk 이 링크를 클릭하여 Clone or download => Download ZIP 파일을 다운로드한다.

이 파일은 손쉽게 gogs.spk 파일을 생성해준다.

다음으로 https://dl.gogs.io/ 이곳을 통하여 gogs 파일을 다운받는데 자신의 장비와 맞는 파일을 받길 바란다.

  • gogs_x.xx.xx_linux_armv5.zip : DS211j와 같이 Arm계열 CPU를 사용하는 시놀로지 나스용
  • gogs_x.xx.xx_linux_386.tar.gz : DS214 Play와 같이 Atom 계열 CPU를 사용하는 시놀로지 나스용
  • gogs_x.xx.xx_linux_amd64.tar.gz : RS2414rp+ 와 같이 Atom 64bits 계열 CPU를 사용하는 시놀로지 나스용

만약, 잘못 받을 경우 설치는 가능할 수는 있으나 서비스가 작동하지 않는다.

gogs.spk 파일 생성법

  1. DS218+의 경우 gogs_0.11.53_linux_amd64.tar.gz 파일을 다운받는다.
  2. 다운 받은 gogs-spk-master.zip 파일을 FTP 또는 FileStation을 통하여 NAS에 업로드 시킨다.
  3. gogs-spk-master.zip 파일을 압축해제 한다.
  4. 디렉토리 ‘gogs-spk-master’의 폴더 안으로 이동한다.
  5. 다운 받은 gogs_0.11.53_linux_amd64.tar.gz 파일을 ‘gogs-spk-master’폴더에 FTP 또는 FileStation을 통하여 NAS에 업로드 시킨다.
  6. Putty 또는 SSH 접속 툴로 NAS에 접속한다.
  7. 위의 5번 디렉토리 경로로 이동 ( > cd /volume1/[업로드경로] )
  8. 설치 패키지 생성할 때, 종속 패키지 검사 스크립트가 있는데 MariaDB 버전에 따라 수정해 줘야 한다.
    vi 편집기 또는 텍스트 에디터로 /gogs-spk-master/2_create_project/conf/PKG_DEPS 파일을 연다.
  9. [MariaDB] 항목에 값을 MariaDB 10버전 일 경우 dsm_min_ver=10.0-4300 로 수정 후 저장한다. ( MariaDB5 일 경우 수정 생략 )
  10. 명령창에서 다음과 같이 입력
    rm -rf 1_create_package/gogs/ && tar zxvf gogs_0.11.53_linux_amd64.tar.gz -C 1_create_package/
  11. 명령창에서 다음과 같이 입력
    sh create_spk.sh

위의 과정을 거치면 gogs.spk 파일이 생성이 된다.

이 파일을 로컬로 다운로드 한다.

나스의 DSM 페이지에서 패키지 센터를 클릭 한 후 설정메뉴에서 신뢰 수준을 모든 게시자로 변경하여 저장한다.

수동 설치 버튼을 눌러 내려받은 gogs.spk 파일을 선택하고 다음, 적용버튼을 눌러 설치한다.

여기까지가 gogs 설치고 다음 포스팅엔 네트워크 설정 및 gogs설정에 대하여 알아본다.

Posted in 3.0Tagged git, gogs, NAS, 시놀로지2 Comments

소프트웨어 기능 명세서 작성 방법

Posted on 2018년 8월 1일 - 2018년 8월 1일 by kimczip

모든 사람들이 명세서 작업을 해야한다고 생각은 하지만, 아무도 명세서 작업을 하지 않습니다.

왜 명세서 작업을 하지 않을까요?

명세서 작업단계를 건너뛰면 시간을 절약할 수 있다고 말합니다.

이런 사람들은 명세서 작성 작업이 NASA에서 우주 왕복선을 만드는 공학도나 큰 규모의 보험회사 직원에게나 필요한 사치쯤으로 치부합니다.

명세서 작업을 하지 않는 관례는 소프트웨어 프로젝트에서 가장 크고 불필요한 위험 요인을 짊어지는 행동입니다. 이는 등에 옷가지만을 걸친 다음에 날기를 기대하며 모하비 사막을 건너려고 출발하는 것만큼이나 바보스럽습니다.

명세서 작업을 생략하고 바로 코드 작성으로 뛰어드는 프로그래머나 소프트웨어 개발자는 스스로를 허리춤에서 순식간에 총을 뽑는 멋진 총잡이라고 생각하는 경향이 있습니다.

하지만 결코 그렇지 않으며, 이런 개발자일수록 놀라 자빠질 정도로 생산성이 낮습니다.

즉, 형편 없는 코드를 작성하거나 조잡한 소프트웨어를 양산하며, 결국 전혀 쓸데없는 거대한 위험을 자초해 프로젝트를 위협합니다.

기능 명세 – FUNCTIONAL SPECIFICATION

완전히 사용자 관점에서 제품이 어떻게 동작할지를 기술합니다. 어떻게 구현했는지는 신경도 쓰지 않습니다. 기능에 대해 이야기하고, 화면, 메뉴, 대화상자와 같은 사용자 인터페이스 부품을 명세합니다.

기술 명세 – TECHNICAL SPECIFICATION

프로그램 내부 구현을 기술합니다. 자료구조와 관계형 데이터베이스 모델과 프로그래밍 언어, 도구, 알고리즘 선택과 같은 항목을 다룹니다.

 * 좋은 기능 명세에 대한 아이디어!

1. 면책 조항 

방어적인 내용 “이 명세는 완벽하지 않습니다.” 시간이 흘러 명세가 완벽하게 되면 다음과 같이 면책 조항을 바꿀 수 있다. “제가 알기로는 이 명세는 거의 완벽합니다. 하지만 무언가 빠뜨렸을 경우에는 제게 말씀해주세요”

2. 저자

명세는 1명이 전담해서 작성해야만 합니다. 큰 제품일 경우라면, 여러 부문으로 쪼갠 다음에 각각을 개인에게 할당해서 독자적으로 명세하게 합니다. 어떤 회사는 명세에 이름을 넣어서 개인의 공로를 인정하는 관례를 이기적인 행동이나 팀워크를 해치는 일이라고 생각합니다.

하지만 이는 허튼 소리입니다. 사람들은 자신이 명세한 사항에 대해 책임감과 소유의식을 느껴야 합니다. 명세에서 무언가 잘못되면, 이를 수정할 책임이 있는 명세서 소유자를 지정해야 하며 이 사람 이름이 바로 명세서에 찍혀 있어야 합니다.

3. 시나리오

생생하고 현실적인 시나리오를 만들수록, 실 사용자나 가상으로 창조한 사용자 모두를 위한 제품을 더 잘 만들 수 있습니다.

4. 회피목표

팀 단위로 제품을 만들 때 없으면 못살겠다는 이유만으로 실제든 상상이든 간에 각자 좋아하는 상큼한 기능을 넣으려는 경향이 있습니다. 이렇게 불필요한 기능을 쳐내는 가장 좋은 방법으로 명세에 회피목표 항목을 추가합니다.

5. 개괄

개괄은 명세를 위한 목차와 유사합니다. 개괄은 간단한 흐름도이거나 광범위한 아키텍쳐 관점에서 본 토론일 수도 있습니다. 모든 사람이 숲을 보기 위해 목차를 읽습니다. 이렇게 해야 나무도 의미가 있을 것입니다.

6. 세부사항

웹 타입 서비스를 설계할 때 세부사항을 정리하는  좋은 방법은, 모든 가능한 화면에 기준이 되는 이름을 붙인 다음, 너무나도 자세해 못 견딜 만큼 따분한 세부사항을 매 화면마다 기술하는 장을 제공하는 겁니다.

세부사항은 기능 명세에서 가장 중요한 핵심입니다.

7. 미해결 문제

명세 첫 버전에 미해결 문제를 남겨놓아도 나쁘지 않습니다. 문제점을 쉽게 찾을 수 있도록 특별한 스타일을 적용해서 표시를 하고, 적당한 대안이 있으면 이를 논의합니다. 프로그래머가 작업을 시작할 무렵에 이런 모든 미해결 사항들을 짚어놔야 합니다.

단순히 프로그래머가 모든 쉬운 작업부터 시작하도록 내 버려두고, 나중에 미 해결 문제를 푸는 방법이 옳다고 생각할지도 모르겠습니다. 하지만, 이는 잘못된 생각입니다. 프로그래머가 코드를 구현하려고 시도할 무렵에 나타나는 새로운 문제점과 씨름하는 과정에서 또 다른 문제점이 나타날 것이며, 당신이 미리 알고 있었으며, 예전에 끝냇어야 하는 미해결 문제 역시 그대로 남아 있을 것입니다. 설상 가상으로 난이도 높은 문제를 해결하는 과정이 코드를 작성하는 방법에도 상당한 영향을 미칠지도 모르겠습니다.

8. 방주 (SIDE NOTE)

명세를 작성하는 동안에 프로그래머, 테스터 , 마케팅팀원, 기술집필가와 같은 다양한 청중이 있음을 기억해야 합니다. 명세를 작성할 때 단지 특정 그룹에만 유용한 활자화한 사실을 고려하면 좋겠습니다. 예를 들어 프로그래머를 위해 기술적으로 유용한 몇가지 세부 사항을 기술하는 메시지를 ‘기술노트’항목으로 구분해서 기록할 수 있습니다. 마케팅 팀원은 이런 메시지를 무시하지만 프로그래머는 이런 메시지를 탐독합니다.

9. 명세는 지속적으로 개정해야 합니다.

주기적으로 개정하여 현실을 반영합니다. 명세는 항상 제품이 동작하는 원리를 최대로 반영하는 그림자 입니다. 명세는 단지 제품이 코드완료시점에서 굳어질 따름입니다.

 * 명세서 작성 팁

1. 재미있게 씁시다.

여러분이 작성한 명세가 유쾌하며 재미있고 읽기 쉽다는 이유로 당신을 얕보는 회사에 근무한다면, 어서 다른 회사를 찾는 게 낫습니다.

2. 명세를 쓰는 작업은 머리가 돌아가도록 코드를 쓰는 작업과 유사하다.

문서를 소개하려는 대상층을 감안하고, 단계마다 그 사람이 무엇을 이해하길 바라는지 먼저 상각해보세요. 문장마다 독자가 내용을 깊이 이해했을지, 문맥의 의미는 파악했는지 스스로 되물어보십시오. 그래야 명세를 읽는 높으신 분께서 수많은 기술 용어에 압도당해 처음부터 문서 읽기를 포기하거나 멈추지 않게 될 겁니다.

3. 최대한 단순하게 작성하라.

쉬운 문장으로 작성하는 방식은 왠지 프로답지 않다는 생각에, 형식적이며 현학적인 언어를 남발하지는 마세요. 가능한 가장 쉬운 언어를 사용해야 합니다. 실제화면 보다 명세서를 더 효과적으로 개선하는 방법은 없습니다. 그림은 천마디 말보다 낫습니다.

4. 여러차례에 걸쳐 검토하고 다시 읽어라.

5. 표준양식은 해롭다고 간주한다.

모든 명세는 일정한 형식을 갖춰야 한다라는 생각은 버리십시오.

출처: http://elky.tistory.com/598 [엘키의 주절 주절]

Posted in 3.0Tagged 개발문서, 명세서Leave a comment

버전

  • 3.0
  • 4.0

최근에..

  • 실행파일 디지털 서명하기 (프로그램 배포)
  • 자신의 PC에 막혀 있는 포트 검색
  • DB Table Column 이름 가져오기.
  • DLL 파일 PublicKeyToken 얻기
  • DSM 7.0에서 MariaDB 10 설정

Tags

10Gbps AMD Bitspower C# Command Control Corsair Crawling Exception F4-3200C14D-16GFX FLAREX G.Skill git gogs MariaDB MySQL NAS OpenCV Parallel PC-O9 rainmeter Ryzen scimitar Thermaltake UI Web WinForm 개발팁 개인사업자 광명시청 네트워크속도 데이터베이스 라이젠 랜선 랜케이블 리안리 메모리 명령프롬프트 수냉쿨링 수로 시놀로지 직구 커스텀쿨링 컴퓨터 퍼옴
Proudly powered by WordPress | Theme: micro, developed by DevriX.