BacGyber's Tricks

[미드 영어공부 팁] 팟플레이어 단축키 활용하여 자막 문장 쉽게 복사하기

☺ 달달한 English

팟플레이어의 기능인데 특히 영어 학습시에 유용하게 쓸만한 기능같아서 공유합니다.


현재 화면의 자막을 쉽게 복사하는 방법입니다.



1. 단어 복사


이건 그냥 클릭만 하면 됩니다. 붙여넣기를 원하는 곳에서 Ctrl + v 를 해보면 쉽게 확인이 가능합니다.





2. 해당 화면 전체 문장 복사



뭔가 노트에 정리해두고 싶은 문장이 있는 경우

그대로 직접 타이핑 하는 것도 좋은 방법입니다.  베껴쓰는 것도 영작 학습의 한 방법이죠.


그런데 그냥 그대로 복사를 하려고 한다면? 


잠시 뒤에 설명이 나갑니다 :)



  # 미드 Colony (콜로니)



여배우는 Sarah Anne Wayne Callies 쌔라 웨인 캘리스 (사라 웨인 콜리스) 입니다.


하와이 출신 여배우인데 나름 여러 작품에 나왔더군요. 

프리즌 브레이크에서 Dr. Sara Tancredi (사라 탠크레디) 역을 맡았다고 합니다.

아마 많은 한국인들에게 낯익은 배우일거 같아요.   저는 콜로니에서 첨 봤어요 :)


"난 니가 바로 그런 사람이라고 믿었기 때문이지.

 중요한 일을 해낼거라고 여겼었거든 (다른 사람과는 달리"



참고로 미드 Colony 에 대해 살짝 적어볼께요. ( 줄거리 같은건 따로 인터넷 서핑을 하시길 )


* 드라마 측면

적당히 볼만합니다. 

몰입도가 좀 낮은 편인데 저는 오히려 그 점이 장점으로 느껴집니다.

미드 마라톤을 하게 할 가능성은 낮으니 건강에 대한 부담없이 볼 수 있습니다. ㅎㅎ


* 영어 측면

속도는 중간 정도

목소리 크기가 좀 적은 경우가 많고, 연음 느낌 발음이 많은 편입니다. <= 이 부분은 학습면에서 장점으로 느껴져요

단어 난이도는 낮아요. 평이한 단어가 많습니다.

"좋은 문장이야! 써먹어야겠어!" 이런 느낌의 문장은 그리 많이 나오는거 같진 않습니다.




팟플레이어 화면에 보이는 문장 그대로를 복사하는 방법에 대해 설명 나가십니다~


1) context menu 이용 

화면 오른 클릭 > 자막 > 현재 자막 클립 보드로 복사


종종 이 기능을 써야 한다면 매번 이렇게 클릭하는건 귀찮지요.....



2) 단축키로 등록  <- 이 방법을 알려드리려고 이 글을 작성했습니다 :)


a. 환경설정 (F5) > 기본 > 단축키 > 추가 클릭

  ( 아래 화면의 경우 이미 자막 복사를 단축키에 등록한 뒤의 상황입니다 )




b. 단축키 정의 창

1) 하단 영역에서 "현재 자막 클립 보드로 복사" 선택


2) 상단 단축키 입력 박스에 포커스를 둔후 원하는 키를 키보드에서 직접 선택

  => 저는 이때 Ctrl + Shift + C 를 키보드에서 입력하였습니다.

      (실제 단축키 쓰듯이 세 키를 눌러주시면 됩니다.

       저는 이미 등록하였기 때문에 해당되는 부분에 매핑한 키가 보이고 있죠)


* 팟플레이어에 포커스를 두지 않은 상황에서도 해당 기능이 적용되게 하려면

  제일 위쪽의 체크박스를 선택하시면 됩니다.


* 본인이 선택한 단축키가 이미 다른 기능이 매핑된 경우에는 

다른 단축키를 쓰던가 기존 키에 매핑된 키를 다른것으로 바꾸는 식으로 진행하시면 되겠죠




