Atmel Studio 7 설치 후 Atmega128 작동시키기

Click the link to read the original article: Here =================== AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서 처음 구동시켜보려고 합니다. 아두이노만 사용하다가...
Read More

C++ 기초

Click the link to read the original article: TCPSchool.com ==== C++ 개요 C++ C++은 기존의 C언어에 여러 가지 기능을 추가하여...
Read More

Bash 입문자를 위한 핵심 요약 정리 (Shell Script)

Click the link to read the original article: Here ================ Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다....
Read More

Windows Hyper-V 사용법

Click the link to read the original article: Here ===================================== 안녕하세요. 도정진입니다.   저전력 서버를 사용하면서 윈도우를 쓸 일이 많아져서...
Read More

Hyper V 전체 화면으로 확대 하기 

Click the link to read the original article: Here =================================== Hyper V 전체 화면으로 확대 하기  윈도우 10 하이퍼 v는...
Read More

하이퍼-V (Hyper-V) 개념

Click the link to read the original article: Here ==================================== 하이퍼-V 란 무엇 인가 페러럴즈를 들어 보셨나요? 내가 맥을 사용할때...
Read More

10분만에 JASON API 개발하기

Click the link to read the original article: Here ================================== 10분만에 JSON API 개발하기 AXBoot Framework를 사용해서 JSON API를 10분 만에...
Read More

API Types and Information

Click the link to read the original article: Here ================================== 네이트 개발자센터 : http://devsquare.nate.com/ 개발블로그 : http://club.cyworld.com/devsquare 네이버 앱 팩토리 : http://appfactory.naver.com/ 네이버...
Read More

“5G 스마트폰 상용화 앞당긴다” 삼성, 엑시노스 모뎀 5100 공개

