2016년 5월 29일 일요일

Java 5/30 - 11장 기본적인 스윙 컴포넌트와 활용(실습)

11장 기본적인 스윙 컴포넌트와 활용(실습)

실습

예제 11-4

위의 소스를 수정하여 pull request할것

1. 과일의 종류를 다음과 같이 바꾸기.
String[] names = new String[] {"사과", "", "귤", "오렌지", "포도"};
JCheckBox[] fruits = new JCheckBox[names.length];

2. 가격을 아래와 같이 배열로 만들어서 사용하기.
int[] prices = new int[] {2000, 5000, 500, 1000, 3000};

3. 아래 그림과 같이 선택된 과일의 이미지가 나타나도록 하기.
Layout과 Panel은 적절히 사용할 것
과일 이미지들은 GridLayout을 이용


2016년 5월 23일 월요일

임베디드 OS 5/24, 26 - 리눅스 커널 모듈과 디바이스 드라이버

리눅스 커널 모듈과 디바이스 드라이버


웹 프로그래밍 5/24 - Bootstrap 기본

Bootstrap 기본


Get Started - http://www.w3schools.com/bootstrap/bootstrap_get_started.asp
Grid Basic - http://www.w3schools.com/bootstrap/bootstrap_grid_basic.asp
Jumbotron - http://www.w3schools.com/bootstrap/bootstrap_jumbotron_header.asp

Alert - http://www.w3schools.com/bootstrap/bootstrap_alerts.asp
Button groups - http://www.w3schools.com/bootstrap/bootstrap_button_groups.asp

Glyphicons - http://www.w3schools.com/bootstrap/bootstrap_glyphicons.asp
참고: Font Awesome http://fontawesome.io/icons/

Dropdowns - http://www.w3schools.com/bootstrap/bootstrap_dropdowns.asp
Navigation bar - http://www.w3schools.com/bootstrap/bootstrap_navbar.asp
Modal - http://www.w3schools.com/bootstrap/bootstrap_modal.asp
Tooltip - http://www.w3schools.com/bootstrap/bootstrap_tooltip.asp


실습

아래와 같이 자신의 포트폴리오 페이지를 바꿔보자.
기존에 index.html을 복사해서 index_bootstrap.html 이라고 만들어서 github에 올린다.
http://아이디.github.io/index_bootstrap.html 로 접속 가능해야 함.
grid를 잘 설계하여 자신의 포트폴리오 내용을 잘 배치해보기
navbar, jumbotron, glyphicon을 적절히 사용, 다른 bootstrap 요소들을 추가로 이용하여 꾸며도 좋음

힌트: 아래와 같은 CSS가 필요할 것임, 적용전후에 어떤 차이가 있는지 잘 비교해보고 이해해볼 것!
     <style>
        .navbar {
            background: rgb(255, 200, 255);
            margin-bottom: 0;
            border: 0;
        }
        .jumbotron {
            background: rgb(255, 200, 255);
        }
    </style>

Java 5/24 - 11장 기본적인 스윙 컴포넌트와 활용

11장 기본적인 스윙 컴포넌트와 활용


JButton, JLabel, JCheckbox, JRadioButton, JTextField, JTextArea, JList JComboBox, JSlider

2016년 5월 22일 일요일

Java 5/23 - 10장 자바의 이벤트 처리

10장 자바의 이벤트 처리

MouseAdapter

KeyListener

실습

마우스로 클릭한 위치에 물고기 추가.
https://github.com/jyheo/JavaExercise/blob/master/src/gui/LakeMouse.java

- 물고기를 클릭하면 물고기를 멈추게 하고, 멈춘 물고기를 클릭하면 다시 움직이게 만들기
- 물고기의 속도를 5-10 사이의 값으로 랜덤하게 지정하기

(5/23 첫시간) 실습
- JFrame에서 키를 입력받아 방향키에 따라 바위의 위치를 상하좌우로 5씩 이동하게 만들기
- 물고기가 바위에 부딛치면(겹치면) 물고기를 사라지게 하기
- 포식자 물고기 객체 하나 만들기. 일반 물고기 보다 크기를 크게 하거나 표시되는 글자를 다르게 하여 구분하도록 한다.
- 포식자 물고기와 일반 물고기가 부딛치면(겹치면) 일반 물고기를 사라지게 하기

