누가 소프트웨어의 심장을 만들었는가 - 박지훈
November 16th, 2008

오랜만에 친구의 블로그를 둘러보던 도중이었습니다. 독서 포스팅이 몇 개 있더군요. 그 중에 하나가 바로 이 책 <누가 소프트웨어의 심장을 만들었는가>이었습니다. 그 친구가 이 책의 내용 중 몇 가지 발췌해서 포스팅 한 것으로 기억하는데, 그 내용 뭐였었는지는 자세히 기억이 나지 않네요. 아무튼 그 때 이 책을 읽어봐야겠다는 생각이 들었습니다. 그리고 지난 번 도서관에 갔을 때 빌려오게 되었죠.
이 책은 컴퓨터/소프트웨어의 흐름과 그 시대의 인물들의 이야기입니다. 책의 앞 부분에는 인물들 간의 영향을 주고 받은 관계를 잘 정리해 놓았고, 인물들의 이야기도 쉽게 써놓았습니다. 편하게 읽을 수 있는 책이라고 생각되고, 컴퓨터/소프트웨어의 큰 인물들의 흐름을 쉽게 보는데 좋다고 생각됩니다.
누가 소프트웨어의 심장을 만들었는가 http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9788979143218
나는 구름 위를 걷는다 - 필리프 프티
November 9th, 2008

