2015년 1월 28일 수요일

[blog] SyntaxHighlighter 설정

<pre class="brush: 언어; 옵션이름 : ;"> 으로 사용

이 름초기값내  용
auto-linkstrueURL입력시 자동으로 링크시킬지 여부 설정 데모 보기
class-name''SyntaxHighlighter에 CSS를 적용시킬 때 데모 보기
collapsefalse내용 숨기기 여부 설정 (클릭시 보여지게 하는 기능). 데모 보기
first-line1첫번째 라인 번호를 변경 할 때 데모 보기
guttertrue왼쪽  넘버링(숫자) 표시 여부 설정 데모 보기
highlightnull특정 라인의 내용을 강조하고자 할 때 데모 보기
html-scriptfalseHTML/XML 코드를 강조하여 표시 데모 보기
smart-tabstrue탭 사용 설성. 데모 보기
tab-size4텝 사용시 뛰울 간격 설정 데모 보기
toolbartrue툴바 표기 설정. 데모 보기

여러가지 옵션을 동시에 지정하고 싶을 경우 세미콜론(;)으로 구분하여 연속으로 지정.
?
1
<pre class="brush: js; ruler: true; first-line: 10; highlight: [2, 4, 6]">...</pre>
(예)언어명:자바스크립트; 첫째라인 10번 부터; 강조라인 2,4,6 번 라인

그런데 위의 옵션을 항상 변경시킨 값으로 사용하고 싶을때는
SyntaxHighlighter 설정 과 마찬가지로 스킨-HTML/CSS-skin.html 의 </body></s_t3> 위에 다음과 같이 사용

?
1
2
3
4
SyntaxHighlighter.defaults['gutter'] = false;
SyntaxHighlighter.defaults['smart-tabs'] = false;
...
SyntaxHighlighter.all();
(예)넘버링과 탭 설정을 항상 사용하지 않을 경우

[Android][Error 해결] you need to use a theme.appcompat theme (or descendant) with this activity. 해결

android api v11 부터는 action bar 를 지원하지만 그 이전 버전에서 사용하기 위해서 v7-appcompat 을 사용해야 한다.

v7-appcompat을 사용했을 때

you need to use a theme.appcompat theme (or descendant) with this activity.

이와 같이 Theme.AppCompat 을 사용하지 않아서라고 나오는 에러를 볼 수 있다.
이때 아래와 같이 Theme를 설정하면 된다. (17번 줄만 추가)

res / values / styles.xml



    
    

    
    


2015년 1월 27일 화요일

[Android][java] Private Libraries, Android Dependencies, libs 알아보기


인터넷에서 예제 소스를 다운받아보다 이런 라이브러리 폴더(?)들을 많이 접하게 되었다.
라이브러리에 관련된 것이라는 것은 알고 있었지만, 정확히 어떤 것인지 몰라 많이 헤맬때가 많았다. 그래서 정리해봤다.


1. Android 4.4W.2 (안드로이드 버전마다 다름)
  • android.jar
Android 4.4W.2 버전의 기본 API library이다. 지정한 안드로이드 버전의 android.jar 라이브러리가 들어있다. 그러므로 이 library는 새로운 프로젝트를 생성할 때, 선택한 Android API level에 맞춰서 자동으로 생성된다.


2. Android Private Libraries
  • android-support-v7-appcompat.jar
  • android_support-v4
Android 버전이 낮은 디바이스에서 실행하기 위해 필요한 support library이다. 예를들어 Android API 19를 타겟으로 컴파일 했을 때, 이것을 낮은 API 버전의 디바이스에서 실행하기 위해서 android_support-v4 library가 필요하다.

v7과 v4의 차이점은 v7은 안드로이드 버전 3.0이상, v4는 안드로이드 버전 2.0이상의 디바이스에서의 실행을 지원한다.


3. Android Dependencies

Android Dependencies와 2번의 Android Private Libraries는 사실 '폴더'가 아니다. 이것들은 이클립스에서 사용자의 편의를 위해 만들어 놓은 것이다.

프로젝트를 생성하면, support library인 v4와 v7이 appcompat_v7_x/libs 폴더에 생성된다.

이것들을 Android Private Libraries는 단지 참조하는 것이다. 

그리고 Android Dependencies는 어떤 appcompat_v7_x 가 참조되고 사용되는지 알려준다.

libs와 Android Private Libraries는 이클립스 내에서 이름 옆에 표시되는 아이콘 부터 다른 모양이다. libs는 폴더이지만 Android Private Libraries는 실제 폴더가 아니기 때문이다. 그렇기 때문에 당연히 디스크에서 찾을수도 없다.

처음에 공부할 때, libs 에도 android_support-v4가 있고, Android Private Libraries에도 android_support-v4가 있어서 중복으로 충돌이 일어나는게 아닐까 하는 걱정이 있었는데, 중복이 아니었던 것이다!


