본문 바로가기
반응형

전체 글158

[개발상식] 참조복사, 얕은복사, 깊은복사(얕은복사와 참조복사는 같은말일까?) 이번게시글에서는 참조복사, 얕은복사, 깊은복사에 대해 포스팅 하겠습니다. 세가지 키워드들은 프로그래밍 언어별로 조금은 다르게 해석합니다. (객체에 메모리 주소를 공유하는걸 얕은복사라고하는사람도 있고 참조복사라고 하는사람도 있습니다.) 이유도 나름대로 정리해보겠습니다. 언어는 python을 사용하여 예제를 만들어봤습니다. 1. 참조복사 a = [1,2,3] b = a b[0] = 4 print(a) // [4, 2, 3] 출력 print(b) // [4, 2, 3] 출력 리스트 a를 선언 내부에는 1,2,3을 넣어주었습니다. b에 a를 복사하고 b의 첫번째값을 4로 변경한 예제입니다. mutable한 특징을 가지고있는 객체들은 단순히 b = a로 복사할경우 참조해야할 주소의 값이 복사되어 주소를 공유하게되.. 2020. 9. 22.
[wpf] 화면 이동하기 -3- TabControl 사용법, 예제(wpf 탭) 화면 이동하기는 총 네개의 게시글로 구성되어 있습니다. 1. Page 2. Window 3. TabControl 4. UserControl 화면이동하기 3번째 TabControl 편 입니다. 바로 예제로 살펴보겠습니다. 1. MainWindow.xaml 이번게시글은 xaml하나의 파일만 작성하면 됩니다. TabControl태그를 열어주고 자식요소로 TabItem을 넣어주시면 됩니다. Header를 지정해주면 탭의 이름으로 지정됩니다. TabItem태그 내부에 보여주고 싶은 화면을 구성하면 됩니다. 결과화면 2020. 9. 18.
[wpf] 화면 이동하기 -2- Window 사용법, 예제(사용자 입력 받기) 화면 이동하기는 총 네개의 게시글로 구성되어 있습니다. 1. Page 2. Window 3. TabControl 4. UserControl 이번 게시글에서는 Window를 사용하여 화면을 이동해보겠습니다. Window는 화면을 이동하는게 아니라 화면을 새로 띄워주는 개념입니다. 사용자의 입력을 받을때 활용되는 경우가 많습니다. 시작하겠습니다. 파일은 MainWindow, InputWindow로 구성됩니다. 1. MainWindow.xaml 화면을 좌우로 분할해 왼쪽에는 textblock을 오른쪽에는 버튼을 만들어주었습니다. 2. MainWindow.cs namespace WindowTest { /// /// MainWindow.xaml에 대한 상호 작용 논리 /// public partial class .. 2020. 9. 18.
[wpf] 화면 이동하기 -1- Page 사용법, 예제 화면 이동하기는 총 네개의 게시글로 구성되어 있습니다. 1. Page 2. Window 3. TabControl 4. UserControl 이번게시글에서는 Page를 이용해 화면 이동을 해보겠습니다. Page는 화면전체를 이동할떄 주로 사용합니다. 이번 게시글은 총 네개의 파일로 구성됩니다. MainWindow, MenuPage, MyPage1, MyPage2 MenuPage를 제외한 나머지파일에서는 cs파일에 아무것도 적지 않아도 됩니다. 1. MainWindow.xaml 태그의 Source에 URI를 직접 넣어줍니다. Mainwindow에서 화면이 시작되면 MenuPage의 화면을 띄워줄 것입니다. 2. MenuPage.xaml 화면을 위아래로 쪼개고 버튼을 넣어주었습니다. 그리드 안에 들어가는 요소.. 2020. 9. 18.
[wpf] 화면 이동하기 -4- UserControl 사용법, 예제 화면 이동하기는 총 네개의 게시글로 구성되어 있습니다. 1. Page 2. Window 3. TabControl 4. UserControl 이번 게시글에서는 UserControl을 사용해보겠습니다. Window, Page와는 다르게 UserControl은 화면의 일부분을 채울때 사용 됩니다. 흔히 말하는 웹 프론트엔드의 컴포넌트도 같은 의미로 UserControl을 잘 사용하면 재사용성이 높아져 코드중복이 줄어듭니다. 간단한 예제 입니다. 1. MainWindow.xaml 버튼 메인윈도우에서는 grid를 위아래로 사등분했고 세번째 그리드까지 내부에 MyUC태그를 넣어주었습니다. 각각의 보더를 주었고 마진을 주어 간격을 살짝 벌렸습니다. 마지막 그리드에는 버튼을 하나 넣어주었습니다. UserControl을.. 2020. 9. 18.
c#,wpf 채팅프로그램 만들기 - 7 - 소켓통신(TcpListener, TcpClient)을 이용한 채팅프로그램을 만들어보자(wpf를 활용한 서버) 채팅프로그램 만들기는 총 12개의 게시글로 구성되어있습니다. 첫번째 게시글 : 1:1단발성통신(동기서버 동기클라) 두번째 게시글 : 1:1지속성통신(동기서버 완성본 동기 클라이언트) 세번째 게시글 : 1:1통신(비동기서버) 네번째 게시글: 1:N통신(여기서부터는 여러명을 받아야하므로 당연히 비동기서버입니다.) 다섯번째 게시글 : 채팅프로그램 콘솔 서버 여섯번째 게시글 : 채팅프로그램 콘솔 클라이언트 일곱번째 게시글 : wpf를 통해 View를 구현한 서버 여덟번째 게시글 : wpf를 통해 View를 구현한 클라이언트(메인화면 만들기) 아홉번째 게시글 : wpf를 통해 View를 구현한 클라이언트(로그인화면 만들기) 열번째 게시글 : wpf를 통해 View를 구현한 클라이언트(채팅상대 선택화면 만들기) 열.. 2020. 9. 18.
[JavaScript] var, let, const의 특징 javascript는 동적언어이므로 동적언어이므로 숫자, 문자열, boolean 등 데이터 타입에 상관없이 변수에 할당 할 수 있습니다. var, let, const는 변수를 선언할 때 앞에 붙이는 키워드이며 아무것도 사용하지 않았을떄와 이 세가지의 사용했을때의 차이점에 대해서 정리하였습니다. 1. 아무것도 사용하지않는 경우 vs var 키워드를 사용하는경우(지역변수) (1) var키워드를 사용하지 않은 경우 function print(){ abc = 'hello'; document.write(abc) // hello 출력 } abc = 'world'; print(); document.write(abc) // hello출력 저는 helloworld를 출력하고 싶었으나 hello가 두번 출력됩니다. (2).. 2020. 9. 15.
[c#] BeginInvoke사용법 및 예제 -3-(콜백) 개요 1. Thread 2. lock 3. BeginInvoke(비동기, 스레드풀) 4. BeginInvoke2(비동기 리턴값) 5. BeginInvoke3(콜백) 6. BeginInvoke4(BeginInvoke예제) 이번게시글에서는 비동기작업의 콜백에 대해 알아보겠습니다. 콜백이란 피호출자가 호출자의 메서드를 실행해주는 것을 말하며 BeginInvoke에서의 콜백메서드는 비동기작업이 끝난 직후 실행됩니다. (보통 비동기작업은 외부에서 끝내주는 경우가 많아 콜백이라고 합니다.) 즉 비동기호출을 한 스레드는 비동기의 일이 진행이 되던 말던 신경을 안쓰고 다음줄을 실행하게 되는데 작업이 끝났다는걸 콜백메서드를 통해 보고받고 원하는 로직을 실행한다고 생각하시면 됩니다. 비동기호출을 한 스레드를 블락시키거나,.. 2020. 9. 7.
[c#] BeginInvoke사용법 및 예제 -2-(비동기 리턴값) 개요 1. Thread 2. lock 3. BeginInvoke(비동기, 스레드풀) 4. BeginInvoke2(비동기 리턴값) 5. BeginInvoke3(콜백) 6. BeginInvoke4(BeginInvoke예제) 저번게시글에서 BeginInvoke의 사용법에 대해 알아보았습니다. 비동기작업은 스레드를 직접 생성하는것과는 다르게 스레드풀에서 돌아간다는 차이가 있긴 하지만 저번게시글의 작업은 스레드를 하나 더 만들어서 하는것과 큰 차이점을 찾을 수 없었습니다. 이번 게시글에서는 스레드의 작업과 비동기작업의 차이점에 대해 살펴보겠습니다. 비동기와 스레드 모두 여러개의 작업을 할 수 있지만 비동기작업은 스레드와 다르게 리턴값을 받아올 수 있으며, 콜백이라는 구문이 존재합니다. 이번 게시글에서는 비동기작업.. 2020. 9. 7.
반응형