2016년 5월 19일 목요일

임베디드 OS 5/19 - Python Flask Web Framework

Python Flask Web Framework





Raspberry Pi + Analog Sensor




Raspberry Pi + Analog Sensor + Web(Flask)



웹 프로그래밍 5/19 - CSS3 media

CSS3 media 

종합예제


CSS3 media

<style>
        @media screen and (max-width: 499px) {
            body { background: red; }
        }

        @media screen and (min-width: 500px) and (max-width: 799px) {
            body { background: green; }
        }

        @media screen and (min-width: 800px) {
            body { background: blue; }
        }
</style>

media type


  • all
  • print
  • screen
  • speech

<link rel="stylesheet" media="print and (max-width: 499px)" href="print.css">

실습

인쇄할 때만 Confidential 워터마크를 출력하기.
워터마크는 HTML 본문에는
<div id="watermark">
<h1>Confidential</h1>
</div>
CSS는
#watermark {
display: block;
color: red;
position: absolute;
left: 50%;
top: 50%;
width: 300px;
margin-left: -150px;
border: 2px red solid;
text-align: center;
-ms-transform: rotate(-20deg); /* IE 9 */
-webkit-transform: rotate(-20deg); /* Safari */
transform: rotate(-20deg);
}

2016년 5월 17일 화요일

웹 프로그래밍 5/17 - 11장 자바스크립트와 jQuery 응용 예제 (계속)

11장 자바스크립트와 jQuery 응용 예제 (계속)


  • 문서 객체 설정하기
  • 무한 스크롤
  • LightBox 플러그인
  • Masonry 플러그인
  • 갤러리 구현하기

실습

무한 스크롤 예제에서 스크롤바가 나타날만큼 컨텐트가 없다면 무한 스크롤이 동작하지 않음. 즉 아래와 같이 2개 정도의 <h1>태그만 만들면 스크롤바가 없기 때문에 무한 스크롤이 동작하지 않음.
var appendDocument = function () {
   for (var i = 0; i < 2; i++) {
   // 문서 객체를 생성합니다.
      $('<h1>Infinity Scroll</h1>').appendTo('body');
   }
};

스크롤바가 나타날 만큼 화면을 채우기 위해서는 어떻게 해야할까?
힌트: $(window).height()보다 $( 무엇 ).height()가 커질 때까지 컨텐트를 추가한다.

임베디드 OS 5/17 - 단일 처리기 스케줄링

단일 처리기 스케줄링


https://drive.google.com/open?id=0B5tRdB4hr8DfdFdPNGc3OXZEV0E

Java 5/17 - 9장 자바 GUI 기초, 10장 이벤트 처리

9장 자바 GUI 기초, AWT와 SWING

실습

https://github.com/jyheo/JavaExercise/blob/master/src/gui/Lake_GUI.java

1. Lake_GUI의 속성(필드) 중 width와 height를 제거한다.
MyObject의 속성(필드) 중 x와 y를 제거한다.

힌트: 그러면 x와 y, width, height 값은 어디에서 읽어 오는가?
JComponent의 getX()와 getY(), getWidth(), getHeight()를 사용한다.
JButton과 JFrame의 contentPane 모두 JComponent를 상속 한 것임

2. Lake_GUI의 속성(필드) 중 ArrayList<MyObject> objects를 제거한다.

힌트: JFrame의 contentPane에 속한 Component들을 어떻게 가져오는가?
JFrame의 getContentPane()이 리턴한 Container 객체의 getComponets()라는 메소드를 호출하면 JFrame의 contentPane에 속한 Component들의 배열을 가져올 수 있음.
즉,
getContentPane().getComponents()를 하면 Component 배열이 리턴됨. 이 배열을 사용!
단, 배열에 포함된 Component 중 MyObject 객체인 경우에만 new_move()를 부르도록 하시오.

