Tag Archives: 구글

Google I/O 2012

구글 I/O 2012 동영상을 생중계합니다.  https://developers.google.com/events/io/

각 세션에 대한 정보는 여기서(https://developers.google.com/events/io/sessions) 보실 수 있습니다.

안드로이드 관련 세션만 보시려면 여기(https://developers.google.com/events/io/sessions#android)를 보시면 됩니다.

구글의 새로운 안드로이드 마스코드 젤리빈(Jelly Bean)

구글 젤리빈 마스코트를 구글 캠퍼스에 새우면서, 새로운 안드로이드 버전인 젤리빈(Jelly Bean)을 공식화했습니다.  어떻게 생겼는지 아래 사진을 참고하시구요.  왠지 안드로보의 팔을 돌리면 젤리빈이 아래로 나올 것 같네요. ^^  새로운 안드로이드 버전에서는 과연 어떤 신기술을 탑재했을지 기대됩니다.  참, 새로운 안드로이드 버전인 Jelly Bean의 버전은 5.0이 아니라, 4.1이라고 합니다.  버전을 보면 아주 큰 변화보다는 소소한 기능 업데이트로 보여지긴 합니다.  미국시간으로 수요일(6월 27일)에 구글 I/O에서 자세한 내용은 발표할 것으로 보입니다.  이번 구글 I/O는 동영상으로 생중계 해준다고 하니, 관심있는 분들은 보셔도 좋을 것 같습니다.  생중계를 보실 분들은 아래 링크로 가시면 됩니다.

https://developers.google.com/events/io/

[번역] Using DialogFragments

이 포스트는 구글 안드로이드 개발자 블로그의 포스트를 번역한 내용입니다. 원문과 표현상의 차이는 있을 수 있으나 전체적인 맥락은 동일함을 미리 말씀드리며, 한국 안드로이드 개발자들에게 도움이 되었으면 좋겠습니다.

허니컴은 앱에서 여러 액티비티 사이에서 재사용 할 수 있는 UI와 로직을 지원하기 위해 Fragments라는 것을 소개했습니다. 동시에 액티비티의 showDialog와 dismissDialog 메서드 대신 DialogFragments를 사용하길 권장하고 있습니다.

이 포스트에서는 v4 지원 라이브러리 (허니콤 이전 버전 호환을 위한)를 이용해 DialogFragments를 어떻게 사용하는지 간단한 대화창을 통해 보여드릴 것입니다. Dialogs와 관련한 디자인 가이드라인은 Android Design 사이트를 참고하시기 바랍니다.

 

레이아웃

여기에 fragment_edit_name.xml라는 이름을 가진 대화창의 레이아웃이 있습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/edit_name"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:layout_gravity="center" android:orientation="vertical"  >

    <TextView
        android:id="@+id/lbl_your_name" android:text="Your name"
        android:layout_width="wrap_content" android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/txt_your_name"
        android:layout_width="match_parent"  android:layout_height="wrap_content"
        android:inputType=”text”
        android:imeOptions="actionDone" />
</LinearLayout>

두 개의 선택적인 속성을 주의해 보시기 바랍니다.  android:inputType=”text” 속성과 함께 설정된 android:imeOptions=”actionDone” 속성은 소프트 키보드가 엔터키 대신 완료키를 보이도록 설정합니다.

대화창 코드

대화창은 DialogFragment를 상속하며, 하위버전 호환성을 위해 v4 지원 라이브러리를 참조할 것입니다. (Eclipse 프로젝트에 라이브러리를 추가하려면, 프로젝트에서 오른쪽 마우스 버튼을 누르고 Android Tools | Add Support Library를 선택하면 됩니다.)

import android.support.v4.app.DialogFragment;
// ...

public class EditNameDialog extends DialogFragment {

    private EditText mEditText;

    public EditNameDialog() {
        // Empty constructor required for DialogFragment
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_edit_name, container);
        mEditText = (EditText) view.findViewById(R.id.txt_your_name);
        getDialog().setTitle("Hello");

        return view;
    }
}

대화창은 DialogFragment를 상속하고 반드시 필요한 빈 constructor를 포함합니다.  Fragments는 onCreateView() 메서드가 제공된 LayoutInflater를 이용해 실제로 뷰를 로딩하도록 구현합니다.

 

대화창 보이기

이제 Activity에서 대화창을 보여주는 코드가 필요합니다. 여기에 사용자의 이름을 입력할 EditNameDialog를 즉시 보여주는 간단한 예제가 있습니다. 작업 완료 후, 입력된 텍스트를 Toast로 보여줍니다.

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
// ...

public class FragmentDialogDemo extends FragmentActivity implements EditNameDialogListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        showEditDialog();
    }

    private void showEditDialog() {
        FragmentManager fm = getSupportFragmentManager();
        EditNameDialog editNameDialog = new EditNameDialog();
        editNameDialog.show(fm, "fragment_edit_name");
    }

    @Override
    public void onFinishEditDialog(String inputText) {
        Toast.makeText(this, "Hi, " + inputText, Toast.LENGTH_SHORT).show();
    }
}