4. Referenced Libraries

당연히 참조된 Library들을 표시해주는, 사용자의 편의를 위해 이클립스에서 만들어 준 실존하지 않는 폴더이다.


[Android][xml] Sliding Drawer 사용법

1. 사용하는 경우 : 슬라이딩 메뉴나 화면 밖에서 슬라이드 되어 표시되게 할때

2. 이클립스 xml 쪽에서 생성

3. Sliding Drawer 내부에 버튼 역할을 하는 @+id/handle과 슬라이딩 되어 나타나는 Content 가 되는 @+id/content가 반드시 포함되어야 한다.

4.  xml 설정


 1) android:allowSingleTap="true"
  handle 클릭할 때 열 수 있도록 할 것인지 설정. 
  디폴트는 true, false설정 시 드래그를 통해서만 열 수 있음

 2) android:animateOnClick="true"
  오픈할때 미끄러지는듯한 애니메이션을 사용 할 것인지 설정. 디폴트는 true.

 3) android:bottomOffset="10dp"
  서랍을 닫았을때 handle과 parent layout 과의 간격

 4) android:content="@+id/content
  슬라이딩 되어 나타나는 내용

 5) android:orientation="vertical"
  SlidingDrawer가 나타나는 방향.
  Horizontal은 우측, Vertical은 아래에서 열림. 디폴트는 vertical.
  좌측, 상단을 하려면 복잡하게 다른 방법을 써야 한다고 함

 6) android:topOffset="100dp"
  SlidingDrawer를 오픈할 때 부모 레이아웃과의 간격.

2015년 1월 26일 월요일

[Android] 크기 리소스 사용법

http://hyeonstorage.tistory.com/trackback/156

[Android][Java] 트위터(Twitter) 연동 로그인+트윗(글쓰기)

1. 로그인 연동하기(이전 글)

2. MainActivity.java 버튼 추가
  Button btnTwitter = (Button) findViewById(R.id.btnTwitter);

  btnTwitter.setOnClickListener(new OnClickListener() {

   

   @Override

   public void onClick(View v) {

    // TODO Auto-generated method stub

    AndroidUtil.gotoActivity(ctx, com.example.testfacebook.SendTwitter.class);

   }

  });

3. activity_main.xml 버튼 추가
    <Button

        android:id="@+id/btnTwitter"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="글올리기" />


4. SendTwitter.java
package com.example.testfacebook;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;



import com.example.testfacebook.AndroidUtil;

import com.twitter.sdk.android.Twitter;

import com.twitter.sdk.android.core.TwitterAuthConfig;

import io.fabric.sdk.android.Fabric;

import android.content.Context;

import android.content.Intent;

import com.twitter.sdk.android.core.Callback;

import com.twitter.sdk.android.core.Result;

import com.twitter.sdk.android.core.TwitterAuthToken;

import com.twitter.sdk.android.core.TwitterException;

import com.twitter.sdk.android.core.TwitterSession;

import com.twitter.sdk.android.core.identity.TwitterLoginButton;



public class SendTwitter extends Activity {

 Context ctx = this;



 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  

  Fabric.with(this, new TweetComposer());

  Uri muri = Uri.parse("http://test.test.jpg");

  

  TweetComposer.Builder builder = new TweetComposer.Builder(this)

      .text("테스트 입니다.")

      .image(muri);

 

  builder.show();



 }

}

5. sendtwitter.xml 생성(공백)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
</LinearLayout>
6. AndroidManifest.xml Activity 추가
...
        <activity
            android:name="com.example.testfacebook.SendTwitter" 
            android:label="@string/app_name" 
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>  
                <category android:name="android.intent.category.DEFAULT"/>  
                 <category android:name="android.intent.category.BROWSABLE"/>  
                 <data android:scheme="testfacebook" android:host="testfacebook.sendtwitter" />  
          </intent-filter>
        </activity> 
...

[Android][Java] 트위터(Twitter) 연동 로그인(login)

1. 트위터를 통한 로그인 기능

   1) 프로젝트 생성

   2) AndroidManifest.xml 에서 activity 추가

        <activity

            android:name="com.example.testtwitter.SendTwitter"

            android:label="@string/app_name"

            android:screenOrientation="portrait" >

            <intent-filter>

                <action android:name="android.intent.action.VIEW"/> 

                <category android:name="android.intent.category.DEFAULT"/> 

                 <category android:name="android.intent.category.BROWSABLE"/> 

                 <data android:scheme="testtwitter" android:host="testtwitter.sendtwitter" /> 

          </intent-filter>

        </activity> 



   3) MainActivity.java

public class MainActivity extends Activity {

 

 private TwitterLoginButton loginButton;

 

 // Note: Your consumer key and secret should be obfuscated in your source code before shipping.

 private static final String TWITTER_KEY = "트위터 개발자 홈페이지에서 발급";

