내 경우 docker 로 nginx proxy를 설정할 때 문제가 되어 기록해 둔다.

처음 설정은 잘 된다. 시스템 리부팅 후에 꼬여서 문제. 사견인데 이 문제에 대해 "꼬였다" 용어 정리를 먼저 하면,

nginx 가 실행되는 시기, docker ps 에서 권한 문제로

root 인데도 제대로 컨트롤이 안 되는 경우를 꼬였다고 표현하고 있다.

root 인 상태에서

systemctl restart 했을 때 깨끗하지 않고 docker ps 에서 이래저래 나오면 

restart : always 된 경우다. "no" 로 바꿔주면 되고

이미 실행된 녀석들은

docker update --restart=no $(docker ps -q)

명령어로 도커 재 시작시 다시 실행 안되도록 해 주면 된다.

docker ps 하면 지워졌다고 나오는데  systemctl restart docker 하면 또 실행되어서 docker ps 가 된다.

이런 땐, systemctl restart docker.service

그래도 안되면 도커 지웠다가 다시 설치.

dpkg -l | grep -i docker

sudo apt-get remove --purge docker-ce docker-ce-cli containerd.io

sudo apt-get remove --purge docker.io

이 후

apt install 로 docker와 docker.io 설치하면 됨.

 

도커가 꼬여서 도커 업그레이드, 재설치, 리부팅 등등 삽질을 했었는데 

하나의 포트만 쓰는 리눅스의 프로세스 처럼 기존 docker 와 충돌은 보장하지 않기 때문에 꼬임 현상이 나는 듯 하다.

sudo docker system prune 으로 깔끔한 정리. -af 는 신중히.

네, 맞습니다. Docker에서 --prune 옵션은 특정 Docker 명령어와 함께 사용되어 관련 자원을 정리하는 데 도움을 줄 수 있습니다. 하지만, docker system prune과는 다르게, 이 옵션은 보통 Docker의 다른 하위 명령어와 함께 사용됩니다. --prune 옵션의 사용 예와 용도는 다음과 같습니다:

Docker 이미지 Prune

미사용 Docker 이미지를 정리하려면, docker image prune 명령어를 사용할 수 있습니다. 이 명령은 태그가 없고 (dangling 상태인) 이미지들을 삭제합니다.

sudo docker image prune

이 명령어에 -a 옵션을 추가하면, 사용 중이지 않은 모든 이미지를 삭제합니다:

 
sudo docker image prune -a

Docker 컨테이너 Prune

중지된 모든 Docker 컨테이너를 정리하려면, docker container prune 명령어를 사용할 수 있습니다.

sudo docker container prune

Docker 네트워크 Prune

사용하지 않는 모든 네트워크를 정리하려면, docker network prune 명령어를 사용할 수 있습니다.

sudo docker network prune

Docker 볼륨 Prune

미사용 Docker 볼륨을 정리하려면, docker volume prune 명령어를 사용할 수 있습니다.

sudo docker volume prune

각각의 prune 명령어는 관련된 자원 유형(이미지, 컨테이너, 네트워크, 볼륨)을 대상으로 하며, -f 또는 --force 옵션을 추가하여 사용자 확인 없이 바로 정리를 진행할 수 있습니다.

--prune 옵션은 이러한 prune 관련 명령어와는 별개로, 특정 Docker 명령어의 결과물을 정리하는 데 사용되기도 합니다. 예를 들어, docker build 명령어에 --prune 옵션을 사용하여 빌드 캐시를 정리할 수 있습니다. 하지만, 이는 Docker 버전에 따라 다르며, 일부 명령어에서는 --prune 옵션이 사용되지 않을 수도 있습니다. 사용 가능한 옵션과 기능은 Docker의 버전 및 공식 문서를 참조하여 확인해야 합니다.

 

 

[This document will be continuously updated.]

https://developer.arm.com/downloads/-/gnu-rm

 

Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

Download the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++, and Assembly programming for 32-bit ARM Cortex-A, ARM Cortex-M and Cortex-R families

developer.arm.com

아래 신 버전으로 바뀌었는데 지난 바이너리는 여기서 받는다.

https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain

 

Arm GNU Toolchain

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling coo

developer.arm.com

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

 

Arm GNU Toolchain Downloads – Arm Developer

Download the Arm GNU Toolchain, an open-source suite of tools for C, C++, and Assembly programming for the Arm architecture.

developer.arm.com

 

x86 기반 ubuntu 22.04 에서 바닐라 커널을 ARM 용으로 빌드해보자.

 

커널은 

curl -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.72.tar.xz 이런 식으로 받으면 된다.

 

https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz?rev=e434b9ea4afc4ed7998329566b764309&hash=688C370BF08399033CA9DE3C1CC8CF8E31D8C441

받아야 한다. 크롬으로 tar.xz에 가서 링크 복사 하면 된다.

curl -O https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz?rev=e434b9ea4afc4ed7998329566b764309&hash=688C370BF08399033CA9DE3C1CC8CF8E31D8C441 

로 받자. 리눅스 커널 메인 폴더에 받아 버리는게 간지.

 

curl -O 로 잘 안되면 wget 으로 받아서 .tar.xz 로 이름 잘 바꿔주고

tar xvf 로 압축을 잘 풀어준다.

 

~/kernel/5_15_72/linux-5.15.72/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi$ ls
13.2.Rel1-x86_64-arm-none-eabi-manifest.txt  arm-none-eabi  bin  include  lib  libexec  license.txt  share

 

~/kernel/5_15_72/linux-5.15.72/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi/bin$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (15:10.3-2021.07-4) 10.3.1 20210621 (release)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

'프로그래머 > ARM, GCC, Linux Kernel, What I love' 카테고리의 다른 글

ARM Firmware 003  (0) 2019.02.09
ARM Firmware 002  (0) 2019.02.09
ARM Firmware 001  (0) 2019.02.09
Apple M1 에서는 컴파일러가 그냥 ARM 용이다.  (0) 2019.02.02
우분투에서 ARM 용 커널 빌드  (0) 2019.01.26



유통 상황에 따라 남기는게 다르겠지만,
효율적인 유통 혹은 직접 유통하는 분들에게
좋은 수익이 돌아갔으면 한다.



사진에 보이는 거 두박스 정도 먹고 나니
둘 다 좋지만 나에게는 고려 홍삼 스틱이 좀 더 낫더라

일단 진해서 먹는 느낌이 있음

효능은 뭐 다른 홍삼도 많이 먹고 있어서 비교 불가

'진행 프로젝트 > [진행] Useful Logs' 카테고리의 다른 글

인스타 정리 중 5  (0) 2019.01.19
인스타 정리중 4  (0) 2019.01.19
인스타 정리중 3  (0) 2019.01.19
인스타 정리중 2  (0) 2019.01.19
인스타 정리중 1  (0) 2019.01.19

카더라 통신

카더라 통신의 장점은 그것이 진실임에도 카더라로 취급된다는 데에 있다. 술자리에서 친해진 사람들과 나눈 이야기인데 굳이 검증할 필요도 논리적으로 설명할 필요도 없다. 불뚝 튀어나온 배와 함께 얻은 소중한 경험에서 오는 정보인데 굳이 정보를 나누려고 할까? 그것은 너무도 정보가 없는 대학생들이 지천에 널려 있기 때문이다. 그들이 좋은 선택을 하길 바란다면 정말 허심탄회하게 모든 이야기를 필요가 있다.

그런데 해줄까? 하나의 일화를 소개하겠다. 친한 친구가 십수 일당 30 하는 타일 기술을 배우기 위해 3년을 보조원으로 살았다. 그러나 결론만 말하면 배웠다. 바로 옆에서 수많은 에피소드 들을 직접 들을 있었지만 결론은 간단했다. 제대로 가르쳐 주는 순간 경쟁자가 된다. 다른 에피소드들을 말해주면 인턴인데 스킬에 집중해서 가르쳐 주다 보면 기본기를 잃어버려 크래커 트리에서 말하는 소위 '스크립트 키들' 되어 버린다. 열심히 배워야 신입 사원의 자세가 사라지는 것은 설상가상이다.

샌프란에 거주하는 프로그래머에게 물었다. 70 되도록 일하는지.

- 보험료가 너무 비싸서 아들이 12 불을 받고 페이스북에 들어갔는데도 일할 수밖에 없다고 했다. 아들 역시 세금이 40% 넘어서 자기 집이 없는 이상 생활수준은 필자가 말한 것만 못하다고 한다.


구글 직원이 트럭에 살면서 블로그 포스팅을 하는 뉴스 기사가 가십거리가 되었는지 충분히 이해되는 대목이었다.


애플에 근무하는 직원에게 물었다. 60 되도록 일하는지.

- 똑같이 보험료 이야기를 했다. 애플 제품이 임직원가에 싸게 팔기도 해서 아이폰도 수량 제한은 있었지만 싸게 구입했다고 한다. 업무강도는 만족할 만한 수준이라고 한다. , 휴가가 45 정도 되는데 유럽 여행 다니기도 좋다고 말했다.


같이 세계 특허가 있어서 지속적으로 keep in touch 하고 있는데 자세한 이야기는 애플 회사 분위기상 본인에게 피해를 있어서 공개하지 못한다.


버라이즌에 근무하는 다른 나라 출신 직원에게 물었다. 메트로 PCS 같이 중소 통신사 있다가 곳으로 갔으니 좋겠다고.

- 때문이 아니라 이직은 어쩔 없었다고 했다. 좋은 곳으로 옮겼다고 생각하겠지만 미국에서는 곳에서 오래 일하는 것이 페이가 좋다고 말해주었다. 그러나 유리천장이 있고, 보이지 않는 차별이 존재한다고 했다. 객관적인 실적인 내가 내었는데 상사는 자기랑 학교가 같고 지역이 같은 이유로 나보다 경력이 안되고 실력이 안되는데 위에 앉혀 버렸다고 했다. 정치적으로 괴롭혀서 이직할 수밖에 없었다고 했다.


좋은 곳으로 같지만 깊은 이야기를 들어보면 실재로는 아니었다.


십수 구글 개발자로 갔던 지인이 있다. 구글 근무해서 좋은 점은 저명한 사람들에게 메신저로 질문할 있어서 좋다고 했다.


우리나라에서 영어를 쓰는 것은 부끄러워하는 것이 당연한 것이라는 메시지의 광고나 상황들을 종종 접한다. 이렇게 영국, 미국의 속국처럼 살다 보니까 해당 국가에 지인이 있고 말들을 전달하는 것만으로도 마치 무슨 대단한 것이 있는 것처럼 착각하고 때가 많다. 필자가 아끼는 사람이 알코올 중독으로 십수 년간 같이 힘들어 하지만 사람 관계에 술은 정말 중요하다고 생각한다. 보통 회사 시스템은 사람 관계에 비용이 많이 나가기 때문에 시스템화하려고 한다. 그러나 진짜 정보를 얻으려면 face to face 답이다.


 진솔한 이야기들을 정리해서 우리가 잘못 알고 있는 것을 짚어 보면.

미국에서 억대 연봉자는 한국에서 6000 받으며 지방에 거주할 있는 개발자보다 생활수준이 낫지는 않다. 물론, 골프나 요트를 좋아하면 상황은 바뀌겠지만 치안, 의료 옵션을 추가하면 한국 쪽으로 저울이 기울어질 것이다. 미국에서 이직이 잦은 것은 고액 연봉을 보장해 주지도 않고, 뛰어난 엔지니어라서 그런 것도 아니다.


국가 기반 정책을 연구하는 단체에서 근무하는 사람이 말해주었던 진실. 미국에서 박사로 거주하기 위해서 따는 박사와 본국으로 돌아가는 것이 명확한 상태에서 취득하는 박사는 학위 난이도와 공부할 드는 비용이 판이하게 다르다는 . 미국에서는 MBA 따도 일자리가 없어서 연봉과 만족도가 낮은 다른 일을 하는 사람이 많다는 실재 사는 이야기들을 듣다 보면 한국 사정을 전혀 모른다는 것을 당당하게 이야기하며 목적지가 선진국임을 설파하는 많은 사람들의 이야기는 걸러 들어야 길을 찾을 있다는 확신이 들거라 생각한다. 참고로 이렇게 말하는 필자도 미울지도 모르겠지만 필자의 영어 실력은 형편없고, 프로젝트 때문에 서바이벌로 영어를 배웠다. 이에 반해, 최신 멘토링 하는 멘티들은 모두 토익 900 육박하고 교환학생이나 유학을 사람도 많다. 그러나 영어의 필요성을 느껴서인지 시간이 지나면 어렵게 공부했던 것을 모두 까먹어 버린다. 필자의 책은 사도 좋으니 무조건 원서는 사서 보라고 하고 싶다. JAVA 봐도 제임스 고슬링 책에는 UTF-16 관련 이야기가 초반부에 나와서 한글로 예제 소스를 짜도 문제가 없을 터인데 모두 영어로 예제를 짜고 있다. 코드로 멘토링 한글로 코딩을 하면서 가르쳐 주면 훨씬 효과가 좋다는 것을 경험했고, 지금도 하고 있다.