여기에 주의깊에 봐야 할 부분이 몇 가지 더 있습니다.  먼저, Fragment API와 하위 버전과의 호환성을 위해 지원 라이브러리를 사용하고 있기 때문에, 샘플 코드의 Activity는 지원 라이브러리의 FragmentActivity를 상속합니다.  때문에, getFragmentManager() 대신 getSupportFragmentManager()를 호출합니다.

초기 뷰를 로딩한 후, 액티비티는 곧바로 show() 메서드를 호출하여 EditNameDialog를 보여줍니다.  이를 통해 DialogFragment가 Dialog에 어떤 일이 일어나고 있는지 알 수 있게 하며, Fragment 상태도 일관성을 유지하게 됩니다.  기본적으로 뒤로가기 버튼은 추가적인 코딩이 없어도 대화창을 사라지게 합니다.

 

대화창 사용하기

다음으로 EditNameDialog가 결과 문자열을 Activity로 리턴하도록 수정해 봅시다.

import android.support.v4.app.DialogFragment;
// ...
public class EditNameDialog extends DialogFragment implements OnEditorActionListener {

    public interface EditNameDialogListener {
        void onFinishEditDialog(String inputText);
    }

    private EditText mEditText;

    public EditNameDialog() {
        // Empty constructor required for DialogFragment
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_edit_name, container);
        mEditText = (EditText) view.findViewById(R.id.txt_your_name);
        getDialog().setTitle("Hello");

        // Show soft keyboard automatically
        mEditText.requestFocus();
        getDialog().getWindow().setSoftInputMode(
                LayoutParams.SOFT_INPUT_STATE_VISIBLE);
        mEditText.setOnEditorActionListener(this);

        return view;
    }

    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (EditorInfo.IME_ACTION_DONE == actionId) {
            // Return input text to activity
            EditNameDialogListener activity = (EditNameDialogListener) getActivity();
            activity.onFinishEditDialog(mEditText.getText().toString());
            this.dismiss();
            return true;
        }
        return false;
    }
}

사용자 편의를 위해 mEditText.requestFocus()를 사용해 프로그램적으로 EditText로 포커스를 이동합니다.  다른 방법으로는 레이아웃 XML에 <requestFocus/> 태그를 사용할 수도 있습니다. 하지만, 경우에 따라서는 프로그램적으로 포커스를 호출하는 것이 더 좋을 수도 있습니다.  예를 들어, 레이아웃 XML에서 포커스를 호출할 경우, Fragment의 onCreateView() 메서드에 추가된 OnFocusChangeListener가 호출되지 않습니다.

사용자가 EditText에 포커스를 두면, 소프트 키보드가 자동으로 나타납니다.  프로그램적인 포커스로 동일한 이벤트를 발생시키려면, callgetDialog().getWindow().setSoftInputMode()를 호출합니다.  이전에 Dialog에서 사용하던 Window 관련 작업들도 동일하게 DialogFragment에서 사용할 수 있지만, getWindow() 대신에 getDialog().getWindow()를 호출해야만 합니다.  결과 대화창은 휴대폰과 태블릿에 동일하여 보여집니다:

onEditorAction() 메서드는 사용자가 완료키를 누를 때, 콜백을 처리하는데, 이는 EditText에 OnEditorActionListener를 설정했기 때문입니다. 입력된 텍스트를 전달하기 위해 Activity로 호출됩니다. 이를 위해 EditNameDialog에서 Activity에 의해 구현된 EditNameDialogListener 인터페이스를 선언합니다.  이것은 대화창이 많은 액티비티에서 재사용될 수 있게 해줍니다. onFinishEditDialog()에서 콜백 메서드를 발생시키기 위해 getActivity()를 호출하여 대화창을 실행하는 Activity의 참조키를 획득합니다.  이것은 MVCarchitecture에서 뷰가 컨테이너와 통신할 수 있게 하는 일반적인 패턴입니다.

대화창을 두 가지 방법 중 한 가지로 없앨 수 있습니다.  여기서는 Dialog 클래스 자체에 있는 dismiss()를 호출하고 있습니다.  이것은 show() 메서드처럼 Activity에서 호출 될 수도 있습니다.

