여러개의 컬럼(다중열) 업데이트

여러개의 컬럼(다중열) 업데이트

UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

또는

update zTable1
set cValue = x.cValue
from (
        select cFk, cValue from zTable2
) x
where  zTable1.cPk = x.cFk

Job 스케쥴러 설정 방법

Job 스케쥴러 설정 방법

1. 개체 탐색기의 SQL Server 에이전트 - 작업 (우클릭)  - 새작업 클릭

2. 일반에서 이름과 설명을 작성 하고 단계

3. 단계 에서 새로만들기를 클릭 하고 단계 이름과 데이터 베이스 선택, 명령 구문을 입력 

4. 일반 아래 고급 (별다른 설정 없음)

5. 일정은 스케줄러 반복될 설정을 입력

6. 경고, 알림, 대상  (별다른 설정 없음)

7. 작업폴더 아래 등록 되었는지 확인 
CDC(변경 데이터 캡처, Change Data Capture Functions) 설정

CDC(변경 데이터 캡처, Change Data Capture Functions) 설정

-- 1. cdc 설정
select is_cdc_enabled, * from sys.databases -- cdc가 걸려있는 DB 확인
go
use db1 -- cdc를 설정할 DB로 이동
go
exec sys.sp_cdc_enable_db -- DB에 cdc 설정
go
--메시지 22830, 수준 16, 상태 1, 프로시저 sp_cdc_enable_db_internal, 줄 193
--데이터베이스 db1이(가) 변경 데이터 캡처용으로 설정됨을 나타내는 메타데이터를 업데이트할 수 없습니다. 명령 'SetCDCTracked(Value = 1)'을(를) 실행하는 동안 오류가 발생했습니다. 반환된 오류는 15517: '보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다.'입니다. 동작 및 오류를 사용하여 오류의 원인을 파악하고 요청을 다시 제출하십시오.
--> sp_changedbowner 'sa' -- sa권한으로 변경 후 실행
--exec sys.sp_cdc_disable_db -- DB해제
-- cdc 기록할 테이블 설정
EXEC sys.sp_cdc_enable_table
@source_schema = N'play', -- 스키마
@source_name = N'users', -- 테이블명
@role_name = NULL,
@capture_instance = N'sync_portal', -- 기록될 이름
@supports_net_changes = 1, -- 캡처 인스턴스에 순 변경 함수 생성
@captured_column_list = N'user_id,x_user_id, manager_id,grade, recommand_level', -- 변경시 등록되는 컬럼명
@filegroup_name = N'PRIMARY'
go
--메시지 22943, 수준 16, 상태 1, 프로시저 sp_cdc_enable_table_internal, 줄 313
--순 변경 추적에 대한 행을 고유하게 식별하는 데 사용되는 열이 캡처된 열 목록에 포함되어 있어야 합니다. 원본 테이블의 기본 키 열이나 매개 변수 @index_name에 지정된 인덱스에 대해 정의된 열을 캡처된 열 목록에 추가한 후 작업을 다시 시도하십시오.
--> pk @captured_column_list에 들어가 있어야 한다.
--exec sys.sp_cdc_disable_table -- Table 해지
--@source_schema = N'play',
--@source_name = N'users',
--@capture_instance =N'sync_portal'
select * from cdc.change_tables -- 등록된 cdc 내역 확인
select * from cdc.sync_portal_CT order by __$start_lsn desc -- cdc에서 쓰여진 내역 확인 (* 해당이름_CT 형태로 호출해야 한다.)
-- 열 __$operation은 변경 내용과 연결된 작업 기록. 1 = 삭제, 2 = 삽입, 3 = 업데이트(이미지 이전) 및 4 = 업데이트(이미지 이후)
-- 2. 테스트
-- 테스트 값 등록
--select top(100) x_user_id,userid,grade,grade,* from db1.play.users a order by a.user_id desc
select top(100) x_user_id,manager_id,userid,grade,grade,* from db1.play.users a where user_id = 12345
select top(100) user_id,manager_id,grade,* from [LOGIN_SERVER].Vanilla.dbo.Users a where user_id = 12345
select count(*) from db1.cdc.sync_portal_CT
select a.x_user_id, a.manager_id, a.grade from (select ROW_NUMBER() over(partition by x_user_id order by __$start_lsn desc) as irow, __$start_lsn, x_user_id, manager_id, grade from cdc.sync_portal_CT with(nolock) where __$operation =4) a where irow = 1
update db1.play.users set manager_id = 111673 where x_user_id = 12345
update db1.play.users set grade = 2 where x_user_id = 12345
update [LOGIN_SERVER].Vanilla.dbo.Users set user_nm = getdate() where user_id = 12345
-- exec dbo.sp_users_sync
-- 테스트 결과 확인 (아이디별 최종 변경된 값만 확인)
-- 3. 프로시져 생성 (cdc 기능 동기화, 아이디별 최종 변경된 값만 적용 )
create procedure dbo.sp_users_sync
with encryption
as
begin
begin try
declare @t_user_sync table(t_x_user_id bigint, t_manager_id bigint, t_grade smallint);
-- 테이블 변수에 변경된 정보 넣기
insert into @t_user_sync
select a.x_user_id, a.manager_id, a.grade from (select ROW_NUMBER() over(partition by x_user_id order by __$start_lsn desc) as irow, __$start_lsn, x_user_id, manager_id, grade from cdc.sync_portal_CT with(nolock) where __$operation =4) a where irow = 1
--select * from @t_user_sync
-- 링크서버 변경
if((select count(t_x_user_id) from @t_user_sync) > 0)
begin
update a
set a.manager_id = b.t_manager_id, a.grade= b.t_grade, a.recommand_last_update = getdate()
from
[LOGIN_SERVER].Vanilla.dbo.Users AS a
inner join @t_user_sync AS b
on a.user_id = b.t_x_user_id
--where a.user_id = b.t_x_user_id
truncate table cdc.sync_portal_CT
end
end try
begin catch
IF @@trancount > 0
begin
ROLLBACK TRANSACTION;
end
end catch
end
go
grant exec on dbo.sp_users_sync to public
go
-- 4. 스케줄러 등록
스케줄러로 위 프로시저(dbo.sp_users_sync) 반복
JSON parser사용 (JSON Text를 JSON Object로 변환)

