2009년 12월 31일 목요일

데이터베이스 축소

DBCC SHRINKDATABASE ( mydb , 10 )

=> 전체 크기 중에서 10% 만큼의 빈 공간만 확보하고 나머지를 줄이라는 의미

DBCC SHRINKFILE ( mydb , 5 )

=> 파일을  5MB 줄임

2009년 12월 30일 수요일

Busyness 때문에, Business를 못하는 관리자 - 행경

관리자의 90%가 조직이 선택한 주요 목표에 집중하지 못한다.
그들은 비 생산적인 Busyness(바쁨) 때문에
중요한 Business(기업) 활동을 못하고 있다.

- 하버드 비즈니스 리뷰 
----------------------------------------------------------------------
 
24시간내에 해야 할 일이 너무나 많아지고 있습니다.
회사가 커질수록, 지위가 올라갈수록, 지식 정보 사회가 진전될수록
그런 추세는 점점 가속될 것입니다.
제시 가능한 해결책은 선택과 집중, 임파워먼트,
그리고 자신과 구성원의 역량 배양과 속도경영시스템 구축이 아닌가 합니다.
 

2009년 12월 27일 일요일

vbs 웹페이지 호출

Sub requestWebPage(url)
 Set wshShell = WScript.CreateObject("WScript.Shell")
 wshShell.Run url
 Set wshShell = Nothing
End Sub

requestWebPage "http://localhost/scheduler.asp"

2009년 12월 14일 월요일

2009년 11월 25일 수요일

메일오픈율 - 포스트맨

1. 실제로 받는 사람이 알고 싶은 내용
 [**] 대졸신입사원 채용 서류전형 결과안내!! (81%)
 [****] 서류전형 결과 안내(79%)
 [*****] 서류전형결과 공지!(75%)
 제12회 대학생 국토대장정 모집에 참여해주셔서 진심으로 감사드립니다!(61%)
 [면접요청] 구직사이트에서 보고 연락 드립니다 .(60%)


2. 믿을 수 있는 업체에서 무료로 제공하는 경우
 [***피자]** 출시기념 할인쿠폰 및  무료쿠폰 증정!!(48%)
 2009 한강 마라톤 - 소니 워크맨과 함 꼐 하는 즐거운 마라톤(44%)
 제이.**** 한정수량! 50%특가! 첫구매 혜택(38%)

 

3. 받는 분이 필요할 때 쯤 보내는 메일
 [화이트데이] 떴다! 로맨틱가이의 특별 한 선물~~(52%)

 

4. 받는 분의 호기심을 자극하는 메일
 [****] 1억원 이상 수익을 낼 수 있는 가장 좋은 방법은?(50%)
 *** 선배님, 안녕하셨는지요?(47%)
 ***님 미래를 보여드리겠습니다.(44%)

2009년 11월 13일 금요일

ASP 트랜잭션

<object runat="server" progid="ADODB.Connection" id="conn"></object>

 

<%

Response.Expires = -1
Response.AddHeader "Pragma", "no_cache"
Response.AddHeader "cache-control", "no_cache"

 

Const connStr = "Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=ServerIP;User ID=DBID;PWD=DBPW"

conn.Open("connStr")


conn.BeginTrans

 

sql = "INSERT INTO tablename(a, b) values ('" & request("a") & "','" & request("b") & "')"
conn.execute sql

If conn.errors.count > 0 then

  conn.RollbackTrans    

   Response.write "<script language='javascript'>"&chr(13)
   Response.write " alert('데이터를 저장하는중 에러가 발생하였습니다.');"&chr(13)
   Response.write " history.back();"&chr(13)
   Response.write "</script>"&chr(13)
   conn.Close

   Response.end
Else

  conn.CommitTrans

   Response.write "<script language='javascript'>"&chr(13)
   Response.write " alert('데이터가 성공적으로 처리되었습니다.');"&chr(13)
   Response.write "</script>"&chr(13)
   conn.Close
End If
%>

input type file 버튼 -> 이미지로.

<form name="form1">
<input type="file" name="fl" style="display:none">
<input type="text" name="fileName">

<img src="file_open_btn.gif" onclick="document.form1.fl.click()">
</form>

input type text 에서 refresh 막기???

form 요소안에 input type text eleement가 하나일 경우

포커스를 text element에 두고 엔터를 치면 화면이 refresh가 된다..

2개일 경우 refresh 되지 않음...ㅎ --;

이런것도 있었나..--;

2009년 10월 23일 금요일

최고의 지름길은 '돌아가는 길'

많은 사람들은 지름길을 원한다.

나는 최고의 지름길은 돌아가는 길이라 생각한다.

간단히 말해 묵묵히 최선을 다하라는 것이다.

만약 당신이 다른 사람보다 더 많은 시간 일을 한다면,

그 시간만큼 당신은 당신의 일에 관해 더 많은 것을 배우게 될 것이다.

쌓인 시간만큼 당신의 실력도 늘어나고, 보다 유능해지며, 더욱 행복해질 것이다.
열심히 일하는 것은 은행의 복리이자 계산법과 같다. 보상은 빠르게 누적된다. (213p)

 

랜디 포시.제프리 재슬로 지음, 심은우 옮김 '마지막 강의' 중에서 (살림)

2009년 10월 22일 목요일

MySQL - ERROR 1153 (08S01) at line 478: Got a packet bigger than 'max_allowed_packet' bytes

ERROR 1153 (08S01) at line 478: Got a packet bigger than 'max_allowed_packet' bytes

 

mysqldump를 이용해 백업 받은 파일을 다른 디비에 올리는 과정에서 위의 에러 메시지를 출력한다.

원본 디비의 'max_allowed_packet' 이 대상 디비보다 클 때 발생하는 에러로, 대상 디비의 'max_allowed_packet' 를 원본 디비 이상으로 잡아주면 된다.

 

mysql> show variables like 'max_allowed_packet';

원하는 값으로 변경한다. 동적 시스템 변수라면 서버를 내리지 않고 변경 가능하다.

 

mysql > SET max_allowed_packet=10000;
mysql > SET @@local.max_allowed_packet=10000;
mysql > SET @@.max_allowed_packet=1000000;
mysql > SET GLOBAL max_allowed_packet=1000000;
mysql > SET @@global.max_allowed_packet=1000000;

 

※ 만약 해당 시스템 변수가 동적 변수이고, 로컬과 글로벌의 값을 동시에 가질 수 있다면, 영역을 명시하지 않는 한 SET 명령으로 수정할 때, 로컬 변수의 값을 수정한다. 그 값은 세션이 종료됨과 동시에 초기화된다.

show variables 로 확인되는 값도 해당 세션의 값이다. 글로벌 값을 확인하고 싶다면

mysql >select @@global.variable_name;

 

서버를 시작할 때 데몬에서 설정할 수도 있다.

# mysqld --max_allowed_packet=1G

 

항상 같은 값을 적용하고 싶다면 옵션 파일에 명기한다.

# vi my.cnf

[ mysqld]
max_allowed_packet=1G

 

※ K,M,G 같은 바이트의 단위는 동적인 변경에는 사용할 수 없다.


[출처 - devideby0.egloos.com]

2009년 10월 7일 수요일

돈 버는 기이한 규칙

다른 사람이 당신을 위해 해 줄 수 있는 일을
결코 자신이 하지 말라.
다른 사람이 당신을 위해 해 줄 수 있는 일이 늘어날수록,
당신 외에는 그 누구도 할 수 없는 일에
당신이 쏟아 부을 수 있는 시간과 에너지도 늘어난다.

- E. W. 스크립스  
 
 
우리가 하는 모든 일에는
반드시 기회비용(opportunity cost)이 있기에
무엇을 하고 무엇을 하지 말지 신중하게 결정해야 합니다.

스크립스는 ‘하지 말아야 할 것을 아는 것이
해야 할 것을 아는 것보다 훨씬 더 중요하다.
하지 말아야 할 사항들을 모두 알게 된 사람은
반드시 해야 할 일을 할 수 밖에 없다.
’고
그 방법을 알려주고 있습니다. 
 

2009년 9월 21일 월요일

연결된서버 ANSI_NULLS 및 ANSI_WARNINGS 옵션문제

-----------------------------------------------------------------------------------------

오류 7405: 유형이 다른 쿼리를 사용하려면 연결에 대해  ANSI_NULLS 및 ANSI_WARNINGS 옵션을
설정해야 합니다. 이렇게 하면 일관된 방식으로 쿼리를 사용할 수 있습니다. 이 옵션을 설정한 다음
쿼리를 다시 실행하십시오
-----------------------------------------------------------------------------------------

두 서버간의 옵션이 달라 발생하는 문제.

 

1.

CREATE PROC 구문전에 아래 구문을 먼저 적는다.

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO


CREATE PROC SP_XXX
AS

2.

서버자체 옵션을 변경

EM에서 서버선택--> 속성 --> 옵션 -->설정

설정에서 ANSI NULL 하구 ANSI WARNING  설정변경

[MS-SQL] DATETIME 변환

