우연히 보게된 노마드 코더(Nomad Coders)의 유튜브.

파이썬 코드만가지고 JS, React, NextJS 인터랙티브 웹앱을 만들어주는 프레임워크가 나타났단다.

 

 

최근 정말 많은 주목을 받고 있는 오픈소스 프로젝트인 것은 분명한 것 같다.

 

https://pynecone.io/

 

Pynecone: The easiest way to build web apps.

Completely customizable. All Pynecone components are fully customizable. Change the colors, fonts, and styles to match your project. Styling guide ->

pynecone.io

 

발음이 같은 'pinecone'을 상징하는 솔방울을 로고로 사용하고 있다 ^^

 

공식 웹사이트도 Pynecone을 사용해서 만들었다고 한다.

왠지 Unix is Not Unix 같은 느낌인데!? 아닌가?! ^^

 

 

Pynecone은 파이썬으로 작성한 코드를

React/NextJS로 컴파일을 하는 방식이기에 성능이 뛰어나며 그래서 node를 필요로 하고 있다.

 

보다 더 나은 성능을 위해 node를 bun으로 교체하는 작업을 하고 있지만

아직 100% 호환성을 보장하지 못하기에 당분간은 node를 계속 필요로 할 것이라고 한다.

 

 

서두가 길었다.

이제 직접 한 번 사용해보자.

 

 

이하 과정은 다음 링크의 내용을 따라갔다.

- https://pynecone.io/docs/getting-started/installation

 

 

0. PoC Environment

  - 이하 과정을 진행한 환경은 Ubuntu 20.04 64bit Desktop 이다.

 

 

2. Prerequisites

  - Python 3.7+

  - NodeJS 12.22.0+

 

  ① Python 여러 버전을 관리할 수 있는 pyenv 기반으로 설치해보자.

    . https://www.whatwant.com/entry/pyenv

    . 설치한 버전은 다음과 같이 했다.

      - v3.8.16

 

  ② node 설치도 여러 버전을 관리할 수 있는 nvm 기반으로 설치를 진행해보자.

    . https://www.whatwant.com/entry/npm

    . 설치한 버전은 다음과 같이 했다.

      - v18.15.0   (Latest LTS: Hydrogen)

 

 

3. Virtual Environment

  - Optional 이라지만, 사실 필수이지 않을까 싶다.

❯ cd ./workdir

❯ python -m venv .venv

source .venv/bin/activate

 

 

4. Installing

  - 이제 pynecone 설치하면 된다!

 pip install pynecone

 

 

5. Create a Project

  - 일단 프로젝트 생성하는 방법부터 알아보자.

 mkdir my_app_name

 cd my_app_name

 pc init

 

 

6. Run the App

  - 일단 한 번 띄워보자.

 pc run

 

  - 브라우저로 확인해보자.

 

 

 

7. Edit

  - 본문을 살짝 살펴보자.

❯ nano my_app_name/my_app_name.py

  - 눈꼽만큼 변경해보자.

"""Welcome to Pynecone! This file outlines the steps to create a basic app."""
from pcconfig import config

import pynecone as pc

docs_url = "https://pynecone.io/docs/getting-started/introduction"
filename = f"{config.app_name}/{config.app_name}.py"


class State(pc.State):
    """The app state."""

    pass


def index() -> pc.Component:
    return pc.center(
        pc.vstack(
            pc.heading("Welcome to WHATWANT!", font_size="2em"),
            pc.box("Get started by editing ", pc.code(filename, font_size="1em")),
            pc.link(
                "Check out our docs!",
                href=docs_url,
                border="0.1em solid",
                padding="0.5em",
                border_radius="0.5em",
                _hover={
                    "color": "rgb(107,99,246)",
                },
            ),
            spacing="1.5em",
            font_size="2em",
        ),
        padding_top="10%",
    )


# Add state and page to the app.
app = pc.App(state=State)
app.add_page(index)
app.compile()

 

  - 포트도 변경하고, debug log도 찍어보자.

❯ pc run --port 8282 --loglevel debug

 

  - http://localhost:8282/

 

 

8. Fast Refresh

  - Pynecone은 실시간으로 변경 사항이 반영된다.

  - 웹브라우저가 띄워져 있는 상황에서, 다른 터미널로 파일을 수정해보자.

❯ nano my_app_name/my_app_name.py

 

  - 파일을 수정한 뒤, 저장을 하면 조금 있다가 브라우저에 자동으로 페이지 내용이 변경된다.

 

 

 

일단 여기까지 살짝 맛만 봤고

시간이 나면 다음 단계로 넘어가보겠다. (시간이 날까?! ^^)

 

반응형

 

AI로 그린 그림이 엄청나게 유행이다.

