728x90

MS Word 작업을 하면서 그림이나 테이블 같은 것들을 Copy, Paste, Delete 를 반복적으로 수행하다 보면 실제 내용에 비해 용량이 터무니없이 커지는 경우가 있다.

이런경우 MS Word의 rtf 파일 포맷을 이용해서 해결할 수 있다.

방법은 다음과 같다.


1. 용량이 커져버린 doc 파일을 word 에서 연다.

2. 파일 -> 다른 이름으로 저장 -> 파일 형식을 '서식 있는 텍스트 (*.rtf)' 로 설정하여 저장 한다.

이때, '문서 버전이 손실됩니다.' 라는 경고 메세지가 뜨는데 무시하고 '계속' 을 누르면 된다.

3. rtf 로 저장 된 문서를 다시, 파일 -> 다른 이름으로 저장 -> doc 문서 로 저장한다.

이때, 파일명은 기존 문서와 다른 이름으로 저장 해야 한다.
ex) 문서1.doc -> 문서1.rtf -> 문서2.doc

난 이 방법으로..

10 MB의 doc 파일이 -> 2MB 의 rtf 파일로 줄어들더니 -> 480 kb 의 doc로 줄어드는 기적을 보았다.


출처 : http://mihirknows.blogspot.com/2009/04/unexpected-file-size-increase-in.html

728x90
728x90

 

팝업창 스크롤바 자동 생성

<html>
<head>
  <title></title>
  <script type='text/javascript'>
    window.onload = function(){
     if((parseInt(document.getElementById('body').offsetHeight)
        - parseInt(window.document.body.clientHeight)) > 20) {
        window.document.body.scroll = "auto";
        window.resizeBy(18,0);
      }
    }
  </script>
</head>
<body>
  <div id='body'>
    팝업 내용
  </div>
</body>
</html>

부모창에서 팝업창을 띄울시 스크롤바 옵션 scrollbars=no 일때 팝업창의 내용이 길어질 경우 스크롤바롤 생성해주는 스크립트이다.

참고로, 이 스크립트는 세로길이에 대한 스크롤바만 생성하도록 한 것이다.

페이지가 로드되면 div 의 세로 길이와 창의 크기를 측정하여 20px 이상일 경우 스크롤바를 생성 이때 가로 길이 18px(스크롤바 사이즈)을 넓여 준다.

 

728x90
728x90

익스플로러 5.5 이후 부터는 스크립트로 server1.abc.com 과 live.abc.com 간의 상호 도메인이 다른 프레임이나 윈도우의 document에 관련된 작업을 시도하면 보안에러가 발생한다.

Cross-site Scripting 에 대한 MS의 말.. How Cross-site Scripting Attacks Work

파이어폭스 같은 경우에는 스크립트(Signed scripts)에서 브라우져자체에 포함(?)된 클래스(netscape.security.PrivilegeManager)를 호출하여 이를 해결할 수 있다고 한다.

Signed Scripts 에 대한 Mozilla의 말.. Signed Scripts in Mozilla

그럼에도 불구하고 다른 도메인에 대한 opener 나 parent 접근이 필요할 경우에는 JavaScript 를 통해 document.domain 을 설정해 주면된다.

<script language="javascript">
    document.domain = "공통도메인명";
</script>

상호 연결 시켜야 하는 웹 페이지에 자신들의 공통된 도메인을 지정해 주면 컨트롤이 가능해진다.

만약, server1.abc.com의 open.htm이 window.open 으로 live.abc.com을 호출하고 live.abc.com 의 child.htm이 opener 로 server1.abc.com 을 접근해야 한다면, 다음 스크립트를 두 페이지에 정의해 주면 되고, 스크립트는 페이지 어디에 위치해 있든지 특별히 상관은 없다.

<script language="javascript">
    document.domain = "abc.com";
</script>

※ 주의, 도메인 명을 잘못 입력한 경우에는 "잘못된 인수입니다." 라는 JavaScript 오류가 발생한다.

cross frame scripting 을 해결하는 다른 방법으로는 HTA가 있다.

html페이지가 아닌 hta(html application)페이지를 만들어야 한다.

 

※ 다음은 HTA에서 javascript로 iframe의 document를 참조한 예

(확장자를 hta로 저장하시고 브라우저로 실행)

<html>
    <head>
        <title>hta cross scripting</title>
        <script>
            function window.onload(){
                alert(myframe.document);
            }
        </script>
    </head>
    <body scroll="no">
        <iframe id="myframe" src="http://kin.naver.com/"></iframe>
    </body>
</html>

 

다음에, 예를 하나 들면..

kin.naver.com을 iframe에 넣고 검색어에 "스크립트"라는 단어를 넣은 후 검색버튼을 누르게 한 HTA소스이다.

<html>
    <head>
        <title>hta cross scripting</title>
        <script>
            function window.onload(){
                myframe.document.search.query.value="스크립트";
                myframe.check_query();
            }
        </script>
    </head>
    <body scroll="no">
        <iframe id="myframe" src="http://kin.naver.com/" width="100%" height="100%"></iframe>
    </body>
</html>
728x90
728x90

엔터프라이즈 관리자의 master 데이터베이스의 저장 프로시저 및 확장 저장 프로시저 폴더에서 ‘sp_’ 또는 ‘xp_’로 시작되는 수많은 시스템 저장 프로시저들을 확인할 수 있다. 시스템 저장 프로시저들은 다음과 같이 분류할 수 있다(분류명 뒤에 ‘프로시저’가 생략되어 있음).
∙ Active Directory, 카탈로그, 커서, 데이터베이스 유지 관리 계획, 분산 쿼리, 전체 텍스트 검색, 로그 전달, OLE 자동화, 복제, 보안, SQL 메일, SQL 프로필러, SQL Server 에이전트, 시스템, 웹 길잡이, XML, 일반 확장
이 중에서 가장 많이 사용하는 것이 시스템 프로시저(끝에서 네 번째)다. 이 시스템 프로시저들을 많이 알아두면 데이터베이스 구축, 시스템 관리 및 운영에 큰 도움이 된다.
지금부터 중요한 시스템 프로시저들의 구문과 간단한 설명 및 예제를 알아보기로 한다. 자세한 사항은 SQL 서버 온라인 설명서를 참고하기 바란다.


■ sp_addextendedproc

새 확장 저장 프로시저의 이름을 등록한다. 구문은 다음과 같다.

sp_addextendedproc [ @functname = ] 'procedure' , [ @dllname = ] 'dll'

다음은 xp_hello 확장 저장 프로시저를 추가하는 예제다.

USE master
EXEC sp_addextendedproc xp_hello, 'xp_hello.dll'


■ sp_addmessage

sysmessages 테이블에 새 오류 메시지를 추가한다. 구문은 다음과 같다.

sp_addmessage [ @msgnum =] msg_id , [ @severity = ] severity , [ @msgtext = ] 'msg'
  [, [@lang = ] 'language' ] [, [@with_log=] 'with_log'] [, [@replace = ] 'replace']

다음은 영어(미국)로 된 메시지를 먼저 추가한 다음, 동일한 메시지를 한국어로 추가하는 예제다.

USE master
exec sp_addmessage 50002, 16, '%d rows are in table %s', us_english, 'true', replace
exec sp_addmessage 50002, 16, '%2!의 행 개수는 %1!다.', default, 'true', replace


■ sp_addtype

사용자 정의 데이터 형식을 작성한다. 구문은 다음과 같다.

sp_addtype [ @typename = ] type,
     [ @phystype = ] system_data_type
     [ , [ @nulltype = ] 'null_type' ]
     [ , [ @owner = ] 'owner_name' ]

다음은 SQL 서버가 제공하는 varchar 데이터 형식에 기반을 둔 ssn(사회 보장 번호)이라는 사용자 정의 데이터 형식을 작성하는 예제다. ssn 데이터 형식은 11 자리수인 사회 보장 번호(999-99-9999)를 가지는 열에 사용된다. 이 열은 NULL이 될 수 없다. varchar(11)은 문장 부호(괄호)를 포함하고 있으므로 앞뒤로 작은 따옴표를 사용해야 한다.

USE master
EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'


■ sp_addumpdevice

SQL 서버에 백업 장치를 추가한다. 구문은 다음과 같다.

sp_addumpdevice [ @devtype = ] 'device_type' ,
     [ @logicalname = ] 'logical_name' ,
     [ @physicalname = ] 'physical_name'
     [ , { [ @cntrltype = ] controller_type
             | [ @devstatus = ] 'device_status'
        }
    ]

다음은 C:\Dump\Dump1.bak이라는 물리적 이름으로 MYDISKDUMP라는 디스크 백업 장치를 추가하는 예제다.

USE master
EXEC sp_addumpdevice 'disk', 'mydiskdump', 'c:\dump\dump1.bak'


■ sp_attach_db

서버에 데이터베이스를 첨부한다. 구문은 다음과 같다.

sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ]

다음은 현재 서버에 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'


■ sp_bindefault

열 또는 사용자 정의 데이터 형식에 기본값을 바인딩한다. 구문은 다음과 같다.

sp_bindefault [ @defname = ] 'default' ,
     [ @objname = ] 'object_name'
     [ , [ @futureonly = ] 'futureonly_flag' ]

today라는 기본값이 CREATE DEFAULT 문에 의해 현재 데이터베이스에 정의되었다고 가정할 때, 이 예제는 기본값을 employees 테이블의 [hire date] 열에 바인딩한다. employees 테이블에 행이 추가되고, [hire date] 열의 데이터가 제공되지 않을 때마다 열은 today라는 기본값을 사용하게 된다.

USE master
EXEC sp_bindefault 'today', 'employees.[hire date]'


■ sp_bindrule

열 또는 사용자 정의 데이터 형식에 규칙을 바인딩한다. 구문은 다음과 같다.

sp_bindrule [ @rulename = ] 'rule' ,
     [ @objname = ] 'object_name'
     [ , [ @futureonly = ] 'futureonly_flag' ]

CREATE RULE 문에 의해 현재 데이터베이스에 today라는 규칙이 작성되었다고 가정할 때, 다음은 employees 테이블의 [hire date] 열에 이 규칙을 바인딩하는 예제다. employees에 행이 추가되는 경우, [hire date] 열에 관한 데이터가 today 규칙에 맞는지 확인한다.

USE master
EXEC sp_bindrule 'today', 'employees.[hire date]'


■ sp_bindsession

같은 SQL 서버의 인스턴스에 있는 다른 트랜잭션으로의 연결을 바인딩하거나 바인딩을 해제한다. 바운딩된 연결은 ROLLBACK TRANSACTION 또는 COMMIT TRANSACTION이 발급될 때까지 두 개 이상의 연결이 같은 트랜잭션에 참가하도록 하고 트랜잭션을 공유한다. 구문은 다음과 같다.

sp_bindsession { 'bind_token' | NULL }

다음은 지정된 바인딩 토큰을 현재 세션에 바인딩하는 예제다. 참고로, 다음 예의 바인딩 토큰은 sp_bindsession을 실행하기 전에 sp_getbindtoken을 실행하여 가져왔다.

USE master
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ'


■ sp_configure

현재 서버에 대한 전역 구성 설정을 표시하거나 변경한다. 구문은 다음과 같다.

sp_configure [ [ @configname = ] 'name' ] [ , [ @configvalue = ] 'value' ]