Click the link to read the original article: Here ===================================== 삼성전자, 업계 최초 5G 표준 멀티모드 모뎀 개발 [키뉴스 백연식...
Read More

5G를 위한 새로운 DBMS, ‘NewSQL DBMS’가 온다

Click the link to read the original article: Here ======================================= 과거 클라이언트/서버 환경에서 DBMS 선택 기준의 최우선 순위는 '안정성'이었다. DBMS가...
Read More

VoLTE Tutorial – Voice Over LTE

Click the link to read the original article: Here ==================== VoLTE Tutorial- This Voice over LTE beginners guide will help...
Read More

LTE architecture

Click the link to read the original article: Here =================================== LTE architecture The infrastructure of an LTE cellular network comprises...
Read More

cellular generations

cellular generations

Cellular Telecommunications
Click the link to read the original article: Here =================================== The evolution of cellular communications networks is commonly known by...
Read More
2G/3G Network Architecture

2G/3G Network Architecture

Cellular Telecommunications
Click the link to read the original article: Here ===================================== 2G/3G architecture The infrastructure of 2G and 3G cellular networks...
Read More
11 Best PHP Frameworks for Modern Web Developers in 2018

11 Best PHP Frameworks for Modern Web Developers in 2018

Click the link to read the original article: Here ============= 11 Best PHP Frameworks for Modern Web Developers in 2018...
Read More
MVC Framework – Introduction

MVC Framework – Introduction

Click the link to read the original article: Here ====================== The Model-View-Controller (MVC) is an architectural pattern that separates an application into...
Read More


Click the link to read the original article: Here =========================== 프레임워크(FRAMEWORK)란 2011. 1. 7. 16:56  이웃추가 본문 기타 기능 프레임워크란...
Read More
ORM 프레임워크(Object-relational mapping)

ORM 프레임워크(Object-relational mapping)

Click the link to read the original article: Here ============================================== ORM 프레임워크(Object-relational mapping) Jayzzz 2017.10.11 15:34  ORM은 데이터베이스와 객체 지향 프로그래밍...
Read More
ORM 이란 무엇인가?

ORM 이란 무엇인가?

Click the link to read the original article: Here ========================= ORM(Object-Relational Mappings)라는 건 과연 무엇일까? 근래 많이 보고 듣는 단어이고 ORM...
Read More
[Agile] 데일리 스크럼(Daily Scrum)이란?

[Agile] 데일리 스크럼(Daily Scrum)이란?

Tech News
Click the link to read the original article: Here =============== 데일리 스크럼(Daily Scrum)을 잘 하는 방법 Goal 데일리 스크럼이란 무엇인가(개념과 일반적인...
Read More
How to Delete a Windows Recovery Partition

How to Delete a Windows Recovery Partition

How to Delete a Windows Recovery Partition Click the link to go to the original page: Here === by Gary Newell Updated...
Read More
왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나?

왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나?

Web Server
Click the link to read the original article: 왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나? ====== 목차 들어가며 서문 위대한 자바스크립트의...
Read More
Vue.js 사용하는 이유 :: 마이구미

Vue.js 사용하는 이유 :: 마이구미

Web Server
Click the link to read the original article: Vue.js 사용하는 이유 :: 마이구미 ===== 이 글은 Vue, Angular, React 를 비교하는 글이...
Read More
Redis 설치 및 셋팅 [EC2] :: 마이구미

Redis 설치 및 셋팅 [EC2] :: 마이구미

Web Server
Click the link to read the original article: Redis 설치 및 셋팅 [EC2] :: 마이구미 ========== 이번 글은 Redis 설치 및...
Read More
1 2 3 4 23
cellular generations
Cellular Telecommunications

cellular generations

Click the link to read the original article: Here


The evolution of cellular communications networks is commonly known by 1G, 2G, 3G and 4G designations. We are currently in the fourth generation (4G). See also wireless LANwireless glossary and cellular vs. Wi-Fi.

4G – LTE
Starting in the 2011 time frame, GSM and CDMA carriers embraced LTE, which offers higher speeds than 3G networks. LTE embodies the design goals of the IP Multimedia Subsystem (IMS), which integrates all communications using the IP protocol (voice, video, email, Web, messaging, etc.). See LTE and IP Multimedia Subsystem.

4G – WiMAX
Sprint was the first carrier to offer a 4G cellular network in the U.S. Using the WiMAX technology, 4G service was rolled out to major cities in 2009, providing faster downloads than Sprint’s 3G service. See WiMAX.

4G – HSPA+
In late 2010, the ITU officially designated HSPA+ as a 4G technology, having previously defined it as 3G. See HSPA.

Launched after the turn of the century, the third generation features faster access to the Internet with downstream speeds up to 1 Mbps and more depending on the 3G version. The predominant 3G technologies on the GSM side are WCDMA and HSDPA with CDMA2000 on the CDMA side (see WCDMAHSPA and CDMA2000). 3G also embraces worldwide roaming for global travelers (see GAN).

The second generation refers to the digital voice systems of the 1990s, replacing analog phones and based on the TDMA and CDMA air interfaces. First deployed in Europe, GSM became the predominant TDMA-based cellular system worldwide. Data networks (GPRS, EDGE, IS-95B) were added and commonly called 2.5G technologies, enabling Internet access and email with slow downstream speeds up to approximately 200 Kbps. See GSMCDMAGPRSEDGE and IS-95.

1G – Analog Voice
Introduced in the late 1970s, the first cellular systems were analog voice. Years later, some 1G cellphones occasionally provided wireless data service to a laptop by connecting them to the laptop’s dial-up modem, but hookups were precarious, and when it worked, the data transfer rate was minuscule. See AMPSTACS and NMT.

Encyclopedia Banner


Encyclopedia Banner


Dual Support
If an iPhone 3G is in range of a 3G cell tower, it uses the higher speed of HSDPA. However, it throttles down to the lower-speed EDGE (E) channel if a 3G HSDPA channel is not available. See HSPA.
2G/3G Network Architecture
Cellular Telecommunications

2G/3G Network Architecture

Click the link to read the original article: Here
2G/3G architecture

The infrastructure of 2G and 3G cellular networks are similar. They comprise an air interface between the user’s mobile device and the base station and two core networks; one for circuit-switched voice and another for packet-switched data. In the subsequent 4G/LTE architecture, voice and data are both based on IP packets.

The Air Interface
The GERAN (GSM EDGE Radio Access Network) is the 2G air interface, and the UTRAN (Universal Terrestrial Radio Access Network) is the 3G interface. The air interface comprises the base stations (cell towers) and controlling equipment. The 2G base station is a Basic Transceiver Station (BTS) controlled by the Base Station Controller (BSC). The 3G base station is a Node B controlled by the Radio Network Controller (RNC).

Circuit Side
For the circuit side, the BSC or RNC connects to the Mobile Switching Center (MSC), which sets up and tears down the calls, handles text messages (SMS) and tracks users as they move from cell to cell. When a user arrives within an MSC’s jurisdiction, subscriber information is sent from the Home Location Register (HLR) database to the Visitor Location Register (VLR) within the MSC. The Gateway MSC (GMSC) connects the MSC to the external circuit-switched networks.

Packet Side
The counterpart to the MSC on the packet side is the Serving GPRS Support Node (SGSN), which manages the packet connection for the user. The Gateway GPRS Support Node (GGSN) provides the connection to the external packet networks. The GGSN also receives subscriber information from the HLR. Contrast with LTE architecture. See UMTS and cellular generations.

Encyclopedia Banner


2G and 3G Equipment
Voice is handled by the circuit-switched network, and data are handled by the packet-switched side.
11 Best PHP Frameworks for Modern Web Developers in 2018

11 Best PHP Frameworks for Modern Web Developers in 2018

Click the link to read the original article: Here


11 Best PHP Frameworks for Modern Web Developers in 2018

Best PHP Frameworks for Modern Developers

With PHP being the most popular server-side programming language to date, We have put together the best PHP frameworks for 2018 that have emerged which offer developers the ability to build more complex, secure, and well-rounded web applications faster than ever before. Frameworks for PHP come in all sorts of shapes and sizes and have targeted developers with different levels of experience, application needs, hosting capabilities, and development time-frames.

Contents [show]

Below is a quick summary of pros and cons for each framework. We’ve linked each framework for your convenience to read more about each one.

Best PHP frameworks Compared

For a Thorough 2018 update and revisit to this topic we decided to dig deeper and find what is not only the most used framework for 2018, but which is the utmost valuable? When surveying google Trends, it is explicit that Laravel still remains the most searched framework for all new PHP projects. Just have a look here:

Google Trends Graph of the best PHP Frameworks Compared

Taking it a step, further I wanted to see what authentic everyday coders as well as novices are learning / using on a day to day basis. We took the time to give a survey to our progressive subscribers and notably came back with over 7,500 results.

Our survey queried subscribers on in depth questions such as specific uses of authentication, session coding, caching methods, and routing, but the results listed below will just be overall use starting with the top being the top used php framework. What we must note is the survey doesn’t completely correlate with how our recommended list is in order of most recommended, but rather real data of how much each person uses each framework. Afterall, all coder’s typically get in the groove of a certain programming language then prefer that over others. some that end up using zend also incorporate their skills in network management. Those that combine zend or Laravel with a free syslog server (as seen here at ITT systems), have the best of both worlds.

PHP Framework Used for Project UseLaravelCode IgniterSymfonyZendYii 2CakePHPFuel PHPFatFreeAura43.7%12.5%13.6%14.9%

Framework Quantity
Laravel 3,177
Code Igniter 1,085
Symfony 990
Zend 907
Yii 2 373
CakePHP 402
Fuel PHP 172
FatFree 91
Aura 66

What are the Top Rated PHP Frameworks of 2018?

MVC Framework – Introduction

MVC Framework – Introduction

Click the link to read the original article: Here


The Model-View-Controller (MVC) is an architectural pattern that separates an application into three main logical components: the model, the view, and the controller. Each of these components are built to handle specific development aspects of an application. MVC is one of the most frequently used industry-standard web development framework to create scalable and extensible projects.

MVC Components

Following are the components of MVC −

Model View Controller


The Model component corresponds to all the data-related logic that the user works with. This can represent either the data that is being transferred between the View and Controller components or any other business logic-related data. For example, a Customer object will retrieve the customer information from the database, manipulate it and update it data back to the database or use it to render data.


The View component is used for all the UI logic of the application. For example, the Customer view will include all the UI components such as text boxes, dropdowns, etc. that the final user interacts with.


Controllers act as an interface between Model and View components to process all the business logic and incoming requests, manipulate data using the Model component and interact with the Views to render the final output. For example, the Customer controller will handle all the interactions and inputs from the Customer View and update the database using the Customer Model. The same controller will be used to view the Customer data.


ASP.NET supports three major development models: Web Pages, Web Forms and MVC (Model View Controller). ASP.NET MVC framework is a lightweight, highly testable presentation framework that is integrated with the existing ASP.NET features, such as master pages, authentication, etc. Within .NET, this framework is defined in the System.Web.Mvc assembly. The latest version of the MVC Framework is 5.0. We use Visual Studio to create ASP.NET MVC applications which can be added as a template in Visual Studio.

ASP.NET MVC Features

ASP.NET MVC provides the following features −

  • Ideal for developing complex but lightweight applications.
  • Provides an extensible and pluggable framework, which can be easily replaced and customized. For example, if you do not wish to use the in-built Razor or ASPX View Engine, then you can use any other third-party view engines or even customize the existing ones.
  • Utilizes the component-based design of the application by logically dividing it into Model, View, and Controller components. This enables the developers to manage the complexity of large-scale projects and work on individual components.
  • MVC structure enhances the test-driven development and testability of the application, since all the components can be designed interface-based and tested using mock objects. Hence, ASP.NET MVC Framework is ideal for projects with large team of web developers.
  • Supports all the existing vast ASP.NET functionalities, such as Authorization and Authentication, Master Pages, Data Binding, User Controls, Memberships, ASP.NET Routing, etc.
  • Does not use the concept of View State (which is present in ASP.NET). This helps in building applications, which are lightweight and gives full control to the developers.

Thus, you can consider MVC Framework as a major framework built on top of ASP.NET providing a large set of added functionality focusing on component-based development and testing.



Click the link to read the original article: Here



2011. 1. 7. 16:56


프레임워크란 이렇다고 누군가는 정의했다.


대부분의 프레임워크 정의에서 내포하고 있는 의미는 “애플리케이션 개발에 바탕이 되는 템플릿과 같은 역활을 하는 클래스들과 인터페이스의 집합“이다. 즉, 프로그램의 전체적인 구조와 흐름을 확정지으며, 프로그래머가 정의해야 할 메소드의 이름까지고 결정짓는 역할을 한다.

프레임워크란 것의 정의가 참 애매하고 사람마도 조금씩은 다른 것같다.

그래서 나같은 초짜는 더욱 햇갈리고, 오묘해진다.

경력과 연륜이 내게 더욱 구체적인 정의를 내려줄지는 아직 의문이다.


프레임워크에 대해서 구글링 중 에너지관리공단에 올라온 글을 발췌했습니다.

쉽게 이해하는데 도움이 될까 퍼왔습니다.

문제가 되면 삭제하겠습니다.



프레임워크는 공장과 같습니다.
옷 공장, 신발 공장, 만두 공장 등 공장마다 서로 다른 제품을 생산 합니다.
제품을 만들기 위해 어떤 재료를 사용 하냐에 따라 같은 제품일지라도 품질, 디자
인 등 여러 면이 달라집니다.
하지만 공장이라는 개념을 봤을 경우 공장은 재료를 준비하고 가공하고 생산 하는
일은 같은 원리입니다.

프레임워크도 같은 개념입니다. 애플리케이션을 구축할 때 모든 애플리케이션의 공
통적인 부분을 제공해줍니다.


예를 들면 웹 애플리케이션을 구축 한다고 예를 들겠습니다.

웹 애플리케이션을 구축하려면 우선 웹에 맞는 환경설정과 DB에 연결하는
부분, 사용자에게 보여주는 부분 등 모든 웹 애플리케이션의 공통적인 부분입니다.
이런 부분을 제공해주는 것이 프레임워크입니다.

그렇다보니 애플리케이션 구축 시간이 빨라지며 비용이 절감됩니다.


(비용 절감은 많은 것이 있겠지만 대표적인 것이 인력비용입니다.). 그래서 현재 애플리케이션 구축에 있어서 프레임워크를 이용하여 구축하는 사례가 많아지고 있습니다.
현재 많이 알려진 프레임워크는 MS사에서 개발한 “.NET” 프레임워크입니다.
“.NET” 프레임워크에서는 웹 환경에서도 개발 할 수 있도록 만들어진 프레임워크
입니다. 그래서 “.NET” 많은 웹 언어(JSP, PHP, ASP 등)를 사용 할 수 있게 되었
습니다. 하지만 많은 언어를 수용하다 보니 상당히 무겁습니다.


그리고 MS사의 특징이 오픈소스가 아닌 오프소스이며, 무료가 아닌 유료입니다.

그래서 “.NET” 프레임워크를 사용하게 되면 고정된 운영체제(윈도우 NT기반) 사용과 많은 메모리가
필요하며, 비용이 많이 들어간다는 단점이 있어서 현재 많이 개발되고 있는 않는

그래서 오픈소스이고 비용절감이 되는 프레임워크가 대두 되었고 그중 하나가 자바 기반을 제공해주는 스트럿츠 프레임워크가 대표적입니다.스트럿츠 프레임워크는 자카르타사에서 개발된 프레임워크입니다.
스트럿츠(STRUTS) 용어를 보면 “지주, 버팀목, 받침대” 라는 뜻을 갖고 있습니다.
그래서 스트럿츠라는 용어를 사용하게 된 것입니다.
스트럿츠 프레임워크는 자바 기반으로한 웹 언어인 JSP만을 위한 프레임워크입니다.

자바 기반이기 때문에 자바의 장점을 그대로 갖고 있습니다.

독립된 플렛폼 사용하여 운영체제에 구애 받지 않고, 오픈 소스라 개발에 필요한 부분을 수정하여
사용 할 수 있습니다.


그리고 무료배포를 한다는 것이 큰 장점 이며, 한 언어만 사용하다 보니 상당히 가볍습니다.

자바에서는 표준 프로토콜(TCP/IP, XML 등)을 사용하기 때문에 안정적입니다.

이런 장점 때문에 스트럿츠 프레임워크 기반으로 개발되는 추세입니다.

스트럿츠 프레임워크는 MVC(Model-View-Controller) 패턴 기반을 이용하여 개발되었습니다.

MVC 패턴은 이름 그대로 로직을 처리 해주는 Model 부분과 사용자에
게 보여주는 View 부분 그리고 Mode1 부분과 View 부분을 연결하고 제어하는 Controller 부분이 있습니다.
MVC 패턴을 이용하게 된 이유는 유지보수가 쉽고 빠른 시간에 애플리케이션을 구축 할 수 있는 장점이 있습니다.

그래서 MVC2 개발 방법이 나왔지만 재사용성이 떨어지는 단점이 있어서

그것을 보안하게 나오는 개발 방법이 스트럿츠 프레임워크 기반 개발 방법인 것입니다.

애플리케이션의 구축에 있어서 반은 개발기간에 사용되며, 반은 유지보수를 위해 사용되고 있습니다.

그 만큼 현재 개발되는 애플리케이션의 유지보수의 중요성이 대두 되고 있습니다.

유지보수가 잘 된다면 사용자 입장에서는 보다 안정적이고 효율적으로 애플리케이션을 사용 할 수 있는 것입니다.

그래서 유지보수가 쉽고 안정적인 애플리케이션을 구축하기 위해 MVC 패턴을 이용한 스트럿츠 프레임워크 기
반으로 개발되고 있습니다.

스트럿츠 프레임워크를 이용하여 개발 했을 경우의 장점을 게시판을 예를 들어 간단히 설명하겠습니다.
게시판 리스트를 보여주기 위해서 기존의 방법(Model 1)에서는 jsp 파일에서 보여
주기 위한 로직을 사용 했습니다.


즉, DB로부터 읽어온 데이터를 보여주기 위해 for문이나 while문을 이용하여 보여 주었습니다.

하지만 스트럿츠의 View 부분인 jsp 파일에서는 DB에서 읽어온

데이터를 가져오는 Model 부분의 처리 함수만 불러 오면 되는 것입니다.


이때 만약 게시판 리스트 개수를 수정 하겠다 하면 Model1 방식에서는 jsp 파일에서 수정해야 하는 불편이 있습니다.

(사실, 이거 하나 수정하는데도 해당 jsp파일을 읽어야 하는 불편이 있습니다.)

하지만 게시판 리스트를 불러오는 Model 부분의 처리 함수에서만 수정하면 됩니다.

이것만 봐도 유지보수가 쉽게 알 수 있습니다.

만약 게시판의 디자인을 수정 시 Model 1방식에는 잘못하다간 게시판의 로직부분과 연결되어 있어 수정 또는 다른 오류 상황이 발생할 수 있는데 스트럿트에서는 보여주는 부분과 로직 부분이 완전히 분리 되어 있어서 이런 상황이 발생 되지 않는 안정성을 갖고 있습니다.

잠시 유지보수 중요성에 대하여 간단히 설명하겠습니다.
만약 아파트에서 산다고 가정하겠습니다. 아파트에서 살다가 벽에 금이가고 물이 센다면 이럴 경우 어떻게 하십니까? 사비를 들여 해결 할 수 있는 문제가 아닙니다. 그 아파트를 시공한 회사에 의뢰를 하게 됩니다. 공사가 끝나고 그 공사비를 받는 것은 아닙니다.

그건 그 시공사에서 그 아파트의 유지보수 부분인 것입니다. 이렇듯 애플리케이션도 같습니다. 애플리케이션이 구축 했다고 끝나는 것이 아니라 사후에 발생되는 문제점을 해결하기 위한 유지보수까지 되어야 애플리케이션 구축이 끝난 것입니다. 문제점이 발견되었을 경우 얼마나 신속하고 정확하게 해결하는 것이 유지보수 방법 중 하나입니다.

그래서 개발자는 유지보수의 중요성을 느끼게 되었고 나온 방법이 MVC 패턴을 이용한 MVC2 기반 개발 방법이며, MVC 2 기반 개발 방법의 단점을 보안하여 나온 방법이 스트럿츠 프레임워크를 이용한 개발 방법입니다.

–문슈리뷰 : java로 개발할 당시 , 개발을 배울 당시 프레임워크의 중요성을 여러번 배웠고,

그로 인해 mvc2 패턴의 개발 방식으로 프로젝트를 진행하였다.

델파이를 시작하고 다시 처음으로 회귀하여 ,

한 소스 코드내에서 모듈과 콘트롤 , 뷰를 한번에 처리하고 있다.

이러면 유지보수나 여러면에서 불편한 점이 있지만, 현재 기간내 빨리 만들어서 배포하여야

한다는 핑계로 쭈욱 현 상황이 진행되고 있다.

보다 더 스킬을 업해서 다음 프로젝트 때는 이런 면에서 확실히 정리된 프로젝트에 투입해서

배우고 싶다.

ORM 프레임워크(Object-relational mapping)

ORM 프레임워크(Object-relational mapping)

Click the link to read the original article: Here


ORM 프레임워크(Object-relational mapping)

Jayzzz 2017.10.11 15:34

 ORM은 데이터베이스와 객체 지향 프로그래밍 언어간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다. 객체 관계 매핑이라고도 한다. 객체 지향 언어에서 사용할 수 있는 ‘가상’ 객체 데이터베이스를 구축하는 방법이다.

ORM(Object-relational mapping)을 단순하게 표현하면 객체와 관계와의 설정이라 할 수 있다. ORM에서 말하는 객체(Object)의 의미는 우리가 흔히 알고 있는 OOP(Object Oriented Programming)의 객체를 의미한다는 것을 쉽게 유출할 수 있다. 그렇다면 그 관계라는 것이 의미하는 것은 무엇일까? 지극히 기초적인 이야기지만 개발자가 흔히 사용하고 있는 관계형 데이터베이스를 의미한다.

ORM개념이 나온 이유는 코딩의 반복적인 부분을 줄일 수 있고 SQL의 의존적인 코딩에서 벗어나 생산적인 코딩이 가능하며 유지보수가 편의하기 때문이라 할 수 있다.



ORM 등장배경


1. Model1 개발방식


~ 초기 데이터베이스 개발모델

~ JSP, Servlet에서의 persistence layer처리

~ 장점 : 배우기 쉽다. 빠른 시간 내에 개발 할 수 있다.

단점 : 복잡도 증가, 유지보수가 어렵다.

~ 비객체지향적 프로그래밍



2. Model2 개발방식


~ MVC모델에서의 데이터베이스 개발 모델

~ DAO, EJB(CMP)를 이용한 Persistence layer 개발

~ 장점 : MVC 모델 적용이 가능하다. 객체 단위의 개발이 가능하다.

단점 : MVC/EJB에 대한 이해도가 필요하다. 유지보수가 어렵다.



3. ORM 개발방식


~ Persistence Layer를 담당하는 Framework 개발모델

~ iBatis, Hibernate와 같은 persistence를 담당하는 Framework

~ 장점 : 객체지향적 프로그래밍이 가능하다. 쿼리를 이용하게 business layer에 집중 할 수 있다.

단점 : Framework 이해도가 필요하다.




ORM프레임워크 장점


~ 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.

* 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다.

* 각종 객체에 대한 코드를 별도로 작성하기 때문에 코드의 가독성을 올려준다.

* SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 인해 상산성이 증가한다.


~ 재사용 및 유지보수의 편리성이 증가한다.

* ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용 할 수 있다. 때문에 모델에서 가공된 데이터를 컨트롤러에 의해 뷰와 합쳐지는 형태로 디자인 패턴을 견고하게 다지는데 유리하다.

* 매핑정보가 명확하여 ERD를 보는 것에 대한 의존도를 낮출 수 있다.


~ DBMS에 대한 종속성이 줄어든다.

* 대부분 ORM 솔루션은 DB에 종속적이지 않다.

* 종속적이지 않다는 것은 구현 방법 뿐만아니라 많은 솔루션에서 자료형 타입까지 유효하다.

* 프로그래머는 Object에 집중함으로 극단적으로 DBMS를 교체하는 거대한 작업에도 비교적 적은 리스크와 시간이 소요된다. 또한 자바에서 가공할 경우 equals, hashCode의 오버라이드 같은 자바의 기능을 이용할 수 있고, 간결하고 빠른 가공이 가능하다.


ORM프레임워크 단점


~ 완벽한 ORM으로만 서비스를 구현하기가 어렵다.

* 사용하기는 편하지만 설계는 매우 신중하게 해야한다.

* 프로젝트의 복잡성이 커질경우 난이도 또한 올라갈 수 있다.

* 잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있다.

* 일부 자주 사용되는 대형 쿼리는 속도를 위해 SP를 쓰는 등 별도의 튜닝이 필요한 경우가 있다.

* DBMS의 고유기능을 이용하기 어렵다.

(하지만 이건 단점으로만 볼 수는 없다. 특정 DBMS의 고유기능을 이용하면 이식성이 저하된다.)


~ 프로시저가 많은 시스템에서는 ORM의 객체 지향적인 장점을 활용하기 어렵다.

* 이미 프로시저가 많은 시스템에선 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하나 리스크가 많이 발생 할 수 있다.





ORM이 없을때는 개발자가 개발을 하며 DB에 접근하기 위해서 SQL Query를 직접 만들었다. 여기서 문제점은

1. SQL문법을 숙지해야한다는 점(물론 숙지해야하는 것은 당연하지만 SQL문법 이유로 개발이 지체되는 것은 문제라고 볼 수 있다.)

2. 개발 코드와 DB가 서로 종속되게 한다.


이러한 문제점을 해결하기 위해 ORM이 등장하였고 ORM의 등장으로

1. SQL문법에서 자유로워 졌고

2. 개발 코드와  DB를 독립하므로 유지보수가 편리해져서 객체지향의 의도에 부합하게 되었다.


즉 객체지향 프로그래밍에서 데이터베이스를 관리 할때 데이터베이스 언어(SQL)를 숙지하고 쿼리로 인한 코드 가속석 저하, 프로그램과 DB관리를 독깁하기 위함과 객체를 저장하는 문제 등으로 ORM프레임워크가 등장하게 되었다.

ORM 이란 무엇인가?

ORM 이란 무엇인가?

Click the link to read the original article: Here


ORM(Object-Relational Mappings)라는 건 과연 무엇일까?

근래 많이 보고 듣는 단어이고 ORM Framework이나 Tool이니 하면서 Hibernate나 iBatis, Toplink등등의 이름들도 많이 듣게 된다. 과연 이 ORM이라는 것이 무엇이길래 왜 이렇게 많은 사람들의 입에 오르내리는 것일까?

ORM이라는 것을 단순하게 표현해보자면 객체와 관계와의 설정? 정도일까? 그럼 여기서 말하는 객체라는 것은 우리가 흔히 말하는 OOP(Object-Oriented Programming)의 그 객체를 이야기 하는 것 이라면, 과연 관계라는 것이 의미하는 것은 무엇일까? 뭐 지극히 기초적인 이야기지만 우리(개발자)가 흔히 사용하고 있는 관계형 데이터베이스를 의미한다.

그렇다면 도대체 무엇이 문제여서 객체와 관계형 데이터베이스 간의 매핑을 지원해주는 Framework이나 Tool들이 나오는 것일까? 이미 우리는 OOP를 하면서 객체와 관계형 데이터베이스를 모두 잘 사용하고 있지 않은가? 그런데도 굳이 이런 새로운 개념들이 나오게 되는 이유는 흔히 말해서 Back to basics 라고 볼 수 있겠다. 즉, 보다 OOP다운 프로그래밍을 하자는 데 에서부터 출발한 것이다.

그럼 과연 무엇이 문제였던 것일까? 생각해보면 당연하게 문제가 있을 수 밖에 없다고 생각되어진다. 스스로 한번 생각해보자. 우리가 어떤 어플리케이션을 만든다고 할 때 관련된 정보들은 객체에 담고 있게 된다. 많이들 예를 드는 주소록을 만든다고 생각을 해보자. 일단은 주소록의 주체가 될 사람이라는 객체가 있다고 가정해보면 주민등록번호, 이름, 키, 몸무게 등등이 저장될 것이다. 그리고 주소라던지 전화번호등이 저장 될 다른 객체(여기서는 주소만을 가정해보고 주소라는 객체라고 가정한다.)도 있게 될 것이다. 그럼 이것을 영구적으로 저장하기 위해서 파일이나 데이터베이스에 입력을 한다고 하면, 객체와 객체들의 관계를 데이터베이스의 테이블에 저장을 하게 된다는 말과 동일하게 된다. 즉 table들에 객체가 가지고 있던 정보를 입력하고 이 table들을 join과 같은 sql query문을 통해서 관계를 설정해주게 된다. 여기서 문제는 이 table들과 객체간의 이질성이 발생을 한다는 것이다.

보통 ORM Framework들은 이러한 이질성을 해결하기 위해서 객체와 table간의 관계를 설정하여 자동으로 처리를 해준다는 것이다. 개인적으로 많은 ORM Framework를 접해본 것이 아니라서 어떤 방법들이 사용되는지는 잘 모르겠지만, 예를 들어서 눈으로 확인해보자면 다음과 같은 Person이라는 객체가 있다고 가정한다.


public class Person {

private String name;

private String height;

private String weight;

private String ssn;

// implement getter & setter methods


iBatis의 경우에는 다음과 같이 mapping file내에서 해당 query의 결과를 받을 객체를 지정해 줄 수 있다.

<select id=”getPerson” resultClass=”net.agilejava.person.domain.Person”>

SELECT name, height, weight, ssn FROM USER WHERE name = #name#;


즉, 이 getPerson라고 정의된 query의 결과는 net.agilejava.person.domain의 Person객체에 자동으로 mapping 되는 것이다. Hibernate의 경우에는 mapping 파일에서 다음과 같이 표현을 해준다.


<class name=”net.agilejava.person.domain.Person” table=person”>

<id name=”name” column=”name” />

<property name=”height” column=”height” />

<property name=”weight” column=”weight” />

<property name=”ssn” column=”ssn” />




위 두개의 Framework의 예시를 보면 알 수 있듯이 setter 메소드가 있다면 객체에 결과를 set하는 작업들이 따로 필요한 것이 아니라 자동으로 setting 되는 것이다. 물론 여기에 추가적으로 1:m 이나 m:1 등의 관계들이 형성되면 추가적인 작업이 필요하긴 하지만 어쨌든 일단 눈에 보이는 간단한 부분은 처리가 되는 것을 볼 수 있다. 물론 반대의 경우에도 객체를 던져주면 ORM Framework에서 알아서 get을 해와서 해당하는 column에 넣어주게 된다.


어떻게 보면 더 복잡해 보일 수 도 있는 ORM이지만 막상 사용해보면 그 편리함에 몸을 떨게 된다. 단순하게 get/set만 해주는게 목적이 아니라 객체지향적인 시스템을 위해서 관계형데이터베이스의 설계부터 변화를 주고, 설계된 데이터베이스와 객체와의 관계에 대한 설정 등을 포함하여 보다 객체지향적인 시스템의 완성을 위한 도구라고 말할 수 있겠다. 물론 ORM이라는 것이 흔히 말하는 silver bullet은 절.대. 아니다. 이 녀석이 쓰여서 이득을 볼 수 있는 부분이 존재할 것이며, 쓰지 않아서 이득을 볼 부분이 존재 할 것이다. 많은 사람들이 ORM에 대하여 우려하고 있는 부분은 객체지향적으로 설계되지 않은 데이터베이스에서의 사용에 따른 폐혜라고 생각한다. 이미 데이터베이스 중심적인 사고를 통하여 만들어 놓은 데이터베이스에 ORM을 도입을 해서도 분명 이점이 있긴하겠지만, 그에 비해서 개발자들의 학습곡선 이라던지, 기존에 존재하는 코드나 시스템들과의 연계 또는 유지보수적인 측면, 그리고 성능 등에서 생각해보면 부정적으로 볼 수 밖에 없다. 즉, 전체적인 시스템의 분석,설계 단계에서부터 객체와 데이터베이스를 따로 생각하는 것이 아니라 하나의 덩어리로 인지하고 양쪽 모두를 고려한 설계를 해나갈 수 있을 때, ORM은 보다 좋은 모습을 보여주고 각광을 받을 수 있을 것이다

출처 : evilimp‘s Blog

출처: http://civan.tistory.com/156 [행복만땅 개발자]

[Agile] 데일리 스크럼(Daily Scrum)이란?
Tech News

[Agile] 데일리 스크럼(Daily Scrum)이란?

Click the link to read the original article: Here


데일리 스크럼(Daily Scrum)을 잘 하는 방법
데일리 스크럼이란 무엇인가(개념과 일반적인 규칙)
데일리 스크럼을 하는 이유(필요성)
데일리 스크럼을 잘 도입하는 방법

[들어가기 전] 데일리 스크럼을 주제로 선택한 이유

‘애자일 방법론’에 대해 이해하기 위해서 조금 더 구체적인 소재를 골랐다.
보통은 추상적 -> 구체적(개론 -> 강론)으로 설명을 진행한다.
어떤 소재를 이해하는데 있어서 위와 같은 방법은 좋은 접근법이 아니다.
만약에 대상(소재) 자체가 불확실성이 없어서 수학 공식처럼 명확하게 설명이 가능하다면 위의 방법처럼 순차적으로 설명하는 방식이 맞다.
구체적 -> 추상적 -> (구체적+추상적)
하지만 대상(소재)이 복잡하고 불확실한 경우라면
1) 처음에 구체적인 것을 이해한 후
2) 그 다음에 추상적인 것을 접하면서
3) 추상적인 것과 구체적인 것을 본인 스스로 능동적으로 서로 융합해서 이해하려고 하는 것이 좋다.
처음에 구체적인 것을 통해 이해를 하고, 그 후에 추상적인 내용이 나오면 추상적인 서로 다른 레벨에 있는 두 가지를 서로 융합하려고 노력한다.
즉, 계속해서 추상적인 것과 구체적인 것과의 관계를 생각하게 되면서 본인 스스로가 능동적으로 학습하게 되는 것이다.
데일리 스크럼은 간단하기 때문에 다루기 쉬운 주제다.
누구나 쉽게 배워서 할 수 있는 느낌이다.
실생활과 연관성이 깊다.
SW가 아닌 쪽에서도 도입할 수 있다.
데일리 스크럼이란?

