반응형

1. 펄스 부호 변조(PCM)에 대해서

 

PCM이란 아날로그 데이터를 디지털화 시키는 작업을 의미한다.

아날로그 신호 -> 데이터 크기에 따라 높이가 다른 펄스열로 나열한 방법(1차 펄스변조) -> 이러한 멀티 레벨 신호를 0/1의 2진 신호로 바꾸어 주는 작업(펄스 부호 변조)

 

컴퓨터에 전송되는 아날로그 신호는 대부분 PCM을 거친다.

 

과정: PAM이라 불리는 샘플링(Sampling) -> 양자화(Quantization) -> 부호화(Encoding)

 

 

2. CPU 레지스터 종류

Accumulator(AC): 연산 과정의 데이터를 일시적으로 저장하는 레지스터

Program Counter(PC): 다음에 인출될 명령어의 주소를 보관하는 레지스터

Memory Address Register(MAR): PC에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터

Memory Buffer Register(MBR): 기억장치에 저장될 데이터 혹은 기억장치로부터 읽힌 데이터가 일시적으로 저장되는 버퍼 레지스터

Instruction Register(IR): 가장 최근에 인출된(현재 실행중인) 명령어가 저장된 레지스터

Status Register(SR): 현재 CPU의 상태를 보관하는 레지스터

 

 

3. 소수점 진수 변환하는 방법

계속 곱해서 정수 부분만 가져온다.

출처: https://bboy6604.tistory.com/entry/%EC%86%8C%EC%88%98%EC%A0%90-%EC%95%84%EB%9E%98%EC%9D%98-%EC%A7%84%EB%B2%95-%EB%B3%80%ED%99%98

 

4. 네트워크 토폴로지

성형(Star)

장점: 장애 발견이 쉽고, 관리가 용이

단점: 주 노드에 문제 발생 시 전체 네트워크 사용 불가

 

버스형(Bus)

장점: 노드의 추가/삭제가 용이, 특정 노드의 장애가 다른 노드에 영향을 미치지 않음

단점: 공통 배선의 대역폭을 공유하기 때문에 노드 수가 증가하면 네트워크 성능 저하

 

링형(Ring)

장점: 단 방향 통신으로 신호 증폭이 가능하여 거리 제약이 적다.(계속 증폭 시켜주면 되니까)

단점: 노드의 추가/삭제가 불편

 

망형(Mesh) - 모든 노드가 서로 일대일로 연결된 상태

장점: 특정 노드의 장애가 다른 노드에 영향x / 회선장애에 유연한 대처 가능

단점: 회선 구축 비용이 많이 들고, 새로운 노드 추가 시 비용 부담 발생

 

 

5. RAID 레벨에 대해서

 

RAID란?

Redundant Array of Independent Disk (독립된 디스크의 복수 배열) 이다.

 

RAID 사용 시 기대효과?

1. 대용량의 단일 볼륨 효과

2. 디스크 I/O 병렬화로 인한 성능 향상(RAID 0, 5 6 등)

3. 데이터 복제로 인한 안정성(RAID 1 등)

 

 

RAID는 기계적인 한계로 성능이 느린 하드디스크를 보완하기 위해 만들어진 기술이다.

RAID를 구성하는 디스크의 개수가 많아도 RAID 구성방식에 따라서 성능, 용량이 달라진다.

이 구성방식을 RAID 레벨이라고 부른다.

RAID 0 ~ 6 까지 있지만,

최근에는 RAID 0, 1, 5, 6만 가능하다. 

 

1) RAID 0

출처:  https://harryp.tistory.com/806  [Park's Life]

스트라이핑이라고  부른다. 

최소 2개의 디스크가 필요하다.(min(N) == 2)

장점: 전체 디스크를 모두 동시에 사용하기 때문에 성능은 N배가 된다. 용량도 N배가 된다.

단점: 하나의 디스크라도 깨지면, 전체 RAID가 깨진다. 즉 안정성은 1/N으로 줄어든다.

성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있습니다

 

 

2) RAID 1

미러링이라고 부른다.

최소 2개의 디스크가 필요하다.

RAID 1은 모든 디스크에 데이터를 복제하여 기록합니다.

즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장합니다. 실제 사용 용량 = 디스크의 용량과 같다.

장점: read 시 전체 디스크에서 읽어오기 때문에 빠르다.(단일 디스크의 N배의 성능) // 최대 강점은 안정성이 높다는 것!

단점: write시에 데이터를 복제하기 때문에 시간이 조금 걸린다.

 

안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 거의 사용하지 않습니다.

 

3) RAID 2

현재 사용하지 않는 RAID 레벨이다. 최소 3개로 구축 가능함!

bit 단위로 스트라이핑하고, error collection을 위해 Hamming Code를 사용한다.

 