0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0)
1 02/22/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1)
2 06.02.22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2)
3 22/02/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3)
4 22.02.06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 4)
5 22-02-06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 5)
6 22 Feb 06 CONVERT(CHAR(9), CURRENT_TIMESTAMP, 6)
7 Feb 22, 06 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 7)
8 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 8)
9 Feb 22 2006 4:26:08:020PM CONVERT(CHAR(26), CURRENT_TIMESTAMP, 9)
10 02-22-06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 10)
11 06/02/22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 11)
12 060222 CONVERT(CHAR(6), CURRENT_TIMESTAMP, 12)
13 22 Feb 2006 16:26:08:020 CONVERT(CHAR(24), CURRENT_TIMESTAMP, 13)
14 16:26:08:037 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 14)
20 2006-02-22 16:26:08 CONVERT(CHAR(19), CURRENT_TIMESTAMP, 20)
21 2006-02-22 16:26:08.037 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 21)
22 02/22/06 4:26:08 PM CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22)
23 2006-02-22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 23)
24 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 24)
25 2006-02-22 16:26:08.037 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 25)
100 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 100)
101 02/22/2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 101)
102 2006.02.22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)
103 22/02/2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 103)
104 22.02.2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 104)
105 22-02-2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 105)
106 22 Feb 2006 CONVERT(CHAR(11), CURRENT_TIMESTAMP, 106)
107 Feb 22, 2006 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 107)
108 16:26:08 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 108)
109 Feb 22 2006 4:26:08:067PM CONVERT(CHAR(26), CURRENT_TIMESTAMP, 109)
110 02-22-2006 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 110)
111 2006/02/22 CONVERT(CHAR(10), CURRENT_TIMESTAMP, 111)
112 20060222 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112)
113 22 Feb 2006 16:26:08:067 CONVERT(CHAR(24), CURRENT_TIMESTAMP, 113)
114 16:26:08:067 CONVERT(CHAR(12), CURRENT_TIMESTAMP, 114)
120 2006-02-22 16:26:08 CONVERT(CHAR(19), CURRENT_TIMESTAMP, 120)
121 2006-02-22 16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 121)
126 2006-02-22T16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 126)
127 2006-02-22T16:26:08.080 CONVERT(CHAR(23), CURRENT_TIMESTAMP, 127)
130 24 ???? 1427 4:26:08:080PM CONVERT(CHAR(32), CURRENT_TIMESTAMP, 130)
131 24/01/1427 4:26:08:080PM CONVERT(CHAR(25), CURRENT_TIMESTAMP, 131)

2009년 9월 8일 화요일

responseText 결과내 스크립트

responseText

----------------------------------------------

<script src="foo.js"></script>

<script>

alert('TEST');

</script>

 

<a href="javascript:js_foo()">TEST</a>

----------------------------------------------

 

function result_insert(responseText)

{

  var res = "<body>" + responseText.replace(/<\/?head>/gi, "").replace(/<\/?html>/gi, "").replace(/<body/gi, "<div").replace(/<\/body/gi, "</div") + "</body>";

  document.all.result.innerHTML = res;

 

  var scripts = document.all.result.getElementsByTagName("script");

  if(scripts == false) return true;

 

  for(var i=0; i<scripts.length; i++)

  {
    var scriptclone = document.createElement("script");
    if(scripts[i].attributes.length > 0)

    {

      for(var j in scripts[i].attributes)

      {
        if(typeof(scripts[i].attributes[j]) != "undefined"
        && typeof(scripts[i].attributes[j].nodeName) != "undefined"

        && scripts[i].attributes[j].nodeValue != null
        && scripts[i].attributes[j].nodeValue != "")
        {
          scriptclone.setAttribute(scripts[i].attributes[j].nodeName, scripts[i].attributes[j].nodeValue);
        }
      }
    }
    scriptclone.text = scripts[i].text;

    if (navigator.userAgent.indexOf("Opera")>0) {return;}
     scripts[i].parentNode.replaceChild(scriptclone, scripts[i]);
  }
  return true; 

}

 

<div id="result"></div>

2009년 9월 2일 수요일

Random Query

Oracle

SELECT * FROM emp SAMPLE(5)

 

MSSQL

SELECT TOP 5 * FROM emp ORDER BY NEWID()

 

MySQL

SELECT * FROM emp ORDER BY RAND() LIMIT 0, 5

2009년 8월 30일 일요일

국가별 아이피 차단 스크립트

커널에 ipt_iprange 모듈이 있어야 함

 

#!/bin/csh

