컴퓨터공학을 전공한 코딩쟁이로써

머신러닝, 딥러닝을 공부하면서 항상 수학이라는 엄청난 장벽에 어려움을 겪고 있다.

(공돌이라고 누구나 수학을 잘하지 않아요 !!! 😥)

 

나는 엔지니어(Engineer)이지 사이언티스트(Scientist)가 아니다.

사실 GPT-3에서 사용된 Transformer가 어떤 특징이 있는지 그런건 별로 궁금하지 않다. 😑

 

내가 관심있는 것은 그것을 어떻게 구현했는지 이고,

그걸 사용하려면 어떻게 해야하는지 그런 것이 훨씬 더 궁금하다.

 

그런데, 역시 오레일리에서는 나같은 코딩쟁이들을 위한 책을 내놨고,

멋진 한빛미디어에서 존경스러운 박해선님이 번역한 책을 출간해주셨다 !!! 😍

 

표지

 

말 그대로 "개발자를 위한 (For Coders)" 책이다 !!!

 

한글판은 나온지 얼마 안된 따끈따끈한 책이지만, 원서는 2020년 10월 1일에 출간했으니 시간이 좀...

하지만, 머신러닝 번역서의 장인이신 박해선님이 예제를 비롯하여 내용들을 모두 살펴봐주셨으니, 믿습니다 !!! 😎

 

초판

 

다시 한 번 말하지만, 이 책은 개발자를 위한 책이다.

모델의 수학적 배경을 알고 싶다거나 머신러닝 자체에 대해서 공부하기를 원한다면 다른 책을 찾아봐야 한다.

 

아! 그리고, 이 책은 텐서플로(Tensorflow)를 사용하고 있다.

파이토치(PyTorch)를 원한다면 역시 다른 책을 ... 🙄

 

대상 독자

 

이 책은 크게 `모델구축``모델 사용`의 두 묶음으로 구분이 되어 있다.

 

`모델 구축`에 있어서도 (비전, 자연어, 시퀀스) 3가지 유형에 대해서 모두 설명해준다.

 

모델 구축

 

`모델 사용` 부분에서는 모바일 환경에서 사용할 수 있는

`텐서플로 라이트(Tensorflw Lite)`를 설명해주고 있으며 심지어 iOS 앱으로 구현하는 것까지도 알려준다.

 

모델 사용

 

그리고, 20장을 보면

짧게나마 윤리/공정성/개인정보에 대한 이야기도 해준다.

 

 

책의 전체적인 내용에 대해서

박해선님이 직접 설명해주신 그림도 있다.

 

[출처] https://tensorflow.blog/aiml4coders/

 

 

'이론과 실습' 측면에서 바라보면 이 책은 '실습'에 충실한 책이다.

뒤늦게 머신러닝을 공부하고자 하는 개발자에게는 속시원한 책이지 않을까 한다.

 

 

책의 정오표는 아래 링크에서 확인할 수 있다.

  - https://tensorflow.blog/aiml4coders/

 

 

예제 파일(쥬피터 노트북)은 아래 링크에서 확인할 수 있다.

  - https://github.com/rickiepark/aiml4coders

 

예제 파일은 원서의 것을 그대로 공유하는 것이 아니라

박해선님이 확인하고 다듬어서 올려주신 것으로 알고 있다.

 

주석이 별도로 없는 것은 조금 아쉽지만, 그래도... !!! 😋

 

 

마지막으로,

개인적인 취향으로 ... 이 책은 Coloful 하다 !!! 😁

 

그림

 

 

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

 

 

반응형

 

대학생 시절

게임 때문에 학사경고까지 먹었던 골수 겜돌이였던 나였는데 😎

 

요즘은 어떤 게임이 있는지조차 모를 정도로

게임하고는 거리가 먼 아재가 되어 버렸다 😥

 

 

그렇다고 게임에 대한 관심과 애정이 없어진 것은 아니었는데,

그러던 중 알게 된 아재 감성을 자극한 멋진 사이트를 발견 !!! 😍

 

https://www.bestoldgames.net/

 

bestoldgames.net

 

옛날 게임을 주제로 만들어진 웹사이트는 기존에도 많이 있었지만,

BOG 사이트가 왜 특별하냐면

게임을 해볼 수 있도록 다운로드를 제공하기 때문이다.

