How can you explain the switch app to a programmer?

switch's essense

i can say step 1!
display a switch with on and off

step 2 : wait for the user to choose either "on" or "off"

Step3 : if the user chooses "on", then the switch becomes bright. If he choose "off" then the switch becomes dark.

This description seems OK but there is a serious problem.

What is the correct way to describe the switch app?
스위치의 본질과, 무엇을 수행할지를 알려줘야한다.

<O, T> where O is the essence of and object
and T is the specific task. in mind

쓸데 없는 말이 많다. 그냥 개체의 Specification을 정의하면 그 개체의 본질과 행동(Task)이렇게 두가지다.
위의 스위치의 예제는 essense는 없고 task만 있는 상태.

What is O of the switch in this classroom?

switch : on c-and off

the final answer

(on c-and off, on c-and off)

(on c-and off, on)

(on c-and off, off)


claim: Given an obejct, we describe the essence of O by describing what  can do.


외부적으로 드러나는 Task(사용자와의 인터페이스)
앱이 내부적으로 하는 모든 행동(본질) Essence.



Specification of chinese restaurant.

Object :

Task :

이런 조카 18색 크레파스 설명을 못하네.

'Courses' 카테고리의 다른 글

[임베디드] 명령어 실습  (0) 2011.09.15
[소공] 실습 3주차  (0) 2011.09.14
[소공] 실습 1주차  (0) 2011.08.31
[소공] 수업 계획  (0) 2011.08.30

자주 보게 되는 예외를 정리해 봤습니다. 이유 모를 예외나 모르는 예외가 있을 때 댓글로 달아주세요.


1. NullPointerException
Null 객체에 대해 접근했을 때 발생한다.
ex) String str = null;
str.equals("foo");


2. IllegalArgumentException
잘못된 인자값을 전달했을때 발생한다.


3. ArithmeticException
산술적인 오류가 있을 때 발생한다.
ex) int i = 1 / 0; // 0으로 나눌 수 없으므로 예외 발생.


4. ClassCastException
잘못된 형변환을 할 때 발생한다.
ex) Object o = "foo";
char[] str = (char[]) o;


'밤을 지새다 > Java' 카테고리의 다른 글

Java StAX: XMLInputFactory  (0) 2012.04.30
Java StAX  (0) 2012.04.30
자바. 얼마나 알고 사용하고 계신가요?  (0) 2011.08.25
객체를 바이트 배열로, 바이트 배열을 객체로  (0) 2011.08.22
메서드 체인화 기법  (0) 2011.08.17
소프트웨어 공학을 위한 언어. 요고 두개만 알면 끝나는 얘기입니다.
1. Specification 언어(명세 언어)
- 대상 : 사람(Programmer)

2. programming 언어
- 대상 : 컴퓨터(컴퓨터가 이해하는 언어)

               Specification
                     --->
Customer                   Programmer
                    <---
               Programming


(S.L  ⊂ P.L)

둘 다 재미없죠. 그래도 명세언어가 프로그래밍언어보다 좀 더 쉽다.(개인차가 있을거 같음)


claim
1. Specification Language = CL(Compatibitliy Language)
2. Programming Language = CL

한마디로 Compatibity Language은 만병통치약이라 이거죠.
※ Compatibility : 양립, (컴퓨터의) 호환성


Specification의 Example
ex1)  앱을 실행시키면 사과가 나오는데 아무것도 안하고 사과만 디스플레이한다 이거죠.
app : display an apple

ex2) switch(on <-> off)

위의 두 예제 처럼 간단한 경우는 큰 문제가 없죠. 좀 더 복잡한 예를 들어봅시다.

ex3) Alarm App
app <-> 사용자 interactive 해야함.

Specification 언어 : 어떤 객체를 가장 세련되게 설명하는 것이 중요.

ex4) chinese restaurant
메뉴는 간단하게 하기 위해서 자장면과 짬뽕만 있다고 가정
표현할 수 있는 언어 : korean, english, java, c, ...
- korean
    Step1. emplyee offers a menu
    Step2. 적절한 메뉴를 고르지 못하고 우유부단하게 방황하고 있음
    Step3. 무한 반복. 아무거나. 너랑 같은거, 맛잇능거
    Step4. customer choose betwenn black noodle and mix noodle
    Step5. pay \5,000

