2015년 12월 6일 일요일

모바일 프로그래밍 12월 7일, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더

안드로이드 4대 컴포넌트에서 Activity를 제외한 나머지

  • 서비스
  • 브로드캐스트 리시버
  • 컨텐트 프로바이더

서비스는 2종류가 있는데, 교재와 수업에서는 started service만 다룸
서비스에 대해 참고: http://ccdev.tistory.com/21


임베디드 이론:12월 7일, Open source software, Embedded Linux,

2015년 11월 26일 목요일

시험, 자율 실습 공지.

모바일 프로그래밍 A반:
  • 10일 실습 시간에 기말 시험 실시(장소는 추후 공지)
  • 14일 이론 수업은 휴강


임베디드 A반:

  • 10일 실습 시간에 기말 시험 실시(장소는 추후 공지)
  • 14일 이론 수업은 휴강


모바일 프로그래밍 N반:

  • 3일 실습은 자율 실습(출석 체크 안함)
  • 10일 실습은 3일 실습과 그 동안 못 한 실습 수행
  • 14일 이론 시간에 기말 시험 실시(장소는 이론 강의실 402호)


임베디드 N반:

  • 3일 실습은 자율 실습(실습 자료만 제공하고 출석 체크 안함)
  • 10일 실습은 3일 실습과 그 동안 못 한 실습 수행
  • 14일 이론 시간에 기말 시험 실시(장소는 이론 강의실 402호)


임베디드 시스템 실습(11월 26일) 참고 소스

Web application with Python Flask + Raspberry Pi + ADC/DAC board(yl40)


2015년 11월 23일 월요일

모바일 프로그래밍 과제 제출 방법(보고서 + 소스코드는 github에)

모바일 프로그래밍 과제는 소스 코드를 github에 올리고, 보고서를 종합정보시스템에 제출하세요.
보고서에는 아래 내용을 포함하도록 하고 반드시 pdf로 만드세요.

  1. git clone https url (예: https://github.com/jyheo/MyApplication.git)
  2. 과제 요구사항 마다 해당 코드 내용, 위치와 설명(소스 주석도 포함)
    예)
    요구사항: 일기 파일이름은 년__.txt로 한다.설명: 연,월,일을 받아서 파일 이름을 조합하여 리턴하는 함수
    해당 소스코드: MainActivity.java 100번째 라인
    String makeDiaryFileName(int Year, int Month, int Day) {
        String filename = Year + Month + Day; // 이 코드는 동작하지 않음
    }
  3. 과제와 관련된 기타 내용


2015년 11월 22일 일요일

임베디드 시스템 이론 (11월 23일) - Multicore, 리눅스 디바이스 드라이버 1

모바일 프로그래밍 (이론:11월 23일, 실습:11월 26일) - Adapter View

어댑터 뷰(Adapter View)

  • 목록으로 되어 있는 어댑터(adpater)를 여러 형태(스피너, 리스트, 그리드)의 어댑터 뷰에 연결하여 보여주는 방법.
  • 어댑터가 어댑터 뷰에서 보여줄 각 항목의 View를 결정함.
  • 어댑터는 ArrayAdapter<>를 사용하거나 BaseAdapter를 상속하여 커스텀 어댑터를 만들어 사용함.
  • 어댑터 뷰에는 ListView, GridView, Spinner 등이 있음.
간단한 어댑터 뷰 예제

실습
실습 11-1의 GridView에서 영화 포스터 그림과 제목이 모두 보이도록 만든다. 
힌트: getLayoutInflater().inflate(R.layout.adapter, null);


2015년 11월 15일 일요일

모바일 프로그래밍 (이론: 11월 16일, 실습: 11월 19일) - 액티비티와 인텐트

이론:

  • 안드로이드 4 컴포넌트
    • 액티비티(Activity)
    • 서비스(Service)
    • 브로드캐스트 리시버(Broadcast Receiver)
    • 컨텐트 프로파이더(Content Provider)
  • Intent를 이용하여 다른 액티비티 실행
    • startActivity()
  • Intent를 이용하여 액티비티 간에 데이터 전달
    • Intent의 putExtra(), getExtra()
    • startActivityForResult(), setResult(), onActivityResult()
  • Implicit Intent(묵시적 인텐트)
  • 액티비티 생명주기(lifecycle)

실습: 직접 풀어보기 10-3


