1. 작업할 테이블에 seq라는 int 컬럼을 하나 추가

2. 테이블 속성에서 ID 열에 추가한 seq 컬럼을 선택

3. 시작값 1에 증가값 1 세팅

4. 아래 코드 실행 (id를 부여하여 중복된 행 중에서 id가 제일 작은 하나를 남기고 나머지는 지우는 시스템)


delete from /* table name */

where seq/* identity */ not in

(

select seq/* identity */ from

(

select MIN(seq/* identity */) as seq

, /* field list (group by - column) */

, COUNT(*) as cnt 

from /* table name */

group by /* field (column) list */

) as A

)




출처는 구글링 + 머릿속



select COUNT(*) from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='/*table_name*/'



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

SQL Server Name (Hostname) 변경 시 후속 조치  (0) 2024.03.24
MS-SQL 중복된 행 제거  (0) 2014.04.02



C++을 주 언어로 몇년을 쓰다가

C#을 사용하려니 제일 귀찮고 힘든게

포인터가 없다는 것...


null check 만큼 값 체크 편한것도 없는데..

pointer가 없으니 곤란하다 ㅠ

구조체같은 nullable이 아닌 것들에 대한것은 값복사가 된다는 것도 그렇고.


STL도 없을 뿐더러

비슷하게 제공하는 List나 Dictionary의 경우도 역시 포인터는 안되는 듯.


그러면 쓸때마다 값복사가 일어나는 모양인데;;


구조체를 많이 쓰는데 굉장히 불합리한 느낌이다.


함수포인터 처럼 쓰는 delegate는 있으면서..ㅠㅠ


검색을 좀 더 해봐야겠다 ㅠㅠ

'Programming' 카테고리의 다른 글

About "Expert Beginner"  (0) 2018.10.04
좋은 프로그램의 척도  (0) 2018.01.31
javascript / normalizeForIE  (0) 2017.12.27
Linux 버전 확인 명령어  (0) 2016.10.14
기술자 등급분류 기준  (0) 2016.02.11


찾기 및 바꾸기에 사용하는 정규식에서.


ex.

\)\]\.Text = {[^"]*[:Ha][^"]*} ? \"√\" \: \"\";

정규식에서 사용하는 문자는 이스케이프 문자(\)를 붙여서 표현.

[^"]*[:Ha][^"]*

- 한글을 포함한 모든 문자 ; {}로 감싸서 태그로 사용


보통 포토샵에서 shift를 누르면 대부분 픽셀에 맞춰 정규화 해준다..

선택영역 만들때는 정사각형으로 만들어주기도 하고,

그라데이션을 할때나 선을 그릴때는 직선으로 그리도록 해주기도 하고.


그런데, shift + 눈금자 드래그(안내선 만들기)에서 안내선의 픽셀이 정규화되지 않아서 고생;;


폭풍 검색해본 결과,

Shift+Ctrl+(;)

를 누르면 다시 달라붙는다는 것을 알았다.


뭔가를 하면서 실수로 눌려졌나보다=_=


다시 업무 착수~~~

'Etc > Learn' 카테고리의 다른 글

mac 에서 ms word 자동 복구 파일 저장 에러  (0) 2018.04.05
Chrome에서 금융업무 보기 (IE tab)  (2) 2013.04.13
출처 : http://blogs.msdn.com/b/vcblog/archive/2009/03/28/some-vs2005-and-vs2008-wizards-pop-up-script-error.aspx

Please follow the following steps:

: 다음을 따라하세요.

-          Open regedit (on a 64-bit OS, open the 32-bit regedit)

: 레지스트리 에디터를 여세요 (OS에 상관없이 regedit을 여시면 됩니다) 
 cf. 윈도우키 + R 하면 실행창이 열려요