- java
   Step1. Execute chinese restaurant application.
   Step2. Display a menu
   Step3. user select item.
   Step4. restaurant object get user's choice.
   Step5. cook.
   Step6. offers cooked items



Intro to CL :
ex) apple => apple

ex) coin => coin

ex) switch
상태가 있고, 사람이 동작시키길 기다리고 있음
switch => on choice-and off
※ 사람이 고를 수 있는게 choice-and?

ex) chinese restaurant
     => 5000 -> (짜 c-and 짬)
5000원을 주면 선택한 두가지 중에 한가지를 주겠다는 뜻으로 -> 를 사용.?
?? 막 만들어냄
오늘부터 새로운 언어의 창조를 보게 될것이다. 자빠리치 창세기 제 1장 1절.


def) A ->(implies) B : A 이면 B이다.

쉬운걸 개 어렵게 만드는 능력
하드하드 열매 섭취하심.

'Courses' 카테고리의 다른 글

[임베디드] 명령어 실습  (0) 2011.09.15
[소공] 실습 3주차  (0) 2011.09.14
[소공] 11.09.06  (0) 2011.09.10
[소공] 수업 계획  (0) 2011.08.30
1. 복합명사에서의 구묶음 처리
복합명사들을 구성하는 단어들을 합하여 하나의 단위로 만든다. 마지막 명사가 헤드가 되어 복합명사를 대표하게 된다. 여기에서 복합명사란 일반 명사나 고유 명사들이 조사가 붙지 않은 형태로 연속해서 나타나는 것을 말한다.

(1) 유럽 중앙 은행은 유로의 공식 통용에 앞서...
-> 은행(유럽 중앙)은 유로의 통용(공식)에 앞서...

(2) 월드컵과 부산 아시아 경기의 성공은...
-> 월드컵과 경기(부산 아시아)의 성공은...

(3) 동아 일보 신년 여론 조사에서 한나라당 이회창 총재양자 대결할 경우...
-> 조사(동아 일보 신년 여론)에서 총재(한나라당 이회창)대결(양자)할 경우...

복합 명사 내에서의 관계는 의미 분석기에서의 처리로 넘긴다. (모호성으로 인해 구문 분석 수준에서는 단어들의 관계를 결정지을 수 없다.)


2. 본용언/보조용언에 대한 구묶음 처리
보조용언은 자체적으로 독립적인 의미를 갖지 않고 본용언의 의미에 추가적인 성질을 부여하는 역할만 함으로 본용언에 부속시킨다.(황이규 등, 2000)

(1) 사회는 불공정하다고 생각하/VV+고/EE 있/VX+음/ETN+을/JK 보여주/VV+고/EE 있/VX+다/EE
-> 사회는 불공정하다고 생각하/VV(있/VX)+음/ETN+을/JK 보여주/VV(있/VX)+다/EE
->> 사회는 불공정하다고 생각함을 보여주다.

(2) 심각한 정치적 진공 상태로 치닫/VV+고/EE 있/VX+다/EE
-> 심각한 정치적 진공 상태로 치닫/VV(있/VX)+다/EE
->> 심각한 정치적 진공 상태로 치닫다

(3) 무정부 상태부터 해결해야 할 총체적인 위기에 빠졌다
- 무정부 상태부터 해결하/VV+아야/EE 하/VX+ㄹ/ETM 총체적인 위기에 빠졌다
-> 무정부 상태부터 해결하/VV(하/VX)+ㄹ/ETM 총체적인 위기에 빠졌다.
-> 무정부 상태부터 해결할 총체적인 위기에 빠졌다

(4) 남북 관계를 발전시켜 나가도록 하겠다
- 남북 관계를 발전시키/VV+어/EE 나가/VX+도록/EE 하/VX+겠/EP+다/EE
-> 남북 관계를 발전시키/VV(나가/VX 하/VX)+다/EE 
-> 남북 관계를 발전시키다.


3. 의존명사 처리


[출처] 한국어 구문분석을 위한 구묶음 기반 의존명사 처리(박의규, 나동열) 

'NLP' 카테고리의 다른 글

