DOCYPE이란

 

DOCTYPE은 document type의 약어입니다. 

HTML은 한 개의 종류가 아니라 여러 종류가 있습니다. HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 등이 있습니다. HTML 종류에 따라 같은 코드의 HTML 파일을 실행했을 때 다른 결과가 나타납니다.

이러한 DOCTYPE을 선언했을 경우를 Standards Mode(표준모드) 하고, 선언 하지 않은 경우를 quirks Mode(비표준 모드)라고 합니다.

표준모드는 HTML와 CSS 표준에 따라 렌더링이 되며, 비표준모드는 브라우저가 오래된 브라우저의 렌더링을 모방하도록 되어 있습니다.

 

표준 모드와 비표준 모드 차이를 보면,

  1. IE 박스모델 버그
    • 표준모드 : width 계산 시 padding, margin, border를 포함.
    • 비표준모드 : width 계산시 padding, margin, border를 미포함.
  2. Table 안의 font-size 상속
    • 표준모드 : table안에서의 텍스트는 기본 font-size를 상속함
    • 비표준모드 : table안에서의 텍스트는 기본 font-size를 상속 안 함.

표준모드 소스 코드

<!DOCTYPE html>
<html>
  <head>
    <title>Standards mode</title>
    <style type="text/css">
      body {
        font-size: 12px;
      }
      p {
        font-size: 100%;
      }
      div {
        margin: 20px;
        width: 200px;
        padding: 30px;
        border: 5px solid darkcyan;
      }
      table {
        border: 2px solid darkmagenta;
      }
    </style>
  </head>

  <body>
    <h1>Standards mode(표준 모드)</h1>
    <div>
      width:200px, margin:20px, padding:30px, border:5px.
    </div>
    <p>p 태그 안에 있는 글</p>
    <table>
      <tr>
        <td>table 안에 있는 글</td>
      </tr>
    </table>
  </body>
</html>

 

비표준모드 소스코드

<html>
  <head>
    <title>Quirks mode</title>
    <style type="text/css">
      body {
        font-size: 12px;
      }
      p {
        font-size: 100%;
      }
      div {
        margin: 20px;
        width: 200px;
        padding: 30px;
        border: 5px solid darkcyan;
      }
      table {
        border: 2px solid darkmagenta;
      }
    </style>
  </head>

  <body>
    <h1>Quirks mode(비표준 모드)</h1>
    <div>
      width:200px, margin:20px, padding:30px, border:5px.
    </div>
    <p>p 태그 안에 있는 글</p>
    <table>
      <tr>
        <td>table 안에 있는 글</td>
      </tr>
    </table>
  </body>
</html>

 

표준 모드와 비표준 모드의 차이 결과

많이 사용하는 HTML5의 경우에는 <!DOCTYPE html>이라고 선언을 하면 됩니다.

그 외의 DOCTYPE버전은http://www.w3.org/QA/2002/04/valid-dtd-list.html에서 확인이 가능합니다.

'HTML' 카테고리의 다른 글

DOCTYPE이란  (0) 2019.08.10
PlatformIO IDE 소개

Arduino를 이용한 개발 시 처음에 대부분 Arduino 공식 홈페이지에 있는 Arduino IDE를 사용할 것입니다. 저 같은 경우에는 간단한 프로그램 작성에는 큰 무리가 없었으나 코드가 길어져 파일 분할을 하였을 때, 가독성이 떨어졌습니다. 또한 타 IDE와 비교했을 때 많이 불편함을 느꼈습니다. 그래서 Arduino 개발 가능한 IDE를 찾아보던 중 PlatformIO를 알게 되어 사용하게 되었습니다.

 

Arduino IDE에서 작성한 코드

다음은 PlatformIO IDE에서 제공하는 여러 가지 기능 중 제 개인적으로 생각하는 장점입니다.

  • 500여 개가 넘는 임베디드 보드 호환성
  • 라이브러리 관리
  • Unit Test
  • Debug
  • C/C++ Intelligent Code Completion
  • C/C++ Smart Code Linter
  • platform.ini파일을 이용한 개별 환경 설정

 

