๐Ÿ“… Discourse ๋‹ฌ๋ ฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ iCal ํ”ผ๋“œ ๋™๊ธฐํ™” ์ง€์› (.ics URL์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ)

๋“œ๋””์–ด ๋‚ด Discourse ์ธ์Šคํ„ด์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์žฌ๊ตฌ์ถ•ํ–ˆ์–ด์š” :smiling_face_with_tear:


Discourse์˜ ๊ณต์‹ discourse-calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋ฏธ .ics ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ, Discourse ์ด๋ฒคํŠธ๋ฅผ ์™ธ๋ถ€์™€ ๊ณต์œ ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ต์œก, ์ •๋ถ€, ๊ธฐ์—… ๋“ฑ ๋งŽ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์™ธ๋ถ€ iCal ํ”ผ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๋ฐ ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: Moodle, Office365, Google Calendar ๋˜๋Š” ๊ธฐ๊ด€ CMS ํ”Œ๋žซํผ).

ํ˜„์žฌ๋Š” .ics ์†Œ์Šค์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋˜๋Š” ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ค‘์š”ํ•œ ์ผ์ • ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•ด Discourse๊ฐ€ ์ง„์ •ํ•œ ๋‹ฌ๋ ฅ ํ—ˆ๋ธŒ๋กœ ํ™œ์šฉ๋˜๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


:sparkles: ๊ธฐ๋Šฅ ์ œ์•ˆ

Discourse Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์— iCal ํ”ผ๋“œ ๋™๊ธฐํ™”(.ics URL์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ) ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

:white_check_mark: ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ๋‹ฌ๋ ฅ ํ™œ์„ฑํ™” ์นดํ…Œ๊ณ ๋ฆฌ๋‚˜ ์ฃผ์ œ์— ๋Œ€ํ•ด .ics ํ”ผ๋“œ URL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • .ics ํ”ผ๋“œ์™€ ์ผ์น˜ํ•˜๋„๋ก ์ด๋ฒคํŠธ๋ฅผ ์บ˜๋ฆฐ๋”์— ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ๋™๊ธฐํ™” ๊ฐ„๊ฒฉ(์˜ˆ: ๋งค์‹œ๊ฐ„, ๋งค์ผ)์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™ โ€œ์ง€๊ธˆ ๋™๊ธฐํ™”โ€ ๋ฒ„ํŠผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฒคํŠธ UID ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ˆ˜์ •๋œ ์ด๋ฒคํŠธ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

:wrench: ์„ ํƒ ์„ค์ •

  • ๊ฐ€์ ธ์˜จ ์ด๋ฒคํŠธ์— ํƒœ๊ทธ๋‚˜ ๋ผ๋ฒจ์„ ๋ถ™์—ฌ ์™ธ๋ถ€ ์ถœ์ฒ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์Œ ์ค‘ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค:
    • ์ผ๋ฐฉํ†ตํ–‰ ๋™๊ธฐํ™” (์™ธ๋ถ€ โ†’ Discourse ์ „์šฉ),
    • ๋˜๋Š” ์–‘๋ฐฉํ–ฅ ๋™๊ธฐํ™” (Discourse ๋‚ด์—์„œ ๋™๊ธฐํ™”๋œ ์ด๋ฒคํŠธ๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋‹ค์‹œ ์ „์†ก๋จ โ€” ํ–ฅํ›„ ๋ฒ”์œ„).
  • ์บ˜๋ฆฐ๋”๋‹น ์—ฌ๋Ÿฌ .ics ํ”ผ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ทฐ๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฒคํŠธ๊ฐ€ ์™ธ๋ถ€์—์„œ ๋™๊ธฐํ™”๋˜์—ˆ์Œ์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: โ€œ๋™๊ธฐํ™” ์ถœ์ฒ˜: outlook.university.eduโ€).

:teacher: ์‚ฌ์šฉ ์‚ฌ๋ก€

