고속 응용 프로그램 개발(Rapid Application Developement, RAD) 또는 고속 응용 프로그램 개발 도구(Rapid Application Development Tool)는 소프트웨어 개발 방식의 하나로, 빠르고 쉽게 응용 프로그램을 만들 수 있는 시각적 도구 혹은 개발 모형이다. 한마디로 툴을 사용해서, 디자인을 하고, Code Generator를 활용하여 프로그램을 빠르게 개발하는 기법으로 쉽게 생각하면 된다. 대표적인 툴로는 파워빌더, Visual C#, Miplatform 같은 플랫폼이 있다. 만능인 것처럼 보이고, 개발자가 아닌 PM이나 기획자 입장에서 매우 매력적으로 보일지 모르겠지만, 전세계가 아직 자바의 시대에서 벗어나지 못한 이유는 언어의 한계도 있지만 툴로서의 기능의..
반복적 모형은 솔루션 업체들이 가장 선호하는 방법일 것이다. 바로 한번에 모든 것을 만들어서 오픈 하는 것이 아닌 핵심을 먼저 만들고, 나머지를 점진적으로 업데이트를 하여 최종 시스템을 완성하는 모델이다 프로토타입과 나선형 모델과 비슷한 느낌을 주지만, 프로토타입은 시제품을 만들어서 가능성 여부를 먼저 점검한 후 개발을 시작하는 것이고, 나선형 모델은 상당히 비슷하지만, Risk가 중심이 된 것이 나선형 모델이다. 반복적 모델은 2가지 방식이 있는데 증분형(Incremental) 모델과 진화형(Evolution) 모델이 존재한다. 증분형은 동시에 여러가지 업무를 진행하여, 나중에 합치는 작업이 들어간다면 진화형은 작업이 순차적으로 진행이 되면서, 프로그램이 계속 수정 작업을 거치며 진화하는 것이다. 1...
넥서스(Nexus)는 "Nexus is a connection or series of connections, 여러가지 것의 복잡한 결합 및 연쇄"라는 의미 넥서스 경영은 L자형 경제성장(저성장의 장기화로 인한 그래프 모양)으로 그에 따른 전략 역시 다르게 가져가야 한다는 것에서 유래된 경영 패러다임이다. 올해도 여전히 저성장율을 기록할 것으로 보이며, 2010년 갤럭시를 선두로 모바일폰이 반짝 하던 해 이후로 꾸준히 2~3프로를 왔다 갔다 찍고 있는 실정이다. 4차 산업혁명 시대라고는 하지만 아직 실체가 보이지 않기 때문에 올해 말까지도 별다른 반응이 보이지 않을 수 있고, 외부적으로 북한의 핵실험, 수소폭탄 실험 및 중국의 사드보복 조치로 인하여 북한에 대해서 특별히 화해 모드가 조성이 되던지 아니면 ..
게임화(Gamification, 게이미피케이션)은 웹사이트나 마케팅같은 것에 게임을 접목시켜서 사용자가 게임을 플레이하는 듯한 즐거움을 느끼며, 몰입감을 증대시키는 기법을 말한다. 사용자들에게 설문조사를 한다던지, 커뮤니케이션을 한다던지 혹은 일정을 관리한다던지, 어떤 것이든 게임과 접목 시킬 수 있다. 게임화를 위해서는 다음과 같은 요소들이 중요하다.흥미 : 프로세스가 진행될 수록 보상과 또 연속적인 흥미를 끌 수 있게 조금씩 난이도를 높인다지속 : 중간에 끊기지 않게 피드백을 주고, 받는 형태로 진행이 되야 한다접근 : 참여하기 쉽도록 초기 달성이 쉬워야 한다보상 : 단계별 미션을 클리어 시, 보상을 해야 한다(점수, 리더보드, 상금 등) 위의 요소들로 얻는 게임화의 특징은게임플레이 : 규칙에 기반하..
SQL Injection는, OWSAP에서 매번 발표했을 때, 가장 위협적이고 가장 쉬운 방법이라고 거론이 될 정도로 어찌보면 기본이며, 꼭 알아야 할 해킹 기술이다. Injection은 주입이라는 뜻으로, 즉 직독하자면 SQL 언어를 외부에서 주입하여 해킹을 하는 기법을 뜻한다. 외부는 일반적으로 웹(Web)을 뜻하며, 아이디를 입력하는 란이라든지 뭔가 정보를 주고 받는 곳에서 예상치 못한 공격으로 사이트를 마비 시키거나, 데이터를 훔치거나 관리자 정보나 기타 유저들의 정보를 훔쳐볼 수 있다. SQL Injection은 OWASP에 꾸준히 1위를 유지하고 있으며, 최근 발표한 2017년 버전에도 여전히 1위를 지키고 있을 정도로 관심은 여전하다. - SQL Injection 외에도 허술한 인증 관리와 ..
시큐어 코딩이란, 말그대로 보안 코딩이다. 즉, 코딩을 할 때 보안에 대해서 문제가 되는 부분을 제거하거나 교체하는 방식으로 가장 간단히 처리하면서 효과적인 모습을 보여준다. 상당히 많은 개발자들이 스스로 나는 코딩을 잘해라고 말하지만, 시큐어 코딩을 하는 사람을 많이 보지 못했다. 머리속에 있는 것을 구현하는 것은 초중급이상만 되면 누구나 할 수 있는 것이다(사람마다 시간의 편차가 존재할 수 있지만...) 하지만, 시큐어 코딩(Secure Coding)이나 클린 코딩(Clean Coding)같은 다음 Level의 코딩 혹은 철학 없이는 고급 개발자로 절대 갈수가 없다. 그럼 시큐어 코딩이 왜 중요한가??? 첫 문장에 적었지만, 가장 간단히 처리하면서 효과적인 모습이기 때문인데 정의를 읽어보면 좀 더 쉽..
과학기술의 발전속도가 가속화되고 있는 상황에서는 불확실성 역시 마찬가지로 증가하고 있다. 급변하는 불확실성에 대응하기 위해서는 단정적 미래예측이 아닌 다양한 미래사회 모습을 파악하고 비전, 목표 및 전략을 수립하는 시나리오 기반의 전략적 미래예측이 필요할 것이다. 어느 기업의 다양한 시나리오 없이, 단정적으로 운영해왔을 경우 현재까지 기업이 살아남은 이유는 운이 좋았기 때문일 것이다. 최근에는 이 불확실성이 더더욱 커지는데 정치적으로는 중국의 사드보복으로 인한 외교적 갈등으로 수출의 불확실성의 문제가 있고, 전세계적으로는 ICT에 지능을 입히는 4차 산업혁명이 있을 것이다. 최근 들어서, 대기업들은 인공지능에 모든 것을 걸고 있다고 해도 무방하다. 문제는 인공지능의 인력의 공급이 원활하지 못하다는 것에 ..
조인연산(Join Operation) 이란? - SQL 명령문에 의해서 여러 테이블에 저장된 데이터를 한번에 조회할 수 있게 하는 DBMS의 기능- 두 집합(테이블) 간의 곱으로 데이터를 연결하는 가장 대표적인 데이터 연결 방법- 대표적인 종류로 Nested-Loop Join, Sort-Merge Join, Hash Join 등이 존재함 ※ 조인연산은 옵티마이저(Optimizer)의 성능 및 DBMS의 고유의 성능, 그리고 조인연산의 알고리즘에 의해서 속도 등의 차이가 있을 수 있으나, 결과집합은 동일함 Nested Loop Join 가. Nested Loop의 개념- 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합하여 원하는 결과를 조합하는 방식- 먼저 선행 테이블의 처리..
Isolation Level의 필요성 DBMS를 혼자서 사용한다면 문제가 없겠지만, 대부분의 프로그램이 여러명이 사용하고 있으며 상대방이 변경된 부분이 반영이 안되거나 혹은 반영이 이상하게 되어서 화면상의 데이터가 꼬이는 문제등이 발생하게 된다. 내가 실행하고 있는 이 트랜잭션 안에서 중간에 다른 트랜잭션의 결과가 반영이 되어, 치명적인 연산 버그등이 발생하게 되면 이미 사용할 수 없는 수준으로 폐기처리 해야 할 것이다. 예를 들어, A라는 값이 1000이라는 값이 있고, B라는 값이 2000이라는 값이 있는데 처음 시작했을 때, A+B를 해서 3000이라는 값을 저장하였다. 그러나 다른 트랜잭션이 A의 값을 1500으로 변경하여, 마지막에 한번 더 A+B를 해서 3500으로 변경이 되었다면 처음과 마지..
라우팅(Routing)이란? Routing이란 패킷(Packet)을 전송하기 위한 수많은 경로 중에서 한 가지 경로를 결정하는 것이다. 라우팅에는 동적 라우팅(Dynamic Routing)과 정적 라우팅(Static Routing)으로 나누는데 정적 라우팅은 주로 사람이 수동으로 미리 경로를 지정하는 방식이고, 동적 라우팅은 변화하는 상황에 맞추어 라우터가 경로를 재설정하는 방식으로 이루어진다. 라우팅은 이렇게 가야 되는 방향을 설정해주는 것이라고 인식하면 될 것 같다 라우팅 프로토콜(Routing Protocol)의 개념 라우팅을 위해서 네트워크 상의 모든 라우터(Router)들은 목적지에 따라서 패킷을 보낼 Interface를 선 계산해 놓아야 하는데 이 계산해 놓은 것을 라우팅 테이블이라고 한다. ..
레이어별 프로토콜 개념 네트워크 프로토콜을 설명하기 위해서는 우선 OSI 7 Layer와 TCP/IP의 4 Layer를 이해하고 있어야 한다. 특히 OSI 7 Layer를 이해하고 있으면, 해당 위치에 어느 프로토콜이 존재하는 것만으로 해당 프로토콜의 역할이 쉽게 이해가 되기 때문이고, 각각의 계층별로 데이터를 전송하는 방식이 다르기 때문이기도 하다. OSI(Open Systems Interconnection) 7 Layer는 ISO(국제표준기구)에서 만든 네트워크를 7계층으로 만든 모델이고, 프로토콜(Protocol, 통신규약)은 상호간의 접속이나 전달방식, 통신방식, 주고받을 자료의 형식, 오류 검출 방식, 코드 변환방식, 전송속도 등에 대하여 이미 정해진 약속이기 때문에 레이어별 프로토콜은 한마디로..
TCP/IP의 개념 - TCP/IP는 네트워크를 상호 연결시켜 정보를 전송 할 수 있도록 하는 기능을 가진 다수의 프로토콜이 모여있는 프로토콜 집합- 인터넷은 데이터 링크 계층을 지원하는 네트워크를 TCP/IP 프로토콜을 이용하여 상호 연결하는 네트워크- 인터넷 상의 서로 다른 운영체제를 쓰는 컴퓨터간 데이터 전송을 가능하게 하는 정보전송을 위한 인터넷 표준 프로토콜 OSI 7 layer와의 비교source, https://commons.wikimedia.org/wiki/File:Application_Layer.png 한마디로, 네트워크를 상호 연결(서로간에 연결) 시켜 전송 할 수 있도록 다양한 기능을 가진 프로토콜들을 모은 집합체이다. TCP/IP는 OSI 7 Layer처럼 추상적인 레이어 역할을 하..