PlatformIO IDE 설치

PlatformIO IDE는 VSCode, Atom, CLion, CodeBlocks, Eclipse, Emacs, NetBeans, Qt, Creator, Sublime Text, VIM, Visual Studio에 extension/plugin 형태로 설치가 가능합니다. 대부분 Atom 또 VSCode에 설치하는데 저는 VSCode를 주로 사용하기에 VScode에 설치하였습니다.

 

먼저 VSCode를 실행합니다. 만약 VSCode를 설치 하지 않으셨다면 이 링크로 접속해서 설치하면 됩니다.

VSCode를 실행하면 왼쪽 사이드바에 확장 아이콘을 클릭합니다. 검색창에 PlatfromIO IDE를 검색하여 설치를 합니다.

 

PlatformIO IDE 설치 방법

설치를 완료하면 확장아이콘 하단에 외계인얼굴 모양의 아이콘이 생깁니다. 이 아이콘이 PlatformIO IDE입니다.

홈메뉴에서는 새 프로젝트 만들기, Arduino IDE 프로젝트 가져오기, 기존 프로젝트 열기, 프로젝트 예제 열기가 가능합니다.

해당 보드와 프레임워크를 선택하여 새 프로젝트를 만들면 됩니다. platformio.in를 이용하면 하나의 프로젝트에 여러개 보드를 적용할 수 있습니다.

 

홈메뉴 - 새 프로젝트 만들기

 

라이브러리 메뉴에서는 라이브러리 관리를 할 수 있습니다. 해당 프로젝트에만 설치하거나 전역으로 설치가 가능합니다. 그리고 platformio.ini에서 보드별로 라이브러리를 관리할 수 있습니다.

 

라이브러리 메뉴 - 라이브러리 설치, 삭제, 업데이트가 가능함.

보드 메뉴는 PlatformIO가 지원하는 보드를 볼 수 있습니다. 보드별 Platfrom, Framework, Ram/Rom size, 인터넷 연결, Unit Test, Debug등을 확인 할수 있습니다. platformio.ini에서 보드 설정 시 해당 보드이름을 사용하면 됩니다.

 

보드 메뉴 - 보드별 세부 정보를 볼 수 있으며, 구매도 가능함.

플랫폼 메뉴에서 플랫폼을 관리하며, 버전별로 설치가 가능합니다. 

 

플랫폼 메뉴 - 플랫폼 버전별 관리 가능

디바이스 메뉴에서는 기기 연결 포트를 볼 수 있습니다. 이 포트들은 platformio.ini에서 upload, monitor port를 설정할 때 적용하시면 됩니다.

 

디바이스 메뉴 - 기기 연결 포트를 보여줌.

 

PlatformIO IDE를 설치를 하고 간략하게 알아 보았습니다. 다음 포스트에서는 PlatformIO 새 프로젝트를 만들어보고, platformio.ini 설정하는 법에 대해 알아 보겠습니다.

'IoT > Arduino' 카테고리의 다른 글

[PlatformIO] PlatformIO IDE 소개 및 설치  (0) 2019.08.08
Device Claim 

 

모든 Azure SphereTenant(테넌트)에 Device Claim을 해야 됩니다. Device Claim을 하게 되면 연결된 Azure Sphere는 해당 Tenant에 종속이 됩니다. Device Claim을 통해 한번 Tenant에 종속이 되면 변경이 되지 않습니다. 주의하세요! (저도 그렇게 하나를...)

Device Claim을 하기 위해서는 사전에 설치한 Azure Sphere Developer Command Prompt Preview를 실행해야합니다. 설치를 안 하셨다면 아래 글을 참고하셔서 개발환경을 구축하시면 됩니다.   [MT3620] Azure Sphere 개발환경 구축하기