๋ถ„์•ผ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์˜ˆ์‹œ
๊ต์œก ํ•™๊ธฐ ์ผ์ •, ์ˆ˜์—… ์‹œ๊ฐ„ํ‘œ, ์‹œํ—˜ ์ผ์ • ๋“ฑ์„ ํ•™์ƒ ํฌ๋Ÿผ์— ์ž๋™ ์ž…๋ ฅ
์ •๋ถ€ CMS ๋˜๋Š” ์ธํŠธ๋ผ๋„ท์˜ ๊ณต์‹ ์ด๋ฒคํŠธ๋ฅผ ๋Œ€์™ธ ๊ณต๊ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ ์บ˜๋ฆฐ๋”์— ๋™๊ธฐํ™”
๊ธฐ์—… ๋‚ด๋ถ€ ํšŒ์˜ ์บ˜๋ฆฐ๋”(Outlook ๋˜๋Š” Google Calendar์—์„œ)๋ฅผ ๋ฏธ๋Ÿฌ๋ง
์ด๋ฒคํŠธ ํฌ๋Ÿผ ์™ธ๋ถ€ ์ œ๊ณต์ž๋กœ๋ถ€ํ„ฐ ์—ฐ์‚ฌ ๋ชฉ๋ก์ด๋‚˜ ์„ธ์…˜ ์ผ์ •์„ ํ†ตํ•ฉ

:locked_with_key: ๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ

  • ์บ˜๋ฆฐ๋” ํ”ผ๋“œ๋Š” ๊ณต๊ฐœ ๋˜๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ(์˜ˆ: ์‹œํฌ๋ฆฟ ํ† ํฐ์ด ํฌํ•จ๋œ URL)์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • OAuth2 / Basic Auth ์ง€์›์€ ํ–ฅํ›„ ๊ฐœ์„  ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

:paperclip: ๊ด€๋ จ ํ•ญ๋ชฉ

  • discourse-calendar
  • .ics ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ์ด๋ฏธ ์ง€์› ์ค‘ โ€” ํ›Œ๋ฅญํ•œ ์„ ๋ก€!
  • ์œ ์‚ฌํ•œ ํ•„์š”์„ฑ์€ ์ด์ „ ์Šค๋ ˆ๋“œ์—์„œ๋„ ๋…ผ์˜๋œ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค, ์˜ˆ: ์—ฌ๊ธฐ

:counterclockwise_arrows_button: ํ˜ธํ™˜์„ฑ

์ด ๊ธฐ๋Šฅ์€ discourse-events(ํ˜„์žฌ ๋น„ํ™œ์„ฑํ™”๋จ)๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ธฐ์กด Discourse Calendar ๋ฌธ๋ฒ•([calendar] ๋ฐ [event])๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ์ˆ˜๋™์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ Discourse ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, iCal ๋™๊ธฐํ™”๋Š” ๋‹จ์ˆœํžˆ ์ด๋Ÿฌํ•œ ์บ˜๋ฆฐ๋”๋ฅผ ๋ณด์™„ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.


์ด ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ๋กœ๋“œ๋งต์— ์žˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๋„ ์ด๋ฅผ ๊ฐ€์น˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ• ์ง€ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

5๊ฐœ์˜ ์ข‹์•„์š”

@Ethsim2 ์ด๊ฒƒ์€ ๋งค์šฐ ํฐ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ด๋ฉฐ, Discourse๊ฐ€ FullCalendar๋กœ ์ „ํ™˜ํ•˜๋ฉด์„œ ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ์•„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@sam ๋‹˜์ด ์ตœ๊ทผ fullcalendar.io๋กœ ์ง์ ‘ ๋งํฌ๋ฅผ ๊ฑธ์—ˆ๊ณ , FullCalendar๊ฐ€ ์ด์ œ ๊ณต์‹ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด **.ics ํ”ผ๋“œ์— ๋Œ€ํ•œ 1๊ธ‰ ์ง€์›(first-class support)**์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ์ด๋ฏธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


:rocket: ์ œ์•ˆ: FullCalendar์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›์„ ํ™œ์šฉํ•œ .ics ํ”ผ๋“œ ๋™๊ธฐํ™” ํ™œ์„ฑํ™”

๊ณง Discourse์— ํ†ตํ•ฉ๋  FullCalendar v6์„ ํ†ตํ•ด ์ด ๊ธฐ๋Šฅ์„ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ด ๋งˆ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FullCalendar์˜ @fullcalendar/icalendar ํ”Œ๋Ÿฌ๊ทธ์ธ(๋‚ด๋ถ€์ ์œผ๋กœ ical.js ์‚ฌ์šฉ)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต๊ฐœ๋œ .ics ํ”ผ๋“œ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