 private static final String TWITTER_SECRET = "https://dev.twitter.com/";

 



 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);

  Fabric.with(this, new Twitter(authConfig));

  setContentView(R.layout.activity_main);

  

  loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);

        loginButton.setCallback(new Callback() {

            @Override

            public void success(Result result) {

                // Do something with result, which provides a TwitterSession for making API calls

             TwitterSession session = Twitter.getSessionManager().getActiveSession();

             TwitterAuthToken authToken = session.getAuthToken();

             String token = authToken.token;

             String secret = authToken.secret;

             Log.d("token", token);

             Log.d("secret", secret);

            }



            @Override

            public void failure(TwitterException exception) {

                // Do something on failure

            }

        });

 }

 

 @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        loginButton.onActivityResult(requestCode, resultCode, data);

    }

}
4) main_activity.xml

    
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <com.twitter.sdk.android.core.identity.TwitterLoginButton
        android:id="@+id/twitter_login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
</LinearLayout>

혈액응고/뇌졸중을 알리는 4가지 징조

혈액응고/뇌졸중을 알리는 4가지 징조
위의 사진은 혈액이 응고하여 혈관이 막히고
이 때문에 혈액이 공급되지 않는 뇌의 부분을 보여 줍니다.

뇌졸중 확인방법
BBQ 파티장에서 한 부인이 잠간 넘어졌다.
구급차를 부를까요? 라고 했지만 그 부인은 괜챦다며
구두가 새거라서 잠간 휘청거렸을 뿐이라 했다.
여럿이 그 부인 옷에서 흙을 터러주었고
음식도 새것으로 한 접시 가져다 줬다.
그날 저녁 부인은 그런데도 즐기고 귀가했다.
나중에 그 남편이 전화해서 부인을 병원데려 갔다고 알렸다.
오후 6시에 그 부인은 사망했다.
BBQ파티에서 부인은 뇌졸중을 당한 것이다.
만일 그때 누가 뇌졸중을 확인하는 방법을 알기만 했어도
부인은 지금 살아 있을 것이다.
뇌졸중이 오면 죽지 않으면 어쩔수 없는
절망적인 상태가 되고 만다.
신경과 의사의 말입니다.
뇌졸중 환자를 3시간 이내에 치료하면 뇌졸중에서 오는
결과를 완전히 역전시킬수 있답니다.
문제는 뇌졸중이 발병하면 즉시 증세를 인지하고 진단해서
3시간 이내에 환자를 치료하는 일이지요.
좀체로 쉬운일은 아니지요.
뇌졸중 확인하기
뇌졸중을 STROKE 이라 하지 않습니까
처음 석자 STR을 기억해야 하겠습니다.
뇌졸중의 징후를 찾아 내기란 쉽지가 않습니다.
그러나 이걸 알지 못하면 비참한 재앙이 발생합니다.
주변에 있는 사람이 뇌졸중의 징후를 알지 못 하면 환자는
영적인 뇌 손상을 당하게 됩니다.
의사들의 말입니다만 옆에있는 사람이
다음과 같은 간단한 질문
3 가지를해서 뇌졸중을 알아 낼수
있다고 합니다.
S - Smile 웃어 보세요
T - Talk 말을 해보세요.
(가령 오늘 날씨가 개였는지 말해 보세요.
제대로 완전한 문장으로 답하는지를 주목 해야 합니다.)
R - Raise 두 팔을 올려 보세요
위의 3가지 가운데 한가지라도 하지 못하면 즉시 구급차를 부르세요.
그리고 구급요원에게 상황을 설명하세요
뇌졸중의 새로운 징조 네번째
혀를 내밀어 보세요.
혀를 내 밀었는데 혀가 꼬부라 졌든가 이쪽 또는
저쪽으로 굽었다든가 하면
이것이 뇌졸중의 또 다른 징조입니다.
심장내과의사의 말입니다만 이 전자메일을 받는 사람이 다시
10 사람에게 이 전자메일을 보내면 그 중의 한 사람은
살린다고 확신 한답니다.
저는 제 몫을 했습니다.
당신도 널리 전파하여 주세요,

2015년 1월 24일 토요일

[Java] int, double, long, float <->(to) string 형 변환하기

int -> string


String myString = Integer.toString(my int value)
   or
String str = "" + i

String -> int


int i = Integer.parseInt(str);
   or
int i = Integer.valueOf(str).intValue();

double -> String

String str = Double.toString(i);

String -> double

double d = Double.valueOf(str).doubleValue();

long -> String

String str = Long.toString(l);

String -> long

long l = Long.valueOf(str).longValue();
   or
long l = Long.parseLong(str);

float -> String

String str = Float.toString(f);
  
String -> float

float f = Float.valueOf(str).floatValue();

integer -> boolean

b = (i != 0);

boolean -> integer

i = (b)?1:0;