참고: 액티비티의 생명주기(lifecycle)에 대한 블로그
- http://androidhuman.tistory.com/246

2015년 11월 6일 금요일

모바일 프로그래밍 (이론: 11월 9일, 실습: 11월 12일) - 파일 처리.

파일 저장 가능 위치

  • 내부 저장소 - 응용 별 파일 저장 (자신만 접근하는 저장 위치)
  • 공용 저장소 - 외부 저장소라고 불리지만, 실제로 내부에 있는 경우가 대부분, 별도의 외장 SD카드는 안드로이드에서 공식적으로 지원하지 않음
    • Environment.getExternalStorageDirectory()
    • Environment.getExternalStoragePublicDirectory(String type)
      • type의 한 예로 Environment.DIRECTORY_PICTURES
  • 리소스 포함 raw 파일 - 앱 패키지에 포함된 리소스 내에 존재하는 raw파일


안드로이드에서 파일을 저장할 수 있는 위치에 대해 정리가 잘 되어 있는 블로그 기사
http://androidhuman.tistory.com/432


실습: 직접 풀어보기 8-1

임베디드 시스템 이론(11월 9일) - Networking



2015년 11월 2일 월요일

모바일 프로그래밍(이론:11월 2일, 실습:11월 5일) - 메뉴와 대화상자


  • 메뉴
    • 옵션 메뉴
    • 컨텍스트 메뉴
  • 토스트
  • 다이얼로그(대화상자)
    • 버튼 없는 다이얼로그
    • Positive 버튼
    • 목록 보여주는 다이얼로그
    • 라디오 버튼 목록
    • 체크박스 목록
    • 임의의 View를 갖는 다이얼로그
  • 실습 7-3
    • 다이얼로그를 이용하여 이름과, 이메일 주소 입력

임베디드 시스템(11월 2일) 이론 - RTS, RTOS



2015년 10월 25일 일요일

모바일 프로그래밍 (10월 26일, 10월 29일) 이론,실습 - 고급 위젯 다루기

10월 26일 이론

  • 시계 표시 위젯: 
    • AnalogClock
    • DigitalClock(TextClock)  (API 17부터는 TextClock으로 바뀜)
    • Chronometer - 시간 측정
  • 달력 위젯
    • CalendarView
  • 날짜, 시간 선택 위젯
    • DatePicker
    • TimePicker
  • 자동 완성 텍스트 뷰: 
    • AutoCompleteTextView
    • MultiAutoCompleteTextView
  • 진행 표시 위젯:
    • ProgressBar
    • RatingBar
    • SeekBar
  • ScrollView
  • WebView

10월 29일 실습
실습 6-2, 간단한 웹 브라우져 만들기
WebView를 이용
EditText에서 주소를 입력 받고, 이동 버튼을 누르면 WebView에 해당 주소의 웹 페이지를 보여주며, 추가로 아래 내용을 구현한다.
- 링크를 클릭하면 WebView내에서 보여주기 WebViewClient의 shouldOverrideUrlLoading() 메소드가 무조건 false를 리턴하게 함
- URL에 http:// 가 없으면 자동으로 붙여주기.
- 페이지가 loading되면 해당URL을 EditText에 보여주기 (WebViewClient의 onPageFinished()메소드를 override해야 함. 그리고 View의 getRootView()메소드를 활용)

* 참고
TimePicker와 DatePicker는 최신 안드로이드에서는 교재와 달리 아래와 같은 모양으로 보임

임베디드 시스템 (10월 26일) 이론 - C++ 언어



2015년 10월 8일 목요일

2015학년2학기 임베디드,모바일 중간시험 안내

임베디드 A,N반 합반 시험


  • 날짜: 10월 19일 월요일
  • 시간: 오후 6시~6시50분 
  • 장소: 탐구관 지하 101호
  • * A반 중 이 시간에 시험을 볼 수 없는 사람은 나에게 문자로 알려주고, 19일 4시에 공402호로 올것.


모바일 프로그래밍 A,N반 합반 시험


  • 날짜: 10월 19일 월요일
  • 시간: 오후 6시55분~7시45분
  • 장소: 탐구관 지하 101호
  • * A반 중 이 시간에 시험을 볼 수 없는 사람은 나에게 문자로 알려주고, 19일 5시에 공402호로 올것.

2015년 10월 4일 일요일

모바일 프로그래밍 실습 image - 참고할만한 괜찮은 소스

