티스토리 툴바

BLOG main image
분류 전체보기 (70)
프로젝트 (8)
IT소문 (9)
영화가주는인생 (5)
OpenAPI (9)
DBMS (5)
JAVA (16)
IPhone/Object-C (8)
안드로이드 (0)
WEB etc (8)
Server (1)
49,204 Visitors up to today!
Today 6 hit, Yesterday 25 hit
daisy rss
tistory
2011/12/17 07:43


굿!~^^

[사진출처] Javascript Window size|작성자 유노아빠  


브라우져 버전별 정리

Browserwindow.
innerHeight
document.
body.
clientHeight
document.
documentElement.
clientHeight
Opera 9.5+ strictwindow document window
Opera 9.5+ quirkswindow window document
Opera 7-9.2window window document
Opera 6window window N/A
Mozilla strictwindow document window
Mozilla quirkswindow window document
Newer KHTMLwindow document window
Older KHTMLwindow document document
Chrome/Safari 4+window document window
Safari 3-window document document
iCab 3window document document
iCab 2window window N/A
IE 9+ strictwindow document window
IE 6-8 strictN/A document window
IE 5+ quirksN/A window 0
IE 4N/A window N/A
ICEbrowserwindow window document
Tkhtml Hv3window window document
Netscape 4window N/A N/A
 



테스트!

