간단 요약
참석자: bar, cervantes, Complication, frosk, jrandom, polecat, tethra, void
회의 로그
16:02 <jrandom> 좋아, 이제 시작하자 16:03 <jrandom> 안녕, 회의 전 메모를 http://dev.i2p.net/pipermail/i2p/2006-August/001304.html 에 올려놨어 16:03 <jrandom> 내가 여기서 그 메시지를 다시 읽어주는 대신, 우리 표준 ??? 섹션으로 바로 넘어가자 - 16:04 <jrandom> 논의하고 싶은 안건 있는 사람? 16:04 <@cervantes> 으음 16:04 * cervantes 허둥지둥 글을 읽으러 감 16:05 <+Complication> 네트워크 상태와 관련해서, 여기서는 모두 정상... 16:05 <+Complication> 근데 NTCP 전송(transport)에 대한 질문 한 가지가 있어요(사실 포럼에서 전달한 질문). 16:06 <+Complication> 즉, 그것을 활성화하면 어떤 사람에게 CPU 부하 문제가 생길 수 있을까요? (그분은 XP를 쓰고 있었음) 16:06 <@cervantes> 난 오히려 전환한 뒤로 CPU 사용률이 더 낮아졌다고 말해야겠네 :) 16:07 <jrandom> 음, 그건 *비활성화*할 수 없어 (소스 코드를 읽고 비밀 주문을 아는 게 아니라면 ;) 16:07 <+Complication> 이 문제를 말한 사람은(쉽게 재현되진 않고, 여기서는 큰 CPU 사용은 없음) 높은 CPU 사용률이 NTCP와 상관관계가 있어 보였다고 했어요 16:07 <jrandom> 그러니까, 그 말은 NTCP 수신(inbound) 연결을 허용하지 않는다는 뜻이라 가정할게 16:07 <+polecat> NTCP가 내 router를 즉시 CPU를 끝까지 '클록'하게 만들어요, 그리고 config 파일을 수동으로 수정해서 router를 다시 작동시키기 전까지 그걸 두 번 반복했죠. 16:07 <jrandom> (발신(outbound) NTCP 연결은 계속 사용하면서) 16:07 <+Complication> (여기서는 평소보다 아주 조금만 올라갔는데, 아마 데이터를 *엄청* 더 많이 밀어넣어서일 듯) 16:08 <+Complication> ( http://forum.i2p/viewtopic.php?t=1815 ) 16:08 <jrandom> NTCP 연결을 성립할 때는 무거운 암호 연산을 하게 돼 (또는 세 번) 16:08 <jrandom> 수신 NTCP 연결을 허용한다면, 한꺼번에 수많은 수신 시도가 들어올 수 있어. I2P router가 수백 대나 있으니까 16:09 <jrandom> polecat: 그건 NTCP 탓이 아니라, NTP 풀에 있는 불량 NTP 서버 탓이었어 16:09 <+polecat> 맞아요. 그러니까 그건 제가 직접 어떻게 할 수 있는 문제가 아니었던 거네요. 16:09 <jrandom> (그 NTP 서버를 추적해서 풀 운영진이 !thwap 하게 만든 cervantes에게 감사 :) 16:10 <jrandom> ((그리고 앞으로 그런 미친 녀석들을 피할 수 있게 해준 Complication에게도 :)) 16:10 <@cervantes> 헤헷 그들의 서버 감시가 주중에만 작동하는 것 같아 ;-) 16:10 <+Complication> 음, 현재의 회피는 꽤 제한적이에요 16:10 <@cervantes> http://www.pool.ntp.org/scores/216.52.237.153 16:11 <+Complication> 나중에는 더 '편집증적'으로 엄격한 걸 코딩해보려고요 16:11 <+polecat> 오, 그러면 NTCP를 켜도 더는 CPU를 '클록'하지 않는 건가요? 16:11 <jrandom> (원래도 그랬던 적 없어, polecat. 우연의 일치였지 ;) 16:12 <+Complication> "clock"이 구체적으로 어떤 의미로요? 16:12 <jrandom> (cervantes의 링크 참고) 16:12 * polecat이 Complication의 뒤통수 한 대 후려침. 16:12 <@cervantes> 뭘 피우고 있니, polecat 16:12 <+Complication> :P 16:12 <+polecat> 어, 그러니까, 모든 클록 사이클을 싹 가져갔다는 뜻이에요. :) 16:13 <+Complication> 시계가 30초 앞으로나 뒤로 튀었다면, 정말 많은 세션을 잃고, 온갖 무거운 암호 연산에 의존하게 됐을 거예요 16:13 <+Complication> 그럼 CPU 사이클을 엄청 잡아먹었겠죠 16:13 <+Complication> 실제로 포럼의 그분도 같은 일을 겪고는 잘못 상관지었을 수도 있겠네요? 물어봐야겠어요… 16:13 <jrandom> 아.. 음, 유효한 수신 NTCP 연결이 몰려오면 CPU도 순간적으로 치솟고, 반면 발신 전용 NTCP는 한 번에 제한된 수의 새 NTCP 피어와만 대화하려고 해 16:14 <jrandom> 수신 NTCP를 활성화하지 않아도 전혀 문제 없어. 16:15 <@cervantes> Complication: 서버가 월요일 중반쯤에 고쳐졌으니, 그 이후에도 문제가 있었는지 확인해볼 가치가 있겠어 16:15 <jrandom> 좋아, 다른 논의할 거 있는 사람? 16:16 <+Complication> cervantes: 그러게요, 시도해볼 만해요 16:16 <@cervantes> 여전히 일부 사람이 주기적으로 leases(리스, 목적지 임대 항목)를 잃는다는 보고가 있었어... 그거 알려진 문제야? 16:16 <+void> NTCP 구현이 SSU와 얼마나 달라요? 16:17 <+polecat> leases를 잃는지 어떻게 알 수 있죠? 16:18 <jrandom> void: NTCP에서는 메시지당 대역폭 오버헤드가 약간 더 있어 (하지만 OS의, 아마도 더 효율적인, 신뢰성 전송 구현으로 상쇄될 수도 있어) 16:18 <+Complication> polecat: tunnels.jsp에서 특정 tunnel 풀(예: "shared clients")에 tunnel이 없다고 표시될 거예요 16:18 <jrandom> cervantes: 응, 우리 tunnel 빌드 성공률이 아직 기대치만큼 못 미쳐 16:18 <+void> polecat: router 콘솔에 그렇게 나와 16:18 <+Complication> 그리고 void 말대로, 콘솔 왼쪽 사이드바에도 표시돼요 16:19 <+polecat> 저는 "No leases" 메시지를 자주 봐요... 그 얘기 맞죠? 16:19 <@cervantes> 응 16:20 <+polecat> 그게 보통 제 IRC 연결을 끊어먹어요. 전 그게 정상인 줄 알았는걸요! 16:21 * jrandom 찡그림 16:24 <+tethra> ㅋㅋ ;) 16:25 <jrandom> 좋아, 회의에서 더 할 얘기 있는 사람? 16:25 <@cervantes> jrandom: 요즘 syndie는 진전이 있었어, 아니면 ntcp/버그 수정/ISP 찾기/자전거 타기 하느라 손이 모자랐어? 16:27 <+tethra> feedspace 소식은 있어요, 아니면 그냥 그들의 eepsite로 가면 될까요? 16:28 <jrandom> 라이브 네트가 엉망진창이 됐을 때는 syndie를 옆으로 밀어놨어. 하지만 네트가 다시 궤도에 오르면서 syndie가 내 시간을 다시 가져가고 있고, 곧 작은 CLI 시스템을 내놓길 바라 (그 다음엔 사용자 피드백을 바탕으로 집중된 GUI들이 나올 거고) 16:28 <jrandom> (이미 구현된 SWT GUI는 꽤 괜찮은 상태지만, 기대치를 조정하기엔 아마 CLI부터 시작하는 게 좋을 거야) 16:29 * jrandom feedspace 소식은 아직 못 들었음 16:29 <@cervantes> 좋네 16:29 <jrandom> frosk: 소식 있어? :) 16:29 <+polecat> syndie를 다시 작업한다니 기뻐요. 새 버전이 꽤 기대돼 보여요. 노드에서 블로그를 삭제한다든지, 계정과 무관한 관리자 작업을 하는 것 같은 일에 대한 ACL은 어떤가요? 16:30 <@cervantes> <jrandom> DELETE FROM messages WHERE postedOn <NOW()-14*24*60*60; 16:31 <jrandom> 로컬 아카이브는 기본적으로 신뢰되는 상태로 남을 가능성이 커 (로컬 아카이브 DB에 접근할 수 있다면, 파일을 마음대로 바꿀 수 있으니까) 16:32 <jrandom> 하지만 공유 블로그의 경우엔, 게시물과 변경 사항을 인증 및/또는 인가하기 위한 암호 구조 세트가 이미 갖춰져 있어 16:33 <jrandom> (하지만 사람들이 '미승인' 게시물도 볼 수 있는 방법은 있을 거야, 다만 아주 한쪽 구석으로 밀려나 있겠지) 16:33 <+polecat> 누군가 수천 개의 거대한 블로그 글로 syndicate들을 플러딩하기만 하면, 게시글을 물리적으로 삭제하는 기술은 곧 완성될 거라고 확신해요. 16:34 <+tethra> 헤헷 16:35 <jrandom> 물리적 삭제는 쉬워, 처음부터 어떤 게시물을 받아들일지가 문제지 ;) 16:36 <jrandom> (syndie를 영화 배포 플랫폼 같은 걸로 만들 생각은 없어) 16:36 <+polecat> 샘플을 받아보기 전에는 무엇을 받아들이는지 확신할 수 없죠. 화이트리스트에 있는 블로그만 허용하고, 새 ID는 추가 전에 시험적으로 허용했다가 스팸 배신이 보이면 즉시 삭제하는 식을 상상해요. 16:36 <jrandom> 응 16:37 <+polecat> 저는 대화 흐름들을 서로 엮는 응용에 더 관심이 있어요: 공통 태그만 공유하고 중앙 서버가 전혀 없는 BBS를 만들 수도 있죠! 16:37 <jrandom> (새 ID는 수동으로 허용하고, 플러딩하는 ID는 수동으로 킥밴하고, 등등) 16:37 <jrandom> 그런 걸 위한 암호 구조가 기본으로 들어있기도 해, polecat :) 16:37 <+polecat> BBS에서는 승인된 메시지를 모더레이터가 서명하고, 사람들이 그 승인 목록을 모더레이터의 블로그에서 수집하는 방식일 수도 있겠네요. 16:38 <+polecat> 오우 훌륭하네요. 16:38 <@frosk> jrandom: 요즘은 GUI 작업을 하고 있었는데, 새 직장 시작과 병행하긴 어렵더라 :( 16:39 * cervantes가 인사팀에 연락해 frosk를 해고시키려 함 16:40 <jrandom> 아 좋네, syndie가 엉성한 HTTP syndication을 밀어내기 시작하면 다시 끌리게 될 거라 기대해 ;) 16:40 <@frosk> 적어도 우리 상사는 이제 I2P 개발을 팔로우해요 :) 16:40 * jrandom이 frosk의 상사에게 손 흔듦 16:40 <@frosk> 오 그러게요, 아직도 결심은 굳건해요(젠장!) :) 16:40 <jrandom> (frosk에게 휴가를 더 줌, 우리에겐 그가 필요해!) 16:41 <@cervantes> 네가 회사 기밀 정보를 syndie 블로그에 올려왔다는 걸 그가 읽지 않길 바라 16:41 <bar> GUI는 좋지, 우리는 GUI를 좋아해. 용서할게. 16:41 <+Complication> 헤헤 :) 16:41 <@frosk> 그의 사무실에 들어갔더니 syndie를 읽고 있는 걸 보게 되니 묘하더라고요 :) 16:41 <jrandom> 하하 굉장한데 16:42 <+polecat> 축하해요 frosk, 설령 수치와 악명 속에서 해고되더라도, 적어도 한 사람에게라도 syndie가 얼마나 멋진지 보여줬잖아요. 16:43 <@frosk> 헤헤 맞아요 16:43 <+tethra> 하하 16:44 <@frosk> 그 GUI(SWT 기반)는 feedspace의 모든 걸 위한 테스트베드이고/될 거예요, 시작을 떼기 위해서요 16:44 <jrandom> r0x0r 16:45 <+void> jrandom: 메일링 리스트에 올라오는 모든 글을 syndie에도 교차 게시(cross-post)하는 게 어때요? 16:45 <jrandom> 그걸 syndie SWT GUI에 완전히 통합해야 해 (기본 패러다임은 브라우저지만, 탭에는 HTML 페이지를 표시하진 않아) 16:46 <+polecat> 그거 좋겠네요. 저는 이제 메일링 리스트를 더는 못 받는 것 같아요. 16:46 <jrandom> void: 누가 작은 셸 스크립트를 써서 procmail 출력을 syndie CLI로 파이프하는 건 꽤 쉬울 거야 16:46 <@cervantes> 이 근사한 SWT GUI들이 애플리케이션에 묶여 있어? 아니면 CLI 실행 파일을 위한 상위 레이어(tops)들이거나 TCP를 쓰는 등등이야 16:46 <@frosk> 그 말이 맞네요 16:46 <jrandom> (기억이 맞다면, 예전에 내 블로그에 syndie CLI로 글을 넣는 방법을 설명한 글이 있어) 16:47 <+polecat> 현재는 syndie로 들여보낼 RSS 피드를 만들 수 있지만, 아직 좀 조악해요. 16:47 <jrandom> cervantes: 이벤트 핸들러에서 JDBC, 거기에 JNI와 MSVC 콜아웃을 인라인으로, 물론 ;) 16:47 * jrandom 몸을 숙임 16:48 <+polecat> Microsoft Visual Classes? 16:49 <@cervantes> jrandom: 그럼 SQL을 말할 수 있는 건 뭐든 syndie를 관리할 수 있겠네 16:49 <jrandom> (syndie 관점에서, 기능은 기본적으로 JDBC 데이터베이스만 갱신하는 많은 작은 CLI 앱들로 구현돼 있고, DB를 둘러보는 SWT UI가 있어) 16:51 <+polecat> 그리고 데이터베이스에 JDBC와 SQL 두 인터페이스가 있으니, 어느 프로토콜로 통신하든 클라이언트가 syndie를 망가뜨릴 수 있겠군요. 16:51 <jrandom> cervantes: 글쎄, 맞기도 하고 아니기도 해 - 데이터베이스의 꽤 많은 부분이 암호화되어 있어서, 모든 필드를 읽을 수 있는 건 아니거든 16:51 <+void> 현재 웹 인터페이스는 계속 남아 있을까요? 16:51 <jrandom> (JDBC == SQL) 16:51 <jrandom> void: 아니 16:51 <+polecat> JDBC는 멍청한 인간 가독 프로토콜이 아니라고 하신 줄 알았는데요? 16:51 <+Complication> JDBC == Java Database Interface, ODBC와 좀 비슷하죠 16:51 <jrandom> ((JDBC ~= SQL)) 16:51 <+Complication> SQL을 얹어 대화하는 무언가요 16:52 <+void> jrandom: syndie.i2p/syndiemedia.i2p.net은 어떻게 되나요? 16:52 <+polecat> 오. 뭐 어쨌든, 참고로 전 원래 SQL을 좋아하지 않았어요. 16:52 <@cervantes> jrandom: 그러니 직접 데이터를 빨아들이려 하기보단 syndieTools (tm)를 위한 상위 레이어(top)를 만드는 게 최선이겠네 16:53 <jrandom> void: 시간이 말해주겠지. 아마 1) syndie의 웹사이트/eepsite로 쓰이고, 2) syndicate할 게시물의 공개 아카이브로 쓰이며, 그리고 결국 웹 인터페이스가 작성되면 3) 웹 인터페이스를 제공할 거야 16:53 <+polecat> 고대 COBOL 문장 대신, 데이터베이스 쿼리로 바이트코드를 제출하면 안 되나요? 16:53 <jrandom> 그래, cervantes 16:53 <jrandom> !lart polecat 16:54 <+void> 헤헤헤 16:54 <+polecat> 아, 내 비밀 약점. 16:54 <@cervantes> * 인벤토리에 lart가 6개 남아 있습니다. 북쪽에 문이 있고, 바닥에는 의식을 잃은 polecat이 있습니다 16:54 <jrandom> cervantes: 그건 사실 CLI 앱 #3이야(개별 게시물을 추출하는 것, 앱 #2인 개별 게시물 나열 다음에 오고(그 전에 #1은 개별 게시물 생성, 그 전에 #0은 닉네임(nym) 관리))) 16:54 <jrandom> ㅋㅋ 16:54 <+tethra> 하하 16:55 <+Complication> 기능 제안: 바이트코드 대신, 살아있는 $agency 요원을 데이터베이스 쿼리로 제출하는 건 어때요? ;P 16:56 <+Complication> 안전성 검증이 훨씬 쉬울 거예요 :P 16:56 <@cervantes> jrandom: 알겠어 16:56 <+tethra> 적절한 기후에서는 그들이 전서구처럼 행동하나요, Complication? 16:56 <+Complication> tethra: TCP 스택을 통째로 밀어 넣는 데 성공한다면만요 :P 16:56 <+polecat> 맞아요, CPP 위의 데이터베이스 쿼리! 16:57 <+Complication> TCP에서 구겨지면 그들이 손상될 수도 있겠네요 16:58 <+Complication> (미안, 농담은 정말 #i2p-chat에서만 해야 하는데, 가끔은 참을 수가 없네) 16:58 * cervantes 곧 baff가 다가옴을 감지함 16:58 <+Complication> 데이터베이스 쿼리를 셸코드로? 16:59 <jrandom> 좋아, 회의에 더 할 말 있는 사람? 16:59 <+polecat> http://www.blug.linux.no/rfc1149/ <- 진짜로 이걸로 I2P를 tunnel할 수 있겠네요. 16:59 * Complication은 차라리 SQL을 고수하겠다고 함 17:00 <+void> jrandom: Java 말고 다른 언어들도 HSQLDB 데이터베이스용 라이브러리가 있나요? 17:01 <+Complication> OO도 있을 법해요, 그쪽에서 쓰는 것 같으니까요 17:01 <+void> 제 눈엔 '아닌 것' 같네요 17:01 <+void> 오, 흐음 17:01 <@cervantes> OpenOffice가 이걸 쓰니까 그럴 거라고 생각해 17:01 <+Complication> 근데 OpenOffice가 무엇으로 작성됐는지는 잘 모르겠네요 17:01 <jrandom> 내가 알기론 없어. 하지만 누군가는 다른 JDBC 데이터베이스(MySQL, Oracle 등)로 syndie를 돌릴 수 있어 17:01 <jrandom> OO는 Java를 써 17:02 <+void> OpenOffice는 이 데이터베이스를 정확히 무엇에 쓰죠? 17:02 <+Complication> 근데 부분적으로만 쓰는 것 같아요 17:02 <jrandom> void: PDF 생성과, Access 같은 그들의 데이터베이스 앱에 써 17:02 <jrandom> (그 밖에도 여러 가지) 17:02 <+Complication> 외부 JRE를 권장하는 걸 보면요 17:02 <+void> 알겠어요 17:03 <+void> 이식성 있는 SQL을 쓰는 건 골치 아프죠 17:03 <+Complication> 트리거나 저장 프로시저를 안 쓴다면, 그렇게 큰 고통은 아닐 텐데요 17:04 <jrandom> 에이, 그렇게 나쁘지 않고, 외부화하기도 쉬워 17:04 <+void> 특히 Oracle을 노릴 때는요 ;) 17:05 <jrandom> 사실, HSQLDB는 PL/SQL을 지원해 ;) 17:06 <bar> 이 데이터베이스를 통계, 피어 프로필, netdb 같은 데 쓰려는 다른 계획도 있나요..? 17:06 <jrandom> 아니, 이건 syndie 전용이야 17:06 <bar> 알겠어요 17:07 <jrandom> (그래도 HSQLDB 코드를 함께 배포하면, I2P에서도 '공짜로' 쓸 수 있어) 17:07 <@cervantes> syndie는 I2P 애플리케이션이 아니라, 단지 I2P 위에서 돌 수 있는 애플리케이션일 뿐이니까, 맞지? 17:07 <jrandom> 그래 cervantes, I2P에 대한 의존성은 없어 17:07 <+Complication> Syndie를 이식성 있게 유지하는 게 좋아요, I2P 이외의 다른 전송(transport)도 있을 수 있으니까요 17:07 <bar> 맞아요 17:08 <+Complication> 그런데, 같은 머신에서 HSQLDB 인스턴스를 여러 개 돌리기도 어렵지 않다고 봐요 17:08 <+Complication> 그래서 다른 앱들이 필요하면 그냥 가져다 쓸 수도 있을 것 같네요 17:08 <jrandom> 사소한 일이야, 그리고 in-JVM 데이터베이스만 쓰면 비용도 0이지 17:08 <+Complication> (가능하면 자기 인스턴스를 쓰게요) 17:10 <+void> SQLite용 JDBC 드라이버는 없나요? 17:11 <jrandom> 모르겠어, 써본 적이 없어 17:11 <+void> 아, 뭔가 *있*어 보이네요 17:13 <jrandom> 좋아, 회의에 다른 안건 있어? 17:13 <jrandom> 없으면... 17:13 * jrandom 준비 동작에 들어감 17:13 * jrandom 한 걸음 물러남 17:13 * jrandom 와인드업함 17:13 * jrandom 회의에 *baf*를 날려 종료함