스크럼 방법론에서 쓰이는 용어로, 날마다하는 짧은 회의를 뜻한다.

매일 현재 상태를 업데이트하고 조율하는 것 을 의미한다.
다른 애자일 방법론인 XP에서는 스탠드업 미팅이라고 하는 것도 있다. 스탠드업 미팅에서는 회의를 서서하는 것이 필수적이다.
데일리 스크럼의 일반적인 규칙과 필요성

데일리 스크럼의 일반적인 규칙
정해진 시간은 없다.(꼭 아침에만 해야 되는 것은 아니다.) 단, 최대 15분 이내에 마친다.
꼭 서서 하지 않아도 된다.
팀원들이 모두 돌아가면서 아래의 질문에 대답한다.
지난 데일리 스크럼부터 지금까지 내가 완수한 것이 무엇인가
다음 데일리 스크럼까지 내가 하기로 한 것이 무엇인가
현재 장애가 되고 있는 것(곤란하고 어려운 것)이 무엇인가
데일리 스크럼의 필요성
그렇다면 왜 업데이트/조율을 매일해야 하는가?

우리가 진행하는 프로젝트의 불확실성이 높으면 매일 매일 상태를 업데이트할 필요성이 높아진다.
프로젝트에 대해 서로 더 많이 알고 계속해서 조율을 해야지만 불확실성이 줄어들기 때문이다.
하지만! 사람들은 일반적으로 가만히 놔두면 서로 업데이트/조율을 하지 않는다.
왜냐하면? 학교에서 그렇게 훈련을 받았으니까!
학교에서는 불확실한 상황에 대해서 어떻게 대처해야 될지에 대해서 알려주는 것이 아니라 확실한 상황에서 어떻게 준비할까에 대해서 가르친다.
그래서 사람들은 보통, 주어진 상황에서 계획을 짜서 역할을 나누고 각자가 맡은 부분을 마지막에 합친다. 이게 과연 협력일까?
관련된 재미있는 일화
사람들이 일을 나눠서 하는 것에 대해 협력이라고 착각하는 일화
상황) SW 개발을 하려는 대학생으로 구성된 팀을 멘토링하던 중 ‘린 스타트업’(Lean Startup, 회사를 운영하는 것을 해나가는 전략적인 방법)에 대해서 이번 주에 스터디를 해보면 좋을 거 같다는 조언을 해주었다.
그 다음 주에 학생들이 발표를 위한 ppt를 준비했다.
첫 번째 학생 발표 시작, ‘린’
도요타 자동차 회사에 대한 얘기
린 메소돌로지(도요타 자동차 회사의 혁신적인 생산 방식을 미국에서 비슷하게 만든 것) 등
두 번째 학생 발표 시작, ‘스타트업’
창업이란 무엇인가에 대한 얘기
지원, 기획서 등
‘린 스타트업’은 하나의 개념인데, 그거에 대해서는 아무도 공부하지 않았다.
(불확실성을 줄이는 것 == 일을 잘 나누는 것)..?
대부분의 사람들은 초반부에 일을 나누려고 한다.
하지만 초반부는 프로젝트에 대한 정보가 적을 때이기 때문에 일을 잘 나누기가 어렵다.
그래서 대부분의 사람들은 일을 비효율적으로 나누게 된다.
프로젝트에 대한 정보가 많을 때인 프로젝트가 끝날 때 일을 가장 잘 나눌 수 있다.
하지만 프로젝트가 끝날 때 일을 잘 나누는 것은 소용이 없다.
그러므로 일을 잘 나누는 것이 중요한 것이 아니라 계속해서 서로를 체크하고 조율할 수 있는 데일리 스크럼을 통해 불확실성을 줄일 수 있다.
데일리 스크럼의 장점과 궁극적인 목적

