사용자 삽입 이미지

삶은 자신의 몫에 해당하는 고난과 짊을 지고 떠나는 머나먼 산행과 같다.
이 산행에서 자신이 지고 떠나는 짊을 챙기는 사람도 자신의 삶을 살아가는 이도 스스로 일뿐이다. 그 누구도 타인에 의해서 자신의 삶이 도전 받지 않는다.

행복하고 싶다면 자신의 삶에 충실해라. 자신의 액면을 제대로 알아야 한다.
많은 여성들은 스스로에 대해 지나친 환상과 과다한 평가로 직업이든 연애든 심지어 결혼마저도 언바란스한 사고를 지닌 경우가 많다.

결혼은 영혼과 영혼 그리고 만남과 만남의 결합이다.
그러나 그 누구도 손해보지 않는 성향이 보편화되면서 이제 결혼도 하나의 거래가 되어가고 있는 것이 현실이고 더 나아가 당연한 것으로 정착되어가고 있다.  개인의 모든 것이 하나의 도표나 점수화 되어 그것이 배우자나 만남을 선택하는 기준이 되어가고 있다.(결혼정보회사의 경우는 물론이고......)

가끔 그 기준을 뛰어넘는 만남을 기대하면 클럽이나 소개팅에 몰두하기도 하지만, 역시 상대도 같은 심정으로 그 만남을 즐기는 착각남녀의 착각만남일 뿐이다.  그 만큼 현실은 냉혹하다.

그렇다면 대다수 미혼여성들의 착각은 무엇일까?

1.신데렐라 신드롬
 재투성이 아가씨가 백마탄 왕자를 만날 가능성은 거의 없다.
 다만, 스스로 백마탄 공주님이라면 모를까.....
 요즈음의 만남은 거래와 조건이 선행된 만남이다.
 상대에 걸맞는 조건을 갖추는 것이 보다 쉬운 방법일 것이다.

2.나는 나름 괜찮다.
 스스로 자신은 경쟁력이 있다고 생각하는 여자들이 있다.
 그러나 경쟁력은 사회와 상대가 결정해주는 것이지, 자신이 스스로 결정하는
 것이 아니다. 대체로 경쟁력이 있는 여성일수록 부족함을 느끼고 경쟁력이
 없는 여성일수록 자뻑이 많다.

3.남자들의 눈길을 자신이 도출할 수 있다.
 자신은 항상 인기가 있고 다양한 남성들로 부터 시선을 모으고 있다.
 그러나 중요한 것은 양이 아니고 질이다.
 많은 찌질남들로 부터 인기를 끄는 것보다 확실한 한명의 시선이 필요하다.
 중요한 것은 양이 아니다. 질이다. 결혼은 한명과만 가능하기 때문이다.

4.외모가 나는 좀 된다.
 의외로 여성들중에 외모에 관한 자뻑족이 많이 있다.
 남자의 키가 작은 것은 용서가 안된다고 하면서 스스로의 신장에 대해서는
 다소 둔감한 이들도 많이 있다. 작고 아담하다고 하면서......
 그러나 명심해라. 하루 즐기는 사이가 아니라면 결혼은 인성과 외모, 경제적인 가능성과 학력들이 조화를 이룬 관계에서 설정되는 것이 현실이다.

5.현재의 나를 있는 그대로 받아들이고 사랑해 줄 남자는 있다.
 그러나 명심해라. 현실적으로 망가진 남자, 경쟁력 없는 남자, 경제력 없는
 남자, 학력없는 남자를 현실적으로 운명이라는 이름으로 받아들일 자신이
 없다면 당신은 지나친 욕심쟁이에다 이기적인 존재다.
 
당신의 삶에 대해서 진지하고 솔찍해져야 한다.
결혼을 혼테크로 생각하는 썩은 정신을 버려라.
자신은 조건을 따지면서 상대는 당신의 심성과 마음만을 보는 존재를 만나려고 한다는 사실자체가 황당한 일이다.

조건을 원한다면 당신 또한 조건을 만들면 된다.
결혼을 전제로 한 만남은 사실 조건의 만남인 것이 현실이다.
현실을 도피하지마라.

스스로 경쟁력을 키우는 것이 당신의 삶의 주인공이 되는 것이다.
노력하는 여성, 자신의 일에 진지하게 몰두하는 여성, 대화의 질과 폭이 넓은 여성, 자신을 업시키려고 항상 새로움을 추구하는 여성이 매력적인 여성이고 경쟁력이 있는 여성이다. 세상에 공짜는 없다,  결혼도 마찬가지도.

당신이 결혼을 거래로 생각한다면 거래의 조건을 갖추어라.
조건을 기반으로 해서 사랑을 꿈꿔라.
질이 다른 결혼 상대를 원한다면 질이 다른 조건을 갖추면 된다.
세상은 의외로 좁다.
당신의 과거가 당신의 삶을 억압할 수 있다.
과거의 다른 이름은 흔적이고 경력이다.
숨기고 싶은 과거는 폭탄과 같다.

지금 이 순간이 내일에는 과거이고 경력이다.
그리고 과거의 삶이 당신의 현재와 미래를 결정한다.
신중하게 생각하고 행동하고 노력하는 것이 삶의 질을 결정하고 결혼의 질을 결정한다.  자신보다 못한 친구가 잘사는 것에 욕심내지 마라. 아직 시작일 뿐이다. 결혼 생활은 후반부에 그 가치가 결정된다.
자신보다 뛰어나다고 생각되었던 친구의 불행에 고소해하지마라.
역시 결혼의 끝은 아무도 모른다. 그 친구에게 행복한 인생후반부의 결혼생활이 있을 수 있다.
행복하고 싶다면 행복을 갈망하고 생각하는 것만으로는 안된다. 행복을 위해 한걸음 나아가라.

행복은 노력하고 행동하는 자의 것이다.
결혼 행복도 마찬가지다. 삶은 아는 만큼 보인다.
결혼도 마찬가지다.

아버지의 외도때문에 마음 아파하는 남자에게 연민을 느껴 결혼한 여자는
그의 불쌍한 어머니와 똑 같은 처지가 된다.
재산이 많고 통이 큰 남자가 멋지기도 하고 힘든 신혼생활을 생략하고 싶어서 결혼한 여자는 재산이 이렇게나 빨리 없어질 수도 있구나 하는 생각에 놀라자빠질 것이다. 화려한 외모와 배려에 이끌려 결혼한 여자는 남자의 여자들에게 눌려서 하루하루 비참한 생활을 하게 될 것이다.
사용자 삽입 이미지

전~ 넘들보다 한주 늦게 8월 9일부터 12일까지 4일간 휴가네요... ㅎㅎ
휴가일까지 이제 대략 6일정도가 남았는데...

이미 휴가 다녀 오신 분들이나... 이제 휴가를 가시려는 분들...
목적지는 정하고 가시는가요...?

어떻게 해야 할 지를 모르겠네용...ㅜ,.ㅠ
너무 오랜만에 긴~ 휴가다보니... 계획을 세워야 하겠구나 싶었는데...
막상... 휴가가 몇일 앞으로 오니... 뭘 해야 할지... ㅎㅎ

일단 고향으로 내려갔다가...
이참에... 사진이나 원~ 없이 찍으러 다녀볼까 생각중입니다만...
이것도 생각 뿐...ㅡ,.ㅜ 막상 고향으로 가면...

움직이기 싫어진다는거... ㅋㅋ
그리고 고향집 5분거리에 강과 계곡, 바다가 있어서...
맨날 보던 곳이라... 휴가 온기분도 안나고....ㅎㅎ

그렇다고 휴가랍시고 고향집 내려가서 부모님께 빌붙어 있는 것도 죄송하기도 하고...
아~~~

올해 휴가도 무계획으로 허무하게 날리게 생겼네용,...+_+

남자와 여자는 서로가 끊임없이 상대방에게 자신을 이해해줄 것을 요구한다.

내 마음은 이렇다.
내 생각은 이렇다.
내 감정은 이렇다.
내가 하고 싶은건 이렇다.
내가 하기 싫은건 이렇다.
.
.
.

하지만 상대방의 태도는 우리의 예상을 벗어난다.

그로 인해 우린 상대방에게 실망하고, 화를 내고 서로의 감정에 무게추를 늘린다.

"이젠 날 사랑하지 않나봐."
"이제 완전 질리네."

싸우면서 계속 지쳐가고 뭔가 돌파구를 구하기 위해

남자는 자신만의 생활에 몰입하게 되고
여자는 주변 사람들과의 소통을 통해 문제를 해결하려고 한다.

여기서 문제가 되는 건 여자의 소통이다.

여자의 소통은 대체로 한정적인 선이 존재하는데 대부분 동성간에 소통이 주를 이루게 된다.

남자를 이해못하는 여자들이 모여서 어떤 결론이 나올수 있을까?

남자의 뒷다마로 시작해 결국엔 헤어짐을 강요하게 된다.

어느정도 연애 경험이 있는 여자들은 동성에겐 감정을 풀기 위해 이야기를 하고

중요한 포인트는 이성(친한 오빠나 친구)에게 물어보게 된다.

어쩌면 가장 좋은 방법이다. 남자를 아는 건 남자이기 때문이다. 다만...

한가지 중요한 변수가 존재한다. 상담을 받아주는 이성이 여자에게 사적인 호감이 없어야 한다는 점이다.

그래도 동성보단 훨씬 남자의 본질에 근접한 답변을 얻을 수 있을 것이다.

여자 스스로는 받아들이기 힘든 말도 많이 듣게 된다.

남자의 성욕, 섹스에 관한 자유로운 마인드, 여성에 관한 무의식적인 공격 성향.

남자들은 이 점을 본능적으로 알고 있기에 남자 친구의 속마음을 말해주게 된다.

하지만 남자와 다른 메커니즘을 가진 여자들은 순진한(?) 남자 친구를 너무 나쁘게

몰아간다고 오히려 상담자에게 불신이 생기게 된다.

남자에게 섹스란 여자에 비유한다면 쇼핑을 통해 옷 한벌을 사는 거랑 마찬가지다.

어떤 죄의식도 있을 수 없다. 후회정도는 있을 수 있다.(구매 후에 안 예뻐 보이는 옷처럼...)

남자와 여자는 분명히 다른 종족이다.

서로를 이해하려고 노력하기 보단. 상대를 있는 그대로 받아들이자.

자꾸 상대방을 이해하려고 들면 자신도 이해해줄 것을 상대방에게 강요하게 된다.

그건 싸움의 씨앗이 될뿐이다. 사랑만 하기에도 우리의 젊음은 너무 짧지 않은가?

소모적인 감정 싸움은 너무나 아까운 시간들이 될 것이다.
.
.
.
더이상 연애를 하지 못하는 나이가 될때면...



출처 : http://www.blue2sky.com/97

사랑의 상처로 인해...

1주일간 밥을 먹지도, 잠을 자지도 못한채, 아무것도 할 수 없었던 적이 있었다.

그로 인해 몸은 조금씩 죽어갔고 주변 몇몇 사람들과 의 인간적 유대만이

내가 하는 유기체로서의 유일한 행위였다.

다른 사람들의 조언도... 격려도... 눈물도...

내겐 어둠속에서 잠깐 불타는 성냥개비에 불과했다.

그러던 어느날 TV를 통해 나이키 CF를 보게 되었다.

30초의 짧은 영상이었지만 그 광고는 내게 많은 질문을 던졌다.

"진정한 사랑이 뭐라고 생각하니?"

그 질문에 대한 해답은 너무나 당연했다.

그건 바로 내 자신을 사랑하는 거다.