JSON parser사용 (JSON Text를 JSON Object로 변환)

JSON parser(JSON Text를 JSON Object로 변환)
- JSON.org 제공하는 JSON parser사용
- JSON parser는 JSON text만 받아들이고 다른 스크립트는 거부

예)
var obj = JSON.parse(returnValue.responseText);
// -> { id:"kim", sex:"male" }

- 키와 값을 모두 쌍따옴표(")로 묶어주는 문법을 정확하게 지켜주어야 한다.
{ "id":"kim", "sex":"male" }

- JSON.parse() 사용하기 위해서는 json2.js가 필요
- json2.js는   JSON의 편리한 사용을 위해 만든 JSON API의 새버전
- API에는 2개의 메서드가 들어있는데 JSON.stringify()와 JSON.parse().
- JSON.stringify()는 JSON.parse()와는 완전히 반대로 JSON 객체를 주면 JSON 텍스트로 변환.

Grunt 설명 및 사용(grunt-uisemin, jsmin)

1. Grunt 란
- Grunt is a task-based command line build tool for JavaScript projects.
- 자바스크립트 용 빌드 툴
- Node설치 필요

1. Grunt 설치
- Command Line Interface(CLI)를 설치 (옵션 -g  global설치)
$ npm install -g grunt-cli
- 프로젝트 폴더의 root경로에서 grunt를 설치 (옵션  --save-dev  package.json 파일과 연동)
$ npm install grunt --save-dev
- package.json 파일 생성
$ npm init
- Gruntfile.js 파일 생성
- package.json과 같은 위치(프로젝트 폴더의 root경로)에 Gruntfile.js 생성. (Grunt가 실행될 때, 이 파일을 보고 어떠한 동작을 할지 결정하는데 쓰인다.)


2. grunt-uisemin란
- js, css 파일 팩키징
- usemin에서 concat, uglify, cssmin, requirejs 플러그인 실치필요
- 설치
$ npm install grunt-usemin --save-dev

2. grunt-uisemin설정
-Gruntfile.js  파일 편집










- html 파일 편집
  <!-- build:css ../../../FrontEnd/home.zeus/all_css.min.css -->
    <link type="text/css" rel="stylesheet" href="/css/jquery-ui-1.12.1.min.css" />
    <link type="text/css" rel="stylesheet" href="/css/a.css" />
  <!-- endbuild -->
  <!-- build:js ../../../FrontEnd/home.zeus/all_script.min.js -->
    <script type="text/javascript" src="/common/js/jquery-3.1.1.min.js"></script>
    <script type="text/javascript" src="/common/js/jquery.signalR-2.2.2.min.js"></script>
    <script type="text/javascript" src="/common/js/socket.io-1.7.3.min.js"></script>
  <!-- endbuild -->

- cmd에서 루트 경로로 이동후 아래 명령어 실행
grunt useminPrepare concat uglify cssmin


3. jsmin란
- javascript를 min파일 형식으로 압축
- http://crockford.com/javascript/jsmin.html 이동하여 "zip file containing an MS-DOS.exe file" 링크로 다운로드

3. jsmin 사용
jsmin < ./common/js/home.default.js > ./common/js/home.default.min.js
jsmin < ./common/js/home.function.js > ./common/js/home.function.min.js









'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files'에 대한 쓰기 권한이 없습니다. 또는 '/' 응용 프로그램에 서버 오류가 있습니다.액세스가 거부되었습니다. 또는 Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\push_02\b53a9d10\b4c4f6d1\App_Web_circleareacalculator.aspx.cdcab7d2.bdlb8fuq.dll' -- '액세스가 거부되었습니다. '

'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files'에 대한 쓰기 권한이 없습니다. 또는 '/' 응용 프로그램에 서버 오류가 있습니다.액세스가 거부되었습니다. 또는 Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\push_02\b53a9d10\b4c4f6d1\App_Web_circleareacalculator.aspx.cdcab7d2.bdlb8fuq.dll' -- '액세스가 거부되었습니다. '

원인 :
'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files'에 대한 쓰기 권한이 없습니다.
또는 ,
'/' 응용 프로그램에 서버 오류가 있습니다.액세스가 거부되었습니다.
또는 ,
Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\push_02\b53a9d10\b4c4f6d1\App_Web_circleareacalculator.aspx.cdcab7d2.bdlb8fuq.dll' -- '액세스가 거부되었습니다. '

->권한이 없거나 꼬여서 발생

해결 1 :
시작 - 실행 - cmd 이후 창에서
c:\> cd C:\Windows\Microsoft.NET\Framework\v2.0.50727   경로 이동후

c:\Windows\Microsoft.NET\Framework\v2.0.50727> aspnet_regiis -ga "NT AUTHORITY\NETWORK SERVICE"   실행
NT AUTHORITY\NETWORK SERVICE에게 ASP.NET에서 사용하는 IIS 메타베이스 및 기타 디렉터리에 대한 액세스 권한 부여를 시작합니다.
NT AUTHORITY\NETWORK SERVICE에게 ASP.NET에서 사용하는 IIS 메타베이스 및 기타 디렉터리에 대한 액세스 권한을 부여했습니다.


해결 2 :
탐색기   >   Windows   >   속성   >   보안   >   IIS_OUSER    >   편집
IIS_IUSERS   >   모든 권한   >   허용

해결 3 :
%SystemRoot%\Temp 폴더의 속성창에서 IIS_IUSRS에 권한 줌.


'ASP.~' 형식이 'C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\~' 및 'C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\~'에 모두 있습니다.

'ASP.~' 형식이 'C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\~' 및 'C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\~'에 모두 있습니다.

원인 :
(IIS의 버그)  임시파일 중복생성하면서 생기는 오류.

해결 :
 Temporary 파일을 삭제. (IIS를 멈춰야함)

  1. iisreset /stop
  2. rmdir /q /s "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files"
  3. rmdir /q /s "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"
  4. md "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files"
  5. md "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"
  6. xcacls "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files" /E /G MYMACHINE\IIS_WPG:F /Q
  7. xcacls "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files" /E /G MYMACHINE\IIS_WPG:F /Q
  8. iisreset /start

파일 자동증가 변경

파일 자동증가 변경

데이터베이스에서 파일 자동증가 옵션은 설치시 기본으로 적용되어 있는 기능임.

DB [속성]> [파일] >[자동증가/최대크기]를 줄여주어야 함.


데이터, 로그 파일이 언제 자동증가 했고, 자동증가시 걸린 시간, 크기 등을 확인하는 방법은 [보고서] > [표준 보고서] > [디스크 사용] 임.
테이블별 용량 size 크기 확인 쿼리

테이블별 용량 size 크기 확인 쿼리

select top 10
 table_name = convert(varchar(30), min(o.name))
 , table_size = convert(int, ltrim(str(sum(reserved) * 8.192 / 1024., 15, 0))), UNIT = 'MB'
from sysindexes i
 inner join sysobjects o on (o.id = i.id)
where i.indid in (0, 1, 255)
 and o.xtype = 'U'
group by i.id
order by 2 desc
컬럼명 검색 쿼리

컬럼명 검색 쿼리

SELECT
    B.NAME AS 테이블명
    ,A.NAME AS 컬럼명
    ,TYPE_NAME(USER_TYPE_ID) AS 데이타타입
    ,CONVERT(INT, MAX_LENGTH) AS 길이
    ,B.CRDATE AS 테이블생성일
FROM SYS.ALL_COLUMNS AS A
INNER JOIN SYSOBJECTS AS B ON A.OBJECT_ID=B.ID
    AND B.XTYPE='U'
WHERE A.NAME='컬럼명'
System.IO.FileLoadException: '파일이나 어셈블리 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'  또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다.찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. (예외가 발생한 HRESULT: 0x80131040)'

System.IO.FileLoadException: '파일이나 어셈블리 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다.찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. (예외가 발생한 HRESULT: 0x80131040)'

문제 :
System.IO.FileLoadException: '파일이나 어셈블리 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. (예외가 발생한 HRESULT: 0x80131040)'

해결 :
net stop wuauserv
-> 응용프로그램풀 32비트를 사용으로 변경
-> web.config 수정
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
추가





헤더에 정보를 넣어 엔진엑스(nginX)에서 캐쉬 적용 안시키기(no-cache)

헤더에 정보를 넣어 엔진엑스(nginX)에서 캐쉬 적용 안시키기(no-cache)

asp :
<%
Session.CodePage  = 65001
Response.CharSet  = "UTF-8"
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-control", "no-cache"
Response.Buffer = true
Response.Expires = -1
%>

php:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
iis 7의 세션 시간 연장하는 법

iis 7의 세션 시간 연장하는 법

- IIS 관리자에서 사이트 선택 후 IIS에 있는 ASP 를 선택해서 들어간 후 세션 속성에서 시간 제한을 늘림
- IIS 관리자의 응용 프로그램 풀에서 사이트 선택 후 -> 오른쪽 마우스 고급 설정 클릭 -> 아래쪽 프로세스 모델 부분 보면 '유휴 시간 제한(분)'  늘림
가로 데이터를 세로로 피펏

가로 데이터를 세로로 피펏

SELECT  [1],[2], [3], [4], [5] FROM
(
select  m_id, user_grade from dbo.table_name
) AS st
PIVOT
(
min(m_id)
FOR user_grade IN ( [1],[2], [3], [4], [5])
) AS pt


INSERT 데이터를 삽입할 원본 테이블 (데이터를 삽입할 컬럼 명)  
OUTPUT INSERTED.사본 테이블에 들어갈 원본테이블 삽입된 컬럼명 또는 값
INTO 데이터를 삽입할 사본 테이블  (데이터를 삽입할 컬럼 명)  
VALUES (원본에 삽입할 데이터)

테이블 및 뷰 확인 방법

테이블 및 뷰 확인 방법

select top(100)* from sys.views

-- 테이블 확인
select   table_schema, table_name   from information_schema.TABLE_CONSTRAINTS group by table_schema, table_name
-- 뷰 확인
select    table_schema,  view_name  from information_schema.VIEW_TABLE_USAGE group by table_schema, view_name
같은 테이블을 두번 JOIN 해야하는 경우

같은 테이블을 두번 JOIN 해야하는 경우


SELECT * FROM a LEFT JOIN b ON a.x = b.x
LEFT JOIN b ON a.y = b.x
그런데 위와 같이 하면 b 가 이미 선언되어있어서, 안된다고  error 가 뜬다.
->
SELECT *  FROM a LEFT JOIN b ON a.x = b.x
LEFT JOIN b AS c ON a.y = c.x

->
실 사용:
select p.title AS q_title, p.cont  AS q_cont , p1.title AS a_title, p1.cont  AS a_cont  FROM   play.Fn_contact(@xfnContactKey) as p
left join  play.Fn_contact(@xfnContactKey) as p1
on p.idx =  p1.parent_id where p.idx =  Cast(@sIdx AS INT)

mssql 에서 SQL Insert 문으로 데이터 내보내기

mssql 에서 SQL Insert 문으로 데이터 내보내기

개체 탐색기의 데이터베이스 선택

마우스 오른쪽 클릭 > 태스크 > 스크립트 생성

스크립트 생성 마법사 > [다음] 버튼 클릭

개체 선택 단계 > 원하는 개체 선택

본인은 특정 개체만 선택했고 [다음] 클릭

스크립팅 옵션 설정 단계 > 본인은 파일로 저장 선택했음 > [고급] 클릭

고급 스크립팅 옵션의 핵심
- 스크립팅할 데이터 형식 = '데이터만' 또는 '스키마 및 데이터' 선택 > [확인]
부모창으로 돌아가면 [다음]

요약 단계 > [다음]

스크립트 저장 단계

경로에 저장됨

출처 : http://itzone.tistory.com/514
len함수와 datalength 함수 차이점

len함수와 datalength 함수 차이점

len 함수와 datalength 함수는 문자열의 길이를 계산하여 반환해 주는 함수

len함수는 순수하게 문자열의 길이를 반환, 공백 계산 X
datalength 함수는 문자열의 byte수를 반환, 공백 계산 O

형식 : len( string_expression )  반환값 : int
형식 : datalength( expression  ) 반환값 : int


SELECT len('동해물과백')
SELECT len('동해물과백 ')
SELECT len('www.naver.com')

결과값
5
5
13

SELECT datalength('동해물과백')
SELECT datalength('동해물과백')
SELECT datalength('www.naver.com')

결과값
10
11
13
모바일에 넣을 html5 스마트폰(모바일) 게임 조사

모바일에 넣을 html5 스마트폰(모바일) 게임 조사

모바일에 넣을 html5 스마트폰(모바일) 게임 조사
1. http://game100.tistory.com/155
2. 지렁이 :  http://spritted.com/ko/game/slither.io
3. 트럭 여행 : https://spritted.com/ko/game/happy-wheels
4. 야구9단 m.ya9.naver.com
5. 카카오 게임별
6. http://spritted.com/ko/game/slither.io
7. https://spritted.com/ko
8. 게임엔 안에 게임들
9. www.html5games.com
marquee tag(글자흐르기) & 줄간격,글씨간격 조절하기

marquee tag(글자흐르기) & 줄간격,글씨간격 조절하기


* 위로 흘러가는 글
1) <marquee direction="up" scrollamount="1" height="150" style="line-height:130%;"><font color=red size=3 face=굴림>적고싶은 글</font></marquee>

