사용자 도구

사이트 도구


사이드바

잡개발자:심플웍스:simpleworks

문서의 이전 판입니다!


SimpleWorks

심플 이즈 베스트

"완벽한 설계란 더 추가할게 없을 때가 아니라, 더 뺄 것이 없을 때 이루어진다."
- 앙투안 드 생텍쥐페리 -
사연 없는 코드는 없다.

"모든 코드에는 사연이 있습니다.
사연 없는 코드는 쓰레기입니다."

디렉터리 구성

Dynamic Web Project

htdocsresourcesexamplesimpleworkscomcssreset.cssfontnanumnotoimgbtnicolibsrcutil.jsutil.jsoninitializer.jsREADME.mdWEB-INFlibsrcsimpleworksutilutil.jsonInitializer.javaREADME.mdtldsimpleworksutil

Maven/Gradle Project

srcmainjavasimpleworksutilutil.jsonInitializer.javaREADME.mdresourceswebappresourcesexamplesimpleworkscomcssreset.cssfontnanumnotoimgbtnicolibsrcutil.jsutil.jsoninitializer.jsREADME.mdWEB-INFlibtldsimpleworksutil

네이밍 규칙

공통

구분 규칙 비고
접두사 get 값을 가져올 때
set 값을 설정할 때
is 일치 여부
contains 값 포함 여부
has 속성/상태 포함 여부
to 변환
compare 비교
enc 인코딩
dec 디코딩
read 읽기
write 쓰기
init (설정값) 초기화
reset (데이터) 초기화
접미사 Add 더하기/빼기
Diff 차이
Disable 비활성화
Enable 활성화
전치사 To 변환
반복문 i 1 Depth
c 2 Depth
n 3 Depth
페이징 total_count 전체 카운트
total_page 전체 페이지
now_page 현재 페이지
first_page 처음 페이지
last_page 마지막 페이지
list_size 리스트 사이즈
block_size 블록 사이즈
block_begin_page (블록) 시작 페이지
block_end_page (블록) 종료 페이지
block_prev_page (블록) 이전 페이지
block_next_page (블록) 다음 페이지

Java

구분 규칙 비고
접두사 CONST_ 상수
sel SELECT
ins INSERT
upd UPDATE
del DELETE
  • 파스칼 표기법 (PascalCase)
    • 클래스
  • 카멜 표기법 (camelCase)
    • 메소드
  • 스네이크 표기법 (snake_case)
    • 변수
  • 스크리밍 스네이크 케이스 (SCREAMING_SNAKE_CASE)
    • 상수

JavaScript

구분 규칙 비고
접두사 CONST_ 상수
config_ 설정 변수
global_ 전역 변수
$ DOM 요소 참조 변수
_ 내부 전용 변수
fn 함수
  • 파스칼 표기법 (PascalCase)
    • 클래스
  • 카멜 표기법 (camelCase)
    • 메소드/함수
  • 스네이크 표기법 (snake_case)
    • 변수
  • 스크리밍 스네이크 케이스 (SCREAMING_SNAKE_CASE)
    • 상수

CSS

  • 케밥 표기법 (kebab-case)
    • id
    • class
    • data-*

Database

구분 규칙 비고
접두사 jd_ 기본 테이블
ex_ 예시 테이블
tb_ 테이블
vw_ 뷰
fn_ 함수
seq_ 시퀀스
idx_ 인덱스
trg_ 트리거
proc_ 프로시저
  • 스네이크 표기법 (snake_case)
    • 테이블/컬럼
    • 뷰
    • 함수
    • 시퀀스
    • 인덱스
    • 트리거
    • 프로시저
  • 길이 제한
    • 최대 30바이트

코딩 규칙

공통

  • 파일 인코딩은 UTF-8 사용
  • 들여쓰기
    • 탭 문자
    • 크기 4칸
  • 줄 끝 공백 제거
  • 파일 끝에 개행 문자 1개 포함

구문

<!DOCTYPE html>
<html lang="ko">
<head>
	<title></title>
	<meta charset="UTF-8">
	<meta http-equiv="Expires" content="-1">
	<meta http-equiv="Pragma" content="no-cache">
	<meta http-equiv="Cache-Control" content="no-cache">
	<script src="*.js"></script>
	<link rel="stylesheet" href="*.css">
	<style>
		/*
			CSS
		*/
	</style>
</head>

<body>
	<script>
		/*
			JavaScript
		*/
	</script>
</body>
</html>

JavaScript

  • jQuery
    • 선언자 $jq
    • 객체 변수 접두사 $

CSS

  • z-index
    • 10 단위로 사용
    • 최상위 9999 사용 1)

