2008년 8월 20일 수요일

2008년 7월 30일 수요일

사자의 지혜.....! 그 후에...

사자의 지혜.....!





동물들의 세계에 전쟁이 일어났습니다.

사자가 총 지휘관이 되었고, 동물들이 사방에서 몰려들었습니다.

동물들은 서로를 쳐다보며 한심하다는 듯이 수군거렸습니다.



"당나귀는 멍텅구리라서 전쟁에 방해만 될테니 돌아가는게 낫지"

"토끼같은 겁쟁이가 어떻게 싸움을 한다고 온겨야? 한심하군.."

"개미는 힘이 약해 어디다 쓰겠어?"

"코끼리는 덩치가 커서 적에게 금방 들통나고 말 걸."



이 때 총지휘관인 사자가 호통을 쳤습니다.

"시끄럽다. 모두 조용해 해라!

당나귀는 입이 길어서 나팔수로 쓸 것이다.

그리고 토끼는 걸음이 빠르니 전령으로 쓸 것이며,

개미는 작아서 눈에 안 띠니 적진에 게릴라로 파견할 것이고,

코끼리는 힘이 좋으니 전쟁물자를 전달하는 일을 할 것이다."



지혜로운 사람은 단점을 장점으로 달리 봅니다.

회사에서, 가정에서 누군가의 단점이 보이십니까?

또는, 나 자신의 단점 때문에 좌절하시나요?

나와 타인의 장점을 볼 수 있는 눈을 크게 뜬다면

분명 삶이라는 전투에서 승리할 것입니다.



- 용혜원 시인 -

-- 그래서... 그 전쟁은 어떻게 되었을까?
멍청한 당나귀가 제대로 진군, 퇴각 나팔을 불 수 있었을까?
겁쟁이 토끼가 적군을 뚫고 소식을 제대로 전달했을까?
힘이 약한 개미가 게릴라 작전을 제대로 수행할 수 있었을까?
덩치큰 코끼리가 전략물자들을 제대로 운반했을까?

진정한 결론은 사자는 전쟁에 졌을꺼야.
암 지고 말고.
멍청한 나팔수와, 겁쟁이 전령과, 힘없는 게릴라 부대와, 눈에 띄는 전쟁물자 운반수의 운명은

전군의 혼란과, 통신 두절, 게릴라 부대 몰살, 전쟁물자 약탈의 결과를 가져올 것이다.
결국 사자는 졌겠지.
바보 사자!

2008년 7월 9일 수요일

베베포드 채윤

 
아직 목을 완전히 가누지는 않지만, 짧은 시간 앉아있는 것은 가능.
Posted by Picasa

2008년 1월 12일 토요일

메일로 올리는 포스트

글자도 넣어 보고.

여기는 2번째 줄이에요.

이미지는 안들어 간다.

그림도 넣어 보고...

{

gkgk{

헤헤

}

}

여기서 끝내 봐야지

2008년 1월 10일 목요일

Web.Config 암호화

ASP .NET 2.0에서 웹 사이트를 만들 때 주로 ConnectionString을 Web.Config에 기록한다.
문제는 이게 평문이라서 파일이 노출될 경우 DB정보가 위험하게 된다.
그래서 여기 저기 찾던 중 암호화 시켜 저장하는 방법을 찾게 되었다.

웹 페이지를 하나 작성하고 3개의 버튼(Button1, Protect, UnProtect)과 라벨을 올린다.
Web.Config의 AppSettings 섹션에 테스트할 항목을 하나 만들고 적는다.
<appSettings>
<add key="SiteName" value="NameNameName" />
<add key="SecretKey" value="1234567890" />
<appSettings>


버튼1을 눌렀을 때 라벨에 해당 항목의 내용을 출력하도록 한다.
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = ConfigurationManager.AppSettings["SecretKey"].ToString();
}
모 요런식 되겠다...

Protect하는 함수 하나 정의 하고...
private void ProtectSection(string sectionName, string provider) {
Configuration config =
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected) {
section.SectionInformation.ProtectSection(provider);
config.Save();
}
}

Protect버튼 눌렀을 때 호출해 줍니다.
protected void Protect_Click(object sender, EventArgs e)
{
ProtectSection("appSettings", "DataProtectionConfigurationProvider");
// ProtectSection("connectionStrings", "DataProtectionConfigurationProvider");
}

위 함수를 호출한 후 Web.Config를 열면 이상한 문자들로 appSettings가 바뀌어 있다.
Button1으로 값을 페이지에 출력하게 하면 정상적으로 출력됨을 확인할 수 있다.

