반응형
USE DB명

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

-- Don't change anything below this line.

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

GO

​

-- Declare variables

DECLARE @SqlStatement as nvarchar(max)

DECLARE @LogFileLogicalName as sysname

​

-- Alter the database to simple recovery

SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY SIMPLE'

EXEC ( @SqlStatement )

​

-- Make sure it has been altered

SELECT [name], [recovery_model_desc] FROM sys.databases WHERE [name] = DB_NAME()

​

-- Set the log file name variable

SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1-- Shrink the logfile

DBCC Shrinkfile(@LogFileLogicalName, 1)

​

-- Alter the database back to FULL

SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' SET RECOVERY FULL'

EXEC ( @SqlStatement )

​

-- Make sure it has been changed back to full

SET @SqlStatement = 'SELECT [name], [recovery_model_desc] FROM ' + DB_NAME() + '.sys.databases WHERE [name] = ''' + DB_NAME() + ''''

EXEC ( @SqlStatement )

​

​

SET @SqlStatement = 'ALTER DATABASE ' + DB_NAME() + ' MODIFY file ( name = ' + @LogFileLogicalName + ', maxsize = 2000mb ) '

EXEC ( @SqlStatement )

​

​

SET @SqlStatement = 'dbcc shrinkdatabase(' + DB_NAME() + ',2,truncateonly)'

EXEC ( @SqlStatement )

​

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

맨 첫줄의 DB명에 실제 적용할 DB의 이름을 넣으면 됩니다.

그리고 ldf 의 용량을 수정하려면 maxsize 를 수정하시면 됩니다. 위 예제에서는 2000mb 로 되어 있습니다.

실제 현업에서는 10000mb 이상으로 하셔야 될 겁니다.

그리고 에이전트에 등록해서 정기적으로 정리를 하시지 않으면 금방 꽉차버려서 에러가 날 겁니다.

반응형
반응형

데이터베이스 내 모든 테이블에서 특정 이름의 컬럼을 찾는 쿼리

예) 컬럼명이 name, 이름, 성명인 모든 테이블 찾기

DECLARE @T varchar(255), @C varchar(255);

DECLARE Table_Cursor CURSOR FOR

SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u'
AND (b.xtype = 99 OR b.xtype = 35 OR b.xtype = 231 OR b.xtype = 167);

OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;

WHILE (@@FETCH_STATUS = 0) BEGIN

	if (@C = 'name' or @C = '이름' or @C = '성명')	---- 이 부분에 컬럼명을 나열하면 됨
	select @T, @C

FETCH NEXT FROM Table_Cursor INTO @T, @C;

END;

CLOSE Table_Cursor;

DEALLOCATE Table_Cursor;
반응형
반응형

jQuery가 지원하는 CSS 셀렉터들

*

모든 요소와 일치

E1

E1(태그명)인 모든 요소와 일치

E1.class

E1(태그명) 요소의 클래스가 class와 동일한 요소와 일치

E1.#id

E1(태그명) 요소의 id 어트리뷰트 값이 id와 동일한 요소와 일치

E1 E2

E1 요소의 자식인 모든 E2(태그명) 요소와 일치

E1 > E2

E1 요소 바로 아래 자식인 E2 요소와 일치

E1 + E2

E1 요소의 바로 다음에 나오는 형제요소 E2와 일치

E1 ~ E2

E1 요소의 다음에 나오는 모든 형제 E2와 일치

E1[attr]

attr 어트리뷰트를 갖는 E1 요소와 일치

E1[attr=val]

attr 어트리뷰트의 값이 val을 갖는 E1 요소와 일치

E1[attr^=val]

attr 어트리뷰트의 값이 val 값으로 시작하는 E1 요소와 일치

E1[attr$=val]

attr 어트리뷰트의 값이 val 값으로 끝나는 E1 요소와 일치

E1[attr*=val]

attr 어트리뷰트의 값이 val 값을 포함하는 E1 요소와 일치

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

응용 예)

$('#id tr:eq(3)').hide();

tr 중에서 세번째 tr 를 숨기라

$('#id tr:gt(0)').hide();

tr 중에서 첫번째를 제외한 나머지 tr 들을 숨기라

$("#GridView1 [id$='lbltest']").text('[▼ 클릭]');

GridView1 내의 lbltest 라벨을 [▼ 클릭] 로 변경하라

반응형
반응형

jquery.js 를 두번 호출하는 경우가 가끔 있음.

그럴 때는 충돌이 발생하기 때문에 아래와 같이 선언하여 두번 이상 선언된 jquery 를 각각 사용할 수 있음.

 

// --------------------------------------------------

// jQuery 중복 사용시 발생되는 문제 처리

// --------------------------------------------------

var jq = jQuery.noConflict();

// --------------------------------------------------

jq(function () {

});

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

$ 대신 jq (또는 다른 이름)으로 사용하면 됨

반응형
반응형

반응형 기술이 나오기 전 홈페이지는 PC 버전 따로, 모바일 버전 따로, 여기에 태블릿 버전 따로...

여러 기기에 대응하기 위해서는 여러 버전의 페이지를 만들어야했다.

 

하지만 반응형 기술이 나오면서 이제는 하나의 화면으로 여러 화면에 맞게 알아서 조절되어 나오도록 만들게 되어

 

유지보수에 상당히 유리하게 구현해준다.

 

아래는 딱 핵심만 넣어놨다.

 

1 번은 일반적인 화면(PC 화면) 에서 볼때의 style 이다.

2 번은 화면 너비가 최고 480px 인 화면에서만 적용되는 style 이다.

<style>

.table { }	/* 1번 */

@media screen and (max-width:480px) {

	.table { }	/* 2번 */

}

</style>

마치 프로그래밍 언어에서 쓰이는 if 문과 비슷한 역할을 한다.

 

같은 table 이라는 class 이지만 화면크기에 따라 다르게 적요할 수 있는 것이다. 

반응형
반응형

안드로이드에서 카카오페이 단건결재 API 연동 시

 

웹뷰를 이용해야하고, 결제 준비를 통해 Response 값을 받았을 경우에 해당함

 

 

Response 를 통해 받은 next_redirect_app_url 를 웹뷰에서 통해 호출해야함

 

public boolean shouldOverrideUrlLoading  에 아래 코드를 추가하면 됨

 

//// 카카오페이
if (url.startsWith("intent://kakaopay/pg")) {

  Intent intent = null;

  try {
  
    intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
    Uri uri = Uri.parse(intent.getDataString());

    startActivity(new Intent(Intent.ACTION_VIEW, uri));
    return true;

  } catch (URISyntaxException ex) {

  	return false;

  } catch (ActivityNotFoundException e) {

    if (intent == null) return false;

    //// 앱이 설치되어 있지 않으면 구글 플레이스토어로 연결함
    String package_name = intent.getPackage();	//// intent.getPackage() 대신 해당 패키지명을 추가하면 됨

    if (package_name != null) {
    
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + package_name)));
      return true;
      
    }

    return false;
    
  }

}

 

비슷한 예제는 많은데, 제대로 실행된 경우는 이 소스밖에 없었음

 

몇시간을 검색하고 테스트해서 찾아낸 결과임

 

출처 : github.com/iamport/iamport-kakao-android-gradle

반응형
반응형

저장 버튼(save button)을 더블클릭해서 두번 저장되는 문제가 발생할 수 있음

1. Image Button 인 경우 클릭과 동시에 버튼 가리기

<img id=”btn저장” src=”btn저장.png” onclick=”javascript:fn저장(); this.style.visibility=’hidden'; ” >

단, 저장이 끝나면 다시 보이게 처리해야함

 

2. input 형태의 버튼인 경우 클릭과 동시에 비활성화 처리

<input type=”button” onClick=”javascript:fn저장(); this.disabled=true; ”>

단, 저장이 끝나면 다시 활성화(disabled=false) 를 해줘야 함

 

이 외에도 클릭 시 전역변수에 값을 올려 함수 내에서 전역변수의 값이 변경되면 함수를 그냥 빠져나오게 처리할 수 있음

반응형
반응형

모달창이 띄워졌는지 여부를 알아보는 방법

var dialogArguments = 모달창띄우기();

if (dialogArguments) {

 

    //// to-do​

 

}

반응형

+ Recent posts