자기자신을 사랑하지도 못하면서 타인을 사랑한다고 죽네 사네 하는건 정말 웃기는 소리일 뿐이다.

타인만 있고 자신이 없는 사랑은 결국 기둥이 없는 집처럼... 무너지게 되며

스스로를 지붕에 깔리게 만들 뿐이다.

누군가를 사귀는데 웃을 수 없다면 당신은 사랑을 하고 있는게 아니다.

당신은 외로움을 이기지 못해 집착에 빠져있을 뿐이다.

상대를 사랑하기에 앞서 나를 사랑하는 법을 배워라.

타인의 무관심, 이기심에 상처 받는 걸 평생 반복할 생각인가?


출처 : http://www.blue2sky.com/28

후덥지근한 여름이 절정으로 시작될 무렵 지겨운 도시를 떠나 봤어용...

목적지는 선덕여왕의 촬영지인 '비둘기낭폭포'가 있는 비둘기낭마을로 고고씽~

사용자 삽입 이미지

비둘기낭폭포를 보기위해 가던중...
지금의 37번 국도가 없던 시절 사용했다던 창옥굴이 숨어길는 옛길을 찾아 가봣어요~
전날 지가 와서그런지...
동굴 입구와 안쪽엔... 물방울이 떨어지고... 바닥은 흙탕물.... 진흑 범벅이더군요...

사용자 삽입 이미지

촉촉하게 물에 졌어 있는 바위와 그 바위 위에 싱싱하게(??) 자라고 있는 식물...^^;;

사용자 삽입 이미지

어느덧 점심 시간이 다가오니... 햇님이 저~~~ 만치 하늘위에 떠 있네요...
다행이...
나무숲에 가려 잠시나마 따가운 햇살은 피했다죵...^^;; ㅎㅎ

사용자 삽입 이미지

아직 가을도 아닌데...
메뚜기가...*^^*
아슬아슬한 줄타기를 하고있더라구요~

가까이 카메라를 들이대도... 요게요게~ 촬영포즈를 잡더니... ㅋㅋㅋ
다~ 찍을때가지 가만히 있더군요...+_+ ( 귀여운 녀석...ㅎㅎ  )

사용자 삽입 이미지

뜨거운 햇살속에 힘들게...
도로를 굽이 굽이 달리던 자동차도...

잠시나마... 그늘에서 휴식중이에용~
자동차 동호회 마크가 잘~~~ 보이네용...ㅋㅋㅋ

사용자 삽입 이미지

출발해서 이동중엔 하늘이 꾸물꾸물... 비가 오려고 하더니..
다행이 목적지 근처에 도착하니...
하늘이.. 파~~~ 랗게~~ ㅎㅎ 쫌만더~ 맑았더라면...>_<

사용자 삽입 이미지

열심히 촬영중인데...
부부가 뒤에 차를 세우시더니... 저렇게 굴속으로 걸어 들어 가시더라구요... ㅎㅎ
둘이 여행 다시나봐용...

너무너무 보기 좋았더라는... 아~ 저기에 손까지 잡고 가셧더라면...
더~ 보기 좋았을텐데 말이죵...^^* ㅎㅎ

사용자 삽입 이미지

사진을 찍고 있는데... 동굴 반대편에...
사람들이... 급~~~ 마니 나타나시더니...+_+
저도 촬영을 접고 이제 다시 비둘기낭폭포를 위해 출발 준비를했다죵... ㅎㅎ

사용자 삽입 이미지

제 차의 뒷태~ ㅋㅋ
이제 슬슬 다시 뜨거운~ 햇살 속으로 힘든 여행의 길을 가야하는 울~ 몽이~

화이팅 하자구~ ㅎㅎ

사용자 삽입 이미지

출발하기전에... 얼마나 드거운 햇살이 내려 쬐이는지....ㅡㅡ;;
숲속으로 파고드는 햇살이... 이렇게 따갑더군용....

사용자 삽입 이미지

그디어 비둘기낭 폭포에 도착... ㅋㅋ
그런데...!!

문제가 있더군요...
'상수원보호구역'이라는 표지 판과 함께 굳게 닫힌 철문이 있더군요...

헉~!! 그냥 돌아 가야 하나 싶었는데...
간신히... 돌아 들어 가서... 사진찍기를 시작했습니다.

솔찍히 '상수원보호구역'이라서... 사진찍으면서도 불안불안...

사용자 삽입 이미지

시원하게 내려오는 폭포수가...ㅋㅋ
답답했던 마음 마저 뚫어 버리더군용... ㅎㅎ

사용자 삽입 이미지

이것이 그~~ 유명한...
비둘기낭폭포 입니다... ㅎㅎ

사용자 삽입 이미지

넑게 찍는다고 찍었는데...
비둘기낭폭포의 전체 모습이 담기지가 않아용..ㅡ,.ㅜ

사용자 삽입 이미지

시원하게 내려오고 있죠~?? ㅎㅎ
전날 비 때문인지...
다른 분들이 찍어 놓은 사진의 물의 양 보다 많이 떨어지는 것 같더라구요... ㅎㅎ

사용자 삽입 이미지

어때요...?
시원하시죠...?

사용자 삽입 이미지

빠른 물살에...
잘~ 붙어 있는 이끼...

사용자 삽입 이미지

비둘기낭폭포 뒷쪽의 풍경 이랍니다...
아~ 저기 사람만 없었다면...
정말 사진 잘~ 나왔을 것 같은데... 말이죠... ㅎㅎ

사용자 삽입 이미지

어느 덧 사진을 찍고 있는데...
역시나 한국인은 유명한 곳 이라면... 우르르...ㅡㅡ;;

상수원보호지역에 들어와... 고기를 구워먹고, 라면 끓여 먹고...ㅡㅡ;
정말이지... 꼴불견이더군요...

그냥 구경만 하고 가도 될 곳인데...

오랜만에 지루한 도시 일상을 떠나...
시원한 폭포소리에 스트레스 확~ 날려버린 하루가 되었네요...

왕복 200km... 잠깐 구경만 하고 오기엔 조금 먼~ 거리이긴 하지만...
웅장한 폭포 소리와 함께 해보면... 피곤도 사라질 정도랍니다... ㅎㅎ
그 동안 파란 화면에 왕날개~ 하나로~
SkyStory라는 하늘이야기 느낌을~ 주기위해 열심히~ 블로그를 꾸며 봤으나...
블로그는 꾸며진 것 만이 아닌...

그 블로그의 주인인 블로거의 활동과 얼마나 재치있는 입담의 말솜씨로 그 블로그에 내용을 체워가느냐에 따라 그 블로그의 유명세가 달라지더군요..ㅋㅋ
사용자 삽입 이미지

그냥~ 잘~ 꾸미고...
이런저런 이야기 꺼리 퍼오고...

내 이야기가 아닌데도 꼭 내가 말한 것 처럼... 내가 최초로 쓴사람처럼...
블로그를 운영해 보면서 느낀점이라곤...ㅡ,.ㅜ

남은건 누더기가 된 블로그 포스팅들 뿐이네용...

처음엔 반드시 블로그 운영에 필요한 하나의 주제를 가지고 글을 써야한다는 그런 생각이...
머리속에 들어 있어서... 그 주제를 마추려니 너무 힘들더라구요...

이젠 하나의 특정 주제가 아닌...
내 삶에 관련된 주제... 그러니까~ 나의 모든것에 대한 주제 라고 할까용...?
그런 글이 올라오는 블로그로 바꿔봐야겠어요...

요즘 보면 트위터니 뭐니 해서 소셜네트워크~ 'SNS'를 사용해서 서로간에 소통을 한다지요...
꼭 보면 이젠 블로그는 예전 개인 홈페이지 시절같고...
'SNS' 한창 인끼있던 '싸X월드' 같다는 생각이 드네요...

뭐 어떤거든 어때요~
자기 자신이 이쁘게 좋게~ 꾸며나가면 되는 것을...
완전 오랜~ 만에 다시 블로그르 잡게 되는 것 같은 기분이네요...ㅡ,.ㅜ
한동안 블로그 활동에 빠져~

사용자 삽입 이미지


회사일에 지장을 줄 만큼~ 미쳐 있었는데...
그 반대로 회사일에 미쳐서 블로그에 한동안 관심을 가지지 않았더니...ㅜ,.ㅡ

엉망 진창~ 친근하게 지내던 블로거 여러분들도 다~~~~
떠나가 버리고...ㅡㅡ;;

요즘 제 모습이랄까요..ㅡㅡ?
완전 아저씨 됬습니다...

사용자 삽입 이미지


이유는 뭐~ 뻔~~~~~~ 하죠..ㅜ,.ㅠ
급격한 노동의 댓가?

새로운 직장에 들어 오고, 8개월이라는 시간동안 자리잡고, 업무 프로세스 파악하고,
그런다고 정신 없이 지나온 2010년도...

벌써 2010년도의 절반 이상이 훌~~ 훌~~ 지나가버리고,
그동안 난 날위해 뭘 했나 싶을 정도로 올해 2010년 전반기는 기억속에 남는게 없네요~
이제 슬슬 다시 시작해야겠어용...+_+

다시 사진도 찍으러다니고~ 여가, 문화 생활도 하고...
얼핏 생각해보면 나에게 남지도 않는 회사일에 너무 미쳐 내 건강과 시간을 낭비 한게 아닌가 싶을정도로 아쉬움이 남는 흘러 버린시간들...

이건 뭐~ㅡㅡ;;

암튼!! 이제부터 다시 시작을 해봐야죠~ ㅎㅎ
바빠도~ 블로그는 해야 한다능거~ ㅎㅎ

가계부는 잘~ 쓰면서...ㅡ,.ㅜ 왜~ 블로그는 안하게 되는건지...ㅡ,.ㅜ ㅎㅎㅎㅎㅎ
사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지

성동구청 자전거 보관함 관리 시스템 입니다.

기존 통합관제 시스템에서 내용과 디자인만 조그 변경되고,
소켓통신은 같으나, 통계부분 및 이용현황 리스트, 데이터 출력 해주는 부분이 변경 되었습니다.


- 개발환경
참여인원 : 1인
사용 DB : Oracle 10g
사용언어 : PHP 5.2
운영체제 : Windows XP Pro
웹서비스 : Apache 2.2
6월 11일 금요일 밤...
문득 생각에 정동진으로 향했습니다...

갑자기 든 해뜨는 일출을 보고 싶은 생각에... 말이죠...
부천에서 강릉으로 고고씽~

두눈이 뻘개 지도록 3시간 가량 차량을 달려~
도착한 정동진...

벌써 해가 뜨려고 수평선을 환하게 비추고 있더군요...
처음엔 '정동진역'을 네비에 찍고 갔다가...

해변가에 들어 갈수 없는 아쉬움에 근처 해수욕장을 찾아보니...
모래공원... 발견~~!!

사용자 삽입 이미지


모래공원 인증샷~ ㅎㅎ
저 모래 시계는 1년동안 타임이라네요...?? ㅎㅎ
매년 1월 1일날 돌린다고 하던데...

사용자 삽입 이미지


바닷가에 혼자 앉아 일출을 기다리는 작은 아이...
바도구경도 하고...
뭔 그리 생각이 많은지... 꼬마 아이가... 한참을 저러고 앉아 멍~ 하고 있더군요~

사용자 삽입 이미지


쩌~~~~ 어~ 멀리~
햇님 빛이 살살살 올라 오네요~

사용자 삽입 이미지


새벽같이 남기고 간 발자국~
해변에 남긴 수만은 발자국 속에 남겨진 수만은 사연들...
저 발자국 남기기 행렬에... 저도 살포시...