Azure Sphere Developer Command Prompt
azsphere login

먼저 Azure 계정으로 로그인을 해야 합니다. 다음과 명령어를 입력을 하시면 됩니다.

그러면 다음과 같이 창이 뜨게 됩니다. 

 

그러면 Azure AD에 만든 새 계정을 입력하고 복사했던 임시 패스워드를 입력합니다. 임시 패스워드라 사용할 패스워드를 설정하시면 아래처럼 로그인이 성공적으로 될 것입니다. 경고 메시지가 나타나는 경우는 해당 Azure AD 사용자가 Azure Sphere Tenant를 가지고 있지 않다고 알려주는 경고입니다. 여기서 우리는 Tenant를 만들 것이기 때문에 넘어가면 됩니다.

Azure Sphere Developer Command Prompt
warn: No Azure Sphere tenants found under the selected AAD user. Use 'azsphere login' to change AAD user, or create a new Azure Sphere tenant using 'azsphere tenant create'.
Successfully logged in with the selected AAD User. This authentication will be used for subsequent commands.
Command completed successfully in 00:09:50.0119703.

로그인을 하였다면 이제 Tenant를 만들어야합니다. 그전에 Azure Sphere를 PC 또는 노트북에 연결을 해야 합니다. 연결을 하였으면 다음과 같이 명령어를 입력하시면 됩니다. Tenant 생성 명령어를 치면 로그인 팝업창이 나타납니다. 로그인하시면 됩니다. Tenant 생성 명령어 실행하면 관리 계정을 확인하기 위해 로그인 창이 생기는 것 같습니다. 

로그인 후, 저는 Tenant의 이름을 test로 만들었습니다. 참고로 Tenant는 한번 만들면 수정, 삭제가 불가능합니다. 이름도 변경이 안됩니다! 저처럼  멋도 모르고 test처럼 의미 없는 이름으로 Tenant를 만들어서 수정도 못하는 슬픈 상황이 안되게 잘 생각하시고 만드시길 바랍니다. 예로 들면 Microsoft Inc 또는 Microsoft 이렇게 대부분 회사 이름처럼 조직 명을 사용하는 것 같습니다. 공식문서에서도 권장하는 이름이 회사 또는 조직명입니다.

Azure Sphere Developer Command Prompt
azsphere tenant create --name <tenant 이름>
azsphere tenant create --name test

만약에 이미 하나의 Tenant가 존재하지만 또 다른 Tenant를 추가하고 싶으시다면 다음과 같이 입력하시면 됩니다. 단, 연결된 Azure Sphere 어떤 Tenant에도 종속되지 않은 상황에서만 가능합니다. 그렇지 않으면 추가되지 않습니다. 그리고 Azure 공식 문서에서는 하나 이상 Tenant를 만드는 것을 권장하지 않고 있습니다.

Azure Sphere Developer Command Prompt
azsphere tenant create --force --name <tenant 이름>
azsphere tenant create --force --name test

Tenant 목록을 확인하고 싶으시면 다음 명력어를 입력하시면 Tenant ID와 이름을 보여줍니다. 

Azure Sphere Developer Command Prompt
azsphere tenant list


ID                                   Name
--                                   ----
95176a5b-87b2-4a14-8207-3c23400c272e test
Command completed successfully in 00:00:02.1482342.

Tenant 명령어에 대해 자세히 알고 싶으시다면 이 링크를 클릭하시면 자세히 알수 있습니다.

이제 Tenant를 만들었으니 Device Claim을 할 차례입니다.

Azure Sphere Developer Command Prompt
azsphere device claim