m+1개의 데이터 디스크와 m개의 패리티 디스크로 구성되는 것 같습니다. (즉 N == (m+1) + m)
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

 

 

4) RAID 3

현재 사용하지 않음, 최소 3개의 디스크 구축 가능

Byte 단위로 스트라이핑하고 error collection을 위해 1개의 패리티 디스크 사용함.

용량 대비 성능이 단일 디스크에 비해 (n-1)배 상승! -1은 패리티 디스크 용도

그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

 

 

5) RAID 4

현재 거의 사용되지 않음,

Block 단위로 스트라이핑한다. Error Collection을 위해 1개의 패리티디스크 사용.
용량 및 성능이 N-1 배이다.

 

Block 단위로 스트라이핑하는 것은 RAID 5,6과 동일하지만, 패리티 비트를 하나의 디스크에 모두 저장해서,

패리티 디스크 사용량이 높아져 패리티 디스크의 수명이 줄어든다.

RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.

 

6) RAID 5

제일 사용빈도가 높은 RAID 레벨이다. 디스크 최소 3개 필요

Block 단위로 스트라이핑하고, error collection을 위해 1개의 디스크에 패리티 비트를 저장하는데, 매번 다른 디스크에 저장한다.

성능은 단일 디스크의 N-1배이다.

1개의 디스크 에러시 복구 가능(2개 이상부터 불가능)

RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.

 

 

7) RAID 6

RAID 5레벨보다 성능, 용량을 줄이고 안정성을 택한 것. 최소 4개로 구축 가능

Block 단위로 스트라이핑하고, error collection을 위해 매번 2개의 패리티 비트를 다른 디스크에 저장한다.

성능은 단일 디스크의 N-2배이다.

그리고 2개의 디스크 에러 시 복구 가능합니다. (3개 이상의 디스크 에러 시 복구 불가능)
조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용합니다.

8) Nested RAID(중첩 RAID)

여러가지 조합해서 만듬.

 

 

6. 다중 스레드

장점:

1) 각 스레드가 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다.

2) 하나의 스레드가 작업을 할 때, 다른 스레드가 별로 작업을 할 수 있어서 사용자와의 응답성도 높다.

단점: 한 스레드에서 문제가 발생하면 전체 프로세스에 영향이 미칠 수 있다.

 

각 스레드가 서로 교체될때, 문맥교환(Context Switching)이 발생한다. 오버헤드 증가. 그러나 프로세스만큼은 아님.

오히려 많은 양의 단순한 계산은 단일 스레드가 더 성능이 좋을 수 있다.

 

 

* 가비지 컬렉터

데몬 스레드를 사용하는 가장 대표적인 예이다.

할당한 메모리 중 더 이상 사용하지 않는 메모리를 자동으로 찾아주어 해제하는 역할을 한다.

보통 가비지 컬렉터가 동작하는 동안, 프로세서가 일시적으로 중단되어 필연적으로 성능 저하가 온다.

 

 

7. OSI 7계층

물리: 통신 케이블을 통해 전기 신호를 사용하여 비트 스트림을 전달(데이터 종류나 에러 확인은 하지 않는다.)

데이터링크: 네트워크 계층에서 받은 데이터를 프레임(frame)이라는 논리적인 단위로 구성하고 전송에 필요한 정보를 덧붙여 물리 계층으로 전달한다. 물리계층의 데이터 전송 시 오류 감지 역할(오류 발생하면 재전송)

네트워크: 전송 데이터를 목적지까지 경로를 찾아 전달하는 역할(라우팅 작업 이루어짐)

전송: 데이터를 전송하고, 전송 속도를 조절하고, 오류 발생한 부분은 다시 맞춰주는 역할(TCP 프로토콜을 사용하게 됨) (데이터 전송 단위: TCP: Segment, UDP: Datagram 이다.)

세션: 전송하는 두 종단 프로세스 간 접속(session)을 설정하고, 유지하고 종료하는 역할을 한다.(TCP/IP 세션을 만들고 없앰)

표현: 전송하는 데이터의 표현 방식을 관리하고 암호화하거나 데이터를 압축하는 역할을 한다.(인코딩, 디코딩 이루어짐)

응용: 사용자를 위한 인터페이스 지원

 

8. 캐시 기억장치 교체 알고리즘

1. LRU: 가장 오랫동안 사용되지 않은 페이지 교체

2. FIFO: 가장 오래된 페이지 교체함

3. LFU(Least Frequently used): 참조 횟수가 가장 작은 페이지 교체

4. Random: 사용횟수와 무관하게 임의로 블록을 교체함

5. Optimal: 가장 오랫동안 사용되지 않을 페이지 교체(구현 불가능, 다른 알고리즘과 비교 연구 목적)

6. MFU(Most Frequently Used): LFU 의 반대로 참조 횟수가 가장 많은 페이지 교체

 

 

 

