- Linux/필수명령어/용법 . . . . 407 matches
사용자를 새로 등록한다.
- GD [100]: ,,정해주는 값을 그냥 사용한다.
그외에도 홈 디렉토리에 사용하는 셸 등을 계속 물어오는데, 대괄호 속에 내정된 것을 그냥 사용하고자 한다면 엔터키만 누르면 된다. 패스워드 등을 입력하고 나면 지금까지 입력된 정보를 보여주고, 몇 가지 생성 작업을 화면으로 보여준 후 작업을 종료한다.
프로그램을 지금이 아닌 나중에 실행하도록 예약한다.
-q 큐 : 대소문자 알파벳으로 큐를 지정한다. 순서적으로 빠른 알파벳이 지정된 큐 일수록 CPU 시간 점유 우선권이 낮다.
명령은 기본적으로 표준 입력 장치를 통해서 받으며, ^D로 입력을 종료한다. 리다이렉션을 사용하여 다른 파일의 내용을 사용할 수 있다.
/etc/at.allow 파일이 있다면 이 파일에 명단이 있는 사용자만이 at 명령을 사용할 수 있다. /etc/at.allow 파일이 없다면 /etc/at.deny 파일을 찾는다. 이 파일에 목록이 있는 사용자는 at 명령을 사용할 수 없다. 두 파일 모두 찾지 못한다면 오로지 슈퍼 유저만이 at 명령을 사용할 수 있다. 그리고 /etc/at.deny 파일이 비어 있다면 모든 사용자가 at 명령을 사용할 수 있다.
work에 수록된 작업 사항들을 오전 8시에 수행하도록 한다.
- at noon work ,,정오에 work에 수록된 작업을 수행한다.
내일 오후2시 40분에 work 파일에 수록된 작업을 수행한다.
인수로 주어진 문자열을 큰 글씨로 만들어서 출력한다.
-w : 옵션 지정만 하면 80 칼럼으로 폭을 바꾼다. 지정하지 않으면 132 칼럼으로 내정되어 있다. -w 옵션 뒤에 숫자를 지정하면 원하는 폭으로 조정할 수 있다.
- banner linux | lqr ,,디폴트 프린터에 확대한 글자를 출력한다.
이것은 리눅스의 Boume 셸이다. sh를 사용하면 sh가 bash를 호출하여 실행한다. bash를 직접 사용하지 말고 sh를 사용하도록 하라.
전자우편의 수신을 즉시 알려주는 동작을 가능하게 할 것인지 그렇지 않은 지의 여부를 보여주거나 결정한다.
유닉스 셸은 사용중이라도 주기적으로 전자우편의 수신 여부를 점검한다. 만일 사용자가 전자우편이 도착하는 즉시 알고자 한다면 biff를 사용하여 그것을 지시할 수 있다. 또는 언제라도 그 기능을 해제할 수도 있다. biff는 인수없이 사용되면 현재 어떤 상태로 되어 있는지 보여준다. 기능 설정과 해제 여부는 y 혹은 n 인수를 주어서 결정한다.
-j : 1월 1일부터 날짜수를 계산하는 julian 날짜를 표시한다.
-y : 올해의 달력을 표시한다.
인수를 하나만 준다면 그 숫자는 연도를 의미하는 것으로 간주된다. 두 개의 숫자를 준다면 앞의 것은 월, 그 다음은 연도를 의미하는 것이 된다. 우리의 습관과는 다른 방법을 사용한다. 아무 인수도 주어지지 않으면 이번달의 달력을 표시한다. 연도를 표기할 때는 서기를 완전히 표기해야 한다. 예를들어 97은 1997년이 아니라 서기 97년의 달력을 출력할 것이다.
cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.
- MoreEffectiveC++/Miscellany . . . . 150 matches
사물은 변화한다.
소프트 웨어 개발자라면, 우린 아마 많은것을 알 필요는 없다. 하지만 변하는 것은 인지해야 한다. 우리는 무엇이 변할건가, 어떻게 변할건가, 언제 변화가 일어나는가, 왜 거기에서 변화가 일어나는가 이런것 따위는 알필요가 없다. 그렇지만 우린 알아야 한다. '''변화한다.''' 라는 점 말이다. (작성자주:개인적인 의견으로 의역한 단락, 혹시나 관심있으면 의견좀 내주세요.)
좋은 소프트웨어는 변화를 잘 수용한다. 새로운 기능을 수용하고, 새로운 플랫폼에 잘 적용되고, 새로운 요구를 잘 받아 들이며, 새로운 입력을 잘 잡는다. 이런 소프트웨어는 유연하고, 강하고, 신뢰성있고, 돌발 상황(사고)에 의해 죽지 않는다. 이런 소프트웨어는 미래에 필요한 요소를 예상하고, 오늘날 구현시에 포함시키는 프로그래머들에 의해서 디자인된다. 이러한 종류의 소프트웨어는-우아하게 변화하는 소프트웨어- ''program in the future tens''(매래의 프로그램:이하 영문 직접 사용)을 감안하는 사람들이 작성한다.
''program in future tense''는, 변화의 수용하고, 준비한다. 라이브러에 추가될 새로운 함수, 앞으로 일어날 새로운 오버로딩(overloading)을 알고, 잠재적으로 모호성을 가진 함수들의 결과를 예측한다. 새로운 클래스가 상속 계층에 추가될 것을 알고, 이러한 가능성에 대하여 준비한다. 새로운 어플리케이션에서 코드가 쓰이고, 그래서 새로운 목적으로 함수가 호출되고, 그런 함수들이 정확히 동작을 유지한다. 프로그래머들이 유지 보수를 할때, 일반적으로 원래의 개발자의 영역이 아닌, 유지 보수의 몫을 안다. 그러므로, 다른 사람에 의해서 소프트웨어는 이해, 수정, 발전의 관점에서 구현하고 디자인된다.
이런 좋은 소프트웨어를 만들기 위한 방법으로, 주석이나, 기타 다른 문서 대신에 C++ 내부에 디자인으로 구속해 버리는 것이다. 예를들자면 '''만약 클래스가 결코 다른 클래스로 유도되지를 원치 않을때''', 단시 주석을 헤더 파일에 넣는 것이 아니라, 유도를 방지하기 위하여 C++의 문법을 이용한 기술로 구속 시킨다.;이에 대한 방법은 '''Item 26'''에 언급되었다. 만약 클래스가 '''모든 인스턴스를 Heap영역에 생성시키고자 할때''', 클라이언트에게 말(문서)로 전달하는 것이 아니라. '''Item 27'''과 같은 접근으로 제한 시켜 버릴 수 있다. 만약 클래스에 대하여 복사와 할당을 막을려고 할때는, 복사 생성자와 할당(assignment) 연산자를 사역(private)으로 만들어 버려라. C++은 훌륭한 힘과, 유연성, 표현성을 제공한다. 이러한 언어의 특징들을 당신의 프로그래밍에서 디자인의 정책을 위해서 사용하라.
"변화한다.", 험난한 소프트웨어의 발전에 잘 견디는 클래스를 작성하라. (원문:Given that things will change, writeclasses that can withstand the rough-and-tumble world of software evolution.) "demand-paged"의 가상 함수를 피하라. 다른 이가 만들어 놓지 않으면, 너도 만들 방법이 없는 그런 경우를 피하라.(모호, 원문:Avoid "demand-paged" virtual functions, whereby you make no functions virtual unless somebody comes along and demands that you do it) 대신에 함수의 ''meaning''을 결정하고, 유도된 클래스에서 새롭게 정의할 것인지 판단하라. 그렇게 되면, 가상(virtual)으로 선언해라, 어떤 이라도 재정의 못할지라도 말이다. 그렇지 않다면, 비가상(nonvirtual)으로 선언해라, 그리고 차후에 그것을 바꾸어라 왜냐하면 그것은 다른사람을 편하게 하기 때문이다.;전체 클래스의 목적에서 변화를 유지하는지 확신을 해라.
모든 클래스에서 할당(assignment), 복사를 잡아라. "비록 아무것도 하지 않는 것"이라도 말이다. 왜냐하면 그것들이 지금 할수 없는건 미래에도 할수 없다는 의미이다. 만약 이러한 함수들이 구현하기에 어렵게 한다면, 그것을 private로 선언하라. 미래에도 동작시키게 하지 않다는 의미다. 컴파얼러가 만들어내는 함수에 대한 모호한 호출을 할리가 없다. (기본 할당 생성자나 기본 복사 생성자가 종종 발생되는 것처럼)
당신의 코드를 변화가 필요할때, 그 효과를 지역화(지역화:localized) 시키도록 디자인 해라. 가능한한 캡슐화 하여라:구체적인 구현은 private 하라. 광범위하게 적용해야 할곳이 있다면 이름없는(unamed) namespace나, file-static객체 나 함수(Item 31참고)를 사용하라. 가상 기초 클래스가 주도하는 디자인은 피하라. 왜냐하면 그러한 클래스는 그들로 부터 유도된 모든 클래스가 초기화 해야만 한다. - 그들이 직접적으로 유도되지 않은 경우도(Item 4참고) if-than-else을 개단식으로 사용한 RTTI 기반의 디자인을 피하라.(Item 31참고) 항상 클래스의 계층은 변화한다. 각 코드들은 업데이트 되어야만 한다. 그리고 만약 하나를 읽어 버린다면, 당신의 컴파일러로 부터 아무런 warning를 받을수 없을 것이다.
이와 같은 내용들을 아무리 반복해서 말하곤 하지만, 대부분의 프로그래머들은 현재의 시류를 그대로 고집한다. 훌륭한 안목의 C++ 전문가가 말하는 충고에 관해서 생각해라.
* 당신은 B*가 가리키고 있는 D를 제거할때 가상 파괴자를 필요로 한다.
그 의미는 클라이언트 코드에 대하여 약간의 변화가 -delete문-결과적으로 클래스 B의 정의까지 변화해야 하는 필요성을 보여준다. 그런한 상황이 발생하면, B의 클라이언트들은 모두 재 컴파일 해야 한다. 아까, 이 필자의 충고를 따르면, 확장 코드에 대한 클라이언트의 라이브러리도 재 컴파일, 재 연결해야 한다. 이는 소프트웨어 디자인에 효과를 미틴다.
그렇지만 새로운 클래스가 B로부터 유도되면 바뀌어야 한다.
다시, B에 작은 변화는 아마 클라이언트의 부가적인 재 컴파일과 재링크를 요구한다. 그렇지만 소프트웨어의 작은 변화는 시스템에 작은 충격을 줄것이다. 이러한 디자인은 테스트로 실패이다.
미래의 시류로 생각하는 관점은 완전히 다르다. 지금 어떻게 클래스를 사용하느냐를 묻는것 대신에, '''어떻게 클래스를 디자인 하느냐를 묻는다.''' 미래 지향적 생각으로는 이렇게 말한다. 만약 기초 클래스로 사용된 클래스가 '''디자인''' 된다면 그 클래스는 가상 파괴자를 가져야 한다. 그러한 클래스는 지금과 미래 모두 정확히 동작해야 한다. 그리고 그들오 부터 클래스들이 파생될때 다른 라이브러리의 클래스에게 영향을 끼쳐서는 안된다. ( 최소한, 파괴자로 인한 논란 만큼, 영향이 없어야 한다. 추가적인 변화가 클래스에 필요하면 다른 클라이언트들오 아마 영향을 받을 것이다.)
상업용 클래스 라이브러리(C++표준 라이브러리 상의 string 스펙의 날짜를 앞당기려는 회사)는 가상 파괴자를 가지고 있지 않은 sting클래스를 포함한다. 그 벤더의 설명은?
확실히 vtbl 문제는 합법적인 접근이다. (Item 24참고) 대다수 String클래스의 구현에서 오직 하나의 char*를 각각의 String 객체가 가지고 있다. 그래서 각 String객체에 추가되는 vptr도 두배의 양을 차지한다. 허용하지 않으려는 이유는 이해하기 쉽다. String같은 클래스를 무겁게 사용하면 눈에 띠는 성능 저하가 있다. 앞서 언급한 경우 클래스당 성능 저하는 약 20%정도를 가지고 온다. (Item 16참고)
문자열 객체에 대한 메모리의 할당은-문자의 값을 가지고 있기 위해 필요로하는 heap메모리까지 감안해서-일반적으로 char*이 차지하는 양에 비하여 훨씬 크다. 이러한 관점에서, vtpr에 의한 오버헤드(overhead)는 미미하다. 그럼에도 불구하고, 그것은 할만한(합법적인,올바른) 고민이다. (확실히 ISO/ANSI 포준 단체에서는 그러한 관점으로 생각한다. 그래서 표준 strnig 형은 비 가상 파괴자(nonvirtual destructor) 이다.)
어떤 것이 더 많은 문제를 일으키는 것으로, 밴더들의 주목을 받고 있을까? "우리는 String*을 사용하는 목적을 가지지 않는다. 그래서 이는 별 문제가 되지 않는다." 그건 아마 사실일 것이다. 하지만 그들의 String클래스는 수많은 개발자들이 사용가능한 것이다. 수많은 개발자들이 C++의 수준이 제각각이다. 이러한 개발자들이 String상에서의 비가상 파괴자(no virtual destructor)를 이해할까? 그들이 비가상 파괴자를 가진 String때문에 String으로 유도된 새로운 클래스가 모험 비슷한 것을 알고 있을까? 이런 벤더들은 그들의 클라이언트들이 가상 파괴자가 없는 상태에서 String*를 통하여 삭제가 올바르게 작동하지 않고, RTTI와 String에 대한 참조가 아마 부정확한 정보를 반환한다는걸 확신시킬까? 이 클래스가 정확히 쓰기 쉬운 클래스일까? 부정확하게 쓰기 어려운 클래스일까?
대안으로 C++을 사용할때 유도를 제한해 버리는 것이다. Item 26에서 어떻게 객체를 heap에 만들거고 auto_ptr객체로 heap객체를 조정하는 방법에 관해서 언급하였다. String을 위한 인터페이스 생성은 아마 독특하고 불편한 다음과 같은 문법 을 요구한다.
... // 이제 해당 객체는 포인터처럼 다룬다. 하지만 delete를 부르지 말아야 한다.
- MoreEffectiveC++/Efficiency . . . . 128 matches
'''80-20 규칙''' 이란? 프로그램의 80%의 리소스가 20%의 코드에서 쓰여진다.:실행 시간의 80%가 대략 20%의 코드를 소모한다;80%의 메모리는 어떤 20%의 코드에서 쓴다.;80%의 disk 접근은 20%의 코드에서 이루어진다.:80%의 소프트웨어 유지의 노력은(maintenance effort)는 20%의 코드에 쏟아 부어진다.[[BR]]
80-20 규칙은 수많은 기계에서, 운영체제(Operating System)에서, 그리고 어플리케이션에서 적용된다. 80-20 규칙은 단지 재미있는 표현보다 더 많은 의미가 있다.;그것은 광범위하고, 실질적인 개념이 필요한 시스템의 성능(능률)에 개선 대한 기준점을 제시한다.
프로그래머의 노력이 당신의 소프트웨어의 성능 개선에 촛점을 맞추게 된다면 80-20 규칙은 당신의 생활을 '''간편하게(윤택하게)''', 혹은 좀더 '''복잡히(어렵게)''' 만들어 나갈것이다. '''간편하게(윤택하게)''' 쪽을 생각한다면, 80-20 규칙은 당신이 성능에 대하여 솔직히 어느 정도 평범한 코드의 작성을 대다수에 시간을 보낼수 있음을 의미한다.왜냐하면 당신이 일하는 시간의 80%에 작성된 것은 시스템의 성능에 관해 특별히 해를 끼치지 않는다는 의미이기 때문이다. 저의미는 아마 많은 부분이 당신을 위한 말은 아니지만, 그것은 당신의 스트레스 정도를 다소 줄여줄수 있다. '''복잡히(어렵게)'''를 생각해 본다면 80-20 규칙은 만약 당신이 성능문제를 가지고 있다면 당신 앞에 놓여진 일은 험하다는 걸 의미한다. 왜냐하면, 당신은 오직 그 문제를 일으키는 작은량의 코드들을 제거해야 하고, 성능을 비약적으로 향상시키는 방법을 찾아야 하기 때문이다. 이렇게 80-20 규칙은 두가지의 반대되는 다른 관점에서의 접근이 주어진다.:대다수 사람들은 그렇게하고, 옯은 방법을 행해야 할것이다.
많은 사람들이 병목현상(bottleneck)에 관한 해결책에 고심한다. 경험에 따른 방법, 직관력, tarot 카드이용(운에 맏기기) 그리고 Ouija(점괘를 나타내는 널판지의 상표명, 즉 점보기) 보드를 사용 하기도 하고, 소문이나 잘못, 올바르지 않은 메모리 할당, 충분하지 않은 최적화를 한 컴파일러, 혹은 치명적인 순환 구문을 만들어내기 위해 어셈블리 언어를 사용한 돌대가리 메니저들의 메니저들. 이러한 사정들은 일반적으로 멸시의 비웃음을 동반하고, 그들의 예언은 솔직히 잘못된 것이다.
저러한 상황에서, 만약 내가 느린 플그램이나 너무 많은 프로그램을 만나면 어떻게 해야하는가? 80-20 규칙은 프로그램의 랜덤 구역의 증가는 돕는데 썩좋지는 않다는 걸 의미한다. 사실, 프로그램은 성능 향상은 비직관적이다. 하지만 당신의 프로그램에서 단순한 랜덤 부분의 증가보다 성능의 병목 지점을 찾는 생각에 노력을 기울이는 것이 더 좋와 보이지는 않은 것이다. 자 그럼 일해 보실까요?
일을 할 그 부분은 실질적으로 당신의 프로그램의 20%로, 당신에게 고민을 안겨주는 부분이다. 그리고 끔찍한 20%를 찾는 방법은 프로그램 프로파일러(profiler:분석자)를 사용하는 것이다. 그렇지만 어떠한 프로파일러(profiler:분석자)도 못할일이다. 당신은 가장 관심 있는 직접적인 해결책을 내놓는 것을 원한다.예를 들자면 당신의 프로그램이 매우 느리다고 하자, 당신은 프로파일러(profiler:분석자)가 프로그램의 각각 다른 부분에서 얼마나 시간이 소비되는지에 관해서 말해줄껄 원한다. 당신이 만약 그러한 능률 관점으로 중요한 향상을 이룰수 있는 부분에 관해 촛점을 맞추는 방법만 알고 있다면 또한 전체 부분에서 효율성을 증대시키는 부분을 말할수있을 것이다.
몇번이나 구문이 실행되는가, 함수가 실행되는가는 때때로 당신의 소프트웨어 안의 모습을 이야기 해준다. 예를들어 만약 당신이특별한 형태의 객체를 수백개를 만든다고 하면, 생성자의 횟수를 세는것도 충분히 값어치 있는 일일 것이다. 게다가 구문과, 함수가 불리는 숫자는 당신에게 직접적인 해결책은 제시 못하겠지만, 소프트웨어의 한면을 이해하는데 도움을 줄것이다. 예를들어서 만약 당신은 동적 메모리 사용을 해결하기 위한 방법을 찾지 못한다면 최소한 몇번의 메모리 할당과 해제 함수가 불리는것을 아게되는것은 유용한 도움을 줄지도 모른다. (e.g., operators new, new[], delete and delete[] - Item 8참고)
물론,프로파일러(profiler:분석자)의 장점은 프로세스중 데이터를 잡을수 있다는 점이다. 만약 당신이 당신의 프로그램을 표현되지 않는 입력 값에 대하여 프로파일(감시 정도 의미로)한다고 하면, 프로파일러가 보여준 당신의 소프트웨어의 모습에서 보통의 속도와, 잘 견디는 모습을 보여준다면 - 그부분이 소프트웨어의 80%일꺼다. - 불만있는 구역에는 접근하지 않을 다는 의미가 된다. 프로파일은 오직 당신에게 프로그램의 특별난 부분에 관해서만 이야기 할수 있는걸 기억해라 그래서 만약 당신이 표현되지 않는 입력 데이터 값을 프로파일 한다면 당신은 겉으로 들어나지 않는 값에 대한 프로파일로 돌아가야 할것이다. 그것은 당신이 특별한 쓰임을 위하여 당신의 소프트웨어를 최적화 하는것과 비슷하다. 그리고 이것은 전체를 보는 일반적인 쓰임 아마 부정적인 영양을 줄것이다.
이런 결과들을 막는데 최선책은 당신의 소프트웨어에 가능한한 많은 데이터 들에게 프로파일을 시도하는것이다. 게다가 당신은 각 데이터들이 소프트웨어가 그것의 클라이언트들(혹은 최소한 가장 중요한 클라인트들에게라도)에게 사용방식을 잘 보여주도록 확신할수 있어야만 한다. 잘표현되는 데이터들은 얻기가 용이하다 왜냐하면 프로파일링 중에는 당신이 그들의 데이터를 사용할수 있기때문에 많은 클라이언트들이 좋기 때문이다. (뭔소리야. --;) 당신은 당신의 소프트웨어를 그들과 만나면서 조정(tuning)을 할것이고, 그것이 오직 당신이나 클라이언트들 양쪽에게 좋은 방법이다.
우리가 어린이이고, 당신의 부모님들이 당신에게 방을 치우라고 이야기 했을때를 기억해 보자. 만약 당신이 나와 같다면 말이지 난 당장 "네" 하고 대답하고 아마도 다시 내가하던 다른 일을 할꺼다. 당신은 아마 방을 치우지 않겠지. 사실 방을 치우는 작업은 당신의 일의 우선순위에 대한 생각에서 마지막에 위치한다. - 그러니까. 당신의 부모님이 당신에 방에 다가오는 소리를 들을때 말이지. 그리고 나면 당신은 전속력으로 방으로 뛰어들어가 가능한한 가장 빨리 치운다. 만역 당신이 행운아라면 부모님들은 결코 체크를 안하시고 당신은이런 모든 치우는 귀찮은 작업을 보통 꺼린다.
이런 같은 관점을 이제 막 5년차 C++프로그래머에 대입 시켜본다. 컴퓨터 과학에서, 우리는 그러한 뒤로 미루기를 바로 ''''lazy evaluation''''(구지 해석하면 '''필요시 연산, (최)후 연산, 늦은 연산'''정도라 할수 있겠다.)이라고 말한다. 당신이 lazy evaluation을 사용하면 당신의 클래스들이 최종적으로 원하는 결과가 나올 시간까지 지연되는 그런 상태로 코딩을 해야 한다. 만약 결과값을 결국에는 요구하지 않는다면, 계산은 결코 수행되지 않아야 한다. 그리고 당신의 소프트웨어의 클라이언트들과 당신의 부모님은 더 현명하지 않아야 한다.( 무슨 소리냐 하면, 위의 방치우기 이야기 처럼 부모님이나 클라이언트들이 lazy evaluation기법의 일처리로 해결을 하지 않아도 작업에 대한 신경을 안써야 한다는 소리 )
아마 당신은 내가 한 이야기들에 대하여 의문스로운 점이 있을것이다. 아마 다음의 예제들이 도움을 줄것이다. 자!, lazy evaluation은 어플리케이션 상에서 수많은 변화에 적용할수 있다. 그래서 다음과 같이 4가지를 제시한다.
// 같이 사용 방식이 적용된다고 가정한다. 하지만 결코 존재하지는 않는다.)
이와 같은 구문의 사용으로, String의 convertToUpperCase 함수를 적용하면, s2의 값의 복사본을 만들어야 하고, 수정되기전에 s2에 그걸 s2의 종속되는 데이터로 만들어야 한다. convertToUpperCase 내부에 우리는 lazy 상태가 더이상 지속되지 않도록 하는 코드를 넣어야 한다.:s2가 마음대로 다룰수 있도록 s2의 공유된 값의 사본을 복사해야 한다. 반면에 만약 s2가 결코 수정되지 않을 것이라면, 이러한 s2만의 값을 복사하는 일련의 과정이 필요 없을 것이다. 그리고 s2가 존재하는 만큼 값도 계속 존재해야 한다. 만약 더 좋게, s2가 앞으로 결코 변하지 않는다면, 우리는 결코 그것의 값에 대한 노력을 할필요가 없을 것이다.
첫번째 operator[]는 문자열을 읽는 부분이다,하지만 두번째 operator[]는 쓰기를 수행하는 기능을 호출하는 부분이다. 여기에서 '''읽기와 쓰기를 구분'''할수 있어야 한다.(distinguish the read all from the write) 왜냐하면 읽기는 refernce-counting 구현 문자열로서 자원(실행시간 역시) 지불 비용이 낮고, 아마 저렇게 스트링의 쓰기는 새로운 복사본을 만들기 위해서 쓰기에 앞서 문자열 값을 조각내어야 하는 작업이 필요할 것이다.
이것은 우리에게 적용 관점에서 상당히 난제이다. 우리가 원하는 것에 이르기 위하여 operator[] 안쪽에 각기 다른 작업을 하는 코드가 필요하다.(읽기와 쓰기에 따라서 따로 작동해야 한다.) 어떻게 우리는 operator[]가 읽기에 불리는지 쓰기에 불리는지 결정할수 있을까? 이런 잔인한 사실은 우리를 난감하게 한다. lazy evaluation의 사용과 Item 30에 언급된 proxy 클래스(위임 클래스, DP에서의 역할과 비슷할것이라 예상) 는 우리가 수정을 위하여 읽기나 쓰기 행동을 하는지의 결정을 연기하게 한다.
이런 경우에서는 오직 field2의 값만을 요구한다. 따라서 다른 필드를 로드하는 작업은 필요없는 작업이 되어 진다.
field1Value 가 그것을 가리키게 한다.
객체의 각 필드는 필요한 데이터의 포인터로 표현되어 있고, LargeObject의 생성자는 null로 초기화 된다. 그런 null 포인터는 아직 데이터 베이스에서 해당 필드의 정보를 안읽었다는 걸 의미한다. 데이터를 접근하기 전에 LargeObject의 각 멤버 함수는 반드시 이 필드의 포인터를 검사한다. 만약 포인터가 null이라면 데이터를 사용하기 전에 반드시 데이터 베이스에서 읽어 온다.
'''lazy fetching'''을 적용 하면, 당신은 반드시 field1과 같은 const멤버 함수를 포함하는 어떠한 멤버 함수에서 실제 데이터 포인터를 초기화하는 과정이 필요한 문제가 발생한다.(const를 다시 재할당?) 하지만 컴파일러는 당신이 const 멤버 함수의 내부에서 데이터 멤버를 수정하려고 시도하면 까다로운(cranky) 반응을 가진다. 그래서 당신은 "좋와, 나는 내가 해야 할것을 알고있어" 말하는 방법을 가지고 있어야만 한다. 가장 좋은 방법은 포인터의 필드를 mutable로 선언해 버리는 것이다. 이것의 의미는 어떠한 멤버 함수에서도 해당 변수를 고칠수 있다는 의미로, 이렇게 어떠한 멤버 함수내에서도 수행할수 있다. 이것이 LargeObject안에 있는 필드들에 mutable이 모두 선언된 이유이다.
- MoreEffectiveC++/Techniques2of3 . . . . 116 matches
Reference counting(이하 참조 세기, 단어가 길어 영어 혼용 하지 않음)는 같은 값으로 표현되는 수많은 객체들을 하나의 값으로 공유해서 표현하는 기술이다. 참조 세기는 두가지의 일반적인 동기로 제안되었는데, '''첫번째'''로 heap 객체들을 수용하기 위한 기록의 단순화를 위해서 이다. 하나의 객체가 만들어 지는데, new가 호출되고 이것은 delete가 불리기 전까지 메모리를 차지한다. 참조 세기는 같은 자료들의 중복된 객체들을 하나로 공유하여, new와 delete를 호출하는 스트레스를 줄이고, 메모리에 객체가 등록되어 유지되는 비용도 줄일수 있다. '''두번째'''의 동기는 그냥 일반적인 생각에서 나왔다. 중복된 자료를 여러 객체가 공유하여, 비용 절약 뿐아니라, 생성, 파괴의 과정의 생략으로 프로그램 수행 속도까지 높이고자 하는 목적이다.
그리고 여기의 5에 해당 하는 숫자를 '''''Reference count''''' 라고 부른다. 혹자는 ''use count''라고 부르기도 하는데, 학술 용어의 당파에 따른거니 별 상관 안한다. 하지만 나(scott mayer) 그렇게 안부른다.
참조 세기를 하는 String 클래스를 만드는건 어렵지는 않지만, 세세한 부분에 주목해서 어떻게 그러한 클래스가 구현되는지 주목해 보자. 일단, 자료를 저장하는 저장소가 있고, 참조를 셀수 있는 카운터가 있어야 하는데, 이 둘을 하나로 묶어서 StringValue 구조체로 잡는다. 구조체는 String의 사역(private)에 위치한다.[[BR]]
물론 이의 이름은 String과 다른 이름을 매겨야 하겠지만,(아마 RCString정도?) 하지만 String자체를 구현한다는 의미로 그냥 이름은 유지하고, 앞으로 말할 참조세기를 적용시킨 String 객체를 만들어 나가겠다.
이것으로 StringValue의 구현은 일단 끝이다. 이를 사용하는 String 객체의 구현에 들어가야 한다.
먼저 생성자를 구현한다.
// String의 복사 생성자, 초기화 목록으로 StringValue에 값을 할당한다.
다음과 같다. 여기에서 "More Effective C++" 라는 문자열을 공유한다면, 참조세기가 이루어 지는 것일 거다. 그러기 위해서 String의 복사 생성자는, 참조 카운터를 올리고, 자료를 새로 생성할것이 아니라, 그냥 포인터만 세팅해 주는 일을 해야 한다. 이런 과정을 구현하면
// String 클래스의 복사 생성자, 초기화 목록으로 StringValue의 포인터를 세팅한다.
생성자의 손쉬운 구현같이 파괴자 구현도 그리 어려운 일이 아니다. StringValue의 파괴는, 서로가 최대한 사용하고, 값이 파괴 시점은 참조 카운터가(reference counter:이하 참조 카운터만) 1인 경우 더이상 사용하는 객체가 없으므로 파괴하도록 구성한다.
delete value; // 있지 않다면 삭제 한다.
value = rhs.value; // 자료를 공유한다.
(이 함수는 원래의 C++에서 배열의 사용 개념과 같이, index의 유효성을 점검하지 않는다. 이에 대한 감은은 참조 세기의 주제에 떨어져 있고, 추가하는 것도 그리 어려운일이 아니라 일단은 제외한다.)
하지만 non-const의 operator[]는 이것(const operator[])와 완전히 다른 상황이 된다. 이유는 non-const operator[]는 StringValue가 가리키고 있는 값을 변경할수 있는 권한을 내주기 때문이다. 즉, non-const operator[]는 자료의 읽기(Read)와 쓰기(Write)를 다 허용한다.
// 내부의 문자열의 한 부분을 반환한다.
이것은 부족한 점이 있다. 다음 과정에서 보강한다.
그래서 다음과 같은 구문을 실행한다면
shareable(true) // 초기화시에는 공유를 허락한다.
복사 생성자에서는 참조 뿐만 아니라. 공유를 거부할때 역시 감안해야 하므로, 수정해야 한다.
그리고 이 shareable인자는 non-const operator[]가 호출될때 false로 변경되어서 이후, 해당 자료의 공유를 금지한다.
- EffectiveC++ . . . . 105 matches
preprocessor(전처리기)보다는 compiler를 선호한다는 뜻.[[BR]]
DeleteMe #define(preprocessor)문에 대해 const와 inline을(compile)의 이용을 추천한다. --상민
멤버 변수를 만들어야 한다.
const int GamePlayer::NUM_TURNS; // 정의를 꼭해주어야 한다.
// 매크로 작성시에는 언제나 매크로 몸체의 모든 인자들을 괄호로 묶어 주어야 한다.
* ''new를 호출할때 []를 이용했다면 delete의 호출시에도 []를이 용한다. 간단간단!''
나중에 메모리를 해제하기 위해서 소멸자에서 delete를 사용한다.[[BR]]
세번째 '''소멸자에서 포인터 삭제'''에 관한 것을 제대로 안해주면 메모리 유출(memory leak)으로 그냥 처리되기 때문에 클래스에 포인터 멤버를 추가할 때마다 반드시 명심해야 한다.
상속받은 클래스내에 operator new연산자를 다시 재정의 해줘야 한다. [[BR]]
return ::operator new (size); // 요구를 처리한다
operator new연산자처럼 잘(?) 처리 해주어야 한다.
직접만들어 주게되면 이런 추가 정보를 않붙여줘도 된다는 군요. 그러니까 추가 정보 크기만큼의 손실을 줄일 수 [[BR]]
있다는 말이지요~ 한다마디로 효율성이 좋아졌다.(반면 ::operator new는 유연성이 좋다)[[BR]]
클래스 내에 operator=가 정의 되어 있지 않기 때문에, C++에서 default 치환 연산자를 호출한다.[[BR]]
직접 복사 한다.[[BR]]
'' * 클래스 안에 포인터를 조물딱 거리는 멤버 변수가 있을 경우에는 그 클래스에 복사 생성자와, 치환 연산자를 꼭 정의해 주어야 한다...''
1. 초기화 리스트를 사용한다.
2. 생성자의 코드 부분에서 치환을 한다.
2가지 방법 정도로 멤버 변수를 초기화 할수 있는데. 책에서는 초기화 리스트를 선호한다.[[BR]]
두번째는 실용주의(효율성) 차원에서 초기화 리스트를 선호 한다는 것이다. [[BR]]
- MoreEffectiveC++/Techniques1of3 . . . . 103 matches
가상 생성자, 이것에 관해서 생각해 보기는 좀 생소하다. 사실 가상 함수를 부를려면, 객체에대한 참조나, 포인터를 가지고 있어야 하는데, 생성할때 부터 가상(virtual) 함수를 사용한다? 좀 이상하지 않은가? 어떨때, 어떻게 이 '''가상 생성자''' 라는걸 써먹을수 있을꺼?
NewsLetter 객체는 아마 디스크에서 자료를 적재할 것이다. NewsLetter가 디스크에서 자료를 가지고 보여주기 위해 istream을 사용해서 NewsLetter를 구성할 객체들을 생성한다고 가정한다면 다음과 같은 코드들을 대강 만들수 있는데
보다시피 클래스의 가상 복사 생성자는 실제 복사 생성자를 호출한다. 그러므로 "복사" 의미로는 일반 복사 생성자와 수행 기능이 같다 하지만 다른 점은 만들어진 객체마다 제각각의 알맞는 복사 생성자를 만든다는 점이 다르다. 이런 clone이 NewsLetter 복사 생성자를 만들때 NLComponent들을 복사하는데 기여를 한다. 어떻게 더 쉬운 작업이 되는지 다음 예제를 보면 이해 할수 있을 것이다.
하지만 출력해야할 스트림 객체가 righ-hand 객체라는것이 사용자 입장에서 불편하게 만든다. 우리가 보통 사용하는 것처럼 스트림 객체에 출력할 객체를 넣는 다는 개념이 적용되지 않는 것이리라. 하지만, 전역 함수나 friend함수를 이용해서 구현한다면 더이상 가상함수로 구현할수가 없게 된다. 여기서의 방법이 비멤버 함수를 이용하는 것이다.
다음과 같이 가상 함수로 출력을 구현하고, 전역이든, namespace로 묶여 있든, 비 멤버 함수로 스트림 객체와의 출력의 고리를 연결시켜서, 비멤버 함수가 가상함수처럼 돌아가도록 구현한다.
// 객체의 사용권한을 부여 하는 역할을 한다.
해당 디자인은 세가지의 중점으로 이해 하면 된다. '''첫번째''' Printer클래스의 생성자를 private(사역)인자로 설정한다. 이는 객체 생성을 제한한다. '''두번째''' 전역 함수인 thePrinter를 Printer클래스의 friend로 선언한다. 그래서 이 thePrinter가 첫번째에서의 제한에 상관없이 관여 가능하도록 만든다. '''마지막으로(세번째)''' 전역함수인 thePrinter 내부에 정적(static) Printer 객체를 만든다. 이는 오직 하나만의 객체를 thePrinter내부에 유지시킨다.
하지만 이렇게 구현시에는 thePrinter가 "'''전역 공간을 사용해야 한다.'''" 것으로 코드를 약하게 만든다. 알다 시피, 전역 공간의 사용은 되도록이면 피해야 하는 방법이며, thePrinter를 Printer클래스 내부에 숨기기를 추천하다. thePrinter를 Printer클래스 내부 메소드로 넣어 버리고, friend를 삭제해 보자.
Printer& Printer::thePrinter() // friend만 없앴지 마찬가지 방법을 제시한다.
전역 공간 사용에 대한 문제의 해결책의 또다른 접근 방법이라고 한다면, name space를 사용하는 것이다. 다음과 같이 단순히 PrintingStuff name space로 묶어 버린다.
그리고 thePrinter를 호출하려면 이제는 이렇게 해야 한다.
'''첫번째'''로 만들어지는 객체의 위치이다. 위의 제시된 두가지의 방법에서, Printer 정적(staitc) 객체가 하나는 friend로 클래스의 제어권을 획득한 함수 내부에 있고, 또 하나는 클래스 멤버 메소드 내부에 있다. 함수에 있는 경우에는 정적(static) 객체는 항상 만들어져 있다. 이 의미는 해당 코드의 프로그램이 시작될때 부터 아예 객체가 만들어 진다는 의미이다. 즉, 한번도 그 객체를 사용하지 않아도, 객체는 이미 만들어져 비용을 지출하게 한다. 반면에, 함수 멤버 메소드 내부에 정적(static)객체를 만들 후자의 경우에는 객체를 만드는 역할을 하는 메소드인 Printer::thePrinter 가 제일 처음 호출될때 객체가 생성된다. 이것은 C++에서 "사용하지 않는 객체에 대한 비용은 지불하지 않는다."의 설계 다소 복잡한 이념에 근간을 둔 개념이다. 그리고 이러한 복잡한 개념은 당신을 해깔리게 만든다.
다음과 같은 코드의 함수는 매우 짧다. 이런 짧은 함수는 함수보다 inline 시켜서 속도를 높이는 것이 더 효과적이다. 하지만 그럴수가 없다. 왜 그런가 하면, inline의 의미는 정확히 해당 함수가 쓰이는 코드를 현재 함수의 몸체로 교체해 버리는 역할이다. 그런게 이렇게 할경우, 위와 같은 함수는 static객체의 처리에서 의문이 생긴다. 해당 함수가 호출된 곳을 위와 같은 함수 몸체로 교체하면, 각 교체 부분은 전부 독립적인 static 인자를 부여 받는 셈이 되어 버린다. 그래서 정적 인자를 쓴 함수는 inline을 시키지 못하며, 이런 정적 인자의 사용에 따라 일어나는 의문을 internal linkage를 가진 문제 라고 한다. DeleteMe) 날림 요약 수정 필요
보통의 생성 과정을 수행한다.
보통의 파괴 과정을 수행한다.
방금 위에서 예제로 제시한 방법 역시 문제는 내포하고 있다. 가령 특별한 프린터인 컬러 프린터에 대한 클래스를 작성한다고 가정해 본다.
그리고 다음과 같이 사용한다고 가정해 보자.
자, 이런걸로 한가지 재미있는 것을 만들수 있다. 만약 당신이 C++상에서 더이상 상속 되지 않는 클래스를 만들고 싶을때 어떻게 해야 할까?(주:참고로 Java나 C#의 경우 언어 설계 때부터 아예 해당 기능을 수행을 위한 키워드를 제공한다. 하지만 C++는 제공하지 않는다. 이런 방법을 설계자가 생각한건지, 차후 C++의 개발자들이 생각한건지 놀라울 뿐이다. 바로 이전에 나온 가상 복사 생성자의 아이디어와 비슷하다고 해야 할까)
이렇게 생성자가 사역(private)인자로 들어가 버리면, 해당 클래스에서 유도되는 클래스를 만들기란 불가능 하다. 하지만 이 코드의 문제점은 makeFSA를 이용해 생성하면 항상 delete를 해주어야 한다는 점이다. 이전 예외를 다루는 부분에서도 언급했지만, 이는 자원이 세나갈 여지를 남기는 것이다. 이를 위한 STL의 auto_ptr도 참고하자.(Item 9 참고)
이제, 단일한 객체 만들기 방법에 관한 디자인 방법은 알수 있을 것이다. 그리고, 객체를 숫자로 제어하는 것은 세가지의 생성 상황에 의해서 폭잡한 상황을 만들어 나간다는 것을 알것이다. 이것을 위해서 생성자의 사역(private)역시 설명했다. 캡슐화된 thePrinter함수는 Printer라는 단일한 객체를 제한하고, 그것을 사용할수 있게 한다. thePrinter가 대안일까. 하지만 결국 thePrinter는 C++의 일반적인 방법인 이러한 디자인의 코드를 불가능하게 한다.
- 회칙 . . . . 99 matches
제2조(성격) ZeroPage(이하 "학회"라 한다)는 중앙대학교 소프트웨어대학에 근거하는 학술동아리로 인력의 장이다.
제3조(회원의 구성) ① 학회의 회원은 정회원과 준회원으로 구성한다.
④ 정회원의 자격과 요건은 회장이 정한다.
제4조(회원의 의무) ① 회원은 정모를 비롯한 학회의 활동에 성실하게 참여해야 한다.
② 정회원은 학회 운영에 필요한 회비를 납부해야 한다.
② 휴면 신청 시 휴면 기간과 사유를 명시해야 하며, 휴면 중 휴면 기간 또는 사유에 변동이 발생한 때에는 변경 사항을 알려야 한다.
④ 휴면 중인 정회원은 정회원 재적 인원에는 포함하지 않으나, 정모에 출석한 때에는 정회원 출석 인원에 포함한다.
② 은퇴 대상자는 은퇴 사유 발생 1년 이내에 회장에게 은퇴 의사를 표시해야 한다.
③ 은퇴한 회원은 자신의 신변이나 연락처에 변동이 발생한 때에는 변경 사항을 알려야 한다.
제7조(탈퇴 및 제명) ① 탈퇴를 원하는 회원은 회장에게 탈퇴 의사를 표시하여 탈퇴할 수 있다.
④ 탈퇴 또는 제명 처리되면 회원으로서의 권한과 의무가 모두 소멸한다.
② 회장은 학회의 회원을 관리하며 정모, 주관 행사를 비롯한 일체의 활동을 총괄한다.
③ 회장은 정회원 및 은퇴한 회원의 연락처와 학회 재정을 관리하며 후임 회장에게 이를 인수인계해야 한다.
⑤ 직전 대 회장은 현 회장이 동아리 운영에 대한 도움 요청 시 응할 의무를 가진다. 이에 응할 수 없는 경우 대행을 지명해야 한다.
제10조(회장의 선출 및 임기) ① 회장은 정회원의 보통·평등·직접·비밀선거에 의하여 선출한다.
④ 회장의 임기는 당선 익일로부터 다음 회장 선출일까지로 한다.
⑤ 회장이 임기 중 불가피한 사유로 회장의 직무를 수행하지 못하게 된 때에는 회장이 회장 권한 대행을 지명하거나, 즉시 새로운 회장을 선출해야 한다.
⑥ 회장은 매 학년도마다 정기선출한다.
제11조(정모) ① 정모는 학회 회원들의 정기 모임으로 각종 안건을 처리하며 학술 활동을 진행한다.
② 정모의 시기는 정모에서 정한다.
- MoreEffectiveC++/Exception . . . . 68 matches
일단 여러분은 파일에서 부터 puppy와 kitten와 키튼의 정보를 이렇게 읽고 만든다. 사실 Item 25에 언급할 ''virtual constructor''가 제격이지만, 일단 우리에 목적에 맞는 함수로 대체한다.
다음과 같은 느낌(?)으로 출력한다.
pa에 해당하는 processAdoption()은 오류시에 exception을 던진다. 하지만, exception시에 해당 코드가 멈춘다면 "delete pa;"가 수행되지 않아서 결국 자원이 새는 효과가 있겠지 그렇다면 다음과 같이 일단 예외 처리를 한다. 물론 해당 함수에서 propagate해주어 함수 자체에서도 예외를 발생 시킨다.
일반적으로 C의 개념으로 짜여진 프로그램들은 createWindow and destroyWindow와 같이 관리한다. 그렇지만 이것 역시 destroyWindow(w)에 도달전에 예외 발생시 자원이 세는 경우가 생긴다. 그렇다면 다음과 같이 바꾸어서 해본다.
if (imageFileName != ""){ // 이미지를 생성한다.
if (audioClipFileName != "") { // 소리 정보를 생성한다.
생성자는 theImage와 theAudioClip를 null로 초기화 시킨다. C++상에서 null값이란 delete상에서의 안전을 보장한다. 하지만... 위의 코드중에 다음 코드에서 new로 생성할시에 예외가 발생된다면?
그리고 생성자의 코드를 이렇게 한다.
다음 예제는 online 컴퓨터 세션을 위한 Session 클래스를 생각해 본 것이다. 각 세션 객체들은 생성과 파되된 날짜를 기록해야만 한다.
자 이건 괜찮아 보인다. 하지만 저 logDestruction상에서 예외가 발생한다면 어쩌게 할것인가? 해당 소스는 Session의 파괴자 안에서는 예외를 잡지 못한다. 그래서 해당 파괴자를 호출한 자에게 예외를 던진(전달한)다. 그렇지만 다른 에러들이 던져진 상황에서 파괴자가 스스로 자신을 부른거라면 함수의 종료가 자동으로 이루어지기를 원할 것이다. 그리고 당신의 프로그램은 이쯤에서 머추어 버릴 것이다. -해석이 이상하군, 암튼 다른 예외 처리시에 세션 파괴자 로그시 예외가 발생한다면 프로그램이 멈춘다는 소리다.
아마 대다수의 사람들이 이런 상태로 빠지는걸 원하지 않을 것이다. Session 객체의 파괴는 기록되지 않을 태니까. 그건 상당히 커다란 문제이다 그러나 그것이 좀더 심한 문제를 유발하는건 프로그램이 더 진할수 없을 때 일것이다. 그래서 Session의 파괴자에서의 예외 전달을 막아야 한다. 방법은 하나 try-catch로 잡아 버리는 것이다.
하지만 이것도 원래의 코드보다 안전할 것이 없다. 만약 operator<< 부를때 exception이 발생한다면 파괴자가 던지는 exception으로 다시 우리가 해결하고자 하는 원점으로 돌아가 버린다. 그렇다면
그래서 아마 함수호출에서 인자 전달과 과 예외가 전달되는 것이 기본적으로 같은것이라고 생각 할지도 모른다. 분명 둘은 비슷한 면이 있다. 하지만 중요한 차이점 역시 존재 한다.
자, 비슷한 면은 언급해보면, 함수 예외 모두 에 인자를 전달할때 세가지로 전달할수 있다. 값(by value)이냐 참조(by reference)냐, 혹은 포인터(by pointer)냐 바로 이것이다. 하지만 이 함수와 예외에서의 인자의 전달 방식은 구동 방법에서 결정적인 차이점을 보인다. 이런 차이점은 당신이 함수를 호출할때 최종적으로 반환되는 값(returns)이 해당 함수를 부르는 위치로 가지만, 예외의 경우에 throw의 위치와 return의 위치가 다르다는 점에서 기인한다.
localWidget이 operator>> 로 전달될때는 복사의 과정이 일어나지 않는다. 대신 operator>> 안의 참조 w가 localWidget과 묶여서 어떠한 과정을 처리하게 된다. 하지만 예외의 처리에서 localWidget은 좀 다른 이야기를 만들어 나간다. 예외가 값이나, 참조를 잡든 잡지(pointer는 잡지 못한다.) 않든 상관 없이 localWidget의 사본이 만들어지고, 그 사본은 catch로 저낟ㄹ 된다. 왜냐하면 passAndThrowWidget의 영역을 벗어나면 localWidget의 파괴자의 호출이 되기 때문에 반드시 이렇게 되어야 한다. 이것은 C++ 에서 예외는 항상 사본으로 전달된다는 이유가 된다.
예외처리시에 다른 객체의 사본이 전달 된다는 점은 예외가 계속 전달(퍼져나갈때,propagate)에도 한가지의 고려사항이 발생한다. 다음의 두가지의 catch 블럭은 차이점이 있다. 하지만 외견상 같은 역할을 한다.
throw; // 해당 객체를 다시 복사하지 않고 던지며, 해당 예외를 propagete 한다.
throw w; // 해당 객체를 다시 복사해서 그 사본을 propagate한다.
우린 아직 포인터 전달에 의한 걸 의논하지 않았다. 하지만 포인터를 이용해 예외를 던지(전달:throw)하는 것은 함수상에서 포인터를 전달(pass)하는 것과는 다른걸 알수 잇을 것이다. 즉, 포인터의 복사본이 이동하는데, 이렇게 되면 pointer를 전달하는 쪽의 영역에서 throw에 의해 튀어 나가면 포인터가 가리키고 있는 객체는 소멸되므로 포인터에 의한 예외 전달(던지는것:throw)는 피해야 한다. (전역의 static 객체의 포인터라면 이야기는 달라진다. 뒤에 다룬다.)
이런 사항을 유의 해야 한다. 예외에서는 암시적 변환을 생각하지 않는다.
- 1002/Journal . . . . 59 matches
책을 8권 정도 샀다. Input 대비 Output 비율이 이전보다 조금이나마 높았으면 한다.
한글 책을 읽을때엔 한글로 요약한다. 영어책을 읽는 중 한글로 요약하려니 내가 읽을때 가급적 한글로 해석 안하려고 하는 연습중이다. 그러하기엔 또 지금 영어 작문능력이 뛰어나지 않다.
* GOF 번역을 할때엔? - 번역을 할때엔 애매한 단어들에 대해 전부 사전을 찾아보게 된다. (완전히 직역을 하므로) 시간이 많이 걸리지만, 영어학습 초기엔 자주 해보는게 좋지 않을까 생각한다. (꼭 한글 번역이 아닌, 어려운 영어에 대한 쉬운 영어로의 해설. 이게 좀 더 어려우려나..)
* 사전지식이 이미 있었기 때문이라고 판단한다. NoSmok:HowToReadaBook 는 한글 서적을 이미 읽었었고, 'Learning, Creating, and Using Knowledge' 의 경우 Concept Map 에 대한 이해가 있었다. PowerReading 의 경우 원래 표현 자체가 쉽다.
* 이번에 발제를 상당히 잘했다고 생각되는 사람들을 보니, 한명은 적어도 일주일전부터 준비했고, 한명은 해당 챕터를 3-4번정도 읽었다고 한다. 그리고 그 사람들이 이야기할 수 있을 정도가 어느정도이냐면, 해당 예제상황에 대해 적절하게 자신의 예로 말할 수 있을정도이거나, 또는 요약한 내용을 거의 보지 않고도 이야기할 수 있는 수준이였다. 두명의 경우 외부 자료를 찾아보기도 했다.
* 다른 사람들이 나에 비해 해당 어휘에 대한 재정의(Restatement) 단계가 하나나 두단계정도 더 높았던걸로 기억한다. 내가 책을 읽을때 질문을 잘 못만들어내는 것도 한 몫하는것 같다.
* 2학년, 3학년들에 대해 좀 더 실용적인 RT로 한다면, 해당 프로그래밍 언어에 대한 RT를 할 수 있을것도 같다. (노트북 2대정도 이용, 사람들이 다같이 둘러서 보는..)
* 심리학 서적이 어떠한 스타일인지는 모르겠지만, 소프트웨어 개발의 각 과정들에 대해 정말로 'Human Performance' 라는 관점으로 서술한다.
그림을 보고 나니, Inheritance 나 Delegation 이 필요없이 이루어진 부분이 있다는 점 (KeywordGenerator 클래스나 BookSearcher, HttpSpider 등) Information Hiding 이 제대로 지켜지지 않은것 같다는 점, (Book 과 관련된 데이터를 얻고, 검색하여 리스트를 만들어내는 것은 BookMapper 에서 통일되게 이루어져야 한다.) 레이어를 침범한것 (각각의 Service 클래스들이 해당 로직객체를 직접 이용하는것은 그리 보기 좋은 모양새가 아닌듯 하다. 클래스 관계가 복잡해지니까. 그리고 지금 Service 가 서블릿에 비종속적인 Command Pattern 은 아니다. 그리고 AdvancedSearchService 와 SimpleSearchService 가 BookMapper 에 촛점을 맞추지 않고 Searcher 클래스들을 이용한 것은 현명한 선택이 아니다.)
내일 좀 더 작업을 할 궁리. ["CVS"] 에서 버전을 따로 둘까도 궁리중. (구조가 좀 많이 바뀔 것 같다. 원하는 디자인으로 가려면 저 점선 부분으로 가야 하리라 생각.)
기존의 AcceptanceTest 들이 작동을 못한다. (Python 에서 정규표현식 이용. 데이터 파싱 & 추출. Prometheus UI 가 바뀌면 다시 바뀜) 전에 구경한 것처럼 XPath 를 이용하는 방법을 궁리해보거나, Prometheus 쪽에서 XML + XSLT 를 이용하는 방법을 궁리했다. 하지만, 그러기엔 현재 Prometheus 의 JSP 부분을 전부 바꾸는데 부담이 크리라 판단, Servlet Controller 중 Service 클래스 부분에 대해 테스트 코드를 붙이는 방법을 생각해 냈다. 하지만, 막상 작성해보고 나니 그 또한 테스트 코드의 크기가 크긴 하다.
Refactoring Catalog 정독. 왜 리팩토링 책의 절반이 리팩토링의 절차인지에 대해 혼자서 감동중.; 왜 Extract Method 를 할때 '메소드를 새로 만든다' 가 먼저인지. Extract Class 를 할때 '새 클래스를 정의한다'가 먼저인지. (절대로 '소스 일부를 잘라낸다'나 '소스 일부를 comment out 한다' 가 먼저가 아니라는 것.)
Refactoring 을 하기전 Todo 리스트를 정리하는데만 1시간정도를 쓰고 실제 작업을 들어가지 못했다. 왜 오래걸렸을까 생각해보면 Refactoring 을 하기에 충분히 Coverage Test 코드가 없다 라는 점이다. 현재의 UnitTest 85개들은 제대로 돌아가지만, AcceptanceTest 의 경우 함부로 돌릴 수가 없다. 왜냐하면 현재 Release 되어있는 이전 버전에 영향을 끼치기 때문이다. 이 부분을 보면서 왜 JuNe 이 DB 에 대해 세 부분으로 관리가 필요하다고 이야기했는지 깨닫게 되었다. 즉, DB 와 관련하여 개인 UnitTest 를 위한 개발자 컴퓨터 내 로컬 DB, 그리고 Integration Test 를 위한 DB, 그리고 릴리즈 된 제품을 위한 DB 가 필요하다. ("버전업을 위해 기존에 작성한 데이터들을 날립니다" 라고 서비스 업체가 이야기 한다면 얼마나 황당한가.; 버전 패치를 위한, 통합 테스트를 위한 DB 는 따로 필요하다.)
그리고, 각각의 테스트들을 위한 DB Property 설정이 자유로우려면 Server Property 화일은 스크립트 화일로 빠져나와야 한다. (테스트 돌릴때마다 프로그램 재컴파일 한다는건, 추후 프로그램 커졌을때 효율적인 방법이 아니다.)
그리고, 이전에 ProjectPrometheus 작업할때엔 서블릿 테스팅 방법을 몰랐다. 그래서 지금 ProjectPrometheus 코드를 보면 서블릿 부분에 대해 테스트가 없다. WEB Tier 에 대한 테스팅을 전적으로 AT 에 의존한다. 이번에 기사를 쓸때 마틴 파울러의 글을 인용, "WIMP Application 에 대해서 WIMP 코드를 한줄도 복사하지 않고 Console Application 을 만들수 있어야 한다" 라고 이야기했지만, 이는 WEB 에서도 다를 바가 없다고 생각한다.
Prometheus 를 보면 테스트가 통과했다 안했다를 반복한다. 학교 도서관 시스템의 안정성이 그리 뛰어나지 않기 때문이다. (바꾸고 난 뒤 오히려 맨날 문제를 일으킨다. 똑같은 조건식에서 한번은 검색이 되고 한번은 검색이 안되니.. 쩝)
사실 {{{~cpp LoD}}} 관점에서 보면 자기가 만든 객체에는 메세지를 보내도 된다. 하지만 세밀한 테스트를 하려면 좀더 엄격한 룰을 적용해야할 필요를 느끼기도 한다. 니가 말하는 걸 Inversion of Control이라고 한다. 그런데 그렇게 Constructor에 parameter로 계속 전달해 주기를 하다보면 parameter list가 길어지기도 하고, 각 parameter간에 cohesion과 consistency가 떨어지기도 한다. 별 상관없어 보이는 리스트가 되는 것이지.
적고 나니까.. 몇달전에 '해야지 해야지' 했었던 것들, 몇년전에 '해야지 해야지' 했던 것들이 Work Queue 에서 기다리고 있다. 멀리로는 Smalltalk 코드 제대로 읽을 줄 안뒤 SBPP 공부한다고 했었던 것이랑, Functional Language 하나 익혀둔다고 했었던 것이랑, 가까운 것으로 치면 기존에 만들어놓은 소스들 리팩토링 하면서 라이브러리 추출한다고 했었던 것들 등등.
현재 : http://www.savie.co.kr/SITE/data/html_dir/2002/10/01/200210010019.asp. 결혼도 하고 세살된 딸도 있단다. 현재의 사진을 보니 남궁원씨 닮아가는군. M&A 전문 회사 대표라고 한다.
꽤 오래되긴 했지만 (벌써 그게 9년전 이야기란다. 93년 이라니까) 홍정욱의 책을 다시 읽었다. 그당시에는 '아. 그냥 공부 잘하는 사람의 열심히 공부했다는 이야기구나' 로 그냥 한번 읽고 끝났던 것으로 기억한다. 그러다가 간만에 생각이 나서 책을 다시 꺼내 버스안에서 읽었었는데, 그의 표현력을 보면서 그가 얼마나 많은 시들을 읽었는지, 얼마나 많은 책들을 읽었는지 보인다. 중간중간 자신의 현재 심정을 표현하면서 인용하는 시들, 명언 구절들에 전부 그 인용한 사람들의 이름들과 출처가 나와있는 것을 보면서, 한편으로는 얼마나 학교에서 철저하게 가르치는지, 그가 얼마나 철저하게 공부했는지가 보이는 것 같다.
- HolubOnPatterns/밑줄긋기 . . . . 59 matches
* 복싱에서는 스트레이트, 잽, 훅, 이 세가지 펀치를 기반으로 다른 모든 종류의 펀치가 나온다고한다. ~~~ 이러한 기본 자세가 튼튼하다면 그만큼 다른 펀치를 배우는 데도 진입 장벽이 낮아지기 때문이다.
* 다른 종류지만 검도는 내려치기 자세만 천번인가 연습한다고 합니다. 하루에(만화책이었음ㅋㅋ) 그만큼 기본기가 중요하다는 말이겠죠 - [서지혜]
* 에 달린 역자주석을 보니 노스 화이트헤드가 "문명이 진보한다는 것은 인간이 의식적인 노력 없이 자동적으로 수행하는 활동이 증가하고 있음을 의미"한다는 지적을 했다고 한다. 이디엄은 과연 좋은것인가? 이디엄이야말로 생각없이 적용하는 패턴이 아닌가? - [서지혜]
* 먼저 패턴은 발명되는 것이 아니라 발견되는 것이라는 사실을 이해해야만 한다.
* 패턴이 목적이 아니라 어떤 의도를 구현하기 위해 만든 코드들에서 비슷한 패턴이 발견된다고 한다. - [서지혜]
* 시원하면서도 안락한 느낌을 주는 방들을 살펴보면 앞으로 '교차 통풍'이라 부를 패턴이 창발한다.
* '우둔한 프로그래머와 아키텍처'는 패턴이 항상 좋은 것이며 가능한 모든 곳에서 사용해야 한다고 일관되게 믿는다.
* 우리는 필요로 하는 바로 그것을 해야한다.
* 사용자가 무언가를 정말로 하고 싶어한다면 이에 대해 질문하지 말아야 한다고 주장한다.
* 단순함 , 완전성 그리고 수정의 용이성이란 세가지 요구 사항은 상충되기도 한다.
* 프로그래머도 아키텍쳐를 이해해야한다는 것 아닐까? - [김수경]
* 아하, 자기가 어디의 뭐를 하는지는 알아야 한다는 뜻? - [서지혜]
* 절차 지향 프로그래밍은 데이터를 조작 혹은 검토하는 서브루틴 간의 데이터 흐름을 구조화 한다.
* 객체 지향 시스템은 상호 협동하는 에이전트들의 네트워크이며, 에이전트는 메시지를 통해 통신한다.
* 어떤 디자은을 ''선택''할 때는 선택으로 인한 장단점을 고려(''트레이드 오프'')해야 한다. 그리고 그것을 취한뒤에는 그로인해 잃은 것을 감내해야한다(''리스크 관리'') 이게 맞나? - [서지혜]
* 자신이 하고 있는 일이 어떤 결과를 초래할지를 알지 못한다면 이는 디자인을 하고 있는 것이 아니라 어둠 속에서 비틀거리리고 있을 뿐이다.
* "객체는 메소드라 불리는 함수가 있는 자료 구조이며 메소드가 자료 구조를 조작한다."라는 설명을 보았을지도 모르겠다. 허튼소리! 당치 않다.
* 켄 아놀드는 다음과 같이 말한다. "정보가 아닌 도움을 요청하라(Ask for help, not for information)."
* 이건 6피의 중심에서 외치고 싶은 말. 많은 후배들이 이런 질문을 한다. ''C로는 객체지향 못하는거 아니에여?'' ;;;;;;; 혹은 ''OOP로 짜고있어요 ㅋ''해서 보면 자바로 짠다는 것 외엔 도대체 객체지향의 원리가 어디에 녹아있는지 알 수 없는 코드라거나... 클래스 쓰면 다 OO냐ㅜㅜ 그렇게 간단하면 학교에서 왜 한학기나 할애해서 배우겠어. - [김수경]
* 셀룰러 오토마타(Cellular automata)의 프로그램 구현은 OO 시스템의 훌륭한 예가 된다. 셀룰러 오토마타 프로그램은 복잡한 문제를 정확히 객체 지향적인 방식으로 해결한다.
- CToAssembly . . . . 52 matches
고급언어 변환기, 어셈블러, 편집기, 다른 프로그램을 만드는 작업을 돕는 프로그램들이 시스템 소프트웨어에 속한다. 우리는 이미 프로그래밍에는 기계어, 어셈블리어, 고급언어 세 단계가 있음을 안다.
기계어 프로그램은 컴퓨터가 이해하고 직접 실행할 수 있는 프로그램이다. 어셈블리어 명령어는 기계어 명령어와 보통 일대일 관계로 대응하지만, 우리가 쉽게 이해할 수 있는 문자열을 사용한다. 고급언어 명령어는 영어에 매우 가까워서 프로그래머가 생각하는 방식과 자연스럽게 대응한다. 결국 어셈블리어나 고급언어 프로그램은 변환기라는 프로그램에 의해 기계어로 변환되야 한다. 이 변환기를 각각 어셈블러(assembler), 컴파일러(compiler) 혹은 인터프리터(interpreter)라고 한다.
C/C++같은 고급언어의 컴파일러는 고급언어를 어셈블리코드로 변환할 수 있다. GNU C/C++ 컴파일러의 -S 옵션은 프로그램 소스에 해당하는 어셈블리코드를 생성한다. 반복, 함수 호출, 변수 선언과 같은 기본적인 구조가 어셈블리어로 어떻게 대응하는지 알면 C 내부를 이해하기 쉽다. 이 글을 이해하기위해서는 컴퓨터구조와 Intel x86 어셈블리어에 익숙해야 한다.
먼저 hello world를 출력하는 간단한 C 프로그램을 작성하고, -S 옵션으로 컴파일한다. 입력파일에 대한 어셈블리코드를 얻을 수 있다. GCC는 기본적으로 확장자 `.c'를 `.s'로 변경하여 어셈블러파일명을 짓는다. 어셈블러파일 끝의 몇줄을 해석해보자.
일반적으로 어셈블리어 명령어는 라벨(label), 연상기호(mnemonic), 연산수(operand)로 구성된다. 연산수 표시방법에서 연산수의 주소지정방식을 알 수 있다. 연상기호는 연산수에 저장된 정보에 작업을 한다. 사실 어셈블리어 명령어는 레지스터와 메모리위치에 작업을 한다. 80386계열은 eax, ebx, ecx 등의 (32비트) 범용레지스터를 가진다. 두 레지스터, ebp와 esp는 스택을 조작할때 사용한다. GNU Assembler (GAS) 문법으로 작성한 전형적인 명령어는 다음과 같다:
이 명령어는 eax 레지스터에 값 10을 저장한다. 레지스터명 앞의 `%'와 직접값(immediate value) 앞의 '$'는 필수 어셈블러 문법이다. 모든 어셈블러가 이런 문법을 따르는 것은 아니다.
프로그램의 첫번째 줄은 주석이다. 어셈블러 지시어 .globl은 심볼 main을 링커가 볼 수 있도록 만든다. 그래야 main을 호출하는 C 시작라이브러리를 프로그램과 같이 링크하므로 중요하다. 이 줄이 없다면 링커는 'undefined reference to symbol main' (심볼 main에 대한 참조가 정의되지않음)을 출력한다 (한번 해봐라). 프로그램은 단순히 레지스터 eax에 값 20을 저장하고 호출자에게 반환한다.
다음 목록 2 프로그램은 eax에 저장된 값의 계승(factorial)을 계산한다. 결과를 ebx에 저장한다.
복잡한 프로그램을 만들때 우리는 해결할 문제를 체계적으로 나눈다. 그리고 필요할때마다 호출할 함수를 작성한다. 목록 3은 어셈블리어 프로그램의 함수 호출과 반환을 보여준다.
일반적으로 함수는 함수가 사용할 변수들을 정의한다. 이 변수들을 유지하려면 공간이 필요하다. 함수 호출시 변수값을 유지하기위해 스택을 사용한다. 프로그램 실행중에 반복되는 재귀호출시(recursive call) activation record가 유지되는 방법을 이해하는 것이 중요하다. esp나 ebp같은 레지스터 사용법과 스택을 다루는 push와 pop같은 명령어 사용법은 함수호출과 반환방식을 이해하는데 중요하다.
프로그램의 메모리 일부를 스택으로 사용하기위해 비워두었다. Intel 80386 이상의 마이크로프로세서에는 스택 최상위 주소를 저장하는, 스택포인터(stack pointer)라는 esp 레지스터가 있다. 아래 그림 1은 스택에 저장된 세 정수값 49, 30, 72를 보여준다 (정수는 각각 4 바이트를 차지한다). esp 레지스터는 스택 최상위 주소를 저장한다.
스택포인터 레지스터는 4만큼 감소하고, 숫자 15를 4 바이트(주소 1988, 1989, 1990, 1991)에 저장한다.
명령어 popl %eax는 스택 최상위에 있는 값(4 바이트)을 eax 레지스터에 복사하고 esp를 4만큼 증가한다. 만약 스택 최상위에 있는 값을 레지스터에 복사하고 싶지 않다면? 명령어 addl $4, %esp를 실행하여 스택포인터만 증가하면 된다.
목록 3에서 명령어 call foo는 호출을 마친후 실행할 명령어의 주소를 스택에 넣고 foo로 분기한다. 함수는 ret에서 끝나고, 실행을 스택 최상위에서 가져온 주소에 있는 명령어로 옮긴다. 물론 스택 최상위에 유효한 반환주소가 있어야 한다.
레지스터 개수가 적기때문에 프로그램의 모든 변수를 레지스터에 담을 수는 없다. 지역변수는 스택에 위치한다. 목록 4가 그 방법을 보여준다.
먼저 스택포인터의 값을 기준포인터 레지스터(base pointer register) ebp에 복사한다. 기준포인터는 스택의 다른 위치를 접근할때 사용할 고정된 기준점이다. foo를 호출한 코드에서도 ebp를 사용하므로, 값을 esp 값으로 대체하기 전에 스택에 복사한다. 명령어 subl $4, %esp는 스택포인터를 감소하여 정수를 담기위한 (4 바이트) 공간을 만든다. 다음 줄은 값 10을 ebp에서 4를 뺀 (4 바이트) 주소에 복사한다. 명령어 movl %ebp, %esp는 스택포인터를 foo 시작시 가졌던 값으로 되돌리고, popl %ebp는 기준포인터 레지스터의 값을 되돌린다. 스택포인터는 이제 foo를 시작하기 전과 같은 값을 가진다. 아래 표는 main 시작과 목록 4의 (main에서 반환을 제외한) 각 명령어 실행후 레지스터 ebp, esp와 3988에서 3999까지 스택 주소의 내용이다. 우리는 main의 첫 명령어 실행전에 ebp는 값 7000, esp는 값 4000을 가지며, 스택 주소 3988에서 3999까지 임의의 값 219986, 1265789, 86이 저장되있다고 가정한다. 또, main에서 call foo 다음에 나오는 명령어의 주소가 30000이라고 가정한다.
함수로 파라미터를 전달하기위해 스택을 사용할 수 있다. 우리는 함수가 eax 레지스터에 저장한 값이 함수의 반환값이라는 (우리가 사용하는 C 컴파일러의) 규칙을 따른다. 함수를 호출하는 프로그램은 스택에 값을 넣어서 함수에게 파라미터를 전달한다. 목록 5는 sqr이라는 간단한 함수로 이를 설명한다.
sqr의 첫번째 줄을 주의있게 살펴라. 함수를 부르는 측은 ebx의 내용을 스택에 넣고 명령어 call을 실행한다. 호출시 반환주소를 스택에 넣는다. 그리고 sqr는 스택 최상위에서 4 바이트 떨어진 곳에서 파라미터를 읽을 수 있다.
목록 6은 C 프로그램과 어셈블리어 함수를 보여준다. 파일 main.c에 C 함수가 있고 sqr.s에 어셈블리어 함수가 있다. cc main.c sqr.s를 입력하여 파일들을 컴파일하고 같이 링크한다.
나는 이 글이 gcc가 만드는 어셈블러 출력을 이해하기에 충분하길 기대한다. 목록 8은 gcc -S add.c로 만든 파일 add.s를 보여준다. add.s를 편집하여 많은 (대부분 정렬(alignment) 등의 목적의) 어셈블러 지서어를 삭제하였음을 밝힌다.
- Gof/Mediator . . . . 51 matches
MediatorPattern은 객체들의 어느 집합들이 interaction하는 방법을 encapsulate하는 객체를 정의한다. Mediator는 객체들을 서로에게 명시적으로 조회하는 것을 막음으로서 loose coupling을 촉진하며, 그래서 Mediator는 여러분에게 객체들의 interactions들이 독립적으로 다양하게 해준다.
Object-Oriented 디자인은 객체들 사이의 행위 분산을 장려한다. 그런 분산은 객체들 사이에 많은 연관을 지닌 객체 구조로 나타날 수 있다. 최악의 경우에는 모든 객체가 결국 모든 다른 객체들을 알게 된다.
비록 하나의 시스템에 많은 객체들이 참여하는 것이 일반적으로 재사용성을 강화할지라도 interconnections이 늘어나는 것은 재사용성을 감소시키려는 경향이 있다. 너무나 많은 객체간의 상호 연결들은 객체들의 독립성을 떨어뜨릴 수 있다. - 그런 시스템은 마치 완전히 통일된 것 같이 행동한다.
게다가 하나의 시스템에 많은 객체들이 참여하는 것은 어떤 의미있는 방법으로 시스템의 행위를 바꾸는 것을 어렵게 한다. 왜냐하면, 행위는 많은 객체들 사이로 분산되어 졌기 때문이다. 결론적으로 당신은 아마 그런 시스템의 행위를 customize하기 위해서 수많은 subclass들을 정의해야 할 것이다.
예로써 어떤 GUI상에서 다이얼로그 박스의 구현을 고려해보자. 하나의 다이얼로그 박스는 작은 도구들(버튼, 메뉴, 입력 필드)의 모음을 표현하는 하나의 윈도우를 사용한다.
대게 다이얼로그의 도구들 사이에는 어떤 dependency들이 존재한다. 예를 들면, 어떤 버튼은 어떤 입력 필드가 비어있을때는 비활성화 되어있는다. list box라 불리는 선택 목록에서 객체를 선택하는 것은 입력필드의 내용을 바꿀 것이다. 바꿔말하면, 입력필드에 문자를 타이핑하는 것은 자동적으로 리스트 박스에서 하나이상의 대응대는 입력을 선택하는 것이다. 한번 텍스트가 입력 필드에 나타나면, 다른 버튼들은 아마 활성화 될것이다. 그래서 사용자가 텍스트로 어떤 일을 하게 하게할 것이다. 예를 들자면, 관련있는 것을 삭제하거나 변경하거나 하는 따위의 일을 할 수 있을 것이다.
다른 다이얼로그 박스들은 도구들 사이에서 다른 dependency들을 지닐 것이다. 그래서 심지어 다이얼로그들이 똑같은 종류의 도구들을 지닌다 하더라도, 단순히 이전의 도구 클래스들을 재사용 할 수는 없다. dialog-specific dependency들을 반영하기 위해서 customize되어져야 한다. subclassing에 의해서 개별적으로 도구들을 Customize하는 것은 지루할 것이다. 왜냐하면 많은 클래스들이 그렇게 되어야 하기 때문이다.
별개의 mediator 객체에서 집단의 행위로 encapsulate하는 것에 의해서 이런 문제를 피할 수 있다. 하나의 mediator는 객체들 그룹 내의 상호작용들을 제어하고 조정할 책임이 있다. 그 mediator는 그룹내의 객체들이 다른 객체들과 명시적으로 조회하는 것을 막는 중간자로서의 역할을 한다. 그런 객체들은 단지 mediator만 알고 있고, 고로 interconnection의 수는 줄어 들게 된다.
예를 들면, FontDialogDirector는 다이얼로그 박스의 도구들 사이의 mediator일 수 있다. FontDialogDirector객체는 다이얼로그 도구들을 알고 그들의 interaction을 조정한다. 그것은 도구들 사이의 communication에서 hub와 같은 역할을 한다.
1. 리스트 박스가 그것의 director에게 그것이 변했다고 말한다.
4. 이제 입력 필드는 어떤 문자를 포함한다. director는 행동(글씨를 굵게 하거나 기울이게 하는 따위의 행동)의 초기화를 위해 버튼을 활성화 한다.
director가 리스트 박스와 입력 필드 사이의 조정하는 방법을 요약하자. 도구들은 서로 단지 간접적으로 director을 통해서 통신한다. 그들은 서로에 대해서 몰라야 하며, 그들 모두는 director를 알아야 한다. 게다가 행위는 한 클래스에 지역화 되어지기 때문에 행위는 클래스를 확장하거나 교체함으로써 변하거나 바꿔질 수 있다.
DialogDirect는 다이얼로그의 전체 행위를 정의한 추상 클래스이다. client들은 화면에 다이얼로그를 나타내기 위해서 ShowDialog 연산자를 호출한다. CreateWidgets는 다이얼로그 도구들을 만들기 위한 추상 연산자이다. WidgetChanged는 또 다른 추상 연산자이며, 도구들은 director에게 그들이 변했다는 것을 알려주기 위해서 이를 호출한다. DialogDirector subclass들은 CreateWidgets을 적절한 도구들을 만들기 위해서 override하고 그리고 그들은 WidgetChanged를 변화를 다루기 위해서 override한다.
MediatorPattern은 이럴 때 사용한다.
* 어떤 객체들의 집합이 잘 정의되었지만, 복잡한 방법으로 통신할 때. interconnection의 결과는 구조화되지 못하고 이해를 어렵게 한다.
Colleague 객체들과 통신을 위해서 인터페이스를 정의한다.
Colleague 객체들을 조정함으로써 엽합 행위를 구현한다.
자신의 colleague들을 알고 관리한다.
각가의 colleague 는 자신이 다른 colleague와 통신할 때마다 자신의 mediator와 통신한다.
Colleague들은 Mediator 객체에게 요청을 보내고 받는다. Mediator는 적절한 colleague에게 요청을 보냄으로써 협동 행위를 구현한다.
- OurMajorLangIsCAndCPlusPlus/stdio.h . . . . 46 matches
|| int fgetpos(FILE *, fpos_t *) || 해당 스트림의 포인터의 위치를 fpos_t에 저장한다. ||
|| char * fgets(char *, int, FILE *) || char*에 int의 길이만큼 스트림에서 읽어서 저장한다. 파일의 끝이나 오류일 경우 NULL을 리턴한다. ||
|| int fileno(FILE *) || 해당 스트림의 핸들을 반환한다. ||
|| int fprintf(FILE *, const char *, ...) || 해당 스트림에 문자열을 기록한다. ||
|| int fputc(int, FILE *) || 해당 스트림에 한 문자를 기록한다. ||
|| int fputs(const char *, FILE *) || 해당 스트림에 문자열을 기록한다. ||
|| FILE * freopen(const char *, const char *, FILE *) || 세번째 인자의 스트림을 닫고 그 포인터를 첫번째 인자의 파일으로 대체한다. ||
|| size_t fwrite(const void *, size_t, size_t, FILE *) || 해당 내용을 두번째 인자의 크기만큼, 세번째 인자의 횟수로 스트림에 기록한다. ||
|| char * gets(char *) || 표준 입출력에서 한줄을 입력받는다. 오류가 발생할 경우 NULL을 리턴한다. ||
|| void perror(const char *) || 마지막 에러에 대한 오류메시지를 출력한다. ||
|| int printf(const char *, ...) || 해당 형식의 문자열을 출력한다. ||
|| int putc(int, FILE *) || 해당 스트림으로 문자를 출력한다. ||
|| int putchar(int) || 표준 입출력으로 문자를 한개 출력한다. ||
|| int puts(const char *) || 표준 입출력으로 한줄을 출력한다. ||
|| int remove(const char *) || 해당 파일을 삭제한다. 성공시 0, 실패시 -1을 리턴한다. ||
|| void rewind(FILE *) || 해당 스트림의 처음으로 포인터를 이동한다. ||
|| int setvbuf(FILE *, char *, int, size_t) || 해당 스트림에 지정된 크기만큼의 사용할 버퍼를 지정해 준다. ||
|| int sprintf(char *, const char *, ...) || 해당 버퍼에 지정한 형식대로 출력한다. ||
|| FILE * tmpfile(void) || 임시파일을 생성한다. 종료시 자동으로 지워지며, 생성 실패시 NULL을 리턴한다. ||
|| char * tmpnam(char *) || 임시 파일로 사용할 수 있는 이름을 인자1에 기록한다. ||
- Gof/Facade . . . . 45 matches
서브시스템의 인터페이스집합에 일관된 인터페이스를 제공한다. Facade는 고급레벨의 인터페이스를 정의함으로서 서브시스템을 더 사용하기 쉽게 해준다.
이러한 클래스들로부터 클라이언트들을 보호할 수 있는 고급레벨의 인터페이스를 제공하기 위해 컴파일러 서브시스템은 facade 로서 Compiler class를 포함한다. 이러한 클래스는 컴파일러의 각 기능성들에 대한 단일한 인터페이스를 정의한다. Compiler class는 facade (원래의 단어 뜻은 건물의 전면. 외관, 겉보기..) 로서 작용한다. Compiler class는 클라이언트들에게 컴파일러 서브시스템에 대한 단일하고 단순한 인터페이스를 제공한다. Compiler class는 컴파일러의 각 기능들을 구현한 클래스들을 완벽하게 은폐시키지 않고, 하나의 클래스에 포함시켜서 붙인다. 컴파일러 facade 는저급레벨의 기능들의 은폐없이 대부분의 프로그래머들에게 편리성을 제공한다.
* 복잡한 서브 시스템에 대해 단순한 인터페이스를 제공하기 원할때. 서브시스템은 종종 시스템들이 발전되어나가면서 더욱 복잡성을 띄게 된다. 대부분의 패턴들은 패턴이 적용된 결과로 많고 작은 클래스들이 되게 한다. 패턴의 적용은 서브시스템들이 더 재사용가능하고 커스터마이즈하기 쉽게 하지만, 커스터마이즈할 필요가 없는 클라이언트들이 사용하기 어렵게 만든다. Facade는 서브시스템에 대한 단순하고 기본적인 시각을 제공한다. 이러한 시각은 대부분의 클라이언트들에게 충분하다. 커스터마이즈가 필요한 클라이언트들에게만이 facade를 넘어서 볼 필요가 있는 것이다.
- 클라이언트의 요청을 적합한 서브시스템 객체에게 위임한다.
- Facade 객체에 의해 정의된 작업을 처리한다.
* 클라이언트는 Facade에게 요청을 보냄으로서 서브시스템과 대화한다. Facade 객체는 클라이언트의 요청을 적합한 서브시스템 객체에게 넘긴다. 비록 서브시스템 객체가 실제 작업을 수행하지만, facade 는 facade 의 인퍼페이스를 서브시스템의 인터페이스로 번역하기 위한 고유의 작업을 해야 할 것이다.
1. 서브시스템 컴포넌트로부터 클라이언트들을 보호한다. 그러함으로서 클라이언트가 다루는 객체의 수를 줄이고, 서브시스템을 이용하기 쉽게 해준다.
2. 서브시스템과 클라이언트 간의 연결관계를 약하게 해준다. 종종 서브시스템 컴포넌트는 클라이언트와 강한 연결관계를 가지기도 한다. 약한 연결관계는 클라이언트에게 영향을 미치지 않으면서 서브시스템의 컴포넌트들을 다양하게 만들어준다. Facade 는 시스템과 객체간의 의존성을 계층화 하는데 도움을 준다. Facade는 복잡함이나 순환의존성을 없애준다. 이것은 클클라이언트와 서브시스템이 비의존적으로 구현되었을때의 가장 중요한 결과일 것이다.
3. 그러하면서도 어플리케이션은 여전히 서스시스템 클래스들을 사용할 방법을 제공한다. 사용의 편리성과 일반성을 선택할 수 있다.
서브클래싱의 대체는 다른 서브시스템 객체를 가진 Facade 객체로 설정하는 것이다. facade를 커스터마이즈하려면 단순히 서브시스템 객체를 다른 객체로 교환한다.
서브시스템은 인터페이스를 가진다는 점과 무엇인가를 (클래스는 state와 operation을 캡슐화하는 반면, 서브시스템은 classes를 캡슐화한다.) 캡슐화한다는 점에서 class 와 비슷하다. class 에서 public 과 private interface를 생각하듯이 우리는 서브시스템에서 public 과 private interface 에 대해 생각할 수 있다.
서브시스템 클래스를 private 로 만드는 것은 유용하지만, 일부의 OOP Language가 지원한다. C++과 Smalltalk 는 전통적으로 class에 대한 namespace를 global하게 가진다. 하지만 최근에 C++ 표준회의에서 namespace가 추가됨으로서 [Str94], public 서브시스템 클래스를 노출시킬 수 있게 되었다.[Str94] (충돌의 여지를 줄였다는 편이 맞을듯..)
Compiler 서브시스템은 BytecodeStream 클래스를 정의한다. 이 클래스는 Bytecode 객체의 스트림부를 구현한다. Bytecode 객체는 머신코드를 구체화하는 bytecode를 캡슐화한다. 서브시스템은 또한 Token 클래스를 정의하는데, Token 객체는 프로그램 언어내의 token들을 캡슐화한다.
Parser 클래스는 Scanner의 token로 parse tree를 구축하기 위해 ProgramNodeBuilder 를 사용한다.
Parser는 점진적으로 parse tree를 만들기 위해 ProgramNodeBuilder 를 호출한다. 이 클래스들은 Builder pattern에 따라 상호작용한다.
parser tree는 StatementNode, ExpressionNode와 같은 ProgramNode의 subclass들의 인스턴스들로 이루어진다. ProgramNode 계층 구조는 Composite Pattern의 예이다. ProgramNode는 program node 와 program node의 children을 조작하기 위한 인터페이스를 정의한다.
Traverse operaton은 CodeGenerator 객체를 인자로 취한다. ProgramNode subclass들은 BytecodeStream에 있는 Bytecode객체들을 machine code로 변환하기 위해 CodeGenerator 객체를 사용한다. CodeGenerator 클래는 visitor이다. (VisitorPattern을 참조하라)
ProgramNode의 각 subclass들은 ProgramNode의 child인 ProgramNode 객체를 호출하기 위해 Traverse operation을 구현한다. 매번 각 child는 children에게 같은 일을 재귀적으로 수행한다. 예를 들어, ExpressionNode는 Traverse를 다음과 같이 정의한다.
우리가 토론해온 클래스들은 곧 Compiler 서브시스템을 이룰 것이다. 자 이제 우리는 이 모든 조각들을 함께 묶은 facade 인 Compiler 클래스를 소개할 것이다. Compiler는 소스 컴파일과 특정 machine에 대한 코드변환기능에 대한 단순한 인터페이스를 제공한다.
ET++ application framework [WGM88] 에서, application은 run-time 상에서 application의 객체들을 살필 수 수 있는 built-in browsing tools를 가지고 있다.이러한 browsing tools는 "ProgrammingEnvironment'라 불리는 facade class를 가진 구분된 서브시스템에 구현되어있다. 이 facade는 browser에 접근 하기 위한 InspectObject나 InspectClass같은 operation을 정의한다.
- Gof/FactoryMethod . . . . 45 matches
Framework(이하 Framework 그대로)는 객체사이의 관게를 정의하고, 유지하기 위하여 가상 클래스들을 사용한다. Framework는 종종 이러한 클래스들을 기반으로 객체의 생성에 책임을 진다.
여러 문서를 사용자에게 보여줄수 있는 어플리케이션에 대한 Framework에 대하여 생각해 보자. 이러한 Framework에서 두가지의 추상화에 대한 요점은, Application과 Document클래스 일것이다. 이 두 클래스다 추상적이고, 클라이언트는 그들의 Application에 알맞게 명세 사항을 구현해야 한다. 예를들어서 Drawing Application을 만들려면 우리는 DrawingApplication 과 DrawingDocument 클래스를 구현해야 한다. Application클래스는 Document 클래스를 관리한다. 그리고 사용자가 Open이나 New를 메뉴에서 선택하였을때 이들을 생성한다.
Factory Method 패턴은 이에 대한 해결책을 제시한다. 그것은 Document의 sub 클래스의 생성에 대한 정보를 캡슐화 시키고, Framework의 외부로 이런 정보를 이동 시키게 한다.
Application의 Sub 클래스는 Application상에서 추상적인 CreateDocument 수행을 재정의 하고, Document sub클래스에게 접근할수 있게 한다. Aplication의 sub클래스는 한번 구현된다. 그런 다음 그것은 Application에 알맞은 Document에 대하여 그들에 클래스가 특별히 알 필요 없이 구현할수 있다. 우리는 CreateDocument를 호출한다. 왜냐하면 객체의 생성에 대하여 관여하기 위해서 이다.
Fatory Method 패턴은 이럴때 사용한다.
* Factory Method가 생성하는 객체에 관한 인터페이스를 정의한다.
* Procunt 형의 객체를 반환하는 Factory Method를 선언한다. Creator는 또한 기본 ConcreteProduct객체를 반환하는 factory method에 관한 기본 구현도 정의되어 있다.
* Product객체를 만들기위한 factory method를 호출한다.
* ConcreteProduct의 인스턴스를 반환하기 위한, factory method를 오버라이드(over ride) 한다.
Creator는 factor method가 정의되어 있는 Creator의 sub클래스에게 의지한다 그래서 Creator는 CooncreteProduct에 적합한 인스턴스들을 반환한다.
Factory method는 당신의 코드에서 만들어야한 Application이 요구하는 클래스에 대한 기능과 Framework가 묶여야할 필요성을 제거한다. 그 코드는 오직 Product의 인터페이스 만을 정의한다.; 그래서 어떠한 ConcreteProduct의 클래스라도 정의할수 있게 하여 준다.
factory method의 잠재적인 단점이라고 한다면 클라이언트가 아마도 단지 특별한 ConcreteProduct객체를 만들기위해서 Creator클래스의 sub클래스를 가지고 있어야 한다는 것일꺼다. 클라이언트가 어떤 식으로든 Creator의 sub클래스를 만들때의, sub클래스를 만드는 것자체는 좋다. 하지만 클라이언트는 이런것에 신경쓸 필요없이 로직 구현에 신경을 써야 한다.
자, 역시 Factory Method 패턴에 관련한 두가지의 결론을 이야기 한다.:
1. ''서브 클래스와 소통 통로 제공''(''Provides hooks for subclasses.'') Factory Method를 적용한 클래스에서 객체의 생성은 항상 직접 만들어지는 객체에 비하여 유연하다. Factory Method는 객체의 상속된 버전의 제공을 위하여, sub클래스와 연결될수 있다.(hook의 의미인데, 연결로 해석했고, 그림을 보고 이해해야 한다.)
Ducument에제에서 Document클래스는 factory method에 해당하는, 자료를 열람하기 위한 기본 파일 다이얼로그를 생성하는 CreateFileDialog이 호출을 정의할수 있다. 그리고 Document sub클래스는 이러한 factory method를 오버 라이딩해서 만들고자 하는 application에 특화된 파일 다이얼로그를 정의할수 있다. 이러한 경우에 factory method는 추상적이지 않다. 하지만 올바른 기본 구현을 제공한다.
병렬 클래스 상속은 클래스가 어떠한 문제의 책임에 관해서 다른 클래스로 분리하고, 책임을 위임하는 결과를 초례한다. 조정할수 있는 그림 도형(graphical figures)들에 관해서 생각해 보자.;그것은 마우스에 의하여 뻗을수 있고, 옮겨지고, 회정도 한다. 그러한 상호작용에 대한 구현은 언제나 쉬운것만은 아니다. 그것은 자주 늘어나는 해당 도형의 상태 정보의 보관과 업데이트를 요구한다. 그래서 이런 정보는 상호 작용하는, 객체에다가 보관 할수만은 없다. 게다가 서로다른 객체의 경우 서로다른 상태의 정보를 보관해야 할텐데 말이다. 예를들자면, text 모양이 바뀌면 그것의 공백을 변화시키지만, Line 모양을 늘릴때는 끝점의 이동으로 모양을 바꿀수 있다.
이러한 제한에서는 모양에따라, 각 상테에 따라 객체를 분리하는 것이 더 좋을 것이고, 각자 필요로하는 상태를 유지 해야한다. 서로 다른 모양은 서로다른 Manipulator의 sub클래스를 사용해서 움직여야 한다.이러한 Manipulator클래스와 상속은 병렬적으로 이루어 진다. 다음과 같은 모양 같이 말이다.
Figure클래스는 CreateManipulator라는, 서로 작용하는 객체를 생성해 주는 factory method이다. Figure의 sub클래스는 이 메소드를 오버라이드(override)해서 그들에게 알맞는 Manipulator sub클래스의 인스턴스를 (만들어, )반환한다. Figure 클래스는 아마도 기본 Manipulator인스턴스를 (만들어,) 반한하기 위한 기본 CreateManipulator를 구현했을 것이다. 그리고 Figure의 sub클래스는 간단히 이러한 기본값들을 상속하였다. Figure클래스 들은 자신과 관계없는 Manipulator들에 대하여 신경 쓸필요가 없다. 그러므로 이들의 관계는 병렬적이 된다.
Factory Method가 두게의 클래스의 상속 관계에서 어떻게 이러한 연결과정을 정의하는지 주목하라. 그것은 서로 고유의 기능을 부여시키는 작업을 한다.
'''첫번째''' 경우는 코드가 구현된 sub클래스를 요구한다. 왜냐하면, 적당한 기본 구현 사항이 없기때문이다. 예상할수 없는 클래스에 관한 코드를 구현한다는 것은 딜레마이다. '''두번째'''경우에는 유연성을 위해서 concrete Creator가 factory method 먼저 사용해야 하는 경우이다. 다음과 같은 규칙을 이야기 힌다."서로 분리된 수행 방법으로, 객체를 생성하라, 그렇게 해서 sub클래스들은 그들이 생성될수 있는 방법을 오버라이드(override)할수 있다." 이 규칙은 sub클래스의 디자이너들이 필요하다면, 그들 고유의 객체에 관련한 기능으로 sub클래스 단에게 바꿀수 있을음 의미한다.
- Gof/Singleton . . . . 45 matches
클래스로 하여금 오직 하나의 인스턴스만을 가지게 하며, 어디서든지 접근 가능하도록 한다.
몇몇 클래스들에 대해서 오직 하나의 인스턴스 만을 가지는 것은 중요한 일이다. 예를 들면, 어떤 시스템에선 수많은 프린터들이 있더라도 거기에는 단 하나의 프린터 스플러만이 있어야 한다. OS에서 돌아가는 화일시스템이나 윈도우 매니저의 경우도 오직 하나여야 한다 (동시에 2-3개의 윈도우매니저가 돌진 않는다.) 디지털 필터의 경우에도 A/D converter는 단 하나를 가진다.
더 좋은 방법은 클래스 자신으로 하여금 자기자신의 단일 인스턴스를 유지하도록 만드는 것이다. 이 클래스는 인스턴스가 생성될 때 요청을 가로챔으로서 단일 인스턴스로 만들어지는 것은 보증한다. 또한, 인스턴스에 접근하는 방법도 제공한다. 이것이 바로 SingletonPattern이다.
SingletonPattern은 다음과 같은 경우에 사용한다.
* 클래스가 정확히 오직 하나의 인스턴스만이 존재해야 할 때. 그리고 잘 알려진 엑세스 방법으로 어디서든지 접근 할 수 있어야 한다.
* 단일 인스턴스가 서브클래싱에 의해 확장가능해야 할 경우. 그러면 클라이언트는 그들의 코드 수정없이 확장된 인스턴스를 사용할 수 있어야 한다.
* Instance operation (클래스의 메소드)을 정의한다. Instance 는 클라이언트에게 해당 Singleton의 유일한 인스턴스를 접근할 수 있도록 해준다.
4. 여러개의 인스턴스를 허용한다. 프로그래머의 마음에 따라 쉽게 Singleton class의 인스턴스를 하나이상을 둘 수도 있도록 할 수 있다. 게다가 어플리케이션이 사용하는 인스턴스들을 제어하기 위해 동일한 접근방법을 취할 수 있다. 단지 Singleton 인스턴스에 접근하는 것을 보장하는 operation만 수정하면 된다.
1. unique instance임을 보증하는 것. SingletonPattern의 경우도 일반 클래스와 마찬가지로 인스턴스를 생성하는 방법은 같다. 하지만 클래스는 늘 단일 인스턴스가 유지되도록 프로그래밍된다. 이를 구현하는 일반적인 방법은 인스턴스를 만드는 operation을 class operations으로 두는 것이다. (static member function이거나 class method) 이 operation은 unique instance를 가지고 있는 변수에 접근하며 이때 이 변수의 값 (인스턴스)를 리턴하기 전에 이 변수가 unique instance로 초기화 되어지는 것을 보장한다. 이러한 접근은 singleton이 처음 사용되어지 전에 만들어지고 초기화됨으로서 보장된다.
다음의 예를 보라. C++ 프로그래머는 Singleton class의 Instance operation을 static member function으로 정의한다. Singleton 또한 static member 변수인 _instance를 정의한다. _instance는 Singleton의 유일한 인스턴스를 가리키는 포인터이다.
클래스를 사용하는 Client는 singleton을 Instance operation을 통해 접근한다. _instance 는 0로 초기화되고, static member function 인 Instance는 단일 인스턴스 _Instance를 리턴한다. 만일 _instance가 0인 경우 unique instance로 초기화시키면서 리턴한다. Instance는 lazy-initalization을 이용한다. (Instance operation이 최초로 호출되어전까지는 리턴할 unique instance는 생성되지 않는다.)
* (c) C++ 은 global 객체의 생성자가 translation unit를 통하면서 호출될때의 순서를 정의하지 않는다[ES90]. 이러한 사실은 singleton 들 간에는 어떠한 의존성도 존재할 수 없음을 의미한다. 만일 그럴 수 있다면, 에러를 피할 수 없다.
약간 첨언을 하면, global/static 객체의 접근은 singleton들이 사용되건 사용되지 않건 간에 모든 singleton이 만들어지도록 한다는 것이다. static member function 를 사용함으로서 이러한 모든 문제들을 피할 수 있다.
Smalltalk에서 unique instance를 리턴하는 functiond은 Singleton 클래스의 class method로 구현된다. 단일 인스턴스가 만들어지는 것을 보장하기 위해서 new operation을 override한다. The resulting Singleton class might have the following two class methods, where SoleInstance is a class variable that is not used anywhere else:
2. Singleton class를 subclassing 하기 관련. 주된 주제는 클라이언트가 singleton 의 subclass를 이용할 수 있도록 subclass들의 unique instance를 설정하는 부분에 있다. 필수적으로, singleton 인스턴스를 참조하는 변수는 반드시 subclass의 인스턴스로 초기화되어져야 한다. 가장 단순한 기술은 Singleton의 Instance operation에 사용하기 원하는 singleton을 정해놓는 것이다. Sample Code에는 환경변수들을 가지고 이 기술을 어떻게 구현하는지 보여준다.
이러한 link-approach 방법은 link-time때 singleton class 의 선택을 고정시켜버리므로, run-time시의 singleton class의 선택을 힘들게 한다. subclass를 선택하기 위한 조건문들 (switch-case 등등)은 프로그램을 더 유연하게 할 수 있지만, 그것 또한 이용가능한 singleton class들을 묶어버리게 된다. 이 두가지의 방법 다 그다지 유연한 방법은 아니다.
registry 는 string name 과 singletons 을 mapping 한다. singleton의 instance가 필요한 경우, registry에 string name으로 해당 singleton 을 요청한다. registry는 대응하는 singleton을 찾아서 (만일 존재한다면) 리턴한다. 이러한 접근방법은 모든 가능한 Singleton class들이나 instance들을 Instance operation이 알 필요가 없도록 한다. 필요한 것은 registry에 등록될 모든 Singleton class들을 위한 일반적인 interface이다.
Register operation은 주어진 string name으로 Singleton instance를 등록한다. registry를 단순화시키기 위해 우리는 NameSingletonPair 객체의 리스트에 instance를 저장할 것이다. 각 NameSingletonPair는 name과 instance를 mapping한다. Lookup operation은 주어진 이름을 가지고 singleton을 찾는다. 우리는 다음의 코드에서 environment variable이 원하는 singleton의 이름을 명시하고 있음을 생각할 수 있다.
더 이상 Singleton class 는 singleton 객체를 만들 책임이 없다. 그 대신 이제 Singleton 의 주된 책임은 시스템 내에서 선택한 singleton 객체를 접근가능하도록 해주는 것이다. static object approach는 여전히 단점이 존재한다. 모든 가능한 Singleton subclass들의 인스턴스들이 생성되어지던지, 그렇지 않으면 register되어서는 안된다는 것이다.
미로를 만드는 MazeFactory 클래스를 정의했다고 하자. MazeFactory 는 미로의 각각 다른 부분들을 만드는 interface를 정의한다. subclass들은 더 특별화된 product class들의 instance들을 리턴하기 위한 opeation들을 재정의할 수 있다. 예를 들면 BombedWall 객체는 일반적인 Wall객체를 대신한다.
- 논문번역/2012년스터디/이민석 . . . . 44 matches
오프라인 필기 글자 인식을 위한 시스템을 소개한다. 이 시스템의 특징은 분할이 없다는 것으로 인식 모듈에서 한 줄을 통째로 처리한다. 전처리, 특징 추출(feature extraction), 통계적 모형화 방법을 서술하고 저자 독립, 다저자, 단일 저자식 필기 인식 작업에 관해 실험하였다. 특히 선형 판별 분석(Linear Discriminant Analysis), 이서체(allograph) 글자 모형, 통계적 언어 지식의 통합을 조사하였다.
본 논문에서는 은닉 마르코프 모형에 기반한, 어휘(lexicon)-free 오프라인 필기 인식 시스템을 소개하고 완전한 영어 문장 데이터베이스에 관한 몇 가지 실험을 저자 독립식 그리고 대조를 위해 다저자, 단일 저자식으로 수행했다. 전처리와 특징 추출 방법을 소개하고 이에 더해 선형 판별 분석, 이서체 글자 모형의 사용, 통계적 언어 모형 같은 더욱 정교한 기법들을 조사한다. 그 뒤의 절에서는 오프라인 필기 인식에 대한 관련 작업들을 짧게 검토한다. 우리가 사용한 데이터베이스는 3절에서 소개한다. 그 다음 전처리, 특징 추출 방법, 통계적 모델링과 인식을 위한 기법을 설명한다. 평가 결과는 제안한 방법의 효율성을 입증하기 위해 7절에서 소개한다.
한 줄을 초기에 분할하여 발생하는 오류를 피하기 위해 [9]에서는 분할을 하지 않는, 즉 한 줄 전체를 인식 모듈에 넘기는 방법을 제안한다. 이 시스템은 단일 저자에 대해 검사되었고 통계적 언어 지식과 결합하여 유망한 인식 결과를 달성한다. [11]은 저자 수백 명으로부터 제작하고 보다 큰 데이터베이스에서 검사된, 저자에 무관한 제약 없는 글자 인식을 위한 발전된 시스템을 서술한다. 앞으로 나올 절에서 설명하는 시스템은 전처리와 특징 추출 방법이 약간 다른 비슷한 접근법을 사용한다. 그에 더해 이서체 글자 모형, 즉 글자 종류별 HMM 집합과 통계적 언어 모형의 사용 뿐 아니라 특징 벡터의 선형 판별 분석(LDA)을 적용한 결과도 조사한다.
훈련과 인식을 위한 입력 데이터는 완전한 영어 문장 데이터베이스에 의해 제공되고 각각은 Lancaster-Oslo/Bergen 말뭉치에 기반한다. [7] 저자 독립식 뿐 아니라 다수 저자에 관한 실험을 Bern 대학의 IAM에서 수집한 필기 형태 [10]의 데이터베이스를 사용하여 수행하였다. 데이터베이스 전체는 다양한 글 범주(출판 글자, 종교, 인기 설화, 픽션...)를 포함하고 500명 이상 저자의 1200개 이상 필기 형태로 구성된다. 우리는 250명 이상의 저자가 저자 독립식 실험을 위해 제작한 범주 [a..f]의 form과 여섯 저자가 다저자식을 적용하여 제작한 하위집합 c03을 사용한다.
글을 한 걸음 더 처리하기 위해 각각의 줄을 추출하여야 한다. 그러기 위해 이미지를 필기 라인의 핵심 영역(core region)들 사이를 분리한다. 핵심 영역, 즉 텍스트 라인의 위 베이스라인과 아래 베이스라인 사이의 영역은 threshold를 적용하여 찾는다. threshold는 줄들이 핵심 영역에 속하기 위해 필요한 전방foreground 픽셀들의 최소 개수를 나타낸다. 이 threshold는 이진화한 필기 영역의 수평 밀도 히스토그램을 이용하여 Otsu의 방법 [12]를 적용하면 자동으로 결정된다. 그 다음 수평 투영 히스토그램에서 각 줄의 검은 픽셀의 개수가 축적되고 이미지는 이 투영 히스토그램의 minima를 따라 핵심 영역별로 나눠진다.
다양한 저자의 글씨체 때문에 인식 작업을 단순화하기 위해 필기를 정규화한다. 특히 수직 위치, 기울임, 경사(slant)의 교정이 전처리에서 중요함이 드러났다. 그 이상의 정규화는 필기의 크기와 그레이레벨의 강도를 고려한다.
가끔 글씨체가 한 줄에서도 확 바뀌는 것에 동기를 얻어 우리는 각 줄의 수직 위치, 기울임, 경사를 국소적으로 교정한다. 따라서 각 행은 필기 조각segment들 사이의 공백을 탐색하여 분리된다. 믿을 만한 정규화 계수를 계산하기에는 너무 짧은 조각을 피하기 위해 threshold를 사용한다.
수직 위치와 기울임은 [15]에 서술된 접근법과 비슷한 선형 회귀(linear regression)를 이용한 베이스라인 측정법을 적용하여 교정한 반면에, 경사각 계산은 가장자리edge 방향에 기반한다. 그러므로 이미지는 이진화되고 수평 흑-백과 백-흑 전환을 추출하는데 수직 stroke만이 경사 측정에 결정적이다. canny edge detector를 적용하여 edge orientation 자료를 얻고 각도 히스토그램에 누적한다. 히스토그램의 평균을 경사각으로 쓴다.
마지막 전처리는 그레이 레벨을 정규화하여 다양한 펜과 배경색으로 인한 변화에 대처하는 것이다. 이미지의 그레이 레벨 구간은 어두운 강도는 0이 되고 밝은 쪽은 255가 되도록 조정한다. 말뭉치의 통상적인 한 줄에 이들 전처리를 적용한 결과가 그림 3에 나타나있다.
필기 줄을 전처리한 이미지는 특징 추출 단계의 입력 자료로 사용된다. sliding window 기법을 [11]이 설명하는 접근법과 비슷하게 적용한다. 우리의 경우 이미지의 높이와 열 네 개 크기의 창이 이미지의 왼쪽에서 오른쪽으로 두 열씩 겹치면서 움직이고 기하 추출의 쌍을 추출한다.
sliding window의 각 열에서 특징 7개를 추출한다. (1) 흑-백 변화 개수(windowed text image의 이진화 이후), (2) 베이스라인에 대한 강도 분포의 평균 값 위치, (3) 최상단 글자 픽셀에서 베이스라인까지의 거리, (4) 최하단 글자 픽셀에서 베이스라인까지의 거리, (5) 최상단과 최하단 텍스트 픽셀의 거리, (6) 최상단과 최하단 텍스트 픽셀 사이의 평균 강도, (7) 그 열의 평균 강도. 특징 (2)-(5)는 core size, 즉 하단 베이스라인과 상단 베이스라인(극대값을 통한 line fitting으로 계산)의 거리에 의해 정규화되어, 글씨 크기의 변동에 대해 더욱 굳건해진다. 그 후에 모든 특징은 윈도우의 네 열에 걸쳐 평균화된다.
강도 분포의 평균값의 변화 뿐 아니라 하단 contour와 상단 contour의 방향을 고려하기 위해 추가적으로 세 가지 방향성 특징을 계산한다. 말인 즉 우리는 네 lower countour 점, upper contour 점, sliding window 내 평균값을 통해 줄들을 재고 선 방향들을 (8), (9), (10) 특성으로 각각 사용한다. (뭔 소리) 더 넓은 temporal context를 고려하여 우리는 특징 벡터의 각 성분마다 근사적인 수평 미분을 추가로 계산하고 결과로 20 차원 특징 벡터를 얻는다. (윈도우당 특징 10개, 도함수 10개)
특징 벡터들을 decorrelate하고 종류 분별력을 향상하기 위해 우리는 훈련 단계와 인식 단계에서 LDA를 통합한다. (cf. [6]) 원래 특징 표현을 일차 변환하고 특징 공간의 차원을 점차 줄이며 최적화한다. 일차 변환 A를 구하기 위해 훈련 자료의 클래스내 분산(within class scatter) 행렬 Sw와 클래스간 분산(between class scatter) 행렬 Sb를 이용하여 고유 벡터 문제를 해결한다. 이 분산(scatter) 행렬들을 계산하여 각 특징 벡터의 HMM 상태와 함께 이름표를 붙여야 한다. 우리는 먼저 일반적인 훈련을 수행하고 훈련 자료들을 상태를 기준으로 정렬한다. 분산 행렬을 구했으면 LDA 변환은 다음 고유 벡터 문제를 풀어 계산한다.
필기 글자 인식을 위한 HMM의 구성, 훈련, 해독은 ESMERALDA 개발 환경[5]이 제공하는 방법과 도구의 틀 안에서 수행된다. HMM의 일반적인 설정으로서 우리는 512개의 Gaussian mixtures with diagonal covariance matrice(더 큰 저자 독립 시스템에서는 2048개)를 포함하는 공유 코드북이 있는 semi-continuous 시스템을 사용한다. 52개 글자, 10개 숫자, 12개 구두점 기호와 괄호, 공백 하나를 위한 기본 시스템 모형은 표준 Baum-Welch 재측정을 사용하여 훈련된다. 그 다음 한 줄 전체를 인식하기 위해 글자 모형에 대한 루프로 구성된 conbined model이 사용된다. 가장 가능성 높은 글자 시퀀스가 표준 Viterbi beam- search를 이용하여 계산된다.
전처리에서 벌충할 수 없는 서로 다른 글씨체 사이의 변동을 고려하기 위해 우리는 [13]에 서술된 접근법과 비슷한, 다저자/저자 독립식 인식을 위한 글자 이서체 모형을 적용한다. 이서체는 글자 하위 분류, 즉 특정 글자의 서로 다른 실현이다. 이는 베이스라인 시스템과달리HMM이이제서로다른글자 하위 분류를 모델링하는 데 쓰임을 뜻한다. 글자별 하위 분류 개수와 이서체 HMM 개수는 휴리스틱으로 결정하는데, 가령 다저자식에 적용된 시스템에서 우리는 이서체 개수가 저자 수만큼 있다고 가정한다. 초기화에서 훈련 자료는 이서체 HMM들을 임의로 선택하여 이름표를 붙인다. 훈련 도중 모든 글자 표본에 대해 해당하는 모든 이서체에 매개변수 재추정을 병렬 적용한다. 정합 가능성은 특정 모형의 매개변수가 현재 표본에 얼마나 강하게 영향받는 지를 결정한다. 이서체 이름표가 유일하게 결정되지는 않기에 이 절차는 soft vector quantization과 비슷하다.
부수적으로, 통계적 언어 모형은 인식 과정에 통합되어 글자 시퀀스가 발생할 것 같은 정도의 추정을 제공한다. 인식 작업의 목표는 주어진 데이터 x에 대하여 통합 통계 모형의 확률을 최대화하는 글자 시퀀스 𝑤̂ 를 찾는 것이다.
추가로 Bern 대학의 Institute of Informatics and Applied Mathematics, 즉 Horst Bunke와 Urs-Viktor Marti에게 감사한다. 이들은 우리가 필기 양식 데이터베이스인 IAM[10]을 인식 실험에 쓰는 것을 허락하였다.
* 보잉사의 공돌이들은 3D 모델링과 계산유체역학을 사용하여 차세대 상업 및 군사용 비행기를 설계한다. 이들은 비행기 주변의 기류를 시뮬레이션하고자 방정식과 변수를 대략 200만개 포함하는 일차 방정식을 반복하여 푼다. 이러한 거대한 방정식계를 현실적인 시간 내에 풀려면 분할 행렬(partitioned matrix)과 행렬 인수분해(matrix factorization)라는 개념을 도입해야 한다.
- Gof/Command . . . . 43 matches
request 를 객체로 캡슐화 시킴으로서 다른 request들을 가진 클라이언트를 인자화시키거나, request를 queue하거나 대기시키며, undo가 가능한 명령을 지원한다.
때때로 요청받은 명령이나 request를 받는 객체에 대한 정보없이 객체들에게 request를 넘겨줄 때가 있다. 예를 들어 user interface tookit은 button이나 menu처럼 사용자 입력에 대해 응답하기 위해 요청을 처리하는 객체들을 포함한다. 하지만, 오직 toolkit을 사용하는 어플리케이션만이 어떤 객체가 어떤일을 해야 할지 알고 있으므로, toolkit은 button이나 menu에 대해서 요청에 대해 명시적으로 구현을 할 수 없다. toolkit 디자이너로서 우리는 request를 받는 개체나 request를 처리할 operations에 대해 알지 못한다.
Command Pattern은 request 를 객체화함으로서 toolkit 객체로 하여금 불특정한 어플리케이션 객체에 대한 request를 만들게 한다. 이 객체는 다른 객체처럼 저장될 수 있으며 pass around 가능하다. 이 pattern의 key는 수행할 명령어에 대한 인터페이스를 선언하는 추상 Command class에 있다. 이 인터페이스의 가장 단순한 형태에서는 추상적인 Execute operation을 포함한다. 구체화된 Command subclass들은 request에 대한 receiver를 instance 변수로 저장하고 request를 invoke하기 위한 Execute operation을 구현함으로서 receiver-action 짝을 구체화시킨다. The receiver has the knowledge required to carry out the request.
Menu는 쉽게 Command Object로 구현될 수 있다. Menu 의 각각의 선택은 각각 MenuItem 클래스의 인스턴스이다. Application 클래스는 이 메뉴들과 나머지 유저 인터페이스에 따라서 메뉴아이템을 구성한다. Application 클래스는 유저가 열 Document 객체의 track을 유지한다.
어플리케이션은 각각의 구체적인 Command 의 subclass들로 각가각MenuItem 객체를 설정한다. 사용자가 MenuItem을 선택했을때 MenuItem은 메뉴아이템의 해당 명령으로서 Execute oeration을 호출하고, Execute는 실제의 명령을 수행한다. MenuItem객체들은 자신들이 사용할 Command의 subclass에 대한 정보를 가지고 있지 않다. Command subclass는 해당 request에 대한 receiver를 저장하고, receiver의 하나나 그 이상의 명령어들을 invoke한다.
예를 들어 PasteCommand는 clipboard에 있는 text를 Document에 붙이는 기능을 지원한다. PasteCommand 의 receiver는 인스턴스화할때 설정되어있는 Docuemnt객체이다. Execute 명령은 해당 명령의 receiver인 Document의 Paste operation 을 invoke 한다.
때때로 MenuItem은 연속된 명령어들의 일괄수행을 필요로 한다. 예를 들어서 해당 페이지를 중앙에 놓고 일반크기화 시키는 MenuItem은 CenterDocumentCommand 객체와 NormalSizeCommand 객체로 만들 수 있다. 이러한 방식으로 명령어들을 이어지게 하는 것은 일반적이므로, 우리는 복수명령을 수행하기 위한 MenuItem을 허용하기 위해 MacroCommand를 정의할 수 있다. MacroCommand는 단순히 명령어들의 sequence를 수행하는 Command subclass의 구체화이다. MacroCommand는 MacroCommand를 이루고 있는 command들이 그들의 receiver를 정의하므로 명시적인 receiver를 가지지 않는다.
이러한 예들에서, 어떻게 Command pattern이 해당 명령을 invoke하는 객체와 명령을 수행하는 정보를 가진 객체를 분리하는지 주목하라. 이러함은 유저인터페이스를 디자인함에 있어서 많은 유연성을 제공한다. 어플리케이션은 단지 menu와 push button이 같은 구체적인 Command subclass의 인스턴스를 공유함으로서 menu 와 push button 인터페이스 제공할 수 있다. 우리는 동적으로 command를 바꿀 수 있으며, 이러함은 context-sensitive menu 를 구현하는데 유용하다. 또한 우리는 명령어들을 커다란 명령어에 하나로 조합함으로서 command scripting을 지원할 수 있다. 이러한 모든 것은 request를 issue하는 객체가 오직 어떻게 issue화 하는지만 알고 있으면 되기때문에 가능하다. request를 나타내는 객체는 어떻게 request가 수행되어야 할지 알 필요가 없다.
* undo 기능을 지원하기 원할때. Command의 Execute operation은 해당 Command의 효과를 되돌리기 위한 state를 저장할 수 있다. Command 는 Execute 수행의 효과를 되돌리기 위한 Unexecute operation을 인터페이스로서 추가해야 한다. 수행된 command는 history list에 저장된다. history list를 앞 뒤로 검색하면서 Unexecute와 Execute를 부름으로서 무제한의 undo기능과 redo기능을 지원할 수 있게 된다.
* 기본명령어들를 기반으로 이용한 하이레벨의 명령들로 시스템을 조직할 때. 그러함 조직은 transaction을 지원하는 정보시스템에서 보편화된 방식이다. transaction은 데이터의 변화의 집합을 캡슐화한다. CommandPattern은 transaction을 디자인하는 하나의 방법을 제공한다. Command들은 공통된 인터페이스를 가지며, 모든 transaction를 같은 방법으로 invoke할 수 있도록 한다. CommandPattern은 또한 새로운 transaction들을 시스템에 확장시키기 쉽게 한다.
- 수행할 operation을 위한 인터페이스를 선언한다.
- Receiver 객체와 action 묶음을 정의한다.
- ConcreteCommand 객체를 만들고 receiver로 정한다.
- command 에게 request를 수행하도록 요청한다.
* client는 ConcreteCommand 객체를 만들고, receiver를 정한다.
* Invoker 객체는 ConcreteCommand객체를 저장한다.
* invoker는 command에서 Execute를 호출함으로서 request를 issue한다. 명령어가 undo가능할때, ConcreteCommand는 명령어를 undo하기 위한 state를 저장한다.
* ConcreteCommand 객체는 request를 처리하기 위해 receiver에서 operation을 invoke한다.
다음의 다이어그램은 이 객체들이 어떻게 상호작용하는지 보여준다. 이 다이어그램은 또한 어떻게 Command 가 receiver와 처리할 request로부터 invoker를 분리하는지 설명한다.
1. Command는 해당 객체의 명령을 invoke하는 객체와 어떻게 수행해야 할지 알고 있는 객체와의 결합을 해제한다.
- MFC/CollectionClass . . . . 43 matches
'''컬렉션(Collection)'''은 특별한 방식으로 구성되어 있는 임의 개수의 데이터 항목의 집합을 뜻한다.
|| Map || 순서가 없는 데이터 항목의 집합. 키값을 통해서 각각의 컬렉션에 접근한다. 데이터의 검색에 유용하다. 그렇지만 순차적인 접근이 필요한 곳에서는 배열이 더 좋다. ||
객체의 컬렉션을 정의하는 템플릿 클래스는 MFC의 CObject클래스에서 파생된다. 이런 템플릿 클래스는 기본 데이터 형식이나 사용자가 정의한 클래스, 구조체를 포함한 어떠한 종류의 객체도 저장, 관리하는 것이 가능하다. 이런 클래스들은 내부적으로 복사를 하기 때문에 복사생성자를 만들어야 한다.
첫번째 타입 인자는 저장될 요소의 타입을 말하며, 두번째 인자는 멤버함수가 사용하게될 인자를 말한다.
|| {{{~cpp SetSize()}}} || 배열의 초기 개수를 지정한다. 지정하지 않아도 동작하지만 어느정도의 값을 예측해서 주면, 불필요한 매모리 재할당의 작업이 줄어들 수 있다. ||
|| {{{~cpp Add(ObjectType)}}} || 특정 객체를 배열에 저장한다. ||
|| {{{~cpp GetAt(index)}}} || 인덱스로 지정된 배열의 객체를 리턴한다. ||
|| {{{~cpp operator[index]}}} || GetAt()과 동일하게 작동하며, built-in 배열과 동일한 사용법을 제공한다. [[BR]] {{{~cpp pointArray.SetAt}}}(3, NewPoint)[[BR]]{{{~cpp pointArray[3]=NewPoint}}} ||
|| {{{~cpp Append()}}} || 인자로 전달된 배열을 배열의 끝 부분에 추가한다. ||
|| {{{~cpp InsertAt()}}} || 인자로 전달된 객체를 배열의 특정 인덱스에 삽입한다. ||
첫번째 타입 인자는 저장될 요소의 타입을 말하며, 두번째 인자는 멤버함수가 사용하게될 인자를 말한다.
|| {{{~cpp AddHead()}}} || 리스트의 첫번째 요소에 객체를 추가한다.[[BR]]리턴형은 POSITION이다. ||
|| {{{~cpp AddTail()}}} || 리스트의 마지막 요소에 객체를 추가한다.[[BR]]리턴형은 POSITION이다. ||
|| {{{~cpp GetNext(POSITION)}}} || 전달된 위치 변수를 증가시킨다. 마지막 객체에서 사용될때에는 NULL을 리턴한다. ||
|| {{{~cpp InsertBefore(POSITION, ObjectType)}}} || 두번째 인자의 객체를 첫번째 인자의 위치의 앞부분에 삽입한다. ||
|| {{{~cpp SetAt(POSITION, ObjectType)}}} || 첫번째 인자의 위치에 두번재 인자의 객체를 할당한다. POSITION 의 유효성을 검사한후에 사용해야한다. ||
|| {{{~cpp GetHeadPosition()}}} || 리스트의 맨 처음에대한 POSITION값을 리턴한다. ||
|| {{{~cpp GetTailPosition()}}} || 리스트의 맨 마지막에대한 POSITION값을 리턴한다. ||
|| {{{~cpp GetAt()}}} || 특정 위치의 객체를 리턴한다. ||
|| {{{~cpp Find(ObjectType)}}} || 인자로 받은 객체를 검색해서 그 위치의 POSITION값을 리턴한다. 어드레스 수준에서 비교가 행해진다. ||
- PatternOrientedSoftwareArchitecture . . . . 40 matches
* interface는 안정적이어야 한다.
* 시스템의 각 부분은 교환 가능해야 한다. (Design for change in general is a major facilitator of graceful system evolution - 일반적으로 변화에 대비한 디자인을 하는것은 우아한 시스템 개발의 주요한 촉진자이다.)
* 이해하기 쉽고 유지보수도 하기 쉽게 하기 위해서 유사한 필요한 기능(responsibilities)을 그룹화 한다.
* component 경계가 교차 하는것은 성능의 저하를 초래한다. 예를 들어 많은 양의 데이터가 레이어를 지날때 또한 역시 많은 교차하는 component 경계를 지나게 되기 때문이다.
* 레이어 J+1에 의해서 사용될 서비스를 제공한다.
* 하부 작업을 레이어 J-1에게 넘긴다.(위임한다)
* Scenario1 - top-down communication, 가장 잘 알려진것이다. 클라이언트가 레이어 N에게 요청을 한다. 그러면 레이어 N은 홀로 모든 작업을 할 수 없기 때문에 하부 작업을 레이어 N-1에게 넘긴다. 그러면 레이어 N-1은 자신의 일을 하고 레이어 N-2에게 하부 작업을 넘기고, 이런식의 과정이 레이어 1에 도달할때까지 이루어 진다. 그래서 가장 낮은 수준의 서비스가 수행된다. 만약 필요하다면 다양한 요청에 대한 응답들이 레이어 1에서 레이어 2, 이런식으로 레이어 N에 도달할때까지 이루어진다. 이러한 top-down 소통의 특징은 레이어 J는 종종 레이어 J+1로부터 온 하나의 요청을 여러개의 요청으로 바꿔서 레이서 J-1에게 전한다. 이는 레이어 J가 레이어 J-1보다 더 추상적이기 때문이다. 덜 추상적인것이 여러개 모여서 더 추상적인것이 되는 것을 생각해보면 이해가 갈것이다.(예를 들어 복잡한 소켓 프로그래밍을 자바에서는 간단한 명령어로 금방 한다.)
* Scenario2 - bottom-up communication, 레이어 1에서 시작하는 연쇄적인 동작들이다. top-down communicatin과 헷갈릴 수도 있는데 top-down communication은 요청(requests)에 의해서 동작하지만, bottom-up communication은 통지(notifications)에 의해서 동작한다. 예를 들어서 우리가 키보드 자판을 치면, 레벨1 키보드에서 최상위 레벨 N에 입력을 받았다고 통지를 한다. bottom-up communicatin에서는 top-down communication과는 반대로 여러개의 bottom-up 통지들(notifications)은 하나의 통지로 압축되어서 상위 레이어로 전달되거나 그대로 전달된다.
* Scenario3 - 레이어 N-1이 cache로 작용하여서, 레이어 N의 요청이 레이어 N-1에게만 전달되고 더이상 하위 레이어로 전달되지 않는다. 요청을 보내기만 하는 레이어들이 상태가 없는(stateless) 반면에 이러한 cache 레이어는 상태 정보를 유지한다. 상태가 없는 레이어들은 프로그램을 간단하게 한다는 이점이 있다.
* Scenario4 - 레이어 1에서 event가 감지되었지만 레이어 3까지만 가고 더이상 가지 않는 경우와 같은 경우, 예를 들어서 성격 급한 클라이언트가 데이터를 요청하고, 못 기다리고 금방 다시 요청하는 경우에 첫번째 요청으로 응답 데이터가 가다가 두번째 요청이 오는것과 교차하게 된다. 이때 두번째 요청도 첫번째 요청과 같은 것이기에 이때 이 요청이 도이상 가지 않게 한다.
* task(과업,일) 들을 레이어에 배치하기 위한 추상적인 기준을 정의 하여라. 실제적인 소프트웨어 개발에서 우리는 종종 추상적인 기준들의 혼합을 사용한다. 예를들어서 하드웨어적인 관점에서 저 수준의 레벨들의 모습을 정하고, 개념적인 복잡성으로 고 수준의 레벨을 정한다.
* 레이어들의 이름을 정하고 각 레이어에 tasks(과업)을 정해 주어라. 모든 레이어의 tasks는 자신 보다 높은 레이어를 도와야 한다.
* services 들을 명확히 하여라. 가장 중요한 구현 원칙은 레이어들이 엄격하게 각자 분리 되어야 한다는 점이다. 레이어들 사이에 공유되는 모듈은 엄격한 layering 약하게 한다. 그리고 낮은 레이어보다 높은 레이어에 더 많은 service를 넣는것이 더 낮다.
* 각 레이어를 체계화 하여라. 어떤 레이어가 복잡하면 component들로 나누어 져야 한다.
* 기준을 지원한다.
* Exchangeability : 특정 레이어를 쉽게 바꿀 수 있다. 그것을 바꿔도 전체적으로 다른 부분은 안바꿔도 된다. 바꾸는 것은 당연히 그 바꿀 대상 레이어의 인터페이스데로 구현되어 있는 것이어야 한다.
* cascades of changing behavior : 레이어를 바꾸는것뿐만 아니라 그 인터페이스를 바꿀경우에 다른 부분까지 수정해줘야 한다는 말 같다.
* 의견 : 이 layer 패턴을 사회적인 것과 결부시켜서 생각하면 관료제와 비슷하다고 생각한다. 교체 가능하고, 단계적으로 올라가고, 내려가고 뭐 여러가지 점이 유사하다. 이 패턴이 사용하는 사람들이 관료제에서 착안해서 이 패턴을 사용하는 것은 아니겠지만 하여튼 그러한 유사점을 발견하니깐 신기했다.
* 추후의 시스템 향상이 사용자에 의해서 조차, 처리 단계(step)들을 바꾸거나 재조합 하는것으로서 가능해야 한다.
* 예를 들어서 네트워크 연결이나 온도 정보를 제공하는 센서와 같이 다양한 입력 데이타 source 가 존재한다.
- Gof/Composite . . . . 38 matches
부분-전체 계층구조를 표현하기 위해 객체들을 트리구조로 구성한다. Composite 는 클라이언트로 하여금 각각의 객체들과 객체의 묶음을 동일한 방법으로 처리하게 해준다.
하지만, 이러한 접근방법에는 문제점이 있다. 비록 대부분의 시간동안 사용자가 개개의 객체들을 동일하게 취급한다 하더라도, 이러한 클래스들을 이용하는 코드는 반드시 기본객체와 컨테이너 객체를 다르게 취급하여 코딩해야 한다는 점이다. 이러한 객체들의 구별은 어플리케이션을 복잡하게 만든다. CompositePattern은 객체들에 대한 재귀적 조합 방법을 서술함으로서, 클라이언트들로 하여금 이러한 구분을 할 필요가 없도록 해준다.
CompositePattern의 핵심은 기본요소들과 기본요소들의 컨테이너를 둘 다 표현하는 추상 클래스에 있다. 그래픽 시스템에서 여기 Graphic class를 예로 들 수 있겠다. Graphic 은 Draw 와 같은 그래픽 객체들을 구체화하는 명령들을 선언한다. 또한 Graphic 은 Graphic 의 자식클래스들 (tree 구조에서의 parent-child 관계)에 대해 접근하고 관리하는 명령들과 같은 모든 composite 객체들이 공유하는 명령어들을 선언한다.
Line, Rectangle, Text 와 같은 서브 클래스들은 (앞의 class diagram 참조) 기본 그래픽 객체들을 정의한다. 이러한 클래스들은 각각 선이나 사각형, 텍스트를 그리는 'Draw' operation을 구현한다. 기본적인 그래픽 구성요소들은 자식요소들을 가지지 않으므로, 이 서브 클래스들은 자식요소과 관련된 명령들을 구현하지 않는다.
Picture 클래스는 Graphic 객체에 대한 포함관계를 정의한다. Picture 는 Picture의 children의 Draw 메소드를 호출하게끔 Draw 메소드를 구현한다. 그리고 Picture는 child와 관련한 명령어들을 알맞게 구현한다. Picture 인터페이스는 Graphic의 인터페이스를 형성하므로, Picture 객체는 다른 Pricture들을 재귀적으로 조합할 수 있다.
* composition 에의 객체들에 대한 인터페이스를 선언한다.
* 모든 클래스들에의 기본적인 인터페이스에 대한 기본 행위를 구현한다.
* 자식 컴포넌트들을 접근하고 관리하기 위한 인터페이스를 선언한다.
* (optional) 재귀 구조에서의 해당 컴포넌트의 부모 클래스로 접근하기 위한 인터페이스를 정의하고, 적절하게 구현한다.
* composition의 leaf 객체를 표현한다. leaf 는 children를 가지지 않는다.
* composition 의 기본 객체들의 행위를 정의한다.
* children을 가지는 컴포넌트들을 위한 행위를 정의한다.
* 자식 컴포넌트들을 저장한다.
* Component 인터페이스중 자식컴포넌트 관련 명령들을 구현한다.
* Component의 인터페이스를 통해 composition의 객체들을 조작한다.
* 클라이언트들은 Component 클래스의 인터페이스를 이용, composite 구조의 객체들과 상호작용을 한다. 만일 상호작용하는 객체가 Leaf인 경우, 해당 요청은 직접적으로 처리된다. 만일 상호작용하는 객체가 Composite인 경우, Composite는 해당 요청을 자식 컴포넌트들에게 전달하는데, 자식 컴포넌트들에게 해당 요청을 전달하기 전 또는 후에 추가적인 명령들을 수행할 수 있다.
* 기본 객체들과 복합 객체들로 구성된 클래스 계층 구조를 정의한다. (상속관계가 아님. 여기서는 일종의 data-structure의 관점) 기본 객체들은 더 복잡한 객체들을 구성할 수 있고, 계속적이고 재귀적으로 조합될 수 있다. 클라이언트 코드가 기본 객체를 원할때 어디서든지 복합 객체를 취할 수 있다.
* 새로운 종류의 컴포넌트들을 추가하기 쉽게 해준다. 새로 정의된 Composite 나 Leaf 의 서브클래스들은 자동적으로 현재의 구조들과 클라이언트 코드들과 작용한다. 클라이언트 코드들은 새로운 Component 클래스들에 대해서 수정될 필요가 없다.
Equipment 클래스는 부분-전체 계층구조의 모든 equipment들을 위한 인터페이스를 정의한다.
Equipment 는 전원소모량 (power consumption)과 가격(cost) 등과 같은 equipment의 일부의 속성들을 리턴하는 명령들을 선언한다. 서브클래스들은 해당 장비의 구체적 종류에 따라 이 명령들을 구현한다. Equipment 는 또한 Equipment의 일부를 접근할 수 있는 Iterator 를 리턴하는 CreateIterator 명령을 선언한다. 이 명령의 기본적인 구현부는 비어있는 집합에 대한 NullIterator 를 리턴한다.
- OpenGL스터디 . . . . 37 matches
이런 팝핑현상은 3차원적인 표현을 방해한다. 고로 보통 이를 제거하기위해서 뒷면을 그리는 선을 제거하여 3차원적인 표현을 더 생생하게 한다. 이렇게 뒷면의 선을 제거하는 방식을 '''은면제거''' 혹은 '''숨겨진 표면 제거'''라고 한다.
* 핵심정리 : 3차원 사물에 대한 정보를 가지고 화면(2차원)에 표시하는 것을 '''랜더(render)한다'''라고 말하고 랜더링이라고 한마디로 말한다.
컴퓨터화면은 2차원이다. 하지만 우리가 3D게임을 할때 보면 그 내용물은 마치 3차원의 물체처럼 보인다. 하지만 실제로는 내용물은 2차원적인 것을 3차원처럼 보이게 만든것뿐이다. 그렇다면 어떻게 2차원적인것을 3차원적인것처럼 보이게 만들 수 있을까? 여러가지 방법이 잇지만 그중에 하나는 원근법을 사용한다는 것이다. '''원근법이란 가까히 있는 것은 크게 멀리있는것은 조그마하게 표현하는것을 말한다.''' 더 정확히 말하자면 '''선사이의 각도를 조절하여 3차원효과를 내는 기법'''을 말한다.
3차원적인 요소를 더 두드러지게 표현하기 위해서는 쉐이딩을 사용하면 된다. 쉐이딩이란 '''입체적인 물체에 음영이나 색상 밝기 등을 잘 조절하여 표면에 입히는 기법'''을 말한다. 이런 기법을 통해서 정육각형같은 경우는 각 면을 도드라지게 표현할 수 있고, 더욱 실감나는 3차원적인 표현을 가능케 한다.
지오메트리(도형)이 증가하면 증가할 수 록 그래픽하드웨어에서 처리해야할 일들은 많아진다. 만약 이렇게 많은 지오메트리(도형)을 일일히 쉐이딩 작업을 한다면 실시간 작업이
입히는 것을 이야기한다.''' 여기서 준비해둔 이미지를 '''텍스쳐'''라고 부르며, 텍스쳐의 각 요소를 '''텍셀''' , 이런 텍셀을 물체의 표면에 맞춰 입히는 작업을 '''필터링'''
'''블랜딩(blending)'''이란 화면상에 색상과 물체를 혼합하는 효과를 이야기한다. 이를 사용하는 곳은 주로 두 이미지가 겹쳐있는 효과를 내기위해서 사용한다. 예를 들어
컴퓨터는 기계어라는 언어라는 이진적인 표현(이진법적인 표현)을 사용한다. 한마디로 1011001과 같은 표현을 예시로 들 수 있는데, 이 때문에 연속적인 표현을 실질적으로 표현
란 계단현상을 부드럽게 표현해주는 방법을 말한다.
* 실시간 3D는 말그대로 사용자가 화면 구성에 필요한 데이터를 입력 즉시 화면에 반영하는 방식을 이야기한다. 예를 들어 비행기 시뮬레이션 프로그램이라던가, 게임을 예시로 들 수 있다.
* 비실시간 3D는 반대로 미리 구성해둔 3D이미지를 화면에 보여주는 방식을 이야기한다. 예시로는 애니매이션이나 영화를 들 수 있겠다. 고품질 3D이미지같은 경우는 이를 랜더링하고 구성하는데에만 해도 몇시간이 걸릴 정도로 많은 시간이 소요되는데, 이를 위한게 미리 3D이미지를 구성해두고 화면에 띄워주면 즉시 화면에 보여줄 수 있어서 마치 실시간 랜더링한 것 처럼 보여줄 수 있다.
* '''보류모드란, api상에서 미리 어떤 기본적인 도형의 구성방식이나 처리방식이 내부적으로 정해져있는 상태에서 도형을 구성하는 데이터를 API 또는 툴킷에 제공함으로써 도형을 구성(이미지 구성)하는 방식을 이야기한다.''' 장면내의 모든 물체들과 그 사이의 관계를 미리 만들어진 데이터 구조로 만들어두는것을 씬그래프(scene graph)라 한다.
* '''즉시모드란, 그래픽 프로세서에 직접적인 명령을 전달해서 상태를 변경시켜 이어지는 모든 명령에 그 상태를 반영하는 방식을 이야기한다.''' 이 방식은 위에서 언급한 씬그래프에 API의 내부적인 동작에도 이 방식이 쓰인다. 즉시모드에서 이미 실행된 명령은 그 다음 명령에 영향을 받지 않는데 예를 들자면 화면에 하늘에 대한 폴리곤을 텍스쳐를 입힌뒤 이 텍스쳐 상태를 해제하고, 땅에 조명효과에를 주기 위해 조명효과 상태를 변경시킨다면, 화면에는 하늘에 미리 구성된 텍스쳐에는 변함이 없으며 하늘에 조명효과가 반영이 되고 땅은 텍스쳐 상태가 반영이 안되고 조명효과에 대한 것만 반영이 될 것이다.
* 화면을 구성하는 좌표방식은 우리가 보통사용하는 직교좌표계(데카르트 좌표계)말고도 여러가지가 있다. 이 좌표체계에 따라서 이미지 구성하는 방식도 완전히 달라질 수 있어서 이를 잘 고려해서 선택해야한다. 하지만 지금 우리는 일단 직교좌표계를 가지고 논해볼 것이다.
* 클리핑이란, 우리가 화면에 이미지를 그리기 위해서는 openGL에게 화면의 좌표 기준을 알려줄 필요가 있는데, openGL에게 화면 좌표계 영역을 정해주는 것을 클리핑이라고 한다.
example) 직사각형 좌측하단 (0.0) ~ 직사각형 우측 상단(100,100) 좌표로 구성되는 직사각형모양의 좌표계를 클리핑한다라고 보면 이 좌표계 영역은 중심이 (50,50)인 클리핑
영역이라고 한다. 만약 좌표중심을 (0,0)으로 만들고 싶다면 x축과 y축의 +영역좌표와 -영역좌표를 대칭형으로 만들어야한다.
* 뷰포트란, 화면의 좌측 하단이 0,0으로 기준을 두고 우리가 눈으로 보는 윈도우 창에서 임의의 크기를 할당해서 이미지 작업을 할 수 있는 화면에서의 실질적인 이미지 작업 영역를 이야기한다. 클리핑과 연관지어 이야기하면, 클리핑을 화면에 적용시키는 영역으로 말할 수 있겟다. 이 뷰포트는 보통 창 전체를 설정해두고 작업하지만, 특수한 경우 화면의 구성을 서로 다른 이미지로 구성해야한다면, 뷰포트를 나누어서 작업할 수 있다.
* 고등학교 기하와 백터단원을 배울 때 projection(투영)을 배웠을 것이다. 이때 배운 투영이란, 직교 투영으로 2차원으로 구성된 면에 수직한 축을 기준으로 도형을 구성하는 점들을 면으로 수직하게 내리는 것을 말한다. 직교투영의 특징은 물체가 멀리있는가 없는가에 상관없이 같은 크기 비율로 표현이 된다는 점이다.
* openGL의 내부는 상태들의 변화를 통해서 작동하는 기계상태로 동작한다.
- 토비의스프링3/오브젝트와의존관계 . . . . 37 matches
* 간단히 빈이라고도 한다.
* getter와 setter를 통해 조회, 수정할 수 있는 프로퍼티를 가진 오브젝트를 의미한다.
* 기능이 정상적으로 작동한다
* 어플리케이션이 폐기처분될 때까지 오브젝트 설계와 코드는 끊임없이 변한다. 그렇다면 변화에 어떻게 대비할 것인가?
* DB 커넥션을 가져오는 방식이 바뀌면 수백군데를 하나하나 수정해야한다.
* 커넥션을 가져오는 중복된 코드를 분리한다.
* 리팩토링 후 기능의 변화가 없는지 검증해야 한다. 테스트 코드가 이를 검증해 준다.
* 클래스 분리에서 가장 중요한 점은 두 클래스가 낮은 결합도를 가져야 한다는 것이다.
* 코드의 크기가 작고 간단해도 클래스와는 다른 독립적인 관심사를 가지고 있다면 분리해야한다.
* 오브젝트와 오브젝트간의 관계설정을 의미한다.
* 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다
* 변화가 일어날 때 해당 모듈에서 변하는 부분이 크다는 것을 의미한다.
* 결합도란 하나의 오브젝트가 의존관계에 있는 다른 오브젝트에게 변화를 요구하는 정도를 의미한다.
* 관심사의 분리 - 오브젝트를 생성하는 쪽과 생성된 오브젝트를 사용하는 쪽을 분리하는 역할을 한다.
* 오브젝트 생성 코드 반복을 분리한다
* 제어 권한을 다른 대상에게 위임한다.
* 라이브러리는 애플리케이션이 능동적으로 사용한다.
* 프레임워크는 분명한 제어의 역전 개념이 적용되어 있어야 한다.
* 빈 팩토리(bean factory) : 빈의 생성과 관계설정 등의 제어를 담당하는 IoC오브젝트. 스프링의 IoC를 담당하는 핵심 컨테이너. 일반적으로 직접 사용하지 않고 이를 확장한 애플리케이션 컨텍스트를 사용한다.
* 애플리케이션 컨텍스트(application context) : IoC방식을 따라 만들어진 일종의 빈팩토리. 별도의 정보를 참고해서 빈의 생성, 관계설정 등의 제어 작업을 총괄한다. 설정 정보를 따로 받아와서 이를 활용하는 IoC엔진이라고 볼 수 있다. 주로 설정에는 xml을 사용한다.
- 시간관리인생관리/요약 . . . . 36 matches
- 성공적으로 완수하면, 다음날 할 또 다른 일을 정하고 약간만 더 어렵게 하라. 충분히 그 일을 할 수 있어야 한다.
- 난이도를 약간 낮춰서 두 가지 일을 모두 할 수 있게 한다.
* 삶을 성공적으로 관리하는 사람들은 그렇지 못한 사람들과 아주 다르게 일을 한다.
|| 좋은 시스템이 있지만, || 시스템이 없거나 나쁜 시스템을 사용한다. ||
|| 행동으로 두려움에 반응하지만, || 회피로써 두려움에 반응한다. ||
* 모든 항목에 '''충분한''' 관심을 주어서 그것을 제대로 할 수 있게 해야 한다. 역시 합은 100이 되도록 하라
==== 흐름에 따라가려면 우리의 삶이 제대로 흘러가게 만드는 탄탄한 구조가 있어야 한다. ====
* 더 많은 시간을 원한다면 제일 먼저 시간과 결합된 것을 보아야 한다.
* 늘 자신에게 특정한 모임이나 시간 약속이 얼마만큼의 가치를 갖는지 묻고 나서 그것에 참석하거나 실행하라.
* 우리가 안고 있는 문제 하나는 깊이 대신에 넓이를 추구한다는 점이다. 점점 더 '''많은''' 것을 점점 더 '''엷게''' 추구하는 경향이 있다.
* 10가지 이하의 일들을 위와 같은 방법으로 한다. 이제는 그 일들을 종이에 적는다.
* 각 일들이 끝나고 쉬는 시간에 시간이 부족하다면 늘리도록 계획한다. 예를들어
* 일정한 시간이 끝나면 그동안 적었던 것을 잠시 평가한다. 행동이 필요한 것이 무엇인지 확인한다.
1. 현상을 파악한다.
서류가방/영사기/화면/케이블 을 확인한다.
책/파일/문구류/서류들 을 확인해서 정리한다.
* 필요한것은 해야만 한다.
* 작은 문제도 큰문제 못지 않게 중요할수 있다. 너는 반드시 네가 하는 일의 모든 분야를 돌아가면서 해야 한다. 네 관심을 순환시켜야 한다.
* 우리는 도전적인 것들에 저항한다.
* 저항감은 대개 당신이 무언가를 해야 한다는 신호이다.
- AcceleratedC++/Chapter11 . . . . 35 matches
실제로 클래스를 제작할 경우에는 클래스의 생성, 복사, 대입, 소멸의 고려하여 설계되어야한다.
클래스를 설계할때에는 우선 인터페이스를 결정해야한다. 인터페이스의 결정에는 실제로 그 객체를 이용한 프로그램을 작성해보는 것이 좋다.
여기서는 '''template class'''를 이용한다.
begin, end, size 함수를 구현해야 하므로 이러한 작업을 위해서 '''첫 요소의 주소, 마지막 요소를 하나 지난 주소, 요소들의 개수'''를 저장할 수 있어야한다.
size는 begin, end 를 통해서 그 크기를 구하는 것이 가능하므로 여기서는 '''첫 요소의 주소, 마지막 요소를 하나 지난 주소'''를 저장하고 개수는 계산을 통해서 구현한다.
템플릿은 단지 틀일 뿐이며, 사용할때 type parameter로 준 형에 따라서 실제의 클래스를 생성한다.
앞의 인터페이스 명세에서 아래의 2가지를 가능하게 하도록 했기 때문에 생성자 2개는 최소한 구현해야한다.
// 표준 vector 클래스는 크기와 함께 초기화 요소를 인자로 받는 생성자도 제공한다.
2번째 생성자는 초기화의 인자로 인자 파라메터인 T의 생성자를 이용한다.
Vec<int> vi = 100; // not working. 암묵적으로 Vec를 생성하고 그 값을 vi 에 복사한다. refer 11.3.3
상기의 연산을 가능하게 하기 위해서는 operator[], size() 함수를 정의 해야한다.
만약 멤버 함수로 연산자가 정의 되어 있다면 좌측 피연산자는 함수를 호출한 객체로 간주되고 오버로드 연산자는 인자로 우측의 피연산자만을 인자로 취한다.
사실 이렇게 상세한 객체의 행동양식을 규제할 수 잇는 언어로는 C++이 유일하다. (그만큼 클래스를 작성할때 많은 것들이 고려되어야한다.)
복사 생성자는 생성자의 이름은 기타 생성자와 같으나 인자로 자신이 호출된 객체의 타입을 갖는 생성자를 의미한다.
보통 디폴트 복사 생성자의 경우에는 클래스의 멤버 변수들을 단순히 복사만 하게 됩니다. 이때 만약 그 멤버 변수가 포인터의 형태라고 한다면 문제가 발생하게 된다.
operator=() 의 여러가지 인스턴스중에서 인자로 자신의 클래스 형 자체에 대한 const 레퍼런스를 취하는 형태를 대입연산자라 칭한다.
리턴값을 C++ 기본 대입연산자와의 일관성의 유지를 위해서 연산자의 외쪽항(left-hand side)에대한 레퍼런스를 취한다.
대입 연산자는 복사 연산자와 달리 왼쪽항을 제거하고 새로운 값으로 대체시킵니다. 복사 생성자는 수행 시점에 왼쪽항의 객체가 처음 만들어진 상태이기 때문에 해제할 대상이 없지만, 대입 연산자는 기존데이터가 있는 상태에서도 대입을 할 수 있기 때문에 복사 생성자와 비슷하게 구성되어야 한다.
this는 멤버함수 안에서 유효하다. this는 멤버함수를 호출시킨 객체의 포인터를 리턴한다.
지역 객체에 대한 리턴을 해서는 안된다. 지역 객체를 리턴하면 객체의 존재 scope를 벗어나기 때문에 올바른 동작을 보장하지 못한다.
- Bigtable기능명세 . . . . 33 matches
1. source는 target에게 정해진 갯수만큼의 태블릿을 리스트로 이름전달 ( 연속된 태블릿을 전달한다)
1. 마스터는 주기적으로 TS들의 태블릿 리스트를 스캔한다.
1. target들을 정한다. (어떤 기준으로? 몇개나?)
1. traget들에게 직접 태블릿 리스트를 전달한다.
1. source는 target에게 성공 메세지를 받으면 자신의 태블릿 리스트에서 전달한 태블릿들을 삭제한다.
1. source는 마스터에게 성공 메세지를 보내 마스터를 업데이트한다.
1. 마스터는 메타태블릿을 업데이트한다.
1. 로드 밸런싱 중간에 target이 다운된다면 : 마스터는 로드밸런싱을 위해 다른 target을 선택. 이후 TS 복구를 한다.
태블릿의 삽입(혹은 split)이 있을 때마다 마스터(또는 TS 스스로)가 b+ 트리를 갱신한다.
마스터의 스캔요청에 대한 응답. TS가 관리중인 모든 태블릿의 리스트를 마스터에게 전달한다.
1. TS가 자신이 관리하고 있는 태블릿의 리스트들을 전달한다.
1. B+트리에서 원하는 row를 가지고 있는 TS를 탐색
1. 검색결과들을 '''merge'''한다.
그러나 compaction시에는 모든 수정작업이 중지되므로 로그는 적절히 커야한다.
1. memtable이 copaction으로 sstable이 되면 해당 sstable의 로그는 삭제되어야 한다.
신규 TS는 Locker에 자신의 정보를 등록한다
Locker는 잠금파일을 이용해 TS를 관리한다.
1. Locker에 자신의 정보를 등록한다
마스터 서버는 클러스터 내에 하나만 존재한다.
1. 정렬된 로그에서 특정 TS의 로그를 재실행(redo)한다.
- 프로그래머의길 . . . . 33 matches
프로그래머는 화가와 같다. 화가의 그림에 대한 영감이 프로그래머의 코드에 대한 영감이며, 화가의 화판은 프로그래머의 자판인 것이다. 단지 프로그래머는 화가가 사용하는 붓대신 손을 이용한 코딩을 한다는 차이점 뿐이다. 맨처음 코딩에 대한 영감은 단순하게 시작한다. 하지만 그 영감을 현실속으로 끌어내기 위해서는 많은 시행착오를 거치게 된다. 자신의 실력을 한탄하기도 하면서 자신이 만들어낸 알고리즘에 흠뻑 취하기도 한다.
이와 반대로 이상을 선택하는 프로그래머는 그 다음부타 자신과의 싸움이 시적된다. 끈기 바로 이것이다. 흔히 우리는 능력이 탁월한 사람보다는 성실한 사람을 더 높이 평가해중다. 프로그래머 역시 끈기가 없으면, 완성도 높은 프로그램을 만들지 못한다. 자신이 만든 알고리즘이 아무리 탁월하다고 해도 이를 이용한 애플리케이션의 완성도가 높지 않으면, 아무리 탁월하다고 해도 이를 이용한 애플리케이션의 완성도가 높지 않으면, 아무도 알아주지 않는다. 필자는 수많은 디버깅과 요구사항을 수용해 나가면서 자신의 이상을 실현해 나가는 프로그래머를 높이 평가하고 싶다. 그리고 그러한 사람이야말로 발전 가능성이 있으며, 신뢰할 수 있는 프로그램을 만들기 때문이다.
사실 완벽한 코딩이란 존재하지 않는다. 다만 완벽을 위해 프로그래머는 키보드를 애인으로 삼을 뿐이다. 끈기있게 코드를 디버깅하는 프로그래머는 그만큼 버그의 수를 줄일 수 있고, 또한 추가 요구사항에 대한 대비도 충분히 할 수 있다. 따라서 필자는 프로그래머란 정열보다는 끈기가 더 필요하다고 말하고 싶다. 정말 진정한 프로그래머란 자신의 역량보다는 한 주제에 대한 완벽에 가까운 해결책을 찾아내는 끈기있는 사람이라고 생각한다. 우리 모두 학창시절 어려운 수학문제를 풀던 때를 생각하면서, 그 의미를 되새겨보자.
사람은 누구나 어떤 일을 하든 넘어야 할 벽을 만나기 마련이다. 프로그래머역시 여러가지 벽을 만나게 되는데, 필자는 컴퓨터의 벽을 크게 '''이해의 벽'''과 '''창조의 벽''', 그리고 '''마음의 벽'''으로 구분하고자 한다. '''이해의 벽'''은 초보자가 넘어야 하는 벽이고 '''창조의 벽'''은 중급자가, 그리고 마지막 벽인 '''마음의 벽'''은 전문가가 넘어야 하는 벽이다.
이 글을 읽고 있는 독자라면 어느 정도 프로그래밍을 해본 경험이 있을 것이다. 초보자라 함은 프로그래밍에 입문하고자 하는 사람을 말한다. 즉 컴퓨터 사용부터 천천히 배워나가고 있는 사람들이다. 이들은 특정 학원 혹은 학교의 정규 과정을 통해 동료들과 함께 배우기도 하고, 또는 개인적으로 학습해 나가는 경우도 있다. 초보자들의 공통점은 전문가들의 논쟁을 아직 이해 할 수는 없지만큰 관심을 갖고 있으며, 컴퓨터로 모든 일이 가능할 것이라는 부푼 기대에 차있다는 것이다. 여기서 그들의 기대감이 문제시 된다. 기대가 크면 클수록 돌아오는실망감은 비례한다.바로 컴퓨터로 할 수 있는 일이 한정돼 버리는 시점에서 더 이상의 진전이 없게 되는 것이다.
초보자 들 중 주위 사람들 보다 좀더 많은 내용을 알고 있다는 자만심을 갖고 있는이들이 특히 그럴 확률이 높다. 이들은 일종의 유틸리티를 이용해 남들이 하지 못하는 기법을 익혀 이를 자랑하면서 우월감에 사로 잡히게 된다. 하지만 그러한 우월감은 그리 오래 가지 않는다. 자신보다 더 뛰어난 전문가를 만나면 '도대체 내가 무엇을 하고 있는가?'하는 반문이 생기기 때문이다. 여기서 이들은 '이해의 벽'을 피부로 느끼며, 컴퓨터를 이용한 새로운 도전을 받아들이게 된다. 물론 이 시점에서 이해의 벽을 뛰어넘지 못하는 이들도 있을 것이다.하지만 프로그신머의 길을 걸어가기를 원하는 이는 자신에게 닥친 상황을 돌파하기 위한 해결책을 찾는다. 이것이 바로프로그램이다. 필자는 이들에게 이렇게 말하고 싶다.
"프로그래밍이라는 것은 단순히 코딩한다는 의미보다는 컴퓨터를 이해한다는 의미로 받아들여야 한다."
프로그램은 컴퓨터가 이해할 수 있는 기계어를 사람이 좀더 쉽게 알아볼 수 있도록 만든것에 불과하다 이를 다시 표현하자면, 기계와 언어소통하기 위해 프로그램을 배운다는 것이다. 우리는 외국어를 공부하면서 문화적 이질감으로 인해 단어의 의미를 파악하기 힘들때가 종종 있다. 이는 그 나라의 풍습과 역사를 이해하지 못하기 문이다. 컴퓨터도 마찬가지 이다. 컴퓨터를 이해하지 못하면 프로그램 역시 서투른 번역이 돼버린다. 다시 한번 논하지만, 프로그램을 배우는 과정을 컴퓨터를 이해한다는의미로 받아들이면 좀더 쉽게 중급자의 길로 도약할 수 있을 것이다.
그렇다면 이 정도의 실력을 갖추기 위해서는 어떻게 해야할까? 아마도 많은 독자들이 궁금해하는 문제일 것이다. 정확한 해답이 있을 수 없는 질문이다. '''영어에 왕도는 없다'''라는 표현을 빌어 '''프로그램에는 왕도가 없다'''라고 표현하는 것이 정답일 것이다. 하지만 왕도는 없지만 방법은 있다. 바로 '''자신이 할 수 있다고 판단하는 것보다 항상 더 많은 일을 만들어 내라는 것이다.''' 의미는 도전 정신이 필요하다는 뜻이다. 예를 들어 자신에게 주어진 일이 10만큼의 크기라면 자신의 목표를 20정도로 세우는것이다. 그러면 10만큼도 하기 벅차다고 느끼던 것이 어느날 목표한 10을 이루고 20으로 다가가고 있는 자신을 발견하게 될것이다. 만약 목표한 10도 이루지 못했다고 해서 실망하지는 말자. 돌이켜 보면 프로젝트가 실패했다고 해서 잃는 것보다는 얻은 것 더 많다는 것을 알게 될것이다. 필자는 중급자의 벽인'창조의 벽'을 해결하기 위해서는 무엇보다도 도전 정신이 필요하다고 주장하고 싶다.
인간의 욕심은 끝이 없다는 표현이기도 한 이 말이 '어떻게(어떤게? - 문맥상 어느게 더 어울릴까요 - 오타수정하던 임인택) 프로그래머들이 가져야 할 자세인가'라고 반문하는 독자들이 있을 것이다. 지금까지 프로그래머의 길을 연재해 오면서 필자는 프로그래머라면 욕심을 갖고 있어야 한다고 강조했고, 또한 도전정신에 의해 그 욕심을 실현하라고 표현했다. 그렇다면 역설적인 표현이 아닌가!
만약 이와 같이 생각한 독자가 있다면 필자가 의도하는 내용을 정확하게 파악한 것이 아니다. 버리라고 표현한 것은 자기 자신이 가지고 있는 생각, 즉 프로그램에 대한 생각을 버리라는 것이다. 우리 인간은 변화에 대한 불안함을 내포하고 있다 특히 나이가 들수록 그 정도는 심화되고, 젊은 사람들의 사고를 이해하기보다는 왜곡됐다고 평하게 된다. 이는 그 사람의 가치관이 고정돼 버렸기 때문에 자신의 사고와 일치하지 않는 다른 모든 행동을 잘못됐다고 생각한다.
프로그래머들이 가장 쉽게 빠져드는 유혹이 바로 이런 점이다. 자신이 지금까지 프로그램을 해도던 방식이야말로 정석이며, 진리라고 생각한다. 컴퓨터는 하루가 다르게 변하고 있지만 아직까지도 구시대 유물이 전부라고 생각한다. 필자는 단호하게 말하고 싶다.
자신이 지금까지 작성한 코드를 버린다는 것은 실로 엄청난 일이다. 하지만 프로그래머라면 자신이 만든 코드를 자기 자신의 관점이 아닌 다른 관점에서 자신의 코드에 대해 비평할 수 있는 능력을 키워야한다. 이러한 비평은 자신에 대한 코딩 가치관의 변화를 가져야한다느 것이고, 변화의 물결에 동참할 수 있어야 한다는 뜻이다.
그렇다면 어떤 시점에 코드를 버려햐 하는가? 필자는 크게 두 가지 시점에 대해 논하고자 한다. 첫번째 시점은 프로젝트를 진행하고 있는 과정에서 발생한다. 정확하게 표현하면, 새로운 기능의 가능성을 타진해 보는 프로토타입 프로그램을 완성한 시점이 된다. 소프트웨어 공학에서 설계의 중요성을 강조하기 위해 객체지향이라는 패러다임을 만들 만큼 코딩이전의 설계 단계를 강조하고 있다 물론 잘 작성된 프로그램 설계는 프로토타입이라는 중간 프로그램 생성이 필요 없이 설계 명세서에 의한 코딩만 하면 완벽한 응용 프로그램을 개발할 수 있다.
하지만 필자의 경험에 미뤄보면 이러한 경우는 업무 자동화와 같은 특정한 형식이 있는 응용 프로그램에 적용된다. 만약 프로젝트 설계자가 경험이 없는 응용 프로그램을 만들어야 한다는 가정을 두면 상황은 반전된다. 즉 설계자의 미경험에 의한 시행착오가 발생하는 것이다. 이러한 시행착오를 줄이는 방법이 새로운 기술에 대한 프로토타입의 개발이기는 하지만, 프로토타입으로 끝나야 한다. 하지만 우리의 실정은 아직까지도 프로토타입을 완성된 프로그램으로 생각하고 있는 경향이 지배적인것 같다.
코드를 버러야 하는 두번째 시점은 완성된 프로그램의 버젼 업그레이드에서 발생한다. 첫번째 경우보다 더 많은 용단을 필요로 하는 시점이기도 하다. 응용 프로그램의 버전업은 이미 만들어진 응용 프로그램에 사용자의 추가 요구사항을 수렴해서 개발한다는 의미와 이전 버전에서 발생된 문제점을 해결한다는 의미를 동시에 가지고 있다. 간혹 사용자의 추가 요구사항이 프로그래머가 상상할 수 없는 경우일 때도 있다. 그 모든 요구사항을 다 수렴해 프로그램을 만들수 는 없기 때문에 프로그래머는 타협점을 찾아 다음버전의 기능을 제한시키게 된다.
바로 사용자와 프로그래머 사이에서 발생되는 타협점을 결정하는 시점에서 프로그래머의 마음 가짐이 능동적인 자세인지 수동적인 자세인지 따라 코딩의 방향이 결정된다. 능동적이고 적극적인 프로그래머는 사용자의 요구사항을 검토해 참신한 아이디어일 경우 이를 적극 수렴한다. 하지만 수동적인 프로그래머는 현재 버전에서 지원될수 있는 사항만을 검토하는 성향이 있다.
프로그래머들이 이 시점에서 생각하는 것은 시간이다. 주어진 시간에 어떻게 그 기능을 추가할 것인가를 걱정한다. 너무 많은 코드의 변화는 주어진 시간에 완성할 수 없다는 것이다. 따라서 적당한 타협점을 찾는 것이 프로그래머의 보편적인 경향이다. 하지만 사용자의 요구사항을 수렴하는 방향으로 전환한다면, 프로그래머는 자신의 코드를 다시 한번 생각하게 될것이다. 필자는 이것을 바라는 것이다. 지신의 코드를 다시한번 돌이켜 보면 , 자신의 오류를 찾을수 있고, 또 사용자들이 바라는 방향을 예측할 수 있게 된다. 바로 이것이 완벽에 가까운 코드를 작성하는 방법일 것이다.
한정된 시간안에 이미 작성된 코드를 버리는 것이 낭비란 생각하지 말자. 코드를 버리고 다시 작성한다고 이전 만큼 시간이 많이 소비되지는 않는다. 만약 프로그래머가 10일 동안 작성한 코드를 겸허한 마음으로 다시 작성한다면 2일에서 4일 안에 더 좋은 코드를 작성할 수 있을 것이다. 물론 코드를 버리고 다시 작성하기 때문에 시간이 더 필요한 것은 사실이다. 하지만 시간에 종속된 코드가 아닌 시간을 지배하는 코드를 만든다는 신념으로 생활하자. 모든 프로젝트의 시간은 유동적일수 있다. 코딩은 사람이 하는 창조적인 작업이기 때문에 그 누구도 시간을 예측할 수는 없다. 다만 자기 자신 스스로 잘못된 부분을 찾아 수정해 잘 다듬은 코드를 보면 나름대로 누구도 느껴보지 못한 자신감이 생길 것이다.
- TAOCP/BasicConcepts . . . . 31 matches
(m과 n을 모두 나누는 가장 큰 양의 정수)를 구한다.
E3. [줄이기] m <- n, n <- r 으로 설정한다, 그리고 E1단계로 돌아간다.■
E0. [m >= n 인지 확인하기] m < n 이라면, m <-> n 을 교환한다
알고리즘은 유한한 단계 후에 항상 종료되어야 한다
알고리즘의 각 단계는 정확히 정의되어야 한다
Ω의 모든 원소 q에 대하여 f(q)는 q와 같아야 한다.
집합 I의 원소 x의 입력은 계산수열, x0, x1, x2,..., 를 다음과 같이 정의한다
Ω에 속하는 xk 에 대하여 k가 가장 작은 정수라면 계산수열은 k단계에서 종료된다고 한다. 그리고 이 경우에 x로부터 결과 xk가 생성된다고 한다.
이 책의 수많은 부분에서 MIX언어가 등장한다. 따라서 독자는 이 절을 주의 깊게 공부해야 한다.
필드 제한이 주어질 수 있다. 형식은 (L:R)이다. (L~R의 범위를 뜻한다.)
여기서 더해진 주소를 M, M에 들어있는 값을 CONTETNS(M)이라고 한다.
사칙연산을 한다. ADD, SUB, MUL, DIV가 있다.
레지스터와 CONTENTS(M)을 비교해서 LESS, GREATER, EQUAL을 설정하는 명령어이다. CMPA, CMPX, CMPi가 있다. CMPi를 할 때는 앞에 세 자리가 0이라고 가정한다.
M이 가리키는 메모리 셀로 점프한다. JSJ를 빼면 점프를 하면서 점프 명령어 다음 위치를 rJ에 저장한다. the comparison indicator를 이용하거나(JL, JE, JG, JGE, JLE, JNE) , 레지스터(JrN, JrZ, JrP, JrNN, JrNZ, JrNP)를 이용한다.
시프트 명령은 rA와 rX를 사용한다. SLA, SRA, SLAX, SRAX, SLC, SRC가 있다. M은 시프트하는 횟수를 나타낸다.
MOVE명령은 F만큼 CONTENTS(M)을 rI1이 가리키는 메모리 셀로 값을 복사한다.
NUM은 rAX를 가지고 숫자로 바꾸어 rA에 저장한다. 각 바이트가 한 자리로 바뀌는데, 일의 자리만 가지고 바꾼다(10 -> 0, 23->3 )
CHAR는 rA를 가지고 문자 코드로 바꾸어 rAX에 저장한다.
MIX 프로그램의 예제를 보여준다. 중요한 순열의 성질(properties of permutations)을 소개한다.
''해설 : a가 c로 바뀌는 것(a goes to c)을 a->c라고 표시한다. 따라서 위의 표현은 a->c->f->a, b->d->b를 나타낸다.e->e같이 변하지 않는 것은 생략한다.''
- Gof/State . . . . 30 matches
객체의 내부 상태가 바뀌었을 때 객체의 행동을 바꿀 객체를 허용한다. 객체는 마치 객체의 클래스가 변경된 것처럼 보일 것이다.
네트워크 커넥션을 나타내는 TCPConnection 라는 클래스를 생각해보자. TCPConnection 객체는 여러가지의 상태중 하나 일 수 있다. (Established, Listening, Closed). TCPConnection 객체가 다른 객체로부터 request를 받았을 때, TCPConnection 은 현재의 상태에 따라 다르게 응답을 하게 된다. 예를 들어 'Open' 이라는 request의 효과는 현재의 상태가 Closed 이냐 Established 이냐에 따라 다르다. StatePattern은 TCPConnection 이 각 상태에 따른 다른 행위들을 표현할 수 있는 방법에 대해 설명한다.
StatePattern 의 주된 아이디어는 네트워크 커넥션의 상태를 나타내는 TCPState 추상클래스를 도입하는데에 있다. TCPState 클래스는 각각 다른 상태들을 표현하는 모든 클래스들에 대한 일반적인 인터페이스를 정의한다. TCPState의 서브클래스는 상태-구체적 행위들을 구현한다. 예를 들어 TCPEstablished 는 TCPConnection 의 Established 상태를, TCPClosed 는 TCPConnection 의 Closed 상태를 구현한다.
TCPConnection 클래스는 TCP 커넥션의 현재 상태를 나타내는 state 객체를 가지고 있다. (TCPState 서브클래스의 인스턴스) TCPConnection 은 이 state 객체에게 모든 상태-구체적 request들을 위임 (delegate) 한다. TCPConnection 은 커넥션의 특정 상태에 대한 명령들을 수행하기 위해 TCPState 서브클래스 인스턴스를 이용한다.
커넥션이 상태를 전환할 경우, TCPConnection 객체는 사용하고 있는 state 객체를 바꾼다. 예를 들어 커넥션이 established 에서 closed 로 바뀌는 경우 TCPConnection 은 현재의 TCPEstablished 인스턴스를 TCPClosed 인스턴스로 state 객체를 교체한다.
다음과 같은 경우에 StatePattern 을 이용한다.
* 클라이언트들이 원하는 인터페이스를 정의한다.
* Context 의 특정 상태와 관련된 행위들을 캡슐화 하기 위한 관련 인터페이스를 정의한다.
* 각각의 서브클래스들은 Context의 상태들과 관련된 행위들을 구현한다.
* Context는 상태-구체적 request들을 현재의 ConcreteState 객체에 위임한다.
일단, 우리는 TCPConnection 클래스를 정의한다. TCPConnection 은 데이터를 전달하고 상태 전환을 위한 request를 다루는 인터페이스를 제공한다.
TCPConnection 은 _state 멤버변수를 이용, TCPState 의 인스턴스를 유지한다. TCPState 클래스는 TCPConnection 의 상태-전환 인터페이스를 중복하여 가진다. 각각의 TCPState 명령들은 TCPConnection 인스턴스를 인자로서 취하며, TCPState 로 하여금 TCPConnection 으로부터 데이터를 접근하거나 현재 커넥션의 상태를 전환할 수 있도록 한다.
TCPConnection 은 상태-구체적 request들으 TCPState 인스턴스인 _state 에 위임한다. TCPConnection 은 또한 이 변수를 새로운 TCPState 로 전환하는 명령을 제공한다. TCPConnection 의 생성자는 _state를 TCPClosed 상태로 초기화한다. (후에 정의된다.)
TCPState 는 위임받은 모든 request 에 대한 기본 행위를 구현한다. TCPState는 또한 ChnageState 명령으로써 TCPConnection 의 상태를 전환할 수 있다. TCPState 는 TCPConnection 의 friend class 로 선언되어진다. 이로써 TCPState 는 TCPConnection 의 명령들에 대한 접근 권한을 가진다.
TCPState의 서브클래스들은 상태-구체적 행위들을 구현한다. TCP 커넥션은 다양한 상태일 수 있다. Established, Listen, Closed 등등. 그리고 각 상태들에 대한 TCPState 의 서브클래스들이 있다. 여기서는 3개의 서브클래스들을 다룰 것이다. (TCPEstablished, TCPListen, TCPClosed)
각각의 TCPState 서브클래스는 해당 상태에 알맞는 request 에 대한 상태-구체적 행위들을 구현한다.
상태-구체적 작업들이 수행된 뒤, 이 명령들은 TCPConnection 의 상태를 전환하기 위해 ChangeState 명령을 호출한다. TCPConnection 은 TCP 커넥션 프로토콜에 대해 모른다. TCP에 대한 각각의 상태전환과 행동들을 정의하는 것은 TCPState 서브클래스들이다.
대부분의 대중적인 상호작용적인 드로잉 프로그램들은 직접 조작하여 명령을 수행하는 'tool' 을 제공한다. 예를 들어, line-drawing tool 은 사용자가 클릭 & 드레그 함으로서 새 선을 그릴 수 있도록 해준다. selection tool 은 사용자가 도형을 선택할 수 있게 해준다. 보통 이러한 툴들의 palette (일종의 도구상자 패널)를 제공한다. 사용자는 이러한 행동을 'tool을 선택한 뒤 선택한 tool을 이용한다' 라고 생각한다. 하지만, 실제로는 editor 의 행위가 현재 선택한 tool로 전환되는 것이다. drawing tool 이 활성화 되었을 때 우리는 도형을 그리고 selection tool 이 활성화 되었을 때 도형을 선택할 수 있는 식이다. 우리는 현재 선택된 tool 에 따른 editor 의 행위를 전환시키는 부분에 대해 StatePattern 을 이용할 수 있다.
* FlyweightPattern 은 State객체들이 언제 어떻게 공유되는지 표현한다.
- 작은자바이야기 . . . . 30 matches
* 튜터가 생각한 이 스터디의 "무엇을?", "어떻게?", "왜?"를 자세히 소개하고, 튜티들이 원하는 "무엇을?", "어떻게?"에 대한 이야기를 나눴습니다.
* "왜?"에 각자 서브섹션을 나누어 자신이 이 스터디를 통해 원하는 것을 적고, 스스로에게 동기부여를 해봅시다.
* 제가 "원래 모든 함수가 static"이라는 의미로 말한건 아닌데 오해의 소지가 있었나보군요. 사실 제가 설명한 가장 중요한 사실은 말씀하신 예에서 object의 컴파일 타입의 method() 메서드가 가상 메서드라면(static이 아닌 모든 Java 메서드), 실제 어떤 method() 메서드를 선택할 것이냐에 관한 부분을 object의 런타임 타입에 의한다는 부분이었지요. 그러니까 object는 컴파일 타입과 동일하지 않은 런타임 타입을 가질 수 있으며, 다형성의 구현을 위해 implicit argument인 object(=this)의 런타임 타입에 따라 override된 메서드를 선택한다는 사실을 기억하세요. (Python에선 실제 메서드 내에서 사용할 formal parameter인 self를 explicit하게 선언할 수 있다고 보면 되겠지요.) - [변형진]
* Data 부분을 인터페이스로 분리 - 내부에서 FactoryMethod 패턴을 사용. factory를 통해서 객체를 생성한다. new를 사용하지 않기 때문에 구체 클래스를 숨길 수 있다.
* 값을 가져오는 함수를 getProperty와 get의 두 가지를 제공한다.
* 인코딩 문제의 차이. 인코딩 문제를 해결하기 위해서 Reader, Writer를 만들었다. Reader는 인코딩 정보를 들고있어야 한다.
* abstract factory를 잘 쓰기 위해서는 인터페이스에 api가 잘 설계되어 있어야 한다.
* 위와 같은 체인식의 문법으로 설정을 추가해가며 마지막에 객체를 생성하는 방식을 사용한다.
* map에서 자료를 가져와서 equals로 비교를 할 때 url은 실제로 가져온 내용이 같은지 비교하고 uri는 식별자가 같은지만 비교한다.
* url과 uri는 서로 toURI, toURL을 지원한다.
* strategy 패턴은 전체적인 틀(logic)이 짜여져 있고 그 안에 특정 행동을 확장하기 위해 전략 객체를 사용한다.
* strategy 패턴은 인터페이스로 만들어 둔 전략 객체 클래스를 구현(implementation)하는 방식으로 행동을 확장한다.
반면에 template method 패턴은 부모 클래스에서 전체적인 틀을 만들어 두고 행동에 해당하는 메소드를 상속 + 오버라이드 해서 확장한다.
* tomcat은 servlet container지만 glassfish는 WAS(web application server)에 해당한다.
* tomcat에 servlet을 배포하는 것은 servlet을 구성하고 있는 클래스를 tomcat의 클래스패스에 집어넣는 것을 말한다. java의 특성 상 tomcat이 실행된 이후에 클래스패스에 나중에 추가된 클래스를 집어넣어서 동적 로딩을 할 수 있다.
* servlet 클래스의 로딩 순서 : jvm에서 tomcat의 main클래스를 진입점에 로딩한다 -> deployment description에 언급되어있는 servlet클래스를 tomcat의 진입점에 로딩한다.
* template method 패턴이 사용됐다. protected로 선언된 service method가 template method에 해당되는데 abstract가 아닌 이유는 기본 구현을 주고 원하는 호출에 대해 오버라이드를 해서 사용하기 위함이다.
* filter, servlet은 하나의 객체를 url에 매핑해서 여러 스레드에서 쓰이는 것임. 따라서 thread-safe 해야 한다.
ThreadLocal을 사용한다. ThreadLocal은 각 스레드마다 서로 다른 객체를 들고 있는 컨테이너이다.
* .java 파일에는 클래스 내에 native modifier를 붙인 메소드를 작성하고, .c, .cpp 파일에는 Java에서 호출될 함수의 구현을 작성한다. 이후 System.loadLibrary(...) 함수를 이용해서 .dll 파일(Windows의 경우) 또는 .so(shared object) 파일(Linux의 경우)을 동적으로 로드한다.
- Gof/AbstractFactory . . . . 29 matches
구체적인 클래스를 정의하지 않고서, 연관되거나 의존적인 객체집합을 만들수 있는 인터페이스를 제공한다.
유저인터페이스 툴킷은 다양한 ["룩앤필"] 기준을 제공하도록 고려한다. 다른 룩앤필은 스크롤바, 윈도우, 그리고 버튼처럼 다른 모습과 행동양식의 유저 인터페이스 ["Widget"]을 제공한다. 이식가능한 룩앤필 기준을 위해서는, 개별적 룩앤필 Widget을 위한 어떤 애플리케이션은 ["하드-코드"] 가 아니어야 한다. 즉석으로 정의한 룩앤필 클래스는 나중에 룩앤필을 바꾸기 어렵게 만든다.
이 문제는 기본적인 Widget의 인터페이스를 정의한 abstract WidgetFactory 클래스를 정의함으로써 해결할 수 있다. 또한 모든 종류의 Widget에는 추상클래스가 존재한다, 그리고 구체적인 서브 클래스는 Widget을 상속해서 룩앤필 기본을 정의한다. WidgetFactory의 인터페이스는 각각의 추상 Widget 클래스의 새로운 객체를 반환하는 기능을 가지고 있다. 클라이언트는 이런 기능을 수행해서 Widget 인스턴스를 만든다. 그러나 클라이언트는 사용하는 클래스의 구체적인 내용에 대해서는 신경쓰지 않는다. 이처럼 클라이언트는 일반적인(?) 룩앤필의 독립성에 의존한다.
각각의 룩앤필에는 해당하는 WidgetFactory의 서브클래스가 있다. 각각의 서브클래스는 해당 룩앤필의 고유한 widget을 생성할 수 있는 기능이 있다. 예를 들면, MotifWidgetFactory의 CreateScrollBar는 Motif 스크롤바 인스턴스를 생성하고 반환한다, 이 수행이 일어날 동안 PMWidgetFactory 상에서 Presentation Manager 를 위한 스크롤바를 반환한다. 클라이언트는 WidgetFactory 인터페이스를 통해 개개의 룩앤필에 해당한는 클래스에 대한 정보 없이 혼자서 widget들을 생성하게 된다. 달리 말하자면, 클라이언트는 개개의 구체적인 클래스가 아닌 추상클래스에 의해 정의된 인터페이스에 일임하기만 하면 된다는 뜻이다.
또한 WidgetFactory는 widget 클래스 간의 의존관계를 형성한다. Motif 스크롤바는 Motif 버튼과 Motif 텍스트 에디터와 함께 사용되어야 한다, 그리고 MotifWidgetFactory를 사용함으로써 이러한 의존성이 강제적으로 이루어지게 된다.
* 추상 객체(ProductObject)들을 만드는 기능을 위한 인터페이스를 정의한다.
* 객체(ProductObject)를 만드는 기능을 수행한다.
* 어떤 객체(ProductObject)를 위한 인터페이스를 정의한다.
* 팩토리에 상응하는 객체(ProductObject)를 정의한다.
* 추상 인터페이스(ProductInterface)를 수행한다.
* AbstractFactory에 의해서 정의된 인터페이스와 AbstractProduct 클래스만을 사용한다.
클라이언트는 서로 다른 concrete factory를 사용해야 한다.
* AbstractFactory는 객체(ProductObject)의 생성을 ConcreteFactory의 서브 클래스에 위임한다.
abstract factory는 완벽한 산물의 집합을 생성해 내게되어, 모든 산물의 집합이 한번에 바뀔 수 있게 한다(같은형태의 다른 모습들이므로.. 역자 주).
3. ''산물간의 일관성을 촉진한다.'' 어떤 집합내의 객체들이 서로 협력하도록 고안되었다면, 어떤 어플리케이션은 한번에 단 하나의 집합에서 객체를 사용하는 것이 중요하다.
AbstractFactory는 이것을 쉽게 한다.
4. ''새로운 산물을 지원하는 것이 어렵다.'' abstract factory들을 확장해서 새로운 산물을 생성하는 것은 쉽지 않다.
왜냐하면 AbstractFactory 인터페이스는 생산되어질 산물의 집합을 고정해놓기 때문이다. 새로운 산물을 지원하는 데는 factory의 인터페이스를 확장할 필요가 있다
InterViews 는 AbstractFactory 클래스들을 나타내기 위해서 'Kit'를 접미사로 사용한다. 이것은 WidgetKit과 DialogKit abstract factory 들을 명확한 ["룩앤필"] UI 객체를 위해서 정의한다. InterViews는 또한 서로 다른 복합 객체를 생성하는 LayoutKit 을 포함다. 예를 들면, 어떤 layout은 문서의 방향(인물이나 풍경)에 따른 서로 다른 복합 객체를 개념적으로 정렬한다.
ET++[WGM88]은 다른 윈도우 시스템(예를 들면, X Windows 와 SunViews)간의 호환을 수행하기 위해서 Abstract Factory 패턴을 사용했다. 윈도우 시스템의 추상 base 클래스는 윈도우시스템의 자원 객체(예를 들면, MakeWindow, MakeFont, MakeColor)를 생성할 수 있는 인터페이스를 정의한다. Concrete 서브 클래스는 특정 윈도우 시스템에 인터페이스를 수행한다.
- DataCommunicationSummaryProject/Chapter8 . . . . 28 matches
* 핸드폰을 말한다. (MS mobile station)
* 지면에 장애물에 방해 받지 않기 위해서 높은 위치에 있어야 한다.
* 여러개의 Base Station이 BSC를 같이 사용한다.
* 만약 사용자가 범위 밖으로 이동하면, 그 이동한 곳의 MSC 분별 번호를 대신 저장한다.
* MSC가 포괄하는 범위내의 모든 핸드폰의 지리적인 위치를 임시적으로 저장한다.
* 전화요금이 정확하게 매겨지게 하고, 도난당한 핸드폰의 정보등을 가지고 있어서 도난당한건 사용못하게 하도록 한다.
* 디지털 네트워크에서만 존재한다.
* 2G 핸드폰은 핸드폰만 검증 하지만 3G 폰과 PMR(Private Mobile Radio)는 네트워크도 검증한다.
* TSC는 네트워크에서 보통 매우 적거나 때때로는 하나만 사용되지기도 한다.
* 그것은 모바일 네트워크를 전화 네트워크(PSTN)나 다른 roaming 협약을 맵은 운영자와 연결한다.
* 모바일 데이터도 BST나 BSC와 같이 음성 데이터와 비슷한 조직 체계를 사용한다.
* GPRS 네트워크에서 가장 비싼 부분이 Packet Control Unit(PCU)이다. base station은 패킷 데이터를 위해서 이게 있어야 한다.
* 대부분의 운영자들은 그들이 서비스를 제공하는 영역안에 SGSN들을 설치하여, 점차 거대한 데이터 네트워크를 만들 계획을 한다. 이것이 GPRS Backbone 이라고 알려져 있다.
* 인터넷에서 사용되는 IP와 비슷한 GTP(GPRS Tunneling Protocol)라는 프로토콜을 사용한다.
* X.25도 지원한다.
* The Lawful Interception Gateway(LIG), 당국이 GPRS 네트워크에 있는 이동 데이터를 중간에서 엿보는것을 허락한다.
* GRX Roaming : GPRS Roaming Exchange(GRX) 라고 불리우는 새로운 형태의 서비스 공급자를 사용한다. 이것은 다양한 GPRS 네트워크에서 GTP 트래픽을 운반한다. 더 비싸다
* 망했지만, 이 구조는 4세대 시스템에서 많이 제안된 것과 비슷한다.
* 운영자 자신의 WAP 서비스에 접속하는 대신에, 사용자가 WAP gateway를 호출해서 거기에 직접 접근한다. 이것의 문제는 요청에 대한 요금이다. 운영자의 WAP 서비스가 싼데 비해서 WAP gateway에 접속하는데에는 음성전화와 같은 비용이 든다.
* Gateway 소프트웨어가 이메일 서버에서만 돌아야 한다는 법은 없다. 개별 PC에서도 돌아 가게 할 수 있고, 그경우 장점은 ISP나 법인 서버를 사용하여 어떤 이메일 시스템과도 같이 동작하게 만들 수 있다. 단점은 항상 컴퓨터를 켜 놓아야 한다는 것이다.
- ProjectPrometheus/Journey . . . . 28 matches
* 한동안 PairProgramming 할때 주로 관찰자 입장에 있어서인지. (이상하게도. 창준이형이랑 할때나 상민이랑 할때나. 그나마 저번 르네상스 클럽때는 아무도 주도적으로 안잡아서 그냥 내가 잡긴 했지만, 다른 사람들이 적극적으로 나서지 않을때엔 웬지 그 사람들과 같이 해야 한다는 강박관념이 있어서.)
그동안의 Pair 경험에 의하면, 가장 Pair 가 잘 되기 어려운 때는, 의외로 너무 서로를 잘 알고 Pair를 잘 알고 있는 사람들인 경우인것 같다는. -_-; (Pair 가 잘 안되고 있다고 할때 소위 '이벤트성 처방전'을 써먹기가 뭐하니까. 5분 Pair를 하자고 하면 그 의도를 너무 쉽게 알고 있기에.) 잘 아는 사람들과는 주로 관찰자 입장이 되는데, 잘 아는 사람일수록 오히려 개인적으로 생각하는 룰들을 잘 적용하지 않게 된다. (하는 일들에 대한 Tracking 이라던지, 다른 사람이 먼저 Coding 을 하는중 이해 못할때 질문을 한다던지 등등. 차라리 그냥 '저사람 코딩 잘 되가나본데..'. 오히려 예전에 '문제'라고 생각하지 않았던 부분이 요새 '문제' 로 다가 온다.)
* 대안을 생각중인데, 일종의 Facade 를 만들고, Controller 의 각 service 들은 Facade 만 이용하는 식으로 작성하면 어떨까. 그렇게 한다면 Facade 에 대해서 Test Code 를 작성할 수 있으리라 생각. 또는, Servlet 부분에 대해서는 AcceptanceTest 의 관점으로 접근하는 것을 생각. 또는, cactus 에 대해서 알아봐야 하려나.. --["1002"]
* 문제에 부딪치고, 그 문제가 해결될꺼 같이 보이면서, 아슬아슬 버티면 내일 해결해야 한다. --["상민"]
DB 쯤 되고 나니, Test 들의 보폭을 줄이는게 힘들어지는것 같다. (그리고..; 사람들이 잘 안줄이려고 하는것 같다;) TDD 가 좀 더 활성화되러면 학교 컴퓨터들이 더 빨라져야 한다고 개인적으로 생각중 -_-;
* 목소리를 키울때는 늘 민감함이 앞선다. 처음 목소리를 키우다가 다시 소극적으로 되려고 할때 의자 끌고 Pair 자리에 앉히는 ["상민"]이를 볼때 내가 어린아이같다는 생각도 해본다. 늘 실천보다 불평이 앞서는 1002이기에 -_-; 아쉬운점이라면, 소스의 Complexity 가 높아질수록 Test 의 보폭을 줄이는데 힘들다는점. 오늘 창준이형과 Pair를 하던중. Observer 의 역할일수록 전반적인 숲들을 잘 관찰하고 Driver 를 도와줘야 한다는 점을 되새기면서.
정말로 학교가 우리를 안도와주기로 작정한것 같다. 도서관 서비스 개편된다고 했고 -_-(이는 곧 정규표현식 쓴 부분과 관련하여 재작성하라는 뜻이니;) 게다가 다음주부터 엘리베이터 수리 들어간단다. 경비아저씨에게 5층 신피 열어달라고 부탁하는것에 대해 더 눈치를 봐야 한다는 뜻이 된다; 으어;
* STL 을 쓰면 편리하긴 한데, 확실히 학교컴퓨터에선 컴파일이 느리긴 한것 같다는; (하긴, 우리가 map 에 vector 겹친 형태로 작성을 했으니 -_-..) 그래도 STL Container 만 어느정도 이용해도 기존의 순수 C++ 을 이용할 때보다 훨씬 편하다는 점이 즐겁다. 만일 mock object 를 STL 이나 MFC Collection 없이 구현한다고 생각한다면? 그리 상상하고 싶지 않을 정도이다. (특히 DB에선) 그러면서 느끼는점이라면,
* 예전에 일할때 잘못했었던 실수를 다시하고 있으니, 바로 기획자와의 대화이다. Iteration 이 끝날때마다 개발자가 먼저 기획자 또는 고객에게 진행상황을 이야기해야 한다. 특히 ExtremeProgramming 의 경우 Iteration 이 끝날때마다 Story 진행도에 대화를 해야 한다. Iteration 3 가 넘어가고 있지만 항상 먼저 전화를 한 사람이 누구인가라고 묻는다면 할말이 없어진다. 이번 Iteration 만큼은 먼저 전화하자;
* 'Iteration 3 에서 무엇은 되었고 무엇은 안되었는가?' 지금 Iteration 3 쪽 Task 가 아직도 정리 안되었다. Task 정리를 하지 않고 Iteration 3 를 진행한 점은 문제이긴 하다. (비록 구두로 개발자들끼리 이야기가 되었다 하더라도. 제대로 정리를 한다는 의미에서.) Iteration 3 Task 정리 필요. 그리고 나머지 Iteration 에 대한 Task 들에 대해서 예측할 수 있는것들 (슬슬 눈에 보이니)에 대해 추가 필요.
ZeroPageServer 의 게시판 소스가 JSP 이고 JSP/Servlet runner 가 Resin 이여서 환경설정 부분을 구경할 수 있었다. 그래서 Resin - JDBC 셋팅 부분을 구경하고 손쉽게 할 수 있었다. ZeroPageServer 의 첫 삽을 떠준 선우형에게 감사드리며. 현재 쓰고 있는 글들이 몇달 또는 몇년 뒤 ZeroPagers 또는 익명의 사람들에게 도움이 되었으면 한다.
* Iteration 1 에서 못한 일들을 Iteration 2 로 넘길때는 Iteration 1 에의 Task 를 Iteration 2로 넘겨줘야 한다. Iteration Planning 은 일종의 Time-Box 이다.
* AcceptanceTest 에 대해서는 Customer 가 이해할 수 있도록 코드를 작성한다. 가급적이면 High-Level 로. 간단한 스크립트언어를 작성하는것도 방법이 되겠다.
하지만, 실제로 Library 내부에서는 많은 일들이 작동한다. 즉, keyword 를 해당 HTTP에서 GET/POST 스타일로 바꿔줘야 하고 (일종의 Adapter), 이를 HttpSpider 에게 넘겨주고 그 결과를 파싱하여 객체로 만든 뒤 Client 에게 돌려줘야 한다.
왜냐면, 데블스 캠프 금요일 시간이 끝나고 나서 7층에서 석천이와 UserStory를 따라가며 만들어진 RandomWalk2 CRC의 모습에서는 단 3개만의 클래스만이 존재하였다. 하지만, UserStory를 따라가면서 소스 수준의 코딩을 하면 더 많은 클래스로 분화할것을 기대한다. 즉, 코딩을 하면 어쩔수없이 Layer의 최 하위까지 내려갈수 밖에 없으리라고 본다. 자 그럼 문제는 레이어 일것이다. 다행히 현재 코딩된 부분은 전부 logic의 부분으로 취급하고 있지만, logic 내에서 다시 레이어로 나뉘어서 외부에서 접근할수 있는 인자와 없는 인자로 나뉘어 져야 할것이다. 여기서 잠시 기억되는 말
우리가 처음 망설이던 부분의 CRC가 그런 케이스라고 생각된다. 소스 까지 접근하지 않은체, Layer-Tier를 생각하면서 책임을 부여할때, 나가지 않는 진도에 답답해 하며 꺼낸 메모장이 재미있는 결과를 가져다 주었다. 다음 같은 상황이 되면 스트레스는 훨씬 줄어 들것으로 생각한다.
* 자칫 RDD 에서의 그 세부클래스들에 대해서 너무 많이 생각하면 BUFD(Big Up-Front Design) 이 되리라 생각한다. 차라리 Class 가 2개였을때 코딩 들어가고, 20-30분 정도 코딩뒤 ["Refactoring"] 을 의식적으로 하여 Big Class 에 대해 Extract Class 를 추구하는게 더 빠르지 않았을까.
* TestDrivenDevelopment 의 경우를 추구했다면 어떠했을까. TDD 의 특성상 꼭 필요한 메소드들만 있는 단순한 디자인을 유도한다라는 점에서. 이번의 경우도 Scenario 를 생각하여 프로그램 뼈대를 만들어서인지 주 Interface가 되는 메소드들외에 불필요한 메소드는 적었긴 한데, 그 대신, 신기하리만치 처음 짠 시나리오가 완벽하게 먹히었다란 생각도 든다;
* 말로 걸러지고 글로 걸러지고 하루 지나서 기억력으로 걸러진 데이터는 '손실' 이겠지. 위의 '......' 부분은 그때 이야기했었던 자세한 대화내용이 기억이 안나서 그냥 저렇게 쓴 것일 뿐인데. 오해했다고 생각한다면 그 부족한 기억을 채워주면 안되나. --["1002"]
옆에서 파이썬으로 proxy돌리고, Web debug하는 것이 멋지게 보였다. 파이썬에서 느껴지는 즉시성은 언제나 나로 하여금 경탄을 자아내게 한다. 비록 내가 겉으로는 표현이 부족할지라도...
- 3DGraphicsFoundationSummary . . . . 27 matches
* 왼손 좌표계 : 공간개념 이해하기 쉽기 때문에 그래픽스에서 많이 사용한다. 앞뒤가 Z, 좌우가 X, 위아래가 Y
* 외적은 ⓐXⓑ 이렇게 표현한다. 방향은 벡터 ⓐ에서 벡터ⓑ쪽으로 180도보다 작은 각으로 돌릴때 나사가 진행하는 방향이다. 이게 뭔 개소리냐--;
* 원하는 만큼 z축을 중심으로 돌려준다.
* 모든 면은 인접해야 한다.
* 특정한 다각형을 mesh 내에서 찾을수 있어야 한다.
* 하나의 다각형을 이루는 모든 모서리는 정확하게 표현되어야 한다.
* 하나의 모서리를 공유하는 다각형들을 직접 찾을수 있어야 한다.
* mesh 전체를 바꾸거나 디스플레이할수 있어야 한다.
* y축을 시선벡터의 xy평면성분의 방향과 일치시켜야 한다. Z축을 중심으로 (파이/2-θ) 회전 (θ는 x축과의 각)
|| GL_ZERO || 원본 색상을 0,0,0,0 으로한다 ||
|| GL_ONE || 원본 색상을 그대로 사용한다 ||
|| GL_DST_COLOR || 원본 색상과 대상 색상을 곱한다 ||
|| GL_ONE_MINUS_DST_COLOR || 원본 색상과 ((1,1,1,1)-대상 색상)을 곱한다 ||
|| GL_SRC_ALPHA || 원본 색상에 원본 알파 값을 곱한다 ||
|| GL_ONE_MINUS_SRC_ALPHA || 원본 색상에 (1-원본 알파값)을 곱한다 ||
|| GL_DST_ALPHA || 원본 색상에 대상 알파 값을 곱한다 ||
|| GL_ONE_MINUS_DST_ALPHA || 원본 색상에 ((1,1,1,1)-대상 색상 알파값)을 곱한다 ||
|| GL_SRC_ALPHA_SATURATE || 원본 색상에 원본알파 값과 (1-대상 알파값)중 작은 것을 곱한다 ||
|| GL_ZERO || 대상 색상을 0,0,0,0 으로한다 ||
|| GL_ONE || 대상 색상을 그대로 사용한다 ||
- MoreEffectiveC++/Operator . . . . 27 matches
* C++는 타입간의 암시적 type casting을 허용한다. 이건 C의 유산인데 예를 들자면 '''char'''과 '''int''' 에서 '''short'''과 '''double''' 들이 아무런 문제없이 바뀌어 진다. 그런데 C++는 이것 보다 한수 더떠서 type casting시에 자료를 잃어 버리게 되는 int에서 short과 dougle에서 char의 변환까지 허용한다.[[BR]]
일단 이런 기본 변환에 대해서 개발자는 어찌 관여 할수 없다. 하지만, C++에서 class의 형변환은 개발자가 형변환에 관하여 관여할수 있다. 변환에 관하여 논한다.
참 괜찮은 방법이다. 하지만 이 방법은 개발자가 의도하지 않은 형변환마져 시키는 것때문에 문제가 발생한다. 다음을 보자
'''operator<<'''는 처음 Raional 이라는 형에 대한 자신의 대응을 찾지만 없고, 이번에는 r을 ''operator<<''가 처리할수 있는 형으로 변환시키려는 작업을 한다. 그러는 와중에 r은 double로 암시적 변환이 이루어 지고 결과 double 형으로 출력이 된다.[[BR]]
* '''''single-argument constructor''''' 는 더 어려운 문제를 제공한다. 게다가 이문제들은 암시적 형변환 보다 더 많은 부분을 차지하는 암시적 형변환에서 문제가 발생된다.
첫번째 생성자는 배열의 lowBound~highBound 사이로의 크기 제한자이고, 두번째 생성자는 해당 크기로 배열 공간 생성인데, 이 두번째의 생성자가 형변환을 가능하게 만들어서 무한한 삽질에 세계에 당신을 초대한다. (실제로 이런 의미로 써있다. --상민)
a[i]와 b[i]가 같을때 이 코드를 수행한다.;
위의 조건을 만족하지 못하면 이 코드를 수행한다.;
보고 있자면 정말 아이디어 괜찮은듯 그럼 구체적인 구현부에 관해서 간단히 논한다.
암튼 저 위와 같이 하면 이해가 갈것이다. 하지만 이럴 경우 요 짓거리를 못한다.
이건 과거 C에서의 malloc처럼 초기화 되지 않은 size만큼의 메모리를 할당해서 그걸 가리키는 void형의 pointer를 돌려주는 것이라고 예측할수 있겠다.(맞다) 개발자는 operator new를 overload할수 있지만 첫번째 인자는 항상 size_t가 되어야 한다.
당신은 생성자를 직접 호출하기를 원할때가 있을 것이다. 하지만 생성자는 객체(object)를 초기화 시키고, 객제(object)는 오직 처음 주어지는 단 한번의 값으로 초기화 되어 질수있기 때문에 (예-const 인수들 초기화에 초기화 리스트를 쓰는 경우) 생성자를 이미 존재하고 있는 객체에 호출한다는건 생각의 여지가 없을 것이다.
그렇지만 여러분이 raw memory로 객체를 할당한다면 초기화 루틴이 필요하다. [[BR]]
이거 간단히 보이지만 placement new의 전부이다. operator new의 역할은 해당 객체를 위한 메모리를 찾고(할당), 해당 포인터의 반환이고 placement new의 경우에는 호출자가 이미 메모리를 확보하였고, 단순히 포인터 반환만 해준다. 모든 placement new가 반드시 이런 pointer의 전달 역할을 한다. 그리고 size_t 인자가 아무런 이름이 없어도 반항 안한다. 자세한건 Item 6을 보면 이해가 갈것이다.
이런 placement new는 C++ 표준 라이브러리의 한 부분으로 placement new를 쓰고자 한다면 #include<new> 를 해주면 된다.
'''placement new''' : 이미 확보 메모리가 존재하고 객체 초기화를 원한다면[[BR]]
delete ps; // delete operator 를 사용한다.
당신이 쓰고 있는 컴파일러는 객체 ps point를 파괴하고 객체가 가지고 있는 메모리를 해제한다.
그리고 이것의 의미는 당신이 초기화 되지 않은 raw로의 사용의 경우에는 new와 delete operator로 그냥 넘겨야 한다는 의미가 된다. 즉 이코드 대신에 다음의 예를 볼수 있을 것이다.
위의 코드는 C++상에서 malloc 과 free 를 호출 것과 동일한 역할을 한다.
- ProjectVirush/Idea . . . . 27 matches
첫째 '실시간'이다. 실시간으로 돌아가는 프로그램은 커다란 제약을 가지게 된다. 무엇보다 '슈퍼 울트라 복잡한 연산을 해서는 안된다.'는 것이다. 맵이 너무나도 큰 나머지, 또는 맵을 검색하는 알고리즘이 너무 자세한 나머지 "왼쪽 끝에서 오른쪽 끝까지 이동하도록 명령하니 1분동안 길을 찾느라 멈추었어요." 라는 소리를 들어서는 안된다. 물런 이런 과장된 일은 없겠지만, 실시간으로 진행되는 만큼 끊김없이 느껴질 수 있는 부드러운 연산이 가능해야 한다는 것이다. 더욱이 멀티플레이인 만큼 이 문제는 더욱더 중요해 진다. 플레이어 1이 복잡한 연산을 수행시켜버렸다고 해서 플레이어2까지도 버벅되서는 조금 곤란해 진다. 이러한 문제를 감안해서 어떻게든 연산을 빠르게 만들어야 한다.
또한 실시간이라는 점은 사용자가 접속하지 않아도 돌아가는 것을 의미한다. 사용자가 하루, 이틀 쉬었다가 접속하였을때 플레이어의 바이러스들이 전부 죽어있는 광경을 연출해서는 안된다. 그렇기 때문에 바이러스들은 플레이어가 없어도 꿋꿋하게 살아나갈 수 있는 인공지능을 가지고 있어야 한다.
둘째 '온라인 멀티'플레이이다. 한명의 사용자가 접속해서 사용하는 것이 아니기 때문에 여러명이 접속해서 사용하게 된다. 그러한 만큼 여러 플레이어가 행동을 한다는 것을 염두에 두어야 한다. 한명 한명에게는 적절한 난이도이지만, 협동을 하니 난이도가 대폭 하락해서 금새 이길 수 있었다 라던가 하는 이야기가 나와서는 안된다.
이 문제는 위의 '실시간'이라는 점과도 연계가 된다. 다른 플레이어들이 잠자러 간사이... 올빼미족의 한 플레이어가 나타나서 전 플레이어의 바이러스를 사살해 버리고 도망가 버린다거나, 타 플레이어의 바이러스를 포위해 버려서 더이상 증식이 불가능하게 만드는 난처한 상황이 발생해서도 안된다. 물런 '상대방의 바이러스를 사살할 수 있다.' 와 같은 규칙은 정해진 바 없지만, 다른 플레이어가 자리를 비웠을때 한 플레이어가 다른플레이어의 캐릭터에게 영향을 미칠 수 있다는 점도 고려를 해야한다.
셋째 '게임' 이다. 게임은 무엇보다도 재미가 있어야 한다. 이것이 어떻게 보면 가장 큰 난제라고도 할 수 있다. 이게 쉽다면 그 많은 게임들이 도데체 왜 사장되었겠는가... 우리
A. 빠르고 단순한 연산이어야 한다. 그러면서도
B. 높은 AI를 가지고 있어야 한다. 또
F. 어느정도 돌발적인 상황이 있어야 한다.
H. 다른 플레이어와 연계가 있어서 즐겁게 진행할 수 있어야 한다. 하지만
K. 일반인이 플레이를 못할 정도가 아니어야 한다는 점을 대강 고려해서 만든 규칙은..
2. 이 바이러스들은 자신의 염기서열(이하 DNA)을 바탕으로 AI를 구성하여 움직이고, 분열하고, 다른 세포에 침투한다. (J)
3. 바이러스를 잡는 면역체계AI(이하 백혈구)가 존재한다. (D)
4. 백혈구는 각 인간의 고유한 DNA의 일부를 통해서 적, 아 를 구분한다. (J)
5. 백혈구의 일부는 유전자 알고리즘을 통해 바이러스를 잘 잡도록 진화한다. (D)
(이는 플레이에 잘 대응하기 위해서이기도 하지만, 이렇게 진화 한다면 오래 플레이해서 세력이 큰 플레이어는 고생하고, 막 시작한 플레이어는 비교적 덜 고생할 것이다.)
6. 백혈구는 진화할때 일부의 성능이 떨어지는 DNA를 그대로 복제한다 (E)
8. 백혈구는 플로킹과 같은 간단한 알고리즘(A)을 통해 뭔가 있어 보이게끔 움직여야 한다. (F)
16. 만일 바이러스가 DNA에 의해 분열할 때가 되었음에도 불구하고, 해당 세포의 영양소가 부족하다면 바이러스는 부족한 DNA만을 가지고 분열한다. (D)
( 이를 막기위해 플레이어는 DNA에 분열할 조건을 추가할 수 있지만 이는 추가적인 영양소의 소모를 의미한다.)
17. 전체의 세포는 일정 시간마다 분열을 한다. (E) (단 바이러스에 감염된 세포는 바이러스의 DNA구조에 따라 바이러스를 같이 분열시킬 수 있다.)(E)
- ZeroPageServer/Mirroring . . . . 27 matches
는 서버 동기화(server syncronization)라고도 한다.
를 설치하여 사용한다. 그러면 우선, rsync 패키지가 설치되어 있는지를 확인해 본다...
되어 있지 않는 것이므로, rsync-2.5.5-4.i386.rpm 패키지를 구해 다음과 같이 설치한다.
에 rsync 패키지를 설치한다.
워드를 입력한다. 만일 일반 사용자 계정으로 이 명령을 수행한다면 원격 서버에도 동일한
계정이 존재하여야 하며, 원격 서버의 계정 패스워드를 입력한다.
속할 수 있도록 미리 준비해 놓고 있어야 한다는 예기다....
원격 서버에서는 클라이언트가 미러링할 수 있도록 rsync 서버를 구축해야 한다. rsync 서
용자가 직접 만들어 사용해야 한다. 이 파일의 설정 형식은 다음과 같다.
① {{{[rsync 서비스명]}}} : rsync 서비스의 이름(모듈명)이다. 사용자가 원하는 형태로 서비스명
③ path : 미러링 서비스 될 데이터의 경로를 지정한다. 예) /data/linux90
은 nobody로 설정되어 있으므로 이 값을 그대로 사용한다.
⑤ use chroot : path로 지정된 경로를 root 상위 디렉토리로 사용한다. 사용자가 다른 상위
정한다.
정하여 읽기 전용 권한을 부여해야 한다. 만일 업로드가 가능하도록 하려면
no로 설정하지만 특별한 경우가 아니라면 yes로 설정한다.
⑧ max connections : 동시에 접속 가능한 접속횟수를 설정한다. 무제한은 0으로 설정한다.
⑨ timeout : 클라이언트의 접속이 idle 상태에 있을 때 접속을 끊어버릴 시간을 설정한다.
설정해 주어야 한다. RPM 패키지 설치시 이 파일이 제공되므로 이 파일 가운데에서 다음
화면과 같이 disable = yes를 disable = no로 변경한다.
- 지금그때/OpeningQuestion . . . . 27 matches
== 대학에서 시간을 투자한다는 것이 다른 시기에 비해 특히 중요한지? ==
그러나, 만약 자기가 어떤 분야에 있어 한국 최고(혹은 그 이상)가 되려고 한다면 영어를 편하게(!) 사용하는 것이 중요합니다. 자기 실력에 더하기가 아니고 곱하기가 됩니다.
최소를 고려한다면, 다이나믹 랭귀지 하나, 스태틱 랭귀지 하나. 여력이 있다면 여기에 펑셔널 랭귀지와 환경과 언어가 결합된 언어(e.g. 스몰토크) 추가. --JuNe
== 자신이 배워왔던 교육 방식중, 가장 최악의 교육 방식은 어느것이고, 자신이 개선한다면 어떻게 하겠는가? ==
== 미리 공부해야 한다면 뭘 공부해 두는 것이 좋나? ==
* 지원시, 원하는 날짜 선택이 아닌 '월'을 선택한다.
* 원하는 특기 선택, 날짜 가늠 가능하다.
* 전공도 힘든데, 복수전공은 정말 힘들다고 한다.
* <->우리회사(무역)는 없다. 하지만 내가 필요해서 한다
* 은행에서는 사내유학 제도에서 MBA를 유도한다 -> 회사에 오래남을 사람 (본인 스스로가 결정한다.)
* 복수전공은 다양한 아이디어들을 제공한다
할 일을 세로로 나열한다. 그리고는 옆에 5, 10, 15, 20...이런 식으로 숫자를 쓴다.
1. 그리고는 위에서부터 차례대로 실행(?)한다. 예를 들면 설거지부터 시작한다. 설거지를 하다가 5분이 되었을 경우 그만두고 다음 일을 한다. 그리고 설거지 옆에 5를 지운다.
1. 방닦기를 5분 하고서 그 옆의 5를 지운 후 또 다음 일을 한다. 이런 식으로 목록 끝까지 5분씩 일을 한 뒤에, 다시 설거지를 한다. 만약 설거지가 10분 안에 끝났다면 설거지행 전체를 지운다.
* 평상시와 같이 대한다.
* 일단 대쉬한다.
* on-Line 연장 -> off-Line -> 만나면서 자유롭게 대한다.
호기심을 갖고, 흥미로와 보이는 것은 혼자 혹은 친구들을 모아서 함께 도전해 보고, 또 공부해 보세요. 친구가 모이지 않는다고 포기하지 말고 혼자서라도 하세요(학자는 고양이 마음 즉 묘심을 본받아야 한다고 하는데, 묘심은 호기심, 자존심, 고독 등을 즐기는 것이겠죠). 끌리면 도전하세요. 그러다보면 자신에게 잘 맞는 분야를 찾을 수 있을 겁니다.
* 지하철에서 내릴때 "좋아한다" 말하고 내림.
하지만 꼭 책을 많이 읽는 것이 중요한 것은 아닙니다. 무엇을 보냐가 더 중요할 수도 있습니다(위 어떤 책/잡지를 봐야하나 참조). 또, 책은 꼭 다 읽어야 한다는 강박을 가질 필요는 없습니다. 필요한 것만 그때 그때 골라봐도 좋은 책이 있고, 차분히 글자 하나 하나 짚어가며 봐야할 책이 있습니다.
- 책거꾸로읽기 . . . . 27 matches
인도에서 한국 기업의 선전과 그 이유를 다룬다. 인도인의 습성이 괴이하기 때문에 인도에서 사업하기가 어렵다고 한다. 느릿느릿한 여유로움을 가지고 있으며 신용할 수 없다고 한다. 한국 기업의 선전이유는 인도인들에게 '''이 기업은 너희들의 기업이다. 너희들은 XX인이다.'''라는 마인드를 심어주었기 때문이라고 한다.
인도에서의 사업은 큰 위험이 있기 때문에 한번 실수로 휘청거릴 중소기업에겐 벅찬 일이라고 충고한다. 대기업과 연계하여 진출할 것을 충고한다. 그 밖에 인도에서 사업할 때 주의할 점(ex, 왼손은 조심해서 써라)을 말한다.
인도의 다양한 얼굴을 소개한다. 인도는 10억의 인구가 민주주의를 실천하는 국가이다. 선거도 4번에 걸쳐한다고 한다. 인도는 이러한 민주주의 때문에 어떠한 일을 진행할 때 너무 오랜 시간이 걸린다는 단점을 가지고 있다.
인도는 많은 인구 수나 거대한 땅덩이나 중국과 비슷한 면이 많다. 지금 당장 인도와 중국을 비교하자면 누가봐도 중국이 앞선다. 하지만 인도의 추격도 만만치 않다. 인도의 장래를 밝게 보는 이들은 '''지금은 느려도, 급하게 먹다 배탈 나는 중국을 나중에 추월할 것'''이라고 기대한다. 인도에게 높은 점수를 주는 이유 중 하나는 바로 '''영어'''이다. 만약 이 두 나라가 서로 손 잡는다면 어떠할까? 인도의 소프트웨어와 중국의 하드웨어가 결합한다면 찰떡궁합일 것이다.
채식을 많이 한다.
* 점점 지겨워지면서 그만 보고 싶어진다. 그래도 '''앞 챕터는 재밌겠지'''라는 생각으로 계속한다.
인프라가 인도경제발전의 발목을 잡는다는 말이 있다. 인도는 정전이 잦다. 게다가 물문제도 심각하다. 인도여행시 물을 조심해야된다. 잘못 마실시에는 설사로 고통받는다. 호텔에서 양치질할 때도 생수로 해야한다. 그런 물 조차도 부족하다. 도로사정도 열악하다.
인도는 하나의 나라라고 보기 어려울 정도로 다양한 인종과 종교와 언어가 버무려져 있다. 이런 다양함이 묘한 균형을 이루며 살아가는 게 인도인데 하나의 종파, 하나의 인종, 하나의 언어만을 이야기한다면 이런 균형은 깨지기 쉽다.
'''핵탄두를 만들어 소달구지에 끌고 가는 나라가 인도'''라는 우스갯소리가 있다. 인도의 심각한 이중성에 대한 비아냥거림을 담은 조크다. 하지만 소달구지가 뜻하는 원시성이야 그렇다 치고, 그런 후진성, 원시성을 가졌으면서도 핵탄두를 자체 기술로 만들었다는 사실을 주목해야한다. 세련되게 상품화하고 양산하는 기술이 모자랄 뿐이지 원천기술 쪽으로 가면 오히려 많은 부분을 앞서있는 나라가 인도이다.
인도에서 돈 좀 있다는 상류층 부자들은 대체로 전체의 2퍼센트 정도라고 한다. 2퍼센트라고 하지만 10억인구에서 2퍼센트이면 2천만명이라는 것을 명심해야한다.
타타와 릴라이언스라는 국민기업의 설명과 오너들과의 인터뷰 내용을 다뤘다. 대체적으로 깨끗한 경영과 사원복지, 인재양성에 힘쓰고, 번 돈의 많은 부분을 사회에 환원한다는 것이 보기 좋다.
인도 최고 부자 '''위프로'''의 쁘렘지 회장은 하드웨어의 산업의 기반이 약한 게 '''인도의 한계가 아니냐'''라는 질문에 '''우리도 하드웽어를 한다. PC로 일어선 회사가 우리 아니냐? 위프로의 경우 인도 국내 시장 매출의 25퍼센트는 하드웨어서 나온다'''고 대답하였다.
하청공장으로 통하던 인도 IT업계에 시선이 쏠리게 된 계기가 바로 '''Y2K'''다. Y2K로 세상이 시끌벅적해지면서 모두들 해결책을 찾고 있었다. 바로 이때 해결사들이 무더기오 나타났다. 그게 바로 인도이다. 인도인들이 척척 일을 해내자 기업들은 그제야 인도의 인력의 자질과 인도 시장의 매력을 깨닫기 시작했다. 인도인들의 소프트웨어 제작, 관리, 설계기술은 어느 나라라도 따라올 수 없다고 한다. 내세에 천착하는 종교 때문에 현실을 개혁하려는 의지가 부족하고 창조적이지 않다는 비판은 옛날이야기라는 지적도 있다. 그러나 아직 창의성이 부족하고 책임을 지려 하지 않는다는 평가도 있다.
인도의 7학년(한국의 중학교 1학년) 수학교과서는 영국의 10학년 수준과 비슷하다. 12학년(한국의 고 3) 수학교과서를 서울시 교육청에 분석 의뢰하였더니 '''지금 한국의 보통 대학에서 가르치는 미분방정식이 나온다. 경제학 등에서 쓰이는 함수도 있다. 실용적인 내용이 많으면서 수준이 높다'''라는 평가가 나왔다. 십구단을 외우게 한다고 인도의 수학이 암기 위주인 것은 결코 아니다. 수를 셈하는 기초적인 계산능력을 암기를 통해 어렸을 때부터 키워놓고, 그걸 토대로 더 수준 높은 수학을 체득할 수 있게 하는 것이다.
인도 교육부에 따르면, 2001년 기준으로 문맹률이 무려 35퍼센트에 이른다고 한다. 그러나 평균의 개념은 별 의미가 없다. 비록 평균적으로는 형편없어도 특출한 경우만을 골라내도 워낙 인구가 많기 때문에 그것만으로도 세계적인 경쟁력을 발휘하는 경우가 얼마든지 있는 나라가 바로 인도이기 때문이다.
인도에는 기본적으로 영어를 잘하는 사람이 많다. 영어를 하는 사람은 전체 인구 10억 명 중에서 대략 1억 5천만명 정도라고 한다. 그중에서도 5천만 명 가량은 아주 유창하게 영어를 구사한다고 한다.
뉴델리에 있는 인도공과대학(IIT)의 자부심은 대단하다. 인도인들은 세계최고라는 MIT에 이겼으면 이겼지 뒤지지 않는다고들 한다. '''IIT 마치고 카네기멜론대학 석사과정을 들었는데 석사과정이 너무 싱거웠다''' 라는 말도 있다. IIT는 명성만큼 입학하기가 그야말로 하늘의 별따기 이다. 인도에서 해마다 날고 긴다는 우등생들이 IIT에 입학하기 위해 시험을 치른다. 20만명 정도가 응시래서 1차로 2만명을 뽑고 2차 시험을 봐서 최종적으로 3500명을 뽑는다.
- AcceleratedC++/Chapter7 . . . . 26 matches
|| '''연관컨테이너(Associative Container)''' || 요소들을 삽입한 순서대로 배열하지 않고, 요소의 값에 따라 삽입 순서를 자동적으로 조정한다. 따라서 검색알고리즘의 수행시 기존의 순차컨테이너 이상의 성능을 보장한다. ||
|| '''Key''' || 요소의 검색을 위해서 사용되는 검색어. 한개의 요소를 다른 요소와 구분하는 역할을 한다. 키는 요소의 변경시에 변경되지 않는 값이다. 이에 반하여 vector의 인덱스는 요소의 제거와 추가시 인덱스가 변화한다. 참조)DB의 WikiPedia:Primary_key 를 알아보자. ||
* Visual C++ 6.0 에서 소스를 컴파일 할때 책에 나온대로 (using namespace std를 사용하지 않고 위와 같이 사용하는 것들의 이름공간만 지정할 경우) map<string, int>::const_iterator 이렇게 치면 using std::map; 이렇게 미리 이름공간을 선언 했음에도 불구하고 에러가 뜬다. 6.0에서 제대로 인식을 못하는것 같다. 위와 같이 std::map<string, int>::const_iterator 이런식으로 이름 공간을 명시하거나 using namespace std; 라고 선언 하던지 해야 한다.
// 기본적으로 split 함수를 이용하여서 단어를 tokenize 한다. 만약 인자로 find_url을 주게되면 url이 나타난 위치를 기록한다.
cout << it->first << " occurs on line(s): "; // key 값인 string을 출력한다.
// second 값인 vector<int> 를 이용하여서 string이 나타난 각 줄의 번호를 출력한다.
'''''주의) STL을 이용하면서 많이 범하는 실수: > > (0) >>(X) 컴파일러는 >>에 대해서 operator>>()를 기대한다.'''''
기본 변수 split 을 이용해서 입력받은 값을 이용해서 ret를 초기화한다.
상기에서는 map<string, vector<string> >의 형태로 구현해야한다. 그러나 <adjective>, <location>, <noun>과 같이 동일한 키 값에 대해서 규칙이 여러개가 존재하는 경우를 다루기 위해서 '''map <string, vector< vector<string> > >''' 의 타입을 이용한다.
vector<string> entry = split(line); // split 함수를 이용해서 입력된 문자열을 ' '를 기존으로 tokenize 한다.
//vector<string>의 첫번째 요소를 entry의 키값으로 이용한다. 2번째 요소부터 마지막 요소까지는 entry의 값으로 저장한다.
map<class T>.find(K) : 주어진 키를 갖는 요소를 찾고, 있다면 그 요소를 가리키는 반복자를 리턴한다. 없다면 map<class T>.end()를 리턴한다.
nrand(c.size()) : 7.4.4 절에서 설명함. pseudo rand 함수를 통해서 [0, c.size()) 의 범위를 갖는 가상적 임의의 수를 리턴한다.
재귀함수의 호출은 반드시 함수의 내부에 재귀호출을 탈출 할 수 잇는 코드가 존재해야한다. 그렇지 않을 경우 stack_overflow가 발생한다.
rand() 는 C Standard Library <cstdlib> 라이브러리에 존재한다. 일반적으로 cstdlib 에 정의된 RAND_MAX보다 작은 값을 임의적으로 리턴한다.
RAND_MAX % n를 이용해서 임의의 수를 구할 경우 Pseudo 임의 값의 한계로 인해서 문제점이 발생한다.
따라서 우리는 RAND_MAX를 n으로 나누어서 전체 RAND_MAX를 bucket이라는 단위로 나눈뒤에 이 bucket으로 rand()가 발생시키는 난수를 나누어 줌으로써 우리가 원하는 [0, n) 의 임의의 수를 얻을 수 있다.
|| Hash Table || 각 키값에 대하여 해쉬 값을 제공해야함. 성능이 해쉬 함수에 크게 영향을 받음. 요소들을 원하는 순서대로 얻기 쉽지 않음 ||
- BigBang . . . . 26 matches
* 2012년 그들이 스터디를 시작한다.
* ALGOL계 언어라고도 한다고 한다.. [http://hkpark.netholdings.co.kr/web/inform/default/inform_view.asp?menu_id=9730&id=1456&parent_id=1517 궁금해 할 사람을 위해]
* 이걸로 프로그램이 제대로 끝났는지 판단한다.
* return에는 중요한 특성이 있는데 이게 호출되면 지역변수를 정리한다.
* C는 bool이 없다!, c++은 있다. java는 boolean으로 사용한다. - C11은 있단다.
* 대부분의 경우 그냥 정수로 처리한다.
* 많은 기능을 잘게 쪼개기 위해 함수를 사용한다.
* 가독성을 좋게 한다.
* 변수 접근을 제어하기 힘들기 때문에 버그를 유발할 확률도 증가한다.
* C/C++/Java의 parameter는 call-by-value 형식으로 값을 전달한다.
* 참조는 내부적으로 포인터를 이용한다.
* #ifndef NAME : #define NAME이 되어있지 않는 경우에 작동한다. 주로 헤더파일 중복 include를 막기 위해 사용한다.
* #pragma once도 동일한 효과를 준다. 전체 소스코드를 단 한번만 include 한다. (비표준)
* stack이나 heap에서 데이터를 free 할 때, 실제로 포인터만 이동이 된다. 그래서 실제로는 데이터가 메모리에 남아있게 된다(기존의 값을 초기화화 할 필요없이 할당 플래그만 해제하면 되므로). 중간에 다른 곳에서 호출이 될 경우에 데이터가 덮어 써지는 문제가 발생할 수 있으므로, dangling pointer를 조심해야 한다.
* 형은 보장하지 않는다. 가변인자들의 형을 강제할 수 없기 때문에 stack에 void*로 저장된다. 그리고 최소한 인자가 하나는 있어야 한다.
* template와 friend 사이에 여러 매핑이 존재한다. many to many, one to many, many to one, one to one : [http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc16friends_and_templates.htm 참고]
* vector(메모리가 연속적인 (동적) 배열), string, deque(double ended queue, 덱이라고도 한다. [http://www.cplusplus.com/reference/deque/deque/ 참고]), list(linked-list)
* vector<bool>은 일반적인 vector 연산이 불가능한데, 이걸 해결하기 위해 bitset을 이용한다.
* 무효화가 적어야 하는 경우에는 node 기반(list, set)을 사용해야 한다.
* arr.size()는 녕원히 0이 되지 않는다.. naver.. i가 5일 때 ArrayIndexOutOfBounds Exception이 발생한다
- JavaNetworkProgramming . . . . 26 matches
*Thread 통지(notification)메소드 : 주의해야 할 점은, 이 메소드들 호출하는 쓰레들이 반드시 synchronized 블록으로 동기화 되어야 한다는 점이다.
*효과적인 다중 쓰레딩 : 자바에서 쓰레드를 생성하는 것은 매우 느린 작업이며 일부 자바 가상 머신은 쓰레드에 관련된 메모리 누스 때문에 고생하기도 한다. 따라서 효과적인 쓰레딩을 위해서는 새로 쓰레드르 생성하는 것 보다 이전에 생성했던 쓰레드 객체를 재사용하느 것이 좋다 진보된 형대의 자바 가상 머신에서는 시스템 레벨에서 이러한 쓰레드 재사용을 지원하기도 하지만, 이경우조차도 쓰레드를 재상용하는 방식을 사용하면 여러가지 이점을 얻을수 있다. --예제는 17장쯤에..
*OutputStream 클래스 : OutputStream 클래스는 통신 채널로의 관문을 의미한다. 즉, OutputStream으로 데이터를 써넣으면 데이터는 연결된 통신 채널로 전송될 것이다.
*InputStream 클래스 : InputStream 클래스는 통신 채널로부터 데이터를 읽어 내는 관문을 의미한다. OutputStream에 의해 통신 채널로 쓰여진 데이터는 해당하는 InputStream에 의해 읽혀진다.
while((numberRead =System.in.read(buffer))>=0) //가능한 많은 양을 읽는다. EOF가 -1을 반환하면 출력한다.
*FileDescriptor클래스 : FileDescriptor 객체는 하위 레벨의 시스템 파일 설명자로의 핸들이다. 파일 설명자는 열려진 파일을 의미하며, 읽기 작업이나 쓰기 작업을 위한 현재의 파일 내의 위치와 같은 정보들을 포함한다. RandomAccessFile이나 FileOutputStream, FileInputStream을 사용하지 않고는 유용하게 FileDescritor를 생성할수 있는 방법은 없다 . --;
if(args.length !=2) //넘어오는 args가 파일이 원본 복사본 두개여야한다.
out.write(buffer,0,numberRead); //여기서 0은 초기시작위치이고 파일에 쓸때마다 점점 옆으로 이동한다 --;
markedPosition = file.getFilePointer(); //현재위치를 기억한다.
*지금까지는 한 바이트나 바이트 배열정도의 읽고/쓰기를 지원하는 간단한 스트림만을 보와왔다. 이러한 수준의 통신은 필요이상으로 번거롭다. 그래서 이번장에서는 기존의 스트림의 위에 부가적인 기능을 제공할 수 있는 스트림인 스트림 필터(stream filter)에 대해 소게하곘다.
*BufferedOutputStream과 BufferedInputStream : 기존의 스트림 위에서 입출력 버퍼링을 제공한다. 입출력 되는것을 버퍼에 저장해서 중간중간에 flush를 이용해 쏟아낸다. 그러면 스트림에 대한 오버헤드를 줄일수 있다.
*DataOutputStream과 DataInputStream : 기존의 바이트만 읽고 쓰는 스트림위에서 상위 수준의 통신이 가능하다. 예를 들어 String이나 부동점 실수와 같은 것을 통신할 수있다. 기존의 수준낮은(?) 것은 바이트 단위로 통신해야한다.
*PushbackInputStream : 입력 스트림으로 데이터의 읽기 복구 기능을 지원한다. 다시 말하면, 데이터가 입력 스트림으로 다시 넣어져서, 다음 번에 읽기를 수행할 때에 다시 읽혀질 수 있게 된다.
*LineNumberInputStream : LineNumberReader 클래스에 의해 쓸모가 없어진 이 스트림은 초보적인 수준으로 줄에 번호 매기는 기능을 제공한다.
*PrintStream : PrintWriter 클래스에 의해 쓸모가 없어진 이 클래스는 ASCII 텍스트 데이터의 출력기능을 제공한다.
dataOut.flush(); //이제까지 버퍼에 모아논것을 출력한다.
*FileReader : 플랫폼의 기본 문자 인코딩 방식을 사용하여 텍스트 파일을 읽기 위한 문자 스트림 인터페이스를 제공한다. 파일에서 읽는것임 --;
*FilterWriter : 모든 문자 스트림 필터의 스퍼클래스로 다른 Writer 객체에 연결되어서 모든 호출 연결된 스트림으로 전달한다.
*FilterReader : 모든 Reader 문자 스트림 필터의 수퍼클래스로, 다른 Reader객체와 연결하여 모든 메소드의 호출을 연결된 스트림으로 전돨한다.
*BufferedWriter : 연결된 스트림에 출력 버퍼링 기능을 제공한다. 모든데이터는 버퍼가 가득 찾거나 flush() 메소드가 호출되거나 close() 메소드가 호출될 때까지 내부 버퍼에 저장되었다가 여러 문자를 한꺼번에 출력하는 write()메소드의 호출을 통해 연결된 스트림으로 출력된다.
- OurMajorLangIsCAndCPlusPlus/ctype.h . . . . 26 matches
|| intsalnum(int c) || 알파벳 숫자임을 체크한다. ||
|| int isalpha(int c) || 주어진 문자가 알파벳 인지 검사한다. A-Z a-z ||
|| int islower(int c) || 소문자인지 검사한다. a-z ||
|| int isupper(int c) || 대문자인지 검사한다. A-Z ||
|| int isdigit(int c) || 주어진 문자가 숫자인지 검사한다. 0-9 ||
|| int isxdigit(int c) || 16진수 를 표한할 수 있는 문자인지 확인한다. 0-9 a-f A-F ||
|| int isspace(int c) || 공백문자들을 검사한다.('\f'), ('\n'), ('\r'),('\t'),('\v'). ||
|| int ispunct(int c) || 알파벳문자 혹은 공백문자가 아닌 출력가능한 문자인지 확인한다. ||
|| int isalnum(int c) || 주어진 문자가 알파벳 또는 숫자인지 검사한다. A-Z a-z 0-9 ||
|| int isprint(int c) || 공백문자를 포함한 출력가능한 문자인지 검사한다. ||
|| int isgraph(int c) || 공백문자를 제외한 출력가능 문자인지 검사한다. ||
|| int iscntrl(int c) || 제어(control) 문자인지를 검사한다. ||
|| int toupper(int c) || 입력된 문자를 소문자로 변경한다. ||
|| int tolower(int c) || 입력된 문자를 대문자로 변경한다. ||
|| int iswupper(wint_t) || 소문자인지 검사한다. ||
|| int iswlower(wint_t) || 대문자인지 검사한다. ||
|| int iswdigit(wint_t) || 주어진 문자가 숫자인지 검사한다.||
|| int iswxdigit(wint_t) || 16진수 를 표한할 수 있는 문자인지 확인한다. ||
|| int iswspace(wint_t) || 공백문자들을 검사한다.||
|| int iswpunct(wint_t) || 알파벳문자 혹은 공백문자가 아닌 출력가능한 문자인지 확인한다.||
- 5인용C++스터디/소켓프로그래밍 . . . . 24 matches
기초 클래스가 CAsyncSocket인 새로운 클래스 CListenSock, CChildSock을 새로 생성한다.
새로 추가된 두개의 클래스를 다음과 같이 편집한다.
[클래스위저드]의 CListenSock에 가상 함수 OnAccept()를 추가한 후 다음 라인을 삽입한다.
[클래스위저드]의 CChildSock에 가상 함수 OnReceive()와 OnClose()를 추가한 후 다음 코드를 삽입한다.
어플리케이션 클래스에 다음의 멤버변수와 함수 원형을 선언한다.
어플리케이션 클래스의 생성자에서 추가한 멤버변수를 초기화한다.
그리고 나서 추가한 멤버함수를 다음과 같이 정의한다.
다음으로 데이터 송수신 작업을 하는 함수를 추가한다. 그 다음, 데이터 송수신 후 마무리 작업을 한다.
[리소스뷰]에서 다이얼로그 항목의 "IDD_SERVER_DIALOG"을 편집한다.
다이얼로그가 초기화될 때 서버로 작동하도록 CServerDlg 클래스의 OnInit Dialog()함수에 다음 코드를 삽입한다.
그리고 나서 [클래스위저드]의 CServerDlg에 IDC_SEND를 맵핑한 후 다음 코드를 추가한다.
서버와 동일한 방법으로 클라이언트 프로그램에서 사용할 소켓 클래스 CClientSock을 생성(기초 클래스: CAsyncSocket)한다. 그리고 나서 [클래스위저드]의 CClientSock에 가상함수 OnReceive()와 OnClose()를 추가한 후, 다음 코드를 삽입한다.
서버 접속시 필요한 IP 주소를 입력받기 위해 [리소스뷰]에서 다이얼로그를 하나 추가한 후 다음과 같이 편집한다.
[클래스위저드]를 실행하여 CConnectDlg 클래스를 새로 생성한 후 CConnectDlg 클래스에 다음 변수를 추가한다.
그리고 [클래스위저드]의 CConnectDlg에 IDOK를 맵핑하여 사용자가 입력한 IP 주소를 멤버변수 m_strAddress에 저장한다.
어플리케이션 클래스에 다음과 같이 멤버변수와 함수 원형을 선언한다.
어플리케이션 클래스의 생성자에서 추가한 멤버변수를 초기화한다.
그리고 나서 추가한 멤버함수를 다음과 같이 정의한다.
이때 중요한 것은 서버 프로그램의 포트 번호(7000)와 설정할 포트 번호가 일치해야 한다.
[리소스뷰]에서 다이얼로그 항목의 "IDD_CLIENT_DIALOG"을 더블클릭한 후 다음과 같이 편집한다.
- Linux/배포판 . . . . 24 matches
자, 그렇다면 의문을 해소해보자. 운영체제의 중심은 무엇인가? 운영체제라고하는 것은 결국 하드웨어와 사용자 사이를 이어주는 가교라고 생각하면 된다. 이런 영역을 '''kernel'''이라는 용어로 부른다. 이 kernel 에도 종류가 대단히 다양한데... 그중에 하나가 리눅스이다. 리눅스이외에도 Mach, BSD, Darwin, Hurd 등등등 우리가 생각하는 것 보다 훨씬더 다양하고 많은 커널들이 존재한다. (대략 Mach 커널이 좀 유명하다. 모듈 커널의 장점을 이야기 하면서 리눅스의 커널의 비효율성에 대한 평가자료로 많이 이용되었다. 지금은 리눅스도 대부분의 장치들을 모듈로 올리는 것이 가능하지만..) 윈도우의 경우 이 커널은 관리하는 회사가 오로지 마이크로소프트뿐이기 때문에 OS패키지를 라이센스라는 이름 아래에 단독으로 공급을 하지만 리눅스는 이와 달리 커널은 공개되어있고 어떤 묶으로 묶어서 팔거나 발표를 하는 것은 자유롭기에 다양한 배포판이 존재한다.
각각의 배포판을 나누는 차이는 패키지를 관리하는 툴의 종류가 다름을 의미하기도 한다. 패키지 관리툴에도 몇가지가 존재하는데 그 패키지 관리툴이 만들어진 배포판이 현재 리눅스 배포판의 가장 중심부에 있는 배포판들이다. 나머지 배포판은 이 배포판에서 나온 클론 혹은 후계자들이다.
''패키지를 관리한다는 것?
사실상 리눅스의 다양한 프로그램들을 개인이 따로 관리한다는 것은 굉장히 어렵다. 패키지가 정적인 형태가 아니라 리눅스는 지속적인 엡데이트를 하는데, 통일된 방식으로 관리를 해준지 않으면 나중엔 어떤 프로그램을 어디에 깔았는지 조차 알기힘들어진다. (대략 도스시절 컴퓨터에 프로그램을 마구잡이로 까는 사람을 생각해보면 알듯.. -_-;) 이런 이유로 매키지 매니저라는 것을 사용하고 잇으며, 패키지 매니저는 상기와 같은 일들을 자동화된 방식으로 제공한다.''
국내의 배포판은 대부분 레드햇의 패키지 방식인 RPM(Redhat Package Manager)를 채용한다. RPM의 경우 단일 패키지르 중심으로하는 경향이 강하고 의존성에 상당히 관대한 패키지 방식으로 알려져있다. ''(데비안유저인 관계로 잘모른다.)'' 알려진 바로는 느슨한 패키지 의존성때문에 처음에는 편하지만 나중에 엉켜있는 패키지를 관리하기가 좀 까다롭다는 의견도 많다. 레드햇 리눅스는 현재 공개방식으로 배포되지 않는다. 기업용 혹은 웍스테이션을 위한 돈주고 파는 버전만 존재한다. 대신에 레드햇사는 페도라라는 리눅스 배포판을 지원하고 있으며, 레드햇의 사이트를 통해서 배포가 이루어진다. 대부분의 패키지가 CD안에 통합되어 있으며, 대략 최신 패키지 들이 패키징되어있다. (050626 현재 페도라4가 얼마전에 발표되었다 4+1CD) 페도라 리눅스는 레드햇의 불안정판 정도라고 생각하면 되고, 실제로 최신의 패키지들로 묶어서 내놓고 잇다. 페도라에서 얻어진 피드백을 통해서 레드햇에 반영하고 이로부터 안정적인 리눅스 서버 OS를 발표한다. ''ps) 의존성? 리눅스의 각패키지는 각기 다른 프로젝트로 진행되어 만들어진 것들을 다시 사용하는 경우가 많다. 따라서 각기 독립적인 패키지 만으로는 프로그램이 실행이 안되어 경우가 있는제 이런 경우 의존성이 있다고 말한다.''
GNU에 정신에 입각해서 만들어지는 배포판이다. 공식명식 GNU/Debian Linux 이다. 데비안의 이름은 배포자인 이안, 그의 부인 데보라 이름을 땃다고한다. 패키징은 과거 dselect를 이용하였고, 현재는 aptitude 라는 툴을 기반으로 한다. ''(관리정보를 보관하기 때문에 서로 호환성을 갖지는 않는다고 한다.)'' 데비안의 안정판은 대단히 배포사이의 공백기가 긴 것으로 유명하다. 혹자들은 메인테이너들이 굉장히 신중한 사람들이라고 평가하기도 한다. ''(01년도 Woody를 시작으로 05년 Sarge 사이에 딱 하나의 안정판이 있을뿐이다. 대략 2년에 한번꼴이다.)'' 대신에 Stable, Testing, Unstable, Experimental 이라는 단계적 개념으로 패키지를 제공해서 사용자의 선택의 폭을 제공한다. 그렇지만 Unstable 이라고해도 페도라만큼 최신의 패키지들로 묶이지는 않고 어느정도 성숙이 되면 패키지로 포함되는 경우가 다반사이다. 안정적 서버운영을 위해서는 안정판을 설치하는 경우가 많고, 일반용도로는 Testing, Unstable을 설치한다. (www.kldp.org 가 현재 데비안 Sarge-stable 로 운영중이다.) 패키지방식은 의존성에 대한 철저한 관리가 특징이다. 데비안이 유명한 것은 바로 이 패키지 관리의 엄격함 때문이기도 하다. 그렇지만 최신의 기술로 만들어진 소프트를 원하는 이들에겐 그다지 좋은 덕목은 아니다. 네트워크를 통해서 인스톨하기 때문에 base-system 이상의 것들은 네트웍이 연결된 상태에서 설치가 가능하다. 대신에 모든 배포판은 CD1장으로 구성된다. (net-install의 경우 대략 100MB 정도) 현재는 데비안의 엄격한 패키징 방식에서 좀더 유연한 자식격 배포판인 우분투이 나오면서 상당한 인기를 끌고 있다. 우분투는 데스크탑용 OS를 표방하고 발표되어으며, 실제로 CD로 엔터만 누르면서 완전설치가 가능하다.
리눅스의 대부분의 배포판은 각 CPU에 맞는 커널에서 운영이 되는 바이너리 형태를 중심으로 하고 소스파일은 곁다리로 다루는 경우가 대부분이다. 그러나 젠투 리눅스는 다른 배포판과는 좀 다르게 소스를 직접 컴파일해서 패키지를 관리한다. 이때 사용되는 매키지 관리자의 이름이 Portage 라는 것이다. ''(대략 리눅스 관련 사이트에서 emerge, ebuild, USE 라는 것들이 나오면 gentoo 이다.)'' 본디 Gentoo의 배포자는 BSD의 포트를 기반으로한 패키징 방식이 너무 마음에 들어서 리눅스도 이런 배포 시스템을 만들자는 취지하에서 배포를 시작했다고 한다. ''(덕분에 각기 다른 CPU 관련된 바이너리를 저장소에 보관하지 않기 때문에 미러 서버 입장에서는 좋을듯)'' 덕분에 Gentoo의 경우 실제 설치시에 커널 컴파일을 하면서 커널 모듈 설정을 해야하며, 세부적인 설정이 완전히 자동적으로 이루어 지지않는다. 또한 변변한 인스톨러도 없다. (Project가 진행중이긴하다) 리눅스를 좀 다루어본 사람들이 설치하고 쓴다.또 설치 시간이 컴파일 하는 시간과 같이 걸리기 때문에 엄청난 설치시간으로도 유명하다.
= 리눅스를 시작한다면 =
리눅스를 처음 시작하면서 어떤 배포판을 선택하는 지는 중요하다. 같은 리눅스이기는 하지만 사실 대부분의 리눅서들은 패키지 매니저를 이용하여 프로그램을 설치하는 편이지, 자신이 원하는 버전이 패키지 트리에 없다던가 버그가 있는 경우를 제외하면 직접 제작사 홈페이지에서 바이너리를 설치하는 경우는 거의 없다. 이럴때 동일한 패키지를 쓰는 사람한테 묻기가 편하고 이해하기가 편하기 대문이다. 2005년 현재 리눅스를 시작한다면 현시점에서는 [http://www.ubuntulinux.org/ Ubuntu]를 가지고 시작해서 [http://www.debian.org Debian] 으로 옮겨가길 권한다. 동일한 패키징 방식을 가지고 있으면서 우분투는 데스크탑 리눅스를 표방하고 있는 만큼 다루기가 쉽기 때문이다. 우분투에서 기본을 익히고 직접 서버를 운영하는 수준으로 올라가면 데비안으로 옮겨가면 배포판을 바꾸는데에 대한 부담을 전혀 느낄 필요가 없다. 나의 경우 대략 2주일 정도를 밤새면서 이런 저런 문제를 해결하면서 왠만한 문제는 이제 스스로 해결할 정도가 되었는데... 한번쯤은 해볼 만한 도전이라고 생각한다. 쓰다보면 윈도우 없이도 살 수 있는 세상도 있다는 생각도 하게 된다. 실제로 리눅스를 쓰는 사람들은 가장 게으른 배포판으로 데비안, 젠투정도를 꼽는다. 그만큼 잘 안변하고 한번 설치하면 거의 새로 설치해야할 일이 없다는 것을 말하는 것이다.
- UnixSocketProgrammingAndWindowsImplementation . . . . 23 matches
// sockaddr_in 은 TCP/IP체제 이므로 AF_INET만 사용한다. -> TCP/IP는 인터넷 기반이므로.
NULL : 임의의 포트를 할당한다. client에서 사용한다.
// u_short sin_port 은 Big-Endian을 사용한다.
// 따라서 Little_Endian을 사용하는 시스템에서는 Big-Endian으로 바꿔줘야한다.
INADDR_ANY : 자기 자신의 주소를 할당한다. (== 0)
inet_addr(): 주소를 long형으로 계산하고 htonl()를 사용해 Big-Endian으로 변환 후 값을 return 한다.
// 이것을 A5C21B81로 바꿔 저장한다.
// sin_zero 배열은 항상 0으로 채워져 있어야한다.
ina.sin_port = htons(PORT); // PORT의 경우 정수를 넣어야한다.
// SERVER_IP의 경우 문자열 포인터를 넣어야한다.
// backlog는 서버에 접속할 사람의 대기자 Maximum을 의미한다.
== connect - Server에 연결한다. ==
Project -> Setting -> LINK 메뉴 -> Object/library modules: 의 끝부분에 ws2_32.lib 를 추가한다.
WSADATA wsaDATA; // 추가. WSADATA형의 변수를 선언한다.
// 추가. WSAStartup() 은 socket의 버젼을 ws2_32 라이브러리에 전달한다.
// 프로그램이 끝날 때, 항상 WSACleanup()으로 리소스를 해제해야한다.
// 프로그래머는 이것을 통해 네트워크와 대화를 한다.
server_addr.sin_addr.s_addr = INADDR_ANY; // 자신의 주소로 설정한다.
// socket과 네트웍 정보를 bind()로 연결한다.
// exit로 종료를 하면 모든 파일 디스크립터를 자동으로 닫고 종료한다.
- EffectiveSTL/Container . . . . 22 matches
* STL의 Container들의 장점이라고 한다면, 역시 유연성, 메모리 관리 알아서 하기, 자신이 알아서 늘었다 즐었다 하기 등등이 있겠다. 또한 인터페이스가 이거나 저거나 비슷비슷해서 하나만 공부하면, 쉽게 다른것도 쓸수 있다는 것도 또 하나의 장점이 될수 있겠다.
== STL이 지원하는 Containers ==
* vector가 좋다고 써있다. 잘 쓰자. 가끔가다 시간,저장공간 등등에 있어서 Associative Containers를 압도할때도 있다고 한다.
* 전자에는 vector, string, deque 등이 있다. 뭔가 또 복잡한 말이 있긴 한데 그냥 넘어가자. 대충 insert, delete가 일어나면 기존의 원소가 이동한다는 말 같다.
* Random Access Iterator(임의 접근 반복자)가 필요하다면, vector, deque, string 써야 한다. (rope란것도 있네), Bidirectional Iterator(양방향 반복자)가 필요하다면, slist는 쓰면 안된다.(당연하겠지) Hashed Containers 또 쓰지 말랜다.
* Insert, Delete 할때 원소의 인덱스 위치가 변하면 안된다? 그러면 Contiguous-memory Containers는 쓰면 안된다. (해당 원소의 인덱스 위치가 변한다.)
* Standard Node-based Container들은 양방향 반복자(bidirectional Iterator)를 지원한다.
''STL Tutorial and Refereince 를 보면, 일부러 해당 Container 에게 최적화된 메소드들만 지원한다고 써있었던 기억. 예를 든다면, Vector 의 경우 push_front 같은 것이 없다. (만일 vector에 push_front 를 한다면? push_front 될때마다 매번 기존의 원소들 위치가 바뀐다.) --[1002]''
* 컨테이너에 넣을 때나 뺄 때, 복사를 한다.
* 하지만 역시 내가 delete해줘야 한다는 단점이 있다. 대안으로 smart pointers라는게 있다.(이게 뭘까)
* 내가 요구할때만 그만큼 많은 공간을 할당한다.
* 컨테이너에 하나도 안들었다는것을 가정할때 size() == 0 이것보다 empty() 가 더 좋다고 한다.
// copy 알고리즘을 이용한다.
// assign 메소드를 사용한다.
* 이 네 가지 방법을 보자. 첫번째 두번째 방법은 루프를 사용한다. 두번째 방법에 루프가 어딨냐고 물으면 나는 모른다. copy 알고리즘 내부에서 루프를 사용한단다. 하지만 assign 메소드는 루프를 사용하지 않고 한번에 짠! 해주는거 같다.
* copy, push_back 이런것은 넣어줄때 insert iterator를 사용한다. 즉, 하나 넣고 메모리 할당 해주고, 객체 복사하고(큰 객체면... --; 묵념), 또 하나 넣어주고 저 짓하고.. 이런것이다. 하지만 assign은 똑같은 작업을 한번에 짠~, 만약 100개의 객체를 넣는다면 assign은 copy이런것보다 1/100 밖에 시간이 안걸린다는 것이다.(정확하진 않겠지만.. 뭐 그러하다.)
* 아직까지도 STL을 완벽하게 지원하는 컴파일러는 존재하지 않는다.
* Widget b() 이것은 Widget형의 객체를 리턴해주는 b라는 이름을 가진 함수다. 이것과 관련해 파싱 에러가 자주 일어난다고 한다.
== 예제 : ints.dat 에 저장되어 있는 정수들을 읽어서 list<int> data에 쓰는 작업을 한다. ==
* 쉽지만 비효율적인 방법 - remove_copy_if 를 사용한다. 이것은 지우고 싶은걸 제외한 나머지 것들을 새로운 컨테이너로 옮긴다. 그 다음에 원래 컨테이너를 새로 만든것과 바꿔 버린다.(우울하군--;)
- 데블스캠프2005/RUR-PLE . . . . 22 matches
* 프로그래밍 언어를 배우는것은 재밌어야 한다는 취지에서 만들어진 환경이다. 실제로 해보면 재밌다. 도움도 많이 된다.
* 실제로 로봇에 프로그래밍 해서 그 로봇이 현실에서 자신이 프로그래밍 하는데로 움직이는것을 보면 정말 좋겠지만 여건이 안되는 만큼 -_-; 화면으로나마 그 로봇이 움직이는 것을 보면서 프로그래밍 해볼 수 있다. 여기에서 작성하는 코드들이 무슨 쓸모가 있을까 싶기도 하겠지만, 추후에 실제 로봇의 동작을 프로그래밍해서 넣는다면 여기서 쓰이는 방식과 비슷하게 넣을것이다.(하드웨어적으로 복잡한것을 명령어로 추상화 시킨다음에 그 명령어을 적절하게 복합적으로 사용하여 원하는 행동을 로봇이 하게 만드는 식으로..) 즉 말그대로 로봇 프로그래밍을 간접적으로나 해볼 수 있다.
* 컴퓨터 프로그래밍을 익히는 것은 악기를 익히는 것과 비슷하다. 당신은 그것에 관해 단순히 읽기 말고 해봐야 한다.
* 사람들이 읽기 쉬운 프로그램을 작성해야 한다.
* 창에서 Robot: Code and Learn 탭을 선택한다.
* 그후 화면에 Mp3 Play 버튼 비슷하게 생긴 버튼을 클릭한다.
* 저장하라는 창이 나오면 test 라고 넣고 저장한다.
* 화면의 로봇을 클릭한다.
* 위쪽 방향 키보드를 누르면 앞으로 이동한다.
* RUR-PLE에서도 디버깅을 한다.
* Play버튼 옆에 Play 모양과 작대기 하나 있는것은 step into와 비슷한 역할을 한다. 명령어가 하나씩 실행된다. 현재 실행되고 있는 명령어는 코드 부분에서 회색으로 highlighting 된다.
* Play버튼을 클릭하고 나서 로봇이 움직이고 있는 도중에 자신이 원하는 순간에 step into 버튼(play 버튼 옆에 있는)을 클릭하면 그 순간부터 명령어가 하나 하나씩 실행된다.
* 버튼들 중에서 벽 처럼 생긴 버튼을 클릭한다. 그럼 아래 그림과 같은 화면이 나온다. 여기서 클릭! 클릭~! 해서 벽들을 만들 수 있다.
* 벽 만들기 연습에서 한 코드들을 함수화 해서 중복 제거를 한다.
* next_to_a_beeper() : beeper가 현재 로봇의 자리에 있으면 true, 없으면 false를 반환한다.
* 위의 if문과 함수 정의, repeat를 사용하여 아래 화면과 같은 상황을 처리한다.
* 아그래 그림처럼 로봇이 방안을 한바퀴돌게 해보자. 방 크기에 따라서 반복 횟수를 다르게 해줘야 한다. 크기가 5라면 5*4=20 이런식으로..
* not은 아래와 같은 식으로 사용한다.
* 문제에서 아래와 같은 소스를 참고 하라고 한다. 저는 좀 다르게 했습니다. 우선 참고는 했고..
* 아래와 같은 식으로 사용한다.
- 코드레이스/2007/RUR_PLE . . . . 22 matches
* 프로그래밍 언어를 배우는것은 재밌어야 한다는 취지에서 만들어진 환경이다. 실제로 해보면 재밌다. 도움도 많이 된다.
* 실제로 로봇에 프로그래밍 해서 그 로봇이 현실에서 자신이 프로그래밍 하는데로 움직이는것을 보면 정말 좋겠지만 여건이 안되는 만큼 -_-; 화면으로나마 그 로봇이 움직이는 것을 보면서 프로그래밍 해볼 수 있다. 여기에서 작성하는 코드들이 무슨 쓸모가 있을까 싶기도 하겠지만, 추후에 실제 로봇의 동작을 프로그래밍해서 넣는다면 여기서 쓰이는 방식과 비슷하게 넣을것이다.(하드웨어적으로 복잡한것을 명령어로 추상화 시킨다음에 그 명령어을 적절하게 복합적으로 사용하여 원하는 행동을 로봇이 하게 만드는 식으로..) 즉 말그대로 로봇 프로그래밍을 간접적으로나 해볼 수 있다.
* 컴퓨터 프로그래밍을 익히는 것은 악기를 익히는 것과 비슷하다. 당신은 그것에 관해 단순히 읽기 말고 해봐야 한다.
* 사람들이 읽기 쉬운 프로그램을 작성해야 한다.
* 창에서 Robot: Code and Learn 탭을 선택한다.
* 그후 화면에 Mp3 Play 버튼 비슷하게 생긴 버튼을 클릭한다.
* 저장하라는 창이 나오면 test 라고 넣고 저장한다.
* 화면의 로봇을 클릭한다.
* 위쪽 방향 키보드를 누르면 앞으로 이동한다.
* RUR-PLE에서도 디버깅을 한다.
* Play버튼 옆에 Play 모양과 작대기 하나 있는것은 step into와 비슷한 역할을 한다. 명령어가 하나씩 실행된다. 현재 실행되고 있는 명령어는 코드 부분에서 회색으로 highlighting 된다.
* Play버튼을 클릭하고 나서 로봇이 움직이고 있는 도중에 자신이 원하는 순간에 step into 버튼(play 버튼 옆에 있는)을 클릭하면 그 순간부터 명령어가 하나 하나씩 실행된다.
* 버튼들 중에서 벽 처럼 생긴 버튼을 클릭한다. 그럼 아래 그림과 같은 화면이 나온다. 여기서 클릭! 클릭~! 해서 벽들을 만들 수 있다.
* 벽 만들기 연습에서 한 코드들을 함수화 해서 중복 제거를 한다.
* next_to_a_beeper() : beeper가 현재 로봇의 자리에 있으면 true, 없으면 false를 반환한다.
* 위의 if문과 함수 정의, repeat를 사용하여 아래 화면과 같은 상황을 처리한다.
* 아그래 그림처럼 로봇이 방안을 한바퀴돌게 해보자. 방 크기에 따라서 반복 횟수를 다르게 해줘야 한다. 크기가 5라면 5*4=20 이런식으로..
* not은 아래와 같은 식으로 사용한다.
* 문제에서 아래와 같은 소스를 참고 하라고 한다. 저는 좀 다르게 했습니다. 우선 참고는 했고..
* 아래와 같은 식으로 사용한다.
- AcceleratedC++/Chapter13 . . . . 21 matches
''(9.6절에 있는 기존의 프로그램을 이용한다.)''
Grad 클래스는 Core로 부터 파생되었다(Derived from), 상속받았다(inherits from), 혹은 Core는 Grad의 base class 이다 라는 표현을 사용한다.
또한 파생 클래스는 부모 클래스의 메소드를 재정의 하여서 자신에게 맞도록 수정하여 동작하는 것을 허용한다.
상기의 클래스는 Grad의 멤버 함수로 부모 클래스의 read_common, read_hw의 함수를 그대로 상속받았다는 것을 가정한다.
Core::grade()를 사용하지 않고 grade()를 사용하게 되면 Grade:grade()를 재귀적으로 호출하여 어떤 결과를 리턴할지 예상하지 못한다.
|| * 전체 객체에 대한 공간을 할당 [[HTML(<BR/>)]] * 기본 클래스 생성자 호출, 기본클래스 공간 초기화 [[HTML(<BR/>)]] * 생성자의 초기설정자''( ): { 사이에 존재하는 것들 )''를 이용해서 파생클래스의 멤버 초기화 [[HTML(<BR/>)]] * 파생 클래스의 생성자의 본체를 실행한다. ||
Grad의 생성자는 Core의 생성자가 midterm, final을 초기화 한다는 가정하에서 thesis만을 초기화하고 있습니다. 이러한 초기화는 암묵적으로 행하여진다.
compare(g, c); // Grad, Core레코드를 비교한다.
다시 말해서 Grad가 Core의 자식 클래스 이므로 Grad객체를 통해서 Core클래스의 함수를 바인딩시켜 사용하는 것이 가능하다는 뜻이다. ''(대신에 이 함수의 안에서는 Grad의 Core 의 요소들만을 취한다.)''
'''대신 virtual 키워드로 지정된 함수는 파생 클래스에서 반드시 재정의 되어야한다는 특징이 있다.'''
virtual std::istream& read(std::istream&); // virtual 키워드로 정의된 함수는 반드시 재정의되어야한다.
이렇게 프로그램이 작성되면 동일한 기능을 하는 프로그램을 자료형에 따라서 2가지로 따로 작성해야한다.
마지막 2가지 문제는 virtual로 정의된 멤버함수를 통해서 해결. 처음의 2가지를 해결하는 방법은 2가지가 존재하며 13.3~13.4절에 걸쳐서 설명한다.
인자를 전달하면서 생기는 모호함을 피하기 위해서 compare 라는 이름대신에 compare_Core_ptrs를 사용하여 컴파일러가 명시적으로 이 함수를 사용하도록 한다.
특정 형의 포인터를 캡슐화시킨 인터페이스를 제공해서, 프로그래머에게 포인터가 보이지 않도록 하는 방법을 제공한다.
'''원하는 방식대로 동작하는 것인지 아닌지는 프로그래머의 의도에 달려있다.'''
만약 부모 클래스에 있는 메소드와 메소드 명은 갖지만 파라메터나 타입이 같이 않으면 메소드는 완전히 다른 함수로 인식되어 작동한다.
//만약 r이 Core의 객체이고 Core::regrade(double)는 인자로 받은 것을 final에 기록한다.
//만약 r이 Grad의 객체이고 Core::regrade(double)는 인자로 받은 것을 final에 기록한다.
r.regrade(100); // 컴파일 오류. Grad::compare 를 기대하기 때문에 이런 문제가 발생한다.
- AcceleratedC++/Chapter14 . . . . 21 matches
Student_info 클래스는 레코드의 인터페이스. 레코드의 메모리 공간을 관리한다.
만약 객체 x가 y를 가리킨다면 x를 복사한다고 해서 y도 볼사될까?
이 클래스는 객체의 형에 무관한게 동작하여야 하므로 템플릿으로 작성한다.
|| * Handle은 객체의 참조값 [[HTML(<BR/>)]] * Handle은 복사가 가능하다 [[HTML(<BR/>)]] * Handle 객체가 다른 객체에 바인딩되어 있는지 확인이 가능 [[HTML(<BR/>)]] * Handle클래스가 가리키는 객체가 상속구조의 클래스형을 가리킨다면 virtual 에 의해 지정된 연산에대해서 다형성을 제공한다. ||
대신 일단 그 객체는 오직 하나의 Handle만을 부착시켜야 하며, 일단 부착시킨 뒤에는 포인터가아닌 Handle을 이요해서 객체에 접근해야한다.
Handle(const Handle& s) : p(0) { if (s.p) p = s.p->clone(); } // 복사 생성자는 인자로 받은 객체의 clone() 함수를 통해서 새로운 객체를 생성하고 그 것을 대입한다.
if(&rhs != this) { // 자기 참조를 조사한뒤 행동방식을 결정한다.
} // 최기화를 할때 생성한 객체를 가리키는 결과를 리턴한다.
Handle 클래스는 연결된 객체의 clone() 멤버함수를 이용한다. 따라서 Core클래스에 clone()메소드를 public으로 작성하는 것이 필요하다.
이경우 대상객체의 해제는 객체를 가리키는 마지막 핸들이 소멸될때 행해져야한다. 이를 위해 '''레퍼런스 카운트(reference count, 참조계수)'''를 사용한다.
이를 위해서 우리는 이전의 클래스에 '''카운터(counter, 계수기)'''를 추가하고 객체의 생성, 복사, 소멸시 이 카운터를 적절하게 갱신한다.
Student_info s2 = s1; // s1의 값을 s2로 복사한다. 하지만 내부의 객체는 같은 객체를 가리킨다.
필요없는 복사는 일어나지 않지만 이 경우 프로그래머가 원치 않을 경우에도 동일한 객체를 가리키는 일이 발생한다.
기본 인터페이스는 이전의 Str과 동일하지만 자료구조가 Ptr< Vec<char> > 형으로 정의되었기 때문에 전체적인 메소드의 세부 구현이 많이 변경되었다. 그리고 Ptr템플릿으로 자료구조를 다룸으로서 Str클래스가 동일한 객체를 가리킬 수 있는 기능을 제공한다.
이를 해결하기 위해서 우리는 전역함수인 clone()를 만들어서 해결한다. ''(소프트웨어 공학에서는 한단계를 우회하면 모든 문제가 해결된다라는 말이 있는데 여기에 적용될 수 있다,)''
template<>를 사용하면 특정 인자 타입에 대한 특정 템플릿 함수의 버전을 정의한다.
|| * Ptr<T>::make_unique()를 사용하지 않는다면 T::clone은 불필요 [[HTML(<BR/>)]] * Ptr<T>::make_unique를 사용한다면 T::clone가 있다면 T::clone을 사용할 것이다. [[HTML(<BR/>)]] * Ptr<T>::make_unique를 사용한다면 T::clone가 미정의되었다면 clone<T>를 정의해서 원하는 바를 얻을 수 있다. ||
만약 const 객체를 통해서 operator[]를 통해서 접근한다면 객체의 내용을 바꾸는 것을 허용해서는 안된다.
- Chapter II - Real-Time Systems Concepts . . . . 21 matches
Soft / Hard 가 그 두가지 예라고 할 수 있다. Soft Real Time 이란 말은 Task 의 수행이 가능하면 보다 빠르게 진행 될 수 있게 만들어진시스템을 말한다.
반에 Hard System이란 특정 시간내에 Task의 작업이 완수 되어야 하는 작업들을 말한다. 대부분의 Real-Time 시스템에서는 두가지
시스템의 혼합을 필요로한다.
책에 나온 예는 다음과 같다. 참고적으로 알아 두었음 한다.
작은 시스템에서는 시스템의 효율성을 위해 보단 간편하고 일반적인 디자인을 사용한다고 한다. 실제로 어플리케이션이 작동하는 부분을 Background System이라고 하며 ISR (interrupt service rountines) 라고 불리우는 인터럽트 부분을 Foreground system이라고 한다.
태스크에 의해 쓰여지는 빈 공간을 말한다. 이러한 리소스는 I/O , Printer , Memory , KeyBoard 가 될 수 있으며 다른 기타 자원도 있다.
공유 자원이란 하나 이상의 Task가 같은 자원을 쓸 경우를 말한다. 두 Task는 배타적으로 같은 Resouce에 접근을 하며 Data의 파손을 방지한다. 이러한 방식을 mutual exclusion (상호 배타성) 이라고 한다.
멀티태스킹이란 프로세스의 스케줄과 CPU의 스위칭에 의해 복수의 Task가 실행되는 것을 말한다. 또한 멀티태스킹이란 Back/Fore Ground 처럼 복수의 Task가 운영되는 것을
말한다.
말한다. 이렇게 하기 위해서는 지금 수행 중인 태스크의 환경(레지스터,변수등)을 저장공간(스택)에
커널은 멀티태스킹에서 태스크의 관리를 수행하며 또한 태스크 사이에서의 통신을 담당한다. 또한
커널은 CPU 시간을 측정하며 세마포어,메세지,큐등과 같은 서비스를 제공한다.
Task Stack 에 값을 저장하여 해당 Task로 다시 진입했을 때 스택에서 꺼내 그 값을 복원하는 방법이 있겠습니다.
Time Slicing 이라고도 한다. 또한 이 수행 시간을 quantum 이라고 한다.
HARD에서는 정확히 그리고 정해진 시작에 작업을 마쳐야 한다.[[BR]]
* CPU는 가장 높은 우선순위를 갖는 TASK를 수행한다는 점.
- DPSCChapter3 . . . . 21 matches
연관된 혹은 의존적인 객체들의 집합을 만들기 위한 인터페이스를 제공한다. 클라이언트가 구체적인 클래스들에 대한 구체화
패턴은 실제로 아주 간단하다. 문제 상황은 많은 부분들을 포함한다. Abstract Factory 패턴이 적용될 수 있는 예제를 보도록
부분들을 원한다. 즉 Ford 자동차는 Ford 엔진과 변속장치를 가져야한다. 이것은 Ford Family안의 부분들이다. 셋째, 우리는
그리고 모든 faimily에서 같은 코드를 사용해서 부분들을(엔진,변속장치..) 얻는 것을 사용한다.
된 여러 종류의 클래스들 중 하나를 선택할 수 있도록 해주는 것을 의미한다.
Abstract Factory Pattern는 여러 개의 Factory중 하나를 선택할 수 있도록 해주는 것을 수행한다. )
우리는 CarPartFactory라는 추상 팩토리 클래스 정의를 하면서 패턴 구현을 시작한다. 이것은 "구체적인 클래스들에 대한
클래스이다. 그것은 추상적인 상품 생성 함수들(makeCar,makeEngine,makeBody)을 정의한다. 그 때 우리는 상품 집합 당
하나의 구체적인 팩토리 하위 클래스를 정의한다. 각각의 하위 클래스들은 적당한 부분을 만들고 반환하기 위해서 상품 생성
함수를 재 정의한다. 그래서 우리는 Object를 상속한 새로운 하위 구조를 추가한다.
자동차 부분(part) 생성 메쏘드를 구현하기 위해서, 우리는 추상 팩토리 클래스로 시작한다.
그리고 이 메쏘드를 오버라이드하는 구체적인 하위 클래스를 추가한다.
Abstract Factory로, 부분들을(part) 결합시키는 것은 팩토리의 클라이언트가 하는 일이다. 팩토리는 부분들의(part) 하나의 집합의 (family)로 부터 나온다는 것을 보장한다. 하지만, 팩토리는 단지 부분을(part) 반환하는 일만 할 뿐이다. 최종 상품은 팩토리가 조립하지 않는다. 그것은 클라이언트의 일이다. (우리는 Abstract Factory와 Builder 패턴 사이의 주요한 차이점을 나중에 볼 것이다.)
하지만, 두 경우에 자동차를 생성하기 위한 코드와 그것의 컴포넌트 하위 부분은 여전히 같다. 즉, 모든 CarPartFactory 클래스들은 동일한 메시지 프로토콜을(다형성)을 구현하기 때문에, 팩토리 클라이언트는 팩토리 타입이 무엇인지 상관하지 않고 호출을 할 수 있다. 그것은 단지 팩토리 프로토콜에 의해 제공되는 일반적인 메시지를 전송한다.
따라서, CarAssmebler를 만들기 위한 자동차 종류가 무엇이고 그 하위 부분들이 무엇을 해야하고, 그것의 실제 부분의 인스턴스가 무엇을 수행해야 할지를 결정한다. ABSTRACT FACTORY 해결은 우리가 CarAssembler 객체 밖의 모든 행동들을 추상화시킨다. 그리고 팩토리로 분리한다. 특별한 자동차 팩토리로 CarAssembler 확인을 한 후에, CarAssembler는 간단하게 구체적인 자동차와 하위 부분을 만들기 위한 팩토리를 호출한다.
여기에 효과적인 두 개의 추상이 있다. 첫번째, 모든 CarPartFactory들이 같은 메시지 인터페이스를 구현한다. 클라이언트가 그들이 메시지를 보내기 위해서 CarPartFactory의 정확한
타입이 무엇인지 신경쓰지 않고 같은 생성 메시지를 보내는 것을 팩토리가 수행한다.
- ExtremeProgramming . . . . 21 matches
초기 Customer 요구분석시에는 UserStory를 작성한다. UserStory는 추후 Test Scenario를 생각하여 AcceptanceTest 부분을 작성하는데 이용한다. UserStory는 개발자들에 의해서 해당 기간 (Story-Point)을 예측(estimate) 하게 되는데, estimate가 명확하지 않을 경우에는 명확하지 않은 부분에 대해서 SpikeSolution 을 해본뒤 estimate을 하게 된다. UserStory는 다시 Wiki:EngineeringTask 로 나누어지고, Wiki:EngineeringTask 부분에 대한 estimate를 거친뒤 Task-Point를 할당한다. 해당 Point 의 기준은 deadline 의 기준이 아닌, programminer's ideal day (즉, 아무런 방해를 받지 않는 상태에서 프로그래머가 최적의 효율을 진행한다고 했을 경우의 기준) 으로 계산한다.
그 다음, 최종적으로 Customer 에게 해당 UserStory 의 우선순위를 매기게 함으로서 구현할 UserStory의 순서를 정하게 한다. 그러면 UserStory에 대한 해당 Wiki:EnginneringTask 를 분담하여 개발자들은 작업을 하게 된다. 해당 Task-Point는 Iteration 마다 다시 계산을 하여 다음 Iteration 의 estimate 에 적용된다. (해당 개발자가 해당 기간내에 처리 할 수 있는 Task-Point 와 Story-Point 에 대한 estimate) (Load Factor = 실제 수행한 날 / developer's estimated 'ideal' day. 2.5 ~ 3 이 평균) Iteration 중 매번 estimate 하며 작업속도를 체크한뒤, Customer 와 해당 UserStory 에 대한 협상을 하게 된다. 다음 Iteration 에서는 이전 Iteration 에서 수행한 Task Point 만큼의 일을 할당한다.
Iteration 중에는 매일 StandUpMeeting 을 통해 해당 프로그램의 전반적인 디자인과 Pair, Task 수행정도에 대한 회의를 하게 된다. 디자인에는 CRCCard 과 UML 등을 이용한다. 초기 디자인에서는 세부적인 부분까지 디자인하지 않는다. XP에서의 디자인은 유연한 부분이며, 초반의 과도한 Upfront Design 을 지양한다. 디자인은 해당 프로그래밍 과정에서 그 결론을 짓는다. XP의 Design 은 CRCCard, TestFirstProgramming 과 ["Refactoring"], 그리고 StandUpMeeting 나 PairProgramming 중 개발자들간의 대화를 통해 지속적으로 유도되어지며 디자인되어진다.
개발시에는 PairProgramming 을 한다. 프로그래밍은 TestFirstProgramming(TestDrivenDevelopment) 으로서, UnitTest Code를 먼저 작성한 뒤 메인 코드를 작성하는 방식을 취한다. UnitTest Code -> Coding -> ["Refactoring"] 을 반복적으로 한다. 이때 Customer 는 스스로 또는 개발자와 같이 AcceptanceTest 를 작성한다. UnitTest 와 AcceptanceTest 로서 해당 모듈의 테스트를 하며, 해당 Task를 완료되고, UnitTest들을 모두 통과하면 Integration (ContinuousIntegration) 을, AcceptanceTest 를 통과하면 Release를 하게 된다. ["Refactoring"] 과 UnitTest, CodingStandard 는 CollectiveOwnership 을 가능하게 한다.
* On-site customer: 같은 작업실 내에서 프로그래머와 커스터머가 언제든지 대화할 수 있도록 보장한다.
* ThePlanningGame: 개발자는 UserStory들에 대해서 구현, 예측, 지시들에 대해 토론한다.
* TestDrivenDevelopment : Programming By Intention. 프로그래머의 의도를 표현하는 테스트코드를 먼저 작성한다. 그렇게 함으로서 단순한 디자인이 유도되어진다. (with ["Refactoring"])
* PairProgramming: 프로그램코드는 두명 (driver, partner)이 하나의 컴퓨터에서 작성한다.
* ContinuousIntegration: 매일 또는 수시로 전체 시스템에 대한 building 과 testing을 수행한다.
* Forty-hour week: 지친 심신은 실수를 만들어낸다. 가능하면 초과근무를 피한다.
- MoniWikiOptions . . . . 21 matches
* 테마를 지정한다. See also MoniWikiTheme
* 기본 css의 경로를 설정한다. 기본값은 `$url_prefix.'/css/default.css'` $theme를 설정한 경우는 이 값이 자동 설정된다.
* 대문을 지정한다. 기본값은 FrontPage.
* 기본값은 `$url_prefix.'/css/kbd.js'` : 사용하기 싫으면 그 값을 빈 문자열로 한다.
* 로고를 클릭할 때 가는 페이지를 정한다. 기본값은 $frontpage.
메뉴의 구분자를 설정한다. 기본값은 `'|'` (''deprecated'')
* wikismiley.php를 읽어들이게 된다. 이 값을 "foobar"로 고치고 foobar.php를 wikismiley.php 대신으로 쓰면 자신이 원하는 smiley를 설정할 수 있게 된다.
* 언어를 설정한다. 기본값 'auto'로 브라우져 설정을 따르며, 강제로 한국어로 하고자 하면 'ko_KR'로 지정한다.
* Email Notification을 활성화 한다. 이 기능을 키면 SubscribePlugin을 사용할 수 있다.
* [Trailer]를 활성화 한다.
* 페이지 카운터의 사용 여부를 결정한다 (See PageHitsMacro)
* 모니위키 블로그에서 트랙백을 사용할 수 있게 한다.
* 기본 css의 경로를 설정한다. 기본값은 `$url_prefix.'/css/default.css'`
* "db3, db2, gdbm"등등. php가 지원하는 dba모듈의 유형을 지정한다. 기본값은 보통 db3이며, 처음 설치시 monisetup.php에 의해 자동으로 결정한다.
* rcs를 ~/bin같은 곳에 설치할 때 이 변수에 path를 지정한다 예를 들어 `/usr/local/bin:/usr/bin`
* 윈도우즈 환경이라면 {{{$path='./bin;c:/program files/vim/vimXX';}}}와 같은 식으로 설정한다.
* UploadFile에서 허용되는 확장자를 지정한다.
* (monisetup.php에 의해 자동 결정된다) apache2를 쓸 경우는 '?'를 쓰거나, `AcceptPathInfo on`를 쓰고 '/'로 지정한다.
- OurMajorLangIsCAndCPlusPlus/math.h . . . . 21 matches
||int abs ( int n ) || 정수파라미터에 대한 절대값을 리턴한다 ||
||double acos ( double x ) || arc코사인 값을 계산한다 ||
||double asin ( double x ) || arc사인 값을 계산한다 ||
||double atan ( double x ) || arc탄젠트 값을 계산한다 ||
||double atan2 ( double y, double x ) || 2개의 파라미터(각)에 대한 arc 탄젠트 값을 계산한다||
||double ceil ( double x ) || x와 같거나 x보다 큰 가장작은 정수를 리턴한다||
||double cos ( double x ) || 코사인 값을 계산한다 ||
||double cosh ( double x ) || x에 대한 쌍곡선의 코사인 값을 계산한다 ||
||double exp ( double x ) || x의 값의 지수를 리턴한다 ||
||double fabs ( double x ) || 실수형의 절대값을 실수형으로 리턴한다 ||
||double floor ( double x ) || x와 같거나 x 보다 가장 작은 값을 리턴한다 ||
||double fmod ( double x, doublr y ) || x/y의 나머지를 계산한다 ||
||long labs ( long n ) || long형에 대한 절대값을 리턴한다 ||
||double ldexp ( double x , int exp ) || mentissa와 exponent값을 구한다 ||
||double log ( double x ) || x의 로그값을 구한다 ||
||double log10 ( double x ) || x의 상용로그값을 구한다 ||
||double sin ( double x ) || 사인값을 계산한다 ||
||double sin ( double x ) || 쌍곡선의 사인값을 계산한다 ||
||double sqrt ( double x ) || x에 대한 루트값을 리턴한다 ||
||double tan ( double x ) || tan값을 계산한다 ||
- ZeroPage정학회만들기 . . . . 21 matches
* 주변의 사람들을 설득한다. 현재 컴퓨터 공학과 학우들은 물론 학과장님을 포함한 다른 교수님들까지 ZeroPage 의 홍보와 현재 활동 상황등을 보여주며 설득한다.
* 졸업 선배들에게 지원을 요청한다.
* 우선 시험기간이므로.. 이른시일내에(수삼일내에) 학우들에게 동의서를 받고 졸업선배들에게 e-mail 을 보내 추천을 부탁드린다. 동시에 ZeroPage 정학회화에 대한 공론화를 꾀한다.
* 방학중에 교수님들께 홍보물을 보여드리고 설득한다.(방학중)
- 다 좋은생각입니다만, 일단 정학회를 만들기 위해서는 학생들 사이에서의 여론을 조성하는 것이 무엇보다 우선이 되어야 할것 같군요 우리 과 사람들이 다 인정한다면 학생회에서도 훨씬 더 쉬울 수 있기 때문입니다. 학생회가 아니라도 여론 조성은 제1순위가 되어야 할것 같습니다 - 상욱 (["whiteblue"])
위에서는 정학회로서의 책임과 의무는 없는 것 같은데. 제로페이지가 정학회가 된다면, 해당 행사를 열때마다 정학회로서의 역할을 해야 한다고 생각한다. 즉, 특정 세미나를 한다고 한다면, ZP 내의 세미나도 있겠지만 적절한 수의 학과 내 외부 세미나나 이벤트를 주최할 수 있어야 한다는 것이지. (이때는 물론 학생회에게 지원을 요청할 수 있겠고) 정학회라면 더이상 이전의 동아리 스타일의 내부모임단체가 아니다. 정학회가 된다고 한다면 자신에게 이득이 되는 일인 동시에 과내사람들에게도 동시에 이득이 되는 일이 되어야 한다.
정학회로 승격되기 위해 여러가지 홍보대책을 세우는 것도 의미있는 일이겠지만, 그 전에 '정학회인 경우 할 일'들을 직접 실천할 수 있다면, 그리고 과 내에서 보기에도 정식학회가 있음으로서 과내 사람들이 이득을 얻게 되고, 정식학회로서의 자격이 있다고 보여진다면, 홍보의 절반이상은 저절로 되리라 생각한다.
ZeroPage 에서의 대내외 활동경력은 주로 90-94년도에 집중되어있고, 그 이후에는 외부 활동은 거의 미천하다고 생각한다. 내부적인 활동은 최근들어서 비교적 활발했다고 생각하지만, 여전히 학과 사람들 대상으로 하는 열린 행사들은 거의 없었다고 판단한다. 외부 행사에 도움을 준적이 있지만 (주로 JuNe 형 주도로 열리긴 했다) 과내 사람들에게 홍보가 되진 않았다. 여전히 과에서의 ZeroPage 의 행사들은 바깥일일 뿐이라는 생각을 한다. (그리고, 외부 타 학교나 직장 등에서 중앙대하면 ZeroPage 의 이름보다는 JStorm 이 더 먼저떠오르는게 아직은 당연한 현상이다.)
* 결론이 지도교수님모시기로 났습니다. 학과에서 '정학회' 로써 학과차원의 지원은 불가능할 것이다 라는 것이 학과장님의 말씀이셨습니다. 과차원의 지원이 있지 않다면 굳이 명분을 쌓을 이유가 없어진다고 봅니다. 설문조사를 하는 것이 명분을 얻기 위해 한다고 보기 때문에 이제는 설문조사가 필요없을 듯 싶습니다. 전에 설문지 돌렸을 때 서명해주신 학우들께 죄송할 따름이지만요.. 혹시 설문조사를 하는 것이 좋다는 의견이 제가 언급한 내용과 다른 이유에서라면 말씀해주세요. 다른 이유가 있을 것이라는 생각이 듭니다. --창섭
- ''단순히 설문을 한다는 의미 외에 ["ZeroPage정학회만들기"] 를 학우들에게 알린다는데에도 의미가 있다고 생각합니다. 제 생각이지만, 제로페이지의 정학회化에 대해 논의가 이루어지고 있다는 사실을 알고 있는 학우는 거의 없는 것 같습니다. (거의 제로페이지 내부사람이나. 설문에 참여했던 사람정도가 아닐까요. 설문지를 작성한 학우들이 많다면 할말이 없지만요.;;). 만약 그렇다면, 이번 기회에 쉽고 편한 방법으로 학우들에게 알리는건 어떨런지요 - 임인택'' [[BR]]
정확히는 '정학회'라는 용어가 아니라(어느 곳에도 정학회의 정의는 없으니.. 학과장님께서도 '정학회가 먼가?' 라고 하셨을 정도입니다...--; ) '지도교수님을 모시는 학회'가 된다고합니다. 정도가 될 것 같네요.. 아마 보기에는 '도움이 될것이다. 타 학우들에게 영향을 못미친다. 그저 그렇다.' 등등 의 관계성과 영향력의 정도를 묻는 보기나 '찬성한다. 반대한다. 관심없다.' 정도의 관심유무, 찬반의견을 묻는 보기쯤이 나올 듯합니다. 더 좋은 보기가 있었으면 좋겠는데.. 잘 생각이 나질 않습니다..^^; --창섭
- 요정 . . . . 21 matches
'성스러운 것' 과 '사악한 것' 어디에도 속하지 않는다. 보통때는 사람들과 다를 것도 없는 생활을 한다. 무리를 만들어 사는 것도 있으며 혼자서 사는 경우도 있다. 나무나 물의 정령처럼 자연계에 오랫동안 살기도 하고 모습을 감추고 살기도 한다.
육지에 사는 것, 물 속에 사는 것이 있으며 성질도 가지각색으로 인간에게 도움을 주는 것 (아일랜드의 레프리콘) 도 있지만 요정의 화살을 쏘아서 마비시키는 (콘월의 픽시) 등 나쁜 짓을 하는 것도 있다. 땅의 풍토나 자연에 따라 가지각색의 요정이 있다. 요정은 스스로 선택해서 모습을 나타내기 때문에 사람이 요정을 만나기는 쉽지 않다. 다만 느낄 수는 있다. 눈보다 귀로 요정의 존재를 아는 사람이 훨씬 많다는 걸 알아두어야 한다. 발소리나 노래 소리 따위는 요정의 짓이 대부분이다. 요정은 보기도 어렵지만 보게 되더라도 눈깜짝할 순간에 놓쳐버리고 만다. 투시 능력이 있는 사람에게는 보인다고도 하지만 보통 인간에게도 간단한 방법이 있긴 하다. 네잎 클로버를 머리 위에 올려놓고 요정이 바르는 약을 눈에 붙인다. (다만 약 만드는 법은 요정만이 알고 있다)
영국의 웨일즈 지방 어딘가는 그곳을 왕래하다가 헛발을 디뎌 넘어지면 순간 요정이 보이는 1평방 야드 정도의 땅이 있다고 한다. 보기 쉬운 시기는 5월 1일, 6월 24일 (하지), 10 월 31일 (할로윈) 따위, 시간은 태양이 머리 꼭대기에 오는 정오, 한밤중, 황혼 무렵이다.
작은 산이나 물속, 숲 근처에 사는 요정이 많은 듯하다. 물론 사람 근처에 사는 걸 즐기는 요정도 있다. 요정 나라는 작은 산의 입구부터 대지 밑, 또는 해변의 동굴부터 바다밑까지 널리 퍼져있다. 또 요정들은 호수나 냇물 속, 나무 구멍이나 뿌리 사이, 언덕에 뚫린 굴속에 사는 것으로 여겨졌다. 그들은 달빛을 받으며 춤을 추는 걸 즐겼는데, 사람들은 항상 '요정의 링' 을 보고 그들이 맘에 들어 한 무도장을 발견할 수 있다. 그것은 버섯이 점점이 줄지어 완전한 원형을 만들어 놓은 것으로, 그 원 속의 풀은 주위의 풀보다 짙은 녹색을 띈다. 사람들은 이 순수한 원을 피해 가야한다. 만약 그 원 속에 발을 디디거나 그 속에서 잠을 잔다면, 요정들에게 유괴될지도 모른다고 생각했기 때문이다. 요정들에게 유괴되어 그들이 사는 지하에서 몇 분 있다 돌아오면 지상에서 는 이미 몇 년이 지나있다고 한다.
대체로 남을 돌봐주길 좋아하는 밝고 쾌활한 성격으로, 마음에 드는 인간에게 선물을 하거나 집안일을 도와주지만 그것을 떠들어대거나 감사해서는 안된다. 프라이버시를 침해하거나 요정이 다니는 길을 방해하면 그들은 심술궂은 마음을 갖게 된다. 빌려주고 꿔주는 것도 귀찮아 한다. 가령 요정에게 음식을 꿨다면 돌려줄 땐 똑같은 양이 아니면 안된다. 만약 조금이라도 많다면 화를 내며 두번 다시 꿔주지 않는다. 반대로 빌려준다면 두 배로 돌려준다고 한다. 요정은 친근한 성격이지만 대체로 요정 쪽에서 친구를 선택한다. 집에서 가사를 도와주는 '브라우니' 따위각 그 대표적인 예이다. 브라우니는 근심 걱정을 해결해 주는 요정으로 어려움에 처한 가족을 도와주었던 이야기들이 각지에 남아있다. 도움 받은 사람들은 대개 가난하지만 바른 마음을 가지고 살아가는 사람들이다.
집단으로 사는 요정 중에서도 궁전 형태를 갖춘 요정들에게는 분명 남녀의성차가 있다. 또 남성을 유혹하는 요정인 라난시는 여성, 여성을 유혹하는 요정 간코나는 남성이다. 그 밖의 요정에게는 남성이나 여성도 있지만 그 양쪽을 합쳐서 가지거나 또 어느 쪽도 아닌 것도 있다고 한다
모두가 해질녘까지 적당한 장소에서 잠을 잔다. 예전엔 난로에 연결된 굴뚝 속이나 냄비를 걸어 두는 쇠사슬 위에 솜씨 좋게 붙잡고 잠자는 브라우니가 목격되기도 했다. 항간에는 만약 잠자고 있는 요정을 보더라도 잠을 깨우거나 하는 바보같은 짓은 하지 않는게 좋다고 한다.
무슨 놀이인지는 알 수 없지만 하링이라는 놀이를 좋아한다고 한다. 혹 요정들이 게임을 같이 하자고 유혹하더라도 자신이 없으면 하지않는게 낫다. 요정은 지기 싫어해서 술수를 써서라도 이기려고 하니까 승산이없다.
콘월 지방에 사는 난쟁이 픽시 (pixie)는 빨간 뾰족모자에 푸른 옷을 입고 둥근 눈과 귀를 가지고 있는데, 꽤 짓궂은 장난을 치기 좋아해 길에서 여행자가 길을 잃게 하고 집에서는 물건을 숨기거나 촛불을 불어 꺼 버렸다. 콘월 지방 사람들은 픽시를 세례를 받기 전에 죽은 갓난아기의 영혼이라 믿었다. 또 픽시의 땅 '가리토 랩 (가리트립스라고도 함)' 에 잘못하여 발이 닿으면 요정의 화살에 맞는다고 한다. 콘월의 옛 광산 갱도에는 '노츠카' 라는 광산의 요정이 살고 있어 친절한 사람에게는 바위를 울려서 광산이 있는 장소를 알려주었다고 한다.
아일랜드를 대표하는 레프리콘은 사람들에게 전혀 해코지하지 않는 아주 온순한 요정으로, 땅굴 속에 숨어 살면서 언제나 한쪽 구두만 만든다고 한다. (공포영화에 주연으로 나오기도 했지만..원래는 착한 요정이랍니다) 식사를 대접해 준 구둣방 노부부를 위해 밤새 구두를 만들어 주었다는동화 속 난쟁이 요정들은 바로 이들이다. 아일랜드의 또다른 요정 밴시는 늙은 여자의 정령으로 죽음이 찾아오려 하는집밖에서 울부짖는다고 전해진다. 밴시는 머리를 길게 기르고 푸른 옷에 흰색 망토를 입은 창백한 여성으로 직접 사람들을 해치지는 않지만 섬뜩한 울음소리 덕분에 두려운 요정으로 알려져 있다. 아일랜드에는 라난시라는 요정이 또 있는데 매우 아름다운 용모로 자기에게 매혹된 남자들의 생명을 앗아간다고 한다. 이 요정은 시인이나 예술가에게 영감을 주는 요정으로, 그리스 신화의 뮤즈들과 흡사한 점이 많다.
북유럽 신화에 등장하는 드워프는 손 기술이 뛰어나 무엇이든 잘 만드는 재주꾼이다. 드워프는 긴 수염과 작으면서도 단단한 몸집, 그리고 대단한 먹성으로 유명한데 동화 백설공주와 일곱 난장이들의 난쟁이의 모티브가 되었다고 한다.
요정은 일반적으로 양심이나 절조가 없고 장난기가 있어 인간에게 친절한 대접을 받으면 거창하게 답례하지만 조금이라도 푸대접을 받으면 심하게보복한다. 때때로 인간의 아기와 못갱긴 자기 아기를 바꿔 놓기도 하는데, 이때에는 요정의 아기 발에 기름을 바르고 천장에 매단 후 아래에서 불을 피우면 마지못해 훔쳐갔던 아기를 돌려준다고 한다.
요정들은 치유 능력을 가진데다 환상과 저주를 잘 다뤘다. 가끔 인간과 결혼하기도 했는데, 특히 여자 요정은 매우 까다로워서 인간 남편이 약속을 어기면 그날로 결혼 생활이 끝나 버린다고 한다.
- AcceleratedC++/Chapter12 . . . . 20 matches
12장에서는 string 클래스의 클론 버전인 Str 클래스를 제작한다. Str 클래스는 string 클래스의 형변환과 연산자의 구현에 초점을 맞추어서 제작한다.
이 클래스는 복사 생성자, 대입 연산자, 소멸자가 하는 모든일을 Vec클래스에 일임한다.
Str s("hello"); // s를 생성한다.
Str t = "hello"; // t를 초기화 한다.
s = "hello"; // 새로운 값을 s에 대입한다.
클래스는 기본적으로 복사 생성자, 대입 연산자의 기본형을 제공한다. 위의 클래스는 이런 연산에 대한 기본적인 요건을 만족하기 때문에 const char* 가 const Str& 로 변환되어서 정상적으로 동작한다.
상기의 클래스에는 Str(const char*) 타입의 생성자가 존재하기 때문에 이 생성자가 Str 임시 객체를 생성해서 마치 '''사용자 정의 변환(user-define conversion)'''처럼 동작한다.
입력 연산자는 일견 객체의 상태를 바꾸기 때문에 멤버함수로 선언이 되어야 한다고 생각하기 쉽다. 그러나 이항 연산자의 경우 파라메터의 맵핑이 좌항의 경우 첫번째 우항의 경우 두번째인자로 받는데, 이렇게 될 경우 멤버함수로 >>연산자를 오버로딩하면 우리가 워하는 결과를 얻을 수 없다.
상기와 같은 이유로 operator>>는 비멤버함수로서 선언이 되어야 한다.
위의 식 처럼 사용하기 위해서는 Str::size() 가 정의 되어야한다.
if(is) { // EOF를 만나면 입력 스트림을 false 값을 리턴한다.
if(is) // 입력중 공백 문자를 만났을 경우 방금전에 입력으로 들어왔던 한문자를 무시한다.
* operator+는 연산의 결과는 Str 형을 리턴해야한다.
이런식으로 동작하게 하면 임시 변수의 생성으로 인한 오버헤드가 상당함으로 알 수 있다. 이런 문제를 해결하기 위해서 string 클래스는 자동변환에 의존하지 않고, 피연산자들의 모든 조합에 대해 결합 연산자를 제공한다.
11.2.2 에서의 explicit 키워드의 사용은 자동 형변환에 이용이 되는 단일 인자를 받는 생성자의 행위를 제한함으로써 프로그래머가 원치 않는 변환을 막는 기능을 한다.
하단의 코드가 올바르게 동작하지 못한다. 변환되는 형이 요구되는 형과 전혀 맞지 않기 때문이다.
|| c_str() || string 내부의 char*를 리턴한다. 따라서 사용자가 delete를 할 수는 없지만 포인터를 얻어서 수정할 수 있다. ||
|| data() || c_str()과 비슷하지만 '\0'로 종료되는 문자열이 아닌 배열을 리턴한다. ||
- AcceleratedC++/Chapter8 . . . . 20 matches
Ch9~Ch12 WikiPedia:Abstract_data_type (이하 ADT)의 구현을 공부한다.
Runtime이 아니라 Compile 타임에 실제로 타입이 변화하는 객체를 적절히 작성하면 올바른 동작을 보장한다.
template <class T> // type 매개변수의 지정, 이 함수의 scope안에서는 데이터 형을 대신한다.
실제 컴파일시 컴파일러는 프로그래머가 지정한 타입으로 이 함수를 인스턴스화 시켜서 생성하고 바인딩한다.
STL은 실제로 함수의 인스턴스화에 관한 표준적인 방식을 제정하지 않았다. 따라서 각 컴파일러마다 서로 다른 방식으로 함수를 인스턴스화한다. 따라서 자신의 컴파일러의 특징을 파악하는 노력이 필요.
|| accumulate(B, E, D) || D의 인자의 형을 기준으로 [B, E)를 비교하여 값을 모은다. 리턴값이 D의 자료형에 영향을 받기 때문에 문제의 발생소지가 존재한다. ||
인자로 받은 두 값의 타입이 완전히 같아야지만 올바른 동작을 보장받는다. 인자는 operator>(T, T)를 지원해야한다.
예를 들자면 find(B, E, D)같은 함수의 경우 ''아주 단순한 제한적 연산만을 이용''하기 때문에 대부분의 컨테이너에 대해서 사용이 가능하다. 그러나 sort(B, E)같은 경우에는 ''기본적인 사칙연산들을 반복자에 대해서 사용''하기 때문에 이런 연산을 지원하는 string, vector 만이 완벽하게 지원된다.
STL은 이런 분류를 위해서 5개의 '''반복자 카테고리(iterator category)'''를 정의하여 반복자를 분류한다. 카테고리의 분류는 반복자의 요소를 접근하는 방법에따른 분류이며, 이는 알고리즘의 사용 유효성 여부를 결정하는데 도움이 된다.
상기 2개의 구현 모두 begin, end iterator를 순차적으로 접근하고 있음을 알 수 있다. 상기의 함수를 통해서 순차 읽기-전용의 반복자는 '''++(전,후위), ==, !=, *'''를 지원해야한다는 것을 알 수 있다. 덧 붙여서 '''->, .'''와 같은 멤버 참조 연산자도 필요로하다. (7.2절에 사용했떤 연산자이다.)
class In 형의 반복자는 함수가 진행되는 동안 반복자를 통해서 읽기 연산만을 수행한다. class Out 형의 반복자는 *dest++ = *begin++; 의 연산을 통해서 쓰기 연산을 수행한다. 따라서 class Out 반복자는 '''++(전,후위). =''' 연산자만을 평가할수 있으면 된다.
class Out 반복자를 출력에 배타적으로 사용하려면 '''++ 연산이 대입문 사이에서 1번이상은 무효'''가 되도록 만들어 주어야한다.
[begin, end) 의 범위안에서 x를 찾아서 y로 치환한다.
여기서 beg는 입력 반복자, 출력 반복자 2가지의 특성을 모두 만족시켜야 한다.
순방향 연산자의 모든 연산을 지원하고 '''--'''연산을 지원한다면 이 반복자는 '''양방향 반복자(bidirection iterator)''' 라고 부른다. 표준 라이브러리 컨테이너 클래스들은 모두 양방향 반복자를 지원함.
임의 접근 반복자의 경우 '''양방향 반복자의 모든 특성'''과 함께 다음과 같은 연산을 만족한다.
임의 접근 반복자르 이용하는 알고리즘은 sort. vector, string 만이 임의 접근 반복자를 지원한다. list는 빠른 데이터의 삽입, 삭제에 최적화 되었기 때문에 순차적인 접근만 가능함.
C++의 모든 입출력 연산은 타입 지정연산이다. cin>>s.midterm>>s.final>>s.homework; 에서도 타입에 따라서 다른 일을 한다.
Class Out 가 순방향, 임의접근, 출력 반복자의 요구사항을 모두 반족하기 때문에 istream_iterator만 아니라면 어떤 반복자에도 쓰일 수 있다. 즉, 특정변수로의 저장 뿐만아니라 console, file 로의 ostream 으로의 출력도 지원한다. '' 흠 대단하군.. ''
- DPSCChapter1 . . . . 20 matches
Smalltalk Companion에서, 우리는 패턴의 "base library"를 추가하는 것보다 앞으로 요구될 수 있는 패턴으로 때때로 확장하고 해석해서, 설계자나 프로그래머를 위해 제공한다.
우리의 목적은 Design Pattern을 교체하려는 것이 아니다. 당신은 Design Pattern을 대신하는 것이 아니라 Design Pattern과 함께 Smalltalk Companion을 읽어야 한다.
우리는 Gang of Four 책에서 이미 잘 문서화된 정보는 반복해서 공부하지 않는다. 대신, 우리는 자주 그것을 참조해야한다. 여러분 또한 그렇게 해야한다.
다른 이론적인 테두리안에서 프로그램(''전통적인 절차식 스타일'')을 한 후 객체 지향 언어를 배우는 것은 어렵다. Smalltalk 안에서 복합된 응용 프로그램 하는 것을 배우는 것은 복잡한 새로운 기술과 문제에 대한 새로운 사고 방식을 요구한다.(" e.g Rosson & Carroll, 1990; Singley, & Alpert, 1991") "Smalltalk" 라는 산을 오르는 것은 확실히 사소한 것이 아니다. 일단 당신이 간단한 Smalltalk 응용 프로그램을 만드는 데 자신이 있는 경지에 닿았다고 해도, 아직 전문가의 경지와는 분명한 차이가 있다.
'''디자인 패턴'''은 끊이없이 발생하는 클래스 구성상의 문제에 해결책을 제시하는 재사용할수 있는 실행 모델이나 아키텍처이다. 때로 패턴은 단독적이거나 하위 클래스 구조에서 어떻게 매서드 들이 함께 작용하는지를 묘사한다.; 아마도, 패턴상에서는 좀더 빈번히 다중 클래스나 그들의 인스턴스의 협력을 보여줄다.
'''''패턴은 각기 다른 어플리케이션과 시스템상에서 재현되는 특별한(고유한, 플랫폼 종속적인) 아키택처, 전문가들이 새로운 어플리케이션,분야에서 발생하는 특별한 문제들을 제거한다. '''''(위에서 쓰인 one이 particular architecture와 동등한 위치로 해석한 방법. 다른의견 제안바람-상민
디자이너들-소프트웨어에만 국한하지 않은 수많은 분야에서-은 그들의 과거의 문제와, 해법에 경험을 비슷한 문제에 적용 시킨다. '''''Duego와 Genson(1996)은 전문 디자이너들이 사례를 기반으로 경험에서 인지한 지혜안에서 과거의 사례를 기억하고 그들이 배운것을 적용시키는 것에 주목한다. (생략 및 의역) ''''' 이것은 체스의 고수, 의사, 변호사 그리고 건축가들이 새로운 문제에 대응하는 추론 방식의 한 방식이다. 현재, 디자인 패턴은 소프트웨어 디자이너들이 배워온것들과 다른 분야의 디자이너(other designer)들의 경험들 모두를 감안한다. 이런 노력들은 결과적으로, "거인의 어깨에 올라서 있는것" 같은 방법으로 우리를 훌륭한 디자인에 이끌수 있다. John Vlissies(1997)은 디자인 패턴은 "전문 지식을 잡고 비전문가들이 그것을 이용하기 쉽게 해주는 것이라고 평한다. (p. 32).
디자인 패턴은 새로운 패턴에 관해서 간단하게 원리를 표현하고, 패턴은 존재하는 모습을 꾸준히 설명한다.패턴은 세부내용에 들어가기 앞서, 좀더 큰 관점으로 이해를 할수있게 한다. 패턴은 우리가 좀더 큰 관점에으로 ㄸ 다른 디자이너들의 생각의 교환시 객체과 클래스가 어떻게 구성되어 있는지 묘사한다. 우리는 "싱글턴 메소드로 데이터 베이스 접근 부분을 구성했습니다." 그리고 "데이터 베이스 접근은 오직 하나의 인스턴스만이 접근하도록 해습니다. 그 클래스는 싱글 인스턴스의 방법 사용을 위해서 클래스 변수를 사용할것입니다. 그 클래스는 광역으로 광역으로 접근가능한 인스턴스로 될것이지만, ''나중고침''
Christopher Alexander와 그의 친구, 동료들은 디자인 패턴이 공간활용과, 건축, 공동체의 구성방법 까지 확장되는 것에 관한 글을 써왔다. 여기에서 그들이 추구하는 바는 이런 분야에 적용을 통하여, 소프트웨어 디자인 패턴을 위한 또 다른 새로운 창조적 생각 즉, 영감을 얻기위한 일련의 작업(궁리)이다. ''The Timeless Way of Building''(1979) 에?? Alexander는 "때로는 서로다른 문화권에서 아주 약간은 다르게 같은 패턴의 버전들이 존재하걸 볼수 있다"(p.276) 라고 언급한다. C++과 Samlltalk는 비록 같은 기본적인 패턴에서의 출발을 해도 다른 언어, 다른 개발환경, 다른 문화로 말미암아 각자 다른 모양새를 보여준다.
Gang of Four의 ''Design Patterns'' 은 C++의 관점에서 디자인의 이슈와 해결책들을 제시한다. Design Patterns는 대부분 C++을 이용한 패턴들과, C++의 적용(implementation)과 관련있는 이슈들에 관한 견해를 다루고 있다. 그러한 이슈들은 C++ 개발자들에게는 매우 중요할지 모르지만, 다른 언어들을 이용하고 있는 개발자들에게는 자칫 이해하고 패턴의 적용에 어려움을 가지고 온다.
이책은 ''Design Patterns'' 에 대한 지침서, 편람으로 제작되었다. 하지만 관점은 ''Design Pattern''이 C++인것에 반하여 이 책은 Smalltalk에 기인한다. 그냥, 이 책 ''Smalltalk Companion''에 대해서 하나의 주제(design pattern)에 관한 다양한 자료 정도로 생각해 줬으면 한다. 우리는 Gang of Four book에서의 같은 패턴을 제공하지만, Smalltalk라는 안경을 통해서 바라볼것이다. (사실, 우리가 이름에 ''Samlltalk Companion''을 넣을때 어떤이는 "DesignPattern asSmalltalkCompanion" 을-역자주 Smalltalk언어상에서의 표현법 때문인것 같습니다.- 제안하기도 했다. 하지만 그런 이름은 hard-core Smalltalkers들만이 그 이름을 받아들일꺼라고 생각했다.)
물론, 우리는 Smalltalk로된 간단한 코드를 많이 제공한다. 대부분에서, 우리의 예제들은 ''Design Patterns'' 예제의 간단한 Smalltalk 버전은 아니다. 우리는 자주 C++ 예제의 단순한 번역 이상으로 좀더 유용하다는 것을 느꼈다. 여기에 간단한 말로 ''Design Patterns''에 보충한 ''Smalltalk Companion''을 위한 목적이 있다.
* Gang of Four's design patterns의 Smalltalk 구현에 대한 구?셈岵? 쟁점의 토의를 한다.
* Smalltalk를 좀더 잘알고 사용한다. 특히 주요한 Smalltalk 환경 class libraries들을 알아본다.
- OurMajorLangIsCAndCPlusPlus/errno.h . . . . 20 matches
||6||int ENXIO||그런 장치나 주소가 없음. 시스템이 당신이 파일에서 설정한 장치를 사용하고자 하나 그러한 장치 를 찾을 수 없었다. 이것은 장치파일이 잘못 인스톨되었거나, 물리적인 장치를 빠뜨렸거나 또는 컴 퓨터와 제대로 부합되지 않았음을 의미한다. ||
||10||int ECHILD||자식 프로세스(child process)가 없다. 이 에러는 자식 프로세스를 다루는 오퍼레시션을 사용했는 데 다루기위한 어느 프로세스도 존재하재 않을 때 발생한다.||
||11||int EAGAIN||자원을 일시적으로 사용할수 없다.; 그 호출은 나중에 당신이 다시 재시도 할수 있도록 한다. 오 직 분기점에서 이러한 이유로 EAGAIN에러 코드를 리턴한다.||
||17||int EEXIST||파일이 존재: 새로운 파일로 만들겠다고 한 파일이 이미 존재한다.||
||18||int EXDEV||파일시스템이 인지할수 없는 영역에 부적당한 링크를 만들려고 시도할 때 이 에러메세지가 나온 다. 이것은 링크를 사용할때만 발생하지만 또, rename으로 파일을 재명명할 때 발생하기도 한다.||
||21||int EISDIR||파일이 하나의 디렉토리 이다; 쓰기(writing)위해 이 디렉토리를 열려고 시도할 때 이 에러는 발생 한다.||
||22||int EINVAL||적합하지 않은 인수. 이것은 라이브러리 함수에 잘못된 인수를 주는것과 같은 종류의 다양한 문제 를 지적하는데 사용한다.||
||23||int ENFILE||지금 현재 프로세스에 너무 많은 파일이 오픈되어서 더 이상 오픈할수 없다. 복제된 기술자가 이 제한에 대하여 셈한다.||
||28||int ENOSPC||디바이스에 공간이 남겨지지 않았다.; 파일에 쓰기 명령을 줬을 때 디스크가 가득차서 공간이 남아 있지 않으면 실패한다.||
||32||int EPIPE||부러진 파이프; 다른 파이프의 끝에서 프로세스를 읽는 것은 불가능 하다. 모든 라이브러리 함수 는 SIGPIPE로 일반화된 에러코드를 리턴한다. 이 신호는 만약 처리되지 않거나 막아지지 않으면 그 프로그램을 멈추게 한다. 그러므로 프로그램이 처리되거나 블록된 SIGPIPE를 갖지 않으면 항상 EPIPE가 보일 것이다.||
||36||int EDEADLK||교착상태 회피; 시스템 자원의 점유는 교착상태의 결과를 낳는다. 시스템이 모든 상황을 다 알아 챌거라고 보증하지 못한다.||
||41||int ENOTEMPTY||빈 디렉토리라고 예상했던 곳이 비어있지 않다. 특별히 이 에러는 당신이 디렉토리를 지우려 시도 할 때 발생한다.||
|| ||int ENOTBLK||어떤 상황에서 주어진 파일에 특별한 블록이 없는 경우. 예를 들면, 보통의 파일을 유닉스 파일 시스 템에 마운트하려 하면 이 에러가 발생한다.||
|| ||int ETXTBSY||현재 사용되고 있는 파일을 다시 읽거나 쓰기위해 오픈하려 시도할 때 발생 ("text fiel busy" 라고 한다.)||
|| ||int EINPROGRESS||비블록화 모드로 선택된 대상에 일으킨 완전하지 않은 오퍼레이션에 대해 발생. 어떤 함수들은 항 상 블록을 결코 리턴하지 않아야한다.||
|| ||int ENETRESET||원격 호스트가 파괴되었기 때문에 네트웍 연결을 다시 지정한다.||
|| ||int ENOTCONN||그 소켓은 어느것과도 연결할수 없다. 첫째로 데이터의 목적지를 정하지 않고 한 소켓을 통해 데이터를 전송하려 할 때 이 에러가 발생한다.||
|| ||int ESTALE||맛이간 NFS 파일 핸들. 이것은 파일 시스템이 서버 호스트 상에서 재정열한것에 기인한 것으로 NFS 시스템안의 내부적 혼란을 지적한다.||
- WhatToProgram . . . . 20 matches
학교에서 숙제로 내주는 것들이란 정말 숙제를 위한 숙제인 경우가 있다. 아니, 꼭 그렇진 않더라도 나는 뭔가 내 페이스에서 스트레스 없이 내가 원하는 것을 만들어보고 싶다. 어찌되었건 프로그램을 잘하려면 프로그램을 자주 해봐야 한다고 말하지 않는가. 그럼 도대체 무엇을 프로그램할 것인가?
이 단계가 넘어서면(한 달 정도면 넘어서지 싶다) 자신에게 가까운 것을 프로그램하라고 하겠다. 주희의 근사록이라는 책이 있다. 말 그대로 "가까운 것들에 대한 생각을 적은 기록"이라는 말이다. 공부는 무릇 가까운 곳에서 시작해야 한다고 말한다. 내 삶 속에서 제대로 구현되지도 않으면서 우주를 걱정하는 것은 "위기지학"(자기를 위한 공부)을 하라는 가르침에 어긋난다.
프로그래밍의 궁극은 "사용자"와 프로그램의 사용을 통해 그가 받는 "현실적 가치"에 있다. 프로그래밍을 하면서 사용자를 생각하지 않는 것은 도무지 아무 의미가 없다. 프로그래밍이라는 행위 자체가 성립하질 않는다. 골방에 틀어박혀 자기만족적인 지적 유희를 즐기는 해커가 아니라면 말이다. 우리는 사용자의 마음을 꿰뚫어야 한다. 여기에 있어 직접 사용자가 되는 것만큼 좋은 방법은 없다. 업계에서 혹자는 요구사항 분석시 사용자와 한 달 간 같이 생활해 보라는 말도 한다.
자기 삶에서 의미가 있는 프로그램을 만들게 되면 스스로가 사용자가 된다. 목적이 분명해 진다. 자기가 편한 프로그램을 만드는 것이다. 이 프로그램은 꼭, "내가 쓸 마음이 나는 프로그램"이어야 한다(그 프로그램을 만들고 싶은 열정이 생기고, 그걸 생각하면 가슴이 두근거린다면 더더욱 좋다 -- 이런 호기가 있을 때 그것을 충분히 누리도록 하라). 아무리 간단한 프로그램일지라도 나에게 가치있는 프로그램은 존재한다. 특정 언어에 대한 경험이 한 두 달일지라도 분명 그런 프로그램을 만들 수 있다. 대부분은 다른 프로그램들을 엮어주는 것일지도 모른다. 만약 난관에 부딪혔다면 책을 읽고, 사람에 묻고 자료를 검색해서 기술과 도구를 배우면 된다.
이 프로그램을 개발해서 일주일이고, 한달이고 매일 매일 사용해 봐야 한다. 일주일에 한 번 사용하는 프로그램을 만들기보다 매일 사용할만한 프로그램을 만들라. 자신이 하는 작업을 분석해 보라. 무엇을 자동화하면 편리하겠는가. 그것을 프로그램 하라. 그리고 오랜 기간 사용해 보라. 그러면서 불편한 점을 개선하고, 또 개선하라. 때로는 완전히 새로 작성해야할 필요도 있을 것이다(see also [DoItAgainToLearn]). 아마도 이 단계에서 스스로를 위한 프로그램을 작성하다 보면 아이콘을 이쁘게 하는데 시간을 허비하거나, 별 가치없는 퍼포먼스 향상에 시간을 낭비하지는 않을 것이다. 대신 무엇을 프로그램하고 무엇을 말아야 할지, 무엇을 기계의 힘으로 해결하고 무엇을 여전히 인간의 작업으로 남겨둘지, 즉, 무엇을 자동화할지 선택하게 될 것이다. 또한, 같은 문제를 해결하는 여러가지 방법(기술, 도구, ...) 중에서 비용과 이익을 저울질해서 하나를 고르는 기술을 익히게 될 것이다.
사실 이 단계에서는 꼭 어떤 사용을 전제로 하지 않더라도 열정을 갖게 해주는 프로그램이라면 괜찮다. 어떤 것에 대해 호기심이 생기는가? 컴퓨터로 실험을 해보고 싶은가? 그 생각이 밥을 먹거나, 잠을 자거나 떠나지 않는다면 프로그램 하라. 그냥 이걸 프로그램하면 공부가 될 것 같다든가, 혹은 남들이 다 하길래 한다든지 하는 것과는 질적으로 다른 경험을 할 것이다. 열정을 가진 것은 대부분 가슴 속에 그 모양이 이미 형성이 되어 있다. 조각가는 조각품의 형상을 이미 가슴 속에 품고 있다. NoSmok:최한기 는 이것을 강조한다. 일이 제대로 이루어지려면 그 일을 흉중에 품고 있어야 한다고. 머리 속에서, 정말 손끝에 잡힐 것만 같고, 그 프로그램이 살아있는 것 같이 느껴진다면 프로그램 하라. 자신의 아이디어를 컴퓨터가 이해하는 언어로 표현해 내는, 그리고 그 프로그램이 자신의 아이디어를 더 발전시키게 하는 능력을 갖게 될 것이다.
이 과정이 어느 정도 되면, 타인을 위한 프로그램을 작성할 수 있다. 나에게는 별 의미가 없지만 남에게 "아주 귀중한 가치를 주는" 프로그램을 만들어라. 서로 만들어줘도 좋다. 자신이 컴퓨터 공학과라면 국문학과 학생에게 프로그램을 만들어주라. 그와 가까이 지내고 그가 진정 원하는 것이 무엇이며, 진정 필요로 하는 것이 무엇인지(원하는 것과 필요로 하는 것은 다르다) 분석하고, 프로그램 해줘라. 그가 그 프로그램을 한 달 이상 사용하는가? 그래야 한다. 그 정도로 가치있는 프로그램이어야 한다. 가치있는 프로그램이 꼭 복잡하거나 거대할 필요는 없다. 그가 프로그램의 수정을 요구한다면 가능하면 모두 들어주어라. 그게 힘들다면 그를 납득시켜라. 아마도 이 단계에서 타인을 위한 프로그램을 작성하면서 "작성자"와 "사용자"간의 프로그램을 통한 커뮤니케이션의 중요성에 눈을 뜨게 될 것이다. 인터페이스에 대해 고민할 것이다. 얼마나 이쁘냐보다, 얼마나 실수할 행위유발성을 제공하지 않느냐, 그리고 어떤 메타포를 사용할 것인가(이에 대해서는 비지칼크란 프로그램을 연구하라) 하는 문제를 생각할 것이다.
이 단계를 거치면 이제는 타인들을 위한 프로그램을 작성한다. 일단 사용자가 다수이다. 또, 어떤 사용자 집단을 상정할 수는 있지만 개개인을 전제할 수는 없다. 아마도 이 단계에서는 평균적 사용자에 대해 고민하게 될 것이고, 때로는 여러사람의 동시 사용자로 야기되는 동시성 제어나 퍼포먼스 문제로 고민할 것이다. 그리고 프로그램의 크기가 커지면서 그리고 요구사항 변경이 여러 소스를 통해 빈번히 들어오게 되면서 어떻게 설계해야 하느냐는 문제로 고민할 것이다.
프로그래밍 기술보다도 중요한 것은 어쩌면 현실세계의 문제를 해결하는 것 그 자체일지도 모른다(도구와 기술은 본질적 문제를 해결해 나가는 과정으로서 필요에 따라 공부하면 되겠다). 우리는 정말 사용자를 위한 프로그램을 만들어야 한다. 그리고 이 공부는 가까운 곳에서부터 출발한다.
- ZeroPage회칙 . . . . 20 matches
1. 정모란 ZeroPage 회원들의 정기 모임을 말하며 제4장.운영에서 모임의 성격을 정한다.
2. 회원이란 함은 제2장.회원에서 자격을 득한 자를 말한다.
1. 본 회칙은 정모를 통해서만 개정될 수 있으며 회장의 최종 승인이 있어야한다.
1. 정회원은 제2조에서 자격을 득한 자를 말한다.
2. 준회원은 제3조에 해당하는 자를 말한다.
3. 이하 회원이라하면 정회원을 말한다.
4-2. 프로젝트 참여도, 정모 참여도, 연락여부 의 순으로 정모 참여 인원이 평가하여 정한다.
1. 재학중 정회원의 자격을 득한 상태로 졸업한 자를 말한다.
회장 선거의 후보는 다음 조항을 만족해야한다.
2. 선출시기는 매년 1월 정모로 한다.
3. 임기는 선출일 당일부터 다음 회장 선거까지로 한다.
5. 당선은 당일 참석 인원의 과반 수 이상 득표를 얻는 것으로 한다.
2. 회장의 부재시 회장을 대행한다.
1. 정모의 시기는 정모에서 결정한다.
2. 장소, 시간은 회장이 정하며 회의 전날까지 공지한다.
3. 각종 안건을 처리하며 프로젝트 진행 상황 발표를 한다.
4. 회원간의 친목을 도모한다.
1. 일년에 5일 이상 개최한다.
2. camp 의 세부사항은 정모를 통해 결정한다.
1. 그 외의 운영에 관한 사항은 정모를 통해 결정한다.
- AcceleratedC++/Chapter6 . . . . 19 matches
* 5장에서 본것처럼 우리가 다루는 컨테이너들은 내부 사정은 다를지라도, 우리는 그것을 모르고도 똑같이 쓸 수가 있다. 즉 일관된 인터페이스를 제공한다는 것이다. 컨테이너나 반복자와 마찬가지로 표준 라이브러리도 일관된 인터페이스를 제공한다. 벡터를 배웠으면 리스트도 금방 쓸수 있는 것처럼, 하나의 알고리즘 쓰는 법을 배우면, 다른 것 쓰는 법도 금방 알수가 있다.
* 근데 이것보다 더 일반적인, (즉 컨테이너에 독립적인) 방법이 있다. 컨테이너의 멤버함수를 이용하는 것이 아닌, 표준 알고리즘을 이용하는 것이다. 위의 것과 동일한 기능을 한다.
* 다음으로 반복자 어댑터(Iterator Adapters)를 살펴보자. 반복자 어댑터는 컨테이너를 인자로 받아, 정해진 작업을 수행하고 반복자를 리턴해주는 함수이다. copy알고리즘에 쓰인 back_inserter는 ret의 뒤에다가 copy를 수행한다는 것이다. 그럼 다음과 같이 쓰고 싶은 사람도 있을 것이다.
ret.push_back(string(i,j)); // 그만큼의 문자열엘 벡터에 넣음
* find_if의 인자를 보면, 앞의 두개의 인자는 범위를 의미한다. 첫인자~두번째인자 말이다. 마지막 인자는 bool형을 리턴하는 함수를 넣어준다. 즉 predicater이다. 그러면 find_if는 주어진 범위 내에서 predicator를 만족하는 부분의 반복자를 리턴해 준다.
* isspace는 표준 라이브러리에서 지원하는 함수임에다 불구하고, 왜 따로 만들었을까? 바로 isspace는 여러 언어 버젼으로 오버로딩 되어 있기 때문이다. 템플릿 함수의 인자로 오버로딩된 함수를 넘겨주는 것은 쉽지 않다. 어떤 버젼인지 알수가 없기 때문이다. 이것이 우리가 isspace역할을 하는 함수를 새로 만든 이유다.
* Palindrome이란 앞에서부터 읽어도 뒤에서부터 읽어도 똑같은 단어를 의미한다.
* 참 깔끔하다. rbegin()은 역시 반복자를 리턴해주는 함수이다. 거꾸로 간다. equal함수는 두개의 구간을 비교해서 같을 경우 bool 의 true 값을 리턴한다. 파라매터로 첫번째 구간의 시작과 끝, 두번째 구간의 시작 iterator 를 받는다. 두번째 구간의 끝을 나타내는 iterator 를 요구하지 않는 이유는, 두개의 구간의 길이가 같다고 가정하기 때문이다. 이는 equal 함수의 동작을 생각해 볼때 합당한 처리이다.
i 는 :// 의 시작 위치를 가리키는 역할을 한다.
e 는 url의 마지막 텍스트를 가리키는 역할을 한다.
// 같지 않으면 실행한다. (즉, sep를 찾았을 경우)
--beg; //protocol-typed의 위치에 존재하는 문자열이 조건에 맞을 경우 앞으로 한칸씩 움직이면서 검사한다.
* protocol-type://domainname 의 형태를 검사한다.
* find_if(b, e, p) 문자열 시퀀스 [b, e)에서 함수 p를 통해 테스트한다.
find함수는 처음두개의 전달인자 범위에서 세번째 전달인자의 값을 찾지 못하면 2번째 전달인자를 리턴한다. (찾으면 첫번째전달인자
를 리턴한다던데...@,.@잘못된거 아닌가??) 고로 찾지못하면 s.homework.begin() == s.homework.begin()이 되므로 true를 리턴함
* 이함수를 사용하기 위해서는 <numeric>을 include 해줘야 한다.
삭제를 하기 위해서는 다음과 같은 방식으로 컨테이너의 메소드를 이용해야한다.
- AcceleratedC++/Chapter9 . . . . 19 matches
C++은 클래스 타입과 같은 사용자가 정의한 어플리케이션 고유의 타입을 정의할 수 있는 많은 기능은 지원한다.
4.2.1절 Student_info 구조체를 다루는 함수를 작성하고, 이를 한개의 헤더파일로 통합을 하는 것은 일관된 방법을 제공하지 않기 때문에 문제가 발생한다.
프로그래머는 구조체를 다루기 위해서 구조체의 각 멤버를 다루는 함수를 이용해야한다. (Student_info 를 인자로 갖는 함수는 없기 때문에)
std::istream& read(std::istream&); //입력 스트림으로 부터 입력을 받아서 4개의 멤버변수를 초기화한다.
double grade() const; //내부 멤버변수를 활용하여 점수를 계산하고 double 형으로 리턴한다.
compare함수는 동일한 형의 2개의 Student_info를 받아서 서로를 비교하는 역할을 한다. 이런함수를 처리하는 일반적인 방법이 있는데, 9.5, 11.2.4, 11.3.2, 12.5, 13.2.1 에서 배우게됨.
|| class 키워드를 사용한 클래스 || 기본 보호모드가 private 으로 동작한다. ||
|| struct 키워드를 사용한 클래스 || 기본 보호모드가 public 으로 동작한다. ||
일반적으로 자료구조가 간단할 때에는 struct를 이용한다. 그러나 2가지 키워드의 사용의 차이는 존재하지 않는다. 단지 문서화를 어떻게 하느냐에 의해 차이가 생길 뿐이다.
name 멤버 변수에 직접적으로 접근하는 대신에 name()함수를 만들어서 접근하도록 만들었다. const 함수이므로 멤버변수의 변경을 불허한다. 리턴값이 복사된 것이기 때문에 변경을 하더라도 멤버변수에 영향을 주지는 않는다.
접근함수는 캡슐화의 기본개념이 반하는 것으로 다른 인터페이스 일부로서만 사용해야한다.
인자로 받은 변수들을 직접 접근하지 않고 그 멤버함수로 접근한다.
만약 s:Student_info 에 read(istream&)을 통해서 데이터를 입력하지 않고서 s.grade()를 사용한다면 프로그램을 에러를 낼 것이다.
상기와 같은 방식으로 통해서 grade를 호출하기 전에 객체의 유효성을 검사한다면 에러를 없애는 것이 가능하다.
'''※ 이런 식으로 헤더파일을 제공하고 실제의 구현된 소스파일은 이미 컴파일된 obj파일로 제공한다면 실제로 판매되는 컴파일러라도 그 컴파일러가 제공하는 함수의 실제구현은 볼 수가 없다.
헤더파일은 단지 컴파일러가 컴파일을 할때 이런 함수가 존재한다고 가정만 하고, 실제로 그 함수의 코드가 존재하는 것을 확인 할 수 잇는 것은 모든 관련 오브젝트 파일을 링크한뒤에 호출할때 없다는 것을 확인할 수 밖엔 없다.'''
만약 프로그래머가 생성자를 명시적으로 지정하지 않으면 컴파일러는 Default Constructor를 만들어주는데, 이 기본 생성자는 명시적인 초기화를 지원하지 않으며, 오로지 동일한 형의 다른 객체로의 초기화만을 제공한다.
* 하나이상의 생성자가 존재한다면 현재 상황에 맞는 생성자를 선택하여 실행된다.
'''※만약 객체의 멤버로 const 멤버가 존재한다면 그 멤버는 반드시 이 표현으로만 초기화가 가능하다. 객체가 초기화 되는 시기는 생성자 코드로 진입되기 이전인데 일단 초기화된 const 멤버는 컴파일러가 그 값의 수정을 허용하지 않기 때문이다. '''
- Adapter . . . . 19 matches
클래스 인터페이스를 예상되는 다른 인터페이스로의 변환을 한다. '''Adapter'''는 상이한 인터페이스 때문에 다른 달랐던 클래스의 일을 묶는 역할알 한다.
Smalltalk에서 ''Design Patterns''의 Adapter 패턴 class버전을 적용 시키지 못한다. class 버전은 다중 상속으로 그 기능을 구현하기 때문이다. [[BR]]
DP의 p147을 보면 '''Adapter'''클래스는 반드시 그것의 '''Adaptee'''를 타입으로 선언해서 가지고 있어야만 한다.이런 경우에는 해당 클래스와 그것에서 상속되는 클래스들만이 기능을 사용(adapt)할수 있다. Smalltalk에서 엄격한 형검사(Strong Typeing) 존재 않으면, class 가 '''Adapter'''에서 '''Adaptee'''로 보내어지는 메세지를 보낼수 있는 이상 '''Adaptee'''가 어떠한 클래스라도 상관없을 것이다. [[BR]]
자 그럼 Adapter를 적용시키는 시나리오를 시작해 본다. ''Design Patterns''(DP139)에서 DrawingEditor는 그래픽 객체들과 Shape의 상속도상의 클래스 인스턴스들을 모아 관리하였다. DrawingEditor는 이런 그래픽 객체들과의 소통을 위하여 Shape 프로토콜을 만들어 이 규칙에 맞는 메세지를 이용한다. 하지만 text인자의 경우 우리는 이미 존재하고 있는 TextView상에서 이미 구현된 기능을 사용한다. 우리는 DrawEditior가 TextView와 일반적으로 쓰이는 Shape와 같이 상호작용 하기를 원한다. 그렇지만 TextView는 Shape의 프로토콜을 따르지 않는 다는 점이 문제이다. 그래서 우리는 TextShap의 Adapter class를 Shape의 자식(subclass)로 정의 한다. TextShape는 인스턴스로 TextView의 참조(reference)를 가지고 있으며, Shape프로토콜상에서의 메세지를 사용한다.; 이들 각각의 메세지는 간단히 다른 메세지로 캡슐화된 TextView에게 전달되어 질수 있다. 우리는 그때 TextShape를 DrawingEditor와 TextView사이에 붙인다.
Adapter시나리오의 두번째는 Adaptee의 인터페이를 디자인 시간에 알수 없을 때 이다. Adaptee의 인터페이스를 먼저 알수 없기 때문에 우리는 하나의 인터페이스에서 다른 것으로 메세지를 간단히 해석할수 없다. 이런 경우에는 메세지의 변형과 전달의 일반적 규칙에 맞추어 Pluggable Adapter를 사용한다. Tailored Adapter와 같이 Pluggable Adapter도 해석기를 Client와 Adaptee사이의 해석기를 제공한다. 하지만 각각의 특별한 경우를 위한 새로운 Adapter클래스의 정의를 필요하지 않다. Pluggable Adapter가 쓰이는 경우의 상태를 생각해보자
상호 작용(사용자가 직접 이용하는의미)하는 어플리케이션을 위한 Model-View-Controller(MVC) 패러다임에서 View 객체들(화면상에 표현을 담당하는 widget들) 은 밑바탕에 깔려있는 어플리케이션 모델과 연결되어진다. 그래서 모델안에서의 변화는 유저 인터페이스에 반영하고 인터페이스 상에서 사용자들에 의한 변화는 밑에 위치한 되어지는 모델 데이터(moel data)에 변화를 유도한다.View객제들이 제공되어 있는 상태라서 어떠한 상호 작용하는 어플리케이션 상에서라도 그들은 ㅡ걸 사용할수 있다. 그러므로 그들은 그들의 모델과의 통신을 위해 일반적인 프로코콜을 사용한다;특별한 상황에서 모델로 보내어지는 getter message는 값이고 일반적인 setter message역시 값이다.:예를 들자면 다음 예제는 VisualWorks TextEditorView가 그것의 contects를 얻는 방법이다.
자 그럼 여기에 예제를 보자. 우리는 employee관리 application을 가지고 있다고 가정한다.어플리케이션 모델은 하나의 인자인, employee의 사회 보장(비밀) 번호(social security number)의 포함하고 application의 사용자 인터페이스는 employee의 사회 보장 번호를 화면상에 뿌려주는 '입력 박스 뷰'를 포함한다.모델의 엑세스하고 초기화 시키기 위한 메소드는 'socialSecurity'와 'socialSecurity:'로 이름 지어져 있다. 입력 박스는 단지 현재의 사회 보장 번호를 뿌리기만 한지만 모델의 값을 요청하는 방법만을 알고있다.( DeleteMe 수정 필요 ) 그래서 우리는 value mesage를 socialSecurity로 변환 해야 한다.우리는 Pluggable Adapter 객체를 이런 목적을 위해서 사용할수 있다.자 우리의 예제를 위한 interaction 다이어 그램을 보자
이 다이어 그램은 단순화 시킨것이다.;그것은 개념적으로 Pluggable Adpter의 수행 방식을 묘사한다.그러나, Adaptee에게 보내지는 메세지는 상징적으로 표현되는 메세지든, 우회해서 가는 메세지든 이런것들을 허가하는 perform:을 이용하여 실제로 사용된다.|Pluggable Adpater는 Symbol로서 메세지 수집자를 가질수 있고, 그것의 Adaptee에서 만약 그것이 평범한 메세지라면 수집자인 perform에게 어떠한 시간에도 이야기 할수 있다.|예를 들어서 selector 가 Symbol #socialSecurity를 참조할때 전달되는 메세지인 'anObject socialSecurity'는 'anObject perform: selector' 과 동일하다. |이것은 Pluggable Adapter나 Message-Based Pluggable Adapter에서 메세지-전달(message-forwading) 구현되는 키이다.| Adapter의 client는 Pluggable Adapter에게 메세지 수집자의 value와 value: 간에 통신을 하는걸 알린다,그리고 Adapter는 이런 내부적 수집자를 보관한다.|우리의 예제에서 이것은 client가 'Symbol #socialSecurity와 value 그리고 '#socialSecurity:'와 'value:' 이렇게 관계 지어진 Adapter와 이야기 한는걸 의미한다.|양쪽중 아무 메세지나 도착할때 Adapter는 관련있는 메세지 선택자를 그것의 'perform:'.을 사용하는 중인 Adaptee 에게 보낸다.|우리는 Sample Code부분에서 그것의 정확한 수행 방법을 볼것이다.
- AspectOrientedProgramming . . . . 19 matches
본 글은 Markus Voelter에 의해 작성된 글 중 일부이다. 원문은 AOP 기본 개념, Xerox PARC에 의해 구현된 Java의 AOP 확장 버전인 AspectJ 소개, Metaclass 프로그래밍과의 비교 등 총 3 파트로 구성되어 있으며, 번역문은 이 중 첫 번째 파트만 커버한다. 참고로 원문의 AspectJ 관련 코드는 상당히 오래된 문법에 기반하여 현재의 그것과 많은 차이를 보인다.
최근 몇 년에 걸쳐 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 절차적 방법론을 거의 완벽히 대체하며 프로그래밍 방법론의 새 주류로 떠오르게 되었다. 객체지향적 방식의 가장 큰 이점 중 하나는 소프트웨어 시스템이 여러 개의 독립된 클래스들의 집합으로 구성된다는 것이다. 이들 각각의 클래스들은 잘 정의된 고유 작업을 수행하게 되고, 그 역할 또한 명백히 정의되어 있다. 객체지향 어플리케이션에서는 어플리케이션이 목표한 동작을 수행하기 위해 이런 클래스들이 서로 유기적으로 협력하게 된다. 하지만 시스템의 어떤 기능들은 특정 한 클래스가 도맡아 처리할 수 없다. 이들은 시스템 전체를 들쑤시며 해당 코드들을 여러 클래스들에 흩뿌려 놓는다. 이런 현상을 횡단적(cross-cutting)이라 표현한다. 분산 어플리케이션에서의 락킹(locking, 동기화) 문제, 예외 처리, 로깅 등이 그 예이다. 물론 필요한 모든 클래스들에 관련 코드를 집어 넣으면 해결될 문제이다. 하지만 이런 행위는 각각의 클래스는 잘 정의된(well-defined) 역할만을 수행한다는 기본 원칙에 위배된다. 이런 상황이 바로 Aspect-Oriented Programming (AOP)이 잉태된 원인이 되었다.
AOP에서는 aspect라는 새로운 프로그램 구조를 정의해 사용한다. 이는 쉽게 struct, class, interface 등과 같이 특정한 용도의 구조라 생각하면 된다. Aspect 내에는 프로그램의 여러 모듈들에 흩어져 있는 기능(하나의 기능이 여러 모듈에 흩어져 있음을 뜻한다)을 모아 정의하게 된다. 전체적으로, 어플리케이션의 각각의 클래스는 자신에게 주어진 기능만을 수행하고, 추가된 각 aspect들이 횡단적인 행위(기능)들을 모아 처리하며 전체 프로그램을 이루는 형태가 만들어진다.
이해를 돕기 위해, 그리고 설명을 쉽게 하기 위해 예를 들어가며 AOP 개념을 설명토록 하겠다. 어플리케이션의 여러 스레드들이 하나의 데이터를 공유하는 상황을 가정해보자. 공유 데이터는 Data라는 객체(Data 클래스의 인스턴스)로 캡슐화되어 있다. 서로 다른 여러 클래스의 인스턴스들이 하나의 Data 객체를 사용하고 있으나 이 공유 데이터에 접근할 수 있는 객체는 한 번에 하나씩이어야만 한다. 그렇다면 어떤 형태이건 동기화 메커니즘이 도입되어야 할 것이다. 즉, 어떤 한 객체가 데이터를 사용중이라면 Data 객체는 잠겨(lock)져야 하며, 사용이 끝났을 때 해제(unlock)되어야 한다. 전통적인 해결책은 공유 데이터를 사용하는 모든 클래스들이 하나의 공통 부모 클래스(“worker” 라 부르도록 하자)로부터 파생되는 형태이다. worker 클래스에는 lock()과 unlock() 메소드를 정의하여 작업의 시작과 끝에 이 메소드를 호출토록 하면 된다. 하지만 이런 형태는 다음과 문제들을 파생시킨다.
1. 공유 데이터를 사용하는 메소드는 상당히 주의해서 작성되어야 한다. 동기화 코드를 잘못 삽입하면 데드락(dead-lock)이 발생하거나 데이터 영속성이 깨질 수 있다. 또한 메소드 내부는 본래의 기능과 관련 없는 동기화 관련 코드들로 더럽혀질 것이다.
1. Java와 같은 단일 상속 모델에서는 worker를 만든다는 것이 불가능할 수 있다. 어떤 클래스들은 이미 다른 클래스들로부터 확장되었을 수도 있기 때문이다. 이는 특히 클래스 계층 구조 설계가 마무리된 후, 뒤늦게 동기화의 필요성을 깨달았을 때 흔히 발생한다. 동기화를 신경 쓰지 않은 범용 클래스 라이브러리를 통해 공유 데이터에 접근하려 하는 경우가 한 예가 될 수 있다.
1. 한 객체에 대한 동기화 관련 코드가 시스템 전체에 횡단적으로 존재한다. 다수의 클래스와 더 많은 수의 메소드들이 이 동기화 메커니즘에 영향 받는다.
1. Data 객체를 사용하는 클래스들을 위해 lock 및 unlock 메커니즘을 제공한다(lock(), unlock()).
1. Data 객체를 수정하는 모든 메소드들이 수행 전에 lock()을 호출하고, 수행 후에는 unlock()을 호출함을 보장한다.
1. 이상의 기능을 Data 객체를 사용하는 클래스의 자바 소스를 변경하지 않고 투명하게 수행한다.
특정 메소드(ex. 객체 생성 과정 추적) 호출을 로깅할 경우 aspect가 도움이 될 수 있다. 기존 방법대로라면 log() 메소드를 만들어 놓은 후, 자바 소스에서 로깅을 원하는 메소드를 찾아 log()를 호출하는 형태를 취해야할 것이다. 여기서 AOP를 사용하면 원본 자바 코드를 수정할 필요 없이 원하는 위치에서 원하는 로깅을 수행할 수 있다. 이런 작업 모두는 aspect라는 외부 모듈에 의해 수행된다. 또 다른 예로 예외 처리가 있다. Aspect를 이용해 여러 클래스들의 산재된 메소드들에 영향을 주는 catch() 조항(clause)을 정의해 어플리케이션 전체에 걸친 지속적이고 일관적으로 예외를 처리할 수 있다.
먼저 ‘Aspect는 꼭 필요한가?’라는 질문에 답해보자. 물론 그렇지는 않다. 이상에서 언급한 모든 문제들은 aspect 개념 없이 해결될 수 있다. 하지만 aspect는 새롭고 고차원적인 추상 개념을 제공해 소프트웨어 시스템의 설계 및 이해를 보다 쉽게 한다. 소프트웨어 시스템의 규모가 계속 커져감에 따라 “이해(understanding)”의 중요성은 그만큼 부각되고 있다(OOP가 현재처럼 주류로 떠오르는데 있어 가장 중요한 요인 중 하나였다). 따라서 aspect 개념은 분명 가치 있는 도구가 될 것임에 틀림없다.다음의 의문은 ‘Aspect는 객체의 캡슐화 원칙을 거스르지 않느냐?’는 것이다. 결론부터 말하자면 ‘위반한다’ 이다. 하지만 제한된 형태로만 그렇게 한다는데 주목하도록 하자. aspect는 객체의 private 영역까지 접근할 수 있지만, 다른 클래스의 객체 사이의 캡슐화는 해치지 않는다.
- WOWAddOn/2011년프로젝트/초성퀴즈 . . . . 19 matches
Eclipse에서 Java외의 다른것을 돌리려면 당연 인터프리터나 컴파일러를 설치해주어야 한다. 그래서 Lua를 설치하려했다. LuaProfiler나 LuaInterpreter를 설치해야한다는데 도통 영어를 못읽겠다 나의 무식함이 들어났다.
당연히 한글의 초성을 빼올수 있어야한다.
그래서 찾아봤더니 UTF-8방식으로 빼올수 있다고 한다.
추가 : 알고보니 UNICODE를 포함하는 방식중 하나라고한다. 근데 더 모르겠는데... U-00000800 - U-0000FFFF 범위에 들어간다고 하는데??
기본적으로 "/World of Warcraft/interface/addons/애드온명" 으로 폴더가 만들어져있어야한다.
toc에 정보를 넣어주어야한다.
여기서 아이템 초성 퀴즈의 기본은 아이템 이름 DB를 검색할수 있어야한다. 근데 WOW아이템은 현재 아이템 넘버만 7만을 넘는다. 중간중간 비어있는 index도 있다. 이게 뭥미. 아마 suffix때문일것으로 예상된다. suffix란 아이템에 부가적으로 붙은 옵션을 item index에수치화 한것을 부르는 말인데 그것에 따라 아이템의 index가 결정되는것 같더라. (아직 정확히는 모른다)
우선 일단 아직 아이템 번호는 7만을 넘지 않는다 wow아이템정보에 관한건 나중에 조사하기로 하고 그래서 i 는 와우 일반 item의 최소 시작값인 '낡은쇼트단검' 25부터 시작해서 1만개의 아이템을 검색해서 base테이블에 한개씩 저장해서 출력한다.
결과는 잘된다. 조금 느리겠지만 이걸 DB화해서 저장해놓았다가 해도 좋을듯 한다. 최적화따윈 우선 버리고 해보자.
Addon을 만들고 초성퀴즈는 SlashCommand로 시작하게 할려고한다.
parsing해서 원하는 문자만 뽑아보자.
string.find(msg,"시작")은 msg에서 "시작"이란 단어가 시작되는곳과 끝을 다중 인자로 2개 넘겨주며 값이 없을때는 nil을 리턴한다. 따라서, if문에서 쓰면 lua에서는 nil을 제외한 모든 값은 (심지어 0과 공백스트링""도) true로 인식한다.
처음에 문제가 생겼었는데 Eclipse에서 테스트하던 string.find(msg,"시작")이 WOW에서 글씨가 깨지며 정상 작동하지 않았다. 그 이유는 무엇이냐 하면 WOW Addon폴더에서 lua파일을 작업할때 메모장을 열고 작업했었는데 메모장의 기본 글자 Encoding타입은 윈도우에서 ANSI이다. 그렇기 때문에 WOW에서 쓰는 UTF-8과는 매칭이 안되는것! 따라서 메모장에서 새로 저장 -> 저장 버튼 밑에 Encoding타입을 UTF-8로 해주면 정상작동 한다. 이래저래 힘들게 한다.
패턴 매칭은 여기 있다. Lua에서 Sub pattern에 의해 변수를 가져오는건 더 찾아봐야한다.
1.0.1은 Visual Studio 2008을 지원하고 V2.0은 Visual Studio 2010을 지원한다 당연히 V2.0이 지원하는 기능은 더 많다고 써있다.
- html5/offline-web-application . . . . 19 matches
* 클라이언트에 캐시된 리소스를 사용하여 동작한다.
* 어플리케이션 캐시를 이용하면 웹 어플리케이션에 있어 필수적인 리소스는 캐시 매니페스트에 기록하여 브라우저에 의해 자동으로 캐시되게 한다.
* 'text/cache-manifest'라는 MIME 타입으로 배포되도록 설정해야 한다.
* 캐시 매니페스트의 URL을 html 요소의 manifest 속성에 지정해야 한다.
* 업데이트 체크 시 많은 양의 네트워크 리소스를 소비하므로 어플리케이션 캐시는 모든 리소스에 대해 업데이트를 체크하는 것이 아니라 캐시 매니페스트만을 체크한다.
* text/cache-manifest 타입으로 배포해야 한다.
* 문자 인코딩은 UTF-8이어야 한다.
* 첫 줄은 'CACHE MANIFEST'라는 문자열로 시작해야 한다.
* 상대 경로를 이용할 때는 매니페스트를 기준으로 하여 URL를 표시한다.
* 모든 URL은 메인 페이지와 같은 도메인에 소속되어야 한다.
* NETWORK 섹션 안에 지정된 URL과 일치하는 리소스는 캐시되지 않고 반드시 네트워크를 통해 액세스를 시도한다.
* NETWORK 섹션에 지정한 대상 URL은 특정 디렉터리 이하로 한정하는 등 신경을 써야 한다.
* 오프라인 웹 어플리케이션이 액세스할 수 있는 URL을 화이트 리스트 형식으로 지정한다.
* 다른 웹 사이트에 대한 네트워크가 금지되어 매시업을 수행하도록 만들어진 웹 어플리케이션에서 문제가 되기도 한다.
* 제한을 피할 수 있어 편리하지만 사용시 신중을 기해야한다.
* 캐시 업데이트 처리를 명시적으로 수행한다.
* 리소스가 변경되면 반드시 매니페스트도 업데이트 되도록 한다.
* 매니페스트 파일을 동적으로 생성한다.
* 오프라인 때 이루어지는 데이터 업데이트는 로컬 스토리지에 저장한다.
- AcceleratedC++/Chapter4 . . . . 18 matches
* 이름을 가지고 있어야 한다.
3장까지 봤던 것은 첫번째것만 있고, 나머지 것은 없다. 프로그램이 작을때는 별로 상관없지만, 커지기 시작하면서부터 2,3번째 것이 결여되면, 나중엔 제어가 불가능해진다. C++에서는 다른 언어와 마찬가지로 함수 + 자료구조를 제공함으로써, 프로그램을 구조화시킬수 있는 방법을 제공한다. 또한 함수 + 자료구조를 묶어서 가지고 놀 수 있는 class라는 도구를 제공해준다.(Chapter9부터 자세히 살펴본다.)
* 함수를 호출할때에는 함수를 만들때 주어졌던 parameter lists를 충족시키는 값들을 넣어줘야 한다. 물론 순서도 맞춰줘야 한다. arguments라고도 한다. arguments는 식이 될수도 있다. 그 뒤에 함수로 넘어간 parameter들은 함수 내에서 지역 변수(함수가 끝나면 소멸되는)처럼 작동하게 된다. 즉 그 값들을 복사하게 되는 것이다. 이를 call by value라 한다.
* 또한, 아까 함수 호출하면서 parameter로 넘겨줄때에는 그 값을 복사를 한다고 했다. 저렇게 함수를 호출함으로써, 원래 vector를 손상시키지 않고, 복사본 vector에서 sort를 해서 작업을 처리해 줄수가 있다. 비록 시간이 좀 더 걸리긴 하지만..
* const vector<double>& hw : 이것을 우리는 double형 const vector로의 참조라고 부른다. reference라는 것은 어떠한 객체의 또다른 이름을 말한다. 또한 const를 씀으로써, 저 객체를 변경하지 않는다는 것을 보장해준다. 또한 우리는 reference를 씀으로써, 그 parameter를 복사하지 않는다. 즉 parameter가 커다란 객체일때, 그것을 복사함으로써 생기는 overhead를 없앨수 있는 것이다.
* grade() function : 우리는 아까 grade라는 함수를 만들었었다. 그런데 이번에 이름은 같으면서 parameter는 조금 다른 grade()를 또 만들었다. 이런게 가능한가? 가능하다. 이러한 것을 함수의 overloading이라고 한다. 함수 호출할때 어떤게 호출될까는 따라가는 parameter lists에 의해 결정된다.
* 이제 우리가 풀어야 할 문제는, 숙제의 등급을 vector로 읽어들이는 것이다. 여기에는 두가지의 문제점이 있다. 바로 리턴값이 두개여야 한다는 점이다. 하나는 읽어들인 등급들이고, 또 다른 하나는 그것이 성공했나 하는가이다. 하나의 대안이 있다. 바로 리턴하고자 하는 값을 리턴하지 말고, 그것을 reference로 넘겨서 변경해주는 법이다. const를 붙이지 않은 reference는 흔히 그 값을 변경할때 쓰인다. reference로 넘어가는 값을 변경해야 하므로 어떤 식(expression)이 reference로 넘어가면 안된다.(lvalue가 아니라고도 한다. lvalue란 임시적인 객체가 아닌 객체를 말한다.)
* const가 아닌 참조형 파라메터는 lvalue여야만 한다.
// 이리로 온다. 만약에 try 안에서 예외 안 뜨면 catch 안은 수행안한다.
* 여태까지는 한 학생의 데이터만 가지고 놀았다. 하지만 성적 처리 프로그램은, 모든 학생의 데이터를 대상으로 한다. 이에 다시 체계적인 데이터 구조가 필요하다.
* is >> 을 보면, string을 읽었다가 double을 읽기도 한다. 이게 가능한 이유는 오버로딩 때문이다.
* 무엇을 기준으로 sort를 할것인가? 이름? midterm? final? 알수가 없다. 따라서 우리는 predicate라는 것을 정의해 주어야 한다. 다음과 같이 해주면 된다.
* string(길이,'문자') : 길이만큼의 '문자'를 생성해준다.
- Gnutella-MoreFree . . . . 18 matches
희생(?)이 필요하다. 여기서 희생이란 불필요하지만 쓸 수 밖이 없는 대역폭을 말한다.
Query전송을 통해 네트워크내 파일의 검색과 다운로드를 가능하게 한다.
|| pong || Ping을 받으면 주소와 기타 정보를 포함해 응답한다.Port / IP_Address / Num Of Files Shared / Num of KB Shared** IP_Address - Big endian||
|| queryHit || 검색 Query 조건과 일치한 경우 QueryHit로 응답한다. Num Of Hits 조건에 일치하는 Query의 결과 수 Port / IP_Address (Big-endian) / Speed / Result Set File Index ( 파일 번호 ) File Size ( 파일 크기 )File Name ( 파일 이 / 더블 널로 끝남 ) Servent Identifier 응답하는 Servent의 고유 식별자 Push 에 쓰인다. ||
낸 Servent는 네트워크 상에서 제거된 것을 의미한다.
QueryHit 명령어를 받으면 파일을 초기화 하고 다운로드를 시작한다.
과 같은 HTTP GET request형식으로 응답을 하며 파일을 전송한다.
어렵지만 같은 버전 사이의 접속은 가능하므로 인터페이스 부분을 수정한다면
같이 초기화를 한다.
StartDownload() 함수에서 다운로드를 시작하며 GetStartPos() 를 통해 Chunk가 다운로드가 시작할 m_pChunk->m_StartPos의 위치를 알게 한다.
공식으로 Chunk의 시작위치를 구한다.
SendRequest() 에서 HTTP/GET 형식으로 헤더를 보내 받고자 하는 데이타를 요청한다
OnReceive(int nErrorCode) 에서 Content-length 만큼의 버퍼 데이타를 받아 청크와 연결 시킨다.
이어 받기를 할때에는 파일의 끝에서 -4096만큼 얻고 m_Verification 블럭의 4096크기 만큼 비교를 한 후에 이어받기를 시작한다.
한다는 것이다.
Firewall에 있을 경우 이런 방법으로 포트를 열지 못하면 랜덤한 포트를 부여 ForcedPort로 접속 Attempts < 3 만큼 시도를 한다.
그리고 PUSH를 Route PUSH를 통해 보내 그누텔라 default 포트가 아닌 열 수 있는 포트로 직접연결을 한다.
에 해당하는 Port로 Download를 한다.
- RandomWalk2 . . . . 18 matches
* 뼈대예시 ["RandomWalk2/ClassPrototype"] (OOP를 처음 다루는 경우가 아니라면 보지 않기를 권한다)
첫 줄의 M,N은 판의 행과 열로 판의 크기를 말하고, 다음 라인의 숫자 두 개는 바퀴의 초기 위치로 행과 열의 순서다. 다음 줄에는 바퀴의 여정이 나오는데 0부터 7 사이의 숫자가 이어진다. 0부터 7 사이의 숫자는 방향을 의미한다. 0이 북쪽이고, 시계방향으로 1,2,3,...7이 배치된다. 마지막 줄은 999로 끝난다.
표준 출력을 통해, 바퀴가 총 움직인 횟수와 각 칸에 도달한 횟수를 출력한다. 양식은 다음과 같다.
첫 번 째 줄은 바퀴가 총 움직인 횟수(처음 바퀴가 놓이는 것은 움직인 것으로 치지 않는다)이고 한 줄은 띈 다음, 판의 각 칸에 바퀴가 방문한 횟수를 행렬로 출력하되, 동일 행의 칸은 빈칸(스페이스)로 구분하고, 각 행은 하나의 줄을 차지한다.
대부분의 프로그래밍 문제나, 경시대회 문제는 한번 주어진 문제에 한번 대응하면 그걸로 끝난다. 하지만 현실은 그렇지 못하다. 한번 개발한 프로그램을 요구사항 추가/변경에 따라 몇 번이고 수정하고 다시 개발해야 할 때도 있다. 우리가 말하는 문제풀이 능력에는 이미 만든 프로그램을 유지보수하는 작업도 포함되어야 한다.
이런 경험을 하게 되면 "디자인의 질"이 무엇인가 직접 체험하게 되고, 그것에 대해 생각해 보게 되며, 실패/개선을 통해 점차 디자인 실력을 높일 수 있다. 뭔가 잘하기 위해서는, "이런 것이 있고, 난 그것을 잘 못하는구나"하는 "무지의 인식"이 선행되어야 한다. (see also Wiki:FourLevelsOfCompetence )
변경사항은 순서대로 "누적적"이다. 변경1을 볼 때는 변경2를 보지 않는다. 현재의 변경을 모두 완료한 후에야 다음 변경을 볼 수 있다. 따라서 변경3을 하고 있다면, 사실상 현재의 코드는 {{{기본 요구사항+변경1+변경2}}}를 이미 충족하고 있어야 한다.
바퀴벌레의 마리수가 두마리로 늘어난다. 그리고 "턴"(turn)의 개념이 생긴다. 턴은 일종의 단위시간으로, 한번의 턴에 두 마리의 바퀴벌레는 각각 자신이 예정한 방향으로 이동을 한다.
입력자료는 다음과 같이 바뀌어야 한다.
처음 턴에 1번 바퀴는 2방향으로 한칸 움직이고, 2번 바퀴는 1방향으로 한칸 움직인다. 둘 중 한쪽 바퀴의 여정이 끝나도 다른 하나의 바퀴 여정이 끝나지 않으면 게임은 종료하지 않는다. 하지만, 두 바퀴 중 어느 누구의 여정도 끝나지 않았더라도 판 위의 셀이 모두 방문되었다면(즉, 1이 방문한 셀과 2가 방문한 셀의 합집합이 전체 셀이라면) 게임은 종료한다.
바퀴에 두가지 종류가 있다. {{{SuperRoach}}}와 {{{NormalRoach}}}가 그것이다. {{{NormalRoach}}}는 한번에 한칸,{{{SuperRoach}}}는 한번에 두칸을 쓸고 지나간다.
첫번째 바퀴는 슈퍼바퀴로 0행0열에서 시작해서 22222444445의 여정대로 여행한다. 두번째 바퀴는 정상바퀴로 3행7열에서 여행을 시작한다.
1. 만약 우선순위가 같은 바퀴가 음식을 놓고 경쟁한다면 처음 입력했던 순서가 2차 우선순위가 된다.
판의 크기는 총 10행10열이고, 2행6열, 3행9열, 4행8열, 4행7열에 음식이 미리 비치되어 있다(이 때 행과 열은 앞서와 마찬가지로 각각 0부터 시작). -1은 음식정보의 끝을 의미한다.
출력정보는 앞서와 유사하다. 한번에 두칸을 움직이면 움직인 횟수도 두번이고, 한번 쉴 때에는 움직인 횟수가 증가하지 않는다. (고로, 결국 "움직인 횟수"는 움직인 거리와 비슷하다고 보면 된다) 판의 정보는 예전과 동일한 양식으로 출력한다.
모든 요구사항 변경이 끝났다. 히딩크처럼 "여전히 배가 고프다"면, 이 게임을 삼차원(큐빅)으로 확장하는 것을 고려해 보라. 입력/출력자료의 스펙 등은 모두 자신이 판단해서 직접 정의하라. 어찌 되었건 여기까지 도달한 것을 진심으로 축하한다.
대부분의 학습자는 일단 문제의 답에 도달하면 그 경험을 완전히 망각해 버리는 나쁜 습관이 있다 -- 이런 사람들은 문제를 풀긴 풀었으되, 다음 번에 유사 문제를 접하면 여전히 그 문제를 처음 접했을 때를 답습하는 제자리 걸음을 하기 쉽다. 자신의 경험을 반추해 보는 것은 효과적인 학습에 있어 필수적인 요소다. 다음 활동을 꼭 해보길 권한다. 엄청나게 많은 것을 배우게 될 것이다.
- ViImproved/설명서 . . . . 18 matches
주 요용 어 번지지정 명령 vi 명령중에서 처리해야할 대상의 종류를 사용자가 지정할수 있도록 하는 명령예) d 명령에서, dw는 단어 삭제를, db는 앞단어의 삭제를 의미한다.
모드형 모드형 프로그램이란 서로다른 기능을 가진 모드를 가지고 있어다중환경을 지원한다. 예) 모드에 따라 엔터키의 역할도 달라진다
비모드형 비모드형 프로그램은 키들을 항상 같은 의미로 사용한다
n 현재 행으로부터 n번째 행으로 이동한다
ddp 현재 줄과 다음 줄을 교환한다
p 버퍼의 내용(change, delete, yank)을 현재줄 이전에 복구한다
P 버퍼의 내용(change, delete, yank)을 현재줄 다음에 복구한다
:/^M(^V+^M) 컨트롤 문자(^)를 화면에 나타낼 때는 먼저 ^V를 누른 다음 입력하고자 하는 컨트롤 문자를 눌러야 한다
[g] 한 줄에 나타난 모든 것을 찾아 변경한다
A를 B로 치환한다 (s//B), s뒤의 //는 text를 다시 쓰지 않아도 되게 한다
이 연산을 한줄에 반복해서 적용한다(/g)
ABC중 B 를 Z로 치환한다 (/g)
이 연산을 한줄에 반복해서 적용한다(/g)
Mark(마크) 설 정 mc 현 커서의 위치를 'c'로 표시한다 ('c' 는 1문자이며 소문자이다)
이 동 'c 'c'로 표시된 위치로 이동한다
` 'c'로 표시된 줄의 첫 문자로 이동한다
:map #2 :w^M 문서를 작성하다가 기능키 F2를 누르면 :w^M을 실행한다
- 논문번역/2012년스터디/김태진 . . . . 18 matches
완전한 영어 문장들로 학습/인식을 위한 데이터를 제공했는데, 각각은 Lancaster-Oslo/Bergen corpus에 기초한다. 글쓴이에 상관없는 형태와 마찬가지로 다수의 저자에 의한 실험은 the Institute of Informatics and Applied Mathe- matics (IAM)에서 수집한 손글씨 형태를 사용했다. 전체 데이터는 다양한 텍스트 영역들을 가지고 있고,500명보다 많은 글쓴이들이 쓴 1200개보다 많은 글씨를 가지고 있다. 우리는 250명의 글쓴이가 쓴 글쓴이-독립적인 실험에서 만들어진 카테고리들의 형태를 사용하고, 6명의 글쓴이가 쓴 c03 형태로 여러 글쓴이 모드를 적용해본다.
개인 저자에서도 우리의 시스템을 평가해보기 위해서, 우리는 Senior[15]로 수직한 데이터로 만들어진 글씨들을 사용한 실험을 한다. 이 데이터는 한명의 글쓴이가 만든 25페이지에 달하는 손글씨를 사용하였고, 웹에서 공공연하게 이용가능하다.
이 두가지 데이터들 모두 300dpi using 256 grey-levels로 스캔해서 사용했고, Fig 에서 각각의 데이터를 예시로 제시한다.
주어진 손글씨 문서에 대한 이미지에 대해 처음 전체 이미지를 삐뚤게 쓴 것은(?) 글쓰는 것에 대한 지속적인 "drift"(흐름) - 지속적으로 계속되는 것이거나 스캔하는 동안 부정확하게 놓여진 것(가지런하게 두지 않아서..)에 의한 오류들을 수정하기 위해 고쳤다. 그래서, 그 이미지는 2진화된 이미지를 수직 밀집 히스토그램에서 최소한의 엔트로피가 될때까지 반복한다. 이러한 전처리는 IAM 데이터베이스에 대한 공식을 사용하지 않았는데, 글쓴이들이 스캔하는 동한 정확하게 ???????because the writers were asked to use rulers on a second sheet put below the form and the formulars itself are aligned precisely during scanning.
다양한 글쓴이들의 글쓰는 스타일에 대한 분포때문에 손글씨는 인식을 간단히 하기위해 일반화 해야한다. 특히, 수직적인 위치, 기울어짐, slant에 대해서 고치는 것은 전처리 작업에서 중요한 것이다. 더 일반화 하는 방법은 gray-level의 집적과 손글씨의 크기를 고려하는 것이다.
만약 벡터 방정식 ...가 오직 자명한 해를 가진다면 Rn에 있는 인덱싱된 벡터들의 집합을 선형적으로 독립적(linearly independent)이라고 말한다. 만약 (2)와 같은 0이 아닌 가중치가 존재한다면 그 집합은 선형 독립전이다고 한다.
등식 (2)는 가중치가 모두 0이 아닐 때 v1...vp사이에서 linear independence relation(선형 독립 관계)라고 한다. 그 인덱싱된 집합이 선형 독립 집합이면 그 집합은 선형독립임이 필요충분 조건이다. 간단히 말하기위해, 우리는 {v1,,,vp}가 선형독립 집합을 의미할때 v1...vp가 독립이라고 말할지도 모른다. 우리는 선형 독립 집합에게 유사한 용어들을 사용한다.
우리가 벡터들의 집합 대신에 A=[ ]로 시작한다고 하자. 그 행렬 등식 Ax=0는 ...으로 쓰여질 수 있다. A의 행들 사이에 각각의 선형독립 관계는 Ax=0에서의 자명하지 않은 해와 일치한다. 그래서 우리는 그 중요한 사실을 따른다.
주의: 이론 7은 선형 독립적인 집합에서 모든 벡터가 앞선 벡터들의 선형결합이라고 말하지 않았다. 선형 독립적인 집합에 있는 벡터는 다른 벡터들의 선형결합이 되는데 실패할지도 모른다. 연습문제 3번을 봐라. 예시4는 의 선형 의존적인 u와v를 R3(3차원)의 어떤 집합{u,v,w}로 일반화한다. 그 집합 {u,v,w}는 평면에서 w가 u와 v로 span(평면화)되면 선형 독립적이다(필요충분).
다음 두 이론들은 한 집합에 대한 선형 의존성이 자동적인 특별한 경우를 지칭한다. 더욱이, 이론8은 뒤 단원들에서의 동작을 초래하는 핵심일 것이다.
이 새로운 관점으로부터, 방정식 Ax=b를 푸는 것은 A의 곱으로 "동작하는" under R2에 있는 벡터 b로 변환시킨 R4에 있는 모든 벡터들 x를 찾는 것에 해당한다.
Rn에서 Rm으로 가는 변환 T는 각 Rm에 있는 벡터 T(x)를 Rn에서 벡터로 바꾸는 규칙이다. 집합 Rn은 T의 정의역이라 불리고, Rm은 T의 공역이라 불린다. 표기법 T: Rn -> Rm은 T의 정의역이 Rn이고 공역이 Rm임을 말한다. Rn에 있는 각 x에 대해, Rm에 있는 벡터 T(x)는 x의 상이라고 불린다. T(x)에 있는 모든 이미지들의 집합은 T의 치역이라 불린다.
이 섹션의 나머지 부분은 행렬 곱으로 연관된 대응시키기(사상)에 초점을 둔다. Rn에서 각각의 x에 대해, T(x)는 A가 m*n행렬일 때 Ax로 게샨된다. 쉽게말해서 우리는 이러한 행렬 변환을 x->Ax로 나타내기도 한다. T의 정의역이 A가 n개의 열을 가지고 있는 Rn이고, T의 공역이 A의 각각의 열이 m개의 행을 가지고 있는 Rm일때 임을 관찰해라. T의 범위는 행렬 A에 열들에 대한 모든 선형 결합된 것들의 집합인데, 각 상 T(x)가 Ax를 형성하기 때문이다.
섹션 1.4에 있는 이론 5는 A가 m*n이면 x->Ax로의 변형은 모든 스칼라양 c와 Rn에 있는 모든 u,v에서 A(u+v) = Au + Av 와 A(cu)=cAu 임을 보여준다. 이러한 성질들은 선형대수학에 있는 변환에서 가장 중요한 성질임을 확인한다.
- 데블스캠프2002/진행상황 . . . . 18 matches
* 마지막 날에 온 사람이 3명. 그리고 문제를 푸는데 참여한 사람이 2명 밖에 안남았다는 점은 데블스캠프를 준비한 사람들을 좌절하게 한다. 그나마 한편으로 기뻤던 점은, 아침 7시가 되도록 컴퓨터 하나를 두고 서로 대화를 하며 RandomWalk를 만들어가는 모습을 구경했다는 점. 그 경험이 어떻게 기억될지 궁금해진다.
게다가 피시실에 서 있는중 중간중간 아이디어가 떠오를때 화이트보드를 쳐다보고 있노나니 내용 없는 빈 보드를 가만히 두고 싶어지지 않는다. 손이 근절근절해지도록 일종의 NoSmok:어포던스 를 제공한다고 할까. 칠판과는 다르게 손도 잘 안더러워진다.
피시실에 컴퓨터만 바꿀 것이 아니라, 화이트보드를 놓는 것도 좋은 피시실 환경을 제공하는데 도움을 주리라 생각한다. (과 사무실에서 디지털 카메라를 빌릴 수 있다면 더더욱 좋겠다. 화이트보드로 아이디어를 적고, 디지털 카메라로 찍어서 바로 올리고..)
우리는 수학문제에 대해 달랑 답만 달아놓으면, 설령 답이 맞더라도 "과정이 없다"고 문제를 틀리기도 한다. 프로그램은 최종적인 "답"이다. 우리는 그 답이 나오는 과정에 너무도 무관심하다.
* 어떤 만화에서 보면 한 스승이 춤을 지도할때 재현성에 대해 이야기한다. '극장에 가득찬 관중들 앞에서, 당신은 "오늘은 신이 내리지 않았습니다" 라고 사과할 셈인가요?" 세계의 정상엔 최고의 춤에 '재현성'을 가지고 있습니다. 의식하십시오. 발가락, 발바닥, 모든 근육들을.'
과정을 의식하고 행한다는 것은 그런것 같다. 문제 SPEC을 받았을때부터 코드의 끝까지. 잘못된 부분을 의식하지 않으면 끝까지 고칠수 없다. 문제 자체가 드러나지 않으면 문제를 풀 수 없으니까. 문제가 나를 지배하기 전에 내가 문제들을 지배하려면. 하나하나 나의 제어영역으로 들어오도록 해야겠다. 이름상으로는 세미나의 진행자로 올랐지만, 이 시간만큼 나는 세미나 진행자인 동시에 배우는 사람일 수 있었다.
* '''Pair Teaching''' 세미나를 혼자서 진행하는게 아닌 둘이서 진행한다면? CRC 디자인 세션이라던지, Structured Programming 시 한명은 프로그래밍을, 한명은 설명을 해주는 방법을 해보면서 '만일 이 일을 혼자서 진행했다면?' 하는 생각을 해본다. 비록 신입회원들에게 하고싶었던 말들 (중간중간 팻감거리들;) 에 대해 언급하진 못했지만, 오히려 세미나 내용 자체에 더 집중할 수 있었다. (팻감거리들이 너무 길어지면 이야기가 산으로 가기 쉽기에.) 그리고 내용설명을 하고 있는 사람이 놓치고 있는 내용이나 사람들과의 Feedback 을 다른 진행자가 읽고, 다음 단계시 생각해볼 수 있었다.
하나는 사람들이 별다른 외현화를 하지 않고 바로 프로그래밍에 들어갔기 때문이다. 외현화라는 것은 자기 생각을 머리 바깥에 표현하는 것을 말한다. 다이어그램을 그리거나, 글을 쓰거나 해서 표식을 남기는 것이다. 외현화가 필요한 이유는, 사람의 단기기억 장치는 상당히 작은 수의 것들만 기억할 수 있기 때문에 일종의 "보조기억장치"를 통해 기억부담을 줄여야 하기 때문이다. 그런데, 미리 문제이해/분석/기획시에 특별히 자신이 이해하고 계획한 문제풀이를 외현화하지 않았기 때문에, 프로그래밍을 하는 중엔 유일한 보조물인 "요구사항"을 그대로 보고 따라하게 된 것이 아닐까 생각한다. 만약 문제를 보고 분석을 하면서 간단한 다이어그램을 그려뒀고, 그것을 참조하면서 프로그래밍했다면, "좀 더 바람직한 순서"를 택할 수 있지 않았을까.
그렇지만 초반에 시간관리가 부족해서 전체적으로 약간 시간이 부족했다. 하지만, 처음 계획했던 것의 80% 이상을 실행했다는 점에서 꽤 성공적이었다고 생각한다.
* 준비 많이 한건 세미나 자료물 나누어준것만 봐도 이해한다. 본래의 위키페이지에선 각 Resource 별 이미지들까지 캡쳐했으니. ^^ 단, 아쉬운 점이라면
* Web Programming 때 상규의 보충설명을 보면서 상규가 대단하다는 생각을 해봤다. 간과하고 넘어갈 뻔 했었던 Web Program의 작동원리에 대해서 제대로 짚어줬다고 생각한다. --["1002"]
꼭 생소하다의 문제를 떠나서, 전반적인 컴퓨터 동작원리 보다 구체적 용어들 (어떻게 보면, 이미 공부하여 알고 있는 사람들의 경우 일상어화 되어버린 언어들)이 먼저 나와버렸기 때문이다. 컴퓨터가 하드웨어와 소프트웨어로 구분되어지기 이전엔 어떠했는지, 그게 하드웨어와 소프트웨어로서 구분하는 방법으로서 폰 노이만 아키텍쳐가 나온 이야기라던지, 그러하기 때문에 PC 카운터가 필요하며 메모리로부터 명령어를 읽어온 뒤, CPU에서 명령을 해석하고 처리한다라던지 등등. 그러한 이야기가 나오기전에 어드레스/세그먼트/옵셋/디코딩 이 나와버렸기 때문에 어려운 세미나가 되어버렸다고 생각한다. 후에 상민이가 다시 동작원리부터 상대적으로 쉬운 용어로 설명을 해주면서 사람들의 반응을 유도한점에 대해서는 사람들이 한번 생각을 해볼 필요가 있다. 우리와 대화하는 사람은 어느정도의 지식수준을 가지고 있는가에 대해서. 정말 이해 안가는 부분에 대해서는 질문 자체를 만들어내기 힘들다. --석천
-- 왜 어려웠을까, 왜 쉬웠을까에 대해서 생각해봤으면 좋겠다. 그리고 또한 '정말 쉬웠을까?' 라는 점도. 이건 사람들에게 물어보며 Feedback 을 얻어야 할 것이다. 개인적인 생각으론 Unix 또한 그리 많이 쉬운 세미나는 아니였다고 생각한다. 다음에 것들에 대해 답할 수 있는지.
* 상민이도 글에서 언급했지만, 의도야 어찌되었건 세미나 중간에 강사의 이야기를 끊은점은 나를 비롯해서 잘못한 점이 크다고 생각한다. 세미나를 주도하는 사람은 세미나 발표자이라는 점을 망각을 한 것 같다. 나도 미안하다. --석천
* 불필요한 스레드란 없으니 걱정말고. ^^; 개인적으로 C 와 어셈과의 포인터관계를 어디서 찾았냐면, 해당 주소값이란 것이 무엇인가에서 찾았다. (단, 내가 정직이나 남훈이보단 하드웨어 관련지식이 깊지 않다) '포인터 값을 화면에 찍었을 경우에 나오는 엄청나게 큰 숫자(윈도우의 경우 32비트) 의 의미는 무엇인가?' 라는 질문을 하게 되었고. 그 이후 메모리가 16메가바이트라는 건 메모리에 0번부터 16메가바이트-1 이라는 번호를 부여하고, 해당 번호에 값을 대입하는 것이라는 접근을 하게 되었지. (물론, 이것도 물리적 주소는 아니겠지. 결국 우리가 이용하는 주소란 OS 에 의해 한번 걸러진 논리적 주소겠지.) 추상화의 정도를 이야기하라는 건 꼭 해당 언어 기준으로 이야기하라는 게 아니라, 경험에 대한 연결고리(여기서는 'C에서 포인터 변수를 화면에 찍어보니 이상하게 큰 숫자가 나왔다' 정도)를 찾아보자라고 한다면 정말 이야기가 '추상적'이려나; --석천
* 진행의 순서 모호 - 선호도 인정했지만 체계적인 준비가 좀 부족했던점. 본래 준비하기로 한 내용과 달랐다는 점(화일 입출력 부분) 그리고 Table Of Contents 의 부재. 그리고 사람들의 질문을 받아서 이야기 하는 방법의 약점이라고 할까. 잘못하면 전체 내용의 연결고리를 잇지 못한다는 점이 있었다고 생각
- 설득의심리학 . . . . 18 matches
* 대조 효과 - 점포를 찾는 고객에게 비싼 물건을 먼저 권한다. 자동차를 팔고나서 옵션을 판다. 부동산에서는 초라하고 비싼집을 먼저 보여주고 다른 집을 보여준다.
* 상호성의 법칙 - 먼저 호의를 베풀고 그에대한 보답을 요구한다. 다른 사람이 우리에게 베푼대로 우리도 그에게 되갚아야한다고 생각하는 경향. 상대방이 양보하면 나도 양보해야 한다고 생각한다.
* 물건을 그냥 놔둔 상태에서 도둑이 훔쳐갔을때와 봐 달라고 한 후에 도둑이 훔쳐갔을때 후자가 훨씬 더 많이 제지한다.
* 그들이 우리의 자기 이미지를 그들이 원하는 형태로 바꿔 놓으면 우리는 새롭게 형성된 우리의 이미지에 충실하기 위하여 그들의 요청에 자발적으로 응하게 된다.
* 고난의 경험이 일관성을 강화한다. - 가혹한 기숙사 신입생 환영회
* 개입이 영향을 끼치기 위해선 -> 개입이 자발적, 공식적인 것이어야 하며 많은 노력도 포함되어야 한다.
* 일관성의 근거를 만드는 미끼 기법 - 자동차 판매, 에너지 절약 캠페인. 승낙이 이루어지면 미끼를 제거한다.
* 방어 전략 -> 본능적인 거부감에 따라 행동한다. 미끼가 없었다면 어떤 결정을 했을지 상상을 해본다. 처음에 자신이 의도했던 바를 되돌아 본다.
* 유사성의 영향력 - 우리는 우리와 비슷하다고 생각되는 사람의 행동을 바탕으로 자신의 적절한 행동을 결정하곤 한다.
* 인민사원 집단 자살 사건, 경마장에서 배팅에 자신이 없는 사람들은 다른 사람이 많이 배팅한 말에 배팅한다. 이를 이용해서 돈을 벌기도 한다.
* 자동차 판매왕 - 고객은 정당한 가격을 원하고 그들이 좋아하는 영업사원으로부터 차를 구입한다.
* 칭창해주는 사람을 좋아한다.
* 협동을 통한 학습 - 공동의 목표를 제공한다.
* 권위의 법칙 - 사회적으로 존경을 받는 직함들은 그것을 갖고 있는 사람들의 키가 더 크게 보이게 한다.
- 이영호/64bit컴퓨터와그에따른공부방향 . . . . 18 matches
그들과 나의 사이엔 큰 장벽이 있음을 실감한다.
때문에 완전한 64bit 체제가 자리 잡기 전까진 32비트 체제의 지식을 내것으로 만들어야한다.
이것은 패러다임을 따르는 입장에서 32bit를 버려야한다는 뜻이된다.
Assembly이다. Assembly를 현재 나와 있는 가장 발전된 언어라 생각하고 Assembly를 누구보다 깊게 파고 들어야한다.
(C를 사용할 시 Inline Assmbly만을 허용한다.)
몇가지 질문을 한다면 (활동 영역을 아마 시스템 프로그래머 분야로 잡은 것 같아서, 좋아하는 분야를 공부하는 것에 대해서는 큰 이견이 없습니다.)
└저도 C (배우게 된다면 Assembly도.ㅎ)를 좋아 합니다.ㅎ 무엇보다 빠른 연산속도와 하드웨어 제어(해본적은 없지만), 포인터를 통한 메모리 접근등 좋은 점이 많아요.^^* 그렇지만 예를 들어 1만 팩토리얼을 출력하는 프로그램을 작성하시오. 라고 문제가 주어졌을때, C로 짜면 한나절이지만 파이썬으로 작성하게 되면 5분도 안걸리게 됩니다. 물런 연산속도가 느리기는 하지만 말입니다.^^ 이런 점에서 봤을때, 속도가 중요하다거나 특화된 프로그램을 작성해야할 경우에는 C와 같은 언어가 좋지만 보편적으로 사용하는 워드프로세서라든지 기타 응용프로그램이나, 제작해야할 프로그램의 제작시간이 짧을 경우에는 상위레벨의 언어가 좋을거라고 봅니다.^^ 뭐 이렇게 말은해도.. 사실 서로의 장점을 그때그때 맞춰서 섞어쓰는게 가장 좋지 않을까요?ㅎ (게임을 만들때 하위레벨의 언어로 하드웨어를 직접 사용한다 하더라도, 다이렉트를 이용하지 각각의 그래픽 카드에 맞춰서 프로그램을 만들지 않는것과 비슷한것 같아요.^^) 이상 지나가는 행인1의 잡다한 생각이었습니다.^^* - [조현태]
음. 아쉽게도 그런 용도로 Assembly를 평가 한게 아닙니다. 우수하고 못하다의 평가는 여기서도 나오는군요. 한가지만 파면 성공한다와 같은 맥락이랄까요... 저는 미래의 직장보다도 현재의 지식욕을 채우고 싶을 뿐입니다. 누구보다도 이것에 대해 많이 알고 싶고 또한 그렇게 되길 바랄뿐입니다. 과연 Java나 Python등을 공부하다보면 컴퓨터에 대한 가장 기초적인 지식들을 얻기 쉬울까요? 그렇기 때문에 Assembly에 대한 직접적인 접근을 하려고 하는 것입니다. 지식욕이 아니더래도 현직에 계시는 프로그래머분들께 컴퓨터에 대한 기초가 부족하고 프로그램만 짤 줄 아는 신참 직원들은 항상 한계에 다다르면 좌절한다라는 말을 들은적이 있습니다. 한번쯤은 생각해 볼 문제입니다. Assembly > C++을 평가한 것은 이런 맥락입니다. 컴퓨터에 대한 기초가 있느냐 없느냐. Assembly를 만지고 C++을 만진 사람의 경우는 모르겠지만 C++만 만지고 Assembly를 공부하지 않은 사람의 한계는 언젠가는 드러나게 되죠.
참고로, 어플리케이션 개발쪽에서는 다른 이야기들이 이슈가 됩니다. 순수하게 프로그래밍 부분만을 생각한다면(조금 개인적인 생각이 짙습니다만)
* 어떻게 하면 정해진 시간 내에 원하는 스펙을 충족시키고, 최선의 성능을 발휘하는 결과물들을 만들어낼까?
컴퓨터 계의 대부 다익스트라(EdsgerDijkstra)는 이런 말을 했죠. "천문학이 망원경에 대한 학문이 아니듯이, 컴퓨터 과학 역시 컴퓨터에 대한 것이 아니다."(Computer science is no more about computers than astronomy is about telescopes.) 망원경 속을 들여파봐야 거기에서 명왕성이 뭔지 알 수가 없고, 컴퓨터를 속속들이 이해한다고 해서 컴퓨터 과학에 달통할 수는 없다 그런 말이죠.
선배님께서 82년부터 기계어로 해오신 것들이 다른 언어를 접하고 그 기초를 익힐때 도움이 안되었을까요? C언어의 포인터만 생각해도 C언어를 처음 접하는 사람과 어셈블리를 접하고 C언어를 접하는 사람에게는 큰 차이가 있을 것 같네요.(저 역시 포인터의 어설픈 이해를 어셈블리를 조금 공부해보고 제대로 잡았으니까요) C언어만 접한 사람들이 왜 상수를 고치지 못하는지 제대로 이해할까요? (C언어 책의 대부분은 상수는 고치지 못한다라고만 말하지 메모리의 실행 코드 부분이어서 고치지 못한다고는 말을 하지 않죠 :) )
생각이 너무 한쪽에 치우신거 같네요. 아마도 저 말고 다른 선배님들도 저와 비슷한 심정(생각)으로 글을 쓰셨을거 같습니다. 선배님들 말이 어셈블러를 공부하지 말라? C++만 공부하라~~ 이렇게 들리셨나요? 저는 아닌거 같은데요. 조금만 더 생각하고 읽었으면 좋겠네요. 위에 쓰신 글들을 보니 어쩌면 프로그래밍에 관련해서 저보다 더 많이 알고 있으리라 생각되는데요. 우선 젤하고 싶은 생각은 남의 글을 비판적으로 읽는것도 중요하지만, 그사람의 입장에서 생각해보는게 좋을거 같군요. A라고 말했는데, B라고 들으면 안돼겠죠. 어셈을 익히고 C++을 익히는것도 좋습니다. 그렇다고 C++을 익히고 어셈을 익히는게 나쁜 방법이라고 생각하지는 않는데요..@,.@. 제생각에는 님은 "어셈을 꼭 인힌다음 C++을 익혀야돼" 라는 고정관념에 빠진듯 함니다. 어셈을 모른다고 프로그램을 적게 이해한다고 생각하지도 않구요. 제 의견이지만 특정 프로그램언어 보나는 알고리즘, 자료구조 이런것들이 더 중요하다고 생각합니다. 그리고 C++이 쉽다? 정말 그럴까요? 정말 C++이 어셈보다 쉽다고 생각하시나요? 이펙티스 C++이나 엑셀레이터 C++ 이런책들을 한번 읽어 보시는것도 좋을거 같네요. 머 주저리 주저리 쓰게 됐는데 어디까지나 제 생각이고, 다른사람들의 입장에서 글들을 한번 다시 읽어 보는것도 괜찮은 생각인거 같군요. - 상섭
'' '특정언어를 공부한다'에는 두가지 의미가 같이 포함되어서 그런 것 같습니다. 즉, 언어 자체를 공부하는 것과 해당 언어가 쓰이는 분야(시스템, 웹, 컨커런트 등)를 공부하는 것. 아마 영호군의 경우 강조하려는 것은 시스템 레벨에의 지식에 대한 공부일 것이므로, '알고리즘/자료구조 대신 특정 프로그램언어를 공부한다'는 기우가 아닐까 생각. (물론, 하려는 이야기는 이해했음..~)--[1002]''
상규의 생각에 전적으로 동의합니다. 시스템 프로그래밍에서 있어서 최고가 되는 데에는 영호군이 말한바도 한가지 방법이 되겠지요. 하지만 절 비롯한 많은 분들이 B 를 잘하려면 A 부터 탄탄히 닦아야 한다는 의미로 받아둘여질 수 있어 저로서는 동의하기 힘든 부분입니다. 다른 사람의 생각을 자신의 기준으로만 재는 것은 바람직하지 않다고 생각합니다 - 임인택
- 2011년독서모임 . . . . 17 matches
* [김수경] - [http://www.yes24.com/24/Goods/436056?Acode=101 성공한 CEO는 단순하게 해결한다]
* 안철수는 아버지의 뒤를 이어 의사가 되기를 기대하는 부모님의 모습에, 자신의 생각을 접고 의대에 갔다. 그러다 자신이 쓰던 컴퓨터가 고장난 원인이 "바이러스"임을 알게되고 여러 자료를 찾아가며 치료제를 만들었다. 당시, 바이러스라는 존재를 모르고 당하는 사람이 많아, 안철수는 무료로 바이러스 백신을 배포하여 사람들한테 도움이 되고자 했다. 그대로 갔으면 의사로서 앞 날이 창창했겠지만, 자신을 찾는 사람이 있고 자신도 원하던 일을 하기 위해 "안철수 연구소"를 차리게 되었다. 그 모습을 지켜본 아내도 초기에 자리잡기 힘들었을 때 돈을 대주고, 지금은 반대로 자신이 원하는 일을 하기 위해 꿈을 찾아 갔다. 잘될거라는 긍정적인 마인드로 자신의 길을 관철해 나아가는 모습이 멋졌다. 늦었다고 포기하지 말고, 내가 진짜 원하는 일이 무엇인지 고민해보아야 겠다.
* 데미안은 싱클레어의 성장소설이다. 자신도 친구들과의 대화에 끼기 위해 물건을 훔쳤다고 거짓말을 한 싱클레어는 프란츠 크로머가 주인한테 일러 포상금을 타겠다는 협박을 하자 크로머의 온간 잡일을 맡게되며 무마를 시도한다. 하지만 나쁜 일을 하게 되면서 점점더 약점이 잡혀간다. 그러던 그를 데미안이 구제해준다. 하지만, 싱클레어는 그 일을 금새 잊고는 자유를 누린다. 그러다 술+담배+여자(!)의 막장 길을 타다가 우연히 길에서 스치듯 지나간 여자를 보고 정신을 차리기도 하고, 자신의 이상형을 손이 가는데로 그렸는데 데미안과 비슷한 인상의 사람이 그려지기도 했다. 이 그림은 싱클레어의 성장에 맞춰 점점 데미안의 모습에 가까워진다. 교회에서 만난 피아노 치는 사람한테서 '''압락사스'''의 존재에 대해 심도있게 알게되고, 불 앞에 엎드려 명상을 하면서 깨달음을 얻기도 한다. 데미안과 그의 어머님을 만나 깨달음은 극에 이르고, 전쟁이 발발하면서 징병나간 그곳에서 마침내 데미안과 하나가 된다.
* 어렸을 때는 말도 어렵고, 내용 자체가 이게 뭔 말인지 이해가 안갔었다. 지금은 인간으로서 선한 쪽 일만 할 수 없기 때문에 선+악이 공존하는 압락사스가 등장했다는 것과, 어려워질 때마다 등장하여 이끌어준 데미안이라는 존재에 가까워져가는 싱클레어의 성장기라는 것은 이해가 간다. 하지만 싱클레어의 내면 중에 데미안의 어머님을 엄마 혹은 연인으로 동일시하는 것과 데미안이 프란츠 크로머로부터 구해줘도 고마워하지 않는 것은 이해가 가지 않는다. 나중에 한번 더 읽어야 할 필요성을 느꼈다. '''이해가 안갔던 영화'''에 대해서도 이야기를 나눴는데 내가 생각한 것은 [http://movie.naver.com/movie/bi/mi/basic.nhn?code=17368#story 마법의 빗자루]였다. 편지를 받아가며 공부했던 견습 마녀 1명 외에 다른 사람들은 편지를 보낸 사람이 사기꾼인지 인식 못했다던지, 사기꾼이었던 브라운 교수가 가진 나머지 반의 책을 찾기 위해 시장에 갔다가 그 책을 노리는 또 다른 무리를 만났는데 어느 순간 안보인다던지, 마법의 주문을 찾기 위해 애니메이션 세계로 갔는데 그 곳에서 가져온 물건은 사라진다던지, 사물을 움직이는 마법 주문을 공부하려던 이유가 전쟁에 도움이 되기 위해서이었다는 사실이라던지 무언가 내용 구성 측면에서 허술하고 이해 안가는 전개가 많았다. 하지만 침대를 통해 원하는 장소로 이동이 가능하고, 사물을 움직이고, 토끼로 변하는 등 어렸을 때 가족끼리 보기에는 좋았다.
* 몰입에 대한 얘기가 참 많이 나오지만 몰입하기 참 어려운 책이었습니다. 동기화를 한다고 해도 '절실함'이 없으면 몰입하기 어렵고 실천하기 어렵다는게 제 생각인데 그런 부분에 대한게 별로 없어서 아쉬웠습니다. 자신이 몰입으로 이러한 성공을 거두었다는 내용이 있었으면 몰입의 효과에 대해 더 와 닿았을지 모르지만 자신이 연구를 위해 조사했던 남얘기 위주입니다.
* 어렸을 때 가족들이 영화를 보고 있길래 옆에서 그냥 같이 봤었던 (제목은 기억 안나고..) 영화 두편이 있었습니다. 하나는 (독서모임때는 베트남이 배경이라고 이야기 했는데,, 생각해 보니까 인도였습니다 -_-;;) 인도에 주둔하던 영국군이 나오는데.. 정확한 스토리는 기억 안나 패스 하겠습니다.. (죄송;) 다른 한 편의 영화는 한 시나리오 작가가 한 시나리오로 소위 대박을 터뜨리고, 그로 인해 영화사에서 얼마든 시간을 줄테니 시나리오를 써 달라고 합니다. 처음에는 시나리오가 딱히 생각이 나지를 않아 고민하고 있을 때 영화사 사장은 뭐든 생각나는 것을 자유롭게 써 달라고 합니다. 그 때, 옆에 있던 영화사 사장 비서가 작가에게 나같으면 사장님께 지금 머리에 있는것을 자유롭게 이야기 하겠다면서 어서 이야기 하라고 하다가 짤립니다 -_-; 뭐 그렇게 작가는 시나리오를 써 가는데 옆집에 사는 남자와 친하게 지냅는 장면이 나옵니다. 사실 그 이웃사촌은 살인마였습니다. 하루는 그 이웃사촌이 작가에게 상자를 하나 맡기고 (중요한 거라고 이야기 하면서) 잠시 어디를 좀 갔다 오겠다 하고 사라집니다. 그렇게 작가는 다시 글을 쓰는데 그 작가의 책상 위 벽에는 해변에 비키니를 입은 여자 사진이 있습니다. 뭐 이곳에 가고 싶다는 둥의 이야기를 한 거 같은데.. 뭐 아무튼.. 그러고 얼마 안가 작가는 자신이 생각하는 엄청난 시나리오를 만들게 됩니다. 하지만, 영화사 사장의 마음에는 들지 않았습니다. 그리고 당시 배경이 제 2차 세계대전으로 애국심이 불타오르던 시기여서인지 사장은 그러한 영화를 원한다고 말하고 그 짤랐던 비서를 다시금 데려와야겠군 이라며 나갑니다. 그러고 집에 돌아오니 낯선 남자 둘이서 작가의 시나리오를 읽고 있었습니다. 그들은 옆집에 살던 살인마를 쫓아 왔다며, 행방을 묻습니다. 그러면서 이웃이 주고 갔던 상자에 사람의 목이 들어있다고 말합니다. 그때 옆집 남자가 돌아오고 낯선 남자 둘과 싸움이 납니다. 작가의 집은 불타고 작가와 살인마는 몇마디 주고 받더니 작가는 정장을 입고 유유히 집을 빠져나갑니다. 그렇게 작가는 어느 해변가에 도달하고 해변가에서 어느 비키니를 입은 여자와 몇마디 주고 받더니 작가의 벽에 걸려 있던 사진과 같은 장면이 연출이 되면서 끝이 납니다..... 생각나는데로 시나리오를 적은건데.... 뭘 말하는건지는 모르겠습니다. 별 다섯개를 받은 영화인데 -_-;; 언제 인터넷 검색을 해서 좀 찾아봐야 될 것 같은 생각을 가지게 된 시간이었습니다.;
* 먼지의 여행은 대학을 졸업하고 변변찮은 직장조차 얻지 못하고, 뒤늦게 자신이 해왔던 일이 무의미했었다 좌절하던 주인공이 우연히 순례자 부부를 만나면서 하게된 여행기입니다. 돈을 벌어 악착같이 살아야한다는 강박에서 벗어나 돈 없이 세계여행을 갑니다. 처음에는 순례자 부부를 따라다니며 그 사람들을 따라하려하지만, 이 역시 그저 남의 경험을 얻어먹으려는 행위로 밖에 여겨지지 않아 자신이 혼자 여행을 떠납니다. 콜키타에 있는 마더하우스에서 고아원 봉사활동을 하며 아이들의 순수함을 보며 깨달음을 얻고, 그 때 그 때를 즐기는 삶을 살게 됩니다. 돈 없이도 사람이 행복할 수 있다는 것을 깨닫습니다.
* 이상한 나라의 앨리스의 2부라고 말은 많이 들었는데, 실제로 읽어본 건 이번이 처음이었어요. 내용이 이어지는 건 아니고, 그냥 처음과 끝의 구성이 비슷하고 앨리스가 등장한다는 것 외에는 없는 듯 합니다. 앨리스는 7살 하고도 6개월인 호기심이 왕성한 나이여서 그런지 모든 것을 신기한 관점에서 바라봅니다. 거울 건너편은 이쪽세계와 비슷한듯 하지만 좌우가 뒤바뀌었고, 실제로 안 보이는 부분은 이쪽세계와 다를지도 몰라! 라고 생각하고, 거울 건너편 세계를 구경하고 싶어 합니다. 그래서 손을 댓는데, 어느 순간 건너편 세계로 넘어옵니다. 거울에 비치지 않았던 부분은 과연 색다른 모양을 하고 있었고, 조그만 체스 왕과 여왕이 움직이는 것이 보여, 말을 걸지만 앨리스를 보지도 듣지도 못합니다. 문 밖을 나와 언덕에 가려하는데 아무리 이동해도 제자리로 돌아와 있어, 반대로 이동하니 언덕으로 이동하는 것은 거울이 반대편이라 그런듯 합니다. 곤충에게 이름이 붙여있는 이유는 사람들이 부르기 편한게 아니라, 실제로 이름을 불러주면 대답을 해올거라 조언해주는 모기나, 땅 침대가 푹신하지 않고 딱딱하기 때문에 꽃들이 잠들지 않고 재잘재잘 말을 할 수 있게 되었다던지, 체스 사람들이 밖에서 앨리스만큼 커진 이유는 밖이 탁하지 않기 때문이라던지 독특한 관점이 많습니다. 앨리스의 이동은 체스 말의 이동에 비유되어 처음에는 졸로서 한 칸씩 이동하다가 여왕을 잡고 잠이 깹니다. 초반에 잠을 자고 있던 왕 체스 말이 꾼 꿈인지, 아니면 앨리스가 꾼 꿈인지 묻는 질문과 함께 이야기가 끝납니다.
* 소현 학우가 살포시 저의 사물함에 넣어준*-_-* '선물'이라는 책을 읽었습니다. '누가 내 치즈를 옮겼을까'의 스펜서존슨이라는 유명한 작가분이 쓴 책이고 많이 알려진 도서였기 때문에 기대하면서 읽었습니다. 선물에서는 크게 4가지를 주장합니다. '''현재에 몰두하라''', '''과거에 얽매이지 않되, 실수를 되풀이하지 말고 과거를 교훈삼아 현재를 발전시켜라''', '''미래에 대해 두려워하지 말라. 그러나 미래에 대한 계획을 세워야 한다''', '''소명을 가져라'''. 어찌 보면 당연한 이야기이고 어찌 보면 우리가 살면서 놓치기 쉬운 일입니다. 저 4가지를 깨달은 것만으로 모든 일이 잘 풀리는양 표현된 책은 조금 아쉬운 면이 있었습니다. 사람에겐 참으로 제어하기가 힘든 감정이라는 것도 있고 힘들고 지침이라는것도 있는데 말이지요. 하지만 '선물'을 읽으면서 저는 (과거 회상을 많이 하고 미래 걱정을 많이 하는 편이라) 다시 한번 현재에 몰두해야 함을 느꼈고 최근 취업 준비중인데 제가 하고 싶은 분야, 잘 할 것 같은 분야를 어렴풋이 찾아서 이런저런 생각이 많이 들었습니다. 기분도 좋았구요*-_-*
* 이번에 읽은 고구려라는 책은 학교 올 때 버스 광고에 이 책이 소개가 되어 있는 것을 보고 언젠가 한번 저 책을 읽어야 겠다라고 생각했었는데, 이번에 기회가 되어 읽을 수 있어 좋았습니다. 무엇보다 예전에 읽었던 김운회 교수의 '삼국지 바로읽기'라는 책에 나와 있는 이야기와 같이 김진명 작가가 같은 말을 했는데, '요즘 젊은이들은 삼국지에 나오는 일개 장수의 이름은 알면서, 우리 역사의 인물들은 잘 알지 못한다'라는 말이 와 닿으면서도 한편으로는 일본에는 전국시대를 소재로 쓴 (도쿠가와 이에야스와 같은) 소설이 있고, 일본인들이 그 당시 이야기에 열광하는데 우리나라에는 그러한 소설이 어떤 것이 있느냐라는 생각이 들기도 하였습니다. (뭐, 한 때 인기를 끌었던 태조 왕건이 있긴 했었고, 퇴마록을 지은 이우열 작가의 치우천왕기 같은 책도 있습니다만..) 아무튼, 오랜만에 엄청난 몰입도를 가지고 볼 수 있는 책이었습니다. (총 3권인데 저번 주 월요일에 다 읽었으니 -_-;)
* [강소현] - 디즈니의 해피엔딩 만화영화를 보다가, 실제 동화(각색이 많이 되긴했지만)를 보게 되니 충격이 컸어요! 인어공주가 왕자와 결혼으로 끝맺었던 내용이, 꾸러기 수비대라는 만화영화를 보면서 거품으로 사라진다는 걸 깨닫긴 했지만.. 이 내용도 실제 동화를 보면 또 무슨 비밀이 있겠지요 ;ㅅ; 쨋든! 잠자는 숲 속의 공주가 잠든 진짜 이유가 베를 짜는 바늘에 찔려서가 아니라 왠 남 시종이 공주를 겁탈해서 그랬던 거였더군요 ㅠㅠ 100년 만에 깨어난 공주와 왕자의 세대차이로 인한 갈등은 현실감이 있었어요. 왕자가 남장 여자를 좋아한다는 설정과, 100년 전 왕과 왕비가 공주가 겁탈당하지 않도록 남장을 시켜 키워왔다는 것이 맞아서...바람을 핀 왕자를 남장으로 사로잡아 해피엔딩이 된거는...ㅋㅋ 약간 억지력이 있지만 확실히 그냥 동화로 봤던 것 보다는 각색을 통해 원작을 추측한 이번의 책이 더 현실적이어서 좋았어요. 하지만 확실히 옛날이든 지금이든 애들용은 아닌듯 합니다ㅋㅋㅋ
* [송지원] - 상대방의 심리를 잘 파악하기 위해 본인의 직감, 기억력, 상대방에 대한 관심, 주의력 등의 부수적인 스킬을 요구하는 책입니다. 그리고 그러한 능력들을 키우기 위해 연습할 수 있는 행동 지침과 여러 가지 사례를 소개합니다. 당연한 이야기지만 상대방의 심리를 파악하기 위해서는 상대방에 대해 잘 파악해야 하고 그러기 위해서는 상대방을 많이 겪어봐야 한다는 거죠. 사실 원래 읽고 싶었던 '몸짓의 심리학'을 못 읽어서 좀 아쉬웠어요ㅠ_-
* [권순의] - '''금융지식이 미래의 부를 결정한다'''
*[강소현] - 경제에 별 관심이 없어서 그런가 재밌는 책인데도 불구하고 힘들게 읽은 듯 합니다. 이제 슬슬 신경 쓸 나이가 되기는 했는데 걱정이네요 ;ㅁ; 친구들이 치르는 피트 시험이 얼마 안남아서 그런가 의사, 변호사 등등이 되기까지의 과정을 매우 오래 걸리게 하여(가상 그린벨트!) 높은 수익을 유지한다는 점이 눈에 띄었습니다. IBM의 어떤 저가 레이저 프린터 모델과 고급 모델이 똑같은 부품으로 만들어졌다는 점도! 속도를 늦춰주는 칩을 하나 넣음으로써 돈이 있는 사람들이 싼 제품을 안 사도록 막고, 디자인 새로할 필요가 없는 효과를 내다니... 비행기도 이코노미 클래스에 일부러 차별을 주어 똑같이 한 곳에서 다른 곳으로 이동해주는 거임에도, 비지니스 클래스를 선택하도록 만든다는 걸 보고 충격;ㅅ; 쨋든 이동만 하면 된다는 저같은 소시민1은 그냥 싼 거를 이용하면 되겠지요 ~ㅁ~ㅋㅋ 근데 또 커피는 카페모카를 마시는 거 보면 이상한 쪽에서 돈이 새는 거 같기도...?
* [권순의] - 태백산맥.. 솔직히 학교가 나오는 책을 찾다가 도서관에 없거나 대출중이라 책을 뭐 읽지 고민하던 중에 이 책을 보고 아 여기 주인공이 선생님이지 이러면서 그래 너로 정했어가 되었다는 그런... -_-;; 여하튼.. 이 책은 워낙 유명한 책이기도 하지만.. 간략하게 소개를 하자면 우리나라의 일제 강점기 말부터 6.25 전쟁이 끝나고 까지의 시간동안 우리 민족의 이념과의 갈등 등을 보여주는 책입니다. 이 책에서 학교 이야기를 하다 보니 사회주의에 대한 이야기로 빠졌다가 인간은 다 죽어야 한다는 이야기가 나와 뭔가 발랄한 학교 이야기와는 다르게 무거운 주제가 되었었던 -_-;; 뭐... 그렇습니다.;
- CVS/길동씨의CVS사용기ForLocal . . . . 17 matches
홍길동 씨는 이번에는 Java로 Hello Java를 작성하려고 한다. 간단한 소스지만 CVS에 넣어 볼겸 한번 만들어 본다.
이 프로젝트는 여러명이 할 것이 아니라서, 혼자서 자신의 컴퓨터에서 하려고 한다.
CVS를 개인적으로 사용할려면 두가지 방법이 있다. 하나는, 자신의 컴퓨터에 http://www.cvsnt.org/ 와 같은 서버툴을 설치하여 외부에서도 접근하는 것이고, 구지 서버를 돌리지 않고 cvs를 local에 저장소의 기능만을 이용하는 방법이 있다. 길동씨는 자신의 컴퓨터에서 간단한 저장소의 경험을 해보고 싶어서, local로 시도한다.
먼저 세팅을 위한 파일을 작성한다. 이 세팅이 없다면
도움말 : local은 remote에 접근하는 것과 달리 로그인을 하지 않는 것을 전제 한다. 아무옵션도 붙이지 않고, 자신이 사용할 장소만을 지정한다.
도움말 : CVSROOT 에 설정된 대로 CVS 세팅을 한다.
cvs -d c:CVSLocal init // -d 태그를 설정안하면 환경변수 CVSROOT의 값을 가져와 쓴다. 모든 cvs사용에 해당한다.
프로젝트 진행 폴더를 만들고, 프로젝트를 서버에 등록한다.
도움말 : 모듈(프로젝트와 동일 이하 모듈로 용어 통일)을 로컬의 저장소에 등록한다. 만약 내부에 소스같은 자원이 있다면 같이 등록된다.
서버에 등록된 프로젝트를 받아온다. 이제 어디에서나 checkout을 하면 프로젝트를 받아 올수 있다. 프로젝트 전체를 가지고 오는 개념이라서 상위 디렉토리에서 수행한다.
도움말 : 지정하는 프로젝트(모듈) 전체를 받아 온다. local에 처음 프로젝트를 받아 올때 사용한다.
C:UserHelloJava>cvs commit -m "Hello Java를 출력한다." HelloJava.java
도움말 : add 서버에 추가되는 자원을 등록한다. commit 서버에 변경사항을 반영시킨다.
홍길동씨는 이렇게 프로그램을 C:CVSLocal 에 저장하고는 곧 잊어 버린다. 그러다 몇일뒤 아차 하며 다시 소스를 oop적으로 고칠려고 시도하였다. 그냥 출력하는 사람에게 일침을 가하는 글을 마소에서 본적이 있으리라. 그래서 객체 지향(?) 적으로 작성하려고 한다.
위와 동일한 cvs_SetForLocal.bat 을 실행 하고, 그냥 checkout을 한다. 시작 디렉토리는 c:user> 로 가정하였다.
도움말 : commit 서버에 변경된 자원을 반영한다.
- MoreEffectiveC++/Basic . . . . 17 matches
cout << *pd // pd가 null인지 검사 해야 한다. pointer니까.
사견: Call by Value 보다 Call by Reference와 Const의 조합을 선호하자. 저자의 Effective C++에 전반적으로 언급되어 있고, 프로그래밍을 해보니 괜찮은 편이었다. 단 return에서 말썽이 생기는데, 현재 내 생각은 return에 대해서 회의적이다. 그래서 나는 COM식 표현인 in, out 접두어를 사용해서 아예 인자를 넘겨서 관리한다. C++의 경우 return에 의해 객체를 Call by Reference하면 {} 를 벗어나는 셈이 되는데 어디서 파괴되는 것인가. 다 공부가 부족해서야 쩝 --;
* Item 2 : C++ 스타일의 형변환을 권장한다.
update(&csw); // 당연히 안됨 const인자이므로 변환(풀어주는 일) 시켜 주어야 한다.
* ''reinterpret_cast<type>(expression)'' 은 차후 다시 읽은뒤 정리한다.
이렇게 구현 해서 대비하는걸 추천한다. (dynamic_cast 는 C의 절차적 프로그래밍에서 등장 불가)
이런 클래스를 선언했다. 그리고 다음과 같은 함수로 해당 클래스의 배열을 사용한다고 가정하자
그리고 다음과 같이 사용한다.
printBSTArray(cout, BSTArray, 10); // 올바르게 작동한다. 아무 문제 없다.
로 사용한다. 느낌이 오겠지! 당연히 상속시 child는 parent보다 큰 경우가 다반사이고 배열의 위치 추적이 엉망 진창이 되어 버린다.
C++에서 class templete를 만드는 중 생성자를 빼먹으면 compiler에서 기본적인 생성자를 만들어 생성해 준다. 역시, 당연히 초기화의 문제가 발생할 것이다. 여기에서는 약간 자세한 부분을 언급한다.
조금 더 일반적인 방법은 다음과 같이 pointer를 이용한 접근을 제시한다.
두가지를 구체적으로 이야기 해보면, '''첫번째'''로 ''for'' 문시에서 할당되는 객체의 숫자를 기억하고 있어야 한다. 잃어버리면 차후 resouce leak이 발생 할것이다. '''두번째'''로는 pointer를 위한 공간 할당으로 실제 필요한 memory 용량보다 더 쓴다. [[BR]]
new (bestPieces+1) EquipmentPiece ( ID Number ); // 이건 placement new 라고 하여 Item 8 에서 언급한다.
역시나 이것도 '''delete'''에 관한 모호성을 제공한다. 문제시 되는 점은 rawMemory상에 배치된 EquipmentPiece의 '''destructor''' 호출 유무이다. 예상대로 '''destructor'''를 강제 호출해 줘야 한다. 그래서 위가 아니라, 이런식의 삭제가 된다.
첫번째에서 제기된 문제가 이번에는 template class 내부에서 일어 나고 있는 셈이다. 거참 암담한 결과를 초례한다. 문제는 이러한 template class 가 이제는 아예 STL같은 library로 구축되었단 사실. 알아서 잘 기본 생성자 만들어 적용하시라. 다른 방도 없다.
- ProjectZephyrus/ClientJourney . . . . 17 matches
* 소프트웨어 개발이 공장스타일이 될 수 없는 이유를 하나 든다고 한다면 개발중 개발자가 계속 학습을 해나간다는 점에 있지 않을까 한다. 처음부터 끝까지 모든 것을 다 예상하고 개발할 수 는 없을것이니. (필요한 라이브러리가 무엇인지, 실제 그 라이브러리의 장단점이 무엇인지, 어떻게 사용하면 바로 알수 없는 버그가 되어버리는지 등등. 뭐 큰 소프트웨어일 경우 이것을 다 예측해야 한다라고 하면 할말없지만. 이것도 비용을 고려해서 처신해야하겠지. Cost Estimate 자체가 Cost 가 드는것일거니.) 암튼 아쉬운건 중간에 디자인이 바뀌었을때 (실제로 처음 디자인의 클래스들을 몇개 뺀것도 있고, 인터페이스만 맞춰본 것들도 있고 그러함) 바쁜 사람들이 참석을 하지 못해서 처음부터 설명해야 하는 경우이다.
* 학교에서의 작업의 단점중 하나는 고정된 장소와 고정된 스케줄을 만들기가 쉽지 않다는 점이다. 학교시간표 보고 빈 시간대를 맞춰야 하고, 그 사람은 또 그 사람 나름대로의 스케줄이 따로 존재한다. 시험이라던지, 동아리 활동이라던지 등등. 이 경우 팀원별 스케줄을 보고 팀내 기여도를 예상한다음 그 기여도를 줄여주도록 해야 서로가 부담이 적을 것이다. 단, 위에서 언급한대로 개발중 지속적인 학습과정이 있는 이상, 중간 참여는 그만큼 어렵게 된다. CVS가 있을 경우 해당 코드의 변화를 지속적으로 관찰해나가야 하며, 외부에 있는 사람은 내부 작업자에게 필요에 따라 해당 문서를 요구해야 한다. (내부 작업자가 어떤 욕을 하건 -_-; 나중에 다시 참여시의 리스크를 줄이려면) 내부 작업자는 그 변화과정을 계속 기록을 남겨야 할 것이다. (Configuration Management 가 되겠지.)
* 이번 프로젝트의 목적은 Java Study + Team Project 경험이라고 보아야 할 것이다. 아쉽게도 처음에 공부할 것을 목적으로 이 팀을 제안한 사람들은 자신의 목적과 팀의 목적을 일치시키지 못했고, 이는 개인의 스케줄관리의 우선순위 정의 실패 (라고 생각한다. 팀 입장에선. 개인의 경우야 우선순위들이 다를테니 할말없지만, 그로 인한 손실에 대해서 아쉬워할정도라면 개인의 실패와도 연결을 시켜야겠지)로 이어졌다고 본다. (왜 초반 제안자들보다 후반 참여자들이 더 열심히 뛰었을까) 한편, 선배의 입장으로선 팀의 목적인 개개인의 실력향상부분을 간과하고 혼자서 너무 많이 진행했다는 점에선 또 개인의 목적과 팀의 목적의 불일치로서 이 또한 실패이다. 완성된 프로그램만이 중요한건 아닐것이다. (하지만, 나의 경우 Java Study 와 Team Project 경험 향상도 내 목적중 하나가 되므로, 내 기여도를 올리는 것은 나에게 이익이다. Team Project 경험을 위해 PairProgramming를 했고, 대화를 위한 모델링을 했으며, CVS에 commit 을 했고, 중간에 바쁜 사람들의 스케줄을 뺐다.) 암튼, 스스로 한 만큼 얻어간다. Good Pattern 이건 Anti Pattern 이건.
* 암튼. 이렇게 해봤으니, 앞으로는 더 잘할수 있도록, 더욱더 잘할수 있도록. ["DoItAgainToLearn"] 했으면 한다. 앞으로 더 궁리해봐야 할 일들이겠지. -- 석천
*(나중) 형의 말대로 아쉽다는 생각이 든걸로 봐서는 실패란 생각이 들긴한다.. 그래도 프로젝트를 하면서 여러사람들과 머리를 맞대본것만으로도 오랜 어두운 동굴에서 빛을 찾은것처럼 느껴진다.. 다른사람이 모라 할지라도 그것만으로도 나에겐 이번 프로젝트가 나름대로 큰 성공이라고 생각한다.. 근데 아직 메신저를 못실행시켜봤다.. 어떻게 해야되는지 모르겠다.. --;; 서버쪽을 안읽어봐서 그런가.. 이거 쓰고 한번 돌려봐야겠다.. 별로 한건 없지만, 아니다 나도 엄청난 역할을 했기에 돌려보면 너무 기쁠꺼같다.. ^^
''100% 실패와 100% 성공 둘로 나누고 싶지 않다. Output 이 어느정도 나왔다는 점에서는 성공 70-80% 겠고, 그대신 프로젝트의 목적인 Java Study 와 성공적인 Team Play 의 운용을 생각해봤을때는 성공 40-50% 정도 라는 것이지. 성공했다고 생각한 점에 대해서는 (이 또한 개인의 성공과 팀의 성공으로 나누어서 생각해봤으면 한다.) 그 강점을 발견해야 하겠고, 실패했다고 생각한 점에 대해선 보완할 방법을 생각해야 겠지. --석천''
* 1002 혼자서 작업. 집에서 작업해서 그런지 중간에 다른 일을 좀 많이 했다. (애니보고 축구보고. -_-;) 장소가 주는 장단점이 확실히 존재한다. 아무리 집의 컴퓨터가 나에게 셋팅이 맞춰져있다고 하더라도, 집에는 너무 유혹거리가 많다.)
* 내가 지난번과 같이 5분 Pair를 원해서 이번에도 5분Play를 했다.. 역시 능률적이다.. 형과 나 둘다 스팀팩먹인 마린같았다.. --;; 단번에 1:1 Dialog창 완성!! 근데 한가지 처리(Focus 관련)를 제대로 못한게 아쉽다.. 레퍼런스를 수없이 뒤져봐도 결국 자바스터디까지 가봤어도 못했다.. 왜 남들은 다 된다고 하는데 이것만 안되는지 모르겠다.. 신피 컴터가 구려서그런거같다.. 어서 1.7G로 바꿔야한다. 오늘 들은 충격적인 말은 창섭이가 주점관계로 거의 못할꺼같다는말이었다.. 그얘긴 소켓을 나도 해야된다는 말인데.... 나에게 더 많은 공부를 하게 해준 창섭이가 정말 고맙다.. 정말 고마워서 눈물이 날지경이다.. ㅠ.ㅠ 덕분에 소켓까지 열심히 해야된다.. 밥먹고와서 한 네트워크부분은 그냥 고개만 끄덕였지 이해가 안갔다.. 그놈에 Try Catch는 맨날 쓴다.. 기본기가 안되있어 할때마다 관련된것만 보니 미치겠다.. 역시 기본기가 충실해야된다. 어서 책을 봐야겠다.. 아웅~ 그럼 인제 클라이언트는 내가 완성하는것인가~~ -_-V (1002형을 Adviser라고 생각할때... ㅡ_ㅡ;;) 암튼 빨리 완성해서 시험해보고싶다.. 3일껀 내가 젤먼저썼다.. 다시한번 -_-V - 영서
* PairProgramming 을 할때 가장 답답해지는 상황은 잘 이해 안가면서 넋놓고 있을때랑, 둘이 같이 있어도 Solo Programming 하느 사람 마냥 혼자서 문제를 끙끙거리며 풀려고 하는 모습이다. 꼭 문제를 스스로 삽질해서 풀어야만 자기실력이 향상되는것일까? 다른 사람에게 올바른 질문을 할 수 없는 사람은 혼자서 문제 푸는데에도 오래걸리게 된다고 생각한다. 상대방에게 질문을 하면서 자신이 모르는 것 자체를 구체화하고 (문제 자체가 모호한상태 자체가 문제다. 무엇이 문제인지, 자신이 모르는 것이 구체적으로 무엇인지 모르면서 어떻게 문제를 해결할까? 자신이 모르는게 버클리소켓 전체 사용과정인지 소켓 API의 인자들을 모르면서 네트웍 프로그래밍을 할 수 있을까. 그런사람들에게 '지금 모르겠는게 뭐지?' 라고 물으면 80-90%는 '다 몰라요' 이다. 모르겠는 부분에 대해서 하나하나 구체화시켜나가라. 구체화시킨 예로서 생각을 해봐도 좋을것이다. 시나리오를 만들어보면서, 그림을 그려보면서, 아니면 자기 자신이 그 시스템의 일부가 되어 보면서.) 다른 사람의 아이디어를 자신의 사고에 붙여나가면서 '더 좋은 방법' 을생각해낼 수는 없을까? 언제나 문제의 답을 내는 방법은 '이사람의 방식' 아니면 '저사람의 방식' 뿐일까.
중반 어느정도 대부분의 목표 코드가 나와서 나머지를 채워넣는 과정에 대해서는 Solo 로 영서에게 시켰는데, 아직까진 프로그래밍에 익숙하지 않은 듯 싶다. 자꾸 해당 부분을 플밍하려는데에서 같은 부분이 구현된 소스코드가 있음에도 불구하고 자꾸 책을 찾아보려고 한다. 자신감의 차이였을까. 해당 부분에 대해 꼭 코드를 외워서 플밍하려 하지 않았으면 한다. '하려는 일' -> '각 언어별 구현 방법 순서 잡아보기' -> '구현' 의 과정을 거치거나, 해당 부분에 대해서 응용할 수 있는 이전에 만들어진 코드 (책의 코드 말고 현재 '작성된' 코드)를 들춰보고 생각해봤으면 하는 생각이 든다. [[BR]]
이힛.. 저번 시간에 졸려서 멍한 상태인데다가 의혈문화제 공연준비한다고 공부를 등한시한 상태였다. 친구들과 6시 영화보기로 했던 것들 취소함으로써 더더욱 나 자신이 '도대체 어떤 것이 우선일까... 지금 내가 무엇을 하는 것이 가장 현명할까..' 에 대해 고민을 하면서 반성하고 있었다. 그런 나에게 화도 안내고 차분히 설명해주는 형에게 너무 미안했다. 그래서 영화보는걸 취소했다. 내가 그 자리에서 할 수 있는 최선의 방안이었고 후회하지 않는다. 근데 남는게 별로 없었다. 멍한 상태여서..-_- 오늘은 공부를 좀 한 상태여서기 보다는 개념을 이해한 상태여서 자신이 있었다. 개념만 이해하면 나머지는 어렵지 않을 것이라는 나의 변하지 않는 생각때문에.. 이제 자바 숙제좀 하고나서 메신저 기본 틀을 짜봐야겠다. --창섭
- VendingMachine/세연/1002 . . . . 17 matches
1. 명확하지 않는 변수/함수&메소드 이름에 대해 - 이름을 다르게 바꿔준다. 또는 무엇을 하기 위한 것인가에 입각, 함수/메소드 로 추출한다. [[BR]]
cout << "0.종료한다\n";
cout << "원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
cout << "0.종료한다\n";
cout << "원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
cout << "원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
cout << "0.종료한다\n";
cout << "원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
<< "0.종료한다\n"
- 데블스캠프2005/게임만들기/제작과정예제 . . . . 17 matches
1.출력할 블럭의 모양을 결정한다.
2.랜덤으로 블럭을 생성한 후 next창에 출력한다.
3.next창에 출력된 블럭을 가져온뒤 메인창에 출력한다.
6.한줄이 다 찼을때, 블럭을 삭제한다.
예제) 일자모양을 배열으로 표시하는 방법. 소스가 길어지므로, 헤더파일에 넣기를 권장한다.
소환된 블럭을 움직이게 해보자. 움직이게 하는데는 여러가지 알고리즘이 있지만, 쉬운 방법은 블럭이 내려가면 색깔을 바꾸고, 색깔이 있는 블럭만 움직이게 하는 방법이 있다. 두번째는, 블럭의 끝을 계산해서 그 부분이 닿게되면 멈추게 하는 방법이 있다. 후자가 연산이 더 복잡하나, 좀더 다양한 색상을 볼 수 있다. 움직일 때에는, 좌우의 벽과 다른 블럭을 고려해서 움직여야 한다.
// 블럭의 끝을 체크한다.
// 블럭이 움직일 수 있는가를 판단한다. 못 움직일 경우에는 1을 리턴하고 종료한다.
// 이전의 블럭의 이미지를 제거한다.
블럭을 회전하기 위해서, 해야할 일은, 좌 우측으로 충분한 공간이 있는지를 보고, 벽이 막고 있으면 움직여준 뒤에 공간을 확보해서 회전하게 하는 것이다. 이동보다는 간편한 편이며, 전역변수에 움직인 정도를 기억시켜서, 움직일 수 있도록 해야 한다.
//블럭이 벽에 닿는지, 충분한 공간이 있는지를 확인한다.
//블럭이 회전할 공간이 있으면, 이전의 블럭을 삭제한다.
//변화된 값을 저장한다.
블럭이 내려오게 되어, 한줄이 완성되면 삭제되어야 한다. 또한, 삭제된후 그 윗줄부터는 한칸씩 아래로 내려져야 한다.
if (9==i) //블럭이 다 차있을 경우에는 한줄을 삭제한다.
- 새싹교실/2012/AClass/3회차 . . . . 17 matches
(rand()%1000을 한다면 1에서 1000까지의 숫자가 나올 것입니다.)
-linear search란 리스트의 처음부터 하나씩 비교하여 찾아가는 선형탐색을 말한다.
- 다른 종류의 데이터를 하나로 묶어서 사용하는 데이터 결합법을 구조체라고 한다. 구조체는 같은 자료형을 묶어서 한다면 구조체는 다른 자료형을 묶어 사용한다.
molloc은 함수가 원하는 역활은 우리가 원하는 크기의 자료를 메모리에 할당하고 그 주소값을 다시 되돌려 주는 역활이다.
입력값은 원하는 크기, 리턴값은 메모리 주소이다..
포인터 변수 = (포인터의 자료형 )malloc(원하는 자료크기);
malloc을 한 후에는 free을 호출해서 메모리에 할당하였던 것을 풀어주어야 한다. 그렇지 않으면 메모리에 남겨서 필요할때 사용할수가 없다.
- 포인터의 주소를 가리키는 포인터를 이중포인터라고 한다.
(rand()%1000을 한다면 1에서 1000까지의 숫자가 나올 것입니다.)
‘힙’에 메모리를 할당하는 것을 두고 동적 할당 이라 한다.
(rand()%1000을 한다면 1에서 1000까지의 숫자가 나올 것입니다.)
동적 할당에 가장 기번적으로 사용되는 것은 malloc함수이고, 이 함수를 사용하기 위해서는 "stdlib.h"헤더파일을 포함해야 한다
포인터 변수 = (포인터의 자료형 종류)malloc(원하는 자료크기);
- 필요한 만큼의 메모리를 직접 동적으로 관리 할 수 이쏘록 해주는 함수이다.
- 회원자격 . . . . 17 matches
유지조건 : 한 학기 동안 ZeroPage 내에서 활동(OMS, 스터디 및 프로젝트)이 4회 이상 있어야 한다.
휴면회원에 대한 지원은 준회원과 동일하게 취급한다.
* '''유지조건''' : 한 학기 동안 ZeroPage 내에서 활동(OMS, 스터디 및 프로젝트)이 4회 이상 있어야 한다.
* 휴면회원에 대한 지원은 준회원과 동일하게 취급한다.
* '''유지조건''' : 한 학기 동안 ZeroPage 내에서 활동(OMS, 스터디 및 프로젝트)이 4회 이상 있어야 한다.
* 휴면회원에 대한 지원은 준회원과 동일하게 취급한다.
* 유지조건 : 3개월(1분기) 동안 ZeroPage 내에서 활동(OMS, 스터디 및 프로젝트, ZP행사참여(Code Race, 지금그때, 데블스캠프 등))이 4회 이상 있어야 한다. 단, Devil's Camp는 1일 참여시 1회로 간주
* 휴면회원에 대한 지원은 준회원과 동일하게 취급한다.
* 12년 회장은 해당 경우 중 하나에만 속해도 해당한다고 판단하고 있다.
* Devils Camp에 5일간 참석한다. + ZP회원이 되고싶다.
* 회장에게 어떤 이유에서든 정모에 나오지 못함을 알리고, 그 이후에는 나올 수 있음을 말한다.(8차학기 제외)
* 후기를 10개이상 작성한다.
* 한달에 후기를 2개이상 작성한다.
1. 사전 연락 없거나(게시판 or 위키 공지), 현재 납득할 사정(학부생 아닌 경우,휴학)이 없이 2회 연속 정모에 불참시.본인 의사로 회원 자격을 상실한다.
* 아핫. 사전 또는 사후 연락이라... 내가 말한 '''망설임없이 대답할 수 있는''' 과 어느정도 의미가 통한다고 본다. ^^;; --["창섭"]
제로페이지의 회원이기 위한 첫째 조건으로는 '''중앙대학교 컴퓨터공학과 동문'''이겠구요. 그 다음으로는 제로페이지란 공동체의 활동에 참여를 해야하겠지요. 정모, 전시회, 홈커밍데이, 엠티와 같은 제로페이지 행사에 자발적으로 관심을 갖고 참여 해야합니다. 그리고 세미나, 스터디 등등의 활동을 오프라인 및 온라인을 이용해서 제로페이지 회원들과 함께 꾸려나가야 합니다. 그리고 가장 중요한 조건은 '''제로페이지(ZeroPage)가 무엇을 위한 공동체인지 이해하고 동의'''해야 한다는 것입니다. 여기에서 자발적인 관심과 참여가 유도되어야 합니다. 이 조건만 만족하면 제로페이지 회원이기에 충분하다고 생각합니다.
* 제로페이지가 무엇을 위한 모임인가.. 저는 함께 공동 관심사(포괄적으로 컴퓨터)를 가지고 모인 모임이라고 봤습니다. 공부를 같이 하는 모임은 물론이고 친목모임도 될 수 있는 모임말입니다. 어떠한 목적도 좋지만 그 목적이 오래 가려면 친목이 뒷받침되어야 한다고 생각하기 때문입니다. --["창섭"]
- 02_C++세미나 . . . . 16 matches
포인터는 바로 변수의 메모리 주소를 저장하는 변수이다. (그러므로 포인터는, 그 포인터가 어떤 종류의 변수의 주소값을 가지느냐에 따라서 변수의 가짓수 만큼의 변형이 있다. 왜 여러 종류의 포인터가 필요한지는 나중에 포인터의 연산(물론 포인터도 변수이므로 연산, 비교, 대입 등 거의 일반변수에서 가능한 모든 것이 가능하다)에서 설명하겠다.)
변수에 어떤 값을 저장한다는 것은 실제로 그 변수에 대응하는 메모리에 저장하는 것이다.
여러가지로 말이 많았는데 이쯤에서 포인터의 쓰임에 대해 간략하게나마 설명하겠다. 포인터의 이론적인 정의는 무엇인가. 바로 '메모리의 주소를 가지고있는 변수'란 것이다. 그건, 동시에 포인터를 이용하면 그 해당하는 메모리로의 직접적인 접근과 제어가 가능하다는 뜻이다. 그렇다면 포인터의 역활은 메모리로의 직접적인 억세스가 되는것이고, 여기에 포인터의 연산을 통해 거의 어셈블리언어에 가까운정도의 저수준 메모리 제어를 가능케 한다. 바로 그것이 포인터의 존재이유이며 쓰임이다. 이런 이론적인 포인터의 쓰임 말고, 직접적인 강함의 체험을 원한다면, 여러분이 직접 사용해볼것을 권한다.
이렇게 만들면, a는(*a가 아니다. 정의할때만 *를 붙여야 한다. 사용할땐 a로 쓴다)
p=&a; // a의 메모리 주소를 p에 저장한다. (p는 정수형 변수의 메모리 주소를 저장하는 변수이므로...)
*는 포인터를 대상으로만 사용되는 연산자인데, 포인터에 저장되어 있는 메모리 주소에 보관되어 있는 값을 엑세스할때 사용한다.
cout << a << " " << *p << "\n"; // a의 값과 p에 저장되어있는 메모리 주소에 보관되어있는 값을 출력한다.
cout << a << " " << *p << "\n"; // a의 값과 p에 저장되어있는 메모리 주소에 보관되어있는 값을 출력한다.
그렇다고 생각한다면.. C++을 다시 배우길 바란다.
이와 같은 호출을 '''Call by value''' 라고 한다..
'''Call by address''' 라고 한다.
* 평일날 한다면 우선은 02들 시간표에 맞춰서 시간을 내고 거기에 맞는 강사들이 들어가기로 하자 주말에 한다면 뭐 상관 없지만...^^ --재동
* 전 c 세미나를 준비하고있는 00학번 김남훈이라고 하는데요. c++ 세미나가 제가 하는거하고 상당부분 중복되는듯 한데.. 어쩌죠? 사실 02학번이 중간고사까지 배운내용에 대해 세미나를 한다고 하면, c 나 cpp 가 그다지 차이가 없기도 하고. 일단 저는 10일에 할까 생각중입니다.
- 5인용C++스터디/멀티미디어 . . . . 16 matches
- SND_ASYNC : 비동기화된 연수를 한다. 연주시작 후 바로 리턴하므로 다른 작업을 바로 시작할 수 있다.
- SND_LOOP : 지정한 사운드를 반복적으로 계속 연주한다. 이 플래그는 반드시 SND_ASYNC와 함께 사용되어야 한다.
- SND_SYNC : 동기화된 연주를 한다. 사운드 파일의 연주가 완전히 끝나기 전에는 리턴하지 않는다.
뷰에 WM_LBUTTONDOWN메시지의 핸들러를 만들고 OnLButtonDown 핸들러에 다음과 같이 코드를 작성한다.
Project/ Settings/Link 탭에서 winmm.lib를 링크해 주어야 한다.
앞서 만든 예제를 보면 PlaySound 함수는 사운드 파일 연주가 완전히 종료되기 전에는 리턴하지 않으므로 연주중인 동안은 어떤 일도 할 수 없다. 이런 방법을 동기화 방식이라고 한다.
SND_LOOP 플래그를 지정하면 반복적인 효과음이나 배경음악을 연주하는 등의 설정을 할 수 있을 것이다. 연주를 중지시키려면 PlaySound 함수의 첫 번째 인수를 NULL로 하여 다시 호출해 주면 된다. 따라서, 오른쪽 마우스 버튼을 누르면 연주가 중지될 것이다. 주의할 것은 SND_LOOP 플래그는 반드시 SND_ASYNC와 함께 사용해야 한다. 만약 동기화 연주방식으로 반복연주를 하면 무한 루프로 빠져버릴 위험이 있다.
리소스 뷰의 팝업메뉴에서 Import 메뉴항목을 선택하고 리소스에 포함시키고자 하는 Wave 파일을 선택한다. 그러면 IDR_WAVE1이라는 ID로 리소스에 삽입될 것이다.
PlaySound함수는 메모리 크기의 제한을 받아서 1-2분 정도의 사운드 밖에 낼 수 없다는 점, Wave형태만 지원한다는 점, 연주과정에 사용자가 개입할 수 없다는 단점이 있다.
MCI를 사용하면 동영상도 아주 쉽게 재생할 수 있다. AppWizard로 PlayAVI라는 SDI 프로젝트를 만들고 WM_LBUTTONDOWN 메시지의 핸들러와 WM_DESTROY 메시지의 핸들러를 다음과 같이 작성한다.
동영상 연주는 Video fot window 라이브러리를 사용하므로 뷰에서 vfw.h를 인클루드 해 주어야 한다.
또한 프로젝트에서 이 라이브러리를 사용할 수 있도록 Project/Settings/Link 탭에 vfw32.lib를 추가한다. 그리고 동영상 파일을 프로젝트 디렉토리에 넣어두면 된다.
hWndParent: 부모윈도우를 지정한다. NULL일 경우, 별도의 윈도우로 열린다.
hInstance: MCIWnd롤 사용하는 인스턴스 핸들을 지정한다.
szFile: MCIWnd생성시 오픈할 장치, 또는 AVI파일을 지정한다.
- CCNA/2013스터디 . . . . 16 matches
* 물리계층 장비는 콜리전이나 브로드 케스트를 막지 못한다. 전체가 하나이다.
- (속도)(signaling 방법)(전송 매체 타입)으로 표기한다.
- 엄밀한 의미에서는 이더넷은 10Mbps의 대역폭만 지원한다. 그리고 IEEE 802.11은 다양한 대역폭을 지원한다.
- 일반적인 의미에서 말하는 이더넷은 엄밀한 의미의 이더넷과 IEEE 802.11 양쪽을 다 포함해서 말한다.
- 개별 호스트의 LAN 내부에서 지원하는 대역폭을 100Mbps을 지원한다.
- 따라서 server->switch에서 지원하는 대역폭이 커지지 않으면 병목 현상이 발생할 수 있다.
- 차이점 : 광케이블을 사용한다(토큰링은 STP 케이블 사용), 링이 듀얼링 구조(2중 링)으로 되어 있다.
* 장점 : 다양한 서비스(음성, 데이터, 비디오)를 '''하나의 망으로 통합해서''' 제공한다.
* 단점 : 네트워크 장비들이 공중 통신망에 직접 연결하기 때문에 보안에 취약하다. (현재는 꼭 그렇지만도 않다고 한다)
* ISDN의 프레임 구조 (표준 번호를 꼭 기억하라고 한다)
1. 한 쪽 라우터에서 Call 초기화를 시작하면 연결된 ISDN 스위치로 SPID를 보내고 Call 초기화, 시그널링, Call 해제를 한다.
2. ISDN 스위치는 SS7(Signalling Systen 7)이라는 프로토콜을 이용해서 어떤 경로로 통신을 할지 결정한다.
2. 넥스트 홉(Next hop) 라우터와 연결하는 방법(상대방 라우터의 인터페이스)을 설정한다.
3. 다이얼러 맵을 설정한다. (이건 개념만 이해하고 일단 넘어가도록)
- DataCommunicationSummaryProject/Chapter9 . . . . 16 matches
* cellular networks가 예상보다 빠르게 성장한데 비하여,short-range mobile systems은 덜 성공적이였다.그 이유에는 속도,유선에 비하여 신뢰성의 떨어짐, 경쟁적인 기준이 있다.물론 Cordless phones 처럼 인기있는것도 있지만, 점점 범위를 늘리려고 한다. 또한roaming에서의 실패성이 많다.적외선이 laptop 이나 PDA에서 거의 사용되지만 잘 사용되지 않는다.
* 2000년대 부터 wireless LANs가 데이터 속도와 가격만에서많은 성장을 가져왔다.IEEE의802.11b의 지준을 많이 사용한다.물론 아직은 핸드폰이나 인터넷에 비할수는 없지만,성장 속도는 빠르다. 새로운 시스템은 유선에 도전을 줄 만큼 데이터전송량과 속도를 증가 시켰다.
* ISM 2.4 는 여러 국가에서 모두 사용가능한 주파수 범위이다.따라서 너무나 많은 곳에서 사용하므로 완전 사장보다 더 복잡하다. 그러니 스프레드 스펙트럼을 사용한다. 하지만 11Mbps이상은 능력이 딸린다.
* IEEE 802.11b보다는 Wi-Fi 나 무선 이터넷이 우리에게 잘 알려져 있다. 물론 IEEE 802.11b를 기준으로 한다. Wireless Fidelity(통신에서 충실도의 뜻으로 많이 쓰인다. 예를 들어 " a high ~ receiver 고성능 라디오(cf. HI-FI) ") 의 약자이다. WECA(the Wireless Ethernet Compatiility Alliance)의 트레이드 마크이기도 하다.
* CCK(Complementary Code Keying)라고 불리는DSSS의 2.4GHZ를 사용한다. 물론 기존의 기계와 호환성을 기진다. MAC하는 방법은 CSMA/CA(여기서 A는 avoidance이다 유선과는 틀리다) half-duples이다.shared이다. 대역폭이 11Mbps이지만 오보헤드가 심하다. 여기에다가 쉐어드이니 장에가 심하면 1-2Mbps밖에 안된다.하지만 데이터 전송률은 쓸만하다. 이러한 낭비를 줄이려고 차세대로 갈수록 물리적인 데이터 율을 줄인다.
* 유럽의 1992년에 새운 기준이다. 지들이 만든 GSM을 기준으로 한다.5-GHz의 대여폭을 사용한다.
* HiperLan2 는 802.11a와 거의 물리적인 층은 비슷하다. 그러나 인터넷에 기준을 두지 않는다.(인터넷이 데이터를 처엄부터 기준으로 했다면, ETSI는 음성위주 여기에 데이터를 같이 생각 했으며로 당연하다) TDMA 을 기반으로 한다. 당연 음성 서비스에 좋은 서비스를 해준다. 그러나 역시 미국(802.11a)한테 밀린다.
* 가장 큰 이점은 보안성과 품질(QoS)이다(SWAP).그래서 많은 어필을 한다. 그런데 무선랜의 대부인Wi-Fi와 호환성이 없다.
* 현재 이렇게 하고 있다한다.
* 같은 전화기를 사설, 공용 네트워크 모두에서 사용한다.
* piconet과 scatternet : piconet은 8개의 노드까지 지원하는 네트웍망. scatternet은 그보다 더 큰거. 하나의 장치는 주의의 8개까지의 노드밖에 인식을 못하기 때문에 piconet으로 나뉘어져야 하는 크기
* Frequency Hopping을 사용한다.
* 짧은 거리 무선 시스템은 허가되지 않은 주파수 영역을 사용한다. 이것들은 대화를 위해 공개될수 있고, ISM 어플리케이션과 공유될수 있다.
* 디지털 무선 전화기 시스템은 보통 전화기 만큼 좋은 음질을 제공한다. 그들은 종종 혹독한 간섭을 겪는다.
* 4G 모바일 시스템은 무선 랜을 확장한다. 왜냐하면 거리가 매우 짧고, 많은 장치들이 3G, 무선랜, Bluetooth와 콤비로 사용되기 때문이다.
- DirectDraw/DDUtil . . . . 16 matches
DirectDraw 장치를 풀스크린 모드로 생성한다.
위와 같은 일을 하지만 창모드로 생성한다. 색상수가 없는 것은 윈도우 바탕화면의 색상 수를 따라가기 때문이다.
보통의 서피스를 생성한다.
비트맵으로부터 서피스를 생성한다.
문자열로부터 서피스를 생성한다.
색상수가 적은 비트맵의 경우에는 팔레트를 지정해 주어야 한다.
CDisplay 에 특정한 팔레트를 세팅한다.
서피스의 그림을 백 버퍼로 출력한다.
HBITMAP형의 비트맵을 특정한 팔레트를 통해 화면에 출력한다. [[BR]]
컬러키(투명색)를 가진 채 화면에 출력한다. prc는 사용하지 않는다.
컬러키를 뺀채 화면에 출력한다. 만약 dwFlags에 DDBLTFAST_SRCCOLORKEY를 넣어준다면 ColorKeyBlt와 같은 효과를 낸다. [[BR]]
CSurface형을 화면에 출력한다. prc는 사용하지 않는다.
백 버퍼에 출력되어있는 내용을 현재 화면으로 출력한다. 화면을 모두 완성한 후에 사용한다.
CDislpay의 멤버 m_rcWindow를 갱신한다. 저 CRect형 변수에는 윈도우의 크기가 들어있다.
대개 잘 쓰이지 않는 색을 사용한다.
- Gof/Strategy . . . . 16 matches
비슷한 문제들을 해결할 수 있는 알고리즘의 군들을 정의하고, 각각의 알고리즘을 캡슐화하고, 그 알고리즘들을 교환할 수 있도록 한다. Strategy는 알고리즘들로 하여금 해당 알고리즘을 이용하는 클라이언트로부터 독립적일수 있도록 해준다.
* linebreaking이 필요한 클라이언트이 그 알고리즘을 직접 포함하고 있는 경우에는 클라이언트들이 더 복잡해질 수 있다. 이는 클라이언트들을 더 커지거나 유지가히 힘들게 한다. 특히 클라이언트가 여러 알고리즘을 제공해야 하는 경우에는 더더욱 그렇다.
* 각각의 알고리즘들은 상황에 따라 적절할 때가 존재한다. 클라이언트는 사용할지 안할지 모르는 알고리즘들까지 전부 필요하지 않다.
Composition 클래스는 text viewer에 표시될 텍스틀 유지하고 갱신할 책임을 가진다고 가정하자. Linebreaking strategy들은 Composition 클래스에 구현되지 않는다. 대신, 각각의 Linebreaking strategy들은 Compositor 추상클래스의 subclass로서 따로 구현된다. Compositor subclass들은 다른 streategy들을 구현한다.
* SimpleCompositor - 일반적인 줄 나누기 알고리즘을 구현한다.
* TexCompositor - linebreaking 에 대해 TeX 알고리즘을 적용, 구현한다. 이 방법은 한번에 문단 전체에 대해서 전반적으로 linebreak를 최적화하려고 한다.
* 당신은 알고리즘의 다양함을 필요로 한다. 예를 들어, 당신이 알고리즘을 정의하는 것은 사용메모리/수행시간에 대한 trade-off (메모리를 아끼기 위해 수행시간을 희생해야 하거나, 수행시간을 위해 메모리공간을 더 사용하는 것 등의 상관관계)이다. Strategy 는 이러한 다양한 알고리즘의 계층 클래스를 구현할때 이용될 수 있다.
* 클래스가 많은 행위들을 정의한다. 이는 다중조건문들에 의해서 구현되곤 한다. 이러한 많은 조건문들 대신, 각각 관련된 조건들을 Strategy 클래스들에게로 이동시킬 수 있다.
* 모든 제공된 알고리즘에 대한 일반적인 인터페이스를 선언한다. Context는 ConcreteStrategy에 의해 구현된 알고리즘들을 호출하기 위해 이 인터페이스를 이용한다.
* Strategy 인터페이스를 이용하여 알고리즘을 구현한다.
* 클라이언트는 반드시 각각의 Strategy들에 대해 알아야 한다.
* Strategy 와 Context 사이의 대화중 overhead 가 발생한다.
* 객체의 수가 증가한다.
- HelpOnInstallation . . . . 16 matches
`rcs`가 설치되었는지 확인한다. {{{/usr/bin/rlog /usr/bin/ci /usr/bin/co}}}등등의 실행파일이 있어야 한다. {{{/usr/bin/merge}}}도 필요하다. PHP gettext 모듈이 필요하다. See also MoniWikiRcs
디렉토리 이름을 원하는 것으로 바꿀 수도 있다. 예를 들어 {{{/wiki}}}라고 바꿀 수 있으며
== monisetup.sh를 실행한다 ==
monisetup.sh를 실행하여 디렉토리의 쓰기권한을 조정한다. (기본값은 2777) 이렇게 하여야 MoniSetup.php를 실행시킬 수 있게 된다.
1. MoniWiki를 처음 설치할 경우는 WikiSeed를 심을것인지를 선택한다.
그러나 초보사용자라면 SystemPages는 반드시 설치하는 것을 권장한다.
== secure.sh를 실행한다 ==
{{{secure.sh}}}를 실행해서 다른 사람들이 자신의 Wiki 설정을 볼 수 없게,고칠 수 없게 한다.
모니위키 설치가 끝났지만 사용자의 입맛에 맞게 설정하고자 한다면 다음을 참고하세요.
* MoniWikiOptions 모니위키의 다양한 옵션을 조정한다.
2. {{{$rcs_user}}}의 기본 값은 "root"이나, 위키를 처음 설치할 경우는 이 값을 조절할 수 있다. 한번 결정한 후에는 이 값을 계속해서 써야한다.
* 윈도우즈에서 설치할 때에 이 값이 바뀔 수 있다. 업그레이드를 하여 데이타를 옮겼을 경우에 이 값을 계속 유지하도록 해주어야 한다.
* /!\ {{{$rcs_user}}} 값이 변경되면 버전관리를 쓸 수 없으므로 유의해야 한다.
* backup : {{{?action=backup}}}해 보라. 백업은 data 디렉토리의 user와 text를 및 기타 몇몇 설정을 보존한다. pds/ 디렉토리를 보존하지는 않는다. 백업된 파일은 pds/ (혹은 $upload_dir로 정의된 위치) 하위에 저장된다.
* restore : {{{?action=restore}}}한다. 백업된 tar 파일 목록이 나오고 tar 파일을 선택하면 관리 비번을 물어본다.
- JavaStudy2003/두번째과제/노수민 . . . . 16 matches
달린다, 멈춘다, 속도를 높이거나 낮춘다 등의 행동을 한다
로 모델링한다.
실세계의 객체를 소프트웨어 객체로 모델링하고 구현한다.
* 캡슐화 : 변수(상태)와 메소드(행동)를 하나의 묶음으로 캡슐화한다.
청사진이라고 하기도 하고, 벽돌을 찍기 위한 하나의 틀에 비유하기도 한다.
* 인스턴스 : 클래스에 대한 변수를 선언하는 것을 '인스턴스를 생성한다'고 하고, 이 변수를 인스턴스라 한다.
* 상속 : 자동차 클래스에 버스 클래스, 트럭 클래스, 자가용 클래스가 속한다면,
자동차 클래스는 상위 클래스, 버스,트럭,자가용 클래스를 하위클래스라 하며, 이들의 관계에서 "하위클래스는 상위클래스를 상속한다"고 한다.
* 다형성 : 같은 이름을 같는 여러 가지 형태가 존재한다는 것
* 인스턴스 메소드이어야 한다.
* 메소드의 이름이 같아야 한다.
* 매개변수의 개수가 같아야 한다.
* 매개변수 각각의 자료형이 일치해야 한다.
* 메소드의 리턴형이 일치해야 한다.
- MFC/ObjectLinkingEmbedding . . . . 16 matches
OLE서버 : 서버는 컨테이너에 들어갈 객체를 생성한다. 풀서버는 독립적인 프로그램으로 작동할 수 있거나, 복합 도큐먼트 안에 임베드된 객체로 작동한다. 미니서버는 standalone 모드로서 작동하지 못한다. 오로지 객체를 만들기만 할 뿐이다.
OLE 컨테이너, 서버 사이의 통신은 윈도우 운영체제를 매개로 동작한다. 각 OLE 를 지원하는 프로그램은 공통의 OLE DLL을 가지는데 이 것이 윈도우의 기본지원 부분이다. DLL 안의 함수들은 이렇게 객체사이의 통신을 지원한다. 이때 이를 지원하는 표준적인 인터페이스가 COM(Component Object Model)이다. 본질적으로 엠비드된 객체의 모양과 컨테이너가 그것과 통신하는 방법을 정의한것이다.
OLE서버를 어떤 방식으로 식별할 것인가? OLE객체는 문서, 프로그램등 OLE를 지원하는 어떤 프로그램도 될 수 있다. 시스템에 있는 각각의 OLE객체는 클래스 ID 또는 CLSID라고 부르는 128비트의 숫자로 식별한다. 이들은 GUID라고도 불리우며 알고리즘을 통해서 생성되기 때문에 모두 독특한 값을 지니게된다. 이러한 정보는 윈도우 시스템의 레지스트리에 저장되게 된다.
COleClientItem 에는 엠베드된 항목의 관리를 위해 컨테이너가 필요로하는 인터페이스들이 존재한다.
COleServerItem 안에서 서버를 지원하는 인터페이스도 많은 함수를 갖는다.
|| NotifyChanged() || 서버에서 객체가 변경되면, 이 객체를 임베드 하고 있는 모든 컨테이너에게 이를 알려 컨테이너가 OnChanged()를 호출하도록 한다. ||
컨테이너측에는 COleDocument, COleLinkingDoc 이 존재한다. 전자의 경우는 in-place 활성화를 지원하며, 후자는 링크방식을 지원한다.
서버측에는 COleServerDoc에서 파생된 도큐먼트를 이용한다. 서버측에서는 반드시 OnGetEmbeddedItem() 멤버를 구현해야한다. 이는 이 함수가 순수가상 함수이기 때문이다.
- NeoCoin/Server . . . . 16 matches
* 8080 포트에 접속해 보고, 자칫 노출될수 있는 정보에 대하여 막는다. resin, tomcat 모두 8080 포트를 이용한 테스트를 한다.
* 결국 설치의 모든것을 dselect, apt를 쓰거나, dpkg로 패키징 해서 설치해야 한다. 즉, 서버 설치이후에 python이든 다른 app든 전부 툴을 이용해야 한다는 결론
* ReiserFS 로 변경도 해야 하고 전원 자동 종료 문제도 해결해야 한다.
jvm설정에서 dummy를 설정하고, jdk는 따로 sun에서 받아 오거나, http://blackdown.org 를 이용한다.
1. 다음 패키지들을 설치한다.
menuconfig로 커널 설정하려면 libncurses5-dev 패키지도 설치한다. xconfig로
설치한다.
/usr/src/linux는 실제 커널 소스 디렉토리에 대한 링크여야 한다.
4. 다음과 같이 /etc/kernel-pkg.conf 파일을 편집한다. debian은 커널 패키지의
소스 디렉토리를 청소한다.
.config 파일로 복사한다.
"make-kpkg configure"를 실행한다. kernel-pkg.conf에서 정한 대로
다음 명령어들을 실행한다.
만들어진 커널 패키지를 설치한다.
아래 쉘 함수를 .bash_profile 등에 등록하여 실행되도록 한다.
- Spring/탐험스터디/2011 . . . . 16 matches
* 코치 참석 여부와 상관없이 스터디를 정시에 시작한다.
1.3 테스트 가능한 프로그램 : 모듈화가 잘 되어있어야 함(관심사 분리) 모듈을 먼저 만들어서 테스트하고 후에 조립을 한다. TDD 개발시 TDD이전에 테스트 가능한 프로그램을 만들어야 한다.
1.1. 전략 패턴 : 전략(알고리즘)의 분리를 한다는 의미. 언어에 따라 패턴을 적용하는 방법이 조금씩 다를 수도 있다. 책에서는 interface를 사용해서 전략을 분리하였는데, 이것은 자바에 어울리는 전략의 분리라고 한다.
- HomeController는 MVC 모델의 컨트롤러로 뷰에 모델을 바인딩하는 역할을 담당한다. home() 메소드 내부의 Welcome home!은 logger에 찍히는 문자열이기 때문에 실제로 실행시에 보이는 것은 아니다. HomeController가 하는 주된 역할은 return "home";을 함으로써 HomeController를 사용하는 쪽에서 home.jsp(뷰)를 찾을 수 있게 하는 것이다.
1.1. 우선 MySQL을 받아서 설치한다.
1.3. 책의 소스를 그대로 쳤을 경우 Class.forName("com.mysql.jdbc.Driver"); 문장에서 에러가 나는데 인터넷에서 mysql-connector-java-X.X.X.jar 를 받아서 참조 라이브러리에 추가한다.
1.4. Connection c = DriverManager.getConnection(...); 문장에서 에러가 나는데 문자열의 localhost/springbook 부분을 자신이 사용할 테이블의 이름으로 바꾸어 주어야 한다. localhost/test로 바꿔준다. 이후의 문자열 두 개는 각각 자신의 MySQL 계정 이름(기본값 root), MySQL 비밀번호를 적어주면 된다.
2.1. 우선 책에서 외부 라이브러리를 사용하고 있는데, STS에는 필요한 라이브러리가 들어있지 않은 것 같다. 이쪽 페이지(http://www.tutorials4u.net/spring-tutorial/spring_install.html)를 보고 라이브러리를 받아야 한다. 받아서 압축을 풀고 spring-framework-3.0.5.RELEASE/dist 폴더에 있는 jar 파일들을 프로젝트에 포함시켜주면 AnnotationContext, AnnotationConfigApplicationContext, @Configuration, @Bean 등을 사용할 수 있게 된다.
1.1. DIP : 멤버 변수를 외부에서 주입 받을 때는 구체 클래스가 아닌 인터페이스를 이용한다. 최대한 클래스 내부에서 변수를 할당하지 말고(new를 사용하지 말고) 주입을 받도록 한다.
1.2. 불변객체와 가변객체 : 불변객체는 생성된 이후에 내부의 필드에 대한 수정자가 없는 객체를 말한다. 내부 필드에 접근이 불가능하기 때문에 값이 변하지 않는다. 따라서 한 번 생성한 이후에는 필요한 곳에 같은 객체를 재사용할 수 있다. 가변객체는 내부의 값에 접근할 수 있는 메소드를 공하는 객체를 말한다. 가변객체를 불변객체처럼 한 번 생성한 후에 여러 곳에서 사용할 경우 한 곳에서만 값이 바뀌어도 모든 값이 다 바뀌므로 가변객체는 매번 사용할 때 마다 새로 생성(new)을 해 주어야 한다.
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
- 마케팅천재가된맥스 . . . . 16 matches
* 이 책은 정현이의 추천으로 읽게 되었는데, 엄청 재밌고 유익하게 읽었다. 이젠에 네루의 세계사 이야기 책을 읽다가 너무 빡세서 힘들었는데 이책은 마케팅, 세일즈에 대해서 만화처럼 쉽게 알아먹기 좋게 잘 설명해 주었다. 공학도라면 꼭 읽어 봐야할 책이라고 생각한다. 솔직히 우리는 기술개발이 최고로 중요하고 나머지, 경영 마케팅은 기술만 좋으면 되는거 아닌가 하고 생각하는 경향이 있다고 본다. 그런데 현실은 우리가 기술개발에서 우리의 중요성을 인정받고 싶은 만큼 마케팅 쪽도 기술개발만큼, 때에따라 훨씬 더 중요할수도 있다고 생각한다. 그런 만큼 우리 공학도도 경영, 마케팅(세일즈) 등에 대해서 잘 알아야 한다고 생각한다.
* 이책에서는 고대 이집트에서 그때까지는 없었던 '바퀴'라는것을 새로 발명한 맥스가 그 '바퀴'를 이용하여 세계최고의 '바퀴회사'가 되어 가는 과정을 이야기한다. 처음에 맥스가 '바퀴'를 만들었을때, 우리 공학도들이 그러는것처럼 이 기술은 정말 최고의 기술이야, 가만히 앉아 있어도 서로들 이것을 사려고 하겠지 하는 생각을 했다. 그러나 결과는 지금 현실과 마찬가지로 기술 개발만 하고 그 후 마케팅, 판매를 못해서 거의망하기 직전까지 간다. 그렇다고 맥스가 아예 판매에 손을 땐것은 아니다. 부인과 함께 이집 저집을 방문하면서 판매 하려고 해도 실패를 한다. 그러다가 '세일즈캡틴', '빌더벤', '마법사토비' 를 차례대로 고용해서 판매를 하려고 했지만 번번히 실패한다. 그러다가 '클로저 카시우스'를 고용해서 판매에 성공한다. 현재 시장 상황에 따라서 필요한 세일즈 방식이 다르다는 것을 보여준다. 정말 중요한것은 시장 상황에 따라서 세일즈 방식이 다르다와 세일즈 방식이 다르기 때문에 고용하는 세일즈맨들도 성향이 달라야 한다는 것이다. 강추 책.
* 고객의 꿈, 환상, 욕망을 자극한다.
* 거절을 많이 받을 각오는 해야한다.(신제품..)
* 기회를 혼자서만 사용하기를 원한다. 최고의 특권을 가지고 싶어한다.
* 독특한 것을 좋아한다.
* 혁신적인 기술과 서비스를 원한다.
* 이 제품을 고객이 원하는 이유는?
- 새싹교실/2012/AClass/2회차 . . . . 16 matches
//1.3.6.10 수열이 규칙을 찾아서 행을 만들어 주려고 한다… 코딩 생각 하는데 시간이 세시간 초과.. 그래서 6을 입력하면 행이 6이 되는 삼각형 만듬..
-동일한 데이터형의 많은 변수를 처리하기 위한 단수 변수를 사용하면 변수이름을 각각 다른 이름으로 사용해야하기 때문에 많은 불편이 따른다. 이러한 불편함을 덜기 위하여 같은 데이터형인 일련의 기억장소를 표현한 변수를 '배열변수'라 한다. 즉 배열을 이용하면 여러개의 변수를 간단히 표현할 수가 있다. 2차원 배열은 '데이터형,배열명,그리고 [행]과[열]'을 나타내어 표현한다. 1차원 배열은 배열 요소의 크기와 데이터형이 동일한 기억장소를 1개의 차원으로 선언하였다고 말하면 2차원 배열은 2차원으로 선언(행과열)한 것이다.
- 난수(random number)를 생성할때 stdlib.h헤더파일을 코드에 포함시키고 srand()를 사용한다.rand()함수는 매번 그 값이 같은 반면에 매실행때마다 난수를 다르게 생성하기 위해서 srand()를 사용한다.
srand역시 stdlib.h에 포함되어 있다. srand는 시드값을 주어 사용하는 것이고 그 시드값으로부터 특정한 법칙으로 난수를 생성하는 것이다.따라서 매번 다른 난수를 얻으려면 시드값을 계속 바꾸어주어야 한다.
이러한 코드개선을 위해서 time()함수를 사용해야 한다. 이 함수를 사용하기 위해 time.h 헤더 파일을 코드에 포함시켜야 한다. 또한 time함수는 1970년 1월 1일 이후 경과된 시간을 초 단위로 반환하는 함수 이다.
-포인터는 기억장소에 있는 어떤 변수의 주소를 말한다. 즉, 다른 기억장소 위치의 주소를 갖고 있는 변수이다.포인터는 두개의 단일 연산자인 &와 *로서 정의한다. &연산자는 일반적인 변수 이름으로 사용되고 그 변수의 주소를 의미한다. 즉 &a는 a의 주소를 의미한다. *p는 p안에 있는 주소 위치의 내용을 의미한다. &는 주소 연산자이고 , *는 간접 연산자로 포인터선언을 의미한다. 일반적인 포인터 선언형식: 데이터형 *포인터변수명; 이다.
포인터 – 메모리에 부여된 주소 주소‘값’을 나타낼 때는 포인터 상수라 하고, 주소를 저장할 수 있는 ‘변수’를 나타내는 포인터 변수라 한다.
-srand함수는 여러 개의 난수표 중 하나를 선택하는 것이고, rand 함수는 선택된 난수표로부터 값을 꺼내오는 것이다. srand함수에는 인자가 하나 들어가는데, 그것을 seed값이라고 한다.
- 채팅원리 . . . . 16 matches
1. 사용자가 접속한다.
UserListControl : 사용자의 접속을 관리한다. 채팅에 접속하려는 사람이 원하는 ID를 기존의 사용자들과 비교하여, 없으면 채팅 접속을 허락하고, 있으면 다른 ID를 사용할 것을 권한다.
Login : 현재 채팅에 사용중인 ID와 사용하고자 하는 ID를 비교하여, 채팅 참가 허가 유무를 확인한다.
ReceiveMessage : 서버로부터 전달되는 메시지를 받아서 ChatMain 클래스의 메시지 출력 화면에 보여주는 역할을 한다.
UserList : ChatMain 클래스의 사용자 List에 접속한 사용자 ID를 보여주는 기능을 한다.
채팅의 동작원리는 실제로 채팅이 이루어지는 과정을 예로 추적하면서 설명하기로 한다.
서버가 시작하면 ReceiveEvent 클래스에서 클라이언트로부터 전달되는 Event를 기다리는 동시에 StatusDisplay 쓰레드와 다른 쓰레드들을 시작한다.
클라이언트가 시작되면 Login을 위한 ID 체크를 한다. 서버에 접속하여 서버에 저장되어 있는 사용자 ID Vector에 사용하고자
하는 ID와 같은 ID가 있는지 없는지 비교한 후 결과를 클라이언트에 돌려준다. 이미 사용중인 ID이면 다른 ID를 사용할 것을 권하고, 사용가능하다면 채팅을 시작한다.
클라이언트가 대기실에 입장하면 내부적으로 클라이언트는 서버쪽에 새 사용자가 접속했다는 메시지를 보낸다. 그러면서, Login 프레임대신 ChatMain 프레임을 보이게 한다. 이제부터 대기실에서 채팅이 가능하게 된다. 서버쪽에는 새 사용자가 대기실에 들어왔다는 것을 보여준다.
새 사용자가 접속을 시도하면 처음과 마찬가지로 사용자 ID 체크를 하게된다. ID 사용 확인을 한 후에 대기실에 접속을한다. 대기실에 접속하면, 기존에 대기실에 있던 사용자들의 사용자 ID를 보여주는 리스트에 새로 들어오는 사용자의 리스트가 추가되면서, 채팅화면에 새로운 사용자가 들어왔다는 메시지가 나오게 된다.
DagagramPacket에 미리 기억된 서버쪽의 주소와 포트번호를 추가하여 네트워크로 보낸다. 이 메시지를 서버가 받아서 등록된 모든 클라이언트쪽으로 보내 모든 클라이언트가 메시지를 받아 채팅화면에 출력할 수 있게한다.
채팅을 종료할 때는 채팅 윈도우의 종료 버튼을 누르면 윈도우 종료 이벤트가 발생한다. 클라이언트는 채팅 종료를 확인하는 옵션 패널을 보여준 후, 서버쪽에 채팅을 종료한다는 내용을 보낸다. 이때 보내는 내용은, 자신이 사용하고 있는 ID를 제거, 자신의 주소를 제거, 사용자 1명의 감소등이다.
- 코바예제/시계 . . . . 16 matches
CORBA 애플리케이션이 어떤 것인지를 설정하기 위한 단순한 예제이다. 그렇기 때문에 이 코드를 그대로 사용해서는 올바르게 동작하지 않는다. 구체적인 코드는 필요에 따라서 추가해야한다. 자신이 사용할 ORB의 종류에 따라 혹은 사용할 언어에 따라서 다르게 구성될 것이다.
시간 객체에 대한 인터페이스는 ObjTimeServer이며 getTime()이라는 메소드를 가지고 있는데 getTime()는 문자 형식으로 현재의 시간을 반환해 준다. CORBA 객체를 작성하는 첫번째 단계는 인터페이스를 만드는 것이다. 인터페이스는 IDL로 작성되며 인터페이스는 IDL 컴파일러로 컴파일된다. 이 IDL 컴파일러는 기본적으로 사용자가 이용하는(예를들면 VisiBroker) ORB에 포함되어 있는 것이다. IDL로 작성된 인터페이스를 컴파일하면 컴파일러는 두 개의 코드 파일을 생성해 준다. 이 코드 파일들은 각 IDL 컴파일러가 사용하도록 약정된 프로그래밍 언어로 되어 있다. 여기에서 사용하는 ORB는 Java ORB이므로 코드 파일은 Java(Stub, Skeleton)로 되어 있을 것이다. IDL 컴파일러에 의해 생성되는 코드는 프록시 객체(proxy object) 및 스켈레톤 코드이다. 클라이언트는 프록시 객체를 사용하여 IDL로 표현된 인터페이스 타입의 객체 레퍼런스에 대한 호출을 생성한다. 바꾸어 말하녀 프록시 객체는 클라이언트가 작업을 위해 사용하는 대리("stand-in") 객체인데 원격 객체가 마치 지역 객체처럼 보이게 해준다는 것이다. 스켈레톤 코드는 이러한 인터페이스를 지원하는 객체에 액세스하기 위해 사용된다. 생성되는 코드는 위치 투명성을 구현한다. 위치 투명성을 통해 객체 레퍼런스를 변환하여 네트웍 연결을 퉁해 원격 서버로 보내며, 객체 레퍼런스에 대한 오퍼레이션에 따르붙는 파라미터를 ["마샬링"]하고, 이를 객체 레퍼런스가 지시하는 객체의 현재 메소드에 전달하여 메소드를 수행하고 그 결과를 반환하려고 하는 것이다. 바꾸어 말하면 클라이언트는 IDL 컴파일러에 의해 생성된 프록시 객체를 가지고 작업을 하는데, 그것이 마치 지역 객체로 작업하는 것처럼 보일 것이라는 의미이다. ORB와 통신하는 것이 프록시 객체의 임무이며 ORB는 네트웍 연결을 관리하고 파라미터를 실제 서버 함수에 넘겨주며 결과를 리턴한다. 이런 식으로 수행에 대한 투명성을 유지한다.
위의 IDL을 컴파일하면 스텁과 스켈레톤 코드가 생성된다. 컴파일러가 ObjTimeServer_Skeleton.java라는 이름의 파일을 생성하였으며, 여기에는 서버 쪽에서 사용되는 스켈레톤 코드가 들어 있다고 가정하자. 이제 이 IDL에서 지정된 인터페이스를 갖는 객체를 구현해야만 한다. 이 말은 서버 코드, 즉 구현을 작성해야 한다는 것이다. 그러한 구현 객체 클래스를 작성하기 위해서는 IDL 컴파일러에 의해 만들어진 스켈레톤 클래스와 결합해야 한다. 이 결합은 상속 또는 위임을 사용해서 이루어질 수 이다.
이 클래스는 환경을 초기화하고, 구현 객체를 생성하며, 클라이언트가 구현 객체를 사용할 수 있도록하고, 이벤트를 받아들이는 일을 한다.
클라이언트 구현은 기본적으로 다음 세 가지 단계를 통해 이루어진다. 먼저 CORBA 환경, 즉 ORB를 초기화한다. ORB를 초기화한다는 것은 ORB 의사 객체(pseudo-object)에 대한 객체 레퍼런스를 얻게 된다는 것을 의미한다. ORB가 '의사 객체'라 불리는 이유는 그 메소드가 런타임 시스템과의 통신을 통해 라이브러리의 형태로 제공되며, 의사 객체 레퍼런스는 CORBA 인터페이스 오퍼레이션에 대한 파라미터로 전달될 수 없기 때문이다. 그 다음 단계는 객체 레퍼런스를 얻는 것이다. 객체 레퍼런스는 불투명한 데이터 구조이다. 그러나 객체 레퍼런스를 문자열로 바꿈으로써 지속성을 가지게 될 수 있다. 이것은 '객체 레퍼런스의 문자열화'라 불리며, 그 결과 얻어지는 문자열을 일컬어 '문자열화 객체 레퍼런스'라고 한다.(IOR) 이 문자열화 객체 레퍼런스는 원래의 "유효한" 객체 레퍼런스로 다시 바뀔 수 있다. 이 과정은 CORBA, 즉 ORB 인터페이스에서 정의된 두 가지 오퍼레이션 object_to_string()과 string_to_object()를 이용하여 이루어진다. 모든 CORBA 2.0 호환 ORB는 상호 운용 가능한 문자열화 객체 레퍼런스를 실제 돌아가는 객체 레퍼런스로 바꿀 수 있다. 적절한 타입으로 객체의 범위를 줄이면 그러한 결과를 얻을 수 있다. 이러한 오퍼레이션을 'narrow'라 한다. ORB를 초기화하고 객체 레퍼런스를 얻은 후에야 CORBA 프로그래밍은 원래 의도한 표준 객체 지향 프로그래밍처럼 동작하게 된다. 클라언트가 객체의 메소드를 호출하게 되면, 실제로 그 메소드는 원격 객체와 함께 동작하지만 클라이언트가 보기에는 지역 객체와 함께 동작하는 것처럼 보인다.
// 객체 레퍼런스를 얻어내는 부분, 여기에서는 클라이언트 프로그램의 첫번째 인수로 문자열화 객체 레퍼런스가 주어진다고 가정한다.
- 토비의스프링3/밑줄긋기 . . . . 16 matches
* Context는 전달받은 그 Strategy 구현 클래스의 오브젝트를 사용한다.
* 예외는 처리돼야 한다.
* 예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한 가지다. 모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.
* 굳이 예외를 잡아서 뭔가 조치를 취할 방법이 없다면 잡지 말아야 한다.
* 예외를 회피하는 것은 예외를 복구하는 것처럼 의도가 분명해야 한다.
* 빠르게 실행 가능한 포괄적인 테스트를 만들어두면 이렇게 기능의 추가나 수정이 일어날 때 그 위력을 발휘한다.
* 두 번째 방법은 테스트를 보강해서 원하는 사용자 외의 정보는 변경되지 않았음을 직접 확인하는 것이다.
* 이것도 확인해야한다는 생각을 미처 못했다. - [김수경]
* 객체지향적인 코드는 다른 오브젝트의 데이터를 가져와서 작업하는 대신 데이터를 갖고 있는 다른 오브젝트에게 작업을 해달라고 요청한다. 오브젝트에게 데이터를 요구하지 말고 작업을 요청하라는 것이 객체지향 프로그래밍의 가장 기본이 되는 원리이기도 하다.
* 트랜잭션이란 더 이상 나눌 수 없는 단위 작업을 말한다. 작업을 쪼개서 작은 단위로 만들 수 없다는 것은 트랜잭션의 핵심 속성인 원자성을 의미한다.
* 따라서 중간에 예외가 발생해서 작업을 완료할 수 없다면 아예 작업이 시작되지 않은 것처럼 초기 상태로 돌려놔야 한다. 이것이 바로 트랜잭션이다.
* 이렇게 여러 기술의 사용 방법에 공통점이 있다면 추상화를 생각해볼 수 있다. 추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것을 말한다. 그렇게 하면 하위 시스템이 어떤 것인지 알지 못해도, 또는 하위 시스템이 바뀌더라도 일관된 방법으로 접근할 수가 있다.
* 단일 책임 원칙은 하나의 모듈은 한 가지 책임을 가져야 한다는 의미다. 하나의 모듈이 바뀌는 이유는 한 가지여야 한다고 설명할 수도 있다.
* 서비스 추상화에는 기능은 유사하나 사용 방법이 다른 로우레벨의 다양한 기술에 대해 추상 인터페이스와 일관성 있는 접근 방법을 제공해주는 것을 말한다. 반면에 테스트를 어렵게 만드는 건전하지 않은 방식으로 설계된 API를 사용할 때도 유용하게 쓰일 수 있다.
- 2010PHP . . . . 15 matches
* 이모티콘을 삽입할 수 있게 한다.
* 내용에 /* keyword */ 형태로 쓰면 keyword에 해당되는 이모티콘이 삽입되게 한다.
* 글 작성 시 오늘의 상태를 선택할 수 있게 한다.
* 이름, 내용, 날짜, 오늘 상태, 글번호를 출력한다.
* 한 페이지당 게시물을 20개씩 출력한다.
* DB는 Mysql을 사용한다.
||이름 길이를 10byte로 제한한다. || A ||
||내용 길이를 2000byte로 제한한다. || A ||
||글씨체를 선택할 수 있게 한다. || C ||
||글씨색, 배경색을 선택할 수 있게 한다. || B ||
||오늘의 상태를 선택할 수 있게 한다. || B ||
||비번은 ****로 보이게 한다. || A ||
||비번 길이는 4byte로 제한한다. || A ||
||수정 기능을 제공한다. || A ||
||삭제 기능을 제공한다. || A ||
- AcceleratedC++/Chapter10 . . . . 15 matches
|| 주소 연산자(address operator) || 객체의 주소를 리턴한다. ||
|| 역참조 연산자(dereference operator) || 포인터 p가 가리키는 객체를 리턴한다. ||
포인터도 타입을 갖는데 일반적으로 type-name * 으로 정의한다.
상기와 같은 표현은 const로 지정된 변수로 변수를 초기화하기 때문에 컴파일시에 그 크기를 알 수 있다. 또한 상기와 같은 방식으로 코딩을 하면 coord에 의미를 부여할 수 잇기 때문에 장점이 존재한다.
*coord = 1.5; //coord 배열의 첫번째 요소를 1.5로 할당한다. 즉, coord[1] = 1.5; 와 동일한 표현이 된다.
그러나 이 차이를 나타내는 값은 구현 시스템 마다 다를 수 잇고, 음수가 나타내는 경우가 있기 때문에 '''<cstddef>'''에는 '''ptrdiff_t'''라는 약칭을 통해서 그 데이터 형을 제공한다.
STL의 컨테이너들과는 달리 배열은 초기화에 있어서 다른 문법을 제공한다.
상기의 예제에서 month_length의 배열의 크기를 명시적으로 나타내지 않았다는 사실에 유의. 대신에 컴파일러가 초기화된 갯수에 맞추어서 배열을 할당한다.
static 키워드를 사용하여서 배열의 초기화에 소요되는 시간을 단축한다.
대부분의 운영체제에서는 이런 2가지의 출력을 분리하여 처리하는 방법을 제공한다.
|| cerr || 버퍼링을 사용하지 않고, 즉각적인 출력을 한다. 오버헤드가 크다. ||
|| clog || 버퍼링을 이용하고, 적당한 시기에 출력한다. ||
파일의 입출력을 위해서 iostream을 파일 입출력에 맞도록 상속시킨 ofstream, ifstream객체들을 이용한다. 이들 클래스는 '''<fstream>'''에 정의 되어있다.
|| 자동메모리 관리 || 지역변수, 지역변수를 참조형, 포인터형으로 리턴하면 그 리턴값은 무효한 값이된다. [[HTML(<BR/>)]] 사용하고 싶다면 '''static''' 키워드를 이용해야한다. ||
|| 동적메모리 할당 || new, delete 키워드를 이용해서 프로그래머가 원하는 시기에 메모리상에 할당하고 해제를 할 수 있다. ||
- AcceleratedC++/Chapter5 . . . . 15 matches
* 그렇다. 메모리 낭비가 있는 것이다. for루프가 끝날때에는 중복되는 두개의 벡터가 존재하는 것이다. 그래서 우리가 쓸 방법은 만약 f면 fail에 추가하고, f 아니면 그 자리에서 지우는 것이다. 반갑게도 이런 기능이 있다. 근데 졸라 느리다. 입력 데이터의 양이 커질수록 성능 저하는 급격하다. 벡터에서는 중간에 하나를 지우면, 메모리를 통째로 다시 할당하고, 지워주는 짓을 해야한다. O(n*n)의 시간이 필요한것으로 알고 있다. 벡터는 임의 접근이 가능한 대신, 중간 삽입이나 중간 삭제의 퍼포먼스를 포기한 것이다. 이제부터 여러가지 방법을 살펴볼 것이다.
* 왜 students.erase(students[i]) 하지 않는가? 모든 컨테이너에 일관성을 제공하기 위해서라고 한다. 바로 반복자라 불리우는 것을 이용해, (포인터보다 반복자가 먼저 나오네요.) 동일한 방법으로 제어를 할수 있는 것이다.
* 또한, 지워줌으로써 컨테이너의 사이즈가 변한다. 즉 모든 학생을 다 검사하지 못할수도 있다. 그래서 다음과 같이 바꿔주어야 한다.
* 여태껏 잘쓰던 벡터형 변수[n]은 벡터의 n번째 요소를 말한다. 지금까지 하던거 보면 루프 안에서 ++i 이거밖에 없다. 즉 순차적으로만 놀았다는 뜻이다. 우리는 알지만 컴파일러는 알길이 없다. 여기서 반복자(Iterators)라는 것을 알아보자.
* 인수曰 : STL을 사용할때에는 반복자를 이용하는 것이 표준이라 한다.
* (*i).name : 반복자 i가 가리키는 요소의 멤버 name을 말한다. 괄호를 꼭 써주자. 우선순위가 .이 *보다 높기 때문에 에러난다.
* 또 코드 최적화 한다고 다음고 같은 삽질을 하는 사람도 있을 것이다.
* 벡터는 임의 접근을 지원하는 대신에, 중간 삽입, 삭제의 성능이 꼬랐다. 그러므로 중간 삽입, 삭제가 최적화된 새로운 자료구조를 생각해 보자.
* 벡터는 삽입, 삭제 할때마다 메모리를 몽땅 재할당한다. 따라서 ~~.end()는 버그의 온상이 왼다. 계속 바뀌므로... 하지만 list는 삽입, 삭제한다고 몽땅 재할당하지 않는다. 그래서 빠른 것이다. 또한 임의 접근을 지원하는 컨테이너만 쓸수 있는 표준 알고리즘 sort도 당연히 쓸수 없다. 그래서 list의 멤버함수로 sort가 있다. 다음과 같이 써주자.
* 표를 보면 알겠지만, 파일 크기가 커질수록 vector의 요소 삽입, 삭제 시간은 비약적으로 증가한다. list는 별로 안 증가한다.
* string도 vector처럼 쓸수 있다. 실제로는 vector<char>이니... vector의 대부분의 기능을 지원한다. []과 반복자는 물론 size() 등등도..
- Ant . . . . 15 matches
make.gnumake,nmake,jam 과 같은 다른 Build 툴은 놔두고 왜 Ant 를 써야하는가에 대한 질문이다. Java 기반으로 프로그램을 짜고 컴파일 및 배포용 쉘 프로그램을 짜봤는가? 해봤다면 그것의 어려움을 잘 알것이다. 각 [OS] 마다 쉘 스크립트가 다르고 일반적으로 사용하고 있는 Unix 에는 또 각종 쉘들이 존재한다. 윈도우 쉘 또한 복잡하긴 매한가지이고 프로그램을 모두 작성하고 컴파일 및 배포 쉘 스크립트를 작성하기 위해서 이것들을 모두 작성하는것 자체가 프로그래머에게 또 하나의 고난이 아닐까 생각한다.(즉, 쉘 프로그램을 배워야 한다는 의미이다.)
게다가, 팀 단위 작업을 한다고 할때, 작업하는 컴퓨터와 [IDE] 들이 각각 다른 경우, IDE 에 따라서 classpath, 배포디렉토리 경로들도 다를 것이다.
Ant 는 OS Indepenent 하게 프로그램을 Build 할 수 있는 환경을 제공해준다. build.xml 이란 Build 파일을 작성해서 그 내용에 따라 Build 를 진행해 나갈 수 있다. Ant 는 ["Java"] 에서 거의 표준으로 굳혀져가고 있으며, 거의 모든 IDE들이 Ant 를 지원한다.
Ant 는 다양한 Optional Tasks를 제공합니다. 일단 Task 라는 말이 앞으로 많이 나올텐데 Glossary 를 참고하세요. 예를들면 CVS 에 소스를 업데이트 해주는 Optional Task 가 있을 수 있고, 또 .NET 컴파일을 한다던지.. 기타 등등 다양한 Task 가 있습니다. (이에 대한 예제로는 ["AntTask"]를 참조)
위의 예에 하나가 추가됐죠? -D 옵션은 Build 파일의 Property task 와 같은 역할을 합니다. 즉 Build File 내부에서 사용되는 일종의 변수를 선언한다고 볼 수 있겠죠? ^^
|| default || default target 명을 넣는 곳이다. ant 를 실행할 때 target 을 지정하지 않으면 여기서 지정한 target 으로 실행한다. || Yes ||
|| basedir || 프로젝트의 base 디렉토리를 말한다. ant 내부에서 사용되는 모든 path 들은 이 디렉토리를 기반으로 한다. || No ||
기존의 Makefile 이라던지 다른 Build 툴을 보면 의존관계(Dependency)라는 것이 있을 것이다. 즉, 배포(distribute)라는 target 을 수행하기 전에 compile 이라는 target 을 먼저 수행해야 하는 의존 관계가 발생할 수 있을 것이다. ''target'' 에서는 이런 의존관계(dependency)를 다음과 같은 방법으로 제공한다.
* ''property'' 태그 - 일종의 변수역할을 한다. 예제들을 보면 property 태그로 정의한 변수들이 어떻게 이용되는지 알 수 있다.
* '''Build File''' : Build 의 순서 및 각 단계별 작업들에 대해서 xml 형식으로 적어놓은 파일을 말한다. Ant 에서는 default 로 build.xml 을 사용한다.
AntHill, CruiseControl 등의 툴과 연동하여 이용하기도 한다. 이 툴들은 해당 ant build 를 스케줄러에 맞춰놓고, 해당 시간이 되면 자동으로 해당 ant build file을 실행해준다. See Also Wiki:AntHill, Wiki:CruiseControl
- Cockburn'sUseCaseTemplate . . . . 15 matches
= Example: 유스 케이스 5.물건을 구매한다. =
* 맥락 안에서의 목표: 구매자는 우리 회사에 직접 구매 요청을 보내며, 물건이 도착하고 청구서를 받아볼 것을 예상한다.
1.구매자가 찾아와서 구매 요청을 한다.
2.회사는 구매자의 이름, 주소, 요청한 물건 등을 저장한다.
3.회사는 구매자에게 물건에 관련된 정보, 예를 들어 가격, 배송일 등을 제공한다.
4.구매자가 주문을 확정한다.
7.구매자는 물건값을 지불한다.
3a.구매자가 주문한 물건 가운데 재고가 없는 물건이 있다: 주문을 재조정한다.
4a.구매자가 직접 신용카드로 물건값을 지불한다: 신용카드로 물건값을 받는다. (유스 케이스 44)
7a.구매자가 물건을 반송한다. 반송된 물건을 처리한다. (유스 케이스 105)
* 상위 유스케이스: 고객 관계를 관리한다. (유스케이스 2)
* 하위 유스케이스들: 주문서를 만든다. (유스케이스 15), 신용카드로 물건값을 받는다.(유스 케이스44), 반송된 물건을 처리한다.(유스 케이스 105)
필요한 경우 다른 유스케이스에 링크를 걸 수 있을 것이다. 더 좋은 방법은 책에서 설명했듯이 유스케이스 번호만 주면 보여지는 내용을 자동으로 생성하게 만드는 것이다. 예를 들어 ''UseCase5'' 라고 적힌 부분은 자동으로 ''물건을 구매한다. (유스 케이스5)''이런 식으로 생성한다.
- Googling . . . . 15 matches
Google, Inc 는 미국의 공공기업이다. 이 기업은 1998년에 개인적으로 설립된 회사이다. 이 회사는 구글 인터넷 검색엔진을 설계하고 운영한다. 구글은 Mountain View 에 Googleplex에 본사를 두고 있다. 그리고 4000명 이상의 사원이 있다.
구글사이트에는 대단히 다양한 정보가 존재한다. 현재 8,168,684,336(81억개ㅡ,.ㅡ)개의 페이지를 단 몇초만에 검색하고 가장 많은 사람들이 이용하는 사이트를 가장 합리적인 판단 기준에 의거해서 반환해준다. 이만큼 다양한 페이지가 존재하는 만큼 다양한 검색 옵션을 제공한다. 단지 몇개의 검색 명령어만을 아는 것 만으로도 자신이 원하는 정보를 아주 쉽게 찾을 수 있다.
|| "''keyword''" || 검색어를 문장단위로 검색한다. 의미가 확장되어서 검색되지 않는다. ||
|| +''keyword'' || 키워드를 반드시 포함한 결과를 보여준다. 일반적으로 stopword로 지정된 것을 검색할 때 이용한다. ||
|| filetype || 인자로 전달한 확장자를 지닌 문서만을 검색한다. ||
|| site || 특정 사이트 내의 문서들만을 검색한다. ||
|| related || 인자로 전달된 사이트와 유사한 사이트를 검색한다. ||
|| allintitle || 페이지의 제목만을 이용해서 검색한다. 내용에서는 찾지 않는다. ||
|| allintext || 페이지의 본문을 이용해서 검색한다. ||
|| allinurl || URL 링크에서 존재하는 문장을 통해서 검색한다. ||
|| allinanchor || 링크된 글안에서 검색을 한다. ||
''stop word: at, and 와 같은 일반적인 단어들은 검색을 할 경우 그 결과가 너무 많기 때문에 구글에서 제외시킨다. 이런 단어를 추가시켜서 검색하기 위해서는 검색어 앞에 + 를 붙여야한다.''
또한 단순한 웹페이지 검색만이 아니라 image, usenet, news 에 대한 검색기능을 제공한다.
- Linux/필수명령어 . . . . 15 matches
|| adduser || 시스템에 사용자를 추가한다. ||
|| man || 다른 어떤 명령어 보다 중요한 명령어, 각 명령어의 manual 메이지를 출력한다. ||
|| gzip, gunzip || 특정파일은 gzip 형태의 파일로 압축한다 ||
|| bzip || 인자로 주어진 파일을 bzip2 형태의 파일로 압축한다 ||
|| echo|| 어떤 것을 echo 화면에 인쇄한다.||
|| finger ''{id}'' || 시스템에 존재하는 유저의 정보를 출력한다 ||
|| pwd || 현재 리렉토리를 출력한다. ||
|| who || 현재 접속중인 사용자를 표시한다 ||
|| which || 인자로 주어진 명령어의 실 경로를 표시한다. ||
|| reboot || 설명이 필요없는 명령어. -_-; 원격으로도 재부팅을 제공한다. ||
|| grub || 최근 각광받고 있는 부트로더 프로그램, lilo 보다 flexible 하다고 한다. ||
|| free || 메모리와 스왑 이용량을 출력한다 ||
|| mount || 특정 파티션, 장비를 지정된 디렉토리로 링크(mount)한다 ||
|| umount || 마운트된 장비를 마운트 해제(umount)한다 ||
|| update-rc.d || rc.* 에 시작 프로그램을 등록한다. defaults 옵션을 줄경우 모든 running level 에 등록된다. (Debian) ||
- MineFinder . . . . 15 matches
* 지금쯤 다시 짜라고 한다면 TFP를 좀 더 제대로 추구할 수 있을 것도 같다. (이 점에서 TFP를 할때 SpikeSolution 에 대한 어느정도의 충분한 시간을 두는 점이 좋을 것 같다는 생각이 들었다. 초기 SpikeSolution 으로 해당 부분을 간단하게 대강 해보고, Test를 할 수 있는 부분에 대한 구체화하기.)
* 지뢰찾기 프로그램은 윈도우에 기본적으로 내장된 프로그램을 이용한다.
* 기본적으로는 Begineer Mode 만을 지원한다.
* 컴퓨터는 현재의 지뢰찾기 프로그램 상황을 알아서 판단하고, 해당 행동을 결정한다.
* 지뢰찾기 프로그램은 윈도우에 기본적으로 내장된 프로그램을 이용한다.
* 지뢰찾기 프로그램을 조작한다. (Mode 변환, 재시작, 지뢰체크, 빈칸 열기 등)
* 지뢰찾기 프로그램의 화면을 Capture, 분석한뒤 데이터화한다.
* 기본적으로는 Begineer Mode 만을 지원한다.
* 컴퓨터는 현재의 지뢰찾기 프로그램 상황을 알아서 판단하고, 해당 행동을 결정한다.
* 지뢰찾기 프로그램 비트맵 데이터를 근거로 수치데이터화한다.
* 빈칸, 깃발체크, 숫자들 등 Cell들에 대한 상태 확인
|| CMinerBitmapAnalyzer || 비트맵을 분석, 데이터화한다. ||
|| CMinerController || 지뢰찾기 프로그램에 대한 화면 캡쳐, 모드변환, 버튼 클릭 등의 제어를 한다 ||
|| CMineSweeper || 실질적인 두뇌에 해당되는 부분. CMinerController 와 CMinerBitampAnalyzer 를 멤버로 가지며, 이를 이용하여 게임상황분석, 지뢰찾기관련 판단 등을 한다 ||
일종의 애니메이션을 하는 캐릭터와 같다. 타이머가 Key Frame 에 대한 이벤트를 주기적으로 걸어주고, 해당 Key Frame 에는 현재 상태에 대한 판단을 한뒤 동작을 한다. 여기서는 1초마다 MineSweeper 의 동작을 수행하게 된다.
- ProgrammingWithInterface . . . . 15 matches
책에서는 말한다. 많은 개발자들이 [[OOP#s-1.2|인터페이스]] 보다는 [[OOP#s-1.2|상속]]을 사용하여 개발한다고... 그렇다! 사실이다. 나도 여지껏 인터페이스로 무장한 코드를 보지 못했다.
언제나 개발을 할 때 '어라~ 같은 일 하는데? 이거 Base 클래스 만들어서 위로 올려야 겠는데?' 일말의 틈도 주지 않고 실행한다. 다형성을 사용하는 코드를 생성한다. '와우~! 한결 깔끔해 졌는걸?' 하지만 오산이었다. 시간이 지나서 먼가 추가할 동작들이 생겼다. 이제 고치기 시작한다. Base 클래스 부터... 고치고 나니 컴파일이 되지 않는다. 코드 수정의 여파가 하위 클래스들에게 까지 미친다. 정말 미친다. 이런 상속을 통한 계층 구조는 상위 클래스와 하위 클래스의 결합도를 높여준다. 지나 치게 크게..! 동감하지 않는가? 하나를 고쳤는데 수정할 꺼리가 마구 쏟아지는 상황을...
상속을 사용하는 상황을 국한 시켜야 할 것같다. 상위 클래스의 기능을 100%로 사용하면서 추가적인 기능을 필요로 하는 객체가 필요할 때! .. 이런 상황일 때는 상속을 사용해도 후풍이 두렵지 않을 것 같다. GoF의 책이나 다른 DP의 책들은 항상 말한다. 상속 보다는 인터페이스를 통해 다형성을 사용하라고... 그 이유를 이제야 알 것같다. 동감하지 않는가? Base 클래스를 수정할 때마다 하위 클래스를 수정해야 하는 상황이 발생한다면 그건 인터페이스를 통해 다형성을 지원하는게 더 낫다는 신호이다. 객체는 언제나 [[SOLID|SRP (Single Responsiblity Principle)]]을 지켜야 한다고 생각한다.
Holub이 사용하는 예제를 보자. 상속을 사용해 [Stack]을 구현한다.
상위 클래스가 가지는 메소드가 적다면 모두 [오버라이딩]하는 방법이 있지만 만약 귀찮을 정도로 많은 메소드가 있다면 오랜 시간이 걸릴 것이다. 그리고 만약 상위 클래스가 수정된다면 다시 그 여파가 하위 클래스에게 전달된다. 또 다른 방법으로 함수를 오버라이딩하여 예외를 던지도록 만들어 원치않는 호출을 막을 수 있지다. 하지만 이는 컴파일 타임 에러를 런타임 에러로 바꾸는 것이다. 그리고 LSP (Liskov Sustitution Principle : "기반 클래스는 파생클래스로 대체 가능해야 한다") 원칙을 어기게 된다. 당연히 ArrayList를 상속받은 Stack은 clear 메소드를 사용할 수 있어야 한다. 그런데 예외를 던지다니 말이 되는가?
깔끔한 코드가 나왔다. 하지만 MonitorableStack은 pushMany 함수를 상속한다. MonitorableStack을 사용해 pushMany 함수를 호출하면 MonitorableStack의 입력 받은 articles의 articles.length 만큼 push가 호출된다. 하지만 지금 호출된 push 메소드는 MonitorableStack의 것이라는 점! 매번 size() 함수를 호출해 최대 크기를 갱신한다. 속도가 느려질 수도 있다. 그리고 만약 누군가 Stack의 코드를 보고 pushMany 함수의 비 효율성 때문에 Stack을 밑의 코드와 같이 수정했다면 어떻게 될 것인가???
- ZPBoard/APM/Install . . . . 15 matches
* Apache를 다운 받아 설치한다. (http://www.apache.org/dist/httpd/binaries/win32/apache_1.3.26-win32-x86-no_src.exe)
* PHP 디렉토리에 있는 php4ts.dll 파일을 Windows 디렉토리의 System(Windows 98의 경우) 또는 System32(Windows NT, XP의 경우) 디렉토리에 복사한다.
* PHP 디렉토리에 있는 php.ini-dist 파일을 Windows 디렉토리에 php.ini 라는 이름으로 바꾸어 복사한다.
* Apache의 httpd.conf 파일에 다음을 추가한다.
* MySQL을 다운 받아 설치한다. (http://www.mysql.com/downloads/download.php?file=Downloads/MySQL-3.23/mysql-3.23.52-win.zip&download=http://mysql.holywar.net/Downloads/MySQL-3.23/mysql-3.23.52-win.zip)
* MySQL을 실행한다.
* Apache를 실행한다.
* 웹브라우져를 실행시켜 주소에 http://127.0.0.1/test.php 를 입력하고, 제대로 설치 되었는지 확인한다.
* 제어판 -> 프로그램 추가/제거 -> Windows 구성 요소 추가/제거 에서 IIS를 설치한다.
* PHP 디렉토리에 있는 php4ts.dll 파일을 Windows 디렉토리의 System(Windows 98의 경우) 또는 System32(Windows NT, XP의 경우) 디렉토리에 복사한다.
* PHP 디렉토리에 있는 php.ini-dist 파일을 Windows 디렉토리에 php.ini 라는 이름으로 바꾸어 복사한다.
* IIS를 다시 시작 한다.
* MySQL을 다운 받아 설치한다. (http://www.mysql.com/downloads/download.php?file=Downloads/MySQL-3.23/mysql-3.23.52-win.zip&download=http://mysql.holywar.net/Downloads/MySQL-3.23/mysql-3.23.52-win.zip)
* MySQL을 실행한다.
* 웹브라우져를 실행시켜 주소에 http://127.0.0.1/test.php 를 입력하고, 제대로 설치 되었는지 확인한다.
- 열린제로페이지 . . . . 15 matches
'숨쉬는독'군은 평소 관심이 많던 보안 관련 스터디를 하고 싶은데 어떻게 시작하면 좋을지 잘 모르는 초보자이다. 앞서 공부했던 선배의 조언을 듣고 싶고, 또 같이 공부할 사람이 있으면 좋겠다는 생각이 들었다. 그리고 자신이 공부한 내용을 나중에 공부할 사람과 공유하며 같이 발전하길 원했다. 그러나 그가 속한 '우드페이지'란 학회에는 보안에 관심이 있는 사람이 그렇게 많지 않았다. 결국 '숨쉬는독'군은 선배, 동기를 모아(공교롭게도 그들은 '우드페이지' 회원이 아니었다.) 보안학회 '까스'를 만들기로 결심을 한다. 그러나 관련 분야 초보자가 새로운 학회를 만들기란 무척 버거운 일이었다. 결국 그가 만든 보안학회는 좌초되었다.
'배장이'군은 새내기 시절 사람과 어울리는게 마냥 좋아서 전공 공부는 뒷전이고 선배, 동기들과 어울려 노는게 제일 좋았다. 그러나 학년이 올라가면서 실속을 차려야겠단 생각이 들었고, 이에 따라 전공 공부에 관심과 열의를 조금 늦게 갖게 되었다. 마침 늦바람을 자극하는 주제인 MFC 스터디가 학회 '우드페이지'에서 시작되려한다는 것을 알았지만 '배장이'군은 '우드페이지' 회원이 아니기에 아쉬워 하며 술잔만 비운다. 그러다 '배장이'군은 평소 친분이 있는 집행부 선배와 동기들과 같이 방학동안에 스터디를 한다.
'배장이'군은 새내기 시절 사람과 어울리는게 마냥 좋아서 전공 공부는 뒷전이고 선배, 동기들과 어울려 노는게 제일 좋았다. 그러나 학년이 올라가면서 실속을 차려야겠단 생각이 들었고, 이에 따라 전공 공부에 관심과 열의를 조금 늦게 갖게 되었다. 마침 그의 늦바람을 자극하는 주제인 MFC 스터디가 학회 '오픈페이지'에서 시작되려한다는 것을 알고서 '배장이'군은 '오픈페이지' 에 스터디 동참 의사를 밝힌다. 비록 스터디 팀원들과는 학번 차이는 나지만 비슷한 실력으로 인해 '배장이'군은 무리없이 스터디에 합류하고 성과를 얻을 수 있었다.
물론 현실적으로 지금 당장 ["열린제로페이지"]로 가는 데에는 많은 무리가 따르리라 생각됩니다. 그러나 현재 제로페이지 회원들이 ["열린제로페이지"]가 되기를 원하는 마음을 갖고 시간을 두고 노력을 하며 학과 동문들이 그 노력을 이해해준다면 불가능한 일은 결코 아니라고 생각합니다. 다른 회원들의 생각이 궁금합니다. (저는 이 글을 쓰기 위해 무척 오랜시간을 고민했습니다. 즉각적인 반응보다는 이 문제에 대해 진지하게 생각해본 후의 반응을 보고싶습니다.)
전체적인 부분에 대한 고민은 부족하지만, 한가지 사실을 간과하는듯 하여 글을 남깁니다. 현 시점에서 제로페이지는 자선 단체가 아닙니다. 누군가 자신의 잉여 시간을 투자하여, 원할한 스터디나 프로젝트를 위해 돕는게 아닙니다. 시나리오 1-1, 2-1에서의 이유는 '누군가 뒷바라지를 안해줘서', '기대고 들어올 틈이 보이지 않아서' 라는게 주요한 이유로 보이지만, 현재로선 이러한 상황에 대한 여유가 없었고 또한 학회가 생긴 본래의 목적은 아니었기 때문입니다. 오히려 반문해볼 수 있습니다. 제로페이지에 들어오는데 누구도 막은 일이 없는것으로 알고 있습니다.(제가 학교에 없을때의 일은 모르겠습니다.) 진입장벽 이야기는, 어느 모임에나 있습니다. '모임에 처음나갔는데 아는 사람끼리만 이야기 하고 너무 서먹하더라'로 귀결되는 이야기는 여타의 동호회에서도 쉽게 찾아볼 수 있는 문제점 입니다. 모임에 들어오고자, 모임에서 어떤 내용을 얻고자 한다면 노력이 있어야 하는건 당연합니다. 애초에 그러한 접근 자체를 차단한다면 문제가 되겠지만, 현재는 말이 제로페이지로 묶여있는 상태이지 교류는 제한을 두지 않는것으로 압니다. 예를들어, 나우누리라는 통신회사가 자료를 누구나 쓸 수 있게 공개를 하지 않았다 하여, 나우누리는 정보 공유의 진입 장벽이 될 뿐이다. 라고 비난할 수는 없는 노릇입니다.
다른 관점에서 살펴봅시다. 주변을 둘러보면 모임이 참 많습니다. 그러한 모임들은 왜 생겨난 것일까요. 전체가 하나라면 장벽도 없고 좋을텐데 말이지요. 하지만, 전체가 해결하지 못하기에 부분이 생겨난 것이고, 그러한 부분들이 묶여서 전체가 되는게 실제 입니다. 제로페이지가 생겨났던 이유도 비슷합니다. 중앙대학교 컴퓨터공학과에서 해결하지 못하는 부분이 생겨났고, 이를 위해 제로페이지가 만들어졌습니다. 대부분은 모임의 특성상 구성원이 필요하고, 이를 위해 지속적인 활동을 요구하게 됩니다. 한가지 중요한 점은 제로페이지가 외부와의 연결고리를 차단한 바는 없고, 자유롭게 교류할 수 있다는점이 현재 이야기한 ["열린제로페이지"] 역할 을 한다고 생각합니다. 물론, 그러한 참여방법을 보다 세련되고 원할하게 만들자는 이야기에 대해서는 찬성합니다.
''대부분은 모임의 특성상 구성원이 필요하고, 이를 위해 지속적인 활동을 요구하게 됩니다.'' 에 대해서 제로페이지의 활동은 지속적이어야 한다고 생각합니다만 그 구성원이 반드시 지속적이여야 한다고 생각하진 않습니다. '''현재 활동중'''인 회원이 ["열린제로페이지"]내에 항상 필요한 만큼(최소한 지금의 회원 수 만큼)은 남아있으리라 생각합니다.
예전에..아주 예전에..당나귀와 당근이론(-.-)을 설명하던 때에 잠시 언급했던 제 의견과 유사한 의미의 내용이었기에 도움이 될까해서 당시 있었던 이야기를 한번 적어 봅니다.(어쩌면 회의록에 있을까요?) 그 때, ZeroPage회원 관리를 인력 풀 형식으로 하자는 의견을 냈었습니다. 자신이 같이 공부할 혹은 같이 프로젝트를 진행할 사람이 필요하면 학회에 그런 선전을 하고 그렇게 마음이 맡는 사람들끼리 단위 작업을 수행하는 식으로 학회를 꾸렸으면 좋겠다고 했었습니다. 하지만, 그 때 제기된 문제점은 그러한 방식은 조직의 결속력을 화해시킬 우려가 있지 않을까 하는 점이였습니다. 자신이 필요할 때는 학회를 찾다가 학회에서 자신에게 이익이 되지 않는 일을 할때는, 가령 전시회 준비를 한다거나 , 나 몰라라는 식이 될 수도 있다는 점이 문제점이였던 것 같습니다. 이런 일이 반복되게 되면 회원들 간의 유대관계가 느슨해질거라는 우려를 해결한 방안이 없었기에 더 이상의 의견을 주장하지 못하였습니다.
흠.. 해결책을 논하는게 어떨까요. 이미 과거에 이런 식의 "열린제로페이지가 좋지만, 사람들이 안들어 온다."로 이와 비슷한 결론이 난것 같습니다. 그렇지만, 이번에 또 재미있는 변수는 "밤샘을 꼭 해야한다." 라는 점도 있을수 있겠지요. [[BR]]
zp 가 학회이지만, 과 내의 모든 공부를 책임져야하는 것 같은 맨 위의 시나리오는 마음에 와닫지 않는다. 원한다면 얼마든지 스스로 길을 찾으라고 하고 싶다. 두리뭉실하게 zp 가 열려있다면 구성원들의 구속력이 불분명한 패닉에 빠질것이다. --박지환
'''과내의 모든 스터디 그룹, 프로젝트 팀은 제로페이지를 통해 공부해야만한다.''' 라고 주장한 사람은 없습니다. 스스로 길을 찾되, 찾은 길이 학과내 사람들과 학술적 정보를 공유하는 장으로서의 제로페이지라면 막지 말아야 한다는 주장입니다. 목적성이나 운영체계가 명확하지 않고 두리뭉실한 상태의 ["열린제로페이지"]라면 패닉상태에 빠질것이란 말에는 공감합니다. --이덕준
- 영어학습방법론 . . . . 15 matches
컴퓨터 공학도로써 계속 빠른 시간내에 쏟아져 나오는 신기술을 원서(원어)로 접하지 못한다면 정보의 시공간의 격차(시간: 원서의 번역서 출간까지의 시간차, 공간: 저자의 의미와 번역자의 의미의 차이)로 인해서 다른 이들보다 정보를 습득하는 것이 늦어지고 이는 곧 앞서나갈 수 없음은 물론이거니와 따라가거나 바쁘거나 뒤쳐질 수 밖엔 없다.
ex) speculate (수박을 먹으며 곰곰히 생각하다) 원뜻 : 곰곰히 생각하다. 이것이 다른 사람과 이야기하거나 책을 읽을때 수박이란게 먼저 생각난다면 곰곰히 생각하다와 아무 상관없는 것이 연상되어 도리어 단어를 제대로 쓰는 것에 해를 가한다. 즉 이미지가 원뜻과 상관없는게 나오면 방해가 된다는 것
* 자기가 이해하고 경험한 것이나 이미지를 상상할 수 있는 문맥과 상황에서 나오는 단어들을 체득(!)하는 것이 가장 안정적이고 확실한 단어 암기 방법이다. 즉 단어 하나하나를 외우는 단순 암기는 도움이 안됨. 그러므로 책을 통해서 외우는 것이 가장 좋음. 이것역시 손으로 일일이 써서 외우는게 아니라 문맥과 상황을 상상과 자신의 경험과 결부시켜서 문장을 이해한다면 단어는 그 사이 자연스럽게 자기것이 된다는 것.
feel like ~ing 문법을 알아야한다. [[BR]]
* 자신이 약한 part를 분석 : 자기점수대의 다른 사람들과 비교해서 점수가 낮은 Part를 분석하고 중점적으로 공부한다. 뒤에 자세히 설명함.
* 한가지 entity에 대한 다양한 representation을 알아야한다.
* ex) apple를 발음하는 다양한 소리가 있다. 영어 강사나 테잎의 성우는 standard한 발음을 한다. 하지만 외국인들과 이야기하려면 standard가 아닌 영어도 들어야지 말할 수 있다. 모든 사람에겐 개인마다 각각 독특한 점이 있지않나. 듣기,읽기,쓰기,말하기.. 이 기본적인 4가지. 거기에다 자신이 체득(경험)한 것이 감각적으로 결합되어야 제대로 되어야만 작문이 됨. (체득에 관해서는 위에 자세히 설명했음. 영어가 몸에 배이지 않으면 안된다는 말.. 당욘한 이야기임!)
* 자신의 WPM (Word per Minute)으로 읽기 속도를 측정한다.
ex) 고전물리학에서 양자물리학을 공부하려고 할 경우. 분명 고전물리학과 양자물리학이 접하는 부분이 있다. 이것을 완전하게 공부하면 아는 부분과 모르는 부분과의 접경부분이 넒어진다. 계속해서 이렇게 공부하면서 접경부분의 범위를 늘이면서 공부한다.
* 동화책같이 단어나 표현이 쉬우면서도 자기가 구체적(!), 상세하게(!) 알고 자신이 아주 좋아하는(!) 것. 가장 중요한것은 본인의 흥미가 있는 것.. 즉 자기가 너무 좋아서 한글로도 수십번 읽을 수 있는 대상[ex) 생텍쥐베리의 어린왕자, 이상한 나라의 앨리스] 주의할 것은 개작되지 않은 원작을 보도록한다.
* 듣기를 반복하면서 들리지 않않는 부분은 책을 잠시잠깐 참고한다.
* 들을때 잘 catch못한 부분을 발견한다.
* 주의점 : 단어를 외우지 않는다. 오직 context에 적용된 내용만을 참조한다. ex) 큼지막함 apple
* 이렇게를 책을 끝까지 한다. 그후 단락을 몇개 묶은 소단락을 위와 같은 방법으로 영어로 쓴다. 결국 마지막에는 책 한권을 요약해서 영어로 쓴다. 이때 자신이 스스로 체득한 문장들이 자연스럽게 영어로 쓰여진다. 쓰기에서 틀린 부분은 계속 고쳐나감.
* 한단락을 보고 그것을 외워서 말하기. (성우 목소리를 따라한다던가.. 결국 원어를 흉내내려고 노력하게 되어있다.)
- 창섭/BitmapMasking . . . . 15 matches
* 우리가 비트맵을 불러다 쓸때 늘 사각형 모양으로 불러다 쓴다. 하지만 불러다 쓰고 싶은 모양이 사각형이 아니지만 본의 아니게 배경색까지 따라 찍힌다. 이 때 사용한다.
* 래스터 연산을 이용한다. 디지털 공학 시간에 배우는 OR, AND, XOR 등을 비트맵에서도 적용할 수 있다. 여기서는 XOR 은 쓰지 않아도 된다.
이렇게 된다. 다시 본론으로 돌아가서...우리가 하고 싶은 일은 그림의 배경을 잘라 내고 원하는 모양만을 밑그림에 붙이는 것이다. 따라서 우리는 배경은 무시되고 원하는 부분의 밑그림이 무시되어야 한다.[[BR]]
<원하는 결과>
원본 그림에 흰색과 검은 색으로 그려진 그림(마스크)을 밑그림에 잘 연산시켜 순서를 잘 맞춰 그리면 원하는 그림이 나오는 것이다. 마스크는 밑의 두개중 아무거나 사용한다.
* 따라서 무시될 부분은 약하고 보일 부분은 강해지도록 배경색을 정하고 마스크를 정한다.
* 우리는 그림이 이기고~! 그림 외의 부분은 밑그림이 이겨야 한다~!
1. 그 위에 배경자리는 밑그림이 이기고 그림자리는 그림이 이기도록.. 마스크의 색깔을 정한다.
1. 마스크를 '''SRCAND''' 연산 한다.
1. 그림을 '''SRCPAINT''' 연산 한다.
1. 마스크를 '''SRCPAINT''' 연산 한다.
1. 그림을 '''SRCAND''' 연산 한다.
- 2011국제퍼실리테이터연합컨퍼런스공유회 . . . . 14 matches
* 퍼실리테이터(facilitator)는 회의 또는 워크숍과 같이 여러 사람이 일정한 목적를 가지고 함께 일을 할 때 효과적으로 그 목적을 달성하도록 일의 과정을 설계하고 참여를 유도하여 질 높은 결과물 만들어내도록 도움을 주는 사람을 말한다.
퍼실리테이션이 잘 이루어지려면 잘 훈련된 퍼실리테이터(facilitator)가 있어야 한다. 훌륭한 퍼실리테이터는 보통 다음과 같은 일을 한다.
- 회의 주관자와 상담하여 회의의 목적과 결과물을 정확히 파악한다.
- 그 것을 달성하기에 적절한 시간과 장소, 참석자를 확보한다.
- 그 목적과 결과물을 산출하기 위하여 효과적인 절차를 설계한다.
- 발언에 대하여 안전함을 느끼도록 분위기를 형성한다.
- 필요한 경우 절차에 따라 기법(예: 브레인스토밍)과 도구(예: SWOT)를 사용한다.
- 참석자의 참여 분위기를 파악하고 적극적으로 참여하도록 유도한다.
- 소수의 참석자가 회의를 주도하지 않도록 관리한다.
- 예정대로 진행되고 있는지 평가하면서 필요한 조치를 취한다.
- 시간을 관리하고, 회의 내용을 적고, 요약한다.
- 참석자들 스스로 우수한 결과물을 내놓을 것이라고 신뢰한다.
- 효과적인 퍼실리테이션에 관한 지식과 기술을 지속하여 연마한다.
- CVS/길동씨의CVS사용기ForRemote . . . . 14 matches
홍길동 씨는 C++로 Hello World를 작성하려고 한다. 간단한 소스지만 CVS에 넣어 볼겸 한번 만들어 본다.
원하는 디렉토리에서 배치 파일을 실행해서 cvs가 실행되는지 확인하고 로그인을 한다. (문서의 작성자는 자신이 알고 있는 서버를 이용하였으니 개의치 마세요.)
프로젝트 진행 폴더를 만들고, 프로젝트를 서버에 등록한다.
도움말 : 프로젝트를 서버에 등록한다. 만약 내부에 소스같은 자원이 있다면 같이 등록된다.
프로젝트 전체를 가지고 오는 개념이라서 상위 디렉토리에서 수행한다.
도움말 : 지정하는 프로젝트(모듈) 전체를 받아 온다. local에 처음 프로젝트를 받아 올때 사용한다.
.\HelloWorld>cvs commit -m "Hello World를 출력한다."
도움말 : add 서버에 추가되는 자원을 등록한다. commit 서버에 변경사항을 반영시킨다.
밍에 관한 기사를 읽고 자신의 프로그램을 잘못 작성되었다고 생각하고 고치려 한다.
동일하고 cvs_set_remote.bat 을 실행 로그인을 하고, checkout을 한다. 시작 디렉토리는 c:\user> 로 가정하였다.
도움말 : commit 서버에 변경된 자원을 반영한다.
Hello World를 출력한다.
도움말 : diff 두 버전간의 차이를 비교 한다. 파일이름을 생략하면 해당 프로젝트의 모든 소스들의 버전들을 체크해서 ㅗ인다.
- Chapter I - Sample Code . . . . 14 matches
이런저런 소개들. (컴파일러는 무엇을 사용한다. 머 어쩌구저쩌구.)
모든 .c 파일에서 인클루드되는 헤더파일이다. 이 파일의 내용은 타겟프로세서마다 다르게 적용시켜야한다.
프로세서마다 각각 가지고 있는 특성이 다르기 때문에 우리가 포팅하려는 타겟 CPU에 맞춰 여러가지 글로벌 변수를 선언해줘야 한다. (글로벌 변수라기보다는 키워드 재정의라고 말하는게 더 맞겠다) [[BR]]
OS 를 작성하다보면 전역변수가 필요한 경우가 있다. 전역변수는 어떻게 선언하는가? extern 키워드를 사용하면 된다. 하지만 uCOS-II 에서는 extern 키워드마저 #define 해서 다른 매크로로 사용한다.
OS에서 공유자원이나 특정코드가 수행되는 도중에 다른 프로세스에 의해 interrupt 되는것을 방지하기 위해 크리티컬 섹션을 사용하게 된다. 이는 윈도우즈 프로그래밍에서 스레드관련 처리를 해 줄 때에도 나오는 용어이다. uCOS-II에서는 단순히 매크로함수를 이용해 크리티컬섹션에 들어오기와 나오기를 한다. 매크로함수가 하는 일은 단순히 인터럽트를 무효화, 유효화 시키는것 뿐이다.
// 의해 모든 레지스터의 내용을 스택에 PUSH하는 명령임. 반대는 POPF로 PUSHF의 역순으로 스택에서 꺼낸 데이터로 각각의 // 레지스터를 변경 시킴. 항상 이 두 명령은 한쌍이 되어 사용 되어야 한다.
디스플레이는 문자기반으로 한다. x, y값을 이용해서 아스키문자와 특수문자를 출력할 수 있다. 1글자 출력에 사용되는 바이트수는 2이다. 1바이트는 글자이고, 나머지 1바이트는 포그라운드/백그라운드 컬러이다. (상위 4비트가 백그라운드이고 하위 4비트가 백그라운드 컬러이다)
수행시간 측정은 한 task 의 수행시간을 측정하기 위해서 한다. (당연한거 아냐?). 이 측정은 PC의 82C52 타이머 2번을 통해 수행된다. 수행시간 측정을 위한 함수로는 PC_ElapsedStart()와 PC_ElapsedStop()이 있다. 하지만 이 두 함수를 사용하기 전에 PC_ElapsedInit()를 호출해야한다. 이 함수는 두 함수와 관련된 오버헤드를 측정하는데 사용된다. 이렇게 하면 PC_ElapsedStop 함수에 의해 수행시간이 리턴된다(마이크로세컨드). 이 두 함수는 모두 리엔터런트(주 : 몇 개의 프로그램이 동시에 하나의 task나 subroutine을 공유하여 쓰는 것에 대해 말함, from 한컴사전) 하지 않아야한다. 다음은 PC_DispChar()함수의 측정시간을 구하는 예이다.
uCOS-II는 여타의 DOS Application 과 비슷하다. 다른말로는 uCOS-II의 코드는 main 함수에서부터 시작한다. uCOS-II는 멀티태스킹과 각 task 마다 고유의 스택을 할당하기 때문에, uCOS-II를 구동시키려면 이전 DOS의 상태를 저장시켜야하고, uCOS-II의 구동이 종료되면서 저장된 상태를 불러와 DOS수행을 계속하여야 한다. 도스의 상태를 저장하는 함수는 PC_DosSaveReturn()이고 저장된 DOS의 상태를 불러오는것은 PC_DOSReturn() 함수이다. PC.C 파일에는 ANSI C 함수인 setjmp()함수와 longjmp()함수를 서로 연관시켜서 도스의 상태를 저장시키고, 불러온다. 이 함수는 Borland C++ 컴파일러 라이브러리를 비롯한 여타의 컴파일러 라이브러리에서 제공한다.[[BR]]
'''uCOS-II를 끝내기 전에 PC_DOSSaveReturn 함수를 호출해야한다. 그렇지 않으면 DOS가 curruped mode 가 되어버리고 이것은 당신의 windows에 영향을 줄 수도 있다.'''
- MFC/Serialize . . . . 14 matches
MFC의 document 는 간단한 클래스가 아니다. 이 클래스는 일반적으로 다양한 객체들을 포함한다.
프로그램을 짜면서 이런 document 를 파일로 저장해야한다. 단순히 기본형의 데이터를 저장하고 불러들이기는 쉽지만, 객체단위로 이를 행하는 것은 대단히 어려운 일이다.
이를 위해서 MFC는 직렬화(Serialization)이라는 기능을 제공한다. 이 기능을 통해서 데이터를 저장하고 다시 읽는데 들이는 노력을 최소화 할 수 있다.
CXXXDoc 클래스의 객체가 시리얼화 입력과정동안 응용 프로그램을 통해 동적으로 생성될 수 있도록 한다. IMPLEMENT_DYNCREATE와 매치. 이 매크로는 CObject 에서 파생된 클래스에만 적용된다. 따라서 직렬화를 하려면 클래스는 직접적이든 간접적이든 CObject의 Derived Class 여야한다.
직렬화를 하려는 모든 객체에는 이 메소드를 구현해주어야 한다. (has-a 관계에 있는 것도)
IsStoring() 을 통해서 저장인지 로드인지를 판별한다.
MFC기반의 스트림을 제공하는 클래스이다. 객체들을 파일에 출력하거나, 그것을 입력 스트립으로서 복구하는 스티리밍에 대한 메커니즘을 제공한다.
CArchive는 객체 데이터를 구성하는 로직을 처리하는 일을 전담한다.
매크로는 클래스의 이름을 인수로 받는다. 따라서 만약 CExample 에 직렬화 기능을 추가한다면 CExample 의 정의부의 내부 어느 곳에서나
구현 파일에 넣어야할 IMPLEMENT_SERIAL()는 3가지의 인수를 취한다. 첫번재는 이름, 두번재는 바로 윗 단계의 기본 클래스, 프로그램에 대한 스키마 번호(scheme number), 혹은 버전을 나타내는 부호 없는 32비트 정수를 인자로 받는다.
이후에 클래스 정의를 수정한다면 스키마 번호를 바꾸어야 한다. (다른 버전의 파일을 읽으려 하면 예외를 발생시킨다.
만약 CExampleDerived 가 CExample의 자식 클래스인데 이 클래스를 직렬화 하기위해서는 모든 중간 단계의 클래스 수준에서 직렬화가 구현되어야 한다.
- ProjectAR/Design . . . . 14 matches
* 맵도 있다. 맵은 데이터를 읽어와서 맵의 정보를 저장한다.
* CARObject는 각자의 패턴에 맞게 움직일수 있어야 한다.
* CARObject는 각자의 리치, 공격 타입 등에 맞게 공격할 수 있어야 한다.
* CARObject가 공격을 하려면, 각자의 시야안에 들어오는 또 다른 CARObject를 볼 수 있어야 한다. CARMap을 파라메터로 넘겨주면 될까? 아니면 CARObject를 저장하고 있는 리스트 같은것을 넘겨주면 될까?
* CARObject는 파라메터(체력, 스킬포인트, 힘 등등)을 가지고 있어야 한다.
* CARHero는 아이템을 장착할수 있다. 장착한 아이템에 따라 CARHero의 상태가 변한다.
* CARHero는 성장해야 한다. CARHero가 CARMonster를 죽이면 CARMonster의 경험치를 받아온다.
* 인벤토리가 있어야 한다. 아이템을 주워서 둘 곳이 있어야 되기 때문이다.
* 이동 페턴을 가져야 한다. 예를 들어 주인공을 향해 이동을 하게끔 만들거나 이동을 하되, 맞으면 도망가는 형식, 또 보면 무조건 도망가는 방식 등이 있겠다. 여기서 많은 문제가 생길꺼라 생각한다.
* 떨어뜨리는 아이템 종류가 있어야 한다. 어떠한 확률로 어떤 아이템을 떨어뜨릴 것인지, 그리고 죽은 후 떨어뜨리는 것을 구현해야 한다.
* 주인공에게 능력치를 얼만큼 줄지 생각을 해야 한다. 이를 계산하여 넘겨주기 위해 몬스터도 경험치를 가져 그것을 계산하는 방법도 있다. 이런 방법을 구현할려면 오브젝트에서 경험치를 처리하는 수도 있다.
* CAREquipment는 잡아 놓은 정령에 따라 상태가 변한다.
- 새싹교실/2012/ABC반 . . . . 14 matches
virtual box를 설치한다.
virtual box의 새로만들기에서 우분투 가상머신을 새로 만든다.(설정은 기본설정이면 되되 메모리 용량은 1024MB로 한다)
우분투를 설치한다.
프로젝트를 만든다.(빈 프로젝트 체크박스에 체크를 해야 한다)
위 코드에서 보면 myfunc라는 함수는 int자료형 자료 2개를 각각 num1과 num2라는 이름으로 넘겨 받아 두개를 더해서 반환한다.
그럼 myfunc에선 num1에 a의 값을, num2에 b의 값을 넘겨받아 두 값을 더해 그 더한 값을 반환한다.
함수의 선언은 그 함수를 호출하는 코드보다 위에 있어야 한다. 그렇기 때문에 위처럼 함수의 선언만 해놓고 실제 구현은 아래에다가 해놓는 경우가 많다.
같은 이름으로 지역변수와 전역변수가 있을경우 지역변수를 우선으로 한다.
if문은 if()에서 괄호 안이 true면 실행을 한다.
if(a== 2)라는 문장에서 a의 값으로 참과 거짓을 판별한다.
a에는 2가 들어가 있으므로 ()안의 값이 true가 되서 c= myfunc(a, b)를 실행한다.
참과 거짓에 대해서는 보통 0을 거짓으로 하며 1을 참으로 간주한다. (사실 0아닌값은 모두 참으로 간주한다)
어쨋든 다음 수업때부터 진짜 프로그래밍을 한다는 느낌을 받을 수 있을 거에요 -이민규
- 위키설명회2005/PPT준비 . . . . 14 matches
넓어진다. 위키를 보면 알겠지만, 항상 활발하게 움직이는 살아있는 학회다. 늘 변화한다. 새로운 것을 추구한다.
한달에 두번 격주로 시행함을 원칙으로 한다.
시간과 장소를 과게시판, 과방, 위키, 엘레베이터에 미리 공지하고, 당일에 늦게 오는 사람을 위해 구피에 모이는 장소를 공지한다.
회원 자격 상실 여부는 회의를 통해 결정한다.
데블스캠프는 1년에 5일 이상 개최한다.
- 위키에 익숙해지다 보면 솔직히 디자인은 그다지 신경 쓰이지 않고, 어떤 CSS를 쓴다면 눈이 편할까에 집중하게 된다. 물론 위키 전도사가 되려면 초보자들을 위한 배려에 대해 많이 고민해야 한다.
존 사이트와 달리, 네티즌들의 자발적인 자율, 정직, 예의, 책임, 공유 의식을 요구한다.
그래서, 최대한 참여가 보장되어 있지만, 이에 익숙하지 않은 이용자들은 참여를 주저하게 되는 역설적 상황이 존재한다.
또 ^가 붙는다면 자매싸이트에 링크가 존재한다는 것이다.
야후에서 조선일보로 가는 링크가 있다고 해서 그것이 필연적으로 조선일보 사이트 내에 야후로 돌아가는 연결이 있다는 것을 보장하진 못한다
해당 페이지나 그 페이지의 일부분이 특정 페이지와 관련이 있을 경우, 관련있는 부분 마지막에 SeeAlso를 추가한다.
주변 맥락을 제공하지 않기 때문에 SeeAlso는 최후의 수단이어야 한다.
많은 사람들이 그냥 아무 생각없이 링크 달 수 있다는 편리함으로 SeeAlso의 사용에 유혹을 받지만 SeeAlso에 있는 링크는 [InformativeLink]여야 한다.
- 코바용어정리 . . . . 14 matches
클라이언트의 반대쪽에는 구현 객체라고 알려진 실제 객체가 있다. '구현 객체(Object Implementation)'는 실제 상태(state)와 객체의 반응 양상(behavior)을 규정하며 다양한 방식으로 구성될 수 있다. 구현 객체는 객체의 메소드와 객체에 대한 활성화 및 비활성화 프로시저를 정의한다. 구현 객체는 객체 어댑터의 도움을 받아 ORB와 상호 작용한다. 객체 어댑터는 구현 객체를 특정하게 사용하는 데에 편리하도록 ORB 서비스에 대한 인터페이스를 제공하게 된다. 구현 객체는 ORB와 상호 작용하여 그 정체를 확립하고 새로운 객체를 생성하며 ORB에 따르는 서비스를 획득할 수 있도록 한다. 새로운 객체가 생성되면 ORB에게 통보되고 이 객체의 구현이 어디에 위치하는가를 알게 된다. 호출이 발생하면 ORB, 객체 어댑터, 스켈레톤은 구현의 적절한 메소드에 대한 호출이 되도록 만들어야 한다.
CORBA는 C++과 Java 같은 객체 지향 언어와 C와 같은 절차적 언어 양쪽 모두에서 사용될 수 있다. 객체 지향 언어에서는 사용자가 객체의 특성을 정의하고 그 프로퍼티에 액세스할 수 있게 해주는 메소드와 인터페이스를 제공한다. 이것은 비객체 지향 언어에는 없는 기능인데, 이것들은 각각
의 인터페이스 타입에 대해 스텁에 대한 프로그래밍 인터페이스를 필요로 한다. 보통 스텁은 OMG-IDL로 정의되어 있는 객체 오퍼레이션에 대한 액세를 하게 해주는데, 일단 프로그래머가 OMG-IDL 및 특정 프로그래밍 언어에 대한 언어 매핑에 친숙해지면 손쉽게 예상이 가능한 방식으로 액세르를 하게 해준다. 해당 스텁은 ORB 코어에 전용이며 최적화된 인터페이스를 사용해서 나머지 ORB들을 호출하게 될 것이다. 만약 여러 개의 ORB를 사용하게 된다면 각각의 스텁은 제 각기 해당하는 ORB를 호출하게 될 것이다. 이 경우에 ORB와 언어 맵핑은 공조하여 각각의 스텁이 특정 객체 레퍼런스와 제대로 연결될 수 있도록 해야 할 것이다.
클라이언트가 호출될 객체와 수행할 오퍼레이션을 지정하고자 할 때, 특정 객체 A의 특정 오퍼레이션을 지정하는 대신 객체 호출을 동적으로 생성하도록 허용하는 인터페이스를 이용할 수 있다. 이러한 경우 클라이언트 코드에서는 수행되는 오퍼레이션과 전달되는 파라미터의 타입에 대한 정보를 제공해야 한다. 이 정보는 대개 인터페이스 저장소와 같은 런타입 소스에서 얻어진다. 실행 시간 중에 해당 정보를 얻은 후, 클라이언트 코드는 이른바 동적 호출 인터페이스(DII)를 이용해서 동적으로 호출을 할 수 있게 된다.
구현 객체가 ORB에 의해 제공되는 서비스를 이용하는 주된 방법은 객체 어댑터를 통하는 것이다. 객체 어댑터는 CORBA 라이브러리인데 ORB 코어 통신 서비스의 맨 위쪽에 위치하고 있으며 서버 객체를 대신하여 리퀘스트를 받아들인다. 객체 어댑터는 서버 객체를 인스턴스화하기 위한 실행 환경을 제공한다. 즉, 서버 객체에 리퀘스트를 전달하며 객체 ID를 부여하는 등의 작업을 하게 된다는 것이다. 또한, 객체 어댑터는 구현 저장소에 어댑터가 지원하는 클래스와 런타임 인스턴스를 등록한다. CORBA에서는 각 ORB가 기본 객체 어댑터(BOA)라 불리는 표준 어댑터를 지원하도록 규정한다. 하나의 서버가 여러 개의 객체 어댑터를 지원할 수 있다.
동적 스켈레톤 인터페이스는 IDL에 기초하지 않는 스켈레톤/스텁을 가진 객체의 메소드 호출을 처리해야 하는 서버에 대해 런타임 바인딩 메커니즘을 제공한다. 동적 스켈레톤은 수신된 메시지의 파라미터값을 참조하여 어떤 객체가 호출되었는지 어떤 메소드가 호출되었는지를 알게 된다. 이것은 일반적으로 컴파일된 스켈레톤을 사용하는 것과는 비교되는데 이러한 스켈레톤에서는 메소드의 구현이 IDL로 정의된다. 구현 코드는 모든 오퍼레이션 파라미터에 대한 상세한 설명을 ORB에 제공해야 하며, ORB는 오퍼레이션을 수행할 때 사용되는 입력 파라미터값을 제공한다. 오퍼레이션이 수행된 후, 구현 코드는 출력 파라미터 또는 익셉션을 ORB에게 넘겨준다. 동적 스켈레톤 인터페이스의 특성은 프로그래밍 언어 맵핑에 따라 또는 객체 어댑터에 따라 실질적으로 달라질 수 있지만, 일반적으로는 업콜 인터페이스이다. 동적 스켈레톤은 클라이언트 스텁 또는 DII를 통해서 호출될 수 있다. 이 두 가지 방식의 클라이너트 리퀘스트 생성 인터페이스는 동일한 결과를 제공한다.
- Android/WallpaperChanger . . . . 13 matches
* 또한 Service는 AndroidManifest.xml파일에 당연히 등록을 해야한다. (Application탭 -> Service등록)
안드로이드 애플리케이션의 속도는 빨라야만 합니다. 음, 효율적이어야 한다고 말하는 쪽이 더 정확할 듯싶네요. 다시 말해, 제한된 컴퓨팅 파워와 데이터 저장소, 작은 화면, 갑갑한 배터리 수명 같은 모바일 장치 환경에서 가능한 한 효율적으로 실행되어야 한다는 것입니다.
누군가는 이 페이지상의 많은 조언이 "섣부른 최적화"나 마찬가지라고 비판할지도 모릅니다. 미시 최적화는 때로는 효율적인 데이터 구조와 알고리즘을 개발하는 것을 더 어렵게 만든다는 것은 사실입니다. 하지만, 핸드셋과 같은 임베디드 기기에서는 때로는 별다른 선택지가 없습니다. 예를 들어, 여러분이 데스크탑에서 개발할 때 생각하는 VM의 성능에 대한 가정을 안드로이드에도 적용한다면, 여러분은 시스템 메모리를 소진해버리는 코드를 꽤나 작성해 버리고 말 것입니다. 이것은 여러분의 애플리케이션이 바닥을 기도록 할 수 있습니다 — 시스템에서 동작하는 다른 프로그램들에게 무엇을 하는지 지켜보세요!
객체의 생성은 결코 공짜가 아닙니다. 임시 객체들을 위해 쓰레드-당(per-thread) 할당 풀을 사용하는 세대형(generational) GC는 더 낮은 비용으로 할당 할 수 있지만, 메모리를 할당한다는 것은 메모리를 할당하지 않는 것 보다 언제나 더 높은 비용이 듭니다.
만약 사용자 인터페이스 루프에서 객체를 할당한다면, 주기적으로 가비지 컬렉션을 강요하게 될 것이고 사용자 경험에 있어서 조그마한 "딸꾹질(거북함)"을 만들게 될 겁니다.
전통적인 지혜에서는 Map을 사용해야 한다고 할 것입니다. Map 인터페이스를 구현한 어떤 것으로라도 구현체를 바꿀 수 있기 때문입니다. 전통적인 지혜는 전통적인 프로그래밍에는 맞습니다만, 임베디드 시스템에는 그다지 대단하지 않습니다. 인터페이스 참조를 통해 호출하는 것은 명확한 참조를 통한 가상 메소드 호출보다 2배 더 소요될 수 있습니다.
여러분이 하는 일에 적합하여 HashMap사용을 선택했다면 Map으로 호출하는 것은 거의 가치가 없습니다. 코드를 리팩터링 해 주는 IDE의 가능성을 고려해 보더라도, Map으로 호출하는 것은 큰 가치가 없습니다. 여러분이 코드의 방향을 확신하지 못한다 해도 말입니다. (다시금 이지만, 공용 API는 예외입니다: 작은 성능 고려보다 좋은 API가 언제나 으뜸입니다.)
C++와 같은 네이티브 언어에서 필드에 직접적으로 접근하는 것 (예. i = mCount) 보다 getter를 사용하는 것 (i = getCount())은 일반적인 관습입니다. 이 방법은 C++에서는 훌륭한 습관입니다. 왜냐하면 항상 접근을 inline화 할 수 있는 컴파일러를 사용하고 있고, 필드에 접근을 제한하거나 디버그 해야 한다면 언제나 코드를 추가할 수 있기 때문입니다.
인스턴스 필드를 한번 이상 접근해야 한다면, 지역 변수를 만드는 것 또한 좋은 생각입니다. 예를 들어:
여러분은 또한 지역 변수를 final로 선언할 수 있습니다. 하지만 이것은 결정적인 성능 이득은 없습니다. 지역 변수에는 오직 코드를 명확히 하기 위해서 "final"을 사용합니다 (또는 예를 들어 익명 내부 클래스를 사용해야 한다면 가능).
이 문제는 내부 클래스가 접근하는 필드와 메소드 선언에 private 범위가 아닌 package 범위를 가지도록 함으로써 피할 수 있습니다. 이로써 더욱 빠르게 동작하게 되고 자동 생성되는 메소드에 의한 오버헤드를 제거할 수 있습니다. (불운하게도 이 또한 직접적으로 같은 패키지 내의 다른 클래스들이 필드들에 접근할 수 있다는 것을 뜻하게 되며, 모든 필드들은 private로 해야 한다는 표준적인 OO 관습에 거스르게 됩니다. 다시 한번 더 말하자면, 공용 API를 설계하게 된다면 이 최적화를 사용하는 것을 조심스럽게 고민해야만 할 것입니다.)
임베디드 시스템을 위해 좋고 효율적인 코드를 작성하는 최선의 방법은 여러분이 작성하는 코드가 실제로 무엇을 하는지 이해하는 것 입니다. 여러분이 정말로 반복자를 할당하기를 원한다면, List에 향상된 반복문을 반드시 사용하십시오; 부주의한 부작용이 아닌 신중한 선택을 통해서 말입니다.
- DataStructure/Graph . . . . 13 matches
* Edge들을 순서에 따라 하나씩 연결한다. 연결하다가 Cycle이 생기면 그것은 잇지말고 제거한다. 다 이어지면 그만둔다.
* Vertex를 하나 선택한다.
* 거기에 이어진 Edge중 가장 작은것을 선택한다.
* 그 Edge에 이어진 Vertex와 처음의 Vertex에 이어진 Edge중 가장 작은걸 선택한다.
* 이짓을 반복한다.
* dist[w] : v0에서 출발하여 w까지의 Shortest Path의 값. 단 w를 제외하고는 S집합내에 있는 Vertex들만 거쳐야 한다.
반복한다.
* 역시 표현은 2차원 배열로 한다. 그런데 이 알고리즘은 (-) Weight 도 허용한다.(그리로 가면 이득이 된다는 말이다.) 하지만 Negative Cycle은 안된다.
* Negative Cycle? 그 사이클을 돌면 - 가 나오는길을 말한다.
* 초기 행렬을 A(-1)[i, j] 로 한다. 반복할수록 괄호 안의 값을 올려준다. 이걸 n-1까지 반복한다.
- EmbeddedSystemClass . . . . 13 matches
휴인스 테크의 교육용 보드를 이용한 실습을 한다.
임베디드 환경에서의 GUI 툴킷(Qt-embedded)를 이용한 프로그램. 디바이스 드라이버 프로그래밍을 실습한다.
패키지 묶음 설치에서 '''Standard Package''' 만을 선택한다. (x-windows, gnome 은 차후 필요한 부분만을 설치한다.)
실습에서 사용하는 리눅스는 레드햇 9.0으로 상당히 오래된 버전을 이용한다.
툴체인을 구성하면서 필요한 과정을 설명한다.
'''다음의 명량어를 순서대로 실행해서 관련된 패키지를 설치한다.'''
// 일단 최신 커널(+동일 버전의 커널 헤더)을 설치한다.
// vmware tools 인스톨에 필요한 gcc 를 업로드한다.
// 실행되는 버전과 커널 컴파일에 필요한 버전이 동일한 버전인지 확인 후 버전을 맞추어 줘야한다.
// 필요할 경우 다음의 명령어를 통해서 x-window, gnome 을 설치한다.
// 설치후 입력기로 SCIM 을 등록한다.
우선 상기 패키지를 설치한 후 다음과 같은 진행을 해야한다.
- HardcoreCppStudy/두번째숙제/CharacteristicOfOOP/변준원 . . . . 13 matches
일반적으로 우리 생활에서 어떤 정보와 어떤 종류의 작업은 개념적으로 서로 연관되어 있음을 많이 접한다. 이러한 연관된 정보와 작업 또는 기능을 하나로 묶는 것은 자연스런 과정이다. 예를 들어 대학교의 인사관리에서는 학생들의 이름, 주소, 학번, 전공 들의 정보를 유지하며 학생들에 관해 가능한 작업인 평점 계산, 주소변경, 과목신청 들의 기능들을 생각할 수 있다. 이러한 정보와 정보 처리에 필요한 작업, 즉 기능들은 모두 학생에 관한 것이므로 학생이라는 테두리로 묶어두는 것이 자연스러운 것이다. 이렇게 연관된 사항들을 하나로 묶는 것을 캡슐화(encapsulation)라고 한다.
속성 상속이라는 개념 역시 우리의 일상 생활에서 흔히 사용하는 개념을 프로그램으로 표현하기 위한 편리한 수단이다. 어떤 객체의 종류, 즉 클래스는 좀 더 세분화하여 분류할 수가 있는데 이렇게 세분화된 종류나 유형을 subtype 혹은 subclass라고 한다.
객체지향 프로그래밍에서 "속성 상속"은 새로운 클래스를 정의할 때 모든 것은 처음부터 다 정의하는 것이 아니라 이미 존재하는 유사한 클래스를 바탕으로 하여 필요한 속성만 추가하여 정의하는 경제적인 방법을 의미한다. 이 때 새로이 생기는 클래스를 subclass라 하고 그 바탕이 되는 클래스를 superclass라 한다. 이렇게 하면 클래스들 사이에서 공통으로 가지는 특성, 즉 데이타 구조나 함수들은 중복하여 정의하는 일을 줄일 수 있을 뿐 아니라, 특성을 수정하거나 추가시에 superclass의 정의만 고치면 그 subclass들도 변경된 속성을 자동적으로 상속받게 되므로 매우 편리하다.
객체 지향 프로그램의 중요한 특징으로 하나의 함수 이름이나 심볼이 여러 목적으로 사용될 수 있는 다형성(Polymorphism)을 들 수 있다. 객체 지향에서의 다형성이란, 복수의 클래스가 하나의 메세지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 말한다. 즉, 별개로 정의된 클래스들이 ㅌ은 이름의 함수를 별도로 가지고 있어 하나의 메세지에 대해 각기 다른 방법으로 그 메세지를 수행할 수 있는 것을 의미한다. 예를 들어, 여러 가지 화일(file)들을 프린트 하는 함수를 생각해 보자. 화일에는 간단한 텍스트 화일(text file), 문서 편집기로 만든 포멧 화일(format file), 그래픽을 포함하는 화일(file with graphics) 등 여러 가지가 있다. 이들 각각의 화일들은 프린트 하는 방법이 모두 다르다, 객체 지향에서는 아래처럼 각 종류의 화일을 별도의 클래스로 정의하고, 각각의 화일 종류별로 Print라는 함수를 화일의 형태에 맞게 구현한다.
정보 은폐란 캡슐속에 쌓여진 항목에 대한 정보를 외부에 감추는 것을 의미한다. 즉, 처리하려는 데이타 구조와 함수에 사용된 알고리즘 들을 외부에서 직접 접근하지 못하도록 하고 캡슐 내부의 함수들만이 접근하게 된다. 객체지향에 관한 서적이나 논문에서 이 두가지 개념이 중요시 소개되는 것은 바로 객체라는 것이 캡슐화와 정보 은폐의 원리를 실제의 프로그래밍 언어에서 실현한 것이기때문이다.
객체와 객체 사이의 정보 교환은 외부에 공개하고자 하는 일련의 정보를 public interface로 정의해 외부에 객체들이 이 Interface를 통해서 그 객체와 정보를 교환하도록 한다. 즉, 한 객체의 Public Interface를 그 객체가 "무슨 일을 할 수 있다. 혹은 이 정보는 공개할 수 있다."라고 외부에 선언하는 것이다.
위에서 살펴볼 캡슐화와 정보 은폐의 이점은 우선 객체 내부의 은폐된 데이타 구조가 변하더라도 주변 객체들에게 영향을 주지 않는다는 것이다. 예로서, 어떤 변수의 구조를 배열(array)구조에서 리스트(list) 구조로 바꾸더라도 프로그램의 다른 부분에 전혀 영향을 미치지 않는다. 또한 어떤 함수에 사용된 알고리즘을 바꾸더라도 signature만 바꾸지 않으면 외부 객체들에게 영향을 주지 않는다. 예를 들어, sorting 함수의 경우 처음 사용된 sequence sorting 알고리즘에서 quick sorting 알고리즘으로 바뀔때 외부에 어떤 영향도 주지 않는다. 이러한 장점을 유지보수 용이성(maintainability) 혹은 확장성(extendability)이라 한다.
클래스 중에는 인스턴스(instance)를 만들어 낼 목적이 아니라 subclass들의 공통된 특성을 추출하여 묘사하기 위한 클래스가 있는데, 이를 추상 클래스(Abstract class, Virtual class)라 한다. 변수들을 정의하고 함수중 일부는 완전히 구현하지 않고, Signature만을 정의한 것들이 있다. 이들을 추상 함수(Abstract function)라 부르며, 이들은 후에 subclass를 정의할 때에 그 클래스의 목적에 맞게 완전히 구현된다. 이 때 추상 클래스의 한 subclass가 상속받은 모든 추상 함수들을 완전히 구현했을 때, 이를 완전 클래스(Concrete class)라고 부른다. 이 완전 클래스는 인스턴스를 만들어 낼 수 있다.
추상 클래스의 예로서 프린터 소프트웨어를 생각해 보자. 우선 모든 종류의 프린터들이 공통으로 가지는 특성을 정의한 추상 클래스 "Printer"가 있다고 한다면, 여기에는 프린터의 상태를 나타내는 변수, 프린터의 속도 등의 변수가 있으며 함수로는 프린팅을 수행하는 Print 등을 생각할 수 있다. 그러나 프린터마다(Dot matrix printer, Laser printer, Ink jet printer) 프린팅 하는 방법이 다르므로 이 추상 클래스 안에서는 Print라는 함수를 완전히 구현할 수 없다. 다만, 여기에는 Print 추상 함수의 Signature만 가지고 있으며, 실제의 구현은 여러 subclass에서 각 프린터 종류에 알맞게 하면 된다.
- HowToDiscussIt . . . . 13 matches
토론을 진행하는 방식이 "어떻게"이고 그 토론을 통해 성취하고자 하는 것(보통은 어떤 특정 의제)이 "무엇"이다. 이 양자를 분리한다. 대부분의 토론은 다음의 양상을 띈다.
지금 이 경우, "어떻게" 토론을 진행할 지에 대한 합의가 되어있지 않은 상태이고, "무엇을"과 "어떻게"가 뒤섞여 있다. 이렇게 해서는 진도가 잘 나가지 않는다. 따라서, 양자를 분리한다.
우선은 토론을 진행할 방식에 대해 토론을 한다. 그리고, 이 방식의 대리인을 선정한다. 이 사람을 Facilitator라고 부른다. 그는 토의 내용에 대한 권한은 없지만, 진행을 정리하는 교통순경의 역할을 한다. 그리고, 모든 참가자는 이 방식을 따라 토론을 진행한다.
한꺼번에 토론을 하기엔 사람이 너무 많다. 내성적인 사람들은 많은 사람 앞에서 이야기 하기를 꺼린다. 혹시나 자신이 한 말이 남들에게 바보처럼 보이지 않을까 걱정한다. 특히 의견/질문을 내는 사람이 별로 없는 상황은 악순환을 거듭한다. 의견을 내는 사람이 없기 때문에 의견 내기가 어려워진다. 또한, 낮은 위치의 사람(저학년, 하급자, 경험이 적은 사람)과 높은 위치의 사람이 섞여 있는 경우, 낮은 위치의 사람은 무언의 압력을 느끼고 의견 개진을 어려워 한다. 보통 한 두 사람 말 많은(혹은 경험이 많은) 사람이 전체 토론을 주도하게 된다.
이럴 경우 '''Subgroup''' 패턴을 사용한다. 사람 수가 적으면 참여도가 높아진다.
예컨대, 일단 전체 그룹을 모아놓고 간략한 문제 상황 설명과 목적에 대해 컨센서스를 이룬 후에, 학년별 소그룹으로 나누고 자기들끼리 알아서 대표를 선출하고 토론하도록 한다. 선배의 눈치를 볼 필요 없이 자신들만의 의견을 개진, 정리하도록 한다. 얼마 후에 모든 그룹이 모여서 각 소그룹의 대표자가 토의 내용을 요약 발표한다. 이것에 대해 다시 전체 토론을 하고, 또 다시 '''Subgroup'''을 사용할 수도 있다.
- ISBN_Barcode_Image_Recognition . . . . 13 matches
* 1차원 바코드 인식을 하기 위해서는 해당 바코드의 심볼로지를 이해해야 한다.
* Bar는 바코드의 검은 부분, Space는 흰 부분이며, 각각 Black, White라고 표현하기도 한다.
* 가장 좁은 Bar 혹은 가장 좁은 Space(의 폭 길이)를 의미한다.
* 바코드를 보다 쉽게 인식하기 위해, 바코드 좌우로 X-dimension의 10배의 Space가 존재한다.
* 나머지 한 자리는 Left Characters의 Encoding으로 부터 해석한다. (아래 Encoding에서 설명)
* 가중치는 1, 3, 이 반복되는 패턴이다. 첫 번째 자리 숫자에 1을 곱하고, ... , 열두 번째 자리 숫자에 3을 곱한다.
* 0은 space, 1은 bar를 의미한다.
* 즉, 하나의 숫자를 나타내기 위해 2개의 Bar와 2개의 Space가 존재한다.
* 스페이스와 바에 의해 직접적으로 표현되는 숫자는 12개이다. 나머지 하나의 숫자는 Left Character의 인코딩을 해석해 얻어내야 한다. 예를 들어 8801067070256 이라는 EAN-13 바코드가 있을 때, 바코드에 직접적으로 얻어지는건 맨 앞의 자리 '8'이 빠진 801067070256 이고, 이는 Left Character에 해당하는 801067의 인코딩을 보고 알아내야 한다.
* 안드로이드 공식 문서에 따르면 항상 지원되는 포맷이라고 한다.
* Planar Format으로, 프레임 크기만큼 Y 정보가 있고, 그 뒤에 프레임 크기의 반 만큼 U, V 정보가 존재한다.
* 공식 문서에 따르면 API level 12(허니컴 3.1.x)부터 항상 지원되는 포맷이라고 한다.
- JavaScript/2011년스터디/3월이전 . . . . 13 matches
* 금요일은 공부해온 것을 발표하고 그 다음 화요일은 자신이 작성한 코드를 발표한다.
* [http://www.yes24.com/24/goods/2943930?scode=032&OzSrank=1 자바스크립트 완벽 가이드]의 목차를 참고하여 진행한다.
* 목차를 보고 매주 적당한 분량으로 챕터를 묶어 그 주 공부할 부분을 정한다.
* 그 주 공부할 부분은 모두 같이 공부한다.
* 발표는 각자 한 챕터씩 맡아 발표한다.
* 발표할 부분은 금요일에 모여 제비뽑기로 결정한다.
* 그 이후에도 오지 않는 사람은 기다리지 않고 바로 진행한다.
* 모든 참가자는 잘 모르겠는 것, 궁금한 것, 더 공부하고 싶은 것 등 질문을 3가지 이상 준비한다.
* 공부한 내용은 3분 이상 발표한다.
* void 연산자를 사용하면 피연산자의 값에 상관없이 undefined를 반환한다.
* 문자나 숫자, ""사이에 들어가 것들을 '리터럴'이라고 부르며 따로 구분한다.
* Argument는 실행중인 함수의 정보를 정의한다 : 함수에 넘기는 파라메터가 유동적임..
* 함수 안에 익명함수 중복으로 쓸 경우 즉시 호출하거나 변수에 넣어 호출 가능하게 만들어야 한다.
- MFC/Print . . . . 13 matches
출력을 구현하기 위해서는 view 클래스로 부터 상속받은 수많은 함수들을 오버라이딩 해야한다.
페이지 카운트를 계산한다. DoPreparePrinting() 호출
헤더/꼬리말을 출력한다. 현재 페이지를 출력한다.
뷰클래스의 5개의 멤버함수는 프로그래머가 재정의 해야한다. 최소한 5개중에서 OnPreparePrinting(), OnPrepareDC(), OnPrint()는 구현해야한다.
프린트 작업에서 기초적인 역할을 한다. 프린트 job 정보, 프린트 작업 상황에 대한 내용이 저장된다.
|| m_bContinuePrinting || TRUE로 설정되면 출력 루프를 계속한다. FALSE가 되면 프린트 작업 종료. ||
|| m_lpUserData || LPVOID 형식을 갖는다. 생성한 객체에 대한 포인터를 저장한다. 출력작업에 관한 추가 정보를 저장하는 객체를 생성할 수 있도록 한다. CPrintInfo 객체와 연계 시킬 수 있도록 한다. ||
|| m_rectDraw || CRect 객체. 페이지에서 사용 가능한 영역을 논리 좌표로 정의 한다. ||
|| m_strPageDesc || CString 객체로 프린트 preview 동안에 페이지 번호를 나타내기 위해 프레임 웍에서 사용되는 포맷 문자열을 포함한다. ||
- NSIS . . . . 13 matches
보통 프로그램을 개발하고 나서 '만들었다' 로 끝나는 경우가 많다. 하지만, 정작 배포때에는 할일이 많다. 특히 제어판 프로그램 등록/삭제 에 등록되는 방식이라던지, 레지스트리를 건드린다던지, Program Files 폴더에 복사한다던지. 이 경우에는 보통 전용 Installer 프로그램을 쓰게 되지만, 아직 제대로 써본 적이 없었던 것 같다.
이번에는 '배포' 라는 녀석에 대해 촛점을 맞춰보고자, 인스톨러중 하나인 NSIS 에 대해 간단히 정리하고자 한다. (자.. 이제 폼좀 내면서 만든 프로그램 보여주자. ^^; 이게 가장 큰 목적. --;)
NSIS의 원리는 간단하다. nsi 라는 스크립트 화일을 해석해서 해당 맞는 프로그램들을 하나의 화일로 압축시키고 실행프로그램으로 만드는 것이다. (마치 배치화일을 작성한다고 생각할수도 있겠다.)
1. 프로그램을 개발한다.
* NSI Script 를 작성한다.
* makensis 로 Script 를 컴파일한다. 그러면 makensis 는 스크립트를 분석하면서 포함해야 할 화일들을 하나로 묶어준다. 그리고 zip의 형식으로 압축해준다. (내부적으로 zip2exe 가 이용된다. 이건 zlib 사용됨.)
* /Vx (x는 0~4) - output 의 표시 정도를 조절한다.
* /Olog (log 는 filename) - compile 중 screen 상에 해당 화일에 대한 log를 표시하는 대신 화일로 설정한다.
* 표현하고자하는 string 에 공백이 있으면 따옴표를 이용한다.
* 하나의 command 가 여러줄을 이용하는 경우 '' 를 사용한다.
regsvr32.exe 로 dll 을 unregister 한 다음에 전체 폴더를 삭제할 때, regsvr32.exe 는 Exec 가 아닌 ExecWait 로 실행해주어야 한다. (그렇지 않으면 해당 dll 이 unregister 되기 전에 dll 화일이 delete 되어 정상적인 uninstall 이 되지 않을 수도 있다.)
FindProc Plugin 을 설치한다.
사용 예 : exec 로 regsvr32.exe 호출시 비동기 호출이 되어 뒤의 delete 문이 실행된다. 이를 방지하기 위한 방법으로 다음과 같이 한다.
- NSIS/Reference . . . . 13 matches
|| Icon || "setup.ico" || Installer 의 아이콘. 반드시 32*32*16 color 이여야 한다. ||
함수는 Section과 비슷한 역할을 한다. 하지만, 다른 점이라면 함수는 installer 에서 직접 선택하여 호출하는것이 아니라, Section 에서 Call 명령어를 통해 호출되어 인스톨러의 기능의 일부들을 보충하는 역할을 한다. 그리고 특별한 경우로써, Callback Function들이 있다.
Label은 Goto 명령어나 기타 조건제어문들 (IfErrors, MessageBox, IfFileExists, StrCmp 등)을 위해 이용한다.
Label 은 반드시 Section 이나 Function 내에 존재해야 한다. Label 은 해당 Section 과 Function 내에서만 그 범위를 가진다.
|| File || ([/r] file|wildcard [...]) | /oname=file.data infile.dat||해당 output path ($OUTDIR)에 화일들을 추가한다. 와일드카드 (?, *) 등을 이용할 수 있다. 만일 /r 옵션을 이용할 경우, 해당 화일들와 디렉토리들이 재귀적으로 추가된다. (rm -rf의 'r' 옵션의 의미를 생각하길) ||
|| Exec || command || 특정 프로그램을 실행하고 계속 다음진행을 한다. $OUTDIR 은 작업디렉토리로 이용된다. ex) Exec '"$INSTDIR\command.exe" parameters'||
|| ExecShell || action command [parameters] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED]|| ShellExecute를 이용, 프로그램을 실행시킨다. action은 보통 'open', 'print' 등을 말한다. $OUTDIR 은 작업디렉토리로 이용된다.||
|| Rename || [/REBOOTOK] source_file dest_file || 화일이름을 변경한다. (또는 Move 한다.) ||
|| Delete || [/REBOOTOK] file || 화일을 삭제한다. 와일드카드 사용가능.||
* WriteUninstaller - uninstller 화일이름 설정. 보통 uninstall.exe 라고 써주면 됨. 단, 레지스트리에 등록시키는 화일과 같아야 한다.
Section 중 'Uninstall' 의 이름을 가진 Section 은 uninstaller를 위한 Section이다. 이 Section 에서는 화일들, 레지스트리 등을 시스템으로부터 제거하는 일을 해야한다.
- Polynomial . . . . 13 matches
다항식의 곱셈을 이용하는 프로그램을 작성한다.
하나의 항은 coefficient 와 exponent 로 구성된다. 하나의 항(단항식)을 표현하는 자료구조는 다음처럼 구조체를 사용한다. (여기서는 지수와 밑모두 integer를 사용한다)
다항식을 표현하는자료구조는 크게 두가지로 생각해 볼 수 있다. linked list 와 array 이다. 배열은 모두들 잘 알겠고 linked list 는 동적으로 storage를 할당받아 각 노드를 포인터로 연결한 자료구조를 말한다..(라고 우선 설명만 해둬야지 정확한 정의는 내리지 못하겠다..-_-). 물론 동적으로 할당받지 않고도 linked list 를 구현할수 있지만 그럴꺼면 배열로 하는게 낫지 그 노가다를 뭐하러 하나...-_-
Node expr_1[SIZE]; // 이와 같은 식으로 표현한다.
이 방법을 사용할때 발생할수 있는 문제점은 memory leakage (메모리 누수)이다. Java같은 경우는 쓰레기 수집기가 있지만 c 는 코더(-_-)가 일일이 사용되지 않는 자원을 회수해줘야 한다. 그렇지 않으면 그 자원을 다시 사용할 수 없게 된다.
다음과 같은 prototype 을 갖는 함수를 구현해야 한다. (이름은 달리해도 상관없다..)
Node* mul(Node *n1, Node *n2); // 두 다항식의 곱을 표현하는 새로운 다항식을 리턴한다.
Node* add(Node *n1, Node *n2); // 두 다항식의 합을 표현하는 새로운 다항식을 리턴한다.
Node* add(Node *n1, Node *n2); // 두 다항식의 차를 표현하는 새로운 다항식을 리턴한다.
Node* input(); // 사용자에게 값을 입력받아 새로운 다항식을 생성하여 리턴한다.
void delete(Node *node) // 다항식을 삭제한다.
void sort(Node *node) // 다항식을 내림차순으로 정리한다.
- 데블스캠프2008/등자사용법 . . . . 13 matches
%각자 원하는 닉네임 말하는 중
개미, 10미터/지구 둘레 만큼의 틈이 생긴다.
공부는 꾸준히 하지 않으면 절대 못한다 ...ㅜㅠ[.....]
논다 < 프로젝트를 열심히한다 < 시험을 잘본다 < 잘 찍는다
그래서 좋은 선생님을 만나야 성공한다.
굳이 프로그래밍을 잘해야 한다는 강박관념에 빠지기 보다는 자연스럽게 할수 있을 정도가 되어야 한다는 내용.
격려하면서 즐겁게 테니스를 치도록 한다..ㅋㅋ
무엇인가 하려는 목표가 있으면, 그 목표보다 약간 낮춰서, 그러니까 자기가 할 수 있는 만큼의 목표를 잡고 목표를 달성한 뒤 이를 토대로 하여 더 큰 목표를 향하면 쉽게 목표를 달성할 수 있다는 뜻이라고 생각합니다. 다시 말해서 P(Low|Object) = P(Object) * P(High|Object) 라는거죠~
재미없는 일은 하기 힘들다 재미있게 공부를 하면 좋은 결과를 얻을 수 있다. 따라서 자기가 재미있게 느끼는 부분을 공부하고 그 부분과 연관된 것들을 공부한다던지 같이 공부한다던지 여러 자료를 사용한다던지 해서 재미있게 만들면 즐겁게 공부하면서 좋은 성과를 얻을 수 있다. - FLATSTAR-
여기서 배운대로 인식을 해야한다고 생각합니다.
- 실습 . . . . 13 matches
2) File->New를 선택한다.
3) Tab에서 Project를 선택한다.
4) ListBox에서 Win32 Console Application을 선택한다.
5) Project 이름을 삽입한다.
6) Location:에 프로그램을 작성할 경로를 지정한다.
8) An empty project를 선택하고, Finish를 선택한다.
9) File->New를 선택한다.
10) Tab에서 Files를 선택한다.
11) C/C++ Header File을 선택한 후, 오른쪽 File 칸에 "SungJuk.h"라고 기입한다.
13) 오른쪽 Project Workspace 창에서 Class View Tab을 선택한다.
14) Tree를 모두 펼쳐 보면, SungJuk.h와 SungJuk.cpp가 존재한다.각 File을 밑에 보여주는 Source를 작성한다.
15) Source 작성이 끝나면, F7을 눌러 Compile한다.
- 위키로프로젝트하기 . . . . 13 matches
* ["프로젝트기록의필수요소토론"]에서 거론된 필수 요소들를 반드시 생각한다.
* What - 이는 단순히 '무엇을 한다' 가 아닌 구체적인 목표이다. 무엇을 원하는가?
* output 화일 링크걸기 - 다른 사람들이 직접 컴파일하거나 소스를 열어볼 수 있도록. 가급적이면 프로젝트 진행 초기버전부터 링크를 걸어주는 것이 좋다고 생각한다. (다른 사람들이 해당 사람의 사고 궤적을 볼 수 있다.)
* 종료 - 원하는 목표에 도달했을 경우, 또는 Schedule 에 세운 계획에 맞춰 일이 완료되었을 경우에는 프로젝트를 종료한다. 만일 기간을 넘기고, 프로젝트를 진행할 의욕을 잃었다면, 프로젝트를 종료시켜라. (무기한 보류로 오래 끌고 있지 않도록 한다. 이는 추후 새 프로젝트를 열때 발목을 잡을 것이다.)
일반게시판에 경우 프로젝트가 어떻게 진행될까? 하나의 프로젝트당 하나의 게시판이 열려있어야 한다. 프로젝트가 10개라고 한다면 게시판이 10개가 열려있어야 하고, 각각의 글들은 시간순서대로 저장이 된다. 위키에서의 page 10개의 의미와 게시판 10개의 의미중 어떤 것이 더 cost가 적게 들까? 그리고, 시간순서의 글 index 나열방식과 텍스트 내의 하이퍼링크중심 글 나열방식중 어느것이 더 의미있는 정보를 담을까?
기존의 게시판방식이 장점이 있다면 '시간의 역사' 라는 점이 있겠다. 매일 작업일지를 쓰는 경우. 시간의 흐름에 따른 진행상황이 처음부터 주욱 보이기 때문이다. 반면 위키는 늘 현재성을 추구한다. 위키의 페이지는 늘 해당 주제를 중심으로 고쳐지는 글이다. 하지만, 시간의 역사 자체의 의미보다는 페이지 자체 내용, 즉 Content 중심의 사고라는 점에 더 무게중심을 두고 싶다. '시간의 역사' 자체가 Content 로서 중요하다면, 그것을 위한 페이지를 열어라.
* 더 효율적으로 이용하기 원한다면, 해당 지식을 이해한 상태에서 정리가 이루어져야 할 것이다. 만일 2~3명 이상 다른 사람들과 스터디를 하게 되는 경우, 해당 지식에 대한 사람들의 이해의 관점이 다를 수 있음을 알게 될 것이다. 여러 관점을 보는 것 또한 좋은 경험이 될 것이다. (외국의 대학에서는 위키를 해당 강의에 대한 공동필기장으로 쓰기도 한다.)
* 온라인이라는 잇점이 있다. 시간과 공간의 제약을 덜 받는다. 하지만, 오프라인을 배제해서는 안된다. 각각의 대화수단들은 장단점들이 존재한다. 위키의 프로젝트는 가급적 Offline에서의 프로젝트, 스터디와 이어져야 그 효과가 클 것이다. ZeroPage 의 ["정모"] 때 자신이 하고 있는 일에 대한 상황을 발표하고, 서로 의사소통을 할 수 있겠다.
- 타도코코아CppStudy/0724/선희발표_객체지향 . . . . 13 matches
* Identity(식별) - 각 객체는 다른 객체로부터 분리되고 있고, 분별 가능해야 한다.
* Inheritance(상속) - 계층(hierarchy)관계에 놓여 있는 클래스들 간에 속성이나 연산 기능들을 공유한다.
* 모든 프로그램의 요소를 각각의 독립적인 객체로 생각한다.
* 데이터 추상화(data abstraction) : 자료 객체(data entity)들의 중요한 특성을 모형화한다. 이 모형이 객체의 속성이 된다.
* 캡슐화(encapsulation) : 객체의 내부적인 사항과 객체들간의 외부적인 사항들을 분리시킨다. 이렇게 캡슐화된 객체의 행위는 외부에서 볼 때는 구체적인 아닌 추상적인 것이 되므로 정보 은닉(information hiding) 개념이 존중된다. 주어진 클래스의 특정 연산 기능은 메소드(method)라고 한다. 캡슐화는 무슨 메소드로 구현되었는가에 구애받지 않고 추상적으로 정의된 연산 기능을 통해 객체가 사용되고 시스템의 상태(state)를 변화시키도록 해준다.
서브클래스가 수퍼클래스의 변수와 메소드들을 상속받을 때 필요에 따라 정의가 구체화(specification)되며, 상대적으로 상위층의 클래스 일수록 일반화(generalization) 된다고 말한다.
즉 함수나 데이터가 그것이 속해있는 객체전용으로 된다는것을 말한다. 좋은 예로 자동차를 들수있다.
* 데이타형 클래스와 객체(Class and Objectas any type data) : 자동차를 움직이기 위한 유저가 2명 있다. 자동차라는 객체 를 둘다 사용하는데 한명은 부산에 가려고 하고 한명은 대구에 오려고 한다.
즉 어떠한 데이타형을 가지고 원하는 만큼의 여러가지 인스턴스를 만들수 있다는 얘기이다.
객체 모형(object model) : 객체들과 그 특성을 식별하여 객체들의 정적 구조(static structure)와 그들간의 관계(interface)를 보여주는 객체 다이어그램(object diagram)을 작성한다.
동적 모형(dynamic model) : 시간 흐름에 따른 시스템의 변화를 보여주는 상태 다이아그램(state diagram)을 작성한다. 실시간(real-time) 시스템에서는 반드시 필요하다.
시스템 설계(system design) : 시스템의 구조를 서브시스템으로 분해한다. 이 과정중에서 성능 최적 방안, 문제 해결 전략, 자원 분배 등이 확정된다.
- 타도코코아CppStudy/객체지향발표 . . . . 13 matches
* Identity(식별) - 각 객체는 다른 객체로부터 분리되고 있고, 분별 가능해야 한다.
* Inheritance(상속) - 계층(hierarchy)관계에 놓여 있는 클래스들 간에 속성이나 연산 기능들을 공유한다.
* 모든 프로그램의 요소를 각각의 독립적인 객체로 생각한다.
* 데이터 추상화(data abstraction) : 자료 객체(data entity)들의 중요한 특성을 모형화한다. 이 모형이 객체의 속성이 된다.
* 캡슐화(encapsulation) : 객체의 내부적인 사항과 객체들간의 외부적인 사항들을 분리시킨다. 이렇게 캡슐화된 객체의 행위는 외부에서 볼 때는 구체적인 아닌 추상적인 것이 되므로 정보 은닉(information hiding) 개념이 존중된다. 주어진 클래스의 특정 연산 기능은 메소드(method)라고 한다. 캡슐화는 무슨 메소드로 구현되었는가에 구애받지 않고 추상적으로 정의된 연산 기능을 통해 객체가 사용되고 시스템의 상태(state)를 변화시키도록 해준다.
서브클래스가 수퍼클래스의 변수와 메소드들을 상속받을 때 필요에 따라 정의가 구체화(specification)되며, 상대적으로 상위층의 클래스 일수록 일반화(generalization) 된다고 말한다.
즉 함수나 데이터가 그것이 속해있는 객체전용으로 된다는것을 말한다. 좋은 예로 자동차를 들수있다.
* 데이타형 클래스와 객체(Class and Objectas any type data) : 자동차를 움직이기 위한 유저가 2명 있다. 자동차라는 객체 를 둘다 사용하는데 한명은 부산에 가려고 하고 한명은 대구에 오려고 한다.
즉 어떠한 데이타형을 가지고 원하는 만큼의 여러가지 인스턴스를 만들수 있다는 얘기이다.
객체 모형(object model) : 객체들과 그 특성을 식별하여 객체들의 정적 구조(static structure)와 그들간의 관계(interface)를 보여주는 객체 다이어그램(object diagram)을 작성한다.
동적 모형(dynamic model) : 시간 흐름에 따른 시스템의 변화를 보여주는 상태 다이아그램(state diagram)을 작성한다. 실시간(real-time) 시스템에서는 반드시 필요하다.
시스템 설계(system design) : 시스템의 구조를 서브시스템으로 분해한다. 이 과정중에서 성능 최적 방안, 문제 해결 전략, 자원 분배 등이 확정된다.
- 5인용C++스터디/에디트박스와콤보박스 . . . . 12 matches
Copy / 선택영역을 클립보드로 복사한다.
Undo / 최후 편집 동작을 취소한다.
CreateEdit라는 프로젝트를 만들어보자. 폼뷰가 아닌 일반 뷰에 에디트를 배치하려면 뷰가 생성될 때 (WM_CREATE) OnCreate에서 에디트를 생성시키면 된다. 우선 뷰의 헤더파일을 열어 CEdit형 포인터를 선언한다.
그리고 뷰의 WM_CREATE 메시지 핸들러인 OnCreate를 작성하고 이 핸들러에서 에디트를 생성한다.
m_Edit가 CEdit의 포인터로 선언되었으므로 일단 new 연산자로 CEdit객체를 만든다. 그리고 이 객체의 Create 멤버함수를 호출하여 에디트를 생성한다. Create 함수의 원형은 다음과 같다.
첫 번째 인수로 에디트의 스타일을 주되 에디트는 메인 윈도우가 될 수 없으므로 WS_CHILD 스타일을 주어야 하고 생성하자마자 보여야 하므로 WS_VISIBLE 스타일을 주어야 한다. 또한 에디트는 디폴트로 경계선을 가지지 않으므로 WS_BORDER 스타일을 주어야 보이게 된다. 두 번째 인수로 에디트가 차지할 사각영역을 주고 세 번째 인수로 에디트의 부모 윈도우의 포인터를 준다. 마지막 인수인 nID는 에디트 컨트롤의 ID이되 통지 메시지를 처리하지 않을 경우는 ID를 주지 않아도 상관없다.
new 연산자로 에디트 객체를 만들었으므로 프로그램이 종료될 때 이 객체를 파괴해 주어야 한다. WM_DESTROY 메시지의 핸들러에 다음 코드를 작성하면 된다.
이렇게 Create 함수로 만든 에디트의 통지 메시지는 어떻게 처리해야 할까. 클래스 위저드가 메시지 핸들러를 만들 때 해주는 세가지 동작을 프로그래머가 직접 해줘야 한다. 우선 메시지 맵에서 메시지와 메시지 핸들러를 연결시켜 준다. ON_EN_CHANGE 매크로에 의해 IDC_MYEDIT 에디트가 EN_CHANGE 메시지를 보내올 때 OnChangeEdit1 함수가 호출된다.
두 번째로 헤더파일에 메시지 핸들러의 함수의 원형을 선언한다.
세 번째로 메시지 핸들러 함수 OnChangeEdit1 함수를 작성한다. 함수의 본체 코드는 물론이고 함수명까지 직접 입력해 주어야 한다. 이 함수는 에디트 컨트롤의 문자열을 읽어 들이는 함수이다.
예제에서 에디트의 EN_CHANGE 통지 메시지를 사용해 보았다. 통지 메시지란 컨트롤에 어떤 변화가 발생했을 때 부모 윈도우에게 자신의 변화를 알리기 위해 보내는 메시지를 말한다.
- MicrosoftFoundationClasses . . . . 12 matches
MFC의 클래스들은 CDocument, CView와 같이 C로 시작하는 이름을 갖는다. 데이터 멤버들에는 m_ 라는 접두어를 붙여서 만들어져 있다. 변수의 이름앞에 p, i, l, h 등을 이용해서 그 종류를 변수의 이름으로 추정가능하게 하는 [헝가리안표기법]을 이용한다. 이는 과거 C환경하에서 형식 검사기능의 부재로 인한 에러를 막기위해 고안된 측면이 크기 때문에 C++에 들어와서는 반드시 필요한 표기법은 아니다.
Create(0, "MFC Application"); // 기본설정으로 "MFC Application"이라는 타이틀을 가진 프레임을 생성한다
''컴파일 해보고자 하는 분들은 Project/Setting/General 항목에서 MFC DLL을 사용한다는 설정을 해야한다.
응용프로그램에서 document를 몇개를 다루느냐에 따라서 SDI(single document interface), MDI(multiple document interface)로 구분하여 사용한다.
View는 도큐먼트에 존재하는 데이터의 집합체를 우리가 원하는 방식으로 표현하는 메카니즘이 구현된 객체이다. document 와 마찬가지로 CView라는 클래스를 상속하여 사용하게 된다. View는 윈도우의 개념으로 보아서 프레임 윈도우 영역안의 클라이언트에 속하는 view만의 윈도우안에서 표현된다. 한개의 document 에 대해서 view는 여러개로 나누어서 만들어지는 것이 가능하다.
Document 객체는 관계된 뷰들의 포인터를 리스트로 관리한다. 뷰는 관계된 도큐먼트에 대한 포인터를 저장할 데이터 멤버 변수를 갖고 있다. 프레임 위도우는 현재 활성화된 뷰 객체에 대한 포인터를 갖는다. 이런식으로 서로 묶여서 한개의 윈도우를 형성한다.
도큐먼트 템플릿 객체는 단순히 document 만을 관리하는 것이 아니다. 그들 각각과 관계되어 있는 윈도우와 뷰들도 함께 관리한다. 프로그램에서 각기 다른 종류의 도큐먼트에 대해서 하나씩의 document template이 존재한다. 만약 동일한 형태의 document가 2개이상 존재한다면 그것들을 관리하는데에는 하나의 document template만 있으면 된다.
* {{{~cpp WinMain() 에서 InitInstance() 수행, document template, main frame window, document, view 를 생성한다.}}}
- PragmaticVersionControlWithCVS/Getting Started . . . . 12 matches
~/work를 조사해서 ~/work/sesame 디렉토리에 정상적으로 저장소의 파일이 체크아웃되었다면 원본 파일을 삭제한다.
또한 '''diff''' 옵션을 이용해서 변경된 파일이 어떤 변경이 있었는지를 조사하여 보여주는 옵션도 존재한다.
이러한 경우를 살피기 위해서 기존의 sesame 이라는 디렉토리이외의 공간에 저장소에 저장된 sesame을 받아야한다.
상기와 같이 확인을 해보면 aladdin/number.txt 는 체크아웃을 통해서 저장소의 소스와 동기화를 해주어야한다는 상태를 나타내고 있다.
'''최신 버전이 아닌 로컬 작업공간의 내용과 저장소의 내용을 비교한다'''
-rHEAD는 현재의 branches에 존재하는 가장 최신버전의 것과 비교하는 옵션이다. 만약 이 옵션이 없다면 cvs는 현재 받아진 지역 버전과 동일한 저장소상에 기록된 소스와 비교를 한다.
우선 aladdin 의 파일들을 체크인한다.
그렇게 만든뒤에 sesame의 파일을 수정한 사람이 체크인을 한다고 생각해보자.
상기에서 보듯이 에러를 내면서 체크인하지 못한다.
이런경우에 rcsmerge 는 그 변경을 다음과 같이 표현한다.
이런일이 발생한 경우에는 어떤 일이 발생했는지 기록을 우선적으로 찾아보아야한다.
이 경우에는 ichi를 쓰기로 했다고 가정하자. ichi이외의 다른 부분의 나용을 모두 삭제한다. 그리고 토의 결과
- ProgrammingLanguageClass/Report2002_1 . . . . 12 matches
* 출력: 주어진 문법에 따라 INPUT.TXT에 저장되어 있는 문장을 분석한다. 파싱(parsing)되는 중간과정을 <처리 예>와 같이 출력하고, 문법에 적합하면 “Yes,” 입력된 문장이 적합하지 않으면 오류 메시지와 “No”를 출력한다.
* 각 파싱(parsing) 함수는 리턴하기 직전에 해당 non-terminal이 검색되었음을 알리는 메시지를 출력하여야 한다.
* <identifier>와 <constant>의 경우에는 찾아진 lexeme을 함께 출력한다.
* 입력 스트림에서 ASCII 코드로 32 이하인 것은 모든 white-space로 간주하며, white-space는 각 token을 구별하는 용도 이외에는 모두 무시한다.
* 어휘분석기(lexical analyzer)의 소스코드는 정수 변수 next_token, 문자열 변수 token_string, 함수 lexical()을 포함하여야 한다. 함수 lexical()은 입력 스트림을 분석하여 하나의 lexeme을 찾아낸 뒤, 그것의 token type을 next_token에 대입하고, lexeme 문자열을 token_string에 저장하는 함수이다.
* 문장이 문법에 적합하지 않으면 관련 오류 메시지를 출력한다. 그 다음 오류를 발생시킨 lexeme을 제거 또는 첨가한 후, 파싱을 재개한다. 예를 들어, x = a + + b일 경우, “+” 연산자가 한 개가 더 존재하므로 오류 메시지를 출력한다. 그 다음, “+”기호를 제거한 후 파싱을 계속한다.
* 기타 구현 시 요구되는 세부 사항은 직접 결정하고, internal document에 기술한다.
* 데모 시 디스켓에 실행파일을 미리 준비한다(데모 시에 컴파일하는 경우는 감점처리함).
- ScheduledWalk/석천 . . . . 12 matches
말 그대로. 전형적인 '프로그램' 입니다. '입력을 받고, 처리해서 출력한다.' 라는;
1. 순차적으로 - 왼쪽 -> 오른쪽 순서로. 실행 순서에 따라 구현한다. (실행 순서와 상관없이 독립적으로 따로 생각하여 구현할 수 있습니다. 이는 UnitTest 참조)
// 일종의 Test Code. 프로그램이 완료되었다고 했을때 제가 원하는 상황입니다.
실행해보면, assert 부분에서 에러가 날 겁니다. 그러면서 assert 부분과 관련한 코드 라인을 표시해줍니다. 즉, 제가 원하는 상황을 가정하고 Test 코드를 만든뒤, 그 Test 를 통과할때까지 코드를 작성하면 되겠죠. 추후 뭔가가 작동이 이상하다라고 한다면,
1. 일단 해당 문제일 모듈을 체크한다.
5. Test Case 를 늘려보기. (이 사이즈에 따라 구현의 난이도가 있습니다. 테스트와 다음 테스트 작성과의 시간이 길어질수록 어렵습니다. 그 만큼 생각을 추상적으로 한다는 뜻일 수 있으니까요.)
row 1, col 0 에서 row 0, col -1 을 더했을 경루를 생각한다면 row 1, col -1 입니다. -1 에 대해 modular 5를 한다면? 다름아닌 4가 나옵니다. 즉, 1, 4 가 되어버리죠.
원하는 기대값은
일단 아웃풋 만을 두고 본다면, 배열 자체의 행과 열의 크기가 뒤집혔군요. 그렇다면 그에 따른 에러 가능성 높음. 그렇다고 한다면, 배열에 값을 증가시키는 IncrementBoardBlockCount() 에 에러가능성이 높겠습니다.
board[roachPosition.n1*maxRow + roachPosition.n2]++; // <--- maxRow 가 아닌 maxCol 이여야 한다.
- SoftwareEngineeringClass . . . . 12 matches
* 컴퓨터 공학과 전공 수업을 통틀어 다섯 손가락 안에 꼽을 수 있을 정도로 중요한 역할을 하는 과목이다. 그러나 중앙대학교 컴퓨터 공학과에서 이 과목의 위상은 그다지 크지 않은 듯 하다. 내가 생각하는 첫번째 문제는 교재에 있다. 두번째는 비현실적인 실습내용이다. 구체적이고 실용적인 실습이 필요하다. 세번째는 학생들의 인식부족이다. 소프트웨어 공학 수업이 자신의 프로그래밍 커리어에 얼마나 많은 실질적 효용을 줄 수 있는지 전혀 깨닫지 못한다. 물론 이것은 대부분 수업 자체의 문제에서 연유한다.
* 수업에서 원하는 것을 얻지 못하는 경우 수강은 하되 독학 혹은 학생 차원의 그룹 스터디를 할 것을 강력하게 권한다. 졸업 후 어디를 가건 두고 두고 유용하게 쓰일 것이다. 외국 유명 대학 경우 AOD/VOD로 수업 내용을 볼 수 있는 곳이 많이 있다.
* 본인은 거의 독학으로 SE 공부를 했다. 수업시간에 구조적 프로그래밍(structured programming)에 대해 설명을 들었을 때는 전혀 감흥이 없었고 졸음까지 왔다. 기억나는 내용도 없다. 하지만 스스로 공부를 하면서 엄청난 충격을 받았다. OOP는 구조적 프로그래밍의 패러다임을 완전히 벗어나지 못했다! 구조적 프로그래밍을 Goto 제거 정도로만 이해하는 것은 표피적 이해일 뿐이다! 구조적 프로그래밍 하나만 제대로 익혀도 내 생산성은 엄청나게 향상될 것이다! (참고로 정말 구조적 프로그래밍이 뭔지 알고 싶은 사람들은 다익스트라의 6,70년대 이후의 저작들을 읽어보길 권한다. 칸트 철학을 공부하는 사람이 칸트의 1차 저술을 읽지 않는다는 게 말이 되겠는가.) --김창준
수업 선택시엔 두 수업이 같은 과정이라 한다면 이경환 교수님의 수업을 신청하기를 권장. 중간중간 노교수님의 연륜이 들릴테니.
* 나의 생각에 SE 수업을 제대로 배우고 있다면 학기가 지나면서, 혹은 최소한 학기가 끝난 후에 내가 혹은 내 팀이 프로그래밍 과제(꼭 해당 수업 것만 말고)를 하는 "생산성"에 향상이 있어야 한다. 아니 적어도 그런 과제를 수행하는 과정을 이전과는 다른 각도에서 볼 수 있어야 한다. 이것이 Here And Now의 철학이다. 조그마한 학기 프로젝트 정도를 진행하는 데에 소프트웨어 공학은 필요없다고 생각할런지 모르겠으나, 작은 것도 제대로 못하면서 큰 것을 논한다는 것은 어불성설이다 -- 특히 프로젝트 규모가 커질수록 실패확률이 몇 배 씩 높아지는 통계를 염두에 둔다면.
* 또한, 예컨대 지금 하도급 SI 업체에서 일하는 PM을 한 명 초대해서 그가 이 수업에 대해 생각하는 바를 경청하고, 또 반대로 그에게 조언을 해줄 수 있어야 한다. 만약 현업을 뛰는 사람이 이 수업에서 별 가치를 느끼지 못한다면 그것은 수업자체의 파산이다. 이것 역시 Here And Now의 철학이다. 우리가 배우는 것은 지저분한 진흙탕 세계에 대한 것이 아니고 깔끔한 대리석 세계에 대한 것이라고 생각할런지 모르겠으나, 지금 여기의 현실에 도움이 되지 않는다면 도무지 SE가 존재할 이유가 어디에 있겠는가.
* SE 교육은 첨탑 끝에서 계단 위로 내려와야 한다. 천상의 공부만 하고 지상으로 내동댕이쳐진 학생들은 다시 천상에 들어갈 기약없는 그 날까지 모든 것을 망각하게 된다 -- 더군다나 천상에 돌아가더라도 여전히 망각의 심연을 헤매거나 혹은 그 때 천상은 이미 또 다른 천상으로 떠나있는 상황이 종종 벌어질 것이다.
- ToyProblems . . . . 12 matches
ToyProblems를 풀게 하되 다음 방법을 이용한다. Seminar:TheParadigmsOfProgramming [http://www.jdl.ac.cn/turing/pdf/p455-floyd.pdf (pdf)]을 학습하게 하는 것이다.
1. 일단 자신이 아는 방법을 총동원해서 문제를 풀게 한다.
1. 선배가 이 간단한 문제를 다양한 패러다임으로 다르게 풀 수 있다는 것을 보여주고 간략히 설명한다. 이때, 대부분의 경우 긴 설명이 필요없다. 이미 문제를 풀어봤기 때문이기도 하고, 문제 자체가 간단하기 때문이기도 하다.
1. 이번에는 해당 패러다임을 이용해서 앞서 1번에서 풀었던 문제와 유사하지만 다른 문제를 풀게 한다.
이런 식으로 패러다임을 여러가지 소개한다. 예를 들어 구구단 같은 문제는 최소 10가지 이상의 패러다임으로 풀 수가 있다.
* ToyProblems 후보 : 구구단, 소수구하기, SpiralArray, 삼각형 그리기, (기타 참가자가 원하는 것 추가 가능. 단 조건은 1학년이 한 시간 내에 풀 수 있는 간단한 문제)
* 자신이 원하는 언어 (python recommended)
1. 그 중 하나에 대해 스스로 문제를 풀게한다 10m.
1. 비슷하지만 약간 다른 문제를 풀게한다 10m
1. 비슷하지만 약간 다른 문제를 풀게한다 10m
1. 1번에서 고른 나머지 문제를 가능하면 다양한 방법으로 여러번 풀게한다. 각자 몇 개의 전혀 다른 프로그램을 만들어 내는가? 60m
1. 비교한다. 10m
- XpQuestion . . . . 12 matches
- '필요하면 하라'. XP 가 기본적으로 프로젝트 팀을 위한 것이기에 혼자서 XP 의 Practice 들을 보면 적용하기 어려운 것들이 있다. 하지만, XP 의 Practice 의 일부의 것들에 대해서는 혼자서 행하여도 그 장점을 취할 수 있는 것들이 있다. (TestDrivenDevelopment, ["Refactoring"], ContinuousIntegration,SimpleDesign, SustainablePace, CrcCard Session 등. 그리고 혼자서 프로그래밍을 한다 하더라도 약간 큰 프로그래밍을 한다면 Planning 이 필요하다. 학생이다 하더라도 시간관리, 일거리 관리는 익혀야 할 덕목이다.) 장점을 취할 수 있는 것들은 장점을 취하고, 지금 하기에 리스크가 큰 것들은 나중에 해도 된다.
각 Practice 를 공부를 하다보면, 저것들이 이루어지기 위해서 공부해야 할 것들이 더 있음을 알게 된다. (의식적으로 알아낼 수 있어야 한다고 생각한다.) Refactoring 을 잘하기 위해선 OOP 와 해당 언어들을 더 깊이있게 이해할 필요가 있으며 (언어에 대해 깊은 이해가 있으면 똑같은 일에 대해서도 코드를 더 명확하고 간결하게 작성할 수 있다.) CrcCard 를 하다보면 역시 OOP 와 ResponsibilityDrivenDesign 에 대해 공부하게 될 것이다. Planning 을 하다보면 시간관리책이나 일거리 관리책들을 보게 될 것이다. Pair 를 하다보면 다른 사람들에게 자신의 생각을 명확하게 표현하는 방법도 '공부'해야 할 것이다. 이는 결국 사람이 하는 일이기에. 같이 병행할 수 있고, 더 중요한 것을 개인적으로 순위를 정해서 공부할 수 있겠다.
개인적으로, TestDrivenDevelopment 는 연습해보면 배울 게 많다고 생각한다. Test 를 작성하는데에서 배웠던 일들이 많기에. (Test 를 작성하기 위해 큰 모듈덩어리에서 일어나는 중간단계에 대해 더 깊게 생각하고 작은단위로 쪼갠다던지, AcceptanceTest 를 작성하기 위해 전체 시스템 돌아가는 과정을 안다던지 등등)
선배들에게 Pair 를 요청하는 것도 바람직한 방법이라 생각한다. Pair를 하면서 또다른 사람의 세계를 구경하고, 또한 그 사람에게 또 다른 세계를 구경시켜줄 수 있으리라 생각한다. (다른 사람들을 세심하게 관찰할 수 있고 실천할 수 있다면 참으로 빨리 배울 수 있는 사람이라 생각한다.)
- 어차피 실제 고객에게 가치를 주는 중요한 일만을 하자가 목적이기에. Documentation 자체가 중요한 비즈니스 가치를 준다던가, 팀 내에서 중요한 가치를 준다고 한다면 (예를 들어서, 팀원중 몇명이 항시 같이 작업을 할 수 없다던지 등등) Documentation 을 EngineeringTask 에 추가하고 역시 자원(시간)을 분배하라. (Documentation 자체가 원래 비용이 드는 일이다.)
그리고, '지식의 전파'가 프로젝트에서 효율을 높인다고 한다면. 이번 기회에서도 ["1002"] 는 Pair를 한 사람과 같이 싸우고 치고 받고 하면서 여러가지 생각을 할 수 있었던 기회가 되었다. '충돌' 이 물리적작용으로만 끝난다면 상처밖에 남지 않지만, 화학작용을 한다면 뭔가 새로운 것을 만들어낸다. Pair 는 단순히 '한사람 Skill' + '한사람 Skill' 은 아니라 생각한다.
- ZPBoard/AuthenticationBySession . . . . 12 matches
'''HTTP 프로토콜'''은 stateless 프로토콜입니다. connectionless 프로토콜이라고도 합니다. 예를 들어, 웹브라우저를 통해 제로페이지에 접속한다고 봅시다. 클라이언트 입장에서는 자기 자신이 연속된 요청(게시물 보기나, 위키 사용등)을 보내는것을 알지만, 서버 입장에서는 매번 온 요청이 누구로부터 온 것인지를 알 방법이 없습니다. '''왜냐하면''' HTTP 프로토콜의 태생이 연결지향적이 아니고, 상태를 알 수 없기 때문입니다.
i. 처음 사용자가 로그인을 합니다. 이때 세션 아이디를 생성해서 저장하겠죠? 데이터베이스를 이용한다고 가정하고, 생성한 세션아이디를 키 값으로 해서 부가적인 정보를 기록합니다. 여기서는 현재 요청이 온 시각을 기록하면 되겠군요.
A. maybe or maybe not. 일반적인 경우, 세션에서 사용되는 쿠키는 브라우져를 닫으면서 보통 삭제되게 되어있으므로 그렇다고 볼 수도 있지만, 엄밀히 이야기해서, 로그아웃처리가 되는것은 아닙니다. 해당 세션키를 통해 다시 요청한다면, 서비스를 받을 수 있습니다. 이 모든 일은 HTTP 프로토콜 특성상 브라우져를 닫는 등의 행위가 오프라인에서 이루어지는것이기 때문입니다. (배틀넷을 하다가 랜선을 뽑으면 디스커넥이 되지만, 웹서핑도중 랜선을 뽑는건 어떠한 영양도 미치지 않는것과 같습니다.)
''그러면 아래의 예제가 원하는 바를 이룰 수 있을까요? 아니라면, 어떻게 바뀌어야 할까요.''
''이 예제는 브라우져를 닫는것만으로 로그아웃이 안될수도 있고.. 그걸 고쳐야 한다는 건가요? --["상규"]''
session_start(); // Session 을 사용하기 위해서는 반드시 맨 처음에 이 함수를 호출해주어야 한다.
이곳에서 회원 DB 를 검색하여 회원 인증 폼으로부터 받은 아이디와 패스워드를 확인한다.
unset($_SESSION[Auth]); // Auth 라는 Session 변수를 제거한다.
* 맞습니다. 현재 예제에서 세션에 기록하는 값은 어떤 값인가요? 어떤식으로 인증이 가능하죠? 만약 클라이언트측에서 값을 조작한다면 어떻게 조작여부를 알아낼 수 있나요?
문제 자체가 중요한가요? 어떤게 문제이고, 왜 문제가 되는지, 문제가 왜 문제가되는아는 과정이 중요하다고 생각해서 이런식의 문답법을 의도하게 됬습니다. 단순히 문/답을 열거하는것보다 문제를 발견하는 과정이 중요하게 생각되어 이렇게 했는데, 받아들이는 입장에서는 그게 아니었나 보군요. 다시한번 묻겠습니다. 그냥 문제와 답을 원하는지 답을 달아주기 바랍니다. --["sun"]
조군 : (아.. 우리편으로부터의 메세지로군)오케이 접속을 허락한다. 이제부터 인증키로 '''Auth'''라는 변수에 '''OK'''라는 값을 할당한다.
- ZeroPage/임원/회의/2011-02-13 . . . . 12 matches
* 전공 도서를 읽고 리뷰를 작성하면 마일리지를 적립한다.
* 임원단이 평가한다.
* 전공 도서를 읽고 알게 된 것을 ZeroPager들에게 세미나로 공유하면 마일리지를 적립한다.
* 피드백 (등급 * 개수)로 어느정도 지원할지 결정한다.
* 피드백 갯수를 일정개수 이상 채워야한다.
* 다른 형태로 작성하였을 경우 위키에 옮기는 것을 권장한다.
* ZeroPage에서 의미있는 경험을 할 수 있어야 한다.
* 하고싶은 것이 있을 때 ZeroPage에서 할 수 있어야 한다.
* 같이 할 사람을 ZeroPage에서 찾을 수 있어야 한다.
* 정보와 지식을 ZeroPage에서 얻을 수 있어야 한다.
* 비용이나 장비 등을 ZeroPage에서 지원받을 수 있어야 한다.
* 공모전 및 외부 대회 정보를 적극적으로 홍보한다.
- ZeroPageServer/SubVersion . . . . 12 matches
제로페이지의 사용자 계정이 있다면 누구나 사용이 가능하다. 대신에 로컬에는 ssh의 클라이언트(커맨드 기반)가 필요하다. (그렇지만 그룹설정이 필요하기 때문에 관리자에게 그룹으로 설정해달라고 해야합니다. 그룹이용자가 아닌 경우에는 저장소를 읽을 수는 있지만 쓰기는 하지못한다.)
subversion 은 http 로의 접근도 제공한다. 대신에 기본제공 프로토콜보다는 속도가 느린 단점이 있다. http 의 접근은 현재 익명계정에 대해서는 checkout, read 만 사용이 가능하며 checkin 계정을 받기 위해서는 관리자에게 다음의 정보를 메일로 보내주면 추가하는 것이 가능하다.
Linux 계정이 있다면 ssh-keygen 을 이용해서 생성시키는 방법도 존재한다. 이 방법이 훨씬더 빠르게 생성된다.
3. key comment 를 알아보기 쉽게 변경한다. 단순히 키의 주석을 다는 것이므로 아무걸로 해도 무관하다.
keyphrase 는 주의해서 만들어야한다. 이는 private-key에 암호를 부여하는 기능으로 키파일이 악의적
사용자에게 복사되었을 때 어느정도의 안전성을 보장한다. 만약 설정하지 않으면 파일만 있다면 기타의
4. Save Public Key 를 눌러서 키를 저장한다.
만약 키가 다수개가 존재한다면 바로 다음줄에 붙여넣으면 된다. 만약 파일이 없다면 동일한 파일이름을
5. Save Private Key 룰 눌러서 키를 저장한다.
6. pageant 를 실행하여서 프라이빗 키를 등록한다. 최초 키 등록시의 암호만 입력하면 시스템에
내 암호를 역으로 알아낼 수도 없다. 단지 키를 분실하고, 그 키의 암호를 해킹당한다면 수가 없다.
원한다면 개인용 저장소를 만들어주는 것도 가능함.
- 문서구조조정토론 . . . . 12 matches
DeleteMe) 현재의 해당 스레드는 정모에 관한 모든것을 다루는 것이라 생각해서 말씀하신 주제를 포용한다고 생각합니다. 하지만, 의도의 전달이 잘못되었다면 작성자가 고치기를 간절히 바라고 있습니다. 현재 문서 구조조정이후 고치는 사람이 별로 없는거 자체가 약간 걱정이 되지요. --상민
["neocoin"]:말씀하시는 문서 조정은 문서 조정은 문서 작성자가 손대지 말아야 한다라는걸 밑바탕에 깔고 말씀 하시는것 같습니다. 문서 조정자는 특별히 문서 조정을 도맡는 사람이 아니고, 한명이 하는 것이 아니라, 다수가 접근해야 한다는 생각입니다. "다같이" 문서 조정을 해야 된다는 것이지요. 문서 조정을 한사람의 도맡고 이후 문서 작성자는 해당 문서에서 자기가 쓴 부분만의 잘못된 의미 전달만을 고친다라는 의미가 아닌, 문서 조정 역시 같이해서 완전에 가까운 문서 조정을 이끌어야 한다는 생각입니다. 즉, 문서 구조 조정이후 잘못된 문서 조정에서 주제에 따른 타인의 글을 잘못 배치했다면, 해당 글쓴이가 다시 그 배치를 바꿀수 있고, 그런 작업의 공동화로, 해당 토론의 주제를 문서 조정자와 작성자간에 상호 이해와 생각의 공유에 일조 하는것 이지요.[[BR]] 논의의 시발점이 된 문서의 경우 상당히 이른 시점에서 문서 구조조정을 시도한 감이 있습니다. 해당 토론이 최대한 빨리 결론을 지어야 다음 일이 진행할수 있을꺼라고 생각했고, thread상에서 더 커다랗게 생각의 묶음이 만들어 지기 전에 묶어서 이런 상황이 발생한듯 합니다. 그렇다면 해당 작성자가 다시 문서 구조 조정을 해서 자신의 주제를 소분류 해야 한다는 것이지요. 아 그리고 현재 문서 구조조정 역시 마지막에 편집분은 원본을 그대로 남겨 놓은 거였는데, 그것이 또 한번 누가 바꾸어 놓았데요. 역시 기본 페이지를 그냥 남겨 두는 것이 좋은것 같네요.(현재 남겨져 있기는 합니다.) --상민
'문서 조정은 문서 작성자가 손대지 말아야 한다' 라는 어처구니 없는 내용을 어떻게 끌어냈는지 모르겠습니다. 어느 부분에서 도대체 '구조 조정은 구조 조정자의 몫이다'라는 식의 이야기를 했다는지 궁금하군요. 제 이야기는 현재의 잘잘못을 따지고, '문서 구조 조정은 ''누군가 그 일을 할 사람''이 알아서 해라'라는 식의 이야기가 아닙니다. 문서는 누구나가 노력을 해서 고쳐가되, 다만 문서 구조 조정자는(누가됬건 현재 문서를 구조 조정하고 있는 사람은), 자신이 한 결과에 따라 어울리지 않는 글이 될 수 있으므로 해당 문서 구조 조정의 시점에서 더 신경을 써야 한다는 뜻입니다. 물론, 해당글의 작성자가 나중에 발견하고 이를 고칠수도 있지만, 처음 시점부터 좀 더 신경을 쓰는 방법이 효과적이라 생각한 이유입니다. 한번 더 강조하자면, 문서 구조 조정자가 신경을 쓸 필요가 있다라는 이야기가 해당 글의 작성자 자체가 '나는 문서를 구조조정할 필요가 없다'라는 의미는 절대 아님을 이야기합니다. 모로가도 서울만 가면 되지만, 더 편한 방법이 있다면, 그런 방법을 택하는게 자연스러운건 자명한 이치입니다. --이선우
["neocoin"]: 그렇다면 저에게는 지금까지 페이지가 나온 이유 자체가 모호해 집니다. 그럼 말씀하시는 주제가 결국 "문서 구조 조정은 신중히 해야한다." 이것이라고 생각합니다. 이것은 의견이라기 보다 문서 구조 조정시의 기본 명제라 생각하며, 이중에 말씀하신 "문서 구조 조정시에 위치 변경은 글쓴이의 의도의 방향을 바꾼다."라는 것도 문서 구조 조정을 신중히 겠지요. 이런 것은 당연히 동의 합니다. [[BR]] 이것에 반대한다는 말이 없고, 이는 해당 의견의 암묵적 동의라고 생각하고, 잘못된 부분에 대하여 다시 구조조정을 해 주십사 원한 것인데, 다시 대화가 다른 방향으로 전개되어서 "문서 구조 조정자"와 "문서 작성자"로 나뉘어서 접근하시는 말씀인것으로 받아 들였습니다.[[BR]]해당 글처럼 잘못 된 부분의 지적 이후, 고치지 않는다면 다른 이가 해당 문서를 더 고치지 못하는 위화감 이랄까요. 그런것이 발생한다고 생각합니다. 현재 위키에 00들와 01들이 이러한 "조심스러움의 유발 요인" 때문에 활발히 글을 날리는데 방해가 될것이라고 생각합니다. 글을 장려하는 입장에서 글을 계속 올리다 보니, 대화의 주제가 어긋난 것 같습니다. --상민
["혀뉘"] : 위키 사용에 있어서 , 기존의 게시판과 같은 '글' 편집의 독자성,일관성 을 보장받지 못하다보니 이런 토의가 필요하게 된것 같군요. 사실 위키는 이러한 편집의 권리를 많은부분 '공유' 한다는 개념에서 나온것이기 때문에, 이를 너무 의식하면 위키 본래의 기능을 상실할 수 밖에 없을것 같습니다. 이런 일이 생기는 이유가, 그동안 ZP 의 움직임에 대해서 토론할 주제들이 많았기 때문에, 위키를 토론의 목적에 사용해서 그렇지 않았나 싶군요. 누구든지 글을 수정 할 수 있다는 위키의 장점이, '토론' 분야에 적용하면서 단점으로 바뀌게 되었다고 봅니다. '토론' 분야 만큼은 편집의 독자성을 보장 하는것이 어떨까요? 문서의 종류에 따라, 사실에 기초한 문서는 여러사람이 손을 대서 '완전에 가까운 문서' 를 만들어낼 수 있겠지만, '의견' 에 기초한 문서는 여러사람이 손을 대면 댈 수록 본래 의견제시를 했던 사람의 '의견' 은 훼손됩니다. 편집의 독자성이 필요하다고 생각됩니다. 망치로 대패질 할 수는 없는게 아닐까 합니다. 망치를 쓸 곳에 대패를 사용하려면, 대패 몸이 조금 상하겠지만, 휘둘르는 방법으로 못을 박아야지요 :)
위키에서 편집의 권리를 '공유'하고 고쳐나가는 개념이 제대로 적용되는 것은, 위키를 쓰는 사람들이 점점 익혀나가야 할 부분입니다. 토론과 관련된 부분에서 위키의 방식이 단점으로 작용한다고 보지 않습니다. 예를 든다면, KLDP의 토론란을 보면 더더욱. 스레드가 길어질수록 주제와 맞지 않는 글들이나 중간에 일어나는 감정싸움들은 걸러져야 할 것임에도 불구하고 그 자리를 차지하고 있습니다. 스레드가 길어질수록 결국은 논제를 벗어납니다. 위키스타일이라면, 문서구조조정을 통해서 그러한 것을 어느정도 줄여줄 수 있을 것이라 생각됩니다.
- 상협/학문의즐거움 . . . . 12 matches
* 체념한다라... 이것을 어떻게 받아 들여야지.. 난 어떤일을 하기로 마음을 먹으면 몸이 부서지는 한이 있어도 해내야 한다고 생각한다. 깡생깡사. -_-;, 그래서 이 어구는 그냥 그대로 받아 들일수 없고 내 식으로 해석해서 받아 들여야 겠다. 즉.. 체념은 더나은 발전적인 방향을 위한 체념일때만 그 체념을 해야 겠다는 생각이다. 즉.. 자신감 부족이나 의지 부족, 열정 부족 따위로 체념하는것은 말도 안된다고 생각한다. 물론 저자도 그런 의미에서 이렇게 말한거라고 생각한다.
* 이 어구도 여러가지를 생각해보게 만든다. 우리는 아주 가끔 주위에서 꽤 머리가 좋아 보이는 사람을 볼때도 있다. 그럴때면 보통 나는 왜 저렇게 할수 없는 거지 하면서 한탄을 하기도 한다. 그런데 이때 논리적으로 생각을 해보자. 나는 저사람보다 머리가 덜 좋다. 저 사람은 내가 2시간에 할것은 1시간만에 한다. 그런데 나도 저사람만큼 되고 싶다. 그러면 내가 두배의 노력을 하면 되겠네~?.. 간단히 말하면 이런식이다. -_-;; 즉... 사실을 부정하거나 합리화(정말 해서는 안되다 싶은거..합리화는.-_-;) 말고 받아 들인 후에.. 그것을 극복할 현실적이고 구체적인 방법을 생각 하는 것이다.
* 이것은 우리가 평소에 알고는 있어도 많이 저지르는 실수 중에 하나이다. 즉 어떤 일을 자신의 관점에서 바라보면 그일을 자신이 보고 싶은 방향으로 보는 경향이 있는 것이다. 시오노 나나미씨가 ["로마인이야기"]라는 책에서도 그랬듯이 사람은 자신이 보고 싶은 현실을 보는 것이다. 이것을 극복한다면 인생 살이 사는데 도움이 많이 될거 같다. -_-;
* 다른 사람과 비교할 필요는 전혀 없다. 자기 자신의 목표를 가져야 한다.
* 창조적인 일을 하려고 한다면 가설을 세워서 연역하는 사고 방식으로 적극적으로 받아들이도록 권하고 싶다.
* 이책을 난 우리 누나에게 먼저 빌려 주었었다. 근데 우리 누나가 엄청 이책을 씹으면서 이 책의 히로나카씨가 잘난척을 무지 잘한다고 한다. 그리고 뭐 인간 관계도 이해 타산적이라고 막 씹어 댔다. 나도 이책의 저자가 인간관계에 일정한 선을 두어서 한번도 배신을 당한적이 없다고 한 말은 좀 재수 없어 보인다. -_-; 사람이 뭐 로보트도 아니구, 그렇게 살고 싶나.. 차라리 배신을 당한 지언정 사람을 믿으면서 살고 싶다. 이게 내 생각이다. 인간 관계에 관한 말은 우리 누나의 말대로 이사람에게 별로 배울점은 없다. 이 사람의 인간 관계는 자신에게 도움을 줄수 있나 없나의 이해 타산적인 면이 기본 바탕인거 같기 때문이다. 난 그렇게 살고 싶진 않다. -_-;, 그리고 이 사람은 사람을 판단할때 그 사람의 사회적 지위같은것을 아주 아주 중요한걸로 판단하는거 같아서 그것도 좀 재수 없는거 같다. 근데 다른 점에서는 배울 점이 있다. 창조적인 일을 하기 위해서 생각해볼 어구도 꽤 많다. 나름대로 읽을 만한 가치가 있는 책이었다. 우리 프로그래머도 결국 창조적인 일을 하는거니깐 이책을 한번씩 읽어 보면 얻는게 꽤 될것이다.
- 제12회 한국자바개발자 컨퍼런스 후기/유상민의후기 . . . . 12 matches
* 아쉬운점 ~ 요소중 두가지 대해서 핵심에 동의 안한다. 중요한 부분을 잘못 이해하고 말하는것 같다. 혹은 내가 잘못 이해하고 있는거 같다.
* 나는 듣는 내내 발표자 본인이 확신을 가지지 못한다고도 느낀다. 짧은 시간에 너무 많은 내용을 읽어줘버려서 발생하는 문제로 생각한다. 그래도 이렇게 많은 정보를 이야기 하려면, 눈을 반짝이면서 신나게 해야 동조 할까말까 한데.. 너무 방어적으로 남 이야기 하는거 같았다.
보조자라는 표현은 잘못이라고 생각한다. 이 사람이 주제하는 사람에게 회의가 어느 단계로 가고 있는지 알려주고 회의 내역을 기록한다고 하였다. 이건 진행자 롤인데? 왜 보조자가하지? 보조자는 '기록자'에 가까운건데? 상상에 아마 컨설팅했던 본인의 롤이 보조자가 아니었나 싶다. 워크샵 주체인 팀장 옆에서 진행 가이드하고 내용을 본인이 기록한건 아닌가 싶다. 이러면 당연히 '보조자'라는 모호한 용어의 롤이 제일 중요하지.
내가 보기에 실행 자체 데이터나 용어 정의를 잘못하지 않았을까 생각한다.
소프트웨어 진흥원에서 이런식으로 가이드를 한다는 부분이 충격이었다. 컨설팅 후 참여 인원이 지속하기 너무 어렵지 않을까 싶다. 본인이 정립했으므로, 시중에 참고할 만한 관련 서적은 당연히 없고 용어 정의 부터 모호하다. 인상 깊은건 중간에 발표자와 프로그래머의 '행복'에 대한 언급을 많이 하는데.. 난 이거 듣고 많이 우울해 졌다.
큰 의미 없는 내용들 나열시작, 피쳐폰과 WAP 이야기에 10분을 쓰고 있는 중이다. 발표자가 시간 배분 못한다는 느낌을 시작하고 5분만에 받을 수 있었다. 아마 후반에는 Android, iOS, Widow Mobile, Tizen 이 있다로 끝날 것 같다.
* 나 인천에서 사업한다.
* 문화가 부족한 건 업체의 소임이 아니라 개발자가 와서 그렇게 만들어야 한다. 업체가 해줄 수 있는건 한계다.
* 옥상훈 : 이렇게 크게 하는 것 보다는, 먼저 작게 시작해야 한다. 앞서 이야기 했지만 지역 기반의 지속적이고 작은 스터디 모임을 시작하는게 좋다. JCO 처음 시작할때 100~200명 수준으로 아주 작게 시작했다.
* 열린게 중요한거 같다. 방금 업체측에서 말씀하셨는데, 그런 부분이 이해가 부족한 부분인거 같다. 열어야 한다(openness). 예를들어, 블로그 같은것으로 회사의 문화 같은걸 알린다던지 하는 행동이 출발점이 될 수 있을 것 같다.
- 주민등록번호확인하기/조현태 . . . . 12 matches
가게보고 집에왔는데 또 가게보러 가야한다..ㅠ.ㅜ
cout << "주민등록번호를 '-'없이 입력해주세요>>"; //안내문을 출력한다.
int cursur=0; //현재 커서의 위치를 저장한다.
if (47<number && number<58) //입력받은 값이 숫자인지 확인한다.
if (12==cursur)//마지막 값인지를 확인한다.
sum+=input_number[i]; //숫자를 다 더한다.
if ((11-sum%11)%10==number) //올바른 주민번호인지를 확인한다.
else input_number[cursur]=number*(cursur%8+2); //알맞은 값을 곱한 숫자를 저장한다.
}else if (BACK_SPACE==number) //입력받은 값이 백스페이스인지 확인한다.
cout << " \b"; //이전 문자열을 삭제한다.
2007년 대예언. ROR을 한다는 것보다 Erlang을 한다는 것이 더 섹시하게 보일 것이다. (타겟이 상당히 다르긴 하지만) -- 김창준 선배님
- 2dInDirect3d/Chapter1 . . . . 11 matches
3. 디스플레이 모드와 어댑터를 선택한다.
4. IDirect3DDevice8 객체를 만들고 초기화한다.
이것을 만드는 이유는 간단하다. IDirect3DDevice8 객체를 만들기 위해서는 "꼭" 필요하기 때문에 만든다. 이 객체에서는 실질적인 작업보다는 초기화를 도와주는 역할을 주로 한다.
pd3d = Direct3DCreate8( D3D_SDK_VERSION ); // 이렇게 생성한다.
요새는 컴퓨터마다 모두 다른 사양을 갖고 있다. 과연 그 컴퓨터가 어떤것을 지원하는지 호환성을 꼭 체크해야한다.
어댑터에는 모두 번호가 붙어있다. 첫번째 어댑터에는 0, 두번째 어댑터에는 1, 이런 식이다. 0은 기본으로 있기 때문에 매크로로도 만들어져 있다. '''D3DADAPTER_DEFAULT''' 매크로이다. 0번 어댑터를 기본 어댑터라고도 한다.
1. [RET] HRESULT형의 값을 리턴한다. 성공하면 D3D_OK, 실패하면 D3D_INVALIDCALL이 나온다.
만들 수 있는 디바이스의 타입은 세 가지가 있다. (2번째 인자의 값으로 사용한다.)
1. D3DDEVTYPE_HAL : 하드웨어에서 지원하는 기능을 사용한다.
- 2학기파이선스터디/함수 . . . . 11 matches
add란 이름에 할당한다. 즉, 이름 add는 함수 객체의 reference를 갖고 있다.
pass는 아무 일도 하지 않는 통과문(statement)이다. 함수는 최소한 한 개 이상의 문을 가져야 하기 때문에 사용한다.
>>> a = 20 # a는 객체 20을 참조한다.
>>> f(a) # a를 t를 통해 넘겼으므로 t는 a와 동일한 참조를 갖는다. 그리고 t = 10에서 t가 객체 10을 참조한다. 이때 a의 참조는 변함없다.
return문을 사용하지 않아도 None이라는 리턴 값은 존재한다.
함수 외부에서는 전역 변수 h를 참조한다.
함수 f내부의 h를 전역변수로 사용하려면(즉, 전역변수h의 값을 바꾸고자한다면)
global문을 사용하여 h가 전역 변수임을 선언해야 한다.
미리 정의되어 있지 않은 키워드 인수를 받으려면 함수 정의할때 마지막에 **kw형식으로 기술한다.
|| 함수의 이름 || def 다음에 지정된 이름으로 생성한 함수 객체를 치환한다 || 함수 객체만을 생성한다 ||
- 5인용C++스터디/멀티쓰레드 . . . . 11 matches
스레드란 무엇인가? 실제로 말한다면 하나의 작업의 단위를 스레드라고 할수 있습니다. 윈도98는 멀티 테스킹이 가능한 프로그램입니다. 즉 한 번에 여러 작업을 할수 있다는 것입니다. CPU 자체는 한스텝에 한 개의 작업밖에는 하지 못합니다. 그렇다면 어떻게 윈도95는 멀티테스킹이 가능할까요? 바로 시간 분할입니다. CPU의 처리 속도가 1초에 99개의 작업 한다고 가정을 합시다. 그리고 현재 A,B,C 3개의 프로그램이 동작중이라고 예를 들어본다면 1초에 CPU는 A에 해당하는 작업 33개 B에 해당하는작업 33개 C에 해당하는 작업 33개로 나누어서 작업을 합니다.
이렇게 작업을 함으로써 작업을 멀티 테스킹으로 할수 있다라는 의미입니다. 이때 하나의 작업 단위들을 스레드라고 합니다. "그럼 프로그램 내부에 모든 작업은 스레드로 나누어 지겠네요?" 라는 질문이 있을 것 같은데 그렇지는 않습니다. 스레드란 독립적인 작업 단위입니다. 즉 다른것에 구애 받지않는 자체적인 작업 단위를 스레드라고 합니다. 윈도에서 워드 프로세서를 띄우고 대용량의 데이터를 로드하여 프린터로 출력한다고 가정을 합시다. 프린팅 작업 도중에 워드프로세서를 사용할수 있습니까? 물론 윈도 95에서는 프린터는 프린터 대로 작동을 하고 워드 프로세서는 워드 프로세서대로 작업을 할수 있습니다. 여기에 인터넷을 통해서 큰 데이터를 다운 받는다고 가정을 합시다. 프린터하고 원드프로세서로 새로운 내용을 입력하면서 인터넷을 통해서 데이터를 다운 받을수 있습니다? 물론 할수 있습니다. 여기에서 원드프로세서의 입력작업이 하나의 스레드 프린팅 작업이 하나의 스레드 또한 다운 로드가 또하나의 스레드입니다. 실지로 윈도 98의 내부적인 모든 프로그램의 동작은 멀티 스레드로 설정되어 있습니다. 그렇기 때문에 다중 작업을 할수 있는 것입니다.
스레드를 동기화 시키는 것은 상당히 어려운 작업중의 하나입니다. 아주 작은 실수만 하더라도 프로그램은 생각과는 전혀 다른 방향으로 흘러가고 맙니다. 또한 여러개의 스레드를 동시에 디버깅 한다는 것도 쉬운일은 아닙니다. 그러나 다해이도 VC는 기본적으로 동기화가 잘 된 프로그램을 제공합니다. 작은 단위의 일을 하는 중간에 자신의 작업을 다른 스레드로 뺏기는 일이 별로 없다는 이야기입니다. 여기에서는 스레드의 동기화에 대한 맛보기 정도로만 소개합니다.
프로그램이 수행될 때 한 개의 데이터를 동시에 두 개의 프로그램이 핸들링할경우가 있습니다. 예를 들어 (a)라는 파일에 A프로그램은 데이터를 입력,수정하고 B라는 데이터는 데이터를 검색합니다. B가 읽고자 하는 시점에서 A라는 프로그램이 그데이터를 수정하고자 한다면 여기에서 문제가 발생됩니다. A가 수정한 후에 B가 읽게 할것인가? 아니면 B가 읽고 난후에 A라는 데이터가 수정을 하게 할것인가? 이런 문제점은 동시성을 가진 운영체제에서 해결해야할 중요한 항목입니다.
생각하는 것과 식사하는 것, 두 가지 일만 하는 철학자 다섯 명이 있다. 이들 철학자 사이에 하나씩의 스틱이 놓여 있다. 식사 를 하려면 양쪽의 스틱을 모두 가져야만 한다.
만약 모든 철학자가 오른쪽의 스틱을 잡고 있고 왼쪽의 스틱을 기다린다면 문제가 발생한다. 그들은 아무도 왼쪽 스틱을 얻을 수 없으므로 모두 굶어죽게 된다. 물론 철학자들은 모두 사기를 칠 줄 모르며 먹는 양도 모두 같다고 가정한다. 이런 상태를 데 드락이라고 한다. 데드락을 방지하려면 어떻게 해야 할까? 이 애플릿에서는 다섯 개의 스틱 중 하나를 표시하여 표시된 스틱을 잡을 경우 반드시 내려놓고 다른 스틱을 시도하도록 하고 있다. 이렇게 하면 위와 같은 데드락 상황이 발생하기 전에 표시된 스 틱의 왼쪽 철학자는 오른쪽의 표시된 스틱을 내려놓고 왼쪽 스틱을 기다리게 되므로 표시된 스틱의 오른쪽 철학자가 왼쪽 스틱을 얻을 수 있게 된다.
* 프로그램이 로딩되어, 메모리 상에서 실행되고 있는 상태를 프로세스(process) 혹은 태스크(task)라 한다.
반복적으로 동작하는 두 개 이상의 스레드가 하나의 리소스를 공유하려고 할 때, 동시에 리소스에 접근하지 못하도록 하기 위하여 크리티칼 섹션을 사용한다.
- CppStudy_2002_1/과제1/Yggdrasil . . . . 11 matches
int input;//원하는 횟수만큼 호출하기 위해 입력을 받음
//beany의 ct 멤버를 설정한다.
show(testing); //testing 문자열을 한 번 출력한다
show(testing, 3);//testing 문자열을 세 번 출력한다
//함수는 사용자에게 이름과 핸디캡을 요구한다
//이름이 입력되면 1을 리턴하고, 이름이 빈 문자열이면 0을 리턴한다
//golf 구조체를 제공된 이름과 핸디캡으로 설정한다
//함수는 handicap을 새 값으로 초기화한다
//함수는 golf 구조체의 이름을 표시한다
cout<<"\n원하는 핸디를 입력하시오: ";
cout<<"\n원하는 핸디를 입력하시오: ";
- DebuggingSeminar_2005/DebugCRT . . . . 11 matches
|| _CRTDBG_CHECK_ALWAYS_DF || _CrtCheckMemory() 함수를 모든 new, delete 함수에 대해서 자동 호출 되도록 지정한다.[[BR]] 이 함수는 할당된 공간의 유효성을 지속적으로 체크한다. 즉 domainerror나 기타 메모리 access에 관한 부분을 검사한다. 대신 오버헤드가 상당하다. 그러나 그만큼 디버깅의 효율성을 높여줄 수 있다. ||
''_CRTDBG_ALLOC_MEM_DF 는 기본적으로 on, 기타 플래그는 디폴트 off이므로 bitwise 연산자를 이용해서 적절하게 플래그를 설정해야한다.''
//DCRT의 오버헤드가 상당하기 때문에 기본옵션이 꺼져있다고 한다. 따라서 다음과 같이 옵션을 활성화 하는 작업이 필요
MFC에서는 기본적으로 로드하지만 콘솔에서는 사용자가 직접 지정을 해줘야 로드한다.
CRT의 기본 함수들의 출력은 디버그 메시지 윈도우이다. 이를 변경하기위해서는 _CrtSetReportMode()라는 함수를 이용해서 출력에대한 일반 목적지를 지정하고, _CrtSetReportFile()를 이용해서 특별한 스트림 목적지를 설정해야한다.
''crtdbg.h는 ASSERT, ASSERTE라는 메크로 함수를 생성한다. 둘의 차이점은 ASSERTE는 assertion 표현을 보고하고, 다른 것은 하지 않는 다는 것이다.''
|| _CRTDBG_REPORT_MODE || 현재의 리포트 모드를 리턴한다. ||
|| _CRTDBG_REPORT_FILE || 현재의 목적지를 리턴한다. ||
동적 멤버변수를 사용하는 경우에는 대입, 할당 생성자, 소멸자를 반드시 만들어야한다.
- Gof/Visitor . . . . 11 matches
object structure 의 element들에 수행될 operation 을 표현한다. [Visitor]는 해당 operation이 수행되는 element의 [class]에 대한 변화 없이 새로운 operation을 정의할 수 있도록 해준다.
[컴파일러]가 abstact syntax tree로 프로그램을 표현한다고 하자. 컴파일러는 모든 변수들이 정의가 되어있는 지를 검사하는 것과 같은 '정적인 의미' 분석을 위해 abstract syntax tree에 대해 operation을 수행할 필요가 있을 것이다. 컴파일러는 또한 code 변환을 할 필요가 있다. 또한 컴파일러는 type-checking, code optimization, flow analysis 와 해당 변수가 이용되기 전 선언되었는지 등의 여부를 검사하기 위해서 해당 operations들을 수행할 필요가 있다. 더 나아가 우리는 pretty-printing, program restructuring, code instrumentation, 그리고 프로그램의 다양한 기준들에 대한 계산을 하기 위해 abstract syntax tree를 이용할 것이다.
이 다이어그램은 Node class 계층구조의 일부분을 보여준다. 여기서의 문제는 다양한 node class들에 있는 이러한 operation들의 분산은 시스템으로 하여금 이해하기 어렵고, 유지하거나 코드를 바꾸기 힘들게 한다. Node 에 type-checking 코드가 pretty-printing code나 flow analysis code들과 섞여 있는 것은 혼란스럽다. 게다가 새로운 operation을 추가하기 위해서는 일반적으로 이 클래스들을 재컴파일해야 한다. 만일 각각의 새 operation이 독립적으로 추가될 수 있고, 이 node class들이 operation들에 대해 독립적이라면 더욱 좋을 것이다.
우리는 각각의 클래스들로부터 관련된 operation들을 패키징화 하고, traverse 될 (tree 의 각 node들을 이동) abstract syntax tree의 element들에게 인자로 넘겨줄 수 있다. 이를 visitor라고 한다. element가 visitor를 'accepts' 할때 element는 element의 클래스를 인코딩할 visitor에게 request를 보낸다. 이 request 또한 해당 element를 인자로 포함하고 있다. 그러면 visitor는 해당 element에 대한 operation을 수행할 것이다.
예를든다면, visitor를 이용하지 않는 컴파일러는 컴파일러의 abstact syntax tree의 TypeCheck operation을 호출함으로서 type-check 을 수행할 것이다. 각각의 node들은 node들이 가지고 있는 TypeCheck를 호출함으로써 TypeCheck를 구현할 것이다. (앞의 class diagram 참조). 만일 visitor를 이용한다면, TypeCheckingVisior 객체를 만든 뒤, TypeCheckingVisitor 객체를 인자로 넘겨주면서 abstract syntax tree의 Accept operation을 호출할 것이다. 각각의 node들은 visitor를 도로 호출함으로써 Accept를 구현할 것이다 (예를 들어, assignment node의 경우 visitor의 VisitAssignment operation을 호출할 것이고, varible reference는 VisitVaribleReference를 호출할 것이다.) AssignmentNode 클래스의 TypeCheck operation은 이제 TypeCheckingVisitor의 VisitAssignment operation으로 대체될 것이다.
type-checking 의 기능을 넘어 일반적인 visitor를 만들기 위해서는 abstract syntax tree의 모든 visitor들을 위한 abstract parent class인 NodeVisitor가 필요하다. NodeVisitor는 각 node class들에 있는 operation들을 정의해야 한다. 해당 프로그램의 기준 등을 계산하기 원하는 application은 node class 에 application-specific한 코드를 추가할 필요 없이, 그냥 NodeVisitor에 대한 새로운 subclass를 정의하면 된다. VisitorPattern은 해당 Visitor 와 연관된 부분에서 컴파일된 구문들을 위한 operation들을 캡슐화한다.
VisitorPattern으로, 개발자는 두개의 클래스 계층을 정의한다. 하나는 operation이 수행될 element에 대한 계층이고 (Node hierarchy), 하나는 element에 대한 operation들을 정의하는 visitor들이다. (NodeVisitor hierarchy). 개발자는 visitor hierarchy 에 새로운 subclass를 추가함으로서 새 operation을 만들 수 있다.
VisitorPattern은 다음과 같은경우에 이용한다.
- JavaStudy2004/클래스상속 . . . . 11 matches
각 클래스는 상위클래스(superclass)를가지며 하나 이상의 하위클래스(subclass)를 가진다.클래스들의 계층을 따라 내려가는 것을 상속된다고 한다.
자바 클래스를 새로 작성할 때 대부분 다른 클래스가 가지는 정보와 몇 가지의 추가적인 정보를 가지게 할 것이다. 예를 들어 새로운 Button을 만들려고 한다면 클래스에 Button으로부터 상속받을 수 있도록 정의하기만 하면 된다. 따라서 Button과 다른 특징에 대해서만 신경 쓰면 된다.
* 다른 클래스에 공통적인 정보를 추출해서 상위클래스에 넣고 하위클래스에서 다시 사용하도록 한다.
* 한 클래스의 행위를 바꾸면 자동적으로 하위클래스의 행위를 바꾸게 한다. 따라서 재컴파일할 필요가 없다.
메소드도 비슷하게 작동한다.새로운 객체는 상위클래스의 모든 메소드 이름을 액세스한다. 그러나 메소드가 호출될 때마다 동적으로 메소드 정의가 선택된다. 특정 객체에 대한 메소드를 호출하면 자바는 제일 먼저 그객체 클래스의 메소드 정의를 살펴본다. 그 객체 클래스에 정의되지 않았다면 그 메소드 정의를 발견할 때까지 상위클래스를 찾게될 것이다.
만일 하위클래스에서 상위클래스의 메소드의 이름과 인자의 타입을 똑같이 가진 메소드를 정의한다고 하면 어떻게 되는가? 이것은 계층적으로 아래에 있는 것이 먼저 실행되게 되어 있다. 이러한 방식으로 임의로 상의클래스의 메소드를 감추고 하위클래스에 필요한 메소드를 정의할 수 있다. 바로 중복(overriding)이라고 부르는 것이다.
* 공격한다, 홀드한다, 무브한다, 스탑한다(상태를 바꿔줌)
- PC실관리수칙 . . . . 11 matches
1. PC실 정리와 학회실 정리는 학회실을 이용하는 사람들이 하는 것을 기본으로 한다.
3. PC 포맷은 방학내에 진행하여야하고, 진행 후 지도교수님 혹은 담당교수님께 보고서를 제출하여야한다.
4. 대청소는 필요하다고 판단되는 시점에 진행하며, 모든 컴퓨터의 동작여부를 확인하고 바닥 청소까지 병행한다.
1. 정리는 정회원 및 학회실을 이용하는 사람들의 의무로 자발적으로 진행하여야 한다.
2. 정리를 하고 난 후에는 일지에 정리한 내용을 간단히 작성하여야 한다. (보고서 제출시 필요)
3. 정리에는 프린트 토너 및 작동 체크, 의자 정리 및 파손 체크, PC 종료, 캔등의 쓰레기 버리기를 포함한다.
1. 토너가 떨어진 것의 기준은 인쇄 시 중간 부분이 제대로 출력되지 않는 시점부터를 말하며, 흔들어주면 잘 작동하는 경우도 있으나 곧 잉크가 소진되므로 이 경우 개인의 판단하에 교환하도록 한다.
1. 이후에도 동작하지 않는 경우 프린터를 컴퓨터와 분리하였다가 다시 연결해보도록 한다.
2. 이후에도 반응이 없으면 프린트 드라이브를 지웠다 다시 깔고(프린터 연결만 하면 소프트웨어 업데이트를 시킬 수 있다) 재부팅한다.
3. 인쇄물이 남아있어 프린터를 사용하지 못하는 경우, 삭제되지 않으면 프린트를 끄고 몇초 후 다시 켜보는 것을 추천한다. 이후에도 차도가 없다면, 2번 프로세스를 따라가는 것이 좋다.
* 기본적으로 다른 사람의 물건을 버리지 않는 선에서 해결한다.
- PairProgramming . . . . 11 matches
* Pair 중 Expert는 Junior에게 많은 설명을 해줘야 한다? - 이는 Junior 의 Feedback 을 보고 결정하는 것이 좋다. 처음부터 Expert 가 꼭 '선생님'이 될 필요는 없다.
Expert : Junior . 즉, 해당 분야에 대한 전문가 : 초심자 의 문제이다. 이 경우 그 진행이 늦어질 수 있다. (Expert : Expert는 최고의 효율성을 가진다. 물론 이것도 열린 마음을 바탕으로 한다. Junior : Junior 도 나름대로(?) 빨리 움직인다. (제대로 움직인다는 보장은 못한다. -_-;)) 그리고 Expert가 해당 프로그래밍에 대한 답 (코드)을 이미 알고 있는 경우 Expert의 집중도와 긴장감을 해치게 된다.
이 때에는 Expert는 놀지말고 (-_-;) Observer의 역할에 충실한다. Junior 의 플밍하는 부분을 보면서 전체 프로그램 내의 관계와 비교해보거나, '자신이라면 어떻게 해결할까?' 등 문제를 제기해보거나, reference, 관련 소스를 준비해주는 방법이 있다.
또 하나의 문제점으로 제기된 것은, Junior 가 Expert의 권위에 눌릴 수 있다는 것이다. Junior 는 질문에 용감해야 한다. Expert는 답변에 인색해서는 안된다. 열린 마음이 필요한 일이다. (Communication 과 Courge 는 XP 의 덕목이다. ^^)
* 자존심문제? - Pair를 의식해서여서인지 상대적으로 Library Reference나 Tutorial Source 를 잘 안보려고 하는 경향이 있기도 하다. 해당 부분에 대해서 미리 개인적 또는 Pair로 SpikeSolution 단계를 먼저 잡고 가벼운 마음으로 시작해보는 것은 어떨까 한다.
* 협동 - 이번경우는 비교적 협동이 잘 된 경우라고 생각한다. Python 으로 문제를 풀기 위한 프로그래밍을 하는데는 석천이, Idea 와 중간에 데이터 편집을 하는데에는 정규표현식을 잘 이용하는 상민이가 큰 도움을 주었다. 적절한 때에 적절하게 주도하는 사람이 전환되었던 것으로 기억.
넷미팅, VNC 등의 개발 프로그램을 공유할 수 있는 프로그램과 음성채팅 등으로 Virtual PairProgramming을 할 수 있다. (오.. 좋아진 세상~) 단,PairProgramming 에 비해 아쉬운점들이 있다. (관련 책들을 찾아서 보여주지 못한다는 것 등등) 나중에는 PC카메라와 스캐너 등등 이용할 수 있지 않을까. ^^
나는 .NET의 System.Data의 구조를 보고 즉시 PHP에 적용시키고 싶어졌다. ASP.NET에는 SqlConnection , OdbcConnection , OleDbConnection을 제공해 준다. 이 클래스들을 잘 사용하면 DataTier의 종류가 바뀌어도 코드의 수정을 최소화 시킬 수 있다. PHP는 여러가지 종류의 데이타베이스 관련함수를 제공해준다. 어떠한 데이타베이스를 사용하느냐에 따라 동일한 기능을 하는 다른 이름의 함수를 호출해야만 한다.
나는 일차적으로 switch코드를 없앨 수 있다는 점을 설명했다. 우리는 Connection클래스가 그다지 크게 바뀌지 않을 것이라는 것에 대해 동의했었고 이 점을 근거로 switch를 사용하는 것이 유지보수를 힘들게 하는가에 대해 질문했다. 솔직히 이정도 코드라면 누구나 수정할 수 있을 것이라고 생각한다. 그리고 그렇게 많은 시간을 필요로 하는 작업도 아니라고 생각한다. 파트너는 Connection을 생성하는 부분을 include 화일로 관리하고 그곳에 한번만 define문을 작성하면 문제가 없다고 주장했다.
- PascalTriangle . . . . 11 matches
// 원하는 값 리턴(역시 배열은 0부터 시작하므로 하나씩 빼서)
/* buffer에 행만큼의 정수포인터형을 할당받아 대입 */
/* 각각의 정수 포인터에 정수 배열을 할당한다 */
/* 종료한다 */
/* 열이 1이거나 행과 열이 같은 경우, 1을 대입 한다 */
전 행(i - 1) 동 열(j) 의 값을 더해서 대입한다 */
/* 계산한 결과값을 임시변수에 저장한다 */
/* 정수 포인터 배열을 반환한다 */
// 2개의 배열을 사용하여 계산을 한다
// 계속 이와같은 식으로 n행 까지 계산한다
row[0][0]=row[0][1]=1; // 2행을 저장한다
- XMLStudy_2002/XML+CSS . . . . 11 matches
*이렇게 네임스페이스를 지정해 주어야한다.
있도록 지원한다.
<PA>XML문서를 원하는 스타일로 보기 위해서는, 실제 옷이 되는
기술해 주어야 한다. 브라우저는 XML 문서를 읽어들이면서, 스타일시트가 지정되어
<PA>만약 XSL로 기술된 스타일시트를 사용하고자 한다면, 다음과 같이하여 사용한다.</PA>
스타일에 따라 해당 XML 문서를 볼 수 있도록 지원한다.</PA>
<LCOMPO>(1) XML 문서 브라우징을 지원하는 IE5.0을 설치한다.</LCOMPO>
<LCOMPO>(2) XML 문서를 작성한다.</LCOMPO>
<PA>DTD를 보고, 사용되는 엘리먼트들에 대해서 스타일을 지정해 둔다. 만약 DTD를 사용하지 않는 문서라면, 직접 문서내용을 보고 문서 내에서 사용되는 엘리먼트들을 찾아봐야 한다.
- ZeroPage_200_OK/note . . . . 11 matches
* uploder에게 리소스를 올릴때 사용 주로 새글을 쓸때 많이 사용한다.
* 3. 실행문맥을 instance로 한 생성자를 호출한다.
* 단지 함수는 다른 인스턴스에 존재한다.
* javascript에서는 실행시간에 프로토타입 체인에 의해 실행한다.
* 다른 도메인에 접근하기 위해 동일 도메인 서버에 다른 페이지의 결과를 그대로 읽어와 내려주는 proxy를 설치한다.
* Same origin policy를 적용받지 않고 자바스크립트를 불러올수 있으나 바로 실행이 되므로 다른 방식을 써야한다.
* 따라서 callback함수로 해결한다.
* Unix에서 File이라함은 다음을 모두 의미한다.
* 표준은 RFC3875이며 IETF에서 관리한다.
* 다만 모듈이 Thread안전해야 한다.
더이상의자세한설명은생략한다.
- django/RetrievingObject . . . . 11 matches
데이터베이스에서 레코드를 조회할 때는 Model클래스를 관리하는 Manager클래스를 이용한다. 가장 간단하게는 모든 레코드를 가져오는 방법이 있는데, 모델마다 기본적으로 제공되는 object라는 매니저를 이용한다. object 매니저로 레코드를 조회하면 QuerySet이 반환된다. 이는 관계형 데이터베이스 CLI인 JDBC의 ResultSet과 유사하다.
한 모델에 대해서는 여러 가지 필터를 설치할 수 있다. 필터는 SQL문에서 where절에 해당하는 역할을 한다. 필터에는 검색하는 컬럼의 완전 일치, 부분 일치, 사이 값, 포함, 연월일 옵션을 줄 수 있다. 기본적으로 필터는 AND 조합으로 이루어지며, OR조합을 사용하고 싶다면 Q라는 쿼리 오브젝트를 사용해야 한다.[9] 아래는 필터를 이용해 보고 날짜가2006년 10월 1일 이후인 위험 보고서를 찾는 python코드와 그에 해당하는 SQL문을 보여준다.
일대다 관계인 레코드의 경우는 selete_related메소드를 이용하면 데이터베이스 접근 횟수를 줄일 수 있다. 일반적인 데이터베이스 조회는 추상화되어있어 실행할 때마다 쿼리를 수행한다. 하지만 selete_related메소드를 사용하면 한 번 데이터베이스에서 결과를 가져온 후 필요할 때는 이를 그대로 사용한다. 다음 예제에서 두 방식이 어떻게 다른지 확인할 수 있다.
사용자는 원하는 경우 extra메서드를 이용해 원하는 컬럼을 추가한 결과를 얻을 수 있다. 다음은 2006년 1월 1일 이후 보고서를 최신으로 표시하는 컬럼을 가진 리포트 정보를 가져온다.
사용자는 values함수를 이용해서 원하는 속성을 지정할 수 있다. 이는 검색 조건을 만족하는 레코드의 필요한 속성만을 이용하므로 효율적이다. 또한 values함수는 QuerySet을 상속한 ValuesQuerySet을 리턴하므로 다시 위에서 사용한 검색 조건을 사용할 수 있다. 하지만 ValuesQuerySet은 사전형(dictionary) 자료구조를 가지고 있기 때문에, 많은 수의 레코드를 얻어오기에는 부적절하다. 다음은 사원 정보에서 이메일 속성만을 얻어온다.
Django에서 기본적으로 제공하는 조인 연산은 없다. SQL문을 직접 수행하여 원하는 결과를 얻을 수 있다. 이는 JDBC의 인터페이스와 비슷하며, 커서를 이용하여 질의를 수행한 결과를 하나씩 얻어오는 방식을 사용한다. 다음은 특정 부서 에서 시행한 위험 관리 대책을 얻어오는 함수이다.
- html5/canvas . . . . 11 matches
* canvas위에 그림을 그리려면 Javascript로 그리기 컨텍스트를 생성해야한다.
* 그리기 컨텍스트는 그래픽을 그리는 데 도움이 되는 메서드를 제공한다.
* 패스를 선으로 표현한다.
* 선의 스타일은 strokeStyle 속성으로 지정한다.
* 내부 스타일은 fillStyle 속성으로 지정한다.
* 패스의 내부를 클리핑 영역으로 지정한다.
* stroke(), strokeRect() 등을 이용하여 그린 선의 색이나 스타일을 지정한다.
* fill(), fillRect() 등을 이용하여 그린 선의 색이나 스타일을 지정한다.
* 그리기 컨텍스트의 상태를 저장한다.
* 그리기 컨텍스트의 상태를 복원한다.
* 이미지의 인코딩 방법을 MIME 타입으로 지정한다.
- 논문번역/2012년스터디/서민관 . . . . 11 matches
off-line 필기 인식을 위한 시스템을 소개한다.
우리가 사용할 데이터베이스에 대해서는 섹션 3에서 소개한다.
따라서 이진화 된 이미지의 수평 농도의 히스토그램이 최저의 무질서도를 가질 때까지 이미지를 회전시켜야 한다.
텍스트에 추가적인 처리를 하기 위해서는 각각의 필기 라인들을 추출해야 한다.
다양한 필기 스타일이나 작성자 차이 때문에 인식 작업을 간단하게 하기 위해서는 필기들이 정규화 되어야 한다.
추가적인 정규화는 필기의 크기와 그레이 레벨의 강도도 중시한다.
축척 인자(scaling factor)는 선형적으로 이 관계에 기반한다. 이는 이 관계가 클수록 필기 스타일이 좁아지기 때문이다.
이 scatter matrix들은 각 특징 벡터가 HMM상태로 분류되고 우리는 처음에 훈련 데이터의 상태에 기반한 정렬에 따라서 일반 훈련을 수행해야 한다. (...........................)
이것은 기준선 시스템과 반대로 HMMs가 사로 다른 문자의 하위 항목을 모델링하기 위해서 사용된다는 것을 뜻한다.
일치 확률은 특정 모델의 매개변수가 현재 샘플에 얼마나 영향을 받았는지를 결정한다.
이 작업을 위해서 LDA(수축된 차원수 12)를 이용한 14.2%의 오류율을 가진 문자들이 얻어졌다. 에러율은 allograph 모델(각 소문자마다 6개의 allograph)을 이용하는 것으로 13.3%까지 감소한다.
- 새싹교실/2013/양반/3회차 . . . . 11 matches
조건식이 참이면 문장 1을 실행하고, 거짓이면 문장 2를 실행한다.
if문 내에 if문을 또 사용할 수도 있다. 중첩된 if문이라고 한다.(nested if)
switch문 - 다중 선택 방법을 제공한다.(정수 값에 따라 여러 경로 중에서 한 경로를 선택할 수 있다.)
(1) 수식의 값을 계산한다.
(2) 수식의 값이 각 case의 상수 값과 같은지 차례대로 검사한다.
(3) 일치된 case값이 있으면 그 case 절의 문장들을 실행한다.
(3.2) 그렇지 않은 경우에는 다음 case 절의 문장들을 실행한다.
(4) 일치된 case 값이 없으면 default 절의 문장들을 실행한다.
조건이 루프의 끝에 위치하므로, 루프 본체를 먼저 실행하고, 조건을 검사하여 그 값이 참인 동안 반복한다.
수식 1 - 초기화를 위한 수식/ 루프를 시작하기 전에 실행한다.
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 우리가나아갈방향 . . . . 11 matches
홈 브루 컴퓨터 클럽을 그 대상으로 한다면 참 좋은것 같다. 우리의 정모가 해당 모임이 될수 있을 것이고, 과거에도 그렇게 하려고 노력했것만, 호응도가 낮았다고 생각한다. 뭐 하지만 계속 바위에 계란을 던지다 보면 언젠가 이끼라도 끼지 않을까. 할수있는 최상은 제자리에서 열심히 --상민
또 한가지는 복학생의 수용을 어떻게든 이루었으면 좋겠다는 생각을 한다. 어때 석천 올해 홍보라도 할까? --상민
''DeleteMe) 오해의 소지가 있게 쓰긴 했네요. 본래의 의도는 (01들은 내가 한 이야기를 들어서 알겠지만) 스터디를 할때, 책을 미리 읽고 난 뒤의 생각이나 프로그래밍을 했을때의 경험들을 들고 올 생각을 하지 않고, 모이고 난 뒤에 그제서야 책을 읽을 생각을 한다는 점을 지적하고 싶었습니다. 모임자체를 하나의 시스템으로 보고 공부하지 않은 자신을 시스템으로 억지로 묶어보려고 하는 모습같아서.. 그 점을 지적하고 싶었습니다. 같이 공부했을때의 효율이 혼자서 할때보다 높기 위해서는 (장점을 가질 수 있으려면) 사전에 공부하려는 해당 부분에 대한 의미를 조금이라도 파악해두어야 한다고 생각합니다. --석천''
돌이켜보면 제가 말한 두가지는 이미 여러차례 논의되어 왔던 것이지만, 실제로 옮겨지기까지는 많은 회원들의 노력이 필요한 부분입니다. 10년이면 강산도 변한다는 말이 있듯이 이제 제로페이지는 예전의 그늘에서 벗어나 우리만의 새로운 모습으로 바꿔가는 의지가 절실해지는 때입니다. 이 행사를 준비하기 위해 밤낮으로 고생한 후배님들깨 감사를 전하며 제로페이지가 항상 신선한 모습으로 우리 곁에 남아있기를 진심으로 바랍니다.
하지만 개인 경쟁력 강화와 경력 관리라는 측면까지 고려해서 제로페이지 활동을 한다면, 지금보다 더 많은 가치를 얻을 수 있을 것 같습니다. 특히 게임이나 유틸리티 같이 쓸 목적으로 프로그램을 만드는 프로젝트를 한다면, 프로젝트 하나하나가 자신의 경력을 쌓을 수 있는 기회라는 생각도 해보면 좋겠습니다.
연락망을 만드려면 연락처를 구하는 일이 가장 먼저 이루어져야 한다고 생각합니다. 현재 제로페이지 회원 연락망이 회장단에게 물려져 내려오고 있지만 연락처가 부정확한 경우가 상당수 있습니다. 연락이 가능한 회부터 시작하여 꼬리에 꼬리를 물고 연락처를 구해나갈 수 있을 것입니다. 그 다음으로 현재 활동하지 않는 회원들에게도 가치를 돌려줄 수 있는 정보 공유의 장이 마련되어야 하리라 봅니다. 무조건 도움을 받기만을 바라고 이러한 인맥을 만든다면 그다지 많은 호응을 얻어낼 수도 없을 것이기 때문입니다.
윗 글에서 ''게임이나 유틸리티 같이 쓸 목적으로 프로그램을 만드는 프로젝트''를 해야 한다는 말에 공감합니다. 실제로 저런 프로젝트를 하면서 프로그래밍 하는 재미를 느끼게 됩니다. 먼저 2학년 이상인 ZP 회원들부터 저런 프로젝트를 하는 모습을 후배들에게 보여줘야 한다고 생각합니다. -[상협]
- 이학 . . . . 11 matches
나는 그런 유학생들과 이야기하는 가운데 여러가지 이학(耳學)을 할 수 있었다. 이 점에서 내가 유학한 것은 정말로 잘한 일이라고 생각한다.
일반적으로 미국에서는 이학이 발달되어 있는데, 그 이유로는 미국이란 나라가 높은 봉급으로 교수를 고용하기 때문에 여러 나라에서 우수한 인재들이 모여 있다는 점을 빼놓을 수 없다. 이학이라는 것은 책에서 배우는 것이 아니라 직접 사람과 접하면서 그 사람이 갖고 있는 지식이나 사고 방식을 배우는 거을 말한다. 따라서 우수한 인재가 모여 있다는 것은 그만큼 '이학'이 발달될 소지도 크다는 것이다.
일류 대학의 학생이라면, 이 이학만으로 단기간 내에 상당한 수준까지 배울 수가 있다. 가령, 3,4백 페이지 분량의 책에 씌어진 내용을 배우려고 할 때, 학생은 교수에게 가서 "이 책에는 무엇이 씌여져 있습니까?" 라고 일본의 대학에서는 상상도 할 수 없는 질문을 한다. 다소 유치하고 대략적인 질문이지만, 질문받은 교수는 그에 대해서 학생에게 열심히 설명한다. 그러면 그 설명에 대해서 또 질문하고, 그것을 몇 시간에 걸쳐서 되풀이하는 동안에 학생은 그 책의 요점을 파악해 버린다. 두꺼운 책을 몇 페이지 읽다가 이해하지 못해 포기하는 것보다 질문을 하는 것이 결과적으로 좋은 효과를 내는 셈이다. 물론 상세한 부분은 스스로 읽어야 되겠지만, 대체적인 요점이나 골격을 파악하면 책에 대한 이해는 훨씬 빠르다.
학생과의 관계에서 자주 경험하는 일인데, 일본 학생은 'why' 라든가 'how'라고 질문하는 경우가 매우 많다. 말할것도 없이 'why'라는 것은 '왜'라는 것인데, 이것은 '진리(眞理)'를 물어 보고 있는 것이다. 이에 반해 미국 학생은 'what'이라는 형태의 질문을 많이 한다. "그것은 도대체 무엇이냐?" 라는 식으로 물어본다. 이것은 '사실(事實)'을 묻는 것이다.
'이학'은 단순히 학문에서뿐만 아니라 여러 방면에서 이용된다. 예를 들어 일본에 대해서 알고 싶어하는 미국 사람은 일본에 관해서 쓴 책을 읽기 보다 우선 주변의 일본 사람에게 자꾸 질문한다. 나도 주변의 미국사람에게서 일본에 대한 여러 가지 질문을 받은 적이 있다. 질문을 받으면 대답해야 한다. 대답해 주지 않으면 자기도 상대방에게 그와 비슷한 질문을 할 수 없기 때문이다.
어떻게 대답하면 좋은가? 일본이란 어떤 나라인가, 일본인이란 어떤 성격을 가진 국민인가? 자기 스스로도 생각해 보고 책을 읽고 배워야 한다. 가르치기 위해서는 배워야 한다. 바꾸어 말하면 배우기 위한 방법의 하나는 남에게 가르치는 것이다.
정말 흥미로운 내용이네요. 전국투어팀은 선배님들을 찾아가서 학문에 대한 내용에만 국한되지않은 훌륭한 ["이학"]을 하고 있겠죠? 대학 시절에 ["이학"]을 통해서 빨리 배울 수 있는 분위기가 만들어졌으면 좋겠어요. 전공에 관련한다면 위키위키가 그 대안이 될 수 있을까요?
또하나 문득 떠오르던 모 학회의 제 친구의 글. '우리가 모이면 꼭 항상 컴퓨터에 관해서만 이야기해야 한다는 강박관념에 빠져 있을까..'
- 졸업논문/본론 . . . . 11 matches
관계형 데이터베이스는 관계형 모델에 따라 논리적으로 연관이 있는 데이터를 모아놓은 것이다. 관계란 n-tuple이 한 줄 씩 배열된 것으로, 줄이 배열된 순서는 관계없고, 모든 줄은 구별할 수 있어야 한다.[11] 데이터베이스 관리 시스템(DBMS)는 데이터베이스를 구성, 변경, 조회하는 프로그램을 모아 놓은 것이다.[12] 현재까지 관계형 DBMS가 많이 쓰이고 있는데, 이는 관계를 테이블로 나타내고 키를 이용해 정보를 연결하는 특징을 가진다.[11] SQL은 관계형 데이터베이스의 데이터를 생성,조회,변경하는 언어로 ANSI/ISO표준이다.[13] SQL을 이용하면 데이터베이스 테이블 생성에서부터 데이터 추가, 삭제, 변경, 조회는 물론이고 여러 건에 대한 트랜잭션처리까지 가능하다.
웹 애플리케이션 개발자가 가장 많이 쓰는 기능은 SQL을 이용하여 데이터베이스 내용을 삽입, 삭제, 수정, 조회하는 것이다. 그 중에도 데이터를 조회하는 SQL문은 다양한 구조를 가진다. 기본 구조는 select from 이다. 여기서 from절에 테이블이 여러 번 나오는 경우 조인 연산을 수행한다. 조인 연산은 다른 테이블 또는 같은 테이블끼리 가능하다. select from where문을 사용하면 where절에 있는 조건을 만족하는 데이터만 조회한다. aggregate function을 사용하면 원하는 결과를 좀더 쉽게 얻을 수 있다. 이에는 개수(count), 합계(sum), 최소(min), 최대(max), 평균(avg)이 있다. aggregate function에 group by문을 사용하면 그룹 단위로 결과를 얻는다. group by절에는 having을 이용해 조건을 제한할 수 있다. 또한 순서를 지정하는 order by문과 집합 연산인 union, intersect, except 등이 있다. where절 이하에 다시 SQL문이 나타나는 경우를 중첩질의라고 한다. 중첩 질의를 사용할 때는 특별히 (not) exist, (not) unique와 같은 구문을 사용할 수 있다.
데이터를 삽입,삭제,변경할 때는 조회하는 SQL에 비해 하면 단순하다. 삽입에는 insert into value 구문을, 삭제는 delete from where구문을, 변경은 update set where구문을 사용한다. 삭제와 변경시에는 중첩 질의를 사용할 수 있다.
Django는 오픈 소스 프로젝트로 code.djangoproject.com/browser/django 에서 전체 소스코드를 확인할 수 있다. 문서에 따르면 django 데이터베이스 API는 "SQL문을 효율적으로 사용하고, 필요할 때는 알아서 join연산을 수행하는 강력한 구문을 가졌으며, 사용자가 필요할 경우 직접 SQL문을 작성할 수 있도록 지원"[5]한다. 추상화된 구문을 사용하더라도 데이터는 관계형 데이터베이스에 저장하게 되는데, MS SQL, MySQL, Oracle, PostgreSQL, SQLite3와 같은 DBMS를 사용할 수 있다.
Django의 설계 철학은 한 마디로 DRY(Don't Repeat Yourself)이다. 확연히 구분할 수있는 데이터는 분리하고, 그렇지 않은 경우 중복을 줄이고 일반화한다. 데이터 뿐 아니라 개발에 있어서도 웹 프로그래밍 전반부와 후반부를 두 번 작업하지 않는다. 즉 웹 애플리케이션 개발자는 SQL을 사용하는 방식이 도메인 언어에 제공하는 프레임워크에 숨어 보이지 않기 때문에 프로그램을 동적으로 쉽게 바뀔 수록 빠르게 개발할 수 있다. 또한 후반부 데이터 모델이 바뀌면 프레임워크에서 전반부에 사용자에게 보이는 부분을 자동으로 바꾸어준다. 이러한 설계 철학을 바탕으로 기민하게 웹 애플리케이션을 개발할 수 있다.
기본적으로 지원 되는 레코드 삽입, 삭제, 변경은 자동으로 사용자 화면까지 만들어주는 장점을 가진다. 대부분 웹 애플리케이션이 레코드를 한 건씩 입력하는 인터페이스를 가지기 때문에, 개발 전반부에 걸친 데이터 삽입, 삭제, 변경을 자동화할수 있기 때문이다. 특히 삽입, 변경은 저장이란 단일 개념으로 보고 save메소드로 추상화하였다. 또한 삭제는 관련된 레코드를 함께 지워주는 기능까지 제공한다. 이러한 기능은 Model클래스에 정의된 데이터 타입에 따라 자동으로 이루어진다. 따라서 삽입, 삭제, 변경 SQL문을 실행하는 인터페이스에 많은 노력을 기울이지 않고 기민하게 전체 시스템을 설계함에 집중할 수 있다.
레코드를 검색할 때는 기본적으로 간단한 질의를 처리할 수 있는 함수들을 제공한다. 앞서 살펴본 바와 같이 직접 관계를 가지는 테이블 사이에 조인 연산은 Model클래스의 메소드를 이용해서 추상화되어 있다. 하지만 그 밖인 경우에는 직접 SQL문을 작성하여 데이터를 얻어와야 하기 때문에 django를 사용하더라도 큰 이점이 없다. 또한 추상화된 Model클래스의 메소드는 기본적으로 모든 레코드 속성을 읽어오기 때문에 시간, 공간 측면에서 비효율적일 수 있다. 마지막으로 SQL의 aggregate function등을 대부분 추상화하지 않았기 때문에, 이 역시 SQL문을 작성해야 하는 번거로움이 있다.
다행히 django에서는 CLI와 마찬가지로 직접 SQL문장을 수행할 수 있는 인터페이스를 제공한다. 또한 도메인 언어인 python을 이용하면 CLI를 이용해 데이터베이스와 연동할 수도 있다. 종합적으로 기능적으로 지원이 불가능한 면은 없지만, 검색 측면에서 좀더 많은 추상화가 필요하다고 평가할 수 있다.
- 지금그때2006/여섯색깔모자20060317 . . . . 11 matches
노랑: 금요일 7시에 모두 동의한다.
노랑: 4.7에 모두 동의한다.
노랑: 나머지 강의실 중에 하나를 빌리는 것에 모두 동의한다.
파랑: 강의실 빌리는 책임은 역할을 정할 때 맡기도록 한다.
파랑: 그럼 노란모자를 쓰고 각 목적에 대해 동의를 구한다.
노랑: 생각의 트임에 전원 동의한다.
파랑: 나머지 의견은 다른 곳에 반영하도록 한다.
초록: 크게 누가, 어떻게, 누구에게 할 지 정해야 한다. 책임은 다같이, 일부는 제외하고, 06포함, 특정개인이 맡을 수 있다. 방법으로 재학생 대상으로 A4, 강의실, 동문네트워크, 입소문이 있으며, 나머지 대상으로 전화, 이메일, 문자, 제 3자에게 전달이 있다. 또한 단계적으로 몇 차례 나눠서, 돌아가면서, 남여교차, 학번교차하는 방법이 있다. 대상은 제로페이지 선배, 졸업앨범 명단, 교수님, 다른 학회 선배가 있다.
초록: A4는 수생이가 눈에 띄게(컬러도 가능) 만들어 붙인다. 강의실은 일부 제외하고 저학번이 주도하여 홍보한다. 동문네트워크에는 학번교차로 올린다. 입소문은 기준없이 개인이 알아서 한다. 이메일을 보낸 후 답장 받으면 전화하고 행사 전에 다시 문자를 보낸다.
파랑: 홍보 대상 부터는 다음 모임에서 정한다.
- 프로그램내에서의주석 . . . . 11 matches
자바 IDE들이 Source Folding 이 지원하거나 comment 와 관련한 기능을 지원한다면 해결될듯. JavaDoc 은 API군이나 Framework Library의 경우 MSDN의 역할을 해주니까. --석천
좌절이다. 일단 자네 의견에 동의 정도가 아니라 같은 의도의 말이었다. 위의 자네 말에 대한 내가 의미를 불확실하게 전달한거 같아서 세단락 정도 쓴거 같은데.. 휴 일단 다시 짧게 줄이자면, "프로그래머의 낙서의 표준"인 UML과 {{{~cpp JavaDoc}}}의 출발은 아예 다르다. 자네가 바란건 디자인 단위로 프로그래밍을 이해하길 원한거 같은데, 그것을 {{{~cpp JavaDoc}}}에서 말해주는건 불가능하다고 생각한다. Sun에서 msdn에 대응하기 위해(?) {{{~cpp JavaDoc}}}이 태어난것 같은데 말이다. [[BR]]
하지만, "확실히 설명할때 {{{~cpp JavaDoc}}}뽑아서 그거가지고 설명하는게 편하긴 편하더라."라고 한말 풀어쓰는 건데, 만약 디자인 이해 후에 코드의 이해라면 {{{~cpp JavaDoc}}} 없고 소스만으로 이해는 너무 어렵다.(최소한 나에게는 그랬다.) 일단 코드 분석시 {{{~cpp JavaDoc}}}이 나올 정도라면, "긴장 완화"의 효과로 먹고 들어 간다. 그리고 우리가 코드를 읽는 시점은 jdk를 쓸때 {{{~cpp JavaDoc}}}을 보지 소스를 보지는 않는 것처럼, 해당 메소드가 library처럼 느껴지지 않을까? 그것이 메소드의 이름이나 필드의 이름만으로 완벽한 표현은 불가능하다고 생각한다. 완벽히 표현했다면 너무나 심한 세분화가 아닐까? 전에 정말 난해한 소스를 분석한 적이 있다. 그때도 가끔 보이는 실낱같은 주석들이 너무나 도움이 된것이 기억난다. 우리가 제출한 Report를 대학원 생들이 분석할때 역시 마찬가지 일것이다. 이건 궁극의 Refactoring문제가 아니다. 프로그래밍 언어가 그 셰익스피어 언어와 같았으면 하기도 하는 생각을 해본다. 생각의 언어를 프로그래밍 언어 대입할수만 있다면야.. --["상민"]
난해한 코드일수록 주석이 필요한 것일것이고 (또는 그 반대로 쉽게 알아볼 수 있도록 짤 방법을 강구해야 한다면 억지쓰는 것이려나.) 개인적으로 읽어본 가장 긴 낯선 코드가 3000~4000 라인을 못넘어 본 관계로 아직은 '정리' 단계로만 끝날 것 같다. CVS 의 history 가 코드 진화과정을 따라가는데 도움을 줄것이라고 생각했지만, 아직은 먼 이야기일듯.
그리고, JDK 와 Application 의 소스는 그 성격이 다르다고 생각해서. JDK 의 소스 분석이란 JDK의 클래스들을 읽고 그 interface를 적극적으로 이용하기 위해 하는 것이기에 JavaDoc 의 위력은 절대적이다. 하지만, Application 의 소스 분석이라 한다면 실질적인 implementation 을 볼것이라 생각하거든. 어떤 것이 'Information' 이냐에 대해서 바라보는 관점의 차이가 있겠지. 해당 메소드가 library처럼 느껴질때는 해당 코드가 일종의 아키텍쳐적인 부분이 될 때가 아닐까. 즉, Server/Client 에서의 Socket Connection 부분이라던지, DB 에서의 DB Connection 을 얻어오는 부분은 다른 코드들이 쌓아 올라가는게 기반이 되는 부분이니까. Application 영역이 되는 부분과 library 영역이 되는 부분이 구분되려면 또 쉽진 않겠지만.
이번기회에 comment, document, source code 에 대해서 제대로 생각해볼 수 있을듯 (프로그램을 어떻게 분석할 것인가 라던지 Reverse Engineering Tool들을 이용하는 방법을 궁리한다던지 등등) 그리고 후배들과의 코드에 대한 대화는 익숙한 comment 로 대화하는게 낫겠다. DesignPatterns 가 한서도 나온다고 하며 또하나의 기술장벽이 내려간다고 하더라도, 접해보지 않은 사람에겐 또하나의 외국어일것이니. 그리고 영어가 모국어가 아닌 이상. 뭐. (암튼 오늘 내일 되는대로 Documentation 마저 남기겠음. 글쓰는 도중 치열하게 Documentation을 진행하지도 않은 사람이 말만 앞섰다란 생각이 그치질 않는지라. 물론 작업중 Doc 이 아닌 작업 후 Doc 라는 점에서 점수 깎인다는 점은 인지중;) --석천
주석이 실행될 수 있는 코드가 아니기 때문에, 반드시 코드가 주석대로 수행된다고 볼 수는 없지만 없는것 보다는 낳은 경우도 많다. 코드 자체는 언어의 subset 이기 때문에 아무리 ''코드가 이야기한다(code tells)''라 할지라도 우리가 쓰는 언어의 이해도에 미치기가 어렵다. 이는 마치, 어떤 일을 함에 있어서 메뉴얼이 존재함에도 불구하고 경험자에게 이야기를 듣고 메뉴얼을 볼 경우, 그 이해가 쉽고 빠르게 되는것과 비슷하다.
// 자살한다.
// 입양을 갈때, 자식들은 항상 데리고 다니지만, 부모나 형제와는 떨어지는 것을 원칙으로 한다.
// 새식구를 받을때, 먼저 부모 자식간의 관계를 정립한 다음, 형제간의 서열을 정립한다.
// brother는 반드시 NULL이거나 this의 child node이어야 한다.
- BasicJava2005/5주차 . . . . 10 matches
- abs() : 절대값을 구한다.
- sqrt() : 제곱근을 구한다.
- max(), min() : 최대/최소값을 구한다.
- round() : 반올림한다.
- pow() : 제곱한다.
- parseXXX : String을 각 형태로 변환한다.
- toString : 지정한 숫자를 문자열 형태로 반환한다.
- try ~ catch 구문을 실행후 무조건 finally문장을 실행한다.
throws : 이 함수에서는 예외처리 하고 싶지 않을때 사용한다.
throw : 임의로 예외를 발생시키고자 할 때 사용한다.
- CleanCode . . . . 10 matches
* 코드를 깨끗하게 하고 싶으면 테스트 코드도 깨끗하게 유지해야 한다. 테스트 코드가 더러워지면 테스트를 잘 안하게 되니까 코드도 더러워지게 된다.
* 함수는 하나의 일을 하는게 좋다고 하는데 플래그를 쓴다는 것은 함수가 플래그의 값에 따라서 다른 값을 한다고 말하는 것이므로.
* F : 스터디중에 어떻게 진행해야 하나에 대한 얘기를 너무 많이 한다.
* id, password와 success, fail은 관계가 별로 없는데 같이 묶어서 넘기면 나중에 login 내에서 각각의 파트를 또 뽑아내야 한다.
* 예를들면 입력이 들어왔을 때 A라는 출력이 나와야 한다고만 spec에 정의돼있으면 입력이 없을 때에 대한 테스트 코드는 무슨 기준으로 작성하느냐 또는 에러처리를 해야 하는가에 대한 기준을 말하는것 같습니다. - [서영주]
* 실제 일하는데서는 어떤가요? 이런 부분에 대한 요구사항이 없을 경우에는 어떤식으로 처리를 하는지가 궁금합니다. 먼저 처리하고 어떻게 처리했다고 따로 보고하나요? 아니면 없으니까 이런걸 정의해줘야 한다고 건의를 하고 대답이 오면 그 때 처리를 하나요? - [서영주]
* 작은 부분을 보았을 때는 나타나지 않는 특성이 전체를 보았을 때는 나타나는 경우를 말한다.
* 자바스크립트에서 지원하는 apply 함수와 arguments로 함수의 인자값을 받아올 수 있는 것을 이용해 외부의 라이브러리 사용 없이도 간단하게 proxy를 구현할 수 있다. jquery-aop 등의 외부 라이브러리도 있다.
alert(arguments[0]); // 이렇게 apply의 앞 혹은 뒤로 실행되기를 원하는 기능을 호출한다.
- CollectiveOwnership . . . . 10 matches
코드 커밋된 상태에서 하나라도 테스트 실패가 있다면 롤백하거나, 수정한다. 고로, 클래스를 변경한 사람이 모든 오류를 수정해야 한다. 만약 이후에 오류를 발견하게 된다면 누구든지 수정할 수 있고, 또 그래야 한다.
Wiki:RefactorLowHangingFruit . 고쳐야 할 것이 많다면 오히려 조금씩 고치도록 한다(그리고 고치는 작업을 엔지니어링 태스크로 혹은 유저 스토리로 명시화해서 관리한다). 고치는 중에, 5분 정도의 단위로 테스트를 해봐서 하나도 문제가 없도록 고쳐 나가야 한다. 섬과 육지를 연결하는 다리가 있을 때, 이걸 새 다리로 교체하려면 헌 다리를 부수고 새 다리를 만드는 것이 아니고, 새 다리를 만든 다음 헌 다리를 부수어야 하는 것이다. {{{~cpp formatText(String data)}}}을 {{{~cpp formatText(String data,boolean shouldBeVeryFancy)}}}로 바꾸어야 한다면, {{{~cpp fancibleFormatText}}}를 만들고, 기존의 {{{~cpp formatText}}}를 호출하는 곳을 {{{~cpp fancibleFormatText(data,false)}}}로 하나씩 바꿔나가면서 계속 테스트를 돌려보면 된다. 이게 완전히 다 되었다고 생각이 들면 {{{~cpp formatText}}} 정의를 지워본다. 문제가 없으면 {{{~cpp fancibleFormatText}}}를 {{{~cpp formatText}}}로 rename method 리팩토링을 해준다. 하지만 만약 이 작업이 너무 단순 반복적인 경우에, 충분히 용기가 생기고, 또 확신이 들면 이 작업을 자동화할 수 있다(OAOO). 예컨대 IDE에서 지원하는 자동 리팩토링을 사용하거나, 정규식을 통한 바꾸기(replace) 기능을 쓰거나, 해당 언어 파서를 이용하는 간단한 스크립트를 작성해서 쓰는 방법 등이 있다. 이렇게 큰 걸음을 디디는 경우에는 자동화 테스트가 필수적이다.
일단 리팩토링을 필요로 하는 부분을 한정하고, 그 주위에 테스트 프로그램을 조금씩 붙여 나가야 한다. 그리고 리팩토링을 한다. 간혹 컴파일러를 테스트 프로그램으로 여기는 약간은 위험한 방법도 있다. see also Wiki:RefactoringLegacyCode
- Cpp에서의멤버함수구현메커니즘 . . . . 10 matches
Foo* foo1 = new Foo();// Create! 를 출력한다.
Foo* foo2 = new Foo();// Create! 를 출력한다.
foo3->sayHello(); // Hello 를 출력한다.
Foo* foo1 = new Foo(); // Create! 를 출력한다.
foo2->sayHello(); // Hello 를 출력한다.(음--;)
라는 형태의 함수로 선언하고, 실행할수 있도록 만듭니다. 그리고, 호출한다면 {{{~cpp Foo*}}} 부분에
Foo* foo1 = new Foo(); // Create! 를 출력한다.
sayHello()는 instance variable에 접근하지 않는다는 것이고, {{{~cpp sayMyId()}}} 는 접근한다는 점이지요.
만약 구현 컴파일러가, 메모리를 system으로 반환하고 접근 금지 영역으로 설정한다면, 다음 강제 접근시 access 에러가 나겠지요. 이러한 비효율적 구현 플랫폼 없을 겁니다.
foo2->sayHello(); // Hello 를 출력한다.
- DataCommunicationSummaryProject/Chapter5 . . . . 10 matches
* 서킷은 버츄얼 서킷으로 한다.
* Direct Upgrades : 이미 존재하고 있는 셀크기와, 채널 구조를 지키면서, 패킷 스위칭과 더 나은 모듈레이션을 추가한다. 대부분의 2G는 TDMA이기에 direct upgrades는 2.5G로 간주된다.
* Handover : 커버하는 영역 밖으로 벗어날시에 사용자에게 2G 네트워크로 handover한다.
* QPSK를 사용하는 W-CDMA는 4Mbps를 이룰수 없다. 가능할라면 하나의 셀에 한명의 사용자가 있어야 하고 채널에 간섭이 없어야 한다. 아주 잘나올때, 마이크로셀 내부에서 2Mbps, 외부에서 384kbps 가능하다.
* 2G 중 cdmaOne만이 CDMA이다. 이로부터 3G로 업글한 것을 CDMA-2000이라 한다.
* 새 하드웨어가 필요하지만, 새로운 라디오 인터페이스가 필요없으며, Walsh Codes를 두번 사용해서 두배의 용량을 지원한다.
* 현재로서는 지원하는 데 없음.
* 압축을 이용해 실제 속도보다 더 나와 보이게 한다.
* 3개의 주요 3G 시스템 : W-CDMA, CDMA2000, EDGE. 이것들은 IMT-2000으로 알려진 것으로 묶을수 있으며, 384kbps를 넘는 속도, 패킷 스위칭 방식을 사용한다.
* EDGE는 GSM과 GPRS로부터의 직접적인 업그레이드이고, 다른 시스템들에 비해 상당히 작은 스펙트럼을 필요로 한다.
- Emacs . . . . 10 matches
* 평소에 너무 IDE에 의존한다는 생각이 들어서 범용적인 TextEditor를 사용해보자는 결심을 하고 쓰는데 어려웠던 사항을 기록하려고 합니다.
* [https://github.com/technomancy/package.el/blob/master/package.el package.el]을 컴퓨터에 저장한다. 저장 위치는 아무 곳이나 상관 없지만 되도록이면 HOME 디렉토리에 .emacs.d 디렉토리를 만들어서 그 안에 넣어 주도록 하자.
2. cedet압축을 .emacs.d폴더 혹은 원하는 곳에 푼다.
참고#3. lisp 코드의 (setq byte-compile-warning nil)은 이 코드 바로 위의 주석에 해당하는 오류가 발생하여서 해결책으로 작성한 코드이다. 혹시 이 코드로 인해 다른 오류가 발생하거나 한다면, 이를 지우거나 구글링을 통해 다른 방법을 찿길 바란다.ㅠㅜ
1. ecb 설치전에 우선 cedet설치가 우선되어야한다. cedet은 이 글을 쓴 시점에 1.1 대의 버젼이 최신 버젼이다. cedet설치는 cedet을 설명해둔 부분에서 참조하길 바란다. (참고로 emacs 23부터는 내부적으로 CEDET이 설치되어있다.)
2. 현제 emacs의 최신버젼은 24.*대이다. 그리고 이 버젼대의 emacs는 내부적으로 cedet이 설치되어있다고 한다. 이 cedet의 버젼과 ecb의 버젼 사이에 버그때문에 ecb 환경설정을 하려하면 어려움이 많다. 열심히 삽질해서 알아본 결과 어떤 외국 신사분이 버그 fix후 report하기전에 반영이 늦을것같기에 미리 github에 올려두신 수정 버전이 있다.([https://github.com/alexott/ecb/]) 여기에서 ecb의 압축파일을 받는 것부터 시작을 한다.
3. 받은 압축파일을 .emacs.d 폴더 혹은 원하는 곳에 압축을 푼다.
emacs 설정파일이 있는 디렉토리에 소스를 복사해서 tabbar.el이라고 소스파일을 만들어 저장한다.
emacs 설정파일이 있는 디렉토리에 소스를 복사해서 highline.el이라고 소스파일을 만들어 저장한다.
- FocusOnFundamentals . . . . 10 matches
소프트웨어 엔지니어링 교육은 근본에 집중할 수 있으며, 또한 그렇게 해야 한다.
소프트웨어 필드에 익숙한 독자들은 오늘날의 '중요한' 주제들은 언급되지 않음을 지적한다. ["Java"], "웹 기술", "컴포넌트 지향", 그리고 "프레임워크" 는 나타나지 않았다. 이러한 접근법과 툴들에 기반한 많은 좋은 아이디어들은 반드시 가르쳐야 한다. 연구실 숙제들과 다른 프로젝트들은 학생들에게 가장 대중적이고 유명한 툴들을 이용할 기회를 제공해야 하며, 또한 뭔가 새로운 것을 경험할 기호를 제공해야 한다. 하지만, 우리는 이러한 주제들은 오늘날의 이른 변덕을 위한 교체품들 이며 만병통치약이며 곧 교체될 것들임을 기억해야 한다. 교육자들에게는 오늘날의 학생들의 성공이 40년은 지속할 수 있어야 함을 기억해야 할 책임이 있다. 우리는 이 기간동안효과적이고 유용한 근본들을 알고, 그리고 수업시간에 이 원리들을 강조해야 한다. 많은 프로그래머들은 특정 시스템이나 프로그래밍 언어를 배우는 것이 뭔가 다른 것을 배우는 것일 뿐, 그 그거 자체의 목표가 아니라는 사실에 대해 시야를 잃곤 한다.
학생들은 일반적으로 가장 많이 이용될 것 같은 언어들 (FORTRAN 이나 C)을 가르치기를 요구한다. 이는 잘못이다. 훌륭하게 학습받은 학생들 (즉, 바꿔 말하면, clean language(?)를 가르침받은 학생)은 쉽게 언어를 선택할 수 있고, 더 좋은 위치에 있거나, 그들이 부딪치게 되는 해당 언어들의 잘못된 특징들에 대해 더 잘 인식한다.
사실 제 이야기는 수사적인 차원에서 약간 과장된 것일지도 모르겠습니다. FocusOnFundamentals가 적용되는 범위를 꼭 한계지을 필요는 없을 듯 싶습니다. 자바를 공부한다면 자바의 "fundamentals"에 더 집중을 할 수도 있겠죠. 하지만 늘 "큰 그림"을 보도록 노력해야 할 것입니다. 내가 공부하는 것 속에서 "fundamentals"는 무엇이고, 내가 공부하는 것이 속한 범주에서 "fundamentals"는 무엇인지.
- Garbage collector for C and C++ . . . . 10 matches
* C++ 인터 페이스를 추가 하기 위해서는 "make c++" 을 하여야 한다.
/! 시스템에 따라 Makefile 내용 중 CC=cc 를 CC=gcc 로 수정하여야 한다.
* C++ 인터 페이스를 추가 하기 위해서는 "make c++" 을 하여야 한다.
* MS 개발 툴을 사용한다면 NT_MAKEFILE 을 MAKEFILE 로 이름을 바꾸어 사용한다.
* win32 쓰레드를 지원하려면 NT_THREADS_MAKEFILE 을 사용한다. (gc.mak 도 같은 파일 이다.)
* 볼랜드 개발 툴을 사용한다면 BCC_MAKEFILE 을 사용한다.
* Windows NT 나 Windows 2000 에서 문제가 발생한다면 -DUSE_GLOBAL_ALLOC 나 -DUSE_MUNMAP 옵션을 사용하여 컴파일 한다.
- Gof/Adapter . . . . 10 matches
다음과 같은 경우에 AdapterPattern를 이용한다.
* 이미 만들어져 있는 클래스를 사용하고 싶지만, 인터페이스가 원하는 방식과 일치하지 않을때.
adapter 클래스는 하나의 interface를 다른 interface 에 적합하게 맞춰주기 위해 (말 그대로 어뎁터 역할~) 다중상속을 이용한다.
adapter 객체는 object composition 에 의존한다.
- 클라이언트가 이용한 domain-specific한 인터페이스를 정의한다.
- Target의 인터페이스에 따라 객체들과 상호작용을 한다.
- adapting이 필요한 현존하는 interface를 정의한다.
* 해당 클래스를 이용하는 Client들은 Adapter 인스턴스의 operation들을 호출한다. adapter는 해당 Client의 요청을 수행하기 위해 Adaptee 의 operation을 호출한다.
DecoratorPattern은 객체에 대한 인터페이스의 변화없이 객체를 확장시킨다. Decorator 는 adapter보다 더 application에 대해 투명적이다. 결론적으로 DecoratorPattern은 재귀적인 composition을 제공한다. 이것은 순수한 adapter로서는 불가능하다.
- HowToStudyRefactoring . . . . 10 matches
OOP를 하든 안하든 프로그래밍이란 업을 하는 사람이라면 이 책은 자신의 공력을 서너 단계 레벨업시켜 줄 수 있다. 자질구레한 기술을 익히는 것이 아니고 기감과 내공을 증강하는 것이다. 혹자는 DesignPatterns 이전에 ["Refactoring"]을 봐야 한다고도 한다. 이 말이 어느 정도 일리가 있는 것이, 효과적인 학습은 문제 의식이 선행되어야 하기 때문이다. DesignPatterns는 거시적 차원에서 해결안들을 모아놓은 것이다. ["Refactoring"]을 보고 나쁜 냄새(Bad Smell)를 맡을 수 있는 후각을 발달시켜야 한다. ["Refactoring"]의 목록을 모두 외우는 것은 큰 의미가 없다. 그것보다 냄새나는 코드를 느낄 수 있는 감수성을 키우는 것이 더 중요하다. 본인은 일주일에 한 가지씩 나쁜 냄새를 정해놓고 그 기간 동안에는 자신이 접하는 모든 코드에서 그 냄새만이라도 확실히 맡도록 집중하는 방법을 권한다. 일명 ["일취집중후각법"]. 패턴 개념을 만든 건축가 크리스토퍼 알렉산더나 GoF의 랄프 존슨은 좋은 디자인이란 나쁜 것이 없는 상태라고 한다. 무색 무미 무취의 無爲적 自然 코드가 되는 그날을 위해 오늘도 우리는 리팩토링이라는 有爲를 익힌다. -- 김창준, ''마이크로소프트웨어 2001년 11월호''
기학으로 우리 사상사에 큰 획을 그은 철학자요, "서울서 책만 사다 망한 사람"으로 이름을 날릴 정도로 엄청난 지식욕을 과시하던 사상가 혜강 최한기는 그의 저술 <神氣通>에서 눈에 통하는 법(目通), 귀에 통하는 법(耳通), 코에 통하는 법(鼻通) 등을 이야기하고 있다. 어떻게 하면 우리는 코에 도통할 수 있을까? 리팩토링을 공부하거나 혹은 했던 사람들에게 많은 영감과 메타포를 주는 책이다. 일독을 권한다. --김창준
* Minimize Comments : 코드의 가독성을 떨어뜨리지 않거나 혹은 오히려 올리면서 주석을 최소화하도록 노력한다. 이렇게 하면, 자동으로 리팩토링이 이뤄지는 경우가 많다.
* Follow OAOO : OAOO 법칙을 가능하면 최대한 따르려고 한다. 리팩토링 자발공이 터진다.
* Follow ["LawOfDemeter"] : 디미터 법칙을 가능하면 지키려고 한다. 어떤 리팩토링이 저절로 이뤄지거나 필요 없어지는가?
* Pair Refactoring : 함께 리팩토링한다. 혼자 하는 것 보다 훨씬 빨리 훨씬 더 많은 것을 배울 수 있다. 특히, 각자 작성했던 코드를 함께 리팩토링하고, 제삼자의 코드를 또 함께 리팩토링해 보라. 사람이 많다면 다른 페어가 리팩토링한 것과 서로 비교하고 토론해보라.
- MFC/MessageMap . . . . 10 matches
* 사용 예 : 어떤 클래스가 view 클래스의 멤버 변수이다. 해당 클래스는 파일을 다운로드 받는 클래스인데 해당 클래스에서 다운로드가 끝났을 경우 view에 있는 serialize 함수를 실행해야 한다. 허나 현재 view클래스가 그 해당 클래스를 멤버로 가지고 있기에 include 로 해당 클래스에서 view 클래스를 포함할 수도 없고, 또 view 클래스의 현재 실행되는 객체를 얻을 방법도 마땅히 없다. 이때 해당 클래스에서 다운로드가 끝난 시점에서 다운로드가 끝났다는 메시지를 발생시켜서 view에 있는 serialize 함수를 실행시킬 수 있다. 이게 바로 사용자 정의 메시지 발생을 이용한 사례..
#define UM_ACCEPTCLIENT (WM_USER+10) // 사용자 정의 메시지를 정의 한다.
ON_MESSAGE(UM_ACCEPTCLIENT, OnAcceptClient) // 이부분에서 UM_ACCEPTCLIENT가 발생하면 OnAcceptClient함수를 실행시킨다고 맵핑한다.
afx_msg void OnAppAbout(); // 위저드로 생성되는 기본 코드에서는 오로지 ID_APP_ABOUT 매시지 만을 처리하는 함수가 존재한다.
DECLARE_MESSAGE_MAP() // 메시지 맵이 정의된 클래스에는 반드시 이 매크로 함수가 포함되어야 한다.
// 수동으로 매시지 맵을 추가하려고 한다면 반드시 이 부분을 추가해야한다.
클래스의 정의 부분에 DECLARE_MESSAGE_MAP()을 포함했다면 그 클래스의 구현 부분에는 반드시 BEGIN_MESSAGE_MAP(), END_MESSAGE_MAP()매크로가 반드시 추가되어야 한다. 이 부분에서는 WM_COMMAND 형태를 갖는 메시지 만을 처리하고 있다.
ON_COMMAND() 매크로 함수는 지정된 메시지 식별자(ID_..)와 특정 함수를 묶어주는 역할을 한다.
MFC에서는 기본적으로 메시지가 전달되는 특정 순서에 따라서 메시지가 처리되고 처리 코드가 업을 결우 다음 순서의 클래스에서 그 메시지를 처리한다. 결국 그 메시지를 처리하는 코드가 없다면 메시지는 윈도우로 넘겨지고 폐기처리된다.
- PrivateHomepageMaking . . . . 10 matches
운영 서버를 사용하는 것은 대략 2가지 방식이 존재한다.
운영을 원하는 사람은 이런 자료를 구해보는 것도 좋을 것이다.
리눅스의 기본 명령어부터 설치까지 어느정도 할 수 있어야한다. 일단 '''서버관리'''에
어느정도 관심이 있다면 리눅스를 설치하고 운영해보길 권한다.
(실제로 관심만 있다면 대략 2~3일 정도만 투자하면 운영가능 할 것으로 생각한다.)
대략 보드 기반의 홈페이지는 몇가지 공통적으로 이용하는 프로그램들이 많이 존재한다.
|| Zeroboard || http://www.nzeo.com || PHP 기반이며 DB는 MySQL 을 이용한다 ||
|| whitebbs || http://whitebbs.com || PHP 기반이며 파일 입출력을 이용한다. (DB서버 불필요) ||
BLOG 패키지 기반 홈페이지 역시 사이월드를 비롯한 사이트들이 유행을 하면서 만들어진 프로그램들이 존재한다.
컴퓨터 관련 사람들이 많이 이용한다. ㅡ.ㅡ;;; 대부분 이런 사이트의 운영자를 보면 프로그래머다.
- ProjectGaia/계획설계 . . . . 10 matches
1. 속도가 빨라야 한다.
3. 가변길이 레코드로 한다.
이에 마스터페이지(페이지들의 정보를 저장하고 있는 페이지)를 따로 선언해야만 한다.
키 순차화일은 키 순서로 정렬된 화일을 말한다.(교재122p부터) 여기서 키는 primary key(첫번째 필드)가 된다.
레코드의 효율적인 검색or삽입or삭제를 위해서는 page의 구조, page 접근을 위한 구조가 잘 구성되어야 한다.
page 접근을 위해 master page를 둔다. master page는 page들 중 가장 앞에 위치한다.
* ④ 페이지 수 등을 저장한다.
레코드는 무조건 화일의 끝에 삽입한다.
master page의 page 수를 읽고 가장 마지막 page로 간 다음, page header의 freespace size를 삽입 예정 레코드의 크기와 비교하여, 만약 해당 page에 충분한 공간이 있다면 그대로 추가 입력, 충분한 공간이 없다면 다음 page를 생성하고 넣어주는 비신장 가변길이 방법을 이용한다.
삭제와 동시에 해당 레코드가 있는 자리에 null flag를 두도록 한다. 다른 레코드들이 page 간 이동할 필요가 없다.
- PyUnit . . . . 10 matches
테스팅을 하기 위해 Python의 assert 구문을 사용한다. testcase가 실행될 때 assertion을 실행하면 AssertionError 가 일어나고, testing framework는 이 testcase를 'failure' 했다고 정의할 것이다. 'assert' 를 명시적으로 써놓지 않은 부분에서의 예외가 발생한 것들은 testing framework 에서는 'errors'로 간주한다.
단순히, 우리는 tearDown 메소드를 제공할 수 있다. runTest가 실행되고 난 뒤의 일을 해결한다.
이러한 testing code를 위한 작업환경을 'fixture' 라고 한다.
종종, 많은 작은 test case들이 같은 fixture를 사용하게 될 것이다. 이러한 경우, 우리는 DefaultWidgetSizeTestCase 같은 많은 작은 one-method class 안에 SimpleWidgetTestCase를 서브클래싱하게 된다. 이건 시간낭비이고,.. --a PyUnit는 더 단순한 메커니즘을 제공한다.
여기에는 runTest 메소드가 없는대신, 두개의 다른 test 메소드를 가지고 있다. 클래스 인스턴스는 이제 각각 self.widget 을 생헝하고 각 인스턴스에 대해 따로 소멸되면서 각각의 test method를 실행한다.
인스턴스를 생성할때 우리는 그 테스트 인스턴스가 수행할 테스트 메소드를 구체적으로 명시해주어야 한다. 이 일은 constructor에 메소드 이름을 적어주면 된다.
Test case 인스턴스들은 그들이 테스트하려는 것들에 따라 함께 그룹화된다. PyUnit는 이를 위한 'Test Suite' 메커니즘을 제공한다. Test Suite는 unittest 모듈의 TestSuite class로 표현된다.
PyUnit test framework는 테스트를 수행하기 위해 'TestRunner' 클래스를 사용한다. 가장 일반적인 TestRunner는 TextTestRunner이다.
기본적으로 TextTestRunner는 sys.stderr에 출력한다. TextTestrunner 같은 클래스는 Python interpreter session과 상호작용하면서 test들을 실행시켜볼 수 있는 이상적인 방법이다.
- TeachYourselfProgrammingInTenYears . . . . 10 matches
3일간:유감스럽지만, 이것으로는 충분하지 않다.다음 방향으로 해설한다.
연구자 (Hayes, Bloom)에 의하면, 체스, 작곡, 회묘, 피아노 연주, 수영, 테니스, 그리고 신경 심리학이나 위상 기하학의 연구를 포함한, 광범위한 분야의 머지않아에 대해서도, 전문 기술을 몸에 익히려면 대략 10년 걸린다고 한다.지름길 등 실재하지 않는 것 같다.4세로 해 음악의 신동이었던 모차르트조차, 세계적인 악곡을 만들어 내기까지 13년 이상의 시간을 필요로 했던 것이다.사뮤엘·존슨(역주2)는, 「어떤 분야에 있어도, 생애에 걸치는 노력 없애 뛰어난 것에는 달할 수 없다.그것보다 싼 대상으로 손에 넣을 수 없는 것이다」라고, 거기에는 10년 이상 걸린다고 생각했다.
프로그램을 쓰는 것.학습하는 최고의 방법은,실천에 의한 학습이다.보다 기술적으로 표현한다면, 「특정 영역에 있어 개인이 최대한의 퍼포먼스를 발휘하는 것은, 장기에 걸치는 경험이 있으면 자동적으로 실현된다고 하는 것이 아니고, 매우 경험을 쌓은 사람이어도, 향상하자고 하는 진지한 노력이 있기 때문에, 퍼포먼스는 늘어날 수 있다」(p. 366) 것이며, 「가장 효과적인 학습에 필요한 것은, 그 특정의 개인에게 있어 적당히 어렵고, 유익한 피드백이 있어, 게다가 반복하거나 잘못을 정정하거나 할 기회가 있는, 명확한 작업이다」(p. 20-21)의다(역주3).Cambridge University Press 로부터 나와 있는 J. Lave 의「Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life」(역주4)라고 하는 책은, 이 관점에 대한 흥미로운 참고 문헌이다.
만약 그러한 있고 것이라면, 4년간 대학에서(혹은 대학원에 가, 더욱) 배우는 것.그러면 성적 증명서를 필요로 하는 일자리에 접근하고, 그 분야에 도착해보다 깊은 이해를 얻게 된다.하지만, 학교를 즐길 수 없다고 한다면, (열의가 있으면) 일을 하는 과정에서 같은 체험을 얻을 수 있다.어느 경우이든, 책에 의한 학습만으로는 충분하지 않다.「컴퓨터·사이언스의 교육으로 누군가를 프로의 프로그래머로 하려고 하는 것은, 브러쉬나 그림도구에 대해 배우게 해 프로의 화가로 하는 것 같은 정도 어렵다」라고 The New Hacker's Dictionary(역주5) 의 저자인 Eric Raymond 는 말한다.내가 지금까지 고용한 중에서 최고의 프로그래머의 한 명(역주6)은, 고등학교까지 밖에 나오지 않았다.그렇지만, 그는 많은훌륭한소프트웨어를 만들어, 지금은 자신의뉴스·그룹까지 가지고 있어, 스톡옵션 덕분에, 틀림없이 내가 일생 걸려 벌 수 있는 것보다 좀 더 부자다.
가능한 한 조기에 탑 디자이너를 체계적으로 인정한다.
유망한 인재의 육성을 책임을 가지고 실시하는 캐리어 어드바이저를 임명해, 면밀한 캐리어 파일을 보관 유지한다.
이상은, 이미 뛰어난 디자이너가 되는데 필요한 자질을 가지고 있는 사람이 존재한다고 하는 것을 전제로 하고 있다.거기서 해야 한다 (일)것은, 그들을 확실히 유도 해 주는 것이다.Alan Perlis 는 그것을 보다 간결하게 표현하고 있는:「누구라도 가르쳐 주면, 조각을 할 수 있도록(듯이)는 된다.미켈란젤로는, 방물어라고도 조각을 하고 있었을 것이다.뛰어난 프로그래머도 마찬가지다」
* 역주 1 - ACM 의 초대 의장을 맡아 튜링상의 제1회의 수상자이기도 한 저명한 컴퓨터 과학자(1922-1990).그가 남긴 에피그램은, 현재도 여러가지 곳에서 참조된다.Google 등으로 그의 이름을 검색하는 것만으로, 본문의 저자가 링크한 페이지 이외에도 동취지의 페이지가 다수 히트 한다.
- XMLStudy_2002/Start . . . . 10 matches
1 시작 태그가 있으면 반드시 닫는 태그가 사용되어져야 한다.
2 시작 태그에 대응하는 닫는 태그가 오기전에 시작 태그의 바깥에 위치한 태그의 닫는 태그가 위치하지 않아야 한다.(태그들이 겹쳐서(orverlapped) 사용될수 없다.)
3 어트리뷰트의 값들은 끈따옴표로 둘러쌓여야한다.
*XML 문서는 XML로 기술된 구조적인 정보로 구성되는 문서이며 XML1.0스펙에 맞게 작성하며 XML을 지원하는 프로세서(또는 프로그램)에서 사용하기 위해서 Well-formed나 Valid한 형태로 작성된 문서를 말한다. ---> 정의
id 어트리뷰트의 타입은 ID이고 이 어트리뷰트는 반드시 사용해 주어야 하는 것으로 선언되었다. 그리고 reply_required 라는 어트리뷰트는 이 어트리뷰트의 값으로는 "yes"와"no"만 사용될수 있으며 만약 어트리뷰트가 명시되지 않았을 경우에는 디퐅르 값으로 "yes"를 사용한다.
*플러스 기호(+) : 요소가 임의의 수만큼 반복해서 나타날 수 있다. 단, 적어도 한 번은 나타나야 한다.(즉, 요소가 한 번 이상 나타나야 한다.)
*물음표(?) : 요소가 없을 수 있다. 만일 있는 경우는 요소가 단 하나만 있어야 한다(즉, 요소는 없거나 하나만 있어야 한다.).
- ZeroPage_200_OK . . . . 10 matches
* 자바스크립트에서 자주 this 얘기가 나오던데, 이번에 이야기를 들을 수 있어서 좋았습니다. 개인적인 느낌을 말하자면 함수가 데이터로 취급되는데 함수 내부에서 함수를 호출한 객체(execution context)의 정보를 사용하기 위해서 this를 사용한다는 느낌이는데 맞는지 모르겠군요. p.print를 넘기는 것도 실제로 class p에 있는 함수를 넘기는 게 아니라 p.print에 바인딩 된 어떤 함수를 넘기는 것이니까 내부의 this가 기존 OOP와 같이 해당 class의 인스턴스는 될 수 없겠죠. 그리고 제일 마음에 들었던 것은 역시 예전에 했던 스터디에서 다뤘던 자바스크립트의 네 가지 특징에 대해서 들을 수 있었다는 점이었습니다. 사실 예전 스터디 떄 무척 듣고 싶었는데 개인적인 사정으로 참가를 할 수 없어서 꽤 아쉬웠던 터라 ;;; 마지막에는 개인적인 사정으로 시간이 안 맞아서 좀 급하게 나갔는데, 그래도 최대한 들을 수 있는 데까지 듣기를 잘 한 것 같은 느낌이 들었습니다. - [서민관]
* 자바스크립트의 언어 특성에 따라서 배우고 기본적인 사용 문법에 대해서 배웠습니다. 명령형 구조적 프로그래밍 언어적인 부분에 대해서는 그렇게 어려운건 없었는데 그 뒤의 함수형 선언적 프로그래밍 언어 부분에서 클로저랑 함수에 함수를 인자로 주는 부분이 같이 쓰이니까 좀 복잡했었습니다. 조금 더 공부해야 할 것 같습니다. var Person = function(){}; 같은 부분나 this가 new를 했을 때에만 제대로 동작한다는 부분도 특이했습니다. 문법적인 부분 자체는 그렇게 어려운 것 같지 않은데 함수를 중첩해서 쓰거나 그런 부분이 약간 알아보기 힘든 것 같습니다. - [서영주]
* 서버에서 데이터를 가져와서 보여줘야 하는 경우에 싱글스레드를 사용하기 때문에 생기는 문제점에 대해서 배우고 이를 처리하기 위한 방법을 배웠습니다. 처음에는 iframe을 이용한 처리를 배웠는데 iframe 내부는 독립적인 페이지이기 때문에 바깥의 렌더링에 영향을 안주지만 페이지를 이동하는 소리가 나고, iframe이 서버측의 데이터를 읽어서 렌더링 해줄 때 서버측의 스크립트가 실행되는 문제점 등이 있음을 알았습니다. 이를 대체하기 위해 ajax를 사용하는데 ajax는 렌더링은 하지 않고 요청 스레드만 생성해서 처리를 하는 방식인데 xmlHttpRequest나 ActiveXObject같은 내장객체를 써서 요청 스레드를 생성한다는걸 배웠습니다. ajax라고 말은 많이 들었는데 구체적으로 어떤 함수나 어떤 객체를 쓰면 ajax인건가는 잘 몰랐었는데 일반적으로 비동기 처리를 하는거면 ajax라고 말할 수 있다고 하셨습니다. 그리고 중간에 body.innerHTML을 직접 수정하는 부분에서 문제가 생겼었는데 innerHTML을 손대면 DOM이 다시 만들어져서 핸들러가 전부 다 사라진다는 것도 기억을 해둬야겠습니다. - [서영주]
* $(document).ready() - 처음에 자바스크립트 코드를 해석할 때 해당 객체가 없을 수 있기 때문에 DOM 객체가 생성되고 나서 jQuery 코드가 실행되도록 코드를 ready() 안에 넣어주어야 한다.
* 이벤트 메소드 - 이벤트 메소드에 함수를 인자로 주지 않고 실행시키면 이벤트를 발생시키는 것이고, 함수 인자를 주고 실행시키면 이벤트 핸들러에 해당 함수를 등록한다. (ex. $(".add_card").click() / $(".add_card").click(function() { ... }))
* CSS -> HTML -> JavaScript 순서로 html을 작성한다. - CSS가 뒤에 있으면 HTML 렌더링을 한 후에 CSS가 적용된다. JavaScript가 앞에 있으면 JavaScript가 다 받아지고 나서 뒷부분이 실행되기 때문에 속도에 문제가 있을 수 있다.
* Script의 요청 - import에 대한 요청은 병렬적으로 이루어지지만 뒤쪽의 요청이 먼저 처리되더라도 앞쪽 요청이 처리되기 전까지는 대기해야 한다.
* <script defer - html 파싱을 하면서 script에 대한 요청을 병렬적으로 보낸 이후에 모인 script를 한꺼번에 처리한다. script 요청의 순서가 지켜진다.
* <script async - html 파싱을 하면서 script에 대한 요청을 병렬적으로 보내고, 먼저 처리가 된 script를 먼저 처리한다. 요청의 순서가 지켜지지 않는다.
* Nginx + Fast CGI + nodejs의 조합이 얼마나 강력한 조합인지 새삼 꺠닫게 되었습니다. 하지만 안정성을 원한다면 역시나 Apache... - [안혁준]
- django/ModifyingObject . . . . 10 matches
SQL문에서는 insert into values 구문을 이용해 레코드를 삽입하고, update set where 구문을 이용해 레코드를 수정한다. 하지만 django는 이 둘을 하나로 보고 데이터베이스에 레코드를 삽입하고 갱신하는 작업을, 모델로 만든 객체를 저장(save)하는 것으로 추상화했다. 기본적으로 모델클래스는 save메소드를 가진다. 따라서 개발자가 작성한 모델도 save메소드를 가지며, 이는 오버라이딩 할 수 있다. 아래 예에서 보듯이 save 메소드는 새로만든 레코드 필드의 속성에 따라서 적당히 삽입과 갱신 작업을 수행한다.
Employee 모델에 해당하는 새로운 객체를 만들고 save메소드를 이용하면, 데이터베이스에 새로운 레코드를 삽입하거나, 기존의 레코드를 갱신한다. 기존에 삽입하지 않았기 때문에 처음 save를 호출하면 레코드를 삽입하고, 다음 번 save를 호출하면 레코드를 갱신한다. 레코드는 객체로, 레코드의 속성을 객체의 멤버 변수로 취급한다.
save메소드는 우선 현재 저장하려는 레코드의 주키를 가지고 데이터베이스를 검색하여 레코드를 삽입할 지 갱신할 지 결정한다. 주키를 이용해 기존의 레코드를 찾은 경우에는 단순히 갱신한다. 주키를 이용해 레코드를 찾지 못한 경우에는 단순히 삽입한다. 만일 주키가 없는데 레코드가 있는 경우에는 삽입하여도 상관이 없으므로 삽입한다. 다음은 save메소드의 주요 분기점을 보여주고 있다.
데이터베이스에서 레코드를 삭제하는 작업은 Model클래스의 delete메소드로 추상화했다. 하지만 내부에서 실제로 레코드를 삭제하는 메소드는 delete_objects이다.[8] delete_objects메소드는 지우려는 레코드를 참조하는 다른 테이블의 레코드까지 함께 삭제하거나, 외래키를 NULL값으로 설정한다. 예를 들어 다음은 Risk테이블에서 한 레코드를 삭제하는 경우 이를 참조하는 Consequence, Control 테이블의 레코드까지 함께 삭제하는지를 묻는 사용자 화면이다.
- 니젤프림/BuilderPattern . . . . 10 matches
빌더 패턴은 소프트웨어 디자인 패턴의 하나이다. 빌더 패턴은 복잡한 객체를 생성하는 방법과, 표현하는 방법을 정의하는 클래스를 별도로 분리한다. 이 분리로서 얻어지는 효과는, 동일한 생성 과정이 다른 표현을 얻어낼 수 있게 되는 것이다.
쉽게 말해서, 아주 복잡한 오브젝트를 생성해야하는데, 그 일을 오브젝트를 원하는 클래스가 하는게 아니라, Builder 에게 시키는 것이다. 그런데 자꾸 나오는 생성/표현 의 의미는, 바로 director 의 존재를 설명해 준다고 할 수 있다. director 는 Building step(construction process) 을 정의하고 concrete builder 는 product 의 구체적인 표현(representation) 을 정의하기에.. 그리고, builder 가 추상적인 인터페이스를 제공하므로 director 는 그것을 이용하는 것이다.
패스트(정크)푸드 레스토랑 맥도날드에서 어린이용 해피밀을 만들어내는 걸로 예를 들 수 있다. 일반적으로 해피밀은 메인, 사이드, 음료, 장난감 (햄버거, 프라이, 콜라, 매달 바뀌는 장난감)으로 이루어져 있다. 여기서 중요한건, 이런 템플릿이 정해져 있다는 것이다. 요즘 같이 까다로운 아이들에게 어릴때부터 맥도날드의 입맛을 확실히 들여놓으려면 당연히 다양한 바리에이션이 필요하다. 고객은 햄버거나 치즈버거나, 아니면 맥너겟이나 이런걸 선택할 수 있지만, 기본적으로 해피밀이 구성되는 방식에는 변함 없다. 여기서 빌더 패턴을 적용한다면, 카운터에서 주문을 받는 직원을 Director 라고 할 수 있다. 물론 고객은 Customer 이다. 고객이 원하는 바리에이션을 선택해서 해피밀 셋트를 구성하게 되면 (Customer가 Concrete Builder 를 선택한다) Director 는 정해진 템플릿에 따라 주방 직원(Concrete Builder) 에게 의뢰하여 해피밀 세트(Product) 를 만들어 낸다. 여기서 Director 가 Concrete Builder 에게 요구하는 방식은 종류에 따라 비슷 하므로 그것을 추상화시킨 인터페이스를 Builder 라고 할 수 있겠다.
Director 클래스는 Product 를 생성하는 방법과 순서 등을 주관한다. Builder 인스턴스를 가지고 있기 때문에 Concrete Builder 를 건네 받아서 Builder 에 연결해 준다.
보시다 시피 Builder Pattern 과 Abstract Factory Pattern 은 많이 비슷하다. 차이점이라면 약간 미묘하다고도 할 수 있는데, Abstract Factory Pattern 은 무엇이 만들어지는가 에 초점을 맞추고 있고, Builder Pattern 은 어떻게 만들어 지는가에 초점을 맞추고 있다고 풀이할 수 있다. 물론 두 종류의 Creational Pattern 은 Product 을 제공하는데 첫번째 책임이 존재한다. 가장 큰 차이점이라면, Builder Pattern 은 복잡한 오브젝트를 한단계 한단계 만들어서 최종 단계에 리턴해주고, Abstract Factory Pattern 은 여러 종류의 generic 한 product 를 여러종류의 concrete factory 가 생성하기 때문에 각각의 오브젝트가 만들어질 때마다 product 를 받을 수 있게 된다.
Abstract Factory Pattern : 어떤 종류의 명확한 오브젝트를 생성할 것인지를 실행 시간까지 연기한다. (실행시간에 결정한다) 예를 들자면, 레스토랑에서 오늘의 추천메뉴를 선택하는 것이다. 서버(interface to factory)는 "오늘의 추천요리" 라는 abstract generic message 를 주방(concrete factory)에 전달하고 음식을 받게 될 때 concrete product 를 얻게 되는 것이다.
Builder Pattern : 복잡한 오브젝트를 어떤 방식으로 조합하여 만들어낼지 에 대한 방법을 제공한다. (encapsulate) 예를 들자면, 건축업자와 계약을 해서 집을 건설 할 때, 건축업자(builder) 에게 평면도(product 의 윤곽)를 제공하면 건축업자는 일련의 작업을 거쳐서 집(complex object)을 만들어 낸다.
- 데블스캠프2011/다섯째날/후기 . . . . 10 matches
* 코드 잘 짜는 법. 신경써야 할 부분을 최소한으로 줄이자. 필요한 것을 먼저 쓰고 구현은 나중에 한다. 자주, 많이. very very many many
* 개인적으로 항상 고민하는 부분 중의 하나입니다. 어떻게 하면 코드를 잘 짤 수 있을까. 그리고 회고 때에도 말했듯이 제가 작년 데블스 마지막 때 세미나를 하고 싶다고 했던 주제이기도 합니다. 변명삼아 말하자면 아직도 스스로가 남에게 이야기 할 수 있을 만큼의 능력과 자신감이 없어서 세미나를 피한 것도 있습니다 ;;; 사실 제가 한다고 하면 생각을 코드로 만드는 법(형진 선배의 말하듯이 코딩하기 부분) + 남이 만들어 둔 라이브러리의 사용 으로 하려고 했는데 과연 그게 괜찮은 방법인가에 대한 확신은 역시 좀 부족하군요... 하지만 모르긴 몰라도 언어에 사로잡히지 말고 로직이 우선해야 한다는 생각은 기본에 둬도 괜찮을 것 같습니다.
* 현재 구현해야 하는 부분을 해당 기능 하나로 좁혀서 거기에만 집중해야 한다. 해결해야 하는 문제의 범위를 최소한으로 줄이는게 코드를 잘 짜는 비결이다. 라고 하셨었는데 하다 보면 이것 저것 고려할게 많아지는 것 같습니다. 그래도 앞으로는 이번에 배운 것들을 코드를 짜는데 적용해보려고 노력해야 할 것 같습니다. 다만 이렇게 문제의 범위를 최소한으로 줄였는데도 해결을 못한다면 어떻게 하면 좋을지 하는 생각이 들지만 -_- 거기는 개인의 실력 나름인가 싶습니다.
* 남이 짠 스펙을 보고 구현한다는건 처음이었습니다. 대개는 학교 프로젝트 할 경우에는 무슨 기능이 필요하다는걸 처음부터 생각하고 만드는데 실제 일하는 쪽에서는 그렇지 않을테니 좋은 경험이 됐다고 생각합니다. 유닛 테스트에서 해당 테스트 케이스가 스펙이 될 수 있다는 부분에 대해서도 잘 생각해보고 또 적용해보기 위해 노력해봐야겠습니다. 근데 TDD의 단점에 대해서는 크게 말이 없었던 것 같아서 그 부분이 좀 아쉽습니다.
* QDD는 정말 신세계였죠. 그리고 스펙을 먼저 두고 구현한다는것이 무슨말인지 처음에 잘 이해가 안되서 간단한 스펙만을 제시했더니 결과는... 누가 나쁜놈일까요
* 시간 빠듯했던 것 같은데 예를 들어서 알기 쉽게 설명해주시느라 고생하신 것 같습니다. 개념적으로는 보면서 참 신기하다는 생각이 들었습니다. 하지만 실제 구현 부분의 얘기를 하면서 이런 저런 연산을 한다는 부분에서는 갑자기 흥미가 -_- 연산 부분의 실제 구현에 대한 것도 나쁘지 않긴 했지만 C나 자바 등의 주요 언어에서의 라이브러리 사용 등의 설명도 있었으면 더 좋았을 것 같습니다.
* (페이지 하단을 임의대로 조금 바꿨습니다. 양해해주세요 =_=)쪽지를 돌리며 회고하는 시간이었죠. 저는 개인적으로 형진이 형이 제일 마지막에 했던 말이 기억에 남습니다. 회사에 나가서 1주일간 나갔다면 약 80만원에 해당하는 것이었을텐데, 1주일 휴가를 내고 왜 데블스에 나왔냐면, 미래를 위해 자기개발하는 것이 후에 훨씬 도움이 될 것이고, 또 데블스에 올때마다 형이 가장 많이 배워간다고 생각한다고 하셨지요. 하지만 저는 제가 이번 데블스캠프에서 가장 많은걸 배워간다고 확신합니다 --+ 데블스 5일간의 후기에 담긴 모든 말들을 해야하겠지만 생략하구, 그만큼 많은걸 얻었으니까요. 정말 대학와서 지금까지 한 것중 가장 보람찬 날들이었습니다. -[김태진]
- 데블스캠프2011/첫째날/개발자는무엇으로사는가 . . . . 10 matches
* 로또가 당첨되어도 그 돈으로 평생 먹고 살 수는 없다. 평생 먹고 살려면 일해야 한다 - [지원]
* 당신이 경쟁 유료제품을 위협할만한 만큼 고품질의 프로그램을 만들어 일반에 무료로 배포하고 있다는 가정을 해봅시다. 만약 경쟁회사에서 큰돈을 주며 프로그램을 폐기하라고 유혹한다면 당신은 어떻게 하시겠습니까?
* 어떠한 프로젝트를 만들어 달라고 요구하는 사람들에게 그 프로젝트의 진행 결과가 눈에 보이지 않아(뚜렷한 소스가 없다던지 해서) 어서 빨리 그것을 보여 달라고 한다면 그 상황을 어떻게 헤쳐 나갈 것인지?
* 더 좋은게 생각났다!! 착한 사람에게만 보인다고 한다. 이건 동화에도 나온 방법~ - [김수경]
* 동료가 주장한 방식보다 자신이 생각한 방식이 옳다고 생각한다면 어떻게 하겠는가?
* 가장 힘들었던 프로젝트(기술적으로든 다른 문제든 해결하기 어려웠던) 경험을 묻고 그 당시 문제를 해결하기 위해 어떻게 행동했는지, 지금 그 프로젝트를 다시 한다면 어떻게 행동할 것인지.
* 내가 아는 것일 때 적극적으로 도와주려 노력한다. 문제는 내가 모를 때 그에 대해 공부해보지 않는다는 점이다 (찾아보다 포기하는 경우가 많다) - [지원]
* 사실 나도 잘 아는게 아니라 어떤 방향으로 생각해 보는것이 좋을지 정도로만 이야기한다. 동시에 급 구글링 신공!! - [서지혜]
* 일개 개발자라도 프로젝트에 대한 문제점 지적이나 의견, 방향성을 제시할 수 있지 않나요? 저는 진정한 리더란 한발 물러나는 사람이라고 생각합니다. 앞에 나서기 좋아한다고 능동적인지, 그래서 좋은 프로그램을 짤 것인가는 알수없을 것 같아요~ - [서지혜]
* 내려오기 전에 그 산에서는 뭘 얻었나를 생각한다 - [지원]
- 병역문제어떻게해결할것인가 . . . . 10 matches
* 수시 모집 가능(지원 시 원하는 날짜 선택이 아닌 '월'을 선택)
* 신청을 상당히 미리 해야 원하는 날짜에 갈 수 있다는 것이 흠
* 이 항목이 미래창조과학부(MSIP)주관, 정보통신산업진흥원(NIPA)운영하는 SW 마에스트로와 MOU를 체결한 그 부서의 그 특기병과를 지칭한다면, 지원하기 위해서는 활동량이 많은 제로페이지 회원이어도 지원 자격 요건은 충족할 수 있습니다만, 그건 구색을 맞추기 위한 지원조건이고, 실제로는 MOU 체결한 기관의 지원자에게 우선순위를 부여하기 때문에, 비 기관 지원자가 서류를 통과할 가능성은 거의 없다고 합니다. (입대설명회에 나온 간부가 말하길 서류 특별점수가 60점 정도 되는데, MOU 기관은 만점 채우고 시작, 아닌 사람은 산더미 만큼 모아와야 채울 수 있다고 합니다.)
* 말그대로 레이다를 운용하는 특기병. 해안가 기지에서 육지로부터 10마일 이내의 범위를 감시합니다. 나름 매달 모집하고, 학과와 자격증에 따라 추가점수가 있기 때문에 대부분 합격할 수 있습니다. 훈련소를 마치고 후반기교육을 받은 후 자대 배치를 받으며, 해안가 기지로 배치받기 때문에 인천부터 시작해서, 해남/완도, 여수, 부산, 강원도 등 어디를 배치 받을지 알 수 없습니다. 감시 기지이기 때문에 격오지로 취급해 휴가와 수당이 지급되며, 24시간 작전부대로 취급되어 체력단련 및 기타 사격 훈련, 유격, 혹한기 등의 훈련이 없습니다. 단점은 분대 단위로 근무에 투입되어 3교대를 한다는 것이지만, 밤새서 과제하던 여러분이라면 금방 익숙해질 것 입니다. 격오지 부대라서 PX가 없지만 주에 한번꼴로 황금마차가 방문합니다.
* 두가지 일을 한다. 청음, 시추공 관리. 청음실에서 2인 1조 혹은 단독으로 근무하며 지하 폭발음을 청음한다. 시추공 관리는 감시 범위가 꽤 넓어 돌아다니는 운동량이 상당할 수 있다. 근무 난이도가 복불복 이지만 복이 많다.
* 불복일 경우 : GP 를 같이 들어가거나, 수색대 수색 경계에 참여하거나 훈련에 참가한다.
* 2019년 기준 공군 복무기간이 22개월로 줄어듬에 따라 훈련소 5주 + 특기교육 3주를 겪고 해당 성적에 따라 (TO가 나온 부대 중에) 원하는 부대에 들어가게 된다.(2020년 현재 21개월까지 줄어듬.)
* 요즘 같이 경력같은 신입을 원하는 시대에는 병역특례가 나쁜 경험은 아닌 것 같음.
* 경찰서 대신 소방서에 근무한다고 생각하면 됨. 이쪽도 복무기간은 해군과 동일하게 20개월
- 새싹교실/2012/AClass/1회차 . . . . 10 matches
빌드: 컴파일과 링크를 합쳐 빌드라 한다. 빌드를 해야 컴퓨터가 실행할수 있는 형태의 기계 링크: 프로그램마다의 라이브러리를 내가 만든 것과 연결해 주는 작업
- 함수형 프로그래밍은 프로그래밍의 주된 구조가 함수 호출에 기반을 둔 프로그래밍을 말한다. 기존 명령형 언어로 작성한 프로그램보다 간결하고 더 추상적이며 이해하기 쉽고 형식적인 분석과 조작이 용이하다는 특징이 있다.
-동일한 데이터형을 가진 자료구조로, 변수이름을 각각 다른 이름으로 사용해야 하는 번거러움을 줄이기 위해 사용한다.
내용을 포함 시키도록 지시한다.
#define : 특정 대상을 정의함으로써 전처리기가 이를 특별하게 다루도록 하고싶을때 사용한다.
이렇게 정의된 특정 대상을 매크로 라고 한다. 매크로는 전처리기 과정에서 정의된
표준 라이브러리 함수를 사용하기 위해서 해당 함수의 선언을 포함하는 헤더파일을 포함해야한다.
사용자가 원하는 크기 만큼 변수를 선언할 수 있도록 해주는 변수 구조화 방법.
- ASCII문자코드는 영문자, 숫자, 특수문자 등을 포함한 128개의 문자를 7비트를 사용하여 표현한다. 8진수로 표현된 가로와 16진수로 표현된 세로를 모으면 해당 문자의 코드가 된다. ‘A’는 10진수 65에 대응되고 ‘a’는 97에 대응된다.
- 배열이란 같은 자료형의 변수 여러 개를 하나로 묶을 것을 말한다. 프로그램의 길이를 줄이기 위해서(?)
- 이영호/nProtect Reverse Engineering . . . . 10 matches
## 부디 ZeroWiki가 인하대의 모 동아리 Wiki나 포항공대의 모 동아리 Wiki 처럼 좋은 정보가 많은 곳이 되었으면 한다.
마비노기가 아닌 다른 nProtect를 사용하는 게임을 확인한 결과 소스에 포함되어 Exception Handling을 한다는 것을 발견하였다.)
1. mabinogi.exe(게임 자체의 업데이트 체크를 한다. 그리고 createprocess로 client.exe를 실행하고 종료한다.)
2. client.exe(client가 실행될 때, gameguard와는 별개로 디버거가 있는지 확인하는 루틴이 있는 듯하다. 이 파일의 순서는 이렇다. 1. 데이터 파일의 무결성검사-확인해보지는 않았지만, 이게 문제가 될 소지가 있다. 2. Debugger Process가 있는지 Check.-있다면 프로세스를 종료한다. 3. gcupdater.exe를 서버로부터 받아온다. 4. createprocess로 gcupdater를 실행한다. 5. 자체 게임 루틴을 실행하고 gcupdater와 IPC를 사용할 thread를 만든다.)
3. gcupdater(실행시 항상 서버에 접속하여 파일 3개를 받아온다. guardcat.exe, INST.dat, gc_proch.dll을 순서대로 받아와 자체적으로 wsprintf를 이용하여 복사한다.-아마 디버거에 API를 걸리기 싫었는지 모른다. createprocess로 guardcat.exe를 실행시킨다.)
4. guardcat.exe(실행시 EnumServicesStatusA로 Process List를 받아와 gc_proch.dll 파일과 IPC로 데이터를 보낸다. 이 파일이 실행되는 Process를 체크하여 gc_proch.dll로 보내게 된다. 또한 IPC를 통해 client.exe에 Exception을 날리게 되 게임을 종료시키는 역할도 한다.)
5. gc_proch.dll(이 파일은 debugger를 잡는 역할을 한다. 분석이 더 필요하다.) -> 이 파일은 dll injection 또한 막아낸다.
client.exe가 실행될 때, 데이터 무결성과 디버거를 잡아내는 루틴을 제거한다면, updater의 사이트를 내 사이트로 변경후 인라인 패치를 통한 내 protector를 올려 mabinogi를 무력화 시킬 수 있다.
- 이영호/미니프로젝트#1 . . . . 10 matches
소규모 프로젝트를 진행 하려 한다.
예상 라인수는 2000~3000 라인 정도이며 프로젝트를 더 커질수록 라인수의 가변성 또한 존재한다.
주의점 : Zombie Process를 만들지 않도록 System Call 을 잘 관리한다.
1. Client Console에 메세지를 입력하면 IRC Server로 문자열을 전송한다. -> Main Process
main.c -> IRC Server로 메세지를 보내는 역할을 하고 자식 프로세스를 생성한다.
parse.c -> IRC Server로 부터 오는 메세지를 파싱한다.
file.c -> 파일 입출력을 다루는 함수와 메세지들을 Log하는 부분을 담당한다. 일단 프로그램을 어느 정도 만들고 구현하도록한다.
// fork 부분만 구현한다.
kill(0, SIGKILL); // 부모가 종료하면 자식 프로세스 모두 종료한다.
- 정모/2002.12.30 . . . . 10 matches
* RT - semi RT 를 먼저 해본후 결정한다.
이전까지는 방학중에 4주에서 6주 정도를 잡아 스터디나 프로젝트를 했지만 이것을 방학 초 1주에 몰아서 한다. 우선 스터디 또는 프로젝트 그룹을 나눈 후, 목표를 정하고,
1주에 걸쳐 나인투나인(AM 9:00 ~ PM 9:00) 으로 아주 타이트하게 진행한다. 마지막날에 그룹별로 발표를 함으로 끝낸다. 4주에서 6주 정도 잡고 스터디를 하는것보다 오히려
더 효과적인 학습이 이루어질거라고 생각한다.
방학중에는 정모, MT 등을 통해서 친목 도모를 한다. 그리고 가끔 다수가 관심갖는 것에 대해서 세미나도 개최한다.
방학이 끝나기 전에 다시한번 모여 특별한 이벤트를 한다. 이때는 스터디나 프로젝트보다는 흥미롭고 새로운 경험을 해볼 수 있는 시간을 마련한다.
-> 방학 초 1주에 몰아서 하는 것이 힘들 가능성이 있으니 뜻이 맞는 사람들끼리 하도록 한다.
* ["Smalltalk"], MFC, DesignPattern, 영어공부등은 ZeroWiki에서 모집, 진행한다.
- 지금그때2006/세부사항 . . . . 10 matches
홍보방법 이메일 문구에 언급을 한다.
책을 안가져 오시면 책이름과 소개 한다.
나를 만든 책장 총시간을 정해서 그이상 길어진다면 사회자가 제제를 한다.
자기소개 후 원탁에 둥글게 앉은 상태에서 사회자가 지적하면 해당 사람이 일어나서 그 자리에서 소개한다.
3. 다른사람들이 거기에 대한 답을 한다.
4. 다시 (1)을 수행한다.
1. 질문을 포스트잇에 기록한다.
주제 - 이전의 주제를 그대로 사용하되, 필요한 것은 추가한다.
2. 몇몇 사람이 정해진 주제나 자기가 생각한 주제중에서 마음에 드는것을 선택해서 칠판에 기록한다.
3. 이전과 같은 방식으로 진행한다.
- 1002/TPOCP . . . . 9 matches
어려움이 닥쳤을때, 문제 자체만을 처리하기를 원한다.
다른 사람들이 이용한다는 것도 고려
추후 변화되는 부분을 확립하거나, 스펙을 명확화한다.
문제해결방법을 찾는 여러 방법들을 인식하고 있다. 문제를 이해하기 위한 프로그램을 준비하기도 한다
우리는 이러한 복잡한 행위들을 단순한 하나로 만들어야 한다.
우리는 프로젝트의 일들을 정리하여 각각의 사람들이 자신이 잘하는 영역에 대해서로 특수화할 수 있도록 할 수 있지만, 적어도 두가지 단점이 존재한다.
프로그래밍 프로젝트에 대한 전체 한바퀴를 돌고 난뒤, 프로그래머들이 작업하는 더 올바른 방법으로 작업을 나누는 것을 시도한다.
에러의 존재를 탐지한다.
에러를 수정한다.
- 2006김창준선배창의세미나 . . . . 9 matches
* 단순히 기존의 방식대로 창의적인 생각을 하려고 하기 보다, 이미지나 몸동작과 같은 우뇌를 적극 활용하는 활동을 통해서 창의성을 자극 할 수 있다. 한예로 훌륭한 프로그래머들은 머리속으로 특정 상황을 Play, Pause, Backward 등을 하면서 프로그래밍이나 문제 해결등을 한다고 한다.
* 그리고 생각, 개념등을 카드로 적어서 그것을 이리 저리 배치하면서 생각하는것도 도움이 된다고 한다.
* 특정한 의식을 치루고 나면 알파파를 증진시키고, 창의력을 높일 수 있다. 예를 들어서 켄트백은 문제가 잘 해결되지 않을때 밖에 나가서 전기톱질을 한다고 한다. 이러한 운동을 통해서 아드레날린이 분비가 되고, 우뇌도 활용하면서 뭔가 생각의 전환을 가져 오는것 같다.
* 그리고 창준 선배도 기천이라는 의식을 활용한다고 한다.
* 가장 성공적인 논문(예술품)을 쓰는해에는 가장 형편 없는 논문도 썼다고 한다.
* 새로운 책을 읽는다면 그 책을 통해서 이전에 자신이 가졌던 지식, 책들을 하나식 통과 시켜 보면서 그 새로 읽은 책을 Amplifier 로 사용한다. 이렇게 해서 단순한 더하기가 아닌 지수승의 효과를 낸다.
- 5인용C++스터디/키보드및마우스의입출력 . . . . 9 matches
키보드로부터 입력이 발생했을 경우 윈도우즈는 포커스를 가진 프로그램에게 키보드 메시지(WM_CHAR)를 보내주며 프로그램은 이 메시지를 받아 키보드 입력을 처리한다. 여기서 포커스(Focus)를 가진 프로그램이란 활성화되어 있는 윈도우를 말하며 한번에 오직 하나의 프로그램만 활성화된다. 아무리 여러개의 프로그램이 동시에 실행되는 멀티 태스킹 환경이라 하더라도 활성화될 수 있는 프로그램은 오직 하나밖에 없으며 활성화된 프로그램만 포커스를 가지고 키보드 입력을 받아들일 수 있다. 왜냐하면 시스템에 키보드는 하나뿐이며 키보드를 사용할 수 있는 사용자도 하나뿐이기 때문이다.
소스를 입력한 후 실행해 보자. 키보드에서 키를 누르면 입력한 문자들이 화면 상단에 출력될 것이다.WndProc을 보면 우선 문자열 str이 선언되어 있으며 이 문자열 변수에 사용자가 입력한 문자들을 모은다. 단 이 변수는 WndProc에 선언되어 있는 지역변수이므로 그냥 선언하면 메시지가 발생할 때마다 초기화되기 때문에 static을 붙여 정적변수로 만들어 두어야 한다. 아니면 아예 WinMain 함수 이전에 선언하여 전역 변수로 만들어 두어도 된다.
입력된 문자들을 바로 바로 출력하지 않고 반드시 문자열에 모아 두어야 하는 이유는 키보드 입력이 발생하는 시점과 문자열을 출력해야 할 시점이 분리되어 있기 때문이다. 키보드 입력 시점은 키보드 메시지인 WM_CHAR가 발생했을 때이며 이 메시지에서 문자열을 조립하기만 하고 문자열의 출력은 WM_PAINT에서 처리한다. 물론 WM_CHAR 메시지에서 문자열을 바로 바로 출력하는 것도 가능하기는 하지만 윈도우즈 프로그램은 화면을 다시 그릴 준비를 항상 해 두어야 하며 모든 출력은 WM_PAINT에서 하도록 되어 있다. 그렇지 않으면 출력된 문자들이 지워지면 다시 복구되지 않는다.
다음 코드는 wParam으로 전달된 키 코드를 str 문자배열에 저장한다.
문자열의 제일 끝 부분에 wParam값을 써 넣고 바로 뒤쪽의 0을 써 넣어 문자열 끝을 표시한다. 키 입력이 있을 때마다 이 동작을 반복함으로써 str 문자 배열에는 입력된 키 값이 차곡 차곡 쌓여갈 것이다.
키보드로부터 문자를 입력받고자 할 경우는 WM_CHAR 메시지를 사용하면 된다는 것을 배웠다. 문자 이외의 키를 입력 받으려면 WM_CHAR 메시지만으로는 입력을 받을 수 없다. 예를 들어 커서 이동키라든가 Ins, Del, PgUp, 펑션키 등의 키는 문자키가 아니기 때문에 WM_CHAR 메시지로는 검출해 낼 수 없다. 이때는 WM_KEYDOWN 메시지를 사용해야 한다.
GetMessage는 메시지 큐에서 메시지를 꺼내온 후 이 메시지를 TranslateMessage 함수로 넘겨 준다. TranslateMessage 함수는 전달된 메시지가 WM_KEYDOWN인지와 눌려진 키가 문자키인지 검사해 보고 조건이 맞을 경우 WM_CHAR 메시지를 만들어 메시지 큐에 덧붙이는 역할을 한다. 물론 문자 입력이 아닐 경우는 아무 일도 하지 않으며 이 메시지는 DispatchMessage 함수에 의해 WndProc으로 보내진다. 만약 메시지 루프에서 TranslateMessage 함수를 빼 버리면 WM_CHAR 메시지는 절대로 WndProc으로 전달되지 않을 것이다.
윈도우즈와 같은 GUI운영체제에서는 키보드보다 마우스가 더 많이 사용된다. 윈도우즈의 공식 입력 장치는 키보드이지만 그래픽 툴이나 DTP, CAD 등의 복잡한 프로그램에서는 마우스가 주요 입력 장치로 사용된다. 키보드 입력 처리를 메시지로 하는 것과 마찬가지로 마우스 입력 처리도 메시지를 받아 처리한다. 마우스 입력에 관한 메시지는 다음과 같은 종류가 있다.
마우스 메시지는 lParam의 상위 워드에 마우스 버튼이 눌러진 y좌표, 하위 워드에 x좌표를 가지며 좌표값을 검출해 내기 위해 HIWORD, LOWORD 등의 매크로 함수를 사용한다. 즉 마우스 메시지가 발생한 위치의 좌표는 (LOWORD(lParam), HIWORD(lParam))이 된다.
- AcceleratedC++/Chapter3 . . . . 9 matches
// >> 연산자는 left operand를 리턴한다.
// count에 1을 더한다.
// sum에 x를 더한다.
* 실패했을 경우에는 stream 초기화를 시켜줘야 한다.(4장에서 보자)
* 평균값 대신에 중간값을 사용하는 프로그램으로 변경한다.
* 하지만.. 중간값은 그렇지가 못하다. 다 저장해놔야 한다. 그리고 sort를 해야할 것이다.
* 이러한 것들을 Telplate Classes 라고 한다. 11장에서 자세히 보도록 하자.
while(cin >> x) // while루프는 값들을 읽어들이면서 homework에 저장한다.
* push_back : vector의 멤버 함수. vector의 끝에다 집어넣는 역할을 한다. 그러면서 벡터의 크기를 하나 증가시킨다.
- AdventuresInMoving:PartIV . . . . 9 matches
워털루에서 대도시로 이사를 가려고 하는데, 이삿짐 트럭을 빌려서 갈까 생각 중이다. 그런데 요즘 기름 값이 하도 비싸서 가는데 기름 값이 얼마 정도 들지 미리 계산해보고자 한다.
이 트럭은 1킬로미터를 가는 데 1리터의 기름이 필요하다. 기름통은 200리터다. 워털루에서 트럭을 빌릴 때는 기름통이 절반만큼 차 있다. 나중에 대도시에서 차를 반납할 때도 기름은 절반 이상 채워 놓아야 한다. 그렇게 하지 않으면 렌탈 회사에 훨씬 비싼 비용을 지불해야 한다. 기름 값은 최대한 아끼고 싶지만, 그렇다고 해서 길 위에서 기름이 바닥나서 멈춰서는 일은 없도록 해야 한다.
각 테스트 케이스에 대해 워털루에서 대도시까지 가는 데 드는 연료비의 최소 값을 출력한다. 문제의 제약조건에 따를 때 워털루에서 대도시까지 갈 수 없으면 "Impossible"이라고 출력한다. 서로 다른 테스트 케이스에 대한 결과 사이에는 빈 줄을 출력한다.
음. 나중에 대도시에서 차를 반납할 때도 기름은 절반 이상 채워 놓아야 한다. 여기서 절반 이상이라는 조건에 주의를 하지 않으면 안됩니다. -- 보창
위의 테스트 케이스를 보면 처음에는 거리가 100인 주유소에 무조건 가야합니다. 그러면 기름은 0이 되고, 스터디때 말한 방법으로 하면 앞의 200까지를 살피고, 가장 작은 가격이 있는 곳인 (200, 777) 까지 갈 수 있는 기름 100을 넣고 출발합니다. 그러나 여기서 살펴보면 최적의 해는 여기서 50만큼의 기름만 넣고, 150의 지점에서 또 50의 기름을 넣어서 (200,777)에 가는 경우입니다. -- 보창
- AseParserByJhs . . . . 9 matches
static bool GetAseAllInfo (FILE *s); // 각 노드의 헤더정보와, 연결된 피지크 정점 개수를 카운트하고 에니메이션 키가 없는 노드의 에니메이션 키를 1로 초기화한다.
static void ReleaseModels (); // s_AllList상의 모든 노드를 삭제한다.
static void UpdatePickedPoint (int &cl_x, int &cl_y, int &width, int &height); // Picking을 위해 윈도우 상의 클릭된 점의 좌표가 월드 좌표계 상에서 얼마인지 계산한다.
각 노드마다 자신의 상위 노드에 좌표계에 기준해서 자신의 좌표계로 이동시켜주는 메트릭스를 생성한다.( -> AniTM)
// : 루트 리스트에 트리 구조로이루어진 모델들을 링크 한다.
// 픽킹을 위해 클릭 된 점의 좌표를 계산한다.
// s_AllList상의 모든 노드를 삭제한다.
pM->bTexture_on = 1; //만약 텍스쳐 버텍스들이 존재한다면 모델객체의 텍스쳐 플래그 온
// !! 여기서.. angle은 왼손 좌표계를 기준으로 한다고 함..
- CppUnit . . . . 9 matches
Visual C++ 6.0 기준으로 설명한다. 다른 언어들에 비해 환경설정을 위해 해야 할 부분이 많으므로 인내심을 가지고 따라해야 한다.
=== include, library directory 맞춰주기 (둘중 하나를 선택한다.) ===
* app 클래스에 다음과 같은 runner 실행을 위한 코드를 추가한다. 다음 코드를 추가함으로써 프로그램 실행시에 GUI Test Runner 가 실행된다.
GUI Programming 을 하기 위해 winmain 이 시작인 코드의 경우(MFC GUI Programming 포함) 콘솔창이 뜨지 않는다. 이 경우 GUI Runner 를 실행해줘야 한다.
Runner 실행코드는 다음과 같이 MFC UI 의 Test Runner 를 이용한다.
코드를 보면 알겠지만, ASSERT 문들에 대해서 전부 매크로를 이용한다. 만일 이를 다른 언어들의 UnitTest Framework 처럼 assertEqual 이나 assert 문으로 쓰고 싶다면, 다음의 문장을 cppunit library 를 include 하기전에 추가해준다.
* 초기 준비할때 삽질하는 경우가 많다. -_-; CppUnit 의 경우는 헤더화일들의 include 순서들이 중요하다. 그리고 MFC 의 경우는 stdafx.h 를 각각의 화일들마다 include 해줘야 한다. (API에서 CppUnit 는 어떨지 궁금해진다.)
|| 다음과 같은 디렉토리 상태라고 가정한다. ||
- DPSCChapter4 . . . . 9 matches
'''Adapter(105)''' 는 다른 인터페이스의 Clients들이 예상할수 있는 형태오 클래스의 인터페이스를 변형시킨다. 즉, Adapter는 양립할수 없는 다른 상황의 두가지의 일을 수행하는 클래스를 상호간연결시키는 역할을 한다.
'''Bridge(121)'''은 적용(implementation)의 추상화를 통한 분리를 통하여 둘에게 독립성을 부여한다.
'''Composite(137)'''은 전체-부분의 계층 나타내기위한 tree구조로 각 object를 구성시킨다. Composite는 client 들이 개별의 object와 object들의 조합을 일정한 규칙으로 다룰수 있게 한다.
'''Decorator(161)'''은 object에게 동적으로 임무와 할일을 부여한다. Decorator는 기능의 확장을 위한 함수에 대하여 유연한 선택을 제공한다.
'''Facade(179)'''는 확장된 시스템에서(하위, 상속받은) interface들의 조합에 대한 일관적인 접근(interface)을 제공한다. Facade는 확장 시스템(하위, 상속받은)을 좀더 사용하게 쉽도록 높은 단계의 interface를 정의한다.
'''Flyweight(189)'''는 많은 수의 잘 만들어진 object들의 효과적인 공유를 가능케 한다.
'''Proxy(213)'''은 다른 object의 조정,관리(control)을 위한 대행자, placeholer를 제공한다.
- Eclipse . . . . 9 matches
Eclipse에서는 내부의 CVS 클라이언트를 사용한다.[[BR]]
1. 원하는 프로젝트에서 {{{~cpp PopUp}}}을 띄우고 Check out As Project 로 가지고 와 작업한다.
* Ctrl + H Search에서 파일 검색, *.java 파일 검색, ;를 검색한다. 아~ 멋진 Search기능 --;
* Ctrl + H Search에서 파일 검색, *.java 파일 검색, * 로 검색한다. String Set을 검색한다.
||Ctrl+Space ||자동완성. 퀵픽스에 버금가는 사기 기능. 내가 무슨 기능을 쓸 수 있는지 자바독과 함께 보여주며 엔터만 치면 구현을 끝내주는 역할을 한다. 혹자는 퀵픽스와 자동완성, 그리고 JUnit만 있으면 어떤 프로그램이든 만들 수 있다고 한다.||
||Ctrl+Shift+F|| code의 정렬해준다. 한라인의 소스가 길어지면(100이상) 포멧팅에 한계 보이기도 한다. ||
- EffectiveSTL/VectorAndString . . . . 9 matches
* new 해줬으면 delete 해줘야 한다는 번거로움.
* 자신이 알아서 메모리 관리 한다.(캬)
* 배열은 제공하지 않는 연산을 제공한다.
* 새로운 메모리를 할당한다.(일반적으로 두배 커진다.)
* 원본 컨테이너안에 있던 객체들을 삭제한다.
* 원본 컨테이너의 메모리를 해제한다.
* n이 현재 size()보다 크면 - 끝에서부터 n - size() 만큼의 빈 공간을 추가한다.
* n이 현재 capacity()보다 크면 - 메모리 재할당한다.
- JosephYoder방한번개모임 . . . . 9 matches
* 너무 당연하게 TestDrivenDevelopment라면 테스트부터 작성해야한다고 생각하고있었는데 TDD가 반드시 TestFirstDevelopment일 필요 없다는 말을 듣고 머리를 얻어맞은 것 같았다. 테스트를 언제 작성하는지가 중요한 게 아니라 테스트를 통해 빠르게 피드백을 얻는 것이 중요.
리펙토링 기본 기법에 관해서는 기본적으로 Rename과 함수 분할 등을 Martin Fowler이 지은 Refactoring책을 통해 알수있다고 했다 이러한 리펙토링을 이용하여 청소할 수 있고 리펙토링은 중요하다고 했다. 이거 좋군. 딱 들은 생각. 우선 리펙토링할때는 이름이 최우선적으로 다루어져야한다고 했는데 가장 설명하기 좋고 듣기도 편했던 부분이다. 그 이유는 이름부터가 단축이면 못알아먹기 때문에~~~!! 이라고했다. 그래서 나는 앞으로 길더라도 의미가 되는 단어를 쓰기로 결심했다. 괜히 이름 단축시키지 말자고.
Refactoring과 Pattern은 누가 누구에 속한 관계가 아니라서 적절히 써야한다고했다. 교집합이었다 그림은. 그래 적절히 써야지라고 생각했다.
강조했던것은 Agile과 Refactoring의 상관관계였는데 둘다 얽히면 굉장한 시너지를 내기 때문에 목적은 달라도 병행해서 쓰면 좋다고했다. Agile을 지금 쓰는 사람 있냐고 물어봤는데 손들기는 뭐했다. Face-to-Face, pair 프로그래밍. Communication 만세다! Agile기법에 대해 Refactoring에 대해 자신의 이념, 이상이 들어간 코드를 만드는 프로그래머가 반대를 한다면 Pair프로그래밍을 통해 '너만의'코드가 아닌 '우리'의 코드라는것을 인식시켜주는게 좋다고 했다. 근데 그런사람이 있을까? 여튼 경험에 우러나온 대답같았다.
adaptiveobjectmodel은 Joseph이 연구하고 있는 분야로 Refactoring의 상황에 맞는 방법과 패턴의 쓰임세를 지정하는 모델이다. 현재 쓰이는 패턴을 모델화해서 정리해서 했다고한다. 책에서나 보던것을 좀더 정확하고 명확하게 근거있게 설명하는것 같았다. 그리고 Refactoring이 필요한 이유에 대해서는 실제로 이렇게 하면 성공을 하기 때문에 리펙토링을 하는것이 좋다고했는데 이것은 다른것에 비해 약한 근거라고했는데 그 이유는 리펙토링을 안한 더러운 코드도 성공을 하기 때문이라고 했다. 하지만 자신있게 말하자면 리펙토링을 하는것은 좋다고했다.
변화 -> 추상화 이고 리펙토링이 잘못됬을 경우 그 결과를 뒤집기는 좀 힘들다고했다. 패턴을 알면 장점이 많단다. 초보자가 패턴을 아는척 하면 다친단다. 테스팅과 패턴을 초보자가 하면 좋다. Refactoring을 좀더 잘할려면 첫 걸음은 Rename부터.. 엄청난 프로그래머는 만드는것이 패턴으로 만들어질 수 있지만 대부분 그렇지 않다고 한다. 그러므로 리펙토링을 통해 수준을 높이는 훈련을 해놓는것이 좋다고한다. 그렇게 하면 의식하지 않아도 된단다.
* throwaway code. 정말 한번만 쓰고 버린다. 다시는 돌아보지 말아야한다.
* 테스트는 구현한 기능이 의도한대로 동작한다는 것을 검증하는 방법임. 테스트를 통해 적절한 피드백을 받을 수 있다면 된다.
- Linux/RegularExpression . . . . 9 matches
리눅스와 같은 유닉스의 클론 운영체제를 하다보면 반드시 익혀야 할 것들이 몇가지 존재한다.
거의 대부분의 유닉스 애플리케이션은 정규식의 사용을 지원한다. 일단 배우면 쓰임이 대단하지만
* [](Character Class) : seper[ae]te 하면 seperate, seperete 모두를 포함한다.
* ^ : [] 안에서는 반대를 뜻한다. [^1-6] 은 1~6이 아닌것들을 의미..
* ()(parentheses) : a(a|b)cde 하면 aacde, abcde 둘다 해당 된다. [a|b]하면 | 를 문자로 처리 하지만 (a|b) 로 ()를 씌어 주면 |를 OR로 해석한다.
* -i(option) : 대소문자 구분을 안한다. 예)egrep -i '^(From|Subject|Date): ' mailbox
PHP에서는 정규식과 관련하여 다음의 네가지 함수를 제공한다.
givenPattern은 "(pattern1)stringA(pattern2)stringB(pattern3) ... (pattern9)stringI"로 입력하여야 한다. 즉 pattern1, pattern2, ..., pattern9는 각각 string1, string2, ... , string9에서 찾고자하는 정규식인 것이다.
- givenPattern이 "(패턴)"으로 묶인 문자열들을 포함하고 있으면, replacementPattern에는 이에 대응하는 "\\digit(문자열)" 형태의 문자열들을 포함하고 있어야 한다(digit는 0, 1, ... ,9 중 하나). 그리고 givenString은 "(패턴)"을 이용해 찾은 결과들을 "\\digit(문자열)"에 있는 "문자열"들로 대체하게 된다. "\\0" 는 givenString 전체에 대해 "(패턴)"의 결과를 적용할 때 이용된다.
- Plugin/Chrome/네이버사전 . . . . 9 matches
* 크롬은 아시다시피 Plug-in을 설치할수 있다 extension program이라고도 하는것 같은데 뭐 쉽게 만들수 있는것 같다. 논문을 살펴보는데 사전기능을 쓰기위해 마우스를 올렸지만 실행이 되지 않았다.. 화난다=ㅂ= 그래서 살짝 살펴보니 .json확장자도 보이는것 같지만 문법도 간단하고 CSS와 HTML. DOM형식의 문서구조도 파악하고 있으니 어렵지 않을것 같았다. 그래서 간단히 네이버 링크를 긁어와 HTML element분석을 통해 Naver사전을 하는 Plug-in을 만들어볼까 한다.
flickr에서 permission을 받아 사진을 긁어오는 플러그인을 만드는것 같다. 파일구성은 HTML안에 스타일을 적용하는 CSS. AJAX, Javascript를 이용하여 (AJAX의 정의를 알아보아야겠다 ) 내용을 구성한다. json을 통해 뭘 하는건가. 흥미롭군.
영어로 보는게 더 자세하지만 난 한국인이라. 간단히 말하자면 인터넷에서 자료를 주고받을때 그 자료형식을 정의하는 문서인데 javascript구문을 사용하는 파일이다. xml보다 web에서 효과적이기 때문에 web상에서 쓰인다고 한다. 좋은거 배우네.
Ajax는 비동기식으로 데이터를 주고받기 위해 (A는 Asyncronous) HTML과 CSS 동적 정보 표시를 위한 동적 언어와 DOM문서형 구조를 가진 XML, json만이 Ajax를 뜻하는 것이 아니라 이런 조합으로 이루어진 비동기 웹 어플리케이션 기법을 뜻한다.
=== 내가 원하는것 ===
* '''이건 매우 강조되어야한다.'''
* inline script를 cross script attack을 방지하기 위해 html과 contents를 분리 시킨다고 써있다. 이 규정에 따르면 inline으로 작성되어서 돌아가는 javascript는 모두 .js파일로 빼서 만들어야한다. {{{ <div OnClick="func()"> }}}와 같은 html 태그안의 inline 이벤트 attach도 안되기 때문에 document의 쿼리를 날리던가 element를 찾아서 document.addEventListener 함수를 통해 event를 받아 function이 연결되게 해야한다. 아 이거 힘드네. 라는 생각이 들었다.
* Chrome extention의 overview를 읽어보았는데 다양한 기능을 지원한다. 그중에 extention에서 기본으로 제공하는 background.html이라는것이 있는데 이것이 extention기능으로 넣어놓은 script를 모두 포함하고 메인 페이지 밑단에 background에서 계속돌아가면서 이벤트 체킹이나 데이타 처리를 해주는것 같았다. 아직도 정확히 모르겠다 - 2012/7/3
- ProjectVirush/Rule . . . . 9 matches
* 명령을 수행하는데는 현실 세계의 시간이 필요하다. 따라서 플레이어는 게임에 접속해서 명령이 수행될 시간을 예약한다. 그리고 예약한 시간에 자신의 명령이 수행되었는지를 다음 번에 확인하고 새로운 전략을 세운다.
* 생명체가 숙주이며 이차원 공간(지구표면)에 넓게 분포한다.
* 숙주 안에서 잠복한다. 이 때는 숙주의 면역 반응을 일으키지 않는다.
* 숙주 안에서 잠복기가 지나면 급격히 증식한다.
* 숙주가 감염 유발 행동을 하도록 만들어서 다른 숙주를 만났을 때 감염시키도록 한다.
* 번식한다. 즉 새로운 숙주를 탄생시킨다.
* 숙주는 기본적으로 모든 바이러스를 잡을 수 있는 항체를 어느 정도 갖는다. (이를 '''기본 항체'''라고 한다.)
* 기본 항체가 새로운 바이러스를 잡기에 모자라는 경우(바이러스 사살 속도<바이러스 증식 속도), 숙주는 새로운 바이러스임을 알아차리고 이에 특화된 항체를 생산한다. 특화된 항체는 기본 항체보다 바이러스 사살 속도가 빠르다.
* 플레이어끼리 암투 - 상대 약점을 이용해서 경쟁한다. 자기 바이러스에 유리하도록 숙주를 조종하거나 상대 바이러스에 대한 면역이 생기도록 일종의 예방접종용 바이러스(백신)을 퍼트린다.
- PyIde/SketchBook . . . . 9 matches
* 몇몇 생각 - 소스코드에 대해 flat text 관점으로 보지 못하도록 강요한다면, 구조적으로만 볼 수 있게끔 강요한다면 어떤 일이 일어날까. 어떠한 장점이 생기고 어떠한 단점이 생길까.
''스몰토크 비슷한 환경이 되지 않을까. 소스 코드의 구조적 뷰로는 LEO라는 훌륭한 도구가 있다. 크누스교수의 Literate Programming을 가능케 해주지. 나는 SignatureSurvey를 지원해 주면 어떨까 한다. --JuNe''
''계속 생각했던것이 '코드를 일반 Editor 의 문서로 보는 관점은 구조적이지 못하고 이는 필요없는 정보를 시야에 더 들어오게끔 강요한다. 그래서 구조적으로 볼 수 있도록 해야 한다.' 였는데, SignatureSurvey를 생각하면 정말 발상의 전환같다는 생각이 든다는. (코드를 Flat Text 문서를 보는 관점에서 특정정보를 삭제함으로서 새로운 정보를 얻어낸다는 점에서.) --[1002]''
하지만, 손가락 동선의 경우 - ctrl + O 를 누르고 바로 메소드 이동을 한다. 일반 이동도 메소드 중간 이동은 CTRL +커서키. (이는 VIM 에서의 W, B) 위/아래는 커서키. 클래스로의 이동은 CTRL+SHIFT+T. Source Folding 도 주로 Outliner 에 의한 네비게이팅을 이용한다면 별로 쓸 일이 없다. 보통 의미를 두고 하는 행동들은 클래스나 메소드들 단위의 이동이므로, 그 밑의 구현 코드들에 대해 깊게 보지 않는다. (구현코드들에 대해 깊게 보는 경우가 생긴다면 십중팔구 Long Method 상황일것이다.)
Python 으로 HTML Code Generator 를 작성하던중. 좀 무식한 방법으로 진행했는데, 원하는 HTML 을 expected 에 고스란히 박아놓은 것이다. 이는 결과적으로 test code 를 네비게이팅 하기 어렵게 만들었고, 해당 Generating 되는 HTML 의 추상도도 상당히 낮게 된다. 한화면에 보여야 할 HTML 데이터도 많아야 한다. 이는 결국 내가 에디터 창을 최대로 놓게 만들더니, 더 나아가 에디터 창의 폰트 사이즈을 11에서 8정도로 줄이고 모니터를 앞당겨 보게끔 만들었다. (15인치 LCD 모니터여서 해상도가 최대 1024*768 임.) 해당 상황에 대해 사람이 맞추는 것이 좋을까, 또는 툴의 Viewing 이 도움을 줄 방법이 있을까, 또는 사람이 이를 문제상황으로 인식하고 프로그램 디자인을 바꾸게끔 하는것이 좋을까.
- RedundantArrayOfInexpensiveDisks . . . . 9 matches
stripe 라고도 하며, 저가형 RAID 카드에서 주로 지원하는 방식이다. 하드 디스크의 속도를 향상시킬 목적이라면 이것이 최적이다. 병렬로 하드 디스크들을 묶어서, 데이터를 읽거나 쓸때 병렬로 기록하고, 병렬로 읽어오는 방식이다. 이론상으로는 n 개의 하드디스크를 stripe 로 묶었을때 n 배의 성능 향상이 있게 된다. 묶인 하드 디스크들이 하나의 논리적인 드라이브를 구성하는 방식이며, 이것이 하드웨어 레벨에서 지원되기때문에 OS 에서는 완벽하게 하나의 하드디스크로 동작한다. 단점으로는, 하나의 하드 디스크에 결함이 생겼을때, 논리적으로 하나인 드라이브이므로, 같이 사망 되겠다.
shadowing 혹은 mirroring 이라고 부르며, 단어 그 자체 대로, 여러개의 디스크에 완벽하게 동일한 자료를 저장한다. 물론 읽어오는 작업을 할 때에는 병렬로 읽어올 수 있기때문에 성능향상이 있지만, 쓰기작업을 수행할때는 하나의 디스크를 사용하는 것과 차이가 없다. 조금 무식한 방법이지만 자료의 무결성을 보장하려고 할때 가장 확실한 방법이기도 하다.
워드를 바이트 단위로 쪼개서 스트라이프 하고, 그에대한 ECC 코드를 ECC 디스크들에 저장한다. ECC 에 의해 실시간으로 에러 정정이 가능하며 빠른 읽기가 가능하다. 다만, 자료를 기록할때마다 ECC 가 그에 반영되어야 하므로 ECC 디스크들에 병목현상이 나타날 수 있으며, 이 이유로 쓰기 성능은 그다지 향상되지 않는다. 이 레벨의 RAID 를 지원하는 하드웨어는 없다.
디스크들을 스트라이프 하고, 하나의 다른 디스크에 스트라이프 된 디스크들의 패리티를 저장한다. 비교적 간단하게 구현되는 편이며, 이것 역시 RAID 2 처럼 패리티 디스크에 병목현상이 발생한다.
RAID 3 과 4 와 비슷 하지만, 패리티가 하나의 독립된 디스크에 저장되지 않고, 스트라이프를 구성하는 각 디스크에 분산되어 저장된다는 점이 다르다. 이로 인해서 패리티 디스크에 부담을 막을 뿐만 아니라 패리티 디스크의 병목현상까지 방지한다.
기본적으로 RAID 5 와 비슷한 구성이다. 2-dimentional array 로 디스크들을 구성하며, 각각의 row 와 column 에 패리티를 사용하여 두개까지의 디스크가 동시에 문제를 일으키더라도 정상 동작을 가능하게 한다. 1987년에 제정된 최초의 RAID 표준으로부터 처음 나온 추가 레벨이다.
- Refactoring/BuildingTestCode . . . . 9 matches
프로그래머들이 시간을 쓰는 것을 가만히 살펴보면, 실제 코드를 쓰는 시간은 작은 부분이고 대부분의 시간을 디버깅에 소비한다. 그리고 버그를 찾는 데 많은 시간을 보내고 수정하는 것은 금방이다. 모든 프로그래머들은 버그를 찾느냐고 밤새었던 이야기들을 하나 둘 이상은 가지고 있을 것이다. ^^; 게다가 버그 하나를 잡아도 여전히 다른 곳에서 버그가 생길 가능성이 있다. 이렇게 되면 버그를 잡는데 많은 시간을 소비한다.
나로하여금 self-testing code로의 길을 시작하게 한 계기는 OOPSLA '92의 한 이야기부터였다. 그때 누군가 (아마도 Dave Thomas)"클래스는 자기 자신의 테스트코드를 가지고 있어야 한다" 라는 말을 했다. 이 말은 테스트를 구성하기 위한 좋은 방법으로 여겨졌다. 나는 모든 클래스에 클래스 스스로를 테스트하는 메소드들 (''test''라 한다.)들을 가지도록 만들었다.
그리고 이것이 실제로 프로그래밍 속도를 높인다는 것을 경험해보지 않으면 self-testing 코드는 사람들이 이해해주지 못한다. 그리고 테스트가 수동이라면 이것은 지루할 것이다. 하지만 테스트가 자동화된다면 테스트 코드를 쓰는 것은 꽤 재미있는 일이 될 것이다.
사실 테스트 코드를 작성하기 위한 가장 좋은 때는 프로그래밍을 시작하기 전이다. 어떤 기능을 추가해야할 때, 테스트 코드를 작성하는 것으로 시작한다. 이것은 뒷걸음질 치는 것이 아니다. 그 기능을 추가하기 위해서 어떤 것들이 행해져야 하는지 스스로에게 물어보는 것이 된다. 그리고 테스트 코드를 쓰는 것은 구현보다는 인터페이스에 집중할 수 있게 해준다. (그리고 이것은 언제나 좋은 것이다)
이정도에서 이야기는 충분하다 본다. 비록 내가 self-testing code를 작성하는 것이 모두에게 이익이 된다고 생각하더라도, 그것은 이 책의 핵심이 아니다. 이 책은 Refactoring에 관한 것이다. Refactoring은 test를 요구한다. 만일 Refactoring 하기 원한다면, test code를 작성해야 한다.
- STL/vector/CookBook . . . . 9 matches
* 몇 번 써본결과 vector를 가장 자주 쓰게 된다. vector만 배워 놓으면 list나 deque같은것은 똑같이 쓸수 있다. vector를 쓰기 위한 vector 헤더를 포함시켜줘야한다. STL을 쓸라면 #include <iostream.h> 이렇게 쓰면 귀찮다. 나중에 std::cout, std:vector 이런 삽질을 해줘야 한다. 이렇게 하기 싫으면 걍 쓰던대로 using namespace std 이거 써주자.
* 우리가 여태까지 배운 거만 써보면 이렇게 고칠수 있다. 그 유명-_-한 동적배열이다.--; 아.. delete [] 저거 보기 싫지 않은가? c와 c++의 고질적인 문제점이 바로 저거다. 메모리 관리를 프로그래머가 해줘야 한다는거.. 자바 같은건 지가 알아서 delete 해주지만.. c나 c++에서 delete 안해주면.. X되는 꼴을 볼수 있다. (본인이 한번 경험해 봤다.) 그래서 잘 디자인된 클래스는 클래스 내에서 알아서 없애줘야 한다. 바로 vector를 쓰면 저 짓을 안해줘도 된다. 또 고쳐보자.
* 또 하나 살펴볼게 있다. 아까 예제에서는 반복자로 벡터 내부를 순회했었다. 하지만 벡터는 임의접근을 허용한다. 배열처럼 ar[4] 이런식으로 쓸수 있단 말이다. 편한대로 써주자.
* resize() 메소드는 벡터의 크기를 다시 잡아주는 역할을 한다. 잘 쓰자
* 덩치가 큰 자료형을 container에 저장할때 마다 복사가 수행된다면, 많은 낭비가 발생한다.
* 그래서 pointer만을 이용해서 저장하자. 하지만 쓸모 없는 객체는 우리가 지워줘야 한다. 포인터를 넣어줄때에는, 컨테이너가 소멸될때는 포인터들은 지워지겠지만. 그 포인터들이 가르키는 값들은 지워지지 않기 때문이다.
* 노파심에서 말하는 건데.. 함수로 객체를 넘길때는 꼭 참조! 참조! 입니다. 값이 안 바뀌면 꼭 const 써주시구여. 참조 안 쓰고 값 쓰면 어떻게 되는지 이펙티브 C++에 잘 나와 있습니다.(책 선전 절대 아님) 복사 생성자를 10번 넘게 호출한다는 걸로 기억함.
- TestFirstProgramming . . . . 9 matches
어떻게 보면 질답법과도 같다. 프로그래머는 일단 자신이 만들려고 하는 부분에 대해 질문을 내리고, TestCase를 먼저 만들어 냄으로서 의도를 표현한다. 이렇게 UnitTest Code를 먼저 만듬으로서 UnitTest FrameWork와 컴파일러에게 내가 본래 만들고자 하는 기능과 현재 만들어지고 있는 코드가 하는일이 일치하는지에 대해 어느정도 디버깅될 정보를 등록해놓는다. 이로서 컴파일러는 언어의 문법에러 검증뿐만 아니라 알고리즘 자체에 대한 디버깅기능을 어느정도 수행해주게 된다.
테스트코드 자체가 일종의 도큐먼트역할을 하기도 한다. 테스트 코드를 만들면서 자신이 하려는 일과 문제상황을 구체화 시켜간다.
테스트코드가 완벽할 순 없다. 하지만, 테스트코드가 모든 에러를 잡아내지 못한다는 이유로 많은 버그들을 줄일 수 있는 테스트코드를 작성하지 않을 이유는 없다.
요새는 ["TestDrivenDevelopment"] 라고 한다. 단순히 Test 를 먼저 작성하는게 아닌, Test 주도 개발인 것이다. TestDrivenDevelopment 는 제 2의 Refactoring 과도 같다고 생각. --["1002"]
프로그램이 길어지다보면 Test Code 또한 같이 길어지게 된다. 어느정도 Test Code 가 길어질 경우에는 새 기능에 대한 테스트코드를 작성하려고 할 때마다 중복이 일어난다. 이 경우에는 Test Code 를 ["Refactoring"] 해야 하는데, 이 경우 자칫하면 테스트 코드의 의도를 흐트려뜨릴 수 있다. 테스트 코드 자체가 하나의 다큐먼트가 되므로, 해당 테스트코드의 의도는 분명하게 남도록 ["Refactoring"] 을 해야 한다.
후자의 경우는 해당 코드의 구조를 테스트해나가는 방법으로, 해당 코드의 진행이 의도한 상황에 맞게 진행되어가는지를 체크해나가는 방법이다. 이는 MockObjects 를 이용하여 접근할 수 있다. 즉, 해당 테스트하려는 모듈을 MockObject로 구현하고, 호출되기 원하는 함수들이 제대로 호출되었는지를 (MockObjects 의 mockobject.py 에 있는 ExpectationCounter 등의 이용) 확인하거나 해당 데이터의 추가 & 삭제관련 함수들이 제대로 호출되었는지를 확인하는 방법 (ExpectationList, Set, Map 등의 이용) 등으로서 접근해 나갈 수 있다.
아까보다 훨씬 수월하게 진행되었고, 그 결과를 눈으로 확인했고, 결과를 눈으로 확인한뒤 '완료' 했다. TFP 라면 이를 코드로 작성하여 자동화 할 것이다. 자동화된 테스트는 앞으로의 추후 모듈 수정시에도 앞에서 내가 원하는 기능들이 여전히 작동함을 보장해준다.
Random 은 우리가 예측할 수 없는 값이다. 이를 처음부터 테스트를 하려고 하는 것은 좋은 접근이 되지 못한다. 이 경우에는 Random Generator 를 ["MockObjects"] 로 구현하여 예측 가능한 Random 값이 나오도록 한 뒤, 테스트를 할 수 있겠다.
이 경우에도 ["MockObjects"] 를 이용할 수 있다. 기본적으로 XP에서의 테스트는 자동화된 테스트, 즉 테스트가 코드화 된 것이다. 처음 바로 접근이 힘들다면 Mock Server / Mock Client 를 만들어서 테스트 할 수 있겠다. 즉, 해당 상황에 대해 이미 내장되어 있는 값을 리턴해주는 서버나 클라이언트를 만드는 것이다. (이는 TestFirstProgramming 에서보단 ["AcceptanceTest"] 에 넣는게 더 맞을 듯 하긴 하다. XP 에서는 UnitTest 와 AcceptanceTest 둘 다 이용한다.)
- WebGL . . . . 9 matches
[Javascript]임에도 불구하고 마치 C프로그래밍 스타일의 함수들이 존재한다. [WinAPI]가 C스타일의 [OOP]이듯 WebGL 또한 C스타일의 OOP이다. 모든 함수는 WebGLcontext라는 객체에 있는데 보면 그냥 접두어를 붙이는 느낌이다.
* WebGL은 기존 OpenGL과 다르게 직접 그리기가 지원되지 않는다. 기존의 glBegin()와 glEnd()사이에서 값을 계속적으로 전달하수 없고 오직 glDrawElement()를 통한 배열을 한꺼번에 전달하는 것'만' 지원한다. 초보자들의 첫난관이다.
* 광원, 카메라 조작, 회전 등이 제공되지 않는다. 모두 자신이 직접 연산을 통해 행렬을 구해주어야 한다. 초보자들의 둘쨰 난관이다.
* 쉐이더를 짜지않으면 쓸수가 없다. 심지어 텍스쳐를 입히는 것도 쉐이더에서 처리한다. 그냥 단색으로 처리하는 코드도 쉐이더 코드를 짜지 않으면 그냥 햐얀 것만 보게된다. 그리고 그것도 회전시킬수도 없다.
Attribute는 각 포인트 별로 전달되는 정보이고 uniform 은 전체에서 공통적인 정보이다. 일반적으로 Attribute는 각 정점의 위치 정보와 각 지점의 법선 벡터 정보를을 전달한다. uniform은 일반적으로 카메라의 위치나 환경광의 위치처럼 전체적인 것을 전달한다. Attribute나 uniform은 일종의 변수인데 핸들을 얻어와서 그것을 통해 값을 전달할수 있다. 즉 Atrribute나 Uniform은 Javascript측에서 쉐이더로 정보를 보내는 것이다. varying은 쉐이더 간의 정보 전달에 사용된다. vertex shader에서 fragment shader로 값이 전달되며 반대는 불가능하다(파이프라인 구조상 당연한 것이다). 이때 vertex shader는 각 정점(꼭지점) fragment shader는 각 픽셀에 한번 호출되게 되는데 각 정점 사이의 값들은 [보간법]을 거쳐 전달되게 된다(그라디언트 같은 느낌이다 중간값을 알아서 만들어 준다).
각 쉐이더는 동시에 동작할수 있는데 당연히 이들은 서로간에 독립적이어야 한다.
쉐이더는 쉐이더 언어로 따로 짜주고 컴파일 해야하며 심지어 링크까지 시켜주어야 한다. GPU의 강력한 [행렬]연산 능력을 가져다 쓰기 위해서인것으로 보이는데 이것을 사용하지 않고서는 예제파일도 돌려볼수가 없다. 다행이 언어는 C언어와 매우 유사하고 행렬연산이 모두 있기 때문에 딱히 어렵거나 하진 않다. 다만 어느부분에서 어디와 연결되는지 이해하는데 시간이 걸린다.
각 정점(vertex, 꼭지점)마다 호출되며 주로 꼭지점의 위치를 연산하고 실제 View에 투영하는 연산을 주로 하게 된다. 한마디로 모델의 위치 변환과 카메라 시점에 따른 변환 원근법을 적용하는 변환등을 수행한다.
- WinCVS . . . . 9 matches
1. WinCVS를 사용하기 위해서는 Python과 TCL이 깔려있어야 한다.
* Path : CVS파일들(저장소)의 주소를 설정한다.
3. Global탭은 필요한 것들만 수정한다.
* External Diff Program : 파일을 비교할 프로그램을 설정한다.
* Default viewer used to open : 파일을 볼때 쓸 프로그램을 설정한다. 메모장정도면 충분하다.
3. Create - Import module 를 선택한다.
- 여기서 모듈을 리스트의 형태로 표시해주지 않기 때문에 직접 수동으로 이름을 넣어주어야 한다.(약간은 불편하다.)
1. 이렇게 수정한 파일을 저장소에 보관해야한다.
2. Modefy - Commit(Ctrl + M)을 선택한다.
- XMLStudy_2002/Resource . . . . 9 matches
=== XML을 지원하는 응용 프로그램 개발시에 사용되는 라이브러리/패키지(소스 레벨에서 사용할수 있는 도구들임) ===
XML 파서,XSL 프로세서,DOM 라이브러리, XSLT 프로세서(예를 들어서 만약 Java로 된 API를 지원한다면 XML 파싱기능을 해주는 Java 클래스들을 패키지로 묶어둔 Java 클래스 패키지라는 형태로 제공된다)
*[http://www.w3c.org] : 항상 최신의 변화들을 업데이트 ,스펙의 새 버전이나 새로운 표준에 대한 요구사항이나 드래프트들이 가장 먼저 올라오는 곳 XML을 찾아 클릭한다.
*XML 파서는 문서를 Validation해 주며,XML 문서 구조를 트리 형태로 구성한다. 이런 파싱에 대한 것만을 지원하는것이 XML 파서이나 현재에는 파싱 작업 뿐 아니라 DOM이나 SAX같은것을 지원하여 XML 문서를 처리할수 있도록 하는 부분도 함께 포함된 도구들이 많다. 이런 도구들을 훈히 XML 프로세서라고 할수 있다.
*XML Software의 XML Parsers/Processors 홈페이지 : XML 파서와 파싱 및 DOM이나 SAX를 지원하는 XML 프로세서에 대한 간단한 설명과 라이센스 상태와 다운로드 받을수 있거나 또는 해당 프로세서의 메인 페이지로 이동할 수 있는 링크를 포함 하고 있다. 수십개 이상의 프로세서에 대한 정보가 있어 거의 모든 파서를 찾을 수 있다. [http://www.xmlsoftware.com/parsers/]
*XML.com의 Resource Guide 중 XML Parsers : 여기에서도 여러 파서들에 대한 목록을 제공한다. 목록에서는 각 파서에 대한 설명이 간단하게 되어 있지만, 각 파서 이름을 클릭하면, XML.com의 Editor 중의 한 사람인 Lisa Rein이 평가한 내용들이 기술되어 있고, 해당 파서의 메인 페이지나 다운로드 페이지로 이동할 수 있는 링크를 포함하고 있다. [http://www.xml.com/pub/Guide/XML_Parsers]
*최신 버전을 설치한다.
*두번째 : 받아서 실행한다.
- ZIM/EssentialUseCase . . . . 9 matches
|| 1. 사용자의 ID와 암호를 입력한다. || 2. 등록된 사용자인지 ID와 암호를 비교한뒤 결과를 보낸다. ||
|| 1. 파일을 받을 지머(Zimmer)와 보낼 파일을 선택한다. || 2. 파일을 전송한다. ||
|| 1. 화일 이름 & 용량을 확인한뒤 화일수신수락여부를 결정한다. || 2. 파일을 수신한다. ||
|| 1. 파일을 받을 지머(Zimmer)를 선택한다. || . ||
|| 2. 메세지창에 문자를 입력한다. || 3. 해당 Zimmer에게 문자를 전송한다. ||
|| . || 2. 현재 열려있는 대화창의 유저를 확인하고 새 대화창을 열거나, 해당 대화창에 문자를 출력한다. ||
- lostship/MinGW . . . . 9 matches
* MinGW 인스톨 후 MSYS 를 인스톨 한다. [http://www.mingw.org/index.shtml MinGW & MSYS]
* 환경변수 path 에 /MinGW/bin 을 추가 한다.
* /STLport-4.5.3/doc/index.html 에서 컨피그 셋팅을 보고 필요하면 수정한다.
* STLport iostreams 을 사용하려면 다음 스텝을 진행한다.
* /mingw/STLport-4.5.3/src 로 이동한다.
* make -f gcc-mingw32.mak clean install 를 실행한다. 그러면 /STLport-4.5.3/lib 에 생성된다.
* .dll.4.5 파일들을 path 가 잡힌 디렉토리로 복사 한다.
* /STLport-4.5.3/stlport/config 에 있는 stl_gcc.h 에서 다음을 수정한다.
* ../g++-v3 를 c++/3.2 로 바꾸도록한다.
- 비행기게임 . . . . 9 matches
* 2인용 대결 모드. 상대편과 내가 일정한 시간후에 만난다.. 그 중간 과정에서 얼마나 많은 컴퓨터 적을 격추 했는지에 따라서 무기를 업그레이드 하거나 한다.
* 그리고 비행기 게임을 하면 보통 자기 비행기 하나 빼고 나머지는 다 적군이서 막 생각없이 미사일 버튼만 누루면서 갈기는데 그것 보다 아예 적기가 나오면서 동시에 아군 비행기도 적당히 등장해서 자신을 돕게 한다. 아군 비행기는 자신의 미사일에도 격추된다. 더 신중하게 미사일을 누루게 될것이다. 그리고 아군 비행기를 격추할시에는 일정한 벌칙이 있다. 무기가 한단계 안좋아 진다든지 하는 식으로.
* 적기를 막 쏘기 보다는 적기의 특정한 부분을 맞추면 적기가 더 잘 부서지게 한다. 예를 들어서 다른 부분에 맞으면 적기가 2번 만에 죽는데, 왼쪽 날개 끝에 맞으면 단번에 죽는 식으로..
* 음... 적기를 삼키는 비행기.. 적의 미사일은 피해야 한다. 자기는 미사일이 없고 적기를 삼켜야 적기를 폭파할 수 있다.
암튼. 초반의 열정이 후반의 끈기로 이어지려면, 해당 일에 대한 좋은 방법들을 중간에 계속 궁리하고, 적용해봐야겠지. 개인적인 조언이라면, 초반에 너무 그래픽 등에 많이 신경쓰지 않는것이 낫다고 생각함. 일단은 전반적인 틀과 게임 엔진을 만든다는 기분으로 하고, 그 엔진이 자신이 원하는 아이디어를 수용할 수 있는가에 더 촛점을 맞추는게 낫지 않을까 함. 단, 생각은 전반적인 부분을 보되, 구현을 쉽게 하기 위해서는 구체적 예제 데이터를 가지고 작업하는것이 효율적이겠지. 그리고 그 예제 데이터를 기반으로 일종의 SpikeSolution식으로 구현을 한뒤, 그 구현된 프로그램을 보고 다시 코드를 작성하던지 또는 ["Refactoring"] 해서 일반화시키던지.(새로 짜도 얼마 시간 안걸림. 예상컨대, 아마 중반에 소스 한번 뒤집어주고 싶은 욕구가 날껄? 흐흐) --["1002"]
한가지 더 개인적인 조언을 추가한다면, 일단 지금 생각나는 '앞으로 해야 할일들' 을 좌악 정리하길. 그 다음 그 일들에 순위를 매겨서 일들을 해 나가는거지. 그러다가 중간에 '예상치 못했던, 하지만 해야 할 일들' 을 만나면, 앞에서 적은 그 리스트에 항목을 추가해주고 그 일을 하는거지. '내가 해야 할 일들이 너무 많아' 라고 생각될 때 추천하고싶은 방법임. --["1002"]
'' 미안.. 나두 열심히 해주고 싶은데.. 잘 안되네.. 지금 와서 계속 한다고 하기도 미안하고 빠진다고 하기도 미안하고.. ㅠ.ㅠ''
개인적으로 '형은 뭐 먼저 했어요?' 라고 질문한다라면, '나는 DirectX 7.0 의 Space donut 소스 분석한뒤 만들었지만, 꼭 DX를 볼 필요는 없다' 라고 말해주고 싶군.
일단은 작은 아이디어를 하나 정한다음 (그 뭐다냐.. 총알 피하기 폐인 게임같은거) 완성시킨뒤, 프로그램을 키워가는 것도 좋을듯. --["1002"]
- 새싹교실/2012/개차반 . . . . 9 matches
* High-Level 언어를 Low-Level 언어로 변환해주는 역할을 한다
* 이미 존재하는 함수를 가져다 쓰려 할 때 헤더파일을 불러와서 사용한다
* 변수의 이름은 반드시 문자나 underscore (_) 로 시작해야 한다
* 변수의 이름은 대소문자를 구분한다
* 변수에 저장할 수 있는 값보다 더 큰 값이 저장되었을 때 발생한다
* scanf의 & : 입력받는 값을 &뒤에 위치한 변수에 저장하기 위해 메모리에 존재하는 변수의 위치를 알리는 역할을 한다
* a와 b의 비트를 비교하여 서로 다르면 0, 서로 같다면 1로 표현한다
* a와 b의 비트를 비교하여 하나라도 1이라면 1로 표현한다
* a와 b의 비트를 비교하여 서로 다르다면 1, 서로 같다면 0으로 표현한다
- 새싹교실/2012/해보자 . . . . 9 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* sizeof(parameter): 매개변수가 가지고 있는 메모리상의 바이트 단위의 정수를 반환한다.
* overflow: 변수가 표현할 수 있는 범위를 넘어선 데이터를 대입할때 나타나는 현상으로, 데이터의 손실이 일어난다. 프로그래밍할 때 오버플로우를 조심해야 한다!
* 변수를 참조할 때 지역변수를 전역변수보다 우선으로 참조한다.
강재곤 후기 : 변수에 대해 배웠다. 첫날이라 많은 내용을 배운게 아니라 부담은 없었다. 오버플로우가 일어나면 자료의손실이 일어나므로 조심해야 한다는 것을 알았다. 다음시간부턴 직접 실습을 해보고 싶다
- 논리연산자로 연결한다. ex) if(x==2&&y==3)
* putch(): 입력 버퍼에 있는 값을 화면에 출력한다. 얘도 마찬가지로 이 처리만 하고 끝난다.
* 함수의 정의: 컴파일러에게 '이런 이런 함수는 이런 이런 일을 한다'라고 알리는 것.
int count=2//여기서 count 변수까지 동원하는 데에는 이유가 있습니다. 나중에 배열 배울 때 다시 알려드립니다.
- 이성의기능 . . . . 9 matches
* "피로는 이성의 反 이다." 피로는 새로움을 향한 충동을 제거시키는 작용을 한다. 피로는 하향, 이성은 상향. 피로를 거부하는 이성의 작용
저자가 수학자이고 물리학자이면서 추후에 철학자가 되어서 그런지, 중간중간 물리학의 개념또는 수학이 추구하는 논리의 엄밀성에 대한 무게중심등이 보인다. 시간의 흐름. 역사를 '상향적 기운' 과 '하향적 기운' (이것은 물리에서의 엔트로피의 개념이 들어온 것 같다.) 으로 나누고, 그 중에서 '상향적 기운'. 즉 , 무질서도를 바로 잡으려는 노력에 대해 '이성'이라는 개념을 끌어온다. 삶에는 여러가지 정신이 존재하고, 이 정신은 일종의 '무정부적인 욕망'으로 보며, 그 무정부적인 욕망속에서 질서를 잡는 욕망중의 욕망을 '이성' 이라고 정의한다.
중반부에 사변이성과 실천이성에 대해 설명을 하면서 '과학적 방법' 이라는 것의 위험함을 이야기하면서 (귀납적 방법) 귀납적 방법으로부터 시작해서 일반화시키는 과정에서의 사변이성의 중요성을 꺼내온다. 일상 생활의 경험으로부터 세상을 이해하고 잘 살기 위해 만들어내는 효율적 법칙을 만들어내고 (방법론, 실천이성) 급기야는 그 방법론 자체에 대해 반성하며, 전반적 세계에 대한 하나의 이해의 통찰을 만들어내는 사변이성을 이야기한다. (세계를 구성해내는 원리를 이해하려는. 형이상학 정도로 생각하면 될듯.)
* 이제 나는 인간의 환경에 대한 능동적 공격을 설명하는데 다음의 3중의 충동이 자리잡고 있다고 하는 테제를 제의한다. 1) 산다. 2) 잘 산다. 3) 더 잘 산다. 실상 삶의 기술이란 첫째, 생존하는 것이며, 둘째, 만족스러운 방식으로 생존하는 것이며, 셋째, 만족의 증가를 획득하는 것이다.
* 아래로부터의 이성의 진화라고 하는 것은 비교적 짧은 예견의 시간범위에서 아주 실용적으로 이루어진 것이다. 이성으로부터 도출되는 아주 원초적이고 깊숙이 자리잡는 만족감, 기억할 수 없는 태고의 유전에서부터 우러나오는 그런 만족감은, 현재의 실천을 규제하는 어떤 방법을 강조적으로 명료하게 함으로써 제공될 수 있다. 그러한 방법이 현실적으로 기능하면 이성은 만족된다. .. 사실은 인간의 호기심을 그 방법의 범위내로 제한시키려는 또 하나의 적극적인 관심이 있는 것이다. 그러한 관심이 패배당할때는 정서적으로 적개심이 일어나게 되는 것이다. 그러면 경험론은 사라진다. ... 한 방법론이 이미 낡아버렸다는 주요 증거는, 그 방법내에서 일어나는 진보가 더 이상 주요 잇슈들을 취급하지 못한다는 사실로 입증된다. 사소한 문제들에 끊임없이 시비하고 있는 마지막 단계에 온 것이다. ... 그 방법의 범위내에서 성취할 수 있는 더 큰 대비들이 다 탐구되었고 또 친근하게 되어버렸다. 그리고 반복으로부터 생기는 만족감도 시들시들해져 버린다. 그러면 생명은 그 운명을 결정하는 마지막의 선택의 기로에 국면하게 되는 것이다.
이 마지막 선택의 기로는 이미 내가 앞에서 언급한 삼중의 충동이라는 성격에서 유래되는 것이다 : 산다, 잘 산다, 더 잘산다! 한 방법론의 탄생이라는 것은 본질적으로 살려고 하는 안전한 방법의 발견이다. 그것은 전성시대에은 좋은 삶을 위한 긴박한 조건들을 만족시킨다. 그러나 좋은 삶이라고 하는 것은 불안정한 것이다. 피곤의 법칙이 용서없이 엄습한다. 삶의 어떠한 방법론이라도 그 범위내의 신선함을 다 고갈시키고, 또 피로가 물밀쳐올때까지 그 신선한 것들을 다 써먹어버리게 되며, 하나의 마지막 결단이 그 종의 운명을 결정한다. 하나는 그 자신을 안정적으로 만들고 그냥 생존하는 수준으로 퇴행해버리는 것이요; 또 하나는 과거의 관습들을 자유롭게 떨쳐버리고, 더 잘 사는 모험을 시작하는 것이다.
이 두개의 기로에서 후자의 경우, 그 종은 낡아빠졌지만 아직 지배적인 방법의 범위르 벗어나 잡다한 경험의 혼돈속에 감추어져 갓 태어나기 시작하는 방법론의 하나를 포착한다. 그 선택이 재수좋게 맞아떨어지면, 진화는 상향의 코스를 취하기 시작한다. 재수없게 안 맞아떨어지면, 시간의 망각이 사라진 종의 흔적위로 면사포를 드리운다.
- 이영호/개인공부일기장 . . . . 9 matches
※ Assembly 어를 확실히 마스터 해야한다.
Block 단위로 Assembly어를 해석, 해독 할 수 있어야한다.
☆ 1일 (월) - struct task_struct 의 SUPERUSERBIT를 flagon 시킬 수만 있다면 root의 권한을 얻을 수 있다. kernel의 조작에는 회의적이지만 간접적으로 만질 수 있는 방법을 찾아봐야한다.
- 26 (화) - malloc, new로 생성되어지는 메모리 구조. dynamic memory alloc은 변수(클래스)앞 1WORD(32비스에서 4바이트) 앞에 정보(크기, 위치, 사용)를 저장한다.
나만 제외하고 대학이 그러니... 내 인생이 나를 끌어당기기 시작한다. 여기에 하루하루 내가 공부한 내용을 적으려한다.
즉, 10년이 지나서 내가 걸어온 길이 제대로 된 길이어야한다. 미래를 바라보며 공부를 시작해보자.
수학, 물리학, 영어가 내 바탕이 되어있어야한다.
내 정신의 한계가 이 세개만을 받쳐준다. 다른 것들은 차차 조금씩 늘리기로 한다.
- 페이지제목띄어쓰기토론 . . . . 9 matches
* 영문 제목의 경우 모두 빈칸을 붙여서 사용한다. (제목으로 표시될때 자동으로 단어의 대문자 단위로 빈칸을 띄어주므로)
* 한글 제목의 경우 붙여쓰기를 기본으로 하되, 띄어쓰기도 허용한다. (띄어쓰기에 따른 효과는 아직 검증되지 않았으므로, 별다른 제약을 가하지 않기로 함)
* 제목중 특수문자는 일단 자유롭게 허용한다.
저는 위에서도 언급했지만, 공백을 넣는것은 한글에서는 반드시 필요하다고 생각합니다. 띄어쓰기의 배제는 언어 자체의 특성을 제한을 제공한다고 생각합니다. --상민
우선, 한국어는 영어와 달리 띄어쓰기를 하지 않아도 크게 불편하지 않습니다. 문자와 말의 특성 때문입니다. 하지만 이것이 띄어쓰기를 한 경우보다 정보 손실이 있다는 점은 사실입니다. 현재 모인모인에서는 {{{~cpp ["..."]}}}를 이용해서 확장위키이름을 사용하는 한, 띄어쓰기를 하든 안하든 상관이 없습니다. 띄어쓰기를 하는 것이 좋겠다고 생각을 한다면 그렇게 해보세요. 그리고 나서 토론해 보는 것이 좋을 것입니다. 현재 노스모크는 규칙 변경을 하기에는 비용이 너무 높습니다.
DeleteMe) 위키네임이 주는 편리한 기능이란, 손쉽게 같은 내용의 중복을 방지하고 하나의 집약된 문서를 만드는 것인가요? 초기에 노스모크에서 일어난 한글 띄어쓰기 문제가 곧 영문의 경우에도 임의로 띄어쓰게 한 결과를 낳았고, 이로 인해 발생한 문제는 '중복된' 페이지의 양산,혹은 사용자가 원하는 페이지를 쉽게 찾을 수 없는데에서 기인하는지 알고 싶습니다. 전, 순수하게 띄어쓰기 자체가 사람이 문자나 내용을 인지하는데 나쁜 영향을 준다고는 생각하지 않습니다. (현재 자연스러운 글쓰기 형태는 지금 쓰는 문서처럼 띄어쓰기를 허용하니까요. 물론, 제목의 경우에도 예외라 생각하지 않습니다.). 정리해서, 띄어쓰기 자체가 띄어쓰지 않는것보다 좋지 않다고 생각하시는건지, 아니면 위키와 결부된 기능상의 문제인지 알고 싶습니다. -- 이선우
거듭 말씀드리지만, 기능상으로는 제한이 없습니다. 그리고 띄어쓰기 자체가 붙여쓰기보다 나쁘다는 어처구니 없는 일반진술도 하지 않았습니다. 어떤 구체적인 컨텍스트 속에서 이야기를 해야죠. 위키네임이 주는 편리한 기능이란 단어를 붙여쓰면 자동으로 링크가 되는 것을 말합니다. 사람들이 FrontPage라고 하면 될 것을 {{{~cpp ["front page"]}}}나 {{{~cpp ["Front Page"]}}}, 혹은 {{{~cpp ["Frontpage"]}}} 등으로 링크를 걸었다는 것이죠. 또, 사실 사용자가 띄어쓰기를 하건 말건, 혹은 대소문자를 어떻게 섞어쓰건 일종의 분리층(separation layer)을 둬서 모두 동일한 페이지이름으로 매핑을 하는 방법이 있습니다. 하지만 이렇게 되면 새로운 규칙 집합(제가 말하는 규칙이란 사람들간의 규칙을 일컫습니다)이 필요할 것입니다. 국문 경우는 몰라도 영문 경우는 띄어쓰기를 하냐 안하냐가 아주 차이가 큽니다. 노스모크는 초기부터 영어 페이지이름을 많이 사용했고 현재도 그러하기 때문에 이런 문제는 꽤 중요했죠. 또 (영문 경우) 기존의 위키표준을 지킨다는 생각도 있었고요. 하지만 여기는 아직 출발단계이고 하니까 다른 실험을 해볼 수 있겠죠. 아, 그리고 생각이 난건데, 페이지이름을 띄어쓰기를 하게 되면, 사람들이 이걸 위키에서 말하는 어떤 고유한 "단어"로서의 페이지이름(위키의 페이지이름은 "단어"입니다. 그게 하나의 커뮤니케이션 단위이기 때문이죠.)이 아니고 게시판에서의 게시물 제목 수준으로 생각하게 되는 경향(affordance)이 있었습니다. 사실 위키에서의 페이지이름은 프로그래밍의 변수이름처럼 상당히 중요한 역할을 하는데, 붙여쓰기를 하게 되면 사람들에게 기존 의식틀에서 벗어나서 페이지이름이 고유한 것이고, 기존의 게시물 제목과는 다르다는 인식을 심어주는 데에 많은 도움이 되었습니다. 다른 원인도 있겠지만, 주변에서 페이지이름에 띄어쓰기 붙여쓰기 등 별 제한 없이 자유로운 곳일수록 페이지이름을 페이지이름으로 활용하지 못하는 경우를 많이 봤습니다. 만약 띄어쓰기를 허용한다면 오히려 더욱 엄격한 규칙과 이의 전파가 필요할지도 모르겠습니다.
조금 다른 이야기인데, 특수문자를 페이지이름에 사용하는 문제입니다. 제가 특수문자를 사용하지 말자는 규칙을 만든 이유는, 그것이 발음하기 어렵기 때문입니다. 발음하기 힘든 단어를 한 사회의 언어에 사용하지 않는 것에는 언어학적, 심리학적, 사회학적, 조직학적, 문화적 문제가 중층적으로 연계되어 있습니다. 한마디로 말한다면 해당 위키 커뮤니티가 더 발전하기 위한 겁니다. 이건 다음에 기회가 되면 자세히 설명을 하죠. 아주 작은 차이 같고, 별 이유가 없고 오히려 더 불편한 것 같지만 사실은 상당한 차이를 불러오는 것들이 많습니다. 페이지이름 띄어쓰기 문제도 직접 실험도 해보고 그 결과에 대해 여러가지 분석, 논의도 해보면서 신중한 결정을 하길 바랍니다. --김창준
혹시 '/'를 사용한 페이지들를 염두에 두고 하신 말씀이신지요. ["ZIM/UIPrototype"] 과 같은 페이지의 이름은 굳이 특수문자를 안쓰고 접두어처럼 사용해서 ["ZimUIPrototype"]과 같이 만들어도 ''작은 차이''일 뿐이라는 생각이 듭니다. 그런데 '/'를 사용하니 제목에 사용된 두 개념의 경계를 명확히해서 눈으로 읽기에는 더 좋은데요, 슬래시(slash)라고 소리내어 읽어야 한다는 것이 어떤 ''상당한 차이''를 불러올지 궁금합니다. --이덕준
- 프로그래밍잔치/둘째날후기 . . . . 9 matches
* 팀원간 Communication 이 잘 이루어져야 하고, 역할분담이 어느정도 뚜렷해야 한다. 팀원간에 서로가 무엇을 하는지 잘 알아야 한다. (양팀 서로 나온 의견)
* 허기지지 말아야 한다 (^^;)
* 팀원 참여도를 높여야 한다.
* 팀원의 능력에 맞는 일감을 정한다.
* 코드 통합때 문제점을 잘 극복해야 한다.
* 일의 분담을 잘 한다.
* 오늘 하면서도 느꼈던 것은 고정관념을 버려야 한다는 것!! 어제 역시 새로운 언어를 해보면서 이전까지의 언어에서의 고정관념에 사로잡혀 허우적되는 나를 발견했었는데... 오늘도 또다시 고정관념을 버려야한다는 것을 느끼게 했다. 프로그래밍에서 디자인이 시간낭비라는 고정관념, 코딩이 가장 중요하다는 고정관념, 프로그램 개발에서 가장 많은 시간을 소비하는 부분은 코딩이라는 고정관념.... 반드시 버려야겠다. 디자인은 절대로 시간낭비가 아니라는것... 가장 중요한 것이 코딩이 아니라것... 프로그램 개발에서 가장 많은 시간을 소비해야 할 부분이 코딩이 아니라는것.... 꼭 기억해야 겠다. --["상규"]
- 02_Python . . . . 8 matches
* Infoseek 이란 포탈 싸이트는 일부 검색엔진을 파이썬 기반으로 사용한다
* NASA 는 임무 제어 시스템에 파이썬을 사용한다
* Industrial Light and Magic 사는 파이썬을 사용하여 광고용 에니메이션을 제작한다
2. 모듈은 문을 포함한다.
3. 문은 객체를 생성하고 처리한다.
* 파이썬은 내장 자료형을 기본으로 한다.
1234, -25,0 일반정수 이며 C의 경우 int 에 해당한다.
1.23, 3E210 부동소수점이며 C의 경우 double 에 해당한다.
- 1002/책상정리 . . . . 8 matches
책상을 어떻게 정리할 것인가에 대한 궁리. -_- 이는 책상을 어떻게 이용할 것인가에 따라 그 방법을 달리한다.
현실세계에서의 책상은 일종의 OS 이다. 운영체제에서의 몇몇 용어들은 사무용품에서부터 비롯되었다. 데스크탑, 폴더, 화일, 캐비넷 화일 (cab) 등등. 가상계가 현실을 모델링했다고 한다면, 현실계에서도 가상계의 기법들을 어느정도 끌어올 수 있으리라. 이는 물리에서 수학적 모델을 기초로 기계 등을 만드는 것과 비슷하리라.
이런 Approach 를 하는 때는 평소 공부나 프로그래밍 작업을 하는 곳이 학교, 회사 인 경우이다. 일은 일터에서, 쉬는건 집에서; 라는 접근방법이다. 이 경우 집에서는 절대로 일을 안한다는 전제하에, 밖으로 들고다니기 쉬운 것들이 가장 눈에 띄기 쉬워야 한다. 그리고 책상에서 '아 공부하고 싶다' 또는 '아 작업하고 싶다' 라는 생각이 들게끔 하면 안된다;
간단한 방법 : 책상 위에 책을 잔뜩 늘어놓는다. 단, 이 경우 위의 '밖으로 들고다니기 쉬운 것들이 가장 눈에 띄기 쉬워야 한다' 에 충실하지 못하므로, 가장 자주 들고다니는 책들을 책상에 늘어놓아야 한다. 이 경우 다른 대안책으로서, '자주들고다니는 책은 아에 가방속에 넣어놓는다' 라던지 또는 '책상을 없애고 책장 2개를 산다' 라는 Architecture 적인 접근이 필요할지도 모르겠다. -_-a
이는 위의 경우와 반대가 된다. 위에서의 책상에 비해 '휘발성'을 띤다. 이 경우 책상 판 자체는 main memory 역할을 하게 되므로, 가급적 책상을 비우기 위한 전략을 짜되, 해당 자료에 대한 접근성이 좋아야 한다.
* 책상 위를 main memory, 책꽂이1을 제 1 cache, 책꽂이2를 제 2 cache, 책장을 제 3 cache, 바깥 책장을 hdd-drive 라 생각하고 정리한다.
- 1thPCinCAUCSE . . . . 8 matches
* 팀은 한 문제에 대해 소스코드가 완성되면 디스켓에 담아 채점 팀에 제출한다.
* 채점은 그 소스코드를 컴파일해서 수행파일을 만들어 채점한다.
* 그 문제에 대해서 준비된 테스트 데이타( 보통 5-10개)에 대해서 모두 맞는 답을 내야 그 문제를 맞춘 것으로 한다.
1. 각 문제는 데이터를 외부에서 입력받아서 프로그램으로 답을 계산한 후 반드시 출력을 한다. 이때, 입출력은 표준입출력만 사용한다. 파일 입출력문을 쓰면 안됨.
4. 채점은 자기 컴퓨터에서 하는 것이 아니라, 채점 팀의 컴퓨터에서 실행한다. 이점을 유의할 것. 즉, 자기 컴퓨터에만 있는 특수한 기능을 사용하게 되면, 채점 팀 컴퓨터에서는 안 돌아 갈 수 있음.
혹자는 이런 말을 할겁니다. "사회에 나가서 일하다 보면 자기가 원하는 환경에서 일할 수 없는 상황이 수도 없이 많다. 갑이 까라면 까는거거든." 하지만 이런 상황을 학교에까지 연결할 필요는 없어 보입 니다. 우리는 "교육"과 "학문"이란 걸 하는 것이니까 요.
C/C++(VC++6.0)만 사용할 수 있는 상황에서는 ["STL"]을 사용하냐 안하냐가 엄청난 차이를 불러올 것이라 생각한다. 그리고 팀이 두명이냐 세명이냐도 중요하긴 할 터인데, 어떻게 조직적으로 잘 활용하느냐에 따라 차이가 있기도 하고 별로 없기도 할 것이다. 또한 자가 테스트를 통해 어느 정도 검증된 프로그램만 제출을 할 수 있다면 페널티를 줄일 수 있기 때문에 훨씬 유리할 것이다.
- 2dInDirect3d/Chapter2 . . . . 8 matches
이 객체는 IDirect3D 객체와는 달리 실질적일 일을 하는 객체이다. 이 객체를 생성하는 함수는 다음과 같다. IDirect3D 객체는 이것을 생성하기 위해 존재한다고 해도 과언이 아니다.
1. 결과는 역시 성공하면 D3D_OK를 리턴한다.
2. BehaviorFlag에는 버텍스를 처리하는 방법을 넣어준다. D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, D3DCREATE_SOFTWARE_VERTEXPROCESSING중 한가지를 사용한다. (사실은 더 많은 옵션이 있다.) 대개 마지막 SOFTWARE를 사용한다.
1. 결과는 성공하면 D3D_OK를 리턴한다.
1. D3DCLEAR_STENCIL, D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER 세개가 있는데, 보통 D3DCLEAR_TARGET를 사용한다.
1. 네번째인자에는 색을 지정한다.
백버퍼에 그림이 들어오거나 클리어 한 경우엔 그것을 앞으로 끌고나와야 한다. 그것을 하는 함수가 Present함수이다.
- 2dInDirect3d/Chapter3 . . . . 8 matches
* Direct3D의 두가지 목적을 이해한다.
* 점을 표현하기 위한 유연한 vertex형태를 이해한다.
만약 D3D를 쓰는 사람에게 "당신은 왜 D3D를 씁니까?" 라고 물으면, 일반적으로 이런 대답이 나온다. Z-Buffer라던지, 모델, 메시, 버텍스 셰이더와 픽셸세이더, 텍스쳐, 그리고 알파 에 대한 이야기를 한다. 이것은 많은 일을 하는 것처럼 보인다. 몇몇을 제외하면 이런 것들은 다음의 커다란 두 목적의 부가적인 것이다. 그 두가지란 Geometry Transformation과 Polygon Rendering이다. 간단히 말해서 D3D의 교묘한 점 처리와 삼각형 그리기라는 것이다. 물론 저것만으로 모두 설명할 수는 없지만, 저 간단한 것을 마음속에 품는다면 혼란스러운 일은 줄어들 것이다.
버텍스를 표현 하는 방법을 ''flexible vertex format'' 줄여서 FVF라고 한다. 버텍스에 필요한 정보는 다음과 같다.
Vertex point size : 버텍스의 크기 (포인트스프라이트에서 사용한다.)
이것은 3차원 좌표로서, 기본적인 x,y,z에 수직인 곳의 좌표를 정한다. 이것은 나중에 빛에 관련된 계산을 할 때에 사용된다.
노말 좌표 뒤에 오는 정보로는 diffuse color가 있다. Diffuse color란 것은 빛이 그 점을 밝혔을 때 그 점에서 발산하는 컬러를 말한다. 3D에서의 빛은 실제 생활과는 달리 거의 아무일도 하지 않는 다는 것을 기억하다.
Diffuse Color의 형태는 D3DCOLOR(사실은 DWORD형이다.)형을 사용한다.
- 2학기파이선스터디/if문, for문, while문, 수치형 . . . . 8 matches
조건식1이 참이면 <문들1>이 수행되고, 그렇지 않으면 조건식2를 검사해서 참이면 <문들2>가 수행된다. 그렇지 않으면 <문들3>이 수행되는데 여기서 조건식이나 else다음에는 콜론(:)을 입력해야 하고, else if 가 아닌 elif라는 사실을 알아야 한다. 또 if 문에서의 열이 잘 맞아야 한다.
<객체>는 순서를 갖는 자료여야 한다. 반복횟수는 <객체>의 크기가 되는데, for문 안에서 continue를 만나면 for가 있는 행으로 이동하고 break를 만나면 <문2>를 수행하지 않고 for문을 빠져나간다. else이후의 <문2>은 for문을 정상적으로 다 끝냈을 때 수행한다. 다음은 1부터 10까지의 합을 구하는 예이다.
for 문에서 요소의 값 뿐 아니라 인덱스 값도 함께 사용하려면 enumerate() 내장함수를 이용한다(파이썬 2.3 이상). enumerate() 내장함수는 (인덱스, 요소값) 튜플 자료를 반복적으로 넘겨준다.
정수형으로 표현할 수 없는 큰 수는 자동으로 롱형 정수로 표현한다. 롱(long)형 상수는 정수의 마지막에 L, l을 붙여서 표현한다. 유효 자리는 메모리가 허용하는 한 무한대이다.
복소수형 상수는 실수부+허수부로 표현되는데 허수부에는 J, j를 숫자뒤에 붙여야 한다. 실수부와 허수부는 각각 실수형 상수로 표현된다.
- 3rdPCinCAUCSE . . . . 8 matches
- 팀은 문제에 대해 소스코드가 완성되면 디스켓에 담아 채점원에게 제출한다.
- 채점은 그 소스코드를 컴파일해서 수행파일을 만들어 채점한다.
- 문제에 대해서 준비된 테스트 케이스 (5-10개)에 대해서 모두 정답을 내야 그 문제를 맞힌 것으로 한다.
- 틀린 문제는 다시 제출할 수 있다. 한 문제에 대한 제출회수 10회. 그 후는 그 문제는 못 맞힌 것으로 한다.
1. 각 문제는 데이터를 외부에서 입력받아서 프로그램으로 답을 계산한 후 반드시 출력을 한다. 이때, 입출력은 표준입출력만 사용한다. 파일 입출력문을 쓰면 안됨.
4. 채점은 자기 컴퓨터에서 하는 것이 아니라, 채점 컴퓨터에서 실행한다. 즉, 자기 컴퓨터에만 있는 특수한 기능을 사용하게 되면, 채점 컴퓨터에서는 안 돌아 갈 수 있음.
7. 각 문제마다 테스트 케이스가 5-10개가 있는데, 프로그램은 첫째 테스트 케이스를 입력하여 첫째 답을 출력하고, 둘째 테스트 케이스를 입력하여 둘째 답을 출력하고, ... 등으로 진행해야 한다.
- DataStructure/List . . . . 8 matches
* 위와 같이 다음 또는 먼저번 노드를 가르키는 포인터가 하나만 있는 것을 Single Linked List라고 한다.
* 반면에 둘 다 있는 것을 Double Linked List라 한다.
* 장점 : 빠르다. (배열 같은 경우는 중간에 하나 지우고 나면 그 뒤에껄 다 앞으로 땡겨야 한다. 수행시간 절라 오래 걸린다. 하지만 리스트는 다음 노드를 가리키는 포인터만 바꿔주면 된다.)
//하나의 공간이 더 많은 임시 배열을 생성한다.
tempNode[i] = m_Node[i]; //까지 복사 한다.
tem.next = m_Node[coordi]; //낀 곳에 원래 있었던 자료를 참조한다.
tempNode[coordi-1].next = tempNode[coordi]; //낀 곳의 바로 앞에 있는 자료가 첨가한 자료를 참조하게 한다.
for(int i=0;i<tempNode.length;i++) // m_Node 에 tempNode를 복사한다.
- HelpOnUserPreferences . . . . 8 matches
* OpenID를 지원하는 경우는 OpenID를 쓰실 수 있습니다.
* '''[[GetText(Email)]]''': 자주 쓸 이메일 주소. 이메일 주소를 넣어주면 원하는 위키페이지에 대하여 그 변경점을 구독신청하거나 취소하실 수 있습니다. 비밀번호를 잊으셨을 경우에도 이 이메일 주소를 사용해 새로운 비밀번호를 등록하실 수 있습니다.
* '''[[GetText(Preferred theme)]]''': 원하는 테마를 고르실 수 있습니다.
* '''[[GetText(User CSS URL)]]''': 자신이 원하는 CSS로 변경하고 싶을 경우에 사용합니다.
* '''[[GetText(Your time is)]]''': 원하는 시간대를 설정하면 자신이 원하는 시간대로 시간이 표시됩니다.
* '''[[GetText(Quick links)]]''': 최상단에 있는 메뉴에 자신이 원하는 링크를 추가하거나 원하는 위키페이지에 대한 링크를 넣을 수 있습니다. QuickLinks 페이지를 참조해주세요.
- HowToStudyDesignPatterns . . . . 8 matches
권법에서 주먹에 대해 달통한 도사가 "권을 내지르는 법"에 대한 규칙들을 정리를 해서 애제자의 대갈통 속에 아무리 쑤셔넣는데 성공을 한들 그 제자가 도사만큼의 주먹이 나갈리는 만무합니다. "권을 내지르는 법"을 유추해 내기까지 그 스승이 겪은 과정을 제자는 완죤히 쏙 빼먹고 있기 때문입니다. 소위 '몸'이 만들어 지지 않은 것이지요. 제자는 마당 쓸기에서부터 해서, 물 긷기, 기타 등등의 몸의 수련의 과정을 겪어야만 하고, 그 제자가 스승이 정리한 그 규칙의 일련에 손뼉을 치고 춤을 추며 기쁨의 동의를 할 수 있을 정도로 과정의 축적이 이루어진 이후에야 비로소 진정한 '가르침'이 이뤄지는 것이며, 청출어람의 가능성도 생각해 볼 수 있는 것입니다.
결국은 어떤 패턴의 필요성을 자신의 경험 속에서 "절감"하지 못한다면 그 패턴을 제대로 아는 것이 아니라고 말할 수 있을 겁니다.
제가 여러번 강조한, 어떤 지식을 체화하기 위해선 그 지식으로 살아야 한다는 말을 여기서도 확인할 수 있군요. 영어를 배우려면 영어로 살고, DP를 배우려면 DP로 살아라. 단순하면서도 아주 강력한 말 아닙니까.
이런 식의 "사례 중심"의 공부를 위해서는 스터디 그룹을 조직하는 것이 좋습니다. 혼자 공부를 하건, 그룹으로 하건 조슈아 커리프스키의 유명한 A Learning Guide To Design Patterns (http://www.industriallogic.com/papers/learning.html'''''')을 꼭 참고하세요. 그리고 스터디 그룹을 효과적으로 꾸려 나가는 데에는 스터디 그룹의 패턴 언어를 서술한 Knowledge Hydrant (http://www.industriallogic.com/papers/khdraft.pdf'''''') 를 참고하면 많은 도움이 될 겁니다 -- 이 문서는 뭐든지 간에 그룹 스터디를 한다면 적용할 수 있습니다.
DP를 처음 공부한다면, DPE와 DPJW를 RF와 함께 보면서 앞서의 두권을 RF적으로 독해해 나가기를 권합니다. 이게 된 후에는 {{{~cpp GoF}}}와 DPSC를 함께 볼 수 있겠습니다. 양자는 상호보완적인 면이 강합니다. 이 쯤 되어서 SBPP를 보면 상당히 충격을 받을 수 있습니다. 스스로가 생각하기에 코딩 경험이 많다면 다른 DP책 이전에 SBPP를 먼저 봐도 좋습니다.
* 패턴을 지나치게 실체화, 정형화해서 설명한다.
* 패턴이 어떻게 생성되었는지 그 과정을 보여주지 못한다. 즉, 스스로 패턴을 만들어내는 데에 전혀 도움이 안된다. (NoSmok:LearnHowTheyBecameMasters)
* 해당 패턴이 현실적으로 가장 자주 쓰이는 맥락을 보여주지 못한다. 대부분이 Toy Problem에서 끝난다.
- InsideCPU . . . . 8 matches
2. 이후 ROM-BIOS는 일련의 CHECK 프로그램을 실행 시킨다. 흔히 보는 하드웨어 CHECK와 메모리 CHECK가 여기에 속한다.
:: 참고 여기서 부팅 가능한 드라이브는 sector 0 번지에 섹터에 마지막 코드가 AA55h인 드라이브를 말한다.
5. 그럼 로더 프로그램이 적재 된 상태이다. 이것으로 부팅은 끝이다. 이후 부터는 로더가 작업을 실행한다.
음...여기까지만..귀찮아서 못 적겠다.. 보통 플로피의 0번 섹터를 write하기 위해 rawrite.exe란 프로그램을 쓴다. 플로피의 데이타를 얻기 위해 BIOS의 인터럽트루틴을 사용한다. 이를 위한 인터럽트는 INT 13h가 된다.
실모드는 컴퓨터를 키면 항상 실모드가 된다. 이는 하위 CPU에 대한 호환 정책으로 만들어진 것이며 열라 빠르게 움직이는 (펜티엄클럭) 8086이라고 보면 적당할 것이다. 또한 실모드에서는 메모리 어드레싱 방법이 8086과 동일한 20bit의 어드레스 비트를 가지고 있으며 즉 1MB 의 접근만을 허용한다. 또한 640KB의 base로 접근하고 384KB는 extends로 접근해야 하며 위의 메모리에는 ROM-BIOS와 Video Memory가 있다. 1MB를 접근하기 위해서는 16bit의 세그먼트와 16bit의 오프셋으로 구성된 물리적 접근이 있다.
중요한 것 DPL란 세그먼트에 접근 가능한 레벨을 말한다.
GDTR은 GDT (Global Descriptor Table)을 정의하기 위한 레지스터이다. GDT의 용도는 무엇인가? 글로벌 메모리는 어떠한 태스크라도 접근 가능한 메모리를 말한다. 그리고 이를 정의하는 레지스터가
GDT이다. 하나의 GDT가 존재하며 GDT에는 LDT의 베이스주소를 계산하는 데 쓰인다. GDTR은 48 BIT로 이루어졌으며 GDTR의 32 BIT의 BASE 주소와 16 BIT의 리미트 부분으로 나누어지며 BASE는 GDT의 시작 어드레스를 말하며 리미트는 GDT의 크기를 말한다. GDT가 가지는 최대 디스크립터는 8192이다.
- Java/문서/참조 . . . . 8 matches
Java 에서는 new 와 delete 가 없지만 그 대안으로 참조형을 이용한다.
값을 이용할 수 있는 형을 말한다.
참조형은 Class, Array, interface (예외 String은 기본 자료형으로 취급한다.
이와같은 구문을 넣어서, 객체를 생성하고, _a에게 가리키게 하여야만 한다.
이건 성립한다. 이유는 int는 기본 자료형으로서 스칼라 값이기 때문이다.
등장한다. string is imutable. Stringbuffer is mutable
문자열의자료의 경우 StringBuffer 를 사용하는 걸 권장한다.
2배의 공간을 확보해 초기화 한다..
- JavaStudy2004/오버로딩과오버라이딩 . . . . 8 matches
기반 클래스에 이미 존재하는 함수를 파생 클래스에서 다시 선언하고, 구현하는 것을 함수를 재정의(Overriding)한다고 한다. 기반 클래스에 이미 존재하는 함수를 파생 클래스에서 재정의 하면, 파생 클래스에서는 기반 클래스에서 정의된 함수가 무시되고, 파생 클래스에 새로 정의된 함수가 동작하게 된다.
예를 들어 People클래스에 move(int aX, int aY){this.position.x += aX;this.position.y += aY;}라는 함수가 있다. 그리고 People클래스를 상속 받은 Student이라는 클래스가 있다. 근데 '학생'은 좀 멍청해서 반대로 움직인다. 그렇다면 상속받은 move함수를 재정의 해줘야한다. move(int aX, int aY){this.position.x -= aX;this.position.y -= aY;}
함수를 재정의 할 때는 기반 클래스에 만들어져 있는 함수와 파생 클래스에서 재정의한 함수의 함수명과 매개변수의 타입이 완전히 같아서 서로 구별할 수 없어야 한다. 만약, 재정의 하려고 함수를 만들었는데 이것이 기반 클래스에 있는 함수와 매개변수의 타입이 조금이라도 다르면, 이것은 재정의가 아니라 오버로딩으로 간주된다.
오버로딩이란 하나의 함수명에 비슷한 기능을 하면서 넘겨 받는 매개변수가 서로 다른 함수를 두개 이상 정의하는 것을 말한다.
위에서 말한 People클래스의 move함수를 예를 들어보겠다. 위의 move함수는 정수형 인자를 매개변수로 받아들인다. 만약 people.move(1.1, 2.13)라는 명령어를 실행한다면 매개변수의 타입이 다르다는 에러가 발생할 것이다. 더블 형의 인자를 받아들이기 위해 move함수를 Overloading한다. move(double aX, double aY){this.position.x += (int)aX;this.position.y += (int)aY;} 두 함수 다 유효한 함수로 사용된다. 두 함수 중 어떤 함수가 호출될 것인지는 매개변수 값에 의해서 결정된다. 즉 오버로딩 된 함수들은 반드시 매개변수의 타입이 달라 서로 구별될 수 있어야 한다.
- LinkedList/숙제 . . . . 8 matches
typedef로 'strucrt _slist'를 List로 정의한다.
pList=(List *)malloc(sizeof(List)); // malloc은 (List *)가 단위인 크기가 List인 메모리 공간을 생성하고 그 메모리 공간 첫 주소를 반환한다. 그 주소가 pList에 대입(정의)된다.
pList->next=0; // 이 구조체가 처음 부분에 있다는 것을 표시한다. 0으로.
pList->prev=0; // 이 구조체가 끝 부분에 있다는 것을 표시한다.
pList->num=1; // 이 구조체 번호가 1번인 것을 표시한다.
printf("root생성시\n"); // *pList를 root로 한다.
pNew->num=2; // 두번째 struct인 것을 표시한다.
free(pIns); // malloc함수로 만들어진 메모리중 쓸모 없는 메모리는 다시 반환되어야한다. (그렇지 않으면 메모리가 가득차서 컴퓨터가 멈춘다. ㅋㅋ)
- Linux/디렉토리용도 . . . . 8 matches
* reboot, modprobe, insmod 등등의 root 가 시스템을 관리하는데 필요한 명령어들이 존재한다.
lib 디렉토리에는 컴파일러를 통해서 혹은 만들어진 파일들이 잠조하는 라이브러리들이 존재한다. 또한 하부에 modules 디렉토리에 존재하는 커널 모듈은 특수장치를 설치했거나 제거했을 경우 커널이 자동적으로 모듈을 올리지 못할 경우 insmod, rmmod, modprobe 명령어를 통해서 이런 모듈을 다룰때 이용된다. 커널 모듈의 경우 2.4커널에서는 *.o, 2.6 커널에서는 *.ko의 확장자를 가지고 있다.
바이너리 파일의 경우가 아니라 실제 시스템이 운영되면서 변화하는 자료를 저장하는 부분이다. 웹 서버의 기본 루트디렉토리가 보통 이곳에 존재한다. (alias 된경우는 예외) 일반적으로 로그가 위치하기 때문에 중요한 곳이다. 시스템에 보안 관계된 문제나 크래쉬가 발생했을 경우 로그 분석을 통해서 원인을 분석한다.
보통 바이너리 프로그램을 설치할 경우 /usr/local 에 설치하여 일관성을 유지한다. jdk등을 설치할 때에고 관습상 /usr/local 에 설치를 해주고, 배포판이 패키지 형태로 jdk등을 제공할때에는 배포판을 통해 설치하는 것이 패키지의 통일성 및 관리의 편의성 면에서 좋다.
이 디렉토리에는 커널의 바이너리 이미지가 위치한다. 보통은 부트로더를 /vmlinuz 로 부팅하게 설정하고, 현재 내가 쓰고 싶은 커널의 심볼릭 링크를 /vmlinuz 로 설정하여서 이용한다. 이 경우 커널의 버전업이나 테스팅을 위해서 커널의 버전이 필요할 경우 관리상 용이하다.
|| /home || 10G/30G || 사용자가 몇명이나 이용할지에 대해서 대략적인 추정을 통해 할당한다. quota 기능을 이용하면 각 사용자별로 할당되는 공간을 지정가능 ||
- Marbles . . . . 8 matches
나는 유리 구슬을 모으는데, 그 구슬들을 담아놓을 상자를 사려고 한다. 상자는 두 가지 유형으로 나눌 수 있다.
각 상자에는 정확하게 주어진 용량만큼의 구슬을 집어넣을 것이며, 총비용은 최소한으로 줄였으면 한다. 여러 상자에 구슬을 나눠 담는 가장 좋은 방법을 찾아보자.
입력 파일에는 테스트 케이스가 여러 개 들어갈 수 있다. 각 테스트 케이스는 정수 n(1 이상 2,000,000,000 이하)이 들어있는 줄로 시작한다. 그 다음 줄에는 c1과 n1이, 그 다음 줄에는 c2와 n2가 입력된다. 여기에서 c1, c2, n1, n2는 모두 양의 정수며 2,000,000,000보다 작다.
입력에 있는 각 테스트 케이스에 대해 비용을 최소화할 수 있는 해법을 출력한다(한 줄에 테스트 케이스 하나씩). 해법이 있으면 두 개의 음이 아닌 정수 m1, m2를 출력한다. 이때 mi는 타입 i인 상자의 개수를 의미한다. 해가 없으면 "failed"를 출력한다.
- Monocycle . . . . 8 matches
외발자전거는 한 바퀴로 가는 자전거를 말한다. 다음 그림에 나와있는 것처럼 다섯 개의 서로 다른 색이 칠해져 있는 특별한 바퀴가 달려있는 외발자전거를 생각해보자.
격자에 있는 정사각형 중 몇 개는 자전거가 갈 수 없게 막혀있다. 그 자전거를 탄 사람은 한 위치에서 시작해서 어떤 다른 위치로 최단 시간 안에 도착하려고 한다. 한 정사각형 위에서 그 자전거는 다음 정사각형으로 이동하거나, 같은 정사각형 내에서 왼쪽이나 오른쪽으로 90' 회전할 수 있다. 이런 동작을 하는 데 각각 1초가 걸린다. 자전거는 반드시 북쪽을 향하고, 바퀴에서 녹색 부분의 중점이 지면과 접하고 있는 상태에서 출발한다. 도착 지점에서는 자전거의 방향은 상관없지만 지면과 접하고 있는 부분은 녹색이어야 한다.
각 테스트 케이스에 대해 먼저 아래 출력 예에 나와있는 식으로 테스트 케이스 번호를 출력한다. 자전거가 도착지점에 갈 수 있으면 아래에 나와있는 형식에 맞게 초 단위로 그 지점에 가는 데 걸리는 최소 시간을 출력한다. 그렇지 않으면 "destination not reachable"이라고 출력한다.
서로 다른 테스트 케이스 사이에는 빈 줄을 하나씩 출력한다.
- NamedPipe . . . . 8 matches
통해 Server / Client 통신이 가능하게 만들어 주는 역할을 한다.
// 쓰래드 함수를 생성한다.
// zero, GetLastError returns ERROR_PIPE_CONNECTED. // 만약 0 값이 리턴이 될 경우 ERROR_PIPE_CONNECTED를 리턴한다.
// chReply를 대답한다.
|| {{{~cpp CreateNamedPipe}}} || Named Pipe를 생성한다.||
|| {{{~cpp CreatePipe}}} || anonymous Pipe를 생성한다.||
|| {{{~cpp SetNamedPipeHandleState}}} || {{{~cpp NamedPipe}}}의 {{{~cpp ReadMode}}} , {{{~cpp Block}}} 상태를 Set한다.||
|| {{{~cpp WaitNamedPipe}}} || Connection 상태에서 Time-Out OR 정해준 시간이 되기 전까지 Wait한다. ||
- PragmaticVersionControlWithCVS/CommonCVSCommands . . . . 8 matches
저장소에 존재하는 하위 모듈의 디렉토리안에서 일부분만을 체크아웃한다.
CVS는 HEAD, BASE라는 2개의 꼬리표를 자동으로 제공한다.
'''cvs add''' : 파일이나 디렉토리를 저장소에 추가한다.
* 유닉스, 윈도우의 줄 구분문자를 구별한다.
하지만 바이너리의 경우에는 문제가 발생한다.
만약 바이너리 파일을 -kb옵션을 주지 않은 상태에서 add 시켰다면 이를 바꾸는 방법도 존재한다.
note) 바이너리를 자주 사용한다면 cvswrappers 에 대해서 알아보자.
[http://www.zeropage.org/pds/200584977/pragmatic_version_control_with_cvs.pdf BOOK] 책의 76페이지에 존재한다.
- PragmaticVersionControlWithCVS/WhatIsVersionControl . . . . 8 matches
이장에서는 서로 다른 의미로 사용되는 용어의 정의를 목적으로 한다.
개발 중인 프로젝트의 모든 버전이 저장되는 장소이다. 파일 시스템, DB일수도 있으며, 어떤 경우에는 2가지를 같이 사용하기도 한다.
최근에는 네트워크를 이용해서 원격지의 서버에 존재하는 저장소에 저장한다.
''만약 한개의 파일을 2명의 프로그래머가 각기 수정을 한뒤 commit한다면 이때의 상황을 어떤식으로 처리할 것인가?''
기본적으로 Version Control 에서 관리의 가장 작은 단위는 파일이다. 그외에 한개의 프로젝트 단위로 전체 프로그램을 관리하고, 그 하부에 모듈을 기준으로 해서 소스를 관리한다.
저장소는 말과는 다르게 사실 많은 과정을 거쳐서 저장된다. 저장소는 한번이라도 체크인한적이 있는 모든 버전을 보관한다.
개발중심축(mainline) : 일반적인 개발환경하에서 개발자들은 동일한 코드 기반을 가지고 작업을 한다. 체크아웃, 개정판을 만들어서, 변경사항을 체크인하면 모든 개발자가 서로의 작업을 공유하게 되는 것이다. 이러한 개발흐름을 일컬어 개발중심축이라 함.
''일반적으로 낙관적 잠금으로 구현된 {{{~cpp VersionControl}}}을 선호한다.''
- ProjectPrometheus/BugReport . . . . 8 matches
* [[HTML(<strike> 서평에서 단순히 PRE 태그가 아니라, 워드랩이 가능하도록 고쳐야 한다. </strike>)]]
3. 같은 컴퓨터를 쓰는 이상, 로그인을 일일이 하지 않아도 되도록 클라이언트 쪽에 쿠키 설정을 해줬으면 한다.
* {{{~cpp RecommendList}}} 에 나오는 수가 너무 많다. 줄여야 한다.
* notice변경 사항에 관하여, DB에 넣는 방향으로 바꾸던지(게시판을 하던지), file path 비의존적으로 바꾸어야 한다. 현재 file path문제로 직접 고쳐주어야 하는 상황이고, ant 로 배포시 해당 file의 쓰기 읽기 권한 문제로 문제가 발생한다. --["neocoin"]
* ant build를 상민, 석천 두 계정 사이에 아무런 차이 없이 가능하도록 조정할수 있어야 한다. 문제는 내 계정이 이상하다는것 --["neocoin"]
* BtoBRel 에는 들어있는 bookid 가 book 에는 없는 경우가 있다. 확인이 필요하나, 현재 도서관이 죽어서 할수 없다. 열리는데로 해봐야 한다.
* 책 번호 357647 가 BtoBRel에는 들어 있고, book에는 없다. 이 한권때문에 현재의 에러가 발생한다. 간단히 없에면 되겠지만, 정체를 알고 싶다. --["상민"]
- ProjectPrometheus/CookBook . . . . 8 matches
Python 에서는 urllib 와 httplib 를 이용한다. Python document 의 httplib - examples 를 참조하면 GET 의 예와 POST 의 예가 나온다.
Java 에서는 HttpURLConnection 을 이용한다. 관련 코드는 http://www.javafaq.nu/tips/servlets/index.shtml 를 참조.
getParameter 가 호출되기 전에 request의 인코딩이 세팅되어야 한다. 현재 Prometheus의 Controller의 경우 service 의 명을 보고 각각의 서비스에게 실행 권한을 넘기는데, 가장 처음에 request의 characterEncoding 을 세팅해야 한다. 차후 JSP/Servlet 컨테이너들의 업그레이드 되어야 할 내용으로 생각됨 자세한 내용은 http://javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=957572615 참고
root 디렉토리는 <doc-dir> 태그부분을, port 는 <http port='____'> 부분을 수정한다.
build_zpLocal.xml ( .../Prometheus/bin 에 빌드하는 스크립트 ) 를 이용, 실행되는 위치와 관계없는 곳에 일단 컴파일을 하고, 테스트를 돌리게 한다.
* ["Ant"] 에서 ["JUnit"] 을 실행시키는 방법이 있다고 한다. 추후 알아볼것.~!
["Ant"] 를 이용하면 된다. Ant 의 경우 컴파일 & 배포할때 수정된 화일만 덮어쓰기를 한다. CVS & ["Ant"] 조합이면 해결이라 생각.
- VisualBasicClass/2006/Exam1 . . . . 8 matches
1. 비주얼베이직에서 숫자를 표기하는 방법은 10진법, 8진법, 16진법으로 나뉘어진다. 이 중 10진법은 특별한 표기(기호)없이 사용이 가능하다. 하지만 8진법과 16진법은 '?O'와 '?H'로 표기한다. 이때 ?에 들어갈 기호는 무엇인가 (1점).
① Alignment는 텍스트 박스 안의 문자열을 정렬한다.
리스트 박스는 여러개의 선택사항을 제공한다. 이 때 리스트 박스 항목 선택은 값이 ? 일때선택 유형이 확장된 다중 선택으로 'Shift + 누름' 또는 'Shift + 화살표 키'를 사용할 수 있다.
④ 이벤트 중심의 프로그래밍 방식을 사용한다.
㉠ 툴 박스에서 추가하고자 하는 툴을 클릭한다.
① 지명 인수를 사용하여인수를 서브프로그램에 전달할 때는 반드시 파라미터의 순서대로 기술하여야 한다.
④ 일반적으로 함수 이름이 F_Name일 경우, 이 함수 내부에는 F_Name = 식 형태의 할당문이 있어야 한다.
③ 가장 최근에 추가된 아이템의 인덱스를 기억한다.
- django/Example . . . . 8 matches
본 논문에서는 Django를 사용하여 실생활에서 쓰일 만한 시스템을 만들면서 질의처리 능력과 데이터베이스 추상화를 실험해본다. 안전관리시스템은 안전관리가 필요한 위험을 파악하고, 위험이 발생하는 경우 사용할 수 있는 대처방안을 설정한다. 그렇게 함으로써 위험한 상황이 발생하지 않도록 하고, 실제로 위험한 상황이 발생했을 때 정책에 따라 적절한 방법으로 대처하여 큰 사고로 이어지지 않도록 돕는다.
예를 들어 "너구리" 제조회사에서 안전관리시스템을 사용하여 "화재"라는 위험을 관리한다고 생각하자. "화재"가 발생하면 가연성 물질인 "너구리 꼬리"에 불이 옮겨 붙어 대형 사고로 이어질 수 있다. 따라서 "너구리" 사는 "물뿌리개"를 직원들에게 지급하여 "너구리 꼬리"에 불이 옮겨 붙기 전에 "화재"를 진압하기로 결정했다. 또한 "너구리" 사는 "화재"가 5분 안에 진압되지 않는 경우 "일일구" 서비스를 이용하기로 결정했다. 따라서 "너구리"사 직원들은 불이 났을 경우 "물뿌리개"로 일단 불을 끄고, 5분이 지나면 "일일구" 서비스를 부를 것이다.
또한 "너구리" 사는 "도난"이라는 위험도 관리한다. "너구리 꼬리"가 "도난"을 당하면 "너구리" 사는 많은 손해를 입는다. 하지만 "다잡아"라는 무인 경비시스템을 설치하기에는 너무 많은 돈이 필요해서, "너구리" 사는 "종잇장" 보험만 이용하여 "도난"을 관리한다. "종잇장" 보험은 "도난" 뿐 아니라 "화재"에 대해서도 보험금을 지급하기 때문이다. 또한 "도난"이 발생하지 않도록 직원들에게 정기적으로 교육을 실시한다.
"화재"가 발생한 뒤에는 위험이 발생하고 이에 대처한 기록을 남긴다. "도난"이 발생한 뒤에는 원인을 분석하고 이에 대처한 기록을 남긴다. 이러한 위험 발생 기록에 대하여 "너구리"사는 유효적절한 대책을 시행했는지 확인한다. 만일 유효 적절한 대책을 시행했다면 이를 확인한다.
다음 ERD를 바탕으로 데이터베이스 스키마를 생성한다.
- html5/drag-and-drop . . . . 8 matches
* HTML5에서는 드래그 & 드롭 API를 제공한다.
* 다음 세 가지의 이벤트를 적절히 처리해야 한다.
* 데이터를 꺼낼 때는 데이터 포맷 형식의 인수를 이용하여 getData()를 호출한다.
* 처리를 끝낸 뒤 이벤트가 다른 욧에 전파되는 것을 막아야 한다.
|| clearData(type) ||드래그 중인 데이터를 삭제한다. ||
|| setData(type, data) ||드래그 & 드롭할 데이터를 저장한다. ||
|| setDragImage(image, x, y) ||img 요소를 이용하여 드래그 중의 피드백을 지정한다. ||
|| addElement(element) ||드래그 중 피드백 이미지에 추가할 요소를 지정한다. ||
- neocoin/Log . . . . 8 matches
* 미루어두었던 정리의 시간이다. 다시금 생각나는 말 ''바보는 과거에 매달린다. 현자는 과거를 반성한다.'' -드래곤 라자중- 이거 비슷한 말일 것이다. 쉬운 일이지만 잊을때가 많다.
* 이번달 마소를 보니, Tiger에서 추가될 개념이 C#에서 구현된 것이 많다. 대체 무슨 이점이 존재하는가 보고서 작성, 추가되기를 원하는 기능과 삭제되기 원하는 기능에 대한 보고서 작성
* 5월이 끝나는 시점에서 Read의 수를 세어 보니 대략 55권 정도 되는듯 하다. 200까지 145권이니, 여름방학 두달동안 60여권은 읽어 주어야 한다는 결론이 난다. 부담으로 다가오는 느낌이 있는걸 보니 아직 책에 익숙해지지 않은것 같다. 휴, 1,2학년때 너무 책을 보지 않은 것이 아쉬움으로 남는다. 남들이 4년에 읽을껄 2년에 읽어야 하니 고생이다.
* 스케줄러를 보면 이번달도 그리 한가한 달은 아니었다. 하지만, 고질적인 문제점인 금요일에 헤이해 지는 것을 고쳐야만 한다.
* 일본 경제 3월 붕괴설이 그나마 소리 없이 지나가서 다행이다. 일어 난다면 어땠을까 내심 궁금했다. 일본도 자존심이 상하겠지만 IMF같은 발상의 전환이 필요할때라고 생각한다.
- JXTA는 과거 JXTA를 기고했던 마소 필자가 강의자(숭실대 대학원) 였는데, 거기에서 크게 발전한 것은 없다. JXTA의 구현 방향이 IPv6와 겹치는 부분이 많고, P2P의 서비스의 표준을 만들어 나가는 것에 많은 난관이 있다는 것이 느껴졌음. JMF는 강의자가 JMF의 초심자에 가까웠다. JMF가 계획 시행 초기의 당초 원대한 목표에 따르지 못했고, 미래 지향적인 프레임웍만을 남기고 현재 미미하다는 것에 중점, JavaTV가 일부를 차용하고, 그 일부가 무엇인지만을 알게되었음. JavaTV가 정수였다. 이 강연이 없었다면, 이날 하루를 후회했을 것이다. 현재 HDTV에서 JavaTV가 구현되었고, 올 7,8월 즈음에 skylife로 서비스 될 것으로 예상한다. 그리고 가장 궁금했던 "HDTV 상에서의 uplink는 어떻게 해결하는가"의 대답을 들어서 기뻤다.
* 한달 MEC++와 시름한 기억이 대부분이다. 별것도 아닌게 이렇게 고민하게 만들다니 것 참. 덕분에 몇가지 하고 싶은게 생겨서 실행해 나가야 겠다. 후회되는 날도 많지만, 그래도 일류의 달변가 보다. 삼류의 실천가가 되는데 반걸음 정도 간것 같아 그리 후회는 안한다. 다음 한달은 수업 공부와 더불어 또 많은 것들이 기다릴텐데, 열심히 해야지
- radiohead4us/Book . . . . 8 matches
노르웨이의 좌파정치와, 국제 정세, 한국의 현실등을 잘 보여주고 있는 책이다. 책을 읽게되면 노르웨이에 대한 막연한 환상이 떠오른다. 모두가 대중교통수단을 타고 출퇴근을 하고, 자가용은 아주 가끔 이용한다. 그들은 어떠한 행동을 하기 전에 ''나보다 남을 먼저'' 를 생각하는것 같다. (참 부러운 대목이다). 지하철을 탈 때에도 일일이 검표를 하지 않음에도 불구하고, 무임승차를 하는 사람은 거의 없다고 한다. 직업에 대한 귀천도 없으며, 버스기사나 대학교수나 사회에서는 같은 대우를 받는다. 그리고 또.. 환경오염이 거의 없다고 한다. 흑흑 부러워.
70년간 좌익 세력이 정권을 잡았다고 하던데.... 그래서 그런건가. 굉장히 안정되어있는것 같다. 그곳에서는 권위라는 것을 찾아볼 수 없다. 국왕도 국민들과 함께 겨울스포츠를 즐기고 같이 어울린다. 한가지 충격으로 다가온 것은, 그곳에서의 대학의 모습이다. 학생들이 자유롭게 교수의 의견에 의의를 제기하고, 너무나도 자유롭고 창의적인 분위기에서 수업을 진행한다. 우리나라처럼 '''give>take''' 가 아닌 '''give<take''' 인것 같다. (역시 공부할때는 외국물을 먹어야한다)
인권탄압또한 거의 없다고 한다. 오죽하면, 주변국가에서 노르웨이로 와 일부러 죄를 짓는다고 할까.. (노르웨이의 감옥에는 차가운 독방도, 간수도 없다. 사진을 보면 그냥 자기 집에서 사는것과 별반 다를다가 없다. 그리고 원하는 기간동안 외출신청을 하면 복무기간중에 집에도 찾아갈수 있다고 한다!)
- vending machine . . . . 8 matches
설계하고자 하는 자동 판매기에서 사용 가능한 동전은 50원, 100원, 500원 짜리 3가지이고, 커피 값은 150원이라고 가정한다. 이 자판기는 커피 값 150원 이상의 돈이 입력되면 무조건 커피를 출력하며, 커피 출력 후에 커피값 이하의 잔돈이 남을 경우 잔돈을 반환한다.
설계하고자 하는 자동판매기의 경우 사용 가능한 동전이 50원짜리, 100원짜리, 500짜리 3가지라고 설정하였음으로 이 회로의 입력은 당연히 50원짜리 동전이 입력되는 경우, 100원짜리 동전이 입력되는 경우, 500원짜리 동전이 입력되는 경우가 있을 수 있다. 입력에 대한 경우의 수는 동전이 들어오지 않는 경우, 50원 짜리가 들어오는 경우, 100원짜리가 들어오는 경우, 500원짜리가 들어오는 경우의 4가지가 되어 입력변수는 2개가 필요하게 된다. 2개의 입력변수를 각각 X, Y 라 하고, 동전이 입력되지 않을 경우에는 XY=00이 되고, 50원짜리 동전이 입력되면 XY=01이 되고, 100원짜리 동전이 입력되면 XY=10이 되고, 500원짜리 동전이 입력되면 XY=11이 된다고 가정한다.
커피값이 150원이고 사용하는 동전의 최대값이 500원이므로 거스름돈을 계산하기 위해서 상태는 0~450원까지를 상태 변수로 설계한다. 따라서 상태변수는 4개가 필요하게 된다. ABCD=0000일때는 현재 남아있는 돈이 0원인 상태이고, ABCD=0001 일때는 남아있는 돈이 50원인 상태, ABCD=0010 일때는 남아있는 돈이 100원인 상태, ABCD=0011 일때는 남아있는 돈이 150원인 상태, ... , ABCD=1001 일때는 남아있는 돈이 450원인 상태, 그리고 ABCD=1010 이후는 사용하지 않는 무정의 조건 상태(Don't care condition)로 처리한다. 또한 Filp-flop은 D Flip-flop을 사용하기로 한다.
자동판매기의 출력변수로는 커피가 출력되는지의 여부를 나타내는 변수 C와 잔돈 반환을 나타내는 출력변수 E를 사용하기로 한다. 따라서 2개의 출력변수 C,E가 필요하다. CE=00 1)일 경우는 커피와 잔돈이 모두 출력되지 않는 상태이고, CE=01 일 경우는 커피는 출력되고 잔돈이 없는 상태, CE=10일 경우는 커피는 출력되고 잔돈이 50원인 경우, CE=11일 경우는 커피는 출력되고 잔돈이 100원인 상태를 가정한다.
- woodpage/VisualC++HotKeyTip . . . . 8 matches
*일종의 페이지를 이동시켜주는 기능을한다. A라는 페이지를 열고 작업하다가 B라는 페이지를 열었다. 그리고 다시 A라는 페이지를 가고 싶을때 Ctrl + Tab을 누르면 간다. 살짝 살짝 눌러주면 바로 전 페이지를 이동하는 기능을 수행한다. 그러다 급하게 누르면 열린 페이지를 계속해서 이동하게 된다.
*1학년땐가 상민이형이 쓰는걸 보고 상당히 신기했던 북마크 한번누르면 지정하고 한번 더누르면 해제한다. 지정하고 나서 F2를 눌러서 이동한다 같은 페이지만 됨
*세로로 블럭 지정 웬만한 MS제품은 다지원하는거 같은데 역시 최근에 알음 --;
*Ctrl + Shift + H 를 누르면 클래스 header에서 cpp로 cpp에서 header로 이동한다. 한마디로 원추~!
*참고로 Visual assist에서도 지원한다고 들었는데 모르겠다.
* 알고 있듯이 브레이크 포인트를 지정하는거다. 그 옆에 손바닥에 X처있는게 있는데 그것을 잡고 드래그해서 원하는 툴바에 붙인다.
- 객체지향분석설계 . . . . 8 matches
먼저 Actor를 선정한다. Actor를 잘 선택하면 추후에 유즈케이스를 구분할 때에 도움이 된다.
* 예외1 : 여러 작업에서 중복되는 보조 업무를 유즈케이스로 뽑기도 한다. ex> Login/Logout
* 예외2 : CRUD에 해당하는 유즈케이스는 하나로 묶기도 한다.
기본흐름, 대안흐름, 예외흐름은 Actor로부터 시작하는 것이 원칙이다. Actor로부터 시작하여 일어나는 일을 정리한다.
영구적으로 저장되는 데이터를 선택한다. 이 자료들은 Entity 클래스가 된다.
각 클래스간의 상관관계를 분석, Control 클래스와 Boundary클래스로 나누어 선택한다.
위의 분석을 바탕으로 하여 Sequence Diagram을 개략적으로 작성한다. 역시 Actor와 각 클래스들을 미리 배치한 다음 필요한 조작들을분석한다.
- 김희성/리눅스계정멀티채팅 . . . . 8 matches
//사용자가 이해하기 쉽도록 스레드 번호에 +1 값을 쓰도록 한다.
//코드의 간결화를 위해 값을 복사한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
- 데블스캠프2003/넷째날/Linux실습 . . . . 8 matches
* cd .. 한 단계 상위 디렉토리로 이동한다.
* cp (파일1) (파일2) => 파일1을 파일2란 이름으로 카피한다.
* cp 파일1 temp_file => 파일1을 temp_file로 카피한다.
* cp 파일1 ../temp_file => 파일1을 현재의 상위 디렉토리의 하위 디렉토리인 temp_file로 카피한다.
* man (알고 싶은 명령어)의 형식으로 사용한다. cp명령어에 대해 알고 싶으면 man cp를 쓰면 된다.
* ls -l을 해보면 제일 왼쪽에 -rwxrwxrwx 등의 문자가 나오는데, 이것은 권한을 말한다.
* wq 저장한 후 종료. 처음 만든 파일의 경우는 wq (파일명)을 써 주어야 한다.
* 우선 vi 편집기를 실행한다.
- 데블스캠프2012/둘째날/후기 . . . . 8 matches
* [권영기] - C랑 문법이 비슷한 것 같아서 쉽게 잘 이해하나 싶었는데, 클로져부터 뭔가 잘 적응이 안되기 시작하더니 맵리듀스부터는 멘탈이 붕괴되었습니다. 하지만 첫술에 배가 부르겠습니까? 이번 데블스캠프를 통하여 자바스크립트를 입문하게 되었으니 관심을 가지고 공부한다면 잘 써먹을 수 있겠지요? 새로운 언어를 접해볼 수 있는 즐거운 체험이었습니다.
* [변형진] - 현업 JavaScript 개발자 중에서도 이 정도로 언어를 설명할 수 있는 사람이 많지 않은데 꽤나 훌륭하게 설명했네요. 본격 JavaScript 공부를 원한다면 언제든 저를 호출하세요.
* [서영주] - 자바스크립트는 그냥 단순하게 예제만 보면 그렇게 안어려워 보이는데 제대로 코드를 짠걸 보거나 오픈API관련을 보고 쓰려고 하면 그런건 예제처럼 코드가 예쁘지가 않더라고요. -_- 틀림없이 현실은 오늘 본 것의 이상이겠죠. 게다가 클래스에 나중에 변수를 추가한다거나 .prototype은 뭔지 등등... 그래도 웹 이외에도 많이 쓰이기도 하니까 피해갈 수 없는 언어 중의 하나겠죠. 언젠가 제대로 공부해보고 싶긴 하네요.
* [권순의] - XBox용으로 게임을 위해 만들어진 키넥트를 가지고 플레이 한 번 해 보고 싶긴 했는데, 음.. 듣다 보니 역시 게임은 패드로 해야 제 맛.... ㅋㅋ 여하튼 작년에 이걸로 6피에서 고생하는 모습을 봐서인지 꿈과 희망은 꿈과 희망으로 남아야 한다는 말이 이해가 되긴 하더라고요. ㅎㅎㅎ 뭐 어찌되었든 간에 잘 만들고 키넥트의 기능도 보다 향상되고 하면 뭔가 더 재미난 것을 많이 만들 수 있지 않을까 싶습니다. 유투브에는 많은 사람들이 만들어 놓은 게 있긴 하겠지만 서도.... 이걸로 소닉은 어떻게 할 수 있을까... 내가 직접 뛰어야 하나 -ㅅ-;;
* [서영주] - 일반적인 프로젝트가 아닌 프로젝트의 환경 구성같은 부분은 늘 궁금한 부분이어서 이번에 이런식으로 준비를 해야 한다 그런 부분들도 제대로 설명을 해주신 부분이 좋았습니다. 모션인식 자체는 신기했는데 보면서 조금 궁금했던게 스켈레톤의 관절 인식을 기본으로 보여주셨었는데 손바닥, 손가락처럼 신체 일부만 인식을 하는건 안되는건가요?
* [정종록] - 정말 재미있었습니다. 게임을 마우스가 아닌 동작으로 할수있다니. 특히 마인크래프트를 한다고 했을때는 정말.. 하지만 진짜 기억에 남는것은 단 한단어. SET DEFAULT!!
* [이재형] - 유지보수가 어렵게 코딩한다길래 오옷 뭔가 엄청나게 진지한 것을 기대하였는데... ㅋㅋㅋ 완전 터졌어요. 초반에는 잘 이해가 가고 덜 헷갈리고 그냥 신기하기만 했는데, 점점 갈수록 내가 나를 속이는 코드들이 점점 무서워지더라구요. ㅋㅋㅋ 일단은 기본적으로 유지보수를 잘 할 수 있는 코딩 부터 잘 만들수 있게 연습해 봐야겠습니당. ㅎㅎ
* [정진경] - 매크로의 진가를 본 것 같기도.. 치환한 문자열 못찾게 개행해버리는 아이디어는 참-_-; 예전에 각종 커뮤니티에서 '상대를 화나게 하는 방법' 이라는 동영상이 있었는데요. 그 동영상의 의미는 '최소한 이런 행동은 하지 말아야 한다.' 라는 교훈이었던 것 같구요. 유지보수를 어렵게 하는 방법을 알아야 유지보수가 어려운 코드를 봤을때 어느 정도 대처할 순발력도 있을 것이고.. 뭐 여튼 악의적인 목적으로 쓰는 일이 없기를..;
- 방울뱀스터디/GUI . . . . 8 matches
padx=5, pady=5 # 각 객체들 사이의 간격을 설정한다.
ipadx=5, ipady=5 # 객체내부의 간격을 설정한다.
버튼을 왼쪽정렬에 창의 X축만큼의 크기로 여백은 가로5, 세로10으로 만들어줘라....
command는 단추를 눌렀을때 수행하는 함수를 지정한다.
같은 그룹내에 있는 라디오 단추들은 같은 variable을 공유해야한다.
수직(수평)스크롤바를 위젯에 연결하기 위해서 2가지 일을 해야한다.
1. 위젯(객체)의 yscrollcommand 콜백 함수를 스크롤바 set 메쏘드에 설정한다.
전체 문서를 가져다가 contents 변수에 저장한다.
- 새싹교실/2011/쉬운것같지만쉬운반/2011.5.3 . . . . 8 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 지난 시간 배웠던 것을 반복을 했다. 모두에게 문제에 대한 대답을 전부 들었다. 굉장히 의미가 있었다고 생각한다. 스쳐지나가는 기본들을 다시 다잡았다고 생각한다. 잘못알고 있거나 약간 부족하게 알고 있던 내용들을 스스로 피드백을 줌으로서, 정리하게 하였다. 앞으로 마무리 할 때 쯤 다시 한번 이런 시간을 가져야겠다. - [박성현]
2. 우리가 원하는 작업을 컴퓨터가 수행할 수 있도록 하였다!
3. 소스 코드를 작성한다 -> 컴파일(.obj파일 생성) -> 링크(다른 오브젝트와) = .exe파일 생성
7. 인자 전달받음 -> 첫 번째 인자로 전달받은 문자열에 맞는 스타일로 전달받은 변수의 값들을 서식 문자에 맞추어 바꾸어 기본 출력 스트림으로 출력한다!
-컴파일을 하기 전에 소스 코드에 명령에 맞는 처리를 한다.
-모니터에 ""안에 들어있는 인자들을 출력한다
- 수학의정석 . . . . 8 matches
취지 : 컴퓨터를 배우는 입장에서 컴퓨터 언어와 컴퓨터 구조만을 알고 우리들이 배운 수학이나 과학의 배경지식을 접목시키지 못하는 것은 정말 바보 같은 행동이다. 결국 그 사람은 코더밖에 될 수 없으며 결코 프로그래머는 되지 못한다. 때문에 이러한 페이지를 만들어 수학을 컴퓨터에 접목시켜 배우고자 한다.
SOURCE : 자신의 풀이를 먼저 적고 그것을 가지고 어떻게 프로그램을 짰는지 적어야한다. 그리고 아래에 소스를 포함하도록한다.
CPU_CLOCKS : 시간은 기록 되지 않으며 프로그램이 수행된 시간(CPU CLOCK을 기록해야한다. 방법은 아래.)
경우에 따라서는 아주 어려운 문제가 나올 수 있다. 이것은 출제자가 놀리는 것이 아니라 출제자 또한 그 문제를 어렵게 생각한다는 것을 뜻한다.
time_in = clock(); // 초기 시작 시간을 입력한다.
- 이기적인유전자 . . . . 8 matches
* 본 감상 : 이 책에서 강조하는 것이 유전자는 끊임없이 자신의 복제자를 널리 퍼뜨리려고 하는 성질이 있다는 것이다. 그래서 생명체는 유전자의 목적 달성을 위해서 움직이는 하나의 기계라고 가정한다. 이에 사람도 포함된다. 유전자는 끊임없이 자신의 복제자를 널리 퍼뜨리려고 한다. 그래서 이기적으로 행동하게 된다. 자신의 복제자를 퍼뜨리기 위해서 생존 확률이 더 높아야 하고, 더 잘 생존하려면 이기적으로 되어야 하기 때문이다. 이에 맞추어서 사람을 보면 맞는 부분이 상당히 많다. 사람은 자신의 자손이 후세까지 널리 번영하기를 바라고, 옛날에 가장 큰벌중 하나가 삼대를 멸하는 벌이라는 점을 보아도 이를 확인할 수 있다. 따라서 사람의 본성도 이기적이라고 보는 것이다. 그런데 재밌는 점은 이책의 '마음씨 좋은 놈이 일등한다. ' 라는 부분에서의 글이다. 이 부분에서는 각각 마음씨 좋은파, 배신파, 보복파 등등이 나오고 이 각 파들이 행동할 경우에서 각 파들이 어떻게 흥성하는가 또는 소멸해 가는지가 나와 있다. 이 부분에서는 결국 배신파 와같은 행동을 하는 유전자는 널리 퍼질 수 없음이 증명되었고, 보복파나, 2번 배신당할 경우에만 보복하는 파등이 어떻게 마음씨 나쁜 배신파 보다 유리한지등이 나와 있다. 이 부분을 보고 사람들이 호혜적인 행동을 하거나 이타적인 행동을 하는점에 대한 하나의 이유가 될 수 있거나, 그러한 행동을 하는 유전자가 지금까지 살아남고 널리 퍼질 수 있었던 이유도 알 수 있었다. 즉 이타적인 행동이나 호혜적인 행동을 하는 이유와 그러한 행동이 필요하다는 점등을 알 수 있었다.
* 이 책에서 내가 처음 접한 개념이 밈 이라는 개념이다. 이 밈은 이기적인 유전자가 모든 생명체를 대상으로 하는 특성이라는 점과 다르게 인간에게만 적용되는 특성이다. 이 밈은 문화와 비슷하게 보일 거 같은데, 구체적으로 예를 들면 곡조나 사상, 표어, 의복의 양식, 단지 만드는 법, 아치 건조법 등이 모두 밈의 예이다. 유전자가 유전자 풀 내에서 번식함에 있어서 정자나 난자를 운반체로 하여 몸에서 몸으로 날아다니는 것과 같이 밈이 밈 풀 내에서 번식할 때에는 넓은 의미로 모방이라고 할 수 있는 과정을 매개로 하여 뇌에서 뇌로 건너다니는 것이다. 밈은 비유로서가 아닌 엄밀한 의미에서 살아 있는 구조로 간주해야 한다고 한다. 네가 내 머리에 번식력이 있는 밈을 심어 놓는다는 것은 문자대로 네가 내 뇌에 기생한다고 하는 것이다. 나의 뇌는 그 밈의 번식용의 운반체가 되어 버리는 것이다. 예를 어 '사후에 생명이 있다는 믿음'이라는 밈은 막대한 횟수에 걸쳐 세계 속의 사람들 속에 육체적으로 실현되어 있다. 이 밈이 인간의 본성과 어떠한 관계가 있냐 하면은, 밈의 목적 달성을 위해서 이타적인 행동을 하는 사람들을 설명할 수 있는 개념이 된다. 예를 들어 '착하게 살아야 한다'라는 하나의 밈만 해도 주위에서 흔하게 볼 수 있고, 이밈은 자신의 복제자를 널리 퍼뜨리기 위해서 실제로 그에 맞는 행동을 하게 되고, 그러한 행동에 그에 상응하는 대가도 기대할 수 있게 된다.(예를 들어 착한 행동에 대한 칭찬 및 포상) 이 밈이라는 개념은 인간의 이타적 행동에 대한 설명해 주고 또한 왜 그러한 이타적 행동이 필요한지 밈의 관점에서 설명해주고 있다. 주의할 점은 이것은 하나의 관점이지 이게 전부는 아니라는 점이다. 이 밈이라는 개념은 내가 이책을 읽으면서 얻은 큰 수확중 하나이다.
* 총평 : 우선 이책에 대한 전체적인 느낌을 말하면 나에게 삶을 바라보는 새로운 시각을 주었다. 흠, 지금까지 내가 읽었던 책들중에서 아주 많은것을 느낄 수 있게 해준 책중 하나에 속한다. 추천하고 싶은 책이다. 이 한 400쪽밖에 안되는 책에서 이렇게 많은 것을 얻을 수 있으니 말이다. 나중에 몇번 더 읽어보고 더 많은것을 느껴야 하겠다.
- 이영호/잡다 . . . . 8 matches
아무것도 없는 가상적인 우주공간에(물론 여기서 초끈 이론등을 배제한다. 입자 체계는 플랑크 상수와 같은 극 미시적 세계가 아닌 원자 크기의 차원에서 이해한다.) 원자 하나가 생겼다. 이 원자는 우주 공간에 가만히 있을것이다.(상대적인 기준이 없으니) 하지만 이 원자를 중심으로 양쪽 1km 에 원자가 하나씩 생겼다. 즉, 원자는 일렬로 3개다. 이럴 경우 원래 있던 가운데 원자를 중심으로 두 원자가 끌려올것이다. 물론 무게 중심인 원래 원자는 가만히 있겠다. 하지만 맨 오른쪽 원자 하나가 사라졌다고 하자. 물론 그냥 사라진 것이 아니다. 질량이 에너지로 바뀌며 사라졌다.
Q=cmt 로 열량을 재고 E=mc^2로 질량을 측정한다. 그리고 이 값이 주입한 열에너지와 질량의 값이 똑같은지 확인을한다.
A. 위의 실험에서 열에너지와 중력이 관계가 있다면(질량이 증가한다면), 히그스 입자는 타당성이 없다.
//중력은 엔트로피를 가지지 않으며 유리한 순서의 첫 번째를 차지한다.//
오늘 저를 불러서는 넷마블같은 게임을 만들었으면 한다고 하면서
특별한 컨텐츠없이 그저 남이 한다고 나도 해보자는 식의 경영은,,,
- 재미있게공부하기 . . . . 8 matches
재미없지만 꼭 공부를 해야 한다면 재미있게 만들어라. 우선 분석을 하라. 무엇이 재미없고 지루하게 만드는지, 그리고 내가 재미있어 하는 것은 어떤 것들이고 그것들의 공통점은 무엇인지. 그리고 재미없는 것에서 내가 재미있어 하는 요소들을 찾아낼 수는(혹은 투사할 수는) 없는지.
어떤 주제를 공부하는 길은 여러가지다. 꼭 수업에서 정해준 교재로 공부해야할 필요는 없다. 모든 공부에 정도란 없다. 자신이 재미있어할만한 자료를 찾아라. 그것이 책이든, 사람이든, 인터넷이든. 다만, 그런 자료를 찾느라 모든 시간을 허비하는 잘못을 하진 말아야 한다. 먼저 공부해 본 사람들에게 물어본 다음 그 중에서 고르는 것이 효과적이다.
다른 사람과 함께 공부한다. 다양한 관점과 해석이 가능하다는 것을 배운다. 그들의 경험을 배운다. 용기를 얻고 두려움이 사라진다. 재미가 생긴다. 특히 서로를 가르치는 것도 아주 좋은 방법이다.
재미없는 공부에도 그나마 개중 재미있는 놈이 있다. 그 놈부터 공략한다. 그걸 공부하고 나면 이전에 재미없어 보이던 것들이 하나 둘 재미있어 보이기 시작한다. 이는 NoSmok:김창준의일반단어공부론 의 Frontier Zone System과 유사하다.
''재미있는 것부터 하기''와 비슷하게 특정 부분을 고르고 그 놈을 집중 공략해서 공부하는 방법이다. 이 때 가능하면 여러개의 자료를 총 동원한다. 예를 들어 논리의 진리표를 공부한다면, 논리학 개론서 수십권을 옆에 쌓아놓고 인덱스를 보고 진리표 부분만 찾아읽는다. 설명의 차이를 비교, 관찰하라(부수적으로 좋은 책을 빨리 알아채는 공력이 쌓인다). 대가는 어떤 식으로 설명하는지, 우리나라 번역서는 얼마나 개판인지 등을 살피다 보면 어느새 자신감이 붙고(최소한 진리표에 대해서 만큼은 빠싹해진다) 재미가 생긴다. see also HowToReadIt의 ''같은 주제 읽기''
NeoCoin군은 재미있게 숙제하는 요령을 익힌 것 같다. 축하한다. 후배들을 위해 그 요령을 한번 풀어놓아보겠니? --JuNe
- 정모/2006.12.16 . . . . 8 matches
* 창섭 - 회원 정리를 하기 위해서는 기수가 있어야 정리 대상을 명확히 할 수 있다. 또한 기수가 같이 들어온 사람들의 유대감을 만들어 줄 수 있다. 때문에 앞으로 기수가 매겨져야 한다.
* 기웅 - 4학년이 한다고 해도 기록을 하는 방법을 찾거나 다른 방법도 있을 것 같다.
* 상욱 - 회장이 되는 사람은 열정이 뛰어난 사람이어야 할것이라고 생각한다.
* 창섭 - 회장을 뽑을때 회장단도 같이 뽑아야 한다.
* 창섭 - 회장이 지목을 할 경우에는 회장단의 책임이 떨어질 수 있다. 역활 분담을 명확히 해야 한다.
* 창섭 - 추천인 제도를 한다면 다른 사람들이 후보를 접할 기회가 늘어날 것 같다.
* 창섭 - 학회 내의 모든 사람이 후보자를 아는 것은 아니고, 공약을 검토할 기간이 되기도 한다.
* 상섭 - 소모임을 만들어서 소모임의 장에게 그에 맞는 권력과 의무를 부여한다.
- 프로그래머가알아야할97가지/ActWithPrudence . . . . 8 matches
이터레이션 초반에 스케줄이 아무리 여유로워 보인다고 해도, 시간 압박을 다소 받는 건 어쩔 수 없다. “제대로 하기”와 “빨리 하기” 중 선택해야 할 경우, 나중에 다시 돌아와서 고칠 수 있다는 전제하에 “빨리 하기”를 선택하고 싶어지기도 한다. 스스로에게나 팀에게 또는 고객에게 이런 약속을 할 때에는 정말로 나중에 고치겠다는 뜻이다. 그러나 십중팔구 다음 이터레이션에서 새로운 문제가 나타나서 거기에 집중하게 되곤 한다. 이렇게 연기된 작업은 기술적 부채(Technical Debt)라고 알려져 있으며 이런 일에 익숙해져서는 안 된다. 특별히, 마틴 파울러(Martin Fowler)는 그의 기술적 부채 분류 체계에서 이를 의도하지 않은 기술적 부채와 헷갈려서는 안 되는 계획적인 기술적 부채라고 부른다.
기술적 부채는 대출과 마찬가지다. 그로 인해 단기적인 이익을 얻지만, 전액을 상환하기 전까지는 이자를 지불해야 한다. 이런 코드 내 지름길 때문에 기능을 추가하거나 코드를 구조조정하기 어려워진다. 이런 지름길은 결함과 안정적이지 못한 테스트 케이스가 자라는 밑거름이 된다. 이를 오래 방치하면 방치할수록 더 나빠진다. 수정을 하려고 할 때 즈음이면 코드를 구조조정하고 수정하기 훨씬 어렵게 만드는 그다지 좋지 않은 설계가 애초의 문제 위에 켜켜이 쌓여 있을 수 있다. 사실상, 다시 돌아가서 고쳐야 할 때는 일이 너무 심각해져서 반드시 고쳐야 할 때뿐이다. 그 때엔 일정이나 위험을 감당할 수 없어 고치기 어려운 경우가 다반사이다.
데드라인을 맞춘다거나 기능의 단편을 구현하려고 기술적 부채를 발생시켜야 할 때가 있다. 이런 입장이 되지 않도록 애써야 하지만, 이런 상황이 반드시 필요하다면 그렇게 하되, 다만 반드시 기술적 부채를 추적해서 재빨리 갚아서 급히 끌어내려야 한다. 그렇게 타협하기로 결정하자마자, 이슈 추적 시스템에 과업 카드나 로그를 작성해서 잊어버리지 않도록 해야 한다.
다음 이터레이션에서 그 부채의 상환을 계획한다면, 비용은 최소화 될 것이다. 부채를 상환하지 않고 놔두면 이자가 누적되며, 그 이자는 가시적인 비용으로 추적되어야 한다. 이렇게 하면 프로젝트의 기술적 부채가 사업적 가치에 미치는 영향을 강조하며 상환에 적절한 우선 순위를 줄 수 있게 된다. 이자를 어떻게 산정하고 추적할 것인가는 각각의 프로젝트에 달려있지만, 반드시 그것들을 추적해야 한다.
- 혀뉘 . . . . 8 matches
자신의 의견이나 가치를 타인에게 강요하지 않으며 반대의견이나 충돌을 피하고, 인화를 중시한다.
다른 사람의 부탁을 거절하기 어려워한다
규칙 틀에 묶이는 것을 싫어한다
조용히 있다가 무대에서 끼를 발휘한다. - 몰입이 특징
지나치게 타인을 배려한다
대중 앞에 선뜻 나서지 못한다
경쟁하는 분위기보다는 편안한 분위기에서 능력을 발휘한다
딱딱하고 사무적인 사람을 싫어한다
- 1thPCinCAUCSE/ProblemB . . . . 7 matches
컴퓨터 키보드에는 0부터 9까지의 열 개의 수가 있다. 이를 이용하여 정수 57일 입력하려면 두 번 (5 한번, 7 한번) 키보드를 쳐야한다. 정수 33을 입력하려해도 역시 두 번 키보드를 쳐야 한다. 1부터 10까지 열 개의 정수를 모두 입력하려면 모두 11번 키보드를 쳐야한다. (1부터 9까지는 각 한번, 10은 두 번) 1부터 34까지를 모두 입력하려면 모두 59번의 키보드를 쳐야 한다.
X에 대해서 N을 계산하는 프로그램을 작성하시오. 해당하는 N이 없으면 -1을 출력한다.
출력은 표준 출력이다. 각 테스트 케이스의 X에 대해 자기가 계산한 N을 한 줄에 하나씩 출력한다. 해당 N이 없으면 -1을 출력한다. T개의 테스트 케이스를 모두 맞춰야 이 문제를 맞춘 것이다.
- 1thPCinCAUCSE/ProblemC . . . . 7 matches
칸을 하나 누르면 그 칸과 이웃한 칸들의 색이 반대로 변한다. 예를 들어, 1번을 누르면 1,2,4,5 번의 색이 반대로 변한다. 6번을 누르면 2,3,5,6,8,9 번의 색이 반대로 변한다. 물론 5번을 누르면 1,2,3,4,5,6,7,8,9 번의 색이 반대로 변한다. 예를 들어 아래 그림 (a)에서 6번칸을 누르면 그림 (b)로 변하고, 여기서 1번칸을 누르면 그림 (c)가 되어 모두 하얗게 변한다. (a) 그림을 모두 하얗게 만드는데 누르는 회수는 2이다.
출력은 표준 출력이다. 각 테스트 케이스의 X에 대해 자기가 계산한 회수를 한 줄에 하나씩 출력한다. 모두 흰색으로 바꾸는 것이 불가능하면 -1을 출력한다. T개의 테스트 케이스를 모두 맞춰야 맞춘 것이다.
- ACE/HelloWorld . . . . 7 matches
* 먼저 [ACE] 라이브러리를 다운받아 컴파일해야 한다. [http://riverace.com 여기]서 다운받아 컴파일한다. 빌드 컨피큐레이션이 프로젝트별로 3~4개씩 있는데 이거 한번에 컴파일하는데 30분 넘게 걸렸었다...-_-; (P4 2.4G, 512MB, VC6)
* project setting 에서 link 탭에 aced.lib (디버그용), 또는 ace.lib 을 추가한다. (프로젝트 홈 디렉토리에 lib, dll 파일이있거나 path 가 걸려있어야 한다. 혹은 additional library path에 추가되어 있어야 한다)
GNU make를 사용하는 경우 다음과 같이 Makefile 을 만들어주어야 한다. 간단한 예) test.cpp 를 test로 빌드
BIN = test # 소스파일과 같아야한다. 이 Makefile은 test.cpp 를 찾아 빌드하려고 할 것이다.
- AutomatedJudgeScript . . . . 7 matches
이 프로그램에서는 정답과 제출된 프로그램에서 만들어낸 출력 결과가 들어있는 파일을 받아서 아래에 정의된 방법에 따라 Accepted, Presentation Error, Wrong Answer 가운데 하나로 답해야 한다.
Accepted : 제출된 프로그램에 의한 출력 결과가 정답과 완벽하게 일치하는 경우에 'Accepted'라고 답한다. 모든 문자가 똑같은 순서대로 매치되어야만 한다.
Presentation Error : 숫자는 전부 같은 순서로 매치되지만 숫자가 아닌 문자가 하나 이상 매치되지 않는 것이 있으면 'Presentation Error'라고 답한다. 예를 들어 '15 0'과 '150'이 입력되었다면 'Presentation Error'라고 답할 수 있지만 '15 0'과 '1 0'이 입력되었다면 아래 설명에 나와있는 것처럼 'Wrong Answer'라고 답해야 한다.
Wrong Answer : 제출된 프로그램에 의한 출력 결과가 위에 나와있는 두 가지 범주에 속하지 않는다면 'Wrong Answer'라고 답해야 한다.
각 세트에 대해 다음 중 하나를 출력한다.
- Benghun/Diary . . . . 7 matches
아는 사람 중에 함수나 클래스를 만드는 것을 대단히 꺼리는 사람이 있다. 만들면 좋을 것 같은 간단한 함수조차도 직접 만들려고 하지 않는다. 하지만 이미 잘 만들어 진 라이브러리는 자주 사용한다. dependency가 없다면 변경에 영향을 받는 모듈이 없을 것이다. 나름대로 잘 사용하는 replace all in files, replace all in file, copy & paste등이 강력한 프로그래밍 도구중 하나인 것 같기도 하다.(최소한 나보다는 잘 사용하는 것 같다, 나름대로의 노하우도 있는 것 같다) 아마도 그는 dependency를 최소화하는 것에 큰 관심이 있거나 다른 이유가 있나보다.
어제 술장사하는 친구를 만나 이야기를 했다. 1 ~ 2년 동안 장사한 후 목표를 달성하면 다른 벌이가 되는 장사를 한다고 한다. 아르바이트하는 사람들이 고생을 하건 말건 크게 신경쓰지 않는다고 한다. 컴퓨터 산업에도 관심이 있다고 한다. 걱정된다.
코드를 작성할 때 노가다성 코드이고 긴 시간을 필요로 한다는 생각이 들면 극도로 코딩하고 싶어지지 않는 건 왜일까 ? 코드를 작성하는 것이 집중력을 필요로 하고 지겨운 작업이라고 생각이 들면 코딩하기 싫어진다. Pair Programming이 필요한 것일까 ? 비단 코드를 작성하는 작업 뿐만이 아니라 모든 것들에 대해 아무것도 모르겠다.
세미나 진행자로써의 준비 부족을 지적해 준 근희선배에게 감사를 표시한다. ( 세미나의 서두가 엉망이었다. 결과적으로 질문공세가 유도되었다 )
- BusSimulation/상협 . . . . 7 matches
void SetVelocity(double v) {m_velocity=v;}; //버스의 속도를 지정한다.
long GetMinute() {return m_Minute;}; //시간(분) 값을 리턴한다.
int GetDistance() {return m_currentDistance;}; //거리(미터)값을 리턴한다.
int GetPeopleNumber() {return m_people;}; //사람수를 리턴한다.
{ //가는 이벤트가 발생할 경우 어떻게 표시해줄지 생각한다.
CheckBusStation(); //버스 정류장에 버스가 도착했는지 체크한다
//시키는 메소드를 호출한다
- CNight2011/고한종 . . . . 7 matches
sorting이랑 스택큐? 인가 한다고 했었는데 이것도 결국 안함 ㅋ
라고 한다면
사용할때마다 struct name 라고 해야한다.
의미가 통하는(?) 유용한 (?) 데이터들을 그룹화 한다고 생각하면 된다.
쌍방형성도 존재한다.
<stdlib.h> 을 선언한다.
* 진경이가 말하길 이건 사람입장에선 쓰기 참 편하지만 비효율적이라고한다.
- ComputerNetworkClass/Report2006/PacketAnalyzer . . . . 7 matches
- 수신자 주소 등에 따라 원하는 패킷만 분석
네트워크의 3번째 프로젝트를 하기위해서는 SIO_RCVALL 라는 옵션을 설정하여 사용할 줄 알아야한다. 유사한 옵션으로는
※ 윈도우 소켓 프로그래밍을 위해서는 윈속 라이브러리를 같이 linking 해야하며, WSActrl 을 사용하기 위해서는 winsock2 라이브러리인 ws2_32.lib 를 포함해야한다.
※ 'SIO_RCVALL' : undeclared identifier 에러가 뜰 경우에 아래 코드를 추가 한다.
(1) 콘솔로 캡쳐기, 필터, 컨테이너 클래스를 구성한다.
필터기는 가능하면 propery 를 설정해서 동작하도록 구성한다.
(3) 만들어진 front-end, back-end 를 통합한다.
- D3D . . . . 7 matches
* [광식] 이책 덮은지 한 20된거 같다. 되층되층 봐가지고 기억이 안난다. 니가적어논거를 보는거로 시작한다.
이런 종류의 책들이 다 그렇듯이, winapi를 사용한다.[[BR]]
슬슬 책이 짜증나려고 한다. --+ 그냥 간단하게 책에서 제공하는 library를 쓰면 chapter2는 솔직히[[BR]]
추천 도서: Inside DirectX (필요로 한다면 말하시오. 전자책으로 있어요. --;;)
float이나 double이 나타낼수 있는 부동소수점의 한계로 인해 vector끼리 동등한지 아닌지를 잘 처리하지 못한다.[[BR]]
그래서, epsilon (이 책에서는 0.001로 정의)이라는 것을 두어 그 문제를 해결한다고 한다. [[BR]]
- HowBigIsIt? . . . . 7 matches
이안이 캘리포니아로 이사를 가기 위해 짐을 싸고 있는데, 지금까지 모은 원도 포장해야 한다. 일련의 원이 주어졌을 때 그 원들을 모두 집어넣을 수 있는 가장 작은 직사각형 상자의 크기를 구하는 프로그램을 만들어야 한다.
모든 원은 상자 바닥에 닿아야 한다. 아래에 원을 직사각형 상자에 집어넣는 방법이 나와있는데, 이 그림에 나온 배치법은 최적의 방법이 아닐 수도 있다. 조금만 생각해보면 알겠지만, 최적화된 방법이라면 모든 원들이 서로 맞닿아있어야만 한다.
첫째 줄에는 테스트 케이스의 개수를 나타내는 양의 십진수 n(n≤50)이 입력된다. 그 밑으로 n줄에 걸쳐서 일련의 수들이 입력되는데, 각 수는 스페이스로 구분된다. 각 줄의 첫째 줄은 8 이하의 양의 정수 m이며, 그 줄에 몇 개의 수가 더 들어있는지를 나타낸다. 그 뒤로 m 개의 수가 입력되는데, 각각 상자에 집어넣어야 할 원의 반지름을 의미한다. 이 수들은 꼭 정수가 아니어도 된다.
각 테스트 케이스에 대해 원들을 모두 포장할 수 있는 가장 작은 직사각형 상자의 크기를 출력한다. 각 케이스에 대한 결과가 서로 다른 줄에 출력되어야 하며, 소수점 아래로 셋째 자리까지 출력한다. 숫자가 1보다 작지 않은 경우에는 앞에 불필요한 0을 덧붙이지 않는다(1 미만인 경우에는 0.543 같은 식으로 앞에 0을 하나 붙여준다).
- Java Study2003/첫번째과제/노수민 . . . . 7 matches
* 높은 수행성능(High-performance)을 제공한다:
* 다중 스레드(Multi-thread)를 지원한다:
클래스로더는 자바 소스를 컴파일해서 생성된 클래스 파일을 로딩한다.
클래스 파일내의 메서드, 변수들, 객체 변수들을 자바가상머신의 각 메모리에 로딩한다.
실행엔진은 메모리에 로딩된 메서드들을 실행한다.
네이티브 메서드는 자바 언어 말고 다른 언어로 된 메서드를 호출해서 수행하는 메서드이다. 이러한 메서드도 자바가상머신에서 처리한다.
자바는 처음에는 가전 제품에서 단순하게 사용되다가 플랫폼 독립적인 기능이 인터넷의 기능과 조화를 이룬다는 점을 밝혀져 1995년 썬 마이크로시스템즈(Sun Microsystems)에서 "자바(Java) 언어"를 와 "핫자바(HotJava)"를 발표하면서 세상에 나오기 시작했다. "핫자바(HotJava)"는 자바 언어로 만든 웹브라우저를 말한다. 바로 JDK(Java Developers Kit) 1.0.x버전을 발표하면서 본격적인 자바 개발환경이 지원되기 시작된다. 그리고 Netscape와 라이센스 계약을 통해 Netsacpe 브라우저에서 자바가 시행됨으로서 전 세계로 자바가 확산된다.
- Java Study2003/첫번째과제/장창재 . . . . 7 matches
높은 수행성능(High-performance)을 제공한다:
다중 스레드(Multi-thread)를 지원한다:
이러한 문제점은 느린(Lazy) 클래스 로딩에서 발생하거나 메모리 할당과 가비지 콜렉션이 비결정적이고 느린 최악의 경우(worst-case) 특성을 가지며 stop-start 방식으로 모든 스레드를 멈출 수 있다는 문제점이 있습니다. 이를 해결하기 위해 클래스를 미리 로딩(class preloading)한다거나 정적 초기화(static initializer)를 제거하여 패키지 라이브러리에 대해서는 가상머신 초기화를 사용하고 응용프로그램에서는 명시적인 초기화 를 사용하게 하는 등의 기법을 사용할 수 있습니다. 그리고, 메모리 할당과 쓰레기 수집(garbage collection)에 대해서는 정해진 시간 내에 입터럽트 가능한 쓰레기 수집을 하는 것입니다. 또는 표준화된 실시간 API를 제공함으로써 해결할 수 있습니다.
C언어를 이용하여 C 프로그램을 작성한다면 반드시 main이라는 시작 함수를 정의해 주어야 하고, 윈도우 응용프로그램을 작성한다고 하면 WinMain이라는 함수를 꼭 작성해 주어야 하지요. 이러한 것을 규약(protocol)이라 합니다. 마찬가지로, 자바 언어를 이용하여 여러 가지 종류의 자바 프로그램을 작성할 수 있는데, 이 때 각 자바 프로그램의 종류에 따라 해당 규약이 서로 다릅니다. 이렇듯 자바를 이용하여 자바 프로그램을 작성한다는 것은 각 자바 프로그램에서 제시하고 있는 규약을 지켜 프로그램을 작성한다는 것입니다. 자바 언어를 이용하여 작성할 수 있는 자바 프로그램의 종류를 살펴보면 다음과 같습니다.
- MFC/DynamicLinkLibrary . . . . 7 matches
확장자가 반드시 DLL이어야 하는 것은 아니지만, DLL 이 아닌경우에는 프로그래머가 이를 로드하는 부분을 따로 만들어야 한다. .vbx .ocx같은 것은 특정한 종류의 컨트롤들을 포함하는 DLL 들이다.
Library.DLL을 3개의 프로그램 A,B,C가 동시에 공유한다고 하면 각각의 프로그램이 실행될때마다 각 프로그램에서는 DLL파일의 함수로의 링크가 일어난다. 이런 과정은 윈도우 운영체제에 의해서 자동으로 이루어지고, 한개의 프로그램이라도 실행이 종료되지 않으면 윈도우는 DLL을 메모리에서 제거하지 않고 남겨준다.
프로그램이 먼저실행되데 DLL은 프로그램의 요청이 발생한 시점에서 메모리에 로드된다. 그때가 되서야 프로그램은 DLL로부터 함수의 어드레스를 얻고 그것을 사용해서 함수를 호출한다.
runtime dynmaic linking 의 중요한 점은, 런타임 상에서 해당 모듈을 교체할 수 있다는 점이다. winamp 의 나 KMP 등와 같은 플러그인을 제공해주는 프로그램의 경우 대부분 이러한 runtime-dynamic linking 방법을 이용한다.
독립적 실행은 불가능하지만 main함수의 변형된 형태를 포함한다. 이 곳에서는 dll이 사용되기 전에 초기화되는 내용들이 포함되게 된다. DLL초기 로드시 운영체제가 호출한다.
만일 프로세스-global 한 메모리를 쓰고 싶다면, 메모리 맵을 이용하거나 DLL 공유 영역을 선언하는 방법 등을 써야 한다.
- MFC/ScalingMode . . . . 7 matches
논리 좌표와 장치 좌표간의 매핑을 변경할 수 있는 모두는 두가지가 존재한다.
''뷰포트는 논리좌표가 장치좌표로 변환되는 파라메터의 역할을 한다.''
// TODO: 확대 기능의 구현을 위해서 뷰포트의 범위를 변경한다.
// MM_LOENGLISH 모드를 원하기 때문에 y의 범위는 음수가 되어야 한다.
pDoc->SetWindowExt(DocSize); // 윈도우의 범위를 설정한다.
int xLogPixels = pDC->GetDeviceCaps(LOGPIXELSX); // 인자에 해당하는 장치 정보를 리턴한다. 인치당 픽셀의 개수를 리턴. 100단위
// x와 y에서의 뷰 포트 범위를 계싼한다.
- MindMapConceptMap . . . . 7 matches
ConceptMap 은 Joseph D. Novak 이 개발한 지식표현법으로 MindMap 보다 먼저 개발되었다. (60-70년대) 교육학에서의 Constructivism 의 입장을 취한다.
ConceptMap 은 'Concept' 과 'Concept' 간의 관계를 표현하는 다이어그램으로, 트리구조가 아닌 wiki:NoSmok:리좀 구조이다. 비록 도표를 읽는 방법은 'TopDown' 식으로 읽어가지만, 각 'Concept' 간 상하관계를 강요하진 않는다. ConceptMap 으로 책을 읽은 뒤 정리하는 방법은 MindMap 과 다르다. MindMap 이 주로 각 개념들에 대한 연상에 주목을 한다면 ConceptMap 의 경우는 각 개념들에 대한 관계들에 주목한다.
개인적으로 처음에 MindMap 보다는 그리는데 시간이 많이 걸렸다. 하지만, MindMap 에 비해 각 개념들을 중복적으로 쓰는 경우가 적었다. (물론 MindMap 의 경우도 중복되는 개념에 대해서는 Tree 를 깨고 직접 링크를 걸지만) MindMap 의 Refactoring 된 결과라고 보면 좀 우스우려나; 주로 책을 정리를 할때 MindMap 을 하고 때때로 MindMap 에서의 중복되는 개념들을 토대로 하나의 개념으로 묶어서 ConceptMap 을 그리기도 한다.
빠르게 책의 구조와 내용을 파악할때는 MindMap을, 그리고 그 지식을 실제로 이용하기 위해 정리하기 위해서라면 MindMap 을 확장시키거나, ConceptMap 으로 다시 한번 표현해나가는 것이 어떨까 한다. --석천
MindMap 의 연상기억이 잘 되려면 각 Node 간의 Hierarchy 관계가 중요하다. 가능한한 상위 Node 는 추상도가 높아야 한다. 처음에 이를 한번에 그려내기는 쉽지 않다. 그리다가 수정하고 그리다가 수정하고 해야 하는데 이것이 한번에 되기는 쉽지 않다. 연습이 필요하다.
MindMap 의 표현법을 다른 방면에도 이용할 수 있다. 결국은 트리 뷰(방사형 트리뷰) 이기 때문이다. [1002]의 경우 ToDo 를 적을때 (보통 시간관리책에서 ToDo의 경우 outline 방식으로 표현하는 경우가 많다.) 자주 쓴다. 또는 ProblemRestatement 의 방법을 연습할때 사용한다. --[1002]
- OurMajorLangIsCAndCPlusPlus/time.h . . . . 7 matches
|| clock_t clock(void); || processor clock time 을 반환한다 ||
|| double difftime(time_t time1, time_t time2); || 두 시간간의 차이를 계산한다. ||
|| struct tm *gmtime(const time_t *timer); || timer 를 GMT에 입각하여 tm 구조체의 값으로 변환한다. ||
|| struct tm *localtime(const time_t *timer); || timer를 local time 에 입각하여 tm 구조체의 값으로 변환한다. ||
|| time_t mktime(struct tm *timeptr); || tm 구조체를 time_t 의 값으로 변환한다. ||
|| time_t time(time_t *timer); || 현재의 시간을 time_t 형태로 변환한다. ||
|| struct tm *getdate(const char *); || 문자열을 tm 구조체로 변환한다. ||
- PerformanceTest . . . . 7 matches
수행시간 측정용 C++ Class. 수행시간 단위는 Sec 입니다. 단 HighResolutionTimer를 지원하는 프로세서가 필요합니다.
펜티엄 이상의 CPU에서 RDTSC(Read from Time Stamp Counter)를 이용하는 방법이 있다. 펜티엄은 내부적으로 TSC(Time Stamp Counter)라는 64비트 카운터를 가지고 있는데 이 카운터의 값은 클럭 사이클마다 증가한다. RDTSC는 내부 TSC카운터의 값을 EDX와 EAX 레지스터에 복사하는 명령이다. 이 명령은 6에서 11클럭을 소요한다. Win32 API의 QueryPerformanceCounter도 이 명령을 이용해 구현한 것으로 추측된다. 인라인 어셈블러를 사용하여 다음과 같이 사용할 수 있다.
간단하게 32비트 정수로 사용하고자 한다면 RDTSC명령이 카운터에서 가져오는 값 중에서 EAX에 담긴 값만을 가져오는 방법이 있다. 짧은 시간동안 측정한다면 EAX에 담긴 값만 가지고도 클럭을 측정할 수 있다. 64비트를 모두 이용할려면 LARGE_INTEGER 구조체를 이용한다.
멀티쓰레드로 인해 제어권이 넘어가는 것까지 고려해야 한다면 차라리 도스 같은 싱글테스킹 OS에서 알고리즘 수행시간을 계산하는게 낫지 않을까 하는 생각도 해봅니다. (하지만, 만일 TSR 프로그램 같은 것이 인터럽트 가로챈다면 역시 마찬가지 문제가 발생할듯..) 그리고 단순한 프로그램의 병목부분을 찾기 위한 수행시간 계산이라면 Visual C++ 에 있는 Profiler 를 사용하는 방법도 괜찮을 것 같습니다. 해당 함수들의 수행시간들을 보여주니까요.
- ProjectAR/Temp . . . . 7 matches
* CMyDocument : 게임의 자료를 담당한다(계산도 전부 담당)
- MsgProc() : 메세지 처리 루틴 // 키입력, 마우스입력등을 처리한다.
- FrameMove() : Doc를 바탕으로 출력용 좌표들을 계산한다. // 입력한 내용들도 반영한다.
- Render() : 화면에 직접 출력한다. (오직 출력루틴들만 있다.) // 계산을 하려면 FrameMove에서
스토리가 빈약하기 때문에 무언가에 몰입할 다른 요소를 만들어야 한다.
- 정령은 무기의 능력치를 올려주기도(ATK+ , DEF+, HIT+등..) , 특수한 능력을 부가하기도 (독, 레지, ...) 한다.
- ProjectSemiPhotoshop/SpikeSolution . . . . 7 matches
1. 성공적인 제품을 정의하기 위해 충분한 스토리를 작성한다.
* 필요한 조사를 수행한다.
* 각 스토리 구현의 난이도를 추정한다.
* 스토리 구현 속도를 추정한다.
* 비즈니스 가치와 난이도에 기반하여 첫번째 배포를 하기 위한 스토리를 선택한다.
1. 모든 테스트를 실행한다.
* 모든 아이디어를 표현한다.
- TAOCP/InformationStructures . . . . 7 matches
상수 L0를 base address라고 한다면 다음과 같이도 쓸 수 있다.
하지만 공간낭비가 무한할 수 있다.( F, R이 계속증가하기 때문이다.) 따라서 이런 문제(the problem of the queue overrunning memory)를 해결하려면, M개의 노드(X[1]...X[M])가 순환하도록 한다.
오버플로우와 언더플로우가 일어났을 때 어떻게 해야 할까? 언더플로우는 하나의 의미있는 조건 - 에러 상황이 아니라 - 이다. 하지만 오버플로우는 더 들어갈 공간이 없는데 들어갈 정보가 남아있어서 에러이다. 따라서 오버플로우가 생기면 용량한계를 넘어서서 프로그램이 종료한다.
하지만 리스트가 더 많으면 bottom이 움직일 수 있어야 한다.(we must allow the "bottom" elements of the lists to change therir positions.) MIX에서 I번째 한 WORD를 rA에 가져오는 코드는 다음과 같다.
i<k≤n인 k 가운데 TOP[k] < BASE[k+1]인 가장 '''작은''' k를 찾는다. 찾으면 TOP[k] ≥ L>BASE[i+1]인 L에 대해서 다음을 한다.
i≤k<n인 k 가운데 TOP[k] < BASE[k+1]인 가장 '''큰''' k를 찾는다. 찾으면 TOP[i] ≥ L>BASE[k+1]인 L에 대해서 다음을 한다.
공간을 찾을 수 없다. 포기해야 한다.
- TellVsAsk . . . . 7 matches
아랙 샤프의 "Smalltalk by Example" 이라는 최근의 책에서는 아주 값어치있는 교훈을 강조한다.
'''절차적인 코드에서는 정보를 얻고 난 뒤 할 일을 결정한다. 개체 지향 코드에서는 객체에게 행동을 하도록 시킨다.'''
요는, 당신은 객체들로 하여금 당신이 원하는 일을 하도록 노력해야 한다. 객체들의 상태에 대해 객체들에게 묻지 말고, 결정하라. 그리고 객체들에게 원하는 일을 하도록 하라.
하지만, 이는 좋은 방법이 아니다. 당신이 원하는 일에 대해서 object 에게 시켜라. (즉, 저 행위에 대한 결정은 object 내에서 해결하게끔) object 로 하여금 어떻게 해야 할지 해결하도록 하라. 절차적이려하기 보단, 서술적이려고 하라. (이는 OOP 에서 이야기하듯, Object 들 간의 행동들에 대해서.)
만약 그들의 책임(의미)에 기반해서 클래스 설계를 시작한다면 이런한 덫에서 벗어나기에 더 쉽다.
- TowerOfCubes . . . . 7 matches
서로 무게가 다른 N개의 색이 칠해진 정육면체가 주어졌다. 각 정육면체의 모든 면은 서로 다른 색으로 칠해져 있다. "무거운 정육면체를 가벼운 정육면체 위에 올려놓지 않는다"라는 첫번째 조건과 "모든 정육면체의 바닥면(맨 밑에 있는 것은 제외)의 색은 그 밑에 있는 정육면체의 윗면의 색과 같아야 한다"라는 두번째 조건이 주어졌을 때, 두 조건을 만족하면서 최대한 높은 탑을 쌓아야 한다.
우선 각 케이스마다 출력 예에 나와있는 식으로 테스트 케이스 번호를 출력한다. 그 다음 줄에는 가장 높은 탑의 정육면체 개수를 출력한다. 그 다음 줄부터는 탑을 이루는 정육면체를, 맨 위에 있는 정육면체부터 아래로 내려가면서, 한 줄에 하나씩 출력한다. 정육면체를 출력할 때는 입력된 순서를 나타내는 번호를 출력하고 스페이스를 하나 출력한 다음, 어느 방향에 있던 면이 위로 올라가도록 쌓았는지를 나타내는 문자열(front, back, left, right, top, bottom, 앞, 뒤, 왼쪽, 오른쪽, 위, 아래를 나타냄)을 출력한다. 답이 여러개 있을 수 있는데, 그 중 아무 답이나 출력해도 된다.
서로 다른 테스트 케이스 사이에는 빈 줄을 출력한다.
- Ubiquitous . . . . 7 matches
가트너 그룹의 발표에 따르면 2001년 세계 PC 판매량은 1억 286만대이고 휴대용 단말기는 3억9958만대로 집계되었다고 한다.
인간화된 인터페이스(Calm Technology)를 제공해 사용자 상황(장소, ID, 장치, 시간, 온도, 명암, 날씨 등)에 따라 서비스가 변한다.
물이나 공기처럼 시공을 초월해 '언제 어디에나 존재한다'는 뜻의 라틴어(語)로, 사용자가 컴퓨터나 네트워크를 의식하지 않고 장소에 상관없이 자유롭게 네트워크에 접속할 수 있는 환경을 말한다. 1988년 미국의 사무용 복사기 제조회사인 제록스의 와이저(Mark Weiser)가 '유비쿼터스 컴퓨팅'이라는 용어를 사용하면서 처음으로 등장하였다.
당시 와이저는 유비쿼터스 컴퓨팅을 메인프레임과 퍼스널컴퓨터(PC)에 이어 제3의 정보혁명을 이끌 것이라고 주장하였는데, 단독으로 쓰이지는 않고 유비쿼터스 통신, 유비쿼터스 네트워크 등과 같은 형태로 쓰인다. 곧 '''컴퓨터에 어떠한 기능을 추가하는 것이 아니라 자동차·냉장고·안경·시계·스테레오장비 등과 같이 어떤 기기나 사물에 컴퓨터를 집어넣어 커뮤니케이션이 가능하도록 해 주는 정보기술(IT) 환경 또는 정보기술 패러다임'''을 뜻한다.
유비쿼터스화가 이루어지면 가정·자동차는 물론, 심지어 산 꼭대기에서도 정보기술을 활용할 수 있고, 네트워크에 연결되는 컴퓨터 사용자의 수도 늘어나 정보기술산업의 규모와 범위도 그만큼 커지게 된다. 그러나 유비쿼터스 네트워크가 이루어지기 위해서는 광대역통신과 컨버전스 기술의 일반화, 정보기술 기기의 저가격화 등 정보기술의 고도화가 전제되어야 한다. 이러한 제약들로 인해 2003년 현재 일반화되어 있지는 않지만, 휴대성과 편의성뿐 아니라 시간과 장소에 구애받지 않고도 네트워크에 접속할 수 있는 장점들 때문에 세계적인 개발 경쟁이 일고 있다.
전자태그(RFID, 또는 스마트태그) : RFID는 스캐너라는 특정 장비를 필요로 했던 기존 바코드와 달리 무선을 통해 식품, 동물, 사물 등 다양한 개체의 정보를 관리할 수 있는 차세대 인식 기술을 말한다.
- VacationOfZeroPage . . . . 7 matches
이전까지는 방학중에 4주에서 6주 정도를 잡아 스터디나 프로젝트를 했지만 이것을 방학 초 1주에 몰아서 한다. 우선 스터디 또는 프로젝트 그룹을 나눈 후, 목표를 정하고, 1주에 걸쳐 나인투나인(AM 9:00 ~ PM 9:00) 으로 아주 타이트하게 진행한다. 마지막날에 그룹별로 발표를 함으로 끝낸다. 4주에서 6주 정도 잡고 스터디를 하는것보다 오히려 더 효과적인 학습이 이루어질거라고 생각한다.
방학중에는 정모, MT 등을 통해서 친목 도모를 한다. 그리고 가끔 다수가 관심갖는 것에 대해서 세미나도 개최한다.
방학이 끝나기 전에 다시한번 모여 특별한 이벤트를 한다. 이때는 스터디나 프로젝트보다는 흥미롭고 새로운 경험을 해볼 수 있는 시간을 마련한다.
- ZIM . . . . 7 matches
* Time, Cost, Quality에 최적이 되도록 프로젝트를 관리한다.
* 고객의 요구사항을 추출하여 시스템의 요구사항을 정의한다. (Analysis)
* 추출된 요구사항을 구현하는 방법을 정의한다. (Design)
* 전체 프로젝트의 작업산출물들(각종 문서 및 소스코드등)을 관리한다.
* 리뷰나 교육을 통해 품질을 보장하도록 관리한다.
* 각종 필요한 소프트웨어와 툴들을 설치한다.
Zeropage 에 지원금을 요청한다. -.-;
- html5/others-api . . . . 7 matches
* HTML5는 사용자의 편의를 위한 다양한 요소를 제공한다.
* 플러그인을 표현할때 사용한다 동영상 음악등을 통합하여 표현할때 사용한다.
* embed엘리먼트에는 자식엘리먼트를 사용할 수 없다. 단일하게 embed만으로 종료한다
* time엘리먼트는 24시간기준의 시간을 표현하거나 그레고리안 달력을 표현 할 때 사용한다.
* 열고 닫을수 있는 목록표를 제공한다.
* iframe은 내부에 포함된 콘텐츠를 표시할때 사용한다.
- html5/overview . . . . 7 matches
* 표준만 따른다면 어떤 브라우저에서도 똑같이 작동한다
* 이미 사용되고 있는 내용에서 사양을 추출한다
* HTML의 목적 : 1998년 W3C는 html이 아닌 XHTML의 표준 사용을 권고한다. 그러나 XHTML은 HTML과의 비호환성으로 널리 퍼지지 못한다.
* 결과적으로 10년이상 사용되는 HTML의 저사양이 오히려 웹 어플리케이션의 발전을 저해했다. 그러나 W3C는 XHTML을 위해 새로운 HTML의 개발을 거절한다.
* 그러자 apple, mozillar, opera 세 기업이 모여 WHATWG를 발족하고 HTML의 진화를 지향한다.(apple은 플래시를 제공하는 어도비와 관계가 좋지않아 HTML5를 적극적으로 추진한다는 소문이다)
- 그래픽스세미나/1주차 . . . . 7 matches
a. CRT의 전자총에서 빔을 화면의 형광물질에 쏴서 빛을 내게 한다.
* 그림의 안쪽을 쉽게 채울 수 있으나, 계단현상이 발생한다.
1. 위의 방법과 비슷하지면 X값을 1씩 증가시킨후 Y값의 결정을 할때 Y값의 양 정수중에서 더 가까운 수를 취한다.
a. 직접 선이 출력 영역과 교차하는지 비교한다.
1. 출력영역을 중심으로 화면을 9등분한다.
* 각각에 Outcode를 부여한다.
* 선의 시작점과 끝점이 들어있는 영역의 Outcode 2개를 AND 연산한다.
- 데블스캠프 . . . . 7 matches
사람은 따로 이야기하지 않아도 그때의 느낌만큼은 알 수 있을 것이라 생각한다.
이를 설명하기 위해 시간을 Devils가 처음 만들어질 시점인 95년으로 돌아가야 한다.
가끔 언론에서 극한 상황에 도전하는 사람들의 이야기를 보곤 한다. 그 사람들을
것이다. 이것이 그런 느낌을 가져다주지 못한다 하더라도 그런 각오와 목표로
수 있는 기회가 될수 있다고 생각한다.
밤을 샌다 안샌다, 이벤트 등에 참석한다 안한다가 문제가 아니라, 어떻게 하면 저러한 장점들을 이끌고 가면서, 한단계 더 발전할 수 있는 캠프를 만들것인가를 궁리해야 할 것이다. ZP/데블스 통합 때에도 이야기되었던 것중 하나는 선후배간 지식/정신(학회 정신이라고 해둘까. ZP를 ZP라고 이야기할 수 있는 것들, 데블스를 데블스라고 이야기할 수 있는 것들) 이 전수되지 않았다는 점이다.
- 데블스캠프2011/둘째날/Machine-Learning/NaiveBayesClassifier/김동준 . . . . 7 matches
//자기 Section 이 아닌 내용을 Calculate 하는 함수. Index 에 반응하며 수행시 초기화 후 계산한다.
//해당 단어에 대한 자기 Section 이 아닌 단어수를 Calculate 하는 함수. Index 에 대응하며 수행시 초기화 후 계산한다.
// Ln[p(S) / p(!S)] 값을 계산하는 함수. Index 에 대응한다.
// Sigma Ln[p(Wi ^ S) / p(Wi ^ !S)] 값을 계산하는 함수. Index 에 대응한다. 단 특정 단어에 대한 Advantage 를 부과한다. (Advantage 함수 참조)
// 특정 단어에 대한 Advantage 부과함수. 해당 Index Section 에만 존재하는 단어일때 빈도에 따른 가산점을 부여한다. 가산은 해당단어수 / Section 전체기사수 * 50 이다.
// 해당 File 변수에 대한 Index Section 과의 매치율을 보여주는 함수. 맞은 것과 틀린것, 그리고 그 것에 대한 판단 확률을 반환한다.
- 새싹교실/2011/Noname . . . . 7 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* expression이 충족될 경우 statement를 실행한다.
* while문과 비슷하지만 do_while문은 statement를 무조건 한번은 출력한다.(그 뒤에 조건확인.)
* 동일한 자료형의 여러개의 변수를 일괄되게 선언한다.
* index를 이용하여 자료들에게 접근한다.
* 선언시에 바로 배열을 초기화 할때에는 중괄호 {}를 사용한다.
* 배열을 선언한 후에 배열의 각 원소에 값을 저장하러면 index를 이용한다.
- 새싹교실/2012/세싹 . . . . 7 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
2) 원하는 경로에 빈 문서 만들기 (확장자는 .c로 해주세요)
5) gcc로 컴파일을 합니다. (gcc 파일명.c -o 원하는파일명 -std=c99) 해당 예제외에 추가로 여러 옵션을 줄수 있습니다.
- 인터넷 소켓(Internet socket, socket' 혹은 network socket 라고 부르기도 한다)은 네트워크로 연결되어 있는 컴퓨터의 통신의 접점에 위치한 통신 객체다.
네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. - wikipedia
-4;//사이즈를 읽기위해 사용한 4바이트를 제외한다.
-4;//사이즈를 읽기위해 사용한 4바이트를 제외한다.
- 새싹교실/2013/이게컴공과에게 참좋은데 말로설명할 길이 없네반 . . . . 7 matches
> 배열에 도달했을때, 이제 속도를 죽이고 천천히 포인터와 엮어서 설명한다.
영문 소문자로 구성된 긴 문장을 입력받아 이문자열 내의 각 알파벳 문자개수를 구해 출력하라. 예를 들어 alpha가 입력되었다면, a:2, b:0, ... , p:1이 출력되어야한다. Tip> 각 문자의 출현 회수를 저장할 배열이 필요하다.
출력 예의 형식으로 출력한다.
출력 예의 형식으로 출력한다.
- 연습문제 : 콘솔창에 자기가 원하는 방향으로 기호를 움직이게 하는 프로그램 만들기.(둘다 성공.)
- 지운 : 문법 전반을 잘 아는것같다. 자잘한 문법실수가 없고, 차분히 깊게 생각한다.
- 이번 회차의 전반적인 계획 : 시험끝난 주이므로 브레이크 타임. 입출력 시스템과 컴퓨터 전반적인 내용에 대해서 설명한다.
- 일정잡기 . . . . 7 matches
1. 다른 사람/단체의 일정이 언제인지 잘 알 수 있어야 한다.
1. 다른 사람/단체의 일정을 바꿀 수 있어야 한다.
1. 운이 좋아야 한다.
* 예를들어 3학년 동기엠티를 추진하는 K군이 있다고 하자. K군은 5월 중에 MT를 가고싶어한다. K군은 일정을 잘 잡는데 필요한 요소를 고려해서 1달 전에 MT를 갈 계획을 세우기 시작한다. 이 때 1달전이라는데서 얻을 수 있는 이점은 1번과 2번이다. 1번의 경우, MT참가 인원에 영향을 미치는 요소들을 미리 파악할 수 있게 된다는 장점이 생기게 되는데, 예를들어 농활(5/3~5/6) 해오름제(5/16) 축제(5/22~5/24)와 같이 일정을 잡는 사람이 바꿀 수 없는 요소를 미리 파악해 이를 피하도록 유도할 수 있다. 2번의 경우, MT참가자들의 일정을 1달전에 고정시킴으로 인해서 자신의 다른 일정들을 다른 날짜로 보내도록 만들고, 해당 날짜에 MT가 있음을 주지시켜 이 날 다른 집단이 일정을 잡는 것을 피하도록 할 수 있었다.
* 역시 가장 좋은 방법은 위에서 말한대로 일정을 미리 잡는 것인데, 이외에 3번이 필요한 경우도 발생한다. 예를들어 3학년의 특정 한 과목을 재시험쳐야하는 상황이 왔는데, 일정이 있는 당일 오후 6시에 시험을 칠 뻔 하였으나 강의실 사정 등으로 수업시간에 치게되는 운에 의해서 일정에 영향을 받지 않는다던가 말이다.
* 반면에 1,2,3번이 모두 결여된 경우도 있는데, C집단의 회장 L군은 2012년 C집단의 정모가 매번 다른 일정과 겹치게되는 불운을 맞이하게된다. 정보 수집을 하지 못해 학교 행사와 일정이 겹쳤음은 물론이고, 그 때문에 직전에 날짜를 바꿈으로 인해서 다른 사람들의 다른 일정과 모조리 겹쳐지게 되기도 한다. 게다가 운도 없어 그 날짜에 자신이 참석하지 못하는 불운을 맞이하였고, 일정 파토라는 최악의 사태를 낳기도 했다.
- 정규표현식/스터디/문자집합으로찾기 . . . . 7 matches
마침표(.)는 어떤 문자와도 일치한다. 만약 특수한 문자와 일치시키고 싶다면,
"문자집합"을 사용한다.
문자집합은 메타문자 대괄호([])를 사용해 문자집합을 표현한다. 대괄호 안에 있는 문자는 모두 집합의 구성원이 되며, 집합에 속한 문자 가운데 하나가 일치한다. 집합에 속한 모든 문자가 모두 일치할 필요는 없다.
* {{{다음과 같이 [] 는 리스트를 나열해주는 것으로 .과 같이 한글자만을 지원한다 여러개의 []리스트를 사용하고싶다면 '*'(와일드카드)를 붙이거나 범위를 지정해주는 {}를 사용하여 []* 이나 []{4,4}(4개 찾기)로 이용할수 있다.}}}
* {{{또한 다음과 같이 [0-9] = [0123456789]와 같이 사용하며 문자 또한 지원한다. 축약법은 하이픈(-)을 붙이는 방법으로 [A-Z][a-z] 이방법은 아스키 코드 방식을 따르며 축약시킬 경우 [a-A]는 역순이므로 되지 않는다. 또한 리스트([])안에서는 또다른 리스트([])와 역슬래시(\), 하이픈(-)을 제외하고는 모두 일반 문자와 같이 인식하므로 특수문자 %&^*$ 를 단순히 리스트 안에 나열하는것으로 검색할수 있다 리스트 안에서 리스트([])를 검색하는 방법은 역슬래시를 붙여 이스케이프를 시켜야한다.}}}
- 정규표현식/스터디/반복찾기 . . . . 7 matches
* 구간은 중괄호로 표시한다. ({})
* 정확히 원하는 만큼만 일치하도록 문자수 못 정함
* RGB 값은 {{{#99FFAA}}} 처럼 {{{[:xdigit:]}}}가 정확하게 6번 나와야 한다.
물음표(?)는 제한된 범위만큼 일치시키고(없거나 하나만 있는 경우 일치한다), 구간을 쓰면 정확히 지정한 만큼 일치하거나 지정한 범위 안에서만 검색을 수행한다.
이제 슬슬 정규표현식의 진짜 의미가 들어난다. 정규 표현 패턴을 사용하여 반복찾기를 하면 이제 까지 배워온 것을 이용해 구간으로 정확하게 원하는 문자를 찾아낼수 있을것이다.
다음을 이용한다면 반복찾기 정규표현식은 중복도 방지할수있는 강력한 도구로 만들수 있을것이다
- 정모 . . . . 7 matches
[정모] 라는 이름이긴 하지만, 그리 딱딱한 모임이진 않길 바란다. 지금의 정모는 너무 '딱딱' 하다라고 생각. 이는 '세미나실'이란 장소가 주는 NoSmok:어포던스 일 가능성도. (이 단어 요새 잘 써먹는군; 근데 정말 일종의 '행위유발성'의 영향을 받는게 아닌가 하는 생각이 들어서. 세미나실의 특징상 가운데 발표자가 있어야 하는식이고, 개개인별로 비격식적인 이야기를 하기 어렵다. 오른쪽의 한줄짜리 공간은 그 사람들만을 지역화 시킨다. 책상 배치상 안쪽 사람들이 밖으로 나가기 어렵다. 뒤에 앉은 사람들을 쳐다보기 어렵다. 창섭이 말투 관계상 낮게 깔리는게 사람들로 하야금 무게감을 느끼게 한다; 등등) --석천
-> 토론에 대한 '결정'을 내리지 못한다.
-> Online (주로 Wiki를 통해 이루어지는) 에서 결정할 내용과 Offline 에서 결정할 내용을 구분하지 못한다.
-> 사회자가 모든 질문에 대한 답변을 한다.
-> 해결책 : 해당 주제제안자에게 사회자가 질문에 대한 답변을 위임한다.
최근에 자주들렸던 말중 하나가 [정모]로 사람들이 모였음에도 불구하고 '위키에서 처리하자'이다. 이는 잘못이다. 위키에서는 의견들이 모이고, 결정은 정모에서 신속하게 되어야 한다고 생각한다. 위키는 해당 관련 정보를 모으고 토론이 격해질때 도큐먼트를 정리하는등 호흡이 긴 토론시에 유용하다. 모든 토론들이나 결정사항들이 위키에서 이루어질 이유가 없고, 또한 별로 유용하지도 않다. --[1002]
- 정모/2006.4.10 . . . . 7 matches
3. 코드를 쉬운게 아니더라도 같이 작성한다.
4. 프리젠 테이션을 한다.
5. 세미나를 한다.
6. 요구사항을 신입생이 건의한다.
7. 새싹스터디를 이용한다.
11. 코드레이스 진행 후 팀별로 설명한다.
12. 코드레이스 전에 간단한 문법 설명을 한다.
- 제로페이지회칙만들기 . . . . 7 matches
* ["정모"] 날짜 : 매월 18일으로 한다. or 매월 셋째주 화요일 7~9시에 한다.
* ["회원자격"] : 사전 연락 없거나(게시판 or 위키 공지), 현재 납득할 사정(학부생 아닌 경우,휴학)이 없이 2회 연속 정모에 불참시.본인 의사로 회원 자격을 상실한다.
이전 ZeroPage의 회칙이 있다고 알고 있습니다. 구해서 참고한다면 좋을텐데요. --이덕준
DeleteMe) 좋와해서 그렇기보다 다른 사람들의 일정에서 화요일이 빠질 확률이 많다고 생각해서 이지, 보통 월요일은 주의 시작이라 약속 잡는 경우가 많고, 수요일의 경우 주의 중간, 금요일이야 말할 것도 없고, 토,일을 뺀다면, 화, 목인데, 앞쪽이 좋은것 같아서, 그리고 과거에 다른 집부와 요일이 겹치는걸 많이 신경썼는데, 생각해보니 그럴 필요는 없다고 생각한다. --상민
회칙을 정할 때 "'제2조 회원관리 제3항 회비'" 뭐 이런 식으로 하는 건가요? 그렇게 한다면 하드카피 문서로 만들어서 신입회원들에게도 줘야겠네요... ^^;; --["창섭"]
["창섭"] : 매월 둘째주 넷째주에 하는 것으로 하고.. 4월 중간고사처럼 특별한 일이 있을 때는 한 주 정도 늦춰도 한달에 두번 한다는 취지는 소색이 없을 것 같은데요.. 굳이 셋째주를 정하기 보다는 정모와 정모 사이의 기간이 너무 길거나 짧지 않고 한달에 두번을 할 수 있다면 몇째주인지는 중요하지 않은 것 같습니다.. ^^;; --창섭[[BR]]
- 중앙도서관 . . . . 7 matches
하지만, 현재의 도서관 시스템은 사용하면 할 수록 불편한 시스템이다. "Ease of Learning"(MS 워드)과 "Ease of Use"(Emacs, Vi) 어느 것도 충족시키지 못한다.
나는 우리학교 도서관에 아마존 스타일의 시스템(많이도 말고, 도서별 리뷰 등록, 별표 평가, 고객 클러스터링을 통한 서적 추천, 도서별 대출/검색 횟수를 통한 베스트셀러 집계 및 이에 대한 통계 분석 -- 예컨대 공대 학생의 베스트셀러, 경영학과의 베스트셀러, 4학년의 베스트셀러 등 -- 같은 것만이라도) 을 도입하면 학생들의 독서량이 두 배는 높아질 것이라고 확신하며, 이것이 다른 곳(정문 바꾸기 등)에 돈을 쓰는 것 몇 십 배의 가치를 지속적으로 만들어 낼 것이라 믿는다. 이제는 도서관도 인터넷 서점을 벤치마킹 해야 한다.
지금 도서관의 온라인 시스템은 상당히 오래된 레거시 코드와 아키텍춰를 거의 그대로 사용하면서 프론트엔드만 웹(CGI)으로 옮긴 것으로 보인다. 만약 완전한 리스트럭춰링 작업을 한다면 얼마나 걸릴까? 나는 커스터머나 도메인 전문가(도서관 사서, 학생)를 포함한 6-8명의 정예 요원으로 약 5 개월의 기간이면 데이타 마이그레이션을 포함, 새로운 시스템으로 옮길 수 있다고 본다. 우리과에서 이 프로젝트를 하면 좋을텐데 하는 바램도 있다(하지만 학생의 사정상 힘들 것이다 -- 만약 풀타임으로 전념하지 못하면 기간은 훨씬 늘어날 것이다). 외국의 대학 -- 특히 실리콘벨리 부근 -- 에서는 SoftwareEngineeringClass에 근처 회사의 실제 커스터머를 데려와서 그 사람이 원하는 "진짜" 소프트웨어를 개발하는 실습을 시킨다. 실습 시간에 학부생과 대학원생이, 혹은 저학년과 고학년이 어울려서(대학원생이나 고학년이 어울리는 것이 아주 중요하다. see also NoSmok:SituatedLearning ) 일종의 프로토타입을 만드는 작업을 하면 좋을 것 같다. '''엄청나게''' 많은 것을 배우게 될 것이다. --JuNe
사용자는 이 랩퍼를 통해 로긴을 하고, 책 평가도 하고, 리뷰도 쓰고, 베스트셀러 검색도 하고, 대출 예약도 한다. 기존 시스템의 모집합이 되는 셈이다. (하지만 꼭 그럴 필요는 없다. 중요하고 자주 쓰이는 기능만 노출해도 충분하다)
물론 현재도 저학년, 고학년이 함께 일하는 경우는 있다. 고학년이 예비역인 경우가 그렇다. 하지만 대부분의 경우, 저학년끼리, 고학년끼리 뭉치거나, 서로 섞인다고 해도 고학년은 방외자요, 관찰자로 남는다. 보다 명시적이고 적극적으로 저학년, 고학년 공동 학습을 장려할 필요가 있다. 우리는 교과과정이나 교육방법에 대한 스테레오타입에서 벗어나야 한다.
정말 많이 배우는 지름길은 자신의 삶 속에서 실현을 하는 것이다. 만약 XP를 정말 제대로 공부한다면 자신의 삶에도 그것이 영향을 미치지 않으면 안된다는 말이다. 아니 정말 그렇게 된다. 또, 그렇게 되도록 하면 정말 많은 것을 배우게 되고, 또 빨리 배울 수 있다. 마찬가지로 어떤 연습 프로젝트를 진행할지라도 자신의 삶에 의미가 있는 어떤 것을 우선적으로 택하는 것이 좋다. 날마다 게임을 하는 사람이라면 게임을 만들고, 날마다 게시판을 붙들고 글을 쓰는 사람이라면 게시판을 만든다.
- 지금그때2004/여섯색깔모자20040331 . . . . 7 matches
파랑 : 총 참여 인원으로 몇명을 원하는지에 대한 녹색의견 받음.
녹색 보충 : 위에서 99이하를 4명으로 말한것은 졸업선배의 수를 포함하며, 확실히 올 수 있는 사람 기준으로 4명이라 이야기했다. 실제로 오기 원하는 수치는 그 2배~3배이다.
검정 : 이번에는 03이 맡았으면 한다. 그렇지 않으면 매년 의존하게 된다. 내년에도 똑같은 이야기가 성립이 되어버리기 때문이다. 이번 행사 이후에도 지속적으로 이어지기 위해서는 03이 직접 경험해보아야 한다.
검정 : 사회자 비중이 적으므로, 지원자가 있었으면 한다.
파랑 : 시간관리자는 중요한 일을 한다. 이는 비단 이러한 행사 뿐만아니라 컨설팅 등에서도 그렇다.
그리고, 무엇이건 다 시도해보라. 전부다 플러스 요소로 작용한다.
- 회원정리 . . . . 7 matches
한번 강제 탈퇴 당한 사람이 자기의 친구들이 자신이 관심있어 하는 내용을 공부하려고 사람을 모으는 걸 알았습니다. 과연 참여할 수 있을까요? 그 사람이 "제로페이지"라는 임의적 단체의 가상적 "선(線)" 때문에 함께 공부를 못한다면, 그럴 가치가 있을까요?
경영학에서는 최근들어 조직이론에 패러다임 이동이 있습니다. 흔히들 말하는 군대식, 위계식, 고정적 조직에서 네트워크식, 수평적, 동적 조직으로의 변화이지요. 이합집산이 쉬워졌습니다. 조직과 조직간, 개인과 개인간의 결합력(coupling)이 약해졌습니다. 하지만 한번 모인 이상 응집력(cohesion)은 높습니다. 꼭 원하는 사람들만 모일 수 있죠. 대학사회에서도 비슷한 현상들이 나타나고 있지 않나 생각합니다. 예전에는 뭔가 큰 조직에 발을 담궈놓아야 편안함과 안정감을 느꼈는데 이제는 그렇지 않습니다. "개인주의적"이라고 비판을 받기도 하지만 현실을 부정할 수는 없을 듯 합니다. 그렇다면 변화하는 패러다임에 맞는 동아리 활동은 어떤 모양새여야 할까요?
창준이 형 말대로 제로페이지라는 임의적 단체의 가상적 선때문에 함께 공부하지 못한다면 이 또한 비극이 될 것입니다. 따라서 본의 아니게 지나친 조치들을 취했던 것 다시한번 사과드립니다. 회원정리 대상의 친구들 또한 차후 같이 공부할 수 있다면 그보다 더 반가운 소식은 없을 것입니다. 따라서그에 대한 대안으로 함께 공부할 수 있는 여지를 남겨놓기 위해 앞서 말씀드린대로 ZeroWikian 으로 남겨두는 방안을 생각했습니다.(물론 제가 생각했다기 보단 상민이 형의 추가조치에 따른 것이지만요... :) )
유령회원들은 ZeroPagers 라는 이름으로 등록되어있지만 실제로 활동은 0에 가깝습니다. 아니 0 인 경우가 더 많겠지요. 이러한 회원들을 굳이 ZeroPagers 에 포함시킬 이유는 없다고 봅니다. 학회는 살아있어야 한다는 것이 제 입장입니다. 활동이 0에 가까운 사람들은 학회가 살아있도록 한다기보단 학회의 인적규모만 표면적으로 늘릴 뿐 실질적 활동사항은 0에 가까워지게 한다고 봅니다. '겉으로는 인원이 많은 거대규모의 학회, 하지만 안으로는 활동사항이 미진한 학회.' 제가 보는 '망해가는 학회'의 모습입니다. 표현이 극단적일지는 모르겠으나 이렇게 되는 것은 하루아침에 되는 것이 아니라 서서히 참여도가 줄어들면서 만들어 질수 있는 모습이라고 생각됩니다. 이런 모습을 막기 위해서라도 회원정리라는 방법이 필요하다고 생각합니다.
회칙에 적혀 있는 내용에 의하면 '본인 의사로 회원 자격을 상실한다'인것으로 알고 있습니다만. '정리대상'에 오른 회원들의 의사를 확인하였나요? (글을 보면, 회원정리가 먼저고 공지가 뒤에 이루어지는 것 같은데.. 이건 순서가 안맞는것 아닌가요?)
- 2thPCinCAUCSE . . . . 6 matches
* 팀은 한 문제에 대해 소스코드가 완성되면 디스켓에 담아 채점 팀에 제출한다.
* 채점은 그 소스코드를 컴파일해서 수행파일을 만들어 채점한다.
* 그 문제에 대해서 준비된 테스트 데이타( 보통 5-10개)에 대해서 모두 맞는 답을 내야 그 문제를 맞춘 것으로 한다.
1. 각 문제는 데이터를 외부에서 입력받아서 프로그램으로 답을 계산한 후 반드시 출력을 한다. 이때, 입출력은 표준입출력만 사용한다. 파일 입출력문을 쓰면 안됨.
4. 채점은 자기 컴퓨터에서 하는 것이 아니라, 채점 팀의 컴퓨터에서 실행한다. 이점을 유의할 것. 즉, 자기 컴퓨터에만 있는 특수한 기능을 사용하게 되면, 채점 팀 컴퓨터에서는 안 돌아 갈 수 있음.
- 5인용C++스터디/윈도우에그림그리기 . . . . 6 matches
GDI(Graphics Device Interface)란 윈도우의 클라이언트 영역에 그리기를 하는데 사용되는 함수이다. 비디오 출력과 프린터에 그래픽 출력을 책임지고 있는 부분이다. 사용자가 Windows용으로 작성하는 응용 프로그램이 GDI를 사용하여 시각적인 정보를 출력할 뿐 아니라 Windows 자체도 GDI를 사용하여 메뉴, 스크롤 바, 아이콘, 그리고 마우스 커서 같은 사용자 인터페이스 아이템의 시각적인 출력을 수행한다.
DC(Device Context)는 GDI에 의해 내부적으로 관리되는 데이터 구조체이며 '''그래픽 작업을 하기 위해서 필요한 것'''이다. 그림을 그리고자 할 때에는 반드시 먼저 DC에 대한 핸들을 얻어야 한다. 프로그램에 이 핸들을 주는 것으로 Windows는 사용자가 그 장치를 사용할 수 있도록 허가해 준다. 그러면 핸들을 GDI 함수의 인자로 사용하여 현재 그리고자 하는 장치를 Windows가 식별할 수 있도록 한다.
보통 프로그램이 WinMain에서 UpdateWindow를 호출할 때 발생한다. 이것은 윈도우 프로시저로 하여금 클라이언트 영역에 무엇인가를 그리게 한다.
WndProc은 BeginPaint를 호출하고 난 후 GetClientRect를 호출한다.
- ACM_ICPC/2011년스터디 . . . . 6 matches
* ACM-ICPC 2011 Asia Daejeon Regional에 도전한다.
* 네.. 이번주는 대략적인 것들을 결정하는 시간이었지요. Jolly Jumper를 제가 그냥 임의로 찍어서 문제로 하기로 해서, 5시 스터디가 끝나자마자 1시간동안 열심히 코딩해서 완성했습니다. ..그런데 Wrong Answer. 으아아ㅏ아아아아ㅏ 2시간동안 진경이랑 삽질하다 얻은 결론: 얘내들은 입출력방식이 달라서 우리가 짠 것만으로 되는게 아니고 계속 입력을 받도록 해야한다. 그리고 입력이 끝나면 프로그램이 종료되어야 하는데 뭐 -1?인가 그게 뜨도록 하려면 띄어쓰기같은 것도 없어야한다. ...결국 답은 대략 맞았지만 저런 형식때문에 2시간동안 고민한거죠. JollyJumpers하시는 형/누나들 참고하세요 ;ㅅ; ..아무튼 ACM스터디가 재밌게 잘 진행되었으면 좋겠어요~ -[김태진]
* 생각치도 못한 표준입출력 때문에 고생했습니다. 저놈의 judge 프로그램을 이해하지 못하겠습니다. 입출력방식이 낯서네요. 입력 종료를 위해 값을 따로 주지 않고 알아서 EOF 까지 받아야한다니... 정올 현역때는 이런 문제 구경하기 힘들었는데ㅜㅜ 제가 뭘 크게 오해하고 있나요. 덕분에 c도 아니고 c++도 아닌 코드가 나왔습니다. 그리고 3N+1 문제가 25일 프로그래밍 경진대회에 1번 문제로 나왔습니다. 허허.. - [정진경]
* 생각보다 진행이 디뎠습니다. 입출력 문제가 생각보다 복잡하네요. 하지만 이래저래 여러번 해결하다보니 어느 정도 감이 잡히는 것 같기도 합니다. 졸리점퍼 숏코딩을 할까 하는데, 만약 한다면 처음 해보는 숏코딩이 되겠네요. 중도가서 책을 빌리고 공부해봐야겠습니다.(으아아 대출한도 초과) -[정진경]
* 예제가 단순히 ABC를 CDE처럼 2 더한거로 되어있어서 단순히 substitution cipher 중에서도 시저 사이퍼를 썼으려니 하고 푸는 뻘짓을 한ㅠㅠ 그냥 알파벳을 일대일 대칭하는 거임. 말 그대로 substitution이 대칭이니 ;ㅅ; 간단히 ABC가 RHN으로 변한다 해도 YES가 떠야하는거 ;ㅅ; A->R, B->H, C->N으로 바뀐거지. - [강소현]
- AcceptanceTest . . . . 6 matches
AcceptanceTest는 UserStory들에 의해서 만들어진다. Iteration 동안 IterationPlanning 회의때 선택되어진 UserStory들은 AcceptanceTest들로 전환되어진다. Customer는 해당 UserStory가 정확히 구현되었을때에 대한 시나리오를 구체화시킨다. 하나의 시나리오는 하나나 그 이상의 AcceptanceTest들을 가진다. 이 AcceptanceTest들은 해당 기능이 제대로 작동함을 보장한다.
AcceptanceTest는 blackbox system test 이다. 각각의 AcceptanceTest는 해당 시스템으로부터 기대되는 결과물에 대해 표현한다. Customer는 AcceptanceTest들에 대한 정확성을 검증과, 실패된 테스트들에 대한 우선순위에 대한 test score를 검토할 책임이 있다. AcceptanceTest들은 또한 production release를 위한 우선순위의 전환시에도 이용된다.
UserStory는 해당 UserStory의 AcceptanceTest를 Pass 하기 전까지는 수행되었다고 생각할 수 없다. 이는 새로운 AcceptanceTest들은 각 Iteration 때 만들어져야 함을 뜻한다.
QualityAssurance (QA)는 XP process의 주요 부분이다. 몇몇 프로젝트들의 QA는 분리된 그룹으로부터 수행되어지지만, 어떤 프로젝트들에서의 QA는 개발팀 스스로에 의해 수행되어진다. 각각의 경우에서 XP는 좀 더 QA와 관계있는 개발을 요구한다.
'AcceptanceTest'란 이름은 본래 'FunctionalTest' 로부터 온 것이다. 이는 ''Customer의 요구사항에 대해 system이 'acceptable' 함을 보증한다''라는 본래의 의도를 더 충실히 반영해준다.
요새는 CustomerTest 라고 표현하기도 한다. (UnitTest 를 ProgrammerTest 라고 부른다고 할때 상대적인 개념일듯).
- Bigtable/DataModel . . . . 6 matches
1. 약 64KB마다 존재하는 row key를 블록의 인덱스로 한다.
1. 블록 인덱스로 선택된 row key부터 다음 블록 인덱스로 선택된 row key가 나올 때 까지를 하나의 블록 단위로 한다.
1. 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다.
1. TS의 메모리에 존재한다.
1. 저장공간의 재사용 : 커밋로그는 원형 자료구조를 사용하여 자동으로 공간을 재사용하도록 한다.
1. 카탈로그 또한 태블릿. TS가 관리한다.
- Bioinformatics . . . . 6 matches
* 프로젝트 시작동기와 목적 : 본 연구는 차세대 Bio기술에서 컴퓨터 전공자로서 접근할 수 있는 기술인 Bioinformatics에 대한 기초를 닦는 것을 목적으로 한다.
왜 Model을 이용하는가? 실제에 가까운 모델은 실제로 일어나는 일을 보다 더 잘 이해시키고 예측가능하게 한다.
DNA는 a twisted ladder라고 표현되는데 사다리의 각각의 strand는 당과 인산의 결합을 의미하고, lung은 Base들의 결합을 의미한다. Base들은 사이의 결합은 수소결합을 이루는데, A와 T, C와 G가 결합이 이루어진다. 따라서 DNA를 분석해 base들의 수를 비교해보면 A와 T의 수가 같고, C와 G의 수가 같음을 알 수 있다. 이에 한쪽 가닥에 있는 nucleotide는 다른쪽 가닥의 nucleotide 서열을 결정하게 된다. 그래서 그 두 가닥을 상보적 (complementary) 이라고 한다. 즉, DNA 분자를 수직으로 그리면 한 가닥은 5'에서 3'으로 위에서 아래로 달리고, 다른 가닥은 5'에서 3'으로 아래로 위로 달린다.(5', 3' 효소라고 알고 있음, 정확힌 모름)
유전 형질을 말하며 유전에 관여하는 특정 물질이다. Gene의 모임이 Genome이다. 또한 이 Gene는 DNA에 그 내용이 암호화 되어 있다. 이미 알고 있을지도 모르겠지만, Gene이라는 것은 DNA의 염기 배열이다. 이 염기 배열(base sequence)이 어떤 과정을 통해서 대응되는 순서로 아미노산(amino acid)끼리의 peptide결합을 하여 단백질로 나타는 것을 유전 형질 발현이라고 한다.
절대 컴퓨터 지식만으로 승부걸려고 하지 말아야 할 것 입니다. 컴퓨터 지식만으로는 정말 기술자 수준 밖에 되지 못합니다. 그쪽 지식이 필요하다고 해도 이건 기술적 지식이라기보다는 과학, 즉, 전산학(Computer Science)의 지식이 필요합니다. 그리고 Bioinformatics를 제대로 '''공부'''하려면 컴퓨터 분야를 빼고도 '''최소한''' 생물학 개론, 분자 생물학, 생화학, 유전학, 통계학 개론, 확률론, 다변량 통계학, 미적분을 알아야 합니다. 이런 것을 모르고 뛰어들게 되면 가장자리만 맴돌게 됩니다. 국내에서 Bioinformatics를 하려는 대부분의 전산학과 교수님들이 이 부류에 속한다는 점이 서글픈 사실이죠.
- CVS . . . . 6 matches
현재 ZeroPage 의 경우 CVSROOT 는 /home/CVS 이므로 viewcvs.conf 의 경우 다음과 같이 설정되어있다. (여기서 Development 는 일종의 이름. 여러개의 root 존재시에는 ','로 구분한다.
* ZeroPage의 CVS 계정을 원하는 회원은 서버관리자(["neocoin"])에게 연락 바람 자세한 내용은 홈페이지 왼쪽 메뉴 참고
* 이때, connection refused 등의 메세지가 발생한다면 /etc/hosts.allow 파일에 cvs:ip 를 추가해준다.
* 원인: 어떠한 이유에 의해, cvs를 실행하는 환경이 cvs 사용자와 다를 경우 혹은 권한이 없을 경우 발생한다.
돈이 남아 도는 프로젝트 경우 {{{~cpp ClearCase}}}를 추천하고, 오픈 소스는 돈안드는 CVS,SubVersion 을 추천하고, 게임업체들은 적절한 가격과 성능인 AlianBrain을 추천한다. Visual SourceSafe는 쓰지 말라, MS와 함께 개발한 적이 있는데 MS내에서도 자체 버전관리 툴을 이용한다.
- ClearType . . . . 6 matches
LCD 디스플레이는 RGB의 색상체를 각 픽셀당 하나씩. 즉, 1개의 픽셀에 3개의 색상 표현 요소를 가지고 있다. 기존의 방식은 해당 픽셀을 하나의 요소로만 판단하여 폰트를 보정하여 출력해왔던 반면 ClearType 은 해당 픽셀의 3가지 요소를 개별적으로 컨트롤해서 표현하는 방식을 취한다.
* CRT 보다는 LCD에서 더 큰 효과를 얻는다. (수평 해상도가 LCD가 CRT보다 높아서 그렇다고 한다.)
* 폰트를 매우크게하면 적용된 상태를 볼수 있다고 한다.
* 억지로 적용을 할수는 있지만 '를' 과 같은 글자는 '■' 처럼 보이기도 한다고 한다.
* 특허문제로 Adove, Linux, Apple 들이 각 다른 방식의 벡터 드로잉 방법을 가지고 있다고 한다.
- CodeRace/20060105 . . . . 6 matches
요구사항에 다음 입력 파일 예제가 쓰인다고 가정한다.
텍스트 파일을 읽어 공백 단위로 분리해서 화면에 한 줄에 하나씩 출력한다.
중복되는 단어를 제거하고 단어가 몇 번 나오는지를 출력한다.
정렬된 결과를 출력한다.
알파벳이 아닌문자들은 제외한다
count 뒤에 하나의 아스키값 총합을 하나 더 출력한다.
- CompleteTreeLabeling . . . . 6 matches
모든 잎(leaf)의 깊이가 같고 모든 내부 노드의 차수(degree)가 k인(즉 분기계수(branching factor)가 k인) 트리를 k진 완전 트리(complete k-ary tree)라고 한다. 그런 트리에 대해서는 노드의 개수를 쉽게 결정할 수 있다.
k진 완전 트리의 깊이와 분기계수가 주어졌을 때 트리의 노드에 번호를 붙일 수 있는 모든 가능한 방법의 수를 결정해야 한다. 이때 각 노드의 레이블은 그 자손의 레이블보다 작아야 한다. 이진 힙 우선 순위 큐 자료 구조가 바로 이런 속성을 가진다(이진 트리이므로 k=2). N개의 노드가 있는 트리에 번호를 붙일 때, 1에서 N까지의 레이블을 붙일 수 있다고 가정하자.
입력 파일은 여러 줄로 구성된다. 각 줄에는 두 개의 정수 k와 d가 들어있다. k>0이며, 이 값은 k진 완전 트리의 분기계수를 나타낸다. d>0며, k진 완전 트리의 깊이를 나타낸다. k X d ≤21인 모든 k와 d에 대해 작동하는 프로그램을 만들어야 한다.
입력된 각 줄에 대해 한 줄의 결과를 출력한다. 그 줄에는 위에서 설명한 조건을 만족시키면서 k진 트리에 레이블을 붙이는 경우의 수를 출력한다.
- Counting . . . . 6 matches
구스타보는 수를 셀 줄은 알지만 수를 쓰는 방법은 아직 배운지 얼마 되지 않았다. 1,2,3,4까지는 배웠지만 아직 4와 1이 서로 다르다는 것은 잘 모르기 때문에 4라는 숫자가 1이라는 숫자를 쓰는 또 다른 방법에 불과하다고 생각한다.
그는 그가 만든 간단한 게임을 하면서 놀고 있다. 그가 알고 있는 네 개의 숫자를 가지고 수를 만든 다음 그 값을 모두 더한다. 예를 들면 다음과 같은 식이다.
112314 = 1 + 1 + 2 + 3 + 1 + 1 = 9 (구스타보는 4 = 1 이라고 생각한다.) |}}
구스타보는 합이 n인 수를 몇 개 만들 수 있는지 알고 싶어한다. n = 2 일 경우에는 11,14,41,44,2 이렇게 다섯 개의 숫자를 만들 수 있다 (5 이상의 수도 셀 수는 있다. 다만 쓰지 못할 뿐이다). 하지만 2보다 큰 경우에 대해서는 그가 만들 수 있는 수의 개수를 알 수가 없어서 여러분에게 도움을 청했다.
1 이상 1,000 이하의 임의의 정수 n이 한 줄에 하나씩 입력된다. 파일 끝 문자가 입력될 때까지 계속 읽어와야 한다.
입력된 각 정수에 대해 합이 n이 되는 숫자의 가지 수를 나타내는 정수를 한 줄에 하나씩 출력한다.
- CreativeClub . . . . 6 matches
* 지난주에 나왔던 키워드 중 각자 하나씩 뽑아 총 6개의 키워드 셋을 구성한다.
* 6개의 키워드를 보고 각각에 대해서 혹은 조합하여 생각난 것에 대해 자유롭게 이야기한다.
* 유용한 것을 제공한다.
* 정모 시간에 해당 회원들이 흥미 있을 만한 활동을 한다.
* 학회실을 자주 사용하도록 유도한다.
* ZeroPage가 가진 도서 리스트를 외부에 공개하여, 외부인이 학회실을 이용하도록 유도한다.
- DataCommunicationSummaryProject/Chapter11 . . . . 6 matches
* 보내고 받는 모양새가 대칭형이다. 레이저나 극초단파 같은 걸로 사용한다.
* 단말기만 있으면 거의 영구적으로 base station 과 연결되어 사용가능하고 기타 등등 열라 좋은 점이 많긴하지만 대역폭을 공유한다는 것이 단점이다.
* 대부분 보급되어있는 wireless local loop system은 산업, 과학, 의학용 주파수(ISM band) 를 사용한다. 실제로 IEEE 802.11b 표준에 기초한 시스템도 있다.
* 8km 까지는 서비스 범위가 도달한다. 표준으로 11Mbps를 지원하지만 multipoint 특성상 대역폭을 사용자들이 공유하기 때문에 실제로는 2~6Mbps 가된다.
* 허가되지 않은 시스템은 국제적인 ISM 밴드를 사용할 수 있고, 종종 IEEE 802.11 무선랜 표준에 기초하기도 한다.
* 레이저 빔은 허가가 필요없고, 다른 어떤 타입의 고정 무선시스템보다 나은 수용능력을 제공한다. 하지만 거리가 졸라 짧다.
- DirectDraw . . . . 6 matches
Library Files 에는 C:\DXSDK\LIB를 추가해야한다.
ddraw.lib와 dxguid.lib를 추가해야한다.
를 추가해야한다.
* DDSCL_ALLOWMODEX : ModeX를 사용 가능하게 해준다는데. 알수 없다.(예전에 쓰던 화면 모드라고 한다.)
일단 HBITMAP형의 비트맵을 얻어와야한다.
3. 그것을 Flip한다.
- EffectiveSTL/Iterator . . . . 6 matches
* string::iterator는 char*의 typedef, string::const_iterator는 const char*의 typedef이다. 따라서 const_cast<>가 통한다. (역시 클래스가 아니다.)
* 정말 별걸 다 설명한다는 생각이 든다. 모르고 있었으면 안쓸 것들도, 괜히 들쑤셔 내서 이거 쓰지 말아라 하니 오히려 더 헷갈린다는--;
* 결론부터 말하자면, base()메소드가 원하는 반복자를 리턴해주는건 아니다. 삽입할떄는 되지만, 원소를 지울때는 꼬인다.
* 만약에 ri가 가르키는 위치에다 새로운 원소를 삽입하고 싶다고 하자. 하지만 insert 메소드는 reverse_iterator는 인자로 받지 않는다. iterator형만 인자로 받는다. 즉 직접은 못한다는 것이다. 지울때도 이와 같은 문제가 발생한다. 그래서 base()를 쓰는 것이다.
* 삽입은 문제없이 되었지만.. 만약에 erase()를 호출한다면? 난 3을 지우고 싶은데 base()호출해서 iterator버젼으로 넣어주면 4가 날아갈 것이다. 어떻게 해야하는가?
- HardcoreCppStudy/두번째숙제/CharacteristicOfOOP/김아영 . . . . 6 matches
데이터 은닉이란 모듈이 그것이 갖는 기능들을 명세한 인터페이스(interface)를 통해서만 접근되고, 그 기능을 구현하는 방법은 다른 모듈로부터 은닉되도록 하는 것을 말한다. 캡슐화된 객체의 외부 인터페이스를 엄밀히 정의함으로써 독립적으로 작성된 모듈간의 상호 종속성을 극소화하여 캡슐화된 객체는 외부 인터페이스만을 통하여 접근될 수 있도록 한다면, 세부적인 구현 상세 사항에 대해서는 객체내에 은닉시킬 수 있다. 또한 캡슐화된 객체는 객체 구현내역을 변경, 혹은 향상시킬 때 이 객체를 사용하는 타 객체들을 변경하거나 다시 컴파일하지 않도록 할 수 있다. 또 모듈의 내부 구현 사항들이 외부의 접근으로부터 보호될 수 있음으로, 그 객체의 정당성을 보증할 수 있으며, 오류가 발생되었을 경우에 오류는 한 모듈내로 국지화될 수 있다.
우리가 흔히 다루는 각각의 객체들은 서로의 관련되 영역을 사용할 수 있는 부분과 없는 부분이 있다. 이것은 별도로 접근이 가능한 영역과 불가능한 영역으로 나누어서 관리하기 때문이다. 이것을 바로 캡슐화라 한다. 갭슐화는 바로 접근 가능한 코드와 불가능한 코드로 나눔으로 인해서 데이터나 특별한 영역을 보호하거나 감추는 역활을 할 수 있다. 때문에 필요한 경우 데이터의 접근 필드를 제한함으로서 데이터를 보호하는 결과를 얻을 수 있다.
상속이란, 기존에 만들어 놓은 객체들로 부터 모든 변수와 메소드를 물려 받아 새로운 객체를 만들 수 있다는 것을 뜻한다. 즉, 새프로그램을 만들 때 기존의 자료를 이용해(상속받아) 새롭게 정의하여 사용한면 된다는 것이다. 이로인해 부수적으로 프로그래밍의 노력이 줄고 시간 단축되며 그리고 OOP의 가장 중요한 재사용성(Reusability) 얻을 수 있다. 델파이는 TObject라는 최상위 객체로부터 상속시켜 단계적으로 하위 객체들을 생성해 만들어진 구조를 지니고 있다.
추상화란, 객체가 자신의 정보를 안에 감추고 있으면서 외부에 구체적인 것이 아닌 추상적인 내용만을 알려주는 것을 말한다. 때문에 추상화란 정보의 은닉(Information Hiding)이라고도 한다.
- HowToStudyDataStructureAndAlgorithms . . . . 6 matches
그리고, 자료구조 레포트 선배들이 한 것이 있으니까, 그 문제들 구현을 목표로 잡아도 좋고. (원한다면 보내줄께.) ex) 스택:스택 구현, postfix 의 구현, 계산기 구현. 큐:큐 구현. 리스트:다항식 덧,뺄셈 & 곱셈 구현 (polynomial) 트리:2진트리구현
제가 생각컨데, 교육적인 목적에서는, 자료구조나 알고리즘을 처음 공부할 때는 우선은 특정 언어로 구현된 것을 보지 않는 것이 좋은 경우가 많습니다 -- 대신 pseudo-code 등으로 그 개념까지만 이해하는 것이죠. 그 아이디어를 Procedural(C, 어셈블리어)이나 Functional(LISP,Scheme,Haskel), OOP(Java,Smalltalk) 언어 등으로 직접 구현해 보는 겁니다. 이 다음에는 다른 사람(책)의 코드와 비교를 합니다. 이 경험을 애초에 박탈 당한 사람은 귀중한 배움과 깨달음의 기회를 잃은 셈입니다. 참고로 알고리즘 교재로는 10년에 한 번 나올까 말까한 CLR(''Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest'')을 적극 추천합니다(이와 함께 혹은 이전에 Jon Bentley의 ''Programming Pearls''도 강력 추천합니다. 전세계의 짱짱한 프로그래머/전산학자들이 함께 꼽은 "위대한 책" 리스트에서 몇 손가락 안에 드는 책입니다. 아마 우리 학교 도서관에 있을 것인데, 아직 이 책을 본 적 없는 사람은 축하드립니다. 아마 몇 주 간은 감동 속에 하루하루를 보내게 될 겁니다.). 만약 함께 스터디를 한다면, 각자 동일한 아이디어를 (같은 언어로 혹은 다른 언어로) 어떻게 다르게 표현했는지를 서로 비교해 보면 또 배우는 것이 매우 많습니다. 우리가 자료구조나 알고리즘을 공부하는 이유는, 특정 "실세계의 문제"를 어떠한 "수학적 아이디어"로 매핑을 시켜서 해결하는 것이 가능하고 또 효율적이고, 또 이를 컴퓨터에 어떻게 구현하는 것이 가능하고 효율적인지를 따지기 위해서이며, 이 과정에 있어 수학적 개념을 프로그래밍 언어로 표현해 내는 것은 아주 중요한 능력이 됩니다. 개별 알고리즘의 카탈로그를 이해, 암기하며 익히는 것도 중요하지만 더 중요한 것은 알고리즘을 생각해 낼 수 있는 능력과 이 알고리즘의 효율을 비교할 수 있는 능력, 그리고 이를 표현할 수 있는 능력입니다.
우리는 알고리즘 카탈로그를 배운다. 이미 그러한 해법이 존재하고, 그것이 최고이며, 따라서 그것을 달달 외우고 이해해야 한다. 좀 똑똑한 친구들은 종종, "이야 이거 정말 기가막힌 해법이군!"하는 감탄을 외칠지도 모른다. 대부분의 나머지 학생들은 그 해법을 이해하려고 머리를 쥐어짜고 한참을 씨름한 후에야 어렴풋이 왜 이 해법이 그 문제를 해결하는지 납득하게 된다. 그리고는 그 "증명"은 책 속에 덮어두고 까맣게 사라져버린다. 앞으로는 그냥 "사용"하면 되는 것이다. 더 많은 대다수의 학생은 이 과정이 무의미하다는 것을 알기 때문에 왜 이 해법이 이 문제를 문제없이 해결하는지의 증명은 간단히 건너뛰기를 한다.
교육은 물고기를 잡는 방법을 가르쳐주어야 한다. 어떤 알고리즘을 배운다면, 그 알고리즘을 고안해 낸 사람이 어떤 사고의 과정을 거쳐서 그 해법에 도달했는지를 구경할 수 있어야 하고, 학생은 각자 스스로만의 해법을 차근 차근 "구성"(construct)할 수 있어야 한다(이를 교육철학에서 구성주의라고 하는데, 레고의 아버지이고 마빈 민스키와 함께 MIT 미디어랩의 선구자인 세이머 페퍼트 박사가 주창했다). 전문가가 하는 것을 배우지 말고, 그들이 어떻게 전문가가 되었는가를 배우고 흉내내라.
- IntelliJ . . . . 6 matches
그리고 Programming By Intention 을 툴 차원에서 철학으로 지원하는 IDE 라는 점이 가장 마음에 든다. IntelliJ 로 프로그래밍을 할때는 툴과 대화를 하며 프로그래밍한다는 느낌이 든다고 할까. --[1002]
Intelli J 에서는 외부 cvs client 를 이용한다. 고로, wincvs 등을 깔고 난뒤 도스 프롬프트용 cvs 를 연결해줘야 한다. (CVS - Project 연동부분에 대해서는 ["IntelliJ"] 쪽이 빨리 버전업이 되었으면 한다는.. ["Eclipse"]의 CVS 연동기능을 보면 부러운지라~)
4. Checkout - 이는 CVSROOT의 modules 에 등록된 project 들만 가능하다. CVS 관리자는 CVSROOT 의 modules 화일에 해당 프로젝트 디렉토리를 추가해준다.([http://cvsbook.red-bean.com/cvsbook.html#The_modules_File module file]) 그러면 IntelliJ 에 있는 CVS의 Checkout 에서 module 을 선택할 수 있다. Checkout 한다.
- IsBiggerSmarter? . . . . 6 matches
어떤 사람들은 코끼리가 클수록 더 똑똑하다고 생각한다. 그런 생각이 틀렸다는 것을 증명하기 위해, 일련의 코끼리들을 분석해서 체중은 증가하는 순서로, IQ는 감소하는 순서로 된 가장 긴 시퀀스를 뽑아보자.
첫째 줄에는 찾아낸 코끼리 시퀀스의 길이를 나타내는 정수 n을 출력한다. 그 밑으로는 n줄에 걸쳐서 각 코끼리를 나타내는 양의 정수를 하나씩 출력한다. i번째 데이터 행으로 입력된 숫자들을 W[i], S[i]라고 표기해보자. 찾아낸 n마리의 코끼리의 시퀀스가 a[1], a[2], ... ,a[n] 이라면 다음과 같은 관계가 성립해야 한다.
이런 관계가 만족되면서 n은 최대한 큰 값이어야 한다. 모든 부등호에는 등호는 포함되지 않는다. 즉 체중은 반드시 증가해야 하며(같으면 안됨), IQ는 감소해야 한다.(IQ도 같으면 안 됨). 조건이 맞으면 아무 답이나 출력해도 된다.
- JavaStudyInVacation/과제 . . . . 6 matches
* 클라이언트로부터 연결이 끊기면 프로그램을 종료한다.
* 명령어 라인 인자로 접속할 서버 에플리케이션이 있는 IP 주소와 포트를 입력받아 서버에 접속한다.
* 서버로부터 문자열을 받아 화면에 출력해준다. ("ABCDEFG" 가 나와야 한다.)
* 서버와 접속을 끊고 프로그램을 종료한다.
* 두 명의 플레이어는 네트워크로 연결되어 게임을 한다.
* SWING을 사용하여 제작해야 한다.
- Memo . . . . 6 matches
//Project -> Setting -> LINK 메뉴 -> Object/library modules: 의 끝부분에 ws2_32.lib 를 추가한다.
// 프로그래머는 이것을 통해 네트워크와 대화를 한다.
= inet_addr(SERVER_IP); // 로컬 주소로 설정한다.
// 서버에 연결한다. 시도나 해보자.
// exit로 종료를 하면 모든 파일 디스크립터를 자동으로 닫고 종료한다.
신문을 비유로 들면 역할이 두 개로 나뉜다. 한쪽은 신문내용을 원하는 대로 편집하는 신문사, 한쪽은 신문 내용을 제보하는 취재 기자이다.
- Profiling . . . . 6 matches
'''Profiling'''(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다.
실행 시간의 80%가 대략 20%의 코드를 소모한다
프로그램이 성능을 높이기 위해서 이런 20%의 핵심 코드를 추정, 측정을 통해서 찾아야한다.
'''Profiling'''(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다.
(다른 소개글로 [http://maso.zdnet.co.kr/20010407/about/article.html?id=120&forum=0 마소4월호기사 Python 최적화론]를 추천한다.-링크깨졌음)
=== 원하는 코드에 수행시간을 측정코드를 삽입해서 결과를 관찰 ===
- ProgrammingLanguageClass/2006/EndTermExamination . . . . 6 matches
c) C언어가 독립 컴파일을 지원하는지 유무.
가디드 커맨드가 selector, loop 에서의 동작이 다르기 때문에 이를 조심해야한다. (책참조)
* upto terminate 해석에 따라서 답이 달라짐 종료 직전 -> 답은 True, 종료 시점을 의미한다면 답은 False
up to ... (1) <어느 위치·정도·시점이> …까지(에), …에 이르기까지;<지위 등이> …에 이르러:up to this time[now] 지금껏, 지금[이 시간]까지는/I am up to the ninth lesson. 나는 제 9과까지 나가고 있다./He counted from one up to thirty. 그는 1에서 30까지 세었다./He worked his way up to company president. 그는 그 회사의 사장으로까지 출세했다. (2) [대개 부정문·의문문에서] 《구어》 <일 등>을 감당하여, …을 할 수 있고[할 수 있을 정도로 뛰어나]:You’re not up to the job. 너는 그 일을 감당하지 못한다./This novel isn’t up to his best. 이 소설은 그의 최고작에는 미치지 못한다./This camera is not up to much. 《구어》 이 카메라는 별로 대단한 것은 아니다./Do you feel up to going out today? 오늘은 외출할 수 있을 것 같습니까? 《병자에게 묻는 말》 (3) 《구어》 <나쁜 짓>에 손을 대고;…을 꾀하고:He is up to something[no good]. 그는 어떤[좋지 않은] 일을 꾀하고 있다./What are they up to? 그들은 무슨 짓을 하려는 것인가? (4) 《구어》 <사람이> 해야 할, …나름인, …의 의무인:It’s up to him to support his mother. 그야말로 어머니를 부양해야 한다./I’ll leave it up to you. 그것을 네게 맡기마./It’s up to you whether to go or not. 가고 안가고는 네 맘에 달려 있다./The final choice is up to you. 마지막 선택은 네 손에 달려 있다.
- ProgrammingPartyAfterwords . . . . 6 matches
다음은 파티 전체(파티 준비부터 뒷풀이 막판까지)에 대한 공동 기사로 가능하면 NoSmok:다큐먼트모드 를 지킨다 -- 자기는 분명히 알고있는 사건(event)인데 여기에는 아직 기록되어 있지 않다면 그냥 적당한 자리(!)에 직접 보충해 넣도록 하고, 묘사가 미진하다면 좀 더 치밀하게(!) 가다듬는다. 페이지 마지막에는 NoSmok:쓰레드모드 로 개인적인 감상, 소감 등을 적도록 한다.
"문자 날려보면 되겠죠. 희상이가 친구 핸폰 번호 주면서 문자날리면 전화한다고 했어요. (툭 툭툭...)"[[BR]]
시간이 좀 흘렀을 때, 희록님의 생각은 '우리 모두 이 프로그램을 짜는데서 왜 알고리즘이 사용되어야 하는지 모르고 있다. 이는 문제를 제대로 파악하지 못했다는 것을 의미한다' 라는 생각을 하였다. 그 때, 누군가가 입력 형식에 관해서 Mentor에게 물었다. 하지만 아쉽게도 입력형식에 대해서 명확한 답을 얻을 수는 없었지만, 몇가지 새로운 사실들을 알수 있었다. 하지만 진행은 계속 지지부진하게 되었다. 희록님은 다시 그것을 깨고자 "CRC카드를 한번 사용해서 문제를 다시 한번 생각해보자"라고 하였다. 우리는 CRC카드를 작성하기 시작하였고, 우리가 CRC카드를 이용해서 시뮬레이션을 실행해보고서는 요구사항을 분석하는데는 크게 도움이 되지 않았지만, 우리가 프로그래밍시에 어떤 객체들이 필요할지와 그 속성들에 대해서는 약간 명확해졌다.
'오.. 대화진행속도가 빠르다!' 1002 가 본 moa 의 마치 평소 손발을 맞춰본 팀같았다. 근데, 토론하는 것을 들으면서 1002가 생각하기엔 '음.. 근데, 너무 초반에 Algorithm-Specific 하게 생각하는게 아닐까. 일단은 문제를 간단한 문제로 분해하는(보통 1002가 'Design' 을 간단하게 정의하라고 할때 저렇게 표현한다.) 과정이 더 중요할것 같은데'
각 팀별로 전지에 자신들의 디자인을 표현하고 모두에게 그 디자인에 대해 설명하는 식으로 발표를 하였다. 각 팀별 디자인의 특징을 볼 수 있었다. '뭘 잘못했느냐?'가 아니라 '어떻게 해야 잘할 수 있었을까?'와 같은 '올바른 질문'을 던짐으로써 더 배울 수 있다는 것을 확인할 수 있었다. 그리고 발표할때 What 과 How 를 분리하고 What 만을 전달해야 한다는 것이 중요하다는 것을 관찰할 수 있었다.
그동안 각 팀들은 퍼실리에이터와 함께 인포멀한 토론을 하였다고 한다.
- ProjectPrometheus/UserStory . . . . 6 matches
||책을 검색할 수 있다. 책을 검색할때는 Search Keyword type 을 명시하지 않아도 되는 Simple Search 와 Search Keyword Type 을 자세하게 둘 수 있는 Advanced Search 기능 둘 다 지원한다. ||
||각 Page를 볼 때 지연시간이 10초 미만이여야 한다. ||
||동시 접속자 수가 25명 이상이여야 한다. ||
* 책을 검색할 수 있다. 책을 검색할때는 Search Keyword type 을 명시하지 않아도 되는 Simple Search 와 Search Keyword Type 을 자세하게 둘 수 있는 Advanced Search 기능 둘 다 지원한다.
* 각 Page를 볼 때 지연시간이 10초 미만이여야 한다.
* 동시 접속자 수가 25명 이상이여야 한다.
- ProjectZephyrus/ThreadForServer . . . . 6 matches
* 메신저에서 A라는 사람이 B라는 사람을 대화상대로 추가했다. B라는 사람이 접속중이라면 "A라는 사람이 당신을 추가했습니다"라고 알려줘야 한다. B라는 사람이 접속중이 아니라면 로그인 할 때 "A라는 사람이 당신을 추가했습니다"라고 알려줘야 한다.... --상규
당일 월드컵 경기가 있을것 같으니, 동시에 두가지를 한다는 것은 안되겟지, 근데 이건 아니군 --;;
거기에 한가지만 더 한다면,
하지만 다행이 이 글을 일요일에 봤다면, 9일에 마쳤으면 한다.
데블스 캠프가 끝난 이후, 혹은 데블스 캠프 중에 이루어 질수도 있다고 생각한다.
- PythonIDE . . . . 6 matches
현존 하는 파이선의 대표적인 개발환경은 상당한 수가 존재한다. 이중에 알려진 몇가지가 IDLE, SPE, Wing, PyDev 등이 있다.
각 IDE는 서로 만의 장단점을 가지며, 기반을 둔 GUI 툴킷에 따라서 툴킷간의 상성에 영향을 받기도 한다.
* PyScripter : 개중 가장 좋은 기능과 공개라는 장점을 가진 IDE. 가히 최고라 불릴만하다. 하지만 wxPython 과의 상성이 좋지 않아 wxPython 유저에게는 그림의 떡. 완벽한 디버깅 모드를 제공한다.
* wingIDE : 디버깅이 지원되는 IDE, 유료로 판매한다.
* Visualwx : wxToolkit 의 WYSWIG 을 지원하는 디자인 중심의 IDE. 파이선 프로그래밍을 지원한다. GUI 개발시 wxWindow 를 공부하는 유저에게 상당히 좋은 학습자료가 될 수 있다.
- SmallTalk/강좌FromHitel/강의2 . . . . 6 matches
이름을 지원하는 압축 프로그램을 사용하여 압축을 푸십시오.
더 많은 수의 갈래가 존재한다는 말입니다. 또한 방금 실행한 명령의 결과를
Smalltalk 시스템에는 500개가 넘는 갈래가 존재한다는 말입니다. 갈래들을
워야 한다는 것입니다.
* <Ctrl-I>: 명령을 실행하고 난 결과가 복잡할 때, 결과값을 탐색한다.
에는 <Ctrl-D>, <Ctrl-E>, <Ctrl-I>의 세 가지 글쇠를 사용한다는 것도 알아
- StaticInitializer . . . . 6 matches
Static Initializer 는 이러한 값들을 미리 셋팅하기 위해 사용하며 다음과 같은 문법을 이용한다.
문제는 StaticInitializer 부분에 대해서 상속 클래스에서 치환을 시킬 수 없다는 점이다. 이는 꽤 심각한 문제를 발생하는데, 특히 Test 를 작성하는중 MockObject 등의 방법을 사용할 때 StaticInitializer 로 된 코드를 치환시킬 수 없기 때문이다. 저 안에 의존성을 가지는 다른 객체를 생성한다고 한다면 그 객체를 Mock 으로 치환하는 등의 일을 하곤 하는데 StaticInitialzer 는 아에 해당 클래스가 인스턴스화 될때 바로 실행이 되어버리기 때문에 치환할 수 없다.
이를 방지하려면, StaticInitializer 를 일반 Method 로 추출한뒤, 생성자에서 이를 호출한다. (단, 인스턴스를 2개 이상 만드는 클래스인경우 문제가 있겠다.)
그 외에 Static 의 경우, 그 사용 가능 Focus가 Global 해지기 때문에 이 또한 Bad Smell 이 될 가능성이 농후하다. 개인적으로는 가급적이면 Static Variable 을 쓰지 않는 습관을 들이려고 한다. --[1002]
Mock 생성자에서 값이 교체되어도 StaticInitializer 자체가 실행된다는 점에는 변함이 없습니다. 만일 StaticInitializer 에서 외부 자원들을 사용한다면, Side-Effect 들을 피하기 어려운 경우가 많다는 것을 강조하고 싶었습니다. --[1002]
- TheKnightsOfTheRoundTable . . . . 6 matches
아서 왕이 천장에 삼각형 창이 있는 방에 원탁을 놓을 계획을 세우고 있다. 그는 햇빛이 원탁 위에 비추게 하고 싶다. 특히 정오에 태양이 바로 머리 위에 있을 때는 원탁 전체에 햇빛이 비추도록 하려고 한다.
그래서 그 원탁은 방 안의 특정한 삼각형 영역 안에 자리잡아야 한다. 물론 아서 왕은 주어진 조건 내에서 최대한 큰 원탁을 만들고 싶어한다.
멀린이 점심을 먹으러 나간 사이에 해가 비추는 영역에 들어갈 수 있는 가장 큰 원탁의 반지름을 계산하는 프로그램을 만들어야 한다.
각 테스트 케이스마다 다음과 같은 결과를 출력한다.
여기에서 r은 정오에 해가 비추는 영역에 들어갈 수 있는 원탁의 최대 반지름이며, 소수점 셋째 자리까지 반올림한 값을 출력한다.
- UnitTest . . . . 6 matches
해당 실행 기능이 제대로 돌아가는지를 테스트하는 코드. 보통 SE에서는 모듈단위의 테스트를 지칭한다.
ExtremeProgramming 에서는 TestFirstProgramming 을 한다. TestFirstProgramming 에서는 해당 기능에 대한 테스트 프로그램을 먼저 만들고, 실제 프로그래밍을 한다.
TestFirstProgramming 을 하게 되면 해당 프로그램을 작성해 나가는 과정이 UnitTest 작성중 남게 된다. 이는 일종의 WhiteBoxTesting 이 된다. 또한, 해당 모듈이 제대로 돌아가는지에 대한 결과도 체크하므로 BlackBoxTesting 의 역할을 한다. 즉, ExtremeProgramming 에서의 UnitTest 는 두가지 테스트의 성격을 같이 포함하고 있다. (Gray Box Testing)
보통 테스트 코드를 작성할때는 UnitTestFramework Library들을 이용한다. 각 Language 별로 다양한데, C++ 사용자는 ["CppUnit"], Java 는 ["JUnit"], Python 은 ["PyUnit"] 등을 이용할 수 있다. PyUnit 의 경우는 2.1부터 기본 모듈에 포함되어있다.
우리는 실제로 프로그래밍을 하는 중간중간에 결과값을 출력해봄으로서 제대로 돌아감을 확인한다. 이 또한 UnitTest 라 할 수 있겠다. (단, Manual Test 로 분류해야 하겠다.) 올바른 결과값인지 확인하는 과정을 코드로서 만들어 넣는다면 이 테스트는 자동화시킬수 있을 것이다.
- VMWare/OSImplementationTest . . . . 6 matches
80586 (또는 P5 그러나 숫자는 저작권 보호를 받지 못한다길래 이후에 Pentium으로
코드는 그 메모리에서 시작한다고 지정해야 할것입니다.
많이 지원하는 어셈블러입니다. 설치과정없이 그냥 nasm.exe 만 있으면 됩니다.
; 해야 한다. ES:BX 로 1000:0000h 이기 때문에 아래처럼 한다.
커널이 끝나면 안된다. 계속 돌아야한다.
- VisualStuioDotNetHotKey . . . . 6 matches
를 누르면 하단에 자세히보면, "증분검색" 이라는 텍스트가 나온다. 그러면 그때 찾기 원하는 단어를 입력할때마다 일치하는 위치로 바로바로 이동한다. (좋은기능)
가끔 연속된 연속기만으로는 부족한경우가 있다. 이럴때, 몇번의 키동작으로 레코딩하여, 이것을 반복하고 싶은경우가있다. 이때 Ctrl+Shift+R 을 누르고, 원하는 동작들을 수행후, 다시 Ctrl+Shift+R을 눌러 종료한다. 이 중간동작을 원하는 위치에서 반복하고 싶다면 Ctrl+Shift+P 를 누른다.
Ctrl + V와는 달리 클립보드에 있는 복사된내용을 돌아가면서 붙여준다. 따로 복사를 해주거나 할 필요는 없다. 그냥 Ctrl+C로 계속 원하는것을 복사하면 된다.
- VonNeumannAirport/1002 . . . . 6 matches
컴파일러가 인자 2개짜리 Interface 이기를 요청한다. 요청대로 해주자.
이 인터페이스도 수정하길 컴파일러가 바라고 있다. 원하는대로 해주자.
일때 traffic 122 가 나와야 한다.
각 경우에 대해 첫번째 traffic 은 600이, 두번째 traffic 은 300 이 나와야 한다.
작동을 잘 한다; 문제는 이제 Airport 쪽으로 축소되는 듯 하다.
intVectorInit (arrivalCitys2, arrivalData, 2); // <-- arrivalData2 로 초기화되어야 한다.
- Z&D토론/통합반대의견 . . . . 6 matches
있고, 이제 한마디를 하고자 한다.
더이상 KAIST 학부과정 학생들도 더이상 대학원을 안간다고 한다. 그게
대학에서는 경험이 쌓이지 못한다. 계속 새로운 사람들이 들어오고 오래된
방법은 이전의 경험들이 전수되는 방법 뿐인데, 사실 그것도 되지 못한다.
한다. 즉, 가장 부족한 것이 창조적 사고이다. 이것은 축구선수들에게만
선배들의 말을 참고한다는 표현이 있는데, 아래에 반대의 표현이
- callusedHand/physicalExercise . . . . 6 matches
5초 동안 잡아 당겼다가 놓기를 3-5회씩 반복한다.
양손의 손가락을 힘껏 쫙 편채 2초 정도 가만히 있다가 다시 2초 동안 주먹을 쥐기를 3-5회 반복한다.
손바닥을 앞으로 향한 채 두 팔을 앞으로 쭉 뻗는다. 깊은 숨을 들이 쉬면서 천천히 두 손을 끌어 당긴다. 3-5초 동안 이런 자세를 유지하다가 숨을 내쉰다. 3-5회 반복한다.
배영을 하는 것처럼 한 팔을 먼저 뒤로 돌리고 다시 다른 팔을 돌린다. 이런 동작을 3-5회 반복한다.
어깨를 천천히 귀 쪽으로 올렸다가 다시 뒤로 돌려서 내린다. 이런 동작을 3-5회 반복한다.
등을 쭉 폈다가 활처럼 구부린 후, 똑바로 앉아서 고개를 꼿꼿이 세운다. 천천히 오른쪽 귀를 오른쪽 어깨에 대면서 고개를 돌려 앞으로 숙였다가 다시 든다. 이런 동작을 2-3회 반복한다.
- django/Model . . . . 6 matches
다 대 일 관계에서는 다 쪽에서 일쪽을 참조하도록 설계해야 한다.
혹은 모델이 되는 클래스의 이름을 문자열로 지정할 수도 있다. 이는 클래스를 정의하는 순서에 상관없이 한 모델이 다른 모델을 참조할 수 있도록 한다.
다 대 다 관계에서는 어느 한 쪽 모델에 다 대 다 관계임을 표현한다. 하지만 양쪽 모두에 다 대 다 필드를 설치하면 안된다. Django는 다 대 다 관계인 경우 이를 표현하는 테이블을 자동으로 생성한다. 다음은 Employee와 Deparment모델 사이에 다 대 다 관계를 나타내고 있다.
Django는 정의한 모델에 Admin클래스를 재정의해서 이를 삽입, 삭제, 갱신할 수 있는 기본적인 관리자 인터페이스를 자동으로 생성해준다. 사용자 인터페이스는 입력 항목을 원하는대로 배치할 수 있으며, 원하는 디자인도 적용할 수 있다. 이것으로 기본적인 입력 시스템은 만들어졌다.
- eclipse디버깅 . . . . 6 matches
프로그램을 한 단계 진행하되, 메쏘드 호출부라면 실행 포인트를 메쏘드 안으로 옮긴다. 호출하는 메쏘드의 내부 동작을 확인하고 싶을때 사용한다.
메쏘드 호출부라도 메쏘드 안으로 들어가지 않고 현재 코드에서 한 단계씩 진행한다. 호출하는 메쏘드 내부 동작에는 관심이 없고 현재 코드 블럭에 관심을 집중하고 싶을 때 사용한다.
에디터에서 커서가 위치한 곳까지 실행한다. 브레이크포인트를 새로 추가하지 않고도 코드 내 임의의 위치로 실행포인트를 옮기고 싶을 때 유용하다. 실행되지 않을 부분을 선택한 상태에서 Run to Line을 실행시키면 프로그램이 끝까지 진행돼 버릴 수 있으므로 주의해야 한다.
프로그램을 종료한다.
- zennith/w2kDefaultProcess . . . . 6 matches
경의 일부를 관리한다.
(HKEY_USERS\.DEFAULT\Keyboard Layout\Preload키에서 뽑아낸다)을 구동한다.
할 수 있도록 한다. 작업관리자를 통해 이 프로세스를 종료하면 "EN" 아이콘도
위/속성을 승계한다.
의 다양한 활동을 담당한다.
세싱하지 않을 때 프로세서 타임을 관리하는 역할을 수행한다. 작업관리자에서 이 프
- 기술적인의미에서의ZeroPage . . . . 6 matches
(제로페이지 명령어들은 명령어의 첫번째 주소 바이트를 0으로 가정하고 단지 두번째 바이트만 가져옴으로서, 짧은 코드와 짧은 수행시간을 가져다준다. 주의 깊게 제로페이지 명령을 사용하는 것은 코드 효율에 확실한 개선을 가능케 한다.)
제로페이지는 컴퓨터 메로리 공간상의 가장 처음에 존재하는 메모리 주소 페이지이다. (가장 아래에 존재하는 페이지로서 메포리 번지 0부터 전체 페이지 사이즈의 -1만큼의 범위를 갖는다)
상기의 2개의 명령어 모두 동일한 일을 한다; 이것들은 A레지스터에 $00라는 값을 로드한다. 하지만 첫번째 명령어는 단지 2바이트길이 이고 두번째 명령어보다 더욱 빠르다. 오늘날의 RISC 프로세서와 다르게 the 6502의 명령어들은 1바이트에서 부터 3바이트의 길이가 되는 것이 가능하다.
IC테크놀로지의 발전이 더욱 적은 비용으로 CPU의 레지스터를 늘리게 되었고 이에따라서 RAM을 액세스하는 것 보다 더욱 빠른 CPU명령어를 처리하게 되었기 때문에 제로페이지는 이제 대개는 역시적인 의미를 갖는다. 그럼에도 불구하고, 어떤 컴퓨터 아키텍처는 여전히 다른 목적을 위해서 제로페이지라는 개념을 제공하기는 한다; 예를 들자면 인텔의 x86은 인터럽트 테이블의 사용을 위해서 512워드의 공간을 사용한다.
- 누가내치즈를옮겼을까 . . . . 6 matches
새로운 길을 향해 나아가기 위해서는 스스로의 힘으로 개척해야만 한다.]
우리는 보통 첫번째 반응이 더 바람직하다는것을 알면서도 두번째의 반응을 한다. 그것은 변화
현재에 만족하기 때문이다. 이것은 상식적으로 생각해 보아도 알수 있다. 현재에 불만족한다면
변화를 싫어할리가 없기 때문다. 현재에 만족한다는 말은 또 다르게 생각해 보면 현재 자신이
을 하고 있다. 따라서 변화를 두려워하지 않기 위해서는 소유욕에 찌들어 있지 않아야한다.
소유욕에 찌들어 있지 말아야 한다고 하면, 그것은 현실과 거리가 먼 구름같은 말이라고 치부할
- 문제풀이게시판 . . . . 6 matches
* 목적은 프로그램의 실력향상과 흥미유도로 한다.
* 몇단계의 레벨을 나누어 레벨이 올라갈 수록 문제 수준이 올라가게끔 문제를 제작한다. 문제풀이자는 자신의 레벨에 맞는 문제에 도전을 하여 게시판에 소스를 올려 정답 여부를 판단한다.
문제풀이에 어려움을 느끼는 사람과 직접 PairProgramming을 해준다. 도우미는 "문제풀이도우미시장"이라는 위키 페이지를 유지 관리하면서 요청이 들어오면 가능한 한 빨리 그 사람과 Xper:RemotePairProgramming 혹은 실제 PP를 해서 도움을 준다. 문제를 풀 직접적 지식을 전달하는 것보다 어떤 문제건 풀 수 있는 효과적/효율적 과정을 경험케 해주는 것이 우선이라는 점을 명심한다.
문제풀이도우미시장에는 자신이 사용할 수 있는 빈 시간대를 기록한다. 예컨대, 이번 주 금요일 오후 3시에서 7시까지 시간이 빈다면 도우미시장에 자신의 이름과 메신저 등의 연락처와 함께 가능시간대를 기록해 둔다. 또, 도우미를 요청하는 사람 역시 같은 방식으로 자신이 원하는 시간대를 적어둔다. 그러면 짝이 맞는 사람끼리 PP를 하고, 해당 항목을 지운다.
- 상협/삽질일지/2002 . . . . 6 matches
* Driver driver = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 이거 할때 메인 함수에서 throws Exception 를 하지 않으면 thrown 을 잡거나 선언 해야만 한다는 메시지가 뜬다. 아직 이유는 모르겠다.
* 방금 삽질 하나 해결..Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 이게 메인 함수에서만 되는게 아니라 이 구문을 사용할때는 throws Exception 을 항상 해줘야만 한다는 사실.. ㅡㅡ; 그런데 이 사실을 진작 체감하고 있었다. 그런데 계속 삽질 했다. 그 이유는
''Exception Handling 에 대해서 이해해야 할 것 같은데. Exception 은 해당 함수가 throws 등으로 발생을 시키고, Java 의 경우 그 Exception 을 반드시 처리를 해주는 곳을 만들어야 하지. 해당 메소드 내에서 Exception 이 발생은 하는데, 그 메소드에서 예외처리를 바로 하고 싶지 않으면 (즉, 그 Exception을 그 메소드 내에서 처리하지 않고, 그 메소드를 호출했던 곳 등에서 처리를 한다고 한다면) throws 로 해당 메소드에서 exception 을 또 던져주는 식으로 되겠지. 만일 Class.forName(...) 쓴 구문을 try - catch 로 예외를 또 잡는다면 이야기가 다르겠지만. 자바는 Exception 를 강요하는 관계로 예외는 catch 에서 무엇을 하건, 반드시 해당 발생된 예외를 잡아줘야 함. (그 덕에 최악으로 뻗을 일이 적지. 예외는 발생하더라도) --석천''
* 이번 삽질은 정말 중대한 삽질이었다. 1학기 평점을 좌우한다고 볼 수 있는 삽질이었다. 1학기 중간고사 대채용으로 내는 자바 프로젝트에서 소켓 부문을 맡은 친구가 알수 없는 에러때문에 엄청난 삽질을 해서 더이상 나아갈수 없다고 했었다. 메신저에서 통신이 안되다니.. ㅡㅡ;; 그 에러는 "No Such Method Found" 에러다. 그러한 Method가 분명히 있는데도 불구하고 안되었다. 나는 황당했다. 그 친구가 자바는 많이 안했어도 MFC랑 C++을 잘해서 소켓을 맡았는데... 나도 그 에러를 같이 찾기 위해서 삽질을 하였다. 소스도 길고 내가 짠것도 아니어서 정말 못 찾을거 같았다. 그 소스는 특성학 모든 클래스가 딱 서버, 클라이언트 두 파일 안에 들어 있었다. 그래서 난 그 클래스들을 각자 파일로 분리해 보기로 했다. 잘 안풀리니깐 한번 정리나 해보면 뭐좀 어떻게 될까 싶은 마음에 그렇게 했다. 그렇게 정리를 하다 문득.. ㅡㅡ;; 같은 이름의 클래스를 서버, 클라이언트에서 각자 다르게 정의해서 사용하는 소스를 발견... ㅡㅡ;;, 그 친구는 아직 자바에 익숙하지 않아서 이런 실수를 했나 보다.. 나도 만약 소스를 클래스별로 파일로 만들 생각을 안했으면 그 에러의 원인을 발견하지 못했을 것이다. 휴. 큰일날 뻔 했넹.. 앞으로는 "No Such Method Found"같은 에러때문에 고생할일은 절대 없기를.. ㅡㅡ;
* 오늘은 그렇게 큰 삽질은 아니지만 요새 별다른 삽질이 없어서 적어본다. 오늘 비행기게임 프로젝트를 하고 있는데 파일에서 적 비행기 경로를 읽어와서 실행하는거를 하는데 이상하게 계속 안되는 것이었다. 분명히 난 맞게 텍스트 파일에 적이 나올 위치를 숫자로 적었고, 정확한 명령어를 사용했는데 말이다. 그래서 계속 삽질하다가 잠깐 밖에 나갈 일이 생겼다. 그런데 걷다가 곰곰히 생각하니깐 왠지 파일읽어 온것을 프로그램에서 string 형으로 생각한거 같았다. 그때 아차 하는 생각이 들었다. 역시 삽질은 안된다고 계속 반복하기보다는 원인을 곰곰히 생각해야 한다는 교훈을 얻었다. 뭐 몸이 그렇게 안따라 주지만. ㅡㅡ;
- 새싹-날다람쥐 6월 10일 . . . . 6 matches
은 메모리 상의 어느 곳에 (sizeof(char)*100)byte만큼의 공간을 할당하고 그 주소를 반환한다.
그리고 d는 char*형태이기 때문에 Casting을 해 주어서 (char*)malloc(sizeof(char)*100); 와 같은 형태가 되어야 한다.
와 같은 형태를 통해서 자신이 원하는 크기를 배열에 할당시킬 수 있다.
free(d); 를 이용해서 지금 실행중인 프로그램에 종속되어있는 sizeof(char) * temp만큼의 메모리를 OS에 다시 반환시킨다.
이 free는 가장 하위 포인터에만 사용이 가능하다. 따라서 array를 모두 free시키려면 for문을 돌려서 free(array[i])와 같이 모두 없애준 후에 free(array);를 해야 한다.
- 새싹교실/2011/AmazingC . . . . 6 matches
* 비트란 10진수의 숫자를 2진수로 바꿨을 때 디지털 숫자 한 자리를 비트라고 한다. 단, 맨 앞자리 비트는 부호 비트로 사용한다.
* 오버플로우 = 어떤 특정한 자료형이 표현할 수 있는 데이터의 범위를 벗어났을때 오버플로우가 발생했다고 한다.
* 변수는 컴퓨터의 메인 메모리의 한 부분을 직접 차지한다.
* 따라서 scanf("%d",&number);에서 &는 number가 메모리에서 차지하고 있는 공간의 주소를 반환한다.(후에 포인터 배울때 중요한 개념)
* 우리가 char형 변수에 문자를 넣을땐 컴터가 문자로 저장을 하지 못한다!!(왜냐하면 컴퓨터는 숫자로 이루어진 기계니까)
- 새싹교실/2012/AClass/4회차 . . . . 6 matches
- c언어에서는 char,int,float 와 같은 많은 수의 기본 데이터 형과 배열, 포인터, 구조체 등의 유도된 데이터형으로부터 새로운 데이터형을 만들 수 있는데, 사용자 측면에서 새로운 데이터 형을 정의 할 수 있도록 typedef선언을 제공한다. typedef은 #define과 달리 이미 존재하는 c언어의 데이터 형만을 취하여 정의하고 typedef은 프리프로세서에 의해 처리되는 것이 아니라 c컴파일러에 의해 처리된다. 또한 #define보다 다양한 형태의 치환이 가능하다.
(rand()%1000을 한다면 1에서 1000까지의 숫자가 나올 것입니다.)
typedef 명령문은 기존에 있는 자료형을 사용자가 원하는 이름으로 사용할 수 있게끔 선언하는 명령문
큐를 구현하는 가장 일반적인 방법은 스택과 마찬가지로 배열을 이용하는 방법이다. 그러나 단순배열로 할경우 배열의 크기가 지정되어 있는 상태에서 데이타가 계속 추가되게 되면 어느 시점에서 overflow 가 발생하게 됨으로 데이타가 배열의 크기를 초과하게 되면, 초과된 데이타는 0번째 배열로 들어가게 해야 한다. 이러한 구조가 환형구조와 같다고 해서 보통 환형큐(circular queue) 라고 한다
typedef을 정의하면 int나 char 등의 자료형을 자신이 원하는 명칭으로 바꾸어서 사용이 가능하다.
- 성당과시장 . . . . 6 matches
[http://kldp.org/root/cathedral-bazaar/cathedral-bazaar.html 성당과시장] 에서 논문 번역문을 읽을 수 있다. 논문 발표후 Eric S. Raymond는 집중 조명을 받았는데, 얼마 있어 지금은 사라진 Netscape 가 자사의 웹 브라우저인 Netscape Navigtor를 [http://mozilla.org 모질라 프로젝트]로 오픈 소스시켜 더 유명해 졌다. RevolutionOS 에서 실제로 Netscape의 경영진은 이 결정중 이 논문을 읽었다고 인터뷰한다.
나의 경우 이런 책은 잘 않읽기 때문에 그냥 요점만 알아두는 것을 좋아한다. -_-;
그래서 나는 온라인 문서들을 좋아한다 ㅋㅋ
(또한, 레이몬드 본인은 이 시장방식이라는 것을 실제로 경험해보고자 fetchmail 이라는 것을 실제로 시장방식으로 개발해보았다고한다.)
이 책은 당시 책이 발표된 시점에서 얼마뒤 네츠케이프 사가 망하고, 망하면서 Netscape 을 Mozilla 라는 Project 이름으로 발표함으로써 더욱유명해 졌다고한다.
실제로도 네츠케이프사에서 이 결정을 하는데 이 책이 중요한 역할을 했다고 한다.
- 숫자를한글로바꾸기/정수민 . . . . 6 matches
// 숫자를 출력한다. 여기서 "input[ dummy_ja_ris_soo - ja_ris_soo ]"이조건은 시작을 //
// 제외한 부분에 1은 출력을 안한다는 것이다. //
// else if 부분은 시작부분은 무조건 숫자를 출력한다는 조건이다. /
// 작은 자리단위를 출력한다. 여기서 "input[ dummy_ja_ris_soo - ja_ris_soo ] != '0'" //
// 큰 자리단위를 출력한다. "(ja_ris_soo-1)%4==0"이조건은 숫자의 뒤에서부터 4개단위로 //
// 앞에서부터 출력하므로 --로 연산한다. /
- 음계연습하기 . . . . 6 matches
세상에 음계(etude-연습곡)를 연습하는 것보다 더 지루한 일은 없다. 그러나 [[HTML(<FONT COLOR=BLUE>위대한 연주자일수록 하루도 빠짐없이 성실하게 음계를 연습한다.</FONT>)]] 마찬가지로 [[HTML(<FONT COLOR=BLUE>유능한 외과 의사일수록 한층 더 성실하게 봉합술을 연마한다.</FONT>)]]
피아니스트는 연주 능력 향상에 크게 도움이 될 것 같지 않은 음계를 여러 달 동안 계속 연습하기도 한다. 그러나 그 연습이 피아니스트로 하여금 원하는 음악적 성취를 이룰 수 있도록 해준다. 외과 의사는 능숙한 수술 실력 향상에 크게 도움이 될 것 같지 않은 작은 손놀림을 익히기 위해 여러달 동안 계속해서 봉합용 실과 씨름을 한다. 외과 의사는 그 꾸준한 연습 덕분에 수술을 빠르고 정확하게 하게 되고, 그 결과 소중한 인명을 구하기도 한다. [[HTML(<FONT COLOR=RED>무언가를 성취하는 것은 반복적인 연습에 의해서만 가능하다. </FONT>)]]
- 자유로부터의도피 . . . . 6 matches
* 권위주의적인 성격은 과거를 숭배한다.
* 감상 : 이책을 읽게 된것은 정말 행운인거 같다. 이책은 현대인의 문제점을 아주 날카롭고 정확하게 지적해주어서 지금까지 뭔가 뿌연 안개처럼 잘 알수 없었던 문제들을 파악하는데 많은 도움을 준다. 인생살이에 정말 많은 도움이 되는 책이다. 이책은.. 강력 추천 !, 특히 고등학교와는 다른 생활에 처음 접하는 대학교 1학년들은 꼭 읽어 봤으면 좋겠다는 생각이 든다. 음.. 솔직히 이책이 그렇게 자극적인 재미를 주는 것은 아니지만, 내가 명확하게 설명하지 못한것을 명확하고 면밀하게 분석해주는데서 오는 통쾌함 같은 것을 느낄 수가 있다. 이책에서 알게 된점은 자유라는 것이 분명 좋은것이긴 하지만 그것을 제대로 제어를 하지 못하면 자신에게 좋지 못한 방향으로 다가온다는 점이다. 그리고 그렇게 좋지 않은 방향으로 다가온 것들(무력감, 고독, 기타 등등)을 피하기 위한 임시 방편(자동 인형, 파시즘)으로는 자유를 제대로 향유할 수 없고, 오히려 자신의 자아를 말살 할 수도 있다는 점이다. 그때에는 오히려 자신의 자아가 다른 어떤 자아와도 다르다는 것을 인식하고, 그러한 자아를 유지하고 키워 나가야 한다. 내가 너무 단순화 시키거나 왜곡 시켜서 말하는거 같지만 내 의견을 말하자면, 자유가 오면 피하지 말고 있는 그대로 맞 받아치고 받아들여서 자신의 제어권 안에 두어야 겠다. 즉 자유가 자신의 주인이 되게 하는게 아니라 자신이 자유의 주인이 되어야 할 것이다. 그리고 여기서 자유를 제대로 향유하지 못한 영향으로 발생하는 새디즘이나 매저키즘등이 나왔는데, 이것도 상당히 흥미로웠다. 지금까지 잘 알지 못했던 내용인데 우리주변에서는 아주 흔하게 볼 수있는 것들이었다. 새디즘이나 매저키즘이나 둘다 자유로부터 도피의 수단이었다. 대충 감상을 적으면 이정도이다.
* 먼저 사람은 자유를 원하면서 동시에 어딘가에 구속되고 싶어 한다는 부분이 정말 맞는 말 같다. 역시 정이 있으면 반이 있나 보다. 예전 철학에세이 라는 책에서 모든 현상은 모순관계에 뿌리를 두고 있다는 말과도 통하는 부분이 있는것 같다. 이 모순관계에서 변증법적인 합일을 이루는것이 관건인거 같다. 자유라는 것과 이것으로 인해 발생하는 고립감, 외로움 사이에서 우리는 어떻게 대처를 해야 할까.. 확실한것은 이것에 대해서 피하지 말고 온몸으로 부딪혀 보고 내가 왜 이런지 아는것 같다.
* 어떠한 이데올로기, 사상이 사람들에게 영향을 끼치기 위해서는 사람들이 그러한 사상을 필요로 할때에 그러한 사상이 나와야 한다. 칼빈이나 루터가 그 시대에 많은 사람들에게 영향을 끼친것은 그때의 시대 상황이 사람들이 그러한 의지할만한 사상을 필요로 한 시대였기 때문인가 보다. 이렇게 영향을 끼친다는 것은 [이기적인유전자]에 나오는 밈을 퍼뜨리는것과 비슷한것 같다. 그렇다면 현대 인들이 열렬히 환호할만한 사상은 무엇일까... 현재 너무 물질 중심적으로 변해가는 사회에 반기를 들만한 것은 아닐까 싶다.
* 여기까지 저자가 말하는 내용의 주지는 이렇습니다. "사람은 자유를 가지기 위하여 열망하기도 하지만, 사람은 종속받고 싶어하기도 한다. 고로, 사람의 마음에는 자유 뿐만이 아니라, 내면에서는 어떤 것이든지간에 그것에 종속받고 싶어하는 마음이 있다. (예 : 민주주의 / 군주정치, 사회주의)'
* 읽은지 오래되고 또한 읽으면서 그닥 감동의 물결이 일지 않고 고리타분한 어투의 글들이라고 생각해서 별반 기억이 없다. 남상의 리뷰를 보니 다시 읽고 싶어지는군. 자유의 열망과 종속에의 열망이 공존한다라. 정리하기 힘들지만 다시 책을 찾아봐야겠군. 책은 역시 정독을하고 정리하는 습관을 들여야겠어.
- 정규표현식/스터디/메타문자사용하기 . . . . 6 matches
* 윈도우 시스템에서 폴더의 구분을 역슬래시(\)로 하는 반면에 리눅스 시스템은 슬래시(/)를 사용한다. 따라서 이것을 변경하기 위해 사용할 수 있다.
자주쓰는 문자 집합들은 특수한 메타 문자로 대신하여 찾기도 한다. 이런 메타 문자들을 문자 클래스(classes of characters)라고 부른다. {{{[0-9]}}} = {{{[0123456789]}}} 와 같은걸 알것이다. 이것을 {{{[0-9]}}} 보다 더 편한게 찾으려면 '\d'로 찾을수 있고 제외하고 찾기는 '\D'로 {{{[^0-9]}}}를 대신할수 있다.
위와 보면 깨달을수 있다시피 정규 표현 문법은 대소문자를 구별하며 소문자와 대문자를 서로 반대임을 뜻한다.
'\x'를 붙여 10진수 10은 '\x0A'로 표현할수 있다. 이 문자를 사용한다면 '\n'과 기능이 같다
'\0'을 붙여 사용한다. '\011'은 '\t'과 같고 그렇게 사용 할수있다.
* 주의할 점은 대괄호가 두번 들어간다. posix 표현은 [:xdigit:] 이기 때문에 문자집합을 정의하려면 대괄호를 한번 더 써줘야 한다.
- 정모/2002.9.26 . . . . 6 matches
["ProjectPrometheus"] 팀의 경우는 현재 도서관 UI 가 바뀌는 통에 열심히 기존 코드 수정중이라고 함. 그대신 모듈화가 되어있어서 소스의 일부 클래스들만 수정하면 된다고 한다.
학술제가 다다음주 월요일이라고 한다. (작품 준비하는 사람들은 그때까지..)
* 대학원 - 대학원 진학 뒤 석사병특을 생각할 수 있다. 석사병특은 계속 확대되어가는 추세이고 대우도 좋아진다고 한다.
* 학사장교 - 컴퓨터와 관련된 학사장교의 경우 경쟁률이 6 : 1 선이라고 한다. 시험과 면접등이 있다.
한번씩 돌아가면서 정모 기간 (2주정도?) 내 일어난 일이나 사건들. 관심사 등등. 그리고 2차행사로서 간단한 세미나를 한다던지, 자신이 만든 프로그램에 대해 시연을 한다던지. 문제를 제대로 정의할 수 있다면, 답을 구할 수 있을것 같다. (가장 간단한 일을 시작할 수 있을 것 같다. 정모 스타일에 비격식적 대화시간을 넣어본다던지, 자네가 정모 진행을 할때, 주위를 환기시킬 수 있고. 또는, 회장의 진행없이 나가볼 수도 있고.) --["1002"]
- 정모/2011.3.14 . . . . 6 matches
* 이 때 두가지는 실제 있었던 일로 한가지는 거짓말로 작성한다.
* 정답을 공개한다.
* 예를 들면 모든 강의를 영상으로 녹화하여 공개한다던가
* 혹은 새싹 교실에서 진행한 프로젝트를 공개한다던가
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* Ice Breaking 때 스펙타클한 거짓말을 썼는데 "달을 다녀왔다" 라고 썼습니다. 물론 고쳤지만요.ㅋㅋ 그리고 이번 Ice Breaking은 시간이 좀 길어진게 흠이지만 참 재밌었습니다. 이번 정모 때 가장 인상적인건 현이의 옵젝C 였습니다. 중간에 "함수 오버로딩은 지원 안하나요?" 라고 물어봤었는데, "언어의 특징 상 지원할 필요가 없다" 라고 현이가 답해줬습니다. 대답을 들으면서 '''"아, 난 그동안 언어의 특징을 너무 무비판적으로 수용한 것이 아닌가?"''' 라는 생각을 하게 되었습니다. '''"객체지향 언어는 당연히 함수 오버로딩을 구현해야 한다"'''는 선입견이 있었거든요. 저에게 심심한 충격이 됐습니다. 다른 OOP Language 중 오버로딩을 구현한 비율이 얼마나 되는지 한번 찾아봐야 겠습니다 ㅋㅋㅋ - [박성현]
- 정모/2011.4.4 . . . . 6 matches
* 질문자가 자발적으로 질문한다.
* 세 명이 안 될 경우 질문자가 원하는 사람을 지목하여 총 세 명의 답변을 듣는다.
* 다른건 몰라도 뭔가 배운다 하면 죽었다 깨나도 꼭 알고 가야하는걸 가르치면 그걸로 충분하다. 하지만 성현이 본인이 날로 먹는거에 대해 고민한다면 '''조성래 교수님은 가르치지 않지만 본인이 알고 있는것'''을 준비해서 가르쳤으면 함. 자기가 아는걸 준비하는 것도 날로 먹는거라고 생각할 수도 있지만 학우들을 가르치게 되면 그건 아는 것에서 완벽하게 자기 것이 되지 않을까.([송지원])
* 이번 코드 레이스에서 제한된 시간 안에 두 사람이서 계속 바꾸어 가면서 코드를 짜는 것을 해 보니.. 역시나 난 허접한 실력이구나 라는걸 실감했고 -_-; 무엇보다 자신의 생각을 다른 사람에게 정확하게 전달한다는 것이 역시나 쉬운일은 아니라는 것도 느꼈습니다. 더 나은 프로젝트 만들기에서는 역시 사람이 미래다면서 돈 안되는 학과를 없애는 두산... (이게 아니잖아 -ㅅ-) 사람이 중요하다는 것을 새삼 느꼈는데, 서로를 잘 이해하려고 노력해야겠습니다. - [권순의]
1. 기존의 프로젝트/스터디 공유가 너무 보고하는 모양새가 되는 것 같아 서로 소통하듯 공유할 방법이 없을까 하다가 도와줘요 ZeroPage를 시도해봤습니다. 저는 세 명의 답변을 듣는 것이 매우 금방 끝날 줄 알았는데 생각보다 그렇지가 않네요. 만약 다음주에도 이 코너를 진행한다면 그 땐 한명의 답변만 듣고 나머지 답변은 위키로 듣는 식으로 진행해야 할 것 같습니다. 참가자 모두의 질문을 세 명의 답변을 듣고 넘어간다면 정모가 아니라 소규모 지금그때가 될 듯ㅋㅋㅋ
1. 물론 제가 한 개인으로서 행동한다고 해도 ZeroPage 회장인 사실이 변하지는 않으므로, 좀 더 상냥하고 화도 안 내고 그런 사람이 되어 나쁠 것은 없습니다.(그런 맥락에서 원래 관심도 없던 후배들하고 얼굴 익히는 일도 올해는 ZeroPage 회장이니 더 신경써야겠다고 생각하기도 했습니다.) 그러나 그런 것은 ZeroPage 회장에게 요구되는 필수 덕목은 아니라고 생각합니다.
- 제로페이지의문제점 . . . . 6 matches
[임인택]은 어떤 스터디 또는 프로젝트를 진행한다고 했을때(위키에 페이지를 만들었을때) 같이 참여할 사람이 없어 접은 경우가 몇번 있었다. (물론 충분히 혼자 진행할 수도 있었지만 사람들과 같이 진행해보고 싶었다) 이유를 물어보면 '''공통적으로''' ''공부좀 해야 그걸 할 수 있을것 같아요'', ''제가 그걸 하기엔 실력이 조금 부족한것 같네요'' 라고들 말한다. 이러한 친구들은 스스로 제약을 많이 거는 것 같다. 자신을 발전시키기 위해 스터디나 프로젝트를 진행하는 것인데, 자신이 발전되어 있지 않아서 스터디나 프로젝트에 참여할 수 없다는 뜻으로 받아들여도 되는걸까?
- 전에 선배님들과의 만남에서 나왔던 이야기인데, 서울대는 졸업생, 재학생간에 메일링리스트가 있어서 많은 것들을 공유한다고 합니다. 우리도 비슷한것을 만들어보는건 어떨지요? - [임인택]
=== 스터디가 신입 수준을 벗어나지 못한다 ===
ZeroWiki 에 쌓이는 지식 역시 이를 벗어나지 못한다. 현재 정체 상태
* 예전에 상민이 형이 프로젝트를 하면서 위키에 문서를 많이 남기라고 그랬었다. 그 이유인즉 다음번에 다른 사람들이 프로젝트를 할때 도움이 되도록 하기 위해서였다. 위키에서 진행되는 프로젝트가 끝나면 2가지가 남는거 같다. 한가지는 진행과정이 담겨있는 페이지들이고 다른 하나는 프로젝트를 통해서 얻은 지식, 노하우, 팁등, 그 프로젝트의 detail한 면이 아닌 그 프로젝트를 통해서 뽑아낸 좀더 일반적인 내용을 담고 있는(비슷한 주제의 프로젝트를 하는데 도움이 되는)페이지라고 생각한다. 진행 과정 페이지는 어떤식으로 진행하면 프로젝트가 망하고, 어떤식으로 진행해서 프로젝트가 끝까지 갔는지를 파악할때 도움이 되고, 프로젝트를 통해서 뽑아낸 지식 페이지들은 비슷한 주제의 프로젝트를 하는데 수고를 덜어준다. 프로젝트를 하면서 추후에도 도움이 될만한 것들을 자주 문서화 해야 좀 전수가 될거 같다. -[상협]
- 컴퓨터공부지도 . . . . 6 matches
Windows Programming 이라고 한다면 Windows 운영체제에서 Windows 관련 API 를 이용 (혹은 관련 Framework), 프로그래밍을 하는 것을 의미한다. 보통 다루는 영역은 다음과 같다. (이 영역은 꼭 Windows 이기에 생기는 영역들이 아니다. Windows 이기에 생기는 영역들은 Shell Extension 이나 ActiveX, DirectX 정도? 하지만, 가로지르기는 어떻게든지 가능하다)
예전에 Windows Programming 을 배운다고 한다면 기본적으로 GUI Programming 을 의미했다. Windows 가 기본적으로 GUI OS 이기에 기본이 이것이라고 생각하는 것이다. 하지만, GUI 는 어디까지나 'User Interface' 이다. 즉, 이건 Input/Output 에 대한 선택사항이다. 필요할때 공부하자. (하지만, 보통 User-Friendly 한 프로그램들은 대부분 GUI 이다.)
GUI Programming 을 하면서 익힐 수 있는 소중한 개념으로서 Event Driven Programming, Design 으로는 CompositePattern 이 있다. 대부분의 GUI Framework 들은 Event Driven Style 의 프로그래밍 방식이며, 대부분 CompositePattern 을 이용한다. Framework 들의 디자인 개념들이 비슷하므로, 하나의 GUI 관련 Framework 에 익숙해지면 다른 Framework 도 쉽게 익힐 수 있다.
* 내 생각엔 일단.. : 윈도우 컨트롤(VC 등의 리소스 편집기에서 제공 되는 모든 컨트롤들) 을 다루는 법을 완전히 습득 하자. 리스트 컨트롤, 트리 컨트롤, 탭 컨트롤 등의 모든 컨트롤을 자유자재로 원하는 모양(비트맵) 으로 바꿔서 사용할 수 있을때 까지 하자. 완전히 습득하면 어떤 프로그램이든 50% 이상 개발 기간이 단축될 것이다. -- ["김정욱"]
Windows GUI Programming 관련 서적으로는 찰스페촐드의 책을 추천한다. 책 내용이나 번역(!)글이 어렵지만 개념설명이 잘 되어 있으며, 실려있는 예제들이 좋다.
- 페이지이름 . . . . 6 matches
* 영문 제목의 경우 모두 빈칸을 붙여서 사용한다. (제목으로 표시될때 자동으로 단어의 대문자 단위로 빈칸을 띄어주므로)
*. ZeroWiki 에서는 '''/''' 으로 페이지 간의 계층을 구분한다.
* 당연히, 부모인 ["ProjectPrometheus"] 에 Jouney 에 대한 링크를 찾아보면 있을 것이다. 그리고 ["ProjectPrometheus/Journey"] 의 가장 하단에, 밑줄({{{~cpp ----}}})로 자신의 부모를 링크를 걸어두어 보는 이가 항해하기 편하게 배려한다.
*. 부모가 없는 페이지들은 ["분류분류"] 들에 있는 분류중 하나로 속할수 있다. 만약 자신이 생각하는 분류가 없다면, 당신은 새로운 분류 꺼리를 ZeroWiki에 제공할 수 있다. 새로운 공식적인 분류페이지를 열수 있다는 것은 즐거운 일이다. 축하한다. 해당 분류를 만들어 달라.
* / 으로 계층을 표현한다. ["역링크"]를 건다.
추상적이라 생각되면 일종의 사랑방으로 이용하면 된다고 봅니다. 범용적인 만큼 스레드 성격의 글들을 더 잘 포용할 수 있지 않을까 생각합니다. 저는 '토론'(을 원한다면) 이나 '제안'(성격이라면) 임이 명시적으로 드러나는것이 좋지 않을까 생각한것 뿐, 특별한 다른 뜻은 없습니다. --["1002"]
- 2학기파이선스터디/ 튜플, 사전 . . . . 5 matches
튜플 패킹 - 한 튜플 안에 여러 개의 데이터를 넣는 것을 튜플 패킹이라고 한다.
튜플 언패킹 - 반대로, 튜플에서 데이터를 꺼내오는 것을 튜플 언패킹이라고 한다.
4. 그 이외에 고정된 값을 표현하기 위하여 튜플을 사용한다.
* 값은 임의의 객체가 될 수 있지만, 키는 변경 불가능(immutable) 자료형이어야 한다.
10. D.popitem() : (키, 값) 튜플을 리턴하고 사전에서 항목을 제거한다.
- ACM_ICPC/2012년스터디 . . . . 5 matches
* 문서를 공유한다면, 그 알고리즘을 이용한 문제를 풀어보는 것도 병행해야한다고 생각함.
원형상의 빨강,파란점. 파란점이 더 많거나 같음 빨간점을 파란점에 연결했을때, 그 길이의 합을 최소로 한다.
* 원하는 문제 1~2문제
* 원하는 문제 1~2문제
- Apache . . . . 5 matches
전세계 서버 50% 이상이 아파치를 사용한다고 한다.
리눅스와 아파치를 이용하면 486컴퓨터도 멋진 서버가 될 수 있다고 한다.
최근 정부 프로젝트도 아파치가 도입되고 있다고 한다.
[ZeropageServer]도 [Linux]와 [Apache]를 이용하여 서비스를 제공한다.
- C++3DGame . . . . 5 matches
3D 영역에서의 작업을 위해서는 사용할 좌표계를 정의해야 한다.[[BR]]
하나의 code[] 절대 "세계"좌표를 구하려면 다음과 같은 코드를 사용한다.
CPU::GetWorldCoord(int index)는 그 세계의 원점에 대해 CPU 여덟개 점 중의 하나를 반환한다. 단지 coord[index]를 반환한다면, CPU중앙에 해당하는 CPU점을 반환하기 때문에 나중에 CPU를 그랠 때 원하는 대로 그릴 수 없게 된다. 중앙을 움직이면서도 CPU점 여덟개를 모두 옮기는 효과를 낼 수도 있다.
- C/C++어려운선언문해석하기 . . . . 5 matches
위의 문장은 '변수 n 을 int 형으로 선언한다'라고 해석할 수 있습니다.
'변수 p를 int *형으로 선언한다' 라고 해석할 수 있고 다시 말하면 '변수 p를 int형을 가리키는 포인터로 선언한다'라고 할 수 있습니
Stroustrup는 변수 형에 붙이는걸 더 선호한다고 했답니다.) (추가: 단순히 B. S.는 이걸 선호했다고 하더라는 무책임한 언급만 남기고
선언문은 가장 안쪽의 괄호부터 읽기 시작한다. 괄호안에서 가장 오른쪽부터 시작해서 왼쪽으로 읽기 시작합니다. 이 때 괄호가 발견되
- CppStudy_2002_1/과제1/CherryBoy . . . . 5 matches
//함수는 사용자에게 이름과 핸디켑을 요구한다
//이름이 입력되면 1을 리턴하고, 이름이 빈 문자열이면 0을 리턴한다
//golf 구조체를 제곤된 이름과 핸디캡으로 설정한다
//함수는 handicap을 새값으로 초기화한다.
//함수는 golf 구조체의 이름을 표시한다
- CryptKicker . . . . 5 matches
텍스트를 암호화하는 방법 중에 보안상 취약하긴 하지만 흔하게 쓰이는 방법으로 알파벳 글자를 다른 글자로 돌리는 방법이 있다. 즉 알파벳의 각 글자를 다른 글자로 치환한다. 암호화된 것을 다시 원래대로 되돌릴 수 있으려면 두 개의 서로 다른 글자가 같은 글자로 치환되지 않아야 한다.
각 줄을 복호화하여 표준 출력으로 출력한다. 여러 문장으로 복호화될 수 있다면 그 중 아무 결과나 출력하면 된다. 가능한 풀이가 없다면 알파벳 모든 문자를 아스테리스크(*)로 바꾸면 된다.
또 gh, ing, ed, the, a 와같은 자주출현하는 글자쌍도 존재한다. 만약 암호화된 코드에 덩그라니 한글자짜리 x 가 존재한다면 그것은 a일 가능성이 높아진다. 또 qer가 있따면 이것은 the가 될 확률이 높아지는것이고.
- Debugging/Seminar_2005 . . . . 5 matches
* 디버깅은 주로 구문적인 에러보다는 컴파일은 되더라도 자신의 의도한 값이 나오지 않을 경우에 많이 한다.
* 과학 시험에서도 하나의 인자를 바꿔 가면서 실험을 한다.
* 테스트를 많이 해야할 경우에 테스트 케이스를 만들어서 테스트 시간을 절약한다.
* 버그 리포트 작성 -> 이건 준비자도 안해봤다. 프로젝트가 좀더 커질 경우 이런 게 필요하다고 한다
* 혼자서 자신에게 묘사 하기도 한다
- DesignPatterns/2011년스터디/1학기 . . . . 5 matches
1. 이 자리에 이 패턴을 적용해야할 이유를 대라. 패턴을 적용할 때에는 타당한 이유가 있어야 한다. 생각없이 적용된 패턴은 오히려 설계를 망친다.
1. 책에 나온 교차 통풍 패턴을 예로 들어 말하자면, 정적인 구조를 볼 때 마주보는 양 쪽 벽 비슷한 높이에 창문이 있는 사무실은 교차 통풍 패턴에 속하는 것처럼 보일 수 있다. 그러나 창문 앞에 커다란 건물이 있으면 바람을 막아서 창을 통해 바람이 들어오지 않는다. 교차 통풍 패턴은 마주보는 양 벽에 각각 창이 있다는 그 자체로 실내 공기를 쾌적하게 만드는 것이 아니라 창을 통해 바람이 불어들어오고 불어나감으로써 실내 공기를 쾌적하게 만드는 것이다. 따라서 교차 통풍 패턴에서 마주보는 양 벽에 창이 존재한다는 정적 구조 보다는 창을 통해 바람이 들어오고 나가는 동적인 행동 양식과 그것을 통해 실내 공기를 쾌적하게 만든다는 의도가 중요하다고 할 수 있다.
1. 상속구현이 나쁘다고 말한다. 그래서 그런지 나뻐보인다. 코드가 꼬이니까.
1. 팩토리 메소드 패턴이 뭔지 잘 모르겠다. 기반 객체가 알지 못하는 파생 클래스를 생성한다니. 기반클래스는 원래 파생클래스를 알지 못해! 이말은 생성되는 파생클래스는 기반클래스를 '''반드시 확장해야 한다'''는 건가? 어려워.
- DesignPatternsAsAPathToConceptualIntegrity . . . . 5 matches
디자인패턴의 조직에 대한 우리의 토론중 디자인 패턴의 '자연적인 생성' 을 정의하기 어렵다는 의견이 있었다.만일 우리가 어떻게 디자인 프로세스에서 디자인 패턴들이 이용되는지 이해한다면, 그리고 패턴들의 조직화가 멀리 숨어있지 않다면, 이는 정의를 위한 좋은 프로퍼티가 될 것이다. 크리스토퍼 알렉산더(Alexander) 는 디자인 패턴의 자연적 생성은 이득이 되는 요소중 하나임을 강조했다. 소프트웨어의 관점의 업무 내에서 자연적인 생성은 실패한것 처럼 보이며, 디자인 패턴을 이용하는 더 일반적인 접근 방법은 다음과 같은 식으로 묘사된다. "xyz 문제에 대해 직면하게 되었을때.. 해결책은.." 혹자는 소프트웨어계에서 더 디자인패턴의 편의주의적인 적용은 디자인패턴의 생성적인 이용보다 유용하다고 말할지도 모른다.
이러한 차이의 근본은 디자인 프로세스 내에서의 디자인 패턴에 대한 촛점의 부족일지도 모른다. 사실상, 우리는 디자인 패턴과 관련된 디자인 프로세스에 대한 토론을 거의 보지 못했다. 디자인패턴을 프로세스와 독립적으로 쓰이는 도구처럼 보기도 한다. 이에 대해 좀 더 연구해보자.
이는 Brooks 가 25년 전에 쓴 말이다. "ConceptualIntegrity 는 시스템 디자인에서 가장 중요한 일이다." 그는 계속 말한다. "이 딜레마는 잔인한 것이다. 효율성과 개념적 완전성중 혹자는 디자인과 구축을 하는 것을 선호할 것이다. 큰 시스템에 대해 혹자는 책임을 맡을 중요한 맨 파워를 가져올 방법을 원할 것이다. 그래서 프로덕트는 적시에 출현할 것이다. 어떻게 이 두 필요요소들이 조화를 이룰 거인가?
몇몇 O-O 디자인 방법론들은 구체적 디자인 기준에 따라 최적으로 나누어진(모듈화되어진) 아키텍쳐나 마이크로-아키텍쳐들을 개발하는 명확한 단계의 폼에서 시스템적인 프로세스를 제공한다.
디자인 패턴은 "변화하는 부분에 대해 캡슐화하라"는 1차적인 모듈화 원리에 따라 마이크로-아키텍쳐들을 디자인하는 가이드를 제공한다.
- EightQueenProblemSecondTryDiscussion . . . . 5 matches
우.. 그리고 여전히 테스트 코드를 생각하기 어려웠던 부분이 실제 Queen 을 놓는 부분인데요. 다음과 같이 코드를 나열하고 재귀호출 부분에 대해서 유도를 하는 방법을 시도해봤습니다. 일종의 수열 찾는 방법이 되더군요. 음.. 이 부분에 대해서는 EightQueenProblem 에 대한 하나의 해를 알아놓고 시작한다면 TDD를 시도할 수 있을것 같다는 생각이 들긴 하는데. (문제는, 답을 구해놓고 나서야 이 생각이 났더라는. --;)
디자인하면서, 가장 의문이 들었던 부분이 출력과 관계된 부분이었습니다. EightQueenProblem 자체가 출력이 필요한 문제인지, 아닌지로 시작된 고민에.. 결국 '출력이 필요하다' 라고 결론을 내리게 되어, 출력을 원할경우, 인자로 출력 소스를 넘겨주면 지시한 곳으로 출력하고, 부가적으로 output format을 지원하는 방식을 채택하였습니다.
제가 보기에 현재의 디자인은 class 키워드만 빼면 절차적 프로그래밍(procedural programming)이 되는 것 같습니다. 오브젝트 속성은 전역 변수가 되고 말이죠. 이런 구성을 일러 God Class Problem이라고도 합니다. AOP(Action-Oriented Programming -- 소위 Procedural Programming이라고 하는 것) 쪽에서 온 프로그래머들이 자주 만드는 실수이기도 합니다. 객체지향 분해라기보다는 한 거대 클래스 내에서의 기능적 분해(functional decomposition)가 되는 것이죠. Wirfs-Brock은 지능(Intelligence)의 고른 분포를 OOD의 중요요소로 뽑습니다. NQueen 오브젝트는 그 이름을 "Manager"나 "Main''''''Controller"로 바꿔도 될 정도로 모든 책임(responsibility)을 도맡아 하고 있습니다 -- Meyer는 하나의 클래스는 한가지 책임만을 제대로 해야한다(A class has a single responsibility: it does it all, does it well, and does it only )고 말하는데, 이것은 클래스 이름이 잘 지어졌는지, 얼마나 구체성을 주는지 등에서 알 수 있습니다. (Coad는 "In OO, a class's statement of responsibility (a 25-word or less statement) is the key to the class. It shouldn't have many 'and's and almost no 'or's."라고 합니다. 만약 이게 자연스럽게 되지않는다면 클래스를 하나 이상 만들어야 한다는 얘기가 되겠죠.) 한가지 가능한 지능 분산으로, 여러개의 Queen 오브젝트와 Board 오브젝트 하나를 만드는 경우를 생각해 볼 수 있겠습니다. Queen 오브젝트 갑이 Queen 오브젝트 을에게 물어봅니다. "내가 너를 귀찮게 하고 있니?" --김창준
예를 들어, Board 객체는 Queen 객체들을 만들고 배치, 자신의 상태를 출력하는 서비스를 지원하고, Queen 객체는 내가 다른 Queen 객체를 공격할 수 있는지 없는지 알려주는 서비스를 지원합니다 -- 더 나아가서 스스로 자기 앉을 자리를 찾아갈 정도로 똑똑하게 만들 수도 있겠죠. Queen 오브젝트 갑이 Queen 오브젝트 을에게 물어봅니다. "내가 너를 귀찮게 하고 있니(attackable에 대한 메타포임)?", 라는 부분은 OOP로 어떻게 표현될 수 있을까 직접 생각해 보는 것이 더 좋을 것 같습니다. OOP에서 객체끼리의 의사소통은 보통 메쏘드 호출로 이루어지고, 목적어는 인자의 형태로 전달된다는 점을 고려한다면 여러가지 방법이 떠오를 수 있겠죠.
- ErdosNumbers . . . . 5 matches
주어진 논문과 논문 저자를 바탕으로 에르되시 수를 계산하는 프로그램을 만들어야 한다.
각 시나리오에 대해 "Scenario i"(i는 시나리오 번호)라는 내용이 들어있는 행을 우선 출력한다. 그 다음 줄부터는 입력된 모든 이름에 대해 이름과 에르되시 수를 출력한다. 저자의 이름은 입력된 순서대로 출력된다. 에르되시 수는 시나리오에 들어있는 논문 데이터베이스를 기반으로 계산한다. 데이터베이스에 있는 논문으로 볼 때 에르되시와 전혀 관계가 없는 저자들의 에르되시 수는 "infinity"로 출력한다.
- FreechalAlbumSpider . . . . 5 matches
프리첼이 유료화되면서 주위 사람들이 게시판들을 프리첼로부터 이전을 하기 시작하였다. 주위 아는 교회선배들의 경우는 그중 숭실대에서 게임방을 운영하시는 분이 있어서 교회사람들 전용 서버를 하나 마련하고 게임방에서 굴리기로 한다. 프리첼 게시판 변환기의 경우 이미 범용적인 제로보드나 이지보드에서 제공을 하지만, 앨범이나 화일 백업은 지원하지 않는다. 그리고, 게시판 백업을 할때엔 프리첼 관리자가 기존 게시판들의 접근 권한정도를 조절해줘야 한다. 로그인처리가 안되어있기 때문인데, 제로보드 게시판 변환기를 보니 쿠키 관련 처리가 없었다.
처음 무엇을 해야 할지 고민을 해야 하는데, 일단은 '이미지를 가져오는게 가능한가?' 를 먼저 하게 되었다. 프리첼의 경우 이미지를 얻어오는 방법이 getImage.asp 화일을 통해서만 가능하다. 일반 JPG 링크가 아니기 때문에, getImage.asp 로 넘겨주는 인자들을 알아내야 한다.
또하나 문제로는 이상하게 MySQLdb 모듈이 문제를 일으켰는데, update query 를 날릴때 에러발생을 하는 것이였다. 똑같은 쿼리문을 쉘에서 실행했을때는 잘 되었는데, MySQLdb 의 cursor 클래스를 이용, 쿼리를 날리면 실행이 안되는 것이였다. (DB 에 적용은 되는데, 에러가 발생한다.) 이 부분에 대해서는 일단 try-except 로 땜질처리를 했지만, 그리 기분좋진 않다. 수정이 필요하다.
원리는 보통의 이런류의 프로그램 (HTTP 로 문서 가져오고 스트링 파싱하여 데이터로 가공하고 DB에 저장) 이 비슷합니다. 단, 앨범게시판의 경우 로그인이 필요한데, 이 경우 쿠키 처리를 위한 header setting을 해줘야겠죠. Perl 같은 경우 LWP, Python 의 경우 ClientCookie, Java 의 경우 HttpUnit(원래의 용도는 다르지만, 이런 프로그램을 위한 간이 브라우저 라이브러리로 쓸 수 있습니다.) 등의 라이브러리를 쓸 수 있습니다. 그리고, 이미지의 경우는 해당 URL을 보고 다시 HTTP Connection 을 열어서 얻어와서 binary로 저장해야 한다는 것이 유의사항이 되겠습니다. (HTML만 얻어오면 img tag 의 링크들만 있겠죠.) 그리고 header setting 에서 약간 미묘(?)한 부분이 있던것 같던데, 저는 걍 webdebug 로 캡쳐한거 그대로 보낸지라..; 이 부분은 CVS의 코드 참조하세요. --[1002]
- FromDuskTillDawn . . . . 5 matches
블라디미르는 새하얀 피부와 날카로운 이를 가지고 있다. 나이는 600살이나 되지만, 뱀파이어인 블라디미르에게 나이는 별 의미가 없다. 블라디미르는 뱀파이어로 살아가는 데 있어서 별 다른 불편함을 느끼지 못한다. 그는 항상 야간 근무를 맡는 의사로 일하고 있는데, 훌륭하게 의사 생활을 하고 있으며, 야간 근무를 도맡아 하다 보니 동료들하고도 매우 사이 좋게 지내고 있다. 그는 파티장에서 맛을 보는 것만으로도 혈액형을 알마맞히는 쇼를 보여주곤 한다. 블라디미르는 여행을 하고 싶은데, 뱀파이어이다 보니 세 가지 문제를 극복해야만 한다.
3. 뭔가 먹을 것을 가지고 다녀야 한다. 하루에 피를 1리터씩 먹어야 하며, 그의 관 안에서 정오(낮 12시)에 피를 마신다. |}}
각 테스트 케이스에 대해 일단 테스트 케이스 번호를 출력한 다음, 그 다음 줄에 "Vladimir needs # litre(s) of blood." 또는 "There is no route Vladimir can take."를 출력한다 (출력 예 참조).
- GoodExams . . . . 5 matches
시험은 학생의 평가를 직접적 목적으로 한다. 하지만 교육기관에서의 평가라는 것도 궁극적으로는 "교육"이라는 목표를 벗어날 수 없다. 따라서 우리는 교육과 평가가 배치할 때 당연히 교육의 손을 먼저 들어줘야 하며, 교육의 틀 속에서 평가의 의미를 찾아야 한다.
"컴퓨터란 무엇인가"와 같은 문제는 출제하기가 쉽다. 별로 신경을 쓰지 않고 문제 한 둘 내는 것으로 나름의 평가를 할 수 있다고 믿는다. 하지만 이런 문제는 대부분 학생과 선생 모두의 게으름에서 연유하며, 또 이를 조장한다. 선생은 자신의 책임을 학생에게 완전히 전가해 버리며, 학생의 답안에 대해 깊이있는 분석과 이에 맞는 피드백을 제공, 부차적 교육이 일어나게 하지 못한다. 학생은 자신이 공부를 아무리 착실히 해도 이런 식의 뭉떵그린 추상적 문제를 자주 접하게 되면 잡다한 지식을 대충 얼버무려 장문으로 만드는 요령만 늘게된다. 교육은 "똑똑한 질문"을 묻는 것이지, "이것에 대해 네가 아는 모든 걸 쏟아내놓아 봐, 얼마나 되는지 보자"가 되어선 안된다.
좋은 질문은 학습자의 흥미를 유발하고, 그 사람이 깊이 생각할 기회를 주며, 자신의 현 단계 이해에서 한 계단 더 나아갈 구체적 안내자의 역할을 하며, 학습자의 사고 방식이나 습관 등에서 약점과 문제점을 발견할 기회를 제공한다. 학습자를 더욱 똑똑하게, 더 깊이 이해하게 도와주는 질문인 것이다. 그러나 이것은 채점하기도, 출제하기도 쉬운 일은 아니다.
- HowManyZerosAndDigits . . . . 5 matches
입력에 대해서 주어진 진수 체계에서 팩토리얼 수의 0의 개수와 숫자의 개수를 한 줄씩 출력한다. 두 숫자 사이에는 공백으로 구분한다. 0의 개수와 숫자의 개수가 2^31-1보다 크지는 못할 것이다.
|| [임인택] || Java || ? || [HowManyZerosAndDigits/임인택] [[BR]] 주의 : 일단 10진법 이상의 진법도 10진수로 표현한다고 가정하고 문제를 풀었음 [[BR]] (예를 들어 A0 대신 10 0 이라고 표현한다고 가정) ||
만약 800진법일 경우 0~9 까지의 숫자는 표현할수 있겠지만 그 이후의 숫자는 어떻게 표현하나요? 16진법으로 나타낼때 0에서 F 로 표현하는 것처럼, 800진법에서 10이상의 수를 표현해야 할 방법이 있어야 할 것 같은데요. 알파벳을 이용한다고 해도 Z(35)이후의 수는 표현할 방법이 없는데요. 이에 대한 정의가 없다면 정확한 답을 구할 수 없을 것 같습니다(문제에서 말한 ''0의 개수''말이죠). 간단한 예를 들어 설명하자면,
- ImmediateDecodability . . . . 5 matches
다음 코드는 직접 해독 가능성이 존재한다.
A:01 B:10 C:010 D:0000 (A가 C의 앞부분에 존재한다)
각 그룹은 다른 그룹과 따로 처리해야 한다. 한 그룹의 코드가 다른 그룹의 코드와는 연관해서 처리하지 않는다. 즉, 각 그룹은 따로따로 처리해야 한다.
각 그룹에서 프로그램은 그룹의 코드들이 직접 해독 가능성이 있는지를 결정하고, 주어진 그룹 번호와 그룹의 직접 해독 가능성 여부를 한 줄씩 출력한다.
- Java Study2003/첫번째과제/방선희 . . . . 5 matches
* Thread를 완벽하게 지원한다.
예를 들어 Java로 인사시스템을 개발하여 운영하고 있다가, 새로운 급여 시스템을 개발하고자 한다고 가정하자. 이때 Java는 다른 언어에 비해 기존 시스템과 쉽게 연동가능하며, 혹 기존 시스템이 Java가 아니더라도 그 일은 가능하다.
기존에 Sun OS에서 Java로 개발한 인사시스템을 Windows NT로 이관하고 싶다. 이때 프로그램 수정없이 가능할까? Windows NT를 지원하는 JDK가 있다면 가능하다. 그러고 Windows NT를 지원하는 JDK는 있다.
예를 들어 A라는 회사에서 인사 시스템을 Java로 개발하여 사용하고 있다고 가정하자. 다른 B라는 회사에서도 같은 인사 시스템을 개발하고자 한다면, B회사는 A회사의 인사 시스템 중 승진과 관련된 일부분을 가져와 그대로 사용할 수 있다.
- JavaScript/2011년스터디 . . . . 5 matches
* [정진경] - 약 3시간 넘게 특강을 들었습니다.프로토타입에 대해서는 처음 접해본거 같은데 익숙치가 않아서 개념 이해가 버거운 것 같기도 하고-_-;깔짝깔짝 써본 자바스크립트가 이렇게 심오한 언어일 줄은 몰랐습니다. 더글락스 어쩌구 아저씨의 책을 정독해봐야 겠네요. 그전에 기초부터 다져야 하겠지만, 오늘 배운 부분들이 꽤 많은 핵심들을 짚었다고 생각합니다.하지만 자바스크립트로 원하는 기능을 다 구현해보더라도 오늘 배운 것들을 응용할만한 끈기가 저한테 있을지는.. 모르겠습니다;;
* 네 줄 가지고 세시간 넘게 진행할만큼 중요한 내용이라고 생각한다. 그게 언어든 뭐든 쓰는 법을 익히는 것에만 집중하는 사람들을 많이 봤다. 그게 뭔지 확실히 알지도 못하면서 쓰는 법만 익히려한다. 어떻게 쓰는지를 배우는 건 그렇게 어렵지 않은데 뭔지도 모르고 문법에만 집중하면 쓸 줄은 알아도 잘 쓰지는 못하는 것 같다.
* 드래그 중일 때에는 캔버스 안에 마우스포인터를 가두고 싶은데 자바스크립트로 가능할지 잘 모르겠고, 또 엘리먼트가 없는 공간에도 동적인 캔버스를 생성하려는데 바디의 영역이 원하는대로 되지 않네요. HTML 등 배경지식이 부족해 구현에 어려움을 겪고 있습니다.. -[정진경]
* MySQL에 원하는 정보를 Delete하려고 하였으나, 그걸 위해서는 index가 필요했고, 인덱스를 만드는 방법을 연구하고 있습니다.
- JavaStudy2004/자바따라잡기 . . . . 5 matches
자바(JAVA)하면 섬나라 자바를 연상케 한다. 그러나 미국 사람들에게 자바는 에스프레소 커피로 유명한 커피 체인점을 생각 하게 된다. 유래는 커피체인점이고, 커피의 대명사로도 사용된다.
*1. 최근의 컴퓨터 분야의 용례에서, 가상머신은 자바 언어 및 그 실행 환경의 개발자인 썬 마이크로시스템즈에 의해 사용된 용어이며, 컴파일된 자바 바이너리 코드와, 실제로 프로그램의 명령어를 실행하는 마이크로프로세서(또는 하드웨어 플랫폼) 간에 인터페이스 역할을 담당하는 소프트웨어를 가리킨다. 자바 가상머신이 일단 한 플랫폼에 제공되면, 바이트코드라고 불리는 어떠한 자바 프로그램도 그 플랫폼에서 실행될 수 있다. 자바는, 응용프로그램들이 각각의 플랫폼에 맞게 재작성 되거나, 다시 컴파일하지 않아도 모든 플랫폼에서 실행되는 것을 허용하도록 설계되었다. 자바 가상머신이 이를 가능하게 한다. 자바 가상머신의 규격은 실제 "머신"(프로세서)이 아닌 추상적인 머신을 정의하고, 명령어 집합, 레지스터들의 집합, 스택, 가배지를 모은 heap, 그리고 메쏘드 영역 등을 지정한다. 이러한 추상적, 혹은 논리적으로 정의된 프로세서의 실제 구현은, 실제 프로세서에 의해 인식되는 다른 코드, 혹은 마이크로프로세서 그 자체에 내장될 수도 있다. 자바 소스 프로그램을 컴파일한 결과를 바이트코드라고 부른다. 자바 가상머신은, 실제 마이크로프로세서의 명령어에 그것을 대응시키면서 한번에 한 명령어씩 바이트코드를 해석하거나, 또는 그 바이트코드는 실제 마이크로프로세서에 맞게 JIT 컴파일러라고 불리는 것을 이용해 나중에 컴파일될 수도 있다.
*3. IBM에서 말하는 가상머신이라는 용어는 또한, 내재된 콘트롤 프로그램에 의해 교대로 관리되는 운영체계를 의미하는데 사용되기도 한다. 그렇기에, IBM의 VM/ESA는 IBM S/390시스템 상의 다중 가상머신을 조정할 수 있는 것이다.
"실행되고 있는 프로그램은 간혹 가상머신이라고 불려진다. - 실제 물리적인 현실로 존재하지 않는 머신. 가상머신 아이디어는, 그 자체로 기술의 역사에서 가장 멋진 아이디어 중의 하나이며, 소프트웨어에 관한 아이디어의 진화에 있어 매우 결정적인 단계라고 말할 수 있다. 그것을 따라잡기 위해, 과학자와 기술자들은 프로그램을 운영하는 컴퓨터가, 단지 세탁이나 하는 세탁기가 아니라는 것을 인식해야만 했다. 세탁기는 그 안에 어떠한 옷들을 넣는다 해도 여전히 세탁기이지만, 컴퓨터는 새로운 프로그램을 넣는다면, 그것은 완전히 새로운 기계가 된다.... 가상머신, 그것은 소프트웨어를 이해하는 방법이며, 소프트웨어의 설계가 기계의 설계와 다르다는 것을 생각하게 한다."
- LC-Display . . . . 5 matches
입력 파일은 여러 줄로 구성되며 표시될 각각의 숫자마다 한 줄씩 입력된다. 각 줄에는 s와 n이라는 두 개의 정수가 들어있으며 n은 출력될 숫자(0<=n<=99,999,999), s는 숫자를 표시하는 크기(1<=s<=10)를 의미한다. 0이 두 개 입력된 줄이 있으면 입력이 종료되며 그 줄은 처리되지 않는다.
입력 파일에서 지정한 숫자를 수평 방향은 '-'기호를, 수직 방향은 '|'를 이용해서 LCD 디스플레이 형태로 출력한다. 각 숫자는 정확하게 s+2개의 열, 2s+3개의 행으로 구성된다. 마지막 숫자를 포함한 모든 숫자를 이루는 공백을 스페이스로 채워야 한다. 두 개의 숫자 사이에는 정확하게 한 열의 공백이 있어야 한다.
각 숫자 다음에는 빈 줄을 한 줄 출력한다. 밑에 있는 출력 예에 각 숫자를 출력하는 방식이 나와있다.
- LearningGuideToDesignPatterns . . . . 5 matches
DesignPatterns로 Pattern 스터디를 처음 시작할때 보면, 23개의 Pattern들을 navigate 할 방향을 결정할만한 뚜렷한 기준이 없음을 알 수 있다. 이 책의 Pattern들은 Creational, Structural, Behavioral 분류로 나누어져 있다. 이러한 분류들은 각각 다른 성질들의 Pattern들을 빨리 찾는데 도움을 주긴 하지만, 패턴을 공부할때 그 공부 순서에 대해서는 구체적인 도움을 주지 못한다.
DesignPatterns 의 저자들은 Pattern들간의 연결관계들을 제시하지만, 이것이 또한 Pattern들에 대한 navigation이 되지는 못한다. 책 전반에 걸쳐 많은 패턴들이 연결 관계를 보여주며, 또한 그것은 다른 패턴들 학습하기 이전에 공부하는데 도움을 주기도 한다. 그리고 어떤 Pattern들은 다른 패턴들에 비해 더 복잡하기도 하다.
여러해가 지난 지금, DPSG는 23주 기간의 pattern들을 공부하는 스터디 그룹들을 가져왔다. 각각의 그룹들은 스터디 그룹을 위한 navigation 에 대해 실험하고, 토론하고, 수정했다. 여기서 제안된 navigation은 매 새로운 스터디 그룹들에게 이용된다. 여기서 제안된 navigation은 Pattern 초심자들에게 더 지혜롭게 하나의 패턴에서 다른 패턴으로 이동하게끔 도와줄 것이며, 효율적으로 23개의 Pattern들을 터득하는데 도움을 줄 것이다. 물론 이 navigation은 계속 개선해 나갈 것이다. 그리고 당신이 제안하는 개선책 또한 환영한다.
ObserverPattern 과 Model-View-Controller (MVC) Design 을 이해하기 위한 준비단계로 MediatorPattern을 공부한다.
- MFC/Socket . . . . 5 matches
* 서버에 접속한다.
* 서버를 구현하기 위해서 CSocket을 상속받아서 클래스를 하나 생성한다. CSocket은 MFC에서 제공해주는 클래스
Create(nPortNum); //특정 포트 번호로 서버를 생성한다.
m_serverSocket.Init(this,SERVERPORT); //서버를 생성한다.
if(!m_serverSocket.Accept(*m_dataSocket)) // 접속을 받는다. m_dataSocket을 통해 통신한다.
- MoniWikiACL . . . . 5 matches
=== explicit하게 지정해야 한다 ===
/!\ 주의: 모든 경우, explicit하게 지정될 경우에 효력이 발생한다.
ProtectedPage @User deny * # 이것만으로는 의도대로 작동 안한다.
# 다음을 explicit하게 명시해야 의도대로 작동한다.
* {{{allow edit,savepage}}}라고 explicit하게 정의된 것을 다시 취소시켜야 의도대로 작동하는 것이다. 따라서 {{{ProtectedPage @User deny edit,savepage}}}라고 써 주어야 한다.
- NUnit/C#예제 . . . . 5 matches
1. 테스트 하고자 원하는 Method 에는 Test를, 속한 클래스에는 TestFixture Attribute를 붙인다.
1. SetUp TearDown 기능 역시 해당 Attribute를 추가한다.
1. NUnit gui나 console 브라우져로 빌드후 나온 dll 혹은 exe를 로딩해서 Test를 실행한다.
1. Show Command Containing 밑에 있는 박스에서 방금 추가한 실행도구를 선택한다. 이 때 명령의 이름이 나오지 않으므로 NUnit을 실행하는 것이 몇 번째 실행 명령(External Command)인지 알아두어야 한다. 처음 실행 도구를 추가했다면 아마 External Command8 일 것이다. (VS2005경우는 외부명령1이 첫번째 External Tools임)
- NeoZeropageWeb/기획안 . . . . 5 matches
2006년 신학기를 최종 목표로 제로페이지 홈페이지의 구조를 쇄신한다.
'''기술자적 디자인에서 탈피한다.'''
'''세계의 추세 블로깅을 지원한다.'''
'''위키와 트랙의 유기적 통합을 추구한다'''
'''UTF-8로의 인코딩을 지향한다'''
- ObjectOrientedDatabaseManagementSystem . . . . 5 matches
OODBMS[오오디비엠에스]는 객체로서의 모델링과 데이터 생성을 지원하는 DBMS이다. 여기에는 객체들의 클래스를 위한 지원의 일부 종류와, 클래스 특질의 상속, 그리고 서브클래스와 그 객체들에 의한 메쏘드 등을 포함한다. OODBMS의 구성요소가 무엇인지에 관해 광범위하게 합의를 이룬 표준안은 아직 없으며, OODBMS 제품들은 아직 초기에 머물러 있다고 여겨진다. 그 사이에 관계형 데이터베이스에 객체지향형 데이터베이스 개념이 부가된 ORDBMS 제품이 더욱 일반적으로 시장에 출시되었다. 객체지향형 데이터베이스 인터페이스 표준은 산업계의 그룹인 ODMG (Object Data Management Group)에 의해 개발되고 있다. OMG는 네트웍 내에서 시스템들간 객체지향형 데이터 중개 인터페이스를 표준화하였다.
객체지향형 데이터베이스 시스템은 두 개의 조건을 만족시켜야만 한다 : 그것은 DBMS이어야 하며, 또한 객체지향형 시스템이어야 한다. 즉, 가능한 범위까지 OODBMS는 객체지향형 프로그래밍 언어의 현재 작업과 함께 일관되어야만 한다. 첫 번째 기준은 영속성, 2차 저장관리, 동시성, 회복, 그리고 특별한 편의 등 다섯 개의 특질로 해석된다. 두 번째 것은 복잡한 객체들, 객체 동일성, 캡슐화, 형 또는 클래스, 상속, 지연 바인딩과 결합된 오버라이딩, 확장성과 계산 결과의 완성도 등 여덟 개의 특질로 해석된다.
- OptimizeCompile . . . . 5 matches
프로그램(translation unit)은 진행방향이 분기에 의해 변하지 않는 부분의 집합인 basic block 들로 나눌 수 있는데 이 각각의 block 에 대하여 최적화 하는 것을 local optimization 이라 하고, 둘 이상의 block 에 대하여, 혹은 프로그램 전체를 총괄하는 부분에 대하여 최적화 하는 것을 global optimization 이라고 한다.
컴파일러는 constant propagation 과 constant folding 을 반복하여 수행한다. 각각 서로의 가능성을 만들어 줄 수 있으므로, 더이상 진행 할 수 없을 때까지 진행한다.
컴퓨터가 할 수 있는 연산 들은 각각 그 연산이 수행되는데 걸리는 시간의 차이가 있다. 연산에 복잡도에 의해서 이루어지는 현상인데, 극단적인 예를 들자면, shift 연산은 보통 2 클럭에 처리되는 반면에, 나누기 연산의 경우 80-90 클럭을 소모하게 된다.(i8088자료) 이런 연산에 대한 computation time 의 차이를 줄이는 최적화 방법을 strength reduction 이라고 한다.
cpu architecture 차원에서 지원한다.
- PowerOfCryptography/이영호 . . . . 5 matches
// 반올림은 ceil, floor 함수로 효율성 있게 구성한다.
// 여기서 문자를 숫자로 변경하고 log10 함수를 사용한다.
// 반올림을 하고 정수로 캐스팅한다.
sscanf(p_buf, "%2c\0", p); // 앞의 두 자리만 취한다.
buf = log10((double)atof(p_buf)/10); // 첫 두자리를 log취한다.
- ProjectPrometheus/개요 . . . . 5 matches
하지만, 현재의 도서관 시스템은 사용하면 할 수록 불편한 시스템이다. "Ease of Learning"(MS 워드)과 "Ease of Use"(Emacs, Vi) 어느 것도 충족시키지 못한다.
나는 우리학교 도서관에 아마존 스타일의 시스템(많이도 말고, 도서별 리뷰 등록, 별표 평가, 고객 클러스터링을 통한 서적 추천, 도서별 대출/검색 횟수를 통한 베스트셀러 집계 및 이에 대한 통계 분석 -- 예컨대 공대 학생의 베스트셀러, 경영학과의 베스트셀러, 4학년의 베스트셀러 등 -- 같은 것만이라도) 을 도입하면 학생들의 독서량이 두 배는 높아질 것이라고 확신하며, 이것이 다른 곳(정문 바꾸기 등)에 돈을 쓰는 것 몇 십 배의 가치를 지속적으로 만들어 낼 것이라 믿는다. 이제는 도서관도 인터넷 서점을 벤치마킹 해야 한다.
지금 도서관의 온라인 시스템은 상당히 오래된 레거시 코드와 아키텍춰를 거의 그대로 사용하면서 프론트엔드만 웹(CGI)으로 옮긴 것으로 보인다. 만약 완전한 리스트럭춰링 작업을 한다면 얼마나 걸릴까? 나는 커스터머나 도메인 전문가(도서관 사서, 학생)를 포함한 6-8명의 정예 요원으로 약 5 개월의 기간이면 데이타 마이그레이션을 포함, 새로운 시스템으로 옮길 수 있다고 본다. 우리과에서 이 프로젝트를 하면 좋을텐데 하는 바램도 있다(하지만 학생의 사정상 힘들 것이다 -- 만약 풀타임으로 전념하지 못하면 기간은 훨씬 늘어날 것이다). 외국의 대학 -- 특히 실리콘벨리 부근 -- 에서는 SoftwareEngineeringClass에 근처 회사의 실제 커스터머를 데려와서 그 사람이 원하는 "진짜" 소프트웨어를 개발하는 실습을 시킨다. 실습 시간에 학부생과 대학원생이, 혹은 저학년과 고학년이 어울려서(대학원생이나 고학년이 어울리는 것이 아주 중요하다. see also SituatedLearning ) 일종의 프로토타입을 만드는 작업을 하면 좋을 것 같다. 엄청나게 많은 것을 배우게 될 것이다.
사용자는 이 랩퍼를 통해 로긴을 하고, 책 평가도 하고, 리뷰도 쓰고, 베스트셀러 검색도 하고, 대출 예약도 한다. 기존 시스템의 모집합이 되는 셈이다. (하지만 꼭 그럴 필요는 없다. 중요하고 자주 쓰이는 기능만 노출해도 충분하다)
- ProjectVirush/Prototype . . . . 5 matches
//Project -> Setting -> LINK 메뉴 -> Object/library modules: 의 끝부분에 ws2_32.lib 를 추가한다.
// 프로그래머는 이것을 통해 네트워크와 대화를 한다.
= inet_addr(SERVER_IP); // 로컬 주소로 설정한다.
// 서버에 연결한다. 시도나 해보자.
// exit로 종료를 하면 모든 파일 디스크립터를 자동으로 닫고 종료한다.
- ProjectZephyrus/일정 . . . . 5 matches
- 상대의 팀에게 디자인에 관해서 설명한다.
팀의 관리자였던, 류상민과 강석천은 진행시 전체적인 문제점과 개선 방향을 이야기 한다.
- 프로젝트에서의 자신의 역할, 느낀점, 잘못된점, 개선 방향 을 이야기 한다.
- 개인이 생각한 프로그래밍, 코딩 지향점에 관해서 이야기 한다.
- 클라이언트, 서버의 배포를 위한 jar와 소스 배포를 만들어 링크한다.
- Refactoring/BadSmellsInCode . . . . 5 matches
* 새 데이터베이스가 생길때마다 3개의 메소드를 바꿔야 한다.
* switch-case 부분을 ExtractMethod 한 뒤, polymorphism이 필요한 class에 MoveMethod 한다. 그리고 나서 ReplaceTypeCodeWithSubclasses 나 ["ReplaceTypeCodeWithState/Strategy"] 를 할 것을 결정한다. 상속구조를 정의할 수 있을때에는 ReplaceConditionalWithPolyMorphism 한다.
전에 JuNe 형이 최한기의 신기통을 언급하면서 Metaphor 로서 'Smell' 이 잘 맞아떨어짐을 이야기하던게 생각. '냄새란 일단 그 자체로 악취를 풍길 뿐만 아니라, 밖으로 점차적으로 퍼지고, 사람에게 배어들 수 있으며, 사람에게 배어들고 나면 그 사람이 냄새에 대해 인식을 하지 못한다.'. Smell 에 민감한 사람들은 작은 Refactoring 도 잘 해낼 수 있다. -- ["1002"]
- Ruby/2011년스터디/세미나 . . . . 5 matches
*루비의 모든것은 객체로써 존재한다
* 루비에서는 클래스명이 대문자로 시작해야한다!(아니면 에러)
* A마을에서 B마을로 가려면 강을 건너야한다.
* 우선 늦게가서 if-else 밖에 못 들어먹었습니다 ㅠ 상당히 아쉬웠어요. 근데 if구문을 사용해도 의도가 명확하다면 괄호가 필요없다게 참 신기하더라구요. 제가 약간이라도 다뤄본 C, C++, Java, JavaScript, Python에서는 괄호를 반드시 사용해야만 하는 걸로 알고있었는데 말이죠. 근데 여기서 "의도가 명확하다는 것"이 무슨말인지.. 솔직히 이해가 안 가요. ㅠ 저가형 두뇌... 그리고 루비 개발도구가 참 많더군요. aptana... 루비를 위해 만들어졌지만 루비를 쓰지 못한다는게 참 인상적이었습니다. 그리고 irb의 개발환경을 보니 수정을 할 수가 없어 참 불편하더군요. Python Shell의 개발환경이 보다 더 우수한 것 같습니다. 그리고 회고할 때 주워들은 "우아하며 불완전한 언어"라는 말... 왜 그런지 궁금하네요. - [윤종하]
* 현재 난 람다빠다! 코드에 람다로 떡칠을 한다!! - [서지혜]
- ShellSort . . . . 5 matches
여틀 왕(King Yertle)은 그의 거북이 왕관을 재배치해서 가장 계급이 높은 귀족과 가장 가까운 측근들을 더 위쪽으로 올리고 싶어한다. 쌓여있는 거북이들의 순서를 바꾸는 방법은 거북이 한 마리가 원래 자기 위치에서 빠져 나와서 맨 위로 올라가서 자리를 잡는 방법 밖에 없다.
거북이 스택의 원래 순서와 새로 만들어져야 할 스택의 순서가 주어졌을 때 최소한의 이동 횟수만으로 원래 스택을 새로운 스택으로 재배치할 수 있는 순서를 찾아야 한다.
각 테스트 케이스에 대해 한 줄에 하나씩의 거북이 이름이 출력되며 이 거북이 이름은 스택을 빠져 나와서 맨 위로 올라가는 거북이의 이름을 의미한다. 이 출력에 나와있는 순서대로 자기 자리를 빠져 나와서 맨 위로 올라가는 과정을 반복하면 원래의 스택이 새로운 스택으로 바뀌어야 하며 최소한의 이동 횟수로 작업을 끝낼 수 있어야 한다. 이 조건을 만족하는 이동 방법이 여러 가지 있으면 그 중 아무 것이나 출력해도 된다.
서로 다른 테스트 케이스 사이에는 빈 줄을 하나씩 출력한다.
- Star . . . . 5 matches
48개의 삼각형 셀로 이루어진 판이 하나 있다. 각 셀에는 0에서 9까지의 숫자가 적혀있다. 모든 셀은 두 줄 또는 세 줄에 속한다. 각 줄들은 A에서 L까지의 문자로 표시된다. 아래 그림을 보면 9라는 숫자가 들어있는 셀은 D, G, I 줄에 속하며, 7이라는 숫자가 들어있는 줄은 B, I 줄에 속한다.
입력된 각 줄에 대해 주어진 판에 들어있는 숫자 총합의 최소 값과 최대 값을 출력한다. 이 두 값은 같은 줄에 출력해야 하며, 두 숫자 사이에는 딱 한 개의 스페이스를 출력한다. 풀이가 없는 경우에는 "NO SOLUTION"이라고 출력해야 한다.
- SummationOfFourPrimes . . . . 5 matches
오일러는 솟수가 숫자 영역에서 무한하다는 가설을 자신의 고전이론으로 증명했다. 모든 수들이 4개의 양의 솟수 합으로 표현될 수 있을까? 답을 알 수는 없다. 답은 느린 386 컴퓨터에서도 돌아갈 수 있기를 원한다. 시간 제한은 펜티엄3 800 컴퓨터를 기준으로 한다. 이 문제에서 솟수의 정의는 "완전한 두 개의 다른 정수로만 나눠 떨어지는 양수"이다. 예를 들어,37은 정수 37과1로만 나눠지는 솟수이다.입력은 한 라인에 하나의 정수N만 포함한다. 여기서 N은 10000000이하의 수이다. 이 수는 4개의 솟수의 합으로 구성될 수 있는 수이다. 입력은 하나의 수만 받는다. 입력 라인에 맞춰, 주어진 조건에 맞는 4개의 솟수를 한 줄에 출력한다. 입력된 수가 솟수 4개의 합으로 표현될 수 없으면"Impossible."이라 출력한다. 답은 여러개가 있을수 있다. 모든 정답을 받아들인다.
- SummationOfFourPrimes/1002 . . . . 5 matches
맨 처음에 문제를 읽고 대략 연습장에 문제에의 각 변수들이 될만한 부분들을 보았다. 일단 소수들의 합이라 하고, 4자리의 합이라고 한다. 대략 pseudo code 를 다음와 같이 작성해보았다.
그리고 소수리스트로부터 4개를 구하는 방법에 대해 생각하다. 맨 처음에 대해서는 중복을 허용하면 안되는 줄 알고 구현하였다. 그러다가 문제에서 중복을 허용한다는 사실을 알고 다시 구현.
스펙상 10000000 값 내에서 4초 이내에 답이 나와야 한다. 이에 대해서 현재의 병목지점에 대해 profiling 을 해 보았다.
소수와 관련하여 좀 더 똑똑하게 검색할 방법이 존재하리라 생각한다.
inlining 을 하지 않았음에도 6.4초대를 기록하였다. inlining 을 하면 5.7초대를 기록한다.
- TestCase . . . . 5 matches
TestCase란 만들고자 하는 대상이 잘 만들어졌다면 무사히 통과할 일련의 작업을 말한다. TestCase는 작성하고자하는 모듈의 내부 구현과 무관하게
원하는 동작을 하는지를 검사하는 것을 그 목적으로 한다.
XP에서 TestCase를 먼저 작성함으로서 프로그래머가 내부 구현에 신경쓰다가 정작 그 원하는 동작(예를 들어, 다른 모듈과의 인터페이스)을 놓칠 위험을 줄여준다. 왜냐하면, 프로그래머는 먼저 만든 TestCase를 통과하는 것을 첫번 목표로 삼을 수 있기 때문이다.
-> Xp 에서 프로그래머는 TestCase 를 통과하는 것을 목표를 삼는다. 그래서 구현이나 디자인에 신경쓰다 원하는 모듈을 오동작으로 이끄는 위험을 줄인다.
- TheGrandDinner . . . . 5 matches
올해 ACM 국제 대회 결선에 참가한 모든 팀은 시상식 후에 있는 대만찬에 참석해야 한다. 서로 다른 팀에 속한 멤버들이 최대한 서로 어울릴 수 있게 하기 위해, 한 테이블에 같은 팀에 속한 멤버가 두 명이상 앉을 수 없도록 했다.
각 팀에 속한 멤버들의 수(경시대회 참가자, 감독, 후보 선수, 참관인 모두 포함)와 각 테이블에 앉을 수 있는 사람 수가 주어졌을 때 처음에 정한 규칙대로 모두 앉을 수 있는지를 결정해야 한다. 규칙대로 앉을 수 있다면, 좌석 배치 방법을 출력한다. 여러 방법으로 배치할 수 있는 경우에는 아무 방법이나 출력해도 된다.
각 테스트 케이스에 대해 좌석을 배치할 수 있으면 1을, 그렇지 않으면 0을 출력한다. 배치가 가능한 경우에는, 그 밑으로 M줄에 걸쳐 좌석 배치를 출력하는데, i번째 줄에는 i번째 팀 멤버들이 앉을 테이블 번호(1에서 N까지)를 출력한다.
- UselessTilePackers . . . . 5 matches
하지만 이렇게 하면 용기 안에 낭비되는 공간이 생긴다. 타일이 주어졌을 때 낭비되는 공간의 비율을 계산해야 한다.
입력 파일은 여러 데이터 블록으로 구성될 수 있다. 각 데이터 블록은 하나씩의 타일을 기술한다. 데이터 블록 첫째 줄에는 타일의 꼭지점의 개수를 나타내는 정수 N(3≤N≤100)이 입력된다. 그 밑으로는 N줄에 걸쳐서 각 꼭지점의 (x,y) 좌표를 나타내는 정수가 두 개씩 입력된다. 이때 x,y는 모두 0 이상 1,000 이하다. 꼭지점은 입력된 순서 그대로 연결된다. 세 개 이상의 동일 직선 상에 있는 점이 연속으로 입력되는 일은 없다.
입력된 각 타일에 대해 출력 예에 나와있는 것과 같은 식으로 타일 번호(1부터 시작)를 출력하고, 그 다음 줄에 "Wasted Space = X %" 형식으로 낭비된 공간의 비율을 퍼센트 단위로 출력한다. X는 낭비된 공간의 비율을 퍼센트로 나타낸 것이며, 소수점 아래로 둘째 자리까지 반올림해서 출력한다.
서로 다른 데이터 블록에 대한 결과 사이에는 빈 줄을 하나씩 출력한다.
- VendingMachine/세연 . . . . 5 matches
cout << "0.종료한다\n";
//자판기의 메뉴를 초기화한다
cout << "원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
- VisualStudio . . . . 5 matches
VisualC++ 6.0은 VS.NET 계열에 비하여 상대적으로 버그가 많다. 가끔 IntelliSense 기능이 안될때가 많으며 클래스뷰도 깨지고, 전체 재 컴파일을 필요로하는 상황도 많이 발생한다. ( 혹시, Debug Mode에서 돌아가다가, Release Mode에서 돌아가지 않는 경우도 있는데 보통 이는 프로그램에서 실수 태반이다. 그러나 간혹 높은 최적화로 인해 돌아가지 않을때도 있을 수 있다. )
VisualAssist 를 사용한다면, Code Re-Parsing 기능을 실행해준다.
C++ 에서는 자바에서의 import 의 명령과 달리 해당 헤더화일에 대한 pre-processor 의 기능으로서 'include' 를 한다. 그러다 보니 해당 클래스나 함수 등에 redefinition 문제가 발생한다. 이를 방지하는 방법으로 하나는 #ifndef - #endif 등의 명령을 쓰는것이고 하나는 pragma once 이다.
단, pragma 전처리기는 de facto라서 정식 표준이 아니다. 따라서 사용에 대해 유의할 필요가 있다.[* pragma는 once외에도 다른 option도 존재한다.]
- WhenJuniorsAsk . . . . 5 matches
''OOP의 장점은 反/非 OOP적 프로그래밍을 해보고 거기서 나름대로 고민해 보았던 사람이 아니라면 '''절대''' 느낄 수 없다고 생각합니다. 기왕 SUN의 프로그래머를 초빙한다면 거기에 관심을 갖고 간절히 듣고 싶어하는 사람들에게 우선권을 주는 게 좋겠다는 이야기죠. 전원 집합 하에 청강한다든가 하는 것 말고요.''
즉 그 선배님께서 후배들이 공감을 갖을 만한 이야기를 할 수 없다는 말이 더 정확하겠습니다.(내가 초보자에게 할 말은 열심히 하란 말 밖에 없다. 아시겠지만, 나쁜 의도의 말이 아닙니다.) 그 선배님께서 신이 아닌 이상 후배들의 마음을 알 수 없을터이고 경험상으로 그런 경향을 보여왔다고 하더라도 훌륭한 "청자"만 존재한다면 "자기만족적"행위가 나쁘다고 생각하지 않습니다. (자원봉사 같은 신성한 일도 행하는 사람의 입장에서는 "자기만족적"행위라고 생각합니다.)
굳이 겉멋이라고 하더라도 전체적으로 플러스 효과만 발휘한다면, 저는 괜찮다고 생각합니다. 근래에 나온 영화 "뷰티플 마인드"의 주인공 존 내쉬도 자신을 돋보이게 하기 위하여 어려운 수학 문제들에 매달렸다고 합니다. (누군가 이 문제를 한번 풀어보겠냐고 물어보면, 존 내쉬는 그것이 정말 어려운 문제인가? 그것을 풀었을 때, 사회적 반향을 먼저 주위 사람들에게 물어보았다고 합니다.) 이러한 예는 역사 속에서도 많이 찾아볼 수 있다고 생각합니다. (영화 "쉰들러 리스트"에서도 그러하죠.) "자기만족적"행위가 시간이 많이 흐른 후, 설혹 나쁜 결과를 얻어 낸다고 하더라도 경제적인 측면에서 보더라도 "이타주의적"행위를 하는 사람은 극히 소수에 불과하기 때문에, 무엇을 얻고자 하는 다수의 사람의 수요를 충족시킬 수 없습니다. 이런한 관점에서는 그 소수를 기다리는 것보다는 다수("이타주의적"행위를 하는 사람과 비교해서)의 "자기만족적"행위자에게서도 공급을 얻는 것이 더 합리적이라고 생각합니다.
''저는 "고민하고 있는 학생"들이라면, 제 시간과 사정이 되는대로 도움을 드리고 싶습니다. 그리고, 꼭 어떤 강연의 형태를 띄거나 물어보아야만 가르쳐주는 그런 것이 아니고, 그 사람들이 눈을 뜨고 뭔가 찾을 때, 혹은 이리 저리 지나치다가 한번 보고 관심이 가면 뛰어들어서 연구할수 있는, 좋은 자료 구성에도 신경을 쓰고 있습니다. 즉 듣기 원하는 사람에게 더 많은 적극성이 요구되는 형태가 바람직하다고 생각합니다. --김창준''
- WinampPlugin을이용한프로그래밍 . . . . 5 matches
winamp 의 경우 다양한 plugin 를 지원한다.
input plugin은 해당 화일을 읽어드리고 output plugin 으로의 출력을 소스를 제공한다. output plugin 은 출력 소스를 사운드카드나 하드 디스크로의 출력을 관장한다. 이 중간에 DSP 와 Visual plugin 이 callback 으로 결과물을 받은뒤 변수들을 이용한다.
printf ("%s \n", in->FileExtensions); // 해당 플러그인이 지원하는 확장자가 나옴.
- ZeroPageServer/CVS계정 . . . . 5 matches
1. 원하는 Id와 원하는 password 를 받는다.
* 신청자가 password 노출을 꺼릴때는 ~root/cryptout.pl 을 복사해 주고, telnet 상에서 암호화된 암호 문자열을 달라고 요청한다.
* <!> passwd 파일의 마지막에는 항상 빈줄이 들어가야 한다.
1. [Eclipse]나 여타 CVS 클라이언트로 접속해서 확인한다.
- i++VS++i . . . . 5 matches
// 컴파일러는 내부적으로 operator++(0)을 호출한다.
++i, 나 i++ 둘다 상관 없는 상황이라면, ++i에 습관을 들이자, 위의 연산자 재정의는 [STL]을 사용한다면 일반적인 경우이다. 후위 연산자가 구현된 Iterator는 모두 객체를 복사하는 과정을 거친다. 컴파일러단에서 Iterator 의 복사를 최적화 할수 있는 가능성에서는 보장할 수 없다. 따라서, 다음과 같은 경우
물론 '''특정''' 컴파일러라는 것이 언제나 명시되어야 한다. 일반화는 일반적으로 옳지 않다.
동일한 기능에 쓴다면, ++i 에 습관을 들이는 것을 추천한다. [STL]같은 연산자 재정의 라이브러리 때문 --NeoCoin
현재 자료를 찍고, 다음 자료로 카운팅을 하려 한다.
- joosama . . . . 5 matches
그러므로 당연히 일본에서 교육을 받고 자라나는 국민들은 독도가 일본영토라고 생각한다.
왜냐하면 하루라도 빨리 돈을 받아내어 한다는 강박관념에 시달리고 있었기 때문이었다.
우리가 독도 문제를 강력히 제기하여 우리의 영토라는 것을 세계 만방에 공포를 한다하더라도 하등의 지장이없다.
왜냐하면, 국제 사법재판소에 재소를 하게 되면 양쪽의 당사국들은 결론이 날때까지 문제의 영토에서 물러나야한다.
주사마.... 그는 누구인가? 그의 실체가 궁금하다. 우리는 이제 그의 실체를 파헤쳐 보고자 한다. -- [문보창]
- pragma . . . . 5 matches
C 와 C++ 을 구현한 각각의 컴파일러에는 포팅된 하드웨어나 OS 에 의존적인 몇몇가지들의 기능을 가지고 있다. 일례로 몇몇의 프로그램들은 메모리에 데이터가 어떠한 방식으로 자리잡을 것인지 에 관한 문제나 함수가 파라미터들을 조작하는 방법들에 대한 세밀한 조작이 요구된다. #pragma 지시어들은 C 와 C++ 언어 안에서 최소한의 호환성을 유지시키며 그러한 시스템 의존적인 명령어들을 언어의 기능으로서 포함시키는 일을 한다. Pragma 지시어들은 일반적으로 '''컴파일러들 마다 서로 다르다'''.
map에서 나는 경고는 번호 C4786번과 C4788번(identifier가 너무 길어서 나타나는 경고라고 한다) 단 2개 뿐임을 알았고, 결국 소스의 맨 윗줄에
하지만, 이러한 경고는 Visual C++ 6.0 에서만 유효한것이고, VS.NET 부터 추가 세팅이 필요 없다. VC++ 6.0 에서는 map은 물론 STLPort 나, [Boost] 사용하는 것을 권장하지 않는다. 더 이상 MS 측의 컴파일러 기술 지원이 없으므로, VS.NET 이상 버전을 사용해야 한다.
#pragma comment(lib, "d3dx9") // dx9.lib 파일을 링크시 포함한다.
#pragma once // 이 파일은 한번만 열리게 한다.
- 간단한C언어문제 . . . . 5 matches
특정 컴파일러에 종속적인 프로그래밍은 좋지 않습니다. C90이라는 표준이 엄연히 존재하니까요. 특정 구현에 종속적인 프로그래밍을 한다고 하더라도, 프로그램의 심장은 표준에 따라 프로그래밍 하는게 좋습니다.
안옳다. f가 아니고 s여야한다. -[정수민]
옳다. ,의 앞은 비교문이 아니라 선행 수행으로 처리한다. - [이영호]
안옳다. 단순히 포인터만 존재한다. -[정수민]
옳지 않다. static은 C++의 private와 비슷하다. 한 파일이나 특정 로컬함수에서만 쓰인다는 것을 표현한다. - [이영호]
- 갓헌내기C,C++스터디 . . . . 5 matches
* 간지나는 선배가 되기위해 지금까지 배웠던것을 복습하는 시간을 가졌으면 한다.
* 이미 알고있는 지식과 결합하여서 2학년때 배울 자료구조에대한 선수학습을 진행하려고 한다.
* 전체 회의수가 방학기간의 1/7 이상이 되어야한다. 그렇지않으면 스터디를 폐쇄한다.
* 이주일이상 모임이 없을경우 스터디를 폐쇄한다..
- 기억 . . . . 5 matches
우리가 어느 순간에 떠오르는 기억들을 단기 기억이라 할수 있다. 다른 말로, 작동 기억이라고도 한다. 현재 우리의 머릿속에 활성화된 기억을 의미한다.
* Miller(1956)는 단기 기억 저장 공간을 7+-2 즉, 5~9로 라고 하여, 이를 magic number 7이라고 한다. 이 원리는 전화 번호나 우리가 알파벳을 외울때 사용된다.
1. 연속적 주사( successive scanning ) 로 인출 한다.(순차적 인출)
* Sternberg(1966 ) : 숫자 제시후 조금 지난후 실험자에게 제시 숫자가 이전 제시 숫자 항목에 포함되었는가 확인, 한 항목 증가시마다 40msec씩 증가한다.
- 네이버지식in . . . . 5 matches
가장 먼저 떠오른 건, 이용자 수였다. 이용자 수가 엄청나게 많다는 점이 지식in서비스를 활발하게 해 주었다. 이용자 수가 많아진 이유는 여러 가지가 있겠지만, 텔레비전 광고까지 낼 정도로 홍보를 해서 그렇지 않을까? 반면 위키 홍보는 몇 번인가 하고는 그 뒤로는 사람들이 알아서 쓰기를 바랬던 것으로 보인다. 알려지지 않은 서비스가 아무리 많은 장점이 있다 한들 사람들이 알아야 쓸테니까, 위키 사용이 활발하지 않은 건 일단 덜 알려져서라고 생각한다.
- 현재는 독점 시장을 형성하고 있습니다. 하지만 그 과정을 살펴보면 MS 사의 윈도우즈가 뛰어난 성능과 기능을 가져서 독점했다고 보기는 힘듭니다. 객관적, 주관적, 전문가의 분석 어떤점으로 보나 윈도우즈보다 뛰어난 운영체제는 언제나 존재해왔습니다.(물론 지금도 존재합니다.) 하지만 사람들은 이미 익숙해져버린 윈도우를 버리고(월등히 뛰어나지는 않지만 그렇다고 절대적 성능이 떨어지는것도 아니니) 다른 운영체제를 택한다는건 '모험'을 넘어서 '도박'에 가깝다고 느껴지게 됩니다. 그러므로써 그러한 모험 내지 도박은 말씀드렸던 낯설음,생소함등으로 이어지게 되고, 자연스레 다른 OS 들은 설자리를 잃어버리게 됩니다. 단순히 결과만을 놓고 보았을때 말씀하신 독점시장이 맞습니다만, 제가 말씀드리고자 했던 요지는 그 과정속에서 찾을수 있었던 '익숙함'이었습니다.
''말씀하신 익숙함의 의미를 제가 독점으로 바라봐서 생기는 오해인것 같습니다. 분명 청정원 케찹도 있지만 오뚜기 케찹을 선택하고 많이 팔리는 것을 '익숙함'으로 볼수 있습니다. 하지만 오뚜기 케찹을 쓰지 않으면 모든 요리를 할수 없는 상황이 되면 그걸 이제 '익숙함'이라고 설명하기보다 독점으로 바라봐야 한다고 생각하거든요. :) --NeoCoin''
또하나 '보상과 동기부여' 라는 차원의 면에서 생각해 본다면, 네이버는 이미 매체를 통해 어느정도 인지도를 쌓은 후에 그 인지도를 십분 활용하여 '보상과 동기부여'를 제공합니다. 네이버와 위키의 공통점은 참여의 제한이 없습니다. 대부분의 집단에서 파워라는것이 '제한과 배제'에서 나온다고 하셨지만, 네이버의 지식인 '제한과 배제'라기 보다는 '노력(실력)에 따른 보상'이라는 자본주의 정신과 일맥상통한다고 봅니다. '보상과 동기부여' 이것이 네이버와 위키의 가장 큰 차이점이라 생각합니다.
야후에서 위키서비스를 한다는군요. 서비스업체로서의 '위키'라는 이름을 걸고 서비스를 시도하는 건 처음이 아닐까 생각이 드네요. --[1002]
- 데블스캠프2002/날적이 . . . . 5 matches
* Scenario Driven 관계상 중간중간 실제 프로그램 구현시 어떻게 할것인가를 자주 언급되었다. 'What' 과 'How' 의 분리면에서는 두 사고과정이 왕복되는 점에서 효율성이 떨어진다고 생각한다.
* [영동] : 처음엔 남훈이 형의 세미나를 들었습니다. 제가 컴퓨터에 대해 거의 모르는 터라 처음 보는 용어가 너무 많았습니다. 그래서 그런지 "A는 어떤 어떤 일을 한다..."는 설명을 들으면 A가 어디에 속한 건지 혼란이 온달까... 그래도 나중에 동영상을 보니 그럭저럭 이해가 되는 것 같습니다. 남훈이 형 수고 많이 하셨습니다. 나중에 목소리 잘 안 나오는 거 보고 참 감사하다고 생각했습니다. 그리고 세미나가 끝나고 드디어 객체지향 프로그래밍으로 랜덤워크(스케쥴드워크로 개명됨)를 짜게 되었습니다. 어제 고민되던 문법은 의외로(?) 간단하더군요. 아직 구체적으로 들어간 게 없어서 그런가? 프로그래밍을 하는데 초반에는 5분에 한번씩 키보드를 파트너에게 넘기는 룰이 있었으나 후반엔 버그에 서로 정신이 팔려 그 규칙을 잊어버리고 거의 파트너였던 재니가 거의 짠 거 같습니다... 하여간 여기서 어려운 것은 전달인자를 넘기는 것이었습니다. 넘길 때 자꾸 변수 이름이 혼란스럽다는 것. 그리고 처음에 작성한 추상적으로 보이던 OOP 디자인. 여기서 프로그램을 이끌어 낼 수 있다는 것이 놀라웠습니다. 물론 그 이끌어 내는 과정이 너무 어렵다는 것이 문제지요. 또 한가지 놀라운 것은 확실히 객체지향 프로그래밍을 쓰면 코드의 길이가 확실히 줄어든다는 것이었습니다. 마지막으로... 세미나 준비하시고 프로그래밍 도와주신 선배님들 정말 감사합니다.
* 첫번째 문제에 대한 조언을 한다면, 그 route 입력값을, 캐릭터(문자)로 볼것인지 스트링(문자열)으로 볼 것인지 에 관한 문제 같군요. 아마 어제 들은 얘기로 볼 때, 하나 하나의 이동 명령이란 개념에만 매달린 나머지 그걸 따로따로의 문자의 합으로 본거 같은데, 거기서 그 개념에 얽매이지 말고 문자열로 개념을 확장시켰다면 수월했을겁니다. -["zennith"]
* 동기) 으아 == 를 = 로써서 엄청나게 오래 삽질을 했네요.. ㅠ.ㅠ 그리고 오버플로우를 생각안해서 ... 알고리즘이 틀리지 않아도 무리가는 점이 없는지 꼼꼼이 살펴봐야한다는.. 하노이의 탑 알고리즘은 도저히 생각나지 않군요..
다들 피곤하실텐데 수고 많았습니다. 잘 가르쳐 주신 선배들도 넘 고맙구요 나두 광식이 오빠 너무너무 특히 고마웠어요~ 이말은 ㅡ.ㅡ;;;;; 오늘 밤 낼도 많이 부탁한다는 소리 ㅡ.ㅡ;;;;; 오빠 때문에 프로그램짜는거 넘 많이 도움이 된것 같아요. 사소한것 까지 화 안내시구 다 들어주신거 넘 고마워요 감격감격 ㅠ.ㅠ 앙~ 마방진 못끝낸게 너무 아쉬워요 머리속에서는 돌아가는듯 하면서도 안돌아가구 손가락은 움직이지두 않구 자다가 놀러 가야 하기 때문에 이제 일어 났어요 아마 녹초가 되지 않을까 오늘밤에는... 그럼 난중 봐요 다들 ^0^ 뺘뺘 ^^/
- 데블스캠프2004/목요일후기 . . . . 5 matches
* 3학년(?)이 되었으니 후배들에게 뭔가 남겨줘야 한다고 생각하고 시작하게된 세미나였는데, 후배들이 잘 알아들었을지 모르겠네요.
* '문제는 내는 사람이 재밌는 걸 해야한다'는 말을 제대로 실감했다.
* 최종 확인 결과 VC++ 6.0 라이브러리의 버그다. VisualStudioDotNet 계열은 정상 동작을한다.
* 신입생들이 푼 연습문제페이지는 제가 페이지를 정리해 놓겠습니다. 자잘한 준비를 미리 해야 한다.
* 우리는 청자들에게 끊임없이 공유 비전을 공감 시켜야 한다. 공감하지 못하고 실종(?) 된다면 우리와 함께 하는 것이 아니고 뭐랄까, 하고자 하는 생각이 없다는 표현이 맞을까? --NeoCoin
- 데블스캠프2005/Python . . . . 5 matches
* dir() : 인수에 객체를 전달하면 객체 내에서 사용할 수 있는 함수 리스트를 리턴한다.
임의의 객체를 저장하는 자료형. 순서를 가지고 순서에 의해 접근 가능. 객체의 변경이 불가능한다.
임의의 객체를 저장하는 자료형. 순서가 있고 순서에 의해(index) 접근 가능. 객체의 변경이 가능한다.
임의의 객체 저장. 자료의 순서를 갖지 않는다. 키(key)를 이용해 값(value)에 접근한다.
내부적으로 해쉬(hash)를 이용하여 자료를 저장한다. 빠른 속도로 자료를 찾을 수 있다.
- 데블스캠프2005/화요일후기 . . . . 5 matches
[윤성복] - 데캠을 참가한지 언 2일, 이제는 아침에 맞는 해가 지겹다. 앞으로 3번에 해를 더 봐야 한다.
좋았던 점은 파이선이라는 새로운 프로그램과 하노이라는 간단하면서 어려운 문제를 해결해 나가는데에서 더욱더 나 자신을 발전시킬수 있었다. 그리고 선배님과 많은 상의를 해보면서 선배도 우리를 잘 가르쳐주시고 우리는 선배님의 지식을 습득해 가면서 정말 좋은 시간이 되었다. 밤을 새가면서 공부를 한다는 것은 그것만으로도 아주 커다란 성취감을 갖게 한다. 나쁜점은 아무래도 밤이라서 잠과의 싸움이 가장 큰 문제이다. 밤이라서 집중이 잘 안되는 건 어쩔수 없다. 밤을 새가면서 공부를 한다는건 참으로 어려운 일이다.
[조현태] : 길찾는 알고리즘, 예제가 15*15가 아니라 고생한 것이 아쉬웠다. 하지만, 알고리즘에 대해 느낀바가 많았고, 새로운 언어 파이썬도 뭔가 독특했다. 인터프리터 언어라니..ㅎㅎ 그렇지만, 역시 고생한 탓인지 왠지 잠이 더 쏟아져 내리는 하루였다. 마지막으로 이런 강의를 준비하느라 고생하신 강의자 분들께 많은 감사를 표한다.
- 데블스캠프2009/금요일후기 . . . . 5 matches
* [김준석] - 이외수씨는 얘기했다. 세상에 답을 알기는 쉬워도 답을 실천하기는 어렵다고. '반성','반복','목표'. 인간개발에 대해 얘기를 할때 능력을 단련시키는데는 이 단어들은 빠지지 않는 '답'인듯하다. 그래프를 그려 사람 능력 발전정도에 대해 얘기해주실때 개발자가 1차 목표인 나에게 좀더 현실감 있게 다가왔다. 사람 심리에서 나누는 상위의 욕구(명예욕, 과시욕)에 자극되는것이 아니라 내가 앞으로 살아가는데 필요한 밥을먹고 옷을입고 자는 '생존'의 욕구를 건들여 절실해졌달까? 비록 내가 최종 목표가 아닌 1차 목표(10년)으로 개발자를 생각했다고 했다지만 능력 개발에 매달리지 않으면 왠지 '평범'하거나 '떨어져나가는'그런 개발자가 되는 미래가 피부에 와닫는 느낌은 서늘하면서 뒤쳐진다는 생각에 분함을 느꼇다. 그런 내 미래에 대해 생각한다면 무언가 내가 해야한다고 생각하지만 달없는 밤길을 걷듣이 앞이 보이지 않는 길을 걷는것 같은 느낌. 생각으로는 어딘가를 가야한다 생각하는데 보이지 않아 어디로 가야할지 모르는 그런 망설임. 그때 앞길을 밝혀줄 불빛이 필요하듯 좀더 다양한 공부 경험과 그것을 반성,반복,목표하는 자세가 필요하다고 생각한다. '철학','수학','소통','작문'등의 아주 기본적인것에 대해 좀더 한번 생각을해보고 태도를 고쳐보는것도 필요하게 되었다. 또 한가지 나한테 아쉬운 점이라면 아직 군인 신분이라고 정확한 목표를 세워놓지 않아서 그것에 대한 조언을 여쭈지 못했다는것이 아쉬웠다. 후에 메일로 상담신청 고?
* [송지원] - 감동의 물결, '선배님은 역시 다르구나!'를 확확 느꼈다. 나의 평생 직업을 찾기 위해 노력한다고는 했지만 정작 나는 학술회 잡지나 논문에는 손대본적도 없다. 사실 도서관에서 그걸 공짜로 빌려준다는걸 모르고 있진 않았는데 말이다. 모르는 것보다 알면서 안하는게 더 나쁜건데.. 삽질을 적게 하는 방법 세미나에서는 역시 정형화된 발상과 안일한 마음가짐으로는 성공할 수 없구나 라는걸 실감했고, 제로페이지는 이래서 대단한 곳이구나 하는 것도 느꼈다.
- 데블스캠프2010/둘째날/후기 . . . . 5 matches
* 일반적으로 C 프로그래밍은 자신이 아는 출력(또는 원하는 출력)을 위해서 구조를 짜는데 PROLOG는 중간만 만들어 놓으면 답이 알아서 나온다는 상당히 특이한 구조를 가지고 있어서 꽤 신기했습니다. 근데 이건 좀 편견일지도 모르겠지만 어째 이건 뭘 만들기보다는 연구하기 위한 언어가 아닌가 싶네요. - [서민관]
* 오랫만에 만져보는 C++이어서 그런지 처음에는 뭘 해야할지 패닉상태였어요ㅠ그래도 만지다 보니 어떻게 원하는대로는 짜여져서 좋았어요ㅎ방학때 C나 다시 공부해봐야겠네요ㅋㅋㅋ - [허준]
* 자료구조 프로젝트로 SDL을 사용해서 게임 수정을 해봤는데, 또 SDL을 보게 될 줄이야.. SDL 시간이었지만, 느낀건 역시 IDE는 잘 선택해야 한다는 것... 이클립스, 넷빈즈, 비쥬얼 스튜디오 등 많은 사람들이 사용하는 IDE끼리도 같은 소스를 충돌나게 하는걸 보면서 참 황당했다-_-;; - [박성현]
* 1학년 여름방학때부터 반복적으로 들었던 내용인데 (당연한 말이지만) 처음 비슷한 내용을 들었을 때보다 지금이 훨씬 이해가 잘 된다. 1학년때부터 이런 이야기를 들었기 때문에 비록 바로 이해하고 적용시킬 수는 없었지만 그래도 학교 과제 등을 하면서 한번 더 생각해 볼 수 있었던 것 같다. 지금 1학년 후배들도 처음 들어선 잘 이해가 안 갈 수 있겠지만 이 강의를 들어본 것이 앞으로 생각하는 방향에 많은 영향을 주지 않을까 생각한다. 강사가 원래 세미나를 딱히 지루하게 하는 사람은 아닌데 어제 축구때문에 다들 너무 상태가 안 좋았던 것 같은 점이 아쉽다. - [김수경]
* 단일 변화로 인한 수정이 발생했을 떄를 미리 예상하고 프로그래밍한다 - [윤종하]
- 데블스캠프2010/회의록 . . . . 5 matches
* (강사후기)원래 취지가 코딩이였음. 새내기들도 class정 도는 알아야 한다는 생각에 class를 대략적으로 설명한거였음. 10분마다 코더 교체의 룰이 지켜지지 않아 아쉬웠음.
* 블리자드에 취직해 데블스캠프 강의를 한다. -[김준영]
* svn을 사용해 프로젝트를 진행한다. -[남상혁] 학우
* RUR-PLE과 비슷한 카렐을 배워서 사람들에게 소개한다. -[윤종하] 학우
* 위의 내용을 [김수경] 학우가 진행한다.
- 마이포지셔닝 . . . . 5 matches
* 이책은 글로벌CEO 특강에서 스파이렉스 사코사의 박인순 사장님이 아주 아주 강력하게 추천해서 정현이와 공동 구매 해서 샀다. 아직 도서관에는 안 들어 왔는데 지금 우선 신청은 해놓은 상태다. 우선 전체적인 느낌은 보통의 성공학, 자기계발서는 어찌 좀 뜬구름 잡는듯한 내용도 많았는데 이책은 아주 현실적으로 접근하고 있다. 처세서, 성공학 같은 책중에서 이책이 가장 솔직하고 정확하게 그 길을 제시해주는거 같다. 저런 책에 관심이 있다면 이 책을 꼭 읽어 보는게 좋다. 누군가와 협력하고, 누군가의 장점을 알아볼수 있고, 좋은 아이디어를 알아볼수 있는 능력이 정말 핵심인거 같다. 그리고 혼자 잘나서 다 할수 있다는 생각을 가지면 절대 안되고, 자신이 올라탈 말이 있어야 한다. 그리고 2막은 없다는 이야기가 있는데 1막에서 성공하였다고 해서, 그 똑같은 일을 그 회사 나와서 다시 다른 회사 차려서 해서 성공하는 경우는 거의 없다. 그것은 자기 자신이 시기를 잘 만나서 성공한게 아니라 자기가 잘나서 성공한거라는것을 대중에게 보여주고자 하는 자아 때문인데, 그런 자아를 가지고서 다시 성공할 수도 없다. '수로부여'라고 자신이 한번 잘되었던 일이 있으면 계속 그런식으로 일을 하는것을 말하는 특성이 있는데, 두번째로 할때도 첫번째것이 성공하였다고 그런식으로 똑같이 해서 어떤 경쟁력도 생길수 없다.
* 이책에서는 자기 혼자서는 아무것도 할수 없다고 한다. 그리고 우리가 보통 믿고 있는것과 같이 아주 죽으라고 공부하고 일만해서 성공할 확률은 1%정도밖에 안된다고 한다. 확실히 맞는말 같다. 우리는 무조건 공부만 열심히 하면 될꺼라는 생각을 주입받았지만 그렇게 해서 성공하는건 정말 1%도 안될 정도로 힘들다고 본다. 뭐 어느정도 안정된 생활은 가능할지도 모르겠다.
* 그리고 '일하는 능력'보다 '눈에 띄는 능력'이 더 중요하다고 한다. 그래서 최대한 CEO 근처에 있으라고 한다.
- 메모장 . . . . 5 matches
인지부조화 : 행동과 태도가 일치하지 않는 부조화가 발생하면 일관성을 지키기 위해 부조화를 해소하려 한다. 행동은 이미 저질렀기 때문에 태도를 바꿔야 한다.
행동을 먼저 변화시켜서 태도를 바꾸게 되는 경우가 있다. 일단 저지르고 나서(행동) 태도의 변화를 꾀한다.
오늘 할일, 앞으로의 계획, 반성, 숙제, 공부 등등.. 이세상 모든것을 머리속으로 생각한다. 정신이 산만해서인지 한 분야를 생각하다가 미해결로 남겨두고 다른 상상을 한다. 종이에 나의 생각을 표현해보자. 차분히 정리해보면 길이 보일것이다. 내가 해야지, 누가 관리하냐
- 상협/100문100답 . . . . 5 matches
49.사랑하는 이가 배신을 한다면?*..*..*━☞
마음만 통한다면 상관없다
해소 안한다. -_-
사회나 지금까지의 관습등이 우리에게 어떻게 어떻게 해야 한다는
86.내일 지구가 멸망한다면*..*..*━☞
- 새싹교실/2012/AClass/5회차 . . . . 5 matches
-이진 탐색은 제어검색에서 가장 대표적인 방법으로 한번 비교동작이 끝난 후 그 결과를 이용하여 다음에 비교할 대상을 선택하는 방법으로 검색한다. 주어진 파일들을 일정한 순서대로 배열된 상태에서 원하는 값을 검색하는 방법이다.
* 한번 비교 동작이 끝난 후, 그 결과를 이용하여 다음에 비교할 대상(K<Ki)을 선택하는 방법으로 검색한다.
* 주어진 파일들은 일정한 순서대로 배열된 상태에서 원하는 값을 검색하는 방법이다
정렬이 되있지 않은 데이터들을 이진탐색을 하면 데이터를 찾지 못한다.
- 새싹교실/2012/startLine . . . . 5 matches
* 처음에 간단하게 재현, 성훈이의 함수에 대한 지식을 확인했다. 그 후에 swap 함수를 만들어 보고 실행시의 문제점에 대해서 이야기를 했다. 함수가 실제로 인자를 그대로 전달하지 않고 값을 복사한다는 것을 이야기 한 후에 포인터에 대한 이야기로 들어갔다. 개인적으로 새싹을 시작하기 전에 가장 고민했던 부분이 포인터를 어떤 타이밍에 넣는가였는데, 아무래도 call-by-value의 문제점에 대해서 이야기를 하면서 포인터를 꺼내는 것이 가장 효과적이지 않을까 싶다. 그 후에는 주로 그림을 통해서 프로그램 실행시 메모리 구조가 어떻게 되는지에 대해서 설명을 하고 포인터 변수를 통해 주소값을 넘기는 방법(call-by-reference)을 이야기했다. 그리고 malloc을 이용해서 메모리를 할당하는 것과 배열과 포인터의 관계에 대해서도 다루었다. 개인적인 느낌으로는 재현이는 약간 표현이 소극적인 것 같아서 정확히 어느 정도 내용을 이해했는지 알기가 어려운 느낌이 있다. 최대한 메모리 구조를 그림으로 알기 쉽게 표현했다고 생각하는데, 그래도 정확한 이해도를 알기 위해서는 연습문제 등이 필요하지 않을까 싶다. 성훈이는 C언어 자체 외에도 이런저런 부분에서 질문이 많았는데 아무래도 C언어 아래 부분쪽에 흥미가 좀 있는 것 같다. 그리고 아무래도 예제를 좀 더 구해야 하지 않을까 하는 생각이 든다. - [서민관]
* 포인터 변수에 값을 주어 초기화 하려면 어떻게 해야 하는가(malloc 함수의 사용)와 메모리 해제(free 함수)에 대한 이야기를 했다. 그리고 배열과 포인터에 대한 이야기를 했는데, 배열도 결국 연속된 메모리를 잡는다는 점에서 포인터와 같고 값의 참조도 포인터 변수와 똑같이 할 수 있다는 것을 다뤘다. 그 후에는 포인터 변수(배열)를 인자로 받는 함수를 만드는 법을 배우고, 배열을 인자로 받을 때는 반드시 길이를 관리해줘야 한다는 이야기를 했다. - [서민관]
* 포인터 2회차. 포인터 변수에 대해서 잠깐 리뷰를 하고 그 후에 구조체와 typedef에 대해서 다루었다. 그리고 구조체를 인자로 받는 함수에 대해서도 다루었다. 그 후에 typedef int* SOMETHING이라는 표현을 써서 이중 포인터에 대해서 이야기를 해 봤는데, 이쪽은 역시 약간 난이도가 있는 것 같다. 특히 int **twoDim에서 twoDim[0]에 다시 malloc을 해 줘야 한다는 부분이 어려운 것 같다. 차근차근 해보자. 개인적으로 성훈이가 가르친 부분들을 잘 따라오려고 한다는 것을 (*s).age에서 느꼈다. ->연산자가 아니라 *연산자 후에 .연산자로 내용물을 참조한다는 것은 나름대로 메모리의 구조를 생각하려고 애를 썼다는 얘기다. 좀 고마웠다. - [서민관]
- 서지혜 . . . . 5 matches
* 매일매일 강박증에 걸린 것 처럼 쓸고 닦아야 한다.
* 생활한다는 것은 이 세상에서 가장 드문 일이다. 대다수의 사람들은 존재하고 있을 뿐이다.
* 스티븐킹이 러브크래프트가 대인관계 서툰 사람이라 작내에서도 인물간의 대화가 얄팍하다는 식으로 깠다고 한다. 난 못느꼈는데,, 아 인물간의 대화보다 묘사가 더 많아서 몰랐군. - 2016.03
* 논문을 읽고 BigTable을 분석하여 아키텍처를 설계한다.
* 구현까지 한다면 금상첨화
- 손동일/TelephoneBook . . . . 5 matches
void save(); // 적은 내용들을 파일에 저장한다.
void TelephoneBook::save() // 적은 내용들을 파일에 저장한다.
if(!strcmp(compare, compare2)) // 두개가 같다면 0을 리턴한다.
if(!strcmp(compare, compare3)) // 두개가 같다면 0을 리턴한다.
if(!strcmp(compare, compare4)) // 두개가 같다면 0을 리턴한다.
- 쓰레드에관한잡담 . . . . 5 matches
여기서 time-sharing 을 설명한다.
Linux에서는 크게 두가지의 thread를 지원한다.
Linux에서 멀티 프로세스 개념인 fork()는 내부적으로 do_fork()란 Kernel 함수를 호출하며, do_fork()는 내부적으로 user thread인 POSIX기반의 Mutex를 사용한다.
... 그리고... 한가지... POSIX thread를 사용하여 많은 양의 thread를 생성하면 동기화를 주목해야한다.
설계가 관건이다. 설계를 잘해야한다. 사소한 실수라도 하면 끝이다.
- 전문가의명암 . . . . 5 matches
전문가가 된다는 것에는 밝음과 어두움의 두 측면이 공존한다.
전문가라는 것은 한가지 방면에 도가 텄다는 것을 말한다. 여기서 말하는 "도"라는 것은 장인(craftsman)의 의미를 내포한다. 그 유명한 미야모토무사시가 무엇때문에 하산하자마자 좌절하고 다시 입산했던가. 기름장수가 쳐다보지도 않고 기름을 퐁퐁 공중으로 날려 호리병에 넣는 모습을 보고 그는 충격을 먹었다. 그 기름장수는 분명 전문가였다.
그 밝음 때문에 그림자가 생긴다. NoSmok:장점에서오는단점''''''인 셈이다. 어떤 작업을 하는 데 주의를 덜 기울이고 지력을 덜 씀으로 인해 전문가는 자기 작업에 대한 타자화가 불가능하다. NoSmok:TunnelVision''''''이고 NoSmok:YouSeeWhatYouWantToSee''''''인 것이다. 자신의 무한 루프 속에 빠져있게 된다. 자신의 작업을 다른 각도에서 보는 것이 어렵다 못해 거의 불가능하다. 고로 혁신적인 발전이 없고 어처구니 없는 실수(NoSmok:RidiculousSimplicity'''''')를 발견하지 못하기도 한다.
진정한 전문가는 자신의 이러한 밝음과 어두움의 두 측면을 깨닫고 있어야 한다.
- 정규표현식/소프트웨어 . . . . 5 matches
* 정규표현식을 지원하는 소프트웨어와 간단한 사용법을 정리 한다.
* 에디트 플러스도 정규식을 지원한다.
* grep, find 에서 regex를 지원한다.
* '/' 를 누르면 정규표현식 모드가 된다고 한다.
- 정모/2004.11.16 . . . . 5 matches
정기적으로 모인다 : 한달에 한번은 지나치게 많은 발표자인해, 듣는 사람들이 기다리다 지치게 될 수도 있다. 수시로 소집한다는, 말이 쉽지 참여도가 떨어질가능성이 많다.
발표자는 발표 주제에대한 제목정도를 미리 공지한다.: 자신이 관심이 있는 주제에 대해서 발표를 한다면 평소에 오지 않았던 회원들에게도 오고자하는 동기부여가 되지는 않을까요??
- 뭔가 한다.
* 우수회원을 선정한다.
- 정모/2011.4.11 . . . . 5 matches
* 나에 대한 세 가지를 말하되 두 가지는 진실, 한 가지는 거짓으로 말한다.
* [HolubOnPatterns]를 읽으면서 스터디하고 DB 프로젝트를 통해 실습한다.
* 그 날의 정모를 처음부터 끝까지 자기가 원하는대로 진행해볼 수 있는 퍼실리테이터를 신청받습니다. 관심있는분은 홈페이지 자유게시판에 글을 남기거나 회장에게 연락주세요.
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 11학번이 참석하는 정모를 처음으로 구경했습니다. 근데 새내기들을 보는거 같지가 않았어요. 왜 이렇게 친근한 놈들이 많은지 모르겠어요. 전 진짜 11학번들과 친한 좋은 선배인가 봐요. 앞으로 더 잘해야겠어요. 그리고 학생회를 하느라 정모를 못 나간 동안 프로젝트와 스터디가 많이 진행됐네요. 저도 참여하고 싶지만 프로그래밍 경진대회와 전시회 잘 준비하겠습니다. ACM 스터디 하시는 분들을 위해 김대원 교수님과 열심히 얘기하고 있고 저 나름대로도 생각 많이 하고 잇으니까 zp 활동 열심히 못한다고 기뻐하지 말아주세요. 그리고 다음주 소풍 갈 땐 맥주사가죠 - [윤종하]
- 정모/2012.3.12 . . . . 5 matches
* 전시회 홍보, 동아리 방 설명에 이어서 OMS가 상당히 인상 깊었던 정모였습니다. 제목만 보고도 그 주제를 고르신 이유를 바로 알았습니다. 전체적으로 Type, Type Safety, Java Generics에 대해서 상당히 깊이 다루지 않았나 싶네요. 사실 제네릭스 모양이 C++의 템플릿과 비슷하게 생겨서 같은 것이라고 생각하고 있었는데 이건 확실히 '만들어진 이유가 다르다'고 할 만 하군요. 그리고 마지막에 이야기했던 Type Erasure는 제네릭스를 구현할 때 JVM 레벨에서 구현하지 않고 컴파일러 부분에서 처리를 하도록 했기 때문에 타입이 지워지는 거라는 얘기를 들었는데 맞는지 모르겠군요. 이거 때문에 제네릭스 마음에 안 들어하는 사람들도 있는 모양이던데. 중간에 이 부분에 대한 개선이 이루어지고 있다는 말씀을 잠깐 하셨는데 컴파일 이후에도 타입 정보가 사라지지 않도록 스펙을 수정하고 있는 건가요? 좀 궁금하군요. 여담이지만 이번에 꽤 인상깊게 들었던 부분은 예상외로 Data Type에 대한 부분이었습니다. 이걸 제가 1학년 여름방학 때 C++ 스터디를 한다고 수경 선배한테 들은 기억이 지금도 나는데, 그 때는 Type이 가능한 연산을 정의한다는 말이 무슨 뜻인지 이해를 못 했었죠 -_-;;; 이 부분은 아마 새내기들을 대상으로 새싹을 할 때 말해줘야 할 필요가 있지 않을까 싶습니다. 아마 당장은 이해하지 못 하겠지만. 후후 - [서민관]
* Type erasure에 대해서는 마음에 안 들어한다기보다는 어려워한다가 더 적합해보이네요. 하지만 Type erasure가 개선될 것이라는 것은 제가 언급하지 않은 내용입니다. 다만 Java Generics에 관련된 개선이 있다는 이야기는 했지요. - [Kesarr]
* 아... Generics쪽의 개선이었군요 ;;; 타입 추론을 넣는 건가요. 컴파일러단에서 타입을 다 체크했으니 추측해서 넣을 수도 있다는 얘기였나... 그럼 타입 추론은 javac에서 이루어지는 건가요? 그렇다면 C++의 auto 키워드랑 같은 방식으로 작동한다는 얘기인가? 아마 힌들리-밀너 뭔가 하는 걸로 타입을 추측하는 것 같던데 쓰기는 좀 더 편해지겠네요. - [서민관]
- 제12회 한국자바개발자 컨퍼런스 후기 . . . . 5 matches
그 다음으로 Track 5에서 있었던 Java와 Eclipse로 개발하는 클라우드, Windows Azure를 들었다. Microsoft사의 직원이 진행하였는데 표준에 맞추려고 노력한다는 말이 생각난다. 그리고 처음엔 Java를 마소에서 어떻게 활용을 한다는 건지 궁금해서 들은 것도 있다. 이 Windows Azure는 클라우드에서 애플리케이션을 운영하든, 클라우드에서 제공한 서비스를 이용하든지 간에, 애플리케이션을 위한 플랫폼이 필요한데, 애플리케이션 개발자들에게 제공되는 서비스를 위한 클라우드 기술의 집합이라고 한다. 그래서 Large로 갈 수록 램이 15GB인가 그렇고.. 뭐 여하튼.. 이클립스를 이용해 어떻게 사용하는지 간단하게 보여주고 하는 시간이었다.
* <Play GAE!>는 요새 Play framework를 좀 만지고 있기도 하고 구글 해커톤 가서 구글 앱 엔진 쓸 계획이 있어서 들었는데 Play 소개같은 세션이라 원하던 내용은 아니었다. 알게된 것은 '''Play framework에는 구글 앱 엔진을 지원하는 모듈이 있다'''는 것. 인상깊은 것은 플레이, 스프링, 스트럿츠의 비교. 드래곤볼 짤과 함께 각각의 전투력을 측정하는 드립이 있었는데 전투력을 책 페이지로 측정하셨다. 예상가능하게도 스프링 전투력 측정에선 토비의 스프링이 튀어나옴...
* 그 다음으론 <Event Driven Architecture>를 들었는데 생각과 너무 다른 내용이라 흥미가 없어서 옆 트랙으로 옮겼다. <성공하는 개발자를 위한 아키텍쳐 요구사항 분석 방법>에 대한 이야기였는데 처음부터 이걸 들을 걸 그랬다. 좀 많은 내용을 넣으시다보니 시간이 많이 모자란 느낌이긴 했지만 전 트랙보단 관심이 가는 내용인데. 기억에 남는 것은 각각 '''목적에 맞게 설계해야 한다'''는 이야기.
- 졸업논문/결론 . . . . 5 matches
이때까지 살펴본 바, django는 데이터베이스를 이용하는 패턴을 대부분 추상화하여 사용할 수 있도록 지원한다. 모델과 데이터베이스를 연동하여, 주언어인 python으로 모델만 수정하더라도 데이터베이스에 이를 반영할 수 있다. 또한 데이터베이스를 객체로 생각하고, 삽입과 갱신은 객체를 저장하는 것으로, 조회를 객체의 인스턴스를 얻어오는 것으로, 삭제를 인스턴스를 삭제하는 것으로 추상화하였다. 이러한 추상화로 모자란 부분은 사용자가 직접 SQL을 작성할 수 있도록 지원하고 있다.
기존의 웹 어플리케이션을 만들 때 설계한 대로 데이터베이스를 사용하도록 프로그래밍 하는 시간을 줄였다. 기민하게 웹 어플리케이션을 작성할 수 있기 때문에, 개발자는 데이터베이스를 올바로 설계하고 사용자에게 정말로 필요한 기능을 구현하는 데 집중할 수 있다. 또한 실제로 사용하기에 부족한 점이 있더라도, 프로토타입을 만들어 보려면 더할 나위 없이 좋은 프레임워크라고 생각한다.
RoR와 django 같은 경량 프로그래밍 기법이 힘을 얻는 또 다은 이유는, 강력한 표현력을 가진 주언어를 사용할 수 있기 때문이다. Ruby와 python은 스크립트 언어의 성격을 가지고 있으며, 객체 지향 개념과 함수형 프로그래밍 언어의 패러다임을 포함한다. 비록 느려서 시스템 프로그래밍에 사용하기에는 적당하지 않지만, 동적으로 빠르게 변하는 웹 환경에서는 ruby와 python같은 언어가 변화를 손쉽게 따라갈 수 있어 적당하다.
웹2.0은 웹을 플랫폼으로 생각한다. 플랫폼이 바뀌면 언어도 바뀐다. 웹 2.0이후에는 변화가 더욱 빨라질 것이고, 변화에 알맞는 새로운 개념과 기술과 언어가 생겨날 것이다. 하지만 기존에 널리 사용하던 기술은 변화를 맞더라도 쉽게 자리를 내주지는 않을 것이다. 따라서 변화를 만들어가는 입장에서는 기존 플랫폼, 기술, 언어와 연동할 수 있는 연결고리를 만들어서 기존의 것은 그대로 사용하면서 더 나은 것을 보여주어야 한다. Django의 사례는 기존 데이터베이스를 그대로 사용하면서도 사용자에게는 추상화된 데이터 저장고를 제공하는 변화의 연결고리를 보여주고 있다.
- 지금그때2005/회의20050308 . . . . 5 matches
동문서버를 이용한다.
저번 송년회 경험을 돌이켜보면 평일 오후에 전화하는 것은 조금 피해야 한다. 회의하시는 분, 핸드폰 꺼놓으신 분들도 많았다.
초록모자 : 질문리스트를 만들어 간다. 소외를 최소화 해야한다. 움직임을 만든다.
초록모자 : 부루마블을 결합한다. YesNoWhy방식. 복잡하기도 하다. 수건돌리기
[정모/2005.3.14]에서 하는 리허설에서 점검과 결정을 한다.
- 프로그래머가지녀야할생각 . . . . 5 matches
''미안하다고 한건 생각한다는 것은 그 자체가 에너지를 낭비하는 힘든 일이라서 결국 내가 힘든일 시킨게 되잖아. --nautes''[[BR]]
너무나 이상적이고 추상적인 생각이겠지만 '프로그래머는 사회에 이익이 되는 프로그램을 만들어야 한다'는 근본적인 생각을 갖는 건 어떨까요? 예를 들어 재미있는 오락도 좋겠지만 장애인이나 나이 많이 드신 분들을 위한 보조용프로그램 같은 것들이 많이 개발되어야 한다고 생각합니다. 전에 정보요원단 활동을 할 때 우리나라에 보급되어 있는 장애인용 프로그램들이 많이 부족한 현실을 봤었는데... 내가 만든 프로그램이 남에게 도움이 된다면 그보다 좋을 일이 또 있을까요? ^^ -- jeppy
* 다들 인간으로써의 프로그래머를 두고 말씀하시는 것 같아 제 말이 뚱딴지처럼 들릴 것 같네요...^^;[[BR]]전 말이죠... 프로그래머는 컴퓨터를 사랑해야한다고 생각합니다. 정말 제가 생각해서 어이없는 말 같지만, 프로그래머는 컴퓨터에게 명령만 내리는 것이 아니라 컴퓨터와의 커뮤니티가 형성되어야 좋은 프로그램(인간에게가 아니라 컴에게)을 짤 수 있다고 생각합니다. 지극히 추상적이라서 반박의 여지가 많은 말이지만 그냥 그렇지 않을까 생각해봅니다. 컴퓨터에 미친 사람이라면 다음의 말에 공감을 할 지도 모르겠네요. [해커를 위한 파워핸드북]표지에 나오는 말입니다. ''''컴퓨터 속에서 흘러 다니던 비트가 내 혈관 속으로 옮겨와 흐르기 시작하고, 나는 컴퓨터와 함께 오르가즘을 느낀다.'''' --["창섭"]
* 위엣 말이 컴퓨터 자체에 관한 기계적 이야기라면 인간적 이야기도 추가하고 싶어요. 프로그래머는 프로그램 이전에 인간을 먼저 생각해야 한다는 것이죠... 상민이 형이 줬던 V노트에 나온 말이 인상깊습니다. ''''크래커든 프로그래머든 둘다 시작은 해커를 꿈꾼 젊은이 였으며, 인격을 가진 사람이다. 악이 없이 선이 없듯이 크래커가 영원히 존재하지 않을수는 없을지라도 지금 당신의 열정과 땀으로 주어질 선택이 진정한 존경으로 돌아올수 있도록 유혹을 이겨낸 진짜 승자가 되어야 하지 않을까......'''' --["창섭"]
- 프로그래밍잔치/첫째날후기 . . . . 5 matches
* 위키에서의 자유로운 링크가 오히려 위키를 읽는데 어려움을 가져오기도 한다. (링크를 따라가다보면 내가 처음에 읽었던 글로 다시 돌아오지 못하고 방황함)
* 계층위키에 대해서 - 개인 페이지 내에 계층위키로 페이지를 열고 시작한다면, 처음 쓰는 입장에선 특별히 편집에 대해 구애받지 않아서 좋을 것 같다.
* 위키에 다른 사람 참여를 원한다면, 처음부터 조금씩 점차적으로 글을 쓰는건 어떨까?
* 처음으로 어떤 언어를 접했을때 그 언어를 보는 기준은 지금까지 내가 알아왔던 언어이다. 예전에 알았던 언어에 있던 구문이 이 첨 보는 언어에서는 어떻게 할 수 있나 살펴 보는 것이다. 그 원하는 기능이 이 첨보는 언어에서는 없을 수도 있고 대신 다른 기능이 있을수도 있는데. -_- 이번에 Haskell이라는 언어를 봤을때 이것도 지금까지 언어들이랑 비슷 비슷할거라고 만만하게 생각했었다. 그래서 지금까지 짜왔던 방식으로 해볼라고 생각했다. 그런데 잘 안되었다. 이 언어는 그 밑바탕에 깔려 있는 개념이 달랐던 것이다. 그래서 그런식의 접근은 좋지 않을 수 밖에 없었던 것이다. 이렇게 다른 패러다임을 바탕으로 하는 언어를 접하게 된것은 신선한 충격이었다. - 상협
*감상 : 위키에 글을 쓸 수 있는 용기를 내어...;;짧은 시간이나마 참여했던 후기를 남겨보면..내가 선택했던 python은 c나 java와 비슷하면서도 더 간단한 구조를 가지고 있었기 때문에..패러다임의 변화로부터 오는 충격은 적었던것 같다. 오히려 문법은 간단하지만, 손과 눈에 익지 않은 구조문들과 프로그램 실행 방식으로 인해 상당히 불편하다는 느낌을 받았고, 이렇게 실행 되는 인터프리터 언어를 접한다는게 어떤 도움이 될는지....;;;란 생각이 들었다. 특히, 툴과 언어가 익숙하지 않으니 문제(삼목)의 알고리즘도 생각이 나질 않아 당황스러웠다. 마구잡이로 짜는 코딩 습관 때문인가...하는 생각이 들었다.
- 프로그래밍파티 . . . . 5 matches
파티 진행 중에 팀 별로 한 명 씩 도우미가 배정된다. 이 때 가능하면 같은 학교 출신의 팀으로 배속되지 않도록 한다.
각 팀은 자신들이 한 것을 대표자가 발표하도록 한다. 이 때 다음과 같은 것들을 함께 준비하도록 한다.
이 발표를 심사위원들과 모든 파티 참가자들이 함께 구경한다. 그리고, 약 20분간의 시간이 주어지고, 그동안 심사위원은 다른 장소로 옮겨가서 의견 조율을 하고 우수팀을 선정하며, 다른 참가자들은 휴식 및 자유로운 의견 교환을 한다.
- 프로젝트기록의필수요소토론 . . . . 5 matches
[1002] 프로젝트의 마감부분은 중요한 부분이 됩니다. 올바른 프로젝트의 끝맺음은 새로운 프로젝트를 다시 추진할 수 있도록 뒷처리를 해주니까요. 현재 semi-project 부분의 경우 그 양이 많은데, 어떻게 끝맺음들을 할지는 좀 더 두고봐야하겠습니다. (자신 주도하로 할 자신이 없다면 페이지를 '일반화' 시켜버리십시오. 즉, 자신의 이름을 걸고 하지 말고 하나의 문서처럼 Document 화 시켜버리십시오. 그렇다면 다른 사람들이 중간에 참여하기가 더 용이할 겁니다.) 개인의 이름을 걸고 한다는 것은 그만큼 자신이 해당 페이지를 연 것에 대해 (또는 프로젝트를 연 것에) 책임을 지겠다는 것으로 해석한다면 제가 오버한 것일까요? 하지만, 그런뜻으로 하신 것이 아니라 하더라도, 어느정도 책임감을 가지셨으면 좋겠습니다.
[1002] 프로젝트 이름에 대해서 한마디 한다면, 'Java', 'ExtremeProgramming' 은 공부하려고 하는 지식의 종류이지 프로젝트의 이름으로 부적절하다고 봅니다. 만일 Java Study 팀이 두 개인 경우라면? 문제가 발생할 수 밖에 없습니다. 초창기에 해당 기술부분으로 페이지를 열 수는 있지만, 나중에 프로젝트가 끝나고 난다음에는 일반화시켜서 본래의 이름을 반환해주는 것이 좋다고 생각합니다. (즉, 'Java' 페이지는 Java 에 대한 소개나 기술 등을 넣어주고, 'Java' 페이지이름을 썼던 프로젝트팀은 프로젝트팀 이름의 새 페이지를 만들어서 경과보고를 하는식으로..)
[1002] 한가지 더 지적한다면, 해당 토론 또한 기간이 있어야 할 것 같다는 생각. --; (사람들이 이야기는 많지만, 정작 '어떻게 하자', '예. 동감합니다', '아니요. 그건 그렇게 생각하지 않습니다', '이러이러한 방향이 더 좋겠습니다' 라는 이야기를 안하니. -_-;) 기간이 길어지고 아무 이야기 없으면 해당 주제에 대한 결론을 영원히 유보해야 하겠습니까.. 쩝. 전에도 이야기 했지만, WIKI 자주 이용해주시고, 불편하시면 다른쪽 게시판이나 해당 사람에게 e-mail 로 답변을 주시기를. (동보메일이라도 보낼까요? --a ZP 에 sendmail 이 돌고있던가 기억이 안나는군. --;)
["neocoin"] ZeroWiki의 프로젝트 페이지를 위한 6하 원칙을 생각해 봤습니다. 저정도면 될것 같네요. 어디서(where)이 있지만 이것은 보나마나 여기서 여기서니 프로젝트 이름으로 대체해서 했습니다. 앞으로의 모든 페이지가 저 정보가 꼭 있어야 한다고 정모에서 건의 함이(이거 원 정모를 해야 --;) --상민
- 하드웨어에따른프로그램의속도차이해결 . . . . 5 matches
* Game 의 Tick 에 해당되는 함수를 idle에 넣지 말고 타이머마다 화면 그려주는 함수를 실행한다.
* 작동하는 속도를 피드백 받아서 프레임을 줄여 제작한다
* 타이머를 이용해서 시간에 따라 움직이도록 한다.
* hardware independent하게 게임속도를 유지하려면 매프레임 그릴때마다 이전프레임과의 시간간격을 받아와서 거기에 velocity를 곱해 position을 update하는 식으로 해야한다. 타이머를 하나 만들어 보자.
* 비슷한건데.. 스레드와 timer 를 같이 써서 해결하기도 하지.. -_-; 아는 형 중에 그렇게 하던데.. dx 쓸때.. source 는 모르겠고.. mfc 에서 dx 쓸때 그렇게 한다고 하더라.. 뭐 네가 말하는 문제의 해결책이 될듯 하기도 하고.. -- ["erunc0"]
- 학문의즐거움 . . . . 5 matches
일본의 히로나카 헤이스케라는 사람이 공부하는 후진들을 위해 자신의 공부에 대해 이야기하는 자서전 형식의 수필이다. 그는 천재가 아니다. 하지만 남들보다 두배 이상의 노력을 한다. 한가지 문제를 풀기 위해 수년간 노력해온 과정을 보면 그가 정말 대단한 사람이라는 것을 느낄 수가 있다. 그는 학문을 하는것은 지식을 키우기 위함도 있지만 나아가 지혜를 넓이기 위함이라고 한다. (이부분을 많은 사람들이 공감할 것이라고 생각한다). 그리고 주위에서 끊임없이 배우라고 한다.
이 책을 읽으면 공부란 무엇인가? 어떤 자세가 바람직한 가에 대한 저자의 생각을 볼 수 있다. 자서전 형식의 수필답게 꼭 이래야 한다는 지침서는 아니라고 본다. 나의 경우 동감이 되는 부분도 있었지만, '''이건 좀 아닌 것 같은데...'''라는 부분도 있었다. '''문제와 함께 잠자라(Sleep with problem)'''라는 명언은 나의 평소 생각을 잘 나타내주었다. -[강희경]
- 환경의중요성 . . . . 5 matches
제로페이지는 훌륭한 공동체이다. 그들은 끊임없이 배우려고 하고 새로운 문화를 창출해 내려 한다. 단지 아쉬운건 그들에게 필요한 환경이 부족하다는 것이다. (TomDeMarco 가 PeopleWare에서 언급한 모델이나 AgileModeling에 언급되는 CavesAndCommon과 같은 장소적 측면에서의 환경) - [임인택]
역사의 연구라는 책을 보면 인간 문화가 발달한 경우는 환경이 아주 좋은, 언제나 맛좋은 과일, 식량을 구할수 있는 열대 지방이 아니라 특정한 자극을 지속적으로 주는 그런 환경에서 인간의 문화가 발달한다고 한다. (지금 환경도 충분히 만족스럽다면 다른 발전적인 것을 할 필요성을 느끼지 못해서 인거 같다) 예를 들면 중국의 황하 는 자주 범람 하는데 그런 악조건속에서 그것을 극복하기 위한 더 큰 문화적 발전이 이루어졌다. 또한 베네치아도 결코 좋지 못한 환경이었지만 오히려 그렇기 때문에서 살아남기 위해서 더 큰 발전을 이루었다. 그렇지만 저런 자극이 일정 한도를 넘으면 그것은 해가 되어서 발전에 방해가 된다. 이런 측면에서 봤을때 제로페이지에서는 여러 자극을 많이 받을 수 있는 환경이지만, 앞으로 더욱 서로 긍정적인 자극을 주는 환경을 만들어야 한다고 생각한다. - [상협]
- 후각발달특별세미나 . . . . 5 matches
주석이 많다는 것은 코드가 자신을 스스로 표현 못하기 때문입니다. 어딘가 주석을 달려고 생각 한다면 한 번쯤 '주석 없으려면 어떻게 해야하는가?'라고 생각해보세요. 단, 숙제 제출에서는 교수님의 눈에 맞춰야합니다. --재동
사실 이 질문은 제가 받았던 질문인데, 질문 받았던 당시에 별 생각없이 '''메모리를 많이 사용한다는 단점이 있더라도 잃는 것(단점)보다 얻는 것(장점)이 더 많기 때문에 상관없다'''고 얼버무렸습니다. 그렇게 틀린 대답은 아니였지만 많이 부족한 대답이었습니다. 그래서 재동형하고 이야기도 해보고 저도 나름대로 생각해서 답을 내어보았습니다.
메모리를 많이 사용한다는 우려의 원인은 많은 변수들에 있습니다. 전달인자를 받거나 값을 리턴할 때, 각각 상응되는 변수가 필요하기 때문이죠. 하지만 변수는 그 변수가 선언된 함수내에서만 효력을 발휘하고 함수가 종료되는 순간 사라집니다(메모리해제). 그러므로 모듈화된(쉽게 이야기해서 함수로 나뉜)프로그램에서는 함수내의 많은 변수들이 메모리를 많이 차지하더라도 그 함수가 끝나면 그 메모리는 해제되어 사용가능해집니다. 그리고 전역변수나 메인함수내의 변수만을 사용하는 프로그램은 프로그램이 끝날 때까지(메인함수가 종료될 때까지) 메모리를 잡아두므로 한번 할당된 메모리는 사용불가능합니다.
통상 리팩토링에 대한 반론은 다음과 같은 양상을 띕니다. 리팩토링을 많이 한다 --> 함수 개수가 많아진다 --> 콜 체인이 길어진다 --> 속도가 느려진다. 메모리 문제보다는 속도 문제에서 리팩토링에 대한 우려가 불거져 나오는 것이죠.
리팩토링을 잘 한다면, 속도문제는 나중에 신경 쓰는 것이 결과적으로 나은 경우가 많습니다.
- 05학번만의C++Study/숙제제출/4 . . . . 4 matches
* INT형을 만족하는 숫자를 입력하면 그 숫자를 저장하는 클래스를 생성되었다는 메시지와 함께 생성하라. 만약 입력된 숫자를 가진 클래스가 이미 존재할 경우에는 클래스가 가짖 숫자를 출력하고 해당 클래스를 삭제한다. 프로그램이 종료될떄에는 모든 클래스를 삭제한다. (단 숫자의 출력은 파괴자에서 해야한다.)
* 생성되는 전체 클래스의 개수는 255개를 넘지 않는다고 가정한다.
- 0PlayerProject/커널업로드작업정리 . . . . 4 matches
* tftp 파일명 위치 : 해당 파일을 지정한 메모리 주소에 기록한다.
* go 위치 : 해당 위치의 프로그램을 실행한다.
* erase 시작위치 끝위치 : 시작 지점에서 끝 지점까지의 내용을 삭제한다.
* cp.b 시작위치 끝위치 크기 : 메모리의 시작지점에서 NOR Flash의 위치에 지정한 크기만큼을 복사한다.
- 1thPCinCAUCSE/ProblemA . . . . 4 matches
아날로그 시계는 12시간 단위로 동작하며 시침과 분침이 있다. 주어진 시간 동안 시침과 분침이 몇 번 겹치는가를 알고 싶다. 예를 들어, 시작 시각이 11시 1분이고 끝 시각이 3시 20분이면, 이 시간 동안 시침과 분침은 4번 정확하게 일치한다. 각자 자기 시계로 확인 해 보세요. 시작 시각이나 끝 시각에 시침과 분침이 일치하더라도 회수에 포함한다.
이렇게 시작 시각과 끝 시각이 주어질 때, 그 시간 구간 동안 시침과 분침이 몇 번 일치하는가를 계산하는 프로그램을 작성하시오. 시간 구간은 12 시간 미만이라 가정한다.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 자기가 계산한 회수를 한 줄에 하나씩 출력한다. T개의 테스트 케이스를 모두 맞춰야 이 문제를 맞춘 것이다.
- 2ndPCinCAUCSE/ProblemA . . . . 4 matches
같은 길이의 성냥개비가 여러 개 주어져 있다. 이것들을 평면에 늘어놓아서 삼각형을 만들려고 한다. 삼각형의 한 변은 여러 개의 성냥개비를 직선으로 이어서 만들 수 있지만, 성냥개비를 꺾거나 잘라서 변의 한 부분을 만들 수는 없다. 성냥개비의 개수가 주어졌을 때, 이들 성냥개비를 사용하여 만들 수 있는 서로 다른 삼각형의 개수를 구하는 프로그램을 작성하시오. 예를 들어서 9개의 성냥개비로 만들 수 있는 서로 다른 삼각형은 3가지이다.
(1) 주어진 성냥개비는 모두 사용하여 하나의 삼각형을 만들어야 한다.
(2) 삼각형을 한 개도 만들 수 없으면 0을 출력한다. 예를 들어서, 주어진 성냥개비의 개수가1, 2, 또는 4인 경우에는 삼각형을 한 개도 만들수 없다.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 삼각형의 개수를 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 3DAlca . . . . 4 matches
* 광원이 옆에서도 비추는거처럼 보여서 다른쪽 벽에 그림자가 생기게 한다. 더 알아보기 좋게 하기 위해서
* 판이 가운데로 왔을때 카메라도 가운데로 와야 하지 않을까 한다.
* 약간 치우쳤을 경우 판 움직이는 것보다 좀더 빨리 움직여서 리커버를 해야 한다?
* 인수는 이거 몇초 해보더니, 산만하다고 한다. 음.. ㅡㅡ;;;, 요새는 이거 짜는 시간보다 이거 내가 하면서 즐기는 시간이 더 많은거 같다. 음 무엇보다 나한테 재밌으니깐 다행이다. ^^; 아무도 안하더라도 내가 할테니.. ㅋㅋ
- 3N+1Problem/Leonardong . . . . 4 matches
* MAX(100000)개의 원소를 가진 리스트에 계산했던 CycleLength를 저장한다.
* CycleLength를 구하는 과정에서 n이 짝수일 때만 저장된 값이 있는지를 검사한다.
* 구하는 범위가 Cutoff보다 크면 시작하는 수가 홀수일 때 CycleLength가 클 것이므로 홀수부터 시작해서 짝수는 무시하고 구한다.
확신이 가지 않는 cutoff부분을 빼더라도 PsyCo를 쓰면 2초 안에 통과한다. 3시간 동안 10초 정도를 줄였는데, 10분만에 10초를 줄였다. 시간을 줄여야 하는데 정말 수가 안 떠오르면 PsyCo가 꽤 도움이 될 것이다. 남용은 조심해야겠다.--[Leonardong]
- 3rdPCinCAUCSE/J-sow전략 . . . . 4 matches
문제풀기 규칙을 정한다든지, 예상 문제를 살펴보는 준비는 없었습니다. 작년에 같은 팀을 했기에 올해도 같은 팀으로 [정우]와 함께 나갔습니다. 작년 대히를 생각해보면, 알고리즘을 생각하는데 주력할 것이라는 이야기를 나누었습니다.
// 이 부분에서 큰 것과 작은 것을 세는 카운터를 초기화 했어야 한다.
* 아무리 급해도 필요한 기능은 함수로 묶어내야 한다고 느꼈습니다.
* 최소한 루프 인덱스라도 통일한다면 한결 코딩이 수월했으리라는 생각을 합니다.
- 3rdPCinCAUCSE/ProblemC . . . . 4 matches
모양은 같으나, 무게가 모두 다른 N개의 구슬이 있다. N은 홀수이며, 구슬에는 번호가 1,2, .... N으로 붙어있다. 이 구슬 중에서 무게가 전체의 중간인 (무게 순서로 (N+1)/2번째) 구슬을 찾기 위해서 아래와 같은 일을 하려 한다.
우리에게 주어진 것은 양팔 저울이다. 한 쌍의 구슬을 골라서 양팔 저울의 양쪽에 하나씩 올려 보면 어느 쪽이 무거운 가를 알 수 있다. 이렇게 M개의 쌍을 골라서 각각 양팔 저울에 올려서 어느 것이 무거운 가를 모두 알아냈다. 이 결과를 이용하여 무게가 중간이 될 가능성이 전혀 없는 구슬들은 먼저 제외한다.
입력은 표준 입력이다. 입력의 첫줄에 테스트 케이스의 개수를 나타내는 정수 T(10 이하)가 주어진다. 다음 줄부터 T개의 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 줄은 구슬의 개수를 나타내는 정수 N (1<=N<=99) 과 저울에 올려 본 쌍의 개수 M 이 주어진다. 그 다음 M개의 줄은 각 줄마다 두 개의 구슬 번호가 주어지는데, 앞 번호의 구슬이 뒤 번호의 구슬보다 무겁다는 것을 뜻한다.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 무게가 중간이 절대로 될 수 없는 구슬의 수를 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 5인용C++스터디/더블버퍼링 . . . . 4 matches
여기서는 더블 버퍼링의 원리에 대해서만 이해하도록 하고 실무를 할 때 더블 버퍼링을 쓰면 좋겠다는 생각이 들면 적극적으로 활용해 보기 바란다. 다음 예제는 더블 버퍼링을 활용한 갱 화면이다. 갱(Gang) 화면이란 프로그램 제작자를 소개하는 용도를 가지며 일반적으로 숨겨져 있지만 제작자 자신을 표현한다는 면에 있어 다소 멋을 좀 부리는 경향이 있다. 이 예제는 배경 비트맵을 깔고 그 위에서 제작자 목록을 위로 스크롤하는 예를 보여준다.
실행 결과는 다음과 같다. 움직이는 화면이므로 직접 실행해 봐야 결과를 볼 수 있다. 예쁜 아기 그림이 있고 아래에서 문자열이 천천히 위로 올라오는 동작을 한다.
좀 더 코드를 작성한다면 글자들이 오른쪽에서 왼쪽으로 한 줄씩 날라 오도록 할 수도 있고 점점 확대되는 모양으로 만들 수도 있다. 또는 약간의 애니메이션을 첨가한다거나 글자의 색상을 조작하여 Fade In, Fade Out 등의 장면 전환 효과를 낼 수도 있다. 아뭏든 더블 버퍼링을 쓰기만 하면 어떠한 모양도 깔끔하게 화면으로 구현할 수 있으므로 기발한 상상력을 발휘해 볼만하다.
- Barracuda . . . . 4 matches
Presentation Frameworks로 Model 2형태의 Architecture 를 구현한다.
Struts와 비슷한 모델 2 형태의 아키텍처 이지만 스트럿츠 보다 발전된 모델 이벤트 통지 메커니즘을 제공한다. 바라쿠다 프레임 워크는 엄격한 JSP접근 방식과 달리 더 뛰어난 유연성과 확장성을 제공할 수 있도록 템플릿 엔진 컴포넌트를 새로 만들었다. 이 프로임워크에서는 사용자 인터페이스를 생성할 때 XMLC를 이용하여 코드와 컨텐츠를 분할한다. XMLC는 자바 기반의 컴파일로써 HTML과 XML문서를 소스로 읽어 들여 컴파일 하고 자바 클래스 파일을 생성한다. 이 자바 클래스 파일은 런타임에 문서를 재생성하는데 이용된다. ...중략... 마크업과 애플리케이션 로직을 분리한 덕에 웹 디자이너는 마크업에, 프로그래머는 코딩에 집중할 수 있다.
- BeeMaja . . . . 4 matches
마야라는 꿀벌이 있다. 마야는 수천 마리의 다른 벌들과 함께 육각형 모양의 벌집에서 살고 있다. 그런데 마야에게 문제가 생겼다. 그녀의 친구 윌리가 만날 장소를 알려줬는데, 윌리(숫놈 일벌)와 마야(암놈 일벌)는 서로 다른 좌표계를 사용한다.
마야를 도와서 윌리가 쓰는 좌표계를 마야가 쓰는 좌표계로 변환해보자. 어떤 벌집 번호가 주어졌을 때, 그 번호를 마야의 시스템에서의 좌표로 변환해서 출력하는 프로그램을 만들어야 한다.
윌리가 알려준 번호에 해당하는 마야의 좌표를 출력한다. 각 좌표를 나타내는 정수 쌍은 한 줄에 한 쌍씩 출력한다.
- C++ . . . . 4 matches
C++은 범용성을 가진 컴퓨터 언어이다. 이는 정적으로 분류된(?) 다중 패라다임을 지원하는 언어이다. ( [:절차적프로그래밍 절차적 프로그래밍], [:GenericProgramming 제네릭 프로그래밍]을 지원한다.) 1990년대에 C++은 가장 상업적으로 인기가 있는 언어중의 하나가 되었다.
벨 연구소의 [http://www.research.att.com/~bs/homepage.html Bjarne Stroustrup]은 1980년대에 당시의 [C]를 개선해 C++을 개발하였다. (본디 C with Classes라고 명명했다고 한다.) 개선된 부분은 클래스의 지원으로 시작된다. (수많은 특징들 중에서 [가상함수], [:연산자오버로딩 연산자 오버로딩], [:다중상속 다중 상속], [템플릿], [예외처리]의 개념을 지원하는) C++ 표준은 1998년에 ISO/IEC 14882:1998로 재정되었다. 그 표준안의 최신판은 현재 ISO/IEC 14882:2003로서 2003년도 버전이다. 새 버전의 표준안(비공식 명칭 [C++0x])이 현재 개발중이다. [C]와 C++에서 ++이라는 표현은 특정 변수에 1의 값을 증가시키는 것이다. (incrementing이라 함). C++이라는 명칭을 이와 동일한 의미를 갖는데, [C]라는 언어에 증가적인 발전이 있음을 암시하는 것이다.
- C++스터디_2005여름/학점계산프로그램 . . . . 4 matches
- 다른 클래스에 속하는 객체를 클래스 멤버로 사용한다.
중앙대 컴공 학생 120명의 이번 학기 각 과목점수을 파일로부터 읽어들이고, 각 평점을 계산하고, 장학생명단을 발표하시오! 과목은 C, 국어와 문학, 경제와 사회, 선형대수학 이렇게 4과목으로 한다. 입력파일은 input.txt 이다. 객체 배열과 컨테인먼트을 사용하자.
장학생은 10%로 하고, 순위별로 정렬한다. 평점 1.5 미만의 학생은 따로 분리되어 사용자에게 보여줄 수 있어야 한다.
- CCNA . . . . 4 matches
* ethernet: CSMA/CD- 이더넷 통신에서 사용하는 프로토콜이다. 회선이 사용중이지 않을때 전송하고 충돌이 생기면 일정시간후 재전송한다.
* MAC 주소가 FF-FF-FF-FF-FF-FF 는 브로드캐스트로써 LAN상에 모든 PC에게 데이터를 전송한다.
* 인터넷을 사용하기 위해서는 IP라는 주소가 필요하며 이 주소는 2진수 32개로 4묶음씩 구성된다. 각 묶음마다 10진수로 나타내어 알아보기 쉽게 만들었다. 현재 IP 버전은 4인데(IPv4) 약 43억개의 주소를 할당 할 수 있다. 그런데 이 주소가 얼마 남지 않아서 ip 버전 6으로 대체 할 것이라고 한다.(IPv6은 2의 128개로 구성되어 있다고 함.)
* 네트워크를 나눠 쓰지 않더라도, 디폴트 서브넷 마스크를 사용한다.
- COM/IUnknown . . . . 4 matches
COM 객체의 참조카운팅을 조절한다.
※ 이론적인 내용은 C++ 의 스마트 포인터 파트를 참조. 참조카운팅의 용도와 필요성에 대해서 숙지한다.
C++ 스마트 포인터에서는 참조 카운팅을 이용해서 dangling pointer 문제를 해결한다. boost 의 shared_ptr이 이를 구현한다.
- ChainsawMassacre . . . . 4 matches
조직위원회에서 당신에게 무도회장으로 쓸 수 있는 가장 넓은 직사각형 영역을 찾아달라는 요청을 했다. 장소를 물색해야 할 전체 영역은 직사각형이며, 무도회장은 완전히 그 직사각형 안에 들어있어야 한다. 그리고 무도회장의 각 변은 전체 영역을 나타내는 직사각형의 각 변과 평행해야 한다. 무도회장은 주어진 영역의 경계에 닿아 있어도 된다. 그리고 무도회장 내부에만 나무가 없으면, 경계선 위에 나무가 있어도 상관없다.
* 0 - 시나리오가 끝났음을 의미한다.
각 시나리오에 대해, 한 줄에 한 시나리오씩 무도회장의 최대 크기를 제곱미터 단위로 출력한다.
- Chopsticks . . . . 4 matches
중국에서는 음식을 먹을 때 젓가락 두 개를 쓰지만, L씨는 조금 다르다. 그는 젓가락 세 개를 사용한다. 셋 중 하나는 긴 젓가락으로, 음식을 쿡 찍어먹기 위한 용도로 쓰인다. 두 개의 일반 젓가락의 길이는 최대한 비슷해야 하지만 나머지 하나는 무조건 제일 길기만 하면 된다. 길이가 각각 A, B, C(A<=B<=C)인 세 개의 젓가락이 있을 때 (A-B)^2을 계산하면 두 젓가락이 짝이 안 맞는 정도를 구할 수 있다.
L씨는 그의 생일 파티에 K명의 손님을 초대했는데, 그의 특이한 젓가락질 방법을 소개하고 싶어서 안달이 나 있다. 젓가락을 K+8세트(L씨 자신, 부인, 아들, 딸, 어머님, 아버님, 장모님, 장인어른, 그리고 K명의 손님)를 준비해야 한다. 하지만 L씨네 집에 있는 젓가락들 중에는 길이가 다른 것이 많다. 젓가락들의 길이가 주어졌을 때, 각 세트의 짝이 안 맞는 정도를 최소화하면서 K+8세트를 만들어내는 방법을 찾아야 한다.
입력된 각 테스트 케이스에 대해 한 줄에 하나씩, 모든 젓가락 세트의 짝이 안 맞는 정도의 합이 가지는 최소 값을 출력한다.
- CodeCoverage . . . . 4 matches
CodeCoverage 는 Software Testing 에서 사용하는 측정 도구중의 하나이다. 프로그램이 테스트된 소스 코드의 정도를 기술한다. 이는 다른 대다수의 다른 테스트 메소드와 다른다. 왜냐하면 CodeCoverage 는 소프트웨어 기능, Object interface 과 같은 다른 측정 방법에 비하여 source code를 직접 보기 ㅤㄸㅒㅤ문이다.
CodeCoverage 는 최종적으로 퍼센트로 표현한다. 가령 ''우리는 67% 코드를 테스트한다.'' 라고 말이다. 이것의 의미는 이용된 CodeCoverage 에 대한 얼마만큼의 의존성을 가지는가이다. 가령 67%의 PathCoverage는 67%의 StatementCoverage 에 비하여 좀더 범위가 넓다.
- CollaborativeFiltering . . . . 4 matches
협업 (상호협동) 필터링, Recommender System이라고도 불림. ProjectPrometheus에서 사용한다.
problem space가 2차원 matrix 의 형태를 생각해본다. 행에 대해서는 item을, 열에 대해서는 user를 두고, 그에 따른 rating 을 값으로 둔다. 이 matrix 를 이용, CollaborativeFiltering 은 특정 사용자(user) i 에 대해서 rating 을 예측하고, item 들을 추천한다.
1. user인 i 와 비슷한 흥미나 선호도를 가지는 사용자 집합(user set)을 선택한다.
ex) 이 user set 에서 item j 에 대해서 높은 점수 (rating)을 주었을 경우, user i 에게 item j 를 추천한다.
- ContestScoreBoard . . . . 4 matches
ACM ICPC에 출전하고 싶다면 점수 계산법을 알아야 한다. 경시 대회에 참가한 팀의 순위는 우선 푼 문제의 개수가 많은 순으로, 그 다음으로는 시간 벌점(penalty time)이 적은 순으로 매겨진다. 이 둘을 모두 고려했는 데도 동점 팀이 둘 이상이면 팀 멤버 수가 적은 쪽이 더 높은 순위를 차지할 수 있다.
각 입력은 심사 큐의 스냅샷으로 구성되는데, 여기에는 1번부터 9번까지의 문제를 푸는 1번부터 100번까지의 경시 대회 참가 팀으로부터 입력된 내용이 들어있다. 각 줄은 세 개의 수와 경시 대회 문제 시간 L형식의 글자 하나로 구성된다. L은 C, I, R, U 또는 E라는 값을 가질 수 있는데 이 글자들은 각각 Correct(정답), Incorrect(오답), clarification Request(확인 요청), Unjudged(미심사), Erroneous submission(제출 오류)을 의미한다. 마지막 세 개의 케이스는 점수에 영향을 미치지 않는다.
각 테스트 케이스에 대해 앞에서 설명한 순서에 의해 정렬된 점수표가 출력된다. 출력되는 각 줄에는 참가 팀 번호, 그 팀이 푼 문제 개수, 누적된 시간 벌점이 출력된다. 모든 경시 대회 참가 팀이 풀이를 제출하는 것이 아니므로 실제로 풀이를 제출한 팀의 결과만 표시한다. 그리고 두 개의 서로 다른 케이스에 대한 출력은 빈 줄로 구분한다.
- ConverterMethod . . . . 4 matches
스몰토크의 String 클래스에 보면 asDate라는 메세지가 있다. 켄트벡이 경험한 정말 극단적인 경우에 하나의 객체마다 다른 형태로 변환시켜주는 Converter Method가 30개씩 있었다고 한다. 새로운 객체가 추가될때마다 저 30개의 메소드를 모두 추가해줘야만 했던 것이다.
위의 일화와 같이 객체안에다가 Converting 해주는 메소드를 계속 추가 하다보면 끝도 없이 많은 메소드가 나올 것이다. 게다가 수신객체와의 커플링이 증가한다. 이것을 피하려면? 컨버전할것만 구현하면 된다.
위 예제에서 Set은 Collection처럼 동작해야 한다. 즉, 객체가 리턴한것은 수신 객체와 같은 프로토콜을 가지고 있어야 한다. C++에서는 상속으로 해결할 수 있을듯하다.
- Cpp/2011년스터디 . . . . 4 matches
* 진행 방식: 간단하게 C++책을 학습한뒤 테트리스 코드 레이스로 둘이 같이 짜면서 필요한 부분을 다시 탐독한다.
* 테트리스를 완성한다.
* 위의 문제를 해결하니 블럭이 원하는데로 잘 죽고 잘 생성되더라. 근데 1줄을 없애려 하니...
* 릴리즈에선... 안죽어... 사실 죽는 조건을 잘못 설정한 탓도 있긴한데.. 심지어 그냥 냅두면 부활도 한다 으앜 뭐지!
- CryptKicker2 . . . . 4 matches
텍스트를 암호화하는 방법 중에 보안상 취약하긴 하지만 흔하게 쓰이는 방법으로 알파벳 글자를 다른 글자로 바꾸는 방법이 있다. 즉 알파벳의 각 글자가 다른 글자로 치환된다. 암호화된 것을 다시 원래대로 되돌릴 수 있으려면 두 개의 서로 다른 글자가 같은 글자로 치환되지 않아야 한다.
여러 줄의 텍스트가 주어졌을 때 같은 케이스에서는 모든 줄에서 같은 치환 방법을 사용한다고 가정하고 그 중 한 줄은 the quick brown fox jumps over the lazy dog라는 평문을 암호화한 것이라는 점을 이용해서 암호화된 텍스트를 복호화하라.
각 테스트 케이스에 대해 각 줄을 복호화하여 표준 출력으로 출력한다. 가능한 암호화 방법이 두 개 이상있으면 그 중 아무 결과나 출력해도 된다. 복호화할 수 없는 경우에는 다음과 같은 결과를 출력한다.
- CuttingSticks . . . . 4 matches
나무막대를 여러 조각으로 잘라야 한다. 절단 분야에서 가장 뛰어난 것으로 알려진 ACM(Analog Cutting Machinery)이라는 회사에서는 자를막대의 길이에 따라 요금을 부과한다. 그리고 톱의 구조상 한 번에 하나씩만 자를 수 있다.
l의 값으로 0이 입력되면 입력이 종료된 것을 의미한다.
각 막대를 자르는 데 드는 최소 비용을 아래 예에 나와있는 것과 같은 식으로 출력한다.
- DermubaTriangle . . . . 4 matches
더뮤바 사람들이 다른 집에 방문할 때는 자기 집에서 목적지까지 이르는 최단 경로를 따라서 이동한다. 이때 최단 경로는 그 두 집을 연결하는 직선 거리를 의미한다. 집의 번호가 주어졌을 때 그 두 집 사이의 최단 경로의 길이를 계산하는 프로그램을 만들어보자.
입력된 각 줄마다 두 집 사이의 최단 거리를 출력한다. 거리는 킬로미터 단위로, 소수점 셋째 자리까지 반올림한 값을 출력한다.
- DiceRoller . . . . 4 matches
* Shift+Enter가 안된다. -> 원래 불가능 하다는 결론..(발생시킬수는 있어도 창을 끌러올려야 한다.)
* 자동 복구 루틴(방이 깨졌을 경우에)를 구현한다.
* 게임이 끝나고 나갈 때 가끔식 이유를 알수 없는 오류가 발생하곤 한다. 아마도 창을 찾은 상태에서 실제로는 없는 게 되버려서 그런 것 같다.
* 메모리상의 값을 얻어와서 해결할 방법은 아직은 먼 훗날의 이야기인 듯 하지만, 만약 가능하다면 모든 문제들이 해결되다시피한다.[[BR]]
- EcologicalBinPacking/김회영 . . . . 4 matches
//--->재활용 통의 병의 갯수를 우선 모두 더한다. total변수에 넣는다.
int ch_number; //최소 이동 횟수를 저장한다.
int temp=0;//각각의 조합에 대한 현재값을 저장한다.
int max=0; //여러 조합에 대해 가장 큰 값을 저장한다.
- EightQueenProblem2Discussion . . . . 4 matches
처음 문제를 해결할 때, 아무 어려움이나 장애도 없었나요? 지금 뒤돌아볼 때에 자신이 거친 과정 중에 "개선되었으면 하는 부분"이 있나요? 만약 이 문제를 다시 처음부터 새로 풀기 시작한다면 역시 똑같은 방식으로 프로그래밍을 할 것 같습니까(see also EightQueenProblemSecondTry)? 조금 더 깔끔하고 쌈박하게 푸는 방법도 있을까요? 어떻게 처음에 접근했더라면 더 "깨끗한" 코드가 나올 수 있었을까요? 비슷한 문제에 직면했을 때 일반적으로 적용할 수 있는 어떤 "추상적 패러다임" 같은 것을 발견할 수 있을까요? 그 코드를 난생 처음 보는 사람이 있다고 했을 때 몇 분만에 그 코드를 이해시킬 수 있겠습니까? 만약 그 사람 혼자 그 코드를 본다면 쉽게 이해할 수 있을까요? 주석이 없이도요? 혹시 코드 내에 중복되는 정보는 없습니까? 본인의 의도가 모두 분명히 드러나고 있습니까? --김창준
이문제는 처음 접해본 문제라 먼저 종이에 체스판을 그리고 직접 문제를 풀려고 해보았습니다. 그리고 생각해낸것을 종이에 적고(1여왕은 가로,세로,대각선 같은줄에 있음 안된다. 2,먼저 첫번째 여왕을 놓고 두번째 여왕이 놓일 위치를 결정한다. 3 검사하는 방법은 가로->세로->대각선 순으로 한다. 4 여왕8개가 다놓이면
하..하하.. BackTracking이.. 뭐죠? 거꾸로.. 추적한다는 이야기같은데.. ㅡㅡa --선호[[BR]][[BR]]
- EightQueenProblemDiscussion . . . . 4 matches
일단 구석에서부터 채워나가면 실패한다.. (7개까지는 되지만.. 여덟개는 되지 않는다) 뭔가 다른방법을 찾아 보아야겠다.
두번째.. 가장 작은 자리수를 채워나가면 실패한다 (역시 7개까지 되지만.. 여덟개는 되지 않는다.) 역시 다른방법을 찾아야겠다.
* Feelings - 느낀점: 시간이 넘 오래걸려서 한편으로는 쪽팔리긴 하다. -_-; 뭐.. 알고리즘 부분에 대해서 너무 시간을 오래 끌었다. 왜 그랬을까 생각하는데.. 아마 특정 알고리즘들이 먼저 머릿속에 떠올라서가 아닐까 한다. (이 부분에 대해서는 stack을 쓸까 recursive 로 대신할까 이리저리군시렁군시렁) 이런 부분에 대해서는 어떻게 test가능한 부분으로 접근해나갈수 있을까.
자신에게 항상 "What is the simplest thing that could possibly work?"라는 질문을 하면서 TestDrivenDevelopment를 했나요? 테스트/코드 사이클을 진행하면서 스텝을 작게 하려고 노력했나요? 중간에 진척이 별로 없는 경우, 어떤 액션을 취했나요? 그 때 테스트 사이클의 스텝을 더 작게하려고 했나요? 만약 다시 같은 문제를 새로 푼다면 어떤 순서로 테스트를 하고 싶나요? (직접 다시 한번 새로 시작하는 것도 강력 추천) 왜 다른 사람들에 비해 시간이 상대적으로 많이 걸렸을까요? 테스트 코드를 사용한 것이 그 시간만큼의 이득이 있었나요? TestDrivenDevelopment를 해내가면서 현재 패스하려고 하는 테스트 케이스에서 무엇을 배웠나요? 켄트벡이 말하는 것처럼 사고의 도구가 되어 주었나요? 참고로 저는 EightQueenProblem을 파이썬으로 약 30분 정도 시간에 50 라인 이내로(테스트 코드 제외) 풀었습니다. TestDrivenDevelopment로요. --김창준
- ExtremeBear/VideoShop . . . . 4 matches
검색정보 있을 시 간단하게 우선 열거 한다(비디오 제목, 분류만)
클릭하면 간단하게 우선 열거 한다(비디오 제목, 분류만)
비디오 번호 찍으면(원래는 바코드지만) 비디오 제목명이 뜨고 그 비디오는 대여상황으로 바뀌어야 한다.
관리자 메뉴로 들어갈 시 관리자 비밀번호를 입력해야 한다.
- FOURGODS/김태진 . . . . 4 matches
* 모든 A와 C에 대해서 한다.(n^2)
* B와 D의 후보를 찾아서 조건에 맞는지 확인한다.(A,C와 연결되어있는지) (n)
* 중복제거. A-B-C-D는 숫자로 주어지므로 우선순위를 정한다.(e.g. 작은 숫자 우선)
* A가 항상 가장 작은 숫자가 되도록 한다. B와 C의 크기는 바뀔 수 있는데, A-B-C-D와 A-C-B-D 둘 모두 다른 정답으로 보기 때문이다.
- FactorialFactors . . . . 4 matches
팩토리얼 함수는 많은 특성을 갖는다. 이 문제에서 주어진 정수 n을 다음과 같은 팩토리얼 식 n!로 표현했을때 인수항의 최대수를 구하고자 한다. 단 1은 제외한다. 예를 들어 보자.
입력은 여러개의 테스트 케이스로 이루어지며 각 케이스마다 다른 줄로 구분한다. 입력의 끝은 EOF이다. 각 라인은 하나의 정수 n을 가지며, n의 범위는 2 <= n <= 1000000 이다.
각 테스트 케이스마다 인수들의 최대수를 한 줄에 하나씩 출력한다.
- GUIProgramming . . . . 4 matches
윈도우 매니저 KDE에 사용되는 툴킷이다. 이름은 "cute"라는 단어에서 만들어졌다고 한다. 다양한 멀티플랫폼을 위한 기능이 존재하며 다국어 지원이 좋다. 또한 기본적으로 C++을 이용하지만, 파이선이나 펄, C를 위한 바인딩 기능을 제공한다.
최근 버전의 자바에서 이용하기 시작한 선사의 툴킷이다. 특징으로는 AWT보다 더욱 보기 좋은 그래픽을 제공한다. 또한 AWT와 달리 플랫폼에 비종속적이기 때문에 모든 플랫폼에서 동일한 모양을 보여준다. 그리고 클래스 라이브러리에 약간의 수정을 가함으로써 Windows 에서 기타 플랫폼 (예를 들자면 Mac)의 {{{~cpp Look&Feel}}}사용하는 것이 가능하다. 물론 -_-; 원칙적으로 특정 운영체제의 룩&필은 변경해서 응용프로그램을 개발하는 것은 정책상 불법의 범주에 속한다..
- GuiTestingWithMfc . . . . 4 matches
원하는 작동 모습은 이렇다.
4. List box 에서의 커서는 채워진 글에 위치한다.
==== 4. 'List box 에서의 커서는 채워진 글에 위치한다' 에 대한 테스트 ====
* 모달리스 다이얼로그인 관계로, 테스트를 run 으로 실행할 때 마다 Dialog 가 켜졌다 꺼졌다 한다. 이에 따른 속도의 지연의 문제. -> CDialog::ShowWindow(SH_HIDE); 로 해결 가능
- HelpOnConfiguration . . . . 4 matches
{{{$path}}}에 {{{./bin}}} 디렉토리를 추가한다.
윈도우에서 gvim을 사용하여 작동된다. 이 경우 {{{$path}}}설정을 제대로 해주어야 하는데, 예를 들어 다음과 같은 식으로 `config.php`에 설정을 한다.
메뉴의 대문(FrontPage)및 로고 그림이 연결하고 있는 페이지는 config.php의 다음 변수를 설정한다.
/!\ monisetup.php은 config.php를 변경할 수 있으나, 간단한 변경만 지원하고 세세한 변경은 지원하지 않는다. 최근 1.1.3 버전부터는 여러줄의 config.php 설정을 읽고 수정할 수 있다. 단, monisetup.php를 사용할 경우 코멘트는 모두 제거가 되므로 주의해야 한다.
- HotterColder . . . . 4 matches
뜨거워 차가워라는 게임이 있는데, 게임 방법은 다음과 같다. 일단 A가 방을 비우면 B가 방 안 어딘가에 어떤 물건을 숨긴다. A는 (0,0) 위치로 방에 다시 들어와서 방 안의 다양한 위치를 돌아다닌다. A가 새로운 위치로 움직였을 때, 물건을 숨겨둔 위치와의 거리에 따라 B가 이동 결과를 말해준다. 더 가까워지면 "뜨거워(Hotter)"라고 말하고, 멀어지면 "차가워(Colder)"라고 말하고, 차이가 없으면 "똑같아(Same)"라고 말한다.
입력된 각 행에 대해 물건이 놓여있을 가능성이 있는 위치의 넓이 총합을 출력한다. 한 줄에 하나씩 출력하며, 소수점 둘째 자리까지 출력한다. 조건에 맞는 영역이 존재하지 않으면 '0.00'을 출력한다.
- HowToBlockEmpas . . . . 4 matches
* empas 에 등록 철회를 요청한다. 만약 거부할 경우에는 무단링크로 처리 가능하다고 합니다. (거부당한 증거 필요) - 이에 대한 요청 방법 아시는 분?
* 이를 ZP 홍보기회로 이용한다. --a
* 우리 모두 위키의 정신을 한 번 되세겨 보자. 위키는 자유공간인데 그걸 계정을 만든다느니 어짼다느니 한다는 건 위키의 정신에 위배되는 행위라고 본다. delete 하지 못하게만 한 것으로 충분하지 않을까 싶은데.... From X
검색서비스를 제공하고 있는 곳에서는 로봇 에이전트를 사용하여 검색한다는거 아실겁니다. 이러한 로봇은 강제성은 없지만 로봇 배제 표준을 따르도록 프로그래밍 하는 것이 관례 입니다. 웹서버 루트에 robots.txt 파일을 다음과 비슷하게 작성하시면 되겠습니다.[[BR]]
- JAVAStudy_2002 . . . . 4 matches
목표: JAVA를 이용, 다중 Chattiing 프로그램을 작성한다. [[BR]]
*1:1채팅 프로그램을 가지고 예제를 완전 분석한다.
*2주간 클라이언트 부분 남은 2주간 서버 부분을 분석한다.
*한달간 목표로하는 다중 채팅 프로그램을 작성한다.
- Java2MicroEdition . . . . 4 matches
Java 2 Micro Edition (J2ME) 은 휴대전화나 PDA 같은 이동통신 기기등의 가전제품을 목표로 하고 있다. 그래서 초소형 장치에서 작은 장치에 이르는 이른바 소형 디바이스 들이 Java 를 사용할 수 있도록 지원하는 플랫폼이다.
그리고, 수많은 소비자/임베디드 디바이스들에 공통적으로 적용할 수 있는 플랫폼을 개발한다는 것도 자체적으로 한계가 있었다. 다양한 하드웨어, 다양한 운영체제, 그리고 전혀 호환성 없는 유저 인터페이스까지, 이 모든 차이점을 극복하면서 기존의 J2SE 기반의 자바와의 호환성까지 유지할 수 있는 솔루션은 불가능하다는 문제인식이 있었다. 그래서 등장한 개념이 컨피규레이션과 프로파일로의 플랫폼 분할이다.
컨피규레이션이란 자바 가상머신과 코어 API들에 대한 명세를 의미하고, 프로파일은 그 상위의 클래스 라이브러리, 즉 표준 API 집합에 대한 명세를 의미한다. 이러한 개념적인 분할이 필요한 이유는 메모리와 CPU등의 크기와 성능이라는 측면에서의 요구사항이 동일한 디바이스들의 집합을 하나로 묶어서 컨피규레이션을 정의하고, 이러한 컨피규레이션을 바탕으로 각 디바이스들의 기능, 혹은 버티컬 시장의 요구사항에 맞추어 프로파일을 정의함으로써, 플랫폼의 통일성과 다양성을 동시에 만족시킬 수 있기 때문이다.
* J2ME를 지원하는 하드웨어 개발[[BR]]
- LightMoreLight . . . . 4 matches
마부라는 사람은 특이한 행동을 한다. 복도에 n개의 전구가 있으면, 복도를 n번 왕복한다. i번째 갈 때 그는 i로 나누어 떨어지는 위치에 있는 스위치만 누른다. 처음 위치로 돌아올 때는 아무 스위치도 건드리지 않는다. i번째 왕복은 (이런 이상한 행동을 하면서) 복도를 한 번 갔다가 오는 것으로 정의된다. 마지막 전구의 최종 상태를 알아내자. 과연 그 전구는 켜져 있을까 아니면 꺼져 있을까?
그 전구가 켜져 있으면 "yes"를, 꺼져 있으면 "no"를 출력한다. 테스트 케이스마다 한 줄에 하나씩 출력한다.
- Linux . . . . 4 matches
리눅스와 비슷한 운영체제로는 정통적인 유닉스 클론 이라고 평가받는 [:FreeBSD BSD]계열이 있다. BSD계열중 가장 잘알려진 [http://www.kr.freebsd.org FreeBSD]의 경우 실제로 과거부터 hotmail.com, yahoo.com, cdrom.com 을 운영해온 네트워킹에 대한 안정성이 입증된 운영체제이다. 실제로 2.6커널의 도입이전에는 BSD의 네트워킹이 더욱 뛰어나다는 평가를 받았지만 일반적인 의견이었으나, 많은 구조적 변경을 통해서 리눅스는 현재 이런 점을 극복하고 BSD와 리눅스를 선택하는 것은 운영자의 기호일 뿐이라는 이야기를 한다. 최근에는 리눅스를 데스크탑의 용도로 까지 확장하려는 노력의 덕분에 로케일 설정관련 부분이 대폭 강화되었으며, 사용자 편의성을 고려한 WindowManager인 [Gnome], [KDE] 등의 프로그램이 대폭 강화되면서 low-level 유저라도 약간의 관심만 기울인다면 충분히 서버로써 쓸 만한 운영체제로 변모하였다.
본 페이지는 특별히 리눅스에 대한 실제 운영에 관한 이야기를 지양하려고 한다. 운영에 관한 내용은 리눅서들이 항상 말하듯이 네트워크의 바다에 널려있기 때문이다. 수많은 자료들을 대하면서 자신이 필요한 자료를 찾는 것도 리눅서가 되는데 필요한 덕목이다.
어느정도 실력을 쌓았다 싶으면 RunningLinux, Oreilly 를 읽기를 권한다. 이 책은 비록 초심자가 읽기에는 부적절하지만 APM설정에 어느정도 리눅스의 구조에 대해서 익힌 사람들이 리눅스를 운영하기 위한 전반적 기초지식의 대부분을 습득 할 수 있는 수작이라고 생각된다.
[BSD]도 상당히 유명한 편인데 이 커널의 제작자가 안알려진 것은 약간 특이한 일이라고 생각할 것이다. 이유인 즉은 BSD는 현재 메인테이너들에 의해서 커널이 관리되기 때문이다. 리눅스 커널은 커널 메인테이너 들을 의견의 제시를 하지만 실제로 방향을 결정하는 최종 결정권자는 리눅스 커널의 최초 개발자인 리누즈 토발즈이다. 그렇지만 BSD는 세계에 있는 BSD메인테이너(커미터)중에 몇명이 선발되어 커널의 개발을 주도하고 운영되기 때문에 사실 어떤 한사람의 이름이 특별히 나올 여지가 많지는 않다. 리누즈 토발즈는 좋은의미의 독재자라고 불리기도한다.
- LoadBalancingProblem . . . . 4 matches
SuperComputer 사는 N 개의 CPU 로 이루어진 슈퍼컴퓨터를 제작하였다. 각각의 CPU는 1에서 N 까지 번호가 새겨져 있으며 각각 독립적인 작업을 수행한다. 새로운 작업이 생기면 무작위로 한개의 CPU 에 그 작업이 할당된다. 이럴 경우 어떤 CPU 에는 작업이 엄청 많고 다른 CPU 에는 할당된 작업이 적거나 아예 없는 상황이 발생하게 된다. 이럴경우 각 CPU 에 작업을 적당하게 분배하여야 하는데 각각의 재분배 작업은 N번 CPU가 1-N, 1-N CPU 에 각각 하나씩의 작업을 전달하는 것이다. 차근차근 살펴보면,
(이 과정을 모든 CPU 가 최고-최저<=1 이 될때까지 반복한다)
IPSC 에는 입력을 파일로 받도록 하였으나 여기서는 직접 사용자가 다음과 같은 형식으로 입력한다.
1. 몇번 돌아보았는가? (1부터 N 까지 보았을때를 1 round 라고 한다)
- MFC/AddIn . . . . 4 matches
유용한 단축키 제공, 코드 생성을 간편하게 한다.
코드템플릿기능을 이용해서 자동으로 주석 생성을 가능케한다.
''종종 클래스 뷰가 이유없이 날아가는 일이 발생한다. 그런 경우를 위해 써먹으면 좋을 듯''
네트워크를 통하여 분산 컴파일 링크를 지원하는 툴. 컴파일 시간을 대폭 단축 시켜준다.
- MFC/CObject . . . . 4 matches
|| DECLARE_DYNAMIC() || 런타임 클래스 정보를 지원한다. ||
|| DECLARE_DYNCREATE() || 런타임 클래스 정보와 동적인 객체 생성을 지원한다. ||
|| DECLARE_SERIAL() || 런타임 클래스 정보와 동적인 객체 생성, 그리고 객체들의 시리얼화를 지원한다. ||
''각각은 보조 매크로가 필요하며 DECLARE_ 대신 IMPLEMENT_ 접두사가 붙은 형태이다. 보조매크로는 클래스의 구현 파일 부분에 포함되어야 한다.''
- MFC/Control . . . . 4 matches
하나의 컨트롤은 클래스와 연계될 수도, 안될 수도 있다. 정적 컨트롤의 경우 클래스가 필요없을 것 같지만 CStatic 이라는 클래스를 통해서 모양을 변경하는 것이 가능하다. 마찬가지로 버튼 컨트롤들의 경우도 대부분 Dialog 객체를 통해서 처리가 된다. CButton 클래스의 경우에는 컨트롤을 관리하는데있어서 객체가 필요할 경우에 이용하게 된다. 이러한 모든 컨트롤들은 모두 윈도우의 일종이기 때문에 CWnd 에서 상속된 클래스를 이용한다.
|| 버튼 컨트롤 || 한번의 마우스 클릭으로 응용프로그램과 통신. 라디오 버튼은 다른 버튼과 그룹으로 묶여서 다중 선택이 불가능하도록 한다.[[BR]]반면 체크박스는 개별적인 선택이 가능하다. [[BR]]푸시 버튼은 일반적으로 대화상자를 닫는데 사용된다. ||
|| 리스트 박스 || 기정의된 항목에서 선택을 할 수 있도록 한다. 텍스트 이외에도 아이콘을 표현하는 것이 가능하다. ||
이외에도 common control 로서 애니메이트 컨트롤, tree 컨트롤, spin button 등의 컨트롤 들이 존재한다.
- MFCStudy_2001 . . . . 4 matches
목표: MFC를 이용, 프로그램을 작성한다. [[BR]]
[인수]:코딩 삽질은 계속되어야 한다.--;[[BR]]
[상민]:아 그리고 --; 내가 말한적이 없는가 본대 나 Java도 한다. 그러고 보니 여태 내가 보인게 다 MFC관련것 밖에 없네, 참고로 당장에 내가 의논 할수 있는 것들이 MFC, Java, VB정도 이고(내가 생각해도 웃기는 인간 같아 --;), 뭐 내가 보기에는 다 어정쩡하지, 그런데 아마 지금 자네들 물음에는 답변할 수있을껄 랄라라~[[BR]]
[선호]:마지막에.. 그리는 루틴 간소화한다고.. 삽질을 해놨는데.. 크윽.. ㅡ.ㅡ 빨리 원상복귀시켜서 내야지~[[BR]]
- MemeHarvester . . . . 4 matches
* 이것은 [EventDrvienRealtimeSearchAgency] 의 일종이다.- 싸이월드를 보면 자신의 방명록에 글이 올라오면 바로 알려준다. 이를 모든 웹사이트에 대해서 가능하도록 하는 프로젝트, 물론 단순히 새글이 올라왔다고만 알려주는것은 아니다. 어떠한 새글이 올라왔는지 실시간으로 알려주며 키워드를 입력하면 해당 키워드가 포함된 글이 올라올때만 알려주기도 한다. 활용 예를 보면 어떤 프로젝트인지 잘 이해가 갈 것임..
|| 데이터 수집 || 로봇이 모든 웹을 돌아다니면서 데이터 저장 || 사용자가 특정 웹을 지정하고, 해당 웹에서 사용자가 원하는 키워드가 포함된 글이 올라올 경우나 새 글이 올라올 경우(옵션에 따라) 실시간으로 알려줌, RealTimeSearchEngine ||
|| 중고 매매 알선 || 특정 중고 제품을 원한다고 등록해놓으면 현재 등록되어 있는 중고 사이트중에서 해당 물품이 올라올 경우 사용자에게 실시간으로 알려준다. ||
클라이언트는 바뀐 데이터중에서 원하는 키워드가 포함되었는지 판단하고 사용자에게 보여준다.
- MineSweeper . . . . 4 matches
각 지뢰밭에 대해 Field #x:라고 적혀있는 메시지를 출력한다. 이때 x는 필드 번호를 나타내며 1에서 시작한다. 그 다음 줄부터는 n개의 줄에 걸쳐서 '.'문자 대신 그 칸에 인접한 칸에 들어있는 지뢰의 개수를 출력한다. 각 지뢰밭에 대한 출력 사이에는 반드시 빈 줄이 하나씩 있어야 한다.
- NUnit/C++예제 . . . . 4 matches
* NUnit이 깔린 폴더의 bin안에 보면 NUnit-gui.exe을 실행한다. 컴파일해서 나온 dll을 로딩해주고 run하면 테스트들을 실행해준다.
2. 전체 솔루션에 Managed C++ Library 프로젝트를 새로 추가한다. 이것을 테스트프로젝트라고 하자.
평소대로 하자면 이렇게 하면 될것이다. 하지만 현재 프로젝트는 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcmanagedextensionsspec_16_2.asp Managed C++ Extensions]이다. 이것은 C++을 이용해서 .Net을 Platform위에서 프로그래밍을 하기 위하여 Microsoft에서 C++을 확장한 형태의 문법을 제안된 추가 문법을 정의해 놓았다. 이를 이용해야 NUnit이 C++ 코드에 접근할수 있다. 이경우 NUnit 에서 검증할 클래스에 접근하기 위해 다음과 같이 클래스 앞에 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcmanagedextensionsspec_16_2.asp __gc] 를 붙여서 선언해야 한다.
그래서 MFC 예제는 네가 작성한 첫번째 예제와 동일한 수준으로 쓸수 있는 것이 아닐까 생각한다. 길을 열어줘 :)
- NiceMilk . . . . 4 matches
꼬마 토미는 빵에 우유를 찍어 먹는 것을 좋아한다. 빵에 우유를 찍을 때는 빵의 한 변이 컵 바닥에 닿을때까지 빵을 컵 속에 집어넣는다. 그래서 밑에 있는 그림과 같은 모양으로 빵을 우유에 적실 수 있다.
컵에 들어있는 우유의 양이 제한되어 있기 때문에 빵의 밑변과 우유가 이루는 수면 사이 영역만 우유로 적실 수 있다. 우유의 깊이는 h며, 빵에 우유를 계속 찍어도 우유의 높이는 줄지 않는다. 토미는 이런 식으로 최대한 넓은 영역을 우유로 적시려고 한다. 하지만 빵을 우유에 담그는 횟수는 최대 k번으로 제한되어 있다. 컵은 빵을 집어넣을 때 전혀 걸리지 않을 만큼 충분히 크다고 가정하자.
k번 담가서 빵을 우유에 적실 수 있는 최대 넓이를 소수점 밑으로 둘째 자리까지 출력한다. 각 테스트 케이스마다 한 줄씩 결과를 출력한다.
- ObjectOrientedReengineeringPatterns . . . . 4 matches
이 책을 처음 이용할때는 한번 '책에서 이런거 해보랬으니까 이거 해보면 어떨까?' 하면서 각 방법들을 해봤으면 한다. 여러 장점들을 얻어낼 수 있을것이다.
[1002] 의 경우 Refactoring for understanding 이라는 녀석을 좋아한다. 그래서 가끔 해당 코드를 읽는중 생소한 코드들에 대해 일단 에디터에 복사한뒤, 이를 조금씩 리팩토링을 해본다. 중간중간 주석을 달거나, 이를 다시 refactoring 한다. 가끔 정확한 before-after 의 동작 유지를 무시하고 그냥 실행을 해보기도 한다. - Test 까진 안달아도, 적절하게 약간의 모듈을 추출해서 쓸 수 있었고, 코드를 이해하는데도 도움을 주었다. 이전의 모인모인 코드를 읽던중에 실천해봄.
- Omok . . . . 4 matches
* 오목을 체크한다.
* 육목을 체크한다.
* 붙은 삼삼을 체크한다.
* 터보씨에서 지원하는 C 의 그래픽 함수들을 이용해서 colorful 한..-_-;; 그런 오목을 만드는 겁니다.
- OurMajorLangIsCAndCPlusPlus/float.h . . . . 4 matches
이 매크로의 값은 float형이 표현할 수 있는 최대 수를 의미한다. 이것은 적어도 1E+37이 된다. 값 자체도 float형을 갖는다. 표현 가능한 가장 작은 수는 -FLT_MAX가 된다.
|| 1 || 가장 가까운 수로 반올림한다. ||
|| 2 || 무한대로 양의 값을 향한다. ||
|| 3 || 무한대로 음의 값을 향한다. ||
- ParametricPolymorphism . . . . 4 matches
첫째는 최초로 제안된 다형성인 ParametricPolymorphism, 둘째는 어쩌다 생겨나 버린 Ad-hocPolymorphism 이렇게 두가지가 존재한다.
당연히 후자의 2개의 객체는 전자의 2개의 객체를 상속한다.
본디 폴리모피즘에서 추구한 방식 즉 파라메트릭 방식에 의하면 상기의 식을 적용할 때 동적 캐스팅이 필요가 없어야한다.
본디 파라메트릭 폴리몰피즘은 상기와 같은 문제의 해결을 위해서 방어적 수단을 제공한다.
- ProgrammingPearls/Column1 . . . . 4 matches
대부분의 언어에는 소트가 이미 구현되어 있다. 그런데 꼭 새로운 나만의 소트를 만들어야 될때가 있다. 레코드가 한 천만개쯤 된다고 하자.이것을 우리가 알고 있는 버블소트, 퀵소트 같은 것으로 하기에는 메모리가 많이 든다. 32bit(4byte)의 정수라고 한다면, 40메가바이트가 필요하다. 하지만 어떤 작업을 할때에, 우리가 소트에 할당할 수 있는 공간은 1메가 남짓이라고 가정하자. 시간이 많이 걸려서도 안된다. 어떻게 해야 할 것인가? 이 레코드들은 7자리 전화번호이기 때문에 같은 것이 없다고 한다.
첨에는 머지 소트를 했었는데 버렸다. 다른 방법으로는, 각각의 숫자를 4byte로 표현하면 현재 메모리에 250,000개를 담을 수 있다. 250000개를 소트하고, 또 250,000개 읽고... 이걸 40번 하는 거다. 머지 소트는 중간 작업 파일에의 엑세스가 자주 일어나고, 두번째 방법은 입력을 40번을 받아야 한다는게 문제다. 이것 두가지의 장점을 잘 조합해서 입력은 한번, 중간 작업 파일이 없게는 할 수 없을까?
이것의 수행시간은 Θ(n)이다. 이 챕터는 문제를 주의 깊게 분석하다 보면, 가끔 엄청난 이득을 가져다 줄때가 있다는 교훈을 주고 있다. 문제 정의는 문제 풀이의 90프로다. 일반적으로 많은 공간을 사용하면 적은 시간이 소요된다고 한다. 그런데 비트맵 소트는 시간도 줄고, 공간도 줄어들었따. 적은 데이터를 다루는 것은, 그것을 수행하는 데에 더 적은 시간이 든다는 것이다. 그리고 데이터를 디스크에 두기 보다는 메모리 상에 두는 것이 디스크 액세스 같은 시간 걸리는 일을 줄일 수가 있는 것이다. 프로그램을 간단하게 짜자. 유지보수도 쉽고, 견고할 것이다.
- ProgrammingPearls/Column5 . . . . 4 matches
* 큰 프로그램에서는 툴에서 제공하는 디버깅을 쓰지만, 이렇게 작은 알고리즘 같은 것에서는 print문 같은걸 쓰는게 편하다고 한다.
* 별거 없다. 그냥 배열을 생성한다음, for를 정해진 횟수만큼 돌려가면서 assert체크해준다. 끝이다.--; 이렇게 함으로써, 사이즈가 0, 1, 2의 제곱수, 2의 제곱수가 아닌수 모든 경우의 수를 테스트해볼수가 있다.
* 역시 별루 볼 거 없다. search 1000번 이상한다음 걸린 시간에 대해 그래프를 그려보면, lg n 의 그래프가 나온다.
* Debugging : 발판이랑 고립된 프로그램이나, 임베디드된 곳에서는 하기가 힘들다. Column5에서 설명한다.
- ProjectSemiPhotoshop/Journey . . . . 4 matches
* 현민이와 5분 단위의 PairProgramming 시도하였다. 10.24 때의 모임 보다 훨씬 성과가 있었다고 자평한다. 내 자신이 배우고 깨달은 것이 너무 많아, 정리하기가 힘들다. 그래서 현민이에게 미안한 느낌 마져 약간 든다.
* ["STL"] 관련 서적은 네가 가진게 없을꺼라고 생각한다. 학교에서도 가르쳐주지 않는 부분이라. 스스로 익혀야 한다. 너무나 단 과실이라, 꼭 보기를 권한다. 관련 내용은 ["STL"] 에서 ["STL/vector"],["STL/vector/CookBook"]를 참고하면 될꺼다. --["neocoin"]
- ProjectSemiPhotoshop/요구사항 . . . . 4 matches
시스템 설계에 관한 전반적인 밑그림을 그리기 위해, 팀은 스토리 구현에 필요한 세부적인 작업에 대한 아이디어 수집을 한다. 이 단계에서 고객은 프로그래머가 전혀 이해하지 못하는 부분을 알아 볼 수도 있다. 설계 프로세스를 지켜보면서 팀 전체는 공통의 지식과 자신감을 얻게 된다.
영상처리는 흑백 영상을 기본으로 한다.
* 이 과제의 점수를 30% (30점 / 성적 100점)로 한다.
* 레포트 표지에 자신이 수행한 내용 중 3)을 추가한 경우 설명서의 6, 7, 8과 같이 표시하고, 4)의 내용을 추가한 경우 설명서의 번호 9.를 표시한다.
- ProjectZephyrus/Server . . . . 4 matches
* Perspective를 CVS Repositary Explorering에서 {{{~cpp CheckOut}}}을 한다음, 컴파일이 안된다면 해당 프로젝트의 JRE_LIB가 잘못 잡혀 있을 가능성이 크다. (Win98에서 JRE가 잘못 설치되어 있을때) 방법은 ["Eclipse"]에서 Tip중 설치 부분을 찾아 보라
* 먼저 해당 프로젝트의 lib세팅을 수행 한다. 그래도 안되면 다음
* 모든 객체 정의 완성 상태. Rename과 코딩중에 필요한 부가적인 정보를 알아 내야 한다.
||원하는 사용자 강제 종료||{{{~cpp SocketManager, InfoManager}}}||.||.||
- QuestionsAboutMultiProcessAndThread . . . . 4 matches
* 스위칭을 한다면, 프로세서 A에 Time Slice를 조금 남겨놓고 스위칭을 하는 것인가? 즉 I/O 작업을 계속 할 수 있도록 CPU가 조금씩 I/O 작업을 진행하면서 프로세서 B를 실행하는 것인가?
* … 이 비유에 CPU Scheduler도 추가한다면 어떤 비유를 들 수 있을까?
* "물리적으로 여러개의 '흐름'을 처리한다."는 말씀은 '각각의 CPU들이 '''하나의 프로세스''' 내부의 '''여러 개의 쓰레드'''들 중 개별적으로 쓰레드를 선택해 처리한다'는 말씀이신가요? - [박성현]
- RandomWalk . . . . 4 matches
'술취한 바퀴벌레' 문제라고도 한다. 다음과 같은 격자에 술취한 바퀴벌레가 있다고 해 보자 [[BR]] [[BR]]
바퀴벌레는 임의의 한 점에서 시작하여서 임의의 방향으로 움직이게 된다. 이미 지나갔던 자리에 다시 갈 수 있으며 프로그램은 바퀴벌레가 각 위치에 몇번 갔는지 기억하여야 한다. 프로그램은 바퀴벌레가 모든 지점에 적어도 한번 이상 도달하였을 경우 끝난다. 바퀴벌레는 가로, 세로, 대각선으로 한칸 씩만 움직일수 있으며, 바퀴벌레가 움직이는 방향을 랜덤하게 만드는 것은 각자가 생각해 보도록 한다.
* 격자의 가로, 세로의 크기를 입력받을때. 엄청나게 큰 크기를 입력하면 어떻게 할 것인가? 배열의 동적 할당을 이용해서 2차원배열을 어떻게 사용할까? (c/c++은 자바와 달리 2차원배열을 동적할당 할 수 없다. 따라서 각자가 pseudo (혹은 imitation) dynamic 2D array 를 디자인하여야 한다)
- RefactoringDiscussion . . . . 4 matches
Refactoring 과 관련된 토론, 질문/답변의 장으로 활용한다.
refactoring 의 전제 조건은, '''Refactoring 전 후의 결과가 같아야 한다.''' 라는 것이다.
하지만 이것도 임시 방편일뿐, '''위험은 존재한다'''. lastUsage()의 값이 Integer.MIN_VALUE 이거나, Integer.MAX_VALUE 라면? (이런일이 결코 일어날 수 없다고 장담할 수 있는가?)
> 하지만 이것도 임시 방편일뿐, 위험은 존재한다.
- ReleasePlanning . . . . 4 matches
릴리즈 계획은 프로젝트의 전반적인 계획을 다룬다. 릴리즈 계획은 개별 반복에 대한 반복 계획을 포함한다.
기술자들이 기술적인 결정을 내리고 현업 사람이 업무에 대한 결정을 내리는 것은 매우 중요한 일이다. 릴리즈 계획은 몇가지 규칙을 갖고 있는데 이것은 프로젝트에 참여한 모든 사람이 자신의 결정을 내리게 한다. 이러한 규칙은 각각이 수행할 계획을 협상하는 방법을 담고 있다.
다른 것에 종속되지 않고, 다른 없무도 없이 테스트를 포함한다. 고객은 어떤 스토리가 가장 중요한지 또는 우선순위가 높은지를 결정한다.
- ResponsibilityDrivenDesign . . . . 4 matches
Object 란 단순히 logic 과 data 묶음 이상이다. Object 는 service-provider 이며, information holder 이며, structurer 이며, coordinator 이며, controller 이며, 바깥 세상을 위한 interfacer 이다. 각각의 Object 들은 자신이 맡은 부분에 대해 알며, 역할을 해 내야 한다. 이러한 ResponsibilityDrivenDesign 은 디자인에 대한 유연한 접근을 가능하게 한다. 다른 디자인 방법의 경우 로직과 데이터를 각각 따로 촛점을 맞추게끔 하였다. 이러한 접근은 자칫 나무만 보고 숲을 보지 못하는 실수를 저지르게 한다. RDD는 디자인과 구현, 그리고 책임들에 대한 재디자인에 대한 실천적 조언을 제공한다.
- RubyLanguage/Container . . . . 4 matches
* 객체 자체를 변경하면 그 객체를 참조하고 있는 모든 배열요소의 값도 변화한다.
* 0부터 시작한다.
* 해당하는 요소가 존재하지 않는 첨자에 대해서는 nil을 반환한다.
* 좌변에 지정한 요소개수보다 우변 식이 많은 경우 배열의 크기를 늘려서 대입한다.(line 9)
- ScheduledWalk/창섭&상규 . . . . 4 matches
* 원하는 여정을 만들어 줄 수 있다.(GetJourney) | 여정(Journey)
* 모든것을 진행한다.(Execute) | 사용자(User), 판(Board), 바퀴벌레(Roach), 여정(Journey)
진행자는 사용자에게 진행에 필요한 정보를 요청한다. 사용자는 판 크기, 바퀴벌레의 시작위치를 알려주고 여정을 만들어 준다. 진행자는 정보에 따라 판을 만들고, 바퀴벌레를 만든다. 그리고 나서 바퀴벌레에게 여정을 주며 판 위에 올라가서 판 위를 움직이도록 명령한다. 바퀴벌레는 여정을 참고하여 자취를 남기면서 판 위를 움직이고 여정이 끝나거나 판의 모든 곳에 자취가 남으면 움직이는것을 멈춘다. 바퀴벌레가 멈추면 진행자는 판을 사용자에게 보여준다.
- SeparatingUserInterfaceCode . . . . 4 matches
도메인모델로부터 프레젠테이션 부분이 분리되었을때, 도메인 코드의 어떠한 부분도 presentattion 코드와 관련이 없도록 해야 한다. 그리하여 만일 WIMP GUI 어플리케이션을 작성했을때 당신은 WIMP 인터페이스를 통해 할 수 있는 모든 것들을 command line interface 로 작성할 수 있어야 한다. WIMP 코드로부터 어떠한 코드도 복사하지 않고.
도메인모델로부터 퍼시스턴스 부분이 분리되었을때, 도메인 코드의 어떠한 부분도 퍼시스턴트 레이어 코드와 관련이 없도록 해야 한다. 만일 MySQL Repository을 작성했을때 당신은 MySQL 인터페이스를 통해 할 수 있는 모든 것들을 Flat File Repository interface 로 작성할 수 있어야 한다. MySQL 코드로부터 어떠한 코드도 복사하지 않고.
- Slurpys . . . . 4 matches
스러피(Slurpy)란 어떠한 속성이 존재하는 문자열이다. 문자열을 읽어서 스러피가 존재하는지를 판단하는 프로그램을 작성해야 한다.
첫 줄에는 {{{~cpp"SLURPYS OUTPUT"}}}을 출력한다. N 개의 문자열 입력에 대해서 각 문자열이 스러피인지를 {{{~cpp "YES"}}} 또는 {{{~cpp"NO"}}}로 표기한다. 마지막으로 {{{~cpp"END OF OUTPUT"}}}를 출력한다.
- SmallTalk/강좌FromHitel/소개 . . . . 4 matches
Smalltalk를 생각한다면? 아마 명령어 하나를 수행하는데 족히 몇 십초는 걸릴
체에게 지시를 내리면, 객체는 그 지시에 따라 반응한다"는 개념을 토대로 문법
한다는 것이 마음이 아픕니다만...)
명세와 대화식 개발를 지원하는 Smalltalk를 공부하는 것 중에, 과연 어떤 것이
- SmallTalk_Introduce . . . . 4 matches
Smalltalk를 생각한다면? 아마 명령어 하나를 수행하는데 족히 몇 십초는 걸릴
체에게 지시를 내리면, 객체는 그 지시에 따라 반응한다"는 개념을 토대로 문법
한다는 것이 마음이 아픕니다만...)
명세와 대화식 개발를 지원하는 Smalltalk를 공부하는 것 중에, 과연 어떤 것이
- SmalltalkBestPracticePatterns/DispatchedInterpretation . . . . 4 matches
인코딩은 프로그래밍에 있어서 필수적이다. 몇몇 관점에서 당신은 말한다, "약간의 정보가 있다. 어떻게 그것을 표현할 수 있는가?" 정보를 인코딩하는 결정은 하루에도 아주 많이(a hundred times a day) 발생한다.
과거로 돌아가서 데이타가 연산으로부터 불리되었을 때, 그리고 종종 그 둘이 만나야 했을 때, 인코딩 결정은 중대한 것이었다. 너의 어떠한 인코딩 결정은 연산의 많은 다른 부분들을 점차적으로 증가시켜나아갔다. 만약 잘못된 인코딩을 한다면, 변화의 비용은 막대하다. The longer it took to find the mistake, the more ridiculous the bill.
객체들 사이에서 어떻게 책임을 분배하는가는 중요한 결정이다, 인코딩은 그 다음이다. 잘 요소화된 프로그램들의 대부분에서, 오직 하나의 객체만이 한 조각의 정보에 관심을 가진다. 객체는 정보를 직접적으로 참조하고 사적으로 필요한 모든 인코딩과 디코딩을 수행한다.
- SpiralArray/Leonardong . . . . 4 matches
아이디어는 JuNe 선배가 말했던 것이다.(저번 자바 컨퍼런스에서 였던가..) 한 번 나선형으로 진행되는 것을 같은 층으로 본다. 그러면 가장 바깥쪽은 1층, 다음 안쪽은 2층 이런 식으로 안쪽으로 갈수록 높이가 높아진다. 한 사람이 피라미드를 한 바퀴 돌고 다음 층으로 올라가면서 자신이 들렀던 곳이 몇 번째인지, 좌표는 무엇인지 기억한다. 한 층을 다 돌면 시작했던 자리로 돌아오기 때문에 중복해서 기억한 좌표는 지우고 다음 층으로 이동한다.
현재는 행렬 구성이 비효율적이다. 움직였던 기록을 가지고 행렬을 구성하기를 반복한다.이것을 수정할 때 좀더 효율적으로 작동하게 만들어야겠다. Mover클래스, Array클래스의 종료검사, 테스트 케이스는 확실히 Refactoring이 필요하다.
코드 안에서 헤매기 보다는 정확히 생각을 정리해서 구현해야 한다. 이것 해보고 저것 해보는 사이에 시간이 너무 많이 흘러갔다. 결국에 답은 나왔지만, 이보다 빨리 할 수 있을 것이다.
- SystemEngineeringTeam/TrainingCourse . . . . 4 matches
* stylesha.re처럼 이어지는 도메인(rabier.re)으로 정하고 싶어 .re를 알아보았다. .re는 프랑스령의 한 섬인 레위니옹의 ccTLD. AFNIX에서 관리한다고 한다. 처음에 AFNIX 사이트에서 도메인 구입을 하려 했으나 회원가입도 변변히 못하고 쫒겨났는데 다시 찾아보니 [http://ko.wikipedia.org/wiki/.re 레위니옹 이외의 조직 또는 개인에게 아예 할당을 하지 않는 모양..]
* .com은 이미 등록되어있었고, .org .net .info .me 등 중에서 .net이 가장 싸서 이걸로 결정, 주로 네트워크회사 등에서 사용한다지만 가격이 우선함.
* 서영주 - 사용 비율, 포럼의 활성화 정도도 ubuntu쪽이 더 높은 것 같고 CentOS쪽이 안정성이 높다고는 하지만 어차피 지원을 받을 수 있는 RHEL과 비교하면 크게 차이는 없다고 한다. 하지만 써본 적이 없으므로 배우고 싶다는 이유로 CentOS쪽을 써보고 싶습니다.
- TCP/IP_IllustratedVol1 . . . . 4 matches
* "'''''The word illustrated distinguishes this bool from its may rivals.'''''" 이 책의 뒷커버에 적혀있는 말이다. 이말이 이 책을 가장 멋지게 설명해준다고 생각한다.
* 한 주에 둘에서 셋 정도의 챕터를 진행한다.
* 공부해온 내용을 토의하면서 좀더 깊게 이해한다.
* 서로가 서로에게 견제의 대상이 되며, 게으름과 귀찮음을 미연에 방지한다.
- TddWithWebPresentation . . . . 4 matches
그러다가, 최근 프로젝트 하는중에 ModelViewPresenter 라는 개념에 대해 익히게 되었다. 정확한 개념에 대해서는 잘 잡지를 못했지만, HumbleDialogBox 라는 아티클을 보니 대강 감이 온것 같았다. 중요한 건 표현부분에 대해서 가능한한 로직이 남지 않아야 한다는 점이고, 표현부분을 사용하는 쪽 입장에서도 가능한한 추상화레벨이 높은 메소드를 쓸 수 있어야 한다는 점이다.
하지만, 이건 리팩토링 단계에서의 이야기고, 만일 새 코드를 작성하는 중의 UI 부분 presenter 를 TDD로 구현한다면 어떻게 될까? 아마 저 MockViewPresenter 부분이 먼저 구현되고, 이 인터페이스를 근거로 ViewPresenter 를 만든 뒤 HTML 코드 부분을 작성하면 될 것 같다. 실제 UI 에 어떠어떠한 것이 표현되느냐는 AcceptanceTest 단에 맡기면 되리라.
다음부터 action 부분을 작성한다면?
- TdddArticle . . . . 4 matches
TDD 로 Database TDD 진행하는 예제. 여기서는 툴을 좀 많이 썼다. [Hibernate] 라는 O-R 매핑 툴과 deployment DB는 오라클이지만 로컬 테스트를 위해 HypersonicSql 이라는 녀석을 썼다고 한다. 그리고 test data 를 위해 DBUnit 쓰고, DB Schema 제너레이팅을 위해 XDoclet 와 Ant 를 조합했다.
류군 이야기로는 Oracle 의 경우 설치하고 딱 실행하는데만 기본 메모리 200메가 잡아먹는다고 한다. -_-; 로컬 테스트를 위해 HypersonicSql를 쓸만도 하군.; (In-memory DB 식으로 지원가능. 인스톨 할것도 없이 그냥 콘솔에서 배치화일 하나 실행만 하면 됨. 근데, JDBC 를 완벽히 지원하진 않는 것도 같아서, 약간 애매. (ResultSet 의 first(), last(), isLast() 등의 메소드들이 실행이 안됨)
여기에서의 TDD 진행 방법보다는 Reference 와 사용 도구들에 더 눈길이 간다. XDoclet 와 ant, O-R 매핑 도구를 저런 식으로도 쓸 수 있구나 하는 것이 신기. 그리고 HSQLDB 라는 가벼운 (160kb 정도라고 한다) DB 로 로컬테스트 DB 를 구축한다는 점도.
- TheTrip/이승한 . . . . 4 matches
double stu[1000] = {0.0}; //입력을 저장한다.
double endSum[10] = {0.0}; //결과값을 저장한다.
stu[i] = tempInput; //각학생의 경비정보를 저장한다.
sum += tempInput; //합을 누적합계한다.
- TugOfWarInput . . . . 4 matches
이 자료를 TugOfWar 프로그램에 넣으면 (심사 서버에서) 10초 이내에 다음 결과가 나와야 한다.
참고로 TugOfWar 온라인 로봇 심사위원은 틀렸다. 잘못된 프로그램(50,50,100,200 경우 답이 150,250이어야 하는데, 200,200인 프로그램도 통과)을 걸러내지 못한다.
제대로 작성된 프로그램은 당연히 온라인 로봇 심사위원의 테스트 케이스를 모두 통과하며, 게다가 덤으로 50,50,100,200 인 경우에도 통과한다. 하지만 Programming Challenges 책에 실린 모법 답안 등의 프로그램은 로봇 심사위원의 테스트는 통과하지만 50,50,100,200 같은 경우는 실패한다.
- UbuntuLinux . . . . 4 matches
하지만 문제는 다시 부팅을 하면 인터넷 연결이 안 되있다는 점이다. 먼저 어떤 명령이 진짜 인터넷 공유를 가능하게 하는지 알아내야 했고, 다음에는 이를 자동으로 실행하도록 하는 단계를 밟아야 한다. 꼭 프로그래밍 하면서 디버깅 하는 느낌이랄까.
우분투는 부트로더로 grub이란 녀석을 사용한다. 원래는 GNU에서 쓰는 건데 좋길래 리눅스에도 사용하는 추세라는 글을 웹을 탐험하던 중에 읽었다. 아하 그렇군요. 그럼 grub을 사용해서 윈도우를 부팅하면 되겠네요.
리눅스가 설치된 하드를 primary disk로 쓰고, 이녀석 이름은 hd0이다. 윈도우즈가 설치된 하드는 secondary disk이니까 hd1이다. (리눅스에서는 각각을 hda, hdb로 인식한다.) 명령을 설명하려고 해도 명료하지 않아 그냥 넘어가야겠다. (윈도우로 부팅할 때는 트릭을 쓰기 때문에 리눅스 파티션이 보이지 않는다.)
이 명령을 이용한다. 제길 이거만 알았어도 eth0이 왜 안잡히냐고 삽질할 필요도 없었을 텐데.. 알고보니 eth2에 잡혀있는 것이 아닌가!
- UnityStudy . . . . 4 matches
* 유니티가 그저 게임엔진일 줄 알았는데, 뭐 많네요. 시뮬레이팅을 더 많이 지원하는 군요. 꽤나 재미있는 걸 알아갑니다. 이제 슬슬 적응도 되면 많은 곳에 쓸 것 같네요ㅎㅎ 재미있었습니다.
* Cube와 Sphere를 Scene에 등록한다.
* 객체가 방향키를 이용해서 움직일 수 있도록 하는 코드를 MonoDevelop 툴을 이용, Javascript로 작성해서, Cube에 등록한다.
- Asset에서 Prefab을 만든 뒤에, Object를 Prefab에 드래그해서 등록한다. Prefab에 등록된 모든 Object에 동일한 설정(텍스쳐 등)이 등록된다.
- UniversalsAndParticulars . . . . 4 matches
뭘 가르쳐야 하나. 나는 특수를 통해 보편을 가르쳐야 한다고 생각한다. 특수를 가르치느라 보편이 가리워지면 안된다.
대학에서는 특히 보편을 배워야 한다. 소학이 아니고 대학이기 때문이다. 그러나 보편은 특수를 통할 때에 맥락을 갖는다.
자바 스윙에서 어떤 API를 통해 어떻게 그림을 그리는지를 가르치기 보다, Event Driven Programming을 가르치되, 스윙이라는 맥락을 방편으로 이용해 가르친다. 해당 프레임웍의 API가 복잡한 경우, 학습자들은 오히려 그 API를 외우고 공부하느라 더 중요한 것을 잊을 수 있다. 따라서 이런 경우 가르치는 사람이 미리 좀 더 추상적인 차원의 레이어를 만들어(이를 교육학에선 스캐폴딩이라 한다) 제공할 수 있다.
- UseCase . . . . 4 matches
나는 Alistair Cockburn이나 KentBeck, Robert C. Martin 등의 최소 방법론 주의(barely sufficient methods)를 좋아한다. 나는 이 미니말리즘과 동시에 유연성, 빠른 변화대처성 등이 21세기 방법론의 주도적 역할을 할 것이라 믿어 의심치 않는다. Robert C. Martin이 자신의 저서 ''UML for Java Programmers''(출판예정)에서 [http://www.objectmentor.com/resources/articles/Use_Cases_UFJP.pdf Use Cases 챕터]에 쓴 다섯 페이지 글이면 대부분의 상황에서 충분하리라 본다.
그는 UseCase와 UML의 UseCase Diagram은 다른 것이라고 말하며, UseCase를 기록할 때 단순히 NoSmok:IndexCards 에 해당 UseCase의 이름만 기록해 두고, 나머지는 구두로 의견교환을 할 것을 추천한다. 그렇게 하고 시간이 지나면서 구현 내용이 점점 중요해지면 그 구체적인 내용을 카드의 여백에 채워넣으라고 한다.
이렇게 해서 최소 하나의 프로젝트에서만이라도 "제대로 활용"을 해보고 나면 비로소 필요에 따라 "더 많은 것"을 요할 수 있다. 이 때에는 본인 역시 Robert C. Martin과 같이 Alistair Cockburn의 ''Writing Effective Use Cases''(2000년 Seminar:JoltAward 수상)를 권한다. (인터넷에서 초고 pdf화일을 구할 수 있다)
- WebMapBrowser . . . . 4 matches
* 처음 시작할때는 실제로 브라우저를 만드는것까지는 아니고, 간단하게 웹에서 보여주는것으로 시작한다.
* 현재의 브라우저는 단순히 점에서 점으로 가는 1차원이다. 이를 노드와 노드의 관계로 보여주는 2차원으로 확대한다. 즉 패러다임의 전환
* 또한 각 노드에 자신의 태그도 부착 할 수 있게 하여서 각 노드들이 여러 태그로 분류 될 수 도 있게 한다.
* 추후에 파이어볼 검색 프로젝트에서 역링크 정보까지 제공해주게 되면 한 웹에서 다른 웹으로 나가는 엣지 뿐만 아니라 다른 노드에서 현재 노드로 들어 오는 엣지도 볼 수 있고, 또한 역링크를 바탕으로 각 노드들의 관계도를 1단계 2단계 이상으로 파악할수 있고, 인기 순위도 파악한다.
- WikiSandBox . . . . 4 matches
써 봅시다. 디귿자 괄호 안에 원하는 페이지이름을 넣으면 됩니다.
* 특정 페이지를 없애려 할 때, DeleteThisPage 과정 없이 바로 DeletePage 한다. ( [페이지지
* 아직 내용이 없는 페이지들을 일단 만들어 열거한다.
고 원하는 내용을 쓰시기보다는 좀 더 노스모키안들의 행태를 지켜보실 필요가 있습니다. 내용상
- Z&D토론/History . . . . 4 matches
데블스가 제로페이지에서 하나의 프로젝트를 장기적으로 수행하는 것도 아니고 특화된 분야의 공부(제이스톰같이)를 하는것도 아니었는데도 불구하고 일회성 팀이 아닌 후배를 충원하는 소모임으로 대를 이어가게된 배경이 궁금합니다.
여러 소모임들을 활성화 하여 다수의 회원들의 활동을 적극적으로 만들어 보고자 각자의 노선을 진행한걸로 기억합니다. 제가 처음 들어왔을 때에도 폴리곤 데블스 등의 소모임들이 존재했었던 걸로 기억합니다. 여기서 한가지 생각해 보아야 할 것은 소모임은 소모임이란 것입니다. .... 소모임에 대한 제 생각은 어떤 ''소속내에서만'' 이루어져야 한다고 생각했기 때문입니다. --Jihwan Park
학회에서 소모임을 나누는 기준이 잘못되었던건 아닐까 생각이 드네요. 뚜렷한 기능의 특화없이 나누어진 소모임이 한 학회안에서 지속적으로 유지되는 것은 어떤 의미를 가질까요. 제로페이지란 인력풀, 자원풀에 경계를 긋고 둘로 나누는 무의미한 일이 아닐까요. 저는 기능 중심으로 조직이 나누어져야한다고 생각합니다. 그리고 그 기능을 다한 조직은 빨리 소멸되고 새로운 조직이 구성되는 일이 반복이 되어야한다고 생각합니다. 결국 그 조직은 소모임보다는 프로젝트팀이란 이름이 적합하다고 봅니다. -- 이덕준
- Z&D토론백업 . . . . 4 matches
현재의 ZeroPage 서버를 이용한다.
여름방학때 기존 데블스의 방식으로 밤샘 스터디를 한 후 최종 정회원을 정한다.
1월 31일 아침 6시 16분 - 데블스 게시판에서는 지금, 내부 의견정리도 없이 통합회의에 참석하여 성급한 결정을 내렸다고 생각하는 분위기 입니다. 데블스 선배님들의 의견수렴 없이 이루어진 통합 결정인 만큼, 통합 자체에 대한 거부감이 표출되고 있습니다. 이대로라면, ZP와 데블스의 통합이 아니라, ZP의 데블스 00 01 회원 흡수 가 될것입니다. 데블스 선배님들은 데블스가 사라졌다고 생각하시면서 더더욱 데블스 저학번 회원님들과 멀어질테니까요. 기존 데블스OB만 따로 활동하거나, 따로 게시판을 쓰자는 말도 나오고 있구요. 이러면 통합이 아닙니다. 저도 이런 분위기에는 반대합니다. 지금부터라도 다시 시작으로 돌아가서, 데블스 선배님들의 의견수렴을 해야한다고 봅니다. 일전에 선배의 말 보다는, 활동의 주체가 되는 후배님들의 결정이 더 중요하다는 말씀을 드리긴 했으나, 그것은 선배들의 지지와 후원을 배경으로 하는 것이지, 지금처럼 선배들이 등돌리는 상황에서는 이야기가 다르지요. ZP와 데블스 선배님들 전체의 의견을 들어보는 방법을 마련해봅시다. 만약 계속해서 강한 반대가 나온다면 통합논의 자체가 다시 원점으로 되돌아갈 공산이 없지 않습니다. 허나, 데블스 후배님들 회원 단 두명만의 의견으로 통합 결정을 한 것이라면, 그 자체가 후배의 월권이 아닐까요? 데블스가 단 두명만의 학회는 아니니까요. 데블스 선배님들의 의견을 더 귀담아 들어봅시다. And.. ZP 선배의 입장에서 이번 통합 결정에 대해, 저는 여러분의 결정을 지지합니다. 그러나 지금처럼 "데블스 흩어서 회원 흡수하기" 분위기라면 제고해야 하지 않나 싶습니다. --혀뉘
*제가 말씀드린 ''고학번이 주도적인 프로젝트 운영''이라는 것이 생각난건 99년에 과거 전시회 자료를 뒤져 볼때 였습니다. 전시회 참여 작품중에 무엇가 '대단한걸~' 하고 느끼는 많은 부분이 3학년과 4학년의 작품이고, 1,2학년의 작품이라면 3,4학년의 도움이 있는 작품들이 많았습니다. 위 글에도 잠깐 언급했지만, 인터넷과 함께 학생들이 접할수 있는 주제의 다양성 때문에 3,4학년 이라도 완전히 방향을 잡은 사람은 소수입니다. 하지만 분명 1,2학년에 비하여 그 질이 높아진 것은 분명하죠. 일단 고학번 혹은 고학년 주도적인 프로젝트의 의미는 단순히 고학년의 2명 이상의 프로젝트 활동이 좀더 활성화 되어야 한다는 생각에서 언급을 한것입니다. 군입대를 마치고 왔거나, 병특 이후에 복학한 회원들이 단체로 프로젝트를 추진하는것을 아직 보지 못했습니다. zp의 정모 토론에서 꾸준히 제기되어 왔던 이야기는 개인 스터디이고, 이중에 학회의 양에 부정적 영향을 끼치는건 1학년의 관리 부실과 개인 스터디이고, 2학년의 개인 스터디는 학회의 양과 질에 둘다 부정적 영향을 끼치는 것 같고, 학회의 질에 부정적 영향을 끼치는건 3,4학년의 개인 스터디이라고 생각합니다. 프로젝트의 용이성과, 개인 스터디에 해당하는 Semi project와 관심분야를 공개하는 개인 페이지로 다른 사람의 참여의 유도를 해서 Regular project로 만들어 나가려는 토양의 제공을 위해 현 zp에서는 위키를 통한 프로젝트 추진을 장려하고 있으며, 이제 저도 고학년에 고학번이니 쿨럭 열심히 해야죠. ^^;; '''주도적'''의 표현에서는 저학년이 고학년의 프로젝트 모습을 보면서 관심분야를 넓히고, 안목을 익히는데 있습니다. 물론 같이 하는것이 주도적의 마지막 종착점이고, 예를 들자면 현재 OS 만들기를 하고 게시는 선배님 위키에, 관심있는 00들이 접근하는것이라고 할수 있죠. -- 상민
- ZP의 나아갈 길 . . . . 4 matches
어떠한 조직이 잘 굴러가기 위해서는 먼저 그 조직의 정체성과 가치체계가 분명해야 한다
조직은 매순간 선택의 기로에 서게 되는데 지리멸렬 하지 않기 위해서는 그 기준이 정체성과 가치체계에 바탕을 두어야한다
제로페이지의 정체성과 미래에 대해서는 수도 없이 논의되었었다. 내가 1학년 때에도 그랬고 내가 회장이 되어 데블스와 통합했을때도 그랬었다. 내가 3학년이 되어 휴학을 했을 때도 그랬고 이젠 내가 제대 후 복학했는데도 같은 논의는 계속 되고 있다. 이는 발전하는 모습일까 아니면 계속해서 맴도는 정체된 모습일까. 나는 온라인 상의 회의를 결코 가볍게 여기지는 않는다. 하지만 좀 더 활동적으로 실행에 옮기기 위해서는 오프라인 모임이 절대적이라고 생각한다. 제로페이지가 정말로 모습을 바꾸고 싶다면 어느정도 알을 깨고 나와야하는 고통이 따를 것이라고 생각한다. - 이창섭
- ZeroWikiVsOneWiki . . . . 4 matches
위에 보이는대로 한 가지 목적으로 원위키를 나눴는데, 그 목적을 '''처음'''사용하는 분들이 잘 모르고 있지는 않았나? 아니면 많은 다른 사용하는 분들도 모르고 있지는 않았나? 나는 '''처음'''쪽인지 '''함께'''하는 쪽인지 알지는 못하겠지만, 처음에는 생각하고 있었으나 언제부터인가 '''목적'''을 잊고 있었다. 항상 들어가는 페이지(주로 [실시간멀티플레이어게임프로젝트])만 들어가다보니 생긴 현상일지도 모르겠다. 아무튼 '''목적'''잘 알려지지 않았다고 생각한다.
때문에 목적을 잘 알리고 더 시험해볼 거라면 원위키를 유지해야 한다고 생각한다. 그렇지 않다면야 원위키가 필요하지는 않으리라 생각한다. 이 페이지도 영동이형 말대로 참여가 없다면, 토론이 이루어지기는 힘들겠지만 말이다. -[Leonardong]
- [Lovely]boy^_^/Arcanoid . . . . 4 matches
* 공 여러개 돌아댕기는것도 넣어볼까 한다.
CArcaDoc : 위의 객체들을 포함한다. 블록은 벡터로 저장한다. 아이템은 먼저 나온걸 먼저 먹게 되므로 덱으로 저장한다.
- django . . . . 4 matches
* 개발이 끝나고 실제로 서비스할 경우에는 apache + mod_python 으로 올려야 한다.
* mysql 은 사용자를 생성하고 settings.py 파일을 설정한다. 그리고 pysqlite와 다른 점은 DB 이름을 넣고 나서 mysql 들어가서 따로 DB를 만들어 줘야 한다. 그리고 사용자도 만들어 줘야 한다.
- erunc0/COM . . . . 4 matches
* 간단한 C++ 클래스로 시작하여 재사용 가능한 이진 Component로써 클래스를 사용하는 법을 간단한 예제를 통해서 배우게 된다. 처음은 DLL을 통해서 client 에게 제공하는 문제에 대해 말하며. 다음에는 이렇게 제공되어진 컴포넌트에 대한 방화벽(?)등에 대해 논의 하면서 인터페이스를 통하여 컴포넌트 내의 은닉화를 위한 방법들을 설명해준다. 그리고 그다음으로는 abstract class를 사용해 (virtual function을 이용한 방법) 인터페이스의 확장에 관한 부분까지 설명한다. 그리고 끝으로는 RTTI 이용하여 더 나은 인터페이스의 확장 방법과 다중의 client 에게 컴포넌트를 제공할수 있게 만드는 부분까지 설명한다. 한서라서 그런지 애매한 용어들이 많이 있어서 아직도 이해가 가질 않는 부분이 많았다. 한번더 chapter 1응 읽은 후에 정리하고 chapter 2로 넘어가야 하겠다.
* 개인적으로 COM 구현할때는 (정확히야 뭐 ActiveX Control) 손수 COM 구현하는데 하는 일들이 많아서 -_-.. (Interface 작성하고 IDL 컴파일해주고, COM Component DLL Register 해주고 그다음 COM Component 잘 돌아가는지 테스트 등등) 거의 Visual Studio 의 위자드로 작성한다는. --a 그리고 COM 을 이해할때에는 OOP 에 대한 좀 바른 이해를 중간에 필요로 할것이라 생각. 디자인 패턴에서의 Factory, FacadePattern 에 대해서도 아마 읽어볼 일이 생기기라 생각.
* '정리'에 얽매이지 않기를. 뭐, 영현 자네가 공부하면서 성장했다면 그것으로 족한것.. (예전에는 '정리'해야 성장한다 식으로 열심히 사람들을 설득했지만. 뭐.) 단, 한가지 더 충고라면 '글로 정리했을때와 안했을때'의 학습 효과는 알아서 비교해보기 바란다는. 흐흐 -_-v 가장 학습효과를 높이는건, 책보고 정리하지 말고 '자기 머릿속으로 아는 한도만큼만 정리하라' 라는것. --["1002"]
- java/reflection . . . . 4 matches
* 외부 프로젝트는 jar로 패키징 한다.
* 프레임워크에서 많이 사용되는 방법이라고 한다.
* ORM(Object-Relational-MApping)이 아닌 방식으로 DAO를 만들 때 사용되기도 한다.
* jar파일로 패키징한다. (.java와 .class만 따로 패키징하는 방법은 [http://kldp.org/node/75924 여기])
- stuck!! . . . . 4 matches
가볍고 쉬운 무료 C, C++ IDE. 한글도 지원한다.
우리는 스스로 공부한다!!
출첵은 스스로 한다.
1차 : 입출력그리고 간단한 변수의 종류에 대해서 공부해보고, 이름과 학번 그리고 원하는 평점을 입력받고 그것을 그대로 출력하는 프로그램을 작성해 본다. 일요일 오후 3시까지 제출해 주세요. 미 제출시 가혹한 벌금이 있습니다ㅋㅋㅋ
- woodpage/쓰레기 . . . . 4 matches
* 정보처리 산업기사 공부한다. 한 보름 남았는데. 솔직히 좀 버거운게 사실이다.
* 예상보다 쉬운 산업기사 실기를 대비한다.
* 학기중이라 공부하기 좀 힘들지만 XML공부한다.
* 메일 좀 생각을한다.
- zennith/MemoryHierarchy . . . . 4 matches
상위 계층과 하위 계층사이에는 병목현상이 존재한다.
효율성에 따라 메모리는 계층구조로 이루어지며, 상위계층일수록 빠른 속도를 보장하며, 하위계층일수록 저렴한 가격을 보장한다.
레지스터는 메모리 계층구조에서 가장 상위 계층으로서, 가장 빠른 속도와, 가장 적은 capacity 를 제공한다. 보통 개개의 레지스터는 그 프로세서의 word 크기이며, 현재 주로 사용되고 있는 인텔 i386 계열 프로세서들의 범용 레지스터의 크기는 32bit 이다.
요즈음의 RISC 구조 프로세서에서는, 모든 연산의 연산자들로 레지스터만 허용하므로, 이 제한된 숫자의 레지스터들을 어떻게 관리하느냐가 성능 향상의 주안점이다. 가령, 빈번하게 요구되는 변수는 계속 가지고 있는다던지, 아니면 한동안 쓰임이 없는 변수를 레지스터에서 버린다던지 하는 일이다. 물론, 이 일(optimal register allocation)은 컴파일러에서 담당한다.
- zennith/SICP . . . . 4 matches
"내가 컴퓨터 과학 분야에서 가장 중요하다고 생각하는 것은 바로 즐거움을 유지해간다는 것이다. 우리가 처음 시작했을 때는, 컴퓨팅은 대단한 즐거움이었다. 물론, 돈을 지불하는 고객들은 우리가 그들의 불만들을 심각하게 듣고있는 상황에서 언제나 칼자루를 쥔 쪽에 속한다. 우리는 우리가 성공적이고, 에러 없이 완벽하게 이 기계를 다루어야 한다는 책임감을 느끼게 되지만, 나는 그렇게 생각하지 않는다. 나는 우리에게 이 기계의 능력을 확장시키고, 이 기계가 나아가야 할 방향을 새롭게 지시하는, 그리고 우리의 공간에 즐거움을 유지시키는(keeping fun in the house) 그러한 책임이 있다고 생각한다. 나는 컴퓨터 과학 영역에서 즐거움의 감각을 잊지 않기를 희망한다. 특히, 나는 우리가 더이상 선교자가 되는 것을 바라지 않는다. 성경 판매원이 된 듯한 느낌은 이제 받지 말아라. 이미 세상에는 그런 사람들이 너무나도 많다. 당신이 컴퓨팅에 관해 아는 것들은 다른 사람들도 알게될 것이다. 더이상 컴퓨팅에 관한 성공의 열쇠가 오직 당신의 손에만 있다고 생각하지 말아라. 당신의 손에 있어야 할 것은, 내가 생각하기엔, 그리고 희망하는 것은 바로 지성(intelligence)이다. 당신이 처음 컴퓨터를 주도했을때보다 더욱 더 그것을 통찰할 수 있게 해주는 그 능력 말이다. 그것이 당신을 더욱 성공하게 해줄 것이다. (the ability to see the machine as more than when you were first led up to it, that you can make it more.)"
- 강의실홍보 . . . . 4 matches
적은 인력을 괜찮다. : 이벤트 행사의 경우, 홍보 효과 강의 시간대에 소수 (1~2)명이 들어가도 충분할 것 같다. 중요한 것은 이 소수가 행사의 전체 이미지를 잘 알고 있어야 한다는 점이다. 행사를 구체적으로 모를 경우에는 홍보자에게 상호보완적인 역할을 할 수 없으므로, 좋은 효율을 내기 힘들다.
* 1학년의 경우 고등학교의 버릇으로, 쉬는시간에 많은 수가 잠을 자서, 많은 영향을 끼치지 못한다. 그리고 수업 중간에 홍보를 해서, 수업을 마치고 나서 잃어버린다.
* 마지막 수업이 종료후 5분 정도의 양해를 구한다고 말하고, 홍보를 한다. 수업이 모두 끝난 순간 사람들은 모두 깨끗한 정신으로 깨어있고, 집으로 돌아가면서 웹에 광고를 볼 가능성이 높다.
- 김동준/Project/OOP_Preview/Chapter1 . . . . 4 matches
1) 소프트웨어가 고객이 원하는 기능을 하도록 한다.
2) 객체지향의 기본 원리를 적용해서 소프트웨어를 유연하게 한다.
3) 유지보수와 재사용이 쉬운 디자인을 위해 노력한다.
- 나를만든책장/서지혜 . . . . 4 matches
* 당연히 그렇지 않겠지만 늦었다는 생각이 들어 울적해진다. 자신의 재능을 찾아 열정을 쏟아야 한다는 것이 작가가 말하는 바, 이지만 내가 잘하는 것도 없는 찌끄레기 같이 느껴짐..
* 어떻게 원하는 것을 얻는가
* 세상은 나를 울게하고 나는 세상을 웃게 한다
* 마음을 가라앉히고 우주적 기운을 불러들인다는 내용이 소름끼치게 오그라들지만(기-chi-의 오그라드는 표현인듯) 고양이 이야기가 많이 나와서 읽었음. 게슈탈트 스캔이라고 동물의 신체/심리 상태를 스캐닝 한다는 내용도 대뇌피질 반사! 해서 보면 나름 재미있는 책.
- 데블스캠프2006/월요일/연습문제/웹서버작성/변형진 . . . . 4 matches
* 웹서버에서 PHP 스크립트를 실행할 수 있음 (지원하는 확장자 : html, htm, php)
* GET Method으로 넘어온 Query String를 처리한다.
* 내가 PHP 도 약간 해보고, JSP 나 Java 도 약간 해봤서 대충 심정을 알듯.. 나도 JSP랑 Java 써서 이번에 DB 프로젝트 개발 해보기전에는 웹에서는 PHP로 짜는게 가장 편하게 느껴졌었거든. 그래서 DB 프로젝트도 웹은 PHP 응용은 Java 이렇게 해 나갈려고 했는데 PHP가 Oracle 지원은 버전 5.x 부터 되서 걍 Jsp로 하게 됐지. 둘다 해본 소감은 언어적인 면에서는 뭐 PHP로 하나 Jsp로 하나 별 상관이 없는거 같고, 다만 결정 적인것은 개발환경및 Jsp 에서는 java 클래스를 가져다가 사용할수 있다는 점이었스. Jsp에서 하면 Junit 을 사용하여 Unit 테스트를 하면서 작성하기 수월했고, 또한 디버깅 환경도 Visual Studio 에서 디버깅 하듯이 웹을 한다는게 정말 좋았지. 또 java 클래스를 가져다가 사용할 수 있어서 여러 오픈 소스를 활용하기에도 좋고.(예를 들면 Lucene 같은 자바로 만든 오픈소스 검색 엔진..). 특히 Eclipse 라는 강력한 개발 환경이 있어서 Visual Studio 보다 더 개발이 수월할 정도..
상협이의 현태에 이은 작업이 느껴지는군 ㅋㅋ ㅡ_ㅡb 가장 중요한건 처음 대학에 왔을때 자기가 가진 관심분야에 대한 공부를 끝까지 해나가는 것이 중요할 듯. 처음 가지고 있었던 이상과 자신의 방향이 흔들리면 결국 이도 저도 아닌 그냥 코딩만 하다가 끝나버릴 수 있으니까. 일단 학과에서 하는 공부에만 만족하지 말 것. 가능하면 본인이 자신이 있고, 관심이 있는 분야의 지식을 지속적으로 학습해 가는 과정이 가장 중요하다고 생각함. 대학 입학할때의 실력으로 만족하지않고, 지속적인 노력을 통해 자신을 단련해 가는 과정 자체를 늘기는 사람이 됐으면 좋겠다. (결론은 나처럼 놀지말라는 이야기 ㅡㅡ;; 나중에 후회한다 ㅋㅋ) - [eternalbleu]
- 데블스캠프2011/첫째날/후기 . . . . 4 matches
* 형진이형이 병특을 했던데다, 회사에 다니고 계셔서 항상 묻고싶었던게 많았는데, 많은걸 물어볼 수 있는 시간이 되어서 정말 좋았던거 같아요. 형진이형이 뭔가 끝없이 나오는 봇물(?) 같은 존재이신듯..! 우리가 프로그래머가 되면 어떠어떠한게 될 수 있는지, 어떠한 프로그래머가 되어서는 안되는지(정체된 프로그래머!), 병특하려면 어떤 조건(?)이 유리한지(그런데 오늘 신검받고 2급 ㅠㅠ, 내면의 장애를 발견할 수 없었어요) 재밌게 들었구요, 면접관이 되어 질문한다면 어떤 질문을 하겠는가?? 라는 것에서 다른분들이 쓴 글들을 보고도 많은걸 배운거 같았어요.
* 이것저것? 하느라 앞부분을 잘라먹었네요.ㅜㅜ 생각할 만한 거리를 던져주는 좋은 말들이었습니다. 앞으로 어떻게 해야할지 생각도 해보게 됐구요.. 저는 큰일 났습니다.ㅋㅋ 일을 혼자하거나 소수로 움직이는걸 좋아해서, '남의 말대로 했는데 안되면 더 빡친다.' 맞는 말입니다. 다른 팀원의 실수를 제가 떠안아야하는 것도 있고, 제 실수를 다른 팀원이 떠안는 경우도 있습니다. 차라리 오픈소스 프로젝트는 브런치로 내맘대로 뻗어나가면 되지만, 팀 내에 갈등이 있을땐 쪼개지거나 합의를 보거나 둘 중 하나를 해야하지요. 음... 다른 팀원이 주도했다하더라도 팀의 결정은 곧 나의 결정이라고도 생각합니다. 그런 태도로 임한다면 좀 더 나은 개발자가 될 수 있지 않을까 생각해봤네요.
* 개발자들이 앞으로 어떤 길을 갈 수 있는지, 어떤 것들에 주목을 해야 하는지에 대한 세미나. 원래 정해져 있지 않았던 시간의 급조 세미나라고 하셨는데 개인적으로는 꽤 괜찮았다고 생각합니다. 사실 데블스캠프가 기술 주제를 많이 다루는 만큼 다소 높은 시야에서 전체적인 로드맵을 보여주는 세미나도 있어야 한다고 생각하니까요. 들을 때마다 느끼는 거지만 형진 선배의 세미나는 원론적인 부분을 잘 짚어주는 것 같습니다. 저도 좀 더 기본적인 부분을 강화해야 할 필요가 있을듯합니다.
* 코드 중심의 팀프로젝트 경험이 없어서 SVN을 쓰게 된지 얼마 안됐는데. 참 유용한듯 싶습니다. 둘이서 할때는 커밋이나 업데이트에 문제가 거의 없었는데, 규모가 커지면 심각한 문제를 야기할 수 있다는 사실을 알게 됐습니다..-_-;; JUnit도 유익한 시간이었습니다. 테스트 기법에 대해서는 더 공부를 해봐야겠지만. 극히 일부분의 테스트케이스를 직접 입력한다는 점에는 조금 의문이 있었습니다.. 대량의 테스트케이스를 자동으로 생성하는 부분에 관심이 가네요. 또 저는 메인으로 실행하지 않아도 된다는 점보다 문서화가 용이하다는데에 느낌이 확 오더군요. 유효한 테스트케이스가 축적될수록 유지보수하는데 도움이 될테니까요.
- 도덕경 . . . . 4 matches
"... 성스러운 사람은 함이 없음의 일에 처하고 말이 없음의 가르침을 행한다.
... 사람을 잘 쓰는 자는 자기를 낮춘다. 이것을 일컬어 싸우지 않음의 덕이라 한다. 이것을 일컬어 사람을 쓰는 힘이라고 한다.
하늘의 길은 잘 이롭게 하면서도 해치지 아니하고, 성스러운 사람의 길은 잘하면서도 다투지 아니한다."
- 루프는0부터? . . . . 4 matches
대부분의 경험있는 C++프로그래머들은, 처음에는 이상하다고 생각할만한 프로그래밍 습관을 가지고 있습니다. 그것은 바로 번호를 매길 때에 언제나 1부터 시작하는 것이 아니라 0부터 시작한다는 것입니다.
보통 비대칭형 범위는 대칭형 범위보다 더 사용하기 쉽습니다. 왜냐하면 다음과 같은 중요한 속성이 있기 때문입니다. [m, n)과 같은 형식의 범위는 n-m개의 요소들을 가지며 [m,n]의 형식은 n-m+1의 요소들을 가집니다. 따라서 [0, rows)에서 요소들의 개수는 직관적인데 반해, [1, rows]에서 요소들의 개수는 덜 직관적 입니다. 이러한 속성차이는, 특히 빈 범위의 경우에 더 뚜렷합니다. 만약 비 대칭형 범위를 사용한다면, 빈 범위를 [m,n)으로 표현할수 있지만, 대칭형 범위에서는 [n, n-1]을 사용해야 합니다. 범위의 끝이 시작보다 더 작을수 있따는 가능성은 프로그램 설계시 끝이 정의되지 않아 버리는 문제를 야기 시킬수 있습니다.
지금까지 r개의 행을 출력했따고 표현할 수 있기 때문입니다. 만약 1부터 번호를 매긴다면? 이제막 r번째 행을 출력하려는 찰나라고 정의할 수도 있겠지만, 그러한 구문은 불변식으로 정당치 않습니다. 왜냐하면, while이 조건식을 마지막으로 검사할때, rows+1이 되기 때문입니다. 이때 우리가 원하는 것은 rows행만을 출력하는 것 입니다. 따라서 우리는 r번째 행을 막 출력 하려던 것이 아닌 셈이 됩니다. 지금까지 r-1개의 행들을 출력했다고 불변식을 정의할 수도 있을 것입니다. 하지만 불변식을 그런식으로 정의 햇다면, r을 0부터 시작시켜 단순화 시키는 것이 더 낫지 않을까요?
조건식이 r!=rows라면, 루프가 끝날 때 r==rows라는 사실을 알수 있습니다. 불변식은 r개의 행을 출력했따는 사실을 말해 주기 때문에, 정확히 rows개의 행을 출력했다는 것을 알 수 있습니다. 한편, 만약 조건식이 <=rows라면, 그로부터 알 수 있는 사실은 최소한 rows개의 행을 출력했다는 사실 뿐입니다. 따라서 그 이상을 출력했을 수도 있는 것입니다. 0부터 번호를 매기게 되면 정확히 rows번의 반복을 수행했는지 확실히 하고자 할 때, R!=rows를 조건식으로 사용할 수 있습니다. 또한, 반복횟수가 rows번 또는 그 이상이 되기만을 원한다면, r<rows를 사용할 수 있습니다. 만약 1부터 번호를 매기다면 최소 rows번의 반복만을 원할때 r<=rows를 사용할 수 있습니다. 하지만, rows가 정확한 숫자가 되도록 하려면 어떻게 해야 할까요? 그런 경우에는 좀더 복잡한 조건식인 r==rows+1과 같은 방법을 사용 할수 있습니다. 하지만 이렇게 복잡하게 해서 얻을수 있는 이득은 거의 없습니다.
- 바퀴벌레에게생명을 . . . . 4 matches
다큐에서 CBug타입의 멤버 변수를 생성한다. 그리고 뷰에서 방향키의 키이벤트(OnKeyDown)를 받으면 다큐의 CBug 타입의 멤버 변수의 Move함수를 호출하고 변경된 position과 direction을 OnDraw에서 받아서 알맞은 그림을 잘라내서 뷰에 그린다.
다큐에 TotalNumberOfMovement변수를 생성하여 바퀴벌레가 움직일 때마다 늘려준다. 그리고 프로그램이 정상종료 되었을 때(스페이스바에 의한 종료는 정상종료가 아니다.) 메세지 박스로 그 값을 출력한다.
방향키로 먼저 시작점을 택한다. 시작점을 택한 후 스페이스바를 눌러 랜덤워크를 진행한다. 정지를 원할 경우 스페이스바를 다시 누른다.
- 사람들이과제를해오지않는다 . . . . 4 matches
* 두가지를 생각해 볼수 있다. 첫번째는 그 발표 과제가 그 사람에게 너무 벅찬것이었고 숙제도 그 사람의 수준에 맞지 않는 것이이서 못해올 수도 있다. 아니면 발표거리나 과제 거리가 그 사람에게 충분한 흥미, 동기 유발을 자아내지 못했을지도 모른다. 이는 과제를 내거나 숙제를 낸 측에서 잘못 판단한것이 문제가 된것이다. 두번째 경우는 그 사람이 그 발표를 하거나 과제를 하는것에 우선순위를 아주 낮게 두는 경우다. 그래서 발표 준비나 과제를 하는건 자신이 할거 다하고 시간 남으면 하거나, 귀찮아서 미루다 미루다 안하는 경우다. 내가 보기에는 첫번째 경우 두번째 경우 모두 우리 제로페이지에서 다반사로 일어났었다고 본다. 내 예를 들면 보통 무슨 책을 같이 공부 하자고 함께 공부하는 스터디는 끝까지 가거나 어느 정도까지 간 경우가 단 한번도 없었다. 내가 보기에는 책을 스터디 그룹 지어서 같이 공부하는건 상당히 어렵다고 본다. 아예 그러고 싶으면 스터디 그룹을 만들어서 우선 개별적으로 단시간안에 그 책을 한번 공부하고 나서 다 공부한 사람들끼리 그 책에 대한것들을 서로 물어보고 토론을 하고 하는게 좋을거 같은데 쉽지 않은 얘기다. 그런데 수동적으로 책을 공부하는 프로젝트가 아닌 프로젝트를 하는데 이러 이러한 책이 필요해서 그러한 책들을 필요한 부분들을 참고하면서 해나가가는 프로젝트는 제로페이지 내에서 중간에 해체 안되고 끝까지 간경우가 책 하나에 대한 스터디 보다는 훨씬더 많았던거 같다. 내가 보기에는 이 차이는 프로젝트, 스터디를 해 나갈때는 아주 명확한 목표가 있어야 한다고 본다. 장거리 자동차 여행을 가는데 목적지 없이, 지도없이 출발하는 경우는 없다. 프로젝트도 마찬가지로 어떤 결과물을 만든다거나, 어떤 수준(아주 구체적, 객관적인)에 도달한다는 목표가 있어야 한다고 본다. 그런데 어떤 수준은 좀 애매하기에 어떤 결과물을 목표로 잡고 스터디, 프로젝트를 하는게 좋겠다고 생각한다. - [상협]
- 상협/프로젝트관련 . . . . 4 matches
* 이거 완성하면 대박이라고 내심 기대했었는데, 마무리를 제대로 못해서 원하는 만큼의 재미를 끌어 내지 못했다. 마무리를 제대로 해야 한다는 필요성을 느꼈다.
* 만약 짜본다면 내가 제일 좋아 하는 AI 오목을 Java로 TDD를 사용해서 한번 다시 짜볼까 한다. 인공지능을 사람이 못이기게 무진장 향상 시켜서.. +_+
- 새싹교실/2011/무전취식/레벨10 . . . . 4 matches
강원석 : 집에 강아지가 생겼음 종류는 말티즈 "콜" 네달됬는데 짱임. 남자임. 중성화 아직 안함. 해야한다던. 똥오줌 가려서 완전 신기함. 애가 첫날 왔는데 신문지 위에서 비비빅하더니 오줌거기서 싸고 똥도 거기서 사고 완전 신기함. 거실에서 따로 재움. 그럼 방문열고 들어옴. 이번주 창설 1등했음. 완전 좋음. 축제때 애들이랑 술만먹음. 구경은 안했음.
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 개념 정리에 대해서는 그다지 많은 가르침이 없었습니다. 오늘의 집중 항목은 여러명이 코딩하는 방법과 직접 코딩을 해보는것이었죠. 지각에 대해서도 한마디했군요!! 지각할때 상대방의 양해를 구하지 않는것은 상대방에게 크나큰 실례입니다~ 모두 지각한다면 먼저 알려주는 센스쟁이가 되주세요. 오늘은 진경이가 와줘서 너무 기쁩니다. 든든한 조교가 있으니 강사가 무능해도 잘 진행되는군요. Show me the money!!! 담시간을 기대하시라!! 또한 태진이도 들으러와서 신나보이는 새싹이었습니다. 이런 수업방식이 적응이 안될수도잇죠. 신나고 신나게 배우고 먹고 마시는것입니다. 이게 맞는지는모르겠지만 학생들이 모쪼록 제 배움을 즐겁게 받아들여주었스면 좋겠습니다. 다음시간에도 Coding Coding입니다!! 얏후!! 후기써라. - [김준석]
* 예에~ 앞으로 쪽지 자주보내야지 ㅋㅋ 아 못된것 같아. 여튼. 코딩하는 실력이 부족한것을 느꼇다면 아마 그부분의 발전이 있을꺼야. 그리고 많이 그런 고민을 한다면 훌륭한 프로그래머가 되겠지~! 공부하는걸 도와달라고 하니 너무 기쁘구나 ㅋㅋ - [김준석]
- 새싹교실/2011/쉬운것같지만쉬운반/2011.3.23 . . . . 4 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* C언어 진도를 나간 첫 수업이었다. 내가 생각보다 수업을 빠르게 진행을 한건지 수업을 반정도 진행하니까 준비해간 내용을 전부 진도를 빼버렸다; 1시간을 가르치려면 1시간을 준비해야한다더니, 그 말이 맞는 것 같다. 다음 화요일 수업에는 더 많이 준비해야겠다. C언어 말고도, 간단하게 다른 새로운거 접해보라는 의미로 tryhaskell홈페이지를 알려주었다. 애들이 재밌게 해봤으려나?ㅋㅋ - [박성현]
assert함수에 의해 c가 30인지 비교한다.
프로그램은 여러 데이터를 가지고 사용자가 원하는 일을 수행하는 것입니다.
- 새싹교실/2012/AClass . . . . 4 matches
(rand()%1000을 한다면 1에서 1000까지의 숫자가 나올 것입니다.)
* 수업할때 100% 전부 흡수한다고 말할수는 없지만 그래도 많은 것들을 배우고 있어서 너무나 뿌듯하고 좋습니다.
* [황혜림] - 처음부터, 클래스의 특징에는 캡슐화가 있다. 캡슐화는 왜쓰는가.... 잘못된 접근을 막아야 한다는데. 아,,ㅂㄱㅍ 아 오버로딩이 새로 생각났다. 생성자 - 클래스명과 항상 같게 사용하여야 한다.
- 새싹교실/2012/새싹교실강사교육/1주차 . . . . 4 matches
선배 후배간의 학술적인 교류를 개인적인 능력에 의한 특혜가 아니라 누구나 공개적으로 경험하기 위하여 ‘05년도부터 시작된 ZeroPage ‘새싹 배움터’를 시초로 한다. 현 ‘12년 학부의 한 행사로 자리잡아 컴퓨터 공학부의 세 학회(ZeroPage, Netory, CLUG)가 진행을 하고 교수님과의 Feedback을 통해 유동적인 강의 과정을 만든다. 또한, 새싹 교실의 필수과정인 Wiki의 사용, 회고를 통해 처음 프로그래밍을 접하는 새내기들뿐만 아니라 새싹 교실의 선생들도 배움을 얻어가는 자리이다.
좋았던 점 : 새싹 교실 중간에 좋았던 점 을 작성한다. 강사에 대해 외모, 매너, 강의 내용 등에 대해 작성해도 되고 자신이 감정에서 좋았던 점을 경험한 것에서 뽑아보자.
예 ) 강사가 늦었는데 더 일찍 와주었으면 한다. 수업시간에 졸았는데 다음에는 잠을 더 자고 와서 열심히 듣겠다. 강의 내용이 너무 어려웠다. 조금 더 쉽게 설명해 주셨으면 한다. 이번에 과제를 못했는데 꼭 다음 과제랑 같이 다음 시간 전까지 해서 올리겠다.
- 새싹교실/2012/설명회 . . . . 4 matches
* 신입생인데 시작부터 '사랑하지 않으면 떠나라'고 하는 프레젠테이션이 참 수경선배다워서 인상이 깊었습니다 ;;;;; 그리고 이번에 보니까 컴공에 흥미를 가지고 있는 신입생들이 많아서 조금 긴장되는군요. 다들 그만큼 열심히 해 주지 않을까 하는 기대감도 들고요. 어쨌든 이번이 복학 + 새싹으로 불안감은 큰 만큼 사전에 준비를 잘 해 가야 하지 않을까 싶습니다. 그리고 시간이 허락한다면 다른 강사들이 수업하는 모습도 좀 보고 싶군요. 후후. - [서민관]
* 선생님 지원자가 정말 많으네요. 사실 너무 많은게 아닐까 싶은 생각도 조금 듭니다. 만약 새싹교실을 성실히 진행한 반에 지원한다거나, 위키 사용을 잘 하고 있는지 한번씩 체크해보고 싶다거나, 모든 반이 함께 모여 공동의 활동을 진행하려 할때 약간 버거울수도 있지 않을까 걱정되는 면이 있어요. 반편성이나 회장님께서 각 반 선생님들께 공지해야 할 일이 있을때도 좀 힘들지 않을까 싶어 걱정이네요ㅜㅜ
* 진짜 간단히 짧게 말하려고 폰 타이머까지 들고 간건데... 길게 말하면 지겨울테니 진짜 짧게 말하려고 많이 주의했는데 장황하게 말했네요ㅡㅡ; 하여간 난 수다쟁이라 큰일이야... 말 너무 좋아하면 말로 망한다는데...................... 너무 시간 잡아먹어서 분위기나 진행에 부담을 준 것 같아 좀 미안하네요ㅜㅜ
* 확실히 옆 테이블의 목소리가 커지면 이쪽 테이블의 목소리가 잘 안 들리는 경우도 있어서 다음에 또 한다면 목소리 크기에 대한 대책을 세우지 않으면 안 될 것 같았습니다. 따로 통제를 하거나 하지 않으면 양쪽 테이블이 서로 목소리가 커지는 상황이 벌어져서 -_-;;; - [서민관]
- 새싹교실/2012/아우토반/뒷반/3.30 . . . . 4 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
정수를 하나 입력받는다. 입력받는 정수는 1~100 사이의 숫자로 가정한다.
단, 위 작업을 0을 입력받을 때까지 계속해서 수행하여야 한다. (while문 사용)
while문의 조건문에는 != 연산자를 사용한다. != 연산자는 양쪽 피연산자가 같은 값을 갖지 않을 때 참이 된다.
- 새싹교실/2012/아우토반/앞반/4.19 . . . . 4 matches
printf("선대의 공격! 플레이어는 %d 만큼의 피해를 입었다! \n", damage);
printf("플레이어의 공격! 선대는 %d만큼의 피해를 입었다! \n", damage);
printf("플레이어의 공격! 선대는 %d만큼의 피해를 입었다! \n", damage);
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/앞부분만본반 . . . . 4 matches
||1. 한식에 영이 아닌수를 곱한다.||
||3. 한식에 k배(k≠0)을 한뒤 다른 식에 더한다.||
||1. 한 행에 영이 아닌수를 곱한다(kRi, k≠0)||
||3. 한행에 K배 한뒤 다른 행에 더한다.(k×Ri + Rj -> new Rj)||
- 새싹교실/2013/라이히스아우토반/1회차 . . . . 4 matches
1. 컴공이라도 하드웨어에 대해서 이해를 해야 한다.
1. 운영체제란 것이 있고, 이것이 하드웨어와 소프트웨어를 연결 해주는 역할을 한다.
1. 다음시간엔 원하는 자료가 배부될 예정이다.
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 세벌식 . . . . 4 matches
원래 한글은 초성, 중성, 종성을 갖는 3성구조로 이루어져있다(중국어는 4성, 베트남에는 6성언어인데 이것이 글자에도 반영되는지는 모르겠다). 우리가 보통 쓰는 키보드의 한글자판배열은 두벌식이고 이것이 지금의 국가표준이다. 두벌이라 함은 왼쪽에 자음, 오른쪽으로 모음. 이렇게 두개의 벌로 구성되었다는 것을 의미한다. 이는 한글의 구조에 역행하는 자판배열이다. 앞서 설명한 한글의 3성구조가 그 이유이다.
이때문에 두벌식 키보드를 사용할때 도깨비불 현상이 발생한다. 간단하게 설명하자면 두벌식 키보드로 한글을 치다가 전혀 의도하지 않았던 글자가 나타났다가 사라지는 현상이다. [http://no-smok.net/nsmk/%EB%8F%84%EA%B9%A8%EB%B9%84%EB%B6%88%ED%98%84%EC%83%81 여기]를 보면 더 자세히 알 수 있다.
* [임인택]의 경우 어떤 치과에서 키보드 키캡에 붙이는 스티커를 나눠주는 페이지를 보면서 처음 세벌식을 접하게 되었다. 그때가 2005 년 2월경이었는데 처음에는 무척 힘들었지만 6개월정도 지나니 익숙해졌다. 세벌로 전환하기 이전인지 이후인지 기억은 잘 나지 않는데, 스펀지라는 프로그램에서 공병우 박사님을 추모하면서 세벌식과 관련된 지식을 알아본 적이 있었다. 카이스트인지 포항공대인지에 다니는 한 학생이 실험을 했는데, 두벌, 세벌 모두 엄청난 속도로 타이핑하는 장면을 봤다. 충격이었다. 어떻게 각각을 저렇게 빨리 칠 수 있는지. 나도 예전에 타이핑이라면 한가닥 했었는데 10년이상 쓰던 두벌을 버리고 세벌로 전환한 이후 두벌속도가 급격하게 줄었다. 처음 세벌로 바꿨을때 세벌보다 두벌을 약 20배 정도 빨리 칠수 있었는데, 지금은 오히려 두벌이 더 느리다. 이걸 가지고 생각해 볼 수 있는 문제는 사고의 전환이다. 스펀지에 나왔던 학생은 두벌로 타자할때 두벌식으로 사고하고, 세벌로 타자할때 세벌식으로 사고했을 것이다. 조금 생각해보면 이는 우리가 공부하는데 빗대어 설명할 수 있을 것이다. 가령 함수형 언어를 쓸때는 함수형 언어의 패러다임으로만 생각하고, 객체지향 언어를 쓸때는 객체지향 패러다임만을 생각한다던지 하는 것이다. 지금 생각하건데, 그 학생은 두벌/세벌 타자에 있어서 구루인것 같다. 나도 두벌/세벌을 모두 쓰지만 두벌식을 쓸때 세벌식으로 생각하고 키를 누른다던지, 세벌식을 쓸때 두벌식으로 생각하고 키를 누르는 경우가 많다. 프로그래밍을 할때도 마찬지. 내가 배제하려고 하는것을 완전히 배제하지 못한다.
- 스터디그룹패턴언어 . . . . 4 matches
우리는 평생 배워야한다. 학습하고 자라기 위해서 우리는 수업을 듣고 선생에게 상담을 받으며 기사와 책을 읽거나 동료와 친구들로 부터 도움을 구한다. 우리가 사용 가능한 많은 학습 방법 중에 가장 훌륭한 것들 중 하나가 스터디 그룹이다.
스터디 그룹은 어려운 책을 이해하기 쉽게 해준다. 불만족스러운 수업이 실패하는 반면 스터디 그룹은 성공할 수 있다. 그리고 환경이 지속적으로 배우고 자라는 것을 받쳐주지 못한다해도 스터디 그룹은 당신을 뒷받침 해줄 수 있다.
어떤 주제에 대해 위대한 지식의 원천을 식별해낸 다음, 해당 주제에 대한 공부를 하기에 바람직하고 지성적으로 안전한 환경을 만들도록 한다.
- 아인슈타인 . . . . 4 matches
구글에서 아인슈타인 생일 기념 로고를 만든걸 뒤늦게 봤다. 아인슈타인의 생일이 3월14일 이었구나...E=mc² 이 대체 뭘까 다시 궁금해지기 시작한다...
그는 물리쪽은 천재에 가까운 소릴 들었지만, 어학분야에 있어선 늘 낙제자였다. 하지만, 그는 그 당시에 있어서는 가장 뛰어난 과학교육을 받았다고 한다. 그런 교육이 오늘날의 대천재 아인슈타인을 만든 것이 아닐까?
아인슈타인은 그의 나이 76세에 세상을 떠났다. 그가 정말로 원하던 자유였을 지도 모르겠다. 사인은 심장동맥 파열이었다. 그의 뇌는 포르말린이 담긴병속에 보관되어 있다고 한다. 그의 눈은 몇년전에 경매를 통해 팔렸다고 하는데, 보석과도 같은 아름다운 눈이었다고 한다. (from http://med.hallym.ac.kr/~sohnkm/ein.html)
- 이병윤 . . . . 4 matches
1 먼저 '학과기본수업조회' 페이지를 얻어온뒤 파싱한다.
1 파싱결과를 통해 신청하고자 하는 과목의 여석이 존재하는지 확인한다.
1 여석이 존재할경우 수강신청 페이지를 요청하여 신청한다.
- 장바구니 페이지를 얻어온뒤 파싱한다.
- 이승한/PHP . . . . 4 matches
$query = "select name, eng, math from score";//쿼리문을 스트링을 저장한다.
PHP 변수타입으로 문자열을 지원한다. // 맞는지 모르겟네요. 대략 추정
* 산술 : + - * / % 사칙연산과 나머지 연산이 존재한다. ++의 전후위 연산자도 있다.
* if, while, switch, for 이 존재한다.
- 이승한/자전거여행 . . . . 4 matches
준비가 안된 아마추어가 하루 60-80 킬로미터를 간다고 한다.
루트나 일정은 상현이에게 일임한다.
상현이에게 일임한다.
먹을것은 부피가 크니 현지 조달한다.
- 정모/2011.10.5 . . . . 4 matches
* AOP(Aspect-Oriented Programming)은 트랜잭션 처리 등 핵심기능은 아니지만 코드에 포함되어 유지보수를 어렵게 하는 부가기능을 분리해내는 패러다임으로 OOP(Object-Oriented Programming)를 대체하는 것은 아니고 보완하는 역할을 한다.
* 구글 I/O에서 I/O는 Innovation in the Open을 의미한다.
* ACM-ICPC 대회에는 책을 가져갈 수 없다. 다만 20페이지 가량의 인쇄물을 가져갈 수 있다고 한다.
* 세미나 잘 봤습니다. 안드로이드에 관심은 있지만 허니컴은 디바이스가 없어서.. ㅠㅠ 어디가서 갤탭하나 물어오고 싶습니다. OMS도 재미있는 주제였습니다. 툴의 위대함도 있지만 저런 프로그램을 만드려면 돈을 얼마나 투자해야할까.. 라는 생각도 들었습니다-_-; OX퀴즈의 올 F는 압권이었습니다. 다음에 또 한다면 이런 경험을 참고해야겠어요. - [정진경]
- 정모/2011.4.4/CodeRace . . . . 4 matches
* 두명이 하나의 모니터를 보고 하나의 키보드로 프로그래밍 해야 한다.
* 3분마다 역할을 바꾸는데 스위치 모션을 취한 뒤 자리를 바꿔야 한다.
* 등장하는 모든 인물이 강을 건너 다른 마을로 가야한다.
* 내가 이걸 진행상황을 다 알고 다시 프로그래밍한다면...
- 제로Wiki . . . . 4 matches
* 게이트웨이 서버에 추가 서버를 등록만 시키면 유기적으로 다른 서버들과 연결이 된다.(마치 하나의 컴퓨터 처럼 보인다), 각 개인 위키 혹은 카페 위키를 생성할때에 자신의 원하는 서버를 지정하면 그곳에 그 위키가 생성된다. 그 위키에 대한 페이지 데이터들은 모두 그 서버에 저장이 된다. 사용자의 입장에서 보았을때에는 하나의 웹사이트처럼 보인다.
* 하는 방법 : 예를 들어서 제로페이지 카페에 자신의 위키에 있는 페이지를 올리고 싶을 경우 먼저 제로페이지 카페에서 화면 오른쪽 상단의 가입하기 버튼을 눌러서 가입한후, 올리기를 원하는 페이지를 고칠때 카페 선택을 제로페이지로 하고 나서 저장하면 그후로 계속 공유 관계가 유지된다.
* 자신이 페이지 만드는 데에 참여하고 싶은 페이지는 그 페이지가 있는 카페에 가서 그 페이지를 저장할때 카페에 자신의 개인위키를 지정함으로써 자신의 개인 위키에 그 페이지를 등록 시킨다. 그러면 그 페이지와 자신의 개인 위키가 공유 관계를 가지게 한다.(공유 관계 : 공유 중인 페이지가 업데이트(수정) 될 경우 공유 관계에 있는 모든 위키에 그것이 반영된다.)
* 저렇게 할 필요 없이 각 분류어별로 게시판을 만들면 되지 않냐고 생각할 수 도 있다. 하지만!!! 그렇게 각각의 분류 별로 게시판을 만들경우 그 게시판의 글들을 확인 하기 위해서 각각의 게시판에 들어 가야 한다. 그리고 군대 전우 카페 같은 경우 각 회원마다 군생활 시기가 겹치는 사람도 있고 겹치지 않는 사람도 있는등 각 회원에 따른 맞춤식 정보 제공이 필요하다. 이럴때 분류어 기능이 유용하다.
- 조현태/놀이/지뢰파인더 . . . . 4 matches
일단 눈, 머리, 손으로 나눠서 제작한다.
계획 전면 수정. 알고리즘 및 소스 재작성 돌입. 과거 단순 "로봇을 이용해서 마호로매틱 쵸비츠..는 아니고 어쨋든 멋지게 만들어 보자!" 에서 "로봇만 이용하는건 넘흐 어려벙~ 다른걸 섞어봐야겠어~!" 로 변경. 사용하기가 편하고 검색속도가 빠른 기존의 방법과 정확도가 높은 로봇을 밀가루와 팥이만나 붕어빵이 되듯.. 잘 섞어보기로 결정했다. 새로 모든소스를 작성하고 기존 소스의 심각한 문제점이었던, 어설픈 분할과 최악의 테스트 조건(윈도우 지뢰찾기는 실행해서 어떤 맵이 나올지 모른다. 또한 테스트 시간이 길고 준비가 필요하다)을 극복하기 위해서 수정을 가했다. 좀더 체계화된 분할로 좀더 보기편하고 소스에 간지가 흐르도록 하였으며, 테스트 주도개발의 내용에서 눈꼽의 반만큼을 이용, 편리한 테스트 환경을 만들었다. (나름대로 진보환 환경과 소스!) 가슴은 아팠지만 재앙보다야 나을거라고 생각한다. 그리고 로봇..그 부분은 아직 경험이 없어서(데블스 캠프에 만들어 본게 다..)그런지 조금 빡세다. 뭐 그래도 한번 실패도 했으니, 더 쉽게 만들어 질 것이라고 생각하고 만들기로 결정했다. - 2005.08.13
드디어 로봇 완성. 저번보다 더 간지나는( 구조화가 잘된) 알고리즘 표현과, 훨씬 편한 테스트 환경으로 저번에 비하면(어디까지나 비해서다. 아직 어려운 점이 많아 고생을 많이 했으며, 새로운 자료구조가 본인이 만든 탓인지 뭔가 복잡하다.ㅎ) 순풍에 돛을 단듯 아주 순조롭게 진행되었다. 그래서 로봇을 완성. 손과 눈을 api로 바꿔주고 지뢰찾기를 향에 발싸~!... 실패... 만능은 아니라서 시작한 지점에 2가 떡하니 나와준다면.. 얘도 찍어야 한다. (물런 찍어야 하는 상황에서 사람보다야 높은 적중률을 보이도록 설계했으나.. 이런 최악의 상황은 사람이나 프로그램이나.. 오히려 사람이 낮다.) 두번째.. 오옷..1초만에 성공... 세계신기록이야~ ~_~ 후후후.. 아~ 이날아갈듯한 기분..ㅎ (혼자 행복에 겨워서 뒹굴었다.ㅎ) 세번째.. 알수없는 오류가 깊은산속 옹달샘에서 발생.......OTL.ㅎ 그래도 어쩄꺼나!!! 성공시켰다. 후후후.. 이제 남은 디버그따위..ㅎ 사뿐히 해결해주짓..(역시 테스트 환경이 좋으니 작업이 잘 진행된다. 꼭 염두해두자.ㅎ) 어쨋든 오류가 떠도 지금은 행복하다.ㅎ ~_~ 일해야 되서 지금은 못해도.. 시간나는데로 해서 완성시켜주마~ >ㅁ<;;; - 2005.08.14
실행할 때에는 반드시 지뢰찾기가 다른 창에 가리지 않아야 한다!! - (괜히 메모리 오류를 만들지 말자.^^*)
- 졸업논문/서론 . . . . 4 matches
이 가운데 경량 프로그래밍 모델을 적용한 웹 기술이 계속 발전해가고 있다. 웹2.0 사이트는 Adobe Flash/Flex, CSS, 의미를 지닌 XHTML markup과 Microformats의 사용, RSS/Atom를 사용한 데이터 수집, 정확하고 의미있는 URLs, 블로그 출판들 같은 전형적인 기술을 포함한다.[2]
이러한 맥락에서 python언어로 만든 django라는 프레임워크가 존재한다. RoR과 마찬가지로 django를 이용하면 기민하게 동적으로 웹 사이트를 만들 수 있다.[4] Django에서는 모델, 뷰, 템플릿, 세팅 등을 이용하여 웹 사이트를 구축할 수 있는 특징과 함께, 관리자 인터페이스를 자동으로 제공해주는 장점을 가진다. 또한 모델과 데이터베이스를 자동으로 동기화 해주고, 데이터를 삽입, 변경, 삭제할 때 웹 개발자가 직접 데이터베이스에 질의를 던지지 않아도 되도록 데이터베이스 접근을 추상화하였다.
본 논문에서는 django의 사례를 바탕으로 기민한 웹 어플리케이션 프레임워크가 데이터베이스를 어떻게 추상화했는지 살펴본다. 또한 django가 어떻게 추가적으로 데이터베이스를 사용하도록 API를 지원하는지 살펴본다. 마지막으로 django에서 지원하지 못하는 기능을 살펴보고, 미비한 부분을 개선할 방안을 제시한다.
- 주민등록번호확인하기 . . . . 4 matches
*문제 : 주민등록번호 13자리를 입력받아 실제 존재하는 주민등록번호인지 분석한 후 결과를 출력한다.
*주민등록번호 13자리를 입력한다.
존재하지 않는 주민등록번호라면 '혹시 간첩???? -_-;; ' 을 출력한다.
주민등록 번호 자리 총 13자리중 제일 뒷자리가 오류검증키 라고 한다고함.
- 지금그때2006/선전문 . . . . 4 matches
원하는 주제에 대해 관심있는 사람들이 같은 자리에 모여서 이야기합니다. 현제 이야기 하는 주제를 바꾸거나, 자신이 원하는 주제로 이동할 수 있습니다.
원하는 주제에 대해 관심있는 사람들이 같은 자리에 모여서 이야기합니다. 현재 이야기 하는 주제를 바꾸거나, 자신이 원하는 주제로 이동할 수 있습니다.
- 컴공과학생의생산성 . . . . 4 matches
먼저 우리는 전산학과 학생이 아니고 컴퓨터공학과 학생이라는 점입니다. 국내에서 순수 전산학을 염두에 두고 가르치는 학교가 거의 전무하다는 점, 또 거의 대다수의 학부생이 IT 관련 취업을 목적으로 한다는 점 등을 고려할 때, 이 점은 학과 이름에 크게 관련없이 두루 적용되는 것일 겁니다. 우리는 공학(engineering)을 하고 있습니다. 생산성 이야기가 빠지고선 공학이 성립할 수가 없는 것이지요.
두째로, 생산성에 대한 훈련은 학생 때가 아니면 별로 여유가 없습니다. 학생 때 생산성이 높은 작업만 해야한다는 이야기가 아니고, 차후에 생산성을 높일 수 있는 몸의 훈련과 공부를 해둬야 한다는 말입니다. 우리과를 졸업한 사람들 중에 현업에 종사하면서 일년에 자신의 업무와 직접적 관련이 없는 IT 전문서적을 한 권이라도 제대로 보는 사람이 몇이나 되리라 생각을 하십니까? 아이러니칼 하게도 생산성이 가장 요구되는 일을 하는 사람들이 생산성에 대한 훈련은 가장 도외시 합니다. 매니져들이 늘 외치는 말은, 소위 Death-March 프로젝트의 문구들인 "Real programmers don't sleep!"이나 "We can do it 24 hours 7 days" 정도지요. 생산성이 요구되면 될 수록 압력만 높아지지 그에 합당하는 훈련은 지원되지 않습니다.
물론 효율적이고 생산적인 개발방법을 익혀놓는 것은 중요하겠죠. 개발 기간내에 프로젝트를 완료하는 것은 아주 중요한 일이니까. 하지만 '학교 레포트가 일종의 훈련이라고 할때. 즉 Output보다 개발하는 과정속에서 배워지는 것들이 더 많다고 할때, 누가 더 얻는게 많을것인가?' 라는 질문을 한다면 어떨까요? 만일 제가 그때 무게중심을 '짧은 시간내 가장 좋은 Output'으로 두었다면 얘기가 달랐겠지만. 저러한 생각은 그냥 저의 욕심이였을까요. 암튼, 그당시에 제게 중요했던것은 RAD 툴을 배우는 것이 아닌, 어떻게 해결해야 할까하면서 아이디어를 찾고 코드를 궁리했던 노력이였습니다. (See Also ["컴퓨터가했다"])-- 석천
- 프로그래머의편식 . . . . 4 matches
많은 사람들이 작은 명인의 단계에서 더 이상 발전을 하지 못한채 진정한 명인이 되지 못한다. 작은 명인은 화려한 수상 경력도 있고 심사위원을 맡기도 하고 많은 추종자가 따르지만 진정한 명인이 되지 못한다. 그 이유는 그들이 닫혀있기 때문이다.
진정한 명인들은 개방적인 마음을 가지고 있다. 겸손한 마음으로 새로운 지식을 받아들이는 것을 멈추지 않는다. 카메라와 같은 장비에 대한 의존도도 줄인다. "어떤 카메라든 훌륭한 작품을 만들 수 있다."고 생각한다.
리눅스에서 프로그래밍을 오랫동안 해온 사람이 '난 윈도우 프로그래밍은 전혀 할 줄 몰라' 라는 것을 자랑스레 얘기한다. 그러면서 MS욕을 실컷하고 나서 vim에 대한 칭찬을 늘어놓는다. '난 윈도우에서도 vim을 깔아놓고 쓴다'면서 visual studio에 내장된 에디터를 어떻게 쓰냐며 이해못하겠다는 듯한 표정을 짓는다.
- 학회간교류 . . . . 4 matches
서로의 학회에서 강점이 되는 부분 혹은 원하는 주제들에 대해서 적어주세요.
첫 시도이니만큼, 무사히 성사해본다는 데 의의를 많이 가지자. 나름대로 욕심을 더 더하자면, 학생들이 좀더 안목을 넓히고 재량을 넓힐 수 있는 기회가 되었으면 한다.
* 안녕하세요~ Netory:경태 입니다. 네토리에 속해서 다시 한번 인사를 하게 되네요.. '일단 반대는 안한다는 입장은 곧, 하면 좋다'로 이해하고 있을게요.^^ 언제고부터 스터디 모임을 공동으로 해보자는 이야기가 나왔지만, 첫째, ZP에는 ZP만의 스터디행사가 있었구.. 둘째, Netory는 Netory만의 일정이 있어서 생각만큼 좋은 뜻을 같이 하지는 못했었던 상황으로 알구 있구요. 현재로서는 제가 그저 제안을 내본거라서, 조만간에 네토리 모임을 갖어서 좀더 구체적인 사항으로 얘기를 다시 꺼내도록 하겠습니다. -- Netory:경태
[1002] : 현재 네토리와 Zeropage간의 의견 교환이 잘 안이루어지고 있다. 보다 친하고 도움을 줄 수 있는 관계가 되고자 한다. 또한 그것을 교두보로 여러 이벤트를 진행하고 싶다. 가시적인 성과 이외의 잠재적인 발전적 측면이 많을 것이다.
- 황현/Objective-P . . . . 4 matches
Objective-J의 경우처럼, 클래스의 선언과 정의를 동시에 한다. (사실 PHP의 구조상, 이럴 수 밖에 없다.)
다만, @implementation만 사용하면 @interface가 외로워하니까, 인스턴스 변수의 선언에는 @interface를 사용하도록 하고, 메소드 선언 및 정의에 @implementation을 사용한다.
컴파일 이후, 위 코드는 최종적으로 다음과 같이 변해야 한다. (PHP 5 객체 모델)
GNAssert()의 경우, 두 번째 인자로 @"문자열"을 받지만, 결과적으로는 컴파일 이후 GNString으로 변해야 한다.
- 01학번모임/20060310 . . . . 3 matches
- 몇몇은 1,2학년들과 스터디를 한다.
- 01학번들만의 수준있는 스터디를 한다.
- 지금 1,2학년들이 고학번이 되었을때의 활동 방향을 제시한다.
- 05학번만의C++Study . . . . 3 matches
* 정해준 범위를 혼자 공부한다.
* 공부한 부분에 대해 얘기한다.
* 숙제는 일요일 밤 12시 까지 제출한다.
- 05학번만의C++Study/숙제제출/2 . . . . 3 matches
* 평상시에는 문자열의 주소를 하나의 전달인자로 취하여, 그 문자열을 한 번 출력하는 함수를 작성하라. 그러다가 0이아닌 int형 값을 두 번째 전달인자로 제공하면, 그 시점에 도달할 때까지 그 함수가 호출되었던 횟수만큼 그 문자열을 반복해서 출력한다. (문자열이 출력되는 횟수는 두 번째 전달인자의 값이 아니라 그 함수가 호출되었던 횟수와 같다.)물론 이 함수는 거의 쓸모가 없다. 하지만 이것은 이 장에서 설명한 몇 가지 프로그래밍 기술을 사용할 것을 요구한다. 이들 함수를 사용하여 함수의 작동을 보여 주는 간단한 프로그램을 작성하라
* 여기서 질문!! 전달인자가 1개인 함수와 2개인 함수만들어 오버 로딩 하라는 것인가? 그게 아니라면... cin을 라인별로 입력 받아햐겠는데.. 어떤때는 변수를 하나만 받고 어떤때는 변수를 두개 받아야하니.. 라인별로 처리 해야할듯.. 하지만 라인별로 처리해도....;;;; 음... 생각이 떠오르지 않음..;;; 쳇..;;[[BR]] 어제 교수가 defalte 에 대해 설명했던거 같은데.. 전달인자를 취하지 않으면 이미 입력된 변수의 값으로 처리한다. 라고...;; 음..;;;이렇게 해야하나?
- 2ndPCinCAUCSE/ProblemB . . . . 3 matches
우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌이므로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌이므로 나와 아버지 형제들과는 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 입력에서 요구한 두 사람의 촌수를 나타내는 정수를 출력한다. 어떤 경우에는 두 사람간의 친척 관계가 전혀 없어 촌수를 계산할 수 없을 때가 있다. 이 때는 -1을 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 2ndPCinCAUCSE/ProblemC . . . . 3 matches
유치원에 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기 위해 목적지까지 번호순서대로 일렬로 서서 걸어가도록 하였다. 이동 도중에 보니 아이들의 번호순서가 바뀌었다. 그래서 선생님은 다시 번호 순서대로 줄을 세우기 위해서 아이들의 위치를 옮기려고 한다. 그리고 아이들이 혼란스러워하지 않도록 하기 위해 위치를 옮기는 아이들의 수를 최소로 하려고 한다.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 번호 순서대로 줄을 세우는데 옮겨지는 아이들의 최소 수를 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 2학기파이선스터디/서버 . . . . 3 matches
#참여자 이름을 읽어서 등록한다
#참여자 이름을 읽어서 등록한다
#참여자 이름을 읽어서 등록한다
- 2학기파이선스터디/클라이언트 . . . . 3 matches
* Login : 현재 채팅에 사용중인 ID와 사용하고자 하는 ID를 비교하여, 채팅 참가 허가 유무를 확인한다.
* ReceiveMessage? : 서버로부터 전달되는 메시지를 받아서 ChatMain? 클래스의 메시지 출력 화면에 보여주는 역할을 한다.
* UserList? : ChatMain? 클래스의 사용자 List에 접속한 사용자 ID를 보여주는 기능을 한다.
- 3rdPCinCAUCSE/ProblemA . . . . 3 matches
왼쪽그림에서와 같이 같은 색의 바둑알이 연속으로 다섯 알이 놓이면 그 색이 이기게 된다. 여기서 연속이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 즉, 위의 그림은 검은색이 이긴 경우이다. 하지만, 여섯 알 이상이 연속으로 놓인 경우에는 이긴 것이 아니다.
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를, 아직 승부가 결정되지 않았을 경우에는 0을 출력한다. 그 다음에 검은색 또는 흰색이 이겼을 경우에는, 연속된 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알 (연속된 다섯 개의 바둑알이 세로로 놓인 경우, 그 중 가장 위에 있는 것)의 가로줄 번호와 세로줄 번호를 순서대로 출력한다. 각 숫자 사이에는 빈칸을 둔다. T 개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 5인용C++스터디/다이얼로그박스 . . . . 3 matches
이 부분에서 사용자가 선택하고 싶은 것을 선택을 한다. 이 Test프로그램은 Dialog based를
모든 대화상자는 modal이거나 modeless형식이다. modal대화상자는 대화상자가 활성화 된 후 모든 작업은 이 대화상자에서만 이루어진다는 것이다. 즉, 대화상자를 닫을 때까지는 다른 작업은 할 수 없게 한다. 반대로 modeless대화상자는 활성화 된 후에도 또 다른 윈도우로 넘어가 작업을 할 수 있다. 대화상자는 기본 default로 modeless이다.
modalless dialog의 예는 글 워드 프로세서의 찾기 창을 들 수 있다. 찾기창을 띄운 후 창을 닫지 않로서도 문서편집 작업을 계속해서 할 수 있다. 이러한 속성을 modalless라고 한다.
- 5인용C++스터디/메뉴와단축키 . . . . 3 matches
실행창의 주메뉴 핸들을 구하여 *cmenu에 대입하고 주메뉴의 첫번째 부메뉴판의 핸들을 구한다.
cmenu(주메뉴의 첫번째 부메뉴판이 기억되어있는)를 좌표 (point.x, point.y) 이후에 표시한다.
0은 메뉴판이 마우스 커서 오른쪽 아래에 표시되게 한다.
- ACE . . . . 3 matches
우리가 많이 사용하는 버클리 소켓 API 를 사용한다 하더라도, 이기종간 프로그래밍을 하기는 어렵다. 이는 플랫폼간 이식성이 결여되어있고 약간의 차이가 있기 때문에 이식성 높고 안정적인 프로그래밍을 하는데 많은 어려움을 주기 때문이다. 또한 이식에 성공한다 하더라도 이전의 성능을 완전하게 보장받을 수도 없다. 또한 이식을 고려하지 않고 단순하게 소켓 API 만을 사용한다하더라도, 개발자가 조심하지 않는 이상 소켓 API 는 개발중에 문제점을 일으킬 확률이 높다. 이는 소켓 API 가 개발중에 일어날수 있는 문제점에 대한 방지를 보장하지 않기 때문이다. 이러한 문제점을 해결하기 위해 수년간 개발되어온 프레임워크가 [ACE] 이다. [임인택]은 간단한 서버를 작성할때 조차도 [Java]를 많이 선호하였는데, [ACE] 를 알게되면서는 [ACE] 로 서버를 작성해 보고 싶다는 생각을 하였다.
- ACM_ICPC/2013년스터디 . . . . 3 matches
* 참여를 원하는 분을 위한 문은 언제나 열려있습니다.
* n 마리의 쥐가 크기가 같은 n 개의 버터를 먹는데 n 시간이 걸린다고 할 때 , m 마리의 쥐가 m 개의 버터를 먹는데 걸리는 시간을 구하는것이 문제이다. 각각의 쥐가 치즈를 먹는 속도는 모두 동일하다고 한다.
* 풀면서 주의할 점 : dp테이블의 범위에 벗어나는 경우(예를 들어서 음수 번지)가 나올 수 있으므로 이에 대한 처리를 해줘야 한다. 비쥬얼 스튜디오에서 코드를 작성할 때, 테이블 범위에 벗어나도 정답이 나오는 경우가 생겨서 이런 예외를 발견하기 힘들었음..
- ATmega163 . . . . 3 matches
* 먼저 웨비 사운드에서 ATmega 163L E board 를 구한다. - ps 난 판매 사원이 아니다.. 더 좋은 것이 있으면 ..그걸..
* ISR 모듈과 함께 Board에 장착한다.
* 용산 가서 9 pin 짜리 Serial Port 잭과 5.5volt 어덥터에 끼울 것을 준비한다.
- AntOnAChessboard . . . . 3 matches
어느 날 앨리스라는 개미가 M × M 체스판에 올라갔다. 앨리스는 체스판에 있는 모든 셀을 방문하려고 한다. 그래서 판 한 쪽 구석에서 시작해서 체스판을 한 꺼풀씩 훑어나가기로 했다. 앨리스는 (1, 1)자리부터 움직이기 시작했다. 처음에는 한 칸 위로 올라간 다음, 오른쪽으로 한칸 이동하고, 다시 한 칸 아래로 내려왔다. 그리고 나서 한 칸 오른쪽으로 움직여서 두 칸 위로 올라가고, 두 칸 왼쪽으로 움직였다. 이런 식으로 매번 한 행, 그리고 한 열씩을 움직였다. 예를 들어 앨리스가 25단계를 움직인 경로를 표시해보면 다음과 같다. 여기에서 각 숫자는 앨리스가 각 셀을 방문한 순서를 나타낸다.
앨리스는 여덟 번째 단계에서는 (2, 3) 위치에 있었고, 20번째 단계에서는 (5,4) 위치에 있었다. 단계 수가 주어졌을 때, 체스판이 매우 커서 움직일 수 있는 위치에 제한이 없다고 할 때, 앨리스의 위치를 결정하는 프로그램을 만들어야 한다.
입력된 값에 대해 해당 단계에서의 앨리스의 위치 (x,y)를 나타내는 두 정수를 출력한다. x는 열 번호, y는 행 번호를 나타낸다. 두 정수 사이에는 스페이스가 한 개 들어간다.
- AppletVSApplication/영동 . . . . 3 matches
* main() 함수를 반드시 포함한다.
* 웹 브라우저에서 실행되는 작은 프로그램을 애플릿이라 한다. 웹에서 클라이언트 측의 프로그래밍을 지원하는 강력한 툴로 사용된다.
- ArtificialIntelligenceClass . . . . 3 matches
지금 인공지능 수업이 피곤하고 졸린 이유는 뭘까. 교수님은 학생들의 feedback 을 끌어내려고 하지만, 끌어내기 위한 방법 자체를 잘 모르신다는 느낌을 강하게 받았다. 수업 내용의 경우도 책의 수준을 벗어나지 못한다. (시간상 조명상 더 졸립기까지 하다. 또는 교수님이 책의 내용을 정확하게 이해하시지 못한다는 느낌을 많이 받게 되었다.) 차라리 좀 더 구체적인 예제를 만들고, 이에 대한 해결법의 진행 과정에 대해 설명해주신다면 어떨까.
요새 궁리하는건, othello team 들끼리 OpenSpaceTechnology 로 토론을 하는 시간을 가지는 건 어떨까 하는 생각을 해본다. 다양한 주제들이 나올 수 있을것 같은데.. 작게는 책에서의 knowledge representation 부분을 어떻게 실제 코드로 구현할 것인가부터 시작해서, minimax 나 alpha-beta Cutoff 의 실제 구현 모습, 알고리즘을 좀 더 빠르고 쉬우면서 정확하게 구현하는 방법 (나라면 당연히 스크립트 언어로 먼저 Prototyping 해보기) 등. 이에 대해서 교수님까지 참여하셔서 실제 우리가 당면한 컨텍스트에서부터 시작해서 끌어올려주시면 어떨까 하는 상상을 해보곤 한다.
- AustralianVoting . . . . 3 matches
호주식 투표 제도에서는 투표권자가 모든 후보에 대해 선호도 순으로 순위를 매긴다. 처음에는 1순위로 선택한 것만 집계하며 한 후보가 50%이상 득표하면 그 후보가 바로 선출된다. 하지만 50%이상 득표한 후보가 없으면 가장 적은 표를 받은 후보(둘 이상이 될 수도 있음)가 우선 탈락된다. 그리고 이렇게 탈락된 후보를 1순위로 찍었던 표만 다시 집계하여 아직 탈락되지 않은 후보들 가운데 가장 높은 선호도를 얻은 후보가 그 표를 얻는다. 이런 식으로 가장 약한 후보들을 탈락시키면서 그 다음 순위의 아직 탈락하지 않은 후보에게 표를 주는 과정을 50%이상의 표를 얻는 후보가 나오거나 탈락되지 않은 모든 후보가 동률이 될 때까지 반복한다.
각 테스트 케이스에 대해 당선된 후보의 이름 한 줄, 또는 동률을 이룬 후보들의 이름이 들어있는 여러 줄을 출력한다. 두 개 이상의 테스트 케이스가 있는 경우 각 결과는 빈 줄로 구분한다.
- BasicJAVA2005/실습2/허아영 . . . . 3 matches
//레이아웃을 구성한다.
//컨텐트 패인을 얻고 레이아웃을 설정한다.
//버튼을 생성하여 추가한다.
- BasicJava2005/3주차 . . . . 3 matches
* String은 Java에서 기본적으로 지원하는 String을 저장하는 자료형
* 그 이외의 패키지는 import를 해야 한다.
* Java에도 MS의 MSDN같이 사용자를 돕는 메뉴얼이 존재한다.
- Basic알고리즘/RSA알고리즘 . . . . 3 matches
1. p와 q가 소수라고 했을 때, n = pq를 계산한다.
2. 이제 p와 q에서 각각 1을 빼서 곱한다. 그것을 ∮(파이) 라고 부른다.
5. (n, e)는 퍼블릭키고, (n, d)는 프라이빗키다. p,q,∮와 같은 값은 공개되지 않도록 한다.
- BirthdayCake . . . . 3 matches
오늘은 루시와 릴리의 생일이라서 어머니가 생일 케이크를 사오셨다. 케이크에는 체리가 2N(1≤N≤50)개 있다. 어머니는 케이크를 한 가운데를 따라 직선으로 잘라서, 루시와 릴리에게 주는 케이크의 양과 체리의 개수를 정확히 똑같게 하려고 한다. 어머니를 도와주기 위한 프로그램을 만들어보자.
케이크의 반지름은 100이며 중심은 (0,0)에 있다. 각 체리의 좌표는 두 정수 (x,y)에 의해 주어진다. Ax+By=0 형태의 직선을 구해야 하는데, A와 B는 모두[-500,500]구간에 있는 정수다. 체리는 케이크를 자르는 직선 위에 있으면 안 된다. 모든 테스트 케이스에는 적어도 한 개의 풀이가 존재한다.
각 테스트 케이스마다 한 줄씩 A와 B를 출력하는데, 두 정수 사이에는 스페이스를 한 개 출력한다. 풀이가 여러 개 있으면 그 중 아무 풀이나 출력하면 된다.
- Boost/SmartPointer . . . . 3 matches
* [http://boost.org/ boost] 에 가서 다운받고 설치한다.
* boost 라이브러리는 헤더 파일만이 존재한다. 모든 구현을 헤더 파일에 해 놓았기 때문이다. 바로 필살 헤더와 구현 분리하기 귀잖어 기술....본인은 애용한다...
- BoostLibrary/SmartPointer . . . . 3 matches
* [http://boost.org/ boost] 에 가서 다운받고 설치한다.
* boost 라이브러리는 헤더 파일만이 존재한다. 모든 구현을 헤더 파일에 해 놓았기 때문이다. 바로 필살 헤더와 구현 분리하기 귀잖어 기술....본인은 애용한다...
- BusSimulation . . . . 3 matches
* User Input - 사용자는 자신이 원하는 시간 후의 시물레이션 결과를 볼 수 있다. 시간과 분을 입력받는다.
* Output - 출력결과는 버스의 위치(단위 meter), 단계에 따라서 승객 수를 출력한다.
* 종점에서는 모든 승객이 내린다. 종점에서는 타는 승객이 없다. (주의 - 아래 InputData에서 원하는 시간을 5400(1시간30분)이 아니라 9600(2시간40분)으로 설정함)
- BusSimulation/영창 . . . . 3 matches
* 각 역마다 사람이 증가하는 값을 다르게 정해야함. (시시각각에 다르게 적용되어야 하기 때문에 적당한 범위 안에서 랜덤으로 처리해야한다.)
* 역에서 기다리는 사람이 타려고하는 버스가 도착하면 그 버스에만 탑승해야한다.
타야하는 버스는 마찬가지로 랜덤으로 할당해야한다.
- C++스터디_2005여름/학점계산프로그램/문보창 . . . . 3 matches
fin >> str; // >> 은 white space(공백)을 무시한다.
// 4 과목 점수의 평점을 구한다.
// 학생 정보를 출력한다.
- CNight2011/김태진 . . . . 3 matches
2010년 경진대회 문제로 Dynamic, Back Tracking에 대해서 설명해주었어요. 간단하게 요약해보자면, 가능성을 따져보는건데요, 어느 시점에서 그 길이 답이되는 길일 가능성이 없어지면 그 경우의 수는 제외한다는 거죠.
혹은 10만개의 선형적 자료 사이에 a~b사이의 값을 모두 합하는 시행을 1만번 한다는 경우, 미리 모든 값의 합을 저장해놓는다는 거예요. 3 4 6 2 인 경우, 다른 곳에 3 7 13 15를 저장해놨다가, a b값이 나오면 그 두값을 빼는 것만으로 바로 쉽게 그 값을 구한다는 거였어요.
- CheckTheCheck . . . . 3 matches
체스판 설정을 읽어서 킹이 공격받고 있는지(체크 상태인지)확인하는 일을 해야 한다. 상대방의 다음 수에 의해 킹이 죽을 수 있는 위치에 있으면 킹이 체크 상태가 된다. 흰 말은 대문자로, 검은 말은 소문자로 표시된다. 흰 편은 항상 판의 아래쪽에, 검은 편은 판의 위쪽에 자리잡는다.
다른 말을 건너뛸 수 있는 것은 나이트밖에 없다는 것을 꼭 기억해두자. 폰의 움직임은 어느 편인가에 따라 다르다. 검은 폰이면 아래쪽 대각선 방향으로, 흰색 폰이면 위쪽 대각선 방향으로 한 칸만 움직일 수 있다. 위에 있는 예는 소문자 "p"로 표시된 검은 폰의 움직임을 나타낸 것이다. 방금 "움직인다"라고 표현한 것은 폰이 상대방 말을 잡을 수 있는 경우를 의미한다.
입력된 각 판 배치에 대해 다음 중 한 가지 답을 출력한다.
- ClassifyByAnagram/인수 . . . . 3 matches
* 먼저 사전 파일을 입력받으면서, 키값은 그 단어, 키에 해당하는 값은 <알파벳, 그 알파벳의 출현 개수> Pair인 Pair를 생성한다.(--; 뭔가 좀 말이 이상하군)
* 자료구조도 잘 골라야 한다.
* 컴터 상태도 좋아야 한다.--;
- ComponentObjectModel . . . . 3 matches
COM은 소프트웨어 컴포넌트를 위해 만들어진 Microsoft 사의 기술이다. 이는 수많은 MS사의 프로그래밍 언어에서 소프트웨어간 통신과 동적 객체생성을 가능케한다. 비록 이 기술이 다수의 플랫폼상에서 구현이 되기는 하였지만 MS Windows 운영체제에 주로 이용된다. 사람들은 .Net 프레임워크가 COM을 어느정도까지는 대체하리라고 기대한다. COM 은 1993년에 소개되고 1997즈음해서 MS가 강조한 기술이다.
COM 플랫폼은 Microsoft .NET프레임웍이 나오면서 많은 부분 대체되었다. 또한 Microsoft 사는 이제 .NET에 대한 마케팅을 하는데 노력한다. 약간 더 나아가 생각해보면 .NET을 선호하는 환경에서 이제 사양의 길로 접어들었다.
- ComputerGraphicsClass . . . . 3 matches
2004년 부터는 프로젝트시 OpenGL 을 이용한다. (하지만 파이프라인 밑바닥부터 구현 한다)
실제 수업의 경우는 OpenGL 자체가 주는 아니다. 3DViewingSystem 이나 Flat, Gouraud, Phong Shading 등에 대해서도 대부분 GDI 로 구현하게 한다.(Flat,Gouraud 는 OpenGL 에서 기본으로 제공해주는 관계로 별 의미가 없다)
- CppStudy_2002_2/STL과제 . . . . 3 matches
* 컨테이너는 STL에서 제공하는 것중의 하나를 써야만 한다.
* 총점순으로 정렬한다.
* 이름은 string 클래스로 처리한다.
- CppStudy_2002_2/슈퍼마켓 . . . . 3 matches
* deposit -- 돈을 예금한다
* cancel -- 산 물건을 취소한다
buy <product> <number> -- <product>를 <number>개 만큼 구매한다
- CppStudy_2005_1/BasicBusSimulation . . . . 3 matches
* 시내 버스가 제 각각 다른 속도로 시내를 순환 한다. 이때 사용자로부터 입력 받은 특정 시점에서의 각 버스가 위치하는 지점을 출력해준다.
* 이때 시내 버스는 동시에 출발 한다고 가정한다.
- DPSCChapter2 . . . . 3 matches
디자인 패턴에 대한 구체적인 설명에 들어가기 전에 우리는 다양한 패턴들이 포함된 것들에 대한 예시들을 보여준다. 디자인 패턴 서문에서 GoF는 디자인 패턴을 이해하게 되면서 "Huh?" 에서 "Aha!" 로 바뀌는 경험에 대해 이야기한다. 우리는 여기 작은 단막극을 보여줄 것이다. 그것은 3개의 작은 이야기로 구성되어있다 : MegaCorp라는 보험회사에서 일하는 두명의 Smalltalk 프로그래머의 3일의 이야기이다. 우리는 Don 과(OOP에 대해서는 초보지만 경험있는 사업분석가) Jane (OOP와 Pattern 전문가)의 대화내용을 듣고 있다. Don 은 그의 문제를 Jane에게 가져오고, 그들은 같이 그 문제를 해결한다. 비록 여기의 인물들의 허구의 것이지만, design 은 실제의 것이고, Smalltalk로 쓰여진 실제의 시스템중 일부이다. 우리의 목표는 어떻게 design pattern이 실제세계의 문제들에 대한 해결책을 가져다 주는가에 대해 설명하는 것이다.
우리의 이야기는 지친표정을 지으며 제인의 cubicle (음.. 사무실에서의 파티클로 구분된 곳 정도인듯. a small room that is made by separating off part of a larger room)로 가는 Don 과 함께 시작한다. 제인은 자신의 cubicle에서 조용히 타이핑하며 앉아있다.
- DebuggingTip . . . . 3 matches
기본 예제와 같은 작업을 했는지 확인한다.
바른 입력값을 주었는지 확인한다.
눈 앞에 보이는 문제를 해결하기 보다는 본질이 무엇인가 생각해야 한다. 왜 잘못되었는가?
- DelegationPattern . . . . 3 matches
이 기능을 추가하기 위해 일단 Airport Code 를 Refactoring 하기로 했다. 이를 위해 Airport 의 기능중 Configuration 과 관련된 기능에 대해 Configuration 을 Extract 하고, 내부적으로는 Delegation 함으로서 외부적으로 보이는 기능에 대해서는 일관성을 유지한다. (Test Code 가 일종의 Guard 역할을 했었음)
DelegationPattern을 쓸 때 중요한 점은, DelegationPattern을 사용하는 클래스의 클라이언트는 그 클래스가 Delegation을 쓰는지 안쓰는지 몰라야 한다는 것이다. 즉, 우리에게 있어 DelegationPattern이 사용된 클래스는 여느 클래스와 동일하게 인식되고 사용되어져야 한다. 게을러서 남에게 자신의 숙제를 위임하는 학생은 절대 남들에게 그 사실을 노출해선 안된다.
- DirectVariableAccess . . . . 3 matches
초기화처럼 변수에 접근하는 방법도 큰 이슈 중 하나였다. 이것에도 두가지 방법이 있는데, 역시 패턴의 존재 이유처럼, 하나는 유연성, 또 다른 하나는 가독성이다. 첫번째 방법은 모든 변수를 직접 접근하는 것이다. 다른 하나는, 항상 메세지를 보내는 것이다.(setter,getter를 사용한다.)
와드 아저씨의 말로는, '클래스에 아주 적은 양의 메소드만 존재한다면, getter/setter를 추가하는 것만으로도 메소드의 수가 두배가 되어버린다. 이는 전혀 사용되지 않을 유연성을 위해 쓸데없이 갯수를 늘린 것이다.' 라고 한다.
- Doublets . . . . 3 matches
입력된 각 단어 쌍에 대해 첫번째 단어로 시작해서 두번째 단어로 끝나는 가장 짧은 단어 시퀀스를 한 줄에 한 단어씩 출력한다. 위 아래에 있는 두 단어는 더블릿이어야 한다.
가장 짧은 시퀀스가 여러 개 나오면 그 중 아무 시퀀스나 출력해도 된다. 답이 없으면 {{{~cpp "No solution."}}}이라고 출력한다. 각 케이스 사이에는 빈 줄을 하나씩 집어넣는다.
- Downshifting . . . . 3 matches
(2) 자동차의 기어를 저속으로 전환한다.
미친 듯이 일하면서 행복감을 못 느끼는 사람들에게 일을 좀 줄이고 행복감을 찾으라는 이야기를 한다. 일중독에 빠져 놓치기 쉬운 가족관계, 여가생활, 종교활동, 봉사활동을 하면서 새로 얻게 된 시간을 활용해 보라고 권유한다.
- EightQueenProblem . . . . 3 matches
널리 알려진 고전적 체스 퍼즐. 8X8의 체스판 위에 총 8개의 여왕을 배치하는데 서로 공격하지 않아야 한다. (참고로 여왕은 상하좌우 대각선 총 8방향으로 마음대로 -- 장기의 차와 같이 한번에 여러칸을 -- 움직일 수 있다.
조건을 만족하는 체스판의 배치 상태를 출력한다.
* 프로그래밍을 잘한다는 것은 단순히 빠른 시간 안에 짧고 기발한 프로그램을 만들어낸다는 것이 아니라는 것을 인식시켜주기 위해
- EightQueenProblem/이선우3 . . . . 3 matches
체스 말 중에서 퀸에 해당한다. 가로,세로,오른쪽/왼쪽 대각선 방향을 체크한다.
n-Queens Problem을 해결하는 플레이어. 자신이 생각하는 알고리즘(여기서는 play 메소드)에 따라 보드에 체스 말 중, 퀸을 배열하고 올바른지 확인한다.
- EnglishSpeaking/TheSimpsons/S01E01 . . . . 3 matches
* 크리스마스를 즐겁게 보내는 옆집 플랜더스네 가족들, 심슨네 가족들도 나름의 크리스마스를 보내려고 한다. 반면 심슨네 가족은 호머의 회사에서 크리스마스 보너스가 지급되지 않게 되고 크리스마스 때 쓰기 위해 모아놨던 저금통도 바트가 팔에 허락없이 문신을 해버리는 바람에 이를 지우기 위한 시술비로 전부 날려버린다. 호머는 모를 통해 알게 된 산타클로스 아르바이트를 하지만 받게 되는 급료는 겨우 13달러. 호머와 바트는 바니를 통해 알게된 경구장에서 '산타의 작은 도우미'라는 개에게 13달러를 모두 걸지만 꼴찌를 하고 돈을 잃는다. 그 대신 경구장에서 아예 쫓겨나 버린 '산타의 작은 도우미'를 크리스마스 선물로 집에 데려간다.
* 내용 : 리사, 바트가 산타클로스로부터 원하는 선물을 하나씩 말하고 처형인 Patty로부터 전화가 온다.
* 내용 : 보너스를 못받았다는 사실을 차마 가족들에게 말하지 못하는 호머는 모의 술집에서 바니를 통해 산타클로스 알바가 있음을 알게 되고 면접을 본 후 일을 시작한다.
- EuclidProblem . . . . 3 matches
유클리드가 밝혀낸 바에 따르면, 임의의 정수 A, B에 대해 A와 B의 최대공약수를 D라고 할 때 AX + BY = D 를 만족하는 정수 X와 Y가 존재한다. A와 B가 주어졌을 때 위 식을 만족시키는 X와 Y, 그리고 A와 B의 최대공약수 D를 구하라.
입력된 각 줄에 대해 각각 스페이스로 구분된 세 개의 정수 X와 Y 그리고 D를 출력한다. 식을 만족하는 X와 Y가 여러 개 있으면, (첫째로) |X| + |Y|가 최소가 되고 (둘째로) X <= Y 인 값을 출력한다.
- EventDrvienRealtimeSearchAgency . . . . 3 matches
* 쉽게 생각하면 로봇이 대신 웹서핑을 해서 사용자가 필요한 정보만 실시간으로 수집해서 바로 바로 실시간으로 제공해주는 Searcy Agency를 Event Driven Realtime Search Agency 라고 칭한다.
* 로봇이 사용자가 지정한 타겟 웹 정보를 짧은 시간 간격으로 수집한다.
* 각 게시판이나 웹페이지들이 Observable 즉 관찰할 객체들이고 이 객체들은 각자 자신의 Observer 리스트를 가지고 있다. 이 Oberver 리스트는 바로 사용자들이 아니라 이 많은 사용자들과 웹을 매개해주는 서버이다. 이 Obsever 서버 리스트를 가지고 있으면서 해당 자신의 웹이 업데이트 될때마다 업데이트 내용을 이 Observer 리스트 서버(EDRSA가 동작하는)들에게 전송을 한다.
- ExecuteAroundMethod . . . . 3 matches
같이 일어나야만 하는 행동은 어떻게 표현을 할 수 있을까? 예를 들면 파일을 열었다면 닫아야한다. DC를 얻어왔으면 해제해줘야 한다. 등등...
내가 보기엔 저 방법이 좋아보이는데... 클라이언트로 하여금 이 객체를 배우기가 더 어렵게 만든다고 한다. 그럴까? 잘 모르겠다. 좀 더 써보면 알 듯하다.
- ExploringWorld/20040308-시간여행 . . . . 3 matches
지하철에서 세환이와 오늘을 제목을 정한다면, 어떨까 라는 고민을 했다. '워밍업 데이'? '시작한날'? 하지만 이런 무미건조한 단어를 쓰기에 오늘을 따뜻하게 표현하고 싶었다. 그리고 집에와 Zp서버의 과거를 주로 이야기한 '시간여행'이라는 제목을 붙였다. 오늘을 한마디로 설명하기에 충분한 날이다. 그러나 크게 후회되는 점이 있다. 얼마전 나의 여행기에 '잘못된 이야기'에 대한 반성을 쓰고 실천 사항을 적었는데 오늘 후배님들 앞에서 실천하지 않았다. 결과, 다시 한번 아까운 시간을 두서없는 이야기로 채우는 우를 반복하였다. 다음주에는 반드시 이야기를 위한 '계획'을 세워 가치있고 압축적으로 시간을 써야겠다. --NeoCoin
집으로 돌아와 MakeAnotherWorld 라는 세상을 만든다는 거창한 은유법보다, 여행을 한다는 느낌의 은유로 시작하면 재미있겠다는 생각이 들었다. 그래서 WalkingAroundWorld 나, CyclingWorld 같은 여행이라는 은유의 제목이 더 그럴싸한것 같은데, 너희들은 어때? --NeoCoin
오 좋은 생각이다. 차타고 휙지나가는게 아니라, 자전거를 타거나 걸어다니면서 이것도 기웃 저곳도 기웃을 생각했는데, 그럴게 아니라 새로운 세계를 탐험한다는 느낌이 더 좋을것 같다. ExploringWorld 정도면 될것 같다. rename 할까? 또 좋은 의견 없나? --NeoCoin
- ExtremeBear/Plan . . . . 3 matches
* 함수 : 동사와 명사의 조합으로 이루어지며 첫 단어의 첫글자는 소문자로 시작하고 두번째 단어부터는 대문자로 시작한다 -> (ex testCase)
* 변수 : 명사와 명사의 또는 동명사와 명사 또는 분사와 명사의 조합이로 이루어지며 멤버 변수, 지역 변수, 전달 인자든 뭐든 상관 없이 첫 단어의 첫글자는 소문자로 시작하고 두번째 단어부터는 대문자로 시작한다 -> (ex backgroundColor)
특별한 일이 없는 한 월(공대로비),화(신피),수(공대로비) 오후 5시를 기본으로 한다.
- Freemarker . . . . 3 matches
프리마커는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진이다. 프리마커에서는 HTML을 템플릿으로 저장하는데 이들은 결국 템플릿 객체로 컴파일 된다. 이 템플릿 객체들은 서블리셍서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다. 프리마커 객체들은 서블릿에서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다. 프리마커는 고유의 템플릿 언어를 사용하고, 정적인 HTML페이지에 근접한 속도를 자랑한다. ..하략
- GDG . . . . 3 matches
* OpenCamp가 별로 좋지 않다는 의견으로 보일 수 있어 부연합니다. ZeroPager가 원하는 활동이 있다면 그것을 하면 되지 굳이 OpenCamp와 같은 방식의 세미나를 고집할 필요는 없다는 의미입니다. - [김수경]
* Google은 기존 커뮤니티(=ZeroPage)를 지원한다기 보다는 직속 커뮤니티(=GDG)를 키우려는 것 같음
* GDG 명칭은 지역이나 학교만 가능 설립한다면 GDGCAU가 됩니다 - [조광희]
- GarbageCollection . . . . 3 matches
컴퓨터 환경에서 가비지 컬렉션은 자동화된 메모리 관리의 한가지 형태이다. 가비지 컬렉터는 애플리케이션이 다시는 접근하지 않는 객체가 사용한 메모르 공간을 회수하려고 한다. 가비지 컬렉션은 John McCarthy 가 1959년 Lisp 언어에서 수동적인 메모리 관리로 인한 문제를 해결하기 위해서 제안한 개념이다.
현재에는 기본적으로 Java, Dylan 과 같은 언어에서는 기본 명세로서 제공되는 기능이며, C++, C와 같이 수동적 메모리 할당으로 디자인되었지만 가비지 컬렉션 구현을 지원하는 언어들도 존재한다.
- HanoiProblem . . . . 3 matches
그리고 재귀함수를 만들 때 유의점과 사고보조물을 가르쳐 줍니다. 유의점이라면 재귀함수는 리턴되는 값의 종류(타입)가 모두 동일해야 한다는 것, 재귀호출을 벗어나는 지점 근방에서 유의해야 한다는 점 등이고, 사고보조물로는 스택의 상태를 그림으로 그리는 방법이나, 수식을 사용하는 방법 등이 있겠죠.
종종 미로가 너무 복잡할 때 목적지에서 거꾸로 내려오는 것이 더 간단할 때가 있습니다. TestDrivenDevelopment도 이 방법을 사용합니다. 자신이 원하는 것을 컴퓨터에게 설명해 주고, 그 목적지에서 거슬러 내려옵니다.
- HanoiTowerTroublesAgain! . . . . 3 matches
공을 한 번에 하나씩, 번호가 커지는 순서로 기둥에 끼우는 게임을 한다(즉 1번을 끼우고 나서 2번을 끼우고, 그리고 나서 3번을 끼우고 하는 식으로 공을 기둥에 끼움). 더 이상 서로 밀어내지 않도록 공을 끼울 수 없게 되면 게임이 끝난다. 게임의 목표는 최대한 많은 개수의 공을 끼우는 것이다. 위에 있는 그림에는 기둥이 네 개인 경우에 최대한 많은 공을 끼운 결과가 나와 있다.
각 테스트 케이스에 대해 기둥에 끼울 수 있는 공의 최대 개수를 나타내는 정수를 출력한다. 끼울수 있는 공의 개수가 무한대면 '-1'을 출력한다.
- HardcoreCppStudy/첫숙제/Overloading/변준원 . . . . 3 matches
전달인자 리스트를 가지고 함수를 사용할 때에는 디폴트 전달인자를 오른쪽에서 왼쪽의 순서로 첨가해야 한다. 즉, 어떤 전달인자의 값을 내정하려면 그 전달인자보다 오른쪽에 있는 모든 전달인자를 디폴트 전달인자로 해야 한다.
함수 재정의의 중요한 열쇠는 함수의 전달인자 리스트인데, 이것을 함수의 시그내처라고도 한다.
- HelpOnProcessingInstructions . . . . 3 matches
* {{{#keywords}}} ''keyword1,keyword2'': 페이지에 대한 키워드를 설정한다.
* {{{#redirect}}} ''url'' : 페이지를 보게되면 `url`이 가리키는 곳으로 이동한다. `url`은 페이지 이름이 될 수도 있고, 인터위키, url 등등이 될 수 있다.
* {{{#alias}}} ''alias1,alias2'' : 페이지의 별명을 설정한다. (모니위키 '''1.1.5''' 부터)
- HerdingFrosh . . . . 3 matches
4학년 선배는 전신주에 그 명주실을 묶고, 잔디밭 주변을 한 바퀴 돌면서 명주실로 모든 학생들을 감싼 다음 다시 전신주로 돌아온다. 그 선배는 모든 신입생들을 둘러싸는 필요한 최소 길이만큼의 명주실을 사용했으며, 전신주에 명주실을 묶기 위해서 1미터만 남겼다.
각 테스트 케이스에 대해 필요한 명주실의 길이를 소수점 둘째 자리까지 출력한다. 서로 다른 테스트 케이스의 결과 사이에는 빈 줄을 하나씩 출력한다.
- Hessian . . . . 3 matches
이를 컴파일 하기 위해서는 hessian-2.1.3.jar 화일과 jsdk23.jar, resin.jar 화일이 classpath 에 맞춰줘야 한다. (이는 resin 의 lib 폴더에 있다. hessian jar 화일은 [http://caucho.com/hessian/download/hessian-2.1.3.jar hessian] 를 다운받는다)
그리고 class 화일을 Servlet 이 돌아가는 디렉토리에 복사한다. 이로서 RPC Publish 기본준비는 ok.
Java 의 경우는 다음과 같다. 위에서 정의한 interface 인 Basic 이 있어야 한다.
- HowManyPiecesOfLand? . . . . 3 matches
타원 모양의 땅이 주어져 있는데, 그 땅의 테두리에 n개의 점을 임의로 선택한다. 그리고 나서 각 점들을 다른 모든 점과 직선으로 연결하면 n(n-1)/2 개의 선이 만들어진다. 이 때 테두리 위의 점을 잘 선택해서 나뉘어지는 땅의 개수가 최대가 되도록 만들면 몇 개의 조각으로 나눌 수 있을까? 다음은 n = 6 일 때 땅을 나눠놓은 모습이다.
각 테스트 케이스에 대해 n개의 점을 이은 직선에 의해 나뉘는 땅의 최대 개수를 출력한다. 한 줄에 하나씩의 결과만 출력한다.
- IntegratedDevelopmentEnvironment . . . . 3 matches
IDE는 Integrated Development Environment를 말하며 한국어로는 통합 개발 환경을 의미한다. 보통 텍스트 편집기에 syntax highlite와 debugger, 빌드 도구, 컴파일러 등이 모두 통합되어 나오며 IDE하나만으로도 소스코드를 작성하는데 문제가 없다.[* 최근에는 이마저도 부족한 경우도 있다.]
종종 일반 Text editor가 너무나 많은 기능을 제공하는 나머지 IDE랑 헷갈리기도 한다. vim의 plugin을 깔거나 sublime을 잘 설정하면 IDE부럽지 않게 사용할수 있으나 해당 프로그램은 기본적으로 TextEditor이다. plugin을 통해서 지원하는 기능은 사실상 통합된 기능이라 보기 어렵기 떄문이다.
- JavaHTMLParsing/2011년프로젝트 . . . . 3 matches
//URL객체를 생성하고 해당 URL로 접속한다..
//내용을 읽어오기위한 InputStream객체를 생성한다..
//내용을 읽어서 화면에 출력한다..
- JavaScript/2011년스터디/7월이전 . . . . 3 matches
* 지난주에 키보드 이벤트를 처음에만 처리하고 그 다음에는 못 처리한다고 생각했는데 오늘 그럴리가 없다는 생각에 다시 테스트해보았습니다. 해봤더니 역시나 키보드 이벤트를 못 받는 것이 아니었네요. 이벤트 처리기에서 document.write()를 쓴 게 문제였습니다. 그런데 그 문제는 해결했지만 객체를 어떻게 설계할지가 새로운 고민거리네요. - [김수경]
* 공부하면 할수록 HTML이라던가 웹에 대히 공부해야겠다는 생각만 듭니다. javascript만 사용한다는 것은 무리인것 같아요. 이번에는 연속적으로 키보드 이벤트를 받는 문제였는데 생각보다 쉽지 않네요ㅠ 은 innerHTML은 또 처음 들어요;; 여튼 더 공부하겠습니다!! - [박정근]
* 불리언 타입 변환 -41p에서 만약 불리언 값이 문자열 문맥에서 사용되면 true는 문자열"true"로 변환된다와 같은 말이 무슨말인지 정확히 모르겠어요. 저희가 알아낸 것은 true를 write내에 쓰면 1로 인식한다는 것뿐이었어요.
- JavaStudy2004 . . . . 3 matches
진행 방식 및 방향에 대해서는 다른 분들의 의견을 더욱 수렴하고 싶네요 원하는 것이 있으면 적어주세요 --[iruril]
* 지금의 플레이어 외에 조동영, 윤성만, 박진영 학우가 같이 한다고 합니다. 기분 좋게 많아 지네 - [이승한]
* 요새 난 영국 유학생 1학년 대상으로 자바 과외하는데... Pair로 하니까 금방 따라오더라. 내가 먼저 시범을 보이고 그것을 약간 응용한 것을 해보라고 한다. Pair 바꾸는 시간은 약 5~7분. 내가 시범 보이면서 말로 설명도 해야하기 때문에 그정도가 적당. 보통 설명할 때는 펜으로 종이에 그림으로 하고. --재동
- KnightTour/재니 . . . . 3 matches
* 시작 지점을 (0, 0) 부터 (7, 7) 까지 64가지로 하여 순서대로 검색한다.
* 시작 지점과 종료 지점을 화면에 출력한다.
* 나이트가 움직인 순서를 화면에 출력한다.
- KnowledgeManagement . . . . 3 matches
* Nonaka 와 Takeuchi 는 성공적인 KM program 은 지식의 공유를 위해서 내면화된 무언의 지식을 명시적으로 체계화된 지식으로 바꿀 필요가 있다고 얘기한다. 그리고 또한 반대의 경우도 개인이나 그룹에게 있어서 KM 시스템에서 한번 추출한 지식을 내면화 하고 의미있게 체계화 하기 위해서 필요하다고 이야기 한다.
* 예를 들어서 조직을 위해서 새로운 프로젝트에 착수하는 개인은 이전에 비슷한 프로젝트에서 배웠던 교훈이나 지식에 접근하려고 할 것이다. 현재 처리하고 있는 문제에 관련된 정보를 얻기 위해서 프로젝트 중에 관련된 정보에 접근하고, 프로젝트를 마치고 추후 프로젝트에서도 필요하게 될 정보를 남기기 위해서 관련된 정보에 접근하게 될 것이다. 지식 관리를 행하는 사람은 시스템, 저장소, 협동 프로세스를 제공하여 이러한 활동을 촉직 한다.
- LinearAlgebraClass . . . . 3 matches
길버트 스트랭은 선형대수학 쪽에선 아주 유명한 사람으로, 그이의 ''Introduction to Linear Algebra''는 선형대수학 입문 서적으로 정평이 나있다. 그의 MIT 수업을 이토록 깨끗한 화질로 "공짜로" 한국 안방에 앉아서 볼 수 있다는 것은 축복이다. 영어 듣기 훈련과 수학공부 두마리를 다 잡고 싶은 사람에게 강력 추천한다. 선형 대수학을 들었던(그리고 학기가 끝나고 책으로 캠프화이어를 했던) 사람이라면 더더욱 추천한다. (see also HowToReadIt 같은 대상에 대한 다양한 자료의 접근) 대가는 기초를 어떻게 가르치는가를 유심히 보라. 내가 학교에서 선형대수학 수강을 했을 때, 이런 자료가 있었고, 이런 걸 보라고 알려주는 사람이 있었다면 학교 생활이 얼마나 흥미진지하고 행복했을지 생각해 보곤 한다. --JuNe
- Linux/MakingLinuxDaemon . . . . 3 matches
상기에서 확인가능 하듯 daemon 으로 동작하는 프로그램은 터미널이 할당되지 않는다. 또한 기본적으로 ParentPID (ProcessID)가 1번으로 설정되어있음을 알 수 있다. 이는 1번 PID를 가진 init 프로세스가 데몬의 동작을 관리한다는 사실을 알 수 있게 한다.
// 부모프로세스를 종료한다.
- LionsCommentaryOnUnix . . . . 3 matches
훌륭한 화가가 되기 위해선 훌륭한 그림을 직접 자신의 눈으로 보아야 하고(이걸 도록으로 보는 것과 실물을 육안으로 보는 것은 엄청난 경험의 차이다) 훌륭한 프로그래머가 되기 위해선 Wiki:ReadGreatPrograms 라고 한다. 나는 이에 전적으로 동감한다. 이런 의미에서 라이온의 이 책은 OS를 공부하는 사람에게 바이블(혹은 바로 그 다음)이 되어야 한다.
- MIB . . . . 3 matches
* ["MIB"]들은 일반인들이 외계인을 의식하지 않고, 살수 있도록 하는 임무를 수행한다.
* 기타로 지구를 구하기도 한다. 물론 대통령도 모르는 기구라서, 훈장 같은것이나 업적을 전혀 인정 받지 않는다. (이점이 드라마 Star Gate와 차별되는 점이다.)
* 요즘 ["상민"]이는 "MIB들이 처리해 줄꺼야" 라는 말을 많이 쓴다. dcinside에서 "MIB들이 처리 했습니다." 라는 소리 한마디 듣고 전염이 되어 버렸다. 여기에서 MIB라면 일전에 창준 선배가 말씀하신 그린베레 프로그래머(Green Beret Programmer(Wiki:GreenBeretCoding) 정도의 의미가 될 것이다. 후에 MIB Programmer가 더 적당한 말이 될수 있겠다고 생각하곤 한다.
- MineSweeper/이승한 . . . . 3 matches
// 지뢰위치만을 표시한다.
// 주변의 지뢰 갯수를 세고 표시한다.
// 주변의 지뢰 갯수를 세고 표시한다.
- Minesweeper/이도현 . . . . 3 matches
이번에는 처음으로 Presentation Error를 여러번 받았다. 이것은 프로그램이 도출하는 답은 맞으나 출력형식이 잘못된 경우 발생한다.
결과적으로 이야기하면 하나의 출력세트가 있을 경우엔 밑에 빈 줄이 없어야하고 하나 이상일 때만 빈 줄이 있어야한다.
// 2차원 배열에 데이터 입력은 (1,1) 부터 시작한다.
- MobileJavaStudy . . . . 3 matches
* 이론적인 내용을 중심으로 공부하기보다는 간단한 프로그램들을 직접 개발해보며 J2ME를 알아가는 방법으로 진행한다.
* 어느 정도의 실력이 갖춰지면 팀 프로젝트를 진행한다.
* 창섭인 공연때문에 뒤쳐지다가 결국 계속 한다면 혼자 하게 되는구나...-,-;;;; --재동
- MockObjects . . . . 3 matches
MockObject 는 어디까지나 가짜객체이다. 실제 테스트를 할때에는 MockObject를 이용한 경우와 실제의 객체를 이용했을때의 경우 둘 다 고려해야 한다.
그리고 위와 같은 경우 UnitTest 코드의 중복을 가져올 수도 있다. 이는 상속과 오버라이딩을 이용, 해결한다.
|| MockObject || Mock Object들의 상위클래스. Mock Object들은 MockObject 들을 상속받아서 구현한다. ||
- ModelViewPresenter . . . . 3 matches
* Presenter - 어플리케이션을 표현하고 코디네이트한다. 다른 오브젝트들을 생성하거나 관계를 맺는다.
* Selection - Model 의 서브셋을 구체화한다. (Command에 의해 조정된다.)
* Interactor - 키보드나 마우스 이벤트들을 Command 나 Selection 으로 매핑한다.
- MoreMFC . . . . 3 matches
// 이렇게 안보이는 곳에 WinMain과 WndProc라는 것이 존재해서, message를 받아서 처리한다.
그럼 이제 이 책에서 처음 나오는 MFC programming source를.. 공개 한다. Dialog based로 프로젝트를 연후 Dialog에 관한 class는 project에서 뺀후 App클래스내에 이 source를 쳐주면 될것이다. - 신기 하게도 App class와 MainWindow클래스만 있다. 이런 source는 처음 봐서 생소 했지만, MFC에서 제공해주는 source보다는 깔끔해 보였다.-
떡하니 source를 보면 어떻게 돌아가는 거야.. --; 라는 생각이 든다.. 나도 잘모른다. 그런데 가장 중요한것은 global영역에 myApp라는 변수가 선언되어 있다는 사실이다. myApp 라는 instance가 이 프로그램의 instance이다. --a (최초의 프로그램으로 인스턴스화..) 그리고, CWinApp를 상속한 CMyApp에 있는 유일한 함수 initInstance 에서 실제 window를 만들어준다.(InitInstance함수는 응용 프로그램이 처음 생길 때, 곡 window가 생성되기전, 응용 프로그램이 시작한 바로 다음에 호출된다) 이 부분에서 CMainWindow의 instance를 만들어 멤버 변수인 m_pMainWnd로 pointing한다. 이제 window는 생성 되었다. 그렇지만, 기억해야 할 것이 아직 window는 보이지 않는다는 사실이다. 그래서, CMainWindow의 pointer(m_pMainWindow)를 통해서 ShowWindow와 UpdateWindow를 호출해 준다. 그리고 TRUE를 return 함으로써 다음 작업으로 진행 할 수 있게 해준다.... 흘. 영서라 뭔소린지 하나도 모르겠네~ 캬캬.. ''' to be continue..'''[[BR]]
- MultiplyingByRotation . . . . 3 matches
프로그램은 이동 곱셈속성을 갖는 숫자중 가장 작은 첫 번째 숫자의 자리 개수를 출력한다.출력 파일도 텍스트파일로 한다. 입력되는 데이터순서에 맞추어 결과를 한 줄씩 출력한다.
- MySQL . . . . 3 matches
ZeroPage Server의 경우 MySQL의 자료 저장 디렉토리가 {{{~cpp /var/lib/mysql}}} 이므로 해당 디렉토리 내의 자료를 복사 하는 것으로 가능하다. 복사중 mysql을 정지 시키는 것을 권장한다.
* Database mysql의 user 테이블을 변경후 {{{~cpp flush privileges}}}를 수행한다.
위의 PHP 버전은 어떻게 만들었을까? 바로.. MySQL 코드를 보고 만들었다고 한다.- UseTheSourceLuke --[1002]
- MySQL/root암호분실시 . . . . 3 matches
shell>mysqladmin -u root password '원하는 암호'
# mysql에 접속한다.
# mysql db를 선택후 root의 암호를 설정하고 변경된 정보를 업데이트 한다.
- NUnit . . . . 3 matches
* http://nunit.org/ Download 에서 받아서 설치한다. MS Platform 답게 .msi 로 제공한다.
* 스크린 샷에서 처럼, 함수 이름이 Test 세팅에 종속적이지 않다. (반면 JUnit 은 reflection으로 Test 메소드들을 찾아내므로, Test의 이름들이 testXXX 와 같은 형태여야 한다.)
- NextEvent . . . . 3 matches
그냥 하루를 할애하는 건 어떨까 하는 생각이 든다. 그러니까 아침 8시에 시작해서 밤 10시에 끝나게 한다. 한 팀은 6명 정도로 구성된다. 꼭 팀 전원이 신입생일 필요는 없다 -- 헌내기 새내기가 고루 섞이도록 할 수도 있다. 각 팀에 공통 미션을 준다. 개발은 꼭 학교 컴퓨터실에서 할 필요가 없다. 여기 저기(도서관일수도 있고, 다운타운일수도, PC방일수도 있다) 찾아다닐 수도 있다. 여기저기 카메라로 사진을 찍고 설문조사를 하러 다닐 수도 있다. 뭐 꼭 (소프트웨어) 개발일 필요도 없다. 그냥 뭔가 만들어보게 한다. 그게 꼭 파이널 프로덕트가 아니고 프로토타입이어도 좋다. 밤 10시가 되었을 때 서로 자기 팀의 결과물을 들고와서 자랑한다.
- NumericalExpressionOnComputer . . . . 3 matches
컴퓨터 언어에서 사용하는 수치표현은 크게보아서 2진수, 8진수, 10진수, 16진수 이렇게 4가지로 구분함. 전류 시그널을 이용하는 컴퓨터의 특성상 2진수의 사용은 필수적인 것이고, 8진수를 사용하는 이유는 과거 12bit, 36bit와 같이 3의 배수 bit를 기반으로한 컴퓨터 archi가 존재했기 때문이다. (현재에서는 거의 쓰이지 않지만, 아직 C/C++ 등 많은 언어에서 제공한다.) 10진수는 인간이 사고하기 편하기 때문에 의미가 있는수. 16진수는 2진수의 표현을 바로 바꿀 수 잇다는 장점으로 표현공간의 절약을 위해서 만이 사용한다.
불과 몇 십년전만해도 컴퓨터 학자들은 2진수의 표현보다 10진수의 표현이 더욱 정확하다고 생각했었기 때문에, 특정 정확성을 필요로하는 프로그램에서는 10진수로 데이터를 계산하기도 했다고 함. but 그러나 10진수가 2진수의 표현에 비해 정확하다고 하는 것은 사실이 아니며, 실제로 2진수의 표현법이 더욱 정확한 계산을 보장한다고 함.
- OurMajorLangIsCAndCPlusPlus/locale.h . . . . 3 matches
|| struct lconv* localeconv(void); || lconv 구조체를 현재의 location setting 에 맞게 값을 설정한다. ||
/* 로케일을 변경하고 subroutine을 수행한다. */
/* 원래의 로케일로 복귀한다. */
- OurMajorLangIsCAndCPlusPlus/print/조현태 . . . . 3 matches
//// 공백을 출력한다. ////
//// 정수부의 숫자를 출력한다. ////
//// 소수부의 숫자를 출력한다. ////
- PC실관리프로그램 . . . . 3 matches
* 프로세서 관리자에서 이름을 제거하는 법을 이해하고 구현한다.
* 죽지않는 프로세서를 만드는 법을 이해하고 구현한다.
* PC실 관리를 더 쉽게 하고, PC실의 환경을 개선한다.
- PNA2011/서지혜 . . . . 3 matches
* 사람에 대한 노력이 필요. 뛰어난 리더는 이끌기 보다는 스스로 이끌게끔 한다.(뒤에서 끌어준다)
* 이걸 들으며 진리는 어디서든 통한다라고 생각
* '''나도 즐길 수 있어야한다'''
- PNGFileFormat/FormatUnitTestInPythonLanguage . . . . 3 matches
# PIL과 비교. scanline by scanline 으로 비교해야 한다.
if i > 0 : # 인덱스가 0이 아닐 경우는 옆칸에서 더한다.
if ypos > 0 : # y가 0 이면 윗칸에서 더할수 없지만 0보다 크면 더해야한다
- PairSynchronization . . . . 3 matches
1. 이야기 하고자 하는 대상을 정한다.
1. 순서를 바꿔가며 하나의 개념을 화이트보드에 그리고, 각 개념은 선으로 그어 표시한다. See Also: MindMapConceptMap
1. 더 이상 개념이나, 선의 연결이 어려울때까지 계속한다.
- PluggableSelector . . . . 3 matches
이런식으로 하나의 메소드만 계속 오버라이딩한다면 서브클래스들의 가치가 없을것 같다. 쉬운 해결책은 ListPane 스스로를 좀 더 유연하게 만드는 것이다. 다른 인스턴스들이 다른 메세지를 보내게 하는 것이다.
유연성 : P.S는 수신 객체에 구현되어야 한다.
실행될 selector를 가지는 변수를 추가한다. 이름 뒤에 Message를 덧붙인다. selector를 실행하기 쉽게 해주는 Composed Method를 만든다.
- PracticeNewProgrammingLanguage . . . . 3 matches
7. 2인 오목 작성 : 언어의 기능을 최대한 이용한 오목을 작성한다. (텍스트, 그래픽 무관)
8. 에디터 작성 : 텍스트 파일 저장, 로드, 복사, 치환, 검색, 방향키 이동, 기능을 지원하는 텍스트 에디터 작성
1. 웹 서버 작성 : GET, POST, CGI 를 지원하는 멀티쓰레드 웹 서버를 작성하라.
- PragmaticVersionControlWithCVS/HowTo . . . . 3 matches
보통 버전관리를 하게되면 개발팀에서 정해진 규칙에 의해 일련의 과정을 거쳐 관리를 한다.
이 경우 체크인처럼 여러번 그리고 자주하는 일에 적용되는 규칙은 간단해햐한다.
릴리즈 브랜치와 같은 일은 좀처럼 생기지 않으므로 좀 규칙이 복잡해도 되지만 최대한 간단하게 한다.
- PrimaryArithmetic . . . . 3 matches
초등학생들이 여러 자리 수의 덧셈을 배울 때는 한 번에 한 자리씩 오른쪽에서 왼쪽으로 계산하도록 배운다. 그런데 그 자리 숫자의 합이 10을 넘어갈 때 그 윗자리 숫자에 1을 더해주는 것을 배울 때 많은 학생들이 힘들어한다. 일련의 덧셈 문제가 주어졌을 때 자리를 올리는 횟수를 세어서 선생님들이 학생들을 가르치는 데 도움을 줄 수 있는 프로그램을 만들어야 한다.
마지막 줄을 제외한 각 줄에 대해 주어진 두 수를 더할 때 자리를 올려야 하는 횟수를 계산한 다음, 아래에 주어진 형식대로 결과를 출력한다.
- ProgrammingLanguageClass/Exam2002_1 . . . . 3 matches
* Floating Point 변수의 경우 해당 값에 대해 근사값만을 표현한다. 그 이유는 무엇인가?
나의 경우는 1. string (char array) 으로 애뮬레이션 한다. (단점도 썼음. 계산뒤의 메모리할당 문제와 실제 산술연산 계산을 위한 형변환시 cost가 많이 든다 등등) 2. long integer 2 개로 앞의 32 bit 는 유효숫자를, 뒤의 32bit 는 지수를 표현한다. (2^-31 ~ 2^31 * 2^-31 ~ 2^31 까지 표현된다라고 썼는데, 실제론 저 숫자들을 다 표현할 수가 없겠군. 2^31 1024 * 1024 * 1024 * 2 니까 약 10억. 즉, 자리수 표현도 10억 이후부터는 precision 유효숫자를 다 쓸수 없을테니) 아.. 풀고나니 잘못생각했군. 흑; --석천
- ProgrammingLanguageClass/Report2002_2 . . . . 3 matches
* 만약 가능하다면 functional side-effects가 발생이 컴파일러에서 operand의 순서에 대한 평가 점검한다. -수정 필요
* 보통, floppy diskette에 당신의 프로그램과, 테스트한 데이터들과 실행에 의한 결과를 제출한다.
* 프로그램의 완벽한 수행을 위해서 당신의 데스트 데이터를 신중히 설계하라. 또한 당신의 테스트 프로그램 내부에 합당한 문서를 첨부하는 것을 추천한다.
- ProgrammingPearls/Column4 . . . . 3 matches
* 100명의 프로페셔널 프로그래머들에게 Binary search를 짜보라고 시켰다. 결과는? 90퍼센트의 사람은 버그 있는 Binary search를 짰다고 한다.
* Iteration Control Structures : 위에서도 말했듯이, 초기화, 유지, 종료조건이 확실한가를 체크해야한다.
* Functions : precondition - 함수 시작 전에 보장되어야 할 조건 -과 postcondition - 함수 끝날때에 보장되어야 할 조건 -을 명시해준다.(...) 이러한 방법을 "Programming by contract"라 한다.
- ProjectAR/ThinkAbout . . . . 3 matches
를 일으키지 않고 잘 진행이 되게끔 하는 것도 생각해 보아야 한다.
몬스터는 뭔가 달라야 한다. 패턴을 가지든 AI를 가지든 단순한 움직임을 가져선 안된다.(엑션 RPG에서
몬스터가 그냥 다가와서 때리기만 한다면 말이 되지 않는다.) 이 문제도 많이 생각을 해 봐야 할 것이다
- ProjectPrometheus/EngineeringTask . . . . 3 matches
* 책을 검색할 수 있다. 책을 검색할때는 Search Keyword type 을 명시하지 않아도 되는 Simple Search 와 Search Keyword Type 을 자세하게 둘 수 있는 Advanced Search 기능 둘 다 지원한다.
* 각 Page를 볼 때 지연시간이 10초 미만이여야 한다.
* 동시 접속자 수가 25명 이상이여야 한다.
- ProjectVirush . . . . 3 matches
외계인이 지구에 있는 생명체에게 바이러스를 보낸다. 강력한 바이러스로 지구 생명체를 몰살하려고 플레이어는 바이러스를 통제하는 과학자가 된다. 외계 본부에서 받은 지령을 성공적으로 수행하면 보상이 뒤따르지만, 그러기 위해서는 만만치 않은 다른 바이러스들을 따돌릴 전략을 세워야 한다.
바이러스는 미생물의 일종이다. 정확히 말하면 생물과 무생물 사이에 위치한다.
매개와 숙주. 매개체에서도 증식한다.
- ProjectVirush/UserStory . . . . 3 matches
사용자는 id, pw를 입력한다.
지구를 위성에서 보듯이 보여준다. 지도에서 점으로 표시된 바이러스의 분포도를 볼 수 있다. 그래서 플레이어가 자신의 바이러스를 보낼 위치를 선정하도록 한다.
바이러스의속성을 선택하여 바이러스를 조립한다.
- ProjectZephyrus/Afterwords . . . . 3 matches
- PairProgramming 전에 진행 전략을 세웠다. (5분 PP 라던지, PP 순서시 간단한 Modeling 뒤, Sequence Diagram 등을 그리고 난 뒤 진행을 한다던지, 후배들에게 프로그래밍이 완성되었을 경우에 어떠어떠하게 돌아갈 것이다 라고 미리 그 결과를 생각해보게끔 유도)
- Design Evaluation 을 꼭 해야 한다는 강박관념이 있다.
- DE를 공부하여 확인한다.
- ProjectZephyrus/간단CVS사용설명 . . . . 3 matches
원하는 디렉토리에 간다.
보통 다음과 같은 방식으로 한다.
* 가상의 유저를 파일의 권한을 그자(?)에게 돌리고, CVS내부 기록은 각 유저가 하도록 한다. .
- REFACTORING . . . . 3 matches
* 다시 또 뭔가 비슷한 일을 한다. - Refactoring을 할 때이다. Refactoring 하라.
* 어떤 부분을 Refactoring 해야 하는지 찾기 원한다면 Chapter 3를 읽어라.
* 실제로 Refactoring을 하기 원한다면 Chapter 1,2,3,4를 정독하고 RefactoringCatalog 를 대강 훑어본다. RefactoringCatalog는 일종의 reference로 참고하면 된다. Guest Chapter (저자 이외의 다른 사람들이 참여한 부분)도 읽어본다. (특히 Chapter 15)
- RUR-PLE . . . . 3 matches
* 컴퓨터 프로그래밍을 익히는 것은 악기를 익히는 것과 비슷하다. 당신은 그것에 관해 단순히 읽기 말고 해봐야 한다.
''''' 공감이 가는 말이다. 피아노를 아무리 책만 보고 공부한다고 피아노 잘 치는게 아닌것처럼.. -[상협]'''''
* 사람들이 읽기 쉬운 프로그램을 작성해야 한다.
- RUR-PLE/Etc . . . . 3 matches
* 이 경우에서의 처리를 while 문을 사용하여 처리한다.
* 처음 시작한 창문 말고 나머지 창문들을 beeper를 앞에 두는 식으로 해서 닫는다. 로봇은 처음 시작하는 창문으로 온다음에 그 창문을 바라보아야 한다. 시작시에 로봇은 beeper를 충분히 가지고 있다.
* trash2.wld 파일을 연다. trash1에서 작성한 로직이 여기서도 돌아가야 한다.
- RegressionTesting . . . . 3 matches
RegressionTesting 는 SoftwareTesting 의 한 방법으로, 테스터는 이미 해결된 문제들이 재출현 여부에 대하여 검사 한다.
소프트웨어가 개발됨어 감에 따라, 문제의 재출현은 불행히도 아주 일반적인 경험이다. 때때로, 그것은 고친 것이(fix)가 나쁜 보정 작업(poor revision control practice)들에 (혹은 revision control에서 사람의 단순 실수) 의하여 사라지기 때문에 발생한다. 그렇지만 바로 문제에 대한 고친것이 존재하면, 소프트웨어는 '''깨지기 쉬워(fragile)''' 해진다.- 만약 어떠한 다른 변화가 프로그램에 가해지면, 고친 것(fix)은 더이상 동작하지 않는다. 결국, 문제를 잘 알지 못한 상태에서, 재디자인된 몇가지 인자들이 있을때, 기존의 구현의 인자들 속에서 재디자인된 부분에서는 동일한 실수들이 발생할 것이다.
그래서 대다수의 소프트웨어 개발 시점 중에는 버그를 고쳤을때 훌륭한 방법인가, 버그가 재작성되거나, 버그가 프로그램상의 하부 변화 이후에 규칙적으로 실행되는지 '''드러내는 테스트'''에 대하여 훌륭한 실행 방법들을 제시한다. 몇몇 프로젝트(내 생각에 Mozilla경우, Eclipse도 같은 시스템)는 자동화된 시스템으로 자동적으로 모든 RegressionTesting들을 규칙적으로(보통 하루나 주말단위로) 실행하고, 조사하도록 세팅되어 있다.
- ReplaceTempWithQuery . . . . 3 matches
를 다음과 같이 작성한다.
어느정도 수준에 오른 프로그래머일수록, 반복적으로 사용되는 값에 대해 임시변수를 사용하고 이러한 최적화(?)를 나름대로 수행하려 한다. 그러나, 이러한 미시적인 최적화는 결과적으로 거시적 최적화의 기회를 박탈하게 한다. 심지어 최악의 경우라도 임시변수를 다시 넣는 일은 쉽다(물론, 프로파일링 ' '''결과''' ', ' '''실제로''' ' 퍼포먼스에 심각한 문제를 주는 경우라면).
- ReverseAndAdd . . . . 3 matches
일단 어떤 수를 받아서 그 수를 뒤집은 다음 뒤집어진 수를 원래의 수에 더하는 과정을 뒤집어서 더하기라고 부르자. 그 합이 회문(palindrome, 앞뒤 어느 쪽에서 읽어도 같은 말이 되는 어구. 예:eye, madam, 소주만병만주소)이 아니면 회문이 될 때까지 이 과정을 반복한다.
어떤 수가 주어졌을 때 회문이 있으면 출력하고, 그 회문을 찾기까지 뒤집어서 더하기를 반복한 횟수를 출력하는 프로그램을 만들어야 한다.
N개의 각 정수에 대해 회문을 발견하는 데 필요한 최소한의 반복 횟수를 출력하고, 스페이스를 한 칸 출력한 다음, 그 회문을 출력한다.
- RoboCode . . . . 3 matches
다운로드한 파일을 더블클릭해서 실행한다.(자바 설치 필요)
시간 제한 안에 로봇을 만들어내라고 했더니 아무것도 못 하는 사람도 있었다. 많은 명령어 가운데 어느 것을 사용해야 할 지 감을 못잡아서 그럴 것이란 생각이 들었다. 처음 로보코드를 접하는 사람들에게는 간단한 규칙을 정해놓고 연습해보는 시간을 가져보는 것이 어떨까? 이를테면 명령어 몇 가지만을 사용한다든지, 총 명령 개수를 제한한다든지 하는 규칙이 있겠다. --[Leonardong]
- Ruby/2011년스터디 . . . . 3 matches
* 코드블록 { ~~ } 을 객체처럼 넘길 수 있음. 혹은 yield함수가 호출한다.
* 루비는 간편한 반복자를 많이 제공한다.
* 루비는 매우 동적이기 때문에(실행중에도 메서드를 정의할 수 있다) 테스트 또한 동적으로 이루어져야 한다(프로그래밍 루비 26장 참고)
- RubyLanguage/ExceptionHandling . . . . 3 matches
* 예외가 발생하면 예외 처리구문이 나올 때 까지 호출 스택을 타고 이동한다.
* 예외 처리 구문, rescue는 switch case문처럼 동작한다. 맞는 처리 구문을 찾을 때 까지 계속 매칭.
* 예외 발생시 throw를 이용해 예외를 발생시키고 catch에서 심볼을 이용하여 예외를 캐치한다.
- STL/Miscellaneous . . . . 3 matches
= 원하는 값 삭제하기 =
* 컨테이너를 아무거나 쓰면 안된다. 가장 최적화된 자료구조를 생각해서 써야한다.
* vector<Object*> 이런식으로 동적 생성하는 객체의 레퍼런스를 위한 포인터를 컨테이너에 넣을때는 추후 포인터가 가리키는 객체를 직접 delete 해줘야 한다.
- STL/map . . . . 3 matches
* dictionary 구조를 구현하였다. DataStructure 에서는 symbol table 이라고 말한다.
* STL의 container 들은 모두 비슷한 모양의 순회를 한다.
* map 은 내부에 STL의 pair 를 이용하여 구현한다. 그래서, iterator 가 가리키는 것은 pair<key_type, value_type> 형이다.
- STL/sort . . . . 3 matches
* 우리는 프로그램 첨 배울때 sort 짜는걸 많이 한다. 수행시간이 θ(n*n)이나 되는 소트를 짜곤 했다.
* STL에서는 Quick Sort를 약간 변형한 Sort 알고리즘을 제공한다.
* 한가지 주의할점. 이 sort알고리즘은 컨테이너가 임의 접근(Random Access)을 허용한다는 가정하에 만든것이다. vector나 deque처럼 임의 접근을 허용하는 컨테이너는 이걸 쓸수 있지만. list는 임의 접근이 불가능해서 사용할수 없다. -l[5] 이런 접근이 안된다는 의미 - 따라서 list에서는 컨테이너 내부에서 sort메소드를 제공해 준다.
- SeminarHowToProgramItAfterwords . . . . 3 matches
* ["neocoin"] : UnitTest에서 추구한 프로그램의 설계에서 Divide해 나가는 과정은 여태 거의 디자인 타임에서 거의 수행을 했습니다. 그래서 여태 Test를 위한 코드들과 디버그용 코드들을 프로그램을 작성할때마다 그런 디자인에도 많은 시간을 소요했는데, 아예 프로그램의 출발을 Test에서 시작한다는 발상의 전환이 인상 깊었습니다. --상민
* '테스트코드의 보폭을 조절하라. 상황에 따라 성큼성큼 보폭을 늘릴수도 있지만, 상황에 따라서는 보폭을 좁혀야 한다. 처음 TDD를 하는 사람은 보폭을 좁혀서 걸어가기가 오히려 더 힘들다' wiki:Wiki:DoTheSimplestThingThatCouldPossiblyWork. 이것이 훈련이 아직 덜된, TDD를 하는 사람에게는 얼마나 힘든지는 이번 RDP 짜면서 느꼈었는데. 열심히 훈련하겠습니다.
* 그리고 관찰하던 중 PairProgramming에서 Leading에 관한 사항을 언급하고 싶습입니다. 사용하는 언어와 도구에 대한 이해는 확실하다는 전제하에서는 서로가 Pair에 대한 배려가 있으면 좀더 효율을 낼 수 있을꺼라 생각합니다. 배려라는 것은 자신의 상대가 좀 적극적이지 못하다면 더 적극적인 활동을 이끌어 내려는 노력을 기울어야 할 것 같습니다. 실습을 하던 두팀에서 제 느낌에 지도형식으로 이끄는 팀과 PP를 하고 있다는 생각이 드는 팀이 있었는데. 지도형식으로 이끄는 팀은 한 명이 너무 주도적으로 이끌다 보니 다른 pair들은 주의가 집중되지 못하는 모습을 보인 반면, PP를 수행하고 있는 듯한 팀은 두 명 모두 집중도가 매우 훌륭한 것 같아서 이런 것이 정말 장점이 아닌가 하는 생각이 들었습니다. 결국 PP라는 것도 혼자가 아닌 둘이다 보니 프로그래밍 실력 못지 않게 개인의 ''사회성''이 얼마나 뛰어냐는 점도 중요한 점으로 작용한다는 생각을 했습니다. (제가 서로 프로그래밍중에 촬영을 한 것은 PP를 전혀 모르는 사람들에게 이런 형식으로 하는 것이 PP라는 것을 보여주고 싶어서였습니다. 촬영이 너무 오래 비추었는지 .. 죄송합니다.)
- SharedSourceProgram . . . . 3 matches
소스공유 프로그램(Shared Source Program)을 통해 주요 MS 제품군의 소스에 접근할 수 잇는 권한을 획득한다. 특히 소스공유 프로그램은 현재 한국과 호주 양국 MVP에게만 부여된 권한이다.
== 우리가 Shared Source 를 한다면 ==
공대차원 학회 지원 프로그램의 한가지 방법으로 Shared Source Program 이 준비되고 있다고 한다.
- SharedVision . . . . 3 matches
SE 시간의 이경환 교수님의 이야기. CMM, SPICE 에서 Level 2 이상시 필요조건. 전체 회사의 비전은 팀의 비전과 일치되어야 하며, 팀의 비전과 팀 소속원의 비전이 일치되어야 한다. 회사의 비전과 팀의 비전이 일치한 제품이 나와야 하며, 팀의 행동 또한 회사의 비전과 일치되어야 한다.
* 또하나 생각난다면, 구심점이 되는 작은 사람들 (이때쯤 되니 또 20 : 80 법칙 생각이;)이 영향력을 발휘하는 방법. 보통은 이 스타일이 되는 것 같다. 문제제기 & 대안제안자 10%에 실제로 수습하는 사람 10%, 동의해주고 따라주는사람 40%, 60% 가 넘어간 뒤 인력의 작용(한쪽에 커다란 힘이 모여있으면 이 또한 인력이라고 생각한다. 월드컵 축구를 보라. -_-; 뉴스건 사람들이건 신문이건 전부 축구이야기만 하면 영향 안받나;) 30%, 나머지 무관심 10% (반대의견을 내는 사람은 실제 수습자들속에 있기도 하다. 물론 냉소만 보내는 사람도 있지만)
- SmallTalk/강좌FromHitel/강의4 . . . . 3 matches
["Vim"] 도 에러가 발생한다.
Smalltalk가 종료되는 것입니다. 즉 이 창은 Smalltalk 환경과 동고동락한다
앞서 우리는 알림판에 지시를 내림으로써 우리가 원하는 글줄을 찍을 수 있
- SmallTalk/문법정리 . . . . 3 matches
* ^ 리턴 : Smalltalk 모든 메소드는 리턴한다. C에서와 같은 void는 없다. 그래서 명시적으로 리턴 안해주면 self를 리턴한다.
1. 메세지는 왼쪽에서 오른쪽으로 진행한다. Evaluation is done left to right.
- SpikeSolution . . . . 3 matches
어떻게 보면 우리가 일반적으로 하고 있는 것이다. Visual C++로 해당 라이브러리를 이용한 프로그래밍을 할때 우리는 어떻게 할까? 아마도 Visual C++을 2개를 띄울 것이다. 그리고 한 창에서는 해당 라이브러리가 제대로 작동하는지, 대강 값들을 넣어보고 이리저리 제대로 원하는 일을 하게끔 여러 시도들을 하게 될 것이다. 그렇게 함으로서 미지인 부분에 대한 대강의 선을 잡아놓는다.
이러한 실험들을 XP에서는 Spike Solution이라고 한다. 다른 점이라면, 우리는 보통 실험 코드를 만든 뒤 실전 코드에 바로 붙일 것이다. 하지만 Spike Solution 의 경우는 '실험은 실험에서 끝난다' 에서 다를 수 있다. 보통 Spike Solution 에서 실험한 코드들을 메인소스에 바로 적용시키지 않는다. Spike Solution은 처음 계획시 estimate의 선을 잡기 위한 것으로 메인소스에 그대로 적용될 코드는 아닌 것이다. 지우고 다시 만들어 내도록 한다. 그러함으로써 한편으로는 학습효과를 가져오고, 실전 소스의 질을 향상시킬 수 있다.
- Steps . . . . 3 matches
수직선 위에서 정수 x에서 정수 y로 이동하는 과정을 생각해보자. 각 단계의 길이는 음이 아니어야 하며 이전 단계의 길이보다 1이 작거나, 같거나, 1이 커야 한다.
x에서 y로 가는 데 필요한 최소 단계의 수는 얼마인가? 첫번째와 마지막 단계의 길이는 모두 1이어야 한다.
각 테스트 케이스에 대해 x 에서 y로 이동할 수 있는 최소 단계 수를 한 줄에 하나씩 출력한다.
- SubVersionPractice . . . . 3 matches
저장소에 있는 프로젝트를 사용자의 컴퓨터로 가져오는 명령이다. 사용자는 체크아웃한 프로젝트를 가지고 작업한다.
프로젝트에 파일을 추가했다는 표시를 한다.
저장소에서 최근에 변경된 내용을 사용자가 작업하는 프로젝트에 적용한다. (주의해서 사용)
- SuperMarket . . . . 3 matches
* deposit -- 돈을 예금한다
* cancel -- 산 물건을 취소한다
buy <product> <number> -- <product>를 <number>개 만큼 구매한다
- TabletPC . . . . 3 matches
마이크로소프트 전시관에서 관객들의 눈길을 끈 제품은 단연 태블릿 PC 윈도우 XP 에디션. 빌게이츠가 기조연설에서 강조한 때문인지 많은 사람들이 관심을 보였다. 화면 가득한 윈도우 XP의 세련된 UI와 키보드를 대신한 펜이 눈에 들어왔다. 태블릿 PC는 데스크톱PC의 장점을 그대로 살리면서도 유동적이고 미팅이 잦은 비즈니스맨에게 적합한 제품이라고 한다. 향후 펜과 잉크 기능을 살린 애플리케이션이 추가된 버전이 소개될 예정인데, 이는 보험회사나 의사의 처방전 같은 곳에서 사용될 것이라고 한다. 이전 테크놀로지 전시회에서 대기업들이 내놓은 유사한 태블릿 PC가 크게 성과를 거두지 못한 전례가 있는데도 MS가 이렇게 태블릿 PC를 강조한 이유는 무엇일까.
MS가 어쩌면 'MS이니까 가능하다' 로 밀어붙이는게 아닐까. 그리고 이전 전시회때와 현재가 다를 수 있는것은 그만큼 현재의 기술이 발전해서 새롭게 각광받을 수 있는 기술들이 있어서겠지. (TabletPC가 블루투스 지원하고 사이즈도 공책만해지고 데스크톱 모드/렙탑 모드 사라지고 무선인터넷 지원한다면 좋겠다. --;) groove 가 TabletPC 지원할거라고 하던데.. 비즈니스용으로서 확실한 길을 걸을 수 있으려나.. (PDA도 제대로 활용되고 있는지도 모르겠는데..)
- TestDrivenDatabaseDevelopment . . . . 3 matches
작성하는중에, DB에 직접 접속해서 확인하는 코드가 테스트에 드러났다. (이는 예상한 일이긴 하다. DB 에 비종속적인 interface 를 제외하더라도 DB 쪽 코드를 계속 쌓아가기 위해선 DB 코드를 어느정도 써야 한다.) 처음 DB 에 직접 데이터를 넣을때는 side-effect가 발생하므로, 테스트를 2번씩 돌려줘서 side-effect를 확인을 했다. 점차적으로 initialize 메소드와 destroy 메소드를 만들고 이를 setUp, tearDown 쪽에 넣어줌으로 테스트시의 side-effect를 해결해나갔다.
즉, MockRepository 에서는 Exception 을 던질 필요가 없는데, 메소드마다 전부 throw 를 던져줘야 한다. (한편으로는, 다른 언어에서는 상관없는데 Java 에서의 Checked Exception 의 문제일런지도 모르겠다.
만일 MockRepository를 먼저 만든다면? interface 를 추출한 순간에는 문제가 없겠지만, 다음에 DBRepository 를 만들때가 문제가 된다. interface 의 정의에서는 예외를 던지지 않으므로, interface 를 다시 수정하던지, 아니면 SQL 관련 Exception 을 전부 해당 메소드 안에서 try-catch 로 잡아내야 한다. 즉, Database 에서의 예외처리들에 대해 전부 Repository 안에서 자체해결을 하게끔 강요하는 코드가 나온다.
- TestDrivenDevelopmentBetweenTeams . . . . 3 matches
팀단위로 TDD를 한다고 한다면?
일단 각 팀들끼리 TDD 를 하면서 팀들간의 대화를 통해서 일종의 공통 interface 를 빼낼 수 있다. 일단은 일종의 MockObject 로 가짜값을 채워서 테스트를 통과시킨뒤, 실제 Object 가 구현되면, 천천히 하나씩 실제 Object 의 interface 를 끼워가면서 테스트를 통과하는지를 확인한다. 그리고 최종적으로 실제 Object 로 MockObject 를 대체시킨다.
- TheWarOfGenesis2R . . . . 3 matches
* 타일 그래픽의 편집은 그림판으로, 속성의 편집은 타일에디터로 한다. 추후.. 통합(?) 할지도?
* 내가 그 길찾는 프로그램 돌려봤는데.. 가끔은 벽을 뚫기도 한다. ^^ 내부벽 뿐만 아니라 외부벽을 뚫고 나가 헤매기도..;; 그리고 지그재그로 돌다가 가기도 한다. 참고하라궁...^^ --["창섭"]
- ToastOS . . . . 3 matches
음..우선 전에 플로피 1번 섹터에서 부트섹트를 읽어 들여 부트 로더를 만든다고 까지 얘기한 것 같다.그럼 커널로더는 무엇일까? 부트 로더가 할 수 없는 기이한 일들을 커널 로더가 한다. 우선 보호모드로들어가는 것과 커널을 실행가능한 상태로 재배치 시키는 일등을 한다. 왜 그런 일을 할까? 부트로더가512kb밖이 되지 않아 그런 일들을 할 수 없기 때문이다. 위에 사진에서 보면 퍼런 글씨로 kernel loader라고나오는데 전에 CAU Operating System 어쩌구...가 먼저 나온다..다만 VMWARE를 쓰기때문에 그런 글씨가 안나온다. 여하튼 커널 로더가 가지는 의미는 우선 부트로더를 만들기 위해 어쩔수 없이 썼던 짜증나는 어셈을 이제 안써도 된다...ㅋㅋ 사실 어셈은 계속 써야 된다... 다만 이제 어쎔을 주로 쓰지 않고 C에서 인라인 어쎔을 쓸것이다. 이제 Boland C 3.1 버전의 컴파일러로 커널로더와 커널을 제작하게 될 것이다. 그럼 위와 같은 것을 그냥 해주면 되는거 아니냐? 라고 반문하는 사람이 있을 것이다.. 그렇다. 그냥 해주면 된다. 우선 컴파일할때 -S라는 옵션을 두어서 어셈블리 소스를 만들고 나서 그리고 그렇게 만들어진소스의 extern들을 링크 시키고 그런 다음 EXE파일을 실행가능한 재배치상태로 만들고 나서 부트로더와 같이뒤집어 씌우면 된다.
또하나 이제까지 삽질한 이유중하나가 플로피의 속도가 느리기 때문에 커널로드를 한번 읽고서는 재대로 실행하지못한다는 것 -> 이것때문에 정말 많은 삽질을 하게 되었다.
- TugOfWar . . . . 3 matches
사무실 야유회에서 줄다리기를 하기로 했다. 야유회에 참가한 사람들을 두 편으로 공평하게 나눈다. 모든 사람들이 둘 중 한 편에 참여해야 하며, 두 편의 사람 수는 한 명이 넘게 차이가 나면 안 된다. 그리고 양 편에 속한 사람들 체중의 총합 차를 최소한으로 줄여야 한다.
각 테스트 케이스마다 한 줄씩의 결과를 출력하며, 각 줄마다 두 개씩의 정수가 출력된다. 첫번째 수는 한편에 속한 사람들의 체중의 총합, 다른 수는 다른 편에 속한 사람들의 체중의 총합이다. 이 두 값이 서로 다르면 작은 값을 먼저 출력한다.
두 개의 서로 다른 케이스에 대한 결과는 빈 줄로 구분한다.
- UploadFileMacro . . . . 3 matches
{{{[[UploadFile]]}}}: 이것은 자바스크립트를 전혀 쓰지 않는다. 그 대신에 간단한 여러개의 파일을 올릴 수 있는 방법을 제공한다.
{{{[[SWFUpload]]}}} 혹은 {{{[[UploadFile(swf)]]}}}: 이 매크로는 모니위키 1.1.3CVS부터 지원하며 다중 파일 업로드를 지원한다. (Flash 10 지원)
모니위키의 {{{[[UploadFile]]}}} 매크로는 업로드 된 파일을 {{{$upload_dir}}}로 정의된 디렉토리에 각 페이지별 디렉토리를 생성시키고, 그 디렉토리에 업로드된 파일을 저장한다.
- VendingMachine/세연/재동 . . . . 3 matches
cout << "채우길 원하는 음료수를 선택하세요 : ";
cout << "채우길 원하는 음료수 수량을 입력해주세요 : ";
cout << "0.종료한다\n";
- VimSettingForPython . . . . 3 matches
Python extension 을 설치하고 난뒤, BicycleRepairMan 을 install 한다. 그리고 BRM 의 압축화일에 ide-integration/bike.vim 을 VIM 설치 디렉토리에 적절히 복사해준다.
_vimrc 화일에 다음을 추가한다.
BRM 의 리팩토링 기능을 이용할때는 리팩토링전 해당 화일을 BRM에 Import 해주어야 한다.
- VoiceChat . . . . 3 matches
다자간에 프로젝트를 진행할때 같은 장소에서 작업을 하기 힘든 경우 음성채팅을 이용하면 그나마 숨통을 틀 수 있다. MSN 메신저를 비롯하여 음성채팅을 지원하는 여러 메신저의 경우 1:1 만 지원한다. 아래의 프로그램을 사용하면 다자간 음성채팅을 무료로 할 수 있다.
* KaZaA 의 개발진이 만들었다고 한다. 전 세계적으로 많이 쓰이고 한글화도 되어있다. PeerToPeer 기술을 사용했다. [http://web.skype.com/home.ko.html 홈페이지]
- WikiStyle . . . . 3 matches
* 사실 정보를 기록한다.
* 구체적인 조언을 한다.
* 페이지에 글을 쓴 시간 순으로 글을 배열하지 말고 "읽기 좋은 순서"로 배열한다.
- WindowsConsoleControl . . . . 3 matches
// n/1000초만큼 시간을 실행을 중지한다.
// 커서의 x 좌표를 조사한다.
// 커서의 y좌표를 조사한다.
- Yggdrasil/가속된씨플플/2장 . . . . 3 matches
* 단락평가(short-circuit): 그러니까 if(a==0||b==0){...}에서 왼쪽의 a==0이면 b==0인지는 보지도 않고 괄호 안을 실행한다는 뜻. 자바에선 ||기호와 |기호를 구분하던 것 같았다. 아마 전자는 전부 평가, 후자는 단락평가였던 것 같다.
std::string::size_type//unsigned형의 멤버변수로, 담을 수 있는 최대 문자 갯수를 저장한다. 글자수에 알맞는 type으로 알아서 정의하는 듯.
* 1부터 10을 각 줄에 출력한다.
- Yggdrasil/가속된씨플플/4장 . . . . 3 matches
* 전달인자(여기서는 배열)를 값에 의한 전달/참조에 의한 전달을 적절히 사용해야 한다. 원래 값을 보호해야 하는 경우라면 값에 의해서, 원래 값을 바꿔야하는 경우라면 참조에 의해 전달한다.
* try{}catch(a){}: try{} 블록을 실행하다가 예외상황이 발생하면 catch{} 블록을 실행한다.
- YouNeedToLogin . . . . 3 matches
페이지 수정에 로그인이 필요한 YouNeedToLogin 모드를 적용한다면 다음과 같은 장,단점이 있을 수 있다.
로그인은 그자체로 무언가 틀속에 갖혀 있다는 생각이 듭니다. http://c2.com 에 오타같은거 수정하면, 로그인이 없고, 그냥 edit 버튼을 누를수 있는 것이, 최대한 글을 쓰는 것을 격려한다는 생각이 듭니다.
그런데.. 보름 정도 YouNeedToLogin 모드로 사용하게 된다면, 로긴을 하지 않았을 때 글을 쓸 수 없다는 거지요? 그건, '로그인 하지 않고 글 쓰는 것' 을 막는 거겠군요. 개인의 자유에 맏겨두지 않고 말이지요. 전 반대합니다. 일단, 싫고, 자유와 가능성을 제한한다는 것이 싫습니다. --["zennith"]
- ZPBoard/PHPStudy/쿠키 . . . . 3 matches
* setcookie는 반드시 제일 먼저 설정이 되어야 한다.
* <html> <head> 등등 보다도 앞에 있어야 한다.
* 쿠키는 생성될 당시의 인수(parameter)를 그대로 넣어 삭제해야 한다.
- ZeroPageServer/old . . . . 3 matches
배포판은 데비안(아마 사지)이구요. 바인드는 아직 설치되어 있지 않아요. 설치한다면 최신걸로 설치할거에요. 그리고 1주일마다 업데이트도 하고 있으니깐 버젼이 낮아서 해킹당하는일은 없을거에요 --[곽세환]
* [http://www.robotstxt.org/wc/exclusion.html robot]규약 으로 엠파스의 침입을 막아야 한다. HowToBlockEmpas
* 계정에서 [python] [cgi] 를 돌리고 싶은데, [ZeroPageServer/FAQ] 에 나온대로 ~beonit/public_html/cgi-bin/hello.cgi 로 접근해보아도 잘 안되네요. chmod +x hello.cgi 로 권한설정도 했습니다. 어떻게 해야 하죠?? CGI 권한을 따로 받아야 한다는 이야기도 있던데... 흠...-_- - 이승한
- ZeroWiki/제안 . . . . 3 matches
1. 오래된 제안들을 카테고리에 묶어 아래로 내린 채 보관한다.(지금처럼)
초기의 지향점이라고 한다면, 일종의 '학회 재산 저장소'랄까. Repository 라고 쓰면 결국 동어반복이 되겠군. 학회가 거의 10년이 지나도, 그때의 한 일들이 제대로 안쌓이는 모습에 대한 불만이랄까. 그러한 점에서 99년도 처음 ZP 서버가 만들어질때, 96,97 형들이 언급했던 것이 'ZP 서버를 학회 지식의 저장소가 되게 하자' 라는 것이였지. 처음에는 게시판 활동이 주업이었고. 그러다가 위키를 알게 되고 난 다음, 처음엔 동문서버에서 좀 돌려보고, 그 다음은 ZP 에서 돌리게 했지. 그리고, 동문서버에서 위키 돌아가는 모양새를 보고, '위키 처음 열릴때의 분위기가 중요하겠구나' 하는 생각에 '스터디 & 프로젝트' 목적을 강조하는 뜻에서 초기에 그렇게 적은것임.
저번에 들렀을 때 마지막으로 갔었던 곳에 먼저 가보는 경우가 많네요. 로그인을 하면 마지막에 들렀던 페이지가 뜨게 하면 어떨까요? 아니면 정해놓은 페이지가 뜨게 한다든지요. 마치 인터넷 익스플로러에서 시작 페이지처럼요. -[Leonardong]
- Zeropage/Staff/회의_2006_01_19 . . . . 3 matches
* 위키에 도서목록을 작성한뒤, 빌리기 전에 요청한다.
* 사물함은 열쇠를 이용해서 관리한다.
* 도서관과 같이 2주의 대여기간을 주며, 1일당 100원의 연체료를 물린다. (연체료는 회비로 사용한다.)
- html5/VA . . . . 3 matches
* HTML5를 지원하는 브라우저에서 사용할 수 있다.
* source 요소에 속성들을 지정하여 미디어 데이터의 출력을 원활하게 한다.
* type 속성 지정을 통해 재생할 수 있는 미디어 데이터인지를 다운로드하지 않고도 판단한다.
- html5/form . . . . 3 matches
* 웹 양식을 지원하는 태그를 폼 태그(Form Tag)라 한다
* 라이브러리를 다운받고 아래와 같이 라이브러리를 참조한다
- html5/video&audio . . . . 3 matches
* HTML5를 지원하는 브라우저에서 사용할 수 있다.
* source 요소에 속성들을 지정하여 미디어 데이터의 출력을 원활하게 한다.
* type 속성 지정을 통해 재생할 수 있는 미디어 데이터인지를 다운로드하지 않고도 판단한다.
- randomwalk/홍선 . . . . 3 matches
t=rand()%Direction; // 랜덤으로 바퀴벌레가 움직일 방향을 정한다
Tile[Pos_x][Pos_y]++; // 바퀴벌레가 타일을 방문할 때마다 증가하여 방문 횟수를 구한다.
while(R_count!=size_x*size_y || count < 50000) // 바퀴벌레가 모든 타일을 거치면 멈추거나 횟수가 50000을 넘으면 멈추게 한다
- 검색에이전시_temp . . . . 3 matches
* 핵심 : 브레이크 포인트는 원하는 라인 왼쪽 부분을 클릭, Run As Debug, F5 Step into, F6 step over
tid 만 알면 방명록 알림이 기능 가능함. 현재 싸이월드 방명록 알림이는 자신의 미니홈만 알려주지만 저 기능을 구현한다면
원한다면 누구의 홈이던지 새글이나 방명록이 올라오면 알려줄수 있음...
- 겨울과프로젝트 . . . . 3 matches
* XpWeek가 진행되며 방학을 즐기며 술독에 빠져 사는 경우가 많음으로 프로젝트 참가자를 받고, 프로젝트 진행을 위한 사전 준비를 한다. ( 학습방법, 교재, 모임주기, 기타등등 )
* 1월 중순에 만나 서로의 경과 상황을 주제로 정모를 한다.(날짜는 아직 미정)
* 1월 말에 만나 서로의 경과 상황을 주제로 정모를 한다.(날짜는 아직 미정)
- 고영준의Wiki처음화면 . . . . 3 matches
+ Power : 어느 사회적 관계 내에서 자기 자신의 의지를 저항에 거슬러서도 관철할 수 있는 온갖 가망성을 의미한다.
+ 지배 : 일정한 내용의 어느 명령에 대하여 일정한 사람들에게 복종을 발견할 수 있는 가망성을 뜻한다.
+ 규율 : 훈련된 자세에 힘입어 어느 명령에 대하여 신속하고 자동적이며 도식적인 복종을 어느 일정한 다수의 인간에게서 발견할 수 있는 가망성을 뜻한다.
- 고한종/십자가돌리기 . . . . 3 matches
int scale;// 전역 변수를 써야 한다니 ㅜㅠ
* 목표는 스케일을 입력받고 항상 원하는 모양으로 출력되게 하는것이다. (입력 한도는 int 한계까지)
* 이건 벌써 실현 불가능이라고 판명. 화면이 버티질 못한다 ㄷㄷ;;
- 공학적마인드 . . . . 3 matches
일단, '내적정합성' 이란 단어를 생각해보면, 수학으로 칠때 해당 문제공간을 고정시킨 상태, 즉 '전제'를 고정시킨 상태에서 각 변수대비 관계들을 논리적으로 규명하여 답을 내는데, 각 논리에 대해 그릇된 바가 없다고 한다면 답이 맞는 것이지요. 여기까지가 '수학자적 마인드' 라 생각합니다.
구글을 검색하니 어떤 페이지(http://foe.mmu.edu.my/main/career/html_version/tsld005.htm )가 나오는데 훌륭한 목록인 것 같습니다. 이 목록은 "이런 사고를 가져야 한다"는 의미에 가깝습니다.
우리가 보통 일상에서 말하는 공학적 사고라는 것은 대부분 "계량적 사고"와 "통계학적 사고"를 말하는 것 같습니다. 어떤 다리에 얼마만큼의 철근이 들어가나? 여기에 "많이"라고 답하면 이것은 비공학적입니다. 이 다리가 얼마나 튼튼한가 하는 질문에 "상당히"라고 답하면 역시 비공학적입니다. 또한, 공학은 도구(측정,제조)에 종속되는 특성상 특수한 예를 제하고는 완벽이 존재하지 않기 때문에 "어느 정도로"라는 정도표현이 매우 중요합니다. 이런 것들을 생각해 보면 "테스트가능성"과 일면 통하는 면이 있습니다.
- 김희성/리눅스멀티채팅 . . . . 3 matches
//사용자가 이해하기 쉽도록 스레드 번호에 +1 값을 쓰도록 한다.
//코드의 간결화를 위해 값을 복사한다.
//스레드가 비활성화 되었으므로 thread_num을 0으로 초기화한다.
- 날다람쥐 6월9일 . . . . 3 matches
와 같이 배열의 번지수를 적어주어야 한다는건데
라고 한다면 ap에는 a의 첫 번째 변수(a[0])의 주소가 들어가게 된다.
NumC = &Num2;//Num2는 포인터가 아니므로 '&' 을 앞에 붙여야 한다.
- 데블스캠프2003/둘째날/후기 . . . . 3 matches
* 오늘 잘해보리라는 나의 다짐은 저멀리 날아가 버렸다.. '''8명의 여왕'''이 내머리속에서 '''미로'''를 헤매며 '''랜덤워크'''를 하고 있다;;머리가 터지려 한다. 아니 아직 안 터진게 신기할 따름이다.. 아으.. 쓰댕앤 큐;; 당구나 치러 갈까;; 암튼 파이팅이다!! -- ps 나르동~ 또 김치 싸갖고 와라..ㅋㅋ --[변준원]
* TDD와 페어프로그래밍으로 상욱이랑 미로찾기를 만들면서 많은걸 깨달았다. 가장 중요한건 네이밍의 중요성! 이름을 이상하게 지어놓고 이상한걸 호출하다가 자꾸 이상하게 나와서, 나중에는 '미로를 무시하고 이동한다.' 라는 말까지 나왔었다.--; 그러면서 중간에 TDD를 잘못했구나 아직 멀었구나 덜 테스트했구나하면서 좌절을 했지만 이름을 고치고 나니 바로 해결이 되는걸 보면서.. 아.. 더불어 CSP는 아직도 이해가 잘 안간다. --인수
* 8퀸 문제를 실패하면서, 프로그램을 짤 때에는 먼저 확실한 알고리즘을 구축해 놓아야 한다고 생각했어요.. 알고리즘부터 틀리게 되면 나중에는 디버깅도 소용이 없다는 사실.. --[문원명]
- 데블스캠프2004/세미나주제 . . . . 3 matches
* [데블스캠프2004]에 전체에 대한 개인 ThreeFs - 시간이 안되면 개인이 제로 위키에 따로 적도록 한다.
* 재학생은 작년과 비교해서 어떠한가 이야기 하도록 유도한다.
* 기록자가 적어서 기록한다.
- 데블스캠프2005/언어디자인/그까이꺼 . . . . 3 matches
viewer란 프로그램이 있다. 뒤에 출력하고싶은 것을 입력한다. ','로 구분한다.
loop(viewer<-star,ent)x5는 별을 화면에 하나 나타내고 한줄 띄우는 프로그램을 5번 반복한다.
- 데블스캠프2006/준비/목요일 . . . . 3 matches
* 목표 : 절차식에 익숙한 신입생들에게 객체지향의 감을 전달한다. (사과는 없다--;)
* 전날 밤새고 바로 새벽에 예비군갔다가 오후에 와서 또 밤새야한다. 이건 철인의 체력을 요구한다. 아무래도 뒷쪽에 맡은 강사들이 제정신이 아닐것 같은데 대책을 세우자. - [창섭]
- 데블스캠프2009/금요일/SPECIALSeminar . . . . 3 matches
* 나무 판자 여러 개를 대어 만든 컵처럼 몇 가지 능력이 어우러져야 한다.
* 하지만 타인에게 많이 나눠주는 것도 필요하다. - 그것을 잘한다면 자신이 타인에게 물었을 때 도움받을 수 있을 것이다.
* 어떻게 동작을 하여 만들어지는 어떤 결과를 원하는가?
- 데블스캠프2009/화요일후기 . . . . 3 matches
* [김준석] - 같은 것을 반복하기 위해 우리는 자주 copy &paste를 사용한다. 단순히 키보드 두번만 누르면 똑같은 것이 한번더 만들어지는 좋은 단축키 이다. 하지만 사실 이 반복되는것을 우리는 단순히 단축키를 누름으로서 만들어지는것은 과거의 저급언어를 사용할때나 만들어지는 반복의 숙달이다. 평소 자주 알고리즘을 연구하자는 말을 들을것이다. 문제를 푸는것 만에는 사실 극히 특별한 알고리즘이 필요없다고 생각한다. 살면서 어떻게든 간단반복으로 대부분은 풀수 있을테니까. 알고리즘을 연구하는것은 우리가 사용하는 컴퓨터의 부담을 줄이기 위해 만들며 이는 단순 반복되는 계산과정을 줄여줘 자원의 낭비를 줄여준다. 이렇듯 컴퓨터의 반복은 줄이면서 직접 키보드를 치며 반복하고있는 나의 자원소비량은 어떤가? 나는 왜 반복을 하고 있는가? 이 긴 코드를 줄일수 있는 방법은 정녕 없는것인가?라는 컴퓨터 알고리즘을 생각하듯 나를 위한 알고리즘을 생각을 해보았나? 대부분의 문서를 한장으로 줄여서 요약할수 있다는것을 가르쳐주는 One Page Proposal이라는 책에서는 "온갖 미사여구를 넣어 50page나 100page가 넘어가는 문서는 문서를 받은 사람의 책상에서 쌓이고 쌓여 결국에는 보여지지도 못하고 세절기에 들어가 버린다. 정말 자신이 있다면 알짜배기만 모아서 1Page로 보기 좋게 만들어라." 맞는 말이다. 아무리 길게 만든 프로그램이라도 20줄도 안되는 프로그램과 성능이 똑같다면 당연히 보기도 좋고 관리하기도 좋은 20줄 프로그램을 쓰겠지.이 20줄 프로그램을 쉽게 만들기위해 사람은 자신이 편리하게 개발과 연구를 했다. 그렇게 편리하도록 발달하는 과정. 그 생각을 잘보여준 세미나였다고 생각한다. 과연 네이버에서 자동완성됬던 Kesarr.
- 데블스캠프2010/첫째날/후기 . . . . 3 matches
* 선배님의 말씀을 들어보면 아무래도 우리나라의 게임 관리자는 상당히 특이한 위치를 점하고 있지 않은가 싶다. 인터넷에서도 우리나라 IT에 대한 우스갯소리도 자주 들릴 정도니까. 그런만큼 그 자리에 있는 사람만이 말할 수 있는 것이 있지 않을까 싶다. 특히나 표절과 관련된 주제는 민감한 만큼 이런 자리가 아니면 이야기를 들을 수 없지 않았을까 싶은 꽤나 생각해 볼 만한 주제였다. 아쉬운 점은 플래쉬와 SNG 이야기가 나오길래 스마트폰과 애플 이야기도 들을 수 있지 않을까 했는데 그 부분에 대한 언급은 없으셨다는 점이었다. 그래도 이런 자리에서만 들을 수 있는 가치있는 이야기였다고 생각한다. - [서민관]
* 새롭게 경험해보지 못한 Rur-ple이라는 파이썬을 이용한 프로그래밍 언어 환경을 사용해보았습니다. 평소에 프로그래밍 언어에 대해 머리아프다고만 생각했었는데 이렇게 로봇을 이용해 움직이는것을 보니 좀더 재미있게 프로그래밍을 할 수 있었습니다. 머리를 많이 사용해서 그런지 좀 어지럽긴 하지만 평소에 C나 자바 대신 이것으로 프로그래밍을 한다면 코딩도 잘하고 성적도 잘 받을수 있을것만 같네요ㅎㅎ - [허준]
* 자료구조를 배울 때도 느꼈지만 뭔가 쉬운 듯 어려운 거 같아요. 그래도 컴공이면 자료구조랑 알고리즘을 알아야 한다던데 열심히 봐야죠 ㅠㅠㅋ - [강소현]
- 데블스캠프2012/첫째날/후기 . . . . 3 matches
* 첫 날이라 그래도 쉬운 내용을 한다고 했는데 새내기들이 어떻게 받아들였을지 궁금하네요. 하긴 저도 1학년 때 뭔 소리를 하나 했지만 -ㅅ-;;; 그래도 struct를 사용해서 많이 만들어 본 것 같아 좋았습니다. UI는 뭐랄까.. Microsoft Expression은 한번도 안 써 봤는데 그런게 있다는 것을 알 수 있어 좋았습니다. 페챠쿠챠에서는 서로가 어떤 것을 좋아하는지나 어떠한 곳에서 살았는지에 대해서 재미있게 알 수 있는 것 같아 좋았습니다. 아 베이스 가르쳐 달라고 하신 분,, 나중에 학회실로 오세요-.. 미천하지만 어느 정도 가르쳐는 줄 수 있.........
페챠쿠차 같은거 처음하는제 내가 발표를 한다는게 아직도 어색하기도 하고 할말을 다 못한거 같기도 하고ㅋ
프로그래밍을 해야하는 신입생 대상(?)의 세션에서는 신입생들의 역량을 잘 알고 진행의 속도나 난이도를 조절해야 한다고 느꼈네요. 이론과 실습의 비율도 적정해야할 것 같구요. 올해 C프로그래밍 담당 교수님이 바뀌면서 후반부에 배우는 내용이 약간 달라진 것 같기도 합니다.
- 데블스캠프계획백업 . . . . 3 matches
* 여태까지 있었던 ["데블스캠프"]는 짤막한(정말 어이없을 정도로 짧을 수도 있는..^^) 세미나 직후 문제 내주기, 풀기 등으로 이루어졌던 걸로 압니다. 이번에도 그렇게 할 것인지.. 아니면 Team 프로젝트식으로 선후배가 한 팀이 되어 하는것이 좋을지도 생각해봐야겠습니다. 그런데 아직 경험이 부족한 1학년들과 선배들이 페어가 되어 한다면 (잘하는 사람 예외) 선배들만의 잔치가 될 우려가 있기 때문에 잘 생각해보고 정해야겠습니다. --창섭
* 기존 방식대로.. 위에서 말하는 방식들은 어느정도 프로그래밍에 기초가 다져진 사람들에게 적합할듯.(신입생들의 실력이 어느정도일지는 모르지만 구구단도 제대로 못짤것 같음.) 기존의 방식은 아직 프로그래밍의 기초가 없는 사람들을 대상으로 성공적이었으므로. 그리고 몇년의 시행착오를 거쳐서 굳어진 방법이므로 . 새로운 방법을 도입한다면 해왔던 만큼의 시행착오를 해야 하므로 후배들이 얻을수 있는 것들에 대한 확신을 못함. --태호형
- 레밍즈프로젝트/연락 . . . . 3 matches
4. 그 이외에 픽셀에 들어가게 될 정보는. 뚫을 수 있는지 없는지, 레밍이 죽게되는 곳인지, 들어가게 되는 곳인지 등에 대한 데이터야-_- 레밍이 이 픽셀에 왔을 때 또는 다음 위치로서 이 픽셀을 검토하고 있을때 어떻게 해야 하는지에 대해서 생각한다면 접근이 될거야.
이걸로한다 - 유루
이젠 무한반복까지 한다 옘병 - 찌나님V-_-V
- 레밍즈프로젝트/프로토타입 . . . . 3 matches
상태바, 선택바, 메뉴, 그래픽출력부, 미니맵 부 들을 구체적으로 그려봐야 한다.
간단한 메세지, 대화상자 등을 만들수 있어야 한다.
참고 : MFC에서는 [(zeropage)STL/String] 보다는 CString 클래스를 사용하는게 [(zeropage)MFC/Serialize]를 하는데 용이하다고 한다.
- 몸짱프로젝트/CrossReference . . . . 3 matches
// 왼쪽 서브트리와 다시 비교한다.
// 오른쪽 서브트리와 다시 비교한다.
(*node)->left = NULL;// child 노드를 NULL로 초기화한다.
- 문제풀이/제안 . . . . 3 matches
* 문제는 일주일에 한문제 정도를 푸는것으로 한다.
* 정답 공개 시기는 출제자 마음대로 한다.
* 알려진 한가지의 코드를 공개한다.
- 방울뱀스터디/Thread . . . . 3 matches
2. thread.release() - 락을 해제한다. 다른 쓰레드가 이 코드 영역으로 들어갈 수 있는 것을 허락하는 것이다.
lock = thread.allocate_lock() #여기서 얻은 lock는 모든 쓰레드가 공유해야 한다. (->전역)
lock.release() #락을 해제. 다른 쓰레드가 ㅇ코드영역으로 들어갈 수 있도록 허락한다.
- 방학중PC실이용토론 . . . . 3 matches
구피만 개방인가요? 7층 컴퓨터가 훨씬 사양이 좋은데. 게다가 구피는 Netory가 프로젝트진행차 쓰고 있는걸로 기억합니다. 공부한다고 말하고 조교 입회하는거 상관말고 스터디할때 이용하시길. --[1002]
오늘 제가 조교분께 물어보았을 때는 구피만 개방한다고 들었습니다. 조교가 돌아가면서 입회한다고 하네요. 열쇠가 조교에게 있어서 상관 안 할 수가 없겠는걸요? --[Leonardong]
- 복날 . . . . 3 matches
1. 한달에 두번 격주로 시행함을 원칙으로 한다.
1. 목요일 7시에 시작한다.
1. 사전 연락 없거나(게시판 or 위키 공지), 현재 납득할 사정(학부생 아닌 경우,휴학)이 없이 2회 연속 정모에 불참시.본인 의사로 회원 자격을 상실한다.
- 상협/Diary/7월 . . . . 3 matches
* 요새는 맨날 3D만 한다. 난 한번 뭐 만들라고 맘 먹으면 눈에 뵈는게 없는거 같다. 벽돌깨기가 너무나도 만들고 싶은거라서 이거 말고 딴거는 못하겠당.. ㅡㅡ;; 그래서 POSA 프로젝트도 유보를...
* 오늘은 11시 반에 일어났다. ㅠㅜ 잠을 너무 많이 자니깐 머리가 아플라고 한다. 새벽에 잘때 기분이 안좋아서 많이 잔거 같기도 하다. 기숙사에 대한 환멸이기도 하고, 기숙사의 한 인간에 대한 실망과, 지금까지의 기숙사 생활로 나도 어느새 그런 인간이 되지는 않았을까 하는 두려움도 생겼다. 이미 기숙사 생활로 나도 상당히 학번이라는 권위에 호소하는 경향이 있는거 같다. 빨리 제정신 차려야 겠다. 그러나 기숙사를 나올수는 없는 상황.. -_-,
* 오후에 학교에서 공짜로 해주는 영어 회화 한번 가구, C++ 우리팀 모이는데 한번 가고 그러다 보면 하루 다 가겠다. 지금과 같이 뭐 특별한거 없고, 그저 그런 상황에서 난 중딩때 미래를 생각했는데.. 지금 상황에서 무엇을 조금씩 한다면 그것은 미래에 아주 큰 도움이 된다는거... 음.. 어떤걸 해봐야 할까~~ 영어인가.. 아니면 다양한 분야의 책들? 프로그래밍 공부는 원래 하는거다고 치고... 아니면 뭐 음악적으로 기타같은거라도 배울까나?? 별 생각이 다든다. -_-;;
- 새싹C스터디2005/pointer . . . . 3 matches
두 수의 값을 변경한다.
&(변수) -> 항상 변수1의 주소를 뜻한다.
(변수) -> 항상 변수의 값을 뜻한다.
- 새싹교실/2011 . . . . 3 matches
너무 짧은 시간동안 진행한다면 가르쳐줄 수 있는 것이 적습니다. 그러니
* 학생들이 피드백 작성을 어려워한다면 선생님이 구체적인 질문을 던지는 것도 좋습니다.
새싹 교실 지원 방침의 기본은 '''새싹 교실을 열심히 진행하고, ZeroPage의 발전에 기여한다면 그에 대해 지원'''하는 것입니다.
- 새싹교실/2011/AmazingC/6일차 . . . . 3 matches
* 함수엔 반환형이 존재한다.(반환형을 쓰지 않아도 된다)
* 함수의 선언부: 반드시 함수 호출하기 전에 선언을 해놓아야 한다!!
* sum2의 경우 호출시 메인함수 위에 선언이 되어있나 확인한 다음 sum2의 정의부를 실행한다!!
- 새싹교실/2011/學高/8회차 . . . . 3 matches
* 아래 소스코드를 큰 틀로 해서 recursive function을 이용하여 하노이의 탑 시뮬레이션 프로그램을 작성하라(이동 상황을 출력한다, 전역변수를 이용하여 횟수를 카운트하게 하여 H_n = 2*H_n-1 + 1 점화식에 맞는 답이 나옴을 보여야한다.)
* index는 0부터 시작한다
- 새싹교실/2011/데미안반 . . . . 3 matches
* C언어의 단점 중 low-level적 특성으로 프로그래밍을 하는데 많은 주의를 요한다 했는데, 실제로 잘못 사용한 사례는?
* assert는 '''강하게 주장하다'''라는 의미로 위와 같은 경우 val1이 7이 아니다! val2가 4가 아니다! 라고 주장한다는 의미입니다. 하지만 val1값은 7이고, val2의 값은 4니까 에러창을 띄워 주장이 잘못됐다고 알려주는 거에요. 전체적으로 의문사항은 assert문보다는 '''!='''의 의미를 잘 몰라서 그런 듯 합니다. == 는 같다, !=는 아니다라는 의미의 관계연산자입니다.
* [강소현] - 한 시간은 정말 금방 가네요. 근데 왜 학교 수업 들을 때는 그리 길었던거지!? 재귀함수를 사용할 경우 항상! 빠져나올 수 있는 '''조건'''을 걸어야 한다는 것을 복습했습니다. 뭔가 도미노 원칙 어쩌구 하긴 했지만 정확한 게 아니라 비슷하다-고 했던거에요. 정확한 건 3학년 알고리즘 시간에 divide&conquer을 배우면...<< 간단히 설명하자면 한번에 풀기 힘드니까 나눠서 풀자는 내용입니다.
- 새싹교실/2011/무전취식/레벨1 . . . . 3 matches
문자는 소문자 대문자를 구별한다. char babo; char BABO;
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 여기다 이렇게 쓰면됩니다. 오늘 새로운 새싹 인원들을 이끌고 새싹 교실을 시작하였다 초롱초롱한 눈동자의 진영이와 소라 원태 원석이 그리고 많이 알지만 참고 같이 수업을 봐준 진경이가 있어서 너무 좋았다. 약간 몇가지 설명을 안한것도 있지만 꾸준히 따라와주는 원태와 궁금한점에 대하여 질문을 하는 원석이의 태도가 참 많이 들었고 소라가 옆에서 진영이를 그때 그때 잘봐줘서 고마웠다. 첫시간이라 좀 어색하고 수준을 맞추기에 난감한것이 있었다. 다음시간에는 좀더 체계적이고 기존 커리큘럼이지만 설명을 보강하고 더욱 재밌는 수업을 만들었으면 한다. -[김준석]
- 새싹교실/2011/무전취식/레벨8 . . . . 3 matches
이소라 : 저번주 목요일날 모여서.별로 한게 없음. 어제한거 말씀드림. 어제 집에가서요. 친구 대타로 알바하게되었음. 걔가 축제를 하는데 공연을 해야한다고 알바를 대신해야한다고 그랬음. 축제가 수목금이라 월화는 안가도 될줄 알았는데 교육을 받으래서 2시간 일찍가서 교육받고 알바함. 8~12시까지 할것도 없음. PC방이었음. 그래서 일을 더했는데 사람이 2~3시되면 사람도 없는데 40대 아저씨가 이상한 창을 띄우고 보는걸 카운터에서 봄. 그리고 빨리 닫음. 문화충격. 어제 잠을 못자서 스트레스를 받아서 라면, 햄버거 먹고 먹고 먹고 먹고 잘수 있었는데 친구랑 나가서 놀음.
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/사과나무 . . . . 3 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 오늘은 제어문에 대해 배웠다. 지난시간에 했던 부분이지만 다시 공부하였다. 지난과제 구구단을 나눠서 출력하는 프로그램을 만드는데 \t 어떻게 써야할지 몰라서 많이 헤맸고,int k라는 개념도 생각을 하지 못해 나 스스로 만들지는 못했다. 변수를 2개만 해야한다는 고정관념을 버려야겠다. 오늘 배운점은 프로그램을 만들때 편협한 시각이 아닌 자유로운 생각으로 이것저것 생각하는 것이 너무나도 중요하다는 걸 보았다. 수학문제 풀이도 다양하듯이 프로그램도 마찬가지라고 생각한다. 한가지 주제에 대해 다양한 생각을 하는 연습을 해야겠다. - [김도익]
- 새싹교실/2012/우리반 . . . . 3 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
1.이번시간 배운 내용(자료형, %d, %c, 절차지향, if-else, scanf, printf, else if, ==, =, +=,>)을 글로 써서 정리해봅시다. 괄호안에 있는 단어들을 이용해서 써봐요. 각각의 단어들의 뜻을 나열해도 좋고, 수업시간에 한 것을 생각해가며 이러이러한 것은 주의해야한다 라는 형태로 줄글로 써도 좋아요. 단순히 정의만 쓰더라도 A4 반페이지는 될거같네요~.
* 오늘은 태진이형이 내주신 과제를 같이 해보면서 printf와 scanf 자료형 temp if else if를 섞어가며 각각의 함수를 알아보았다. 헷갈리는건 아직 마찬가지지만, 훈련하면 나아질거라고 생각한다. c언어는 정말 규칙이 많은것 같다. 집에서 코딩연습이 필요하다고 생각했고, 여러 규칙지키면서 해야하겠다 ㅋㅋ -[권도현]
- 새싹교실/2012/주먹밥 . . . . 3 matches
* 운영체제는 파일 시스템을 관리합니다. 관련해서 이번에 가르쳐주는것은 *(포인터:Pointer)관련해서 FILE 구조를 메모리 참조를 통해서 하는것을 알려주게 되었습니다. 파일(File)은 메모리주소로부터 시작되고 운영체제를 이를 관리하기 때문에 C에서 지원하는 라이브러리를 통해 운영체제로 부터 파일을 관리하는 정보를 가진 FILE 구조체를 불러오게 됩니다. 그래서 우리는 *를 통해 주소값을 따라가서 FILE구조체로 그 정보를 얻어오게 되죠. Good Good!
* 리다이렉션 > 표시는 현재 출력을 다른곳으로 돌릴때 쓴다고 했죠. 현재 이 test.exe파일을 실행시키면 5를 출력한다고 합니다
* 답변 : 플래시 프로그래머가 1억개가 넘는 배열을 선언하는 미친짓을 한다고 해봅시다. 이 사람이 1억개가 넘는 배열을 선언하고 돌리면 컴퓨터가 감당을 할수 있을까요? 이게 왜 뻗는지 이해를 못하죠? 여러분도 마찬가집니다. 지금 C는 저급언어에 조금 가까운 편이라 메모리 관리가 보이지만 스크립트만 개발해본 개발자나 방금 말한 플래시 프로그래머는 이해를 못하죠. 메모리의 효율적인 관리와 최적화를 위해 필요하다고 간단하게 요약할수 있겠네요.
- 서버재조립토론 . . . . 3 matches
[정모]때 서버 재 조립에 대한 이야기가 나왔다는 이야기를 회장님을 통해 들었습니다. 일단 제가 회의에 참석하지 못하고 회의록이 올라온 것도 아니므로 어떻게 해서 서버 재조립 이야기가 나왔는지 알고 싶습니다. 일단 제 생각은 굉장히 부정적인데요. 서버가 하는 일이 거의 웹서버 내지는 소스 리파지터리로 사용되고, 대규모 소스를 컴파일한다거나 덩치가 큰 프로그램이 돌아가는것도 아니기 때문입니다. 게다가 동시접속 사용자수로 많지 않은걸로 알고있는데요. (물론 이런것들은 이제부터 하기 위해 하나 새로 맞춘다!! 면 할말 없지만..) 이 상황에서 굳이 새로 서버를 맞추는게 필요할지... [임인택]
제로페이지 서버가 현재 분명 문제가 있고, 이것을 해결해야 한다는데에는(즉 좀 가끔가다가 죽으면 뭐 어때 하는 분은 없을거라고 생각합니다.) 모두 동감 하실거라고 생각합니다. 현재 제로페이지 서버가 아주 자주 죽는 문제가 제로페이지 서버의 하드웨어 적인 문제인가, 소프트웨어 적인 문제인가, 인프라적인 문제인가 이 3가지중 하나라고 생각합니다. 인프라적인 문제는 다른 학회나, 동문서버도 안 죽고 하니깐 제외 하겠습니다. 그러면 하드웨어 아니면 소프트웨어 적인 문제인데. 솔직히 저는 리눅스가 오래 사용해서 자주 뻗는다는 것은 좀 이해가 가지 않습니다. 리눅스를 서버로 우리보다 훨씬 오래 사용하는 곳도 부지 기수일텐데 그런곳들이 모두 이런 문제를 겪고 있을까요.. 그렇다고 지금까지 관리가 안되서 그런것도 아니라고 생각합니다. 상민형, 석천이형, 영창이 모두 제가 생각하기에는 그 누구보다도 서버 관리를 잘 했다고 생각합니다. 물론 테스트를 해봐야 알 문제입니다. 오늘 회장님이 테스트 해본다고 했는데 가끔씩 서버가 죽는 문제를 어떻게 테스트를 해야할지 전 감이 안 오네요. 한 일주일정도 제로페이지 서버를 죽이고 다른것(다른 하드에) 웹서버를 깔아서 아주 아주 수시로(몇분 단위로) 그 웹서버로 들어와서 죽었는지 확인을 해야 하는데(물론 테스트는 테스트를 진행하는 한두사람만 하겠죠. 현재의 제로페이지 위키만 해도 하루 방문자가 1000이 넘는것에 비해서...)그게 참 어려운 문제라고 생각합니다. 또 한 일주일동안 서버를 죽이는것도 현재 위키위주로 돌아가는 제로페이지에도 치명적이구요. 이렇게 테스트를 해서 만약 하드웨어 적인 것이 문제라면 또 다시 서버를 업그레이드 한다음에 다시 서버를 설치하는 작업을 해야겠죠.
- 수학의정석/집합의연산/조현태 . . . . 3 matches
또한 예를 들어 7개일 경우는 1개일때, 2개일때, ... 7개일때 이런식으로 나누어서 연산을 한다.
이렇게 세팅후 1인 경우에 출력한다. 한차례연산후
time_in = clock(); // 초기 시작 시간을 입력한다.
- 시간관리하기 . . . . 3 matches
보통 이 문제에 대해서는 '스스로가 게을러서' 로 끝나고, 문제에 대해 너무 막연하게 대처한다.
["1002"] 의 경우 치열하게 살고 있진 않지만, 몇몇개 해본 일들이 있다. 처음에는 크고 거창하게 계획 세우고 일들 순위 매기면서 하는 스타일을 시도했었는데, 요사이는 작고 간단하며 실천적인 행동들을 생각하려고 노력한다. (하지만, 여전히 게으르다;)
의외로 '간단해보이는', 하지만 인간적인 시스템을 제공한다. TDD 를 하는 사람들이라면 'To Do List 에 등록해놓기' 생각날지도.
- 아직도가야할길 . . . . 3 matches
* 어떠한경우든 문제를 정면으로 다루어야한다. 그래야 정신적 성장을 한다. 즐거운 일은 나중에 하자.
* 우리가 우리의 행동에 대한 책임을 지는 것이 어려운 이유는 그 행동의 결과로 받는 고통을 피하고 싶어하기 때문이다. 고통이 우리를 정신적으로 성장하게 한다.
- 여섯색깔모자 . . . . 3 matches
평소에 의견을 교환 하다가 보면 어느새 자신의 자존심을 지키려는 논쟁 으로 변하게 되는 경우가 많다. 이 논쟁이란게 시간은 시간대로 잡아 먹고, 각자에게 한가지 생각에만 편향되게 하고(자신이 주장하는 의견), 그 편향된 생각을 뒷받침 하고자 하는 생각들만 하게 만드는 아주 좋지 못한 결과에 이르게 되는 경우가 많다. 시간은 시간대로 엄청 잡아 먹고... 이에 대해서 여섯 색깔 모자의 방법은 굉장히 괜찮을거 같다. 나중에 함 써먹어 봐야 겠다. 인상 깊은 부분은 회의를 통해서 지도를 만들어 나간후 나중에 선택한다는 내용이다. 보통 회의가 흐르기 쉬운 방향은 각자 주장을 하고 그에 뒷받침 되는것을 말하는 식인데, 이것보다 회의를 통해서 같이 머리를 맞대서 지도를 만든후 나중에 그 지도를 보고 같이 올바른 길로 가는 이책의 방식이 여러사람의 지혜를 모을수 있는 더 좋은 방법이라고 생각한다. 이 책도 PowerReading 처럼 잘 활용 해보느냐 해보지 않느냐에 따라서 엄청난 가치를 자신에게 줄 수 도 있고, 아무런 가치도 주지 않을 수 있다고 생각한다. - [상협]
- 열정적인리더패턴 . . . . 3 matches
스터디 그룹은 지속적인 에너지(EnduringEnergyPattern)를 갖고 안전한 장소([안전한장소패턴])가 되기 위한 리더십이 필요하다. 이 패턴은 이런 특성을 만들기 위해 리더가 해야할 일을 설명한다.
'''열정을 갖고 솔선수범해서 스터디 그룹을 이끌어라. 사람들이 원하는 곳으로 만들고, 더 큰 커뮤니티에 참석하도록 초대하라. 자극이 되는 이벤트, 가상 공간 상에서의 대화로 멤버들에게 힘을 주고, 멤버들의 아이디어를 가까이서 수렴함으로써 지속적으로 그룹을 발전시킬 방법을 모색하라.'''
때로는 다양한 사유로 인해 리더가 그룹을 이끌지 못할 수도 있다. 이게 짧은 기간이면 대체로 문제가 되지 않는다. 하지만 어느 정도 기간 동안 그룹의 리더가 공석이 된다면, 누군가가 나서서 그 역할을 맡아야 한다. 일반적으로 이미 그룹에 대해 열정적인, 적극적 참여자(ActiveParticipantPattern)가 좋은 선택이다. 그러나 언제나 최선은 역할을 맡겠다는 지원자이다.
- 우리홈만들기 . . . . 3 matches
*지금 이 프로젝트는 28일까지 마감을 하고 졔,혜영,남훈이가 웹프로그램을 공부한다고 하니
* 요즘은 perl 이라는 거로 cgi 를 제작한다는데 (이것조차 이제야 알았다) 이거로 해볼까요 아니면 역시 전통적인; c 로 할까요;; -zennith.
* 괜찮아. 방법적인걸 도와달라는게 아니니까. 암튼.. 네가 도왔으면 한다; -zennith.
- 위키설명회2005 . . . . 3 matches
신입생한명이 한개의 피씨를 사용한다.
[노스모크] 에서 검색을 통해 흥미로운 페이지를 찾아내고 간단하게 발표를 한다.
위키는 누구나 관련한 내용을 계속 수정해 나가고 필요한 내용은 덧붙여 놓기 때문에 본문 글이 점점 다듬어져 나갑니다.텍스트가 진화한다고 말하기도 합니다.
- 위키에 코드컬러라이저 추가하기 . . . . 3 matches
이 문서의 내용은 MoinMoin 1.0 부터 지원하기 시작한 Process 에 기반한다. 그래서 그 이하 버전에서는 불가능하다.
* 일단 파서. 다음 3개의 파이선 파일을 MoinMoin/parser 디렉터리에 생성한다.
* 다음 2개의 파일을 MoinMoin/processor 디렉터리에 생성한다. (본인은 이름의 통일감을 위해 Colorize.py 도 PythonColorize.py 로 이름을 바꾸었다.)
- 유혹하는글쓰기 . . . . 3 matches
(작가가 되고 싶다면) ''무엇보다 두 가지 일을 반드시 해야 한다. 많이 읽고 많이 쓰는 것이다. 이 두가지를 슬쩍 피해갈 수 있는 방법은 없다. 지름길도 없다.''
* 기억에 남는 것은 인위적으로 플롯을 만들어서 이렇게 해야지 하면서 창작을 하는것이 아니라, 작가 자신도 쓰면서 앞날을 알 수 없다고 한다. 뭔가 와 닿는게 있다. 그리고 자신이 잘 아는 내용(배경)에 대해서 써야 좋다는 것도 알았다.
* 그리고 무엇보다 중요한 것 !!! -> 일단 초고를 완성하고 나서 한 6주 정도 안 보이는곳에 놓고 안보고 있다가 6주정도 후에 다시 봐서 수정 작업을 하는게 정말 좋다고 한다. 이것은 어떻게 생각하면 [포토리딩]에 나오는 내용과 일면 비슷한 부분이 있다. 이렇게 안 보고 있는 사이에 무의식이 작용을 하나 보다.
- 이영호/끄적끄적 . . . . 3 matches
// File에서 array로 바뀐 것을 읽어와 함수를 수행 하는 것을 count-1번 반복한다.
// buf와 array를 비교한다. (미완성)
// 달라진곳은 save 포인터에 주소를 저장하고 다시 체크를 시작해 달라진곳이 나오면 자리를 교체한다.
- 일반적인사용패턴 . . . . 3 matches
* 기존 페이지로부터 글을 Copy & Paste 한다.
* 기존 페이지의 제목을 클릭, 기존 페이지를 링크 건 페이지들을 검색한다. 링크들을 수동으로 고쳐준다.
* 모든 링크들을 수정하고 나면 (기존페이지 제목을 클릭했을때 역링크가 없다면) 기존 페이지를 삭제한다.
- 임베디드방향과가능성/정보 . . . . 3 matches
임베디드 분야로 제대로 된 길을 잡기 위해서 C, Assembly, Kernel, 보안, 등등을 Master 수준으로 올려야한다.
(한마디 추가한다면서 많이 추가했군요.. 제 의견이었습니다.)
일본의 경우 트론 프로젝트가 올해(작년인지 헷갈리네요.)로 20주년을 맞이한다고 하던데 트론 얘기를 신문에서 본 건 작년이 첨이었구요.(제가 신문을 잘 안 봐서 그럴지도..--;)
- 정규표현식 . . . . 3 matches
* 스터디 모임요약본은 정규표현식/모임 안에 날짜별로 카테고리를 만들어 작성한다
* Wiki 문서 작성시 안의 내용은 자유이나 맨위에 정규표현식 내용 링크 리스트는 모두 나와야하며 스터디문서에서는 정규표현식 링크와 스터디 링크만 나와야 하며 반대로 모임문서에서는 정규표현식 링크와 모임 링크만 나와야한다.
* 모임 문서에는 그 전모임에서 문서의 해당 모임까지의 결과를 링크시켜야한다.
- 정모/2002.5.2 . . . . 3 matches
* 칼럼 게시판에 위키 칼럼 분류분류를 링크한다.
* 학기중 모드로 바꾼다. 이는 ZP 회원이면 누구든지 편리한대로 수정하도록 한다.
* 5월 9일 목요일 5시에 모집한다.
- 정모/2003.3.5 . . . . 3 matches
- 제안 : 학회에 대한 설명을 이때 같이 한다. - 창섭, 상욱
* 데블스켐프를 통해 정회원(ZeroPagers)로 승급한다.
* 데블스켐프를 통해 정회원(ZeroPagers)로 승급한다.
- 정모/2005.2.16 . . . . 3 matches
* 다음 정모 : 다음정모는 7일로 결정. 3월은 행사로 바쁘니 행사 없는날 모이자. 3월행사는 2,4,10,15,17,21(MT자봉첫회의),25(여학우모임)이 짜여져있다고 한다. 7일로 결정. 입학식 ZP소개 전에 시간표를 보고 시간을 맞추어본다. 대략 저녁늦게 잡힐듯.
* 지금그때 : 행사준비는 [이승한], [강희경], [Leonardong]이 한다.
* xpweek : 과정은 좋았다. 결과가 없었다. 시간이 지켜지지 않았다. 제작물 난이도가 높았다. 성만曰, "xp에 적절치 못한 주제였다" ↔ 휘동曰, "xp 반대론자가 흔히하는 말이다" java언어의 장벽, 완성에 근접하지 않았나?? 8시간 연속코딩에 익숙치 않았다. 휘동曰, "안맞는 건 빼고 필요한 것만 넣어야 한다는 것을 배웠다."
- 정모/2005.3.21 . . . . 3 matches
[지금그때/준비물]만원을 나휘동에게 줘서 전지까지 사게한다.
5시에 한다는 걸 언급하며 6시에 있는 총엠티 자봉단 회의 참석 여부와 무관하게 참석가능함을 강조(?).
그 날 모집하는 회원은 [ZeroPagers]임. 그러나 [DevilsCamp]에는 참여 해야한다.(참고-[ZeroPage회칙])
- 정모/2006.5.22 . . . . 3 matches
낮은 수준에서부터 공부했으면 한다.
전체 회원을 위한 것은 어려움이 있다고 생각한다.
두번의 데블스 캠프를 했으면 한다.
- 정모/2007.4.3 . . . . 3 matches
제도를 한다는 것은 오버헤드가 발생해서 비 효율적이 될것같습니다. 차라리 위키를 통한
는다면 회원으로서의 자격이 없습니다. 따라서 어느정도 정리는 해야 한다고 생각합니다.
인트를 주고 나중에 PM이 할당된 포인트를 프로젝트 기여도에 따라 배분한다.)
- 정모/2011.3.7 . . . . 3 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 이번 정모에서 루비 세미나 - 문법실습 - 을 준비했었습니다. 잘 할수 있을까 걱정했는데 예상대로 설명도 제대로 못하고 강사주제에 들으러 오신분들께 물어보고 시간도 두배나 초과하는 추태를 보였습니다. 혼자서는 다 아는것 같은 내용도 남들 앞에서 설명하려니 제대로 떠오르지가 않네요.. 앞에서 말하면서도 얼른 끝내고 도망가고싶다는 생각이 자꾸 들었습니다ㅠ 이래서 연습이란게 중요한가 봅니다. 다른사람을 가르치려면 가르칠 사람보다 세배네배 더 공부해야 한다는 말을 뼈저리게 새기는 하루였습니다. 혹여 또 세미나를 한다면 벽보고 연습이라도 하겠습니다. 그때는 이런 괴로운 세미나를 들려드리지 않을게요ㅠㅠ - [서지혜]
- 정모/2012.5.14 . . . . 3 matches
* 돌아가면서 관리한다.
* 메뉴얼을 작성해 보고 한다.
* 있는 사람들이 한번씩 체크한다
- 제로페이지는 . . . . 3 matches
* ''현재로써의 제로페이지는(개인적 바램을 제외하고 말한다면) 중앙대학교 컴퓨터공학과 내의 전공 관련 학술모임으로 과내 활동단체 중 하나이다.'' 맞을까요? ^^;; 제로페이지의 역할보다는 무엇인지라는 것에 입각했습니다.--창섭
* ["제로페이지는"] 우선 중대 컴공이라는 이름하에 지원을 받으며 지도 교수가 먼저 생겨야 한다. 좀 주제와는 떨어진 얘기 였지만 나로선 이게 우선시 되어야 할것 같다. 이름은 있되. 실체가 없는 듯 하다란 느낌이다. --["erunc0"]
* ["제로페이지는"] ["제로페이지의장점"] 때문에 제로페이지이다. 그 장점을 살려나가야 한다.
- 제로페이지의장점 . . . . 3 matches
나는 잡다하게도 말고 딱 하나를 들고 싶다. 다양성. 생태계를 보면 진화는 접경에서 빨리 진행하는데 그 이유는 접경에 종의 다양성이 보장되기 때문이다. ["제로페이지는"] 수많은 가(edge)를 갖고 중층적 접경 속에 있으며, 거기에서 오는 다양성을 용인, 격려한다(see also NoSmok:CelebrationOfDifferences). 내가 굳이 제로페이지(혹은 거기에 모이는 사람들)를 다른 모임과 차별화 해서 본다면 이것이 아닐까 생각한다. --JuNe
학풍이라는 것이 있다. 집단마다 공부하는 태도나 분위기가 어느 정도 고유하고, 이는 또 전승되기 마련이다. 내가 1학년 때('93) ZeroPage에서 접했던 언어들만 보면, C 언어, 어셈블리어, 파스칼, C++ 등 경계가 없었다. 친구들을 모아서 같이 ''Tao of Objects''라는 당시 구하기도 힘든 "전문" OOP 서적을 공부하기도 했다. 가르쳐줄 사람이 있었고 구하는 사람이 있었으며 함께할 사람이 있었다. 이 학풍을 이어 나갔으면 한다. --JuNe
- 졸업논문 . . . . 3 matches
* 서론, 본론, 결론에서 각 장을 새 페이지에서 시작한다.
* 참고 문헌을 인용할 시에는 해당 참고 문헌의 번호를 꺾쇠 괄호(bracket)안에 명시한다. (예: [1])
* 웹 이외의 자료도 찾아서 참고한다.
- 중위수구하기 . . . . 3 matches
* a = -999 이면 프로그램이 끝나게 한다.
* 음수도 처리가능하게 한다.
* 비교 횟수를 적게한다.
- 중재자패턴 . . . . 3 matches
...참여자의 교육적인 경험에서 대화라는 수단은 직접적으로 어마어마한 비중을 차지한다. 이게 형편없이 잘 안되면, 대화는 통찰력의 풀([통찰력풀패턴])도, 안전한 장소([안전한장소패턴])도 될 수 없다. 이 패턴은 일종의 어떤 지침이 가치있는 교육적 경험을 하는데 도움이 될지 설명한다.
중재에 익숙해지려면 시간이 걸릴 수 있다. 왜냐하면 이는 적극적으로 말하고, 듣고, 관찰하는 것을 수반하기 때문이다. 또한 반드시 사려깊게 준비해야한다. 언제 대화에 개입할지 적절하게 결정하지 못하면 논쟁이 될 것이다.
- 지금그때2003/후기 . . . . 3 matches
어제는, 말씀드렸다시피 희망과 절망을 동시에 느꼈습니다. 이렇게 좋은 자리에 신입생들이 20명 남짓 왔다는 점이 절망이었습니다. 사실 애초에는 그 정도 인원을 대상으로 계획했지만 내심 더 많이 올 것을 예상했습니다. 오히려 너무 많이 오지 않을까 걱정을 해서 가능하면 광고수준을 낮추라고 주의까지 주었습니다. 희망은 20명 정도가 왔다는 것이고, 이런 행사를 기획하고 실행했다는 점입니다 -- 희망이 있습니다. 다른 학교 학생들이 중앙대학교 컴퓨터 공학과를 엄청나게 부러워한다는 사실을 아십니까.
[지금그때]를 처음 기획한 사람으로, 이 전통을 가능하게 해준 모두에게 ''고맙다''나 ''수고했다''가 아니고 ''축하한다''는 말을 해주고 싶습니다.
* 학교 수업 12주정도의 한학기 수업중 2번정도 OST 를 한다면 어떤일이 있을까 생각해봅니다. 교수님도 guest로만 참여하시는 식으로, 그동안 공부한 것들이 추후 실제로 어떠한 의미를 가지는지를 서로 대화하는 자리랄까요. 한번 그날 오신 분들이 OST 방법으로 진행해보셔도 재밌겠다는 생각을 해봅니다.
- 지금그때2004 . . . . 3 matches
이번에 뭔가 새롭게 시도한다면 이런건 어떨까요?
Berkeley Visionaries Prognosticate About the Future http://netshow01.eecs.berkeley.edu/CS-day-004/Berkeley_Visionaries.wmv 이걸 보면 대충 감이 올겁니다. 이 동영상의 경우 뛰어난 패널진에 비해 진행자가 그리 좋은 질문을 하지 못해서 아쉽기는 합니다. 좋은 질문을 하려면 서점이나 도서관에서 [질문의 힘]이라는 책을 읽어보세요. 그리고 04학번 눈높이의 질문에 대한 고학번들의 생각을 들어보는 것도 중요하지만 04학번이 전혀 생각 못하는 질문을 대신 물어주는 것도 중요합니다. 고객과 요구사항을 뽑는 것과 비슷할 수 있겠죠. "그들이 원하는 것"은 물론 "그들이 필요로 하는 것"(주로, 나중에 그들이 원할만한 것)을 이야기해야 하니까요 -- 또 종종 그들은 자신이 뭘 원하는지 모르는 경우도 많습니다.
- 지금그때2006/홍보 . . . . 3 matches
일부 제외하고 저학번이 주도하여 홍보한다.
기준없이 개인이 알아서 한다.
교수님에게는 찾아 뵈서 홍보한다.
- 지금알고있는걸그때도알았더라면 . . . . 3 matches
우리는 늘 과거에 대해 아쉬워 한다. 그때 내가 이걸 알았더라면, 그때 내가 이걸 했더라면 하고 후회하기도 한다. 인간은 시간이 지나고서야 비로소 가치를 알고 지혜를 얻는 자연의 섭리 때문이다. 하지만, 나는 비록 그렇게 하지 못했지만 내 뒤에 오는 사람은 더 나은 길을 택하거나 위험한 길을 피하게 도와줄 수 있지 않을까?
눈 덮힌 들판을 갈 때는 모름지기 함부로 걷지 말아야 한다.
- 카고컬트과학 . . . . 3 matches
과학이라고 일컫는 것의 전형적인 예라고 생각한다. 남태평양에는 카고 컬트를 행하는 사람들이 있다.
* 가령, 어떤 물리 실험을 한다고 했을 때, 그 실험을 하는 과학자들은 이전에 다른 과학자들이 실험한 내용을 기초로 하여 새로운 가설을 만들려고 한다. 하지만 그 실험이 잘못되었을 경우에는 자신의 가설은 허무맹랑한것이 되고 만다.
- 튜터링/2011/어셈블리언어 . . . . 3 matches
* 책의 코드를 그대로 베껴와 프로그램을 완성했지만 어떻게 동작하는지는 잘 모르는 사람이 많아 다시 짜보기로 한다.
* 관례적으로 "Hello World!"를 출력해 보기로 한다.
; n이 1인지 검사한다
- 페이지이름고치기 . . . . 3 matches
페이지 이름을 고치는 기능이 모인모인에서는 특별하게 존재하지 않는다. 다음과 같은 과정으로 해결한다.
* 기존 페이지로부터 내용을 긁어서 새 페이지에 복사한다.
* 기존 페이지를 DeletePage 기능을 이용해서 삭제한다.
- 프로그래밍언어와학습 . . . . 3 matches
토크백까지 같이 읽어야 할 것 같고. -_-; (물론 쓸데없이 화내는 사람들이 많아보여서, 쩝..) 그 글에 대해서 약간 한계를 생각한다면.. (뭐. 그 글 쓴 분의 의도는 대강 알겠지만.)
> 향을 미치는지를 가르쳐야 한다. 그렇게 하기에 자
> 에 대해서 관심도 높고 좋은 언어라고 생각한다. 하
- 프로그래밍잔치/셋째날 . . . . 3 matches
1. 먼저 간단한 문제에 대한 프로그램을 작성한다. 제한 시간이 짧으니 가장 빨리 짜도록 한다.
* 다시 원 소스의 주인은 바뀐 소스를 감상한다.
- 프로그래밍잔치/정리 . . . . 3 matches
-> 준비한 리허설에 대해서. 리허설의 정도를 좀 더 많이 준비한다던지. 해당 주제에 대해 미리 공부해둠으로서 자신이 해당 주제를 접했을때의 소감 등에 대해서 이야기할 수 있도록.
* 행사의 길이 - 6시간 3일은 아무래도 사람들이 지쳐한다는 느낌을 많이 받았다.
-> 진행 스케줄 중에 '5분 Pair Time', 'CRC Session Time' 등을 도입해주면, 사람들이 디자인이나 Pair 시 실천방법으로 도움을 받을 수 있으리라 생각한다.
- 프로젝트전용위키 . . . . 3 matches
[프로젝트전용위키]는 일반적으로 해당 프로젝트와 그 생명주기를 같이한다. [프로젝트전용위키]는 해당 프로젝트의 형상관리 툴로 사용될것이며, 구성원들간의 커뮤니케이션용 도구의 역할도 할 것이다.
ZeroPage에서 [프로젝트전용위키] 생성에 편리한 인프라를 구축해준다면 좀 더 효율적인 프로젝트를 진행할 수 있을 것이라고 생각한다.
프로젝트로 위키가 생긴다고 한다면, 각 프로젝트 팀들의 위키에 대한 자유도는 높아지는 장점이 있으나, 매 프로젝트 때마다 위키를 열 필요가 생긴다. 그리고 해당 프로젝트가 끝난뒤의 프로젝트 위키에 대해 어떻게 해야 할지에 대해서도 생각해 볼 필요가 있다고 본다. (하지만, 쓸만한 사람들은 알아서 개인위키 돌리고 있는게 현실이다. 왜 그럴까에 대해서도 생각해보긴 해야겠다.) --[1002]
- 훌륭한프로그래머의딜레마 . . . . 3 matches
훌륭한씨는 매니져가 "의무적으로" 잡아놓은 예상 소요 시간 3개월의 첫 2달 반을 빈둥거리며 지냈다. 매니져는 훌륭한씨가 월말이 되어서 "정말 죄송해요. 아직 한 줄도 못짰어요. 너무 어려워요. 좀 봐주세요."라고 처량하게 자비를 구할 날을 손꼽아 기다렸다. 웬걸, 마지막 날 훌륭한씨는 예의 "너무도 태연스러운" 모습으로 나타났다. 150여 줄의 프로그램과 함께. 그 프로그램은 멋지게 "열나어려운문제"를 해결했다. 하지만, 매니져가 그 코드를 들여다 보자, 한마디로 "너무도 쉬웠다." 초등학생도 생각해 낼 정도였다. 매니져와 고객은 이름을 "열나쉬운문제"로 바꾸는 데에 전적으로 동의한다. 훌륭한씨는 "이렇게 간단한 문제를 3개월 씩이나 걸려서 풀었습니까? 왜 이렇게 성실하지 못하죠?"라는 비난을 들어야 했다.
훌륭한 프로그래머는 어려운 문제를 "터무니 없을 정도로 간단한 문제"로 풀어내는 재주가 있다. 남들이 보기에는 그것이 너무도 당연한 해결법으로 보인다. 하지만 그들은 쉽게 생각해 내지 못한다. 그러고는 훌륭한 프로그래머를 우습게 본다.
중간치기나 하치기 프로그래머는 어려운 문제를 어렵게 혹은 더욱 어렵게 풀어내는 재주가 있다. 남들이 보기에는 그것이 너무도 기발한 해결법으로 보인다. 역시 그들은 쉽게 생각해 내지 못한다. 그러고는 중간치기 하치기 프로그래머를 대단하게 본다.
- 10학번 c++ 프로젝트 . . . . 2 matches
1. 프로젝트의 정기모임(이하 모임이라 칭함)은 매주 일요일 오후 3시에 시작한다.
2. 모임에 지각, 혹은 불성실한 참여가 보일 시 벌금2000원의 벌금을 부과한다.
- 2002년도ACM문제샘플풀이/문제A . . . . 2 matches
// sort 함수는 #include <algorithm> 한다음
// 저것도 #include <cmath> 한다음, abs(값) 하면 끝남
- 2007ToeflStudy . . . . 2 matches
1. 모일때 마다 해커스 TOEFL 교재의 6일치 분량을 외워오도록 한다.
3. 테스트는 voca_test_generator.xls 파일을 사용한다(필요하신분은 [김건영], 남진석에게 연락)
- 2011년독서모임/주제 . . . . 2 matches
||2011년을 준비하는 책||다시 시작하는 힘, 성공한 CEO는 단순하게 해결한다, 선물||
||돈(MONEY)!||경제학 콘서트, 금융지식이 미래의 부를 결정한다, 통장의 고백, 지금 당장 경제공부 시작하라. ||
- 2011년돌아보기 . . . . 2 matches
* 누구보다 좋은 선배들을 누구보다 많이 만날 수 있었다는 것에 감사한다.
* 휴학하고도, 방학하고도 항상 ZeroPage 활동에 빠진 적이 없는 ZP순이인데 이제 졸업이니 전처럼 활동할 수가 없겠네요. 한 해를 마무리한다기보다 5년간의 활동에 마침표를 찍는다는 느낌이라 2011년을 보내는 마음이 더욱 복잡합니다. 특히나 올해는 회장으로 활동해서 개인적으로 더 특별한 한 해였습니다. 회장으로 막 활동을 시작했던 작년 이맘때가 생각나네요. 욕심도 기대도 걱정도 많았던 때였습니다. 일년이 지난 지금 하나하나 따져보면 뿌듯한 일도 있고 아쉬운 일도 있지만 전체적으로 생각해보면 보람찬 한 해였다는 생각이 듭니다. 4학년과 ZeroPage 회장을 병행하면서 잘할 수 있을까 싶었는데 잘한 것은 모르겠지만 하면서 배운 것, 얻은 것이 많아 회장으로 활동하기 정말 잘했다는 생각이 듭니다. 시도해보고 싶었던 것들을 가끔은 정말 대책없다 싶을 정도로 이것저것 많이 해봤는데 ZeroPager들이 함께 참여해주어 너무 고맙고 즐거웠습니다. 2012년은 더욱 더 ZeroPager들이 ZeroPage를 통해 성장하고, 또 ZeroPage도 성장할 수 있는 한 해가 되면 좋겠습니다. - [김수경]
- 2012년독서모임 . . . . 2 matches
* [권순의] - 오랜만에 시작하는군요. Fault Line은 보이지 않는 균열이 세계 경제를 위협한다는 내용으로 지표면에서 단층면이 접하는 선인 단층선이 Fault Line인데 그 곳에서 지진이 발생한다는 것 때문에 따 왔다고 하더군요. 그래서 과거 시행했던 정책이나 여러 사건들을 통해 현재의 경제가 어떠한 상황에 이르게 되었는지에 대해서 서술한 책입니다. 사실 무지 재미 없습니다. -_- 읽은지 꽤 됬는데 눈에 잘 안 들어오고 하다 보니 아직도 다 못 읽었..
- 3DStudy_2002 . . . . 2 matches
DeleteMe) 질문해도 될까요..? 3D를 공부한다는 말은 도대체 무엇을 공부한다는 말인가요..?? --선호..[[BR]]
- 3N+1Problem/강희경 . . . . 2 matches
2. 범위 안에 어떤수의 2의 배수가 있는 경우(또는 (x - 1)/3이 있는 경우) 1과 같은 이유로 그 수는 최대값에서 배제한다.
범위(Range)를 인위적으로 줄여야한다는 결론에 도달.
- <시작페이지 사용규칙> . . . . 2 matches
* 시작페이지에서 메뉴와 링크에는 링크명 양끝에 "<", ">" 를 넣어 다른 페이지들과 구분한다
* 최대한 심플함을 추구한다 - 항목이 많아지면 더 작은 소항목으로 나누어 묶는다
- AM . . . . 2 matches
* 목적 : 윈도우 프로그래밍을 위한 API와 MFC를 공부한다.
* 진행 방식 : 각자 정해진 분량을 공부하고 정모에 팀원들이 번갈아 가면서 공부한 내용을 세미나한다. 질문답변하며 피드백하는 과정을 갖는다.
- AM/20040629첫번째모임 . . . . 2 matches
* 진행 방식 : 각자 정해진 분량을 공부하고 정모에 팀원들이 번갈아 가면서 공부한 내용을 세미나한다. 질문답변하며 피드백하는 과정을 갖는다.
* 목표 : MFC의 원리를 이해하고 적용한다.
- AcceleratedC++/Chapter0 . . . . 2 matches
이런 문장이 들어있는 C++ 프로그램을 컴파일 해 보면 에러가 날 것 같지만 에러가 나지 않는다. 왜냐하면 둘 다 모두 계산 가능한 식이기 때문이다. 계산 가능한 식이라면 최종 결과가 존재해야 한다. 첫번째 문장은 계산이 끝나있는 식이고 최종 결과가 100 이다. 두번째 문장은 한번만 계산하면 계산이 끝나고 최종 결과는 4 이다. 그렇다면 다음과 같은 문장은 계산 가능한 식이 맞는가?
첫번째 문장을 계산하면 a라는 변수에 10을 대입하면 되고 결국 남는것은 a밖에 없으므로 a의 값이 최종 결과가 된다. 두번째 문장을 계산하면 std::cout과 "Hello World!!"를 왼쪽 쉬프트 연산을 하고 나온 결과가 최종 결과가 된다. 실재로 연산 결과가 std::cout 이고 이것이 최종 결과가 된다. 여기서 왼쪽 쉬프트 연산이 과연 std::cout과 "Hello World!!" 사이에서 가능한 것인가 라는 의문을 갖게 될수도 있겠지만 C++에는 연산자 재정의(operator overloading) 라는 것이 있기 때문에 이런것을 충분히 가능하게 만들수 있다고만 알고 넘어가기 바란다. 여기서 두번째 문장을 자세히 알고 넘어갈 필요가 있다. 두번째 문장도 앞에서 설명했듯이 계산 가능한 식이고, 결국 실행되면 계산이 수행되지만 그것과 더불어 일어나는 일이 한가지 더 있는데, 바로 표준 출력으로 "Hello World!!" 가 출력된다는 것이다. 이렇게 계산되어지는 과정에서 계산 결과와 더불어 나타나는 것을 side effect라고 한다. 첫번째 문장과 같은 경우에는 side effect가 없다. 다음과 같은 두 문장이 있다고 하자.
- AnalyzeMary . . . . 2 matches
우리는 살아오면서 수많은 사람들이 자신을 설득하려고 노력하는 것을 경험한다. 부모님, 교사, 친구, 상사, ... 어떤 사람은 처절하게 실패하고 어떤 사람은 멋지게 성공한다. 나를 설득시켰던 사람들의 공통점은 무엇인가? 무엇이 그들을 다르게 만드는가? AnalyzeMary and become Mary.
- AttachmentMacro . . . . 2 matches
/!\ 모니위키 1.1.3 CVS부터 지원하는 기능
/!\ 모니위키 1.1.3 CVS부터 지원하는 기능
- AustralianVoting/곽세환 . . . . 2 matches
문제를 제대로 이해해야한다.
// 후보자 개인당 득표수를 구한다
- AwtVSSwing/영동 . . . . 2 matches
* 단점: 운영체제에 따라 버그가 발생할 수 있다. 불규칙한 컴포넌트의 모양과 레이아웃 설정 문제가 발생한다.
* 단점: 실행 속도가 느리다. 실행시 메모리를 많이 차지한다.
- Basic알고리즘/63빌딩 . . . . 2 matches
이진검색 이란 순서대로 (이진트리안에) 보관되어 있는 데이터를 검색하기 위해서 중간에 있는 (혹은 이진 트리의 루트에 해당하는) 값을 고른다음, 찾는 값이 그보다 크면 오른쪽으로 (값이 더 큰 쪽으로 ) 이동하고, 작으면 왼쪽으로 (값이 더 작은 쪽으로) 이동하는 방법을 의미한다. 유명한 알고리즘이므로 모르는 사람이 없으리라고 생각한다. -저자^_^
- Basic알고리즘/빨간눈스님 . . . . 2 matches
{{| 옛날에 어느 나라에 승려들만 모여 사는 섬이 있다. 그들 중에서 어느 사람은 눈이 빨갛고 어느 사람은 눈이 갈색이다. 눈이 빨간 사람은 마법에 걸려 있기 때문에 스스로 눈이 빨갛다는 사실을 깨닫게 되면 그 날 밤 12시에 그 나라를 떠나서 사라져야만 한다. (무조건) 승려들은 서로의 눈 색깔에 대해 전혀 언급하지 안는다는 불문율이 있었기에 상대방의 눈 색깔을 알려줄 수도 없었따. 그 섬에는 거울도 없고, 거울 비슷한 물건도 없었기 때문에 자신의 눈이 무슨 색인지 아는 사람은 아무도 없었다. 그래서 그들은 자신의 눈 색깔을 알 길이 없었기에 행복하게 살아갈 수 있었으며, 그 나라를 떠나는 사람도 아무도 없었다. 그러던 어느날, 그 섬에 관광객이 찾아왔다. 그는 승려들 사이에 존재하는 규칙을 알지 못했기 때문에 절대로 하지 말아야 할 말을 내뱉고 말았다.
* 관광객이 거짓말한 경우 (눈이 빨간 스님이 아무도 없는경우) : 이 경우에는 모든 스님들이 섬을 떠나게 된다. 왜냐면 모든 스님들은 자신의 눈을 제외한 다른 사람들의 눈 색밖에 볼 수없는데 만약 다른 모든 사람들의 눈 색이 갈색이라면 자신의 눈 색이 빨간 색이므로 섬을 떠나야 한다고 생각하게 된다. 빨간색의 눈을 가진 스님이 아무도 없기 때문에 모든 스님이 이렇게 생각하게 된다.
- BeingALinuxer . . . . 2 matches
Being A Linuxer는 '리눅서가 되는' 정도의 뜻으로 해석할 수 있다. 이는 완료형이 아니라 진행형이다. 이 스터디로 인해 참가자들이 리눅스를 조금이나마 이해하고 리눅스 환경에 익숙해지는 것을 최종 목표로 한다.
|| 이름(원하는 Nick) || 학번 || Messenger || 각오한마디 ||
- Boost . . . . 2 matches
쉽게 말해서, Boost는 미래의 표준 C++ 라이브러리의 일부가 될 수 있는 구성 요소들의 옥석을 가려주는 역할을 한다고 볼 수 있네요. 참으로 가치 있는 서비스이고, 이러 일을 하는 분들이 있다는 데에 고개 숙여 감사해야겠습니다.
* [http://boost.org/status/cs-win32.html 컴파일러 테스트] 페이지를 보면 알 수 있듯이 가장 많은 테스트를 통과하는 것은 gcc. VC++ 6 은 테스트도 안한다.
- BoostLibrary . . . . 2 matches
쉽게 말해서, Boost는 미래의 표준 C++ 라이브러리의 일부가 될 수 있는 구성 요소들의 옥석을 가려주는 역할을 한다고 볼 수 있네요. 참으로 가치 있는 서비스이고, 이러 일을 하는 분들이 있다는 데에 고개 숙여 감사해야겠습니다.
* [http://boost.org/status/cs-win32.html 컴파일러 테스트] 페이지를 보면 알 수 있듯이 가장 많은 테스트를 통과하는 것은 gcc. VC++ 6 은 테스트도 안한다.
- BuildingWikiParserUsingPlex . . . . 2 matches
전자의 경우 각각의 Class Responsibility 들을 유지한다는 장점이 있지만, AutoLinker 에서 원래 생각치 않았던 한가지 일을 더 해야 한다는 점이 있겠다.
- BusSimulation/조현태 . . . . 2 matches
들떠서 다 적고나서 소스의 설명이 안되있는것을 깨닫고 시급히 수정.. 그런데 어느분이 그사이 페이지를 변경하셔서 눈물을 머금고 다시작성한다.ㅠ.ㅜ
- 물런 재미가 없긴 하겠지만 이 증명은 버스가 편도로 움직이고 버스용량이 무한이며, 승객이 내리지 않더라도 승객이 타고 승객이 타는데 시간만 걸린다면 버스의 몰림현상이 발생한다. (고로 증명하기 위해 소스를 많이 짤 필요가 없을 수도 있다. 재미가 없겠지만..ㅎ)
- C++HowToProgram . . . . 2 matches
Deitel 부자의 C++ 개론 서적. 대학에서 교재로 많이 사용한다.
특히 "잘못된" 알고리즘(닥터도브스저널에 이 책에 실린 알고리즘의 오류를 지적하는 기사가 실렸다)이나 바람직하지 않은 스타일, 이디엄이 많이 있어서 초보자들에겐 극히 위험한 책으로 평가 받기도 한다.
- C++Seminar03 . . . . 2 matches
* 매주 월요일 오후6시부터 시작하여 10시를 maximum 으로 한다.
* CS 에 등장하는 기본적인 개념이나, 프로그래밍을 하는데 기반이 되는 지식에 대해 간단한 세미나를 하기도 한다.
- C++Study_2003 . . . . 2 matches
* 한다고 해놓고 알바 때문에 못 할 가능성이 크네요 ㅡㅡㅋ
알바와 운전면허학원땜시롱,,,,,,역시 뭔가를 포기한다는건 마음 아프군요....혼자라도 열심히 밤새며 공부하겠습니다 -[강희경]
- C++스터디_2005여름/도서관리프로그램 . . . . 2 matches
도서관리프로그램에 책을 등록할 수 있다. - 이 때, 책 이름, 저자, ISBN을 사용자로부터 입력을 받아 새로 구입한 책의 정보를 입력하게 한다.
책을 반납할 수 있다. - 사용자가 책 이름 또는 ISBN 을 입력하면 책을 반납하게 한다.
- C++스터디_2005여름/도서관리프로그램/조현태 . . . . 2 matches
이렇게 짜면 망한다는 사실을 보여주려고..(뭐냐! 원래는 그럴의도가 전혀 없었..짜다보니~ ~_~) 짜버렸다.ㅎ
(참가하고 싶으나 참가를 못하고..C++도 배운적이 없는탓에.(2학기에 한다니까) 전혀 C++답지 않지만 알고리즘은 있으니.ㅎ그거라도)
- CPPStudy_2005_1/Canvas . . . . 2 matches
* * Draw 구현은 단순히 현재 도형이름을 출력하면 된다. 도형 조합은 조합을 이루는 모든 도형 이름을 출력한다.
* registerNewShape - 새로운 도형을 등록한다.
- CartesianCoordinateSystem . . . . 2 matches
프랑스 수학자 데카르트(Descastes)가 제안한 좌표계. 그의 이름을 따서 Cartesian 좌표계라 명명한다.
물제의 위치를 2개의 점의 교차점이라는 개념을 통해서 표현한다.
- CauGlobal/Interview . . . . 2 matches
* 실리콘 밸리에서 원하는 인재상은? 어학능력? 기술?
저도 그 점이 참 고민이에요. 날카로운 지적 감사합니다 :) 일단 학교에서 지원해주는 행사라 학교에서 원하는 답을 만들어주기 위한 의식이 어느정도 작용했던것 같습니다. 만약 형이 이런 기회로 가시게 된다면, 어떤걸 해보고 싶으세요? 힌트가 있으면 정말 도움이 될것 같습니다. --sun
- ChocolateChipCookies . . . . 2 matches
각 테스트 케이스에 대해 지름 5cm인 쿠키 한 개에 들어갈 수 있는 초콜릿 칩의 최대 개수를 나타내는 정수를 하나씩 출력한다. 쿠키가 완전히 가로, 세로 50cm인 반죽 판 안에 들어가야 할 필요는 없다(즉 쿠키가 완전히 원 모양이 아니어도 괜찮다).
서로 다른 테스트 케이스의 결과 사이에는 빈 줄을 출력한다.
- CincomSmalltalk . . . . 2 matches
* 압축을 푼 디렉토리 안에 있는 image 디렉토리 안에 있는 visualnc.im 을 더블클릭한다.
* {{{~cpp ObjectStudio}}} 를 다운받아 압축을 풀고 SETUP.EXE 를 실행하여 설치한다.
- Class . . . . 2 matches
음.. 나만의 생각일지는 모르겠는데... 물 시리즈로 모델링을 한다면 물 클래스를 상속받는 지하수 클래스, 해수 클래스 등등으로 보통 가지 않남?;
- 염분의 각 원소들은 원소의 형태보다는 화합물의 형태로 존재한다.
- CodeYourself . . . . 2 matches
요즈음, 신입생들이 숙제때문에 고민을 많이 하는 것으로 알고있다. 프로그래밍, 조금 더 구체적으로 말하자면 C언어, 에 대해서 전혀 모르는 상태에서 일기를 프로그래밍 형식으로 써 보라니. 신입생의 입장에서는 어이가 없겠지만, 나의 생각은 조금 다르다. 오히려 이러한 과제를 내 주신 교수님이 어떤 분인지 궁금할 정도로 흥미있고 유익한 과제라고 생각한다.
C언어로 일기를 쓰라는 숙제가 있었나요? 재미있네요. 그런데 이건 좀 어려운 과제 같습니다. 왜냐하면, 프로그래밍의 일상적 시간 흐름과 정반대가 되기 때문입니다. 무슨 말이냐면, 프로그래밍이라는 행위는 시간의 순방향입니다. 내가 작성한 프로그램은 미래에 일어날 사건(실행)에 대한 청사진이죠. 하지만 일기는 주로 시간의 역방향입니다. 과거에 일어났던 일들을 정리, 기록하는 성격이 강하죠. 프로그램으로 과거의 일을 기록한다는 것은 어찌보면 쉽지만 또 어찌보면 매우 어려운 문제일수도 있습니다. 신입생 입장에서는 시간의 흐름에 따라 일어났던 과거의 이벤트 연속을 적는 수준이면 될 것 같습니다. 아쉬운 것은, 이렇게 되면 조건 분기문을 활용하기가 어렵다는 점입니다. 힌트를 준다면, 리팩토링을 하면 가능합니다(내 하루의 중복을 어떻게 제거할지 생각해 보세요 -- higher-order function이 나올 정도면 상당히 진전된 것입니다). 어차피 과거의 기록 역시 "기술"(description)의 일종이고, 미래의 계획도 "기술"이니까요.
- CommentEachOther . . . . 2 matches
전에도 느꼈었고, 여러 대가들께서도 자주 말씀하시곤 하는데, 자신의 코드의 퀄리티를 높이려면 남이 만들어놓은 소스를 보라는 이야기가 있다. 이 글을 읽는 분들도 동의하리라 생각한다. CommentEachOther 는 [AOI]나 LittleAOI 처럼 여러 사람이 한 문제에 대한 풀이를 올리고 그것들에 대한 코멘트를 하는 스터디라 할 수 있겠다. 여기서 코멘트라 함은 소스코드에서 명령문 옆에 붙이는 간단한 부연설명이 될 수도 있겠고, 코드 전체에 대한 비평이나 느낌일수도 있다. 처음에는 간단한 문제로 시작해서 디자인 principle 이 들어가있는 프로그램으로 횟감의 스케일을 키워나가는게 어떨까 생각을 한다. 나는 그냥 제안하는 입장이고, 간혹 간단하게 작성한 소스를 올리는 정도로만 참여하도록 하고, 적극적인 참여를 할 사람들이 생기면 이곳에 문제와 자신의 코드를 올리고 토론을 해봤으면 좋겠다. 토론의 방법이야 오프라인 모임에서 하거나 따로 코멘트 페이지를 만들거나. 자. 다들 어떻게 생각하시는지? 참여할분들(!) 계시면 아래에 참여자 목록과 문제를 업로드해 주셨으면.~ - 임인택
- CommonPermutation . . . . 2 matches
입력된 각 테스트 케이스마다 한 줄씩 x를 출력한다. 위의 조건을 만족하는 x가 여러 개 있으면 알파벳 순으로 맨 앞에 있는 것을 출력한다.
- ComposedMethod . . . . 2 matches
인간과 의사소통이 잘되는 프로그램을 원하는가? 메소드의 이름을 지을때 의도가 잘 드러나게 짓자.
'''당신의 프로그램을 하나의 동일화된 작업을 수행할수 있는 메소드들로 나눠라. 모든 메소드는 같은 수준의 추상화를 유지해야 한다. 이는 자연스럽게 여러개의 작은 메소드를 만들어내게 될 것이다.'''
- ComputerNetworkClass . . . . 2 matches
실용적 수준의 네트워킹 기술을 공부한다.
수업을 듣기전에 TCP/IP socket programming 에 대한 입문서를 보고 듣기를 권하며, 수업의 진도를 따라가면서 TCP/IP 서적을 다시 한번 보거나 중급서적을 읽기 시작하면 아주 도움이 많이 될 것이라 생각한다.
- ComputerNetworkClass/Report2006/BuildingWebServer . . . . 2 matches
* 제작 작성해본 결과 HTTP Application 의 기본적인 사항은 에코서버의 연장선에 있습니다. RFC1945 를 확인하면 아주 단순한 형태의 구현만으로도 충분히 간단한 웹 서버의 동작을 구현하는 것이 가능합니다. (물론 이는 웹 브라우저가 RFC1945 의 HTTP-message BNF 의 가장 단순한 형태를 지원한다는 가정하에서 입니다.) CGI, 로드밸런싱을 이용할 수 있을 정도의 구현이 아닌이상 이는 단순한 에코서버의 연장선과 크게 다르지 않습니다. (어쩌면 모든 네트웍 프로그램이 에코서버일지도 -_-;)
프락시 서버 역시도 기본적으로 웹 서버와 동작이 다르지 않으며, Cache 의 방법과 로깅을 처리하는 방식에서 차이만 존재한다고 생각이 됩니다. 물론 핵심적인 부분이기 때문에 각 프락시 서버의 핵심기술이라고 볼 수 있겠지만, 이는 학과의 개인 프로젝트의 수준을 넘는 처리이므로 불필요하다고 보아지는 바, 역시 프락시 역시도 에코서버의 확장형으로 보아도 무방할 듯 합니다.
- ConstructorMethod . . . . 2 matches
그래서 Constructor Method를 쓰기를 권한다. 즉 인스턴스를 똑바로 만들어주는 각각의 메소드를 추가해주는 것이다.
''DesignPatterns 로 이야기한다면 일종의 FactoryMethod 임.(완전히 매치되는건 아니고, 어느정도 비슷) 비교적 자주 사용되는 패턴인데, 왜냐하면 객체를 생성하고 각각 임의로 셋팅해주는 일을 생성자 오버로딩을 더하지 않고서도 할 수 있으니까.
- Cracking/ReverseEngineering/개발자/Software/ . . . . 2 matches
기존 배우고 있던 것들과는 별개로 Cracking에 대한 것들을 익혀야한다. (여기서 Cracking은 시스템 전반에 관한 지식을 익혀 그것을 악용 하는 것이다.)
Jeffrey Richter의 Programming Applications for Microsoft Windows란 책을 추천한다. 현재 4th edition까지 나온 상태이다. 물론 한글판은 없다.
- CrcCard . . . . 2 matches
Class - Responsibility - Collaboration Card. 보통은 간단한 3 x 5 inch 짜리의 인덱스카드(IndexCard)를 이용한다.
ResponsibilityDrivenDesign 에서 OOP 를 이야기할때 '객체를 의인화'한다. CrcCard Play는 이를 돕는다. 즐겁게 객체들을 가지고 노는 것이다.
- DataCommunicationSummaryProject/Chapter4 . . . . 2 matches
* TDMA는 단지 시간의 일부로 각각의 사용자들에게 전송이나 받는걸 허용한다. 각각의 사용자에게 가능한 수용능력은 더 많은 타임 슬롯을 할당흠으로써 늘릴수 있다.
* PMR은... (해석 안됨) 그것은 많은 PMR 터미널의 주인들이 그들을 일반적인 셀 전화기로 사용함에도 불구하고, 보다 빠른 콜 셋업과 다른 것들, 회의 콜링 같은 것들을 제공한다.
- DataStructure/Tree . . . . 2 matches
* n0을 잎사귀 노드의 갯수, n2를 Degree가 2인 노드의 갯수라고 하면 n0 = n2 + 1 이라는 공식이 성립한다.
* Binray Search Tree 니까 당연히 Binary Tree 여야 한다.
- Debugging . . . . 2 matches
어디서부터 시작할 지 생각한다.
누군가에게 설명한다
- DebuggingSeminar_2005/AutoExp.dat . . . . 2 matches
내가 만든 형태도 여기에서 일반형으로 표현이 가능하다. (수정은 좀해야한다.)
Visual C++ .net 에 있는 파일이다. {{{~cpp C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\Debugger}}} 에 존재한다.
- DecomposingMessage . . . . 2 matches
메세지를 다루는 또 다른 방법은 여러 개의 조각으로 나누는 것이다. 리팩토링의 ExtractMethod이다. 스몰토크는 잘게 쪼개는 것을 좀 더 공격적으로 한다. 그래서 한 메소드의 길이가 3-4줄정도밖에 안된다고 한다. 이것이 가능한 이유는 스몰토크는 다른 언어에 비해 높은 수준의 추상화를 제공해주기 때문이다. self 에게로 메세지를 보내자.
- DesignPatternSmalltalkCompanion . . . . 2 matches
다음과 같은 이유에서 DesignPatterns (이하 GoF)를 먼저보고 보거나 같이 보는 것을 추천한다.
* DPSC는 GoF를 보충하는 기능을 한다. GoF에서의 내용과 비슷해보이지만, 군데군데 부연된 내용들이 보인다.
- Devils . . . . 2 matches
두 단체의 차이점은, [데블스]는 다수 회원이 겹쳤지만, [제로페이지]와 완전한 독립 단체를 선언하고 활동하였으며, [폴리곤]은 [제로페이지]내의 작은 소모임으로 존재한다.
[Devils]의 발음에 대한 토론은 굉장히 많았으며, 창립멤버들이 '''[데블스]'''로 읽기로 결정해서 의견을 존중한다.
- DispatchedInterpretation . . . . 2 matches
인코딩은 프로그래밍에 있어서 필수적이다. 데이터가 계산으로부터 분리되어 있던 과거에는, 인코딩 작업은 매우 중요했다. 삑사리 한번 내면 돈 겁나 많이 들었다. 하지만 객체지향 시대에는 좀 다르다. 인코딩은 두번째로 밀려나고 객체들 사이의 책임을 분배하는 것이 가장 중요하게 된 것이다. 잘짜여진 OO 프로그램에는, 어떠한 정보에 관심을 가지는 객체가 하나밖에 없어야 한다. 그 객체는 자신의 정보에 직접 접근하고, 은밀하게 인코딩과 디코딩을 수행한다.
- DoubleBuffering . . . . 2 matches
1. 화면에 그림 중 일부를 변경, 이동 할때(공의 움직임 따위) 기존의 화면을 일부 지우고 새로운 그림을 그려야 한다.
* 이렇게 자원 할당 다 해주고, 더블 버퍼링을 하고 싶다고 한다면.. 일단 메모리 DC에 필요한걸 다 그린 다음에, 화면 DC로 BitBlt 해주는겁니다. 이게 더블 버퍼링인데.. 저는 잘못 이해하고 있었거든요. 개념은 알았지만.. 무슨 이상한 생각을 조금 더 해버려서.. 지난번의 그 이상한 코드가 나오게 되었던 겁니다. 훗날 본인도 못 알아보는..--;
- DrawMacro . . . . 2 matches
{{{applets/TWikiDrawPlugin/}}}로 가서 {{{gmake}}} 혹은 {{{make}}} 명령을 하여 설치한다.
윈도우즈의 경우는 다음의 파일을 받아서 직접 압축을 풀어준다. {{{applets/TWikiDrawPlugin/}}}twikidraw.jar 및 *gif 파일이 있게끔 해야 한다.
- EightQueenProblem/임인택 . . . . 2 matches
처음에 시작 call 을 좀 이상하게 한다. loop 을 돌면서 첫번째 라인의 원소에 대한 get_Queen()함수를 호출한다. 생각에는 get_Queen(0,0); 처럼 호출하는게 가장 이상적이라고 생각하는데..--;
- EmbedAudioFilesForFireFox . . . . 2 matches
웹 페이지에 Embed된 오디오 파일을 FireFox에서 수월하게 재생시키기 위해서는 아래와 같이 type 속성을 주고 플레이어의 크기를 명시적으로 적어줘야 한다.
embed는 W3C에서 정의한 표준에 위배되는 방법이다. 표준을 통과하면서 IE, Firefox에서 재생시키려면 다음과 같이 작성한다.
- EnglishSpeaking/TheSimpsons/S01E04 . . . . 2 matches
* 호머는 가족들을 데리고 번즈 사장의 집에서 열리는 (의무적으로) 회사 연회에 참가한다. 번즈 사장은 화목해보이지 않는 가족은 해고해버리려고 하고 호머는 번즈 사장 앞에서 가족들이 화목한 '척'을 하려고 한다. 하지만 바트와 리사는 사고를 치고, 마지는 펀치를 마시다가 술에 취해버린다. 호머는 바트에게 5달러를 주고 뽀뽀를 받는 등 부자연스러운 연기를 하는 반면 진실되게 서로를 존중해주는 다른 가족들을 보며 자신의 가족에 문제가 있음을 알고 실의에 빠진다. 모의 술집에서 고민하던 호머는 TV 광고를 보고 마빈 몬로 박사의 가족 치료 센터에서 이 문제를 해결하고자 가족들을 데리고 간다. 하지만 호머를 비롯한 가족들은 어째 몬로 박사의 다양한 치료법들이 모두 역효과를 불러 일으킨다. 하지만 만족하지 못하면 2배 가격으로 환불해줘야 하는 치료 센터의 규정 덕택에 심슨 가족들은 오히려 돈을 벌게 되고 이로 인해 가족들에게 행복(?)이 찾아온다.
- ErdosNumbers/문보창 . . . . 2 matches
/* 여기까지가 에르되시의 수 1을 구한다. */
if (isCheck) // 기존 맵에 존재한다면 추가
- Eric3 . . . . 2 matches
무료 Python IDE. 제공하는 기능이 꽤 많은듯 하다. [Refactoring]을 지원하는게 가장 큰 기능중의 하나가 아닐까 생각한다.
- EuclidProblem/차영권 . . . . 2 matches
유클리드 호제법과 디오판토스 방정식에 대해 공부해 볼 수 있는 좋은 기회였다고 생각한다.
// X, Y값을 계산한다
- ExplicitInitialization . . . . 2 matches
초기화에 대해서는 딱히 정해진 좋은 방법이 없다.(상황에 따라 택일해서 쓰라는 말) 이 패턴은 유연성보다는 가독성을 중시한다. 모든 초기화를 하나의 메소드에 때려넣는 방법이다. 유연성은 떨어질 수 밖에 없다. 변수 하나 추가하자면 ExplicitInitialization 메소드를 수정해야만 한다는 것을 기억하고 있어야 하기 때문이다. ExplicitInitialization은 LazyInitialization보다 비용이 많이 든다. 모든 변수를 인스턴스가 생성될때 초기화 하기 때문이다.
- ExploringWorld/20040412-세상읽기 . . . . 2 matches
"영문학의 대작을 읽은 적이 없다는 과학자들의 뉴스를 듣고 이들은 동정어린 쓴웃음을 던진다. 그들은 과학자들을 무지한 전문가라면서 무시한다. 하지만 그들 자신의 무지와 '전문적인 바보' 모습도 사람들을 놀라게 한다. 나는 전통적인 문화의 기준에서 높은 수준의 교육을 받았다는 사람들의 모임에 참석한 적이 있는데, 그들은 과학자들의 무지에 불신을 표명하는 데 상당히 재미를 붙인 사람들이었다. 내가 도저히 참을 수 없어서, 당신들 가운데 열역학의 제 2 법칙을 설명할수 있는 사람이 몇이나 되느냐고 물었다. 대답은 냉랭하고 부정적인 것이었다. 나는 '당신은 셰익스피어 작품을 읽은 일이 있소?'라는 질문과 맞먹는 과학의 질문을 던졌던 것이다. 그보다 더 쉬운 질문, 이를테면 '질량 혹은 가속도란 무엇인가?'(이는 '당신은 읽을 줄 압니까?'라는 것과 동등한 과학상의 질문이다.)라고 물었다면 ... 열 명에 하나가 내가 그들과 같은 언어를 사용한 것 정도는 느꼈으리라고 믿는다....가장 현명하다는 사람들 대부분은 물리학에 관한 한 말하자면 신석기 시대 선조들과 거의 같은 수준의 통찰력 밖에 가지고 있지 않는 것이다."...
- ExtremeBear/OdeloProject . . . . 2 matches
* tdd와 PairProgramming 을 익숙하게 단련한다.
* 내일은 간단한 문제로 호흡을 마추어 보도록한다.
- ExtremeBear/VideoShop/20021105 . . . . 2 matches
* TDD 를 상대적으로 초보인 사람과 PairProgramming 을 해서인지 페이스를 느리게 한다는 의미를 실감할 수 있었다. (세부적으로 전부 테스트)
* 11월 13일까지 TDD와 PairProgramming 을 익숙하게 단련한다.
- FactorialFactors/이동현 . . . . 2 matches
이렇게 배열을 잡은 이유는 예를들어 나중에 16의 인수의 개수를 구한다면 16 = 8x2 이므로 fac[16] = fac[8]+1 = 4가 된다.
//n!이므로 알고리즘상 2는 사전에 미리 처리하고 3~n까지 각각의 수에 대하여 인수를 계산한다.
- FifteenSecondsRule . . . . 2 matches
어떤 시스템/프로그램이 있을 때, 모든 개념적 단위(예컨대 패키지, 모듈, 클래스, 메쏘드 등)를 개발자 자신이 15초 이내에 설명할 수 있어야 한다는 "15초 룰"의 확장판이 꽤 유용할 때가 많습니다. 이런 식으로 설명을 모두 마쳤을 때는 소스 코드 전부를 설명한 셈이어야 합니다.
만약 이것이 불가능하다면 왜 그렇고, 어떻게 해야 그것이 가능할지(예컨대, 특정 개념을 표상하는 새로운 어휘를 고안한다든지, 추상 수준이 다른 것을 한 곳에 섞지 않는 것 등) 고민해 보면 많은 것을 배우게 됩니다.
- FooBarBaz . . . . 2 matches
* Programming Language 서적에 나오는 예제 코드에 Foo, Bar, Baz 등의 단어가 자주 등장한다.
이외에도 foo와 baz 는 속어로도 쓰이는데 우리말로는 '쳇, 제길' 정도로 쓰이고, 온라인상에서는 ''Excuse me'', 정도의 뜻으로 쓰인다고 한다. (PC통신이나 인터넷이 발달하면서 신조어가 생기거나 기존에 있던 어휘에 새로운 뜻이 첨가되는것은 우리나라에만 해당되는것은 아닌듯 하다)
- GDBUsage . . . . 2 matches
쉘로 탈출해 해당 명령어를 수행후 복귀한다.
해당 명령어에 대한 설명을 출력한다.
- GotoStatementConsideredHarmful . . . . 2 matches
주로 JuNe 과 [jania] 의 토론을 읽으면서 이해를 하게 된 논문이다. '실행시간계'와 '코드공간계' 의 차이성을 줄인다는 아이디어가 참으로 대단하단 생각이 든다. 아마 이 원칙을 제대로 지킨다면, (즉, 같은 묶음의 코드들에 대한 추상화도를 일정하게 유지한다던가, if-else 의 긴 구문들에 대해 리팩토링을 하여 각각들을 메소드화한다던가 등등) 디버깅하기에 상당히 편할 것이고(단, 디버깅 툴은 고생좀 하겠다. Call Stack 을 계속 따라갈건데, abstraction level 이 높을 수록 call stack 깊이는 보통 깊어지니까. 그대신 사람이 직접 디버깅하기엔 좋다. abstraction level 을 생각하면 버그 있을 부분 찾기가 빨라지니까), 코드도 간결해질 것이다.
- HardcoreCppStudy/두번째숙제/This포인터/변준원 . . . . 2 matches
했을때 Save함수 내에 GetA라는 함수를 호출한다고 하면 다음과 같이 사용이
다른 클래스의 함수에서 c라는 클래스의 포인터로 GetA를 호출한다고 하면
- HardcoreCppStudy/첫숙제/ValueVsReference/김아영 . . . . 2 matches
- 인수를 전달할 때에는 함수에 전달되는 인수가 포인터라는 사실이 함수 정의와 프로토타입에 반영되어야 한다.
- 함수내에서 전달된 변수를 사용하기 위해서 간접(indirection) 연산자를 사용해야 한다.
- HaskellLanguage . . . . 2 matches
* 저 위에보면, featuring static typing, higher-order functions, polymorphism, type classes and modadic effects 라고 있는데, 이것들이 아마 haskell language의 큰 특징들이 아닐까 한다. 각각에 대해서 알아두는게 도움이 될듯. ([http://www.nomaware.com/monads/html/ monad관련자료])- 임인택
함수를 정의할 때 한 곳에 모아두어야 한다. 따라서 다음은 오류이다.
- HelpMiscellaneous . . . . 2 matches
좀 더 유연한 페이지 이름을 접근하는 방식을 제공하는 것이 바로 페이지 이름의 별명을 지원하는 것입니다.
키워드를 지원하게 해주는 플러그인 - 위키위키의 전통적은 분류방식을 대체하기 위해 지원하는 플러그인입니다.
- HelpOnLinking . . . . 2 matches
* Wiki:SixSingleQuotes 를 이용한다.
WikiName과 같은 식으로 연결되는 것을 방지하고 있는 그대로 보여지는 것을 원한다면 느낌표(''bang'')를 다음과 WikiName앞에 붙여서 다음과 같이 사용할 수 있습니다. {{{!WikiName}}} `!WikiName`. 또한 물음표를 임의의 단어 앞에 붙이면 강제로 링크가 걸리게 됩니다. i.e. {{{?Hello}}} `?Hello`.
- HelpOnPageCreation . . . . 2 matches
페이지를 만드는 방법은 여러가지 방법이 있습니다. 그중에 위키에서 일반적으로 권고되는 방법으로는 먼저 원하는 페이지로 가서 편집을 해서, {{{FoobarPageName}}}이나 , {{{[[어쩌고페이지]]}}}식으로 위키링크를 본문에 집어넣고 저장을 합니다. 이렇게 하면 새롭게 갱신된 페이지에 새로운 링크가 생기게 되는데, {{{FoobarPageName}}} 혹은 {{{[[어쩌고페이지]]}}}라는 위키링크가 새로운 페이지를 가리키게 됩니다. 새로운 페이지는 아직 없기 때문에 새롭게 만들어진 위키링크는 색상이나 모양이 약간 다른 형태로 보이게 됩니다. 이것을 클릭하면 페이지를 새로 만들것이냐는 대화 메시지 혹은 비슷한 이름을 가진 페이지 목록을 보여주게 되며, 원한다면 새롭게 페이지를 만들 수 있게 됩니다.
- HereAndNow . . . . 2 matches
지금 여기가 가장 중요하다. 지금, 그리고 여기에서 이루지 못하면 그곳, 그리고 그때에도 이루지 못한다.
소스안에서 중복이 훤히 보이나 수정은 안하는 실정.. 항상 프로그램 다짜고, 리펙토링이나 해야지.. 라고 말하곤 한다. '이놈의 숙제만 없어도.'라고 입버릇 처럼 중얼거리나, 숙제가 없어진다고 리펙토링을 할까?
- HowManyFibs?/1002 . . . . 2 matches
피보나치 수가 굉장히 크게 늘어나는 수라는 점을 생각했더라면, input space 가 크더라도 fibo(n) 의 n 값이 커지지 않을 것이라는 것을 미리 알고 있었더라면 저런 고민을 안했을 것 같긴 하다. 하지만, 이러한 사전지식이 없는 가운데, 문제를 풀라고 한다면 어떻게 접근하는게 가장 좋았었을까. 고민된다.
* bigint 를 지원하는 python 이나 matlab 같은 언어에서는 더 할일이 없는 문제. 내가 공식 궁리하는 동안 옆의 분이 matlab 으로 10분만에 풀어버리다. 흑.
- HowManyPiecesOfLand?/문보창 . . . . 2 matches
이론상으론 O(1) 시간만에 되겠지만 문제는 입력범위가 2 <sup>31</sup> - 1 까지 들어올 수 있기 때문에 고정도 연산을 수행해야 한다. GNU C++ 이나 Java는 고정도 연산을 수행할 수 있는 클래스를 포함하고 있으나, 윈도우 C++에는 없다(혹, 내가 못찾는 것일수도 있다). 따라서 고정도 연산을 수행할 수 있는 클래스를 짰다. 성능이 너무 떨어진다. O(1) 을 O(n<sup>5</sup>) 정도로 바꿔 놓은 듯한 느낌이다. 이 Class를 개선한뒤 다시 테스트 해봐야 겠다.
// 지원하는 연산 : +(덧셈), -(뺄셈), *(곱셈), /(나눗셈) - 나눗셈 연산에서 나머지는 버린다.
- ISAPI . . . . 2 matches
* IIS(Internet Information Services)란 웹 서버, FTP 서버와 같이 기본적이고 범용적인 인터넷 서비스를 시스템에서 제공할 수 있게 해주는 소프트웨어를 말한다. 기존 윈도우2000 제품군의 경우 기본적으로 IIS 5.0을 제공하였고 윈도우XP의 기존 IIS 5.0의 기능을 개선한 IIS 5.1을 제공하고 있다. 한 마디로 HTTP, FTP, SMTP 서버의 묶음이다.
Internet Server Application Programming Interface 의 약자로 개발자에게 IIS 의 기능을 확장할 수 있는 방법을 제공한다. 즉, IIS 가 이미 구현한 기능을 사용해서 개발자가 새로운 기능을 구현할 수 있는 IIS SDK 다. 개발자는 ISAPI 를 이용해서 Extensions, Filters 라는 두 가지 형태의 어플리케이션을 개발할 수 있다.
- IdeaPool . . . . 2 matches
* 우리는 아이디어를 갖고 있어도 어떠한 사정에 의해 실현(혹은 개발)까지 이르지 못하기도 한다. 따라서 모두의 아이디어를 공유한다면 프로젝트를 비롯한 각종 활동 사항에 촉진제가 될 것이다.
- InternalLinkage . . . . 2 matches
C++ 에서 SingletonPattern 을 구현할때 다음과 같은 방식을 사용하고는 한다.
하지만 InternalLinkage가 초례하는 문제는 1996 {{{~cpp ISO/ANSI C++ }}} 표준화 작업에서 인라인함수(InlineFunction)를 ExternalLinkage 로 변경해서 문제가 되지 않는다.(최근의 컴파일러들은 지원한다.).
- IsBiggerSmarter?/문보창 . . . . 2 matches
단순히 Greedy 알고리즘으로 접근. 실패. Dynamic Programming 이 필요함을 테스트 케이스로써 확인했다. Dynamic Programming 을 실제로 해본 경험이 없기 때문에 감이 잡히지 않았다. Introduction To Algorithm에서 Dynamic Programing 부분을 읽어 공부한 후 문제분석을 다시 시도했다. 이 문제를 쉽게 풀기 위해 Weight를 정렬한 배열과 IQ를 정렬한 배열을 하나의 문자열로 보았다. 그렇다면 문제에서 원하는 "가장 긴 시퀀스" 는 Longest Common Subsequence가 되고, LCS는 Dynamic Algorithm으로 쉽게 풀리는 문제중 하나였다. 무게가 같거나, IQ가 같을수도 있기 때문에 LCS에서 오류가 나는 것을 피하기 위해 소트함수를 처리해 주는 과정에서 약간의 어려움을 겪었다.
이 알고리즘은 답을 산출해 내지 못한다.
- IsThisIntegration? . . . . 2 matches
각 테스트 케이스마다, 위 그림에 나와있는 서로 모양이 다른 세 영역의 넓이의 합을 출력한다. 세 부동소수점수는 모두 소수점 셋째 자리까지 출력한다. 각 케이스의 첫번째 수는 위 그림에서 줄무늬로 표시된 영역, 두번째 수는 점으로 표시된 영역, 세번째 수는 나머지 영역의 넓이 합이다.
- IsThisIntegration?/하기웅 . . . . 2 matches
x= cos t 로 치환하여 삼각 치환법을 이용해서 구한다~ (그런데 왜 잘 안될까??ㅋㅋ)
일단 제일 가운데 부분의 넓이를 구한다.
- JTDStudy/첫번째과제/상욱 . . . . 2 matches
* 내 경험으로는 테스트에 휘둘리기 보다는 테스트를 도구로 여기는 마인드가 중요한 것 같당. 테스트가 우리를 원하는 길로 알아서 인도해주지는 않더라
* 나는 Python이든, Perl이든 반드시 학습 해야된다고 생각한다. 그래야 다른 언어들을 잘 쓸수 있었다. 예를들어 Java Collection Framework를 알고는 있었지만 잘 손이 안나갔는데, STL과 Python을 익히고 나니까 아주 손쉽게 쓰게 되더구나.
- JUnit/Ecliipse . . . . 2 matches
이제 자신이 테스트를 하고싶은 메서드에 원하는 코드를 추가하면 됩니다.
테스팅을 원하는 코드를 추가했으므로, Urs As -> JUnit Test 메뉴를 클릭하여 실행합니다.
- Java Study2003/첫번째과제/곽세환 . . . . 2 matches
높은 수행성능(High-performance)을 제공한다:
다중 스레드(Multi-thread)를 지원한다:
- JavaStudy2002/영동-3주차 . . . . 2 matches
3번째의 코드는 comment solving을 보인거니 감안하십시오. 3번을 그대로 한다면, 입력 데이터와, Bug 사이의 인터페이스를 맞추는 함수가 필요할것입니다.
사소한 것이지만 지적한다면 class main 의 이름을 Main 으로 바꾸시기를 강력(?) 추천합니다. Java 에는 지켜야하는 규칙인 문법외에 [http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html 코딩 약속]을 추천하고 있씁니다. 과거 MS라면 헝가리안표기법 이겠지요? 현재의 .net 에서 헝가리안표기법은 없어졌습니다. --["neocoin"]
- JollyJumpers . . . . 2 matches
각 줄 맨 앞에는 3000 이하의 정수가 있으며 그 뒤에는 수열을 나타내는 n개의 정수가 입력된다. 맨 앞 숫자가 0이면 출력하고 종료한다.
입력된 각 줄에 대해 "Jolly" 또는 "Not Jolly"를 한 줄씩 출력한다
- JollyJumpers/iruril . . . . 2 matches
// 배열의 길이를 구한다(n)
// checkDifferArray[] 를 초기화한다
- JollyJumpers/강희경 . . . . 2 matches
1. gap들의 각기 다른 크기여야한다.(ex)2가 두번 나오면 안된다.)
2. 각각의 gap은 0보다 크고 n보다 작아야한다.
- LIB_2 . . . . 2 matches
코드를 살펴볼까 한다.
이 프로그램이 복귀 가능하게 만들 경우 TSR을 이용한다..근데 지금은 필요 없는듯...
- LUA_4 . . . . 2 matches
>> local inside = 2 -- inside는 local 에서만 쓸 수 있도록 선언한다.
local 이 없이 변수를 선언한다면 함수 밖에서도 값을 참조/변경 할 수 있습니다.
- LazyInitialization . . . . 2 matches
LazyInitialization의 하나의 변수당 두개의 메소드로 나눠서 초기화를 한다. 하나는 변수가 LazyInitialization되는 것을 감추어 주는 getter이고, 다른 하나는 변수에다 디폴트값으로 할당을 해줄 DefaultValueMethod이다. 이 방법은 유연성이 증대된다. 당신이 서브클래스를 만든다면, DefaultValueMethod를 오버라이딩함으로써, 기능을 바꿀 수 있다. 전장에서도 언급했듯이 성능도 증대시킬 수 있다.
별로 안쓸듯하지만... 켄트벡 왈 : 일단은 ExplicitInitialzation으로 출발을 하고, 상속될 거 같으면 LazyInitialization을 사용한다.
- LinuxProgramming/SignalHandling . . . . 2 matches
위키 페디아의 정의를 빌리자면 시그널은 '''한 프로세서와 기타 다른 프로세스 사이에 전송되는 비동기적 이벤트''' 라고 한다.
쉽게 MFC 와 비유하여 설명하는 시그널은 메시지와 비슷하다고 보면 된다. 실제로 signal 함수를 이용해서 우리는 MFC에서 이벤트와 이벤트 핸들러를 연결하듯 프로그래밍을 한다는 사실을 알 수 있다. (이렇게 보면 정말로 유닉스가 C로 짜여있다는 것을 확실하게 알 수 있다.)
- LinuxSystemClass/Exam_2004_1 . . . . 2 matches
Load Balancing 을 위해 단일 process queue 를 둔뒤 Multi CPU 에 배분한다.
Linux 에서의 Memory 관리시 binary buddy algorithm 을 이용한다. 어떻게 동작하는지 쓰시오.
- Lotto/송지원 . . . . 2 matches
|| 입력 ||여러 개의 테스트 케이스, 각 줄의 첫번째 숫자는 6부터 13 사이 임의의 숫자 갯수, 그 뒤에는 첫번째 숫자 갯수 만큼의 정수가 뒤이어 나와야 한다. ||
- MFCStudy_2001/진행상황 . . . . 2 matches
* 차후 일정에서 29일을 마지막으로 한다는걸 30일로 변경하겠습니다. 29일에 ibm에서 세미나가 있어서 갈려고 합니다.
* 차후 일정에서 29일을 마지막으로 한다는걸 30일로 변경하겠습니다. 29일에 ibm에서 세미나가 있어서 갈려고 합니다. --상민
- Marbles/이동현 . . . . 2 matches
프로그램은 다음과 같은 원리로 동작한다.
n2가 작은 수라면 금방 끝나지만 다음과 같은 worst case일때는 약 몇억번의 루프를 돌아야 한다.
- MatrixAndQuaternionsFaq . . . . 2 matches
'''isotropic의 반대가 anisotropic이구요 음음.. anisotropic 한 행렬을 곱하면 이전의 vertex normal 두 다시 계산 해야 한다고 합니다.
그리구.. transform 행렬을 적용시킨 vertex normal은 정규화(크기1로..) 되어있지 않을수 있으니.. 것두 다시 해야 한다고 합니다.'''
- MedusaCppStudy . . . . 2 matches
장문에서 단어의 빈도수를 세서 출력한다. 이때 알파벳순으로 출력. (";" 을 만났을 때 문자열 종료)
정삼각형 해도 되고... 뭘 만들어도 되고... 내가 원하는 건 for나 while, if 설계를 잘하는 거야... --재동
- Metaphor . . . . 2 matches
시스템 메타포를 선정하면 같은 팀내에서 클래스와 메소드의 이름을 일관적으로 정할수 있어 공감대를 형성할 수 있다. (즉 하나의 메타포를 선정하여 공유하면 변수 이름같은 것을 지을때 같은 관점으로 짖게 된다는 의미). 어떤 객체에 대한 이름을 정하는 것은 시스템 전체를 이해하거나 코드를 재사용하는데 매우 중요하다. 만약 메타포를 올바르게 정한다면, 이름이 어떻게 정해지는가를 추측할 수 있게되고 실제로 개발 시간을 크게 절감시켜준다. 구축할 객체에 대한 이름을 위한 시스템(즉 메타포)를 결정할때는 모든 사람이 해당 시스템에 대하여 특별한 지식이 없이도 쉽게 연관되어 질수 있는 것으로 선택해야 한다. 예를 들어 크라이슬러의 지불시스템은 생산라인으로 구축되었다. 포드의 자동차 영업사원들은 BOM(부품표)으로 구조화 되었다. 구축하려고 하는 분야의 메타포를 사용할 수도 있다. 그러나 충분히 단순하지 않다면 영영에 해당하는 메타포를 사용하지는 말아라.
- MoniWikiTutorial . . . . 2 matches
* 이메일주소: 시스템이 이메일을 지원하는 경우에는 자신의 이메일을 등록합니다. 페이지를 구독하거나 비밀번호를 잃어버렸을 때 필요합니다.
한줄의 내용 전체가 같은 개수의 "=" 기호로 둘러쌓여 있는 경우. 이때 "=" 기호와 내용은 공백으로 분리되어 있어야 하며 그 줄은 "="기호의 개수만큼의 깊이를 가지는 제목줄이 됩니다. 예: [[BR]] `== 두번째 레벨 ==`
- MoreEffectiveC++ . . . . 2 matches
* Item 2: Prefer C++ style casts.- 스타일의 형변환을 권장한다.
1. 2002.02.15 드디어 스마트 포인터를 설명할수 있는 skill을 획득했다. 다음은 Reference counting 설명 skill을 획득해야 한다. Reference counting은 COM기술의 근간이 되고 있으며, 과거 Java VM에서 Garbage collection을 수행할때 사용했다고 알고 있다. 물론 현재는 Java Garbage Collector나 CLR이나 Tracing을 취하고 있는 것으로 알고 있다. 아. 오늘이 프로젝트 마지막 시점으로 잡은 날인데, 도저히 불가능하고, 중도 포기하기에는 뒤의 내용들이 너무 매력있다. 칼을 뽑았으니 이번달 안으로는 끝장을 본다.
- NIC . . . . 2 matches
["zennith"]가 사용하고 있는 NIC 는 현재 '''Realtek 8029(AS)''' 이다. 이 NIC 에 대해서 특별히 불만은 가지고 있지 않았지만, 얼마전에 경험하게 되었다. 바로, Linux 에서의 드라이버 지원 문제였는데, 동사의 8139(10/100 mega bit ethernet 카드로서, 대부분 리얼텍 NIC 를 쓴다고 한다면 이8139일 것이다.)는 매우 잘 지원되는 것으로 보였으나.. 단지 10m bit ethernet 인 내 8029 는 너무 오래전에 나온것인지 꽤, 고난과 역경을 겪게끔 하는 그런 카드였다. 그래서, 지금 ["zennith"] 가 알아보고 있는 카드가 두개 있다. 하나는 ACTTON 에서 나온 것과, 또 다른 하나는 그 이름도 유명한 NetGear 에서 나온 10/100 카드이다. 전자의 ACTTON 것은 나름대로 한 시대를 풍미했던 DEC 의 튤립이란 카드의 벌크 제품이라던데... 7000원이라는 가격이 매우 돋보이지만, 이것역시 벌크제품인지라 드라이버 지원문제가 꽤 걸릴거 같아서, 아무래도 NetGear 의 제품을 사게 될 것 같다.
음.. 바로 이런페이지를 zennith/NIC 의 형식으로 만들어야 한다는 이야기 일까요; 음.. 옮겨야 하나.. -["zennith"]
- NotToolsButConcepts . . . . 2 matches
지금 이 순간에 후배들이 같은 질문을 한다면 NotToolsButConcepts 라는 대답을 해주고 싶다(단, 언어도 하나의 툴이라고 가정할 경우). 1, 2년 후배를 받을 때까지는 잘 몰랐지만, [데블스캠프]나 새내기가 참가하는 세미나를 찾아갈 때마다 매번 들리는 소리였다.
저는 이 페이지가 컴퓨터 과학 뿐만이 아니고 대학생들의 공부 전반과 관련된 문제라고 생각합니다. 대학에서 무엇을 배워야 하는가? 무엇을 배우려고 노력해야 하는가? 저는 그것이 도구이건, 개념이건 간에, 그것이 좀더 근본적이고, 그것을 만든 사람의 사유에 근접할 수 있는 것이고, 그것을 배우는 과정에서 자신의 사고 근육을 제대로 단련할 수 있는 것이어야 한다고 봅니다.
- OOD세미나 . . . . 2 matches
* '''추상화는 단일변화에 대해 수정해야 할 사항을 예측가능케 할려고 한다는점 -> 변경 가능성이 있는건 다 추상화하자?'''
확실히 제 경험에 비추어보면 학부과정에서 OOP에 대한 개념을 배울때는 상속, 다형성 등을 배울때 과제는 상속을 이용한 무언가, 오버라이딩, 오버로딩을 하도록 요구했습니다. 심지어 의미없는 프렌드도 쓰도록했었죠ㅎ 물론 가르치는 교수님의 입장에선 직접 써보게하려면 그 방법이 가장 확실합니다. 그렇지만 그렇게 배우고나면 왠지 설계에 대한 별 생각없이 그렇게 하게되더군요. 저또한 미숙하지만 후배들에게 OOP를 왜 쓰고, 어떤 점이 좋은가를 알려주다보니 다시 한번 기본개념에 대해 생각하게되고 그러면서 제대로된 OOP는 뭔가 싶었습니다. (적어도 제 생각엔)'''단지 class쓰고 상속한다고 OOP가 아닙니다'''. OOP의 장점을 이용해야 진정한 OOP입니다.
- ObjectProgrammingInC . . . . 2 matches
결국 private가 없단 소린데... 컴파일 까지만 해서 lib 형태로 header에 public화 할 것만 공개한다면... 불가능이군...
차라리 저 구조체만 다른 lib에 저장시키고 링크를 불가능하게 내부에서만 연산을 한다면 몰라도. return value는 kernel이나 IPC로 넘겨 줘야할 듯.
- OpenGL_Beginner . . . . 2 matches
* 2.10 : Chapter 6장 중반이후, 잠정 유보 ["MoreEffectiveC++"] 1차 요약이 종료되는 2월 말의 시점에서 다시 시작한다.
- 필자는 자신이 제작한 상업용 3D 설계 툴의 소스를 가지고 오고, 라이선스 문제와, 자신이 생각하는 개선점을 고쳐서 다시 작성했다고 한다. 인상 깊었다. 이해하기도 쉽고, 구조적 프로그래밍을 OOP로 옮긴다는 관점에 도움이 되었다. STL 비슷하게 linked list글 구현해 두었고, MEC++의 지식이 도움되었다. MEC++가 허송세월을 보낸것은 아닌 느낌이다. Java3D의 강좌에서도 Java3D의 프레임웍이 좋다고 하는데, 역시 살피는 과정에서 써야 겠다. 문서화 중
- OperatingSystemClass/Exam2002_1 . . . . 2 matches
7. 유한 용량 Message Passing 을 위한 send() 메소드와 receive() 메소들을 완성하시오. send() 메소드는 queue의 공간이 있을때까지 block 하며, 반대로 receive() 메소드는 avariable message가 있을때까지 block해야 한다.
만약 ti 와 Ji와의 차이가 1.0 미만이면 a = 0.3 으로 설정한다면,[[BR]]
- OurMajorLangIsCAndCPlusPlus/print/이도현 . . . . 2 matches
// 소수점아래 7자리까지 출력이므로 소수점 뒤에 0을 제거해야 한다.
// 소수점아래 7자리까지 출력이므로 소수점 뒤에 0을 제거해야 한다.
- OurMajorLangIsCAndCPlusPlus/setjmp.h . . . . 2 matches
메크로 : setjmp() - 기능 : jmp_buf에 현재 스택을 기록한다. 리턴값은 longjmp의 두번째 인자.
함수 : void longjmp(jmp_buf, int) - 기능 : jmp_buf에 기록된 위치로 이동한다.
- OurMajorLangIsCAndCPlusPlus/signal.h . . . . 2 matches
|| __cdecl signal(int, void (__cdecl *)) || 해당 시그널에 동작할 행동을 지정한다. 첫번째 인자가 시그널 번호, 두번째 인자가 행동을 지정한다. ||
- OurMajorLangIsCAndCPlusPlus/stdlib.h . . . . 2 matches
|| void *calloc(size_t nitems, size_t size); || 요청된 메모리 할당 (모든 원소를 0으로 초기화 한다) ||
|| void *realloc(void *ptr, size_t size); || calloc(), malloc()에 의해 할당된 메모리 크기를 재조정한다 ||
- PairProgramming토론 . . . . 2 matches
한편, 보통 숙련자/비숙련자 가 pairing 할때는 한쪽 방향으로 프로그래밍 스타일 등의 무게가 치우쳐지기 쉽다고 생각하는데요. 보통 비숙련자인 사람이 수동적인 입장을 취하는 경우가 많기 때문에.. 다른 한편, 숙련자인 사람이 마음의 벽을 넘지 못하는 우를 범할때에도 비숙련자인 사람이 '내가 저 사람보다 잘 모르니까...' 식으로 끌려가는 경우가 있을수 있다고 봅니다. (실제로 가끔 제가 '설명할 수 없는 부분은 혼란시켜라' 라는 말을 실천에 옮기는 경우가 종종 발생한다는.. -_-;;) -- 강석천
겉으로 보기엔, 왕초보/왕도사의 짝은 상당히 비효율적일 것 같지요. PairProgramming을 한다고 해도, 왕도사가 키보드를 거의 독차지하고, 왕초보가 간간히 던지는 멍청한 질문은 둘(정확히는 왕도사)의 프로그래밍 속도를 늦출 것이고요. 또, 아무것도 못하고 멍청히 지켜봐야만 하는 왕초보 역시 답답할 겁니다. 괜히 질문했다가는 핀잔받기 일수이고. 둘 다 짜증나는 상황이죠.
- Perforce . . . . 2 matches
프로그램은 서버, 클라이언트 환경으로 관리되며, 서버는 소스의 모아서 관리한다. 서버 프로그램은 유닉스, 맥, MSWin 버전으로 제공된다. 클라이언트는 GUI, CMD 버전의 툴을 지원하며 다양한 OS 에서 이용가능하다. 또한 IDE 와 연동역시 지원한다. (IDE에는 3dmax, maya, photoshop, office 등을 포괄하는 방대한 시스템)
- PluggableBehavior . . . . 2 matches
한 클래스의 다른 객체들은 일반적으로 서로 다른 상태와 같은 행위를 가지게 된다. 만약에 다른 로직을 원한다면, 다른 클래스를 쓴다. 우리가 만드는 객체의 90프로는 이렇다. 가끔, 다른 클래스들은 당신이 문제에 대해 어떻게 생각하는가에 대한 효과적인 의사소통을 못 할 수도 있다.(?) 클래스가 많아짐으로써 당신은 짜증이 나고 위협을 받는다. 단 하나의 메소드를 오버라이딩하려고 서브클래싱을 많이 하는것은 낭비다. 또한 이렇게 많이 서브클래싱하면서 유연성이 떨어지게 된다.
* 어느 정도의 유연성을 원하는가?
- PowerOfCryptography/허아영 . . . . 2 matches
// n과 p를 입력받아 k를 출력한다.
// n과 p를 입력받아 k를 출력한다.
- PowerReading . . . . 2 matches
이 책이 재미있는 것중 하나는, 다른 속독관련 서적과는 달리 '이해'를 가장 우선시 한다는 것이다. (Chapter 1 ~ 10 첫번째를 보면 일관되게 Speed 보다 Comprehension 을 더 강조한다.)
- PracticalC . . . . 2 matches
프로그램은 수필처럼 읽혀져야 한다. 즉 가능한 이해하기 쉬고 명쾌 해야한다.
- ProgrammingPearls/Column6 . . . . 2 matches
* 적은 양의 스피드업을 원한다면 가장 고치기 쉬운 부분만을 고치자.
* 많은 양의 스피드업을 원한다면 다단계를 고치자. 한군데를 고침으로써 다른 부분도 고칠것이 생긴다.
- ProjectCCNA/Chapter2 . . . . 2 matches
* ethernet: CSMA/CD- 이더넷 통신에서 사용하는 프로토콜이다. 회선이 사용중이지 않을때 전송하고 충돌이 생기면 일정시간후 재전송한다.
* MAC 주소가 FF-FF-FF-FF-FF-FF 는 브로드캐스트로써 LAN상에 모든 PC에게 데이터를 전송한다.
- PyIde . . . . 2 matches
* Prototyping & 외부 공개소스 Review & Copy & Paste 하여 가능한한 빠른 시간내에 원하는 기능 구현법이나 라이브러리들을 연습하여 익힌뒤, Refactoring For Understanding 을 하고, 일부 부분에 대해 TDD 로 재작성.
* http://codespeak.net/pypy/ - 순수 파이썬으로 구현하는 python 이라고 한다. 관심이 가는중.
- PyOpenGL . . . . 2 matches
2.3x 버전의 경우는 설치할때 NumericPython 과 numpy 등의 모듈들을 같이 설치해주어야 한다.
새 버전의 [PyOpenGL]의 경우 메소드 이름이 약간 바뀌었다. xxxFuncCallback 함수 대신 xxxFunc 식으로 쓰인다. Nehe 의 코드 대신 [PyOpenGL] 인스톨시 같이 인스톨되는 Nehe Demo 프로그램 코드를 이용하기를 권한다.
- PythonLanguage . . . . 2 matches
* Python 을 '실행가능한 의사코드(pseudo-code)' 라고 부르기도 한다. 그만큼 완성뒤 코드를 보면 참으로 깔끔하다.
이미 다른 언어들을 한번쯤 접해본 사람들은 'QuickPythonBook' 을 추천한다. 예제위주와 잘 짜여진 편집으로 접근하기 쉽다. (두께도 별로 안두껍다!) Reference 스타일의 책으로는 bible 의 성격인 'Learning Python' 과 Library Reference 인 'Python Essential Reference' 이 있다.
- PythonThreadProgramming . . . . 2 matches
* 위 소스에서 why 부분,, 왜 sleep을 넣었을까?(만약 저것을 빼면 한쓰레드가 자원을 독점하게 된다) -> Python 은 threadsafe 하지 않다. Python에서는 자바처럼 스레드가 문법의 중요한 위치를 차지하고 있지 않다. 그것보다 이식 가능성을 더 중요하게 생각한다.
* 모든 built-in 함수가 다른 쓰레드가 실행할수 있도록 I/O에 대한 block waiting 을 하는 것은 아니다.(time.sleep(), file.read(), select.select()) 은 예상대로 작동한다)
- RAD . . . . 2 matches
RAD는 우수한 소프트웨어 개발 도구를 이용하여 전통적인 개발 방법보다 더 적은 시간과 비용을 투자하더라도 보다 나은 품질의 소프트웨어를 개발할 수 있는 소프트웨어 개발 과정을 말한다. 이러한 RAD 방식의 개발은 응용 프로그램의 전체 개발 과정을 하나로 통합하여 기존의 반복적이고 점진적인 소프트웨어 개발 과정은 그대로 수용하면서도, 개발 과정 초기에 사용자에게 실행 가능한 기본적인 프로토타입을 제시하여 사용자의 요구를 훨씬 더 명확하게 수용하여 차후에 일어날 수 있는 많은 문제를 줄이고, 설계 과정을 그대로 개발에 재사용함으로써 전체적인 개발 기간의 단축을 꾀하는 것을 목적으로 한다.
- RedundantPower . . . . 2 matches
ups 는 정전이나 순간적인 전력의 약화 시에 ups 안의 내부 전력을 이용하여 컴퓨터의 정상 동작을 보증하지만 Redundant Power 시스템은 Power Suply 를 병렬로 연결하여, 하나의 Power 가 고장 났을 때, 병렬로 연결된 Redundant 로 전원을 계속 공급함으로써 컴퓨터의 정상 동작을 보증한다.
극단적인 예로, redundant power 를 사용시에, 한쪽의 파워를 강제 연결 해지해버려도 컴퓨터는 멀쩡히 잘 동작한다.
- RelationalDatabaseManagementSystem . . . . 2 matches
이 논문에서 이 사람은 대용량 데이터베이스의 저장과 작업에 잇어서 새로운 시스템을 기술한다. 기존의 정렬된 링크드 리스트의 자유로운 형태의 레코드가 아니라, 고정 길이의 레코드를 가진 표를 데이터의 저장에 이용하자는 생각이었다. 링크드 리스트 시스템은 희소한 데이터베이스를 저장하는데 있어서 대단히 비효율적이었다. 관계형 모델에서 이것은 테이블에다 데이터를 나누어서 저장하면서 이를 해결한다.
- RubyLanguage/DataType . . . . 2 matches
* null은 아무 객체도 할당되지 않은 상태를 의미한다.
* nil은 false처럼 동작하며 nil, false 이외의 값은 모두 true처럼 동작한다.
- SRPG제작 . . . . 2 matches
2. 맵에는 이벤트를 추가할 수 있도록 한다.
1. 위에서 만들어진 맵과 이벤트를 사용하여 프로그래밍을 한다.
- STL/list . . . . 2 matches
list 의 반복자는 양방향 반복자로서 임의 접근 반복자가 지원하는 연산을 제외한 기타 모든 연산자에 대한 연산을 지원한다.
- STL/vector . . . . 2 matches
질문 : 상식에 의거해서 실습 해볼 때 저 부분을 {{{~cpp vector<int> ar( &data[0], &data[2] ); }}} 로 했더니 계속 문제가 생겨서.. 오랜 삽질끝에 &data[3] 으로 해야한다는 걸 발견 했습니다. 좀 이상한 것 같네요. {{{~cpp data[3]}}} 이라는 것은 배열의 범위를 벗어나는 연산일텐데요.. 그곳의 리퍼런스를 얻어서 생성자로 넘겨주는게.. 상식에서 거부했나 봅니다. 두번째 인자로 배열 범위를 벗어나는 값을 받는 이유를 혹시 아시는 분 계십니까? --zennith
ar.push_back(3); // ar의 뒤쪽으로 3을 추가한다.
- Self-describingSequence . . . . 2 matches
어떤 값 n이 주어졌을 때 f(n)의 값을 계산하는 프로그램을 만들어야 한다.
각 테스트 케이스에 대해 한 줄에 하나씩 f(n) 값을 출력한다.
- Self-describingSequence/1002 . . . . 2 matches
수열의 값이 늘 증가한다 할때 다음번에 검색하는 경우 앞에서 검색했던 그룹 아니면 그 다음 그룹임을 생각하게 됨.
* 다시금 '이 문제에서 요구한 방법이 이 방법이였을까?' 에 대해서 고민하게 됨. 비록 원하는 성능은 나오긴 했지만.
- SeminarHowToProgramIt . . . . 2 matches
''위의 것을 두시간 동안 다 한다는 것은 -- 세미나 이전과 이후에 사람이 달라지는 수준에서 -- 불가능하고, TDD와 PP, 그리고 DP(RF)를 집중적으로 다루겠습니다. 가능하면 제 구두설명은 짧게 줄이고 나머지 시간은 이 세가지를 직접 실습, 토론하는 시간이 되도록 하겠습니다. 할 것은 많고 시간은 짧습니다. 요즘 저의 "세미나 화두"는 어떻게 하면 "적게 전달"하고 깊이 깨닫게 하거나 혹은 반성하고 또 다양하게 실험해 볼 여지를 많이 제공할 수 있을까 하는 것입니다.''
* 7:30-7:50 강사 도착. TDD 및 RF 시연(Python). 대형 화면을 보고 원하는 커플은 따라할 수 있음.
- ServerBackup . . . . 2 matches
* {{{/etc/group}}} 에 admin 그룹에 원하는 사용자 추가, {{{/etc/sudoers}}}에서 사용자 제거
* 해결 ~ admin 그룹에 원하는 사용자 추가
- SisterSites . . . . 2 matches
1. bsddb 셋팅 - python 2.1 쪽 shell 로 들어가서 다음을 입력한다.
* 처음 SisterSite 돌릴때 bsddb 로 db 화일 만들어줘야 한다. 저거 해당 화일 없을때는 1번은 실행되게끔 수정해주기.
- SmallTalk/강좌FromHitel/강의3 . . . . 2 matches
층인지, 그리고 이 사람들이 어떤 것을 원하는지를 조사하기 위한 수단이라
결국 "본"은 시간이 흐름에 따라 자꾸 자꾸 변한다는 것을 알 수 있습니다.
- SmithNumbers/이도현 . . . . 2 matches
/* 문자열로 저장된 수를 아스키코드 값을 변환하여 array에 저장한다. */
/* 배열에 저장한다. */
- Spring/탐험스터디/wiki만들기 . . . . 2 matches
* Spring Security의 Role Voter는 "ROLE_" 접두어를 사용한 접근 속성만 처리한다. 단 접두어는 커스터마이징이 가능하다.
* ''CGLIB는 코드 생성 라이브러리로서(Code Generator Library) 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공(펌)'' 이라고 한다.
- StacksOfFlapjacks . . . . 2 matches
각 팬 케이크 스택에 대해 원래 스택을 한 줄로 출력해야 하며 다음 줄에는 가장 큰 팬 케이크가 맨 밑으로, 가장 작은 팬 케이크가 맨 위로 올라가도록(팬 케이크가 클수록 밑으로 가도록) 스택을 정렬하기 위해 필요한 뒤집기 순서를 출력해야 한다. 뒤집기 수선를 출력한 후 맨 뒤에는 더 이상 뒤집지 않아도 된다는 것을 나타내는 0을 출력해야 한다. 스택 정렬이 끝나면 더 이상 뒤집지 않는다.
- StandardWidgetToolkit . . . . 2 matches
* swt.jar 를 classpath 에 잡고 다음 소스를 컴파일 한다.
* 실행을 시키기 위해서, 실행되는 위치에 swt-win32-2133.dll (Windows 경우)가 있어야 한다.
- StructureAndInterpretationOfComputerPrograms . . . . 2 matches
그리고 전산학쪽 커리큘럼과 관련하여 쓸만한 예제들이 돋보인다. (좀 어렵긴 하겠지만.) 그리고 중간에 Scheme 코드를 일반언어로 읽는 방법에 대해 이야기한다. (이 또한 Abstraction 의 관점이랄까.)
국내에서 [http://pl.changwon.ac.kr/sicp/sicp_data.html 창원대학교]와 [http://ropas.kaist.ac.kr/~kwang/320/02/ 카이스트] 에서 교재로 이용하고 있다. 고대 에서도 과거 가르친적이 있다고 한다. 현재는 아니지만.
- SuperMarket/인수 . . . . 2 matches
cout << "* deposit <money> -- 돈을 money만큼 예금한다. " << endl;
cout << "* cancel <product> <count> -- 산 product 물건을 count개만큼 취소한다 ." << endl;
- TAOCP . . . . 2 matches
* 참고자료로 볼 수 있도록 위키페이지에 정리한다.
[삼색볼펜초학습법]으로 책을 읽고 모임을 가진다면 더 좋겠다는 생각을 한다.
- TCP/IP . . . . 2 matches
이렇게 하면 다른 애플리케이션 역시 쓰여진 소켓을 읽을 수 있고 그 역도 성립한다.
* Interactive Shell이 지원되는 언어(e.g. Python, Ruby, ...)를 사용하면 TCP/IP의 개념을 아주 빠른 시간 안에 배울 수 있음. (Python은 내부적으로 C 라이브러리를 그대로 사용) 또, 현재 개발된/개발중인 시스템을 테스트 하는 데에도 매우 편리함. 예컨대, 리코에서는 XMLRPC 서버 접속을 파이썬 쉘에서 하고(import xmlrpc 한 다음에...), 거기서 사용자 등록 등의 서비스를 직접 사용하게 한다.
- TestDrivenDevelopment . . . . 2 matches
테스트를 작성할때엔 '이미 완성되어있는 잘 된 API' 를 상상하며 작성한다. 잘 만들어진 API는 같은 일을 하더라도 직접 호출해줘야 하는 함수의 갯수가 적고 이해하기 편하며 '무엇'을 해주는지 그 메소드가 말해준다. 적게 코드를 써도 많은 일을 해주는것이다. 그리고, 테스트로서 컴퓨터의 컴파일러에게 코드작성을 위해 해야 할 일들을 묻고, 인터페이스를 만들고. 그리고 구현하고, 다시 구현된 코드를 Refactoring 한다.
- TheGrandDinner/조현태 . . . . 2 matches
//// 연산을 수행한다. ////
//// 결과를 출력한다. ////
- TheJavaMan/비행기게임 . . . . 2 matches
- 미사일의 파워 : 같은 종류의 적 비행기를 미사일에 성능에 따라 두번 맞춰야 터지는 경우가 있는가 하면, 한발로 적 비행기를 폭파시키고도 미사일이 계속 나가는 경우도 있다.(이 부분은 미사일에 HP개념을 두어, 미사일과 적기가 접촉하면 같은 속도로 HP가 깎이면서 먼저 HP가 0이되는 것이 터지는 방법으로 구현한다)
- HP, MP는 일정 점수 단위를 넘을때마다 상승한다.(디아블로로 치면 '피가 빨린다'는 표현이 된다) 레벨업도 일정 점수가 넘으면 오른다.(미사일의 파워, HP, MP, 스킬의 파워가 오르고 비행기의 모습 등등이 바뀔수도 있다)
- TheJavaMan/숫자야구 . . . . 2 matches
dispose(); // 모든 자원을 반납한다.
System.exit(0); // Program을 종료한다.
- ThePriestMathematician . . . . 2 matches
그 영리한 수도사가 제안한 네 개의 침을 사용하는 방법으로 원반을 옮기는 횟수를 계산하자. 원반은 한 번에 하나씩만 옮길 수 있으며 큰 원반을 작은 원반 위에 놓을 수는 없다. 이동 횟수를 구하려면 먼저 원반 이동 횟수를 최소화시킬 수 있는 k값을 구해야 한다.
입력된 각 줄에 대해 N개의 원반을 최종 위치로 옮기는 데 필요한 이동 횟수를 출력한다.
- TheWarOfGenesis2R/ToDo . . . . 2 matches
* 몬스터 정보를 추가할 수 있어야 한다.
* 이벤트 정보를 추가할 수 있어야 한다.
- TicTacToe . . . . 2 matches
* 사람 두 명이 O와 X를 번갈아 놓으면서 3목을 먼저 만드는 게임을 한다.
Player1과 Player2 중 승자를 출력한다.
- Trac . . . . 2 matches
Trac(트랙) 은 소프트웨어 개발 프로젝트를 위한 위키 이자 이슈 트래킹 시스템이다. Trac은 웹 기반 소프트웨어 프로젝트 관리에 대해서 미니멀리스트적인 접근법을 취한다. 우리의 미션은 개발자들이 위대한 소프트웨어를 작성하는 것을 도우면서도, 그들의 방식에 대해 간섭하지 않는 것이다. Trac은 가능한한 팀에 이미 정착된 개발 프로세스와 정책에 대해서 덜 간섭해야 한다.
- TwistingTheTriad . . . . 2 matches
C++ 시스템의 Taligent 로부터 유래. Dolphin Smalltalk 의 UI Framework. 논문에서는 'Widget' 과 'MVC' 대신 MVP 를 채택한 이유 등을 다룬다고 한다. 그리고 MVC 3 요소를 rotating (or twisting)함으로서 현재 존재하는 다른 Smalltalk 환경보다 쓰기 쉽고 더 유연한 'Observer' based framework 를 만들 것을 보여줄 것이다.
고 한다. -_a
- UglyNumbers . . . . 2 matches
처음 수는 1로 시작하도록 한다. 입력은 받지 않고, <number> 에 1500번째 심술쟁이 수가 출력되게 한다.
- UglyNumbers/1002 . . . . 2 matches
하지만, 결과값을 보면서 지수 스타일의 접근법이 원하는 접근법이라는 생각을 하게 되다. (10억이 넘는다 할때, isUglyNumber 식이라면 10억번이 실행된다.) 하지만, 그냥 지수로만 생각하면 uglynumber 의 순서 상 맞지 않을 것인지라 (1 : 2^0*3^0*5^0, 2 : 2^1*3^0*5^0, 3 : 2^0*3^1*5^0, 4 : 2^2*3^0*5^0 ... 0,0,0 , 1,0,0, 0,1,0 , 2,0,0 .. 도무지 숫자들 간의 연관성이 잡히지 않았다.
그러다가, '에이.. 걍 sort 해버리자.' 접근. 하지만, n 값에 따라 결과가 영향을 받을 것이라는 막연한 생각에 연습장에서 한참 고민. 그냥 실제 원하는 값 보다 여유분 값을 만들고 적당히 답을 내는 방식으로 접근. 하지만, 무언가 굉장히 찝찝함.
- UploadFile . . . . 2 matches
MoniWiki는 두가지 인터페이스의 UploadFile매크로를 지원한다. 각각 이에 대응하는 액션이 있다.
UploadFile매크로와 UploadedFiles매크로는 각각 다중 디렉토리를 지원한다.
- UserStory . . . . 2 matches
사용자의 요구사항에 대한 간략한 기술. XP의 다른 과정들이 그렇듯이 (이건 아마도 XP 방식으로 진행하는 팀들의 특징인듯. -_-a Case Tool 보다는 간단한 카드와 펜을 선호함.~) 보통 인덱스 카드에 기술을 한다.
Wiki:EngineeringTask 란 해당 Story를 구현하기 위해 실질적으로 해야 할 일들에 대한 서술이다. UserStory 의 각 항목이 비교적 사용자 관점에서의 서술이라 한다면, Wiki:EngineeringTask는 구현해야 하는 Developer들 관점에서의 서술이다.
- VMWare . . . . 2 matches
유사기술을 적용한 Linux [Xen] 커널이 등장하기 시작했으며, Xen 은 차후 나타나게될 멀티코어 CPU 환경(플랫폼 자체가 완전히 다른)에 적합한 커널의 구축을 목표로 하고 있다고 한다. (완전히 다른 프로세서라면 당연히 해당 머신에 접근하는 인터페이스 역시도 다를텐데 XEN 을 이용해 해당 부분을 추상화시켜서 접근하는 식으로..) 현재에는 해당 기술을 보안 분야에서 이용하기 위한 연구가 진행중이며 기존의 단일 커널하의 커널모드, 유저모드 식의 구분이 아닌 관리자 커널, 애플리케이션 커널과 같은 구분으로 2개의 서로 다른 커널을 구현해 커널 단에서 애플리케이션이 머신에게 직접적으로 접근할 가능성을 원천 차단하는 방식의 연구가 되고 있다.
VMWARE 는 보통 개발 중인 OS 테스트 환경, 임베디드 환경의 크로스 컴파일 환경, 개발 중 어플리케이션의 다양한 플랫폼에서의 테스트 비용 최소화를 위해서 많이 사용한다.
- VMWare/UsefulFunctions . . . . 2 matches
VMWare 는 크로스 컴파일링 환경에서 유용한 기능을 몇가지 가지고 있다. 물론 해당 가상 머신에 VMWare Tools 라는 VMWARE 가 제공하는 프로그램을 올렸을 경우에만 작동한다.
가상 머신이 리눅스이고 VMWARE TOOL 의 바이너리와 호환성을 갖지 못한다면 커널 드라이버를 컴파일 해서 설치해야함. (물론 VMWARE 설치 스크립트가 알아서 해줌, 우분투 DD 에서는 정상동작 하지 않았음. 데비안, 페도라 사용 가능함.)
- ViImproved . . . . 2 matches
사실 다들 오해하고 있는 것 중의 한가지로는 vim은 불편하다는 것이다. 최근의 vim은 플러그인을 통해 여러가지 기능을 지원하며 그 중에는 단어 자동완성을 물론 문맥 자동완성뿐만 아니라 대부분 언어에 대한 syntax highlight를 지원한다. 요즘에는 흔히 볼수있는 탭기능도 지원하기 시작한지 오래되었으며 좌측에 파일 트리를 띄워두고 작업할수도 있다. 또한 .vimrc파일을 통한 강력한 커스텀마이징이 가능하며 이를 이용하여 이클립스를 능가하는 편의성을 지니기도 한다.
- VonNeumannAirport/인수 . . . . 2 matches
// 접하는 문제를 모두 OOP적으로 풀어보려 노력하려한다.
// 끝부분에 소트시키는 부분이 있는데.. 귀찮아서 그냥 map에 때려넣었다. map<int,int> 해서 키값은 traffic양, 값은 테스트번호, 이런식으로 하면 지가 알아서 정렬한다.
- WERTYU/1002 . . . . 2 matches
만일 이것이 있다고 한다면.. 각 char 단위의 결과를 그냥 그대로 합쳐버리면 될 듯 하다.
JuNe 의 이야기를 듣고 doctest 를 처음 써보다. (실제로는 한단계씩 진행) 느낌이 꽤 재밌었다. test code 에 대해서 'test code == 문서화 정보'를 한다는 느낌이 더 깊게 난다. 조금 더 써먹어보고 관찰해봐야겠다는 생각중.
- WebLogicSetup . . . . 2 matches
http://localhost:7001/nameOfFile.jsp 의 형식을 취한다.
* Servlet은 명시적으로 등록을 해줘야 한다.
- WeightsAndMeasures . . . . 2 matches
어떤 거북이도 자기 체력이 허용하는 한도 내에서만 등 위에 다른 거북이를 올려놓으면서, 몇 마리의 거북이를 쌓을 수 있는지를 나타내는 정수를 출력한다.
테스트 케이스가 필요하다면 꽁수가 있기는 하다. Java로 standard input으로 읽는 라인을 합쳐다가 모조리 특정 URL에 포스트 하도록 하는 코드를 만들어 업로드 한다. 그러면 심사때 사용하는 테스트 케이스를 알 수 있다. --JuNe
- WindowsTemplateLibrary . . . . 2 matches
WTL은 객체지향적인, Win32 를 캡슐화하여 만들어진 C++라이브러리로 MS 에서 만들어졌다. WTL은 프로그래머에 의한 사용을 위해 API Programming Style을 지원한다. WTL MFC에 대한 경량화된 대안책으로서 개발되었다. WTL은 MS의 ATL를 확장한다. ATL 은 ActiveX COM 을 이용하거나 ActiveX 컨트롤들을 만들기 위한 또 다른 경량화된 API 이다. WTL은 MS 에 의해 만들어졌디면, MS 가 지원하진 않는다.
- XPlanner . . . . 2 matches
ExtremeProgramming 팀을 위한 웹-기반 프로젝트 관리도구, 위키 스타일의 포매팅도 지원한다고 한다.
- Yggdrasil/가속된씨플플/1장 . . . . 2 matches
* 1-1과는 달리 처음에 큰 따옴표 안에 들어가 있는 문자열 리터럴을 두 개 더했음. 제일 뒤에 string 인스턴스가 있어서 괜찮을 것 같지만, 결합방식에 있어서 왼쪽 결합 우선이기에 처음엔 "Hello"와 ",world"를 더하게 된다. 그러므로 에러를 출력한다.
* x라는 인스턴스는 선언된 괄호 밖을 나가서 사용되었으니 에러를 출력. 이미 소멸되었으며, 맞게 고치려면 7째줄의 괄호를 없애고 그 다음줄에 써야한다.
- ZPBoard/PHPStudy/MySQL . . . . 2 matches
* mysql 에 접속한다.
* mysql 함수를 실행한다.
- ZeroPageMagazine . . . . 2 matches
프로토타입을 만든다는 것이 틀을 정한다는 의미가 아닌가요? 틀을 만들어 놓고 하면 짜임새가 있겠지만 그것에 따라야 한다는 관념 때문에 원고를 작성하는 사람의 입장에서는 그 능률이 떨어지지 않을까라는 의견이었습니다. 예를 들어 저번에는 이런 것을 조사하고 싶어서 프로토타입으로 제출했었는데, 시간이 지나니까 또는 조사를 하다 보니까 영 아니다 싶은 경우가 있을 수 있겠죠. 혹시 제가 프로토타입에 대해 잘못 이해하고 있을수도 있겠다는 생각이 드는군요. 지적해 주세요.
- ZeroPageServer/AboutCracking . . . . 2 matches
* 제가 위의 말을 정확하지 않게 썼습니다. 그리고, 동희씨의 말씀대로, ''소스로 설치했다면 모르겠네요.'' 에 해당 합니다. 상대의 smtp port 25으로 데이터가 전송되고 있다는 것이었습니다. 그럼 어디선가 이 서버의 squid 기본 세팅 포트로, relay 를 계속하고 있다는 의미도 되는것 같군요. 혹은, 8080이나, 80을 사용한다는 것인데 각각, resin 과 apache가 사용하고 있어서 잘 모르겠습니다. 제가 이런 분야의 지식이 부족해서요. --NeoCoin
* 만일 현재의 squid 가 Cracking상태라면, squid 의 셋팅을 수정하더라도 여전히 똑같이 문제가 발생해야 정상일 것이다. 그런데 셋팅 변경후 그 발송되는 상태가 사라진다는 점이 더욱더 상황을 혼란스럽게 한다. 재미있는 점은, 그럼에도 가장 명확하게 기본 포트의 상황에서, 다른 메일 서버로 메일을 가는 것이 보인다는 점이다.
- ZeroPageServer/Telnet계정 . . . . 2 matches
ZeroPage Server의 Linux Telnet 계정으로, '''ssh2'''(Secure SHell 2 - 보안계정) 를 지원하는 Telnet클라이언트( 예 [http://zeropage.org/pub/util/putty.exe putty] ) 로 접근할수 있다.
* 웹 프로그래밍을 할수 있다. 현재 zp서버에서 '''~/public_html/''' 이하 cgi 프로그래밍이 가능하다. ( ~ 은 자신의 디렉토리를 의미한다. )
- ZeroPage회칙토론 . . . . 2 matches
이전 ZeroPage의 회칙이 있다고 알고 있습니다. 구해서 참고한다면 좋을텐데요. --이덕준
회칙을 정할 때 "'제2조 회원관리 제3항 회비'" 뭐 이런 식으로 하는 건가요? 그렇게 한다면 하드카피 문서로 만들어서 신입회원들에게도 줘야겠네요... ^^;; --["창섭"]
- [Lovely]boy^_^/Diary/2-2-10 . . . . 2 matches
* SBPP 서문, Introduction 읽었다. 읽으면서 첨에 나온 예제를 C++ 예제로 바꾸어 보았다. 이제 슬슬 문법이 감이 오기 시작한다.
* 오늘의 XB는 삽질이었다.--; Date클래스의 날짜, 월 등등이 0부터 시작한다는 사실을 모르고 왜 계속 테스트가 failed하는지 알수가 없었던 것이었다. 덕택에 평소엔 거들떠도 안보던 Calendar, 그레고리Date, SimpleData등등 날짜에 관련된 클래스들을 다 뒤져볼수 있었다. 하지만..--; 결국 Date클래스에서 끝났다. 이제 UI부분만 하면 될듯하다.
- eXtensibleMarkupLanguage . . . . 2 matches
* XML은 정말로 굉장히 강력하다. 덕분에 톰캣을 위시한 많은 애플리케이션이 셋업 파일로 XML을 활용하기 시작했다. BUT 크리티컬한 부분에 XML을 소통 데이터로 이용하게 될 경우 해당 부분이 그 프로그램의 performance critical path 가 되는 경우가 발생한다.
* DTD로 검색하다 여기로 왔네요ㅋㅋㅋ 예전에 쓰신 것 같아서 지금은 아시는 내용이겠지만 나중에 다른 분들이 이 페이지를 보실 수 있으니 시간을 건너뛰어 댓글 답니다~ DTD는 Document Type Definition의 약자로 XML 문서 작성을 위한 규칙을 기술하는 형식입니다. valid XML Document의 경우 well-formed XML Document이면서 XML에서 사용되는 원소 이름이 해당 문서에 대한 XML DTD나 XML Schema에 명세된 구조와 합치되어야 한다고 하네요. 이 내용에 대한 수업을 들으며 씁니다ㅋㅋㅋㅋㅋㅋㅋ - [김수경]
- html5/webSqlDatabase . . . . 2 matches
* transaction을 지원한다.
* 사용전에 반드시 데이터 베이스를 열어야 한다.
- html5/문제점 . . . . 2 matches
* 표준 비디오 코덱이 정립되지 않았기 때문에 여러가지 코덱을 지원하는 다양한 브라우저에서는
* 지원하는 브라우저의 문제 -> Ie에서 많이 지원하지 않음.
- iruril/도자기토론 . . . . 2 matches
보편화 되려면 어떻게 해야한다는게
도자기 하나에 1000억씩 한다는데
- ljh131 . . . . 2 matches
모든 프로그래머들이 copy & paste에 빠져있어 구글신께서 포맷으로 심판하려 할 때 홀로 노가다 코딩을 하던 아노아씨는 구글신의 특별한 계시로 포맷이 닥칠것을 미리 알게 된다. 그는 120번의 이터레이션에 걸쳐 방주(신개념 version control system)를 제작해, 8개의 대형 오픈 소스 프로젝트와 한 패키지씩의 여러 sf프로젝트를 커밋한다. 포맷이 닥치자 모든 오픈 소스 프로젝트가 실패하고 말았지만, 이 방주에 커밋된 프로젝트들은 살아 남았다고 한다.
- naneunji/Diary . . . . 2 matches
여러사람이 하나의 프로그램을 짠다는것..페어프로그래밍을 한다는것..
보통 가지고 있는 자기 일만 "묵묵히" 열심히 하면 된다는 생각은 수정되어야 할 것 같다. 같이 일한다는게 어렵다는 생각이 드는걸 보면 .. 나두 열려있는 사람은 아닌거 같다...흠..;;
- 강소현 . . . . 2 matches
거래처고객 - 이런 상대와 일을 한다면 당신의 페이스에 말려들게 하여 끌어당기는 수밖에 없습니다. 그리고 당신의 방식이 성의를 기본으로만 한다면 그걸로 충분합니다. 상대방도 그걸 바라고 있을 테니까요.
- 고한종 . . . . 2 matches
* 근데 이거 덕분에 JAVA로 작업할때는 모든 것을 얕은 복사라고 생각해야 한다는 것을 발견함. 아니 ArrayList에서 빼고 싶어서 빼버리라고 하면, 다른 ArrayList에서도 빠져버리는 건데?! (Objective-C 처럼 말하자면, release를 원했는데 dealloc이 되어버림.) 결국 그냥 모든 대입문에 .clone을 붙였더니 메모리 폭발, 속도 안습. - [고한종], 13년 3월 16일
* 여태까지 만들었던 것중에 가장 잘나간 것. 하지만 속 알멩이는 여태까지 만든 것 중 가장 쓰레기. 이걸 OOP개념이라던가, 좋은 유지보수가 가능하게 코딩하려면, 프로젝트를 버리고 다시 시작해야 할듯. 소개하자면 이걸 공개한게 13년 1월 8일인가 하는데, 12년 12월 20일에 확산성 밀리언 아서라고 일본 ~~T~~CG(트레이드가 없어....) 게임이 들어왔다. 애니팡으로 한국 모바일 게임시장이 열린 상황 (그 전에는 미친 법 때문에 스토어에 게임 카테고리가 없었지....), 퍼즐류는 애니팡이 먹고, 슈팅게임은 드래곤플라이트, 레이싱(?)은 다함께차차차, 캐쥬얼은 윈드러너가 먹은 상황에, ~~T~~CG라는 새로운 장르가 수입이 되니.. 그야말로 공급이 없어서 단숨에 유저 확보. 지금 대략 생성된 계정은 못해도 80만개를 넘었다고 한다. 게임소개는 여기까지하고, 이 게임이 1기긱 1계정으로 기기종속 게임인데, 온라인 게임인데 부캐를 돌리고 싶은것은 어찌보면 당연!. 사람들이 로그아웃 하는 방법을 찾아놓은게 있다. 근데 겁나 불편하다 (...) 그래서 그걸 안드로이드 어플로 자동화시켜서 터치한번이면 되도록 만들었다. 그리고 공개 -> 2달이 지난 지금 1만 5천명이 내 블로그를 들렸다 나갔다. 아마 못 해도 1만은 다운로드 까진 해보지 않았을까 싶다. - [고한종], 13년 3월 16일
- 골콘다 . . . . 2 matches
* 책을 읽으면서 '이게 과연 1920년대의 이야기일까?' 하는 질문을 하게 하는 소설같은 역사이야기. 특히, 최근 미국의 분식회계 사태를 보며 신문에서 '브루투스, 너마저...' (책에서 똑같은 말을 한다;) 를 이야기하는것을 보면. 달라진 점이라면 액수가 커졌다 정도? (책에 나오는 모건 은행의 중개인인 리차드 위트니는 추후 자신의 경제파탄을 무마하려고 거의 300만달러에 달하는 빚을 진다. 대출을 받기 위해 고객의 유가증권들을 함부로 담보로 맡기는 짓도 서슴없이 했다고 한다. 그게 1920년대란다; 결국은 이중장부와 불투명한 경영, 하버드-월가 또는 정계의 연줄을 가진 엘리트들의 특이한 도덕(?)의식의 결과.)
- 권영기/web crawler . . . . 2 matches
Python을 이용해서 Web Crawler를 제작하면서 Python의 사용법을 익히고, 원하는 웹 페이지를 긁기 위한 Web Crawler를 제작한다. (네이버웹툰(돌아온 럭키짱, 신의 탑...), 네이버 캐스트, 그 외의 각종 웹페이지..)
- 금고/문보창 . . . . 2 matches
바로 코드 짜면 저번처럼 망해버릴 것만 같아서, 점화식 만들고, 간단히 증명까지 하고 코드를 짰다. 층수 n, 금고수 k 라 할때, 현재 복잡도 O(nk). 구간 값을 저장한다면 메모리와 시간 모두 더 줄일수 있을 것이다.
{{| T(a+b+1, k) = T(b,k) + 1 = T(a,k-1) + 1 |}} 이다. 여기서 a 와 b 또한 건물의 최대 높이임을 만족해야 한다. 초기값 T(1, k) = 1, T(n, 1) = n 을 이용하여 값을 구할 수 있다.
- 김희성 . . . . 2 matches
recv함수는 send 횟수만큼 끊어 읽지 못한다는 것을 간과하였습니다. 로그인 과정에서 send가 recv보다 빨리 작동하여 스택에 쌓인 후 하나의 메세지처럼 입력되는 것을 방지하기 위해 수신 확인 신호를 받도록 수정하였습니다.
* ShortCoding 좋아하는 사람은 꾸준히 있네요 ㅋㅋㅋ 왠지 반갑다 ㅋㅋㅋ 제가 좋아한다는 건 아니지만… - [김수경]
- 김희성/MTFREADER . . . . 2 matches
int LastErrorCode(); //최근에 일어난 클래스 내부의 에러를 반환한다.
void MakeBinaryFile(char* filename); //MFT를 Binary 그대로 저장한다.
- 김희성/리눅스계정멀티채팅2차 . . . . 2 matches
//사용자가 이해하기 쉽도록 스레드 번호에 +1 값을 쓰도록 한다.
//코드의 간결화를 위해 값을 복사한다.
- 논문번역/2012년스터디/신형준 . . . . 2 matches
그후에 우리는 그다음 section들에서 전처리 과정 단계, 특징 추출에 대한 방법, 그리고 통계적 모델링과 인식을 이용한 기술들을 묘사한다. 제안된 방법들의 효율성을 입증하기 위한 평가결과는 section 7에 있다.
||만약 R^2에있는 u와 v가 평면상에서 점들로 표현된다면, 그때 u+v는 평행사변형의 제 4의 꼭짓점에 대응한다.(다른 벡터들은 u,0, 그리고 v) Fig 3를 보자||
- 당신의큰돌은무엇입니까 . . . . 2 matches
여러분 인생의 큰 돌은 무엇입니까? 승진, 돈, 건강, 가족, 신의……. 무엇을 우선 순위에 두느냐에 따라 인생은 달라질 것입니다. 자신만의 큰 돌을 찾아보세요. 그리고 그 돌이 무엇이든지 인생이라는 항아리에 가장 먼저 넣어야 한다는 것을 잊지 마세요.
최선을 다해서 열심히 사는 것도 중요하지만, 자신의 삶에서 가장 소중한 것이 무엇인지 잊고 살아가는 경우가 많습니다. 그것이 꿈이든 사랑이든 건강이든 가족이든 우선순위를 정해놓고서 이루려고 노력하거나 지키려고 노력한다면, 내 인생의 가치는 더욱 소중해 지겠지요
- 덜덜덜/숙제제출페이지 . . . . 2 matches
printf("원하는게 뭐요 : ");
나 웃겨 미치겠어 ㅋㅋㅋ "원하는게 뭐요" <- ㅋㅋㅋㅋㅋㅋ - [이영호]
- 덜덜덜/숙제제출페이지2 . . . . 2 matches
* 그 층만큼의 피라미드를 *
* 원하는 패턴과 변의 길이를 *
- 데블스캠프2003/다루어볼문제와관련세미나 . . . . 2 matches
* 그럼 STL 내가 할래.--; 다른 사람보다 조금이나마 잘한다고 생각하는게 이것밖에 없어서..--; --[인수]
* 네. 현철이형 그래서 제가 생각한게 일단 동적 배열의 확실한 이해와, 링크드 리스트를 구현해보게 한다음에, 이들 지식의 선행으로 STL을 가르치려 하려구 그랬거든요. 위 두가지만 확실히 이해할 수 있다면 STL의 기본적인 (vector나 list같은) 것은 가르쳐도 무방하다고 생각합니다. --[인수]
- 데블스캠프2004/금요일 . . . . 2 matches
* JFrame의 show() 메소드 -> 프레임창을 보이게 한다.
* addMouseListener 로 마우스 핸들러를 추가한다.
- 데블스캠프2005/수요일후기 . . . . 2 matches
조현태: 새로운 것을 많이 해본듯 하다, 특히 java와 네트워크 소켓은 기억에 많이 남을 듯 하다. 그리고 강의하는데 수고하신 강사분들께 감사를 표한다.
* 재미있고 좀더 토론으로 이끌어 낼수 있는 세미나가 되었으면 한다.
- 데블스캠프2005/월요일후기 . . . . 2 matches
사실 : 피곤하다 느낌 : 누가 잘 밤에공부하라디?ㅠㅠ 교훈 : 우린 너희가 잘때 한다
딱딱한 내용이라면 유머를 최대한 활용해야 했는데 아쉽다. 사람들이 어려워한다고 강의자가 당황해서 준비한 내용을 건너뛰다 보니 오히려 더 이해가 안된 것 같아 아쉽다. 차라리 준비한 대로 설명을 해나가면 사람들이 이해하기 쉽지 않았을까?
- 데블스캠프2006/목요일후기 . . . . 2 matches
원하는 거 다 하려면 캠프 일정을 1주일 연장해야겠다는 생각..
상호작용이 중요한 강의를 준비할 때에는 청중의 반응 속도를 충분히 느리다고 가정한 후 목표를 잡아야한다는 생각이 든다.
- 데블스캠프2009/월요일후기 . . . . 2 matches
* [김수경] - 대안언어축제에서 Scratch를 접했을 때도 느낀 점이지만, 프로그래밍 언어를 처음 접한 사람에게 코딩을 친숙하게 해주는 정도로는 좋은 것 같아요. 그런데 이미 다른 언어를 어느 정도 쓸 줄 아는 사람에겐 제약이 많다는 것과 일일히 찾아서 드래그해야 한다는 점이 오히려 귀찮게 느껴지는 것 같아요. 누구나 쉽게 쓸 수 있는 툴은 기능이 아쉽고, 강력한 기능을 제공하는 툴은 복잡해서 쓰기 어렵고.. 이런 문제는 도대체 어떻게 해결할 수 있을까요ㅋㅋ 이건 Scratch에만 국한된 문제는 아니지만요;
* [송지원] - svn은 주변 프로그램이 많아서 더 어려운것 같다. 얼핏 생각하면 tortoise SVN으로 충분해보이지만, nForge나 트랙, notifier, websvn 등이 함께해야 더 시너지 효과를 발휘한다. 코드레이스를 하면서 느낀 것은, 왜 진작 1학년 때에 이에 흥미를 느끼지 못했는지다. 내가 잘 못해서, 아무것도 몰라서 흥미를 느끼지 못했지만 사실 따지고 보면 그건 나의 문제다. 물론 코드레이스를 내가 하는거보다 새내기가 하는걸 보는게 더 재밌긴 하다 ㅋㅋ 역시 나는 뭔가를 하는 것보다 잔소리하는게 적성인듯.
- 데블스캠프2010/셋째날/후기 . . . . 2 matches
* 관찰자와 플레이어로 나뉘어 학습하는 시뮬레이션을 진행했습니다. 저는 따로 자원해서 관찰자를 했었는데 상당히 유익한 시간이었다고 느꼈습니다. 사람을 관찰하고 또한 분석한다는 것이 생각보다 힘들지만 대신에 보는 시야가 한층 넓어진다는 것을 알수 있는 좋은 기회가 되었습니다. 사실 더 많은 것을 느낀 시간은 후의 느낀 점을 발표하는 시간이었는데요, 제가 느낀 점을 발표하고 다른 사람들이 발표하는 것을 듣고 거기에 김창준 선배님이 조언해주는 것까지 들으며 이런 저런 많은 생각을 할 수 있는 좋은 기회였습니다. 인생의 모든 순간은 선택이므로 학습이나 혹은 삶에서 자신이 취하는 모든 행동은 결국, 자신이 그렇게 했기 때문에 비롯된다는 것에 대해 한번 더 깊게 생각해보고 자신을 반성할 수 있는 시간이었습니다. 오늘 단 하루로 '아, 즐거웠다' 가 아닌, 앞으로 삶을 살아가며 '매 순간 순간의 선택은 자신이 결정하는 것이다' 라는걸 새겨야겠습니다. - [김준영]
* 디버거를 통한 프로그램의 패스워드 알아내기가 정말 인상적이었습니다. 그리고 가상화를 통해 조금더 편리한 프로그램 실행을 추구한다는것도 잘알게되었습니다. 윤종하 ㅈㅈ.. - [양아석]
- 데블스캠프2010/첫째날/오프닝 . . . . 2 matches
1. 위키 사용자 등록 후 로그인한다.
2. 이 페이지를 고쳐 자기 이름을 추가한다.
- 데블스캠프2011/다섯째날/Cryptography . . . . 2 matches
두 개의 p != q인 큰 소수 p와 q를 선택한다.
1 < e < φ(n)이면서 φ(n)과 서로소인 e를 선택한다.
- 데블스캠프2011/다섯째날/HowToWriteCodeWell/박정근,김수경 . . . . 2 matches
//Elevator가 생성되었는지 test한다.
//goTo 전에는 항상 up 혹은 down이 있어야한다.
- 데블스캠프2011/둘째날/후기 . . . . 2 matches
* Craking이 우리가 보통때 말하는 Hacking이었다는걸 처음(사실 저번에 한번 들은거 같지만) 깨달았네요. 또, 이전까지 그런 툴을 만드는 사람들은 도대체 어떻게 만드는가! 싶었는데 어셈을 이용해서 만들곤 한다는 걸 보며, 음.. 좋군(?) 쇼핑몰중에 지금도 간단한 방법으로 털리는 곳이 있던데, 비밀번호까지 털 수 있다거나 하는걸 보니 정보보안의식에 대한 자각이 들었던거 같기도 하구요.(캐시 충전사건으로 문제가 생긴적이 있다는걸 듣고 충격!) 뚫을 수 있는 사람이 막을 수도 있다고 하니 정보보안쪽을 공부해보고 싶다면 Craking에 대해서도 아는게 좋을거 같군요. 저는 처음보는 형이었는데, 형 세미나에서 많은걸 배울 수 있었던거 같습니다.
* 리버싱 프로그래밍 하는 것을 보고, 패킷을 주고 받는 것을 얻어서 사용한다던지 또 웹에서 javascript injection으로 쿠키를 얻어서 그것을 사용할 수 있는 사이트에서 다른 아이디로 로그인 하는 것도 보았다. 정말 신기했지만 그렇게까지 하기 위해서는 무지하게 다양한 내용을 알아야 할 것 같았다.ㅜ
- 데블스캠프2011/첫째날/오프닝 . . . . 2 matches
1. 위키 사용자 등록 후 로그인한다.
2. 이 페이지를 고쳐 자기 이름을 추가한다.
- 데블스캠프2012/넷째날/후기 . . . . 2 matches
* [엄제경] - 뭔가 옛날에 VB배웠을때 기억나서 좋았어요. 근데 자율로 프로그램 만드는 거에서 원하는 기능을 구현해내지 못해서 ㅠㅜ 조금 아쉽네요 ㅎ.
* [김태진] - 전 이시간에 파일입출력보단 다른 것들을 많이 배운거 같습니다. 일단, 한글을 콘솔에서 입력할때 어떤 오류가 나는지, 그걸 해결하려면 어떻게 해야하는지, Bash에서 쉘 명령어 쓰는방법이라던지, 등등.. 아, 또 코드를 객체지향적으로 설계한다고 생성자를 만들려다 오버로딩이 안돼서 멘붕하기도 했죠.. 아무튼 다른걸(?) 추가적으로 많이 배운 시간이었습니다.
- 데블스캠프2013/넷째날/후기 . . . . 2 matches
* 클린코드 스터디를 하고 있는 중이여서 더 좋았던 것 같습니다. 그리고 타인과 같이 코딩한다는건 정말 힘든 일이예요 - [박희정]
* 게임을 만들어서 인터넷에 그냥 배포하면 안된다는 말에 크나큰 충격을 당한 1인이였습니다. 허허...물론 새션전에 들었던거였지만 이 내용에 덧붙혀서 더 많은 법적 절차를 밟아야 한다는걸 알고 또 맨탈이..허허...슬프면서 유익한 세션이였습니다. - [김윤환]
- 독서는나의운명 . . . . 2 matches
* 내가 추천하는 책은 - [자유로부터의도피], [이기적인유전자] 이 두개는 토론하기에 좋을 만한 책(내가 강추 하는 책..), [채근담] 도 좋음.. 만약 이걸로 주제를 선정한다면 나도 다시 읽을 생각..., 태백산맥은 양이 너무 많아서 너무 빡신데 -_-. 토론 하는 시간은 정모 끝나고 나서가 좋을듯.. 만약 술자리가 있다면 독서 멤버들끼리 따로 모여서 얘기해도 될듯.. - 상협
* 그 책, 7피에서 잃어버렸어요 ㅠ 흑흑.. 정말 유익한 책이었는데! 진행하셔도 되요~ 전 최근 '나는 소망한다 내게 금지된 것을 ' 읽고있습니다!-아영
- 땅콩이보육프로젝트2005/개발일지 . . . . 2 matches
* 입력 : 위키에 땅콩 페이지 개설 후 '입력'란에 입력받고 확인을 누르면 입력된다. 내용의 수정의 위해 '수정' 버튼도 존재한다. 그 아래에 같은 형식으로 '가르치기' 도 존재한다.
- 레밍즈프로젝트/프로토타입/MFC더블버퍼링 . . . . 2 matches
클래스 내부에는 윈도우 핸들이 없기 때문에 GetClientRect를 사용하지 못한다. 따라서 전달인자로 CRect가 전달된다.
그림을 뿌려주고 동적으로 생성된 메모리와 오브젝트들의 할당을 해제한다.
- 레밍즈프로젝트/프로토타입/에니메이션 . . . . 2 matches
AddFrame(UINT ITEM)으로 프레임을 추가시키고 외부에서 적절한 타이머를 통해서 움직임을 조절한다.(NextFrame())
이 클래스는 더블버퍼링과 bmp그리기를 자동화 시켜둔 [레밍즈프로젝트/그리기DC](CmyDouBuffDC)를 사용하여 드로잉을 수행한다. (CDC를 사용하는 도 있지만... 편의를 위해서...)
- 레밍즈프로젝트/프로토타입/파일스트림 . . . . 2 matches
*ps2 = NULL; // NULL 문자로 끝나게 한다.
가상화면을 생성하고, 가상화면에 그린것을 화면으로 복사하고 , 가상화면을 지우는 작업등이 추가 되어야 한다.
- 로그인없이ssh접속하기 . . . . 2 matches
* 구글에서 어떤 검색 키워드를 넣느냐에 따라서 삽질을 하던지 바로 해결하던지 한다는 것을 알았음. 위 검색 키워드로 찾아 가면 위 참고글이 나오는데 똑같이 해도 안될 가능성이 높음.
* A에서 B 서버로 접속하기 위해서 는 A 에서 private_key 인 id_rsa 가 꼭 있어야 하고, 이것의 public_key 가 해당 B 서버의 authorized_keys 안에 추가되어 있어야 한다. authorized_keys 안에는 여러개를 넣을 수 있다.
- 로마숫자바꾸기 . . . . 2 matches
* 로마 숫자는 ⅩⅠⅤ 세 종류만 사용한다.
* 입력 자료는 99 미만으로 한다. 99: 종료
- 만년달력/곽세환,조재화 . . . . 2 matches
weekDay=( weekDay+monthDays(year,i+1)%7 ) %7; // 입력한 월의 요일을 구한다.
getMonthWeekDay(weekDay,monthDays(year,i+1)%7); // 입력한 월의 요일을 구한다.
- 만년달력/김정현 . . . . 2 matches
원하는 년도와 달을 입력하면 달력이 출력된다
CalendarMaker에게 폼을 주고 만들라고 지시한다
- 만년달력/방선희,장창재 . . . . 2 matches
cout << "원하는 년도를 입력 하세요 = " ;
cout << "원하는 달을 입력 하세요 = " ;
- 말없이고치기 . . . . 2 matches
이 방법은 특히 WikiMaster들이 많이 행한다. OriginalWiki의 WardCunningham 경우는 "이건 이래야 한다"는 식의 말을 특정인에게 직접 하는 일은 별로 없고, 대신 그 규칙을 어긴 글이 있을 때마다 일일이 찾아가서 단순히 그 오류만 고쳐준다 -- 말하지 않고 스스로 행함으로써 "보여주는 것"이다(NoSmok:LeadershipByShowing). 그러면 당사자는 이를 알아채지 못하고 처음 몇 번은 계속 실수를 할 수 있지만 어느 순간에 스스로 깨닫고 학습( NoSmok:동의에의한교육 )하게 된다.
- 문자반대출력 . . . . 2 matches
문제 : 파일 입력으로 문자열을 입력한 후, 어떠한 알고리즘을 통해 반대로 된 문자열을 파일로 출력한다.
* C 에도 라이브러리로 문자열 반전 시켜주는 함수를 제공합니다. strrev()라는 함수를 사용하면 '\0'바로 전 글자부터 거꾸로 만들어주죠. 물론 ANSI 표준은 아니고 Semantec, Borland, Microsoft 에서 제공하는 컴파일러의 경우에 자체 라이브러리로 제공합니다. 이식성을 생각하지 않는 일반적인 코딩에서는 위에 나열한 컴파일러를 이용한다면 사용할 수 있습니다. - 도현
- 문자반대출력/허아영 . . . . 2 matches
* ver2 를 만들려고 한다.
단점: 한글과 영어를 섞어서 사용 못한다는 점. 영어와 한글을 섞을 수 있는 ver.3 만드는 것이 문제.
- 문자열검색/허아영 . . . . 2 matches
단어의 시작을 중점으로 한다.(나는 문자열 이라기 보다는 단어 검색 중심으로 짠것같다.)
문장 속의 단어의 첫 글자와, 찾아볼 단어의 첫글자의 동일한가 부터 시작한다.
- 바람의딸걸어서지구3바퀴반 . . . . 2 matches
* 이책에서는 한비야의 세계여행을 재밌게 전해준다. 이책에서 인상깊은 구절은 킬리만자로 산을 올라갈때 천천히 자신의 속도로 꾸준히 올라간다면 누구나 올라갈 수 있다고 하는 구절이다. 인생도 마찬가지로 누가 어떤 속도로 가던지 자신의 속도를 알고 자신의 속도로 꾸준히 나간다면 못 이룰게 없다. 또 얻은 교훈은 세상은 사람이 만들어낸 각종 규칙, 규범들로 돌아가지만 말만 잘하면 얻고자 하는것을 얻을 수 있다. 결국 그런 규칙, 규범도 사람이 만든 것들이기에.. 그리고 반드시 환경이 편하고 몸도 편해야 행복한건 아니란것도 느꼈다. 오히려 더 행복을 방해하는 조건으로 작용할 수도 있다. 환경이 아주 불편하고 바빠도 사람은 아주 행복할 수 있고, 오히려 행복하기에 더 좋은 조건일 수 도 있다. 오지일 수록 더 행복해 보이는 이유도 이러한 이유 때문일지도 모르겠다. 행복은 내 안에 있다. 그리고 세계에는 지금의 나의 환경과는 비교할 수 없을 만큼 불편하고 좋지 못한 환경에서도 행복하게 사는 사람이 많다는걸 느끼고 지금의 생활에 감사하자는 생각을 했다. 그리고 한비야가 어떤 외국인과 만나서 같이 등산하는데 그 외국인 행동이 꼴볼견이고 싫어할 행동만 했다고 그런다. 그런데 알고보니 그 외국인은 마약에 중독되었다가 마약을 끊고 나서 지독한 우울증에 시달리고 있다고 한다. 그 말을 듣고 쉽게 다른 사람을 판단해서는 안되겠다는 생각이 들었다. 역시 사람 사는 일에는 원인이 있고 결과가 있다. 또 무슨일을 하던지 목표를 잡고 나서 세부적인 계획을 세워서 차근 차근 해 나간다면 아무리 큰 목표라도 이룰 수 있겠다는 생각도 들었다. 사람은 계획에 있어서는 치밀해야겠단 생각이 들었고, 꾸준한 계획들의 실천이 있어야만 원하는 성과를 이룰수 있다는걸 느꼈다.
- 부자아빠가난한아빠1,2 . . . . 2 matches
* 자유와 안정중 하나를 선택해야 한다. 투자를 할때 도박처럼 무작정 찍거나, 다른 사람들 말에 쉽게 흔들릴 수 있다. 그렇게 쉽게 현혹되지 않도록 노력해야 한다. 원인 없는 결과는 없다. 투자하면 꼭 수익을 올릴수 밖에 없는 구조라는 걸 알아내고 나서 투자하자. 투자에 대해서 여러 사람들의 이야기를 들어 볼때는 그것이 그 사람에게 어떤 이익을 줄지 파악하면서 듣는다.
- 분류패턴 . . . . 2 matches
페이지 하단에 '''XXX분류''' 라는 링크를 남겨서 그 정보를 위키시스템이 이용할 수 있도록 한다. 위키의 전체 페이지 내용검색 기능을 이용해서 같은 분류에 속하는 페이지만 찾아낼 수 있다.
* 기본적으로 다음의 분류들이 존재한다. 추후 다른 분류들을 생각할 수 있겠다. 해당 분야에 대해 바라보는 시각에 따른 분류가 필요할때는 wiki:NoSmok:지도패턴 을 이용하는 것이 더 효율적일 것 같다.
- 블로그2007 . . . . 2 matches
* 게시판 및 블로그등을 공부한다.
* MYSQL 과 apache에 대한 공부를 한다.
- 산이거기에있기때문에 . . . . 2 matches
우리나라는 교육뿐 아니라 전반적인 의식구조(결과 지상주의, 학연,지연,혈연에 집착하는 모습이라든지..)에 문제가 있음을 가끔 느끼곤 하는데 (직접 외국의 문화를 체험한다거나, 외국인과 대화를 했던 기억은 없지만) 다음의 글을 보면서 그 사실을 한번 더 느끼게되었다. - [임인택]
근데 웃기는 일은 우리나라의 국민윤리 교과서(79년 생이전이면 배운 교과서)에는 그 말을 에베레스트 정상을 정복한 에드먼드 힐러리 경이 한 말로 그의 위대한 정신 상태를 배워야 한다고 배운 것이다.
- 삼총사CppStudy/Inheritance . . . . 2 matches
CMarine Force[12]; // 이렇게 하면 부대안에는 마린밖에 넣지 못한다.
CFirebat Force[12]; // 이렇게 하면 부대안에는 파이어뱃밖에 넣지 못한다.
- 상협/Diary/9월 . . . . 2 matches
* 장점 : 만약 가기로 하면 맘은 편하다. 보통 사람들이 택하는 길이기 때문에 심리적으로 부담이 없다. 군대에서 배울게 있다고 한다. 다행히 기숙사에서 그런거 좀 배워서 그런거 배우는거는 군대직접 가서 안배워도 될거 같다.
* 단점 : 국내 대학원 떨어지면 군대 가야 한다. -_-; 심리적인 부담감이 만빵이다. 또 석사로 유학도 못간다. 유학 가고 싶었는데. 쩝.-_-;
- 상협/감상 . . . . 2 matches
|| [OperatingSystem] || H.M.Deitel || 1 || 굿 || 운영체제공부를 처음으로 시작한다면 이책이 적당하다고 생각한다 ||
- 상협/모순 . . . . 2 matches
* 나는 이말에 대해서 이 소설을 읽기 전까지는 그렇게 크게 느껴지는게 없었는데.. 소설을 읽고 나서는 이말에 대해서 느껴지는게 많아 졌다. 인생을.. 미리 짜여진 계획대로.. 마음대로.. 된다고 한다면 행복할까? 자기가 하고 싶은것은 다 할수 있고, 못하는게 없다면?? 과연 행복할까~?? 어떠한 불행도 없는 행복을 행복이라고 할수 있을까? 하는 생각을 해본다. 인생이 그렇게 만만하지는 않을거 같고, 그렇게 만만하게 사는게 좋을거 같지는 않다. 나의 인생도 내 계획대로 된것도 아닌고.. 지금 생각하면 그게 더 재밌는 삶을 살 수 있게 만든건 아닌지 하는 생각이 든다.
* 이책을 읽으면서 행복과 불행에 대해서 생각해 보았다. 그리고 사랑에 대해서도 생각해 본다. 진정한 행복은 불행이 있기에 존재할 수 있는거 같다. 불행이 없는 삶은 행복또한 없는 삶이다. 행복이라는 것도 어떠한 기준이 필요할텐데 그 기준으로서 불행이 적합하기 때문이다. 모......순..... 그렇다면 어떤 방패도 뚫을 수 있는 창이 있기에 어떤 창도 막을 수 있는 방패도 존재 한다고 말할 수 있는 건가?..어떤 창도 막을 수 있다는 말에서 어떠한 창이라는 말이 어떠한 방패도 뚫을 수 있을 만한 창이라는 가정이 숨어 있다. 즉 어떠한 창도 막을 수있다는 말은 필연적으로 어떤한 방패도 뚫을 수 있는 창이라는 존재의 기반 위에서 존재 할 수 있는 것이다. 그 말의 성립 여부를 떠나서 그 말의 존재라는 기반위에서 생각하면 두 말은 서로의 불가분의 관계에 있는 것이다. 세상사의 모든 관계가 그런건 아닐까?..
- 새싹C스터디2005/선생님페이지 . . . . 2 matches
* 배열을 추가했습니다. 배열(이중)을 제대로 가르쳐야 Linked List를 제대로 가르칠 수 있을 것 같네요. Linked List를 쓰는 이유를 알려면 이중 배열을 알아야한다 생각해요. 안쓰면 뭐가 안좋은지 알 수 있을테니까요. [이영호]
여러분들보다 조금은 세미나 경험이 많은 사람이기에 한가지 이야기만 드리겠습니다. 세미나를 통해 무언가를 설명할 때 정의(definition)에 대해서 명확하게 알려주도록 노력해 보세요. 여러분이 세미나를 한 후에 신입생들에게 "변수의 정의가 무엇이냐?", "함수의 정의가 무엇이냐?" 와 같은 질문을 한다면 신입생들이 대답을 할 수 있을까요? 혹은 여러분들은 이러한 질문에 명쾌하게 대답을 할 수 있습니까? 어떤 새로운 것을 배울 때 가장 중요한 것은 그것이 어디에 쓰이는 것인지, 그것이 어떻게 쓰는 것인지와 같은 것들이 아니라 그것이 무엇인지를 아는 것입니다. 무엇인지 확실하게 알아야 그 다음을 이해하는데에도 보다 쉽지 않을까요?
- 새싹교실/2011/A+ . . . . 2 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
아마 이날 switch와 for, continoue, break를 배웠던것으로 기억한다.
- 새싹교실/2011/Pixar/3월 . . . . 2 matches
* 이렇게 하면 컴퓨터에게 ''3+4는 8이라고!!!'' 주장하는 것과 같습니다. 만약 누가 갑자기 저런 말을 한다면 아주 어처구니가 없겠죠? 컴퓨터도 저런 주장은 어이없게 생각하기때문에 말도 안 되는 주장을 할 경우 에러를 발생시킵니다.
* == 연산자에 대해서는 연산자를 공부할 때 더 자세히 설명하겠습니다. 지금은 '같다'를 의미한다고만 알아두세요.
- 새싹교실/2011/學高/2회차 . . . . 2 matches
* 3+5=8E+0 를 출력하는 프로그램을 작성하라. 단, %d,%e를 반드시 이용해야 한다.
*3+5=8E+0 를 출력하는 프로그램을 작성하라. 단, %d,%e,를 반드시 이용해야 한다.
- 새싹교실/2011/무전취식/레벨11 . . . . 2 matches
강원석 : 목요일. 학교 끝나고 집에 갔는데 강아지가 또 생김. 원래 있던 놈이 너무 귀여움. 그날 집에 갔는데 큰놈이 작은놈을 공격해서 그 다음날 보니까 작은애가 큰애 공격함. 근데 또 보니까 하루종일 큰놈이 기가 죽음. 꼬리도 안흔들고 밤에 목욕 시켜줬더니 신나함. 작은애는 '예삐'임 ㅋㅋ 작은애는 키우다가 할머니 댁으로. 금요일인지 목요일인지 보현이 생일이어서 학교 끝나고 놀았음. 제 생일떄 밥을 샀는데요. 걔는 밥을 안사더라구요 ㅋㅋㅋ 그리고 애들이랑 치킨집 가서 치맥을 시킴. 거기서 케잌을 하는데 주인아저씨가 화냄 '바닥에 뭍히면 묻어버림' 그리고 싸가지도 없음. '딥테이스트' 썩을 ㅋㅋㅋ 그리고 술막 먹고 당구장에 감. 신세계였음. 장난 아님. 그렇게 했는데 밤새는 애들 많아서 빨리 해산함. 고딩 친구 만나러 한양대감. 갔는데 쿨피스 소주를 시킴. 맛이 쿨피스도 아니고 술도 아니고 다신 안먹음. 그친구가 애들꺼 다 사줘서 잘먹고 그날은 잘 갔음. 토요일날 번지 뛴다고 해서. 10시에 분당에 비가옴 그래서 재환이형한테 전화해서 비온다고 하니까 망했다고 함. 그래서 자고일어났는데 11시에 비가 개고 날씨가 더움. 번지 뛰기 최고의 날씨. 전화하니까 '콜' 7명이 왔음. 그래서 운전해서 감. 율동공원에 갔는데 예약을 하고감. 그리고 정자동에 상현이형 아버지가 하시는 '오모리찌개'에 감. 고3친구들이랑 자주 갔던덴데 선배네 아버지가 하는집이어서 신기함. 맛있게 먹고 재환이형이랑 근화형이 다 사줌. 그리고 서현역 가서 오락실을 갔는데 신나게 놀고. 드럼 게임기에서 농락당함 ㅋㅋㅋ 그래서 다음애가 난이도 올려서했는데 또 Easy가 되서 손가락 하나씩만 씀. 일부러 죽었는데 다음판이 또됨. 아무튼 그래서 죽어서 500원 넣고 다시함. 그런데 또 못쳐서 죽음. 그다음 번지뛰러감. 엘레베이터 탔는데 1층과 2층(45m) 2층 올라가서 뛰어내림. 뛰어내리는 순간 죽는거 아닌가 '그어어어~'하고 뛰어내림. 그리고 애들 다 뛰어내림. 여름 방학때 가평을 가기로 함. 65 m뛰어내리러 갈꺼임. 나머지 사람 보내고 서현역에 뭘 먹으러감. 내가 서현살지만 몰랐던 치킨 7천원에 무한리필집이 있었음. 그런데 그집이 치킨이 한마리 시키면 반마리 밖에 안나오는데 너무 느려서 먹다가 지치는 구조임. 맥주만 엄청 먹고 나왔는데 또 근화형이 다삼. 감사합니다. 꿀꿀꿀. 그리고 다 태워드리고 버스태워드리고 집에 옴. 일요일. 엄마 생신인데 아침에 엄마랑 대판 싸움. 12시에 일어났는데 엄마가 세수하는데 나가버리심. 엄마가 차타고 가심. 그래서 집에와서 화내고 놀러갈라 했는데 그것도 아닌것 같아서 앞에 백화점 가서 생일 선물 삼. 그리고 집에와서 미역국 끓이고 놀러나감. 친구들 만나러 나감. 재수생 친구들 친구들 만났는데 불쌍해 보임. 그래서 당구장 가고 피씨방 가고 노래방 가고. 그리고 술집 가서 아줌마가 반갑다고 서비스 해주심 옆테이블 아저씨가 우리 담배피는사람 아무도 없다고 착하다고 먹고싶은거 시키라고하심. 그와중에 다이다이까고 있는 두명있었음 둘이서 4병까고 안죽음. 그리고 집에 11시에 간다고 한다고했더니 아빠가 화내심. 엄마 생일케잌 기다림. 그러고 생일 케잌하고 잠. 그리고 월요일에 눈뜨자 마자. 운동하고 집에 감. 요즘에 살이빠져서 참 좋아요. 집에 와서 가족끼리 영화를 보러가고. 그렇게 지나갔는데 오늘 새벽에 WWDC봤는데 새벽 4시까지 봤는데 아이폰 발표안해서 실망.
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨2 . . . . 2 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 크크크 이해하지 못한걸 궁금해한다는건 다음에 큰 도움이 되지. 다음시간에 도 복습하고 들어갈꺼야. 좀 졸렸지 ㅠㅠ? 미안해 원래 이부분에서 다 졸더라구. 담시간에는 뭐좀 또 먹으면서 졸음을 쫓아내며 하자 ㅋ -[김준석]
- 새싹교실/2011/무전취식/레벨7 . . . . 2 matches
축제를 일찍가서 아직 다 안됬는데 도착해서 응원하는거 지켜보고 물풍선 던지고 3개 1천원. 그리고 친구네 레모네이드 판다길래 갔는데 강매당함 ㅠㅠ 2천원. 그리고 칵테일 바 가서 칵테일 먹음 완전 달달하고 맛남'ㅅ' ㅋㅋㅋ
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/씨언어발전/6회차 . . . . 2 matches
포인터란 메모리의 주소를 말한다.
동적할당에 대해서도 배웠는데, 동적할당은 배열의 개수가 정해지지 않았을때 쓰는 배열을 말한다.
- 새싹교실/2012/나도할수있다 . . . . 2 matches
* 후기쓰는걸까먹고있었다. 새싹은 내위주인것같아서기분이좋다.이러다교수님수업안듣게될까봐 걱정이다.교수님은 너무 날 힘들게한다. 새싹좋다. -신윤호
* 시작하자마자 while로 1부터 10까지 더했다. 나는 버벅거렸다. 근데 조언을 구하면서 해봤다. 게임코드도 베껴써봤다. define은 메인함수 바껭서 하는 거라고 배웠다. select=getch() 이거가 좀 헷갈렸다. break가 나오면 멈춘다고 한다. 오늘 정말 여러가지를 배운거 같다. 때리기 게임안에 많은 함수가 들어있는게 신기했다. 복습도 좀 더 열심히 해야겠다. 집에 비쥬얼스튜디오도 깔고 스스로 하는 습관을 들여야겠다. -신윤호
- 새싹교실/2012/벽돌쌓기 . . . . 2 matches
* 허나 1회차의 내용을 제대로 복습하지 않아 1회차 내용을 다시 설명하는 데 시간이 조금 걸렸고, C언어를 배우는 데 있어서 필요로 되는 프로그래밍 능력 또한 키워주어야 한다고 판단 되었다.
* 본 강사의 몸 상태가 좋지가 않아 총 2시간의 강의를 진행하였고, 진도 내용 또한 부실하였다고 판단하고 반성한다.
- 새싹교실/2012/부부동반 . . . . 2 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
C를 배우면 함수를 잘 만들어야 한다 - [http://kangcom.com/sub/view.asp?sku=201004090011&mcd=571]
- 새싹교실/2012/아우토반/뒷반/3.23 . . . . 2 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* 강사가 정통부 부장이랑 같은 분이셨다.같이배우게 될 남학우도 정통부였다.오늘은 정통부 오리엔테이션을 빠지고 여학우 모임에 가지만 다음 모임엔 참석할 수 있었으면한다.다음부터는 수업이다.따라갈 자신은 없지만 못알아듣는다고 화내지 말았으면 좋겠다고 생각.자꾸 정통부이야기를 한것은 새싹교실에대해 경험한 일이 없어서다. 그리고 강사가 아는 선배분이란 것과 수금덕분에 지각횟수가 줄어들것이라느 점이 좋았고 강사한테도 수금을 하니 프로그램의 진지함도 보여 좋았다.앞으로 신세좀 지겠습니다~ ●u● - [박상희]
- 새싹교실/2012/아우토반/앞반/4.5 . . . . 2 matches
printf("원하는 문자 입력해줘 뿌잉\n");
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013 . . . . 2 matches
* 위키를 사용하지 않는 팀들은 그럼 새싹교실 스터디만 진행하는 건가요? 아니면 다른 곳에 기록을 한다거나 정모에서 배운 내용을 공유한다거나 다른 활동을 하는 건가요? 위키를 사용하지 않더라도 링크 없이 반 이름 정도는 리스트에 올려두는 게 어떨까 싶은 생각이 듭니다. - [김수경]
- 새싹교실/2013/라이히스아우토반/2회차 . . . . 2 matches
C : 반복문이 끝나고 수행할 연산. 보통은 i++ 같은걸 한다.
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/라이히스아우토반/6회차 . . . . 2 matches
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
당장 문제가 던져지면 if else같은 말로 떠오르는데 switch로 쓰려니 음.. 한번더 생각해야한다.
- 서지혜/Calendar . . . . 2 matches
* 글쿤 많이 지원하는구나.. 사실 attribute accessor나 lambda가 이해되는건아닌데ㅜㅜ attribute accessor가 어떻게 필드를 public처럼 접근가능하게 하면서 encapsulation을 지원하는지 잘 몰게뜸ㅠㅠ code block을 넘긴다는 말도 그렇고.. - [서지혜]
- 선택과집중 . . . . 2 matches
마음만 먹는다면 '무엇이든' 할 수 있다는 말이 있지만, 당신이 '모든 것'을 할 수는 없다. 삶은 우리에게 무한대의 선택을 제공한다. 하지만, 우리가 그것들을 '선택'이라고 부른다는 사실은 우리가 그것들 모두를 가질 수는 없음을 보여준다. 우리가 성숙해지려면 우리의 삶을 규정하는 선택과 노력을 제대로 해야 한다.
- 세미나/02대상 . . . . 2 matches
아 그이야기군. 그중에서 50%가 보고, 20%가 오기까지의 '''실행'''을 한다고 하면 될라나.. --상민
DeleteMe) 아씨 원래 수욜날 되는건데 한주를 빠져서 당분간 일주일에 네번을 가야한다는..--; -- 인수
- 소수구하기 . . . . 2 matches
50000 이하의 모든 소수를 구한다. 추천 목표시간은 1초 이내입니다.
'''문제정의 1'''의 50000이하 소수를 구하는 소스중 남훈이의 소스에서 제곱근 연산을 넣고, 모든 인자를 static, 컴파일러 옵션을 최대로해서 돌렸다. 출력은 필요 없으므로, 시간과 갯수만 출력한다. (Duron 800 MS VS.NET 2003)
- 속죄 . . . . 2 matches
* 무더운 어느 여름날, 열세살의 브리오니 탈리스는 우연히 창 밖을 내다보다가 언니 세실리아가 옷을 벗어던지고 정원의 분수대에 뛰어드는 것을 목격한다. 자매의 어릴적 친구이자 케임브리지에서 얼마 전에 돌아온 의사 지망생 로비 터너가 그런 세실리아를 지켜보고 서 있다. 그날 하루가 끝날 무렵, 탈리스 저택의 영지에서는 또다른 한 소녀가 강간을 당하고, 이때부터 세 사람의 운명은 생각지도 못했던 엇갈림을 겪게 되는데...
* 이 세명에게 같이 일어난 한가지 사건을 서로 다른 시각으로 한사람씩 차례로 돌아가며 의식의 흐름기법을 이용해 서술한다. 제길. 500페이지중 약 절반이상은 이렇게 의식의 흐름으로 때워버린다. 해가 어쨋네 땅이 어쨋네~ 뭐. 외국인이 자기네 말로 보면 재미있고 멋질지 모르지만, 기본적인 우리말 문법도 틀리는 이상한 번역작가의 글을 보면서 멋지다고 하긴 정말 너무 힘들고 짜증난다. 이부분 끝나는 곳까지 보는데 3달 걸렸다. 제길.
- 수업평가 . . . . 2 matches
물론 해에 따라 교수가 바뀌고, 교재가 바뀌고 강의의 내용이 조금씩 다를 수 있다. 여기서는 특정 수업을 평가한다기보다, 중앙대학교 컴퓨터 공학과의 일반적 교육 수준과 학생들의 과목별 중요도에 대한 생각을 평균해 보는 데에서 의미를 찾고자 한다.
- 수학의정석/집합의연산 . . . . 2 matches
그 숫자들의 subset을 모두 출력한다. (단, 진 부분집합을 출력한다.)
- 숫자야구/강희경 . . . . 2 matches
이 코드를 다시한번 [리팩토링]하여 보세요. 프로그램을 조금 더 이해하기 쉽게 그리고 코드의 모양을 좀더 이쁘게 바꿀 수 있지 않을까요? 이미 작성했던 코드를 다시 작성한다거나, 기존에 자신이 작성했던 코드를 [리팩토링]한다면 많은 것을 얻을 수 있을 것입니다. [임인택]
- 신기호/중대생rpg(ver1.0) . . . . 2 matches
printf("1.아이템을 산다\n2.쉰다\n3.보유 아이템 확인\n4.다른 마을로 이동한다\n5.저장\n6.불러오기\n7.종료\n");
printf("1.아이템을 산다\n2.쉰다\n3.보유 아이템 확인\n4.다른 마을로 이동한다\n5.콜로세움 입장\n6.저장\n7.불러오기\n8.종료\n");
- 아는것으로부터의자유 . . . . 2 matches
* 깨달음이 앎을 통해서 이루어지지만 궁극적으로 앎을 버렸을때 온다고 생각한다. 크리슈나무르티는 이 점을 책 제목에서부터 독자들에게 잘 지적해 주고 있다.
* 한 번쯤 읽어보면 좋을 서적이다고 생각한다.
- 여사모 . . . . 2 matches
- 아, 그리고 new연산자는 char[b]가 저장될 만큼의 메모리를 확보해서 그 주소를 포인터a에 넘겨주는 거지
int * a = new int[b]; // 이와 같은 경우에는 원하는 값을 할당받아 사용하므로 올바르게 실행된다. */
- 우리들의행복한시간 . . . . 2 matches
사형은 마땅히 없어져야 한다. 불우하다는 뜻으로 지었는지도 모를, 블루 노트에 담긴 내용이 전부 거짓이라 하더라도, 사형은 살인자에 대한 적개심밖엔 안 된다.
책을 읽고 나서 며칠이 지나, 좋고 나쁨을 구분하는 한 가지 기준은 삶과 죽음이라고 생각했다. 좋으면 삶을 향하고, 나쁘면 죽음을 향한다. 내가 우울하고 슬프면 죽음에 가까워 진 것이고, 내가 즐겁고 행복하면 삶에 가까워 진 것이다. 언젠가 죽지만, 그때까지는 좋은 삶을 마음껏 누리자.
- 위키QnA . . . . 2 matches
Semi Project에서 인원이 3명 이상이라면 자동으로 Regular Project가 되어야 합니다. 이렇게 한 이유는 Regular Project라면 대문에서 더 다수가 접근할 것이라고 생각되며 eye catch의 시간을 더 줄여야 한다고 생각하기 때문에 이렇게 둔것입니다. 둘의 차이는 인원의 차이 외에 현재 아무것도 없습니다. 그냥 2명 이하라고 하는것 보다 Semi라는 이름이 멋있어서 붙여놨것만 --;; --상민
난 지금이 딱좋은데 더 확장되면 골치 아플껏 같고.. 혹은 사용용도가 ZeroWiki 와 합쳐 져야 한다고도 생각. project의 직접 접근성을 없애는건 반대이고 Starting Point에 사용용도를 링크하는 것이 최적이라고 생각 --상민
- 위키기본css단장 . . . . 2 matches
자신이 원하는 css가 있다면 추가해 주시고 맘에 드시는 css투표란의 숫자를 올려주세요
* css는 오른쪽 위부분 자신의 아이디를 클릭하시면 (Alt+C,enter)css url란이 있는데 그곳에 원하는 css링크를 넣어보시면서 바꾸어볼 수 있습니다. 설명및 css파일들도 그 아래부분에 나와있습니다
- 위키를 써보고 싶고나처음화면 . . . . 2 matches
* 위키라는 검색어로 검색을 한다
* 펩피랩에 적용한다
- 위키에대한생각 . . . . 2 matches
(하지만 이게 단점이 되기도 한다.)
* 하지만 히스토리 삭제시의 그 가속감을 생각한다면!!! --NamelessOne
- 위키요정 . . . . 2 matches
위키는 마치 정원같다. 그래서 꾸준히 잡초는 뽑고, 큰돌은 치우고 물을 주고 자라는대 방해하는 가지는 제거해 나아 가야 한다.
공개된 [위키위키]들은 누구나 [위키요정] 될수있고, 누구나 되기를 권장한다.
- 위키의특징 . . . . 2 matches
* 현대의 정보화 사회에서는 많은 지식을 머리속에 가지고 있는 사람보다는 유용한 지식이 어디 어디에 있는지 알면서 쉽게 찾아내는 사람이 지식인이다. 그런 의미에서 위키는 자신의 개인적 지식이나 특정 커뮤니티에서의 지식등을 체계적으로(사람의 두뇌 구조와 유사한 방식.. 링크 - 유사연상) 관리한다. 사람의 두뇌 구조와 비슷하기 때문에 일종의 외부 두뇌(external brain)로 볼수도 있다. 위키위키는 논리적이고 이성적인 객관화된 사실이나 진실을 찾아가는데는 탁월하다.
* 네티즌이 웹에서 기록하는 일기나 일지를 뜻한다.(가장 정확하게 표현해주는 말) 무엇을 기록할지는 사용자 마음
- 이승한/자전거여행/완료 . . . . 2 matches
* 자전거 타는 테크닉도 중요하지만 수리 상태에 따라 상당히 많이 다르다. 타이어는 예사고 기름칠이 잘 안된 체인의 경우에는 가끔씩 체인이 끊어지는 사태도 벌어지고. 브레이크. 휠. 엎어지기라도 해서 기어가 망가지면 난감하기도하고 생각지도 못한 곳곳에서 문제가 계속발생한다.
강을 건너고 다리를 건너는 사투끝에 자전거 상점에 들러 수리. 자전거 여행한다고 하니 수리비 안받음.
- 이승한/질문 . . . . 2 matches
메인에서 들어간 sizeof(scores)는 배열 전체 크기를 리턴하는 반면에 함수에 들어간 sizeof(scores)는 int* 형의 크기를 리턴한다.
아마 승한이가 원하는 답은 아니겠지만 한번 적어본다. 지금 함수에 전달하는 것은 인트형의 포인터이기 때문에 함수는 지금 받은 것이 숫자인지 배열인지 알 수 가 없지. 게다가 주소를 참조하게 되서 함수 안에서 그 값을 변경해주면 원본 값도 변하게 되고. 그래서 나는 함수 안에 멤버 변수를 만들어서 전달 값을 복사해서 쓰거든. 보통 전달인수를 받을 때 컴파일러에서 그 원본 값을 쓰지 않고 복사값을 사용하는 건 알지? 그 작업을 프로그래머가 해주는 것이지. 밑은 여태 말한대로 구현하고 간단하게 테스트한 소스야.
- 이연주/공부방 . . . . 2 matches
결과가 제가 원하는 결과가 안나옵니다.
-뭔가 도움이 안될지도 모르지만;; %d는 그냥 변수에 저장되 있는 숫자의 자릿수를 그대로 받아서 출력하지만 %숫자d 같은경우는 안의 숫자만큼의 공간을 우선확보하고 변수안의 수를 읽어드리기 때문으로 알고있심 =0=;; 변수의 자리수가 안의 숫자를 오버해 버릴때의 문제는 나도 모르지만;; %.2f 같은경우는 소수점을 2자리까지만 표시를 하는게지 -_-!!! -[정수민]
- 이영호/문자열검색 . . . . 2 matches
fgets(buf, sizeof(buf), stdin); // 문자열이라고 했으니 space를 포함한다.
buf[strlen(buf)-1] = '\0'; // stream으로 받은 \n을 제거한다.
- 이영호/시스템프로그래밍과어셈블리어 . . . . 2 matches
프로그래머라면 Code의 본질을 알아야한다. 그것을 이루는 것이 Assembly이다. 이것을 수행하지 않은 프로그래머는 프로그래머가 아니라 Coder이다. Assembly로 특정 함수를 따라다니며 실제로 익히는 방법은 MSDN에서 나와있는 것을 그대로 베끼는 것보다 현명할지 모른다. 프로그래밍은 배우는것이 아니라 직접 Code를 짜보는 것이다. MSDN을 보는 것과 debug로 따라 가보는 것은 그 차이가 크다.
프로그래밍을 처음 접하는 사람으로서는 Assembly어는 무리가 있을지도 모르나, 약간의 지식을 갖춘 사람은 Assembly어를 꼭 배워야한다. Assembly어는 결코 사라질 수 없는 언어이다. 이것은 매우 중요하며, 이 때문에 대학에서도 정규 과정속에 포함되어 사라지지 않는 것이다.
- 이재환 . . . . 2 matches
남을 배려하고 사랑하는 사람이 되려고 한다..
일본어 초급 책을 1개월안에 마스터한다
- 정규표현식/스터디/문자하나찾기/예제 . . . . 2 matches
2. 1410번 대의 값만 표시한다.
3. 1300 번대의 값만 표시한다.
- 정규표현식/스터디/예제문제/이승한 . . . . 2 matches
2. 1410번 대의 값만 표시한다.
3. 1300 번대의 값만 표시한다.
- 정모/2003.1.15 . . . . 2 matches
* 위키가 어렵다 -> 위키는 처음 접근 장벽이 높은거 같습니다. 우리 01들이 02들에게 그걸 낮춰주지 못한게 실수인거 같습니다. 우리 01들도 처음에는 잘 사용안하다가, 위키를 사용하는 프로젝트를 함으로써 위키를 적극적으로 사용하게 되었는데, 02들을 대상으로 하는 프로젝트중 데블스 캠프 말고는 제대로 위키를 사용하게끔 도와준 프로젝트가 없었던거 같군요. 그나마 지금 활동하는 02들은 위키를 사용한다는 점이 위안이 됩니다. 03학번부턴 이걸 유의해야겠죠.
* 현재 ZeroPage 새내기를 모집하는데 있어서 ('뽑는다' 가 아니라 '모집한다'가 맞는거겠죠?) 기존에 행하여오던 방법에 문제가 있었다고 생각합니다. 우선 ZeroPage의 경우 회원을 1학기 초에 모집하는것으로 알고있습니다. (그 이후에는 수시모집인것으로 알고 있습니다.) ''친구따라 강남간다''처럼, ''친구따라 ZeroPage 회원되다''. 가 되는 새내기가 많은 게 사실입니다. 문제는 강남에 갔다가 다시 자신이 있던 곳으로 돌아온다는데 있는 것 같습니다. 매년 반복되어오던 현상이 아닌가요. -.-a 저는 이러한 모습에 부정적인 시각을 가지고 있는 터라, 다른 방법으로 새내기를 모집하였으면 좋겠다는 생각을 했습니다. 우선, 1학기 초가 아닌 여름방학 시작 전에 모집을 하는 것은 어떻습니까? 여름방학 전에 새내기 모집을 하고, DevilsCamp를 개최하면, 나름대로 좋은 방법이 될 것이라 생각합니다. 모집 전까지는 새내기와 2학년을 대상으로 하는 산발적인 세미나를 개최하여, ZeroPage에 대해 인지도를 높일 수 있고, 새내기들로 하여금 ‘’남들하니까 나도해야지‘’가 아닌, ‘’나에게 꼭 필요하구나‘’를 느끼게 할 수 있지 않을까요? (ps. 이에 대해 토론 페이지를 개설하는건 어떻습니까?) - 임인택
- 정모/2004.04.27 . . . . 2 matches
* 행사 목적 : 제로페이지에서 활동하고자 하는 사람이 페이지를 만들어 새회원이 되도록 한다. 이후로 새회원과 함께 할 수 있는 프로젝트, 스터디, 세미나를 계속한다.
- 정모/2004.6.28 . . . . 2 matches
*각 스터디 그룹은 의무적으로 스터디한 내용을 발표하는 형식으로 세미나를 한다.
[나휘동] - 파란 모자가 강압적 태도를 취한 듯해서 반성한다.
- 정모/2005.1.17 . . . . 2 matches
빙 둘러앉는 원탁 회의를 해보는건 어떨까요?? 지금은 ┛?위에 올라와 있어서 수동적인 회의가 이루어지는데 반해서 원탁회의를 한다면 같은 눈높이라 좀더 집중력 있는 회의가 될수도 있을것 같습니다. 물론 강의실은 신관쪽이 되겠죠. - [이승한]
* 회비운영에 대한 페이지를 만들고 영수증을 모아서 좀더 투명한 회비운영을 한다.
- 정모/2006.2.2 . . . . 2 matches
- 2월 16일에 친목을 다지기로 연락을 해보도록 한다.
- 3월 초기에 위키세미나 & ZeroPage 보여주기를 실시한다.
- 정모/2011.3.21 . . . . 2 matches
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
* Emacs & Elisp 후기 :의 소개를 보면서 다양한걸 사용하는 승한형에게 잘맞는 프로그램이라 생각됬다. 그 프로그램을 사용하기에 다양한걸 좋아하기도 하고 내가 가장많이쓰는건 Eclipse와 그걸 지원하는 플러그인이지만 여러가지를 개발하는 개발자에게 저것은 좋은프로그램이라 생각된다. 하지만 나에게는 아직도 Eclipse를 다루는것조차 아직은 버겁기에 우선 Eclipse를 하자는생각이 들었다.
- 정모/2011.5.2 . . . . 2 matches
* 원하는 인재상 : 언어 구사가 자유로우면서 프로그래밍 스킬이 뛰어난 사람... 이라고 홈페이지에도 쓰여 있습니다.
* 영어 점수를 따로 요구한다기 보다는 전화 면접 등이 전부 영어라 영어를 못하면 입사가 어렵습니다.
- 정모/2011.7.18 . . . . 2 matches
* 요즘 다니는 학원 선생님 왈.. 긍정적인 자세는 좋지만, 무작정 긍정적인 자세 보다는 현실을 직시하는 것이 우선이다. 라고 하시며 자신이 아는 50대 정도의 아저씨 이야기를 해 주셨는데 50대가 되면 이 나이대 절반의 남성은 불행하고, 그 나머지는 고군분투한다. 즉, 세상은 우리가 생각하는 것 만큼 만만한 곳이 아니니 무작정 난 잘된다라는 것 보다는 현실을 직시할 줄도 알아야 한다라고 하셨네요 - [권순의]
- 정모/2013.5.6 . . . . 2 matches
* 교수님께 문의 해본결과 논문급 퀄리티를 요구한다고 합니다.
* 좋은 코드를 알아 볼 수 있다고 해서, 우리가 좋은 코드를 쓸 줄 아는 건 아니니 좋은 코드를 쓰는 법을 공부해야 한다.
- 정모/2013.7.8 . . . . 2 matches
* 안혁준 회원 : 픽업과 교통편이 편리해야한다. 이동하는 인원이 많으므로....어떤 보드게임을 하고 누구에게 빌릴지와 같은 구체적인 계획이나 준비가 필요할 것같다.
* 형이 주중에 바쁜 사람들 모두를 대표한다고 생각했어야지요 ㅋㅋ -[김태진]
- 정모/2013.9.4 . . . . 2 matches
* 제가 할법한 잔소리는 이미 한종이가 위에서 했으니 제끼고 궁금한 게 있어서 이쪽에 붙습니다. 한명만 가는 경우 지원하지 말아야 할 당연한 이유가 있나요? 학술활동이 꼭 단체활동이어야 한다는 법도 없고.. 같이 갈 사람 못 구하면 지원도 못 받는 건 어쩐지 이상하게 느껴집니다. - [김수경]
* 또 하나 문제가 생길 수 있는게, 외부에서 zp가 거의 주최하는거에 대해서 클레임을 건다면 문제가 생길수 있어서 소모임방식으로 주최하는것에 조심해야한다.
- 조영준/파스칼삼각형/이전버전 . . . . 2 matches
private int scale; //한 칸당 너비 짝수야 한다
private int scale; //한 칸당 너비 짝수야 한다
- 조현태/놀이/미스틱아츠 . . . . 2 matches
좌우 이동은 물런, 점프도 한다. 물런 끝에가면 알아서 뛰어내린다.
혹시 누군가가 게임을 만들려고 한다면, 이미지 자료를 충분히 구하고 하거나 그래픽 디자이너를 구하고 만들기 시작하라고 권하고 싶다.
- 좋은글귀s . . . . 2 matches
"스포츠팬이라면 알고 있겠지만 최고의 운동 선수는 뛰어난 재능 이상의 것을 필요로 한다. 승리하겠다는 강력한 의지가 바로 그것이다.
"우리가 애플에 있는 이유는 세계에서 가장 우수한 컴퓨터와 세계에서 가장 우수한 소프트웨어를 만들기 위함이다. 우리는 현재 가장 우수한 일부 제품을 가졌다. 그렇지만 그것을 한층 더 발전시킬 수 있다. 우리는 훨씬 더 우수한 제품들을 만들 방법을 알려고 매일 일하는 것이다. 그러므로 그것이 우리를 채찍질하는 역할을 한다. 우리는 세계에서 가장 좋은 제품을 만들려 애쓰고 있다. 그리고 그렇게 할 때 우리는 편히 잠자리에 들 수 있을 것이다." - 제프리 크루이상크의 '애플의 방식' 중에서 (더난, 67p)
- 좋은위키페이지 . . . . 2 matches
["상민"] 이도 ["데기"] 가 말하는 부분들이 아쉽다. 그러한 느낌을 기록하고, 그것을 공유하는 것이 위키의 순기능중 하나라고 생각한다. 하지만, 그런 모습이 ZeroWiki에 부족한 이유가 느낌을 기록하기 위해 글을 쓰는 '''용기'''가 부족하기 때문이라고 생각한다. ZeroWiki에서는 경험과 느낌이 표현되는 곳은 프로젝트 페이지의 '''여정'''이나 '''느낌''' 기록하는 부분이나 이벤트의 '''후기''' 같은 부분이 주가 되고 있다. --["상민"]
- 지금그때2003/규칙 . . . . 2 matches
* 게임규칙을 적은 종이를 항상 왼손에 들고 이야기 한다.
* 질문외에 모든 이야기는 다음과 같이 시작한다.
- 지금그때2003/선전문 . . . . 2 matches
금방 학교를 졸업하고 머지않아 직업을 가져야 한다는 걸 깨달았으리라.
눈 덮힌 들판을 갈 때는 모름지기 함부로 걷지 말아야 한다.
- 지금그때2004/게시판홍보문안 . . . . 2 matches
금방 학교를 졸업하고 머지않아 직업을 가져야 한다는 걸 깨달았으리라.
눈 덮힌 들판을 갈 때는 모름지기 함부로 걷지 말아야 한다.
- 지금그때2004/회고 . . . . 2 matches
* 사회자는 건강관리도 잘 해야 한다. 특히나 목감기 조심
* 패널들의 이력사항에 대한 소개가 미비했다는 생각이 듭니다. 패널들의 소개를 좀 더 적극적으로 자세히 하고 홍보를 한다면, 더 적극적인 질문을 이끌어내지 않았을까 생각합니다.
- 지금그때2005/회의20050318 . . . . 2 matches
자신이 원하는 질문을 추가할 수 있음
원하는 사람은 질문을 자기의 메뉴판에 추가할 수 있다.
- 지식샘패턴 . . . . 2 matches
'''사람들은 너무나도 당연히 지식을 얻어야 한다. 사람들은 지식을 어디에서 얻어야하는지 알고 있으며, 가장 위대한 지식의 원천 중 하나는 아직 개척되지 않았다고 생각한다.'''
- 진법바꾸기/김영록 . . . . 2 matches
응용 : 원하는 자리의 수의 값을 얻을수 있다.
기능을한다.
- 질문레스토랑 . . . . 2 matches
* 자신이 원하는 질문을 추가할 수 있음
* 원하는 사람은 질문을 자기의 메뉴판에 추가할 수 있다.
- 창섭/배치파일 . . . . 2 matches
컴퓨터의 동작 상태를 살펴 보면 항상 사용자와의 상호작용에 의하여 작업이이루어진다는것을 알 수 있습니다. 도스라는 운영체제도 사용자가 명령을 입력하면 그 명령에 대해 도스가 분석하여 사용자가 원하는 실행 결과를 제공합니다.
배치파일의 기능은 순차적이고 반복된 동일한 작업 과정을 몇개의 혹은 수십, 수백 개의 연관된 명령어를 하나의 파일로 집약하여 그 하나의 파일(배치파일)만 실행함으로써 원하는 작업 과정을 수행하는것입니다.배치파일에 붙는 확장자는 .bat(batch 의 약어) 입니다.도스에서 실행이 가능하기 때문에 .com, .exe 확장자가 붙는 외부 명령어와 함께 실행 가능한 파일로 분류됩니다.차이가 있다면 .com, .exe 명령어는 컴퓨터만 해석 가능한 기계어 코드로 구성되어 있는반면, 배치 파일은 사람이 알아볼수 있는 일반 텍스트로 이루어져있다는 것입니다.
- 콤비반장의메모 . . . . 2 matches
만화 형사 가제트(Inspector Gadget)에서 콤비 반장(Chief Quimby)은 형사 가제트에게 비밀 지령을 내릴땐 항상 자동 폭파되는 특별한 메모지를 사용하곤 했다. 그러나 인터넷 시대를 맞이한 콤비 반장은 이제 메모지 대신 한번만 사용할 수 있는 파일을 사용하려고 한다. ["콤비반장의메모"]와 같은 일회용 정보는 컴퓨터로 어떻게 구현할 수 있을까.
* 사용자가 재생 안한 파일을 그대로 복사한다면?
- 큰수찾아저장하기 . . . . 2 matches
키보드로 9개의 숫자를 입력하고, 3 * 3 공간에 저장한다.
이런식으로 출력한다. (입력된 숫자만)
- 큰수찾아저장하기/허아영 . . . . 2 matches
물론 이런 생각도 해 보았다. matrix를 temp1,2 matrix를 만들어서 행과 열을 따로 계산한다..
분명히 열심히 읽는데 말이야..ㅎㅎㅎ 문제는 내 머리의 메모리가 작아서 몇몇 부분은 기억을 잘 못한다고...ㅎㅎㅎ 그러니 다 적힌내용으로 삽질하고 있어도 너그러운 아량으로 이해해주시길..ㅎㅎㅎ - [조현태]
- 탈무드 . . . . 2 matches
* 행복을 얻으려면 만족으로부터 멀어져야 한다.
* 신은 명랑한 사람을 축복해 주신다. 낙관은 자신뿐만 아니라 남들까지 밝게 한다.
- 테트리스만들기2006/예제1 . . . . 2 matches
가로와 세로의 크기는 임의로 정한다.
==== 발로짠 원하는 위치에 점찍는 소스 ====
- 토이/메일주소셀렉터 . . . . 2 matches
특정 파일을 읽어들여 거기에 있는 문자들 사이에 공백을 넣어 다른 파일에 저장한다. 이때 개행문자는 무시되어야한다.
- 통찰력풀패턴 . . . . 2 matches
일단 지식의 샘([지식샘패턴])을 발견했으면, 그로부터 들이킬 물이 어마어마할 수 있다. 이 패턴은 위대한 작품을 보다 쉽고 바람직하게 공부하는 방법을 제시한다.
대화 시 분위기는 중요한 역할을 한다. 어떤 환경은 대화를 촉진시키지만(CommonGroundPattern, PublicLivingRoomPattern), 그렇지 않은 환경도 있다.
- 파스칼삼각형/sksmsvlxk . . . . 2 matches
* 일단 불필요한 공간을 쓰지 않고 할 수 있도록 해야 한다.
* 내가 사용할 수 있는 함수가 존재하는 지 알아야 한다.
- 포커솔리테어평가 . . . . 2 matches
입력은 한 줄 당 다섯 개의 카드씩 총 25개의 카드가 입력된다. 각 카드는 2개의 문자로 구성된다. 첫 번째 문자는 카드의 순서를 나타낸다. 카드 순서는 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K'이다. 두번째 문자는 카드의 종류로서 'S', 'H', 'D', 'C'로 표시한다.
다음 계급에 따라 순서대로 입력에의 열과 행에서 찾아진 계급별 개수를 출력한다. 가장 낮은 것부터 가장 높은 것으로의 계급 순서는 다음과 같다.
- 피보나치/김상섭 . . . . 2 matches
cout << " 원하는 피보나치 수열은(종료시 음수)? ";
cout << " 원하는 피보나치 수열은(종료시 음수)? ";
- 피보나치/김준석 . . . . 2 matches
/*p_num의 용도 : 만약 10번째까지 구한다면
p_num을 한번 돌릴때마다 1감소 시켜서 0 이 될때까지 한다면
- 한비자 . . . . 2 matches
* 이 책을 읽으면서 아무런 비판없이 받아들였던 공자의 주장도 저렇게 비판적으로 받아들일 수 있다는 것을 배웠다. 옛날부터 그렇게 해왔고, 옳은 것이라고 배운 곳도 실상을 살펴보면 그렇지 않을 수 있다는 것을 배웠다. 신상필벌을 명확하게 하는게 중요하다. 그리고 항상 어느 한쪽으로 치우쳤을 경우 문제가 생길 수 있으니 그에 대비해 준비 해야 한다. 그리고 사람이 각자 자신의 이익을 위해서 움직인다는 것도 염두에 둬야한다.
- 행사 . . . . 2 matches
* 3월달에 준비를 시작으로 보통 4~5월에 개최한다.
* 책 기증과 함께 만담을 나눌 수 있는 기회를 제공한다.
- 협상의법칙 . . . . 2 matches
처음 저자가 냉장고를 살때의 스토리 텔링에서 난 '''너무 피곤하다.'''란 느낌에 사로 잡혔다. 이 선입감은 읽는 동안 나를 불편하게 만들었다. 더구나, 저자는 모든 사람 사이의 대화를 이러한 딱딱한 느낌의 협상의 대상으로 보고 이야기를 전개한다. '''이렇게 피곤하게 신경쓰며 평소에 살일이 있을까?''' 라는 생각이 든다. 저자가 문체를 약간은 더 평화롭게 해결하는 방향으로 잡았다면, 좀더 나에게 의미가 있는 책일것 이라고 생각한다. --NeoCoin
- 호너의법칙/남도연 . . . . 2 matches
int j=a[0];//j는 an의 역할을 한다.
int t=a[i+1];//t는 an-1의 역할을 한다.
- 호너의법칙/박영창 . . . . 2 matches
// index 차수의 계수를 배열로 지정한다.
horner_func 호너의 법칙을 재귀함수로 구현한다.
- 홈페이지만들기/css . . . . 2 matches
스타일 시트에서는 원하는 글자 크기를 마음대로 조정할 수 있다.
글꼴 크기에 사용되는 단위는 아주 다양하게 있다. 단위를 사용하지 않으면 기본적으로 픽셀 단위를 사용한다.
- 화이트헤드과정철학의이해 . . . . 2 matches
* '진정한 발견의 방법은 비행기의 비행과 유사하다. 그것은 개별적인 관찰의 지평에서 출발하여 상상적 일반화의 엷은 대기층을 비행한다. 그리고 다시 합리적 해석에 의해 날카로워진 새로운 관찰을 위해 착륙한다.' - 서문중 인용된 Whitehead 글.
- 회비 . . . . 2 matches
* 지출시 영수증을 반드시 받아서 보관, 기록을 한다.
급기야 회비 통장이 마이너스가 났군요. 저번에 위키설명회 2005에서 남은 만원을 넣어야 넣어야 한다는 생각을 했었는데;; 요새 극심한 생활고에;; 내일은 채워 넣어야 겠네요. 휘동형한테 만원도 갚고요 ㅠ.ㅠ - 이승한
- 후기 . . . . 2 matches
함수형 언어 Haskell을 배우는 시간을 많이 가졌는데 참 재미있었다. 더욱 재미있는 것은 함수형 언어의 좋은 점이 다른 언어에도 녹아들 수 있다는 것이다. 수학에서 출발하는 개념이 실제로 쓰이도록 중간에서 다리 역할을 하고 있다. 수학이 프로그램 언어에 미치는 영향력을 볼 때 학부 때 컴퓨터 공학 대신에 수학을 전공해도 좋을 것 같다. 그게 안 된다면 대안언어축제라도 참가하면서 [성장]할 수 있어야 한다.
대안언어가 보여준 많은 새로운 생각이 널리 퍼지지 않아 안타깝다. 혁신을 이루려면 많은 사람이 그 아이디어를 받아들여야 한다던데, 대안언어축제 이후에 어떠한 변화가 있을까? 새로운 아이디어를 적용한 코드를 작성할 수 있을까? 새로운 프로그램을 만드려고 할 때, 현재 사용하는 언어보다 더 적당한 언어를 선택할 수 있을까? 기존에 개발하던 프로그램이 있을 때는 새로운 언어로 갈아탈 수 있을까? 창의적인 아이디어와 실용성 사이 간격을 좁혀서 대안언어가 정말로 대안이 되길 꿈꿔본다.
- .vimrc . . . . 1 match
set autoindent " 자동으로 들여쓰기를 한다.
- 05학번만의C++Study/숙제제출/1 . . . . 1 match
섭씨 온도를 전달인자로 전달받아 화씨 온도로 환산하여 리턴하는 사용자 정의 함수를 main() 함수가 호출하는 프로그램을 작성하시오. 프로그램은 섭씨 온도로 입력할 것을 요구해야 하고, 다음과 같은 실행 결과를 출력해야 한다. 참고로, 섭씨 온도를 화씨 온도로 변환하는 공식은 Fahrenheit = 1.8 X Celsius + 32.0 이다.
- 2006신입생/방명록 . . . . 1 match
-정리 한다고 제가 좀 정리를 했지만 그래도 지저분한 모양이..ㅡㅡ;; 그러고 임의로 제가 정리 한거 기분 나쁘신 분들 죄송합니다^^; - [송수생]
- 2010Python . . . . 1 match
* 각자 원하는 매체로 공부해 온 뒤 5분 정도씩 자기가 공부한 내용을 발표하고 서로 토론.
- 2학기자바스터디 . . . . 1 match
이 스터디그룹은 왜 한다는 소리가 안나오냐? 하면 가서 볼려구 했는데..^^; -[상욱]
- 2학기파이선스터디/모듈 . . . . 1 match
mymath.py 라는 파일로 저장한다..
- 3,5,7빵Problem . . . . 1 match
이때, 컴퓨터가 두번째로 시작한다고 가정하고 사용자의 입력에 따라 무조건 이길 수 있는 최적해를 출력해 이기는 프로그램을 짜면 됩니다.
- 3DCube . . . . 1 match
* 3차원으로 큐브를 구현해서 조작할 수 있도록 한다.
- 3N+1Problem . . . . 1 match
입력으로 22가 주어졌을때, 출력되는 값의 수 n(22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1) 는 22 16이다. 이를 n에 대한 cycle-length 라고 한다.
- 3N+1Problem/구자겸 . . . . 1 match
// 최대값을 구한다
- 3N+1Problem/김회영 . . . . 1 match
int max=0; //최대길이의 사이클 길이를 저장한다.
- 3rdPCinCAUCSE/FastHand전략 . . . . 1 match
대강 디자인한 것으로는, Ball 이라는 객체가 있는데 이 Ball 은 각각 lower 와 higher 가 있어서 매 입력마다 자신보다 큰 Ball, 작은 Ball들을 가지고 있게 됩니다. 그리고 해당 Ball 중 그 Ball 과 연관이 있는 Ball 들, 즉 lower 의 수와 higher 의 수로 봤을때 전체 갯수의 평균값보다 큰 녀석들을 제하고 구한다 식이였습니다.
- 3rdPCinCAUCSE/ProblemB . . . . 1 match
출력은 표준 출력이다. 출력은 T줄로 이뤄진다. 각 테스트 케이스에 대해서 네 개의 직사각형이 차지하는 면적을 출력한다. T개의 테스트 케이스를 모두 맞혀야 이 문제를 맞힌 것이다.
- 5인용C++스터디/비트맵 . . . . 1 match
사용한다.
- 5인용C++스터디/클래스상속 . . . . 1 match
이에 protected키워들를 사용해서 현재클래스와 상속하는 클래스에게만 엑세스를 허용한다.
- 5인용C++스터디/템플릿스택 . . . . 1 match
|| 나휘동(사용자가 배열 크기 정하게 하다 다 못함.) || Upload:stack_templete_Leonardong.cpp || 원하는 결과는 아니었지만.. 그런대로 잘 했음. ||
- AI세미나 . . . . 1 match
http://www.red3d.com/cwr/boids/ - 불과 몇 가지 규칙으로 진짜 새처럼 보이게 한다.
- AKnight'sJourney . . . . 1 match
기사는 또 다시 같은 검은색과 흰색 사각형을 보는 것이 지루해 '''전 세계'''를 여행하기로 결심했다. 기사의 세계는 8*8 보다 각은 면적을 가진 체스판이다. 기사는 이동할 때 두 칸 이동하고 직각으로 한 칸 이동한다.
- AM/20040705두번째모임 . . . . 1 match
ex) 배우는 부분이 Windows Programming, Window Event Driven Programming, GDI, GUI Control 들이라 한다면
- APlusProject . . . . 1 match
보기 좋고 바로바로 알려주기 위해서 준비한다고 생각했는데 요구사항 번호 이런게 있으면 옆에 요구사항 간단한 언급도 필요할 것 같더라구요
- AcceleratedC++/Chapter15 . . . . 1 match
15장은 5장에서 제시되었던 문자열 출력프로그램을 객체지향에 입각해서 설계하는 방법을 설명한다.
- AcceleratedC++/Chapter16 . . . . 1 match
ㅋㅋ 이건 볼거 없다. 어펜딕스 1은 볼만한 가치가 있어보이던데.. 난 볼라고 한다.
- AdvertiseZeropage . . . . 1 match
* 학회의 성격을 분명히 한다. (일부 새내기들이 ZeroPage에 들어오면 선배들이 프로그래밍을 가르쳐줄 것이다 라고 생각하고 있습니다)
- Ant/BuildTemplateExample . . . . 1 match
<!-- 여기서는 build, dist 디렉토리를 삭제한다. -->
- Ant/TaskOne . . . . 1 match
위의 예에서 Task 는 무엇일까.? task 라 함은 단어 뜻 그대로 작업이라는 말을 뜻한다. 위의 예에서 볼 수 있는 작업을 javac,mkdir,jar,delete 등이 그 Task 라고 할 수 있다.
- AntOnAChessboard/문보창 . . . . 1 match
어느정도의 규칙(?)만 파악한다면 O(1)만에 구할 수 있다.
- AntTask . . . . 1 match
<!-- 여기서는 build, dist 디렉토리를 삭제한다. -->
- AppletVSApplication/상욱 . . . . 1 match
애플릿은 왜 작은 프로그램으로 불릴까? 그것은 항상 웹 페이지 안에서 자바를 지원하는 웹 브라우저에 의해서만 실행되기 때문이다. 웹 페이지
- AustralianVoting/문보창 . . . . 1 match
Presentation Error를 잡아야 한다. 수행시간과 메모리사용량 또한 만족할 만한 수준이 아니다.
- Basic알고리즘 . . . . 1 match
{{| " 그래서 우리는 컴퓨터 프로그래밍을 하나의 예술로 생각한다. 그것은 그 안에 세상에 대한 지식이 축적되어 있기 때문이고, 기술(skill) 과 독창성(ingenuity)을 요구하기 때문이고 그리고 아름다움의 대상(objects of beauty)을 창조하기 때문이다. 어렴풋하게나마 자신을 예술가(artist)라고 의식하는 프로그래머는 스스로 하는 일을 진정으로 즐길 것이며, 또한 남보다 더 훌륭한 작품을 내놓을 것이다. |}} - The Art Of Computer Programming(Addison- wesley,1997)
- Bicoloring/문보창 . . . . 1 match
평이한 문제. 이산수학이 생각난다. if...else 구문을 사용할때 모든 조건을 프로그램에서 포함하는지 주의깊게 코딩해야 한다.
- Bigtable/분석및설계 . . . . 1 match
* GFS는 전체 테이블을 scan해야 한다.
- BoaConstructor . . . . 1 match
3. 해당 코드들의 Abstraction Level 을 적절히 맞춰서 리팩토링하며 인터페이스나 모듈관계들에 대한 디자인과 원하는 기능들에 대한 구현 모습에 대한 피드백을 받는다.
- BookTemplate . . . . 1 match
[노스모크]에서는 ISBN 링크가 되는 책소개의 경우 링크를 상단에, 서평을 하단에 적는것을 원칙으로 한다.
- BuildingParserWithJava . . . . 1 match
파서를 만들면서 고생했던 기억이 있는 사람이라면 책과 함께 CD를 꼭 빌려서 예제를 보길 강력히 추천한다.
- BusSimulation/영동 . . . . 1 match
* 열심히 할라고 한거 같지만 문제의 의도에서 벗어 났음. 이 문제는 실제 각 이벤트가 일어나면 다른 조건에도 긴밀하게 영향을 주고 받아야 제대로 돌아 간다. 버스가 이동할때와 버스 정류장에 도착할때 다른 데이터들에게 어떠한 영향을 끼치는지에 대해서 생각해 보아야 한다. 즉 각각의 데이터에 영향을 끼치는 이벤트가 어떠한 상황에 발생하는가를 생각해보고 그 상황에서 영향을 끼치는 데이터에 어떠한 방식으로 그 영향을 반영할 것인가도 생각해볼 문제- 상협
- BusSimulation/태훈zyint . . . . 1 match
void start() { movingbus=true;} // 버스를 움직이게 한다. 첫 출발할때!
- Button/영동 . . . . 1 match
음... 참고 한다는게 예제를 거의 베끼다시피 해버렸네요.
- C 로배우는패턴의이해와활용 . . . . 1 match
= GoF 디자인 패턴! 이렇게 활용한다:C++로배우는패턴의이해와활용 =
- C++Analysis . . . . 1 match
C++를 더욱 더 잘 이해하고 사용한다.
- C/Assembly . . . . 1 match
-fomit-frame-pointer 함수를 call 할때 fp를 유지하는 코드(pushl %ebp, leave)를 생성하지 않도록 한다.
- C/Assembly/Main . . . . 1 match
따라서 프로그램이 시작하고 나갈때에는 어디서 프로그램을 시작하고 끝냈는지 위치를 저장(push)하고 꼭 반환(leave)해야한다.
- C/Assembly/연산 . . . . 1 match
이렇게 구현했는데 GNU Compiler는 %eax에 포인터를 넘겨줘 그것을 가지고 계산을 한다.
- C/Assembly/포인터와배열 . . . . 1 match
하지만 배열(LC0)은 프로그램이 수행 되고 정의 부분이 되는 순간 LC0 영역의 데이터를 스택 영역에 복사한다.
- CPPStudy_2005_1/STL성적처리_2 . . . . 1 match
쩝.. -_-;; map 을 써봐야한다는 강박관념때문에 쓰기는 했는데.. -_-;; spec에 sort가있었다. ;; 아무래도 다시 짜는게 더 나을 것 같다.
- CPPStudy_2005_1/STL성적처리_4 . . . . 1 match
//fout << a+b << endl; // cout으로 화면으로 출력한다면, fout은 연결된 output.txt에 a+b를 출력
- CSS . . . . 1 match
HTML과 CSS를 분리한 웹페이지야말로, 사용자 측면에서도 개발자 및 디자이너 측면에서도 바람직하다. 웹접근성 뿐 아니라, 유지보수 관점에서도 제대로 된 구조화가 이루어져야 한다고 생각해요. - [(kiryu)]
- Categorynations . . . . 1 match
수많은 나라들을 소개한다.
- CauGlobal/Episode . . . . 1 match
1. 이때 꼭 같은 곳으로 가는 항공편일 필요는 없습니다. 예를들어, 샌프란시스코로 가는 JAL 항공권일 경우, 서울->동경 구간이 WAIT 상태라면, LA로 가는 예약에서 서울->동경 구간을 확보한다면 되는거죠.
- ChangeYourCss . . . . 1 match
UserPreferences 에서 로그인후 자신이 원하는 css 를 설정해줄 수 있다. 각자가 취향에 맞는 스타일 시트를 골라서, 만들어서 사용해보자. ^^;
- CheckTheCheck/곽세환 . . . . 1 match
toupper를 쓰려면 ctype.h를 include해야한다.
- Chopsticks/문보창 . . . . 1 match
가장 큰 젓가락 세트부터 선택한다고 보았을 때, 총 K + 8 번의 선택이 존재하고, 다음 점화식이 나올 수 있다.
- CivaProject . . . . 1 match
WIPI 에서 ATOC 를 지금 네가 하는것처럼 수행한다더구만 --;; .. --["neocoin"]
- CleanCodeWithPairProgramming . . . . 1 match
* 하나의 작업을 둘이 한다는 점에서 당연히 어려운 점이 있을 수 밖에 없었지만, 막히는 부분이 생기면 바로 질문을 하거나 이야기를 통해서 문제를 해결 할 수 있는 점이 매력적이였습니다. - [조영준]
- CodeRace . . . . 1 match
관중들은 원하는 경우 미리 비워둔 탁자에서 현장 팀을 구성해서 중간에라도 대회 참여가 가능합니다.
- CommentMacro . . . . 1 match
만약 모든 페이지에 Comment 매크로를 붙이기를 원한다면 config.php에 다음을 추가해주세요.
- CompleteTreeLabeling/조현태 . . . . 1 match
일단 만들기는 했지만.. 조건을 만족시키지 못한다.
- CompleteTreeLabeling/하기웅 . . . . 1 match
예 2)) 예 1번에 이어서 7개에서 루트 1개를 뺀 3개를 분기계수 2에 맞게 3개씩 3개씩 나눠야 한다.
- ComputerGraphicsClass/Exam2004_1 . . . . 1 match
A,B,C 좌표가 있다. 이에 대해 점 (__,__) 를 기준으로 45도 방향 시계방향으로 Rotation을 하려고 한다.
- ComputerNetworkClass/Exam2004_1 . . . . 1 match
다음 그림은 Y 라우터의 경우 포트 3으로 X 라우터와 연결되어있는 상태이며 X 라우터는 CIDR 로 ____.____.___.____ 에 대해 Network A 로, ____,____,___,____ 에 대해 Network B 로 라우팅 한다.
- ConnectingTheDots . . . . 1 match
BoardPanel - View. 실제 Swing 등 구체적 라이브러리들을 이용, 실제 표현을 한다. BoardPresenter 와 상호참조 관계를 가진다.
- ConstructorParameterMethod . . . . 1 match
void setXnY(int x, int y) // smalltalk에서는 setX:xNum y:yNum이라는 메세지를 사용한다.
- CooperativeLinux . . . . 1 match
신기하다. 윈도우즈 쓰레드로 돌아가는 리눅스라고 한다. 이전에 BeOS 같은 경우를 본적은 있지만(OS on OS) 음.. 리눅스 커널이 윈도우 쓰레드로 돌아간다..라.. 근데 안전한지는 잘 모르겠다!
- CppStudy_2002_1/과제1/상협 . . . . 1 match
char *ex="캬캬캬 출력한다.~";
- Cpp에서의가변인자 . . . . 1 match
C의 io 라이브러리인 printf에 쓰이는 그것이다. 또는 MFC - CString의 CString::Format이나 CString::AppendFormat에 쓰이는 그것이기도 하다. 함수 쓸때 ...이라고 나오는 인자를 가변인자라고 한다. 이렇게 하면 인자를 여러개를 받을 수 있다.
- CvsNt . . . . 1 match
이를 돌리려면 Windows용 ViewCVS 패키지를 받아야 한다. http://www.cvsnt.org/wiki/ViewCvs 를 보면 알리라.
- DNS와BIND . . . . 1 match
(db 파일들은 /usr/local/named에 존재한다고 가정)
- DPSCChapter5 . . . . 1 match
'''Command(245)''' 는 요청(request)이나 명령(operation)을 object로서 캡슐화시킨다. 그러함으로써 각각 다른 명령을 가진 클라이언트들을 파라미터화 시키고, 요청들을 queue에 쌓거나 정렬하며, 취소가능한형태의 명령들을 지원한다.
- DataCommunicationSummaryProject . . . . 1 match
* 그리고 우선은 약속은 해오기로 했고, 안하기로 모두 모여서 합의하지 않은 만큼 우선 약속은 지켜야 한다고 생각합니다. - 상협
- DataCommunicationSummaryProject/CellSwitching . . . . 1 match
* 고정길이 셀 사용(53byte = 48 byte의 페이로드 + 5byte의 헤더, ATM의 패킷은 셀이라고 한다.)
- DataCommunicationSummaryProject/Chapter12 . . . . 1 match
* 대다수의 커뮤니케이션 위성은 지구로부터 먼, 그래서 눈에 띄는 지연시간의 GEO를 사용한다.
- DataSmog . . . . 1 match
정보 무더기는 더 이상 지식이나 지혜가 아니다. DataSmog 로부터 자신을 보호하기 위해 스스로 여과장치가 되어야한다.
- DataStructure/Foundation . . . . 1 match
* 위에서 다음으로 생각이 바뀌었습니다. 반복횟수를 넣는다기 보다는... ~에 비례한다라는 식으로.. 예를 들어 반복횟수가 n+3 이런식이라도 O(n)이렇게 되는 것이져..맞을까?--;
- Data전송 . . . . 1 match
3. html 이 메인 역활을 하므로 주소창에 파일이름.html 을 설정한다.
- DeleteThisPage . . . . 1 match
페이지를 삭제한다는 의미로 쓰는 문구.
- DesignPattern2006 . . . . 1 match
* 파워풀한 프로그래밍을 위한다면(과연...그럴까^^;;) 참여자에 이름을 남기세요 - [상욱]
- DesktopDecoration . . . . 1 match
다양한 윈도우 클론들이 존재한다.
- DevCpp . . . . 1 match
가볍고 쉬운 무료 C, C++ IDE. 한글도 지원한다.
- DevOn . . . . 1 match
* [정진경] - Gnome 3.10 즐기기는 잘 기억나지 않는다... 미안.. 진크리에이터... Wayland는 나름 도움이 되었는데, X 서버가 컴포지터가 인터프로세스 통신을 한다는 사실을 처음 알게 되었다. Wayland는 X 서버와 컴포지터가 합쳐져 있는 형태이고, 프레임버퍼를 위한 API가 제공된다는 것.. 이 부분은 나중에 공부해서 해당 페이지에 자세한 내용을 기술할 필요가 있을 것 같다...
- Direct3D . . . . 1 match
DirectX 9.0 에서는 ApplicationWizard 를 지원한다. 그 전까지는 뭔가 허술하게 보였는데. 9.0에서는 확실한 프레임워크의 모습을 보여준다.
- DoItAgainToLearn . . . . 1 match
Seminar:SoftwareDevelopmentMagazine 에서 OOP의 대가 Uncle Bob은 PP와 TDD, 리팩토링에 대한 기사를 연재하고 있다. [http://www.sdmagazine.com/documents/s=7578/sdm0210j/0210j.htm A Test of Patience]라는 기사에서는 몇 시간, 혹은 몇 일 걸려 작성한 코드를 즐겁게 던져버리고 새로 작성할 수도 있다는 DoItAgainToLearn(혹은 {{{~cpp DoItAgainToImprove}}})의 가르침을 전한다.
- DoWeHaveToStudyDesignPatterns . . . . 1 match
제 개인적인 의견으로는, 다른 것들과 마찬가지로 뭐든지 공부한다고 해서 크게 해가 되지는 않겠지만(해가 되는 경우도 있습니다 -- 다익스트라가 BASIC을 배워 본 적이 있는 학생은 아예 받지 않았다는 것이 한 예가 될까요?) 공부해야 할 필요가 있겠는가라는 질문에는 선뜻 "그렇다"고 답하기가 쉽지 않습니다. 여기에는 몇가지 이유가 있습니다. (제 글을 "DesignPatterns를 공부하지 마라"는 말로 오해하지는 말아 주기 바랍니다)
- Doublet . . . . 1 match
아래는 HEAD에서 TAIL에 이르는 과정으로, doublet이란 퍼즐은 이렇게 각 단어의 글자 하나씩을 바꿔 차례로 단어를 만들어 원하는 결과에 도달하는 것입니다.
- DrawingToy . . . . 1 match
단추 대신 키보드의 방향키를 이용한다.
- Eclipse/PluginUrls . . . . 1 match
* 가끔 동기화가 안되는 경우가 생기기도 한다.
- EclipsePlugin . . . . 1 match
JSP 코드 Assistant 인데 정말 엄청 가볍게 느껴지는 Eclipse Plug-in 이다. Highlight 는 기본이고 자동완성 또한 지원한다.
- EightQueenProblem/kulguy . . . . 1 match
* 성능을 높이고자 한다면 우선 시공 교환 법칙을 이용하자.
- EightQueenProblem/밥벌레 . . . . 1 match
procedure SetQueens(n: Integer); // 퀸 배치하기. 이 소스의 핵심함수. n은 현재 사용안한다. 처음엔 RandomSeed로 쓰려했음..-_-;
- EightQueenProblem/이창섭 . . . . 1 match
* 임의의 한 점에 퀸을 놓고 그곳을 시발점으로 하여 공격할 대상이 없는 곳에 퀸을 놓아 퀸이 총 8개가 되면 출력하고 끝난다. 퀸이 8개가 되지 않으면 다시 임의의 점을 수정한다. 이 임의의 점은 모든 좌표를 돌며 정해진다.
- EightQueenProblem/조현태2 . . . . 1 match
//출력하고 종료한다.
- EnglishSpeaking/2011년스터디 . . . . 1 match
* 컴공인의 고충 - 사람들이 컴퓨터 고쳐달라고 한다.
- EnglishSpeaking/TheSimpsons/S01E02 . . . . 1 match
* 항상 학교에서 사고를 치는 바트와 똑똑하지만 뭔가 철이 없는 마틴. 어느 날 학교에서 학생들은 IQ 테스트를 치르게 되고 자꾸 자신을 약올리고 고자질하는 마틴이 재수없다고 느낀 바트는 자신의 시험지와 마틴의 시험지를 바꿔치기 한다. 그 결과 IQ 216이라는 판정 결과가 나오고 바트는 천재학교에 입학하게 되며 가족들의 대우가 달라진다. 하지만 천재 학교에서 제대로 적응할리가 없는 바트는 천재 학교 아이들에게 왕따를 당하고 옛날에 같이 놀던 친구들도 바트가 자신들과 다른 존재라며 상대하지 않는다.
- EnglishSpeaking/TheSimpsons/S01E03 . . . . 1 match
* 바트의 초등학교로부터 바트의 아버지 호머가 일하는 원자력 발전소로의 현장학습이 이루어진다. 바트가 사고를 치는 바람에 호머는 직장에서 짤리게 되고 다른 직업을 구하려고 하지만 이도 여의치 않자 호머는 자살을 시도한다. 하지만 위험하게도 다리에 정지 표지판이 없음에 문제가 있다는걸 알고 호머는 안전표지판 세우기의 선구자(?)가 된다. 이후 호머의 안전 연설은 원자력 발전소에까지 이루어지고 자신의 회사에 지장을 줄 우려가 있음을 느낀 원자력 발전소 사장 번즈는 호머를 따로 불러 복직을 시켜주겠다고 하는데..
- ErdosNumbers/차영권 . . . . 1 match
/* 입력받은 줄에서 이름을 추출한다 */
- Erlang/기본문법 . . . . 1 match
* '/' 와 같은 연산자는 자동으로 실수를 리턴한다.
- EuclidProblem/곽세환 . . . . 1 match
// 1차이 나는 배수를 구한다 but 시간오버
- EuclidProblem/이동현 . . . . 1 match
xy[1][0] = xy[0][0]*-1*q+tx; //이번함수의 몫q*-1을 곱하고 이전이전함수의 계수를 더한다.
- ExploringWorld/20040506-무제 . . . . 1 match
* You Excellent = 칭찬은 고래도 춤추게 한다. 를 통해서 본 재미있는 경험 이야기
- Factorial . . . . 1 match
== Factorial을 구하는 프로그램을 작성한다. ==
- FactorialFactors/조현태 . . . . 1 match
그러고보니 우리집 컴퓨터의 성능을 고려하지 않았다...;; 뭐 다른집도 비슷하리라 생각한다..^^;; 3.2G CPU...OTL..
- Favorite . . . . 1 match
간단한 규칙 - Daily <= n개, Weekly <= 7*n, Monthly <= 30*n개를 유지한다. 그러면 하루에 3*n 군데만 돌아보면 된다. 끝없는 웹서핑을 막아보자!
- FileInputOutput . . . . 1 match
fout << a+b << endl; // cout으로 화면으로 출력한다면, fout은 연결된 output.txt에 a+b를 출력
- FileStructureClass . . . . 1 match
강현철 교수님에게 인상적인 부분이 있다고 한다면, 중간에 질문을 던지신 뒤 학생들이 답했을때의 자세이시랄까. 그럴때 바로 '틀렸다' 라고 이야기하지 않는다. "만일 자네의 의견이 맞다면, 어떻게 이 부분을 전개한것인지 말해보게." 식으로 논리과정을 서술하게끔 다시 질문하신다. --[1002]
- FileZilla . . . . 1 match
[임인택]이 사용하는 오픈소스 ftp 클라이언트. 그 전에는 alftp을 주로 사용했는데, 사용했던 시기가 alftp 가 약간 불안하게 동작했던 시기라서 아예 FileZilla로 전환했다. 기본적인 ftp 프로토콜 외에도 sftp 프로토콜까지 지원한다. 2.2.7 버전대로 올라오면서 한글까지 지원하여 이제는 더없이 좋은 ftp 클라이언트가 되었다. 그 외에도 편리한 사이트 매니저 기능등을 제공하지만 로컬 디렉토리를 브라우징할때 약간 불편한 면이 있다.
- Fmt . . . . 1 match
4. 72글자가 넘는 단어가 있으면 한 줄에 그 단어 하나만 출력한다.
- ForeverStudent . . . . 1 match
제가 하는 세미나에는 교수님, 직장인, 대학생을 가리지 않고 많은 분들이 참석합니다. 그곳에 오신 교수님의 배우려는 자세에서 오히려 제가 더 배웁니다. 가르치려는 사람은 우선 배울 준비가 되어야 한다는 생각이 듭니다. --김창준
- FortuneMacro . . . . 1 match
1. fortune이 설치되어 있어야 한다. {{{/usr/bin/fortune, /usr/share/games/fortune/}}}
- FromDuskTillDawn/조현태 . . . . 1 match
참고 : 나름대로 약간의 최적화가 되어있다. 그러나~ vector가 아닌 list를 사용한다면 좀더 효과적일듯하다.ㅎ 이런 귀차니즘~
- FullSearchMacro . . . . 1 match
* 안 붙으면 찾기 폼을 출력한다.
- FundamentalDesignPattern . . . . 1 match
근데, 지금 보면 저건 Patterns in Java 의 관점인 것 같고.. 그렇게 '필수적 패턴' 이란 느낌이 안든다. (Proxy 패턴이 과연 필수개념일까. RPC 구현 원리를 이해한다던지 등등이라면 몰라도.) Patterns in Java 에 있는건 빼버리는 것이 좋을 것 같다는 생각. (DoubleDispatch 는 잘 안이용해서 모르겠고 언어 독립적으로 생각해볼때는 일단은 Delegation 정도만?) --["1002"]
- GRASP . . . . 1 match
문제 도메인 개념을 표현하지 않는 인위적인, 편의상 만든 클래스에 매우 응집된 책임들을 할당한다.
- GTK+ . . . . 1 match
컴파일을 하기 위해서는 gcc 명령행에 몇가지 파라메터를 더 주어야 한다. 아래는 한 예.
- GofStructureDiagramConsideredHarmful . . . . 1 match
비단 패턴만이 그렇지는 않습니다. 조금은 다른 이야기를 해보고록 하지요. 사람으로부터 나온(derived) 어떤 유-무형의 것들은 그것을 만든 사람, 또 그 사람이 몸담고 있는 환경을 반영(reflection) 합니다. 예를들어, 실세계에서 집을 짓는다고 해봅시다. 거기엔 수많은 공법이 존재합니다. 또 하나의 공법을 이야기한다고해도 실제로 투입되는 사람들에따라 다양하게 나올 수 있습니다.(지난 2002년 1월 8일 뉴스에서는 측량할때마다 다른 토지 계산이 나오더군요) 조금더 엉뚱한 이야기를 해볼까요. 하나님의 말씀은 하나이겠지만, 성경은 해석하기에 따라 다릅니다. 또 그 하나하나의 성경은 하나지만 그를 믿는 사람이 받아들이기에 따라 다양해집니다.
- Google/GoogleTalk . . . . 1 match
한다
- Hacking2004 . . . . 1 match
* 데브피아에서 TCP/IP 세미나 한다고 하네요. 아마 무료였던것 같은데. 생각나서 올립니다. - [이승한]
- HanoiProblem/영동 . . . . 1 match
pop by ;스택이므로 빼는 순서에 유의해야 한다
- HardcoreCppStudy . . . . 1 match
Hardcore란 의미는 단어 그대로의 뜻이 아니라 열심히(hard) 핵심(core)을 탐구한다는 의미입니다...
- HardcoreCppStudy/첫숙제/Overloading/임민수 . . . . 1 match
cout << " 원하는 마방진의 크기를 입력하세요 (11 이하의 홀수만) : ";
- HardcoreCppStudy/첫숙제/ValueVsReference/변준원 . . . . 1 match
을 의미하고 power은 함수명을 의미하며 double base, int exponent은 매개변수를 의미한다. power()라는
- Hartals . . . . 1 match
각 테스트 케이스에 대해 손실된 근무 일수를 한 줄에 하나씩 출력한다.
- HelpOnActions . . . . 1 match
* `bookmark`: RecentChanges 페이지에서 북마크 기능을 지원하는 액션. 북마크를 하게되면 그 시점이 보존되며, 그 시점에서 새로 갱신된 페이지를 보다 손쉽게 알 수 있게 해줍니다.
- HelpOnCvsInstallation . . . . 1 match
1. 원하는 설치경로로 옮깁니다. (예를 들어 `/home/foobar/public_html`)
- HelpOnFormatting . . . . 1 match
위키위키는 좀 더 직관적이면서 이해하기 쉬운 단순한 세트의 문법 규칙을 가지고 있습니다. HTML 문서를 만들기 위해서 HTML문법을 알아야 하는 것 처럼 위키위키 페이지를 만들거나 고치기 위해서 위키위키 문법을 알아야 합니다. HTML문법은 직관적이지 않고 복잡한 측면이 있습니다. 그러나 대다수의 HTML문서는 매우 간단한 문법을 알기만 하면 만들 수 있습니다. 위키위키는 이러한 문법을 좀 더 단순화 시키고 직관적이고 이해하기 쉬운 단순한 규칙으로 구성되도록 고안되었으며 조금만 시간을 투자한다면 위키위키의 문법을 쉽게 이해하고 배우실 수 있습니다.
- HelpOnInstalling . . . . 1 match
이 위키 사이트에 있다면 여기 한 군데에 모아 정리를 하고, tarball에도 같이 배포해야 한다고 생각합니다.
- HelpOnLists . . . . 1 match
만약 공백을 넣어 들여쓰기만 하고 {{{*}}}나 번호리스트를 지원하는 {{{1.}}} {{{a.}}} 이외의 다른 문자가 온다면, 그 단락은 들여쓰기된 단락으로 인식됩니다.
- HelpOnPageDeletion . . . . 1 match
모니위키 1.1.3부터 지원하는 `revert`액션을 사용합니다. 단축키로 '''i'''를 누르면 변경내역을 보여주며 이때에 [[GetText(revert)]]라는 액션에 대한 링크가 나타납니다. `revert` 액션에 대한 링크가 나타나지 않으면 {{{?action=revert&rev=1.100}}}식으로 주소줄에 써넣은 후에 페이지를 불러오면 대화창이 뜨게 됩니다.
- HowBigIsIt?/하기웅 . . . . 1 match
일단 생각해야 될게 너무 많은 관계로 8!개 만큼의 경우의 수를 다 생각해야만 할 것 같다.
- HowManyFibs? . . . . 1 match
각 테스트 케이스마다 a ≤ f<sub>i</sub> ≤b인 피보나치 수 f<sub>i</sub>의 개수를 한 줄에 하나씩 출력한다.
- HowToStudyXp . . . . 1 match
제가 공부한 경험을 토대로 "만약 다시 공부한다면...":
- IDL . . . . 1 match
[CORBA] 의 경우 분산된 네트워크상에 따로 위치한 객체 간의 투명한 접근을 제공하는 서로 간의 약속이 필요하다. 이런 약속을 정의할 때 특정 언어([C], [C++], [Java] 등)에 의존하지 않는 인터페이스 정의 언어가 필요하게 되었는데, 그것이 바로 IDL(Interface Definition Language)이다. 서버와 클라이언트가 서로 통신을 하기 위해서 서버는 클라이언트에게 제공하는 서비스 인터페이스를 IDL 로 정의하게 되며, 클라이언트는 이런 인터페이스 정보를 활용하여 서비스를 활용하게 되는 것이다. CORBA 프로그램을 개발하기 위해서는 가장 먼저 IDL 을 정의해야 하는데, IDL 은 구현에 대한 정보는 포함하고 있지 않아 정의된 IDL 을 원하는 언어로
- Ieee754Standard . . . . 1 match
전산/컴공과 학생이 NumericalAnalysisClass를 통틀어서 오로지 한가지만 배워야 한다면 나는 부동소수점 연산을 들고 싶다. --JuNe
- IntelliJUIDesigner . . . . 1 match
[IntelliJ] 의 UI Designer 의 특징이라면, 좌표나 레이아웃관련 정보를 따로 XML 화일에 저장한다는 점이다. 그리고 우리가 작성하는 소스 코드 에서는 각 컨트롤 객체들의 레퍼런스 변수들 간 연결관계를 쓴다. 코드가 꽤 깔끔하다.
- IntentionRevealingMessage . . . . 1 match
어떻게 된건가? 의사소통이다. 한 줄의 메소드가 의사소통에 가장 중요하다.(?) 사용자의 입장에서는 그냥 highlight라는 메세지에 영역만 넣어서 보내면 되는 것이다. 사각형을 뒤집음으로써 highlight된다는 사실을 몰라도 되는 것이다. IntentionRevealingMessage는 컴퓨터를 위한다기보다는 사람을 위한 가장 극단적인 형태의 패턴이다. 의도와 구현을 분리하자는 것이다. 메세지의 이름을 그 메세지 내에서 어떻게 되는건가로 짓지 말고, 그 메세지가 무엇을 하는건가로 짓자.
- JMSN . . . . 1 match
* 사용자의 일부 properties(Foward list, Reverse list, Allow list, Block list, GTC setting, BLP setting)-$1는 서버에 저장된다. $1은 client에 캐시된다. client에 캐시된 $1를 최신의 것으로 유지해야 한다.
- JTDStudy . . . . 1 match
* 첫날 이거 한다고 했었는데 정모때 못가서... 암튼 참가했슴다!! - 지훈
- JTDStudy/첫번째과제/원명 . . . . 1 match
초기의 테스트 가능하도록 원하는 값으로 무작위로 나오는 답안을 세팅하는 함수 추가.
- Java/ModeSelectionPerformanceTest . . . . 1 match
이 방법은 initModeMap 에서 매번 Mode에 대한 등록을 해줘야 한다. 퍼포먼스는 Method Reflection 보다 훨씬 빠르다.
- Java/숫자와문자사이변환 . . . . 1 match
Object를 int 타입으로 형변환 하기 ... 바로 안되므로 String으로 바꾼후 int로 형변환 한다.
- JavaScript/2011년스터디/JSON-js분석 . . . . 1 match
* str function에서 'string', 'number', 'boolean', 'null' 은 모두 string로 변환한다. 그런데 'object'의 NULL은 뭐지??
- JavaScript/2011년스터디/서지혜 . . . . 1 match
document.write(arguments[3]); // 존재하지 않는 배열을 참조한다면? -> undefined
- JavaStudy2002/영동-2주차 . . . . 1 match
Class Board--벌레의 발자국이 남는 판. 발자국을 통해 바퀴벌레의 이동 상황을 보고한다.
- JavaStudy2003/두번째과제/곽세환 . . . . 1 match
캡슐화는 모듈성(modularity)과 정보은닉(information hiding)을 제공한다.
- JollyJumpers/곽세환 . . . . 1 match
// 차이값이 1 ~ n-1 사이에 모두 존재해야한다
- JuneTemplate . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- KDP_토론 . . . . 1 match
JStorm 계셨던 분의 말씀을 들어보니, 서적의 번역과 그에 따른 저작권 문제, 출판 문제가 상당히 머리가 아프더군. 우리가 완전 번역을 하면 저작권에 걸리는 거고, 완전 번역시에 그걸 출판을 모색할 경우 상당히 힘들것으로 보인다. 이유는 우리가 학부생이고, 전문가라고 볼수 없는 위치에 있기 때문에 출판사 측에서는 그런 점을 지적한다. 그래서 많은 책에는 유명한 사람들의 감수가 들어 있다.
- LIB_1 . . . . 1 match
LIB_init_prl(0); // 패러럴 포트를 정리한다.
- LIB_3 . . . . 1 match
음..이렇게 나누어지고 WAIT큐의 0번째 태스크가 지금 실행 중인 태스크를 지칭한다.[[BR]]
- LUA_5 . . . . 1 match
> Fruit[ #Fruit + 1 ] = "grape" -- Fruit 의 아이템 갯수를 얻어 + 1을 해서 마지막 첨자를 구해 값을 대입한다.
- LearningToDrive . . . . 1 match
그때는 괭장히 짜증나고 그랬었는데.. 한편으론 제가 도량이 더 넓었다면 어땠을까 하는 생각도 해봅니다. 애시당초 기획할때 제가 아는 범위 내에서 도와주려고 노력했다면, 프로그래밍 중간중간 완성된 것 보여주면서 원하는 것에 대해 제대로 수렴을 시킨건지 물어봤었더라면.
- LightMoreLight/문보창 . . . . 1 match
간단한 문제였으나, 처음에 문제 분석을 잘못하여 시간을 소비했다. 정수론 문제의 경우 문제분석만 잘해 준다면 의외로 쉽게 풀리는 것 같다. 수행시간과 메모리 사용량이 많다. 보다 좋은 알고리즘을 생각해야 한다.
- LinkedList/학생관리프로그램 . . . . 1 match
printf("\n현재 등록된 학생명단\n");//현재 등록되어 있는 명단을 출력한다.
- LinuxSystemClass . . . . 1 match
개인적으로 교재가 마음에 든다. 단, 제대로 공부할 것이라면 가능한 한 원서를 권한다. 한서의 경우 용어의 혼동문제와, 중간 오역문제가 눈에 띈다. (inexpensive를 expensive 로 정 반대의 뜻으로 해석한) 뭐, 물론 그럼에도 불구하고 아마 사람들은 한서 읽는 속도가 원서 읽는 속도의 3배 이상은 될테니. 알아서 잘.
- LispLanguage . . . . 1 match
* emacs라는 IDE는 lisp을 통해 제어할 수 있다. 심지어 거대한 lisp 인터프리터라고 불리기까지 한다. 이 글은 비록 emacs를 쓰기 위해 부가적으로 lisp을 설명하는 수준이지만, 몇 안되는 한국어 lisp 설명글이므로 참고를 위해 링크를 걸어 둔다.
- LogicCircuitClass/Exam2006_2 . . . . 1 match
2. 다음과 같이 딜레이를 갖는 회로에서 초기에는 x 가 1이다. 0초일 때 x 가 0으로, 2초일 때 x 가 1로 변한다고 할 경우 x,y 의 vector waveform 을 그리시오.
- LoveCalculator/조현태 . . . . 1 match
이제는 문제도 염장질이냐~!! (괜히 문제에 화풀이 한다눙~ㅎ)
- MFC/RasterOperation . . . . 1 match
CDC는 다양한 드로윙 모드를 제공한다. ROP는 그런 드로윙 모드의 하나로, 동적으로 변화되는 그림을 그릴때 그림을 지우고 다시그리는 작업을 하는데 유용하다.
- MT페스티발 . . . . 1 match
공대에서 멋진 MT를 기획하는 소모임과 동아리에게 MT비를 지원한다고 합니다. 기획하고 싶으신 분 있나요? --[Leonardong]
- MacromediaFlash . . . . 1 match
XML 을 이용하는 방법과 loadVariables 를 이용하는 방법 등이 있다. 혹은 Flex 를 이용한다. 혹은 SOAP 을 연동할 수 있다.
- ManDay . . . . 1 match
1 ManDay = 한 사람의 하루만큼의 노력. 보통 1 ManDay = 8 ManHours 가 되는 것이 이상적이라고 본다.
- Mario . . . . 1 match
* 마리오 덕후는 마리오의 목숨을 최대한으로 가지고 쿠퍼를 잡으려고 합니다. 그런데, 이 덕후는 게임을 너무 여러번 했더니 각 Stage에서 목숨을 얻거나 잃는 갯수가 항상 일정합니다. 또, 이 덕후는 모든 지름길을 다 알고 있어 원한다면 굴뚝을 통해 마리오를 한 Stage를 건너뛰게 할 수 있습니다.(1탄->3탄, 3->5탄 등, 횟수제한 없음) 이 덕후는 가장 많은 목숨을 얻은 채로 게임을 끝내고 싶어합니다.(마지막 쿠퍼가 나오는 Stage는 꼭 들러야합니다) 이때, 이 덕후는 몇 개의 목숨으로 게임을 끝낼 수 있을까요?
- MedusaCppStudy/희경 . . . . 1 match
cout << "숫자를 차례대로 입력해주세요(숫자는 서로 띄어쓰기로 구분한다) :" << endl;
- Microsoft . . . . 1 match
마소는 세계에서 가장 큰 소프트웨어 회사이다. 대략 직원수만 50000명으로 각국에 분포해있다. 이 회사는 1974년 빌게이츠, 폴 앨런이 창업했다. 본사는 미국 워싱턴 레드몬드에 위치해 있다. 마소는 전세계적 규모로 다양한 장비들에 사용되는 소프트웨어를 개발, 생선, 라이센싱, 지원한다. 이 회사의 가장 대중적인 제품은 윈도우즈 운영체제 시리즈와 오피스 제품군이다. 이들은 각각 데스크탑 컴퓨터 시장에서 거의 독점적위치에 있다.
- MobileJavaStudy/Tip . . . . 1 match
* 메모리가 겹치는 경우가 절대로 없게 한다.
- MoniWikiPlugins . . . . 1 match
액션 혹은 매크로만 각각 지원하거나 모두 지원하는 경우도 있다.
- MoniWikiTheme . . . . 1 match
* header.php, footer.php는 자신이 원하는 대로 꾸밀 수 있다.
- MoreEffectiveC++/C++이 어렵다? . . . . 1 match
* 이유 : class에 대하여 vtbl과 vtp의 구현 방법 표준이 비존재, 당연히 직렬화에 관한 표준 역시 비존재, 벤더들에게 구현을 맡겼음. 그래서 특히나 각 DB업체에서 OODB의 제작시 자사들만의 표준을 가져야 한다는 벽에 부딪침.
- NS2 . . . . 1 match
Networking과 관련된 여러 이론과 아이디어를 가상으로 실험해 볼 수 있는 시뮬레이터. 네트워킹과 관련된 논문에서 가설에 대한 검증을 할때 실제 실험을 해 보는 경우가 아니면 99% 이상이 시뮬레이터를 이용한다.
- NSIS/예제3 . . . . 1 match
; Installer 의 아이콘. 반드시 32 * 32 * 16 color 이여야 한다.
- NSIS/예제4 . . . . 1 match
설치중에 윈도우 서비스를 멈췄다가 살리는 스크립트. 이것때문에 삽질을 좀 했다....-_-;; servicelib.nsh 파일을 인클루드 해줘야한다.
- NSISIde . . . . 1 match
* 목표 : NSIS 와 연동하여 간단한 NSIS Script 작성과 관련한 IDE 환경을 구축한다.
- NoSmokMoinMoinVsMoinMoin . . . . 1 match
기능들에 대해서는 좀 더 알아봐야 할듯. 그리고 또하나 생각할것은, 우리가 자주 이용하는 기능이 좋은 녀석을 골라야 한다는점. 둘 다 Python Source 이므로 여차하면 소스수정도 가능할듯. --석천
- NumericalAnalysisClass . . . . 1 match
하지만 이 책은 다르다. 어떤 문제를 접했을 때 어떻게 프로그램을 새로 만들어 내야하는지, 디자인은 어떻게 해야하고, 훌륭한 프로그램을 어떻게 만드는지를 말하고 있다. 게다가 OOP를 "정말" -- 시늉으로써만이 아니고 -- 사용한다. 모든 코드가 Java와 Smalltalk 양자로 쓰여있는 점도 큰 장점이다.
- NumericalAnalysisClass/Report2002_1 . . . . 1 match
Cubic Spline 함수를 계산하기 위해서는 Tri-Diagonal Matrix 에 대한 해를 구할 수 있어야 한다. 다음과 같이 주어진 Tri-Diagonal Matrix 시스템의 해를 계산하는 프로그램을 작성하시오.
- ObjectWorld . . . . 1 match
하이텔 객체지향동호회에서 시작. 객체지향과 관련된 세미나를 열기도 한다.
- OekakiMacro . . . . 1 match
(!) 짧막한 코멘트를 달게끔 해도 괜찮을 것이다. Comment 플러그인을 만들고, Blog의 코멘트와 Vote매크로를 응용해서 페이지 임의의 부분에 좀 더 쉽게 코멘트를 덧붙일 수 있게 한다.
- OnceAndOnlyOnce . . . . 1 match
OAOO. 필요한 부분에 대해서는 중복없이 오직 한번만 나타나야 한다는 원칙. ["Refactoring"] 의 원칙.
- OpenCamp/첫번째 . . . . 1 match
* 데블스 때도 그랬지만 남들 앞에서 발표를 한다는 건 상당히 떨리는 일이네요. 개인적으로는 이번 발표를 준비하면서 방학 동안 배웠던 부분에 대해서 다시 돌아보는 기회가 되었습니다. 그리고 그 외에도 방학 동안에 다루지 않았던 native app을 만드는 것이나 분석용 툴을 사용하는 법, Node.js, php 등 다양한 주제를 볼 수 있어서 좋았습니다. 물론 이번 Open Camp에서 다룬 부분은 실제 바로 사용하기에는 약간 부족함이 있을 수도 있겠지만 이런 분야나 기술이 있다는 것에 대한 길잡이 역할이 되어서 그쪽으로 공부를 하는 기회가 될 수 있으면 좋겠습니다. - [서민관]
- OpenGL . . . . 1 match
3D Programming 을 위한 API. 요새 유행하는 3D Game Programming 시에는 주로 [Direct3D] 와 [OpenGL]을 사용한다.
- OpeningStatement . . . . 1 match
페이지를 새로 만들 때 그 페이지를 연 목적을 간결하게 밝히는 문장. 그 페이지의 첫문장이 되어야한다.
- OurMajorLangIsCAndCPlusPlus/print . . . . 1 match
%3d와 같은 정렬 기능을 제공한다.
- PC실관리 . . . . 1 match
아니다. 가끔 햇볕이 좋은 날 창문을 열고 에어컨을 OFF 시킨 채 송풍 팬을 2, 3단으로 작동한다. 더해서 매트 밑에 신문지를 넣어두면 냄새와 습기 제거에 큰 효과를 볼 수 있다.
- PC실관리/2013 . . . . 1 match
* 나날이 발전하는군.. 언젠가 원하는 날에 버튼 클릭으로 포맷되는 날이 오길...-[김태진]
- PC실관리/고스트 . . . . 1 match
* 바탕화면 그림은 컴공과 지정 바탕화면으로 지정한다.
- PC실관리/고스트/네트워크를이용한OS설치 . . . . 1 match
* 기본적으로 아래의 과정을 하기 위해서는 네트워크 설정을 해서 인터넷이 되게 해야 한다.
- POLY/김태진 . . . . 1 match
* (예를들어 최상층 3개, 두번째층 2개(그 아래층은 상관없음)인 경우는 " 최상층 + 두번째층 - 1 ", 즉 4개의 경우가 생기고, 이를 곱해야한다.
- PageListMacro . . . . 1 match
현재 지원하는 선택사항은
- Parallels . . . . 1 match
패래럴즈 사에서 개발한 가상 머신툴로 윈도우 플랫폼용 보다 맥용으로 유명하다. 동영상을 보면 알겠지만, 제한된 디바이스만은 구현해서 인지 굉장한 속도를 자랑한다.
- Plex . . . . 1 match
특히 좋아하는 이유로는 State Machine 의 개념으로 텍스트를 파싱하고 가지고 놀 수 있다는 점이 있겠다. 예를 들어 HTML에서 span 태그에 대해 파싱한다고 할때 <span 시작 - span 내용 - </span> 끝이라면 그냥 이를 서술해버리면 된다는.~
- PolynomialCoefficients . . . . 1 match
이 문제에서는 다항식을 전개했을 때의 계수를 구해야 한다.
- PolynomialCoefficients/문보창 . . . . 1 match
입력받는 수가 12까지가 아니라면, 더 최적화된 알고리즘을 찾아야 한다.
- Postech/QualityEntranceExam06 . . . . 1 match
6. 1~3개 문제 펌핑 렘마 사용하여 증명 혹은 오토마타로 그려서 regular 에 속한다고 증명 하기
- PracticalPython . . . . 1 match
Python을 이용해 쓸모있는 프로그램을 만드는 과정을 보여주는 책이다. 따라가기 좋을 뿐 아니라, 만들어 놓은 프로그램을 발전시킬 수 있도록 유도한다.
- PreparedParticipantPattern . . . . 1 match
'''개인들이 이전의 대화를 공부하지 않을 때, 그들은 대화에 아무것도 더하지 않거나 너무 많은 것을 더한다. 준비되지 않은 참여자는 주제를 벗어난 질문이나 기초적인 질문, 혹은 생산적인 연구보단 오해를 불러일으킬만한 생각을 하게하는 질문을 할 수도 있다.'''
- PrimaryArithmetic/Leonardong . . . . 1 match
수식을 구현한다는 생각이었다.
- ProgrammingContest . . . . 1 match
나이나 학력 제한이 전혀 없습니다(Open경우). 팀은 세명까지 가능하고, 혼자서도 참가 가능합니다. 사용 가능 언어는 Java, C++, Pascal, Python 등 입니다. 제한 조건은 한 팀은 프로그램 개발을 위해서는 하나의 컴퓨터만 사용해야 한다는 것입니다. 이번 금요일(2002/5/10)에 한국 시간으로는 오후 9시부터 5시간 동안입니다. 온라인(이메일)으로 진행합니다. (see also .http://ipsc.ksp.sk/rules.php )
- ProgrammingLanguageClass . . . . 1 match
프로그래밍 언어를 배우는 것은 사고와 표현의 방식을 하나 더 배우는 것이다. 따라서, 설사 해당 언어로 프로그래밍을 할 기회가 별로 없다고 해도, 판이한 언어를 하나 더 배우는 것은 가치있는 일이다. 동시에 무슨 언어를 배우느냐, 어떤 신택스를 익히느냐는 것은 크게 중요하지 않다. 언어는 변하고 사멸하고 신생하며, 유행도 바뀐다. 그보다 그런 언어 저변에 깔려있는 다양한 패러다임을 접하고 충분히 이해하고 적용할 수 있어야 한다. 하지만 이게 가능하려면 구체적인 언어라는 채널을 통하지 않을 수가 없다.
- ProgrammingPearls/Column3 . . . . 1 match
* 이 컬럼의 주제 : 데이터는 복잡한 코드를 적절한 자료 구조로 바꿈으로써, 프로그램을 구성한다.
- ProjectAR/CollisionCheck . . . . 1 match
* 그러자니 오브젝트마다 그림 크기에 맞는 2차원 배열을 가져야 한다. 어쩌면 비트맵을 읽어오면서, 그 비트맵이 메모리에 있을테니, 그걸 참조하는 방법도 있을듯 하다. 안된다 하더라도, 요즘 컴퓨터 메모리 남아도니까 별로 문제가 되지는 않을듯 싶다.
- ProjectAR/회의/20030525 . . . . 1 match
* 제한자는 모두 public으로 한다.
- ProjectCCNA/Chapter3 . . . . 1 match
* 인터넷을 사용하기 위해서는 IP라는 주소가 필요하며 이 주소는 2진수 32개로 4묶음씩 구성된다. 각 묶음마다 10진수로 나타내어 알아보기 쉽게 만들었다. 현재 IP 버전은 4인데(IPv4) 약 43억개의 주소를 할당 할 수 있다. 그런데 이 주소가 얼마 남지 않아서 ip 버전 6으로 대체 할 것이라고 한다.(IPv6은 2의 128개로 구성되어 있다고 함.)
- ProjectCCNA/Chapter5 . . . . 1 match
* 네트워크를 나눠 쓰지 않더라도, 디폴트 서브넷 마스크를 사용한다.
- ProjectGaia/요구사항 . . . . 1 match
* 레코드 검색(1-n) - 전체 소요시간을 페이지 수로 나눠서 측정한다고 했으니까 페이지를 많이 나누자.
- ProjectPrometheus/AcceptanceTestServer . . . . 1 match
해당 AcceptanceTest 의 Run 를 클릭하면, WEB 에서 해당 AcceptanceTest (UnitTest 작성 코드) 를 실행하고, 그 결과를 그대로 화면에 출력한다. 그러면 해당 테스트에 대한 결과를 확인할 수 있다.
- ProjectPrometheus/LibraryCgiAnalysis . . . . 1 match
* 한번 검색 하고 다음 페이지가 넘어갈때는 HISNO 의 값이 유지되고, SEQNO 가 증가한다.
- ProjectPrometheus/Tips . . . . 1 match
Python 에서는 urllib 와 httplib 를 이용한다. Python document 의 httplib - examples 를 참조하면 된다.
- ProjectZephyrus/Client . . . . 1 match
''Engineering Task나 User Story 모두 노동의 양으로 estimation을 해서, 포인트를 준다. 이렇게 "비용"이 적힌 카드들을 놓고, 어느 것을 하고, 미루고, 먼저하는 지 등의 순위 결정은 "중요도 중심", "위험도 중심"이 있는데, 작년 이후 익스트리모들(KRW)은 복잡하게 이런 걸 따지지 말고 그냥 비지니스 가치로 순서를 정하라고 한다. --JuNe''
- ProjectZephyrus/ServerJourney . . . . 1 match
* {{{~cpp LogoutCmd}}} 및 {{{~cpp UserSocket}}} 예외 부분 완료.... 라고 생각한다. ^^;;
- PyIde/BicycleRepairMan분석 . . . . 1 match
BicycleRepairMan_Idle.py 가 실마리가 될것 같다. VIM이나 Idle 통합부분의 경우 BRM에서의 facade를 사용한다.
- PyIde/Scintilla . . . . 1 match
환경 셋팅 다이얼로그를 띄우고 싶다면 STCStyleEditDlg 를 사용한다.
- PythonComTypes . . . . 1 match
COM 의 typelib 를 지원한다.~ python shell 상에서 연습해보기에 너무나 좋은 라이브러리.~
- PythonForStatement . . . . 1 match
음수가 아닌수로 제한되어 있으며 순서가 매겨진 집합. 내장함수인 len()는 시퀀스의 아이템 갯수를 반환한다. 시퀀스의 길이라 n이면, 인덱스는 0..n-1 까지의 범위를 가진다. 시퀀스의 아이템 i는 a[i]로 선택된다.
- PythonMultiThreading . . . . 1 match
Python 에서는 2가지 thread interface 를 제공한다. 하나는 C 스타일의 API 를, 하나는 Java 스타일의 Thread Object를.
- PythonNetworkProgramming . . . . 1 match
Medusa 는 내부적으로 select / poll 를 이용, 비동기 소켓부분을 구현한다. 소켓 이벤트들 처리에 대한 인터페이스가 아주 깔끔. 참 마음에 든다.
- PythonWebProgramming . . . . 1 match
http://www.cs.virginia.edu/~lab2q/lesson_7/ - 단, 소스가 잘못되어있다. cookie 스트링은 content header 보다 먼저 출력되어야 한다.
- QueryMethod . . . . 1 match
객체의 속성을 테스트하려면 어떻게 할것인가? 두 가지를 결정해야 한다. 첫째는 무엇을 리턴할 것인가이고, 둘째는 이름을 어떻게 짓느냐다.
- R'sSource . . . . 1 match
#re.compile() 해당 데이터에서 원하는 정보를 해석하여 갖는것
- RandomWalk/손동일 . . . . 1 match
//참이면 값을 출력한다...
- RandomWalk/임민수 . . . . 1 match
cout << "원하는 칸의 크기를 입력하세요 : ";
- RandomWalk/임인택 . . . . 1 match
- 별로 OO 적이지 못한것 같다...(Roach 와 Board 객체가 [양방향참조]를 한다). DesignPatterns 를 참고하면서 보았어야 하는데.. 나중에 [Refactoring] 해야 함..
- RandomWalk2/Insu . . . . 1 match
* STL 컨테이너는 복사본을 사용한다는 걸 알고 포인터로 바꿨습니다.
- RandomWalk2/Vector로2차원동적배열만들기 . . . . 1 match
vector< vector<int> > ar; // 반드시 공백 줘야 한다! 안주면 에러난다.
- RecentChangesMacro . . . . 1 match
class를 추가한다면 무슨 이름으로 추가할까요 ? MoinMoin에서는 class가 부여되지 않았습니다. --WkPark
- RedThon . . . . 1 match
그 그거 자체의 목표가 아니라는 사실에 대해 시야를 잃곤 한다. |}} - FocusOnFundamentals 에서
- RegularExpression/2011년스터디 . . . . 1 match
저것에 대한 답을 찾아냈다면, 맞는것들'만' 찾아내는 것도 해보는건 어떨까요? 그러려면 표준을 알아야 한다는...
- ReleaseDebugBuildStartGo의관계 . . . . 1 match
이 코드를 릴리즈 빌드로 만들고, Start(CTRL+F5)로 실행할 때의 b값과 Go(F5)로 실행할 때의 b값을 체크하면 서로 다르게 나옵니다. Start의 경우 b의 값이 false가 나오고, Go의 경우 b의 값이 true로 나옵니다. 바꾸어 말하면 Start는 미초기화 변수를 0으로 놓고, Go는 0이 아닌 값으로 세팅한다는 것입니다. (실제로 bool 타입의 false 값을 VC6의 디버거로 읽으면 0입니다. VC7의 경우엔 false라고 나오지만요)
- ReverseAndAdd/신재동 . . . . 1 match
''all tests data will be computable with less than 1000 iterations (additions)''를 고려한다면 명시적인 회수 체크는 없어도 될 듯.
- ReverseAndAdd/이승한 . . . . 1 match
//returnNum을 이용하여 앞과 뒤가 같은지 검사한다.
- Ruby/2011년스터디/김수경 . . . . 1 match
* ZeroPage에서 사용할 수 있는 대화방을 Ruby로 구현한다.
- RubyLanguage/Class . . . . 1 match
* Ruby는 단일상속만을 지원한다.
- RubyLanguage/InputOutput . . . . 1 match
* << 메서드는 매개변수 전달시 객체를 to_s 메서드로 문자열 변환한다.
- RunTimeTypeInformation . . . . 1 match
동적으로 만들어진 변수의 타입을 비교하고, 특정 타입으로 생성하는 것을 가능하게 한다. (자바에서는 instanceof를 생각해보면 될 듯)
- STL/search . . . . 1 match
이 과정을 재귀적으로 하면 값을 찾을수 있다. 이런 탐색 방법을 Binary Search 라고 부른다. 이것이 성립하려면, 원소들이 정렬되어 있고, 임의접근(random)이 가능해야 한다. 정렬이 안되어 2,3 번의 과정을 진생할수 없다.
- STL/set . . . . 1 match
* STL의 container 들은 모두 비슷한 모양의 순회를 한다.
- STL/string . . . . 1 match
* string 클래스라고 해서 공백을 무시할수 있는것은 아니다. 학교 교재에 보면 getline()과 get()이 나온다. string 변수로 입력을 받는다 해도 cin >>을 사용하면 공백을 입력 받을수 없다. 따라서 getline() 써줘야 한다.
- STLErrorDecryptor . . . . 1 match
마) 별로 복잡해보이진 않지만, 문제는 이 작업을 손으로 모두 해주어야 한다는 겁니다. 여기까지 다 읽으신 분은 이제 본문으로 들어갑시다.
- SelfDelegation . . . . 1 match
HashTable은 Collection으로 보낸 메세지가 뱉어낸 값을 기반으로 해쉬값을 계산한다.
- SimpleDirectmediaLayer . . . . 1 match
크로스 플랫폼을 지원하는 멀티미디어 개발용 API.
- SimpleTextIndexerUsingSQLite . . . . 1 match
* 아래와 같이 한다. 해당 폴더가 없으면 실행이 안된다
- Simple_Jsp_Ex . . . . 1 match
"화면에 출력시 반드시 = 붙여줘야 한다."
- Slurpys/문보창 . . . . 1 match
힘들게 버그를 잡고 통과. 재귀함수 사용시 여러가지 통로(?)를 잘 관리해 줘야한다.
- SnakeBite/창섭 . . . . 1 match
* 3.2 현재: 젠장. 잘못건드려서 소스 사라졌다. 다시 한다. 아..짱나.. 인수의 기분을 이해할거 같다. -_-;
- SoftIce . . . . 1 match
* 만약 위와 같은 상태에서 설치할때 경고 메시지나, 특정 화일을 레지스트리에 등록을 못한다고 나온다. 이때 걍 무시하지 말고 해당 사항을 처리한 담에 진행 해야 함. 무시하면 나중에 피봄.
- SolidStateDisk . . . . 1 match
백업 메카니즘으로서 배터리나 일반적인 자기디스크를 내장하곤 한다. SDD 는 일반적인 HDD I/O interface 로 연결된다. 이로 인해서 얻을 수 있는 잇점은 적은시간에 빈번한 I/O 작업이 일어날 경우에, seek time 이나 rotational latency 가 없는 메모리로서, 자기디스크에 비해 월등한 성능을 나타낼 수 있다. 그에 덧붙여 구동부가 없는 구조로서 좀더 내구성이 뛰어나다고도 할 수 있겠다. 단점은, 특성상 대용량화가 어려우며 커다란 데이터의 요구량이 커질때. 즉 access time 보다 transfer time 이 더 요구될때 효율성이 안좋다.
- Spring/탐험스터디 . . . . 1 match
* 코치 참석 여부와 상관없이 스터디를 정시에 시작한다.
- Squeak . . . . 1 match
* 스퀵 (스퀵으로 스퀵을 한다? )
- StacksOfFlapjacks/이동현 . . . . 1 match
해법은 일단 0~n 까지 케익 중 가장 큰 케익 바로뒤에 주걱을 꼽고 한번 뒤집어 가장 큰 케익을 맨 위에 오게한 후 다시 flip(1)로 뒤집어 가장 큰 케익이 맨 아래 n에 오게한다.
- StacksOfFlapjacks/조현태 . . . . 1 match
이 소스는 2번씩 뒤집는걸 기본으로 한다. (예외적으로 끝에 있을때는 한번 안뒤집는다.)
- StarCraft . . . . 1 match
그리고 몇몇 유닛들 끼리는 공격력이나 방어력의 래밸을 공유하기도한다.
- SummationOfFourPrimes/곽세환 . . . . 1 match
접근방법이 달라야한다. 내공이 아직 부족한것 같다.
- SummationOfFourPrimes/김회영 . . . . 1 match
int count=0; //만들어진 소수의 총 수를 구한다.
- SuperMarket/세연 . . . . 1 match
//산 물건을 취소한다
- SuperMarket/세연/재동 . . . . 1 match
//산 물건을 취소한다
- TFP예제/WikiPageGather . . . . 1 match
* Python 이라는 툴이 참 재미있는 녀석이라 생각한다. 방식이야 basic에서의 그것이겠지만, '인터프리터언어라는 것이 쉽고 편하다' 의 이유를 다시 생각하게 해준 계기가 되었다. 일반적으로 우리가 프로그래밍을 할 때는 (여기서는 C++이라 하자) Visual C++ 을 하나만 띄어놓고 프로그래밍 하는 경우가 별로 없다. 보통 product code 를 위한 하나, 해당 함수 기능의 부분구현 (임시코드 구현)을 위한 하나. 서버-클라이언트 프로그래밍인 경우에는 3개를 띄우는 경우도 다반사이다. Python 의 shell 은 임시코드를 구현하는데 매우 편리한 도구이다. (한편 이쯤되면 검문이 필요하다. VS 2-3개 띄우는 거랑 python IDLE을 2-3개 띄우는 거랑 다를바가 뭐냐.. --; 내가 말하고 싶은 것은 C++이나 PHP에 파이썬처럼 공통 인터프리터 쉘이 있었으면 하는 것. -_a 흐흐..) 암튼. 나는 모인모인소스를 보면서 제목 검색 관련 일부 코드를 짤라서 쉘에서 간단히 실행해보고 검토하고 실제 소스에 적용해볼 수 있었다.
- TableOfContentsMacro . . . . 1 match
* ''toggle'' : 목차를 보여주거나 감출 수 있게 한다. {{{[[TableOfContents(toggle)]]}}}
- TheJavaMan/설치 . . . . 1 match
2. '''File->New->Class'''로 클래스 하나를 만든다. 자바는 C와는 다르게 클래스를 꼭 만들어야 한다. 그리고
- TheOthers . . . . 1 match
* Weekly Report Manager? 주로 회사 같은 데서 많이 쓰는 금주 했던 일에 대한 결산 레포트이다. 어느 일을 몇시부터 몇시까지 했으며, 그 일의 종류는 무엇이며, 주별로 통계를 내어, 어느 프로젝트에 몇시간을 투자했고 자기개발에 몇시간을 투자했는지 등등을 적어 회계용도로 쓰이기도 한다.
- ThePragmaticProgrammer . . . . 1 match
번역서(실용주의프로그래머)를 한 번 다 읽었지만 다시 봐야 할 내용이 너무 많이 있다. 다루는 분야가 매우 넓으면서도 각 장은 시간이 지나도 값어치 있을 실용적인 정보를 담고 있다. 언제 멈출지 몰라서 ''그림은 물감 속에서 사라진다''나 ''프로그래밍을 우연에 맡기면 어떻게 되는가'' 같이 내가 습관적으로 잘못하고 있는 부분을 짚어주기도 한다. -- [(leonardong)]
- ThePriestMathematician/문보창 . . . . 1 match
p.s. 처음에는 k 개의 원반을 찾으려고 노력했으나, 실마리는 k 에 있지 않았다. 우리가 원하는 것은 k 를 찾는 것이 아니라 원반을 옮기는 총 횟수를 구하는 것이었다.
- TheTrip/Leonardong . . . . 1 match
무엇이 잘못 되어도 테스트를 추가해본다는 점은 역시나 TDD가 매력적일 수 밖에 없는 요인이다. 이제는 손으로 테스트를 하려면 너무 귀찮고 시간낭비라고 생각한다. TDD 리듬을 조절해줄 파트너가 옆에 있다면 더욱 좋으련만. :) --[Leonardong]
- TheTrip/곽세환 . . . . 1 match
* 알고리즘 - 평균값을 구한다음에 평균값보다 많이 쓴 돈(평균값 넘는 돈 - 평균값)이 이동하면 됨
- ThinkRon . . . . 1 match
여기서 Ron은 Think Big에서처럼 부사의 역할을 하며, "RonJeffries처럼"을 뜻한다.
- ThreeFs . . . . 1 match
''나는 오늘 친구들과 어떤 어떤 술을 어떤 어떤 순서로 마셨고 나중에 오바이트 했다. 우선은 기분 째지게 좋았다. 이런 조합의 술이 사람을 기분 좋게 한다는 점과, 얼마 안가 폐인으로 만들어 준다는 점을 배웠다.''
- TkinterProgramming . . . . 1 match
만약 파이선으로 GUI 프로그래밍을 한다면 Tkinter 이것 만큼은 피하라!!!! -_-
- TkinterProgramming/Calculator2 . . . . 1 match
컴파일을 위해서는 메가 위젯 모듈을 설치해야한다.
- TortoiseSVN/IgnorePattern . . . . 1 match
서브버전에서 커밋시 기본적으로 제외하는 형태를 지정한다. 대체로 IDE 가 만들어내는 설정 파일과 컴파일된 오브젝트 파일들을 주로 넣는다.
- TowerOfCubes/조현태 . . . . 1 match
if (0 == boxNumber) //예쁜 상자가 없으면 종료한다 -ㅡV
- TravelSalesmanProblem . . . . 1 match
가장 전형적인 TSP 로 distance 는 symmetric 하고, triangular inequilty 가 만족하고, 임의의 한 도시에서 다른 도시로의 직접(또 다른 경유도시를 이용하지 않고) 갈 수 있는 길이 항상 존재한다.
- TriDiagonal/1002 . . . . 1 match
수치해석 레포트로 나온 TriDiagonal 문제에 대한 나름대로의 (--;) TFP 식 접근 풀이. 오히려 다른 사람들보다 소스가 커지긴 했지만, 소스를 원한다면 더 줄일 수 있고 (단, 코드를 알아보기 어려워질까봐 묶을 수 있는 부분에 대해서도 풀어 씀), LU 분해 부분에 대해서는 어느정도 일반화를 시켰다고 생각하기에 그리 나쁘진 않다고 생각하는중.
- TuringMachine . . . . 1 match
종이에는 우리가 행해야할 과정에 관한 약속들이 적혀 있는 부분, 그리고 그 과정을 통해서 바꾸어야할 내용이 적혀있는 부분이 존재한다.
- UML/CaseTool . . . . 1 match
UML 케이스 툴과 달리 Visio 같은 경우에는 Diagramming 기능만을 제공한다. Diagramming Tool 이라고 분류하는 듯하다.
- UglyNumbers/곽세환 . . . . 1 match
* 답은 ''The 1500'th ugly number is <숫자>.'' 형식이어야 한다.
- UglyNumbers/구자겸 . . . . 1 match
int unum(int num); // 심술쟁이수인지 검사한다
- Unicode . . . . 1 match
현재 대부분의 리눅스 어플리 케이션은 [UTF-8]을 기반으로해서 개발되고 있거나 포팅중이다. 새로 만들어지는 모든 패키지는 모두 UTF-8을 사용한다. 그놈, KDE 와같은 윈도우 매니저들도 기존의 EUC를 기반으로한 문자셋을 지원하지만, 표면적으로만 지원할뿐 내부적으로는 UTF-8로 변환하여서 처리함. 결국 UTF-8로의 문자셋 변경은 기간의 문제이지 대세이다.
- Velocity . . . . 1 match
Velocity 에서 연산을 할 때에는 반드시 각 연산 당 스페이스를 주어야 한다!!!
- VendingMachine/재니 . . . . 1 match
''클래스 수가 많아서 복잡해진건 아닌듯(모 VendingMachine 의 경우 Requirement 변경에 따라 클래스갯수가 10개 이상이 되기도 함; 클래스 수가 중요하다기보다도 최종 완료된 소스가 얼마나 명료해졌느냐가 복잡도를 결정하리라 생각). 단, 역할 분담할때 각 클래스별 역할이 명료한지 신경을 쓰는것이 좋겠다. CoinCounter 의 경우 VendingMachine 안에 멤버로 있어도 좋을듯. CRC 세션을 할때 클래스들이 각각 따로 존재하는 것 같지만, 실제론 그 클래스들이 서로를 포함하고 있기도 하거든. 또는 해당 기능을 구현하기 위해 다른 클래스들과 협동하기도 하고 (Collaboration. 실제 구현시엔 다른 클래스의 메소드들을 호출해서 구현한다던지 식임). 역할분담을 하고 난 다음 모의 시나리오를 만든뒤 코딩해나갔다면 어떠했을까 하는 생각도 해본다. 이 경우에는 UnitTest 를 작성하는게 좋겠지. UnitTest 작성 & 진행에 대해선 ["ScheduledWalk/석천"] 의 중반부분이랑 UnitTest 참조.--["1002"]''
- VisualAssist . . . . 1 match
VS6 에서의 그 버그많은 Intelli Sense 기능을 많이! 보완해준다; VS6 에서 지원하지 않는 매크로 인라인 함수 등에 대해서도 Intelli Sense 기능을 지원. Header - Cpp 화일 이동을 단축키로 지원하는 등 편한 기능이 많다.
- VisualSourceSafe . . . . 1 match
* ["CVS"] 와 달리 하나의 프로젝트를 특정인이 점유하고 있으면, 해당 프로젝트 소스 자체에 접근을 금지한다. VS 계열 툴로 집에서 혼자 작업시에 사용하기는 편하다. VS계열의 툴과 잘 결합되어 있다. 아직 VS 6.0 만 쓰는 관계로 7.0은 잘 모름--["상민"]
- VonNeumannAirport/Leonardong . . . . 1 match
행렬 곱셈 연산을 정의하면 이를 이용하기 위해서는 트래픽이나 거리 행렬 중 어느 한 쪽은 전치행렬이 되어야 한다. 그러려면 전치 행렬 연산도 있어야겠다.
- WERTYU . . . . 1 match
위에 나와있는 QWERTY 키보드를 기준으로 하여 각 글자나 기호를 바로 왼쪽에 있는 키에 해당하는 글자나 기호로 바꿔야 한다. 입력에 스페이스는 그대로 둔다.
- WIBRO . . . . 1 match
* 와이브로 서비스가 성공적으로 상용화 된다면 070 인터넷 전화 단말기가 엄청나게 쏟아져 나올 가능성이 큽니다. 즉 현재의 휴대전화기와 비슷한 서비스이지만 이 단말기들은 PC또는 PDA에 달면 마치 무선 랜카드처럼 작동한다는 점이 눈에 띄는 기존 휴대전화와의 차이라고 보시면 됩니다.
- WeightsAndMeasures/신재동 . . . . 1 match
클래스를 사용한다면 스스로 어떻게 정렬될지 아는 놈으로 만드는 것도 좋겠다.
- WinSock . . . . 1 match
Windows Socket API. Win32 API 에 기본적으로 지원한다.
- WorldCup/송지원 . . . . 1 match
|| 개요 ||월드컵 축구 경기를 하면 이긴 팀은 3점, 진 팀은 0점, 비긴 팀은 각각 1점씩 획득한다. ||
- XMLStudy_2002/Encoding . . . . 1 match
*단순한 텍스트 형태의 XML문서를 다양한 언어로 작성하기위해 각 언어에서 사용하는 인코딩 방식을 사용한다.
- XMLStudy_2002/XSL . . . . 1 match
<!-- 디스플레이 방법을 HTML을 이용하여 기술한다. -->
- Xen . . . . 1 match
젠(Xen)은 오픈소스 기반의 가상화 SW다. 젠은 하나의 컴퓨터에서 여러 종류의 운용체계(OS)를 사용할 수 있게 하는 SW로 한 가지 단점은 OS를 수정해야 한다는 점. 그러나 올해 공개될 인텔의 밴더풀(vanderpool)이나 VT 기술을 적용할 경우 OS 수정이 필요하지 않을 것으로 보여 빠른 확산이 예상된다.
- XpWeek/20041221 . . . . 1 match
아침에 TDD하면서 [Refactoring]이 만만치 않다는 생각을 했다. 생각보다 PlanningGame이 오래 걸려 지루한 느낌과 지친다는 느낌을 받았다. 고객의 입장일 때 내가 뭘 원하는지 명확하지 않았다. 그래도 내일은 왠지 잘 될 것만 같다.
- YetAnotherTextMenu . . . . 1 match
보통 ToyProblems를 내줄 때, 입력양식으로 텍스트 메뉴를 이용하라는 요구사항이 주어지기도 한다. JuNe이 보기에는 이것은 "단견"이다. 학생들은 매번 비슷한 방식으로 텍스트 메뉴 프로그램을 만들 것이고, 매번 거기에 일정 시간을 빼앗길 것이다. 재미있게도 텍스트 메뉴를 사용하는 프로그램을 작성하면, 학생들이 만드는 프로그램 역시 그 메뉴의 구조를 닮는다. 이것은 그다지 바람직하지 않은 경우가 많다.
- Yggdrasil . . . . 1 match
서식지: 주로 서울 강남구 압구정동에 자주 출몰한다는 제보가 들어와 있음...
- Yggdrasil/가속된씨플플 . . . . 1 match
잘알고 있겠지만, 지금 하고 있는 내용은 [AcceleratedC++]의 하위 요약 페이지와 많은 부분이 중복됩니다. 만약 이대로 유지한다면, 두 내용 모두 불완전한체로 끝나게 되겠지요. ([Yggdrasil/가속된씨플플/1장]와 [AcceleratedC++/Chapter1] 비교) 그렇다면 어떻게 할까요? 두페이지를 대상으로 [페이지다듬기]를 합니다.
- Z&D토론/학회명칭토론백업 . . . . 1 match
주제넘는것 같지만 이름문제는 선배님들과의 협의후에 결정한다고 했던것 같은데 선배님들의 의견을 모으기 위한 방법이 논의되고 있는지 궁금하네요 -- 손혜연
- ZPBoard/PHPStudy/기본문법 . . . . 1 match
* 우선 기본적으로 C에서 사용하던 +, -, *, /, % 는 동일하게 사용한다.
- ZPHomePage/20050111 . . . . 1 match
=> 일단 회원가입후 제로페이지회원을 따로 분리한다.
- ZP도서관/2013 . . . . 1 match
* 책에 QR코드를 붙이고 위키 플러그인을 만들어서 그 QR코드를 찍으면 대출, 반납, 연장, 예약 등을 선택할 수 있게 한 뒤 원하는 작업을 클릭하면 위키에 자동으로 기록하게 해준다면 편하겠죠... - [김수경]
- ZeroPage/회비 . . . . 1 match
* 지출시 영수증을 반드시 받아서 보관, 기록을 한다.
- ZeroPageServer/FixDate . . . . 1 match
그런데, rdate 가 이번 테스트 업그레이드 버전 부터 안되는 것이다. 새버전에서 servername 을 입력받을수 없다고 하는데, 왜그런지 모르겠다. 그래서 대안으로 이것을 사용한다.
- ZeroPageServer/UpdateUpgrade . . . . 1 match
다음의 업그레이드를 보름에 한번정도는 해주자. (업그레이드는 보통 보안과 패치들을 겸한다.)
- ZeroPageServer/계정신청방법 . . . . 1 match
* 메일 내용 : 이름, 학번, 원하는 계정 종류, ID, 가입년도
- ZeroPager구조조정 . . . . 1 match
하지만 언제든지 정회원이 될 수 있습니다.( 정회원 조건에 만족 한다면 )
- ZeroPage성년식/회의 . . . . 1 match
* 고속터미널은 안됩니다. 지하상가 리모델링 한다고 지금 거의 다 문닫았어요 - [지원]
- ZeroPage성년식/후기 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- ZeroPage소개 . . . . 1 match
* 변하지 않는 ZeroPage만의 가치를 말하는군요. 이에 대한 의견은 설문조사등으로 원하는 ZeroPage상에 대해 의견을 모아보는 것도 좋겠네요. 다만 일관성있는 가치를 세우는게 좋겠습니다. 언행일치정도? - [서지혜]
- ZeroWiki . . . . 1 match
각각 사람들이 공부하고자 하는 분야가 다양해지고, 사람들이 모든 영역을 다 커버할 수 없다고 할때, 반복되는 질문이 일어나기 쉬운 일반 게시판의 질답란보다 더 의미있는 정보들을 담아낼 것으로 기대한다. ZeroWiki 는 ZeroPage 의 정보 Repository 이다.
- [Lovely]boy^_^/Diary/2-2-9 . . . . 1 match
* 알카노이드가 컴터마다 돌아가는 꼴이 너무 다르다. 굉장히 잘 돌아가는 데가 있는가 하면, 어디서는 깜박거리고, 또 어디서는 바가 안움직이기도 한다.
- [Lovely]boy^_^/Diary/7/22_26 . . . . 1 match
|| 영어 || 단어 100개 정도 외우기 || 90% || 그냥 쓱 보고 다음에 볼떄는 외운건 체크하고 또 쓱 보고 이걸 반복한다. ||
- [Lovely]boy^_^/Diary/7/8_14 . . . . 1 match
이랬다. 절대 안된다;; for써서 원소 하나하나씩 복사해줘야 한다. C++의 참조 변수처럼 A바꾸니까 B도 같이 바뀌더라;;
- [Lovely]boy^_^/USACO/BrokenNecklace . . . . 1 match
* 역시 테스트를 마니 해봐야 한다는 걸 뼈저리게 느낀 문제였다는;;
- [Lovely]boy^_^/USACO/MixingMilk . . . . 1 match
* 전문 프로그래머들은 assert문을 자주 쓴다고 한다.
- [Lovely]boy^_^/영작교정 . . . . 1 match
=== 우리는 극우 세력의 영향력을 견제해야 한다. ===
- [NewSSack]Template$ . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- apache/mod_python . . . . 1 match
* [moinmoin]을 설치하기 위해서는 [apache]에 [python]모듈을 설치해야 한다.
- cogitator . . . . 1 match
하나를 얻기위해서는 하나이상의 동등한 대가를 치루어야 한다. - 등가교환의 법칙
- django/AggregateFunction . . . . 1 match
Django에서 기본적으로 제공하는 함수는 없다. 원하는 레코드 집합을 얻어온 다음, python을 이용해서 구하는 방법을 사용할 수 있다.
- erunc0/Mobile . . . . 1 match
* lan card - 돈있으면 구입해서 한다. compile 속도가 비약 적으로 상승. -_-;
- erunc0/XP . . . . 1 match
저는 지금 XPI를 읽고 있습니다. XPI에서 제시하는 극한을 실험해보기 위해 지켜야만 하는 규칙(?)들을 찾는다고 해야 할까요 ? 예를 든다면 삶의 순환 법칙을 어기지 않기 위해 유저스토리는 고객이 작성해야만 한다(도움은 주되 개발자의 욕구를 억제해야만 하는)는 것이겠죠 ? 이것은 XP 프로그래머가 반드시 지켜야만 하는 것이겠죠 ? 이것은 경험을 통해 얻는 극한으로 몰고가는 방법(요구사항을 요구하는 자에게 얻어내는 것이 가장 좋다라는 것을 최대한 활용하는 방법?)을 일종의 규칙처럼 이야기한 것 같습니다. 그러니까 실질적으로 XP팀이 지켜야 하는 것들을 설명했기 때문에 추상적이지 않다라고 해야할까요? ^^; 경험적인 것을 얻고 싶다면 김창준님이 기고하시는 마소(2002.9)를 보는 것도 좋겠네요.--["Benghun"]
- fnwinter . . . . 1 match
원하는 만큼 ㅋㅋㅋ
- gester . . . . 1 match
지금 현재 자바하구 MFC 처음하구 있구....우선 공부한다음 만들어볼생각
- html . . . . 1 match
Document Type Definition(Doctype). HTML 문서의 버전을 명시한다. 버전 명시 이유는 [http://hooney.net/2007/08/21/438/ 여기]에서.
- html5/communicationAPI . . . . 1 match
* start() : 포트를 이용할 수 있도록 한다. 채널 메세징 수행시 각각의 포트에 대해 start()를 호출
- html5/richtext-edit . . . . 1 match
* HTML5는 리치텍스트 편집용 API를 표준으로 규정한다.
- html5/web-workers . . . . 1 match
* 워커 인터페이스 생성자에 JavaScript 소스 파일의 URL인수로 전달하면 소스파일을 내려받아 백그라운드에서 실행한다
- iruril . . . . 1 match
|| 실제로 쓰이는 게임기획 - 이렇게 한다 || 제우미디어 ||대강읽음 ||
- mantis . . . . 1 match
* /core/user_api.php 에서 416line 을 아래와 같이 바꿔서 이메일 인증이 아니라 임시 암호를 부여하고, 사용자가 바꾸게끔 한다.
- nilath개인페이지처음화면 . . . . 1 match
자바를 3일내에 떼고... C를 마스터 하는데 걸리는 시간이 7일... 주위 사람에게 들어왔지만... 이젠 인정한다...
- sakurats . . . . 1 match
막연한 고민은 아무것도 고민하지 않는것 보다 오히려 좋지 않은걸지도 몰라.. 또 고민하기 전에 상대를 먼저 아는것이 더 도움이 될거 같고.. 그래서 지금 생각하는건.. 할수있는 만큼의 몇가지 도전들을 해보려고.. 헐헐. 이번에도 흐지부지하게 끝이 나지 않았으면 좋으련만. 노력해야지. -- 혜욘
- snowflower . . . . 1 match
* 사이월드 여기다 공개한다고 찾아가지 않는다.ㅋㅋㅋ 니가 사람들걸 찾아가야지 ㅋㅋ - [창섭]
- woodpage/메신저 . . . . 1 match
4. 목적 : xml을 활용한다.
- zennith/로망이없다 . . . . 1 match
편리하고 좋은 현대적인 어떤 소산물에 대해, 친구들과 이야기 할때에 ["zennith"]는 이야기의 마지막 즈음에 이런 이야기를 한다.
- zyint/articleTest . . . . 1 match
태훈 : 원츄한다고는 하지만
- 강희경 . . . . 1 match
아녀~ 코엑스 옆 어딘가서에서 한다는데...흐음...고민중 그냥 피규어 잔치라는데 한번 가보고는 싶고. 가본사람이 솔직히 좀 실망했다는데. 차라리 대한민국 캐릭터대전을 노리는 편이 더 났다고...-_- 흠. - [이승한]
- 같은 페이지가 생기면 무슨 문제가 있을까? . . . . 1 match
앞에서도 썼듯 ''페이지를 생성할 때, 검색을 자동으로 해준다. 그래서 검색 결과를 보여주고 페이지를 새로 만들지, 아니면 원래 페이지에 덧붙여서 쓸 지 사용자가 결정하게 한다. 그러다면 검색 결과를 무시하지 않는 한, 중복 페이지가 줄어들지 않을까''라는 생각이 기본입니다. 검색범위를 페이지 이름으로 할지 전체 글을 대상으로 할 지는 생각을 못 해 보았지만요. 페이지를 손으로 고치는 방식을 대체할 것은 생각 못했지만, 제가 생각한 방식은 페이지를 만들기 전에 할 수 있으므로, 페이지를 만들고 나서 해결하는 '''아래에서 위로''' 방식과 혼합해서 쓸 수 있다고 생각합니다. 써 놓고 보니 페이지 이름하고는 빗나간 이야기이긴 하지만 어떻게 손이 한 번이라도 덜 가는 구조를 만들까 하다 보니 이런 글을 썼습니다.-[Leonardong]
- 객체지향용어한글화토론 . . . . 1 match
* 좋은 책은 그 어휘를 친절하게 설명을 해주기도 한다. 하지만 모든 단어들을 설명해 놓은 책들은 없다고 보는게 좋고. 정말 난해한 책들은 그나마도 그 단어들을 설명해 주지 않고 넘어간다.
- 걸스패닉 . . . . 1 match
* 일주일만에 완성 가능하게 계획을 세워야 한다. --[구자겸]
- 결혼과가족 . . . . 1 match
* 희경이의 의견에 전적으로 동의한다. 나 같은 경우는 출석 한번도 안 빠졌고 시험은 보통, 리포트 점수는 별로(열심히 썼다고 생각하는데 분량에 있어 착오가 있었다)였는데 C+를 받았다. 들어두면 좋은 내용이긴 하나 그렇다고 추천할 정도는 아니다. 수업도 많고 강사도 많아 어떤 것을 듣느냐에 따라 차이가 많은 것 같다. --[곽세환]
- 경시대회준비반/BigInteger . . . . 1 match
C++ 용 BigInteger 클래스로 거의 모든 연산을 지원한다. UVA 사이트의 구식(?) 컴파일러에도 문제없이 통과할 뿐 아니라, 성능또한 훌륭하다. 고정도 정수 연산을 하는 문제의 경우, 고정도 연산을 하는 라이브러리를 본인이 직접 짜거나, 이 클래스를 이용하면 된다. 몇 일동안 삽질한 결과 후자가 낫다는 판단이 선다. 되게 잘 짜여진 코드다. 시간 내서 분석해봐야 겠다.
- 고한종/배열을이용한구구단과제 . . . . 1 match
* 우연히 들어와서 봤는데 fflush()는 output stream에 사용하도록 만들어진 함수고, fflush(stdin)은 MS의 컴파일러에서만 지원하는 거라서 linux쪽에서는 작동하지 않는다고 하니까 그것도 알아두는 것이 좋지 싶어요. - [서민관]
- 공개선언 . . . . 1 match
패션감각 익히기.(가장 취약한 부분이다. 나를 포장할 줄도 알아야한다. 어렵지만 해보자.)
- 공업수학2006 . . . . 1 match
이번 모임은 5시에 시작하면 어떨까요? [지금그때2006]때문에 6시에 시작한다면 저는 중간에 나가야 하거든요. 한 시간 당기면 모두 같이 [지금그때2006]에 갈 수도 있고요. -- 휘동
- 그남자네집 . . . . 1 match
"전적인 몰두가 사람을 얼마나 지치게 하는지 알고 있었다.". 그렇다. 이럴 땐 도덕경이 생각난다. 잔을 비워야 그 구실을 한다던가. 마음 속 감정을 가득 담아놓은 들, 언제까지 그 상태를 유지할 수는 없다.
- 글로벌CEO . . . . 1 match
* 솔직히 들은지 몇주밖에 안되었지만 수업이 너무 좋은거 같아서 이렇게 글을 쓴다. 수요일 7,8,9 에 중앙문화예술관 10902에서 하니깐 청강 하실분은 해보시길.. 그냥 경영학 수업 듣는거 보다 이렇게 다국적 기업 CEO들의 경험과 노하우가 녹아 있는 수업을 듣는게 더 나은거 같다. 책에서는 배울수 없는 것들을 배우는 만큼 좋은 기회라고 생각한다. 지금까지 몇주동안 들은 수업 내용중에서도 상당히 귀중한 것들을 느꼈다.-[상협]
- 금고 . . . . 1 match
출력은 표준출력(standard output)을 통하여 출력한다. 각 테스트 케이스에 대해서 E(N, K)를 한줄에 하나씩 출력하시오.
- 금고/하기웅 . . . . 1 match
대충은 나온다만... 사이트가서 보니 삼분법이 빠르니.. 이분법이 최적이란걸 증명을 못한다느니 그러네..ㅋㅋ
- 기본데이터베이스 . . . . 1 match
- 영어 or 한글로 단어 출력후 선택할 수 있게 한다
- 김준석 . . . . 1 match
* 2021년 : 애가 둘이다. 먹여살리는것보다 더해야한다.
- 나를만든책장관리시스템 . . . . 1 match
* [나를만든책장] 의 책들을 관리한다.
- 남자들에게 . . . . 1 match
* 너무 원칙에만 충실하려고 하고 다른 사람에게도 그 원칙을 강요하는 사람. 어느정도 공감이 가는 내용이었다. 그리고 나에게 적용해서 내가 고칠점은 무엇인가도 생각해 보았다. 자신이 가지고 있는 원칙이 무조건 옳고 다른 사람도 그렇게 해야 한다고 생각하는것은 정말 피해야할 생각인거 같다.
- 노스모크모인모인 . . . . 1 match
* 특정 문서를 처리 못한다.
- 대학원준비 . . . . 1 match
* 가끔 특차로 성적만으로 뽑는 경우 있음. 이렇게 특차로 뽑힌 사람의 경우 원하는 연구실로 가기 싶고, 추후 정시의 경우는 불리 할 수 있다고 함
- 대학원준비에대한조언 . . . . 1 match
질문에 대한 답도 얻었지만 [대학원준비에대한조언]을 얻은 것이 더 큰 성과였다고 생각한다. [열린질문]을 던지면서 스스로 고민하는 시간이 중요하다는 이야기를 많이 하셨다. [대학원준비06] 팀이 과목 요약을 하고 난 다음에는 고민하는 시간을 가졌으면 좋겠다.
- 데블스캠프2003/셋째날/후기 . . . . 1 match
* 어제 이번 1학년들이 C 와는 다른 언어들을 봤는데 그냥 구경에서 그치지 말길 바란다. 직접 다른 언어도 공부 해보고 많은 걸 배웠으면 한다. --재동
- 데블스캠프2004준비 . . . . 1 match
|| 누가 || 누구, 어디에 연락한다 || 연락한 결과는? ||
- 데블스캠프2005/RUR_PLE/조현태 . . . . 1 match
단 삐삐는 미로의 출구(즉 미로의 외곽벽과 인접한 위치)에 있어야만 한다.
- 데블스캠프2005/java . . . . 1 match
JAVA : J2ME, J2SE, J2EE, 자바서블릿, 자바서블릿의 한 종류로서 jsp 가 존재한다.
- 데블스캠프2005/금요일후기 . . . . 1 match
원카드 만들기는 실제로는 두사람이 서로다른 부분을 짜서 전체적인 시간을 줄이는 것이었는데, 대게 같이짜는 경우가 많았다. 그 점으로 미루어 볼때 설명이 잘 전달되지 않은것 같아서, 원하는 점을 명확히 알려줄 필요가 있다고 생각했다.
- 데블스캠프2005/화요일 . . . . 1 match
C를 막 배운 신입생을 대상으로 한다.
- 데블스캠프2006/SSH . . . . 1 match
* 문제상황 : 리눅스용 프로그램을 만들어야 하는 과제가 나왔다. 해당 과제는 컴파일과 실행을 리눅스에서만 해야 한다. 그런데 vi로 하기는 싫고, visual studio 나 editplus로 작업을 하고 싶다. 어떻게 할까?
- 데블스캠프2006/월요일/함수/문제풀이/김준석 . . . . 1 match
cout << "대원은 40명이상 보트당 대원은 7명 이하 모든 대원에게 무기지급한다면 성공!" << endl;
- 데블스캠프2009/목요일/연습문제/MFC/서민관 . . . . 1 match
키보드 입력으로 midi 소리가 나게 만드는 소스. 같은 폴더에 MidiOut.cpp와 MidiOut.h가 있어야만 작동한다.
- 데블스캠프2009/수요일후기 . . . . 1 match
* [송지원] - 사실 너무 아쉬웠다. JUnitTest를 위해 예로 제시한 계산기 클래스도 함수 하나 정도밖에 테스트 해볼 수 없는 이상한 설계의 클래스였다(너무 OOP 다음수업이라 캡슐화에만 신경을 썼던듯). 한 마디로 Java도, JUnit도 맛보기만 해준 꼴이 된것 같다. 하지만 '''JUnit은 확실히 강한 라이브러리다'''. 내가 몸소 느끼고 자발적으로 세미나한 이유도 그렇다. 내 세미나는 즈질이였지만 많은 1,2학년 학우들이 Java로 개발을 진행할 때 도움이 되었으면 한다.
- 데블스캠프2010/Prolog . . . . 1 match
그들은 전원이 5명 중 누군가 한 명에게서 돈을 빌리고 있고, 또 다른 한 명에게 돈을 빌려주고 있으며, 같은 상대에게서 빌린 동시에 빌려준 경우는 없다고 한다.
- 데블스캠프2011/둘째날/Scratch . . . . 1 match
* 몬스터를 잡는 용입니다. 몬스터들이 가까이 다가왔을때 좌우 방향키를 이용하여 몬스러를 잡는 겁니다. 단. 너무 멀리 있을때 잡으려 한다면 게임오버입니다. 또 너무 가까이 와서 몬스터에게 맞아도 게임오버입니다. 타이밍을 잘 맞춰서 몬스터를 잡아주세요ㅎ
- 데블스캠프2011/준비 . . . . 1 match
* 투표로 결정한다.
- 데블스캠프2012/셋째날/후기 . . . . 1 match
* [김윤환] - svn(servertion) 내용이 가장 인상깊엇습니다. 그쪽부분은 정말 쓸모 있는 부분인것같아요. 그리고 테스트 부분에서 정말 필요한 부분만 테스트한다는것은 매우 설득된것 같습니다. 당연한거지만 설득당해버렷어요? 수긍해버렷어요 ㅎㅎㅎ
- 데블스캠프2012/첫째날/배웠는데도모르는C . . . . 1 match
printf("당신이 원하는 일정을 입력하시오.\n");
- 데블스캠프2013/셋째날/후기 . . . . 1 match
* 음... 사실 정말 열심히 준비를 해서 최대한 차근차근 쉽게 설명을 해 보자고 생각을 했는데... 그래도 역시 처음 접하는 것이라 그런지 그렇게 간단하게 진행되지는 않은 것 같아서 마음에 아쉬움이 남습니다. 새내기들이 파일 포인터랑 파일 입출력을 조금이라도 알고 있었으면 훨씬 수월했을텐데 말이죠. 그래도 제가 할 수 있는 전력을 다 했다고 생각하고, 앞으로 똑같은 주제로 세미나를 한다고 해도 더 낫게는 못 할 겁니다. 따라서 앞으로 같은 주제로 세미나를 할 일은 아마 없지 않을까 싶습니다. 부탁이라도 들어오지 않는 이상. 이것 때문에 마음 걱정이 커서 밥을 먹어도 먹는 느낌도 없었는데, 그래도 스스로 만족스러울 만큼은 한 것 같아서 속이 후련하고 또 조금은 아쉽기도 합니다. - [서민관]
- 데블스캠프2013/첫째날/후기 . . . . 1 match
* 더 심화된 내용쪽(특히 blame, ignore)이 마음에 들어서 잘들었습니다. 다만 처음에 그냥 git commit을 하니 vim이 떠서 명령어를 몰라 맨붕해서 방황하다가 git commit -m "원하는 메세지"를 하니 core editor를 쓸필요가 없음을 깨달아서 허무한 기억이...흑...ㅠ. - [김윤환]
- 동문서버위키 . . . . 1 match
사람들의 인식을 바꾸는데에 실패했다고 본다. 일단 사람들이 위키를 현재 (익명) 게시판의 연장 혹은 (조금 저열한) 보조물 정도로 여기는 인식이 굳어졌다고 본다. 특히 최근 동문서버위키를 살리려고 감성사전 페이지를 만드는 등 구제 노력이 있었으나 그것은 오히려 상황을 더 어렵게 만들었다고 본다. 한번 여러가지로 생각해 보고 분석하고 함께 논의해 볼 문제라고 생각한다. --김창준
- 디자인패턴 . . . . 1 match
디자인패턴에 대한 설명이라.. 다른 곳에서 이미 체계적인 설명들을 해 놓아서 장황하게 설명하지 않는다고 한다면, 말 그대로 '패턴'이 된 디자인들의 묶음입니다. (물론 그렇다고 패턴이 모든 디자인 문제를 해결해주는 silver bullet는 아니죠.) 처음 프로그램을 설계를 할때 참조할 수 있는, 어느정도 공식화 된 디자인들을 일컫습니다. 현재 거의 Reference화 된 23개의 패턴이 있고요. 계속 새로운 패턴이 추가되고 있는 것으로 알고 있습니다.
- 땅콩이보육프로젝트2005 . . . . 1 match
* word를 기준으로 next word를 찾는다. 필요하면 frequency도 이용한다.
- 레밍즈프로젝트 . . . . 1 match
아이디랑 이런거 주는거 땜에 너도 함 읽어봤음 한다
- 레밍즈프로젝트/박진하 . . . . 1 match
후에- 유루가 윈도우 되면 윈도우에서 테스트해봐야한다 ㅋㅋ
- 레밍즈프로젝트/프로토타입/SetBit . . . . 1 match
비트 단위로 저장되는 맵을 로드하기 위해서 사용한다.
- 레밍즈프로젝트/프로토타입/마스크이미지 . . . . 1 match
레밍이미지와 배경을 자연스럽게 합성하기 위해서 사용한다.
- 로마숫자바꾸기/허아영 . . . . 1 match
완벽하다고 자부한다. (소스말구요 프로그램 출력..헤헤..^^)
- 마방진/Leonardong . . . . 1 match
cout << "원하는 마방진 크기 : ";
- 마방진/임민수 . . . . 1 match
cout << " 원하는 마방진의 크기를 입력하세요 (11 이하의 홀수만) : ";
- 마샬링 . . . . 1 match
마샬링은 하나 이상의 프로그램 또는 연속되어 있지 않은 저장 공간으로부터 데이터를 모은 다음, 데이터들을 메시지 버퍼에 집어넣고, 특정 수신기나 프로그래밍 인터페이스에 맞도록 그 데이터를 조직화하거나, 미리 정해진 다른 형식으로 변환하는 과정을 말한다.
- 마인드맵핑 . . . . 1 match
''두뇌는 그것을 거부하고 반항하다가 마침내 성공을 하게 되고 갑자기 저항할 수 없는 성취감이 공포감을 대신한다.''
- 만년달력 . . . . 1 match
* 원하는 년도와 달을 입력하면 그 달의 달력이 나오는 프로그램.
- 만세삼창VS디아더스1차전 . . . . 1 match
흠.. MSN에서 있었던 영창이와 인수의 신경전 - 일종의 언어유희 - 을 공개한다. 일단 1차전은 비긴 걸로 끝났다. 추후 다른 팀원들이 알아서 싸울 거라 믿어 의심치 않는다.
- 무엇을공부할것인가 . . . . 1 match
우리는 무엇이 되기를 원하는가? 해당 목표를 이루기 위해서는 무엇을 공부할 것인가? 해당 지식은 언제쯤 공부하는 것이 적당할까?
- 문서구조조정 . . . . 1 match
위키는 ["DocumentMode"] 를 지향한다. 해당 페이지의 ["ThreadMode"]의 토론이 길어지거나, 이미 그 토론의 역할이 끝났을 경우, 페이지가 너무 길어진 경우, 페이지하나에 여러가지 주제들이 길게 늘여져있는 경우에는 문서구조조정이 필요한 때이다.
- 문자반대출력/남상협 . . . . 1 match
* 아직도 파이썬 함수 좀 쓸라면 찾아 봐야한다. 이놈의 나쁜 기억력.. -_-
- 문자반대출력/문보창 . . . . 1 match
==== ver2 (확장문자까지 판단해서 반대로 한다) ====
- 문자반대출력/변형진 . . . . 1 match
PHP에서는 strrev()라는 문자열 처리 기본 함수를 제공하지만, 현재 버전에서의 PHP는 기본 함수로는 Multibyte String을 지원하지 못한다.
- 문자열연결 . . . . 1 match
* x 문자열 마지막에 y를 연결시켜 출력한다.
- 박범용 . . . . 1 match
||그래서 좋아한다는 음악 : pantera ㅡㅡ^||
- 반복문자열/김대순 . . . . 1 match
re-지적을 해 주셔서 감사합니다. 주소값으로 넘길때 int형 주소에 +1을 하게될 경우 4바이트를 건너뛴 주소의 값을 출력하기 때문에 원하는 결과가 나오지 않지요..^^;-대순-
- 방울뱀스터디 . . . . 1 match
지금까지 해왔던 기존의 다른 스터디와는 좀 다르게 해보려고 합니다. 그동안 ''가르치는 것''에 대하여 여러가지 고민도 해보고 조언도 얻고 해서... 변해야 한다고 생각했습니다. 잘 될지는 저도 잘 모르겠습니다. --재동
- 벌이와수요 . . . . 1 match
그렇지만, 정보시스템 감리사 평균 월급은 345만원입니다. IT 쪽에서도 돈 잘버는 사람은 억대 연봉자가 있는 것으로 알고 있습니다. 하지만, 의사나 변호사와 상대 비교를 하기는 어렵습니다. 그들은 자신의 직업을 획득하기 위해 엄청나게 많은 투자를 한 사람들입니다. 또, 직업의 성숙도에서 보아도 그들은 소위 자격증, 즉 직업을 얻기 위해 자격증을 따야하는 "전문직"(profession)의 단계에 이르렀지만, 컴퓨터 쪽은 아직 요원합니다(스티브 맥코넬 같은 사람은 이런 자격증 제도가 빨리 이뤄져야 한다고 역설합니다).
- 봄과프로젝트 . . . . 1 match
학기초에 잘만 활용한다면 많은 시간이 나오는 봄을 이용하여 프로젝트를 진행해 보자.
- 부드러운위키만들기 . . . . 1 match
툴에 대한 익숙도 문제에 대해서는 1. 간단한 위키 시연 세미나 2. 1학년을 포함한 공동 스터디 & 공동 문서화(혹은 Pair 문서화) 정도의 답이 나올지 모르겠습니다. 하지만, 더 근본적인 것을 생각해야 한다고 봅니다. 필요가 절실하면 그에 따른 행동들은 자연스레 따라오리라 봅니다. (함 시험 족보라도 모아볼까요.; 아주 농담은 아닙니다.) --[1002]
- 비행기게임/진행상황 . . . . 1 match
* 7.10 : 대충 비행기에서 미사일 나가고, 적기도 나타나고 한다
- 빵페이지/도형그리기 . . . . 1 match
* 같은 생각으로 작성한다면 소스가 어떻게 표현될까 궁금했다. 소스양만 따지면, Python 을 위한 문제인가.
- 빵페이지/소수출력 . . . . 1 match
cout << "원하는 수를 입력하시오. : ";
- 사과나무/과제방/1회차/김도익 . . . . 1 match
scanf() 함수는 입력란을 만들어 자료를 입력받는 함수입니다. 입력된 자료는 매개변수로 지정한 변수에 대입됩니다. 문장 형식을 통해 입력된 자료를 변수에 대입한다는 점에서 변수의 값을 문장 형식에 사용하는 printf() 함수와는 출력 방향이 반대인 셈입니다
- 삼총사CppStudy/20030806 . . . . 1 match
* friend 함수를 위해서는 VS 6.0 sp 5를 깔아야 한다.[http://download.microsoft.com/download/vstudio60ent/SP5/Wideband-Full/WIN98Me/KO/vs6sp5.exe]
- 상협/나는희망의증거가되고싶다 . . . . 1 match
* 음.. 이책을 읽게된 동기는 우리 누나가 추천을 해줘서 읽게 되었다. 읽고 나서는 잘 읽었다는 생각이 들었다. 언제나 느끼는 것이지만 다른 인간의 투철한 삶에 대한 투쟁을 보면 나에게 그 의지가 조금이나마 전달되는거 같아서 좋다. 나는 나 자신도 상당히 의지가 굳세다고 생각했는데, 서진규 씨를 보니 본받을 점이 많은거 같다. 서진규 씨는 고생을 더 많이 했기 때문에 그 성취후의 보람도 훨씬 더 컸을 것이다. 서진규씨의 투철한 삶에 대한 의지는 감동이었다. 그런데 그 서진규씨에게 있어서 희망이라는 것이 다른 사람에게 보여주기 위한(사회적 지위와 명성 같은 타인에 의한 판가름 되는거.) 희망인지 아니면 자기 자신에게 보여주기 위한(자아실현) 희망인지는 확실히 분간을 못하겠다. 아무래도 전자인거 같은 느낌이 좀 든다. 서진규씨는 자신의 하고 싶은 공부를 하고 있다는 데에서 기쁨을 느끼기 보다 하버드라는 곳에서 그 스스로 대단하다고 생각하는 사람들과 공부를 하게 된 점에서 더 큰 기쁨을 느끼는거 같다. 그래서 약간 씁쓸하기는 하다. 그리고 서진규씨는 미국 군인이었던 만큼 미국에 대한 사랑이 큰거 같다. 개인적으로 미국 자체를 싫어 한다고 볼 수는 없지만, 현재 미국이라는 거대한 이익 집합체가 세계에 하는 행동을 좋게 보지 않는 입장이라서 그게 좀 걸렸다. 그래도 그 수많은 세월동안 미군에 있으면서 자신의 꿈을 실현해 나갔으니 이해는 간다. 음.. 이렇게 좀 삐딱하게도 조금 볼 수 는 있지만, 그래도 서진규씨의 인생에 찬사를 보낸다. 여러가지 고난을 이겨내고 자신이 생각하는 꿈을 이루었으니... 자신이 생각하는...
- 상협/너만의명작을그려라 . . . . 1 match
* 우연히 신문을 보다가 책 소개하는 부분을 봤다. 그거 보고나서 끌려서 도서관에서 빌렸다. 역시 신문은 꼭 봐야 한다니깐.. 이런정보도 있고..
- 새싹C스터디2005 . . . . 1 match
영어성적://5번 반복한다.
- 새싹교실/2011/AmazingC/5일차(4월 14일) . . . . 1 match
* 따라서 반드시 1번은 명령을 수행한다.
- 새싹교실/2011/GGT . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/Pixar . . . . 1 match
* 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/學高 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨3 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨4 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨5 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨6 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/무전취식/레벨9 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/쉬운것같지만쉬운반/2011.3.15 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/쉬운것같지만쉬운반/2011.3.29 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/쉬운것같지만쉬운반/2011.4.6 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/쉬운것같지만쉬운반/2011.5.17 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/씨언어발전 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2011/씨언어발전/4회차 . . . . 1 match
재귀함수는 함수안에 자기함수를 써서 계속 불러다 계산한다.
- 새싹교실/2012/새싹교실강사교육 . . . . 1 match
1. 기본 커리큘럼으로 만들은 강의자료와 교육시간은 강사들에게 약간의 준비됬다는 자신감(자신이 뭘 가르쳐야될지에 대한 확신감으로 표현 가능)을 부여한다.
- 새싹교실/2012/새싹교실강사교육/2주차 . . . . 1 match
2. 코딩 Q&A(모른다면 가르쳐주고, 배워야 한다면 적으세요! 공백은 적으라고 있는 것 입니다)
- 새싹교실/2012/새싹교실강사교육/4주차 . . . . 1 match
1.2 프로그램이 작업한 결과를 영구적으로 보존하기 위해서도 파일을 외부에 저장합니다. 이는 당연한 거겠죠? 우리가 그림판을 통해 작업을 하고 난 뒤에는 항상 저장을 합니다. 이와 같은 이치입니다. 만약 게임의 점수 정보가 담긴 파일을 저장한다든가 등에도 필요합니다.
- 새싹교실/2012/아무거나 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아무거나/2회차 . . . . 1 match
* 각 줄에서 공백을 출력하는 횟수와 *을 출력하는 횟수의 규칙을 찾아내어 식을 만들고 이를 조건식으로 활용한다.
- 새싹교실/2012/아우토반/뒷반/4.13 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/뒷반/4.6 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/뒷반/5.11 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/앞반/3.22 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/앞반/3.29 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/앞반/4.12 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/앞반/5.10 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/아우토반/앞반/5.17 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2012/열반/120507 . . . . 1 match
* 원하는 원소에 즉시 접근할 수 있습니다.
- 새싹교실/2012/절반/중간고사전 . . . . 1 match
* 앞으로 새싹을 게임 만들기로 진행하려고하는데 새내기들이 게임을 안 좋아한다고 해서 놀랐습니다. 당연히 좋아할 줄 알았는데 아니었어요. 컴공은 다 겜덕인줄 알았는데 나의 착각이었구나…………
- 새싹교실/2012/클러그 . . . . 1 match
* 자신이 원하는 대로 씁니다.
- 새싹교실/2013/라이히스아우토반/3회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/라이히스아우토반/4회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/라이히스아우토반/7회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/록구록구/1회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/록구록구/2회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/록구록구/3회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/록구록구/4회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/록구록구/5회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/록구록구/6회차 . . . . 1 match
(사실)지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.
- 새싹교실/2013/양반/1회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/양반/2회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/양반/4회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/양반/5회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/양반/6회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹교실/2013/양반/7회차 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 새싹스터디2006/의견 . . . . 1 match
제로페이지 위키에 [새싹스터디2006]에서 소그룹으로 진행한 기록이 재학생에게 필요할까요? [제로페이지의문제점]에서도 ''스터디가 신입 수준을 벗어나지 못한다''라는 점을 지적합니다. [2004년활동지도]의 1학기 스터디, [새싹C스터디2005]의 Class페이지들이 대표적입니다. 반면 [새싹C스터디2005/선생님페이지], [새싹배움터05/첫번째배움터], [새싹C스터디2005/pointer]와 같은 페이지는 현재 [새싹스터디2006]을 진행하는데 도움을 줍니다. 조금만 가다듬으면 [STL]페이지처럼 주제별로 정리할 수 있습니다.
- 새페이지만들기 . . . . 1 match
개인적으로 Zeropage에서는 후자의 방식('''방법 2''')이 일단은 주제를 흐트러트리지 않는다는 점에서 권장한다. - 강석천
- 생각하는프로그래밍 . . . . 1 match
처음 읽었던 때를 대학교 2학년 가을학기로 기억한다. 어디서 봤는지 기억나질 않지만(지금은 찾을 수도 없다) " [ProgrammingPearls]라는 책이 있는데, 연습문제를 다 풀어보는데 6개월이 걸렸다"라는 서평을 읽은 후(들었는지도 모르겠다) 한 번 도전해보자는 마음으로 도서관에서 책을 빌렸다. 봄학기에 자료구조 수업을 재미있게 들었던 터라 자신감마저 가지고 원서를 읽기 시작했다.
- 서버구조 . . . . 1 match
1. 설치된 프로그램의 버전, 버그등의 수정이 이루어지면 갱신하거나 패치하도록한다.
- 서지혜/2012 . . . . 1 match
* {{{{color:#FF0000; font-weight:bold} 2012 지금. 한다.}}}
- 서지혜/MyJavaUtils . . . . 1 match
* String을 연산해 새로운 String을 만들 때는 StringBuilder를 이용한다.
- 성의과학 . . . . 1 match
* 이 수업은 어떤 교수 수업을 듣느냐에 따라서 고등학교 생물 수업이 될수도 있고 유익한 수업이 될수도 있다. 교수 이름은 잘 기억이 안나지만 하여튼 잘 가르치는 교수한테 꼭 들어야 한다. 불행히도 난 교수를 잘못 선택해서 고등학교 생물수업이었다. 내내 잤다. 남는게 없었다. -_- [상협]
- 셸정렬(ShellSort) . . . . 1 match
* 설명: 셸에 의해 고안된 정렬(소트) 방식. 2분 탐색을 응용한 것으로 집합 중의 첫 번째 항목이 집합의 반 정도의 항목과 비교되고, 다음 2분할한 부분 집합의 두 번째 항목끼리 비교되어 순차적으로 집합의 전 항목이 비교된다. 비교 할 때마다 지정한 기준에서 떨어져 있으면 그 항목의 장소를 교환한다. -네이버 지식사전
- 소프트웨어장인정신 . . . . 1 match
소프트웨어를 개발하는데 장인정신이라는 비유를 사용한다. 프로세스와 프로세스 산출물에 초점을 맞추는 소프트웨어 엔지니어링은 규모가 작은 프로젝트에는 좋은 선택이 아니다. 평범한 소프트웨어 개발자 여럿을 두고 이를 관리하기보다 장인 소프트웨어를 개발자 한 명을 고용하는 편이 속도나 품질 모두에서 낫다. 따라서 전통적인 수공업에서 나타나는 도제생활이 초보 프로그래머에게는 필요하다. 프로그래머는 도제를 거쳐 중간 장인으로, 결국에는 장인으로 성장하게 된다.
- 수 . . . . 1 match
영어성적://5번 반복한다.
- 수면과학습 . . . . 1 match
1. 수면은 지속적인 기억 흔적을 제공하는데 기여한다. 즉 단기->장기 기억 전환시 Rem이 중요하다. (다음 조사 참고)
- 수학의정석/방정식 . . . . 1 match
문제: 강물이 흐르는 속력은 xkm/hr 이다. 이 강을 따라 ykm의 거리를 배로 왕복하는 데 t분 걸렸다고 한다. 이 때, 잔잔한 강물 위에서의 이 배의 속력을 구하여라.
- 수학의정석/방정식/조현태 . . . . 1 match
time_in = clock(); // 초기 시작 시간을 입력한다.
- 수학의정석/행렬 . . . . 1 match
연산이 불가능할 경우 "불가능"이라고 출력을한다.
- 수학의정석/행렬/조현태 . . . . 1 match
time_in = clock(); // 초기 시작 시간을 입력한다.
- 순차적학습패턴 . . . . 1 match
...학습할 작품([지식샘패턴])을 선정한 다음 이를 연대순으로 학습한다면 훨씬 이해하기 쉬워질 것이다.
- 스택/aekae . . . . 1 match
"원하는 번호 선택 : ";
- 스터디/Nand 2 Tetris . . . . 1 match
2개의 Instruction을 지원한다. 각 Instruction은 2Byte이다.
- 시간맞추기 . . . . 1 match
(단, 프로그래밍 하는 언어에서 지원하는 범위에서 처리조건을 만족하시오.)
- 시간맞추기/남도연 . . . . 1 match
아직도 time(0)의 쓰임과 뜻을 이해 못한다.. 누가 가르쳐 주시기를 ㅠㅠ
- 시간맞추기/허아영 . . . . 1 match
kbhit()이란 함수 인데, 키가 눌러지면 1, 안 눌러지면 0을 리턴을 한다는 것만을 알아냈다.
- 실시간멀티플레이어게임프로젝트 . . . . 1 match
교육적 목적과 동시에 과 친구들과 함께 즐길 수 있는 유익한 게임을 만드는 목적도 있다. 또한, 동기, 선후배들과 교육적인 프로젝트를 "즐겁게" 할 수 있는 틀을 제시한다.
- 실시간멀티플레이어게임프로젝트/첫주차소스3 . . . . 1 match
저장된 명령을 실행하는 때를 '상태보기' 기능을 쓸 때 하는게 좋겠다는 생각입니다. , 로그인 할 때만 실행하게 한다면, 로그인 후에 내린 명령 중에 실행 해야 할 게 있을 때 실행을 하지 않은 상태에서 '상태보기'기능을 쓰기 때문에 잘못된 결과가 나올 것 같습니다. -- 휘동
- 아주오래된농담 . . . . 1 match
마음이 불편하다. 사람이 사람을 속이기가 얼마나 쉬운지 생각해본다. 자기한테 이익이 되니까, 재미로 남을 골탕먹이려고 속이기는 물론이고 자기 딴에는 배려한다고, 사랑하기 때문에 속인다. 남을 속이고, 나까지 속인다. 위선자가 되기 싫으면 최소한 나는 속이지 말아야지.
- 안전한장소패턴 . . . . 1 match
'''떠버리, 과시적인 사람, 아는체 하는 사람, 또는 지나치게 경쟁적이거나 대립적이거나 적대적인 사람은 다른 사람을 불편하거나 불안하게 만들고 아이디어를 배우고 나누고 만드는데 좋지 않은 환경을 조성한다.'''
- 안혁준 . . . . 1 match
* ~~nhn 오픈 퍼블리싱 팀(이라쓰고 오픈소스팀이라고 말한다)에서 nForge 4.0개발 중.~~
- 알고리즘2주숙제 . . . . 1 match
세로가 3 가로가 n(2의 배수)인 상자가 있다. 여기에 크가가 2*1인 레고를 채울려고 한다. 가로가 n일때 빈칸 없이 가득채울수 있는 모양의 개수를 클로즈폼으로 구하시오.(Generating Function으로 구하시오)
- 알고리즘4주숙제 . . . . 1 match
우리가 알기로는 복권의 당첨 확률은 매우 낮다. 그러나 당첨자들은 존재한다. 왜일까? 그리고 복권 당첨 확률을 높이는 경우들을 생각해보고 그생각들의 문제점도 생각해보자.
- 얼굴빨개지는아이 . . . . 1 match
''사람들은 우연히 한 친구를 만나고, 매우 기뻐하며, 몇가지 계획들도 세운다. 그러고는, 다신 만나지 못한다. 왜나하면 시간이 없기 때문이고, 일이 너무 많기 때문이며, 서로 너무 멀리 떨어져 살기 때문이다. 혹은 다른 수많은 이유들로.''
- 영어와친해지기 . . . . 1 match
1. 평소에 가까이 한다.
- 영호의해킹공부페이지 . . . . 1 match
80년대 윤리 강령. 90년대에 새로운 것에 기반한 것이 나왔다지만 나는 80년대 것을 선호한다. 자유롭기 때문에.
- 오목/재선,동일 . . . . 1 match
// 클릭한 배열에 숫자 1을 대입한다.
- 오픈소스검색엔진Lucene활용 . . . . 1 match
* 지원 된다. 하지만 SearchFiles.java 예제 소스를 조금 수정 해야 한다.
- 위키를새로시작하자 . . . . 1 match
저의 경험으로 볼 때, 단지 새로 시작하는 것이 "새로운 것"을 가져다 주지는 않습니다. 동시에 두개의 위키를 돌리든가 하고, 새 위키에는 새로움의 어포던스(예컨대 비쥬얼 등)를 제공하도록 합니다. 그리고 새 위키에는 대다수는 읽을 수 있고, 몇 명만 쓸 수 있게 합니다. 그리고 그들이 규칙을 만들어 나갑니다. 우선은 규칙에 대한 규칙(메타규칙)을 만듭니다. 예컨대 "전체 규칙 수는 9개를 넘지 않는다"든지... 그리고 가능하면 생성적인(generative) 환경을 만들려고 합니다 -- 야구선수가 공을 받는 방법을 미적분학으로 풀어내기보다, 공이 보이는 각도를 일정하게 유지하려고 한다든지 하는 휴리스틱적인 규칙으로 접근합니다. 필요없는 것은 제거하고 꼭 필요한 것만 남깁니다. 제거해보고 해보고, 붙여보고 해봅니다. 예를 들어, 현 위키에서 들여쓰기가 불가능하다면 어떤 세계가 펼쳐질까요?
- 위키설명회2006 . . . . 1 match
* 2차 홍보 : 3월 8일 강의실 홍보. 수생, 아영, 현태, 민경이가 강의실에 들어가 홍보한다.!
- 유용한팁들 . . . . 1 match
* 구글에서 어떤 검색 키워드를 넣느냐에 따라서 삽질을 하던지 바로 해결하던지 한다는 것을 알았음. 위 검색 키워드로 찾아 가면 위 참고글이 나오는데 똑같이 해도 안될 가능성이 높음.
- 유정석 . . . . 1 match
(동적 할당에 대해서) -> 포인터를 공부한 후에 공부해야 한다.
- 이승한/java . . . . 1 match
goto, const 는 사용하지 못한다.
- 이승한/mysql . . . . 1 match
* PHP 에서 지원하는 MySql API 함수를 사용
- 이승한/tip . . . . 1 match
그 외의 #pragma 의 기능이 많다고 한다. 뭘까. 알고싶긴한데. 영문이라 압박이다.
- 이영호/지뢰찾기 . . . . 1 match
// srand(GetTickCount()); 를 이 함수 밖에서 수행한다.
- 이차함수그리기 . . . . 1 match
* 함수 값을 저장하기 위해 일차원 배열을 사용한다.
- 인수/Smalltalk . . . . 1 match
* 짜놓고 생각 : 이건 스몰토크프로그래밍이 아니다. C++/Java의 냄새가 너무 많이 나는것 같다. 부분부분을 좀더 간단하게 할 수 있을것 같기도 하다. 책을 더 봐야 할듯 싶다. 인스턴스 생성할때도 인자를 넘겨 받을 수 있을 텐데 잘 안된다.(지금 보니까 그렇게 하지 말라 한다. 대충 찾아보니 팩토리 메소드를 많이 쓰는것 같다. 또 클래스 메소드 만드는법 알아낼라고 줄기차게 삽질을 했다.--;) do라는 좋은게 있었군.
- 장용운 . . . . 1 match
* 내 페이지를 업데이트한다 (2015.3.12) [장용운]
- 전시회 . . . . 1 match
* 개선한다면
- 전철에서책읽기 . . . . 1 match
서서 책을 오래 보다 보니 나중엔 등이 아픈것 같다. 자세를 똑바로 하고 봐야 한다. --[인수]
- 정규표현식/모임 . . . . 1 match
이번 챕터에서 제시한 내용을 활용해야 한다.
- 정렬/조재화 . . . . 1 match
ofstream fout("output.txt"); // txt에 출력값을 저장한다.
- 정모/2002.3.28 . . . . 1 match
* 세미나를 한다면 누가 언제 어떤 주제로 누구를 대상으로 할 것인지도 정하면 좋겠습니다. 3월 마지막 정모이니만큼.. --창섭
- 정모/2003.12.27 . . . . 1 match
* 위의 사람들은 다시 참여를 원한다면 언제든지 다시 참여가 가능함.
- 정모/2004.3.2 . . . . 1 match
* 수업을 한다면 수업 다 마치고 하는 걸로 하지요. -- 휘동
- 정모/2004.5.7 . . . . 1 match
- 제로페이지가 융통성있는 학회가 되었으면 한다.
- 정모/2004.7.12 . . . . 1 match
각 조가 원하는 주제를 하던지 요청을 받아서 하던지.
- 정모/2004.9.24 . . . . 1 match
방법론, 위키활용 - 지식관리, 다양한 것, 자유롭다, 회의, 숙제를 스스로, 새로운 것을 한다
- 정모/2005.12.15 . . . . 1 match
- 회장이 없어도 꼭 한다. 변동없음.
- 정모/2005.2.2 . . . . 1 match
* 새회원 모집 일정 --> 3월말(일찍 회원들을 모집해서 제로페이지라는 공동체의식을 좀더 강하게 유지한다는 의미를 내포함)
- 정모/2005.3.14 . . . . 1 match
정모를 계속 월요일에 하는거죠? 월요일은 7시~7시반 정도까지 수업이 있어서 참여하기가 어려운데-_- 다른 시간에 한다고 항상 가지는 못하겠지만... 가끔은 다른 요일에도 해주세요^^ --[상규]
- 정모/2005.4.25 . . . . 1 match
└ 시나리오 작성부터 코딩까지 파트별로 따로 나뉘어져서 심사한다고 함.
- 정모/2005.9.5 . . . . 1 match
* 저고학번이 한팀이 됨. 학생회 점검표를 활용한다. 매달 조를 바꾼다. 담당제. 정도의 이야기
- 정모/2007.1.12 . . . . 1 match
2. 앞으로 회의는 1주일에 한번씩( 제로페이지 정책 참여를 원하는 사람들만 참여) -> 의사결정, 아이디어 회의
- 정모/2007.1.29 . . . . 1 match
미리읽어야한다는 압박감( 사람이 많이 갈수록 압박감이 줄어듬)
- 정모/2007.3.27 . . . . 1 match
- 회의가 끝난뒤 우리는 학회이니까 자신이 부족한 과목, 급한 숙제, 궁금한점 등등에 관해서 주제를 만들고 활용하는 방식으로 했으면 한다.
- 정모/2007.3.6 . . . . 1 match
열 번째 발표자 : 김남훈 -> 홀 아르바이트 활동을 함. 다른사람이 바텐더 활동을 한다고 하면 말리고 싶음. 2년동안 영화계에서 잠시 활동하심. 2년동안 학교를 다니다가 군대에 다녀옴. 현재 3학년에 재학중입니다. 3학년 여러분들과 친분을 많이 다졌으면 합니다.
- 정모/2011.11.9 . . . . 1 match
* 소닉 OMS를 보면서 소닉이 돌 때 마다 제 머리도 따라서 움직인 듯한 느낌이?! 그리고 소닉x는 사람도 등장하길래 안 봤었는데, 쉐도우가 궁금해서 봐야할 듯 합니다ㅋㅋ 게임에 나오던 로봇 소닉도 등장한다고 봤던거 같은데 은근 재밌을 것 같아요. 다음 주에 예정된 쓰레기로 작품을 만드는 것도 기대됩니다. 혹시 A4용지 박스 필요하면 말씀주세요ㅎㅎ - [강소현]
- 정모/2011.3.2 . . . . 1 match
* 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 정모/2011.3.28 . . . . 1 match
* 새싹 돌아보기 도중 나왔던 윤종하 게임 세미나! 정확히 언제 하실지 궁금해졌습니다 ㅋㅋ 다음 주 부터 ZP에 관심 있는 새내기들도 참여한다던데, 이제 ICE BRAKING의 진가를 발휘할 때가 오지 않았나 싶습니다. 다른 사람들도 모두 알 수 있는 용어들로 채워졌으면 합니다. OMS에서 처음과 두번째 동영상은 TV 광고에서도 많이 봤던 류였지만, 세번째의 사람 전체 행동을 인식해서 컨트롤러 없이도 게임을 즐길 수 있는 것과 네번째 동영상에서 컨트롤러를 활용해 화이트보드에 글씨를 쓰거나 3D 형태로 보이게 하는 것이 신기했습니다. 특히, 로봇같은 경우는 오른쪽으로 가라고 하는 손가락질을 인식해서 이동하는게..정말 능력자가 많은 듯 싶습니다. 책 읽기 모임은 원래 격주로 하는데 시험이 3주밖에 안남아 다음주에 진행하고, 중간고사가 끝날 때까지 쉴까 고민중입니다. 어느 새 3월이 다 갔네요! 시간 참 빠르군요 ㅠㅠ - [강소현]
- 정모/2011.5.23 . . . . 1 match
* 이래저래 커스 공연도 한다고 하고, 과제 때문에 불참도 하고, 저번 정모 때 워낙 11학번 학우들이 많이 있어서였을까요,, 조금 썰렁하다 라는 느낌이 있었지만,, 뭐 홍기의 세미나 잘 들었습니다. 이번 OMS에서 script에 대해서 하셨는데,, 아르바이트 할 때 약간 다뤘던 (간단한 웹 페이지 수정 작업을 했습니다. 그 외에 엑셀 작업 조금이랑,, 개인 공부(?)) 기억이 났습니다. 조금 고치고 저장한 다음에 페이지 열어보고, 잘 되네 이러고 다른거 수정 하고 했었습니다. 전역 후 승한이형이 알려준w3school.com 사이트에서 좀 기초적인 것만 공부하고 아르바이트를 시작했었는데, 자세하게 공부 할 기회가.. (없었던게 아니라 내가 안했을 지도..) 접,, 여튼 조금 더 관심을 가져 봐야 겠다는 생각이 든 OMS였습니다. ㅎ - [권순의]
- 정모/2011.5.9 . . . . 1 match
* [김홍기] 학우의 세미나(시간이 된다면 한다네요.)
- 정모/2011.7.25 . . . . 1 match
* 정모 후기 나만 늦은건가하고 걱정했는데 아니네 신난다! 지각해서 OMS못봐서 아쉬웠습니다. 5P잠겨서 당황 6p갔다가 결국 4p오니 아 아직한다 신난다. 수경누나가 나랑 모르는 사이라고 해서 푸홬ㅋㅋ 덥고 지치고 오래되서 그것 밖에 기억안나오 으으 - [고한종]
- 정모/2012.1.6 . . . . 1 match
* 코드 몇줄 가지고 방명록이 만들어지고 그게 DB랑 연동 되는걸 보니 참 신기 했습니다. 그리고 김태진 학우 혼자 회장 후보여서 저도 얼결에 추천받았는데.. 공약을 써야 한다니 ! -[고한종]
- 정모/2012.11.26 . . . . 1 match
* [김태진] - 드디어 과제를 끝냈네요.. 새벽 5시입니다.(는 쳐 놀다 시작해서 그럼) 저번과 이번 정모는 스터디.프로젝트 공유보다 초점이 약간 다른데 가있었죠. 임기가 2개월 남짓 남은 상황에서 이제서야 여러가지 좀 다른 시도들을 해보는 중입니다. 정모에 다른 활동들을 넣어본다던지.. 위키를 활성화 시켜본다던지.. 스터디 프로젝트는 작년부터 올해까지 계속 느껴온거지만 하는 사람/하지 않는 사람 차이가 심하고 하지 않는 사람은 하는 사람의 말을 이해하기 어렵다는 점이 항상 아쉬웠습니다. 그 점을 보완해 다른 방향을 생각 중이네요. (가령 초등학생에게 이 프로젝트를 설명한다면? 코너, 내가 이 프로젝트를 하는데 이게 지금 부족한거 같다 코너. 등) 좋은 의견 환영합니다.
- 정모/2012.2.24 . . . . 1 match
* 작은 OMS 이야기라는 드립으로 시작한 OMS.. 준비한다고 시간 좀 끌었는데 들어보니 시간 끌 만 했다는 생각이 들었습니다. 재미있었어요! 여행을 거의 다녀본 적이 없어 간접경험삼아 열심히 들었네요ㅋㅋㅋㅋ ''그나저나 오늘 인터넷하다가 도쿄 역 방사능 수치가 4.88 마이크로 시버트라는 글을 어디서 봤는데..............''
- 정모/2012.4.30 . . . . 1 match
* PC실을 관리하면서 받는 장학금을 10%정도 떼어 지원하는 방법도 있을거같습니다.
- 정모/2012.7.11 . . . . 1 match
- 안드로이드에서는 JavaCV를 import해서 사용한다.
- 정모/2012.8.29 . . . . 1 match
* 한 가지 방법은 [https://trello.com/board/4f772fd6de39daf31f04799f ZeroPage Board]의 List나 Label로 관리하는 방법이고, 또 한 가지 방법은 [https://trello.com/zeropage ZeroPage Organization]의 Board로 따로 관리하는 방법입니다. 후자를 선택할 경우 ZeroPage Board가 덜 복잡해지는 대신 따로 Member를 추가해야 한다는 단점이 있습니다. 의견주세요. - [변형진]
- 정모/2012.9.24 . . . . 1 match
* 동아리 지원 채택시(처음 지원하는 사업 선정시) - 지원금의 5%
- 정모/2013.1.29 . . . . 1 match
* 의견1: 뭔가 권한같은 것을 부여해서 회원이냐 아니냐에 대한 차이점을 주는 요소가 들어가야한다.
- 정모/2013.3.18 . . . . 1 match
* 이전처럼 행사에 참여한 사람을 정회원으로 한다.
- 정모/2013.3.4 . . . . 1 match
* 3월 7일까지 강사신청을 받되 외부인 강사는 강사가 부족하면 더 받는 식으로 한다.
- 정모/2013.4.15 . . . . 1 match
* 시험준비한다고 한주 쉼.
- 정모/2013.5.13 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 정모/2013.5.20 . . . . 1 match
예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"
- 정모/2013.6.10 . . . . 1 match
관리하는 사람들이 체계적으로 한다고 한 들, 비는 시간은 분명히 존재합니다. ZP의 다른 회원들이 가끔씩은 확인해 주었으면 합니다.
- 정모/2013.8.12 . . . . 1 match
* 개발기기가 뭐뭐 있는지 홈페이지 게시판에 공지로 올려 놓는다던지 한다면, 사람들이 인지할 수 있는데 도움이 되지 않을까 합니다만 - [권순의]
- 제13회 한국게임컨퍼런스 후기 . . . . 1 match
* 그리고 나서 음덕인 본인이 찾아간 곳은 Audio관련 세션. 트레일러를 만들더라도 음악을 어떻게 만들어야 하는지에 대해서 이야기를 했다. 스토리텔링을 통해 짧은 시간에 시선을 사로잡을 수 있어야 한다고 했다. 그러면서 잘못된 예와 잘 된 예를 보여주셨는데 잘 된 예도 그닥..
- 제로스 . . . . 1 match
* OS의 동작원리를 이해한다.
- 조동영 . . . . 1 match
얼떨결에 코 꿰어서 하게댄 프로젝트... 라고하긴 머하나... 다른사람에게 설명해주는 법을 공부한다고 생각하고 해야지...
- 졸업논문/요약본 . . . . 1 match
웹 환경은 이제 하나의 플랫폼으로 자리 잡고 있다. 빠르게 변하는 웹 환경에는 python같은 객체지향 언어가 적당하다. Django는 python으로 만들어진 웹 애플리케이션 프레임워크로, 데이터베이스를 추상화하여 개발자가 기민하게 웹 애플리케이션을 작성하도록 돕는다. Django에서는 기존에 ODBC등을 이용하는 CLI 보다 한 단계 더 높은 수준에서 데이터베이스를 사용할 수 있다. 예를 들어 주언어 python에 클래스를 정의하면 데이터베이스 테이블을 자동으로 생성해주며, 클래스가 변경되면 데이터베이스 테이블도 자동으로 수정해준다. 그 밖에 삽입, 삭제, 수정, 조회 기능을 클래스가 가진 메소드로 추상화하여 주언어 수준에서 데이터베이스를 사용할 수 있도록 한다. 이러한 지원을 바탕으로 웹 애플리캐이션 개발자는 기민하게 프로그램을 작성할 수 있다.
- 중위수구하기/정수민 . . . . 1 match
중간수 와 같은수인 middleNum를 출력한다.
- 중위수구하기/허아영 . . . . 1 match
중간수 *b를 출력한다.
- 즐거운공부 . . . . 1 match
["상협"]이도 지금 방학때 하는 것들이 즐겁다. 자기가 하고싶은것, 자기가 만들고 싶은것을 만들기 위해서 어느 일정한 학습의 정신적 고됨이 있지만, 그후에 이것을 통해서 만들고 싶은것을 실제로 만든다는 것이 신기하고 즐겁다. 이렇게해서 눈으로 확인하는것, 그리고 이것이 다른 사람도 즐겁게 해줄수 있다는것, 이모든것이 나를 즐겁게 한다는것이 좋다.
- 즐겨찾기 . . . . 1 match
간단한 규칙 - Daily <= n개, Weekly <= 7*n, Monthly <= 30*n개를 유지한다. 그러면 하루에 3*n 군데만 돌아보면 된다. 끝없는 웹서핑을 막아보자!
- 지금그때2003/ToDo . . . . 1 match
* 일요일 까지 선전문을 작성하고 올려야 한다. [지금그때2003/선전문] (V)
- 지금그때2003/계획 . . . . 1 match
지연시간이 없도록 하려면 어떻게 해야할지 연구해 봐라. 예를 들면 참석자들에게 6시50분까지 착석이 되어야 한다고 선전을 할 수 있겠다. 그리고 패널(2,3,4,졸,외부인사) 소개 시간이 필요하다. --JuNe
- 지금그때2003/토론20030310 . . . . 1 match
날짜 : 21일. 단, 학생회에 미리 연락, 집부나 교양학교 관련 행사들과 시간조정이 가능하도록 한다.
- 지금그때2004/토론20040324 . . . . 1 match
* 사회자 역할을 알려준다든지, 진행 리허설을 한다든지 하는 것은 어떻게할까?
- 지금그때2004/패널토의질문지 . . . . 1 match
* 대학에서 시간을 투자한다는 것은 얼마나 중요할까요?
- 지금그때2005 . . . . 1 match
위키설명회에 이어 총엠티 자봉단 회의와 시일이 겹칩니다. 미리 22일에 한다고 했으니 자봉단이 그 날짜를 피해줬으면 좋겠다고 생각한 건 제 욕심이었나 봅니다. 오고 싶지만 못오는 사람이 있을지도 모른다는 생각에 안타까움을 감출 수가 없습니다. --[강희경]
- 지금그때2005/리허설 . . . . 1 match
앞에는 저희가 생각한 이번시간에는 최소한 이런 이야기는 꼭 나왔으면 한다는 이야기들을 적어 놓았습니다. 그 이외에 또 질문하고 싶으신 내용이 있으시다면 언제든 나오셔서 질문을 등록하실수 있습니다. 대답에 집중하는 사이에 어느순간 질문을 까먹어 버리는 경우도 많으니까요.
- 지금그때2005/자료집 . . . . 1 match
* 질문 등록 - 메뉴판에 없는 질문이 하고 싶은 경우 포스트 잇에 적어주세요. 질문이 적힌 포스트 잇은 웨이터가 수거해 드립니다. 새로운 질문이 등록된 경우 주사위를 굴리기 전 웨이터가 모두에게 질문을 알려주고, 원하는 사람은 질문을 자기의 메뉴판에 추가하세요.
- 지금그때2005/진행내용 . . . . 1 match
* 회화책 사서 발음 듣고 따라한다.
- 지금그때2006/후기 . . . . 1 match
최대한 사회자는 사람들의 생각을 수용하고 반영해야 한다는 생각으로 했지만 중간중간 미흡한 점이 있었습니다.
- 지속적인에너지패턴 . . . . 1 match
...이 패턴은 이 스터디 그룹을 삶에 가져오게 하고, 그것을 지속시키기 위해 무엇이 필요한지를 알게 한다.
- 진법바꾸기 . . . . 1 match
* 2~24진수 이내로 바꿀 수 있게한다.
- 짜장면 . . . . 1 match
* 이 소설은.. 지금 현재 어른이 된 저자가, 과거를 회상하는 내용으로 나와 있다. 하지만 실제 필자는 정말 바르게 자라왔다고 한다.
- 찜질방원정대 . . . . 1 match
행사에 자주 참가하여 얼굴을 많이 노출한다.
- 창섭/삽질 . . . . 1 match
* 이제 절대로 하지 않을 것 같은 삽질, 내가 생각하게에 제일 어이없는 삽질 순위 3까지만 보관한다. 나머진 큐처럼 지우기.
- 창섭/통기타 . . . . 1 match
* 어쿠스틱 기타와는 다른 말이다. 어쿠스틱 기타라 하면 生소리를 내는 기타이다. 나일론기타(혹은 클래식기타)도 포함한다.
- 책분류Template . . . . 1 match
[노스모크]에서는 ISBN 링크가 되는 책소개의 경우 링크를 상단에, 서평을 하단에 적는것을 원칙으로 한다.
- 최대공약수 . . . . 1 match
단, a, b가 자연수일 때 a > b, 다항식일 때는 a의 차수가 b의 차수 이상이어야 한다. ≒서로나눗셈법;연제법;유클리드의 호제법.
- 최대공약수/김태훈zyint . . . . 1 match
// GCD를 출력한다.
- 최대공약수/남도연 . . . . 1 match
지금이야 상관없지만 다른 소스에서도 콘솔화면 입출력을 사용하고, 저런식으로 입출력해야 한다는 보장이 없자넝.ㅎ
- 축적과변화 . . . . 1 match
내가 존경하는 스승님께선 어떤 사람이 얼마나 위대하냐는 것은 그 사람의 생애에 계단이 얼마나 많았느냐로 대변될 수도 있다고 말씀하셨다. 여기서 계단이라는 것은 극적인 "변화"를 말한다. 껍질을 깨고 나오는 순간이고, 삶의 변곡점이며 특이점인 것이다.
- 캠이랑놀자/051228 . . . . 1 match
hand-out으로 한다는 게 무슨 말인지? 뭔가 사람들에게 인쇄물을 나눠주고 그걸 따라가게 해보는 건가? --JuNe
- 캠이랑놀자/051229 . . . . 1 match
* 유의점 : R,G,B 세가지 값에 대해서 모두 올려주어야 한다는 점
- 컴퓨터를전공하면서꼭알아야할세가지 . . . . 1 match
제 소견으로는 컴퓨터를 전공한다면 아마도 다음 세가지는 기본적으로 갖춰야 하지 않을까 합니다.
- 코드레이스/2007.3.24 . . . . 1 match
신호등을 구현한다. 신호등은 빨간색에서 시작해서 파란색으로 바뀌는 것을 반복하는 보행자용 신호등이다.
- 코드레이스출동 . . . . 1 match
다음주 월요일에도 '팀1'은 연습을 하려 합니다. 중요 멤버 상규가 수요일이 안되서 월요일 1번 더한다는... 결과적으로는 좋지요. ^^ 여튼 시간 되시는 팀은 위에 공지를 참고 하여 오세요. 이때는 다음주 수요일 보다 간단하게 해서 2~3시간 정도 연습할 예정입니다. 우리 모두 열심히 훈련!! 빰빠빠라빠~ (효과음) --재동
- 코드레이스출동/후기 . . . . 1 match
* 첫 요구조건이 나왔을때 페어로 진행하지 못했다. 초반이라 하나의 견고한 설계가 나와야 한다고 생각해서 였다. 하지만 빨리빨리 하자는 생각에 간단한 설계를 하여 나중에 힘들었다. 특히 파싱 처리를 쉽게 해주는 코드를 작성했더라면.. 고생하지 않았을 것이다.
- 큐/aekae . . . . 1 match
"원하는 번호 선택 : ";
- 큐와 스택/문원명 . . . . 1 match
_Str.append(1, _Traits::to_char_type(_Meta)); // 문자를 하나씩 더한다. 이때, string 객체가
- 타도코코아CppStudy/0731 . . . . 1 match
* 윈도우에 그림을 그려주기 위해서는 DC라는게 필요하다. MFC에서는 DC를 랩핑하고 있는 가장 기본적인 클래스로 CDC를 지원한다. CDC는 그림 그리는 사람의 손이라고 생각하면 된다. 그림을 그려주기 위해 어떤 색깔의 펜이나 붓을 고를수 있을 것이다. 또한 사각형, 원도 그릴수 있다. 이러한 행위들을 CDC의 멤버함수로 정의해놨다. 우리는 그걸 갖다 쓰기만 하면 된다. 세부적인 것은 나중에 알아도 된다.
- 타도코코아CppStudy/0804 . . . . 1 match
* 충분히 쉬운 것도 있다고 생각한다. 내가 보기엔 하려는 노력도 안한거 같다. 그게 아니라면 하다 만거라도 가지고 와바라.--[인수]
- 타도코코아CppStudy/0811 . . . . 1 match
|| ZeroWiki:RandomWalk || 정우||Upload:class_random.cpp . || 왜 Worker가 Workspace를 상속받지? 사람이 일터의 한 종류야?--; 또 에러뜨네 cannot access private member. 이건 다른 클래스의 변수를 접근하려고 해서 생기는 에러임. 자꾸 다른 클래스의 변수를 쓰려 한다는건 그 변수가 이상한 위치에 있다는 말도 됨 ||
- 토이 . . . . 1 match
||[만년달력] ||원하는 년도와 달을 쓰면 그 달의 달력이 나오는 프로그램 || O || O || X || X ||
- 토이/숫자뒤집기/임영동 . . . . 1 match
}//10으로 나눠서 한자리 한자리 이동한다. 0보다 클 때만 계속 실행
- 통계청 . . . . 1 match
검색 엔진에서 통계청의 내부에 링크를 걸지 못하기 때문에 통계청을 알아두어야 한다.
- 특정 웹사이트 메타 검색 . . . . 1 match
타겟 사이트를 검색하길 원하는 경우
- 파스칼삼각형/강희경 . . . . 1 match
printArray(array, i); //행의 내용을 출력한다.
- 파스칼삼각형/김준석 . . . . 1 match
원하는 행,열에 따라 파스칼의 삼각형 크기를 조절해서
- 파스칼삼각형/변형진 . . . . 1 match
n+1행의 n+1열의 값은 조합 nCr의 값을 가지고, n!/r!(n-r)!로 계산한다.
- 파스칼삼각형/허아영 . . . . 1 match
ver.3 파스칼삼각형 코딩한다니까. 보창오빠가 흘려가는 말로 "재귀함수로 짜면 되지 않냐" 고 했던 말이 생각나서
- 포지셔닝 . . . . 1 match
* 이책도 신선한 충격을 던져준 책이다. 마케팅의 중요성을 다시한번 일깨줘 주었다. 그리고 수많은 실패 사례에도 불구 하고 많은 기업들이 시도하고 있는 '라인 확장의 오류'도 나에게 좋은 교훈이 되었다. '핵심에 집중하라'라는 경영학 책에도 나와있던 내용인데, 이게 마케팅에서도 적용되는 내용이란것을 알고 놀랬다. 이 책에서 중요하게 생각한 것은 제품이 소비자의 마인드에 어떤 포지션을 차지하고 있는가 이다. 효과적인 포지셔닝은 그 분야의 최초의 제품이라는(비록 최초가 아니더라도) 포지션을 소비자의 마인드에 심어 주는것과, 업계 리더라는 포지션을 심어주는것, 소비자의 마인드 속에서 아직 아무도 차지하지 않은 '틈새'를 찾아 내는것 등이 있다. 내가 생각해보아도 모든 분야를 다 다루는 기업보다는, 어떤 특정 분야에 집중해서 다루는 기업이 그 분야에 대해서 전문적으로 보이고, 더 우수한듯한 느낌이 든다.(우리 나라의 대기업들이 한때 문어발식 확장을 했지만, 내가 보기에는 정경 유착과, 이윤 창출보다는 대마 불사라는 무조건 몸집 키우기의 일환이었다고 본다. 결국에는 그 기업들도 각자 핵심 분야에 집중 하는건 아닌가 싶다). 이는 [설득의심리학]에 나오는 일관성의 법칙과도 어느정도 상관 관계가 있는듯 싶다. 중요한것은 제대로된 포지션을 소비자의 마인드에 확실히 심고 나서는 그것을 기반으로 일관성 있게 마케팅 해나가야 한다는것이다. 말보르가 다른 담배들이 여성 소비자를 하나라도 더 잡으려는 마케팅을 할때 카이보이가 나오는 광고를 하여서 카우보이(남자) 담배라는 포지션을 소비자의 마인드에 확실히 심어줌으로 해서 오늘날 가장 많이 팔리는 담배가 되었다. (역설적으로 여성에게도 많이 팔리는 담배가 되었다)
- 프로그래밍은습관이다 . . . . 1 match
* 공감 가네요. 저는 고등학교에서 대학입시를 준비하느라 한 2년 이상정도 쉬고나서 저런 느낌을 받았었습니다. 처음에는 죄다 까먹었을줄 알았는데 막상 키보드에 손가락을 올려놓고 나면 무언가 떠오르면서 자연스럽게 키보드가 나가더군요. // 저는 [손가락이기억한다] 라는 말로 군대가는 친구들 군대를 준비하는 친구들에게 이야기 하곤 합니다. - [톱아보다]
- 프로그래밍잔치/ErrorMessage . . . . 1 match
* 인수군 역시 자바 오랜만에 써본다. 이클립스 써본지 이틀 되었다. 계속 삑사리 낸다. 프레임 안나오고, 어쨌든 겨우겨우 생각해내고 도큐먼트 찾아가면서 메인프레임과 계산기 대충 완성(되도록 많은것을 구현하기 위해 예외처리, 복잡한 연산은 하지 않고, 그냥 4칙연산(소숫점무시--;)과, 클리어 정도만 구현). 도중에 상민이형이 편한 셋팅을 해줘서 그나마 편하게 코딩, 하다가 게임 없앰--;, 상욱이가 한다고 달력 부활
- 프로그래밍잔치/첫째날 . . . . 1 match
* ZeroWiki를 사용할때 지켜야할 제 1 원칙을 제시 한다.
- 피아노연주자 . . . . 1 match
* 푸리에변환을 이해한다.
- 하얀가면의제국 . . . . 1 match
대한민국은 지리적으로도 여러 나라 사이에 있다. 그렇다고 다른 나라에 맞설 힘이 대단한 것도 아니다. 따라서 외세에 기대거나, 극명히 외세에 저항하기 쉽다. 이는 개인에게도 해당한다. 동경하거나 저항하거나. 그리고 동경하는 무리가 더 많다.
- 학술터위키와제로페이지위키링크문제 . . . . 1 match
A : 그러니깐 프론트 페이지를 만드는것과, 거기에 필요한 아이템들을 제공하는 것이죠. 공동 강의록같은 경우 정통부에서 초기에는 주도적으로 적어 나갈 것이고, 족보 같은것도 수집하여 올려 활성화를 위해서 힘쓸것입니다. 그리고 나머지 부분에서 제로페이지에서 완료된 페이지를 링크걸고자 한다는 이야기 입니다.
- 한자공/시즌1 . . . . 1 match
* 각자 책을 읽어 오는 것이 아니라, 주어진 테마에 맞게 코드를 짜 옵니다. 원한다면 같이 공부 할 부분을 예습해 와도 괜찮습니다.
- 허아영/Cpp연습 . . . . 1 match
절차적 프로그래밍 기법을 통해 소프트웨어를 개발하다보면 개발시간도 너무 많이 소요되고 동일한 작업들이 중복된다는 문제점이 야기된다. 이러한 문제점을 해결하기 위해서 소프트웨어도 공장의 부품처럼 독립성을 갖는 객체들로 구성해 놓고 그들을 조립하여 완성한다는 개념이 객체지향 적인 프로그래밍 기법의 근간이다.
- 허아영/MBTI . . . . 1 match
: 진실과 사실에 주로 관심을 갖고 논리적이고 분석적이며 객관적으로 사실을 판단한다.
- 현재 위키에 어떤 습관이 생기고 있는걸까? . . . . 1 match
* 이름의 하위 분류로 / 를 사용한다. 예) [삼총사CppStudy]하위에 속한 [삼총사CppStudy/숙제1] 페이지
- 호너의법칙 . . . . 1 match
로 변환하는 것을 호너(Horner)의 법칙이라 한다.
Found 1712 matching pages out of 7555 total pages (5000 pages are searched)
You can also click here to search title.