sueleesoossoo's devlog


  • Home

  • Categories

  • About

  • Archives

  • Tags

[OS] 아두이노와 라즈베리파이 차이점

Posted on 2018-09-10 | 0 comments

아두이노

  • 램 : 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

Read more »

TIL: [windows] windows linux subsystem - ssh server 설정

Posted on 2018-09-05 | 0 comments

wsl에서 자동으로 ssh server 돌아가게 해주기

  1. ssh server 지우고 재설치하기
    • sudo apt remove openssh-server
    • sudo apt install openssh-server
  2. etc/ssh/sshd_config 파일 수정하기
    • Port 2222
    • UsePrivilegeSeparation no
    • PasswordAuthentication yes : ssh keys 설정시 다시 no로 바꾸기
  3. ssh server 재시작
    • sudo service ssh --full-restart
  4. ssh server는 default로 off 상태로 되어있어서, on 상태로 바꾸어야한다.
    • sudo service ssh start
  5. 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 에서 참고하였습니다.

Read more »

TIL: [zsh] zsh - highlighting 설치

Posted on 2018-09-04 | 0 comments

우분투 zsh 플러그인 설치법

  1. zsh-autosuggestions git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

  2. syntax-highlighting git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

  3. vim ~/.zshrc plugins 부분에 설치한 플러그인 입력 ``` plugins=( git zsh-autosuggestions zsh-syntax-highlighting

) ```

  1. 터미널창 닫고 다시 켜서 확인 (edited)
Read more »

TIL: [windows] windows linux subsystem - github 블로그 연동

Posted on 2018-09-04 | 0 comments

까먹을까봐 씀..

windows linux subsystem Ubuntu에서 내부 파일 접근하려면

cd /mnt

위와 같이 하면 로컬 디스크 \c나 \d에 접근이 가능해진다.
그렇게 내부로 들어가서 project만들고 Ubuntu처럼 쓰면 된다!

Read more »

TIL: [windows] Window subsystem for linux - install Jekyll

Posted on 2018-09-04 | 0 comments

Install Ruby & Jekyll

# Get Ubuntu up to date and install Ruby
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install -y build-essential ruby-full

# update ruby gems and install Jekyll
sudo gem update –system
sudo gem install jekyll bundler

참고 : https://davidburela.wordpress.com/2017/05/17/how-to-install-jekyll-on-windows-10-with-windows-subsystem-for-linux/

Read more »

[Java] JVM에 대하여

Posted on 2018-09-04 | 0 comments

아래 글들은 https://d2.naver.com/helloworld/1230로 공부하며 정리하였습니다.

JVM Internal

자바 바이트코드는 JRE 위에서 동작한다. 이 JRE에는 자바 바이트코드를 해석하고 실행하는 JVM(Java Virtual Machine)이 있다. JRE는 자바 API와 JVM으로 구성되며, JVM의 역할은 자바 어플리케이션을 Class Loader를 통해 읽어들여 자바 API와 함께 실행하는 것이다.

Vitual Machine

프로그램을 실행하기 위해 컴퓨터와 유사한 기계를 소프트웨어로 구현한 것이라 할 수 있다. 원래 자바는 WORA(Write Once Run Anywhere)를 구현하기 위해 물리적인 머신과 별개의 가상 머신을 기반으로 동작하도록 설계되었다. 그래서 자바 바이트코드를 실행하고자 하는 모든 하드웨어에 JVM을 동작시킴으로써 자바 실행 코드를 변경하지 않고도 모든 종류의 하드웨어에서 동작되게 한 것이다.

JVM의 특징

  • 스택 기반의 가상 머신 : 대표적인 컴퓨터 아키텍처인 인텔x86 아케텍처나 ARM 아키텍처와 같은 하드웨어가 레지스터 기반으로 동작하는 데 비해 JVM은 스택 기반으로 동작 한다.
  • 심볼릭 레퍼런스 : 기본 자료형(primitive data type)을 제외한 모든 타입(클래스와 인터페이스)을 명시적인 메모리 주소 기반의 레퍼런스가 아니라 심볼릭 레퍼런스를 통해 참조한다.
  • 가비지 컬렉션 : 클래스 인스턴스는 사용자 코드에 의해 명시적으로 생성되고 가비지 컬렉션에 의해 자동으로 파괴된다.
  • 기본 자료형을 명확하게 정의하여 플랫폼 독립성 보장 : C/C++ 등의 전통적인 언어는 플랫폼에 따라 int형의 크기가 변한다. JVM은 기본 자료형을 명확하게 정의하여 호환성을 유지하고 플랫폼 독립성을 보장한다.
  • 네트워 바이트 오더(network byte order) : 자바 클래스 파일은 네트워크 바이트 오더를 사용한다. 인텔x86 아키텍처가 사용하는 리틀 엔디안이나, RISC 계열 아키텍처가 주로 사용하는 빅 엔디안 사이에서 플랫폼 독립성을 유지하려면 고정된 바이트 오더를 유지해야 하므로 네트워크 전송 시에 사용하는 바이트 오더인 네트워크 바이트 오더를 사용한다. 네트워크 바이트 오더는 빅 엔디안이다.
