2013년 8월 28일 수요일

한빛리더스 7기 활동


한빛 리더스 7기


8월 21일에 결과 나왔다. ㅎㅎ



한빛 리더스 7기 IT 전문서에서 활동할 수 있게 되었다.
ㅋㅋ. 다시 조금은 잼나는 일이 주위에 생기려나.~~

8월 27일에 1차 미션이 시작 되었다. 

한빛 리더스 7기 미션 1 - 도서리뷰 / 오탈자 찾기



난 해커스(무삭제)라는 책을 선택 했다. 요즘 부쩍 해킹에 관심이 간다~~


제12회 스타트업 위크엔드 on the cruise



제12회 스타트업 위크엔드 on the cruise


 여성 위크엔드에 이어 두번째 참여하게 되었다. 

열정으로 살았지만 평탄한 느낌을 깨기위해, 배위에서 (제주도 크루즈) 한다니
색달라 과거와 달리 욕심 없이 경험해 보고자 신청했다. 
늦게 신청했지만, 항상 개발자는 부족하니~~ 한동안 이쪽을 손 놓아
조금 걱정이지만 완성도높이기 위한 기술적 도움을 주는데 치중해 보려한다.
(능력이 되는한..) 하루니,밤새서 하는 개발 문화는 없애야지..
이제 나라도 실천해야지...절대 늙어서 그런것은 아니겠지.
다만, 문화 타파 차원에서..ㅋㅋ 또 얼마나 좋은 사람들을 만날지..기대 므흣
  1.  http://onoffmix.com/event/18140
  2. http://m.appcenter.kr  : 8/28() 12:00 ~ 9/3() 10:00 : 100s Speech : 아!! 아이디어 많은 데 딱히 이번 이벤트에 낼 만한게 없다. 고민~~~
  3. startup@appcenter.kr : 신*분증(믿을 만한 곳이지만, 영 꺼림직 하다.) : 성함, 연락처 기재
  4. 문의처: 070-7525-0500(HOTLINE) 
  5. 공식 페이스북 www.facebook.com/SWSeoul
  6. 스타트업 위크엔드 Alumni 모임 www.facebook.com/groups/265177456841924
  7. http://appcenter.kr/




2012년 2월 2일 목요일

[android]android overlay 4.0 부터 HWComposer로 바뀜(2012. 02. 02)

android overlay 4.0 부터  HWComposer로 바뀜
http://mungi.tistory.com/256 에서 펌
참고 : http://hybridego.net/1485, http://hybridego.net/1482
[Android] Ice Cream Sandwitch 소스를 대충 훑어본 결과...
Linux/Android 2011/11/28 20:57

고도리님 말씀. http://www.aesop.or.kr/54050

많은 부분을 훑어보지는 않았습니다.

가장 큰 변화는 역쉬 Display/Audio에 있네요.....우쒸.

1. LayerBuffer가 없어지면서 Overlay가 없어지고, HWComposer가 새로 생겼습니다.


2. Audio HAL관련 부분에 변화가 많네요.
예제가 있어서 좋기는 한데, 예제가 꽝입니다............또 gingerbread에서 했던 짓을 해 놓은 듯

머 좋은거 주기 싫어서 제조사들 알아서 하삼....정도 이지만, 예전보다 나아졌네요...^^
즉, Audio HAL은 전부 재작업 수준입니다. Froyo/Gingerbread에서 작업했던 분들은 알 수 있겠지만요.

참, ALSA를 쓰기는 하는데, 아마도 이 부분은 전부 재작업일 듯 합니다.

3. Multimedia에 AACExtractor와 AVIExtractor가 들어갔습니다. 하나는 날로 먹을 듯 하네요.
AVI를 짤까 말까 고민하고 있었는데.......나이수....

4. Sensor들이 슬슬 default로 들어가는 녀석들이 늘었네요. 몇몇 업체는 짱으로 짜증날 듯

Camera/Input 부분만 보면 대략 윤곽이 나오겠네요..........개발 기간이랑 가격 견적(?)요...ㅎㅎ

좋은 Audio Device만 일주일 꼬박 작업해야할 듯 합니다....ㅠ.ㅠ

포드 google prediction api 적용(2012. 02. 02)

포드 google prediction api 적용 :  과거 운행정보 분석으로 운행 예측
http://code.google.com/intl/ko-KR/apis/predict/docs/developer-guide.html

[android]asset 주의 점(2012. 02. 02)

http://zeph1e.tistory.com/49#footnote_link_49_2
asset 주의 점
/* these formats are already compressed, or don't compress well */
static const char* kNoCompressExt[] = {
    ".jpg", ".jpeg", ".png", ".gif",
    ".wav", ".mp2", ".mp3", ".ogg", ".aac",
    ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
    ".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
    ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
    ".amr", ".awb", ".wma", ".wmv"
};