위의 소중한 경험들을 주변에 많이 설파하고 있지만, 퍼지지 않는 같아서 가끔 개발 능력보다 마케팅 능력이 중요한지 의문이 든다. 사실 의문이라기보다는 확신인 것이 최근 이세돌로 돌풍이 불었던 분야만 봐도 마케팅의 힘을 실감한다. IBM 체스나 퀴즈대회로 쇼를 때는 먹히지 않았던 분야다. 이런 마케팅의 홍수 속에서 진짜를 가르쳐 주려면 어느 정도는 그들의 룰에 따를 필요가 있을 같다.

Ubuntu에서 Docker를 설치하는 표준 방법 중 하나는 Docker의 공식 저장소를 시스템에 추가하고 그곳에서 Docker 패키지를 설치하는 것입니다. 아래 단계를 따라 Docker CE를 설치해 보세요.

  1. Docker의 공식 GPG 키 추가:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  2. Docker의 공식 저장소를 APT 소스 목록에 추가:
    echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  3. 패키지 목록 업데이트 및 Docker CE 설치:
    sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

이렇게 하면 Docker CE, CLI, 그리고 containerd.io를 설치할 수 있습니다. 이 과정을 통해 최신 버전의 Docker가 설치되며, 이전에 발생했던 문제들을 해결할 수 있습니다.

 

  1. 실행 중인 컨테이너 확인:이 명령어는 현재 실행 중인 모든 Docker 컨테이너의 목록을 보여줍니다.
    sudo docker ps
  2. 모든 컨테이너 확인:이 명령어는 시스템상의 모든 Docker 컨테이너를 보여주며, 실행 중이지 않은 컨테이너도 포함됩니다.sudo docker ps -a
  3. Docker 이미지 목록 확인:이 명령어는 로컬 시스템에 저장된 모든 Docker 이미지의 목록을 보여줍니다.sudo docker images
  4. Docker 네트워크 확인: sudo docker network ls

 

Docker 데몬 로그 확인

시작 실패의 구체적인 원인을 파악하기 위해 Docker 데몬의 로그를 확인해야 합니다. Docker 데몬 로그는 보다 상세한 오류 메시지를 포함하고 있을 수 있으며, 문제 해결에 중요한 단서를 제공할 수 있습니다.

journalctl -u docker.service
 

sudo systemctl status docker.service

sudo systemctl restart docker

사용자를 docker 그룹에 추가하면, sudo 없이 Docker 명령을 실행할 수 있습니다. 이 방법은 명령을 실행할 때마다 sudo를 입력하는 번거로움을 줄여줍니다. 사용자를 docker 그룹에 추가하려면 다음 명령을 사용하세요:

sudo usermod -aG docker $USER

docker-compose down docker-compose build --no-cache docker-compose up -d
  • 이 스크립트는 기존의 Docker 컨테이너와 이미지를 내리고(docker-compose down), 캐시를 사용하지 않고(--no-cache) 새로운 이미지를 빌드한 다음, 컨테이너를 백그라운드에서 실행합니다(docker-compose up -d).

version: '3.6'
services:
  proxy:
    restart: always
    build:
      context: .
      dockerfile: Dockerfile
    hostname: proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx:/etc/nginx
      - ./log:/var/log/nginx
    networks:
      - proxy-net

  echo:
    image: jmalloc/echo-server
    expose:
      - "8080"
    hostname: echo
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true

=== 화사첨족 ===

news가 안 열리면,

기본 앱 설정 - 웹브라우저 설정에서 기본 앱을 설정해주어야 함.

devenv /resetuserdata    // X

윈도우 10에서 설정 찾기 참 편하다.

그나저나 bizspark 은 완전이 바뀌어버렸네...

Product keys
There is no paid active subscription associated with your account
Add a paid subscription to access downloads and product keys.

예전에는 졸업하더라도 키 목록이 있어서 좋았는데 ㅠ

그 때 그 때 바뀌는 회사라 믿음이 안가는 것은 여전하다.

정말 오픈 소스 진영이 좋은 역할을 많이 한다.

 

 

코빗 서버 점검 페이지

 

Korbit
 
All Systems OperationalRefreshed less than 1 minute ago
Korbit - Website  Operational
90 days ago
 
100.0 % uptime
 
Today
Korbit - API  Operational
90 days ago
 
100.0 % uptime
 
Today
 Trading
BTC/KRW  Operational
BCH/KRW  Operational
ETH/KRW  Operational
ETC/KRW  Operational
XRP/KRW  Operational
Other Digital Assets  Operational
 Deposits/Withdrawals
KRW  Operational
BTC  Operational
BCH  Operational
ETH  Operational
ETC  Operational
XRP  Operational
Other Digital Assets Withdrawal  Operational
System MetricsMonthWeekDay
Korbit - Website
100%
15:0018:0021:002. Jan03:0006:0009:0012:00050100
Korbit - API Response Time
13ms
15:0018:0021:002. Jan03:0006:0009:0012:0001020
Past Incidents
Jan 22018
No incidents reported today.
Jan 12018
No incidents reported.
Dec 312017
No incidents reported.
Dec 302017
No incidents reported.
Dec 292017
No incidents reported.
Dec 282017
No incidents reported.
Dec 272017
No incidents reported.
Dec 262017
No incidents reported.
Dec 252017
No incidents reported.
Dec 242017
No incidents reported.
Dec 232017
No incidents reported.
Dec 222017
Resolved - 문제가 해결되어 출금 계좌 등록이 가능합니다. / We have fixed the issue. You may register your withdrawal bank account. 
Dec 22, 18:53 KST
Investigating - 출금 계좌 등록이 정상적으로 처리되지 않습니다. 복구 후 안내 드리겠습니다. / Unable to register withdrawal bank accounts. We are investigating the issue. 
Dec 21, 15:22 KST
Dec 212017
Resolved - 문제가 해결되어 정상적으로 원화 출금 서비스를 이용하실 수 있습니다. / We have fixed the issue. 
Dec 21, 15:12 KST
Investigating - 원화 출금이 지연되고 있습니다. 현재 문제 해결을 위하여 조치중이니 회원님의 양해를 부탁드립니다. / KRW withdrawals are being delayed. We are investigating the issue right now. 
Dec 21, 14:53 KST
Dec 202017
No incidents reported.
Dec 192017
No incidents reported.

 

 

 

 


높다.
나도 배운다

안녕하세요. 토스팀입니다.

다가오는 2019년 2월 1일부로 토스 서비스 이용 약관이 변경됨을 공지드립니다.

변경 사항은 아래와 같습니다.

제 2 조 (용어의 정의)

변경 전

① 본 약관에서 사용하는 용어의 정의는 다음과 같습니다.
1. "회원"이란 본 약관에 따라 가입신청에 대한 회사의 승낙을 받아 회사가 제공하는 서비스를 이용하는 자를 말합니다.
(생략)
16. "직불전자지급수단"이라 함은 회원과 가맹점간에 전자적 방법에 따라 금융회사의 계좌에서 자금을 이체하는 등의 방법으로 재화 또는 용역의 제공과 그 대가의 지급을 동시에 이행할 수 있도록 회사가 발행한 증표 또는 그 증표에 관한 정보를 말합니다.

변경 후

① 본 약관에서 사용하는 용어의 정의는 다음과 같습니다.
1. "회원"이란 본 약관에 따라 가입신청에 대한 회사의 승낙을 받아 회사가 제공하는 서비스를 이용하는 자를 말합니다.
(생략)
16. "직불전자지급수단"이라 함은 회원과 가맹점간에 전자적 방법에 따라 금융회사의 계좌에서 자금을 이체하는 등의 방법으로 재화 또는 용역의 제공과 그 대가의 지급을 동시에 이행할 수 있도록 회사가 발행한 증표 또는 그 증표에 관한 정보를 말합니다.
17.“전자지급결제대행서비스”라 함은 전자적 방법으로 재화 또는 용역의 구매에 있어서 지급결제정보를 송신하거나 수신하는 것 또는 그 대가의 정산을 대행하거나 매개하는 서비스를 말합니다.

비고

제2조 제1항 17호 신설

제 14 조 (서비스 이용제한)

변경 전

① 회원의 서비스 이용 중 다음 각 호의 사유가 발생하는 경우, 회사는 해당 회원의 서비스 이용을 제한 또는 정지할 수 있습니다.
1.PIN을 누적하여 연속 5회 이상 오류 입력하는 경우
(생략)
11. 이 약관에서 규정한 사항이나 별도 페이지에 규정한 이용정책을 위반한 경우
12. 기타 회사가 합리적인 판단에 의해 서비스의 제공을 거부할 필요가 있다고 인정할 경우

변경 후

① 회원의 서비스 이용 중 다음 각 호의 사유가 발생하는 경우, 회사는 해당 회원의 서비스 이용을 제한 또는 정지할 수 있습니다.
1.PIN을 누적하여 연속 5회 이상 오류 입력하는 경우
(생략)
11. 이 약관에서 규정한 사항이나 별도 페이지에 규정한 이용정책을 위반한 경우
12. 회원의 계정에 대한 채권추심, 압류명령 등 법원의 명령이 있는 경우
13. 기타 회사가 합리적인 판단에 의해 서비스의 제공을 거부할 필요가 있다고 인정할 경우

비고

제14조 제1항 제12호 신설, 기존 12호는 13호로 조정

제 17 조 (서비스 이용 내역의 보존 및 확인)

변경 전

⑤ 서비스 이용내역의 서면제공 요청은 아래의 이메일 주소로 신청하거나, 아래 담당자에게 전화로 직접 신청할 수 있습니다. 회원은 동 신청을 함에 있어서 서면을 수령하는데 필요한 정보를 명확히 제공하여야 합니다. 회사는 우편 제공시 일반우편의 방법으로 송부합니다.

○ 이메일 : support@toss.im
○ 담당 : 양주영
○ 전화 : 1599-4905

변경 후

⑤ 서비스 이용내역의 서면제공 요청은 아래의 이메일 주소로 신청하거나, 아래 담당자에게 전화로 직접 신청할 수 있습니다. 회원은 동 신청을 함에 있어서 서면을 수령하는데 필요한 정보를 명확히 제공하여야 합니다. 회사는 우편 제공 시 일반우편의 방법으로 송부합니다 .

○ 이메일 : support@toss.im
(삭제)
○ 전화 : 1599-4905

비고

제17조 제5항 일부삭제

제27조(분쟁처리담당자 및 이의신청)

변경 전

① 회원은 서비스 이용과 관련하여 회사에 이의가 있는 경우 서면으로 회사에 이의를 제기할 수 있습니다. 분쟁처리책임자는 아래와 같습니다.

1. 분쟁처리책임자
1. 담당 이승건
2. 전화 1599-4905
3. 이메일 support@toss.im

변경 후

① 회원은 서비스 이용과 관련하여 회사에 이의가 있는 경우 서면으로 회사에 이의를 제기할 수 있습니다. 분쟁처리책임자는 아래와 같습니다.

1. 분쟁처리책임자/담당자 강희진
2. 전화 1599-4905
3. 이메일 support@toss.im

비고

분쟁처리책임자/담당자 지정에 따른 변경

제 29 조 (토스머니의 충전)

변경 전

③ 회원이 토스머니의 충전에 이용할 수 있는 금융기관은 회사가 사전에 출금이체 (펌뱅킹) 관련 계약을 체결한 금융기관에 제한됩니다. 이용 가능한 금융기관의 목록은 회사의 홈페이지 또는 토스 서비스를 통해 공지합니다. 이용 가능한 금융기관에 변동사항이 생길 경우 회사는 즉시 홈페이지 또는 토스 서비스 공지사항을 통하여 회원에게 공지합니다.

변경 후

③ 회원이 토스머니의 충전에 이용할 수 있는 금융기관은 회사가 사전에 출금이체 (펌뱅킹) 관련 계약을 체결한 금융기관에 제한됩니다. 이용 가능한 금융기관의 목록은 회사의 홈페이지 또는 토스앱을 통해 공지합니다. 이용 가능한 금융기관에 변동사항이 생길 경우 회사는 즉시 홈페이지 또는 토스앱 공지사항을 통하여 회원에게 공지합니다

비고

제29조 제3항 문구 정정

제 30 조 (토스머니의 이용)

변경 전