데일리 스크럼의 장점
데일리 스크럼을 하면 무슨 장점이 있는 거지? 굳이 얼굴을 보면서 해야하나?
메일이나 스프레드시트를 사용하면 되지 않을까
아니면 일주일에 한 번씩 워드에 적어서 팀 전체에 공유하면 되지 않을까
문자/전화 커뮤니케이션 VS 음성 + 얼굴 커뮤니케이션
문자/전화 커뮤니케이션
사람들이 기본적으로 문자/전화 커뮤니케이션은 인류의 역사에서 짧은 시간동안 이루어진 것이다.
이런 text로 된 것을 통한 커뮤니케이션은 ‘비동기적인 커뮤니케이션’에 속한다.
text로 적으면 어느 부분에서 문제가 되는 것인지 알기가 어렵다.
학습이 느리고 신뢰를 만들기 어렵다.
text 작성을 위한 추가적인 노력이 필요하다.
음성 + 얼굴 커뮤니케이션
사람들은 음성과 함께 얼굴을 보면서 하는 소통이 편하고 익숙하다
얼굴을 보면서 소통하는 것이 신뢰를 만들기가 쉽다.
즉각적인 피드백 을 통해서 학습을 더 많이, 더 빨리 할 수 있다.
어느 부분에서 상대방의 마음에 안드는지 바로 알 수 있다.
나의 말에 대한 반응을 바로 인지하여 피드백을 받을 수 있다.
즉, 이를 통해 서로를 잘 이해할 수 있고 협력에 도움이 된다.
얼굴을 보면서 하는 데일리 스크럼의 장점
애자일에서는 협력을 중요시하는데 이를 위해서는 협력이 잘 되는 구조가 필요하다. 즉, 데일리 스크럼을 이용하면 협력이 잘 될 확률이 높아지는 것이다.
또한, 데일리 스크럼은 일종의 리츄얼(Ritual)이다. 즉, 데일리 스크럼을 통해 같이 이야기하는 방법을 훈련 하는 효과과 있고 매일 모여서 이야기하는 것으로 ‘우리는 같은 팀이지’라는 생각을 무의식적으로 갖게 만든다.
얼굴을 보면서 소통함으로써 신뢰 를 만들기가 쉽고, 즉각적인 피드백 을 통해서 학습 을 더 많이, 더 빨리 할 수 있다.
사람들이 데일리 스크럼에 대해 생각하는 오해, 함정
(데일리 스크럼 == 정보 전달을 위한 회의)..?
만약에 데일리 스크럼의 목적을 정보 전달이라고만 생각한다면 데일리 스크럼이 필요가 없다.
이런 목적을 가지고 데일리 스크럼을 진행하면 회의가 굉장히 삭막해진다.
즉, 대화가 아닌 보고가 된다.
데일리 스크럼에는 사회적인 자본(Social Capital) 즉, 서로 간의 네트워크와 신뢰를 키우는 것이 포함되어 있다.
데일리 스크럼을 통해 서로 소통하는 법, 대화하는 법, 협력하는 법을 훈련할 수 있다.
데일리 스크럼의 궁극적인 목적
데일리 스크럼을 할 때 잘 안되는 경우
정보 전달로만 데일리 스크럼을 다룬다.
누군가가 데일리 스크럼을 도입할 때 그냥 책대로, 규칙대로만 진행한다.
예를 들어, ‘나 데일리 스크럼이라는 거 알아요. 이거 좋은데 우리 한 번 적용해봅시다.’
이런 식으로 데일리 스크럼이 진행되면 그냥 하면서 흐지부지된다. 점점 규칙이 흐려지면서 변질된다.
데일리 스크럼을 성공적으로 하는 경우
예를 들어, ‘아 우리 팀이 좀 소통이 부족하다는 걱정이 있어요. 다들 어떻게 생각하시나요? 우리 어떻게 하면 좋을까요? 데일리 스크럼이라는 것을 아는데 이 방법을 통해서 어떤 효과를 가져올 수 있을까요?’
데일리 스크럼을 하면서 일주일에 한 번 정도는 ‘요즘 우리의 데일리 스크럼은 어떤가’, ‘데일리 스크럼을 어떻게 바꿔나가면 좋겠는가’를 얘기하면 좋은 변화가 생긴다.
즉, 데일리 스크럼을 잘하기 위해서는 이것을 도입하는 과정에서 협력적이고 피드백(애자일의 원리)을 통해서 도입해야한다
데일리 스크럼이라는 것이 있으니까 쓴다는 생각이 아니라, 이 방법을 통해 어떤 효과를 가져오려고 하는 것인지에 대해 고민해야한다.
즉 그 효과를 가져오기 위해서 우리는 어떻게 해야되는가를 고민해야 하는 것이지, 데일리 스크럼을 도입하기 위해서 우리가 어떻게 해야되는지를 고민해선 안된다.
이런 과정을 통해서 제대로 데일리 스크럼이 도입되면 ‘우리가 더 잘하고 있구나’라는 생각을 하게 된다.
관련된 Post
애자일 방법론이란 무엇인가? 애자일 방법론의 핵심은 무엇인가?에 대해 알고 싶으시면 애자일이란을 참고하시기 바랍니다.
애자일 자격증의 종류와 그 효용 가치에 대해 알고 싶으시면 애자일 자격증을 참고하시기 바랍니다.
TDD(테스트 주도 개발)의 개념과 효과에 대해 알고 싶으시면 TDD(테스트 주도 개발)란을 참고하시기 바랍니다.
짝 프로그래밍(Pair Programming)의 개념과 효과에 대해 알고 싶으시면 짝 프로그래밍(Pair Programming)이란을 참고하시기 바랍니다.