Read more »

TIL: [git] ssh 초기 설정

Posted on 2018-08-29 | 0 comments

git ssh 초기 설정

git 초보 이용자들은 아마도 git push 명령어를 입력할 때마다, 매번 계정과 비밀번호를 입력해야하는 불편함을 겪고 있을 것이다.

이를 위한 해결방법을 정리해놓는다. (까먹을까봐..)

  1. home폴더의 ~/.ssh 파일 안에 들어간다.
  2. ssh-keygen -C <github계정> 명령어 입력
  3. 적당히 enter키를 누른다.
  4. ~/.ssh 파일 목록을 보면 id_rsa,id_rsa.pub가 생겨있는 것을 확인할 수 있다.
  5. id_rsa.pub의 내용을 복사(끝에 계정이 입력되어 있는 파일)
  6. github 홈페이지에 들어간다.
  7. Settings에 들어가서 SSH and GPG keys 메뉴로 들어간다.
  8. New SSH key를 눌러 새로운 키 이름을 입력하고, 아래에 복사한 id_rsa.pub 내용을 붙여넣기 한다.
  9. 등록 후 git push -u origin master하면 계정비번 입력없이 푸시 끝!
Read more »

TIL: [django] drf permissions

Posted on 2018-08-10 | 0 comments

Django Rest Framework

Read more »

TIL: [python] **kwargs & *args

Posted on 2018-08-09 | 0 comments

django rest framework에서 serializer 복습을 하다가 계속 나오는 **kwargs와 *args 개념이 머릿속에 잡혀있지않아 첫 TIL로 정리하였다.

Read more »

Git 기초 정리

Posted on 2018-08-09 | 0 comments

Git Submodule

부모 프로젝트가 있고, 그 아래에서 자식 프로젝트를 관리하기 위해 필요한 것이다.

Example

myproject

자식 프로젝트를 먼저 만들자

$ mkdir myproject
$ cd myproject
$ git init
Initialized empty Git repository in /Users/username/project/myproject/.git/

myproject에 commit한다.

$ echo "Important code and data" > some_data.txt
$ git add some_data.txt
$ git commit -m "Initial commit on myproject"
[master (root-commit) 196bbbb] Initial commit on myproject
 1 file changed, 1 insertion(+)
 create mode 100644 some_data.txt

그리고 다시 프로젝트 바깥으로 나오자

superproject

부모 프로젝트를 만든다.

$ mkdir super
$ cd super
$ git init
Initialized empty Git repository in /Users/username/project/superproject/.git/

.git/objects에는 이런 구조로 이루어져있다.

objects
├── info
└── pack
$ echo "This project will use ``myproject``" > README.txt
$ git add README.txt

새로운 file을 add하면, .git/objects에 마찬가지로 새롭게 file이 생긴다.

objects
├── 9c
│   └── 0042144fc489d7b528ef186af49e78c2867f91 [43B]
├── info
└── pack

superproject에 새로운 프로젝트를 commit한다.

$ git commit -m "Initial commit on super"
[master (root-commit) 2326240] Initial commit on super
 1 file changed, 1 insertion(+)
 create mode 100644 README.txt

commit까지 할 경우, .git/objects엔 3개의 객체가 생긴다.

  • root디렉토리의 디렉토리 리스트를 제공하는 tree객체
  • commit자체에 대한 정보를 제공하는 commit객체
  • file 정보
objects
├── 23
│   └── 262403a0b913d02219ead935dd1a85d3724a0d [139B]
├── 9c
│   └── 0042144fc489d7b528ef186af49e78c2867f91 [43B]
├── f1
│   └── 3a8c8331c76ac965c43b09d11ee2d72bb053c1 [55B]
├── info
└── pack

myproject를 superproject 하위모듈(submodule)로 추가하기

superproject 경로에서 myproject를 하위모듈로 추가해보자.(subproject라는 파일명으로 추가)

$ git submodule add ../myproject subproject
Cloning into 'subproject'...
done.
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   .gitmodules
	new file:   subproject
Read more »
1 … 32 33 34 35
LEESOO

LEESOO

Junior Frontend Developer

341 posts
12 categories
34 tags
RSS
GitHub
© 2024 LEESOO
Powered by Jekyll
Theme - NexT.Muse