<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩상륙작전</title>
    <link>https://operationcoding.tistory.com/</link>
    <description>깃허브 주소 : https://github.com/tolfromj</description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 01:54:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>코딩상륙작전</managingEditor>
    <image>
      <title>코딩상륙작전</title>
      <url>https://tistory1.daumcdn.net/tistory/5673310/attach/6a4fdc0fedb843a5a742fa490880fbf0</url>
      <link>https://operationcoding.tistory.com</link>
    </image>
    <item>
      <title>Mac mini에서 iPad를 메인 모니터로 쓰는 방법</title>
      <link>https://operationcoding.tistory.com/235</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;배경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Mac Mini M1, MacOS Sequoia 15.5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- iPad Air 4th, iPadOS 18.5 (22F76)&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;mac mini m1을 중고로 구입했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(맥북에어를 구입하고 싶었으나 아직 맥북이 필수가 아니라서, 나중에 꼭 필요할 때 최소사양 16gb, 512gb로 맞출 것이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;mac mini m1을 고른 가장 큰 이유는 예산이다. 맥북에어 m1-&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;8gb-256gb&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;중고가 55~65만원, mac mini m1-8gb-512gb 모델이 35만원.)&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;ios 어플리케이션 빌드용으로 구입했고 겸사겸사 홈서버용으로 사용하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예산 때문에 포기한 맥북이 눈 앞에 아른거렸다. 맥미니를 노트북처럼 사용하고 싶은 욕구가 솟구쳤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도서관에서 노트북으로 작업할 때가 있는데, 오래된 노트북이라 무겁고 팬소음이 우렁차서 눈치가 많이 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(19년도에 구입한 아수스 게이밍노트북+충전기 조합이 3kg가 넘는다)&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;기존에 아이패드 에어 4세대를 가지고 있어서 아이패드를 맥미니의 주모니터로 사용하면 될 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요구사항은 4가지였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 휴대성이 보장되어야한다. 어떤 새로운 환경에서든 주모니터로서 아이패드를 맥미니에 연결할 수 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 오프라인으로도 연결 가능해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 주모니터로 사용할 수 있을만큼은 사용자 경험이 좋아야한다.&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;여러가지 방법이 존재했다. 여러 시도 끝에 성공했고, SideCar를 이용한 방법을 중점적으로 소개할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가볍게 상용 어플 중 하나인 yam display를 리뷰하고, 왜 SideCar 우회 방법으로 전환했는지 소개하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(참고로, 앞으로 소개할 SideCar 우회 방법은 직접 시도하진 않았지만, 맥 미니 m4 + iPad Mini 조합에서도 가능할 것으로 보인다.)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &quot;yam display&quot; 어플 리뷰.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 애플의 SideCar 기능 우회 방법 소개.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;lt; yam display &amp;gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;duet, yam display 등 아이패드를 주모니터로 사용할 수 있게 해주는 어플들이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무료 어플을 포함해서 많은 어플이 있지만 반 유료어플인 yam display를 사용해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장단점을 먼저 정리하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장점:&amp;nbsp;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;화면 터치를 같이 사용할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;화면분할이 지원되어서, 한 쪽에는 모니터를 다른 쪽에는 메모장 등의 아이패드 어플과 함께 사용가능하다.&lt;br /&gt;(메모장에서 애플펜슬로 그림그리고, 애플의 handoff 기능을 이용해서 맥미니에 그림을 복붙할 수 있다. Good)&lt;/li&gt;