(생략)
③ 회원은 토스머니를 회사가 제시하는 가맹점에서 해당 가맹점과의 계약에 따라 허용된 경우, 해당 상품 또는 서비스 구매 등에 관한 지급 및 결제 수단으로 사용할 수 있습니다. 회사는 토스머니를 사용하여 결제를 할 수 있는 가맹점의 정보에 관하여 본 약관 제22조에 정한 방법으로 회원에게 알립니다.

변경 후

(생략)
③ 회사는 토스머니의 양도 시 상대방(토스머니를 양도받는 자)이 양도인의 성명을 확인할 수 있도록 할 수 있습니다.
④ 회원은 토스머니를 회사가 제시하는 가맹점에서 해당 가맹점과의 계약에 따라 허용된 경우, 해당 상품 또는 서비스 구매 등에 관한 지급 및 결제 수단으로 사용할 수 있습니다. 회사는 토스머니를 사용하여 결제를 할 수 있는 가맹점의 정보에 관하여 본 약관 제22조에 정한 방법으로 회원에게 알립니다.

비고

제30조 제3항 신설
기존 3항은 4항으로 조정

제 32 조 (토스머니의 환급 등)

변경 전

① 회원이 보유 중인 토스머니의 환급을 회사에 요구할 경우, 회사는 그 보유중인 잔고 범위 내에서 회원이 요청하는 금액에 이르기까지 회원이 지정한 은행계좌로의 현금을 계좌이체 하는 방법으로 환급합니다. 재화 등의 구매나 이벤트 등을 통하여 회사로부터 무상으로 제공받은 토스머니는 동조의 환급 대상에서 제외됩니다. 환급의 경우 회사는 회사가 정하여 제22조에 따라 회원에게 고지하는 기준에 따른 환급 수수료를 공제할 수 있습니다.

변경 후

① 회원이 보유 중인 토스머니의 환급을 회사에 요구할 경우, 회사는 그 보유중인 잔고 범위 내에서 회원이 요청하는 금액에 이르기까지 회원이 지정한 은행계좌로의 현금을 계좌이체 하는 방법 또는 “전자적 장치”를 통한 현금 출금을 허용하는 방법으로 환급합니다. 재화 등의 구매나 이벤트 등을 통하여 회사로부터 무상으로 제공받은 토스머니는 동조의 환급 대상에서 제외됩니다. 환급의 경우 회사는 회사가 정하여 제22조에 따라 회원에게 고지하는 기준에 따른 환급 수수료를 공제할 수 있습니다.

비고

제32조 추가

제6장 전자지급결제대행서비스

변경 후

제 39 조 (서비스의 제공)
회사가 제공하는 전자지급결제대행서비스는 지급결제수단에 따라 다음과 같이 구별됩니다.
①선불전자지급수단결제대행서비스 : 회원이 결제대금의 지급을 위하여 제공한 지급결제수단이 선불전자지급수단인 경우, 회사가 전자결제시스템을 통하여 선불전자지급수단의 정보를 송, 수신하고 결제대금의 정산을 대행하거나 매개하는 서비스
② 직불전자지급수단결제대행서비스 : 회원이 결제대금의 지급을 위하여 제공한 지급결제수단이 직불전자지급수단인 경우, 회사가 전자결제시스템을 통하여 직불전자지급수단의 정보를 송, 수신하고 결제대금의 정산을 대행하거나 매개하는 서비스
③ 신용카드결제대행서비스 : 회원이 결제대금의 지급을 위하여 제공한 지급결제수단이 신용카드인 경우로서, 회사가 전자결제시스템을 통하여 신용카드 지불정보를 송,수신하고 결제대금의 정산을 대행하거나 매개하는 서비스
④ 기타 회사가 제공하는 서비스로서 지급결제수단의 종류에 따라 '휴대폰 결제대행서비스', 'ARS결제대행서비스', '상품권결제대행서비스'

제40조 (이용금액의 한도)
회사의 정책 및 결제업체(선불전자지급수단 발행업자, 카드사 등)의 기준에 따라 결제수단별 월 누적 결제액 및 결제한도가 제한될 수 있습니다.

제41조 (거래지시의 철회)
① 회원이 전자지급결제대행서비스를 이용한 경우, 회원은 거래지시된 금액의 정보에 대하여 수취인의 계좌가 개설되어 있는 금융기관 또는 회사의 계좌의 원장에 입금기록이 끝나거나 전자적 장치에 입력이 끝나기 전까지 거래지시를 철회할 수 있습니다. 다만, 회원이 회사에게 거래지시의 철회를 하였더라도 부득이하게 철회의 의사가 금융기관에 도달하기 전 금융기관의 계좌의 원장에 입금기록이 끝나거나 전자적 장치에 입력이 끝난 후에는 거래지시의 철회가 불가능할 수 있습니다.
② 회사는 회원의 거래지시의 철회에 따라 지급거래가 이루어지지 않은 경우 수령한 자금을 이용자에게 반환하여야 합니다.

비고

제39조 신설,제40조 신설,
제41조 신설

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제6장 금융사기 피해신고 계정에 대한 조치

변경 후

제7장 금융사기 피해신고 계정에 대한 조치

비고

제6장 신설로 인한 변경

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제39조 (정의)

변경 후

제42조 (정의)

비고

조항 변경

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제40조 (피해의 신고)

변경 후

제43조 (피해의 신고)

비고

조항 변경

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제41조 (회사의 조치)

변경 후

제44조 (회사의 조치)

비고

조항 변경

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제42조 (피해 구제의 절차)

변경 후

제45조 (피해 구제의 절차)

비고

조항 변경

제7장 금융사기 피해신고 계정에 대한 조치

변경 전

제43조 (면책)

변경 후

제46조 (면책)

비고

조항 변경

개정된 Toss 서비스 이용약관에 동의하지 않으시는 경우에는 회원탈퇴를 요청하실 수 있으며, 개정약관 시행일 전까지 별도의 이의를 제기하지 않으실 경우 본 개정약관에 동의하시는 것으로 간주됨을 알려드립니다.

금번 약관 개정과 관련하여 궁금하신 사항은 고객센터(1599-4905, 카카오톡아이디: @toss)로 문의하여 주시기 바랍니다.

감사합니다.


개정 약관 전문 보기


딱히 검색이 잘된다거나
돈이 되지는 않는 듯

클래스와 객체

객체란?

클래스가 메모리가 올라간 상태를 말한다.


클래스란?

public class TheNewBook {}에서 class 말한다.


객체란?

TheNewBook a = new TheNewBook();처럼 new 붙은 것을 말한다.


클래스란?

객체가 new 되어 메모리에 올라가기 상태를 말한다.


자바에서 메모리에 올리는 예약 어는 가지가 있다.


static

new


이다. C++에서는 new, C에서는 malloc, calloc 기타 이를 응용한 라이브러리 함수들이겠다. 참고로 라이브러리도 API 일종이다. 위에서 말했던 int a = 1704; 예약어들이 없더라도 메모리에 공간을 확보하고 해당 값을 넣는 작업이 하부에서 진행된다. 객체지향이라는 것도 결국 메모리에 어떤 값을 만들고 그것을 이용해서 설계하는 방식의 일종일 뿐이다. 메모리에 값을 만들고 그것을 실행하면 모두 객체지향이라고 있다. 물론, 절차 지향이라고도 있다. 문제는 프로그래밍에 대한 새로운 시각으로 용어들을 없애버리고 싶다는 것이다. 장이 넘어가면 아마 절차 지향 객체지향이라는 단어를 쓰지 않아도 것이라 생각한다.


필자가 아는 프로그래밍 언어들은 CPU 메모리로 장난치데 도움을 주는 것들이다. 물론, C 자바의 메모리 모델은 다르다. 그것만 설명해도 많은 페이지를 할애해야겠으나 지금 책에서의 목표는 아니다.


클래스는 자체로 없다. C++에서 어떤 class struct 변경해도 전혀 문제가 없다. class struct 차이는 행동이 안에 들어 있느냐 없느냐 이기 때문에 적절한 변환만 준다면 동일한 것으로 수도 있게 된다. 하드디스크에 있는 프로그램이 실행이 되면 프로세스라 부르는데 뭔가를 실행하려면 메모리에 올려야 한다. 클래스는 하드디스크에 있는 프로그램이라고 보면 된다. 그러나 안에 static이나 new, malloc 메모리에 올려주는 예약 어가 있거나 생략되어 작동을 하는지에 주목할 필요가 있다는 것이다. 전공자는 앞의 용어들은 "그냥 이렇게 쓰는 갑다"라고 이해하고 다음과 같이 말아주면 좋겠다.

메모리() 컴퓨터 들었던 단어이고 내가 아는 바로 메모리다. 업그레이드에 필요하다고 들었다. CPU 컴퓨터에서 가장 중요한 부분이라고 들었는데 뭔가를 실행시켜 주는 것이다. 그리고 책은 내가 아는 CPU 메모리로 모든 프로그래밍 언어의 개념이 통한다고 말하고 있다.


두꺼운 책을 마지막까지 읽고 나면 결국 이야기를 하려고 기나긴 길을 돌아왔음을 알게 것이다.


필자는 IT 세상을 바꿀 있다고 아직 믿고 있다. 이런 망상도 본다. 만약, 이더리얼이나 비트코인( 가상화폐의 종류이다) 쓰는 사람들끼리만 마을을 만들고, 진짜 일을 하는 사람들(농축산업 종사자, 가공자, 음식점, 교사, 의사, 군인 ) 모아 두고 화폐를 통용시키게 하면 국가 조차 필요 없게 된다. 모든 사람들을 하나의 공동체에 포함하지만 상위 10% 재산을 가진 사람들은 제외한다면, 상위 10% 사람들은 안에서 자기 똥을 치워줄 사람, 밥을 해줄 사람들을 찾아야만 것이다. IT 어느 정도 있었던 사람이라면 망상이지만 만들 수는 있다고 생각할 것이다. 중간중간에 필자가 소송을 당할만한 내용도 들어가겠지만 Dirty Play 모르고는 돈에 근접할 수도 없을 것이다. 정작 중요한 것은 돈에 얼마나 근접하고, 많이 버느냐가 중요한 것은 아니다. 돈을 정말 하나의 수단으로 있는 능력자가 되느냐 마느냐는 사실, 당신의 마인드와 책을 충분히 소화해서 멋진 것을 만들어 내는 데에 달려 있다.



----



컴퓨터 언어는 우리가 일상적으로 쓰는 언어와 같다. 컴퓨터와 소통하기 위한 언어이다. 수백 개의 언어를 아는 것은 커리어에 도움이 되겠다. 그러나 생활 영어를 구사하는 실력보다는 TED에서 발표 원어민들 대상으로 세미나를 있다면 분명 높은 LEVEL 위치한다고 말할 있다. 


프로그래머가 되기 위해서는 앞서 말했 코드를 열심히 쳐야 한다. 2~3일이면 번째 마일스톤에는 도달했을 테니 초급 프로그래머가 추가로 공부할 Keyword 다음과 같다.


절차 지향 프로그래밍

객체지향 프로그래밍


전자는 컴퓨터의 탄생과 함께 개념이고, 후자는 명확한 날짜는 모르지만 중학생 (23 ) Borland 사의 Trubo C++ 3.0 구입했던 기억이 있으니 최소 20년은 넘은 개념이다. 그러나 많은 전공 학생들이 아직도 제대로 모르는 부분이 있어서 명확하게 적어 보려고 한다. 시간 코드 설명이면 전공자 모두가 고개를 끄덕였으니 말이 빠른 편임을 고려했을 . 3~4시간의 직접 강의라면 정도, 스스로 공부할 지도를 얻을 있는 셈이다. 세부적인 내용까지 들어가더라도 10시간을 넘지 않았다.


객체지향 프로그래밍은 다음의 개념을 알면 된다.


추상화

전달

객체지향 5 개념


추상화는 다음과 같이 나눠진다.


모델링 설계 방법

코드를 줄이는 방법


전달은 다음과 같이 나눠진다.


메모리를 통해 전달하는 방법

API 통해 전달하는 방법


객체지향 5 개념은 다음과 같이 나눠진다.

class, object, 다형성, 상속, 캡슐화


절차 지향과 객체지향 이야기

C 절차 지향이고 C++ 객체지향 언어라고 한다.


