This commit is contained in:
lunaticbum 2025-03-20 17:57:55 +09:00
parent 2e3667d0a1
commit c3d2599754
9 changed files with 421 additions and 44 deletions

View File

@ -3,6 +3,9 @@ package kr.lunaticbum.back.lun.controllers
import com.drew.imaging.ImageMetadataReader
import com.drew.metadata.Metadata
import com.google.gson.Gson
import com.google.maps.GeoApiContext
import com.google.maps.GeocodingApi
import com.google.maps.model.LatLng
import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletResponse
import kr.lunaticbum.back.lun.configs.GlobalEnvironment
@ -13,15 +16,22 @@ import kr.lunaticbum.back.lun.model.*
import kr.lunaticbum.back.lun.service.JwtService
import kr.lunaticbum.back.lun.utils.LogService
import kr.lunaticbum.back.lun.utils.getFileExtension
import org.commonmark.node.Node
import org.commonmark.parser.Parser
import org.commonmark.renderer.html.HtmlRenderer
import org.jsoup.Jsoup
import org.jsoup.nodes.Element
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.core.io.Resource
import org.springframework.core.io.UrlResource
import org.springframework.data.domain.Pageable
import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
import org.springframework.web.multipart.MultipartFile
import org.springframework.web.reactive.function.client.WebClient
import reactor.kotlin.core.publisher.toMono
import java.io.*
import java.net.URLDecoder
import java.text.SimpleDateFormat
@ -131,6 +141,23 @@ class BlogController() {
postManageg.getPost(postId).block().apply {
this?.title = URLDecoder.decode(this?.title)
this?.content = URLDecoder.decode(this?.content)
globalEvv.gapiKey?.let {
if (this?.firstAddress?.length ?: 0 < 4){
try {
var addrs = GeocodingApi.reverseGeocode(GeoApiContext.Builder().apiKey(it).build(), LatLng(this?.firstPostLat!!,this?.firstPostLon!!)).await()
this.firstAddress = addrs.first().formattedAddress
} catch (e: Exception) {}
}
if (this?.modifyAddress?.length ?: 0 < 4){
try {
var addrs = GeocodingApi.reverseGeocode(GeoApiContext.Builder().apiKey(it).build(), LatLng(this?.modifyLat!!,this?.modifyLon!!)).await()
this.modifyAddress = addrs.first().formattedAddress
} catch (e: Exception) {}
}
}
vm.modelMap.put("srcPost",this)
}
return vm
@ -175,6 +202,31 @@ class BlogController() {
}
@GetMapping("posts")
fun posts() : ResultMV{
val vm = ResultMV("content/blog/posts")
try {
vm.modelMap.put("Posts", postManageg.find20().apply {
this.forEach {
it.title = URLDecoder.decode(it.title)
it.content = URLDecoder.decode(it.content)
val parser: Parser = Parser.builder().build()
val document: Node = parser.parse(it.content)
val renderer = HtmlRenderer.builder().build()
Jsoup.parse(renderer.render(document))?.let { doc ->
val firstImg: Element? = doc.select("img")?.first()
val imgSrc: String = firstImg?.attr("src") ?: ""
it.image = imgSrc
it.html = doc.text()
}
it.title = if ((it.title?.length ?: 0) >= 1) it.title else ""
}
}.chunked(2))
}catch (ex: Exception){ex.printStackTrace()}
return vm
}
@GetMapping("recent")
fun recent() : ResultMV{
val vm = ResultMV("content/blog/viewer")

View File

@ -42,6 +42,8 @@ class Post {
var posting : Boolean = false
var firstPostLat : Double = 0.0
var firstPostLon : Double = 0.0
var firstAddress = ""
var modifyAddress = ""
var modifyTime : Long = 0
var modifyLat : Double = 0.0

View File

@ -158,9 +158,9 @@ a.btn_layerClose:hover {
overflow-y: hidden;
overflow-x: hidden;
}
#editor {
border: 1px solid #393b42;
padding: 1px;
border-radius: 10px;
background: #00000044;
}
/*#editor {*/
/* border: 1px solid #393b42;*/
/* padding: 1px;*/
/* border-radius: 10px;*/
/* background: #00000044;*/
/*}*/

View File

@ -1,27 +1,27 @@
onload = function() {
history.replaceState({}, null, location.pathname);
var accToken = get_cookie("access")
var refreshToken = get_cookie("refresh")
console.log("access === " + accToken + " || " + accToken.length);
console.log("refresh === " + refreshToken + " || " + refreshToken.length);
// var accToken = get_cookie("access")
// var refreshToken = get_cookie("refresh")
// console.log("access === " + accToken + " || " + accToken.length);
// console.log("refresh === " + refreshToken + " || " + refreshToken.length);
document.cookie = "access=; expires=Thu, 01 Jan 1970 00:00:01 GMT;"
document.cookie = "refresh=; expires=Thu, 01 Jan 1970 00:00:01 GMT;"
document.cookie = "CLEAR=; expires=Thu, 01 Jan 1970 00:00:01 GMT;"
}
onbeforeunload = function () {
var accToken = get_cookie("access")
var refreshToken = get_cookie("refresh")
console.log("access === " + accToken + " || " + accToken.length);
console.log("refresh === " + refreshToken + " || " + refreshToken.length);
if (accToken.length < 1) {
document.cookie = "refresh="+ window.sessionStorage.getItem("REFRESH") + ";";
}
if (refreshToken.length < 1) {
window.sessionStorage.setItem("REFRESH",get_cookie("refresh"))
}
}
// onbeforeunload = function () {
// var accToken = get_cookie("access")
// var refreshToken = get_cookie("refresh")
// console.log("access === " + accToken + " || " + accToken.length);
// console.log("refresh === " + refreshToken + " || " + refreshToken.length);
//
// if (accToken.length < 1) {
// document.cookie = "refresh="+ window.sessionStorage.getItem("REFRESH") + ";";
// }
// if (refreshToken.length < 1) {
// window.sessionStorage.setItem("REFRESH",get_cookie("refresh"))
// }
// }
function get_cookie(name) {
var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
return value? value[2] : null;

View File

@ -0,0 +1,130 @@
<!DOCTYPE html>
<html
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}"
>
<th:block layout:fragment="head">
<script type="text/javascript" th:src="@{/js/toast-ui-view.js}"></script>
<link th:href="@{/css/toast-ui-dark.css}" rel="stylesheet" />
<script type="text/javascript" th:src="@{/js/blog.js}"></script>
<link th:href="@{/css/blog.css}" rel="stylesheet" />
<script th:inline="javascript">
let editor
let onChange = () => {console.log(editor.getMarkdown())}
document.addEventListener("DOMContentLoaded", onLoaded);
function onLoaded() {
// 1. 모든 'current' 클래스를 가진 요소를 선택하고 제거
const currentElements = document.querySelectorAll('.current');
currentElements.forEach(element => {
element.classList.remove('current');
});
// 2. 특정 조건에 맞는 요소에 'current' 클래스 추가 (예: ID가 'targetElement'인 요소)
const targetElement = document.getElementById('menu_posts');
if (targetElement) {
targetElement.classList.add('current');
}
}
</script>
</th:block>
<th:block layout:fragment="content" id="content">
<section class="wrapper style1">
<div class="container">
<div class="row gtr-200">
<div class="col-3 col-12-narrower">
<div id="sidebar1">
<section>
<h3>Just a Subheading</h3>
<p>Phasellus quam turpis, feugiat sit amet ornare in, hendrerit in lectus.
Praesent semper mod quis eget mi. Etiam eu ante risus. Aliquam erat volutpat.
Aliquam luctus et mattis lectus sit amet pulvinar. Nam turpis et nisi etiam.</p>
<footer>
<a href="#" class="button">Continue Reading</a>
</footer>
</section>
<section>
<h3>Another Subheading</h3>
<ul class="links">
<li><a href="#">Amet turpis, feugiat sit amet</a></li>
<li><a href="#">Ornare in hendrerit lectus</a></li>
<li><a href="#">Semper mod quis eget dolore</a></li>
<li><a href="#">Consequat lorem phasellus</a></li>
<li><a href="#">Amet turpis feugiat amet</a></li>
<li><a href="#">Semper mod quisturpis nisi</a></li>
</ul>
<footer>
<a href="#" class="button">More Random Links</a>
</footer>
</section>
</div>
</div>
<div class="col-6 col-12-narrower imp-narrower">
<div id="content">
<article>
<header>
<h2>Two Sidebar</h2>
<p>Yup. Two sidebars at the same time.</p>
</header>
<span class="image featured"><img src="images/banner.jpg" alt="" /></span>
<p>Phasellus quam turpis, feugiat sit amet ornare in, hendrerit in lectus.
Praesent semper mod quis eget mi. Etiam eu ante risus. Aliquam erat volutpat.
Aliquam luctus et mattis lectus sit amet pulvinar. Nam turpis nisi
consequat etiam lorem ipsum dolor sit amet nullam.</p>
<h3>And Yet Another Subheading</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ac quam risus, at tempus
justo. Sed dictum rutrum massa eu volutpat. Quisque vitae hendrerit sem. Pellentesque lorem felis,
ultricies a bibendum id, bibendum sit amet nisl. Mauris et lorem quam. Maecenas rutrum imperdiet
rhoncus dui quis euismod. Maecenas lorem tellus, congue et condimentum ac, ullamcorper non sapien.
Donec sagittis massa et leo semper a scelerisque metus faucibus. Morbi congue mattis mi.
Phasellus sed nisl vitae risus tristique volutpat. Cras rutrum commodo luctus.</p>
<p>Phasellus odio risus, faucibus et viverra vitae, eleifend ac purus. Praesent mattis, enim
quis hendrerit porttitor, sapien tortor viverra magna, sit amet rhoncus nisl lacus nec arcu.
Maecenas tortor mauris, consectetur pellentesque dapibus eget, tincidunt vitae arcu.
Vestibulum purus augue, tincidunt sit amet iaculis id, porta eu purus.</p>
</article>
</div>
</div>
<div class="col-3 col-12-narrower">
<div id="sidebar2">
<section>
<h3>Another Subheading</h3>
<ul class="links">
<li><a href="#">Amet turpis, feugiat sit amet</a></li>
<li><a href="#">Ornare in hendrerit lectus</a></li>
<li><a href="#">Semper mod quis eget dolore</a></li>
<li><a href="#">Consequat lorem phasellus</a></li>
<li><a href="#">Amet turpis feugiat amet</a></li>
<li><a href="#">Semper mod quisturpis nisi</a></li>
</ul>
<footer>
<a href="#" class="button">More Random Links</a>
</footer>
</section>
<section>
<h3>Just a Subheading</h3>
<p>Phasellus quam turpis, feugiat sit amet ornare in, hendrerit in lectus.
Praesent semper mod quis eget mi. Etiam eu ante risus. Aliquam erat volutpat.
Aliquam luctus et mattis lectus sit amet pulvinar. Nam turpis et nisi etiam.</p>
<footer>
<a href="#" class="button">Continue Reading</a>
</footer>
</section>
</div>
</div>
</div>
</div>
</section>
</th:block>
</html>

View File

@ -20,28 +20,31 @@
baseData.firstPostLat = [[${srcPost.firstPostLat}]];
document.getElementById('location_field').textContent = "Lat: " + baseData.firstPostLat + ", Lon: " + baseData.firstPostLon;
$('#title_layer').text(baseData.title)
var h = document.querySelector('#main_layer').getBoundingClientRect().height * 0.7
editor = new toastui.Editor({
el: document.querySelector('#editor'),
height: h+ 'px',
height: '100%',
width:'100%',
viewer: true,
usageStatistics : false,
initialValue:baseData.content,
theme:"dark",
});
}
</script>
</th:block>
<th:block layout:fragment="content" id="content">
<section class="wrapper style2">
<div class="container">
<header class="major" >
<h2 id="title_layer" th:text="${srcPost.title}">A gigantic heading you can use for whatever</h2>
<p th:text="${#temporals.format(T(java.time.Instant).ofEpochMilli(srcPost.writeTime).atZone(T(java.time.ZoneId).systemDefault()).toLocalDateTime(), 'yyyy-MM-dd HH:mm:ss')}"></p>
</header>
</div>
</section>
<section class="wrapper style1">
<div class="container">
<div id="content">
<!-- Content -->
<article>
<label id="title_layer" class="write_option" ></label>
<div id="editor" ></div>
<div class="write_controllbox">
<div class="write_option btn-example" to="#popLayer1" onclick="openPopup(this)" ></div>
@ -50,6 +53,8 @@
<div style="width: 15px" ></div>
<label class="write_option" readonly id="location_field"></label>
</div>
<h3 id="write" th:text="${srcPost.firstAddress}"></h3>
<h3 id="modify" th:text="${srcPost.modifyAddress}"></h3>
</article>
</div>
</div>

View File

@ -4,14 +4,15 @@
<div id="header">
<!-- Logo -->
<h1><a href="index.html" id="logo">BUM ' <em>sPace</em></a></h1>
<h1><a th:href="@{/}" id="logo">BUM ' <em>sPace</em></a></h1>
<!-- Nav -->
<nav id="nav">
<ul>
<li class="current"><a href="index.html">Home</a></li>
<li>
<a href="#">Dropdown</a>
<li id="menu_home" class="current"><a th:href="@{/}">Home</a></li>
<li id="menu_posts"><a href="blog/posts">Posts</a></li>
<li id="menu_drop">
<a href="#">Dropdown</a>
<ul>
<li><a href="#">Lorem dolor</a></li>
<li><a href="#">Magna phasellus</a></li>
@ -29,10 +30,10 @@
<li><a href="#">Veroeros feugiat</a></li>
</ul>
</li>
<li><a href="left-sidebar">Left Sidebar</a></li>
<li><a href="right-sidebar">Right Sidebar</a></li>
<li><a href="two-sidebar">Two Sidebar</a></li>
<li><a href="no-sidebar">No Sidebar</a></li>
<li id="menu_sec"><a href="left-sidebar">Left Sidebar</a></li>
<li id="menu_thr"><a href="right-sidebar">Right Sidebar</a></li>
<li id="menu_four"><a href="two-sidebar">Two Sidebar</a></li>
</ul>
</nav>

View File

@ -4,6 +4,7 @@
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
xmlns="http://www.w3.org/1999/html">
<head>
<base th:href="@{/}" />
<th:block th:replace="~{fragments/includes :: includes}"></th:block>
<th:block layout:fragment="head"></th:block>
<th:block th:replace="~{fragments/title :: title}"></th:block>
@ -19,12 +20,12 @@
<th:block th:replace="~{fragments/footer :: footer}"></th:block>
</div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.dropotron.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
<script th:src="@{/assets/js/jquery.min.js}"></script>
<script th:src="@{/assets/js/jquery.dropotron.min.js}"></script>
<script th:src="@{/assets/js/browser.min.js}"></script>
<script th:src="@{/assets/js/breakpoints.min.js}"></script>
<script th:src="@{/assets/js/util.js}"></script>
<script th:src="@{/assets/js/main.js}"></script>
</body>
</html>

186
test.md Normal file
View File

@ -0,0 +1,186 @@
제목
첫 날일정만 먼저 정리해주세요
알겠습니다. 첫날 일정을 아래 표에 정리해 드립니다.
치앙마이 7일 여행 - 1일차 상세 일정
시간 장소/활동 이동 수단 소요 시간 예상 비용 (바트) 참고사항 대체 장소 비고 사항
밤 11시 치앙마이 공항 도착 → POR 다오와둥 호텔 체크인 Grab 15분 150~200 호텔 위치: 올드타운 근처 치앙마이는 과거 란나 왕국의 수도, '북부의 장미'라는 별칭, 태국은 불교 국가, '싸와디'라는 인사말
밤 호텔 로비에서 맥주 후 휴식 100~150 호텔 주변 편의점에서 맥주 구매 후 휴식 태국 맥주: 창(Chang) - 약간 쌉싸름, 싱하(Singha) - 부드럽고 깔끔
이제 2일차부터 7일차까지의 일정을 위 표와 같은 형식으로 필요하시면 알려주세요.
@@@
둘째 날 일정 정리해주세요
알겠습니다. 검색 결과와 기존 정보를 바탕으로 치앙마이 2일차 일정을 정리해 드리겠습니다.
치앙마이 7일 여행 - 2일차 상세 일정
시간 장소/활동 이동 수단 소요 시간 예상 비용 (바트) 참고사항 대체 장소 비고 사항
아침 호텔 조식 포함
오전 징짜이 마켓 방문 (오전 8:30 - 오후 2시) Grab 10분 90 유기농 제품, 수공예품 쇼핑, 코코넛 마켓과 가까움[2][5][6] 호텔 근처 아침 식사 가능한 로컬 식당 (Jok Sompet) 징짜이 마켓은 평일에도 운영하나, 주말에만 바자회 같은 분위기의 마켓이 열림[2], 타페 게이트에서 볼트(Bolt)를 이용하면 90바트 정도[2]
낮 12시-2시 호텔 복귀 후 낮잠 Grab 10분 - 체력 회복
오후 2시 흐언펜(Huen Phen)에서 늦은 점심 (카오쏘이) 도보 10분 80~120 전통 북부 태국 요리, 카오쏘이 (코코넛 밀크 커리 국수) 대체: Old Chiangmai Cultural Center Khantoke Dinner Show (전통 공연 + 북부 음식) 카오쏘이는 란나 왕조 시대부터 전해 내려오는 음식, 태국 음식은 매운맛, 단맛, 짠맛, 신맛이 조화롭게 어우러져 있는 것이 특징
오후 4시 Akha Ama Coffee에서 커피 도보 80~120 대체: Cool Muang Coffee (타패 게이트 뷰) 또는 아카아마 프라싱 (Aka Ama Phrasingh) Akha Ama Coffee는 태국 북부 산악지대에 사는 아카족 농부들이 직접 재배한 커피, 태국에서는 커피를 마시는 문화가 점점 더 인기를 얻고 있음
오후 6시 왓 프라싱, 왓 체디 루앙 사원 탐방 도보 사원 방문 시 복장 주의 왓 프라싱은 치앙마이에서 가장 크고 아름다운 사원 중 하나, 왓 체디 루앙은 거대한 탑이 인상적인 사원, 태국 사원을 방문할 때는 단정한 복장을 착용하고, 신발을 벗어야 함[3]
저녁 8시 선데이 마켓 방문 (선데이 워킹 스트리트 마켓 근처) 도보/Grab 5분 길거리 음식 비용 별도 매주 일요일 저녁에 열리는 야시장, 팟타이, 망고밥, 기념품 쇼핑 대체: Anusarn Market (매일 저녁 야시장) 선데이 마켓은 매주 일요일 저녁에 열리는 치앙마이 최대 규모의 야시장, 팟타이, 망고밥, 꼬치구이 등 다양한 음식을 맛보세요.
밤 10시 타패 게이트 근처 루프탑 바 (선택 사항) 도보 100~200 FOHHIDE (루프탑 카페) 또는 THC Rooftop Bar
야식 창푸악 게이트 야시장에서 카우보이 카오카무 (선택 사항) Grab 10분 60 족발덮밥 호텔 주변 로컬 식당에서 다른 태국 음식 맛보기 카오카무는 태국식 족발 덮밥으로, 부드러운 족발과 짭짤한 소스가 밥과 환상적인 조화를 이루는 음식
인용:
[1] 치앙마이 여행코스 3박 5일 패키지 여행 - 날씨, 관광지, 가볼만한 곳 추천 https://www.tripstore.kr/blog/치앙마이-여행코스-3박-5일-패키지-여행-날씨-관광지
[2] 치앙마이여행 주말 가볼만한곳 2 : 징짜이마켓 시간 https://yoloria.tistory.com/63
[3] 태국 치앙마이 여행코스 3박 4일 총정리 (+투어추천, 경비) https://www.tourtoctoc.com/news/articleView.html?idxno=2143
[4] 치앙마이 한 달 살기 - 징짜이 마켓을 가다 - 브런치스토리 https://brunch.co.kr/@@GvS/58
[5] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[6] 치앙마이 한달살기 일요일 마켓투어vlog 쇼핑리스트 영업시간 ... https://www.youtube.com/watch?v=yjrqbRH4naA
[7] 궁극의 태국 2주 일정: 미소의 나라 최고의 여행지 둘러보기 https://www.agoda.com/ko-kr/travel-guides/thailand/ultimate-thailand-2-week-itinerary-explore-the-best-of-the-land-of-smiles/
[8] [태국 여행] 치앙마이 주말 마켓 중 힙함의 정점을 찍은 '참차마켓' https://meanmin.tistory.com/42
@@dd
d셋째날 일정이요. ### 치앙마이 7일 여행 - 3일차 상세 일정 | 시간 | 장소/활동 | 이동 수단 | 소요 시간 | 예상 비용 (바트) | 참고사항 | 대체 장소 | 비고 사항 | | :--------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------- | :-------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 아침 | 호텔 조식 | | | 포함 | | | | 오전 9시 | 반캉왓 예술 마을 방문 | Grab | 20분 | 200 | 아기자기한 공방과 갤러리가 많은 예술가들의 마을, 오전 11시부터 운영 | NO.39 카페 방문 (반캉왓 근처 인기 카페) | 반캉왓은 한국인들에게도 인기 있는 감성적인 예술 마을, 소품샵과 카페를 둘러보며 여유로운 시간을 보낼 수 있음 | | 낮 12시-2시 | 호텔 복귀 후 낮잠 | Grab | 20분 | - | 체력 회복 | | | 오후 2시 | 올드타운 투어: 왓 프라싱, 왓 체디 루앙 사원 탐방 | Grab | 15분 | 100~150 | 치앙마이의 대표 사원들, 단정한 복장 필수 | 치앙만 사원(Chiang Man Temple) | 왓 프라싱은 치앙마이에서 가장 크고 아름다운 사원 중 하나, 왓 체디 루앙은 거대한 탑이 인상적인 사원, 태국 사원을 방문할 때는 단정한 복장을 착용하고 신발을 벗어야 함 | | 오후 4시 | 블루 누들(Blue Noodle)에서 늦은 점심 | 도보 또는 Grab | 10분 | 80~120 | 올드타운 내 인기 있는 태국 누들 전문점 | The Faces Gallery & Gastro Bar (올드타운 내 감각적인 레스토랑) | | 오후 6시 | 마사지 체험 (렛츠 릴랙스 또는 근처 마사지샵) | 도보 또는 Grab | | 300~600 | 여행의 피로를 풀어주는 전신 마사지 체험 | | 저녁 8시 | 라탄거리(Rattanakosin Road) 쇼핑 및 산책 | 도보 또는 Grab | | 쇼핑 비용 별도 | 라탄 소재의 가구 및 소품들을 판매하는 거리, 독특한 분위기와 쇼핑 즐길 수 있음 | | 밤 10시 | 노스 게이트 재즈 바(North Gate Jazz Co-Op) 방문 (선택 사항) | 도보 또는 Grab | | 음료 비용 별도 | 치앙마이에서 가장 유명한 재즈 바 중 하나, 라이브 음악 감상 가능 | --- ### 비고 사항 - 반캉왓 예술 마을: 오전에 방문하면 한적하게 둘러볼 수 있으며, NO.39 카페에서 커피와 디저트를 즐길 수 있음. - 올드타운 투어: 사원 방문 시 단정한 복장 필수(어깨와 무릎을 가리는 옷). - 마사지: 렛츠 릴랙스는 치앙마이에서 유명한 마사지 체인으로 미리 예약하는 것이 좋음. - 노스 게이트 재즈 바: 저녁 늦게 가면 자리가 없을 수 있으니 일찍 도착 추천. 필요 시 다음 날 일정도 정리해 드리겠습니다. 즐거운 여행 되세요! 인용: [1] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8 [2] 치앙마이 3일차_예기치 못한 순간을 만나는 게 여행 - 브런치스토리 https://brunch.co.kr/@@3cWz/636 [3] 태국 치앙마이 여행코스 3박 4일 총정리 (+투어추천, 경비) https://www.tourtoctoc.com/news/articleView.html?idxno=2143 [4] 나만 알고 싶은 또 다른 너의 모습, 치앙마이 - 한국경제 https://www.hankyung.com/article/2024041152181 [5] [태국여행] 친구 4명과 함께하는 알찬 3박 4일 치앙마이 여행코스 ... https://meanmin.tistory.com/94 [6] 03화 자연스러운 미라클 모닝을 할 수 있는 도시 - 브런치스토리 https://brunch.co.kr/@@dk9g/62 [7] 치앙마이 여행코스 3박 5일 패키지 여행 - 날씨, 관광지, 가볼만한 곳 추천 https://www.tripstore.kr/blog/치앙마이-여행코스-3박-5일-패키지-여행-날씨-관광지 [8] 세계테마기행 - 태국 삼시 세끼- 힐링 맛집, 치앙마이_#002 - YouTube https://www.youtube.com/watch?v=xL145Z5RgLg [9] [치앙마이 여행] 치앙마이 3박 4일 여행 일정 - 다섯손가락 여행스케치 https://happyscience99.tistory.com/29
셋째날 일정이요.
치앙마이 7일 여행 - 3일차 상세 일정
시간 장소/활동 이동 수단 소요 시간 예상 비용 (바트) 참고사항 대체 장소 비고 사항
아침 호텔 조식 포함
오전 9시 반캉왓 예술 마을 방문 Grab 20분 200 아기자기한 공방과 갤러리가 많은 예술가들의 마을, 오전 11시부터 운영 NO.39 카페 방문 (반캉왓 근처 인기 카페) 반캉왓은 한국인들에게도 인기 있는 감성적인 예술 마을, 소품샵과 카페를 둘러보며 여유로운 시간을 보낼 수 있음
낮 12시-2시 호텔 복귀 후 낮잠 Grab 20분 - 체력 회복
오후 2시 올드타운 투어: 왓 프라싱, 왓 체디 루앙 사원 탐방 Grab 15분 100~150 치앙마이의 대표 사원들, 단정한 복장 필수 치앙만 사원(Chiang Man Temple) 왓 프라싱은 치앙마이에서 가장 크고 아름다운 사원 중 하나, 왓 체디 루앙은 거대한 탑이 인상적인 사원, 태국 사원을 방문할 때는 단정한 복장을 착용하고 신발을 벗어야 함
오후 4시 블루 누들(Blue Noodle)에서 늦은 점심 도보 또는 Grab 10분 80~120 올드타운 내 인기 있는 태국 누들 전문점 The Faces Gallery & Gastro Bar (올드타운 내 감각적인 레스토랑)
오후 6시 마사지 체험 (렛츠 릴랙스 또는 근처 마사지샵) 도보 또는 Grab 300~600 여행의 피로를 풀어주는 전신 마사지 체험
저녁 8시 라탄거리(Rattanakosin Road) 쇼핑 및 산책 도보 또는 Grab 쇼핑 비용 별도 라탄 소재의 가구 및 소품들을 판매하는 거리, 독특한 분위기와 쇼핑 즐길 수 있음
밤 10시 노스 게이트 재즈 바(North Gate Jazz Co-Op) 방문 (선택 사항) 도보 또는 Grab 음료 비용 별도 치앙마이에서 가장 유명한 재즈 바 중 하나, 라이브 음악 감상 가능
비고 사항
반캉왓 예술 마을: 오전에 방문하면 한적하게 둘러볼 수 있으며, NO.39 카페에서 커피와 디저트를 즐길 수 있음.
올드타운 투어: 사원 방문 시 단정한 복장 필수(어깨와 무릎을 가리는 옷).
마사지: 렛츠 릴랙스는 치앙마이에서 유명한 마사지 체인으로 미리 예약하는 것이 좋음.
노스 게이트 재즈 바: 저녁 늦게 가면 자리가 없을 수 있으니 일찍 도착 추천.
필요 시 다음 날 일정도 정리해 드리겠습니다. 즐거운 여행 되세요!
인용:
[1] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[2] 치앙마이 3일차_예기치 못한 순간을 만나는 게 여행 - 브런치스토리 https://brunch.co.kr/@@3cWz/636
[3] 태국 치앙마이 여행코스 3박 4일 총정리 (+투어추천, 경비) https://www.tourtoctoc.com/news/articleView.html?idxno=2143
[4] 나만 알고 싶은 또 다른 너의 모습, 치앙마이 - 한국경제 https://www.hankyung.com/article/2024041152181
[5] [태국여행] 친구 4명과 함께하는 알찬 3박 4일 치앙마이 여행코스 ... https://meanmin.tistory.com/94
[6] 03화 자연스러운 미라클 모닝을 할 수 있는 도시 - 브런치스토리 https://brunch.co.kr/@@dk9g/62
[7] 치앙마이 여행코스 3박 5일 패키지 여행 - 날씨, 관광지, 가볼만한 곳 추천 https://www.tripstore.kr/blog/치앙마이-여행코스-3박-5일-패키지-여행-날씨-관광지
[8] 세계테마기행 - 태국 삼시 세끼- 힐링 맛집, 치앙마이_#002 - YouTube https://www.youtube.com/watch?v=xL145Z5RgLg
[9] [치앙마이 여행] 치앙마이 3박 4일 여행 일정 - 다섯손가락 여행스케치 https://happyscience99.tistory.com/29
@@@
넷째날 일정이요
### [치앙마이 7일 여행 - 4일차 상세 일정](pplx://action/followup)
| **시간** | **장소/활동** | **이동 수단** | **소요 시간** | **예상 비용 (바트)** | **참고사항** | **대체 장소** | **비고 사항** |
| :--------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------- | :-------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[아침](pplx://action/followup)** | 호텔 조식 | | | 포함 | | | |
| **[오전 9시](pplx://action/followup)** | 코끼리 보호구역 투어 | 택시/툭툭/투어차량 | 1시간~1시간 30분 | 1500~3000 (투어) | 코끼리 먹이 주기, 진흙 목욕, 코끼리 관찰 등 윤리적인 코끼리 보호 활동 참여 | 코끼리 보호구역 외 코끼리 에코파크 | 과거 코끼리를 타고 일정 구역을 돌아보는 체험이 아닌 코끼리를 윤리적으로 보호하며 교감할 수 있는 기회를 제공, 오전과 오후 반나절 투어가 가능, 래프팅 등 액티비티도 함께 즐길 수 있음[3] |
| **[점심 12시](pplx://action/followup)** | 코끼리 보호구역 내 점심 식사 | | | 포함 | | | |
| **[오후 2시](pplx://action/followup)** | 호텔 복귀 후 낮잠 | 택시/툭툭/투어차량 | 1시간~1시간 30분 | - | | | |
| **[오후 4시](pplx://action/followup)** | 님만해민 이동 후 카페에서 휴식 | 택시/툭툭/Grab | 30분 | 100~200 | 다양한 카페와 레스토랑이 있는 트렌디한 지역 | Ristr8to Coffee, Klay Cafe, Hang & Craft, Roast8ry Lab[4][1] | |
| **[저녁 6시](pplx://action/followup)** | 님만해민 거리 저녁 식사 | 도보 | | 200~400 | 태국 음식, 서양 음식 등 다양한 선택지 | | |
| **[저녁 8시](pplx://action/followup)** | 님만해민 거리 쇼핑 | 도보 | | 쇼핑 비용 별도 | 디자이너 브랜드, 기념품 가게 등 다양한 상점 | 마야몰 쇼핑[4] | |
**[참고사항](pplx://action/followup):**
* 코끼리 보호구역은 미리 예약하는 것이 좋으며, 윤리적인 코끼리 투어를 선택하는 것이 중요함[3].
* 코끼리 보호구역까지의 이동 시간은 교통 상황에 따라 달라질 수 있음.
* 님만해민은 카페와 상점이 많으므로 취향에 맞는 곳을 선택하여 시간을 보내면 됨[1].
최종 확인 후 다음 일정을 진행해 드릴까요?
인용:
[1] 치앙마이 여행코스 3박 5일 패키지 여행 - 날씨, 관광지, 가볼만한 곳 추천 https://www.tripstore.kr/blog/치앙마이-여행코스-3박-5일-패키지-여행-날씨-관광지
[2] 치앙마이 여행 팁: 3박 4일 코스와 추천 투어 - 바쿠스 https://parkku.tistory.com/entry/치앙마이-여행-팁-3박-4일-코스와-추천-투어
[3] 태국 치앙마이 여행코스 3박 4일 총정리 (+투어추천, 경비) https://www.tourtoctoc.com/news/articleView.html?idxno=2143
[4] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[5] 태국 치앙마이 여행 계획 - 3박4일 여행 - 소소하게 https://sosohage03.tistory.com/17
[6] 치앙마이 자유여행 일정 3박 5일 코스 및 추천 투어 총정리 https://blog.naver.com/duliebear/223675374250?fromRss=true&trackingCode=rss
[7] 태국 치앙마이 여행코스 3박 4일 총정리 (+투어추천, 경비) - Daum https://v.daum.net/v/V8K1mvg122
[8] 치앙마이 4박5일 5박6일 일주일살기 여행 일정 항공권 치앙라이 일일 ... https://blog.naver.com/zuuu_33/223317758753
@@@
다섯째말 일정 정리해 주세요
제공해주신 검색 결과와 기존 정보를 바탕으로 치앙마이 5일차 일정을 정리해 드리겠습니다.
### [치앙마이 7일 여행 - 5일차 상세 일정](pplx://action/followup)
| **시간** | **장소/활동** | **이동 수단** | **소요 시간** | **예상 비용 (바트)** | **참고사항** | **대체 장소** | **비고 사항** |
| :--------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------- | :-------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[아침](pplx://action/followup)** | 호텔 조식 | | | 포함 | | | |
| **[오전 9시](pplx://action/followup)** | 치앙마이 시립 예술 문화 센터 방문 | Grab | 15분 | 50~100 | 란나 문화와 예술에 대한 통찰력을 얻을 수 있는 곳 | 왓 쑤언덕 (Wat Suan Dok) | 다양한 미술 작품 감상 |
| **[오전 11시](pplx://action/followup)** | 왓 쑤언덕 (Wat Suan Dok) 방문 | Grab | 15분 | 50~100 | 아름다운 건축물과 평화로운 분위기를 느낄 수 있는 사원 | | 태국 북부 건축 양식 감상 |
| **[낮 12시-2시](pplx://action/followup)** | 호텔 복귀 후 낮잠 | Grab | 15분 | - | 체력 회복 | | 휴식 및 재충전 |
| **[오후 2시](pplx://action/followup)** | 님만해민 카페에서 늦은 점심 및 휴식 | Grab | 15분 | 100-300 | 트렌디한 분위기 속에서 여유로운 시간 보내기 | 리스트8토 (Ristr8to), 원님만 (One Nimman) 주변 카페 | 맛있는 커피와 디저트 |
| **[오후 4시](pplx://action/followup)** | 도심 갤러리 및 장인 상점 방문 | 도보 | - | 쇼핑 비용 별도 | 현지 예술가들의 작품 감상 및 쇼핑 | | 다양한 공예품 구경 |
| **[저녁 6시](pplx://action/followup)** | 님만해민 맛집에서 저녁 식사 | 도보 | - | 200-500 | 다양한 종류의 음식 맛보기 | 까이양 청더이, 텅템토 (Tong Tem Toh) | 현지 음식 체험 |
| **[밤 8시](pplx://action/followup)** | 님만해민 루프탑 바에서 야경 감상 | 택시/Grab | 10분 | 100-300 | 멋진 야경을 보면서 하루 마무리하기 | The Roof Bar, Maya Lifestyle Shopping Center 루프탑 | 로맨틱한 분위기 |
**[참고 사항](pplx://action/followup):**
* 님만해민은 교통 체증이 심할 수 있으므로, 이동 시 시간을 넉넉하게 잡는 것이 좋습니다.
* 사원 방문 시에는 노출이 심한 옷은 피해주세요.
* 갤러리 및 상점 운영 시간을 미리 확인하고 방문하는 것이 좋습니다.
6일차, 7일차 일정도 필요하시면 알려주세요.
인용:
[1] 치앙마이(Chiang Mai) 4박 5일 여행 일정 - 트래블 어드밴스 https://advtrav.com/치앙마이chiang-mai-เชียงใหม่-4박-5일-여행-일정/
[2] 7일간의 치앙마이 일정: 란나 문화의 심장부 발견하기 https://www.agoda.com/ko-kr/travel-guides/thailand/chiang-mai/7-days-in-chiang-mai-itinerary-discovering-the-heart-of-lanna-culture/
[3] 치앙마이 여행코스 3박 5일 패키지 여행 - 날씨, 관광지, 가볼만한 곳 추천 https://www.tripstore.kr/blog/치앙마이-여행코스-3박-5일-패키지-여행-날씨-관광지
[4] 라나 레거시를 발견하세요: 치앙마이에서의 매혹적인 5일 https://www.agoda.com/ko-kr/travel-guides/thailand/chiang-mai/uncover-the-lanna-legacy-5-enchanting-days-in-chiang-mai/
[5] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[6] 치앙마이 자유여행 일정 3박 5일 코스 및 추천 투어 총정리 https://blog.naver.com/duliebear/223675374250?fromRss=true&trackingCode=rss
[7] 치앙마이 여행 일정 - 5일차ㅣ카페 그룬ㅣ카오소이 매사이ㅣ플레이 ... https://blog.naver.com/jooooniver/223550444132
[8] 태국 치앙마이 여행 준비(5박 7일) : 일정, 경비, 2월 날씨 - 네이버블로그 https://blog.naver.com/oneulharoo_o/223434739382?fromRss=true&trackingCode=rss
@@@
6일차 일정 정리 부탁드립니다
제공된 검색 결과와 기존 정보를 바탕으로 치앙마이 6일차 일정을 정리해 드리겠습니다. 검색 결과에서 다양한 선택지를 조합하여 균형 잡힌 일정을 구성했습니다.
### [치앙마이 7일 여행 - 6일차 상세 일정](pplx://action/followup)
| **시간** | **장소/활동** | **이동 수단** | **소요 시간** | **예상 비용 (바트)** | **참고사항** | **대체 장소** | **비고 사항** |
| :--------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------- | :-------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[아침](pplx://action/followup)** | 호텔 조식 | | | 포함 | | | |
| **[오전 9시](pplx://action/followup)** | 쿠킹 클래스 또는 요가 클래스 참여 | Grab/택시 | 15-30분 | 800-1500 (클래스) | 태국 요리 배우기 또는 몸과 마음을 재충전하는 시간 | 도이 인타논 국립공원 방문 (자연 속 트레킹) | 색다른 경험, 사전 예약 필수 |
| **[점심 12시](pplx://action/followup)** | 넹 항아리구이 (인근 맛집) | Grab/택시 | 10분 | 200-400 | 치앙마이 현지 맛집 | 숙소 주변 레스토랑 | 현지인 추천 맛집 탐방 |
| **[오후 2시](pplx://action/followup)** | 와로롯 시장 방문 | Grab/택시 | 15분 | 50-100 | 다양한 현지 상품 구경 및 쇼핑 | | 현지 시장 체험, 다양한 길거리 음식 |
| **[오후 4시](pplx://action/followup)** | 호텔 복귀 후 휴식 또는 마사지 | Grab/택시 | 15분 | 300-600 | 피로 풀기 | 숙소 내 수영장 이용 | |
| **[저녁 6시](pplx://action/followup)** | 나이트 바자 야시장 방문 | Grab/택시 | 15분 | 50-100 | 다양한 길거리 음식과 기념품 구경 | | 저녁 식사 및 쇼핑 |
| **[밤 9시](pplx://action/followup)** | 나이트 바자 주변 나이트 라이프 즐기기 (선택 사항) | 도보/Grab | - | 음료/간식 비용 | | | 자유시간 |
**[참고사항](pplx://action/followup):**
* 쿠킹 클래스나 요가 클래스는 사전에 예약하는 것이 좋습니다.
* 와로롯 시장은 활기찬 분위기를 느낄 수 있는 곳이지만, 소매치기를 조심해야 합니다.
* 나이트 바자 야시장은 저녁 시간에만 열리며, 다양한 길거리 음식과 기념품을 저렴하게 구입할 수 있습니다.
7일차 일정도 필요하시면 알려주세요.
인용:
[1] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[2] 7일간의 치앙마이 일정: 란나 문화의 심장부 발견하기 https://www.agoda.com/ko-kr/travel-guides/thailand/chiang-mai/7-days-in-chiang-mai-itinerary-discovering-the-heart-of-lanna-culture/
[3] [여행] 태국 치앙마이 6박8일 자유 여행, #3 일정과 공간 https://drawfreeman.tistory.com/entry/여행-태국-치앙마이-6박8일-자유-여행-3편-공간
[4] 치앙마이 최고의 가이드: 최고의 액티비티, 명소, 숨겨진 보석 https://www.agoda.com/ko-kr/travel-guides/thailand/chiang-mai/the-ultimate-guide-to-chiang-mai-top-activities-attractions-and-hidden-gems/
[5] 자연과 문화, 힐링- 태국 치앙마이 4박6일 - 두리함께 https://www.jejudoori.com/5c07dbd1-efb3-4cdb-8469-80ff10402233
[6] 8월초 4살 아이와 치앙마이 6박8일 총정리 (일정, 비용, 추천 투어, 날씨) https://blog.naver.com/yoplait_/223218738243?viewType=pc
[7] 태국 치앙마이 자유여행 코스 및 경비 4박6일 일정 공유 - 블로그 https://blog.naver.com/hgg0e824/223685697161?fromRss=true&trackingCode=rss
[8] 태국 치앙마이 여행 준비(5박 7일) : 일정, 경비, 2월 날씨 - 네이버블로그 https://blog.naver.com/oneulharoo_o/223434739382?fromRss=true&trackingCode=rss
@@@
마지막날 일정도 정리해주세요
제공된 검색 결과와 기존 정보를 바탕으로 치앙마이 7일차 일정을 정리해 드리겠습니다.
### [치앙마이 7일 여행 - 7일차 상세 일정](pplx://action/followup)
| **시간** | **장소/활동** | **이동 수단** | **소요 시간** | **예상 비용 (바트)** | **참고사항** | **대체 장소** | **비고 사항** |
| :--------------- | :--------------------------------------------------------------------------------------------------------------------- | :-------- | :-------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **[아침](pplx://action/followup)** | 호텔 조식 | | | 포함 | | | |
| **[오전 9시](pplx://action/followup)** | 왓 쑤언독 방문 | Grab | 15분 | 50~100 | 하얀 불탑과 황금 불탑이 조화로운 사원, 아침의 고요함 즐기기 | 왓 우몽 (Wat Umong) | 꽃밭 사원이라는 뜻, 14세기에 왕실 정원이었던 곳에 세워짐 |
| **[오전 11시](pplx://action/followup)** | 여유로운 브런치 | Grab | 15분 | 200-400 | 핑 강변 뷰를 감상할 수 있는 카페 또는 레스토랑 | The Good View Village, The River Market Restaurant | 핑 강변 따라 늘어선 다양한 분위기의 맛집 |
| **[낮 12시-2시](pplx://action/followup)** | 호텔 복귀 후 체크아웃 준비 및 짐 정리 | Grab | 15분 | - | | 마사지샵 예약 후 마지막 마사지 | 늦은 오후 비행기라면 마사지로 피로 풀기 |
| **[오후 2시](pplx://action/followup)** | 막판 쇼핑 (님만해민 또는 마야몰) | Grab | 15분 | 쇼핑 비용 별도 | 못다 한 쇼핑 즐기기, 기념품 구입 | 치앙마이 나이트 바자 (저녁에만 운영) | |
| **[오후 4시](pplx://action/followup)** | 치앙마이 국제공항으로 이동 | Grab | 15분 | 150-200 | | | |
**[참고사항](pplx://action/followup):**
* 공항으로 이동하는 시간은 항공편 출발 시간에 맞춰 조절하는 것이 좋습니다.
* 남은 바트는 공항에서 사용하거나 환전합니다.
* 치앙마이에 다시 방문할 날을 기약하며 즐거운 추억을 마무리합니다.
인용:
[1] 7일간의 치앙마이 일정: 란나 문화의 심장부 발견하기 https://www.agoda.com/ko-kr/travel-guides/thailand/chiang-mai/7-days-in-chiang-mai-itinerary-discovering-the-heart-of-lanna-culture/
[2] 태국 치앙마이 여행 코스 총정리 - 날씨, 관광지 추천, 여행 팁 https://www.tripstore.kr/blog/태국-치앙마이-여행-코스-총정리-관광지-추천
[3] 따라만 해도 성공하는 태국 치앙마이 여행 코스 일정 총정리(+🗺️구글 ... https://www.youtube.com/watch?v=zTr2Yb08XL8
[4] 치앙마이 관광명소 BEST 10 - Tripadvisor - 트립어드바이저 https://www.tripadvisor.co.kr/Attractions-g293917-Activities-Chiang_Mai.html
[5] 태국여행 치앙마이 일정표공유(6박7일), 구글맵 링크 공유 (feat. 사진 ... https://blog.naver.com/jh78jh78/223250593441?viewType=pc
[6] 취향저격 치앙마이 관광지 TOP10 - 브런치스토리 https://brunch.co.kr/@expediakr/33
[7] 태국 치앙마이 9월 6박 7일 여유로운 여행 일정_1 : 네이버 블로그 https://blog.naver.com/merci87/223512705789
[8] 치앙마이 인기 관광명소 - Trip.com https://kr.trip.com/toplist/tripbest/chiang-mai-best-things-to-do-111000000209/