2) <marquee direction="up" scrollamount="2" height="150" style="color:red; font-size:14pt; font-weight:bold; font-family:바탕; line-height:200%;">적고싶은 글</marquee>

* 아래로 흘러가는 글
1) <marquee direction="down">적고싶은 글</marquee>

2) <marquee direction="down" style="line-height:200%;" scrollamount="1"><font color="olive">적고싶은 글</marquee></font>

* 옆으로 흘러가는 글
<marquee behavior="scrooll" width="800">적고싶은 글</marquee>


<!-- 마퀴 태그를 사용한 문자표현 입니다. div style= 에서 문자의 top,좌우 위치를 정의 합니다. -->
<div style="width: 470; position: absolute; z-index: 1; left: -40; top: 60">
<marquee style="color: #FF9900; font-size: 40; font-family: arial; font-weight: 800" width=470>Welcome to MORAEDLE ~유기농법으로 생산하는 모래들 農場~</marquee>
</div>

* 옆으로 왔다가다 흐르기
<marquee behavior="ALTERNATE" width="200">적고싶은 글</marquee>

* 통통 튀는 글자
<marquee behavior=alternate direction=up height=50><marquee><font color=red size=3 face=굴림><b>통통 튀는 글씨</b></marquee></marquee>

* 글씨가 슬라이드로 올라와서 멈추는 태그
<marquee style="text-align:left;" direction=up scrolldelay=100 scrollamount=1 behavior=slide width=330 height=450><font size=2 color=red>글쓰기</marquee>