-          Under “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 
Settings\Zones”, create a new key called 1000 (if it isn't already there)

: 해당 경로에 새로운 키("1000")를 만드세요 (만약에 없다면 말이죠)
 

-          Under 1000, create a DWORD entry with:

o   Name = 1207

o   Type = REG_DWORD

o   Data = 0x000000

: 새로 만든 키("1000") 안에 DWORD 엔트리(값)를 만드세요

(이름은 1207, 타입은 REG_DWORD, 데이터는 0x000000 으로요.)

 cf. 근데 DWORD 타입으로 만들면 타입이나 데이터는 초기화 된 상태가 보통 REG_DWORD, 0x00 이에요




해결!
원인은 IE8.0 이라고 합니다..;ㅁ;

덧.
시스템 재부팅을 할 필요는 없지만, 비주얼 스튜디오는 재시작 해주셔야 적용됩니다.





'Programming > API/MFC' 카테고리의 다른 글

WM_CHAR / WM_KEYDOWN  (0) 2013.06.07



WM_KEYDOWN 이 발생하면

WM_KEYDOWN 메시지 알림처리가 되고

key가 만약 char에 해당될 경우

WM_CHAR 를 발생시킴


즉, WM_CHAR 에 대한 처리를 하려면

WM_KEYDOWN을 무시하고 진행해야함

(그렇지 않으면 WM_KEYDOWN, WM_CHAR 두 번 다 걸림..)


WM_KEYDOWN 은 단순히 키가 눌림/안눌림만 판단하기 때문에

자판으로 구분하고 대소문자의 구분이 없음


WM_CHAR 는 입력된 문자에 대한 처리이기 때문에

대소문자의 구분이 있으며 자체적으로 갱신 메시지를 발생시킴



    _ASSERTE(pHead->nBlockUse == nBlockUse); 




     warning C4005: macro redefinition;



의 상관관계 -_-



* 그림이 저작권 때문에 문제가 된다면 내리겠습니다 ㅜㅜ






매크로 재정의 경고..... 아예 무시했었다.

내 경우, 매크로 재정의가 어쩔수 없었던게

한 솔루션 안에 만들어진 프로젝트가 많았는데(한 7개정도?)

그 중에는 API(혹은 단순 C++)도 있었고 MFC도 있었다.


그런데 C++ 쪽에서 릭 체크를 하기 위해

#ifdef _DEBUG
#define new new(_CLIENT_BLOCK, __FILE__, __LINE__)
#endif


이런 코드를 써놨었다.

이 헤더는 필수라 다른 프로젝트에서도 사용하고 있었고..


그런데 MFC에서 자체적으로

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


이렇게 써있는게 충돌이 난거다.


그래서 경고가 떴지만, 경고므로, 무시하고 진행했었다.

(심지어 프로젝트 속성에서 아예 경고 무시 설정해놔서 목록에도 안뜨게 해놨었다)

- 왜냐하면, MFC 쪽에 재정의된 부분을 주석처리하면, 에러로 돌변하고(매개변수가 안맞다며),

그걸 맞춰서 사용하면, 어느샌가 IMPLEMENT_DYNCREATE(, ) 부분을 사용할 수 없게 되버리기 때문에...ㅜㅜ


그런데, MFC쪽에서 C++ 클래스를 구현하고 new할당한 후 delete 하는 시점에서 뻑이 나는거다 ㅠㅠ

(프로그램 종료시)


저 위에 있는 Assertion Failed!


근데 아무리 봐도 문법을 위반한 데는 없었고..

추적도 안되는 부분이라

(추적하자면...dbgheap 파일에서 뻑나는데... 이걸 내가 해독할 수 있는것도 아니고...)


계속 검색을 하며 끙끙댔는데


사람들이 말하는 주 원인은

1. 메모리 해제를 중복했을때

2. 메모리 영역과 다른 영역을 해제했을때(영역침범)


이라는데 문제는 짐작가는게 전혀 없다는 거였다.


내가(그리고 많은 사람들이) Safe_Delete라고 지칭하는 

if(p) {
    delete p;
    p = NULL;
}


이 부분을 사용하기 때문에 1번 문제는 날래야 날 수가 없었던 ㅜㅜ


그리고..........


GPG 포럼에서


메모리 오버런일 확률도 있습니다. 

new, delete 시에 힙영역에서 몇가지 정보들을 이용하고 바꿉니다. 

만약 다른 버그로 인해서 그 메모리를 덮어씌우면 

엉뚱하게 new나 delete 에서 에러날수 있습니다. 

이때 new, delete 쪽만 뚫어져라보면 절대 잡을수 없습니다. 

다른 부분을 봐야합니다.


이런 얘기도 보고.


http://blog.naver.com/jaejun0201/50147724453


이런 얘기도 보고.


http://blog.naver.com/smanooo/140087357806


이런 얘기도 보고..하면서


갑자기 문득 떠오르는게 바로 new 재정의였다.


특히 마지막 블로그!


내부적으로 선언된 new 매크로나 할당/해제에 관한글을 세부적으로 풀어 써 주셨는데

그걸 보고 하면서 감이 어느정도 오기 시작했다.

혹시..혹시...호옥시........................


혹시가 사람 잡는거 맞네요.


MFC쪽 프로젝트에서

#ifdef new
#undef new
#endif


이 소스를 stdafx.h에 포함시켜주니


워닝도 전혀 뜨지않고


끌때 뻑도 안나더이다 ㅇㄱㄴ




전혀 짐작도 못했던 원인과 해결.

그리고 저 undef < 부분은 반은 짐작으로 ㅋㅋ

이렇게 하면 이전 매크로 해제되지 않을까 싶어서 해봤는데 되는거..


어쨌거나 해결! 어렵다 어려워.







'Programming > C/C++' 카테고리의 다른 글

S C++ :: MS의 매직 디버깅 숫자들의 의미  (0) 2013.03.07
memset()  (0) 2013.03.07



좋은 말이긴한데...

이래서 우리 직종 취업이 만만치 않구나 이런 생각이...ㅇㄱㄴ


안녕하세요, Laperina입니다 :)



