πŸ’» ν”„λ‘œκ·Έλž˜λ°/Shell

Dooray APIλ₯Ό μ΄μš©ν•œ νƒœμŠ€ν¬ 생성 μžλ™ν™” - 고도화 ver

미인주 2023. 2. 7. 18:01

βœ… κ³΅μ‹λ¬Έμ„œ

https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

 

πŸ“ λͺ©μ°¨

  1. 과제 λ‚΄μš©
  2. ν”„λ‘œμ„ΈμŠ€
  3. μ£Όμš” λͺ…λ Ήμ–΄
  4. μ½”λ“œ
  5. κ²°κ³Ό

 

과제 λ‚΄μš©

  • νŠΉμ • λ‘λ ˆμ΄ ν”„λ‘œμ νŠΈμ— 일일 슀크럼 νƒœμŠ€ν¬λ₯Ό μžλ™ λ“±λ‘ν•΄μ£ΌλŠ” ν”„λ‘œκ·Έλž¨ μž‘μ„±
    • 일일 νƒœμŠ€ν¬ 생성: [2023/01/10 (ν™”) 일일 슀크럼] λ“± 일일 슀크럼 νƒœμŠ€ν¬λ₯Ό 1주일 μ „ 맀일 μžλ™ 생성
    • μ£Όκ°„ νƒœμŠ€ν¬ 생성: 2023/01/10(ν™”) λ°μ΄ν„°μš΄μ˜νŒ€ μ£Όκ°„ 업무 회의 μ˜ μ£Όκ°„ 회의 νƒœμŠ€ν¬λŠ” λ‹€μŒμ£Ό 회의 νƒœμŠ€ν¬ μžλ™ 생성

 

ν”„λ‘œμ„ΈμŠ€

κ°œλ°œν™˜κ²½

  • macOS Monterey
  • intel 7i / x86_64

 

도식화

  • μƒμœ„ 업무가 μžˆλŠ”μ§€ 확인
    • μ—†μœΌλ©΄ μ—° λ˜λŠ” μ›” λ‹¨μœ„μ˜ μƒμœ„ 업무 생성
  • ν•΄λ‹Ή 일에 업무가 μžˆλŠ”μ§€ 확인 (μˆ˜λ™μœΌλ‘œ λ“±λ‘λœ 것이 μžˆλŠ”μ§€ 확인 차원)
    • μ—†μœΌλ©΄ κ°€μž₯ μ΅œκ·Όμ— λ“±λ‘λœ 일일 업무가 μžˆλŠ”μ§€ 확인
      • μžˆλ‹€λ©΄ κ°€μž₯ 졜근 일일 업무 μƒνƒœ-μ™„λ£Œ/만기일-λ―Έμ • μ„€μ •
  • ν•˜μœ„ 업무 생성
  • μ  ν‚¨μŠ€μ—μ„œ μ„€μ •ν•œ λ‘λ ˆμ΄ λŒ€ν™”λ°©μ— λ©”μ‹œμ§€ μ•Œλ¦Ό

 

세뢀사항

  • μƒμœ„ 업무에 ν•˜μœ„ μ—…λ¬΄λ‘œ 등둝됨
  • νƒœκ·Έ : μ§€μ •ν•œ νƒœκ·Έλͺ…
  • λ‚ μ§œ : 생성될 λ•Œ 일주일 ν›„ λ‚ μ§œλ‘œ μžλ™ 생성됨
  • λ‹΄λ‹Ήμž : 본인 (κ·Έλ£ΉμœΌλ‘œλ„ κ°€λŠ₯)
  • μ‹€ν–‰ : μ  ν‚¨μŠ€ μ‚¬μš©
    • 일일 슀크럼 : 평일 9μ‹œλ§ˆλ‹€ λΉŒλ“œ
    • μ£Όκ°„μ—…λ¬΄νšŒμ˜ : ν™”μš”μΌ 9μ‹œλ§ˆλ‹€ λΉŒλ“œ

 

μ£Όμš” λͺ…λ Ήμ–΄

