SSMS ADDIN 관련 LINK
코드 프로젝트는 아니지만...
그간 ssms addin을 별도 개발하면서 필요한 링크를.... 왜... 기록을 안해놨을까?... 소스를 구석구석 살펴도 없네...
어찌되었든 Addin 개발할때 구글링을 해도 자료가 많이 없다. ( 영어가 안되어 검색해도 적게 나옴... )
1. 중요한건 현재 설치되어 사용하는 SSMS 의 버젼별로 참조 dll 의 경로가 맞느냐!!!
2. 2010부터 vsPackage로 개발을 해야 된다고는 써있는데... 어렵다???
: SSMS는 프로그램데이타 폴더 밑에 SSMS ADDIN설정 폴더아래 두면 잘 뜨는것 같다. ( 현재 2014, 집에서 2016 개발했음. )
: 또 Visual Studio 에서 2008에서 사용 중인데... 이거 다른 버젼의 addin 폴더에 설정파일 옮기니 잘 뜬다.
- 단, visual studio 2008을 대상( 참조 *.dll )으로 만든거라서 설치가 되어 있어야 함. 아니면 dll들을 모두 바꿔야 할 것 같음.
# SSMS Add in Dev
# SSMS에 쿼리 결과 그리드에 접근할때
'-- CodeProject Link' 카테고리의 다른 글
Code Project] 웹 브라우져 (0) | 2013.10.15 |
---|---|
어셈블리버젼 자동증가? (0) | 2013.09.24 |
익스플로어 탐색기 메뉴추가/삭제 (0) | 2013.09.24 |
CodePlex] Odyssey WPF Controls (0) | 2013.09.06 |
codeproject] Some Cool Tips for .NET (0) | 2013.09.06 |
JSFW.PROJECT.REF] 프로젝트 모듈 - SP검색
#목적
소스 디렉토리 ( 솔루션 )를 모두 검색해서
특정 문자열을 찾아 트리 구조화 한다.
#주요내용
- 참조되어 사용되는 타 모듈명, 사용되는 SP명
- 주석문 내에 위치한 모듈, SP는 제외 한다.
# 방법
1차 검색시에는 모두 찾음.
2차 검색은 검색된 위치에서 주석여부를 판별!
화면UI에서 사용하는 SP, 다른 화면UI 검색해서 트리구조로 뽑아내는 소스를 만들었다.
기본적인 조건이 네이밍 룰에 맞춰 개발된 소스를 바탕으로 한다.
모듈명_
모듈명PR_ 로 되어 있는 TEXT를 모두 검색하여 트리구조화 하고 검색된 TEXT의 후방탐색으로 주석여부를 판별한다.
// 으로 시작되는 TEXT행은 파싱자체를 제외함.
// 으로 시작되지 않고 중간에서 //로 시작되면서 검색된 TEXT가 //뒤에 있으면 제외.
/*
.. 주석내에 있는 모듈 또는 SP인 경우 별도의 플래그 값을 가지게 됨.
*/
소스의 ROOT를 조건으로 주어졌을때 모두 돌면서 찾으니 5분가량 걸렸다. ( 응답없음...! )
엑셀로 떨궈볼까나?...
### 완성작!!
< 메인 화면 >
< 검색 창 : 진행 과정을 볼 수 있다. >
< 엑셀로 떨어진 파일 >
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 비전공인 내가 SI를 진행하는 법(2) (0) | 2016.10.15 |
---|---|
PRJMNG] 비전공인 내가 SI를 진행하는 법(1) (0) | 2016.10.15 |
JSFW.Minutes 회의록 작성기 (0) | 2016.09.12 |
JSFW.PJT.Diagram] 추가 기능 [그룹핑] (0) | 2016.07.17 |
JSFW.SqlFormatter] 성공했다... (0) | 2016.07.14 |
JSFW.Minutes 회의록 작성기
간단한 회의록 작성기..
# 회의 참석자 사원A, 사원B
# 안건 1, 2, 3 등을 미리 등록하고
# 제목, 장소 일시를 작성!
해당 파일을 열어서
안건을 클릭(선택)하고, 사원A를 더블클릭하면 작성창이 뜬다. 사원A가 안건에 대한 얘기를 할때 간략하게 또는 상세하게
받아 적어넣을수 있다.
현재로는 받아 적는 것만 넣어놨다. 그림툴을 추가해두면 그림도 그릴 수 있으니 좋겠지? 또 카메라나 녹음 기능을 추가하면...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 비전공인 내가 SI를 진행하는 법(1) (0) | 2016.10.15 |
---|---|
JSFW.PROJECT.REF] 프로젝트 모듈 - SP검색 (0) | 2016.09.26 |
JSFW.PJT.Diagram] 추가 기능 [그룹핑] (0) | 2016.07.17 |
JSFW.SqlFormatter] 성공했다... (0) | 2016.07.14 |
JSFW.SqlFormatter] 세번째... 실패 (0) | 2016.07.12 |
Class를 XML변환, XML을 Class변환
회의록 프로그램을 만들면서 데이타를 객체로 구성하고, 저장데이타를 xml로 만들었다.
이때 xml 관련 Attribute등을 이용해서 직렬화과정을 거치게 되는데
아래껀 굳이 xml 관련 Attribute 를 지정하지 않아도 되더라...
public class Tmp
{
public string Name { get; set; }
public List<CTmp> Items { get; set; }
public Tmp()
{
Items = new List<CTmp>();
}
}
public class CTmp
{
public string Name { get; set; }
public string DESC { get; set; }
}
Tmp root = new Tmp();
root.Name = "루트";
root.Items.Add(new CTmp() { Name = root.Name + "_자식1", DESC = "자식1" });
root.Items.Add(new CTmp() { Name = root.Name + "_자식2", DESC = "자식2" });
root.Items.Add(new CTmp() { Name = root.Name + "_자식3", DESC = "자식3" });
root.Items.Add(new CTmp() { Name = root.Name + "_자식4", DESC = "자식4" });
string xml = root.Serialize<Tmp>();
Tmp rt = xml.DeSerialize<Tmp>();
public static class XmlEX
{
public static string Serialize<T>(this T value)
{
if (value == null) return string.Empty;
var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (var stringWriter = new System.IO.StringWriter())
{
using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { Indent = true }))
{
xmlSerializer.Serialize(xmlWriter, value);
return stringWriter.ToString();
}
}
}
public static T DeSerialize<T>(this string xml) where T : class, new()
{
T obj = default(T);
var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (var stringReader = new System.IO.StringReader(xml))
{
using (var reader = XmlReader.Create(stringReader, new XmlReaderSettings()))
{
obj = xmlSerializer.Deserialize(reader) as T;
}
}
return obj;
}
}
'# 4) .Net ( Vs 2010 ) > C#' 카테고리의 다른 글
데이타 테이블정의서 Excel 생성하기. (0) | 2016.10.18 |
---|---|
로또 체크기...? (0) | 2016.10.18 |
DevExpress WinForm] Layout 보완... (0) | 2014.10.12 |
DevExpress WinForm] Layout Control (0) | 2014.10.12 |
바로가기 만들기] shortcut (0) | 2014.09.27 |
sqler에 올라온 질문글...
sqler에 질문글..
http://www.sqler.com/bSQLQA/862019
심심해서....
;with tmp
as
(
select *
from
(
values
(1, '2008-01-02 00:00:00.000' ),
(2, NULL),
(3, NULL),
(4, '2008-01-03 00:00:00.000'),
(5, NULL),
(6, NULL),
(7, NULL),
(8, NULL),
(9, '2008-01-04 00:00:00.000'),
(10, NULL),
(11, NULL)
) as tb (a, b )
)
select a, isnull( b , ( select max( b ) from tmp where a < bs.a )) as bb
from tmp as bs
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
SSMS 에러 해결방법!! (0) | 2021.02.16 |
---|---|
sqler 문제 풀이. (0) | 2017.05.22 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.20 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.13 |
Sqler에 있는 질문에 대해 풀어봤다. (0) | 2016.05.11 |
간만에 요새 메이플을 한다.
몇가지 직업을 골라서 120~140이던 걸 170으로 올려서 하이퍼 스킬을 배우고 있다.
에반은 드디어 일주일 전에 200을 찍었다. 거의 포기했었는뎅...
카이저, 캐논, 팬텀, 배틀메이지를 170을 넘겨 찍어놓고, 지금은 미하일을 키우고 있는데 163되었다.
로열가드는 왜 있는거지?? 타이밍 잡기 너무 힘들엉...
몬스터 컬렉션이란걸 요새 수집하고 있다. 몹을 잡다보면 랜덤하게 등록되는데 이제 56마리 수집했는데...
이렇게 두줄~ 완성했다. 3시간 6시간...
윗줄은 어제 겨우 끝에 별하나짜리 빨간 넘... 잡았다.. 3일만에... 엔버, 배매, 미하일 번갈아가며 잡아서 엔버에서 잡힌거...
보상도 나쁘지 않아...
키우고 있는 불독으로 무슨 섬에서 두마리 잡으면 그건 3개씩 준다..... 시도는 해봐야지.
날도 더운데... 멍때리기 딱 좋은 겜.
'--- 취미' 카테고리의 다른 글
메이플 이벤트 너무 힘들어... (0) | 2019.08.04 |
---|---|
메이플 스토리.... 게임중... (0) | 2019.07.19 |
게임] 에반 장비... (0) | 2013.05.24 |
게임] 메이플스토리 (0) | 2013.05.22 |
메이플 스토리 ] 에반 무기 작... (0) | 2012.06.04 |
훈스닷넷 : string Array 파싱해서 다른 Array 에 넣는 작업.
훈스닷넷에 질문 : http://www.hoons.net/Board/QACSHAP/Content/85519
제목 : string이 아닌 String Array 한번에 파싱하는 방법이 혹시 있나요?
음. 10000개나 20000개 정도 늘어나면 느리다??
왜 느리지 하고... 만들어봤더니..
const int max_length = 20000;
string[] val = new string[max_length];
for (int loop = 0; loop < max_length; loop++)
{
val[loop] = string.Format("a{0}, b{0}, c{0}, d{0}", loop);
}
Stopwatch sw = new Stopwatch();
sw.Reset();
sw.Start();
string[] rst = new string[val.Length];
for (int loop = 0; loop < max_length; loop++)
{
string[] tmp = val[loop].Trim().Split(',');
if (tmp.Length > 1)
rst[loop] = tmp[1];
}
sw.Stop();
this.Text = "" + sw.ElapsedMilliseconds.ToString("N0");
10000개 일때 7ms, 20000개 일때 24ms ... 겁나 빠른데...
느려지는 건 뭘까? 질문에서의 데이타가 다른거 겠지? 또는 어떤 대상과 비교했을때 느리다고 보는건가?
심심해서 잠깐... 해봤다.
'# 1) 프로그래밍' 카테고리의 다른 글
길찾기 2 ..(Flood Fill Path Finding) (0) | 2017.11.30 |
---|---|
길찾기 A* 알고리즘... (0) | 2017.11.29 |
C1FlexGrid, GridTree 에서 노드 레벨 및 코드, 상위코드 생성하기. (0) | 2016.06.10 |
Win10 WPF] WPF 의 WindowsFormHost 로 Winform Control을 올렸을때 (0) | 2016.03.10 |
연말정산 프로그램? API... ( 이게 아니란다. ) (0) | 2016.01.20 |
그룹 박스 그리기 ( 객체 다중 선택 )
화면에 컨트롤을 여러개 뿌려져있을때
이를 마우스 드래그로 여러개를 선택하고자 할때 점선으로 박스를 그리고 싶을때 사용하면 됨.
기본 form에 버튼 몇개를 마구잡이로 배치하고 아래와 같이 구현하면
마우스 down시작점에서 마우스 up끝점까지 박스를 그려준다.
시작점에서 끝지점이 w+, h+일때는 크게 문제가 안되지만.
끝지점이 w- 또는 h-일 경우 Rectangle GetBox(Rectangle rct) 메서드 내에 있는 것처럼
박스위치와 크기를 고쳐줘야 한다.
전에 모니터링 만들땐 좀 복잡하게 했던것 같은뎅... 어째꺼나.. 아래처럼 쉽게 되었다.
어느 방향으로든 마우스로 끌어도 사각형이 제대로 그려진다.
List<Button> SelectButtonList = new List<Button>();
bool IsMDown = false;
Rectangle rect = new Rectangle();
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
ClearSelectedButtonList();
IsMDown = e.Button == System.Windows.Forms.MouseButtons.Left;
rect.Location = e.Location;
rect.Width = 0;
rect.Height = 0;
Invalidate();
}
private void ClearSelectedButtonList()
{
foreach (var btn in SelectButtonList)
{
btn.ForeColor = Color.Black;
}
SelectButtonList.Clear();
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (IsMDown)
{
rect.Width = e.Location.X - rect.X;
rect.Height = e.Location.Y - rect.Y;
Invalidate();
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
IsMDown = false;
Rectangle box = GetBox(rect);
foreach (Control ctrl in Controls)
{
if (box.Contains(ctrl.Bounds) && ctrl is Button)
{
SelectButtonList.Add(ctrl as Button);
ctrl.ForeColor = Color.Red;
}
}
rect.Location = e.Location;
rect.Width = 0;
rect.Height = 0;
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle box = GetBox(rect);
ControlPaint.DrawBorder(e.Graphics, box, Color.Red, ButtonBorderStyle.Dotted);
}
private Rectangle GetBox(Rectangle rct)
{
Rectangle box = rct;
if (box.Width < 0)
{
box.X = box.X + box.Width;
box.Width *= -1;
}
if (box.Height < 0)
{
box.Y = box.Y + box.Height;
box.Height *= -1;
}
return box;
}
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
좌표계, 삼각함수, 각변환 기본적인 내용. (0) | 2018.01.20 |
---|---|
윈폼] 판넬 이동관련 처리 방법. (0) | 2017.03.23 |
Scroll 같은? 눈속임?? (0) | 2016.07.22 |
대리자를 잘못 사용해서 나타난 버그.. (0) | 2016.07.20 |
Mover] 구형 신형. (0) | 2016.07.19 |
Scroll 같은? 눈속임??
Mockup Designer 에서 판넬에 스크롤을 넣을 수가 없어서 이걸 비스므리 하게...
트랙바를 이용해서 구현했다.
아래처럼 하면 내부 컨텐츠 컨트롤이 뷰 판넬보다 크게 만들어놓고
테스트 하면 트랙바가 움직일때 내부 컨트롤들을 이동시켜주므로
스크롤 되는 것 처럼 보인다.
int prev = 0;
public Init()
{
trackBar1.Maximum = ( {내부 컨텐츠 컨트롤}.Height - {뷰 판넬}.Height + 2 );
trackBar1.Value = trackBar1.Maximum;
prev = trackBar1.Maximum - trackBar1.Value;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
foreach (Control ctrl in {뷰 판넬}.Controls)
{
ctrl.Top += (prev - (trackBar1.Maximum - trackBar1.Value));
}
prev = trackBar1.Maximum - trackBar1.Value;
}
## 기존 버그...
Mockup Designer에서 스크롤을 적용하면 ...
컨트롤을 드래그해서 올리거나 또는 끌어다가 이동시키면 스크롤이 미친듯이 움직여서 .... 제어가 안된다.
그래서 없이 썼는데, 모니터가 작으니 큰 화면 디자인이 안되었다.
편법으로 위와 같이...
오늘도 12시가 넘어버렸넹...
집에서 코딩 그만해야되는데!!!!! 쭙~
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
윈폼] 판넬 이동관련 처리 방법. (0) | 2017.03.23 |
---|---|
그룹 박스 그리기 ( 객체 다중 선택 ) (0) | 2016.08.07 |
대리자를 잘못 사용해서 나타난 버그.. (0) | 2016.07.20 |
Mover] 구형 신형. (0) | 2016.07.19 |
다른 프로그램을 내 프로그램 판넬에 띄우는 방법 (0) | 2016.02.23 |
대리자를 잘못 사용해서 나타난 버그..
JSFW.Mockup 프로그램을 사용하다가 예외가 뜨길래 디버깅을 해봤다.
전달되어야 할 대리자가 null 이었다. 왜지?
처음엔 if문으로 null체크하고 넘어갔는데, 왠지 모를 찝찝함으로 계속 테스트를 하면서 왜 null 이 되는지 찾았다.
mockup의 속성에서 Editor를 띄워서 컬럼목록으로 컨트롤을 생성하는 창을 띄웠다.
그리고 이 창에서 컨트롤을 생성하여 드래그 앤 드랍으로 원하는 위치에 떨어뜨린다.
그리고 떨어뜨린 컨트롤을 선택했을때
1. 속성창에 해당 컨트롤의 속성들을 보여준다.
2. 선택된 컨트롤을 지정해둔다.
- delete 키를 눌렀을때 해당 컨트롤 삭제 처리해야 하기때문에...
근데 여기서 문제가... 창에서 생성된 컨트롤에 이벤트를 부여할때
판넬.대리자를 넘겨준다. => 기본Editor 객체 => 생성창 => 생성된 컨트롤.대리자 = 넘어온.대리자;
여기서 배치가 끝나고 생성창을 닫으면! 실제 컨트롤.대리자 에 할당되어 있던 넘어온.대리자(판넬.대리자)가 null값이 되었다.
그래서 선택된 컨트롤로 지정이 안되어 삭제가 안되고 이전에 이벤트를 제대로 탄 객체가 선택되어진채 있다가 delete 누르면 그게 날아간다.
이걸 기본Editor에서 컨트롤을 생성하여 드래그 앤 드랍 처리를 하고 이벤트도 여기서 붙인다.
그리고 이 메서드를 대리자를 통해서 생성창에 넘기고, 생성된 컨트롤.대리자에 또 넘겨준다.
실제 컨트롤을 드래그를 시작하면 원래 Editor개체에서 생성을 하여 직접 전달하게 된다.
창이 닫혀도 이벤트는 계속 유지되기 때문에... 정상동작되는 것을 확인하였다.
글로 쓰니 ...alskdjflasjdflaj
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
그룹 박스 그리기 ( 객체 다중 선택 ) (0) | 2016.08.07 |
---|---|
Scroll 같은? 눈속임?? (0) | 2016.07.22 |
Mover] 구형 신형. (0) | 2016.07.19 |
다른 프로그램을 내 프로그램 판넬에 띄우는 방법 (0) | 2016.02.23 |
3가지중 1개로 선택해서 바꿈] 더블 삼항연산자 (0) | 2013.08.01 |