심지어 온라인으로도 해볼 수 있도록 제공해 준다!!! 🤩

 

 

그렇다고 해서 여기 사이트에서

특별한 인터페이스 또는 에뮬레이터를 만들어서 제공하는 것은 아니고 😁

DOSBox를 이용해서 게임을 할 수 있도록 해준다.

 

DOSBox

 

DOSBox는 일단 설치해놓고,

고등학교 시절 오락실에서 내 용돈을 엄청 빼앗아간 게임을 한 번 해보겠다~ 🤑

 

Strret Fighter 2

 

게임을 골랐으면 일단 다운로드 받자.

 

Download

 

다운로드 받은 후에 압축을 풀어 놓자

 

압축 해제

 

DOSBox를 설치해 놓았으면,

바탕화면에 아래와 같은 아이콘을 찾아볼 수 있을 것이다 🤔

 

DOSBox

 

압축 해놓은 디렉토리를

위 DOSBox 아이콘에 드롭다운을 하면 된다.

 

Drop Down

 

이상한 윈도우가 2개나 튀어 나온다고 당황하면 안된다 😲

 

DOSBox

 

`dir` 명령어를 쳐보면 파일 목록이 보일 것이다.

지금 우리가 필요로 하는 것은 `SF2.EXE` 파일이다.

실행하면 된다 !! 🥳

 

dir

 

혹시 이어폰을 끼고 있다면 조심하기 바란다.

정겨운 사운드블러스터 뮤직이 크게 흘러나온다~ 🤣

 

SF2

 

왠지 뭔가 귀찮고 하기 싫다면,

온라인으로 실행할 수도 있다 😋

 

온라인

 

 

추억의 게임들을 발견하고

또 직접 해볼 수 있다는 것이 꽤 쏠쏠한 재미를 준다.

 

더군다나 사이트가 너무나 잘 정리되어 있고

관리가 되고 있다는 것이 너무나 너무나 고맙다.

 

반응형

 

오랜 시간 Software Engineer로써 살고 있는 고인물이

새로운 세상에 적응하기 위해 딥러닝이라는 것을 공부하려고 할 때

가장 큰 장벽으로 다가오는 것이 바로 수학이다.

 

고등학교 시절 이과를 선택하고 공대에 입학해서 공돌이 생활을 했지만

수학을 정말 싫어하고 못했던 나인데, 이 나이 먹고 다시 수학 공부를 해야하다니!!!

 

하지만, 딥러닝에 대해서 파고들기 위해서는 수학 공부는 필수다.

어쩔 수 없다.

 

그렇지만, 수학 정석부터 시작할 수는 없고, 필요한 내용만 공부를 하려면... ?!

 

표지

 

나온지 얼마 안되는 정말 따끈따끈한 책이다.

원서도 2021년 10월에 출간되었다.

 

1쇄

 

책 제목에 "딥러닝"이 적혀 있다고 해서 알고리즘이나 코드를 설명해주는 책은 절대 아니다.

 

역전파(Backpropagation)와 경사하강법(Gradient Descent)을 이해하기 위한

수학적 배경 지식을 공부하기 위한 수학책이다.

 

"옮긴이의 말"에서도 분명히 이 부분을 말해주고 있다.

 

옮긴이의 말

 

그렇다고 해서 정말 수학 공식만 설명해주고 있는 책은 아니다.

실제 Python 코드를 이용한 구현 방법도 알려주고 있기에 실습을 하면서 공부를 할 수 있다.

 

책의 구성을 살펴보면 다음과 같다.

 

구성 1
구성 2

 

"옮긴이의 말"에서도 언급한 것 처럼

이 책은 `10장 역전파`와 `11장 경사하강법`을 설명하기 위한 책이다.

 

실습환경 구축을 설명해주고 있는 1장을 빼고

2장부터 9장까지는 본론을 말하기 위한 수학적 개념과 공식을 설명해주는 내용으로 채워져 있다.

 

 

책 인쇄는 조금 아쉽게도 풀 컬러는 아니고 (개인적인 취향으로 풀컬러 러버~)

자주색+검은색의 조합이다.

 

샘플

 

책에서 사용된 소스코드는 다음 링크에서 내려 받을 수 있다.

  - https://github.com/rkneusel9/MathForDeepLearning

 