모래 백사장이 제 발자국은 싫은지...
파도에 지워 버리더군요...ㅡㅡ;;

사용자 삽입 이미지


이제 해가 살살 올라 오고 있어요~~~~~+_+

사용자 삽입 이미지


2010년 처음 보는 일출 입니다..ㅜ,.ㅡ
그것도 해변 바닷가에서...
정말 만감이 교차하는 시간이네요...

사용자 삽입 이미지


태양이 올라오면서 그냥 해가 뜨는구나 라고 생각 할줄 알앗는데...
이것저것...
많은 것들이 생각이 나더군요... ㅡ,.ㅜ

사용자 삽입 이미지


햇님이 저~~ 만치 떳는데도...
해 구경을 하고 있는 사람이 많더군요...

서로 사진찍고... 사진도 찍어 주고~
여기저기 커플에...

일출보겟다고 멀~~ 리서 오신 관광객분들...

만감이 교차하는... 일출 구경이였습니다...
나름...

언젠가...
시간이 된다면...
좀더 일찍... 가서...

수만은 생각을 생각만 하는게 아니라... 모두 정리하고 올수 있는 시간을 만들어 봤으면...
하는생각이 드네요...ㅜ,.ㅡ

이메일 체크 정규식
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;


핸드폰번호 정규식
/^\d{3}-\d{3,4}-\d{4}$/;


일반 전화번호 정규식
/^\d{2,3}-\d{3,4}-\d{4}$/;


아이디나 비밀번호 정규식
 /^[a-z0-9_]{4,20}$/;


var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;


if ( !regExp.test( document.frm.hp.value ) ) {
      alert("잘못된 휴대폰 번호입니다. 숫자, - 를 포함한 숫자만 입력하세요.");
      return false
}

오라클 DB에 ODBC로 연결해야 하는 상황이고.. 클라이언트급 개인 PC에는 오라클이 깔려있지 않음..

여러가지 상황으로 클라이언트에는 오라클 Client를 설치하지 않고.. ODBC만을 연결하여 접속해야 함

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

1. Oracle.com에서 접속용 기본 프로그램 및 ODBC를 다운 받음.

다운받는 위치: htttp://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html


금일현재 Version 11.1.0.7.0가 최신버젼


가장 기본적인 프로그램 (무조건 받을 것.)
instantclient-basic-win32-11.1.0.7.0.zip (46,734,555 bytes)

가장 기본적인 프로그램 (경량버전)
instantclient-basiclite-win32-11.1.0.7.0.zip (17,667,999 bytes)

JDBC 클라이언트 패키지
instantclient-jdbc-win32-11.1.0.7.0.zip (1,562,261 bytes)

SQL*Plus 패키지
instantclient-sqlplus-win32-11.1.0.7.0.zip (789,617 bytes)

개발자 관련 SDK 패키지
instantclient-sdk-win32-11.1.0.7.0.zip (1,068,348 bytes)

개별접속용 ODBC 패키지 - 내가 필요한 기능
instantclient-odbc-win32-11.1.0.7.0.zip (728,899 bytes)

WRC 패키지
instantclient-tools-win32-11.1.0.7.0.zip (6,009 bytes)


내가 필요한 것은 기본 프로그램과 ODBC용 패키지로 2개를 다운받아 아래 디렉토리에 압축을 해제함

d:\oracle\instentclient_11_1   (요걸 잘 기억 해 주시고...)


2. 환경변수 지정

시작-> 내컴퓨터 -> 속성

사용자 삽입 이미지


고급 -> 환경변수
사용자 삽입 이미지


시스템 변수 새로 만들기
사용자 삽입 이미지


시스템 변수 생성
사용자 삽입 이미지


ORACLE_HOME=d:\Oracle\instantclient_11_1

TNS_ADMIN=d:\Oracle\instantclient_11_1 <- tnsnames.ora 파일이 위치할 폴더

NLS_LANG=KOREAN_KOREA.KO16MSWIN949   <- 한글관련 설정

PATH=d:\Oracle\instantclient_11_1 <- 기존 패스에 추가해야 함


Path만 기존 변수명에 추가하고 나머지는 새로이 생성


3. 레지스트리 변경

1) 드라이브 설치했다고 변경 (아래 표내의 글을 복사해서 drive.reg 파일로 저장해서 더블클릭 해도 됨)

 Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
"Oracle in InstantClient_11_1"="Installed"


2) Oracle in InstantClient_11_1 세부내역 추가 (아래글을 복사해서 dddd.reg 파일로 저장해 더블클릭 해도 됨)

 Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Oracle in InstantClient_11_1]
"APILevel"="1"
"CPTimeout"="60"
"ConnectFunctions"="YYY"
"Driver"="d:\\Oracle\\instantclient_11_1\\SQORA32.DLL"
"DriverODBCVer"="03.51"
"FileUsage"="0"
"Setup"="d:\\Oracle\\instantclient_11_1\\SQORAS32.DLL"
"SQLLevel"="1"

 

3. TNS 서비스 파일 등록

아래 내용을 tnsnames.ora 파일을 작성하여 d:\Oracle\instantclient_11_1 디렉토리에 저장

oracleTest1 =
(DESCRIPTION =
     (ADDRESS_LIST =
          (ADDRESS =
               (PROTOCOL = TCP)
                    (HOST = xxx.xxx.xxx.xxx)
                    (PORT = 1521)
                )
          )
     (CONNECT_DATA =
          (SERVICE_NAME = DB_NAME)
     )

)




oracleTest1 : 사용할 TNS 서비스명으로 임의로 자기가 설정
xxx.xxx.xxx.xxx : oracle이 설치된 서버 IP 주소
1521: 포트번호
DB_NAME : 접속할 DB명


여기까지 진행이 되었으면 컴퓨터를 재부팅 함... (환경변수 등이 반영되도록...)


4. ODBC 데이터 원본 관리자 실행
시작-> 제어판-> 데이터 원본 (ODBC) - 추가

사용자 삽입 이미지


드라이버를 선택 - 하단 그림은 Oracle in OraClient10g로 되어 있으나 위에 레지스트리를 정상적으로 적용했다면 Oracle in InstantClient_11_1로 나옴...

사용자 삽입 이미지



드라이버 정보 입력 - TNS Service Name이 중요함
사용자 삽입 이미지


비밀번호를 입력하고....
사용자 삽입 이미지



접속 성공...
사용자 삽입 이미지


오랜만에 봄 나들이를 하게 되었네요~
이제 슬슬 봄이 오려는지... 날씨가 따따해 지더군요... ㅎㅎ

그리하야~ 열심히 차를 몰고~ 우음도를 시작으로 오이도 가정 다녀 왔드랬습니다.

사용자 삽입 이미지



열심히 비포장 길을 달리고 난 후...
회색...?  아니지 흙색 차가 되어버렸네용...ㅜ,.ㅠ
언제 세차하냐공...ㅜ,.ㅠ 힝~

사용자 삽입 이미지



쩌~~~ 멀리 보이는 우음도의 명물 외로운 나무 한그루....
누가 갔다 놓은지 모를 쇼파 하나가 나무 밑에 덩그러니... ㅎㅎ

사용자 삽입 이미지



쇼파만 있는줄 알앗더니... 옆에... 고풍...??? 스러운 의자가 하나 덩그러니...
뭔가 어울리지 않을듯 어울리는 이 느낌이랄까...???

사용자 삽입 이미지


가가이서...
의자와 함께한 외로운 나무 한그루...

사용자 삽입 이미지


이번에 쇼파와~ 함께...

사용자 삽입 이미지


여긴 탄도항 이랍니다...
예~~~ 전에 왔을땐 풍력 발전기가 없었는뎅...
이번에 가보니 풍력 발전기가 생겨서 완전 생소 했어요... ㅎㅎㅎ

쩌어기~ 살짝 걸쳐진 왼쪽에 섬하나...
저기가 누에섬... 도착하니...ㅡㅡ;;
물이 들어 와서 들어가는 길이 막혀... 들어갈수 없는 아쉬움을 남겼드랬죵~ ㅎ

사용자 삽입 이미지


저기가 무슨 섬이더라...
지도 찾아보면 나오는뎅.. 누에섬 바로 옆에 있는거....
구찮아서 이건 직접 찾아 보시라고~ 문제로...^^;; ㅎㅎㅎㅎ

사용자 삽입 이미지



바람이 너무 쎄다 싶었는데... 저게 풍력 발전기가 아니라...

누군가 대~~~~~형 선풍기라고 하더군요...ㅡ,.ㅜ 맞는 말인거 같아요~
어찌나 바람이 불던지... 거의 날아 갈뻔~~~~~~~ 했숨니닥~ ㅎㅎ

사용자 삽입 이미지



요기는 음...
오이도~ ㅋㅋ

오이도는 왜~관광지가 됬는지..ㅡㅡ;;
갈매기 밖에 볼께 읍어요...ㅡ,.ㅜ

사용자 삽입 이미지



요러케 말이죵~ ㅎㅎ

사용자 삽입 이미지


가로등에 전구는 어딜가고...
햇님이~ 열심히 길을 밝혀주고 있네용~

저거 누가 부신겨~ 누구야~

사용자 삽입 이미지



저녁은 깔꿈하게~? 조개구이...

사용자 삽입 이미지



각종 해삼물이 가득~ ㅎㅎㅎ
무한 리필된다던데...ㅡ,.ㅜ 리필 한번도 못하고 반정도 먹고는 배불러서... 포기 하셨다능...

암튼!!! ㅎㅎ

봄 맞이로 서해안 나들이를 다녀 왔는뎅... 사진도 엉망이도...
몸도 추운 바람 때문인지...ㅜ,.ㅠ 몸살기운이 살살 돌고~

좀다 따따 해지면... 쩌기 멀리~ 담양 쪽 남해 쪽으로 달려봐야 겠어용...^^* ㅎㅎ
날씨가 조금 풀려서...
카메라를 들고 냉큼~ 달려나갔습니다. ㅎㅎ

어디로...? 서울시 한복판에 있는 고궁~ 덕수궁으로~

가는 날이 장날이라고...
도착을 대략 1시 30분 쯤에 했는데...
덕수궁 수문장 교체식을 하더라구요~ ㅎㅎ

사용자 삽입 이미지

위엄한 모습으로 제 카메라를 바라 보시는 장군님!
짱입니다용~ ㅎㅎ

사용자 삽입 이미지

이게 태평소 던가요??
뭐지..ㅡㅡ?? 뭐지...?? ㅎㅎ

째려보시면서... 열심히 불고 계시던데...

사용자 삽입 이미지

해가 뜨다가... 구름에 가렸는데...
나무가지에 걸려서... 데롱데롱~ ㅎㅎ

사용자 삽입 이미지

늙은 고목에난 구멍 얼핏~ 보면 하트 모양이네용~

사용자 삽입 이미지

요건 왜찍엇는지... ㅋㅋㅋ

사용자 삽입 이미지

따뜻한 햇살과 함께한 덕수궁 나들이...^^*

사용자 삽입 이미지

오랜 시간을 알려주는 녹과 흘러 버린 시간의 흐름...

사용자 삽입 이미지

깨어진 기와~

사용자 삽입 이미지

부식된 경첩...

사용자 삽입 이미지

잠시 누군가 버려두고간...
가방...

사용자 삽입 이미지

여기저기 엉켜있는기와들...

사용자 삽입 이미지


사용자 삽입 이미지
여긴 덕수궁 돌담길...
어째...

요즘엔 같이 걸어 가는 연인들은 볼수 없고~
여여커플, 남남커플만 보이는지...ㅡㅡ;;

사용자 삽입 이미지