▶ 자 이제 다 되었으니 매핑시킨 단축키를 실행해보세요.

  ( 예 : Ctrl + Shift + C )


  아래처럼 화면 상단에 복사가 잘 실행되었다고 표현이 됩니다.




크롬에서 내 블로그 애드센스 막는 방법 - 플러그인 Tarnhelm (탄햄?)

□ Tech (General), Digital

실수로 내 블로그의 구글 애드센스 광고를 클릭시 페널티가 있습니다.


해당 실수 ( 광고 클릭 ) 로 인해 발생한 수익보다 더 많은 비용을 깎는 것 같기도 하던데요...


하지만 스피드 세상... 빨리 클릭하면서 사용하다보면 내 블로그의 광고를 클릭하는 경우가 종종 있더라구요.


부정 클릭을 알아낸다면... 그냥 알아서 카운트 안하면 될텐데... 신경쓰이게 왜 그러는지 모르겠습니다....


〓 How to hide my own adsense on my blog? 〓


자~ 그런데... 이 문제를 개선하기 위해 기존에 사람들이 쓰던 보편적인 방법은 Google Publish Toolbar  를 이용하는 것이었습니다.


하지만 이것은 내 광고에 대한 표시는 해주지만 Block 하는 기능은 없습니다. 


즉 부정클릭에 대한 실효성 있는 개선책은 전혀 아닌것이죠.



ㅎㅎ 짜증이 난 저는... 오늘.... Chrome Extensions 쪽에서 그냥 직접 검색을 했노라!


그래서 괜찮은 놈을 찾았노라!






위와 같이 Comma 로 구분하여 (중간에 space를 두셔도 되구요) 

여러개의 본인 사이트 입력을 하시면 됩니다.


물론 본인 사이트가 아닌 광고를 보기 싫은 사이트를 마구 넣어주어도 됩니다.

tistory.com 같이 넣어도 됩니다.


하지만 굳이 남의 광고까지 막을 필요가 있나요? 밴댕이들도 아니고...


눈에 띄는 광고는 클릭해서 정보를 얻을수도 있고, 

다 그렇게 상부 상조하면서 사는거죠.



Tarnhelm 설치후 설정을 해보니 아예 설정한 사이트에는 구글 애드센스가 노출되지 않습니다.

이제 부정 클릭 안심해도 될 거 같네요.


다른 블로거분들도 유용하게 사용하시길 :)



▶▶ Go Go! to install "Tarnhelm"




2016 블로그 결산 - 티스토리 제공 :)

♧ My Diary


http://www.tistory.com/thankyou/2016/tistory/2051463

BacGyber's Tricks2016 블로그 결산




2017년 시작 - S/W 개발 기술 동향 점검, 계획

♧ My Diary

# 4차 산업혁명, 머신러닝, 딥러닝


4차 산업혁명 얘기가 나오고 있다. 어느 순간 팍 치고 올라가서 그런 시점이 정말 될 것인가? 아님 아직은 좀 먼 이야기일까?


아직 어찌될진 모르겠지만... 아주 빠른 시점은 아니더라도 언젠가 오게될수 있을것같기도 하다.


기술발전이 되더라도... 시장에 도입하는 초도 비용이 높을 것이므로... 실질적으로 전반적인 영향을 끼치려면 좀 더 시간이 걸리겠지.



# javascript 관련, 모바일, 하이브리드앱


개발 수요를 보면 안드로이드는 당연히 활발하고, iOS도 여전히 건재하다.


Java도 여전히 건재하다. 국내에서는 이 현상이 해외보다 더 견고하게 흘러갈거 같다.


javascript 기반 기술들도 여전히 강세를 띠고 있다.


React.js 가 뜨고 있다고 한다.  ExtJs 에서도 React.js 와 관련하여 뭘 한다는 얘기를 본듯도 하다.


Angular도 version 2가 나왔다고 한다.