9. 공개키 암호화 vs 비공개키 암호화

공개키 암호화: 공개키와 비밀키가 존재(공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키 소유자만 알 수 있다.)

-> 이 방식에서 핵심은 공개키를 통해 암호화(데이터 보안 중점)한 것은 개인키를 통해 복호화할 수 있고 개인키를 통해서 암호화(인증 과정에 중점 -> 데이터 제공자의 신원이 보장됨)한 것은 공개키를 통해서 복호화할 수 있다는 것이다.

공개키 암호와의 대표적인 알고리즘은 데이터 암호화 표준(Data Encryption Standard)이다.

비공개키 암호화: 동일한 키로 암호화, 복호화를 동시에 할 수 있는 방식

 

비밀키 암호화는 암호화와 복호화 과정에서 서로 다른 키를 사용하는 비대칭 암호화(asymmetric encryption)이다.

공개키 암호화가 비공개키 암호화보다 느리다.(비공개키가 더 빠름)

 

 

10. 세마포어와 뮤텍스

세마포어(semaphore): 공유된 자원의 데이터를 여러 프로세스가 접근하지 못하도록 막는 것

뮤텍스(Mutex): 공유된 자원의 데이터를 여러 스레드가 접근하지 못하도록 막는 것

 

* Critical Section이란?

OS에서 Critical Section은 아주 중요한 부분이다.

다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하고 있을 때, 각 프로세스에서 공유 데이터를 액세스하는 프로그램 코드를 가리키는 말이다. 

 

 

11. 이진 트리

완전 이진 트리: 마지막 레벨을 제외한 모든 노드들이 꽉 차 있고, 마지막 레벨은 왼쪽부터 마지막 노드까지 차례대로 차있는 상태

포화 이진 트리: 마지막 레벨까지 꽉 채워진 상태

 

이진 트리 순회 종류

1) 전위 순회: 뿌리 -> 왼쪽 -> 오른쪽(깊이 우선 느낌)

2) 중위 순회: 왼쪽 -> 뿌리 -> 오른쪽

3) 후위 순회: 왼쪽 -> 오른쪽 -> 뿌리

4) 층별 순회: 뿌리부터 층별로 순회(너비우선 느낌)

 

 

 

12. 프로세스 스케쥴링(비선점 - 빼앗지 않음, 선점 - 빼앗음)

 

비선점:

1) FCFS(First Come First Serve Schedule): 비선점, CPU 를 먼저 요청한 프로세스가 먼저 CPU 를 배정 받는 스케줄링 방법이다.

2) SJF: 비선점형, 실행시간이 짧은 작업(프로세스)부터 처리하므로 평균 대기 시간이 FCFS보다 짧다.

 

선점:

1) Round-Robin: 우선순위가 적용되지 않는 단순한 선점형 방식이다.

2) 다단계 큐(Multi-level Queue): 우선순위에 따라 준비된 큐 여러개를 사용하는 방식이다. 

우선순위가 낮은 하위 단계의 프로세스가 실행중이어도, 우선순위가 높은 단계의 프로세스가 들어오면 CPU 빼앗김

3) SRT(Shortest Remaining Time): CPU 할댱량이 적은게 들어오면 그거 먼저 빠르게 처리함

 

* 프로세스 상태

생성 - 준비 - 실행 - 대기 - 종료

 

 

13. TCP/IP 프로토콜 스택이란?

4개의 계층으로 나뉨(응용, 전송, 네트워크, 데이터링크)

데이터링크: LAN,WAN, MAN과 같은 네트워크 표준과 같은 프로토콜을 정의한다. 두 호스트의 물리적인 연결의 표준을 담당함

네트워크: 물리적 연결 완료 후 경로 설정 단계. 경로는 비 연결적이다. 일정한 경로를 제공하지 않고, 중간에 경로가 바뀔 시 데이터 손실 발생할 수 있음. - 오류 발생에 대한 대비가 되어있지 않다.

전송: 두 호스트간 데이터 송/수신 방식에 대한 약속(TCP/UDP) 결정. TCP는 보내고 받았는지 확인하지만, UDP는 보내기만 함.(확인없음)

응용: 클라이언트와 서버간의 데이터 송수신에 대한 약속들

 

 

* 아래는 각 계층 별 주요 프로토콜

 

 

 

14. 갖가지 법칙들

1) 무어의 법칙: 인텔 공동 창립자인 고든 무어가 말한거, 2년마다 칩에 집적할 수 있는 트랜지스터 수가 2배씩 증가함

2) 암달의 법칙: 암달의 저주라고도 불림, 컴퓨터 일부를 개선할 때, 전체적으로 얼만큼의 성능 향상이 일어나는지 계산.

3) 구스타프슨의 법칙: 컴퓨터 과학에서 대용량 데이터 처리는 효과적으로 병렬화할 수 있다.