3. MyFish의 경우 new_move()에서 x위치는 JFrame 경계에서 반대 방향으로 움직이도록 되어 있다. velocity_y 속성을 추가하여 y도 x와 동일하게 고쳐 보시오.

4. (추가 실습) MyFish에 velocity를 다르게 주는 방법을 만들고 속도가 다른 물고기를 두 마리 만들어 보시오.

10장 자바의 이벤트 처리

2016년 5월 16일 월요일

Java 5/16 - 9장 자바 GUI 기초, AWT와 SWING

 9장 자바 GUI 기초, AWT와 SWING


  • Container와 Component
  • JFrame
  • Layout

실습

예제 9-2 실습하기
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 를 주석처리하면 close 버튼 누를 때 어떻게 달라지는 확인해보기
- FlowLayout의 정렬 방식을 Right, Center로 하면 어떻게 달라지는, 프로그램 윈도우 크기를 변경하면 어떻게 바뀌는지 확인해보기

2016년 5월 11일 수요일

웹 프로그래밍 5/12 - 11장 자바스크립트와 jQuery 응용 예제

11장 자바스크립트와 jQuery 응용 예제


입력 양식 자동 초점 조절하기

프레임 애니메이션 만들기

실습

입력 양식 자동 초점 조절하기 예제를 jQuery를 쓰도록 고쳐보기
힌트: $('xxxx').keydown( function () { } );

프레임 애니메이션 만들기 예제를 고쳐보기
1. jQuery 라이브러리를 쓰도록 고치기
2. 이미지를 매 프레임마다 오른쪽으로 5px씩 움직이게 고치기
3. 이미지를 클릭하면 처음 위치(left=0)로 이동하게 하기

임베디드OS 5/12 - PWM, Servo Motor

PWM, Servo Motor


2016년 5월 10일 화요일

리눅스 페이지 교체 정책에 대해


리눅스 커널 페이지 교체 정책에 대해

Linux 2.4 page replacement changes in detail

[중략]

Page aging

[중략]

However, in some situations the LFU page aging of Linux 2.0 is known to have too much CPU overhead and adjust to changes in system load too slowly. Furthermore, research has shown that recency of access is a more important criteria for page replacement than frequency.

These two problems are solved by doing exponential decline of the page age (divide by two instead of substracting a constant) whenever we find a page that wasn't accessed, resulting in page replacement which is closer to LRU than LFU. This reduces the CPU overhead of page aging drastically in some cases; however, no noticable change in swap behaviour has been observed.

정리하면,

LFU방식인 page aging (교재에 나온 방법)이 리눅스 2.0에서 사용되었으나, 이는 오버헤드가 컸고, 2.4에서는 exponential decline(age를 2로 나누어서 줄임)을 적용하였는데, 이는 LFU보다는 LRU에 더 가까운 방법으로 보인다.
즉, LFU와 LRU방식이 모두 섞여 있다고 보면 됨.

출처:

https://www.usenix.org/legacy/event/usenix01/freenix01/full_papers/riel/riel_html/

임베디드 OS 4/26, 5/3, 5/10 - 가상메모리

가상메모리(Virtual Memory)

페이징

- 페이지 테이블
세그멘테이션

교체정책


강의 슬라이드:

https://drive.google.com/open?id=0B5tRdB4hr8Dfa1g0Z3V4TzZPbzQ

Java 5/10 - 8장 입출력 스트림과 파일 입출력(계속)

8장 입출력 스트림과 파일 입출력(계속)

버퍼 입출력


  • BufferedInputStream
  • BufferedReader

실습

예제 8-9, 8-10 파일 복사 예제

File 클래스


  • File(File parent, String child)
  • File(String pathname)
  • File(String parent, String child)
  • mkdir()
  • String[] list()
  • File[] listFiles()
  • length()
  • getPath()
  • getName()
  • isFile(), isDirectory()
  • exists()

실습

예제 8-8 FIle 클래스를 활용한 파일 관리
long t = f.lastModified(); 
System.out.printf("\t수정한 시간: %tb %td %ta %tT\n",t, t, t, t);
이 부분을 Date() 클래스를 사용하도록 고쳐서 실습해볼것