if ($#argv < 1) then
    echo "usage : ./ip CN or China";
    exit
endif

wget -O IP.zip http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
unzip IP.zip
cat GeoIPCountryWhois.csv  | grep $argv[1] > iplist
cat iplist | perl -pi -e 's/,/ /g'  | perl -pi -e 's/"/ /g' | awk '{ print "iptables -A INPUT -m iprange --src-range "$1 "-" $2 " -j DROP "}' > run


위 스크립트 실행후 ./run

 

한국 아이피만 허용하고 모두 막으려면 DROP 부분을 ACCEPT로 수정한 후  

iptables -A INPUT -s 0/0 -p tcp -m tcp --dport 80 -j DROP
iptables -A INPUT -s 0/0 -p udp --dport 80 -j DROP


이 두줄을 run 에 추가.

 

[출처 - PHPSCHOOL]

2009년 8월 29일 토요일

ime-mode

ime-mode : 입력언어 설정

  • auto : 텍스트 박스에 기본으로 설정됨
  • disabled : 초기 입력시 영문으로 입력, 한글 입력 불가
  • active : 초기 입력시 한글로 입력, 한/영 전환가능
  • inactive : 초기 입력시 영문으로 입력, 한/영 전환가능

     

2009년 8월 28일 금요일

동적으로 원하는 개수만큼 행을 다루기(TOP, ROWCOUNT)

SELECT TOP 20 * FROM HumanResources.Employee


DECLARE @top
INT
SET
@top =
10
SELECT TOP(@top) * FROM HumanResources.Employee

-- set value
DECLARE @top
INT
SET
@top =
10
SET
ROWCOUNT @top
SELECT * FROM
HumanResources.Employee
-- set value to return all rows
SET ROWCOUNT
0

-- update example
DECLARE @top
INT
SET
@top =
10
UPDATE TOP(@top) HumanResources.Employee SET MaritalStatus = 'S' WHERE EmployeeID <
20


-- delete example
DECLARE @top
INT
SET
@top =
10
DELETE TOP(10) HumanResources.Employee WHERE EmployeeID <
20


-- insert example
DECLARE @top
INT
SET
@top =
10
INSERT TOP(@top)
dbo.contact2
SELECT * FROM dbo.contact

2009년 8월 27일 목요일

특정 사용자에 주어진 권한 보기

SELECT USERNAME, ROLENAME, PRIVILEGE
FROM (SELECT DECODE(SA1.GRANTEE#, 1, 'PUBLIC', U1.NAME) username,
SUBSTR(U2.NAME,1,20) rolename,
SUBSTR(SPM.NAME,1,27) PRIVILEGE
FROM SYS.SYSAUTH$ SA1,
SYS.SYSAUTH$ SA2,
SYS.USER$ U1,
SYS.USER$ U2,
SYS.SYSTEM_PRIVILEGE_MAP SPM
WHERE SA1.GRANTEE# = U1.USER#
AND SA1.PRIVILEGE# = U2.USER#
AND U2.USER# = SA2.GRANTEE#
AND SA2.PRIVILEGE# = SPM.PRIVILEGE
UNION
SELECT U.NAME username, NULL rolename, SUBSTR(SPM.NAME,1,27) privilege
FROM SYS.SYSTEM_PRIVILEGE_MAP SPM, SYS.SYSAUTH$ SA, SYS.USER$ U
WHERE SA.GRANTEE#=U.USER#
AND SA.PRIVILEGE#=SPM.PRIVILEGE)
WHERE USERNAME = 'USERID';

 

 

부여된 권한 확인

 

Dictionary뷰                       설명

ROLE_SYS_PRIVS              role에 부여된 시스템 권한

ROLE_TAB_PRIVS              role에 부여된 테이블 권한

USER_ROLE_PRIVS            사용자가 액세스할 수 있는 role

USER_TAB_PRIVS_MADE    사용자가 부여한 객체 권한

USER_TAB_PRIVS_RECD    사용자에게 부여된 객체 권한

USER_COL_PRIVS_RECD    특정 Column에 대하여 사용자에게  부여된 객체 권한

2009년 8월 19일 수요일

일반검색, 구문검색, 확장검색에 확장검색의 범위 기준

구글 검색 유형 4가지.

 

키워드 = 확장검색 or 일반검색
[키워드] = 일치검색 or 완전검색
"키워드" = 구문검색
-키워드 = 제외키워드

예) 중고 도서 키워드 사용시


확장검색

중고 도서 도매 업체 - 광고 게재
중고 도서 구매 - 광고 게재
중고 희귀 도서 - 광고 게재
중고 도서 판매 - 광고 게재
중고 도서 찾기 - 광고 게재
 
구문검색

중고 도서 도매 업체 - 광고 게재

중고 도서 구매 - 광고 게재

중고 단행본 - 광고 미게재
중고 검색어 도서 - 광고 미게재
중고 희귀 도서 - 광고 미게재

 
일치검색

중고 도서 - 광고 게재

중고 도서 판매자 - 광고 미게재
중고 도서들 - 광고 미게재

 
제외어검색 (도매)

중고 도서 도매 업체 - 광고 미게재
중고 도서 도매 - 광고 미게재

 

 

2009년 8월 18일 화요일

구글의 확장검색 우선순위의 단점

네이버 클릭초이스의 경우 확장검색이 없어 세부키워드을 적극적으로 활용할 수 있다.

구글의 경우 '문자메세지' 키워드를 확장검색으로 설정, 금액을 높게 설정할 경우

'문자메세지사이트', '문자메세지보내기' 등 세부키워드 보다 우선시 노출되어

세부키워드를 활용하기 어려운 단점이 있다.... 덴당덴당.. 오버추어는???

2009년 8월 12일 수요일

MySQL errno: 145 Can't open file 테이블이름.MYI

Enter the MySQL prompt from the shell:
Code:
mysql -u dbuname -h dbhost  -p dbname;
(where dbuser, dbhost and dbname are exactly the same as in your config.php - you will also be prompted for your password, which must also be the same as in config.php)

and try the REPAIR TABLE command:
Code:
repair table 테이블이름;
You can also try from the shell command-line the myisamchk utility:
Code:
myisamchk -r 테이블이름

2009년 8월 4일 화요일

Recordset

Recordset.Open [source],[ActiveConnection],[CursorType],[LockType],[Options]

[source] : SQL 쿼리
[ActiveConnection] : Connection 개체
[CursorType] : 사용할 커서 타입(기본 1)
[LockType] : 사용할 락 타입(기본 0)
[Options] : 데이터 제공자에게 source 인수가 무엇인지 알려줌

이 중에 [CursorType],[LockType],[Options] 생략 가능

[CursorType]
1. 정적 커서(adOpenStatic - 0)
레코드세의 내용이 고정
다른 사람들에 의해 수정, 추가 또는 삭제된 모든 레코드들은 보이지 않게 됨.
레코드셋의 이동은 앞뒤 가능

2. 전진 전용 커서(adOpenForwardOnly - 1)
정적 커서랑 비슷
레코드셋에서 순차적으로 한번만 참조하는 경우 효율적

3. 동적 커서(adOpenDynamic - 2)
레코드셋을 열고 있는 동안 다른 사용자가 추가,수정,삭제한 내용을 모두 볼 수 있음.
이동은 앞뒤로 가능, 에러시 에러 내용을 자세히 알수 있으나, 서버 메모리를 많이 사용.

4. 키셋 커서(adOpenKeyset - 3)
동적 커서랑 비슷하지만, 레코드셋이 고정
다른 사용자들에 의한 변경 사항들을 볼 수 있지만, 생성된 후에 다른 사용자가 추가한 레코등 대해서는 볼 수 없음.

이동은 앞뒤로 가능

2009년 8월 2일 일요일

회원 잔액차감

DECLARE @del_date DATETIME
DECLARE @del_month INT
DECLARE @member_id VARCHAR(64)
DECLARE @cash INT
DECLARE @msg VARCHAR(64)

SET @del_month = -13

SET @del_date = DATEADD(MONTH, @del_month, GETDATE())


DECLARE pc_cursor INSENSITIVE CURSOR
FOR

 SELECT member_id, cash FROM subscriber WITH(NOLOCK)

  WHERE member_id = s.member_id
  AND cash > 0 AND visit_date  < @del_date

 

FOR READ ONLY

OPEN pc_cursor

 

FETCH NEXT FROM pc_cursor
INTO @member_id, @cash

 

WHILE @@FETCH_STATUS = 0
BEGIN

 

 SET @msg = '약관적용 건수차감  : ' +  CONVERT(VARCHAR, @cash)

 

 INSERT INTO memo(member_id, admin_id, memo) VALUES(@member_id, 'SYSTEM', @msg)
 UPDATE subscriber SET cash = 0 WHERE member_id = @member_id

 

 FETCH NEXT FROM pc_cursor
 INTO @member_id, @remain_cash
END


CLOSE pc_cursor
DEALLOCATE pc_cursor

작업스케쥴러 초단위 실행

제대로 돌아갈려나..--;

 

declare @run_sec as int
declare @sec as int
declare @run_time as int
declare @run as int
declare @delay as int
declare @stime as varchar(23)
declare @etime as varchar(23)
declare @ftime as datetime
declare @dtime as varchar(16)


set @run = 0
set @sec = 60
set @run_sec = 3
set @run_time = @sec / @run_sec

set @stime =  convert(varchar(23), getdate(), 121)
set @etime =  convert(varchar(23), dateadd(second, @sec - @run_sec, @stime), 121)


print @stime
print @etime

while @run < @run_time
begin
 if @etime > @stime
 begin
  set @stime = convert(varchar(23), getdate(), 121)

  set @dtime = '00:00:0' + convert(varchar, convert(int, rand() * @run_sec))
  waitfor delay @dtime

  set @ftime = convert(varchar(32), getdate(), 121)
  set @delay = datediff(second, @stime, @ftime)

  if @delay > 0
  begin
   if @run + 1 < @run_time
   begin
    set @dtime = '00:00:0' + convert(varchar, @run_sec - @delay)
    waitfor delay @dtime
   end
  end
  else
  begin
   if @run + 1 < @run_time
   begin
    set @dtime = '00:00:0' + convert(varchar, @run_sec)
    waitfor delay  @dtime
   end
   
  end

  print convert(varchar, @delay) + ' ' + convert(varchar, getdate(), 121)
 end
 else
 begin
  print 'else: ' + @stime
  print 'else: ' + @etime
 end
 
 set @run = @run + 1
end

2009년 7월 14일 화요일

확장저장프로시저 xp_cmdShell 제거

확장프로시저에 접근이 가능하다면 다음과 같은 구문으로 신규 계정을 생성할수 있다.

이와 같이 어드민 계정이 생성되면 그 이후에는 그 서버는 마음대로 주무를수 있게 된다.

 

xp_cmdshell 'net user hacker1 Akld5793/add'
xp_cmdshell 'net localgroup administrators hacker1 /add'

 

이를 방지하기 위해 제거 해버린다.

 

use master
if object_id('[dbo].[xp_cmdshell]') is not null begin
   exec sp_dropextendedproc 'xp_cmdshell'
end

exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'

use master
if object_id('[dbo].[xp_cmdshell]') is not null begin
   exec sp_dropextendedproc 'xp_cmdshell'
end

 


재설치

 

sp_dropextendedproc을 해도 해당 DLL이 메모리에 남아 있다.
다음 명령어로 동적 연결 라이브러리(DLL)를 메모리에서 내리면 기존 파일이 지워진다.
dbcc xp_cmdshell(free)


use master
exec sp_helptext xp_cmdshell
여기서 나타난 DLL 이름을 기억해 둡니다. 이것은 나중에 다시 등록할 때 필요함.

 

use master
exec sp_dropextendedproc ‘xp_cmdshell’

 

다시 등록시
use master
exec sp_addextendedproc ‘xp_cmdshell’, ‘xplog70.dll’
앞에서 알아냈던 dll

2009년 7월 13일 월요일

ActiveX 설치여부 확인

<script>
function isInstalledActiveX()

{
        var isInstall = false;
        try

        {
                var obj = new ActiveXObject("xxx.xxx.1");

                //xxx.xxx.1 은 HKEY_CLASSES_ROOT에 등록된 ProgID (ex. Microsoft.ActiveXPlugin.1)

                // 설치되어 있으면 obj 값은 [object]

                // 안되어 있으면 undefine      

                if(obj)               

                        isInstall = true;
                else

                        isInstall = false;
        }

        catch(e)

        {
                isInstall = false;
        }              
       
        if(isInstall)
                alert("ActiveX Control 설치");
        else
                alert("ActiveX Control 미설치");
}  
</script>

2009년 7월 11일 토요일

Copy 'n paste between Excel and Flex

I was looking at Google Spreadsheets recently. One of the neat features of this RIA is that it supports copy 'n paste to and from other spreadsheet applications like Microsoft Excel using standard key combinations like Ctrl+C and Ctrl+V.

Give it a try. Select a bunch of cells in Excel, and hit Ctrl+C.

[screenshot]

Then come to Google Spreadsheets, and hit Ctrl+V. The cells are copied over!

[image: screenshot]

How does it work? It's really simple: when cells are copied in Excel, the data is stored in the system clipboard as tab-separated values (TSV); when pasted into Google Spreadsheets, the data is parsed and distributed among the cells accordingly.

So the next question is, how can such a feature be added to a Flex application? Let's say you want the user to be able to copy cells from Excel into a Flex DataGrid and vice versa.

Here's one solution that involves a hidden TextField:

  1. When the Ctrl key is pressed on the DataGrid, create an hidden TextField and give it player-level focus. This way we're ready to accept any paste operation using Ctrl+V. Also copy the DataGrid's selected rows into the TextField in TSV format, and make all the text selected, so that a copy operation can be performed using Ctrl+C.
  2. Listen for the textInput event on the hidden TextField. If any data is pasted, it'll be available here and can be parsed and fed into the DataGrid.
  3. When the Ctrl key is released, remove the hidden TextField.

Check out the sample code, an implementation of this technique. It works (TM).

[image: screenshot]

PS: The hidden TextField thing was Rishi's idea.

 

http://mannu.livejournal.com/348299.html

2009년 7월 10일 금요일

DB 이전 (EXEC sp_attach_db)

※ 설명 : 가끔 A라는 서버에 있는 DB를 B라는 서버에 옮겨야 할 때가 종종 있다. 이럴경우 아래와 같은 방법으로 DB를 붙일 수 있다.

 

[사용법]

EXEC sp_attach_db @dbname = N'생성할 DB명',
@filename1 = N'현재 붙일 MDF 파일이 있는 경로\test_Data.MDF',
@filename2 = N'현재 붙일 LDF 파일이 있는 경로\test_Log.LDF'

 

[예제]

EXEC sp_attach_db @dbname = N'shoppingmall_db',
@filename1 = N'c:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data\test_Data.MDF',
@filename2 = N'c:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data\test_Log.LDF'

 

 

[작업순서]


1. 테스트 서버에 접속한다.

select * from sysfiles 을 실행..
-> 물리적 파일 위치를 확인한다.

 

2. 테스트 서버의 기동을 정지시킨다.

 

3. 탐색기를 연후 1번에서 확인한 파일을 복사한다.(CTRL+C)

 

4. 원본 서버로 이동시킨다.(CTRL+V)

 

5. 원본 DB로 접속한다.
sp_attach_db [ @dbname = ] 'dbname' ,
[ @filename1 = ] 'filename_n' [ ,...16 ]
DB를 붙인다.

-> 예) 붙일 DB명이 pubs이고 파일이 아래와 같은때
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

6. use @dbname (해당 DB로 이동한다)

 

7. 데이터를 확인한다.

MIME Type

통시사별 브라우저 이미지 포멧

 

통신사 브라우저 이미지 포멧 비고
SKT etc sis, wbmp, bmp, jpeg, png(ngb only) 구형폰
  m브라우저 sis, wbmp, bmp, jepg, png, gif 인프라웨어(3.0/4.0/5.0)
KTF me브라우저 sis, bmp, gif 구형핸드폰
  kun1.0 sis, jpeg, nbmp ktf 자체 브라우저
  kun1.2 sis, jpeg, png, nbmp nbmp (ktf 자체포멧)
  kun2.1 sis, jpeg, wbmp, png, mng, nbmp  
  kun3.0 sis, jpeg, wbmp, dmf, vis, png, mng, gif, svg, bmp, nbmp  
LGT lion sis, bmp, wbmp, jpeg, png 인프라웨어
  etc sis, bmp, wbmp 구형폰

 

 

파일포멧별 마임타입

 

파일포멧 마임타입 비고
sis image/vnd.wap.sis 네이엠텔 이미지포멧(SKT)
si6 image/sis mhtml
si7 image/vnd.stiwap.sis up-wml
si9 image/vnd.lgtwap.sis up-wml
wbmp image/vnd.wap.wbmp  
jpeg image/jpeg 표준 jpeg
png image/png 표준 png
mng image/mng 표준 mng
gif image/gif 표준 gif
svg image/svg+xml SVG Tiny 1.1
bmp image/bmp window bmp
ndwn application/ndwn

ktf 자체 다운로드 포맷(캐릭터, 벨)

너무 알려져서... 이젠 자체 포멧이라고 하기엔...--;

nbmp image/nbmp ktf 자체포멧
nsnd audio/nsnd ktf 자체포멧(매직벨2)
vib image/vib ktf 진동
vis image/vnd.wap.sis3, application/neomtel.vis 네오엠텔 모바일 플래쉬 포멧
kjj image/kjj 컬러키 서비스용 이미지(ktf)
kjj anim/kjj 키짱용 이미지 포멧(skt)

 

2009년 7월 9일 목요일

인간관계의 황금률

언제 읽었더라... 책장 어딘가에 있을건데...

 

----------------------------------------------------------------------------------------

모든 유력 종교에서는 아래와 같이 ‘인간관계의 황금률’을 다루고 있습니다.

기독교 : “남에게 대접을 받고자 하는 대로 너희도 남을 대접하라.” (누가복음 6장 31절)
불교 : “내게 해로운 것으로 남에게 상처 주지 말라.”(우다나품)
유교 : “내가 원치 않는 것은 남에게도 행하지 말라.”(논어)
힌두교 : “이것이 의무의 전부이니, 내게 고통스러운 것을 남에게 강요하지 말라.”(마하바라타)
이슬람교 : “나를 위하는 만큼 남을 위하지 않는 자는 신앙인이 아니다.”(코란)

‘함께 일하고 싶은 팀장’ - 中

-----------------------------------------------------------------------------------------

경영실패의 주범 : A.I.D.S.

Avarice(과욕)

  - 비관련 사업다각화로 경영자원 분산, 신규사업분야는 물론 기존사업의 경쟁력 저하

  - 기존의 경쟁우위 요소나 우호적인 평판을 활용할 수 있다는 이유만으로, 인접역역으로의

    시장확대 추진한 결과 기존 고객의 신뢰 마저 상실

 

Ineria(타성)

  - 현재 경영상태에 만족하여, 새로운 시장이나 경쟁자의 부상 가능성을 간과, 위기를 자초

  - 과거의 성공에서 비롯한 자신감으로 변화의 흐름을 감지하면서도 대비를 소홀히 하여 경쟁우위 상실

 

Delusion(착각)  

   - 신제품이 고객의 인식까지 변화시킬수 있을것이란 판단으로 기존제품의 본원적 이미지를

     부정하는 경우가 빈발

   - 비소비자의 욕구까지 충촉시키려다 소비자의 감정을 손상시키는 경우 발생

   - 품질개선, 참신한 아이디어 발굴에만 매달려 소비자 성향을 이해하려는 노력부족

 

Self-absorption(자아도취)

   - 제품혁신을 선도한다는 소명의식에 도취되어 소비자 여건이나 시장의 성숙도를 고려하지 않고

     과속경영을 감행

   - 기능이 많고 새로울수록 소비자의 효용이 증대될 것이라는 '과다기능의 함정' 에 빠지는 愚를 자초

   - 기업의 입장에서 '최고'가 아니라, 고객의 입장에서 '최적'인 제품이 무엇인지를 읽는 통찰력이 중요

 

삼성경제연구원 http://www.seri.org/db/dbReptV.html?menu=db12&pubkey=db20090702001

마케팅의 10가지 치명적 실수

 

 

 

 

 

 

 

 

 

 

 

 

 

 

마케팅의 10가지 치명적 실수

 1. 시장 중심적이지도, 고객 지향적이지도 않은 마케팅

 2. 표적 고객을 충분히 이해하지 못하는 마케팅

 3. 경쟁자를 제대로 파악하고 감시하지 못하는 마케팅

 4. 이해관계자들과 관계를 적절히 관리하지 못하는 마케팅

 5. 새로운 기회를 찾는데 미숙한 마케팅

 6. 마케팅 계획과 그 수립과정에 결합이 있는 마케팅

 7. 제품과 서비스 정책에 경제성을 고려하지 않은 마케팅

 8. 브랜드 만들기가 고객과의 의사소통 기술이 취약한 마케팅

 9. 효율적, 효과적으로 실행되지 않는 마케팅

 10. 기술력을 최대한 활용하지 않는 마케팅

 

효율적인 마케팅 10계명

 1. 기업은 시장을 세분화하고 최선의 세분 시장을 선정하여, 선택된 세분시장에서 가장 강력한 위상을

    확립하라.

 2. 기업은 고객의 욕구와 인식.선호도 및 행동을 철처히 파악하고, 하청업체나 유통업자 등 기업관련

    이해 관계자로 하여금 고객을 만족시키는 데 최선을 다하도록 유도하라.

 3. 기업은 주요 경쟁자가 누구인지, 그리고 그들의 강점과 약점이 무엇인지 잘 파악하도록 하라.

 4. 기업은 이해 관계자들과의 관계를 잘 구축하고, 그들을 보상.관리하라.

 5. 기업은 새로운 기회들을 파악하고 순위를 매겨, 최선의 기회를 잡을 수 있는 시스템을 개발하라.

 6. 기업은 통찰력 있는 장.단기 계획을 이끌 수 있는 마케팅 기획 시스템을 구축하라.

 7. 기업은 제품 및 서비스 믹스에 대해 강력한 통제력을 행사하라.

 8. 기업은 가장 효율적인 광고 및 판촉 수단을 사용합으로써 강력한 브랜드를 창출하라.

 9. 기업은 마케팅 선도력을 구축하고, 각 부문별로 단체 정신을 함양하라.

 10. 기업은 시장에서 경쟁우위에 설 수 있는 기술을 끊임없이 추가하라.

 

콜래보 경제학

쏜사장 추천책...

 

협력의 경제학....

한번쯤.. 읽어 볼만한책.. 한~번~쯤~ ^^ ㅎ

 

Secret

1줄요약...생각데로 하면 되고~ ♬

키워드 광고 이기는 전략~~

움냐~ 간만에 광고 붙들고 있을려니..--;

뭐가 이렇게 변한게 많은지...

 

지하철 왕복..4시간..--;

길게잡고..5일이면...움움!!

2009년 6월 30일 화요일

DNS 캐싱여부 확인 및 삭제

Window

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters 에서 MaxCacheTtl, MaxNegativeCacheTtl 값이 10으로 되어 있으면 10초 캐싱.
http://support.microsoft.com/kb/318803/ko


캐싱 안하게 할 경우는 레지스트리값을 0으로 하거나 net stop dnscache

 

삭제할 경우

ipconfig /flushdns

 

 

Linux

ps - ef | grep nscd 해당 프로세스가 떠 있으면 /etc/nscd.conf 파일을 확인

enable-cache passwd yes
enable-cache group yes
enable-cache hosts yes

 

캐싱 안하게 할 경우

enable-cache passwd no
enable-cache group no
enable-cache hosts no 로 설정 후 /etc/rc.d/init.d/nscd restart

 

삭제할 경우
rndc flush

 

 

Java

 

$JAVA_HOME/jre/lib/security/java.security

networkaddress.cache.ttl=10

네임 서비스로부터의 이름의 검색에 성공했을 경우의 캐싱 정책를 나타냄.

지정하는 값은 성공한 검색 결과를 캐쉬하는 초수를 나타내는 정수.
-1의 값은 계속적으로 캐쉬한다는 의미

 

networkaddress.cache.negative.ttl=10
네임 서비스로부터의 이름의 검색에 실패했을 경우의 캐싱 정책를 나타냄.
지정하는 값은, 실패한 검색 결과를 캐쉬하는 초수를 나타내는 정수.
0 의 값은 캐쉬를 하지 않는다라는 의미이고, -1 의 값은 계속적으로 캐쉬한다는 의미

 

어플에서 캐싱 설정할 경우

java.security.Security.setProperty("networkaddress.cache.ttl" , "10");
캐싱 안하게 할 경우 ttl을 0으로 셋팅

2009년 6월 26일 금요일

MSSQL 필드추가, 수정, 삭제

추가

alter table [테이블명] add [필드명] [속성]

 

alter table table_name add field_name varchar(32) null

alter table table_name add field_name varchar(32) not null contraint default_value 'N'

 

 

수정

alter table [테이블명] alter column [컬럼명] [속성]

alter table table_name alter column varchar(32) null


 

컬럼명 수정

exec sp_rename '[테이블명].[수정할컬럼명]', '[수정될 이름]', 'column'

sp_rename 'table_name.field_name', 'field_name2', 'column'


 

컬럼삭제

alter table [테이블명] dorp column [컬럼명]

alter table table_name drop column field_name

Apache에서 특정파일 로그 남기지 않기

CustomLog logs/access_log common

 

을 아래와 같이 변경

 

SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf) $ IMAGE=1