다음은 모든 구성 옵션을 설정하고 나열하는 방법을 보여 주는 예제다. 고급 구성 옵션은 먼저 show advanced option을 1로 설정함으로써 표시된다. 이렇게 변경한 다음 매개 변수 없이 sp_configure를 실행하면 모든 구성 옵션이 표시된다.

USE master
EXEC sp_configure 'show advanced option', '1'


■ sp_create_removable

이동식 미디어 데이터베이스를 작성한다. 세 개 이상(시스템 카탈로그 테이블용으로 하나, 트랜잭션 로그용으로 하나 및 데이터 테이블용으로 하나 이상)의 파일을 작성하고 이러한 파일에 데이터베이스를 놓는다. 구문은 다음과 같다.

sp_create_removable [ @dbname = ] 'dbname'
     , [ @syslogical = ] 'syslogical'
     , [ @sysphysical = ] 'sysphysical'
     , [ @syssize = ] syssize
     , [ @loglogical = ] 'loglogical'
     , [ @logphysical = ] 'logphysical'
     , [ @logsize = ] logsize
     , [ @datalogical1 = ] 'datalogical1'
     , [ @dataphysical1 = ] 'dataphysical1'
     , [ @datasize1 = ] datasize1
     ...
     , [ @datalogical16 = ] 'datalogical16'
     , [ @dataphysical16 = ] 'dataphysical16'
     , [ @datasize16 = ] datasize16 ]

다음은 데이터베이스 inventory를 이동식 데이터베이스로 만드는 것을 보여 주는 예제다.

sp_create_removable 'inventory',
   'invsys', 'c:\Program Files\Microsoft SQLServer\MSSQL\Data\invsys.mdf', 2,
   'invlog', 'c:\Program Files\Microsoft SQLServer\MSSQL\Data\invlog.ldf', 4,
   'invdata', 'c:\Program Files\Microsoft SQLServer\MSSQL\Data\invdata.ndf', 10


■ sp_dboption

데이터베이스 옵션을 표시하거나 변경한다(master 또는 tempdb 데이터베이스에서는 sp_dboption을 사용하지 말것). sp_dboption은 이전 버전과의 호환성 용도로 지원된다. 데이터베이스 옵션을 설정하려면 ALTER DATABASE를 사용한다. 구문은 다음과 같다.

sp_dboption [ [ @dbname = ] 'database' ]
     [ , [ @optname = ] 'option_name' ]
     [ , [ @optvalue = ] 'value' ]

다음은 pubs 데이터베이스를 읽기 전용으로 설정하는 예제다.

USE master
EXEC sp_dboption 'pubs', 'read only', 'TRUE'


■ sp_depends
데이터베이스 개체 종속 관계에 관한 정보(예를 들어, 테이블 또는 뷰에 종속된 뷰 및 프로시저, 뷰 및 프로시저에 종속된 테이블 또는 뷰)를 표시한다. 현재 데이터베이스 외부의 개체에 대한 참조는 보고하지 않는다. 구문은 다음과 같다.

sp_depends [ @objname = ] 'object'

다음은 Customers 테이블에 종속된 데이터베이스 개체를 나열하는 예제다.

USE Northwind
EXEC sp_depends 'Customers'


■ sp_detach_db
서버에서 데이터베이스를 분리하며, 분리하기 전에 선택적으로 모든 테이블에서 UPDATE STATISTICS를 실행한다. 구문은 다음과 같다.

sp_detach_db [ @dbname = ] 'dbname' [ , [ @skipchecks = ] 'skipchecks' ]

다음은 skipchecks를 true로 설정하여 pubs 데이터베이스를 분리하는 예제다.

EXEC sp_detach_db 'pubs', 'true'


■ sp_dropmessage
sysmessages 시스템 테이블에서 지정된 오류 메시지를 삭제한다. 구문은 다음과 같다.

sp_dropmessage [ @msgnum = ] message_number [ , [ @lang = ] 'language' ]

다음은 sysmessages에서 번호가 50001인 메시지를 삭제하는 예제다.

USE master
EXEC sp_dropmessage 50001


■ sp_droptype
systypes에서 사용자 정의 데이터 형식을 삭제한다. 구문은 다음과 같다.

sp_droptype [ @typename = ] 'type'

다음은 사용자 정의 데이터 형식인 birthday를 삭제하는 예제다. 참고로, 이 사용자 정의 데이터 형식은 반드시 이미 존재해야 하며 그렇지 않은 경우에는 오류 메시지가 반환된다.

USE master
EXEC sp_droptype 'birthday'


■ sp_executesql

여러 번 사용할 수 있거나, 동적으로 만들어진 T-SQL문 또는 일괄 처리를 실행한다. T-SQL문 또는 일괄 처리는 포함 매개 변수를 포함할 수 있다. 구문은 다음과 같다.

sp_executesql [@stmt =] stmt
[
     {, [@params =] N'@parameter_name  data_type [,...n]' }
     {, [@param1 =] 'value1' [,...n] }
]

다음은 @level이라는 포함 매개 변수를 포함한 단순 SELECT 문을 작성하고 실행하는 예제다.

execute sp_executesql
          N'select * from pubs.dbo.employee where job_lvl = @level',
          N'@level tinyint',
          @level = 35


■ sp_getbindtoken

트랜잭션에 대한 고유한 식별자를 반환한다. 이 고유한 식별자는 바인드 토큰에 참조된다. sp_getbindtoken은 클라이언트 간에 트랜잭션을 공유하는 데 사용하는 문자열 표시를 반환한다. 구문은 다음과 같다.

sp_getbindtoken [@out_token =] 'return_value' OUTPUT [, @for_xp_flag]

다음은 바인드 토큰을 가져와서 바인드 토큰의 이름을 표시하는 예제다.

DECLARE @bind_token varchar(255)
BEGIN TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT
SELECT @bind_token AS Token


■ sp_help
데이터베이스 개체(sysobjects 테이블에 나열된 모든 개체), 사용자 정의 데이터 형식 또는 SQL 서버가 공급하는 데이터 형식에 관한 정보를 보고한다. 구문은 다음과 같다.

sp_help [ [ @objname = ] name ]

다음은 sysobjects의 각 개체에 관한 정보를 나열하는 예제다.

USE master
EXEC sp_help

다음은 publishers 테이블에 관한 정보를 표시하는 예제다..

USE pubs
EXEC sp_help publishers


■ sp_helpconstraint
모든 제약 조건 유형, 사용자 정의되었거나 시스템에서 제공하는 이름, 제약 조건 유형을 정의한 열 및 제약 조건을 정의하는 표현식(DEFAULT 및 CHECK 제약 조건에만 적용)의 목록을 보고한다. 구문은 다음과 같다.

sp_helpconstraint [ @objname = ] 'table' [ , [ @nomsg = ] 'no_message' ]

다음은 authors 테이블에 관한 모든 제약 조건을 보여 주는 예제다.

USE pubs
EXEC sp_helpconstraint authors


■ sp_helpdb
지정된 데이터베이스 또는 모든 데이터베이스에 관한 정보를 보고한다. 구문은 다음과 같다.

sp_helpdb [ [ @dbname= ] 'name' ]

다음은 pubs 데이터베이스에 관한 정보를 표시하는 예제다.

exec sp_helpdb pubs

다음은 SQL 서버를 실행하고 있는 서버의 모든 데이터베이스에 관한 정보를 표시하는 예제다.

exec sp_helpdb


■ sp_helpdevice
SQL 서버 데이터베이스 파일에 관한 정보를 보고한다. sp_helpdevice는 데이터베이스 파일의 장치 용어로 사용되는 SQL Server의 이전 버전과의 호환성 용도로 사용된다. 구문은 다음과 같다.

sp_helpdevice [ [ @devname= ] 'name' ]

다음은 SQL Server의 모든 데이터베이스 장치 및 덤프 장치에 관한 정보를 보고하는 예제다.

sp_helpdevice


■ sp_helpextendedproc

현재 정의되어 있는 확장 저장 프로시저 및 프로시저(함수)가 속한 동적 연결 라이브러리의 이름을 표시한다. 구문은 다음과 같다.

sp_helpextendedproc [ [@funcname = ] 'procedure' ]

다음은 모든 확장 저장 프로시저에 관해 보고하는 예제다.

USE master
EXEC sp_helpextendedproc

다음은 xp_cmdshell 확장 저장 프로시저에 관해 보고하는 예제다.

USE master
EXEC sp_helpextendedproc xp_cmdshell


■ sp_helpfile

현재 데이터베이스와 연관된 파일의 물리적 이름 및 특성을 반환한다. 서버에 첨부하거나 서버에서 분리할 파일의 이름을 결정하는데 이 저장 프로시저를 사용한다. 구문은 다음과 같다.

sp_helpfile [ [ @filename = ] 'name' ]

다음은 pubs에 있는 파일에 관한 정보를 반환하는 예제다.

USE pubs
EXEC sp_helpfile


■ sp_helpindex

테이블 또는 뷰의 인덱스에 관한 정보를 보고한다. 구문은 다음과 같다.

sp_helpindex [ @objname = ] 'name'

다음은 sysobjects 테이블에 관한 인덱스의 유형을 보고하는 예제다.

sp_helpindex sysobjects


■ sp_helplanguage

특정한 대체 언어 또는 모든 언어에 관한 정보를 보고한다. 구문은 다음과 같다.

sp_helplanguage [ [ @language = ] 'language' ]

다음은 대체 언어인 한국어에 관한 정보를 표시하는 예제다.

sp_helplanguage korean

다음은 설치된 모든 대체 언어에 관한 정보를 표시하는 예제다.

sp_helplanguage


■ sp_helpserver
특정 원격 또는 복제 서버나 두 유형의 서버 모두에 관한 정보를 보고한다. 연결된 서버에 쿼리 작업을 하거나 접속하기 위해 서버 이름, 서버의 네트워크 이름, 서버의 복제 상태, 서버의 ID번호, 정렬 이름 및 시간 초과 값을 제공한다. 구문은 다음과 같다.

sp_helpserver [ [ @server = ] 'server' ] [ , [ @optname = ] 'option' ]
     [ , [ @show_topology = ] 'show_topology' ]

다음은 모든 서버(매개 변수 없이 sp_helpserver)에 관한 정보를 표시하는 예제다.

USE master
EXEC sp_helpserver

다음은 SEATTLE2라는 서버에 관한 모든 정보를 표시하는 예제다.

USE master
EXEC sp_helpserver 'SEATTLE2'


■ sp_helpsort

Microsoft SQL Server 정렬 순서 및 문자 집합을 표시한다.
다음은 서버의 기본 정렬 순서, 문자 집합 및 주 정렬 값의 표를 표시하는 예제다.

sp_helpsort


■ sp_helpstats

지정된 테이블의 열과 인덱스에 관한 통계 정보를 반환한다. 구문은 다음과 같다.

sp_helpstats[ @objname = ] 'object_name' [ , [ @results = ] 'value' ]

다음은 Northwind 데이터베이스에 있는 모든 사용자 테이블에 대해 적절한 모든 열에 관한 단일 열 통계를 작성한 후, Customers 테이블에서 만들어진 모든 통계 결과를 보는 예제다.

use Northwind
exec sp_createstats
exec sp_helpstats 'Customers', 'ALL'


■ sp_helptext