* 올라가는 글의 위치를 지정하는 태그
<div id="layer1" style="position:absolute; left:180px; top:420px; width:350px; height:549px; z-index:1;"><MARQUEE DIRECTION=UP SCROLLAMOUNT=1 height=300>글쓰기!!!</marquee></div>

* 글씨가 아래위로 움직이다 올라감
<marquee style="text-align:left;" direction=up behavior=alternate scrollamount=1 height=400> <marquee direction="up" scrollamount="1"><span style="text-align:left;margin-left:10;color:white;filter:shadow(color=ff00ff);height:15px"><font size=3 face=엽서체> 글 쓰기 !!! </marquee></marquee>

*글자가 올라가다 멈추다 올라가는 태그
<marquee style="text-align:left;" direction=up behavior=alternate scrollamount=1 height=400><style="filter:alpha(opacity=100, style=2, finishopacity=0)" WIDTH="300" height=280><br><marquee style="text-align:left;" direction="up" scrollamount="1"><span style=color:#F9FFFF;filter:shadow(color=#9400D3);height:15px><pre> <font size=3 face=굴림체>글쓰기!!!</marquee></marquee>

*마우스를 대면 글이 멈추고 떼면 다시 올라가는 태그
<MARQUEE onmouseover=stop(); onmouseout=start(); scrollAmount=1 direction=up height=280>글쓰기!!!</marquee>