아마도 지하철을 타고 어디론가 가는 길이었던 것으로 기억합니다. 건물 사이에서 줄을 타고 있는 사람과 ‘나는 구름 위를 걷는다’는 문구의 광고가 있더군요. 마음에 들었습니다. 그리고 그것이 책 광고라는 것을 알았죠. 곧장 이 책의 제목을 적어놓았던 것 같습니다. 그리고 이번에 도서관에 가면서 이 책을 빌려왔습니다.
저는 픽션보다는 논픽션을 좋아합니다. 그리고 사람들의 이야기를 좋아하죠. <나는 구름 위를 걷는다>, 이 책은 세계무역센터(WTC) 빌딩 양쪽 끝에 줄을 걸고 줄타기를 한 필리프 프티의 이야기입니다. 지금 그 세계무역센터는 안타깝게도 2001년도에 큰 사고를 당한 그 빌딩입니다. 그 높은 빌딩 위에서 줄을 탔다는 것도 대단하지만, 그가 이를 위해 보냈던 과정도 멋져 보이네요.
그는 열여덟 살 때, 뉴욕 맨하튼에 세계무역센터가 만들어질 예정이라는 얘기를 듣습니다. 그리고 그는 그때 생각을 합니다. 거기에 가서 줄을 타겠다는 것이었죠. 그리고 6년 후, 그는 그 계획을 실천하게 됩니다.
왜 그 일을 했느냐는 기자들의 질문에 그는 이렇게 얘기했다고 합니다.
“나는 오렌지가 세 개 있으면 곡예를 하고, 건물이 두 채 보이면 줄타기를 하는 사람입니다.”
이 글을 읽고 문득 이런 생각이 들었습니다. 나는 내 자신을 어떤 사람이라고 말할 수 있을까. 물론 바로 답은 나오지 않았지만, 나중에 생각나면 말씀 드리도록 하죠. ^^
나는 구름 위를 걷는다 http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9788957091319
MySQL 사용자 생성/삭제
November 9th, 2008
앞서 C#을 하면서 MySQL이 필요했지만, 최근 PHP를 하게 될 일이 생겨서 MySQL을 사용하고 있습니다. MySQL 매번 사용하면서도 다시 확인하게 되는 것이 MySQL의 사용자 생성과 삭제 구문인 것 같습니다. 그리고 많은 블로그나 사이트들에서 직접 user 테이블을 접근하는 방식으로 사용자 생성/삭제 방법을 알려주고 있습니다. 물론 그것이 문제가 있는 것은 아니지만, 해당 기능을 위해 제공하는 구문으로 실행을 하는 것이 좋겠죠.
MySQL 사용자 생성/삭제에 관한 설명은 공식 홈페이지의 링크로 대신하겠습니다.
MySQL 사용자 계정 생성
http://dev.mysql.com/doc/refman/5.0/en/adding-users.html
MySQL 사용자 계정 삭제
http://dev.mysql.com/doc/refman/5.0/en/removing-users.html
링크는 MySQL 5.0 문서 링크이지만, 해당 문서에 3.23, 4.0, 4.1, 5.1, 6.0에 대한 문서의 링크도 나와있습니다.
.NET DataTable에서 UPDATE나 DELETE에서 문제가 발생하는 경우
November 8th, 2008
제목이 적당한지는 잘 모르겠네요. 앞서 C#으로 SQL을 사용을 할 때 겪었던 문제점이 있었습니다. .NET에서 DB Data Adapter를 사용하여 테이블을 SELECT한 후, DataTable를 잘 채워 넣었습니다. 샘플을 잘 참조하여 구현하였기 때문에 전혀 문제가 없었죠. 하지만 문제는 DataTable의 Row를 편집/삭제(UPDATE/DELETE)하려고 할 때 발생했습니다. 바로 아래와 같은 예외를 발생하면서 프로그램이 멈춘 것입니다.
편집(UPDATE)의 경우에는,
- System.InvalidOperationException was unhandled : 키 열 정보를 반환하지 않는 SelectCommand에 대해서는 UpdateCommand에 대한 동적 SQL 생성이 지원되지 않습니다.
- System.InvalidOperationException was unhandled : Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
삭제(DELETE)의 경우에는,
- System.InvalidOperationException was unhandled : 키 열 정보를 반환하지 않는 SelectCommand에 대해서는 DeleteCommand에 대한 동적 SQL 생성이 지원되지 않습니다.
- System.InvalidOperationException was unhandled : Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.
도대체 무슨 문제가 있을까 좀 고민을 했죠. (오랜만에 또 삽질을 하는구나 생각을 했습니다. 흑) 그리고 다행이 문제점을 찾았습니다.
바로 DataTable의 Row를 편집/삭제(UPDATE/DELETE) 하기 위해서는 테이블 칼럼에 Primary Key가 존재해야 했었던 것이죠. 그 동안 항상 SQL Query문을 사용할 때는 행의 수정이나 삭제를 위해 WHERE (조건)문을 사용해 왔었는데, .NET 내부적으로도 그 것이 필요할 것이라는 생각을 하지 않고 있었던 것입니다. 이번에 테스트를 하기 위해 만든 테이블이 마침 그냥 간단한 문자열 칼럼 하나 밖엔 만들지 않았던 것이죠. 바로 그래서 WHERE 조건으로 처리할 칼럼이 없어서 예외가 발생한 것이었습니다.
그리고 테이블에 인덱스 컬럼을 하나 만들고 Primary Key를 설정했습니다. 그리고 문제없이 이젠 문제없이 잘 작동을 하더군요.
물론 Primary Key를 사용하지 않고도, UpdateCommand와 DeleteCommand를 사용할 수도 있다고 합니다. 관련 URL은 다음을 참고하세요. (https://blogs.msdn.com/spike/archive/2008/10/29/how-to-update-an-excel-worksheet-using-dataset-and-the-oledbdataadapter.aspx)
MySQL Connector/Net
November 8th, 2008
최근 친구 중 한 명이 C#에서 MySQL을 사용하고 싶다고 물어보더군요. 쉬울 것 같다는 생각은 들었지만 해보지는 않았던 터라 관련해서 좀 찾아보고 샘플코드를 만들어 보았습니다.
일단 가장 먼저 찾은 것은 C#에서 어떻게 연동을 할 수 있는가에 대한 것이었는데, MySQL 사이트에 .NET을 위한 커넥터를 제공하고 있었습니다. 그게 바로 MySQL Connector/NET이죠. 홈페이지에서는 여러 가지 커넥터들을 제공하는데 예전에 JSP에서 MySQL을 사용하기 위해 Connector/J를 사용해본 적이 있습니다.
다음은 MySQL Connector/Net 다운로드 URL입니다.
http://dev.mysql.com/downloads/connector/net/5.2.html
여러 가지 버전이 있는데, 아무래도 5.2가 가장 최신 버전인 듯 싶었기 때문에 저는 5.2를 설치했습니다. (VS2008도 지원된다고 적혀 있네요.)
일단 설치는 인스톨러를 이용하여 쉽게 설치가 되고요. 사용방법에 대해서 궁금하실 수 있겠는데, 설치된 폴더에 샘플 코드와 문서가 아주 잘 나와 있습니다. ^^
그리고 최근엔 많은 사람들이 간편하게 SQL을 사용하기 위해서 SQLite를 많이 사용하는데요. 다음 기회에는 SQLite와 .NET 연동하는 부분을 봐두는 것도 좋을 것 같다는 생각입니다.