썸네일 이미지
코딩시 많이 하는 최적화 실수 이런걸 알고있으면 도움이 될것 같아 작성하게 되었습니다. 요즘에는 워낙 컴퓨팅 성능이 좋아져 구글같은 기업은 이런말을 하기도 했습니다. 제품 출시를 빠르게 하고 개발자가 쉽게 만드는게 컴퓨팅파워를 더 쓰더래도 좋다. 그러나 아래의 내용은 간단히 개발자의 실력으로 처리가능한 문제고, 하고 안하고의 차이가 많이 나기때문에 꼭 신경써서 처리하는것이 좋습니다. 많이 할 수 있는 코드 실수 예시 for, while 등 반복문에서 break를 안쓰는 경우 반복문에서 break를 쓰는것은 프로그램의 성능에 크게 도움이 됩니다. 겨우 1,000번 10,000번 반복하는거라면 크게 신경 쓸 필요가 없습니다. (하지만, 자주 실행되는 코드라면? 반복문이 오래 실행된다면?) 그러나, 이런게 쌓여 컴퓨터에서는 수십만 수천만번..
c#) args 처리하기 ffmpeg 같은 명령줄 프로그램 같은경우를 보면 -o, -s, -h 등 처리할수 있는 인자값들이 많다. 이걸 C#에서 처리해보자 먼저 argument로 부터 인자값을 받을수있게 함수를 생성한다. static string GetArgument(IEnumerable args, string option) => args.SkipWhile(i => i != option).Skip(1).Take(1).FirstOrDefault(); 방금 만든 GetArgument 함수를 이용하여 --hi098123 다음전달 받은값을 변수에 집어넣거나 바로 처리할 수 있다. var hi098123 = GetArgument(args, "--hi098123"); /* hi098123 변수에 --hi098123 다음으로 입력된 값이 저..
C#) Console.WriteLine 와 Console.Write 차이 차이점 Console.WriteLine 는 출력 이후 줄을 바꿉니다. Console.Write 는 출력만 합니다. 만약, Console.Write에서 줄을 바꾸려면? Console.Write("\n"); 와 같이 써주시면 됩니다. 예시 코드 using System; using System.Collections.Generic; using System.Linq; using System.Text; class Program { static void Main() { Console.Write("1"); Console.Write("2"); Console.Write("3"); Console.WriteLine(); Console.WriteLine("4"); Console.Write("5"); } } 실행결과 123 4 5
C#) 윈도우 정품인증 체크하기 다음과 같은 코드로 확인할 수 있다. public static bool IsWindowsActivated() { ManagementScope scope = new ManagementScope(@"\\" + System.Environment.MachineName + @"\root\cimv2"); scope.Connect(); SelectQuery searchQuery = new SelectQuery("SELECT * FROM SoftwareLicensingProduct WHERE ApplicationID = '55c92734-d682-4d71-983e-d6ec3f16059f' and LicenseStatus = 1"); ManagementObjectSearcher searcherObj = new Manag..
.NET) formclosing vs closing 이 둘의 차이 윈폼에서 종료될때 이벤트는 formclosing 과 closing 이 있습니다. 둘은 어떤 차이가 있을까요? 구글링에서도 그닥 많은 정보를 주지 않아 정리해보았습니다. Closing .net 2.0 이전의 방식입니다. 현재에도 사용 가능하나 안쓰는게 좋습니다. 마이크로소프트에서는 FormClosing 사용을 권장합니다. FormClosing .net 2.0 이후 방식. 종료되는 시간에 뭔가를 하려면 이 기능을 활용하는게 권장됩니다. 예) 종료를 중단 private void front_FormClosing(object sender, FormClosingEventArgs e) { e.cancel = true; } Private Sub front_FormClosing(sender As Object, e As ..
확률(랜덤값) 알고리즘은 어떻게 작동할까? 먼저 생각해보세요 !! 어떤 함수를 만들건데, 출력은 무조건 랜덤값이 나와야 한다. 어떻게 만들수 있을까요?? . . . . . . . . . . . . . . . . . . . . . 생각을 다해보셨다면 떠오르는 방법이 뭐가 있었나요? 확률알고리즘은 그때 그때 다른값이 나오게 만들어져야 됩니다. 하지만, 많은 값들이 그때그때 변하질 않아요 그래서 이용하게 된게 컴퓨터의 시간단위를 이용하게 됩니다. ms 단위로 또는 더 작은 단위로 컴퓨터는 시간을 세는데 이때의 값은 시시때때로 바뀌죠 예측할수도 없습니다. 정확한 값에 스톱워치 중지하기도 힘드니까요 이 시간단위를 이용해서 수식을 만들면 랜덤값이 뽑히는 알고리즘이 탄생합니다. 예를 들어 0~1000이 랜덤 값이면 그냥 ms( 1 / 1000 초 ) 를 반환..
.NET 크로스 스레드 작업이 잘못되었습니다. C# private delegate void Delegatep(object sender, 여기1 e); private void AAA(object sender, 여기1 e) { if (this.InvokeRequired) { Delegatep tmpDelegate; tmpDelegate = new Delegatep(AAA); // AAA 에는 나 자신을 쓴다. this.Invoke(tmpDelegate, sender, e); // 내 자신 쓰레드에서 가능하게 > 다시 나를 호출 } else //다시 나를 호출 이후 > 실제 로 실행 하려던 코드 } VB.NET Private Delegate Sub Delegatep(ByVal sender As Object, ByVal e As 여기1) Private Su..