현재까지 발견된 위 책의 오탈자 정보와 오류 사항 그리고 보다 매끄러운 문장을 위해 수정한 내용들입니다. 불편을 끼쳐드려 죄송합니다.

혹시 이 외의 오탈자 정보를 발견하시는 분이 계시면 출판사 메일 jeipub골뱅이gmail.com이나  역자 메일 chosungmann골뱅이daum.net으로 연락주시면 고맙겠습니다.


최종수정일자: 2011년 4월 23일
3쇄본 오탈자
114쪽 코드 3-12 밑에서 다섯 번째 줄(원서오류)(임종호 님 제공)
// onCreate가 종료된 후 호출된다. UI 상태 복구에 사용한다.
==>
// onStart가 종료된 후 호출된다. UI 상태 복구에 사용한다. 

이에 따라 그림 3-7도 아래와 같이 수정되어야 합니다.


2쇄본 오탈자
114쪽 그림 3-7에서(원서오류)(송호진 님 제공)
Activity.onCreate 다음에 있는 Activity.onSaveInstanceState ==> Activity.onRestoreInstanceState
Activity.onResume 다음에 있는 Activity.onRestoreInstanceState ==>  Activity.onSaveInstanceState

9장 404쪽과 408쪽 전부(인쇄오류)



1쇄본 오탈자
아래의 소스 코드 오류들을 수정한 파일은 다음에서 받으실 수 있습니다.
==> http://jpub.tistory.com/102 의 소스 코드(역자 제공)

이 블로그에서 소스코드 들여쓰기는 서체 문제로 인해 글자 하나와 스페이스 하나가 일대일 대응이 되지 않고 있습니다.
아래 내용을 복사하여 메모장에 붙여 보시면 정확하게 보실 수 있음을 알려 드립니다.

185페이지 밑에서 5번째 줄부터 186페이지 위에서 3번째 줄까지 볼드 처리(역자 제공)
@Override
public void onCreateContextMenu(ContextMenu menu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("할 일 아이템 선택");
    menu.add(0, REMOVE_TODO, Menu.NONE, R.string.remove);
}
==>
@Override
public void onCreateContextMenu(ContextMenu menu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("할 일 아이템 선택");
    menu.add(0, REMOVE_TODO, Menu.NONE, R.string.remove);
}

187페이지 위에서 19번째 줄은 볼드처리를 해제(역자 제공)
registerForContextMenu(myListView); ==> registerForContextMenu(myListView);

188페이지 밑에서 11, 12번째 줄 2줄을 볼드처리 해제(역자 제공)
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
==>
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

232페이지 위에서 6번째 줄 코드 수정(역자 제공)
create = _create; ==> created = _created;

263페이지 위에서 13번째줄 부터 4줄을 볼드 처리(역자 제공)
<string name="auto_update_prompt">자동 업데이트?</string>
<string name="update_freq_prompt">업데이트 빈도</string>
<string name="min_quake_mag_prompt">최소 진도</string>
<string name="menu_preferences">환경설정</string>
==>
<string name="auto_update_prompt">자동 업데이트?</string>
<string name="update_freq_prompt">업데이트 빈도</string>
<string name="min_quake_mag_prompt">최소 진도</string>
<string name="menu_preferences">환경설정</string>

272페이지 위에서 10번째 줄을 볼드 처리(역자 제공)

    }
}
==>
    }
}

311페이지 위에서 3번째줄 부터 4줄을 볼드 처리 해제(역자 제공)
toDoDBAdapter = new ToDoDBAdapter(this);

// 데이터베이스를 개방 또는 생성한다.
toDoDBAdapter.open();

populateTodoList();

==>
toDoDBAdapter = new ToDoDBAdapter(this);

// 데이터베이스를 개방 또는 생성한다.
toDoDBAdapter.open();

populateTodoList();