규칙, 기본값 또는 암호화되지 않은 저장 프로시저, 사용자 정의 함수, 트리거 또는 뷰의 텍스트를 인쇄한다. 구문은 다음과 같다.

sp_helptext [ @objname = ] 'name'

다음은 pubs 데이터베이스에 있는 employee_insupd 트리거의 텍스트를 표시하는 예제다.

USE pubs
EXEC sp_helptext 'employee_insupd'


■ sp_helptrigger

현재 데이터베이스의 지정된 테이블에서 정의된 트리거의 유형을 반환한다. 구문은 다음과 같다.

sp_helptrigger [ @tabname = ] 'table' [ , [ @triggertype = ] 'type' ]

다음은 책 판매량이 10이 되면 오류 50010을 발생시키는 sales_warn이라는 트리거를 작성한 다음, sp_helptrigger가 실행되어 sales 테이블에 있는 트리거에 관한 정보를 작성하는 예제다.

USE pubs
GO
CREATE TRIGGER sales_warn
  ON sales
  FOR INSERT, UPDATE
AS
  RAISERROR (50010, 16, 10)
GO
EXEC sp_helptrigger sales

실행결과

trigger_name  trigger_owner  isupdate  isdelete  isinsert  isafter  isinsteadof
------------- -------------- --------- --------- --------- -------- ------------
sales_warn    dbo            1         0         1         1        0


■ sp_lock

잠금 관련 정보를 보고한다. 구문은 다음과 같다.

sp_lock [[@spid1 =] 'spid1'] [,[@spid2 =] 'spid2']

다음은 현재 SQL Server에서 보유하고 있는 잠금에 관한 모든 정보를 표시하는 예제다.

USE master
EXEC sp_lock

다음은 프로세스 ID 53에 대해 잠금을 포함한 정보를 표시하는 예제다 .

USE master
EXEC sp_lock 53


■ sp_monitor
SQL 서버에 대한 통계를 표시한다. 구문은 다음과 같다.

sp_monitor

결과 집합은 다음과 같은 열을 포함한다.
last_run, current_run, seconds, cpu_busy, io_busy, idle, packets_received,
packets_sent, packet_errors, total_read, total_write, total_errors, connections

다음은 SQL Server가 얼마나 많이 사용되었는지를 보고하는 예제다.

USE master
EXEC sp_monitor


■ sp_procoption

프로시저 옵션을 설정한다. 구문은 다음과 같다.

sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] 'option'
     , [ @OptionValue = ] 'value'

다음은 SQL 서버 서비스가 시작될 때 저장 프로시저 msp_startup가 자동으로 실행되도록 설정하는 예제다.

sp_procoption 'msp_startup', 'startup', 'true'


■ sp_recompile

저장 프로시저 및 트리거가 다음 실행시 다시 컴파일되게 한다. 구문은 다음과 같다.

sp_recompile [ @objname = ] 'object'

다음은 titles 테이블을 사용하는 저장 프로시저 및 트리거가 다음 실행 시 다시 컴파일되게 하는 예제다.

EXEC sp_recompile titles


■ sp_rename

현재 데이터베이스에서 테이블, 열 또는 사용자 정의 데이터 형식 등의 사용자 작성 개체의 이름을 변경한다. 구문은 다음과 같다.

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
     [ , [ @objtype = ] 'object_type' ]

다음은 customers 테이블의 이름을 custs로 바꾸는 예제다.

EXEC sp_rename 'customers', 'custs'

다음은 customers 테이블의 contact title 열의 이름을 title로 바꾸는 예제다.

EXEC sp_rename 'customers.[contact title]', 'title', 'COLUMN'


■ sp_renamedb

데이터베이스의 이름을 변경한다. 구문은 다음과 같다.

sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name'

다음은 accounting 데이터베이스의 이름을 financial로 바꾸는 예제다.

EXEC sp_renamedb 'accounting', 'financial'


■ sp_serveroption

원격 서버 및 연결된 서버용 서버 옵션을 설정한다. SQL 서버 2000에서는 sp_serveroption을 두 가지 새로운 옵션으로 더욱 강화하였다. use remote collation 및 collation name이 그 옵션인데 연결된 서버에서의 데이터 정렬을 지원한다. 구문은 다음과 같다.

sp_serveroption [[@server =] 'server'] [@optname =] 'option_name'
     [@optvalue =] 'option_value'

다음은 다른 SQL Server인 SEATTLE3에 해당되는 연결된 서버가 로컬 SQL Server와 데이터 정렬이 호환되도록 구성하는 예제다.

USE master
EXEC sp_serveroption 'SEATTLE3', 'collation compatible', 'true'


■ sp_settriggerorder

테이블과 연관된 어느 사후 트리거가 처음 또는 마지막으로 시작될 것인지 지정한다. 처음과 마지막 사이에 시작되는 사후 트리거는 정의되지 않은 순서로 실행된다. 구문은 다음과 같다.

sp_settriggerorder[@triggername = ] 'triggername' [@order =] 'value' ,
[@stmttype = ] 'statement_type'

다음은 갱신 트리거 MyTrigger를 처음에 실행되도록 지정하는 예제다.

sp_settriggerorder @triggername= 'MyTrigger', @order='first', @stmttype = 'UPDATE'


■ sp_spaceused

행의 수, 예약된 디스크 공간 및 현재 데이터베이스의 테이블이 사용하는 디스크 공간을 표시하거나 전체 데이터베이스가 예약하였거나 사용하는 디스크 공간을 표시한다. 구문은 다음과 같다.

sp_spaceused [[@objname =] 'objname'] [,[@updateusage =] 'updateusage']

다음은 titles 테이블에 대해 할당된(예약된) 공간, 데이터에 필요한 공간, 인덱스에 필요한 공간 및 데이터베이스 개체에 의해 예약된 사용되지 않은 공간 등에 관해 보고하는 예제다.

USE pubs
EXEC sp_spaceused 'titles'


■ sp_tableoption

사용자 정의 테이블의 옵션 값을 설정한다. sp_tableoption은text, ntext 또는 image 열이 있는 테이블에서 text in row 기능을 설정하는 데 사용할 수 있다. 구문은 다음과 같다.

sp_tableoption [ @TableNamePattern = ] 'table' [@OptionName = ] 'option_name'
     [@OptionValue = ] 'value'

다음은 Northwind 데이터베이스에서 'orders' 테이블에 대해 'text in row' 옵션을 설정하는 예제다.

EXEC sp_tableoption 'orders', 'text in row', 'ON'

다음은 Northwind 데이터베이스에서 'orders' 테이블에 대해 'text in row' 옵션을 설정하고 인라인 제한값을 1000으로 설정하는 예제다.

EXEC sp_tableoption 'orders', 'text in row', '1000'


■ sp_unbindefault

현재 데이터베이스의 열에서 또는 사용자 정의 데이터 형식에서 기본값을 바인딩 해제(제거)한다. 구문은 다음과 같다.

sp_unbindefault [@objname =] 'object_name' [ , [ @futureonly = ] 'futureonly_flag' ]

다음은 employees 테이블의 hiredate 열에서 기본값을 바인딩 해제하는 예제다.

EXEC sp_unbindefault 'employees.hiredate'


■ sp_unbindrule

현재 데이터베이스의 열에서 또는 사용자 정의 데이터 형식에서 규칙을 바인딩 해제한다. 구문은 다음과 같다.

sp_unbindrule [ @objname = ] 'object_name' [ , [ @futureonly = ] 'futureonly_flag' ]

다음은employees 테이블의 startdate 열에서 규칙을 바인딩 해제하는 예제다.

EXEC sp_unbindrule 'employees.startdate'


■ sp_updatestats

현재 데이터베이스의 모든 사용자 정의 테이블에 대해 UPDATE STATISTICS를 실행한다. 구문은 다음과 같다.

sp_updatestats [[@resample =] 'resample']

다음은 pubs 데이터베이스의 테이블에 대한 통계를 업데이트하는 예제다.

USE pubs
EXEC sp_updatestats


■ sp_who

현재 SQL 서버 사용자 및 프로세스에 관한 정보를 제공한다. 유휴 상태가 아닌 프로세스만 반환하려면 반환되는 정보를 필터링하면 된다. 구문은 다음과 같다.

sp_who [[@login_name =] 'login']

다음은 매개 변수 없이 sp_who를 사용하여 모든 현재 사용자를 보고하는 예제다.

USE ffmaster
EXEC sp_who

 

728x90

'Developer > MS SQL' 카테고리의 다른 글

SQL Server의 트랜잭션 로그 파일 축소  (0) 2007.05.06
728x90

sp_password

Microsoft® SQL Server™ 로그인의 암호를 추가 또는 변경합니다.

구문

sp_password [ [ @old = ] 'old_password' , ]
    { [ @new =] 'new_password' }
     [ , [ @loginame = ] 'login' ]

인수

[@old =] 'old_password'

이전 암호입니다. old_passwordsysname이며 기본값은 NULL입니다.

[@new =] 'new_password'

새 암호입니다. new_passwordsysname이며 기본값은 없습니다. 명명된 매개 변수를 사용하지 않으면 old_password는 지정되어야 합니다.

[@loginame =] 'login'

암호 변경에 영향을 받는 로그인의 이름입니다. loginsysname이며 기본값은 NULL입니다. login은 이미 존재해야 하며 sysadmin 고정 서버 역할의 구성원만이 지정할 수 있습니다.

반환 코드 값

0(성공) 또는 1(실패)

비고

SQL Server 암호는 글자, 기호 및 숫자를 포함하여 1자에서 128자까지의 문자를 포함할 수 있습니다.

새 암호는 암호화된 형식으로 업데이트 및 저장되므로 사용자 뿐만 아니라 시스템 관리자라도 암호를 볼 수 없습니다.

sysadmin 또는 securityadmin 고정 서버 역할의 구성원이 모든 세 인수와 함께 sp_password를 사용하여 자신의 암호를 재설정하는 경우, 감사 기록에는 다른 사람의 암호를 변경하는 것으로 나타냅니다.

sp_password는 Microsoft Windows NT® 보안 계정과는 사용할 수 없습니다. Windows NT 네트워크 계정을 통해 SQL Server에 연결하는 사용자는 Windows NT에 의해 인증되므로 암호는 Windows NT에서만 변경할 수 있습니다.

sp_password는 사용자 정의 트랜잭션에서 실행할 수 없습니다.

사용 권한

자신의 로그인의 암호를 변경하는 사용자에 대해 public 역할에 대한 기본 권한을 실행합니다. sysadmin 역할의 구성원만이 다른 사용자 로그인의 암호를 변경할 수 있습니다.

예제
A. 이전 암호 없이 로그인의 암호 변경

다음은 Victoria 로그인의 암호를 ok로 변경하는 예제입니다.

EXEC sp_password NULL, 'ok', 'Victoria'
B. 암호 변경

다음은 Victoria 로그인의 암호를 ok에서 coffee로 변경하는 예제입니다.

EXEC sp_password 'ok', 'coffee'
728x90
728x90
a 태그에는 함수 호출시 리턴 값이 있으면 리턴 값을 보여주기 위해서 브라우저에 나타납니다. 그래서 보통 a 태그에 스크립트 함수를 호출할때는 리턴 값을 주지 않습니다.

예1)
<a href="#" onclick="함수();">
함수에 리턴값이 있던 없던 상관 없음
그러나 클릭하는 순간 링크 "#" 때문에 페이지의 최상위로 이동됨