4) 폰노이만 아키텍쳐: 컴퓨터 설계 관점 분석할 때, 사용되는 구조.(프로그램 내장 방식의 컴퓨터)

출처: https://blog.naver.com/with_msip/221981730449

폰노이만 이전(애니악 시절) 1+1 계산 시에는 직접 전선을 뺏다가 껴야하는데, 폰노이만 구조의 컴퓨터는 CPU라는 프로그램이 안에 내장되어 있어서 바로 계산 가능.

5) 리틀의 법칙: 프로세스의 안정상태에서의 재고와 산출율 그리고 흐름 시간의 상관관계를 나타낸 법칙, IT에서는 성능평가에 사용됨.

 

암달의 법칙은 Latency에 기준, 구스타프슨은 Throughput에 기준을 둠.

 

 

15. 슈퍼스칼라란?

한 프로세스 사이클 동안에 하나 이상의 프로세서를 실행시킬 수 있는 프로세서 아키텍처를 의미한다.

 

16. 분기 예측 기법이란?

다음 실행될 조건문이 어느 곳으로 분기할 것인지 확실히 알게 되기 전에 예측하는 CPU 기술

 

17. VLIW란?

VLIW(Very Long Instruction Word)는 명령어를 여러개 처리 할 수 있는 방식으로, 동시에 여러 명령어를 실행할 수 있도록 하는 연산 처리 기술중 하나이다.

출처: http://wiki.nex32.net/%EC%9A%A9%EC%96%B4/vliw

 

18. SIMD란? - 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법이다. 

SIMD란 Single Instruction Multiple Data의 약자로, 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법입니다. 일반적인 프로그램의 경우 대부분 SISD(Single Instruction Single Data)으로 구현되어 있고, 이것은 기본적인 폰노이만 컴퓨터가 사용하는 방식입니다. 하지만 동영상 인코딩, 그래픽 렌더링 등의 작업에 SIMD를 적용하였을 때는 성능적으로 큰 이득을 취할 수 있습니다.

 

19. 아날로그 컴퓨터 vs 디지털 컴퓨터

연산방식: 아날로그는 미적분, 디지털은 사칙연산

입력 형식: 아날로그는 길이, 전압, 전류, 디지털은 멀티미디어 자료

출력 형식: 아날로그는 곡선, 그래프, 디지털은 멀티미디어

회로 구성: 아날로그는 증폭회로,릴레이 방식, 디지털은 논리회로이다.

출처: https://m.blog.naver.com/PostView.nhn?blogId=djfduddldu&logNo=20103053843&proxyReferer=https:%2F%2Fwww.google.com%2F

 

20. 스레싱이란?

너무 페이지 부재가 자주 발생하는 현상이다.

어떤 프로세스가 계속적으로 페이지 부재가 일어나서,

페이지 교체가 자주 발생하여 프로세스 처리시간보다 페이지 교체 시간이 더 많아지는 현상.

 

* 스레싱과 페이지 부재(교체)는 정비례관계

 

21. SCM이란?

공급망 관리(공급망 전체를 하나의 통합된 개체로 보고 이를 최적화하고자 하는 경영 방식)

 

22. ERP란?

Enterprising Resource Planning의 약자로, 기업 내 생산, 물류, 회계, 재무, 영업, 구매, 재고 등을 통합적으로 관리하는 프로그램.

 

23. EDI란?

Electronic Data Interchange의 약자로, 표준화된 상거래 서식, 공공서식을 서로 합의하여 전자 문서로 만들어 컴퓨터나 통신을 매체로 서로 교환하는 방식이다. 

 

24. KMS란?

Knowledge Management System의 약자로 조직이나 기업의 인적자원이 축적하고 있는 개별적인 지식을 체계화하여 공유함으로서 경쟁력을 향상시키기 위한 기업 정보 시스템이다.

 

 

25. 관계 대수 연산

프로젝트: 릴레이션의 수직적 부분집합이라고 볼 수 있다.

출처: https://blog.naver.com/k97b1114/140152644090

셀렉트: 릴레이션에서 주어진 조건을 만족하는 튜플을 고르는 연산

 

 

 

 

 

* 조인도 있다.

 

* 디비전도 있다.

 

 

26. 코틀린이란

오답: 그래픽 요소를 강화한 게임 개발 전용 언어이다.

정의: 자바가 실행될 수 있는 환경에서 자바를 대체할 수 있도록 개발된 언어이다. 주로 웹앱의 백엔드, 안드로이드 앱

 

* 자바는 컴파일된 프로그램이 JVM상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어이다. 

Java ----> 컴파일 ----> class ---> 인터프린터 ----> 실행

즉 하이브리드 방식이다.!

 

 

27. 페트리넷이란?