================================
글 정렬 / 줄간격,글씨간격 조절하기
================================

1. 왼 줄 맞워서 왼쪽에서 몇 번째(왼쪽 여백 100)
<P align=left style="margin-left:100;">글</p>

2. 무조건 중앙에(왼쪽여백 150 / 오른쪽 여백 150)
<P align="center" style="margin-right:150; margin-left:150;">글</p>

3. 오른쪽 끝에 맞워서(오른쪽 여백 100)
<P align="right" style="margin-right:100;">글</p>

* 줄간격= 100%~인 경우 (예제는 250%)
<p style="line-height:250%;"><font size="4">태그 사용중 글자 크기를 정할때
4포인트 정도로 했는데..
윗줄과 아랫줄 글자가 겹치거나..
짤립니다^^;
어떻게 해야 하는지 가르쳐 주세요~~~~</font></p>

=====================

줄간격,글씨간격 조절하기

먼저 줄입니다.

<font style="font-size:9pt; line-height:10pt; font-family:굴림;">

위의 글에서 line-height:10pt; 있죠?
저 숫자를 조정해 보세요. 그러면 늘어나기도, 줄어들기도 합니다. l
ine-height:130% 이런것도 가능한건 아시죠..
숫자가 작을수록 좁아지겠지요.

그 다음 글씨 간격.

