20대들아, 우리나라 미래는 필리핀이다.

지금이 딱 과도기다.

지금처럼 아무리 돈을 투자해서 공부하고, 노력해도, 제대로 된 곳에 취직하기가 거의 불가능에 가깝다는 걸 알면서도, 미친듯이 자기계발을 위해 돈을 투자하는 시기는 앞으로는 절대 두 번 다시 오지 않는다.

지금은 서민이라도, 빚을 내서라도, 어떻게든 스펙 올리겠다고 수 백 만원의 돈을 투자해서 과외하고, 학원 다니고, 어학연수까지 갔다오고, 별 ㅈㄹ을 다 하지? 하지만, 이게 다 무의미한 짓이란 걸 하나 둘 깨닫기 시작하고 있다.

그 다음부턴, “어차피 노력해도 안 된다..”라는 생각이 사회를 지배하기 시작한다. “애초 출발선에서 내가 가지고 있는 현금이 없으면 어차피 안된다..”라는 생각이 지배하기 시작한다는 거다.

그리고 그 가속도는 급격히 증가할 거다. 그때부턴 모든 보통 사람의 삶이 도박판이 된다.

사람들은 자본주의 사회에 눈을 뜨기 시작했고 상위 1%가 되지 않으면 결국 ‘노예’일 뿐이란 걸 자각한다.

“나는 공장에서 기계처럼 일하는게 행복해 ^^ 나는 우리기업이 좋아^^”라고 자위하는 그 마음조차도 자본을 가진 측에서 “항상 긍정적인 마음을 먹어^^ (노가다나 평생 열심히 하며 아랫층에서 나를 위해 일해^^)” 라고 세뇌시킨 걸 깨달은거지..

그리고 시크릿 등의 자기계발서를 통해 상상하고 원하면 모두 이루어진다고 생각하면서 자기는 절대 노예들이 하는 노동을 하지 않을 것이며 반드시 상위 1%가 될거라 상상하고 믿는다..

그렇게 자발적 니트족이 되고, 매주 로또를 사면서 자기가 부자가 되는 상상을 한다..

이게 현재 흐름이다..

이렇게 되면 당연히 사회는 혼란스러워 진다..

노예들은 노예들이 있는 위치에 있어야 사회가 안정되게 유지되는데 노예들이 ‘더이상 난 노예짓 안할거야’ 하면서 여기저기 하급 직업에서 그만둔다..

그리고 노동력을 제공해야 할 노예들이 하급 노동을 거부하고 있다..

지금 고위층에서는 요즘 청년실업률이 높은 이유가 '대학 나온 애들 눈높이가 높아서'라고 한다. 돌려서 말한 것이지 실제로 직설적으로 표현하자면 “노예신분인 니들이 어디서 겉멋만 들어서 높은층에 오려고 하느냐.. 니 꼬라지를 알라.. 노예들은 노예들의 일터로 가서 일을 해라” 라는 의미다.

하지만 지금 분위기와 모든 통계를 다 봐도.. 애들이 자본주의 사회에서 1% 이외는 모두가 노예라는 걸 분!명!히! 자각하고 있다. 우선 지금 대부분 하급 직업엔 아예 가려고 하지를 않는다. 노예인 것을 아니까..

그리고 예전 같았으면 자신이 취업이 안되는게 "아 내가 노력을 안해서 그래" 라면서 자책을 하고 그게 심해지면 우울증이 되고 못견뎌 자살하는 스토리였다.

예를 들어 친구가 “대학 등록금 때문에 정말 죽을 것 같다”라는 고민을 털어 놓으면 과거였다면 “니가 공부 열심히 해서 장학금 받으면 되잖아. 네가 노력을 안해서 그래. 더 공부 좀 해봐” 라고 대답했었다..

구조적인 문제를 판단하는게 아니라 모든 것을 개인의 노력탓으로 생각했었다. 예전엔..

근데 이젠 "내가 발버둥 쳐도 넘어갈 수 없는 엄청난 벽이 있다"라는걸 인식하기 시작했다..

부모님이 아무리 돈을 대줘도 매학기 400만원이 넘어가는 등록금은 뭔가 심각한 문제가 있다는걸 인식했다는거다.

이런 문제 인식이 확산되고 또 어느정도 공론화 된 것은 SKY의 몰락과도 연계되는데, 모두를 이기고 대학 입시의 위너가 된 SKY생들 조차 이제 취업 현장에서 버림 받으니 SKY생/비SKY생 간의 벽이 무너져 대학생들간의 공감대가 어느정도 형성되고 있다는 거다.

2009년 연세대 졸업생 가운데 49%가 비정규직으로 취직했다는 연세춘추의 기사에 모두가 경악을 했었다.

물론 아직은 문제 인식의 공감대 보다 ‘하지만! 나부터 살아야 한다!’ 라는 공포감이 훨씬 강하다..

근데 이들은 예상치 못한 대응을 하기 시작했다..

그건 바로 노동을 죽어라 해서 노동력을 제공해줘야 할 세대가 노동을 하지 않고 스스로 니트족이 되는 경우다..

한평생 중산층과 빈곤층의 경계선에서 위로 아래로 왔다리 갔다리 하면서 노동력 제공 -> 그 제품을 소비 -> 경제 성장.. 을 주도 해야할 세대들이 일하지도 않고 일할 의지도 없고 공부할 의지도 없다며 아예 니트족이 되는거다..

그리고 애를 낳지 않는다.. 애를 낳아줘야 그 노예들의 애들도 또 노예가 되어 기득권층이 늙었을 때 자신은 자본을 대주고 편하게 노동력을 제공받고 살고 또 그 애들이 월급 받은걸로 매달매달 펀드도 사야 기업 주식도 올라가고 월급 받은걸로 차도 사고 뭐도 사고 이것저것 소비를 해줘야 경제가 순환하는데 도무지 애를 낳지 않아서 이대로 가다간 초고령화 사회가 되어 경제구조 자체가 무너질 지경이다..

다급해진 기득권층은 낙태 단속도 하고 보육비도 대주겠다고 신문광고도 하고 난리지만 “잉여 인생, 나로서 충분하다. 내 선에서 끝낸다. 자식까지 고통을 줄 순 없다..” “아직 로또가 안됐으니.. 로또 되면 낳아야지 ^^”라며 나쁜 의미든 좋은 의미든 출산을 거부하고 있으며, 인간의 종족 번식 본능까지 스스로 죽여버리는 놀라운 상황인거다..

이런 식으로 초고령화 사회로 가면 디플레이션+물가 하락이 일어나서 현금 가진 사람이 최고의 부자가 되어 노동하는 사람, 공부하는 사람은 바보가 된다.. 꿈을 가지고 기업을 만들고 주식에 투자를 하고 이런 사람도 바보가 된다.. '현금'이 최고니까..

이러면 대한민국의 미래는 암울할 수 밖에 없다..

이 예상치 못한 대응 방식은 개미떼들의 끝없는 노동력과 소비력을 제공받아야 할 기득권층을 당황하게 하고 있는데

이 니트족은 류의 자기계발서와 절묘하게 맞물리며 노력하지 않아도 심상화 만으로 성공할 수 있다며 매일 명상한다며 자발적으로 백수가 된 사람들 반과 (로또가 되는 그날까지 기다린다 계속..) 노력을 해도해도 안되니까 그냥 포기해 버린 사람들 반이다..

자포자기한 심정으로 매일 적대감으로 세상을 돌아다니거나 아님 실제론 빈곤층에 가까우나 마음만은 재벌 2세라며 심상화만 매일 하면서 하루종일 아무것도 안하고 노는, 경제 분야 그 어느 소속에도 끼지 않는 니트족들…