프로세스 마이닝의 가장 기본이 되는 프로세스 모델이다.

 

출처: https://process-mining.tistory.com/16

가장 간단한 형태로 프로세스를 나타낼 수 있다. 

 

 

28. 자료흐름도는 구조적인 관점에서 분석할 때 사용된다.

 

29. 동적 관점의 시스템 기술 시 필요한 것.

사건추적도: 사건 추적도란 일반적으로 사건이 일어나는 일종의 시나리오를 작성하여 사건 추적한다. 사건 추적도에서는 사건의 순서와 사건을 주고받는 객체나 시스템을 표현하며, 사건의 흐름은 화살표로 표시한다

 

상태변화도: state transition diagram은 시스템이 가지고 있는 값을 표시하는 상태 외부에서 가해지는 사건이다.

페트리넷도 동적 관점에서 필요하다.

 

30. 중복 검사

 

1) 순환중복검사

 

 

2) 수직 중복 검사

수직 패리티 체크 = 수직 중복 검사

3) 수평 중복 검사

 

4) 해밍코드는 오류가 발생한 부분을 검출한 후 직접 수정까지 하는 방법이다.

 

5) 체크섬은 중복검사의 한 형태이다. 송신된 자료의 무결성을 검증하는 용도로 사용됨.

 

 

31. 이진탐색트리의 삭제

1) 마지막 단말 노드 삭제 시 -> 그냥 삭제하면 된다.

2) 중간 노드 삭제시

2-1) 왼쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 큰 값(즉 제일 오른쪽 하위)로 대체해준다.

2-2) 오른쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 작은 값(즉 제일 왼쪽 하위)로 대체해준다.

3) 왼쪽, 오른쪽 자식이 모두 있는 노드의 삭제(오른쪽 서브 트리의 가장 왼쪽 노드를 찾는다.)

 

 

 

32. 리눅스 fork()에 대해서!

출처: https://medium.com/pocs/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%95%EC%9D%98%EB%85%B8%ED%8A%B8-3-9ed24cf457ce

 

 

33. 최대힙 삽입/삭제

 

 

 

34. SYN-Flooding 공격

위의 2번단계에서 목적지서버(B)는 소스서버(A)가 ACK패킷을 보내주기를 계속적으로 기다리는 것이 아니라일정시간 후 요청이 오지 않으면

백로그큐(Backlog Queue)가 허용하는 공간에 연결정보(로그)를 보관하게 됩니다.

이러한 상태가 지속적으로 요청되어 연결정보(로그)가 쌓이게 되면 목적지서버(B)의 특정서비스가 마비될 수 있습니다.

이러한 공격을 DOS공격의 일종인 SYN Flooding 공격이라고 합니다.

 

 

35. 부동소수점 vs 고정소수점

부동

 

고정

 

16. RIP 프로토콜

 

 

37. 서브넷마스크 관련(reakwon.tistory.com/69)

 

 

 

* MPEG-2

 

 

반응형

'IT' 카테고리의 다른 글

Django 설치 및 프로젝트 생성 - Ver 2  (0) 2021.01.30
Django 설치 및 프로젝트 생성  (0) 2021.01.30
Mac에 Emacs 연동안될 때  (0) 2020.11.03
코딩 폰트에 대해서  (0) 2020.10.29
터미널 실행 시 명령어 자동 실행  (0) 2020.10.29
반응형

Linux 혹은 Mac 터미널에서 특정 명령어가 없다고 나올때

예를 들어 emacs 키려고 ema 라고 했는데 없는 명령어라고 나올때, 경로가 설정되지 않은 경우가 많다.

 

이런 경우에는 

1) 터미널에서 which emacs 라고 검색한 후에 나오는 emacs의 경로를 복사하고

 

2) zsh 인 경우에는 vi ~/.zshrc 

일반 터미널 경우에는 vi ~/.bashrc

로 설정 파일을 들어가서 아래 테스트를 입력해준다.

alias ema='/usr/local/bin/emacs' // 여기서 emacs 시스템의 경로를 넣어준다.

 

 

3) 그리고 해당 설정 파일을 적용하기 위해

아래 명령어를 입력해준다.

source ~/.zshrc 혹은 source ~/.bashrc
반응형
반응형

ppss.kr/archives/66633

 

쾌적한 코딩을 위한, 코딩용 폰트

※ 이 글은 「코딩 폰트 디자인기, Monoid」와 함께 읽으면 더욱 좋습니다. '코딩하는 디자이너' '코딩 교육 열풍' 등 코딩을 향한 열기가 뜨겁습니다. 디자이너부터 어린이까지 코딩에 관심이 커

ppss.kr

 

위 글을 한번 읽어보면 좋을 것 같다.

반응형
반응형

터미널 실행 시 특정 명령어가 자동으로 실행되도록 하기 위해서

아래와 같이 진행해준다.

 