품사 태그  (0) 2011.08.26
topics:
1. computability logic: Japaridze:
in the beginning was game semantics

2. traditonal software engineering: (textbook, ppt자료)

3. book:
title1: 21 c 형 programming title
     2: 그들이 프로그래밍에 대해 말하지 않은 10가지
report: 5 page Java 비판, CL 찬양 그들은 말한다
        : 객체는 method를 수행하고 method는 함수나 procedure이다.
         그들은 말하지 않는다: 부연설명:

5. term project:
구현전단계까지:
- idea brain storming:

grade: - class participation: 20%

----------------------------------------------
problem: coffee vending machine: how can we explain a coffee vending machine?
유: 외모: 성격: capability: 론: sw = capability를 어떻게 표현하느냐를 연구하는 학문
=> CL is the first approach to express capability:

'Courses' 카테고리의 다른 글

[임베디드] 명령어 실습  (0) 2011.09.15
[소공] 실습 3주차  (0) 2011.09.14
[소공] 11.09.06  (0) 2011.09.10
[소공] 실습 1주차  (0) 2011.08.31
1. JDK 설치
자바개발을 위해서는 JDK를 설치해야합니다.
JDK는 Java Development Kit의 약자로 뜻 그대로 자바 개발 도구입니다. JDK에는 개발을 위한 컴파일러나 인터프리터가 포함되어있습니다. JRE라는 것도 들어보셨을건데 JRE는 자바로 작성한 프로그램을 실행하기 위한 환경으로 Java Runtime Environment의 약자입니다.

소개는 간단히 하고 JDK를 설치해 봅시다. java는 오라클에서 배포하고 있고 사용은 무료입니다.

☞ 다운로드 링크

다운로드 링크를 따라가시면 아래와 같이 나올텐데요, SE버전 링크를 걸어두었습니다. SE는 Standartd Edition이구요. 자바 표준 버전입니다. 기본적인 자바개발을 위한 라이브러리가 포함되어 있습니다. 여러가지 버전이 있는데 그중에 EE버전은 Enterprise Edition으로 웹 애플리케이션 서버 개발시 주로 이용합니다.
라이선스에 동의해 주시면 바로 다운로드 받을 수 있습니다. 
자신의 운영체제에 맞는 버전을 받으시면 됩니다.



JDK 설치파일 실행 모습입니다. 환영한다네요!
 
 

기본 설치 옵션입니다. JDK를 설치하면 JRE도 함께 설치가 됩니다.
데모, 샘플을 이용해 공부할 생각이 있으시다면 Demos and Samples를 클릭하셔서 Install를 선택하시면 됩니다.
설치 경로는 디폴트로 Program files아래에 java 폴더로 설치가 됩니다. 그 아래에 버전별로 구분이 되구요
윈도우 7에서 32bit를 사용하실 경우 Program Files(x86) 폴더에 설치가 됩니다.
바꾸셔도 상관은 없습니다. 다만 환경변수(PATH)설치할 때 지정해준 경로로 잡아주시면 됩니다.
 
 

JDK는 이렇게 설치가 되구요. 사양에 따라서 1분 내외로 설치가 완료됩니다.
 
 

다음은 JRE를 설치합니다. 저는 JRE도 디폴트 경로에 설치했습니다.
 

큼지막하게 자바 자랑하고 있네요. 30십억의 장치에서 자바를 쓰고 있답니다.
오라클이 선마이크로시스템즈를 인수하고는 이제 오라클 로고가 딱!
 

완료 되었습니다. [Product Registration Information] 버튼은 제품 등록에 관한 정보를 확인할 수 있는 페이지입니다.
가볍게 [Finish] 버튼을 눌러 설치를 완료합니다.

 

2. 환경변수 설정
환경변수는 콘솔(커맨드)환경에서 자바 컴파일러나 인터프리터를 실행할 시에 실행파일의 전체 경로를 쓰지 않아도 되게끔 해주는 변수입니다.
현재있는 경로에서 어떤 명령어를 실행했을 때 그 경로에 해당 파일이 존재하지 않는다면 환경변수의 경로들을 하나씩 검사하여 그 안에 있으면 실행한다는 얘기입니다.
즉 컴파일을 위해서 C:\Program Files\java\jdk 1.6.02\bin\javac Hello.java 이렇게 다 치지 않고 어디서든 소스 파일이 있는 곳에서 javac hello.java 이렇게 하시면 됩니다. 