function alertSize() {

  var myWidth = 0, myHeight = 0;

  if( typeof( window.innerWidth ) == 'number' ) {

    //Non-IE

    myWidth = window.innerWidth;

    myHeight = window.innerHeight;

  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {

    //IE 6+ in 'standards compliant mode'

    myWidth = document.documentElement.clientWidth;

    myHeight = document.documentElement.clientHeight;

  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {

    //IE 4 compatible

    myWidth = document.body.clientWidth;

    myHeight = document.body.clientHeight;

  }

  window.alert( 'Width = ' + myWidth );

  window.alert( 'Height = ' + myHeight ); 

}




테스트2 - SCROLLER XY 구하기




function getScrollXY() {

  var scrOfX = 0, scrOfY = 0;

  if( typeof( window.pageYOffset ) == 'number' ) {

    //Netscape compliant

    scrOfY = window.pageYOffset;

    scrOfX = window.pageXOffset;

  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {

    //DOM compliant

    scrOfY = document.body.scrollTop;

    scrOfX = document.body.scrollLeft;

  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {

    //IE6 standards compliant mode

    scrOfY = document.documentElement.scrollTop;

    scrOfX = document.documentElement.scrollLeft;

  }

  return [ scrOfX, scrOfY ];

}



 

저작자 표시
Trackback Address :: http://dakccom.tistory.com/trackback/100 관련글 쓰기
Name
Password
Homepage
Secret
2011/11/04 11:59
기존에 블로그에 올렸던 리뷰들은 2.1.x 버전으로 개발한 내용들을 올렸습니다.
그래서 그런지 최신버전하고 안맞다고 말씀을 하셨습니다.
다시 찾은 twitter4j 사이트...

2.2.5 버전이 최신버전으로 릴리즈가 되었더군요.
기존에 올렸던 내용으로 똑같이 만들어보니 ...역시나..안되는군요.

샘플코드를 보니..약간 변경이 되었습니다.
Oauth 2.0 으로 올려와서 그런지...
oauth_verifier 이란 넘이 생겼습니다.._-;;원래 있었나...기억이 가물가물...
예전에는 oauth_token 만 있었던거 같은데..

암튼..
기존소스와 비교해보면

[기존소스]
 

[트위터 호출 전]
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("CONSUMER_KEY", "CONSUMER_SECRET");
RequestToken requestToken = null;
requestToken = twitter.getOAuthRequestToken();
request.getSession().setAttribute("Token",requestToken.getToken());
request.getSession().setAttribute("Secret",requestToken.getTokenSecret());



[트위터 콜백 호출]
 String oauthToken = request.getParameter("oauth_token");
 String secret = (String)request.getSession().getAttribute("Secret");
 AccessToken accessToken = null;
               try {
                   accessToken = twitter.getOAuthAccessToken(oauthToken, secret);
               } catch (TwitterException e) {
                   e.printStackTrace();
               }
               twitter.setOAuthAccessToken(accessToken);



[버전업소스]
 

[트위터 호출 전]
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("CONSUMER_KEY", "CONSUMER_SECRET");
RequestToken requestToken = null;
requestToken = twitter.getOAuthRequestToken();
request.getSession().setAttribute("requestToken", requestToken);
 [여기서 requestToken 를 session에 통으로 담아야 합니다. ]



[트위터 콜백 호출]
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("CONSUMER_KEY", "CONSUMER_SECRET");
  AccessToken accessToken = null;
   RequestToken requestToken = (RequestToken )request.getSession().getAttribute("requestToken");
  [requestToken 를 통으로 가져옵니다.]

 String oauth_verifier= request.getParameter("oauth_verifier");
 

 accessToken = twitter.getOAuthAccessToken(requestToken, oauth_verifier);
 twitter.setOAuthAccessToken(accessToken);


User statuses = twitter.getUserTimeline().get(0).getUser();
System.out.println(
statuses );


차이점은 
 호출전  requestToken 항목을 통으로 session 에 담아서 콜백 호출 후 통으로 불러와서 
반영을 한다는 것입니다.
그리고  
oauth_verifier 파라미터를 사용된다는 점이구요.

requestToken 이 callback 항목을 부르기전에 uri 값을 저장하여,
callback 에서는 호출했던 uri 값을 비교하는거 같습니다. 아닌가__;;;;

많은 변화가 있었군요..


그럼 모두 즐프요~

 

 







저작자 표시
Trackback Address :: http://dakccom.tistory.com/trackback/99 관련글 쓰기
write my essay | 2011/11/18 17:42 | PERMALINK | EDIT/DEL | REPLY
Even if you are able to complete essay, that should not mean that your custom papers are of high quality. Only professional essay writers are able to cope with complex assignments easily. College students do great decisions when buy college papers online.
essay writing service | 2011/11/18 17:42 | PERMALINK | EDIT/DEL | REPLY
I do guess that the essay writing service will search for such kind of talented research papers writer as you can be. Moreover, I would like to get know more really good knowledge.
dissertation writing | 2011/11/20 14:04 | PERMALINK | EDIT/DEL | REPLY
The good thesis writing should be required by people all over the world but during the academic lifetime they demand the dissertations or just dissertation work about this good topic.
custom thesis | 2011/11/20 14:05 | PERMALINK | EDIT/DEL | REPLY
A lot of people must select 'tween custom dissertation services and thesis writing service to buy dissertation international more or less about this post.
order an essay | 2011/11/27 07:26 | PERMALINK | EDIT/DEL | REPLY
To get good grades, a lot of students should decide if they are willing to accomplish the do my paper essays or just buy essay papers of the best upper-class.
닥컴마니아 | 2011/11/28 13:16 | PERMALINK | EDIT/DEL | REPLY
뭐야..이거..머라는거야..
Name
Password
Homepage
Secret
2011/10/30 03:40
구글맵을 가지고 서비스를 개발하는 사이트가 많이 늘어나고 있습니다.
저 역시 최근에 구글맵을 가지고 서비스를 오픈하였습니다.

어느 날 맵을 보면서 너무 밋밋한 느낌이 들었고, 좀 더 고급스럽게 꾸미고 싶었습니다.
저는 여태 javascript 로만 맵을 불러서 사용했는데
지도 위에 png 투명한 배경 이미지를 올려서 사용해보자는 생각으로 
고급? 스러운 이미지를 위에 다가 올렸지만,,javascript로 구현시키는건 먼가...부드럽지 못 했습니다.
제가 잘 몰라서 그런지 어설픈 느낌이 들더라구요..

다시 찾은..code사이트..
code.google.com 에  보니 flash 기반으로도 map 을 사용할 수 있다는 걸 알았습니다.
바로 적용시켜봤습니다.
와우~ 쌈빡합니다....ㅋㅋ
휠감도라던지..아이콘 모양, 플래쉬기반이라..이미지 애니메이션을 다양하게 줄 수 있게다는 판단을 하였습니다.
굿~

개발 방법은 저의 블로그에 javascript 버전으로 올려놨는데
flash도 비슷합니다.
단지 actionscript로 개발된다는 점..

저는 Flex Builder 로 개발하였습니다.
구글맵에 나타나게 하는 방법은 너무나 쉽게 표현이 가능했고.

나머지는 actionscript 능력인데...일단 이미자만 올렸습니다.ㅋ
이미지는 자신이 원하는 배경을 사이즈에 맞게 포샵에서 편집해서
코딩으로 불러내면 되겠습니다.


[
Embed(source="place_map.png")]
 
private var PlaceBg:Class; 

var placeBg:Bitmap   = new PlaceBg();
addChild(placeBg);

저는 이렇게 sprite 에다가 bitmap 만 넣었습니다.
이제 다양한 모양의 구글맵을 만들어 보아요~



 




저작자 표시
Trackback Address :: http://dakccom.tistory.com/trackback/97 관련글 쓰기
Name
Password
Homepage
Secret
2011/10/20 00:42
앱스토어에 있는 앱을 ios에 맞춰서 업데이트를 할려구요..
XCODE 4.2 또는 5 버전으로 업그레이드하고 빌드하고 Application Loader 에 올렸습니다.
근디.  
 iPhone/iPod Touch: application executable is missing a required architecture.  At least one of the following architecture(s) must be present: armv6 (-19033) Unable to validate your application

이라는 메시지가 나옵니다.  ㄷㄷ 머지하면서 구글링을 했죠.ㅋ
Build Settings 에  Architectures 에 아마  Standard (arm7) - ${ARCHS_STANDARD_32_BIT)

이라고 있을텐데 이걸 지우고 armv6 armv7 로 변경하시면 됩니다.

즐프하세요~


 
저작자 표시
Trackback Address :: http://dakccom.tistory.com/trackback/95 관련글 쓰기
Name
Password
Homepage
Secret
2011/09/11 12:11
java를 사용해서 실시간으로 업로드되는 영상을 ffmpeg를 사용해서 변화시키는 부분입니다.
ffmpeg는 로컬로 돌아가는 프로그램이라서 java에서 
해당 프로그램을 실행을 시켜야 합니다.

윈도우라면 exe파일을 실행을 시켜야 한다는 것인데
java에서는 ProcessBuilder 라는 놈이 사용되고 있습니다.

순서는  A폴더에  파일이 들어왔는지 실시간으로 체크하고 
ffmpeg로 인코딩하고 완료가되면 B폴더로 옮기게 됩니다.

public String convert() {


String ffmpegPath = "ffmpeg 파일이 있는 경로";    예) /work/ffmpeg
String fOriginal = "/work/upload.mp4";  //실시간으로 업로드되는 파일
String fResult = "/work/upload.flv";      // 인코딩하고 저장 할 파일위치

String[] cmdLine = new String[]{ffmpegPath,

                                               "-i",                           // 변환시킬 파일위치

                                               fOriginal,      

                                               "-ar",

                                               "44100",                

                                               "-ab",

                                               "32",                      

                                               "-s",

                                               "500x300",     //화면 사이즈

                                               "-b",

                                               "768k",          //비트레이트

                                               "-r",

                                               "24",           //영상 프레임

                                               "-y",

                                               "-f",

                                               "flv",            // flv파일 형태로 출력

                                               fResult};  // 저장하는 위치입니다.
 

// 프로세스 속성을 관리하는 ProcessBuilder 생성.
ProcessBuilder pb = new ProcessBuilder(cmdLine);
pb.redirectErrorStream(true);
Process p = null;
 try
        // 프로세스 작업을 실행
        
p = pb.start();
} catch (Exception e) {         
     e.printStackTrace();

     p.destroy();
     return null;
}

exhaustInputStream(p.getInputStream());   // 자식 프로세스에서 발생되는 inputstrem를 소비시켜야합니다.


 
 try {

        // p의 자식 프로세스의 작업이 완료될 동안 p를 대기시킴
        p.waitFor();

 } catch (InterruptedException e) {

         p.destroy();

 }


// 정상 종료가 되지 않았을 경우

 if (p.exitValue() != 0) {

       System.out.println("변환 중 에러 발생");

       return null;

 }

   // 변환을 하는 중 에러가 발생하여 파일의 크기가 0일 경우

  if (fResult.length() == 0) {

        System.out.println("변환된 파일의 사이즈가 0임");

         return null;

  }

  p.destroy();

}

private
void exhaustInputStream(final InputStream is) {

    // InputStream.read() 에서 블럭상태에 빠지기 때문에 따로 쓰레드를 구현하여 스트림을 소비한다
         try {

                BufferedReader br = new BufferedReader(new InputStreamReader(is));

                String cmd = null;

                while((cmd = br.readLine()) != null) { // 읽어들일 라인이 없을때까지 계속 반복

                   //System.out.println(cmd);

                }

                br.close();

             } catch(IOException e) {

                e.printStackTrace();

             }

   }

public static void main(String[] args) 
{

 File f = new File("실시간으로 올라오는 파일위치");

if(f.exists()){
     convert();




단일 프로세스보다는 스레드로 돌리면 더 좋겟죠?
인코딩을 하게되면 cpu를 많이 잡아 먹습니다. ffmpeg가 아니더라도 막 올라가더군요..
 
이제 이 파일을 window 에서는 service로 linux에서는 crontab에 들록되어
계속해서 돌려주면 되겠습니다.



 


 
 
저작자 표시
Trackback Address :: http://dakccom.tistory.com/trackback/94 관련글 쓰기
Name
Password
Homepage
Secret
prev"" #1 #2 #3 #4 #5 ... #14 next