이러니 당연히 사회는 혼란스러워 진다.. 상위 1%의 기득권을 가진 자는 그래서 그들과 접촉하는 걸 매우 꺼린다.. 그리고 혹시라도 그 기득권에서 자신이 떨어져 내려올까봐 그것을 몹시 두려워 한다..

따라서 이제 리스크가 큰 투자행위는 중단한다.. 정기예금에 돈 넣어두고 이자 받아먹으며 살기 시작한다..

그리고 잉여자금으로 브랜드 아파트를 사고 그들만의 성벽을 쌓아 외부 시민과의 접촉을 차단한다..

외고나 국제중 같은 그들만의 자식들이 모인 학교에만 애를 보낸다.. 끼리끼리 논다는 거지…

독서실도 이제 브랜드 아파트 내부에 있다.. 다른 아파트에 사는 애들과 어울리지 마라 이거다..

내가 사는 집의 옆집 사람, 윗집 사람, 아랫집 사람이 돈이 없는 사람인 것은 대단히 위험한 주거 공간이니 (언제 붕괴될 지 모르는 곳이니) 돈 많은 사람들과 끼리끼리 무너지지 않는 높은 성벽을 쌓고 그 안에서만 살겠다 이거다..

헬스장, 수영장, 노래방, 편의점 모두 브랜드 아파트 내부에 설치해서 그들끼리 귀족처럼 생활한다..

우리 자식들을 임대 아파트 사는 애들, 빈곤 주택가에 사는 애들과 어울리게 할 수 없다..

그런 생각이 만들어 낸 도시가 서울 강남, 대구 수성구, 부산 센텀시티다…

거기 있는 초고층 타워형 아파트와 프리미엄 브랜드 아파트들..

모두 그런 심리로 지어진 아파트들이다..

너도 나도 저기 가려고 가격도 엄청 비싸졌다..

근데 앞으로 저런 도시들의 부동산 가격도 많이 내려갈거다..

이미 수많은 경제전문가들은 이명박 정부 내에 부동산 가격이 반토막 날 것이라는 점을 예견하고 있다.

왜?.. 이제는 현금이 먼저인 시대가 됐다…

따라서 리스크가 큰 곳에 자금을 놔두지 않을거다 이제..

현금이 최고니까.. 따라서 저런 부동산은 잉여현금으로 살 수 밖에 없다..

따라서 자금력이 되는 극소수를 제외하고는 앞으로 계속 고급 부동산을 팔아 현금화 할거다…

당장 내일이 두려운 시대에 눈에 보이지 않는 불과 32평~62평의 장부가치에 모든 걸 걸고 살 수는 없다는 거다..

따라서 무리하게 강남에 프리미엄 아파트를 샀던 사람은 그 집을 팔고 현금을 확보한 후 대구수성구나 부산센텀시티의 트럼프 월드 같은 곳으로 갈 확률이 높다..

은행에서 1~2억 융자 받아서 8억짜리 아파트를 샀는데, 그 아파트가 2년내로 5억이 된다고 예상이 된다면.. 미쳤다고 그 아파트를 계속 갖고 있을 이유가 없다. 그래서 지금 강남 아파트들이 매물 천지에, 살려는 사람이 없는거다.

역시 마찬가지로 무리하게 대구수성구나 부산센텀시티의 프리미엄 아파트를 샀던 사람은 그 집을 팔고

현금을 확보한 후 창원시티세븐이나 기타 다른 지방 프리미엄 아파트로 이사갈 확률이 높다..

주식? 당연히 하락한다..

이제 주식도 폭탄 돌리기다..

전체적으로 파이가 커지는게 아니라

어떤 종목이 오르고 빠지고 어떤 종목이 오르고 빠지고 한정된 자금으로

폭탄 돌리기 하는 거다..

왜? 인구 구조상 대세 상승할 수가 없는 구조다.

돈을 조금씩 가진 수많은 개미떼들이 꾸준히 매일 안정적으로 월급을 쑤셔 넣을 때 주식은 대세 상승한다..

이런 안정적인 수급이 들어오지 않는다면 주식은 결국 폭탄 돌리기를 하는 악순환에 빠지고 금융 시장에 대한 불신이 심해지면 펀드 시장도 쇠퇴할 거다..

그럼 그나마 꾸준히 펀드 매입 했던 사람들도 펀드 시장에서 떠나면 금융 시장은 무너지는 거다..

장기적으로 서서히..

은행 예금? 이젠 일반 은행에도 안넣을 거다..

왜? 망할까 두렵거든..

(그래서 한나라당이 지금 우리은행이랑 KB국민은행 합병을 추진하고 있는거다.

서민들이 은행을 신뢰해줘야 노예층이 계속 든든히 받춰주거든)

서민들은 무조건 안전 지향이다 이제..

그래서 우체국 예금에 넣는다.

일본 정부가 너도 나도 온 국민이 우체국에만 예금을 넣으니까

우체국을 아예 민영화 시켜버려듯이

(국가 소유의 우체국에 예금된 돈들은 투자 금액으로 쓴다던지 대출금액으로 쓴다던지 하는게 제한되기 때문에

말그대로 그냥 수많은 돈들이 순환되지 않고 그대로 금고에 머물러 있다는 거..

따라서 극단적으로 우체국까지 민영화 해버렸다..)

한국도 분명 그런 날이 올거다..

하위권에 있는 사람들은 서서히.. 그리고 나중엔 급격히 무기력증에 빠지게 된다.. 왜?

로또.. 매주 사도 안되니까… 극소수만 되니까.. (이건 공부 및 각종 시험과 고시도 마찬가지다.)

주식.. 각종 편의점 알바, 피시방 알바, 서빙, 백화점 감정노동 알바 등 해서 목돈 모아서 해봤자

개미는 무조건 지는 게임이다..

결국 평생 일하는 노예 워킹푸어 밖에 안되니까 결국 자본을 가진 상위층이 되려고 이쁜 여자와 남자는 유흥업에 뛰어든다.. 뛸 외모가 안되는 남녀들은 끝까지 잉여로 남아 시크릿류의 상상만 하며 니트족으로 산다….

그리고 일부는 끝까지 공부하면 이뤄질 수 있다며 죽어라 공부하지만 관문이 지극히 좁은 제로섬 게임에서

역시 극소수만 그곳을 통과하고 나머지는 계속 누적 적체되면서 사회에 대한 불만, 자괴감이 증가한다..

공부나 로또나 똑같다…는 생각.

로또와 달리 공부는 노력하면 다 될거라 생각하지만

이미 구조적으로 확률적으로 현저히 불리한 게임기 속에 자신이 들어가 있다…

이렇게 되면 고소득층과 빈곤층의 방파제 역할, 노동력과 소비력의 중심이 되어야 할 중산층이 텅~ 비어 있게 된다..

(2010년 현재 이건 지주의 사실이 아니던가?)

극심한 빈부격차 국가가 되버리는 거다..

워낙 소수의 사람들만 기득권을 유지하다 보니 유흥업도 소수의 1%룸만 호황하고 나머지는 몰락한다…..

다수의 고객인 재벌 흉내내며 허세부리는 중산층 남자들이 그 비용을 감당하지 못하기 시작하는거지..

그 다음부턴 뻔하지. 이제 여자들은, 어떻게든 돈 많은 선진국 사람들과 결혼하기 위해 혈안이 될거고..

유흥업의 주고객은 외국인이 될 가능성이 높다.. 중산층 한국 남자들은 그냥 ㅄ 취급 받기 시작하는거고..

(최근 결혼정보업체 VVIP 된장녀들은 외국 유학경험이 없는 한국남자는 아예 논의의 대상에서 제외시킨다고 하더군.쩝)

이게 필리핀의 현 모습이자 우리나라의 미래다...

우리나라 국민 근성이 얼마나 위대한데 우리나라가 망할 것 같냐고 반문할 수도 있다..

