2012년 6월 29일 금요일

[책추천 #12] 소셜미디어 ROI

『소셜미디어 ROI』는 소셜미디어를 활용해 실제 사업에 도움을 얻기 위한 원칙을 정하고 사내조직의 목표를 잡는 기준을 제시하는 책이다. 소셜미디어의 성공적인 임무 완성을 위한 전략, 계획, 실행, 측정, 분석, 최적화의 방법을 소개한다. 소셜미디어 커뮤니케이션의 폭넓은 사업목적과 방법, 측정을 위한 효과적인 계획수립 방법, 소셜미디어의 효과적인 관리를 위한 운영기술과 가이드라인, 소셜미디어 실시간 운영기술과 고객서비스 최적화 방법 등 구체적인 방법을 다루었다. 이 책을 통해 소셜미디어 확산으로 인한 기업의 위기 관리 능력을 확립하고 매력적인 기업매체로서 고객들과 소통할 수 있는 구조와 프로그램이 무엇인지에 대해 알 수 있을 것이다.
[네이버 제공]


** 책 주요 내용 요약 **

ROI는 엄연히 재무적인 부분이며 소셜미디어 상에서의 비재무적, 재무적 성과의 차이를 정확히 구분해야 한다. 비재무적인 성과들은 중개적인 역할을 하는 측정수치들이다.
 
비재무적 성과의 예는,
- 웹사이트 방문자수 증가
- 긍정,부정적인 멘션의 변화
- 신규 페이스북 팬수
- 신규 트위터 팔로워수
- RSS 구독율 증가 수치
- 오프라인 매장 방문자 수 증가
- 유투브 동영상 다운로드 횟수, 좋아요, 공유하기 수의 증가
- 포스팅에 대한 피드백 증가
 
재무적 성과의 예는,
- 신규 매출 120만 달러
- 페이스북 프로모션 캠페인 기간 중 온라인 매출 16% 증가
- 페이스북에서 확보한 신규고객 매출 32만 달러
- 고객 서비스 요청 건수의 일부를 트위터로 이동시킴으로써 16% 비용 절감
- 소셜 미디어 채널을 활용하여 노출 건당 비용을 2.62달러에서 0.76달러로 절감
 
이런 일련의 과정을 정리해 보자면,
투자 -> 행동(공식페이스북개설) -> 반응(대중의 긍정적 피드백) -> 비재무적 영향
(1분기 30,000명의 사람들이 들어옴, 브랜드 멘션 3배 증가, 긍정적 정서 37%증가) ->
재무적 영향(12,000건의 신규 거래 발생 ) 으로 정리될 수 있다.
그러나 트위터에서 신규 팔로워가 1만명 추가된 것이 8,000명의 신규 고객이라는 것을 경험적으로 증명할 수 없고, 팔로워들이 신규 매출 200만 달러를 발생시켰다고 증명할 수는 없다.
그렇다면, 우리가 해야하는 일인 비재무적 영향 요소들을 어떻게 재무적 성과로 연결시킬 수 있을까?
1. 기준선을 설정하라
프로그램, 캠페인 시작일을 기준으로 측정을 시작하는 것이다. 회사가 연간 8%의 성장세를 기록하고 있다면, 하루에 온라인에서 언급되는 회사이름이 고작 3회에 불과하다면, 이것을 기준선으로 측정을 시작한다.
 
2. 활동타임라인이 있어야 한다. 
프로그램의 일거수일투족을 기록해 놓아야 한다. 몇월몇일에 관련 보도자료가 나갔는지, 언제 어느 채널에서 언급이 있었는지 기록을 해둔다면 이러한 요소들을 가지고 매출 증가의 원인을 파악할 수 있다.
 
3. 멘션 볼륨 모니터링
기준선을 시작으로 모니터링 툴을 이용해 회사 이름이 언급된 횟수를 측정하는 것이다. 또한 추가로 긍정, 부정의 정서적 비율을 측정한다. 사람들이 무슨 이야기를 어디서 하고 있나? 주제, 키워드, 경향, 링크 등을 파악하라. 그런데 여기서 주목할 점은, 자동화된 분석은 그다지 믿을 만하지 못하다는 것이다. 이런 엔진들이 말하는 신뢰도는 과장된 경우가 많으며 가장 좋은 방법은 사람이 직접 멘션의 긍,부정 여부를 판단하여 더블체크를 하는 것이다. 모니터링 툴을 고를 때 대부분의 여론 분석기관에서 말하는 정서분석에서 3%오차 범위를 가지고 있는 것은 나쁘지 않다. 이것을 기준으로 몇달간 사용할 툴을 테스트하여 정해야 한다. 테스트 기간 동안 사람이 직접 분석한 오차 범위가 3%정도라면 이제 안심하고 툴을 사용해도 된다.
 
4. 거래 전조 측정
거래를 암시하는 비재무적 측정 기준을 모니터링하라. 블로그 코멘트 증가와 웹사이트 방문자의 증가(블로그에서 웹사이트로의 클릭 전환율), 팬과 팔로워, 공유하기, 좋아요, 추천, 컨텐츠 다운로드 수치등이 여기에 해당된다.
 
5. 거래 데이터 검토
거래 고객, 거래 건수의 증감율 측정으로 본격적인 재무적 데이터를 측정한다,
 
6. 모든 데이터 (1-5단계) 통합하기
모든 데이터를 하나의 타임라인에 정렬시켜 모든 요소들을 시간 순서대로 배열한다.
 
7. 패턴 찾기
모든 요소를 시간순을 배열했다면 인과관계나 연관관계를 찾는 것이 아니라 단순한 패턴을 찾는 작업부터 한다. 소셜미디어 프로그램 시작하기 이전 활동부터 그래프를 그려 소셜미디어 활동이 긍정적인 영향을 끼치고 있는지 파악한다. 소셜 미디어 활동이 매출에 그닥 영향을 미치치 못했다면 이제 그 이유를 알아야 한다. 소셜미디어 활동이 잠재고객들을 오프라인 매장까지 보내는데 성공했지만 매장 내에서 구매로 이어지지 않은 문제점이 있을 수 있다. 또한 측정주기 시작 이후 동시에 증가한 선을 찾으면 이것이 바로 우리가 찾고자 하는 패턴이 된다.
8. 관련성 증명과 반박하기
소셜미디어 활동이 얼마만큼의 영향을 끼쳤는지를 가능한 만큼 증명해 보일 시간이다. 예를 들어, 페이스북 내 캠페인 후 관련 대화 볼륨이 증가하였으며 마이크로사이트 방문수가 증가하고 제품 매출이 증가했다. 그러나 한편으로 이 이론의 반대편에 서서 반박해보는 것이 중요하다. 매출의 증가가 타 매체에서의 언급, 혹은 할인행사 때문일 수도 있다. 제 3자에게 소셜미디어 활동을 감독해 줄 것을 부탁하고 각자의 분석과 데이터를 가지고 이를 취합해보는 것도 객관적이고 좋은 방법이다.
소셜 미디어ROI 측정은 예산과 활동, 활동과 성과, 비재무적 성과와 재무적 성과 간의 관계 분석과 제거 과정을 거쳐 먼저 정립되어야 한다. 이러한 프로세스를 통해 프로그램이 기업에 창출하는 정확한 재무적 가치를 파악하는 것에서부터 프로그램의 어떤 면이 효과가 있고 어떤 면이 효과가 없었는지에 관한 통찰을 얻을 수 있다. 소셜미디어 ROI 계산에 능숙해질 수록 소셜미디어 프로그램을 더욱 탄탄하게 구축할 수 있는 역량을 갖추게 된다.
 
==================================================================================================
올해를 포함해서 작년 한해는 많은 기업들이 소셜미디어에 대한 관심이 가희 폭발적이라고 해도 과언은 아닐 거라는 생각이 듭니다. 하지만 올해 하반기가 끝나기 전에 개인적인 생각으로 각자의 접근법과 활용 또는 성과측정에 관한 기준에 따라 운영의 성패는 분명하게 갈리게 되는 시기이지 않을까 생각도 함께 듭니다. 모두가 좋아 좋아 하니까 하게 된다거나 그냥 페이스북, 트위터 계정하나 만들어 놓고 홍보만 하면 매출증대와 연관된 결과를 가져올 것이라는 막연한 기대감들만은 갖고 시작한 기업들이라면 아마도 그 성패는 안봐도 결과를 예측할 수 있겠죠..
 
어느날 갑자기 툭.. 하고 획기적인 그 무엇이 탄생하기는 어렵습니다. 철저한 기획과 준비, 적절한 비용의 투자와 시간적 기다림, 준비된 인재와 조직의 문화가 유기적으로 어울려져야 한다는 것을 한번더 느끼게 된 책이라고 생각합니다. 단순히 책 제목에서 처럼 소셜미디어 라는 관점으로 준비단계에서 공유/확산 그리고 KPI 까지에 대한 단계별 준비사항과 기준들 평가지표들을 어떻게 꾸려야 하는지 교과서적인 내용을 다루고 있지만 여기서 소셜미디어라는 단어만 제외 한다면 각자의 위치에서 ROI라는 관점으로 조직과 회사를 다시금 바라볼 수 있을꺼라고 생각을 합니다.
 
또한 지금 현재 많은 분들이 불확실한 미래라고 생각하는 소셜웹의 진정한 힘을 이해 하려면 급변하게 변하는 IT기술에 관심을 갖거나 공부하고 준비 할것이 아니라 인간 자체의 본성 즉, 사회적 동물로서의 인간을 들여다보아야 한다고 합니다. 인간은 사회적인 상호 작용을 갈망하고 사회적 집단에 소속되고, 이야기 하고, 경험을 공유하고, 자신이 속한 집단에 가치 있는 무언가에 기여하기를 간절히 바랍니다. 지금의 시대나 몇만년전의 세대나 인간의 본질적 본성은 변하지 않고 인적네트워트라에서 소셜네트워크라는 도구의 변화만 가져왔다는 것을 인지하고 이것을 가능케 하는 그 무엇인가를 찾아야 할 때 라고 생각합니다.
 
이제 여름 휴가 기간들이 다가오고 있습니다. 모든 분들이 나름의 방식대로 재충전의 시간을 가질것이라 생각합니다. 짬을 내어 시원한 음료 한잔 그리고 시원한 바람과 함께 가볍게 읽을 수 있는 책한 권 정도 휴가기간에 즐기시는건 어떨까요?

2012년 6월 15일 금요일

[PowerBuilder] Data Windows to HTML ( save Excel)

String ls_HTML, ls_FileName, ls_Modify, ls_Named, ls_TmpFile
Integer li_FileNumber, li_Return
Long ll_Location
// Don't proceed if there is no data object loaded in the DW
If (dw_1.dataobject = "") Then Return -1
// Generate the HTML
ls_Modify += "DataWindow.HTMLTable.Border=1  "
If Trim(ls_Modify) <> "" Then
 dw_1.Modify(ls_Modify)
End If

ls_HTML = dw_1.Object.DataWindow.Data.HTMLTable
If IsNull(ls_HTML) Or Len(ls_HTML) <= 1 Then
 MessageBox ("Error", "Error generating HTML table.", Exclamation!)
 Return -1
End If
OLEObject EXCEL
EXCEL = CREATE OLEObject
EXCEL.ConnectToNewObject("Excel.Application")
// 저장 위치
li_Return = GetFileSaveName( "Save File", ls_FileName, ls_Named, "xls" , "All Files (*.*),*.*" )
IF li_Return <> 1 THEN
 MessageBox("확인", "저장할 곳을 선택하십시오.")
 Return -1
END IF
ls_TmpFile = ls_FileName + ".htm"
IF FileExists(ls_TmpFile) THEN FileDelete(ls_TmpFile)
IF FileExists(ls_FileName) THEN FileDelete(ls_FileName)
li_FileNumber = FileOpen(ls_TmpFile, LineMode!, Write!, LockReadWrite!, Append!, EncodingUTF8! )
If (li_FileNumber >= 0) Then
 DO WHILE LenA(ls_HTML) > 10240
  ll_Location = PosA(ls_HTML, '<TR>') + 3
  FileWrite(li_FileNumber, LeftA(ls_HTML, ll_Location))
  ls_HTML = MidA(ls_HTML, ll_Location + 1)
 LOOP

 FileWrite(li_FileNumber, ls_HTML)
 FileClose(li_FileNumber)
Else // File open error
 MessageBox ("FileOpen Error", "Could not open file: " + ls_FileName + " (" + String( li_FileNumber ) + ")")
End If
EXCEL.WorkBooks.Open(ls_TmpFile)
EXCEL.WorkBooks(1).SaveAs(ls_FileName)
EXCEL.WorkBooks(1).Saved = True
EXCEL.Application.Quit
EXCEL.DisConnectObject()
Destroy EXCEL
FileDelete(ls_TmpFile)
Messagebox("완료", "파일이 저장되었습니다.")
Return 1

2012년 6월 13일 수요일

[PowerBuilder] DataWindows to Excel

/*저장하는 칼럼의 셀에 맞혀 셀 위치에 (1:일반),(2:텍스트),(3:날짜) 셋팅

long Array1[], Array2[]
Array1[] = {1,1,2,2,1} //ex = {A,B,C,D,E} 
Array2[] = {1,1,2,2,1} //엑셀에 값이 먼저 들어가기전에 형식지정을 먼저 해주어 ' 0 ' 값이 사라지는것을 막습니다.
 OleObject oleExcel , oleQuery
long li_rc
 //하나의 Excel에 저장하려는 datawindow name 과 .txt파일을 먼저 저장할 경로 지정
dw_1.SaveAs('c:\t1.txt', TEXT!, True) 

//이제 Excel 생성 - .txt로 생성한 파일을 Excel로 이동
oleExcel = Create OleObject
li_rc = oleExcel.ConnectToNewObject("excel.application")
IF li_rc <> 0 THEN
 MessageBox("Information!", "File Conversion Failed!")
 MessageBox('오류!', 'Excel을 구동하면서 오류가 발생했습니다.', stopsign!)
 Destroy oleExcel
 RETURN -1
end if
oleExcel.WorkBooks.Add()
oleExcel.ActiveWorkbook.Sheets.Add.Name = 't1'
oleQuery = oleExcel.ActiveWorkbook.Sheets('t1').QueryTables.Add('TEXT;c:\t1.txt'   , oleExcel.ActiveWorkbook.Sheets('t1').Cells(1,1) )
oleQuery.TextFileColumnDataTypes = Array1
oleQuery.refresh()
oleExcel.Application.Visible = True

[PowerBuilder] Function List

1. 배열(Array)처리 함수  
LowerBound : 지정한 배열의 하위 경계
UpperBound : 지정한 배열의 상위 경계
 
2. Bolb관련 함수  
Blob       : 텍스트 데이터를 Blob 데이터로 변환 또는 복사
BlobEdit   : PB가 지원하는 데이터를 Blob변수로 복사
BlobMid    : Blob 데이터 문자열에서 N번째 문자를 반환 
Len        : 문자열의 길이
 
3. 데이터형 검사 및 변환 함수  
Char       : blob,정수,문자열을 문자로 바꿔서 반환
Dec        : 문자열의 내용을 십진수로 바꿔서 반환
Double     : 문자열의 내용을 Double로 바꿔서 반환
Integer    : 문자열의 내용을 정수로 바꿔서 반환
Long       : 문자열의 내용을 long으로 바꿔서 반환
Real       : 문자열의 내용을 실수로 바꿔서 반환
Date       : 데이터베이스로부터 읽은 DateTime값에서 Date부분만 빼온다.
DateTime   : Date나 Time을 DateTime 값으로 변환한다.
IsDate     : 지정한 문자열이 유효한 Date값을 지녔는지 검사한다.   
IsNull     : 넘어온 인자가 NULL인지 검사한다.
IsNumber   : 지정한 문자열이 숫자값을 지녔는지 검사한다.
IsTime     : 지정한 문자열이 유효한 Time값을 지녔는지 검사한다.
String     : 지정한 형식으로 문자열을 얻는다.
Time       : 데이터베이스로부터 읽은 DateTime값에서 Time부분만 빼온다.
 
4. 날짜,요일,시간 처리 함수  
Day        : 일자를 구한다(1에서 31 사이의 정수)
DayName    : 주간의 요일명을 구한다.
DayNumber  : 주간의 요일을 숫자로 표현한다.(예를들면 일요일은1, 목요일은 5)
DaysAfter  : 지정한 날짜에 n일전,후를 구한다.
Hour       : 주어진 시간의 시 값을 구한다.
Minute     : 주어진 시간의 분 값을 구한다.
Month      : 주어진 날짜의 월 값을 구한다.(1에서 12까지)
Now        : 클라이언트의 시스템 시간을 구한다.
RelativeDate:주어진 날짜를 기준으로 n일 후 날짜를 구한다.
RelativeTime:주어진 시간을 기준으로 n초 후 시간을 구한다.
Second     : 주어진 시간의 초 값을 구한다.
Today      : 클라이언트의 현재 날짜를 구한다.
Year       : 주어진 날짜의 년 값을 구한다.(1000에서 3000년까지임)
 
5.DDE클라이언트 함수  
CloseChannel:OpenChannel함수로 열린 DDE서버 어플리케이션의 채널을 닫는다.
ExecRemote : 서버 어플리케이션에게 명령 실행을 요구한다.
GetDataDDE : 연결된 서버 어플리케이션으로부터 새로운 데이터를 받아온다.
GetDataDDEOrigin:연결된 서버 어플리케이션으로부터 원래의 데이터를 받아온다.
GetRemote  : 서버 어플리케이션에게 데이터를 요구한다.
OpenChannel: DDE서버 어플리케이션을 연다.
RespondRemote:서버에게 명령 또는 데이터가 클라이언트에게 받아들여졌는지를 알려준다.
SetRemote  : 서버 어플리케이션에게 지정한 값을 설정하도록 한다.
StartHotLink:서버 어플리케이션과의 연결을 시작한다.
StopHotLink: 서버 어플리케이션과의 연결을 종료한다.
 
6. DDE서버 함수  
GetCommandDDE: 클라이언트 어플리케이션이 보낸 명령을 구한다.
GetCommandDDEOrigin:어떤 클라이언트 어플리케이션이 명령을 보냈는지 구한다.
GetDataDDE : 클라이언트 어플리케이션이 보낸 데이터를 구한다.
GetDataDDEOrigin:어떤 클라이언트 어플리케이션이 데이터를 보냈는지 구한다.
RespondRemote:클라이언트에게 명령 또는 데이터가 서버에게 받아들여졌는지를 알려준다.
SetDataDDE : 클라이언트 어플리케이션에게 데이터를 보낸다.
StartServerDDE:파워빌더를 서버로 동작하게 한다.
StopServerDDE:파워빌더가 서버로 동작하는 것을 중지한다.
 
7. 파일처리 함수  
FileClose  : 파일 닫기
FileDelete : 파일 삭제
FileExists : 파일 존재 유/무
FileLength : 파일 길이
FileOpen   : 파일 열기
FileRead   : 파일 읽기
FileSeek   : 파일 내 위치 이동
FileWrite  : 파일에 쓰기
GetFileOpenName:파일 열기 공통 다이얼로그 열기
GetFileSaveName:파일 저장 공통 다이얼로그 열기
 
8. 라이브러리 함수  
LibraryCreate:라이브러리 생성
LibraryDelete:라이브러리 삭제
LibrarDirectory:pb라이브러리 파일의 모든 오브젝트의 리스트를 구한다.
LibraryExport:라이브러리 파일의 모든 오브젝트를 Export한다.
Library Import:지정한 라이브러리 파일에서 오브젝트를 Import한다.
 
9.MAPI함수  
mailAddress         :메일 메세지에 주소를 주거나 주소 리스트를 보여준다.
mailDELETEMessage   :메일 메시지를 지운다.
mailGetMessages     :메지시 id를 얻어온다.
mailHandle          :내부 메일 시스템 핸들을 얻어온다.
mailLogOff          :메세징 시스템과의 세션을 끊는다.
mailLogOn           :메세징 시스템과의 세션을 시작한다.
mailReadMessage     :메일 메시지를 읽는다.
mailRecipientDetails:지정된 수취인의 주소 정보를 보여준다.
mailResolveRecipient:불분명한 수취인 명을 결정한다.
mailSaveMessage     :사용자 수신함에 새로운 메시지를 생성하거나 기존에 있는 메시지를 대체한다.
mailSend            :메일 메시지를 보낸다.
 
10. 수치 처리 함수  
Abs        : 수치의 절대값을 얻는다.
Ceiling    : 지정한 수보다 크거나 같은 최소 정수를 구한다.
Cos        : 주어진 각도의 코사인 값을 구한다.
Exp        : e를 Number만큼 거듭제곱한 값을 구한다.(e=2.71828182845904)
Fact       : 계승값을 구한다. Number의 계승값은 1*2*3*...* Number이다.
Int        : 소수점 이하를 버리고 가장 가까운 정수로 변환한다.
Log        : 지정 숫자의 자연로그값을 구한다.
LogTen     : 지정한 숫자에 대해 밑이 10인 로그값을 구한다.
Max        : 두 수 중 큰 수를 구한다.
Min        : 두 수 중 작은 수를 구한다.
Mod        : 두 수를 나눈 나머지를 구한다.
Pi         : 3.14159265358979를 구한다.
Rand       : 난수를 구한다.
Randomize  : 난수 발생기를 초기화한다.
Round      : 숫자를 지정한 자릿수로 반올림한다.
Sign       : 숫자의 부호를 결정한다. Number가 양수이면 1을 표시해주고 0이면 0, 
음수이면 -1을 표시한다.
Sin        : 주어진 각도의 사인 값을 구한다.
Sqrt       : 양의 제곱근을 구한다.
Tan        : 주어진 각도의 탄젠트 값을 구한다.
Truncate   : 숫자의 소수점 이하를 버리고 정수로 변환한다.

11. 출력(Print)함수  
Print      : 현재 글꼴로 문자열을 인쇄한다.
PrintBitmap: 지정한 인쇄공간에 비트맵 이미지를 인쇄한다.
PrintCancel: 인쇄를 취소한다.
PrintClose : 현재 페이지를 프린터에 보내고 인쇄를 멈춘다.
PrintDefineFont:인쇄작업시 폰트를 정의한다. 파워빌더는 각각의 인쇄 작업에 대해 8가지 폰트를 제공한다.
PrintLine  : 지정한 위치에 지정한 굵기로 타원을 그린다.
PrintOpen  : 현재 페이지를 프린터에 보내고 새로운 페이지를 셋한다.
PrintOval  : 지정한 위치에 지정한 굵기로 타원을 그린다.
PrintPage  : 지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.
PrintRect  : 지정한 위치에 지정한 굵기로 사각형을 그린다.
PrintRouneRect:지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.
PrintSend  :지정한 문자열을 프린터에게 보낸다.
PrintSetFont:현재 인쇄 작업에 대한 글꼴을 지정한다.
PrintSetSpacing:라인간 너비를 지정한다.
PrintSetup : 프린터 설정 다이얼로그 박스를 부른다.
PrintText  : 지정한 위치에 지정한 문자를 인쇄한다.
PrintWidth : 현재 글꼴에서 지정된 문자열의 너비를 구한다.
PrintX     : 커서의 X좌표를 구한다.
PtintY     : 커서의 Y좌표를 구한다.

12. 문자열 처리 함수  
Asc        : 문자열의 첫번째 문자의 ASCII값을 구한다.
Char       : 주어진 ASCII값에 해당하는 문자를 구한다.
Fill       : 지정한 문자를 반복시켜서 문자열을 만든다.
Left       : 문자열의 시작부터 지정한 수의 문자를 읽어온다.
LeftTrim   : 문자열의 시작에 있는 공백을 없앤다.
Len        : 문자열의 길이를 구한다.
Lower      : 주어진 문자열 내의 대문자를 소문자로 고친다.
Mid        : 주어진 문자열에서 시작 위치와 끝 위치를 지정해 문자열의
             일정 부분만을 구한다.
Pos        : 다른 문자열에서 주어진 문자열의 위치를 찾는다.
Replace    : 문자열의 일부를 다른 문자열로 바꾼다.
Right      : 문자열의 끝에서 주어진 수의 문자를 얻어온다.
RightTrim  : 문자열의 끝에 있는 공백을 없앤다.
Space      : 지정한 길이로 공백 문자열을 얻는다.
Trim       : 문자열의 시작과 끝의 공백을 없앤다.
Upper      : 지정한 문자열 내의 소문자를 대문자로 고친다.

13. 시스템 및 환경 함수(System and Environment)  
Clipboard  : 윈도우의 클립보드의 내용을 얻는다.
GetApplication:현재 어플리케이션의 핸들을 구한다.
CommandParm: 어플리케이션 실행시 지정된 파라미터가 있을 경우 그값을 구한다.
DoScript   : 애플 스크립트(AppleScript)를 실행한다.(매킨토시 버전에만 해당)
GetEnvironment:시스템의 운영체제와 프로세서 등과 같은 정보를 얻는다.
Handle     : Window SDK함수를 부르기 위해 사용한다.
Post       : 지정한 윈도우에 대한 메시지를 메시지 큐에 마지막에 삽입한다.
ProfileInt : 지정한 프로파일에서 숫자값을 얻어온다.
ProgileString:지정한 프로파일에서 문자열을 얻어온다.
Restart    : 모든 스크립트의 실행을 중지하고, 모든 윈도우를 닫으며 데이터베이스에 Commit한후 연결을 끊고 다시 어플리케이션을 실행시킨다.
Run        : 지정한 어플리케이션을 실행시킨다.
Send       : 지정한 윈도우에 메시지를 순차적으로 보낸다.
SetProfileString:지정한 프로파일 값을 저장한다. 
ShowHelp   : 윈도우 3.x에 있는 도움말(Help)파일을 읽어 파워빌더 어플리케이션에서 사용할 수 있다.
SignalError: 어플리케이션 레벨에서의 시스템 에러를 발생한다.
Yield      : 반복문 안에서 다른 오브젝트나 어플리케이션의 메시지가 발생 됐는지를 체크할수 있게 한다.

14. 시간처리 함수  
CPU        : 현재 실행중인 PB어플리케이션 프로그램의 시작 시간부터 현재까지의 CPU시간을 구해준다.
Idle       : 사용자가 아무런 입력이 없이 지정한 시간이 흐르면 Idle이벤트 발생시킨다.
Timer      : 지정한 윈도우에 일정한 간격의 타이머를 지정하여 Timer이벤트를 발생시킨다.


15. 그밖의 함수  
Beep         : 정해진 시간(초단위)동안 경고음을 발생한다.
DBHandle     : DBMS의 핸들을 반환한다.
IsValid      : 지정한 윈도우가 열려있는지 검사한다.
KeyDown      : 사용자가 특정한 키를 눌렀는가 검사한다.
MessageBox   : 메시지 박스를 출력한다.
PixelsToUnits: 픽셀(Pixel)을 PB의 Unit로 바꾼다.
RGB          : 특정 색상을 표현하는 Long형 값을 반환한다.
SetNull      : 변수의 유형에 상관없이 변수를 Null로 지정한다.
SetPointer   : 마우스 포인터를 지정한 모양으로 바꾼다.
TypeOf       : 오브젝트의 형을 결정한다. 예를들면 CheckBox, Picture, RadioButton
등이다.
UnitsToPixels: PB의 Unit를 픽셀(Pixel)로 바꾼다.

1. UpperBound(배열명,{배열차원}) : 가끔 사용 
   (1) 개념 : 배열의 가장높은 경계값을 알아낸다. 
       Option으로 배열의 차원을 지정할 수 있으며 Default 차원은 1차원이다.
   (2) Return : integer(배열의 가장높은 경계값)
   (3) 예제 
       가) 
       integer li_number[7] , li_return 
       li_return = UpperBound(li_number) // li_return 은 7이 된다. 
       나) 
       string ls_name[5,6] integer li_return 
       li_return = UpperBound(ls_name,1) // li_return 은 5가 된다 
       li_return = UpperBound(ls_name,2) // li_return 은 6이 된다
   (4) 메모 : 가변길이 선언 배열에서 ( ls_text[] ) 
   위의 함수를 사용하여 0이 Return되면 배열이 아직 현 메모리에 적재되지 않았음을 의미한다.
   (5) 상대함수 : LowerBound()

2. IsDate(string) : 자주 사용 
   (1) 개념 : 특정한 String이 정확한 Date인지를 확인한다.
   (2) Return : Boolean ( Date가 맞으면 True 아니면 False이다. )
   (3) 예제 boolean lb_check 
       lb_check = IsDate("1996/05/22") // lb_check 는 True이다 
       lb_check = IsDate("1996/00/22") // lb_check 는 False 이다
   (4) 메모 : 특정한 String등을 Date로 변환시키기 직전에 많이 사용한다.
   (5) 유사함수 : Isnull() , Isnumber() , Istime() , Isvalid()

3. Date(datetime) , : 자주사용 Date(string) , Date(year,month,day) 
   (1) 개념 : datetime , string , 년월일의 integer값을 Date 변수타입으로 변환한다
   (2) Return : Date ( Valid 한 Date가 아닐때는 1900-01-01을 Return한다 )
   (3) 예제 datetime ldt_this date ld_new 
       ld_new = Date(ldt_this) 
       IF ld_new = Date("1900-01-01") THEN 
          Messagebox("ERROR",'정확한 일자가 아닙니다 !!') 
          return 
       END IF 
       ld_new = Date("1996/08/15") ld_new = Date(1999,11,23)
   (4) 유사함수 : DateTime()

4. Control명.ClassName() : 가끔사용 ClassName(변수명) 
   (1) 개념 : 특정한 Object의 Class명을 String으로 알아낸다.
   (2) Return : String ( Error 발생시에는 empty string "" 이 반환된다)
   (3) 예제 
       가)
       string ls_name 
       ls_name = Parent.ClassName() 
       IF ls_name = "w_insa001u" THEN 
          sle_1.text = ls_name 
       END IF
       // 어떤 Object의 Dragdrop Event 에서 
       string ls_name dragobject ldr_what 
       ldr_what = DraggedObject() ls_name = ldr_what.ClassName() 
       IF ls_name = 'em_delete' THEN 
          ldr_what.Drag(end!) Messagebox("Drag Object",'Drag된 Object 는 '& + ls_name + '입니다') 
       END IF
       나) 
       long ll_qty string ls_class 
       ls_class = ClassName(ll_qty) // ls_class 는 'long' 을 받아온다 
       ls_class = ClassName(this) // ls_class 는 현 Object 의 Class 명칭을 받아온다
5. Object명.PostEvent(event명) : 자주사용 
   (1) 개념 : Script가 쓰여진 현 Event가 끝난뒤 특정 Object의 Event를 수행하게 한다. 
       위의 function은 script가 쓰여진 위치에 관계없음으로 그 이후에 어떤 scrip가 있다면 
       그것을 모두 수행한후에 실행된다.
   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false)
   (3) 예제 
       cb_close.PostEvent(clicked!) // object에 기본적으로 있는 event일때 
       cb_close.PostEvent("ue_keydown") // User가 정의한 event일때
 
6. Object명.TriggerEvent(event명) : 매우 자주사용 
   (1) 개념 : 현 Event에서 어떤 특정Object의 특정Event를 즉각적 수행하고 돌아온다. 
       Script가 쓰여진 위치가 중요하다
   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false)
   (3) 예제 
       cb_check.TriggerEvent(clicked!) // object에 기본적으로 있는 event일때 
       cb_check.TriggerEvent("ue_check") // User가 정의한 event일때
   (4) 메모 : 어떤 Event의 Script를 수행한다는 면에서는 Postevent와 Triggerevent는 동일하며 
       두 이벤트 중 어떤것을 써야할지의 선택기준은 현재의 Event가 수행되고 난뒤 
       어떤 Event를 이어서 수행시키느냐 (Postevent) , 즉각적으로 어떤 Event를
       수행하느냐 (Triggerevent) 의 차이이다.

2012년 6월 12일 화요일

[PowerBuilder] OLE Excel Format Type

oleExcel.ActiveWorkbook.saveas("엑셀저장명.xls", 포맷형식)
포맷형식



이름설명
xlAddIn18Microsoft Office Excel 추가 기능
xlAddIn818Excel 2007 추가 기능
xlCSV6CSV
xlCSVMac22Macintosh CSV
xlCSVMSDOS24MSDOS CSV
xlCSVWindows23Windows CSV
xlCurrentPlatformText-4158현재 플랫폼 텍스트
xlDBF27DBF2
xlDBF38DBF3
xlDBF411DBF4
xlDIF9DIF
xlExcel1250Excel 12
xlExcel216Excel 2
xlExcel2FarEast27Excel2 FarEast
xlExcel329Excel3
xlExcel433Excel4
xlExcel4Workbook35Excel4 통합 문서
xlExcel539Excel5
xlExcel739Excel7
xlExcel856Excel8
xlExcel979543Excel9795
xlHtml44HTML 형식
xlIntlAddIn26국제 형식 추가 기능
xlIntlMacro25국제 형식 매크로
xlOpenXMLAddIn55Open XML 추가 기능
xlOpenXMLTemplate54Open XML 서식 파일
xlOpenXMLTemplateMacroEnabled53Open XML 매크로 사용 서식 파일
xlOpenXMLWorkbook51Open XML 통합 문서
xlOpenXMLWorkbookMacroEnabled52Open XML 매크로 사용 통합 문서
xlSYLK2SYLK
xlTemplate17서식 파일
xlTemplate817서식 파일 8
xlTextMac19Macintosh 텍스트
xlTextMSDOS21MSDOS 텍스트
xlTextPrinter36프린터 텍스트
xlTextWindows20Windows 텍스트
xlUnicodeText42유니코드 텍스트
xlWebArchive45웹 보관
xlWJ2WD114WJ2WD1
xlWJ340WJ3
xlWJ3FJ341WJ3FJ3
xlWK15WK1
xlWK1ALL31WK1ALL
xlWK1FMT30WK1FMT
xlWK315WK3
xlWK3FM332WK3FM3
xlWK438WK4
xlWKS4워크시트
xlWorkbookDefault51통합 문서 기본
xlWorkbookNormal-4143통합 문서 일반
xlWorks2FarEast28Works2 FarEast
xlWQ134WQ1
xlXMLSpreadsheet46XML 스프레드시트

2012년 6월 8일 금요일

[책추천 #11] 3차 산업혁명 - 제러미 리프킨

 
드라마가 시청률이 저조하면 개편시기에 가장 먼저 없어지게 마련인데..
그래도 덧글은 남기지 않지만 관심있게 보신다는 어느 한분을 위해서라도 좀 나겨야 겠다 싶어 11번째 추천 책을 올립니다. 현재 이책은 저도 아직 끝까지 읽지 못한 책입니다만 추천드립니다. 기존 제러미 리프킨의 책들을 읽으였던 분들이라면 총체적 정리가 되어 있는 책으로 이해 하시면 됩니다.

저 개인의 사회학적/정신적 멘토로 생각하는 사람이기도 합니다. 시간이 허락하신다면 이책을 읽기 전에 "소유의 종말", "노동의 종말" 이란 책을 우선 추천을 드립니다.

이 책에서 주로 다루는 내용은 과거 화석연료가 풍부했던 산업화 시대, 대량생산의 시대가 이제는 에너지 고갈로 대체 에너지 생산쪽으로 변해가면서 나타나는 정치, 권력, 사회, 문화 등 사회 전반적인 변화에 대해서 다루고 있습니다.

기존의 산업회 시대는 대량의 생산으로 대량의 소비를 만들어 내며 성장해왔다면 앞으로의 사회 및 시장은 대량에서 소량으로 대량의 소비(소비자 의사결정의 기준으로 평균)에서 소량의 소비 ( 개인화 된 소비 )로 변해 갈 것이라는 것입니다.산업화 시대에서는 각나라 또는 기업이 많이 팔고 많이 돈을 벌면 그만이었지만 앞으로는 국가간 또는 기업간의 협력이 중요한 트랜드로 자리잡아 가고 있고 조직 운영에 있어서도 협력(협업)이 중요한 가치로 대두되고 있습니다.

이 책을 통해 새로운 3차 산업혁명시대에 국가, 시장, 시민 사회가 어떻게 준비하고 대처해야 하는지 외식산업에서의 녹색성장은 어떤 의미가 있는것인지 생각하고 어떤 정책을 준비해야 하는지 생각해 보는것도 좋을것 같습니다. 또한 개인이 앞으로의 미래의 시대에 준비해야 할 역량과 지식은 무엇인지 함께 고민해 보시길 바랍니다.


* 외부 주요 서평 및 본문 내용
** 추천 서평 중

석유와 다른 화석 연료를 동력으로 한 산업혁명은 위험천만한 대단원을 향해 급격히 추락하고 있다.
가스와 식량 가격은 오르고, 실업률은 여전히 높고, 부동산 경기는 최악이고, 개인과 정부의 부채는 급상승하고, 그 회복은 한없이 더디다.

세계 경제가 역사상 두번째 위기 국면에 부딪히면서, 인류는 지속 가능한 경제 계획을간절히 원하게 되었다. 세계적인 석학 레러미 리프킨은 이 책에서 인터넷 기술과 재생에너지가 합쳐져 강력한 "3차 산업혁명"이 발생하는 과정을 설명한다.

그는 수억명의 사람들이 집과 사무실, 공장에서 스스로 녹색에너지를 생산하고, "에너지 인터넷"안에서 서로 정보를 공유하는(마치우리가 지금 정보를 온라인으로 창조하고 공유하는 거처럼) 청사진을 펴쳐 보인다.

그는 3차 산업혁명을 통해 수천개의 비즈니스와 수백만개의 일자리가 창출되고, 수평적관계가 정립되고, 경제 사회 문화 교육 전반에 변화의 바람이 불어올 것이라고 말한다. 지금 준비하지 않으면 안되는 이유이다.


본문 59페이지
3차 산업혁명의 다섯가지 요소는 다음과 같다.

1) 재생 가능 에너지로 전환한다. 
2) 모든 대륙의 건물을 현장에서 재생 가능 에너지를 생산할 수 있는 미니 발전소로 변형한다. 
3) 모든 건물과 인프라 전체에 수소 저장 기술 및 여타의 저장 기술을 보급하여 불규칙적으로 생성되는 에너지를 보존한다. 
4) 인터넷 기술을 활용하여 모든 대륙의 동력 그리드를 인터넷과 동일한 원리로 작동하는 에너지 공유 인터그리드로 전환한다. 
(수백만개의 빌딩이 소량의 에너지를 새성하여 잉여 에너지를 그리드로 되팔아 대륙내 이웃들이 사용할 수도 있다) 
5) 교통수단을 전원 연결 및 연료전지 차량으로 교체하고 대륙별 양방향 스마트 동력 그리드상에서 전기를 사고 팔 수 있게 한다.

아직 저의 지적수준이 하수인 관계로 1번 ~ 5번 까지의 현실적 당면과제를 이해하기엔 좀더 많은 공부와 사회 경제적 전만의 깊은 이해가 필요 합니다만 국가의 굵직한 정책들을 보더라도 그린에너지 정책과 재생에너지 정책의 큰틀에서 아마도 변화하는 모습이 보이긴 합니다. 썬앳푸드의 비전에도 "Green" 있는 것 또한 마찬가지가 아닌가 하는 생각이 듭니다.

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...