<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
    <channel>
        <title>Acuros&apos; innovation</title>
        <link>http://blog.acuros.pe.kr/index.php?mid=textyle</link>
        <description></description>
        <language>ko</language>
        <pubDate>Mon, 21 May 2012 00:32:09 +0900</pubDate>
        <lastBuildDate>Mon, 21 May 2012 00:32:09 +0900</lastBuildDate>
        <generator>XpressEngine 1.4.5.10</generator>
                                <item>
            <title>파이썬을 통한 자연언어처리과목 프로젝트</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=33955</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=33955</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=33955#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;요즘 저는 카이스트에서 올해 처음 열린 &quot;파이썬을 통한 자연언어처리&quot;라는 과목을 듣고 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;수업 중 프로젝트가 있는데&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;저희 조는 다음과 같은 프로젝트를 하기로 했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;드라마 대본을 넣으면 대본에서 주요 인물들을 보여주고 그 인물들 중 두 명을 고르면&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;경어체의 사용(어떤 체의 경어체를 사용하는가, 누구에게는 높이고 누구에게는 낮추는가, 어떤 빈도로 높이는가)을 분석하여&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;시간에 따른 두 인물의 상하관계를 보여주는 그래프를 그리는 것입니다 !&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;꽤 흥미로운 주제이고 한글로 된 corpus를 처리한다는 점에서 나중에 꽤 자주 써먹을 수 있는 기술들을 익히고 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;으 근데 대본들에 오타도 있고 잘못된 문법의 사용이나 맞춤법이 틀려서 인식이 안되는 경우도 많네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;형태소분석기가 잘못돼서 &quot;하다&quot; 가 명사로 인식될 확률도 높고 해서 이리저리 고생하고 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;나중에 프로젝트가 완료되면 관련 자료를 올리도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Sat, 12 May 2012 20:44:07 +0900</pubDate>
                                </item>
                <item>
            <title>제레미 리프킨의 KAIST 방문</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=33876</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=33876</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=33876#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;아래는 학내게시판의 글의 댓글을 글쓴이의 허락하에 가져온 것입니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;&quot;현재 겪고 있는 위기는 단순한 위기가 아닌 종의 위기&quot;라는 말에서 출발했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;자연이 쌓아둔 자원의 31%를 사용하는 인간이 동시간대에 1%밖에 생산해내지 못한다고 하면서, 이대로라면 큰 위기가 닥친다는 이야기였죠.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;그렇게 새로운 economic vision의 필요성을 이야기했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;communication은 비약적인 발전을 몇 번 거쳤는데,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;1. 활자의 개발&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;2. 매스미디어&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;3. 컴퓨터 및 인터넷&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이라 이야기했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;3번의 특성에 의거해, 우리는 화석 에너지에서 새로운 에너지 패러다임인 Distributed Energy(이하 DER로 표기합니다)로의 전환을 이루어야 한다, 이것이 새로운 economic vision이라고 합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;과거 큰 힘에 의해 움직이던 중앙에서 나누어 주는 식의 화석연료 체제가 아닌, 주변에 있는 풍부한 에너지원(태양열, 바람, 등등 신재생에너지)을 이용해 각자 필요한 동력(주로 전기)을 생산하는 구조가 되어야 한다고 하지요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;인터넷의 큰 특성은 Top-down이 아닌 Side-by-side 구조라는 점을 이야기했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이를 위해 구축한 EU의 5 pillars system이 예시로 등장합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;pillar 1. 2020년까지 총 에너지 중 20%의 신재생 에너지 비율 달성&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;pillar 2. DER을 모으는 시스템 구축(ex: 태양열만으로 동력을 해결하는 빌딩). 이게 완성되면, 건물이나 컴퓨터 자체가 하나의 발전소로 기능할 수 있다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;pillar 3. 수소를 주 매체로 하는 저장 시스템의 구축. [DER에 의해 발전-수소 저축-DER이 없을 때 수소 사용] 사이클을 이야기했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;pillar 4. 인터넷을 통한 nervous system과 같은 기능 구축.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;pillar 5. 사용자가 에너지 소비만이 아니라 판매의 주체도 될 수 있는(남는 에너지를 판매할 수 있는) 시스템의 구축&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;로 이루어집니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;소프트웨어를 통한 음악 산업을 비웃던 음악계는 한방을 먹었고,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;블로그를 무시하던 신문사는 블로그를 하나씩 갖게 되었습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;인터넷에 의한 DER의 분배 역시 얼마든지 힘을 가질 수 있는 것입니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이를 통해 에너지의 &quot;democratize&quot;를 이루어 낼 수 있다고 했지요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;(3D printing을 이야기했는데, 메모가 부정확해서 맥락을 모르겠습니다;)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;인터넷의 side-by-side 특성이 다시 나오면서, ETSY라는 홈페이지 이야기가 나왔습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;어느 학생이 자작 가구 판매를 중개하는 사이트를 만든 것인데, 사무실 하나 없이 인터넷만으로 500만 달러를 벌어들이는 사이트가 되었죠.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이처럼 3차 산업 혁명에서는 국경이 없어질 것입니다. Wi-fi는 아주 좋은 예로, 중심에서 점차 Node가 확장되어 모두가 연결되는 큰 시스템을 구축한다는 것이죠.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이런 환경에서는 슈퍼컴퓨터로도 분석하기 힘든 우주 현상을 전지구상의 컴퓨터 자원을 조금씩 모아 큰 분석할 수 있게 될 것입니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;EU는 주변 대륙으로 DER System을 전파하는 주체가 될 것이라는 이야기를 했습니다. 어떤 상품을 파는 게 아니라요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;이처럼 시대는 변화하고 있고, 아시아, 그리고 한국도 변화해야 합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;한국의 에너지 의존도(66% 화석, 33% 원자력)와 유럽(독일의 예시를 들었습니다)의 비교가 나왔고요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;한국의 Green Energy potential은 높으며, 이를 이용하지 않는 것이 아쉽다고 했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;수출이 소득의 20%라고 하나, 내수를 살펴야 한다는 이야기도 했고요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;앞으로의 시대는 empathy가 주가 되는 시대가 올 것이며, 이것을 확장해 나가야 된다고 했습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;우리가 그 주축이 되어야 하며, 그를 위해 &apos;start conversation&apos;해야 한다는 것이지요.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;----------&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Dotum, 돋움, Helvetica, Arial, sans-serif; line-height: 19px; text-align: left; background-color: rgb(255, 255, 255); &quot;&gt;뒷부분으로 갈수록 메모가 허술해서 내용이 부족합니다. 혹여 제가 잘못 적었거나 틀린 부분이 있으면 지적 환영합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 10 May 2012 16:13:55 +0900</pubDate>
                                </item>
                <item>
            <title>항상 마감을 지키는 조직</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31778</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31778</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31778#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;q1&quot;&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;q2&quot;&gt;&lt;p&gt;







&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;일간&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;신문이&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;있는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;도시라면&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;어디나&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;매일&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;새로운&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;제품&lt;span class=&quot;s1&quot;&gt;(&lt;/span&gt;신문&lt;span class=&quot;s1&quot;&gt;)&lt;/span&gt;을&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;개발하는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;숙련된&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;조직이&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;있다&lt;span class=&quot;s1&quot;&gt;. &lt;/span&gt;그들은&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;마감을&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;넘기는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;일이&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;절대&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;없다&lt;span class=&quot;s1&quot;&gt;. &lt;/span&gt;마감&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;직전에&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;뉴스가&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;변경되거나&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;컴퓨터가&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;다운&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;되는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;상황&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;심지어는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;해당&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;지역에&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;재해가&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;발생한&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;경우에도&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;거의&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;예외없이&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;마감&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;기한은&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;지켜진다&lt;span class=&quot;s1&quot;&gt;. &lt;/span&gt;자&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;절대&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;마감기한을&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;놓치지&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;않는&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;개발&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;프로세스를&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;보고&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;싶은&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;여러분이라면&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;지역&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;신문사를&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;찾아가&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;벤치마킹&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;하라&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: right;&quot;&gt;Implementing Lean Software Development 인용&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Sat, 31 Mar 2012 11:52:12 +0900</pubDate>
                                </item>
                <item>
            <title>Kent Beck</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31759</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31759</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31759#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;저는 2년 전 부터 Kent Beck과 facebook 친구였습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;애자일을 좋아하고 공부하는 한 학생으로서, 그리고 개발자로서 Kent Beck은 존경하지 않을 수 없는 인물이죠.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://agile.egloos.com/5084979&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;http://agile.egloos.com/5084979&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;를 인용하여 Kent에 대해서 잠시 설명하자면&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;q2&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; background-color: rgb(241, 255, 223); &quot;&gt;켄트 벡은 현재 TRI(Three Rivers Institute)의 설립자이자 소장이다. 그가 지금껏 일생을 통해 소프트웨어 개발에 한 기여는 매우 다양하다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; background-color: rgb(241, 255, 223); &quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; &quot;&gt;그 중 잘 알려지지 않은 것으로는&amp;nbsp;&lt;strong style=&quot;color: rgb(204, 0, 0); &quot;&gt;소프트웨어 패턴&lt;/strong&gt;이 있다. 그는 1987년 워드 커닝햄(Ward Cunningham)과 함께, 건축계의 패턴 개념을 소프트웨어 개발에 적용한 선구자였다. 그의 작업들은 향후 디자인 패턴 등 패턴 운동 전반에 큰 영향을 미치게 된다. 그리고 개발자들의 테스팅 도구&amp;nbsp;&lt;strong style=&quot;color: rgb(204, 0, 0); &quot;&gt;xUnit&lt;/strong&gt;의 개발도 중요한 기여이다. xUnit은 단위 테스팅 프레임워크로 개발자들 간에 현재 전세계적으로 사실상의 표준으로 자리잡고 있으며 수 백 가지 프로그래밍 언어로 번역되었고, xUnit의 전파를 통해 개발자 단위 테스팅이 널리 확산되었다. 또한 xUnit과 함께 테스트를 먼저 실시하는&amp;nbsp;&lt;strong style=&quot;color: rgb(204, 0, 0); &quot;&gt;테스트 주도 개발&lt;/strong&gt;(Test Driven Development)을 재발견하고, 널리 퍼뜨린 바 있다. 무엇보다도 켄트 벡은&amp;nbsp;&lt;strong style=&quot;color: rgb(204, 0, 0); &quot;&gt;애자일 방법론의 핵심 선구자&lt;/strong&gt;&amp;nbsp;중 한 사람으로 그가 탄생시킨&amp;nbsp;&lt;strong style=&quot;color: rgb(204, 0, 0); &quot;&gt;익스트림 프로그래밍&lt;/strong&gt;(Extreme Programming)은 개발자 사회에서 새로운 문화를 만드는 중요한 역할을 했다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; &quot;&gt;그가 만든 익스트림 프로그래밍&amp;nbsp;및 애자일 방법론은 현존하는 소프트웨어 개발 방법론 중 가장 빠르게 성장하고 있는 방법론 중 하나이며,&amp;nbsp;2006년도 포레스터 리서치 보고에 따르면 북미 유럽 IT 기업 중 17%가 애자일 방법론을 사용 중이다.&lt;/p&gt;&lt;p style=&quot;font-family: &apos;맑은 고딕&apos;, &apos;Malgun Gothic&apos;, &apos;Lucida Grande&apos;, &apos;Trebuchet MS&apos;, Tahoma, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; text-align: left; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;뭐 이런 분입니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; &quot;&gt;오늘은 현재 제가 참가하고 있는 팀의 상황을 설명하고 조언을 구하느라 시간을 꽤 잡아먹었는데도 친절히 답변을 해주셨어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; line-height: 21px;&quot;&gt;하ㅏㅏㅏ핳 좋다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; line-height: 21px;&quot;&gt;아무튼 저는 Kent Beck이 쓴 책들을 많이 읽었고 읽을 때 마다 많은 감명을 받아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; line-height: 21px;&quot;&gt;Kent가 쓴 책들은 다 읽어보세요 !&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; line-height: 21px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; line-height: 21px;&quot;&gt;그냥 오늘은 정말 주제 없는 잡담 ..&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Sat, 31 Mar 2012 10:32:26 +0900</pubDate>
                        <category>Kent Beck</category>
                        <category>켄트 백</category>
                                </item>
                <item>
            <title>MBTI의 가치</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31536</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31536</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31536#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;이 글은 MBTI에 대해 대략적으로 알고 있다는 전제하에 작성하였습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;MBTI에 대해서는&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://agile.egloos.com/5265969&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;http://agile.egloos.com/5265969&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;에 매우 잘 설명되어있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;자신의 MBTI를 아는 것은 중요합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;하지만 그것이 자신이 어떠한 성향을 가지고 있다는 것을 나타내는 문자가 의미를 가지는 것은 아닙니다.&amp;nbsp;예를 들어 &quot;나는 ENTP야!&quot; 라고 하는 것은 그냥 나의 성격을 MBTI를 이용하여 함축적으로 표현하는 것 뿐입니다.&amp;nbsp;MBTI의 실제 가치는 MBTI를 통해 자신의 약점을 파악할 때 생깁니다. 다시 말하면 &quot;ENTP&quot;인 사람은 자신에게 반대 타입인 &quot;ISFJ&quot;가 부족하다는 사실을 인지할 때 가치가 있습니다.&amp;nbsp;따라서 자신의 MBTI를 알 때에 의식적으로 자신의 약점을 생각할 필요가 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 18px; &quot;&gt;나는 어떤 생각이 부족할까?&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;예를 들면&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;I타입인 사람들은 &quot;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;브레인스토밍 등의 회의시간에 내 의견을 혼자만 생각하고 말하지 않고 있는지는 않은가&quot;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;E타입인 사람들은 &quot;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;자신의 강력한 주장과 많은 말로 회의를 점유하고 있기 때문에 다른 사람들이 말을 못하고 있지는 않은가&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt; 등을 생각해봐야합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; &quot;&gt;저는 주기적으로 MBTI검사를 하는 편인데(MBTI는 자주 바뀝니다) 매번 MBTI를 검사를 할 때 마다 &quot;항상&quot; E가 100%를 차지합니다.&amp;nbsp;실제로 저는 회의시간에 제 생각을 많이 말하는 편이고 제가 말을 하는데 있어서 &quot;공격을 당하지는 않을까?&quot; 하는 생각을 남들보다 덜 하는 편입니다.&amp;nbsp;또한 그렇기 때문에 회의분위기가 저에 의해 좌우되고 제가 회의를 이끌어가게 되는 경우가 많습니다.&amp;nbsp;하지만 이것이 항상 좋은 결과를 낳지만은 않습니다. 먼저 보이지 않는 압박에 의해 저와 대립되는 아이디어들이 입밖으로 나오기가 어렵습니다. 또한 집단지성으로 가야할 회의가 저를 중심으로 한 &quot;집단사고&quot;로 가는 경우가 되기도 합니다. 결과적으로 다른 사람들이 생각을 할 기회를 잃게만들고 팀의 잠재적 사고능력을 저하시킬 수도 있습니다. 따라서 저는 &quot;말하지 않고 따로 생각한 후 생각한 것 그대로 말하기&quot;, &quot;나는 가장 나중에 말하기&quot; 등과 같은 방법을 회의에 사용하기도 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;S타입인 사람들은 &quot;내가 숲을 보지는 못하고 나무에만 집착하고 있지는 않은가&quot;등을 생각해야하고&lt;br /&gt;N타입인 사람들은 &quot;내가 너무 추상적인 것만 생각하고 디테일에 신경쓰지 못하고 있지는 않은가&quot; 와 같은 생각을 해봐야합니다.&lt;br /&gt;&lt;br /&gt;저는 N타입입니다. 가끔 S가 나오기도 하는데 전체적으로 N타입이고 부분적으로 S타입이어서 N타입 성향이 나오는 경우가 많습니다. N들끼리 모인 회의에서는 서로 생각도 잘 맞고 회의도 잘 됐다고 기쁘게 회의를 끝내도 실제로는 서로 다른 생각을 했다가 실제 일을 할 때에 충돌이 날 확률이 높습니다. N들은 추상적인 단어를 주로 활용하기 때문에 각 단어에 대한 이해가 서로 다를 수 있기 때문입니다. 예를 들어서 &quot;고객을 만족시켜야한다.&quot; 라는 것이 누구에게는 &quot;고객이 요구하는 것들을 모두 들어줘야한다.&quot; 로 해석될 수 있고 누구에게는 &quot;고객이 요구하는 것들을 들어주는 것보다는 진정으로 고객이 원하는 것을 파악해서 만족시키자.&quot;로 해석될 수도 있습니다. 각자의 기준에서 고객을 만족시키는 행위는 다를 수 있으니까요.&lt;br /&gt;반면 S타입들의 회의는 소모적인 회의가 될 수도 있습니다.너무 디테일한 레벨에서 얘기하고 조정하느라 시간을 낭비할 수 있습니다. 결국에는 한단계만 추상화시켜도 같은 얘기를 하고 있는데말이죠.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;T/F, J/P는 굳이 적지 않겠습니다. 어쨌든 중요한건 자신의 약점을 파악하고 의식적으로 보완할 생각을 하는 것이기 때문에 T/F, J/P는 직접 생각해보세요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;개인에서 팀으로&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;이걸 조금만 더 응용하면 개인에서 팀으로 넘어갈 수 있습니다.&amp;nbsp;팀 전체의 성향이 파악이 되면 상대적으로 적은 성향을 가진 사람들이 나타납니다. 그럼 그런 사람들은 팀내에서 꽤 압박을 받을 것입니다.&amp;nbsp;나는 조금 더 구체적이었으면 좋겠는데 팀 사람들은 왜이렇게 답답하냐고 하고 ..&amp;nbsp;나는 혼자 더 생각해봤으면 좋겠는데 팀 사람들은 어서 지금 얘기해보라고 하고 ..&lt;br /&gt;따라서 팀의 성향을 파악하는 것도 중요합니다.&amp;nbsp;팀의 성향을 파악하고 소수성향의 사람들의 의견이 중요하다는 것을 인식해야합니다. 왜냐하면 대부분이 하지 못하는 생각을 그들이 가지고 있기 때문이죠.&amp;nbsp;또한 그들이 팀 내에서 억압받지 않도록 배려해줘야합니다. 그들은 나름대로 스트레스를 받고 있을 것이기 때문에 최대한 스트레스를 받지 않도록 도와줘야합니다. 그들이 있기에 팀이 한 방향으로만 치우치지 않고 밸런스를 유지할 수 있기 때문입니다. 그들마저 팀을 떠나면(혹은 팀 내에서 의견을 내기를 포기하면) 팀은 반대성향의 피드백을 받지 못하고 극단적인 팀이 되기 쉽습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;그리고 한가지 주의할 점이 있습니다. MBTI가 한 사람의 성격의 모든 것을 말해주지는 않는 다는 것입니다. MBTI는 성격 중 4개의 criteria만을 보고 그 성향을 나타내주는 지표인 만큼 그저 참고치 정도만 된다는 것입니다. 뿐만 아니라 내가 어떠한 성향이 나타난다고 해서 내가 그 반대의 성향을 아예 갖지 않는 것은 아닙니다. 상대적인 것이죠. 오히려 그렇기 때문에 MBTI를 맹신하면 안되고 그만큼 나의 성향을 나타내는 MBTI 자체가 가치를 가지지는 않는다는 것입니다. 따라서 MBTI를 통해 우리가 배울 수 있는 것은 &quot;균형을 유지하고 있는가?&quot; 의 질문을 끊임없이 해야하고 팀의 균형을 유지해야하는 것입니다. 여기서의 균형을 유지하기 위해 팀에는 4가지의 리더쉽이 존재해야합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Motivation - 주로 MBTI유형 중 NF형이 Motivational Leadership을 가지고 있습니다. 사람들을 격려하고 팀의 분위기를 생각하는 등 &quot;행복&quot;을 추구하는 리더쉽입니다.&lt;br /&gt;2. Organization - 주로 MBTI 유형 중 SJ형이 Organizational Leadership을 가지고 있습니다. 시간을 분배하거나 역할을 분배하는 등 조직의 &quot;효율성&quot;을 중시하는 리더쉽입니다.&lt;br /&gt;3. Information, Idea, Innovation - 주로 MBTI유형 중 NT형이 I형 Leadership을 가지고 있습니다. 새로운 정보와 아이디어를 제시하고 &quot;혁신&quot;을 추구하는 리더쉽입니다.&lt;br /&gt;4. Jiggle - 주로 MBTI유형 중 SP형이 Jiggle Leadership을 가지고 있습니다. 보통 팀의 Trouble shooter역할을 하고 흥미진진한 것을 좋아하며 &quot;행동&quot;을 중시합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;위 4가지 리더쉽이 균형을 이룰 때 팀은 잘 굴러갑니다. 그리고 팀 리더는 위 4가지 리더쉽이 이 팀에 발휘되고 있는가를 지속적으로 판단해야합니다. 혼자서 모든 것을 다할 수는 없을 것입니다. 각 리더쉽에 맞는 내부리더를 세워 위임을 하는 것도 매우 좋은 방법입니다. 팀을 이끌어가는 것과 위임과 관련된 것은 다음에 또 기회가 되면 블로깅을 해보겠습니다. 끝으로 저도 애자일 이야기 블로그의 마지막 인용구를 적어볼까 합니다. 저에겐 매우 인상적인 구절입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;q2&quot;&gt;&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0); &quot;&gt;우리는 같음을 통해 연결되고 다름을 통해 성장합니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이제 3일 뒤 중간고사 공부를 해야하기 때문에 담고 싶은 내용을 모두 담지는 못했네요. 다음에 기회가 될 때 연장해서 적어보겠습니다.&lt;br /&gt;&lt;br /&gt;P.S. 저는 팀 리딩과 팀 심리학과 관련된 것을 애자일 컨설팅 김창준 대표님께 가르침을 받았습니다. 감사합니다.&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 23 Mar 2012 19:36:23 +0900</pubDate>
                        <category>MBTI</category>
                        <category>팀 리딩</category>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>SICP Exercise 2.27</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31514</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31514</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31514#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;b&gt;Exercise 2.27.&lt;/b&gt;&amp;nbsp;&amp;nbsp;Modify your&amp;nbsp;&lt;tt&gt;reverse&lt;/tt&gt;&amp;nbsp;procedure of exercise&amp;nbsp;&lt;a href=&quot;http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.html#%_thm_2.18&quot;&gt;2.18&lt;/a&gt;&amp;nbsp;to produce a&amp;nbsp;&lt;a name=&quot;%_idx_1692&quot;&gt;&lt;/a&gt;&lt;a name=&quot;%_idx_1694&quot;&gt;&lt;/a&gt;&lt;tt&gt;deep-reverse&lt;/tt&gt;&amp;nbsp;procedure that takes a list as argument and returns as its value the list with its elements reversed and with all sublists deep-reversed as well. For example,&lt;/p&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;tt&gt;(define&amp;nbsp;x&amp;nbsp;(list&amp;nbsp;(list&amp;nbsp;1&amp;nbsp;2)&amp;nbsp;(list&amp;nbsp;3&amp;nbsp;4)))&lt;br /&gt;&lt;br /&gt;x&lt;br /&gt;&lt;i&gt;((1&amp;nbsp;2)&amp;nbsp;(3&amp;nbsp;4))&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;(reverse&amp;nbsp;x)&lt;br /&gt;&lt;i&gt;((3&amp;nbsp;4)&amp;nbsp;(1&amp;nbsp;2))&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;(deep-reverse&amp;nbsp;x)&lt;br /&gt;&lt;i&gt;((4&amp;nbsp;3)&amp;nbsp;(2&amp;nbsp;1))&lt;/i&gt;&lt;/tt&gt;&lt;/p&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;tt&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/tt&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;tt&gt;&lt;i&gt;&lt;/i&gt;&lt;/tt&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;&quot;&gt;(define x (list (list 1 2) (list 3 4)))
x

(define (deep-reverse x)
  (if (empty? x)
      empty
      (if (pair? (car x))
          (append (deep-reverse (cdr x)) (list (deep-reverse (car x))))
          (append (deep-reverse (cdr x)) (list (car x)))
      )
  )  
)&lt;/pre&gt;&lt;tt&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/tt&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 22 Mar 2012 00:39:31 +0900</pubDate>
                        <category>SICP Exercise 2.27</category>
                                </item>
                <item>
            <title>CS220 Programming  Principles Homework#4</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31400</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31400</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31400#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;&quot;&gt;(define (compose f g)
  (lambda (x) (f (g x)))
)
(define (repeated f n)
  (if (= n 1)
      f
      (compose f (repeated f (- n 1))))
)
a.
(define (sqrt-of-square x)
  (= (sqrt (square x)) x)
)
(sqrt-of-square 4.1) 				#t
(sqrt-of-square 3)				#t
(sqrt-of-square 3.1415926535)			#t

b.
(define (square-of-sqrt x)
  (= (square (sqrt x)) x)
)
(square-of-sqrt 5.0)				#f
(square-of-sqrt 3)				#f
(square-of-sqrt 3.1415926535)			#f

c.
(define (inverse-test first second x)
  (= (first (second x)) x)
)
(inverse-test sqrt square 4.1)			#t
(inverse-test square sqrt 5.0)			#f

d.
(define (make-inverse-test first second)
  (lambda (x) (= (first (second x)) x))
)

e.
(define (binary-inverse-test first second x y)
  (= (first (second x y) y) x)
)

f.
(define (make-binary-inverse-test first second)
  (lambda (x y) (= (first (second x y) y) x))
)
(define (same-parity first . remain)
  (define (same-parity-iter first remain result)
    (if (equal? remain (list))
        result        
        (if (equal? (even? first) (even? (car remain)))
            (same-parity-iter first (cdr remain) (append result (list (car remain))))
            (same-parity-iter first (cdr remain) result)
        )
    )
  )
  (same-parity-iter first remain (list first))
)

1. 
iter은 앞에서부터 순서대로 진행되는데 cons는 두 번째 인자 리스트의 
맨 앞에 첫 번째 인자를 붙이기 때문에 앞에 있는 것이 가장 안쪽에 들어가게 된다.
2.
cons는 첫 번째 인자를 리스트인 두 번째 인자의 맨 앞에 붙이는데 두 번째 인자가 리스트가
아니여서 cons가 임의로 리스트로 만든 후 첫 번째 인자를 붙인다. 
하지만 이미 첫 번째 인자인 answer가 list이기 때문에 리스트가 중첩된다.

&lt;/pre&gt;&lt;/div&gt;</description>
                        <pubDate>Tue, 13 Mar 2012 20:44:32 +0900</pubDate>
                        <category>SICP Exercise 1.43</category>
                        <category>SICP Exercise 2.20</category>
                        <category>SICP Exercise 2.22</category>
                                </item>
                <item>
            <title>Replace django admin add/change form in specific view</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31303</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31303</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31303#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; &quot;&gt;&lt;b&gt;Sorry for poor English&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I was developing a new django site with django admin page.&lt;/p&gt;&lt;p&gt;One of function that admin should be able to do was making multiple models with default setting.&lt;br /&gt;But django admin is made for add or change &quot;one&quot; model.&lt;br /&gt;So I had to customize my admin page by replacing form of admin.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;If you want to add additional field in all cases(add, change), it is quite simple. Just override &quot;form&quot; attribute of ModelAdmin class.&lt;br /&gt;For example,&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:python;highlight:[12]&quot;  title=&quot;Add additional field to admin&quot;&gt;from django.contrib import admin                      
from django import forms                              
from myapp.models import MyModel                      
                                                      
class MyModelCustomizedModelForm(forms.ModelForm):    
    additional_field = forms.CharField()              
    class Meta:                                       
        model=MyModel                                 
        fields=(&apos;fields&apos;, &apos;that&apos;, &apos;I&apos;, &apos;want&apos;, &apos;to&apos;,) 
                                                      
class MyModelAdmin(admin.ModelAdmin):                 
    form = MyModelCustomizedModelForm                 
                                                      
    def save_model(self, request, obj, form, change): 
        #Do Something For Handle &quot;additional_field&quot;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;But I wanted to add multiple models with default setting, so I had to change only add form.&lt;br /&gt;So I did like this by overriding add_view method.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:python;highlight:[12,13,14]&quot;  title=&quot;First attempt to change only add_view form.&quot;&gt;from django.contrib import admin                      
from django import forms                              
from myapp.models import MyModel                      
                                                      
class MyModelCustomizedModelForm(forms.ModelForm):    
    additional_field = forms.CharField()              
    class Meta:                                       
        model=MyModel                                 
        fields=(&apos;fields&apos;, &apos;that&apos;, &apos;I&apos;, &apos;want&apos;, &apos;to&apos;,) 
                                                      
class MyModelAdmin(admin.ModelAdmin):                 
    def add_view(self, request, form_url=&apos;&apos;, extra_context=None):
        self.form = MyModelCustomizedModelForm
        return super(MyModelAdmin, self).add_view(request, form_url, extra_context)                                                      
    def save_model(self, request, obj, form, change): 
        #Do Something For Handle &quot;additional_field&quot; &lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Then I checked it works.&lt;br /&gt;First I checked &quot;change view&quot;. It didn&apos;t changed to MyModelCustomizedModelForm. -- Correct&lt;br /&gt;Second I checked &quot;add view&quot;. It changed to MyModelCustomizedModelForm. -- Correct&lt;br /&gt;Third, I checked &quot;change view&quot; again. &lt;b&gt;But it changed to MyModelCustomizedModelForm too!!&lt;br /&gt;&lt;/b&gt;Fourth, I logged out and re-login to admin page, then checked &quot;change view&quot;. It still remained as customized form.&lt;br /&gt;Fifth, I logged into admin page with chrome secret mode(new pure request) and checked it, it was like first check.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It seems &quot;form&quot; attribute is static and &quot;MyModelAdmin&quot; instance was remain in memory of server with customized form after override in &quot;add_view&quot;.&lt;br /&gt;So I had to reset &quot;form&quot; attribute in case &quot;change_view&quot;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So final version is like this.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:python;highlight:[15,16,17]&quot;  title=&quot;Succeeded attempt&quot;&gt;from django.contrib import admin                      
from django import forms                              
from myapp.models import MyModel                      
                                                      
class MyModelCustomizedModelForm(forms.ModelForm):    
    additional_field = forms.CharField()              
    class Meta:                                       
        model=MyModel                                 
        fields=(&apos;fields&apos;, &apos;that&apos;, &apos;I&apos;, &apos;want&apos;, &apos;to&apos;,) 
                                                      
class MyModelAdmin(admin.ModelAdmin):                 
    def add_view(self, request, form_url=&apos;&apos;, extra_context=None):
        self.form = MyModelCustomizedModelForm
        return super(MyModelAdmin, self).add_view(request, form_url, extra_context)
    def change_view(self, request, object_id, extra_context=None):
        self.form = forms.ModelForm
        return super(MyModelAdmin, self).change_view(request, object_id, extra_context)                                                    
    def save_model(self, request, obj, form, change): 
        #Do Something For Handle &quot;additional_field&quot; &lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;한국어 요약&lt;/p&gt;&lt;p&gt;나는 Model의 add기능을 이용해서 default setting인 model을 한꺼번에 여러 개 만들고 싶어서 갯수를 입력받는 필드를 포함한 ModelForm을 만들었다..&lt;/p&gt;&lt;p&gt;그 후 ModelAdmin에 적용시키려 했는데 change는 기존의 change를 유지하면서 add view에서만 새로만든 폼을 사용하고 싶었다.&lt;/p&gt;&lt;p&gt;change와 add를 한꺼번에 바꾸는 방법은 form을 오버라이딩하기만 하면 돼서 첫번째 소스코드처럼 쉽게 할 수 있다.&lt;/p&gt;&lt;p&gt;그리고 add페이지에서만 바꾸고 싶었기 때문에 두번째 소스코드처럼 코드를 짰다.&lt;/p&gt;&lt;p&gt;하지만 add페이지에 들어간 후 change 페이지에 들어가면 add페이지에서 오버라이딩 했던 form이 change 페이지에서도 유지가 됐었다.&lt;/p&gt;&lt;p&gt;새로운 request에 대해서는 다시 change 페이지에서 오버라이딩 하지 않은 form을 볼 수 있었기에 나는 &quot;form&quot; attribute가 request에 대해서 메모리에 static하게 남아있다고 생각하여&lt;/p&gt;&lt;p&gt;change_view일 때는 다시 form을 초기화시켜줘야겠다고 생각했다.&lt;/p&gt;&lt;p&gt;따라서 세번째 소스코드와 같은 코드를 완성시키게 되었다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If there is mistake or there exist better method to replace django form in specific view, plz tell me !&lt;/p&gt;&lt;p&gt;포스트 내용이 틀렸거나 특정한 view에서만 form을 바꾸는 다른 좋은 방법이 있다면 말해주세요 !&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 08 Mar 2012 15:31:43 +0900</pubDate>
                        <category>django</category>
                        <category>admin</category>
                        <category>replace form</category>
                        <category>add multiple model</category>
                                </item>
                <item>
            <title>ASIHTTPRequest를 이용해 이미지 업로드하기</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31197</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31197</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31197#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;iPhone의 기본 HTTP library를 사용해서 http request를 &amp;nbsp;올리기란 매우 귀찮다 !&lt;/p&gt;&lt;p&gt;그런데 무려 파일을 업로드해야하다니 ! 이렇게 귀찮을 수가 !&lt;/p&gt;&lt;p&gt;그래서 나온게 &lt;a href=&quot;HTTP://HUSKY_TMP.MARKER/1027http://allseeing-i.com/ASIHTTPRequest/&quot;&gt;ASIHTTPRequest&lt;/a&gt;&amp;nbsp;!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://github.com/pokeb/asi-http-request/tree/master/Classes/ASIFormDataRequest.h&quot; style=&quot;color: rgb(17, 132, 20); text-decoration: none; font-weight: bold; font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span style=&quot;color: rgb(63, 117, 136); &quot;&gt;ASIFormDataRequest&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;request &lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;[&lt;/span&gt;&lt;a href=&quot;http://github.com/pokeb/asi-http-request/tree/master/Classes/ASIFormDataRequest.h&quot; style=&quot;color: rgb(17, 132, 20); text-decoration: none; font-weight: bold; font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;&lt;span style=&quot;color: rgb(63, 117, 136); &quot;&gt;ASIFormDataRequest&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; requestWithURL&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;url&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;]&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;request addPostValue&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;Ben&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; forKey&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;names&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;]&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;request addPostValue&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;George&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; forKey&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;names&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;]&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;request addData&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;imageData withFileName&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;george.jpg&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; andContentType&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;image/jpeg&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt; forKey&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;@&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(191, 29, 26); &quot;&gt;&quot;photos&quot;&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;]&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;;
&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;request startAsynchronous&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); color: rgb(0, 34, 0); &quot;&gt;]&lt;/span&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: monospace; font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none; background-color: rgb(255, 255, 255); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;monospace&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none;&quot;&gt;으아 끝 ! ㅋㅋ&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;monospace&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;monospace&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: normal; white-space: pre; -webkit-text-size-adjust: none;&quot;&gt;설치법이나 사용법이 꽤 자세히 나와있어서 처음써도 사용하기 쉽다 !&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 01 Mar 2012 21:21:44 +0900</pubDate>
                        <category>iPhone</category>
                        <category>HTTP</category>
                        <category>아이폰 개발</category>
                                </item>
                <item>
            <title>SICP Exercise 1.41</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31172</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31172</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31172#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;background-color: rgb(255, 255, 255); &quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;b&gt;Exercise 1.41.&lt;/b&gt; &amp;nbsp;Define a procedure double that takes a procedure of one argument as argument and returns a procedure that applies the original procedure twice. For example, if inc is a procedure that adds 1 to its argument, then (double inc) should be a procedure that adds 2. What value is returned by&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;(((double (double double)) inc) 5)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;Procedure &quot;&gt;(define (double proc)
    (lambda (x) (proc(proc x)))
)&lt;/pre&gt;&lt;font size=&quot;3&quot;&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;Result&quot;&gt;&amp;gt; (((double (double double)) inc) 5)
21&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 01 Mar 2012 00:59:45 +0900</pubDate>
                                </item>
                <item>
            <title>SICP Exercise 1.35</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31164</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31164</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31164#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 255, 255); line-height: normal;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;Exercise 1.35. &amp;nbsp;Show that the golden ratio &amp;nbsp;(section 1.2.2) is a fixed point of the transformation x &amp;nbsp;1 + 1/x, and use this fact to compute &amp;nbsp;by means of the fixed-point procedure.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;By section 1.2.2, . ﻿Let x=∮, x^2=x+1, x = 1+(1/x). To be a fixed point, f(x) = x. So f(x) = 1+(1/x)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 255, 255); font-size: medium; line-height: normal; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;We can use fixed-point to calculate gold ratio with first guess 1.0 -&amp;nbsp;(fixed-point (lambda (x) (+ 1 (/ 1 x)))&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font size=&quot;3&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;1.0)&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;line-height: normal; background-color: rgb(255, 255, 255); font-size: medium; &quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 01 Mar 2012 00:34:42 +0900</pubDate>
                                </item>
                <item>
            <title>SICP Exercise 1.33</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31144</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31144</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31144#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Exercise 1.33.&lt;/b&gt; &amp;nbsp;&lt;/div&gt;&lt;div&gt;You can obtain an even more general version of accumulate (exercise 1.32) by introducing the notion of a filter on the terms to be combined. That is, combine only those terms derived from values in the range that satisfy a specified condition. The resulting filtered-accumulate abstraction takes the same arguments as accumulate, together with an additional predicate of one argument that specifies the filter. Write filtered-accumulate as a procedure. Show how to express the following using filtered-accumulate:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a. the sum of the squares of the prime numbers in the interval a to b (assuming that you have a prime? predicate already written)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;b. the product of all the positive integers less than n that are relatively prime to n (i.e., all positive integers i &amp;lt; n such that GCD(i,n) = 1).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;filtered-accumulate&quot;&gt;(define (filtered-accumulate combiner null-value term a next b predicate)
    (define (range-iter a b result)
      (if (&amp;gt; a b)
          result
          (range-iter (next a) b (cons a result))
      )
    )
    (define (iter filtered-list result)
      (if (equal? filtered-list (list))
          result
          (iter (cdr filtered-list) (combiner (term (car filtered-list)) result))
      )
    )
    (iter (filter predicate (range-iter a b (list))) null-value)
)
&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;a.&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;prime square sum&quot;&gt;(define (prime-square-sum a b)
    (filtered-accumulate +  0 (lambda (x) (* x x)) a (lambda (x) (+ x 1)) b prime?)
  )&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;b.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;product of relatively prime&quot;&gt;(define (product-of-relatively-prime a b)
  (define (gcd x y)
    (if (= y 0)
        x
        (gcd y (remainder x y))))
  (define (relatively-prime? x)
    (= 1 (gcd x b))
    )
  (filtered-accumulate *  1 (lambda (x) x) a (lambda (x) (+ x 1)) b relatively-prime?)
)&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 29 Feb 2012 15:35:35 +0900</pubDate>
                                </item>
                <item>
            <title>SICP Exercise 1.32</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=31136</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=31136</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=31136#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;오늘부터 CS220 PP(Programming Principles) 숙제를 포스팅하겠습니다.&lt;/p&gt;&lt;p&gt;CS220은 Scheme을 가지고 Programming이란 무엇이고 프로그래밍의 여러 방법을 배우는 과목입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Exercise 1.32. &amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;a. Show that sum and product (exercise 1.31) are both special cases of a still more general notion called accumulate that combines a collection of terms, using some general accumulation function:&lt;/p&gt;&lt;p&gt;(accumulate combiner null-value term a next b)&lt;/p&gt;&lt;p&gt;Accumulate takes as arguments the same term and range specifications as sum and product, together with a combiner procedure (of two arguments) that specifies how the current term is to be combined with the accumulation of the preceding terms and a null-value that specifies what base value to use when the terms run out. Write accumulate and show how sum and product can both be defined as simple calls to accumulate.&lt;/p&gt;&lt;p&gt;b. If your accumulate procedure generates a recursive process, write one that generates an iterative process. If it generates an iterative process, write one that generates a recursive process.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;Recursive version&quot;&gt;(define (accumulate combiner null-value term a next b)
  (if (&amp;gt; a b)
      null-value
      (combiner (term a) (accumulate combiner null-value term (next a) next b))
      )
)
(define (sum term a next b)
  (accumulate + 0 term a next b)
)
(define (product term a next b)
  (accumulate * 1 term a next b)
)

(= (sum (lambda (x) x) 1 (lambda (x) (+ x 1)) 5) 15)
(= (product (lambda (x) x) 1 (lambda (x) (+ x 1)) 5) 120)&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre class=&quot;brush:plain&quot;  title=&quot;Iterative version&quot;&gt;
(define (accumulate combiner null-value term a next b)
  (define (iter a b result)
    (if (&amp;gt; a b)
        result
        (iter (next a) b (combiner (term a) result))
    )
  )
  (iter a b null-value)
)

(define (sum term a next b)
  (accumulate + 0 term a next b)
)
(define (product term a next b)
  (accumulate * 1 term a next b)
)

(= (sum (lambda (x) x) 1 (lambda (x) (+ x 1)) 5) 15)
(= (product (lambda (x) x) 1 (lambda (x) (+ x 1)) 5) 120)
&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 29 Feb 2012 14:02:09 +0900</pubDate>
                                </item>
                <item>
            <title>온라인 투표서비스와 표에 대한 무결성 검증</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=30153</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=30153</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=30153#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;나는 처음 해킹을 공부했을 때 부터 온라인 투표에 대해서 관심이 많았다.&lt;br /&gt;온라인 투표가 시행되면 그 때부터 해킹이 매우 중요한 위치에 놓일 것이기 때문이었다.&lt;br /&gt;KAIST에 입학한 뒤로는 해킹에 대한 관심이 뜸해졌는데 그러던 도중 대학원 총학생회로부터 온라인 투표 서비스 개발의뢰가 들어왔고 흔쾌히 받아들였다.&lt;br /&gt;프로그램은 1주일 뒤에 바로 테스트가능해야했고 1주일 뒤 까지는 디자인등을 모두 제외하고 정확히 &quot;기능&quot;만 동작하면 됐다.&lt;br /&gt;요구되는 기능은 다음과 같다.&lt;br /&gt;&lt;br /&gt;1. 선거설계자는 제목과 내용, 선택지(후보), 시작시각과 종료시각을 정하여 선거를 만들 수 있다.&lt;br /&gt;2. 선거설계자는 대학원생 명부 excel 파일을 이용하여 각 선거에 대한 선거인 명부를 만들 수 있다.&lt;br /&gt;3. 투표자는 카이스트 포탈 아이디/패스워드를 이용하여 로그인하면 자신이 참가할 수 있는 투표 리스트를 확인할 수 있다.&lt;br /&gt;4. 투표자는 선택지(후보)를 선택하고 투표를 할 수 있다.&lt;br /&gt;5. 이 때 투표자는 투표를 단 한번만 하도록 허용되며 각 투표자가 어떤 선택지(후보)를 선택했는지 알 수 있는 방법이 존재하면 안된다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;나는 Python django를 이용하여 개발을 시작했고 task가 어렵지 않은만큼 개발은 순조롭게 진행됐다.&lt;br /&gt;그러던 도중 한 가지가 문제가 되었는데 바로 &quot;표에 대한 무결성 검증&quot;이었다.&lt;br /&gt;투표자와 표의 연결고리가 없는 만큼 표에 대한 조작도 매우 쉽다.&lt;br /&gt;소스코드는 공개될 예정이기때문에 소스코드에서 조작하는 것은 불가능하지만 시스템관리자가 원하는대로 표를 조작할 수 있을 수도 있다.&lt;br /&gt;시나리오는 다음과 같다.&lt;br /&gt;&lt;br /&gt;1. 절대적으로 믿을 수 있는 선거설계자가 있다.&lt;br /&gt;2. DBA는 선거설계자와 다른 사람이며 100%신뢰할 수 없다.&lt;br /&gt;&lt;br /&gt;위와 같은 상황에서 투표데이터가 corrupt 되었는지 pure한지를 검증할 수 있는 시스템이 필요했다.&lt;br /&gt;처음 듣자마자 생각난 것은 서버 두 대를 이용한 방법이었다.&lt;br /&gt;&lt;br /&gt;1. 서로 다른 관리자가 관리하는 서버를 두 대를 두고 투표를 하면 두 대의 서버에 한꺼번에 row를 update한다.&lt;br /&gt;2. 투표가 끝나면 두 대 서버의 투표결과를 비교하여 같으면 표의 무결성은 증명된다.&lt;br /&gt;&lt;br /&gt;하지만 다음과 같은 문제점 역시 바로 떠올랐다.&lt;br /&gt;1. 두 관리자가 공모했는지(두 데이터가 한꺼번에 corrupt됐는지)를 증명할 수 있는 방법이 없다.&lt;br /&gt;2. 서버가 두 대중 한 대에만 문제가 생겨도(꺼지거나 하는 등) 선거 전체가 무효가 된다.&lt;br /&gt;&lt;br /&gt;그래서 다시 생각해보았고 바로 비슷한 아이디어가 스쳐지나갔다.&lt;br /&gt;&lt;br /&gt;1. A서버에서 투표자가 투표를 할 때 B서버에 투표정보를 넘겨준다.&lt;br /&gt;2. B서버에서는 A서버가 알지 못하는 암호화방식을 이용하여 투표정보를 암호화해서 A서버에 넘겨준다.&lt;br /&gt;3. A서버에서는 암호화된 정보만을 저장하고 투표가 끝났을 때 B서버를 이용하여 다시 decoding하여 결과를 본다.&lt;br /&gt;&lt;br /&gt;하지만 이것 역시 여러 문제점이 발생한다.&lt;br /&gt;&lt;br /&gt;1. 역시 서버 두 대중 한대에만 문제가 생겨도 선거 전체가 무효가 된다.&lt;br /&gt;2. B서버관리자는 투표정보를 sniff할 수 있다.&lt;br /&gt;&lt;br type=&quot;_moz&quot; /&gt;&lt;/p&gt;&lt;p&gt;이러한 문제들이 발생하고 나는 다시 이런 문제점을 보완할 수 있는 방법을 생각하고를 몇 번 반복했다.&lt;br /&gt;그 때 새로운 요구사항이 들어왔다. &lt;b&gt;&quot;서버 한 대에서 무결성을 보증할 수 있는 방법을 생각해주세요.&quot;&lt;/b&gt;&lt;br /&gt;물론 쉬운 내용은 아니었지만 나에겐 충분히 도전할만한 과제였다. &lt;br /&gt;&lt;br /&gt;그래서 다시 여러 생각을 하게되었다. 가장 먼저 떠오른 것은 permission과 file을 이용한 것이었다.&lt;br /&gt;1. Apache 권한으로만 write 권한이 있는 파일을 만든다.&lt;br /&gt;2. 투표자가 투표를 할 때 그 파일에 투표내용을 랜덤한 line에 append한다.&lt;br /&gt;3. 투표가 끝나면 root가 돌아와 파일과 DB내용을 확인한다.&lt;br /&gt;하지만 이 때 새로운 조건이 들어왔다. &lt;b&gt;&quot;DBA가 DBA 뿐만 아니라 시스템관리자라고 전제하겠습니다. 시스템 root를 가진 상황이라고 가정하죠.&quot;&lt;/b&gt;&lt;br /&gt;그러한 조건에서는 이 방법이 전혀 먹히지 않는다.&lt;br /&gt;&lt;br /&gt;다시 생각해낸 것은 다른 프로그램을 만들어 memory에 올리는 방법이었다.&lt;br /&gt;1. 투표결과를 메모리에 올려놓는 프로그램을 만든다. 단 이 프로그램은 메모리를 조작하기 어렵게 셋팅을 해야한다.&lt;br /&gt;2. 투표자가 투표를 하면 그 결과를 적절한 방법을 사용하여 그 프로그램에게 전달한다.&lt;br /&gt;3. 투표가 끝나면 해당 프로그램은 DB내용과 메모리의 내용을 비교하여 무결성을 체크한다.&lt;br /&gt;하지만 이 역시 또 문제가 발생한다.&lt;br /&gt;1. 컴퓨터가 꺼지면 메모리에서 사라지기때문에 투표가 무효가 된다&lt;br /&gt;2. 시스템관리자는 이 점을 악용하여 투표결과가 원하는 방향으로 흘러가지 않을 때 악의적으로 컴퓨터를 끌 수 있다.&lt;br /&gt;3. root를 가진 이상 어렵게 한다고 해도 어려울 뿐 &quot;불가능&quot; 한 것은 아니다.&lt;br /&gt;&lt;br /&gt;으아 그래서 다시 생각한 방법은 Email을 이용한 방법이다.&lt;br /&gt;1. 투표자가 투표를 하면 표에 대한 정보를 전제에서 정의했던 &quot;절대적으로 믿을 수 있는 선거설계자&quot; 에게 메일로 전송한다.&lt;br /&gt;2. 결과를 로컬에 저장하지 않기때문에 root 권한을 가져도 조작하기가 쉽지 않다.&lt;br /&gt;여기에선 조금 색다른 문제가 발생한다.&lt;br /&gt;1. 투표결과가 넘어갈 때 email에는 필연적으로 보낸시각이 들어가게 되고 그렇다면 언제 투표된 표가 누구를 찍었는지 알 수 있게된다.&lt;br /&gt;2. 그럼 한 사람이 언제 투표했는지에 대한 정보만 알아내면 어떤 선택지를 선택했는지 추적가능하다.&lt;br /&gt;&lt;br /&gt;&lt;br type=&quot;_moz&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; &quot;&gt;&lt;b&gt;몇분 뒤 나는 스스로 만족할만한 해답을 찾았다.&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-size: 12px; &quot;&gt;﻿&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px; &quot;&gt;﻿1. 선거가 시작되기 전 서버를 물리적으로 공개한다.(누구든 감시할 수 있도록)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12px; &quot;&gt;2. 선거를 시작할 때 선거설계자는 암호화에 사용될 패스워드를 입력한다.&lt;br /&gt;3. 투표자가 투표를 하면 해당 표의 unique한 random hash + 설계자가 입력한 패스워드 + 선택지 결과 를 Hashing한다.&lt;br /&gt;4. Hashing 결과를 웹에 공개하여 누구든 원하면 그 결과를 볼 수 있게 한다.&lt;br /&gt;5. 그렇다면 시간이 흘러감에 따라 기존에 존재하던 hash는 없어져서는 안되고 항상 새로운 hash만이 추가되어야한다.&lt;br /&gt;6. 만약 존재하던 hash가 없어지거나 변조된 것을 누구든 확인하면 투표결과에 대한 무결성이 보장되지 못함을 증명할 수 있다.&lt;br /&gt;7. 위 과정과 동시에 ftp서버를 열어 소스코드에 대한 read권한만 줌으로써 소스코드가 변조되지 않았다는 사실도 증명한다.&lt;br /&gt;&lt;br /&gt;약 3시간에 걸쳐 생각해 내린 결론이다 !&lt;br /&gt;위 방식은 hash collision은 고려하지 않는다.&lt;br /&gt;====================================================================================&lt;br /&gt;위 과정에 대해 문제점이 있다면 지적해주길 바랍니다! 보완방법도 같이 주면 감사히 받겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 24 Feb 2012 01:43:25 +0900</pubDate>
                        <category>보안개발</category>
                        <category>투표시스템</category>
                        <category>온라인투표</category>
                        <category>전자투표</category>
                        <category>투표 무결성</category>
                                    <slash:comments>7</slash:comments>
                    </item>
                <item>
            <title>for문에서 dictionary의 key, value 를 한번에 돌리기</title>
            <dc:creator>Acuros</dc:creator>
            <link>http://blog.acuros.pe.kr/index.php?document_srl=28350</link>
            <guid isPermaLink="true">http://blog.acuros.pe.kr/index.php?document_srl=28350</guid>
                        <comments>http://blog.acuros.pe.kr/index.php?document_srl=28350#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;blockquote class=&quot;citation&quot;&gt;&lt;p&gt;dictionary의 key, value를 for문에서 한번에 두 개의 변수로 받아오고 싶은데 방법을 모르겠어요.&lt;br /&gt;for key in dictionary.keys():&lt;br /&gt;	value = dictionary[key]&lt;br /&gt;로 해결을 하고 있는데 더 좋은 방법이 없나요 ?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;최근에 후배들에게 자주 받은 질문이네요.&lt;br /&gt;&lt;br /&gt;iteritems나 zip( http://docs.python.org/library/functions.html#zip )을 활용하면 됩니다!&lt;br /&gt;&lt;br /&gt;dictionary에서 기본적으로 제공하는 iteritems 메서드를 사용하면 쉽게 활용할 수 있습니다.&lt;br /&gt;for k, v in dictionary.iteritems():&lt;br /&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;print &quot;%s : %s&quot;%(k,v)&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; foo = dict(key1=&quot;value1&quot;, key2=&quot;value2&quot;, key3=&quot;value3&quot;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;gt;&amp;gt;&amp;gt; for key, value in foo.iteritems():&lt;br /&gt;... &amp;nbsp; &amp;nbsp; print &quot;%s : %s&quot;%(key, value)&lt;br /&gt;...&amp;nbsp;&lt;/p&gt;&lt;p&gt;key3 : value3&lt;br /&gt;key2 : value2&lt;br /&gt;key1 : value1&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;zip은 iteration을 지원하는 type의 값을 parameter로 받습니다. 리스트, 튜플 등등&lt;br /&gt;그 후 파라미터들 중 가장 길이가 짧은 값을 기준으로 그 길이만큼 각 파라미터들의 같은 위치에 있는 노드들을 튜플로 묶은 리스트를 반환합니다.&lt;br /&gt;zip([1,2,3], [&apos;a&apos;,&apos;b&apos;,&apos;c&apos;,&apos;d&apos;]) =&amp;gt;&amp;nbsp;[(1, &apos;a&apos;), (2, &apos;b&apos;), (3, &apos;c&apos;)]&lt;br /&gt;와 같이 말이죠&lt;br /&gt;&lt;br /&gt;dictionary에는 keys()와 values() 라는 메서드가 있습니다.&lt;br /&gt;각각 해당 사전의 키들과 값들을 리스트로 반환하는 메서드입니다.&lt;br /&gt;따라서 zip(dictionary.keys(), dictionary.values()) 를 해주면&lt;br /&gt;[(key, value), (key, value), (key, value)] 식으로 반환을 해주죠 이를 for문에 넣으면 됩니다 !&lt;br /&gt;&lt;br /&gt;for key, value in zip(dictionary.keys(), dictionary.values()):&lt;br /&gt;print &quot;%s : %s&quot;%(key, value)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;gt;&amp;gt;&amp;gt; foo = dict(key1=&quot;value1&quot;, key2=&quot;value2&quot;, key3=&quot;value3&quot;)&lt;/p&gt;&lt;p&gt;&amp;gt;&amp;gt;&amp;gt; for key, value in zip(foo.keys(), foo.values()):&lt;/p&gt;&lt;p&gt;... &amp;nbsp; &amp;nbsp; print &quot;%s : %s&quot;%(key, value)&lt;/p&gt;&lt;p&gt;...&amp;nbsp;&lt;/p&gt;&lt;p&gt;key3 : value3&lt;/p&gt;&lt;p&gt;key2 : value2&lt;/p&gt;&lt;p&gt;key1 : value1&lt;/p&gt;&lt;p&gt;더 좋은 방법이 있다면 알려주세요 &apos;ㅡ&apos;&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 27 Jan 2012 11:35:14 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
            </channel>
</rss>