근데 망하지 않고 몇 년 성장한다 한들 그것은 예전처럼 모두의 파이가 커지는 발전이 아니라

이제부턴 1%만의 발전이라는 거다..

지금은 과도기다..

요새 돈 있는 부자들은 집, 주식 팔아 현금 장전하고…

없는 애들은 어떤 식으로든 로또 1등이라도 빨리 되려고 개발악중이다…

(근데 지난주 로또 1등은 당첨금이 5억이었다. 세금 떼면 3억. 쥐쥐)

자신만은 반드시 예외가 되려고 계속 발악중인거지…..

지금은 남 신경 쓸 겨를 없이 자기가 먼저 예외의 고지를 밟는게 중요하니까..

어떻게든 나라도 먼저 탈출해서 남이 망하는 걸 산 정상에서 내려봐야 하니까…

그리고, 명문대 지방대 안가리고, 하나둘 문닫기 시작할거다.

실감이 안나나? 70년대에 부산대 하면 알아줬으나 지금 부산대 하면 누가 알아주나?..

이런 식으로 서서히 sky의 위상이 급격히 하락한다… 아니 이미 벌써 하락중이다..

중고생 자녀를 가진 강남 부자들 중에 현재 서울대 보내려고 애 교육 시키는 집 없다…

전부 미국 수능 시험인 SAT 시험 준비시키지 대한민국에 SKY 보내려고 교육 시키는 강남집 없다는 거다..

그럼 그 학력허세의 최상위 주인은 이제 누가 차지하느냐?

막강한 현금력으로 미국 아이비리그 등에 유학 다녀온 최상위층 유학파들이 차지할 가능성이 높다.

이제 돈 없는 애들은 허무함에 빠져 대학도 가봤자 뭐하냐 하는 심정으로 안간다…

SKY가도 이제 개천에서 용 못된다..

죽어라 공부 해서 아이비리그?

돈이 없으니 공부하는 과정도 엄두도 안나고 행여 합격 하더라도 돈이 없으니 사실상 불가능이다..

개포동 SAT 학원은 여름방학 단기특강이 2달에 800만원이라고 한다.

EBS가 있다고? EBS에서 SAT강의 하는 날이 올까?

SKY가 몰락하면서 서민층에서 상위층으로 계급 이동을 가능하게 하는 거의 사실상 유일한 방법도 사라져 버렸다..

그럼 이제 SAT 시험 치면 되겠네 라고 생각할수도 있다..

이렇게 생각해보자.. 지금까지 기득권층의 주장은 SKY대학 별거 아니다..

초중고 공교육 열심히 듣고, EBS 들으면 충분히 누구나 갈 수 있다..

그래, 맞는 말일수도 틀린 말일수도 있다..

근데 이제는 SKY가 아니라 SAT가 되었다..

니들이 부품이 아니라 사용자가 되려면 이제는 SKY가 아니라 SAT에 가야 되는데 아직도 저 논리가 먹힐 수 있을까?..

대한민국이란 나라의 초,중,고 공교육에서 미국 SAT 입시를 가르친다는게

상식적으로 그 누구라도 납득할 수 있는 교육일까?

못한다.. 그럼 EBS에서 SAT 입시를 가르칠까? 못한다..

행여나 모두가 미쳐서 한국 학교에서 SAT수능 교육과정으로 가르치자!! 한들

지금 교육권력을 잡고 있는 한국의 사범대 출신 교사들이 가르칠 수나 있을까??

그럼 SAT 시험 준비하려면?

비싼 학원,, 비싼 과외 받아야 한다..

D 외고, 민사고에서 아이비리그 간 친구들은 고등학교 3년간 자기한테 1억 들었다는 소리를 심심찮게 한다.

이제 공부해도 개천에서 용 못된다는거다…

전국적으론 미비하지만 이미 대치동 강남에선 이런 현상 인식이 광범위하게 퍼져있다..

근데 그들은 별 문제가 없다.. 왜? 돈이 있으니까..

2,3년 재수 삼수해도 앞으로의 10년 후는 지금과 현저히 달라진 세상일 거니까

시간 상관 없이, 모든 아낌 없이 SAT에 투자한다..

이게 전국적인 문제 인식으로 공론화 되면 어떤 해결 방법도 없어진다..

니가 사교육을 싫어하고 공교육을 제 아무리 사랑하는 사람이라도

빈곤층과 중산층이 미국 수능시험 SAT를 치게 한국 공교육과정을

SAT 과정으로 바꾸자!! 라고 당당히 말할 수 있나??

없다..

행여 진정한 로또급 독종이 나와서 합격한다 해도 유학할 돈이 없는 것도 아주 현실적인 문제다..

서서히 변할거다.. 지금은 극히 일부만 그것을 느낄거다..

서울대 나온 애들이 사회에 나가서 “나 서울대 나왔다”라고 하는데 아무도 기가 죽지 않으면

그 땐 이미 이 상황이 현실로 닥쳐온거다..

그럼 어차피 죽어라 공부해서 SKY가도 로또급 확률로 고급 노예가 되거나 아님 아예 백수가 되거나

아님 고급노예가 되어도 몇년안에 쓰이다 버림 받으니 이래나 저래나 답이 안나오는 거다..

선택의 여지가 없으니 더이상 교육권력에 놀아나지 않는 거부 운동까지..

최악의 상황? 발생할 수 있다.. 사회통제 매트릭스 시스템에서 탈출하려는 마지막 발악인거지…

하지만 슬프게도 그 거부할 수 있는 당당함 조차도 집에 돈이 있을 때만 가능한 얘기다..

대부분 겁먹고 할 수 없지.. 그러니 다시 어쩔 수 없이 골방으로 들어가는거다..

근데 이게 시간이 흘러 점점 더 심해질 경우에 애들이 언제까지고 거기 있을까? 하는 의문은 한번 쯤 생각해봐야 한다..

애들이 죄다 도서관에 틀어박혀서 고시 준비하고 대학 준비하고 그래야 시위도 안하고 하는데

이게 이제 유지가 안될수도 있다는 거다..

다 허무함에 빠져버리면...

그럼 허무함에 빠지지 않고 그래도 먹고 살아보려는 애들은

대학도 안가려 하고 대체 뭘 하느냐?

그 애들은 수능 준비 대신에 10대들부터 9급, 순경, 소방, 교도관 준비한다고 난리가 날거다.

어차피 성공 못할거면 한달 벌어 한달 밥값, 똥닦는 휴지값이라도 벌자는 심정으로 공무원 할거다.

지금은 상상도 못할 서울대 출신 7,9급 공무원이 수두룩할 가능성을 배제할 수 없다..

70년대에 부산대 출신 9급 공무원 상상이나 했나? 지금 부산대 출신 9급 널리고 널렸다..

그리고 그걸 하면서 여전히 마음은 시크릿류의 상상을 하며 살거다…

그리고 공무원이 못된 대다수의 사람들은 영원히 스크릿류의 희망고문 당하며 살다 죽거나

음식점 서빙이나 편의점이나 마트나 백화점 등..

즉 자본을 이미 가지고 있는 자들의 노예가 되어 평생 살거나

사회부적응자로 자살하거나 혹은 연대하여 어떤 사회적 문제를 일으킬수도 있다…

최악의 상황은 제일 마지막인거고..

대안? 전체적인 대안은 없다.. 그 누구도 대안을 제시할 수 없다..

왜냐? 이것은 과거의 이념적인 문제랑 차원이 다른 문제기 때문이다..

자본주의가 만들어낸 구조적인 문제가 몇 백년만에 대한민국에서 기형적으로 갑자기 문제되고 있는 상황이니까.

노동절약형 기술은 나날히 발전하고 있고 컴퓨터도 나날히 발전하고 있다..

고급인력100명 쓸 일을 고급인력1명+컴퓨터1대면 다 할 수 있는 세상이 오고 있다..