하이브리드앱의 경우 ExtJs 는 뷰 요소들을 배치하고 정렬하는 등을 내맘대로 하는것이 매우 불편한거 같다.


유료 사용자만 쓸 수 있는 포럼 ( 그조차도 답변이 원할하게 되지 않는듯함 ) 그리고 온라인 커뮤니티에선 답변을 구하기 힘들다는 점도... 갈수록 그 입지를 좁히게 될거 같다.


ionic 이 하이브리드앱 기반 프레임웍으로 인기를 끄는거 같다.

하지만 하이브리드앱...을 이용하는 곳은 그리 많지 않을 것이므로

ionic 을 경험하는 것이 경력에 있어 강력한 무엇이 된다고는 보기 힘들거 같다.


또한 ionic 은 언제 또 시들해질지 모른다.

더 좋은 하이브리드앱 프레임웍이 나온다면 그렇게 되는것이겠지.


그래도... ionic 을 통해 앱을 실제 배포까지 하는 경험을 쌓는다면 앱개발을 나름 경험하는 것이라... 


네이티브 모바일 경험이 없는 개발자에겐 하이브리드앱 경험의 의미가 적지 않을거 같다.


# D3


chart 관련 프레임웍은 장단점들이 있어 보이는데 잠깐이 아닌... 제대로 파서 실력을 갖추는 쪽으로는 D3가 좋은거 같다.



▶Action Plan


해보고 싶은 것은 많지만... 현실은 그러하지 못하다.


회사에서 요구하는 비지니스 지식, 기술 지식을 쌓기도 쉽지 않은 현실.


그래도 개인적인 노력을 따로 하는 것이 바람직한 것으로 느껴진다.



일단은 특정 방향, 기술을 지향하는 것이 아니라...


무엇을 하든 더 쉽게 진도를 나가고 제대로 이해할 수 있도록


또한 난 이건 충분히 잘한다 라는 자신감을 피력할 수 있도록


기본 내공을 쌓도록 하자. 


다시 시작의 의미로!



결국 Java, Javascript 쪽 내공을 처음부터 짚어보며 가보는 것이 의미가 있을거 같다.



일단 Javascript 기본 내공을 쌓아보자. 


진도를 많이 뽑느냐도 중요하지만 일단은 조금씩이라도 꾸준히 하는것에 중점을 두자.



Next 는 다시 Action Plan을 세워보자고!


Next 로 떠오르는 것은 Java 내공, 통계학 공부 시작


Next Next 는 머신러닝 쪽으로?


How to rotate tomcat catalina.out (with logrotate)

□ Tech (Software)

How to rotate tomcat catalina.out (with logrotate)

(Tomcat catalina.out 로그 Rotation)


여러 방법이 있는데 logrotate 가 제일 낫다. 다른 방법으로 하지 말고 무조건 logrotate 로 하도록 한다.

- 명시적임

- 좋은 기능이 많음

- 백업시 압축 가능, 오래된 백업 파일을 삭제 등

*  root 권한이 있어야 작업이 가능함


설치 확인


서버(리눅스)에서 logrotate 타이핑해서 엔터치니 설명이 나옴. 이미 설치되어 있네.



설정


# logrotate -f /etc/logrotate.d/tomcat

# vi tomcat

  

/usr/local/tomcat/apache-tomcat-7.0.68/server1/logs/catalina.out {

copytruncate

daily

rotate 30

missingok

notifempty

dateext

}


/usr/local/tomcat/apache-tomcat-7.0.68/server2/logs/catalina.out {

copytruncate

daily

rotate 30

missingok

notifempty

dateext

}

상기 설정 내용 : 일단위 rotation, 백업파일 30일치 유지 등......


* 옵션의 의미는 man logrotate 등으로 확인 가능

* 해당 경로의 기존 파일들을 참고하면 도움이 된다.

  

Test


logrotate -f /etc/logrotate.d/tomcat

=> 실제 rotation 시점처럼 강제로 rotation이 실행됨.  설정이 제대로 되었는지 확인시 이용



