• c# List 잔기술들 2

    BindingList로 바꾸기 예를 들어 iEnumerable을 리스트로 만들려면 toList를 이용할 수 있는데 toBindingList는 없다. List로 만든 뒤 BindingList로 타입캐스트를 하려 해도 되질 않는다. 이런 경우를 위해 BindingList는 아래와 같은 컨스트럭터를 제공한다. Remove와 RemoveAt의 성능 비교 Remove는 인스턴스로 찾아서 지우고 RemoveAt은 인덱스 번호로 찾아서 지운다. 후자가 많이 더 빠르다. 지울 대상의 인덱스 번호를 안다면 당연히 후자를 써야 한다….

  • 대한민국 군인의 베트남 민간인 학살과 소멸시효 완성의 항변

    미국을 도와 베트남 전쟁에 참여했던 우리 국군들 가운데 일부가 전쟁 수행 중 베트남 민간인들을 집단적으로 죽였다. 이 살인으로 가족을 잃은 피해자가 우리 정부를 상대로 손해의 배상을 청구했고 우리 법원이 그 주장을 받아들였다. 이 사건에서 제일 중요한 쟁점은 우리 국군이 정말 베트남의 민간인들 여럿을 죽였는가 하는 거다. 이에 대해 우리 정부는 부끄럽게도 부정하고 있지만 그 동안…

  • 인플래이션의 원인과 대책

    재화의 가치가 다른 것의 그것에 비해 꾸준하게 오르는 걸 인플래이션이라 한다. 정상적이지 않은 물가의 상승이다. 크게 수요의 측면과 공급의 그것에서 원인을 찾을 수 있다. 예를 들어 우한 바이러스로 인한 생활 지원금처럼 어떠한 이유로든지 정부가 납세자들에게 돈을 주면 이를 받은 사람들은 쓰게 마련이다. 그러면 수요는 늘고 재화를 공급하는 사람들에게는 가격을 올릴 동기가 유발된다. 이렇게 수요의 증가로…

  • c# DataTable 잔기술들

    열 감추기 DataTable을 건드릴 게 아니라 DataGridView를 제어해야 한다. 파일 입출력 클래스는 procotol buffers(protobuf)를 이용하여 쉽게 바이너리로 바꿀 수 있지만 데이터 테이블은 힘들다. 데이터 테이블도 바꿀 수 있게 프로토버프를 이용한 라이브러리가 나와 있긴 하지만 프로토버프 제작자가 만든 게 아니라서 써 보진 않았다. WriteXml는 데이터 테이블의 이름을 설정해야 작동한다. xml로 저장하고 읽는 건 저장에 많은 용량을…

  • c# DataTable의 뜨레드 안정성

    아래의 코드는 디버그 모드에서 제대로 작동하지 않지만 크로스-뜨레드 예외로 처리되지도 않는다. 릴리스 모드에서는 정상으로 작동한다. 아래와 같이 하면 디버그 모드에서도 잘 된다. DataTable은 뜨레드에서 안전하지 않은데 다른 비주얼 컨트롤들과는 달리 크로스-뜨레드 예외로 처리되지 않고 상황에 따라 다르게 몇몇의 예외로 처리되거나 위의 예제에서처럼 아예 조용하다. 그럼에도 불구하고 이것은 크로스-뜨레드 문제이며 다른 예외 처리에 정신을 팔리거나 유의하지…

  • 논리 프로세서와 멀티뜨레드

    cpu를 만드는 기술은 연산 능력을 높이는 대신 크기를 줄이는 방향으로 발전하고 있다. 그게 더 쉽기 때문이다. 더 조그매진 cpu들 여러 개를 한데 묶어 하나의 칩으로 만든다. 이게 멀티-코어 프로세서다. 하나의 부속이지만 그 안에는 물리적으로 구분되는 여러 cpu들이 코어라는 이름으로 들어 있다. 하나의 작업을 여럿으로 나눠 처리하는 것을 멀티뜨레딩이라 한다. 흔히들 알고 있는 것과는 달리 멀티뜨레딩이 꼭 동시concurrent, parallel 처리를 의미하는 것은 아니다. 하나의 순서로 처리되는 작업을 두 개 이상의 cpu, 코어, 뜨레드로 나누어 시분할serial time slice 처리를 할 수도 있다. cpu에 크게 부하를 주는 연산을 실행하면 비록 싱글 뜨레드로 작성된 거라 해도 윈도우즈는 여러 뜨레드로…

  • c# List 잔기술들 1

    TextBox로 한꺼번에 출력하기 리스트의 아이템들을 TextBox에 출력할 때 한 줄씩 하면 느리다. 아래와 같이 한꺼번에 하면 빠르다. Environment.NewLine은 “\r\n”이라고 해도 된다. 전자는 후자를 호출하므로 후자가 더 빠르다. 아이템 순서 바꾸기 List에는 move 메떠드가 없다. ObservableCollection에는 move가 있지만 바인딩을 할 게 아니라면 List가 더 빠르므로 굳이 ObservableCollection를 쓸 필요는 없다. 어차피 move도 아래와 같은 방법으로 작동한다….

  • 경향신문의 보도 문제 1

    고위 공직자 아들 군 배치에 대한 편향적 주관 경향신문은 2022년 11월 17일 높은 공직에 있는 사람들의 아들들이 더 편하게 군 생활을 한다며 공정하지 않은 배치를 막기 위한 법 정비가 필요하다는 취지의 기사를 냈다. 높은 공직에 있는 사람들은 상대적으로 자식들 교육에 더 공을 들일 형편이 된다. 군대에도 나가서 싸우는 보직이 있는가 하면 머리를 써야 하는 일…

  • 믿지 못할 미국

    사정 변경의 원칙 약속이란 당사자들이 합의를 한 때의 상황이 심하게 달라지면 그 의미를 잃는다. 현대법의 일치된 입장도 현저한 상황의 변경으로 인한 법률 효과의 변경을 인정하며 우리 법도 마찬가지다. 제218조 (수도 등 시설권) ① 토지소유자는 타인의 토지를 통과하지 아니하면 필요한 수도, 소수관, 까스관, 전선 등을 시설할 수 없거나 과다한 비용을 요하는 경우에는 타인의 토지를 통과하여 이를…