* 컴퓨터의 자료 표현 방식 - 내부적 표현 (수치) > 정수 표현 (고정소수점): 10진 방식 (Unpack/Pack), 2진 방식 (절대치, 1의 보수, 2의 보수) > 소수 표현 (부동소수점) - 외부적 표현 (문자): BCD 코드, ASCII 코드, EBCDIC 코드 * 고정소수점 표현 방식 - 10진 연산: Pack 방식은 연산에 사용하고 Unpack 방식은 입출력에 사용함 - 2진 연산: 10진수 전체를 2진수로 바꿔서 저장 > 그냥 쓰기: 부호 비트만 1로 바꿔주면 음수를 뜻함 > 1의 보수: 음수인 경우 숫자를 다 뒤집음. 음수도 덧셈만으로 처리할 수 있게 된다 > 2의 보수: 음수인 경우 숫자를 다 뒤집고 거기에 +1. 1의 보수보다 표현가능한 수의 개수가 1개 더 많다 * 부동소수점 표..
* 부울 대수 X와 Y의 수치가 아닌 논리적 상관관계를 다루는 것 * 논리 게이트의 종류 - AND: 곱하기로 표현 (A · B 또는 AB) - OR: 더하기로 표현 (A+B) - NOT: 위에 바 (bar) 위의 3가지가 가장 기본적인 게이트이며 이 3가지를 조합해서 나머지도 만들 수 있다. - XOR: 동그라미 안에 더하기 들어가 있는 거... 두 데이터를 비교할 때 쓸 수 있다. X와 Y가 달라야 결과가 1 - NAND: AND의 부정. NAND만으로 모든 조합논리회로를 구현 - NOR: OR의 부정 - XNOR: XOR의 부정 * 논리식 간소화 - AND, OR에 대해 교환법칙, 결합법칙, 분배법칙 성립 - 멱등 법칙: A+A=A, A*A=A - 보수 법칙: A+~A=1, A*~A=0 - 항등 법..
* 자료구조의 분류 선형 구조: 리스트, 스택, 큐, Deque 비선형 구조: 트리, 그래프 * 선형 자료 구조 - List: 흔히 말하는 배열. 메모리에 연속적으로 저장 - Linked List: 연속적인 공간이 없어도 되고 삽입, 삭제가 용이하지만 포인터를 위한 추가 공간 필요 - Stack: 후입선출 (LIFO). 인터럽트 처리, 수식 계산, 서브루틴의 복귀 번지 저장, 0-주소 저장 방식 등에 이용 - Queue: 선입선출 (FIFO). OS의 스케줄링 등에서 이용 - Deque: 리스트의 양쪽 끝에서 삽입, 삭제가 가능. 스택과 큐의 복합 형태. '데크' 라고 써 있는데 자꾸 디큐라고 읽고싶어진다. * 비선형 자료 구조 - 트리 그래프의 특수한 형태라 할 수 있음. 사이클을 이루지 않는 그래프...
* 데이터베이스의 정의와 특성 - DB의 정의 1) 통합된 데이터: 한곳에 모아서 통합해놓은 데이터 2) 저장된 데이터: 컴퓨터 하드웨어에 저장되어 있는 데이터 3) 운영 데이터: 어떤 조직의 기능을 수행하기 위해 필요한 데이터 4) 공용 데이터: 여러 사용자들이 공동 소유/관리/이용하는 데이터 - DB의 특성 1) 실시간 접근성: 실시간으로 요청에 대해 응답해야 함 2) 내용에 의한 참조: DB의 데이터는 그 주소나 위치에 의해서가 아니라 내용에 의해 참조됨 3) 동시 공유: 같은 내용의 데이터를 여럿이 공유할 수 있음 4) 계속적 변화: DB는 데이터의 삽입, 삭제, 갱신 등을 통해 계속해서 내용이 바뀜 * 스키마 데이터베이스의 구조, 즉 어떻게 생겼냐를 정의한 것 - 스키마의 3계층 1) 외부 스키..
이번달 말에 있는 2회 정보처리기사 시험을 치기로 했다. 사실 컴공과 졸업생에게 정보처리기사가 필요한가에 대한 갑론을박이 많다. 학부 시절 인맥도 별로 없었고 지금도 개발자 커뮤니티 같은걸 하지도 않아서 정확히는 모르겠지만, 보통 학부 4학년 때 그냥 다들 따니까, 혹은 졸업요건 채우기 용으로 따는 경우가 많은 것 같았다. 가면 갈수록 있어도 그만 없어도 그만인 자격증이라는 인식이 많아지는 것 같고, 사실 내가 봐도 이 자격증이 개발자로서의 실무에 도움이 될 거라는 생각은 들지 않는다. 학부 커리큘럼에서 배웠던 내용들을 압축해놓은 느낌인데, 학부 커리큘럼을 밟으면서도 흔히 개발자라는 사람들이 얘기하는 걸 보면 참 실무하곤 거리가 멀구나 싶었던 적이 한두번이 아니었으니... 그럼에도 불구하고 시험을 보려는..
지난 번에 IaC (Infrastructure as Code) 라는 개념에 대해서 소개하면서 Ansible이 무엇인지, 그리고 Packer라는 소프트웨어와 연동해서 Ansible을 사용하는 방법에 대해서 알아봤었다. 그 때 Packer Provisioner를 이용하는 방법 말고 Ansible을 직접 설치한 다음 원격 머신에 접속하는 방법도 있다고 얘기를 했었는데, 오늘은 그 방법에 대해서 이야기해보자. 일단 Ansible은 리눅스용 프로그램이라 일반적인 윈도우 PC에서는 설치할 수가 없다. 그래서 Ansible을 설치해 보려면 리눅스 환경을 만들어줘야 하는데 크게 두 가지 방법을 생각해볼 수 있다. 1) 리눅스 에뮬레이터인 Cygwin을 이용해서 설치. 2) VMWare나 VirtualBox 등을 이용하..
이전 포스팅에서 이어지는 글이다. 1) Packer로 이미지 생성하기 설치 페이지 튜토리얼 페이지 Packer는 Hashicorp라는 회사에서 만든 오픈소스 이미지 빌드 자동화 도구이다.기본적인 사용방법은 위의 설치 페이지에서 Packer를 설치했으면, 실행 파일 (packer.exe) 이 있는 위치에서 cmd 명령으로 packer build filename.json 을 실행하면 이미지를 만들어준다. 파일이름의 확장자에서 볼 수 있듯 Packer에서는 JSON 형식으로 VM 이미지에 대한 설정을 정의하는데 이 JSON 파일을 템플릿 파일이라 부른다. 템플릿 파일에는 뭘 써야하는지 튜토리얼 페이지의 예제 코드를 먼저 보고 얘기해보자. { "variables": { "aws_access_key": "XXXX..
어제 트위터 타임라인을 보다가, '부동소수점' 이라는 단어를 보면 어떻게 해석하게 되느냐는 그런 트윗이 RT로 넘어왔다. 생각해보니까 굉장히 비직관적인 단어다.원래 영어단어는 floating point인데, 소수점 (point) 이 둥둥 떠다닌다 (floating) 고 써놔도 뭔 소린지 단번에 이해가 안되는데, 이걸 또 '부동' (浮動) 이라고 번역을 해놨다. 문제는 한국어에서 그냥 '부동' 이라고 하면 저것보다 더 높은 빈도로 쓰이는 다른 단어들이 많다는 것이다. 不動 (움직이지 않음. '부동자세' 의 부동) 이나 不凍 (얼지 않음. '부동항' 의 부동), 不同 (같지 않음. '표리부동' 의 부동) 등등. '부동소수점' 이라는 단어만 딱 보고 저 부동이 움직인다는 뜻이라는 걸 단번에 알아챌 사람은 아마..
상상을 해보자. 친구랑 같이 온라인 쇼핑몰을 하나 차리기로 했다.굉장히 좋은 아이템이라 오픈 전부터 SNS에서 화제가 되고 있고 많은 유저들이 몰릴 것 같다. 실제 상황이면 참 좋겠다 홈페이지를 오픈해야 하는데, 서버 컴퓨터를 사자니 유저가 얼마나 들어올지 예상하기도 어렵고 초기 비용도 많이 든다. 웹 호스팅 서비스를 이용해도 된다. 웹 서버와 인프라에 대한 지식이 딱히 필요없고 사실 일반적으로 쇼핑몰 같은 간단한 홈페이지라면 웹 호스팅을 많이 이용하는 걸로 안다. 그렇지만 제한적인 트래픽, 떨어지는 자유도 등 문제가 없는 것은 아니다. 그래도 컴공을 나와서 웹 서버가 어떤 건지 알긴 하는 친구와 나는 클라우드 서비스, AWS를 이용하기로 했다.지난 번에 클라우드 컴퓨팅에 대한 소개 포스팅에서 얘기했듯 ..
어젠가 그저껜가, 트위터를 하는데 어떤 개발자가 쓴 트윗 몇 개가 RT로 넘어왔다.자기가 면접을 본다는 걸로 봐선 꽤 경력이 많은 개발자인 것 같은데 내용을 대충 요약하면 이렇다. 온라인으로 코딩 면접을 보는데 요즘 지원자들 너무 못해서 수준을 낮췄다. 문자열로 큰 정수 두개 주면 덧셈하는 프로그램, 예를 들면 "9999999999999999999" + "1" 의 결과를 리턴하는 프로그램을 짜보라는 문제도 제대로 못 푸는 사람이 많다. 초등학생도 하는 덧셈 알고리즘을 코드로 옮기는 것 뿐인데.어떤 사람은 "int로 바꿔서 더하면 안되나요?" 라고 묻던데 기가 차더라. 더 쉬운 문제로 바꿔야 하나 싶다. 보자마자 확 짜증이 났는데 이유는... - 나라는 사람 자체가 스스로 개발자라 칭하는 사람들하곤 다르게..