예2)
<a href="javascript:함수();">
브라우저에 리턴값이 출력되므로 리턴값이 있으면 안됨,

예3)
<a href='javascript:void(0);' onclick="함수();">
함수에 리턴값이 있던 없던 상관 없음
클릭해도 페이지의 최상위로 이동하지 않음
728x90
728x90

사용할 수 있는 자료형은 5가지 

NULL: 널값

INTEGER: 1,2,3,4,6,8bytes의 정수값
(자동증가 시킬 경우 INTEGER PRIMARY KEY AUTOINCREMENT 로 표기)

REAL: 8bytes의 부동소수점값

TEXT: UTF-8, UTF-16BE, UTF-16LE인코딩의 문자열

BLOB: 입력된 그대로 저장, 바이너리 파일 등


다른 형태는 어떻게 만들면 될까? 

Boolean타입: INTEGER로 만들어서 0과 1로 구별.

Date, Time타입
      TEXT: YYYY-MM-DD HH:MM:SS.SSS 형태로 저장
      REAL: 율리우스력을 기준으로 하는 정보를 저장
      INTEGER: UTC타입으로 저장

SQLite에 숫자, 문자, 바이너리를 넣을 수 있으니 자유롭게 넣고 개발자가 알아서 정해서 사용하면 된다.

SQLite는 대용량의 데이터를 처리하기에는 적합하지 않기에 대형프로그램보다는 지금 가장 많이 사용되고 있는 안드로이드 어플 개발 등 작은 프로그램 개발에 사용된다. 즉 다수의 개발자가 아닌 소수 혹은 혼자서 개발하는 경우가 많을 것이기에 좀 더 가볍고 자유롭게 사용할 수 있게 하는 편이 더 낫다.

728x90
728x90
SQLite에서 날짜를 표시하기 위한 함수는 아래의 5가지가 있다.

date(timestring, modifier, modifier, ...) : 날짜
time(timestring, modifier, modifier, ...) : 시간
datetime(timestring, modifier, modifier, ...) : 날짜+시간
julianday(timestring, modifier, modifier, ...) : 율리우스력 날짜
strftime(format, timestring, modifier, modifier, ...) : 포맷 지정

흔히 현재 날짜를 얻을 때 date, time, datetime을 자주 사용하게 된다.
이 함수에 'now' 문자열을 넣으면 현재 날짜와 시간을 얻을 수 있고, 이는 xCurrentTime 메소드가 제공해 주는 것이라고 SQLite 공식 페이지가 말하고 있다.(-_-;;)

즉, SELECT date('now'); 를 하면 현재 날짜가 '2011-12-25' 일 형식 으로 나오고,
SELECT datetime('now'); 를 하면 현재 날짜+시간(시:분:초)이 '2011-12-25 23:30:11' 형식으로 나온다.
단, 국제표준시간(UTC) 기준의 값을 출력한다.

우리나라의 표준 시간은 국제표준시+9 이기 때문에 시간이 틀리게 출력 된다.

해결 방법은 대략 두가지.

1. localtime 값을 이용한 현재시간 구하기 

SELECT datetime('now','localtime');


위와 같이 하면 국제표준시+9 가 된 우리나라 시간이 된다.

2. 시간 값 더하기 

SELECT datetime('now','+9 hours');


국제 표준시에 +9를 해 주면 우리나라 시간이 된다.


편한게 좋기 때문에 1번 추천.

더 자세한 정보는 SQLite 공식 페이지의 Date And Time Functions 페이지를 참조 하자.

보고픈님이 정리하신 SQLitet 날짜 관련 샘플

--UTC 기준의 현재 날짜/시간
select datetime('now');
2010-08-25 04:01:46

-- 로컬 기준의 현재 날짜/시간
select datetime('now','localtime');
2010-08-25 13:02:30

--현재 로컬 기준 시간에서 10분 3.5초를 더한 시간.
select datetime('now','localtime','+3.5 seconds','+10 minutes');
2010-08-25 13:14:15

--현재 로컬 시간에 3.5초를 더하고 날짜는 돌아오는 화요일 (weekday == 0 이 일요일입니다.)
select datetime('now','localtime','+3.5 seconds','weekday 2');
2010-08-31 13:05:39

--현재 달의 마지막 날짜
SELECT date('now','start of month','+1 month','-1 day','localtime');
2010-08-31

--2004-01-01 02:34:56초부터 현재까지의 총 초
SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
209785028

--현재날짜/시간 기준에서 올해 9번째달의 첫번째 화요일
SELECT date('now','start of year','+9 months','weekday 2');
2010-10-05

-- 날짜 포맷 스타일 변경
select strftime("%Y/%m/%d %H:%M:%S",'now','localtime');
2010/08/27 09:17:22


728x90
728x90
국민주택기금에서 하고 있는 근로자 서민 전세자금 대출이 있다.
일반 은행들도 전세자금 대출 상품이 있지만, 금리를 비교하면 국민주택기금이 압도적으로 이익이다.

대출한도는 6,000만원과 전세자금의 70%이하 중 낮은 쪽.
금리는 4.5 ~ 5.5 이며, 대출기간은 2년에 2회 연장이 가능하니 6년까지다.
그 기간동안에 원금은 갚지 않고 이자만 꼬박꼬박 내면 된다고 하니, 크게 부담은 없는 듯...

전세자금 대출을 받기 위해선 다음과 같은 조건이 붙는다.
  • 무주택 세대주로 부양가족이 있어야 한다. (단독세대주 불가)
  • 세무서에 신고된 연수입이 일정 기준 이하여야 한다. (전세자금 대출 정책 참조)
  • 전용면적이 85이하여야 한다.
  • 보증인 1명이 필요하고, 보증인이 없을경우에는 주택금융공사에서 보증서를 떼어서 대신 할 수 있지만,
    보증서를 뗄경우, 대출한도가 적게 나올 수 있다고 한다.
보증인 조건은, 재산세를 10만원 이상 납부하신 분이나,
소득이 3,000만원 이상인 분으로서 재직기간이 1년 이상 인 분이다.
보증인의 채무관계로 인해서 상담받을 때의 한도보다 적게 나올 수 있다.

보증서를 뗄경우, 수수료가 0.4에서 0.7퍼센트 정도 있다.

중요한 것은, 전세계약을 할때 꼭 전세금의 10프로 이상을 계약금으로 지급해야 한다는 것이다.
그렇지 않으면 대출이 안될 수 있다.

전세계약을 하고, 필요한 서류를 가지고서 대출을 받게 되면,
잔금 치르는 날짜에 집주인에게로 송금 되어 들어가게 된다.

한국주택금융공사 : http://www.khfc.co.kr


728x90
728x90

자바스크립트(JavaScript) 객체는 그 안에 여러가지 속성과 값을 담고 있는 경우가 있는데, 그러한 객체의 속성을 조회할 때 유용한 소스이다.

function getProperty(obj) {
   for (var p in obj) {
	   // 출력형태 - 이름(타입) : 값
	   var msg = p + "(" + typeof obj[p] + ") : " + obj[p];
	   console.log(msg);
   }
}

window.location의 속성값을 알고 싶으면 getProperty(window.location);

특정 이벤트 시 내부 속성값을 알고 싶으면 getProperty(해당 이벤트 객체);

이렇게 사용하면 된다.

결과 값은 브라우저에서 F12를 눌러 콘솔(Console) 탭을 누르면 볼 수 있다.

728x90

'Developer > JavaScript' 카테고리의 다른 글

다른 도메인간 부모창과 자식창 제어  (2) 2019.01.03
JavaScript의 KeyEvent에 따른 keycode  (8) 2009.06.22
50가지의 Ajax 예제  (0) 2008.11.10
728x90

금융감독원에서 '금융정보 한곳에' 서비스를 2016년 2월 22일부터 시작했습니다.

http://www.fss.or.kr/fss/kr/allinone.html ☜ 여기가 '금융정보 한곳에'서비스 페이지 인데, '가입한 금융상품을 조회하는 서비스'와 '비교해 볼 수 있는 금융상품'이 섞여있습니다.(그래서 정신이 없습니다..)


그래서, 내가 가입한 금융정보를 조회하는 서비스만 정리 합니다.



1. 휴면예금, 보험계약 만료 후 찾아가지 않은 보험금 조회

바로가기☞ http://www.sleepmoney.or.kr/jsp/cm/cdo0001.jsp



공인인증서로 한번에 조회가 가능합니다. (굿..)



2. 카드포인트 통합조회

바로가기☞ http://www.cardpoint.or.kr/



이름, 주민등록번호 입력만으로 한번에 조회가 가능합니다.

여러 카드사의 연합 협회인 '여신금융협회' 소속 카드사만 조회가 됩니다.

현대카드, NH카드, 씨티카드, 우리카드는 '자사회원이 아닙니다.'라고 뜹니다.



3. 퇴직연금, 개인연금 조회

바로가기☞ https://100lifeplan.fss.or.kr/inquiry/requestPensionList.do



로그인을 하면 조회가 가능합니다. 회원가입이 되어 있지 않다면 회원가입을 해야 합니다.

연금정보 조회 신청 후 3일이 지나야 연금정보 확인이 가능 합니다.



4. 자동이체 내역 통합 조회

바로가기☞ https://www.payinfo.or.kr/wdtrns/inq/qryListAcntNum.do



자신의 모든 계좌의 자동이체 정보를 조회할 수 있습니다. (참 편리하네요!)

금액은 나오지 않습니다.



5. 내가 가입한 보험 조회

바로가기☞ http://www.klia.or.kr/consumer/consumer_030101.do





접수 다음 날(영업일 기준) 오후 1시부터 생명보험사 및 손해보험사의 가입내역의 조회가 가능하다고 합니다.

조회결과는 조회신청일로부터 3개월간만 확인할 수 있다고 하네요.



6. 사망자가 가입한 보험 조회 안내

바로가기☞ http://www.klia.or.kr/consumer/consumer_030102.do



사망자 보험가입 조회 신청은 각 지역 생명보험협회에 직접 방문하여 관련 서류 제출을 통해서만 신청 가능 합니다.

제출할 서류는 사망자의 사망진단서(또는 사망확인서), 사망자의 가족관계증명서, 신청자의 신분증이며, 지역별 생명보험협회는 서울, 부산, 대구, 광주, 대전, 원주에 있습니다.(각 협회 위치는 아래 링크에서 확인)

http://www.klia.or.kr/aklia/aklia_0801.do?mapset=2



참고사항 

각 사이트에 들어갈 때 마다 각종 보안프로그램을 설치해야 하기 때문에 인터넷익스플로러(Internet Explorer)에서 하시는 것이 좋습니다.

728x90
728x90


고객사 S/W 제작에 GPL라이센스를 가진 오픈소스를 반영해야 하는 이슈가 발생하였다.

GPL라이센스는 해당 라이브러리가 적용 된 S/W의 소스를 공개해야 하는 의무사항을 가진다.

이때, 고객사에게 알려줘야 하는 S/W 소스 공개의 범위는 어디까지일까?


