- GuiTestingWithMfc . . . . 49 matches
#include "GuiTestingOne.h"
#include "GuiTestingOneDlg.h"
BEGIN_MESSAGE_MAP(CGuiTestingOneApp, CWinApp)
//{{AFX_MSG_MAP(CGuiTestingOneApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
CGuiTestingOneApp::CGuiTestingOneApp()
CGuiTestingOneApp theApp;
BOOL CGuiTestingOneApp::InitInstance()
AfxEnableControlContainer();
Enable3dControls(); // Call this when using MFC in a shared DLL
Enable3dControlsStatic(); // Call this when linking to MFC statically
CGuiTestingOneDlg dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
else if (nResponse == IDCANCEL)
|| test1One || 연습겸 Assert Equals. 10 == 10 ||
|| test2GuiOne || 버튼이 눌러졌을 경우에 CGuiTestingOneDlg::m_bFlag 가 true 상태가 된다. ||
#include <cppunit/Extensions/HelperMacros.h>
#include "GuiTestingOneDlg.h" // import GuiTestingOneDlg
CPPUNIT_TEST ( test1One );
- VonNeumannAirport/1002 . . . . 46 matches
#include <cppunit/extensions/HelperMacros.h>
class TestOne : public CppUnit::TestCase {
CPPUNIT_TEST_SUITE (TestOne);
configuration 1,1 로 셋팅
class TestOne : public CppUnit::TestCase {
CPPUNIT_TEST_SUITE (TestOne);
Configuration* conf = new Configuration (1,1);
conf->movePeople (1,1,1);
CPPUNIT_ASSERT_EQUAL (1, conf->getTraffic ());
class Configuration {
Configuration (int startCity, int endCity) {
Configuration* conf = new Configuration (1,1);
conf->movePeople(1,1,1);
CPPUNIT_ASSERT_EQUAL (1, conf->getTraffic ());
conf->movePeople(1,1,1);
CPPUNIT_ASSERT_EQUAL (2, conf->getTraffic ());
conf->movePeople(1,1,100);
CPPUNIT_ASSERT_EQUAL (102, conf->getTraffic ());
void testOneToOneMove () {
Configuration* conf = new Configuration (1,1);
- 데블스캠프2009/목요일/연습문제/MFC/김태욱 . . . . 45 matches
// zxczxcDlg.cpp : implementation file
// ClassWizard generated virtual function overrides
// Implementation
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
ON_BN_CLICKED(IDC_BUTTON11, OnButton11)
ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
ON_BN_CLICKED(IDC_BUTTON13, OnButton13)
- 데블스캠프2009/목요일/연습문제/MFC/정종록 . . . . 44 matches
// TestDlg.cpp : implementation file
// ClassWizard generated virtual function overrides
// Implementation
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON8, On2)
ON_BN_CLICKED(IDC_BUTTON10, On3)
ON_BN_CLICKED(IDC_BUTTON17, On1)
ON_BN_CLICKED(IDC_BUTTON13, On4)
ON_BN_CLICKED(IDC_BUTTON9, On5)
ON_BN_CLICKED(IDC_BUTTON7, On6)
ON_BN_CLICKED(IDC_BUTTON19, On7)
ON_BN_CLICKED(IDC_BUTTON14, OnButton14)
ON_BN_CLICKED(IDC_BUTTON15, On9)
ON_BN_CLICKED(IDC_BUTTON18, On0)
ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
ON_EN_CHANGE(IDC_EDIT3, OnChangeEdit3)
- 데블스캠프2009/목요일/연습문제/MFC/서민관 . . . . 42 matches
// testMFCDlg.cpp : implementation file
// ClassWizard generated virtual function overrides
// Implementation
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
DDX_Control(pDX, IDC_BUTTON1, m_1);
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
ON_BN_CLICKED(IDC_BUTTON11, OnButton11)
ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
ON_BN_CLICKED(IDC_BUTTON13, OnButton13)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
- WOWAddOn/2011년프로젝트/초성퀴즈 . . . . 35 matches
[[TableOfContents]]
import java.io.UnsupportedEncodingException;
int joong = ( (a %(21*28))/28);
int jong = (a%28);
System.out.println(""+ (char)first[cho] + (char)middle[joong] + (char)last[jong]);
=== 첫 와우 Addon 만들기 ===
첫 와우 Addon을 제작하게 되었다.
기본적으로 "/World of Warcraft/interface/addons/애드온명" 으로 폴더가 만들어져있어야한다.
<UI xmlns="http://www.blizzard.com/wow/ui" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui">
<OnLoad>
</OnLoad>
function HelloWoW_ShowMessage()
WoW API function을 lua에 넣어준적은 없지만 자동으로 되나보다.
또한 Widget과 LuaFunction의 사용정보를 볼수 있다.
저 번호에 아이템 넘버를 넣으면 해당 아이템 정보가 들어가있는 페이지로 이동하게 된다. DB를 WOW안에서와 웹페이지 똑같이 관리 하는것 같은데 이렇게 똑같이 되있으니까 좋다. 사실 Addon에서 페이지에서 하나 빼오는걸로 생각했지만 가장 좋다고 생각하는것은 블루아이템과 누구드랍처럼 아이템 이름을 보관해놓고 Addon을 돌려보는것이 정신건강에 이로울것이라고 생각했다.
아직 WOW addon에 대해서 모르는것도 있고. WOW에서 사용하는 몇몇 자료구조가 특이한건 알겠다. 젠장. Item에 뭔 부가정보가 그렇게 많이 붙어!! 여튼 그것에 대해서는 한번 다시 다루어보아야겠다.
function HelloWoW_ShowMessage()
function HelloWoW_ShowMessage()
function charLen(str)
function samplingFirst(str)
- 데블스캠프2009/목요일/연습문제/MFC/송지원 . . . . 33 matches
#pragma once
// Construction
CTestDlg(CWnd* pParent = NULL); // standard constructor
// ClassWizard generated virtual function overrides
// Implementation
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void Button7();
afx_msg void Button8();
afx_msg void Button9();
afx_msg void Button4();
afx_msg void Button5();
afx_msg void Button6();
afx_msg void Button1();
afx_msg void Button2();
afx_msg void Button3();
- 데블스캠프2009/목요일/연습문제/MFC/박준호 . . . . 31 matches
// TestAPPDlg.cpp : implementation file
// ClassWizard generated virtual function overrides
// Implementation
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON4, OnButton3)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON05, OnButton05)
ON_BN_CLICKED(IDC_BUTTON06, OnButton06)
ON_BN_CLICKED(IDC_BUTTON07, OnButton07)
ON_BN_CLICKED(IDC_BUTTON08, OnButton08)
ON_BN_CLICKED(IDC_BUTTON09, OnButton09)
ON_BN_CLICKED(IDC_BUTTONaddition, OnBUTTONaddition)
ON_BN_CLICKED(IDC_BUTTONsubtruction, OnBUTTONsubtruction)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTONconclusion, OnBUTTONconclusion)
- 데블스캠프2005/금요일/OneCard . . . . 21 matches
#format python
def __init__(self, shape=None, number=None):
def printCardDeck(pcCards, myCards, cardOnTable):
jobs = [pcCards, [cardOnTable], myCards]
if job != None:
cardOnTable = cards[0]
printCardDeck(pcCards, myCards, cardOnTable)
cardOnTable, myResult = userProc(cardOnTable, myCards)
cardOnTable, pcResult = pcProc(cardOnTable, pcCards)
printCardDeck(pcCards, myCards, cardOnTable)
def userProc(cardOnTable, myCards):
return cardOnTable, cnt
if not canHandOut(cardOnTable, myCards[select]):
continue
cardOnTable = myCards.pop(select)
printDeck([cardOnTable])
continue
def pcProc(cardOnTable, pcCards):
if canHandOut(cardOnTable, pcCards[index]):
cardOnTable = pcCards.pop(index)
- 오목/민수민 . . . . 18 matches
#pragma once
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in sampleView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
// sampleView.cpp : implementation of the CSampleView class
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
- 오목/진훈,원명 . . . . 17 matches
[[TableOfContents]]
#pragma once
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual void OnInitialUpdate();
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in OmokView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
// OmokView.cpp : implementation of the COmokView class
ON_WM_LBUTTONDOWN()
- EightQueenProblem/이선우3 . . . . 16 matches
[[TableOfContents]]
import java.util.Enumeration;
public Board( int sizeOfBoard ) throws Exception
if( sizeOfBoard < 1 ) throw new Exception( Board.class.getName() + "- size_of_board must be greater than 0." );
Chessman prevOne;
for( Enumeration e=board.elements(); e.hasMoreElements(); ) {
prevOne = (Chessman)e.nextElement();
if( chessman.doIHurtYou( prevOne ) || prevOne.doIHurtYou( chessman )) return false;
Chessman prevOne;
for( Enumeration e=board.elements(); e.hasMoreElements(); ) {
prevOne = (Chessman)e.nextElement();
if( prevOne.isSamePoint( point )) return prevOne;
Chessman prevOne;
for( Enumeration e=board.elements(); e.hasMoreElements(); ) {
prevOne = (Chessman)e.nextElement();
if( prevOne.isSamePoint( point )) return removeChessman( prevOne );
public void clearBoardBelowYPosition( int y )
Chessman prevOne;
for( Enumeration e=board.elements(); e.hasMoreElements(); ) {
prevOne = (Chessman)e.nextElement();
- HelpOnEditing . . . . 15 matches
* HelpOnFormatting - 기본적인 텍스트 포매팅 문법
* HelpOnLinking - 페이지간 연결과 이미지 넣기
* HelpOnHeadlines - 단락별 제목 쓰기
* HelpOnRules - 수평줄
* HelpOnLists - 목록과 들여쓰기 단락
* HelpOnTables - 테이블
* HelpOnSmileys - :) 와 같은 스마일리 넣기
* HelpOnMacros - 매크로
* HelpOnProcessors - 프로세서
* HelpOnActions - 액션
* HelpOnProcessingInstructions - 페이지 제어
* HelpOnNameSpace - 네임스페이스
* HelpOnSubPages - 하위 페이지
* HelpOnXmlPages - 페이지를 xml로 저장하고 xslt 적용하기
위키 포매팅 문법 (위키 마크업)을 테스트하고 싶으시면 WikiSandBox로 가셔서 [[GetText(EditText)]]를 누르시거나 [[Icon(edit)]] 아이콘을 누르시면 WikiSandBox에서 테스트 해보실 수 있습니다. 실제로 저장하지 않더라도 미리보기 버튼을 누르시면 위키 포매팅 결과를 그때 그때 확인하면서 연습하실 수 있습니다.
[[Navigation(HelpOnEditing)]]
- NSISIde . . . . 14 matches
[[TableOfContents]]
한 Iteration 을 2시간으로 잡음. 1 Task Point는 Ideal Hour(?)로 1시간에 할 수 있는 양 정도로 계산. (아.. 여전히 이거 계산법이 모호하다. 좀 더 제대로 공부해야겠다.)
|| Rich Edit Control 의 이용. 편집. 자료구조와 sink. || 0.5 ||
|| MFC의 MDI Framework 이용 || none ||
== Iteration 계획 ==
First Iteration :
* Rich Edit Control 의 이용. 0.5
Second Iteration :
Last Iteration :
=== Iteration 1 (1:00 ~ 3:00) ===
Rich Edit Control CView 에 붙이기. 0.5
=== Iteration 2 (3:20 ~ 5:40) ===
-> Singleton 으로 있어야 할 녀석임.
-> AppClass 에 있으면 자동으로 Singleton 이 되겠군. ^-^;
오후 5:05 - 10분 휴식. Iteration 3 에 있는 녀석을 마저 하자.~
=== Iteration 3 (5:50 ~ 8:10) ===
* average : 2.2 / 3 = 0.73 task point / Iteration (2 hours)
* Save/Load 와 관련한 메세지의 함수 호출 순서 (Function Call 따라가기)
* CWinApp::OnFileNew -> CDocManager::OnFileNew -> CMultiDocTemplate::OpenDocumentFile -> CNIDoc::OnNewDocument .. -> CNIView::OnInitialUpdate ()
* CWinApp::OnFileOpen -> CDocManager::OnFileOpen -> CMultiDocTemplate::OpenDocumentFile -> CNIDoc::OnOpenDocument .. -> CNIView::OnInitialUpdate ()
- RUR-PLE/Newspaper . . . . 14 matches
[[TableOfContents]]
def climbUpOneStair():
def climbDownOneStair():
climbUpOneStair()
climbUpOneStair()
climbUpOneStair()
climbUpOneStair()
climbDownOneStair()
climbDownOneStair()
climbDownOneStair()
climbDownOneStair()
def climbUpOneStair():
def climbDownOneStair():
repeat(climbUpOneStair,4)
repeat(climbDownOneStair,4)
- WikiSlide . . . . 14 matches
* a technology for collaborative creation of internet and intranet pages
* '''Simple''' - ''Content over Form'' (content counts, not the super-pretty appearance)
* Personal Information Management, Knowledgebases, Brainstorming
* Collaboration, Coordination and Communication platform
* Creating documentation and slide shows ;)
* Help with problems or questions: HelpContents ([[Icon(help)]]) and HelpMiscellaneous/FrequentlyAskedQuestions
* Name (appears on RecentChanges)
* Personal preferences
* Link with User-ID ( (!) ''in any case, put a bookmark on that'')
* Navigation: Quicklinks, Icons link to system actions (HelpOnNavigation)
* Content
* Quick search and additional actions (HelpOnActions)
Searching and Navigation:
* Backlinks (click on title)
* Icons at top right (HelpOnNavigation)
Good places to start your Wiki exploration:
* SiteNavigation: A list of the different indices of the Wiki
* WordIndex: A list of all words in page titles (i.e. a list of keywords/concepts in the Wiki)
To edit a page, just click on [[Icon(edit)]] or on the link "`EditText`" at the end of the page. A form will appear enabling you to change text and save it again. A backup copy of the previous page's content is made each time.
You can check the appearance of the page without saving it by using the preview function - ''without'' creating an entry on RecentChanges; additionally there will be an intermediate save of the page content, if you have created a homepage ([[Icon(home)]] is visible).
- 오목/곽세환,조재화 . . . . 14 matches
#pragma once
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in ohbokView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
// ohbokView.cpp : implementation of the COhbokView class
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
- 오목/재니형준원 . . . . 14 matches
#pragma once
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in OmokView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
// omokView.cpp : implementation of the COmokView class
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
- 오목/재선,동일 . . . . 14 matches
#pragma once
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in singleView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
// singleView.cpp : implementation of the CSingleView class
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
- 5인용C++스터디/API에서MFC로 . . . . 12 matches
* '''M'''icrosoft '''F'''oundation '''C'''lass library
* 버튼 - CButton
BEGIN_MESSAGE_MAP(CApplicationView, CView)
//{{AFX_MSG_MAP(CApplicationView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_KEYDOWN()
ON_WM_KEYUP()
class CApplicationView : public CView
// Generated message map functions
//{{AFX_MSG(CApplicationView)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
// CApplicationView message handlers
void CApplicationView::OnLButtonDown(UINT nFlags, CPoint point)
CView::OnLButtonDown(nFlags, point);
void CApplicationView::OnLButtonUp(UINT nFlags, CPoint point)
CView::OnLButtonUp(nFlags, point);
- 5인용C++스터디/에디트박스와콤보박스 . . . . 12 matches
CreateEdit라는 프로젝트를 만들어보자. 폼뷰가 아닌 일반 뷰에 에디트를 배치하려면 뷰가 생성될 때 (WM_CREATE) OnCreate에서 에디트를 생성시키면 된다. 우선 뷰의 헤더파일을 열어 CEdit형 포인터를 선언한다.
그리고 뷰의 WM_CREATE 메시지 핸들러인 OnCreate를 작성하고 이 핸들러에서 에디트를 생성한다.
int CCreateEditView::OnCreate(LPCREATESTRUCT lpCreateStruct)
if(CView::OnCreate(lpCreateStruct) == -1)
BOOL Create(DWORD dwstyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
void CCreateEditView::OnDestroy()
CView::OnDestroy();
이렇게 Create 함수로 만든 에디트의 통지 메시지는 어떻게 처리해야 할까. 클래스 위저드가 메시지 핸들러를 만들 때 해주는 세가지 동작을 프로그래머가 직접 해줘야 한다. 우선 메시지 맵에서 메시지와 메시지 핸들러를 연결시켜 준다. ON_EN_CHANGE 매크로에 의해 IDC_MYEDIT 에디트가 EN_CHANGE 메시지를 보내올 때 OnChangeEdit1 함수가 호출된다.
ON_EN_CHANGE(IDC_MYEDIT, OnChangeEdit1)
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
//Generated message map functions
afx_msg void OnChangeEdit1();
세 번째로 메시지 핸들러 함수 OnChangeEdit1 함수를 작성한다. 함수의 본체 코드는 물론이고 함수명까지 직접 입력해 주어야 한다. 이 함수는 에디트 컨트롤의 문자열을 읽어 들이는 함수이다.
void CCreateEditView::OnChangeEdit1()
- One . . . . 11 matches
* [One/실습]
* [One/김태형]
* [One/윤현수]
* [One/박원석]
* [One/주승범]
* [One/남상재]
* [One/구구단]
* [One/피라미드]
* [One/마름모]
'''원'''석이의 [One]
구구단 실습해 보신 분은 피라미드 만들어 보세요. 조금만 생각해보면 그리 어렵지 않습니다. [One/피라미드] -- [황재선]
- Java/ModeSelectionPerformanceTest . . . . 10 matches
long start;
long end;
if (mode.equals("One")) {
doOne(1);
public void doOne(int i) {
한편으로 느껴지는 것으로는, switch 로 분기를 나눌 mode string 과 웹 parameter 와의 중복이 있을 것이라는 점이 보인다. 그리고 하나의 mode 가 늘어날때마다 해당 method 가 늘어나고, mode string 이 늘어나고, if-else 구문이 주욱 길어진다는 점이 있다. 지금은 메소드로 추출을 해놓은 상황이지만, 만일 저 부분이 메소드로 추출이 안되어있다면? 그건 단 한마디 밖에 할말이 없다. (단, 저 논문을 아는 사람에 한해서) GotoStatementConsideredHarmful.
=== 두번째 - Method reflection ===
import java.lang.reflect.InvocationTargetException;
public class MethodFullReflection {
public void printPerformance(String[] modeExecute) throws InvocationTargetException, IllegalAccessException {
long start;
long end;
executeReflection(modeExecute);
private void executeReflection(String[] modeExecute) throws InvocationTargetException, IllegalAccessException {
} catch (NoSuchMethodException e) {
} catch (SecurityException e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
public void doOne(int i) {
단점 : 자바에서는 Method Reflection & Invoke 가 엄청 느리다.; 속도는 밑의꺼 참조.
import java.lang.reflect.InvocationTargetException;
- MFC/MessageMap . . . . 10 matches
{{|[[TableOfContents]]|}}
afx_msg LRESULT OnAcceptClient(WPARAM wParam, LPARAM lParam); // 이부분에 이렇게 정의한 메시지를 실행할 함수를 넣어준다. 함수명은 하고 싶은데로..
ON_MESSAGE(UM_ACCEPTCLIENT, OnAcceptClient) // 이부분에서 UM_ACCEPTCLIENT가 발생하면 OnAcceptClient함수를 실행시킨다고 맵핑한다.
afx_msg LRESULT OnAcceptClient(WPARAM wParam, LPARAM lParam)
in ''application_name.h''
// ClassWizard generated virtual function overrides
// Implementation
afx_msg void OnAppAbout(); // 위저드로 생성되는 기본 코드에서는 오로지 ID_APP_ABOUT 매시지 만을 처리하는 함수가 존재한다.
// NOTE - the ClassWizard will add and remove member functions here.
in ''application_name.cpp''
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
ON_COMMAND() 매크로 함수는 지정된 메시지 식별자(ID_..)와 특정 함수를 묶어주는 역할을 한다.
in ''CAboutDlg implementation''
// ClassWizard generated virtual function overrides
// Implementation
void CEx14App::OnAppAbout()
|| window message || WM_PAINT, WM_LBUTTONUP과 같은 표준 윈도우 메시지. ||
- RandomWalk/임인택 . . . . 10 matches
[[TableOfContents]]
// move direction and board.
int direction_x[]={-1,0,1,1,1,0,-1,-1};
int direction_y[]={1,1,1,0,-1,-1,-1,0};
const int DIRECTION = 8;
k = rand()%DIRECTION;
if(xPos+direction_x[k]<0 || xPos+direction_x[k]>sizeX-1
|| yPos+direction_y[k]<0 || yPos+direction_y[k]>sizeY-1)
continue;
xPos += direction_x[k];
yPos += direction_y[k];
continue;
continue;
#define DIRECTION 8
// move direction and board.
int direction_x[]={-1,0,1,1,1,0,-1,-1};
int direction_y[]={1,1,1,0,-1,-1,-1,0};
k = rand()%DIRECTION;
if(xPos+direction_x[k]<0 || xPos+direction_x[k]>sizeX-1
|| yPos+direction_y[k]<0 || yPos+direction_y[k]>sizeY-1)
- 5인용C++스터디/멀티미디어 . . . . 9 matches
뷰에 WM_LBUTTONDOWN메시지의 핸들러를 만들고 OnLButtonDown 핸들러에 다음과 같이 코드를 작성한다.
이번에는 SND_LOOP 플래그를 사용하여 작성해 보고, WM_RBUTTONDOWN 메시지의 핸들러도 같이 만들어보자.
void CSoundView::OnLB.........
void CSoundView::OnRB......
void CSoundView::OnLButtonDown(UINT nFlags, CPoint point)
CView:OnLButtonDown(nFlags, point);
1-4) MCI (Media Control Interface)
MCI를 사용하면 동영상도 아주 쉽게 재생할 수 있다. AppWizard로 PlayAVI라는 SDI 프로젝트를 만들고 WM_LBUTTONDOWN 메시지의 핸들러와 WM_DESTROY 메시지의 핸들러를 다음과 같이 작성한다.
void CPlayAVIView::OnLButtonDown...
CView::OnLButtonDown(nFlags, point);
void CPlayAVIView::OnDestroy()
CView::OnDestroy();
- MFC/Print . . . . 9 matches
{{| [[TableOfContents]] |}}
* CView::OnPreparePrinting()
* CView::OnBeginPrinting()
* CView::OnPrepareDC()
* CView::OnPrint()
페이지가 남았다면 OnPrepareDC()로 이동하여 루프
* CView::OnEndPrinting()
뷰클래스의 5개의 멤버함수는 프로그래머가 재정의 해야한다. 최소한 5개중에서 OnPreparePrinting(), OnPrepareDC(), OnPrint()는 구현해야한다.
|| m_bContinuePrinting || TRUE로 설정되면 출력 루프를 계속한다. FALSE가 되면 프린트 작업 종료. ||
- MoreEffectiveC++/Techniques1of3 . . . . 9 matches
||[[TableOfContents]]||
== Item 25: Virtualizing constructors and non-member functions ==
=== Virtual Constructor : 가상 생성자 ===
class NLComponent{ // News Letter 의 부모 인자
class TextBlock:public NLComponent{ // 글을 표현하는 인자
class Graphic:public NLComponent{ // 그림을 표현하는 인자
list<NLComponent*> components; // 글과 그림 인자의 저장소
다음에 추가될 인자 객체(component object)를 str로 부터 읽는다.
newsletter의 인자중 리스트인 components에 만든 객체를 넣는다.
혹은 약간 수를 써서 readComponent를 호출하는 식으로 바꾼다면
// 해당 자료를 해석하고, 알맞는 객체를 만들고 반호나하는 readComponent객체
static NLComponent * readComponent(istream& str);
// readComponent가 해석한 객체를 newsletter의 리스트 마지막에 추가시키는 과정
components.push_back(readComponent(str));
readComponent가 무엇을 어떻게 하는지 궁리해 보자. 위에 언급한듯이 readComponent는 리스트에 넣을 TextBlock나 Graphic형의 객체를 디스크에서 읽어 드린 자료를 바탕으로 만들어 낸다. 그리고 최종적으로 만들어진 해당 객체의 포인터를 반환해서 list의 인자를 구성하게 해야 할것이다. 이때 마지막 코드에서 가상 생성자의 개념이 만들어 져야 할것이다. 입력되 는자료에 기초되어서, 알아서 만들어 인자. 개념상으로는 옳지만 실제로는 그렇게 구현될수는 없을 것이다. 객체를 생성할때 부터 형을 알고 있어야 하는건 자명하니까. 그렇다면 비슷하게 구현해 본다?
가상 생성자의 방식의 한 종류로 특별하게 가상 복자 생성자(virtual copy constructor)는 널리 쓰인다. 이 가상 복사 생성자는 새로운 사본의 포인터를 반환하는데 copySlef나 cloneSelf같은 복사의 개념으로 생성자를 구현하는 것이다. 다음 코드에서는 clone의 이름을 쓰였다.
class NLComponent{
// 가상 복사 생성자 virtual copy constructor 선언
virtual NLComponent * clone() const = 0;
class TextBlock: public NLComponent{
- Ones/1002 . . . . 9 matches
def isAllOne(aValue):
def ones(aValue):
theOnes = "1"
onesValue = int(theOnes)
if isMultiplyOf(onesValue,aValue):
return len(theOnes)
theOnes += "1"
class OnesTest(unittest.TestCase):
self.assertEquals(3, ones(3))
self.assertEquals(6, ones(7))
self.assertEquals(9, ones(9))
self.assertEquals(12, ones(9901))
def testIsAllOne(self):
self.assert_(isAllOne(1111))
self.assert_(not isAllOne(1112))
print ones(int(raw_input()))
- CSP . . . . 8 matches
each.setDaemon(True)
if self.q.get()!=None: #for block
raise "None expected"
self.q.put(None) #for block
s.connect(self.addr)
continue
self.netc=None
class OneToNet(ViaNet):
class NetToOne(ViaNet):
cout=OneToNet(('localhost',PORT))
cin=NetToOne(('localhost',PORT))
class Cons(Process):
c1=Cons(1,plusc1,c1d1)
c2=Cons(1,d1c2,c2d2)
#from Steve Holden's Python Web Programming
class Cons(Process):
c2=Cons(1,d1c2,c2d2)
d1c2=NetToOne(MYADDR)
d2plus=OneToNet(YOURADDR)
class Cons(Process):
- EightQueenProblem/이선우2 . . . . 8 matches
private boolean checkOne;
public NQueen2( int size ) throws Exception
if( size < 1 ) throw new Exception( NQueen2.class.getName() + "- size must be greater than 0." );
checkOne = false;
boolean prevCheckOne = checkOne;
checkOne = true;
checkOne = prevCheckOne;
if( checkOne && numberOfAnswers > 0 ) break;
if( args.length != 1 ) throw new Exception();
catch( Exception e ) {
catch( Exception e ) {
- MFC/ObjectLinkingEmbedding . . . . 8 matches
[[TableOfContents]]
OLE서버 : 서버는 컨테이너에 들어갈 객체를 생성한다. 풀서버는 독립적인 프로그램으로 작동할 수 있거나, 복합 도큐먼트 안에 임베드된 객체로 작동한다. 미니서버는 standalone 모드로서 작동하지 못한다. 오로지 객체를 만들기만 할 뿐이다.
OLE 컨테이너, 서버 사이의 통신은 윈도우 운영체제를 매개로 동작한다. 각 OLE 를 지원하는 프로그램은 공통의 OLE DLL을 가지는데 이 것이 윈도우의 기본지원 부분이다. DLL 안의 함수들은 이렇게 객체사이의 통신을 지원한다. 이때 이를 지원하는 표준적인 인터페이스가 COM(Component Object Model)이다. 본질적으로 엠비드된 객체의 모양과 컨테이너가 그것과 통신하는 방법을 정의한것이다.
|| OnChange() || 임베드된 객체에 변경사항이 존재하면 그 항목의 서버에 보고될 때 프레임웍에 의해 호출된다. 일반적인 경우는 임베드된 객체를 다시 그릴때이다. ||
|| OnGetItemPosition() || OLE객체가 표시되어야 하는 컨테이너의 클라이언트 영역의 직사각형을 얻기 위해 프레임웍에 의해 호출 ||
|| OnChangeItemPosition() || 엠베드된 객체의 범위가 편집 작업 동안 변경되었다는 것을 컨테이너에 알리기 위해 프레임웍에 의해 호출 ||
|| OnDraw() || 객체가 in-place 활성화 되었을때 서버에 있는 뷰클래스의 OnDraw() 함수에 의해서 그려진다. 따라서 컨테이너에 잇는 요소를 그리는 일은 서버측에서 구현되어야 하는 것이다. ||
|| OnGetExtent() || 임베드된 객체의 실제 범위를 얻기 위해 프레임웍에 의해 호출되는 부분이다. ||
|| NotifyChanged() || 서버에서 객체가 변경되면, 이 객체를 임베드 하고 있는 모든 컨테이너에게 이를 알려 컨테이너가 OnChanged()를 호출하도록 한다. ||
서버측에는 COleServerDoc에서 파생된 도큐먼트를 이용한다. 서버측에서는 반드시 OnGetEmbeddedItem() 멤버를 구현해야한다. 이는 이 함수가 순수가상 함수이기 때문이다.
- 주민등록번호확인하기/조현태 . . . . 8 matches
#include <conio.h>
const int BACK_SPACE=8;
const int CHAR_TO_NUMBER=48;
#include <conio.h>
const int BACK_SPACE=8;
const int CHAR_TO_NUMBER=48;
#include <conio.h>
const int BACK_SPACE=8;
const int CHAR_TO_NUMBER=48;
mulAndSum([FirstOne|RemainOne], [FirstAnother|RemainAnother]) -> FirstOne * FirstAnother + mulAndSum(RemainOne, RemainAnother).
sumList([FirstOne|RemainOne], [FirstAnother|RemainAnother]) -> [FirstOne + FirstAnother] ++ sumList(RemainOne, RemainAnother).
- 3N+1Problem/황재선 . . . . 7 matches
|| [[TableOfContents]] ||
== Python ==
class ThreeNPlusOne:
class ThreeNPlusOneTest(unittest.TestCase):
self.u = ThreeNPlusOne()
def testOneCal(self):
o = ThreeNPlusOne()
== Python ==
class ThreeNPlusOneTest(unittest.TestCase):
def testOneCal(self):
입력은 0과 1000000 사이의 값을 갖는 한 쌍의 정수이다. 1과 999999를 입력한 경우 몇 초 이내에 답이 나올까. Python으로 4초 이내를 목표로 구현했다. 하지만 만족할 만한 결과가 나오지 않았다. 안타깝게도 더이상 최적화할 묘안이 떠오르지 않는다 -- 재선
http://bioinfo.sarang.net/wiki/AlgorithmQuiz_2f3Plus1 에서 yong27님의 소스코드를 보았다. 소스가 정말 깔끔했다. 실행속도가 빨라서 그 원인을 분석해가며 지난번 작성했던 코드를 수정했다. 나의 목적은 0.001초라도 빠르게 결과를 출력하는 것이었다. 실행시간을 최소화하기위해 클래스마저 없앴다. 특히 두 부분을 수정하니 실행시간이 현저히 줄었다. 하나는 클래스 멤버변수를 제거하고 지역변수화한 경우인데 왜 그런지 모르겠다. 둘째는 사전형 타입인 cycleDic 에서 key를 문자열에서 숫자로 바꾼 부분이었다. 지난번 구현시 무엇때문에 수치형을 문자열로 변환하여 key로 만들었는지 모르겠다. -- 재선
- 5인용C++스터디/더블버퍼링 . . . . 7 matches
TCHAR szGang[]="Gang Version 1.0\r\n\r\n총 감독 : 김 정수\r\n"
void OnTimer()
HFONT font, oldfont;
font=CreateFont(30,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,
oldfont=(HFONT)SelectObject(hMemDC,font);
SelectObject(hMemDC,oldfont);
DeleteObject(font);
case WM_LBUTTONDOWN:
OnTimer();
CPoint Position;
// TODO: add construction code here
Position = CPoint(0, 0);
void CTestView::OnDraw(CDC* pDC)
MemDC.Ellipse(Position.x - i, Position.y - i,
Position.x + i, Position.y + i);
MemDC.Rectangle(Position.x + 10 - i, Position.y + 10 - i,
Position.x + 10 + i, Position.y + 10 + i);
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CView::OnCreate(lpCreateStruct) == -1)
// TODO: Add your specialized creation code here
- 5인용C++스터디/타이머보충 . . . . 7 matches
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#include <afxcmn.h> // MFC support for Windows Common Controls
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
int CMMTimerView::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CView::OnCreate(lpCreateStruct) == -1)
void CMMTimerView::OnDestroy()
CView::OnDestroy();
ON_MESSAGE(WM_USER, OnMMTimer)
// Generated message map functions
afx_msg LRESULT OnMMTimer(WPARAM wParam, LPARAM lParam);
LRESULT CMMTimerView::OnMMTimer(WPARAM wParam, LPARAM lParam)
- QueryMethod . . . . 7 matches
void makeOn() {
status = "on";
void makeOn() {
if( switch->getStatus() == "on" )
light->makeOn();
bool isOn() {
void makeOn() {
if ( switch->isOn() )
light->makeOn();
- 영호의바이러스공부페이지 . . . . 7 matches
Introduction -
This is a down and dirty zine on wich gives examples on writing viruses
and this magazines contains code that can be compiled to viruses.
004...........................Simple encryption techniques and Leprosy-B
Editior, Technical Consultant - Hellraiser
Co-Editor, Theory Consultant - Bionic Slasher
Type Code: PNCK - Parasitic Non-Resident .COM Infector
Detection Method: ViruScan V64+, VirexPC, F-Prot 1.12+, NAV, IBM Scan 2.00+
Removal Instructions: Scan/D, F-Prot 1.12+, or Delete infected
The 163 COM Virus, or Tiny Virus, was isolated by Fridrik Skulason
of Iceland in June 1990. This virus is a non-resident generic
current directory. On bootable diskettes, this file will normally
be infected. Files are infected only if their original length is
infection occurred. Infected files will also always end with this
smallest MS-DOS virus known as of its isolation date.
OK, Theres the run down on the smallest MS-DOS virus known to man. As for
xor cx,cx ;clear cx - find only normal
what the virus does is use the DOS 4Eh function to find the firsy COM file
found it compares the virus id string (the virus jump instruction) to the
If they don't match the virus will infect the file. Using two key MS-DOS
- 5인용C++스터디/버튼과체크박스 . . . . 6 matches
CButton myButton1, myButton2, myButton3, myButton4;
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
ON_WM_CREATE()
ON_BN_CLICKED(1,OnButton1Click)
int CMy111View::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CView::OnCreate(lpCreateStruct) == -1)
// Create a push button.
myButton1.Create(_T("푸시 버튼"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
// Create a radio button.
myButton2.Create(_T("라디오 버튼"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,
// Create an auto 3-state button.
myButton3.Create(_T("3상태 버튼"), WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,
myButton4.Create(_T("체크박스"), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
void CMy111View::OnButton1Click()
||BST_UNCHECKED|| Button state is unchecked. ||
||BST_CHECKED|| Button state is checked. ||
||BST_INDETERMINATE|| Button state is indeterminate (applies only if the button has the BS_3STATE or BS_AUTO3STATE style). ||
void CMy111View::OnButton1Click()
check3=myButton3.GetCheck();
myButton2.SetCheck( BST_CHECKED );
- 5인용C++스터디/소켓프로그래밍 . . . . 6 matches
|| 전화가 걸려옴 || 연결 요청(Connect) ||
클라이언트측에서 서버에 접근하기 위해서는 단순히 소켓을 생성후 서버에 연결(connect) 하기만 하면 된다.
Socket 생성 -> 서버에 연결 시도(connect) -> 서버에 각종 명령을 전달
[클래스위저드]의 CListenSock에 가상 함수 OnAccept()를 추가한 후 다음 라인을 삽입한다.
[클래스위저드]의 CChildSock에 가상 함수 OnReceive()와 OnClose()를 추가한 후 다음 코드를 삽입한다.
다이얼로그가 초기화될 때 서버로 작동하도록 CServerDlg 클래스의 OnInit Dialog()함수에 다음 코드를 삽입한다.
서버와 동일한 방법으로 클라이언트 프로그램에서 사용할 소켓 클래스 CClientSock을 생성(기초 클래스: CAsyncSocket)한다. 그리고 나서 [클래스위저드]의 CClientSock에 가상함수 OnReceive()와 OnClose()를 추가한 후, 다음 코드를 삽입한다.
[클래스위저드]를 실행하여 CConnectDlg 클래스를 새로 생성한 후 CConnectDlg 클래스에 다음 변수를 추가한다.
그리고 [클래스위저드]의 CConnectDlg에 IDOK를 맵핑하여 사용자가 입력한 IP 주소를 멤버변수 m_strAddress에 저장한다.
void Connect();
#include "ConnectDlg.h"
void CClientApp::Connect()
CConnectDlg dlg;
m_pClient->Connect(dlg.m_strAddress, 7000);
m_pMainWnd->GetDlgItem(IDC_CONNECT)->EnableWindow(FALSE);
버튼 ID : IDC_SEND, IDC_CONNECT
[클래스위저드]의 CClientDlg에 IDC_CONNECT을 맵핑한 후 다음 코드를 삽입한다.
((CClientApp*)AfxGetApp())->Connect();
- Android/WallpaperChanger . . . . 6 matches
[[TableOfContents]]
* http://stackoverflow.com/questions/2169649/open-an-image-in-androids-built-in-gallery-app-programmatically
import android.content.Intent;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
//i.setType(MediaStore.Images.Media.CONTENT_TYPE);
i.setAction(Intent.ACTION_GET_CONTENT);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
* Wallpaper바꾸는데 Permission 필요하더라 (Androidmenifest.xml파일 수정 요함)
import java.io.IOException;
import android.widget.Button;
private static final Button Button = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1 = (Button)findViewById(R.id.button1);
- AntOnAChessboard . . . . 6 matches
[http://online-judge.uva.es/p/v101/10161.html 원문보기]
=== About [AntOnAChessboard] ===
|| 하기웅 || C++ || 40분 || [AntOnAChessboard/하기웅] ||
|| 허준수 || C++ || ? || [AndOnAChessBoard/허준수] ||
|| 문보창 || C++ || 1시간 || [AntOnAChessboard/문보창] ||
|| 김상섭 || C++ || 많이..ㅡㅜ || [AntOnAChessboard/김상섭] ||
|| 조현태 || C++ || ? || [AntOnAChessboard/조현태] ||
- CubicSpline/1002/test_NaCurves.py . . . . 6 matches
#format python
from wxPython.wx import *
class TestGivenFunction(unittest.TestCase):
def testOne(self):
actual = givenFunction(-1.0)
actual = givenFunction(x)
self.l = None
def testFunctionExistence(self):
self.assertEquals (l.getControlPointListX(), self.dataset)
listY.append(givenFunction(x))
self.assertEquals (l.getControlPointListY(), listY)
def testSubBasedFunctionOne(self):
self.assertEquals (l._subBasedFunction(x,0,1), expected)
self.assertEquals (l._subBasedFunction(x,0,2), expected)
self.assertEquals (l._subBasedFunction(x,0,3), expected)
self.assertEquals (l._subBasedFunction(x,0,0), 1)
def testSubBasedFunctionTwo(self):
self.assertEquals (l._subBasedFunction(x,1,0), expected)
self.assertEquals (l._subBasedFunction(x,1,2), expected)
self.assertEquals (l._subBasedFunction(x,1,3), expected)
- DermubaTriangle/조현태 . . . . 6 matches
double GetHouseDistance(POINT trianglePointOne, POINT trianglePointAnother)
return sqrt(pow(GetHousePointX(trianglePointOne) - GetHousePointX(trianglePointAnother), 2) +
pow(GetHousePointY(trianglePointOne) - GetHousePointY(trianglePointAnother), 2));
int houseNumberOne;
while ( cin >> houseNumberOne >> houseNumberAnother)
printf("%.3f\n", GetHouseDistance(GetTrianglePoint(houseNumberOne), GetTrianglePoint(houseNumberAnother)));
- HelpContents . . . . 6 matches
* HelpOnUserPreferences - 위키 사용자로 등록하고, 설정가능한 기본값을 입맛에 맞게 고쳐보세요.
* HelpOnPageCreation - 새 페이지 만드는 방법과 템플리트 이용하기
* HelpOnPageDeletion - 페이지 지우기
* HelpOnEditing - 페이지를 고치기
* HelpOnNavigation - 위키위키를 이리저리 돌아다녀보세요.
* HelpOnActions - 각 페이지에 대한 여러가지 조작 및 변형법
[[SlideShow(MoniWikiTutorial)]]
[[Navigation(HelpContents)]]
- OnceAndOnlyOnce . . . . 6 matches
See Also wiki:Wiki:OnceAndOnlyOnce , wiki:NoSmok:OnceAndOnlyOnce
- 김재현 . . . . 6 matches
int ThreeNOne(int aInput);
int ThreeNOneTwoNum(int aInput, int aInput2);
printf ("%d", ThreeNOneTwoNum(num1, num2));
int ThreeNOne(int aInput){
int ThreeNOneTwoNum(int aInput, int aInput2){
cycle_length = ThreeNOne(num1);
- DataCommunicationSummaryProject/Chapter5 . . . . 5 matches
[[TableOfContents]]
* extra spectrum과 새로운 modulation techniques으로써 가능. CDMA 선호(증가된 스펙트럼의 효율성과 자연스러운 handoff 메카니즘)
* Global roaming - 특별한 multimode phone에서만 가능
* 인터넷의 중요성을 느낀 후, Packet Switching Backbone에 기초한 인터넷 프로토콜을 제공하기로 요구사항 추가
* Voice(서킷) : 고정 전화기 수준의 음질. 소리 나는 메일, Conference Calling
* Messaging(패킷) : e-mail과 합쳐진, Extension of paging(뭘까)->(뭐긴 삐삐가 이메일도 가능하다는거지.ㅋㅋ). 지불과 전자 티켓팅
* Roaming : operation의 multiple modes - 각기 다른 3G System.
* cdmaOne과의 차이점 : 시간 동기화가 필요없다. GPS 필요없다. 마이크로셀 사용. negative feedback에 기초한, 보다 쉬운 파워 컨트롤 메카니즘 사용
=== TD-CDMA(Time Division W-CDMA) ===
* 일본 표준(1999's UMTS + 메세징 시스템 + content based billing)
* 2G 중 cdmaOne만이 CDMA이다. 이로부터 3G로 업글한 것을 CDMA-2000이라 한다.
* CDMA2000 : cdmaOne의 다중
=== 1X Enhanced Version ===
* 1xEV-DO(Data only) : HDR
* cdmaOne을 물려받음 - chip rate와 GPS 타이밍
* CDMA2000은 cdmaOne으로부터의 직접적인 업그레이드지만, 몇몇의 경쟁력있는 계획으로 구성되어 있다.
["DataCommunicationSummaryProject"]
- HelpOnAdministration . . . . 5 matches
== MoniWiki 관리하기 ==
* HelpOnInstallation - 설치하려면
* HelpOnConfiguration - 설정하려면
* HelpOnUpdating - 예전에 설치된 것을 새로운 버전으로 업데이트 하려면
* HelpOnCvsInstallation - CVS로부터 다운받아서 설치하려면
[[Navigation(HelpOnAdministration)]]
- 데블스캠프2011/넷째날/Android/송지원 . . . . 5 matches
import android.view.MotionEvent;
import android.view.View.OnClickListener;
import android.widget.Button;
public class DevilsCampAndroidActivity extends Activity implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
public void onClick(View v){
if(v.getId() == R.id.button1) btn = "button1";
if(v.getId() == R.id.button2) btn = "button2";
if(v.getId() == R.id.button3) btn = "button3";
public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
if(event.getAction() == MotionEvent.ACTION_DOWN){
- 레밍즈프로젝트/프로토타입/MFC더블버퍼링 . . . . 5 matches
#pragma once
Test는 OnDraw 상에서 하였다. OnDraw는 Invalidate를 통해서 OnPaint가 호출되면 자동으로 호출된다.
OnDraw의 경우 도큐먼트 클래스와 연관 될 수 있다.
void CDoubleBufferingView::OnDraw(CDC* pDC)
- 레밍즈프로젝트/프로토타입/파일스트림 . . . . 5 matches
|| m_hFile || Usually contains the operating-system file handle. ||
'''Construction'''
|| CFile || Constructs a CFile object from a path or file handle. ||
|| Duplicate || Constructs a duplicate object based on this file. ||
|| Open || Safely opens a file with an error-testing option. ||
|| Read || Reads (unbuffered) data from a file at the current file position. ||
|| ReadHuge || Can read more than 64K of (unbuffered) data from a file at the current file position. Obsolete in 32-bit programming. See Read. ||
|| Write || Writes (unbuffered) data in a file to the current file position. ||
|| WriteHuge || Can write more than 64K of (unbuffered) data in a file to the current file position. Obsolete in 32-bit programming. See Write. ||
'''Position'''
|| Seek || Positions the current file pointer. ||
|| SeekToBegin || Positions the current file pointer at the beginning of the file. ||
|| SeekToEnd || Positions the current file pointer at the end of the file. ||
|| GetPosition || Retrieves the current file pointer. ||
|| Rename || Renames the specified file (static function). ||
|| Remove || Deletes the specified file (static function). ||
|| GetStatus || Retrieves the status of the specified file (static, virtual function). ||
|| SetStatus || Sets the status of the specified file (static, virtual function). ||
void CFileioView::OnWritefile()
::MessageBox(NULL, "Can't Create testfile.txt !", "Warning", MB_OK | MB_ICONHAND);
- 오목/휘동, 희경 . . . . 5 matches
#pragma once
const int size = 30;
const int room = 30;
protected: // create from serialization only
// Operations
// ClassWizard generated virtual function overrides
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
// Generated message map functions
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
#ifndef _DEBUG // debug version in grimView.cpp
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- 정모/2011.4.4/CodeRace . . . . 5 matches
public class person {
static boolean isOnShip;
public person(String name){this.name = name;}
if(isOnShip != true)
isOnShip = false;
public class Raton {
person Luke = new person("루크");
person Raton = new person("레이튼");
person Bad = new person("나쁜아저씨");
Raton.city = "A";
Luke.isOnShip = true;
Raton.isOnShip = true;
Raton.moveCity();
Raton.moveCity();
char location1 = 'A';
char location2 = 'A';
char location3 = 'A';
cout << "레이튼의 현재 위치 " << location1 << endl;
cout << "루크의 현재 위치 " << location2 << endl;
cout << "나쁜 아저씨의 현재 위치 " << location3 << endl;
- 3N+1Problem/강희경 . . . . 4 matches
def TreeNPlusOne(aNumber):
TreeNPlusOne(aNumber)
def TreeNPlusOne(aNumber, aMin, aMax, aBinaryMap):
cycleLength = TreeNPlusOne(i, aMin, aMax, aBinaryMap)
def PreInspection(aMin, aMax, aBinaryMap):
PreInspection(min, max, binaryMap)
- CppUnit . . . . 4 matches
|| [[TableOfContents]] ||
a. Tools -> Options -> Directories -> Include files 에서 해당 cppunit
* Tools -> Options -> Directories -> Library files 에서 역시 lib
a. Project -> Settings -> C/C++ -> Preprocessor -> Additional include directories
a. Project -> Settings -> Link -> Input -> Additional Library directories
* Project Setting - Code Generation - Use Run-Time library 를 다음으로 맞춰준다.
#include <cppunit/extensions/testfactoryregistry.h>
#include <cppunit/extensions/HelperMacros.h>
CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase ); // TestSuite 를 등록하기. TestRunner::addTest 가 필요없다.
#include <cppunit/extensions/HelperMacros.h>
CPPUNIT_TEST ( testOne );
void testOne () {
=== Win32 API or Console 프로그래밍시 ===
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
CPPUNIT_TEST(testOne);
void testOne() {
CPPUNIT_TEST_SUITE_REGISTRATION (SimpleTestCase);
2) Questions related to Microsoft Visual VC++
2.1) Why does my application crash when I use CppUnit?
- DesignPatterns/2011년스터디/1학기 . . . . 4 matches
* 책을 읽으며 ["HolubOnPatterns/밑줄긋기" 밑줄을 긋자]
1. HolubOnPatterns 0장에 대해 함께 이야기했다. 나 혼자 0장을 안 읽어와서 민망했다. 1장은 꼭 읽어와야지.
1. High Cohesion Low Coupling과 SOLID(SRP, OCP, LSP, ISP, DIP)에 대해 다시 생각해보는 시간이 되었다.
1. SRP(Single Response Principle)에 대해 얘기하면서 '책임'이란 무엇인가에 대한 이야기가 나왔다. 삽질 경험이 없는 사람에게 객체지향 원칙을 설명할 때 '책임'이 무엇인지 어떻게 이해시켜야 할지 모르겠다. 오늘 얘기하면서 낸 결론도 경험이 없으면 이해하기 어렵다는 것…
* 2장 103쪽 전까지 읽어옵시다. 그리고 ["HolubOnPatterns/밑줄긋기" 밑줄을 그어요~]
1. MVC 모델에 맞춰 설계해야해서 [HolubOnPatterns]에서 좋다고 하는대로만 설계하지는 않음.
1. '''Control''' : Model과 View 사이의 정보 교환을 제어하는 클래스군. 모델군의 데이터를 뷰가 출력하는데 용이하도록, 뷰에서 받은 데이터를 모델에게 적합하도록 가공해준다.
- MatrixAndQuaternionsFaq . . . . 4 matches
[[TableOfContents]]
== The Matrix and Quaternions FAQ ==
Version 1.2 2nd September 1997
This FAQ is maintained by "hexapod@netcom.com". Any additional suggestions or related questions are welcome. Just send E-mail to the above address.
Contributions
Introduction I1: steve@mred.bgm.link.com
== Contents of article ==
Questions
Q7. What is the major diagonal matrix of a matrix?
Q13. How do I multiply one or more vectors by a matrix?
Q20. How do I calculate the inverse of a rotation matrix?
Q25. How do I calculate the inverse of a matrix using linear equations?
Q26. What is a rotation matrix?
Q27. How do I generate a rotation matrix in the X-axis?
Q28. How do I generate a rotation matrix in the Y-axis?
Q29. How do I generate a rotation matrix in the Z-axis?
Q32. How do I combine rotation matrices?
Q34. What is the correct way to combine rotation matrices?
Q35. How do I generate a rotation matrix from Euler angles?
Q36. How do I generate Euler angles from a rotation matrix?
- MineFinder . . . . 4 matches
[[TableOfContents]]
* 지뢰찾기 프로그램의 윈도우 핸들을 얻고 해당 메세지를 보내어서 지뢰찾기 프로그램을 구동하는 루틴 관련 SpikeSolution. (아.. UnitTest 코드 넣기가 애매해서 안넣었다. 궁리해봐야 할 부분같다.)
* 지뢰찾기 프로그램의 윈도우 핸들을 얻은뒤 DC를 얻은후 화면 캡쳐. 그리고 캡쳐한 비트맵을 근거로 하여 데이터로 변환하는 루틴 관련 SpikeSolution
* 지금쯤 다시 짜라고 한다면 TFP를 좀 더 제대로 추구할 수 있을 것도 같다. (이 점에서 TFP를 할때 SpikeSolution 에 대한 어느정도의 충분한 시간을 두는 점이 좋을 것 같다는 생각이 들었다. 초기 SpikeSolution 으로 해당 부분을 간단하게 대강 해보고, Test를 할 수 있는 부분에 대한 구체화하기.)
지뢰 버튼을 열고 깃발체크를 위한 마우스 클릭시엔 WM_LBUTTONDOWN, WM_RBUTTONDOWN 이고, 단 ? 체크관련 옵션이 문제이니 이는 적절하게 처리해주면 될 것이다. 마우스클릭은 해당 Client 부분 좌표를 잘 재어서 이를 lParam 에 넘겨주면 될 것이다.
* [http://zeropage.org/~reset/zb/download.php?id=KDP_board_image&page=1&page_num=20&category=&sn=&ss=on&sc=on&keyword=&prev_no=&select_arrange=headnum&desc=&no=57&filenum=1 1차일부분코드] - 손과 눈에 해당하는 부분 코드를 위한 간단한 예제코드들 모음. 그리고 지뢰찾기 프로그램을 제어하는 부분들에 대해 Delegation 시도. (CMinerControler 클래스는 처음 '막 짠' 코드로부터 지뢰찾기 제어부분 함수들을 클래스화한것임)
* [http://zeropage.org/~reset/zb/download.php?id=KDP_board_image&page=1&page_num=20&category=&sn=&ss=on&sc=on&keyword=&prev_no=&select_arrange=headnum&desc=&no=58&filenum=1 1차제작소스]
|| CMinerController || 지뢰찾기 프로그램에 대한 화면 캡쳐, 모드변환, 버튼 클릭 등의 제어를 한다 ||
|| CMineSweeper || 실질적인 두뇌에 해당되는 부분. CMinerController 와 CMinerBitampAnalyzer 를 멤버로 가지며, 이를 이용하여 게임상황분석, 지뢰찾기관련 판단 등을 한다 ||
void CMinerFinderDlg::OnButtonStart()
// TODO: Add your control notification handler code here
void CMinerFinderDlg::OnTimer(UINT nIDEvent)
CDialog::OnTimer(nIDEvent);
void CMinerFinderDlg::OnButtonStop()
// TODO: Add your control notification handler code here
ConvertBitmapToGameMode (pBitmap);
ConvertBitmapToData (pBitmap);
pDlg->PrintStatus ("Action : CheckFlag - %d rn", nRet);
pDlg->PrintStatus ("Action : OpenBlocks - %d rn", nRet);
pDlg->PrintStatus ("Action : Random Open rn");
- MoinMoinFaq . . . . 4 matches
[[TableOfContents]]
== "What is a Wiki?" questions ==
A Moin''''''Moin is a wiki provided by the python wiki program Moin''''''Moin.
To be honest, it is good for whatever you use it for. At
we have put up a wiki on our internal web site with
ideas, etc. for people to comment on. Some pages just sit there and
convey information. Other pages are an open invitation for discussion
a wiki can serve the same purpose as a discussion thread. You could
use a wiki page to collaboratively work on a project.
* Editability by anyone - A wiki page is editable by anyone with a web browser
* ability to add new information or modify existing information
=== How does this compare to other collaboration tools, like Notes? ===
feature is some kind of access control, to allow only certain groups
This is an important question. In general, wiki's have
possibility exists for accidental or conscious destruction or corruption
There are two main ways to devalue a wiki. One is through erasure
and the other is through corruption. Dealing with erasure is not terribly
difficult, because there is a change log (and back versions) of every page
maintained in a location inaccessible to web users. Thus, when page
deletions or major content erasures are detected (which should be fairly
- Ones . . . . 4 matches
=== About [Ones] ===
|| [문보창] || C++ || 30분 || [Ones/문보창] ||
|| [1002] || Python || 25분 || [Ones/1002] ||
|| [정진경] || C || ? || [Ones/정진경] ||
- OurMajorLangIsCAndCPlusPlus/XML/조현태 . . . . 4 matches
* C...C++이랑 많이 다르구나~ @.@ const, bool형이 없고 형체크가 정확하지 않아서 조마조마 했다는..ㅎㅎ
char* contents;
bool isOneTable;
const char DEBUG_TEXT[] = "<zeropage>\n <studies>\n <cpp>\n <instructor>이상규</instructor>\n <participants>\n <name>김상섭</name>\n <name>김민경</name>\n <name>송수생</name>\n <name>조현태</name>\n </participants>\n </cpp>\n <java>\n <instructor>이선호</instructor>\n <participants>\n <name>김민경</name>\n <name>송수생</name>\n <name>조현태</name>\n </participants>\n </java>\n <mfc>\n <participants/>\n </mfc>\n </studies>\n</zeropage>\n";
SReadBlock* CreateNewBlock(const char* name, const char* contents)
if (NULL == contents)
newBlock->contents = NULL;
newBlock->contents = (char*)malloc(sizeof(char) * (strlen(contents) + 1));
strcpy(newBlock->contents, contents);
newBlock->isOneTable = FALSE;
const char* CreateTree(SReadBlock* headBlock, const char* readData)
const char* nameEndPoint = strchr(readData, '>');
myPoint->isOneTable = TRUE;
const char* contentsEndPoint = strchr(readData, '<');
char* textBuffur = (char*)malloc(sizeof(char) * (contentsEndPoint - readData + 1));
strncpy(textBuffur, readData, contentsEndPoint - readData);
textBuffur[contentsEndPoint - readData] = 0;
return contentsEndPoint;
void ShowTree(SReadBlock* showBlock, int tabCount, bool* isLastContents)
*isLastContents = FALSE;
- PrimaryArithmetic/1002 . . . . 4 matches
def carryCount(one,two):
def hasCarry(one,two):
return one+two >= 10
def testCarryOne(self):
def carryCount(one,two):
oneList,twoList = toList(one),toList(two)
for eachOne,eachTwo in zip(oneList,twoList):
if hasCarry(eachOne,eachTwo):
def carryCount(one,two):
oneList,twoList = withNullList(one),withNullList(two)
if hasCarry(oneList[idx],twoList[idx]):
oneList[idx-1] += 1
one,two,expected= eachTest
self.assertEquals(expected,carryCount(one,two))
def carryCount(one,two):
oneList,twoList = withNullList(one),withNullList(two)
if hasCarry(oneList[idx],twoList[idx]):
oneList[idx-1] += 1
def hasCarry(one,two):
return one+two >= 10
- 고한종/on-off를조절할수있는코드 . . . . 4 matches
int onOff;
char keyOnOff;
onOff=1;
while(onOff)
keyOnOff=getch();
//이 부분은 scanf_s("%c",&keyOnOff);로도 쓸 수 있지만 scanf_s와 scanf의 차이도 잘 모르고 scanf는 사실 매우 어려운 함수;
switch(keyOnOff)
onOff=1;
onOff=0;
- 데블스캠프2005/금요일/OneCard/이동현 . . . . 4 matches
public class OneCard {
boolean isOneCard = false;
OneCard game = new OneCard();
- 만년달력/손동일,aekae . . . . 4 matches
int year,month;
cin >> year >> month; // 입력받음
int ThirtyOne=0;
for (i=1; i<month; i++) // ThirtyOne : month 이전의 달에서 31일이 있는 달의 갯수
ThirtyOne++;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
else if (month == 4 || month == 6 || month == 9 || month == 11)
if (month > 2) // 윤년인지 평년인지
int day = (((year-1) * 365 + two) + ((month-1) * 30 + ThirtyOne - XOR)) % 7;
- 바퀴벌레에게생명을 . . . . 4 matches
[[TableOfContents]]
CBug클래스를 생성하여 바퀴벌레의 움직임을 나타내는 멤버함수(Move)와 바퀴벌레의 위치와 방향을 나타내는 멤버변수(CPoint position, int direction)를 생성.
다큐에서 CBug타입의 멤버 변수를 생성한다. 그리고 뷰에서 방향키의 키이벤트(OnKeyDown)를 받으면 다큐의 CBug 타입의 멤버 변수의 Move함수를 호출하고 변경된 position과 direction을 OnDraw에서 받아서 알맞은 그림을 잘라내서 뷰에 그린다.
다큐에 RandomWalking함수를 제작하고 뷰에서 스페이스바의 키이벤트가 일어나면 0.3초의 타이머가 생성(OnTimer)되어 RandomWalking함수를 0.3마다 호출하고 변경된 위키와 방향대로 뷰에 그려준다.(OnDraw) 다시 스페이스바를 누르면 움직임을 멈춘다.
- 현재 위키에 어떤 습관이 생기고 있는걸까? . . . . 4 matches
우리가 현재 OneWiki(가제 이하 OneWiki로 표현)라는 공원을 돌아다닌지(또는 길을 설계한지) 일주일 이상의 시간이 흐르고 있는데, 그동안 자신들이 어떠한 경로를 만들어내려고 했는지, 또는 어떠한 편한 경로들이 있고 돌아보면서 어떠한 느낌을 받는지 생각해 봤으면 합니다.
* 그것이 왜? 편한 길인가 앞으로도 편할수 있는 길인가? 나쁜점은 왜 나쁜가? 하는 것을 이야기 하자는 것이지요. 저 이야기에는 분명 많은 부분이 생략되었을 겁니다. 이 길을 내도 되는건가? 왜 사람들이 많이 다닐까? 하는 고민들이요. OneWiki 에 길을 보면서 생각해 BoA요. --NeoCoin
* 외국에서 개발되어서 어쩔수 없다기 보다, 현재 Web 인코딩을 그대로 filename에 가져다 쓰기 때문입니다. python 스크립트 만들어저 지워요. --NeoCoin
* 좀 이상한(...라기보다는 제로위키에서였다면 생소했을) 페이지(ex) [InterestingCartoon], [GoodMusic], [창섭이 환송회 사진])를 만들어봤다. --[인수]
지금 OneWiki 는 ZeroWiki 에 대해서 어떠한 차별점을 만들어내었습니까? --[1002].
- ACM_ICPC/2011년스터디 . . . . 3 matches
[[TableOfContents]]
* ACM-ICPC 2011 Asia Daejeon Regional에 도전한다.
* 네.. 이번주는 대략적인 것들을 결정하는 시간이었지요. Jolly Jumper를 제가 그냥 임의로 찍어서 문제로 하기로 해서, 5시 스터디가 끝나자마자 1시간동안 열심히 코딩해서 완성했습니다. ..그런데 Wrong Answer. 으아아ㅏ아아아아ㅏ 2시간동안 진경이랑 삽질하다 얻은 결론: 얘내들은 입출력방식이 달라서 우리가 짠 것만으로 되는게 아니고 계속 입력을 받도록 해야한다. 그리고 입력이 끝나면 프로그램이 종료되어야 하는데 뭐 -1?인가 그게 뜨도록 하려면 띄어쓰기같은 것도 없어야한다. ...결국 답은 대략 맞았지만 저런 형식때문에 2시간동안 고민한거죠. JollyJumpers하시는 형/누나들 참고하세요 ;ㅅ; ..아무튼 ACM스터디가 재밌게 잘 진행되었으면 좋겠어요~ -[김태진]
* 제 코드에 무엇이 문제인지 깨달았습니다. 입출력이 문제가 아니었어요. 숫자 범위 괜히 0이거나 3000 이상이면 "Not jolly" 출력하고 break하니까 이후에 더 적은 숫자가 들어온 경우가 무시당해서 Wrong Answer(출력 하든 안하든, 0 제외하고 3000 이상일 때만 하든 다 Wrong..;ㅅ;) 입력을 하지 않을 때까지 계속 받아야 하는데, 임의로 끊었더니 그만..... 그리고 continue로 해도 마찬가지로 3000을 제외하고 입력 버퍼에 남아있던 것들이 이어서 들어가서 꼬이게 되는! Scanner을 비우는 거는 어찌 하는 걸까요오;ㅁ;? 쨋든 그냥 맘 편하게 조건 지우고 Accepted ㅋㅋ 보증금 및 지각비 관련 내용은 엑셀에 따로 저장하였습니다. - [강소현]
* 하루 전날까지 표를 보신 분들은 알겠지만 원래 하려던건 RSA Factorization이었는데 문제가 문제가 있더군요(??). 그래서 어느 조건에 맞춰야 Accept가 될지 알 수도 없고 괜히 168명의 사람들만 도전한거 같지는 않아서 일단은 pass하고 다른 문제를 풀었습니다. 기회가 되면 다음엔 prime을 이용한 문제를 좀 풀어보고 싶어요. 물론 Factorization의 특성상 시간이 오래 걸리는 점이 있어서 좋은 알고리즘을 고안해야 겠지만.. World Cup 문제에 대한 후기는.. 음.. 골라놓고 막 머리싸매고 풀어보니 별거 아닌 문제라 웬지 모임에서 학우들의 원성을 살것만 같은 느낌이에요. 엉엉..ㅠㅠ - [지원]
* 아, 그리고 100만년만에 로그인해보니 An Easy Problem이 '''Wrong Answer''' 상태로 남아 있더군요. 다시 풀어봐야겠....-_-;; - [지원]
* [http://poj.org/problem?id=2551 2551 Ones/송지원]
* [Ones/송지원]
* [Ones/정진경]
* [정진경] - 솔저 풀이를 공유를 했으나 로또는 뭐 쉬워서인지 그냥 넘어가버렸네요. 구현 방법에만 차이가 있을 것 같으니 코드 공개만 해도 될 것 같습니다. 후기를 늦게 써서 4문제를 다 억셉트하고 나서 쓰네요. 찝찝한게 2159 Ancient Cipher 문제 조건에서. Substitution Cipher는 '일반적으로' 키가 정수 1개인건가요? 아니면 각 알파벳을 일대일 매칭시키는 배열인가요? 이에 따라 알고리즘이 바뀌는데, 문제 읽고 키가 정수 1개인 것인줄 알고 했는데 제 알고리즘이 틀렸는지 문제를 잘못 이해한건지 WA 왕창 먹고 키가 배열인걸 전제로 하고 알고리즘 짜서 AC... 흑흑 선입견이 문제인가
* 예제가 단순히 ABC를 CDE처럼 2 더한거로 되어있어서 단순히 substitution cipher 중에서도 시저 사이퍼를 썼으려니 하고 푸는 뻘짓을 한ㅠㅠ 그냥 알파벳을 일대일 대칭하는 거임. 말 그대로 substitution이 대칭이니 ;ㅅ; 간단히 ABC가 RHN으로 변한다 해도 YES가 떠야하는거 ;ㅅ; A->R, B->H, C->N으로 바뀐거지. - [강소현]
* [권순의] - 얼라 이거 안 쓰고 있었네 (흠흠) 솔져는 참.. 어이없게 끝났네요. 결국 마무리도 못하고 -_-;; 이번 문제는 어렵지는 않았는데,, 왜 Presentation Error가 뜨는거지 이러고 있습니다. -_-;;
* [김태진] - 진경이 출생의 비밀..은 아니고 KOI 은상의 배경이 된, 세 용액이라는 작년 정올 1번문제를 풀어보았습니다. 다들 알고리즘 복잡도는 무시하고 Time Limit Exceeded라도 띄워보자고 짜는데, 이상하게 Wrong Answer.. 값이 int범위에서 해결되지 않아 줄줄 새고 있었습니다-- 범위를 제대로 생각해봐야겠다는 것을 염두함과 동시에 복잡도에 관해서도 좀 더 생각해봐야겠네요.
* [강소현] - java가 그냥 느리기만 한 것은 아니었어! long 만세~ㅁ~ 하면서 time limit exceeded를 띄웠지요. 자...이제 시간 복잡도를 고려해야 할텐데...결국은 원점으로...ㅠㅠ
- BeeMaja/조현태 . . . . 3 matches
const int PLUS_X[6] = {-1, +0, +1, +1, +0, -1};
const int PLUS_Y[6] = {+0, -1, -1, +0, +1, +1};
bool isAddOne = FALSE;
if (4 == i && FALSE == isAddOne)
isAddOne = TRUE;
- DataCommunicationSummaryProject/Chapter4 . . . . 3 matches
[[TableOfContents]]
== PCS(Personal Communication Service) ==
* Digital Cellular - 가장 선호. Text-only.
* Data Only
* Noncelluar - 긴급 서비스, 대형 사업에 사용.
* cdmaOne 은 예외.
== GSM(Global System for Mobile Communications) ==
== cdma One ==
== GTE Airfone ==
DataCommunicationSummaryProject
- DoubleBuffering . . . . 3 matches
[[TableOfContents]]
void CArcanoidView::OnInitialUpdate()
CView::OnInitialUpdate();
// OnDraw 함수 내부
["zennith"] : 뜬금없는 소리이고, 고루한 이야기 입니다만, PCI 란 기술이 처음 소개되었을때 꽤 미래지향적인 기술로 각광받았던 것이 PCI bus mastering 이란 기술인데.. 무엇인고 하니, pci 채널로 연결되어있는 기기들끼리 서로의 메모리에 DMA 를 할 수 있었던 것이었죠. 대표적으로 이 기술이 사용된 예(라기보단 제가 알고있는 단 하나의 예)는 TV수신카드에서 사용되는 것이었는데요. TV 어플리케이션에서 TV 가 표시될 부분의 region 을 정해놓으면 TV 수신카드에서 그부분에 해당하는 비디오카드 메모리로 직접 쏴주는.. 그런 기술이었는데.. 더블버퍼링을 보니 갑자기 그 생각이 나는군요. 음.. 요즈음은 다들 agp 를 써서.. 저 pci bus mastering 이란 기술이 아직도 살아남아있는건지.. 잘 모르겠군요.
- FocusOnFundamentals . . . . 3 matches
'''Software Engineering Education Can, And Must, Focus On Fundamentals.'''
When I began my EE education, I was surprised to find that my well-worn copy of the "RCA
Tube Manual" was of no use. None of my lecturers extolled the virtues of a particular tube or type
Clearly, practical experience is essential in every engineering education; it helps the students to
taught concepts of more lasting value that, even today, help me to understand and use new
mentioned. "Java", "web technology", "component orientation", and "frameworks" do not appear.
to experiment with some new ones. However, we must remember that these topics are today's
replacements for earlier fads and panaceas and will themselves be replaced. It is the responsibility
Students usually demand to be taught the language that they are most likely to use in the world outside (FORTRAN or C). This is a mistake. A well taught student (viz. one who has been taught a clean language) can easily pick up the languages of the world, and he [or she] will be in a far better position to recognize their bad features as he [or she] encounters them.
지금 공부하고자 하는 것이 사장될 기술일까 걱정됩니까? 정말 뜰 수 있을까 의심이 갑니까? 많은 사람들은 자바가 사장될 것이라고 말했습니다. 많은 사람들은 블루투스가 뜰 것이라고 말했습니다. 어떻게 해야 하나요? FocusOnFundamentals. 오라클만 후벼파기보다 RDB의 근본을 후벼파면, 자바만 후벼파기보다 OOP의 근본을 후벼파면 적어도 향후 5년간은 든든할 것입니다. 이런 근본을 후벼파는 것은 언제할 수 있나요? 학생 때 할 수 있습니다. 사회에 나가면 하기 어렵나요? 그렇습니다. 미리 지엽에만 매달릴 필요는 없습니다. 단, 예외는 있습니다. 공부하고 싶어서 밤에 자다가도 가슴이 뛴다면 그것이 지엽이건 근본이건 매진 하십시오. 후회하지 않을 겁니다. 하지만 마냥 해야할 것 같아서, 나중에 취직에 도움이 될 것 같아서, 남들 다 하니까 등등의 잡다한 기술을 주워담는 어리석음은 범하지 마십시오.
사실 제 이야기는 수사적인 차원에서 약간 과장된 것일지도 모르겠습니다. FocusOnFundamentals가 적용되는 범위를 꼭 한계지을 필요는 없을 듯 싶습니다. 자바를 공부한다면 자바의 "fundamentals"에 더 집중을 할 수도 있겠죠. 하지만 늘 "큰 그림"을 보도록 노력해야 할 것입니다. 내가 공부하는 것 속에서 "fundamentals"는 무엇이고, 내가 공부하는 것이 속한 범주에서 "fundamentals"는 무엇인지.
A: Most students who are studying computer science really want to study software engineering but they don't have that choice. There are very few programs that are designed as engineering programs but specialize in software.
I would advise students to pay more attention to the fundamental ideas rather than the latest technology. The technology will be out-of-date before they graduate. Fundamental ideas never get out of date. However, what worries me about what I just said is that some people would think of Turing machines and Goedel's theorem as fundamentals. I think those things are fundamental but they are also nearly irrelevant. I think there are fundamental design principles, for example structured programming principles, the good ideas in "Object Oriented" programming, etc.
--David Parnas, from http://www.cs.yorku.ca/eiffel/teaching_info/Parnas_on_SE.htm
- Garbage collector for C and C++ . . . . 3 matches
[http://www.hpl.hp.com/personal/Hans_Boehm/gc/ 홈페이지]
* 유닉스나 리눅스에서는 "./configure --prefix=<dir>; make; make check; make install" 으로 인스톨 할수 있다.
* -DGC_OPERATOR_NEW_ARRAY -DJAVA_FINALIZATION 을 CFLAGS 에 추가.
# objects should have been explicitly deallocated, and reports exceptions.
# Finalization and the test program are not usable in this mode.
# gc.h before performing thr_ or dl* or GC_ operations.)
# -DGC_DGUX386_THREADS enables support for DB/UX on I386 threads.
# of objects to be recognized. (See gc_priv.h for consequences.)
# initialization time.
# -DSMALL_CONFIG tries to tune the collector for small heap sizes,
# usually causing it to use less space in such situations.
# Incremental collection no longer works in this case.
# -DLARGE_CONFIG tunes the collector for unusually large heaps.
# Necessary for heaps larger than about 500 MB on most machines.
# -DDONT_ADD_BYTE_AT_END is meaningful only with -DALL_INTERIOR_POINTERS or
# is normally more than one byte due to alignment constraints.)
# -DDONT_ADD_BYTE_AT_END disables the padding.
# implementations, and it sometimes has a significant performance
# programs that call things like printf in asynchronous signal handlers.
# This is on by default. Turning it off has not been extensively tested with
- HelpOnLinking . . . . 3 matches
#keywords inter wiki,moniwiki,wiki,wiki name,링크
외부 링크는 {{{http://kldp.org}}}같이 그대로 적어놓으면 '''자동'''으로 http://moniwiki.kldp.org 라고 링크가 걸립니다. 여기서 주의할 점은, 링크를 적을때 한글 토씨를 그냥 붙여 적을 경우에 한글까지 링크가 걸리게 됩니다. 이럴 경우에는 {{{[http://moniwiki.kldp.org]}}}라고 적으면 [http://moniwiki.kldp.org]와 같이 '''강제'''로 링크될 URL을 지정해줘서 자동으로 링크가 걸리지 않게 합니다. 강제로 링크를 걸러줄 경우는 모니위키에서는 그 링크 앞에 작은 지구 아이콘이 생깁니다.
외부링크를 항상 새 창으로 열게하려면 `config.php`에 {{{$external_target="_blank";}}}라고 지정해 주어야 합니다.
<!> 대부분의 브라우져에서 {{{<Control>}}}키를 누고 링크를 클릭하면 새창으로 링크가 열리는 기능을 지원합니다.
예를 들어 {{{http://moniwiki.kldp.org/imgs/moniwiki-logo.png}}}라고 적으면 http://moniwiki.kldp.org/imgs/moniwiki-logo.png 처럼 보이게 됩니다. 이 경우 역시 띄어쓰기를 하지 않으면 조사까지 링크가 걸리게 되고 그림이 자동으로 들어가지 않게 됩니다. 이 경우는 강제로 꺽쇠로 묶어주면 즉, {{{[http://moniwiki.kldp.org/imgs/moniwiki-logo.png]}}}라고 쓰면 [http://moniwiki.kldp.org/imgs/moniwiki-logo.png]와 같이 되고, 그림으로 들어가지 않는 대신에 링크를 그대로 보여줍니다.
위키위키에서는 외부의 위키 혹은 위키위에 준하는 다른 사이트를 좀 더 쉽게 연결하는 문법을 제공합니다. 예를 들어, {{{http://moniwiki.kldp.org/wiki/FrontPage}}}라고 링크를 거는 대신에 {{{MoniWiki:FrontPage}}}라고 링크를 걸면 MoniWiki:FrontPage 처럼 표시가 됩니다. 이를 인터위키 연결이라고 합니다.
`{{{MoniWiki:FrontPage}}}` 와 `{{{wiki:MoniWiki:FrontPage}}}`는 똑같습니다. 여기서 인터위키를 뺀 {{{wiki:FrontPage}}}는 {{{FrontPage}}}와 똑같습니다. (모인모인 1.0.x에서 지원)
만약 다른 이름으로 보이게 하려면 {{{[wiki:MoniWiki:FrontPage 대문]}}}과 같은 식으로 쓰면 `{{{MoniWiki:FrontPage}}}`로 연결되고 `[wiki:MoniWiki:FrontPage 대문]`이라고 보여지게 됩니다.
일반 위키페이지의 경우에도 마찬가지 방식으로 {{{[wiki:FrontPage 대문]}}}이라고 쓰면 `FrontPage`로 연결되고 `대문`으로 표시됩니다.
특별히 이 경우 {{{[wiki:FrontPage 대문]}}}은 {{{[:FrontPage 대문]}}}과 똑같습니다. (모니위키 1.1.4 확장)
앞부분에서도 언급한 내용이지만, 자동으로 링크가 걸릴 경우 URL 주소 되에 공백을 넣어주거나, <http://moniwiki.kldp.org/wiki.php/FrontPage>와 같이 연결해주어야 합니다. 정리해보면
* 인용부호로 묶는다. "http://moniwiki.kldp.org"처럼 => bug
지원되는 URL 형식: `http:`, `https:`, `ftp:`, `nntp:`, `news:`, `mailto:`, `telnet:`, `file:`. (이것을 확장하는 방법은 HelpOnConfiguration 참조)
이와같은 기본 형식과 함께, 모인모인/모니위키에서 지원: `wiki:`, `attachment:`. "`wiki:`" 는 내부링크 혹은 인터위키 링크를 뜻합니다. 따라서 `MoniWiki:FrontPage` 와 `wiki:MoniWiki:FrontPage`는 똑같습니다. 주의할 점은 "`wiki:`" 형식은 괄호로 연결되는 링크의 경우 반드시 사용해야 합니다. `attachment:`는 파일 첨부를 위해 사용됩니다.
그밖에 위키 문법은 HelpOnEditing 페이지를 참조하세요.
* http://moniwiki.sourceforge.net/
* [http://moniwiki.sourceforge.net/]
* [http://moniwiki.sourceforge.net/ MoniWiki Sourceforge Homepage]
* http://moniwiki.sourceforge.net/imgs/moniwiki-logo.gif
* [http://moniwiki.sourceforge.net/imgs/moniwiki-logo.gif]
- HelpOnMacros . . . . 3 matches
[[TableOfContents]]
매크로는 위키 페이지에 특수한 기능을 집어넣는 확장입니다. 대부분의 위키페이지는 매크로기능을 사용하지 않고 있지만 경우에 따라서 이러한 특수한 기능이 필요할 때가 있습니다. 예를 들어 RecentChanges 페이지에는 RecentChanges매크로를 사용하고 있고, SystemInfo 페이지에는 SystemInfo 매크로를 사용하고 있습니다. 각 페이지를 편집하거나 [[Icon(info)]]를 눌러 이전 정보로부터 페이지 소스를 보시면 매크로를 어떻게 사용하고 있는지를 보실 수 있습니다.
매크로는 {{{[[MacroName]]}}}과 같은 문법을 사용합니다. 매크로에 대한 인자가 필요한 경우가 있는데 각 매크로에 대한 자세한 설명은 해당 페이지에서 확인하실 수 있습니다.
위키 문법이 궁금하시면 HelpOnEditing 페이지를 참조하세요.
{{{[[MacroName]]}}} 혹은 인자가 필요한 경우에는 {{{[[MacroName(arg1,arg2,arg3...)]]}}}처럼 사용합니다.
이렇게 사용하려면 다음과 같은 설정을 `config.php`에 넣어주셔야 합니다.
||{{{[[TableOfContents]]}}} || 목차 매크로 || 현재 보고계신 페이지에서 사용중입니다. ||
||{{{[[Icon(image)]]}}} || 시스템 아이콘 보여주기 || HelpOnNavigation ||
[[Navigation(HelpOnEditing)]]
- JSP/SearchAgency . . . . 3 matches
java.io.IOException, java.util.Date,
out.write("<form method=post action=SearchAgency.jsp>");
class OneNormsReader extends FilterIndexReader {
public OneNormsReader(IndexReader in, String field) {
public byte[] norms(String field) throws IOException {
String field = "contents";
reader = new OneNormsReader(reader, normsField);
continue;
if (queries != null) // non-interactive
String path = request.getContextPath();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
- MFC/Socket . . . . 3 matches
[[TableOfContents]]
// member functions
// ClassWizard generated virtual function overrides
virtual void OnAccept(int nErrorCode);
// Generated message map functions
// NOTE - the ClassWizard will add and remove member functions here.
void COmokView::OnServercreate()
LRESULT COmokView::OnAcceptClient(WPARAM wParam, LPARAM lParam)
// accept to connect
* m_dataSocket.Connect(dlg1.m_strIpAddress, createBlkFile)
// request to connect
if(!m_dataSocket->Connect(dlg1.m_strIpAddress, 2000))
- MoinMoinTodo . . . . 3 matches
This is a list of things that are to be implemented. If you miss a feature, have a neat idea or any other suggestion, please put it on MoinMoinIdeas.
To discuss the merit of the planned extensions, or new features from MoinMoinIdeas, please use MoinMoinDiscussion.
A list of things that are added to the current source in CVS are on MoinMoinDone.
Contents: [[TableOfContents]]
* add a nice progress page, while the dictionary cache is built
* Macro that lists all users that have an email address; a click on the user name sends the re-login URL to that email (and not more than once a day).
* Now that we can identify certain authors (those who have set a user profile), we can avoid to create a backup copy if one author makes several changes; we have to remember who made the last save of a page, though.
* Implement the update script (copying new images etc.) described elsewhere on this page or MoinMoinIdeas.
* Replace SystemPages by using the normal "save page" code, thus creating a backup copy of the page that was in the system. Only replace when diff shows the page needs updating.
* Other things like color, icons, menu?
* On request, send email containing an URL to send the cookie
* Steal ideas from [http://www.usemod.com/cgi-bin/mb.pl?action=editprefs MeatBall:Preferences]
* a CSS switch (needs more work on the formatter issue to really work)
* configurable fonts, font sizes etc. (copy master CSS file to a user one, and send that)
* Add a link to Wiki:EditThePageSimultaneously (or a link to a local copy) to the edit conflict message.
* ProcessingInstructions
* Remember when someone starts to edit a page, and warn when someone else opens the same page for editing
* macro for the server time/date (pass the strftime string as an optional argument)
* look at cvsweb code (color-coded, side-by-side comparisons)
* or look at viewcvs www.lyra.org/viewcvs (a nicer python version of cvsweb with bonsai like features)
- MoniWikiPo . . . . 3 matches
# MoniWiki message file
# Copyright (C) 2003-2006 Free Software Foundation, Inc.
# Won-kyu Park <wkpark@kldp.org>, 2003-2006.
"Project-Id-Version: MoniWiki 1.1\n"
"POT-Creation-Date: 2006-01-10 19:47+0900\n"
"PO-Revision-Date: 2003-04-29 19:00+0900\n"
"Last-Translator: Won-kyu Park <wkpark@kldp.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Upload new Attachment \"%s\" on the \"%s\""
msgid "BabelFish Translation"
msgid "Error: Don't make a clone!"
msgid "Don't add a signature"
msgid "<b>horizontal rule</b> ---- is not applied on the blog mode."
msgid "Anonymous"
msgid "No older revisions available"
msgid "Version info is not available in this wiki"
msgid "Difference between versions"
msgid "Context search."
- MoreMFC . . . . 3 matches
[[TableOfContents]]
그럼.. to be continue.. [[BR]]
wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);
hwnd = CreateWindow (_T("MyWndClass"), "SDK Application",
afx_msg void OnPaint ();
// CMyApp member functions
// CMainWindow message map and member functions
ON_WM_PAINT ()
Create (NULL, _T ("The Hello Application"));
void CMainWindow::OnPaint ()
떡하니 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]]
그리고, 그 다음으로 진행되는 것이. CMainWindow에 있는 OnPaint라는 함수. window의 client 영역에 무언가를 그리는 함수가 호출된다. (그 전에 이것 저것 많이 있겠지만... 뭐 매크로를 통해 messagemap 관련 entry라던지.. 이런것들을 선언해 주는 작업.. --a) 그래서, DrawText를 이용해 화면 중앙에 "Hello, MFC"를 그린다. 그러면 이 프로그램의 기능(?)은 끝이다.[[BR]]
- OOP/2012년스터디 . . . . 3 matches
[[TableOfContents]]
int CalDay(int year,int month, int date);
int PrintOutMonth(int year,int month,int line);
int isEvent(int month, int date);
int eMonth,eDate;
nLine=PrintOutMonth(year,i,nLine);
scanf("%d %d",&eMonth,&eDate);
evt[count].M=eMonth;
int CalDay(int year,int month,int date=1)
if((month==1 || month==2) && isLeafYear==true) month+=12;
result=yCode+mCode[month]+date;
int PrintOutMonth( int year, int month, int line)
gotoxy(0*CELL,line); printf("%d - %d",year,month);
if(isLeafYear==true&&month==2) eDay=mEnd[0];
else eDay=mEnd[month];
week=CalDay(year,month,day);
if(isEvent(month, day)==0)
int isEvent(int month, int date)
if(evt[i].M==month && evt[i].D==date)
// Created by 김 태진 on 12. 1. 10..
- ScheduledWalk/석천 . . . . 3 matches
[[TableOfContents]]
=== Version 0.1 - 프로그램의 가장 추상적 단계 ===
=== Version 0.2 - Refinement ===
InputStartRoachPosition();
void InputStartRoachPosition() {
=== Version 0.3 - Refinement More ===
void InputStartRoachPosition();
InputStartRoachPosition();
void InputStartRoachPosition() {
=== Version 0.4 - Implementation : Input ===
구현 순서에 대한 원칙을 잡았으면 구현을 해봅니다. 일단 Input 부분을 구현하기로 정해졌고요. (순서상 가장 왼쪽) 그 중 가장 깊이가 깊은 InputBoardSize, InputStartRoachPosition, InputRoachJourney 중 InputBoardSize 를 구현합니다.
Input 에서 테스트해본 결과 값이 잘 출력되는군요. 그럼, 계속해서 Input의 다른 함수들인 InputStartRoachPosition(), InputRoachJourney() 에 대해 계속 구현을 해보죠.
IntPair InputStartRoachPosition() {
IntPair position;
position.n1 = startRow;
position.n2 = startCol;
return position;
Input 부분 Implementation 1차 완료된 모습은 이러했습니다.
const int MAX_JOURNEY_LENGTH = 1000;
IntPair InputStartRoachPosition();
- ScheduledWalk/창섭&상규 . . . . 3 matches
* 다음에 가야 할 방향을 얻을 수 있다.(CurrentPosition, GetNextDirection)
* 판 위에 올라갈 수 있다.(MyBoard, GoOnBoard) | 판(Board)
* 여정이 끝나거나 판의 모든 곳에 자취가 남을때까지 여정에 따라 판 위를 움직일 수 있다.(CurrentLocation, Walk) | 여정(Journey), 판(Board)
* 바퀴벌레의 시작위치를 말해줄 수 있다.(GetRoachStartLocation)
struct Location
int CurrentPosition;
CurrentPosition=0;
int GetNextDirection()
return JourneyArray[CurrentPosition++];
return (CurrentPosition==Length);
void LeaveTrace(Location location)
BoardArray[location.y][location.x]++;
Location CurrentLocation;
void GoOnBoard(Board *board, Location startlocation)
CurrentLocation=startlocation;
MyBoard->LeaveTrace(startlocation);
int direction;
direction=journey->GetNextDirection();
CurrentLocation.x+=move[direction][0];
CurrentLocation.y+=move[direction][1];
- VendingMachine_참관자 . . . . 3 matches
int Money;
void ProcessMoney();
void On();
if (Money >= Price[i]){
Money=0;
void VendingMachine::ProcessMoney()
Money+=m;
printf("Current Money is %d\n",Money);
if (Money<MinPrice) return;
if (Money >=Price[SM]){
Money-=Price[SM];
printf("CurrentMoney is %d\n",Money);
printf("Returned Money is %d\n",Money);
Money=0;
void VendingMachine::On()
ProcessMoney();
v.On();
- WeightsAndMeasures/황재선 . . . . 3 matches
continue
def testOneData(self):
def testOneData2(self):
def testOneData3(self):
- ZeroPage . . . . 3 matches
* 2016 ACM_ICPC Daejeon Regional 대회 동상 수상!
* 2014 ACM_ICPC Daejeon Regional 대회 출전
* 2013 ACM_ICPC Daejeon Regional 대회 출전
* team 'AttackOnKoala' HM : [강성현], [정진경], [정의정]
* team 'AttackOnKoala' 32등 : [강성현], [정진경], [정의정]
* 11회 중앙대학교 프로그래밍 경진대회(Programming Championship)
* 2012 중앙대학교 S/W Contest
* 장려상(4등) : Online Judge - [정진경],[추성준]
* 장려상(4등) : 안드로이드 컨트롤러 Application - [이원희]
* 2012 ACM_ICPC Daejeon Regional 대회 출전
* team 'HONGHAI' 63등 : [정진경], [정의정], [고한종]
* 2011 ACM_ICPC Daejeon Regional 대회 출전
* 우수상 - ReturnedYongari : 강인수, 남상협, 신재동
- ZeroWikiVsOneWiki . . . . 3 matches
때문에 목적을 잘 알리고 더 시험해볼 거라면 원위키를 유지해야 한다고 생각한다. 그렇지 않다면야 원위키가 필요하지는 않으리라 생각한다. 이 페이지도 영동이형 말대로 참여가 없다면, 토론이 이루어지기는 힘들겠지만 말이다. -[Leonardong]
OneWiki 의 목적중, 신입 회원분들이 ZeroWiki를 쓰면서 그간 쌓여 있는 것들을 보면서 짖눌린 느낌을 받지 않을까 해서 였습니다. ZeroWiki는 내부 포멧이나, 내용이나 암묵적으로 무거움을 가지고 있다는 생각이 드는 걱정으로 OneWiki를 열고 새 인원들의 원할한 실험의 장으로서 그 역할을 하기를 바랬던 것이지요.
아쉽게도 자유롭게 쓰면서 의견의 충돌이나, 논의등을 이루며 발전에 나아가는 이상적 상황은 아직은 오지 못한것 같습니다. 시기 적절함을 보아서, OneWiki가 ZeroWiki 먹어버리거나 그 반대의 형태로 한쪽이 사라져 버리는 운명일까요?
- 고한종/배열을이용한구구단과제 . . . . 3 matches
int onOff;
char keyOnOff;
onOff=1;
while(onOff)
//code zone is end.
keyOnOff=getch();
switch(keyOnOff)
onOff=1;
onOff=0;
// 괜히 화려해 보일려고 on/off 코드 집어 넣었음요.
- 데블스캠프2005/RUR-PLE/Harvest/이승한 . . . . 3 matches
def getSixBeepOneLine():
getSixBeepOneLine()
getSixBeepOneLine()
- 데블스캠프2012/셋째날/앵그리버드만들기 . . . . 3 matches
function Loop()
function clearCanvas()
context.clearRect(0, 0, 600, 400);
function drawBird()
context.drawImage(ima,bird.x,bird.y,50,50);
//context.fillRect(bird.x, bird.y, 50, 50);
function move(t)
var context = devilsBird.getContext("2d");
function Bird()
Bird.prototype.shoot = function(dx, dy)
Bird.prototype.move = function(deltaTime)
Bird.prototype.cheekStop = function()
function Game()
this.context = elem.getContext("2d");
var onDrag = false;
elem.addEventListener("mousedown", function(e){
onDrag = true;
elem.addEventListener("mouseup", function(e){
if(onDrag)
that.onMouseUp(e);
- 디자인패턴 . . . . 3 matches
[[TableOfContents]]
* [http://www.cmcrossroads.com/bradapp/docs/pizza-inv.html - Pizza Inversion - a Pattern for Efficient Resource Consumption]
그리고 한편으로는 Refactoring을 위한 방법이 됩니다. Refactoring은 OnceAndOnlyOnce를 추구합니다. 즉, 특정 코드가 중복이 되는 것을 가급적 배제합니다. 그러한 점에서 Refactoring을 위해 DesignPattern을 적용할 수 있습니다. 하지만, Refactoring 의 궁극적 목표가 DesignPattern 은 아닙니다.
* http://www.econ.kuleuven.ac.be/tew/academic/infosys/Members/Snoeck/litmus2.ps - Design Patterns As Litmus Paper To Test The Strength Of Object Oriented Methods
- 서지혜 . . . . 3 matches
[[TableOfContents]]
== ON DOING ==
* '''의도적 수련'''에서 영감을 받아 시작하기로 한 reconstitution project
== DONE ==
* 엔포지 : [http://nforge.zeropage.org/projects/bigtablet/wiki/FrontPage?action=show 빅테이블 분석및설계]
* 갑작스레 엄청난 이민의 압박을 받아 Ruby on Rails를 시작하려 함. ~~가볍기로 소문났으니 12/31까지 toy 만들어보기로 목표.~~
* [http://nforge.zeropage.org/projects/deletewastes/wiki/FrontPage?action=show 엔포지 링크]
* 교재 : [HolubOnPatterns]
* 밑줄긋기 진행중 : [HolubOnPatterns/밑줄긋기]
* 꾸준 플젝인듯. 처음엔 reverse polish notation으로 입력식을 전처리하고 계산하다가 다음엔 stack 두개를 이용해서 계산하여 코드 수를 줄임.
1. Hannibal Rss Recommendation
* 하지만 아직도 beneficiary일 뿐 contributor가 아니다.. spring project에 기여하기 프로젝트를 했으면 어땟을까? 처음엔 작게 bug fix부터..
* Fluent English Communication Skill
* [java/reflection] - java의 classLoader와 reflection을 이용해 외부 클래스 메소드 호출하는 법
* [FocusOnFundamentals]
- 일반적인사용패턴 . . . . 3 matches
[[TableOfContents]]
위키위키를 처음 방문하시면 FrontPage에 들어오실겁니다. FrontPage는 말 그대로 대문이 되는 첫 페이지로, 현 이 위키공간 항해의 시작점이 됩니다. 처음 방문하실때에는 FrontPage부터 시작하셔서 각 페이지 링크를 클릭하셔서 항해하시면 됩니다.
* ["HelpOnFormatting"]
* ["HelpOnEditing"]
* 오른쪽 상단의 아이콘들의 기능은 HelpOnNavigation 를 참조하세요.
* 페이지를 삭제하지 않은 경우 - 한쪽 창에서 상단 오른쪽의 파란아이와 짝짝이 안경(?)을 클릭하시면 해당 페이지의 히스토리와 페이지의 수정내용을 알 수 있습니다. 일단 파란아이를 눌러서 복구하고 싶은 버전을 View 하십시오. 그 다음, URL 입력창에서 action=recall 을 action=raw로 바꾼 후 해당 내용을 다시 복사하시면 됩니다. (이때는 Frame 안에서 작업하지마시고, 위키 페이지를 직접 전체화면으로 하여 해당 URL이 보이는 상태에서 작업하십시오.)
- 1002/Journal . . . . 2 matches
* normalization
~ 2 : 16 (지하철) using singleton wisely 읽고 이해
* 구체적인 action plan 에 대해서는 추후 궁리.
솔직하지 못하게 될 수 있다. 자신의 일을 미화할 수도 있다. NoSmok:TunnelVision 에 빠진 사람은 '보고싶은 것만' 보이게 된다. NoSmok:YouSeeWhatYouWantToSee
반론 : 그러면, 보안이 유지되는 다른 곳에 apache authorization 등을 걸고, 해당 글을 링크걸면 어떨런지?
읽기 준비 전 Seminar:ThePsychologyOfComputerProgramming 이 어려울 것이라는 생각이 먼저 들어서, 일단 영어에 익숙해져야겠다는 생각이 들어서 Alice in wonderland 의 chapter 3,4 를 들었다. 단어들이 하나하나 들리는 정도. 아직 전체의 문장이 머릿속으로 만들어지진 않는 것 같다. 단어 단위 받아쓰기는 가능하지만, 문장단위 받아쓰기는 힘든중.
도서관에서 이전에 절반정도 읽은 적이 있는 Learning, Creating, and Using Knowledge 의 일부를 읽어보고, NoSmok:HowToReadaBook 원서를 찾아보았다. 대강 읽어봤는데, 전에 한글용어로는 약간 어색하게 느껴졌던 용어들이 머릿속에 제대로 들어왔다. (또는, 내가 영어로 된 책을 읽을때엔 전공책의 그 어투를 떠올려서일런지도 모르겠다. 즉, 영어로 된 책은 약간 더 무겁게 읽는다고 할까. 그림이 그려져 있는 책 (ex : NoSmok:AreYourLightsOn, 캘빈 & 홉스) 는 예외)
* 사전지식이 이미 있었기 때문이라고 판단한다. NoSmok:HowToReadaBook 는 한글 서적을 이미 읽었었고, 'Learning, Creating, and Using Knowledge' 의 경우 Concept Map 에 대한 이해가 있었다. PowerReading 의 경우 원래 표현 자체가 쉽다.
* 처음 프로그래밍을 접하는 사람에게는 전체 프로젝트 과정을 이해할 수 있는 하루를, (이건 RT 보단 밤새기 프로젝트 하루짜리를 같이 해보는게 좋을 것 같다.) 2-3학년때는 중요 논문이나 소프트웨어 페러다임 또는 양서라 불리는 책들 (How To Read a Book, 이성의 기능, Mind Map 이나 Concept Map 등)을 같이 읽고 적용해보는 것도 좋을것 같다.
그림을 보고 나니, Inheritance 나 Delegation 이 필요없이 이루어진 부분이 있다는 점 (KeywordGenerator 클래스나 BookSearcher, HttpSpider 등) Information Hiding 이 제대로 지켜지지 않은것 같다는 점, (Book 과 관련된 데이터를 얻고, 검색하여 리스트를 만들어내는 것은 BookMapper 에서 통일되게 이루어져야 한다.) 레이어를 침범한것 (각각의 Service 클래스들이 해당 로직객체를 직접 이용하는것은 그리 보기 좋은 모양새가 아닌듯 하다. 클래스 관계가 복잡해지니까. 그리고 지금 Service 가 서블릿에 비종속적인 Command Pattern 은 아니다. 그리고 AdvancedSearchService 와 SimpleSearchService 가 BookMapper 에 촛점을 맞추지 않고 Searcher 클래스들을 이용한 것은 현명한 선택이 아니다.)
실제 Database 를 이용하는 테스트에 대해 하나만 실행했을때는 잘 되더니, Suite 에 묶으니까 테스트에서 이용하는 Connection 이 NULL 이 되어버린다. Connection POOL 의 문제인듯. 필요없는 곳에 Connection 열어놓은 것을 하나만 이용했더니 해결.
기존의 AcceptanceTest 들이 작동을 못한다. (Python 에서 정규표현식 이용. 데이터 파싱 & 추출. Prometheus UI 가 바뀌면 다시 바뀜) 전에 구경한 것처럼 XPath 를 이용하는 방법을 궁리해보거나, Prometheus 쪽에서 XML + XSLT 를 이용하는 방법을 궁리했다. 하지만, 그러기엔 현재 Prometheus 의 JSP 부분을 전부 바꾸는데 부담이 크리라 판단, Servlet Controller 중 Service 클래스 부분에 대해 테스트 코드를 붙이는 방법을 생각해 냈다. 하지만, 막상 작성해보고 나니 그 또한 테스트 코드의 크기가 크긴 하다.
Service 와 Controller 가 거의 Composition 이고, 그로 인해 Controller 는 Mapper, Recommender 들이 줄줄히 의존성을 가졌다. 각각의 Mapper, Recommender 들이 DB 를 쓰므로 이를 Mock Object 를 쓸까 하다가, 어차피 현재 작성하는 부분이 AcceptanceTest 의 일부이므로 실제 객체를 그냥 이용해도 좋겠다고 판단, 그대로 이용하고 작성.
* Instead of being tentative, begin learning concretely as quickly as possible.
* Instead of avoding feedback, search out helpful, concrete feedback.
Refactoring 을 하기전 Todo 리스트를 정리하는데만 1시간정도를 쓰고 실제 작업을 들어가지 못했다. 왜 오래걸렸을까 생각해보면 Refactoring 을 하기에 충분히 Coverage Test 코드가 없다 라는 점이다. 현재의 UnitTest 85개들은 제대로 돌아가지만, AcceptanceTest 의 경우 함부로 돌릴 수가 없다. 왜냐하면 현재 Release 되어있는 이전 버전에 영향을 끼치기 때문이다. 이 부분을 보면서 왜 JuNe 이 DB 에 대해 세 부분으로 관리가 필요하다고 이야기했는지 깨닫게 되었다. 즉, DB 와 관련하여 개인 UnitTest 를 위한 개발자 컴퓨터 내 로컬 DB, 그리고 Integration Test 를 위한 DB, 그리고 릴리즈 된 제품을 위한 DB 가 필요하다. ("버전업을 위해 기존에 작성한 데이터들을 날립니다" 라고 서비스 업체가 이야기 한다면 얼마나 황당한가.; 버전 패치를 위한, 통합 테스트를 위한 DB 는 따로 필요하다.)
그리고, 이전에 ProjectPrometheus 작업할때엔 서블릿 테스팅 방법을 몰랐다. 그래서 지금 ProjectPrometheus 코드를 보면 서블릿 부분에 대해 테스트가 없다. WEB Tier 에 대한 테스팅을 전적으로 AT 에 의존한다. 이번에 기사를 쓸때 마틴 파울러의 글을 인용, "WIMP Application 에 대해서 WIMP 코드를 한줄도 복사하지 않고 Console Application 을 만들수 있어야 한다" 라고 이야기했지만, 이는 WEB 에서도 다를 바가 없다고 생각한다.
'''Composition 의 문제점'''
이전에 Delegation 하는 클래스를 해당 클래스 내에 멤버로 두었는데. 예를 들면 이런식으로
throws ProtocolException, IOException {
- 3N+1/임인택 . . . . 2 matches
threeNPlusOne numbers =
TNPO> threeNPlusOne [[1,10], [100,200], [201,210]]
- ACM2008 . . . . 2 matches
[http://acm.pku.edu.cn/JudgeOnline/ POJ] Peking university Judge Online 이란 시스템이 있는데 온라인으로 프로그래밍 문제를 제공하고, 온라인으로 소스를 보내면 서버에서 컴파일해서 결과를 알려주는 시스템이다. 책에서는 code 의 길이를 이용한 코드 골프쪽에 초점을 맞추고 있었지만 이 프로젝트의 목표상 그럴 필요는 없을거 같다. 다만 온라인으로 제공되는 문제가 꽤 있고 평가하는 시스템이 있으므로 보다 즐겁게 놀 수 있는 '꺼리' 일 것 같다.
- ACM_ICPC . . . . 2 matches
= ACM International Collegiate Programming Contest =
* [http://acm.kaist.ac.kr/phpBB3/viewtopic.php?f=32&t=5656&sid=8a41d782cdf63f6a98eff41959cad840#p7217 2013년 스탠딩] - AttackOnKoala HM
* [http://icpckorea.org/2015/REGIONAL/scoreboard.html 2015년 스탠딩] - 1Accepted1Chicken Rank 42 (CAU - Rank 18, including Abroad team)
* [http://icpckorea.org/2016/REGIONAL/scoreboard.html 2016년 스탠딩] - Zaranara murymury Rank 31 (CAU - Rank 13, including Abroad team)
* [http://icpckorea.org/2017/regional/scoreboard/ 2017년 스탠딩] - NoMonk, Rank 62 (CAU - Rank 35, including Abraod team)
* [http://icpckorea.org/2018/regional/scoreboard/ 2018년 스탠딩] - ZzikMukMan Rank 50 (CAU - Rank 28, including Abroad team)
* [http://icpckorea.org/2019/regional/scoreboard/ 2019년 스탠딩] - TheOathOfThePeachGarden Rank 81(CAU - Rank 52, including Abroad team)
* [http://static.icpckorea.net/2020/scoreboard_terpin/ 2020년 스탠딩] - Decentralization Rank 54(CAU - Rank 35)
* [http://static.icpckorea.net/2021/scoreboard_regional/ 2021년 스탠딩]
== Asia Regional Contest - Seoul (몇년도?) ==
== 2011 ACM/ICPC Asia Regional - Daejeon ==
== 2012 ACM/ICPC Asia Regional - Daejeon ==
* 2012 ACM_ICPC Daejeon Regional 대회 출전
== 2013 ACM/ICPC Asia Regional - Daejeon ==
* 2013 ACM_ICPC Daejeon Regional 대회 출전
* team 'AttackOnKoala' 본선 HM(Honorable Mention, 순위권밖) : [강성현], [정진경], [정의정]
== 2014 ACM/ICPC Asia-Daejeon Regional ==
* 2014 ACM_ICPC Daejeon Regional 대회 출전
== 2015 ACM/ICPC Asia-Daejeon Regional ==
* 2015 ACM_ICPC Daejeon Regional 대회 출전
- AliasPageNames . . . . 2 matches
# config.php 파일에 다음과 같은 설정을 넣어주시면 별명 기능이 활성화됩니다.
MoniWiki,Moni위키,모니위키
HelpOnProcessors,ProcessorPlugin,Processor,Processors,프로세서
HelpOnMacros,MacroPlugin,매크로
MoniWikiACL>MoniWiki:MoniWikiACL,SecurityPlugin
MoniWiki>MoniWiki:MoniWiki
모니위키>MoniWiki:MoniWiki
- Ant . . . . 2 matches
[[TableOfContents]]
contributor : 임구근
==== Optional Tasks ====
Ant 는 다양한 Optional Tasks를 제공합니다. 일단 Task 라는 말이 앞으로 많이 나올텐데 Glossary 를 참고하세요. 예를들면 CVS 에 소스를 업데이트 해주는 Optional Task 가 있을 수 있고, 또 .NET 컴파일을 한다던지.. 기타 등등 다양한 Task 가 있습니다. (이에 대한 예제로는 ["AntTask"]를 참조)
% java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]
Ant 를 다룰줄 안다는 말은 즉, Build File 을 만들줄 안다는 의미와 같다. Build File 은 파일이름에서도 알 수 있듯이 xml 을 기반으로 하고 있다. 예제로 참조해볼만한 화일로 ["Ant/TaskOne"], ["Ant/BuildTemplateExample"] 이 있다. 해당 화일을 보면서 설명을 읽으면 편할것이다.
|| Attribute || Description || Required ||
추가적으로 ''project'' 태그 뒤에 ''description'' 이란 태그를 사용하여 Project 를 설명할 수 있다.
* '''Task''' : Ant 에서의 작업단위(빌드, CVS, FTP, JUnit 실행 등등)를 말하는 것입니다. 예를 들어 설명하면 property task 는 Ant에서 쓰는 변수(쉘에서의 환경변수와 비슷한)의 값을 설정합니다. ["Ant/TaskOne"]
AntHill, CruiseControl 등의 툴과 연동하여 이용하기도 한다. 이 툴들은 해당 ant build 를 스케줄러에 맞춰놓고, 해당 시간이 되면 자동으로 해당 ant build file을 실행해준다. See Also Wiki:AntHill, Wiki:CruiseControl
- BookShelf/Past . . . . 2 matches
1. [http://kldp.org/Translations/html/Ask-KLDP/ 좀더 나은 질문하기 방법] - 20050121
1. Professonal 프로젝트 관리 - 20050502
1. [JoelOnSoftware] - 20060120
1. [IntroductionToTheTheoryOfComputation]
1. [PracticalPython]
1. [LionsCommentaryOnUnix]
- Class/2006Fall . . . . 2 matches
[[TableOfContents]]
* [IntroduntionToAlgorithms]
* [http://www.cau.ac.kr/station/club_club.html?clubid=28 Cau Club]
* Project team configuration until 26 Sep.
* Team meeting #1 is on 27 Sep with msn messenger.
* 1st presentation of project is on 28 Sep. - 초기 진행 상황 및 향후 계획
* Team meeting #2 is on 3 Oct
* Team meeting #3 is on 5 Oct
* Team meeting #4 is on 10 Oct
* Team meeting #5 is on 11 Oct
* 2nd presentation of project is on 12 Oct. - 검색 (설계 및 구현)
* Team meeting #6 is on 21 Oct
* Team meeting #7 is on 26 Oct
* 3rd presentation of project is on 31 Oct. - 변경 (설계 및 구현)
* Team meeting #8 is on 9 Nov
* 4th presentation of project is on 14 Nov. - API, 성능평가
* Team meeting #9 is on 18 Nov
* Final demonstration is on 5 Dec - 전체 최종본 제출
=== IntermediateEnglishConversation ===
* Persuaving Presentation until 6 Oct. I'll do it until 29 Sep.
- ClassifyByAnagram/Passion . . . . 2 matches
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Enumeration;
public Parser(File file) throws FileNotFoundException {
public void parse() throws IOException {
public int getItemCount() throws IOException {
private List getItemLines() throws IOException {
public int getContainsCount(String itemKey) {
Enumeration enum = result.elements();
public static void main(String[] args) throws IOException
long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
import java.io.FileNotFoundException;
import java.io.IOException;
public void testOneLine1() throws IOException
public void testOneLine2() throws IOException
public void testTwoLine() throws IOException
public void testGetItemCount() throws IOException
public void testContains() throws IOException
assertEquals(1, parser.getContainsCount(sortedItem));
- CubicSpline/1002/GraphPanel.py . . . . 2 matches
#format python
from wxPython.wx import *
def __init__(self, parent, id=NewId(), pos=wxDefaultPosition, size=wxDefaultSize):
self.normalFunc = NormalFunction()
EVT_PAINT(self, self.OnPaint)
def OnPaint(self, event):
self.plotNormalFunction(dc)
def plotNormalFunction(self, dc):
- CxImage 사용 . . . . 2 matches
5. Additional 에 ./include
BOOL CCxDoc::OnOpenDocument(LPCTSTR lpszPathName)
if (!CDocument::OnOpenDocument(lpszPathName))
// TODO: Add your specialized creation code here
- DPSCChapter1 . . . . 2 matches
[[TableOfContents]]
== Introduction ==
Welcome to ''The Design Patterns Smalltalk Companion'' , a companion volume to ''Design Patterns Elements of Reusable Object-Oriented Software'' by Erich Gamma, Richard Helm, Ralph Johnson, and Jogn Vlissides(Gamma, 1995). While the earlier book was not the first publication on design patterns, it has fostered a minor revolution in the software engineering world.Designers are now speaking in the language of design patterns, and we have seen a proliferation of workshops, publications, and World Wide Web sites concerning design patterns. Design patterns are now a dominant theme in object-oriented programming research and development, and a new design patterns community has emerged.
''The Design Patterns Smalltalk Companion'' 의 세계에 오신걸 환영합니다. 이 책은 ''Design Patterns Elements of Reusable Object-Oriented Software''(이하 DP) Erich Gamma, Richard Helm, Ralph Johnson, and Jogn Vlissides(Gamma, 1995). 의 편람(companion, 보기에 편리하도록 간명하게 만든 책) 입니다. 앞서 출간된 책(DP)이 디자인 패턴에 관련한 책에 최초의 책은 아니지만, DP는 소프트웨어 엔지니어링의 세계에 작은 혁명을 일으켰습니다. 이제 디자이너들은 디자인 패턴의 언어로 이야기 하며, 우리는 디자인 패턴과 관련한 수많은 workshop, 출판물, 그리고 웹사이트들이 폭팔적으로 늘어나는걸 보아왔습니다. 디자인 패턴은 객체지향 프로그래밍의 연구와 개발에 있어서 중요한 위치를 가지며, 그에 따라 새로운 디자인 패턴 커뮤니티들이 등장하고 있습니다.(emerge 를 come up or out into view 또는 come to light 정도로 해석하는게 맞지 않을까. ''이제 디자인 패턴은 객체지향 프로그래밍의 연구와 개발에 있어서 중요한 위치를 가지고 있으며, 디자인 패턴 커뮤니티들이 새로이 등장하고 있는 추세입니다.'' 그래도 좀 어색하군. -_-; -- 석천 바꿔봤는데 어때? -상민 -- DeleteMe)gogo..~ 나중에 정리시 현재 부연 붙은 글 삭제하던지, 따로 밑에 빼놓도록 합시다.
''Design Patterns'' describes 23 design patterns for applications implemented in an object-oriented programming language. Of course, these 23 patterns do not capture ''all'' the design knowledge an object-oriented designer will ever need. Nonetheless, the patterns from the "Gang of Four"(Gamma et al.) are a well-founded starting point. They are a design-level analog to the base class libraries found in Smalltalk development environments. They do not solve all problems but provide a foundation for learning environments. They do not solve all problems but provide a foundation for learning about design patterns in general and finding specific useful architectures that can be incorporated into the solutions for a wide variety of real-world design problems. They capture an expert level of design knowledge and provide the foundation required for building elegant, maintainable, extensible object-oriented programs.
In the Smalltalk Companion, we do not add to this "base library" of patterns;rather, we present them for the Smalltalk designer and programmer, at times interpreting and expanding on the patterns where this special perspective demands it. Our goal is not to replace Design Patterns; you should read the Smalltalk Companion with Design Patterns, not instead of it. We have tried not to repeat information that is already well documented by the Gang of Four book. Instead, we refer to it requently;you should too.
Smalltalk Companion에서, 우리는 패턴의 "base library"를 추가하는 것보다 앞으로 요구될 수 있는 패턴으로 때때로 확장하고 해석해서, 설계자나 프로그래머를 위해 제공한다.
우리의 목적은 Design Pattern을 교체하려는 것이 아니다. 당신은 Design Pattern을 대신하는 것이 아니라 Design Pattern과 함께 Smalltalk Companion을 읽어야 한다.
''Smalltalk Companion에서, 우리는 패턴의 'base library'를 추가하지 않습니다. 그것보다, 우리는 base library들을 Smalltalk 의 관점에서 해석하고 때?灌? 확장하여 Smalltalk 디자이너와 프로그래머를 위해 제공할 것입니다. 우리의 목표는 '''Design Patterns'''을 대체하려는 것이 아닙니다. '''Design Patterns''' 대신 Smalltalk Companion을 읽으려 하지 마시고, 두 책을 같이 읽으십시오. 우리는 이미 Gang of Four에서 잘 문서화된 정보를 반복하지 않을겁니다. 대신, 우리는 GoF를 자주 참조할 것이고, 독자들 역시 그래야 할 것입니다. -- 문체를 위에거랑 맞춰봤음.. 석천''
Learning an object-oriented language after programming in another paradigm, such as the traditional procedural style, is difficult. Learning to program and compose application in Smalltalk requires a complex set of new skills and new ways of thinking about problems(e.g Rosson & Carroll, 1990; Singley, & Alpert, 1991). Climbing the "Smalltalk Mountain" learning curve is cetainly nontrivial. Once you have reached that plateau where you feel comfortable building simple Smalltalk applications, there is still a significant distance to the expert peak.
다른 이론적인 테두리안에서 프로그램(''전통적인 절차식 스타일'')을 한 후 객체 지향 언어를 배우는 것은 어렵다. Smalltalk 안에서 복합된 응용 프로그램 하는 것을 배우는 것은 복잡한 새로운 기술과 문제에 대한 새로운 사고 방식을 요구한다.(" e.g Rosson & Carroll, 1990; Singley, & Alpert, 1991") "Smalltalk" 라는 산을 오르는 것은 확실히 사소한 것이 아니다. 일단 당신이 간단한 Smalltalk 응용 프로그램을 만드는 데 자신이 있는 경지에 닿았다고 해도, 아직 전문가의 경지와는 분명한 차이가 있다.
Smalltalk experts know many things that novices do not, at various abstraction levels and across a wide spectrum of programming and design knowledge and skills:
* What is available in the form of classes, methods, and functionality in the existing base class libraries
* How to use the specific tools of the Smalltalk interactive development environment to find and reuse existing functionality for new problems, as well as understanding programs from both static and runtime perspective
* Recurring patterns of object configurations and interactions and the sorts of problems for which these cooperating objects provide (at least partial) solutions
* 현존하는 기반 class 라이브러리로부터 이용가능한 class, methods. 그리고 그 모듈들(현재는 functionality를 function 군들 또는 모듈 정도로 해석중. 태클 바람. --;)에 대해
A '''design pattern''' is a reusable implementation model or architecture that can be applied to solve a particular recurring class of problem. The pattern sometimes describes how methods in a single class or subhierarchy of classes work together; more often, it shows how multiple classes and their instances collaborate. It turns out that particular architectures reappear in different applications and systems to the extent that a generic pattern template emerges, one that experts reapply and customize to new application - and domain-specific problems. Hence, experts know how to apply design patterns to new problems to implement elegant and extensible solutions.
'''''패턴은 각기 다른 어플리케이션과 시스템상에서 재현되는 특별한(고유한, 플랫폼 종속적인) 아키택처, 전문가들이 새로운 어플리케이션,분야에서 발생하는 특별한 문제들을 제거한다. '''''(위에서 쓰인 one이 particular architecture와 동등한 위치로 해석한 방법. 다른의견 제안바람-상민
In general, designers -- in numerous domains, not just software -- apply their experience with past problems and solution to new, similar problems. As Duego and Benson(1996) point out, expert designers apply what is known in cognitive psychology and artificial intelligence as '''case-based reasoning''', remembering past cases and applying what they learned there. This is the sort of reasoning that chess masters, doctors, lawyers, and architects empoly to solve new problems. Now, design patterns allow software designers to learn from and apply the experiences of other designers as well. As in other domains, a literature of proven patterns has emerged. As a result, we can "stand on the shoulders of giants" to get us closer to the expert peak. As John Vlissies (1997) asserts, design patterns "capture expertise and make it accessible to non-experts" (p. 32).
디자이너들-소프트웨어에만 국한하지 않은 수많은 분야에서-은 그들의 과거의 문제와, 해법에 경험을 비슷한 문제에 적용 시킨다. '''''Duego와 Genson(1996)은 전문 디자이너들이 사례를 기반으로 경험에서 인지한 지혜안에서 과거의 사례를 기억하고 그들이 배운것을 적용시키는 것에 주목한다. (생략 및 의역) ''''' 이것은 체스의 고수, 의사, 변호사 그리고 건축가들이 새로운 문제에 대응하는 추론 방식의 한 방식이다. 현재, 디자인 패턴은 소프트웨어 디자이너들이 배워온것들과 다른 분야의 디자이너(other designer)들의 경험들 모두를 감안한다. 이런 노력들은 결과적으로, "거인의 어깨에 올라서 있는것" 같은 방법으로 우리를 훌륭한 디자인에 이끌수 있다. John Vlissies(1997)은 디자인 패턴은 "전문 지식을 잡고 비전문가들이 그것을 이용하기 쉽게 해주는 것이라고 평한다. (p. 32).
- DesignPatternsAsAPathToConceptualIntegrity . . . . 2 matches
원문 : http://www.utdallas.edu/~chung/patterns/conceptual_integrity.doc
Design Patterns as a Path to Conceptual Integrity
During our discussions about the organization of design patterns there was a comment about the difficulty of identifying the “generative nature” of design patterns. This may be a good property to identify, for if we understood how design patterns are used in the design process, then their organization may not be far behind. Alexander makes a point that the generative nature of design patterns is one of the key benefits. In practice, on the software side, the generative nature seems to have fallen away and the more common approach for using design patterns is characterized as “when faced with problem xyz…the solution is…” One might say in software a more opportunistic application of design patterns is prevalent over a generative use of design patterns.
The source of this difference may be the lack of focus on design patterns in the design process. In fact, we seldom see discussions of the design process associated with design patterns. It is as though design patterns are a tool that is used independent of the process. Let’s investigate this further:
· The existence of an architecture, on top of any object/class design
· The internal regularity (….or conceptual integrity) of the architectural design
아키텍쳐 디자인의 내부적 정규성(또는 ConceptualIntegrity)
This is what Brooks wrote 25 years ago. "… Conceptual integrity is the most important consideration in system design."[Brooks 86] He continues: “The dilemma is a cruel one. For efficiency and conceptual integrity, one prefers a few good minds doing design and construction. Yet for large systems one wants a way to bring considerable manpower to bear, so that the product can make a timely appearance. How can these two needs be reconciled?”
이는 Brooks 가 25년 전에 쓴 말이다. "ConceptualIntegrity 는 시스템 디자인에서 가장 중요한 일이다." 그는 계속 말한다. "이 딜레마는 잔인한 것이다. 효율성과 개념적 완전성중 혹자는 디자인과 구축을 하는 것을 선호할 것이다. 큰 시스템에 대해 혹자는 책임을 맡을 중요한 맨 파워를 가져올 방법을 원할 것이다. 그래서 프로덕트는 적시에 출현할 것이다. 어떻게 이 두 필요요소들이 조화를 이룰 거인가?
One approach would be to identify and elevate a single overriding quality (such as adaptability or isolation of change) and use that quality as a foundation for the design process. If this overriding quality were one of the goals or even a specific design criteria of the process then perhaps the “many” could produce a timely product with the same conceptual integrity as “a few good minds.” How can this be accomplished and the and at least parts of the “cruel dilemma” resolved?
http://www.econ.kuleuven.ac.be/tew/academic/infosys/Members/Snoeck/litmus2.ps
1. Some O-O design methodologies provide a systematic process in the form of axiomatic steps for developing architectures or micro-architectures that are optimality partitioned (modularized) according to a specific design criteria.
2. The following methodologies are listed according to their key design criteria for modularization:
a. Booch in OOSE relies heavily on expert designers and experience to provide the system modularization principle.
OOSE 의 Booch 는 system modularization principle 을 제공하기 위해 전문가 디자이너와 경험에 매우 의존적이다.
b. OMT, Coad-Yourdon, Shaer-Mellor are data driven and as such raise data dependency as the system modularization principle.
OMT, Coad-Yourdon, Shaer-Mellor 의 경우 data driven 이며, system modularization principle 로서 데이터 의존성을 들었다.
c. Wirfs-Brock with Responsibility Driven Design (RDD) raises contract minimization as the system modularization principle.
ResponsibilityDrivenDesign 의 Wirfs-Brock는 system modularization 에 대해 계약 최소화를 들었다.
d. Snoeck with Event Driven Design (EDD) raises existence dependency as the system modularization principle.
- DuplicatedPage . . . . 2 matches
ZeroWiki와 OneWiki의 통합시 제목은 같으나 내용이 다른 페이지 입니다.
DuplicatedPage 란 마크를 기준으로 상단은 ZeroWiki 내용, 하단은 OneWiki 내용 입니다. 적절히 통합해 주세요
- Gnutella-MoreFree . . . . 2 matches
[[TableOfContents]]
이상적인 P2P는 e-Donkey라고 생각 되어진다. 물론 지금의 e-Donkey는 아니다. 내가 생각하는 부분으로
고쳐져야 겠지. 하지만 지금의 e-Donkey처럼 개인이 서버를 가질 수 있고 또한 이 서버를 가지고 찾는
1. Protocol Specification
{{{~cpp Connection String : GNUTELLA CONNECTION/<version>/nn}}}
{{{~cpp Response Connection : GNUTELLA OKnn}}}
|| pong || Ping을 받으면 주소와 기타 정보를 포함해 응답한다.Port / IP_Address / Num Of Files Shared / Num of KB Shared** IP_Address - Big endian||
1. Pong 은 Ping이 왔던 같은 길을 따라 전송된다. 만약 DescriptorID가 n
인 Pong을 받았는 데 Descriptor ID가 n인 Ping 보지 못했다면 Ping을 보
Connection:Keep-Alivern
Content-type:application/binaryrn
Content-length:435678rn
바로 다음에 데이터가 Content-length만큼 따라오게 된다.
Connection:Keep-Alivern
Common IP / ExIP / Node / NodeEx
GnutellaPacket packet_Header / packet_Ping / packet_Pong
3. Gnucleus Technical Description
http://www.sourceforge.net/ (Gnutella Clone 프로그램)
void CSearchResults::OnButtonDownload()
POSITION pos = m_lstResults.GetFirstSelectedItemPosition();
- GuiTestingWithWxPython . . . . 2 matches
from wxPython.wx import *
self.frame = None
def testFramePositionSize(self):
self.assertEquals(expected, self.frame.GetPositionTuple())
def testControls(self):
def testbuttonText(self):
result = self.frame.button.GetLabel()
def testButtonRect(self):
result = self.frame.button.GetPositionTuple()
result = self.frame.button.GetSizeTuple()
def OnInit(self):
from wxPython.wx import *
ID_BUTTON = 10000
self.button = wxButton(self, ID_BUTTON, "testing", pos=(100,100), size=(200,50))
def OnInit(self):
- HanoiProblem/임인택 . . . . 2 matches
towers[0].putOnDisc(i);
import java.util.Enumeration;
public void putOnDisc(int discNum) {
Enumeration enum = discsAtPillar.elements();
- HelpForBeginners . . . . 2 matches
위키위키의 문법을 지금 당장 알고싶으신 분은 HelpOnEditing 페이지로 가시기 바랍니다.
위키위키에 대하여 좀 더 배우고 싶으신 분은 Wiki:WhyWikiWorks 와 Wiki:WikiNature 를 읽어보시기 바라며, Wiki:WikiWikiWebFaq 와 Wiki:OneMinuteWiki 도 도움이 될 것 입니다.
도움말은 HelpContents 혹은 HelpIndex를 참고하세요.
[[Navigation(HelpContents)]]
- HelpOnCvsInstallation . . . . 2 matches
1. http://kldp.net/projects/moniwiki/src 를 가면 설명을 보실 수 있습니다.
1. 설명에 나와있는 것처럼 먼저 CVS로 로그인을 합니다. {{{cvs -d :pserver:anonymous@kldp.net:/cvsroot/moniwiki login}}}
1. CVS로 부터 소스를 가져옵니다. (checkout) {{{cvs -d :pserver:anonymous@kldp.net:/cvsroot/moniwiki checkout moniwiki}}}
1. 그러면 현재 디렉토리에 `moniwiki` 디렉토리가 생성되고 그 아래로 소스코드가 다운로드 받아집니다.
cd moniwiki/locale
cd moniwiki/local/js/locale # 디렉토리 명칭에 유의하세요.
이후의 설치방법은 HelpOnInstallation 페이지를 참고하세요.
`moniwiki`가 설치된 디렉토리로 가서 다음 명령을 실행합니다.
[[Navigation(HelpOnAdministration)]]
- HelpOnFormatting . . . . 2 matches
위키위키 문법을 무시하게 하기 위해서 중괄호 세개를 {{{ {{{이렇게}}} }}} 사용하게 되면 글꼴이 고정폭 글꼴로 보여지게 되며 ({{{monospace font}}}) 만약에 이 문법을 여러 줄에 걸쳐 사용하게 되면, 중괄호 블럭의 모든 공백이 보호되어 프로그램 코드를 직접 삽입하여 보여 줄 수 있습니다.
For more information on the possible markup, see HelpOnEditing.
특별히 여러 줄 코드 블럭을 넣을 때 최 상단에 {{{#!php}}}, {{{#!python}}}과 같은 줄이 있으면 이것은 프로세서 해석기에 의해 해석되어
[[Navigation(HelpOnEditing)]]
- HelpOnLists . . . . 2 matches
See also ListFormatting, HelpOnEditing.
1. one
1. one
1. one
Variations of numbered lists:
i. one
a. one
A. one
1. one
1. one
1. one
Variations of numbered lists:
i. one
a. one
A. one
[space]'''term WikiName''':: definition WikiName
[space]another term:: and its definition
'''term WikiName''':: definition WikiName
another term:: and its definition
/!\ 정의 문법은 자주 쓰이지 않는 문법이며 모인모인 호환용 문법입니다. 1.1.3CVS에 포함된 monimarkup.php에서 아직 지원하지 않습니다.
- HelpOnProcessors . . . . 2 matches
다음과 같이 코드 블럭 영역 최 상단에 {{{#!}}}로 시작하는 프로세서 이름을 써 넣으면, 예를 들어 {{{#!python}}}이라고 하면 그 코드블럭 영역은 {{{plugin/processor/python.php}}}에 정의된 processor_python()이라는 모니위키의 플러그인에 의해 처리되게 됩니다. {{{#!python}}}은 유닉스의 스크립트 해석기를 지정하는 이른바 ''bang path'' 지정자 형식과 같으며, 유닉스에서 사용하는 목적과 동일한 컨셉트로 작동됩니다. (즉, 스크립트의 최 상단에 지정된 스크립트 지정자에 의해 스크립트의 파일 나머지 부분이 해석되어 집니다.)
Please see HelpOnEditing
{{{#!python
if lines[0].contains("python"):
[[Navigation(HelpOnEditing)]]
- HelpOnRules . . . . 2 matches
Please see HelpOnEditing.
/!\ 가로줄의 굵기는 문서의 통일성을 해칠 수 있으므로 옵션으로 제공합니다. config.php에 {{{$hr_type='fancy';}}}라고 하면 가로선의 굵기가 지원됩니다.
[[Navigation(HelpOnEditing)]]
- HelpOnTables . . . . 2 matches
그밖에 위키 문법은 HelpOnEditing를 참고하세요.
[[Navigation(HelpOnEditing)]]
- HelpOnXmlPages . . . . 2 matches
If you have Python4Suite installed in your system, it is possible to save XML documents as pages. It's important to start those pages with an XML declaration "{{{<?xml ...>}}}" in the very first line. Also, you have to specify the stylesheet that is to be used to process the XML document to HTML. This is done using a [http://www.w3.org/TR/xml-stylesheet/ standard "xml-stylesheet" processing instruction], with the name of a page containing the stylesheet as the "{{{href}}}" parameter.
See the following example for details, which can also be found on the XsltVersion page.
/!\ MoniWiki support two type of XSLT processors. One is the xslt.php, the other is xsltproc.php. xslt.php need a xslt module for PHP and xsltproc.php need the xsltproc.
MoniWiki use xsltproc.php by default.
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="XsltVersion" type="text/xml"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" indent="no"/>
implementing XSLT v<xsl:value-of select="system-property('xsl:version')"/>
[[Include(XsltVersion)]]
[[Navigation(HelpOnEditing)]]
- JTDStudy/첫번째과제/원명 . . . . 2 matches
import javax.swing.JOptionPane;
BaseBall oneGame = new BaseBall();
oneGame.setCorrectNumber();
guess = oneGame.inputGuess();
result = oneGame.compare(guess);
JOptionPane.showMessageDialog(null, (result / 10) + " Strike, "
oneGame.displayResult();
String input = JOptionPane.showInputDialog("Enter three different number\n");
int secondGuess = ((int) (aGuess / 10)) % 10;
if (((int)(cCorrect / 10) == secondGuess))
if (((int)(cCorrect / 100)) == secondGuess
if ((cCorrect == firstGuess) || (cCorrect == secondGuess))
JOptionPane.showMessageDialog(null, "You are right!\n Answer is " + correctNumber);
* 오해가 있을 것 같아서 코멘트 합니다. TDD는 별로 중요하지 않습니다. 결정적으로 저는 '''TDD로 하지 않았습니다.''' 그냥 Refactoring시 Regression Test를 위해서 JUnit 을 썼을 뿐이에요.--NeoCoin
BaseBall oneGame = new BaseBall();
oneGame.setCorrectNumber(123);
assertEquals(30, oneGame.compare(123));
assertEquals(10, oneGame.compare(100, 123));
assertEquals(2, oneGame.compare(310, 123));
BaseBall oneGame = new BaseBall();
- JTDStudy/첫번째과제/정현 . . . . 2 matches
public void testNumberCreation() {
} catch(Exception e) {
if(string.contains(String.valueOf(c)))
return getOneWord(numbers);
private String getOneWord(Set<String> set) {
- MineSweeper/신재동 . . . . 2 matches
const int MINE = -1;
const int MOVE[3] = {-1, 0, 1};
bool isInBoard(int row, int col, int moveRow, int moveCol, const vector< vector<int> >& board)
continue;
void setMinesOnBoard(vector< vector<int> >& board)
void showBoard(const vector< vector<int> >& board)
setMinesOnBoard(board);
- MoniWikiTutorial . . . . 2 matches
* [[Icon(edit)]] 이 아이콘을 누르면 편집창이 뜨게 됩니다.
* [[Icon(diff)]] 페이지가 다른 사람에 의해 고쳐졌을때 그 변화를 보여주는 3차원 입체안경 아이콘입니다.
* [[Icon(info)]] 페이지 변경 정보를 보여줍니다.
* [[Icon(rss)]] rss정보를 보여줍니다.
* [[Icon(pref)]] 환경설정 혹은 로그인을 할 수 있는 폼을 보여줍니다.
자세한 내용은 HelpOnNavigation을 참조하세요.
|| {{{MoinMoin:HelpContents}}} || MoinMoin:HelpContents (InterWiki-Link) ||
|| {{{http://moniwiki.kldp.org/imgs/moniwiki-logo.png}}} || http://moniwiki.kldp.org/imgs/moniwiki-logo.png ||
* `TableOfContents` - 페이지의 목차를 만들어줍니다.
자세한 내용은 HelpOnMacros를 참고하세요
* [wiki:NoSmoke:FrontPage 노스모크] : 국내 최고의 위키 커뮤니티
* [wiki:KLDPWiki:FrontPage KLDP 위키] : 국내 오픈소스 개발자들을 위한 위키 사이트
* [wiki:MoniWiki:FrontPage 모니위키] : 모니위키 사이트
모니위키에 관련된 문제점은 MoniWiki:MoniWiki 혹은 http://kldp.net/projects/moniwiki 를 통해서 질문하시기 바랍니다.
- MoreEffectiveC++/Appendix . . . . 2 matches
[[TableOfContents]]
So your appetite for information on C++ remains unsated. Fear not, there's more — much more. In the sections that follow, I put forth my recommendations for further reading on C++. It goes without saying that such recommendations are both subjective and selective, but in view of the litigious age in which we live, it's probably a good idea to say it anyway. ¤ MEC++ Rec Reading, P2
There are hundreds — possibly thousands — of books on C++, and new contenders join the fray with great frequency. I haven't seen all these books, much less read them, but my experience has been that while some books are very good, some of them, well, some of them aren't. ¤ MEC++ Rec Reading, P4
What follows is the list of books I find myself consulting when I have questions about software development in C++. Other good books are available, I'm sure, but these are the ones I use, the ones I can truly recommend. ¤ MEC++ Rec Reading, P5
A good place to begin is with the books that describe the language itself. Unless you are crucially dependent on the nuances of the °official standards documents, I suggest you do, too. ¤ MEC++ Rec Reading, P6
* '''''The Annotated C++ Reference Manual''''', Margaret A. Ellis and Bjarne Stroustrup, Addison-Wesley, 1990, ISBN 0-201-51459-1. ¤ MEC++ Rec Reading, P7
* '''''The Design and Evolution of C++''''', Bjarne Stroustrup, Addison-Wesley, 1994, ISBN 0-201-54330-3. ¤ MEC++ Rec Reading, P8
These books contain not just a description of what's in the language, they also explain the rationale behind the design decisions — something you won't find in the official standard documents. The Annotated C++ Reference Manual is now incomplete (several language features have been added since it was published — see Item 35) and is in some cases out of date, but it is still the best reference for the core parts of the language, including templates and exceptions. The Design and Evolution of C++ covers most of what's missing in The Annotated C++ Reference Manual; the only thing it lacks is a discussion of the Standard Template Library (again, see Item 35). These books are not tutorials, they're references, but you can't truly understand C++ unless you understand the material in these books
For a more general reference on the language, the standard library, and how to apply it, there is no better place to look than the book by the man responsible for C++ in the first place: ¤ MEC++ Rec Reading, P10
* '''''The C++ Programming Language (Third Edition)''''', Bjarne Stroustrup, Addison-Wesley, 1997, ISBN 0-201-88954-4. ¤ MEC++ Rec Reading, P11
Stroustrup has been intimately involved in the language's design, implementation, application, and standardization since its inception, and he probably knows more about it than anybody else does. His descriptions of language features make for dense reading, but that's primarily because they contain so much information. The chapters on the standard C++ library provide a good introduction to this crucial aspect of modern C++. ¤ MEC++ Rec Reading, P12
If you're ready to move beyond the language itself and are interested in how to apply it effectively, you might consider my other book on the subject: ¤ MEC++ Rec Reading, P13
* '''''Effective C++''''', Second Edition: 50 Specific Ways to Improve Your Programs and Designs, Scott Meyers, Addison-Wesley, 1998, ISBN 0-201-92488-9. ¤ MEC++ Rec Reading, P14
That book is organized similarly to this one, but it covers different (arguably more fundamental) material. ¤ MEC++ Rec Reading, P15
* '''''C++ Strategies and Tactics''''', Robert Murray, Addison-Wesley, 1993, ISBN 0-201-56382-7. ¤ MEC++ Rec Reading, P17
Murray's book is especially strong on the fundamentals of template design, a topic to which he devotes two chapters. He also includes a chapter on the important topic of migrating from C development to C++ development. Much of my discussion on reference counting (see Item 29) is based on the ideas in C++ Strategies and Tactics.
If you're the kind of person who likes to learn proper programming technique by reading code, the book for you is ¤ MEC++ Rec Reading, P19
* '''''C++ Programming Style''''', Tom Cargill, Addison-Wesley, 1992, ISBN 0-201-56365-7. ¤ MEC++ Rec Reading, P20
Each chapter in this book starts with some C++ software that has been published as an example of how to do something correctly. Cargill then proceeds to dissect — nay, vivisect — each program, identifying likely trouble spots, poor design choices, brittle implementation decisions, and things that are just plain wrong. He then iteratively rewrites each example to eliminate the weaknesses, and by the time he's done, he's produced code that is more robust, more maintainable, more efficient, and more portable, and it still fulfills the original problem specification. Anybody programming in C++ would do well to heed the lessons of this book, but it is especially important for those involved in code inspections. ¤ MEC++ Rec Reading, P21
One topic Cargill does not discuss in C++ Programming Style is exceptions. He turns his critical eye to this language feature in the following article, however, which demonstrates why writing exception-safe code is more difficult than most programmers realize: ¤ MEC++ Rec Reading, P22
- MoreEffectiveC++/Exception . . . . 2 matches
||[[TableOfContents]]||
= Exception =
virtual void processAdiption() = 0;
virtual void processAdiption();
virtual void processAdiption();
일단 여러분은 파일에서 부터 puppy와 kitten와 키튼의 정보를 이렇게 읽고 만든다. 사실 Item 25에 언급할 ''virtual constructor''가 제격이지만, 일단 우리에 목적에 맞는 함수로 대체한다.
void processAdoptions( istream& dataSource)
pa->processAdoption();
pa에 해당하는 processAdoption()은 오류시에 exception을 던진다. 하지만, exception시에 해당 코드가 멈춘다면 "delete pa;"가 수행되지 않아서 결국 자원이 새는 효과가 있겠지 그렇다면 다음과 같이 일단 예외 처리를 한다. 물론 해당 함수에서 propagate해주어 함수 자체에서도 예외를 발생 시킨다.
void processAdoptions( istream& dataSource)
pa->processAdoption();
void processAdoptions(istream& dataSource)
pa->processAdoption();
void displayIntoInfo(const Information& info)
display info in window corresponding to w;
WindowHandle(const WindowHandle&);
WindowHandle& operator=(const WindowHandle);
void displayIntoInfo(const Information& info)
display info in window corresponding to w;
== Item 10: Prevent resource leaks in constructors. ==
- Ones/문보창 . . . . 2 matches
// no10127 - Ones
[Ones] [문보창]
- PokerHands/Celfin . . . . 2 matches
bool isOnePair(Poker *card, int turn)
else if(isOnePair(card, turn))
- PokerHands/문보창 . . . . 2 matches
enum {HighCard, OnePair, TwoPairs, ThreeCard, Straight, Flush, FullHouse, FourCard, StraightFlush};
const int NONE = 0;
const int TIED = 2;
const int BLACK = -1;
const int WHITE = 1;
inline int comp(const void *i,const void *j) { return *(int *)i-*(int *)j; };
bool onePair(Poker & po);
interpret(onePair(b), onePair(w), result);
result = NONE;
result = NONE;
bool onePair(Poker & po)
po.rank[0] = OnePair;
- ProjectPrometheus/AT_BookSearch . . . . 2 matches
#format python
DEFAULT_HEADER = {"Content-Type":"application/x-www-form-urlencoded",
"Accept":"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*"}
def getSimpleSearchResponse(params):
conn = httplib.HTTPConnection(DEFAULT_SERVICE_IP, DEFAULT_SERVICE_PORT)
conn.request("POST", DEFAULT_SERVICE_SIMPLE_PATH, params, DEFAULT_HEADER)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
def getAdvancedSearchResponse(params):
conn = httplib.HTTPConnection(DEFAULT_SERVICE_IP, DEFAULT_SERVICE_PORT)
conn.request("POST", DEFAULT_SERVICE_ADVANCED_PATH, params, DEFAULT_HEADER)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
def testOne(self):
data = getAdvancedSearchResponse(params)
data = getAdvancedSearchResponse(params)
- PythonMultiThreading . . . . 2 matches
Python 에서는 2가지 thread interface 를 제공한다. 하나는 C 스타일의 API 를, 하나는 Java 스타일의 Thread Object를.
def runOne(args):
thread.start_new_thread(runOne, ((1,)))
- RUR-PLE/Hudle . . . . 2 matches
def goOneStepAndJump():
repeat(goOneStepAndJump,4)
- SeminarHowToProgramIt . . . . 2 matches
* ["CrcCard"] (Index Card -- The finalist of Jolt Award for "design tools" along with Rational Rose Enterprise Edition)
* Stepwise Refinement -- 진부한 미래, 신선한 과거 (see also NoSmok:ProgrammingOnPurpose )
* Managing To Do List -- How to Become More Productive Only With a To-do List While Programming
* Lifelong Learning as a Programmer -- Teach Yourself Programming in Ten Years (http://www.norvig.com/21-days.html )
* 7:30-7:50 강사 도착. TDD 및 RF 시연(Python). 대형 화면을 보고 원하는 커플은 따라할 수 있음.
* PC 미리 셋팅 - 프로젝션 할 컴퓨터 : Idle Fork + Python 2.2
* 기본적으로 Idle Fork와 Python 2.2는 모두 깔아야 함. (강사가 Python으로 시범을 보일 것이고, 이걸 보면서 그대로 따라하고 싶은 커플은 그렇게 할 수 있도록)
* python 4대 : Python 2.2, Idle Fork
python 4대 : Python 2.2, Idle Fork
프로젝션 할 컴퓨터 : Idle Fork + Python 2.2
* [http://python.org/ftp/python/2.2/Python-2.2.exe Python]
* [http://vim.sourceforge.net/scripts/download.php?src_id=155 python.vim]
||Programmer's Journal, Lifelong Learning & What to Read||2 ||
'''Python'''
'''Lemon Team''' 김남훈, 신재동, 남상협, 이선우, 이창섭
처음에는 신입생 대상으로 Python 강의가 있다고 해서, 거기에 보탬이 될까 하는 마음으로 세미나를 해드리겠다고 했는데, 어떻게 중간에서 "프로그래밍 전반"에 대한 세미나로 성격이 변한 것 같습니다. 실습 중심으로 하게 될 것이고, 아무리 Python이 배우기 쉬운 언어라고 해도 Python에 익숙한 사람이 하나도 없는 페어가 두시간 안에 뭔가 다른 것을 (Python을 통해) 익힌다는 것은 어렵고, 또 효율적이지 못하기 때문에, 여러분들 자신이 가장 "자신있는" 언어를 사용하도록 하는 게 좋겠다는 생각을 합니다.
하지만 동적 자료형 언어를 접하는 것 자체가 큰 장점일 수가 있습니다. 특히 TDD와 Refactoring은 동적 자료형 언어에서 빛을 발하고, 대다수의 DP는 언어 수준에서 지원이 되거나 아주 간단합니다. 20분 정도면 Python을 간략하게 훑을 수는 있습니다.
see also ["02_Python"]
- SilentASSERT . . . . 2 matches
- One Source Code, One Library
- SpiralArray/Leonardong . . . . 2 matches
TDD로 풀었다는 점이 기쁘다. 처음부터 너무 메서드를 어디에 속하게 할 지 고민하지 않고 시작한 것이 유용했다. 그 결과로 예전 같으면 생각하지 못했을 Direction클래스와 그 하위 클래스가 탄생했다. 또한 행렬은 최종 결과물을 저장하고 보여주는 일종의 뷰처럼 쓰였다.
class Direction:
class Down(Direction):
class Up( Direction ):
class Right(Direction):
class Left(Direction):
def position(self):
def goStraight(self, direction, board):
while ( not self.coordinate == direction.move(self.coordinate, board) ):
self.coordinate = direction.move( self.coordinate, board )
def _setPosition(self, coordinate):
self._setPosition( self.nextFloor() )
def construct(self, pointList):
self.assertEquals( (0,self.size-1), self.mover.position() )
self.mover._setPosition((self.size-1, self.size-1))
self.mover._setPosition( (0,0) )
def testConstructArray(self):
self.mover._setPosition( (0,0) )
self.array.construct( self.mover.getHistory() )
mover._setPosition((0,0))
- ThinkRon . . . . 2 matches
당신은 어떤 문제에 직면했다. 좀처럼 일이 풀리질 않는다. 이 때 스스로에게 묻는다. 만약 RonJeffries(혹은 당신이 존경하는 전문가)가 이 자리에 있었다면 어떻게 했을까?
여기서 Ron은 Think Big에서처럼 부사의 역할을 하며, "RonJeffries처럼"을 뜻한다.
일전에 XP 메일링 리스트에 조언을 바라는 글을 하나 올렸습니다. 회사에서 XP를 진행하다가 부딪힌 문제에 대한 것이었죠. 그걸 올리고 답장이 한장도 도착하기 전에 갑자기 이런 생각이 들었습니다. "만약 RonJeffries라면 어떤 답장을 쓸까" 신기하게도 저는 그걸 너무도 분명히 잘 알고 있었습니다. 그래서 그 답을 마치 RonJeffries가 직접 만들어준 마냥 귀하게 생각하고 요리조리 궁리해보고 또 실험해봤습니다. 그랬더니 아주 훌륭한 결과를 얻었습니다. 며칠 뒤 진짜 RonJeffries가 제가 예측한 것과 거의 비슷한 답을 해주더군요.
저는 이미 RonJeffries를 어느 정도 내재화(internalize)하고 있는 것은 아닌가 생각이 듭니다. 사실 RonJeffries나 KentBeck의 언변은 "누구나 생각할 수 있는 것"들이 많습니다. 상식적이죠. 하지만 그 말이 그들의 입에서 나온다는 점이 차이를 만들어 냅니다. 혹은, 그들과 평범한 프로그래머의 차이는 알기만 하는 것과 아는 걸 실행에 옮기는 것의 차이가 아닐까 합니다. KentBeck이 "''I'm not a great programmer; I'm just a good programmer with great habits.''"이라고 말한 것처럼 말이죠 -- 사실 훌륭한 습관을 갖는다는 것처럼 어려운 게 없죠. 저는 의식적으로 ThinkRon을 하면서, 일단 제가 가진 지식을 실제로 "써먹을 수" 있게 되었고, 동시에 아주 새로운 시각을 얻게 되었습니다.
전문가 비전문가 PairProgramming을 하다가 문제에 직면했습니까? 스스로에게 물어보십시오. 만약 KentBeck이나 WardCunningham, RonJeffries 같은 사람이 이 자리에 나 대신 있었다면 이 문제에 어떻게 대응했을런지. 그리고 거기서 얻은 해답을 꼭 실행에 옮겨 보세요. 자신은 물론 상대방도 놀라게 될 것입니다. 해답은 늘 안에 있습니다.
Let me tell a brief story about how that came about. Our president, at the time was Bob Doherty. Doherty came from General Electric via Yale, and had been one of the bright young men who were taken under the wing of the famous engineer Stiglitz. Every Saturday, Stiglitz would hold a session with these talented young men whom General Electric had recruited and who were trying to learn more advanced engineering theory and problem-solving techniques. Typically, Bob Doherty would sometimes get really stuck while working on a problem. On those occasions, he would walk down the hall, knock on Stiglitz’s door, talk to him — and by golly, after a few minutes or maybe a quarter of an hour, the problem would be solved.
One morning Doherty, on his way to Stiglitz’s office, said to himself, "Now what do we really talk about? What’s the nature of our conversation?" And his next thought was, "Well Stiglitz never says anything; he just asks me questions. And I don’t know the answer to the problem or I wouldn’t be down there; and yet after fifteen minutes I know the answer. So instead of continuing to Stiglitz’s office, he went to the nearest men’s room and sat down for a while and asked himself, "What questions would Stiglitz ask me about this?" And lo and behold, after ten minutes he had the answer to the problem and went down to Stiglitz’s office and proudly announced that he knew how to solve it.
--NoSmok:HerbertSimon from http://civeng1.civ.pitt.edu/~fie97/simonspeech.html
- TwistingTheTriad . . . . 2 matches
http://www.esug.org/summerschools/2000_Southampton/twistingTheTriad/twistingTheTriad.pdf
with a widget-based system it is easy to avoid having to think about the (required) separation between the user interface and the application domain objects, but it is all too easy to allow one's domain code to become inextricably linked with the general interface logic.
it was much more that the widget system was just not flexible enought. We didn't know at the time, but were just starting to realise, that Smalltalk thrives on plugability and the user interface components in out widget framework were just not fine-grained enough.
One example of this deficiency surfaced in SmalltalkWorkspace widget. This was originally designed as a multiline text-editing component with additional logic to handle user interface commands such as Do-it, Show-it, Inspect-it etc. The view itself was a standard Windows text control and we just attached code to it to handle the workspace functionality. However, we soon discovered that we also wanted to have a rich text workspace widget too. Typically the implementation of this would have required the duplication of the workspace logic from the SmalltalkWorkspace component or, at least, an unwarranted refactoring session. It seemed to us that the widget framework could well do with some refactoring itself!
=== ModelViewController ===
In MVC, most of the application functionality must be built into a model class known as an Application Model. It is the reponsibility of the application model to be the mediator between the true domain objects and the views and their controllers. The views are responsible for displaying the domain data while the controller handle the raw usr gestures that will eventually perform action on this data. So the application model typically has method to perform menu command actions, push buttons actions and general validation on the data that it manages. Nearly all of the application logic will reside in the application model classes. However, because the application model's role is that of a go-between, it is at times necessary for it to gain access to the user interface directly but, because of the Observer relationship betweeen it and the view/controller, this sort of access is discouraged.
For example, let's say one wants to explicitly change the colour of one or more views dependent on some conditions in the application model. The correct way to do this in MVC would be to trigger some sort of event, passing the colour along with it. Behaviour would then have to be coded in the view to "hang off" this event and to apply the colour change whenever the event was triggered. This is a rather circuitous route to achieving this simple functionality and typically it would be avoided by taking a shoutcut and using #componentAt : to look up a particular named view from the application model and to apply the colour change to the view directly. However, any direct access of a view like this breaks the MVC dictum that the model should know nothing about the views to which it is connected. If nothing else, this sort of activity surely breaks the possibility of allowing multiple views onto a model, which must be the reason behind using the Observer pattern in MVC in the first place.
- 내가 파악한 MVC 모델은 너무 얕은 지식이였나. 여태껏 그냥 Layer 단으로만 그렇게 나누어진다만 생각했지 해당 이벤트 발생시나 모델의 값 변화시 어떠한 단계로 Control 이 흘러가는지에 대해서는 구체적으로 생각해본 적이 없었던 것 같다. 화살표를 보면 Application Model -> Controller 로의 화살표가 없다. 그리고 Problem Space 의 범위도 차이가 난다.
근데, WEB 에서의 MVC 와 GUI 에서의 MVC 는 그 Control Flow 가 다르긴 할것이다. 웹에서는 View 부분에서 이벤트가 발생하여 이것이 도로 Model 로 올라간다..식이 없기 때문이다. 믿을만한 출처일지는 모르겠지만, 암튼 이를 구분하는 글도 있는듯. http://www.purpletech.com/articles/mvc/mvc-and-beyond.html
This is the data upon which the user interface will operate. It is typically a domain object and the intention is that such objects should have no knowledge of the user interface. Here the M in MVP differs from the M in MVC. As mentioned above, the latter is actually an Application Model, which holds onto aspects of the domain data but also implements the user interface to manupulate it. In MVP, the model is purely a domain object and there is no expectation of (or link to) the user interface at all.
The behaviour of a view in MVP is much the same as in MVC. It is the view's responsibility to display the contents of a model. The model is expected to trigger appropriate change notification whenever its data is modified and these allow the view to "hang off" the model following the standard Observer pattern. In the same way as MVC does, this allows multiple vies to be connected to a single model.
One significant difference in MVP is the removal of the controller. Instead, the view is expected to handle the raw user interface events generated by the operating system (in Windows these come in as WM_xxxx messages) and this way of working fits more naturally into the style of most modern operating systems. In some cases, as a TextView, the user input is handled directly by the view and used to make changes to the model data. However, in most cases the user input events are actually routed via the presenter and it is this which becomes responsible for how the model gets changed.
While it is the view's responsibility to display model data it is the presenter that governs how the model can be manipulated and changed by the user interface. This is where the heart of an application's behaviour resides. In many ways, a MVP presenter is equivalent to the application model in MVC; most of the code dealing with how a user interface works is built into a presenter class. The main difference is that a presenter is ''directly'' linked to its associated view so that the two can closely collaborate in their roles of supplying the user interface for a particular model.
Compared with our orignnal widget framework, MVP offers a much greater separation between the visual presentation of an interface and the code required to implement the interface functionality. The latter resides in one or more presenter classes that are coded as normal using a standard class browser.
=== Conclusion ===
- UML/CaseTool . . . . 2 matches
[[TableOfContents]]
== Aspects of Functionality ==
''Diagramming'' in this context means ''creating'' and ''editing'' UML [[diagram]]s; that is diagrams that follow the graphical notation of the Unified Modeling Language.
The diagramming part of the Unified Modeling Language seems to be a lesser debated part of the UML, compared to code generation.
The UML diagram notation evolved from elderly, previously competing notations. UML diagrams as a means to draw diagrams of - mostly - [[Object-oriented programming|object oriented]] software is less debated among software developers. If developers draw diagrams of object oriented software, there is widespread consensus ''to use the UML notation'' for that task. On the other hand, it is debated, whether those diagrams are needed at all, on what stage(s) of the software development process they should be used and whether and how (if at all) they should be kept up-to date, facing continuously evolving program code.
=== Code generation ===
''[[Code generation]]'' in this context means, that the user creates UML diagrams, which have some connoted model data, from which the UML tool derives (through a conversion process) parts or all of the [[source code]] for the software system that is to be developed. Often, the user can provide some skeleton of the program source code, in the form of a source code [[template]] where predefined tokens are then replaced with program source code parts, emitted by the UML tool during the code generation process.
There is some debate among software developers about how useful code generation as such is. It certainly depends on the specific problem domain and how far code generation should be applied. There are well known areas where code generation is an established practice, not limited to the field of UML. On the other hand, the idea of completely leaving the "code level" and start "programming" on the UML diagram level is quite debated among developers, and at least, not in such widespread use compared to other [[software development]] tools like [[compiler]]s or [[Configuration management|software configuration management systems]]. An often cited criticism is that the UML diagrams just lack the detail which is needed to contain the same information as is covered with the program source. There are developers that even state that "the Code ''is'' the design" (articles [http://www.developerdotstar.com/mag/articles/reeves_design_main.html] by Jack W. Reeves [http://www.bleading-edge.com/]).
''Reverse engineering'' in this context means, that the UML tool reads program source code as input and ''derives'' model data and corresponding graphical UML diagrams from it (as opposed to the somewhat broader meaning described in the article "[[Reverse engineering]]").
Reverse engineering encloses the problematic, that diagram data is normally not contained with the program source, such that the UML tool, at least in the initial step, has to create some ''random layout'' of the graphical symbols of the UML notation or use some automatic ''layout algorithm'' to place the symbols in a way that the user can understand the diagram. For example, the symbols should be placed at such locations on the drawing pane that they don't overlap. Usually, the user of such a functionality of an UML tool has to manually edit those automatically generated diagrams to attain some meaningfulness. It also often doesn't make sense to draw diagrams of the whole program source, as that represents just too much detail to be of interest at the level of the UML diagrams. There are also language features of some [[programming language]]s, like ''class-'' or ''function templates'' of the programming language [[C plus plus|C++]], which are notoriously hard to convert automatically to UML diagrams in their full complexity.
There are UML tools that use the attribute ''round trip'' (sometimes also denoted as ''round trip engineering'') to connote their ability to keep the ''source code'', the ''model data'' and the corresponding ''UML diagrams'' ''in sync''.
This means that the user should be able to change either the ''model data'' (together with the corresponding diagrams) or the ''program source code'' and then the UML tool updates the other part automatically.
Rational Software Architect, Together가 유명하고, 오픈 소스로는 Argo, Violet 이 유명하다.
- UglyNumbers/1002 . . . . 2 matches
def isDivideOnly235(number):
if isDivideOnly235(idx):
- User Stories . . . . 2 matches
User stories also drive the creation of the acceptance tests. One or more automated acceptance tests must be created to verify the user story has been correctly implemented.
One of the biggest misunderstandings with user stories is how they differ from traditional requirements specifications. The biggest
difference is in the level of detail. User stories should only provide enough detail to make a reasonably low risk estimate of how long the story will take to implement. When the time comes to implement the story developers will go to the customer and receive a detailed description of the requirements face to face.
Developers estimate how long the stories might take to implement. Each story will get a 1, 2 or 3 week estimate in "ideal development time". This ideal development time is how long it would take to implement the story in code if there were no distractions, no other assignments, and you knew exactly what to do. Longer than 3 weeks means you need to break the story down further. Less than 1 week and you are at too detailed a level, combine some stories. About 80 user stories plus or minus 20 is a perfect number to create a release plan during release planning.
Another difference between stories and a requirements document is a focus on user needs. You should try to avoid details of specific technology, data base layout, and algorithms. You should try to keep stories focused on user needs and benefits as opposed to specifying GUI layouts.
- VonNeumannAirport/Leonardong . . . . 2 matches
Traffic하고 Configuration을 각각 2차원 행렬로 표현했다. Traffic은 ( origin, destination )에 따른 traffic양이고, Configuration은 origin에서 destination 까지 떨어진 거리를 저장한 행렬이다. 전체 트래픽은 행렬에서 같은 위치에 있는 원소끼리 곱하도록 되어있다. 입출력 부분은 제외하고 전체 트래픽 구하는 기능까지만 구현했다.
def getElement( self, origin, destination ):
return self.matrix[origin-1][destination-1]
def construct( self, origins, destinations ):
for d in destinations:
- destinations.index(d) ) + 1
def getDistance( self, origin, destination ):
return self.getElement( origin, destination )
def construct( self, origin, traffics ):
self.matrix[origin-1][traffic.destination-1] = traffic.load
def getLoad( self, origin, destination ):
return self.getElement( origin, destination )
def __init__(self, destination, load):
self.destination = destination
def testOneToOneDistance(self):
self.distMatrix.construct( origins = range(1,MAX+1),
destinations= range(1,MAX+1) )
self.distMatrix.construct( origins = range(1,MAX+1),
destinations= range(MAX,0,-1) )
self.traffic.construct( origin = 1,
- VonNeumannAirport/남상협 . . . . 2 matches
def __init__(self,cityNum,trafficList, configureList):
self.configureList = []
for configureData in configureList:
configureOfCity = []
for configure in configureData:
eachConfigure = []
for conf in configure[:-1]:
eachConfigure.append(int(conf))
configureOfCity.append(eachConfigure)
self.configureList.append(configureOfCity)
confNum=1
for configure in self.configureList:
for con in configure[0]:
departureGate = con
traffic+=(abs(configure[1].index(arrivalGate)-configure[0].index(departureGate))+1)*self.trafficList[departureGate-1][i+1]
trafficResult.append((confNum,traffic))
confNum+=1
class VonNeumannAirport:
configureList = []
readLineOne = Data.readline().split(" ")
- WikiSandBox . . . . 2 matches
[[TableOfContents]]
팁 : MSIE, Konqueror, Opera7에서는 Shift키를, Mozilla, Netscape에서는 Ctrl키를 누른 상태에
서 "HelpOnEditing" 을 누르시면 거나, Middle(마우스휠) Key 를 이용하면 help pages가 다른
= 첫번째 Section =
== 첫번째 Section 밑에 있는 첫번째 Subsection ==
흔히 사용되는 두가지 horizontal line 의 차이점을 보세요.
== 첫번째 Section 밑에 있는 두번째 Subsection ==
pre-formatted, No heading, No tables, No smileys. Only WikiLinks
=== Python ===
a MoniWiki python colorizer using the VimProcessor
{{{#!python
= 두번째 Section =
"Save Changes" 버튼을 누른다. ( DontMakeClones )
위의 내용 중에서 이해되지 않는 점이 있다면 관련 링크들과 HelpContents를 참조해서 익히신 이
== Moni Syntax ==
* http://moniwiki.sourceforge.net/
* [http://moniwiki.sourceforge.net/]
* [http://moniwiki.sourceforge.net/ MoniWiki Sourceforge Homepage]
* http://moniwiki.sourceforge.net/imgs/moniwiki-logo.gif
* [http://moniwiki.sourceforge.net/imgs/moniwiki-logo.gif]
- ZIM/CRCCard . . . . 2 matches
|||||| ZimControl ||
|| 로그인요청 || Session ||
|| 로그아웃요청 || Session ||
|| Message 분배 || MessageWindow, Session ||
|||||| Session ||
|| 메세지 송수신 || ZIMServer, ZIMControl ||
|| 로그인, 로그아웃 || ZIMServer, ZIMControl ||
|| OnlineZimmerList 표시 || Session, OnlineZimmerList ||
- Zero,One 위키 통합에 대한 토론 . . . . 2 matches
One Wiki와 ZeroWiki의 데이터를 합쳐버릴 생각을 하고 있습니다. 찬성하세요? SeeAlso ZeroWikiVsOneWiki
로그인해야 쓸 수 있는 기능과 페이지 삭제 기능은 살리고 합치는데는 찬성입니다. --[Leonardong]
ZeroWiki에서 지금 로그인 해야 쓸 수 있는 기능을 말한 것입니다. 근데 써놓고 보니 로그인 안하고 쓰는 게 위키쓰기가 쉽겠네요. --[Leonardong]
- [Lovely]boy^_^/Arcanoid . . . . 2 matches
|| [[TableOfContents]] ||
// 소스 OnInitialUpdate() 맞나? 어쨌든 초기화 하는거에서
//OnDestroy()에서 DeleteObject()하는 방식을 쓰거든요.
* Game can check a collision shuttle and ball.
* Game can check a collision ball and blocks, but it has a few bugs. maybe ball's move amount is 2, not 1.
* I change a background picture from a Jang na ra picture to a blue sky picture. but my calculation of coordinate mistake cuts tree picture.
* My previous arcanoid could process 1ms of multi media timer, but this version of arcanoid can't process over 5ms of multi media timer. why..
* I resolve a problem of multi media timer(10/16). its problem is a size of a object. if its size is bigger than some size, its translation takes long time. So I reduce a size of a object to 1/4, and game can process 1ms of multi media timer.
* A array's row and column is so confused. A long time, screen picture rotates a 90 angle, but I fixed that as change row and column.
* Now sources become very dirty, because I add a new game skill. I always try to eliminate a duplication, and my source has few duplication. but method's length is so long, and responsiblity of classes is not divided appropriately. All collision routine is focusing on CArcaBall class.
* ... I don't have studied a data communication. shit. --; let's study hard.
* I don't want pointers in container, so I had to make a copy constructor, substitute operator.--;
* I change a design of a arcanoid. - previous version is distribute, but this version is that god class(CArcanoidDoc)' admins a total routine. in my opinion, it's more far from OOP.--;
- django . . . . 2 matches
[[TableOfContents]]
* Python 환경에서 웹을 쉽게 개발할수 있도록 도와주는 Framework
* 개발이 끝나고 실제로 서비스할 경우에는 apache + mod_python 으로 올려야 한다.
* [http://www.djangoproject.com/documentation/modpython/] 이 페이지를 참고.
* apache에 mod_python 설치는 [apache/mod_python] 페이지 참고.
= apache2, mod_python을 이용한 웹 서버 설정 =
<Location "/<웹을 통해 접근할 주소>">
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['<프로젝트 부모폴더>'] + sys.path"
PythonDebug On
</Location>
<Location "/mysite"> #http://localhost/mysite
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/path/to/project'] + sys.path"
PythonDebug On
</Location>
<Location "/mysite/">
http://www.djangoproject.com/documentation/modpython/
- html5/webSqlDatabase . . . . 2 matches
[[tableofcontents]]
* transaction을 지원한다.
* {{{transaction()}}}, {{{readTransaction}}}
html5rocks.webdb.open = function() {
html5rocks.webdb.onError = function(tx, e) {
html5rocks.webdb.onSuccess = function(tx, r) {
* {{{todo table. ID, todo, added_on}}}
html5rocks.webdb.createTable = function() {
html5rocks.webdb.db.transaction(function(tx) {
'todo(ID INTEGER PRIMARY KEY ASC, todo TEXT, added_on DATETIME)', []);
html5rocks.webdb.addTodo = function(todoText) {
html5rocks.webdb.db.transaction(function(tx){
var addedOn = new Date();
tx.executeSql('INSERT INTO todo(todo, added_on) VALUES (?,?)',
[todoText, addedOn],
html5rocks.webdb.onSuccess,
html5rocks.webdb.onError);
html5rocks.webdb.getAllTodoItems = function(renderFunc) {
html5rocks.webdb.db.transaction(function(tx) {
html5rocks.webdb.onError);
- 경시대회준비반 . . . . 2 matches
|| [StringCompression] ||
|| [AntOnAChessboard] ||
|| [Monocycle] ||
|| [IsThisIntegration?] ||
|| [TreesOnMyIsland] ||
- 경시대회준비반/BigInteger . . . . 2 matches
* Version 6.7.25
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* that both that copyright notice and this permission notice appear
* in supporting documentation. Mahbub Murshed Suman makes no
* representations about the suitability of this software for any
const char *BigIntErrDes[] = { "Allocation Failed", "Overflow","Underflow", "Invalid Integer", "Divide by Zero" ,"Domain Error"};
const char BigIntPROGRAMNAME[] = { "BigInteger" };
const int BigIntMajorVersion = 6;
const int BigIntMinorVersion = 7;
const int BigIntRevision = 25;
void Dump(const char *,enum BigMathERROR);
string& DumpString (char const*,enum BigMathERROR);
const DATATYPE BASE = 10000;
const DATATYPE INVALIDDATA = 65535U;
const SizeT LOG10BASE = 4;
// Start of the location of the number in the array
// End of the location of the number in the array
// Constructor with specified bytes
void datacopy(BigInteger const&,SizeT);
- 데블스캠프2005/RUR-PLE/Sorting . . . . 2 matches
[[TableOfContents]]
while front_is_clear(): # go to left end
if front_is_clear():
while not next_to_a_beeper(): # go to unsorted section
else: # one column sorting finished
continue
if front_is_clear():
if front_is_clear():
while front_is_clear():
while front_is_clear():
if front_is_clear():
while front_is_clear():
bringOne()
if front_is_clear():
def bringOne():
if not front_is_clear():
while front_is_clear():
# Function Public Definitions #
#move/get/put functions
#private functions #
- 데블스캠프2011/다섯째날/HowToWriteCodeWell/정의정,김태진 . . . . 2 matches
public static final int GUARDS_RESPONSE = 3;
public void emergencyButton() {
public void turnOn() {
public void emergencyCallButton() {
public void openButton() {
elevator.emergencyButton(); // 작동정지. shut down
elevator.turnOn();
elevator.emergencyCallButton(); //방호실연결
assertEquals(elevator.GUARDS_RESPONSE, elevator.status());
elevator.openButton(); //진행안하고 기다린다??
- 새싹교실/2012/나도할수있다 . . . . 2 matches
[[TableOfContents]]
char isOne (int num1) {
a = isOne(b);
- 새싹교실/2012/앞부분만본반 . . . . 2 matches
[[TableOfContents]]
1장 Linear Equations in Linear Algebra 에서
Linear Equations 와 Matrices 의 비교,
Linear System이 무엇인지 설명 -> Linear Equation의 집합
variable,coefficient,constant에 대해서 설명.
1. No solution
2. exactly one solution
3. infinitely many solution
1 -> inconsistent
2 -> consistent 을 구별
주의) A L.S is consistent <-> A L.S has a solution 이라는 걸 강조
(exactly one solution 을 가진다는 이야기 -> Only가 꼭 들어가야 함 )
Linear System 과 Matrix equation사이의 상관관계를 설명함.
L.S <-> matrix equation
*elimination(소거법) 에 대한 설명
-> 연립일차방정식을 matrix equation 꼴로 거기에 더나아가 augmented matrix 꼴로 나아가는 뱡향으로 설명함
소거법에 따른 Elementary Equation Operations(E.E.O)(L.S and Ax=b)와 Elementary Row Operations(E.R.O)([A b])에 대해서 비교, 설명함.
||Elementary Equation Operations(E.E.O)||
||Elementary Row Operations(E.R.O)||
A system of linear equation is said to be consistent if it has either one solution or infinitely many solutions; a system is inconsistent if it has no solution.
- 영호의해킹공부페이지 . . . . 2 matches
Always yield to the Hands-On imperative!
2. All information should be free.
3. Mistrust Authority-Promote Decentralization.
such degrees, age, race, or position.
5. You can create art and beauty on a computer.
This article is an attempt to quickly and simply explain everyone's favourite
manner of exploiting daemons - The Buffer Overflow.
The remote buffer overflow is a very commonly found and exploited bug in badly
coded daemons - by overflowing the stack one can cause the software to execute
a shell equal to its current UID - thus if the daemon is run as root, like
A stack has the property of a queue of objects being placed one on top of the
other, and the last object placed on the stack will be the first one to be
which are pushed when calling a function in code and popped when returning it.
is static. PUSH and POP operations manipulate the size of the stack
addresses, or up them. This means that one could address variables in the
offsets change around. Another type of pointer points to a fixed location
it can handle. We use this to change the flow of execution of a program -
We can change the return address of a function by overwriting the entire
contents of the buffer, by overfilling it and pushing data out - this then
with shellcode, designed to spawn a shell on the remote machine, and
- 위키를새로시작하자 . . . . 2 matches
'''OneWiki를 새로 시작해서 1년간 실험을 하였습니다. 허나, ZeroWiki 와 그리 다르지 않다는 경험을 얻었습니다. 그래서 OneWiki 와 ZeroWiki를 통합하였습니다. 통합된 페이지중 DuplicatedPage 는 아직 완전한 통합이 이루어 지지 않은 것이니, 해당 페이지를 고쳐주세요.'''
|| [Leonardong] || O || . ||
위키 자체가 읽기 전용인것이기 보다는, 별도의 위키로 두는 것은 어떨까요? (물론.. 지금도 기존의 페이지가 별로 수정되고 있지 않아서 read-only 나 마찬가지인 상황이긴 하지만.) --[1002]
[Leonardong] : 기회군요. 원래는 한 번 밖에 오지 않는 기회...
- 인수/Smalltalk . . . . 2 matches
RWBoard>>setValidLocation: num
RWRoach>>moveOne: aBoard
self selectDirection: aBoard.
RWRoach>>selectDirection: aBoard
curRow := aBoard setValidLocation: curRow.
curCol := aBoard setValidLocation: curCol.
[ aBoard isAllPut = false. ] whileTrue: [ self moveOne:aBoard. ].}}}
- 정모 . . . . 2 matches
[[TableOfContents]]
* on/offline 모임 시간
||||2023.02.15||[김도엽]||||||||CTF 대회 운영진은 무엇을 하나요?(ISANG X CAUtion CTF 운영진 후기)||
-> Online (주로 Wiki를 통해 이루어지는) 에서 결정할 내용과 Offline 에서 결정할 내용을 구분하지 못한다.
-> Offline 에서 충분이 결정할 수 있는 일들을 Online(Wiki) 으로 미루어버린다.
- 정모/2004.2.17 . . . . 2 matches
* OneWiki:RummikubProject 진행자 불참
* OneWiki:TheJavaMan 진행중.
* Java, Pthon
- 정모/2011.5.30 . . . . 2 matches
[[TableOfContents]]
* [정의정]의 One Man Show
* 7시에 튜터링이라 조금 일찍 가긴 했는데 (그런데 7시 20분에 나갔..) 뭐 거의 다 하고 나간 거 같네요,, 이번 OMS에서는 정말로 One Man Show에 대한 것을 봤는데요, 평소 그런 영상도 많이 봐서 그런지 조금 더 관심있게 봤던 것 같습니다. 뭐 보면 Five For Fighting과 같이 혼자 악기를 다루고 노래 해서 음반 발매하는 사람도 있으니깐요. 데블스 캠프 연락처를 받고 연락을 돌렸는데, 연락이 되신 분도 있는데 다시 연락 주신다고 하시고.. (뭐 하루밖에 안 지났지만..) 답이 없으시네요 -_-;; 이번 5월 회고에서는 색다른 방식으로 진행되었던 것 같습니다. Zeropage에게 인격을 부여하니 참 다양한 모습이 나와 재밌었습니다. 생각해 보니 별명을 슬레이어즈의 가우리로 할껄 그랬네요 (밥 못 먹었을 때의 모습 -_-) 아무튼 재밌는 회고였습니다. ㅎ - [권순의]
- 프로그래밍/DigitGenerator . . . . 2 matches
import java.io.FileNotFoundException;
import java.io.IOException;
private static int processOneCase(String line) {
continue;
int result = processOneCase(line);
} catch (FileNotFoundException e) {
} catch (IOException e) {
- 프로그래밍/Pinary . . . . 2 matches
import java.io.FileNotFoundException;
import java.io.IOException;
private static String processOneCase(String line) {
continue;
String result = processOneCase(line);
} catch (FileNotFoundException e) {
} catch (IOException e) {
- 프로그래밍/Score . . . . 2 matches
import java.io.FileNotFoundException;
import java.io.IOException;
int result = processOneCase(line);
} catch (FileNotFoundException e) {
} catch (IOException e) {
private int processOneCase(String line) {
- 프로그래밍/장보기 . . . . 2 matches
import java.io.FileNotFoundException;
import java.io.IOException;
public static int processOneCase(int num) {
String [] contents;
} catch (IOException e) {
contents = line.split(" ");
int price = Integer.parseInt(contents[1]);
int weight = Integer.parseInt(contents[0]);
int result = processOneCase(Integer.parseInt(line));
} catch (FileNotFoundException e) {
} catch (IOException e) {
- 2010JavaScript/역전재판 . . . . 1 match
<div id='chugoong'>추궁하장</div>
position : absolute;
position : absolute;
position : absolute;
position : absolute;
#chugoong { /*좌상단의 추궁하기*/
position : absolute;
position : absolute;
position : absolute;
position : absolute;
position : absolute;
contents=new Array(); //대사 내용이 들어있는 javascript파일 안에 있는 배열의 이름.
function changetext(){ // 글자가 나오는 text부분에 내용을 바꾸는 함수.
document.getElementById('text').innerHTML = contents[i]
<script language="javascript" SRC="./contents.js"></script> //대사 내용을 넣은 javascript파일('contents.js')을 첨부.
<div id='chugoong'>추궁하장</div>
<div id='text' Onclick="changetext()">
= 대사파일 (contents.js)=
contents[0] = "내용1"
contents[1] = "내용2"
- 2dInDirect3d . . . . 1 match
원제 : Focus On 2D In Direct 3D
- 3N+1Problem/1002_2 . . . . 1 match
if self._cache.get(n) is not None: return self._cache.get(n)
def testOne():
- 5인용C++스터디/메뉴와단축키 . . . . 1 match
void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point)
- ACM_ICPC/PrepareAsiaRegionalContest . . . . 1 match
[[TableOfContents]]
=== at On-line Preliminary Contest(Oct. 2, 2004) ===
==== Solution of Problem C. Mine Sweeper ====
const int MAX = 1001;
const int SQUARE_SIZE = 11;
==== Solution of Problem F. Coin Game ====
bool equals(const Coin & coin){ return this->face == coin.face; }
void set(const char face ){ this->face = face; }
const int MAX = 4;
const int SIZE = 3;
const int INT_MAX = 20000000;
void constructCoins( const char input[SIZE][SIZE] );
void flipLine(int direction);
void Gamer::constructCoins( const char input[SIZE][SIZE] )
void Gamer::flipLine(int direction)
if ( direction < 3 )
flipRow( direction % 3 );
else if ( direction < 6 )
flipCol( direction % 3 );
else if ( direction == 6 )
- AOI/2004 . . . . 1 match
|| [SummationOfFourPrimes] || . || X || O || X || . || O ||
|| [MultiplyingByRotation] || . || X || X || . || . || X ||
|| [Ones] || . || . || O || . || . || . || . || . ||
|| [CommonPermutation] || . || . || O || . || . || . || . || . ||
그러게 다들 다른 사람들 코드는 보는 겐가? --[Leonardong]
- ASXMetafile . . . . 1 match
<ASX version = "3.0">
* <Abstract>: Provides a brief description of the media file.
* <Copyright>: Detailed copyright information (e.g., company name and copyright year).
* <MoreInfo href = "path of the source" / >: Adds hyperlinks to the Windows Media Player interface in order to provide additional resources on the content.
* <Entry>: Serves a playlist of media by inserting multiple "Entry" elements in succession.
* <Duration value = "00:00:00">: Sets the value attribute for the length of time a streaming media file is to be played.
* <Logo href = "path of the logo source" Style = "a style" / >: Adds custom graphics to the Windows Media player by choosing either a watermark or icon style. The image formats that Windows Media Player supports are GIF, BMP, and JPEG.
o MARK: The logo appears in the lower right corner of the video area while Windows Media Player is connecting to a server and opening a piece of content.
o ICON: The logo appears as an icon on the display panel, next to the title of the show or clip.
* <Ref href = "path of the source" / >: Specifies a URL for a content stream.
o ASX files, on the other hand, are small text files that can always sit on an HTTP server. When the browser interprets the ASX file, it access the streaming media file that is specified inside the ASX file, from the proper HTTP, mms, or file server.
* ?sami="path of the source": Defines the path of a SAMI caption file within the <ref href> tag for media source.
<ASX version = "3.0">
<Abstract> This is the description for this clip. </Abstract>
<Title> Markers Discussion </Title>
<Copyright> 2000 Microsoft Corporation </Copyright>
<Logo href="http://servername/path/banner2.gif" Style="ICON" />
* [http://cita.rehab.uiuc.edu/mediaplayer/captionIT-asx.html Creating ASX files with Caption-IT] - [DeadLink]
* [http://msdn.microsoft.com/workshop/imedia/windowsmedia/crcontent/asx.asp Windows Media metafile] - [DeadLink]
* [http://msdn.microsoft.com/downloads/samples/internet/imedia/netshow/simpleasx/default.asp MSDN Online Samples : Simple ASX] - [DeadLink]
- ATmega163 . . . . 1 match
= ATmega 163 8bit AVR Microcontroller =
* 130 Powerful Instruction - RISC MPU
* On-chip 2 cycle Multiplier
* Pony Prog
#put the name of the target file here (without extension)
#put additional assembler source file here
#additional libraries and object files to link
#additional includes to compile
$ config.h \
device missing or unknown device 라고 나온다. ponyprog 에서 장치를 꼭 163 L 로 해야하나? 163 밖에 없던데..
- AntOnAChessboard/문보창 . . . . 1 match
// 10161 - Ant on a Chessboard
inline void show(const int i, const int j)
void show_typeA(const int x, const int y)
void show_typeB(const int y, const int x)
void show_typeS(const int x)
[AntOnAChessboard]
- BookShelf . . . . 1 match
[Leonardong]이 읽은 책, 읽는 책, 읽으려는 책
1. ConceptsOfProgrammingLanguages
1. [IntroductionToAlgorithms]
1. LionsCommentaryOnUnix
[ConceptualBlockbusting] - 20070210
- C++ . . . . 1 match
{{|[[TableOfContents]]|}}
C++ (pronounced "see plus plus") is a general-purpose computer programming language. It is a statically typed free-form multi-paradigm language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. During the 1990s, C++ became one of the most popular commercial programming languages.
Bell Labs' Bjarne Stroustrup developed C++ (originally named "C with Classes") during the 1980s as an enhancement to the C programming language. Enhancements started with the addition of classes, followed by, among many features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling. The C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998, the current version of which is the 2003 version, ISO/IEC 14882:2003. New version of the standard (known informally as C++0x) is being developed.
In C and C++, the expression x++ increases the value of x by 1 (called incrementing). The name "C++" is a play on this, suggesting an incremental improvement upon C.|}}
* [RuminationOnC++]
- C/C++어려운선언문해석하기 . . . . 1 match
원문 : How to interpret complex C/C++ declarations (http://www.codeproject.com/cpp/complex_declarations.asp)
다루겠습니다. 우리가 매일 흔히 볼 수 있는 선언문을 비롯해서 간간히 문제의 소지를 일으킬 수 있는 const 수정자와 typedef 및 함수
[[ const modifier ]]
const 수정자는 변수가 변경되는 것을 금지 (변수 <-> 변경할 수 없다? 모순이군요 ) 하기 위해서 사용하는 키워드입니다. const 변수
const int n = 5;
int const m = 10;
위의 예제의 두 변수 n과 m은 똑같이 const 정수형으로 선언되었습니다. C++ 표준에서 두가지 선언이 모두 가능하다고 나와있습니만 개
인적으로는 const가 강조되어서 의미가 더 분명한 첫번째 선언문을 선호합니다.
const가 포인터와 결합되면 조금 복잡해집니다. 예를 들어서 다음과 같은 변수 p, q가 선언되었습니다.
const int *p;
int const *q;
그럼 여기서 퀴즈, const int형을 가리키는 포인터와 int형을 가리키는 const 포인터를 구별해보세요.
사실 두 변수 모두 const int를 가리키는 포인터입니다. int 형을 가리키는 const 포인터는 다음과 같이 선언됩니다.
int * const r = &n; // n 은 int형 변수로 선언 되었슴
위에서 p와 q는 const int형 변수이기 때문에 *p 나 *q의 값을 변경할 수 없습니다. r은 const 포인터이기 때문에 일단 위와 같이 선언
위에서 나온 두 가지 선언문을 결합하여 const int 형을 가리키는 const 포인터를 선언하려고 하면 다음과 같습니다.
const int * const p = &n; // n은 const int형 변수로 선언되었슴
다음에 나열한 선언문들을 보시면 const를 어떻게 해석할 수 있는지 더 분명하게 아실 수 있을겁니다. 이 중에 몇몇 선언문은 선언하면
const char **p2; // pointer to pointer to const char
char * const * p3; // pointer to const pointer to char
- CategoryMacro . . . . 1 match
If you click on the title of a category page, you'll get a list of pages belonging to that category
See HelpOnMacros
- Celfin's ACM training . . . . 1 match
|| 12 || 12 || 111201/10161 || Ant on a Chessboard || 40 mins || [http://165.194.17.5/wiki/index.php?url=zeropage&no=4209&title=AntOnAChessboard/하기웅&login=processing&id=&redirect=yes Ant on a Chessboard/Celfin] ||
|| 18 || 13 || 111307/10209 || Is This Integration? || 2 hours || [http://165.194.17.5/wiki/index.php?url=zeropage&no=4265&title=IsThisIntegration?/하기웅&login=processing&id=&redirect=yes IsThisIntegration/Celfin] ||
- ClipMacro . . . . 1 match
[[Clip(OneStarKospi)]]
[[Clip(bot-environment)]]
되면 좋겠는데 왜 안될까요? ^^ -- -- Anonymous [[DateTime(2005-03-31T10:58:46)]]
익스플로러 XP프로 SP2에서 잘 되는군요. print screen키를 누르신다음에 paste해보세요 -- Anonymous [[DateTime(2005-03-31T16:55:09)]]
테스트 -- Anonymous [[DateTime(2005-05-11T13:02:46)]]
- Counting/황재선 . . . . 1 match
catch (Exception e) {
BigInteger one = new BigInteger("1");
first = one;
BigInteger second = i == 1 ?
numOfEachCounting = numOfEachCounting.add(first.add(second));
public void testOne() {
- CubicSpline/1002/CubicSpline.py . . . . 1 match
#format python
from wxPython.wx import *
def __init__(self, parent=NULL, id=NewId(), title='Graph', pos=wxDefaultPosition, size=wxDefaultSize):
self._initChildControl()
def _initChildControl(self):
def OnInit(self):
- DPSCChapter2 . . . . 1 match
[[TableOfContents]]
Before launching into our descriptions of specific design patterns, we present a case study of sorts, involving multiple patterns. In the Design Pattern preface, the Gang of Four speak about moving from a "Huh?" to an "Aha!" experience with regard to understanding design patterns. We present here a little drama portraying such a transition. It consists of three vignettes: three days in the life of two Smalltalk programmers who work for MegaCorp Insurance Company. We are listening in on conversations between Don (an object newbie, but an experienced business analyst) and Jane (an object and pattern expert). Don comes to Jane with his design problems, and they solve them together. Although the characters are fictitious, the designs are real and have all been part of actual systems written in Smalltalk. Our goal is to demonstrate how, by careful analysis, design patterns can help derive solutions to real-world problems.
디자인 패턴에 대한 구체적인 설명에 들어가기 전에 우리는 다양한 패턴들이 포함된 것들에 대한 예시들을 보여준다. 디자인 패턴 서문에서 GoF는 디자인 패턴을 이해하게 되면서 "Huh?" 에서 "Aha!" 로 바뀌는 경험에 대해 이야기한다. 우리는 여기 작은 단막극을 보여줄 것이다. 그것은 3개의 작은 이야기로 구성되어있다 : MegaCorp라는 보험회사에서 일하는 두명의 Smalltalk 프로그래머의 3일의 이야기이다. 우리는 Don 과(OOP에 대해서는 초보지만 경험있는 사업분석가) Jane (OOP와 Pattern 전문가)의 대화내용을 듣고 있다. Don 은 그의 문제를 Jane에게 가져오고, 그들은 같이 그 문제를 해결한다. 비록 여기의 인물들의 허구의 것이지만, design 은 실제의 것이고, Smalltalk로 쓰여진 실제의 시스템중 일부이다. 우리의 목표는 어떻게 design pattern이 실제세계의 문제들에 대한 해결책을 가져다 주는가에 대해 설명하는 것이다.
2.1 Scene One : State of Confusion
Our story begins with a tired-looking Don approaching Jane's cubicle, where Jane sits quietly typing at her keyboard.
우리의 이야기는 지친표정을 지으며 제인의 cubicle (음.. 사무실에서의 파티클로 구분된 곳 정도인듯. a small room that is made by separating off part of a larger room)로 가는 Don 과 함께 시작한다. 제인은 자신의 cubicle에서 조용히 타이핑하며 앉아있다.
Don : Hey, Jane, could you help me with this problem? I've been looking at this requirements document for days now, and I can't seem to get my mind around it.
Jane : That's all right. I don't mind at all. What's the problem?
Don : It's this claims-processing workflow system I've been asked to design. I just can't see how the objects will work together. I think I've found the basic objects in the system, but I don't understand how to make sense from their behaviors.
Jane : Can you show me what you've done?
Don : Here, let me show you the section of the requirements document I've got the problem with:
1. Data Entry. This consists of various systems that receive health claims from a variety of different sources. All are logged by assigning a unique identifier. Paper claims and supporting via OCR (optical character recognition) to capture the data associated with each form field.
2. Validation. The scanned and entered forms are validated to ensure that the fields are consistent and completely filled in. Incomplete or improperly filled-in forms are rejected by the system and are sent back to the claimant for resubmittal.
3. Provider/Plan Match. An automated process attempts to mach the plan (the contract unser which the claim is being paid) and the health care provider (e.g., the doctor) identified on the claim with the providers with which the overall claim processing organization has a contract. If there is no exact match, the program identifies the most likely matches based on soundex technology (an algorithm for finding similar-sounding words). The system displays prospective matches to knowledge workers in order of the likeinhood of the match, who then identify the correct provider.
4. Automatic Adjudication. The system determines whether a claim can be paid and how much to pay if and only if there are no inconsistencies between key data items associated with the claim. If there are inconsistencies, the system "pends" the claim for processing by the appropriate claims adjudicator.
5. Adjudication of Pended Claims. The adjudicator can access the system for a claim history or a representation of the original claim. The adjudicator either approves the claim for payment, specifying the proper amount to pay, or generates correspondence denying the claim.
Validation. 스캔되고 입력되어진 form들은 각 필드들에 대해 일관성보증과 모든 폼이 완전히 채워졌는지에 대한 보증을 위해 검증작업을 거친다. 불완전하거나 적절치 못한 입력은 시스템에 의해 reject되고, 재확인을 위해 요구자에게 도로 보내진다.
- DebuggingSeminar_2005/AutoExp.dat . . . . 1 match
[[TableOfContents]]
Visual C++ .net 에 있는 파일이다. {{{~cpp C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\Debugger}}} 에 존재한다.
; Copyright(c) 1997-2001 Microsoft Corporation. All Rights Reserved.
; elements. The expansion follows the format given by the rules
; To find what the debugger considers the type of a variable to
; optional Watch format specifier.
; brackets ([]) indicate optional items.
; format Watch format specifier. One of the following:
; Letter Description Sample Display
; l,h long or short prefix for 00406042,hx 0x0c22
; e Signed scientific-notation 3./2.,e 1.500000e+000
; There are some special entries allowed in the AutoExpand section:
; second argument is the name of the export from the DLL to use. For
; further information on this API see the sample called EEAddIn.
CArchiveException =cause=<m_cause>
CFileException =cause=<m_cause> OS Error=m_lOsError
CMemFile =pos=<m_nPosition> size=<m_nFileSize>
std::pair<*> =first=<first> second=<second>
; This section lets you define your own errors for the HRESULT display.
- DesignPatterns/2011년스터디 . . . . 1 match
* HolubOnPatterns를 함께 읽는 스터디.
* [http://onoffmix.com/event/3297 Joseph Yoder와의 만남]
- Django스터디2006 . . . . 1 match
[[TableOfContents]]
|| 우용 || wooyongyi(골뱅이)hotmail.com ||
|| 9/21 || Django 환경 구축 + POST, GET , SESSION, COOKIE 에 대한 설명, Django로 만들고 싶은것에 대한 논의(과제 확인, 웹서버 부분 못들은 사람 물어봐서 했는지 체크) || 상협, 지훈, 우용, 준석, 지원 ||
* [http://www.python.or.kr:8080/python/LectureNotes/] 이것은 Python 따라하기 좋은 튜토리얼. 이것 쭉 한번 해보면 파이썬 문법 대략 익히게 됨.
* [(zeropage)PythonLanguage] : Python에 대해서 더 자세히 알고 싶으면 왼쪽 페이지 참고.
* 혼자서 Python 연습하면서 막힐 때마다 자꾸만 C 문법이 떠오르고 그 때마다 우리 Park 재화님의 프로젝트위주의 수업이
* C보다 Python 이 20000배 더 쉬운뎅 - [(namsang)]
|| [송지훈] || 물론 Python || 15분 || [while문 구구단] ||
* [http://biohackers.net/wiki/DjangoOnFramework2.1 블러그만드는참고자료]
- DoWeHaveToStudyDesignPatterns . . . . 1 match
다음은 우선성의 문제입니다. 과연 DesignPatterns라는 것이 학부시절에 몇 달을 투자(실제로 제대로 공부하려면 한 달로는 어림도 없습니다)할만 한 가치가 있냐 이거죠. 기회비용을 생각해 봅시다. 좀 더 근본적인 것(FocusOnFundamentals)을 공부하는 것은 어떨까요?
- Eclipse . . . . 1 match
1. {{{~cpp PopUp}}} -> New -> CVS Repositary Location
||F2 || Show Tooltip Description , 해당 소스의 {{{~cpp JavaDoc}}}을 보여준다.||
||F3 || Open Declaration, 해당 인자의 선언 부분을 보여준다.||
* 결론이 말이지. consortium에 이렇게 정의 되어 있다는.. 아 영어여...그리고 아예 Subproject에 Platform, JDT, PDE로 나누어 있구만. 부지런한 사람들 --상민
Eclipse is an open platform for tool integration built by an open community of tool providers. ...
혹시 그 큰 규모라는 것이 어느정도 인지 알수 있을까요? 라인을 쉽게 세기 위해서 현 Eclipse를 새로 하나 복사해서 Eclipse용 metric 툴은 http://metrics.sourceforge.net/ 를 설치하시고 metric전용으로 사용하여 쓰면 공정-'Only counts non-blank and non-comment lines inside method bodies'-하게 세어줍니다. (구지 복사하는 이유는 부하를 많이 줍니다.) -- NeoCoin
- EnglishSpeaking/TheSimpsons/S01E05 . . . . 1 match
Friend : Nelson's at the Elm Street Video Arcade.
we start the saturation bombing.
We got the water balloons?
Is it okay if they say "Happy Birthday" on the side?
One will circle around this way to cut off the enemy's retreat,
Friend : Nelson's at the arcade, General.
Bart : Battle stations.
- ExtremeProgramming . . . . 1 match
초기 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 을 가능하게 한다.
그리하여 각 Wiki:EngineeringTask 들이 구현되고, 궁극적으로 UserStory 의 Story들이 모두 진행되면 Mission Complete. (아.. 어제 Avalon 의 영향인가. --;)
* On-site customer: 같은 작업실 내에서 프로그래머와 커스터머가 언제든지 대화할 수 있도록 보장한다.
* TestDrivenDevelopment : Programming By Intention. 프로그래머의 의도를 표현하는 테스트코드를 먼저 작성한다. 그렇게 함으로서 단순한 디자인이 유도되어진다. (with ["Refactoring"])
* SpikeSolution: 주어진 문제에 대한 구현의 난이도를 예측하기 위한 작은 실험 프로그래밍.
* ContinuousIntegration: 매일 또는 수시로 전체 시스템에 대한 building 과 testing을 수행한다.
* http://xprogramming.com - Ron Jeffries 의 글들이 많다.
* http://www.freemethod.org:8080/bbs/BBSView?boardrowid=3220 - 4가지 가치 (Communication, Simplicity, Feedback, Courage)
See Also HowToStudyXp , ["XpQuestion"]
- FortuneCookies . . . . 1 match
* "Say it, don't spray it!"
* "It seems strange to meet computer geeks who're still primarily running Windows... as if they were still cooking on a wood stove or something." - mbp
* "Perl is executable line noise, Python is executable pseudo-code."
* Good fortune in love, as well as a better position.
* If you always postpone pleasure you will never have it. Quit work and play for once!
* Advancement in position.
* You will soon meet a person who will play an important role in your life.
* Even the boldest zebra fears the hungry lion.
* Money will say more in one moment than the most eloquent lover can in years.
* Money may buy friendship but money can not buy love.
* Might as well be frank, monsieur. It would take a miracle to get you out of Casablanca.
* You have a will that can be influenced by all with whom you come in contact.
* You have the power to influence all with whom you come in contact.
* Alimony and bribes will engage a large share of your wealth.
* You will have long and healthy life.
* You will step on the soil of many countries.
* He who invents adages for others to peruse takes along rowboat when going on cruise.
* You are tricky, but never to the point of dishonesty.
* Of all forms of caution, caution in love is the most fatal.
* The person you rejected yesterday could make you happy, if you say yes.
- GRASP . . . . 1 match
[[TableOfContents]]
== Information Expert ==
== High Cohesion ==
== Controller ==
Pluggable Software Component
Protected Variations
== Indirection ==
== Pure Fabrication ==
Pure Fabrication 클래스를 식별하는 것은 중대한 일이 아니다. 이는 어떤 소프트웨어 클래스는 도메인을 표현하기 위한 것이고 어떤 소프트웨어 클래스는 단순히 객체 설계자가 편의를 위해 만든 것이라는 일반적인 점을 알리기 위한 교육적인 개념이다. 편의를 위한 클래스들은 대개 어떤 공통의 행위들을 함께 그룹짓기 위해 설계되며, 이는 표현적 분해보다는 행위적 분해에 의해 생성된다.
* 표현적 분해(Representational Decomposition) : 도메인 상의 어떤 것에 연관되어 있거나 그것을 표현
* 행위적 분해(Behavioral Decomposition) : 행위를 그룹화하거나 알고리즘에 따라 책임을 할당, 몇몇 관련된 행위나 방법들을 그룹화하도록 개발자가 편의상 만들어 낸 클래스, 행위적 분해에 의한 것
== Protected Variations ==
그 외에 [DavidParnas]의 On the Criteria To Be Used in Decomposing Systems Into Modules에서 [InformationHiding] 개념을 소개했고 [DataEncapsulation]과 혼동하는 경우가 많았다고 말해주네요. [OCP]에 대해서도 이야기해 주고 ...
- Gof/FactoryMethod . . . . 1 match
[[TableOfContents]]
Virtual Constructor ( ["MoreEffectiveC++"] Item 25 참고 )
== Motivation : 동기 ==
여러 문서를 사용자에게 보여줄수 있는 어플리케이션에 대한 Framework에 대하여 생각해 보자. 이러한 Framework에서 두가지의 추상화에 대한 요점은, Application과 Document클래스 일것이다. 이 두 클래스다 추상적이고, 클라이언트는 그들의 Application에 알맞게 명세 사항을 구현해야 한다. 예를들어서 Drawing Application을 만들려면 우리는 DrawingApplication 과 DrawingDocument 클래스를 구현해야 한다. Application클래스는 Document 클래스를 관리한다. 그리고 사용자가 Open이나 New를 메뉴에서 선택하였을때 이들을 생성한다.
Application(클래스가 아님)만들때 요구되는 특별한 Document에 대한 Sub 클래스 구현때문에, Application 클래스는 Doment의 Sub 클래스에 대한 내용을 예측할수가 없다. Application 클래스는 오직 새로운 ''종류'' Document가 만들어 질때가 아니라, 새로운 Document 클래스가 만들어 질때만 이를 다룰수 있는 것이다. 이런 생성은 딜레마이다.:Framework는 반드시 클래스에 관해서 명시해야 되지만, 실제의 쓰임을 표현할수 없고 오직 추상화된 내용 밖에 다를수 없다.
Application의 Sub 클래스는 Application상에서 추상적인 CreateDocument 수행을 재정의 하고, Document sub클래스에게 접근할수 있게 한다. Aplication의 sub클래스는 한번 구현된다. 그런 다음 그것은 Application에 알맞은 Document에 대하여 그들에 클래스가 특별히 알 필요 없이 구현할수 있다. 우리는 CreateDocument를 호출한다. 왜냐하면 객체의 생성에 대하여 관여하기 위해서 이다.
* ConcreteProduct (MyDocument)
* Creator (Application)
* Procunt 형의 객체를 반환하는 Factory Method를 선언한다. Creator는 또한 기본 ConcreteProduct객체를 반환하는 factory method에 관한 기본 구현도 정의되어 있다.
* ConcreteCreator (MyApplication)
* ConcreteProduct의 인스턴스를 반환하기 위한, factory method를 오버라이드(over ride) 한다.
== Collaborations : 협력 ==
Creator는 factor method가 정의되어 있는 Creator의 sub클래스에게 의지한다 그래서 Creator는 CooncreteProduct에 적합한 인스턴스들을 반환한다.
== Consequences : 결론 ==
Factory method는 당신의 코드에서 만들어야한 Application이 요구하는 클래스에 대한 기능과 Framework가 묶여야할 필요성을 제거한다. 그 코드는 오직 Product의 인터페이스 만을 정의한다.; 그래서 어떠한 ConcreteProduct의 클래스라도 정의할수 있게 하여 준다.
factory method의 잠재적인 단점이라고 한다면 클라이언트가 아마도 단지 특별한 ConcreteProduct객체를 만들기위해서 Creator클래스의 sub클래스를 가지고 있어야 한다는 것일꺼다. 클라이언트가 어떤 식으로든 Creator의 sub클래스를 만들때의, sub클래스를 만드는 것자체는 좋다. 하지만 클라이언트는 이런것에 신경쓸 필요없이 로직 구현에 신경을 써야 한다.
A potential disadvantage of factory methods is that clients might have to subclass the Creator class just to create a particular ConcreteProduct object. Subclassing is fine when the client has to subclass the Creator class anyway, but otherwise the client now must deal with another point of evolution.
Here are two additional consequences of the Factory Method pattern:
Ducument에제에서 Document클래스는 factory method에 해당하는, 자료를 열람하기 위한 기본 파일 다이얼로그를 생성하는 CreateFileDialog이 호출을 정의할수 있다. 그리고 Document sub클래스는 이러한 factory method를 오버 라이딩해서 만들고자 하는 application에 특화된 파일 다이얼로그를 정의할수 있다. 이러한 경우에 factory method는 추상적이지 않다. 하지만 올바른 기본 구현을 제공한다.
2. ''클래스 상속 관게에 수평적인(병렬적인) 연결 제공''(''Connects parallel class hierarchies.'') 여태까지 factory method는 오직 Creator에서만 불리는걸 생각해 왔다. 그렇지만 이번에는 그러한 경우를 따지는 것이 아니다.; 클라이언트는 수평적(병렬적)인 클래스간 상속 관계에서 factory method의 유용함을 찾을수 있다.
- HelpOnConfiguration . . . . 1 match
MoniWiki는 `config.php`에 있는 설정을 입맛에 맛게 고칠 수 있다. config.php는 MoniWiki본체 프로그램에 의해 `include`되므로 PHP의 include_path변수로 설정된 어느 디렉토리에 위치할 수도 있다. 특별한 경우가 아니라면 MoniWiki가 설치된 디렉토리에 config.php가 있을것이다.
모니위키의 몇몇 플러그인중 외부 프로그램을 사용하는 프로그램은 환경변수 PATH를 참조하여 외부 프로그램을 호출하게 된다. 이때 PATH의 설정이 제대로 맞지 않아 외부 프로그램이 제대로 실행되지 않는 경우가 있다. 이 경우 config.php에서 `$path`를 고쳐보라.
{{{RCS}}}는 모니위키에서 버전관리를 {{{RCS}}}를 통해 제공하고 있다. [[MoniWikiRCS]] 페이지 참조.
만약 시스템 차원에서 rcs를 지원하지 않는다면 rcs를 컴파일해서 사용해보라. 예를 들어 모니위키가 설치된 디렉토리가 {{{moniwiki}}}이고
그 하위에 {{{bin}}} 디렉토리를 새롭게 만든 후에 {{{rcs}}}관련된 실행파일([[MoniWikiRCS]] 페이지 참조)을 {{{moniwiki/bin}}}아래에 복사하고
$path='/usr/bin:/bin:/usr/local/bin:/home/to_your_public_html/moniwiki/bin'; # 유닉스의 기본 실행파일 디렉토리 + bin의 full path
윈도우에서 gvim을 사용하여 작동된다. 이 경우 {{{$path}}}설정을 제대로 해주어야 하는데, 예를 들어 다음과 같은 식으로 `config.php`에 설정을 한다.
config.php에 `$security_class="needtologin";`를 추가하면 로그인 하지 않은 사람은 위키 페이지를 고칠 수 없게 된다. 로그인을 하지 않고 편집을 하려고 하면 경고 메시지와 함께, 가입을 종용하는 간단한 안내가 나온다.
* MoniWikiACL
메뉴의 대문(FrontPage)및 로고 그림이 연결하고 있는 페이지는 config.php의 다음 변수를 설정한다.
* $frontpage='FrontPage';
* $logo_page=$frontpage;
/!\ wiki.php에 정의되어 있는 WikiDB 클래스를 보면, 우선 하드코딩된 기본 설정이 있고, config.php에서 읽은 설정 사항을 그 위에 덧씌우는 방식이다.
/!\ monisetup.php은 config.php를 변경할 수 있으나, 간단한 변경만 지원하고 세세한 변경은 지원하지 않는다. 최근 1.1.3 버전부터는 여러줄의 config.php 설정을 읽고 수정할 수 있다. 단, monisetup.php를 사용할 경우 코멘트는 모두 제거가 되므로 주의해야 한다.
config.php에서 $menu, $icon, $icons를 설정할 수 있습니다.
* MoniWikiOptions
* MoniWikiMarkets
* MoniWikiTips
[[Navigation(HelpOnAdministration)]]
- HelpOnHeadlines . . . . 1 match
''' {{{{font-size:20px}섹션 제목}}} '''
See also TableOfContentsMacro
[[Navigation(HelpOnEditing)]]
- HelpOnInstallation . . . . 1 match
[[TableOfContents]]
`rcs`가 설치되었는지 확인한다. {{{/usr/bin/rlog /usr/bin/ci /usr/bin/co}}}등등의 실행파일이 있어야 한다. {{{/usr/bin/merge}}}도 필요하다. PHP gettext 모듈이 필요하다. See also MoniWikiRcs
* 윈도우즈 사용자의 경우는 아파치 웹서버를 제외한 PHP + rcs + 기타 몇몇 프로그램이 함께 패키징 된 apmoni-setup-1.1.x.exe를 제공합니다.
* 윈도우즈 사용자의 경우 micro apache 웹서버가 포함된, mapmoni-setup-1.1.x.exe 를 받으실 수도 있습니다. (단, 여기서 .x. 는 3 이상)
* 윈도우즈에서 모니위키를 설치하는 방법은 ApacheMoniwikiInstaller을 참고 하십시오.
$ tar --same-permissions -xzvf moniwiki-1.1.x.tgz
압축을 풀면 moniwiki라는 디렉토리 밑에 화일들이 있는 것을 볼 수 있다.
기본 값은 {{{/moniwiki}}}이다.
== monisetup.sh를 실행한다 ==
monisetup.sh를 실행하여 디렉토리의 쓰기권한을 조정한다. (기본값은 2777) 이렇게 하여야 MoniSetup.php를 실행시킬 수 있게 된다.
( 실행명령어는 프롬포트상에서 {{{sh monisetup.sh}}} )
/!\ 윈도우즈 환경에서는 곧바로 monisetup.php를 실행하시면 됩니다. (구버전의 모니위키에서는 monisetup.bat를 실행해야 합니다).
== MoniSetup ==
처음 설치할 경우 MoniSetup을 이용해서 config.php를 만들게 된다.
이 값을 제대로 지정하면 MoniSetup에서 다음과 같은 로고 그림을 볼 수 있다.
http://moniwiki.kldp.org/imgs/moniwiki-logo.png
1. 처음 실행하면 {{{monisetup.php}}}가 자동으로 뜨며 자신의 환경에 맞는 config.php를 가 만들어진다.
1. 다시 monisetup.php를 열면 필요한 몇몇 디렉토리가 만들어진다.
1. MoniWiki를 처음 설치할 경우는 WikiSeed를 심을것인지를 선택한다.
* MoniWikiOptions 모니위키의 다양한 옵션을 조정한다.
- HelpOnPageCreation . . . . 1 match
하위 페이지를 만들면 조금 특별하게 처리됩니다. 하위페이지도 일반 페이지와 마찬가지 방식으로 만들 수 있으며 {{{[[페이지/하위페이지]]}}}와 같은 식으로 연결되는 페이지입니다. 하위페이지에 대한 설명은 HelpOnEditing/SubPages 페이지를 참고하세요.
[[Anchor(variablesubstitution)]]
[[Navigation(HelpContents)]]
- HelpOnProcessingInstructions . . . . 1 match
* {{{#action}}} ''action name'': 페이지에 대한 기본 액션을 ''EditText'' 이외의 다른 것으로 바꿔준다.
* {{{#filter}}} ''filter1'' | ''filter2'': apply MoniWikiFilters supported by the 모니위키 '''1.1.0'''부터
See also MoniWikiProcessors for more complete supported {{{#FORMAT}}} list.
Please see HelpOnEditing.
- HelpOnSmileys . . . . 1 match
[[Navigation(HelpOnEditing)]]
- HelpOnUpdating . . . . 1 match
[[TableOfContents]]
MoniWiki는 기본적으로 backup과 restore 액션을 지원하므로 다른 사이트로 이전하는 것을 쉽게 할 수 있으며, rcs를 설치하지 않은 위키에 대해서도 정기적은 backup만으로 자신의 위키 데이타를 비교적 안전하게 보존할 방법을 제공합니다.
모니위키를 설치한 후에 `config/*` 및 `config.php`를 제외한 특별히 다른 아무 소스파일도 변경된 것이 없다면, 새로 다운로드 받은 압축파일을 단순히 덮어 쓰는 것 만으로도 업그레이드가 완료됩니다.
위의 단계를 통해 기본적인 업그레이드가 완료됩니다. 그 다음에는 모니위키가 설치되어 있는 디렉토리에 위치한 예전의 `config.php`는 새 버전의 `config.php.default`를 참고해서 바뀐 점이 없는지 혹은 새로운 기능이 첨가된 것은 없는지 점검합니다.
가장 쉽게 설정하는 방법은, 기존의 `config.php` 파일을 다른 이름으로 바꾼 후에 (예를 들어 `config.php.my`) `monisetup.php`를 브라우저를 통해 열어서 `config.php`를 다시 만드는 것입니다. (이 때 `chmod 2777 . data` 명령으로 미리 퍼미션을 조정해 두어야 합니다)
새로 추가된 옵션은 `config.php.default` 파일에 담겨 있으므로 이 파일을 열어서 확인해 보실 수 있습니다.
업데이트중에 발생한 문제점은 http://kldp.net/projects/moniwiki 를 통해 문의해보시기 바랍니다.
[[Navigation(HelpOnAdministration)]]
- HighResolutionTimer . . . . 1 match
'''High-Resolution Timer'''
A counter is a general term used in programming to refer to an incrementing variable. Some systems include a high-resolution performance counter that provides high-resolution elapsed times.
If a high-resolution performance counter exists on the system, the QueryPerformanceFrequency function can be used to express the frequency, in counts per second. The value of the count is processor dependent. On some processors, for example, the count might be the cycle rate of the processor clock.
The '''QueryPerformanceCounter''' function retrieves the current value of the high-resolution performance counter (if one exists on the system). By calling this function at the beginning and end of a section of code, an application essentially uses the counter as a high-resolution timer. For example, suppose that '''QueryPerformanceFrequency''' indicates that the frequency of the high-resolution performance counter is 50,000 counts per second. If the application calls '''QueryPerformanceCounter''' immediately before and immediately after the section of code to be timed, the counter values might be 1500 counts and 3500 counts, respectively. These values would indicate that .04 seconds (2000 counts) elapsed while the code executed.
- HolubOnPatterns . . . . 1 match
* [http://www.yes24.com/24/Goods/2127215?Acode=101 Holub on Patterns: 실전 코드로 배우는 실용주의 디자인 패턴] - 번역서
* [http://www.yes24.com/24/goods/1444142?scode=032&OzSrank=1 Holub on Patterns: Learning Design Patterns by Looking at Code] - 원서
* [HolubOnPatterns/밑줄긋기]
- HolubOnPatterns/밑줄긋기 . . . . 1 match
[[TableOfContents]]
* 켄 아놀드는 다음과 같이 말한다. "정보가 아닌 도움을 요청하라(Ask for help, not for information)."
* 깨지기 쉬운 기반 클래스 문제를 프레임워크 기반 프로그래밍에 대한 언급 없이 마칠 수는 없다. MFC(Microsoft's Foundation Class) 라이브러리와 같은 프레임워크는 클래스 라이브러리를 만드는 인기있는 방법이 되었다.
* peon 이런거 없이 그냥 내부 클래스를 Employee()를 implement시킨걸로 반환시켜버리는군. 이름조차 없으니 private Peon으로 만든것보다 심한데? 정말 상상도 못할 클래스임 - [김준석]
* ''''유일성'과''' ''''전역 접근'이란''' 조건을 만족시키면 Singleton 패턴의 실체화라 할 수 있다. Employee factory는 두 조건을 모두 만족시키므로 합당한 Singleton 패턴 실체화이다.
==== Singleton에서의 스레딩 이슈 ====
class Singleton
{ private static Singleton instance = null;
{ instance = new Singleton();
==== Singleton 죽이기 ====
* 또한 셧다운 훅 안에서 Singleton을 사용한다면 죽었다 되살아나는 좀비 Singleton을 만들 위험도 있다.
* 앞에서 객체를 생성할 때 Singleton 패턴과 Abstract Factory 패턴이 자주 함께 사용된다고 설명했다. '''그러므로''' Abstract Factory에 대해 좀 더 알아보기로 하자.
* 결과적으로 프로그래머는 외부 코드에 영향을 미치지 않으면서 구체 Peon 클래스를 마음대로, 심지어 그 이름조차도 바꿀 수 있다.
* Abstract Factory 패턴의 주요 장점은 격리(isolation)이며, 인터페이스를 통해 객체 생성을 가능 하도록 해준다.
* 관점을 바꾸어 보면 {{{URLConnection은 InputStream}}} 구현체들을 생성하는 Abstract Factroy이기도 하다.
* 객체들(Observer)에 주기적으로 클록 틱(clock tick)이벤트를 통지한다. 이 경우는 Universe가 ActionListener 인터페이스를 구현한 익명의 내부 클래스를 통해 이벤트를 받는다.
* Clock이 전형적인 GoF Singleton 임을 주의 깊게 보기 바란다.
* 좀 더 단순한 구현을 사용하려 시도해 보았늗네 Clock Singleton이 너무 일찍 생성되어 메뉴가 올바로 설정되지 않는 문제가 발생했다. '고전적'인 Singleton이 이런 문제를 해결해 준다.
* Java는 플렛폼 기반이기 때문에 나오는 문제로 '고전적'인 Singleton은 컴파일동안 해당 Singleton 클래스를 구성할 충분한 정보를 가지는 기회를 주기때문에 이런문제를 해결해 주는것이다. 역시 책을 읽은 보람이 있군! - [김준석]
* 만약 이와 같은 '기아'를 없애기 위해 fireEvent()에서 Synchronized를 제거한다 하더라도 역시 고약한 문제가 발생한다. 어떤 스레드에서 subscribe()혹은 cancle()메소드를 수행하는 동안, 다른 스레드에서 fireEvent()를 수행시킬 수 있기 대문이다. 동기화를 하지 않는다면 구독 객체 리스트를 수정하는 도중에 다른 스레드에서 접근할 수 있게 되기 때문에 결과적으로 subscribers 리스트가 망가질 위험이 있다.
- HowToStudyXp . . . . 1 match
* XP Installed (Ron Jeffries et al) : C3 프로젝트에 적용한 예, 얻은 교훈 등
* The Timeless Way of Building : 패턴 운동을 일으킨 Christopher Alexander의 저작. On-site Customer, Piecemeal Growth, Communication 등의 아이디어가 여기서 왔다.
* Software Project Survival Guide (Steve McConnell) : 조금 더 "SE"적인 시각.
* Agile Software Development with [http://www.controlchaos.com/ SCRUM](Schwaber Ken) : 최근 Scalability를 위해 XP+[http://www.controlchaos.com/ SCRUM]의 시도가 agile 쪽의 큰 화두임.
* XP Conference, XP Universe 등의 논문들 (특히 최근 것들)
* ["RonJeffries"]
*Ralph Johnson
'''Agile Software Development with [http://www.controlchaos.com/ SCRUM]''' by Schwaber Ken
'''Extreme Programming in Action''' by Martin Lippert et al.
''all reviews coming soon by JuNe''
- InterWikiIcons . . . . 1 match
The InterWiki Icon is the cute, little picture that appears in front of a link instead of the prefix established by InterWiki. An icon exists for some, but not all InterMap references.
You can set InterWikiIcon to InterMap entries by putting an icon file of name lowercased InterWiki entry name, e.g; meatball for MeatBall, under imgs directory.
* Acronym:BoF
* MoinMoin:MoinMoinDiscussions
* SourceForge:projects/moniwiki
== Discussions ==
InterWikiIcon also used in the Unreal:Unreal Wiki.
Only lovel-16.png included, while you WkPark arguing to rename it LovolNet. :P
Any recommendations on what software to use to shrink an image to appropriate size?
* [[Icon(moin-new.gif)]]Amazon - http://puzzlet.org/imgs/amazon-16.png
* [[Icon(moin-new.gif)]][http://www.worrynet.com/jandi/wiki.cgi/%C0%DC%B5%F0%B9%E7 Jandi] - http://puzzlet.org/imgs/jandi-16.png (16x16x16M)
* [[Icon(moin-new.gif)]][http://ko.wikipedia.org/ KoWikipedia] - http://puzzlet.org/imgs/kowikipedia-16.png (16x16x16M)
* Freefeel - http://freefeel.org/upload/freefeelz16.png (as recommended at Freefeel:FreeFeelZone 16x15x256) or http://puzzlet.org/imgs/freefeel-16-new.png (16x16x16)
* NoSmoke - http://puzzlet.org/imgs/nosmoke-16.png (adjusted color-resolution down to 16col: 16x16x16)
For more information, check http://puzzlet.org/plots/InterWikiIcons
- JavaScript/2011년스터디/URLHunter . . . . 1 match
function redraw(){
location.href="./urlhunter.php#"+str+"||| time:"+(30-time);
function spawn(){
function gametimer(){
location.href="./urlhunter.php#Game Over";
function init(){
function pause(){
function keyevent(){
<body onload="init();" onkeydown="keyevent();">
<input type="button" value="pause" onclick="pause();"/>
Hello, PHP On CentOS6! </body>
<body onload ="replash()">
You should kill all the monsters.<br>
Your gun point is 'O' and Others are Monsters.
var replash = function(){
var URLChange = function(){
location.href = CrtURL + " You caught \'" + map.r.join('') + "\'";
location.href = CrtURL + " "+timer.t +"|" + map.s.join('') + "|"+timer.t + " You caught \'" + map.r.join('') + "\'";
document.onkeydown = KeyInput;
function KeyInput(e){
- JoelOnSoftware . . . . 1 match
http://korean.joelonsoftware.com/
[임인택]은 ZPHomePage보다는 ZeroWiki를 이용하기 때문에 자유게시판을 잘 안보는데, 우연히 갔다가 JoelOnSoftware에 관한 글이 올라온 걸 보게 되었다. 이전처럼 자유게시판 업데이트 되었을때, RecentChanges에 반영되었으면 좋으련만...
- KDP_토론 . . . . 1 match
* 현재의 이 WikiWiki 는 'Only for Study' 용이므로, 목적에 맞지 않는 사적인 페이지는 허용하지 않습니다.
* 로그인의 실명화 - UserPreferences 에 자신의 이름과 password를 등록시키면 자신의 SessionID가 붙는 MoinMoin 바로가기를 얻을 수 있을것임. 그 링크를 즐겨찾기에 놓고 사용하면 자동으로 로그인이 된 상태로 모인모인에 접속가능.
- Kongulo . . . . 1 match
#!/usr/bin/env python
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
import pythoncom
- Knows basic and digest HTTP authentication
For usage instructions, run with -h flag.
Requires Python 2.4 and the win32all extensions for Python 2.4 on Windows.
- LionsCommentaryOnUnix . . . . 1 match
http://images.amazon.com/images/P/1573980137.01.MZZZZZZZ.gif [[BR]]ISBN:1573980137
노스모크세미나(Seminar:LionsCommentaryOnUnix) 위키에서 퍼왔습니다.
에릭 레이먼드의 사전에 [http://watson-net.com/jargon/jargon.asp?w=Lions+Book Lions+Book] 라고 등재되어 있는 이 유서 깊은 책은 처음에는 불법복제판으로 나돌다가(책 표지에 한 명은 망보고 한 명은 불법 복제하는 그림이 있다) 드디어 정식 출간하게 되었다. 유닉스의 소스 코드와 함께 주석, 그리고 라이온의 "간단 명료 쌈박"한 커멘트가 함께 실려있다.
내 생각엔 유닉스 수업 때 자질구레한 해석서보다 이 책을 갖고 직접 소스 코드를 주물럭거리며 공부하는 것이 훨씬 더 재미있고, 더 많은 공부가 될 듯 싶다. 시그날이 어떻게 처리되는가 궁금한가? 간단하다. Use the source, Luke, along with the Lion's Book.
- ListCtrl . . . . 1 match
m_ctrlZoneList.ScreenToClient(&Index);
ListIndex = m_ctrlZoneList.HitTest(Index);
void CBlockDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
// TODO: Add your control notification handler code here
POSITION pos = m_ctrlBlockList.GetFirstSelectedItemPosition();
- MFC/ScalingMode . . . . 1 match
{{|[[TableOfContents]]|}}
= 확대 기능시의 CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) =
- MFC/Serialize . . . . 1 match
{{| [[TableOfContents]] |}}
이를 위해서 MFC는 직렬화(Serialization)이라는 기능을 제공한다. 이 기능을 통해서 데이터를 저장하고 다시 읽는데 들이는 노력을 최소화 할 수 있다.
protected: // create from serialization only
// ClassWizard generated virtual function overrides
virtual BOOL OnNewDocument();
(float, double, BYTE, int, LONG, WORD, DWORD, CObject*, CString, SIZE, CSize, POINT, CPoint, RECT, CRect, CTime, CTimeSpan 이 오버라이딩 되어있다.)
Introspection 기능이 있는 다른 언어들에서의 Serialize 하는 모습에 대해서는 반드시 관찰해볼 필요가 있음.~ --[1002]
- MFCStudy_2001/MMTimer . . . . 1 match
[[TableOfContents]]
* OnTimer와 SetTimer의 조합으로 구현되는 가장 일반적인 타이머는 정확하지 않습니다.
MMRESULT timeSetEvent(UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent);
* uResolution : 대개 0을 넣습니다만... 정확도 같다고 합니다.
* TIME_ONESHOT : CALLBACK함수가 딱 한번만 실행됩니다.
- Applications should not call any system-defined functions from inside a callback function, except for PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg, and OutputDebugString.[[BR]]
- 어플리케이션은 콜백 함수 내부로부터 다음 함수를 제외하고는 시스템 정의 함수를 부를 수가 없다. : PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg, and OutputDebugString.[[BR]]
- MajorMap . . . . 1 match
== Instructions:language of the Computer ==
Keywords are InstructionSetArchitecture, Register, Memory, Address(,and...)
InstructionSetArchtecture(ISA) is an abstract interface between the hardware and the lowest-level sogtware. Also called simply architecture.
Registers are a limited number of special locations built directly in hardware. On major differnce between the variables of a programming language and registers is the limited number of registers, typically 32(64?) on current computers.
Memory is the storage area in which programs are kept when they are runngin and that contains the data needed by the running programs. Address is a value used to delineate the location of a specific data element within a memory array.
ALU is is a part of the execution unit, a core component of all CPUs. ALUs are capable of calculating the results of a wide variety of basic arithmetical computations such as integer and floating point arithmetic operation(addition, subtraction, multiplication, and division), bitwise logic operation, and bit shitf operation. Therefore the inputs to the ALU are the data to be operated on (called operands) and a code from the control unit indicating which operation to perform. Its output is the result of the computation.--from [http://en.wikipedia.org/wiki/ALU]
Two's complement is the most popular method of representing signed integers in computer science. It is also an operation of negation (converting positive to negative numbers or vice versa) in computers which represent negative numbers using two's complement. Its use is ubiquitous today because it doesn't require the addition and subtraction circuitry to examine the signs of the operands to determine whether to add or subtract, making it both simpler to implement and capable of easily handling higher precision arithmetic. Also, 0 has only a single representation, obviating the subtleties associated with negative zero (which is a problem in one's complement). --from [http://en.wikipedia.org/wiki/Two's_complement]
A Gray code is a binary numeral system where two successive values differ in only one digit. --from [http://en.wikipedia.org/wiki/Gray_code]
- MoniWikiACL . . . . 1 match
/!\ since MoniWiki 1.1.2
[[TableOfContents]]
`config.php`에 다음을 넣으면 ACL SecurityPlugin이 활성화됩니다.
@Guest Anonymous # priority를 지정하지 않으면 기본값 2
/!\ 여기서 Anonymous 사용자는 @Guest로 지정되어 있으며, @Guest는 미리 정의된 그룹이 아닙니다.
HelpOn.* @ALL deny edit,savepage
@Guest Anonymous // @Guest 사용자 그룹 정의
# Please don't modify the lines above
# A sample Access Control Lists file for Moniwiki
@Guest Anonymous // @Guest 사용자 그룹 정의
# some POST actions support protected mode using admin password
# some actions allowed to @ALL
# some pages have restrict permission
MoniWiki @ALL deny edit,uploadfile,diff
// MoniWiki 페이지를 @ALL 모든 사용자에게 edit,upload,diff등의 일부 액션을 거부
@Guest Anonymous # @ALL을 제외한 모든 그룹의 priority는 그 값이 지정되지 않으면 2 이다.
@Group2 simon,soo # default group priorty = 2
* Anonymous (@Guest): {{{deny *}}}: 모두 거부 (@Guest그룹의 priority가 높으므로 @ALL에 대해 허용된 것과 무관하게 거부된다)
config.php에 {{{$acl_debug=1}}} 옵션을 넣으면, 어떤 식으로 적용될지를 보여줍니다.
- MoniWikiOptions . . . . 1 match
config.php의 옵션.
/!\ 새롭게 추가되는 다양한 옵션은 config.php.default에 들어있습니다.
[[TableOfContents]]
* 테마를 지정한다. See also MoniWikiTheme
`'''$iconset'''`
* 기본값은 `'moni2'`
* 지정할 수 있는 값으로는 moni,moni2 등이 있다. 디렉토리를 추가하고 파일이름을 똑같게 하면 아이콘을 바꿀 수 있다.
`'''$frontpage="페이지이름";'''`
* 대문을 지정한다. 기본값은 FrontPage.
* 로고를 클릭할 때 가는 페이지를 정한다. 기본값은 $frontpage.
`'''$menu=array('MoniWiki'=>1,'FindPage'=>4,'TitleIndex'=>3,'BlogChanges'=>'','RecentChanges'=>2,'http://kldp.org KLDP'=>9);'''`
* Email Notification을 활성화 한다. 이 기능을 키면 SubscribePlugin을 사용할 수 있다.
`'''$use_sectionedit'''`
`'''$nonexists='simple'''`
== Processor Options ==
* 기본값은 `$imgs_dir.'/moniwiki-logo.gif'`
* 현재 MoniWiki가 존재하는 경로. 기본값은 `'/moniwiki'` (monisetup.php에 의해 자동 결정된다)
* "db3, db2, gdbm"등등. php가 지원하는 dba모듈의 유형을 지정한다. 기본값은 보통 db3이며, 처음 설치시 monisetup.php에 의해 자동으로 결정한다.
* favicon등을 이곳에서 직접 지정할 수 있다.
* (monisetup.php에 의해 자동 결정된다) apache2를 쓸 경우는 '?'를 쓰거나, `AcceptPathInfo on`를 쓰고 '/'로 지정한다.
- MoreEffectiveC++/C++이 어렵다? . . . . 1 match
== Only Class ==
=== RTTI (Real Time Type Information) ===
=== Capsulization - private, public, protected ===
* 다른 언어 : Java는 공통의 플랫폼 차원([http://java.sun.com/j2se/1.3/docs/guide/serialization/ Serialization]), C#은 .NET Specification에서 명시된 attribute 이용, 직렬화 인자 구분, 역시 플랫폼에서 지원
[http://java.sun.com/javaone/javaone2001/pdfs/2733.pdf]
- NUnit/C++예제 . . . . 1 match
[[TableOfContents]]
#pragma once
Assertion::AssertEquals(12, a+b);
Assertion::AssertEquals(-2, a-b);
Assertion::AssertEquals(35, a*b);
Assertion::AssertEquals(1.4, a/b);
#pragma once
Assertion::AssertEquals(12, a+b);
Assertion::AssertEquals(-2, a-b);
Assertion::AssertEquals(35, a*b);
Assertion::AssertEquals(1.4, a/b);
5. 메인프로젝트의 속성탭에 가서 Managed C++ Extension을 체크해준다.
#pragma once
평소대로 하자면 이렇게 하면 될것이다. 하지만 현재 프로젝트는 [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] 를 붙여서 선언해야 한다.
#pragma once
__gc의 가 부여하는 능력과 제약 사항에 대해서는 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmxspec/html/vcmanagedextensionsspec_4.asp __gc] 을 참고하자. NUnit 상에서 테스트의 대상 클래스는 무조건 포인터형으로 접근할수 있다. 이제 테스트 클래스의 내용을 보자.
#pragma once
CDomain* m_pD; // Only Pointer
Assertion::AssertEquals(7, m_pD->add(3,4));
Assertion::AssertEquals(12, m_pD->mult(3,4));
- One/구구단 . . . . 1 match
|| [[TableOfContents]] ||
[One]
- One/김태형 . . . . 1 match
continue;
[One]
- One/남상재 . . . . 1 match
continue ;
[One]
- One/박원석 . . . . 1 match
continue;
[One]
- One/실습 . . . . 1 match
[One]
- One/윤현수 . . . . 1 match
continue;
[One]
- One/주승범 . . . . 1 match
continue ;
[One]
- One/피라미드 . . . . 1 match
|| [[TableOfContents]] ||
[One]
- OneWikiBackupCondition . . . . 1 match
http://zeropage.org/backupOneWiki
- OpenGL스터디_실습 코드 . . . . 1 match
[[TableOfContents]]
void TimerFunction(int value)
//if rectangle collision to window x-axis wall, then reverse it's x-axis direction
//if rectangle collision to window y-axis wall, then reverse it's y-axis direction
glutTimerFunc(33, TimerFunction, 1);
glMatrixMode(GL_PROJECTION);
glutTimerFunc(33, TimerFunction, 1);
* 1. use up, down, left, right key in your key board. then its direction of viewpoint will be changed.
// Done drawing points
// Restore transformations
//change window size event function
glMatrixMode(GL_PROJECTION);
* 2. click mouse right button and you can change the star shape statements by click each menu item.
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
//menu event function
//repaint by calling callback function
//key event function
//repaint by calling callback function
- PHP . . . . 1 match
Professional Homepage Preprocessor 맞나요? 틀리면 수정해주세요~
지금은 Professional HTML Preprocessor이라는 이름으로 쓰입니다. -[강희경]
PHP약어를 풀어쓰면 PHP: Hypertext Preprocessor입니다. 약어의 첫번째 글자가 약어이기 때문에 많은 사람에게 혼란을 줍니다. 이와 같은 약어를 재귀적 약어라고 부릅니다. 궁금하신 분은 Free On-Line Dictionary of Computing사이트를 방문해보세요.
- PairProgramming . . . . 1 match
[[TableOfContents]]
* Communication
* 해당 시간 내 집중도의 상승, Pair Pressure - 평소 프로그래밍 외의 것(프로그래밍 중 음악듣기, 쓸데없는 웹서핑, 메일 읽기)에 대한 잡음을 없앤다. 작업 자체에만 몰두하게 해준다. ["TestDrivenDevelopment"] 와 상호작용이 빠른 언어(["Python"] 등..)를 이용하면 Feedback 이 빠르므로 집중도가 더 높아진다.
PairProgramming 의 다른 적용 예로서 PairSynchronization 이 있다.
또 하나의 문제점으로 제기된 것은, Junior 가 Expert의 권위에 눌릴 수 있다는 것이다. Junior 는 질문에 용감해야 한다. Expert는 답변에 인색해서는 안된다. 열린 마음이 필요한 일이다. (Communication 과 Courge 는 XP 의 덕목이다. ^^)
* 자존심문제? - Pair를 의식해서여서인지 상대적으로 Library Reference나 Tutorial Source 를 잘 안보려고 하는 경향이 있기도 하다. 해당 부분에 대해서 미리 개인적 또는 Pair로 SpikeSolution 단계를 먼저 잡고 가벼운 마음으로 시작해보는 것은 어떨까 한다.
* On-Side Customer 와의 PairProgramming - 프로젝트 중간에 참여해서 걱정했었는데, 해당 일하시는 분과 직접 Pair를 하고 질문을 해 나가면서 전체 프로그램을 이해할 수 있었다. 특히 내가 ["BioInfomatics"] 에 대한 지식이 없었는데, 해당 도메인 전문가와의 Pair로서 서로 상호보완관계를 가질 수 있었다.
ProgrammingContest 에 있는 K-In-A-Row 문제를 푸는 일을 했다.
* 보간법의 오차를 줄이려면 Control Point 를 늘리고, 간격을 좁혀야 할것이다. 잦은 대화는 그 자체가 부하일지 모르겠지만, 또한 오해를 줄일것이다.
* 협동 - 이번경우는 비교적 협동이 잘 된 경우라고 생각한다. Python 으로 문제를 풀기 위한 프로그래밍을 하는데는 석천이, Idea 와 중간에 데이터 편집을 하는데에는 정규표현식을 잘 이용하는 상민이가 큰 도움을 주었다. 적절한 때에 적절하게 주도하는 사람이 전환되었던 것으로 기억.
1002는 VNC와 넷미팅 (그때 넷미팅 화면공유시 XP가 뻗었던 관계로. -_-;) 을 이용, Python을 공유해서 다른 곳에 있는 사람과 SpikeSolution 을 VPP로 시도한 적이 있다. VNC가 화면 refresh가 느리다는 단점 빼고는 별다른 지장이 없었다. 모르는 라이브러리들을 Pair 하는 사람이 다운받아주고, 라이브러리를 설치하고. 모르는 것은 Pair 에게 물어보고, 어떻게 만들까 토론했던 경험이 좋았다.
나는 .NET의 System.Data의 구조를 보고 즉시 PHP에 적용시키고 싶어졌다. ASP.NET에는 SqlConnection , OdbcConnection , OleDbConnection을 제공해 준다. 이 클래스들을 잘 사용하면 DataTier의 종류가 바뀌어도 코드의 수정을 최소화 시킬 수 있다. PHP는 여러가지 종류의 데이타베이스 관련함수를 제공해준다. 어떠한 데이타베이스를 사용하느냐에 따라 동일한 기능을 하는 다른 이름의 함수를 호출해야만 한다.
IConnection을 이용해 각각의 Connection에 대해 단일의 인터페이스를 제공하고 IConnection을 구현하는 MySqlConnection , SqlConnection , OciConnection을 만들자는 것이 나의 생각이었다. 파트너는 switch구문을 이용해 클래스의 상속 구조를 없애는 것과 비교해서 어떠한 이점이 있는가에 대해 질문했다. 이것은 장시간의 토론으로 이어졌다.
class IConnection
function Connect(){}
function Execute(){}
function Close(){}
class OdbcConnection : IConnection
function Connect(){ odbc_connect(); }
function Execute(){ odbc_do(); }
- Plugin/Chrome/네이버사전 . . . . 1 match
[[TableOfContents]]
* 크롬은 아시다시피 Plug-in을 설치할수 있다 extension program이라고도 하는것 같은데 뭐 쉽게 만들수 있는것 같다. 논문을 살펴보는데 사전기능을 쓰기위해 마우스를 올렸지만 실행이 되지 않았다.. 화난다=ㅂ= 그래서 살짝 살펴보니 .json확장자도 보이는것 같지만 문법도 간단하고 CSS와 HTML. DOM형식의 문서구조도 파악하고 있으니 어렵지 않을것 같았다. 그래서 간단히 네이버 링크를 긁어와 HTML element분석을 통해 Naver사전을 하는 Plug-in을 만들어볼까 한다.
* Chrome extention overview
1. Tutorial (getstarted) with fileset(manifest.json,.js,.html)
1. manifest.json의 attribute.
1. Contents policy security. 확장기능 작성하는데 꼭 알아야하는 작성법
http://code.google.com/chrome/extensions/index.html
http://code.google.com/chrome/extensions/getstarted.html
flickr에서 permission을 받아 사진을 긁어오는 플러그인을 만드는것 같다. 파일구성은 HTML안에 스타일을 적용하는 CSS. AJAX, Javascript를 이용하여 (AJAX의 정의를 알아보아야겠다 ) 내용을 구성한다. json을 통해 뭘 하는건가. 흥미롭군.
Wikipedia JSON : http://ko.wikipedia.org/wiki/JSON
Ajax는 비동기식으로 데이터를 주고받기 위해 (A는 Asyncronous) HTML과 CSS 동적 정보 표시를 위한 동적 언어와 DOM문서형 구조를 가진 XML, json만이 Ajax를 뜻하는 것이 아니라 이런 조합으로 이루어진 비동기 웹 어플리케이션 기법을 뜻한다.
* 따라하다가 실수한점 : manifest.json파일을 menifest.json이라 해서 update가 안됨. json정의할때 다음 element를 위해 , 를 붙여야하는데 안붙여서 에러. 그렇지만 나머지는 복붙해서 잘 가져옴.
"content_type=1&" + // 1 is "photos only"
"sort=relevance&" + // another good one is "interestingness-desc"
req.onload = showPhotos;
function showPhotos() {
var photos = req.responseXML.getElementsByTagName("photo");
img.src = constructImageURL(photo);
function constructImageURL(photo) {
<title>Getting Started Extension's Popup</title>
- PrimaryArithmetic/Leonardong . . . . 1 match
def testCountUpCarryEqualDegreeOne(self):
- ProgrammingPearls . . . . 1 match
[[TableOfContents]]
= Introduction =
|| ["ProgrammingPearls/Column6"] || Perspective On Performance ||
= Contributor =
- ProjectPrometheus/AT_RecommendationPrototype . . . . 1 match
#format python
def _addBookRelation(self, aNewBook, anIncrementPoint):
aNewBook.addBookRelation(book, self._getPrefCoef(book) + self._getPrefCoef(aNewBook))
book.addBookRelation(aNewBook, self._getPrefCoef(aNewBook) + self._getPrefCoef(book))
def _editBookRelation(self, anEditBook, anIncrementPoint):
anEditBook.addBookRelation(book, anIncrementPoint)
book.addBookRelation(anEditBook, anIncrementPoint)
def _bookAction(self, aBook, anIncrementPoint):
self._addBookRelation(aBook, anIncrementPoint)
self._editBookRelation(aBook, anIncrementPoint)
self._bookAction(aBook, 1 * WEIGHT_VIEW)
self._bookAction(aBook, aPoint * WEIGHT_LIGHTREVIEW)
self._bookAction(aBook, aPoint * WEIGHT_HEAVYREVIEW)
self.bookRelation = {}
def addBookRelation(self, aBook, aRelationPoint):
if self.bookRelation.has_key(aBook):
self.bookRelation[aBook] += aRelationPoint
self.bookRelation[aBook] = aRelationPoint
return tuple(self.bookRelation)
return self.bookRelation[aBook]
- ProjectPrometheus/AcceptanceTestServer . . . . 1 match
Acceptance Test 환경 만들기 - Python 으로 작성. 165.194.17.55 에서 AcceptanceTest 웹서버 돌리기.
AcceptanceTest / Search Test One , Two 등 테스트 리스트가 나오고, 실행을 할 수 있다.
Python CGI 로 작성된 Acceptance Test 용 서버 -> Acceptance Test 에 대해서 출력 양식. AcceptanceTest 스펙을 구체적으로 명시해둘것.
- ProjectZephyrus/Client . . . . 1 match
''Engineering Task나 User Story 모두 노동의 양으로 estimation을 해서, 포인트를 준다. 이렇게 "비용"이 적힌 카드들을 놓고, 어느 것을 하고, 미루고, 먼저하는 지 등의 순위 결정은 "중요도 중심", "위험도 중심"이 있는데, 작년 이후 익스트리모들(KRW)은 복잡하게 이런 걸 따지지 말고 그냥 비지니스 가치로 순서를 정하라고 한다. --JuNe''
|||||| '''등록한 친구들에 대한 On/Off 상태 표시 - 2 ''' ||
|| Documentation || 1.5 || . ||
- QuestionsAboutMultiProcessAndThread . . . . 1 match
* 그럼 여러 개의 Thread가 존재하는 상황일 때, 하나의 Thread가 One Time Slice를 전부 사용하는 경우가 있는가??
* A) processor라고 쓰신 것이 아마도 process를 의미하는 것 같군요? scheduling 기법이나, time slice 정책, preemption 여부 등은 아키텍처와 운영체제 커널 구현 등 시스템에 따라 서로 다르게 최적화되어 설계합니다. thread 등의 개념도 운영체제와 개발 언어 런타임 등 플랫폼에 따라 다를 수 있습니다. 일반적으로 process의 context switching은 PCB 등 복잡한 context의 전환을 다루므로 단순한 thread 스케줄링보다 좀더 복잡할 수는 있으나 반드시 그런 것은 아닙니다. - [변형진]
* A) processor라고 쓰신 것이 process, cpu가 processor를 의미하신 것 같군요. process는 실행되고 있는 하나의 프로그램 인스턴스이며, thread는 a flow of control입니다. 즉, 하나의 프로그램 안에 논리적으로 여러 개의 제어 흐름이 존재하느냐(*-thread)와, 하나의 컴퓨터에 논리적으로 여러 개의 프로그램 인스턴스가 실행되고 있느냐(*-process)로 생각하는게 가장 좋습니다. multi-processor(multi-core)는 말 그대로 동시에 물리적으로 여러 개의 흐름을 처리할 독립적인 처리기가 병렬로 존재하느냐입니다. 위에 제시된 예는 적절하지 못한 것 같습니다. - [변형진]
* 어느 바쁜 음식점(machine)입니다. 두 명의 요리사(processor)가 있는데, 주문이 밀려서 5개의 요리(process)를 동시에 하고 있습니다. 그 중 어떤 한 요리는 소스를 끓이면서(thread) 동시에 양념도 다지고(thread), 재료들을 오븐에 굽는데(thread) 요리를 빠르게 완성하기 위해 이 모든 것을 동시에 합니다. 한 명의 요리사는 특정시점에 단 한 가지 행위(instruction)만 할 수 있으므로, 양념을 다지다가 (context switching) 소스가 잘 끓도록 저어주기도 하고 (context switching) 다시 양념을 다지다가 (context switching) 같이 하던 다른 요리를 확인하다가, 오븐에 타이머가 울리면(interrupt) 구워진 재료를 꺼내어 요리합니다. 물론 두 명의 요리사는 같은 시점에 각자가 물리적으로 서로 다른 행위를 할 수 있으며, 하나의 요리를 두 요리사가 나눠서(parallel program) 동시에 할 수도 있습니다. - [변형진]
- RedThon . . . . 1 match
Python을 공부하는 스터디
그 그거 자체의 목표가 아니라는 사실에 대해 시야를 잃곤 한다. |}} - FocusOnFundamentals 에서
* 참가자 : [김동경](RedThon), 박능규([Redmoon]), 윤성만([Redstar]), 나휘동([Leonardong])
AnswerMe 혹시 [김동경] 이라는 사람의 개인페이지가 RedThon 이기도 한가요? 그럼 이 페이지의 이름을 바꾸어야 할텐데요?--NeoCoin
[http://165.194.17.15/pub/language/python/Python-2.3.exe 파이선 받기]
* HelloWorld를 PythonShell에서 출력하기
* Redmoon : 파이썬을 다운 설치 실행을 했다. 혼자 크리스마스에 만들었다는걸 믿겠다. 나도 해볼까?
* Redthon : 휘동이형이 숙제 내줬다. 난감하다. 줄래 열심히 해야겟다.
* [RedThon/HelloWorld과제]
http://python.org/doc/Summary.html PythonLanguage
[http://turing.cafe24.com 왕초보 파이썬] 『열형강의 파이썬』 저자 이강성씨가 만든 파이썬 기초를 가르쳐주는 페이지입니다. 간단하게 따라해보세요.^^ --[Leonardong]
제가 참 아무것도 가르쳐드리질 못하는군요. 오프모임이 필요할텐데 다음 일주일 내내 끝내야하는 숙제가 있기에 이번주말부터 이 스터디에 할당할 시간이 없네요. 혹시 월요일에 시간이 나면 오프모임을 할 수도 있을 것 같습니다. 월요일에 시간이 어떻게 되나요? --[Leonardong]
월요일 A,B반 모두 5시에 마치는거 같습니다. 5시에 바로 하죠??....- [Redmoon] -
그럼 월요일 5시에 7층에서 봅시다. --[Leonardong]
이 스터디를 종료합니다. 별로 한 게 없어서 아쉽네요. 방학 때 다시 할 수 있기를 바랍니다.--[Leonardong]
- Ruby/2011년스터디/서지혜 . . . . 1 match
[[TableOfContents]]
TCHAR *targetProcess = _T("NateOnMain.exe"); // 종료하려는 프로세스의 이름을 쓴다
- RubyOnRails . . . . 1 match
[[TableOfContents]]
= Ruby On Rails 는 ? =
* [http://www.rubyonrails.org/]
* [http://beyond.daesan.com/articles/2006/07/28/learning-rails-1 대안언어축제황대산씨튜토리얼]
- Slurpys/문보창 . . . . 1 match
const int MAX_LEN = 61;
bool isSlurpy(const char * str, int & index);
bool isSlimp(const char * str, int & index);
bool isSlump(const char * str, int & index);
cout << "NOn";
bool isSlurpy(const char * str, int & index)
bool isSlimp(const char * str, int & index)
bool isSlump(const char * str, int & index)
- SmallTalk/강좌FromHitel/강의2 . . . . 1 match
1. 자료실에서 Dolphin Smalltalk와 Dolphin Education Center를 찾
Time millisecondsToRun: [200 factorial]. ☞ 1
Time microsecondsToRun: [200 factorial]. ☞ 1024
Class allClasses asSortedCollection.
☞ a SortedCollection(_FPIEEE_RECORD AbstractCardContainer
AbstractToTextConverter ACCEL AcceleratorPresenter AcceleratorTable
Class allClasses asSortedCollection. ☞ "Inspector 창 열림"
어떻습니까? "Inspecting a SortedCollection"이라는 제목의 창이 화면에 나
font: (Font name: 'Arial' pointSize: 36) bold;
☞ a Process(a CompiledExpression, priority: 5, state: #ready)
s asSortedCollection asArray.
EtchASketch showOn: scribble model.
SmalltalkSystem current browseContainingSource: 'Dolphin'.
"Containing Source: 'Dolphin'"이란 이름이 붙은 창은 두 부분으로 이루어
- SnakeBite/창섭 . . . . 1 match
* 타이머를 잘 몰라서 인수랑 선호 문서 좀 봐야죠. 케케... OnTimer, SetTimer 로 하고 있긴 합니다만..-.-
DeleteMe) CRgn과 CRect에 있는 PtInRegion과 PtInRect함수로 영역 검사를 해보는 편이 편할듯 by 최봉환[[BR]]
- SubVersion . . . . 1 match
[[TableOfContents]]
* 커밋 단위가 파일이 아닌 체인지셋입니다. CVS에서라면 여러 개의 파일을 한꺼번에 커밋하더라도 각각의 파일마다 리비전이 별도로 붙습니다. 반면 Subversion에서는 파일별 리비전이 없고 한번 커밋할 때마다 전체 변경 사항에 대해 리비전이 하나씩 증가합니다.
* 원자적 커밋. CVS에서는 여럿이 동시 커밋할 때 종종 충돌이 발생하는데 Subversion에서는 더 이상 그런 일이 없어졌습니다.
* 커밋 통지 메일 스크립트 기본 제공. CVS에서라면 스크립트를 따로 구해서 써야 하는 번거로움이 있었지만, Subversion은 기본 제공 스크립트를 이용해서 훨씬 손쉽게 설정이 가능합니다.
Upload:subversion-diagram.png
|| [http://zeropage.org/pds/20058395830/Version%20Control%20with%20Subversion%202005.pdf Download] ||
[ZeroPageServer/SubVersion]
http://subversion.tigris.org/
http://www.onlamp.com/lpt/a/2820
http://svnbook.red-bean.com/ - SVN(SubVersion) 책. 2003년 하반기 출간 예정.
Kldp:SubversionBook
http://linux.mizi.com/wim/moin.cgi/subversion
http://www.pyrasis.com/main/Subversion-HOWTO
SeeAlso Moa:SubVersion
[http://svnbook.red-bean.com/ Subversion Online Book]
[http://wiki.kldp.org/wiki.php/SubversionBook Subversion Book 번역서]
- [CVS] 는 건너뛰고 SubVersion 부터 써보려구요. - [임인택]
오늘 처음 사용해보니 CVS보다 좀더 깔끔한 느낌이 이입니다. [tortoiseSVN]을 사용했는데 [CVS]보다 좀더 직관적이지 않나 싶습니다. 소스관리 툴을 처음 사용하는 사람이라면 [CVS]보다 [SubVersion]이 더 좋지 않을까 싶습니다. 다만 [tortoiseSVN]을 사용하니 체크아웃 할 때 보통 5-6번 정도 비밀번호를 쳐야 하네요;; diff, merge 툴을 따로 설정할 수 있습니다. - 이승한
[ZeroPageServer/SubVersion] 참고하여 설정하면 됨. ssh 터널링이라서 ;; crypt 형태의 설정 파일을 아직 지원안하네 - [eternalbleu]
- SystemPages . . . . 1 match
* FrontPage - 대문.~
http://zeropage.org/backupOneWiki
- TAOCP . . . . 1 match
* Author : Donald E. Knuth
* Publisher : Addison Wesley
[나휘동]([Leonardong])
[TAOCP/NotesOnTheExercises]
[TAOCP/BasicConcepts]
[TAOCP/InformationStructures]
책사야겠네... [http://kangcom.com/common/bookinfo/bookinfo.asp?sku=199711260004 강컴]보다 싼 데 있으면 알려줘~~
[정모/2004.7.26]하고 모임을 어떻게 할 지 정해보자. 어느정도 읽어보았는데 앞쪽은 수학이네. 뒤쪽은 자료구조인 듯 하고. 아무래도 뒤쪽이 더 흥미롭지. --[Leonardong]
1.3.1 이거 그냥 어셈블리 언어 같은 느낌이야. --[Leonardong]
1.3.1 MIX에 대한 설명 정리했음 --[Leonardong]
[TAOCP/BasicConcepts]에 있던 Exercise18은 [TAOCP/Exercises]로 옮김
1.3.1 MIX에 대한 설명에서 답변에 따라 MOVE 설명을 정리. --[Leonardong]
1.3.3 정리 그동안 서버가 안 되서 이제야 올렸다. --[Leonardong]
- TableOfContentsMacro . . . . 1 match
[[TableOfContents]]
[[TableOfContents]]
Please see HelpOnHeadlines
TableOfContentsMacro를 페이지의 상단에 {{{[[TableOfContents]]}}} 와 같이 넣으면,
* TableOfContentsMacro를 쓰지 않으면 제목줄에 번호가 붙지 않고, 이 매크로를 쓰면 제목에 번호가 붙습니다.
* ''toggle'' : 목차를 보여주거나 감출 수 있게 한다. {{{[[TableOfContents(toggle)]]}}}
* ''title'' : 목차의 제목을 다르게 바꿀 수 있다. {{{[[TableOfContents(title=차례)]]}}}
- UML . . . . 1 match
In software engineering, Unified Modeling Language (UML) is a non-proprietary, third generation modeling and specification language. However, the use of UML is not restricted to model software. It can be used for modeling hardware (engineering systems) and is commonly used for business process modeling, organizational structure, and systems engineering modeling. The UML is an open method used to specify, visualize, construct, and document the artifacts of an object-oriented software-intensive system under development. The UML represents a compilation of best engineering practices which have proven to be successful in modeling large, complex systems, especially at the architectural level.
This diagram describes the functionality of the (simple) Restaurant System. The Food Critic actor can Eat Food, Pay for Food, or Drink Wine. Only the Chef Actor can Cook Food. Use Cases are represented by ovals and the Actors are represented by stick figures. The box defines the boundaries of the Restaurant System, i.e., the use cases shown are part of the system being modelled, the actors are not.
The OMG defines a graphical notation for [[use case]]s, but it refrains from defining any written format for describing use cases in detail. Many people thus suffer under the misapprehension that a use case is its graphical notation; when in fact, the true value of a use case is the written description of scenarios regarding a business task.
This diagram describes the structure of a simple Restaurant System. UML shows [[Inheritance_(computer_science)|Inheritance]] relationships with a [[triangle]]; and containers with [[rhombus|diamond shape]]. Additionally, the role of the relationship may be specified as well as the cardinality. The Restaurant System has any number of Food dishes(*), with one Kitchen(1), a Dining Area(contains), and any number of staff(*). All of these objects are associated to one Restaurant.
This diagram describes the sequences of messages of the (simple) Restaurant System. This diagram represents a Patron ordering food and wine; drinking wine then eating the food; finally paying for the food. The dotted lines extending downwards indicate the timeline. The arrows represent messages (stimuli) from an actor or object to other objects. For example, the Patron sends message 'pay' to the Cashier. Half arrows indicate asynchronous method calls.
=== Collaboration Diagram /Communication Diagram (UML 2.0) ===
Above is the collaboration diagram of the (simple) Restaurant System. Notice how you can follow the process from object to object, according to the outline below:
A Collaboration diagram models the interactions between objects in terms of sequenced messages. Collaboration diagrams represent a combination of information taken from [[#UML_Class Diagram|Class]], [[#UML_Sequence_Diagram|Sequence]], and [[#UML_Use_Case_Diagram|Use Case Diagrams]] describing both the static structure and dynamic behavior of a system.
Collaboration and sequence diagrams describe similiar information, and as typically implemented, can be transformed into one another without difficulty.
However, collaboration diagrams use the free-form arrangement of objects and links as used in Object diagrams. In order to maintain the ordering of messages in such a free-form diagram, messages are labeled with a chronological number and placed near the link the message is sent over. Reading a Collaboration diagram involves starting at message 1.0, and following the messages from object to object.
In UML 2.0, the Collaboration diagram has been simplified and renamed the Communication diagram.
Activity diagrams represent the business and operational workflows of a system. An Activity diagram is a variation of the state diagram where the "states" represent operations, and the transitions represent the activities that happen when the operation is complete.
This activity diagram shows the actions that take place when completing a (web) form.
Deployment diagrams serve to model the hardware used in system implementations and the associations between those components. The elements used in deployment diagrams are nodes (shown as a cube), components (shown as a rectangular box, with two rectangles protruding from the left side) and associations.
This deployment diagram shows the hardware used in a small office network. The application server (node) is connected to the database server (node) and the database client (component) is installed on the application server. The workstation is connected (association) to the application server and to a printer.
Although UML is a widely recognized and used standard, it is criticized for having imprecise semantics, which causes its interpretation to be subjective and therefore difficult for the formal test phase. This means that when using UML, users should provide some form of explanation of their models.
Another problem is that UML doesn't apply well to distributed systems. In such systems, factors such as serialization, message passing and persistence are of great importance. UML lacks the ability to specify such things. For example, it is not possible to specify using UML that an object "lives" in a [[server]] process and that it is shared among various instances of a running [[process]].
At the same time, UML is often considered to have become too bloated, and fine-grained in many aspects. Details which are best captured in source code are attempted to be captured using UML notation. The [[80-20 rule]] can be safely applied to UML: a small part of UML is adequate for most of the modeling needs, while many aspects of UML cater to some specialized or esoteric usages.
A third problem which leads to criticism and dissatisfaction is the large-scale adoption of UML by people without the required skills, often when management forces UML upon them.
- UbuntuLinux . . . . 1 match
[[TableOfContents]]
공식 사이트는 역시 기대를 저버리지 않았다. [https://wiki.ubuntu.com/ShareInternetConnection]와
[https://wiki.ubuntu.com/ThinClientHowtoNAT] 이 두 문서를 따라하다 보니 어느새 다른 컴퓨터에서 인터넷에 연결할 수 있는 것이 아닌가!
sh -c 'iptables-save > /etc/ltsp/nat.conf'
리눅스가 설치된 하드를 primary disk로 쓰고, 이녀석 이름은 hd0이다. 윈도우즈가 설치된 하드는 secondary disk이니까 hd1이다. (리눅스에서는 각각을 hda, hdb로 인식한다.) 명령을 설명하려고 해도 명료하지 않아 그냥 넘어가야겠다. (윈도우로 부팅할 때는 트릭을 쓰기 때문에 리눅스 파티션이 보이지 않는다.)
모듈 적재 파일은 /etc/modeprobe.conf 를 새로 만들면 되는데 다른 리눅스에서는 이 파일이 /etc/conf.modules인가보다. 우분투는 파일 이름이 조금씩 다른 듯 하다. :( 헷갈리게 스리!)
방법은 서버에서 서브도메인을 나눠주는 것이 좋겠는데, 아직 이건 잘 모르겠고 Samba를 통해 공유 폴더를 이용하는 수준까지 이르렀다. [http://us4.samba.org/samba/docs/man/Samba-HOWTO-Collection/FastStart.html#anon-example 따라하기]
[http://projects.edgewall.com/trac/wiki/TracOnUbuntuBreezer Trac설치하기] 중간에 테스트 하는 부분에서 안 되서 절망했다가 끝
Options Indexes MultiViews
AllowOverride None
ScriptAlias /trac/leonardong /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac/leonardong">
SetEnv TRAC_ENV "/home/trac/leonardong"
</Location>
<Location "/trac/leonardong/login">
AuthName "leonardong"
</Location>
이제 [http://leonardong.nameip.net/trac/leonardong Trac]을 서버에서 돌릴 수 있다.
= Path Configuration =
For more information on the usage of update-rc.d
- WERTYU/1002 . . . . 1 match
def testOne():
- WinCVS . . . . 1 match
[[TableOfContents]]
1. WinCVS를 사용하기 위해서는 Python과 TCL이 깔려있어야 한다.
WinCVS 1.3을 실행하기 위해서는 Python언어가 필요하다. Python이 없이는 WinCVS는 동작하지 않는다.[[BR]]
''WinCVS 의 쉘에서의 직접 커맨드 입력기능을 이용하려면 이전 버전에선 TCL, 최신버전에서는 Python 을 이용합니다. 하지만, 설치 안해도 WinCVS 의 주기능들은 이용가능한걸로 기억합니다. --["1002"]''
* [http://python.org] 2.3alpha1에서는 python을 찾을 수 없다고 나오니 2.2를 받자
* Authentication : 접속 방법이다. local 이나 pserver 또는 ntserver를 선택하면 된다.
* Module name and path on the server : 모듈의 이름 (폴더의 이름이 된다.)
1. 고칠수 있는 공간에 나온 파일들은 ReadOnly가 걸려있기 때문에 수정이 불가능하다.
2. 수정을 하고 싶은 파일을 선택한 후 Trace - Edit Selection(툴바의 연필그림)을 선택하자
- XpQuestion . . . . 1 match
- '필요하면 하라'. XP 가 기본적으로 프로젝트 팀을 위한 것이기에 혼자서 XP 의 Practice 들을 보면 적용하기 어려운 것들이 있다. 하지만, XP 의 Practice 의 일부의 것들에 대해서는 혼자서 행하여도 그 장점을 취할 수 있는 것들이 있다. (TestDrivenDevelopment, ["Refactoring"], ContinuousIntegration,SimpleDesign, SustainablePace, CrcCard Session 등. 그리고 혼자서 프로그래밍을 한다 하더라도 약간 큰 프로그래밍을 한다면 Planning 이 필요하다. 학생이다 하더라도 시간관리, 일거리 관리는 익혀야 할 덕목이다.) 장점을 취할 수 있는 것들은 장점을 취하고, 지금 하기에 리스크가 큰 것들은 나중에 해도 된다.
각 Practice 를 공부를 하다보면, 저것들이 이루어지기 위해서 공부해야 할 것들이 더 있음을 알게 된다. (의식적으로 알아낼 수 있어야 한다고 생각한다.) Refactoring 을 잘하기 위해선 OOP 와 해당 언어들을 더 깊이있게 이해할 필요가 있으며 (언어에 대해 깊은 이해가 있으면 똑같은 일에 대해서도 코드를 더 명확하고 간결하게 작성할 수 있다.) CrcCard 를 하다보면 역시 OOP 와 ResponsibilityDrivenDesign 에 대해 공부하게 될 것이다. Planning 을 하다보면 시간관리책이나 일거리 관리책들을 보게 될 것이다. Pair 를 하다보면 다른 사람들에게 자신의 생각을 명확하게 표현하는 방법도 '공부'해야 할 것이다. 이는 결국 사람이 하는 일이기에. 같이 병행할 수 있고, 더 중요한 것을 개인적으로 순위를 정해서 공부할 수 있겠다.
=== XP 에서의 Documentation 은 너무 빈약하다. ===
- 어차피 실제 고객에게 가치를 주는 중요한 일만을 하자가 목적이기에. Documentation 자체가 중요한 비즈니스 가치를 준다던가, 팀 내에서 중요한 가치를 준다고 한다면 (예를 들어서, 팀원중 몇명이 항시 같이 작업을 할 수 없다던지 등등) Documentation 을 EngineeringTask 에 추가하고 역시 자원(시간)을 분배하라. (Documentation 자체가 원래 비용이 드는 일이다.)
=== OnSiteCustomer. 하지만 현실은... ===
실제 회사 : 회사 로 수주받은 프로젝트의 경우, 다른 회사에서 오는 '고객' 은 실제로 그 회사에서의 말단 직원인 경우가 많다. 그러므로, 매 Iteration 시 고객에게 Story 를 골라달라고 할때 그 고객은 힘이 없다.
- ["1002"] 가 ProjectPrometheus 를 할때엔 거의 전체 작업을 Pair로 진행했다. Integration 비용이 전혀 들지 않았다. (두명이 멤버였으니; 당근!) 그리고 초기 소스와 지금 소스중 초기 모습이 남아있는 부분을 보면 '젠장. 왜 이렇게 짠거야? 이런 허접한...' 이다. 중복된 부분도 많고, 매직넘버도 남아있고, 처음엔 쓸거라 생각했던 일종의 어뎁터 역할을 하는 클래스는 오히려 일만 복잡하게 만들고 등등.
- XpWeek/20041221 . . . . 1 match
내 TDD의 보폭이 크다는 사실을 깨달았다. 무엇이든 시작하기 전에 팀 전체가 하고자 하는 의욕이 고무되어 있을 때 효율이 높다. 팀이 같이하는 문화를 만들 필요가 있겠다. --[Leonardong]
음, 아침의 testOneWord와 testTwoWord는 꽤 만족 스러웠다. 자바에 대한 재미도 약간씩 붙는듯 했고. 오후의 일정은, 전날의 피로함의 연속이었는지 뭔가에 홀린 기분으로 진행한듯. 내일은 좀더 활기차게 했으면 좋겠다. 계획단계가 너무 오래걸려서 지루한 면이 없지 않아 있었지만 소수의 참여자로 인한 현상이라 생각하며.. ㅎㅎ --[박진하]
- Z&D토론백업 . . . . 1 match
* 위키 스타일에 익숙하지 않으시다면, 도움말을 약간만 시간내어서 읽어주세요. 이 페이지의 편집은 이 페이지 가장 최 하단에 있는 'EditText' 를 누르시면 됩니다. (다른 사람들의 글 지우지 쓰지 않으셔도 됩니다. ^^; 그냥 중간부분에 글을 추가해주시면 됩니다. 기존 내용에 대한 요약정리를 중간중간에 해주셔도 좋습니다.) 정 불편하시다면 (위키를 선택한 것 자체가 '툴의 익숙함정도에 대한 접근성의 폭력' 이라고까지 생각되신다면, 위키를 Only DocumentMode 로 두고, 다른 곳에서 ThreadMode 토론을 열 수도 있겠습니다.)
[[TableOfContents]]
* 상당히 민감한 문제로 가칭(제로페이지데블스)로 정함. 올해 선배님들의 자리를 갖고 선배님들의 의견을 듣고 결정. (이것은 언제 할 것인지? offline ? online?)
- ZeroPageEvents . . . . 1 match
|| . || ["EightQueenProblem"] || Online Event. ["EightQueenProblem"] 문제 풀기 & 토론 || 무수; ||
|| 5.10. 2002 || Internet Problem Solving Contest(IpscAfterwords) || IPSC 참여. 밤샘 프로젝트; || ["1002"], ["neocoin"], ["데기"], ["nautes"], ["구근"], ["fnwinter"], ["JuNe"] ||
|| 5.19. 2002 || ["프로그래밍파티"] || 서강대 ["MentorOfArts"] 팀과의 ["ProgrammingContest"] || ZeroPagers : ["1002"], ["이덕준"], ["nautes"], ["구근"], ["[Lovely]boy^_^"], ["창섭"], ["상협"] [[BR]] 외부 : ["JuNe"], ["MentorOfArts"] Team ||
- ZeroPageServer/계정신청상황2 . . . . 1 match
=== From OneWiki : 계정 신청 상황 2 ===
|| 나휘동 || leonardong || 03 || 2003 ||c || leonardong 한메일 || ||
- callusedHand . . . . 1 match
[[TableOfContents]]
* 좋아하는 밴드: NIRVANA, RENAISSANCE, SAVAGE ROSE, SONGS OHIA
* 최근 관심있는 밴드: LASSE LINDH, MANDALAY, PEDRO THE LION
* Add-On Linux Kernel Programming
* 논리적으로 생각하기-개념분석법-(저자: John Wilson)
''(move to somewhere appropriate plz) 논리학 개론 서적으로는 Irving Copi와 Quine의 서적들(특히 Quine의 책은 대가의 면모를 느끼게 해줍니다), Smullyan의 서적들을 권하고, 논리학에서 특히 전산학과 관련이 깊은 수리논리학 쪽으로는 Mendelson이나 Herbert Enderton의 책을 권합니다. 또, 증명에 관심이 있다면 How to Prove It을 권합니다. 대부분 ["중앙도서관"]에 있습니다. (누가 신청했을까요 :) ) --JuNe''
- django/Model . . . . 1 match
모델은 웹 어플리케이션에서 사용할 데이터를 명세한 python소스코드이다. 모델은 데이터베이스와 연동되며, 간단한 경우 모델 하나가 데이터베이스 테이블 하나로 매핑된다. 따라서 웹 개발자는 데이터베이스를 직접 손대지 않고 소스코드인 모델을 변경해가면서 작업을 진행할 수 있다. 모델을 변경할 때마다 django에서 제공하는 manage.py syncdb를 이용하면 변경된 모델이 데이터베이스 테이블에 반영된다.
모델에 해당하는 테이블을 생성하는 SQL문은 {{{python manage.py sql <app name>}}}으로 확인할 수 있다. 위에 해당하는 SQL문은 다음과 같다.
location= models.CharField(maxlength=200)
다대다 관계는 좀더 복잡해질 수 있다. 두 모델 사이에 관계에 해당하는 테이블이 또다른 속성이 필요한 경우이다. 이 때는 중간 역할을 하는 모델을 직접 생성하고 양쪽 모델을 참조하도록 만든다. 다음은 RiskReport와 ControlReport사이 다 대 다 관계에서 보고된 위험에 대해서 대처 방안이 적절했는지 평가하는 is_vaild속성을 가지는 RiskControl모델을 보여주고 있다.
class ControlReport(models.Model):
class RiskControl(models.Model):
control_report= models.ForeignKey(ControlReport)
하지만 이 경우 risk_report와 control_report의 합성키를 사용하도록 지원하지 않는다.
Upload:Screenshot-ManyToOne.png
- geniumin . . . . 1 match
[[TableOfContents]]
== Conceptual Model of Geniumin.. ==
* make confusion..
* Online Game
* physical presentation in 3D Graphic
interested...interested.....only.. yet...-.-;
- html5/문제점 . . . . 1 match
* 출처 : http://blog.creation.net/435
2.Audio and Video Tag limitations:
6.Only targets the general Web:
8.No webcam or microphone device support:
- pragma . . . . 1 match
Each implementation of C and C++ supports some features unique to its host machine or operating system. Some programs, for instance, need to exercise precise control over the memory areas where data is placed or to control the way certain functions receive parameters. The #pragma directives offer a way for each compiler to offer machine- and operating-system-specific features while retaining overall compatibility with the C and C++ languages. Pragmas are machine- or operating-system-specific by definition, and are usually different for every compiler.
NeoCoin 은 Debug 모드에서, 값을 추적할 것을 포기하고, Project Setting -> C/C++ tab -> Debug info -> Line Numbers Only 로 놓고 쓴다.
#pragma once // 이 파일은 한번만 열리게 한다.
- woodpage/VisualC++HotKeyTip . . . . 1 match
[[TableOfContents]]
*역시 이동하는 기술로 BrowseGoToDefinition 이라고 함 마우스 오른쪽 팝업메뉴에도 나옴 사용법은 예를 들어 fSelect()라는 함수를 사용했을때 그함수내용을 보고싶으면 fSelect에다가 커서를 놓고 F12를 누름 (변수,define도 됨) 그럼 fSelect()가 구현된(?)곳으로 이동함 사용하면 아주 유용함 단점은 *.ncb 파일이 조금 커짐 별문제 아님 사실 마우스 오른쪽 팝업에서 쓰는걸 더 많이 씀
*WndTabs 라는 프로그램으로 Visual c++에 AddOn(스타처럼) 시키는 프로그램이다.
*version 2.50 이 제로페이지 자료실에 있다.
* 쓰게하려고 만들어논거 같다. 그중 Debug 카테고리에서 옆에 Buttons가 나오는데 거기서 손바닥 모양이 있다. 손바닥 모양은 익히
- 강성현 . . . . 1 match
[[TableOfContents]]
* ACM-ICPC Asia-Daejeon Regional 2013 본선 (11.1 - 11.2)
* Honorable Mention ㅠㅠ
* AttackOnKoala 팀 (강성현, [정의정], [정진경]) 으로 참가. 교내 1위 (단독 본선 진출)
* ACM-ICPC Asia-Daejeon Regional 2012 본선 38위, 교내 1위 (11.1 - 11.2)
* Android Application 개발 방법을 배우고, 팀을 꾸려서 App 개발
* [Ruby/2011년스터디] 의 공유 차원에서 진행. 시간이 빠듯해서 대충 진행한 것 같아 아쉬움. [https://docs.google.com/presentation/d/1ld_NTuqaEF4OIY2_f4_2WhzF57S6axgxnMLf3LMcvrM/pub?start=false&loop=false&delayms=3000 발표자료]
console.log(i + ' ' + count[i]);
- 같은 페이지가 생기면 무슨 문제가 있을까? . . . . 1 match
* 주제가 같은 여러 페이지가 생긴다면 (정리를 하지 않는다면) 나중에는 일반 웹 서핑처럼 자료를 찾는 수고를 해야하겠다는 생각이 듭니다.-[Leonardong]
* 일일이 고치기보다는 손이 한 번이라도 덜 가는 구조가 더 편하다고 생각합니다.대신 주제가 분산되면 페이지를 나누는 작업은 해주어야 할 것 같네요. -[Leonardong]
* 논의를 읽다 보니 새로 생각나서 적어봅니다. 중복 페이지가 생긴다면 발견자가 고칠 때 사람마다 기준이 달라서 한번에 해결이 되는 것이 아니라, 이사람은 이렇게 고치고 저사람은 저렇게 고쳐서, '''쉽게'''정리가 안 되지 않을까 싶네요 - [Leonardong]
타 위키에서 비슷한 논의들을 보면서 이 방법이 적당하다는 생각합니다. [Leonardong]의 어떻게는 무엇인가요? ''페이지를 생성할때, 검색해서 찾아 중복 페이지를 만들지 않는다.'' 가 기본 전략인것 같은데 맞나요? --NeoCoin
생각했던 것은 그게(페이지 생성할 때 검색) 맞습니다. 일단은 노스모크에 있는 논의만 보았는데 다른 참고할 페이지를 알려주시면 좀더 읽어보고 생각을 해봐야겠네요. -[Leonardong]
앞에서도 썼듯 ''페이지를 생성할 때, 검색을 자동으로 해준다. 그래서 검색 결과를 보여주고 페이지를 새로 만들지, 아니면 원래 페이지에 덧붙여서 쓸 지 사용자가 결정하게 한다. 그러다면 검색 결과를 무시하지 않는 한, 중복 페이지가 줄어들지 않을까''라는 생각이 기본입니다. 검색범위를 페이지 이름으로 할지 전체 글을 대상으로 할 지는 생각을 못 해 보았지만요. 페이지를 손으로 고치는 방식을 대체할 것은 생각 못했지만, 제가 생각한 방식은 페이지를 만들기 전에 할 수 있으므로, 페이지를 만들고 나서 해결하는 '''아래에서 위로''' 방식과 혼합해서 쓸 수 있다고 생각합니다. 써 놓고 보니 페이지 이름하고는 빗나간 이야기이긴 하지만 어떻게 손이 한 번이라도 덜 가는 구조를 만들까 하다 보니 이런 글을 썼습니다.-[Leonardong]
페이지이름을 만들때, '''제목대상 검색'''은 이전부터 지원되었습니다. 예를들어 이동 창에 Front를 쳐보세요. 처음부터 후자를 이야기 하는 것으로 알고 있었습니다. 보통 '''내용검색(FullTextSearch)'''는 부하 때문에 걸지 않습니다. 하지만, 현재 OneWiki 의 페이지가 적고, 페이지를 만드는 행위 자체가 적으므로, 후자의 기능 연결해 놓고 편리성과 부하의 적당한 수준을 관찰해 보지요. --NeoCoin
- 김민재 . . . . 1 match
* [새싹교실/2012/Dazed&Confused] 튜티
* [정모/2012.7.18] - OMS "DEP(Data Execute Prevention)" 진행
* GDG pre-DevFest Hackathon 2013 참여
* Always-On 프로젝트 ~~구성원~~ 리더 - AI Mate
- 김희성/리눅스계정멀티채팅2차 . . . . 1 match
#define DISCONNECT -1
return DISCONNECT;
send_m(client_socket,"ID is wrong");
return DISCONNECT;
continue;
return DISCONNECT;
continue;
return DISCONNECT;
send_m(client_socket, "password is wrong");
return DISCONNECT;
continue;
return DISCONNECT;
return DISCONNECT;
continue;
return DISCONNECT;
send_m(client_socket_array[t_num-1],"list : show list of online user");
send_m(client_socket_array[t_num-1],"<Online user list>");
send_m(client_socket_array[t_num-1],"ID is wrong");
void disconnect(int t_num, int i_num)
printf("%dth client is disconnected\n",t_num);
- 논문번역/2012년스터디/김태진 . . . . 1 match
주어진 손글씨 문서에 대한 이미지에 대해 처음 전체 이미지를 삐뚤게 쓴 것은(?) 글쓰는 것에 대한 지속적인 "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.
더 많은 문서 작업을 위해, 개인의 손글씨 각 줄들을 추출했다. 이것은 글씨들을 핵심 위치들 사이로 이미지를 쪼개는 것으로 할 수 있었다. 핵심 위치란, 글씨의 아래위 선사이의 영역과 같은 것인데, 핵심 위치에 존재하는 줄에서 필요한 전체 픽셀들의 최소 갯수를 말하는 한계점을 응용하여(?)찾을 수 있다. 이러한 한계점은 2진화된 손글씨 영역에 대한 수직적인 밀집 히스토그램(the horizontal density histogram of the binarized handwriting-area)을 사용한 Otsu method를 사용하여 자동적으로 만들 수 있다. 검은색 픽셀들의 갯수는 수평적 투영 히스토그램에 각각의 줄을 합한 갯수이고, 그 이미지는 이 히스토그램의 최소화를 따라 핵심 위치들 사이로 조각 내었다.
글쓰는 스타일이 때로 한줄 내에서 중요하게(?) 바뀐다는 관측에 고무되어서, 우리는 각 손글씨 줄들을 각각 수직적인 위치, 기울어짐, slant에서 수정했다. 그래서 각각의 줄은 문서의 부분 사이에 공백으로 찾아 쪼개었다. 한계점은 일반화 요소들을 통했을때에 계산하기에 너무 짧은 부분들을 피하기 위해 사용했다. 반면에 수직적인 위치와 기울어진 것은 [15]에서 묘사된 방법과 비슷한 선형적 regresion?을 사용한 기준선 추정 방법으로 고쳤고, slant 각도에 대한 계산은 모서리의 방향에 기초하여 고쳤다. 그렇게 이미지를 이진화했고 수직적인 변화를 추출하여 consid- ering that only vertical strokes are decisive for slant estima- tion. Canny 모서리 감지는 각 히스토그램에서 계산된 모서리 방향 데이터를 얻기위해 사용했다. 그 히스토그램의 의미는 slant 각도를 사용하는 것이다.
== Linear Algebra and its applications ==
Section 1.5에서 동일한 등식은 등식을 벡터 방정식으로 쓰는 것으로 다른 관점으로 공부할 수 있었다. 이 방식으로, 초점을 Ax=0에 대한 알 수 없는 해답부터 벡터 방정식에서 나타나는 벡터들까지 바꿔보자.
이 방정식은 물론 x1=x2=x3=0이라는 자명한 해를 가지고 있다. Section 1.5에서와 같이, 주요 논점은 자명한 해가 오직 하나인지(아닌지)이다.
Definition
등식 (2)는 가중치가 모두 0이 아닐 때 v1...vp사이에서 linear independence relation(선형 독립 관계)라고 한다. 그 인덱싱된 집합이 선형 독립 집합이면 그 집합은 선형독립임이 필요충분 조건이다. 간단히 말하기위해, 우리는 {v1,,,vp}가 선형독립 집합을 의미할때 v1...vp가 독립이라고 말할지도 모른다. 우리는 선형 독립 집합에게 유사한 용어들을 사용한다.
Set of One or Two Vectors
다음 예시는 두 벡터들의 선형 의존적인 집합에서의 현상을 설명할 것이다. 예제 3에서의 주장들은 두 벡터의 집합이 선형 의존적일 때 우리가 항상 관찰로 결정함을 보여준다. Row operation은 불필요하다. 단순히 벡터들 중 하나에서 다른 scalar times(수치적인 횟수/곱셈?) 이다.
Characterization of Linearly Dependent Sets
== 1.8 Linear Transformations ==
Matrix Transformations 행렬 변환
Linear Transformations 선형 변환
Definition
- 데블스캠프2009/화요일후기 . . . . 1 match
== Abstractionism - 변형진 ==
* [김준석] - 같은 것을 반복하기 위해 우리는 자주 copy &paste를 사용한다. 단순히 키보드 두번만 누르면 똑같은 것이 한번더 만들어지는 좋은 단축키 이다. 하지만 사실 이 반복되는것을 우리는 단순히 단축키를 누름으로서 만들어지는것은 과거의 저급언어를 사용할때나 만들어지는 반복의 숙달이다. 평소 자주 알고리즘을 연구하자는 말을 들을것이다. 문제를 푸는것 만에는 사실 극히 특별한 알고리즘이 필요없다고 생각한다. 살면서 어떻게든 간단반복으로 대부분은 풀수 있을테니까. 알고리즘을 연구하는것은 우리가 사용하는 컴퓨터의 부담을 줄이기 위해 만들며 이는 단순 반복되는 계산과정을 줄여줘 자원의 낭비를 줄여준다. 이렇듯 컴퓨터의 반복은 줄이면서 직접 키보드를 치며 반복하고있는 나의 자원소비량은 어떤가? 나는 왜 반복을 하고 있는가? 이 긴 코드를 줄일수 있는 방법은 정녕 없는것인가?라는 컴퓨터 알고리즘을 생각하듯 나를 위한 알고리즘을 생각을 해보았나? 대부분의 문서를 한장으로 줄여서 요약할수 있다는것을 가르쳐주는 One Page Proposal이라는 책에서는 "온갖 미사여구를 넣어 50page나 100page가 넘어가는 문서는 문서를 받은 사람의 책상에서 쌓이고 쌓여 결국에는 보여지지도 못하고 세절기에 들어가 버린다. 정말 자신이 있다면 알짜배기만 모아서 1Page로 보기 좋게 만들어라." 맞는 말이다. 아무리 길게 만든 프로그램이라도 20줄도 안되는 프로그램과 성능이 똑같다면 당연히 보기도 좋고 관리하기도 좋은 20줄 프로그램을 쓰겠지.이 20줄 프로그램을 쉽게 만들기위해 사람은 자신이 편리하게 개발과 연구를 했다. 그렇게 편리하도록 발달하는 과정. 그 생각을 잘보여준 세미나였다고 생각한다. 과연 네이버에서 자동완성됬던 Kesarr.
- 데블스캠프2012/둘째날/후기 . . . . 1 match
[[TableOfContents]]
* [김민재] - APM이 뭔가 했더니 Apache + PHP (perl? python?) + MySQL 인걸 알았을 때의 놀라움 ㅋㅋㅋㅋ 내 컴퓨터에서 준석이 형 페이지에 접속했을 때 정말 신기했습니다. 또 MyAdmin으로 데이터베이스를 직접 만드는 것도 처음 해보았습니다. (cafe24 호스팅에서는 DB 만들기가 안되더라구요..) 오늘 여러모로 신기한 체험을 많이 해 보았습니다.
* [정진경] - 입학 하기 전에 산 컴퓨터에 CentOS를 깔고 제일 먼저 해봤던게 웹서버 구축이었던 것 같네요. 윈도우즈 환경에서도 어렵지 않게 구축할 수 있네요. (물론 지금의 시점에서지만,) 개인 서버를 구축하고 응용할 수 있으면 나름 장점이 있는 것 같습니다. 활용하기 나름이지만, 최근 Online Judge System에 VC++ 컴파일러를 올리고 싶어서 윈도우즈 서버도 생각하고 있는데, 추후에 도움이 될지도 모르겠네요.
* [김민재] - 저도 그 동안 JavaScript를 Copy & Paste로 이용해 온지라.. JavaScript에 대해서는 깊게 이해해야겠다는 생각을 해 본 적이 없었는데, 이번 기회를 통해 짧지만 여러가지를 알 수 있었습니다. 특히 var abc=function()이 된다는 사실에 매우 놀랐습니다. 웹 프로그래밍을 위해 JavaScript를 열심히 공부해야겠습니다.
- 데블스캠프계획백업 . . . . 1 match
NoSmok:SituatedLearning 의 Wiki:LegitimatePeripheralParticipation 을 참고하길. 그리고 Driver/Observer 역할을 (무조건) 5분 단위로 스위치하면 어떤 현상이 벌어지는가 실험해 보길. --JuNe
* 학교를 다니면서 혼자서는 거의 공부하지 않을만한, 그러나 중요한 것들(see also FocusOnFundamentals). 앞으로 학교생활에서 체험하기 힘든 것들. 학교를 졸업할 때까지 유효한 지식으로 남아있을만한 생명력이 긴 것들. 학교생활 동안 공부, 프로그래밍에 영향을 많이 끼칠 메타 수준이 높고 늘상 하는 것들. 사고하는 방법. 프로그램을 만드는 방법. 아마추어 아이디어 맨은 "아이디어"를 만들고, 프로 아이디어 맨은 "아이디어를 대량으로 생성해 낼 수 있는 구조와 과정"을 만들어 낸다고 합니다 -- 프로가 만든 아이디어는 엄청난 양의 아이디어를 자동 생산해 냅니다. 제가 학교를 다닐 때 "프로그램을 생성해 낼 수 있는 구조와 과정"을 선배에게서 배웠더라면 얼마나 좋았을까 하는 생각을 자주 합니다. 예를 들어, 이메일 주소를 찾는 RE를 "답"으로서 가르치거나, 혹은 무작정 시행착오를 거치면서 그 답을 찾으라고 종용하거나 하는 것보다는, 그런 RE를 효율적이고 손쉽게 생성해 낼 수 있는 과정과 인식적 도구를 가르쳤으면 합니다. --JuNe
- 레밍즈프로젝트/연락 . . . . 1 match
4. CMyDouBuffDC는 생성되면 더블 버퍼링을 준비해주게 되. 그리고 이 녀석을 선언하고 파괴하는 곳은 View의 OnDraw뿐이야. 나머지는 모두 포인터또는 참조를 이용해서 넘겨 받아야 해
- 레밍즈프로젝트/이승한 . . . . 1 match
output 인터페이스 ConsoleCoutput 제작.
ActionManager제작
예정작업 : Clemming class, CactionManager, ClemmingList, Cgame 테스팅. CmyDouBuffDC, CmyAnimation 버전 복구. 예상 약 8-9시간.
animation, doubuff class 통합 과정중 상호 참조로 인한 에러 수정.
리팩토링(여전히 덜 된 리펙토링), 더블버퍼링 MFC(OnEraseBkgnd에서 화면을 지우는 것을 몰랐음. 삽질. 왜 저번에는 문제없이 동작했던 거지?? API 기반으로 했었나보다)
- 레밍즈프로젝트/프로토타입/에니메이션 . . . . 1 match
Upload:beonit.exe
class CmyAnimation{
CmyAnimation(){
하지만 OnDraw에서 생성되고 파괴되는 그리기DC에서 프레임단위의 에니메이션 처리는 옳지 않다. 만약 하게 된다면 모든 레밍들의 객체를 그리기DC안에 넣어야 할 것이다.
== CmyAnimation ==
- 무엇을공부할것인가 . . . . 1 match
SeparationOfConcerns로 유명한 데이비드 파르나스(David L. Parnas)는 FocusOnFundamentals를 말합니다. (see also ["컴퓨터고전스터디"]) 최근 작고한 다익스트라(NoSmok:EdsgerDijkstra )는 수학과 언어적 능력을 말합니다. ''Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- NoSmok:EdsgerDijkstra '' 참고로 다익스트라는 자기 밑에 학생을 받을 때에 전산학 전공자보다 수학 전공자에게 더 믿음이 간다고 합니다.
As for the job market, Python isn't among the buzzwords that you'll find in
job descriptions most of the time. But software development isn't that much
about particular technologies, the important part is learning concepts. If
you learn Python, you won't be able to avoid learning (at least):
There's a lot more concepts that you can learn while using Python, as you
- Functional Programming
- Dividing software into components
Learn concepts, not tools. At least in the long run, this will make you
- Team work: dividing up tasks. Defining the interfaces up front to avoid
blocking other team members who wait for you. Using a source code control
- Communication/efficient problem solving: not trying yourself for days to
the past, I guess that's not an uncommon problem for developers.
- Software reliability: that's a difficult one. IMO experience,
concentration, unit tests, and always trying to improve on yourself help
- 문제풀이/1회 . . . . 1 match
[[TableOfContents]]
Equivalent to eval(raw_input(prompt)). Warning: This function is not safe from user errors! It expects a valid Python expression as input; if the input is not syntactically valid, a SyntaxError will be raised. Other exceptions may be raised if there is an error during evaluation. (On the other hand, sometimes this is exactly what you need when writing a quick script for expert use.)
Consider using the raw_input() function for general input from users.
==== Using Recursion ====
if mx == None :
max1,min1=myproc(2,None,None)
max2,min2=myproc(9,None,None)
==== Using Iteration ====
mx=None
mn=None
if mx == None:
==== FunctionalProgramming ====
===== Using List Comprehension =====
1. 다음과 같은 공백으로 구분되는 임의의 숫자 입력이 주어질때 최대, 최소값을 출력하세요.[[BR]](데이터 양은 [Python]과 머신이 처리할수 있는 범위내로 한정)
1. [Python]의 문자열 트릭(?)을 보이는 문제입니다. :)
이런 경우를 개선하기 위해서 map 함수가 있는것입니다. 이를 Haskell에서 차용해와 문법에 내장시키고 있는 것이 List Comprehension 이고 차후 [http://www.python.org/peps/pep-0289.html Genrator Expression]으로 확장될 예정입니다. 그리고 print 와 ,혼용은 그리 추천하지 않습니다. print를 여러번 호출하는것과 동일한 효과라서, 좋은 컴퓨터에서도 눈에 뜨일만큼 처리 속도가 늦습니다. --NeoCoin
- 박원석 . . . . 1 match
|| [[TableOfContents]] ||
[One]
[http://cyworld.nate.com/parkwons]
- 방울뱀스터디/GUI . . . . 1 match
after=button1 # 현재 pack하려는 객체를 button1바로뒤에 만들어 준다.
before=button1 # 현재 pack하려는 객체를 button1바로앞에 만들어 준다.
button.pack(side=LEFT, fill=X, padx=5, pady=10)
button.place(30, 30, width=70, height=25)
button = Button(frame, text="Push Button", fg="red", command=frame.quit)
button.pack(side=LEFT)
check = Checkbutton(frame, text="Check Button", variable=var, command=cb)
w.configure(text='Variable is Set')
w.configure(text='Variable is Reset')
radio1 = Radiobutton(frame, text="One", variable=var, value=1)
radio2 = Radiobutton(frame, text="Two", variable=var, value=2)
Radiobutton 함수호출에서 indicatoron=0을 넣어주면 라디오버튼모양이 푸시버튼모양으로 된다.
scrollbar.config(command=listbox.yview) # 2번 작업
button = Button(textArea, text="Click")
textArea.window_create(INSERT, window=button)
textArea.deletet(button) # 단추 삭제
contents = text.get(1.0, END)
전체 문서를 가져다가 contents 변수에 저장한다.
textArea.config(state=DISABLED)
- 새싹C스터디2005 . . . . 1 match
[[TableOfContents]]
=== [One] ===
단축계산(short-circuit evaluation)의 개념을 설명한 프로그램을 읽고 이 프로그램에서 4개의 printf()함수를 실행했을 때, i, j의 값이 왜 그렇게 나오는지를 설명하시오.
[DevCppInstallationGuide] // 인스톨 가이드 입니다.
언어 공부 전에 교양을 쌓고 싶다면 주제 토론을 해보는 것도 괜찮을 것입니다. [ExploringWorld]에서 그렇게 했다고 알고 있습니다.--[Leonardong]
[새싹C스터디2005/pointer]와 [포인터 참고자료]페이지가 따로 노네요.--[Leonardong]
- 새싹교실/2011/學高 . . . . 1 match
[[TableOfContents]]
* 윤종하: NateOn: '''koreang1@naver.com''' 등록해주세요~
* 새싹교실이 ZeroPage에서 시행되는만큼 4F([ThreeFs] + Future Action Plan)에 맞게 feedback을 작성합니다.
* Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
* 참고로 ZeroWiki는 MoniWiki Engine을 사용하며 Google Chrome이나 Mozila Firefox, Safari보다는 Internet Explorer에서 가장 잘 돌아가는 것 같습니다.
- 송치완 . . . . 1 match
[[TableOfContents]]
* 학술제 Always-On 참가 및 수상
- 위키로프로젝트하기 . . . . 1 match
[[TableOfContents]]
* How - 목표를 위한 방법과 일정의 기록이다. Offline 또는 Online 상에서 한 일에 대한 ["ThreeFs"] 를 남겨라.
=== Content 중심주의 ===
기존의 게시판방식이 장점이 있다면 '시간의 역사' 라는 점이 있겠다. 매일 작업일지를 쓰는 경우. 시간의 흐름에 따른 진행상황이 처음부터 주욱 보이기 때문이다. 반면 위키는 늘 현재성을 추구한다. 위키의 페이지는 늘 해당 주제를 중심으로 고쳐지는 글이다. 하지만, 시간의 역사 자체의 의미보다는 페이지 자체 내용, 즉 Content 중심의 사고라는 점에 더 무게중심을 두고 싶다. '시간의 역사' 자체가 Content 로서 중요하다면, 그것을 위한 페이지를 열어라.
* 이미 열려져 있는 페이지를 토대로 공부할 수 있다. 자신은 그 위에 또 하나의 글들을 추가하거나, 시대에 맞지 않는 틀린 글들을 고쳐주면 된다. 하나의 Page 이름 ( == Contents 라고 해도 좋을 것이다) 하에 많은 사람들이 해당 Page에 대한 '공헌자' 가 되는 것이다. 이는 새로운 프로젝트를 여는 것 보다 더 쉽고 빠르면서도 효율적으로 공헌하는 방법이다.
- 위키에대한생각 . . . . 1 match
* 익숙한 사람에게는 편리하나, 처음 컴퓨터를 쓰는 사람에게는 복잡해 보일 수도 있다고 생각합니다. 글 쓸때 각종 효과를 특수 문자(들)을 써서 나타내므로, 일종의 컴퓨터 언어같은 면이 있다고 보입니다. 따라서 우리같이 연관 있는 사람은 금방 배우지만, 아닌 사람들에겐 쓰기 힘들다는 인상을 줄 수 있습니다. -[Leonardong]
* 하지만 히스토리 삭제시의 그 가속감을 생각한다면!!! --NamelessOne
'''제로(혹은 원)''' 위키라는 말도 생략하고 쓰는 듯 합니다.--Leonardong
- 이승한/임시 . . . . 1 match
* ON_COMMAND_RANGE(NUMBERBUTTONS_BASEID, NUMBERBUTTONS_BASEID+24, OnCalcButtonPressed)
* ON_COMMAND_RANGE 로 여러개의버튼의 이벤트를 하나로 날릴 수 있구나...
- 정모/2002.3.28 . . . . 1 match
* 랜카드 에서 WOL(Wake On Lan) 을 메인보드와 연결하면 정전됐다가 전기가 들어왔을때 자동으로 켜진다죠 WOL 전선 값도 몇푼 안할텐데 어서 하나 연결합시다~. -- 동문서버에서 동현이형 글을 퍼옴.
ADDON:
- 정모/2002.7.11 . . . . 1 match
* ["DeepAspectOnC"] - C 를 더 깊고 공부 하자는 스터디
- 정모/2006.9.7 . . . . 1 match
HTML+CSS+JAVAS+PHP+PYTHON > 잔고 - 지원, 상협, 지훈, 우용, 준석
Ruby On Rails - 현태, 상협, 건영, 수생, 아영
- 정모/2011.3.28 . . . . 1 match
[[TableOfContents]]
* HolubOnPatterns 0장을 읽고 이야기를 나누었다.
- 정모/2011.4.11 . . . . 1 match
[[TableOfContents]]
* [HolubOnPatterns]를 읽으면서 스터디하고 DB 프로젝트를 통해 실습한다.
* '''후기 작성 요령''' : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
* Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
- 정모/2012.2.24 . . . . 1 match
* 오랜만에 사회인 ZeroPager 두 분을 만나 즐거웠습니다! 치킨 감사합니다... 덕분에 ~~또~~ 폭식을 했습니다.....^_T 지원언니의 신입사원 연수 이야기 재미있었어요. 아직 취직을 하지 않았지만 가까운 미래에 취직을 해야할 상황이라 제겐 특히 더 와닿는 이야기가 아니었나 싶습니다. 승한선배의 GUI 세미나도 잘 들었습니다. 유행하는 것과 유행하지 않는 것에 대한 이야기가 가장 인상깊었어요. 작년에 [:DesignPatterns/2011년스터디 DP 스터디]를 시작하며 읽었던 FocusOnFundamentals 페이지가 생각납니다.
* 정모 이야기는 아니지만 PC실 정비 도와주고 싶었는데 그 날 Google Hackathon 본 행사가 있는 날이라 참석을 못했습니다ㅠㅠ
- 정의정 . . . . 1 match
* ACM ICPC Daejeon regional(11월) : AtttackOnKoala 팀 - Honorable Mention
- 조영준 . . . . 1 match
[[TableOfContents]]
* Python2/3
* ActionScript2
* Application
* KCD 5th 참여 http://kcd2015.onoffmix.com/
* 커뮤니티 오픈 캠프 인 마소 참여 https://twitter.com/YeongjunC/status/718603240040837120
* 동네팀 - 신동네 프로젝트 [http://caucse.net], DB Migration 담당
* 2015년 하계방학 Java 강사 - [https://onedrive.live.com/redir?resid=3E1EBF9966F2EBA!23488&authkey=!AHG1S-XLSURIruo&ithint=folder%2cpptx 수업 자료]
* [AngelsCamp/2014/OneBot]
* [OpenCamp/세번째] 준비 도움 및 최우수상! - 자동 볼륨 조절 안드로이드 앱 'Harmony'
* 여름방학 clonezilla 관련 프로젝트 진행
* [열파참/금요일], [Python3Tutorial]
- 창섭/Arcanoid . . . . 1 match
|| 11월 12일 || 새벽에 완성. 추가기능-바 늘어나기, 공 달라붙기 OnTimer 사용. ||
- 창섭/배치파일 . . . . 1 match
저장할때도 워드프로세서 고유의 포맷(예" .hwp 확장자를 가지는 아래아한글 데이터 파일)으로 저장하면 인식이 되지 않으므로 아스키 파일로 저장해야 합니다.가장 편리한 방법은 일반 문서 에디터( 도스의 Edit, Q에디터,U에디터 등)를 이용하거나 도스의 'Copy Con' 명령으로 배치 파일을 만드는 것입니다.다음과 같이 'Copy con 파일명' 형식으로 입력하고 엔터를 누르면 도스 프롬프트 상태에서 편집할 수 있는 상태가 됩니다.
C:\Bats> copy con Timedate.bat
여기서 쓰고 싶은 대로 적기만 하면 됩니다.제일 마지막행의 ^Z 는 파일의 제일 마지막 부분이라는 것을 도스에게 알려주는 코드로 < Ctrl + Z > 키 또는 F6 키를 누르면 됩니다. 그리고 엔터키를 한번더 누르면 '1 File(s) copied' 라는 메세지가 출력되는데, 이는 방금 ' copy con 파일명 ' 으로 작성된 문서파일이 성공적으로 만들어졌다는 뜻입니다.위의 문서파일은 확장자가 .BAT 로 붙었기 때문에 실행가능한 외부 명령어가 되는데, 배치파일은 명령이 기록되어 있는 순서대로 실행되기 때문에 timedate.bat 를 실행시키면 먼저 화면을 지우고 난뒤 시스템의 시간과 날짜를 설정합니다.간단한 배치파일은 'copy con 파일명' 으로 작성하는 것이 다른 프로그램의 도움없이 쉽고 빠르게 처리할 수 있습니다. 하지만 배치파일이 조금 길거나 작성중에 수시로 편집할 일이 생기는 경우에는 불가능합니다. 'copy con 파일명' 으로 파일을 작성하면 행으로 다시돌아갈 수 없을 뿐 아니라 수정이 불가능하기 때문입니다. 그러므로 배치파일을 만들 필요가 있을때는 문서 에디터를 이용하는 것이 좋습니다.
◇ 사용법 : echo [on/off] [문자열]
- on : 배치 파일 실행중에 그 배치 파일 내의 명령어를 화면에 표시합니다.
- 문자열 : 문자열을 생략하면 'press any key to continue...'라는 메세지가 화면에 출력됩니다. 만약 PAUSE 명령 뒤에 어떤 메세지를 지정하여 그 메시지를 출력하고 싶다면 'Echo On' 명령을 우선 내려야 합니다.
echo on
◇ 설명 : 배치 처리 중 pause명령을 만났을때 임의의 다른 메시지를 화면에 출력하고 싶다면 예 에서와 같이 반드시 echo on 명령이 선행되어야 하며 예의 경우에는 ' 준비가 되었으면 아무키나 누르세요...' 라는 메세지가 출력됩니다.
echo on
- 프로그래밍가르치기 . . . . 1 match
FocusOnFundamentals
- 혀뉘 . . . . 1 match
[[TableOfContents]]
* 칵테일 - Long Island Iced Tea
* Canon Canonet G3 QL 17
내가 찾으면 항상 곁에 있던.. Only for me
- 후각발달특별세미나 . . . . 1 match
프로젝트 때문에 빠르게 진행한게 아니라 선전부 모임때문에... 여튼 간결하게 하는 건 중요하다. 시간 되면 {{{~cpp The One Page Proposal}}}을 읽어보도록 해. --재동
Found 295 matching pages out of 7555 total pages (5000 pages are searched)
You can also click here to search title.