카툰과 같은 그림 뿐만 아니라 이제는 사진과 같은 실사 느낌의 그림까지 나오고 있다.

 

best-inventions-2022-OpenAI-DALL-E-2

 

AI 그림이라는 것은

자연어 서술로부터 이미지를 생성하는 Machine-Learning 모델로 만들어진 것을 의미하는데,

 

요즘 ChatGPT 라는 것으로 이제는 누구나 알게 된 OpenAI라는 곳에서 개발(?)한

DALL·E 2로 인해서 AI로 그린 그림이 유명해지게 되었고

 

2022년 콜로라도의 미술대회에서 1등을 차지한 그림이

Midjourney 라는 ML 모델로 만들어진 것이라는 것이 밝혀지면서 엄청난 논란이 되었었다.

 

Midjourney

 

이렇게 AI로 그림 그리는 것이 엄청난 유행을 하고 있는데,

명색이 IT로 밥 값을 벌고 있는 입장에서 직접 한 번 다뤄봐야 하지 않을까?!

 

 

 

DALL·E 2, Midjourney 와 같은 모델들은 모두 상용으로 서비스 되고 있다.

하지만, 우리가 원하는 것은?! 오픈소스!!!

 

 

https://github.com/CompVis/stable-diffusion

 

Stable-Diffusion

 

Stable-Diffusion은 2022년 8월에

Stability AI에서 오픈소스 라이선스로 배포한 text-to-image 인공지능 모델이다.

 

오픈소스이지만 상용 모델 못지 않은 성능을 보여주며

더더군다나 비교적 낮은 컴퓨팅 파워 환경에서도 구동이 가능하다 !!!

 

 

그리고, 오픈소스 프로젝트로 공개되었다보니

이를 기반으로 파생된 정말 유용한 프로젝트들이 정말 많다.

 

 

https://github.com/AUTOMATIC1111/stable-diffusion-webui/

 

Stable Diffusion web UI

 

CLI 방식이 아니라 웹 기반의 Interface를 이용해

Stable Diffusion 모델을 편리하게 사용할 수 있도록 만들어 주는 프로젝트이다.

 

그리고 여기에 덧붙여서

Colab에서 구동 가능하도록 해주는 프로젝트도 있다!!!

 

 

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Online-Services

 

Online Services - Colab

 

위 목록 중에서 camenduru를 선택해보자.

 

https://github.com/camenduru/stable-diffusion-webui-colab

 

 

https://github.com/camenduru/stable-diffusion-webui-colab

 

Jupyter Notebook 형태로 제공해주고 있는데,

어떤 것을 선택하면 좋을지는 README 를 참고하면 된다.

 

colab

 

카툰 스타일 보다는 실사와 같은 것들을 해보고 싶어서 "dreamlike-photoreal-2.0"을 선택해 보았다.

Huggingface에 있는 설명들을 참고하자.

 

https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0

 

음... 뭔지는 잘 모르겠지만

Stable-Diffusion 1.5 버전을 기반으로 해서 만들어진 사진과 같은 이미지를 생성하는 모델이란다.

 

이런 것들을 만들 수 있단다.

 

example

 

그러면, 원하는 모델에 있는 "Open in Colab" 아이콘을 클릭하자.

 

link

 

Colab에서 열리고 나면, "Drive에 사본 저장" 메뉴를 통해 복사해놓자.

 

Drive에 사본 저장

 

상단에 "노트북 설정"을 할 수 있다고 나오는데, 링크를 클릭하자.

 

비공개 출력

 

설정창이 열렸으니

'하드웨어 가속기' 부분에서 GPU를 선택하고

하단에 있는 체크 박스 부분도 설정 해제해놓자.

 

셀 출력

 

위 설정창은 "런타임 유형 변경" 메뉴로도 설정 확인 및 변경 가능하다.

 

런타임 유형 변경

 

자~ 이제 준비는 다 되었다.

런타임 연결(실행)하자.

 

연결중

 

그리고 코드를 실행하면 된다.

 

실행

 

엄청 오래걸리니 (5분~10분 사이) 그동안 유용한 사이트 하나 가입하자.

 

https://civitai.com/

 

https://civitai.com/

 

AI 그림들을 자랑하고 공유하는 곳이다.

 

Tifa

 

따라해보고 싶은 그림이 있으면 그림 오른쪽 하단에 있는 ⓘ 부분을 눌러보면 된다.

 

prompt

 

그러면, 어떤 Prompt, Parameter로 만들었는지 정보를 얻을 수 있다.

 

text-to-image 모델에서 그림을 그리기 위해 사용한 text를 "prompt"라고 지칭한다.

원하지 않는 내용에 대한 설명(text)는 "negative prompt"라고 한다.

 

또한, 원하는 그림에 대한 설명 외에