여러분은 인터넷 브라우저로 주로 어떤 것을 사용하시나요?

저는 크롬을 사용하고 있답니다.


확실히 인터넷 익스플로러(IE, Microsoft)는 느리고,

파이어폭스(Firefox, Mozilla)는 잠시 써본 결과

무언가가 마음에 들지 않았기 때문에(기억이 안납니다ㅜㅜ),

크롬(Chrome, Google)을 쓰기 시작했는데,

그렇게 사용한지가 어언 5, 6년쯤 되는 것 같네요.

(이 때는 safari 등 타 브라우저는 몰랐었던 상태라서 선택의 여지는 이게 끝이었죠)


저는 크롬에 매우 만족하며 살고 있습니다.

사용할 초창기쯤에는 사소한(그러나 기분은 사소하지 않은엉엉) 문제들이 많이 있었지만,

점점 사용하는 사람들이 늘어나고, 지원하는 곳도 늘어나다 보니 요새는 불편을 거의 느끼지 않고 있지요.


그러나 절대로 불가침의 영역!

바로 금융권이 문제입니다.


인터넷 쇼핑몰의 경우에는 그래도 대응책을 마련하여

크롬에서도 결제할 수 있도록 (간혹 제한적이지만) 해 놓았고,

인증서를 사용할 경우도 크롬에서 가능한 경우가 종종 있습니다만..


은행, 카드사.

진짜 중요한 '금전 거래'를 할 때는 크롬이 전혀 도움이 안된단 말이죠.

그러나 그동안 버려왔던 IE로 돌아가자니, 로딩 속도가 정말 답답합니다.

IE 외의 브라우저를 사용하셨던 분이라면 공감하실 겁니다...

다른거 쓰다 IE 쓰면 진짜 답답하죠..ㅠㅠ


저는 인터넷 금융거래 사이트는 신한카드와 국민은행 밖에 사용하지 않는데,

국민은행은 그래도 크롬이 상관없는데 문제는 신한카드사입니다.


개인적으로 신한... 음... 앱이나 웹페이지는... 어디까지나 개인적으로 별로 마음에 들지 않네요 ^^;

앱의 경우는 진짜 평이 안좋고..(툭하면 에러를 뱉어서;;)

웹페이지는 크롬.. 그냥 지원안할것같네요-_ㅠ


여튼, 이러한 문제로, 어떤 분과 얘기를 나누다가 그분도 답답해 하시기에

이 포스팅의 내용을 설명드리려고 했는데, 아무래도 말로 그냥 듣기엔 어렵다고 하시며..

포스팅을 추천하셨습니다.


그래서 포스팅 다운 포스팅의 처음은 이 포스팅이 차지하게 되는 것 같아요!


좋은 아이디어 감사합니다!

ㅋㅋㅋ




그런데 고민했습니다.

전 원래 친절한 블로거가 아니니까요.

(원래 저는 이미지 없이 only-text 포스팅 블로거...)

언제 다 스샷하고 언제 표시하고 언제 쓰지......


하지만!

네, 그냥 과감하게 써보려고 합니다.

처음이잖아요(...)


사설이 길었으니 이제 본론으로 들어가겠습니다!




오늘 포스팅의 요점은,


> 크롬의 속도 장점을 살리면서, IE의 호환성을 누려보자!


입니다.


※ 큰 그림은 클릭하시면 새창으로 확대됩니다!

원래 플러그인으로 인해 새창 안뜨게 할려고 했는데 닫기가 안먹히는관계로-_-;;

어쩔수가..ㅠ.ㅠ

누가 방법 좀 알려주세요..

Light TT EX (이미지 크게보기) 썼을 때 닫기 먹히는법..



자, 그림을 봐주세요. 크롬을 켜시면 오른쪽 상단에