그리고 기계 장치 쇳덩어리가 사라지고 전자 제품이 인간을 죽일 거다…

노동생산성 향상이 자본주의의 혼란을 야기한 거다.. 이건 앞으로 점점 더 심해질거다..

니들이 지구를 살리기 위해 반드시 상용화 해야 한다고 주장하는 전기차도..

그게 정말 상용화 되면 전세계 자동차 공장의 노동자 70% 이상이 다 해고될거다..

전기차에는 엔진과 변속기 조차 없다..

기존 내연 기관 차에 있는 각종 기계적 물리적 부품들 50% 이상이 줄어든다..

발전하면 할수록 기존 현재의 차에서 부품의 90%까지 줄어든다..

이건 한마디로 기계장치가 아니라 전자제품이라는 얘기다..

거짓말 아니고 사실이다.. 믿기 어렵겠지만..

부품 숫자가 대폭 줄어들어 조립라인 공정이 전폭적으로 줄어들고,

그 조립공정 마저도 이제 기계가 대신 할거다..

생산성 향상(낭비의 최소화), 기술의 진보가 이 세상을 밝게 해줄 것으로 믿고 있겠지만

실제론 노동자의 종말을 초래할거다….

컴퓨터의 등장으로 우린 어려운 계산도 쉽게 할 수 있게 되었다고 좋아했지만

결과적으로 컴퓨터가 고급 인력의 자리까지 빼앗은 셈이 되었다..

지금 20대는 그 컴퓨터의 가장 극적인 피해자다…

화이트 컬러의 일자리와 제조업 일자리까지 모두 컴퓨터가 인간을 대체하면 남은 것은 서비스 업종뿐인데

이는 철저히 감정 노동, 즉 노예임을 스스로 백번 천번 인정하고 자본가에게 한없이 굽신거려야 하는 직업들이다..

백화점, 마트, 음식점 서빙, 편의점, 유흥업 등..

고등학교와 대학에서 배워온 지식들과 꿈들이 아무 쓸모가 없어지고 억지 웃음과 친절(감정노동)만이 남는다..

그 감정노동의 대상은 철저히 자본가가 된다..

그래서 지금 젊은층은 시대가 더 변하기 전에, 이제 완전히 문이 닫히기 전에,

어떻게라도 탈출하려고 발악하고 있다.

‘내가 죽을 지도 모른다’라는 공포감이 극에 달해서 다른 누구를 신경쓸 겨를이 없다..

너도나도 고시공부, 너도나도 마지막 SKY 대열 합류, 너도나도 마지막 노선에 낄려고 정신이 없다.

서로가 서로를 짓밟고 죽이는 상황이 괜히 온게 아니다.

사회 전체적인 대안이 없기에 더욱더 미래는 불안하고 공포스럽다..

하지만 개인적 대안은 있다.. 부모 자산이 많던지 로또가 되는거다.. 로또 되서 현금 10억 이상 가지고 있으면 문제 없다..

결국 혼자서 높은 성을 쌓고(많은 현금, 고급아파트) 외부 잉여와의 접촉을 막고 빨리 탈출하는 방법 밖에는 없다는 거다..

나라 GDP가 올라갔다고 니 인생이 바뀌는 건 하나도 없다..

아직도 대한민국이 발전한다고 자기도 발전할거라 착각하는 사람이 있다면 대단한 착오다..

누군가 올림픽서 금메달 땄다고 역시 니 인생이 바뀌는 건 하나도 없다..

김연아가 금메달 따면 김연아와 광고 맺은 대기업에 호재지 니들 인생에 호재는 하나도 없다..

뉴스에서 보는 온갖 호재 소식들이 사실 너와는 아무 관련도 없고,

뉴스에서 보는 온갖 사건사고 소식들이

사실 너와는 아주 밀접한 관련이 있다는 걸 깨닫는 순간..

김길태 같은 범죄의 대다수가 저소득 주택 빈곤층에서 일어난다는 거..

초등학교 여학생 강간사건과 학교폭력, 발가벗은 중학생 졸업생 동영상 파문 같은 것들이

사회에 불만을 가진 고시원 방화 살인 사건.. 각종 원룸, 오피스텔 강도 강간 사건 등이

당신이 살고 있는 동네에서 일어난다는 걸 깨닫게 되는 순간..

당신은 식은땀을 흘리고 무서워서 잠을 못자게 될 지도 모른다.

결국 기술의 진보와 사회의 발전과 경제적 발전은 앞으로 점점 더 1%가 독점하고

범죄의 노출 등 위험한 것은 탈출하지 못한 정글에 있는 나머지가 모두 감당한다…

지금은 과도기라는거.. 변화는 서서히.. 하지만 냉혹하게.. 다가올거다..

니들은 지금 변화의 중심 한가운데 서있는거다.. 특히 20대들은... 깝깝하지?..

끝.. 

COM을 사용하려면 CoInitialize() 함수를 호출해 줘야 하는데

귀찮다.

끝나면 CoUninitialize() 함수도 호출해 줘야 한다.

이걸 클래스로 생성자에 소멸자에 넣어서 쉽게 편하게 쓰자! 

class CCoInitialize
{
public:
	CCoInitialize(void)
	{
		ASSERT(SUCCEEDED(CoInitializeEx(NULL, COINIT_MULTITHREADED)));
	}
	~CCoInitialize(void)
	{
		CoUninitialize();
	}
};

 

 

출처 : http://www.scmlab.com/lecture/19621



2014년 11월 28일 기준 정상 작동 합니다.!!


저는 연락처, 일정을 모두 Outlook으로 관리하여 Google에 연동한 후 휴대폰으로 동기화 하여 사용하고 있습니다.

(조금 번거롭지만 나름 최적화된 관리 기법이라 생각합니다. ㅎㅎ)


그러다 보니 항상 구글 연락처, 일정, 메모와 동기화가 고민이 더군요..

물론 어둠의 경로로 받은 여러 유로 프로그램도 사용해 봤지만....딱히 와닫는 프로그램이 없었습니다.

Google과 함께 여기처럼 Google apps를 사용하더라도 동기화가 가능합니다.!! (Google Apps Sync for Microsoft Outlook)



그러던 중에 발견한 Go Contact Sync Mod를 소개하고 자합니다.


주소 : http://sourceforge.net/projects/googlesyncmod/


물론 무료라 업데이트가 불확실하지만 최근에 생긴 프로젝트라 당분간은 업데이트가 가능할 것 같습니다.


또한 지난 11월 17일쯤 변경된 Google Calender API V3에도 발빠르게 대응해서 이제 사용이 가능하네요 ^^

(11년 28일 기준으로 3.8.8 beta 버전이 최신입니다. ::  SetupGCSM-3.8.8-BETA3.msi )



위의 그림은 간단한 소개 입니다.!!!


다운로드는 http://sourceforge.net/projects/googlesyncmod/files/?source=navbar


가장 큰 장점은 프로필을 통하여 다중 계정에 다중 선택 (일정, 달력, 혹은 노트 중 선택)을 통한 동기화가 가능하다는 것입니다.

(무료 프로그램 중에서 이런 기능을 가진 프로그램은 많지 않은 것 같습니다.!!!)


참고로 Outlook Calendar, Outook Contacts, Outlook Notes가 각각 Google Calendar, Google Contacts, Google Notes와 동기화가 되네요!!!


저는 지금 Outlook 2010을 사용 중인데 2013도 무리 없이 동기화가 가능할 것이라고 보여집니다.


더 이상 동기화는 고민하지 마시고!! 이 프로그램을 사용 해보세요




출처 : http://www.scmlab.com/lecture/19621

3.2. Contrast Measure

A good contrast measurement should have enough discrimination ability over image sequence. As