curl

  • ν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄ URL둜 데이터λ₯Ό μ „μ†‘ν•΄μ„œ μ„œλ²„μ— 데이터λ₯Ό λ³΄λ‚΄κ±°λ‚˜ κ°€μ Έμ˜¬ λ•Œ μ‚¬μš©ν•˜λŠ” λͺ…λ Ήμ–΄
  • Shellμ—μ„œ REST API(http) ν…ŒμŠ€νŠΈλ₯Ό ν•˜κ³  싢을 λ•Œ μ‚¬μš©
  • μ§€μ›ν•˜λŠ” ν”„λ‘œν† μ½œ : http / https / ftp / ldap / scp / telnet / smtp / pop3 λ“±
  • Linux/mac OS : κΈ°λ³Έ νƒ‘μž¬
  • μ‚¬μš©ν•œ μ˜΅μ…˜
    • -d : http POST μš”μ²­ 데이터 μž…λ ₯
    • -s : 진행 λ‚΄μš©μ΄λ‚˜ λ©”μ‹œμ§€ 좜λ ₯ μ•ˆλ˜κ²Œ
    • -X : μš”μ²­μ‹œ μ‚¬μš©ν•  λ©”μ†Œλ“œ μ’…λ₯˜
    • -H : 전솑할 헀더 지정



date

  • λ‚ μ§œ 및 μ‹œκ°„μ„ λ‹€μ–‘ν•œ 포맷으둜 좜λ ₯ν•˜κ³ , 계산할 λ•Œ μ‚¬μš©ν•˜λŠ” λͺ…λ Ήμ–΄
  • macOSμ—μ„œ μ‚¬μš©ν•˜κΈ°
    • macOSλŠ” date λͺ…령어에 -d μ˜΅μ…˜μ΄ μ μš©λ˜μ§€ μ•ŠμŒ
    • 포맷 : -v[-(κ³Όκ±°)/+(미래)][일수]d
# μ˜€λŠ˜λ‘œλΆ€ν„° 7일 λ’€ yyyy/mm/dd ν˜•μ‹
date -v+7d +%Y/%m/%d

# μ˜€λŠ˜λ‘œλΆ€ν„° 7일 λ’€ μš”μΌ ν˜•μ‹
date -v+7d +%A  # μˆ˜μš”μΌ
date -v+7d +%a  # 수



jq

  • Shellμ—μ„œ JSON을 μ‘°μž‘ν•  수 μžˆλŠ” 라이브러리
  • μ‚¬μš©ν•œ μ˜΅μ…˜
    • -r : 결과값에 λ”°μ˜΄ν‘œ μ œκ±°ν•΄μ„œ raw κ°’ λ°›κΈ°
  • μ„€μΉ˜
# macOS
brew install jq



crontab

  • Linuxμ—μ„œ 일정 μ£ΌκΈ°λ‚˜ νŠΉμ • μ‹œκ°„μ— λͺ…령을 μ‹€ν–‰ν•˜κ²Œ ν•΄μ£ΌλŠ” λͺ…λ Ήμ–΄ (μŠ€μΌ€μ€„λŸ¬)
# crontab μž‘μ„±
crontab -e

# crontab μž‘μ—… 리슀트 보기
crontab -l

# crontab λͺ¨λ“  μž‘μ—… μ‚­μ œ
crontab -r

# 맀주 μΌμš”μΌ 23μ‹œ 55뢄에 μˆ˜ν–‰
55 23 * * 0 파일 μ €μž₯된 μœ„μΉ˜ >> 둜그 μ €μž₯ν•  μœ„μΉ˜

# 맀주 μ›”-κΈˆμš”μΌ 23μ‹œ 55-59뢄에 μˆ˜ν–‰
55-59 23 * * 1-5 파일 μ €μž₯된 μœ„μΉ˜ >> 둜그 μ €μž₯ν•  μœ„μΉ˜

 

μ½”λ“œ

  • λ³€μˆ˜

 

  • 둜직
  • μƒμœ„ 업무 유무 확인
    • μ—†μœΌλ©΄ μƒμœ„ 업무 생성

 

  • ν•˜μœ„ 업무 유무 확인
    • 있으면 μ’…λ£Œ

 

  • μ—†μœΌλ©΄ κ°€μž₯ 졜근 일일 업무 확인 ν›„ μƒνƒœ-μ™„λ£Œ 및 만기일-λ―Έμ • μ„€μ •

 

  • ν•˜μœ„ 업무 생성

 

κ²°κ³Ό

  • 성곡 ν™”λ©΄ (μ—° λ‹¨μœ„)
  • 성곡 ν™”λ©΄ (μ›” λ‹¨μœ„)

 

  • 이미 ν•΄λ‹Ή 일의 업무가 μƒμ„±λ˜μ–΄ μžˆμ„ 경우