쥬피터노트북(.ipynb)은 아니고, 파이썬(.py) 파일로 제공해주고 있다.

 

 

책의 정오표는 다음 링크의 제일 하단에 있는 `View the latest errata`에서 확인하라고 하는데, 원서 기준이다.

  - https://nostarch.com/math-deep-learning

 

한글판에 대한 정오표가 업데이트 되면 아래 링크에서 확인할 수 있을 것이다.

  - https://jpub.tistory.com/category/오탈자%20정보 

 

 

※ 제이펍 서평단 활동을 위해 지급 받은 도서에 대한 리뷰입니다.

반응형

 

Python은 왠지 한글하고 친하지가 않은 것 같다.

그나마 v3.x 버전이 되면서 많이 편해지긴 했지만, 그래도 한글 관련 이슈가 계속 나오는 느낌적인 느낌이...

 

MachineLearning 공부하게 되면서 많은 분들이 사용하고 있는 matplotlib의 경우에도

기본적으로는 한글 출력에 문제가 있다.

 

Google Colab 및 Local 환경에서 matplotlib 한글 출력이 잘 되도록 해보자.

 

 

1. Google Colab

 

① 기본 상황

  - 한글 부분이 제대로 나오지 않는 것을 볼 수 있다.

 

font error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

 

install font

 

③ 런타임 재시작

  - 설치된 폰트를 사용하기 위해 "런타임 다시 시작"을 실행하자

 

런타임 다시 시작

 

④ 폰트 적용

  - 이제 한글을 적용해서 그래프를 그려보자.

  - 설치한 폰트를 사용하도록 한 줄 추가가 되어야 한다.

 

plt.rc('font', family='NanumBarunGothic')

 

matplotlib with hangul

 

  - 그런데, 위의 그래프에서 뭔가 이상한 것을 볼 수 있는가?

  - y축의 "-5" 부분이 제대로 출력되지 않았다.

 

⑤ minus 처리

  - 아래와 같은 구문이 추가되면 된다.

import matplotlib as mpl
 
mpl.rcParams['axes.unicode_minus'] = False

 

fix minus

 

 

2. Local (Ubuntu)

Colab과 비슷하지만 약간 차이가 있다.

 

① 기본 상황

  - 코드가 살짝 다르다.

 

import pandas as pd
import matplotlib.pyplot as plt
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

execute

 

error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

$ sudo apt-get install -y fonts-nanum
$ sudo fc-cache -fv
$ rm ~/.cache/matplotlib -rf

 

③ 코드 개선

  - 폰트 및 마이너스 관련 코드 추가해서 재실행해보자.

 

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.rc('font', family='NanumBarunGothic')
mpl.rcParams['axes.unicode_minus'] = False

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

new graph

 

예쁜 한글 파이팅 !!!

 

반응형

 

나의 로컬 환경에서 Jupyter Notebook을 사용하고 싶어서 살펴봤다.

 

0. 실행 환경

  - Ubuntu 18.04 환경에서 진행했지만, 20.04 등 다른 버전에서도 잘 될 것 같다.

 

1. 설치

  - 가장 편한 "pip"를 이용해서 설치해봤다.

$ pip install jupyter

 

pip install jupyter

 

2. 설치 내역

  - Jupyter Notebook은 여러 패키지의 조합이다. 확인해보자.

$ jupyter --version

 

jupyter --version

 

3. 실행

  - Jupyter Notebook을 실행해보자.

$ jupyter notebook

 

jupyter notebook

 

  - 자동으로 브라우저가 실행되며 Jupyter Notebook을 볼 수 있다.

 

jupyter notebook

 

  - 오른쪽 중간에 보이는 "New" 버튼을 통해 새로운 Notebook을 생성하고, 간단한 실행을 해보자.

 

jupyter notebook

 

정말 간단히 Jupyter Notebook 환경을 만들 수 있다.

서버로 구동하거나 비밀번호를 등록하는 등의 추가 설정은 별도의 포스팅으로 작성해보도록 하겠다.

 

반응형

알람(Alarm)이나 공지(Notification)를 하는 방법 중에서 카카오톡 메시지는  상당히 매력적이다.

 

Python 등을 이용해서 카카오톡 메시지를 발송하는 것은