마지막으로다가...
현판 사진 한장 ㅎㅎ

에휴~ 이번 촬영 후기는 쓸내 용이 별루... 쩝..ㅜ,.ㅠ 지송~
다음번 후기는 확실히 올려드릴께옹....+_+ ㅎㅎㅎ
사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지

통합 관제 시스템 기반으로 처음으로 만든 자전거보관함 클라이언트 통합관제 시스템.
웹에서 관리하며, 현제는 5군데의 클라이언트를 웹에서 관리한다.


- 개발환경
참여인원 : 1인
사용 DB : Oracle 10g
사용언어 : PHP
운영체제 : Windows 2008 Server
웹서비스 : IIS 7.0

'My Project List' 카테고리의 다른 글

프로젝트 관리 및 기타 운영정보 관리 매니저  (0) 2010.08.24
성동구청 자전거 보관함 통합관제 시스템 구축  (0) 2010.06.21
T-BOX 통합관제시스템 구축  (0) 2010.01.21
RSS Reader  (0) 2008.06.16
RSS Feed  (0) 2008.06.16

후... 이 문제에 대해서 삽질을 한 것이 얼마 전 일이었는데...
솔직히 근본적인 원인을 잡아내지 못하고 차선책을 선택했던 것 같다.


보통 ODP.NET을 이용하고자 하는 사람들은 Oracle Client 버전이나 Server버전을 설치한 사람들이 대부분일 것이다.

우리 회사 환경 또한 그러했기 때문에 ODP.NET을 설치 할 때 폴더 설정을 Default로 해서 그대로 깔게 되었을 때 발생되는
문제에 대해서는 무지하였다.

솔직히 인터넷에도 잘 나와 있는 부분이 없었다. ( 내가 검색을 잘 못했던 걸까...? )

설치 폴더 설정을 기본으로 했을 때 발생 되는 문제...

-> TNSNAMES.ORA를 찾아가는 환경변수가 등록 되어 기존에 쓰던 것을 옮겨서 새로 생긴

D:\oracle\product\10.2.0\client_1\network\admin 폴더에 넣던가 내 컴퓨터 > 속성 > 고급 > 환경변수 셋팅에서 path 부분을 다시 원래의 패스
D:\oracle\product\db_1\network\admin 폴더로 잡아줘야한다.

여튼 !! 이런 문제를 근본적으로 설치 시에 해결하는 방법이 있더라.
모든 삽질은 해결책을 찾고 나면 허무한 법.

자자~ 서론이 길었다.

이제 모든 분들께서 기다리시는 해결책을 알아보자.
ODP.NET설치 Setup.exe를 실행한다.


사용자 삽입 이미지

 

다음을 클릭한다.

 

사용자 삽입 이미지

 

본인의 PC는 Vista이기 때문에 마리님의 포스트에 적힌 대로 설치를 하였다.

odp.net\stage\product.xml을 찾은 후 다음을 누른다.

 

사용자 삽입 이미지

 

Oracle Data Access Component 10.2.0.2 21을 선택하고 다음을 누른다.

 

사용자 삽입 이미지


요것이 핵심 되시겠다~! 상단의 이름은 콤보 박스를 선택하여 나오는 이름을 클릭한다.

굳이 그렇게 안해도 되는 듯하나, 찜찜하다. 그냥 선택해주자.

그리고~! 밑에 경로는 현재 깔려있는 Client or Server의 패스를 넣어 주시면 되겠다.

단순히 D:\Oracle << 아니다... 패스를 잘봐라...

D:\Oracle\Product\10.2.0\db_1까지이다..

ps : 선택해주면 자동으로 패스가 잡히지만 다시한번 확인해 주시길 바랍니다^^


ODP.NET 다운로드: http://www.oracle.com/technology/software/tech/windows/odpnet/utilsoft.html

--------------------------------------------------------------------------------------

가끔 이미 설지가 되어 있는 서버설치쪽 경로에 설치를 하게 되면...
설지가 되지않는다...

그럴땐 그냥 과감히...
기본 경로로 설치를 하고 "TNSNAMES.ORA" 파일을 위에서 지정한 기본 폴더로 변경 하고 서비스 리스타드 하면 가장 손쉽게 해결이 된다.

10g 부터는 pump 기능이 제공된다.
기존까지 사용하던 exp, imp 는 클라이언트에서 실행하지만 pump 는 서버에서만 실행가능하다.

백업하기(expdp)
순서는 다음과 같다.
  1. expdp 실행을 위한 ORACLE_HOME 환경변수 설정(필요하다면)
  2. sysdba 권한으로 펌프할 디렉토리 생성하기
  3. 사용자에게 디렉토리에 대한 접근/작성 권한 할당하기
  4. pump export 하기
다음은 예제다. 진한 글씨를 임의의 설정에 맞추면 된다.

ORACLE_HOME 환경변수가 맞추어져있다면 다음 과정은 생략 가능하다. 다음은 AIX 의 경우 샘플이다.
$>export ORACLE_HOME=/app/oracle/product/102/db

관리자 계정으로 접속
SQL> conn /as sysdba 를 실행하거나 $>sqlplus sys/11234@ORCL as sysdba 를 실행하여 접속
Connected.

pump 를 위한 directory 생성
SQL> create  directory pump_dir as '/tmp/backup/oracle';
Directory created.

pump 를 위한 권한 설정
SQL> grant read,write on directory pump_dir to slothink;

Grant succeeded.

SQL> exit

$ mkdir /tmp/backup/oracle

펌프 export
$ expdp slothink/1234@ORCL directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job

만약 하위버젼이나 특정버젼으로 import 를 시킬 계획이라면 버젼을 명시해줘야한다.

$ expdp slothink/1234@ORCL directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job version=10.2.0.4

특정한 테이블을 export 시킬 계획이라면 테이블을 입력한다.
$ expdp slothink/1234@ORCL tables=MY_LOVE_SLOTHINK directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job version=10.2.0.4


복구하기(impdp)
$ impdp slothink/1234 directory=pump_dir dumpfile=exp.2009-11-04.dmp job_name=backup_job


오라클 내에 있는 테이블 전체를 백업해보자.


1. EXP

1.1. 기본 타입

C:\> exp 유저아이디/패스워드 file=파일명.dmp  (파일명의 경우 임의로 정하면 된다.)


1.2. 실행

사용자 삽입 이미지


2. IMP

2.1. 기본타입

C:\> imp 유저아이디/패스워드 file=파일명.dmp  (파일명의 경우 백업한 파일명을 사용한다.)


2.2. 실행

사용자 삽입 이미지


3. 백업 파일의 위치

C:\Documents and Settings\윈도우계정(i.e. Administrator)


export 시키면 기본적으로 저장되어지는 위치로, import 시에도 같은 위치에 저장하는 편이 속 시원하다.

실제로 다른 위치에 놓고 실행해 본 경험은 없다.


사용자 삽입 이미지


사용자 삽입 이미지

올해 2010년에 처음으로 본 뮤지컬이다... ㅎ

작년엔 뮤지컬 5번 정도 보고 연말에 결심했던 것이...
2010년엔 좀더 많은 문화 생활을 즐기리라 다짐했엇는데...

뮤지컬 싱글즈가 올해 2010년도 첫 스타트를 끊어준 셈이 되어 버렸다... ㅎㅎ

영화도 못보고 챚은 모는둥 마눈둥 했던 이야기...
결국 뮤지컬로 보앗더니... 내용이 뒤죽박죽이 되어버렸다...ㅜ,.ㅠ 힝~

사용자 삽입 이미지

조금 느낌점이 많이 있는 뮤지컬이 되었다고나 할까...??

벌써 사회에 나온지 4년차 나이는 26살...
열심히 머리 굴려가며 일하는 솔로 직장인...

싱글즈는 29살에서 30살까지의 1년 이라는 사이에 발생하는 우리 모두가 한번쯤은 격고 지나갈만한 상황을 재미있게 극본화 한것 같다...

사용자 삽입 이미지


대충 줄거리를 보자하면...

나난이라는 29살 싱글여...
남자도 잃고, 직장에서는 퇴사권고과 같은 의상디자이너에서의 보직변경... 외식업체 매니저...
직업과 사랑 그리고 결혼...

난 아직 29살은 아니지만... 많은 것들이 동감이 가더군요...ㅜ,.ㅠ 흑흑흑~
조금 늦게 예약을 해서 그런지... 자리가 목이 조금 아팟다~

음... 배우들과 소통을 하고 싶으면... 맨 앞줄...
조금 편하게 보고 싶을경우 E열 이상 중간쯤에서 보면 편하게 볼 듯하다... ㅎㅎ

MySQL 에서는 create table 명령문 내에서 auto-increment 를 사용할 수 있지만,
ORACLE에서는 그게 불가능한 것처럼 보인다.
이건 내가 알고 있는 지식일 뿐, oracle도 create table 명령문 내에서 가능할 수도 있다.

아무튼. create table 내에서 auto-increment를 세팅할 수 없다는 가정 하에, sequence와 trigger를 통해서 어떻게 auto-increment를 생성할 수 있는지 알아보도록 하자.

먼저, auto-increment를 시행해볼 table을 만들자.

SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));

Table created.

id column을 auto incrment 하고 싶다고 가정하자.

id가 1로부터 시작해서 1씩 증가할 수 있도록 sequence를 생성한다.


SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;

Sequence created.


이제 test 테이블에 insert 할 때마다 id column에 이 sequence 를 적용시킬 수 있도록 trigger를 걸어보도록 하자.

CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;


Trigger created.

이제 test 테이블에 새로운 row가 insert 될 때마다 이 test_trigger가 실행될 것이고, 결과적으로 id가 자동으로 1씩 증가하게 된다.
 
insert 문에서 id의 값으로는 null을 주거나, 다른 값(즉, name) 만 설정해 주어도 된다.

확인을 해보자.


SQL> INSERT INTO test (name) VALUES ('Jon');

1 row created.

SQL> INSERT INTO test (name) VALUES (’Bork’);

1 row created.

SQL> INSERT INTO test (name) VALUES (’Matt’);

1 row created.

SQL> SELECT * FROM test;

ID NAME
???- ??????????
1 Jon
2 Bork
3 Matt


자! 모든 게 완성되었다!

다만, 이번 예제의 경우 column이 id와 name, 이렇게 2개밖에 안되어 id를 제외한 모든 column을 일일이 나열해 insert를 해줄 수 있었지만, column의 수가 많을 경우, 이와 같은 작업이 불가능하다. 이럴 경우, id의 값 대신 null을 주면 된다. 즉, 다음과 같다.

SQL> INSERT INTO test (name) VALUES ('Jon');

-->

SQL> INSERT INTO test VALUES (null, 'Jon');


OK???

사용자 삽입 이미지


유저 생성

CREATE USER [ user_name ] IDENTIFIED BY [ user_password ];

유저 권한주기

GRANT connect, resource, dba TO  [ user_name ];

생성한 유저로 접속

CONN [ user_name ] / [ user_password ]

생성한 유저 확인


이건 위에 생성한 유저로 접속과 반대로 해도 괜찮다.

아니 먼저 확인하고 접속하는게 맞는거 같긴한데 다시 하기 귀찮다.


지울때는 그냥

CONN system / password

DROP USER [ user_name ];


물론 위에 쓴 모든 예시문의  [ ]는 제외하고 쓴다. ( 이런 사람 있어 꼭 ㅋㅋㅋ )

그리고 대소문자 구분은 안하는거 같다.

사용자 삽입 이미지
 

php에 mssql을 사용하게 되었네요.