어떤 sampler인지, Random 함수에 대한 Seed 값이라던지 하는 온갖 설정값들 정보도 중요하다.

 

 

이쯤 했으면 Colab 실행 완료되었을테니, 계속 이어서 진행해보면 ...

 

URL

 

잘 실행이 되었으면, 위와 같은 URL 정보가 보일 것이다.

가운데에 있는 "*.gradio.app" URL을 선택해서 클릭하면 창이 뜰 것이다.

 

Run

 

와우!!!

나만의 AI 그림 생성기가 나타났다 !!!

 

 

어떻게 사용하면 되는지도 알아볼 겸해서, 남들이 만들어 놓은 것을 참조해보자.

CIVITAI에서 우리가 선택한 "dreamlike photoreal 2.0"을 검색해보자.

 

dreamlike photoreal 2.0을 이용해서 만들어진 그림을 찾기 위함이다.

 

Dreamlike Photoreal 2.0

 

찾은 다음에 마음에 드는 이미지 하나 선택해서 ⓘ를 클릭해서 정보를 확인해보자.

 

sample

 

Prompt, Negative prompt를 비롯해서 Sampling Steps, Sampling method, CFG Scale, Seed 값 등도 모두 넣어주자.

 

generate

우와~~~!!! 나온다 !!!

 

당연하게도 완전히 똑같은 그림이 나오지는 않지만, 얼추 비슷한 이미지가 나온다.

 

 

 

이제, 시간과 정신의 방으로 갈 시간이다.

다양하게 이것 저것 바꿔보면서 만들다보면 ... 날짜가 바뀌어 있을 것이다 ^^

 

반응형

제가 정말 정말 좋아하는 번역자이자 작가이신 박해선님이 내놓은 또 하나의 역작이 나왔다.

 

"혼자 공부하는 데이터 분석 with 파이썬"

 

 

요즘은 딥러닝 모델에 대해서 공부하는 것 보다

데이터 분석하는 것이 더 많이 유행하고 있는 듯 하다.

 

이런 분위기에 정말 딱 맞게 나온 책이 아닌가 싶다.

 

우리 회사에서도 DS 인증 프로그램을... @.@

 

 

박해선님은 번역하신 책이든, 직접 작성하신 책이든 항상 정성이 가득하다.

 

실습 내용도 하나 하나 모두 직접 업데이트 해주시고

Youtube로 강의도 제공하여 주시고, 심지어 오픈채팅까지도 운영해주신다니...

 

 

무려 13개의 강의 동영상을 제공해주신다!

- https://www.youtube.com/playlist?list=PLVsNizTWUw7FGzSRCkQrPEEe-ljVXgS7k 

 

 

직접 물어보고 대답을 들을 수 있는 카카오 오픈채팅 !!!

- https://open.kakao.com/o/gBF5aQ1c

 

 

1월 2일, 새해가 시작하자마자 1쇄 발행을 하다니... 너무 한 것 아닌가?! ㅋㅋㅋ

 

 

박해선님은 항상 도식화를 좋아하시는 것 같다 ^^

 

 

딥러닝 모델링에 대해서 공부하려면 수학이 발목을 잡는 것 처럼

데이터 분석에 대해서 공부하려면 파이썬이 발목을 잡는다.

 

발목 잡히지 않으려면 시간을 들여서 제대로 파이썬을 공부해놓는 것이 좋다.

 

 

도식화, 로드맵을 정말 좋아하시는 박해선님! ^^

 

 

오해하면 안된다.

"이 도서가 얼마나 인기가 좋을까요?"는 정말 이 책에 대한 것이 아니라

데이터 분석의 첫 번째 예제일 뿐이다 ^^

 

 

박해선님은 그림도 잘 그리신다~ ^^

 

 

ML/DL

머신러닝과 딥러닝이 막 알려지면서 사람들이 공부를 시작할 때에는

DS(Data Science, 데이터 과학)에 대한 영역이 대중적으로 정착되지 않았었다.

 

지금은 Data Scientist, Data Engineer 직종이 정착된 것 같다.

외부에서 만나는 많은 분들이 "저는 OO에서 데이터 사이언스로 일하고 있어요"라고 하고 있다는...

 

 

책 구성을 보면 정말 정성 가득함이 엿보인다.

 

 

이 책을 보다가 새롭게 배운 지식

 

"Data Analytics(데이터 분석) vs. Data Science(데이터 과학)"

 

 

음 ... 이 정도면 ... Full Stack ... 만능 아닌가 ?!

 

 

Summary 까지 꼼꼼하게 되어 있다.

 

 

혼자서, 또는 다같이 공부할 수 있도록 "확인 문제"도 제공해준다.

주관식은 너무 어렵다는...

 

 

직접 실습을 해볼 수 있도록 GitHub 저장소도 제공해주고, 설명도 친절히 해준다.

 

 