Reference - logrotate 외의 내용도 포함

http://blog.net2free.net/260

http://egloos.zum.com/yoontaesub/v/2093136

http://blog.naver.com/kazami20/172050936

http://siho.tistory.com/52



Reference - logrotate

http://linuxism.tistory.com/298

http://imhotk.tistory.com/824

http://www.mimul.com/pebble/default/2009/12/27/1261911840000.html

http://blueskai.tistory.com/101


[site] 동기부여가 되는 문구로 바탕화면을 만들어보세요

↗ Creativity&Productivity

원하는 문구를 적은 바탕화면 만들기.


사실 어렵지 않습니다.


굳이 포토샵이 아니어도 무료 프로그램인 GIMP 나 Paint.net 을 설치해서 해도 되죠.


하지만 다 귀찮다. 이미지도 그냥 제공하는거 골라 쓰련다~ GIMP 같은거도 할 줄 모른다~


그렇다면 사이트에서 간단히 만들수 있는 방법이 있습니다.



http://wall2mob.com/wallpapers-for-1920x1080/index.html



원하는 해상도, 문구, 문구 세로/가로 정렬, 텍스트 사이즈 등을 다 정할수 있습니다.


대신 폰트는 한글일 경우.... 기본 선택되어 있는 All Lang 인가 하는 폰트 하나만 되는것이 단점입니다.


즉, 자기가 원하는 이미지와 폰트로 쓰고 싶으면.... 직접 만드는게 더 좋죠.



저는 일단 Wall2Mob 에서 만든걸 당분간 쓰려고 합니다 ^^

How to trace log Axis on client side with log4j

□ Tech (Software)

How to trace log Axis on client side with log4j

log4j로 Axis client 로그 남기기



environment

axis (not axis2)

Axis client codes are generated by Eclipse plugin



how to

* append configurations to existing log4j.xml