322페이지 위에서 11번째 줄 코드 수정(역자 제공)
String where, String[] wArgs) {
==>
String where, String[] whereArgs) {

323페이지 위에서 18번째 줄 코드 수정(김성호 님 제공)
+ KEY_MAGNITUDE + " FLOAT), "
==>
+ KEY_MAGNITUDE + " FLOAT, "

330페이지 밑에서 3번째 줄을 볼드 처리(역자 제공)
loadQuakesFromProvider();
==>
loadQuakesFromProvider();

361페이지 밑에서 4, 5번째 줄 2줄을 볼드 처리(역자 제공)
myLocationText.setText("현재 위치:\n" +
                       latLongString + "\n" + addressString);
==>
myLocationText.setText("현재 위치:\n" +
                       latLongString + "\n" + addressString);

405페이지 밑에서 12번째 줄 코드 수정(역자 제공)

"yyyy-MM-dd 'T 'hh:mm:ss 'Z '"
==>
"yyyy-MM-dd'T'hh:mm:ss'Z'"

407페이지 위에서 3번째 줄부터 408페이지 위에서 13번째 줄까지의 모든 코드를 아래 코드로 대체(역자 제공)
private Timer updateTimer;
 
private int minimumMagnitude = 0;
private boolean autoUpdate = false;
private int updateFreq = 0;
 
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    // 공유 환경설정을 얻어온다.
    Context context = getApplicationContext();
    SharedPreferences prefs =
        PreferenceManager.getDefaultSharedPreferences(context);

    autoUpdate = 
        prefs.getBoolean(Preferences.PREF_AUTO_UPDATE, false);

    minimumMagnitude = 
        Integer.parseInt(prefs.getString(Preferences.PREF_MIN_MAG, "0"));

    updateFreq = 
        Integer.parseInt(prefs.getString(Preferences.PREF_UPDATE_FREQ, "0"))

    updateTimer.cancel();

    if(autoUpdate) {
        updateTimer = new Timer("earthquakeUpdates");

        updateTimer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                refreshEarthquakes();
            }
        }, 0, updateFreq*60*1000);
    }

    refreshEarthquakes();

    return Service.START_STICKY;
};

@Override
public void onCreate() {
    updateTimer = new Timer("earthquakeUpdates");
}

450페이지 4번째 줄(김성호 님 제공)
pdateFreq*60*1000;
==>
updateFreq*60*1000;

477페이지 7.1번 문장 수정(역자 제공)
먼저 EarthquakeService에 있는 doRefreshEarthquakes 메서드를 수정해 작업 완료 후 인텐트를 방송하도록 업데이트한다.
==>
먼저 EarthquakeService에 있는 EarthquakeLookupTask의 onPostExecute 메서드를 수정해 작업 완료 후 인텐트를 방송하도록 업데이트한다.

477페이지 7.1번에 딸린 코드 전체(역자 제공)
public static String QUAKES_REFRESHED =
    "com.paad.earthquake.QUAKES_REFRESHED";
public void doRefreshEarthquakes() {
    [ ... 기존 doRefreshEarthquakes 코드 ... ]
    sendBroadcast(new Intent(QUAKES_REFRESHED));
}
==>
public static String QUAKES_REFRESHED =    
    "com.paad.earthquake.QUAKES_REFRESHED"; 
protected void onPostExecute(Void result) {
    sendBroadcast(new Intent(QUAKES_REFRESHED));  
    stopSelf();
}

485페이지 첫 번째 줄에서(김성호 님 제공)
EarthquakeLiveFolder라는 이름의…
==>
EarthquakeLiveFolders라는 이름의…

493페이지 밑에서 10번째 줄 코드 수정 및 볼드처리(역자 제공)
private static int SEARCH = 3;
==>
private static final int SEARCH = 4;

495페이지 밑에서 17번 째 줄 코드 수정(역자 제공)
String searchQuery = Uri.withAppendedPath(EarthquakeProvider.SEARCH_URI,
                                          searchTerm);
==>
Uri searchQuery = Uri.withAppendedPath(EarthquakeProvider.SEARCH_URI,
                                       searchTerm);