틀렸다.  아니라 "~ 절차 지향 언어다. 객체지향 언어다."라고 말하는 자체가 틀린 내용이다. 객체지향은 대상을 추상화하는 방식이 절차 지향과 달라서 프로그래밍을 설계를 바라보는 생각의 흐름이 달라지는 것을 말한다. 객체지향, 절차 지향 언어를 말하는 것은 무의미하다고, 이미 십수 전부터 학원 강사 활동하며, 많은 설파를 했지만 전달되지 않는 이유는 모르겠다. C++ 창시자(비얀 스트라 스트럽) C 번역되는 번역기를 먼저 만들었다. 만약, 객체지향 절차 지향을 나눈다고 하면 객체 지향 프로그래밍이 절차 지향 프로그래밍 언어로 번역되는 프로그램을 창시자가 먼저 만든 것이다. 논리적으로 태생을 달리하려는 세력 때문에 C C++ C/C++처럼 묶어버리고 , 가짜 객체지향 언어라고 하는 사람들도 보인다. 2016 명확히 이야기하면 C C++ 분명히 다른 언어이다.


그러나 모든 언어는 같다고 말하고 싶다. 밥을 달라고 하던 I'm hungry라고 하던 おなかすいた라고 하던 언어를 이용해서 밥만 먹으면 된다. 영문법 책을 보면 한국어와 영어가 같이 있는데 JAVA & C, PYTHON & JAVA 등과 같은 책은 없는 것일까?


그것은 그것들을 설명할 있는 언어를 사람들이 모르기 때문에 그렇다고 보인다. 필자 역시 배우는 단계에서 다른 언어로 이해하고자 선임자들이 방법이 잘못되었다고 말해서 안개 속을 오래도록 걸었었다. 프로젝트를 진행하면서 선임자들보다 잘한다는 것을 깨닫기 시작했을 확실하게 말할 자신이 생겼다. 이것은 무언가에 비유해서 설명할 것들이 아니다.



1065  git clone --depth=1 https://github.com/linagora/hublin.git && cd hublin

 1095  base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine

 1098  base=https://github.com/docker/machine/releases/download/v0.16.0 &&   curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&   sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&   chmod +x /usr/local/bin/docker-machine

 

1821  git config --global user.email "mynameis@hajunho.com"

 1822  git config --global user.name "joe"

 

1761  ssh-keygen

 1762  ls

 1763  cat id_rsa.pub

 

 


프로그래머는 연구직군 입니다. 야근, 특근을 한다고 해도 창조의 '재미' 없으면 안됩니다. 성장이 끝난 회사에서는 정치가

개발자와 프로그래머, 코더, 아키텍트는 사실 동일한 말입니다. 외국계 자격증에서 나누는 방식을 따르자면 아키텍트 > 디벨로퍼 > 개발자 순일 것입니다. 그런데 여기엔 슈퍼 코더란 신조어도 고려해야 하고, 코더의 네임 밸류가 아키텍트 보다 우위로 평가될 때도 있습니다. 소프트웨어는 프로그램과 문서를 합친 것을 말합니다. 프로그램과 함께 훌륭한 문서까지 만드는 사람을 소프트웨어 엔지니어라고 부릅니다. 소프트웨어 엔지니어가 기술적으로 배울 점이 있다고 인정한 사람을 아키텍트라고 하면 되겠습니다.  아키텍트 역시 개발 경력이 없으면 엉뚱한 설계를 하기에, 요즘에는 정확한 정의와 목적 없는 용어들이 난무하는 경우도 적지 않습니다. 프로그램을 만드는 사람은 프로그래머입니다. 개발을 하니 개발자라 불러도 무관합니다. 개발을 코드를 짜니 코더라고 해도 되고, 코더가 프로그래밍 언어을 짜면서 새로운 모듈을 구상하고 설계도 하니 코더를 아키텍트로 불러도 됩니다. 하나를 가리키기 위해 많은 단어가 필요하다는 것은 비효율적인 일입니다. 이런 다양하고 복잡한 관계를 가진 용어들을 책에서는 프로그래머로 통일하려고 합니다.

분야에서 일하며 프로그래머를 꿈꾸는 많은 학생들을 만났습니다. 친구는 소위 말해 스펙을 쌓아 놓은 친구였습니다. 인서울 대학교에 4.3대의 학점, 950 대의 토익 점수를 보유했고 IT 관련 자격증 2개를 준비했습니다. 제가 팀장으로 있던 회사의 계약직 직원이었는데 이전 직원이 망쳐 놓은 코드들을 새롭게 다시 있을 정도로 실력이 있었습니다. 서울대 대학원 지인을 소개시켜주고 진학의 마음을 다지도록 했습니다. 아니라 기술연구 소장님, 대표님께도 공부의 의지를 표방하고 준비하여 대학원에 가는 듯했습니다. 그러던 부모님께서 편찮으시다는 소식이 전해졌고, 가사를 돕기 위해 그는 일을 그만두고 진학도 포기한 부모님께서 운영하시던 가게 일을 도왔습니다. 제가 그를 위해 있는 것은 아무것도 없었습니다. 비슷한 처지의 학생들이 많습니다. 지식을가르치기 하기에는 학생들의 삶이 지나치게 고됩니다.[e][f]

1년의 경험이 있으면 분야에 대해 시간 정도 이야기 분량이 나옵니다. 10시간의 멘토링으로, 대학생 멘티들은 자신의 길을 스스로 찾을 있었습니다. 10시간의 멘토링을 하나의 책으로 담고 싶었습니다. 지식을 전달하는 이상의, 학생들로 하여금배웠다!’ 느낌이 드는 경험을 책으로 하게 하고 싶었습니다. 그러나 글을 쓰는 지금도경험을 책으로 전달하는 에는 대단한 의구심을 가지고 있습니다. 책의 이야기인 장자의 윤편을 보면 있을 것입니다. 하지만 저와 만나지 못하고 안개 속을 걷던 학생이 책을 읽고 정보를 얻을 있다면 그의 인생에 조금이나마 도움이 수도 있다는 생각에 펜을 잡았습니다. 또한 급한 성격 탓에 제대로 전달 못한 말들을 다시 써줄 훌륭한 공저자와 함께 진행을 있어 오히려 책으로 전달이 될지도 모른다는 희망을 가지고 있습니다. 좋고 나쁨의 피드백을 모두 대학생을 대상으로 했기에 대상 독자로도 대학생을 고려했습니다. 그러나 대한민국 땅에서 프로그래머를 하고자 하는 사람이라면 책이 분명 도움이 것이라 확신합니다. 끝으로 책이 나오기까지 도움 주신 출판사 관계자 공저자, 그리고 나의 가족. 특히 아내에게 고마움을 전합니다.



프로그래머는 연구직군 입니다. 야근, 특근을 한다고 해도 창조의 '재미' 없으면 안됩니다. 성장이 끝난 회사에서는 정치가

개발자와 프로그래머, 코더, 아키텍트는 사실 동일한 말입니다. 외국계 자격증에서 나누는 방식을 따르자면 아키텍트 > 디벨로퍼 > 개발자 순일 것입니다. 그런데 여기엔 슈퍼 코더란 신조어도 고려해야 하고, 코더의 네임 밸류가 아키텍트 보다 우위로 평가될 때도 있습니다. 소프트웨어는 프로그램과 문서를 합친 것을 말합니다. 프로그램과 함께 훌륭한 문서까지 만드는 사람을 소프트웨어 엔지니어라고 부릅니다. 소프트웨어 엔지니어가 기술적으로 배울 점이 있다고 인정한 사람을 아키텍트라고 하면 되겠습니다.  아키텍트 역시 개발 경력이 없으면 엉뚱한 설계를 하기에, 요즘에는 정확한 정의와 목적 없는 용어들이 난무하는 경우도 적지 않습니다. 프로그램을 만드는 사람은 프로그래머입니다. 개발을 하니 개발자라 불러도 무관합니다. 개발을 코드를 짜니 코더라고 해도 되고, 코더가 프로그래밍 언어을 짜면서 새로운 모듈을 구상하고 설계도 하니 코더를 아키텍트로 불러도 됩니다. 하나를 가리키기 위해 많은 단어가 필요하다는 것은 비효율적인 일입니다. 이런 다양하고 복잡한 관계를 가진 용어들을 책에서는 프로그래머로 통일하려고 합니다.

분야에서 일하며 프로그래머를 꿈꾸는 많은 학생들을 만났습니다. 친구는 소위 말해 스펙을 쌓아 놓은 친구였습니다. 인서울 대학교에 4.3대의 학점, 950 대의 토익 점수를 보유했고 IT 관련 자격증 2개를 준비했습니다. 제가 팀장으로 있던 회사의 계약직 직원이었는데 이전 직원이 망쳐 놓은 코드들을 새롭게 다시 있을 정도로 실력이 있었습니다. 서울대 대학원 지인을 소개시켜주고 진학의 마음을 다지도록 했습니다. 아니라 기술연구 소장님, 대표님께도 공부의 의지를 표방하고 준비하여 대학원에 가는 듯했습니다. 그러던 부모님께서 편찮으시다는 소식이 전해졌고, 가사를 돕기 위해 그는 일을 그만두고 진학도 포기한 부모님께서 운영하시던 가게 일을 도왔습니다. 제가 그를 위해 있는 것은 아무것도 없었습니다. 비슷한 처지의 학생들이 많습니다. 지식을가르치기 하기에는 학생들의 삶이 지나치게 고됩니다.[e][f]

1년의 경험이 있으면 분야에 대해 시간 정도 이야기 분량이 나옵니다. 10시간의 멘토링으로, 대학생 멘티들은 자신의 길을 스스로 찾을 있었습니다. 10시간의 멘토링을 하나의 책으로 담고 싶었습니다. 지식을 전달하는 이상의, 학생들로 하여금배웠다!’ 느낌이 드는 경험을 책으로 하게 하고 싶었습니다. 그러나 글을 쓰는 지금도경험을 책으로 전달하는 에는 대단한 의구심을 가지고 있습니다. 책의 이야기인 장자의 윤편을 보면 있을 것입니다. 하지만 저와 만나지 못하고 안개 속을 걷던 학생이 책을 읽고 정보를 얻을 있다면 그의 인생에 조금이나마 도움이 수도 있다는 생각에 펜을 잡았습니다. 또한 급한 성격 탓에 제대로 전달 못한 말들을 다시 써줄 훌륭한 공저자와 함께 진행을 있어 오히려 책으로 전달이 될지도 모른다는 희망을 가지고 있습니다. 좋고 나쁨의 피드백을 모두 대학생을 대상으로 했기에 대상 독자로도 대학생을 고려했습니다. 그러나 대한민국 땅에서 프로그래머를 하고자 하는 사람이라면 책이 분명 도움이 것이라 확신합니다. 끝으로 책이 나오기까지 도움 주신 출판사 관계자 공저자, 그리고 나의 가족. 특히 아내에게 고마움을 전합니다.


우선 JAVA C 같다고 보자. 그러면 C++, C# 같은 언어가 된다. JAVA에는 포인터가 없다고 한다. 그래서 포인터 예외는 자바 8에서 레퍼런스 예외로 명칭을 바꾸려나 보다. JAVA에는 포인터가 있다. Object Void 포인터이며, 인스턴스 변수라고 불리는 것이 포인터다. 멤버 변수는 일반 변수나 struct 대응되며, 자바에서 메소드라고 하는 것은 C function 같다. 리누스 토발즈는 자신이 객체지향 프로그래밍을 하고 있다고 말했는지 모르겠지만 이미 리눅스 커널은 C 만들어진 객체 지향 소스이다. wrapping 되는 class 들은 wrapping 하며 쓰이는 함수 포인터와 같다. 앞서 말했던 new malloc, calloc이다. 메모리 확보 추가 키워드는 static이다.


최근 일주일 동안 C 배웠지만 JAVA 모르는 학생들과 기술 면담을 하면서 라이브 코딩으로 가르쳐 주는 내용들이며 분량은 1시간 30분짜리다. - 아마 글로 옮기면 얼마나 길어질지 모르겠다. - "중도 탈락"이라는 말을 쓰는 학업 성적은 우수했던 학생들이 다시 공부를 있게끔 해준 기술적 내용 강의 학생들은 바로 알고리즘 공부나 디자인 패턴, 그리고 수학의 정석을 다시 편다. 기본 앱들을 만들 있고 공모전에서 수상했던 친구들이다. 대부분 맥을 쓰는데 맥과 리눅스도 같다고 설파한다.(모든 프레임웍 같다고 설파하는데 조금 자중해야 - 초반부 학생들이 자신감을 가지기 위해 하는 것이지만 철학부터 다른 프레임웍을 같다고 하는 것은 어폐가 있음. 이에, 전면 수정 예정)


UNIX LINUX 같지 않지만 같다고 말하는 이유는 수많은 파일 시스템을 지원하고 완전히 다른 메커니즘으로 구현되었지만 정책은 같기에 그렇다. 간단히 말하면 배시 셸을 쓴다. 맥도 배시 셸을 쓴다. 이제 윈도도 배시 셸을 것이다.



사족 - 사족은 언젠가는 지워진다10 만에 지워질 때도 있다. 구독자를 위한 얼리어 답터 글들이다.

