Nano Blog - 오병우

다음의 암호를 해석하시오.

---------------------------------------

A506EF0 580F4A7FCC 06E

002C67 534FC2 308B4584

63A1FFF A125D 7C8E300A

---------------------------------------


정답: CZ-9842-R

'세상 사는 이야기' 카테고리의 다른 글

[종료] 쿠팡 2만원 싸게 사기  (0) 2015.08.01
구미-인천공항 예매  (0) 2015.06.21
[종료] 그루버스 추천인 이벤트  (2) 2014.06.05

왼쪽 위 삼선 눌러서 DrawerLayout 나올 때 원래 내용(나머지 부분)이 어두워 지는 것을 막는 방법

mDrawerLayout.setScrimColor(Color.TRANSPARENT);


---------------------------------------

그냥 그림자 없애려면 다음 함수 사용


setDrawerShadow(Drawable shadowDrawable, int gravity)

setDrawerShadow(int resId, int gravity)

쿠팡 대란이라고 하길래 뭔가 했더니, 회원가입시 5,000원 캐시를 주고 첫 구매 이벤트로 15,000원을 줘서 총 2만원을 싸게 살 수 있는 이벤트를 하고 있었다. (현재 2015년 8월 1일. 언제 끝날 줄은 모름)


다음의 링크로 가입을 하면 5천원 캐시를 준다. (다른 사람의 추천인 링크로 가입해도 되지만, 만약 그냥 쿠팡 사이트에서 회원가입하면 5천원 캐시를 받지 못한다. 난 미심쩍어서 그냥 가입해서 5천원 날렸다..ㅠㅠ)


다음의 링크로 가입 또는 로그인을 한후에 구매를 하면 구매 후 10일 뒤에 내게 (글쓴이) 5천원 캐시가 온다고 하니 공짜로 생긴 2만원으로 뭘 사주시길...


http://coupang.com/memberJoinFrm.pang?token=326a2370b3012620eb87d970d365701c


회원 가입 후에는 다음의 링크로 가서 1만5천원 쿠폰을 받으면 된다. 이거는 24시간안에 써야함. 2만원 이상 사야 적용 가능. 근데, 여러 개를 장바구니에 넣고 합쳐서 2만원이 넘어도 사용 가능!!!


http://www.coupang.com/promotion/firstTimeBuyer.pang?promotionCode=102


핸드폰 번호 인증하고 난 뒤에 반드시 쿠폰 다운 버튼을 누르시길...


------------------------------------------------------------

추천하는 품목은 다음과 같다.


- 샤오미 보조 배터리 10000mAh (예전꺼는 10400인데 더 작아졌다고 함) (나도 이번에 쿠팡에서 사서 아직 안써봄)


22,900원 케이스 증정 (할인 뒤에는 2천9백원!!!) 무료배송


http://www.coupang.com/np/products/71556098


또는


21,200원 단품 (할인 뒤에 천2백원!!ㅎㅎ) 무료배송


http://www.coupang.com/np/products/93071167


Anker 5포트 충전기 (이거 쓰고 있는데 강추) 33,900원 (할인뒤에 13,900원 무료배송)


http://www.coupang.com/np/products/92609371


'세상 사는 이야기' 카테고리의 다른 글

[OO] 암호 해석  (1) 2015.11.07
구미-인천공항 예매  (0) 2015.06.21
[종료] 그루버스 추천인 이벤트  (2) 2014.06.05

1. 코딩 컨벤션

프로그램을 작성할 때는 일반적으로 다른 사람들이 많이 사용하는 방식을 따르는 것이 좋다.

어떤 방식을 선호하는지 분석해 주는 사이트가 있어서 소개한다.

예를 들면, 


if ( ~ ) {

} else if {

} else {

}


또는


if ( ~ ) 

{

} else if 

{

} else 

{

}

등등...


http://www.sideeffect.kr/popularconvention/


남들이 어떤 것을 많이 쓰는지 알아두고.. 판단은 각자 개인이..


2. 네이밍 컨벤션

이름을 지을 때도 주의해서 지어야 한다.


함수명: 동사로 시작

클래스명, 변수명: 명사로 시작


해당 언어의 네이밍 컨벤션을 익히고 사용하길 권장한다.


여러명이서 협업 프로젝트를 진행할 때는 특히 컨벤션을 미리 정하고 프로그래밍에 착수하는 것이 좋다. 

예를 들어, C 언어면 모듈 이름 뒤 언더바(_) 뒤에 동사(첫 글자 대문자)로 시작하는 함수 이름 등...

o 공항 리무진