&lt;li&gt;유료 11000원이다. 싸다.&lt;/li&gt;
&lt;li&gt;첫 연결이 어렵지 않다. 조금만 찾아보면 금방 아이패드를 연결할 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;단점:&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;해상도가 낮다. &lt;br /&gt;높은 해상도를 요구하는 작업을 안 한다면 괜찮을 수도 있다.&lt;/li&gt;
&lt;li&gt;해상도를 높이면, 반응속도가 느려지고 아이콘 등의 글자들이 너무 작아져서 사실상 사용하기 어렵다.&amp;nbsp;&lt;br /&gt;(신호등의 닫기 버튼등을 누를 때 바늘에 실넣기처럼 힘들다.)&lt;/li&gt;
&lt;li&gt;무료버전은 연속으로 7분정도만 사용가능하다. 7분이 지나면 다시 연결해줘야 한다.&lt;br /&gt;(연결 자체는 어렵지 않다. 버튼 한 번 딸깍으로 연결가능해서 7분 간격으로 누를 각오가 있다면 무료버전 사용하면 된다.)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;화면 터치가 잘 안 되는 경우가 있다. 작은 버튼은 터치보단 마우스로 클릭하는게 낫다. &lt;br /&gt;(손가락으로 줌해서 버튼을 터치할 수도 있지만, 매우 귀찮다.)&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;총평:&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터치를 지원해준다는건 매우 좋지만, 모니터로서의 역할로는 좀 부족하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해상도를 적당히 낮춰도, 아이패드에 최적화된 해상도는 없기에 사용자 경험이 떨어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이콘이 너무 작거나 커서 모니터로 사용하기에는 불편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 경험측면에서(3번째 요구사항) 약간의 불만족이 있었다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;lt; SideCar 우회하기 &amp;gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플에서 공식지원하는 세컨 모니터 기능, sidecar는 아이패드에 최적화된 해상도를 제공해주므로써 실제 세컨 모니터의 역할을 할 수 있다. 장단점부터 정리해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장점:&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;공식적으로 애플에서 제공하는 기능이기 때문에 따로 어플을 설치하지 않아서 연결이 편하고, 보안 걱정이 없다.&lt;/li&gt;
&lt;li&gt;사용자 경험이 높다. 아이패드에 최적화된 해상도를 지원해서 세컨 모니터로서 충실하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;단점:&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사이드카 기능은 공식적으로 세컨 모니터가 목적이라서, 우회 없이 주모니터로서 사용할 수 없다.&lt;/li&gt;
&lt;li&gt;터치가 제한적이다.&lt;br /&gt;두 손가락으로 위 아래 휠 기능과 줌기능 정도만 가능하다. 터치를 통한 클릭은 애플펜슬을 사용해야한다.&lt;br /&gt;(주로 마우스를 사용할 것이기에 큰 단점은 아니다.)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;사이드카 기능을 우회하여 주모니터로 사용하려면 세팅과정이 꽤나 험난하다.&lt;/li&gt;
&lt;li&gt;MacOS가 업데이트 될 때마다 개인적으로 따로 우회 방법을 유지보수해야할 수도 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;내가 찾은 우회 방법 특징:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소개할 우회 방법의 가장 큰 특징은 두 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 더미 HDMI를 살 필요 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 와이파이에 연결되어 있지 않아도 유선으로 세팅 가능하다.&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;기존의 방법들을 찾아보니, 더미 hdmi를 이용하는 방법, hdmi 캡처 카드를 구매하는 방법, http 요청을 통한 SideCar 자동연결 등의 방법으로 SideCar를 우회했다. 하지만 각각 단점이 있었고, 내 요구사항에 맞는 방법을 찾았다.&amp;nbsp;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 모니터 기능을 지원하는 BetterDisplay를 이용하여 가상모니터를 만든다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;macOS 기본 프로그램인 apple script, automator을 통해 SideCar 연결을 자동화하고,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;혹시 모를 SideCar 연결 해제 상황을 대비하여 keyboard shortcut에서 단축키를 지정한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;( 최대한 외부 프로그램을 사용하지 않으려고 노력했다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SideCar 우회 세팅 방법: (글작성중...)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. BetterDisplay를 이용해서 virtual display를 추가한다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 14일 간의 무료 기간이 있다. 유료는 3만원대.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 내용 추가 예정.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Apple Script 작성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗지피티의 도움을 받아서 코드를 작성했다. 돌아는 가지만, 아직 최적화된 코드는 아니라서 수정이 필요하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 보면 알겠지만 코드 사이사이에 delay가 많다. 그래서 코드 실행되는데, 경우에 따라 30초 이상 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 코드를 설명하자면 아래와 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;맥미니가 사용자 로그인되고, 아래 script가 실행되면&amp;nbsp; 5초의 여유를 준다.&lt;/li&gt;
&lt;li&gt;시스템 설정 화면을 불러오고 화면이 불러와졌는지 0.2초 간격으로 체크하는 무한 반복문을 돌린다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;iPad가 유선usb로 연결되었는지 확인하기 위해 usb 포트 정보를 불러오고 &quot;iPad&quot; 글자가 포함되었는지 체크한다.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;iPad가 유선으로 연결되어 있지 않으면 3초 기다리고 다시 정보를 확인한다. 이 과정을 최대 100번까지만 반복한다. 즉, 300초내로 iPad 연결이 확인되지 않으면 결국 오류가 발생할 것이다. -&amp;gt; (아직 오류 처리 코드를 넣지 않음.)&lt;/li&gt;
&lt;li&gt;iPad 연결이 확인되면 시스템 설정 - 디스플레이 메뉴를 클릭하고,&lt;/li&gt;
&lt;li&gt;연결되어 있는 모니터(가상 모니터)에 sideCar를 추가하기 위한 버튼을 클릭한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;대략적인 계산을 통해 sideCar 활성화 버튼이 클릭된다.&lt;br /&gt;이때, virtual 모니터 설정 항목에서 &quot;고급- Mac 또는 iPad에 연결 - 포인터 및 키보드가 근처의 Mac 또는 iPad 간에 이동하도록 허용&quot; 을 비활성화해두는 것이 좋다. 활성화되어 있으면 SideCar 활성화 버튼을 클릭 후 나타나는 드롭다운 메뉴에 키보드 및 마우스를 연결하는 항목이 추가되어서 SideCar 활성화 버튼이 아닌 엉뚱한 게 클릭된다.&lt;/li&gt;
&lt;li&gt;문제가 없다면 &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;스크립트 실행 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;대략 20초내로 SideCar가 활성화된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1750618872613&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- &quot;가상디스플레이- 고급- Mac 또는 iPad에 연결 - 포인터 및 키보드가 근처의 Mac 또는 iPad 간에 이동하도록 허용 비활성화&quot;
delay 5
tell application &quot;System Settings&quot;
	activate
end tell

delay 2

tell application &quot;System Events&quot;
	tell process &quot;System Settings&quot;
		-- 창이 뜰 때까지 대기
		repeat until exists window 1
			delay 0.5
		end repeat
		
		-- Check iPad connected
		set maxRepeats to 100 -- The script will terminate after 300 seconds.
		set currentRepeat to 0
		set iPadConnected to false
		repeat until iPadConnected or currentRepeat is equal to maxRepeats
			set usbDevices to do shell script &quot;system_profiler SPUSBDataType&quot;
			if usbDevices contains &quot;iPad&quot; then
				log &quot;The iPad is connected. &quot;
				set iPadConnected to true
				delay 1
			else
				log &quot;The iPad is not connected.&quot;
				set currentRepeat to currentRepeat + 1
				delay 3
			end if
		end repeat
		
		-- move to &quot;display&quot; session
		click menu item &quot;디스플레이&quot; of menu &quot;보기&quot; of menu bar 1
		delay 1
		set g1 to first group of window 1
		set g2 to first UI element of g1
		set g3 to second group of g2
		set g4 to first group of g3
		
		set popUpButton to first pop up button of g4
		click popUpButton
		delay 2
		
		set popUpButtonPosition to position of popUpButton
		set popUpButtonSize to size of popUpButton
		set x to item 1 of popUpButtonPosition
		set y to item 2 of popUpButtonPosition
		set w to item 1 of popUpButtonSize
		set h to item 2 of popUpButtonSize
		
		log &quot;popUpButton Position: &quot; &amp;amp; (x as string) &amp;amp; &quot;, &quot; &amp;amp; (y as string)
		log &quot;popUpButton Size: &quot; &amp;amp; (w as string) &amp;amp; &quot;, &quot; &amp;amp; (h as string)
		
		-- calculate center position of side-car-popup-button
		-- 계산식 적용: a = w*1.5 + x, b=h* 2.5 +y
		-- AppleScript는 부동소수점 계산을 할 때 명시적으로 real 타입을 사용해야 오류를 줄일 수 있습니다.
		set raw_center_x to (w as real) * 1.5 + (x as real)
		set raw_center_y to (h as real) * 3.2 + (y as real)
		
		-- Rounding down a floating-point result to an integer.
		set center_x to round raw_center_x rounding down
		set center_y to round raw_center_y rounding down
		
		set sideCarPopUpButtonCenterPosition to {center_x, center_y}
		log &quot;Calculated sideCar-PopUpButton-Center-Position: &quot; &amp;amp; (center_x as string) &amp;amp; &quot;, &quot; &amp;amp; (center_y as string)
		
		tell application &quot;System Events&quot;
			delay 1
			click at sideCarPopUpButtonCenterPosition
		end tell
		delay 1
		
		--클래스 확인
		--log &quot;g4의 클래스: &quot; &amp;amp; (class of newElements as string)
		--repeat with el in newElements
		--	try
		--		log &quot;Class: &quot; &amp;amp; (class of el as string) &amp;amp; &quot;, Role: &quot; &amp;amp; (role of el as string) &amp;amp; &quot;, Name: &quot; &amp;amp; (name of el as string)
		--	end try
		--end repeat
	end tell
end tell&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. script 내보내기.&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.app 확장자로 실행파일을 만든다.&lt;br /&gt;script는 기본 .script 확장자로 저장되는데, &quot;파일-내보내기&quot;를 통해 .app 확장자로 실행가능한 파일인 .app 확장자로 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 앱에 권한 부여&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;실행하기 위한 손쉬운 사용 제어 권한을 준다.&lt;br /&gt;해당 파일을 더블클릭해서 실행하면, 권한 요청 팝업이 뜬다. 수락하면 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;시스템 설정 - 개인정보 보호 및 보안 - 손쉬운 사용 화면을 띄워주면서 손쉬운 사용 목록에 해당 app이 자동 추가된 것을 볼 수 있다. 활성화만 시켜주면된다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;다시 app을 실행시키고자하면, 이번에는 system event 권한을 요청한다. 수락.&lt;br /&gt;system event 권한이 정상적으로 부여되면, 해당 앱은 &quot;시스템 설정 - 개인정보 보호 및 보안 - 자동화&quot;에서 자동화 목록에 추가되어있다. 자동화 항목에 앱이 추가되지 않았다면 앱 실행시 system event권한이 없다는 -25211 에러를 마주칠 것이고, 이 에러가 발생하면 apple script 만들기부터 다시 시작하는게 좋다.(내보내기 뿐만 아니라 새로운 스크립트 문서에 코드를 복사해서 다시 만들어야한다.)&amp;nbsp;&lt;br /&gt;&lt;br /&gt;애플 앱에는 권한을 관리하는 식별 기능이 있다. 식별자를 통해 앱에 권한 요청했던 기록이 남고, 사용자가 첫 차례에 권한을 부여를 거절하면 매번 권한 요청하는 과정을 생략하고, 바로 에러 팝업을 띄운다. 그래서 처음에 권한이 제대로 부여되지 않으면 수동으로 권한을 부여해야한다. 그러나 system event 권한을 수동으로 부여하긴 어렵다. 관련 자료를 찾을 수 없었고, 챗지피티도 그냥 식별자를 초기화하거나 스크립트를 다시 작성해서 새롭게 app을 만들 것을 추천했다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;system event 에러 팝업 내용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템설정-{앱} 에 보조 접근이 허용되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System Events에 오류 발생: 시스템설정-sidecar에 보조 접근이 허용되지 않습니다.(-25211)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. 앱 실행&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 문제만 잘 해결된다면 80%는 끝났다. 앱을 실행시키고 잘 작동하는지 확인하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6. 앱을 시작 프로그램에 추가하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥미니가 부팅되고, 로그인되면 자동 앱이 시작하도록 앱을 시작 프로그램에 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;시스템 설정 - 일반 - 로그인 항목 및 확장 프로그램&quot;에서 로그인 시 열기에 '+' 버튼을 눌러 앱을 추가해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;7. 단축키 설정을 위한 automator로 &quot;서비스&quot;추가.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부팅은 되었지만, 버그로 인해 앱이 자동실행되지 않거나, 중단될 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 경우를 대비해서 단축키를 지정하여 앱이 다시 실행될 수 있도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHTx6N/btsOMsmoZZC/XkKM3NUe8BdCLpV4IRWF3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHTx6N/btsOMsmoZZC/XkKM3NUe8BdCLpV4IRWF3K/img.png&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;871&quot; data-is-animation=&quot;false&quot; width=&quot;514&quot; height=&quot;455&quot; style=&quot;width: 49.3532%; margin-right: 10px;&quot; data-widthpercent=&quot;49.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHTx6N/btsOMsmoZZC/XkKM3NUe8BdCLpV4IRWF3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHTx6N%2FbtsOMsmoZZC%2FXkKM3NUe8BdCLpV4IRWF3K%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;983&quot; height=&quot;871&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTMs6/btsOMcRALQb/kiEZo1m6DJenuSm4PYZkv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTMs6/btsOMcRALQb/kiEZo1m6DJenuSm4PYZkv1/img.png&quot; data-origin-width=&quot;989&quot; data-origin-height=&quot;874&quot; data-is-animation=&quot;false&quot; width=&quot;556&quot; height=&quot;491&quot; style=&quot;width: 49.484%;&quot; data-widthpercent=&quot;50.07&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTMs6/btsOMcRALQb/kiEZo1m6DJenuSm4PYZkv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTMs6%2FbtsOMcRALQb%2FkiEZo1m6DJenuSm4PYZkv1%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;989&quot; height=&quot;874&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;automator를 실행시키고 새로운 문서 선택 - 빠른 동작을 선택한다.&lt;/li&gt;
&lt;li&gt;작업 흐름 수신은 &quot;입력 없음&quot;, 선택 항목 위치는 &quot;모든 응용 프로그램&quot;으로 지정해준다.&lt;/li&gt;
&lt;li&gt;왼쪽에 동작 이름 검색에서 &quot;응용 프로그램 실행&quot;을 찾고, 오른쪽 작업흐름 공간으로 드래그앤드롭한다.&lt;/li&gt;
&lt;li&gt;파일- 내보내기에서 이름만 바꿔주고 내보낼 위치만 지정해준뒤 내보낸다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;내보낸 폴더로 가서 .workflow 확장자 파일을 실행시켜주면, 빠른 동작 설치를 묻는다. 설치 클릭.&lt;br /&gt;&quot;서비스&quot;에 추가되었다는 메시지를 받는다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwgMcX/btsOLkiODsh/9mBI2Zkpw8rihlpeiDYM61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwgMcX/btsOLkiODsh/9mBI2Zkpw8rihlpeiDYM61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwgMcX/btsOLkiODsh/9mBI2Zkpw8rihlpeiDYM61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwgMcX%2FbtsOLkiODsh%2F9mBI2Zkpw8rihlpeiDYM61%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;506&quot; height=&quot;143&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;8. 단축키 설정&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wfKJc/btsOMmfpeJH/nZG5tStngK0pAjbt03o660/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wfKJc/btsOMmfpeJH/nZG5tStngK0pAjbt03o660/img.png&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;617&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; width=&quot;533&quot; height=&quot;466&quot; data-widthpercent=&quot;43.99&quot; style=&quot;width: 43.4767%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wfKJc/btsOMmfpeJH/nZG5tStngK0pAjbt03o660/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwfKJc%2FbtsOMmfpeJH%2FnZG5tStngK0pAjbt03o660%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;705&quot; height=&quot;617&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYRIfI/btsOLlIkkl2/9YySqZzDNBEnVy5lcxBAIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYRIfI/btsOLlIkkl2/9YySqZzDNBEnVy5lcxBAIK/img.png&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;455&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;56.01&quot; data-filename=&quot;blob&quot; style=&quot;width: 55.3605%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYRIfI/btsOLlIkkl2/9YySqZzDNBEnVy5lcxBAIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYRIfI%2FbtsOLlIkkl2%2F9YySqZzDNBEnVy5lcxBAIK%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;662&quot; height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;시스템 설정 - 키보드 -&amp;nbsp; 키보드 단축키 - 서비스 - 일반&quot;에서 해당 서비스를 찾아서 오른쪽의 단축키를 지정해주자. 임의로 ctrl + shift + s로 지정했다.&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;&amp;nbsp;&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;25.06.22 작성 기준 script v1.0.0&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;밖에서 테스트 안 해봄. 방구석 테스트라서 문제 있을 수 있음.&lt;/li&gt;
&lt;li&gt;시간 최적화 필요. 현재 30초 이상 걸리기도 함.&lt;/li&gt;
&lt;li&gt;맥미니 부팅 후 로그인 시 화면이 꺼진 상태에서 비밀번호 입력해서 로그인해야함. (로그인을 끄려면 FileVault 보안 기능을 비활성화해야하는데, 싫음.)&lt;/li&gt;
&lt;li&gt;시작 프로그램으로 앱이 실행되지만 가끔 실행되지 않아서 단축키로 실행시키고 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>et al</category>
      <category>25211 에러</category>
      <category>Apple Script</category>
      <category>Automator</category>
      <category>betterdisplay</category>
      <category>Mac Mini</category>
      <category>Sidecar</category>
      <category>system events 권한</category>
      <category>사이드카 우회</category>
      <category>아이패드 모니터</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/235</guid>
      <comments>https://operationcoding.tistory.com/235#entry235comment</comments>
      <pubDate>Mon, 23 Jun 2025 05:52:50 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu 22.04] 한글 입력모드에서 delete, enter, 방향키 먹통</title>
      <link>https://operationcoding.tistory.com/234</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;- 2025.06.11 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;크롬은 포기하고 Firefox로 갈아탔다. 한글 입력 잘 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;s&gt;노션에서 한글 작성시 씹혀서 문자 하나씩 누락 되는 경우가 자주 발생한다. &lt;/s&gt;노션의 문제였음. -&amp;gt; 새로고침을 하고, 쿠키를 지워도 봤는데, 문제 없을 때도 있고, 문제 있을 때도 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 2025.06.30 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 파이어폭스에서 입력중에 UI요소? 주소창?으로 이동하는 문제 간혹 발생. 빠르게 타자치다가 뭔가 잘못누르는 것 같은데 의식하질 않아서 무슨 단축키를 잘못 누르는건지 모르겠음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-2025.8.21-&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;크롬 한글 입력기 문제 해결됨. 크롬에서도 한영전환 잘 됨(버그 고친듯!?)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;lt;환경&amp;gt;&lt;br /&gt;ubuntu 22.04&lt;br /&gt;&lt;br /&gt;&amp;lt;문제&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;25.04.10 기준 일주일전부터 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;크롬에서 한글을 입력할 때 방향키와 delete, enter 키 등이 안 먹히는 버그&lt;/span&gt;가 발생했다.&lt;br /&gt;메모장이나&amp;nbsp;다른&amp;nbsp;어플리케이션에서는&amp;nbsp;문제가&amp;nbsp;없는&amp;nbsp;것으로&amp;nbsp;보아,&amp;nbsp;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;크롬이&amp;nbsp;업데이트되면서&amp;nbsp;ibus(리눅스&amp;nbsp;입력기)와의&amp;nbsp;호환에서&amp;nbsp;문제&lt;/span&gt;가&amp;nbsp;생긴걸로&amp;nbsp;보인다.&lt;br /&gt;x11,&amp;nbsp;wayland&amp;nbsp;문제도&amp;nbsp;아니었다.&amp;nbsp;(x11을&amp;nbsp;사용중임.)&lt;br /&gt;&lt;br /&gt;&amp;lt;fcitx, kime 입력기 실패과정&amp;gt;&lt;br /&gt;입력기를&amp;nbsp;바꿔봤는데&amp;nbsp;다른&amp;nbsp;입력기에서는&amp;nbsp;또&amp;nbsp;다른&amp;nbsp;문제들이&amp;nbsp;있어서&amp;nbsp;다시ibus로&amp;nbsp;돌아왔다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;fcitx 4,5&amp;nbsp;&lt;br /&gt;- 마지막 입력문자 기준 띄어쓰기나&amp;nbsp;&amp;nbsp;+ 문자를 입력시 입력위치 앞에 글자가 들어가는 문제가 있었다.&lt;br /&gt;- 예를들면, &quot;친구야 안녕?&quot;을 입력하고자 하면 &quot;친구 야안?녕&quot;으로 입력된다.&lt;br /&gt;- 또한, vscode에서도 호환문제가 발생했다. 예를들어 한/영 키가 안 먹었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;kime&lt;br /&gt;- 얘도 똑같은 문제가 생겼던 걸로 기억한다.(잘 기억 안남. 일단 잘 안 됐음..)&lt;/li&gt;