우선, 책은 그냥 나오는 것이 아니다. 이야기한 적이 있지만 나도 쓰는데 기여를 경험이 있었다. 소스 검증하다 보면 새로운 것이 나와서 또다시 검증해야 했고, 프로그래밍 언어가 대규모 업데이트가 되면 업데이트를 해야 했다. 어떤 내용은 쓰려면 회사에서 중요한 내용들이라 적기도 그렇다. 매거진에도 그런 분이 계시지만 학생들의 포트폴리오를 만들어 주려고 자신이 했던 부분들을 공개하지 않고 감추는 스토리도 있다. 우수한 실력으로 책을 썼지만 보다 진솔한 이야기들을 주려고 기존의 강한 이미지를 던지는 분들도 계신다. 그러나 안타까운 것은 그런 정보를 얻고 정보를 부재시키는 신입 개발자가 억대 연봉을 받고 기업에 들어갔다는 이야기이다.(국내 이야기다) 배가 아픈 아니라. 똑똑한 머리로 선배들이 닦아놓은 길들을 교묘하게 이용하는 행위들이 싫다. 그래서 귀를 쫑긋 세우고 있는 애독자들을 위해서 업계 험담들을 올리고 지우고 했는 했었다.


2~3 멘토링을 받았던 친구들은 모두 리눅스 마스터 자격증을 땄다. 레드헷 자격증 같이 외국 자격증을 따도 되겠지만 덤프의 위력이 너무도 크고, 외국 자격증들은 바우처도 비싸고 유효기간이 짜증 나고, 그냥 배시 셸만 학습하면 된다는 생각에서였다. 그리고 학생들이 공부를 나가면서 실무적인 마일스톤을 가질 있으니 얼마나 좋은가?(실제로 회사에서 인턴으로 학생들을 보면 확실히 차이가 났다) 자격증을 친구들과 아닌 친구들 모두 내가 팀장인 회사에서 인턴을 시켰는데 실력 차이가 확실했다. 자격증은 그저 이거 이거 알아요 말할 있는 것을 그냥 기본은 아요로 대신 말해주는 같다.  개발에서는 자격증은 아무 소용도 없게 느껴진다. 그래도 사람을 뽑는 입장에서 오라클 자격증이 있는 친구는 SQL 기본 문법은 알겠구나 하는 정도로 생각한다. 기술사가 아닌데, 기술사 진로를 물어보는 학생에게는 경험을 이야기해 준다. 이음 멘토링 멘토 네트워크에서 만난 나의 멘토 한분은 기술사도 따고 감리사도 따고 박사도 따고 교수님도 하시고 기업 CTO 였다. 놀라운 것은 박사가 있는데 디자인 박사 학위를 밟고 계셨다. 앞으로는 디자인이 중요하다고 생각해서 하고 계셨다고 했다. 단기간 멘토링 때문에 이야기를 종종 하지만 이렇게 배움의 열정 앞에서는 돈도 사실 무의미하다.


학위나 일했던 경력이나 자격증이 증명하는 것은 이런 형식이라고 보인다. 작은 자격증이라 할지라도 무시하는 더러운 개발 문화 그런 풍조를 없애고 싶다. 자기 능력에서 열심히 공부해서 땄는데 한마디 꺼내는 문화. 강사 시절이 있었기에 나도 여려 땄지만 워드 자격증도 나는 당당하게 말한다. 물론, 워드 자격증 없이 잘하는 사람이 있다는 것을 알고 있다. 단순히 워드를 조금은 봤고, 이러이러하 기능들을 봤어요 하는 말을 줄여서 자격증이 있다고 하는 것이다괜히 내가 어쭙잖게 통합해서 정리했던 것으로 공부한 친구들이 이상한 문화를 만들까 노파심에 미리 적고 준비를 본다.겸손부터 적었지만 나도 인성을 바꾸기가 쉽지 않았다. 그게 쉬운가...  년도 이야기이긴 하지만, 대학교 나와도 아무 쓸모없다는 기조가 있었다. 그러나 시간이 지나면 분명 다르다는 것을 우리는 있다. 슈퍼 코더들이 학교에서 시간을 낭비할 필요는 없겠지만 내가 하는 멘토링의 최종 목적은 학교가 그런 요람이 되도록 모든 지식들을 학교로 돌려주는 있었다. 정작 자신은 학교를 무시하고 그것들의 존재에 대해서 많은 부정들을 했었지만 말이다. 앞서 말했듯이 시간 개념을 놓고 봐야 한다.


애플리케이션만 만드는 프로그래머는 의아해하겠지만 점점 칩단(LOW LEVEL) 내려가면서 프로그래밍을 하다 보면 for (int i = 0; i < 7; i++) dosomething();  보다.

dosomething();

dosomething();

dosomething();

dosomething();

dosomething();

dosomething();

dosomething();

빠를 때가 온다는 것이다. 결국 컴파일러 최적화 옵션만 맹신하지 말고 하부 구현까지도 의심해봐야 하는 레벨도 있다. 내려가면 해당 분야 박사님과 아무리 디버깅을 해도 원인을 찾지 못해서 결국, CPU fetch cycle 때문에 리셋이 난다는 식의 보고서를 적도 있었다. 내가 정도면 전기기사나 전기공사 기사 자격증을 공부하고 설계를 공부하는 것은 기본. HOMEBREW CPU 만든 사람과 같이 CPU 하나는 만들어 봐야 원인을 찾을 있을 같다. 물론, 그렇게 보내는 시간 동안 세상은 어떻게 변해 있을지 모르기에 실천으로 옮기지는 않을 것이다.


설계의 시작은 모든 가능성을 의심하는 것이고, 디버깅의 시작은 자신이 만든 부분만 의심하면 된다. 너무 넓은 범위를 잡으면 된다. 우선, 자전거로 안전한 동네 바퀴만 돌면 된다는 것이다. 당장에는 외국인과 대화할 언어를 배우지는 못했지만 집에서 서투르게 외국어를 말해보면 된다. 외국어를 어떻게 말할지 고민하지 말고 당장 코드 타이핑부터 시작하라.


- 툴은 C Visual studio 2015, JAVA oracle JDK8 + Eclipse mar2, Beyond compare

( 10년은 협업을 책임질 툴이라 선택, beyond compare 돈이 들어가기에 차선책 툴을 찾는게 좋아 보이긴 )





프로그래머랑 대화할 우선 헬로우 월드는 찍어 봤다고 하자. 연봉 5000 넘는 자바 개발자가 세미나를 하는데 public static void main (String args[]) (*자바에서 기초중에 기초) 못쳐서 인터넷 검색을 하는 것을 보았다.


gcc -E  --> Preprocessor, but don't compile

gcc -S  --> Compile but don't assemble

gcc -c  --> asseble but don't link

gcc with no switch will link your object files and generate the executable



https://www.gitbook.com/book/tra38/essential-copying-and-pasting-from-stack-overflow/details

https://www.youtube.com/watch?v=Cs1rn3KHgTA

창시자의 책을 보시면 헬로우 월드 예제가 틀렸다는 것부터 아실 겁니다. 대소문자 구분에 ! 아닌 같아요.

Nothing and Everything 입니다. 아무것도 아닌 같지만 전부일수도 있습니다.


여기까지 굳이 말할 필요 없지만 제가 말하고 싶은 것은


천재라면 혼자 칩만들고 굳이 모듈 나눌 필요도 없이 원코딩으로 하드웨어 제어 코드, 운영체제, 프레임웍, 사용자들이 어플까지 만들면 되고 서버 역시 필요한 모듈들을 코딩할 필요도 없이 기계어로 짜서 넣어버리면 되겠지요. 그게 안되기 때문에 모듈을 나누는 것이구요. 디자인패턴 역시 자주 쓰는 코드들을 정의해 두고 서로 소통하기 위해 정도는 알고 서로 이야기 하자고 만든 것으로 생각됩니다. 겸손하게 소통하고 치킨게임이 되어 가고 있지만, 모두를 이끌어 주는 것이 필요하다고 생각됩니다. 그리고 개발자 하청은 더러운 경영자, 발주자들의 목록을 만들어서 우리들이 사람들과는 아무리 돈을 줘도 일을 안하거나, 일을 해도 대충 일해주고 소스를 경쟁업체에 넘겨준다던가 하는 방법으로 가면 좋을 같습니다. 물론, 좋은 분들은 돈을 적게 주시더라도 되었을 분명 이익을 쉐어링 것이기 때문에 목록 공유하고 성심 성의껏 일하구요. IT 협동 조합이 최근 만들어져서 많은 기대를 하고 있지만 그런 목록 만들기는 온갖 이해 관계가 얽혀서 쉬운 일은 아닐겁니다. 그러나 필요하지요.

그리고 물타기는 아닙니다. 역시 Ctrl+C, V에다가 어차피 Ctrl+C,V라고 말하며 어느 정도 지식은 있는 영약한 학생들이 유명 학교 빽그라운드만 믿고 나이가 13 차이나는데 살살 긁으며 빡돌게 하는 후임들이 많아서 어떤 요지인지는 100% 알고 있습니다. 옥시 사태처럼 진짜 중요한 정보 하나 정도는 알려줘야 하나 말아야 하는 기로에 고민을 합니다. 그럴 기준점이 되는 것은 제품 사용자들은 가족이 수도 있기에 사용자에게 무엇을 것인가가 기준점이 됩니다. 정치를 못하는 것도 아니라서 불이익을 주거나 잘라버리는 것은 사실 어렵지 않습니다만, 어린 노무 ㅅㄲ들을 상대로 이런 고민을 해야 하는 제가 너무 우스울 때가 있지요.

그리고 댓글이 많이 달리는 주제를 이끌어 주신데 감사드립니다.

  • 경영·사무  영업·고객상담  IT·인터넷  디자인  서비스  전문직  의료  생산·제조  건설 유통·무역  미디어  교육  특수계층·공공
  • 웹마스터·QA·테스터
  • 서버·네트워크·보안
  • 웹기획·웹마케팅·PM
  • 웹프로그래머
  • 게임·Game
  • 컨텐츠·사이트운영
  • 응용프로그래머
  • 시스템프로그래머
  • ERP·시스템분석·설계
  • 통신·모바일
  • 하드웨어·소프트웨어
  • 웹디자인
  • HTML·웹표준·UI개발
  • 동영상·편집·코덱
  • IT·디자인·컴퓨터교육
  • 데이터베이스·DBA

이뿐이랴...

건강 이꼬르 절약

내용 삭제

부트코드를 이해하기 위해 USB에 부트코드를 만들고 USB로 부팅하는 방법을 소개한다. BIOS에서 부팅 순서는 변경 시킬 수 있고, 컴파일러의 역할을 알고 있는 사람이라면 쉽게 할 수 있겠다.


http://www.yes24.com/24/Goods/1469757?Acode=101

rawwrite를 찾을 수가 없어 dd 윈도우즈 버전으로 대체하여 실행하였다. 하드 지우긴 그래서 USB로 부팅하였다. USB 중 SANDISK는 안된다. 내부적으로 보안 영역이 따로 있어 이미지를 0번지부터 써도 0번지부터 기록되지 않는 듯하다. 윈도우용 부트로더를 먼저 이해하고 u-boot와 리눅스 커널을 보면 한결 쉽다.


[org 0]

[bits 16]

jmp 0x07C0:start    ;far jmp 를 한다.

start:

mov ax, cs    ;cs 에는 0x07C0 이 들어 있다.

mov ds, ax     ;ds 를 cs 와 같게 해준다.

        mov ax, 0xB800    ;비디오 메모리의 세그먼트를

mov es, ax    ;es 레지스터에 넣는다.

mov di, 0;제일 윗 줄의 처음에 쓸 것이다.

mov ax, word [msgBack] ;써야 할 데이터의 주소값을 지정한다. 

mov cx, 0x7FF       ;화면 전체에 쓰기 위해서는 

    ;0x7FF(10진수 2047)개의 WORD 가 필요하다.

paint:

mov word [es:di], ax;비디오 메모리에 쓴다.

add di,2;한 WORD를 썼으므로, 2를 더한다.

dec cx    ;한 WORD를 썼으므로, CX 의 값을 하나 줄인다.

jnz paint   ;CX 가 0이 아니면, paint로 점프하여

   ;나머지를 더 쓴다.

mov edi, 0;제일 윗 줄의 처음에 쓸 것이다.

mov byte [es:edi], 'A'  ;비디오 메모리에 쓴다.

inc edi;한 개의 BYTE를 썼으므로 1을 더한다.

mov byte [es:edi], 0x06 ;배경색을 쓴다.

inc edi;한 개의 BYTE를 썼으므로 1을 더한다.

mov byte [es:edi], 'B'

inc edi