<font style="font-size:9pt; letter-spacing:-1; font-family:굴림;">
letter-spacing:-1; 이란 부분이 있는데요
저것을 1로 하면 글씨 간격이 1씩 차이나고
-1로 하면 글씨 간격이 1씩 좁아집니다.


원본 :http://zone04.n4.cc/zb41pl3/view.php?id=infor_tema&page=5&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=hit&desc=asc&no=99

visual studio에서 빌드 전후 이벤트등록

visual studio에서 빌드 전후 이벤트등록

설명 : https://msdn.microsoft.com/ko-kr/library/42x5kfw4.aspx

실사용예 : 
프로젝트 -> 속성 ->빌드 이벤트


IF NOT EXIST $(SolutionDir)BinCopy  mkdir $(SolutionDir)BinCopy
xcopy $(TargetPath)  $(SolutionDir)BinCopy /i /d /y
문자열 바이트수로 자르기(LEN 함수와 DATALENGTH 함수)

문자열 바이트수로 자르기(LEN 함수와 DATALENGTH 함수)

LEN 함수는 자리수를, DATALENGTH 함수는 바이트수를 반환

1. SELECT LEN('홍길동'), DATALENGTH('홍길동'), LEN('ABCD'), DATALENGTH('ABCD')
결과값
 3 6 4 4