&lt;/ul&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;background-color: #9feec3;&quot;&gt;&amp;lt;임시 해결책 : Google 입력기&amp;gt;&lt;/span&gt;&lt;br /&gt;결국 IBUS로 돌아오고, 일단 크롬에서만 문제가 발생하므로 chrome extensions를 찾아봤다. &lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;https://chromewebstore.google.com/detail/google-%EC%9E%85%EB%A0%A5%EA%B8%B0/mclkkofklkfljcocdinagocijmpgbhab?hl=ko&amp;amp;gl=KR&quot;&gt;Google&amp;nbsp;입력기&lt;/a&gt;라는게&amp;nbsp;있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;얘도 문제가 많다 밑에 후기를 읽어봐주기 바람&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;해당&amp;nbsp;extensions를&amp;nbsp;추가하면,&lt;br /&gt;핫키를 지정해서 한글 입력이 가능하다. 그러나 extensions의 핫키는 기본적으로 ctrl 또는 alt키 + @만 가능해서, 한/영키를 핫키로 지정할 수가 없다. (이점이 매우 불편하다...)&lt;br /&gt;&lt;br /&gt;나는&amp;nbsp;일단&amp;nbsp;ctrl+space로&amp;nbsp;지정해놨다.&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;background-color: #9feec3;&quot;&gt;&amp;lt;구글 입력기 사용방법&amp;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;1. 사진과 같이 한국어를 input tools에 넣어준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DyA61/btsNhrh2Mkl/ARjfHzgC4Sqny5Vhw6KbE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DyA61/btsNhrh2Mkl/ARjfHzgC4Sqny5Vhw6KbE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DyA61/btsNhrh2Mkl/ARjfHzgC4Sqny5Vhw6KbE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDyA61%2FbtsNhrh2Mkl%2FARjfHzgC4Sqny5Vhw6KbE0%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;685&quot; height=&quot;571&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;749&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;2. extensions 항목에서 보면 한국어가 추가된 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/10e2X/btsNfJRmROD/C1VoL48X46Gk4MYQBzY4W1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/10e2X/btsNfJRmROD/C1VoL48X46Gk4MYQBzY4W1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/10e2X/btsNfJRmROD/C1VoL48X46Gk4MYQBzY4W1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F10e2X%2FbtsNfJRmROD%2FC1VoL48X46Gk4MYQBzY4W1%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;283&quot; height=&quot;214&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. keyboard Shortcut Settings에서 Toggle current Input Tool 의 핫키를 지정해준다. 나는 ctrl+space로 지정해뒀다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sLMC1/btsNgEPWWy1/IpqKF4nk4XDIQ2dQ1nQuvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sLMC1/btsNgEPWWy1/IpqKF4nk4XDIQ2dQ1nQuvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sLMC1/btsNgEPWWy1/IpqKF4nk4XDIQ2dQ1nQuvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsLMC1%2FbtsNgEPWWy1%2FIpqKF4nk4XDIQ2dQ1nQuvK%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;704&quot; height=&quot;324&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. ctrl+ space 를 누르면 한글 입력이 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YxVDP/btsNhq4sNtz/gmMirFpiEAPdvKSuTB4f20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YxVDP/btsNhq4sNtz/gmMirFpiEAPdvKSuTB4f20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YxVDP/btsNhq4sNtz/gmMirFpiEAPdvKSuTB4f20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYxVDP%2FbtsNhq4sNtz%2FgmMirFpiEAPdvKSuTB4f20%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;314&quot; height=&quot;267&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;267&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(주의, 우분투 시스템의 IBUS가 영어 입력상태일때 구글 입력기를 사용해야한다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;150&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP2uTm/btsNhNkOe8i/BZZG3CG5ZFIKXL46GbudQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP2uTm/btsNhNkOe8i/BZZG3CG5ZFIKXL46GbudQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP2uTm/btsNhNkOe8i/BZZG3CG5ZFIKXL46GbudQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP2uTm%2FbtsNhNkOe8i%2FBZZG3CG5ZFIKXL46GbudQK%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;150&quot; height=&quot;34&quot; data-origin-width=&quot;150&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우측 상단 IBUS입력기가 EN인 상태에서 구글 입력기를 사용하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;26&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIaZkd/btsNfwq9VDX/AD5tbfYXPCo59lIqfILNYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIaZkd/btsNfwq9VDX/AD5tbfYXPCo59lIqfILNYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIaZkd/btsNfwq9VDX/AD5tbfYXPCo59lIqfILNYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIaZkd%2FbtsNfwq9VDX%2FAD5tbfYXPCo59lIqfILNYK%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;146&quot; height=&quot;26&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;26&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글입력 상태가 아닌 EN에서만 방향키, delete, enter 키 등이 작동한다!&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 입력기 사용 후기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. tistory 를 작성하면서 알게 된 문제점이 있다. 원인과 어떤 상황이 트리거인지 정확히 모르겠지만, backspace로 입력 내용을 지우고자 할 때, 해당 라인 전체가 지워지는 경우가 있다(이게 복불복이라 매우 화가남.)&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;2. chat GPT를 이용할 때, 첫 번째 입력 문자가 한글일때 초성으로 분리되는 현상이 있다. &quot;안녕&quot;을 입력한다고 하면, &quot;ㅇㅏㄴ녕&quot;이라고 입력된다.&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;3. 핫키 매우 불편. 이미 한/영 키에서 벗어날 수 없는 몸이 되어버렸나보다. 그냥 지울때마다 영어 모드로 바꿔서 입력한 한글을 지우고 다시 한/영 키를 눌러 마저 한글을 입력하는 비효율적인 방법이 나을 정도;;&amp;nbsp;&lt;/p&gt;</description>
      <category>et al</category>
      <category>22.04</category>
      <category>Extensions</category>
      <category>IBus</category>
      <category>ubuntu</category>
      <category>구글입력기</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/234</guid>
      <comments>https://operationcoding.tistory.com/234#entry234comment</comments>
      <pubDate>Thu, 10 Apr 2025 23:30:32 +0900</pubDate>
    </item>
    <item>
      <title>[venv, pyenv, poetry] 윈도우 파이썬 버전 및 가상환경 툴 설치 및 사용법</title>
      <link>https://operationcoding.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;pc를 포맷하거나 tool을 설치할 때 매번 잊어먹어서 이참에 정리해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서 사용가능한 파이썬 버전 관리 툴과 가상환경 툴이 많다. 사용해본 툴만 정리하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( pipenv 등 여기서 설명하지 않았지만 다른 도구들도 많은 듯하다.)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 파이썬 버전 관리 O, 가상환경 관리 X -&amp;gt; &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;pyenv-win&lt;/span&gt;(윈도우용 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;pyenv&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 파이썬 버전 관리 X, 가상환경 관리 O -&amp;gt; &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;venv&lt;/span&gt;, &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;pyenv-win-env&lt;/span&gt;(pyenv와 같이 쓴다.), &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;poetry&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 파이썬 버전 관리 O, 가상환경 관리 O -&amp;gt; conda&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;이번 포스팅에서는 conda를 제외한 venv와 pyenv 그리고 poetry의 설치과정을 주로 다루고, 사용법도 간단하게 설명할 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;* venv 모듈 ( 파이썬 버전 관리 X, 가상환경 관리 O ) &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;파이썬에서 표준라이브러리로 제공해주는 가상환경 모듈이다.&lt;span&gt; 가장 보편적으로 사용된다. poetry에서도 venv모듈을 default로 사용하여 가상환경을 설치해주는 기능을 제공한다. (poetry는 conda의 가상환경을 사용할 수도 있다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;장점: &lt;br /&gt;파이썬이 설치되어있다면 표준라이브러리이기 때문에 따로 설치해줄 필요 없다.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;단점: &lt;br /&gt;파이썬 버전을 지정해서 가상환경을 생성할 수 있지만, 미리 해당 파이썬 버전이 설치되어 있어야한다. 윈도우에 global하게 설치해주어야 한다는 점에서 컴퓨터에 설치되어 있지 않은 파이썬 버전으로 가상환경을 만들어야하는 경우,&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;필요한 python 버전을 python 공홈에서 매번 설치하고, 환경변수를 변경해줘야해서 &lt;/span&gt;매우 귀찮다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;&amp;lt; venv 사용법 &amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 필요한 python 버전이 윈도우에 설치된 파이썬 버전과 다를 경우,&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; 파이썬 &lt;a href=&quot;https://www.python.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공홈&lt;/a&gt;으로부터 필요한 파이썬 버전을 설치한다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738301581579&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 현재 설치된 모든 파이썬의 버전을 확인하는 명령어
py -0

