반응형

 

 

 

 

 

영어 리딩 무작정 따라하기 - 뼈대가 보이는 가지치기 독해법

길벗이지지톡 (2010년 1월)

 

집에 사 둔 책들 정리.

오래 전에 사두고 읽다가 그만 둔 것을 하나씩 다 읽고 정리하고 있다.

 

 

쭉~ 다 읽어 보니 괜찮다.

모르고 있던 상식도 알게 되고~ ^^

 

안에 있는 작은 별책 부록은 책의 내용의 본문만 다시 요약한 거라서, 한 번 더 읽는 기분이다.

 

영어는 꾸준히 공부해야지. 

읽다보면 이해안가는 것이 많다. 기초가 약해서...

 

2010년에 출간되고 산 책이라 지금도 있을까 싶어서 찾아 보니 아직도 있네... ^^

그래도 옛날 책이니... 어학 책은 항상 최신으로 보는게 좋을 것 같다.

집에 있는 책 보면서 다 정리한 후에 새 책을 살 듯~ ㅋㅋㅋ

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

환경) Visual Studio 2019

Visual Studio C# 도구상자 표시

 

Visual Studio C#을 사용하다가 보면 갑자기 도구상자가 안 보일 때가 있다.

실수로 닫아 버렸는지... ㅡ.ㅡ;

이럴 때 마다 어떻게 했었는지 매번 메뉴를 찾는다.

 

보기 - 도구상자 (Ctrl + Alt + X)

 

이 메뉴를 선택하면 된다.

 

 

아래 왼쪽 이미지에서 사라져 버린 도구상자가 오른쪽 이미지 처럼 나왔다.

 

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

GNU GPL 에서 GNU 는 무슨 의미일까?

 

 

위키에 아래와 같이 설명되어 있다.

 

GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어 문장 "GNU's Not UNIX"의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀약자 이다. 스톨만은 GNU를 그누로 읽자고 제안한다.

 

참고) 재귀약자의 다른 예

  검색 엔진 Bing 도 이런 경우다. "Bing Is Not Google"

 

ko.wikipedia.org/wiki/GNU

 

GNU

위키백과, 우리 모두의 백과사전. GNU개발자GNU 프로젝트 (커뮤니티 형성)프로그래밍 언어C, 어셈블리어OS 계열유닉스 계열소스 형태자유 소프트웨어마케팅 대상개인용 컴퓨터, 모바일 장치, 내장

ko.wikipedia.org

 

GNU 공식 사이트에서도 마지막에 

More about GNU 부분에 동일한 내용이 있다.

 

www.gnu.org/

 

The GNU Operating System and the Free Software Movement

GNU is the only operating system developed specifically to give its users freedom. What is GNU, and what freedom is at stake? Fight to Repair: A video from the FSF What is GNU? GNU is an operating system that is free software—that is, it respects users'

www.gnu.org

 

여기서 G의 의미가 궁금해 지는데... kldp.org/node/72237 글의 뎃글에 아래 내용이 있다. 

GNU는 GNU is Not Unix의 뜻도 있지만, 아프리카 영양("누"라고 함)을 뜻하는 영 단어이기도 합니다.

 

그래서 GNU 를 대표하는 이미지가 동물인 것인가....

 

위에 부분까지는 GNU 단어의 의미였다.

 

실제 GNU 란? 아래 내용을 의미한다.

GNU는 운영 체제의 하나이자 컴퓨터 소프트웨어의 모음집이다.

아래는 GNU 공식 사이트의 글이다.

 

What is GNU?

GNU is an operating system that is free software—that is, it respects users' freedom. The GNU operating system consists of GNU packages (programs specifically released by the GNU Project) as well as free software released by third parties. The development of GNU made it possible to use a computer without software that would trample your freedom.

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

Notepad++를 설치하면사 라이선스가 

GNU General Public License 라고해서 이것이 무엇인지 알아보았다.

GNU GPL 이라고도 한다.

 

 

이 라이선스에 대해 중요한 항목만 정리.

 

소프트웨어에 관련된 다섯 가지 의무.