2. 문자열을 바이트단위로 잘라 쓸 경우
SELECT SUBSTRING(CONVERT(TEXT, '홍길동'), 1, 4),
SUBSTRING(CONVERT(TEXT, 'ABCD'), 1, 4)
결과값
 홍길  ABCD


3. 실사용
문자열을 바이트 단위로 세고, 특정 바이트 수를 넘어가면 '...' 붙여서 출력하는 쿼리의 일부분
CASE
WHEN DATALENGTH(cont)>32
THEN SUBSTRING(CONVERT(TEXT,cont),1,32)+'...'
자바스크립트(Javascript) 소수점 자리수, 올림, 버림, 반올림, 원단위 절삭

자바스크립트(Javascript) 소수점 자리수, 올림, 버림, 반올림, 원단위 절삭

1. 소수점 올림, 버림, 반올림

Math.ceil() : 소수점 올림, 정수형 반환
Math.floor() : 소수점 버림, 정수형 반환
Math.round() : 소수점 반올림, 정수형 반환

var n = 123.456;
alert(Math.ceil(n)); // 124
alert(Math.round(n)); // 123

n = 123.567;
alert(Math.ceil(n)); // 124
alert(Math.floor(n)); // 123
alert(Math.round(n)); // 124


2. 소수점 자리수 표기

toFixed() : 숫자를 문자열로 변환하면서 지정된 소수점 이하 숫자를 반올림하여 출력한다.
toExponential() : 숫자를 문자열로 변환하면서 소수점 앞의 숫자 하나와 지정된 개수의 소수점 이후 숫자로 구성되는 지수표기법을 사용하여 출력한다.
toPrecision() : 지정된 수의 유효 숫자 개수만큼 숫자로 출력한다. 만약 유효 숫자 갯수가 숫자의 정수부분 전체를 출력할 만큼 충분하지 않으면 지수 표기법으로 출력된다.
위 세 가지 Method는 모두 반올림하여 출력된다.

var n = 123.456;
alert(n.toFixed(0)); // 123
alert(n.toFixed(2)); // 123.46

alert(n.toExponential(1)); // 1.2e+2
alert(n.toExponential(3)); // 1.235e+2

alert(n.toPrecision(2)); // 1.2e+2
alert(n.toPrecision(4)); // 123.5
alert(n.toPrecision(7)); // 123.4560


3. 원단위 절사

원단위의 경우 10, 십원단위의 경우 100, 백원단위의 경우 1000, ... 을 이용하면 원단위 절사가 가능하다.

var n = 2117;
n = Math.floor(n/10) * 10; // 10으로 나누면 211.7, floor 함수로 소수점을 버리면 211, 다시 10을 곱하면 2110
alert(n); // 2110


인풋박스(input) 기본입력 설정 ime-mode

인풋박스(input) 기본입력 설정 ime-mode

 inactive default 로 영문모드
 active  default 로 한글모드
 auto  한/영 중 선택된 모드
 disable  영문만을 사용할 수 있는 모드

사용법 : 
<input type="text" style="ime-mode:inactive;" />

or

<style type="text/css">
input.han {ime-mode:active;}
</style>
<input type="text" class="han" />

익스플로러에서만 적용됨.
원도우에서 부팅 시각을 확인하는 방법

원도우에서 부팅 시각을 확인하는 방법

원도우에서 부팅 시각을 확인하는 방법

이벤트 뷰어에서 찾기

이벤트 6005는 이벤트 로그 서비스가 시작되었음을 알리기 위해 부팅할 때 기록
이벤트 6006은 정상 종료(Clean Shutdown) 시 기록
이벤트 6008은 비정상 종료(Dirty Shutdown) 시 기록
이벤트 6009는 부팅할 때마다 기록되며 운영 체제 버전, 빌드 번호, 서비스 팩 수준 및 기타 시스템 관련 정보를 표시