CustomLog logs/access_log common env=!IMAGE

 

2009년 6월 25일 목요일

고객의 마음을 사로잡는 웹심리학

괜찮다고들 해서.. 읽어봤는데..

설득의 심리학 1,2 읽고나서 그런지.. 뭐.. 그닥..

마케팅 불변의 법칙

"마케팅은 제품이 아니라 인식의 싸움이다.."

 

ActiveX 컨트롤 웹페이지 배포시 vb6ko.dll 에러

[증상]
VB6(한국어버전)로 개발한 ActiveX 컨트롤을 웹 페이지를 통해 실행할 경우, VB6KO.DLL 없음 에러 발생함
VB RUNTIME(msvbvm60.dll)을 설치하더라도 발생함

[해결]
영문버전 VB6로 개발하거나
VB6KO.DLL 파일을 클라이언트의 C:\Windows\System32 에 복사함

2009년 6월 24일 수요일

ssl 적용시 swf 파일때문에 보안되지 않은 항목이라는 경고창이 뜰때

flash cab 파일 호출시 http:// -> https:// 로 변경

ssl 적용시... inside.daum.net 로그 스크립트

<script type="text/javascript">
var inside_host = (("https:" == document.location.protocol) ? "https://ssl." : "http://");
document.write(unescape("%3Cscript src='" + inside_host + "log.inside.daum.net/dwi_log/js/dwi.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
_dwiPID="d-KfD-245";
if(typeof(_dwiCatch) == "function") { _dwiCatch();}
</script>

2009년 6월 23일 화요일

urldecode

Function urldecode(str)
 Dim res, reg, tmp
 Dim i

 if IsNull(str) then
  str = ""
 else 
  Set reg = New RegExp
  reg.IgnoreCase = True
  reg.Pattern = "^%[0-9a-f][0-9a-f]$"
  str = Replace(str, "+", " ")
  res = ""

  For i = 1 To Len(str)
   tmp = Mid(str, i, 3)
   
   If reg.Test(tmp) Then
    If CInt("&H" & Mid(str, i + 1, 2)) < 128 Then
     res = res & Chr(CInt("&H" & Mid(str, i + 1, 2)))
     i = i + 2
    Elseif mid(str, i+3, 1) ="%" then
     res = res & Chr(CInt("&H" & Mid(str, i + 1, 2) & Mid(str, i + 4, 2)))
     i = i + 5
    Else
     res = res & Chr(CInt("&H" & Mid(str, i + 1, 2) & "00") + asc(mid(str,i+3,1)))
     i = i + 3
     ' 이부분이 중요하다.
     ' 기존 urldecode함수가 몇 몇 글자들에서 에러를 내는 이유는
     ' 3바이트로 인코딩 되어있는 부분이 있기 때문.
     ' ascII로 변형되어 인코딩 된 부분이 존재한다.
    End If
   Else
    res = res & Mid(str, i, 1)
   End If
  Next
 End If
 urldecode = res
End Function

2009년 6월 18일 목요일

ttc 파일 분해 breakttc

auto_increment 초기화

alter table 테이블명 auto_increment = 1

editplus 코드정리 htmlarg

설치방법

Editplus 실행 > 도구 > 사용자 도구 구성 > 추가 

 

제목 : 원하는 제목으로

명령 : [..] 를 클릭후 위치시킨 htmlarg.exe 를 선택.

인수 : 2ny tr,td,div script,pre,style $

 

* 텍스트 필터로 실행 체크

 

실행

도구 소스정리, 단축키는 Ctrl + 1.

2009년 6월 17일 수요일

안철수..

가슴에 팍팍.. 꽂히는 말들...

 

- 사회의 성공은 혼자만의 것이 아니다..

 

- CEO는 직원들의 위에 있는 것이 아니라, 다른 직원들과 하는 역할만 다른 수평적 관계이다..

 

- 효율적인 면에서 보면 내 인생은 실패한 것이다. 하지만 자기가 정말 맞는 것을 찾는 시간은 중요하다고 본다. 자기 자신을 찾아가는 기회를 주는 것은 가장 큰 선물이고 기회인 것이다.

 

- 마지막 목표가 영혼이 남아있는 회사를 만들고 싶다.

 

내가 아는 몇몇 사람들.. 남 뒤통수치고 사기좀 치지 말고..

어제 무릎팍도사 보고 반성 좀..했으면...

 

다시 보니.. 웃기지도 않네..

엔에이포, 스카이온과 MMS 및 UCC벨 사업 공동추진

 

멀티미디어 편집 솔루션 및 플랫폼 전문기업 엔에이포(www.na4.com)는 코스닥 상장사 프리지엠의 자회사인 스카이온과 MOU 체결을 계기로MMS(Multimedia Messaging Service) 및 UCC벨사업을 공동 추진한다고 29일 밝혔다.

스카이온은 이동통신사 비종속적 콘텐트 다운로드, 모바일 단말기 관련 콘텐트 제작기술 등의 분야에서 기술력을 인정 받고 있는 회사로, 2003년 창업 이래 연평균 40%가 넘는 성장률을 기록해왔다. 현재 약 400만명 이상의 회원 수, 일일 페이지뷰 160만건을 기록하고 있는 문자천국(www.skysms.co.kr)과 벨소리천국(www.skybell.co.kr), 메시지천국(www.skymms.co.kr), 벨소리짱(www.bellzzang.co.kr) 등의 사이트를 운영하고 있다.

엔에이포는 스카이온에 자사 웹 기반 멀티미디어 편집 솔루션 플래온(Flaon)을 공급하는 데 이어 MMS 및 UCC벨사업에 필요한 관련 기술력을 제공할 예정이다. 엔에이포는 최근 문화관광부가 개최한 2008년 디지털콘텐츠대상에서 국무총리상(최우수상)을, KT Venture Award에서 ‘Dreamful Award’를 잇따라 수상했으며 VIP Asia Award에서 ‘올해의 제품상(Product of the Year)’에 선정되는 등 업계에서 독보적인 기술력을 인정받고 있다.

엔에이포의 강송규 대표이사는 “오픈마켓인 11번가, G마켓, 이동통신사 SKT, KTF에 이어 문자메시지 및 벨소리사업을 주력으로 하는 스카이온과의 업무협약으로 엔에이포의 사업영역이 크게 확장됐다”며 “스카이온과 긴밀한 협력을 통해 소비자에게 수준 높은 서비스를 제공하는 데 전사적 역량을 기울일 것”이라고 밝혔다.

 

------------------------------------------------------------------------------------------

플래온?? 은 공급받은 적도 없는데.. 공급했다....???

3월에 공급을 했는데 아직 적용하지도 못하고.. 이전에 내가 개발한 것을 그대로 사용하고 있는가??

그런건가..--??

 

UCC벨.. 내가... 2007년 8월인가.. 기획을..했던가...

사업기획 한지가 언젠데... 아직 진행 못했나???

 

아님.. 그냥..언론 플레인가..ㅎㅎㅎㅎ 웃기지도 않고나...

2009년 6월 9일 화요일

qmail forward

#cd ~

#vi .qmail

xxx@domain.com <- 포워딩할 주소

 

 

프로세스 강제종료

선택하고 kill 버튼~

2009년 6월 8일 월요일

MS SQL2000 암호화 (PwdEncrypt, PwdCompare)

MSSQL 2000 암호화 함수

 

PwdEncrypt('암호화문자')

 사용예) SELECT PwdEncrypt('1234')

 

PwdCompare('비교대상문자', PwdEncrypt('암호화문자'))

 사용예) SELECT PwdCompare('1234', PwdEncrypt('1234'))

 같으면 1, 다르면 0 을 리턴

 