링크까지 꼼꼼히 제공해주는 박해선님!!!

 

 

리뷰 때문에 살펴보다가 알게된 정말 꿀팁 !!!

 

정부 주도로 진행한 데이터들일텐데,

요즘 시대에 아직도 Euc-KR 형식으로 만들어진 데이터 볼 때마다 정말 ... 에휴 ... 할말하않 !!!

 

 

 

이 책은 뭐 두말할 필요 없이 무조건 추천한다.

 

박해선님이 지은 책이라는 것 만으로도 추천하지만,

책 내용 및 책 외부적으로 제공되는 컨텐츠 모두 정말 정성 가득한 책이다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

 

GitHub Pages 기능을 이용한 개인 포트폴리오 웹서비스를 해보려고

이것 저것 알아보던 중 몇 가지 템플릿을 찾았는데

 

사용법에 등장한 'npm'

 

"응?! npm을 설치해야겠구만!"

 

 

'npm'의 약자는 'Node Package Manager'이다.

 

즉, node.js 기반으로 미리 잘 만들어진 패키지들을 사용하고 싶을 때

의존성 있는 패키지들을 설치하려면 npm을 이용하면 된다.

 

 

다른 프로그래밍 언어들도 각자 나름의 패키지 매니저가 있다.

Language Package Manager
Ruby Gem
PHP Composer
C# NuGet
Java Jpm
Python pip

 

다시 npm 이야기로 돌아와서

node와 npm이 짝궁이라면 node만 설치해도 npm이 같이 설치가 된다는 말인데,

node를 설치하려고 봤더니 정말 다양한 버전의 node가 있다.

 

 

상황에 따라 여러 버전의 node를 사용하게 된다는 것인데,

하나의 시스템에서 여러 버전의 node를 사용하려면 귀차니즘이 발동할 수 있다는...

 

 

그래서, 여기저기 기웃거리다가 찾게된 'nvm'

 

'nvm'의 약자는 'Node Version Manager'이다.

 

 

 

nvm 저장소 주소는 다음과 같다.

  - https://github.com/nvm-sh/nvm

 

nvm

 

 

'nvm' 설치 방법은 다양하게 제공되고 있고

일반적으로는 'curl' 명령어를 이용해서 install script를 실행하는 방식을 가이드하고 있다.

 

하지만, 여기에서는 개인적인 취향으로

깔끔하게 git clone 받아서 직접 설치하는 방법으로 결정했다.

  - https://github.com/nvm-sh/nvm#git-install

 

 

이하 과정은 Ubuntu 20.04 LTS 환경에서 진행했다.

 

❯ git clone https://github.com/nvm-sh/nvm.git ~/.nvm

❯ cd ~/.nvm

git switch -c v0.39.3 tags/v0.39.3

 

개인적으로 zsh을 사용하고 있으므로 이를 기준으로 해서 후속 작업 진행했지만,

bash를 사용하는 경우에도 동일한 과정이다.

 

❯ nano ~/.zshrc

 

...
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

 

위의 내용을 추가해주고, 터미널 재시작하면 'nvm' 명령어를 먹는다.

 

❯ nvm --version
0.39.3

 

nvm에서 설치 가능한 node version 목록을 확인하고 싶다면 다음 명령어를 사용하면 된다.

 

❯ nvm ls-remote

 

최신 버전의 node를 설치하려면 다음 명령어를 통해 가능하다.

 

❯ nvm install node
Downloading and installing node v19.3.0...
Downloading https://nodejs.org/dist/v19.3.0/node-v19.3.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v19.3.0 (npm v9.2.0)
Creating default alias: default -> node (-> v19.3.0)

❯ node --version
v19.3.0

 

특정 버전의 node는 다음과 같이 설치할 수 있다.

 

❯ nvm install 14.7.0
Downloading and installing node v14.7.0...
Downloading https://nodejs.org/dist/v14.7.0/node-v14.7.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

 

앞에서 설치한 버전으로 변경하고자 한다면 다음과 같이 할 수 있다.

 

❯ nvm use node 19.3.0
Now using node v19.3.0 (npm v9.2.0)

❯ node --version
v19.3.0

 

어디에 설치되어 있는지(실행 파일의 위치를) 확인하고 싶다면 다음과 같이 하면 된다.

 

nvm which 19.3.0
/home/chani22/.nvm/versions/node/v19.3.0/bin/node

 

어?! 여기서 잠깐 !!!

우리가 지금 여기까지 진행한 이유는 npm 설치를 하려던 것이다. npm을 확인해보자.

 

❯ node --version
v19.3.0

❯ npm --version
9.2.0

❯ nvm use node 14.7.0
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

❯ npm --version
6.14.7

 