웹 프로그래밍 5/10 - 10장 jQuery(계속)

10장 jQuery (계속)

Effect


  • show/hide/toggle
  • slideDown/slideUp/slideToggle
  • fadeIn/fadeOut/fadeToggle

Animation


  • animate()
  • delay()
  • stop()

실습

목차 만들기


1. 수정하여 아래 그림과 같이 만들기(목차에서 제목과 차례는 빼기, 목록으로 보여주기)
















2. 차례를 누르면 목차가 slideDown/slideUp이 토글 되도록 고치기
힌트: click()과 slideToggle()을 이용

2016년 5월 9일 월요일

Java 5/9 - 8장 입출력 스트림과 파일 입출력

8장 입출력 스트림과 파일 입출력

InputStream(바이트 스트림) 상속 받은 클래스:


  • FileInputStream("파일명"):
  • BufferedInputStream(InputStream)
  • DataInputStream(InputStream):

Reader(문자(char) 스트림) 상속 받은 클래스


  • InputStreamReader(InputStream)
  • FileReader("파일명")
  • BufferedReader(Reader)

예시)

new InputStreamReader( System.in )
new FileInputStream( "파일이름" )
new BufferedInputStream( new FileInputStream("파일 이름") )
new BufferedReader( new InputStreamReader(System.in) )
new DataInputStream( new BufferdInputStream(System.in) )

실습

[예제 8-6 키보드 입력을 파일로 저장하기]에서, 파일에 쓰기 전에 무조건 대문자로 바꿔서 저장하기
힌트 - Character.toUpperCase() 를 사용

2016년 5월 3일 화요일

웹 프로그래밍 5/3 - 10장 jQuery

10장 jQuery

jQuery 사용, http://code.jquery.com/

<script   src="https://code.jquery.com/jquery-1.12.3.min.js"   integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ="   crossorigin="anonymous"></script>

DOM 선택

$('선택자')

DOM 조작

$('선택자').attr()
$('선택자').css()

$('선택자').text()
$('선택자').html()

$('선택자').addClass(), removeClass(), toggleClass()

이벤트

$('선택자').hover()
$('선택자').click()
$('선택자').on()

실습

지난번 실습에서 자바스크립트로 만든 계산기를 jquery를 사용하여 수정하시오. 아래 파일을 참고


Java 5/3 - 7장 제네릭과 컬렉션 (계속)

7장 제네릭과 컬렉션 (계속)

Collections


  • ArrayList, Vector
  • LinkedList
  • HashMap

Collections static methods

Collections.sort, reverse, max, min, shuffle

실습

예제 7-7, HaspMap을 이용한 학생 정보 저장
마지막 while()문을 for (String name: names) 로 고쳐보시오.




2016년 5월 1일 일요일

인터넷시스템 5/2 - 3장 Transport Layer

3장 Transport Layer

3.1 Transport-layer services
3.2 multiplexing and demultiplexing
3.3 connectionless transport: UDP
3.4 principles of reliable data transfer
3.5 connection-oriented transport: TCP
3.6 principles of congestion control
3.7 TCP congestion control

전송 계층 서비스
멀티플렉싱/디멀티플렉싱
비연결 전송: UDP
신뢰 전송 방법

실습

UDP 실습: http://gaia.cs.umass.edu/wireshark-labs/Wireshark_UDP_v6.1.pdf

Java 5/2 - 7장 제네릭(generic)과 컬렉션(collection)

7장 제네릭과 컬렉션(Generic and Collections)

Collections


  • ArrayList, Vector
  • LinkedList
  • HashMap

언제 어떤 collection을 써야 하는가?

https://kaanmutlu.files.wordpress.com/2011/12/collections.png

실습

Lake에서 배열을 썼던 것을 ArrayList로 바꾼 것.
https://github.com/jyheo/JavaExercise/blob/master/src/collections/LakeAL.java

LakeAL의 drawables와 movables 속성 두개를 아래와 같이 ArrayList<MyObject> 하나로 바꿔서 코드를 수정할 것.
private ArrayList<MyObject> myobjects = new ArrayList<MyObject>();