오랜시간 개발환경을 windows PC에서만 유지하다가,

redis등을 테스트하면서 windows에 한계를 느껴 (redis 최신버전에 windows는 미지원)

Linux로 개발환경을 구축하기로 결정하였다.


1. 노트북 결정

 - 화면이 작은 노트북을 선호하는 관계로 Lenovo S210 i3 모델로 결정. 

 - 128G SSD 장착. (ideaPad S210이 좀 작은 SSD로 볼 수 있는 m-SATA를 지원하는 줄 알았다가 약간 실망)

 


2. Linux 결정 

 - Linux 서버로는 Redhat계열인 CentOS도 많이 쓰이지만, Desktop버전은 ubuntu가 대세로 판단.

 - 최신 버전인 Ubuntu14.04 LTS( Long Term Support : 즉 안정화된 버전으로서 오랫동안 지속 유지된다는 의미) 로 결정.



3. Ubuntu설치용 USB만들어 설치.

- http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/    Universal USB Install 1.9.5.5 이용해서 우분투 USB생성. 

 - 고수분들의 웹 사이트를 참조해서 설치.  http://deviantcj.tistory.com/473


  파티션은 다음과 같이 결정

   - ROOT / 20G

   - SWAP영역 8G (향후 8G RAM을 꽂을 것을 대비)

   - 나머지 /home  (약 95G ?) 



Posted by yongary
,

간단히 NO-SQL 몇 개를 초급 수준에서 비교해 보았다. 


