임창정 - 나란 놈이란



그대를 잊는다는 건 지금의 나로선 좀 힘들 거 같아
아무리 원망을 해도 어느새 흐르는 눈물 나도 모르게

그리워 그 목소리 보고 싶어 일어설 수도 없어
시간은 잊으라 하는데 오히려 선명해진 얼굴

그 날은 그대 모습이 떠난다는 말을 하려던 것 같아
초라한 나의 어깨에 차마 말을 못 했었나 봐 그랬나 봐

그리워 그 목소리 가끔은 힘들던 잔소리마저
잔인한 이별이 있던 날 그 날조차 이젠 그리워

잘 지내라는 행복하라는 그 흔한 이별의 위로마저도 없이
마지막 인사도 못했던 우리의 이별 나를 떠난 그 이유마저

그대가 두고 떠난 그대 인생의 절반은 나란 말
이제는 잊어야 할텐데 오히려 선명해진 그 말
여전히 선명한 목소리


김범수 - 굳은살



아무 느낌 없대 내 멍든 가슴이
행복이 뭔지도 잊었대
좋은 것이 없대 내 흐린 두 눈이
온 세상이 빛을 잃었대
그립고 또 그리워 너무 쓰라려서
가슴에 굳은살이 앉은 건가 봐
제발 돌아와 줘 나를 안아줘
제발 돌아와 줘 너무 아프거든
가슴이 쉬도록 소리치는 말
너 혼자만 왜 나를 못 듣고 지나가는지
아무 때고 흘러 고장 난 눈물이
나와야 할 때를 모른대
아무 데도 못 가 길 잃은 걸음이
너와 걷던 길만 기억해
몇 번을 곱씹어도 짙어지는 향기
추억은 닳는 법도 없는 건가 봐
제발 돌아와 줘 나를 안아줘
제발 돌아와 줘 너무 아프거든
가슴이 쉬도록 소리치는 말
너 혼자만 왜 나를 못 듣고 지나가는지
사랑이 멈춘 다음은
이별이 아닌가봐
더 사랑할 차례였나 봐


김범수 - 보고 싶다


아무리 기다려도 난 못가
바보처럼 울고 있는 너의 곁에
상처만 주는 나를 왜 모르고
기다리니 떠나가란 말야

보고 싶다 보고 싶다
이런 내가 미워질만큼
울고 싶다 네게 무릎꿇고
모두 없던 일이 될 수 있다면

미칠듯 사랑했던 기억이
추억들이 너를 찾고 있지만
더 이상 사랑이란 변명에
너를 가둘수 없어

이러면 안되지만
죽을만큼 보고 싶다

보고 싶다 보고 싶다
이런 내가 미워질만큼
믿고 싶다 옳은 길이라고
너를 위해 떠나야만 한다고

미칠듯 사랑했던 기억이
추억들이 너를 찾고 있지만
더 이상 사랑이란 변명에
너를 가둘수 없어

이러면 안되지만
죽을만큼 보고 싶다
죽을만큼 잊고 싶다



M.C the MAX(엠씨더맥스) _ 노래모음


1. One Love

2. 태양은 가득히

3. 그대는 눈물겹다

4.12월

5. 잠시만 안녕

6. 사랑은 아프려고 하는 거죠

7. 사랑의 시

8. 사랑합니다 (Feat. 부활)

9. 마지막 내숨소리

10. 해바라기도 가끔 목이 아프죠


M.C the MAX(엠씨더맥스) _ 가슴아 그만해 Live



참 많이
사랑했다는 말이
내 가슴 끝에 걸려서
숨을 쉬면
한숨이 되고
눈을 감으면
눈물이 돼
머리가
내 가슴을 혼내고
바쁘게 나를 보채도
떠난 네가
살아날 때마다
덜컥 다시 겁이 나
하루가 힘들어져
가슴아 눈물아
한숨아 사랑아
왜 잊지 못하니
떨쳐버리고
쉬지 못하니
제발 내게 말해줘
거짓말이라도 좀 해줘
돌아온다고
나에게 돌아오고 있다고

더 많이
안아줘야 했는데
더 예뻐해야 했는데
못난 네가
생각날 때마다
시린 눈물이 흘러
멈출수가 없잖아
가슴아 눈물아
한숨아 사랑아
왜 잊지 못하니
떨쳐버리고
쉬지 못하니
제발 내게 말해줘
거짓말이라도
좀 해줘
돌아온다고
나에게
돌아오고 있다고
조금씩 무뎌지며
모두가 그렇듯 살겠죠
슬퍼서
죽지는 않겠죠
그 이름 그 얼굴
그 웃음 그 전부를
어떻게 잊겠니
수많은 너를
안고 사는데
그렇게 나 견딜게
그렇게 믿고 살아볼게
오늘 하루만 버티면
네가 돌아온다고
가슴아 다시
돌아올거야


