일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영단어
- NCS수리자료해석
- 데이터베이스
- 토익문법노트
- 토익시험준비
- 영어문장
- sqld
- 영문법
- 자바스크립트
- dfs
- 자료해석
- TOEIC
- 토익단어
- TOEIC Vocabulary
- 문제해결능력
- 토익문법정리
- BFS
- 알고리즘
- TOEIC문법
- 공기업공부
- 토익 영단어
- 너비우선탐색
- 영단어암기
- BOJ
- 다이나믹프로그래밍
- 브루트포스
- 주어
- 파이썬
- 매일매일NCS
- 수리능력
- Today
- Total
목록분류 전체보기 (79)
하나씩 알아가기
GCC(GNU Compiler Collection)는 C 컴파일러입니다. C언어를 컴퓨터가 읽을 수 있도록 번역해야 하는데 리눅스에서는 Visual Studio C++과 같이 윈도우에서 쓰이는 프로그램이 사용 불가합니다. 그래서 리눅스용의 대표 C컴파일러가 GCC인 것입니다. C 파일을 컴파일 할 경우의 단계는 아래와 같습니다. 전처리 단계 : c 파일을 gcc 컴파일러로 컴파일 할 경우 전처리 단계가 진행되는데 결과로 i 파일을 만들어냅니다. 이 단계에서는 헤더파일을 포함하고 매크로 확장을 합니다. #include 와 같은 헤더파일 처리 #define HUNDRED = 100 과 같은 매크로 처리 gcc는 cpp라는 전처리기를 사용하는데 gcc -E hello.c -o hello.i 를 입력하면 전처리..
JTAG(Joint Test Action Group) : 디지털 회로에서 특정 노드의 디지털 입출력을 위해 직렬 통신 방식으로 출력 데이터를 전송하거나 입력 데이터를 수신하는 방식을 말합니다. 임베디드 시스템 개발 시에 사용하는 디버깅 장비가 JTAG의 대표적인 활용 예입니다. 임베디드 시스템을 개발하기 위해 통합한 회로로 사용되며, CPU의 기계어 코드를 실행하지 않고 MCU 내부의 플래시 메모리나 임베디드 장치에서 CPU의 외부 플래시 메모리에 코드를 쓰거나 읽을 수 있습니다. JTAG는 boundary-scan이라는 단어로 대체되기도 합니다. 같은 말입니다. JTAG의 구성 JTAG 인터페이스는 다음 다섯가지 핀으로 칩 안에 구성됩니다. TDI(Test Data In) : Test하기 위한 데이터 ..
MCU (MicroController Unit) : 마이크로컨트롤러 또는 마이크로 컨트롤러 유닛은 집적 회로 안에 프로세서와 메모리, 입출력 버스 등의 최소한의 컴퓨팅 요소를 내장한 초소형 컨트롤러. 보통 임베디드 애플리케이션용으로 설계된 연산 장치를 뜻한다. 비교적 단순하고 스마트폰 AP보다도 작은 컴퓨팅 장치라고 생각하면 편한데, 모든 전자기기에 하나씩은 거의 필수적으로 들어가니 칩셋 개수로는 PC의 100배는 족히 넘는 시장이다. MCU는 단일 또는 다중 CPU와 프로그래밍 가능한 타이머, PWM 모듈, 많은 수의 I/O, 각종 통신 장치들(SPI, UART, CAN, LIN, I2C)과 프로그램과 데이터를 저장하기 위한 메모리(SRAM, PROM, EPROM, EEPROM, 플래시 메모리)를 가지..
그동안 웹 프론트엔드를 지망했지만 전혀 다른 쪽의 일을 하게 되었다. 돈을 벌어야 하니 어쩔 수 없었다. 임베디드 프로그래밍은 하드웨어에 관한 지식을 많이 가지고 있어야 한다... 그래서 사실 많이 막막하다. 알아야 하는 지식은 다음과 같다. C언어(메모리 참조 부분), 컴퓨터 아키텍처(ARM 제품이 많이 쓰이므로 RISC), 전자회로(아날로그 회로), 디지털 논리회로, 리눅스, 통신 프로토콜, 마이컴 프로그램(펌웨어) 등등... 많다 그래도 당분간은 회사 일이 바쁠 것 같지는 않지만 웹 프로그래밍만 해왔던 나는 주말도 헌납하여 공부해도 버거운 양이다. 일단 박사님이 주신 평가 보드는 STM32F103RC 인데 손 마디를 제외한 손바닥 만한 크기이고 JTAG라는 연결잭을 통하여 PC로 부터 보드에 전송한..
가장 첫번째 예시를 보면 1을 네 장 사서 4가 되는 것 보다 두장 짜리를 두 번 사서 4를 만드는 것이 4 < 5 * 2 로 금액이 더 큰 것을 알 수 있습니다. 작은 문제로 나눠서 생각하는 것이 중요합니다. 예를 들어 세번째 카드를 구매하면 N개 중 3이 소모되는 것 입니다. 그러면 나머지 N-3개에 대한 dp를 출력하면 됩니다. dp를 갱신시켜나가는데 현재카드와 [N-현재카드의 번호]의 dp값을 비교해서 더 큰 것으로 갱신시키면 됩니다. n = int(input()) card = list(map(int, input().split())) card.insert(0, 0) dp = [0 for _ in range(n+1)] for i in range(1, n+1): for j in range(1, i+1..
토마토가 존재하는 곳으로부터 상하좌우로 하루에 한 칸씩 익어나가는데 며칠이 걸리는 것인지 구하는 문제입니다. 기본적으로 지난번에 풀어본 "미로탐색(BOJ_2178)" 문제와 비슷합니다. 하지만 추가로 생각해야 할 문제가 있었는데 여러 곳에서 토마토가 익어 나갈 수 있다는 점(미로 탐색 문제와 다르게 한 시작점에서 탐색을 해나가지 않는다)입니다. 그래서 토마토 밭에서 1인 곳을 찾아서 큐에다 다 넣어주고 너비탐색을 한 후(미로탐색과 동일하게 1씩 증가시킵니다) 너비탐색이 끝났는데 0인 경우는 -1을 출력하고 얼마나 걸리는 지 구할 때는 단순히 토마토 밭에서 최댓값을 구하면 됩니다. if days < tomatoes[i][j]: days = tomatoes[i][j] 파이썬 삼항 연산자(Ternary ope..
CDN : 데이터를 분산된 서버에서 받아오는 것 CDN을 가장 처음 접한 것은 jQuery를 사용할 때였던것 같습니다(부트스트랩이었던가..). 태그만 추가해 주면 jQuery를 내 컴퓨터에 직접 설치하지 않아도 사용할 수 있었는데 어떻게 이것이 가능하였는 지 개념부터 장단점까지 알아보겠습니다. CDN은 컨텐츠를 전달하는 네트워크를 구성하는 것을 말합니다. 보통 웹사이트를 로딩할 때는 웹 서버에 HTTP 요청을 하여 리소스를 가져오지만 웹 서버가 아니라 현재 사용자가 접속한 위치에서 가장 가까운 서버에 리소스를 캐싱해놓고 보다 빠르게 가져오는 기법을 말합니다. 즉, CDN의 목적은 웹페이지에 대한 요청이 이동해야 하는 물리적 거리를 줄여 요청 제출 시간과 장치에 완전히 로딩되는 웹페이지 간의 지연 시간을 ..
CI(Continuous Integration, 지속적 통합) CI는 빌드와 테스트를 자동화해서 공유 저장소에 병합시키는 프로세스를 뜻합니다. git과 같은 버전관리 시스템을 사용할 때 여러명의 개발자가 하나의 공유 저장소를 사용하는 경우가 많습니다. 이렇게 되면 새로운 코드의 변경 사항이 저장소에 통합되지 않을 경우 서로 충돌할 수 있습니다. 따라서 빌드/테스트 자동화로부터 코드의 일관성(Consistency)을 제공하기 때문에 지속적으로 통합한다는 용어를 사용하는 것입니다. CI 도구로는 Jenkins, TravisCI 등이 있습니다. 예시) 개발자는 자신의 로컬에서 코드를 수정하고 github에 push한다 CI 도구에서 변경된 코드에 대한 빌드와 테스트를 수행하고 결과를 피드백 해준다 CD(Con..
틀린 부분이 있을 경우, 지적해 주시면 감사하겠습니다. 태그를 사용하여 사용자로부터 정보를 입력받아 서버에 요청할 수 있습니다. HTML의 폼 엘리먼트는 그 자체가 내부 상태를 가집니다. 리액트에서는 이를 그대로 사용하기 보다 JavaScript 함수로 폼의 제출을 처리하고 사용자가 폼에 입력한 데이터에 접근하도록 합니다. Name: HTML 폼을 이용하려면 태그의 name이라는 속성에 담아야 제출할 수 있습니다. 하지만 이렇게 리액트 앱을 구현하는 경우 HTML 폼을 이용하는 경우는 많지 않다고 생각됩니다(왜냐하면 리액트는 CSR방식의 렌더링을 지향하기 때문에 하단 포스팅 참고). clearwater92.tistory.com/30 서버사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR) 틀린 부분..
틀린 부분이 있을 경우, 지적해 주시면 감사하겠습니다. SSR과 CSR을 비교하여 정리해 보겠습니다. SSR(Server-Side Rendering) 전통적인 웹 어플리케이션 방식으로, 브라우저가 서버에 요청을 하고 서버는 제공할 HTML을 생성합니다. 브라우저는 이 HTML을 받아와서 렌더링하게 됩니다. 웹서버에 요청할 때 마다 Browser 새로고침이 일어나고 서버에 새로운 페이지에 대한 요청을 하는 방식입니다. 장점 초기 로딩 속도가 빠르기 때문에(한 번에 다 읽어오지 않음) 사용자가 컨텐츠를 빨리 볼 수 있다 모든 검색엔진에 대한 SEO(검색엔진 최적화)가 가능하다 단점 매번 페이지를 요청할 때마다 새로고침이 되기 때문에 사용자 UX가 다소 떨어진다 서버에 매번 요청을 하기 때문에 트래픽, 서버 ..