new Calendar(calendarEl, {
  plugins: [dayGridPlugin, iCalendarPlugin],
  events: {
    url: 'https://example.com/my-calendar.ics',
    format: 'ics'
  }
});

์ด๊ฒƒ๋งŒ์œผ๋กœ๋„ ์›๊ฒฉ iCal ํ”ผ๋“œ๋ฅผ ์บ˜๋ฆฐ๋” UI์— ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ํŒŒ์‹ฑ ์—†์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์•ค ํ”Œ๋ ˆ์ด(plug-and-play) ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.


:hammer_and_wrench: Discourse๋ฅผ ์œ„ํ•œ ๊ถŒ์žฅ ๊ตฌํ˜„ ๋‹จ๊ณ„

  1. @fullcalendar/icalendar์™€ ical.js๋ฅผ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (FullCalendar v6๊ฐ€ ์™„์ „ํžˆ ๋ฐฐํฌ๋œ ํ›„).
  2. ๊ด€๋ฆฌ์ž/ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •(๋˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์˜ต์…˜)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•˜๋‚˜ ์ด์ƒ์˜ .ics URL์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํ”ผ๋“œ๋ฅผ ์บ˜๋ฆฐ๋” ๋ทฐ์— ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  4. (์„ ํƒ ์‚ฌํ•ญ) ์„œ๋ฒ„ ์ธก ๋™๊ธฐํ™”๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:
    • ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”ผ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
    • ์ƒˆ/์ˆ˜์ •๋œ ์ด๋ฒคํŠธ๋ฅผ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค
    • ๊ด€๋ จ Discourse ํ† ํ”ฝ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค

:counterclockwise_arrows_button: ๋™๊ธฐํ™” ์ฃผ๊ธฐ

FullCalendar์˜ ๊ธฐ๋ณธ .ics ์ฒ˜๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์บ˜๋ฆฐ๋”๊ฐ€ ์ฒ˜์Œ ๋กœ๋“œ๋  ๋•Œ๋งŒ ํ”ผ๋“œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ ์„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰:

  • ์ผ์ผ ๋˜๋Š” ์ž๋™ ์ƒˆ๋กœ ๊ณ ์นจ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์นจ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๋Š” ํ•œ, ์‚ฌ์šฉ์ž๋Š” ์˜ค๋ž˜๋œ ๋ณต์‚ฌ๋ณธ์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์˜์†์„ฑ(persistence)์ด ์—†์Šต๋‹ˆ๋‹ค โ€” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ํ”ผ๋“œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด๋ฅผ ์ง„์ •์œผ๋กœ ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, Discourse๋Š” ์ด์ƒ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์„œ๋ฒ„ ์ธก์—์„œ ํ”ผ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ผ์ผ(๋˜๋Š” ์˜ˆ์•ฝ๋œ) Sidekiq ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๊ฐ„ ์ผ๊ด€๋œ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ํŒŒ์‹ฑ๋œ ์ด๋ฒคํŠธ๋ฅผ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์™„์ „ํ•œ ํ†ตํ•ฉ์„ ์œ„ํ•ด ์ด๋ฒคํŠธ๋ฅผ ํ† ํ”ฝ์— ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ƒˆ ํ† ํ”ฝ์„ ์ƒ์„ฑํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ ์ ˆํ•œ ๋™๊ธฐํ™” ๋™์ž‘์„ ํ—ˆ์šฉํ•˜๊ณ , ์ด์ „์— Angus์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ฒ˜๋ฆฌํ–ˆ๋˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋˜์‚ด๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค โ€” ํ•˜์ง€๋งŒ ๊น”๋”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹์€ ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•˜์—ฌ์š”.


:white_check_mark: ์ด์ 

  • Google Calendar, Outlook, iCal ๋“ฑ์˜ .ics ํ”ผ๋“œ๋ฅผ ์‹œใƒผใƒ ๋ฆฌ์Šคํ•˜๊ฒŒ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • Discourse๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ๋งŒ ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ์บ˜๋ฆฐ๋” *์†Œ๋น„์ž(consumer)*๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ํฌ๋Ÿผ, ํ•™์ƒ ๊ทธ๋ฃน, ์‹œ๋น… ์ด๋ฒคํŠธ ๋“ฑ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์›๋˜๋Š” FullCalendar ๊ธฐ๋Šฅ์— ์™„์ „ํžˆ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค โ€” ํ•„์š”ํ•œ ์ปค์Šคํ…€ JS๊ฐ€ ์ตœ์†Œ์ž…๋‹ˆ๋‹ค.