2012년 1월 30일 월요일

[android] 최강안드로이드 책 코드 발췌(2012. 01. 30)

1. android:background="@android:drawable/editbox_background"/>
2. FrameLayout mContentView = (FrameLayout)getWindow().getDecorView().findViewById(android.R.id.content);
3. final View zoom = mWebView.getZoomControls();    zoom.getTouchables().get(0).setOnClickListener(new OnClickListener(){
4. ABC<sup>+</sup>
5.     static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
        Contacts._ID,
        Contacts.DISPLAY_NAME,
        Contacts.CONTACT_STATUS,
        Contacts.CONTACT_PRESENCE,
        Contacts.PHOTO_ID,
        Contacts.LOOKUP_KEY,
    };
        Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,
        CONTACTS_SUMMARY_PROJECTION, null, null, null);
        startManagingCursor(cursor);
       
        SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
               android.R.layout.simple_list_item_2, cursor,
                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
                new int[] { android.R.id.text1, android.R.id.text2 });

        setListAdapter(mAdapter);
6.     onLayout()에서 호출함
view spoof, view original
       현재 레이아웃 스크린 좌표 얻기
        final int[] globalPos = new int[2];
        spoof.getLocationOnScreen(globalPos);
        레이이아웃에 위치를 지정해 주기
spoof.layout(x, y, x + original.getWidth(), y + original.getHeight());

onMeasure(int, int) Called to determine the size requirements for this view and all of its children.
onLayout(boolean, int, int, int, int)

private void showOverlay() {
       ToastViewOverlay overlay = (ToastViewOverlay)
               getLayoutInflater().inflate(R.layout.secure_view_overlay, null);
       overlay.setActivityToSpoof(this);
     
       Toast toast = new Toast(getApplicationContext());
       toast.setGravity(Gravity.FILL, 0, 0);
       toast.setDuration(Toast.LENGTH_LONG);
       toast.setView(overlay);
       toast.show();
   }
7.
int timeout = 10000;
       
        SocketAddress socketAddress = new InetSocketAddress("192.168.10.77", 6001);
sock = new Socket();
       
   sock.setReceiveBufferSize(64000);
   sock.setSoTimeout(30000);
   sock.setSoLinger(true, timeout);
   sock.connect(socketAddress, timeout);

PrintWriter out = new PrintWriter( new
BufferedWriter( new OutputStreamWriter(sock.getOutputStream())),true);
out.println(message);
// sleep(20000);
BufferedReader input = new BufferedReader(new InputStreamReader(sock.getInputStream()));
     
String st = input.readLine();
8.      // setTheme(android.R.style.Theme);
        // setTheme(android.R.style.Theme_Light);
        // setTheme(R.style.Theme_Translucent);
        setTheme(R.style.Theme_Transparent);
        setContentView(R.layout.main);
9.  public static final String testContent = "<html><body><b>HTML 문서를 TextView에 출력합니다.</b><font size='+1'>크게</font>"
    + "<img src=\"http://developer.android.com/assets/images/home/honeycomb-android.png\"/></body></html>";
    tvText.setText(Html.fromHtml(testContent, imgGetter, null));
    private final ImageGetter imgGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
HttpGet get = new HttpGet(source);
DefaultHttpClient client = new DefaultHttpClient();
Drawable drawable = null;
try {
HttpResponse response = client.execute(get);
StatusLine status = response.getStatusLine();

if (status.getStatusCode() != 200)
return null;

InputStream stream = response.getEntity().getContent();
   File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);      
   File file = new File(path, "HtmlPicture.png");
FileOutputStream fileout = new FileOutputStream(file);
byte buf[] = new byte[8192];
int len;

while ((len =stream.read(buf)) > 0) {
fileout.write(buf, 0, len);
}

fileout.close();
drawable = Drawable.createFromPath(file.toString());
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return drawable;
}
};

10. http://developer.android.com/reference/android/R.drawable.html
public class HelloTabs extends TabActivity implements TabHost.TabContentFactory {
        View v;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TabHost tabHost = getTabHost();
       LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);

       tabHost.addTab(tabHost.newTabSpec("tab1")
               .setIndicator("tab1", getResources().getDrawable(android.R.drawable.star_big_on))
               .setContent(R.id.view1));
       tabHost.addTab(tabHost.newTabSpec("tab2")
        .setIndicator("tab2", getResources().getDrawable(android.R.drawable.star_big_off))
               .setContent(R.id.view2));
       tabHost.addTab(tabHost.newTabSpec("tab3")
        .setIndicator("tab3", getResources().getDrawable(android.R.drawable.stat_notify_call_mute))
               .setContent(this));
   }

   @Override
