SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Personalize
Your World리눅스까지 올렸는데 예쁘게 좀 써 봐야지!
대신귀
여운리
눅스를
드리겟
습니다
Three major Operating Systems
Windows
장점
- 은행 업무를 볼 수 있음
(머한민국 한정)
- 쓰기 쉬움
- 노트북 사면 그냥 깔려
있더라 (왜죠)
단점
- git 쓰다가 속이 터짐
- 개발하다가 빡쳐서 게임을
켜게 됨
- 로고가 귀엽지 않음
macOS
장점
- 일단은 유닉스 기반임
- git 써도 속이 안 터짐
- UI가 예쁨
- 게임 만들기 좋음
- 갬-성
단점
- 진입장벽이 의외로 높음
- 입력기가 거지같음
- 진짜 겁나 무거움
- 로고가 전혀 귀엽지 않음
Linux
장점
- 개발자: (편안)
- 컴파일 안 되는 게 없음
- 짱짱 가벼워서 노인학대를
더 오래 할 수 있음
- 로고가 귀여움 (중요)
단점
- 진입장벽이 emacs급임
- 입력기가 거지같음 (2)
- 은행이 엿을 먹임
- 사람들이 못생겼대
Personalize?
Windows
- 꾸미기 옵션이 한정적임
- 더 꾸미려면 시스템
라이브러리 패치가 필수
- 근데 그러다가 시스템
불안정해짐
macOS
- 꾸미기 옵션이 윈도우보다는
많음
- 윈도우 매니저랑 시스템
유틸이 여기저기 난무함
- 정작 쓸모는 별로 없음
결국 커스터마이징의 끝은 순정 결국 커스터마이징의 끝은 순정
What Linux sounds like
구아아아악...
What Linux actually is(or at least capable of)
My desktop settings
Arch Linux on Vanilla Kernel v5.0.5
- bspwm + Plasma 5
(Currently bspwm)
- Statusbar using Polybar
- Wallpaper using feh
- Menu using rofi
- Alacritty terminal emulator
- KMSCON virtual terminal
- Compton compositor
(with Kawase Blur patch)
- dunst libnotify handler
With Linux,
EVERYTHING IS POSSIBLE.
In UNIX, everything is a file.
⇒ 설정 파일도 전부
플레인텍스트!
e.g. .Xresources for Xorg config
이 파일을 Dotfile이라고 불러요
UNIX 시스템에서는 숨겨진 파일으로 취급된답니다
How Linux works
(제가 쓴 코드 아니에요...)
Prerequisites
얘네들은 필수예요!
1. 리눅스를 돌릴 수 있는
컴퓨터
2. 예쁜 것이 무엇인지 판단할
수 있는 두 눈
3. 시행착오와 삽질을 즐길 수
있는 즐기는 자 모드
知之者 不如好之者 好之者 不如樂之者
지지자가 불여호지자요, 호지자가 불여락지자니라. - 논어 -
Optional requisites
알아두면 쓸데많은 신비한 프로그래밍 언어 (중요한 순서)
1. Shell Script
2. INI / Properties
3. Python (아니면 Ruby)
4. C
5. XML
Before we begin...
0. 배포판을 잘 골라야 해요
Distro with Desktop installed
vs.
Distro without Desktop installed
Arch Linux도 좋은 선택이에요!
(영업)
The Hitchhiker’s Guide
to Linux Personalization
1. 좋아하는 WM이나 DE를 골라주세요
a. GTK Lineup
GNOME / Cinnamon / MATE / Pantheon / Xfce / LXDE (discontinued)
b. Qt Lineup
KDE Plasma / LXQt
c. Bare minimum Window Managers
Openbox / i3 / Awesome WM / dwm / 2bwm / bspwm
The Hitchhiker’s Guide
to Linux Personalization
2. 다운로드를 하고 설치도 해 주세요
자세한 방법은 여러분의 패키지 매니저 문서를 참고하세요
apt
pkgSnappy
pacman
yum
Zero Installbrew (?)
slackpkg
PETget
사실 macOS도 UNIX이다 보니 쉘 모양 정도는 같은 방법으로 바꿀 수 있어요 (...)
The Hitchhiker’s Guide
to Linux Personalization
3. 이제 설정파일을 마음껏 바꿔 봐요!
a. GUI 설정 유틸리티가 있는 경우
gnome-tweaks or lxappearance for GTK
qtconfig for Qt4, qt5ct for Qt5
b. 텍스트 파일을 편집해야 하는 경우
XML, INI (Properties), Shell Script를 지원하는 에디터를 추천해요
c. 설정 파일 위치는 프로그램마다 달라요
$XDG_HOME_CONFIG 디렉터리를 먼저 찾아보세요!
(보통 ~/.config로 설정되어 있어요)
The Hitchhiker’s Guide
to Linux Personalization
4. PROFIT! (Openbox + LXDE setup inspired by Windows XP)
????????
Where to start?
● 어디서부터 시작해야 할 지 잘 모르겠어요!
● 어떤 식으로 편집해야할지 잘 모르겠어요!
● 직접 사자가 돼서 제 자신을 벼랑에 빠뜨리고 싶어요!
⇒ Shell Customization!!
Why shell?
1. 여러가지 쉘이 있어요!
a. bash, zsh, fish ⇒ THE BIG THREE
b. PowerShell, xonsh ⇒ THE WEIRDOS
2. 리소스 파일 == 쉘 스크립트 (쉘 스크립트는 좋은 실험대상이죠)
3. 잘못하면 시스템이 펑♪
4. 약간의 노력으로 최고의 아웃풋을!
Shell customization 101
1. 원하는 쉘을 골라주세요!
ex) zsh이나 fish (PowerShell 쓰는 멍청이 멋쟁이도 있어요)
2. 먼저 이것저것 재미있는 기능을 추가해 볼까요?
ex) 터미널 실행시 tmux 자동으로 켜기
3. 편리한 라이브러리를 추가해 줄게요!
ex) thefuck 커맨드 수정 플러그인
4. 예쁜 테마를 적용하면 끝!
ex) Powerlevel9k 파워라인 테마
Before and after
▼ Bash without customization ▼ Zsh with customization
Before After
But, just once...?
New computer, new life!
(그치만 제 귀여운 데스크탑이 전부 날아갔는데요...?)
어떻게 하죠...?
처음부터 다시 만들기
설정 파일을 USB에 넣어서
가지고 다니기
......더 좋은 방법은 없을까요?
Automate, automate, automate!
프로그래머 == 자동화 빌런
당연한 소리지만요
1. git
2. GNU stow
3. Makefile (optional)
What are these things anyways?
1. git
a. VCS 소프트웨어 (+ 대용량 파일 관리 소프트웨어 with Git LFS)
b. GitHub(💕) / GitLab / BitBucket
c. 코드 관리의 최강자
(Mercurial 사용자들은 싫어하더라구요) (왜구랭 git 유저는 Mercurial 욕 안하자나)
What are these things anyways?
2. GNU Stow
a. 원래는 프로그램 버전 관리 소프트웨어
e.g. 컴퓨터에 여러 버전의 Perl을 설치해서 쓸 수 있어요
b. 사실상 Symlink 생성 프로그램
우리는 이 기능을 쓸 거예요
What are these things anyways?
3. Makefile
a. 빌드 자동화 소프트웨어
근데 요즘은 CMake 같은 게 대신 뚝딱뚝딱 만들어줘서 직점 짤 일은 별로 없어요
b. 사실상 쉘 스크립트 자동화 프로그램
Lv. 1: Configs everywhere
$HOME 디렉터리를 git 리포지토리로 만들어보자!
$XDG_HOME_CONFIG이 $HOME 디렉터리 안에 있다고 가정할게요
Fatal: 리포지토리가 너무 더러워요
Lv. 2: Symlinks everywhere
설정 파일을 한 곳에 모으고, symlink를 만들어보자!
설정 파일을 전부 ~/Dotfiles에 짱박아두고 적당한 곳에 symlink를 걸어볼게요
훨씬 낫네요!
하지만 이거 하려면 파일 하나하나에 ln -s 명령어를 써야 하나요...?
Lv. 3: Stow everywhere
GNU Stow를 사용해서 자동화를 해보자!
와! stow <directory> 명령어를 쓰면 자동으로 링크가 주루룩 생겨요!
한 줄이면 돼요. 딱 한 줄이면.
그런데 dependency는 어떡하죠?
Lv. EX: Makefile everywhere
Makefile으로 프로그램 설치까지 해보자!
각 디렉터리 안에 requirements라는 파일에 필요한 프로그램 이름을 전부 넣으면 돼요
코드가 더러워도 용서해주세요 (...)
Shell Script를 야매로 배워서리...
Ultimate Personalization Machine™
이제 완성된 스크립트와 설정 파일을 업로드하면 끝!
ex) https://github.com/RangHo/dotfiles
다른 웹사이트에도 우리 예쁜 리눅스를 자랑해 보아요
- https://reddit.com/r/unixporn
- https://twitter.com/
Open ended (the good parts)
기능을 더 넣어볼까요? or 더 편하게 할 수 있을까요?
1. 깨-끗한 파이썬 환경을 위해 설정파일용 venv
만들기
2. 편리한 스크립트를 만들어 설정파일과 함께 공유하기
3. 크로스플랫폼, 크로스디스트로 환경 조성하기
4. 예쁜 리눅스를 만들기 위한 가이드를 첨부하기
가능성은 무궁무진해요!
Have fun personalizing your world!
hello@rangho.moe

