좀 늦은감 있지만 난 24 미드가 참 좋다.
24시간을 한시간씩 분할해서 한편씩 만들어낸 아이디어도 높이 살만하다 ^^
한주 한주 건담 더블오와 함께 미드 24시 시즌 7에 빠져 보아요 ^^
public void Read2()
{
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
private void Input_Click(object sender, RoutedEventArgs e)
{
}
}
}
위의 기본 코드는 아래의 화면처름 나오게 됩니다.
이제 작업을 시작해 볼께요.
서비스 참조 추가를 통해서 웹서비스를 게시한 주소를 추가한 다음에 참조를 추가 합니다.
client.AddValueCompleted += new EventHandler<basicBoard01.boardService.AddValueCompletedEventArgs>(client_AddValueCompleted);
client.AddValueAsync(TextValue.Text);
}
위의 코드의 내용은 웹 서비스의 Client 객체를 생성하고 웹 서비스에서 값을 추가 하기 위해서 AddValue(string value) 에 해당하는 메소드 AddValueAsync()를 호출해 줍니다.
이때 완료된 후 콜백 형태로 받기 위해서 AddValueCompleted() 라는 이벤트 함수를 하나 추가 합니다.
위와 같이 값을 DB에 기록한 후 완료가 되면 Read2()를 호출해서 값을 ListBox에 뿌리도록 했습니다.
client.GetListCompleted += new EventHandler<basicBoard01.boardService.GetListCompletedEventArgs>(client_GetListCompleted);
client.GetListAsync();
}
마무리...
조금 장황하게 설명을 해봤지만 역시나 좀 두서가 없네요 ^^.
우선 확인되는 부분은 웹 서비스에서 AddValue, GetList 등의 메소드를 만들어 놓고 나서
웹 서비스를 참조 추가를 해서 보게 되면 위와 같이 항상 두개의 메소드가 생성 됩니다.
GetList 인 경우를 보게 되면 리턴만 받는것이기 때문에 GetListAsync() 라는 메소드만 호출하면 됩니다.
이때 호출후 리턴되는 데이터를 받는건 GetListCompleted 라는 이벤트 함수가 담당 하게 됩니다.
AddValue 인 경우를 보게 되면 리턴도 받지만 값을 인자로 받게 되는데요 AddValueAsync(TextValue.Text) 와 같이 해당 스트링 값을 입력 할 수 있게 됩니다.
이때도 AddValueCompleted 를 통해서 결과를 확인할 수 있습니다. 에러가 났는지 정상인지를 판단할 수 있다고 보여 집니다.
잘 적지는 못했지만 실버라이트에서 웹 서비스를 통해서 바인딩 하는 부분에서는 조금 접근한듯 합니다.
조금이나마 도움이 되면 좋겠네요 ^^.
지적질, 질문질 다 환영해요 ^^
using System; namespace boardService [WebMethod] dsBoardTableAdapters.memoTableAdapter adapter = new boardService.dsBoardTableAdapters.memoTableAdapter(); adapter.Fill(table); foreach (dsBoard.memoRow row in table.Rows) return datas; [WebMethod] |
위와 같이 구성하고 localhost에 게시를 해서 하나 등록을 해 놨습니다.
이제 다음 강좌에서는 실버라이트에서 화면을 구성하고, 데이터를 연동하는 곳을 해볼께요.
위의 웹 서비스를 테스트 하고 하는 부분들은 설명이 좀 길어 질거 같아서 추가를 하지 않았습니다.
이 부분은 웹 서비스 관련 책에 많이 나오기 때문에 생략 했습니다.
실버라이트와 웹 서비스를 연동해서 DB의 값을 바인딩 하는 부분을 한번 해보고 있습니다.
블랜드나 기타 XAML에서 바인딩 하는건 사실 잘 못하겠구요 ^^
그래서 비하인드 코드에서 바인딩 하는 것을 테스트 해보았습니다.
주제 : 기본 프로젝트 생성, DB 테이블 생성
/* file Main.cpp
*
* This program is an adaptation of the code Rex Jaeschke showed in
* Listing 4 of his Nov 2005 C/C++ User's Journal article entitled
* "C++/CLI Threading: Part II". I changed it from C++/CLI (managed)
* code to standard C++.
*
* One hassle is the fact that C++ must employ a free (C) function
* or a static class member function as the thread entry function.
*
* This program must be compiled with a multi-threaded C run-time
* (/MT for LIBCMT.LIB or /MTd for LIBCMTD.LIB).
*
* John Kopplin 7/2006
*/
#include <stdio.h>
#include <windows.h> // for HANDLE
#include <process.h> // for _beginthread()
static bool interlocked = false; // change this to fix the problem
const int maxCount = 100000000;
static LONG value = 0; // under Windows Server 2003 you
// could use LONGLONG here
unsigned __stdcall TMain(void* arg)
{
if ( interlocked )
{
for ( int i = 1; i <= maxCount; i++ )
{
InterlockedIncrement(&value); // under Windows Server 2003 you
// could use InterlockedIncrement64() here
}
}
else
{
for ( int i = 1; i <= maxCount; i++ )
{
++value;
}
}
return 3; // thread exit code
}
int main()
{
// In this program we create 3 threads and request that their
// entry-point-function be the TMain() function which is a
// free (C) function and hence causes no problems for
// _beginthreadex()
HANDLE hth1;
unsigned uiThread1ID;
hth1 = (HANDLE)_beginthreadex( NULL, // security
0, // stack size
TMain, // entry-point-function
NULL, // arg list
CREATE_SUSPENDED, // so we can later call ResumeThread()
&uiThread1ID );
if ( hth1 == 0 )
printf("Failed to create thread 1\n");
DWORD dwExitCode;
GetExitCodeThread( hth1, &dwExitCode ); // should be STILL_ACTIVE = 0x00000103 = 259
printf( "initial thread 1 exit code = %u\n", dwExitCode );
HANDLE hth2;
unsigned uiThread2ID;
hth2 = (HANDLE)_beginthreadex( NULL, // security
0, // stack size
TMain, // entry-point-function
NULL, // arg list
CREATE_SUSPENDED, // so we can later call ResumeThread()
&uiThread2ID );
if ( hth2 == 0 )
printf("Failed to create thread 2\n");
GetExitCodeThread( hth2, &dwExitCode ); // should be STILL_ACTIVE = 0x00000103 = 259
printf( "initial thread 2 exit code = %u\n", dwExitCode );
HANDLE hth3;
unsigned uiThread3ID;
hth3 = (HANDLE)_beginthreadex( NULL, // security
0, // stack size
TMain, // entry-point-function
NULL, // arg list
CREATE_SUSPENDED, // so we can later call ResumeThread()
&uiThread3ID );
if ( hth3 == 0 )
printf("Failed to create thread 3\n");
GetExitCodeThread( hth3, &dwExitCode ); // should be STILL_ACTIVE = 0x00000103 = 259
printf( "initial thread 3 exit code = %u\n", dwExitCode );
// If we hadn't specified CREATE_SUSPENDED in the call to _beginthreadex()
// we wouldn't now need to call ResumeThread().
ResumeThread( hth1 ); // Jaeschke's // t1->Start();
ResumeThread( hth2 ); // Jaeschke's // t2->Start();
ResumeThread( hth3 ); // Jaeschke's // t3->Start();
// In C++ the process terminates when the primary thread exits
// and when the process terminates all its threads are then terminated.
// Hence if you comment out the following waits, the non-primary
// threads will never get a chance to run.
WaitForSingleObject( hth1, INFINITE ); // Jaeschke's t1->Join()
WaitForSingleObject( hth2, INFINITE ); // Jaeschke's t2->Join()
WaitForSingleObject( hth3, INFINITE ); // Jaeschke's t3->Join()
GetExitCodeThread( hth1, &dwExitCode );
printf( "thread 1 exited with code %u\n", dwExitCode );
GetExitCodeThread( hth2, &dwExitCode );
printf( "thread 2 exited with code %u\n", dwExitCode );
GetExitCodeThread( hth3, &dwExitCode );
printf( "thread 3 exited with code %u\n", dwExitCode );
printf( "After %d operations, value = %d\n", 3 * maxCount, value );
// under Windows Server 2003 you
// could use %I64d
// The handle returned by _beginthreadex() has to be closed
// by the caller of _beginthreadex().
CloseHandle( hth1 );
CloseHandle( hth2 );
CloseHandle( hth3 );
printf("Primary thread terminating.\n");
}
안녕하세요, 아이템거래 중개몰을 판매하고 있습니다.
http://www.visualg.kr/item <~~~ 우선 여기를 오픈해서 한번 보세요 ^^
1. 어디서든 볼수 없다. 마일리지 잠금 서비스
:아이템거래시장을 석권하고 있는, 아이템매니아 . 베이 등에서도 마일리지 잠금장치는 보실 수 없습니다.
마일리지 잠금장치는 저희 싸이트에만 있는 특출된 서비스입니다.
한번 보시길 바랍니다~^^!
2. 자동 통장인증 시스템.
:출금이 완료되면 자동으로 계좌인증이 되도록 만들었습니다.
따로 회원정도 수정없이 간편하게 됩니다.
3. 편리한 관리자페이지
:관리자 페이지가 매우 손쉽습니다.
때문에, 혼자서 운영 가능하십니다.
1. APS로 제작되어 있어서 수정이 손쉽게 됩니다.
2. FTP 및 DB 설정등 기본적인 셋팅을 지원해 드립니다.
3. 풀 소스를 이전해 드립니다.
1. 리뷰 홈페이지 : http://www.visualg.kr/item
2. 연락처 : gsi451@naver.com
판매가격 : 80만원
: 소스비용 + DB셋팅
궁금한 점은 연락 주세요.
일반회원 아이디와 관리자 아이디를 지원해 드리겠습니다.
한번 구경하시고 판단해 주시기 바랍니다.
Table |
Member |
Product |
Category |
Cart |
Btable |
Porder |
System.Object 오버라이딩
public class Pixel {저번주에 값, 참조 타입에 대해서 스터디를 했다.
한번더 복습의 경험이 된거 같다.
우선 여기서 적을 것은 참조 타입의 주소 참조를 통해서 일어나는
몇가지를 적을 생각이다.
string 의 경우 값을 여러개 대입하거나 += 연산자를 통해서
해당 값들을 추가 할때 참조타입이기 때문에 메모리 공간에 값이 추가 되면서
string의 변수가 참조를 하게 된다.
이때 값을 대입하거나, += 을 통해서 대입되는 값들은
새로운 메모리 공간을 또 요구 하게 된다. 즉, 나머지 이전의 참조 값들은
더이상 참조가 되지 않는 것 뿐이며, 그 값은 가비지 컬렉터를 통해서
지워지게 된다.
그렇다 보니 그 값은 지워지지 않은 상태에서 많은 메모리를 소비 하게 된다.
string은 대입을 한번만 하고 해당 정보를 가져다 쓸때만 사용하는 것이 좋다.
만약 여러번의 대입을 사용할 경우는 StringBuilder 을 쓰는게 좋다.
이건 메모리를 충분히 잡아 놓은 상태에서 해당 값들을 계속해서
추가 하더라도 string보다는 메모리 소비가 적게 된다.
레지스트리수정을 통한 Windows XP시리얼 번호 변경
1. 시작 > 실행 에서 regedit 입력하고, HKEY_Local_Machine+Software+Microsoft+WindowsNT+Current Version+WPAEvents 이걸 찾아서 오른쪽 창에 있는 "oobetimer" 항목에 대고 마우스 오른쪽 눌러서 값을 아무거나 바꿔 인증상태를 Deactivation 상태로 변경한다. (값에서 CA만 지워도 가능)
2. 레지스터리 편집창 닫고, 다시 시작 > 실행에서 %systemroot%\system32\oobe\msoobe.exe /a 을 입력하면, 인증창이 뜨는데,
리스트중 두번째 전화를 걸어 인증할 수 있는 옵션을 선택한다.
3. 두번째 옵션을 선택하고 next 누르면 새창이 뜨는데 다른것은 무시하고 하단 메뉴의 '제품 key 변경' 버튼을 누른다. 그러면 또 새로운 key 입력 창이 뜨는데, 거기에 정식 시리얼키를 입력하고 화면 하단의 '나중에 알림'버튼을 눌러 인증과증을 종료한다.
[출처] XP 시리얼 번호 변경방법|작성자 퍼플
조인 테이블 테스트시 필요한 쿼리문
학생, 동아리 테이블은 기본으로 생성됨
학생동아리 테이블은 FK로 구성되어짐
-------------------------------------------------------------------------------------------
use sqlDB
create table stdTbl
(
stdName nvarchar(10) not null primary key,
addr nchar(4) not null
)
go
create table clubTbl
(
clubName nvarchar(10) not null primary key,
roomNo nchar(4) not null
)
go
create table stdclubTbl
(
num int identity not null primary key,
stdName nvarchar(10) not null
foreign key references stdTbl(stdName),
clubName nvarchar(10) not null
foreign key references clubTbl(clubName)
)
go
insert into stdTbl values('박지성', '서울')
insert into stdTbl values('박주영', '경기')
insert into stdTbl values('조재진', '충북')
insert into stdTbl values('이천수', '인천')
insert into stdTbl values('안정환', '강원')
go
insert into clubTbl values('수영', '101호')
insert into clubTbl values('바둑', '102호')
insert into clubTbl values('축구', '103호')
insert into clubTbl values('봉사', '104호')
go
insert into stdclubTbl values('박지성', '바둑')
insert into stdclubTbl values('박지성', '축구')
insert into stdclubTbl values('조재진', '축구')
insert into stdclubTbl values('이천수', '축구')
insert into stdclubTbl values('이천수', '봉사')
insert into stdclubTbl values('안정환', '봉사')
go