류지원 학생 소스 입니다.
스위치 on/off에 따라 나타나고 사라지게 할 위젯들을 하나의 LinearLayout 밑에 넣어서 코드를 간결히 하였군요.

2015년 10월 2일 금요일

모바일 프로그래밍 (10월 5일(이론), 8일(실습)) - 레이아웃 익히기

레이아웃

  • LinearLayout
  • RelativeLayout
  • TableLayout
  • GridLayout
  • FrameLayout

실습: TableLayout 또는 GridLayout을 이용한 계산기 앱 만들기 (실습 5-2, 직접풀어보기 5-5)
실습 모듈 이름은 calc2



임베디드 시스템 (10월 5일) - C언어 Part 2


  • Structure의 layout
  • Pointer와 array
  • Dynamic memory

2015년 9월 29일 화요일

라즈비안 새 버전(Jessie) 릴리즈


라즈비안 jessie 버전이 새로 나왔습니다.
https://www.raspberrypi.org/blog/raspbian-jessie-is-here/

라즈비안 jessie 버전 다운로드 링크(교내)
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoME7DeQOUL_Q~~.zip

임베디드 시스템(10월 1일) - 실습: 라즈비안 커널 빌드

라즈비안이 설치된 라즈베리 파이를 위한 리눅스 커널 빌드와 설치 방법에 대해 실습합니다.

대부분의 데스크톱 리눅스 사용의 경우 커널 컴파일을 하는 경우가 드물긴 하지만, 임베디드 시스템에서라면 얘기가 다릅니다. 물론 데스크톱 리눅스에서 커널 컴파일이 불필요하다는 얘기는 아닙니다.

단순히 디바이스 드라이버를 만들기 위해 커널을 컴파일하기 보다는 모듈로 사용하는 것이 간단합니다만, 임베디드 시스템의 경우 커널 이미지를 최소화하고 최적화하여 부팅 시간을 단축하거나 메모리 사용량을 줄이는 것이 매우 의미 있는 일입니다.

배포판에 포함된 커널 이미지를 사용하는 것 보다 직접 커널 빌드하는 경우를 살펴보면,