public View createTabContent(String tag) {
    TextView tv = new TextView(this);
    tv.setText("Content for tab with tag " + tag);
       return tv;
   }
}

11.     private static int MOOD_NOTIFICATIONS = R.layout.main;
    private NotificationManager mNM;
    private final int[] mood = {R.drawable.stat_happy,R.drawable.stat_neutral,R.drawable.stat_sad};
    private final int[] message = {R.string.status_bar_happy_message,R.string.status_bar_ok_message, R.string.status_bar_sad_message};
          CharSequence text = getText(textId);
        Notification notification = new Notification(moodId, text, System.currentTimeMillis());
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, SyncThread.class), 0);

        notification.setLatestEventInfo(this, getText(R.string.status_bar_mood_title),
                       text, contentIntent);
        mNM.notify(MOOD_NOTIFICATIONS, notification);

12.
 private void addEvent(String title) {
    SQLiteDatabase db = hostData.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(HostDatabase.TIME, System.currentTimeMillis());
    values.put(HostDatabase.TITLE, title);
    db.insert(HostDatabase.TABLE, null, values);
   }

  private void deleteEvent(String title) {
   SQLiteDatabase db = hostData.getWritableDatabase();
   db.delete(HostDatabase.TABLE, "tiltle=?", new String[] {title});
  }

  private void updateEvent(String title) {
   SQLiteDatabase db = hostData.getWritableDatabase();
   ContentValues values = new ContentValues();
   values.put(HostDatabase.TIME, System.currentTimeMillis());
   db.update(HostDatabase.TABLE, values, "tiltle=?", new String[] {title});
  }
 
  private Cursor getEvents() {
    SQLiteDatabase db = hostData.getReadableDatabase();
    Cursor cursor = db.query(HostDatabase.TABLE, null, null, null, null,
        null, null);
   
    startManagingCursor(cursor);
    return cursor;
  }

  private void showEvents(Cursor cursor) {
    StringBuilder ret = new StringBuilder("Saved Events:\n\n");
    while (cursor.moveToNext()) {
      long id = cursor.getLong(0);
      long time = cursor.getLong(1);
      String des = cursor.getString(2);
      ret.append(id + ": " + time + ": " + des + "\n");
    }
    output.setText(ret);
  }

@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "( " + BaseColumns._ID
+ " integer primary key autoincrement, " + TIME + " integer, "
+ TITLE + " text not null);";
Log.d("EventsData", "onCreate: " + sql);
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion)
return;

String sql = null;
if (oldVersion == 1)
sql = "alter table " + TABLE + " add note text;";
if (oldVersion == 2)
sql = "";

Log.d("EventsData", "onUpgrade : " + sql);
if (sql != null)
db.execSQL(sql);
}

13.     <ProgressBar android:id="@+android:id/progress_large"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ProgressBar android:id="@+android:id/progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ProgressBar android:id="@+android:id/progress_small"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ProgressBar android:id="@+android:id/progress_small_title"
        style="?android:attr/progressBarStyleSmallTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

        // Request for the progress bar to be shown in the title
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
       
        setContentView(R.layout.main);
       
        // Make sure the progress bar is visible
        setProgressBarVisibility(true);
14. android:bufferType="spannable"
    http://blog.naver.com/taiji567?Redirect=Log&logNo=109529292

미러링크(터미널모드)(2012. 01. 30)

1. N-Screen
2. 미러링크(터미널 모드 : terminal mode)
3. MDS
4. http://www.mdstec.com/main/ : 02-2106-6000
5. phone to car : mds : 구성모 이사 (031)600-5011, 010-2275-8921
   - RTP, VNC, UPnP 기반 기술을 자체 개발하여 SW 공개 부담 해소
     스마트폰 검색 및 VNC 데이터
6. The Car Connectivity Consortium
7. In-car apps
8. 현대차 글로벌 텔레매틱스 브랜드인 ‘블루링크’
9. 현대차는 이번 박람회에서‘블루링크’를 비롯해 ▲스마트 커넥티비티 시스템(Smart Connectivity System), ▲근접인식 마우스틱(Motion Sensor Moustick), ▲지능형 햅틱 시스템(Intelligent Haptic System), ▲다이나믹 클러스터(Dynamic Cluster), ▲차량용 브라우저/웹 플랫폼(Car Browser System & Web Platform), ▲차량용 영상인식 안전시스템(Multifunctional Safety Vision System) 등 총 6종의 차량-IT 첨단 신기술을 선보였다.