mysql_connet처럼 당연히  mssql_connect 함수가 있길래 똑같이 해봤습니다만,
당연히 아무런 셋팅이 없으면 mssql_connect를 사용할 수가 없습니다.

첫번째 직면하는 에러문제는 undefined function이라는 겁니다..
이문제는 mssql 라이브러리를 링크하면 해결됩니다.
extension에 php_mssql.dll을 추가해주세요..

두번째 문제는 unable to connect server입니다..
연결이 안되지요.

이 문제는 두가지로 해석할 수 있습니다.

해당 사용자의 외부접속을 mssql서버에서 막았거나, php에서 해당 서버로 접속을 연결할 수 없다는거죠.

전자는 sql서버에 권한을 넣음으로써 해결할 수 있습니다.

후자 문제는 php서버와 sql서버가 같으면 발생하지 않을 수 있지만, 제가 테스트 하는 환경에서는 나타나더군요.

문제 해결은 다음과 같습니다.

sql이 설치된 서버의 windows/system32 폴더의 ntwdblib.dll 파일을
php가 설치된 서버의 windows/system32 폴더로 복사하고 서버를 재시작 하는 것입니다.

이러니 문제가 해결되더군요. 오늘도 밥값을 한거 같아 기쁩니다.

ps. 당연히 삽질 많이 했습니다.
한달전에 연결안되는 문제를 확인하고 바빠서 덮어두었는데..
이제서야 찾아서 해결책을 올리네요-0-

ps2. 두개의 파일이 다른점은 사이즈로 비교하시기 바랍니다.
sql이 설치된 서버의 ntwdblib.dll파일 사이즈는 284kb이고..
php가 설치된 서버의 ntwdblib.dll파일 사이즈는 273kb입니다.
파일을 첨부합니다~ ㅋ

(MSSQL)-, (PHP)- 확장자는 지우고 사용하세요~

'Web(웹) Study > PHP' 카테고리의 다른 글

월의 마지막 날짜 구하기  (0) 2010.11.24
날짜의 요일 구하기  (0) 2010.11.24
PHP에서 "HTTP / HTTPS" Request하기  (0) 2009.11.18
빠른 PHP 속도를 유지 하기 위한 것.  (0) 2009.10.06
PHP로 소켓 서버 작성하기  (1) 2009.10.06

정말 요즘엔 주말에 나가 돌아 다닐만한 시간이 없네요...ㅠ,.ㅜ
핑계아닌 핑계이긴 하지만...

카메라 들고 나선다는게...
날씨도 춥고...ㅡㅡ;;

그래서 그런지... 사진실력이... 그닥~ 늘지 않는 기분에...
수백장을 찍어 놓고도 맘에 들지 않아서...
다~ 버리곤하네요...ㅜㅜ;

이번에 다녀 온 곳은...
태왕사신기 촬영 세트장 입니다...

인터넷에 요즘 부쩍 관심사로 많이 올라오고...
여기저기 사진 동호회에서도 다양한 사진들을 올려주셔서 궁굼하던 찰라...

다행이 시간도 되고~ 날씨도 맑고 조금 풀려서...
신나게... 출발 했습니다...

사용자 삽입 이미지

강변에서 버스를 타고 대략 10분 정도...?
검문소 앞에 내려서 횡단 보도를 지나... 언덕길을 올라가면...
눈앞에 바로 요런 팻말이 큼지막하니 서 있네요...^^*

아직 100M나 남았나데요... 눈이 녹지 않아서... 이거리가 왜그리 멀어 보이는지...ㅡ,.ㅜ

사용자 삽입 이미지

매표소 옆에 요렇게 들어가는 곳! 이라고 되어있네용... ㅎㅎ
어딜가나... 있는 팻말이죠... ㅋㅋ
그러고 보니 3개 국어로 써있네요... ㅎㅎ

사용자 삽입 이미지

입장료를 내면... 입장 표를 주는게 아니라...
요련 이상한 종이를 주더라구요....??

도대체 어디에 쓰는건지도 알려주지도 않고 말이죠...ㅜㅜ;;
아차! 입장료는 개인 입장 시 3000원 이랍니다...^^*

사용자 삽입 이미지

그 입장료 내고 받은 종이는 이렇게 쓰는 거였네요~
소원을 쓰고~ 줄에 주렁주렁...

꼭 남산에 열쇠 달아 놓는것 같이.. 말이죠...ㅎㅎ
주렁 주렁 많이 도 달려 있는걸 보니 많은 분들이 이미 여기를 다녀 갔나봐용~ ㅎㅎ

사용자 삽입 이미지

세심한 것까지 잘 표현을 해서 지어 놓았더군요...

사용자 삽입 이미지

이게 그~~ 한동안 중국과 한국을 떠들석 하게 만들었던...
'광게토대왕비' 입니다...

실물 크기와 동일하게 만들어 졌다죠...?
완전 웅장해 보이는데...

주변 분위기가 광게토대왕비와 연관성이 없어서... 아쉬웠습니다.

사용자 삽입 이미지

드라마에서도 보면서 저게 정말 철로 만들걸까...??
생각했던 그 무기들...

들어 보았는데... 정말 철로 만들어 져 있더군요...ㅜ,.ㅡ
완전 무거웠습니다... ㅎㅎㅎㅎ

아~ 그리고 시간이 오래되서 그런지... 녹이 많이 나있더군요...

사용자 삽입 이미지

태왕사신기 촬영장중 대장간 3층 부분에서 찍은 사진 입니다...
들어가지 말라고 되어있는데...^^;;;

살짝쿵~ 전경을 찍고 싶어서 몰래~~ 올라가서 찍어 봤습니다... 헤헤헤헤~
근데... 올라가는 길이 무섭습니다...ㅜ,.ㅠ
온통 나무로 되어있어서~ 삐걱~ 삐걱...

사용자 삽입 이미지

여것도 마을 전경중 일부 입니다...^^*

사용자 삽입 이미지

해가 뜨지 않아서... 조금 아쉽긴 한데...
창밖으로 보이는 건물과... 창틀이... 이쁘네요...^^* ㅎㅎ

사용자 삽입 이미지

이 사진이 28mm 단넨즈의 한게 이더군요...ㅜ,.ㅠ
다들 오면 하나씩 찍는 물레방아와 대장간 사진...

왼쪽이 대장간이구요~ 중앙에... 물래방아...
근데... 한 화면에 담을수 없다는게...ㅜ,.ㅠ

사용자 삽입 이미지

촬영에서 전투 신에... 박혔을 법한... 화살촉...
뽑아 보려했는데... 단단히도 박혀있다라구요...

사용자 삽입 이미지

한~~~~~ 참을 찍다보니...
입구를 찍지 않은거 같아서... 다시 입구로 나와서 찍어 봤습니다...

입장권 이나 입장 관련해서... 제한이 없어서... 들어갔다 나갔다가 해도 상관이 없더라구요...

사용자 삽입 이미지

마을로 들어 가는 입구...

사용자 삽입 이미지

대장간을 다른 각도에서 봤습니다...

사용자 삽입 이미지

대장간 내부에 창고가 있는데요~
이렇게 굳게... 잠겨 있네요...

오랜 시간을 말하듯... 녹과 함께...

사용자 삽입 이미지

열심히 사진을 찍고 돌아 보니... 어느 분인지...ㅜ,.ㅠ
문을 이렇게 닫아 놓으셨더군요...

꼭~ 감옥 같았다죵... ㅎ

사용자 삽입 이미지

사진을 찍으려고 도착했을땐 날씨가추운지 몰랐는데...
시간이 지나면 지날수록... 추워지더군요...

역시 아직 추운 겨울은 겨울 입니다... ㅎㅎ
앞으로 없는 시간을 나누어 계속 사진을 찍으러 다녀야 할까봐요...ㅜ,.ㅠ

사람이 많지 않아... 사진찍기는 편했는데...
나중에 날씨가 좀더 따따해지면... 다시가봐야 겟어요...^^*
사용자 삽입 이미지

1. 어두운렌즈 -> 어두운 사진

사진이 어두울 때, "렌즈가 어두워서 저런가봐"라고 생각하시는 경우가 있습니다. 렌즈가 밝다는 것은 사진이 밝아지는 것은 아닙니다.

노출계는 심도와 셔터스피드를 조합해서 적정 노출을 만들기 때문에 조리개값이 깊으면, 셔터스피드에서 그만큼 보상을 하게 되죠.

영어의 경우 bright lens 라는 말 대신, fast lens라고 하는데,

저는 그게 더 옳은 표현이라고 생각합니다. 그 만큼 밝은 렌즈는 빠른 셔터스피드를 확보하게 해주니까요.


 2. 얕은 심도를 너무 많이 사용한다.

디카 쓰시는 분들이 DSLR으로 기변을 하는 가장 큰 이유가 되는 이유가 바로 그 놈의 "아웃포커싱(국적불명단어)"이죠.

밝은 렌즈가 무조건 좋지는 않습니다. 얕은 심도가 무조건 좋지도 않고요.

조리개 수치 1.4정도의 밝은 렌즈의 경우 꼭 얕은 심도때문에 쓰는것이 아니라 광학적 능력에서의 우수한 렌즈이기 때문에 쓰는거죠.

얕은 심도를 지나치게 많이 쓰면 상당히 식상해질 수가 있습니다.

사진에 따라서 얕은 심도가 필요하고, 깊은 심도가 필요할 때가 있으며, 얕은 심도를 쓴다고 사진이 더 좋아지지는 않습니다.


 3. 야경에서는 고감도가 좋다.(삼각대 없이 쓴다)

어차피 불빛이 별로 없는 야간의 경우 삼각대를 써야합니다.

이것은 바깥에 나갈 때 알몸으로 나갈 수 없는 것처럼 당연한 법칙이죠.

그런데, 삼각대의 필요성을 모를 때가 많습니다, 그러다보니, 고감도로 해결하려고 하는 경우가 많죠.

심지어 삼각대 장착시에도 고감도를 사용하는 경우가 있습니다.

특별한 경우가 아닌 이상 야경에서는 삼각대를 써야하고,

고감도를 쓸 경우 한 번에 받아들이는 빛의 양이 많기 때문에 결국 빛의 모양이 주변에까지 퍼지게 되어 이쁘지 않게 나오게 되죠.


 4. 야간에 풍경을 찍을 때 플래시를 쓴다.

이것은 기념사진에서는 어떻게 사용가능할 수도 있습니다.

사진을 찍지 않는 관광객에서 쉽게 볼 수 있는 장면인데,

한 밤중의 저 멀리를 무한대에 놓고 사진을 찍으며, 플래시를 번쩍 터뜨리는거죠.

물론, 플래시를 사용하지 않았다면, 셔터스피드때문에 촬영이 불가능했을 수도 있습니다만,

막상 결과에서 보면 원하는 부분은 플래시의 동조범위에 벗어나서 몇개의 점밖에 안 보이는 경우가 많습니다.


 5. 접사를 너무 쉽게 본다.

접사 촬영시 삼각대를 쓰지 않거나, 지나치게 얕은 심도를 쓰거나, 아니면 그저 가까이에서 찍으면 장땡이라는 논리가 여기에 해당합니다.

접사의 성능에서도 무조건 가까이 붙는다고 좋은게 아니죠.

접사도 다른 촬영에서와 마찬가지로 여백과 배경을 생각해야 합니다.

그런데 무조건 이쁜 꽃만 크게 찍으면 접사가 된다고 생각하는 경우가 많습니다, 접사도 다른 사진과 마찬가지로 노력이 필요합니다.


 6. 피사체를 가운데에 집중시킨다.
이것도 기념촬영에서는 가능합니다만, 그 외에는 그다지 권장하지는 않습니다.