Web.Config를 다시 평문으로 바꾸려면
private void UnProtectSection(string sectionName) {
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && section.SectionInformation.IsProtected) {
section.SectionInformation.UnprotectSection();
config.Save();
}
}

위 함수를
protected void Unprotect_Click(object sender, EventArgs e)
{
UnProtectSection("appSettings");
}
에서 호출해 주는 식으로 해 놓고
Unprotect버튼을 누르면 된다.

참조사이트: http://davidhayden.com/blog/dave/archive/2005/11/17/2572.aspx

2008년 1월 8일 화요일

Padding

<div style="padding:10px 10px 10px 10px">

...

테두리와 개체 사이 공간을 준다.
top, right, bottom, left 순

1값만 있을 경우 4군데
2값만 있을 경우 위,아래 / 좌,우
3값만 있을 경우 위 / 좌,우 / 아래

2008년 1월 2일 수요일

거실에 피어있는 꽃


지난 주 부모님집에서 가져온 꽃이다. D40X로 거의 처음 찍어보는 나름 접사 사진.

꽃의 이름은 잘 모르겠는데... 꽃은 거의 핀 채 우리집에 놓였고, 지금은 활짝 피었다.
우리집 거실에 놓인 식물은 서서히 죽는다. 안방 화단의 식물들이 죽지 않는 것을 보면 이는 분명 일조량과 관계있을거라 생각된다. 아침에 커튼을 늦게 걷으면 일조량이 충분치 않게 된다.
초점은 꽃과 꽃사이 중간에 꽂혔다.
ISO400인데 나름 노이즈는 잘 모르겠다. 번들 밖에 없으니.... 떨린 사진보다는 약간의 노이즈가 더 나은 선택인듯 싶다.

D40X 추가 액세서리

니콘ML-L3

무선 리모컨 D40X에서 사용 가능한 대략 1.6

EN-EL9

D40X 충전지 거의 4만원

.NET DataSet코드로 만들기

.NET에서는 DB연결 없이도 DataSet, DataTable 등을 코딩으로 만들수 있다.
이 방법을 이용하면, DB연결 없이 DB와 연결되는 컨트롤의 테스트를 해 볼 수 있다.

//Dataset만들기
DataSet myDs = new DataSet();
//DataTable은 바로 만들지 않고 MakeMyTable이라는 함수를 통해 만들어 보았다.
DataTable myTb; myTb = MakeMyTable();
....
// 대략 아래와 같은 형태로 MakeMyTable에서 테이블을 개략적으로 정의했다.
//Table 구조 설정
private DataTable MakeMyTable()
{
DataTable myTb = new DataTable("Table");
DataColumn c1 = new DataColumn();
c1.DataType = System.Type.GetType("System.String");
c1.ColumnName = "NAME";
myTb.Columns.Add(c1);
DataColumn c2 = new DataColumn("FROM");
c2.DataType = System.Type.GetType("System.Int32");
myTb.Columns.Add(c2);
DataColumn c3 = new DataColumn("TO");
c3.DataType = System.Type.GetType("System.Int32");
myTb.Columns.Add(c3);
DataColumn c4 = new DataColumn("LINE");
c4.DataType = System.Type.GetType("System.Int32");
myTb.Columns.Add(c4);
return myTb;
}

...
테이블에 데이터를 넣는 부분은 아래와 같은 형식으로 하면 됩니다.
많은 열이 필요할 경우 순환문을 이용하면 될 것 임.
DataRow myNewRow;
myNewRow = myTb.NewRow();
myNewRow["NAME"] = "하나";
myNewRow["FROM"] = 10;
myNewRow["TO"] = 20;
myNewRow["LINE"] = 14;
myTb.Rows.Add(myNewRow);

myNewRow = myTb.NewRow();
myNewRow["NAME"] = "둘";
myNewRow["FROM"] = 14;
myNewRow["TO"] = 22;
myNewRow["LINE"] = 17;
myTb.Rows.Add(myNewRow);
...
위와 같은 결과로 만들어진 테이블을 DataSet에 넣고
myDs.Tables.Add(myTb);

DataSet을 바인딩 하는 컨트롤의 DataSource로 이용할 수 있다.
...
chart1.DataSource = myDs.Tables["Table"];
...



니치루카치 블로그 탄생


어케 어케 하다가 한번 만들어 봤습니다.
석등은 지난해(2007년 봄)에 용산에 위치한 국립중앙박물관에 갔을 때 찍은 사진이에요.
앞으로 블로그에 무엇을 쓸지는 미정~.