mentioned previously, various contrast measurements have been introduced and investigated in passive

AF systems. The Contrast Measure based on Squared Laplacian (CMSL) yields good performance in

terms of accuracy and unimodality [4,6,11]. It can be given as follows:





where G(x, y) is computed by:





where I(x, y) is the intensity value of an image pixel at location (x, y), the parameters J and K are the

height and width of focusing region in the image over which the contrast is evaluated.

However, under low light conditions, the higher frequency content in a focused image is just a little

more than that in the corresponding defocused or blurred image. A focused image obtained from low

light conditions possesses a small contrast value and it may be easily influenced by noise. Although we

formerly used the modified bilateral filter for noise reduction, it is still necessary to cope with the

influence of noise. As illustrated in Figure 3, due to the low contrast of image and noise influence,    

contrast measurement may generate a fluctuant curve with many local false peaks. In this case, it is

difficult to distinguish a well-defined peak, and this hinders the following peak search procedure from

performing its function in locating the best focused contrast peak.




sensors-11-08281.pdf


안전 방충망 안전할까? 


유튜브에서 라바 동영상을 다운받으려고하는데 잘 안되네요. OTL

아래 순서대로 Chrome Extension을 설치하면 아주 쉽게 동영상 다운로드 할 수 있어요.

참고로 아래 설명은 크롬 버전 35 이상에서 적용됩니다.


1. 우선 크롬의 버전을 확인해 보세요.

    저의 경우 크롬 버전이 39.0.2171.65인데 최신 버전이라고 합니다.

    크롬 버전 35 미만의 사용자분들은 다른 방법으로 동영상을 다운로드하세요.

    


Chrome 정보 라는 메뉴를 통해 버전을 확인할 수 있어요.



저의 크롬은 버전이 39.0.2171.65인데 최신버전이라고 하네요.




2. 버전이 35 이상인 경우 SaveFrom.net Helper chrome 을 설치합니다.

    http://en.savefrom.net/user.php?helper=chrome  로 이동하시고....

    그냥 급하게 맨 처음의 Install 누르면 안되요.













3. Version 35 and later를 누르면 아래 이미지와 같은 창이 떠요.

    




4. 위에 먼저 Tampermoney라는 크롬 확장 프로그램을 설치합니다.

    + 무료   를 클릭하면 크롬 확장 프로그램이 자동 설치 됩니다.






5. 프로그램 설치가 되면 아래와 같이 됩니다.




6. Tampermoney 확장 프로그램을 설치 하였으면 이제 helpr.user.js 파일을 다운받아 설치 해야 합니다.

    아래 창에서 2번째 링크를 클릭합니다.




7. 두번째 링크를 클릭했으면 아래 화면이 나오는데 과감하게 install 버튼을 누릅니다.

    그리고나서 install이 Reinstall로 바뀌면 설치 잘 된겁니다.

user 스크립트 파일은 다음 링크를 클릭해서 다운로드 하세요.

SaveFrom.net helper.user.js




8 이제 끝입니다. 기존에 DOWNLOAD가 없던 유튜브 페이지에 DOWNLOAD 옵션이 새로 생긴 것이 보입니다.

   클릭하면 다운로드 됩니다.  ㅋㅋㅋㅋㅋ


크롬 확장 프로그램 설치 하기 전에 유튜브 페이지



크롬 확장 프로그램이 제대로 설치된 후 유튜브 페이지.




이제 원하는 동영상 맘껏 다운 받으세요.



user 스크립트 파일은 다음 링크를 클릭해서 다운로드 하세요.

SaveFrom.net helper.user.js



출처 : 데브피아 김경진님의 글([VC++] 윈도우 버전 정확하게 얻어오는 새로운 방법)

 
기존 방식의 구현

  

지금까지 윈도우 버전을 얻어오기 위하여 주로 사용했던 방법은 바로 GetVersionEx 함수를 사용하는 것이었습니다. 하지만 Visual Studio 2013 버전에서 GetVersionEx 함수

(혹은 GetVersion 함수)를 사용하려고 하니 아래와 같은 오류를 내뱉으며 컴파일이 되질 않습니다.

컴파일 오류

  

물론 #pragma warning(disable:4996) 으로 에러가 발생하지 않게 막아놓고 사용할수야 있겠지만 이렇게 사용하기에는 찝찝한 기분을 떨쳐버릴 수가 없습니다. MS가 GetVersionEx 함수를 deprecated 시키고 컴파일 오류까지 발생시키며 사용하지 말 것을 권장한다면, 거기에는 분명히 그럴만한 이유가 있겠죠. 그렇다면 왜 지금까지 잘 사용해오던 GetVersionEx 함수를 이제와서 사용하지 말라고 하는걸까요?

 

 

호환 모드 문제

  

윈도우에서는 다음과 같이 어플리케이션을 호환 모드로 실행할 수 있게 되어있습니다.

 

 

 

 

어플리케이션을 호환 모드로 실행하였을 경우에 GetVersionEx 함수를 사용하면 현재 윈도우 버전을 얻어오는 것이 아니라 호환 모드에서 선택한 윈도우 버전을 얻어오게 됩니다. 실제로 윈도우 8에서 호환 모드를 Windows XP SP3로 설정하고 실행하니 다음과 같이 GetVersionEx 함수가 Windows XP SP3 버전(5.1.3)을 리턴하는 것을 볼 수 있습니다.

 

<그림: 호환 모드에서 GetVersionEx 함수의 오동작>

 

  

GetVersionEx 함수의 호환 모드 문제는 사실 어제 오늘의 문제가 아니라 지금까지 쭈욱 발생되어왔던 문제입니다. 일반적인 상황에서는 호환 모드를 사용할 일이 거의 없기 때문에 신경쓰지 않았을 뿐이죠. 하지만 만에 하나라도 사용자가 호환 모드를 사용한다면 GetVersionEx 함수의 결과값이 달라져서 예기치 못한 문제가 발생할 수 있습니다.

 

 

Windows 8.1 문제

  

GetVersionEx 함수는 앞서 살펴본 호환 모드 문제 뿐만 아니라 또 하나의 중대한 문제점을 가지고 있습니다. 바로 Windows 8.1 이상의 OS에서 제대로 동작하지 않는다는 것인데요, GetVersionEx 함수가 deprecated 된 이유도 이 때문이라 할 수 있습니다. 실제로 Windows 8.1 환경에서 테스트해보니 GetVersionEx 함수가 6.3.0을 리턴하는 대신 Windows 8의 버전인 6.2.0을 리턴하는 것을 볼 수 있습니다.

 

 

<그림: Windows 8.1에서 GetVersionEx 함수의 오동작>

 

 

이러한 결과가 발생하는 이유는 Windows 8.1 버전부터 GetVersionEx 함수가 매니페스트에 의존적으로 동작하도록 변경되었기 때문입니다. 이 문제를 해결하려면 어플리케이션이 Windows 8.1을 타겟팅하도록 매니페스트를 작성해주어야 합니다.

 

 

 

하지만 어플리케이션을 만들 때 마다 위와 같은 매니페스트를 작성해줘야 하고, 새 버전의 OS가 나오면 또 다시 매니페스트에 supportedOS 를 추가해줘야 하니 여간 번거로운게 아닙니다. MS가 GetVersionEx 를 deprecated 시킨 이유가 이제 이해가 되는군요.

 

 

VerifyVersionInfo / 

Version Helper API

  

MS에서 GetVersionEx 함수 대신 사용하도록 권장하는 방법은 VerifyVersionInfo 함수 또는 Version Helper API를 사용하는 것입니다. 두 가지 방식 모두 호환 모드 설정에 영향을 받지 않으며, Windows 8.1 이상에서도 문제없이 동작합니다. 

 