mov byte [es:edi], 0x06

inc edi

mov byte [es:edi], 'C'

inc edi

mov byte [es:edi], 0x06

inc edi

mov byte [es:edi], '1'

inc edi

mov byte [es:edi], 0x06

inc edi

mov byte [es:edi], '2'

inc edi

mov byte [es:edi], 0x06

inc edi

mov byte [es:edi], '3'

inc edi

mov byte [es:edi], 0x06

jmp $;이 번지에서 무한루프를 돈다.

msgBack db '.', 0xE7;배경색으로 사용할 데이터

times 510-($-$$) db 0;여기서 부터, 509 번지까지 0 으로 채운다.

 dw 0xAA55;510 번지에 0xAA 를, 511 번지에 0x55 를 넣어 둔다.



updated at 20180722

다시 커널 책을 펴다 -> 현제 제목으로 변경 후 매거진 변경(Linux Master)

정상동작 확인(역시 Sandisk에서는 안되니 다른 USB 사용 요망)


nasm -Administrator 권한으로 설치 必

C:\NASM>nasm -f bin -o boot.bin boot.asm


USB 드라이브가 e라고 가정

C:\NASM>dd if=c:\nasm\boot.bin of=\\.\e: bs=512 count=1


NASM 2.13.01_64bit magnet

magnet:?xt=urn:btih:BDFF52A5C3CDD8604D4921CE75DD6D9D549D10BE&dn=nasm-2.13.01-installer-x64.exe&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce


DD 0.4 beta magnet

magnet:?xt=urn:btih:2ACA21B101B83BBB83A663A90D7905A573A6EB81&dn=dd-0.4beta1.exe&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce

'블로그 항해 일지 > Embedded' 카테고리의 다른 글

SW PWM, UART 구현  (0) 2019.01.11
ODROID GPS 모듈 입양 完  (2) 2019.01.08
GPIO 제어 via 블루투스 on 삼성폰  (0) 2019.01.08
블루투스 연결  (0) 2019.01.08
GPIO 컨트롤  (0) 2019.01.08

관련 강의가 있어 우선, 환경 세팅을 진행하였다. VMWARE에 UBUNTU 18.04 설치.

같은 컴퓨터에서 20명 우분투 환경 설정하는데 버그가 이렇게 다양하게 나오는지 황당했다.


VTx Enabling 문제

-> hp elite 8300은 특이하게 Security -> System Security에 해당 옵션이 들어 있어서 황당. 보통은 CPU 혹은 system 의 Advanced Setting에 들어있는데 말이다. 본디 가상화 메뉴가 바이오스 버전인 줄 알고 2013 버전 바이오스를 2018 버전으로 업데이트까지 했었음 ㅠㅠ


네트워크가 막힌 상태에서 VMWARE player 14 설치가 안 되는 버그

-> 14 버전에서 설치 시 네트워크로 뭘 체크하나 봄. vmware player 12 버전으로 해결


ubuntu 18.04에서 lock 파일로 apt 동작 안 하는 문제

-> 백그라운드에서 자주 쓰나? lock파일 삭제(캐시 폴더에서도 삭제)로 해결


네트워크 연결 후 apt-get 실행 시 모두 같은 환경인데 몇몇만 실행 안 되는 문제

-> 동일 IP에서 너무 많은 요청이라 막는 듯. /etc/apt/sources.list에서 us.ubuntu블라블라를 kr.ubuntu로 모두 수정하여 해결


build-essential 설치를 못하는 문제 및 기타

-> 리눅스의 bash shell이 어색한 친구들 문제. history 보고 하나씩 해결


모두 LOG가 남는 문제라 쉬운 troubleshooting.




아래 명령어는 알아두자~

https://www.tecmint.com/useful-basic-commands-of-apt-get-and-apt-cache-for-package-management/ 

 

'진행 프로젝트 > [진행] My tools.' 카테고리의 다른 글

kakao T crash  (2) 2019.01.18
ibk onebank crash  (0) 2019.01.18
하스스톤 크러시 로그  (0) 2019.01.18
그냥 테스트 코드  (0) 2019.01.17
Snapkit Error type - 1  (0) 2019.01.02

크롬보다 파폭에서 더 잘되네.

http://hajunho.com/jjj/

위에꺼 이제 안된다.

 들어가면 복잡한데

three.js 로더를 이용해서 obj 파일 불러왔다고 보면 간단함.


요새 데이터 시각화에 관심이 늘었는데 매거진을 하나 파야 할 것 같다. 아니다. 일만 많아지니 오드로리드랑 안드로이드에 집중해야지.

'진행 프로젝트 > [진행] 개발 팁 &amp;amp;amp;quot;줘볼까?&amp;amp;amp;quot;' 카테고리의 다른 글

drawrect  (0) 2020.11.25
date  (0) 2020.11.25
drawText  (0) 2020.11.24
포로그래메트리  (0) 2020.10.04
I love swift & 3D programming.  (0) 2019.01.22

0 코드

Uri uri = Uri.parse("market://details?id=" this.getPackageName());
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
try {
    startActivity(goToMarket);
catch (ActivityNotFoundException e) {
    startActivity(new Intent(Intent.ACTION_VIEW,
            Uri.parse("http://play.google.com/store/apps/details?id=" this.getPackageName())));
}
return true;


1 사실, 이 사이트 소개

https://code-examples.net/ko/q/a50cf5

구글에서 "code-examples.net"  -site:code-examples.net 로 검색하면, 트위터 달랑 하나 나온다. 그만큼 구글링에 의존하고 있는데 목록을 따로 하루 하나씩 봐 두는 것도 나중에 찾기 까다로운 녀석이 나왔을 때 도움이 된다고 생각한다.

'프로그래머' 카테고리의 다른 글

alba todo  (0) 2022.03.06
log4git  (0) 2021.01.04
자신의 성격을 아는 것은 중요하다.  (0) 2020.06.19
안드로이드 BT 메뉴 띄우기  (0) 2019.01.08
And "roid"  (0) 2019.01.08

낙서 같은 거라서 ODROID 매거진이 아닌 ETC에 넣는다.


판다. 하드커널에서

설명서도 제공한다

https://wiki.odroid.com/accessory/connectivity/usb_gps

근데 설명서 업데이트를 해야할 것 같다. 제대로 안된다.


여하튼, 디바이스 드라이버가 잘 동작하고 관련 앱이 잘 도니

cgps는 


gpsmon은

근데 왜 값이 다를까 ㅡㅡ; 다른 플랫폼이라면 이해하겠는데 말이다 ㅠㅠ 

Latitude, Longitude는 정말 중요한데 말이다 ㅠㅠ


gps라 결국 모듈은 창문 밖으로 내어 놓아야 했다.


배움은 힘들다. 메뉴얼도 한번에 되는 것도 없다.

또 한, 계속 돈이 들어가고. 용어의 모호함도 많다. 


책도 그렇다.

서점을 가면, 프로그래밍 언어 관련 책은 외서 번역본이 많은 이유가 국내에서 뭔가를 제대로 정립해서 대가가 되어 이론을 만든 사람이 없다. 다 차용했다. 그래서 번역이 이상하게 된다.


프로그래밍 서적은 간단하다. 모든 것은 CPU와 메모리의 장난에서 출발하면 좋을 것 같다.

어려운 용어도 간단해진다.

선언 declaration : 변수의 저장 메모리 예약

정의 definition : 예약된 메모리에 데이터를 저장

초기화 initialization : 선언과 정의를 동시에


오늘도 기초 공부를 한다. 나이가 들고 경험이 쌓일수록 더더욱 기초만 공부하게 되는 것 같다.

integral - signed, unsigned, (struct, union, enum), (pointer, array, function) ...

'블로그 항해 일지 > Embedded' 카테고리의 다른 글

SW PWM, UART 구현  (0) 2019.01.11
x86용 부트코드  (0) 2019.01.08
GPIO 제어 via 블루투스 on 삼성폰  (0) 2019.01.08
블루투스 연결  (0) 2019.01.08
GPIO 컨트롤  (0) 2019.01.08

글자 수 ㅠㅠ 한글이 abbreviations 주말 엄마와 아이가 놀러 간 틈을 타, 


전등, 모터 등을 켜고 끌 때 블루투스를 이용하면 편리할 것 같고 이미 많은 사람들이 미리 만들어 놔서 오픈소스를 이용하여 금방 구현하였다. 3시간, 검색 및 오픈소스 검증 2시간, 수정 코딩 1시간. 


제목을 수정했는데 on 삼성폰이라고 ... Android 니 LG에서도 되겠지만 안해봤으니 그렇게 안 적으련다.


0 결과

https://www.youtube.com/watch?v=AuZUqi0V7qc


1 소스

http://webnautes.tistory.com/1137

https://github.com/OmarAflak/Bluetooth-Terminal

* 참조

http://ippuu.iptime.org/entry/Linux-Device-Driver-XU3XU4-GPIO-Timer-%EB%B0%8F-IOCTL-%EC%A0%81%EC%9A%A9-%EC%A0%9C%EC%96%B4

http://ippuu.iptime.org/entry/Device-DriverXU3XU4-GPIO-%EC%A0%9C%EC%96%B4-%EA%B4%80%EB%A0%A8


2 유의사항

- Android 터미널은 마이그레이션 해야 한다. 대부분 자동으로 되는데 중간에 퍼미션은 열어 줬던 듯. 

- 라즈베리나 오드로이드나 둘 다 리눅스 기반이지만 기본 탑재된 패키지가 다르니 몇몇 설치해줘야 패키지가 있을 것이다

- 컴파일 때, 라이브러리 지정 순서도 중요하다 -lwiringPi -lpthread -lcrypt -lwiritingPiDev -lm -lrt -lbluetooth 순으로 했다. 안 되는 조합이 딱 1개 있었는데 좀 신기했음. Makefile 만들기 전 테스트라 ^^;;


3 결론

블루투스 프로토콜 스택은 참 잘되어 있다. 오픈소스도 많다. 1.0~4.0까지의 하위 호환성도 참 좋다.

'블로그 항해 일지 > Embedded' 카테고리의 다른 글

x86용 부트코드  (0) 2019.01.08
ODROID GPS 모듈 입양 完  (2) 2019.01.08
블루투스 연결  (0) 2019.01.08
GPIO 컨트롤  (0) 2019.01.08
Ubuntu Image download  (0) 2019.01.08

AndroidManifest 권한 설정


<protected-broadcast android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
<uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />


<application

<activity

android:exported="true"


도 하고



BT_On()


BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (!mBluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}


IAllowYouToFindMeDuring300s()

Intent discoverableIntent = new
        Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);


IntentOfBTScanMenu()

startActivity(new Intent(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS));


Android 플랫폼이 추상화를 참 잘해놔서

C++과는 달리 JAVA+Android Studio는 필요한 애들을 자동으로 다운로드하고 실행하게 잘해놔서 API 호출 코드 몇줄이면, 정말 편하게 만든다. 


'프로그래머' 카테고리의 다른 글

alba todo  (0) 2022.03.06
log4git  (0) 2021.01.04
자신의 성격을 아는 것은 중요하다.  (0) 2020.06.19
별점주기 코드  (0) 2019.01.08
And "roid"  (0) 2019.01.08

안드로이드는 프로그래밍 스킬 + 디자인 패턴까지 배울 수 있는 만병 통치약이다. 삼성 최초의 안드로이드 디바이스 P1 개발을 시작으로 IPC, RIL, Framework, 보안 모듈, Application 경험은 하였지만, 사실 기억이 잘 안 난다. 트러블 슈팅을 어떻게 해야 할지에 대한 감만 남은 상태. 




Framework 아랫단(프레임웍 커널, IPC, RIL, 등)은 대부분 C/C++로 구성되어 있고, 삼성/LG와 같은 대기업 소속 연구원이 아니면 접해보기 어렵다. 시대가 변해도 바뀌지 않는 ARM architecture 기반의 Instruction set과 CP(모뎀칩)에 S/W가 쌓이기에 별다른 것은 없겠지만 최신 트렌드를 따라가기 위해 Application에 집중하기로 한다. 거대한 Android에서 사실 개인이 한 분야만 해도 따라가기 힘든데, Android/iOS, Embedded, WEB(Node.js, React)을 병행해야 하는 개발자에게는 버겁다. 간단히 말하면 능력이 안된다는 말. 유순하게 표현하면 능력 밖, 좋게 포장하면 전문성을 위한 포기 정도로 보면 되겠다. 현실을 그렇더라도 염세주의는 좋아하지 않으니 시작과 끝은 Android Application으로 하자.





한 3년간은 iOS를 하느라 Android 지식이 옛날 지식밖에 없어서 새로운 게 뭐가 있을지 조금 둘러보게 되었다.



Material Component