* 새로운 하드웨어를 추가하였는데 기존 커널과 충돌이 발생할 때
* 배포판 커널에서 지원하지 않는 옵션을 사용하고자 할 때(모듈로 지원하지 않는 기능을 사용하려면 반드시 커널 빌드를 해야 합니다.)
* 필요없는 드라이버를 지워 커널을 최적화해 부팅 시간을 빠르게 하기
* 모듈 여러 개로 구성된 커널 대신에 이미지 하나로 된 커널 만들기
* 새로 업데이트된 커널이나 개발버전 커널 사용
(참고: https://www.debian.org/releases/etch/s390/ch08s06.html.ko)

그러면, 라즈비안에서 커널 빌드 방법에 대해 아래 링크에서 살펴보겠습니다.
https://github.com/jyheo/documentation/blob/master/linux/kernel/building.md

라즈비안 리눅스 커널 소스(교내 링크)
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoMEr_eTeYC_Q~~.gz




2015년 9월 25일 금요일

Git-GUI 사용법

안드로이드 스튜디오의 git integration이 이상하게 동작하는 경우, Git-GUI를 사용하기 바랍니다. 그래서 간단히 Git-GUI 사용법에 대한 링크를 알려줄테니, 공부해보세요.


  • Git on Windows for Newbs


  • Git GUI Tutorial - Youtube
    • https://www.youtube.com/watch?v=ov3_CkObQm8
    • 동영상 이고, 영어로 되어 있으나 그림 보면서 들을만 합니다. 다만 github이 아니라 bitbucket이라는 사이트를 사용하는 설명입니다. github과 크게 차이 없으니 공부해보고 bitbucket도 알아보세요.
    • bitbucket의 경우 무료로 private repository를 제공하는 장점이 있어서 본인도 자주 사용합니다.

2015년 9월 21일 월요일

모바일 프로그래밍 (9월 21일(이론), 24일(실습), 10월 1일(실습)) - 기본 위젯 익히기

위젯이란 사용자에게 입력을 받거나 보여주기 위한 것으로 버튼, 텍스트 뷰, 라디오 버튼, 리스트 등과 같이 GUI를 구성하는 요소이다.
안드로이드의 위젯은 뷰(View)라고 하는 클래스를 상속하는데, 이 뷰라고 하는 것이 화면에 보여주기 위한 모든 것의 근간이 되는 클래스이다.

9월 21일 이론

  • 뷰(View) 클래스
  • 텍스트 뷰
  • Java 코드에서 속성 설정
  • 버튼과 에디트 텍스트
  • 컴파운드 버튼

9월 24일 실습

  • 버튼과 에디트 텍스트
  • 직접 풀어보기 4-3

10월 1일 실습

  • 이미지뷰와 이미지버튼
  • 직접 풀어보기 4-4

임베디드 시스템(9월 24일) - 실습: Rpi Remote Debugging with Eclipse

GDB 사용법에 대한 블로그 게시글
http://kwanseob.blogspot.kr/2012/03/gdb.html
http://bboy6604.tistory.com/entry/GDB를-사용한-Debug



Raspberry Pi toolchain 학교에서 받기
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoME7neQOUJ_Q~~.zip
Eclipse-cpp-mars-R-linux-gtk 학교에서 받는 링크
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoME7jeRuYP_Q~~.gz
Eclipse를 실행하기 위해서는 JVM이 필요합니다. 리눅스 32비트용 JRE
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoME7veROUK-w~~.gz

임베디드 시스템(9월 21일) - C언어 Part 1

C언어는 임베디드 SW에서 여전히 많이 사용되는 언어이다. 물론 응용 프로그램 개발을 위해서 Java와 같은 언어가 사용되기 도 한다. 하지만, 특히, 커널이나 디바이스 드라이버와 같은 하드웨어에 밀접한 시스템 소프트웨어 작성시에는 C언어가 주로 사용되며, 이런 경우에 주의해야할 내용들이 있다. 이번 강의는 이런 내용에 대해 다룬다.

2015년 9월 18일 금요일

2015년 9월 13일 일요일

임베디드 시스템(9월 17일) - 실습: Ubuntu와 라즈베리 toolchain 설치

임베디드 시스템(9월 17일) - 실습: Ubuntu와 라즈베리 toolchain 설치



Ubuntu 14.0.3(LTS) 교내 다운로드 링크 (교외에선 접속 불가함)
http://idisk.hansung.ac.kr:8081/api.link/3d_baLoMHL3eQOUJ_A~~.iso

임베디드 시스템(9월 14일) - 디자인과 개발

9월 14일 이론 강의 - 디자인과 개발

모바일 프로그래밍(9월 14일, 17일) - 처음으로 만드는 안드로이드 앱

교재 2장, 처음으로 만드는 안드로이드 애플리케이션

14일 이론 수업 요약


17일 실습 수업

2015년 9월 10일 목요일

실습실 변경

모바일 프로그래밍, 임베디드 시스템 모두 실습실을 305호에서 102호로 변경합니다.

2015년 9월 7일 월요일

임베디드 시스템(9월10일) - Beginning Raspberry pi 2

9월10일 실습 - 라즈베리 파이 2 셋업

모바일 프로그래밍(9월 10일) - 개발 환경과 GitHub

학교 실습실에는 개발 환경 설치는 이미 다 되어 있으므로 별로 할 것은 없습니다.

GitHub 계정을 만들고 프로젝트를 GitHub에 올려서 버전 컨트롤 하는 방법을 실습 합시다.

GitHub에 대해서는 아래 링크에서 공부 하세요.
http://backlogtool.com/git-guide/kr/

실습할 내용은 아래 PPT를 참고 (*인쇄할만한 내용이 아니니 그냥 온라인으로만 보세요)

Do it! 안드로이드 앱 프로그래밍(개정 2판-롤리팝) 2015년

수업 시간 내용만으로 부족하다...
다른 책으로도 공부해보고 싶다...

정재곤 Do it! 안드로이드 앱 프로그래밍 책을 추천합니다.
추천 이유: 동영상 강의가 있어서


2015년 9월 3일 목요일

임베디드 시스템(9월 7일) - Embedded Software

9월 7일, 이론 수업 자료

Embedded Software


모바일 프로그래밍(9월7일, 10일) - 안드로이드 개요와 개발환경 구축


안드로이드 개요와 개발환경 구축

안드로이드 개요,개발환경 구축에 대해 설명해주는 수 많은 웹 사이트, 블로그가 존재합니다.

개발 환경 설치에 대한 이야기

안드로이드 개발 환경은 Eclipse와 Android Studio가 있습니다만, Android Studio가 공식 개발 환경이므로 이걸로 수업을 합니다. 설치 방법은 강의 자료에도 나오고 아래와 같이 친절한 분의 블로그에서도 확인할 수 가 있습니다. 윈도우용 기준입니다.


위의 블로그 내용이 절대적인 것은 아니므로 그냥 참고 삼아 보세요.
(* 안드로이드 개발을 위해서 Java는 필수입니다. 먼저 설치하고 안드로이드 스튜디오 설치하세요.)

안드로이드 스튜디오에서 SDK Manager를 실행해보세요. 
(메뉴 Tools > Android > SDK Manager) 
SDK는 가장 최신 것만 설치하면 됩니다(이미 스튜디오 설치할 때 되어 있을거에요). 그리고 Android Support Library 하나만 추가로 설치하세요.

안드로이드 에뮬레이터 실행하는데 스튜디오 창에
hax is not working and emulator runs in emulation mode 이런 메시지를 보았다면...
Intel HAXM을 설치하세요.  Intel HAXM

강의 자료는 교재를 구매한 수강생들만 별도의 경로로(출판사에서 배포하면 안된다고 하니)...

2015년 9월 2일 수요일

임베디드시스템 2015년 2학기 강의 개요

(한성대학교 컴퓨터공학과)

강의 내용:

 임베디드 시스템 개발을 위해 필요한 다양한 SW 지식을 학습합니다. 그리고 라즈베리 파이 2를 이용하여 임베디드 시스템 개발을 체험해 봅니다.

사전 지식:

 C, C++, Java, Python, 운영체제

강의 방식:

 이론(1시간) + 실습(2시간), 이론은 종종 온라인 비디오로 대체될 수 있습니다.

교재:

임베디드 소프트웨어의 모든 것(콜린 월즈 저, 허준영 역)
http://www.acornpub.co.kr/book/embedded-software
* 2015년 대한민국학술원 우수 학술도서 선정도서

(역자 서문 일부에서)
 이 책은 소프트웨어 개발자에게 임베디드 소프트웨어 개발에 대한 최소한의 필요한 내용을 거의 다 설명해주고 있다. 각각에 대한 깊이 있는 내용이 부족할 수 있으나, 최소한 독자가 헤매지 않도록 길을 보여주고 있다.
이 책이 임베디드 소프트웨어 개발을 막 시작하려는 개발자나 학생들에게 아주 좋은 지침서가 될 것이라 확신이 들었고...


모바일 프로그래밍 2015년2학기 강의 개요

(한성대학교 컴퓨터공학과)

강의 내용:

 안드로이드 앱 개발을 위한 프로그래밍 방법에 대해 공부합니다.

사전 지식:

 Java 언어

강의 방식:

 이론(1시간) + 실습(2시간), 이론은 종종 온라인 비디오로 대체될 수 있습니다.
매번 실습 시간에 교재의 기본 실습을 따라 하고, 변형된 추가 실습을 스스로 완수해야 합니다. 추가 실습은 매번 평가하여 최종 성적에 반영됩니다.

교재:

IT CookBook, Android Studio를 활용한 안드로이드 프로그래밍 (우재남, 박길식 저)
http://www.hanbit.co.kr/book/look.html?isbn=979-11-5664-179-7

 안드로이드는 빠르게 발전하고 있기 때문에, 항상 최신의 내용을 갖춘 책을 찾기가 매우 어렵습니다. 대부분의 최신 내용은 인터넷을 통해 찾을 수 있으나, 수업에서는 이러한 인터넷 자료를 이용하기 위해서는 많은 시간을 들여 정리를 해야 합니다. 따라서 수업하기 적절하도록 정리된 형태의 교재가 유용하며, 학생들도 잘 정리된 교재를 필요로 합니다.

 이 책이 최신 안드로이드 버전을 지원한다고 하고 있으나 실상은 그렇지 못합니다. 다만 최신 안드로이드 SDK(롤리팝)를 이용하여 예제가 빌드될 뿐입니다. 교재 중간 중간에 사라질(deprecated) API를 그대로 사용하고 있기 때문에 학생들이 나중에 사용하지 못할 내용들이 다소 포함되어 있습니다. 그런 부분들은 수업에서 적절히 제외하고 새로운 Material design 등은 별도 자료를 이용하여 수업할 예정입니다.