논리식은 "정보처리기능사 필기 해설 1 - 논리게이트"와 "정보처리기능사 필기 해설 2 - 부울 대수"를 통해서 살펴 본것 처럼 매우 중요한 역할을 합니다. 그런데, 회로나 주어진 게이트가 없는 상태에서도 입력과 출력이 주어진다면 이런 조건을 만족하는 최적화된 논리식을 유도할 수 있습니다. 주어진 입력과 출력은 우선 진리표로 표현합니다. Input Output A B Y 0 0 1 0 1 0 1 0 0 1 1 1 진리표의 각 입력 상태를 0이면 A', 1이면 A처럼 표시해서 두입력을 논리곱으로 표현한 것을 최소항이라 합니다. 진리표의 각 입력 상태를 0이면 A, 1이면 A'처럼 표시해서 두입력을 논리합으로 표현한 것을 최대항이라합니다. Input Output 최소항 최대항 A B Y 0 0 1 A'B' ..
부울 대수(Boolean algebra) 또는 불 대수는 조지 불(George Boole)이 창안한 논리 대수입니다. 대수(代數)의 사전적 의미는 "숫자 대신에 그 숫자를 대표하는 문자를 써서 수학 법칙을 간명하게 나타내는 수학의 한 분야"로 부울 대수는 논리 문제로 기호로 설명하는 것이라 할 수 있습니다. 부울 대수는 값의 범위가 참(True)과 거짓(False)으로 한정되는 대수의 한 분야로 컴퓨터에서 부울 대수가 기본적으로 언급되는 이유는 바로 컴퓨터의 논리 회로가 1, 0만의 디지털 신호를 다루기 때문입니다. 부울 대수는 회로 뿐만아니라 소프트웨어와도 깊은 연관성을 가지는데 프로그래밍 언어에서 조건을 기술하는 if , for, while 등의 문장에서는 부울 대수와 연관성을 가지는 논리 연산이 수..
게이트(gate)는 단순히 "통로"의 의미도 있지만 워터게이트를 비롯해서 사회를 혼란의 폭풍속으로 밀어넣는 부정적인 사건에 붙는 단어이기도 합니다. 그렇지만, 기술적으로는 신호를 연결하거나 끊는 회로를 의미합니다. 논리 게이트(Logic gate)는 하나 이상의 입력을 받아 하나의 출력을 내보내는 논리 연산을 구현한 실제 또는 가상의 장치를 의미합니다. 최신의 CPU나 메모리의 근원에는 이러한 논리 게이트가 존재합니다. 논리 게이트는 전자공학적인 접근이지만 소프트웨어에서도 이러한 논리 연산은 그대로 적용되므로 정확한 이해와 숙지의 필요가 있습니다. 논리게이트의 표현 방식은 NOT, AND, OR처럼 논리 키워드를 사용하는 것과 함께 논리식, 진리표나 기호 표현 방식이 있습니다. 기호 표현 방식에는 MIL..
냉장고를 고를때 냉장고 내부 기술에 대한 깊이있는 공부보다 가격, 기능, 브랜드와 같은 요소에 중점을 두는 것처럼, 데이터베이스 관리 시스템(DBMS) 또한 DBMS가 지원하는 SQL 표준, 기능, 평판과 브랜드 등을 선택의 기준으로 삼고 있으며, 도입 비용이 거의 소요되지 않는 오픈 소스 DBMS를 통해서도 기업의 핵심 업무를 충분히 소화할 수 있음을 "DB를 냉장고처럼 쓰자 - 상품화된 DBMS(Commodity DBMS)"에서 다루었습니다. 우리의 삶과 깊은 연관성을 가진 냉장고와 데이터베이스, 이 둘 사이에는 어떤 공통점이 있을까? 냉장고와 데이터베이스 사이의 공통점을 통해서 데이터베이스에 대한 이해가 막연하게 "복잡하다, 어렵다"에서 냉장고 처럼 내 바로 옆에 있는 친숙한 도구로 다가왔으면 하는..
위키피디아의 "Commodity Computing(Commodity cluster Computing)"에 대한 정의를 정리해 보면 Commodity Computing은 비싼 고사양의 컴퓨터 대신 공개 표준 기반으로 저렴하면서도 어떤 벤더에서 만들었더라도 큰 차이를 보이지 않는 Commodity Computer들로 이루어진 시스템을 말합니다. 고가, 고사양의 단일 서버를 저가, 저사양인 다수의 서버군으로 대치 시킴으로써 비용을 절감할 뿐만아니라 시스템의 확장성과 안정성을 높이는 시스템을 말합니다. 냉장고로 비유하자면 S사의 냉장고이든 L사의 냉장고이든 아니면 이름없는 중소형 제조사의 냉장고이든 성능상의 큰 차이는 없다는 이야기입니다. 그렇다면 "Commodity DBMS"는 어떤 의미일까? 두가지 측면에서..
우리 생활에 밀접하고 매우 중요한 역할을 감당하지만 너무 익숙하거나 친숙한 탓에 그 존재를 잊어버리고 사는 것들이 있습니다. 대표적인 것이 냉장고가 아닐까 싶습니다. 대한민국 대부분의 가정에 냉장고 없는 집이 없고 심지어 원룸이나 모텔, 콘도 같은 사람들이 잠시 머물다 떠나는 곳 까지도 냉장고가 자리하고 있는 실정입니다. 냉장고를 사용하는 사람들의 입장에서 생각해 보면 냉장고 사용법이 어렵다거나 복잡하다는 생각을 하는 사람은 거의 없을 것입니다. 전원 넣고 문 열고 닫는 것이 사용법의 전부라 해도 과언이 아닙니다. 효율적으로 사용하기 위하여 칸칸 마다 별도의 용기로 정리하고 포스트잍으로 구입한 일자를 메모하는 주부님도 있지만 많은 경우는 그냥 빈곳에 넣었다가 필요할때 꺼내는 것이 냉장고 사용 요령의 전부..
"깃(Git)으로 브랜치/태그 만들기"에서 다루었던 브랜치 만들기로 개발을 진행하다가 테스트 및 디버깅 작업이 완료되어 메인 트랙(master)에 합치거나 다른 브랜치에 병합해서 진행할 경우에 사용하는 기능이 머지(Merge)입니다. 병합 작업의 절차는 합칠 대상으로 작업 사본(Working copy)을 준비합니다. 작업 사본 준비는 대상 브랜치로 체크아웃 받거나 갈아타기를 수행하면 됩니다. 합칠 대상으로 작업 사본을 준비 했으면 가져올 브랜치나 태그를 지정하여 병합을 수행합니다. 병합 과정에 문제가 없이 자연스럽게 합쳐지면 병합 작업을 그대로 끝나지만 브랜치간 병합 여부를 자동으로 판단하지 못하는 "충돌(Conflict)"이 발생하면 충돌을 해결하는 과정을 거쳐야 합니다. 충돌 발생 여부와 관계없이 브..
중앙집중식의 서브버전(Subversion)의 저장소(Repository)는 통상 위의 그림처럼 branches, tags, trunk라는 기본 폴더를 만들어 사용합니다. 주요 작업은 trunk에서 진행하기 때문에 프로젝트에 참여하는 사람들은 trunk를 체크아웃 받아 개발을 진행합니다. 그렇지만, 새로운 버전을 개발하거나 실험적 프로젝트를 진행할 경우에는 주요 작업 영역인 trunk는 손대지 않고 새로운 브랜치를 따서(Branching) 독립적으로 작업을 하다가 개발이 끝난 경우 trunk에 합치는 작업(Merge)을 수행하는 방식을 사용합니다. 또한, 특정 릴리즈를 보관할 경우에는 해당 시점의 코드에 태그를 붙여(Tagging) 저장해 놓았다가 해당 리비전이 필요할 경우에는 저장한 태그로 코드를 불러내..
■ 패치 만들기패치(Patch) 파일은 깃 저장소에 대한 쓰기 권한이 없을 때, 형상 관리 시스템을 사용하지 않는 곳에 최신의 소스 코드를 변경된 부분만 배포하고 싶을때 사용합니다. From c708dd886aca9e9bdc72b5fd5234e8b40ef24fe4 Mon Sep 17 00:00:00 2001 From: Name Date: Thu, 10 Dec 2015 21:47:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?push=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README | 3 ++-..
"정보 올림피아드"라고 하면 많은 사람은 그저 필기 시험과 지정한 시간 내에서 몇개의 프로그램을 완성할 수 있는지를 겨루는 경시 대회를 이야기 합니다. 그렇지만 "프로그래밍"의 관점에서보면 실제 구동되는 프로그램을 제출하는 "공모 부문"이야말로 이 대회의 진수이지 않나 싶습니다. 특히 천재들이나 풀수 있을 것만 같은 시험 문제를 앞에 두고 막막한 느낌을 받는 학생이라면 경시 대회에 부담을 갖기 보다는 학과 공부를 하면서 머리도 풀겸 공모 부문에 도전하는 것도 방법입니다. 시간 나는 대로 아이디어를 도출하고 차분히 아이디어를 프로그램으로 구현하고 그 결과를 제출하면 되는 것입니다. 숫자 맞추기, 자동차의 목적지로 가는 길 검색기, 분수의 신, 앤딕, 통일 말놀이, 일기도, 물체의 속력 이젠 어렵지 않아요!..
프로그래밍에 관심을 가지고 있는 아이를 키우다보니 부모인 저도 정보올림피아드에 매년 관심을 가지게 되는 군요. 사실 필자의 경우에도 예전에 고등학교부터 컴퓨터를 배우기 시작했는데, 학교에서 당시 대통령배 컴퓨터 경진대회를 준비하는 과정에서 엉겁결에 컴퓨터를 접하게 된것이었습니다. MSX, FC-100등 8비트 컴퓨터에 BASIC으로 프로그래밍을 배웠지만 저에게는 신세계였죠. 그리고 그것이 인생을 바꾸어 놓았지만......각설하고 올해 올림피아드 부터는 예년과는 다르게 변화된것이 많네요. 경시대회는 필기와 실기로 나누어 지는데 지역 예선에서는 실기는 하지 않고 필기만 한답니다. 즉 지역 예선에서 필기로 대상을 뽑고 실기는 바로 전국대회에서 치러지는 단순한 시스템으로 변화된 것이죠. 좋은 방향이라고 봅니다...
많은 경우 깃의 원격 저장소는 웹서버를 앞단에 두고 인증을 수행하면 서비스를 제공합니다. 그런데 나의 로컬 저장소에 있는 내용을 원격 저장소에 푸시(push)하지 않고 간편하게 공개하는 방법이 바로 "git daemon" 명령입니다. 윈도우 토터스깃에서는 저장소의 컨텍스트 메뉴에서 토터스깃>공개하기(Daemon)를 선택해서 서버를 가동시킬 수 있습니다. 문제는 이 방식으로 서버를 가동시키면 인증 과정이 없기 때문에 접속할 수 있는 누구나 읽기/쓰기가 가능한 상태가 된다는 것입니다. 그러므로 사용에 주의를 기울여야 하고 진행하기 원한다면 [계속]을 클릭합니다. 서버를 동작할때 위의 그림과 같은 보안 경고창이 나올텐데 서비스 가동을 계속하려면 [액세스 허용]을 눌러야 합니다. 위의 화면은 서버 가동 중임을 ..
토터스깃으로 프로젝트 시작하기에서 언급한것처럼 외부 저장소를 복제해서(Clone) 프로젝트를 시작한 경우, 특히 해당 프로젝트가 활발하게 활동하는 오픈소스 프로젝트라면 해당 프로젝트의 원본 저장소는 지속적으로 업데이트가 수행되기 때문에 현재 로컬 저장소로 복제한 내용이후로 많은 변경이 일어났을 가능성이 큽니다. 변경된 최신의 코드를 확인하고 싶다면 "가져오기(fetch)"와 "가져와 병합하기(pull)"를 사용할 수 있습니다.차이점은 가져오기(fetch)는 원격 저장소의 가져오기는 하지만 현재 로컬 저장소에 반영하지는 않고 반영하고 싶다면 나중에 병합(merge)을 수행해야 합니다. 반면에 가져와 병합하기(pull)는 원격 저장소의 내용을 가져와 로컬에 병합하며 반영하는 동작을 수행합니다.탐색기에서 로컬..
앞선 포스팅(티베로 DBMS 설치기)에 이어서 C#에서 티베로 DBMS를 사용하기를 다루어 봅니다. 아직 티베로는 닷넷 Native ADO.Net 드라이버를 제공하지 않기 때문에 OLE DB 드라이버를 등록하여 사용해야 합니다.티베로의 OLE DB 드라이버 등록은 티베로 설치 폴더 아래 "bin"(필자의 경우 D:\tibero5\bin)에 있는 tbprov5.dll 파일을 C:\Windows\System32에 복사하고 regsvr32로 레지스트리에 등록하면 됩니다. tbprov5.dll 파일을 복사한 다음 콘솔창에서 C:\Windows\System32로 이동하여 "regsvr32 tbprov5.dll"을 수행하면 위의 그림과 같이 DLL이 시스템에 등록되면서 응용 프로그램에서 ADO.Net OLE DB ..
국산 범용 DBMS로 큐브리드와 함께 많이 사용하고 있는 티베로(Tibero)를 설치해볼까 합니다. 공공분야 등에서는 사용 비율이 높아지고 있으므로 개발자 입장에서는 나름의 사용 경험도 의미가 있다 싶습니다. 티베로는 티맥스소프트사의 테크넷(https://technet.tmaxsoft.com/)에서 무료로 회원가입하시면 다운로드를 받을 수 있고 개발에 활용할 수 있는 데모 라이선스도 무료로 받을 수 있습니다.다운로드는 좌측의 데이터베이스>Tibero를 클릭하고 우측에서 원하는 버전의 "다운로드"를 클릭합니다. 다음 화면에서 화면 맨 하단에 있는 플랫폼별 다운로드 링크를 클릭하면 파일을 다은로드 받을 수 있습니다. 필자의 경우에는 Tibero 5 SP1의 Windows 32-bit 버전을 다운로드 받았습니..
C#이나 VB.NET으로 데이터베이스 프로그램을 개발하려면 테스트용 데이터베이스가 필요한데 MS SQL은 상용이므로 어둠의 경로를 기웃거릴 수 있습니다. 그렇지만 최근에는 DBMS 벤더마다 개발자를 위해서 무료로 사용할 수 있는 개발자 버전을 제공하고 있는데 개발자의 지원을 받지 못하는 DBMS는 도태될 수 밖에 없다는 위기감 때문일 것입니다. 아무튼 실제 사용할 DBMS가 아니더라도 개발자 버전을 설치해서 테스트를 수행하며 좀더 안정성 있는 프로그램 개발을 진행할 수 있습니다. 마이크로소프트의 DBMS SQL Server의 개발자 버전은 "SQL Server Express"라고 하는데 http://www.microsoft.com/en-us/server-cloud/products/sql-server-ed..
C#이나 VB.Net 환경으로 응용 프로그램을 개발하는 과정에 큐브리드 데이터베이스를 사용하기 위해서는 다른 DBMS 처럼 닷넷 네이티브로 제작된 ADO.NET 드라이버를 사용하는 것이 가장 좋습니다. 사용 방식이 DBMS 별로 메소드 이름만 약간 다를뿐 대부분 대동소이하기 때문에 응용 개발자 입장에서는 매우 편리한 방법입니다. 특히 닷넷 네이티브(full managed .Net code) 드라이버를 사용하면 클라이언트 배포 과정에서 별도의 프로그램을 설치할 필요도 없어지기 때문에 응용 프로그램의 배포 과정도 단순하게 하는 효과를 가져옵니다. 큐브리드의 ADO.NET 드라이버는 http://www.cubrid.org/?mid=downloads&item=ado_dot_net_driver에서 다운로드 받을 ..
국산 오픈소스 DBMS 큐브리드 설치하기에 이어 큐브리드(CUBRID) DBMS를 본격적으로 사용하기 위한 기본 환경을 준비하고 간단한 사용 사례를 다루어 볼까 합니다. 큐브리드 매니저를 설치해서 GUI를 통한 편리한 데이터베이스 관리를 수행할 수도 있지만 큐브리드에서 기본적으로 제공하는 콘솔 도구를 활용하는 방법을 적용하고자 합니다. 원천적인 도구 활용에 익숙해지는 방법이 DBMS와 친해지는 좋은 방법입니다. ■ 콘솔 인터페이스 준비하기위의 그림은 큐브리드 설치 폴더 아래 bin 디렉토리로(C:\CUBRID\bin) 큐브리드의 다양한 서비스 프로그램과 라이브러리가 위치하고 있는 곳입니다. 큐브리드 관리를 위한 도구, 질의 도구등 큐브리드와 연관한 대부분의 기능을 이곳에서 처리할 수 있으므로 이 폴더에 ..
"성능과 기능으로는 오라클에 필적하고 인터넷 서비스 시각으로는 MySQL을 대체할만하다." 이런 평가가 국내 개발자 뿐만아니라 다른 나라 개발자들에게도 일반적인 평이 되는 날이 속히 오길 바라며, 상용 데이터베이스 시스템이나 오픈소스 DBMS 시각으로도 매력을 가진 큐브리드를 다루어 볼까 합니다. 포스팅 제목으로 "국산 오픈소스 DBMS"라 붙인 이유는 국내에서 시작한 여타의 오픈 소스 프로젝트와는 그 궤를 달리하기 때문입니다. 네이버에 인수되기전 케이컴스 시절에는 UniSQL이라는 이름으로 상용 판매하던 DBMS였습니다. 레드오션인 DBMS시장에서 큐브리드라는 이름으로 족적을 남길 수 있을지, MySQL에 비견할 IT역사를 만들어 낼지 아직 섣부른 판단을 하기에는 이릅니다. 분명한 것은 "국산" DBM..
C#이나 VB.Net에서 파이어버드 데이터베이스에 접속하기 위해서는 ADO.NET Data Provider를 사용하면 됩니다. 드라이버 자체가 C#으로 제작되었기 때문에 클라이언트 시스템에 부가적으로 설치할 것은 없고 드라이버 DLL 파일만 같이 배포하면 됩니다. 파이어버드 ADO.NET Data Provider를 내려받기 위한 주소는 다음과 같습니다.http://www.firebirdsql.org/en/additional-downloads/ 필자의 경우 응용을 닷넷 4.0으로 맞추었기 때문에 "ADO.NET Provider - .NET 4.0"을 다운로드 받았습니다.7-Zip 파일이므로 7-Zip이 설치 되어 있지 않다면 기업에서도 사용할 수 있는 압축 프로그램 7-Zip를 참조하여 프로그램을 설치합니..
파이어버드 DBMS를 사용하면서 다른 DBMS와 차이가 있는 몇가지를 메모해 둡니다. 파이어버드 또한 SQL 표준을 준수하고 있으므로 핵심적인 SQL 문법은 비슷하지만 차이가 나는 몇가지를 다루어 보겠습니다. ■ 테이블/컬럼 스키마 조회하기MySQL이나 SQL Server에서 지원하는 INFORMATION_SCHEMA나 오라클의 ALL_TABLES, ALL_TAB_COLUMNS를 통한 테이블 및 컬럼 정보 조회는 파이어버드에서는 다른 형태로 지원합니다.SQL> show table RDB$RELATIONS;RDB$VIEW_BLR (RDB$VIEW_BLR) BLOB segment 80, subtype BLR NullableRDB$VIEW_SOURCE (RDB$SOURCE) BLOB segment 80, su..
파이어버드를 C#이나 VB.Net등에서 간편하게 접속하려면 Firebird ADO.NET Data Provider를 사용하면 됩니다.(http://www.firebirdsql.org/en/net-provider/) 파이어버드 닷넷 드라이버를 성공적으로 붙여서 사용하다보면 오류는 아닌데 비주얼스튜디오 콘솔창에 지속적으로 나타나는 것이 있습니다. "FirebirdSql.Data.FirebirdClient Information: 0"으로 쿼리의 실행 결과는 정상이지만 실행 과정의 모든 질의 내용을 트레이스(trace)하는 것입니다. 쏟아지는 질의 로그 때문에 확인해야할 예외(Exception)를 보지 못할 수도 있고 트레이스 하는 만큼의 성능 낭비 요소도 있으므로 닷넷 드라이버의 트레이스에 대한 조치는 필요해..
파이어버드(Firebird) DBMS(Database Management System)의 설치와(파이어버드(Firebird) 데이터베이스 설치하기 참조) 사용 환경 준비(파이어버드 사용 환경 준비하기 참조)에 이어 이번 포스팅은 본격적으로 데이터베이스를 만들고 접속하여 쿼리를 수행하는 과정을 다룰까 합니다. MySQL이나 오라클과 같은 다른 DBMS처럼 파이어버드도 콘솔기반으로 SQL을 사용할 수 있는 isql 도구를 제공합니다. isql을 콘솔 인터페이스에서 사용할 경우에는 "isql -u 사용자아이디 -p 비밀번호 데이터베이스" 형식으로 특정 데이터베이스에 직접 접속 할 수도 있고 아래와 같은 옵션으로 다양한 기능을 사용할 수 있습니다. 데이터베이스를 생성하고 다양한 SQL을 실행할 수 있는 isql..
데이터베이스를 처음 사용하시는 분들은 DBMS(데이터베이스 관리 시스템)를 설치하고서도 무엇부터 해야하나? 하면서 막막한 느낌이 들수 있습니다. 오라클이나 SQL 서버와 같은 상용 DBMS의 경우에도 마찬가지여서 비싸지만 범접하기 어려운 경외의(?) 대상이라는 느낌까지 받을 수 있습니다. 그렇지만, 아무리 수많은 고급 기술이 포함되어 있는 제품이고, 듣도 보지도 못한 전문 용어가 난무하더라도 사용자 입장에서는 단순하게 대할 필요가 있습니다. DBMS를 하나의 냉장고 처럼 대할 필요가 있습니다. 냉장고 전원을 넣고 빼듯이 DBMS를 가동시키고 중단시키는 방법을 찾아 직접 해봅니다. 그 다음에는 냉장고 문을 열고 물건을 집어넣거나 가져오듯이 DBMS에 접속하는 방법을 찾아 데이터를 넣고 조회하는 작업을 해보..
오라클, SQL 서버, MySQL과 같은 인기있는 DBMS의 틈바구니에서도 끈질긴 생명력으로 10년이 넘는 세월을 버텨온 DBMS가 있습니다. 바로 파이어버드(Firebird) 입니다. "불새" 예전 독수리5형제가 불새로 변해서 악당을 물리치는 모습을 상상케하는 로고도 있습니다. 사실 오픈소스 DBMS의 대명사라 하면 APM, LAMP 패키지로 인해 그영역을 확장하고 Sun사를 거쳐 결국 오라클의 품에 들어간 MySQL일 것입니다. 초기 MySQL은 무료로 DBMS를 사용할 수 있다는 매력이 있었지만 DBMS의 2PC 커밋등 주요 핵심 기능을 갖추지 못해서 일부 개발자는 터부시 했던 것도 사실입니다. 지금의 MySQL이 그때의 모습과는 달리 미션 크리티컬한 업무에도 적용할 정도의 성능과 기능을 갖추었음에..
토터스깃을 사용하면서 여러 저장소를 관리하다보면 이 프로젝트를 손댄적이 있는지, 수정했다면 어떻게 손을 대었는지, 저장소를 복제한 원격 저장소의 주소는 무엇인지, 이 소스 코드는 누구에 의해 어떻게 변경되어 왔는지 등을 확인할 필요가 생깁니다. 토터스깃 저장소의 정보 확인은 윈도우 탐색기에 적용하는 아이콘 오버레이 기능으로 시작할 수 있습니다.(토터스깃(TortoiseGit) 돌아보기 참조) 윈도우 탐색기에 표시하는 원래의 아이콘에 토터스깃의 아이콘 오버레이가 적용되어 있다면 해당 폴더 또는 파일은 토터스깃의 형상 관리 대상이라는 의미이고 아이콘의 종류에 따라 기본적인 상태를 확인할 수 있습니다. 위의 그림은 "plagfind"라는 프로젝트에 변경 파일이 생겼다는 의미인 것입니다. 아이콘을 통한 상태확인..
웹 서비스가 다양화되고 클라이언트/서버 구조의 프로그램에서 조차 "검색"은 일반화된 기능이다보니 프로그래머의 입장에서 검색 결과의 일부분을 체계적으로 보여주는 페이징은 필수 불가결한 기능이라 할 수 있습니다. 그런데, 페이징 기능을 수행하려면 검색 결과의 개수를 먼저 파악해야하고 그중에 특정 부분의 행들을 추출할 수 있어야 합니다. 그런데 조건에 해당하는 모든 행의 개수를 파악하는 것도 테이블 전체를 스캔하므로 데이터베이스 시스템에 부담을 주지만 검색 결과를 특정 조건에 따라 정렬한 다음에 일부분을 뽑아내는 것은 개수를 파악하는 것보다 더 심한 부담을 주는 것이 사실입니다. 그렇다고 데이터베이스 수준에서 페이징을 수행하지 않고 클라이언트로 모든 데이터를 가져온다면 트래픽도 감당하기 어려울 뿐만 아니라 클..
이기종 데이터베이스를 사용하더라도 데이터베이스 간의 주요 데이터 타입은 유사하게 지원하는 것이 보통입니다. 대표적인 것이 문자열, 정수와 함께 일자시간 타입입니다. 위의 스키마는 3개의 컬럼을 가지고 있는 테이블로 tagname과 dt를 기준으로 주키(Primary key)를 설정한 것입니다. 위의 스키마를 각 데이터베이스 별 CREATE 문으로 작성하면 아래와 같습니다. 오라클만 DATE 타입을 사용하고 MySQL과 SQL Server는 DATETIME 타입을 사용합니다.== MySQL ==CREATE TABLE tags (tagname VARCHAR(16), dt DATETIME, val INT, PRIMARY KEY(tagname, dt));== SQL Server ==CREATE TABLE tag..
오라클 데이터베이스를 무료로 사용할 수 있는 개발자 버전 XE를 사용하다보면 갑자기 아래와 같은 메시지를 뿌리면서 접속이 않되는 경우가 있습니다.ORA-28001: the password has expiredCause: The user’s account has expired and the password needs to be changed 이유는 비밀번호의 유효 기간이 실제로 만료되어서 발생하는 현상으로 보안을 위해서 사용자가 주기적으로 비밀번호를 바꾸도록 유도하기 위한 장치입니다. PASSWORD_LIFE_TIME 변수를 통해서 비밀번호 유효 기간을 시스템레벨로 관리하는데 오라클 10g 버전 까지는 기본값이 무제한 이었지만 11g부터는 아래의 그림과 같이 기본값이 180일로 설정되어 있습니다. PASS..
데이터베이스를 사용하는 솔루션 프로그램들은 프로그램의 정상 가동을 위해서 필요한 스키마가 미리 준비되어 있는 상태로 프로그램을 시작하는 것이 일반적인 방법입니다. 그러나, 최근의 프로그램들은 데이터베이스 연결까지만 사용자가 설정해 놓으면 테이블이나 뷰 생성과 초기 데이터 준비를 프로그램이 알아서 진행하여 프로그램 수행 환경 준비를 자체 해결하는 경우가 많습니다. 이 과정에서 연결한 데이터베이스에 특정 테이블이나 컬럼의 존재 여부를 검사하는 과정은 필수적이라 할 수 있습니다. 테이블 존재 여부를 검사해서 테이블이 존재하지 않는 경우 자동으로 테이블을 생성하는 DDL(Data Definition Language) 문장을 실행할 수 있을 것입니다. 프로그램 버전 업그레이드 과정에서 특정 컬럼이 존재하지 않는 ..
- 런타임 에러 76은 경로를 찾을수 없다는 메시지 이군요. 입력하신 경로를⋯
- Set folder = fso.GetFolder(sFolder) 에서 런⋯
- [승인대기]
- 표준 시간은 제주 올레 홈페이지를 참조하시는 것이 좋을듯 하네요. 이 포⋯
- 안녕하세요. 리뷰 감사해요 소요시간이 어떻게 되나요? 저도 가보려고요
- 제주 올레길 / 까미노 데 산티아고 길 을 가봤는데 아직 해파랑 남파⋯
- 아 오르세... 제 가 갔을땐 실내 촬영이 안됬는데 지금은 된다고 하지요⋯
- 법환 포구 빌라 자리엔 원래 각종 맛집들이 있엇는데 말이죠.. 싹 밀어서⋯
- 리눅스의 쉘 환경과 같은 준비를 해주는 것으로 이해하면 좋을듯 합니다. ⋯
- 안녕하세요.. 야라바님 초면에 갑작스럽겠지만 제 생명의 은인입니다. T⋯