블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 
 

Hello 아두이노

프로그래밍/아두이노 | 2018.09.16 00:39 | Posted by 조대협


잠깐 아두이노를 만져보고 단상 노트


우연한 기회에 아두이노를 보게 되서, 예전에 딸 학습용으로 사놨던 아두이노 키트를 꺼내서 이리저리 만져보았다.

요즘 아이들이 아두이노로 메이커를 많이 한다고 해서, 난이도가 높지 않을것이라고는 예상 했지만, 직접 해보니, 상당히 심플하다.

개발 환경 설정에서 부터, 코드를 올리는 과정까지 IDE에서 손쉽게 접근이 가능하고, 브래드보드 덕분인지, 회로 구현도 편하고, 부품 수급도 편리하다.

더군다나, 시장에 많이 풀린 덕분인지 컨텐츠도 무궁무진해서, 손쉽게 접근이 가능하다.


13개의 핀을 IN/OUT으로 설정하고 단순하게 신호를 보내거나 받아서 처리하는 구조인데...

저항이나 콘덴서와 같은 전자 부품을 어떻게 다룰지 약간 걱정은 되지만, 아이들도 한다고 하니, 크게 문제는 없을듯 하다.


대략 감도 잡고 환경도 구축을 했는데, 무엇을 해볼까 고민중

아무래도 백앤드 전문이니, WIFI 를 달아서, 센서로 값들을 수집하는 IOT 시나리오를 구축하는 것도 괜찮을거 같고

ML API나 쳇봇 API를 이용해서, 간단한 로봇을 만들거나, 아니면 라즈베리 파이로 넘어가서 텐서플로우 모델을 내려보는것도 괜찮을거 같기는 한데, 어떤 시나리오를 할지 역시 아이디어가 문제다.





아래는 오늘 개발 환경 구축에 참고한 영상인데, 아무래도 이클립스와 같은 툴에 익어 있다 보니, 아두이노 정식 IDE보다는 이클립스가 날거 같아서 설치했는데, 역시 요즘은 글보다는 영상이 대세인가 보다. 이해도 빠르고.. 따라하기도 편리하다. 블로그 대신 이제 영상으로 넘어가야 하나??



'프로그래밍 > 아두이노' 카테고리의 다른 글

ESP01 (ESP8266) 사용하기  (1) 2018.09.30
서보 모터 제어  (0) 2018.09.28
아두이노 무선 통신 모듈  (1) 2018.09.21
아두이노 기울기 센서와 소음 센서  (0) 2018.09.18
아두이노 조도 센서  (0) 2018.09.16
Hello 아두이노  (0) 2018.09.16

Spring Maven 개발 환경 설정

 

※주 : Maven Eclipse Juno 버전 이상이 설치된 것을 가정으로 함


Pre-quest

이클립스 설치 : Juno  버전 이상 사용

Maven 플러그인 설치 : Help > Eclipse Market Place에서 Maven Integration for Eclipse 설치



1. 이클립스 설정

일반 기업의 경우 방화벽이 있는 경우가 많기 때문에 반드시 Proxy 설정 확인하고 시작할것

 

   eclipse proxy 설정

: Juno 버전 이상 Windows > Preference > Network 메뉴에서 Active Provider Mannual로 변경 한후, HTTP HTPS proxy entriy에 서버를 등록

   Maven에서도 해줘야 함

: Juno 버전 이상 Windows > Preference > Maven 메뉴에서 setting.xml의 위치를 찾아서 다음과 같이 proxy 설정 부분을 추가 작성

<proxies>

    <proxy>

      <id>optional</id>

      <active>true</active>

      <protocol>http</protocol>

      <username>proxyuser</username>

      <password>proxypass</password>

      <host>프록시 서버 주소</host>

      <port>포트</port>

    </proxy>

  </proxies>

         <proxy>

                  <id>samsung</id>

                  <active>true</active>

                  <protocol>http</protocol>

                  <host>프록시 서버 주소</host>

                  <port>포트</port>

         </proxy>

         <proxy>

                  <id>samsung-https</id>

                  <active>true</active>

                  <protocol>https</protocol>

                  <host>프록시 서버 주소</host>

                  <port>포트</port>

         </proxy>

  </proxies>

 

 