Javadoc/JSDoc

/**
 * 설명
 * <pre>
 * 여러줄 작성
 * </pre>
 *
 * @param
 * @return
 */

Task Tags

  • TODO: 할 일
    • 예시) TODO: 기능 개선/추가 필요
  • FIXME: 수정이 필요한 부분
    • 예시) FIXME: 오류 수정 필요
  • NOTE: 설명
    • 예시) NOTE: Legacy Code
  • XXX
  • BUG

.editorconfig

root = true

[*]
charset = utf-8
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf

API 규칙

상태 코드

코드 비고
200 성공
403 권한 없음
404 데이터 없음

Response Body

Name Type Description Required
status String success: 성공
error: 오류
fail: 실패
O
message String error message
code String error code
result JSON

{
	"status": "success",
	"result": {
		"data" : [
			{
				"key": "value"
			}
		],
		"paging": {
			"total_count": 20,
			"total_page": 2,
			"now_page": 1,
			"list_size": 10,
			"block_size": 10
		}
	}
}

{
	"status": "success",
	"result": {
		"data" : [
			{
				"key": "value"
			}
		]
	}
}

{
	"status": "error",
	"message": "error message",
	"code": "error code"
}

{
	"status": "fail"
}

REST API

FIXME

보안 규칙

데이터베이스 계정

  • DBA 계정
    • DDL 2)
    • DML
    • DQL
  • 사용자 계정
    • DML
    • DQL

암호화

구분 위치 대상 문자열 솔트값
단방향 프론트엔드 → 백엔드 파라미터 비밀번호 (해시 후 전송)
백엔드 데이터 비밀번호 해시값 기본키
양방향 백엔드 → 프론트엔드 파라미터 기본키 세션 ID
백엔드 데이터 개인정보 설정값
  • 데이터베이스 연결 정보

버전 관리

Git Branch

  • master
  • develop
  • release
    • release/1.0.0 3)

Commit Message

type 비고
FIXME FIXME

.gitignore

# Windows
**/[Tt]humbs.db
**/[Dd]esktop.ini

# Mac
**/.DS_Store

# Eclipse
/.externalToolBuilders
/.settings
.classpath
.factorypath
.project

# IntelliJ & Android Studio
**/.idea/

# Visual Studio Code
**/.vscode/

# Build
/bin
/build
/target
/javadoc
**/WEB-INF/classes/

Release Notes

  • 최초 배포 4)
  • 기능 추가 및 안정화
    • 업데이트 내역
  • 기능 개선 및 안정화
    • 업데이트 내역
  • 버그 픽스 및 안정화
    • 업데이트 내역
  • 보안 패치 및 안정화
    • 업데이트 내역

개발 환경

IDE

  • Eclipse / STS

WAS

  • Tomcat 9.0.x

DBMS

  • MySQL 8.0.1 이상
  • MariaDB 10.2.2 이상
  • MSSQL 2008 이상
  • Oracle 9i 이상
  • Tibero 6 이상
  • PostgreSQL 11.0 이상

etc.

  • OpenJDK 1.8.0.161 이상 5)
  • HTML5/CSS3
  • JavaScript
    • ECMAScript 2015 (ES6)
    • jQuery 3.7.x
    • jQuery UI 1.14.x

기본 스키마

테이블

  • 로그인 6)
  • 메뉴 관리
  • 권한 관리
  • 코드 관리
    • 시스템 코드 7)
    • 사용자 코드
  • 로그 관리
    • 로그인 성공/실패
    • 시스템 예외/오류
  • 첨부 파일

함수

함수명 매개변수 리턴 비고
fn_null_to_zero val 변환할 값 8) 0 null → 0
fn_masking val 변환할 값
opt 옵션
- nm
- id
- email
- phone
- rrn
- brn
- crn
- ip 9)
마스킹된 값 FIXME
fn_day_of_week dt 날짜
fmt 포맷
- kor 10)
- kor_short 11)
- eng 12)
- eng_short 13)
- num 14)
요일 요일
1)
최대 유횻값 2147483647
2)
TRUNCATE 포함
3)
Semantic Versionin: https://semver.org/lang/ko/
4)
x.0.0 배포 시
5)
17, 21 이상 별도 프로젝트
6)
로그인 시도 횟수 정책
7)
수정 불가
8)
숫자형 컬럼
9)
v4, v6
10)
일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일
11)
일, 월, 화, 수, 목, 금, 토
12)
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
13)
Sun, Mon, Tue, Wed, Thu, Fri, Sat
14)
1, 2, 3, 4, 5, 6, 7