<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Renascor</title>
    <link>https://solever.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 04:07:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>갱생쌩유</managingEditor>
    <item>
      <title>Git: Updates were rejected because the remote containes work that you do not have locally.</title>
      <link>https://solever.tistory.com/32</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;상황: 원격 저장소가 README 혹은 LICENSE 만으로 생성된 경우 (나 같은 경우 README.md 가 추가)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;원인: 원격 저장소(Repository)에서 README / LICENSE 파일로 생성한 경우&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;핵심 명령어: &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #232629;&quot;&gt;git pull origin main --allow-unrelated-histories&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;[시행착오 단계]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 로컬 저장소 위치에서 git init&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ssV5K/btrP9GrN9Zq/g4jzlmOst89j6QIk6cg5P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ssV5K/btrP9GrN9Zq/g4jzlmOst89j6QIk6cg5P0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ssV5K/btrP9GrN9Zq/g4jzlmOst89j6QIk6cg5P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FssV5K%2FbtrP9GrN9Zq%2Fg4jzlmOst89j6QIk6cg5P0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;56&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 추적되는 파일이 없는 것을 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UVjNF/btrP91Jjj4T/TskPMMK9lOd4URDn6JnkpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UVjNF/btrP91Jjj4T/TskPMMK9lOd4URDn6JnkpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UVjNF/btrP91Jjj4T/TskPMMK9lOd4URDn6JnkpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUVjNF%2FbtrP91Jjj4T%2FTskPMMK9lOd4URDn6JnkpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;184&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 현재 디렉토리의 모든 파일을 staging area 로 옮겨 파일을 추적할 수 있도록 명령&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdle5k/btrP9HJ6XfQ/r3KdM5qEp9ffPf411p8JPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdle5k/btrP9HJ6XfQ/r3KdM5qEp9ffPf411p8JPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdle5k/btrP9HJ6XfQ/r3KdM5qEp9ffPf411p8JPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdle5k%2FbtrP9HJ6XfQ%2Fr3KdM5qEp9ffPf411p8JPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;227&quot; height=&quot;45&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 추적되고 있음을 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/THeiZ/btrP98VYxh1/jk3ShTLnhkCIbZUAxDTQ3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/THeiZ/btrP98VYxh1/jk3ShTLnhkCIbZUAxDTQ3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/THeiZ/btrP98VYxh1/jk3ShTLnhkCIbZUAxDTQ3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTHeiZ%2FbtrP98VYxh1%2Fjk3ShTLnhkCIbZUAxDTQ3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;378&quot; height=&quot;152&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. 브랜치 변경하려 했으나 commit 내용이 없어서 실패&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SQvcs/btrQdy7ipm6/RCmlAWMh6FojjSeeg4mhqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SQvcs/btrQdy7ipm6/RCmlAWMh6FojjSeeg4mhqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SQvcs/btrQdy7ipm6/RCmlAWMh6FojjSeeg4mhqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSQvcs%2FbtrQdy7ipm6%2FRCmlAWMh6FojjSeeg4mhqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;361&quot; height=&quot;78&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6. 첫번째 commit을 하려했으나 설정값 입력 요구&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MnNKP/btrQaaM0rj0/yrlESiakkVLB6ZD6TpdaJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MnNKP/btrQaaM0rj0/yrlESiakkVLB6ZD6TpdaJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MnNKP/btrQaaM0rj0/yrlESiakkVLB6ZD6TpdaJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMnNKP%2FbtrQaaM0rj0%2FyrlESiakkVLB6ZD6TpdaJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;232&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7. 이메일만 입력해줌&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DiJpF/btrQbrU2hZh/FJ2ra9RnHK7kCX8GnWomJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DiJpF/btrQbrU2hZh/FJ2ra9RnHK7kCX8GnWomJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DiJpF/btrQbrU2hZh/FJ2ra9RnHK7kCX8GnWomJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDiJpF%2FbtrQbrU2hZh%2FFJ2ra9RnHK7kCX8GnWomJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;453&quot; height=&quot;41&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;8. commit (test 용으로 해당 폴더내에 test.txt 파일 추가)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RWlg7/btrQequmVMp/a4OpdjltlAbZZ2a6qcVcfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RWlg7/btrQequmVMp/a4OpdjltlAbZZ2a6qcVcfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RWlg7/btrQequmVMp/a4OpdjltlAbZZ2a6qcVcfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRWlg7%2FbtrQequmVMp%2Fa4OpdjltlAbZZ2a6qcVcfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;90&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;90&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;9. 브랜치를 main 으로 변경&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGV9zR/btrQd7PhUyn/nKUG8VEclf0J6N5cQ6NI50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGV9zR/btrQd7PhUyn/nKUG8VEclf0J6N5cQ6NI50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGV9zR/btrQd7PhUyn/nKUG8VEclf0J6N5cQ6NI50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGV9zR%2FbtrQd7PhUyn%2FnKUG8VEclf0J6N5cQ6NI50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;37&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;10. main 으로 push 하려 했더니 에러 발생 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;(제목과 관련)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P6UEr/btrQe27nn1B/lBo3qjd6DbBa7Tl8KzLGmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P6UEr/btrQe27nn1B/lBo3qjd6DbBa7Tl8KzLGmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P6UEr/btrQe27nn1B/lBo3qjd6DbBa7Tl8KzLGmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP6UEr%2FbtrQe27nn1B%2FlBo3qjd6DbBa7Tl8KzLGmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;233&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;11. 원격 저장소에 README 만으로 생성되어 있어서 &lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;--allow-unrelated-histories&lt;/span&gt;&lt;/b&gt; 추가하여 원격 저장소로부터 pull&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEkzVW/btrQeVm41Kc/kNrAp2rBCuLVAx1LFiisBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEkzVW/btrQeVm41Kc/kNrAp2rBCuLVAx1LFiisBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEkzVW/btrQeVm41Kc/kNrAp2rBCuLVAx1LFiisBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEkzVW%2FbtrQeVm41Kc%2FkNrAp2rBCuLVAx1LFiisBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;743&quot; height=&quot;184&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;12. push 성공 (원격 저장소와 로컬 저장소 연결 확인)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pyq0b/btrQb2HzVVj/pRIZSyEY96iwfXaUqEkoC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pyq0b/btrQb2HzVVj/pRIZSyEY96iwfXaUqEkoC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pyq0b/btrQb2HzVVj/pRIZSyEY96iwfXaUqEkoC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPyq0b%2FbtrQb2HzVVj%2FpRIZSyEY96iwfXaUqEkoC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;740&quot; height=&quot;261&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>git</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/32</guid>
      <comments>https://solever.tistory.com/32#entry32comment</comments>
      <pubDate>Wed, 2 Nov 2022 15:43:42 +0900</pubDate>
    </item>
    <item>
      <title>Making Custom Control with DefaultStyleKeyProperty.OverrideMetadata in the static constructor.</title>
      <link>https://solever.tistory.com/31</link>
      <description>&lt;p&gt;Wpf에서 Custom Control 을 만들 때 유심히 봐야 할 내용이 &lt;br /&gt;바로 static 생성자 안에서 정의하는 DefaultStyleKeyProperty.OverrideMetadata 일 것 같다.&lt;br /&gt;내가 확실하게 번역한 내용인지는 모르겠으나 대충 의역한 내용에 따르면&lt;br /&gt;DefaultStyleKeyProperty.OverrideMetadata 을 정의하지 않으면&lt;br /&gt;Custom Control 에서 상속받는 부모 클래스의 기본 Style을 따르게 된다고 한다.&lt;/p&gt;&lt;p&gt;즉, 나만의 Custom Control 에서 새로운 Style을 지정하기 위해선&lt;br /&gt;static 생성자에서 반드시 DefaultStyleKeyProperty.OverrideMetadata 를 정의해 줘야 한다.&lt;/p&gt;&lt;p&gt;그리고 Style을 지정해주는 .xaml 파일은 반드시 Theme 폴더 밑에 정의해줘야 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이어서 Custom Control 과 User Control 의 차이점을 명시한 사이트 출처를 밝힌다.&lt;br /&gt;&lt;a class=&quot;tx-link&quot; target=&quot;_blank&quot; href=&quot;http://www.codeproject.com/Articles/179442/So-what-s-the-difference-between-a-Custom-Control&quot;&gt;http://www.codeproject.com/Articles/179442/So-what-s-the-difference-between-a-Custom-Control&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/31</guid>
      <comments>https://solever.tistory.com/31#entry31comment</comments>
      <pubDate>Wed, 23 Sep 2015 14:24:03 +0900</pubDate>
    </item>
    <item>
      <title>ThreadPool with WaitHandle</title>
      <link>https://solever.tistory.com/30</link>
      <description>&lt;p&gt;원래 중점 이슈는 WaitHandle.WaitAll(WaitHandle[]) 함수의 파라미터 변수 값의 64개 제한이었다.&lt;br /&gt;64개의 제한 없이 모든 쓰레드의 처리를 기다린 후 뒤이어 진행을 바랬던 생각에서 파라미터 변수의 제한때문에&lt;br /&gt;알아본 바를 기록한다.&lt;/p&gt;&lt;p&gt;대안은 WaitHandle(AutoResetEvent, ManualResetEvent)의 Set() 과 WaitOne() 의 사용.&lt;/p&gt;&lt;p&gt;ThreadPool 에서 사용하는 함수에서 WaitHandle 의 Set() 을 처리해 주고&lt;br /&gt;주 스레드에서 WaitOne() 을 처리해 주는 형식.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;# 첨부 소스&lt;/p&gt;&lt;p&gt;public class Fibonacci&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int _n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int _fibOfN;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ManualResetEvent _doneEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int _numerOfThreadsNotYetCompleted = 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int N { get { return _n; } }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int FibOfN { get { return _fibOfN; } }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Constructor. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Fibonacci(int n, ManualResetEvent doneEvent)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _n = n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _doneEvent = doneEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wrapper method for use with thread pool. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ThreadPoolCallback(Object threadContext)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int threadIndex = (int)threadContext;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;thread {0} started...&quot;, threadIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _fibOfN = Calculate(_n);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;thread {0} result calculated...&quot;, threadIndex);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 스레드가 완료하면 현재 스레드가 완료되었다고 신호를 줍니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _doneEvent.Set();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Recursive method that calculates the Nth Fibonacci number. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int Calculate(int n)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n &amp;lt;= 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Calculate(n - 1) + Calculate(n - 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int FibonacciCalculations = 100000;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // One event is used for each Fibonacci object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ManualResetEvent[] doneEvents = new ManualResetEvent[FibonacciCalculations];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fibonacci[] fibArray = new Fibonacci[FibonacciCalculations];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Random r = new Random();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure and start threads using ThreadPool.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;launching {0} tasks...&quot;, FibonacciCalculations);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; FibonacciCalculations; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doneEvents[i] = new ManualResetEvent(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fibonacci f = new Fibonacci(r.Next(1, 20), doneEvents[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fibArray[i] = f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 스레드 풀에 수행할 작업을 입력합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ThreadPool.QueueUserWorkItem(f.ThreadPoolCallback, i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //doneEvents[i].WaitOne();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var done in doneEvents)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done.WaitOne();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 스레드 풀에 있는 스레드 작업이 완료 될때까지 대기합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 모든 스레드가 완료 되었다는 신호를 받으면 결과값을 보여줍니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //WaitHandle.WaitAll(doneEvents);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;All calculations are complete.\r\n\r\n&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the results. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; FibonacciCalculations; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fibonacci f = fibArray[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&quot;Fibonacci({0}) = {1}&quot;, f.N, f.FibOfN);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/30</guid>
      <comments>https://solever.tistory.com/30#entry30comment</comments>
      <pubDate>Thu, 17 Sep 2015 17:34:27 +0900</pubDate>
    </item>
    <item>
      <title>Difference between AutoResetEvent and ManualResetEvent</title>
      <link>https://solever.tistory.com/29</link>
      <description>&lt;p&gt;- AutoResetEvent&lt;br /&gt;한번에 하나씩의 쓰레드 처리.&lt;br /&gt;하나의 함수를 여러 쓰레드에서 처리할 때 첫 쓰레드에서 Reset() 으로 함수를 닫으면 다음 쓰레드가 차단되어 무한 대기.&lt;br /&gt;Set()으로 함수를 닫아줘야 다음 대기중인 쓰레드가 접근 가능&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- ManualResetEvent&lt;br /&gt;한번에 여러개의 쓰레드 처리 가능.&lt;br /&gt;하나의 함수를 여러 쓰레드에서 처리할 때 첫 쓰레드에서 Reset() 으로 함수를 닫아도 &lt;br /&gt;한번에 여러개의 쓰레드가 처리 되기에 나머지 쓰레드도 처리됨.&lt;br /&gt;단, Threading.Sleep(0)으로 해당 함수가 처리될 때 여러 쓰레드가 한번에 다 처리되는지 모르겠음.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예제 소스 출처는 http://j07051.tistory.com/560&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/29</guid>
      <comments>https://solever.tistory.com/29#entry29comment</comments>
      <pubDate>Thu, 17 Sep 2015 10:58:42 +0900</pubDate>
    </item>
    <item>
      <title>Win32 API GetMonitorInfo()</title>
      <link>https://solever.tistory.com/25</link>
      <description>&lt;pre lang=&quot;xml&quot; id=&quot;pre0&quot; style=&quot;color: rgb(0, 0, 0); background-color: rgb(251, 237, 187); padding: 6px; font-size: 9pt; line-height: normal; font-family: Consolas, 'Courier New', Courier, mono; white-space: pre-wrap; border: 1px solid rgb(251, 237, 187); word-wrap: break-word; margin-top: 0px; overflow: auto !important;&quot;&gt;[DllImport(&quot;user32.dll&quot;)]
        static extern bool EnumDisplayMonitors(IntPtr hdc, IntPtr lprcClip,
           MonitorEnumDelegate lpfnEnum, IntPtr dwData);
        delegate bool MonitorEnumDelegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData);
        [StructLayout(LayoutKind.Sequential)]
        public struct Rect
        {
            public int left;
            public int top;
            public int right;
            public int bottom;
        }
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        /// The struct that contains the display information
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        public class DisplayInfo
        {
            public string Availability { get; set; }
            public string ScreenHeight { get; set; }
            public string ScreenWidth { get; set; }
            public Rect MonitorArea { get; set; }
            public Rect WorkArea { get; set; }
        }
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        /// Collection of display information
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        public class DisplayInfoCollection : List&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;DisplayInfo&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        {
        }
        [DllImport(&quot;user32.dll&quot;)]
        static extern bool GetMonitorInfo(IntPtr hMonitor, ref MonitorInfoEx lpmi);
        [DllImport(&quot;user32.dll&quot;)]
        static extern bool GetMonitorInfo(IntPtr hMonitor, ref MonitorInfo lpmi);
        // size of a device name string
        private const int CCHDEVICENAME = 32;
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        /// The MONITORINFOEX structure contains information about a display monitor.
        /// The GetMonitorInfo function stores information into a MONITORINFOEX structure or a MONITORINFO structure.
        /// The MONITORINFOEX structure is a superset of the MONITORINFO structure. The MONITORINFOEX structure adds a string member to contain a name
        /// for the display monitor.
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        internal struct MonitorInfoEx
        {
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// The size, in bytes, of the structure. Set this member to sizeof(MONITORINFOEX) (72) before calling the GetMonitorInfo function.
            /// Doing so lets the function determine the type of structure you are passing to it.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public int Size;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// A RECT structure that specifies the display monitor rectangle, expressed in virtual-screen coordinates.
            /// Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public Rect Monitor;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// A RECT structure that specifies the work area rectangle of the display monitor that can be used by applications,
            /// expressed in virtual-screen coordinates. Windows uses this rectangle to maximize an application on the monitor.
            /// The rest of the area in rcMonitor contains system windows such as the task bar and side bars.
            /// Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public Rect WorkArea;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// The attributes of the display monitor.
            ///
            /// This member can be the following value:
            ///   1 : MONITORINFOF_PRIMARY
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public uint Flags;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// A string that specifies the device name of the monitor being used. Most applications have no use for a display monitor name,
            /// and so can save some bytes by using a MONITORINFO structure.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCHDEVICENAME)]
            public string DeviceName;
            public void Init()
            {
                this.Size = 72;
                this.DeviceName = string.Empty;
            }
        }
        [StructLayout(LayoutKind.Sequential)]
        internal struct MonitorInfo
        {
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// The size, in bytes, of the structure. Set this member to sizeof(MONITORINFO) (40) before calling the GetMonitorInfo function.
            /// Doing so lets the function determine the type of structure you are passing to it.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public int Size;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// A RECT structure that specifies the display monitor rectangle, expressed in virtual-screen coordinates.
            /// Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public Rect Monitor;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// A RECT structure that specifies the work area rectangle of the display monitor that can be used by applications,
            /// expressed in virtual-screen coordinates. Windows uses this rectangle to maximize an application on the monitor.
            /// The rest of the area in rcMonitor contains system windows such as the task bar and side bars.
            /// Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public Rect WorkArea;
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            /// The attributes of the display monitor.
            ///
            /// This member can be the following value:
            ///   1 : MONITORINFOF_PRIMARY
            /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
            public uint Flags;
            public void Init()
            {
                this.Size = 40;
            }
        }
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        /// Returns the number of Displays using the Win32 functions
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        /// &lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;returns&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;collection of Display Info&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;code-leadattribute&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: maroon;&quot;&gt;returns&lt;/span&gt;&lt;span class=&quot;code-keyword&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
        public DisplayInfoCollection GetDisplays()
        {
            DisplayInfoCollection col = new DisplayInfoCollection();
            EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero,
                delegate(IntPtr hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)
                {
                    MonitorInfo mi = new MonitorInfo();
                    mi.Size = (int)Marshal.SizeOf(mi);
                    bool success = GetMonitorInfo(hMonitor, ref mi);
                    if (success)
                    {
                        DisplayInfo di = new DisplayInfo();
                        di.ScreenWidth = (mi.Monitor.right - mi.Monitor.left).ToString();
                        di.ScreenHeight = (mi.Monitor.bottom - mi.Monitor.top).ToString();
                        di.MonitorArea = mi.Monitor;
                        di.WorkArea = mi.WorkArea;
                        di.Availability = mi.Flags.ToString();
                        col.Add(di);
                    }
                    return true;
                }, IntPtr.Zero);
            return col;
        }
        public int GetTotalMonitors()
        {
            return GetDisplays().Count;
        }&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/25</guid>
      <comments>https://solever.tistory.com/25#entry25comment</comments>
      <pubDate>Wed, 9 Apr 2014 11:15:17 +0900</pubDate>
    </item>
    <item>
      <title>WPF OpenFileDialog 창 폴더 선택하기.</title>
      <link>https://solever.tistory.com/24</link>
      <description>&lt;p&gt;기본적으로 WPF에서 제공하지 않는 폴더선택 창을 구현해논 기가막힌 사이트&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.codeproject.com/script/Forums/View.aspx?fid=1004114&amp;amp;msg=2802812&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.codeproject.com/script/Forums/View.aspx?fid=1004114&amp;amp;msg=2802812&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <category>wpf dialog 다이얼로그 폴더선택</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/24</guid>
      <comments>https://solever.tistory.com/24#entry24comment</comments>
      <pubDate>Mon, 16 Sep 2013 09:50:22 +0900</pubDate>
    </item>
    <item>
      <title>SQuirreL SQL Client Version 3.5.0</title>
      <link>https://solever.tistory.com/23</link>
      <description>&lt;p&gt;Migration PostgreSQL to MySQL 을 알아보다가 알게 된 Tool.&lt;/p&gt;&lt;p&gt;SQuirreL SQL Client Version 3.5.0&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;JDBC 연결. 때문에 JAVA 필요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;JAVA JRE 설치하고, 필요한 DB의 JDBC Driver 다운받아서&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQuirreL SQL Client Version 3.5.0 의 lib 폴더에 다운받은 .jar 파일을 넣는다. 그러면 드라이버 추가 완료&lt;/p&gt;&lt;p&gt;이제..MySQL에 필요한 테이블을 PostgreSQL에서 따로 넣어볼 요량..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Database</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/23</guid>
      <comments>https://solever.tistory.com/23#entry23comment</comments>
      <pubDate>Wed, 19 Jun 2013 16:18:15 +0900</pubDate>
    </item>
    <item>
      <title>ListView &amp;amp; TreeView 이만한 더블버퍼링은 없다.</title>
      <link>https://solever.tistory.com/22</link>
      <description>&lt;p&gt;이보다 더 완벽한 더블버퍼링은 없는 듯..&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.codeproject.com/Articles/37253/Double-buffered-Tree-and-Listviews&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.codeproject.com/Articles/37253/Double-buffered-Tree-and-Listviews&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <category>c#</category>
      <category>double buffering</category>
      <category>더블버퍼링</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/22</guid>
      <comments>https://solever.tistory.com/22#entry22comment</comments>
      <pubDate>Tue, 14 May 2013 16:33:33 +0900</pubDate>
    </item>
    <item>
      <title>배열 및 문자열을 포함한 구조체 마샬링하기</title>
      <link>https://solever.tistory.com/21</link>
      <description>&lt;p&gt;&lt;p style=&quot;margin: 0px; padding: 0px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;배열 및 문자열이 포함된 구조체를 마샬링 하기 위해서는 MarshalAsAttribute 특성을 사용하여 포함된 문자열 및 배열을 마샬링 하는 방법을 지정해야한다. 그렇지 않으면 예외가 발생된다. (마샬링 하는 부분은 예외처리가 되어야한다!)&lt;br /&gt;&lt;/p&gt;&lt;table class=&quot;datatable&quot; style=&quot;color: rgb(0, 0, 0); font-size: 12px; line-height: 18px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;마샬링할 데이터&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;비관리 구조체 (C++)&lt;/strong&gt;&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;p style=&quot;margin: 0px; padding: 0px; line-height: 1.5;&quot;&gt;&lt;strong&gt;관리 구조체 (C#)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;정수 배열&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;int&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;intArray[10];&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[MarshalAsAttribute(&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnManagedType.ByValArray,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SizeConst&amp;nbsp;=&amp;nbsp;10)]&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;int&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;intArray;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&amp;nbsp;문자 배열&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;char&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;charArray[10];&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[MarshalAsAttribute(&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnManagedType.ByValArray,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SizeConst&amp;nbsp;=&amp;nbsp;10)]&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;char&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;charArray;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;문자열의 문자배열&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;char&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;charArray[10];&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[MarshalAsAttribute(&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnManagedType.ByValTStr,&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SizeConst&amp;nbsp;=&amp;nbsp;10)]&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;str;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;문자열의 포인터&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span class=&quot;datatypes&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#2e8b57&quot;&gt;wchar_t&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;*&amp;nbsp;pStr;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class=&quot;dp-highlighter&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;bar&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;div class=&quot;tools&quot; style=&quot;line-height: 1.5;&quot;&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;view plain&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;copy to clipboard&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;print&lt;/font&gt;&lt;/a&gt;&lt;a target=&quot;_blank&quot; class=&quot;con_link&quot; href=&quot;http://kslive.tistory.com/62#&quot; style=&quot;word-wrap: break-word;&quot;&gt;&lt;font color=&quot;#a0a0a0&quot;&gt;?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class=&quot;dp-cpp&quot; style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial;&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#006699&quot;&gt;struct&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;MyStruct&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;{&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[MarshalAsAttribute(&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnManagedType.LPWStr)]&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;str;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style=&quot;color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;h6 style=&quot;margin: 0px; padding: 0px; font-size: 11px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&amp;nbsp;문자열을 wchar_t* 로 마샬링할때는 유니코드 문자열에 대한 포인터로 마샬링하는 아래 두가지 특성 중 하나를 선택할 수 있다.&lt;/h6&gt;&lt;br style=&quot;color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 0px 2em; padding: 0px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;.&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;[MarshalAs(UnmanagedType.LPWStr)]&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 2em; padding: 0px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;. [MarshalAs(UnmanagedType.LPTStr)]&lt;/span&gt;&lt;/p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;h6 style=&quot;margin: 0px; padding: 0px; font-size: 11px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;&amp;nbsp;구조체 레이아웃 지정&lt;/span&gt;&lt;/h6&gt;&lt;br style=&quot;color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;p style=&quot;margin: 0px; padding: 0px; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;StructLayoutAttribute 특성을 사용하여 플랫폼 호출 마샬러에 대한 구조체의 레이아웃을 설정할 수 있다. (LayoutKind 열거형을 사용)&lt;/span&gt;&lt;/p&gt;&lt;br style=&quot;color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;ul style=&quot;margin: 0px 0px 0px 3.5em; padding: 0px; list-style-position: initial; list-style-image: initial; color: rgb(0, 0, 0); text-align: justify;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;Auto &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 런타임에서 자동으로 관리되지 않는 메모리에 있는 개체의 멤버에 적합한 레이아웃을 선택한다. 이 열거형 멤버로 정의된 개체는 관리코드 외부에 노출할 수 없다. 노출시 예외가 발생한다.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;Explicit &amp;nbsp; &amp;nbsp;: 관리되지 않는 메모리에 있는 개체의 멤버에 대한 정확한 위치는 명시적으로 제어된다. 각 멤버는 System.Runtime.InteropServices.FieldOffsetAttribute 를 사용하여 형식 내부의 필드위치를 나타내야한다.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'Courier New';&quot;&gt;Sequential &amp;nbsp; : 개체의 멤버는 관리되지 않는 메모리로 내보낼때 표시되는 순서대로 배치된다. 멤버는 System.Runtime.InteropServices.StructLayoutAttribute.Pack 에 지정된 방식에 따라 배치되며, 연속되지 않을 수 있다.&lt;div class=&quot;autosourcing-stub-extra&quot; style=&quot;position: absolute; opacity: 0; line-height: 1.5;&quot;&gt;&lt;p style=&quot;margin: 11px 0px 7px; padding: 0px; line-height: 1.5; font-family: Dotum;&quot;&gt;&lt;strong style=&quot;padding: 0px 7px 0px 0px;&quot;&gt;[출처]&lt;/strong&gt;&amp;nbsp;&lt;a href=&quot;http://blog.naver.com/ctpoyou/111546774&quot; target=&quot;_blank&quot;&gt;[펌] C# 마샬링&lt;/a&gt;&lt;span style=&quot;padding: 0px 7px 0px 5px;&quot;&gt;|&lt;/span&gt;&lt;strong style=&quot;padding: 0px 7px 0px 0px;&quot;&gt;작성자&lt;/strong&gt;&amp;nbsp;&lt;a href=&quot;http://blog.naver.com/ctpoyou&quot; target=&quot;_blank&quot;&gt;제노글로시아&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=ctpoyou&amp;amp;logNo=111546774&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://blog.naver.com/PostView.nhn?blogId=ctpoyou&amp;amp;logNo=111546774&lt;/a&gt;&lt;/p&gt;</description>
      <category>C#</category>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/21</guid>
      <comments>https://solever.tistory.com/21#entry21comment</comments>
      <pubDate>Thu, 25 Apr 2013 10:48:22 +0900</pubDate>
    </item>
    <item>
      <title>SQLite 관리 사이트</title>
      <link>https://solever.tistory.com/20</link>
      <description>&lt;P&gt;phpliteadmin : SQLite 관리 사이트&lt;/P&gt;</description>
      <author>갱생쌩유</author>
      <guid isPermaLink="true">https://solever.tistory.com/20</guid>
      <comments>https://solever.tistory.com/20#entry20comment</comments>
      <pubDate>Tue, 30 Oct 2012 16:46:54 +0900</pubDate>
    </item>
  </channel>
</rss>