애자일 키워드 – 김창준, 강재영 진행
Ten Tips to make your Daily Scrum more effective

How to Run a Successful Scrum Meeting with a Remote Team


How to Delete a Windows Recovery Partition

How to Delete a Windows Recovery Partition

How to Delete a Windows Recovery Partition

Click the link to go to the original page: Here


Before you decide you want to delete a Recovery Partition, you should understand why they exist, what they are used for, and how they are created.

Once in a while (that is, it’s rare, but it does happen) the section of your hard drive that stores Windows and lets your computer start up, becomes corrupted and won’t work. That doesn’t mean the hardware is bad, it just means the software needs some fixing and that’s what the Recovery Partition is for.

Why Would You Want to Delete Windows Recovery Partitions?

Disk Management

 Disk Management.

Obviously (or maybe it’s not obvious), if the physical drive gets ruined (flood, fire) then the ball game is over. Your recovery partition, however, can live on a different drive on the same computer or an external drive stored elsewhere which can be used to get your computer up and running again and more importantly save your precious data.

In the image you will notice that my computer has 2 drives attached to it called disk 0 and disk 1.

  • Disk 0 is a solid state drive (SSD). That means it’s fast, but doesn’t have a lot of room on it. The space on an SSD should be used for storing commonly used files and the Windows operating system as this will improve performance.
  • Disk 1 is a standard hard drive with lots of free space. As the recovery partition is something that will very rarely be used it is a good idea to move it from disk 0 to disk 1.