나는 syntax-highlight가 계속 반영이 안되서 

Iterm2가 켜지자마자 바로 실행되도록 해보았다.

 

일단 아래 명령어를 쳐서 /etc/rc.local 파일을 수정해준다.

 

아래와 같이 명령어를 넣어준다.(이 부분은 각자 필요한 명령어를 넣어주면 된다.)

나는 파일을 새로고침해주는 source 명령어를 넣어주었다.

근데 파일을 수정할 수 없다는 에러가 나왔다.

접근할 수 없는 위치에 파일을 생성하려고 하니 발생하는 문제 같다.

x

 

이것을 해결하려면 : 키를 누르고 아래와 같이 입력하면 된다.

:w !sudo tee % > /dev/null

그리고 컴퓨터의 패스워드를 입력해준다.

 

그리고 enter를 눌러준다.

 

다시 화면이 나오면 :q! 를 입력하고 나온다.

 

그러면 파일이 생성되었을 것이다.

 

 

그러나 또 수정하려고 하면 다시 이 작업을 반복해주어야 한다.

이것을 방지하기 위해 chmod 775 /etc/rc.local 명령어를 통해 권한을 부여해준다.

 

이 부분은 계속 공부해봐야 겠다

 

일단 해결한 방법은

아래 설정 파일로 들어가서

vi ~/.zshrc

 

그냥 아래 명령어를 기입해주니까 됬다.

내 생각엔 리눅스 부팅시마다 해당 설정파일을 한번 훓는 것 같다.

아래 명령어를 기입해주면 실행된다.

source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

 

 

조금 더 예뻐진 Iterm 화면을 볼 수 있다. 오예!!

반응형
반응형

ZSH이란?

우리가 부르는 기본 쉘의 확장판이라고 생각하면 편하다.

예쁘게 꾸밀 수도 있고, 더 많은 기능을 제공해준다.

 

경로를 추측해주기도 하고 오타를 수정해주기도 한다.

오타 수정 화면(git add)

 

 

1) Iterm2 설치

아래 링크에 들어가서 설치해준다. 

www.iterm2.com/

 

iTerm2 - macOS Terminal Replacement

iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain

www.iterm2.com

 

2) 컬러스키마 설치(선택사항)

그리고 아래 링크에 들어가면 사용하고 싶은 다양한 컬러 스키마를 선택할 수 있다.

github.com/mbadolato/iTerm2-Color-Schemes

 

mbadolato/iTerm2-Color-Schemes

Over 230 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Konsole, PuTTY, Xresources, XRDB, Remmina, Termite, XFCE, Tilda, FreeBSD VT, Terminator, Kitty, MobaXterm, LXTer...

github.com

저는 안드로메다(Andromeda)가 눈에 확 띄고 마음에 드네요.

상단 오른쪽에 CODE -> 다운로드 버튼 누르시면 됩니다.

 

 

 

3) 다운 받은 후에 Iterm2를 실행하고 cmd이랑 ,  를 눌러 환경설정을 띄운다.

그리고 Profile -> color로 들어간다.

 

그리고 아래 color presets이라는 dropbox를 클릭하고 Import를 누르고 아까 다운받았던 Andromeda.iterm.colors를 추가해준다.

 

그리고 다시 color preset에 보시면 Andromeda가 추가되어 있습니다.

 

 

4) 창을 닫고 아래 명령어를 통해 brew를 설치해준다.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

아래 명령어를 실행했을 때, 

brew --version

 

위에 화면처럼 나오면 정상적으로 설치된 것이다.

 

5) 설치된 brew로 zsh을 설치할 것이다.

brew install zsh

 

 

6) Oh My ZSH 설치

아래 오른쪽 그림의 배너가 나오면 설치 완료된 것임.

 

지금까지 설치한 것을 정리하면

Iterm2 - 기본 mac의 terminal을 확장시킨 프로그램

Homebrew - 맥에서 다양한 플러그인이나 라이브러리를 쉽게 설치하도록 도와주는 패키징 매니저

ZSH - 쉘의 확장판

Oh My ZSH - ZSH을 쉽게 사용하도록 도와주는 플러그인

 

 

일단 지금까지만 봐도 iterm2이 충분히 예쁘게 바뀌었다.

 

7) 더 강력하게 만들기 - agnoster 설치

agnoster 테마는 현재 디렉토리에서 git의 상태를 알려주는 플러그인이다.

이 기능을 통해서 현재 마스터 브런치인지, 개발 브런치인지, 커밋이 되어있는지를 친절하게 알려준다.

 

아래 명령어를 통해 zsh 설정 파일에 들어간다.

vi ~/.zshrc

아래의 ZSH_THEME="robbyrussell" 부분을 agnoster로 수정해준다.

 

agnoster는 기본 테마이기 때문에 추가적인 설치는 필요하지 않다.