먼저 VerifyVersionInfo 함수는 현재 윈도우 버전이 지정한 버전과 같은지, 같거나 큰지, 작은지 등등을 판단하여 그에 대한 결과를 BOOL 타입으로 리턴하는 함수입니다. VerifyVersionInfo 함수를 이용하여 현재 윈도우 버전이 Windows 8 이상인지 검사하려면 다음과 같이 구현하면 됩니다. 

 

OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 6;
osvi.dwMinorVersion = 2;

VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);

if (!VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask))
{
    ::MessageBox(NULL, _T("You need at least Windows 8"), _T("Version Not Supported"), MB_OK);
}

 

 

다음으로 Version Helper API는 Windows 8.1 SDK에 포함되어 있으며(Visual Studio 2012 이하 버전에서는 별도로 설치 필요), 현재까지 지원되는 Version Helper API의 목록은 다음과 같습니다.

 

  • IsWindowsXPOrGreater, IsWindowsXPSP1OrGreater, IsWindowsXPSP2OrGreater, IsWindowsXPSP3OrGreater
 
  • IsWindowsVistaOrGreater, IsWindowsVistaSP1OrGreater, IsWindowsVistaSP2OrGreater
 
  • IsWindows7OrGreater, IsWindows7SP1OrGreater
 
  • IsWindows8OrGreater, IsWindows8Point1OrGreater
 
  • IsWindowsServer
 
  • IsWindowsVersionOrGreater

 

 

Version Helper API를 이용하여 현재 윈도우 버전이 Windows 8 이상인지 검사하려면 다음과 같이 구현하면 됩니다.

 

#include <VersionHelpers.h>

if (!IsWindows8OrGreater())
{
    MessageBox(NULL, _T("You need at least Windows 8"), _T("Version Not Supported"), MB_OK);
}

 

 

위에서 설명한 두 가지 방식은 모두 현재 윈도우의 버전을 얻어오는 방식이 아니라, 현재 윈도우 버전이 해당 버전과 같은지(혹은 그 이상인지) 검증하는 방식입니다. 그러므로 GetVersionEx 함수처럼 현재 윈도우의 버전을 얻어오고 싶은 경우에는 또 다른 방법을 사용해야 합니다.

 

 

GetWindowsVersion 함수 구현

  

현재 윈도우의 정확한 버전을 얻기위해 사용할 수 있는 방법은 두 가지 방법이 있습니다. 첫 번째 방법은 VerifyVersionInfo 함수 또는 IsWindowsVersionOrGreater 함수를 반복적으로 호출하면서 현재 윈도우 버전을 구해나가는 것이고, 두 번째 방법은 Network Management Function 중에 하나인 NetWkstaGetInfo 함수를 이용하는 것입니다(

NetWkstaGetInfo 함수는 원래 네트워크상의 워크스테이션 정보를 얻어오는 함수지만 윈도우 버전 정보을 얻어오는 데에도 활용할 수 있습니다)개인적으로는 두 번째 방법이 더 깔끔한 것 같아서 두 번째 방법으로 GetWindowsVersion 함수를 구현해봤습니다.

 

#include <Lm.h>
#pragma comment(lib, "netapi32.lib")

BOOL GetWindowsVersion(DWORD& dwMajor, DWORD& dwMinor)
{
    static DWORD dwMajorCache = 0, dwMinorCache = 0;
    if (0 != dwMajorCache)
    {
        dwMajor = dwMajorCache;
        dwMinor = dwMinorCache;
        return TRUE;
    }

    LPWKSTA_INFO_100 pBuf = NULL;
    if (NERR_Success != NetWkstaGetInfo(NULL, 100, (LPBYTE*)&pBuf))
        return FALSE;

    dwMajor = dwMajorCache = pBuf->wki100_ver_major;
    dwMinor = dwMinorCache = pBuf->wki100_ver_minor;
    NetApiBufferFree(pBuf);

    return TRUE;
}

 

 

제가 참고한 자료에서는 NetWkstaGetInfo 함수가 다소 느리다는 얘기가 있어서 최초 한 번만 

NetWkstaGetInfo 함수를 호출하고, 그 다음부터는 캐시 값을 리턴하도록 구현했습니다. 그리고 NetWkstaGetInfo 함수로는 서비스팩 버전을 구할 수 없으므로 기존 GetWindowsVersion 함수와 

VerifyVersionInfo 함수를 조합하여 서비스팩 버전까지 얻어오는 오버로드 함수를 하나 더 만들어봤습니다.

 

 

BOOL GetWindowsVersion(DWORD& dwMajor, DWORD& dwMinor, DWORD& dwServicePack)
{
    if (!GetWindowsVersion(dwMajor, dwMinor))
        return FALSE;

    static DWORD dwServicePackCache = ULONG_MAX;
    if (ULONG_MAX != dwServicePackCache)
    {
        dwServicePack = dwServicePackCache;
        return TRUE;
    }

    const int nServicePackMax = 10;
    OSVERSIONINFOEX osvi;
    DWORDLONG dwlConditionMask = 0;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_EQUAL);

    for (int i = 0; i < nServicePackMax; ++i)
    {
        osvi.wServicePackMajor = i;
        if (VerifyVersionInfo(&osvi, VER_SERVICEPACKMAJOR, dwlConditionMask))
        {
            dwServicePack = dwServicePackCache = i;
            return TRUE;
        }
    }
    return FALSE;
}

 

 

위에서 구현한 GetWindowsVersion 함수는 호환 모드에 영향을 받지않으며, Windows 8.1 이상에서도 정확한 윈도우 버전을 얻어올 수 있습니다.

 

<그림: 호환 모드에서  GetWindowsVersion  함수 호출>

 

<그림: Windows 8.1에서  GetWindowsVersion  함수 호출>

 

 

Reference

  

MSDN - GetVersionEx functionMSDN - Version Helper functions

Part1: Overcoming Windows 8.1's deprecation of GetVersionEx and GetVersion APIs

 

 

원문 링크

 



출처 : 데브피아 김경진님의 글([VC++] 윈도우 버전 정확하게 얻어오는 새로운 방법)

 

출처 : http://blog.naver.com/techshare/220138680455


Visual Studio 2013에서 가장 아쉬운 부분이 바로 매크로인데요. 다행히 "Visual Commander" 확장 도구를 이용하면 그와 같은 제약에서 벗어날 수는 있습니다.

Visual Commander
; http://vlasovstudio.com/visual-commander/


현재 Free, Professional 제품으로 나누어서 판매하고 있습니다.

Free 버전 다운로드 (Visual Commander v1.5 - December 23, 2013)
; http://vlasovstudio.com/visual-commander/VisualCommander_15.vsix

Professional Edition 구매 ($39)
; http://vlasovstudio.com/visual-commander/professional_edition.html


사용법도 간단합니다. vsix 설치 후 Visual Studio를 실행하면 "VCMD" 메뉴가 생기는데 거기서 "Commands"를 선택한 후 "Add" 버튼을 누르면 다음과 같이 기본 매크로 함수를 위한 뼈대가 생성됩니다.




예를 들어, 제가 Visual Studio 2010에서 사용했던 매크로 함수는 다음과 같은데요.

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE100
Imports System.Diagnostics

Public Module InsertTag

    Sub InsertCenterHr()
        Dim selection As TextSelection

        If (ActiveDocument() Is Nothing) Then
            Exit Sub
        End If

        selection = DTE.ActiveDocument.Selection()

        Dim str As String
        str = "<hr style='width: 50%' />" & Environment.NewLine
        SetText(selection, str)
    End Sub

    Sub SetText(ByVal selection As TextSelection, ByVal txt As String)
        Dim prop As EnvDTE.Property
        prop = DTE.Properties("TextEditor", "PlainText").Item("IndentStyle")
        Dim previousIndent = prop.Value
        prop.Value = 0

        selection.Text = txt

        prop.Value = previousIndent

    End Sub