&quot;&quot;&quot;
 -V:3.12 *        Python 3.12 (64-bit)
 -V:3.11          Python 3.11
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&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;b&gt;2. 환경변수 수정 or 추가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;python&quot; 명령어를 cli 환경에서 사용하기 위해서는 환경 변수를 추가해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 3.11가 설치되어있었다. python 3.11 의 python.exe와 pip.exe가 아래 위치에 설치되어 있었고, 환경변수에도 아마 아래의 위치가 추가되어 있었을 것이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\&lt;br /&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;의 기존 환경 변수를 C:\Python312\python.exe와 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; C:\Python312\Scripts\pip.exe가 있는 디렉토리 위치로 아래 사진처럼 변경해주어야 한다. ( 두 개 이상의 python 실행 파일 위치를 환경 변수에 추가하면 충돌이 나서 에러가 발생할 수 있기 때문에 기존 환경변수를 제거하고 추가해줘야 한다.)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 속성 - 환경 변수 - 환경 변수 편집 - 편집 or 새로 만들기 - 아래 경로를 추가해준다.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;C:\Python312\Scripts\&lt;/li&gt;
&lt;li&gt;C:\Python312\&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_2025-01-31 14 39 17.png&quot; data-origin-width=&quot;1843&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTGGG/btsL4Hzjos6/CCKgQOWdLMTm2LCPea2E20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTGGG/btsL4Hzjos6/CCKgQOWdLMTm2LCPea2E20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTGGG/btsL4Hzjos6/CCKgQOWdLMTm2LCPea2E20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTGGG%2FbtsL4Hzjos6%2FCCKgQOWdLMTm2LCPea2E20%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;1843&quot; height=&quot;695&quot; data-filename=&quot;edited_2025-01-31 14 39 17.png&quot; data-origin-width=&quot;1843&quot; data-origin-height=&quot;695&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;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;3. venv 모듈로 가상환경 생성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738303507574&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# python -m venv &amp;lt;가상환경 이름&amp;gt;
python -m venv .venv

# 가상환경 실행
.venv\Scripts\activate

# 가상환경 종료
deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;* pyenv &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;( 파이썬 버전 관리 &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;O&lt;/b&gt;&lt;/span&gt;, 가상환경 관리 &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt;X&lt;/b&gt;&lt;/span&gt; )&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python 버전관리를 위한 오픈소스 라이브러리다. 파이썬 버전만 관리해주고, 가상환경을 생성할 수는 없기 때문에, 가상환경을 관리하는 툴인 pyenv-virtualenv을 보통 같이 설치해서 사용한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점: &lt;br /&gt;기존에 공홈에서 다운 받는 절차와 환경변수를 변경해주는 수동 설치 방법이 아니라 명령어로 손쉽게 python 버전을 설치 및 삭제할 수 있어서 관리가 편하다.&lt;/li&gt;
&lt;li&gt;단점: &lt;br /&gt;1.pyenv는 python 버전만 관리해주기 때문에 가상환경을 위한 라이브러리인 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;virtualenv&lt;/span&gt;를 따로 설치해줘야한다. &lt;br /&gt;&amp;nbsp; (참고로 pyenv와 virtualenv를 한 번에 사용 가능한 &lt;span style=&quot;background-color: #ffc9af; color: #333333; text-align: left;&quot;&gt;pyenv-virtualenv&lt;/span&gt; 라이브러리도 있다. &lt;u&gt;윈도우 지원 x&lt;/u&gt;)&lt;br /&gt;2. pyenv 공식 깃헙에서 윈도우를 지원하지 않는다. 하지만 kirankotari라는 훌륭한 분이 fork를 떠서 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;pyenv-win&lt;/span&gt; 라는 깃헙에서 윈도우용 pyenv를 만들었다. 마찬가지로 가상환경관리를 위해선 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;pyenv-win-venv&lt;/span&gt;을 설치해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&amp;lt; pyenv-win 사용법 &amp;gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. &lt;a href=&quot;https://github.com/pyenv-win/pyenv-win?tab=readme-ov-file&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pyenv-win 깃허브&lt;/a&gt;에 설명된 설치 과정에 따라 설치한다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나에 경우 powershell7을 사용하고 있는데, Quick start의 설명에 대로 설치가 안 되어서, &lt;a href=&quot;https://github.com/pyenv-win/pyenv-win/blob/master/docs/installation.md#git-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;git clon 방식&lt;/a&gt;으로 설치하였다. 간단히 정리하면 아래와 같다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1738304620819&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# %USERPROFILE%\.pyenv 위치에 소스 코드 다운로드.
git clone https://github.com/pyenv-win/pyenv-win.git &quot;%USERPROFILE%\.pyenv&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738304763219&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# PYENV, PYENV_ROOT, PYENV_HOME 환경변수를 추가하는 명령어를 차례대로 복붙해서 실행해준다.
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + &quot;\.pyenv\pyenv-win\&quot;,&quot;User&quot;)

[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + &quot;\.pyenv\pyenv-win\&quot;,&quot;User&quot;)

[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + &quot;\.pyenv\pyenv-win\&quot;,&quot;User&quot;)

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + &quot;\.pyenv\pyenv-win\bin;&quot; + $env:USERPROFILE + &quot;\.pyenv\pyenv-win\shims;&quot; + [System.Environment]::GetEnvironmentVariable('path', &quot;User&quot;),&quot;User&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 변수가 아닌 사용자 변수를 보면 아래와 같이 pyenv가 추가된 것을 볼 수 있다.&lt;br /&gt;(pyenv-win-venv는 아래 pyenv-win-venv 설치 후에 추가된 것.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpaFqb/btsL4Qweqrb/tcglPm9Emd4TW6YBtjXz4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpaFqb/btsL4Qweqrb/tcglPm9Emd4TW6YBtjXz4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpaFqb/btsL4Qweqrb/tcglPm9Emd4TW6YBtjXz4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpaFqb%2FbtsL4Qweqrb%2FtcglPm9Emd4TW6YBtjXz4k%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;670&quot; height=&quot;540&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;540&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyenv --version 명령어를 입력시 버전이 출력되면 잘 설치된 것이다.&lt;br /&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;(참고: powershell을 껐다 켜야 환경변수가 적용된다.)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1738305378997&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyenv --version # pyenv 3.1.1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyenv 명령어 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1738306008952&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치가능한 파이썬 버전 목록을 볼 수 있다.
pyenv install -l 

# 특정 파이썬 버전을 설치하는 명령어.
pyenv install 3.12.8

# 현재 어떤 버전의 파이썬을 사용하고 있는지와 파이썬 실행파일의 위치를 출력.
pyenv version

# 설치한 파이썬 버전의 목록과 파일 위치를 출력.
pyenv versions

# 파이썬 버전을 global or local로 사용하고자 할 때.
pyenv local 3.12.8
pyenv global 3.12.8&lt;/code&gt;&lt;/pre&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;b&gt;2. &lt;a href=&quot;https://github.com/pyenv-win/pyenv-win-venv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pyenv-win-venv 깃허브&lt;/a&gt;의 설명을 참고하여 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 pyenv-win 설치가 선행되어야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1738305221301&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# &quot;$HOME\.pyenv-win-venv&quot; 위치에 깃 클론
git clone https://github.com/pyenv-win/pyenv-win-venv &quot;$HOME\.pyenv-win-venv&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738305258901&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 환경 변수 추가 명령어
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + &quot;\.pyenv-win-venv\bin;&quot;  + [System.Environment]::GetEnvironmentVariable('path', &quot;User&quot;),&quot;User&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyenv-win-venv 또는 pyenv-venv 명령어를 입력하여 잘 설치되었는지 확인.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1738305638860&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pyenv-win-venv # pyenv-venv 명령어와 같다. 혼용해서 사용해도 됨.
&quot;&quot;&quot;
pyenv-win-venv v0.6.5
Copyright (c) Arbaaz Laskar &amp;lt;arzkar.dev@gmail.com&amp;gt;

Usage: pyenv-win-venv &amp;lt;command&amp;gt; &amp;lt;args&amp;gt;

A CLI to manage virtual envs with pyenv-win

Commands:
init                search for .python-version file in the
                    current directory and activate the env
activate            activate an env
deactivate          deactivate an env
completion          autocomplete script for powershell
install             install an env
uninstall           uninstall an env
uninstall self      uninstall the CLI and its envs
list &amp;lt;command&amp;gt;      list all installed envs/python versions
local               set the given env in .python-version file
config              show the app directory
update self         update the CLI to the latest version
which &amp;lt;command&amp;gt;     show the full path to an executable
help &amp;lt;command&amp;gt;      show the CLI/&amp;lt;command&amp;gt; menu

Flags:
debug               To show debug log
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;background-color: #9feec3;&quot;&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;* pyenv-venv activate, 가상환경 활성화시 &lt;/span&gt;powershell이 아닌 cmd 환경으로 바뀌는 버그 수정(아래 접은 글 확인)&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;깃클론으로 설치해서 그런건지? powershell에서 pyenv-venv activate을 실행하면 가상환경이 cmd환경에서 켜졌다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;찾다보니, C:\Users\유저이름\.pyenv-win-venv\bin\ pyenv-win-venv.ps1 파일의 소스를 일부 바꿔주니 해결됐다.&lt;/p&gt;
&lt;div style=&quot;background-color: #282a36; color: #f6f6f4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #7b7f8b;&quot;&gt;# Auto-detect the shell&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;/span&gt;&lt;span style=&quot;color: #bf9eee;&quot;&gt;$MyInvocation&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;.MyCommand.CommandType&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e7ee98;&quot;&gt;ExternalScript&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&amp;nbsp; &amp;nbsp; $invokedShell&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e7ee98;&quot;&gt;bat&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&amp;nbsp; &amp;nbsp; $invokedShell&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e7ee98;&quot;&gt;ps1&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위의 코드를 모두 지우고 아래와 같이 바꾸니 powershell7으로 잘 켜졌다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;분석:&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;&lt;span style=&quot;color: #bf9eee;&quot;&gt;$MyInvocation&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;.MyCommand.CommandType&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 powershell에서 커맨드가 어떤 쉘에서 입력되었는지(현재 사용중인 쉘인지 외부 쉘인지)를 출력해주는 명령어라고한다. ExternalScript(외부쉘)이면 CMD가 켜지고, 그 외에 경우 파워쉘이 켜지라고 되어있는 것이다. 그래서 위의 if문을 싹 다 지우고 항상 파워셀로 켜지도록 아래 한 줄로 대체했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #282a36; color: #f6f6f4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;$invokedShell&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f286c4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #f6f6f4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #e7ee98;&quot;&gt;ps1&lt;/span&gt;&lt;span style=&quot;color: #dee492;&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;b&gt;3. pyenv-venv 명령어 정리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738313488933&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 가상환경 생성: pyenv-venv install &amp;lt;파이썬버전&amp;gt; &amp;lt;가상환경 이름&amp;gt;
pyenv-venv install 3.12.9 3.12.9 # 일부러 가상환경이름을 파이썬 버전 이름과 일치시켰다.

# 가상환경 활성화: pyenv-venv activate &amp;lt;가상환경 이름&amp;gt;
pyenv-venv activate 3.12.9 

# 가상환경 종료
pyenv-venv deactivate
exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. pyenv-win-venv로 만든 가상환경을 poetry에 연결하려고 했으나 엑세스거부 발생 -&amp;gt; &lt;a href=&quot;https://github.com/python-poetry/poetry/issues/10122&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;최근이슈&lt;/a&gt;, &lt;a href=&quot;https://github.com/python-poetry/poetry/issues/2124&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;과거이슈&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;poetry 2.0.1에서 window 파일에 엑세스 거부 문제가 있는 것 같다. 최근에 이슈 올린 사람도 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;&lt;b&gt; * poetry ( 파이썬 버전 관리 X, 가상환경 관리 O, 패키지 관리 O )&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;poetry는 로컬pc의 global python.exe외의 poetry 전용 python.exe 파일이 따로 있고, 가상환경을 만들 수 있다(poetry 자체도 python -m venv venv로 만든 가상환경이라고 생각하면 편하다.)&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;장점: pyenv로 파이썬 버전을 변경한 후에 poetry로 가상환경을 만들면&amp;nbsp; 패키지 관리도 가능하므로 편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&amp;lt; poetry 설치 및 사용법 &amp;gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. &lt;a href=&quot;https://python-poetry.org/docs/#installing-with-the-official-installer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공홈&lt;/a&gt;을 참고해서 설치하자.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 둘 중 하나 아무난 걸로 설치해도 사실 상관없다. 어차피 poetry env use &amp;lt;python.exe경로&amp;gt;를 이용하면 해당 경로의 파이썬 버전으로 가상환경을 만들 수 있다. 다만 Base 파이썬 버전이 무엇이냐가 다를 뿐이다. 예를들어 poetry install으로 가상환경을 생성하면서 의존성을 설치할 때 Base의 파이썬 버전을 기준으로 가상환경 버전을 자동 생성한다.&lt;/p&gt;
&lt;pre id=&quot;code_1738327354316&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 현재 사용중인 파이썬 버전으로 poetry를 사용하고 싶으면 명령어 끝에 python을 넣는다.
# pyenv로 관리되는 파이썬 버전을 설치할 것이므로 이걸로 설치.
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

# 로컬 pc에 설치된 파이썬 버전(py -0 명령어로 확인할 수 있는 파이썬 버전)으로 설치하려면 아래 명령어로 설치.
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1738327517360&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;poetry --version # Poetry (version 2.0.1)&lt;/code&gt;&lt;/pre&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;b&gt;2. &lt;a href=&quot;https://github.com/python-poetry/poetry-plugin-shell&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;poetry shell&amp;nbsp; plugin&lt;/a&gt; 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;poetry shell을 현재 프로젝트의 가상환경을 활성화하는 기능이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과거 poetry shell이라는 기본 기능이 plugin으로 빠졌다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738330897555&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;poetry self add poetry-plugin-shell&lt;/code&gt;&lt;/pre&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;b&gt;3. poetry 명령어 정리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738328347256&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 새로운 프로젝트 생성(pyproject.toml을 생성)
poetry new 

# 패키지 추가(pip install과 비슷)
poetry add 

# 패키지 의존성 설치 (기존 lock파일을 기준으로 설치하거나 pyproject.toml의 패키지들을 설치한다.)
# .venv 가상환경을 자동 생성한다.
poetry install

# 가상환경 목록 출력
poetry env list

# 가상환경 파이썬 버전 변경 후 가상환경 생성(단, 현재 폴더에 가상환경이 없어야 함)
# poetry는 conda의 가상환경과 연동이 가능하다
poetry env use &amp;lt;가상환경의 python.exe 주소&amp;gt;

# 가상환경 실행 파일 위치를 출력(가상환경 활성화 아님!)
poetry env activate

# 가상환경 삭제: 현재 엑세스 거부 에러 발생. 하단 이슈 참고
# poetry 2.0.1 버전, 윈도우 11, 2025.01.31 기준.
poetry env remove

# 가상환경 전체 삭제
poetry env remove --all&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에는 [ 파이썬 버전 관리 + 패키지 관리 + 의존성관리 + 가상환경 + 포매터/린터 서드파티 도구]를 모두 합치고 속도마저 어마무시하게 빠른 &quot;uv&quot;가 있다. Rust로 작성되어서 속도가 빠르다고 한다. 이제 uv가 지배하는 세상이 올 것 같다...&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;다음 포스팅에는 uv 사용법을 정리하는걸로,,&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://homubee.tistory.com/38&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://homubee.tistory.com/38&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mattpy.tistory.com/entry/pyenv-poetry-%EC%A1%B0%ED%95%A9%EC%9C%BC%EB%A1%9C-%EB%8B%A4%EC%96%91%ED%95%9C-python-%EB%B2%84%EC%A0%84-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pyenv+poetry&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://sigridjin.medium.com/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%9D%BC%EB%A9%B4-uv-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A9%EC%8B%9C%EB%8B%A4-546d523f7178&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;uv&lt;/a&gt;&lt;/p&gt;</description>
      <category>et al</category>
      <category>poetry</category>
      <category>pyenv</category>
      <category>pyenv-win</category>
      <category>pyenv-win-venv</category>
      <category>venv</category>
      <category>가상환경</category>
      <category>윈도우</category>
      <category>파이썬</category>
      <category>파이썬 버전 변경</category>
      <category>패키지관리</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/233</guid>
      <comments>https://operationcoding.tistory.com/233#entry233comment</comments>
      <pubDate>Fri, 31 Jan 2025 18:05:09 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu] ubuntu에서 ubuntu 설치 usb 만들기, ubuntu 22.04 설치</title>
      <link>https://operationcoding.tistory.com/232</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 데스크톱은 ubuntu20.04LTS를 사용중인데, 포맷해야했다. 포맷하는김에 ubuntu22.04LTS 버전으로 포맷하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔하게 usb를 이용해서 포맷하려고하는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포맷 usb를 만드는 방법을 서칭하다가 윈도우os에서만 사용가능한 Rufus 라는 프로그램을 이용하는 방법만 가득했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(&lt;a style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; href=&quot;https://etcher.balena.io/&quot;&gt;balenaEtcher&lt;/a&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;서칭끝에 우분투 환경에서 간단한 명령어로 우분투 포맷 usb를 만드는 방법을 찾았고, 다음에 또 포맷할 때 참고하고자 기록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(포맷이 잘 진행되지 않아서 포맷 usb 문제라고 오해했고, 최종적으로 아래 dd 명령어를 이용한 방법이 아닌 balenaEtcher를 사용해서 포맷 usb를 만들었으나 아마 dd 명령어를 이용한 방법도 가능할 것으로 보인다.)&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;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://harryp.tistory.com/1474&quot;&gt;https://harryp.tistory.com/1474&lt;/a&gt;&amp;nbsp;[Park's&amp;nbsp;Life:티스토리]&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.itmaya.co.kr/wboard/view.php?wb=tech&amp;amp;idx=58&quot;&gt;https://www.itmaya.co.kr/wboard/view.php?wb=tech&amp;amp;idx=58&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;0. 8GB 이상의 USB를 준비한다.&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 우분투 이미지 다운받기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://releases.ubuntu.com/22.04/?_gl=1*19ip6hm*_gcl_au*MTE4NTIyOTI0MS4xNzA3MTMxMDQx&amp;amp;_ga=2.149898549.2084151835.1707729318-1126754318.1683186906&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ubuntu22.04LTS 다운로드 공식 홈페이지&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhgdyv/btsLHmcpK8x/MeuesDTDL9qCbnxUwF1pSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhgdyv/btsLHmcpK8x/MeuesDTDL9qCbnxUwF1pSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhgdyv/btsLHmcpK8x/MeuesDTDL9qCbnxUwF1pSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdhgdyv%2FbtsLHmcpK8x%2FMeuesDTDL9qCbnxUwF1pSK%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;547&quot; height=&quot;357&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치하고자하는 ubuntu버전의 iso파일을 다운받는다. 22.04LTS 버전을 다운받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. USB에 우분투 iso 파일 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fdisk -l 명령어로 usb의 device 위치를 확인한다.&lt;/p&gt;