아래는 Window 7 환경 기준으로 설명했구요. XP를 쓰시는 분은 [더보기]를 클릭하셔서 시스템 속성에 들어가는 방법을 확인해 주세요.
 
 

윈도우키 + E 를 눌러 탐색기를 실행하고 좌측에 있는 컴퓨터에서 오른쪽 버튼을 눌러 속성(B)를 선택합니다.

 


시스템 설정창이 나오면 좌측에서 "고급 시스템 설정"을 클릭합니다.

 

고급 시스템 설정을 누르면 시스템 속성 창이 뜨는데 여기서 [고급] 탭으로 이동하셔서
[환경변수(N)...] 버튼을 눌러줍니다.


위쪽에 있는 목록은 현재 로그온된 사용자에게만 적용되는 내용이고
아래쪽에 있는 목록은 현재 시스템을 사용하는 전체에게 적용되는 내용입니다.
하나의 계정으로 쓰시는 경우에는 어느쪽이든 상관없지만 전체 사용자에게 적용하시려면
아래쪽에 있는 Path를 편집하시면 됩니다.


Path 편집을 누르면 기존에 있던 Path 값이 있습니다. 기존의 내용을 지우지 마시고 제일 끝에 가셔서
세미콜론(;, 경로를 구분하는 역할을 합니다)을 삽입하시고 JDK를 설치한 경로\bin을 입력하고 확인을 눌러주세요.
다시 시스템 속성 창으로 돌아오면 확인을 눌러 속성을 저장하고 나옵니다.


패스가 잘 저장되었는지 확인해 봅시다. 윈도우 + R 키를 눌러 실행창을 띄우고 cmd (커맨드 콘솔)을 입력하고 엔터!


콘솔창이 나타나면 java 라고 입력하고 엔터.
java 실행 시 옵션에 대한 내용이 나타나면 설정이 제대로 된겁니다.



아직 에디트 플러스나 기타 텍스트 에디터로 자바 프로그래밍을 하시는 분들도 많으시지만
아무래도 이클립스나 J빌더를 사용해서 프로그래밍을 하는 쪽에 한표를 주고 싶습니다.
"자바를 하려면 콘솔에서 자바를 컴파일하고 실행할 줄 알아야 한다"라시는 분들도 계시지만 참고 정도로 알면 된다고 생각하구요, 무얼하든 마찬가지겠지만 개발에 있어서도 환경이 잘 갖춰져 있는게 개발에 더 도움이 되지 않을까 싶습니다. 

콘솔에서 자바를 사용해보시고 싶으신 분은 "자바 콘솔 명령어" 키워드로 검색하시면 원하시는 결과를 얻을 수 있습니다.
내심 사실 거짓말이고 갈 때 태연하게 나타났으면 좋겠다. 이런 기대를 하고 있었는데,
그럼 안온다고 했었으니  없는 사람처럼 투명인간 놀이도 해주고 그럴 생각도 막 하고 말이지.

솔직히 팀장님껜 죄송하긴 해도 아.. 그냥 환불받고 안간다고 할까? 이런 생각도 몇 번씩 하게 되고,
그 캠프 자체에 의미가 있었던게 아니니까 말이다. 무의미하게 시간과 돈을 날리는 셈 아닌가?
그런 생각들이 머릿속을 어지럽히고 일전에 마음을 어지럽히던 사건 몇몇개가 일어난 까닭에 심란해 있었는데,
카톡으로 날아온 메시지에 그런 것 따위. 훗- 바람결에 민들레 홀씨 날아가듯 안녕-

마음이 참 간사하다곤 생각하게 되지만 기분이 좋은 걸 어찌하나
가지 못한다 해서 풀 죽었는데.
간다고 하니 당연히 다시 살아나야지.