2009년 6월 7일 일요일

MSSQL 작은 따옴표(')를 입력방법

작은 따옴표는 데이터베이스에 정보를 입력하는 등의 명령어에 쓰이기 때문에 사용할 수 없다. 따라서, 실제 작은 따옴표를 데이터로 넣어야 할 때에는 그냥 입력하면 다르게 인식한다. 이러한 문제를 해결하려면 작은 따옴표를 두 번 입력하면 쉽게 해결된다.

 

Replace(str, "'", "''")

2009년 6월 4일 목요일

xmlHTTP를 이용해서 웹페이지 긁어오기 ASP/VB

<%
' ===========================
'  Function to GetHTMLBin
' ===========================


Function GetHTMLBin(URLaddress)


   Dim Http
   Set Http = CreateObject("Microsoft.XMLHTTP")
   Http.Open "GET", URLaddress, False
   Http.Send
   GetHTMLBin = Http.responseBody
   Set Http = Nothing

End Function


' ===========================
'  Function to BinToText
' ===========================


Function BinToText(varBinData, intDataSizeInBytes)    ' as String

    Const adFldLong = &H00000080
    Const adVarChar = 200


    Set objRS = CreateObject("ADODB.Recordset")
    objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
    objRS.Open
    objRS.AddNew
    objRS.Fields("txt").AppendChunk varBinData
    BinToText = objRS("txt").Value
    objRS.Close
    Set objRS = Nothing

End Function

GetURL =
http://www.naver.com/

HTMLBin = GetHTMLBin(GetURL)
html = BinToText(HTMLBin,32000) 
%>

<%=html%>

2009년 6월 2일 화요일

SET LOCK_TIMEOUT

SET LOCK_TIMEOUT

잠금이 해제될 때가지 명령문이 기다려야 할 시간을 밀리초 단위로 지정합니다.

구문

SET LOCK_TIMEOUT timeout_period

인수

timeout_period

Microsoft® SQL Server™가 잠금 오류를 반환할 때까지 기다리는 시간을 밀리초 단위로 지정한 숫자입니다. -1(기본값)은 제한 시간이 없음(무기한 대기)을 나타냅니다.

기다리는 시간이 제한 시간 값을 초과하면 오류가 반환됩니다. 0은 기다리지 않음을 나타내고 잠금이 있으면 바로 오류 메시지가 반환됩니다.

비고

연결을 시작할 때는 이 설정이 -1로 되어 있습니다. 이 값을 변경하면 연결의 나머지 부분에서는 새 설정값이 적용됩니다.

SET LOCK_TIMEOUT 옵션은 실행시간이나 런타임에 설정되며, 구문 분석 시간에는 설정되지 않습니다.

이 SET 옵션 대신 READPAST 잠금 참고를 사용할 수도 있습니다.

사용 권한

기본적으로 모든 사용자에게 SET LOCK_TIMEOUT 사용 권한이 부여됩니다.

예제

다음 예제는 잠금 제한 시간을 1,800밀리초로 설정합니다.

SET LOCK_TIMEOUT 1800 GO 

emdesinger

하.. 차자따~

 

화면 픽셀사이즈 확인...할 수 있는 툴..

 

http://www.emsoft.co.kr/download/emdesigner10.zip

2009년 5월 28일 목요일

테이블 존재유무 확인

IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[DBO].[TABLE_NAME]')) BEGIN
  -- 테이블이 있을 때 처리 루틴
END ELSE BEGIN
  -- 테이블이 없을 때 처리 루틴
END

 

오류] 지정된 웹서버에 ASP.NET 버전 1.1이 실행되고 있지않아..