1. Appender


       <!-- Tracing Axis Client Log ( This could also trace Axis Server log -->

       <appender name="WSCLOG" class="org.apache.log4j.DailyRollingFileAppender">

            <param name="File" value="${vc.root}/log/wsc.log"/>

               <param name="Append" value="true"/>

               <param name="Threshold" value="DEBUG"/>


               <!-- Rollover at midnight each day -->

               <param name="DatePattern" value="yyyy-MM-dd'.log'"/>


               <layout class="org.apache.log4j.PatternLayout">

                       <!-- The default pattern: Date Priority [Category] Message\n -->

                       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

               </layout>

       </appender>

       

2. Category


         <!-- Tracing Axis Client Log ( This could also trace Axis Server log  -->

       <category name="org.apache.axis">

               <priority value="DEBUG" />

               <appender-ref ref="CONSOLE"/>

               <appender-ref ref="WSCLOG"/>

       </category>

       

       <category name="org.apache.axis.encoding">

               <priority value="DEBUG" />

               <appender-ref ref="CONSOLE"/>

               <appender-ref ref="WSCLOG"/>

       </category>

       

       <category name="org.apache.axis.utils">

               <priority value="DEBUG" />

               <appender-ref ref="CONSOLE"/>

               <appender-ref ref="WSCLOG"/>

       </category>

       

       <category name="org.apache.axis.message">

               <priority value="DEBUG" />

               <appender-ref ref="CONSOLE"/>

               <appender-ref ref="WSCLOG"/>

       </category>

       <!-- Tracing Axis Client Log ( This could also trace Axis Server log << -->




refernce

http://axis.apache.org/axis/java/developers-guide.html#Configuring_the_Logger


[issue solved] Loading Excel Data on ExtJs Grid using SheetJs

□ Tech (Software)



[solved] Loading Excel Data on ExtJs Grid using SheetJs


이런 저런 이슈처리를 많이 하는데 기록은 오랜만에 합니다.

기술적으로 참고도 가능할것이나.. 그보다는

현상을 분석하고 처리하는 사고 방식에 대해서도 참고가 되면 좋겠습니다.

사고방식 역시 특별한건 없습니다. 기본적인 것인데... 의외로 이것이 제대로 안되는 분들이 많습니다. 뭐 각자 잘하는 부분이 서로 다르니 그런것이겠죠...

# 현상 분석, 직접 정확히 하기


이번건의 경우 전달받은 현상은 제대로 파악이 된 경우였습니다.

아무튼 항상 현상을 직접 파악하는 것이 이슈 해결의 첫번째 단추 입니다.


시간상 직접하지 못한다면 질의를 통해 최대한 검증하고

의심이 갈 경우 직접 검증하는게 좋겠죠.


그렇게 할 시간조차 내기 애매한 경우엔 일단 전달받은 현상으로 접근하여 빠른 임시 조치후 다시 현상을 파악하던가 해야할 것입니다.


"일반적인 세상살이 현실"에서도 "전산"에서도 많은 사람들이 현상 자체를 제대로 분석하지 못하는 경우가 많으므로 문제해결 능력을 키우려는 분들은 정말 문제가 뭔지 파악하는게 가장 중요합니다.

아무도 믿지 마십시오. 현상을 전달해주는 기술자 말도 부정확합니다. 경험상 60~80%는 부정확하거나 오히려 잘못 짚고 있습니다. 

수사를 하듯, 데이터 모델링을 하듯 근본적인 것에 부터 확인을 하여 스스로 현상을 재정의 하십시오.

기존에 이 부분에 대해 알고 있지는 않았고 이슈 해결을 위해 단발성 지원을 하였습니다.

소스 변경하여 처리하는데는 2시간이 소요되었습니다. 컨디션 난조로 현상 분석을 좀 천천히 진행했습니다.

급하게 현상 분석시엔 문제 처리방향을 잘못 짚게 되어 결국 시간을 허비하게 되죠.

소스 변경 이후.... 해당 소스수정을 통해 확실히 이슈해결이 보장되는 것인지에 대한 검토, 

반복 테스트를 위해 추가적인 시간이 더 투입되었습니다.


* 환경

오픈소스 sheetjs 를 이용해 엑셀 (.xls, .xlsx) 을 읽는다.

이후 extjs 그리드상에 로딩.

* 이슈

엑셀 업로드가 되지 않는다.

* 현상

처음 업로드는 됨. 

안되는 경우는 프레임 새로고침 또는 해당 기능 화면을 닫았다 열어서 진행할 경우임.

테스트서버에서만 발생하며, 개발자 서버에선 발생하지 않음.

기존 타 프로젝트 환경에선 발생하지 않았다고 함

* Error Log in Client Javascript

Uncaught ReferenceError: XLS is not defined

=> XLS 는 sheet js 쪽의 오브젝트임

* 분석 1

클라이언트단에서 발생하는 것인데 왜 서버에 따라 다른가?

런타임상에서 분석결과 엑셀업로드시 스크립트를 서버를 통해 다운로드 하고 있다. ( 속도가 그리 느리진 않음. http 200 성공됨)

해당 XLS 인스턴스가 없어서 참조를 못하거나 있는데도 찾아가질 못하거나 그런것이겠지

* 분석 2- 원인

해당 화면 리로드나 닫아서 다시 열었을때 해당 인스턴스가 destroy 되는것 같다.

그런데 로딩 타이밍에서 

1) Extjs 또는 WebWorker 에서 있다고 판단하여 다시 생성되지 않거나

2) 로딩이 되더라도 어디에선가는 최초 로딩과 조금 다른 로직으로 인해 로딩이 늦게 되거나 하는 시간차

3) 최종 이용부분이 빨리 호출되던가 하는 시간차

결국 SheetJs 에서 로딩시에는 XLS 가 없거나 있더라도 참조할수 있는 구조가 뒤틀려 에러가 나는거 같다.

* 처리

* 기존 로딩 순서 파악

* 어떤 순서로 로딩이 되어야 하는것이 맞는지 소스 분석 및 재정리