GNU 일반 공중 사용 허가서는 누구에게나 다음의 다섯 가지의 의무를 저작권의 한 부분으로서 강제한다.

  1. 컴퓨터 프로그램을 어떠한 목적으로든지 사용할 수 있다. 다만 법으로 제한하는 행위는 할 수 없다.
  2. 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스코드를 무료로 배포해야 한다.
  3. 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
  4. 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 한다.
  5. 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스를 취해야 한다. 즉 GPL 라이선스를 적용해야 한다.

 

어떠한 목적으로든 무료로 사용할 수 있다는 내용이다.

단, GNU GPL 로 배포된 소스코드로 프로그램을 변경하고 사용할 경우 반드시 변경된 소스도 공개 배포해야 한다.

즉, 상업적으로 프로그램을 만들 경우에도 소스를 공개해야 한다. ^^

 

 

아래 링크를 통해 자세한 내용을 알 수 있다.

 

 

GNU 일반 공중 사용 허가서

위키백과, 우리 모두의 백과사전. GPL은 여기로 연결됩니다. 다른 뜻에 대해서는 GPL (동음이의) 문서를 참조하십시오. GNU 일반 공중 사용 허가서(GNU General Public License, GNU GPL 또는 GPL)는 자유 소프

ko.wikipedia.org

 

 

GNU General Public License v2.0 - GNU Project - Free Software Foundation

GNU General Public License, version 2 Table of Contents GNU GENERAL PUBLIC LICENSE Version

www.gnu.org

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

무료 텍스트 파일 편집기인 노트패드 플러스 (Notepad++) 설치.

GNU General Public License 다.

 

아래의 링크를 통해 다운로드 하고 설치한다.

 

https://notepad-plus-plus.org/downloads/

 

Downloads | Notepad++

 

notepad-plus-plus.org

 

Downloads 페이지(아래 왼쪽 이미지)의 항목 중 가장 위에 있는 최신 배포판을 선택한다.

(ex. nOTEPAD++ 7.9.4 release)

 

용량이 적어서 파일도 첨부하였다.

 

npp.7.9.4.Installer.x64.exe
4.04MB

 

Download 64-bit x64의 항목(아래 오른쪽이미지) 중 Installer를 선택하여 다운로드 받는다.

 

 

 

다운로드 받은 설치파일을 실행하여 설치한다.

 

 

아래의 설치 과정을 진행하여 설치한다. 

별도의 설정 없이 그냥 "다음", "동의함", "다음", "다음", "설치", "마침"

 

 

 

설치가 완료되고 Notepad++를 실행하였다.

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

STM32F103을 System Workbench compiler에서 코딩을 하다가 변수 타입이 궁금해서 확인해 보았다.

int8_t, int16_t, int32_t 등등...

변수명만 보아도 어떤 내용인지 잘 알겠는데 이것이 어디에 정의되어 있는 것일까?

 

아래의 위키에 이 내용이 아주 잘 설명되어 있다.

 

en.wikipedia.org/wiki/C_data_types

 

C data types

In the C programming language, data types constitute the semantics and characteristics of storage of data elements. They are expressed in the language syntax in form of declarations for memory locations or variables. Data types also determine the types of

en.wikipedia.org

 

The C99 standard includes definitions of several new integer types to enhance the portability of programs.

 

C99 표준에 이 새로운 타입의 정의가 포함되어 있다.

 

 All new types are defined in <inttypes.h> header (cinttypes header in C++) and also are available at <stdint.h> header (cstdint header in C++). The types can be grouped into the following categories:

 

inttypes.h 와 stdint.h 에 정의되어 있다고 하니 찾아봐도 되겠다.

 

intn_t : 정확한 너비의 integer type으로 n 비트와 같은 수의 정확한 너비를 보장한다.

나머지는 아래 내용 참고.

 

포인터형도 정의되어 있다. 

각 데이터 타입에 대해 MIN, MAX 값도 정의되어 있으니 참고하자. 

 

  • Exact-width integer types that are guaranteed to have the same number n of bits across all implementations. Included only if it is available in the implementation.
  • Least-width integer types that are guaranteed to be the smallest type available in the implementation, that has at least specified number n of bits. Guaranteed to be specified for at least N=8,16,32,64.
  • Fastest integer types that are guaranteed to be the fastest integer type available in the implementation, that has at least specified number n of bits. Guaranteed to be specified for at least N=8,16,32,64.
  • Pointer integer types that are guaranteed to be able to hold a pointer. Included only if it is available in the implementation.
  • Maximum-width integer types that are guaranteed to be the largest integer type in the implementation.