&lt;pre id=&quot;code_1736334768242&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Disk /dev/sda: 14.33 GiB, 15376318464 bytes, 30031872 sectors
Disk model: Cruzer Blade    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dd 명령어로 포맷 USB를 만들어줄 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1736334092281&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dd bs=1024KB if=리눅스설치이미지.iso of=USB메모리경로 status=progress oflag=sync&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;pre id=&quot;code_1736335139685&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dd bs=4M if=/home2/ubuntu-22.04.5-desktop-amd64.iso of=/dev/sda status=progress oflag=sync&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료되는데 8분 정도 걸렸다.&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;* dd란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;- bs (Bytes) : 한 번에 읽기/쓰기할 최대 바이트 크기를 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- if (File): 지정한 파일을 입력 대상으로 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- of (File): 지정한 파일을 출력 대상으로 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- oflag (FLAGS) : 표준 출력 파일에 사용되는 flag옵션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- status=progress : 진행 현황을 보여준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 우분투 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 재부팅시 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;F2&lt;/span&gt; 키를 연타해서 BIOS에 진입한다. (Esc, F12 등 메인보드에 따라 입력키가 다를 수 있다.)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내 데스크톱은 컴퓨터 본체 뒤쪽의 BIOS 전용 USB 꽂는 곳이 있다.&lt;/li&gt;
&lt;li&gt;그곳에 USB를 꽂아야만 BIOS에서 아래와 같이 USB(SanDisk)를 인식한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Boot 우선순위를 우분투 이미지가 담긴 USB가 1순위가 되도록 마우스로 잡아서 위로 끌어올리고 save &amp;amp; Exit하면 재부팅된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3119.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnVIJG/btsLGYpgPC6/M6g707AQ9Xemdr33x73dR1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnVIJG/btsLGYpgPC6/M6g707AQ9Xemdr33x73dR1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnVIJG/btsLGYpgPC6/M6g707AQ9Xemdr33x73dR1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnVIJG%2FbtsLGYpgPC6%2FM6g707AQ9Xemdr33x73dR1%2Fimg.jpg&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;652&quot; height=&quot;371&quot; data-filename=&quot;IMG_3119.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 아래와 같이 USB로 진입하면서 Ubuntu 설치 화면이 뜬다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보통은 Try or Install Ubuntu로 설치를 이어갈 수 있으나, 나에 경우 설치화면이 안 뜨고 검정 화면으로 먹통이 되었다. 아마 CPU가 그래픽이 지원되지 않는 Ryzen 5600X 모델이라 그런 것 같다. 혹은 외장 그래픽카드를 사용하고 있어서 그럴수도...&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그래서 두 번째 옵션인 Ubuntu (safe graphics)를 선택하여 ubuntu를 설치하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3120.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ekAO22/btsLH7ZOo8B/MHPI1yAWM887qGH6imceI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ekAO22/btsLH7ZOo8B/MHPI1yAWM887qGH6imceI1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ekAO22/btsLH7ZOo8B/MHPI1yAWM887qGH6imceI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekAO22%2FbtsLH7ZOo8B%2FMHPI1yAWM887qGH6imceI1%2Fimg.jpg&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;4032&quot; height=&quot;3024&quot; data-filename=&quot;IMG_3120.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&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;4. Ubuntu 기본 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 것을 선택해도 상관없다. 어차피 똑같은 절차를 거쳐야한다. Try Ubuntu를 선택했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3121.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blTgGB/btsLG2L9vlf/hKlcEryYzK1FfYTvErO1y1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blTgGB/btsLG2L9vlf/hKlcEryYzK1FfYTvErO1y1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blTgGB/btsLG2L9vlf/hKlcEryYzK1FfYTvErO1y1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblTgGB%2FbtsLG2L9vlf%2FhKlcEryYzK1FfYTvErO1y1%2Fimg.jpg&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;4030&quot; height=&quot;2498&quot; data-filename=&quot;IMG_3121.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2498&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3126.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppGWe/btsLHpG5bng/QkU2eQZW4srGbUmtfN8Sm0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppGWe/btsLHpG5bng/QkU2eQZW4srGbUmtfN8Sm0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppGWe/btsLHpG5bng/QkU2eQZW4srGbUmtfN8Sm0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FppGWe%2FbtsLHpG5bng%2FQkU2eQZW4srGbUmtfN8Sm0%2Fimg.jpg&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;4030&quot; height=&quot;2670&quot; data-filename=&quot;IMG_3126.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2670&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3127.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc4E2e/btsLGiBzdGG/0aHN7xAKmh538Cmc3M9vdk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc4E2e/btsLGiBzdGG/0aHN7xAKmh538Cmc3M9vdk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc4E2e/btsLGiBzdGG/0aHN7xAKmh538Cmc3M9vdk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc4E2e%2FbtsLGiBzdGG%2F0aHN7xAKmh538Cmc3M9vdk%2Fimg.jpg&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;4032&quot; height=&quot;3024&quot; data-filename=&quot;IMG_3127.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&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;기본 선택으로 alongside가 선택되어있으나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20.04에서 22.04로 버전을 바꿀 것이므로 disk를 모두 삭제하고 새로 설치하는 3번째 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Erase disk and install Ubuntu&lt;/span&gt;를 선택했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3122.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KMnXB/btsLInH6ta9/qRFTTvwg5qXHi3T36xDK81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KMnXB/btsLInH6ta9/qRFTTvwg5qXHi3T36xDK81/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KMnXB/btsLInH6ta9/qRFTTvwg5qXHi3T36xDK81/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKMnXB%2FbtsLInH6ta9%2FqRFTTvwg5qXHi3T36xDK81%2Fimg.jpg&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;4030&quot; height=&quot;2590&quot; data-filename=&quot;IMG_3122.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2590&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;아래와 같이 파티션이 나뉜다고 한다. Continue.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_3129.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;909&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxrOYw/btsLHAax0O7/NeyxgT3vFzFIePznV4jzr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxrOYw/btsLHAax0O7/NeyxgT3vFzFIePznV4jzr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxrOYw/btsLHAax0O7/NeyxgT3vFzFIePznV4jzr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxrOYw%2FbtsLHAax0O7%2FNeyxgT3vFzFIePznV4jzr1%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;3000&quot; height=&quot;909&quot; data-filename=&quot;edited_IMG_3129.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;909&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3130.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zXgPU/btsLIcUzMXA/SeCAVwnJi9YkfkvwdOD2sk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zXgPU/btsLIcUzMXA/SeCAVwnJi9YkfkvwdOD2sk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zXgPU/btsLIcUzMXA/SeCAVwnJi9YkfkvwdOD2sk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzXgPU%2FbtsLIcUzMXA%2FSeCAVwnJi9YkfkvwdOD2sk%2Fimg.jpg&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;4030&quot; height=&quot;2627&quot; data-filename=&quot;IMG_3130.jpg&quot; data-origin-width=&quot;4030&quot; data-origin-height=&quot;2627&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;color: #333333; text-align: start;&quot;&gt;username@computer's name&lt;span&gt; 형식으로 뜬다.&lt;/span&gt;&lt;/span&gt; 그 이름을 여기서 설정한다. 정보를 넣어주고 continue.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_3131.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pjLfS/btsLF02cuog/GpgtscjibF56mAqSbDr641/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pjLfS/btsLF02cuog/GpgtscjibF56mAqSbDr641/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pjLfS/btsLF02cuog/GpgtscjibF56mAqSbDr641/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpjLfS%2FbtsLF02cuog%2FGpgtscjibF56mAqSbDr641%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;3000&quot; height=&quot;2174&quot; data-filename=&quot;edited_IMG_3131.jpg&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2174&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;background-color: #f6e199;&quot;&gt;usb를 제거&lt;/span&gt;해주고 enter를 눌러서 재부팅해주면 ubuntu 설치 완료다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_3132.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pRI4j/btsLIdFV7oj/vps8Jk18ndxNp0R9R7KnP1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pRI4j/btsLIdFV7oj/vps8Jk18ndxNp0R9R7KnP1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pRI4j/btsLIdFV7oj/vps8Jk18ndxNp0R9R7KnP1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpRI4j%2FbtsLIdFV7oj%2Fvps8Jk18ndxNp0R9R7KnP1%2Fimg.jpg&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;4032&quot; height=&quot;3024&quot; data-filename=&quot;IMG_3132.JPG&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 키보드에서 한국어 입력 설정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Settings - Region &amp;amp; Language - Manage Installed Languages&lt;/span&gt;에 들어가면 언어팩을 설치할 것이냐고 팝업창이 뜬다. install을 눌러 설치해준 후 컴퓨터를 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;재부팅&lt;/span&gt;해준다. korean(Hangul)이 설치된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cghKGB/btsLInnNiMC/f0oUOGASFvOamkmMk5YSZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cghKGB/btsLInnNiMC/f0oUOGASFvOamkmMk5YSZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cghKGB/btsLInnNiMC/f0oUOGASFvOamkmMk5YSZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcghKGB%2FbtsLInnNiMC%2Ff0oUOGASFvOamkmMk5YSZK%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;571&quot; height=&quot;476&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;818&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;background-color: #f6e199;&quot;&gt;Settings - Keyboard - Input Sources 에서 + 버튼 클릭 - Korean - Korean(Hangul)을 선택하여 Add.&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;Korean(Hangul) 옆에 있는 점 세 개를 눌러서 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Preferences&lt;/span&gt; - Hangul Toggle Key 옆에 있는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Add&lt;/span&gt; 누른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 한영 전환하기위한 key를 누르라는 팝업이 뜬다. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Alt_R(한/영)&lt;/span&gt;키를 누르고 OK 해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Input Sources에 있는 English는 삭제해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 컴퓨터를 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;재부팅&lt;/span&gt; 해주면 한글이 잘 입력되고, 한/영 전환도 잘 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btxSWa/btsLFWFxblI/IBesnQ83QBmfHJbgFcFuA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btxSWa/btsLFWFxblI/IBesnQ83QBmfHJbgFcFuA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btxSWa/btsLFWFxblI/IBesnQ83QBmfHJbgFcFuA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtxSWa%2FbtsLFWFxblI%2FIBesnQ83QBmfHJbgFcFuA1%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;619&quot; height=&quot;516&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. nvidia-driver 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅 글을 참고한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://operationcoding.tistory.com/144&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.10.19 - [et al/Docker&amp;amp;git] - [CS] ubuntu 20.04.6 [LTS]에 NVIDIA - DRIVER 설치&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736350367294&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[CS] ubuntu 20.04.6 [LTS]에 NVIDIA - DRIVER 설치&quot; data-og-description=&quot;0. 부팅이 안 되는 에러상황 발생시 ubuntu-drivers devices # 설치 가능한 드라이버 확인 sudo ubuntu-drivers autoinstall # 드라이버 자동 설치 위와 같이 자동업데이트를 통해 그래픽카드 드라이버를 설치했&quot; data-og-host=&quot;operationcoding.tistory.com&quot; data-og-source-url=&quot;https://operationcoding.tistory.com/144&quot; data-og-url=&quot;https://operationcoding.tistory.com/144&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kXIoB/hyXWAW60wz/k66l3yyV9d6yVEXWgZEEI0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/JVpQy/hyX0mJFnoe/LOKok3alHMzFPKFDg1wE01/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/FA7g6/hyX0kE4GxT/U8kILXQIkhn3ipPVUFUqd1/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://operationcoding.tistory.com/144&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://operationcoding.tistory.com/144&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kXIoB/hyXWAW60wz/k66l3yyV9d6yVEXWgZEEI0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/JVpQy/hyX0mJFnoe/LOKok3alHMzFPKFDg1wE01/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/FA7g6/hyX0kE4GxT/U8kILXQIkhn3ipPVUFUqd1/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[CS] ubuntu 20.04.6 [LTS]에 NVIDIA - DRIVER 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;0. 부팅이 안 되는 에러상황 발생시 ubuntu-drivers devices # 설치 가능한 드라이버 확인 sudo ubuntu-drivers autoinstall # 드라이버 자동 설치 위와 같이 자동업데이트를 통해 그래픽카드 드라이버를 설치했&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;operationcoding.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;6. flameshot 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 캡쳐 프로그램도 나쁘진 않지만, flameshot은 캡쳐한 화면에서 바로 메모를 남기거나 펜도구로 간단히 편집이 가능해서&amp;nbsp; flameshot 프로그램을 설치했다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736347715022&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install flameshot&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단축키 설정하는 법. F1 위치가 편해서 F1을 캡쳐 도구로 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Settings - Keyboard - Keyboard Shortcuts - Custom Shortcuts 에서 아래와 같이 설정해준다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blw5Pt/btsLG1meeRt/crYXox94E8bhs22px0wsiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blw5Pt/btsLG1meeRt/crYXox94E8bhs22px0wsiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blw5Pt/btsLG1meeRt/crYXox94E8bhs22px0wsiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblw5Pt%2FbtsLG1meeRt%2FcrYXox94E8bhs22px0wsiK%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;530&quot; height=&quot;445&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4fsw1/btsLHPkMRtd/7p1X4Ee0OxQRj5HFsKWFwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4fsw1/btsLHPkMRtd/7p1X4Ee0OxQRj5HFsKWFwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4fsw1/btsLHPkMRtd/7p1X4Ee0OxQRj5HFsKWFwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4fsw1%2FbtsLHPkMRtd%2F7p1X4Ee0OxQRj5HFsKWFwk%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;477&quot; height=&quot;255&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;255&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;h2 data-ke-size=&quot;size26&quot;&gt;7. VSCode 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;snap에서 vscode를 설치하면 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;한글 입력이 안 되는 버그 현상&lt;/span&gt;이 발생할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/download#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vscode 공홈 다운로드&lt;/a&gt; 에서 deb 파일을 다운받고 아래 명령어로 설치한다.&lt;/p&gt;
&lt;pre id=&quot;code_1736349703341&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dpkg -i code_1.96.2-1734607745_amd64.deb&lt;/code&gt;&lt;/pre&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;/p&gt;</description>
      <category>et al</category>
      <category>flameshot</category>
      <category>ubuntu22.04lts</category>
      <category>ubuntu포맷</category>
      <category>우분투vscode</category>
      <category>우분투설치</category>
      <category>우분투한글</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/232</guid>
      <comments>https://operationcoding.tistory.com/232#entry232comment</comments>
      <pubDate>Thu, 9 Jan 2025 09:00:53 +0900</pubDate>
    </item>
    <item>
      <title>[oh-my-zsh] ubuntu에서 dracula 테마 적용하기 + Powerlevel10k</title>
      <link>https://operationcoding.tistory.com/231</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ubuntu 22.04 LTS의 기본 터미널은 가독성이 떨어진다. 커스텀 테마를 적용하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 노트북에서 사용중인 oh-my-posh의 dracula 테마를 잘 쓰고 있었기에,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투 데스크톱에서도 dracula 테마를 적용해봤다.&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;a href=&quot;https://www.youtube.com/watch?v=80PHRWH84Tc&amp;amp;t=150s&quot;&gt;https://www.youtube.com/watch?v=80PHRWH84Tc&amp;amp;t=150s&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=80PHRWH84Tc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/U60ZU/hyXWBhoh1y/9eRkoqxj58ZRLkFm772LOK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=116_134_328_366,https://scrap.kakaocdn.net/dn/cQpiVR/hyX0xLbPUp/O3KMu0U4Jk0ZZfjjqP7dpk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=116_134_328_366&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Upgrade Your Terminal&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/80PHRWH84Tc&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 영상을 참고했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 글꼴 설치&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/romkatv/powerlevel10k/blob/master/README.md#manual-font-installation&quot;&gt;MesloLGS NF&lt;/a&gt;를 설치한다. 네 개 다 설치하자. 다운 후 해당 글꼴을 install까지 완료하자&lt;br /&gt;(MesloLGS NF Italic.ttf 는 install이 안 되었다. 문제가 없는듯 하여 스킵했다.)&lt;/li&gt;