Más contenido relacionado

La actualidad más candente

게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP AdvSeungmo Koo
 
2017 새싹교실 1교시
2017 새싹교실 1교시2017 새싹교실 1교시
2017 새싹교실 1교시Han Sung Kim
 
SiegeMode! C++ Advanced Project Ver
SiegeMode! C++ Advanced Project VerSiegeMode! C++ Advanced Project Ver
SiegeMode! C++ Advanced Project VerSeokmin No
 
20180519 hangul processing
20180519 hangul processing20180519 hangul processing
20180519 hangul processinggnomekr
 
RPG Maker와 Ruby로 코딩 시작하기 Day 1
RPG Maker와 Ruby로 코딩 시작하기 Day 1RPG Maker와 Ruby로 코딩 시작하기 Day 1
RPG Maker와 Ruby로 코딩 시작하기 Day 1Sunwoo Park
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동선협 이
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
git, git flow
git, git flowgit, git flow
git, git floweva
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링Seungmo Koo
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingProject anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingDong Chan Shin
 
MFC 발견 (1)
MFC 발견 (1)MFC 발견 (1)
MFC 발견 (1)종훈 박
 
Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730Yong-nam Kim
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운Namwun Kim
 

La actualidad más candente (20)

게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv
 
2017 새싹교실 1교시
2017 새싹교실 1교시2017 새싹교실 1교시
2017 새싹교실 1교시
 
