전체 글206 C# Properties.Settings.Default의 설정 값은 어디에 저장이 될까? (app.config 관리) 서론 나는 여지껏 App.config에 값을 관리할때 Properties.Settings.Default.Save()를 하면 app.config에 적용이 되어 값이 관리되는줄로알고 해당 문법을 사용해왔었다. 그런데 !! 최근에 config에 값을 수정한 후에 해당 .exe파일과 .config파일을 다른 곳에 옮겨서 사용해보니 수정한 값이 없어지고 처음 설정한 초기 기본값으로만 잡혀있는 것이였다. 당황감속에 config파일을 열어봤다. 실행경로에 있는 config에 수정한 값들이 하나도 적용이 안되어 있는 것을 마주했다.. 난 당연히 Save()하고 난 뒤에 프로그램을 껐다켜도 저장이 되어있기에 app.config에 저장이 되어 관리가 되고있겠지란 생각을 하고 사용해왔는데 너무 당황스러웠다. 이것을 어떻게 .. Programming/C# 2022. 1. 6. [VisualStudio] .net 5.0 종속성에 어셈블리(dll) 추가가 안될 때 !!! 서론 없이 어떤 문제 발생 내용과 어떻게 해결했는지 알아보자. 문제 발생 내용 클래스 라이브러리에서 System.Window.Form.dll 을 참조 할려고 했는데 종속성에서 추가하면 자꾸 이상한 문자가 반환되고 참조가 안됐었다. (2-1 이미지 참고) 해결 우선 종속성에서 dll추가를 찾아보기를 눌러서 Microsoft 폴더에서 해당 dll 검색하여 추가하니 정상작동. .net 5.0에서 기존 솔루션 탐색기에 참조라고 있던 것이 종속성으로 변경하였고, 해당 종속성에 기존 어셈블리(dll)을 추가할려고 하면 아래의 경로로 들어가서 추가할 dll 검색하여 추가해주면 된다. 아래 이미지 방식대로 종속성에서 COM 에서 검색해서 추가하면 자꾸 이상한 문자만 나오고 추가가 안되서 애좀 먹었었다. 문제 발생 ! .. Programming/C# 2022. 1. 5. [Refactoring 기법 #01] 메서드 정리 - 메서드 추출 ※ 오늘의 명언 아무리 구조가 잘 되어 있더라도, 프로그래머가 나쁜 프로그램을 만드는 걸 막아주는 프로그래밍 언어는 없다. - Larry Flon, 구조적 프로그래밍에 대한 연구 저자 서론 이번 글에서 공부할 내용은 메서드 정리 파트에서 메소드 추출 부분의 내용을 정리할려고 한다. 해당 내용은 간단한 내용이니 부담없이 봐도 좋을 것 같다. 작성 소스 private string _blog = ""; private string _owner = ""; praivte void printBlogOwner() { //블로그 정보를 불러오는 함수 호출 inputVal(); //세부 정보 출력하기 System.out.println("blog" : + _blog); System.out.println("owner" : +.. Refactoring/Refactoring Skill 2022. 1. 4. [Refactoring] 리팩토링(Refactoring)이란? (리팩토링 효과 / 해야 하는 이유) ※ 오늘의 명언 올바로 작동하지 않는다고 걱정하지 마라. 모든 게 잘 되었다면, 내가 할 일이 없어진다. - Mosher’s Law of Software Engineering 서론 클린 코드가 필요한 개발자에게 필요한 기술은 리팩토링이다. 위의 이미지에 있는 교재로 스터디를 진행할 예정이며 지금처럼 여유있을 때마다 하나씩 정리할 예정이다. 개발에 대한 공부는 끝이없지만 이 리팩토링에 대한 개념을 정리하여 한줄을 적더라도 누구에게 보여줘도 이해하기 쉬운 소스를 짜보자. 우선 기술들을 익히기 앞서 리팩토링 기술들에 대해 리펙토링에 대해 먼저 알아보자 리팩토링이란? ( What is Refactoring ? ) 위키백과에서 정의 된 내용부터 알아보자. 리팩토링(Refactoring)이란 "'결과의 변경 없이 .. Refactoring/Refactoring Skill 2022. 1. 3. [Review] "초보자를 위한 C# 200제" 책 공부 후기 ! 이번 글에서는 나의 C#의 베이스를 다져준 이 책에 대해 후기를 간단히 남겨 볼려고 한다. 요즘 이리저리 하는게 많아서 너무 바쁘지만 이렇게 굳이 시간을 쪼개서 후기를 남기는 이유는 이 책에서 내가 어떤 지식을 얻었고 어디 부분이 나에게 도움이 되었는지 적어놓으면 나중에 해당 문제가 다시 발생했을 때 쉽게 서치할 수 있도록 남겨두기 위함이 있다. 작성 목적의 이유를 정리해보면 이렇다. 어떤 부분이 도움이 되었는가 ? 이 책을 공부해서 해결한 문제 ? 이 책을 보고 더 깊게 공부하고 싶은 부분은? 어떤 부분이 도움이 되었는가 ? 1. 객체 지향의 기초를 다지는데 아주 좋다. > OOP의 특성을 파트별로 잘 나누어 실습하게 좋게 되어있다. 2. 기초 알고리즘에 대한 예제가 많다. > 처음 C#이란 언어에 익.. Self-Development/Book Review 2022. 1. 2. [Network] TCP/IP Server와 Client의 통신 구조 서론 이번글에서는 개발자라면 한번씩은 들어봤을 tcp/ip 통신 방식과 서버와 클라이언트 간의 통신 구조에 대해 알아볼 것이다. 우선 TCP/IP가 뭔지부터 알아보자. TCP/IP란? 먼저 간단히 정의하면 TCP/IP는 컴퓨터와 컴퓨터간의 기본적인 통신규약(프로토콜)이다. TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control Protocol)로 이루어져 있는 구조이며 이 중 IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있고, TCP는 IP 위에서 동작하는 프로토콜로 데이터의 전달을 보증하고 보낸 순서대로 받게 해주는 속성을 갖고있다. 우리가 흔히 볼 수 있는 HTT.. Computer Science/Network 2021. 12. 30. [Algorithm] 선택 정렬(Selection Sort)에 대해 알아보자! 이번에 다룰 내용은 여러 정렬 알고리즘 중 하나인 선택정렬이다. 바로 선택정렬의 개념부터 알아보자. 선택정렬이란? 첫번째 인덱스부터 모든 인덱스를 검사하여 최소값을 찾아 정렬하는 방식이다. 그렇기 때문에 입력된 데이터가 정렬이 되어있건, 역순이건, 반쯤 정렬이 되어있건 모두 같은 시간이 걸리게된다. 따라서 이 정렬의 시간복잡도는 O(n^2)가 되고 데이터 수가 커지면 커질수록 실행시간은 제곱으로 늘어나게 되는 형식인 것이다. 아래의 참고 이미지를 보면 이해가 쉽게 갈 것이라 생각한다. 위의 참고 이미지처럼 끝까지 한번 돌고 최소 값을 찾아 교환(swap)하는 형식이다. 이런 방식의 장점고 단점에 대해서도 알아보자. 장점 코드 구현이 쉽다. 정렬이 진행됨에 따라 속도는 빨라지는 속성을 갖고있다. 버블 정렬.. Algorithm/Concept 2021. 12. 29. [Algorithm] 삽입 정렬(Insertion Sort)에 대해 알아보자! 이번에 다룰 내용은 여러 정렬 알고리즘 중 하나인 삽입정렬이다. 바로 삽입정렬의 개념부터 알아보자. 삽입정렬이란? 배열 값 중에서 비교할 키 값을 정해놓고 맨 앞 인덱스부터 하나씩 비교 키 값과 비교하여 작은 수를 앞으로 옮기는 방식이다. 풀어서 얘기하면 삽입정렬은 1번 인덱스부터 시작을 하며 2개의 수를 비교하여 배열 사이에 변수를 삽입하여 정렬하는데 이렇게 정렬을 하다보면 비교한 숫자보다 왼쪽으로 자신이 더 크면 그냥 원래 자리에 있는 방식이라서 순차적으로 계속 진행하면 정렬이 되는 형식이다. 아래의 참고 사진을 보면 이해에 도움이 될것이다. 위의 사진을 보면 알 수있듯 키값을 정해두고 비교해가며 정렬해가는 방식인 것이다. 이제 삽입정렬의 장 단점을 알아보자. 장점 비교적 쉬운 코드로 구현이 가능하다.. Algorithm/Concept 2021. 12. 29. [Algorithm] 버블 정렬(Bubble Sort)에 대해 알아보자! 이번에 다룰 내용은 여러 정렬 알고리즘 중 하나인 버블정렬이다. 바로 버블정렬의 개념부터 알아보자. 버블정렬이란? 인접한 값을 순차적으로 계속 비교하여 위치를 바꾸면서 최대, 최소값을 구해가는 정렬 방식이다. 다시 말해, A>B or AB, 내림차순으로 정렬을 하고싶다 하면 A arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; } /// /// Print 함수 /// /// static void Print(int[] arr_val) { for (int i = 0; i < arr_val.Length; i++) { Console.Write(arr_val[i].ToString() + "\t"); } } } } Algorithm/Concept 2021. 12. 29. C# 크로스 스레드(Cross Thread)란? (에러 발생 이유 / 해결 방법) 서론 Winform에서 스레드 환경을 구성해서 폼을 제어하다보면 아래의 사진과 같은 크로스 스레드 에러가 빈번하게 발생하는것을 확인 할 수 있을 것이다. 에러 내용 : 크로스 스레드 작업이 잘못되었습니다. 'Textbox' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스 되었습니다. 에러가 발생하는 이유 ? 폼 구동 시 실행되는 하나의 쓰레드에서 Winform 컨트롤을 관리하게 되는데 해당 특정 스레드가 관리하고 있는 컨트롤을 다른 스레드가 액세스하였을 때 발생한다. 다시 말하면 winform 컨트롤을 생성한 스레드가 아닌 다른 스레드가 속성을 바꾸는 작업을 요청했을 때 크로스 스레드 예외가 발생하는 것이다. 근데, 크로스 스레드는 특이한게 Debug모드에서만 실행되고 Release모드에서는 실.. Programming/C# 2021. 12. 29. 이전 1 ··· 14 15 16 17 18 19 20 21 다음 💲 많이 본 글