Claiming device.
Claiming attached device ID '18BBC9C051321322B8733D1C03F40B07A41AFAF914BF82BCA8D0B482BA0FC8D67B56B004CB10EB6070370FDCF37707F81B2E68B0243A8EBED03F1271DB03B2FE' into tenant ID '95176a5b-87b2-4a14-8207-3c23400c272e'.
Successfully claimed device ID '18BBC9C051321322B8733D1C03F40B07A41AFAF914BF82BCA8D0B482BA0FC8D67B56B004CB10EB6070370FDCF37707F81B2E68B0243A8EBED03F1271DB03B2FE' into tenant ID '95176a5b-87b2-4a14-8207-3c23400c272e'.
Command completed successfully in 00:00:05.5459143.

Device Claim이 성공적으로 되었습니다. 이제 이 Azure Sphere는 해당 Tenant에 종속이 되었고 다른 어떠한 Tenant에 추가될 수 없습니다. 즉, 종속된 Azure Sphere를 다른 사람이 들고 가서 사용하려고 해도 종속된 Tenant에 접근 권한이 없다면 Azure Sphere을 사용하는데 제약이 생기게 됩니다. 

Azure AD 설정

 

먼저 Azure Portal에 접속을 합니다. 만약 Azure 계정이 없다면 이 링크에 접속해서 무료 가입을 하시면 됩니다. 무료가입 시 해외 결제 가능한 카드 입력을 요구합니다. 입력을 하시면 해외 결제가 됩니다. 사용 가능 카드인지 파악하는 절차이기 때문에 바로 취소되거나 며칠 후에 취소되기 때문에 걱정하지 않으셔도 됩니다.

Azure Active Directory(이하 Azure AD)에서 새로운 유저를 만들어고 그 유저 계정으로 Azure Sphere Developer Command Prompt에 접속 하여 Azure Sphere를 연결할 것입니다.

 

접속하시면, 위와 같은 화면이 나타날 것입니다. 여기서 좌측메뉴에 있는 Azure AD를 클릭합니다.

 

파란 박스에 친 글 처럼 0000.onmicrosoft.com 형식의 문구가 보일 것입니다. 저 같은 경우에는 flacks12gmail.onmicrosoft.com로 나타납니다. 이게 여러분의 기본 Azure AD의 도메인입니다. 만약에 다른 도메인을 사용하고 싶다면 Create a resource > Azure Activity Directory > Create에 들어가셔서 설정하시면 원하는 Azure AD의 이름과 도메인을 설정할 수 있습니다. 다만 0000.onmicrosoft.com의 형식은 유지합니다.

만약에 회사나 학교 등 조직에서 사용하시는 경우에는 해당 조직의 Azure AD에서 작업하셔야 합니다. 그 이유는 Azure Sphere는 하나의 Azure AD에만 종속되기 때문입니다. 즉, 다른 Azure AD에 추가로 연결이 불가능합니다. 그리고 2018년 11월 기준에서는 Azure AD에 종속된 Azure Sphere 삭제도 불가능하여 한번 연결 설정을 하면 그 Azure AD에 종속됩니다. 참고로 저도 회사에 연결해야 하는데 실수로 제 개인 AD에 연결해버렸습니다. (뜻밖의 득템)

Azure Sphere를 연결할 Azure AD 도메인을 복사하시거나 외워두시고, Users를 클릭합니다.

 

여기서 New User를 클릭합니다.

 

이름과 유저명을 입력하시면 됩니다.

유저명 경우에는 사용할 유저명@Azure AD 도메인명입니다. 저 같은 경우에는 이름을 test로 하고 유저명을 test@flacks12gmail.onmicrosoft.com로 만들었습니다.

패스워드는 Show Password 체크박스를 체크하셔서 패스워드를 볼수 있게 설정하고, 복사해두시면 됩니다. 

최초 비밀번호로 로그인시 비밀번호 재설정을 하기 때문에 걱정 안 하셔도 됩니다.

 

유저를 생성하시면 이렇게 생성된 유저가 나타납니다. 

다음 포스트에서는 이렇게 생성된 유저 계정으로 Azure Sphere Developer Command Prompt에 로그인해서 비밀번호를 재설정하고, 기기를 연결해보겠습니다. 

 