구미에서 인천공항 예매는 다음 사이트에서 가능하다. 소요시간은 3시간 ~ 3시간 30분. 넉넉잡고 출발 6시간(4+2) 전의 표를 구매하면 될 것같다.

요금은 심야는 32,500원, 오전 4시 20분부터는 29,500원.


https://www.busterminal.or.kr/


예전에 심야 시간에는 매표소 직원이 없어서 직접 터미널에 가서 구매했어야 했지만, 이제 자동 발매기가 생겨서 터미널에 가지 않고도 인터넷으로 심야 시간 예매가 가능하다. 예매한 카드를 가지고 당일날 터미널에 가서 자동 발매기에서 표를 받을 수 있다.


그리고, 예전에는 터미널 주차장이 10분까지 무료였는데, 이제는 무조건 30분까지 500원을 받는다. 


o KTX

김천구미역에서 인천공항까지 가는 KTX도 있으나 운행 회수가 많지 않아서 시간이 정확히 맞지 않는다면 타기가 쉽지는 않을 것 같다. 시간은 2시간 30분정도 걸리니 시간만 맞으면 시간을 절약할 수 있어서 좋다. 

요금은 일반실 46,800원.

2015년 6월 21일 현재 06:13 차가 첫 차이고 08:42분 도착이므로 오전 11시 이후 ~ 오후 2시 이후 비행기면 타도 좋을 듯 싶다.


http://www.letskorail.com/


김천구미역 주차장은 하루 7,000원.

'세상 사는 이야기' 카테고리의 다른 글

[OO] 암호 해석  (1) 2015.11.07
[종료] 쿠팡 2만원 싸게 사기  (0) 2015.08.01
[종료] 그루버스 추천인 이벤트  (2) 2014.06.05

솔루션 뷰 - [프로젝트명].rc 파일 더블 클릭

String Table - String Table - IDR_MAINFRAME


  <windowTitle>\n<docName>\n<fileNewName>\n

                    <filterName>\n <filterExt>\n<regFileTypeID>\n

                    <regFileTypeName>\n <filterMacExt(filterWinExt)>\n

                    <filterMacName(filterWinName)>


출처: http://support.microsoft.com/kb/129095/ko


Visual Studio 2013 기준으로 다음 위치에 구현 소스 코드 있음 (다른 버전은 12.0 부분 변경)


C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc


찾으려던 Polygon은 Win32 API에 있어서 실패...

1>  ptxas C:/Users/User/AppData/Local/Temp/tmpxft_0000392c_00000000-4_test.ptx, line 81; fatal   : Parsing error near '-': syntax error

1>  ptxas fatal   : Ptx assembly aborted due to errors

1> ... 명령이 종료되었습니다(코드: 255).


솔루션 탐색기 탭에서 프로젝트명에 오른쪽 버튼 누르고 속성 선택.

CUDA C/C++ - Device에서 다음 그림과 같이 -G 옵션을 빼주면 됨.


참고) CUDA 개발 환경 구축: http://bwoh.tistory.com/79

VS2013에서 CUDA 개발 환경 구축


CUDA설치방법(VS2013).pdf


위의 pdf 파일을 열 수 없으신 분들은 다음의 그림들을 참조하십시오.



Microsoft Dream Spark : http://www.dreamspark.com


(아래 그림 링크는 안 열리니 위의 링크를 사용하세요~)




















Flags of countries


http://flagpedia.net/download


사이즈 별로 (고해상도까지) 다운로드 받을 수 있어서 매우 좋음

2글자 국가 코드로 되어 있어 더욱 활용도가 높음 (예를 들면, 대한민국은 kr)


이런 사이트가 있다니 너무 고맙네요... 대인배!

미국은 인구 조사를 위해 공간 데이터를 구축하고 이를 배포하고 있다.

(일단 무료로 다운로드 받을 수는 있지만 저작권에 대해서는 모르니 사용하기 전에 반드시 확인 필요!)

방대한 데이터를 제공하고 있어서 논문 작성시 테스트 데이터로 활용하기 좋다.

아래의 표에서 "단위"는 다운로드 받을 수 있는 단위이다. nation이면 zip 파일 한 개만 다운로드 받으면 끝, state면 각 주별로 한 개씩만 받으면 되고, county면 주를 선택한 후에 카운티별로 데이터를 따로 받아야 한다.

Type은 Shape 파일의 Type이다. 파일 헤더의 Offset 32에 있는 Type이 Polygon이면 5, Polyline이면 3, Point이면 1이다.