북마크 단축버튼(별모양)이 있는게 보이시죠?

그 왼쪽에 있는 것은 나중에 설명하고, 오른쪽에 있는게 설정을 할 수 있는 버튼인데요.

라이트 유저분들은 잘 건드리지 않는 부분이기도 하죠 ^^;;



위 그림처럼 설정 - 도구 - 확장프로그램을 순서대로 클릭하여 '확장프로그램' 탭을 엽니다.



이게 확장프로그램 탭인데요.

아까 맨처음 그림에서 북마크 버튼 왼쪽에 있던 경고판 같던 그림이 여기에도 있죠?

그 버튼은 Ad Block Plus 라는 확장 프로그램의 단축 아이콘이었던 셈이죠.

이 확장 프로그램에 대해 간단하게 설명하자면,

웹서핑 같은거- 기사같은거 보고 하시면 광고가 엄청 많은 나머지

기사가 보기 불편할때도 종종 있잖아요?

(이런 걸 바로 주객전도라고...)

그래서 이 확장프로그램을 깔아서 특정한 광고요소를 아예 차단하는 겁니다.

자세한건 검색해보시거나 사용해보시면 알게 되실겁니다 ㅎㅎ


아무튼, 밑에 "더 많은 확장 프로그램 다운로드"를 클릭해주세요.



크롬 웹 스토어로 연결됩니다.

여기서는 확장 프로그램 뿐만 아니라, 크롬 자체의 테마도 설치할 수 있습니다.

제 스샷에서 "어?! 스샷한 크롬이 뭔가 내꺼랑 다른데?!" 라고 느끼셨다면 당신은 센스쟁이:)

저는 들판 사진을 배경으로 하는 테마를 설치했습니다. 전 자연 사진이 좋아요 ㅎㅎ 특히 하늘!

아무튼, 검색어를 "IE tab"이라고 쓰시고 엔터키를 따악~!



특정한 분류를 선택하지 않았기 때문에

확장 프로그램 이외의 카테고리에서도 검색결과가 나올테지만 무시하고,

우리는 우리가 설치할 확장프로그램 카테고리만 봅니다.

IE tab에 해당하는 것만도 하나는 아니네요.

정확히 각각의 차이는 잘 모르겠습니다만, 저는 Multi는 좀 뭔가 별로더라구요.

현재는 노멀한 IE tab, 즉 맨 위에걸 사용하고 있습니다.

여러분 내키는 걸로~ 추가 버튼을 눌러주세요!



그럼 확인창이 뜨죠. 추가 버튼을 눌러줍니다.

음, 왠지 권한 운운하니까 윈도우 7 만 창이 뜨는건가 싶기도..



추가 버튼을 누르면 설치가 되고, 설치된 후에는 위 그림처럼 체크 표시가 됩니다.



또한, 오른쪽 위에 북마크 버튼과 설정 버튼 사이에 단축버튼이 하나 생겼네요.



설치가 완료되면 감사하다며 확장 프로그램이 인사합니다.

(새 탭이 열려서 웹페이지인지 html인지를 열어줍니다)

그냥 무시하고 닫으시면 됩니다.

제 기억에.. Multi 버전은 여기서 설정하는게 있었던거 같기도...




자, 이제 설치를 끝냈으니 문제가 되던 신한카드 사이트로 접속해보겠습니다.



이런 안내문이 뜹니다. 파폭은 최적화 되어있으면서! 왜 크롬은 안되는거냐아!



좀 전의 메시지를 확인한 직후 바로 뜨는 메시지창입니다. 파폭이 되면 보통 크롬도 되던데......


여기서, 아까의 단축버튼



클릭!!!!



짠! 북마크바(혹은 주소입력) 밑에 저 빨간 상자가 생기면서, IE마냥 접속한게 보이실 겁니다.

더이상 지원되지 않는 환경이라는 말 따위... 할 수 없습니다 ㅋㅋ!!



작업표시줄에 보시면 보안 프로그램이 실행되고 있는 것도 확인하실 수 있습니다.

즉 이상없이 잘만되고 있다는 사실!


자, 이제 여러분도 얼마든지! 크롬에서 금융업무 마음~껏 보시면 되겠습니다!




덧. IE tab은 만능까진 아닙니다.

간혹....간혹 안되는 경우도 있을 수 있습니다..만, 대부분 되는 것 같습니다.

그 부분은 제 탓이 아니고 IE tab 개발자 분의 기술적 한계라고 너그러이 여겨주시면... 감사하겠습니다.




+ Recent posts