몽고DB :  Java를 이용하여 서버를 개발하는 인디/소호 개발의 관점에서 볼 때 최적!

  - json으로 DB에 기록을 해버리니, java개발자 입장에서는 java class가 바로 DB에 저장된다고 느낄 수 있다.
    (document 저장 방식이라고 부름)

 - geoSpace인덱싱이 매우 뛰어나서 혹시라도 지리적인 위치정보를 저장하는 경우, 조회에 관련된 많은 함수들이
    제공되고 속도도 빠르다. 지리 시스템이라면 초 강추!

 - 단점으로는 lock이 전체적으로 걸려서 write가 많은 시스템에선 비추라네요
  => (15.11월 글 참조) mongoDB3.0 부터는 wiredTiger엔진 사용시 row레벨lock(즉, document레벨락)지원.

 - Replication + failOver(장애복구)기능은 존재.

 - Clustering + 샤딩기능 : 존재하고, 확장(scaling or scale out)도 지원..    
     (참조:  http://yakoola.tistory.com/57 ) 


 Redis :  속도가 최우선인 시스템에 적합

   - 메모리 DB인 만큼 속도가 최우선시 되는 시스템에서 필수로 고려해야 한다.

    - 기초적인 사용법은 mySql수준이라서, 입문은 간단.

    - Replication 기능은 존재하지만 Async방식이라서 cluster상에서 일부 유실이 가능한 구조이다. 

    - failOver기능: 원래는 없었으나, 근래에는 sentinel기능이 도입되어 안정화 단계이다.

     - Clustering + 샤딩기능: 없으나 개발완료 단계이다. 올 여름 redis 3.0부터 배포가 되며, 16384개의 hash slot을
         미리 나눠좋고 샤딩을 하는 방식이다. 물론 slot조정이나 이동이 가능하다.
         (이전 버전에서는 clustering이 지원이 안되므로 zookeeper과 혼합해서 사용하는 방법이 혼용되었다)

 


Cassandra: 안정적인 시스템이며 write가 많은 초 대용량 시스템에 유리

      - 읽기보다 쓰기가 더 빠르다는데 시간을 재보진 않아서 믿지는 못하고 있지만
      -  Clustering기능이 뛰어나 안정된 시스템이라는 인상을 많이 준다. 



Posted by yongary
,

간단한 SQL의 경우 Vo를 바로 return하면 되지만,

복잡한 return형식이 필요할 경우 resultMap을 사용하는 게 편리하다. 


resultMap을 사용해서 데이타를 가져오는 경우

java코드는 100%동일하게 사용하고

mapper xml만 바꿔서 resultMap을 이용하는 예제로 만들어 보면 다음과 같다.


( 이전 글 예제에서 변경되는 부분만 기술 )



4.  UserMapper.xml 에서 resultMap을 사용하도록만 설정.


    <mapper namespace="my.UserMapper">

<resultMap id="userMap" type="my.UserVo">      //UserVo가 실질적인 return type이 됨.

        <id     property="username"    column="username" />

        <result property="age"     column="age" />

      </resultMap>

 

      <select id="user" resultMap="userMap">              //위에서 정의한 userMap을 지칭.

        SELECT  username,age

        FROM    user

        WHERE   username=#{name}

      </select>

    </mapper>




5. VO안에 또 객체가 있다던지 하는 복잡한 경우는 associationcollection으로 해결.  REF

   그리고, 어떤 값에 따라 다른  SQL을 실행할 수 있는 discriminator가 있다.

Posted by yongary
,

사설 IP 대역

IT 2014. 7. 31. 09:38

사설 IP 대역은 아래와 같이 3가지 이다.


1.  192.168.0.0/16

2.  10.0.0.0/8

3.  172.16.0.0/12, 


슬래쉬(/) 뒷부분은 masking이므로


1. 192.168.0.0 의 경우 앞에서 부터 16비트 즉 2byte는 고정된다는 말이므로 192.168로 시작하는 모든 IP가 사설IP이다.

 

2. 10.0.0.0/8 의 경우는 8bite=1byte  즉 10만 고정되므로 10.x.x.x 모든 대역이 사설 IP이다.


3. 172.16.0.0/12의 경우는 좀 어려운데  172.16  에서 두번째 16의 앞부분 4bit만 고정되므로 16을 2진수로 표현해 보면 00010000 , 즉 앞 부분 0001을 고정시키면  뒷부분의 경우 0000~1111까지 변화가 가능하다.

즉 00010000~00011111까지가 가능하므로  172.16.x.x~172.31.x.x 까지가 사설 IP이다. 

Posted by yongary
,

국내 이동통신 방식의 진화과정은


AMPS(1G)   ->  

CDMA (2G)  ->

WCMDA (3G, 2Mbps)  ->  

HSDPA (3.5G, 15Mbps) ->

LTE (3.9세대, 75Mbps) ->    

LTE-A (3.91세대?, 150Mbps) ->

LTE-Advanced (진짜 4세대, 500Mbps When?)



국내에는 현재 LTE-A라는 변형된 용어를 쓰고 있지만, 이는 정확한 4G는 아니다.

실제 4G는 LTE-Advanced인 반면, 현재 통용되고 있는 LTE-A는 LTE기술에 CA(Carrier Aggregation)기술을 추가로 이용하여 두 개의 주파수를 잡는 변형된 LTE라고 볼 수 있다.


원래의 4G는 기존 LTE보다 무선전송속도를 높이고, 단위비용을 낮추고, 셀 커버리지 및 용량확대 및 근거리 접속기술을 강화한 몇가지 기술들로 구성된 LTE Advanced와 WiBro Evolution 2가지를 일컫는다.


4G의 요소기술을 나열해보면 다음과 같다.

- OFDM LTE 우수한 직교성 특성에 의해 성능과 용량증가.

- 능동적인 대역폭 할당.(1FA 1.4~20MHz)

- 주요 제어신호를 대역폭의 가운데 (1.4MHz)로만 전송하기 때문에 RF대역폭이 다른기지국간에도 원론적으로 핸드오버 가능.

- 물리층 제어기술 향상, MIMO 다중안테나 성능향상기술.

- 간섭완화 성능향상 기술.(FFR:주파수 재사용, 셀간 협력스케줄기술 )

- 무선접속기술 향상.(FMIPv6) CR,SDR등의 유연한 스펙트럼 이용기술 (Cognitive Radio, SW defined Radio)

- QoS 연결제어 향상 기술 (보이스 QoS 위해 VOD,MOD속도 가중치 낮게조절)

- 단말전력 절약기술 단말 위치등록기술

- 고속핸드오버기술

- IP멀티캐스트 트래픽
- LBS, MBS, MBMS 같은 브로드캐스팅 기술, 자동셀구성 펨토셀 기술,



Posted by yongary
,

제 4이동통신 탈락

Mobile 2014. 7. 29. 14:53

제 4이동통신이 올해에도 실패하였다. 처음부터 불가능한 것이었을까?


기존 국내이동통신은 duplex방식이 FDD(주파수 division duplex)인 반면

제4이동통신은 TDD(time division duplex)방식으로서 간단히 설명하자면 같은 주파수를 이용해 1초 동안은 send하고 1초 동안은 receive하는 형태의 방식이라고 할 수 있다.

TDD방식이 중국에서 쓰이고 있으므로, 삼성전자등 제조사에서는 제4이동통신이 국내에 있다면 국내에서 쉽게 테스트를 하고 안정화된 폰을 중국으로 수출할 수 있으므로, 중국으로의 수출경쟁력을 향상시킬 수 있는 좋은 찬스이며

국내통신사 입장에서는 지금도 수익이 줄어 살기 어려운데 제 4이동통신 허가가 안 난 것은 천만다행이 아닐까~



Posted by yongary
,

MapView를 사용하기 위해서 google_play_service라이브러리를 import해야한다.

방법은 아래와 같은데.. 보다 자세한 건 맨 아래 링크를 참고! 



1. SDK Manager에서 Google Play Service를 다운로드 한다.


2. import  Android   Existing_Android_Project    :  google_play_service  (extra폴더) 추가하고

속성->build밑에  goolge_play_service 추가 < 소스  COPY 옵션 check 필요>

( android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib


3.프로젝트의 빌드 옵션에서   google API 선택 및 밑에  lib하나 추가.



참고 그림.

http://www.androidhive.info/2013/08/android-working-with-google-maps-v2/ 

Posted by yongary
,


1.pom.xml 에 mybatis 추가. (jdbc와 mysql도 추가)

               

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.2.4</version>

</dependency>


<dependency>

  <groupId>org.mybatis</groupId>

  <artifactId>mybatis-spring</artifactId>

  <version>1.2.2</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>3.2.4.RELEASE</version>

</dependency>


<dependency>

 <groupId>mysql</groupId>

 <artifactId>mysql-connector-java</artifactId>

 <version>5.0.8</version>

</dependency>




2. application-config.xml 에 dataSource추가 


    <context:annotation-config /> 
    <context:component-scan base-package="my"/> 

   

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test" />
        <property name="username" value="root" />
        <property name="password" value="0000" />

    </bean>

    

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:my/*.xml" />
</bean>


    <!--For MapperScan   <mybatis:scan base-package="my" />  스캔방식이 아직 동작안하는 듯 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="my"/>
   </bean>




3.  User table 접근을 위한 UserVo.java와 UserMapper.java

   

public class UserVo {

private String username;

private Integer age;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}






public  interface UserMapper {
//public int getManCount();
UserVo getUser(String name);
}



4.  UserMapper.xml 을 resources 밑에 my 밑에 추가


    <mapper namespace="my.UserMapper">

    <select id="getUser" resultType="my.UserVo">

        SELECT  username,age

        FROM    user

        WHERE   username=#{name}

    </select>

</mapper>



5. TestService.java


@Service

public class TestService implements ITestService{


@Resource

private UserMapper userMapper;

public UserVo getUser(String name){

return userMapper.getUser(name);

}

}



Posted by yongary
,

J2EE가 짜증스러웠다고나 할까~ 오랫동안 java 서버개발쪽은 피해 다녔었다.  

근래에 보니 spring이 struts를 완전히 누르고 java framework으로 자리를 확실히 잡은 것 같고

DB연동도 mybatis가 일단 대세를 이루는 것으로 분위기를 파악하고 다시 java 서버쪽에 관심을 가지기로 했다.


<기본 스텝>

0. Eclispe EE버전 설치.  

1. Eclipse -> help-> marketplace에서 find: spring STS(Spring Tool Suite)  검색해서 설치.

2. Tomcat설치 및 Eclipse연동은  이 분의 글 참조:  http://h5bak.tistory.com/136 (tomcat은 7.0x정도로 설치 요망. 현재 tomcat 8.x는 eclipse plugin이 필요한 듯)


3. 프로젝트 생성

new -> other 의 spring 밑에 Spring Project 를 선택한 후,

simple spring-web-maven Project를 선택함.

--> pom.xml 이 자동으로 생성됨. [eclipse Neon에서는 Spring Legacy Project -> Simple Spring Web Maven 임]

( 단, NONE-WEB project일 경우에는 Simple Spring Maven 정도 선택하고

main에서 ClassPathXmlApplicationContext 를 이용함.)



4. new->other->spring   bean configuration File.  add.해서 DI(IOC) 코딩.

  파일명은 application-config.xml 로 하고 (bean, context 최상위꺼 하나씩 필수 선택)

   src/main/resources/spring/application-config.xml 인데.. eclipse neon에서는 자동 생성이 됨.





Posted by yongary
,

OpenAPI, REST방식

IT 2008. 1. 16. 14:59

요즘 OpenAPI 에서는 REST방식이 대세이다.
simple해서 누구나 쉽게 만들 수 있고, RSS와도 유사한 면이 많기 때문에
그 이해와 구현의 접근성에서 기존의 다른 방식과는 비교를 불허한다고 할 수 있다.

REST(Representational State Transfer) 방식:
http 프로토콜의 GET, POST, PUT, DELETE의 4가지 방식을 이용해
각각 read, update, insert, delete의 형태로 데이타를 전달하는 방식이다.


기존 WEB Service 방식은  WSDL(웹 서비스 기술 언어) 를 이용해
언어를 정의하고, 데이타를 정의한 후 데이타를 주고 받아야 하므로
복잡한 측면이 존재한다.

SOAP 방식(Simple Object Access Protocol)도 WEB Service방식의 하나라고 볼 수 있는데
xml로 데이타를 전달하는 방식이다.
Posted by yongary
,