알아야할 것들이 많아서 그렇지 어렵지는 않으니 하나씩 확인해보자.

 

01. kakao developers 가입하기

  - https://developers.kakao.com/

 

kakao developers

 

02. 애플리케이션 추가하기

  - 가입, 로그인 후 상단에 있는 메뉴 중에서 "내 어플리케이션"을 선택하자.

 

내 어플리케이션

 

  - 메시지 발송과 같은 작업을 하기 위해서는 기본이 되는 "애플리케이션"이 있어야 한다.

  - '앱 이름'과 '사업자명'을 임의로 적어주면 되고, 앱 아이콘은 등록하지 않아도 된다.

 

애플리케이션 추가

 

03. 애플리케이션 요약 정보

  - 생성한 애플리케이션을 선택하면 다양한 설정을 할 수 있는 화면을 볼 수 있다.

  - 첫 화면으로 나오는 요약 정보에서는 중요한 "앱 키"들도 볼 수 있다.

 

요약 정보

 

04. 카카오 로그인 활성화

  - 카카오 로그인 API를 사용하기 위해서 활성화 설정을 진행해야 한다.

 

로그인 활성화


05. Redirect URI

  - 로그인이 된 다음에 되돌아갈 URI를 등록하는 것이다.

  - 지금 마땅히 없으니, 그냥 샘플로 제공되는 주소를 그대로 써주자. (https://naver.com 같이 입력해도 무방하다)

 

Redirect URI

 

06. 접근 권한

  - 사용자 동의가 필요한 접근 항목들이 있다.

  - 제품 설정 → 카카오 로그인 → 동의항목 → 접근 권한 → 카카오톡 메시지 전송 → 설정

 

접근 권한

 

  - 아래 화면과 같이 "선택 동의"를 선택하고 "동의 목적"에 문구를 작성해주면 된다.

 

카카오톡 메시지 전송 설정

 

07. 소셜 API 가이드

  - 사이트 상단 메뉴에서 "문서" 선택 후, 소셜API가이드 - 메시지 - REST API

 

소셜 API 가이드

 

08. REST API 테스트 도구

  - "카카오톡 메시지:REST API" 페이지를 보면 바로 보이는 "REST API 테스트 도구"를 클릭하자.

 

카카오톡 메시지: REST API

 

09. 나에게 기본 템플릿으로 메시지 보내기

  - "REST API 테스트 도구"를 클릭하면 볼 수 있는 화면이다.

 

나에게 기본 템플릿으로 메시지 보내기

 

10. 액세스 토큰

  - "액세스 토큰" 항목에서 "토큰 발급" 눌러 주자.

  - 아래 화면에서 보이는 것과 같이 진행하면 된다.

 

토큰 발급

 

  - 확인을 누르면 동의화면이 나온다. 동의 해주면 된다.

 

동의하기

 

11. 명세 확인하기

  - 페이지의 하단 부분을 보면 "명세" 부분을 볼 수 있다.

  - "template_object"의 타입 부분에서 "Text"를 클릭해 주자.

 

명세

 

  - 메시지의 종류라고 생각하면 되고, 지금은 "Text" 형식으로 메시지를 보내고자 하기에 이렇게 한 것이다.
  - 아래와 같은 형식으로 사용할 수 있다는 것을 확인할 수 있다.
    . {"object_type":"text","text":"Hello World !!!","link":{}}

 

 

12. 전송

  - 페이지의 위로 올라가서 Body 부분의 "template_object" 항목에 입력해주면 된다.

 

전송

 

13. 응답

  - 모두 잘 따라왔으면 아래와 같이 200 OK 응답을 받았을 것이다.

 

응답

 

14. 확인

  - 카카오톡에 정상적으로 전달된 메시지를 볼 수 있다.

 

카카오톡

 

이번에는 여기까지만 진행하고,

Python 코드로 진행하는 것은 별도의 포스팅으로 진행하겠다.

반응형

 

간단한 웹을 만들어야 하는데,

간단하게 데이터를 다뤄야 할 때 종종 언급이 되는 Redis에 대해서 살펴보려고 한다.

 

"Key-Value 형식의 in-memory 데이터베이스"

 

기존에 내가 알고 있는 Redis에 대한 정보인데

공식 홈페이지에서 다시 한 번 확인해봤다.

 

- https://redis.io/

 

redis.io

 

"The opensource, in-memory data store used by millions ..."

어?! 'database'라고 하지 않고 'data store'라고 설명을 하네?! 라고 느끼는 순간! 사이트 중간에 다시 설명을 해주고 있다.

 

"A vibrant, open source database"

 

뭐, 결국은 내가 알고 있던 "key-value 형식의 in-memory databse"가 맞기는 하지만

스스로는 "data store"라는 정체성을 더 소중히 여기는 것이 아닌가 싶다.

 

서론이 너무 길었는데,

Redis에 대해서 너무나 잘 설명해주고 있는 좋은 아티클 링크 공유하면서 서두를 마치고자 한다.

 

- 6편의 아티클로 Redis에 대해서 심도있게 다루고 있음

  . https://insanelysimple.tistory.com/343

 

- Redis에 대해 소개하면서 "Redis vs Memcached" 비교

  . https://kdhyo98.tistory.com/89

 

 

이제 본론으로 들어가봅시다~!!

 

 

[ Redis 맛보기 ]

 

0. Background

개인적인 취향일 수도 있겠지만,

S/W 개발을 위한 기본적인 환경은 Linux 기반이 좋다고 생각하기 때문에

이번 실습 역시 Linux 배포판 中 Ubuntu 운영체제에서 진행한다.

 

또한, 최근 유행하고 있는 MSA 기조에 맞춰서

Application의 구성은 Container를 기반으로 하며

가장 대중적인 Docker를 활용하도록 하겠다.

 

- 테스트 환경 (필자가 이하 내용을 진행한 환경)

  . Host OS : Windows 10 Pro 21H1

  . VM : VirtualBox v6.1.34 r150636 (Qt5.6.2)

  . Guest OS : Ubuntu 18.04.6 LTS

  . Docker version 20.10.17, build 100c701

 

역시 개인적인 취향이 듬뿍 들어 있는 방식이긴 한데,

Server를 운영할 때 패키지의 버전관리 측면과 더불어 폐쇄망에서의 제약으로 인해

패키지들을 설치 할 때 직접 다운로드 받아서 진행하는 것을 선호한다.

 

- Docker 설치

  . Ubuntu 16.04 / 18.04 : https://www.whatwant.com/entry/Docker-Install-Ubuntu-16041804-64bit-using-Download

  . Ubuntu 20.04 : https://www.whatwant.com/entry/Docker-Install-Ubuntu-Server-2004

 

 

위와 같이 환경을 제시하긴했지만,

Windows/macOS 환경에서도 docker를 사용하기 때문에 비슷하게 동작하지 않을까 한다.

 

 

1. Persistent Volume

Redis가 in-memory data-store 솔루션이지만,

안정적 운영을 위해 메모리에 있는 데이터를 디스크에 쓰는 2가지 옵션을 제공한다.

 

① RDB (Redis Database) : 지정된 시간 간격으로 스냅샷을 파일로 저장

② AOF (Append Only File) : 모든 작업을 기록, 서버가 시작할 때 이 기록을 읽어서 데이터 재구성

 

어떤 옵션을 사용하더라도 데이터 저장이 되는 곳이 필요하고

보다 수월한 백업 등의 작업을 위해 docker volume 공간을 따로 구성하도록 하겠다.

 

# 리스트 확인
$ docker volume ls

# 생성
$ docker volume create [name]

# 상세 조회
$ docker volume inspect [name]

volume

 

2. Redis Config

접근 가능한 IP를 지정하고, 인증을 위한 패스워드를 넣는 등의 환경 설정을 위한 config 파일을 작성해보자.

또한 config 파일은 host에서 관리할 수 있도록 하겠다.

 

# 어떤 네트위크 인터페이스로부터 연결할 수 있도록 할 것인지 관리 (여기에서는 Anywhere)
bind 0.0.0.0

# 사용 포트 관리
port 6379

# Master 노드의 기본 사용자(default user)의 비밀번호 설정
requirepass [사용하고자 하는 비밀번호]

# Redis 에서 사용할 수 있는 최대 메모리 용량. 지정하지 않으면 시스템 전체 용량
maxmemory 2gb

# maxmemory 에 설정된 용량을 초과했을때 삭제할 데이터 선정 방식
# - noeviction : 쓰기 동작에 대해 error 반환 (Default)
# - volatile-lru : expire 가 설정된 key 들중에서 LRU algorithm 에 의해서 선택된 key 제거
# - allkeys-lru : 모든 key 들 중 LRU algorithm에 의해서 선택된 key 제거
# - volatile-random : expire 가 설정된 key 들 중 임의의 key 제거
# - allkeys-random : 모든 key 들 중 임의의 key 제거
# - volatile-ttl : expire time(TTL)이 가장 적게 남은 key 제거 (minor TTL)
maxmemory-policy volatile-ttl

# DB 데이터를 주기적으로 파일로 백업하기 위한 설정입니다.
# Redis 가 재시작되면 이 백업을 통해 DB 를 복구합니다.

save 900 1      # 15분 안에 최소 1개 이상의 key 가 변경 되었을 때
save 300 10     # 5분 안에 최소 10개 이상의 key 가 변경 되었을 때
save 60 10000   # 60초 안에 최소 10000 개 이상의 key 가 변경 되었을 때

 

redis.conf

 

redis.conf

 

3. Redis Image

Redis의 공식 Image 중에서 사용하고자 하는 버전을 찾아보자

- https://hub.docker.com/_/redis?tab=tag

 

Redis Image

 

현재 시점에서는 v7.0.2 가 최신이다.

 

 

4. Run

이제 Redis를 실행시켜 보자.

 

$ docker run \
-d \
--restart=always \
--name=redis \
-p 6379:6379 \
-e TZ=Asia/Seoul \
-v /srv/workspace/redis/redis.conf:/etc/redis/redis.conf \
-v redis_data:/data \
redis:7.0.2 redis-server /etc/redis/redis.conf

 

docker run

 

잘 실행이 되었는지도 확인해 보자.

 

docker logs

 

 

5. Redis Client

Redis에서 실제 값을 입력 해보자.

Redis Client의 실행 명령어는 'redis-cli' 이다.

 

$ docker exec -it redis redis-cli

 

NO AUTH

 

어?! 키 값 저장이 안된다.

redis.conf 작성할 때 명시한 패스워드를 사용하지 않았기 때문이다.

 

패스워드를 넣어서 client를 실행하면 정상 동작 한다.

 

AUTH

 

키 값 저장 및 조회가 잘 되는 것을 볼 수 있다.

 

여기까지~

 

반응형

 

요즘 개발자는 당연하고,

디자이너나 기획자들도 git 사용은 필수인 시대가 되었다.

 

인공지능(머신러닝, 딥러닝) 관련해서

공부를 하려고 해도 `git`을 사용할 수 밖에 없다.

 

아니, 사실 솔직히 말하면 git이라기 보다는 `GitHub.com`을 사용해야 하는 것이지만,

그 기반을 이루고 있는 git은 이제 일반 상식이다.

 

조금만 공부하면 사용할 수 있긴 하지만,

제대로 사용하려면 정말 어렵기만한 도구가 바로 git이다.

 

하지만, 실수를 했을 때 되돌릴 수 있는 방법만 알고 있다면

무서워 할 필요가 없다.

 

그리고, 어려움을 느끼고 있는 우리를 대신해서 욕을 해주고 있는 사이트도 있다 !!!

  - https://ohshitgit.com/ko

 

oh shit git

정겹지 않은가?! 

 

 

 

말이 좀 거칠긴 해도,

설명해주는 내용은 정말 말 그대로 꿀팁이다 !!!

 

 

그런데,

회사에서 보기에는 조금 부담스러울 수도 있다.

 

그런 분들을 위해 정중한 표현을 하고 있는 사이트도 제공을 해준다.

  - https://dangitgit.com/ko

 

dangit

아주 정중하지 않은가?!

 

 

재미로만 느껴질 수도 있겠지만,

내용은 정말로 상당히 괜찮다.

 

각자의 git 생활에 도움이 되기를 기원하며 ...

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

GitHub에서 수식 입력 하기 (with LaTex)  (0) 2022.06.07
Universe 2021 & GitHub Actions  (0) 2022.01.18
github.dev (Web-IDE)  (0) 2021.11.03
git switch/restore (git 새로운 명령어)  (1) 2021.10.17
git 설치 (Git 2.33.0, Windows 10)  (0) 2021.10.02

+ Recent posts