파일명은 tl_2014_단위_Filename.zip의 형식을 사용한다. tl은 Tiger/Line을 의미하며, 2014는 년도이다. 그 뒤에 붙은 "단위"가 us면 nation임을 의미한다. 예제 파일로는 UC Davis가 위치한 캘리포니아주(06)의 Yolo County(113)를 다운로드 하였다.

SHP 파일은 "shape file format"으로 구글 검색하면 ESRI의 White Paper 또는 국내의 자료를 쉽게 찾을 수 있을 것이고, DBF 파일은 "dbf file format"으로 구글 검색하면 쉽게 찾을 수 있다.

간단하게 Polygon Type을 화면에 띄우는 MFC 소스 코드는 다음 링크의 수업 자료에서 얻을 수 있다.



개인적으로 사용할 것 같은 필요한 데이터만 다운로드하여 조사했으므로 표에서 비어 있는 부분도 있다.



Category

Layer Type

Sub Layer Type

File Name

단위

Type

예제 파일 (06: 캘리포니아, 113: Yolo County) 또는 설명

Geographic Areas

American Indian Area Geography

 

 

 nation

 

 

Blocks

 

 

 state

 

도시의 블럭tl_2019_06_tabblock10.zip (710,145 features in 2019)

Block Groups

 

 

 state

 

 같은 숫자로 시작하는 Block들로 구성. 인구 600~3,000명 사이

Census Tracts

 

 

 state

 

 Block Groups들로 구성. 인구 4,000명 기준. 1,200~8,000명 사이

Congressional Districts

 

 

 nation

 

 

Consolidated Cities

 

 

 state

 

 

Core Based Statistical Areas

 

 

nation

 

 

Counties (and equivalent)

 

county

nation

Polygon

tl_2014_us_county.zip

County Subdivisions

 

 

 state

 

 

Economic Census - 2012

 

 

 

 

 

Estate

 

 

state

 

Virgin Islands only 

Places

 

place

state

Polygon

tl_2019_06_place.zip (1,521 features in 2019)

Public Use Microdata Areas

 

 

nation

 

 

School Districts

 

 

state 

 

 

States (and equivalent)

 

state

nation

Polygon

tl_2014_us_state.zip

State Legislative Districts

 

 

 state 


 

Subbarrio (SubMinor Civil Division)

 

 

state


 

Urban Areas

 

 

nation

 

 

ZIP Code Tabulation Areas

 

zcta5

nation

Polygon

tl_2014_us_zcta510.zip

 

 

 

 

 

 

 

Features

All Lines

 

edges

county

Polyline

tl_2014_06113_edges.zip

Coastline

 

coastline

nation

Polyline

tl_2014_us_coastline.zip

Landmarks

Point Landmark

pointlm

state

Point

tl_2019_06_pointlm.zip (91,598 features in 2019)

Area Landmark

arealm

state

Polygon

tl_2019_06_arealm.zip (8,067 features in 2019)

Roads

Primary Roads

primaryroads

nation

Polyline

tl_2019_us_primaryroads.zip (17,495 features in 2019)

Primary and Secondary Roads

prisecroads

state

Polyline

tl_2019_06_prisecroads.zip (7,403 features in 2019)

All Roads

roads

county

Polyline

tl_2019_06113_roads.zip (4,800 features in 2019)

Rails

 

rails

nation

Polyline

tl_2014_us_rails.zip

Military Installations

 

mil

nation

Polygon

tl_2014_us_mil.zip

Water

Linear Hydrography

linearwater

county

Polyline

tl_2014_06113_linearwater.zip

Area Hydrography

areawater

county

Polygon

tl_2014_06113_areawater.zip

 

 

 

 

 

 

 

 

 Address Range-Feature

 

 

 county

 

 tl_2019_06113_addr.zip (14,970 aspatial features in 2019)

       

 

 Topological Faces (Polygons with All Geocodes)

 

 

 county

 

 

 

 

 

 

 

 

 

Feature Relationships

Address Range-Feature Name

 

 

 county

 

 

 

Address Ranges 

 

 

county 

 

 

 

 Feature Names

 

 

county 

 

 

 

 Topological Faces – Area Landmark

 

 

state 

 

 

 

 Topological Faces – Area Hydrography

 

 

 county

 

 

 

 Topological Faces – Military Installations

 

 

 state

 

 



Tiger Data의 원래 주소는 다음과 같다. (링크되어 있지 않으니 복사해서 주소창에 붙여 넣기 하세요.)



https://www.census.gov/geo/maps-data/data/tiger-line.html


네이버에서 "소프트웨어야 놀자" 캠페인을 시작했네요.


소프트웨어 프로그래밍 기초를 어린 학생들에게 교육해야 할 때 유용하게 사용할 수 있을 것으로 생각합니다.


밑의 링크에는 3단계로 되어 있네요.


http://campaign.naver.com/software/program/textbook.nhn


다음은 프로그래밍 개념을 배우는 것인데, 스크래치와 유사한데 별개로 개발된 것 같습니다.


아이들과 친숙한 강아지를 조정하는 프로그래밍 방법을 보니 재미있네요.


http://play-entry.com/



참고로 다음은 스크래치입니다.


http://scratch.mit.edu/

모바일 융합 기술 센터

스마트 앱 창작터 안드로이드 기초 및 실습

 

Day9Ex1 앞부분 구현 내용 (내용 추가 필요)

 

package kr.re.mctc.android.day9ex1weatherinfo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Window;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

 String mResult = null;
 WeatherTask mTask = null;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  // setContentView() 앞에서 호출
  requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

  setContentView(R.layout.activity_main);
  
  mTask = new WeatherTask();
  mTask.execute();
 }

 class WeatherTask extends AsyncTask<Void, Void, String> {
  @Override
  protected void onPreExecute() {
   super.onPreExecute();
   setProgressBarIndeterminate(true);
  }

  @Override
  protected String doInBackground(Void... params) {
   String query = "http://api.openweathermap.org/data/2.5/weather?q=kumi";
   BufferedReader rd = null;
   String rLine = "";
   StringBuilder result = new StringBuilder();
   
   HttpClient httpClient = new DefaultHttpClient();
   HttpGet httpGet = new HttpGet(query);
   try {
    HttpResponse response = httpClient.execute(httpGet);
   
    rd = new BufferedReader(new InputStreamReader(
       response.getEntity().getContent()));
    while ((rLine = rd.readLine()) != null) {
     result.append(rLine);
    }
    return result.toString();
   } catch (ClientProtocolException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
   return null;
  }
  
  @Override
  protected void onPostExecute(String result) {
   super.onPostExecute(result);
   setProgressBarIndeterminate(false);
   
   Toast.makeText(MainActivity.this,
     result, Toast.LENGTH_SHORT).show();
   
   mResult = result;
  }  
 }
}

모바일 융합 기술 센터

스마트 앱 창작터 안드로이드 기초 및 실습 강의 자료

Day8Ex2MyList - MainActivity.java

 

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity
       implements OnItemClickListener {

// protected String[] mArray = { "걸스데이", "에이핑크", "소녀시대", "시크릿",
//   "걸스데이", "에이핑크", "소녀시대", "시크릿",
//   "걸스데이", "에이핑크", "소녀시대", "시크릿",
//   "걸스데이", "에이핑크", "소녀시대", "시크릿" };
 ArrayList<IdolInfo> mArray = new ArrayList<IdolInfo>();
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  mArray.add(new IdolInfo("걸스데이", "썸씽"));
  mArray.add(new IdolInfo("에이핑크", "No No No"));
  mArray.add(new IdolInfo("소녀시대", "Gee"));
  mArray.add(new IdolInfo("시크릿", "매직"));
  mArray.add(new IdolInfo("걸스데이", "썸씽"));
  mArray.add(new IdolInfo("에이핑크", "No No No"));
  mArray.add(new IdolInfo("소녀시대", "Gee"));
  mArray.add(new IdolInfo("시크릿", "매직"));
  
  ListView list = (ListView)findViewById(R.id.listView);
//  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
//        android.R.layout.simple_list_item_1,
//        mArray);
  IdolAdapter adapter = new IdolAdapter(this,
    android.R.layout.simple_list_item_1);
  list.setAdapter(adapter);
  list.setOnItemClickListener(this);
 }

 @Override
 public void onItemClick(AdapterView<?> arg0, View arg1,
   int position,
   long arg3) {
//  Toast.makeText(this, "클릭: " + position + "(" + mArray[position] + ")",
//      Toast.LENGTH_SHORT).show();
  new AlertDialog.Builder(this)
  .setTitle("아이템 선택")
  .setMessage(mArray.get(position).getName() + " 아이템을 선택했습니다.")
  .setPositiveButton("확인", null)
  .show();
 }
 
 public class IdolInfo {
  protected String name;
  protected String song;
  
  public IdolInfo(String name, String song) {
   super();
   this.name = name;
   this.song = song;
  }

  public String getName() {
   return name;
  }

  public void setName(String name) {
   this.name = name;
  }

  public String getSong() {
   return song;
  }

  public void setSong(String song) {
   this.song = song;
  }
 }
 
 static class IdolViewHolder {
  TextView idolName;
 }
 
 public class IdolAdapter extends ArrayAdapter<IdolInfo> {

  protected LayoutInflater mInflater = null;
  
  public IdolAdapter(Context context, int resource) {
   super(context, resource);
   mInflater = LayoutInflater.from(context);
  }

  @Override
  public int getCount() {
   return mArray.size();
  }

  @Override
  public View getView(int position, View v, ViewGroup parent) {
   IdolViewHolder viewHolder;
   if (v == null) {
    v = mInflater.inflate(android.R.layout.simple_list_item_1,
         parent, false);
    
    viewHolder = new IdolViewHolder();
    viewHolder.idolName = (TextView)v.findViewById(android.R.id.text1);
    v.setTag(viewHolder);
   }
   else {
    viewHolder = (IdolViewHolder)v.getTag();
   }
   
   IdolInfo info = mArray.get(position);
   if (info != null) {
    viewHolder.idolName.setText(info.getName());
   }
   
   return v;
  }
 }
}

