/* 본 포스팅은 한빛미디어의 '쉽게 배우는 데이터 통신과 컴퓨터 네트워크 | 박기현 저'를 참고하여 작성되었음을 미리 알려드립니다. */ 네트워크(Network)는 전송 매체(Transmission Media)로 서로 연결해 데이터를 교환하는 시스템(System)의 모음이다. 시스템과 전송 매체의 연결 지점에 대한 규격을 인터페이스(Interface)라 하고, 시스템이 데이터를 교환할 때 임의의 통신 규칙을 따르는데 이 규칙을 프로토콜(Protocol)이라 한다. 서로 다른 시스템이 상호 연동해 동작하려면 연동 형식의 통일이 필요하고 이 통일을 표준화(Standardization)라 한다. 시스템은 반드시 컴퓨터일 필요는 없지만 보통 컴퓨터 시스템으로 가정한다. 시스템은 물리적으로 공유하는 전송 매체로..
20살 이후로 처음 읽어보는 시집일 것이다. 메마른 땅에 촉촉한 비가 달게 받아들여지듯, 황무지 같던 내 마음에 이 시집은 감성의 싹이 틔어날 수 있게 해준 씨앗이다. 시인이 그랬듯, 지금은 서정 연습시대. 연습하지 않으면 내 안의 감정들이 사라져 버릴지도 모르기에 시집을 조용히 꺼내들었다. 시집을 읽으면서 가장 인상 깊었던 4가지의 시와 감상평을 아래 남겨 보았다. 시인의 배경과 삶의 철학 등을 잘 알지는 못하지만 시가 주는 울림은 상상이상이었고, 오랫 동안 마음 속에 남아있을 것 같다. 서녘 항구 저무는 해 닻을 내리고 서녘 항구,불타는 관절염의 뼈들을 이끌고나 여기까지 왔네. 흔들어, 흔들어줘!순교도 배교도 구원이 될 수 없는 시대,침묵하는 배들이 바닷속에 뿌리내릴 때내 일생을 내 일평생을흔들어, ..
/* 본 포스팅은 kocw의 유상미 교수의 '객체지양언어2' 강의를 듣고 정리한 내용임을 미리 알려드립니다. 유상미 교수의 본 강의 링크는 'http://www.kocw.net/home/search/kemView.do?kemId=1192791' 이며, kocw 사이트에서 따로 객체지향언어2나 교수 이름으로 검색하시면 만나볼 수 있습니다. */ # 컴퓨터, 프로그램, 언어 컴퓨터는 CPU, 메모리 등으로 결합된 하드웨어와 프로그램과 같은 소프트웨어로 구성되어 있다. 컴퓨터를 사용한다는 건 프로그램을 실행한다는 것과 동일한 의미이다. 프로그램은 컴퓨터의 중앙처리장치(CPU)가 처리하는 일련의 명령들과 데이터로 구성되어 있다. 프로그래밍 언어는 크게 저급 언어(low-level language)와 고급 언어(..
본인은 분명 안드로이드 스튜디오 사이트에 등재되어 있는 최신 버전의 안드로이드 스튜디오를 다운 받았음에도 이와 같은 에러를 만나 매우 당황스러웠다. 오류가 발생한 건 공부차 분석해보고 싶은 오픈 소스 앱을 github에서 내려 받아 import project 하는 과정에서 생겼다. 최신 버전을 설치했음에도 더 상위 버전을 설치해야한다는 문구를 봤을 때의 당혹감.. 을 겪었다면 아래와 같이 해결해보자. 여러 가지 해결책이 있을 수 있으나, 스택 오버 플로우에서 참고한 답안이 생각보다 잘 적용되었기에 이렇게 공유하고자 한다. 링크와 사진을 함께 보도록 하자. https://developer.android.com/studio/preview/index.html 위 링크로 접속하면 아직 안정적인 버전으로 정착하지..
/* 본 포스팅은 최호성 저자의 '독하게 시작하는 C프로그래밍' 교재를 참조로 작성되었음을 먼저 알려드립니다. */ 함수의 이름 또한 배열의 이름처럼 '주소 상수'에 부여한 식별자다. 따라서 함수의 이름도 포인터 변수에 저장할 수 있다. 다만 변수의 자료형이 함수 호출에 필요한 정보들을 포함하고 있어야 변수를 이용해서 함수를 호출할 수 있다. // 호출에 필요한 정보는 매개 변수, 호출 규칙, 반환 자료형 등이 있다. 그래서 'void *'에 함수의 이름을 저장할 수는 있으나 호출을 할 수는 없다. 아래의 코드는 함수 포인터를 구체적으로 다루기에 앞서 함수의 이름이 주소임을 확인하기 위한 코드다. #include int main(void) { // void *는 어떤 주소든 담을 수 있는 자료형이다. /..
/* 본 포스팅은 최호성 저자의 '독하게 시작하는 C프로그래밍' 교재를 참조로 작성되었음을 먼저 알려드립니다. */ 함수 호출 규칙(calling convention)은 호출자 함수가 피호출자 함수를 호출하는 과정에서 매개변수를 전달하는 순서 및 매개변수가 사용한 메모리 관리방법 등에 관한 규칙이다. 대표적으로 __cdecl, __stdcall, __fastcall 등 세 가지 정도가 있는데 이 세 가지가 C 언어의 표준에서 정의하는 것은 아니다. 모두 약간씩 차이가 있는데 C/C++ 컴파일러의 기본 함수 호출 규칙은 __cdecl이다. 우리가 자동변수를 선언할 때 auto를 생략해도 되는 것처럼 __cdecl도 생략할 수 있다. 따라서 아무것도 기술하지 않으면 함수 호출 규칙은 __cdecl이다. 제대..
# 셸 정렬 개념 및 원리 셸 정렬(shell sort)은 Donald L. Shell 이 제안한 방법으로 삽입 정렬이 어느 정도 정렬 되어 있는 배열에 대해서는 대단히 빠르다는 점을 이용해 만든 방법이다. 셸 정렬은 삽입 정렬의 시간 복잡도 $O(n^2)$보다 빠르다. 삽입 정렬의 문제점은 요소들일 삽입될 때, 이웃한 위치로 한 칸씩만 이동한다는 점이다. // 제 블로그에 삽입 정렬로 검색하시면 관련 설명과 알고리즘을 확인해보실 수 있습니다. 삽입 정렬은 for 루프를 이용해 인접한 위치부터 한 칸씩 이동하며 삽입할 위치를 탐색하므로 만약 삽입할 원소가 들어갈 자리가 멀리 떨어져 있다면 한 칸씩 이동하는 설계 때문에 불필요하게 많은 반복과 비교를 해야 한다는 단점이 있습니다. 셸 정렬에서는 요소들이 멀..
# 짧은 소감 대학교 친구가 알고 있는 페이스북 개발자분께 대학생들을 위한 세미나 요청을 했는데, 흔쾌히 수락해주셨다며 세미나를 주최했다. 당연 나는 해외 취업 뿐만 아니라 업계현황 등이 궁금했기에 가장 먼저 참여하겠다는 의사를 밝혔다. 그리고 오늘 다니고 있는 대학교에서 열린 페이스북 개발자와 함께하는 세미나에 참여했다. 그 분이 말씀해주신 것들을 토대로 개발자를 꿈꾸는 분들에게 도움이 됐으면 좋겠다는 생각에 이렇게 바로 포스팅을 작성하게 됐다. # 개발과 관련 있는 혹은 없는 것들에 관한 여러 가지 조언 1. 프로그래밍 언어는 별로 중요하지 않다. 실제 회사 업무에서는 자기가 쓰는 언어가 아니었을지라도 한 달 안에 알아서 숙지해야할 경우가 얼마든지 생길 수 있다. 따라서 언어를 얼마나 많이 아느냐가 ..
/* 본 게시물은 '핵심만 골라 배우는 안드로이드 스튜디오 & 프로그래밍(Android Studio 2 Development Essentials) | 닐 스미스 지음' 의 내용을 토대로 작성되었습니다. */ # 서로 다른 안드로이드를 장치를 위한 디자인 애플리케이션의 사용자 인터페이스는 가능한 한 많은 종류의 화면 크기에서 제대로 보일 수 있도록 신중하게 디자인되어야 한다. 이때 가장 중요한 것은 서로 다른 장치에서 레이아웃의 크기 조정이 올바르게 될 수 있게 하는 것이다. 안드로이드 기반의 스마트폰과 태블릿은 사용자가 세로(portrait)와 가로(landscape) 방향 모두를 사용할 수 있다는 것이다. 따라서 디자인이 잘된 사용자 인터페이스라면 모든 방향에서 그런 변경에 적응할 수 있어야 하고, 사..
- Total
- Today
- Yesterday