In this guide I will be showing you a free software tool called Macrium Reflect which can be used to create a recovery partition on another drive. (There is an optional premium version which you can pay for should you wish to do so).

I will also show you how to remove the recovery partitions created by Windows.

Create Recovery Media
Create Full Windows Disk Image

 Create Full Windows Disk Image.

Windows provides a basic set of tools for creating a system recovery drive but for more control it is often better to use dedicated software.

Macrium Reflect is a commercial tool which has a free version and a paid for version. The free version works on all versions of Windows from XP up to Windows 10 and can be used to create a bootable USB drive or DVD, a backup set which can be stored to a partition on your hard drive, external hard drive, USB drive or a set of DVDs.

Restoring using Macrium is very straight forward. Simply insert the bootable recovery drive and then select the device where the backup is stored.

There are a number of good reasons to use this approach.

  1. You can create recovery media that isn’t reliant on Windows.
  2. You can store the backups on external media so if your hard drive fails you will still be able to restore your system when you get a new hard drive.
  3. You can remove the Windows recovery partitions.

Creating a recovery drive and system image is good for creating media that you can recover from in a state of complete emergency.

It is a good idea, however, to create a backup of your main documents and other files using standard backup software. If you need help, this guide for Backup Maker shows how to backup files and folders for free using Windows.

How to Remove the Windows Recovery Partition

Delete Windows Recovery Partition

 Delete Windows Recovery Partition.

Normally the steps to delete a partition are as follows:

  1. Right-click the Start button.
  2. Click Disk Management.
  3. Right-click the partition you wish to delete,
  4. Choose Delete Volume.
  5. Select Yes when warned that all data will be deleted.

Unfortunately this doesn’t work for Windows Recovery partitions. The Windows Recovery partitions are protected and so right clicking on them has no effect at all.

To delete the recovery partition follow these steps:

  1. Right click on the Start button.
  2. Click Command Prompt (Admin).
  3. Type diskpart.
  4. Type list disk.
  5. A list of disks will be displayed. Note the number of the disk which has the partition you wish to remove. (If in doubt open disk management and look there, see steps above).
  6. Type select disk n (Replace n with the disk number with the partition you wish to remove).
  7. Type list partition.
  8. A list of partitions will be displayed and hopefully you should see one called Recovery and it is the same size as the one you wish to remove.
  9. Type select partition n (Replace n with the partition you wish to delete).
  10. Type delete partition override.
  11. The recovery partition will now be deleted.

Note: Be very careful when following these instructions. Deleting partitions removes all data from that partition. It is incredibly important to select the correct partition number on the correct disk.

Expanding a Partition to Use the Unallocated Space

Extend Windows Partition

 Extend Windows Partition.

Deleting a partition will create a section of unallocated space on your drive.

In order to use the unallocated space you have two choices:

  • Format the partition.
  • Extend another partition, such as the Windows partition.

You will need to use the Disk Management tool to do either of these things.

To open the disk management tool follow these steps:

  1. Right click on the Start button.
  2. Choose Disk Management.

To format the partition and use it as somewhere to store data follow these steps:

  1. Right click on the unallocated space and choose New Simple Volume.
  2. A wizard appears. Click Next to continue.
  3. A window appears. Choose how much space the new volume should use out of the unallocated space.
  4. To use all of the space leave the default and click Next or to use some of the space enter a new number and click Next.
  5. You will be asked to assign a letter to the partition. Choose the letter from the drop down.
  6. Finally you will be asked to format the drive. The default file system is NTFSbut you can change it to FAT32 or another file system if you so wish.
  7. Enter a volume label and click Next.
  8. Finally click Finish.

If you want to extend the Windows partition to use the space then you need to know that the unallocated space must appear to immediately to the right of the Windows partition within the Disk Management tool. If it doesn’t then you will not be able to extend into it.

To extend the Windows partition:

  1. Right-click the Windows Partition.
  2. Click Extend Volume.
  3. A wizard appears. Click Next to continue.
  4. The partition to extend into will be automatically selected.
  5. If you only want to use some of the unallocated space you can reduce the size using the box provided or simply click Next to use all of the unallocated space.
  6. Finally click Finish.

The Windows partition will now be resized to include the extra space.

왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나?
Web Server

왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나?

Click the link to read the original article: 왜 43%의 프론트엔드 개발자들은 Vue.js를 배우고 싶어하나?



최근 Code School의 창업자이자 명강사인 Gregg이 Vue.js 공식 소개 영상을 촬영하였습니다. 쉬운 설명과 짜임새 있는 강의 구성을 잘해서 개인적으로 많이 좋아하는 강사인데요. 이렇게 유명한 교육자가 Vue.js 진영으로 넘어왔다는 건 정말 기쁜 소식인 것 같습니다.

아래의 글은 얼마 전에 Gregg이 Vue.js의 공식 소개 영상을 글로 풀어놓은 미디엄 기사를 번역한 글입니다. 왜 전 세계 43%의 프런트엔드 개발자들이 뷰를 배우고 싶어 하는지 체감할 수 있는 글입니다. 가볍고 유연한 Vue.js 프레임워크의 특징과 배우기 쉬운 점을 가벼운 설명으로 잘 녹여내었죠.

프런트엔드 개발을 시작하시는 분들에게 좋은 정보가 되었으면 좋겠습니다.


전 세계 웹 개발자를 대상으로 한 2017년 자바스크립트의 현황조사에 따르면 Vue.js(이하 뷰 약칭)는 프런트엔드 개발자들이 가장 배우고 싶어 하는 프런트엔드 프레임워크입니다.

왜 이렇게 뷰가 선풍적인 인기를 끌고 있는지 제 생각을 나눠보려고 합니다. 아래에서 뷰로 간단한 앱을 만들어볼 거예요.

저는 최근에 에반 유(Vue.js 창시자), 크리스, 사라, 아담과 함께 뷰 소개 비디오를 만들었습니다. 소개 비디오는 여기서 찾으실 수 있구요. 아래의 글은 이 영상을 글로 풀어낸 것입니다.

위대한 자바스크립트의 진화

아마 다들 아시겠지만 자바스크립트는 지난 10년간 굉장히 많이 성장해왔어요. 서버 쪽에서 처리되던 코드들이 거의 다 브라우저로 넘어왔죠. 브라우저에서 처리해야 할 코드들이 많아지면서 프레임워크가 점점 더 그 코드들을 체계적으로 관리하게 되었습니다.

angular, react, vue.js

위에 보시는 프레임워크 앵귤러, 리액트, 뷰 중에 어떤 게 더 낫다 라고 얘기하지 않을 겁니다. 하지만, Vue.js 공식 문서를 보시면 세 개의 프레임워크가 잘 비교되어 있으니 참고해보세요.