M.C the MAX(엠씨더맥스) _ 모래시계 Live



부서져버린 모래알처럼
사랑은 점점 사라지고
내 아픈 후회로 점점 채워져 가네

시간이 흐르고 흘러도 무겁기만한
우리 추억 그 어디에도 그대는 살아 숨쉬고 있는데

내 가슴의 모래시계 사이로 
떨어져만 가는 모래알처럼 넌 사라져(사라져)
높은 담처럼 이별은 내 앞에 쌓여가

비워져가는 야윈 내 맘에 
초라한 그대 향기라도
채울 수 있다면 간직할 수 있다면

내 가슴의 모래시계 사이로
떨어져만 가는 모래알처럼 넌 사라져(사라져)
높은 담처럼 이별은 내 앞에 쌓여가

사랑한 만큼 후회하고 사랑한 만큼만 그댈 추억하게 된대도
바닥난 내 사랑에 또 아픔이 내려서 헤어 나올 수 없어
되돌리려 되돌리려해 봐도
떨어져만 가는 모래알처럼 넌 사라져
높은 담처럼 이별은 내 앞에서 쌓여가



M.C the MAX(엠씨더맥스) _ 행복하지 말아요 Live


왜 이리도 이 세상은 이별이 많은지 
왜 사랑은 힘든건지 난 궁금했었죠 
난 이제또다시 묻고있죠 
어떻게 견디는지 
이 많은 슬픔 끝나긴 하는지 

괜찮아요 다 그렇듯 이러다 말겠죠 
이 가슴도 이 눈물도 다 가라앉겠죠 
더 안을수록 부서져버릴
우리를 알고 있죠 
보내는일이 사랑이라는걸 

사랑해 사랑해 말해줄 시간이
아직도 많을줄 알았죠 
언젠가 누군가 그대를 가져갈 
그 사람 벌써부터 난 부러워지네요 

행복하지마요 행복하려면 
사랑한 날 잊어야 하잖아
가시가 박힌듯 숨쉴 때 마다 
눈물이 흘러와 
사는게 사는것이 아니죠
사랑하지 마요 내가 아니면 
누구와도 영원할 수 없어 
그대를 그 곳에 두고온곳 
그곳만 기억하면 
찾을 수 있죠 잠시 멈춰있는 
사랑인거죠 괜찮아요
웃어요

하루에도 나 몇번씩 마음이 바뀌죠 
또 버리고 주워담고 오늘도 그래요 
꼭 좋은사람 만날거라고 
말하는 나였지만 
나의 가슴은 그댈 잡고 있죠

사랑해.., 사랑해, 나에게 말해 줄 
그대의 목소릴 이제 들을 수 없겠죠 
조금만 잠시만 머물다 올것을 
그대의 곁에있는 그 사람도 아나요 

행복하지 마요 행복하려면 
사랑한 날 잊어야 하잖아
가시가 박힌듯 숨쉴 때 마다 
눈물이 흘러와 사는게
사는것이 아니죠
사랑하지 마요
내가 아니면, 누구와도
영원할 수 없어 
그대를 그 곳에 두고 온곳
그곳만 기억하면 
찾을 수 있죠 
잠시 멈춰있는 사랑인거죠 
괜찮아요 웃어요

사랑하지 마요, 내가 아니면
누구와도 영원할 수 없어
그대를 그곳에 두고 온곳
그곳만 기억하면 찾을 수 있죠 
잠시 멈춰있는 사랑인거죠
괜찮아요 웃어요
이 눈물도, 이 아픔도, 괜찮죠


WONDER LIVE: M.C THE MAX(엠씨더맥스)_Wind that blows(그대가 분다) & 3 other songs(외 3곡)



WONDER LIVE: M.C THE MAX(엠씨더맥스)


1. Wind that blows(그대가 분다)

옅은 바람 냄새에 두 눈을 감아본다

낡은 가슴 여전한 떨림, 그대가 그대가 온다

어렴풋이 피어오르는 그 옛날의 기억이

두 눈에 소리 없이 흘러 이 가슴을 울려온다                                 


내 맘속에 그대가 분다

그 시절 그 때처럼 웃으며 나에게 불어와

소리 없이 그대가 분다

내 가슴 한 가운데 보고 싶은 그대가 분다


