<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>오도원입니다.</title>
    <link>https://ohdowon064.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 14:58:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>오도원공육사</managingEditor>
    <image>
      <title>오도원입니다.</title>
      <url>https://tistory1.daumcdn.net/tistory/3604545/attach/85a4b3dd2cd34201b6689a75370ea291</url>
      <link>https://ohdowon064.tistory.com</link>
    </image>
    <item>
      <title>localhost랑 127.0.0.1이랑 똑같은거 아니야?</title>
      <link>https://ohdowon064.tistory.com/352</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;localhost와 127.0.0.1은 기능적으로 비슷해 보일 수 있지만, 웹 개발과 CORS(Cross-Origin Resource Sharing) 문제와 관련하여 다르게 취급될 수 있습니다. 둘 다 로컬 머신을 가리키지만, 하나는 도메인 이름(localhost)이고 다른 하나는 IP 주소(127.0.0.1)입니다. 이 차이 때문에 브라우저와 서버가 이 둘을 서로 다른 출처로 인식할 수 있으며, 이는 CORS 정책에 영향을 줄 수 있습니다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;CORS와 출처(Origin)&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;CORS 정책은 웹 보안의 핵심 요소로, 웹 애플리케이션에서 다른 출처의 리소스를 요청할 때 이를 제한합니다. &quot;출처&quot;는 프로토콜(http://, https://), 호스트(localhost, example.com), 포트(3000, 8080)의 조합으로 정의됩니다. 이 세 가지 중 하나라도 다르면, 브라우저는 두 URL을 다른 출처로 간주합니다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;왜 localhost와 127.0.0.1이 다르게 취급될까요?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;다른 호스트 이름&lt;/b&gt;: 브라우저는 localhost와 127.0.0.1을 다른 호스트로 취급합니다. 이는 CORS 정책에 따라 다른 출처로 간주될 수 있습니다. 예를 들어, localhost에서 서비스되는 페이지가 127.0.0.1의 백엔드 API에 요청을 보내면, 브라우저는 이를 교차 출처 요청으로 볼 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 정책&lt;/b&gt;: 일부 브라우저 또는 환경에서는 localhost와 127.0.0.1을 다르게 취급하는 추가적인 보안 정책이 있을 수 있습니다. 예를 들어, 개발 도구나 브라우저 확장 프로그램이 특정 출처에 대해 다른 정책을 적용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;해결 방법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일관된 출처 사용&lt;/b&gt;: 개발 중에는 프론트엔드와 백엔드 모두 동일한 호스트 이름(localhost 또는 127.0.0.1)을 사용하여 요청을 보내도록 합니다. 이렇게 하면 불필요한 출처 간 요청을 피할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CORS 설정 조정&lt;/b&gt;: 백엔드에서 CORS 미들웨어를 설정할 때, Access-Control-Allow-Origin 헤더에 여러 출처를 허용하도록 설정할 수 있습니다. 예를 들어, localhost와 127.0.0.1 모두를 허용하도록 구성할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프록시 사용&lt;/b&gt;: 개발 환경에서 프론트엔드 서버를 통해 백엔드 요청을 프록시하는 방법을 사용할 수 있습니다. 이 방법은 개발 도구(예: Webpack Dev Server, Create React App)에서 지원하는 경우가 많으며, 이를 통해 모든 요청이 같은 출처에서 오는 것처럼 처리될 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;localhost와 127.0.0.1 사이의 차이는 작아 보일 수 있지만, 웹 개발과 CORS 정책의 관점에서는 중요한 차이를 만들 수 있습니다. 따라서 개발 과정에서 이러한 차이를 인식하고 적절히 대응하는 것이 중요합니다. 안그러면 CORS는 127.0.0.1만 설정해놓고, localhost로 접속해서 왜 cors에 걸리냐고 삽질하는 경우가 있습니다.&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Development</category>
      <category>127.0.0.1</category>
      <category>CORS</category>
      <category>localhost</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/352</guid>
      <comments>https://ohdowon064.tistory.com/352#entry352comment</comments>
      <pubDate>Fri, 29 Mar 2024 17:37:29 +0900</pubDate>
    </item>
    <item>
      <title>postgresql sqlalchemy insert argument 32767개 사이즈 에러</title>
      <link>https://ohdowon064.tistory.com/351</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;(sqlalchemy.dialects.postgresql.asyncpg.InterfaceError) &amp;lt;class 'asyncpg.exceptions._base.InterfaceError'&amp;gt;: the number of query arguments cannot exceed 32767&lt;/code&gt;&lt;/pre&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;postgresql sqlalchemy insert 시 argument 사이즈가 32767개 넘으면 안됨&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Development</category>
      <category>PostgreSQL</category>
      <category>sqlaclehmy</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/351</guid>
      <comments>https://ohdowon064.tistory.com/351#entry351comment</comments>
      <pubDate>Thu, 28 Mar 2024 08:46:46 +0900</pubDate>
    </item>
    <item>
      <title>pre-commit. ruff initialize 실패 시</title>
      <link>https://ohdowon064.tistory.com/350</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ruff 버전 업데이트 이후 ruff initialize 실패 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pre-commit uninstall 하고 다시 pre-commit install로 다시 설치한다.&lt;/p&gt;</description>
      <category>Development/Git</category>
      <category>git</category>
      <category>github</category>
      <category>pre-commit</category>
      <category>ruff</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/350</guid>
      <comments>https://ohdowon064.tistory.com/350#entry350comment</comments>
      <pubDate>Tue, 19 Mar 2024 11:39:13 +0900</pubDate>
    </item>
    <item>
      <title>Golang. miniredis를 사용하여 redis 테스트하기</title>
      <link>https://ohdowon064.tistory.com/349</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis를 사용하는 함수를 테스트하기 위해서는 테스트 환경에서 실제 Redis 인스턴스 대신 테스트용 Redis 인스턴스(예: miniredis 라이브러리를 사용한 가상의 Redis 서버)에 연결하여 테스트를 진행할 수 있습니다. 이 방법은 외부 Redis 서버에 의존하지 않으므로, 테스트를 더 빠르고 신뢰성 있게 만듭니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 miniredis를 사용하여 Redis를 사용하는 간단한 함수를 테스트하는 Go 코드 예시입니다. 이 예제에서는 SetKey라는 함수가 Redis에 키와 값을 저장하는 기능을 수행한다고 가정합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, miniredis를 설치해야 합니다:&lt;/p&gt;