머티리얼 디자인은 나온 지 꽤 오래되었지만 대부분 사용하지 않는 듯하다.




Transformation

Top App Bar

Text Field

Tabs

Fonts

Floating Action Button

Chips

Cards

Buttons

Button Navigation

Bottom App Bar




다시 기본기를 다져야겠다.



Fragment, NDK

안드로이드 화면 한 장 한 장은 Activity라는 단위로 구성된다. 물론, 하나의 화면을 꼭 하나의 Activity로 구성할 필요는 없다. SlotView 형식으로 하나의 Activitiy 에 여러 화면을 올려도 되고, setContentView를 이용한 xml 구성이 아닌 코드로 구성해도 된다. 혹은 엔진을 얹여 해당 framework을 이용해도 되겠다. 그러나 기본적인 앱은 안드로이드가 제공하는 기본을 따르는 것이 좋고, 예전에는 Activity에 Relative Layout이나 FrameLayout을 기본으로 한 xml을 썼다면, 지금은 Fragment로 구성한다는 것을 알면 된다. 그렇다. Fragment는 Fragment가 있기 이전 Activity 전환 시 생기는 깜빡임 현상을 줄이기 위해 만든 slotView에서 발전하여 안드로이드가 공식 지원하는 레이아웃이 되겠다. 그리고 기기별로 따로 코드로 따로 구성해 주어야 했던 힘듦도 사라졌다. 태블릿에서는 Fragment를 2개 보여주고, 폰에서는 1개만 보여주고 화면 전환이 가능하도록 하였다. 여기서 말하는 레이아웃은 안드로이드에서 말하는 레이아웃이 아닌 어도비 포토샵의 레이아웃으로 보면 되겠다. 갈아 끼우는... 중첩은 되지 않는 replace로 바꿔야 한다.




1.0 이전은 Eclipse에 비해 못쓸 수준이던 Android Studio도 많은 버전업을 거치면서 gradle, cmake, NDK 및 여러 예제가 포함되었다. gradle은 Ant, Maven 보다 향상된 자동화 도구인데 정말 작년부터는 gradle이 모두를 대체한다고 봐도 무방할 정도로 편리하고 안정적이 되었다. cmake는 다양한 플랫폼에 빌드용 project 파일을 만들어주는 녀석이다. 버추어 버신, 아니 달빅, 아니 L, 아니... 안드로이드 프레임웍에서는 문제없지만 C/C++은 기본적으로 UNIX만을 위해, 또는 각자의 머신에 종속되어 있던 태생이 있으므로 cmake를 결합하여야 한다. 안드로이드 프레임웍과 애플리케이션도 혼자 짜면 자바를 이용 안 해도 되겠지만 이미 만든 프로그램도 많고, C/C++은 강력하기에 그것들을 연결한 NDK도 필수. 이제 레퍼런스 보면서 API 찾아서 잘 쓰면 된다.




Fragment로 구성된 앱의 기본 구조를 살펴보자.




엔트리 포인트는 AndroidManifext.xml이다.

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>




해당 엔트리 포인트에서

setContentView(R.layout.activity_entry_point);

xml 레이아웃을 세팅한다.




세팅된 레이아웃에서 

<include layout="@layout/content_entry_point" />

다른 레이아웃을 불러오고




해당 레이아웃에서 Fragment를 설정한다. 연결된 JAVA 파일을 설정해 준다는 뜻

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment"
android:name="com.hajunho.odroid.odroidcontroller.EntryPointFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:layout="@layout/fragment_entry_point" />




해당 파일에서는 다시 xml를 불러와 펼쳐준다.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_entry_point, container, false);
}




복잡하게 연결하지 않더라도 Fragment를 상속받은 블라블라Fragment를 만들고

instance블라블라Fragment = new instance블라블라Fragment();

getSupportFragmentManager().beginTransaction().add(R.id.container, instance블라블라Fragment).commit();




붙이는 container는 간단한 FrameLayout으로 구성하면 되겠다.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>




NDK는 Android Studio가 버전업을 하면서 기초 코드가 작성된 상태로 나오고 내부에서 자동 빌드가 가능했다. C 파일이 내부에서 있어서 변형하면 바로 적용이 되었다. 따로 컴파일해서 so 파일 만들고 연결 브릿지 만들지 않아도 되니 무지하게 편했다 ㅠㅠ 대기업 선행 개발의 삽질을 안해도 되니 이제 플랫폼이 나오면 성숙되기를 기다렸다가 들어가는게 좋을 것 같다. (물론, 돈과는 멀어지겠지)



Dagger2 Fragment 

요새 유행하는 "위존성 주입"을 위한 Fragment를 만들어 보았다. 의존성 주입은 같은 코드를 계속 적어야만 하는 번거러움을 없애고자 기존 모듈에 @블라블라 와 같은 annotation 만 적으면 다른 곳에서 @ annotation을 이용하여 모듈처럼 불러 쓸 수 있게 만든 것이다. 사실 싱글톤으로 만들고 생성 코드를 Factory나 Builder 패턴을 이용해서 만들어 두면 되는데, 유행은 따라야 편해보이고 어려운 개념을 많이 쓸 수록 연봉은 올라간다. 보일러 플레이트 코드를 줄이는 방법이 Dagger2 밖에 없으랴? 간단히 라이브러리로 만들면 될 것을 ^^;;




우선, app 바로 밑에 있는 build.gradle에 다운로드 코드, 아니 디펜던시 코드를 추가한다.