중간에 node 버전을 변경해봤더니, npm도 버전이 바뀌었다는 것을 볼 수 있었다.

 

 

여기까지 해서 마무리~!!!

반응형

'Programming > Web' 카테고리의 다른 글

백엔드 프레임워크 - KeystoneJS  (1) 2023.07.13

 

최근 회사에서 Data Science 교육을 받고 있는데,

마침 그에 알맞는 책을 리뷰하게 되었다.

 

표지

 

Machine-Learning 공부할 때에도 만났었고

Data-Mining 공부할 때에도 만났었는데,

이번에 Data-Science를 공부할 때 또 만났다.

 

징그러운 베이지안 !!!

 

2판

 

초판(1판)이 2014년도에 출간 되었었는데,

2판이 8년만에 2022년 6월에 출간되었다.

 

우와~ 역사가 오래된 책이네...

그렇다는 것은, 베이지안 공부가 필요한 사람이 여전히 꾸준히 많다는 것이겠지.

 

원서의 경우에도 1판은 2013년도에 출간되었고,

2판은 2011년에 출간되었다.

 

대상

 

이 책으로 공부하기 위해서 필요한 것은 오직 "파이썬" !!!

 

목차

 

책 제목에 "베이지안"이 써있다고 해서

"베이지안"에 대해서만 설명하는 책은 아니다.

 

확률, 분포, 포아송, 의사결정분석, 로지스틱 회귀 ...

필요한 것들 다~ 있다 ^^

 

본문

 

친절한 설명과 함께 실행 결과도 예쁘게 보여준다.

 

요약

 

뒷 부분에는 친절하게 요약까지 해주고 있다.

 

연습문제

 

심지어 연습문제도 있다.

 

혼자서 공부하기에도 좋고

스터디로 진행하기에도 좋고

교재로 사용하기에도 좋다.

 

 

더더욱 멋진 것은... 책이 무료 공개되어있다.

http://allendowney.github.io/ThinkBayes2/index.html

 

eBook

 

심지어 친절하게 PDF 다운로드 링크까지도 제공해준다.

 

 

소스코드도 제공된다.

https://github.com/AllenDowney/ThinkBayes2

 

GitHub

 

솔직히 영어 부담만 없다면,

PDF보다 이렇게 노트북으로 보는게 훨씬 더 좋을 것 같다.

 

하지만, 우리는 한글을 사용하는 민족 !!!

일단 책 구매하고

제공되는 리소스들을 이용해서 훨씬 더 열심히 공부하면

몇 배 더 효율적으로 배울 수 있다 !!!

 

 

이 책 말고도

저자 Allen B. Downey님은 쓰신 책들을

무료로 제공해주고 있다.

 

Green Tea Press

https://greenteapress.com/wp/

 

 

파이썬 언어를 가지고 데이터싸이언스 공부를 하신다면

기본 교재로 추천합니다!

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

 

그냥 예뻐보여서 질러버린 2-key 매크로 키보드

 

 

LED가 예쁜게 아니라, 키가 2개 밖에 없는 그냥 쪼꼬만한 것이 이뻤다.

 

 

사놓고... 귀찮아서 방치하고 있다가,

그래도 뭔가 설정을 해줘야 할 것 같아서 꺼내보았다.

 

USB 연결하면 기본 장치로 잘 등록된다.

그리고 바로 사용도 가능하다.

 

기본 설정된 키 값은 (Ctrl+c), (Ctrl+v)로 되어있다.

 

 

 

하지만, 나는 "키 값을 바꾸고 싶다!"

 

 

 

1. ZDDKeyboardSetter

  - 매크로 키보드를 구매할 때 안내받았던 SW를 우선 다운로드 받아봤다.

  - https://github.com/TabbycatPie/CustomKeyboard/releases

 

 

  - 다운로드 받아서 압축 풀고, 실행을 해봤다.

 

 

  - 그런데, 장치를 못찾는다.

  - 버려!

 

 

2. HID Macros

  - 단순히 키보드 키 매핑을 변경하는 용도 말고,

  - 멀티 키보드 상태에서 원하는 키보드의 키 매핑만 변경하고자 했을 때

  - 유명하고, 한글도 지원하고, 사용하기에도 편리한 HID Macros !!!

  - http://www.hidmacros.eu/download.php

 

 

  - `매크로` 탭에서 `새로` 추가한 다음에 `스캔` 선택한 다음에 바꾸고자 하는 키를 누르면 된다

  - 그 다음에 `액션`을 등록해주면 되는데 ...

 

  - 뭔가 잘 안된다.

  - 보통 일반적인 상태에서는 잘 될텐데, 내가 갖고 있는 2-Key 매크로 키보드가 좀 특이한 것 같다.

 

 

여기까지는 실패기!