수정하는 방법은 a 키를 누르면 vi 편집기에서 편집을 시작한다는 의미이다.(esc 키는 편집을 마쳤다는 의미이다.)

수정하고 나올때는 esc + : + wq 키를 눌러서 나온다. (wq 는 write and quit = 저장하고 종료의 의미이다.)

 

그리고 원래는 설정파일이 적용되는 시점이 컴퓨터 재부팅이지만, 귀찮으니까 수동으로 적용해준다.

아래 키를 누르면 된다.

source ~/.zshrc

 

 

바뀐 것을 확인할 수 있다.!!

 

8) D2 폰트 적용

그리고 D2 폰트를 다운받아서 적용해본다.

아래 링크에 들어가 다운받는다.

github.com/naver/d2codingfont

 

naver/d2codingfont

D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub.

github.com

그리고 다운받은 폰트를 설치해준다. (직접 들어가서 최신버전 D2Coding을 누르고 서체설치 클릭!)

 

 

그리고 다시 cmd + , 키를 눌러서 설정창에 들어간 후에 profile -> text 탭에 들어간다.

그리고 change font를 클릭하고 설치된 D2 코딩폰트 클릭해준다. 나는 13pt 하였다.

 

 

그리고 폴더에서 git 관련 폴더에 들어가보면 조금 컬러링이 된 것을 볼 수 있다.

근데 엄청 예뻐 보이는 건 아니다.ㅋㅋㅋ

그래도 조금씩 꾸며나가고 있다.

 

9) 사용자 이름만 남기기

이제 이 MacBook-Pro 부분을 지워보겠습니다.

 

다시 아래 명령어를 통해 zshrc 파일에 들어간다.

vi ~/.zshrc

 

그리고 맨 아래에 아래와 같은 코드를 추가해준다.

prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
  fi
}

 

이렇게하면 사용자 이름만 변경되고

아예 아무것도 나오게 하고싶지 않다면 중괄호 안의 내용을 지우고 {}로만 놔둡니다.

 

나는 그대로 진행하였다.

그 결과

 

사용자 이름인 younghunjoo만 남고 나머지는 사라졌다! 오예~

 

10) New Line 적용하기

근데 여전히 ~/Desktop/test/git/backend/demo 같이 현재 위치가 너무 길어서 line이 아래줄로 내려가는 현상이 발생한다.

이것을 고쳐보자!

new line 적용하면 명령어를 아래 라인부터 시작할 수 있다.

 

아래 명령어를 실행한다.

oh-my-zsh 폴더안에 themes 폴더 안에 agnoster.zsh-theme 을 편집하고 나중에 편집된 내용을 열어본다는 의미이다.

vi ~/.oh-my-zsh/themes/agnoster.zsh-theme
//or
open -a TextEdit ~/.oh-my-zsh/themes/agnoster.zsh-theme

 

그리고 맨 아래쪽에 build_prompt() 안에 아래와 같은 prompt_newline을 추가해준다.

순서중요!!

build_prompt() {
  RETVAL=$?
  prompt_status
  prompt_virtualenv
  prompt_context
  prompt_dir
  prompt_git
  prompt_bzr
  prompt_hg
  prompt_newline //이부분을 추가 꼭 순서 지켜서
  prompt_end
}

 

그 다음 바로 아래에 newline이 무엇인지 정의하는 코드를 넣어준다.

prompt_newline() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR
%{%k%F{blue}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi

  echo -n "%{%f%}"
  CURRENT_BG=''
}

 

 

최종적으로 보면 아래와 같다.

 

 

그리고 source ~/.oh-my-zsh/themes/agnoster.zsh-theme 코드를 통해 설정 파일을 적용해보면 아래와 같이 나타나면 정상이다.

 

 

11) Syntax Highlight 효과 주기

하이라이트 효과를 통해 사용할 수 있는 명령어라면 초록색으로 표시되도록 만들 수 있다.

아래 명령어를 통해 적용할 수 있다.

//brew를 통해 설치해줍니다.
brew install zsh-syntax-highlighting
//플러그인을 적용합니다.
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

 

근데 또 MacBook-Pro가 나와서 다시 적용해주었다.(뭐지?)

 

 

 

 

 

앞으로 더 공부해야 하는 부분

medium.com/harrythegreat/fzf%EB%A1%9C-zsh-%ED%84%B0%EB%AF%B8%EB%84%90-%EB%8D%94-%EA%B0%95%EB%A0%A5%ED%95%98%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-730c20eb496b

 

FZF로 ZSH 터미널 더 강력하게 사용하기

이번 포스팅은 정말 쉽고 빠르고 좋은 검색기 FZF를 이용해서 터미널을 더 편하게 사용할 수 있는 방법과 ZSH와 함께 사용할 수 있는 방법에 대해 설명하려 합니다.