&lt;li&gt;우분투 터미널을 마우스 우클릭 - Preferences - Profiles 밑에 기본 프로필이 있다. &lt;br /&gt;(아래 사진은 custom이라고 이름을 변경한 상태)&lt;/li&gt;
&lt;li&gt;Text - Text Appearance - Custom font - MesloLGS NF 를 선택한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uJYvY/btsLG3dfWop/QOmvke2iIeVfKhFF4wZKkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uJYvY/btsLG3dfWop/QOmvke2iIeVfKhFF4wZKkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uJYvY/btsLG3dfWop/QOmvke2iIeVfKhFF4wZKkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuJYvY%2FbtsLG3dfWop%2FQOmvke2iIeVfKhFF4wZKkk%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;787&quot; height=&quot;551&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. oh-my-zsh 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ohmyz.sh/&quot;&gt;https://ohmyz.sh&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736359303128&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. dracula 테마 설치하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://draculatheme.com/gnome-terminal&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://draculatheme.com/gnome-terminal&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736359445303&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Gnome Terminal&quot; data-og-description=&quot;The most famous dark theme for Gnome Terminal and an ever-growing selection of apps!  &quot; data-og-host=&quot;draculatheme.com&quot; data-og-source-url=&quot;https://draculatheme.com/gnome-terminal&quot; data-og-url=&quot;https://draculatheme.com/gnome-terminal&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cgu3xB/hyXWmR7tB5/k3G8Vbmpfufq9lXjPwaGM1/img.png?width=2400&amp;amp;height=1350&amp;amp;face=0_0_2400_1350,https://scrap.kakaocdn.net/dn/bXZids/hyXWuvRpc2/nyQGj1r1gpfdImMJEfdjzk/img.png?width=2400&amp;amp;height=1350&amp;amp;face=0_0_2400_1350,https://scrap.kakaocdn.net/dn/ukqtq/hyX0zbalpQ/01RItw0ZYVNeDkW8og4XA1/img.png?width=875&amp;amp;height=603&amp;amp;face=0_0_875_603&quot;&gt;&lt;a href=&quot;https://draculatheme.com/gnome-terminal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://draculatheme.com/gnome-terminal&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cgu3xB/hyXWmR7tB5/k3G8Vbmpfufq9lXjPwaGM1/img.png?width=2400&amp;amp;height=1350&amp;amp;face=0_0_2400_1350,https://scrap.kakaocdn.net/dn/bXZids/hyXWuvRpc2/nyQGj1r1gpfdImMJEfdjzk/img.png?width=2400&amp;amp;height=1350&amp;amp;face=0_0_2400_1350,https://scrap.kakaocdn.net/dn/ukqtq/hyX0zbalpQ/01RItw0ZYVNeDkW8og4XA1/img.png?width=875&amp;amp;height=603&amp;amp;face=0_0_875_603');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gnome Terminal&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The most famous dark theme for Gnome Terminal and an ever-growing selection of apps!  &lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;draculatheme.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1736359453052&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install dconf-cli&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736359475564&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/dracula/gnome-terminal
cd gnome-terminal
./install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Powerlevel10k 설치하기&lt;/h2&gt;
&lt;pre class=&quot;awk&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #000000; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;nano ~/.zshrc
ZSH_THEME=&quot;powerlevel10k/powerlevel10k&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. Powerlevel10k 구성하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 ui를 스무고개 방식으로 선택한다. 아래 명령어를 통해 ui를 언제든지 바꿀 수 있다.&lt;/p&gt;
&lt;pre class=&quot;nginx&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;p10k configure&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 플러그인 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 유용한 플러그인을 설치해두자.&lt;/p&gt;
&lt;pre id=&quot;code_1736359736049&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1736361252970&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nano ~/.zshrc
plugins=(git zsh-syntax-highlighting zsh-autosuggestions history)

