태그

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일 화요일

내 감정의 원인을 내 밖에서 찾으려는 자는 불행하다

내 감정의 원인을 내 밖에서 찾으려는 자는 불행하다.

연습하고 단련하라. 몸이 그러하듯이 발달한다.

내 감정은 내 뜻대로 할 수 있다 상상하라. 삶이 얼마나 재밌겠는가?