앙상해진 너의 계절에 가슴이 시려와도

돌아보면 어제 같은 날들 그 시절은 영원하다


내 맘속에 그대가 분다

그 시절 그 때처럼 웃으며 나에게 불어와

소리 없이 그대가 분다

내 가슴 한 가운데 보고 싶은 그대가 분다


정말 사랑했구나.. 그댈

매일 돌아보면 사는 나                                                     

어디선가 그대가 운다

안아 주고 싶지만 자꾸만 멀어지잖아

온 맘 다해 그댈 부른다 

이 세상 한 가운데 눈물로 그댈 불러본다

하루 종일 그대가 분다


2. We, In the past(그때 우리)


어디서부터 얘기를 시작할지

제대로 보여 준 것도 하나 없이 그때 널 보냈구나


가끔 네 생각을 하면 지친 내 삶이 모두 다 지워질 만큼

눈을 감아도 보일 만큼 네가 보고 싶다


가끔 네 생각을 하면 지친 내 삶이 모두 다 지워질 만큼

눈을 감아도 보일 만큼 네가 보고 싶다


사랑한다고 말하면 또다시 돌아올 줄 알고

그댈 지킬 수 없었던 아무것도 해줄 수 없었던 나여서


이젠 돌이킬 수도 없이 그때 우리 우리


3.Poem of Love(사랑의 시)


한참을 앓고 있죠 

사랑한단 뜻이예요 

이 사랑을 깨닳은 순간이 

제 인생에 제일 힘든 날이였죠. 


피할수 없어 부딪힌 거라고 

비킬수도 없어 받아들인 거라고 

하지만 없죠 절 인정할 사람 

세상은 제 맘 미친장난으로만 보겠죠. 


바람이 차네요 

제 얘기를 듣나요 

저같은 사랑 해봤던 사람 혹 있다면은 

절 이해 할테죠. 


단념은 더욱 집착을 만들고 

단념은 더욱 나를 아프게하고 

어떻게 하죠 너무 늦었는데 

세상과 저는 다른 사랑을 하고 있네요. 


피할수 없어 부딪힌거라고 

비킬수도 없어 받아들인 거라고

하지만 없죠 절 인정할 사람 

세상은 제 맘 미친장난으로만 보겠죠. 


담배도 없네요 

달도 쓸쓸하네요 

저 같은 사랑 시작한 사람 혹 있다면은 

도망쳐요...


4.On my way home(퇴근길)


천근 같은 달을 짊어진 채 터벅터벅 걷다

좁은 방안에 나만 기다렸을 그대가 걸려서

그대 좋아하는 귤을 사 들고 돌아가는 중


울컥해져요 그대 생각만 하면

울컥해져요 참 다행인 걸요

그저 그런 내 삶에 그대란 사람 있단 게

정말이지 나 고마워 그대여


남들처럼 사치 한 번 못한 못난 나를 만나

고생만 했던 아는 그림자가 저 멀리 보여서

그대가 고른 넥타이를 고치고 문 여는 중


울컥해져요 그대 생각만 하면

울컥해져요 참 다행인 걸요

그저 그런 내 삶에 그대란 사람 있단 게

정말이지 나 고마워 나의 그대여


고마워요 고마워요 내가 잘 할게요


나 떨려요 

이제 이 문을 열면 그대 웃고 있네요 

나 왜 우냐고 묻지 말아요

그냥 난 행복해서 그냥 다 고마워서

너무 사랑해서 그대여

네이티브 앱, 웹 앱, 하이브리드 앱 그리고 PhoneGap

모바일 개발자라면 어느 정도 알고 있는 개발 접근 방법일 것입니다.

 

각 방법의 장단점에 대해 간단히 정리 해 보겠습니다.

 

네이티브 앱


ios 나  android 같은 특정 플랫폼에서 작동하는 앱입니다.

 

네이티브 앱의 장점으로는 특정플랫폼이 탑재되어 있는 디바이스의 모든 기능을 활용이 가능하고 대부분의 UI 요소가 제공되어 뛰어난 성능을 나타낸다는 점입니다.

단점으로는 특정 플랫폼에서만 동작을 하기 때문에 크로스 플랫폼  디바이스 문제가 발생할 경우가 있고 여러 플랫폼에서 개발을 해야  경우 플랫폼 각각의 개발을 하므로 개발비용이 많이들어가는 점입니다.

 

웹 앱

 

웹앱 또는 모바일 앱이라고 불리며 브라우저를 통해 동작하는 앱입니다.