SiegeMode! C++ Advanced Project Ver
SiegeMode! C++ Advanced Project VerSiegeMode! C++ Advanced Project Ver
SiegeMode! C++ Advanced Project Ver
 
20180519 hangul processing
20180519 hangul processing20180519 hangul processing
20180519 hangul processing
 
RPG Maker와 Ruby로 코딩 시작하기 Day 1
RPG Maker와 Ruby로 코딩 시작하기 Day 1RPG Maker와 Ruby로 코딩 시작하기 Day 1
RPG Maker와 Ruby로 코딩 시작하기 Day 1
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
pyOpenCL 입문
pyOpenCL 입문pyOpenCL 입문
pyOpenCL 입문
 
git, git flow
git, git flowgit, git flow
git, git flow
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
React principle
React principleReact principle
React principle
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shovelingProject anarchy로 3d 게임 만들기 part_5_waste of time shoveling
Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling
 
MFC 발견 (1)
MFC 발견 (1)MFC 발견 (1)
MFC 발견 (1)
 
Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운
 
11 1 while반복문
11 1 while반복문11 1 while반복문
11 1 while반복문
 

Similar a 대신 귀여운 리눅스를 드리겠습니다

cross compile
cross compilecross compile
cross compilehe4722
 
코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu ManualUbuntu Korea Community
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개Jong-il Seok
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)Jaimie Kwon (권재명)
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Seunghun han
 