์บ˜๋ฆฐ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค์‹œ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ง€๊ธˆ, ์ด ๊ธฐ๋Šฅ์ด ์‹ค์ œ๋กœ ๊ตฌํ˜„๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋•๊ฑฐ๋‚˜ ๊ฐœ๋… ์ฆ๋ช…(PoC)์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ๋„ ๊ธฐ๊บผ์ด ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค @Halden42, ํ•˜์ง€๋งŒ ๊ฒŒ์‹œ๊ธ€์„ ๋ณด๊ณ  ์กฐ๊ธˆ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

Discourse๊ฐ€ FullCalendar ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ†ตํ•ด ์บ˜๋ฆฐ๋” ์‹œ์Šคํ…œ์˜ โ€œ๊ธฐ๋ฐ˜์„ ์ •๋น„โ€ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ”์œ ์บ˜๋ฆฐ๋”๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด์ง€ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋งค์ผ ๋ชจ๋“  ์ž‘์—…์„ Discourse GUI๋กœ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ–์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ์ค‘๋ณต ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ์ œ๊ฐ€ ์ ˆ๋Œ€ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์—†๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

Angus์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ •๋ง ๊ทธ๋ฆฌ์›Œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์–ธ๊ธ‰ํ•˜์‹  ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” Discourse๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์˜ ํ•ต์‹ฌ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค:

์ด ๋ถ€๋ถ„์€ ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋ ์ง€์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์ธ ์„ค๋ช…์ด ์—†์–ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”? Discourse๊ฐ€ ์ด๋ฒคํŠธ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ฃผ์ œ๋ฅผ ์ƒ์„ฑํ•˜๋‚˜์š”? ์›๋ณธ ์บ˜๋ฆฐ๋”๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋‚˜ ์‚ญ์ œ๋ฅผ ์ง€์›ํ•˜๋‚˜์š”?

์ œ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์˜์กดํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ด๊ฒƒ์ธ๋ฐ, ์•„์ง ์ด ๊ธฐ๋Šฅ์ด ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด ๋‹จ๊ณ„์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒ์„ธํ•œ ๋‹ต๋ณ€์„ ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

Ethsim2๋‹˜, ์ข‹์€ ํ›„์† ์งˆ๋ฌธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ์—ฌ๋Ÿฌ๋ถ„์ด ์šฐ๋ คํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด ์ •ํ™•ํžˆ ํ•ต์‹ฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ .ics ํ”ผ๋“œ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹ˆ๋ผ, ์œ ์šฉํ•˜๊ณ  ์ถ”์  ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ Discourse์— *๋‚ด์žฅ(embedding)*ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

"์ด๋ฒคํŠธ๋ฅผ ํ† ํ”ฝ๊ณผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ† ํ”ฝ์„ ์ƒ์„ฑํ•œ๋‹ค"๊ณ  ๋ง์”€๋“œ๋ ธ์„ ๋•Œ, ์ €๋Š” Angus๋‹˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ด์ „์— ์ž‘๋™ํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ์„ฑ์„ ์ƒ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ”ผ๋“œ์˜ ๊ฐ ์ด๋ฒคํŠธ๊ฐ€ Discourse์˜ ํ•˜๋‚˜์˜ ํ† ํ”ฝ์— ๋Œ€์‘ํ•˜๊ณ , ํ”ผ๋“œ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ•ด๋‹น ํ† ํ”ฝ์— ๋ฐ˜์˜๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