뷰는 진입 장벽이 낮고, 유연하고, 성능이 우수하고, 유지 보수와 테스팅이 편리한 자바스크립트 프레임워크입니다. 뷰는 또한 점진적인 프레임워크를 지향합니다. 이는 웹 애플리케이션 전체를 프레임워크로 구조화하지 않아도 웹 애플리케이션의 작은 부분에만 적용하여 특정 화면에 더 나은 사용자 경험을 제공할 수 있는 걸 의미해요.

아니면 웹 애플리케이션 전체를 처음부터 뷰로 구현할 수 있죠. 뷰는 거대한 규모의 애플리케이션을 개발할 수 있게 핵심 라이브러리와 주변 생태계를 제공합니다. 점진적인 프레임워크로서의 vue.js

다른 프런트엔드 프레임워크처럼 뷰는 재사용이 가능한 컴포넌트로 웹 페이지를 구성할 수 있습니다. 각각의 컴포넌트는 각 페이지 영역을 표시하기 위해 필요한 HTML, CSS, 자바스크립트를 갖고 있죠. vue.js 컴포넌트로 구성한 웹 페이지 구조

첫 번째 프로젝트 시작하기

뷰를 아직 사용 안 해보신 분들을 위해 뷰로 코딩하는 느낌이 어떤 건지 보여드리려고 합니다. 그리고 문법도 간단히 한번 살펴볼께요. 정말 자세한 내용은 다루지 않을 겁니다. 다만, 뷰의 주요 컨셉이 어떤 건지 알아볼게요.

대부분의 자바스크립트처럼 우리도 페이지에 데이터를 표시하는 것으로 시작해보겠습니다. 데이터 집어넣기

위 그림처럼 뷰로 ‘Boots’라는 데이터를 ‘X’에 넣고 싶으면 아래와 같이 구현합니다. vue.js 인스턴스로 표현하기

위에서 보시는 것처럼 뷰 라이브러리를 불러와서 뷰 인스턴스를 생성하고, ‘app’이라는 화면 요소에 연결하였습니다. 여기서 el은 인스턴스가 뿌려질 화면 요소를 의미합니다. 그리고 data 안에 표시하고 싶은 값을 정의하여 화면에 }}로 연결했죠.

위 코드를 동작시키면 아래와 같이 나옵니다. vue.js 인스턴스 결과화면

여기서 특별한 건 없어요. 다만 데이터가 변할 때 뷰의 마법이 시작됩니다. 제가 이제 개발자 도구의 콘솔 창으로 가서 product의 값을 변경해볼게요. 어떤 일이 일어나는지 보세요. 콘솔에서 데이터 변경

뷰는 리액티브(Reactive)합니다. 이 말은 웹 페이지 상에 표시된 데이터가 변할 때 뷰에서 다 알아서 그 변경을 처리하는 것을 의미합니다. 이 동작은 문자열뿐만 아니라 모든 유형의 데이터에 모두 적용됩니다. 어디 한번 문자열 대신에 배열을 넣어볼까요? 그리고 HTML은 아이템 목록을 나타낼 수 있게 ul 태그로 바꿨습니다. product의 개수만큼 li 태그를 생성하려면 v-for라는 특별한 속성을 사용합니다. 이렇게 하면 데이터의 개수만큼 li 태그가 찍혀져 나오죠. v-for 디렉티브

이제 브라우저로 가서 코드를 실행하면 아래와 같습니다. v-for 디렉티브 결과

아직 코드가 살짝 부자연스럽네요. 어디 빈 배열로 시작해서 데이터를 불러와 담아볼까요? 불러올 데이터는 데이터베이스에서 가져온다고 가정합시다. API로 가져온 데이터 목록 표시하기

위 코드가 실행된 결과는 아래와 같습니다. vue.js 결과 화면

보시는 것처럼 현재 목록의 각 아이템은 데이터를 받아온 객체를 표시합니다. 좀 더 사용자가 보기 편하게 데이터 표현 방식을 아래와 같이 바꿔봅니다. vue.js의 데이터 표현방식

그럼 결과는.. vue.js 결과화면

각 아이템 중에 혹시 개수(quantity)가 0인게 있으면 사용자가 인지할 수 있도록 조금 다르게 표시해볼까요? span 태그로 item.quantity === 0 일 때만 OUT OF STOCK 텍스트가 나타나게 하겠습니다. 여기서 이 조건을 위해 v-if 디렉티브를 사용합니다. v-if 디렉티브 사용

아이템 중에 jacket의 재고가 다 떨어졌었네요. 아래와 같이 말이죠. v-if 디렉티브 vue.js 결과화면

만약 모든 상품(product)의 총 재고량을 목록 아래에 표시하려면 어떻게 해야 할까요? totalProducts라는 computed 속성을 활용하면 됩니다. 만약 자바스크립트 reduce() API가 익숙하지 않으시다면 여기서는 그냥 각 상품의 재고의 총합을 구하는 동작이라고 생각하세요. vue.js의 computed 속성

아래에서 볼 수 있듯이 이제 모든 상품의 총 재고량이 표시됩니다. vue.js의 computed 속성 결과 화면

자 이제 뷰 개발자 도구(Vue.js Chrome Extension)을 알아보기 좋은 시간이네요. 개발자 도구의 장점 중 하나는 페이지 상에 표시된 데이터를 살펴볼 수 있다는 점입니다. vue.js 개발자 도구

뷰의 반응성(Reactivity: 데이터가 변함에 따라 뷰에서 반사적으로 화면을 변화시키는 특성)을 다시 살펴볼까요. 아이템 2개를 제거해보겠습니다. 아래 보시는 것처럼 상품 목록뿐만 아니라 남은 상품의 총 재고량도 바뀌네요.

vue.js 반응성 reactivity

다음으로, 버튼을 이용해서 페이지에 이벤트를 추가해보겠습니다. 각 상품 아이템에 Add라는 버튼을 추가합니다. 그리고 버튼을 클릭했을 때 각 상품의 재고량을 1개씩 늘리겠습니다. vue.js 버튼 클릭 이벤트 v-on

아래를 보시면 각 상품의 Add 버튼을 클릭했을 때 각 상품의 재고와 총 재고량 숫자가 올라갑니다. 그리고 Jacket 상품의 Add 버튼을 클릭하면 OUT OF STOCK이라는 글씨도 사라지네요. vue.js v-on 디렉티브 결과 화면

허나 여기서 만약 각 상품의 재고량을 그냥 수기로 입력하고 싶으면 어떻게 해야 할까요? 인풋 박스를 하나 만들고 v-model 디렉티브를 연결해봅니다. 그리고 입력되는 값은 항상 숫자라고 지정할게요. vue.js v-model 디렉티브

이제 모든 아이템의 재고 숫자를 직접 입력하여 변경할 수 있습니다. 만약 0을 입력하면 자연스럽게 OUT OF STOCK이 함께 표시되네요. 그리고 아까 추가했던 Add 버튼도 정상적으로 동작합니다. vue.js v-model 디렉티브 결과 화면

여기까지 살펴본 코드는 JSFIDDLE에서 살펴볼 수 있습니다.

몇 개 더 살펴보는 뷰의 특징

만약 큰 애플리케이션을 만든다라고 하면 여러 개의 컴포넌트로 조합해야 합니다. vue.js single file components

뷰는 CLI(Command Line Interface) 명령어 도구로 쉽게 프로젝트를 생성할 수 있습니다. 아래 명령어로 프로젝트를 시작하시면 돼요.(뷰 CLI 도구는 미리 설치되어 있어야 합니다)

vue.js CLI 도구

그리고 컴포넌트별로 .vue 파일을 생성해 관리할 수 있어요. .vue 파일에는 HTML, 자바스크립트, 컴포넌트별 CSS & SCSS가 들어갑니다. vue.js 컴포넌트 체계

자 지금까지 뷰가 할 수 있는 기능 중 정말 빙산의 일각만 보셨습니다. 뷰에는 프런트엔드 화면을 개발하고, 구성하고, 빌드 하기 위한 더 많은 기능들이 있죠. 만약 뷰를 배우고 싶어 하신다면 아래의 2가지 자료를 추천드립니다.

  1. VueMastery의 뷰 가이드 & CheatSheet
  2. Vue.js의 공식 문서


위에서 살펴본 그렉의 설명 말고도 가볍게 Vue.js의 특징을 살펴볼 수 있는 글이 있습니다.

그리고 위 블로그 글이 마음에 드셨다면 저의 Vue.js 책으로 Vue.js를 시작해보시는 건 어떨까요? 🙂

Vue.js 온라인 강좌

책을 볼 시간이 없으시다면 아래 온라인 강좌로 빠르게 배워보시는 것도 좋을 것 같습니다 🙂

인프런 온라인 강좌 : Vue.js 초급, Vue.js 중급, Webpack (좌측 부터)
Vue.js 사용하는 이유 :: 마이구미
Web Server

Vue.js 사용하는 이유 :: 마이구미

Click the link to read the original article: Vue.js 사용하는 이유 :: 마이구미


이 글은 Vue, Angular, React 를 비교하는 글이 아닌 단순히 Vue.js의 장점을 다룬다.