웹앱의 장점으로는 대부분 모든 브라우저에서   있으므로 다양한 플랫폼의 동시 지원이 가능하고 서버 기반 앱으로 빠른 업데이트가 가능합니다

단점으로는 디바이스에 접근이 제한적이고 속도가 느리다는 점입니다.

 

하이브리드 앱

 

하이브리드 앱의 경우 모바일 앱과 웹앱의 장점을 포함하고 있다는 것입니다.

네이티브 앱과 동일한 환경에서 브라우저를 통해 실행 되는 앱입니다.

하이브리드 앱의 장점은 네이티브의 단점으로 언급되었던 크로스 플랫폼 문제와 웹앱에서 언급되었던 디바이스 사용문제를 해결이 가능합니다.

 

현재의 추세는 하이브리드앱입니다네이티브앱의 장점과 웹앱의 장점을 적절히 이용할  있고 모바일에서 크로스 플랫폼이나 매쉬업에 대응   있는 대안이라고   있습니다.

 

여기서 하이브리드 앱을 개발하기 위해 나온 스마트폰 크로스 플랫폼이 PhoneGap입니다. 이외에도 Appspresso, Titanium Mobile등이 있습니다.

 

다음 글에서는 그중 가장 많이 사용되는 PhoneGap 환경 구축에 대해 정리하겠습니다.

자바스크립트DOM - 노드 다루기

문서에서 특정 태그 이름을 지닌 노드 찾기

- Document 객체의 getElementsByTagName()을 이용하면 전체 문서에서 매개변수 값의 엘리먼트를 찾을 수 

  있습니다.

var divs = window.document.getElementsByTagName("div");

alert("문서내의 div 엘리먼트 개수 : " + divs.length);


for (var i = 0; i < divs.length; i++) {

var div = divs.item(i);

div.style.border = "1px solid #ff0000";

}


특정노드의 자식노드에서 특정태그 이름을 지닌 노드 찾기  

- 문서 전체가 아닌 특정 노드의 자식 가운데 특정 태그 이름을 가진 엘리먼트를 찾고 싶은 경우 Document 객체의 

  메서드인 getElementsByTagName() 대신 Element 객체의 메서드인 getElementsByTagName()을 사용합니다.

var divs = window.document.getElementsByTagName("div");

var div2 = divs[2];

var div2Child = div2.getElementsByTagName("div");


for (var i = 0; i < div2Child.length; i++) {

div2Child[i].style.border = "4px solid #ff0000";

}


문서에서 특정클래스가 적용된 노드 찾기

- 태그 이름이 아닌 클래스 이름을 알고 있거나 이 클래스가 적용된 엘리먼트를 문서 전체에서 찾고 싶을 때 

   Document 객체의  getElementsByClassName

var contentData = window.document.getElementsByClassName("content_data");

for(var i = 0; i < contentData.length; i++) {

contentData[i].style.border = "4px solid #ff0000";

}


문서에서 특정 ID를 지닌 노드 찾기

- Document 객체에는 문서 전체에서 아이디(id) 값으로  특정 엘리먼트를 찾는 getElementById() 메서드를 

   제공합니다.

var header = window.document.getElementById("header");

header.style.border ="4px solid #ff0000";


자식 노드 찾기

- 자식 노드를 모두 구하고 싶을 때

- 특정 엘리먼트의 하위 노드인 자식 노드에 접근하고 싶을 때는 Node 객체의 프로퍼티인 childNodes를 

   사용하면 됩니다.

- 자식노드중 N번쨰 노드에 접근하고 싶을 때

- 하위 노드 가운데 N번째 요소에 접근하고 싶을 때는 var node = page.childNodes[N] 또는 

   node = page.childNodes.item(N) 과 같은 식으로 하면 됩니다.

- 첫번쨰 자식 노드에 바로 접근

- Node에는 firstChild 라는 프로퍼티가 있어서 이를 이용하면 자식 노드중 첫번째 자식 노드에 바로 접근할 수 있

  습니다.

-마지막 자식 노드에 바로 접근하고 싶을 때

- 마지막 자식 노드에도 lastChild 라는 프로퍼티가 있어서 이를 이용하면 바로 마지막 노드에 접근 할 수 있

   습니다.

var page = window.document.getElementById("sample_page");

var nodes = page.childNodes;

alert("#sample_page의 자식 노드 개수는? " + nodes.length);

for (var i = 0; i < nodes.length; i++) {

var node = nodes.item(i);

if (node.nodeType == 1)

node.style.border = "1px solid #ff0000";

}

var firstChild = page.firstChild;

firstChild.style.color = "#ff0000";

var lastChild = page.lastChild;