dependencies {

api 'com.google.dagger:dagger:2.15'
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
api 'com.google.dagger:dagger-android:2.15'
api 'com.google.dagger:dagger-android-support:2.15'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.15'
api 'com.android.support:multidex:1.0.3'

.

.

.

이제 

import dagger.android.support.DaggerFragment;

만 해주면 DaggerFragment를 이용할 수 있다.




public class MainFragment extends DaggerFragment {
}




https://www.androidhuman.com/life/2016/06/06/dagger2_resources/
Dagger2 학습에 필요한 참고자료

#Android and #Koltin

www.androidhuman.com


여기서 youtube 강의는 dagger가 뭔지 한번에 알 수 있게 해 주었다. 인터넷에서 찾은 머티리얼 디자인 예제 소스도 Dagger2를 이용하여 구현되어 있었다.



Image Loading Library

메모리가 작은 안드로이드에서 가장 골칫 거리는 Image Loader였다. 초창기 버전의 유니버셜 이미지 로더는 이제 다른 프로젝트에 가려지게 된 것 같다.

http://gun0912.tistory.com/17
[안드로이드/Android]유용한 라이브러리 - Glide (이미지 로딩 라이브러리)

우리가 ImageView에 사진을 띄우고자 하는 경우는 여러가지 입니다. 1. 안드로이드 앱 안의 drawable폴더의 리소스를 보여주는 경우 2 .안드로이드 디바이스 안에 저장되어있는 사진을 보여주는 경우(갤러리 혹은..

gun0912.tistory.com





잠깐만 둘러보아도 많은 것이 변형되었지만 1주일간 이것저것 만들다 보니 딱히 크게 변화된 사항도 또 없는 것 같다. 어차피 자바라는 프로그래밍 언어 테두리에서 벗어나지 않아서 그런가?



코틀린

모르는 프로그래밍 언어다. 새로운 언어가 있다고 해서 우선 repository를 찾았다.




https://github.com/JetBrains/kotlin
JetBrains/kotlin

kotlin - The Kotlin Programming Language

github.com


소스 받아서 확장자부터 보았다. cpp, hpp, c, h 파일은 없고, java와 kt가 대부분.

자바로 만들어졌구나, 그래서 이런 생각이 들었다.

자바에서 더 추상화한 언어라면 더 적은 코드로 원하는 것을 구현할 수 있겠네? 그 대신 앱의 복잡도가 증가할수록 트러블 슈팅은 더 어려워지겠네? 어라? 인텔리 J 만든 JetBrain사에서 만들었구나. 새로운 언어에 대한 도전으로 Android Studio를 이용해서 접근하는구나... 어차피 오라클 때문에 JDK가 아닌 OpenJDK로 간 구글도 JAVA보다는 코틀린을 밀테니 아랫단에서 C++코드로 구현해서 상위단으로 올린 Android API는 코틀린에서 다 지원하겠네? JNI, NDK만 되면 C++ 코드도 다 쓸 수 있으니 향 후 에는 결국 코틀린으로 가긴 하겠다는 생각. 왜냐면 모바일은 포토샵이나 AutoCAD 같은 거물급 앱은 없어서 킬러앱이 프레임웍의 방향성을 좌지우지 하지는 못하기 때문이다.




https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
Try Kotlin

Try Kotlin right in the browser.

try.kotlinlang.org





코드를 좀 보았다. 결국 양자 컴퓨터 이전의 컴퓨터 언어는 다 거기서 거기구나 괜히 더 햇갈리기만 하겠구나... 라는 생각이 들었다.




결국, 언어에 대한 입맛보다는 해당 프로젝트를 어떤 언어로 구현하기로 결정했고 다른 프로그래머들과 어떤 언어로 소통할지 정해지는 프로젝트가 더 중요하다는 생각이 들었다.




Android/iOS 두 가지 지원 때문에 폰갭이 나왔었고, XML, XAML 개념, 그리고 React native까지...

그러나 두 회사가 하나의 회사는 아니기에 결국 Native 앱은 Native로 만들어야 한다는... 뭐 FACEBOOK이 Google이나 Apple에게 압력을 줄 정도면 모르겠지만.




일전에 안드로이드 폰을 통일한 삼성이 따로 삼성 앱스토어를 만들고 기본 배포하려고 할 때 구글에서 인증을 해주지 않겠다는 협박을 했었다. 세상은 그렇다. 코볼 엔지니어가 아직 나보다 더 많은 연봉을 받는 이 시대에 굳이 유행을 따를 필요는 있으랴?




Android는 아직 자바로 충분하다. 그러나 분명 나중에는 버릴 것 같다. 애플도 SWIFT 공식 언어를 내고 아직까지 Objective-C를 지원하고 있다. 둘 다 사용해보니 마이그레이션 되는 코드도 있고, 안 되는 코드도 분명 있더라. 그러나 기본 기능은 확실히 SWIFT로 다 만들 수 있다. 코틀린도 그런 것 같다. iOS 앱은 마이그레이션 하다가 swift 코드와 objective-c 코드가 공존하게 되었는데 알 수 없는 링크 에러 때문에 더 진행하지 못하는 부분이 있었다. 물론, 프레임웍까지 디버깅하거나 ICE 물려서 더 아래단까지 보고 누구 잘잘못 따질 시간적, 경제적 비용, 권한도 없다.




Android는 자바에서 코틀린으로 바뀌겠지만 한방에 마이그레이션 될리는 절대, 절대 없다. 구글이 꽤 큰 프로젝트들에 대한 소스 접근 권한이 있어서 대부분 테스트 해 보지도 못할 테고 한 명이 짠 것도 아니어서 완벽한 이론에 기초될 리도 없다. 물론, 같은 목적과 수준의 앱이라면 구글이 마이그레이션을 장려하거나 그 앱의 편을 조용히 들어줄 것이다.(검색이 더 잘되게 한다던가 -> 페이스북에서 페이스북 동영상은 youtube 링크보다 10배 더 많이 퍼지게 해 놓은 것이랑 같은...)




개인적인 생각이지만,

너무 계속해서 새로운 언어가 나오다 보니, 이제 기본기는 C++로 회귀할까 생각 중이다. 필요한 프로젝트가 C++ 이 아니더라도 프로젝트 완성하는 데는 큰 어려움이 없으니까 말이다. 상위단에서 구현되는 새로운 개념을 LOW LEVEL 언어로 구현하면 "정수"를 알 수 있기도 하고 말이다.




시간을 어디 배분하느냐의 차이겠다. 남는 시간에 오버워치를 할 것 인가... 좀 더 NERD 하게 될 것인가.

'프로그래머' 카테고리의 다른 글

alba todo  (0) 2022.03.06
log4git  (0) 2021.01.04
자신의 성격을 아는 것은 중요하다.  (0) 2020.06.19
별점주기 코드  (0) 2019.01.08
안드로이드 BT 메뉴 띄우기  (0) 2019.01.08

ODROID에 BT 동글을 연결해 봅니다.


!! bT동글을 꽂았는데 안되는 경우

# dmesg -Hw

실행 해 보시면 간혹 USB 허브를 이용하는 경우 제대로 인식이 안되는 경우가 있다는 것을 알 수 있습니다. 

10번 중 1번 정도 발생


PARING

기본 내장이지만 customize 해서 쓰시는 분은 아래 패키지 설치 하셔야 합니다.

sudo apt-get install bluetooth bluez bluez-tools rfkill rfcomm

lsmod | grep bluetooth 로 검색되시면 블투모듈이 올라온겁니다.


# bluetoothctl

# list (이 명령어는 자동 실행됨)

[New] Controller 00:1A:7D:DA:71:13 odroid

로 ODROID MAC Address 확인

# info 00:1A:7D:DA:71:13 로 세부정보 확인 가능


# power on (보통 자동으로 on되어 있음)

# scan on

Android 휴대폰 MAC Address 확인


# scan off

# agent on

# default-agent

# pair XX:XX:XX:XX:XX:XX

# trust XX:XX:XX:XX:XX:XX 


볼거리

https://code.tutsplus.com/tutorials/create-a-bluetooth-scanner-with-androids-bluetooth-api--cms-24084

https://developer.android.com/guide/topics/connectivity/bluetooth?hl=ko

https://stackoverflow.com/questions/6141668/bluetooth-examples-for-android

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothSocket.java

https://arsviator.blogspot.com/2010/05/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-bluewatch-project-2.html

https://github.com/bablokb/pi-btnap

'블로그 항해 일지 > Embedded' 카테고리의 다른 글

x86용 부트코드  (0) 2019.01.08
ODROID GPS 모듈 입양 完  (2) 2019.01.08
GPIO 제어 via 블루투스 on 삼성폰  (0) 2019.01.08
GPIO 컨트롤  (0) 2019.01.08
Ubuntu Image download  (0) 2019.01.08


GPIO 제어를 위해 WiringPI library를 이용합니다. WiringPI는 Broadcom의 BCM2835, BCM2836, BCM2837 칩을 위한 라이브러리입니다.

http://wiringpi.com/




브로드컴의 BCM 시리즈 칩은 다음과 같은 페리(Peripheral, 주변장치)를 붙여 설계할 수 있습니다.


• Timers

• Interrupt controller

• GPIO

• USB

• PCM / I2S

• DMA controller

• I2C master

• I2C / SPI slave

• SPI0, SPI1, SPI2

• PWM

• UART0, UART1 

* 2835 datasheet 참조 https://www.raspberrypi.org/app/uploads/2012/02/BCM2835-ARM-Peripherals.pdf




Raspberry Pi Model B+ 은 Broadcom BCM2835을 쓰고, Raspberry Pi 2 Model B는 Broadcom BCM2836 칩을 씁니다. 둘 다 GPIO 개수가 40개로 ODROID-XU4 보다 10개가 많습니다. 라즈베리 파이는 PWM도 달려있어 장치 제어에 많이 쓰고 그만큼 유저도 많습니다. 현재로서는 직접 설계 없이 콘텐츠를 붙이는 장치 제어 필드(업계)에서는 사실 오드로이드 보다는 라즈베리 파이를 이용한 프로젝트가 많습니다. 다른 것 보다 가격이...

https://www.board-db.org/compare/84,4,28/




ODROID에는 듀얼코어(Samsung Exynos5422 Cortex-A15 2 Ghz and Cortex-A7 Octa core CPU) 칩이 들어 있습니다. 브로드컴 제품이던 삼성 제품이던 둘 다 ARM Architecture를 기반으로 하기 때문에 S/W도 비슷하게 갑니다. ODROID를 제작한 HardKernel에서도 wiringPI를 이용합니다. 이전에는 잘 정리된 위키 페이지가 없어서 많은 삽질(실습)을 했어야 했습니다. 지금은 아래 사이트 보고 그대로 따라 하면 만들기 쉽도록 되어 있습니다.

https://wiki.odroid.com/odroid-xu4/application_note/gpio/wiringpi




1편에서 리눅스를 설치했으니 대부분의 장치는 리눅스에서 제어하도록 매핑되어 있습니다. 펌웨어 단에서 장치에서는 MMIO(Memory Mapped I/O), IMIO(IO Mapped I/O)가 주류지만 리눅스 시스템에서는 파일/디렉토리로 모든 것을 가능하게 해 놓았죠. 이미 디바이스 드라이버란 이름이 있지만 MMIO, IMIO, PMIO(Port mapped I/O) 처럼 FMIO(File Mapped I/O)라고 하고 싶습니다.




PIN 번호 참조

https://wiki.odroid.com/odroid-xu4/hardware/expansion_connectors
odroid-xu4:hardware:expansion_connectors [ODROID Wiki]



wiki.odroid.com

0. 결과

https://youtu.be/Ifztgr99bRs


ODROID CON10 header의 핀번호는 인터넷에서 구할 수 있는 표번호와 다르다. 전에 한 학생이 다시 그려서 줬는데 구글 드라이브를 쓰기 전이라 잃어버렸다. 진작에 포스팅 할껄 하는 아쉬움이 남는다 그런데 넌(그 학생) 지식공유를 위해 블로그 하래두 안하니... 마음 편하게 확장 보드를 구매하자.



1. FMIO in shell

odroid@odroid-server:~$ echo 29 > /sys/class/gpio/export

odroid@odroid-server:~$ echo out > /sys/class/gpio/gpio29/direction

odroid@odroid-server:~$ echo 1 > /sys/class/gpio/gpio29/value



2. FMIO with source

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h> 




int main(int argc, char** argv)

{

FILE *fp;

char setValue[4];

int toggle = 0; 

if((fp = fopen(“/sys/class/gpio/export”, “ab”)) == NULL) {

printf(“Cannot open export file.\n”);

return -1;

}

rewind(fp);

strcpy(setValue, “1”);

fwrite(&setValue, sizeof(char), 1, fp);

fclose(fp);

sleep(1);

if((fp == fopen(“/sys/class/gpio/gpio25/value”, “rb+”)) == NULL) {

printf(“Cannot open value file. \n”);

return -1;



rewind(fp);

strcpy(setValue, “0”);

fwrite(&setValue, sizeof(char), 1, fp);

fclose(fp);

return 0;

}



3. FMIO using WiringPI

#include <stdio.h>

#include <wiringPi.h>

#include <sys/time.h>

int main(int argc, char **argv) {

unsigned int delay_cnt=0;

wiringPiSetup();

pinMode(06,OUTPUT);

digitalWrite(06,HIGH);

return 0;

}

https://wiki.odroid.com/odroid-xu4/application_note/gpio/wiringpi
odroid-xu4:application_note:gpio:wiringpi [ODROID Wiki]



wiki.odroid.com





ODROID에는 PWM이 없습니다. 각도 제어 서보모터의 경우 delay를 이용하여 S/W 파형을 만들어도 떨림없이 제어가 잘 되네요. 물론, 100%(모든 서보모터)는 아니고맥심칩처럼 컨버터를 넣은 보조 회로가 필요합니다.


뭐든 추상화하면 상위단 코드는 간결해집니다. 또, 알고리즘이나 다지인 패턴같이 좀 더 낫다고 생각되는 과제를 고민할 수 있게 됩니다. 임베디드 월드와 비교해 볼 때, 데스크톱에서 하는 응용 프로그램이야 정말 생각한 대로 작동한다고 할 수 있습니다. 응용프로그래머는 그렇게 추상화시킨 API를 사용할 때 정말 수많은 엔지니어가 많은 고생을 했었다는 사실을 잊지 말았으면 합니다.

'블로그 항해 일지 > Embedded' 카테고리의 다른 글

x86용 부트코드  (0) 2019.01.08
ODROID GPS 모듈 입양 完  (2) 2019.01.08
GPIO 제어 via 블루투스 on 삼성폰  (0) 2019.01.08
블루투스 연결  (0) 2019.01.08
Ubuntu Image download  (0) 2019.01.08


라즈베리 파이와 경쟁할 국내 기술의 뛰어난 제품, 오드로이드!

기본적으로 밑에 단 작업이 다 되어 있는 운영체제, 우분투 16.04를 받아보자.

1. 이미지 받기 전 eMMC 카드 포멧

다음 명령어를 이용하여 포멧해야 한다. on Windows®

C:\> Diskpart
DISKPART> list disk
DISKPART> select disk (id)
DISKPART> online disk (if the disk is not online)
DISKPART> attributes disk clear readonly
DISKPART> clean
DISKPART> convert mbr (or gpt)
DISKPART> create partition primary
DISKPART> select part 1
DISKPART> active (if this is the boot partition)
DISKPART> format fs=ntfs label=(name) quick
DISKPART> assign letter (letter)
DISKPART> list volume


2. Win32 Disk Imager for ODROID 이용, 다운로드

마그넷 링크 원본은 이 글 가장 아래에...

마그넷 다운로드를 위한 비트 토렌트 다운로드

Disk Image 마그넷

Ubuntu 16.04 Image 마그넷


3. 부팅 확인

* 주의 *

1. USB 허브 비추

2. 앞쪽 USB 포트 비추(메인보드에 직접 꽂으세요-전력문제 배제-)


Disk Image


magnet:?xt=urn:btih:22394D44F7E369D838CC63470387F1415C95A031&dn=win32diskimager2-binary.zip&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce


Ubuntu mate 16.04 


magnet:?xt=urn:btih:2F97C2B4265EB528A72FCE8BD5FF11886FF63BAD&dn=ubuntu-16.04-mate-odroid-xu4-20170731.img&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce




'블로그 항해 일지 > Embedded' 카테고리의 다른 글

x86용 부트코드  (0) 2019.01.08
ODROID GPS 모듈 입양 完  (2) 2019.01.08
GPIO 제어 via 블루투스 on 삼성폰  (0) 2019.01.08
블루투스 연결  (0) 2019.01.08
GPIO 컨트롤  (0) 2019.01.08



저명인의 방송을 보고 코어를 제대로 파악하지 못하고 무작정 따라 하기 때문.

즉, 위닉스 뽀송 광고 때문.


위닉스 뽀송 광고를 바로 링크하면 듣기 많이 거북할 수도 있어 다른 광고도 함께 있는 링크를 단다.


https://www.youtube.com/watch?v=9LJTgqRt_k4

김수미가 욕을 하던 시점은 7LI ^^LI 77l처럼 직접적인 욕을 하는 것보다 견공 자제분처럼 간접적으로 욕하는, 나라 팔아먹은 이완용 같은 사람들이 판치던 시점이었다.


https://www.youtube.com/watch?v=gtTdKa8ucmA


3분 40초에 최경영 기자가 욕을 한다.


그렇다. 


내가 대학생 때는 복도에서 담배를 피우는 학생도 많았다. 버스 타면 할아버지들이 창문 열고 담배피던 분도 많았다. 또, 기업에서 안하무인으로 쌍욕하는 상사가 많았다. 김수미가 욕을 하면 욕 때문에 힘들어 하는 사람들을 위해 욕을 일상어와 같이 평준화시키려나 보다 한다. 김수미가 걸어왔던 길이 있기 때문이다. 최경영 기자가 욕을 하면 뭔가 이유가 있겠지 한다. 그가 걸어왔던 길이 있기 때문이다.


김수미도 여전히 그 길을 걷고 있고, 최경영 기자는 뉴스타파 편집장을 거쳐 다시 KBS로 복귀할 정도로 바른 길을 걸었다. 한 개인의 힘이 조직의 방향을 결정할 정도가 되었다는 것이다.

개인 방송은 그런 것을 보지는 않는다. 욕이 많은 이유는 단순하다.

회사에서 밀어주기 때문이다. 왜 김수미, 최경영(너무 저명한 사람은 존칭을 생략한다)

욕을 해도 되고 우린 욕하면 안 되냐고 말할 수도 있다.


아래 내 글을 더 보지 않고 이것에 대해 생각하면 아마 한 달이 지나도 논리를 못 찾을 것이다. 내 글을 구독하는 구독자를 제외하고는 생각의 시간을 투자하지도 않을 것이다. 




-

-

-

-

-

-

-

-

-

-

-

-

-

-




개인 방송에서 욕하면 정산한 돈 지급이 안된다고 했을 때 최경영은 확실히 걸러진다. 돈과 관계없이 정의로운 사람이기 때문이다. 그러면 김수미는?

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-




https://www.youtube.com/watch?v=sYSAPSIXhdc


살아온 인생을 보면 된다. 동네 양아치 짓 하다가 개인 방송을 하는 게 아니라 시대상을 반영하는 여러 작품의 아이콘으로 출연했었기 때문이다. 또 한 전쟁과 가난 속에 어려운 시대를 살아갈 수밖에 없었던 우리네 할머니들의 억척스러움도 그 안에 있었기 때문에 용납될 수 있었다.


욕 못하는 사람 없다.


오래 전 방송국에 일 하는 분께 들었다. 아나운서나 방송국 관계자들이 뒤에서 욕하면 훨씬 잘한다는 것.


개인 방송하는 사람들이여. 나중에 니 아들이나 딸이 니 면상 보고 쌍욕 하기 전에 적당히 해라.


+ Recent posts