사진을 처음 찍으시는 분들께서는 노출도 생각해야하기 때문에 막상 구도에 대해서 별로 생각을 안 하게 되죠.

그래서 어떤 사진들 보면 사람이 정 가운데 있고, 어색한 여백이 사방을 둘러 쌓고 있는 경우가 발생하죠.

피사체를 가운데 두는것 만큼 식상한 구도가 없습니다.

물론, 이것이 좋을 때도 있지만, 아닐 때도 상당히 많습니다.

가장 안전한 방법으로는 황금분할을 쓰면 될듯 싶습니다.


 7. 인물 촬영 시 몸 전체가 나오게 한다.

이것도 관광객 사진이나 기념촬영에서 쉽게 볼 수 있는 구도이죠.

몸 전체가 나오게 되면, 얼굴이 안 보입니다. 인물 촬영시에는 얼굴을 살려주는 것이 좋습니다.

그런데 몸 전체가 나오게 되면 그것 또한 주변 배경에 가려지는 지극히 식상한 사진이 되기 쉽습니다.


 8. 필름 SLR은 비싸다

수십만원을 주고 디카를 산다면 필름 SLR이 결코 비싸지는 않습니다.

물론, 고급 렌즈를 고려한다면 비싸지긴 합니다만, 일반적인 설정에서는 결코 비싼게 아니죠.

알파-7의 경우 여기서 60만원대에 구입이 가능하고,

어느정도 괜찮은 성능을 보이는 필름 SLR중에서 30만원대에 있는 것도 상당수 있습니다.


 9. 모니터 설정을 너무 믿는다.

인화할 때 왜 이상하게 나왔지 하고 의아해하는 경우중에서 모니터 설정에 너무 의지해서 그렇게 나온 경우가 많습니다.

사람마다 다릅니다만, 저는 사진의 최종 결과물은 인화물이라고 생각합니다.

인화에서 잘못 됐으면 사진으로서의 가치가 그만큼 훼손되는거죠.

모니터에 이쁘게 보인다고 인화물이 이쁘지는 않습니다.

특히나 지나친 후보정으로 사진의 결점을 보완하는 경우에 인화물이 예상이하로 나오게 되죠.


 10. 편광 필터를 너무 맹신한다.

편광필터만을 쓴다고 무조건 하늘이 파랗게 나오는것은 아닙니다.

편광 필터는 사이드라이트에서 효과를 보는것이기 때문에, 순광,역광에서는 효과가 없으며,

엄연히는 컨트라스트를 증가하여, 하늘이 파란거 처럼 보이는거죠.

오히려 지나친 편광효과는 하늘이 어둡게 나오게 됩니다.

그리고 편광 필터를 항상 장착하는 것만큼 어리석은 것도 별로 없을겁니다.

편광 필터는 필요할 때만 쓰는거죠. 항시 장착하게 되면, 오히려 셔터스피드만 떨어뜨려서 촬영 환경만을 더 어렵게 하죠.


 11. 풍경만을 맹신한다.

이것은 풍경을 거의 안 찍는 저같은 사람이 피부로 항상 느끼는 부분이죠.

처음에는 가장 쉽게 찍을 수 있는 것이 풍경이라고 생각할 수도 있습니다만, 풍경 사진이 결코 쉽지는 않습니다.

제가 풍경을 안 찍는 이유중 하나도 바로 제가 풍경 사진을 찍을 능력이 안되기 때문이죠.

처음 시작하시는 분이 풍경사진을 너무 맹신하게 되면 두가지 문제에 도달 할 수 있죠.

첫번째는 위에서 설명했듯이, 풍경 사진이 결코 쉬운것은 아닙니다.

정말 피나는 노력이 들어가죠.

두번째에는 더 심각한 문제인데,  사진을 보는 시야가 그 만큼 좁아지게 됩니다.

사진을 찍다보면, 자신이 풍경이든, 추상이든, 더 찍는 분야가 있지만,
그래도 다른 분야에 대해서도 열린 마음이 필요하게 되죠.

그러나 처음부터 풍경만을 맹신하게 된다면, 그만큼 사진의 다른 취향에 대해서 무지하게 되고,

이것이 발전되면, 다른 분야를 배척하게 되는 결과를 가져오죠.

비록 자신의 취향과는 다르더라도, 사진의 종류는 여러가지가 있다는것을 인정하는것이 중요합니다.

그리고 눈에 보기 좋은 것이 무조건 좋은 사진이 되지는 않습니다.


 12. 바디에 비해 주변 악세사리를 너무 과소평가한다.

바디에 엄청난 돈을 투자하면서, 덤으로 투자하는 삼각대, 가방, 필터등에 대해서는 너무 인색한 경우가 있습니다.

가방은 그렇다고 쳐도, 삼각대와 필터를 정말 카메라 만큼이나 중요한 장비들이죠.

렌즈가 아무리 좋아도, 필터가 몇천원짜리 유리 UV 필터이면 아무 소용이 없고,

아무리 비싼 바디도, 허접한 삼각대위에 세우면, 바람에 넘어져서 모두를 날리게 되는법이죠.


 13. 야경 촬영은 광각에 의지한다.

야경 촬영은 일반 촬영과는 다른 접근방식이 필요합니다.

눈에 이쁘다고 사진이 이쁜것은 아니죠.

광각으로 야경 전체를 포착하려고 생각하다보면, 상당수의 경우는 결과에서 그저 몇개의 점만이 나오게 되는거죠.

야경에서는 광각을 쓸 수도 있습니다만, 망원도 많이 쓰이게 됩니다.


 14. 망원렌즈에 지나치게 의지한다.

처음 사진 찍으시는 분들이 소위말하는 도심사진을 찍다보면 가장 먼저 찍는 것이 바로 "도촬"입니다.

캔디드 사진 자체가 잘못된 점은 없습니다만, 사진을 얻기 위한 방법이 지나치면,

도촬은 윤리적인 차원, 심지어는 법적인 차원에서 문제가 되는거죠.

무조건 멀리에서 있는 피사체를 망원으로 땡긴다고 좋은 사진이 되는 것은 아닙니다.


1 5. 필터를 두 장 이상 겹처쓴다.

이것도 자주 볼 수 있는 경우이죠. 필터는 무조건 한 장 쓰는것이 원칙입니다.

그런데 2장, 심지어는 3장을 겹쳐쓰는 경우가 많습니다. 그 만큼 심각한 화질저하를 가져오게 되죠.


 16. 불필요한 악세사리에 너무 의지한다.

때로는 악세사리에 너무 인색하면서도, 동시에 불필요한 악세사리에 너무 의지하기도 합니다. 특수 효과 필터가 한 가지 예이죠.

접사 필터, 소프트필터, ND필터, 크로스 필터등은 필요할 때에는 써야 합니다만,

구입하시는 분 모두가 과연 필요할지는 의문입니다.

그리고, 기왕 장만한다면 좋은거를 써야하는데, 12번의 논리가 적용되어 지나치게 값싼 필터를 찾게 되어, 오히려 사진만 망치는 경우가 생기죠.

싸구려 접사필터나 소프트필터가 대표적인 예이죠.

그리고 광각, 망원컨버젼 렌즈도 그러한 예에 들어가게 되죠.

수준이하의 컨버젼렌즈로 인해 사진에 심각한 화질저하를 가져오는 경우가 있습니다.


 17. 메뉴얼을 너무 무시한다.

카메라 메뉴얼은 다른 전자제품의 메뉴얼에 비해서 더 중요도가 높습니다.

그런데, 메뉴얼을 정독하지 않고 카메라를 쓰는 경우가 많죠.

Q&A란에서 자주 느끼는 대목이죠.

새로운 기종을 쓰신다면, 처음 몇달정도는 항상 메뉴얼을 가지고 다니실 것을 권장합니다.

(비록 한 달도 안되어서 기변하는 경우가 수두룩하지만요 ...)
 


 18. 사진 이론을 너무 무시한다.

촬영 단계만을 생각하게 되고, 촬영을 위한 준비단계인 사진 이론을 도외시하는 경우가 있습니다.

포토샵을 배우기 위해서 많은 시간을 투자하는것도 중요합니다만, 사진 이론에 시간을 투자하는것도 중요합니다.

사진학에 관한 좋은 책은 하나 장만하시것도 좋습니다.


 19. 흑백 -> 멋있는 사진

흑백으로 찍는다고 무조건 좋은 사진이 되는것은 아닙니다. 제가 여기에서 바로 산증인이죠.

사진 자체의 결점을 흑백전환을 통해서 바꿀 수는 없으며,

흑백촬영은 그저 포토샵에서의 하나의 효과가 아니며, 사진 표현의 한 방법입니다.

필카를 쓴다면, 어차피 필름 선택단계에서 컬러,흑백여부를 선택합니다만,

디카를 쓰신다면, 사진을 흑백으로 할걸이냐 아니면 컬러로 할것이냐를 미리 머리속에서 결정하고 촬영하실것을 권장합니다.

저의 퉁명스럽지만, 지극히 개인적은 의견으로는 자신의 사진이 별로인데, 그것을 흑백으로 전환하면 더 좋아지겠지 하는 생각은

흑백사진을 사랑하는 많은 분들에게 대한 모욕입니다.


 20. 기변을 하면 사진이 좋아진다.

보통 디카든, 필카든 처음사서, 1달정도의 기간은 사진이 안 나오는것은 당연합니다.

해당 바디에 아직 익숙하지 않은것도 있고, 그다지 사진을 찍을 기회 자체가 없었다는거죠.

그런데, 막상 그거는 생각하지 않고, 뭔가 카메라의 제약이 있지 않나 싶은 생각을 흔히하게 됩니다.

이거는 거의 누구에게나 해당되겠지만, 카메라를 바꾼다고 결코 사진이 좋아지지는 않습니다.

* 기본 준비물 *


1. 모  델 : 돈안드는 주위분들


2. 카메라 : AF 기능이 있는 신형 카메라가 유리함(MF가 AF보다 빠른분은 패스..)

3. 렌  즈 : 망원영역 렌즈 (80mm ~ 130mm가 가장 좋다는...)

4. 필  름 : 모델의 순간적인 인상과 표정을 잡아야 하기때문에 빠른속도필요(ISO 200)

               DSLR의 경우는 ISO만 200에 놓으면 끝!

위의 기본 준비물이 안되시는 분은 그냥 표준렌즈(50mm)에 구형 수동식 카메라로 촬영해도 충분된다고 합니다.

사용자 삽입 이미지

"사진은 사람이 찍는 것이지 장비가 찍는 것은 아니니까.."

사용자 삽입 이미지

우선 찍을 모델을 정했다면 그 모델에 대해 완벽하게 탐색합니다.. 여러 재미있는 이야기라던가 이것저것 대화를 통해 모델의 경계를 허물며 가장이뻐보이는 표정이나 구도를 찾습니다.. 인물사진의 주 목적은 모델의 행복한 인상을 담는것이니 모델에 대해 욕을 하거나 컴플렉스를 건드리지 않도록 주의바람!

인물사진인 만큼 심도는 낮게...(조리개를 개방하라는말이에요... 이것도 이해 안되시는분은 조리개값을 작게해주세요~ㅋㅋ)

주위의 잡다한 배경들이 날라가 인물이 살아나겠지요! 대략 조리개 심도는 F4 ~ 2.8 정도로 해야겠네~( 대포렌즈라면 1.8까지도...ㄷㄷ)

사용자 삽입 이미지

그리고 인물 뒷 배경은 인물의 위치에서 좀 떨어져 있는게 좋겠지요? 벽면일 경우 약 2~3미터 정도... 만약 흑백사진이라면 음.양의 차가