오픈소스에 대한 각종 상담/컨설팅 서비스를 제공하는 한국 저작권위원회의 OLIS(https://www.olis.or.kr/)에 물어보았다.


 Q 

A사에게 제작 의뢰를 받은 프로그램을 GPL라이브러리를 이용하여 개발하려고 합니다.

A사가 해당 프로그램을 상용 배포할지, 무료 배포할지, 자사 단말에 기본 내장하여 단말형태로 배포할지는 아직 결정되지 않았습니다.


1. A사에게 저작물을 전달시 A사에게만 소스를 공개하면 되는지요?

2. A사가 해당 프로그램을 상용 또는 무료 배포 할 시, A사도 전달받은 소스를 공개해야 하는지요?

3. A사가 자사 단말기에 기본 내장하여 단말형태로 제공하는 경우에도 소스를 공개해야 하는지요?


 A 

안녕하세요. 한국저작권위원회 입니다.

질문주신 사항의 답변은 모두 "네" 입니다.

다만 소스코드의 공개 범위를 결정함에 있어 개발 방법 등에 따라 공개 범위가 다르게 적용 될 수 있는 부분은 있습니다.

일반적으로 GPL 라이브러리를 호출하는 프로그램의 경우 공개 범위에 포함이 될 것입니다.

감사합니다.


GPL라이센스를 가진 라이브러리를 이용하는 경우, S/W 소스 공개는 반드시 이루어 져야 한다.

단, 공개 범위는 상황에 따라 다르다.

728x90

'Information' 카테고리의 다른 글

a 태그에서의 함수호출  (1) 2019.01.03
이클립스(Eclipse)에서 Java Doc을 생성하는 방법  (0) 2015.04.09
Creative WP-250 Reset 하기  (6) 2014.06.11
728x90

제가 희안한 것을 만들었습니다.

아무래도 듣도 보도 못한 것을 만든 것 같습니다.

이런 희안한 것을 만들게 된 배경은 아래와 같습니다.





그래서 탄생한 것이 요겁니다.


NoteSounds_v0.3.apk


아직 v1.0이 아닙니다.

1.0이 아니라는 것은 개발중인 아이라는 의미 입니다.

728x90

'Software' 카테고리의 다른 글

이클립스 플러그인 (Eclipse Plugin)  (0) 2015.06.16
크롬 브라우저에서 네이버 동영상 다운로드 하기  (0) 2014.03.31
StarUML  (0) 2011.06.01
728x90

제목 잡기가 참 힘들다.

간단하게 설명할 수 있는 타이틀이 떠오르지 않는다.

이 글은 duplicateParentState와 addStatesFromChildren에 대한 내용이다.


'안드로이드에서 부모 뷰의 속성이 자식 뷰에도 동일하게 적용 되도록 하는 방법'이란 것인데, 좀 쉽게(?) 설명하자면 이런 경우다.


1. 게시판 리스트뷰가 있다.

2. 각 항목은 More 버튼을 가지고 있다.

3. More 버튼을 누르면 다음 화면으로 넘어간다.

4. More 버튼을 직접 누르지 않고 해당 아이템을 눌러도 다음 화면으로 넘어간다.

5. More 버튼을 직접 누르지 않더라도 항목이 눌리면 More 버튼도 눌림 처리 되어야 한다.


마지막 5번이 핵심 요건이다.


3번을 처리하기 위해 More 버튼에 클릭이벤트를 주고, 4번을 처리하기 위해 레이아웃(Layout)에 클릭 이벤트나 터치이벤트를 주는것은 별 문제가 아니다.

그런데, 5번을 처리하기 위해 레이아웃 클릭 시 More 버튼이 눌린 것 처럼 표현하기 위해 별도의 처리를 하는 번거로움을 duplicateParentState="true" 속성으로 해결할 수 있다.


addStatesFromChildren는 duplicateParentState와 반대의 경우로 More 버튼을 눌렀을 때 Layout이 눌림 처리 되는 것이라 이해하면 된다.


아래 예제를 참고하자

http://ingeni.tistory.com/entry/Android-duplicateParentState-부모뷰-속성을-동일하게-자식뷰에-적용하기

http://stackoverflow.com/questions/10605647/android-make-parent-selector-trigger-when-selecting-child

728x90
728x90

Help > Install New Software > Add 의 Location에 해당 플러그인의 URL을 입력하면 설치할 수 있다.


Eclipse Color Theme

http://eclipse-color-theme.github.com/update

이클립스 에디터 환경의 색상 변경을 편리하게 할 수 있는 플러그인.
홈페이지는 여기 : http://www.eclipsecolorthemes.org/ 


Eclipse Word-Wrap

http://ahtik.com/eclipse-update

이클립스에서 줄바꿈을 가능하게 해주는 플러그인.
설치 후에 단축키 Ctrl + Alt + w 로 구동 시킬 수 있다.


Jadclipse

http://feeling.sourceforge.net/update

class 파일을 Decompile 하여 java 소스로 보여주는 플러그인.
외부 라이브러리도 모두 Decompile 가능하기에 안드로이드의 Activity.class 의 소스도 볼수 있게 된다.

728x90

'Software' 카테고리의 다른 글

음표소리 안드로이드 앱  (0) 2015.06.25
크롬 브라우저에서 네이버 동영상 다운로드 하기  (0) 2014.03.31
StarUML  (0) 2011.06.01
728x90

Eclipse에서 클래스 멤버 변수(Class Member Field) 전체를 로그로 출력하기 위한 스크립트를 자동으로 생성 할 수 있다.


이클립스 상단 메뉴의 Source > Generate toString() 을 실행하면 멤버 변수에 대한 로그 출력용 스크립트를 toString() 이라는 함수명으로 자동 생성 해 준다.


설치 된 이클립스에서 해당 기능이 없는 경우 JUtils ToString Generator Plug-in을 설치해서 사용할수도 있다.

728x90

'Developer' 카테고리의 다른 글

Regular Expressions Cheat Sheet  (2) 2009.07.02
Image Preview IE7  (3) 2008.05.13
정규표현  (0) 2008.01.29
728x90

1. 프로젝트 우클릭- > Export - >Java - > Javadoc 클릭

2. Javadoc command 에 javadoc.exe 경로 설정 (jdk/bin/javadoc.exe)

3. Javadoc 으로 생성 될 소스파일 선택 (gen, 오픈소스 선택 해제)

4. Create Javadoc for members with visibility를 Private로 설정

5. Destination에 저장 결로 설정

6. Next > Next 클릭

7. VM options 에 -locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8 입력 후 Finish 클릭

8. 처리 결과로 error 항목이 있는 경우 수정 후 다시 javadoc 생성



728x90

'Information' 카테고리의 다른 글

GPL라이브러리 사용 관련 문의  (0) 2016.01.04
Creative WP-250 Reset 하기  (6) 2014.06.11
프로그램이 재미가 없는가?  (0) 2013.05.17
728x90

ListView 에서 데이터 페이징을 구현 하는 방법 중 주로 사용되는 방법이 아마 이 두가지가 아닐까 싶다.

1. 맨 아래에 '더보기' 버튼을 놓는다.

2. 스크롤이 맨 아래에 닿았을 때 새로운 데이터를 불러 온다.

 

하지만, 이 두 방법은 사용자에게 정보 전달의 Delay를 발생시킨다.

빠르게, 지연없이, 정보를 쭉쭉 확인하고 싶은 사람에게는 순간순간의 Stop을 발생시키게 되는 것이다.

사용자에게 이러한 정보의 Delay를 발생시키지 않는 지연 없는 데이터 전달이 필요한 경우가 있다.

 

위에서 나온 2번에 대한 응용으로 스크롤이 가장 마지막 Data 항목까지 가지 않고, 특정 Data항목에 다다르면 다음 Data를 불러오는 방법이다.

activity_main.xml
<relativelayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="match_parent"
	android:layout_height="match_parent">

	<listview
		android:id="@+id/lv_main"
		android:layout_width="match_parent"
		android:layout_height="match_parent">
	</listview>
</relativelayout>
MainActivity.java
public class MainActivity extends Activity {
	private ListView lvMain;
	private boolean isLoading = false;
	private int mCurrentPage = 0; // 현재 페이지 번호
	private int mTotalPage = 0; // 전체 페이지 번호
	private int mItemCount= 15; // 화면에 보여줄 항목 수

	@Override
	public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
		super.onCreate(savedInstanceState, persistentState);
		setContentView(R.layout.activity_main);
		lvMain = (ListView) findViewById(R.id.lv_main);
		lvMain.setOnScrollListener(onScroll);
	}

	OnScrollListener onScroll = new OnScrollListener() {

		@Override
		public void onScrollStateChanged(AbsListView view, int scrollState) {
		}

		@Override
		public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
			if ((totalItemCount - firstVisibleItem) < mItemCount && mCurrentPage < mTotalPage) {
				setRequestData(mCurrentPage + 1);
			}
		}
	};

	private void setRequestData(int page) {
		if (isLoading) {
			return;
		}
		isLoading = true;
		
		// TODO 데이터 통신
		// TODO 데이터 통신 완료 후 mCurrentPage값, mTotalPage값을 지정. isLoading=false로 지정.
	}
}

 

OnScrollListener에서 ListView 스크롤 시 남아있는 항목의 갯수를 체크하여 미리 데이터를 불러온다.

통신환경에 따라 차이는 있겠지만, 이런 방식으로 페이징을 구현하면 사용자가 데이터를 불러오느라 기다리는 시간을 단축시킴으로써 서비스의 신속성을 유지할 수 있다.

 

 

728x90
728x90

assets 폴더에 적용할 폰트를 넣어놓고 아래 코드를 적용한다.

여기서는 Roboto-Thin.ttf 폰트를 예로 들어 표기한다.

MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Typeface mFont = Typeface.createFromAsset(getAssets(), "Roboto-Thin.ttf");
    ViewGroup root = (ViewGroup) findViewById(R.id.mylayout);
    setFont(root, mFont);
}

public void setFont(ViewGroup group, Typeface font) {
    int count = group.getChildCount();
    View v;
    for (int i = 0; i < count; i++) {
        v = group.getChildAt(i);
        if (v instanceof TextView || v instanceof EditText || v instanceof Button) {
            ((TextView) v).setTypeface(font);
        } else if (v instanceof ViewGroup)
            setFont((ViewGroup) v, font);
    }
}

 

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mylayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Hello!"
        android:textSize="40sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Click!"
        android:textSize="40sp" />
</LinearLayout>

 

 

728x90
728x90

Fragment에서 GoogleMap v2를 사용하는 경우...

1. SupportMapFragment를 사용하는 MapFragment를 호출
2. popBackStack()을 하고
3. 다시 MapFragment를 호출 했는데
4. android.view.InflateException과 java.lang.IllegalArgumentException을 만나게 됐다면...

MapFragment에 onDestroyView()를 Override시킨 후 아래 코드를 추가해서 해결 할 수 있다.


SupportMapFragment를 사용하는 Fragment의 onDestroyView()

@Override
public void onDestroyView() {
	super.onDestroyView();
	Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
	FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
	ft.remove(fragment);
	ft.commit();
}
728x90

'Developer > Android' 카테고리의 다른 글

안드로이드에서 폰트 적용하기  (0) 2015.01.06
외부 앱 실행시키기  (0) 2014.06.11
안드로이드 리소스 폴더 확장 적용 순서  (0) 2014.05.30
728x90

내 어플에서 외부 앱(3rd party App)을 실행하는 방법

 

실행시킬 패키지의 Activity를 아는 경우