495페이지 밑에서 3번째 줄 코드 수정(역자 제공)
android:label="Earthquake Search">
==>
android:label="지진 정보 검색">

564페이지 밑에서 7,8,9번째 줄 세 줄 볼드처리 해제(역자 제공)
if (message.getMessageBody().toLowerCase().contains
    (queryString))
    requestReceived(message.getOriginatingAddress());

==>
if (message.getMessageBody().toLowerCase().contains
    (queryString))
    requestReceived(message.getOriginatingAddress());

564페이지 밑에서 1번 째 줄 볼드처리 해제(역자 제공)
public void requestReceived(String _from) {}
==>

public void requestReceived(String _from) {}

573페이지 밑에서 9,10,11번 째 줄 세 줄 볼드처리(역자 제공)
Spinner respondForSpinner;
CheckBox locationCheckbox;
EditText responseTextBox;
==>
Spinner respondForSpinner;
CheckBox locationCheckbox;
EditText responseTextBox;

576페이지 위에서 18번째 줄 볼드 처리(역자 제공)
private void setAlarm(int respondForIndex) {}
==>
private void setAlarm(int respondForIndex) {}

579페이지 밑에서 4번째 줄 코드 수정(역자 제공)

String autoRespondPref = getString(R.string.autoRespondPref)
==>
String autoRespondPref = getString(R.string.autoRespondPref);

604페이지 위에서 1번째 줄부터 15줄 볼드 처리(역자 제공)
                    return null;
                }
                @Override
                protected void onPostExecute(BluetoothSocket result) {
                    if (result != null)
                        switchUI();
                    }
                };
                acceptThread.execute(resultCode);
            } catch (IOException e) {
                Log.d("BLUETOOTH", e.getMessage());
            }
        }
    }
}
==>
                    return null;
                }
                @Override
                protected void onPostExecute(BluetoothSocket result) {
                    if (result != null)
                        switchUI();
                    }
                };
                acceptThread.execute(resultCode);
            } catch (IOException e) {
                Log.d("BLUETOOTH", e.getMessage());
            }
        }
    }
}

674페이지 밑에서 7-15번째 줄 9줄 볼드 처리(역자 제공)

Animation slideInLeft;
Animation slideOutLeft;
Animation slideInRight;
Animation slideOutRight;
Animation slideInTop;
Animation slideOutTop;
Animation slideInBottom;
Animation slideOutBottom;
TextView myTextView;
==>
Animation slideInLeft;
Animation slideOutLeft;
Animation slideInRight;
Animation slideOutRight;
Animation slideInTop;
Animation slideOutTop;
Animation slideInBottom;
Animation slideOutBottom;
TextView myTextView;

674페이지 밑에서 2번째 줄부터 675페이지 위에서 15번째 줄까지 볼드 처리(역자 제공)

slideInLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_in);
slideOutLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_out);
slideInRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_in);
slideOutRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_out);
slideInTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_in);
slideOutTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_out);
slideInBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_in);
slideOutBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_out);

myTextView = (TextView)findViewById(R.id.myTextView);
==>
slideInLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_in);
slideOutLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_out);
slideInRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_in);
slideOutRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_out);
slideInTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_in);
slideOutTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_out);
slideInBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_in);
slideOutBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_out);