시작 ->  프로그램-> MicroVisual  .Net Studio 2003 -> Visual Studio .Net 도구 ->

Visual Studio .Net 2003 명령 프롬프트 실행

 

aspnet_regiis /i 를 입력하면 asp.net 1.1이 설치됨

asp 에서 regExp 정규식 사용법

폼에서 ID 와 PASSWD 입력받은 문자열 중

ID 는 영어 숫자만 입력 된것은 true 이고 다른건 false되도록

 

PASSWD도 역시 똑같이 이렇게 가능하도록 어떻게 해야하는지

정규식을 사용해서 자바스크립 말고 asp 코드 자체내에서 처리해 보자.

 

 

Function Word_check(str,patrn)
    Dim regEx, match, matches

    SET regEx = New RegExp

    regEx.Pattern = patrn            ' 패턴을 설정합니다.
    regEx.IgnoreCase = True      ' 대/소문자를 구분하지 않도록 합니다.
    regEx.Global = True             ' 전체 문자열을 검색하도록 설정합니다.

    SET Matches = regEx.Execute(str)

 

    if 0 < Matches.count then
        Word_check = false
    Else
        Word_check = true
    end if
End Function

 

 

 

위의 코드는 정규식을 이용해서 문자열이 패턴만으로 이뤄졌는지 확인하는 함수 입니다.

 

사용 방법은 response.write Word_check("문자열","패턴") 몇가지 패턴을 적어보자면

pattern0 = "[^가-힣]"  '한글만
pattern1 = "[^-0-9 ]"  '숫자만
pattern2 = "[^-a-zA-Z]"  '영어만
pattern3 = "[^-가-힣a-zA-Z0-9/ ]" '숫자와 영어 한글만
pattern4 = "<[^>]*>"   '태그만

pattern5 = "[^-a-zA-Z0-9/ ]"    '영어 숫자만

 

 

위에서 하려는 기능은

Word_check(id,pattern5) 이겁니다.

이렇게 하면 true나false가 반환 됩니다.

META TAG

meta 태그에는 name, content, http-equiv 3가지 속성이 있다.

 

<meta name="Subject" content=""> //홈페이지 주제
<meta name="Title" content=""> //제목
<meta name="Keywords" content=""> //키워드
<meta name="Description" content=""> //요약설명
<meta name="Author" content=""> //제작자
<meta name="Publisher" content=""> //제작사
<meta name="Other Agent" content=""> //웹책임자
<meta name="Claasification" content=""> //카테고리위치,분류
<meta name="Generator" content=""> //제작도구
<meta name="Reply-To" content=""> //메일주소
<meta name="Email" content=""> //메일주소
<meta name="Filename" content=""> //파일이름
<meta name="Author-Date" content=""> //제작일
<meta name="Date" content=""> //제작일
<meta name="Location" content=""> //위치
<meta name="Distribution" content=""> //배포자
<meta name="Copyright" content=""> //저작권
<meta name="Robots" content="ALL">
<meta name="Robots" content="index,follow"> //이 문서도 긁어가고 링크된 문서도 긁어감
<meta name="Robots" content="noindex,follow"> //이 문서는 긁어가지 말고 링크된 문서만 긁어감
<meta name="Robots" content="index,nofollow"> //이 문서는 긁어가고 링크는 무시함
<meta name="Robots" content="noindex,nofollow"> //이 문서도 긁지 않고 링크도 무시함

 

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> //웹문서 언어 설정
<meta http-equiv="Imagetoolbar" content="no"> //그림위에 마우스 오버시 이미지 관련 툴바 숨김
<meta http-equiv="Refresh" content="60"> //60초 마다 새로고침
<meta http-equiv="Refresh" ccontent="5;url=주소"gt; //주소로 5초후 이동
<meta http-equiv="Cash-Control" content="no-cache"> //캐쉬가 되지 않게
<meta http-equiv="Last-Modified" content="Mon,20 Jul 2008 19:30:30"> //최종 수정일
<meta http-equiv="Pragma" content="no-cache"> //캐쉬가 되지 않게
<meta http-equiv="Expires" content="Mon, 08 Sep 2003 10:10:10 GMT">"> //캐쉬 만료(파기)일