많은 장소를 이용하여 배경을 아주 검게 하든가 아니면 아주 하얗게 하든가 ~ 각자의 취향에 맞게 찍으세요

tip) 같은 표정을 반복해서 여러컷 찍어야 한다 것! 사람의 눈 깜박임이 셔터보다 빠르기 때문에 자칫하면 안티사진을 찍게 되시죠..ㅋ

      죽이는 구도에 적정노출이 맞아 떨어 졌는데 눈을 감은사진은 과감히 버리세요~

- 얼굴 : 약간 숙여 목턱이 보이지 않아야 한다.

            광대뼈가 높은 사람은 가급적 정면에서 잡아 주고 얼굴이 펑퍼짐한 사람은 약간 측면으로 돌리게 해서 얼굴 평수를 줄여주고,

            카메라 앵글을 약간 높여 내려찍으면 가름하게 나온다.

- 몸통 : 약간 측면으로 서게 하는 것이 가장 자연스럽고 모델이 큰 키라면 발 받침에 올라가 찍는 자와 찍히는 자의 눈높이를 맞춘다.


- 기 타 : 렌즈의 촛점은 모델의 눈에 맞춘다.(기본~)

사용자 삽입 이미지


< 요점정리 >

- 인물사진은 행복한 모습을 인상깊게 담아야 한다.


- 인물사진은 모델의 핸디캡을 감추어주고 풍부한 인상을 담아야 한다.


- 표정을 살리려면 배경을 죽여야기 때문에 장초점렌즈를 쓰거나 조리개심도를 낮게 한다.


- 배경을 죽이기 위해 음양의 차를 이용.. 검게 또는 하얗게 처리하는 방법을 연구 한다.


- 촬영시 항상 히든카드를 남기기 위해 같은 표정을 세 컷 정도 찍어준다. (눈 깜빡임 조심~)


-잘 나온 사진도 상대방이 싫어할지 모르니 결과물은 섣불리 판단하지 말고 여러장을 제시하여  본인이 골라 갖도록 하며 실패한 사진은

 보여주지 않아야 한다.(증거익멸의 원칙)

사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
 
개발 완료된 '통합관제시스템' 입니다.

웹으로 구현되어있구요. 서버내부에 프로그램이 있어서 내부적 소켓통신으로 하위
클라이언트 데이터나 명령단을 실행 하도록 되어있습니다.

보통은 관제 시스템이라고 하면 CS모듈 설치해서 운영을 하는 경향이 있으나,
운영에 특성상... 언제 어디서라도 문제가 발생시 네트워크 가능 지역에서 웹상에서 원격으로 처기가 가능하도록 설계된 '웹 통합관제 시스템'입니다.

구축당시 140여대의 임베디드 컴퓨터가 관리되고 있으며,
추후 더 늘어 날것으로 봅니다.

1차 개발...
현재 위 개발된 관제시스템은 1인 개발로 대략 4개월 가량 구축 기간이 소요됬습니다.


- 개발환경
참여인원 : 1인
사용 DB : MS-SQL 2000
사용언어 : PHP 5.2
운영체제 : Windows 2003
웹서비스 : IIS 6.1
참으로 오랜만에 카메라르 잡고 사진을 찍어 보았습니다.

처음으로 가보았던 광화문 광장...
그리고 빛의 축제로 보기엔 조금 아쉬운 부분이 였던 청계천...

지금 그 현장 속으로 함께 둘러 보실까요...? ㅎㅎ

사용자 삽입 이미지

광화문 광장 중앙에서 바라본... 도로에요...
양옆에... 도로를 끼고 중앙에... 광장이 있어서 그런지...

광장 가장 자리에 서면 차들이 쌩쌩 지나가서... 조금 무섭긴해요...
보세요... 무섭게 달려오죠...?

사용자 삽입 이미지

빛의 축제이기에...
트리에 걸려 있는 조명이...

쨍하게 빛을 내고 있어요...
하나하나 보고 이쁘지만... 여러개를 같이 보면 뭔가 아쉬운 빛 축제 같다는 생각이 조금 들죠...

사용자 삽입 이미지

요~기는요~
해테(?) 광장으로 가는 내리막 길이던가요...?

정말 싼지 타는... 조명 들 뿐이였습니다...ㅜ,.ㅠ
차라리 작년 빛 축제에서 쓰던 조명들을 전시해주시지...ㅜ,ㅡ.ㅠ

사용자 삽입 이미지

이게이게... 무슨 건물이더라...^^;; ㅋㅋ
건물 조명이 더~ 이뻐요...*_*;;

사용자 삽입 이미지

벽에는 우리가 초등학교때 배움의 기초가 되던 '기억','니읏','디긋'...
등등등 초창기 문자가 세겨져 있네요... ㅎㅎ

사용자 삽입 이미지

트리에 걸려 있는 별...
하늘의 별을 따다가... 여기에... 살포시...

사용자 삽입 이미지

아쉽게 광화문 광장의 빛 축제를 보고 청계천으로 이동 했다죠...
아직 많이 춥습니다...ㅜ,.ㅠ
얼음이 꽝꽝... 얼었어요... 나무 가지가 힘겹게...

무거운 얼음 옷을 입고 있네요...

사용자 삽입 이미지

그나마 청계천에 있는 저 조명들이 더 이쁘더라구요~
뭐 조명이 이게 다긴 하지만... ㅎㅎ^^;;

조명빛에 컬러 사진만 어울릴줄 알았는데...
흑백도 나음 운치 있네용...^^;;

사용자 삽입 이미지

마지막으로....

2010년 한 해도...
정말 사진의 문구 처럼... 내인생이 술술 풀렸으면 좋겠네요...

다들 모두 행복하시구요~ 복받으세요~
날씨가 조금 풀리긴 했는데... 아직도 많이 추워요~

사진찍다가... 손가락 관절이 얼어 버리겠네요...ㅡㅡ;
감기조심 하시구요... 추워 조심하셔요....^^*

Script.aculo.Us에서는 드래그앤드롭(Drag N Drop)을 쉽게 구현할 수 있는 클래스가 있는데 Draggable(Droppables)과 Sortable 2개의 클래스이다. 둘다 드래그앤드롭을 위한 클래스인데 Draggable는 객체를 드래그 가능하게 만드는 클래스이고 Sortable은 드래그앤드롭이 되면서 정렬이 가능하도록 하는 클래스이다. 정렬을 하고자 한다면 Sortable을 사용하는 것이 편하고 여기서 정리하려는 것은 Sortable이다.

Sortable.create('id_of_container',[options]);

위 코드이 Sortable 을 사용하는 기본 문법이다. id_of_container에 드래그앤드롭을 가능하게 할 엘리먼트의 id를 주고 options에 드래그앤드롭에 대한 옵션을 JSON형태로 던져주면 바로 정렬가능한 드래그앤드롭을 사용가능하다.  id_of_container이라고 쓴 것처럼 드래그할 객체가 아니라 드래그할 객체들을 담고 있는 container의 id를 주면 되고 options는 안주면 디폴트옵션으로 동작하게 된다.

예를 들어

  1. <ul id="contailner"> 
  2.     <li id="dnd_1">Test 1</li> 
  3.     <li id="dnd_2">Test 2</li> 
  4. <ul> 
  5. <script type="text/javascript"> 
  6.     Sortable.create("contailner");  
  7. </script> 

위와같이 작성하면 dnd_1, dnd_2객체가 바로 드래그앤드롭이 가능하다. (이 얼마나 간단하단 말인가. ㅎㅎㅎ)

이제 옵션을 보자. 자유롭게 사용하려면 옵션을 주어서 원하는 형태로 사용하여야 한다. 옵션은 Draggable과 공통적인 것도 있고 아닌것들도 있다.(아직 Script.aculo.us의 API리스트는 솔직히 좀 아쉽다.) API와 내가 테스트해본걸 바탕으로 적었지만 빠진 부분이 있을수도 있다.

tag : 여기에 HTML태그명을 주면 해당 태그에 대해서 Sortable이 동작하게 된다. 디폴트는 li태그이고 container아래 한단계 밑까지만 동작한다. 쉽게 말해 li안에 li가 또 들어있다고 하더라도 안에 있는 li에는 드래그앤드롭이 동작하지 않는다. Block엘리먼트에만 가능하고 table같은걸 블가능하다.

only : 이 옵션을 주고 여기서 class명을 지정하면 tag에 설정한 태그명이라고 할지라도 only에서 준 class명과 맞지 않으면 드래그앤드롭이 동작하지 않는다.

overlap : 가로 리스트는 horizontal, 세로 리스트는 vertical로 설정하라는데 정확한 동작은 잘 모르겠다.

constraint : horizontal, vertical, false 3가지가 있고 드래그앤드롭의 방향을 설정한다. horizontal/vertical로 설정할 경우에는 가로/세로로만 이동하며 false나 옵션을 주지 않았을 경우에는 어떤 방향이든지 이동이 가능하다.

containment : 이곳에 container 리스트를 지정하고 이곳에 지정한 container간에는 드래그앤드롭이 가능하다.

handle : 드래그앤드롭을 할 엘리먼트에서 전체가 아닌 특정부분만을 이용해서 드래그앤드롭이 가능하도록 하고 싶을때 handle이용한다. 이곳에 id 혹은 class명을 지정하면 핸들러로 사용할 수 있다.

delay : 드래그앤드롭으로 반응할 시간을 미리세컨단위로 설정할 수 있고 기본은 0이다. 너무 민감하게 반응하지 않기를 바랄때는 delay의 숫자를 크게 지정할 수 있다.

dropOnEmpty : true로 설정하면 container가 비어있을때도 drop이 가능하다. false일 경우에는 container에 다른 드래그앤드롭객체가 있을때만 드롭이 가능하다. 기본은 false

scroll : 기본으로는 지정되어 있지 않으며 window로 설정할 경우에는 드롭할 container가 화면밖에 있을경우에 드래그객체가 화면밖으로 나가면 자동으로 스크롤한다.

scrollSensitivity : 기본은 20이고 스크롤이 되게 하기 위해서 넘어가야하는 크기를 지정한다.

scrollSpeed : 스크롤 속도이고 픽셀로 지정하면 기본은 15이다.

onChange : 콜백함수로 드래그앤드롭을 시작하는 등 객체의 위치가 변경되면 계속 발생한다.

onUpdate : 콜백함수로 드래그앤드롭을 하여 실제 순서의 변화가 생겼을때만 발생한다.

 





아주 간단한 예제를 만들었다. 동작과 소스코드를 보면 쉽게 이해할 수 있을꺼라고 생각한다. 최근 작업을 하면서 몇가지 주의점(?)을 발견한 거라면...

  • container의 id에 언더바(_)가 들어가면 동작하지 않는다.
  • Sortable.serialize를 사용하려면 드래그앤드롭 엘리먼트의 아이디가 언더바(_)로 이어져야 한다. 언더바 뒤쪽에 있는 문자만 표시된다.
  • IE에서는 왼쪽 콘테이너에서 오른쪽 콘테이너로 갈때 드래그엘리먼트가 컨테이너 뒤쪽으로 가는 문제가 생긴다. 드롭하기 위해서 반이상 넘어갈 경우에는 위로 올라오는데 이건 IE의 z-index버그때문에 생기는 문제로 예상되는데 정확한 해결책은 아직 찾지 못했다.
Sortable.serialize는 해당 컨테이너에 있는 드래그앤드롭객체를 순서대로 보여준다. 이것은 위치정렬을 한 후에 Ajax등을 통해서 새로 정렬한 위치를 서버에 저장할 수 있도록 하는 역할을 한다.