2. 프로젝트 생성

 

이클립스에서 New > Other > Maven > Maven Project 선택

Filter에서 maven-archetype-quickstart 를 선택

Ÿ   group id 에는 프로젝트명 (일반적으로 패키지명으로 맵핑됨)

Ÿ   artifact id에는 디렉토리명

Ÿ   Package에는 패키지 명을 정의

 

또는 아래와 같이 Command Line으로 생성후, 나중에 이클립스에서 Import

mvn archetype:generate -DarchetpeArtifacId=maven-archetype-quickstart -DarchetypeVersion=1.1  -DinteractiveMode=false  -DgroupId=spring-tutorial -DartifactId=ch1_simple -Dversion=1.0-SNAPSHOT -Dpackage=bcho.spring.tutorial.ch1

 

3. pom.xml 편집

spring-beans, spring-core, spring-context depdency에 추가

그리고, JUnit4로 테스트를 진행 예정이기 때문에 spring-test와 junit 4.11을 추가

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>


  <groupId>spring-tutorial</groupId>

  <artifactId>helloworld</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>


  <name>helloworld</name>

  <url>http://maven.apache.org</url>


  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>


  <dependencies>

 

  <dependency>

  <groupId>org.springframework</groupId>

  <artifactId>spring-beans</artifactId>

   <version>3.2.2.RELEASE</version>

  </dependency>

  <dependency>

  <groupId>org.springframework</groupId>

  <artifactId>spring-context</artifactId>

  <version>3.2.2.RELEASE</version>

  </dependency>

  <dependency>

  <groupId>org.springframework</groupId>

  <artifactId>spring-core</artifactId>

  <version>3.2.2.RELEASE</version>

  </dependency>

  <dependency>

  <groupId>junit</groupId>

  <artifactId>junit</artifactId>

  <version>4.11</version>

  </dependency>

  <dependency>

  <groupId>org.springframework</groupId>

  <artifactId>spring-test</artifactId>

  <version>3.2.2.RELEASE</version>

  </dependency>

  </dependencies>

</project>


4. context.xml 작성

/src/main/resources/spring-context.xml 을 작성하고, bean을 정의

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">



<bean id="hello" class="spring_tutorial.helloworld.HelloWorld">

<property name="name" value="Byungwook"></property>

</bean>

</beans>

 

5. Bean Class 작성

main/java/HelloWorld.java 작성

package spring_tutorial.helloworld;


public class HelloWorld {

    String hello;

    public void setName(String name){

           this.hello = name;

    }

    public String getName(){

    return hello;

    }

    public void sayHelloWorld(){

           System.out.println("hello :"+hello);

    }

}

 

6. 수행 클래스 작성

package spring_tutorial.helloworld;


import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;


/**

 * Hello world!

 *

 */

public class App 

{

    public static void main( String[] args )

    {

      ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");

           

           HelloWorld hw = (HelloWorld)context.getBean("hello");

           hw.sayHelloWorld();

    }

}


7. Run as 에서 Java Application으로 실행

8. 테스트 클래스 작성


package spring_tutorial.helloworld;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations="classpath:spring-context.xml")


public class AppTest 

{

  @Autowired HelloWorld hello;

  @Test public void helloTest(){

 assert( hello.getName().equals("Byungwook"));

  }

}

9. 테스트 실행
프로젝트에서 Run as > Maven test 를 선택
또는 프롬프트 상에서 mvn test를 수행

10. Goal에 대해서
Goal은 ant의 target과 같은 개념으로, mvn의 경우 pre-defined goal을 가지고 있다.
mvn compile : 컴파일 수행
mvn package : jar 파일로 패키징
mvn test : JUnit 테스트 수행
mvn install : local repository (PC내의 디렉토리)에 해당 jar 파일을 저장 
mvn deploy  : remote repository (Nexus)에 jar 파일 저장
mvn clean : 컴파일 내용 모두 삭제
mvn build : 위의 예제는 일반적은 spring-java 코드로 build goal을 제공하지 않는다. (Eclipse에서 run as하면 나와서 헷갈리게 만드는데) build goal을 지원하는 프로젝트를 만들거나 또는 pom.xml안에 인위적으로 build goal을 지정해줘야 한다.

