본문 바로가기

프로그래밍

[C#] 문자열 정렬 OrderBy , OrderByDescending string s = "Zbcdefg"; string str = new String(s.ToCharArray().OrderByDescending(x => x).ToArray()); Console.WriteLine(str); 결과값 : gfedcbZ ============================================ string s = "gfedcbZ"; string str = new String(s.ToCharArray().OrderBy (x => x).ToArray()); Console.WriteLine(str); 결과값 : Zbcdefg 참고 및 출처 : scalability.tistory.com/28 더보기
[C#] Static 으로 만드는 DeepCopy 클래스 어디서든 쓸수있는 DeepCopy 클래스 아 이번에 자꾸 어디서 알수없는 래퍼런스 자료구조가 자꾸 바뀌어서 딥카피로 해결했다 딥카피만세 1 2 3 4 5 6 7 8 9 10 11 12 13 public class StaticDeepCopy { public static T DeepClone(T obj) { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; return (T)formatter.Deserialize(ms); } } } http://colorscripter.com/info#e" target="_blank" style="colo.. 더보기
MSSQL 빨간줄 없애기 MSSQL 빨간줄 없애는 단축키 Ctrl+T 아 MSSQL을 쓰다보면 Table 내용이 바뀌면 프로시저 작성할때 자꾸 빨간줄이 뜬당이게 틀린건아닌데 SSMS가 테이블이 바뀐걸 빠르게 인식을 못해서 빨간줄이 떠지는거같당뭐 실행시켜보면 빨간줄임에도 불구하고 실행은 잘 된다. 단지 헷갈릴 뿐이지.. 뭐가틀렷지 하고..그때 Ctrl+T를 눌러주면 빨간줄이 싹 사라진당 ㅎ.ㅎ 연결을 다시하는 느낌인듯 옛날에 찾아놨는데 까먹어서 다시 찾으려다보니 없길래여러 단축키 눌러보다가 발견해서 적어놓는당 더보기
PostgreSQL autoIncrement 새 테이블을 만들 때 시퀀스는 SERIAL 즉, 다음과 같이 사용하면 됩니다. 123CREATE TABLE table_name( id SERIAL);cs SERIAL pseudo-type을 id 컬럼에 할당함으로써 PostgreSQL은 다음을 수행합니다.1. 순서 오브젝트를 작성해, 순서에 의해 생성된 다음 값으 열을 디플트로 설정합니다.2. 시퀀스가 항상 null이 아닌 정수를 생성하기 때문에 NOT NULL 제약조건을 열에 추가합니다.3. 시퀀스의 소유자를 id 열에 할당합니다. 결과적으로 id열 또는 표를 삭제하면 순서 객체가 삭제됩니다.즉, 위의 소스는 다음과 동일합니다.12345678CREATE SEQUENCE table_name_id_seq; CREATE TABLE table_name ( id.. 더보기
MYSQL 컬럼 자동증가 기존 컬럼에 자동증가 속성 및 pk 추가ALTER TABLE table_name MODIFY coulmn_name INT NOT NULL AUTO_INCREMENT PRIMARY KEY; 기존 컬럼에 자동증가 속성만 추가ALTER TABLE table_name MODIFY coulmn_name INT NOT NULL AUTO_INCREMENT; 자동 속성값 초기화ALTER TABLE table_name AUTO_INCREMENT = 1; 출처 및 추가내용 : http://hammer.tistory.com/entry/MYSQL-%EC%BB%AC%EB%9F%BC-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80-%EC%86%8D%EC%84%B1-%EB%B3%80%EA%B2%BD-%EB%B0%.. 더보기
C# 시간재기 stopwatch C# Stopwatch 로 코드 시간재기 123456789//using namespace : using System.Diagnostics; Stopwatch sw = new Stopwatch();sw.Start(); //do work sw.Stop();Console.WriteLine(sw.ElapsedMilliseconds + "ms");cs C#에 내장되어있는 Stopwatch를 이용하여 work 시간을 잽니다. 더보기
[MSSQL]SQL Server 2016 미러링 구축하기 트랜잭션에러편 다음과 같이 트랜잭션 에러가 나타날 때 에러를 해소할 수 있는 방법입니다. 에러 메시지 : 미러 데이터베이스 "test"의 트랜잭션 로그 데이터가 부족하여 주 데이터베이스의 로그 백업 체인을 유지... 에러 해소 방법은 주 서버에서 로그를 백업하여 미러서버에서 NORECOVERY로 복원시켜주면 해결됩니다.로그 백업은 T-SQL로 작업하겠습니다. 먼저 주 서버에서 작업을 진행합니다. 주 서버의 새 쿼리에서 다음과 같이 쿼리를 작성하고 실행합니다. backup log test to disk = 'c:\test.log' with initgo test는 데이터베이스 이름입니다.'c:\test.log'는 로그를 생성할 경로입니다. 저 명령어는 test 데이터베이스를 'c:\test.log' 의 경로에 백업파일을 .. 더보기
[MSSQL]SQL Server 2016 미러링 구축하기 3편 2.4 미러링 연결 - 파트너 연결 T-SQL의 파트너 연결은 반드시 미러서버에서 먼저 미러링을 연결(T-SQL 실행)한 후 주 서버를 연결해야 합니다. 미러서버에서 먼저 작업을 진행합니다. 미러서버의 새 쿼리에서 다음과 같이 쿼리를 작성한 후 실행합니다. 아래는 예시 쿼리입니다. alter database test set partner = 'tcp://192.168.10.207:5022' test는 데이터베이스 이름입니다.'tcp://192.168.10.207:5022' 는 주서버 ip주소 및 주서버의 미러링 포트번호 입니다. 명령이 완료되었다는 메시지가 뜨면 성공입니다. 다음으로 주 서버에서 작업을 진행합니다.명령어는 미러서버와 비슷하지만, ip및 포트 부분이 미러서버의 정보로 변경된 명령어입니다. .. 더보기
[MSSQL]SQL Server 2016 미러링 구축하기 2편 2. 미러링 구축하기 2.1 데이터베이스 백업 **주서버에서 작업해줘야하는 부분입니다. 예제에서는 192.168.10.207 서버의 데이터베이스에서 이를 진행합니다. 먼저 미러링을 할 데이터베이스를 백업해줍니다.미러링을 하려는 주 서버의 데이터베이스를 우클릭후, 테스크>백업 버튼을 눌러 백업창으로 들어갈 수 있습니다. 데이터베이스와 백업 유형을 전체로 설정하고, 백업 구성 요소는 데이터베이스로 선택합니다.그다음 디폴트값으로 설정되어있는 경로를 제거합니다.제거한 뒤 추가를 눌러 경로를 재설정 해줍니다. 경로를 재 설정해줄 때, 백업 파일을 찾기 쉽게 하도록 경로를 C:\ 로 두었고, 파일명은 "백업파일명.bak" 로 백업파일을 만듭니다.예시의 경우엔 test.bak 파일로 만들었습니다. 만약, 운영체제 접.. 더보기
[MSSQL]SQL Server 2016 미러링 구축하기 1편 MSSQL SQL Server 2016 미러링 구축하기 - 1편 본 포스팅은 SQL Server 2016에 관한 포스팅이 보이지 않아 고초를 겪고 있을 사람들을 위해 정리하였습니다.SQL Server 2016은 미러링시 약간의 버그가 있음을 확인하였고, 그 버그 부분만 잘 넘겨주시면 기존에 정리되어있는 SQL Server 2012와 동일하게 이용하실 수 있습니다.버그는 Server 2016은 미러링설정 중, 특정 부분(미러링을시작하는 부분)이 GUI로 해소되지 않음인데 그 부분은 여기에 자세히 나와있습니다. 1. 미러링 환경 및 주의사항 다음 표는 본 예제의 환경입니다. 주 서버 미러 서버 OS Window Server 2016 Window Server 2016 SQL Server SQL Server 2.. 더보기
C# [DataContract], [DataMember] namespace [DataContract], [DataMember] 사용 네임 스페이스 1. 해당 프로젝트의 참조 > 참조추가 > 어셈블리 > 프레임워크 System.Runtime.Serialization 을 추가 2. using 추가 using System.Runtime.Serialization; 입력 더보기
C# Log4Net 사용하기 - 파일편 Log4Net 사용 방법 - 파일편 1. Log4Net dll 다운받기 다운받을 수 있는 아래 그림으로 이동할 수 있는 URL : https://logging.apache.org/log4net/download_log4net.cgi가급적이면 newKey로 다운받아달라고 써있다. newKey의 zip으로 다운받자. 위의 파일을 다운로드 받아서 압축을 풀고, 아래의 경로로 가서 보면 다음과 같이 여러 버전의 dll 파일이 있다. 원하는 파일을 복사해서 참조하기 쉬운 위치로 가져다 놓자. 나의 경우는, .net 의 4.0 버전을 쓰기 위해서 다음과 같은 경로로 접근하였으며, 해당 파일을 내가 쓰려는 프로젝트 폴더에 옮겨두었다. 종류 확인을 위해 찍었다. 2. 참조 추가 해당 프로젝트의 참조 오른쪽 버튼 클릭 >.. 더보기
Visual Studio 관리자 권한으로 실행 Visual Studio 관리자 권한으로 실행시키는 방법 1. 프로젝트>속성 으로 이동 2. 보안 > ClickOnce 보안 설정 사용 체크 3. 솔루션 탐색기에서 Properties 폴더 아래에 있는 app.manifest 를 더블클릭하여 오픈 4. 아래 그림과 같이 점선의 빨간 부분을 실선의 빨간 부분으로 교체. 보통 level 부분의 속성값만 바꿔주면 될 것. 5. 프로젝트 > 속성 으로 들어가서 보안 > ClickOnce 보안 설정 사용 체크를 해제한다. 6. 프로젝트를 다시 빌드한다. 7. 관리자권한으로 실행한다는 메시지가 뜰 것이다.(window 10에서 테스트) 그럼 성공한것! 더보기
WCF HTTP가 URL http : // + : 8000 / HelloWCF /를 등록 할 수 없습니다. 프로세스에이 네임 스페이스에 대한 액세스 권한이 없습니다. HTTP가 URL http : // + : 8000 / HelloWCF /를 등록 할 수 없습니다. 프로세스에이 네임 스페이스에 대한 액세스 권한이 없습니다. 이 문제는 관리자 권한으로 VS를 실행하지 않아서 생기는 문제이다. VS를 관리자권한으로 실행하여 다시 시도해보면 정상적으로 작동한다. 출처:https://code.i-harness.com/ko/q/852afd 더보기
WPF XamlParseException 예외 XamlParseException 에러가 났을 경우, 디버깅이 불가능하다. 이 경우, 디버그 메뉴에서 예외 메뉴로 들어가서에러가 났을법한 인터페이스를 체크하여 반드시 디버그모드로 들어가게끔 하는 방법이 있다. 디버그>예외 Common Language Runtime Exceptions 나같은 경우는 ServiceModel 부분에서 에러가 나는 것 같아 관련된 것에 체크하였다. 출처:http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&wid=510 더보기
ACCESS Log4Net App.Config 입력예시 Access 에서 Log4Net을 쓰기 위한 App.config 에 추가해야하는 명령줄 아래 예시는 Access 로 연결하는 방법을 예시로 나타낸 것이며, 각 DB에 따라 연결 방법이 다름을 알립니다. 다른 DB 연결 방법은 아래 출처에 가면 자세하게 나와있으니 참고하시기 바랍니다. 본 예시는 데이터베이스인 mdb에 Log라는 테이블이 존재하고 Log 테이블 안에는 Date, Thread, Level, Logger, Message라는 컬럼이 추가되어 있는 상태. 123456789CREATE TABLE [dbo].[Log] ( [Id] [int] IDENTITY (1, 1) NOT NULL, [Date] [datetime] NOT NULL, [Thread] [varchar] (255) NOT NULL, [.. 더보기
ACCESS SQL 예시 with C# Access Db (.mdb) 연결하기 (feat.C#) 1. DB 연결하기1234567// it's your DB file path:// ApplicationEXEPath\Test.mdbvar DBPath = Application.StartupPath + "\\Test.mdb"; conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;" + "Data Source=" + DBPath);conn.Open();Colored by Color Scriptercs 1.1 DB 연결하기 (.accdb파일)1234string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.accdb;"OleDb.. 더보기
ACCESS 파일 버전 확인하기 ACCESS 버전을 확인하려 할때 어떤 버전인지 알고 그에 맞는 프로시저를 사용하거나 ACCESS파일을 사용해야 한다.나같은 경우는 프로시저를 이용해야 하기 때문에 ACCESS의 파일버전을 알아야 했다. ACCESS 버전 확인 방법은 확장자명으로 가능하다. .mdb 의 확장자는 Access 2007이전에 도입된 파일 확장자명 형식이다. 즉, 버전이 Access 2007 이전 버전이라고 생각하면 된다..accdb 의 확장자는 Access 2007부터 도입된 파일 확장자명 형식이다. 따라서 버전이 Access 2007 이상의 모든 버전이라고 생각하면 된다. .accdb 파일형식은 계산된 필드 및 첨부파일과 같은 여러가지 새로운 기능을 지원하지만, accdb에서 사용할 수 없는 .mdb 파일 기능이 있다. 따.. 더보기
SQL) MSSQL CHARACTER_MAXIMUM_LENGTH vs CHARACTER_OCTET_LENGTH MSSQL CHARACTER_MAXIMUM_LENGTH vs CHARACTER_OCTET_LENGTH CHARACTER_MAXIMUM_LENGTH : character의 길이(length) 기준CHARACTER_OCTET_LENGTH : byte의 길이(length) 기준 따라서, var나 varchar는 CHARACTER_MAXIMUM_LENGTH 의 값과 CHARACTER_OCTET_LENGTH의 값이 같다. 하지만, nvarchar는 유니코드가 포함되어 있는 타입이기 때문에, CHARACTER_MAXIMUM_LENGTH의 값은 CHARACTER_OCTET_LENGTH 값과 다르다. 유니코드는 charater가 1당 byte가 2이기 때문에 CHARACTER_OCTET_LENGTH 의 값이 CHARA.. 더보기
C# 파일열기대화상자 및 필터이용방법 string path = null; OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "Excel files (*.xls,*xlsx)|*.xls;*xlsx|All files (*.*)|*.*"; //필터는 변경 가능if (ofd.ShowDialog() == DialogResult.Cancel){return; //취소했을때 함수 종료 (함수가 void일 경우에 해당)} path 에는 선택한 경로가 들어있다. D의 test.txt 파일을 선택했다면, path 에는 "D:\\test.txt" 가 입력되어 있을 것이다. ==MSDN 본문 중== 각 필터링 옵션에 대 한 필터 문자열에는 세로줄 필터에 대 한 설명을 포함 막대 (|) 및 필터 패턴입니다. 다양 한 필.. 더보기