TIL: [Spring] Stereotype-annotation
Stereotype-annotation
TIL: [Spring] 의존성 자동 주입 @autowired
DI란?
DI
란, Dependency Injection
의 앞글자만 따온 글자로서 의존성 주입
이라는 단어로 Spring에서 쓰인다.
DI
를 하려면, 직접 의존성을 주입할 대상 Bean
을 지정해주거나, Spring
이 알맞은 의존 객체를 찾아 주입해주는 의존성 자동 주입
방법이 있다.
- 의존성 주입 대상에
@autowired
어노테이션을 사용한다. - XML 설정에
<context:annotation-config />
설정을 추가한다.
@autowired 어노테이션
org.springframework.beans.factory.annotation
의존관계를 자동설정할 때 사용, 타입
을 이용하여 의존하는 객체를 삽입해준다.
해당 타입의 빈객체가 존재하지 않거나, 2개 이상 존재할 경우 스프링은 예외를 발생시킨다.
@Autowired
를 적용할 때 같은 타입의 빈이 2개 이상 존재하게 되면 예외가 발생하는데, 이럴 때 @Qualifier
를 사용하면 동일한 타입의 Bean
중 특정 Bean
을 사용하도록 하여 문제를 해결할 수 있다.
TIL: Ajax란?
Ajax
Asynchronous Javascript Xml
을 말한다.
Javascript의 비동기통신(XmlHttpRequest)을 사용해 웹 브라우저의 페이지를 전환하지 않은 채 일부를 수정함으로써 편의성을 높여주는 기술이다.
대표적인 사용법으로는 구글맵의 지도를 움직이거나 지도에서 가게 정보를 표시하는 것을 예로 들 수 있다.
TIL: [Maven] Maven Wrapper이란?
참고
- https://www.popit.kr/how-to-use-maven-wrapper/
- http://maven.apache.org/
Maven이란?
Maven은 Java 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이다. 이전에는 Ant가 사용되었스며, 최근에는 Gradle이 사용되고 있는 추세이다. 이는 Apache License로 배포되는 오픈 소스 소프트웨어이다.
Maven Lifecycle
Maven Lifecycle
이란 Maven에서 미리 정의하고 있는 빌드 순서를 의미한다. 그리고 라이프 사이클의 각 빌드 단계를 Phase
라고 한다. 또한 이런 각 Phase들은 의존관계를 가지고 있다.
plugins
Maven은 plugins을 구동해주는 프레임워크이다. 모든 작업은 플러그인에서 수행한다. 플러그인은 저장소에서 관리된다.
Maven은 여러 plugins로 구성되어 있으며, 각각의 플러그인은 하나 이상의 goal(명령, 작업)을 포함하고 있다. Goal은 Maven의 실행단위이다.
Maven Wrapper
mvnw
라고도 불리는 Maven Wrapper
는 Apache Maven을 프로젝트에서 요구하는 버전으로 유지하기 위해 사용하는 도구이다. 복잡해지는 빌드 환경을 Maven Wrapper를 이용해 해결할 수 있다.
[OS] 운영체제란?
참고 : http://copycode.tistory.com/39?category=740133
운영체제 (Operation System)
컴퓨터의 대부분을 관리하는 역할을 한다. 운영체제는 컴퓨터 하드웨어를 잘 관리하여 성능을 높이고 사용자에게 편의성을 제공하는 프로그램이다.
컴퓨터를 구성하고 있는 기본적인 요소는 CPU
, 메인 메모리
, 하드디스크
이다.
CPU
는 컴퓨터에서 연산을 담당하고, 메인 메모리
는 컴퓨터에서 작동하고 있는 프로그램인 프로세서들을 저장, 관리한다. 컴퓨터를 키기 전에는 운영체제는 하드디스크
에 존재하지만, 컴퓨터를 켰을 때, 하드디스크에 있는 운영체제가 메인 메모리
로 올라가게 된다.
이러한 동작을 하는 곳은 메인 메모리
이다. 메인 메모리
는 원래 RAM
인 휘발성 메모리로 컴퓨터가 꺼지면 자료를 모두 날려버린다. 컴퓨터를 킬 때 운영체제를 올리는 프로그램까지 날려버리면 운영체제는 하드디스크로 올라올 수 없게 되므로, 메인 메모리
에 작은 부분은 부팅
을 위한 ROM
인 비휘발성인 부분으로 지정되어 있다. 그러면 운영체제가 컴퓨터를 제어하기 시작한다.
운영체제는 시스템 콜
과 인터럽트
에 의해서 움직인다.
시스템 콜
이란, 컴퓨터가 필요한 작업을 수행하기 위해 운영체제에 어떤 일을 요구하는 요청이다.
인터럽트
는 하드웨어 인터럽트
와 소프트웨어 인터럽트
로 나누어진다. 인터럽트가 실행되면 운영체제 내의 코드가 실행되고 Interrupt Service Routine
을 하게 된 후 다시 대기하는 상태가 된다.
[OS] 아두이노와 라즈베리파이 차이점
아두이노
- 램 : 2k
- 플래시메모리 : 32k
- 타이머와 Serial
- I2C, SPI 등이 들어있다.
ATMega 328칩 외부에는 전압 조정기(5V로 조정), 수동 회로요소(passive components), 입출력연결단자로 구성되어 있다.
IDE에서 작성된 프로그램은 칩에서 사용하는 유일한 프로그램이다.
인터프리터도 필요없고, 운영체제도, 펌웨어도 필요없다.
C코드는 기계어로 컴파일되어 칩에 실리게되며 아두이노에서 작동된다.
(동그라미 안쪽의 램프가 깜빡거리도록 프로그래밍 되어있음)
아두이노는 소형 제어장치(MicroController)이다.
라즈베리파이
라즈베리파이는 싱글보드컴퓨터라고 불린다. 약어로 SBC라고 한다.
보드의 소형처리장치(Microprocessor)는 음향, 영상, USB, 이더넷 및 HDMI까지 지원한다.
라즈베리파이에서는 프로그램을 써서 하드웨어를 직접 제어하지 않고, 운영체제가 깔려있어 운영체제 내에서 프로그래밍을 한다.
라즈베리파이의 운영체제는 통상적으로 리눅스를 사용한다.
둘 다 명령을 수행하는 중앙처리장치(CPU)가 있다.
이는 타이머(Timer)와 기억장치(Memory), 입출력 핀(I/O Pin) 등이 들어있다.
여기서 입출력 핀은 소형제어장치(MicroController)가 강점을 가지고 있다. 그래서 소형제어장치가 하드웨어를 직접적으로 제어한다.
하지만 소형처리장치(Microprocessor)는 입출력 부분이 약한 경향이 있어, 트랜지스터가 하드웨어를 다루게 된다.
예를 들면, 모터를 동작하거나, 글자를 표시하는 LCD, 센서를 제어하는 것과 같은 제어 중심의 프로젝트라면 아두이노와 같은 소형제어장치(MicroController)로 제어하는 것이 좋다.
그러나 비디오, 카메라, 복잡한 수치계산, 그래픽 처리에는 라즈베리파이가 더 적합하다고 볼 수 있다.
제어가 중심이면 아두이노가 더 낫고, 데이터를 처리해야 한다면 라즈베리 파이가 더 좋다.
참고 : http://andrew0409.tistory.com/82
TIL: [windows] windows linux subsystem - ssh server 설정
wsl에서 자동으로 ssh server 돌아가게 해주기
- ssh server 지우고 재설치하기
sudo apt remove openssh-server
sudo apt install openssh-server
etc/ssh/sshd_config
파일 수정하기Port 2222
UsePrivilegeSeparation no
PasswordAuthentication yes
: ssh keys 설정시 다시no
로 바꾸기
- ssh server 재시작
sudo service ssh --full-restart
- ssh server는 default로 off 상태로 되어있어서, on 상태로 바꾸어야한다.
sudo service ssh start
- ssh server 자동으로 돌아가게하는 script 만들기
vi sshd.bat
만들기C:\Windows\System32\bash.exe -c "sudo /usr/sbin/sshd -D"
추가- 파일 저장 후,
mv ssh.bat /mnt/c/Users/YourUserName/Documents.
로 파일 위치 옮기기 vi sshd.vbs
만들기- 다음 코드 추가하기
Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Users\YourUserName\Documents\sshd.bat" & Chr(34), 0 Set WinScriptHost = Nothing
- 파일 저장 후,
mv sshd.vbs /mnt/c/Users/YourUserName/Documents.
로 파일 위치 옮기기 - 윈도우 방화벽으로
Port 2222
허용 및 작업 스케쥴링으로sshd.bat
,sshd.vbs
task로 추가하기 sudo visudo
로 들어가서%sudo ALL=NOPASSWD: /usr/sbin/sshd
추가하기 -> 패스워드 요구하는 설정 뺴는 작업
위 작업은 https://gist.github.com/dentechy/de2be62b55cfd234681921d5a8b6be11 에서 참고하였습니다.
TIL: [zsh] zsh - highlighting 설치
우분투 zsh 플러그인 설치법
-
zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
-
syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
-
vim ~/.zshrc plugins 부분에 설치한 플러그인 입력 ``` plugins=( git zsh-autosuggestions zsh-syntax-highlighting
) ```
- 터미널창 닫고 다시 켜서 확인 (edited)
TIL: [windows] windows linux subsystem - github 블로그 연동
까먹을까봐 씀..
windows linux subsystem Ubuntu
에서 내부 파일 접근하려면
cd /mnt
위와 같이 하면 로컬 디스크 \c
나 \d
에 접근이 가능해진다.
그렇게 내부로 들어가서 project
만들고 Ubuntu
처럼 쓰면 된다!