install과 deploy에 의해서 repository에 저장된 jar파일들은 dependency 체크등에서 불려서 사용될 수 있다.




참고 사항

1. 가끔 Eclipse에서 Maven을 수행 시키면 아래와 같은 에러가 나는 경우가 있다.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (default-testCompile) on project helloworld: Compilation failure

[ERROR] Unable to locate the Javac Compiler in:

[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar


이는 Eclipse가 loading될때, JDK에 있는 java가 아니라 JRE에 있는 java를 가지고 수행되었을 경우 발생하는데, maven이 javac compiler를 찾을 수 없다는 메세지이다.

이를 해결하려면 eclipse.ini에 JDK의 경로를 아래와 같이 명시적으로 지정해줘야 한다.

-vm

C:\Program Files\Java\jdk1.7.0_07\bin\javaw.exe

2. 위의 설정을 했음에도 불구하고, eclipse에서 안될때가 있는데, 이 경우에는 Runs As에서 메이븐 설정에서 JRE 부분에 JDK 경로를 지정해주면 된다.



3. 디렉토리 구조 참고





http://www.mkyong.com/spring3/spring-3-hello-world-example/

http://androi.tistory.com/37 

이클립스 ALF

ALM/Build Automation (빌드 자동화) | 2008.08.12 00:34 | Posted by 조대협

이클립스 프로젝트로 진행중인 ALM
업체들이 뭉쳐서 진행하고 있는 것 같은데.
다소 약한 느낌이 들기도...

http://www.eclipse.org/alf/Flash/ALF003Demo.htm

테스트쪽을 분리해놓고 테스트 관리 부분이 강화 된것이 흥미롭다.

'ALM > Build Automation (빌드 자동화)' 카테고리의 다른 글

Maven pom properties  (0) 2013.03.26
국산 형상 관리 솔루션 실루엣  (0) 2008.08.12
이클립스 ALF  (0) 2008.08.12
괜찮은 ALM툴  (5) 2008.06.11
Hudson을 이용한 빌드 배포 테스트 자동화  (8) 2008.04.07
플러그인 개발 순서  (0) 2008.04.02

이클립스 플러그인 랭킹

ALM/Build Automation(이클립스) | 2008.02.29 17:24 | Posted by 조대협


이클립스 플러그인 랭킹
==
http://eclipse-plugins.info/eclipse/plugin_statistics.jsp?popular=clicks
==

휴우....
다들 알다 싶이, 이클립스에서 개발을 할때는 동시에 여러개의 프로젝트를 열어서 개발을 하게 되고, 프로젝트간의 Dependency를 지정하는게 중요한데.
이게 개념을 모르고 하면 정말 독이 된다는... -_-
지금 개발중인 시스템도 총 9개의 프로젝트로 나뉘어져 있는데...
이게 정리가 안되서 컴파일이 제대로 돌아가지를 않는다.
허허..

먼저 프로젝트의 레퍼런스와 J2EE Module Dependency는 프로젝트 폴더에서 오른쪽 버튼을 누르고 "Properties"를 보면 나온다.

1. Project Reference
이건 간단하게 생각해서 ClassPath에 넣느냐 마느냐를 결정하는것으로 보면 된다.
현재 프로젝트를 빌드하고자 할때, 다른 프로젝트의 class가 필요한 경우 Project Reference로 지정하면 컴파일시에 그 프로젝트를 참고하여 빌드한다.

2. J2EE Module Dependency
이건 JEE 애플리케이션에만 해당한다.
EAR 프로젝트에서 WAR와 EJB 프로젝트를 레퍼런스할때, 컴파일은 되겠지만 EAR 프로젝트에는 실제 WAR와 EJB 파일들이 패키징시에 같이 디렉토리 구조에 맞춰 들어가야 한다.
이렇게 같이 패키징이 되도록 정의하는 것이 J2EE Module Dependency이다.

이 구조를 정의할때, 환형 참조 구조가 안되도록 정의하는것도 중요한 일...

빌드 스크립트 한번 올리기 되게 어렵다.