<meta http-equiv="Page-Enter" content="revealtrans(Duration=1,Transition=12)">

//페이지 들어갈때 트랜지션 효과(장면 전환 효과)
<meta http-equiv="Page-Exit" content="revealtrans(Duration=1,Transition=12)">

//페이지 나갈때 트랜지션 효과(장면 전환 효과)

 

장면 전환 효과 속성값
Box out : 네모난 박스가 안쪽에서 바깥쪽으로
Circle in : 원이 바깥에서 안쪽으로
Circle out : 원이 안쪽에서 바깥쪽으로
Wipe up : 이미지의 아래에서 위쪽으로 수직 이동
Wipe down : 이미지의 위에서 아래쪽으로 수직 이동
Wipe right : 이미지의 왼쪽에서 오른쪽으로 수평 이동
Wipe left : 이미지의 오른쪽에서 왼쪽으로 수평 이동
Vertical blinds : 수직 블라인드가 쳐지는 형태로 변환
Horizontal blinds : 수평 블라인드가 쳐지는 형태로 변환
Checkerboard across : 바둑판 형태의 격자가 왼쪽에서 오른쪽으로 생성
Checkerboard down : 바둑판 형태의 격자가 위에서 아래로 생성
Random dissove : 안개와 비슷한 형태로 변환
Split vertical in : 왼쪽과 오른쪽 끝에서 중앙으로 수직 이동
Split vertical out : 중앙에서 양쪽 끝으로 수직 이동
Split Horizontal in : 양쪽에서 중앙으로 수평 이동
Split Horizontal out : 중앙에서 양쪽끝으로 수직 이동
Strips left down : 대각선 형태로 오른쪽 상단에서 왼쪽 하단으로 이동
Strips left up : 대각선 형태로 오른쪽 하단에서 왼쪽 상단으로 이동
Strips right down : 대각선 형태로 왼쪽 상단에서 오른쪽 하단으로 이동
Strips right up : 대각선 형태로 왼쪽 하단에서 오른쪽 상단으로 이동
Random bars horizontal : 수평선이 무작위로 생성
Random bars vertical : 수직선이 무작위로 생성
Random : 임의로 생성

방통위 유해사이트 신고

처리기간은 최대 1달

해당 웹사이트의 포트번호를 변경하면 다시 신고를 해야....된다...--;

뭐냐..--; 일을 하자는 건지 말자는 건지..--;

포트번호를 몇만게씩 계속변경하면??

몇만개 데이터를 다 막을꺼냐??

 

하여튼..울나라 공무원들..하는짓하고는...--;

Excel 경과년수 산출

일반적인 경과년 구하는 수식은 다음과 같습니다.


=DATEDIF(
시작일셀, 종료일셀, “y”) & “ “ & DATEDIF(시작일셀, 종료일셀, “ym”) & “개월 “ & DATEDIF(시작일셀, 종료일셀, “md”) & “


시작일이 2000년 1월 1일 이고 현재일이 2006년 7월 29일 이니까 상단의 수식을 적용하면 결과는 이렇게 나옵니다.

결과를 나타내는 셀에는 "6년 7개월 20일" 이라고 깔끔하게 나옵니다.^^


그리고 근속년수의
합계가 필요한 경우 다음과 같은 수식을 사용하시면 됩니다.


=DATEDIF(0, SUM(
종료일범위-시작일범위), “y”) &“ “ & DATEDIF(0, SUM(종료일범위-시작일범위), “ym”) & “개월 “ & DATEDIF(0, SUM(종료일범위-시작일범위), “md”) & “

범위를 연산하므로 배열수식입니다. 입력할 , Ctrl+Shift+Enter 키를 입력.

배열수식으로
입력하기 싫으면 SUM 함수를 SUMPRODUCT 함수로 대체적용 하시 됩니다.

경과년수의 평균은 위의 SUM 함수를 AVERAGE 함수로 대체하면 됩니다.

역시 배열수식이므로 Ctrl+Shift+Enter 키로 수식을 입력해 줘야 합니다.

우편물 주소이전

www.epost.go.kr 주소이전신고 신청하면 3개월 동안 예전주소 우편물을 모두 바뀐주소록 보내줌...

팀장이 팀원에게 제시하는 44가지 핵심요소

팀장이 팀원에게 제시하는 44가지 핵심요소


1단계 명확한 비전과 목표를 제시하라
 01 사명과 비전, 가치척도를 명확히 제시하라
 02 전략 및 목표, 사업에 대한 결의를 다져라
 03 광범위한 목표를 세분화하라
 04 처음부터 목표를 구체적으로 설정하라
 05 목표의 기준점을 구체적으로 제시하라
 06 실천 가능한 목표를 제시하라
 07 현실적인 목표로 동기부여를 하라
 08 목표에 대한 스케줄을 체계적으로 짜라

 

2단계 휘파람 불며 일하도록 동기를 부여하라
 09 당장 할 수 있는 일과 할 수 없는 일을 구별하라
 10 개개인의 능력에 맞춰 역할을 분담하라
 11 자율권을 줌으로써 책임감을 부여하라
 12 매우 가치 있는 일을 한다는 인식을 심어줘라
 13 격려는 팀원들의 사기를 북돋아준다
 14 팀원들에 대한 불신은 악영향을 미친다
 15 팀원들과 목표에 대해 허심탄회하게 토론하라
 16 목표 달성시 주어지는 혜택에 대해 알려줘라
 17 목표를 자발적으로 수용할 수 있도록 도와줘라
 18 최선을 다하는 것과 책임감을 갖는 것은 다르다
 19 팀원들 스스로 수행 평가도를 작성하게 하라

 

3단계 현실적이고도 공정한 심사 기준을 만들어라
 20 수행 평가에 쏟는 시간을 최소화하라
 21 공정한 심사 기준으로 팀원들을 평가하라
 22 심사 기준을 너무 복잡하게 만들지 마라
 23 중간 점검을 통해 실수를 최소화하라
 24 평가 기준을 최대한 신뢰하라
 25 목표에 대한 예상치와 실제 결과를 대조하라
 26 팀원들의 수행도가 회사에 미치는 영향을 알려줘라


4단계 사실에 근거해 객관적으로 평가하라
 27 평가는 일을 긍정적으로 이끌어가기 위한 수단이다
 28 사실에 근거해 객관적으로 평가하라
 29 문제 행동에 대해 구체적으로 지적하라
 30 평가 결과를 알려줌으로써 팀원들을 자극하라
 31 평가 결과를 알려줄 때도 타이밍이 중요하다
 32 단순 지적 차원에서의 평가는 금물이다
 33 평가 후 팀원들과 대화를 나눠라
 34 명령보다 제시가 훨씬 효과적이다


5단계 현명한 피드백으로 리더십의 기본을 다져라
 35 징계 그 자체보다는 일의 결과를 예측하라
 36 경고하면서 미안해하거나 사과하지 마라
 37 공식적인 입장을 통해 문제를 해결하라
 38 경고를 할 때는 직설적으로 하라
 39 팀원들을 대신해 문제를 해결해주지 마라
 40 팀원이 변명하더라도 일단 공감한 후에 지적하라
 41 필요 이상 돕는 건 팀원에게 독이 된다
 42 회의를 통해 일의 진행 상황을 수시로 점검하라
 43 회의에 나왔던 사안들은 반드시 서류화하라
 44 팀원들 앞에서 책임감 있는 모습을 보여라

성공하는 사람들의 일과 인생에 대한 11가지 기술

성공하는 사람들의 일과 인생에 대한 11가지 기술


저자 : John Maxwell


발행 : Warner Books (2003 . 4)

 

 

[MAIN IDEA]


더 좋은 방향으로 삶을 변화시키기 위해서는 좀더 효율적으로 생각하는 방법을 배울 필요가 있다. 효율적으로 생각하는 습관을 가질 수 있다면 삶을 근본적으로 바꿀 수 있다. 어떤 사람은 인생에서 성공을 거두는 반면 다른 사람들은 그렇지 못한 이유도 바로 여기에 있다. 즉 성공하는 사람들은 그렇지 못한 사람들과 완전히 다른 방식으로 생각한다. 그러므로 현재 내가 성공적이든 아니든 관계없이 긍정적으로 생각하는 습관을 가지고 이를 계속 실행에 옮길 수만 있다면 내가 종사하는 분야에서 얼마든지 최고가 될 수 있다.


좋은 사고습관은 성공하는 사람과 그렇지 못한 사람을 구분하는 가장 큰 특징이다. 성공하는 사람은 자신이 생각하는 바와 성취할 수 있는 것 사이의 관계를 뚜렷이 이해할 줄 안다. 자신이 생각하는 것을 조절하고 방향을 설정함으로써 성취하고자 하는 것까지도 조절할 수 있게 된다.

 

 