이 글이 Dialogs와 관련이 있는 Fragments에 대한 이해하는데 어느 정도 도움이 되었으면 합니다.  이 글에 사용된 샘플 코드는 Google Code에서 찾으실 수 있습니다.

Fragments에 대한 추가적인 자료:

구글 블로그 원문: http://android-developers.blogspot.com/2012/05/using-dialogfragments.html

2012년 6월 6일 IPv6 공식 런칭

2012년 6월 6일 (현충일이네요.  ^^;) GMT (한국시간으로 오전 9시) 전세계적으로 IPv6가 공식 런칭됩니다.  아래 언급된 전세계 메이저 인터넷 및 네트워크 장비 회사들이 참여하고 있습니다.  IPv6가 새로 런칭되는 이유는 현재 사용하는 IPv4의 모든 IP대역이 거의 소진되었기 때문입니다.  초기 설계했을 때는 충분했으나, 컴퓨터가 기하급수적으로 늘어나면서 IP가 모자라게된 것입니다.

AKAMAI, AT&T, CISCO
COMCAST, D-LINK, FACEBOOK
FREE TELECOM, GOOGLE, INTERNODE
KDDI, LIMELIGHT, MICROSOFT BING
TIME WARNER CABLE, XS4ALL, YAHOO!

IPv6에 대한 설명은 위키피디아(http://ko.wikipedia.org/wiki/Ipv6)를 참고하시면 좋을 것 같습니다.  기본적인 개념은 현재 사용되고 있는 기존의 IPv4보다 훨씬 많은 IP 주소를 사용할 수 있다는 것입니다.  IPv4는 32 비트의 정보를 저장할 수 있지만, IPv6는 128 비트의 정보를 저장할 수 있습니다. 위키피디아의 설명에 따르면, 32비트 주소공간이란, 32 비트로 표현할 수 있는 주소영역을 지칭합니다. 32 비트에 의해 생성할 수 있는 모든 IPv4 주소는 232인 4,294,967,296개입니다.  반면에, IPv6의 128비트 주소공간은 128 비트로 표현할 수 있는 2128개인 약 3.4×1038개(340,282,366,920,938,463,463,374,607,431,768,211,456개)의 주소를 갖고 있어 거의 무한대로 쓸 수 있습니다.  현재 공식런칭까지 남은 시간을 보시려면 아래 이미지를 클릭해 보시기 바랍니다. ^^

구글 검색 효과적으로 사용하기

예전과 달리 이제 한국에서도 구글 검색을 많이 사용하고 있습니다.  안드로이드가 활성화되기 전에는 일부 전문자료 검색이 필요한 사람들만 구글 검색을 활용했지만, 스마트폰(안드로이드)이 대중화되면서, 일반 사용자들도 기본 검색엔진으로 구글을 많이 사용하고 있습니다.  그렇다면, 여러분은 구글 검색을 효과적으로 사용하고 계신가요?

구글 검색은 일반적으로 알려지지 않은 다양한 검색 옵션이 존재합니다.  추가적인 검색조건을 제시함으로 원하는 결과를 좀 더 빨리 찾을 수 있게 도와줍니다.  이런 구글 검색팁을 제공하는 인포그래픽이 있어서 공유합니다.  구글 검색이 제공하는 추가적인 검색옵션 명령어는 아래와 같은 것들이 있습니다.

site: 사이트(도메인) 주소
~ 검색할 관련 단어
“” 큰 따옴표 안의 문구와 정확히 일치하는
– 검색에서 제외할 단어
.. 검색결과에 포함할 기간

예를 들어 아래와 같이 검색어를 입력하면:
site:nytimes.com ~college test scores -STATs 2008..2010

“nytimes.com 사이트에서 college라는 단어와 관련있는 test scores라는 문구를 포함하고, STATs라는 단어는 제외된 2008년에서 2010년 사이의 데이터를 찾아라~”라는 의미가 됩니다.

이 외에도 아래와 같은 추가적인 명령어 옵션들이 있습니다.

filetype: 검색할 파일의 확장자
intitle: 타이틀에 입력한 단어를 포함하는
author: 작성자

또한 구글 검색을 아래와 같이 간편한 유틸리티로도 사용할 수 있습니다.  디테일에 강한 구글 검색!  이런 숨겨진(?) 기능들을 오늘부터 한번 사용해 보시죠~

define:  입력한 단어의 뜻을 알려줍니다
(2*3)/5+44-1  [수학공식]  입력한 수학공식을 자동으로 계산해 줍니다
54 pounds in kilograms  54 파운드를 킬로그램으로 변환한 값을 알려줍니다

새로운 온라인 광고 지표를 제안한 구글(Google)

구글이 온라인 광고에서 사용할 새로운 지표(metrics)를 제안했습니다.  Active View와 Active GRP (Gross Rating Point) 입니다.  각 지표가 의미하는 바는 아래와 같습니다.

Active View
이 지표는 아마도 온라인 임프레션(impression)을 대체할 새로운 표준이 될 수도 있습니다. 이 제안은 현재 Media Rating Council에 제출된 상태이며 광고가 “보여진” 것을 계산하는 기준은 “최소 1초 이상 50% 이상이 사용자에게 보여진” 것입니다.

Active GRP
이 지표는 TV 분야에서 사용되는 지표인 Gross Rating Point의 온라인 버전입니다.  즉, 얼마나 많은 사람이 그 광고를 봤느냐를 측정합니다. Active GRP는 디지털한 방식으로 광고 캠페인의 도달율과 빈도를 계산하지만, 차이점이 있다면 일반 GRP와 달리 광고주가 실시간으로 반응할 수 있기 때문에 Active라는 단어를 추가했습니다.

아래는 구글에서 제작한 홍보 유투브 동영상입니다.  구글이 제안한 새로운 온라인 광고 측정지표가 온라인 광고업계의 신뢰도를 얼마나 향상시킬지 지켜봐야 할 것 같습니다.

Google Project Glass

4월 5일 구글이 “Project Glass”라는 이름으로 새로운 AR 기기를 소개했습니다.  홍보 유투브 동영상을 보면, 어떤 기능을 하는 것인지 쉽게 상상할 수 있습니다.  증강현실을 이용하여 사용자에게 필요한 정보를 실시간으로 바로 전달해 줍니다.  SF 영화에서만 볼 것같은 일들이 현실이 되어가고 있습니다.  하지만, 구글이 자선사업을 하는 곳이 아니라 영리법인이라는 점에서 향 후 AR을 이용해 어떤 작업을 할 것인지에 대한 새로운 비디오 매시업 유투브 동영상을 Rebellious Pixels이라는 사람이 올렸습니다.  우리 삶을 윤택하게 할 기술일지 아니면 광고로 도배될지 한 번 지켜봐야 할 것 같습니다.

구글 Original 유투브 동영상

“ADmented Reality — Google Glasses Remixed with Google Ads” by Rebellious Pixels

마지막으로 하나의 동영상을 더 공유해 드립니다. 이번에는 윈도우 프로젝트 글래스 입니다. ^^

Google: Behind The Numbers

2011년 Google은 디스플레이, 모바일, 브랜드 광고 네트워크를 발전시키기 위해 노력해 왔습니다.  Google 수익의 97%는 검색광고에서 나오고 있습니다.  그렇다면 누가 어떤 키워드에 많은 투자를 하는 것일까요?

Google은 글로벌 광고 시장에서 44%의 점유율을 가지므로, 이러한 데이터에 집중할 필요가 있습니다.  참고로, 국내에서는 NBP(NHN의 자회사)와 오버추어 코리아가 검색광고 시장의 대부분을 차지하고 있습니다.

google-advertising-2011

Google에 가장 많은 가장 많은 광고비를 쓰는 회사는 Ask.com, Match.com, Citysearch를 소유한  IAC/InterActiveCorp 이 차지했습니다.

Amazon,  eBay, 텔레콤 회사인  AT&T와 같은 사이트도 상위권에 랭크되어 있네요.

아래 인포그래픽은 Google이 가지고 있는 강점을 잘 요약하고 있습니다.

Google Behind The Numbers
From: BusinessMBA.org

 

Reference Source: http://searchenginewatch.com/article/2132140/Googles-20-Largest-U.S.-Search-Advertisers-of-2011

에릭슈미트가 구글 CEO자리를 창업자 래리페이지에게

현 구글 CEO 및 Chairman인 에릭슈미트가 구글 CEO 자리를 4월 4일부터 창업자인 래리페이지에게 넘긴다고 합니다.  본인은 Chairman 자리를 계속 유지하면서 계약, 파트너십 등과 같은 구글의 외부적인 업무에 집중하겠다고 합니다.   지난 10년간의 급속한 성장을 이룩한 구글이 이제 새로운 모멘텀을 만들려고 하는 것 같습니다.   좀 더 실무적인 감각이 있는 래리페이지가 CEO를 맡으면 안드로이드도 좀 더 혁신적으로 바뀌게 될까요?  어떤 큰 변화가 있을지 기대해 봅니다.


구글 공식 블로그: An update from the Chairman