여기부터는 성공기!

 

 

3. Interception

  - 키보드 입력을 가로채서 원하는 동작을 하도록 할 수 있는 인터페이스이다.

  - http://www.oblita.com/interception

  - https://github.com/oblitum/Interception/releases

 

 

 

  - 설치를 하려면, 다운로드 받은 후 압축 풀고 Power Shell을 통해서 아래와 같이 실행하면 된다.

 

> cd `command line installer`
> install-interception.exe /install

 

 

  - 설치한 다음에는 `재부팅`을 하자

 

 

4. AutoHotkey

  - 뒤에서 설정할 내용들이 기본이 되는 솔루션을 설치해야 한다.

  - https://www.autohotkey.com/

 

 

  - 다운로드 받아서 설치하면 된다.

 

 

5. AutoHotInterception

  - 이제 거의 다 왔다.

  - Interception과 pair로 동작하는 솔루션을 추가로 설치하자.

  - https://github.com/evilC/AutoHotInterception/releases

 

 

  - 다운로드 받은 후 압축을 풀자.

  - 다음과 같이 2개의 파일을 복사하자

    . Interception\library\x64\interception.dll  →  AutoHotInterception\Lib\x64\

    . Interception\library\x86\interception.dll  →  AutoHotInterception\Lib\x86\

 

 

  - AutoHotInterception\Lib\Unblocker.ps1 실행

 

 

  - 키보드 정보 및 키 입력값 확인을 위해 Monitor.ahk 실행

 

 

  - Keyboards 중에서 하나씩 선택(체크)해서 키를 눌러보면, 작업하고자 하는 키보드가 어떤 것인지 찾을 수 있다.

 

 

  - HID Macros 에서 원하는대로 동작하지 않는 이유를 이제야 찾았다.

    . 키 하나에 2개의 값이 나오고 있다. (Left-Control + c)

    . HID Macros에서는 이런 경우에 대해서는 아직 지원해주지 않는다.

  - 2번 반복되는 이유는 키가 눌릴 때와 뗄 때 (State 1/0) 2가지 경우이기 때문이다.

 

  - AutoHotInterception/Context Example.ahk 파일을 수정해보자

 

 

  - Monitor.ahk 에서 `VID / HID` 값을 복사 한 뒤에 파일에서 아랫 부분을 업데이트 해주면 된다.

 

id1 := AHI.GetKeyboardId(0x8808, 0x6601, 1)

 

  - 그리고 밑에는 원하는 키 매핑을 작성하면 된다.

  - 원하는 만큼 작업했으면 해당 파일을 실행해주면 된다.

 

 

 

키보드 키 매핑이다 보니 마땅히 결과를 보여주기가 애매하긴 한데, 잘 동작했다.

위의 파일 내용을 보면 알겠지만, 나름의 꼼수작업을 통해서 원하는 결과를 얻기는 했다.

 

LControl::return
LControl Up::return

 

Left-Control 기능을 무시하도록 만듦으로써 제대로 키 입력을 가로채서 원하는 키 값으로 동작하게 만들었다.

 

예쁜 장난감 가지고 잘 놀아야쥐~

 

반응형

'Fun' 카테고리의 다른 글

라떼는 이런 게임을 ... (Best Old Game, BOG)  (0) 2022.09.11
동탄 무봉산 만의사  (0) 2011.11.12

 

파이썬으로 자연어 처리를 하고 싶다면

공부해볼만한 책 한 권을 소개하고자 한다.

 

표지

 

원서 제목은 다음과 같다.

"Blueprints for Text Analytics Using Python"

 

초판

 

발행한지 얼마 안된 따끈따끈한 책이다.

 

원서는 2020년 12월에 출간되었으니

약 2년의 시차가 있어서 조금 아쉽기는 하지만

지금 공부하기 해서 활용하는데에는 부족함이 없다.

 

독자

 

이 책은 텍스트 분석에 대해서 처음 접하는 분들이 아니라

텍스트 분석을 실제 구현하고자 하는 분들을 위한 책이다.

 

제약

 

다만, 기본적으로 영어를 기반으로 하기 때문에

한글 텍스트 분석을 위해서는

추가적인 학습이 필요하긴 하다.

 

원서와 2년의 차이가 있는데,

이왕이면 실습 코드만이라도 한글 지원을 추가해줬으면

훨씬 더 좋았을 것 같다.

 

챕터 개요

 

각 챕터(장)에서 어떤 데이터셋을 사용하고

어떤 라이브러리를 이용했는지

깔끔하게 정리를 해줘서

필요할 때 손쉽게 찾아볼 수 있다.

 

추천 도서

 

이 책에서는 기본적인 이론 등에 대해서 설명해주지 않기 때문에

추가적으로 공부하면 좋을 책들을 추천해주고 있다.

 