기다리던 개강도 하고, 기다리지 아니하였던 날이 기다리는 날이 되니 일주일이 기분 좋게 지나갈 듯 하다. 
아무래도 전공이 전공이다보니 소스 코드를 올려야 할 때가 많은데 일일히 소스코드에 색상을 지정하는건 이미 나와있는 구문 강조 플러그인에 대한 예의도 아니거니와 시간도 아깝거니 해서 Syntax  Highlighter를 찾아봤습니다.
검색해보셨다면 아시겠지만 다 비슷비슷하고, 쓸데 없는 파일까지 다 올리는 식이라 딱 필요한 부분만 쓰려고 포스팅해봅니다.

Part1_환경 구성하기

우선 구글의 Syntax highlighter pretty를 아래의 링크를 통해 다운로드 받아서 쓰기 편하신 곳에 압축을 풀어주세요.

Google code pretty

파일 두개가 보이실텐데 옆의 설명대로 위에 있는 파일은 테스트 파일과 설명이 포함되어 있고, 아래쪽은 필요한 자바스크립트 파일과 스타일시트 파일만 포함되어 있습니다.


각 언어에 대한 테스트 코드나 문서를 보고 싶으시면 위의 파일을, 그냥 티스토리에 적용만 하실거라면 아래쪽 파일을 받으시면 됩니다.


※ 참고로 .js, .css 파일은 위의 파일은 src 폴더 내에 있고, 아래의 파일은 바로 있습니다.


압축을 다 푸셨으면 티스토리에서 관리자 >> 스킨 >> HTML/CSS 편집 페이지로 갑니다. 
 


그럼 블로그 스킨적용을 위한 html 파일과 css파일의 내용이 보이실겁니다.

여기서 css 부분은 손을 안대셔도 되구요. html파일만 Syntax highlighter를 사용할 수 있게 편집해 봅시다.
 

<head>...<link href="./images/pretiffy.css" type="text/css" rel="stylesheet" /><script type="text/javascript" src="./images/prettify.js"></script>...</head>

위처럼 <head> 와 </head> 사이에 위의 구문을 넣어줍니다. 저는 아래와 같이 넣었습니다.
 


그리고 head가 끝나는 </head>뒤에  <body> 태그 안에 onload="prettyPrint()"를 추가해 줍니다.
저는 body 태그 안에 속성이 아무것도 없어서 <body onload="prettyPrint()"> 요렇게만 하면 되는데 혹시 적용된 이벤트가 있다면 그냥 저부분을 안에다가 추가만 해주시면 됩니다.


자 그럼 html 파일에서의 작업은 끝이 났구요. 페이지 이동하기 전에 [저장] 버튼 눌러서 저장 하신 후
"파일 업로드" 탭으로 이동해 주세요.



그럼 옆에 파일 업로드 버튼이 보이실겁니다. 그걸 누르셔서 처음에 다운로드 받았던 파일 중에 아래 그림에 보이는 두개의 파일을 선택 해 주세요. 아래 보이는 두개만 해주시면 되요.

※ 참고 : C/C++, Java, HTML, CSS 이 네개는 다른 js 파일을 포함하지 않아도 기본적으로 사용할 수 있습니다. 쓰시는 언어가 js 파일로 따로 작성되어 있다면 그 파일을 추가해 주세요.  (다른 언어는 따로 테스트를 안해봐서, 저 네개가 된다는 정도만 확인해 봤습니다.) 



Part2_글쓰기

업로드까지 완료했으면 소스코드를 글에 넣을 준비가 다 되었습니다. 소스코드를 넣어보도록 할까요?
글쓰기에서 HTML 에 체크하셔서(이건 체크하지마시구요) HTML 편집모드로 전환합니다.

우선 형식은 아래와 같습니다.
<pre class="prettyprint" id="언어">
<!-- 소스 코드 부분 -->
</pre>

<pre class="prettyprint linenums" id="언어">
<!-- 라인 번호 표시옵션 추가 -->
</pre> 

언어에는 적용할 언어를 쓰시면 됩니다 c나 c++은 c, 자바는 java 이렇게 영어로 써주시면 됩니다. 아까 말씀 드렸던 것처럼 쓰시는 언어가 따로 js 파일이 작성되어있다면 해당 파일도 같이 업로드 해주시기 바랍니다.


마지막으로 아래는 java 작성 예제입니다. 언제나 익숙한 Hello 출력하기 입니다 :D

