2015년 5월 26일 화요일
C# 다차원 배열
배열가지고 헤맬줄은 몰랐다. 스스로 창피하다. 기초가 얼마나 중요한지...
헷갈리지 말자. C# 의 다차원배열은 type[,] 이렇게 표현한다.
C++ 처럼 type[][] 이렇게 쓰면 C#에서는 가변배열을 뜻한다.
하나씩 만들어보며 기초를 다지자.
GetLength() 로 가변배열의 길이를 가져오자.
그냥 cats.Length 는 5*3 전체의 길이 15를 뜻한다.
class Program
{
static void Main(string[] args)
{
Cat[,] cats = new Cat[5, 3];
for (int i = 0; i < cats.GetLength(0); i++)
{
for (int j = 0; j < cats.GetLength(1); j++)
{
cats[i, j] = new Cat(i + "," + j);
cats[i, j].say();
}
Console.Write('\n');
}
}
}
class Cat
{
string name;
public Cat(string name)
{
this.name = name;
}
public void say()
{
Console.Write("Cat" + name + '\t');
}
}
2015년 5월 19일 화요일
C# Form1.Focus() 가 안 되는 이유!
Form 위에 TextBox 하나 놓고 Form1.Focus(); 를 아무리 해도 안 된다.
이유 - Form 이나 Panel 같은 컨테이너 컨트롤은 Focus를 가지지 않고, 자신이 가지고있는 첫번째 컨트롤에 Focus 를 넘겨준다!
참조
c# - How to remove the focus from a TextBox in WinForm
2015년 5월 13일 수요일
MSSQL SP에서 외부 DLL 사용하는 방법 (CLR 확장저장프로시저)
MSSQL SP에서 외부 DLL 사용하는 방법 (CLR 확장저장프로시저)
1.사전작업(CLR환경을사용하도록설정합니다.)
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
2. Visual Studio에서 dll 생성 - 클래스라이브러리
3. 클래스를 생성한다.
4. namespace는 삭제한다.
5. class를 public으로 만든다.
6. static으로 Function이 될 메서드를 생성한다.
8. 생성된 DLL을 SQL server의 특정 위치에 복사
9. 어셈블리를 만든다.
-- DROP ASSEMBLY Encrypt
create assembly Encrypt
from 'c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\ClassLibrary1.dll'
10. Function을 만든다.
--DROP FUNCTION dbo.fnEncrypt
--DROP FUNCTION dbo.fnDecrypt
--EXTERNAL NAME <method_specifier> assembly_name.class_name.method_name
CREATE FUNCTION fnEncrypt(@value nvarchar(max))
RETURNS nvarchar(max)
AS
EXTERNAL NAME Encrypt.csStringEncrypter.Encrypt
GO
CREATE FUNCTION fnDecrypt(@value nvarchar(max))
RETURNS nvarchar(max)
AS
EXTERNAL NAME Encrypt.csStringEncrypter.Decrypt
GO
11. Test
select dbo.fnEncrypt('9901011122334')
select dbo.fnDecrypt('/4suqbCwk1G7qjIaTAznhg==')
12. 기타, 프로시져를 만들어서 하는 방법을 먼저 해보았으나, 실패했다. dll에서 함수를 찾을 수 없다는 메시지...
-- 프로시저 등록
-- 함수이름, dll이름
sp_addextendedproc 'Encrypt', 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\ClassLibrary2.dll'
sp_dropextendedproc 'Encrypt'
DECLARE @input_string nvarchar(100) = '9901011122334'
DECLARE @output_string nvarchar(100)
EXEC Encrypt @input_string, @output_string OUTPUT
select @output_string
13. 키를 받아서 암호화하도록 함수를 짜면 더 좋을 듯. 지금은 dll에 들어가있음
--참조1
--http://blog.daum.net/hagi/314
http://msdn.microsoft.com/en-us/library/ms186755.aspx
--참조2
--http://msdn.microsoft.com/ko-kr/library/ms164653(v=sql.105).aspx
--http://blog.naver.com/PostView.nhn?blogId=ellongandy&logNo=90171834891
--http://madchick.egloos.com/1254999
How to make PictureBox transparent in C#
picture.BackColor = Color.Transparent;
위와 같이 설정은 간단하다. 하지만, 제대로 된 것 같지 않다??
이유 - WinForm에서 Transparent 란, 그 컨트롤이 속한 Container의 BackColor 로 렌더링됨을 의미한다.
우리가 예상하는 그 투명이 아니다.
TIP. 투명한 이미지 표현을 위해서는 PictureBox를 사용하지 말고 바로 그리는 방식을 추천한다.
2015년 5월 12일 화요일
내 감정의 원인을 내 밖에서 찾으려는 자는 불행하다
내 감정의 원인을 내 밖에서 찾으려는 자는 불행하다.
연습하고 단련하라. 몸이 그러하듯이 발달한다.
내 감정은 내 뜻대로 할 수 있다 상상하라. 삶이 얼마나 재밌겠는가?
연습하고 단련하라. 몸이 그러하듯이 발달한다.
내 감정은 내 뜻대로 할 수 있다 상상하라. 삶이 얼마나 재밌겠는가?
피드 구독하기:
글 (Atom)