ComponentName compName = new ComponentName("com.package","com.package.activity");
Intent intent = newIntent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(compName);
startActivity(intent);

 

실행시킬 패키지명만 아는 경우

Intent intent = context.getPackageManager().getLaunchIntentForPackage("ParkageName");
startActivity(intent);
728x90
728x90

Creative WP-250 헤드셋을 스마트폰과 연결하여 사용하다가 폰이 변경됐을 때는 헤드셋을 리셋해 주어야 서로 연결이 잘 됩니다.


헤드셋을 리셋 하는 방법은 다음과 같습니다.


1. 헤드셋 전원이 꺼진 상태에서, 볼륨 다운 버튼 '-'과 통화버튼을 6초 이상 누르고 있는다.

2. 우측 이어캡 부분의 LED에서 빨간 불이 깜빡하면 성공

3. 스마트폰과 새로 페어링 해준다.


원본은 여기 http://support.creative.com/kb/ShowArticle.aspx?sid=93887 인데 영어임.


이거 몰라서 삽질 한거 생각하면 후덜덜...


아래는 Creative WP-250 헤드셋을 리셋하기 까지의 프롤로그..

스마트폰이랑 연결해서 잘 쓰던 Creative WP-250 Bluetooth Headset이 스마트폰을 바꾼 후 이상한 증상이 발생했다.


증상 1. 한번 페어링 후 다시 연결 하려면 매번 다시 페어링을 시도 해야 한다.

  (예전에는 한번 페어링 된 후에는 블루투스 목록에 있는 헤드셋을 누르기만 하면 바로 연결이 되었다.)


증상 2. 페어링 된 상태에서 간혹 연결이 끊어지는 현상이 있다.


스마트폰 블루투스 칩 문제인줄 알고 AS를 갔더니....



쌤쏭AS 기사 : "해당 기기의 블루투스 쪽 관련 펌웨어를 고쳐야 할 것 같다. 현재까지 관련 문제로 보고된 내용이 없으니 첫 문제 발생자다. 펌웨어 수정 후 업데이트 하시면 고쳐질 것 같다. 소요기간은 수개월..."


 : 지금 문제 보고 등록되면 관련 부서에서 그거 고치고 배포하는데까지 몇달 걸리는게 맞다고 생각한다. 그럼, 그동안 내가 할 수 있는일은 없는거네요? 그냥 기다려야 한다는 거네요?


쌤쏭AS 기사 : "네.." (앞뒤로 어쩌고 저쩌고 했지만, 결론은 '네..' 였음)



뭐야 이건.. 말이야 막걸리야..


난 그저 비 전략폰을 선택한 나의 아둔함을 탓했고, 역시 전략폰이 진리구나.. 라는 생각을 하고 있던 어느날...

갑자기 스마트폰 대란이 시작되면서 폰이 싸게 풀렸고, 쌤송의 경쟁사 전략폰이 싸게 풀리는 미라클까지!!

전략폰은 진리!!! 라는 교훈을 얻었던 나는 바로 갈아타기를 시행.


전략폰이니 테더링 따위 문제 없겠구나!! .... 라는 건 착각...

연결 끊김 현상은 좀 줄었지만 여전히 연결 때마다 새로 페어링을 해줘야한다.


뭐임? 쌤쏭이 지존임? 쌤쏭 전략폰이 지존이라서 잘된거임? 원래 잘 안되는거임? 이게 정상임?

아니야.. 그럴리 없어... 그래도 전략폰인데!!! 해외에도 많이 팔렸다고!!!

.

.

.

.

.

.

혹시.. 헤드셋을 리셋해주는 뭐 그런 기능이 있는건??!!


다시 읽어봐도 눈물이 앞을 가린다...



728x90
728x90

아래의 순서로 정해짐

 

한정자 종류 설명
MCC와 MNC mcc310.. 모바일 국가코드, SIM 카드에 저장된 모바일 네트워크 카드
언어와 지역 en
en-rUS
언어코드 :http://ko.wikipedia.org/wiki/ISO_639 : Alpha-2
한국(ko), 영어(en), 일본어(ja), 중국어(zh)
국가코드 : http://geotags.com/iso3166/countries.html
한국(ko), 영국(rGB), 미국(rUS), 덴마크(de)
화면 크기 small
normal
large
화면 크기에 따른 분류
화면 비율 long
notlong
notlong : QVGA, HVGA, VGA
Long : WQVGA, WVGA, FWVGA
방향 port
land
방향(orientation)
Dock mode car
desk
car : 자동차의 dock에 있을 경우
desk : 책상용 dock에 있을 경우
야간 모드 night
notnight
주간, 야간
픽셀 밀도 ldpi
mdip
hdpi
nodpi
ldpi
mdpi
hdpi
nodpi : 픽셀 밀도와 상관없는 비트맵 리소스를 위해서만 사용
터치 스크린 타입 notouch
stylus
finger
notouch : 터치 스크린 지원 안할 경우
stylus : 스타일러스 펜을 사용할 경우
finger : 손가락 사용
키보드 keysexposed
keyshidden
keyssoft
keysexposed : 하드웨어 키보드 보유
keyshidden : 하드웨어 있지만 사용 불가, SW 키보드 없는 상태
keyshoft : SW키보드만 지원
키보드 배열 nokeys
qwerty
12key
nokeys : 하드웨어 키 없음
qwerty : 하드웨어 키보드 보유
12key : 12key 하드웨어 보유
네비게이션 키 navexposed
navhidden
navexposed : 사용자가 네비게이션 키를 사용 가능
navhidden : 네비게이션 키 사용 불가
탐색 도구 nonav
dpad
trackball
wheel
nonav : 네비게이션 장치 없음
dpad : D-패드를 지원
trackball : 트랙볼 지원
wheel : 휠 탑재
API 레벨 v3
v4
..
안드로이드 SDK 버전에 따른 분류

 

언어코드

values는 영어
values-ko : 한국어
values-ja : 일본어
values-zh : 중국어

 

이미지

drawable-ko-hdpi
drawable-ja-hdpi
drawable-zh-hdpi

 

조합

drawable-en-rUS-land
drawable-en-rGB-hdpi
drawable-port-hdpi
values-fr-rCA

 

  ldpi(120) mdpi(160) hdpi(240)
small QVGA(240x320)
2.6 ~ 3.0 인치
   
normal WQVGA(240x400)
3.2 ~ 3.5 인치
FWQGA(240x432)
3.5 ~ 3.8 인치
HVGA(320x480)
3.0 ~ 3.5 인치
WVGA(480x800)
3.3 ~ 4.0 인치
FWVGA(480x854)
3.5 ~ 4.0 인치
large   WVGA(480x800)
4.8 ~ 5.5 인치
FWVGA(480x854)
3.5 ~ 4.0 인치
 

 

728x90
728x90


프롤로그 

안드로이드는 특유의 파편화 문제로 여러 폰을 지원하다 보면 여러 종류의 레이아웃이나 리소스를 만들어야 하는 경우가 있다.

그런데 여기서 또 문제가, 안드로이드는 OS버젼별로 해당 폴더의 인식 순서가 다르다는데 있다.


덕분에 이걸 모르면 개 삽질을 미친듯이 해야 하고 (경험담ㅋㅋㅋ)

결국 해상도별 픽셀 폴더를 만드는 짓(!)을 해서 훗날 유지보수를 어렵게 만들게 된다.

그리고는 "어쩔 수 없다" 라는 말을 할 수 밖에 없는 상황을 발생시킨다. (이게 무슨 멍멍이 같은 상황인가ㅋㅋㅋ)


안드로이드 OS별 폴더 인식 순서는 간단히 아래와 같다.



OS 4.x 의 Layout 인식 순서

자신의 sw_dp > 낮은 sw_dp > 자신의 w_dp > 낮은 w_dp > 자신의 dpi > 존재하는 dpi 폴더 중 높은 dpi > 낮은 dpi > 자신의 해상도 > 낮은 해상도 > layout


OS 3.x 의 Layout 인식 순서 

자신의 sw_dp > 낮은 sw_dp > 자신의 w_dp > 낮은 w_dp > 자신의 dpi > 자신의 해상도 > 낮은 해상도 > layout > 높은 dpi


OS 2.x 의 Layout 인식 순서 

자신의 dpi > 높은 dpi > 낮은 dpi > 자신의 해상도 > layout



그래서, 몇가지 폰의 Layout 인식 순서를 예로 들면 다음과 같다.



갤럭시S3 (OS : 4.x, 해상도 : 720 X 1280)

layout-sw360dp
layout-sw320dp
layout-w360dp
layout-w320dp
layout-xhdpi
layout-hdpi
layout-mdpi
layout-1280x720
layout-960x540
layout-800x480
layout-480x320
layout


옵티머스 2X (OS : 4.x, 해상도 : 480 X 800)

layout-sw320dp
layout-w320dp
layout-hdpi
layout-xhdpi
layout-mdpi
layout-800x480
layout-480x320
layout


갤럭시탭 (OS : 3.2, 해상도 : 1280 X 800)

layout-sw400dp
layout-sw384dp
layout-sw360dp
layout-sw320dp
layout-w400dp
layout-w384dp
layout-w360dp
layout-w320dp
layout-mdpi
layout-1024x768
layout-960x540
layout-800x480
layout-480x320
layout
layout-hdpi
layout-xhdpi


옵티머스 빅 (OS : 2.3, 해상도 : 480 X 800)

layout-hdpi
layout-xhdpi
layout-mdpi
layout-800x480
layout


옵티머스 원 (OS : 2.2, 해상도 : 320 X 480)

layout-mdpi
layout-480x320
layout-hdpi
layout-xhdpi
layout


728x90
728x90

매우 유용하다 이거 ㅎㅎ


http://zleorl.blog.me/30131879287




728x90

'Software' 카테고리의 다른 글

이클립스 플러그인 (Eclipse Plugin)  (0) 2015.06.16
StarUML  (0) 2011.06.01
Firefox Add-Ons  (0) 2010.04.12
728x90


이번 사건의 개요는 다음과 같다.


- 개인신용평가 전문업체인 KCB의 박 모 차장이 지난 2012년부터 카드사의 카드 도난분실, 위변조 탐지 시스템, 이른바 FDS 개발 프로젝트를 담당하면서 해당 카드사의 고객 정보를 유출한 사건.


- 2012년 10~12월, NH카드에서 약 2,500만 명의 개인정보를 USB에 불법 수집해 2013년 5월 개인정보를 광고대행업체 조 모 대표에게 1,650만 원을 받고 팔았다. 조 모 대표는 이 정보 가운데 100만 건을 다시 대출 모집인 이 모씨에게 2,300만 원을 받고 재판매했다.


- 2013년 6월, 박 모 차장은 KB카드에서 약 5,300만 개의 개인, 법인 카드 정보를 빼돌렸으며 조 모 대표에게로 넘겨졌다.


- 2013년 12월, 박 모 차장이 롯데카드에서 2,600만 명의 개인정보를 수집한 지 10여 일이 지난 상황에 창원지검 특수부에 체포됐다.


유출된 개인정보 범위는 총 19가지로, 자신이 카드를 만들때 기입한 정보인 성명, 이메일, 휴대전화 번호, 직장 전화 번호, 자택 전화 번호, 주민번호, 직장주소, 자택주소, 직장정보, 결혼 여부, 자가용 보유여부, 주거상황, 이용실적금액, 결제계좌, 결제일, 연소득과 함께 신용한도금액, 연체금액, 신용등급, 그리고 NH농협카드과 롯데카드의 경우 카드번호와 사용기한까지 포함한다.