The following table summarizes the types and the interface to acquire the implementation details

(n refers to the number of bits : n이 비트 수 이다.):

 

 

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

 

Serial EEPROM CAT24C32를 I2C interface로 STM32F103를 이용하여 제어.

Compiler는 System WorkbenchCMSIS library를 사용.

 

Byte Write를 우선 구현. Sequence는 아래와 같다.

 

 

 

I2C 설정 부터 한다.

 

아래의 순서로 구현.

1. IO 설정.

2. I2C 초기화.

3. Serial EEPROM Byte write sequence 구현. 

 

아래의 코드 참고

1. IO 설정.

1
2
3
4
5
6
7
8
9
10
11
GPIO_InitTypeDef GPIO_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 
// PORTB
// Alternate Output Push Pull
GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_AF_OD;
GPIO_InitStructure.GPIO_Pin    = PIN_I2C_SCL | PIN_I2C_SDA;
GPIO_Init(GPIOB, &GPIO_InitStructure);
 
cs

 

2. I2C 초기화.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void hal_i2c_init() {
    I2C_DeInit(I2C2);
 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
 
    I2C_InitTypeDef i2c_initStruct;
    I2C_StructInit(&i2c_initStruct);
 
    i2c_initStruct.I2C_Mode = I2C_Mode_I2C;
    i2c_initStruct.I2C_DutyCycle = I2C_DUTYCYCLE;
    i2c_initStruct.I2C_ClockSpeed = I2C_SPEED;
 
    I2C_Init(I2C2, &i2c_initStruct);
 
    I2C_Cmd(I2C2, ENABLE);
}
 
cs

 

3. Serial EEPROM Byte write sequence 구현. 

Device address는 0xA0로 하였다. A2, A2, A0에 모두 0 연결

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
int hal_i2c_writeByte(uint8_t slaveAddr, uint16_t regAddr, uint8_t byte) {
 
    I2C_AcknowledgeConfig(I2C2, ENABLE);
 
    I2C_GenerateSTART(I2C2, ENABLE);
 
    int timeout = I2C_TIMEOUT;
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)) {
        if((timeout--== 0) {
            // Error
            return -1;
        }
        delay_us(1);
    }
 
    I2C_Send7bitAddress(I2C2, slaveAddr, I2C_Direction_Transmitter);
 
    timeout = I2C_TIMEOUT;
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) {
        if((timeout--== 0) {
            // Error
            return -2;
        }
        delay_us(1);
    }
 
    // Register Address 15-8
    I2C_SendData(I2C2, (uint8_t)((regAddr >> 8& 0x00FF));
 
    timeout = I2C_TIMEOUT;
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) {
        if((timeout--== 0) {
            // Error 
            return -3;
        }
        delay_us(1);
    }
 
    // Register Address 7-0
    I2C_SendData(I2C2, (uint8_t)(regAddr & 0x00FF));
 
    timeout = I2C_TIMEOUT;
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) {
        if((timeout--== 0) {
            // Error
            return -4;
        }
        delay_us(1);
    }
 
    I2C_SendData(I2C2, byte);
 
    timeout = I2C_TIMEOUT;
    while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) {
        if((timeout--== 0) {
            // Error
            return -5;
        }
        delay_us(1);
    }
 
    I2C_GenerateSTOP(I2C2, ENABLE);
 
    timeout = I2C_TIMEOUT;
    while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)) {
        if((timeout--== 0) {
            // Error
            return -6;
        }
        delay_us(1);
    }
 
    delay_us(100);
 
    return 0;
}
 
 
cs

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

크롬 북마크가 동기화되어서 사용하기는 편리한데 북마크가 많아지니 매번 찾아가기도 어렵다.

북마크 바에 등록하려해도 이미 등록된 것이 많다.

그래서 크롬 북마크를 바로가기로 만드는 방법을 찾았다. ^^

 

1. 바로가기를 만들려는 사이트에 접속한다.

2. 우측 위의 점세게 (메뉴) 를 선택 >> 도구 더보기 >> 바로가기 만들기... 선택.

 

 

아래와 같은 창이 뜨면 만들기 선택.

아래 우측과 같이 바탕화면에 바로가기가 생성되었다.

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts