1. What was ITC's motivation for creating the eChoupal? What problems does it overcome?

 

문제점

당시 인도는 농업에 국가 경제를 의존하고 있었으나, 수확에서 유통과정까지 농작물의 60~70%을 잃었고 수익률이 악화되었다.

가격정보 부족, 날씨 정보 부족, 분열된 농장들, 몬순에 대한 지나친 의존, 체계적인 투입 부족 및 농작 사례 부족으로 인해 농업에 충분히 투자할 수 없는 상황이었다.

특히, MandiCA들이 공급망의 장애물이 되어 이익마진을 감소시키고 있었고, 이는 농부들의 시장의 신뢰도를 떨어뜨렸다. (마을 A -> Mandi B -> 공장 C)

 

극복된 내용

ITCeChoupal을 통해 농부들에게 시장의 원리에 입각하여 가격 정보를 공개하고 선택권을 주었다.

농업에 필수적인 Weather information, Best Practice, Crop information, Market information, Q&A, News 정보 등을 제공함으로써 농업의 Risk를 줄였고, 농업에 대한 투자 신뢰성을 확보하였다.

궁극적으로, 농부들이 투명한 시장을 신뢰할 수 있게 되었다.

 

2. What were the old and new physical flows and information flows in the supply chain? In other words, how does the old and new supply chain work?

 

이전에는 물리적 자원과 정보의 흐름이 동일했기 때문에, Agent의 목적은 각자의 사적 이익을 충족시키는 데에 집중되었다. 하지만, 물리적 자원 매입자와 정보 제공자가 분리됨으로써 가격 정보가 소비자를 위한 것으로 그 속성이 변화 되었다.

 

이는 최근 도입된 RFID를 활용한 제품 확장(Product Expansion)시스템에도 동일하게 적용된다. 제품에 대한 피드백이나 수리/재활용을 위한 정보 수집을 물리적인 측면에 한정되어 파악하려 했다. 하지만 해당 정보를 별도로 분리함으로써 보다 정확한 정보를 감지(Sensing)할 수 있었고 이는 실질적인 제품 확장에 사용할 수 있었다.

 

 

3. What made the eChoupal implementation successful? In other words, what barriers did eChoupal face and what guiding principals allowed it to overcome these barriers?

 

웹 서비스 접근성이 매우 낮은 취약 교육 계층들에게 이 서비스를 전파시켜야만 했다. 이를 위해, 기존의 Choupal(장소), Samyojak(리더), Sanchalak(유통) 을 활용하여 극복하고자 했다. 그 구체적인 방안으로 각 단계의 주요 인물들에게 일정 %의 수수료를 인센티브로 제공했다. 이 과정에서 부도덕한 Sanchalak들은 eChoupal신뢰성을 위해 시스템을 사용할 수 없도록 조치했다.

이 모든 과정은 Roll Out -> Fix It -> Scale Up의 과정을 거쳐 점진적으로 전 영역에 적용하였다.

전기가 부족한 상황에서 태양열 발전 키트를 사용하였다.

 

4. How was value created in this model? Can everyone in this supply chain win?

 

아래의 표를 보면, 존 독점적 지위를 누리던 Mandi를 제외한 모든 이해 관계자가 이익을 얻었다.

이해 관계자

이익

Samyojak

창고 저장 허브 수수료 수입

Sanchalak

콩 판매 수수료 0.5%

투입 물품들 수수료 2~3%

Farmer

농작물 운송비 보전

표준화된 등급에 따른 추가 수익.

Mandi의 독점 붕괴로 인한 판매 수익 증가.

기후정보, 향상된 농업 방식 학습으로 생산성과 안정성 확보.

ITC

eChoupal을 통한 중개 수수료.


5. If you could make one recommendation to ITC's management at the time of this case, what recommendation would you make? Why?

 

이 모델이 지속가능한 방향으로 유지 되려면 다량의 현금과 관리 조직이 필요하다. 이를 위해 구체적인 통계자료를 기반으로 정부의 지원을 얻어야 한다.

그 동안 정부는 다양한 방식으로 Mandi의 독과점을 사실상 묵과하고 지나쳤다. ITC는 이미 정부를 설득시켜 법률을 바꿨던 전례를 가지고 있다. 국가 경제의 발전 정도, 중개자의 사기행위 발생빈도 저하에 따른 경제적 이익 등을 근거로 eChoupal의 지속 가능성을 위해 지원을 요청하는 것도 한 방안이 될 수 있을 것이다. eChoupal 역시 영리 기업이고 이윤동기로부터 자유롭지 못할 것이기 때문이다.

 

 

6. Could this model work elsewhere in the world? If so, where? Industry ideas?

 

이 모델은 투명성이 필요한 다양한 분야에 일반화 되어 적용될 수 있을 것이다. 수산업, 임업 등 취약 교육 계층들이 주로 진입하여 생산물을 만들어 내는 경제 분야가 대표적이다. 특히나 독점이 이루어지거나 정부가 개입되어 정보가 폐쇄되어 흐르지 못하는 상황에서 효과적이다.

예로 한국의 NGO, NPO 기부금 영역을 그 예로 들 수 있다. 한국의 기부금 정보는 누가 어떤 금액을 어떤 목적을 위해 기부했는지는 추적 가능하지만 그 금액이 어디에 어떻게 쓰였는지 정확한 회계정보를 확인할 수 없는 경우가 대부분이다. (2014, Foundation Center) 모든 기관을 아우를 수 있는 정보 공개 플랫폼이 마련된다면, 한국에서 비영리기구의 비리사건들이 더 이상 발생하지 않으리라 예상된다.

 

7. What does the eChoupal case tell us about the IT’s power to change economic and structural boundaries and conditions?

 

전통적무의식적 믿음에 대한 합리적 경고

IT 기술이 도입되기 이전, 정부와 농부들의 가장 큰 문제점은 Mandi를 통한 공매 방식이 가장 적정한 가격을 보장한다는 데에 대한 믿음이다. 이는 전통에 대한 믿음이며, 폐쇄된 상태에서의 선택지 제한에 따른 결과이다.

IT는 그 동안 볼 수 없는 영역을 볼 수 있는 기회를 제공했고, 투명성과 신뢰성에 기반한 합리적인 근거를 토대로 국가의 법률까지 바꿀 수 있는 힘을 가지고 있음을 eChoupal case를 통해 제시했다.

 

Reference

[1] Cao, Hui, Folan, Paul, Mascolo, J, & Browne, Jim. (2009). RFID in product lifecycle management: a case in the automotive industry. International Journal of Computer Integrated Manufacturing, 22(7), 616-637.

[2] M., David. (2014.01). The ITC eChoupal Initiative. Harvard Business Review Case Study.

[3] Maeng, Yunho. (2014). Korea Country Report (NPO). Foundation Center.

 

 

<절대적합지수> 

o GFI(goodness-of-fit-index) : GFI는 일반적으로 0~1.0사이의 값을 가지며, 예측된 모델에 의해 설명되는 관측모델의 상대적인 분산과 공분산의 양을 측정하는 척도로 정의한다. 따라서 GFI는 회귀분석에서 R-square와 비슷하게 해석될 수 있다.

o RMR(root mean square residual) : 잔차평균을 자승하고 이를 합한 후 이중근을 취한 값이며, 표본자료에 의해 모델이 설명할 수 없는 분산/공분산의 크기를 의미하고 값이 작을수록 좋다.

o RMSEA(root mean square error of approximation) : 표본크기가 상당히 큰 제안모델을 기각시키는 chi-squeare 통계량의 한계를 극복하기 위해 개발된 적합지수이다. 이 값이 .05~.08범위를 보일 때 수용할 수 있는 것으로 간주된다.


<증분적합지수>

o NFI(normed fit index) : 기초모델에 비해 제안모델이 어느 정도 향상되었는가를 나타내는 것이다. 예를 들어, NFI가 .09라는 의미는 기초모델에 비해 제안모델이 90% 향상되었음을 의미한다. 일반적으로 .90이상이면 수용할만 하다고 판단한다.

o CFI(comparative fit index) : 내포모델에서 NFI의 결함을 극복하기 위해 모집단의 모수 및 분포를 표시하는 관점에서 개발되었다. CFI는 0~1 사이의 값을 가지며, 일반적으로 .90이상이면 좋은 적합도를 갖는 것으로 본다. 

o TLI(Turker-Lewis index) : 원래 요인분석을 위해 개발되었다가 구조방정식 모델을 평가하는데까지 확장되었다. TLI의 경우에 일반적인 권장 수요기준은 .90이상이면 좋은 적합도를 갖는다고 볼 수 있다. 


<간명적합지수>

o AGIF(adjusted goodness-of-fit-index) : GFI를 확장시킨 것이다. 만약 추정모수의 수가 많아진다면 GFI값을 하향조정할 필요가 있는데, AGFI는 GFI를 모델 내의 자유도를 이용하여 조정한 값이다.


※ 이 외에도 다양한 절대적합지수, 증분적합지수, 간명적합지수가 있다. 

유형

적합지수

최적모델

절대적합지수

Chi-square

>0.05

GFI

0.09이상, 1.0에 가까울수록

RMR

0.05이하, 0에 가까울수록

RMSEA

0.05이하, 0에 가까울수록

증분적합지수

NFI

0.09이상, 1.0에 가까울수록

TLI

0.09이상, 1.0에 가까울수록

CFI

0.09이상, 1.0에 가까울수록

간명적합지수

AGFI

0.09이상, 1.0에 가까울수록

AIC

작은 값일수록(다른 모델과 비교)


Broken pip 대처법


문제 Problems

Ubuntu에서 작업을 하다보면, pip 실행시 아래와 같이 에러 메세지가 나오는 경우가 있다.

Errors were encountered while processing:  python3.5  python3  dh-python 에러나
dpkg: error processing package dh-python (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
python3.5
python3
dh-python

Fatal Python error: Py_Initialize: Unable to get the locale encoding 에러
Could not find platform independent libraries <prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x00007f18d2e52700 (most recent call first):
Aborted
dpkg: error processing package python3.5 (--configure):
subprocess installed post-installation script returned error exit status 134
dpkg: dependency problems prevent configuration of python3:
python3 depends on python3.5 (>= 3.5.1-2~); however:
  Package python3.5 is not configured yet.

해결책 Solution

이 경우, pip를 재설치하고 환경변수를 잡으면 대부분 해결된다. 하지만 그래도 안될 경우에 아래의 명령어로 ubuntu 16.04 버전의 기본 python과 이에 따르는 dependent libraries를 다시 설치해주면 해결된다. 

$ sudo -i

$ for pkg in $(dpkg --get-selections | egrep -v 'deinstall' | egrep python | awk '{print $1}'); do  apt-get -y --force-yes install --reinstall $pkg ; done


JSON이란 무엇일까?

 

JSON은 JavaScript Object Notation으로 데이터 교환포맷의 일종이다.

XML에 비해 경량화된 데이터 교환포맷으로 기존 XML이 상당히 무거운데 그 점을 보완할 수 있는 것이 JSON이다.

Ajax로 서버와 통신하며 데이터를 주고 받을 때 데이터 교환을 쉽게 하기 위해 JSON을 사용한다.

 

주고 받을 수 있는 자료형은 숫자, 문자열, boolean, 배열, 객체이며

기본 데이터 배열은 KEY와 VALUE로 구성되어 있으며 중괄호로 감싼다.

KEY값은 문자열이기 때문에 반드시 "KEYNAME" 이렇게 쌍따옴표를 붙여줘야 하고

VALUE에는 기본 자료형이나 배열, 객체를 넣으면 된다.

 

JSON의 기본표현 형태



{

    "age": 29,

    "name": "HIKI",

    "family": {"father": "홍길동", "mother": "심청이"}

}


1. AJAX(Asynchronous Javascript and XML)란 무엇인가?

 

Ajax의 예를들면,

네이버나 다음같은 포털사이트에 가보면,

메인페이지에서 뉴스 등 밑에 < , > 요런 버튼을 눌렀을 때 페이지가 Reloading 되지 않고 뜨는걸 볼 수있다.

 

보통 웹의 흐름에서는 새로운 URL로 호출 되면서 페이지가 새로 뿌려지지만,

AJAX를 사용하면 일부만을 로드해올 수 있는 것이다.

이름처럼 비동기 통신을 통해서.

 

2. 어떤 원리이고 흐름인가?

 

보통 웹사이트 들어갈 때 어떻게 들어가는가?

브라우저 위에 주소창에 URL을 쓰고 들어간다. 그러면 브라우저가 그 URL(서버)로 연결시켜준다.

서버에서 받아온 데이터들을 브라우저가 받아서 파싱해서 뿌려준다.

 

이게 보통 웹의 흐름이라면,

 

AJAX는 AJAX 자체가 브라우저라고 생각하면 된다.

URL을 받고, AJAX 내부에서 XMLHttpRequest 통신을 해서 URL(서버)로 연결시켜준다.

서버에서 받아온 데이터들을 AJAX가 받는다.  (어떻게 뿌릴지는 여기서 직접 알아서 한다 ㅋㅋ)

 

3. 예제

 

jQuery 같은 프레임워크를 안쓰고 AJAX 통신 하는 예제는

http://mainia.tistory.com/314  <- 이 블로그 참조

 

jQuery를 이용하면 간단 명료하게 작성 가능하다.

 


<script  src="http://code.jquery.com/jquery-latest.min.js"></script>;;

<script>

$(document).ready(function() {

     jQuery.ajax({

           type:"GET",

           url:"/test",

           dataType:"JSON", // 옵션이므로 JSON으로 받을게 아니면 안써도 됨

           success : function(data) {

                 // 통신이 성공적으로 이루어졌을 때 이 함수를 타게 된다.

                 // TODO

           },

           complete : function(data) {

                 // 통신이 실패했어도 완료가 되었을 때 이 함수를 타게 된다.

                 // TODO

           },

           error : function(xhr, status, error) {

                 alert("에러발생");

           }

     });

});

</script>


 


* <script  src="http://code.jquery.com/jquery-latest.min.js"></script>;;

이렇게 쓰면 jQuery의 항상 최신 버전을 쓸 수 있다.

 

 

보통 complete을 쓸 지, success를 쓸 지는 상황에 따라 다르다.

둘 중 하나만 써야함. 그냥 설명하기 위해 2개 쓴 것임.

(반드시 둘 중 하나만 써야하는건 아니고, 둘다 쓰면 두 번 호출되기 때문에)

 

 

 

 

 

4. 값 받아오기

 

success를 통해 받아온 값을 alert 으로 띄운다거나,

HTML 코드에 추가해서 나타내거나 여러가지 방법으로 보여지도록 할 수 있다.

 

JSON으로 받는 법을 정리하겠다

 

 

JSON 객체는 요렇게 생긴 객체임.

 


{"name": "lioncat", "age": 14, "nickname": "qwerty"}

 

 

서버 단에서는,

객체에 있는 값을 JSON 형태로 만들어주는 라이브러리들이 있으니

서버는 그 것을 사용해서 JSON으로 리턴 하면된다.

 

클라이언트에서도 JSON으로 받아야 하는데,

3번 예제처럼 dataType:"JSON" 부분을 써주면 JSON으로 받아진다.

 

 

 

success에서 받아온 객체인 data를 alert으로 띄워보면

[Object object] 라고 나올 것이다.

 

저것을 어떻게 보느냐???

-> each 함수를 사용해야 된다.    (자세한 each 사용법은 검색 ㄱㄱ)

 


// success나 complete 안에서 사용

$.each(data, function() {

     alert(this["name"]);

     alert(this.age);

});


 

또는



$.each(data, function(index, entry) {

     alert(entry["name"]);

     alert(entry.age);

});



 

* 참고로 jQuery를 사용하지 않은 순수 AJAX를 통해 데이터를 받아왔을 때는 eval 함수를 써야한다.

jQuery의 AJAX에서는 자체적으로 JSON Object로 변환 시켜준 것이기 때문에 each로 쓸 수 있지만,

순수 AJAX에서는 JSON 객체로 변환되지 않았기 때문이다.

 

 



+ Recent posts