medium.com

 

 

반응형
반응형

frontend는 react로 구성하고

backend는 springboot로 구성한다.

 

이 둘을 연동해보자!

 

1) 아래 사이트에서 springboot 프로젝트 하나 만들어준다.(STS4 사용했는데, IntelliJ로 바꿈)

start.spring.io/

 

 

위의 설정을 따라 만든다.

 

 

zip 파일을 풀고 IntelliJ 프로젝트에서 built.gradle을 Import 해준다.

 

2) 그리고 src>main>java>tongtong.demo 폴더 밑에 TestController.java 파일을 만들어 준다.

 

 

package tongtong.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;

@RestController
public class TestController {
    @GetMapping("/api/hello")
    public String hello(){
        return "안녕하세요. 현재 서버시간은 "+new Date() +"입니다. \n";
    }
}

 

스프링부트의 백엔드 서버는 localhost:8080에서 실행되고 있고, React 프론트엔드 서버는 localhost:3000번으로 실행됩니다. 그러다보니까 CORS( cross-origin requests) 가 발생하게되는데, 그런 문제를 해결 하기위해서는 Proxy를 프론트쪽에서 잡아주어야합니다.


출처: https://sundries-in-myidea.tistory.com/71 [얇고 넓은 개발 블로그]

Spring Boot와 React를 연동하여 개발환경을 만들어보자

이번에는 Spring Boot와 React를 연동하여 개발 환경을 만드는 과정을 이야기해보겠습니다. Spring Boot와 React를 연동하는 과정들 Spring Boot로 백엔드를 만들고, 프론트엔드까지 다 만들었을때 프론트엔

sundries-in-myidea.tistory.com

 

 

3) Package.json 파일을 아래와 같이 변경합니다
"proxy": "http://localhost:8080"을 추가해준다.

 

 

 

 

4) 추가 후 springboot와 react를 켜고 명령어를 통해서 값을 확인해보면

(저는 react를 3001 포트로 열었습니다.)

curl http://localhost:3000/api/hello

 

 

 

현재까지 react-spring 통신을 위해 아래 블로그를 참고하였습니다.

sundries-in-myidea.tistory.com/71

Spring Boot와 React를 연동하여 개발환경을 만들어보자

이번에는 Spring Boot와 React를 연동하여 개발 환경을 만드는 과정을 이야기해보겠습니다. Spring Boot와 React를 연동하는 과정들 Spring Boot로 백엔드를 만들고, 프론트엔드까지 다 만들었을때 프론트엔

sundries-in-myidea.tistory.com

 

반응형
반응형

최근 개인적으로 프로젝트를 진행하고 있는데,

버전을 잘 관리하려고 해서 main 이라는 브런치는 만들었다.(실제로 branch를 통해서 프로젝트를 관리해본 적은 없었기에..)

근데 다음날 git commit 을 하려고 하니 다음과 같은 에러가 발생했다.

 

 

이거보면 현재 main 브런치가 최신이라는 거 같은데

 

보니까 지난번에 react에 대한 부분이 빠져있었다.

 

Branch 문제가 아니었다.

 

왜 코드를 올리지 못했을까?

 

일단 파일이 있었기 때문에 다시 저장소 파서 새로운 폴더에서 관리하는 걸로 대응했다.

반응형
반응형

요즘 emacs를 사용하면서 react를 개발하고 있다.

 

근데 mac에서 terminal을 통해서 emacs를 사용하고 있는데,

터미널 상에서 Ctrl + W로 복사한 내용이

실제 블로그에 올리려고 하니 복사가 되지 않았다.

 

왜 그런지 살펴보니, Emacs와 MAC은 서로 클립보드를 공유하고 있지 않아서 발생하는 문제였다.

 

이것을 해결하기 위해서 아래와 같이 하였다.

 

일단 터미널에서 emacs 설정 파일을 연다.(없다면 만들어서 열어준다.)

 

그러면 창이 하나 뜬다.

여기에 아래와 같은 코드를 입력해준다.

;; pbcopy for OSX
(defun copy-from-osx ()
  (shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc text)
      (process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

 

그리고 위의 GUI 형태의 저장버튼을 누르고

화면을 종료한다.

 

이후에 다시 Emacs를 통해 파일을 편집할 때, 복사하게 되면,

실제로 블로그에도 복사된 내용이 잘 공유된다.

반응형

'IT' 카테고리의 다른 글

React - SpringBoot 연동하기  (1) 2020.10.26
git add 시 파일이 track에 올라가지 않는 에러  (0) 2020.10.22
React 프론트 개발 기초 ver 2  (0) 2020.10.22
React 프론트 개발 기초 ver 1  (0) 2020.10.21
리액트 너는 누구니?  (0) 2020.10.21

+ Recent posts