1.  제어판 > 시스템 및 보안 > 관리 도구 > 이벤트 뷰어를 더블클릭!
2. 현재 로그 필터링을 클릭 -> 창이 나오면 이벤트 ID 포함/제외(N): 에서 6006,6005 등록



CMD에서 마지막으로 부팅한 시각을 빠르게 찾을수 있는 방법
1. net stats work 명령어를 사용
2. systeminfo |find “시스템 부트 시간” 명령어를 사용
asp.net 에서 UTF-8로 개발하였을 경우 한글이 깨지는 경우

asp.net 에서 UTF-8로 개발하였을 경우 한글이 깨지는 경우

asp.net 에서 UTF-8로 개발하였을 경우 한글이 깨지는 경우 web.config 파일설정

<configuration>
   <system.web>
   <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="ko-KR" uiCulture="ko-KR"/>
  </system.web>
</configuration>


euc-kr 개발 경우
방법 1]

Response.Write("<meta http-equiv='Content-Type' content='text/html; charset=euc-kr'>")
방법 2]

Response.Charset = "euc-kr";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("euc-kr");


참고 : 
https://msdn.microsoft.com/ko-kr/library/cc438056(v=vs.71).aspx


기타 확인 :
1. 해당 문서의 인코딩이 무엇으로 되어 있는지 확인하여 관련된 파일들의 문서 인코딩을 전부 utf-8 변경

2. meta 태그
meta태그 charset을 지정해주는 문장이 없다면 아래와 같이 추가
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

3. 불러오는 .js파일의 문서 인코딩을 변경할수 없는 경우
신용카드 결재나, 본인 확인 서비스 같은 타 업체에서 지원해주는 서비스일 경우 해당 .js 파일 인코딩은 euc-kr로 되어 있는데 자신의 소스 인코딩은 utf-8로 되어 있는 경우가 있다.
이럴경우 해당 업체에 문의 하면 되기도 하지만,
<script language=JavaScript src="해당서비스js파일.js" charset='euc-kr'></script>
와 같이, 선언해주는 곳에 charset을 지정해주면 이 문제가 해결 된다.

출처 :
http://blog.naver.com/PostView.nhn?blogId=blackfrost&logNo=40155073342

PIVOT, UNPIVOT (행렬 변환)

1. 
PIVOT 함수를 이용하여 간단하게 행렬을 변환할 수 있다.
--. Test_Table







--. 소스
SELECT [001], [002], [003] FROM (     SELECT TestCode, TestName     FROM Test_Table WITH (NOLOCK) ) AS A PIVOT (     MIN(TestName)     FOR TestCode IN ([001], [002], [003]) ) A
--. 결과

출처 : http://acpi.tistory.com/100



1. 
PIVOT

행과 열 변환

1
2
SELECT 컬럼명 FROM 테이블명
PIVOT([집계 함수]([집계 컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명
cs
집계 함수 → SUM(합계), AVG(평균), COUNT(개수), MAX(최대), MIN(최소)



예제)

1
2
3
4
5
6
7
8
9
WITH A AS
(
    SELECT '1학년' AS '학년''1반' AS '반'100 AS '점수'
    UNION ALL SELECT '1학년''2반'30
    UNION ALL SELECT '2학년''1반'80
    UNION ALL SELECT '2학년''2반'90
)
SELECT * FROM A
PIVOT(SUM(점수) FOR 반 IN ([1반],[2반])) AS PVT
cs

A
결과
학년점수학년1반2반
1학년1반1001학년10030
1학년2반302학년8090
2학년1반80
2학년2반90






UNPIVOT

PIVOT의 반대

1
2
SELECT 컬럼명 FROM 테이블명
UNPIVOT([집계될 데이터의 컬럼명] FOR [UNPIVOT할 컬럼 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피벗테이블명
cs



예제)

1
2
3
4
5
6
7
WITH A AS
(
    SELECT '1학년' AS '학년'100 AS '1반'30 AS '2반'
    UNION ALL SELECT '2학년'8090
)
SELECT 학년, 반, 점수 FROM A
UNPIVOT(점수 FOR 반 IN ([1반], [2반]))AS UNPVT
cs

A결과
학년1반2반학년점수
1학년100301학년1반100
2학년80901학년2반30
2학년1반80
2학년2반90



출처 : http://ggmouse.tistory.com/23