심지어 한빛미디어 출판이 아닌 책도 추천을 해준다 ^^

 

본문

 

책은 아쉽게도 흑백이다.

컬러 추종자로써 조금 아쉽다 ^^

 

원서 eBook을 보면 컬러로 나오던데...

 

구성

 

각 챕터(장)별로

학습목표와 데이터셋에 대한 설명을 해준다.

 

해당 챕터에서 뭘 하고자 하는 것인지

어떤 데이터를 가지고 하는 것인지

설명을 해주기에 공부할 때 많은 도움이 된다.

 

 

그리고, 중요한 실습 코드 !!!

 

https://github.com/blueprints-for-text-analytics-python/blueprints-text

 

실습 코드

각 챕터별로

README.md

내용을 너무나 예쁘게 잘 작성해줘서 기분이 좋았다.

 

JupyterNotebook

 

JupyterNotebook 파일도 깔끔하게 작성되어 있다.

 

사실 책 내용을 보면 책에서 설명하고 있는 내용이

JupyterNotebook 파일에 작성되어 있으면

공부할 때 훨씬 더 손쉽게 접근할 수 있을 것 같지만...

그것까지 바라는 것은 욕심인 것 같기도 하고...

 

 

NLP에 대해서 기본적인 사항을 공부한 다음

실제 코드로 만져보고 싶은 분들에게는

엄청 유용한 도움이 될 책이다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

최근 SW 개발자들이라면 `Git`이라는 버전관리 도구를 무조건 한 번 이상 사용해봤을 것이다.

 

사실 대부분 회사일로던 개인적인 사유로던 `GitHub` 계정이 이미 있을 것이고

Repository 하나 이상쯤은 만들어봤고, clone도 받아봤을 것이다.

 

`Git` 외에 다른 버전관리 도구들이 다양하게 존재하긴 하지만

일단 `Git`이 SW 개발자의 기본 소양이 되어버렸다는 사실은 그 누구도 부정하지 못할 것이다.

 

 

`StackOverflow Survey 2021` 에서 개발자들의 약 93%가 Git을 사용한다고 답한 것을 보면 확실하다!!!

'22년 Survey에서도 결과를 확인할 수 있으면 좋았을텐데, Git 항목이 2022년에는 빠져서... 아쉽다.

  - https://insights.stackoverflow.com/survey/2021#other-tools

 

 

그러면, 여러 Global 기업들도 모두 Git을 사용할까?!

`결론은 대부분 Git을 사용한다!` 이지만, 지금은 이걸 알아볼 때가 아니니 다음 기회로 넘기기로 하고...

 

Facebook(현 Meta)에서는 어떤 개발환경을 사용하고 있을까!?

  - 버전관리: Mercurial

  - 코드리뷰 및 태스크 관리: Phabricator

 

https://engineering.fb.com/2014/01/07/core-data/scaling-mercurial-at-facebook/

https://secure.phabricator.com/book/phabricator/article/introduction/

 

 

그런데, 위에 있는 링크를 타고 들어가보면 알겠지만,

Meta에서는 Mercurial을 그대로 사용하지 않고 상당히 많은 customizing을 가해서 사용하고 있었다.

 

Mercurial 자체도 Git과의 호환성을 보장하지만,

Meta에서는 특히 Git을 중심에 두고 GitHub 지원도 강화하기 위해 막대한 투자를 했다고 한다.

 

그리고 이렇게 Meta에서 10년 동안 열심히 개발한 버전관리 도구를 "Sapling"이라는 이름으로 공개했다!

  - https://engineering.fb.com/2022/11/15/open-source/sapling-source-control-scalable/

 

 

어떤 도구인지 직접 한 번 설치해 보고 사용해봤다.

개발환경 구성이니만큼 Ubuntu 20.04 환경에서 진행했다.

 

사실 Ububtu 18.04 환경에서 하고자 했으나, Sapling이 Ubuntu 20.04/22.04 버전만 지원한다.

 

 

1. GitHub CLI

  - Sapling에서 GitHub 연결할 수 있도록 하기 위해 GitHub CLI 도구를 설치하자

  - https://cli.github.com/

 

 

  - Ubuntu 환경에서의 설치는 아래 링크에 친절히 나와있다.

  - https://github.com/cli/cli/releases/download/v2.20.2/gh_2.20.2_linux_amd64.deb

 

  - 1회성으로 다운로드 받아서 설치할 수도 있다.

  - https://github.com/cli/cli/releases

 

❯ wget https://github.com/cli/cli/releases/download/v2.20.2/gh_2.20.2_linux_amd64.deb

❯ sudo dpkg --install gh_2.20.2_linux_amd64.deb