* 그 순서에 맞게 될 수 있는 방법 검토 및 소스 변경

** 관련 과정에서 ExtJs, SheetJs, WebWorker (SheetJs 에서 이용) 쪽을 살펴보았습니다.

초반 개발한 분이 잘했으나 아마 급하게 진행하다보니 이런 구멍이 있었을거 같네요.

전체적인 메카니즘에 대해 핵심적인 파악을 했다면 더 좋은 버젼이 되었겠죠

* 처리 - 변경전후 소스

몇개의 소스를 수정하였습니다.

분산되어 js 로딩하면서 생기는 구멍을 깔끔히 정리하였습니다.

아래는 초기에 순차적으로 nested callback 으로 js 들을 로딩하고 마지막 callback 에서 동작해야할 method 를 호출하도록 한 소스 입니다.

그 method 가 호출되면  sheetjs 를 통해 읽은 data 가 자체적으로 구현한 method 에 전달되어 해당 data 가 그리드에 로딩이 됩니다. 


        if(fileExt == ".XLS")

       {

               // OLD - "XLS undefined"

//                Ext.Loader.loadScript({url : '/view/common/js/sheetjs/xls/xls-read.js', onLoad : function(){xlsLoad(e);}});

               

               // NEW

               Ext.Loader.loadScript(

                               {

                                       url : '/view/common/js/sheetjs/xls/shim.js', 

                                       onLoad : function(){

                                               //xlsLoad(e);

                                               Ext.Loader.loadScript(

                                                               {

                                                                       url : '/view/common/js/sheetjs/xls/xls.js', 

                                                                       onLoad : function(){

                                                                               //xlsLoad(e);

                                                                               Ext.Loader.loadScript(

                                                                                               {

                                                                                                       url : '/view/common/js/sheetjs/xls/xls-read.js', 

                                                                                                       onLoad : function(){

                                                                                                               xlsLoad(e);

                                                                                                       }

                                                                                               }

                                                                               );

                                                                       }

                                                               }

                                               );

                                       }

                               }

               );

       }

       else if(fileExt == ".XLSX")

       {

               // OLD - "XLS undefined"

//                Ext.Loader.loadScript({url : '/view/common/js/sheetjs/xlsx/xlsx-read.js', onLoad : function(){xlsxLoad(e);}});

               

               // NEW

               Ext.Loader.loadScript(

                               {

                                       url : '/view/common/js/sheetjs/xlsx/shim.js', 

                                       onLoad : function(){

                                               //xlsLoad(e);

                                               Ext.Loader.loadScript(

                                                               {

                                                                       url : '/view/common/js/sheetjs/xlsx/jszip.js', 

                                                                       onLoad : function(){

                                                                               //xlsLoad(e);

                                                                               Ext.Loader.loadScript(

                                                                                               {

                                                                                                       url : '/view/common/js/sheetjs/xlsx/xlsx.js', 

                                                                                                       onLoad : function(){

                                                                                                               //xlsLoad(e);

                                                                                                               Ext.Loader.loadScript(

                                                                                                                               {

                                                                                                                                       url : '/view/common/js/sheetjs/xlsx/xlsx-read.js', 

                                                                                                                                       onLoad : function(){

                                                                                                                                               xlsxLoad(e);

                                                                                                                                       }

                                                                                                                               }

                                                                                                               );

                                                                                                       }

                                                                                               }

                                                                               );

                                                                       }

                                                               }

                                               );

                                       }

                               }

               );

       }

       else

       {

               Ext.MessageBox.show({

            msg: Lang.get('EXCEL_FILE_ONLY'),

            buttons: Ext.MessageBox.OK,

            icon: Ext.MessageBox.ERROR,

            fn : function(){

                    ExcelLoader.formCmp.up("[xtype=window]").close();

            }

        });

       } 



* 부연1

이 app는 Single Page Application 구조로 개발되지 않았습니다.

만약 SPA 라면... 이와 같은 현상은 발생하지 않았을것 같습니다.