κ³ λ €ν•œ 사항

  1. μƒμœ„ 업무가 μ—° λ˜λŠ” μ›” λ‹¨μœ„λ₯Ό μ„ νƒν•˜μ—¬ 생성될 수 μžˆλ„λ‘ κ΅¬ν˜„
    → μ—°λ„λ‚˜ 월이 λ°”λ€Œλ”λΌλ„ λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ μƒμœ„ 업무가 μƒμ„±λ˜μ–΄ μˆ˜μž‘μ—…μ΄ ν•„μš”ν•˜μ§€ μ•Šλ„λ‘ κ΅¬ν˜„
  2. 만기일(μ—†μŒ/λ―Έμ •/있음) μ„€μ •
    → κ°€μž₯ 졜근의 업무λ₯Ό μ—…λ¬΄μƒνƒœλ₯Ό μ™„λ£Œλ‘œ λ°”κΏ€ 경우 : 만기일이 μ„€μ •λ˜μ–΄ μΊ˜λ¦°λ”μ— λ‚˜μ˜€κ²Œ 됨
    → μ—…무λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ λ³€κ²½ν• λ•Œ dueDateFlag: false λ‘œ ν•  경우, 만기일이 μ—†μŒ μƒνƒœκ°€ 됨
    → νŠΉμ΄μ‚¬ν•­ 1 : μ—…λ¬΄μƒνƒœ(할일/진행쀑/μ™„λ£Œ) 속성을 μ‚¬μš©ν•  수 μ—†μŒ
    → νŠΉμ΄μ‚¬ν•­ 2 : dueDateFlagλ₯Ό true둜만 μ‚¬μš©ν•˜κΈ°λ₯Ό ꢌμž₯
  3. ν¬λ‘ νƒ­λ§Œ μ‚¬μš©ν–ˆμ„ 경우, λΉŒλ“œκ°€ μ‹€νŒ¨ν•œ κ²½μš°μ— μž¬μ‹€ν–‰ λ“±μ˜ μ˜ˆμ™Έ μ²˜λ¦¬κ°€ 쉽지 μ•ŠμŒ
    → μ  ν‚¨μŠ€μ—μ„œ λ‘λ ˆμ΄μ™€ μ—°λ™λœ ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•΄ λΉŒλ“œ μ‹€νŒ¨μ‹œ μž¬μ‹œλ„ 횟수λ₯Ό μ„€μ •ν•˜μ—¬ λ‹€μ‹œ λΉŒλ“œλ˜λ„λ‘ μ„€μ •
  4. λΉŒλ“œ κ²°κ³Όλ₯Ό λ‘λ ˆμ΄ λ©”μ‹œμ§€ μ•Œλ¦Ό
    → λ‘λ ˆμ΄ λŒ€ν™”λ°© λ‹¨μœ„λ‘œ λ©”μ‹œμ§€ κ°€λŠ₯

 

보완이 ν•„μš”ν•œ 사항

  1. μƒμœ„ 업무 μƒμ„±μ‹œ ν•˜μœ„ 업무가 λ°”λ‘œ λ“±λ‘λ˜μ§€ μ•ŠλŠ” 점
    → λ™μ‹œμ„± λ¬Έμ œμΈκ°€ μ‹Άμ–΄ waitλ₯Ό κ±Έμ–΄λ΄€λŠ”λ° λ˜μ§€ μ•Šμ•„μ„œ μ’€ 더 확인 ν•„μš”
  2. μƒμœ„ 업무λ₯Ό 생성해야 ν•˜λŠ” 경우, νƒœκ·Έλ„ ν•¨κ»˜ 생성될 수 μžˆλ„λ‘ (ν˜„μž¬λŠ” νƒœκ·Έκ°€ λ§Œλ“€μ–΄μ Έ μžˆλ‹€κ³  κ°€μ •λ˜μ–΄ 있음)
    → 'application/x-www-form-urlencoded' not supported μ—λŸ¬ 확인 ν•„μš”
  3. μ  ν‚¨μŠ€λ΄‡ λ©”μ‹œμ§€ λ‚΄μš© 섀정이 κ°€λŠ₯ν•œμ§€ 확인
    → ν”ŒλŸ¬κ·ΈμΈμ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠλŠ” 것 κ°™μ§€λ§Œ μ’€ 더 확인 ν•„μš”