카드 비밀번호와 CVC 번호를 제외한 모든 정보가 유출된 셈이다.


이번 사고에 대해 개인 사용자들이 피해를 최소화할 수 있는 방안은 자신의 신용카드와 계좌에 대해 지속적인 모니터링과 명의도용차단 서비스, 신규카드 발급, 신용카드 한도액을 낮추는 일 등이다.


이번 사건은 결과적으로 고양이에게 어물전을 맡긴 형국이다. 한 마디로 이 사건의 핵심은 고객 정보를 어떻게 관리하느냐의 문제지 수집한 고객 정보가 너무 많아서가 아니라는 점이다. 그래서 이 사고에 대한 금융당국의 정확한 대응책은 해당 카드사에게 문서 관리를 소홀히 한 책임을 묻고, 금융권 전반에 걸친 문서 관리 체계에 대한 검증이다.


또한 1차적으로 개인정보 유출에 대한 카드 고객의 피해 보상과 잠재적 2차 피해 보상에 대한 약속은 당연한 수순이다.


그러나 금융당국은 어물전에 생선이 너무 많은 것이 문제라고 사건을 키우고 있는 상황이다. 또한 피해 고객들에게 개인정보 유출에 대한 피해보상은 거론하지 않은 채, 2차 피해에 대한 보상을 얘기한다. 나아가 이번 사건이 카드사 및 금융권 전체의 과도한 고객 정보 수집을 원인으로 몰아가는 형국이다.


이 사건의 용의자인 박 모 차장은 오래전부터 개인정보 데이터 유출을 시도해왔다.


2012년 5월에도, 당시 프로젝트를 담당했던 삼성카드, 신한카드의 경우 데이터가 암호화되고 복제가 금지된 문서 보안 체계로 인해 정보를 빼내는 데 실패했다는 점을 주목할 수 있다.


결국 이는 사람의 문제도 아니며, 카드 3사의 문서 관리 체계가 허술했다는 점이 이 사건이 발생한 직접적인 원인인 것이다.


1차적인 피해를 입은 개인들도 문제가 심각하지만 앞으로 더 우려되는 것은 기업들이다. 이런 데이터 유출 사고는 현존 보안 체계상 어느 기업에서도 일어날 수 있는 사안이니만큼 철저한 보안 대책이 필요한 시점이다.


출처 : http://www.itworld.co.kr/news/85740



카드사에서는 유출된 개인정보가 유통되기 전에 범인이 검거되어 "유출은 되었지만, 유통되지는 않았다." 라는 말을 하고 있다. (언젠가 들었던 "술은 마셨지만, 음주운전은 하지 않았다." 라는 말이 생각난다.)


위 사건의 개요를 보면 농협카드에서 유출된 2,500만건의 개인정보는 이미 대출광고 업자에게 넘어 갔고, 국민카드의 5,300만건, 롯데카드의 2,500만건의 경우 범인들이 보유하고 있는 상황에서 검거 되었다고 말하고 있지만... 개인적으로는 이미 넘어갔다고 본다.

내 개인정보 유출 정보를 조회한 결과 농협은 카드가 없어서 안털렸지만, 국민, 롯데에서는 털린 것으로 확인이 되었는데...

요 며칠 내 핸드폰으로 대출, 도박광고가 쉴세없이 들어온 것으로 보면 국민,롯데도 이미 넘어갔지싶다.


농협카드 정보유출 확인 : http://goo.gl/E9lYba

국민카드 정보유출 확인 : http://goo.gl/ljdm0y

롯데카드 정보유출 확인 : http://goo.gl/FufPXu

(별 필요도 없는 암호화 모듈 설치를 시도하므로 ie에서 실행하세요.)


농협카드에서 정보가 유출 된 것으로 확인 되는 사람은 카드 해지를 하던지 재발급을 해야만 한다.

국민, 롯데에서 정보가 유출 된 것으로 확인 되는 사람은 재발급을 권유 한다.

하지만, 이렇게 하면 카드 결재 피해는 막을 수 있지만, 쏟아지는 스팸 SMS 피해는 막을 수 없다.

그건 나몰라라 하겠지.. 카드 3사..


이번 카드3사의 개인정보 유출은 해킹이 아니다.

해킹은 '보안 취약점 찾아내어 시스템에 침입해 정보를 빼가거나 시스템에 유해한 영향을 끼치는 것'을 말하는데, 이건 그냥 안에서 프로젝트를 수행하던 사람이 데이터베이스에서 개인정보를 조회해서 들고 나온 것 이다.

그냥, select * from member; 쳐서 목록 뽑아서 들고 나온 것이다.

해본(?)사람으로써 데이터가 암호화만 되어 있어도 쉽게 들고 나오지는 못하는데, 카드 3사는 개인 정보의 암호화 처리를 하지 않아 쉽게 들고나올 수 있었던 것이다.


이번 사건으로 인해, 모든 개인 데이터는 암호화 하는것이 기본이자 의무가 되었으면 한다.




728x90

'Etc' 카테고리의 다른 글

금융감독원의 '금융정보 한곳에' 서비스  (0) 2016.02.23
역사란 무엇인가?  (0) 2013.12.09
책 읽기의 방법  (0) 2011.05.16
728x90

역사란 무엇인가?

역사학자들은 사소한 사건과 주의(主義)에 대해 온갖 논쟁을 벌이지만, 정작 실제의 삶은 책 속에 숨어 몰래 미소 짓기 마련이다.
후세인들이 이해하는 역사란 종이더미에 묻힌 채 침침해진 눈으로 세상을 바라본 저자의 묘사에 지나지 않는다. 역사란 그저 그들의 눈에 비친 삶의 아름다움과 애수일 뿐인 것이다. 게다가 생생히 살아 숨 쉬는 사실조차도 저자의 도덕적 수치심으로 인해 혹은 정치의 칼날로 인해 왜곡될 수 있다.

- '여왕의 시대' 중에서 -


완전 동감한다.
역사는 사실적으로 기록 되었지만 사실이 아닐 수 있다.
그 범위는 우리가 생각하는 것 이상일 것이다.
인간에 의해 기록된 것은 언제든 고쳐지고 왜곡될 수 있다.
그리고, 그 중심에는 인간의 욕심이 있다..

728x90
728x90

프로그램이 재미가 없는가?

회사에서 하는 일이 너무 단순해서 밤을 지새울 정도의 흥미가 없는가?

