์ด ๋ฌธ์ ๋ฅผ ์ฌํํด ๋ณด๊ฒ ์ต๋๋ค.
์บ๋ฆฐ๋ ํ์ด์ง๊ฐ ๋ก๋๋ ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
์์ : ์ ์ํฉ์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ค์ ์ด๋ฒคํธ๊ฐ ํ์ํ๋ค๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค:
ํ๋ฌ๊ทธ์ธ์ ํฌํฌ๋ฅผ ๋ง๋ค๊ณ ์ถ์ง ์์์, ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ถ ๊ตฌํํ์ต๋๋ค.
์์์ ์ด๋ฒคํธ ํ๊ทธ์ ๊ด๋ จ๋์ด ์์ผ๋ฉฐ ๊ธฐ๋ณธ ์นดํ
๊ณ ๋ฆฌ ์์์ ๋์ฒดํฉ๋๋ค.
์ด๋ฒคํธ HTML์ ํ๊ทธ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํ์ต๋๋ค: data-tags="{{event.topic.tags}}"
<script type="text/x-handlebars" data-template-name="javascripts/components/events-calendar-event">
<div class="{{event.classes}}" data-tags="{{event.topic.tags}}" {{action 'selectEvent' event.topic.url}} style="{{event.listStyle}}">
{{#unless event.allDay}}
<span style='{{event.dotStyle}}'>{{d-icon 'circle'}}</span>
{{/unless}}
{{#if event.time}}
<span class="time">{{event.time}}</span>
{{/if}}
{{#if event.title}}
<span class="title" style="{{event.titleStyle}}">{{replace-emoji event.title}}</span>
{{/if}}
</div>
{{#if showEventCard}}
{{events-calendar-card topic=event.topic selectEvent="selectEvent"}}
{{/if}}
</script>
์คํธ๋ผ์ดํ ํจํด์ ์์ฑํฉ๋๋ค:
<script type="text/discourse-plugin" version="0.8.23">
api.onPageChange((url, title) => {
// tags colors
let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};
let events = document.getElementsByClassName("event");
for (var i = 0; i < events.length; i++) {
let event = events[i];
let gradient = "";
let tags = event.getAttribute("data-tags").split(",");
for (j = 1; j <= tags.length; j++) {
gradient +=
", " +
colors[tags[j - 1]] +
" " +
j * 8 +
"px, " +
colors[tags[j - 1]] +
" " +
(j * 8 + 8) +
"px";
}
event.style.background = "repeating-linear-gradient(-45deg" + gradient + ")";
}
});
</script>
๊ทธ๋ฆฌ๊ณ CSS๋ฅผ ์กฐ๊ธ ์ถ๊ฐํ์ต๋๋ค.
๊ฒฐ๊ณผ:
ํ๊ทธ 2๊ฐ์ธ ์ด๋ฒคํธ:
ํ๊ทธ 3๊ฐ์ธ ์ด๋ฒคํธ:
์ ๊ฐ ๊ฒช๋ ๋ฌธ์ ๋ ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ด์ง ๋ณ๊ฒฝ ์ ์คํ๋๋๋ฐ, ์บ๋ฆฐ๋๊ฐ ๋์ ์ผ๋ก ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ /๋ค์ ๋ฌ์ ์ด๋ฒคํธ์๋ ์คํธ๋ผ์ดํ ์์์ด ์ ์ฉ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
10์์ ์์ผ๋ฉด์ "๋ค์"์ ๋ ๋ฒ ํด๋ฆญํ์ฌ 12์๋ก ์ด๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค:
์ด ๋๋ฌธ์ ์บ๋ฆฐ๋ ์ฝํ ์ธ ๊ฐ ๋ก๋๋์์ ๋ ์ JS๊ฐ ์คํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋ํ์ฌ /assets/javascripts/discourse/lib/date-utilities.js.es6 ํ์ผ์ eventsForDay ํจ์๋ฅผ ์์ ํจ์ผ๋ก์จ ์ค๋ฌด๋ฌ ํจ๊ณผ๋ฅผ ๊ตฌํํ์ต๋๋ค:
๋ค์ ์ค์:
let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);background-color:#${topic.category.color};`;
์๋ ๋ด์ฉ์ผ๋ก ๊ต์ฒดํ์ต๋๋ค:
let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);`;
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค:
if (topic.tags.length > 0) {
let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};
let gradient = "";
for (let i = 1; i <= topic.tags.length; i++) {
gradient +=
", " +
colors[topic.tags[i - 1]] +
" " +
i * 8 +
"px, " +
colors[topic.tags[i - 1]] +
" " +
(i * 8 + 8) +
"px";
}
attrs['listStyle'] += `background:repeating-linear-gradient(-45deg ${gradient});`;
}
์ด ๋ฐฉ์์ ์ ๊ฐ ์ํ๋ ํจ๊ณผ๋ฅผ ํจ์ฌ ๋ ๊น๋ํ๊ฒ ๊ตฌํํด ์ค๋๋ค. ํ์ง๋ง ํ๋ฌ๊ทธ์ธ์ ํฌํฌ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์ ์์ด ์ด ํจ์๋ ํ์ผ์ ์ค๋ฒ๋ผ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชปํฉ๋๋คโฆ
ํ๋ฌ๊ทธ์ธ์ด ์ต์ Discourse ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋น๋ ๋ก๊ทธ ํ์ผ ๋ด์ฉ:
1: from /var/www/discourse/lib/plugin/instance.rb:417:in block in notify_after_initialize' /var/www/discourse/plugins/discourse-events/plugin.rb:190:in block in activate!': uninitialized constant #Class:0x0000562a2a10fa90::SCOPES
Did you mean? Sprockets (NameError)
** ํธํ๋์ง ์๋ ํ๋ฌ๊ทธ์ธ **
/var/www/discourse/plugins/discourse-events์ ์๋ ํ๋ฌ๊ทธ์ธ ์ค๋ฅ๋ก ์ธํด Discourse ๋น๋๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ํด๋น ํ๋ฌ๊ทธ์ธ์ ์ ๊ฑฐํ ํ ๋ค์ ๋น๋ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค!
Discourse์ ๋ฌธ์ ์์ผ๋ฉฐ ํ๋ฌ๊ทธ์ธ์ ๋ฌธ์ ๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ต์ Discourse ๋ฒ ํ ๋ฒ์ ์์๋ ํ๋ฌ๊ทธ์ธ์ด ๋ค์ ์๋ํฉ๋๋ค.
ํ์ฌ ์ต์ ์์ ํ Discourse๋ฅผ ์ต์ events ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป ๋ค์ ๋น๋ํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ![]()
๋ถํํ๋ tests-passed๋ก ์ ํํ ์ ์์ต๋๋ค. ์ด ์ ํ์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์ ํํ stable ๋ธ๋์น๋ฅผ ์ ํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ณ ์๋ ์ฌ๋์ด ์์๊น์?
v2.5.2(์ด์ ์ ์๋ํ๋ ๋ฒ์ )๋ก ๋ค์ ๋น๋ํด ๋ณด์์ง๋ง ๋์ผํ ์ค๋ฅ๋ก ์คํจํ๋ฏ๋ก, ๋ฌธ์ ๊ฐ ์ด๋์ ์๋์ง ์ ํํ ์ ์ ์์ต๋๋ค. ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ํน์ ์ปค๋ฐ(ํ๋ฌ๊ทธ์ธ ๋๋ stable Discourse์)์ด ์์๊น์?
๋น์ฌ์ ์ง์ ์ ์ฑ
์ discourse_docker์ ๊ธฐ๋ณธ ์ค์ ์ด ํด๋น ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์, ์ต์ tests-passed ๋ฒ์ ์ discourse์์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์
๋๋ค. ๋ค๋ง, Pavilion ๊ณ์ด ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ค discourse์ stable ๋ธ๋์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๊ฐ ์ผ๋ง๋ ๋๋์ง ํ์
ํ๊ณ ์ถ์ต๋๋ค.
๋ํ, ๊ฐ๊น์ด ์์ผ ๋ด์ ์ด๋ฒคํธ ํ๋ฌ๊ทธ์ธ์ ๋น์ถ์ฒ(deprecate)ํ๊ณ , ๋์ discourse ํ์ ์ด๋ฒคํธ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์์ ์ ๋๋ค.
๊ฐ๋ฐ์๋ค์ด Discourse์ ๋ฏธ๋๋ฅผ ์ํด ํธํ์ฑ์ ์ ์งํด์ผ ํ๋ค๋ ์ ์ ์ดํดํฉ๋๋ค. ๊ทธ๊ฑด ๋น์ฐํ ์ผ์ด์ง์. ํ์ง๋ง ํ๋ฌ๊ทธ์ธ์ ์์ ์ ์ธ ๋ธ๋์น๊ฐ ์๋ค๋ฉด, ์ฌ์ฉ์๊ฐ ์์ ์ ์ธ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ค๊ณ ํ ๋, ์์ ๋ค์ด ์ฌ์ฉํ์ง ์๋ ๋ฒ ํ ๋ฒ์ ๋๋ฌธ์ ์ค์ ์ด ๊นจ์ง๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
ํธํ์ฑ์ ๊นจ๋จ๋ฆฐ ์ปค๋ฐ์ ๋ํด ํ์ด ์์๊น์? ํด๋น ์ปค๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์์
ํด ๋ณผ ์ ์์ง๋ง, ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผฐ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ถ๊ฐ๋ก: ์ด ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์ ํด๊ฒฐ์ฑ ์ด ํ์ํ ๋ถ๋ค์ ์ํด, ์ด ์ปค๋ฐ์ด ์์ธ์ผ๋ก ๋ณด์ ๋๋ค.
Webcal API ํค ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ผ๋, ํ์ฌ ํด๊ฒฐ๋์์ต๋๋ค.
๋ฆฌํฌํธํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค @md-misko
๋ค์ ํ๋ฒ ์ด ํ๋ฌ๊ทธ์ธ์ด ์ต์ discourse ๋ฆด๋ฆฌ์ค 2.6.0.beta5 ( 2bb7676ba4 )์ ํธํ๋์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
์ด๋ฒ์๋ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ๋จ์ํ ๋น ํ์ด์ง๋ง ํ์๋ฉ๋๋ค. ํ์ง๋ง ์ง๋๋ฒ๊ณผ ๋ฌ๋ฆฌ admin/upgrade๋ฅผ ์ฌ์ฉํ ๋ ์ค๋ฅ๋ ๋ฐ์ํ์ง ์์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ๋นํ์ฑํํ๊ณ ์ปจํ
์ด๋๋ฅผ ์ฌ๋น๋ํ ํ Discourse๋ ๋ค์ ์ ์์ ์ผ๋ก ์๋ํ๊ณ ์์ต๋๋ค.
์๋ ํ์ธ์, ์ด Events ํ๋ฌ๊ทธ์ธ์ด ์ด ํ์ด์ง์ฒ๋ผ ๊ฒ์๊ธ ์๋จ์ โ์บ๋ฆฐ๋์ ์ถ๊ฐโ ๋งํฌ๋ฅผ ์์ฑํ๋์?
https://community.namati.org/t/asia-pacific-justice-for-all-webinar-series/78084
๋ํ, 2021๋ ํ์ฌ ์ด Pavilion Events ํ๋ฌ๊ทธ์ธ๊ณผ ๊ณต์ Calendar ํ๋ฌ๊ทธ์ธ ์ค ์ด๋ค ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฒฌ์ ์ด๋ค๊ฐ์?
์ฃผ์ ๊ด์ฌ์ฌ๋ ์บ๋ฆฐ๋์์ ์ฃผ์ ๋ณ ๋ทฐ๋ฅผ ์ฝ๊ฒ ์ง๊ณํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ด๋ฉฐ, ๋ํ ์ฌ์ฉ์๊ฐ ๊ฐ๋ณ ์ด๋ฒคํธ๋ฅผ ์์ ์ Google / .ics ์บ๋ฆฐ๋์ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ๋ ๊ฐ์ถ๊ณ ์ถ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์,
OP(์๋ฌธ)์์ ์ธ๊ธํ๋ฏ์ด
Discourse ํ์ด ๋ง๋ ์๋ก์ด Discourse Calendar ํ๋ฌ๊ทธ์ธ์ ์ด๋ฒคํธ ๊ธฐ๋ฅ์ด ์ฌ์ฉ์์๊ฒ ์ ํฉํ์ง ์ ์ ๊ณ ๋ คํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ํ์์ ๋ถํฉํ๋ค๋ฉด ํด๋น ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค. ์ด ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์ด๋ฏธ Discourse Calendar๋ฅผ ๋จผ์ ๊ณ ๋ คํด ๋ณธ ๊ฒฝ์ฐ์๋ง ํด์ผ ํฉ๋๋ค.
๊ฐ๋ฅํ๋ค๋ฉด Discourse Calendar ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํด๋น ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ถฉ์กฑ๋์ง ์๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด์๋ง ์ด ํ๋ฌ๊ทธ์ธ์ ์ง์ํฉ๋๋ค. ๋คํํ๋ Calendar ํ๋ฌ๊ทธ์ธ์๋ ์ธ๊ธํ์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ด ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค.
๋ค, ๋ง์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ์ด ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฅ์ ๋๋ค. ํ์ง๋ง aforementioned ๋๋ก, Discourse Calendar์ ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก, ํด๋น ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.
๋ด๋ถ์ ์ผ๋ก๋ ์ฐ๋ฆฌ๋ ์ด ํ๋ฌ๊ทธ์ธ ๋์ Discourse Calendar ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ๋ฉค๋ฒ๋ค์ ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ์ผ๋ถ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด์๋ ์ง์์ ์ ๊ณตํ๋ฉฐ, ํน์ ํน์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ผ์๋ฉด ๋ง์ํด ์ฃผ์๋ฉด ์ข์ง๋ง, ๊ทธ ์ธ์๋ ์์ต๋๋ค.
Angus๋, ๊ฐ์ฌํฉ๋๋ค. ์กฐ์ธ์ ๋ชจ๋ ์ฝ์๊ณ , ํด๋น Legal Empowerment Network ์ปค๋ฎค๋ํฐ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ง์ ๊ด์ฌํ์ ๊ฒ ๊ฐ์์ ํน๋ณํ ์ฌ์ญค๋ณธ ๊ฑฐ์์. ์ปค๋ฎค๋ํฐ๊ฐ ์ ์ด์๋๊ณ ์์ด์ ์ข์๊ฑฐ๋ ์. ํ์ง๋ง ๊ณต์ ์บ๋ฆฐ๋ ํ๋ฌ๊ทธ์ธ์ ์ถ์ฒํด ์ฃผ์ ๋ค๋ ๊ธฐ์ฉ๋๋ค. ๊ทธ์ชฝ์ ํ๋ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ณต์ Discourse ์บ๋ฆฐ๋ ํ๋ฌ๊ทธ์ธ์๋ ์ฃผ์ ๋ชฉ๋ก์ ์๋ โAgendaโ ํํฐ์ ์ ์ฌํ ๊ธฐ๋ฅ์ด ์๋ค๋ ๋ด ์ดํด๊ฐ ๋ง๋์? ์ฃผ์ ๋ด ์ด๋ฒคํธ ๋ ์ง ๊ธฐ์ค์ผ๋ก ์ฃผ์ ๋ชฉ๋ก์ ์ ๋ ฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ฐ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐํ๋ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋์ ๋๋ค. ์ด๋ฒคํธ ๊ด๋ฆฌ๋ณด๋ค๋ ํ๋ก์ ํธ ๊ด๋ฆฌ(์ฃผ์ ๋ฅผ ์์ ์ผ๋ก ์ทจ๊ธํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ผ์ ํ๋ฅผ ์์ฑํ๋ ๋ฐฉ์)์ ๋ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
์ด๋ฐ ๊ฒ๋ ์ถ๊ฐํด ๋ณด๋ ๊ฑธ ๊ณ ๋ คํ๊ณ ์์ด์. ํน์ ํด๊ฒฐ์ฑ ์ ์๊ฐํด ๋ณด์ จ๋์?
์ ์๊ฐ์ ์ด๋ ์ต๋๋ค: ๊ฐ ์ด๋ฒคํธ๋ ํ ํฝ์ ๊ณ ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ๆไนไธ็ '๋ต๊ธโ๋ก ์ทจ๊ธ๋์ด์ผ ํฉ๋๋ค. โ์ด๋ฒคํธ ์ถ๊ฐโ ๋ฒํผ์ ํด๋น ํ ํฝ์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋์ดํ๋ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
ํ์ธํด์ ๋ค์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ด ํ๋ฌ๊ทธ์ธ์ ๋ํ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ์ง ์์ต๋๋ค. discourse-calendar ํ๋ฌ๊ทธ์ธ์ ๊ณต์ ์ด๋ฒคํธ(Official Events) ๊ธฐ๋ฅ์ ๋์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํ(deprecated)ํ์ต๋๋ค.
๊ณต์ ํ๋ฌ๊ทธ์ธ์๋ ์์ง ์ด์ ๋ค ์คํ์ผ์ ์ฃผ์ ๋ชฉ๋ก์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
Pavilion ์ ์๋ ๋ด์ฉ์ด ์ด์ ๋ ์ ๋งํฌ๊ฐ ์๋์ง ์์๋ ๋ถ ๊ณ์ ๊ฐ์?
์ด ํ๋ฌ๊ทธ์ธ์ด ์ ํ๋ ์นดํ ๊ณ ๋ฆฌ์์ ์คํ๋ ๋ ๋ค์์ด ํ์๋ฉ๋๋ค:
โฆ ํ์ง๋ง ๋ฌธ์ ๋งํฌ๊ฐ ๊นจ์ ธ ์์ด 404 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํด๋น ์ฌ์ดํธ์ ์ด ์ฌ์ดํธ์์๋ ์ฐพ์๋ณด์์ง๋ง, ์ด ์ฌ์ฉ์ ์๋ด๊ฐ ๋ค๋ฅธ ๊ณณ์ ์๋์ง ๋ชฐ๋์ต๋๋ค.
์ด๋ค ์ด์ ๋ก๋ ํด๋น ์ฃผ์ ๋ฅผ ํ์๋ ์นดํ ๊ณ ๋ฆฌ๋ก ์ฎ๊ธด ์ํ์ ๋๋ค. ๊ณต๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ก ๋๋๋ ค์ผ ํฉ๋๋ค. ๋ ผ์ํ ํ ๊ณง ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
p.s.
ํ์ด์ง๊ฐ ์ด์ ๋ณต๊ตฌ๋์์ ๊ฒ์
๋๋ค.




