C/C++




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

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

C/C++
Click the link to read the original article: Here =================== AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서...
Read More
C++ 기초

C++ 기초

C/C++
Click the link to read the original article: TCPSchool.com ==== C++ 개요 C++ C++은 기존의...
Read More
ORM 프레임워크(Object-relational mapping)

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

C/C++
Click the link to read the original article: Here ============================================== ORM 프레임워크(Object-relational mapping) Jayzzz 2017.10.11 15:34...
Read More
ORM 이란 무엇인가?

ORM 이란 무엇인가?

C/C++
Click the link to read the original article: Here ========================= ORM(Object-Relational Mappings)라는 건 과연 무엇일까?...
Read More
Atmel Studio 7 설치 후 Atmega128 작동시키기
C/C++

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

Click the link to read the original article: Here

===================

AT128A-75B 라는 Atmega128 MCU을 사용한 제품을 구매해서 처음 구동시켜보려고 합니다.
아두이노만 사용하다가 처음 사용하는데 감이 잘 오지 않네요.

https://www.devicemart.co.kr/1149213
AT128A-75B Plus MKII 라는 제품을 구매했습니다. ( AT128-75B 에 MKll 를 추가로 주는 것 같습니다. )

https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwj5hY3NjI3TAhVCz1QKHeOlA_EQFggaMAA&url=https%3A%2F%2Fwww.devicemart.co.kr%2Finclude%2Fdown.php%3Ffile%3D%2Fdata%2Fgoods%2Fgoodsfile%2F1149213_file_0.pdf%26mode%3Dgoods%26name%3DAT128A-75B%2520Plus_MKII_%25B8%25C5%25B4%25BA%25BE%25F3.pdf&usg=AFQjCNEniDJ7KJi3UTCn0SLWOMNMg17xhg&sig2=xFLZQegpNL_KhcBpMKypsQ&cad=rjt

위의 링크에서 매뉴얼을 확인 할 수 있습니다.

위 제품은 usb Btype, isp, JTag 방식으로 파일 전송이 가능한 제품이라고 하여 구매하게 되었습니다.

마이크로프로세서 책 들을 읽어보니 데이터 전송 방식에는 여러가지가 있는데 isp, jtag? 등등
대부분 isp 를 이용하는 듯 하였고, 단순히 usb 로 전송하는 것 보다는 isp 전송 방식을 알고 싶어서 구매한 제품입니다.

위의 2*5 짜리는 JTAG 아래의 2*3 짜리는 ISP 통신용입니다. )

http://www.atmel.com/tools/atmelstudio.aspx#download

다음으로는 위 경로로 들어가서 atmel studio 7을 설치합니다.

위와 같이 설치가 완료 되었습니다.

위와 같이 ATmega 128 을 선택해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
    //포트D를 출력으로 설정한다.
    DDRD = 0xFF;
    /* Replace with your application code */
    while (1)
    {
        //포트D의 값을 0xFF로 한다. LED가 켜진다.
        PORTD  = 0xFF;
        _delay_ms(300); //300ms 대기
        //포트D의 값을 0x00으로 한다. LED가 꺼진다.
        PORTD = 0x00;
        _delay_ms(300); //300ms 대기
    }
}
cs
 

위의 소스코드를 넣어주고 D 포트 0~7 번에 출력을 설정하고 LED와 저항을 연결해준다.

그리고 빌드해주면 ??

이런 창이 뜨면서 Selected debugger/programmer 를 선택하라고 합니다.

저는 AVRISP MKll 를 선택했구요

그 다음 코드를 실행하면 ??

잘 작동합니다.

– 출처 –
http://webnautes.tistory.com/674
http://jjungineer.tistory.com/3

C++ 기초
C/C++

C++ 기초

Click the link to read the original article: TCPSchool.com

====

C++ 개요


C++

C++은 기존의 C언어에 여러 가지 기능을 추가하여 만든 프로그래밍 언어입니다.

C++은 C언어에서 절차 지향적 언어의 특징을 가져왔을 뿐만 아니라, 클래스를 사용하는 객체 지향적 언어인 동시에 템플릿으로 대변되는 일반화 프로그래밍 방식의 언어이기도 합니다.

 

C++ 수업 시작 =>

 

여러분이 직접 코드를 변경하고, 그 결과를 확인할 수 있는 온라인 에디터가 준비되어 있습니다.

예제

#include <iostream>

#define TEXT “Welcome to C++ Programming!!”

int main()

{

    std::cout << TEXT;

    return 0;

}

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

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 이란 무엇인가?
C/C++

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#;

</select>


즉, 이 getPerson라고 정의된 query의 결과는 net.agilejava.person.domain의 Person객체에 자동으로 mapping 되는 것이다. Hibernate의 경우에는 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” />

</class>

</hibernate-mapping>

 

위 두개의 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 [행복만땅 개발자]