[MT3620] Azure Sphere 연결 - (2) Device Claim

Azure Sphere 개발환경 구축하기

 

Azure Sphere 개발 OS환경은 현재 Window 10 1주년 업데이트 이상만 지원하고 있습니다. 

IDE는 Visual Studio 2017 Enterprise, Professional, or Community(버전 15.7 이상)를 사용합니다. 이 링크로 접속하셔서 자신에게 맞는 버전을 설치하시면 됩니다. 

그리고 마지막으로 the Azure Sphere SDK Preview for Visual Studio를 설치해야합니다. 이 링크를 누르시면 다운받을수 있습니다.

아직 Preview라 Window만 지원하지만 향후 Mac, Linux 그리고 VS code도 지원할 것으로 보입니다. 

 

이 모든 것을 준비하시면, Visual Studio 2017를 실행시켜서  파일 > 새로 만들기 > 프로젝트 > Visual C ++ > 플랫폼 간 > Azure Sphere를 위의 사진처럼 찾을 수 있을 것입니다. 만약 영어 버전을 이용하고 있다면, Visual Studio 2017 > New > Project > Visual C++ > Cross Platform > Azure Sphere를 볼 수 있습니다.

 

그리고 Azure Sphere Developer Command Prompt Preview가 설치 되어있음을 확인할 수 있습니다.

Azure Sphere에서의 Azure Sphere Developer Command Prompt와 Visual Studio 사용법은 다음 포스트에 올리겠습니다.

 

1. Azure Sphere MT3620

 

Azure Sphere는 Microsoft에서 만든 리눅스기반의 산업용 IoT전용장치입니다. 그중 첫 출시작인 Azure Sphere MT3620는 2018년 4월에 출시가 되었습니다. MCU는 ARM 기반인 MediaTek의 MT3620을 사용하고 있습니다. 관련 Data Sheet는 구글에 MT3620을 검색하면 다운 받을수 있습니다. 본문의 하단에 첨부를 하였습니다. 상단의 그림이 Azure Sphere MT3620의 모습입니다. 현재 Seeedstudio에서 $84.90에 판매하고 있습니다.

Azure sphere를 사용할려면, Window 10 1주년 업데이트 이상의 PC,  Visual Studio 2017 Enterprise, Professional, Community(version 15.7 이상), the Azure Sphere SDK Preview for Visual Studio가 필요합니다.

설치와 사용법에 대해서는 구매후 다음 포스트에 올리겠습니다.

그리고 OS 및 보안 서비스 업데이트를 2031년 7월까지 지원하고, 인증서 기반 인증, 오류 보고 및 OEM 소프트웨어 업데이트는 2031년 7월이후까지 지속적인 지원을 해줍니다.

 

2. Azure Sphere MT3620 사양 및 기능

 

위의 그림은 seeedstudio에 있는 Azure Sphere MT3620의 사양입니다. 공식 Data Sheet에서  GPIO는 76개로 설명되어있습니다. 그렇다고 76개 전부를 사용할수 있는것은 아니며 다른 기능도 포함되어 있습니다. 

그것을 감안하더라도 많은 수의 GPIO를 가지고 있어 산업용 IoT장치의 역할을 제대로 수행할 수 있습니다. 다만 2018년 10월 기준, Preview단계로 SDK가 MT3620의 모든 기능을 지원해주지 않습니다. 

특히 ADC와 I2C는 아직 지원하지 않아 이를 사용할려면 seedstudio에서 판매하는 MT3620 Grove Shield board를 구매하셔서 이용하시면 됩니다. 

아래 그림은 Azure Sphere MT3620의 Pin Map입니다.

 

아래의 그림은 Block단위로 나타낸 Azure Sphere MT3620의 Block Diagram입니다.

 

3. 관련 문서 및 출처

MediaTek MT3620 Product Brief.pdf
2.15MB

+ Recent posts