public class Hello{
      public static void main(String[] args){
            System.out.println("Hello nnoco!");
      }
}


public class Hello{
      public static void main(String[] args){
            System.out.println("Hello nnoco!");
      }
}


※ 참고1 : 라인번호가 추가되어 있어도 소스를 복사할 때는 라인번호는 포함되지 않습니다.

※ 참고2 : 테스트 해보시면 여러분과 제 소스코드 부분의 색상이 다를겁니다. 파일 업로드시 첨부한 prettify.css파일에는 각 구문 별로 색상이 지정되어 있습니다. 이를 고치시면 원하는 색상으로 바꾸실 수 있습니다.
첨부로 제 css 파일 올려두겠습니다. 
 



두런두런. 그나저나 적고보니 심플하지 않네요. 처음엔 그냥 다른 분이 올린거 쓰려다가 "아이"님이 수정하신 pretty를 쓰려고 했는데 막상하려니 마음대로 안되네요. 아이님 pretty는 훨씬 편하게 잘 되어있네요. 혹시 모르니 참고해 보세요.
아이님 블로그 
http://theeye.pe.kr 

형태소분석기를 사용하게 되어 형태소에 부착되는 품사에 대한 태그가 뭘 의미하는 지 알아봤는데,
정확히 정해진 표준은 없는 것 같습니다.
조금 오래 되긴 했지만 『통합국어정보베이스를 위한 한국어 형태·통사 태그 설정, 1996 김재훈 등』에 나온 품사 태그와 논문에서 자주보였던 세종분석표지에 소개되는 내용과는 조금씩 차이가 있네요. 다만 세종계획이 국립국어원의 사업이다 보니 세종계획쪽으로 따르는 게 맞는 듯 하여 세종 분석 표지를 올립니다.

[세종 분석 표지]

대분류 소분류 세분류
(1) 체언 명사NN 일반명사NNG
고유명사NNP
의존명사NNB
대명사NP
수사NR

(2) 용언 동사VV
형용사VA
보조용언VX
지정사VC 긍정지정사VCP
부정지정사MAJ 

(3) 수식언 관형사MM   
부사MA  일반부사MAG 
접속부사MAJ 

 (4) 독립언 감탄사IC   

 (5) 관계언 격조사JK 주격조사JKS 
 보격조사JKC
 관형격조사JKG
 목적격조사JKO
부사격조사JKB 
호격조사JKV 
 인용격조사JKQ
 보조사JX  
접속조사JC  

 (6) 의존형태 어미E  선어말어미EP 
종결어미EF 
연결어미EC
명사형전성어미ETN 
관형형전성어미ETM 
접두사XP  체언접두사XPN 
접미사XS  명사파생접미사XSN 
동사파생접미사XSV 
형용사파생접미사XSA
(부사파생접미사XSB) 
어근XR   

 (7) 기호 마침표, 물음표, 느낌표  SF 
쉼표, 가운뎃점, 콜론, 빗금  SP 
따옴표, 괄호표, 줄표  SS 
줄임표  SE 
붙임표(물결, 숨김, 빠짐)  SO 
외국어  SL 
한자  SH 
기타 기호(논리 수학기호,
화폐 기호) 등) 
SW 
명사추정범주  NF 
용언추정범주  NV 
숫자  SN 
분석불능범주 NA 



[출처] 21세기 세종계획 : http://sejong.or.kr/

'NLP' 카테고리의 다른 글

한국어 구묶음 처리  (0) 2011.08.31
다음 소스를 실행하면 출력 순서는 어떻게 되는지 맞춰보세요 :D

public class MyClass{

public MyClass(){

System.out.println("(가)");
}

static {
System.out.println("(나)");
}

{
System.out.println("(다)");
}

public static void main(String[] args){
System.out.println("(라)");
new MyClass();
}

'밤을 지새다 > Java' 카테고리의 다른 글

Java StAX: XMLInputFactory  (0) 2012.04.30
Java StAX  (0) 2012.04.30
Exceptions  (0) 2011.09.05
객체를 바이트 배열로, 바이트 배열을 객체로  (0) 2011.08.22
메서드 체인화 기법  (0) 2011.08.17

+ Recent posts