ํ˜„์žฌ FullCalendar ๋‹จ๋…์œผ๋กœ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ(persist)ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ํ”ผ๋“œ์—์„œ ๊ฐ€์ ธ์™€์„œ ๋ Œ๋”๋งํ•  ๋ฟ์ด์ฃ . ๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ๊ฐ€ ํ”ผ๋“œ์—์„œ ์‚ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์ทจ์†Œ๋˜๊ฑฐ๋‚˜ ์™ธ๋ถ€์—์„œ ์‚ญ์ œ๋œ ๊ฒฝ์šฐ), ์บ˜๋ฆฐ๋” UI์—์„œ๋„ ์กฐ์šฉํžˆ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ, ํŠนํžˆ ์ด๋ฒคํŠธ ๊ฒŒ์‹œ๋ฌผ์„ ํ† ๋ก , RSVP, ๊ณต์ง€ ๋“ฑ์— ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ์ •๋„๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ œ๊ฐ€ ์ œ์•ˆํ•˜๋Š” ํ•ด๊ฒฐ์ฑ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

์ด๋ฒคํŠธ๊ฐ€ ํ”ผ๋“œ์—์„œ ์‚ฌ๋ผ์กŒ์„ ๋•Œ ํ† ํ”ฝ์„ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹ , Discourse๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ† ํ”ฝ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€
  • ์ƒ๋‹จ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๊ตฌ๋ฅผ ์ถ”๊ฐ€:
    โš ๏ธ ์ด ์ด๋ฒคํŠธ๋Š” ์ทจ์†Œ๋˜์—ˆ๊ฑฐ๋‚˜ ์†Œ์Šค ์บ˜๋ฆฐ๋”์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ์ž ์„ค์ •์— ๋”ฐ๋ผ ํ† ํ”ฝ์„ ์ž ๊ธˆ(lock)ํ•˜๊ฑฐ๋‚˜ ๋ชฉ๋ก์—์„œ ์ œ์™ธ(unlist)ํ•˜๋Š” ์˜ต์…˜ ์ œ๊ณต

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งฅ๋ฝ์ด ๋ณด์กด๋˜๊ณ , ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ทจ์†Œ ์‚ฌ์‹ค์ด ๋ˆˆ์— ๋„๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์‚ญ์ œํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋ง์ด์ฃ . ๊ธฐ์ˆ ์ ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ์‹คํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ .ics ํŒŒ์ผ์— ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” UID๋ฅผ ํ”Œ๋ž˜๊ทธ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋งค์นญ๋˜๋Š” ํ† ํ”ฝ์˜ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๊ทธ๋Ÿฌ๋ฏ€๋กœ, FullCalendar ์ž์ฒด๋Š” ์ด๋Ÿฌํ•œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์ง€๋งŒ, Discourse๊ฐ€ ๋™๊ธฐํ™”(sync) ๊ณ„์ธต์—์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…(์˜ˆ: Sidekiq๋ฅผ ํ†ตํ•œ)์€ ์ด์ „์— ์กด์žฌํ–ˆไฝ†็Žฐๅœจ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ถ”์ ํ•˜๊ณ , ์ด์— ํ•ด๋‹นํ•˜๋Š” ํ† ํ”ฝ์„ ์ ์ ˆํžˆ ํ‘œ์‹œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ถฉ๋ถ„ํžˆ ๋งŽ๋‹ค๋ฉด, ์ ์ ˆํ•œ ์ŠคํŽ™์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

์ƒ๊ฐ ๊นŠ์€ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @Halden42 โ€” ๋•๋ถ„์— ๋งŽ์€ ๋ถ€๋ถ„์ด ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•˜์‹  ๋‚ด์šฉโ€ฆ

