{{htmlmetatags>
metatag-description=(심플웍스, SimpleWorks)
metatag-og:description=(심플웍스, SimpleWorks)
}}
====== SimpleWorks ======
**심플 이즈 베스트**\\ \\
"완벽한 설계란 더 추가할게 없을 때가 아니라, 더 뺄 것이 없을 때 이루어진다."\\ - 앙투안 드 생텍쥐페리 -
**사연 없는 코드는 없다.**\\ \\
"모든 코드에는 사연이 있습니다.\\ 사연 없는 코드는 쓰레기입니다."
===== 디렉터리 구성 =====
==== Dynamic Web Project ====
@startmindmap
* htdocs
** resources
*** example
*** simpleworks
**** com
***** css
******_ reset.css
***** font
****** nanum
****** noto
***** img
****** btn
****** ico
**** lib
**** src
*****_ util.js
*****_ util.json
****_ initializer.js
****_ README.md
** WEB-INF
*** lib
*** src
**** simpleworks
***** util
******_ util.json
*****_ Initializer.java
*****_ README.md
*** tld
**** simpleworks
***** util
@endmindmap
==== Maven/Gradle Project ====
@startmindmap
* src
** main
*** java
**** simpleworks
***** util
******_ util.json
*****_ Initializer.java
*****_ README.md
*** resources
*** webapp
**** resources
***** example
***** simpleworks
****** com
******* css
********_ reset.css
******* font
******** nanum
******** noto
******* img
******** btn
******** ico
****** lib
****** src
*******_ util.js
*******_ util.json
******_ initializer.js
******_ README.md
**** WEB-INF
***** lib
***** tld
****** simpleworks
******* util
@endmindmap
===== 네이밍 규칙 =====
==== 공통 ====
^ 구분 ^ 규칙 ^ 비고 ^
| 접두사 | 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개 포함
==== 구문 ====
==== JavaScript ====
* jQuery
* 선언자 $jq
* 객체 변수 접두사 $
==== CSS ====
* z-index
* 10 단위로 사용
* 최상위 9999 사용 ((최대 유횻값 2147483647))
==== Javadoc/JSDoc ====
/**
* 설명
*
* 여러줄 작성
*
*
* @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 ((TRUNCATE 포함))
* DML
* DQL
* 사용자 계정
* DML
* DQL
==== 암호화 ====
^ 구분 ^ 위치 ^ 대상 ^ 문자열 ^ 솔트값 ^
| 단방향 | 프론트엔드 → 백엔드 | 파라미터 | 비밀번호 (해시 후 전송) | |
| ::: | 백엔드 | 데이터 | 비밀번호 해시값 | 기본키 |
| 양방향 | 백엔드 → 프론트엔드 | 파라미터 | 기본키 | 세션 ID |
| ::: | 백엔드 | 데이터 | 개인정보 | 설정값 |
* 데이터베이스 연결 정보
===== 버전 관리 =====
==== Git Branch ====
* master
* develop
* release
* release/1.0.0 ((Semantic Versionin: https://semver.org/lang/ko/))
==== 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 ====
* 최초 배포 ((x.0.0 배포 시))
* 기능 추가 및 안정화
* 업데이트 내역
* 기능 개선 및 안정화
* 업데이트 내역
* 버그 픽스 및 안정화
* 업데이트 내역
* 보안 패치 및 안정화
* 업데이트 내역
===== 개발 환경 =====
==== 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 이상 ((17, 21 이상 별도 프로젝트))
* HTML5/CSS3
* JavaScript
* ECMAScript 2015 (ES6)
* jQuery 3.7.x
* jQuery UI 1.14.x
===== 기본 스키마 =====
==== 테이블 =====
* 로그인 ((로그인 시도 횟수 정책))
* 메뉴 관리
* 권한 관리
* 코드 관리
* 시스템 코드 ((수정 불가))
* 사용자 코드
* 로그 관리
* 로그인 성공/실패
* 시스템 예외/오류
* 첨부 파일
==== 함수 =====
^ 함수명 ^ 매개변수 ^ 리턴 ^ 비고 ^
| fn_null_to_zero | val 변환할 값 ((숫자형 컬럼)) | 0 | null → 0 |
| fn_masking | val 변환할 값 \\ opt 옵션 \\ - nm\\ - id\\ - email\\ - phone\\ - rrn\\ - brn\\ - crn\\ - ip ((v4, v6)) | 마스킹된 값 | FIXME |
| fn_day_of_week | dt 날짜\\ fmt 포맷\\ - kor ((일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일))\\ - kor_short ((일, 월, 화, 수, 목, 금, 토))\\ - eng ((Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday))\\ - eng_short ((Sun, Mon, Tue, Wed, Thu, Fri, Sat))\\ - num ((1, 2, 3, 4, 5, 6, 7)) | 요일 | 요일 |
{{tag>"심플웍스" "SimpleWorks"}}