myTextView = (TextView)findViewById(R.id.myTextView);

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 Favicon of http://lemonflavor.tistory.com BlogIcon 레몬에이드 2010.11.24 11:36 신고

    오탈자 공고는 확실히 블로그보다는 게시판에서 공고하는게 나중에 찾기는 더 쉬울 것 같습니다 ^^
    제이펍도 빤딱빤딱한 홈페이지가 있길 바라는 한 독자의 의견입니다 ㅎㅎ

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.11.24 22:39 신고

      네.. 사실 그렇죠..
      아직은 타이틀 수도 많지 않아 블로그로만 하고 있지만, 내년 중으로는 제대로 된 홈페이지도 만들어 서비스할 수 있도록 계획하고 있습니다.
      앞으로도 많은 조언 부탁드립니다!!!!

  2.  댓글주소  수정/삭제  댓글쓰기 오봉 2010.12.28 17:15 신고

    chapter 5 의 earthquake 를 실행 시키면 다음 오류가납니다.
    explorer 에 url 을 그대로 치면 usgs 해당 페이지가 잘나오는데 program 에서 만 error 입니다.
    UnknownHostException : Host is unresolved:earthquake.usgs.gov:80 ........나옵니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.12.28 19:07 신고

      역자에게 확인한 후 다시 이 댓글로 답변 드리도록 하겠습니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2010.12.29 00:07 신고

      역자에게서 답변을 받았습니다.
      코드와 실행 결과에 이상이 없다고 하시네요.

      다음은 역자께서 보내주신 답변입니다.
      =======================================
      예상컨대 독자분의 에뮬레이터가 네트워크에 연결되어 있지 않을 가능성이 큽니다.
      독자분의 에뮬레이터에서 "Browser"를 실행해 인터넷이 접속되는지 먼저 확인해야 겠습니다.
      =======================================
      잘 해결되었으면 합니다.

  3.  댓글주소  수정/삭제  댓글쓰기 Favicon of http://cakel.tistory.com BlogIcon 카켈 2011.08.26 19:06 신고

    안녕하세요, 이 책 덕에 공부를 열심히 하고 있는 독자입니다. 안드로이드 공부 중에 막히는게 있어서 문의드립니다. p267 끝 - p267 시작 사이의 예제코드

    int updateFreqIndex = prefs.getInt(PREF_UPDATE_FREQ, 2);
    int minMagIndex = prefs.getInt(PREF_MIN_MAG, 0);

    이 두구문을 처리하는 중에 프로그램이 문제가 생겨서 종료되고 있습니다.
    한참 삽질 후에 int 를 Integer 로 바꾸니 정상적으로 처리가 되는게 확인되었는데, 무슨 원인인지는 모르겠습니다. 확인 부탁드립니다. (Eclipse 3.6 - Helios / JDK 1.6.0_26)

    감사합니다.

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.08.27 00:11 신고

      안녕하세요?
      먼저 도서 구매해주셔서 고맙습니다.
      문의사항을 역자에게 전달하여 답변을 받는 대로 다시 댓글로 안내해드리겠습니다!!
      잠시만 기다려주세요!!

    •  댓글주소  수정/삭제 Favicon of http://jpub.tistory.com BlogIcon 제이펍 2011.08.31 11:21 신고

      안녕하세요?

      역자로부터 아래와 같은 답변을 받았습니다.
      ==================================
      일단 코드상으로는 문제가 없어 보입니다.
      해당 코드는 preference가 없을 경우 대신 사용할 기본 값(default value)이 두 번째 매개변수에 지정되어 있기 때문에
      값을 못가져와 생기는 문제는 아닐 것이며
      따라서 Integer로 바꿨을 때는 실행되고 int로 놔두면 실행되지 않는 문제는 상관관계가 없다고 판단됩니다.
      지금 현상태로는 독자분께서 혹시 미스 타이핑하신 것이 있는지 살펴보는게 1차적인 진단이 될 수 있을 것이고요
      가장 간편하게 확인하는 법은 제이펍 홈페이지에 올려둔 소스코드와 독자분께서 입력하신 소스코드를 비교해보시는 것입니다.
      ==================================
      혹시 그래도 해결이 안 되면 역자께서 직접 소스 코드를 보내달라고 합니다. 보내주시면 확인 후 다시 답변을 드리겠다고 하시네요..
      역자 이메일 주소는 chosungmann골뱅이daum.net으로 하시면 됩니다.
      얼른 해결되었으면 좋겠네요 ^^

    •  댓글주소  수정/삭제 Favicon of http://cakel.tistory.com BlogIcon 카켈 2011.09.04 19:18 신고

      답변 감사합니다. 다시 한번 알아보겠습니다.



티스토리 툴바