그리고 예제의 소스를 보면 알겠지만 기본적으로는 드래그앤드롭을 할 때 해당위치의 공간은 표시하지만 따로 표시되지는 않는다. 이 문제를 해결하기 위해 더미 엘리먼트를 만들었다. OnChage가 발생할 때 해당 엘리먼트의 바로 앞쪽에 더미엘리먼트를 만들어서 insert한다. 이렇게 함으로써 드롭했을때 떨어질 위치가 명시적으로 보일수 있도록 하고 OnChange는 계속 발생하기 때문에 처음에 더미엘리먼트를 지우고 다시 넣어주기 때문에 다른 컨테이너로 넘어가는 순간 더미엘리먼트도 적절하게 이동된다. 깔끔한 해결책은 아닌듯 하지만 일단 동작은 한다.
항상 뭘하다보면 자기 중심적으로 생각하게 되는것 같습니다. 상대방의 입장에서 생각해야 되는데 그게 쉽지 않습니다. 더군다나 웹에서는 상대방(?)의 대한 정보가 보통은 전무한 편이라서 더 자기중심적으로 생각하게 되는 경우가 많죠.

초창기에 개발에 대해 전혀 모를때 인터넷에 있는 많은 정보들을 볼 때 가장 답답한 부분중 하나가 설명하는 사람이 당연히 내가 알꺼라고 생각하고 그냥 넘어가는 부분을 정작 나는 몰라서 그사람의 설명이나 소스까지 도달하기도 어려웠다는 것이지요. 머 그렇다고 항상 모든 것을 다 설명한다는 것도 어렵겠지만 블로그에서는 최대한 자세하게 쓰려고 하고 있기는 하지만 좀 초심을 잃어버린 생각이 들었습니다. 그리고 새로 알게된걸 항상 포스팅으로 하게되지는 않고 그러다 보면 포스팅타이밍을 놓쳐버린 것들도 많죠.



쿡이님의 질문을 받으면서 생각난 김에 JS로 엘리먼트를 다룰때 가장 많이 사용할 추가, 삭제에서 prototype.js가 지원하는 부분에 대해서 다시 한번 정리합니다.

prototype.js에는 Element 클래스가 있습니다. HTML의 DIV, INPUT, LI같은 엘리먼트에 관련된 클래스입니다. Element의 API문서 를 보면Element클래스가 지원하는 많은 메서드를 볼 수 있습니다. 엘리먼트와 관련된 속성에 대한 것이라든지, 추가, 삭제, 생성등등의 기능을 지원하고 있습니다.




일반적인 방법
  1. <div id="testDivision" name="testDivision"> 
  2.     <a href="#">Link 1</a> 
  3. </div> 

간단한 HTML을 가지고 보겠습니다. 엘리먼트를 핸들링할때 JS에서 제공하는 2가지방법이 있습니다. innerHTML을 이용하는 방법과 DOM을 이용하는 방법입니다.

일반적으로는 innerHTML을 이용하는 것이 간단하면서도 편하기 때문에 많이 사용합니다.

  1. var htmlStr = "<a href='#'>Link 2</a>";  
  2. var obj = document.getElementById("testDivision");  
  3. obj.innerHTML = obj.innerHTML + htmlStr;  

사실 설명할 내용도 없긴 하지만 innerHTML은 이름 그대로 해당 엘리먼트의 안에 있는 HTML을 의미하고 있습니다. 내부 HTML을 새로지정하면 새로 지정하는 내용으로 replace가 됩니다. 기본의 innerHTML값과 새로추가할 HTML스트링을 문자열로 이어붙혀서 다시 innerHTML으로 할당해서 HTML의 구조를 동적으로 바꾸는 것입니다. js를 실행하면 HTML이 아래와 같은 모습이 됩니다.
  1. <div id="testDivision" name="testDivision"> 
  2.     <a href="#">Link 1</a> 
  3.     <a href="#">Link 2</a> 
  4. </div> 


두번째 방법은 DOM입니다. DOM은 Document Object Model의 약자로 표준이 정해져 있고 대부분의 브라우저가 지원하고 있습니다. 엘리먼트를 추가/삭제같은 DOM Level 2 에 정의가 되어 있습니다.(DOM Level 1에서 추가확장되어 현재는 대부분 Level 2를 지원하고 있는 것으로 알고 있습니다.) 이름대로 DOM을 다루기 위해서 만들어진 것이기 때문에 다양한 메서드를 제공하고 있고 좀 더 세련된 느낌의 사용법을 가지고 있습니다.

  1. var elem = document.createElement("a")  
  2. elem.setAttribute("href", "#");  
  3. elem.appendChild(document.createTextNode("Link 2"));  
  4. document.getElementById("testDivision").appendChild(elem);  

같은 기능을 DOM으로 구현한 것입니다. 엘리먼트 만들고 속성추가하고 TextNode만들어서 A엘리먼트 안에 넣은 다음에 추가한 것입니다. 메서드로 다양하게 다룰 수 있기는 하지만 저 간단한 소스도 소스로는 꽤 복잡하게 작성되고 있고 한눈에 어떻게 동작할 것인지를 파악하기가 쉽지 않고 복잡한 HTML의 경우에는 훨씬 복잡하게 됩니다. innerHTML에 비해서 특정엘리먼트만 지우는 remove관련 메서드도 지원하고 있기는 하지만 브라우져의 따라 DOM Level 1/2의 지원차이가 있습니다.

DOMDom Test Pages 에서 지원여부를 테스트해 볼 수 있고 PPK의 W3C DOM Compatibility 에서 브라우져별 차이를 파악할 수 있습니다.




prototype.js 이용하기
당연히 prototype.js를 로드해야하고 그 후에 다음과 같이 사용하면 됩니다.
  1. $("testDivision").insert("<a href='#'>Link 2</a>");  
  2. $("testDivision").update("<a href='#'>Link 2</a>");  
  3. $("testDivision").remove();  

너무 간단한 코드라서 그냥 한 코드블럭에 다 썼습니다. 첫줄 insert만으로 위에서 설명했던 기능과 동일한 기능을 합니다. update는 replace의 기능을 합니다. 2번째 줄을 실행하면 Div안에 link2만 존재하게 되겠고 remove를 실행하면 testDivision DIV자체가 삭제되어버립니다. 간단한 기능만 소개했지만 그외에도 Element관련 다양한 기능 을 제공하고 있습니다. prototype.js내부적으로 크로스 브라우징을 지원하기 때문에 브라우저호환에 대해서 큰 걱정없이 사용할 수 있습니다.

추가적으로 좀 더 세밀하게 컨트롤 할 수 있는 기능을 제공하고 있습니다.
  1. $("testDivision").insert({top:"<a href='#'>Link 2</a>"});  
  2. // 결과  
  3. // <div id="testDivision" name="testDivision">  
  4. //       <a href="#">Link 2</a><a href="#">Link 1</a>  
  5. // </div>  
  6.  
  7. $("testDivision").insert({bottom:"<a href='#'>Link 2</a>"});  
  8. // 결과  
  9. // <div id="testDivision" name="testDivision">  
  10. //       <a href="#">Link 1</a><a href="#">Link 2</a>  
  11. // </div>  
  12.  
  13.  
  14. $("testDivision").insert({bottom:"<a href='#'>Link 2</a>"});  
  15. // 결과  
  16. // <a href="#">Link 2</a>  
  17. // <div id="testDivision" name="testDivision">  
  18. //       <a href="#">Link 1</a>  
  19. // </div>  
  20.  
  21. $("testDivision").insert({after:"<a href='#'>Link 2</a>"});  
  22. // 결과  
  23. // <div id="testDivision" name="testDivision">  
  24. //       <a href="#">Link 1</a>  
  25. // </div>  
  26. // <a href="#">Link 2</a>  

위 코드처럼 JSON형태로 사용해서 insert되는 위치를 지정해 줄 수 있습니다. 사용할 수 있는 position값은 top, bottom, before, after입니다.  이걸 이용하면 쉽게 원하는 위치에 엘리먼트의 삽입/삭제가 가능합니다.

좀 복잡한 HTML의 경우에는 script.aculo.us의 Builder을 사용하는 것도 괜찮은 방법 같습니다.
Update를 하는데 그냥 WHERE조건으로 하는게 아니라 다른 테이블과 JOIN을 해서 그 값으로 현재테이블의 값에 넣어야 할 필요가 있어서 사용하게 되었다. 평소에 쓰던 방식과 좀 달라서 어려웠었다.

  1. BEGIN TRAN  
  2.     UPDATE table_1  
  3.     SET column1 = column2  
  4.     FROM table_1 AS A  
  5.     INNER JOIN table_2 AS B  
  6.     ON A.column3 = B.column4  
  7.     INNER JOIN table_3 AS C  
  8.     ON B.column5 = C.column6  
  9. ROLLBACK TRAN  

컬럼수가 많아서 좀 복잡하긴 한데 그냥 내가 쓴 쿼리를 그대로 써 넣었다. (업데이트가 제대로 될지 몰라서 트랜잭션을 걸었다. ㅎㅎ)

컬럼수가 좀 많고 복잡해서 이해가 어려울것 같다. 일단 JOIN이 2번 된 형태이다. table_1에 있는 column1을 table_3에 있는 column2의 값으로 모두 입력해 넣으려고 한 쿼리이다.

일단 업데이트문 자체는 그대로 써주고 그 이하는 SELET문에 쓰는것처럼 FROM절을 사용한다. table_1을 table_2와 JOIN하고 그걸 다시 table_3와 JOIN해서 table_3에 있는 column2를 사용하는 것이다. 이름이 겹치지 않아서인지 column1과 2 따로 별칭을 써주지 않아도 되었다.

평소에 쓰던 쿼리들과는 형태가 좀 다른 형태라 이해가 쉽지 않지만 이렇게 쓰면 Update에 JOIN을 해서 사용할 수 있다.
MS SQL 서버 2000으로 수업프로젝트를 진행하는 가운데 원격컴퓨터에서 서버로 접근이 되지 않아서 고생을 꽤나 했다. 코딩도 바빠죽겠는데 별게 다 신경쓰이게 해서....

SQL 서버가 있는 PC에 2대의 PC가 접근했는데 1대는 문제없이 접근했는데 1대는 서버를 찾을수가 없었다.

항상 트러블슈팅은 어려운 거지만 여기저기 찾아보다가 서비스팩으로 해결했다. 시간이 급해서 정확히 어떤 버그인지까지는 확인하지 못했지만 서비스팩을 업해주지 않으면 생기는 문제이다.

난 전에 SP4가 문제생긴게 있어서 SP3로 업해주었더니 쉽게 해결 할 수 있었다. ㅡ..ㅡ

다른 조에선 비슷한 문제를 SP4를 깔아서 해결했으니 3이든 4든 업데이트 해주면 원격연결 문제는 쉽게 해결할 수 있으리라 생각된다.


덧) 추가적으로 SQL서버를 사용할때 서버이름으로 접근을 하게 되는데 이 이름은 내컴퓨터에서 속성을 눌러서 바꾸어 줄 수 있다.

사용자 삽입 이미지


전체 컴퓨터 이름이 SQL 서버도 사용하는 이름이다. 이름이 맘에 들지 않는다면 변경에 들어가서 바꾸어주면 되고 이름은 리부팅을 해야 적용이 된다.

그리고 이름으로 잘 찾아지지 않을 때는 로컬에서는 이름대신 그냥 .(쩜)을 찍어주면 로컬에 깔려있는 SQL Server에 접근할 수 있다.

+ Recent posts