End Module


이를 Visual Commander에서는 다음과 같이 동일하게 코드를 복사해서 사용할 수 있습니다.

Imports EnvDTE
Imports EnvDTE80
Imports System

Public Class C
    Implements VisualCommanderExt.ICommand

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run

            Dim selection As TextSelection
            Dim activeDocument As EnvDTE.Document

            activeDocument = DTE.ActiveDocument

            If (activeDocument Is Nothing) Then
                    Exit Sub
            End If

            selection = activeDocument.Selection()

            Dim str As String
            str = "<hr style='width: 50%' />" & Environment.NewLine
            SetText(DTE, selection, str)        
    End Sub


        Sub SetText(DTE As EnvDTE80.DTE2, ByVal selection As TextSelection, ByVal txt As String)
            Dim prop As EnvDTE.Property
            prop = DTE.Properties("TextEditor", "PlainText").Item("IndentStyle")
            Dim previousIndent = prop.Value
            prop.Value = 0

            selection.Text = txt

            prop.Value = previousIndent

        End Sub
End Class


보시는 바와 같이 DTE 변수를 넘겨준다는 점을 제외하고는 거의 차이가 없습니다.

불편한 점은 사용법에 있습니다. 이전에는 매크로 탐색기에서 해당 매크로를 더블-클릭하면 실행이 가능했지만, "Visual Commander"의 경우 "Commands" 창에서 더블-클릭해 실행하는 것을 지원하지 않고 있습니다. 매번 "VCMD" 메뉴를 펼쳐서 새롭게 등록된 명령어를 선택해 줘야 하는데요. 물론 이 부분은 기본적으로 단축키 등록을 통해 우회적으로 해결할 수는 있지만 어쨌든 불편한 것은 사실입니다. 
(이 부분을 제가 요청했는데 최신 버전에서 개발자가 그 의견을 받아들여 수정했습니다. 이제 예전의 Macro Explorer처럼 편리하게 사용할 수 있습니다.) 

매크로가 그리웠던 분들... ^^ 지금 설치해 보세요.




참고로 아래 코드는 현재 제가 사용하고 있는 _T("") 자동으로 해 주는 매크로 소스입니다.

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic

Public Class C
	Implements VisualCommanderExt.ICommand

	Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run

		'DESCRIPTION: This macro will automatically put "_T( )" around 
		'             your strings, Author: Orin Walker, 1999, Version 1.1
		'             Last change - Acidpop(http://acidpop.tistory.com) (2012.09.07)
		'             Supported Visual Studio 2010 Macro
		Dim iCount As Integer
		Dim bFoundAQuote As Boolean
		Dim strTemp As String
		Dim strStuffAtEnd As String
		Dim bDone As Boolean
		Dim str As String
		Dim strBuildString As String
		Dim Selection As TextSelection
		Dim win as Window

		win = DTE.ActiveWindow
		If (win.type <> EnvDTE.vsWindowType.vsWindowTypeDocument) And (win.type <> EnvDTE.vsWindowType.vsWindowTypeCodeWindow) Then
'			MsgBox( "type=" & win.type & "  Doc=" & EnvDTE.vsWindowType.vsWindowTypeDocument & "  CodeWin=" &  EnvDTE.vsWindowType.vsWindowTypeCodeWindow )
			Exit Sub
		End If

		iCount = 0
		bFoundAQuote = False
		DTE.ActiveDocument.Selection.SelectLine()
		strTemp = DTE.ActiveDocument.Selection.Text

		Selection = DTE.ActiveDocument.Selection

		strStuffAtEnd = ""
		While bDone <> True
			str = ParseString(strTemp, bFoundAQuote, strStuffAtEnd)
			strBuildString = strBuildString + str

			If bFoundAQuote = True Then
				strTemp = strStuffAtEnd
			Else
				bDone = True
				'DTE.ActiveDocument.Selection.Delete()
				'DTE.ActiveDocument.Selection = strBuildString
				Selection.Text = strBuildString
			End If
			iCount = iCount + 1
			If iCount > 100 Then    ' safety valve
				bDone = True
			End If
		End While
		'End If
	End Sub
    Function ParseString(ByVal strTemp, ByRef bFoundAQuote, _
                         ByRef strStuffAtEnd)
		Dim strSpace As String
		Dim iLen As Integer
		Dim iPos As Integer
		Dim x As Integer
		Dim strCheck As String
		Dim iUnderscoreTPos As Integer
		Dim strBeforeFirstQuote As String
		Dim strNewTempStr As String
		Dim strRemaining As String
		Dim strStuffInQuotes As String


		'DESCRIPTION: This is a helper function for the UnderscoreT macro,
		'             Author: Orin Walker, 1999, Version 1.1
		' Comment in/out whatever style you prefer       
		strSpace = ""   ' NO space before or after "_T("
		'strSpace = " " ' Add a space before and after "_T("
		iLen = Len(strTemp)
		bFoundAQuote = False
		' Get the position of the first quote on the line
		iPos = InStr(strTemp, Chr(34))
		If iPos > 0 Then    'a quote was found
			' Go back and see if we have an existing 
			' _T( defined for this quote
			x = iPos - 5          ' Go back up to 5 characters
			If x <= 0 Then      ' If we have reached the 
				' beginning of our string
				x = 1           ' Set x to start at the first character
			End If
			strCheck = Mid(strTemp, x, iPos)

			iUnderscoreTPos = InStr(strCheck, "_T(")

			' If we found one grab everything before the first quote
			strBeforeFirstQuote = Mid(strTemp, 1, iPos - 1)
			If iUnderscoreTPos > 0 Then     ' we found an "_T("
				' Do NOT add the "_T(" to our temporary string
				strNewTempStr = strBeforeFirstQuote
			Else
				' Now create our new temporary string and append "_T("
				strNewTempStr = strBeforeFirstQuote + "_T(" + strSpace
			End If
			' Get the remaining string
			strRemaining = Mid(strTemp, iPos + 1, iLen)

			iLen = Len(strRemaining)
			' Now find the second quote
			iPos = InStr(strRemaining, Chr(34))

			If iPos > 0 Then
				' If we found one save the stuff in quotes
				strStuffInQuotes = Chr(34) + Mid(strRemaining, 1, iPos)

				' And grab the stuff after the quotes
				strStuffAtEnd = Mid(strRemaining, iPos + 1, iLen)

				If iUnderscoreTPos > 0 Then     ' we found an _T(
					' Do NOT add the final ")" to our parsed string, 
					' because it alreasy exists
					ParseString = strNewTempStr + strStuffInQuotes
				Else
					' Create our parsed string
					ParseString = strNewTempStr + strStuffInQuotes + _
						strSpace + ")"
				End If
				bFoundAQuote = True
			Else
				' No SECOND quote was found so just return 
				' what was passed in
				ParseString = strTemp
			End If
		Else
			' No quote was found so just return what was passed in
			ParseString = strTemp
		End If
    End Function
End Class

 

 

 

 

다음은 CPP 파일과 .H 파일을 서로 왔다 갔다 해 주는 소스입니다.

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic
 