❯ gh --version                                             
gh version 2.20.2 (2022-11-15)
https://github.com/cli/cli/releases/tag/v2.20.2

 

  - 인증 정보도 등록하자

❯ gh auth login --git-protocol https

 

 

 

2. Sapling Install

  - 본래 주력으로 사용하고 있는 Ubuntu 18.04에서 테스트 진행하려다 보니... 안타깝게도 18.04는 지원하지 않는다.

  - 빌드를 직접 해보면 될지 모르겠지만, 귀차니즘으로... 그냥 20.04 환경에서 진행했다.

 

  - 설치 과정은 다음 링크를 참조하면 된다.

  - https://sapling-scm.com/docs/introduction/installation#linux

 

❯ wget https://github.com/facebook/sapling/releases/download/0.1.20221118-210929-cfbb68aa/sapling_0.1.20221118-210929-cfbb68aa_amd64.Ubuntu20.04.deb

❯ sudo dpkg --install sapling_0.1.20221118-210929-cfbb68aa_amd64.Ubuntu20.04.deb

❯ sl --version                                                                  
Sapling 0.1.20221118-210929-cfbb68aa

❯ sl config --user ui.username "whatwant <whatwant@gmail.com>"

 

 

3. clone

  - 기본적인 사용법은 git 명령어 체계를 따라가는 것 같다.

❯ sl clone https://github.com/whatwant/whatwant               
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
오브젝트 묶음 푸는 중: 100% (6/6), 15.87 KiB | 7.93 MiB/s, 완료.
https://github.com/whatwant/whatwant URL에서
 * [새로운 레퍼런스] babeb04a267ae7ac642532df70c03517d1ea86ca -> remote/main
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

 

  - 기본적인 모습은 조금 특이하긴 하다.

  - clone을 받았을 때 `.git` 디렉토리가 아니라 `.sl` 디렉토리가 생긴다.

  - `sl` 명령어를 치면 지금 현재 브랜치 정보를 보여준다.

❯ cd whatwant

 ls -al
합계 76
drwxrwxr-x 3 chani22 chani22  4096 11월 24 15:25 .
drwxr-xr-x 3 chani22 chani22  4096 11월 24 15:25 ..
drwxrwxr-x 6 chani22 chani22  4096 11월 24 15:29 .sl
-rw-rw-r-- 1 chani22 chani22   443 11월 24 15:25 README.md
-rw-rw-r-- 1 chani22 chani22 58078 11월 24 15:25 career.md

❯ sl
@  babeb04a2  2021-10-17 04:04  whatwant  remote/main
│  Create career.md
~

 

 

4. commit

  - committ 생성 과정을 살펴보자.

  - `git` 하고 차이는 마지막에 `sl` 명령어를 쳤을 때 나오는 정보 뿐이다.

❯ touch sapling.txt 

❯ sl add .                                     
adding sapling.txt

❯ sl commit -m 'my first commit with Sapling'                 

❯ sl                                         
  @  f63c3b928  6 seconds ago  whatwant
╭─╯  my first commit with Sapling

o  babeb04a2  2021-10-17 04:04  whatwant  remote/main
│  Create career.md
~

 

 

5. web (SmartLog)

  - Sapling은 멋지게도 web 인터페이스를 제공해주는데 ... 그냥 실행하면 에러 나온다.

❯ sl web                                     
ERROR: `node` is required to run Interactive Smartlog, but it was not
found on the $PATH. For information on installing Node.js, see:
https://nodejs.dev/en/learn/how-to-install-nodejs/

 

  - nodejs 설치하자

❯ sudo apt install nodejs npm

❯ nodejs --version                           
v10.19.0

 

  - 이제 다시 web !!

❯ sl web

  - 깔끔하고 예쁘다.

 

 

6. Pull-Request

  - PR 생성도 그냥 명령어 한 줄이면 된다.

❯ sl pr 
pushing 1 to https://github.com/whatwant/whatwant
created new pull request: https://github.com/whatwant/whatwant/pull/1
updated body for https://github.com/whatwant/whatwant/pull/1

 

  - 실제 GitHub에 생성되었는지 확인해보자.

 

 

여기까지 간단한 사용법을 살펴봤는데... 그냥 Git을 사용하는 것과의 큰 차이는 느끼지 못하겠다.

 

Git과의 차이점을 설명해주고는 있다.

  - https://sapling-scm.com/docs/introduction/differences-git

 

Staging Area가 없는 것과 몇 가지 차이가 보이기는 하지만,

사실 대용량 Repository일 때 Sapling의 장점이 돋보일 것 같기는 한데...

 

실제 작업하면서 사용을 해봐야 제대로 느껴볼 수 있을 것 같다.

 

 

이번 포스팅은 그냥 Sapling 맛만 보는 것으로...

 

 

반응형

+ Recent posts