SheetJs 쪽을 분석해봐야 알겠으나... 지금과 같이 ExtJs 를 이용한 동적로딩이 아닌...

현재 MPA 구조에서는... Excel 업로드 이용하는 화면마다 

정적으로 관련 js 를 로딩하여도 문제는 해결될 것 같습니다.

단 그 경우 ap 전반적인 수정이 필요하므로

진행하기 좀 애매한 점이 있습니다.

* 부연2 - 기존에는 발생하지 않았다? 

로딩 부분 개선 이후 여러차례 테스트 결과 전혀 기존 현상이 발생하지 않았습니다.


기존 타 서버에서 발생치 않았다고 하는데.... 그것이 정말 사실이라면... 조금 설명이 애매해진다고 볼 수도 있습니다.

하지만... "기존 타 환경에서의 서버 처리및 서버 클라이언트 사이의 속도가 늘 빨랐다" 라는 가정을 한다면 그리 이상할것도 없습니다.


클라이언트에서 관련 처리 속도가 아주 빠르므로...
클라이언트 - 서버간의 로딩 시간이 타 환경 서버들보다 아주 조금 더 늦다해도 이런 현상은 있을수 있습니다.

XLS 인스턴스를 로딩하는 xls.js 의 경우 0.2 초라는 적지 않은 시간이 소요되고 있습니다.



Reference

ExtJs

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.Loader-method-loadScript


SheetJs

https://github.com/SheetJS/js-xlsx

webworker

https://developer.mozilla.org/en-US/docs/Web/API/Worker

https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API 

[영어로 어떻게] "너 실물이 더 나아 보여" 를 영어로

☺ 달달한 English

오늘 펜팔 친구와 채팅에서 한 번 써봤습니다.


너 실물이 더 나아 보여

너 실물이 더 나아 보여!

You look even better in person!


소리내서 해보세요 :)




참... 이 말을 써보려면 실제로 봤어야 가능하겠군요.


저는 한 번 봤던 친구라서 ㅎㅎ 써볼수가 있었네요 :)


요새 페북보니 얼굴 좋아보인다고 했더니 실제로는 아니냐?고 물어보길래 ㅎㅎㅎ




좀 전에 제가 썼던 표현 그대로가... 자연스러운게 맞는지 검색해보았는데요.


쓰이는 표현이 맞는거 같아요 :)


유투브 영상도 있더군요.  

무슨 목적의 영상인지는 가늠이 잘 안됩니다;; 광고성 같긴 한데...


아 이해했다 ㅎㅎ

에스콰이어 잡지 사서 멋지게 하고 다니면 요런 말 들을수 있을걸? 최면을 걸어주는거군요 :)





[Spring] How to exclude html in Spring MVC

□ Tech (Software)

[Spring] How to exclude html in Spring MVC

[스프링] Spring MVC 에서 html 예외처리


IntelliJ 써볼까 해서... 집에서 다운로드 받아서 스프링으로 간단 프로젝트 만들다가 메모를 남겨본다.


프레임웍 처음부터 새로 구성할때마다 이걸 찾아서 했던거 같다.


뭐... 기존 소스가 있으면 찾아봐도 될텐데 집이라서....


Spring MVC xml 에 한 줄 넣어주면 된다.



<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/mvc"

             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

             xmlns:beans="http://www.springframework.org/schema/beans"

             xmlns:context="http://www.springframework.org/schema/context"

             xmlns:mvc="http://www.springframework.org/schema/mvc"

             xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <context:component-scan base-package="com.bacgyber.helloworld"/>


    <mvc:default-servlet-handler/>


    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <beans:property name="prefix" value="/WEB-INF/views/" />

        <beans:property name="suffix" value=".jsp" />

    </beans:bean>


</beans:beans>


ref) http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-default-servlet-handler


딱 0.5초~ 아래 공감버튼 누르는데 사용해주시면

제 기분은 5배 Up 이 될거 같아요 :)