2025 영탁 콘서트 티켓팅 일정 총정리, 서울·대구·인천 예매 꿀팁까지
2025 영탁 콘서트 TAK SHOW4, 서울·대구·인천 티켓 예매 일정과 좌석 가격, 할인 혜택까지 정리해드립니다.팬들의 심장을 뛰게 하는 영탁 콘서트 티켓팅, 드디어 일정이 공개되었습니다.2025년 여름, 전국을 누비는 TAK SHOW4 투어는 영탁의 음악 인생을 집대성한 무대로, 서울을 시작으로 대전, 대구, 인천까지 이어집니다.본 글에서는 예매 방법, 좌석 가격, 할인 혜택까지 완벽 정리해드립니다.영탁 콘서트 TAK SHOW4, 어떤 공연인가요?콘서트 콘셉트와 셋리스트 구성2025년 영탁 콘서트 ‘TAK SHOW4’는 “세상에서 가장 유쾌하고 감동적인 시상식”을 테마로 구성됩니다.콘서트는 약 120분간 쉬지 않고 진행되며, 트로트와 발라드, EDM까지 다채로운 장르가 조화를 이룹니다.팬을 위한 특..
2025. 6. 24.
브니엘고자살 사건의 본질, 우리가 외면한 교육 시스템의 경고
브니엘예술고 3명 여고생의 극단적 선택. 학업 스트레스와 교사 갈등, 사학 운영 문제까지 이 비극의 구조를 정리했습니다.2025년 6월, 부산에서 발생한 ‘브니엘고자살’ 사건은 단순한 학생 개인의 극단적 선택이 아닌, 우리 교육 시스템의 깊은 병폐를 고스란히 보여주는 사회적 참사였습니다.학업 스트레스, 진로 불안, 학교 내 갈등, 교사와의 불화, 사학 재단의 권한 남용 등 복합적인 문제가 얽힌 이 사건은 대한민국 교육 현장의 구조적 문제를 여실히 드러냅니다. 지금 이 글을 통해, 우리가 외면했던 본질과 향후 나아갈 방향을 함께 고민해보시길 바랍니다.1. 사건 개요 – 단순한 비극이 아닌 구조의 붕괴새벽의 참사, 유서에 남겨진 외침2025년 6월 21일 새벽, 부산 해운대구 한 아파트 화단에서 브니엘예술고..
2025. 6. 24.
오구치 아즈키 니시코리 불륜 진실? 모델 경력부터 사건 전말까지
이번 포스팅에서 니시코리 게이와 모델 오구치 아즈키의 불륜 스캔들 전말과 오구치의 프로필, 사건 경과를 정리합니다.2025년 6월, 일본 테니스계를 강타한 뉴스가 있었습니다.주인공은 세계적인 테니스 스타 니시코리 게이, 그리고 유명 모델 오구치 아즈키입니다.두 사람의 이름이 '불륜'이라는 단어와 함께 검색어 상위권에 올랐습니다. 도대체 무슨 일이 있었던 걸까요?오구치 아즈키는 누구인가요?도쿄 중심에서 활동한 유명 모델오구치 아즈키는 도쿄 코마자와대학교 문학부 영미문학과 출신으로, 모델로는 비교적 이른 시기인 대학 시절부터 활동을 시작했습니다.그녀는 일본의 유명 패션 잡지 GINGER, ar, InRed 등에서 활동했고, 광고 모델로도 활발하게 활동하며 토요타, 미쓰이 아울렛, 맥도날드, 유니클로 등 대형..
2025. 6. 22.
setTimeout(function () {
const dragSensitivity = 0.55; // 드래그 민감도
const clickTolerance = 0; // 클릭 간주 기준 (px), 0: 클릭 시 이동 안함. 클릭 시 이동하려면 1~3값 설정 고려.
const dragRatioThreshold = 0.55; // 배너 너비 대비 드래그 비율, 배너 드래그 후 드롭 시.
const newWindow = 1; // 1: 새 창, 0: 현재 창
const bannerConfigs = [
{
selector: '.sliding-banner-300',
width: 300,
height: 300,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-150',
width: 320,
height: 150,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/640x300-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-32Ox15O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-250',
width: 300,
height: 250,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back2.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-left.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
dragDirection: 'left'
},
{
selector: '.sliding-banner-280',
width: 336,
height: 280,
id: '940041',
trackingCode: 'AF2787934', // 본인의 추적 코드로 대체
subId: '',
tsource: '',
background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back3.jpg',
cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/WOW-30Ox25O-cover-right.png',
arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrow-right.png',
dragDirection: 'right'
}
];
const coupangLink = 'https://link.coupang.com/a/c2PToW'; // 본인의 간편 링크로 대체 📍
function openLink(link) {
if (newWindow) {
window.open(link, '_blank');
} else {
history.replaceState(null, null, window.location.href);
window.location.href = link;
}
}
function generateIframeURL(config) {
return `https://ads-partners.coupang.com/widgets.html?id=${config.id}&template=carousel&trackingCode=${config.trackingCode}&subId=${encodeURIComponent(config.subId || '')}&width=${config.width}&height=${config.height}&tsource=${encodeURIComponent(config.tsource || '')}`;
}
function createBanner(config) {
const iframeURL = generateIframeURL(config);
const wrapper = document.createElement('div');
wrapper.innerHTML = `
당겨주세요!
`;
return wrapper;
}
// trigger event update
function setupDragEvents(dragTarget, animatedBanner, threshold, link, direction) {
let startX = 0, diffX = 0, triggered = false, isDragging = false;
function getClientX(e) {
return e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
}
function triggerOnce() {
if (triggered) return;
triggered = true;
animatedBanner.style.transform = 'translateX(0)';
animatedBanner.classList.add('active');
openLink(link);
}
function startDrag(e) {
if (e.type.startsWith('mouse') && e.button !== 0) return;
isDragging = true;
startX = getClientX(e);
diffX = 0;
triggered = false;
animatedBanner.classList.remove('active');
e.preventDefault();
}
function onDrag(e) {
if (!isDragging) return;
const currentX = getClientX(e);
diffX = currentX - startX;
if ((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0)) {
animatedBanner.style.transform = `translateX(${diffX}px)`;
if (Math.abs(diffX) > threshold) {
triggerOnce();
}
e.preventDefault();
}
}
function endDrag() {
if (!isDragging) return;
isDragging = false;
const dragRatio = Math.abs(diffX) / dragTarget.offsetWidth;
if (Math.abs(diffX) < clickTolerance || (
dragRatio >= dragRatioThreshold &&
((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0))
)) {
triggerOnce();
} else {
animatedBanner.style.transform = 'translateX(0)';
animatedBanner.classList.add('active');
}
diffX = 0;
}
dragTarget.addEventListener('mousedown', startDrag);
dragTarget.addEventListener('mousemove', onDrag);
dragTarget.addEventListener('mouseup', endDrag);
dragTarget.addEventListener('mouseleave', endDrag);
dragTarget.addEventListener('touchstart', startDrag, { passive: false });
dragTarget.addEventListener('touchmove', onDrag, { passive: false });
dragTarget.addEventListener('touchend', endDrag);
}
// end
bannerConfigs.forEach(config => {
const targets = document.querySelectorAll(config.selector);
if (targets.length === 0) return;
targets.forEach(target => {
target.innerHTML = '';
const banner = createBanner(config);
target.appendChild(banner);
const customBox = banner.querySelector('.customBox');
const animatedBanner = banner.querySelector('.customBanner');
const threshold = config.width * dragSensitivity;
setupDragEvents(customBox, animatedBanner, threshold, coupangLink, config.dragDirection);
});
});
}, 100);