source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;autosuggestions는 자주 사용하는 명령어를 추천한다. 회색 상태의 미완성 명령어를 오른쪽 방향키를 눌러 완성할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;highlighting 기능은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;올바른 명령어&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;는&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;초록색&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;틀린 명령어&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;빨간색&lt;/span&gt;으로 표시해준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c42DBK/btsLHzQdYS2/zGrURGHh7ic3QgOV1R3SN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c42DBK/btsLHzQdYS2/zGrURGHh7ic3QgOV1R3SN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c42DBK/btsLHzQdYS2/zGrURGHh7ic3QgOV1R3SN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc42DBK%2FbtsLHzQdYS2%2FzGrURGHh7ic3QgOV1R3SN1%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;406&quot; height=&quot;45&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7d6ky/btsLI3oOT1l/iyKZVxq0KskeFO9mVWffK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7d6ky/btsLI3oOT1l/iyKZVxq0KskeFO9mVWffK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7d6ky/btsLI3oOT1l/iyKZVxq0KskeFO9mVWffK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7d6ky%2FbtsLI3oOT1l%2FiyKZVxq0KskeFO9mVWffK0%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;403&quot; height=&quot;36&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;history는 과거 쉘에 입력했던 명령어들을 리스트로 나열해준다(따로 설치가 필요없다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(막상 드라큘라 테마를 적용하고나니 노트북에서와 다른 색상이 썩 맘에 들진 않았다. 하지만 귀찮아서 그냥 쓸련다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. vscode 터미널 환경에 테마 적용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vscode의 터미널을 열면 font가 깨져있는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWBz3C/btsLMo88iQM/XzBaA7p4kzCwnM2WEok0k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWBz3C/btsLMo88iQM/XzBaA7p4kzCwnM2WEok0k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWBz3C/btsLMo88iQM/XzBaA7p4kzCwnM2WEok0k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWBz3C%2FbtsLMo88iQM%2FXzBaA7p4kzCwnM2WEok0k0%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;582&quot; height=&quot;117&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;117&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;vscode 세팅에서 폰트를 적용해야 한다. &lt;br /&gt;ctrl+, 로 settings 진입 - Text Editor - Font - Font Family의 맨 앞에 아래 사진과 같이 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;'MesloLGS NF'&lt;span&gt; 를 기입한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1463&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmEy9d/btsLMKjSOXp/6k9tHqm5BtI6icWPLmRFek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmEy9d/btsLMKjSOXp/6k9tHqm5BtI6icWPLmRFek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmEy9d/btsLMKjSOXp/6k9tHqm5BtI6icWPLmRFek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmEy9d%2FbtsLMKjSOXp%2F6k9tHqm5BtI6icWPLmRFek%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;1463&quot; height=&quot;542&quot; data-origin-width=&quot;1463&quot; data-origin-height=&quot;542&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEVsVE/btsLMI0IAEw/meiQuJSRkCpXTto5roXpJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEVsVE/btsLMI0IAEw/meiQuJSRkCpXTto5roXpJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEVsVE/btsLMI0IAEw/meiQuJSRkCpXTto5roXpJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEVsVE%2FbtsLMI0IAEw%2FmeiQuJSRkCpXTto5roXpJ0%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;571&quot; height=&quot;108&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;108&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;/p&gt;</description>
      <category>et al</category>
      <category>dracula</category>
      <category>oh-my-zsh</category>
      <category>powerlevel10k</category>
      <category>ubuntu</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/231</guid>
      <comments>https://operationcoding.tistory.com/231#entry231comment</comments>
      <pubDate>Thu, 9 Jan 2025 03:00:03 +0900</pubDate>
    </item>
    <item>
      <title>oh my posh를 vscode에 폰트 적용하기</title>
      <link>https://operationcoding.tistory.com/230</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 폰트 다운 받기&lt;/h3&gt;
&lt;pre id=&quot;code_1734168281549&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;oh-my-posh font install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TtmZg/btsLja32SWG/p1DBqHH2k3JZpEh2hysR3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TtmZg/btsLja32SWG/p1DBqHH2k3JZpEh2hysR3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TtmZg/btsLja32SWG/p1DBqHH2k3JZpEh2hysR3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTtmZg%2FbtsLja32SWG%2Fp1DBqHH2k3JZpEh2hysR3k%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;499&quot; height=&quot;387&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;387&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;h3 data-ke-size=&quot;size23&quot;&gt;2. setting.json 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cmd에서 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;ctrl+shift+,&lt;/span&gt; 를 입력하면 vscode에서 setting.json 파일이 열린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(powershell 7을 사용하는데, powershell7에서는 키가 안 먹어서, 기본 cmd 에서 ctrl+shift+,로 실행했다.)&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;아래와 같이 font에서 &lt;span style=&quot;background-color: #ffc9af;&quot;&gt;MesloLGM Nerd Fon&lt;/span&gt;t를 입력해주었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u7K1Y/btsLiDMxD0g/qi2ka3ibbIrYUYrgpwuR31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u7K1Y/btsLiDMxD0g/qi2ka3ibbIrYUYrgpwuR31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u7K1Y/btsLiDMxD0g/qi2ka3ibbIrYUYrgpwuR31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu7K1Y%2FbtsLiDMxD0g%2Fqi2ka3ibbIrYUYrgpwuR31%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;955&quot; height=&quot;602&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;602&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;h3 data-ke-size=&quot;size23&quot;&gt;3. vscode terminal 폰트 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;ctrl + ,&lt;/span&gt; 로 vscode settings을 연다. font family를 검색하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Debug &amp;gt; Console: Font Family&lt;/b&gt;와 &lt;b&gt;Terminal &amp;gt; Integrated: Font Family&lt;/b&gt;가 보인다. 각각에 아래 사진처럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt; MesloLGM Nerd Font&lt;/span&gt;를 입력해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1371&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wSAjE/btsLjLCAb8m/GI80IcoKlxCxcKzrXP7rQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wSAjE/btsLjLCAb8m/GI80IcoKlxCxcKzrXP7rQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wSAjE/btsLjLCAb8m/GI80IcoKlxCxcKzrXP7rQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwSAjE%2FbtsLjLCAb8m%2FGI80IcoKlxCxcKzrXP7rQK%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;1371&quot; height=&quot;613&quot; data-origin-width=&quot;1371&quot; data-origin-height=&quot;613&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;oh my posh의 dracula 테마가 vscode의 터미널에도 잘 적용되었다. 혹시 적용되지 않았다면 vscode를 껐다 켜보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K6sSO/btsLiCUpYoL/7sy3TKjYG3dNADF0XqdIq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K6sSO/btsLiCUpYoL/7sy3TKjYG3dNADF0XqdIq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K6sSO/btsLiCUpYoL/7sy3TKjYG3dNADF0XqdIq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK6sSO%2FbtsLiCUpYoL%2F7sy3TKjYG3dNADF0XqdIq0%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;1393&quot; height=&quot;172&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;172&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;</description>
      <category>et al</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/230</guid>
      <comments>https://operationcoding.tistory.com/230#entry230comment</comments>
      <pubDate>Sat, 14 Dec 2024 18:35:26 +0900</pubDate>
    </item>
    <item>
      <title>function wrappers와 decorator</title>
      <link>https://operationcoding.tistory.com/229</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;function wrappers&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를 감싸서 추가적인 기능을 더하거나, 함수의 동작을 변경하거나 확장하는 기법이다. 주로 &lt;b&gt;데코레이터&lt;/b&gt;(decorator)를 사용해 구현되며, 함수 호출 전후에 실행될 동작을 정의한다.&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;2. &lt;b&gt;decorator&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데코레이터는 Python에서 &lt;b&gt;기존 함수나 메서드의 동작을 변경하거나 확장하기 위해 사용되는 특별한 함수&lt;/b&gt;이다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데코레이터는 함수를 인수로 받아 그 함수를 감싸는 새로운 함수를 반환한다. 이 과정에서 기존 함수의 동작을 확장하거나 수정할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733168723362&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def my_wrapper(func):
    def wrapped_function(*args, **kwargs):
        print(&quot;Function is about to run!&quot;)
        result = func(*args, **kwargs)
        print(&quot;Function has finished!&quot;)
        return result
    return wrapped_function

@my_wrapper
def say_hello(name):
    print(f&quot;Hello, {name}!&quot;)

say_hello(&quot;Alice&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming 기초/Python</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/229</guid>
      <comments>https://operationcoding.tistory.com/229#entry229comment</comments>
      <pubDate>Tue, 3 Dec 2024 04:48:01 +0900</pubDate>
    </item>
    <item>
      <title>context manager란?</title>
      <link>https://operationcoding.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Context manager&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 리소스나 실행 컨텍스트를 설정하고, 작업이 끝난 후 자동으로 이를 정리(clean up)하는 방법을 제공하는 기능이다.&lt;/p&gt;
&lt;pre id=&quot;code_1733168252100&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from typing import Protocol
        
class CustomContextManager(Protocol):
    def __enter__(self):
        print(&quot;Entering the context&quot;)
        return self  # 필요한 리소스 반환 가능

    def __exit__(self, exc_type, exc_value, traceback):
        print(&quot;Exiting the context&quot;)
        return False  # 예외를 호출자로 전달

# 사용
with CustomContextManager() as manager:
    print(&quot;Inside the context&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Python에서 &lt;b&gt;프로토콜&lt;/b&gt;은 객체가 특정 동작을 수행하기 위해 따라야 하는 비공식적인 &quot;규약&quot;이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Context Manager 프로토콜은 __enter__와 __exit__ 메서드를 요구하며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이를 구현한 객체는 with 구문에서 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. with구문은 리소스를 자동으로 관리해준다는 측면에서 매우 유용하다.&lt;/p&gt;</description>
      <category>Programming 기초/Python</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/228</guid>
      <comments>https://operationcoding.tistory.com/228#entry228comment</comments>
      <pubDate>Tue, 3 Dec 2024 04:42:28 +0900</pubDate>
    </item>
    <item>
      <title>jetson orin nano - jetpack6 to jetpack5 다운그레이드</title>
      <link>https://operationcoding.tistory.com/227</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[background]&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;realsense L515의 pyrealsense 패키지를 설치하고자 했는데,&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;L515 제품에 경우 realsense 2.53.1버전까지만 지원이 된다. 하지만 pip의 pyrealsense2는 aarch64아키텍처를 2.54 이후부터만 지원하기에 깃허브로 직접 빌드해야하는 상황을 마주했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/IntelRealSense/librealsense/issues/13516&quot;&gt;https://github.com/IntelRealSense/librealsense/issues/13516&lt;/a&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;jetpack6에서 L515가 인식되지 않아서, 여기저기 이슈를 뒤적거리다보니 jetpack5로 다운그레이드 하면 해결될 것임을 알게 되었다. 그래서 jetpack6에서 jetpack5로 다운그레이드 하는 방법을 찾아봤는데, jetpack6를 설치했던 방법처럼 jetpack5의 플래시 파일을 usb로 담아서 설치하는 방법을 시도했었다. 그러나 usb 방법은 안 됐었다. 아마 펌웨어가 이미 업데이트 되어 있는 상황이라서 그럴 것이다(이전 포스팅 참고).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://operationcoding.tistory.com/217&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.08.05 - [SLAM] - jetson orin nano ubuntu 22.04 설치 (JetPack 6)&lt;/a&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;오늘 소개할 방법은 jetson oring nano를 host pc에 usb로 연결하여 jetpack5로 다운그레이드하는 방법이다. (참고로 jetpack 5는 기본 os가 ubuntu 20.04이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;목표: jetpack5로 다운그레이드&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;사전 준비물 : usb 키보드, usb마우스, DP케이블과 모니터,&amp;nbsp;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;C type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;usb&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;케이블(host pc에 연결하기 위해 필요),&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;host pc의 os - ubuntu20.04 (아마 host pc의 os가 리눅스여야만 했던 것 같다. 다행히도 나는 주로 사용하는 데스크톱의 os가 우분투였기에 문제 없었다. 윈도우에서는 아마 docker를 활용해야 할 것이다.)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. SDK Manager 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/sdk-manager&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://developer.nvidia.com/sdk-manager&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1732871481927&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;SDK Manager&quot; data-og-description=&quot;An end-to-end development environment setup solution for DRIVE, Jetson, and more. SDKs.&quot; data-og-host=&quot;developer.nvidia.com&quot; data-og-source-url=&quot;https://developer.nvidia.com/sdk-manager&quot; data-og-url=&quot;https://developer.nvidia.com/sdk-manager&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/boG0IH/hyXGJFfCFD/TdulU9H8x14tlpfpFq0gik/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xcmzg/hyXGB8io3B/YsrGKIDk23pG7ubBoTWkB1/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/sdk-manager&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.nvidia.com/sdk-manager&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/boG0IH/hyXGJFfCFD/TdulU9H8x14tlpfpFq0gik/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xcmzg/hyXGB8io3B/YsrGKIDk23pG7ubBoTWkB1/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;SDK Manager&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;An end-to-end development environment setup solution for DRIVE, Jetson, and more. SDKs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사이트에서 오른쪽 상단의 .deb ubuntu를 다운받는다. 회원가입해야지만 설치 가능하다. 회원가입 후 진행하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 절차는 다음 페이지를 참고 : &lt;a href=&quot;https://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;다운받은 debian 패키지를 본인의 ubuntu os 버전에 맞게 apt install 명령어로 설치하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1732871661762&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Ubuntu 16.04, 18.04, 20.04, or 22.04
sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. SDK Manager 실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 아래 명령어를 입력하면 아래 사진과 같이 sdk manager가 실행된다. (처음엔 로그인화면이 떴던 것 같다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트 공지는 무시한다.&lt;/p&gt;
&lt;pre id=&quot;code_1732871869104&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sdkmanager&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CJt1b/btsK2CMJqOE/gMGI8B7A839g5Pv5vzhy31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CJt1b/btsK2CMJqOE/gMGI8B7A839g5Pv5vzhy31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CJt1b/btsK2CMJqOE/gMGI8B7A839g5Pv5vzhy31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCJt1b%2FbtsK2CMJqOE%2FgMGI8B7A839g5Pv5vzhy31%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;1080&quot; height=&quot;896&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트 공지는 무시한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1019&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pIHlA/btsK225loHU/xihb0S3GHtoFObJtXiYXY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pIHlA/btsK225loHU/xihb0S3GHtoFObJtXiYXY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pIHlA/btsK225loHU/xihb0S3GHtoFObJtXiYXY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpIHlA%2FbtsK225loHU%2Fxihb0S3GHtoFObJtXiYXY0%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;1019&quot; height=&quot;722&quot; data-origin-width=&quot;1019&quot; data-origin-height=&quot;722&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Target hardware를 jetson orin nano로 선택해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sdk version도 jetpack 5.1.3을 선택해준다. (기억이 가물가물하지만, 5.1.4가 아닌 5.1.3을 선택한 이유도 L515에 경우 realsense viewer가 jetson 5.1.3까지만 지원해서이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. jetson orin nano를 host pc에 연결&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C type usb 케이블로 jetson orin nano를 host pc에 연결해준다. 제대로 인식된다면 Target Hardware 항목에서&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt; Could not detect a board&lt;/span&gt;라는 빨간색 문구가 &lt;span style=&quot;color: #409d00;&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;이후 Continue를 눌러 다음 스텝으로 넘어가면 아래와 같이 뜬다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CONTINUE TO STEP 03을 눌러 설치를 진행하면 먼저 host pc에 jetpack 5의 설치 파일들이 설치되고, jetson orin nano로 옮겨간다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHCTAu/btsK24oAhbT/9WaaOqWT1OwlPA6yjCStMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHCTAu/btsK24oAhbT/9WaaOqWT1OwlPA6yjCStMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHCTAu/btsK24oAhbT/9WaaOqWT1OwlPA6yjCStMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHCTAu%2FbtsK24oAhbT%2F9WaaOqWT1OwlPA6yjCStMK%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;1032&quot; height=&quot;726&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;726&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;b&gt;TARGET COMPONENTS&lt;/b&gt;의 &lt;b&gt;Jetson Linux&lt;/b&gt;가 설치되면 host pc와의 연결을 해제하지 않고, jetson orin nano에 모니터와 키보드, 마우스를 연결하여 os 설치를 마무리 지어준다. &lt;b&gt;이 모든 과정을 아래 영상을 보면서 따라하는 것을 추천한다. &lt;/b&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=FX2exKW_20E&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=FX2exKW_20E&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=FX2exKW_20E&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/coO7WO/hyXGNgAQ1Q/UfHu1CR65WkCSaOX7oxiY1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/cgLhW7/hyXGIl3yEv/InpD1UA0txUZMUFoB46IG0/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Nvidia Jetson Orin Nano Unboxing &amp;amp;  SSD Flash Install With SDK Manager&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/FX2exKW_20E&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;* Troubleshooting&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vmjGG/btsK1TPAKCk/KvOhNslpY7J27XiavKaLlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vmjGG/btsK1TPAKCk/KvOhNslpY7J27XiavKaLlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vmjGG/btsK1TPAKCk/KvOhNslpY7J27XiavKaLlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvmjGG%2FbtsK1TPAKCk%2FKvOhNslpY7J27XiavKaLlk%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;955&quot; height=&quot;477&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 설치를 시도할 때 너무 오래걸리길래 잠들었는데,&amp;nbsp;모니터를 연결해서 os 설치를 마무리 짓지 않아서 그런지, &lt;b&gt;TARGET COMPONENTS&lt;/b&gt;의 jetson SDK Componets부터 설치가 안 되었다. 2번째 시도 때는 알람을 맞춰놓고 확인했다. jetson SDK Componets 설치 전에 팝업이 떴는데, 영상을 참고해서 진행했더니 문제없이 잘 설치되었다.&lt;/p&gt;</description>
      <category>SLAM</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/227</guid>
      <comments>https://operationcoding.tistory.com/227#entry227comment</comments>
      <pubDate>Fri, 29 Nov 2024 18:55:30 +0900</pubDate>
    </item>
    <item>
      <title>[pytorch] grad 확인하는 방법</title>
      <link>https://operationcoding.tistory.com/225</link>
      <description>&lt;pre id=&quot;code_1728932218039&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for name, param in model.named_parameters():
    if param.grad is not None:
        print(f&quot;check grad, {name} grad: {param.grad}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈 layer 출력&lt;/p&gt;
&lt;pre id=&quot;code_1729008635118&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for name, layer in model.named_modules():
    print(name, layer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Framework/PyTorch</category>
      <author>코딩상륙작전</author>
      <guid isPermaLink="true">https://operationcoding.tistory.com/225</guid>
      <comments>https://operationcoding.tistory.com/225#entry225comment</comments>
      <pubDate>Tue, 15 Oct 2024 03:59:14 +0900</pubDate>
    </item>
  </channel>
</rss>