Vue 이외에는 눈으로만 보았기에, Vue에 편중되어 보여질 수도 있다는 점을 미리 언급한다.

세가지 비교는 참고 링크를 읽어보길 바란다.

읽기 전 참고할 링크 – Virtual DOM && Top 7 reasons Vue.js && Vue, Angluar, React 비교

Vue는 요즘 핫한 자바스크립트 프레임워크로 사용되고 있다.

React와 Angular가 항상 비교 대상이였지만, Vue의 등장으로 크게 3가지로 비교되고 있다.

Vue의 등장은 신선했다.

왜냐하면 Vue.js는 혈통 없이 React와 Angular의 성공과 실패로부터 만들어졌다.

크게 React(Virtual DOM)와 Angular(양방향 바인딩)의 장점을 가져왔기에, 반은 먹고 들어간다.

Vue.js의 장점들은 다음과 같다.

1. 학습 곡선이 낮다.

Vue를 접해보았다면, 굉장히 쉽다는 것을 느꼈을 거라 생각한다.

사실 사람마다 틀릴 수 있으나, 알려진 학습 곡선은 Angular > React > Vue 순이 된다.

본인의 경우에도 Angular와 Vue를 비교했을 때, Angular는 굉장히 어려웠고, Vue는 굉장히 쉬웠다.

Vue의 공식 문서도 이해하기 쉽게 설명했다고 생각한다.

한글 번역까지 많은 분들이 기여해주셔서, 두려워할 필요가 없다.

2. 컴포넌트

대규모 프로젝트에 있어, 유지보수와 재사용성을 높이기 위해 작은 단위로 쪼개어 관리한다.

현재 개발 구조로 이미 컴포넌트 방식이 대세이고, 당연하게 그렇게 진행되고 있는 추세이다.

이 부분은 Vue, Angular, React 모두 동일한 부분이다.

다른 점은 본인이 Vue에서 가장 극찬하는 부분이 있다.

바로 “단일 파일 컴포넌트” 이 부분이다.


<template lang=”html”> <div> {{ msg }} </div> </template> <script> export default { data () { return { msg: “Hello World” } } } </script> <style scoped> </style>

위와 같이 .vue 파일 하나에 html, css, js를 작성할 수 있다.

결과적으로 단일 파일 컴포넌트는 캡슐화를 제공하게 된다.

이로써, 보다 깨끗하고 풍부한 컴포넌트를 표현할 수 있다.

마치 생소한 용어일 수도 있으나 Shadow DOM 같은 느낌이 든다.

React에도 필요한 경우 Shadow DOM 관련 모듈을 사용하는 것을 볼 수 있다.

그와 달리 Vue는 단일 파일 컴포넌트를 사용하면 다른 작업 필요없이 관련 효과를 낼 수 있다.

* Shadow DOM – DOM 및 CSS 캡슐화 목적. (관련 문서 – Shadow DOM)

하지만 React의 jsx 문법과 같은 것을 선호한다면, 이 부분에 대한 생각이 다를 수 있다.

* 단일 파일 컴포넌트는 권장하지만, 의무적인 것은 아니다.

3. 성능

Vue.js는 가볍고 빠르다.

Virtual DOM에 있어서도, React와 비교해서 보다 효과적인 성능을 낸다고 알려져있다.

그렇기에, 적은 오버헤드와 빠른 성능을 낼 수 있다.

4. View 최적화

Vue의 디자인은 MVVM 패턴에 영감을 받아서, View에 최적화되어있다.

DOM 조작에 있어, 기존 jQuery를 통한 DOM 조작은 더이상 필요하지 않다.

관련 내용은 링크를 참고하길 바란다. “jQuery 더이상 쓰지 않아야하는가?”

View에 최적화되어 있기 때문에, View의 동적 변화에 대한 처리가 매끄럽고 용이하다.

또한 페이지 전환 및 이벤트에 따른 애니메이션 작업에 있어, 개발하기에 좋다.

그에 관련된 transition과 transition-group 태그가 따로 분리되어 있어, View에 중점된 모습을 볼 수 있다.

관련 문서 – https://kr.vuejs.org/v2/guide/transitions.html

5. 많은 모듈

중앙 집중식 상태 관리 저장소를 위한 vuex

SPA를 위한 vue-router

유효성 검증을 위한 vue-vaildator

HTTP, Ajax를 위한 vue-resource

Vue에 최적화된 개발자 모드를 위한 vue-devtools 등등…….

효율적이고, 필요한 모듈이 웬만하면 존재하고, 이것 또한 학습곡선이 높지 않다.

6. 가능성

그래도 현재 React가 점유율에서 막강하다.

하지만 입문에 관한 통계를 보면, Vue가 훨씬 가파른 곡선이 보여지고 있다.

통계 자료나 세미나 및 컨퍼런스의 주제를 봐도 현재 많이 도입되고 있는 상황이라고 본다.

긍정적으로 바라보고 있기에, 앞으로도 기대해볼만하다.

출처: http://mygumi.tistory.com/206?category=697395 [마이구미의 HelloWorld]

Redis 설치 및 셋팅 [EC2] :: 마이구미
Web Server

Redis 설치 및 셋팅 [EC2] :: 마이구미

Click the link to read the original article: Redis 설치 및 셋팅 [EC2] :: 마이구미


이번 글은 Redis 설치 및 셋팅에 대해 다뤄본다.

본인은 Amazon EC2 인스턴스를 사용한다.

12개월간 무료인 서비스가 있으니 몰랐다면 좋은 경험이 될 것이다. (Amazon EC2 Free Tier)

OS는 Amazon Linux AMI 기준으로 글을 작성한다.

Redis 설치와 셋팅을 알아보자.

여기서 셋팅은 조금 더 효율적으로 Redis를 설치하여 사용하는 법을 말한다.

예를 들어 일반적으로 설치를 하면 Redis Server를 실행하더라도 Server가 죽으면 Redis Server 또한 죽는다.

개발 시에는 문제가 없지만, 실제 서비스라면 문제가 된다.

우선, Server를 업데이트하고, Toolchain을 설치해야한다.

*Toolchain – System의 Compile 환경이라고 생각하면 된다.

sudo yum -y update

sudo yum -y install gcc make

그 후, Redis를 다운로드하자.

다운로드 URL은 자신이 원하는 버젼이 있다면 확인하여 다운로드해야한다. (Download)

sudo wget http://download.redis.io/redis-stable.tar.gz

sudo tar xvzf redis-stable.tar.gz

cd redis-stable


사실상 Redis 설치가 끝났다.

Redis 작동 여부는 명령어를 통해 확인할 수 있다.

redis-stable/src 디렉토리 기준


redis-cli ping


결과적으로 Redis 작동에 문제가 없지만 FULL PATH 를 통해 명령어를 실행하는 불편함이 존재한다.

경로없이 실행하게 셋팅해보자.

redis-stable 디렉토리 기준

sudo cp src/redis-server /usr/local/bin/

sudo cp src/redis-cli /usr/local/bin/


sudo make install

어느 경로에서도 redis-server 명령어가 실행되는 것을 볼 수 있다.

AMI는 /usr/local/src 환경 변수 경로이다. OS마다 다르므로 다른 OS일 경우 확인하길 바란다.

위 절차를 통해 설치 후 사용해도 무관하다.

하지만 위에서 언급했듯이 매번 서버를 시작해야하는 문제가 발생한다.

해결하기 위한 효율적인 방법을 통해 이어나가보자.

먼저 디렉토리 생성과 파일들을 복사해야한다.

redis-stable 디렉토리 기준

sudo mkdir -p /etc/redis /var/lib/redis /var/redis/6379

sudo cp redis.conf /etc/redis/6379.conf

그 후, config 파일을 열어보자.

sudo vi /etc/redis/6379.conf

파일 안의 옵션들을 아래와 같이 수정하자.


daemonize yes // default => no

logfile /var/log/redis_6379.log

dir /var/redis/6379

수정을 했다면, init script를 설치하자.

sudo wget https://raw.githubusercontent.com/saxenap/install-redis-amazon-linux-centos/master/redis-server

sudo mv redis-server /etc/init.d

sudo chmod 755 /etc/init.d/redis-server

redis-server 를 열어보자.

sudo vi /etc/init.d/redis-server

그 후, config 파일 참조 경로를 변경해주면 된다.


이제 Redis Server의 자동 실행을 위해 chkconfig 명령어를 사용한다.

sudo chkconfig –add redis-server

sudo chkconfig –level 345 redis-server on

sudo service reids-server start

결과적으로, 서버를 재시작하여도 Redis Server 또한 재시작 되는 것을 볼 수 있다.

마지막으로 Redis는 비밀번호(암호)를 설정할 수 있다.

관련 config 파일의 옵션을 수정해주면 된다.

sudo vi /etc/redis/6379.conf

requirepass는 주석 처리(#)가 되어있을 것이다.

requirepass 1234

수정 후 Redis Server를 재시작해주면 비밀번호가 설정이 된다.

혹시나 문제점이 있다면 댓글을 통해 알려주면 감사하겠다.

참고  URL



출처: http://mygumi.tistory.com/133 [마이구미의 HelloWorld]