130907 2 게임 메이커 기본 개념
130907 2 게임 메이커 기본 개념130907 2 게임 메이커 기본 개념
130907 2 게임 메이커 기본 개념Jin-Hyug Yang
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다KWON JUNHYEOK
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규ChangKyu Song
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)Ubuntu Korea Community
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 

Similar a 대신 귀여운 리눅스를 드리겠습니다 (20)

cross compile
cross compilecross compile
cross compile
 
코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual코분투메뉴얼 10.04 Cobuntu Manual
코분투메뉴얼 10.04 Cobuntu Manual
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
Introduce Cobuntu 9.04
Introduce Cobuntu 9.04Introduce Cobuntu 9.04
Introduce Cobuntu 9.04
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)데이터분석의 길 2:  “고수는 최고의 연장을 사용한다” (툴채인)
데이터분석의 길 2: “고수는 최고의 연장을 사용한다” (툴채인)
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈
 
130907 2 게임 메이커 기본 개념
130907 2 게임 메이커 기본 개념130907 2 게임 메이커 기본 개념
130907 2 게임 메이커 기본 개념
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 

대신 귀여운 리눅스를 드리겠습니다

  • 1. Personalize Your World리눅스까지 올렸는데 예쁘게 좀 써 봐야지! 대신귀 여운리 눅스를 드리겟 습니다
  • 2. Three major Operating Systems Windows 장점 - 은행 업무를 볼 수 있음 (머한민국 한정) - 쓰기 쉬움 - 노트북 사면 그냥 깔려 있더라 (왜죠) 단점 - git 쓰다가 속이 터짐 - 개발하다가 빡쳐서 게임을 켜게 됨 - 로고가 귀엽지 않음 macOS 장점 - 일단은 유닉스 기반임 - git 써도 속이 안 터짐 - UI가 예쁨 - 게임 만들기 좋음 - 갬-성 단점 - 진입장벽이 의외로 높음 - 입력기가 거지같음 - 진짜 겁나 무거움 - 로고가 전혀 귀엽지 않음 Linux 장점 - 개발자: (편안) - 컴파일 안 되는 게 없음 - 짱짱 가벼워서 노인학대를 더 오래 할 수 있음 - 로고가 귀여움 (중요) 단점 - 진입장벽이 emacs급임 - 입력기가 거지같음 (2) - 은행이 엿을 먹임 - 사람들이 못생겼대
  • 3. Personalize? Windows - 꾸미기 옵션이 한정적임 - 더 꾸미려면 시스템 라이브러리 패치가 필수 - 근데 그러다가 시스템 불안정해짐 macOS - 꾸미기 옵션이 윈도우보다는 많음 - 윈도우 매니저랑 시스템 유틸이 여기저기 난무함 - 정작 쓸모는 별로 없음 결국 커스터마이징의 끝은 순정 결국 커스터마이징의 끝은 순정
  • 4. What Linux sounds like 구아아아악...
  • 5. What Linux actually is(or at least capable of)
  • 6. My desktop settings Arch Linux on Vanilla Kernel v5.0.5 - bspwm + Plasma 5 (Currently bspwm) - Statusbar using Polybar - Wallpaper using feh - Menu using rofi - Alacritty terminal emulator - KMSCON virtual terminal - Compton compositor (with Kawase Blur patch) - dunst libnotify handler
  • 8. In UNIX, everything is a file. ⇒ 설정 파일도 전부 플레인텍스트! e.g. .Xresources for Xorg config 이 파일을 Dotfile이라고 불러요 UNIX 시스템에서는 숨겨진 파일으로 취급된답니다 How Linux works (제가 쓴 코드 아니에요...)
  • 9. Prerequisites 얘네들은 필수예요! 1. 리눅스를 돌릴 수 있는 컴퓨터 2. 예쁜 것이 무엇인지 판단할 수 있는 두 눈 3. 시행착오와 삽질을 즐길 수 있는 즐기는 자 모드 知之者 不如好之者 好之者 不如樂之者 지지자가 불여호지자요, 호지자가 불여락지자니라. - 논어 -
  • 10. Optional requisites 알아두면 쓸데많은 신비한 프로그래밍 언어 (중요한 순서) 1. Shell Script 2. INI / Properties 3. Python (아니면 Ruby) 4. C 5. XML
  • 11. Before we begin... 0. 배포판을 잘 골라야 해요 Distro with Desktop installed vs. Distro without Desktop installed Arch Linux도 좋은 선택이에요! (영업)
  • 12. The Hitchhiker’s Guide to Linux Personalization 1. 좋아하는 WM이나 DE를 골라주세요 a. GTK Lineup GNOME / Cinnamon / MATE / Pantheon / Xfce / LXDE (discontinued) b. Qt Lineup KDE Plasma / LXQt c. Bare minimum Window Managers Openbox / i3 / Awesome WM / dwm / 2bwm / bspwm
  • 13. The Hitchhiker’s Guide to Linux Personalization 2. 다운로드를 하고 설치도 해 주세요 자세한 방법은 여러분의 패키지 매니저 문서를 참고하세요 apt pkgSnappy pacman yum Zero Installbrew (?) slackpkg PETget 사실 macOS도 UNIX이다 보니 쉘 모양 정도는 같은 방법으로 바꿀 수 있어요 (...)
  • 14. The Hitchhiker’s Guide to Linux Personalization 3. 이제 설정파일을 마음껏 바꿔 봐요! a. GUI 설정 유틸리티가 있는 경우 gnome-tweaks or lxappearance for GTK qtconfig for Qt4, qt5ct for Qt5 b. 텍스트 파일을 편집해야 하는 경우 XML, INI (Properties), Shell Script를 지원하는 에디터를 추천해요 c. 설정 파일 위치는 프로그램마다 달라요 $XDG_HOME_CONFIG 디렉터리를 먼저 찾아보세요! (보통 ~/.config로 설정되어 있어요)
  • 15. The Hitchhiker’s Guide to Linux Personalization 4. PROFIT! (Openbox + LXDE setup inspired by Windows XP) ????????
  • 16. Where to start? ● 어디서부터 시작해야 할 지 잘 모르겠어요! ● 어떤 식으로 편집해야할지 잘 모르겠어요! ● 직접 사자가 돼서 제 자신을 벼랑에 빠뜨리고 싶어요! ⇒ Shell Customization!!
  • 17. Why shell? 1. 여러가지 쉘이 있어요! a. bash, zsh, fish ⇒ THE BIG THREE b. PowerShell, xonsh ⇒ THE WEIRDOS 2. 리소스 파일 == 쉘 스크립트 (쉘 스크립트는 좋은 실험대상이죠) 3. 잘못하면 시스템이 펑♪ 4. 약간의 노력으로 최고의 아웃풋을!
  • 18. Shell customization 101 1. 원하는 쉘을 골라주세요! ex) zsh이나 fish (PowerShell 쓰는 멍청이 멋쟁이도 있어요) 2. 먼저 이것저것 재미있는 기능을 추가해 볼까요? ex) 터미널 실행시 tmux 자동으로 켜기 3. 편리한 라이브러리를 추가해 줄게요! ex) thefuck 커맨드 수정 플러그인 4. 예쁜 테마를 적용하면 끝! ex) Powerlevel9k 파워라인 테마
  • 19. Before and after ▼ Bash without customization ▼ Zsh with customization Before After
  • 20. But, just once...? New computer, new life! (그치만 제 귀여운 데스크탑이 전부 날아갔는데요...?) 어떻게 하죠...? 처음부터 다시 만들기 설정 파일을 USB에 넣어서 가지고 다니기 ......더 좋은 방법은 없을까요?
  • 21. Automate, automate, automate! 프로그래머 == 자동화 빌런 당연한 소리지만요 1. git 2. GNU stow 3. Makefile (optional)
  • 22. What are these things anyways? 1. git a. VCS 소프트웨어 (+ 대용량 파일 관리 소프트웨어 with Git LFS) b. GitHub(💕) / GitLab / BitBucket c. 코드 관리의 최강자 (Mercurial 사용자들은 싫어하더라구요) (왜구랭 git 유저는 Mercurial 욕 안하자나)
  • 23. What are these things anyways? 2. GNU Stow a. 원래는 프로그램 버전 관리 소프트웨어 e.g. 컴퓨터에 여러 버전의 Perl을 설치해서 쓸 수 있어요 b. 사실상 Symlink 생성 프로그램 우리는 이 기능을 쓸 거예요
  • 24. What are these things anyways? 3. Makefile a. 빌드 자동화 소프트웨어 근데 요즘은 CMake 같은 게 대신 뚝딱뚝딱 만들어줘서 직점 짤 일은 별로 없어요 b. 사실상 쉘 스크립트 자동화 프로그램
  • 25. Lv. 1: Configs everywhere $HOME 디렉터리를 git 리포지토리로 만들어보자! $XDG_HOME_CONFIG이 $HOME 디렉터리 안에 있다고 가정할게요 Fatal: 리포지토리가 너무 더러워요
  • 26. Lv. 2: Symlinks everywhere 설정 파일을 한 곳에 모으고, symlink를 만들어보자! 설정 파일을 전부 ~/Dotfiles에 짱박아두고 적당한 곳에 symlink를 걸어볼게요 훨씬 낫네요! 하지만 이거 하려면 파일 하나하나에 ln -s 명령어를 써야 하나요...?
  • 27. Lv. 3: Stow everywhere GNU Stow를 사용해서 자동화를 해보자! 와! stow <directory> 명령어를 쓰면 자동으로 링크가 주루룩 생겨요! 한 줄이면 돼요. 딱 한 줄이면. 그런데 dependency는 어떡하죠?
  • 28. Lv. EX: Makefile everywhere Makefile으로 프로그램 설치까지 해보자! 각 디렉터리 안에 requirements라는 파일에 필요한 프로그램 이름을 전부 넣으면 돼요 코드가 더러워도 용서해주세요 (...) Shell Script를 야매로 배워서리...
  • 29. Ultimate Personalization Machine™ 이제 완성된 스크립트와 설정 파일을 업로드하면 끝! ex) https://github.com/RangHo/dotfiles 다른 웹사이트에도 우리 예쁜 리눅스를 자랑해 보아요 - https://reddit.com/r/unixporn - https://twitter.com/
  • 30. Open ended (the good parts) 기능을 더 넣어볼까요? or 더 편하게 할 수 있을까요? 1. 깨-끗한 파이썬 환경을 위해 설정파일용 venv 만들기 2. 편리한 스크립트를 만들어 설정파일과 함께 공유하기 3. 크로스플랫폼, 크로스디스트로 환경 조성하기 4. 예쁜 리눅스를 만들기 위한 가이드를 첨부하기 가능성은 무궁무진해요!
  • 31. Have fun personalizing your world! hello@rangho.moe