그런 사람에게는 프로젝트 오일러(http://projecteuler.net/)를 추천한다. 자기가 가장 좋앟는 프로그래밍 언어를 이용해서 풀 수 있는 문제가 가득하고, 전 세계의 프로그래머들과 의견을 나누거나, 선의의 경쟁도 할 수 있다.

프로젝트 오일러와 비슷한 성격의 프로그래밍 사이트로는 코드쉐프(http://www.codechef.com/)라는 곳도 있다. 


직장생활을 하는 프로그래머들이 이런 사이트에서 즐길 수 있는 시간이 많을 수는 없겠지만, 중요한 것은 멈추지 않고 계속 도전하고 공부하는데 있다.

728x90

'Information' 카테고리의 다른 글

Creative WP-250 Reset 하기  (6) 2014.06.11
오픈코스웨어 사이트 모음  (0) 2013.03.04
한번에 보는 NFC 역사  (0) 2013.01.16
728x90


오픈코스웨어(OCW : Open Course Ware) 

대학에서 실제로 진행되는 강의를 온라인을 통해 청강 할 수 있게 만든 일종의 지식나눔 프로그램.

미국의 MIT나 하버드 등 명문 대학들이 먼저 시작했고, 대한민국에서도 많은 대학들이 오픈코스웨어를 실시하고 있습니다.


국내 주요 오픈코스웨어 사이트 

▶ KOCW(Korea Open Course Ware): www.kocw.net

    우리나라의 한국교육학술정보원에서 국내 OCW를 총괄하는 대표 사이트

▶ 펭귄스텝: http://www.penguinstep.net/

    숙명여대 김형률 교수가 운영. 미국 아이비리그 대학 강의, 세계 각국의 주요 뉴스, 외국인을 위한 영어공부 동영상, 유명인의 특강과 인터뷰까지 다양한 동영상으로 채워져 있다. 

▶ 한국오픈코스웨어콘소시엄(KOCWC): www.kocwc.org

    고려대, 부산대, 서울산업대, 인하대, 한동대 등 국내 17개 대학 참여. 

▶ 숙명여자대학교 스노우: www.snow.or.kr 

    해외 대학을 비롯해 TED 강의, 국내 강의까지 아우른다.

▶ 숙명여자대학교 OCW: http://ocw.sookmyung.ac.kr/

▶ 성균관대학교 OCW: http://skkolar.skku.edu/ 

▶ 경희대학교 OCW: http://ocw.khu.ac.kr/

▶ 서울대학교 OCW: http://ocw.snu.ac.kr/

▶ 고려대학교 OCW: http://ocw.korea.edu/ 

▶ 한양대학교 OCW: http://www.howl.or.kr/index.action 


국외 주요 오픈코스웨어 사이트 

▶ TED: http://ww.ted.com

    기술, 디자인, 엔터테인먼트 등 분야별 강연, 회의 동영상 자료 및 한국어 번역도 일부 제공.

▶ 러너스티비닷컴: http://www.learnerstv.com

    기초과학 관련, 전공 노트를 함께 보는 사이트. 

▶ 해외 교육 동영상 총집합: http://www.infocobuild.com

▶ 세계 유명 석학 강의 총집합: http://www.academicearth.org

    하버드대, 스탠퍼드대, 예일대, MIT 강의 등 수록. 사이트 에디터들이 뽑은 1위부터 10위까지 강의가 ‘Playlists’로 따로 정리돼 있다.


[웹으로 배운다] 책에서 언급한 주요 웹 사이트 

▶ MIT 월터 르윈의 비디오 교재: http://ocw.mit.edu/OcwWeb/Physics/8-01Physics-IFall1999/VideoLectures/index.htm

▶ MIT 오픈코스웨어(OCW): http://ocw.mit.edu/


제1장

▶ 구글 북스: http://books.google.com/

▶ 뉴욕 타임스 타임스 머신: http://timesmachine.nytimes.com/browser

▶ 미국국립미술관(National Gallery of Art) 온라인 트위터: http://www.nga.gov/onlinetours/index.shtm

▶ 아카이브(arXiv.org): http://arxiv.org/

▶ 네이처 프리시딩스(Nature Precedings): http://precedings.nature.com/

▶ 플로스(PLoS.org): http://www.plos.org/index.php

▶ 생명 백과사전(EOL, The Encyclopedia of Life): http://www.eol.org/

▶ 월드 와이드 텔레스코프(World Wide Telesope): http://www.worldwidetelescope.org/Home.aspx

▶ 구글 스카이: http://google.com/sky/

▶ 디아이와이바이오(DIYbio): http://diybio.org/

▶ 테이킹잇글로벌(TakingITGlobal): http://www.tigweb.org/

▶ 이랜스(Elance): http://www.elance.com/

▶ 케이프타운 오픈 에듀케이션 선언: http://www.capetowndeclaration.org/ 


제2장

▶ 사카이(Sakai): http://sakaiproject.org/

▶ 일본 오픈코스웨어 컨소시엄(JOCW): http://www.jocw.jp/index_j.htm

▶ 중국, 코어(CORE): http://www.core.org.cn/

▶ 스페인어권(일부 포르투갈어권 포함), 우니베르시아(Universia): http://www.universia.net/

▶ 유니버시티서프(UniversitySurf.net): http://icb.u-bourgogne.fr/universitysurf/en/index.html

▶ 무들(Moodle): http://moodle.org/

▶ 랜디 포시, 마지막 강의: http://www.youtube.com/watch?v=ji5_MqicxSo

▶ 칼 와이먼, PhET: http://phet.colorado.edu/

▶ 마이클 웨시, "현대 학생의 비전(A Vision of Students Today)": http://www.youtube.com/watch?v=dGCJ46vyR9o

▶ 카네기멜론대학의 공개 자기주도 학습(Open Learning Initiative, OLI): https://oli.web.cmu.edu/openlearning/

▶ 미국국립과학디지털도서관(NSDL): http://nsdl.org/

▶ 조지 루카스 교육재단, 에듀토피아(Edutopia): http://www.edutopia.org/

▶ 커리키(Curriki): http://www.curriki.org/

▶ MIT, 블로섬즈(BLOSSOMS): http://blossoms.mit.edu/

▶ 커넥션즈(Connexions): http://cnx.org/

▶ 플랫 월드 놀리지 (Flat World Knowledge): http://www.flatworldknowledge.com/

▶ 영국 개방대학(The Open University): http://www.open.ac.uk/

▶ 서부주지사 대학 (WGU): http://www.wgu.edu/

▶ 아프리카 가상대학(African Virtual University): http://www.avu.org/

▶ 유네스코 가상대학(UNESCO Virtual University): http://www.unesco.org/iiep/virtualuniversity/

▶ 『오프닝 업 에듀케이션(Opening Up Education)』(The MIT Press)
    http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11309&mode=toc

    * 위 URL에서 PDF 파일을 무료로 다운로드할 수 있다.

▶ 카네기재단, ‘교육과 학습의 갤러리(Gallery of Teaching & Learning)’: http://gallery.carnegiefoundation.org/

▶ 캘리포니아 주립대학기구, 메를로(MERLOT): http://www.merlot.org/

▶ 교토 대학, 모스트(MOST): https://online-tl.org/ 


제3장

▶ 유니버시티 오브 더 피플(University of the People): http://www.uopeople.org/

▶ 칸 아카데미 (Khan Academy): http://www.khanacademy.org/

▶ 피닉스 대학(University of Phoenix): http://www.phoenix.edu/

▶ 크리에이티브 코먼스(Creative Commons): http://www.creativecommons.org/

▶ 크리에이티브 코먼스 재팬: http://www.creativecommons.jp/ 


제4장

▶ 키프 툴킷(KEEP Toolkit): http://www.cfkeep.org/

▶ P2P 대학(Peer 2 Peer University): http://p2pu.org/

▶ 아르헨티나, 올키즈 온라인(All Kids Online): http://www.aula.chicos.edu.ar/portal/ 


제5장

▶ 나고야 대학, 고잉 실러버스(Going Syllabus): http://www.cshe.nagoya-u.ac.jp/gs/index.html

▶ 간사이 대학, CEAS: http://www.atl.kansai-u.ac.jp/top10/index.php

▶ Smart.fm: http://smart.fm/

    * 해당 사이트는 2011년 1월자로 ‘아이노우(iKnow!)'로 개편되었다. http://iknow.jp/


728x90
728x90

한국 IDG에서 퍼온 기본내용(원본링크)에서 이미지 자료와 링크 자료들을 따로 찾아서 정리한 자료 입니다.

제목이 '한번에 보는 NFC역사' 인데, 그닥 한번에 보이지는 않네요..

뭐, 어쨌든 가볍게 참고하기엔 괜찮은 듯.. - by marga.





NFC (Near Field Communication) 

NFC는 단거리 무선통신 기술로 소매 거래 및 기타 디지털 거래를 위한 대금 지불 등에서 사용할 수 있다.


NFC는 이미 많은 스마트폰 및 태블릿에 적용되어 있으며 대중교통 환승 및 소규모 소매 거래 등을 위해 한국과 일본에서 수년동안 널리 보급됐다. 유럽, 인도, 미국 등에서는 구매를 위한 초기 NFC 시범 사업이 진행 중이다.


스마트폰에 탑재되어 있는 NFC 칩은 다른 NFC 지원 기기와 통신하는데 사용될 수 있다. 이 기술은 양방향으로 작동해 정보를 서로 교환할 수 있다. 


이는 은행이 NFC 지원 스마트폰을 통해 상점에서 전자적으로 결제를 승인할 수 있음을 의미하며, 해당 상점의 NFC 결제 단말기는 휴대폰에 영수증을 전송할 뿐만 아니라 쿠폰 또는 기타 미래의 구매를 위한 판촉물을 전송할 수 있다.


또한 NFC 스마트폰은 정보를 전송하기 위해서 표지판에 부착할 수 있는 작은 NFC 칩인 NFC 태그를 읽고 음악과 기타 데이터 파일을 교환하는 목적으로도 사용할 수 있다. 삼성의 갤럭시 S3 등의 스마트폰은 NFC를 사용하기 위해 안드로이드 빔(Android Beam) 기능을 사용해 블루투스(Bluetooth) 데이터 전송을 대체하고 있다.



어떻게 작동하는가 

NFC 기술은 ISO/IEC 표준을 사용하며 1983년에 처음으로 특허를 받은 RFID(Radio Frequency Identification)을 기반으로 한다. 


NFC는 2003년에 ISO/IEC 표준으로서 승인됐다. 노키아, 필립스, 소니 등이 2004년에 구성한 NFC 포럼은 NFC와 기기 준수를 촉진하며 현재 신용카드를 발급하는 은행, 무선 통신업체, 모바일 기기 제조업체 등 175개 이상의 회원사를 확보하고 있다.


NFC 지원 기기는 통신을 위해 반드시 서로 4cm 이내로 접근해야 한다. 정보를 교환하기 위해 실제로 물리적으로 접촉할 필요는 없다. NFC 칩이 탑재된 두 대의 기기를 근접시키면 근로자들이 출입을 위해 수년동안 사용해 온 카드 및 출입증과 유사한 방식으로 자기 유도가 활성화된다. 


일단 두 대의 기기를 연결하면 라이선스가 존재하지 않는 13.56 MHz의 라디오 주파수를 이용해 데이터를 교환한다. 이는 RFID 태그 및 비 접촉 스마트카드와 유사한 주파수다. 속도는 상대적으로 느린 최대 424Kbps를 지원한다.


NFC는 암호화를 지원하며 통신을 위해 기기를 가까이 근접시켜야 하기 때문에 보안이 강력한 편이다. 왜냐하면 이런 가까운 거리에서 해커가 무선 신호를 가로채는 것은 거의 불가능하기 때문이다. NFC는 블루투스 무선보다 더 적은 전력을 소모하지만, NFC 사용이 스마트폰의 배터리 사용 시간에 어느 정도의 영향을 미치는 지 현재 연구가 진행 중이다.


NFC 포럼은 NFC 작동의 세 가지 모드를 정의하고 있다. P2P(Peer to Peer) 모드는 두 대의 NFC 기기가 서로 통신하여 정보를 교환하고 파일을 공유하도록 한다. 읽기/쓰기 모드는 NFC 기기가 스마트 포스터(Smart Poster)와 디스플레이에 내장되어 있는 NFC 태그에 저장되어 있는 정보를 읽도록 한다. 카드 에뮬레이션 모드는 NFC 기기를 스마트 카드처럼 사용해 사용자들이 물건을 구매할 수 있도록 한다.



미국의 NFC 및 기타 대안 

구글 월렛(Google Wallet)은 모바일 결제를 위해 NFC를 사용하는 애플리케이션이다. 이 애플리케이션은 2011년 9월 미국에서 스프린트의 무선 네트워크를 사용하도록 출시된 넥서스 S(Nexus S)를 통해 처음 등장했다. 2012년에 출시된 삼성의 갤럭시 S3는 데이터 공유를 위한 NFC와 S 빔을 지원한다.



또한 삼성은 2012년에 NFC 기기로 제작하고 수정할 수 있는 소형 NFC 텍타일(TecTile) 태그를 출시했다.(관련기사) 예를 들어, 침대 부근에 놓아둔 태그에 휴대폰을 가까이 가져갈 때마다 휴대폰의 음악 앱을 실행하도록 설정할 수 있다. 


또한 NFC 태그는 빌보드(Billboard) 또는 키오스크(Kiosk)에서 스마트폰 또는 기타 활성화된 기기로 읽었을 때 정보를 제공하기 위해 사용할 수 있는 QR 코드와 유사한 방식으로 사용할 수 있다.


2012년 9월 애플의 아이폰 5가 출시됐을 때, 많은 사람들이 NFC가 탑재될 것이라 예상했지만 그렇지 않았다. 대신에 애플의 패스북(Passbook) 앱과 상점 및 공항의 체크인 카운터에서 광학 스캔 단말기로 읽는 휴대폰 디스플레이 상의 바코드(Barcode)를 사용하고 있다. 스타벅스와 던킨 도너츠 또한 커피 등을 구매하려는 고객들을 위해 스마트폰 디스플레이의 바코드를 읽는 광학 스캐너에 의존하고 있다.


미국에서 모바일 지갑을 개발하고 있는 AT&T, 버라이존 와이어리스, 티모바일 USA의 합작업체인 이시스(Isis)는 2012년 10월에 솔트레이크시티(Salt Lake City)와 오스틴(Austin)에서 NFC 지원 단말기에서 NFC 지원 스마트폰으로 대금을 결제하는 시범 프로젝트를 진행 중이다.


NFC와 모바일 지갑을 중심으로 하는 활동은 지난 8월 베스트 바이(Best Buy), 월마트(Walmart), 타겟(Target) 등의 주요 소매점들이 모바일 결제 네트워크인 MCX(Merchant Customer Exchange)를 구성한 이후 더욱 활발해졌다.


MCX가 현재 어떤 기술을 사용하는 지는 밝히지 않았지만, 이에 참여한 소매점들의 규모와 영향력을 생각할 때 모바일 지갑의 성장에 지대한 영향을 미칠 것으로 예상된다. 아이폰에 사용되는 바코드와 광학 스캐너 등 NFC에 대한 대안도 속속 등장하고 있다.


스퀘어(Square)와 BOA(Bank of America)의 MPoD(Mobile Pay on Demand) 서비스 등을 통해 소규모 소매점들은 스마트폰에 부착해 앱을 이용해 신용카드 정보를 전송하고 승인을 받는 신용카드 리더를 사용할 수 있게 됐다. 고객들은 스마트폰의 화면에 전자적으로 서명한다.


애널리스트는 미국 내에서 신용카드와 수표가 널리 확산되어 있는 상황 덕분에 소비자들이 스마트폰의 NFC에 큰 관심을 보이고 있는 것으로 보고 있다. 또한 설문조사에 따르면 다수의 미국인들이 여전히 결제 시 스마트폰의 보안을 신뢰하지 않는 것으로 나타났다.




728x90

+ Recent posts