โ€ฆ์ด ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์•ต๊ฑฐ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ค‘๋‹จํ•œ ์ดํ›„๋กœ ์ œ๊ฐ€ ํšŒ๋ณตํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ด ์˜จ ํ•ต์‹ฌ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์ด๋ฒคํŠธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ผ์ด๋ธŒ ์™ธ๋ถ€ ์บ˜๋ฆฐ๋”๋ฅผ ํฌ๋Ÿผ์œผ๋กœ ๋™๊ธฐํ™”ํ•˜์—ฌ ๊ฐ ์ด๋ฒคํŠธ์— ํ† ํ”ฝ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ์ด๋ฒคํŠธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(์˜ˆ: ์ทจ์†Œ, ์ผ์ • ๋ณ€๊ฒฝ)์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ•ด๋‹น ํ† ํ”ฝ์— ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์ผ๋ฐฉํ–ฅ ๋™๊ธฐํ™” ๋ชจ๋ธ์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹คโ€”.ics์—์„œ Discourse๋กœ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹โ€”and ๋‹จ์ˆœํžˆ ์—…๋ฐ์ดํŠธ๋งŒ ๊ฐ์ง€ํ•ด๋„ ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 90%๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ๋“œ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์„ ๋•Œ ํ† ํ”ฝ์„ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹ , ์ด๋ฒคํŠธ ํ† ํ”ฝ์— โ€œ์ทจ์†Œ๋จโ€ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ŠคํŽ™์„ ์ œ์•ˆํ•  ์ ์ ˆํ•œ ์žฅ์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉดโ€”์˜ˆ๋ฅผ ๋“ค์–ด FullCalendar ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์•ˆ์ •ํ™”๋˜๋Š” ์‹œ์ ์—โ€”๊ธฐ์—ฌํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ํšŒ์˜ ์œ ํ˜•(์‹คํ–‰์œ„์›ํšŒ, ๋Œ€์ค‘ ์ฐธ์—ฌ ์„ธ์…˜, ๋‚ด๋ถ€ ์‹ค๋ฌด ๊ทธ๋ฃน ๋“ฑ)์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ Office 365 ์บ˜๋ฆฐ๋”๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ๊ณ ์œ ํ•œ .ics ํ”ผ๋“œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”ผ๋“œ๋Š” ์ด๋ฏธ ์ž˜ ๊ตฌ์กฐํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‚ฌ๋ฌด์ง ์ง์›๊ณผ ๊ด€๋ฆฌ ํŒ€์— ์˜ํ•ด ์ •๊ธฐ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ธ‰ํžˆ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

  • ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„(์˜ˆ: ํšŒ์˜ ์œ ํ˜•๋ณ„ ํ•˜๋‚˜์˜ ํ”ผ๋“œ)๋กœ ์„œ๋กœ ๋‹ค๋ฅธ .ics ํ”ผ๋“œ์— ๊ตฌ๋…ํ•˜๋Š” ๊ฒƒ
  • ํ•ด๋‹น Discourse ์นดํ…Œ๊ณ ๋ฆฌ์— ์ƒˆ ํ† ํ”ฝ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ
  • Angus์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํƒœ๊ทธ๋‚˜ ๊ธฐํƒ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ, ํ† ํ”ฝ์ด ์˜ฌ๋ฐ”๋ฅธ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋ฐฐ์น˜๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ
  • ์บ˜๋ฆฐ๋” ์ด๋ฒคํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด(์‹œ๊ฐ„, ์ œ๋ชฉ ๋“ฑ) ํ† ํ”ฝ์—๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ์ด๋ฒคํŠธ๊ฐ€ ์ทจ์†Œ๋˜๊ฑฐ๋‚˜ ํ”ผ๋“œ์—์„œ ์ œ๊ฑฐ๋˜๋ฉด ํ† ํ”ฝ์„ ์„ ํƒ์ ์œผ๋กœ ํ”Œ๋ž˜๊ทธ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋‹ซ๋Š” ๊ฒƒ