성공하는 사람들의 11가지 사고 기술


 

1. 언제나 큰 그림을 생각한다.


큰 그림을 볼 줄 아는 사람들은 당장 눈앞의 필요와 감정에 사로잡히는 일이 없이 세상을 위로부터 조망하는 능력을 갖고 있다. 이는 어떤 상황에서든 열린 마음을 갖고 새로운 아이디어와 가능성을 받아들일 마음의 준비가 돼 있음을 의미하는 것이다.


 

2. 생각에 초점을 가져야 한다.


생각에 초점을 잘 맞추는 사람들은 중요한 이슈에만 전념하고 그밖에 다른 사소한 일들은 모두 무시할 줄 안다. 이들은 자신들의 강점과 목표를 분명히 이해하므로 그로부터 거리가 있거나 우선순위가 낮은 일들 때문에 주어진 목표를 실행하지 못하는 일이 드물다.

 

 

3. 창조적으로 생각한다.

 

창조적으로 생각할 줄 아는 사람은 언제나 남들과는 다르게 생각하고 새로운 것을 받아들이는 데 주저하지 않는다. 창조성이란 리스크를 받아들이고 새로운 아이디어를 끊임없이 찾는 마음의 준비를 갖추고 있는 것을 의미한다.


 

4. 사고과정에 있어 현실성을 잃지 않는다.


창조적이고도 낙관적으로 생각하는 능력을 키우려면 사고에 있어 언제나 현실성을 잃지 않도록 해야 한다. 이를 꾸준히 하지 못한다면 결코 문제 해결을 한다거나 과거의 실수로부터 교훈을 얻지 못할 것이다.

 

 

5. 전략적 사고를 한다. 
 

행동에 본격적으로 착수하기 전에 잠시 멈추고 전략적 사고를 시도해본다. 무엇을 먼저 해야 할지에 대해 생각하여 내가 기울이는 노력이 비생산적인 활동으로 낭비될 수 있는 가능성을 줄일 수 있다.


 

6. 가능성을 염두에 둔다.


가능성을 염두에 둔 사고란 현재 가능하지 않은 일이나 과거에 한 번도 시도되지 않았던 일에 대해서 생각하는 것을 의미한다. 이러한 종류의 사고를 함으로써 광범위한 옵션과 아이디어를 가능성의 영역으로 끌어들일 수 있다.

 

 

7. 과거 회귀형 사고를 시도한다.

 

과거 회귀형 사고란 내가 하는 일을 깊이 생각하고 이를 평가해보는 태도를 말한다. 이런 사고 태도는 요리로 비유하면 생각이 완전히 익을 때까지 푹 익히는 찜통 같은 역할을 한다.


 

8. 항상 지배적인 사고 방식에 의문을 제기한다.


일반적으로 받아들여지는 상식과 역행하는 것은 때로 상당한 자신감을 요하는 일이다. 그러나 그에 따른 보상은 엄청나게 클 수 있다. 내가 무슨 일을 할 때 단순히 남들이 하기 때문에 하고 있는 것이라면 잠시 멈춰 서서 내가 뭘 하고 있는지를 자문해 볼 필요가 있다.

 

 

9. 다른 사람들의 의견을 적극 받아들인다.
 

효과적 사고를 하는 사람들은 진정으로 도움이 될만한 아이디어를 내는 사람들을 귀중하게 여길 줄 안다. 성공의 가능성을 높이기 위해 다른 사람들의 아이디어를 내 생각에 적극 반영한다. 이는 내 생각을 더 다듬을 수 있을 뿐 아니라 더 나은 결과를 얻는 데도 도움이 된다.


 

10. 팀워크를 통한 사고과정을 시도해본다.


협력을 통한 사고란 이타적인 사고를 말한다. 협력적 사고는 내 자신의 문제에만 치중하지 않고 외향적 사고를 지향한다.

 

 

11. 분명한 목적의식을 갖는 사고를 한다.

 

목적의식을 갖는 사고는 반드시 돈과 관련된 것만은 아니다. 이는 내가 속한 조직의 목표를 생각하고 내가 지금 약속한 바를 제대로 이행하고 있는가를 평가하는 것을 의미한다. 이것이 진정한 목적의식을 갖는 사고이다.

 

Windows Server 2003 Standard, Enterprice 차이점

Windows Server 2003 R2 Standard 및 Enterprise KN Edition은 선택적 구성 요소인 Windows Media Services를 포함하지 않으며 그 밖의 기능은 Windows Server 2003 R2 Standard 및 Enterprise Edition과 동일합니다. 이러한 버전은 지사 서버 관리를 단순화하고, ID 및 액세스 관리를 개선하고, 저장소 관리 비용을 줄이며, 기능이 풍부한 웹 플랫폼을 제공하는 Windows Server 2003 R2 최신 업데이트에 기반합니다. KN 버전은 32비트 플랫폼 하드웨어용으로만 제공됩니다.

Windows Server 2003 R2 Standard 및 Enterprise KN Edition과 Windows Server 2003 R2 Standard 및 Enterprise Edition의 기능에 대한 자세한 내용을 보려면 Windows Server 페이지를 방문하십시오.
http://www.microsoft.com/korea/windowsserver2003/r2/whatsnewinr2.mspx.

Windows Server 2003 R2 Standard 및 Enterprise KN Edition과 Windows Server 2003 R2 Standard 및 Enterprise Editions의 차이점

Windows Server 2003 R2 Standard 및 Enterprise KN Edition은 선택적 구성 요소인 Windows Media Services를 포함하지 않으며 그 밖의 기능은 Windows Server 2003 Standard 및 Enterprise Edition과 동일합니다.
기타 자주 제기되는 질문 사항도 이 페이지에서 볼 수 있습니다.

다음과 같은 기능을 사용하려면 Microsoft 또는 타사의 미디어 서버 소프트웨어를 설치해야 합니다.

기업 인트라넷과 인터넷을 통해 오디오 및 비디오 스트리밍 제공

유니캐스트 및 서버 쪽 재생 목록과 같은 기본 스트리밍 기능 제공

멀티캐스트 및 무선 네트워크 지원과 같은 고급 스트리밍 기능 제공

Windows Media Services의 모든 기능을 알아보려면 다음 사이트를 방문하십시오.
http://www.microsoft.com/korea/windowsserver2003/techinfo/overview/wms.mspx.

컴퓨터 제조업체에서 Windows Server 2003 R2 Standard 및 Enterprise KN Edition을 실행하는 시스템에 타사 미디어 서버를 미리 설치할 수 있습니다. 이와 별도로 고객이 Microsoft 또는 타사의 미디어 서버 소프트웨어를 개별적으로 설치할 수도 있습니다.

불필요한 Windows 서비스 삭제

서비스 관리자에서 표시된 서비스명을 복사

명령어 프롬프트에서 아래와 같이 입력

C:\> sc delete "Apache2"

대형 포털 사이트에서 메일 반송 되는 경우

메일이 전체적으로 모두 발송이 안되는 것이 아니라
몇몇 포털 사이트에서는 반송 되고, 몇몇 사이트에서는 정상적으로 발송 되는 경우가 있다.
대부분 로그를 보면 spamhaus 등과 같이 스팸 리스트에 등록되어 있거나
어떠한 사유로 인해 해당 사이트에서 스팸으로 간주되는 경우가 대부분이다.

일단 기본적으로 네이버, 다음, 네이트, 엠파스, 야후 에서는 아래의 세가지 설정이 필요하고
hotmail 의 경우 4번 내용이 추가적으로 하나 더 필요하다.


1) SPF 레코드 확인
[root@localhost ~]# nslookup
> set type=txt
> pandora.pe.kr
Server:         168.126.63.1
Address:        168.126.63.1#53

Non-authoritative answer:
*** Can't find pandora.pe.kr: No answer

Authoritative answers can be found from:
pandora.pe.kr
        origin = ns.pandora.pe.kr
        mail addr = root.pandora.pe.kr
        serial = 2008011610
        refresh = 10800
        retry = 900
        expire = 604800
        minimum = 86400

위의 경우는 SPF 레코드가 설정되어 있지 않은 경우로, 해당 DNS 에 설정해주어야 한다.
아래와 같이 질의 되어야 정상적으로 설정되었다고 볼 수 있다.

[root@localhost ~]# nslookup
> set type=txt
> pandora.pe.kr
Server:         168.126.63.1
Address:        168.126.63.1#53

pandora.pe.kr   text = "v=spf1 ip4:222.122.45.137 ~all"


2) 리버스도메인 등록
리버스 도메인은 자체 네임서버에 셋팅한다고 되는 것이 아니다.
보통 아이피를 관리하는 ISP 업체에 요청을 해야 한다.

3) 화이트도메인 등록
위의 내용들이 설정 되고 나면
https://www.kisarbl.or.kr/ 사이트에 접속해서
화이트 도메인 등록을 해야 한다.

4) hotmail senderid 등록