Public Class C
    Implements VisualCommanderExt.ICommand
 
    Function GetFilenameFromPath(ByVal strPath As String) As String
        ' Returns the rightmost characters of a string upto but not including the rightmost '\'
        ' e.g. 'c:\winnt\win.ini' returns 'win.ini'

        If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
            GetFilenameFromPath = GetFilenameFromPath(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
        End If
    End Function

    Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
        '////////////////////////////////////////////
        'Nooruddin Kapasi 1998.
        'Pavel Sokolov , CEZEO software , http://www.cezeo.com , Adaptation for .NET
        'DESCRIPTION: Switch Between Header and cpp
        '////////////////////////////////////////////

        Dim a As String
        Dim b As String
        Dim Flag As Integer
        Dim tmp As String
        Flag = 0
        a = DTE.ActiveDocument.FullName()
        tmp = InStr(a, ".cpp")
        If tmp Then
            b = Left(a, Len(a) - 3) + "h"
            Flag = 1
        Else
            tmp = InStr(a, ".h")
            If tmp Then
                b = Left(a, Len(a) - 1) + "cpp"
                Flag = 1
            End If
        End If

        If Flag Then
            Try
                DTE.Documents.Open(b, "Text")
            Catch
                a = GetFilenameFromPath(DTE.ActiveDocument.FullName())
                tmp = InStr(a, ".cpp")
                If tmp Then
                    b = Left(a, Len(a) - 3) + "h"
                    Flag = 1
                Else
                    tmp = InStr(a, ".h")
                    If tmp Then
                        b = Left(a, Len(a) - 1) + "cpp"
                        Flag = 1
                    End If
                End If

                a = DTE.Solution.FindProjectItem(b).FileNames(0)
                DTE.Documents.Open(a, "Text")

            End Try

        End If
    End Sub
End Class
 

 

 


다음은 선택 영역을 //로 주석 처리 해 주는 소스입니다.
Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic

Public Class C
	Implements VisualCommanderExt.ICommand

	Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
            Dim win
            win = DTE.ActiveWindow
 
	    If (win.type <> EnvDTE.vsWindowType.vsWindowTypeDocument) And (win.type <> EnvDTE.vsWindowType.vsWindowTypeCodeWindow) Then
           	  MsgBox( "This macro can only be run when a text editor window is active." )
		  Exit Sub
            else
                if InStr( DTE.ActiveDocument.Selection.Text, vbCr ) > 0 then
                    DTE.ActiveDocument.Selection.ReplaceText( "^", "//", EnvDTE.DsTextSearchOptions.dsMatchRegExp )
                End If
            End If
	End Sub

End Class

 

 

 

 

다음은 선택 영역의 //로 된 주석을 해제 해 주는 소스입니다.

Imports EnvDTE
Imports EnvDTE80
Imports Microsoft.VisualBasic

Public Class C
	Implements VisualCommanderExt.ICommand

	Sub Run(DTE As EnvDTE80.DTE2, package As Microsoft.VisualStudio.Shell.Package) Implements VisualCommanderExt.ICommand.Run
		Dim win
		win = DTE.ActiveWindow
	       If (win.type <> EnvDTE.vsWindowType.vsWindowTypeDocument) And (win.type <> EnvDTE.vsWindowType.vsWindowTypeCodeWindow) Then
           	       MsgBox( "This macro can only be run when a text editor window is active." )
		       Exit Sub
              else
			DTE.ActiveDocument.Selection.ReplaceText( "^//", "", EnvDTE.DsTextSearchOptions.dsMatchRegExp )
		End If
		
	End Sub

End Class



출처 : http://blog.naver.com/techshare/220138680455


Windows7 64비트임을 알려드립니다.

다음과 동일한 증상으로 문제가 되시는 분들은 즉각 해결 가능할 것으로 판단됩니다.



제가 사용하는 USB 허브는 기존부터 잘 사용해 왔던 제품으로 어느날 갑자기 아래와 같은 현상을 보이면서 동작을 하지 않는 문제가 발생되었습니다.




장치 관리자에서 USB 2.0 Hub가 제대로 설치가 되지 않아 느낌표가 떠 있으며 장치 분류도 "기타 장치"로 분류 되어있습니다.




장치를 꽂으면 아래와 같이 장치 드라이버 소프트웨어가 제대로 설치 되지 않았다는 메시지를 출력합니다.




위 메시지를 클릭하면 다라이버를 찾을 수 없다고 합니다.





위와 같은 동일한 증상으로 문제가 있는 분들은 아래와 같은 순서를 따라하시면 되겠습니다.



1. C:\Windows\System32\DriverStore\FileRepository\usb.inf_XXXXXXXX    폴더 내 모든 파일 복사하기.

    제 시스템의 경우 "C:\Windows\System32\DriverStore\FileRepository\usb.inf_amd64_neutral_42d7284868af1f40" 위치입니다.

    비슷한 폴더가 3개 있는데 최신 날짜의 폴더를 선택했습니다.


    모든 파일들을 복사합니다.



2. C:\windows\inf 폴더에 몽땅 붙여 넣기



3. 인식 오류가 발생된 장치를 수동으로 삭제합니다.

    => 항목 선택 후 "DEL" 키를 누릅니다.




4. 하드웨어 변경사항 검색을 하면 자동 설치 합니다.




5. 이제 제대로 설치가 되었는지 느낌표가 뜨지 않습니다.

    USB HUB에 USB 저장장치를 꽂았는데 인식을 잘 합니다.



ffdshow가 원래 동영상 인코딩 기능이 있었는데 License 문제로 인해 REV 3671 부터 MPEG4  계열의 인코딩 기능이 모두 제거 되어 릴리즈 되어왔다.

인터넷을 뒤져봤는데 가장 마지막 버전인 REV 3670은 없고 그 버전과 가장 가까운 REV 3665 버전을 공유한다.

FFDSHOW를 이용해서 동영상 인코딩 하는 방법은 인터넷에 널려 있으니 인터넷을 참고하기 바란다.



ffdshow_rev3665_20101212_xhmikosr_icl12.exe









FFDSHOW의 관련 릴리즈 노트

참고 페이지 : http://www.videohelp.com/tools/ffdshow/version-history



이후 생략...


3688
Updated FFmpeg

3687
updated unrar from 3.40 beta4 to 3.93 beta0

3686
Minor changes

3685
silly mistake in MakeAll.bat

3684
update MakeAll.bat, authors, minor cosmetic changes

3683
changed: CinemaScope HD AR should be 2.39, not 2.40

3682
Revert r3678 partially. Fixes the crash when opening the ffdshow video and ffdshow DXVA version details window

Also hide xvidcore.dll and ff_wmv9.dll in the VFW encoder's version window

3681
Updated FFmpeg

3680
Remove x264

3679
Updated FFmpeg

3678
fixed: x64 build errors using binutils >= 2.21.51(thanks to Alexins), other warnings

3677
Remove unused makefiles

3676
small fixes: operator= checks itself, incorrect bool or no return values

3675
update VS2010 project files, move some properties to release.props

3674
disable LTCG for MSVC2010 builds

3673
Updated FFmpeg (disable unused encoders)

3672
installer: use "Japanese.isl" provided with Inno Setup

3671
Disabled some encoders in the VFW interface.
This was agreed upon by the dev team.

The decision whether to completely remove these encoders will be made some time in the future, taking into account the feedback of ffdshow users.

3670
update IS script

3669
applied astyle formatting

3668
move readme files to the src dir, clean up ffdshow.rc

3667
updated vs2010 & icl_12 project files, removed unused template configurations, more linker options configurable using props file

3666
Updated ICL10 projects

3665
clean up ff_acm.rcffvdub.rcmakeAVIS.rc, ff_wmv9.rc

3664
-update Chinese Simplified and Japanese Inno Setup translations
-update ffSpkCfg project and svn ignore
-minor UI change
-add MakeAll.bat back

3663
move licenses in bindistriblicense

3662
Removed some build scripts

3661
applied astyle formatting

3660
applied astyle formatting

3659
applied astyle formatting

3658
applied astyle formatting

3657
update minilzo to v2.04

3656
applied astyle formatting

3655
cosmetics

3654
Remove ICL11 project files

3653
Remove Tremor

3652
delete outdated files when installing ffdshow

3651
Update install script

3650
Rename libavcodec.dll to ffmpeg.dll

3649
update libmpeg2 makefile, remove unneeded file

3648
comment out the donate code



이전 릴리즈 노트 생략...



+ Recent posts