&lt;div style=&quot;background-color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;pre id=&quot;code_1710231993273&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;go get github.com/alicebob/miniredis/v2&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;테스트 코드 예시:&lt;/p&gt;
&lt;div style=&quot;background-color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;pre id=&quot;code_1710232028321&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package main

import (
	&quot;github.com/alicebob/miniredis/v2&quot;
	&quot;github.com/go-redis/redis/v8&quot;
	&quot;context&quot;
	&quot;testing&quot;
)

// Redis 클라이언트를 초기화하는 함수
func newRedisClient(addr string) *redis.Client {
	return redis.NewClient(&amp;amp;redis.Options{
		Addr: addr,
	})
}

// Redis에 키와 값을 저장하는 함수
func SetKey(client *redis.Client, key string, value string) error {
	ctx := context.Background()
	err := client.Set(ctx, key, value, 0).Err()
	return err
}

// SetKey 함수를 테스트하는 테스트 케이스
func TestSetKey(t *testing.T) {
	// miniredis 서버 시작
	s, err := miniredis.Run()
	if err != nil {
		t.Fatalf(&quot;miniredis 실행 실패: %s&quot;, err)
	}
	defer s.Close()

	// miniredis 주소를 사용하여 Redis 클라이언트 초기화
	client := newRedisClient(s.Addr())

	// 테스트 실행
	key := &quot;testKey&quot;
	value := &quot;hello&quot;
	err = SetKey(client, key, value)
	if err != nil {
		t.Errorf(&quot;SetKey 실패: %s&quot;, err)
	}

	// Redis에서 값 검증
	got, err := client.Get(context.Background(), key).Result()
	if err != nil {
		t.Errorf(&quot;키 가져오기 실패: %s&quot;, err)
	}
	if got != value {
		t.Errorf(&quot;값이 일치하지 않습니다. got %s; want %s&quot;, got, value)
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 코드는 miniredis를 사용하여 가상의 Redis 서버를 실행하고, SetKey 함수를 테스트합니다. 테스트는 SetKey 함수가 Redis에 값을 올바르게 저장하는지 확인하기 위해 Redis 클라이언트를 사용하여 저장된 값을 검색합니다.&lt;/p&gt;</description>
      <category>Development</category>
      <category>go</category>
      <category>Golang</category>
      <category>miniredis</category>
      <category>Redis</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/349</guid>
      <comments>https://ohdowon064.tistory.com/349#entry349comment</comments>
      <pubDate>Tue, 12 Mar 2024 17:27:40 +0900</pubDate>
    </item>
    <item>
      <title>Golang. go 환경 asdf로 관리하기</title>
      <link>https://ohdowon064.tistory.com/348</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h1&gt;기존에 설치된 go는 asdf와 충돌나니까 삭제&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; sudo rm -rf ~/go 또는 /usr/.local/go&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; which go로 어디 설치되어있는지 알 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #656d76; text-align: start;&quot;&gt;export PATH=&quot;$HOME/.asdf/bin:$HOME/.asdf/shims:$PATH&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #656d76; text-align: start;&quot;&gt;이거 zshrc나 bashrc에 추가&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;Install Go using asdf for Visual Studio Code on macOS&lt;/h1&gt;
&lt;a id=&quot;user-content-install-go-using-asdf-for-visual-studio-code-on-macos&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#install-go-using-asdf-for-visual-studio-code-on-macos&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;I had a lot of issues trying to install&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://go.dev/&quot;&gt;Golang&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on macOS using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://asdf-vm.com/&quot;&gt;asdf&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;package manager to develop on Visual Studio Code.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;So here's the steps needed to setup it properly:&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Open Terminal and install&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://asdf-vm.com/&quot;&gt;asdf&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with this command:&lt;/h3&gt;
&lt;a id=&quot;user-content-open-terminal-and-install-asdf-with-this-command&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#open-terminal-and-install-asdf-with-this-command&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You have to install&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;before running the installation command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;brew install asdf&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Don't forget to setup asdf on your shell by following&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://asdf-vm.com/guide/getting-started.html#_3-install-asdf&quot;&gt;asdf&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;documentation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;After it finishes, it's time to install&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://go.dev/&quot;&gt;Go&lt;/a&gt;:&lt;/h3&gt;
&lt;a id=&quot;user-content-after-it-finishes-its-time-to-install-go&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#after-it-finishes-its-time-to-install-go&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;asdf install go 1.20.2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Set the version that we just installed as Global:&lt;/h3&gt;
&lt;a id=&quot;user-content-set-the-version-that-we-just-installed-as-global&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#set-the-version-that-we-just-installed-as-global&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;asdf global golang 1.20.2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Create links to use the go command without any suffix on Terminal:&lt;/h3&gt;
&lt;a id=&quot;user-content-create-links-to-use-the-go-command-without-any-suffix-on-terminal&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#create-links-to-use-the-go-command-without-any-suffix-on-terminal&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;asdf reshim golang 1.20.2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Create Go package and source folder&lt;/h3&gt;
&lt;a id=&quot;user-content-create-go-package-and-source-folder&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#create-go-package-and-source-folder&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;maxima&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;mkdir -p ~/go/{bin,pkg,src}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If you get an error message, remove the folder with this command:&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;go&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;sudo rm -rf ~/go&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Re-run the command above to create package and source folders.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Note&lt;/b&gt;: You have to run it as&lt;span&gt;&amp;nbsp;&lt;/span&gt;sudo&lt;span&gt;&amp;nbsp;&lt;/span&gt;because Go changes this folder permissions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Add GOROOT to your shell config file:&lt;/h3&gt;
&lt;a id=&quot;user-content-add-goroot-to-your-shell-config-file&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#add-goroot-to-your-shell-config-file&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Add this line to your shell config file:&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ZSH&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;users: file is located at&lt;span&gt;&amp;nbsp;&lt;/span&gt;~/.zshrc&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Bash&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;users: file is located at&lt;span&gt;&amp;nbsp;&lt;/span&gt;~/.zshrc&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;export GOROOT=~/.asdf/installs/golang/1.20.2/go&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Reload your config file.&lt;/h3&gt;
&lt;a id=&quot;user-content-reload-your-config-file&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#reload-your-config-file&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If you're using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ZSH&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;run this command on Terminal:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If you're using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Bash&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;run this command on Terminal:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Add these lines to your Visual Studio Code User Settings (bash):&lt;/h3&gt;
&lt;a id=&quot;user-content-add-these-lines-to-your-visual-studio-code-user-settings-bash&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#add-these-lines-to-your-visual-studio-code-user-settings-bash&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Press&lt;span&gt;&amp;nbsp;&lt;/span&gt;Ctrl(Cmd) + Shift + P&lt;span&gt;&amp;nbsp;&lt;/span&gt;type&lt;span&gt;&amp;nbsp;&lt;/span&gt;User Settings bash&lt;span&gt;&amp;nbsp;&lt;/span&gt;and hit&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ENTER&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;On this window paste the code down below and don't forget to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Save&lt;/b&gt;:&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;pre class=&quot;1c&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;&quot;go.toolsGopath&quot;: &quot;~/go/&quot;,
&quot;go.gopath&quot;: &quot;~/go/&quot;,&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Install Go extension on Visual Studio Code&lt;/h3&gt;
&lt;a id=&quot;user-content-install-go-extension-on-visual-studio-code&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#install-go-extension-on-visual-studio-code&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Open this&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://marketplace.visualstudio.com/items?itemName=golang.Go&quot;&gt;URL&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and hit&lt;span&gt;&amp;nbsp;&lt;/span&gt;Install.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Install Go Tools&lt;/h3&gt;
&lt;a id=&quot;user-content-install-go-tools&quot; style=&quot;color: #000000;&quot; href=&quot;https://gist.github.com/felipemeamaral/7ef508e59a42c4fa0d0b74f219f726c1#install-go-tools&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Press&lt;span&gt;&amp;nbsp;&lt;/span&gt;Ctrl(Cmd) + Shift + P&lt;span&gt;&amp;nbsp;&lt;/span&gt;type&lt;span&gt;&amp;nbsp;&lt;/span&gt;go install tools&lt;span&gt;&amp;nbsp;&lt;/span&gt;and hit&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;ENTER&lt;/b&gt;. After you get a message like:&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;All tools successfully installed. You are ready to Go. :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Reopen Visual Studio Code and everything should be working flawlessly.&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Development</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/348</guid>
      <comments>https://ohdowon064.tistory.com/348#entry348comment</comments>
      <pubDate>Mon, 11 Mar 2024 15:26:22 +0900</pubDate>
    </item>
    <item>
      <title>Python. pip freeze 시, 버전명이 '@ file:///' 로 뜨는 문제</title>
      <link>https://ohdowon064.tistory.com/347</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;문제 상황&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 환경에서 사용하고 있는 라이브러리 패키지 정보들을 가져올 때 보통 아래처럼 `pip freeze` 명령어를 사용해 `requirements.txt` 파일로 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705903049422&quot; class=&quot;pgsql&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 아래와 같이 해당 환경에 설치된 패키지들의 정보가 `requirements.txt` 파일에 저장된다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705903049422&quot; class=&quot;angelscript&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;...&amp;gt;
clickhouse-driver==0.2.5
clickhouse-sqlalchemy==0.2.3
colorama @ file:///croot/colorama_1672386526460/work
colorlog==4.8.0
colour==0.1.5
commonmark @ file:///Users/ktietz/demo/mc3/conda-bld/commonmark_1630649545323/work
ConfigUpdater @ file:///croot/configupdater_1668698026863/work
confluent-kafka==2.1.1
connexion @ file:///opt/conda/conda-bld/connexion_1659800744294/work
cron-descriptor @ file:///opt/conda/conda-bld/cron-descriptor_1659858414281/work
croniter @ file:///croot/croniter_1666888073231/work
cryptography @ file:///croot/cryptography_1673298753778/work
debugpy==1.6.3
decorator==5.1.1
defusedxml==0.7.1
&amp;lt;...&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기서 문제가 되는 부분은 해당 패키지 버전명이 `@ file://~~ `로 떠서 `requirements.txt` 을 이용해 해당 환경을 재구현할 수 없는 점이다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; 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;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;문제 원인&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;`pip` 패키지 19.1버전부터 버전명을 @ ~~로 명명하는 방법이 추가되었다고 한다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이는 패키지가 아래처럼 특정 깃 레포 등에서 추가될 때 해당 정보를 저장하는데 유용하다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705903049423&quot; class=&quot;vim&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;package_name&amp;gt; @ git+https://githost/&amp;lt;repo&amp;gt;.git@&amp;lt;commit_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 버전명이 file://&amp;lt;URL&amp;gt; 과 같이 로컬폴더로 지정된 경우는 해당 패키지 정보를&amp;nbsp; 로컬환경이 아닌 이상 재구축하기 힘들다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; 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;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;해결 방법&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같이 format 옵션을 줘 해결할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1705903049423&quot; class=&quot;applescript&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;pip list --format=freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 명령어로 `requirements.txt`를 만들면 아래와 같이 버전명이 정상적으로 출력된다.&lt;/p&gt;
&lt;pre id=&quot;code_1705903049424&quot; class=&quot;routeros&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;...&amp;gt;
clickhouse-driver==0.2.5
clickhouse-sqlalchemy==0.2.3
colorama==0.4.6
colorlog==4.8.0
colour==0.1.5
commonmark==0.9.1
ConfigUpdater==3.1.1
confluent-kafka==2.1.1
connexion==2.14.0
cron-descriptor==1.2.24
croniter==1.3.7
cryptography==38.0.4
debugpy==1.6.3
decorator==5.1.1
defusedxml==0.7.1
&amp;lt;...&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; 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;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;Reference&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;a style=&quot;color: #3d62ce;&quot; href=&quot;https://stackoverflow.com/questions/62586878/why-does-the-pip-requirements-file-contain-file-instead-of-version-number/62589814#62589814&quot;&gt;Why&amp;nbsp;does&amp;nbsp;the&amp;nbsp;pip&amp;nbsp;requirements&amp;nbsp;file&amp;nbsp;contain&amp;nbsp;&quot;@file&quot;&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;version&amp;nbsp;number?&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;a style=&quot;color: #3d62ce;&quot; href=&quot;https://stackoverflow.com/questions/62863020/pip-freeze-generating-file-on-conda-environment&quot;&gt;Pip&amp;nbsp;freeze&amp;nbsp;generating&amp;nbsp;'@&amp;nbsp;file:///'&amp;nbsp;on&amp;nbsp;conda&amp;nbsp;environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/Python</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/347</guid>
      <comments>https://ohdowon064.tistory.com/347#entry347comment</comments>
      <pubDate>Mon, 22 Jan 2024 14:57:44 +0900</pubDate>
    </item>
    <item>
      <title>conda 로 pymol, openbabel 설치시 주의사항</title>
      <link>https://ohdowon064.tistory.com/346</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;pymol-open-source=2.5, openbabel=3.1.1 기준입니다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;conda를 이용해서 이들을 설치할 때 순서를 잘 선택해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705560218006&quot; class=&quot;sql&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;conda install -c conda-forge openbabel
conda install -c conda-forge pymol-open-source&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 순서로 설치 시... conda 사용 중에 매우 보고 싶지 않은 다음과 같은 것이 출력됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Collecting&amp;nbsp;package&amp;nbsp;metadata&amp;nbsp;(current_repodata.json):&amp;nbsp;done&lt;br /&gt;Solving&amp;nbsp;environment:&amp;nbsp;failed&amp;nbsp;with&amp;nbsp;initial&amp;nbsp;frozen&amp;nbsp;solve.&amp;nbsp;Retrying&amp;nbsp;with&amp;nbsp;flexible&amp;nbsp;solve.&lt;br /&gt;Solving&amp;nbsp;environment:&amp;nbsp;failed&amp;nbsp;with&amp;nbsp;repodata&amp;nbsp;from&amp;nbsp;current_repodata.json,&amp;nbsp;will&amp;nbsp;retry&amp;nbsp;with&amp;nbsp;next&amp;nbsp;repodata&amp;nbsp;source.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ResolvePackageNotFound:&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;python=3.1&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705560218006&quot; class=&quot;sql&quot; style=&quot;background-color: #000000; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;conda install -c conda-forge pymol-open-source
conda install -c conda-forge openbabel&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Collecting&amp;nbsp;package&amp;nbsp;metadata&amp;nbsp;(current_repodata.json):&amp;nbsp;done&lt;br /&gt;Solving&amp;nbsp;environment:&amp;nbsp;done&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 순서대로 설치하면 정상적으로 설치가 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이유는 모르겠네요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;혹시나 pymol 설치하다 에러가 나면 openbabel 이 먼저 설치되어있나 확인해보세요.&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Python</category>
      <category>conda</category>
      <category>openbabel</category>
      <category>PyMOL</category>
      <category>python</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/346</guid>
      <comments>https://ohdowon064.tistory.com/346#entry346comment</comments>
      <pubDate>Thu, 18 Jan 2024 15:44:10 +0900</pubDate>
    </item>
    <item>
      <title>Python. poetry with requirements.txt</title>
      <link>https://ohdowon064.tistory.com/345</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h1 id=&quot;requirementstxt&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;requirements.txt&lt;/h1&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;requirements.txt는 파이썬 프로젝트에서 사용하는 외부 라이브러리와&lt;br /&gt;해당 라이브러리의 버전 정보를 명시적으로 작성하는 파일입니다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JS의 package.json과 같은 녀석&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;예시&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;예시&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;numpy==1.20.2
pandas==1.2.3
matplotlib==3.4.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;사용-방법&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;사용 방법&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;pip으로 패키지들을 설치하고 나서&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;pip freeze &amp;gt; requirements.txt&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 사용하면 작성이 된다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JS에서 모듈 설치하면 자동으로 명시가 되는데 이걸 수동으로한다.&lt;br /&gt;심지어&lt;span&gt;&amp;nbsp;&lt;/span&gt;txt&lt;span&gt;&amp;nbsp;&lt;/span&gt;확장자다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;s&gt;역하다&lt;/s&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레포지토리 구성할 때&lt;span&gt;&amp;nbsp;&lt;/span&gt;pip install -r requirements.txt로 설치&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;poetry&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;poetry&lt;/h1&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;pip install을 통해 의존성을 설치했지만&lt;br /&gt;패키지 관리가 수동이라니.. 너무 불편하다&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;poetry라고 Node의 npm과 같은 패키지 매니저이다.&lt;br /&gt;사용방법도 비슷하다.&lt;br /&gt;해당 툴을 사용해서 패키지들을 설치를하면 lock 파일에 의존성을 관리해준다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;poetry init&lt;/li&gt;
&lt;li&gt;poetry add 모듈이름&lt;/li&gt;
&lt;li&gt;poetry install&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;마이그레이션&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;마이그레이션&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 requirements.txt에서 poetry&lt;span&gt;&amp;nbsp;&lt;/span&gt;toml파일로 이전을 했다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;cat requirements.txt | xargs poetry add&lt;/p&gt;
&lt;h3 id=&quot;에러-1&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;에러 1&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;wsl을 사용하여 위 명령어를 사용하니&lt;br /&gt;자꾸&lt;span&gt;&amp;nbsp;&lt;/span&gt;WARNING: a NUL character occurred in the input.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;윈도우 환경인데 txt 파일이&lt;span&gt;&amp;nbsp;&lt;/span&gt;CRLF이고&lt;span&gt;&amp;nbsp;&lt;/span&gt;UTF-16으로 인코딩 되어있었다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LF, UTF-8로 수정&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;에러-2&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;에러 2&lt;/h3&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;The current project's Python requirement (&amp;gt;=3.10,&amp;lt;4.0) is not compatible with some of the required packages Python requirement:
  - scipy requires Python &amp;lt;3.12,&amp;gt;=3.8, so it will not be satisfied for Python &amp;gt;=3.12,&amp;lt;4.0

Because u2net-test depends on scipy (1.10.1) which requires Python &amp;lt;3.12,&amp;gt;=3.8, version solving failed.

  &amp;bull; Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties

    For scipy, a possible solution would be to set the `python` property to &quot;&amp;gt;=3.10,&amp;lt;3.12&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이전 중인 패키지 중 호환성 문제 때문에 발생 한 것이다.&lt;br /&gt;버전 범위를 명시해주자.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;[tool.poetry.dependencies]
python = &quot;&amp;gt;=3.8,&amp;lt;3.12&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;설치&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;설치&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이전이 완료되었으면 poetry install을 사용하면 된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;poetry install 명령어는 프로젝트에 대한 의존성을 설치하는 것이지만, 의존성을 프로젝트의 루트 디렉토리에 직접 설치하지는 않는다.&lt;br /&gt;대신 Poetry는 가상 환경을 생성하여 프로젝트 의존성을 격리된 환경에 설치합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 가상 환경은 기본적으로 시스템 전역 가상 환경 디렉토리에 생성되며, 프로젝트 루트 디렉토리 외부에 위치합니다. 가상 환경의 위치는 설정에 따라 달라질 수 있습니다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상 환경의 위치를 확인하려면 다음 명령어를 실행:&lt;br /&gt;poetry env info --path&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 명령어는 현재 프로젝트의 가상 환경 경로를 출력합니다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 루트 디렉토리에 가상 환경을 생성하려면 다음 명령어로 Poetry를 구성&lt;br /&gt;poetry config virtualenvs.in-project true&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 설정하면 프로젝트 루트 디렉토리에 .venv라는 이름의 가상 환경 폴더가 생성됩니다. 이 설정은 전역적으로 적용되므로, 이후에 생성되는 모든 프로젝트에서 이 설정을 사용한다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #212529; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 프로젝트에 대해 개별적으로 설정하려면 poetry.toml 파일에 다음 구성을 추가&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;[tool.poetry.virtualenvs]
in-project = true&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 구성을 사용하면 현재 프로젝트에만 적용되며, 다른 프로젝트에는 영향을 미치지 않는다.&lt;/p&gt;</description>
      <category>Development/Python</category>
      <category>pip</category>
      <category>poetry</category>
      <category>python</category>
      <category>requirements</category>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/345</guid>
      <comments>https://ohdowon064.tistory.com/345#entry345comment</comments>
      <pubDate>Thu, 18 Jan 2024 10:06:01 +0900</pubDate>
    </item>
    <item>
      <title>Golang 기본 문법</title>
      <link>https://ohdowon064.tistory.com/344</link>
      <description>Golang's basic grammar rules include syntax, elements such as identifiers, keywords, operators, and literals, as well as rules for constants, variables, types, arrays, slices, structs, pointers, functions, interfaces, maps, channels, assignability, representability, method sets, blocks, declarations, and scope. It also covers topics such as type inference, operator precedence, arithmetic and comparison operators, conversions between types, statements, initialization process, built-in functions, and the use of the error interface and package unsafe.</description>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/344</guid>
      <comments>https://ohdowon064.tistory.com/344#entry344comment</comments>
      <pubDate>Sun, 24 Dec 2023 12:13:38 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript 기본 문법</title>
      <link>https://ohdowon064.tistory.com/343</link>
      <description>JavaScript's basic grammar rules include variable declarations, data types, literals, and syntax borrowed from other languages. It covers topics such as variable scope, hoisting, constants, type conversion, and various types of literals. The text also discusses the use of comments and explicit declaration for code clarity.</description>
      <author>오도원공육사</author>
      <guid isPermaLink="true">https://ohdowon064.tistory.com/343</guid>
      <comments>https://ohdowon064.tistory.com/343#entry343comment</comments>
      <pubDate>Sun, 24 Dec 2023 12:12:58 +0900</pubDate>
    </item>
  </channel>
</rss>