lastChild.stlye.color = "#ff0000";


부모 노드 찾기

- 특정 엘리먼트의 부모노드에 접근하고 싶을 때는 Node  객체의 기본 프로퍼티인 parentNode를 사용합니다.

var header = document.getElementById("header");

header.parentNode.style.border = "4px solid #ff0000";


형제 노드 찾기

- DOM에서는 이런 형제노드를 쉽게 찾을 수 있게 몇가지 유용한 프로퍼티를 제공합니다.

- Node 객체의 프로퍼티인 previousSibling와 nextSibling을  이용하면 앞뒤로 인접한 형제노드에 각각 접근

  할 수 있습니다.

var content = document.getElementById("content");

content.previousSibling.previousSibling.style.border = "4px solid #ff0000";

content.nextSibling.nextSibling.style.border = "4px solid #ff0000";


노드 생성 및 추가하기

- 노드를 생성하고 추가하는 방법은 세가지가 있습니다.

- Document.createElement() 메서드 사용

- HTMLElement.innerHTML 프로퍼티 사용

- Node.cloneNode() 메서드 사용

- 위 세가지 방법을 경우에 따라 적절하게 독립적으로 또는 서로 조합해서 사용하면 됩니다.

Document.createElement() 메서드를 사용하는 경우

- 첫번째 영역에 추가하기

1. 새로 생성할 노드를 추가할 위치의 기준이 되는 엘리먼트의 첫번째 자식노드를 찾습니다.

2. createElement() 메서드를 이용해 새로운 노드를 생성합니다.

3. 새롭게 생성한 텍스트를 추가하기 위해 createTextNode() 메서드를 이용해 텍스트 노드를  생성합니다.

4. 생성한 텍스트노드를 2번에서 생성한 자식 노드로 appendChild() 메서드를 이용해 추가합니다.

5. 끝으로 page.insertBefore(추가노드, 기준노드) 함수를 이용해 #sample_page 노드의 형제노드로 

    새로 생성된 노드를 추가합니다.

- 두번쨰 영역에 추가하기

첫번째와 같은 순서로 진행됩니다. 다만 새로 생성되는 노드가 많을 경우 자식노드를 모두 만들어 준 후 새로

생성되는 노드에 추가하는 구문이 들어갑니다.

- 세번째 영역에 추가하기

첫번째와 같은 순서로 진행됩니다. 새로 생성된 노드의 위치가 #sample_page 노드의 자식 노드로 추가되고

이를 위해 insertBefore() 메서드 대신 appendChild() 메서드를 사용합니다.

HTMLElement.innerHTML 프로퍼티를 사용하는 경우

- Element의 내부에 들어있는 모든 자식을 문자열로 담은 프로퍼티입니다.

innerHTML 프로퍼티 기능을 사용하면 새로 추가할 노드를 DOM 메서드를 이용해 일일이 생성하지 않고 문자

  열을 만들어 대입해주기만 하면 됩니다.

Node.cloneNode() 메서드를 사용하는 경우

- 생성하고 싶은 내용이 이미 생성되 있는 요소와 똑같거나 다소 비슷하다면 Node객체에서 제공하는 

   cloneNode() 메서드를 이용해 똑같은 노드를 복사해서 생성할 수 있습니다.


노드 삭제 하기

- 지우려는 노드를 찾은 다음 Node 객체의 메서드인 removeChild()를 호출하여 사용합니다.


노드 이동시키기

- 이미 생성된 노드를 특정 위치로 이동 시키려면 노드 생성 및 추가시 사용한 appendChild()insertBefore()를 

   그대로 사용하면 됩니다.(이미 존재하는 경우 기존의 위치에서 삭제한 후 추가 )


텍스트 노드 생성 및 추가하기 

- 텍스트 노드는 일반 엘리먼트 노드와 성격이 달라서 생성하는 방법이 조금 다릅니다.

- 택스트 노드를 생성하려면 생성하는 기능인 팩토리 메서드로 가득찬 Document 객체의 createTextNode() 메서드

   드를 이용하면 됩니다.


텍스트 노드 내용 변경하기 

- 바꾸려는 텍스트 노드를 찾아 Node 객체의 프로퍼티인 nodeValue에 원하는 값을 대입하면 변경할 수 있습니다.



출처 : jQuery를 이용한 인터렉티브 웹콘텐츠 제작

'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글

자바스크립트 DOM  (0) 2014.01.22
JSTL의 코어라이브러리 - 2  (0) 2014.01.22
JSTL의 코어라이브러리 - 1  (0) 2014.01.22