Skip to content
s2quake edited this page Apr 27, 2018 · 5 revisions

κ°œμš”

ν¬λ ˆλ§ˆλž€ κ²Œμž„ κ°œλ°œμ— ν•„μš”ν•œ 데이터λ₯Ό λ§Œλ“€κ³  μƒμ„±λœ 데이터λ₯Ό κ²Œμž„μ—μ„œ μ‚¬μš©ν•  수 있게 ν•΄μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. λ™μ‹œ νŽΈμ§‘μ΄ κ°€λŠ₯ν•œ ν¬λ ˆλ§ˆλŠ” κ²Œμž„ λ””μžμ΄λ„ˆμ™€ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λ™μ‹œμ— μ°Έμ—¬ν•΄μ„œ μžμ‹ μ΄ κ΅¬ν˜„ν•˜κ³ μž ν•˜λŠ” 뢀뢄에 λŒ€ν•œ 데이터λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 크레마 μ„œλ²„μ˜ λ°μ΄ν„°λŠ” svn에 μ €μž₯되기 λ•Œλ¬Έμ— μ–Έμ œλ“ μ§€ 이전 데이터λ₯Ό μ—΄λžŒν•  수 있으며 ν•„μš”μ— 따라 νŠΉμ • μ‹œμ μœΌλ‘œ λŒμ•„κ°€κ±°λ‚˜ 볡ꡬ가 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ˜ν•œ 크레마 ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨μ—μ„œ μ œκ³΅ν•˜λŠ” 비ꡐ κΈ°λŠ₯으둜 μ„œλ‘œλ‹€λ₯Έ λ°μ΄ν„°μ˜ 차이점을 확인할 수 있으며 데이터λ₯Ό 병합할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ ‡κ²Œ κ²Œμž„ κ°œλ°œμ€‘μ— λ§Œλ“€μ–΄μ§„ λ°μ΄ν„°λŠ” μ‹€μ œ κ²Œμž„μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ°”μ΄λ„ˆλ¦¬λ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. λ˜ν•œ 언어별(c#, typescript, c++)둜 λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό 읽어듀일 수 μžˆλŠ” μ½”λ“œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œμ—λŠ” λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό μ½μ–΄λ“€μ΄λŠ” λΆ€λΆ„ 뿐만 μ•„λ‹ˆλΌ νƒ€μž…κ³Ό ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 뢀뢄도 μƒμ„±λ©λ‹ˆλ‹€. 그리고 μ‰½κ²Œ 데이터λ₯Ό μ—΄λžŒν•  수 μžˆλ„λ‘ 각 ν…Œμ΄λΈ” μ½”λ“œμ—λŠ” Find λ©”μ†Œλ“œκ°€ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€.

어원

ν¬λ ˆλ§ˆλŠ” μ—μŠ€ν”„λ ˆμ†Œλ₯Ό μΆ”μΆœν• λ•Œ 상단에 μƒκΈ°λŠ” κ±°ν’ˆμΈ΅μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 쓴맛이 κ°•ν•œ μ—μŠ€ν”„λ ˆμ†Œμ— λΉ„ν•΄ κ±°ν’ˆμΈ΅μ€ λΆ€λ“œλŸ¬μš°λ©° 색상이 ν™©κΈˆμƒ‰μ΄λΌ 미관상 보기에 μ’‹μŠ΅λ‹ˆλ‹€. μ—μŠ€ν”„λ ˆμ†Œλ₯Ό λ§ˆμ‹€λ•Œ ν¬λ ˆλ§ˆκ°€ 함꼐 λ§ˆμ‹œλ©΄ 쓴맛이 μ€‘ν™”λ˜λŠ” λŠλ‚Œμ„ 주기도 ν•©λ‹ˆλ‹€. κ²Œμž„ 개발 데이터을 λ§Œλ“€κΈ° μœ„ν•œ 과정은 정말 λ³΅μž‘ν•˜λ©° μ‚¬μš©λ˜λŠ” κΈ°μˆ λ„ μ°Έ λ§ŽμŠ΅λ‹ˆλ‹€. 일반적으둜 μ‚¬μš©λ˜λŠ” mssql, mysql λ“± 데이터 베이슀 관리 νˆ΄μ„ 보면 정말 λ³΅μž‘ν•˜κ³  μ‚¬μš©ν•˜κΈ° νž˜λ“­λ‹ˆλ‹€. μ—μŠ€ν”„λ ˆμ†Œκ°€ 이런 λ³΅μž‘ν•˜κ³  μ–΄λ €μš΄ κ²Œμž„ 데이터 κ°œλ°œμ— λΉ„μœ ν•˜μžλ©΄ ν¬λ ˆλ§ˆλŠ” 쓴맛을 쀑화 μ‹œμΌœμ£Όλ“―μ΄ κ²Œμž„ 데이터 κ°œλ°œμ„ 쒀더 μ‰½κ²Œ μƒμ„±ν•˜κ³  μ‚¬μš©ν• μˆ˜ 있게 ν•΄μ£ΌλŠ” 역할을 ν•©λ‹ˆλ‹€.

μ‹œμž‘ν•˜κΈ°μ— μ•žμ„œ 크레마의 μ„œλ²„λŠ” svn 기반으둜 μ œμž‘λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. svn에 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ μ•„λž˜ λ§ν¬μ—μ„œ svn을 λ°›μ•„ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

참고둜 크레마 μ„œλ²„μ—μ„œ μ‚¬μš©λœ svn은 tortoisesvn이며 버전은 1.9μž…λ‹ˆλ‹€.

https://tortoisesvn.net/

μ†”λ£¨μ…˜ ꡬ성

server.sln

cremaserver λ₯Ό λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œμ νŠΈκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

client.sln

UI 기반의 ν΄λΌμ΄μ–ΈνŠΈ crema와 μ½˜μ†” 기반의 ν΄λΌμ΄μ–ΈνŠΈ cremaconsole 을 λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•  수 μžˆλŠ” ν”„λ‘œμ νŠΈκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

tools.sln

μ½”λ“œμ™€ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό μΆ”μΆœν•˜λŠ” μ½˜μ†” 기반 ν”„λ‘œκ·Έλž¨μΈ cremadev와 μ—¬λŸ¬κ°€μ§€ λ‹€μ–‘ν•œ 툴의 ν”„λ‘œμ νŠΈκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

crema.sln

λ°°ν¬ν•˜κΈ° μœ„ν•΄ server, client, toolsλ₯Ό λͺ¨μ•„λ‘” μ†”λ£¨μ…˜μž…λ‹ˆλ‹€.

λΌμ΄μ„ μŠ€

ν¬λ ˆλ§ˆμ—μ„œλŠ” 3개의 유료 라이브러리λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ½˜μ†” 기반 ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” λΌμ΄μ„ μŠ€κ°€ 없어도 횟수 μ œμ•½μ΄ 있기 λ•Œλ¬Έμ— μ‹€ν–‰ν•˜λŠ”λ°λŠ” μ§€μž₯이 μ—†μ§€λ§Œ UI 기반 cremaλŠ” λΌμ΄μ„ μŠ€κ°€ μ—†μœΌλ©΄ 싀행이 되질 μ•ŠμŠ΅λ‹ˆλ‹€. cremaλŠ” Releases μ—μ„œ λ‹€μš΄λ‘œλ“œ λ°›μ•„ μ‹€ν–‰ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

  • Xceed DataGrid for WPF v5.7
    • λΌμ΄μ„ μŠ€ μ—†μ„μ‹œμ— crema μ‹€ν–‰ λΆˆκ°€λŠ₯
  • Xceed Toolkit Plus for WPF
    • λΌμ΄μ„ μŠ€ μ—†μ„μ‹œμ— crema, cremadev λΉŒλ“œν›„ μ‹€ν–‰ λΆˆκ°€λŠ₯
  • Newtonsoft.Json.Schema
    • cremaserver와 cremaconsoleμ—μ„œ μ‚¬μš©
    • μ‹€ν–‰μ—λŠ” λ¬Έμ œκ°€ μ—†μœΌλ‚˜ 일뢀 κΈ°λŠ₯의 μ‚¬μš©νšŸμˆ˜κ°€ μ œν•œλ¨(자주 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” κΈ°λŠ₯)

λΌμ΄μ„ μŠ€ μž…λ ₯ 방법은 μ†ŒμŠ€ ν΄λ”μ—μ„œ licenses 폴더내에 ν•΄λ‹Ή νŒŒμΌμ„ μ—΄μ–΄ ν‚€λ₯Ό μž…λ ₯ν•˜μ‹œκ³  μ €μž₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

ν”„λ‘œκ·Έλž¨ ꡬ성

cremaserver

μ½˜μ†” 기반 크레마 μ„œλ²„ ꡬ동 ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.

cremaserver.exe run repo-path dataBaseNames ...
  • run : 크레마 ꡬ동을 μœ„ν•œ μ‹€ν–‰ λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • repo-path : 크레마 κ΅¬λ™μ‹œ μ €μž₯μ†Œ 경둜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • dataBaseNames ... : μƒλž΅ κ°€λŠ₯ν•˜λ©° μ„œλ²„ κ΅¬λ™μ‹œ ν™œμ„±ν™”λ  데이터 베이슀 λͺ©λ‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • κ΅¬λ™μ‹œ default 데이터 베이슀λ₯Ό ν™œμ„±ν•˜κ³ μž ν•˜λ©΄ defaultλ₯Ό μž…λ ₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
  • 크레마 μ„œλ²„ κ΅¬λ™μ‹œ κΈ°λ³Έ ν¬νŠΈλŠ” 4004μž…λ‹ˆλ‹€. λ‹€λ₯Έ 포트λ₯Ό μ‚¬μš©ν•˜κ³ μž ν• λ•ŒλŠ” --portλ₯Ό μ‚¬μš©ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
    • cremaserver.exe run repo-path --port 5005

μœˆλ„μš° μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λͺ…λ Ή ν”„λ‘¬ν”„νŠΈλ₯Ό κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ 싀행뒀에 μ•„λž˜μ™€ 같이 μ‹€ν–‰ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

cremaserver.exe service install repo-path

crema

UI 기반 크레마 ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨ Alt text

μ˜ˆμ‹œμ²˜λŸΌ λͺ…령쀄을 ν†΅ν•΄μ„œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

crema.exe --address crema://userID:password@address/dataBaseName

κΈ°λ³Έ ν¬νŠΈκ°€ 4004κ°€ μ•„λ‹Œ μ„œλ²„μ— μ ‘μ†μ‹œμ—λŠ” ν¬νŠΈκ°’μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

crema.exe --address crema://userID:password@address:port/dataBaseName

cremaconsole

μ½˜μ†” 기반 크레마 ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. 크레마 μ„œλ²„ 접속후 REPL ν™˜κ²½μ„ μ œκ³΅ν•˜μ—¬ 각쒅 크레마 κ΄€λ ¨ λͺ…령을 μˆ˜ν–‰ν•  수 있으며, μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‹€ν–‰ν•˜μ—¬ μžλ™ν™” μž‘μ—…μ„ μˆ˜ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

REPL

cremaconsole.exe connect address

Javascript μ‹€ν–‰

cremaconsole.exe run javascript.js

cremadev

μ½˜μ†” 기반 크레마 μ½”λ“œ 및 λ°”μ΄λ„ˆλ¦¬ 데이터 생성 ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. μ§€μ›λ˜λŠ” μ½”λ“œλŠ” c#, typescript, c++ μž…λ‹ˆλ‹€. 기본값은 c#μž…λ‹ˆλ‹€.

cremadev.exe get address output-Path
  • get : μ½”λ“œμ™€ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•œ λͺ…λ Ήμž…λ‹ˆλ‹€.
  • address : κ°€μ Έμ˜¬ μ„œλ²„μ˜ μ£Όμ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. κΈ°λ³Έ ν¬νŠΈλŠ” 4004이며 μƒλž΅λ  수 μžˆμŠ΅λ‹ˆλ‹€.
  • output-path : μ½”λ“œμ™€ λ°”μ΄λ„ˆλ¦¬ 데이터가 생성될 경둜이며 λ°”μ΄λ„ˆλ¦¬ λ°μ΄ν„°μ˜ 이름은 crema.dat μž…λ‹ˆλ‹€.
  • --lang : 좜λ ₯ μ–Έμ–΄λ₯Ό μ§€μ •ν•  수 있으며 기본값은 c#μž…λ‹ˆλ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” ts이며 c++λŠ” cpp μž…λ‹ˆλ‹€.

typescript

cremadev.exe get address output-Path --lang ts

c++

cremadev.exe get address output-Path --lang cpp
Clone this wiki locally