안드로이드도 BLE를 제공하네요. 


'프로그래밍 > Android 프로그래밍' 카테고리의 다른 글

[Android] AsyncTask 예제  (0) 2014.08.14
[Android] List 예제  (0) 2014.08.13
[Android] MIDI 프로그래밍  (1) 2014.06.24
[Android] Music Synthesizer  (0) 2014.06.24
[Android] Serial 통신 (RS-232C)  (0) 2014.06.12

[Update] 2015년의 Android API23 Marshmallow에서 MIDI API를 제공하고 있으므로 MIDI Device에 연결하거나 노트를 재생하시려는 분들에게 이 글은 큰 의미가 없을 것 같습니다. 

대신 최신 블로그 글을 참조해 주십시오.

http://bwoh.tistory.com/89


---------------------------------------------------------------------------------

실제로 미디를 사용한 프로그램(시퀀서, 건반, 기타 등 음악 앱이나 게임 앱)을 만들기 위해서는 JetPlayer가 답으로 생각된다.


C:\adt-bundle-windows-x86_64-20140321\sdk\platforms\android-3\samples\JetBoy


ADT (Android Developer Tools) 깔고 나서 sdk 디렉토리에 보면 JetBoy라는 JetPlayer를 사용하는 샘플 앱이 있다. (밑줄 친 앞부분은 버전과 각자 설치 환경에 따라 달라질 수 있음)


이걸 분석해 보면 JetPlayer를 사용할 수 있을 듯...


다음 디렉토리에 있는 JetCreator를 사용하여 MIDI 노트를 사용하는 JET 파일을 만들고 그 파일을 앱에서 활용한다.


C:\adt-bundle-windows-x86_64-20140321\sdk\tools\Jet


JetCreator를 사용하려면 Python을 깔아야 한다.



Android 공식 API Guide는 아래 링크로...


http://developer.android.com/guide/topics/media/jetplayer.html



코드 내에서 MIDI 노트를 바로 플레이할 수 있는 기능이 있는지 모르겠다. 아시는 분은 댓글 달아 주시길...



--------------------------------


MIDI File 생성

http://kevinboone.net/javamidi.html


------------------------------------


Java Sound FAQ

http://www.jsresources.org/faq_midi.html


Java Sound API

http://docs.oracle.com/javase/1.5.0/docs/guide/sound/programmer_guide/


--------------------------------------


CodeGuru에서 MIDI 검색 (Windows용 MCI or DirectX 사용)


http://www.codeguru.com/vb/gen/vb_multimedia/article.php/c1097/Advanced-MIDI-Programming--Utility.htm

http://www.codeguru.com/cpp/g-m/multimedia/article.php/c1573/Playing-MIDI-Files-Directly-From-The-Resource.htm

http://www.codeguru.com/cpp/g-m/multimedia/audio/article.php/c4715/Creating-an-MCI-MIDI-Class.htm

Music Synthesizer for Android


https://code.google.com/p/music-synthesizer-for-android/


안드로이드에서는 iOS에 비해 사운드 처리가 빈약해 보인다.

Midi 프로그래밍을 찾다보니 복잡하지만 좋아보이는 코드가 있었다. 얼핏 보면 NDK도 사용하고 있는 것으로 보인다.


apk 파일이 있으니 받아서 실행해 보시길...


----------------


JetPlayer를 사용해서 미디 파일을 출력하는 것이 그나마 가장 쉬운 방법으로 보인다.

OpenSL을 사용하는 방법이 가장 latency를 줄일 수 있는 방법이라고 한다.