์šฐ๋ฆฌ ๊ฐ™์€ ์ง€๋ฐฉ์ž์น˜๋‹จ์ฒด์—์„œ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ†ตํ•ด ์„ธ๋ฐ€ํ•œ ๊ฐ€์‹œ์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํšŒ์˜๋Š” ๋น„๊ณต๊ฐœ(์˜ˆ: ์ง‘ํ–‰์œ„์›ํšŒ ๋˜๋Š” ๊ณ„ํš ๊ด€๋ จ ํšŒ์˜)์ธ ๋ฐ˜๋ฉด, ๋‹ค๋ฅธ ํšŒ์˜๋Š” ๊ณต๊ฐœ์ ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป ๋ถ„๋ฅ˜๋œ ํ† ํ”ฝ์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ˆ˜์ค€์˜ ๊ฒ€์ฆ์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๋‹ค๊ฐ€์˜ค๋Š” FullCalendar ๋Œ€๊ฐœํŽธ์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๊ธฐ๋ฅผ ๊ฐ„์ ˆํžˆ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜์ž‘์—… ์—…๋ฌด๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ค๊ณ , ํšŒ์˜ ์กฐ์œจ๊ณผ ํˆฌ๋ช…์„ฑ์„ ์œ„ํ•œ ๋‹จ์ผ ์ •๋ณด ์›๋ณธ์œผ๋กœ์„œ Discourse์˜ ์‹คํšจ์„ฑ์ด ํ›จ์”ฌ ๋†’์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๋ฏธ๊ตญ์˜ ์•ฝํ•™๋Œ€ํ•™์ƒ์ž…๋‹ˆ๋‹ค. ์ €ํฌ ๋Œ€ํ•™์€ ๋ชจ๋“  ์‹ค์Šต(๋กœํ…Œ์ด์…˜) ์ผ์ •, ์‹œํ—˜, ์‹ค์Šต ํ‰๊ฐ€(ํ”„๋ž™ํ‹ฐ์ปฌ)๋ฅผ ์บ˜๋ฆฐ๋” ํฌํ„ธ์„ ํ†ตํ•ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ URL์€ .ics๋กœ ๋๋‚˜์ง€ ์•Š์ง€๋งŒ, ํฌ๋กฌ์—์„œ ์—ด๋ฉด ์ฆ‰์‹œ ์œ ํšจํ•œ .ics ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ URL ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅผ ๋ฟ, ํ‘œ์ค€ iCal ํ”ผ๋“œ์ž„์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ๊นŒ์ง€ ์ €๋Š” Angus์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ด ํ”ผ๋“œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ด๋ฒคํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ์ฃผ์ œ(Topic)๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ๋‹ค๋ฅธ ํ”ผ๋“œ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์นดํ…Œ๊ณ ๋ฆฌ(์˜ˆ: โ€œTherapeuticsโ€, โ€œRotationsโ€, โ€œExamsโ€)๋กœ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ์–ด ํ•™์Šต ๊ทธ๋ฃน์ด ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ตœ๊ทผ this.router ์˜ค๋ฅ˜๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์†์ƒ๋˜์–ด, Ethsim2์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์บ˜๋ฆฐ๋”๋ฅผ ๋™๊ธฐํ™”ํ•  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๋ฉด:

  • ์ˆ˜์‹  .ics ํ”ผ๋“œ ์ง€์› (URL์ด .ics๋กœ ๋๋‚˜์ง€ ์•Š๋”๋ผ๋„)
  • ์นดํ…Œ๊ณ ๋ฆฌ ํƒ€๊ฒŸํŒ…์„ ํ†ตํ•œ ์ฃผ์ œ ์ƒ์„ฑ
  • ํ”ผ๋“œ๋ณ„ ๊ตฌ์„ฑ (์˜ˆ: ํ•˜๋‚˜์˜ ํ”ผ๋“œ โ†’ ํ•˜๋‚˜์˜ ์นดํ…Œ๊ณ ๋ฆฌ)
  • ์—…๋ฐ์ดํŠธ ๊ฐ์ง€ ๋ฐ ์„ ํƒ์  ์ด๋ฒคํŠธ ์ทจ์†Œ ์ฒ˜๋ฆฌ

โ€ฆํ•œ๋‹ค๋ฉด Discourse๋Š” ํ•™์ˆ ์  ํ˜‘์—…์— ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์†์ƒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ธฐ๋Šฅ์ด ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ๊ตฌํ˜„๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ๋œ๋‹ค๋ฉด ์ƒ˜ํ”Œ ์บ˜๋ฆฐ๋” URL์„ ๋น„๊ณต๊ฐœ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Office 365์—๋„ ์ ์šฉ๋˜๋ฉฐ, ๋ฏธ๊ตญ์—์„œ ๋งŽ์€ ๋Œ€ํ•™์ด ํ•ด๋‹น ์ƒํƒœ๊ณ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๊ทธ ์ƒํƒœ๊ณ„๋ฅผ ์“ฐ๊ณ  ์žˆ์–ด์š” :+1:

2๊ฐœ์˜ ์ข‹์•„์š”

์ด๊ฒƒ์€ ์›๋ž˜ ํ•œ ์‚ฌ์šฉ์ž์™€ ๊ทธ ์‚ฌ์šฉ์ž์˜ ์†ŒํฌํŽซ(๊ณ„์ •)์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ณต๊ฐœ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์ •๋“ค์ด ํ†ตํ•ฉ๋˜๋ฉด์„œ, ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ๊ณผ ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ฃผ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.