Full text search for "함수"
- C++/컴파일러의 변수에 대한 최적화 . . . . 35 matches
1. 절대로 호출되지 않는 함수
이 코드에서 `square` 함수는 `main` 함수에서 호출되지 않습니다. 따라서 컴파일러는 데드 코드 제거를 통해 `square` 함수를 최종 실행 파일에서 제거할 수 있습니다.
또한, 코드 내에서 사용되지 않는 변수 할당도 데드 코드로 간주되어 제거될 수 있습니다. 위의 예시에서 변수 `result`는 `main` 함수의 반환 값에 영향을 주지 않으므로, 해당 변수에 대한 할당 또한 제거할 수 있습니다.
위 코드에서 `do_something()` 함수는 `global_var`가 10이 아닌 경우에만 호출되어야 합니다. 그러나 과도한 최적화로 인해 컴파일러가 `if (global_var != 10)` 조건문을 제거하고 `do_something()` 함수를 항상 호출하는 코드로 변경할 수 있습니다.
1. '''함수 인라인''': 함수 호출에 따른 오버헤드를 줄이기 위해, 작은 함수의 본문을 호출 위치에 직접 삽입하는 기법입니다. 이로 인해 함수 호출 및 반환에 따른 비용이 절감되고, 다른 최적화 기법과 함께 사용되어 성능이 향상될 수 있습니다.
6. '''테일 콜 최적화 (tail call optimization)''': 함수의 마지막에 다른 함수를 호출하는 경우(테일 콜), 현재 함수의 호출 스택 프레임을 재활용하여 새로운 함수 호출에 사용하는 기법입니다. 이를 통해 스택 오버플로우를 방지하고, 재귀 호출을 반복문으로 변경하여 성능을 향상시킬 수 있습니다.
3. '''분기 최적화 힌트''': 개발자는 분기의 예측 가능성에 대한 힌트를 제공할 수 있습니다. 이러한 힌트를 사용하여 컴파일러는 코드를 최적화할 수 있습니다. 예를 들어, C++에서는 `__builtin_expect` 함수를 사용하여 분기 예측 힌트를 제공할 수 있습니다.
인라인 확장(Inline Expansion) 또는 인라이닝(Inlining)은 컴파일러 최적화 기법 중 하나로, 함수 호출을 함수 본문의 코드로 대체하여 프로그램의 실행 속도를 향상시키는 과정입니다. 이 최적화 기법의 목표는 함수 호출의 오버헤드를 줄이고 코드의 실행 속도를 높이는 것입니다.
1. 컴파일러는 인라인 확장이 적용될 후보 함수를 결정합니다. 일반적으로 작은 함수나 자주 호출되는 함수가 인라인 확장의 대상이 됩니다.
2. 컴파일러는 함수 호출을 발견하면 해당 호출을 함수 본문의 코드로 대체합니다. 이로 인해 함수 호출의 오버헤드가 사라지고 실행 속도가 향상됩니다.
최적화된 코드에서는 `add` 함수 호출이 없고, 대신 함수 본문의 코드인 `3 + 4`가 직접 사용되고 있습니다. 이로 인해 프로그램의 실행 속도가 향상됩니다.
인라인 확장의 장점은 함수 호출 오버헤드 감소와 실행 속도 향상뿐만 아니라, 다른 최적화 기법과 함께 사용되었을 때 코드의 전체 성능을 개선하는 데 기여할 수 있다는 것입니다. 그러나 인라인 확장의 단점은 코드 크기가 증가할 수 있다는 것입니다. 함수 호출이 함수 본문의 코드로 대체되기 때문에, 많은 인라인 확장이 적용되면 프로그램의 크기가 커질 수 있습니다. 이로 인해 캐시 지역성이 감소하거나 메모리 사용량이 증가할 수 있습니다.
{{{#!chatgpt 개발자가 인트린식 함수를 사용해서 명시적으로 프리패치를 하는건 조금 지나친거 아닙니까? 현대 CPU들은 필요하다면 스스로 프리패치 할 텐데요?
하지만 명시적으로 프리패치를 사용하는 것이 어떤 경우에는 유용할 수도 있습니다. 개발자가 프로그램의 접근 패턴을 더 정확하게 알고 있을 때, 인트린식 함수를 사용하여 프리패치를 수행함으로써 성능 향상을 꾀할 수 있습니다. 이를 통해, 프로그램의 성능에 미치는 영향을 더욱 세밀하게 제어할 수 있습니다.
그러나 말씀하신대로, 일반적인 경우에는 하드웨어 기반의 프리패치가 충분히 성능 향상에 기여하며, 명시적인 프리패치를 사용하는 것은 지나칠 수도 있습니다. 또한, 명시적인 프리패치를 잘못 사용하면 캐시 스레싱 등의 문제가 발생하여 성능이 오히려 저하될 수도 있습니다. 따라서 인트린식 함수를 사용하여 명시적으로 프리패치를 수행하기 전에, 프로그램의 성능을 철저하게 분석하고 이러한 최적화가 정말 필요한지 판단해야 합니다.
1. 프로그램에서 사용되는 모든 심볼(함수, 변수, 클래스 등)을 추적합니다. 이를 위해 컴파일러 또는 번들러는 프로그램의 시작점(보통 `main` 함수 또는 엔트리 포인트)에서 시작하여 모든 의존성을 따라가며 사용되는 심볼을 식별합니다.
- MoniWikiFaq . . . . 13 matches
이 함수를
= System함수(?)의 문제 =
'''A''': 네, php 설정파일에서 system() 함수를 사용하지 못하도록 막아둔 것 같습니다. phpinfo() 함수를 실행시켜보면 어떤 함수를 막아두었는지 확인할 수 있습니다. system() 함수를 사용하고자 한다면, 이 부분에 대해 서버 관리자에게 문의를 해야할 것입니다.
'''A''': 지난번 제로보드 관련 보안 권고로 system() 함수를 막아놓은 호스팅업체들이 많더군요. 비슷한 기능을 할 수 있는 popen()으로도 대신할 수 있어요. wiki.php 여시고, system 으로 찾기하셔서 @popen 으로 바꿔주세요. 전 그렇게 편법(?)을 써서 지금 잘 사용하고 있습니다. - vividian
{{{wikilib.php}}} 파일의 적절한 위치에 다음 함수를 추가합니다.
그리고는 {{{macro_TitleIndex()}}} 함수 내에서 정렬에 새로 만든 함수를 사용하도록 합니다.
WordIndex 페이지에서도 동일한 동작 방식을 원하시면 {{{plugin/WordIndex.php}}} 파일의 {{{macro_WordIndex()}}} 함수를 유사한 방식으로 수정해 주시면 됩니다.
처럼 유저 id부분을 '''_urlencode''' 함수와 같이 변환과정을 한번 거처 파일시스템에서 사용할 수 있는 이름으로 변경한다.
1. wikilib.php 파일의 get_scriptname() 함수를 다음과 같이 바꿔서 "wiki.php"가 빠져있는 URL을 표시/사용 하도록 합니다.
- C++/MFC 메시지 맵에 대해 . . . . 12 matches
MFC의 WinMain 함수가 시작되면 CWinApp와 CWinThread의 인스턴스를 하나씩 만든다. 그리고, CWinApp의 Run 메서드가 메시지 루프를 돌면서 CWnd* m_pMainWnd 멤버에 메시지를 보낸다. m_pMainWnd 은 CMainFrame : public CFrameWnd 이다. 그렇게 되면 메시지는 Chain of Responsibility 패턴으로 MainFrame -> MDI Child Frame -> (Pre) View -> Document -> Document Template 순서로 메시지가 전달된다.
실질적인 메시지 맵을 표현하는 구조체로 부모 클래스의 메시지 맵을 구하는 함수 포인터와 현재 클래스의 메시지 맵 엔트리 리스트 가지고 있다.
메시지 맵에서 윈도우 메시지와 메시지를 처리하는 함수를 실질적으로 맵핑하는 구조체이다.
이제 실행 시 GetRuntimeClass()라는 함수를 통해 객체의 정보를 얻을 수 있는 기능을 가지게 된다.
MFC 메시지 맵이 이런 구조로 만들어진 이유가 있다. 상속 관계에 있는 클래스는 자식 클래스의 메시지부터 거슬러 올라가기 때문에 메시지 핸들러가 가상 함수에 오버라이딩 되어야 할 것 같이 느껴진다. 그런데 MFC 클래스는 메시지 핸들러 함수가 가상 함수로 정의되어 있지 않다. 동적 바인딩을 하기 위해선 클래스에 4바이트(32비트 윈도우의 경우) 메모리 주소를 저장할 공간이 더 필요하다(동적 바인딩 참조). 그런데 만약 모든 메시지 핸들러 함수가 가상 함수로 되어 있다면 메시지 핸들러가 대략 200여개 있으니 윈도우 클래스마다 대략 800바이트 이상이 더 필요하게 된다. 프로그램이 하나 실행되면 뷰, 툴바, 각종 컨트롤 등 기본적으로 수 개~수십 개의 윈도우가 생기는데 당연히 이건 대단한 자원 낭비다.
메시지 맵은 매크로를 이용해 message map entry macro에 등록한 함수만 가상 함수처럼 동적 바인딩을 해준다. AFX의 파생 클래스마다 모두 이런 골격을 만들어 뒀기에 가능하다. 개발자는 사용할 윈도우 메시지 엔트리를 등록하고 처리할 함수를 만들면 모든 일이 끝난다.
- C++/extern "C" 를 쓰는 이유 . . . . 12 matches
코드에서 선언한 함수나 변수의 이름을 컴파일러가 컴파일 단계에서 일정한 규칙을 가지고 변형하는 것. 맹글링을 영어 사전에서 찾아보면 "난도질 하다", "형태를 알 수 없게 짓이기다"라고 되어 있는데 C++는 컴파일러 단계에서 컴파일러가 함수나 변수 이름을 크게 바꾼다. C는 컴파일러의 이 작업을 이름 장식(Name Decoration)이라고 표현하는데 이름 앞, 뒤에 간단한 규칙을 가진 문자를 붙이는 정도로 맹글링 수준은 아니다.
C에서는 링커가 함수를 이름으로만 구분하고, C++에서는 매개변수까지 사용해서(시그니처) 구분한다. 즉, 똑같은 이름의 함수라도 매개변수에 따라 링커는 달리 구분한다. 같은 이름의 함수가 여럿 존재할 때 어떤 함수를 호출하는지 구분해서 링크하기 위해 이름 외에 매개변수까지 사용해서 컴파일러는 이름을 변형(맹글링)한다.
이와 같은 C++에서는 추가된 기능인 함수 오버로딩의 지원과 함께, 클래스 상속의 경우로 확대하게 되면 이름과 매개변수까지 똑같은 함수가 클래스 안에 여러개 존재하게 된다. 이는 다형성 지원을 위해 객체지향 언어에서는 엄청나게 중요한 기능이고 컴파일러는 함수가 속한 클래스까지 반영해서 함수 이름을 만들어야 한다. 이를 지원하기 위해서 네임 맹글링 작업이 존재할 수 밖에 없다.
extern은 링크 규칙(linkage)을 정하기 위한 키워드이다. 함수와 변수는 static, const 등에 의해 모듈(.cpp 파일) 안에서만 참조할 수 있는 internal linkage 를 갖는 경우를 제외하고 기본적으로 external linkage 를 갖게 되어서 다른 모듈에서 링크할 수 있게 된다.
외부 모듈의 함수나 변수를 링크 하려면 extern 키워드를 사용해 링크하려는 대상을 찾을 수 있도록 해준다. C++에서 그냥 extern 만 사용하면 extern "C++" 과 같은 뜻이다. 그리고 extern "C" 를 적용하면 이 이름을 찾아 링크하려는 녀석이 C라는 의미다. 따라서 C 이름 장식을 사용하게 된다. gcc는 gcj를 통해 자바와 링크할 수 있어 extern "Java"도 가능하다. gcj로 컴파일된 자바 모듈을 찾아서 링크할 수 있도록 하라는 의미다. 기술적/실용적 이유에서 사실상 대부분 컴파일러가 extern "C++"과 extern "C"만 지원하지만, extern "X"의 "X" 자리에 어떤 언어든, 또는 어떤 링크 규칙이든 들어올 수 있다.
- Hash collision 회피 전략 . . . . 12 matches
해시 충돌은 해시 함수가 서로 다른 입력에 대해 동일한 해시 값을 생성할 때 발생한다. 이는 해시 테이블에서 키 충돌로 이어지며, 데이터의 무결성과 검색 성능을 저하시킬 수 있다.
완벽 해시는 충돌이 전혀 없는 해시 함수를 사용하는 방식이다. 이를 위해서는 입력 데이터의 특성에 맞는 해시 함수를 찾아야 한다. 예를 들어, 정적인 데이터 집합에 대해 미리 계산된 해시 함수를 사용할 수 있다.
유니버설 해싱은 해시 함수를 무작위로 선택하는 방식이다. 여러 개의 해시 함수를 미리 만들어 놓고, 입력 데이터에 따라 무작위로 선택한다. 이를 통해 충돌을 최소화할 수 있다.
Cuckoo Hashing은 두 개의 해시 함수와 두 개의 해시 테이블을 사용하는 방식이다. 충돌이 발생하면 다른 해시 테이블에 값을 저장한다. 이를 반복하다가 한 테이블이 꽉 차면 다른 해시 함수를 사용하여 다른 값을 저장한다.
데이터의 특성에 따라 해시 함수와 충돌 회피 방법을 선택해야 한다. 예를 들어, 입력 데이터가 균등하게 분포하지 않은 경우 유니버설 해싱이나 완벽 해시를 사용할 수 있다. 반면 입력 데이터가 균등하게 분포하는 경우 개방 주소법이나 체이닝을 사용하는 것이 좋다.
5. 해시 함수의 성능
해시 함수의 성능에 따라 검색 성능이 크게 달라질 수 있다. 따라서 해시 함수를 공들여 설계하고, 충돌이 최소화되도록 만들어야 한다.
- C++/SAL 표준 표식 언어 . . . . 11 matches
</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><span style="font-family: Arial; ">즉 wcscpy 함수는 안전하지 않으니 wcscpy_s 를 대신 사용할 것을 권장하고 있다.</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><span style="font-family: Arial; ">만약 이 경고문구를 더이상 보기 싫다면 #define _CRT_SECURE_NO_WARNINGS 을 프리컴파일러헤더 "stadafx.h" 에 정의하면 된다. 란것이다.</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; ">
</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><span class="Apple-style-span" style="font-family: Arial; ">위에서 wcscpy' 함수는 바로 이런 버퍼오버런을 취약점이 발생하기 쉽다는 뜻이다.</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">대신 wcscpy_s 을 사용하라고 하였는데 두함수의 원형을 보면 다음과 같다.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">
</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">wcscpy 는 strDestination 버퍼사이즈보다 strSource가 훨씬크다면 버퍼오버런이 일어 난다.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">그래서 MS는 예전 이런 문자열관련 C/C++함수들을 모두 금지하였다. 따라서 앞으로 예전 문자열 관련 함수보다 뒤에 _s가 붙은 함수를 사용하는것이 보안상 더 좋은 코드를 쓰게 된다.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">
</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">하지만 이런경우가 있다. wcscpy_s 에서 실제 strDestination 버퍼사이즈보다 numberofElements의 크기가 더 크다면 strDestination이 넘치는 일이 발생할 수 있다. 분명 버퍼 오버런 취약점이 존재하게 되는것이다.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">caller가 신경쓰지 않으면 역시 _s 가 붙은 함수도 안전하지 않다는 것이다.</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" face="Arial">
</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">분명 위와 아래의 차이점을 알 수 있을 것이다. 함수 원형에 __out_ecount(cchBuf)를 붙여줌으로써 컴파일</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">시점으로 보안 취약점 에러를 방지할 수 있는 것이다.</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">
</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">VC 2005에 포함되어 있는 C 런타임 함수와 윈도우 비스타 소프트웨어 개발 킷에 포함된 윈도우 함수의 대다수에 이 </span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">SAL을 달았다. 앞으로 여러분도 함수를 구현 할 때 SAL을 달 수 있도록 해야 한다.</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.6; "><font class="Apple-style-span" color="#666666" face="굴림"><span class="Apple-style-span" style="line-height: 15px; white-space: pre; ">
- Windows Via C/C++ . . . . 11 matches
* 문자열 간의 비교나 정렬은 매우 일반적인 작업들인데, 윈도우에서 이를 위한 최상Best의 함수는 CompareString(Ex)나 CompareStringOrdinal이다.
* 윈도우의 GetThreadLocale 함수를 이용하면 함수를 호출한 스레드의 LCID 값을 알 수 있다. * ["C++/국가 설정 구하기(로캘)"]
* 커널 오브젝트 생성이 실패하면 보통 0(NULL)을 반환한다. 그러나 시스템의 가용 메모리가 매우 작거나 보안상의 이유로 함수가 실패하는 경우 '''몇몇 함수는''' -1(INVALID_HANDLE_VALUE)를 반환하는 함수가 있다. 따라서 반환 값 실패를 비교할 때 상당한 주의가 필요하다.
1. 스레드의 진입점 함수가 반환된다.
2. 프로세스 내의 어떤 스레드가 ExitProcess 함수를 호출한다.
3. 다른 프로세스의 스레드가 TerminateProcess 함수를 호출한다.
* 항상 단일 스레드에 의해서만 접근되는 데이터를 구성하거나(함수의 매개변수와 지역변수를 사용하는 것이 이러한 방식을 따를 수 있는 가장 쉬운 방법이다.), 단일 CPU에 의해서만 접근되는 데이터를 구성하는 것(스레드 선호도를 사용하여)이 성능을 위해서는 가장 좋은 방법이다. 이 두 가지를 동시에 할 수 있다면 캐시 라인과 관련된 문제를 완전히 피할 수 있다.
* ["C++/내장함수 intrinsic function"]
- omr1/403 . . . . 10 matches
{{{+2 MYM 푸시푸시 ─클래스 및 멤버 함수, 주요 변수 설명 }}}
= 함수 =
스테이지를 불러오는 함수.
모든 스테이지를 클리어 할 때까지 새 스테이지를 불러오는 함수.
스테이지 클리어 조건이 완료 되었는지 판정하는 함수.
메뉴를 보여주는 함수.
도움말을 보여주는 함수.
배경을 그리는 함수.
게임 화면을 그리는 함수. 인자료 FALSE 를 받으면 게임 화면을 깨끗히 지운다.
스코어 테이블을 그리는 함수.
- C++/콜링 컨벤션 차이 . . . . 9 matches
함수 내부에서 스택을 정리한다. 함수 내부에서 인자를 바로 ret 하면서 정리하기 때문에 stdcall이 cdecl 보다 빠르고 바이너리 사이즈가 좀 더 작다. cdecl은 ret 후 인자를 정리하는 별도의 코드가 필요하다.
함수 독립성이 뛰어나므로 DLL을 만들 때는 반드시 stdcall로 선언해야 한다.
함수 이름 앞에 _가 붙으며 뒤에 @가 붙은 후 인수 목록의 바이트 수가 붙는다.
(유일하게 cdecl만) 함수를 호출한 쪽에서 스택을 정리한다. 인자를 정리하려면 인자가 몇 개인지 알아야 하는데 따라서 인자가 불분명한 가변인자는 cdecl에서만 지원한다.
C와 가변인자를 사용하는 C++ 함수의 기본 호출 규약. 함수 이름 앞에 _가 붙는다.
처음 두 개까지의 DWORD 인자는 스택을 사용하지 않고 ECX와 EDX 레지스터를 사용한다. 이름 장식은 함수 이름 앞에 @가 붙으며 나머지는 stdcall과 같다.
기본적으로 C++ 멤버 함수는 thiscall을 사용한다.
- C++/내장함수 intrinsic function . . . . 8 matches
내장함수 intrinsic function란 컴파일러에 의해서 특수하게 인식되는 함수다. 컴파일러는 이러한 함수를 만났을 때 함수를 호출하는 코드를 생성하지 않고, 해당 위치에 인라인으로 코드를 삽입한다. 예를 들어 컴파일 스위치로 /Oi를 지정하면 memcpy는 내장함수가 된다. 이 경우 컴파일러가 memcpy 함수 호출 문장을 만나게 되면 memcpy 함수를 호출하는 코드를 생성하지 않고, memcpy 함수의 내용을 직접 포함시킨다. 이렇게 하면 코드의 크기는 증가하겠지만, 수행 속도는 좀 더 빨라지게 된다.
- C++/소멸자에 virtual을 쓰는 이유 . . . . 7 matches
그런데 다형성을 이용하기 위해 부모 클래스의 포인터로 자식 클래스를 호출할 때, 가상 함수로 정의되어 있지 '''않은''' 자식 클래스의 오버라이딩된 함수를 호출하면 부모 클래스의 멤버 함수가 호출된다. 가상 함수 키워드 `virtual`이 사용되었다면 이것은 자식 클래스에서 재정의될 수 있음을 명시하기 때문에 포인터의 종류에 상관없이 항상 자식 클래스의 메서드가 호출된다. 소멸자도 자식 클래스에서 오버라이딩된 함수라고 볼 수 있기 때문에 만약 부모 클래스 포인터로 객체를 삭제하면 부모 클래스의 소멸자가 호출된다.
__따라서 소멸자를 가상 함수로 선언하지 않으면 부모 클래스의 포인터일 경우 자식 클래스의 소멸자는 결코 호출되지 않는다__.
따라서 클래스를 상속 받고 소멸자에서 리소스를 해제하는 경우 반드시 소멸자를 가상 함수로 선언해야 한다.
- C++/(Windows)파일 처리 . . . . 6 matches
아무래도,간단하게 직접 구현한 함수들 보다는 더 꼼꼼하게 만들어져 있다. (적어도 내가 만든 것들 보다는;;)</p><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 15px; font-family: 돋움, Dotum, AppleGothic, sans-serif; color: rgb(138, 138, 138); font-size: 12px;">A부터 Z까지 직접 만들어서 써야 만족하는 변태-_-가 아니라면 참고해보자.
굵게(Bold)처리한 함수들은 자주 쓰일법한 녀석들이다.</p><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 15px; font-family: 돋움, Dotum, AppleGothic, sans-serif; color: rgb(138, 138, 138); font-size: 12px;">사용하기 위해서는 shlwapi.h를 include하고 shlwapi.lib를 링크해야 한다.</p><p id="more4_0" class="moreless_top" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 18px; border: 0px; line-height: 15px; font-family: 돋움, Dotum, AppleGothic, sans-serif; text-decoration: underline; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconLess.gif); color: rgb(138, 138, 138); font-size: 12px; background-position: 0% 0%; background-repeat: no-repeat no-repeat;"><span style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3; cursor: pointer;"></span></p><div id="content4_0" class="moreless_content" style="margin: 10px 0px; padding: 0px; border: 0px; line-height: 15px; font-family: 돋움, Dotum, AppleGothic, sans-serif; color: rgb(138, 138, 138); font-size: 12px;"><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><strong style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">LPTSTR PathAddBackslash( LPTSTR <i style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">lpszPath </i>);</font></strong></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Adds a backslash to the end of a string to create the correct syntax for a path. If the source path already has a trailing backslash, no backslash will be added.</font>
적절한 함수로군-ㅅ-ㅋㅋ</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">int PathCommonPrefix( LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszFile1</em>, LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszFile2</em>, LPTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszPath</em> );</font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Compares two paths to determine if they share a common prefix. A prefix is one of these types: "C:\\", ".", "..", "..\\".</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">두 경로 pszFile1과 pszFile2에서 어디까지가 공통된 경로인지 조사하고, pszPath에 공통된 부분을 담아준다.
이 함수를 이용해서 경로에 사용할 수 있는 문자열인지를 검사할 수 있다.</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">int PathGetDriveNumber( LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">lpsz</em> );</font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"></font><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Searches a path for a drive letter within the range of 'A' to 'Z' and returns the corresponding drive number.</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">제시된 경로에 포함된 드라이브 문자(c:\) 의 식별 번호를 반환한다.</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">BOOL PathIsContentType( LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszPath</em>, LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszContentType</em> );</font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"></font><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Determines if a file's registered content type matches the specified content type. This function obtains the content type for the specified file type and compares that string with the pszContentType. The comparison is not case-sensitive.</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">제시된 파일경로가(확장자만 넘겨줘도 된다;) 등록된 contents type과 일치하는지 검사한다.
주의: 파일명으로 사용할 수 없는 문자(/, :, * 등)가 들어있는가? 를 검사하는 함수가 아니다!!</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">BOOL PathIsHTMLFile( LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszFile</em> );</font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"></font><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Determines if a file is an HTML file. The determination is made based on the content type that is registered for the file's extension.</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">제시된 경로의 확장자가 HTML 유형인가를 검사한다.
주의: 대부분의 PathXXX 함수가 그렇듯, pszPath가 실존하는가는 관계없다!!!</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"><strong style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">BOOL PathIsURL( LPCTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">pszPath</em> );</strong></font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"></font><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Tests a given string to determine if it conforms to a valid URL format.</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">유효한 URL인지 확인한다.</p></blockquote><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#0000ff" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">BOOL PathMakePretty( LPTSTR <em style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">lpPath</em> );</font></p><blockquote dir="ltr" style="margin: 5px 0px 5px 5px; padding: 0px 0px 0px 16px; border: 0px; line-height: 1.3; font-family: 돋움, Dotum, AppleGothic, sans-serif; background-image: url(http://ts.daumcdn.net/custom/blog/29/294052/skin/images/iconBlockquote.gif); background-position: initial initial; background-repeat: no-repeat no-repeat;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;"></font><p style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;"><font color="#808080" style="margin: 0px; padding: 0px; border: 0px; line-height: 1.3;">Converts a path to all lowercase characters to give the path a consistent appearance.</font></p><p dir="ltr" style="margin-right: 0px; margin-left: 0px; padding-right: 0px; padding-left: 0px; border: 0px; line-height: 1.3;">경로를 소문자로 변환해준다. 이미 소문자로 이뤄져서 변환이 이뤄지지 않은 경우 FALSE가 반환된다.
- VS . . . . 6 matches
Shift+Alt+F12 : 빠른기호찾기 ( 이거 찾기보다 좋더군요. 함수나 define등 아무거나에서 사용)
Ctrl-M, Ctrl-L : 소스파일의 함수헤더만 보이기 (구현부는 감추고) (토글 키)
Ctrl-M, Ctrl-M : 현재 커서가 위치한 함수를 접는다/편다. (토글 키)
Ctrl-Shift-Spacebar : 함수이름편집중 툴팁으로나오는 함수와매개변수설명이 안나올경우, 강제로 나오게
Shift-F11 : 현 함수를 빠져나감.
- Blog/2009-08 . . . . 5 matches
while 루프 안에서 next_time = feval(char(protocol(pno)),now_time); 이 반복되면서 next_time 을 구한다. feval은 MATLAB에서 문자열로 함수를 호출하는 함수인데 protocol(pno)가 'paloha'일 때 paloha(now_time);과 완전히 동일하다. next_time은 가장 빠른 접속 단말의 다음 전송 시간이다. 즉, 그림3에서 프레임 1.1 전송 시작시간 –> 프레임 3.1 전송 시작시간 –> 프레임 2.1 전송 시작시간 … 이 될 것이다.
paloha.m 함수가 하는 일은 각 단말의 패킷 전송 시간과 각 단말의 현재 상태를 비교해 전송 상태(충돌 여부)를 결정하고, 충돌이 일어나면 정책(1-persistent 혹은 P-persistent)에 따라 다음 전송 시간을 정하고, 대기 상태면 전송을 시작하고(상태를 전송으로 바꾸고), 전송이 완료 되면 상태를 대기 상태로 바꾸고 다음 시간 전송 시간을 정한다. 즉 프로토콜의 기능을 구현하는 모든 부분이다. paloha.m 외 saloha.m, npcsma.m, carriersens.m 파일(함수)이 각각 Slotted ALOHA, non-persistent CSMA, Slotted np-ISMA 프로토콜을 정의한다.
find 함수는 행렬을 성분 대 성분(element-by-element)으로 비교해 조건에 만족하는 성분의 위치를 값으로 갖는 행렬로 반환한다.
- LocalKeywords . . . . 5 matches
C++ DC Bitmap 함수 MFC
Perl trim 공백제거 함수
C++ trim 공백제거 템플릿 함수
C++ Helper replace string 함수
C++ string 토크나이즈 함수
- omr1/501 . . . . 5 matches
전송 로그와 클라이언트의 일반 상태(General State) 로그를 보여준다. 이는 LDS 상에도 띄우는 것을 목표로 했었으나 구조적인 문제가 있었다. dicephone의 back-end를 이루는 linphone의 coreapi는 C로 구현되어 있고 수신시, 전송시, 인증 요청시 등 각 SIP 이벤트에 대한 호출 장소는 메인 핸들인 linphone 코어(LinphoneCore *)의 멤버 변수인 가상 함수 테이블 구조체에 의해 참조되는 콜백 함수로 정의되어 있는데, linphone coreapi를 C++로 변환하는 과정에서 메서드의 함수 포인터를 얻기 위해 클래스 안에서 정의되는 콜백 함수들은 정적 함수로 정의 하였으며 이 때문에 메인 위젯 클래스에 포함되는 Qt의 디자인 위젯 클래스 m_ui 멤버에 대한 접근이 불가능 하였다. 이는 언어의 차이에서 오는 구조적인 문제로 이를 해결하기 위해서는 구조를 상당부분 바꾸어야 하는 등 투자하는 비용대비 효과가 작기 때문에 프레임 버퍼상의 Qt 위젯이 아닌 콘솔 창에 로그를 출력하는 것으로 대신하였다.
- 학부/4학년 . . . . 5 matches
전송 로그와 클라이언트의 일반 상태(General State) 로그를 보여준다. 이는 LDS 상에도 띄우는 것을 목표로 했었으나 구조적인 문제가 있었다. dicephone의 back-end를 이루는 linphone의 coreapi는 C로 구현되어 있고 수신시, 전송시, 인증 요청시 등 각 SIP 이벤트에 대한 호출 장소는 메인 핸들인 linphone 코어(LinphoneCore *)의 멤버 변수인 가상 함수 테이블 구조체에 의해 참조되는 콜백 함수로 정의되어 있는데, linphone coreapi를 C++로 변환하는 과정에서 메서드의 함수 포인터를 얻기 위해 클래스 안에서 정의되는 콜백 함수들은 정적 함수로 정의 하였으며 이 때문에 메인 위젯 클래스에 포함되는 Qt의 디자인 위젯 클래스 m_ui 멤버에 대한 접근이 불가능 하였다. 이는 언어의 차이에서 오는 구조적인 문제로 이를 해결하기 위해서는 구조를 상당부분 바꾸어야 하는 등 투자하는 비용대비 효과가 작기 때문에 프레임 버퍼상의 Qt 위젯이 아닌 콘솔 창에 로그를 출력하는 것으로 대신하였다.
- Blog/2014-05 . . . . 4 matches
1) 모든 함수들의 호출 관계를 분석하면 몇 함수는 호출하는 곳이 없다는 것을 알고 해당 함수를 삭제한다.
3) 고정된 변수의 값이 변하지 않기 때문에 if 비교문은 전혀 호출하지 않는다. 결국 calcValue()는 항상 96을 리턴하게 될 것이다. 따라서 최종적으로 최적화가 완료된 메인 함수는 딱 한 줄 뿐인 return 96; 과 동일한 코드가 된다.
- gdb 사용법 . . . . 4 matches
(gdb) finish # 현재 함수를 수행하고 빠져 나감
(gdb) return # 현재 함수를 수행하지 않고 빠져 나감
(gdb) return 123 # 현재 함수를 수행하지 않고 빠져 나감, 단 리턴 값 123으로
(gdb) cl a.c:func # a.c 파일의 func함수의 브레이크 포인트 지움
- MPIR로 C++ 고정밀 연산을 해 보자 . . . . 3 matches
모든 C++ 클래스와 함수는 다음 헤더로 사용 가능하다.
그리고 다음 클래스에 모든 연산자와 함수가 오버로드되어 있다.
GMP의 C++ 클래스 오버로딩이 안 된 함수들(`gcd` 등)은 C++ 클래스를 GMP C 타입으로 바꿔야 하는데 그런 경우 각 클래스 안에 다음 메서드를 쓰면 된다. (`mpz_t`가 GMP C 타입)
- 윈도우 레지스트리 . . . . 3 matches
* C/C++: Windows API 함수를 사용하여 레지스트리 조작 가능 (e.g. RegOpenKeyEx(), RegSetValueEx(), RegQueryValueEx() 등)
* `golang.org/x/sys/windows/registry`: Go에서 Windows API를 직접 사용하여 레지스트리를 조작할 수 있도록 지원하는 패키지입니다. 이 패키지는 Windows 전용이며, C/C++의 Windows API 함수와 거의 동일한 함수를 제공합니다.
- C 구현 Random 함수 . . . . 2 matches
#title C 구현 Random 함수
보너스. exponential random variables과 geometric random variables 생성 함수.
- C++/(MFC)디렉토리 선택 다이얼로그 열기 . . . . 2 matches
// 콜백함수가 필요없다면 NULL이나 지움. 위의 static int 함수 필요 없어짐
- C++/MFC 헤더 정리 방법 . . . . 2 matches
1. MFC 클래스 멤버 함수 [[Code(virtual ...)]], 메시지 맵 함수 [[Code(afx_msg ...)]] 순으로 정리한다.
- C/C 구현 Random 함수 . . . . 2 matches
#keywords C, 랜덤, 함수
exponential random variables과 geometric random variables 생성 함수.
- PowerShell . . . . 2 matches
예를 들어, `Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete`와 같이 입력하면 Tab 키가 MenuComplete 함수와 매핑된다. 이렇게 매핑된 키를 누르면 MenuComplete 함수가 실행되어 자동 완성을 제공한다.
- irc logs . . . . 2 matches
[14:24:20] 18<hongminhee18> 그래서 flake8이 빌트인 함수/클래스 이름 겹치게 변수 이름 지으면
[16:51:10] 20<hyacinth>30 아니... php는 함수가 case insensitive 했군요(...)
- omr1/404/01 . . . . 2 matches
TODO : 구현 필요. 입력 형식이 올바른지 체크하는 함수
// 대량의 노드를 처리할 때 위 재귀함수에서 스택 오버플로우 발생. 7~800개 이하에서만 사용 가능
- string wstring 상호 변환 . . . . 2 matches
string(multi-byte string)과 wstring(wide-char string)을 상호 변환하는 방법을 알아보자. 보통 mbstowcs와 wcstombs 함수를 사용하거나 윈도우즈 환경에서는 MultiByteToWideChar와 WideCharToMuliByte 함수를 사용해서 구현하는데 여기서는 STL의 codecvt를 사용해서 구현했다. (codecvt는 문자를 인코딩하는데 사용된다. )
- 모니위키활용/AccessControl/읽기권한제어 . . . . 2 matches
모니위키에서는 / 을 이용해 주소를 계층화한다. 주소창에서 보면 디렉토리처럼 보이지만 / 은 단지 특수문자로 페이지 리스트 파일을 보면 상위 디렉토리 이름을 이름에 포함시킨 하나하나의 파일로 나타내짐을 알 수 있다. 해당 페이지의 하위 페이지까지 모두 권한 제어가 필요했을 때, 처음에는 페이지가 서버에서 실제로 디렉토리로 구분되어졌다고 생각해 디렉토리 내의 파일리스트를 읽어들이려는 생각을 했으나 모두 파일로 되어 있어 ereg 함수를 이용할 수 있었다.
2. /plugin/security/needtologin.php 에 다음 함수를 추가한다.
- Blog/2011-10 . . . . 1 match
텍스트 파일의 경우 그 내용이 ANSI 문자인지 유니코드 문자인지 판단할 수 있는 안정적이고 빠른 방법이 없다. 그렇기 때문에 어떤 문자를 담고 있는지 판별하는 것은 매우 어려운 일이다. IsTextUnicode()는 전달된 버퍼의 내용을 통해 확률적statistical이고 규정deterministic에 의거한 방법을 활용한다. 이는 당연히 비과학적인 방법이고 잘못된 결과를 반환할 수 있다. 윈도우 API로는 드문 알고리즘으로 동작하는 함수이기에 재미있다. 버퍼 크기가 충분히 주어지면 더 정확한 값을 기대할 수 있다.
- Blog/2014-09 . . . . 1 match
["C++/내장함수 intrinsic function"]
- C . . . . 1 match
["/C 구현 Random 함수"]
- C++ . . . . 1 match
["/내장함수 intrinsic function"]
- C++/(MFC)SaveBitmapToDirectFile CDC를 Bitmap으로 저장 . . . . 1 match
#keywords C++, DC, Bitmap, 함수, MFC
- C++/(MFC)ms단위 시간측정 . . . . 1 match
mill-second까지 계측할 때는 아래 함수들을 사용한다.
- C++/std:string 토크나이즈 . . . . 1 match
#keywords C++,string,토크나이즈,함수
- C++/공백제거 trim . . . . 1 match
#keywords C++,trim,공백제거,템플릿,함수
- C++/문자열 교체 헬퍼 std:string Replace . . . . 1 match
#keywords C++,Helper,replace,string,함수
- C++/이미지 대표색 찾기 . . . . 1 match
위 코드에서 `K`는 클러스터의 수를, `attempts`는 알고리즘 실행 횟수를 나타낸다. `kmeans` 함수를 사용하여 K-means clustering 알고리즘을 적용하고, `labels`와 `centers`는 각각 클러스터링 결과와 클러스터의 중심을 나타낸다. 클러스터링 결과를 이미지에 표시하고, 결과 이미지를 출력한다.
- C/C++ . . . . 1 match
a. ["C 구현 Random 함수"]
- Go/Go에서 string enum . . . . 1 match
위 코드에서는 const 키워드를 사용하여 Red, Green, Blue 세 개의 문자열 상수를 정의하였습니다. 이러한 문자열 상수는 각각 "RED", "GREEN", "BLUE" 값을 갖고 있습니다. 이후 main 함수에서는 switch 문을 사용하여 color 변수의 값에 따라 분기를 수행합니다.
- MoniWikiPlugins . . . . 1 match
== 모인모인에서 내장 함수였던 것을 매크로로 분리 구현한 것 ==
- PHP/a-zA-Z1-10 랜덤 출력 . . . . 1 match
[18:30] <+냐옹이> php 코드를 실행합니다. %nick%은 닉네임으로 치환됩니다. '~http://google.com/'을 파일로 읽으면 해당 웹 페이지의 내용이 fd로 출력됩니다. c/c++에서 기본 헤더 파일은 인클루드가 되어있으며, boost도 일부 사용 가능하고, main함수를 생략해도 됩니다. | !c !cpp !pl !py !rb !js !lua !php !bas !기억실행
- Perl . . . . 1 match
["/공백 제거 trim 함수"]
- Perl/공백 제거 trim 함수 . . . . 1 match
#keywords Perl,trim,공백제거,함수
- omr1/3 . . . . 1 match
http://memolog.blog.naver.com/rhealove/55 함수/변수네이밍시 사용되는 반대말 접두어들
- omr1/3/001 . . . . 1 match
함수 호출 규약, Function Calling Convention
- omr1/3/002 . . . . 1 match
</div><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana; font-size: 12px; line-height: normal; "><div class="post hentry category-42" id="post-2443" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; "><h3 class="storytitle" style="font-weight: normal; text-transform: capitalize; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; font-family: 돋움, dotum, sans-serif; "><a href="http://gaemon.wordpress.com/2008/10/13/10%eb%85%84-%ec%95%88%ec%97%90-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%98%eb%b0%8d-%eb%8f%85%ed%95%99%ed%95%98%ea%b8%b0/" rel="bookmark" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">10년 안에 프로그래밍 독학하기</a></h3><div class="meta" style="font-weight: normal; color: rgb(204, 204, 204); letter-spacing: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">Filed under: <a title="View all posts in 42" href="http://ko.wordpress.com/tag/42/" rel="category tag" target="_blank" style="font-weight: normal; letter-spacing: 0px; color: rgb(102, 102, 102); text-decoration: none; ">42</a> — 개멍 @ 21:52</div><div class="storycontent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; "><div class="snap_preview" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; "><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "><a id="yit6" title="피터 노빅 횽아의 유명한 글" href="http://www.norvig.com/21-days.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">피터 노빅 횽아의 유명한 글</a> 번역. <a id="vb" title="다른 분이 번�한 글" href="http://tavon.org/work/21-days" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">다른 분이 번역한 글</a> 도 있긴 한데 품질이 맘에 안 들어서 새로 번역해 봤다. “프로그램하다” 는 말은 요즘 잘 안 쓰이는거 같아서 몇몇 경우 “코딩하다” 는 표현을 사용했다.</p><hr width="100%" size="2"><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">어떤 서점을 들어가도 “7일만에 자바 독학하기” 라든가 그 옆에 나란히 놓인 비주얼 베이직, 윈도우즈, 인터넷 등을 며칠 내지 몇 시간만에 독학하는 방법을 찾을 수 있다. 아래와 같은 고급 검색을 amazon.com 에서 해 봤더니:</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">248 개의 결과가 나왔다. 상위 78 개는 컴퓨터 책이었다. (79위는 “30일만에 벵갈어 배우기” 였다) “며칠만에” 를 “몇 시간 만에” 로 바꿔도 눈에 띄게 비슷한 결과가 나온다. 253 개의 결과 중 상위 77 개는 컴퓨터 책이고 “문법과 문체를 24 시간만에 독학하기” 가 78위로 뒤를 잇는다. 상위 200 개 중에 96% 가 컴퓨터 책이다.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">결론을 내리자면 사람들이 컴퓨터를 배우기 위해 몰려들고 있든가, 아니면 다른 어떤 것보다 컴퓨터가 끝내주게 쉽다는 얘기, 둘 중 하나일 것이다. 베토벤이나 양자 역학이나 심지어 개 빗질하는 법을 며칠 만에 배우는 책은 없다. <a id="jrhs" title="3일만에 파스칼 배우기" href="http://www.amazon.com/exec/obidos/ISBN=1556225679/4094-7934802-027992" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">“3일만에 파스칼 배우기”</a> 같은 책이 어떤 의미일지 생각해 보자:</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">배우기: 3일 이라면, 의미있는 프로그램을 몇 개 짤 시간도 없고, 그 과정의 성공이나 실패로부터 배울 수도 없다. 경험있는 프로그래머와 같이 일하는 환경이 어떤 것인지 이해할 시간도 없다. 잘라 말해, 별로 많이 배울 시간이 안된다. <a id="rfbb" title="알렉산더 포프" href="http://en.wikipedia.org/wiki/Alexander_Pope" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">알렉산더 포프</a> 가 말했듯, 선무당이 사람잡는다.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "><strong><font color="#fe1100" size="3">파스칼: 3일 이라면 파스칼의 문법은 배울 수 있을 것이다 (비슷한 언어를 이미 알고 있다면). 하지만 그 문법으로 뭘 할지를 배우진 못할 것이다.</font></strong> 잘라 말해, 당신이 베이식 (BASIC) 프로그래머라면, 파스칼 문법을 사용해서 베이식 스타일의 프로그램은 짤 수 있겠지만, 파스칼이 정말 좋은지 (또는 나쁜지) 는 알 수 없을 것이다. 그러니 그게 무슨 소용인가? <a id="ilr3" title="알란 펄리스" href="http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">알란 펄리스</a> 가 말했듯이, “프로그래밍에 대해 생각하는 방법을 바꾸지 않는 언어는 알 필요도 없다.” 파스칼을 (실은 비주얼 베이식이나 자바스크립트 쪽이 좀 더 가능성 있겠지만) 약간 배워서 기존에 존재하는 코드와 인터페이싱한다면 뭔가 소용이 되긴 하겠지만, 그런 경우도 프로그래밍을 배우는건 아니다: 그 일을 하는 방법을 배우는 것일 뿐.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">3일 동안이라. 불행히도 이걸론 충분치 않다. 좀 더 설명해 보겠다.</p><h3 style="font-weight: normal; text-transform: capitalize; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; font-family: 돋움, dotum, sans-serif; ">10년 동안 프로그래밍 독학하기</h3><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">연구자들 (<a href="http://www.amazon.com/exec/obidos/ASIN/034531509X/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Bloom (1985)</a>, <a href="http://www.norvig.com/21-days.html#bh" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Bryan & Harter (1899)</a>, <a href="http://www.amazon.com/exec/obidos/ASIN/0805803092" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Hayes (1989)</a>, <a href="http://www.norvig.com/21-days.html#sc" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Simmon & Chase (1973)</a>) 은 세상의 많은 일들 중 어느 하나라도 전문적 지식을 갖추려면 10년 정도의 시간이 걸린다는 것을 밝힌 바 있다. 체스라든가, 음악 작곡, 모르스 전신 치는 법, 그림, 피아노 연주, 수영, 테니스, 신경정신학 및 토폴로지 등 모두 마찬가지다. 지름길은 없는 듯 하다: 심지어 <font size="3"><strong><font color="#fe1100">4살 때 음악 신동이었던 모짜르트도 세계적인 음악을 만들기까지는 13년을 기다려야 했다</font></strong>.</font> 장르를 바꿔 얘기하면, 비틀즈는 갑자기 나타나 1964 년부터 연속으로 1위 히트곡을 쏟아내면서 <a id="rg7o" title="에드 설리반 쇼" href="http://en.wikipedia.org/wiki/The_Ed_Sullivan_Show" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">에드 설리반 쇼</a> 에 출연한 것 처럼 보인다. 하지만 그들은 리버풀이나 함부르그의 작은 클럽에서 1957 년부터 활동해 왔고, 그때부터 대중적 호소력이 있긴 했지만, 진정한 첫 번째로 성공한 앨범인 “페퍼 하사” 는 1967 년에 발매되었다. 사무엘 존슨 (1709-1784) 는 심지어 10년도 짧다고 봤다: “어느 분야에서든 탁월함을 보이려면 평생 노력해야 한다. 더 싼 방법은 없다.” 그리고 초서 (1340-1440) 는 “인생은 짧고, 재주를 배우는건 너무 오래 걸리는도다” 고 한탄했다. 히포크라테스 (기원전 400년경) 는 그의 명언 “인생은 짧고, 예술은 길다” 라는 말은 남겼는데, 축약되지 않은 원문은 “Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile” 이며 번역하자면 “인생은 짧고, 재주는 길고, 기회는 잠깐이고, 실험은 믿을 수 없고, 판단은 어렵다.” 이다. 라틴어에서 “ars” 는 예술이나 기술 어느 쪽을 말할 수도 있지만, 원문의 그리스어는 “techne” 이고 이는 “재주” 로 번역되지 “예술” 로 번역되지 않는다.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">내가 제안하는 성공적인 프로그래밍의 요소는 다음과 같다:</p><ul style="list-style-type: none; list-style-position: initial; list-style-image: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">프로그래밍에 흥미를 갖고, 재미로 해 봐라. 계속해서 재미를 느껴서 10년을 버틸 수 있도록 하라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">다른 프로그래머와 얘기하라; <font color="#fe1100" size="3"><strong>다른 이들이 짠 프로그램을 읽어라</strong></font>. 이것이 어떤 책이나 수업보다 더 중요하다.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">코딩하라. <font size="3"><strong><font color="#fe1100">가장 좋은 학습은 </font></strong></font><a id="bxrj" title="해보면서 배우는 것" href="http://www.engines4ed.org/hyperbook/nodes/NODE-120-pg.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; "><font color="#fe1100" size="3"><strong>하면서 배우는 것</strong></font></a> 이다. 더 전문적으로 말하자면, “개인이 특정 영역에서 최고로 발휘할 수 있는 수준은 그저 오랫동안 경험한다고 그냥 배워지는게 아니다. 매우 경험이 많은 개인이라도 발전하려는 노력이 없으면 수준을 높일 수 없다.” <a href="http://www2.umassd.edu/swpi/DesignInCS/expertise.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">(p. 366)</a> 그리고 “가장 효과적인 학습에는 특정 개인에게 맞는 난이도의 잘 정의된 과제와, 유익한 피드백과, 반복해서 잘못을 수정해 나갈 기회가 필요하다.” (p. 20-21) 이러한 관점을 제공하는 <a href="http://www.amazon.com/exec/obidos/ASIN/0521357349" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life</a> 는 흥미로운 참고서적이다.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">원한다면, 대학에서 4년을 보내라 (아니면 대학원에서 더 시간을 보내라). 이렇게 하면 해당 경력을 필요로 하는 직업에 도전할 수도 있고, 이 분야에 대한 더 깊은 이해를 얻을 수도 있다. 하지만 수업을 즐기지 않는다면 (약간의 노력으로) 직업 내에서 비슷한 경험을 얻을 수도 있다. 어느 경우든, 책에서 배우는 것만으론 충분치 않다. “컴퓨터 과학 교육을 듣는다고 전문 프로그래머가 될 수 있다면 붓과 물감을 전공한 누구든 전문 화가가 될 수 있을 것이다” 고 <a id="lhvd" title="The New Hacker's Dictionary" href="http://www.ccil.org/jargon/jargon_toc.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">The New Hacker’s Dictionary</a> 의 저자 <a id="md7x" title="에� 레이몬드" href="http://catb.org/esr/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">에릭 레이몬드</a> 가 말한 바 있다. 내가 고용했던 최고의 프로그래머 중 하나는 고등학교 졸업장밖에 갖고 있지 않았다. 그는 <a href="http://www.xemacs.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">대단한</a> <a href="http://www.mozilla.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">소프트웨어</a> 를 많이 만들었고, 자신만의 <a href="http://groups.google.com/groups?q=alt.fan.jwz&meta=site%3Dgroups" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">뉴스 그룹</a> 도 있으며, 스톡 옵션을 충분히 벌어 자신의 <a id="eirn" title="나이트클럽" href="http://en.wikipedia.org/wiki/DNA_Lounge" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">나이트클럽</a> 까지 만들었다.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><font face="돋움" size="3" ;=""><strong><font color="#fe1100">다른 프로그래머들과 같이 프로젝트에 참여하라</font></strong>.</font> 몇 프로젝트에서 최고의 프로그래머가 되어라. 다른 몇 개에서는 최악의 프로그래머가 되어라. 자신이 최고인 프로젝트에서는 프로젝트를 꾸려나가고, 다른 이들에게 영감을 주는 능력을 시험하라. 최악인 프로젝트에서는 스승들이 무엇을 하고, 무엇을 하기 싫어하는지 배워라 (하기 싫은 것은 당신에게 시킬 것이다).</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">다른 프로그래머들이 이미 일하는 프로젝트에 참여하라. 다른 이들이 쓴 코드를 이해하는데 집중하라. 원 저자의 도움 없이 이해하고 고치는데 얼마나 노력이 드는가 경험하라. 당신이 짠 코드를 관리해야 하는 이들이 쉽게 작업하려면 어떻게 프로그램을 설계해야 할지 생각하라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">최소한 대 여섯개의 프로그래밍 언어를 배워라. 클래스 추상화를 제공하는 언어 (Java 나 C++ 같은) 하나와, 함수 추상화를 제공하는 언어 (Lisp 이나 ML 같은) 하나, 문법 추상화를 제공하는 언어 (Lisp 같은) 하나, 선언형 명세 방법 (declarative specification) 을 지원하는 언어 (Prolog 나 C++ 템플릿 같은) 하나, 코루틴을 제공하는 언어 (Icon 이나 Scheme 같은) 하나, 병렬화를 제공하는 언어 (Sisal 같은) 하나는 꼭 배워라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">“컴퓨터 과학” 에는 “컴퓨터” 가 들어간다는 것을 잊지 마라. 컴퓨터가 인스트럭션 하나를 수행하거나, 메모리에서 워드 하나를 가져오거나 (캐쉬 미스 나는 경우 및 안 나는 경우), 디스크에서 워드를 연속으로 읽어오거나, 디스크를 탐색하는데 얼마나 걸리는지 배워라. (해답은 아래쪽에)</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">언어 표준화 작업에 참여하라. ANSI C++ 위원회에 들어갈 수도 있지만, 주위 사람들의 인덴트 스타일이 공백 2 개인지 4 개인지 결정하는 일일 수도 있다. 어느 경우든, 다른 이들이 특정 언어에서 무엇을 좋아하는지, 얼마나 좋아하는지, (운이 좋으면) 왜 그렇게 느끼는지 배울 수 있다.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">위 언어 표준화 작업에서 가능한 빨리 빠져나오는 센스를 키워라.</li></ul><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">이 모두를 염두에 두면, 책에만 의존해서 얼마나 배울 수 있는지 의문스럽다. 내 첫 아이가 태어나기 전, 나는 모든 “~하는 법” 류의 책들을 다 읽었지만 그럼에도 아직도 대책없는 초보라고 느꼈다. 30달이 지나 내 두 번째 아이가 태어날 때 쯤, 기억을 되살리려 그 책들을 다시 읽었을까? 아니다. 나는 개인적 경험에 의존했고, 전문가들이 쓴 수천 페이지보다 그 쪽이 훨씬 유용하다는 확신을 줬다.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">프레드 브룩스는 그의 에세이 <a href="http://citeseer.nj.nec.com/context/7718/0" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">No Silver Bullets</a> 에서, 훌륭한 소프트웨어 설계자를 찾는 세 가지 방법을 제시했다.</p><ol style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">가능한 일찍, 최고 설계자감을 체계적으로 찾아내라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">경력 개발을 책임질 멘토를 붙여주고, 재능을 계발하는 책임을 부여하라. 신중하게 경력을 쌓게 하라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">자라나는 설계자들이 서로 소통하고 자극할 기회를 만들어 줘라.</li></ol><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">이 말은 훌륭한 설계자감은 이미 처음부터 그럴 자질이 있다는 것을 암시한다. 신경 써야 하는 부분은 그들끼리 제대로 얽히게 하는 것이다. <a id="ep_c" title="알란 펄리스" href="http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">알란 펄리스</a> 가 더 간단히 말한 바 있다: “누구에게나 조각을 가르칠 수 있지만, 미켈란젤로에게는 조각을 못하게 가르칠 수는 있어도 조각은 가르칠 방법이 없다. 훌륭한 프로그래머도 마찬가지다.”</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">그러니 가서 그 자바 책을 사라. 뭔가 소용은 있을 것이다. 하지만 그 책은 당신의 인생을 바꿀 수도 없고, 프로그래머로서의 전문성을 24시간 안에, 며칠 안에, 심지어 몇 달 안에 가르치진 못할 것이다.</p><h3 style="font-weight: normal; text-transform: capitalize; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; font-family: 돋움, dotum, sans-serif; ">참고문헌</h3><ol style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Bloom, Benjamin (ed.) <i><a href="http://www.amazon.com/exec/obidos/ASIN/034531509X" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Developing Talent in Young People</a></i>, Ballantine, 1985.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Brooks, Fred, <i><a href="http://citeseer.nj.nec.com/context/7718/0" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">No Silver Bullets</a></i>, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Bryan, W.L. & Harter, N. “Studies on the telegraphic language: The acquisition of a hierarchy of habits. <i>Psychology Review</i>, 1899, 8, 345-375</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Hayes, John R., <i><a href="http://www.amazon.com/exec/obidos/ASIN/0805803092" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Complete Problem Solver</a></i> Lawrence Erlbaum, 1989.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Chase, William G. & Simon, Herbert A.<a href="http://books.google.com/books?id=dYPSHAAACAAJ&dq=%22perception+in+chess%22+simon&ei=z4PyR5iIAZnmtQPbyLyuDQ" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">“Perception in Chess”</a> <i>Cognitive Psychology</i>, 1973, 4, 55-81.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Lave, Jean, <i><a href="http://www.amazon.com/exec/obidos/ASIN/0521357349" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life</a></i>, Cambridge University Press, 1988.</li></ol><h3 style="font-weight: normal; text-transform: capitalize; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; font-family: 돋움, dotum, sans-serif; ">부록: 언어 선택</h3><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">몇 사람들이 맨 처음 무슨 프로그래밍 언어를 배워야 할지 물어왔다. 하나의 정답은 없지만, 이런 점들을 생각해 보자.</p><ul style="list-style-type: none; list-style-position: initial; list-style-image: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b>친구들을 사용하라.</b> “어떤 OS 를 써야 할까? 윈도우즈, 유닉스, 아니면 맥?” 이라고 누가 내게 물어보면, 난 보통 이렇게 대답한다: “친구들이 쓰는걸 써라.” 친구들에게서 배울수 있다는 장점은 OS 나 프로그래밍 언어의 어떤 근본적 차이점보다도 더 큰 잇점이다. 또 앞으로 사귈 친구들을 고려하라: 해당 언어 사용자 커뮤니티에 당신도 참여하게 될 것이다. 선택한 언어의 사용자 커뮤니티가 계속 커지고 있는가, 아니면 사라지고 있는가? 해답을 찾을 수 있는 책이나, 웹 사이트나, 온라인 게시판이 있는가? 그 게시판에 있는 사람들이 맘에 드는가?</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b>간단한 것을 골라라.</b> C++ 나 자바 같은 언어는 경험 많은 프로그래머들이 큰 팀으로 모여서 전문적인 개발을 하기 위한 것이고, 런타임 성능에 신경을 쓴다. 그렇기 때문에 이 언어들에는 그런 상황에 맞는 복잡한 부분들이 있다. 당신은 프로그램을 배우는데 신경을 써야 한다. 그런 복잡한 부분은 필요없다. 한명의 신인 프로그래머가 배우기 쉽고 기억하기 쉬운 언어를 골라라.</li><li style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><b>갖고 놀아라.</b> 피아노를 어떻게 배우고 싶은가? 흔히 하듯이 인터랙티브하게, 건반을 치면 곧 소리가 들리는 방식으로 하고 싶은가? 아니면 “뱃치” 방식으로, 한 곡을 다 쳐야만 소리가 나는 식으로 배우고 싶은가? 당연히, 인터랙티브 모드 쪽으로 피아노를 배우는 편이 쉽다. 프로그래밍도 마찬가지다. 반드시 인터랙티브 모드가 있는 언어를 선택하고 그 모드를 사용하라.</li></ul><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">이런 기준을 놓고 볼 때, 내가 추천하는 첫 번째 언어는 <b><a id="i" title="파이쏜" href="http://python.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">파이쏜</a></b> 이나 <b><a href="http://www.schemers.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">스킴</a></b> 이다. 하지만 당신의 상황은 다를 수 있고, 다른 좋은 대안들도 있다. 나이가 한자리 숫자라면 <a id="e8ve" title="앨리스" href="http://alice.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">앨리스</a> 나 <a id="j83l" title="스퀵" href="http://www.squeak.org/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">스퀵</a> 을 좋아할 수도 있다 (나이가 들었다고 싫어할 이유는 없다). 중요한 것은 일단 선택하고 시작하는 것이다.</p><p style="font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "></p></div></div><div class="feedback" style="clear: both; font: normal normal normal 1em/1.3em Verdana, Arial, Helvetica, sans-serif; color: rgb(204, 204, 204); margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; "></div></div><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "> </p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "><a href="http://gaemon.wordpress.com/2008/10/13/10%EB%85%84-%EC%95%88%EC%97%90-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%8F%85%ED%95%99%ED%95%98%EA%B8%B0/" target="_blank" style="color: rgb(102, 102, 102); text-decoration: none; ">http://gaemon.wordpress.com/2008/10/13/10년-안에-프로그래밍-독학하기/</a></p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "> </p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">여기서 긁어왔음.</p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">결국 핵심은 공부엔 왕도가 없다.</p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">날로 먹을려고 들지 마라.</p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "> </p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">프로그래밍 잘 하고 싶으면, 코딩 많이 해봐라.</p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">라는 얘기.</p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; "> </p><p style="margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 2px; margin-bottom: 2px; ">당연한 말이면서 중요하고, 핵심을 찌르는 말들이네요.</p></span></div>
- omr1/5/002/001 . . . . 1 match
* 내부 함수
- omr1/5/002/081023 . . . . 1 match
* 내부 함수
- omr1/502 . . . . 1 match
- 함수 호출 규약, 리턴값 전달.
- omr1/임시13 . . . . 1 match
2) 스택컴프를 할 때 다른 스택컴프 함수다. -++ 마지막 왼쪽 노드를 처음 트리의 헤드에 연결시킨다. 나머지는 동일
- 꽃 이름들과 꽃말 . . . . 1 match
함수초 : 재빠르다, 예민
- 냐옹이/기억 . . . . 1 match
[10:21] <+Honoka> !기억 리만가설 제타 함수(ζ function)의 자명하지 않은(non-trivial) 모든 근들(zeros)은 실수부가 1/2 이다.
- 메모장 . . . . 1 match
<- 생성함수 등 주요개념에 대한 설명이 깊이있게 다루어져 있습니다.
- 삼각함수 . . . . 1 match
attachment:삼각함수/338px-Circle-trig6.svg.png
- 윈도우용 wget . . . . 1 match
재귀적 탐색의 깊이 레벨은 기본값이 '5'로 되어 있다. '-l depth' 옵션을 사용하면 바꿀수 있다. 이 레벨이 증가함에 따라 복사해오는 파일은 지수 함수적으로 증가하게 된다.
- 학부/3학년 . . . . 1 match
// ::SetColumnsOrder() 함수를 제공하나 윈도우만 가능하다.
Found 59 matching pages out of 1201 total pages
You can also click here to search title.