TCP UDP 버퍼 길이 확인

Linux 2014. 10. 8. 10:29

특정 기능을 개발하다 보면,

TCP나 UDP의 버퍼길이까지 튜닝하여야 하는 경우가 발생한다.  (예: heartbeat 데몬 등)


이 때 TCP/UDP의 버퍼길이 조정을 하는 api는 주로 setsockopt를 통해 하게 되는데

min이나 max가 제한되어 있으므로 이를 미리 확인하는게 좋다.


Linux에서


/sbin/sysctl -a   | grep net.core 와

/sbin/sysctl -a   | grep net.ipv4 로 확인이 가능하다.



//아래 예제에서 wmem:sendBuf,  rmem: receive Buf

net.core.wmem_max = 5242880   

net.core.rmem_max = 5242880

net.core.wmem_default = 2097152

net.core.rmem_default = 2097152


net.ipv4.tcp_mem = 196608       262144  393216

net.ipv4.tcp_wmem = 16384       122880  204800

net.ipv4.tcp_rmem = 16384       122880  204800


net.ipv4.udp_mem = 761952       1015936 1523904

net.ipv4.udp_rmem_min = 2097152

net.ipv4.udp_wmem_min = 2097152




아직 테스트 중이라 확실치 않은 부분이 있긴한데

setsockopt 함수를 사용하면 sendbuf는 2048, receiveBuf는 256까지 min으로 설정이 되는 것으로 보인다.

 (설정값 *2 로 세팅이 되므로 함수 호출시에는 그 반으로 해야함) 

Posted by yongary
,

redis를 사용하는 유명회사들에 대해선

redis.io 웹사이트에 다음과 같은 회사들이 언급되어 있다.


Blizzard에서 Wow 아바타 서비스에도 사용한다고 하는데 아직 확실치는 않다..

Posted by yongary
,

SW Engineering

IT 2014. 9. 29. 08:54

소프트웨어 공학의 최근 흐름으로는 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등이 있다.



Agile 방법론의 기본 개념 "반복적으로 프로토 타입을 고객에 전달함으로써 고객의 요구사항 변화에 민첩하게 대응한다"


Agile 방법론의 대표주자XP(익스트림 프로그래밍) 




XP(익스트림 프로그래밍) 개발 프로세스 :


XP의 목적은 '고객이 원하는 양질의 소프트웨어를 빠른 시간안에 전달하는 것'이다. 
수시로 발생하는 고객의 요구사항에 대처하고, 고객이 원하는 SW를 고객이 원하는 시간에 인도하기 위해서는 고객과 팀원간의 대화를 통해 해결한다.


XP에는 7가지 항목이 정의되어 있는데, 7가지 항목 중 특히 공감이 가는 항목은 아래와 같이 4항목이다.

1.Simple-Design

2.Test-Driven

Test_driven은 다른 애자일 방법론과 구분되는 XP만의 특징이기도 하다.

프로그래머들이 코딩을 할 때에, 테스트 코드를 작성하도록 함과 동시에 테스트를 기반으로 프로젝트를 완성시켜 나간다.

3. Pair-Prograimming 

두명 혹은 그 이상의 프로그래머가 함께 코딩을 하는 것을 말한다. 두명의 프로그래머가 함께 코딩을 하고 테스트를 통해서 개발을 할 수도 있고, 한명은 코딩을 하고 한명은 Quality Assurance 역할 통해서 테스트에만 집중을 할 수도 있다.

4. Whole-Team 

기획자, 설계자 심지어는 Tester, User까지도 하나의 팀이 되어 개발을 진행하는 방법이다.


나머지 3항목은 

Planning Game, Small Release, Customer Test이다.








Posted by yongary
,

Linux 버전 확인

Linux 2014. 9. 26. 16:50

Linux kernel 버전 확인:  uname -a    
                                 or  lsb_release -a


OS 버전 확인:

redhat계열:  cat /etc/redhad-release

ubuntu 계열:  cat /etc/issue

Mac: sw_vers

 

32 / 64 bit 확인 :

$ getconf LONG_BIT 

 


 


 

Posted by yongary
,

vim 탭설정

Linux 2014. 9. 25. 10:43

vim 에디터가 요즘 대세인데. 탭 기능이 다소 불편할 수 있다.


Vim에서는 Ctrl+Tab단축키(혹은 linux에서 Ctrl+Shift+Tab단축키)가  기본적으로는 분할된 (:sp 명령어로) 화면간 전환에 쓰이기 때문인데..



개인적으로 애용하는 방법은

.vimrc 파일에  아래와 같이 3줄 추가하는 것이다.


map  <C-l> :tabn<CR>

map  <C-h> :tabp<CR>

map  <C-n> :tabnew<CR>



Windows의 경우에는 

C:\Program Files\Vim\_vimrc 파일에 추가.

 

 

기타 특수명령어

 Shift + j   :  라인구분(엔터키)가 하나씩 없어진다

set list  / set unlist  :  특수키를 다 구경할 수 있다.

Posted by yongary
,

redis를 HA로 구성했을 경우, SDR(spring-data-redis 1.4) 와 jedis커넥션을 이용한 spring과 redis 연동.


RedisSentinelConfiguration 클래스를 이용하면, HA를 지원하는 redis의 이중화 상태에서도 spring을 이용한 redis연동이 가능하다.

java코드로 연동하는 방법은 여러곳에서 나와있으므로, 본 글 에서는

xml을 이용한 DI(Dependency Injection)방식으로   spring과 HA redis를 연동하는 방식을 설명한다.



1. pom.xml 수정   (SDR , jedis를 추가)

이전글과 동일하다. 단 common-pool 대신에 이를 상속받은 JedisPoolConfig을 써봄으로 인해 common-pool은 제거.


<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.4.0.RELEASE</version>

</dependency>


<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.5.1</version>

<type>jar</type>

<scope>compile</scope>

</dependency>




2. application-config.xml 수정


2.1 네임스페이스에  xmlns:p,c, util 추가.


2.2.1 mymaster와 setntinels을 xml로 구성


2.2.2 RedisSentinelContiguration을 이용해서 HA구성.

         => SDR에 미흡한 부분이 하나 존재하여, MySentinelConfiguration  를 별도로 생성해서 이용하도록 함.

             (이유는 아래 xml의 코멘트 참조)   


2.2.3 jedis를 이용한 Pool과 connection구성.


이렇게만 하면 이전 예제와 동일하게 그냥 redisTemplate만을 이용해서 개발하면 자동으로 HA구성을 지원하는 개발이 된다.




<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:c="http://www.springframework.org/schema/c"

xmlns:util="http://www.springframework.org/schema/util"

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

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">


<!-- Uncomment and add your base-package here:-->

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


<!-- myster -->

<bean id="myMaster" class= "org.springframework.data.redis.connection.RedisNode" c:host="127.0.0.1" c:port="6379" p:name="mymaster"/>


<!-- Sentinels -->

<bean id="mySent1" class= "org.springframework.data.redis.connection.RedisNode" c:host="127.0.0.1" c:port="26379"/>

<bean id="mySent2" class= "org.springframework.data.redis.connection.RedisNode" c:host="127.0.0.1" c:port="26381"/>

<bean id="mySents" class= "java.util.HashSet">

 <constructor-arg>

  <list>

   <ref bean="mySent1" />

   <ref bean="mySent2" />

  </list>

 </constructor-arg>

</bean>


<!-- RedisSentinelConfiguration: org.springframework.data.redis.connection.RedisSentinelConfiguration" 

2.2.2 이 부분이 유일하게 아직 SDR에서 미흡한 부분이다.  이 부분은 ReidsSentinelConfiguration class 가 

getter와 setter 파라미터가 다른 오류가 발생하므로, 자체 class를 하나 만들어서 해결하였다.

-->

<bean id="redisSentinelConf" class="my.MySentinelConfiguration"

p:master-ref="myMaster"

p:mySentinels-ref="mySents"

/>

<!-- p:sentinels-ref="mySents" : ERROR 발생-->



<!--2.2.3 POOL & Connection-->

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"/>

<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"

    p:use-pool="true"

    p:poolConfig-ref="jedisPoolConfig"

    c:sentinelConfig-ref="redisSentinelConf"

/>

<!--p:host-name="127.0.0.1" p:port="6379" -->



<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<!-- redis template definition -->

<bean id="redisTemplate"

class="org.springframework.data.redis.core.RedisTemplate"

p:connection-factory-ref="jedisConnFactory"

p:keySerializer-ref="stringRedisSerializer"

p:hashKeySerializer-ref="stringRedisSerializer"

p:valueSerializer-ref="stringRedisSerializer"/>

</beans>





3. JAVA  코드 - 유일하게 추가한 MySentinelConfiguration코드이다.  추가만 해 놓으면 된다.


- 단지, SDR의 getter와 setter의 오류를 피하기 위한 클래스이다. 향후에는 SDR에서 개선이 될 것으로 기대된다.


public class MySentinelConfiguration extends RedisSentinelConfiguration {

MySentinelConfiguration(){

super();

}


public Set<RedisNode> getMySentinels(){

Set<RedisNode> sets=super.getSentinels();

return sets;

}


public void setMySentinels( Set<RedisNode> sentinels){

super.setSentinels(sentinels);

}


}


Posted by yongary
,

spring과 redis연동

Spring 2014. 9. 18. 09:26

SDR(spring-data-redis) 와 jedis커넥션을 이용한 spring을 이용한 redis 연동.


spring에서 redis를 연결하기 위한 기본적인 방법을 커넥션 위주로 설명.

실제로는 redis에 저장할 데이타 class를 별도로 만들어 serialize기능을 이용해 {key,class}형태로 저장하는 방식이 바람직하지만, 여기서는 이 부분은 생략하고 기본적인 연결과정만 설명한다. 


1. pom.xml 수정   (SDR , common-pool,  jedis를 추가)


<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.4.0.RELEASE</version>

</dependency>

<dependency>

<groupId>commons-pool</groupId>

<artifactId>commons-pool</artifactId>

<version>1.6</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-pool2</artifactId>

<version>2.0</version>

</dependency>

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.5.1</version>

<type>jar</type>

<scope>compile</scope>

</dependency>






2. application-config.xml 수정


2.1 네임스페이스에  xmlns:p 추가.

2.2  jedisConnnection, Serializer, redisTemplate 추가.


<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

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

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <!-- Uncomment and add your base-package here:-->

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


<bean id="jedisConnFactory"

    class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"

    p:use-pool="true" p:host-name="127.0.0.1" p:port="6379" />


<bean id="stringRedisSerializer"

    class="org.springframework.data.redis.serializer.StringRedisSerializer"/>


<!-- redis template definition -->

<bean id="redisTemplate"

class="org.springframework.data.redis.core.RedisTemplate"

p:connection-factory-ref="jedisConnFactory"

p:keySerializer-ref="stringRedisSerializer"

p:hashKeySerializer-ref="stringRedisSerializer"

p:valueSerializer-ref="stringRedisSerializer"/>


</beans>



  이 중에서 serializer는 추가하지 않아도 동작은 잘 되지만, 

 기본 serializer로 동작하게 되면 redis에 데이타가 들어갈 때, 앞 부분에 xac xed x00 x05t x00 등의 character가 몇개 들어가게 된다.

(이런 이상한 캐릭터들은 standard serializer에서 사용하는 class정보이다.)




3. JAVA Service 코드


 @Service

public class RedisService implements IRedisService{


@Autowired

private RedisTemplate<String,String> redisTemplate;


public Set<String> keysAll() {


//값을 넣고 싶을 땐, 이렇게..

//redisTemplate.opsForValue().set("abcKey", "valueABC");


return redisTemplate.keys("*");

}



}     


Posted by yongary
,

redis 실행법

mongoDB, redis 2014. 9. 16. 17:49

redis 설치 완료 후, src 폴더로 이동해서


1. stand-alone 모드 실행.

./redis-server  로 서버실행

./redis-cli  로 client 실행.

==> stand alone 모드로 default세팅 되어 실행된다.


reds> info          하면 정보 조회가능(데이타 개수도 있음)

redis>  keys *     하면 모든키 조회 가능(데이타가 많을경우는 조심)

 1)"MPx_TYPE_Audiox"  

 2)"FS_HB"

 3)"MP_TYPE_CTRL"
 4)"XCOD_ROOM_x"

 5)"CNFR_ROOM_x"

 

 



2. 마스터-슬레이브 모드

만약, master-slave모드로 테스트를 해보고 싶으면  redis-server를 아래명령으로 하나 더 실행한다.


$>./redis-server --port 6380 --slaveof 127.0.0.1 6379    



혹시, 이 상태에서 상태를 확인해보고 싶으면 client창에서


127.0.0.1:6379>  info  를 입력하면

#Replication 영역에

role:master

connected_slaves:1

      임을  을 확인할 수 있다.  즉 6379서버의 slave가 잘 뜬 것이다. 




3. Sentinel감시를 통한 HA 구성


위의 1,2번이 된 상태에서  아래와 같이 sentinel을 2개 정도 실행시키고....

$> src/redis-server sentinel1.conf --sentinel

$> src/redis-server sentinel2.conf --sentinel

==> 이러면 기본적인 HA완성.


이 때 1번 서버를 kill등으로 죽이면, 절체(HA)가 발생한다.


절체발생 후, 

client는 새로이 아래와 같은 명령으로 접속한다. 즉 2번 서버로 접속한다. 

$> redis-cli -p 6380  



ㅁ 좀 더 쉽게 절체를 발생시키는 방법은

redis-cli -p 26379 로 센티널로 cli접속을 한 다음에

>  sentinel failover mymaster    를 입력하면 바로 절체가 발생한다. 


  ( http://redis.io/topics/sentinel  참조)

  







 

Posted by yongary
,

vi에디터 한글세팅

Linux 2014. 9. 16. 17:12

한글인코딩을 euc-kr로 할지, utf-8로 할지 고민이 되는 경우,

한국에서만 쓸 것이라면 둘 다 상관이 없고 euc-kr이 좀 더 나을 수도 있을 것 같고

혹시 외국에서도 쓸지 모른다는 생각이 든다면 utf-8이 좋을 것 같다.


대세는 utf-8이라고 보고.. utf-8로 세팅하는 방법을 보면 다음과 같다.


$> env  혹은 locale 을 해보면  os의 LANG을 알 수 있다.

대부분 xx_xx.utf-8 로 되어있다면 문제가 없다.


1. vi 에디터에서 파일변환

:set fileencodings=utf-8  후에 :w 하고 다시 시작.



2. 프롬프트 상에서 파일변환은

iconv  -f euc-kr -t utf-8   euc-kr.html > utf8.html



혹시 

3. vi에디터에서 안보이면

:set enc=utf-8 




참고:   http://www.technet.co.kr/bbs/board.php?bo_table=tip&wr_id=263&page=3 

인코딩 설명:  http://helloworld.naver.com/helloworld/19187 

Posted by yongary
,

< 함수의 실행시간을 milisecond단위로 측정하는 방법. > 



struct timeval을 이용하여 함수의 실행시간을 측정하는 방법인데,


 struct timeval은 초와 micro초로 이루어져 있으므로,

- 초에는 *1000을 

 - micro초에는 /1000 을 해야 milisecond가 된다.


struct timeval { long tv_sec; // 초 long tv_usec; // micro }



=======사용예제================================================

#include <sys/time.h>


struct timeval before,after;  //선언


//사용 
    gettimeofday(&before,NULL);
    run_my_function( );
    gettimeofday(&after,NULL);

    printf("function running time[ms] : %ld\n",
         1000*(after.tv_sec-before.tv_sec) +   
         (after.tv_usec-before.tv_usec)/1000);





Posted by yongary
,


Linux에서 c언어 개발 중,


make는 완료 했으나

실행 중에 .so(공유 library)를 못 찾는 경우 다음과 같이 해결하면 된다.

(이 때, 에러메시지:  cannot open shared object file - no such file or directory)



(UBUNTU)

1. /etc/ld.so.conf.d/  밑에  myApp.conf 파일 추가

2. myApp.conf 파일 첫 줄에

  /usr/lib/myApp/lib  과 같이 특정한 위치 지정    

3. sudo ldconfig (Reload임)



(Debian)

1. /etc/ld.so.conf 편집

2. 마지막 줄에 /usr/lib/myApp/lib 과 같은 특정한 위치 추가

3. ldconfig (Reload임)    (조회는 ldconfig -v)



참조: http://blog.andrewbeacock.com/2007/10/how-to-add-shared-libraries-to-linuxs.html 



또다른 간단한 방법으로는

run 쉘스크립트를 하나 만드는 것이다.


#!/bin/bash

LD_LIBRARY_PATH=/home/myid/common/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

./test_program

Posted by yongary
,

spring을 이용해서 mongoDB를 연동할 경우 방법은 다음과 같다.


1. pom.xml 수정 : spring-data-mongodb 추가


         <dependency>

       <groupId>org.springframework.data</groupId>

       <artifactId>spring-data-mongodb</artifactId>

       <version>1.5.1.RELEASE</version>

</dependency>

        

      참고: http://projects.spring.io/spring-data-mongodb/

      




2. application-config.xml 수정.   ( 주로 resources/spring/ 밑에 위치)


    2.1 네임스페이스 수정   :  xmlns:mongo 한 줄 및  xsi:schemaLocation 2줄 추가.

    2.2 mongo:db-factory 추가 및  mongoTemplate 추가



   <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mongo="http://www.springframework.org/schema/data/mongo"

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

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/data/mongo

        http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">

    

<!-- Uncomment and add your base-package here:-->

    <context:annotation-config /> 

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

   

    <mongo:mongo host="localhost" port="27017"/>

    <mongo:db-factory   dbname="kcdb"/>   


    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

 <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>

    </bean>  

</beans>





3. Vo(value object) 와 유사한   java파일 작성. ( @Document와  @Id를 포함하도록 한다. )

       

    @Document    //mongoDB에서 persistent한 도메인으로 인식하게 되는 어노테이션. 즉 테이블로 인식.

     public class User{


@Id       // mongoDB의 테이블(category)에서 데이타별 고유id로 자동생성 되는 id에 매핑하기 위함) 

private String id;


private String username;


//setters & getters ... 

}




4. Service에서 mongoTemplate를 이용한 query작성.

 

  @Service

  public class MongoService implements IMongoService{


@Autowired

private MongoTemplate mongoTemplate;

     

  public User getUser(String userName) {


Query query = new Query( where("username").is(userName) );

User user=mongoTemplate.findOne(query, User.class);

return user;

}


   }

Posted by yongary
,

스마트폰을 이용한 서비스를 개발하다 보면

DB에 사용자를 저장하거나, 사용자별로 정보를 관리하거나 하기 위해서 사용자의 고유ID가 필요하게 된다.


고유ID로 제일 쉬운 방법으로는


1. 회원ID: 회원가입 유도 후 사용자별 ID생성  (혹은 eMail ID 등) 


그러나 회원가입 자체를 부담스러워 하는 서비스도 많으므로,

회원가입없이 유저별로 구분을 하려면

2, 3, 4번과 같이 전화번호나 기기의 고유번호를 사용할 수 있다.


2. MSISDN: 전화번호  =  국가코드(82) + 전화번호(010-1234-5678 )      

3. IMSI: 통신사가입 아이디(15자리) = MCC(3자리) + MNC(2~3자리) + MSIN(9~10자리)   

                                            = 450(한국) + 05(특정이통사) + 1234567890


4. IMEI :  하드웨어 고유값 (15자리) - 휴대폰에서  *#06# 을 입력하면 확인 됨.  
                                              (전화통화를 위해서 기기에 꼭 필요)



(최근에는 주민번호에 이어 전화번호도 수집하지 못하게 한다는~~

그리고 2,3,4번의 경우 WiFi전용 갤플레이어나 IPod 같은 경우 값이 없다,

 - 2,3번은 USIM카드에 있고, 4번은 usim장착이 가능한 기기에 박혀 나옴)


따라서 스마트폰 뿐 아니라 WiFi전용기기도 수용하는 서비스의 경우에는 아래 5번을 이용하는 방법을 고려한다.


5. android_ID 및 인스턴스ID( IOS)

   => 기기 초기화나 리셋시에 값이 바뀌는 문제는 존재



요약하면, 모든 상황을 커버할 수 있는 최적의 고유ID는 없으므로

서비스의 상황에 가장 적합한 항목을

상기 항목들 중에 선택해서 서비스를 개발해야 할 것이다.  




     

Posted by yongary
,

우분투 14.04 LTS를 설치하고 나서 눈에 띄는 불편함 및 해결 포인트는 


1. 터미널은 어떻게 실행하지?

   CTRL+ALT+T 로 실행.

   ->  한 번 실행만 하면, 사이드 바에 뜨므로 이 때 사이드 바의 아이콘에 우측마우스를 클릭해서 고정이 가능하다.



2.  한글입력이 안된다. (혹은 한영 전환이 안된다)

   - 상단 status바에 한글(태극기 마크 아이콘)을 우측클릭한다.

   - "텍스트 입력창 설정..." 메뉴를 선택한다.

   -  좌측 사용할 입력 소스:  에다가 영어(혹은 English)를 추가한다.

      => 우측 소스 전환시 키를 바꿀 수 있다.  (보통 Shift + 스페이스  선호.)



3. 화면밝기 조절이 안된다. 

   - Intel 그래픽 카드로 설정이 안되서 그런 경우..    아래 파일 추가.

    $> vi  /usr/share/X11/xorg.conf.d/20-intel.conf

  Section "Device"

Identifier "card0" Driver "intel" Option "Backlight" "intel_backlight" BusID "PCI:0:2:0" EndSection

     ( http://itsfoss.com/fix-brightness-ubuntu-1310/  참고)




4. 밝기 조절은 되지만, 껐다 켜면 reset이 되는 경우.  
   ( xbacklight 를 설치하고,   .profile에 값 설정.)


    - sudo apt-get install xbacklight

- 홈 디렉토리의 .profile에 xbacklight -set 40 이라고 삽입. (값은 0~100 백분률임)



5. ipv6관련 오류가 한번씩 뜨는 게 감지되어서 ipv6 disable. (이것으로 인해 대기모드나 절전모드로 자동으로 한번씩 빠졌음) 


$> vi /etc/sysctl.conf

해서 아래 3~4줄 추가.    

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

   시스템 rebooting 후

   $>  cat /proc/sys/net/ipv6/conf/all/disable_ipv6  해보고,

       1  

    이라고 나오면 정상적으로 ipv6기능이 disable된 것임.



==>(한달 후)  추가적으로 특정 wifi에 접속시 avahi데몬 오류가 나는 경우도 발생되어

/etc/avahi/avahi-daemon.conf  에서 use_ipv6=no 로 수정.



Posted by yongary
,

Ubuntu설치 완료 후, windows를 설치하고 싶어졌다.

windows 노트북이 따로 있긴 하지만, 휴대성이 불편해서 간혹 필요할지도 모르는 windows를 설치하게되었다.



1. Windows용 NTFS 파티션 확보 필요.


  - 우분투의 /home 폴더를 분할해서 NTFS파티션 확보 필요

  - 우분투에 Gparted를 설치해서 파티션을 분할하면 되지만, Gparted에서 /home영역은 마운트 해제가 되지 않는다.

        => 왜냐하면, 로그인한 유저가 /home을 사용하고 있기 때문이다.


  - 그래서, 부랴부랴 새로운 유저를 /tmphome이라는 폴더를 home 사용하도록 만듦.

     $> adduser tmpuser -d /tmphome      참고) http://mintnlatte.tistory.com/256 


  - 그 후 tmpuser로 로그인해서, Gparted에서 마운트해제 후  파티션을 재조정 함.    (Windows NTFS용으로 주 파티션 24G 확보)



2. WIndows USB를 만들어서, Windows 설치.

   

   - 자세한 사항은 고수분들 사이트 참조:       http://deviantcj.tistory.com/469      http://jjorae.com/posts/394  




3. WIndows 설치가 완료되면 항상 Window로 부팅이 됨. boot-repair를 설치하여  GRUB 수정 필요 

  

     boot-repair설치 명령이 14.04에서 좀 바뀜. ( http://askubuntu.com/questions/449428/unable-to-locate-package-boot-repair-in-14-04 )

   - sudo add-apt-repository ppa:yannubuntu/boot-repair

- sudo sh -c "sed -i 's/trusty/saucy/g' /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list"

- sudo apt-get update sudo apt-get install -y boot-repair && boot-repair



4. 완료. 

Posted by yongary
,

오랜시간 개발환경을 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
,

고지혈증이란?

고지혈증은 혈액내에 지방질이 많은 경우를 얘기한다.

고지혈증은 일반적으로 아래 2가지 중 한가지인 경우가 많다.


1. 고중성지방혈증

    - 혈중 중성지방 농도가 250mg/dL 인 경우. 

2. 고콜레스테롤혈증

    - 혈중 콜레스테롤 농도가 240mg/dL인 경우.  


고지혈증의 발생원인은 여러가지가 있겠지만 

비만, 술, 담배, 스트레스 등과 함께 지방이 많은 음식의 섭취가 주요 원인이 아닐까 예상이 된다.

혹은 지방으로 변형저장이 가능한 탄수화물도 원인일 수도...) 


고지혈증은 자각증상이 없지만, 향후 동맥경화를 일으킬 수도 있으므로 주의가 필요하다. 

현미, 버섯, 채식, 유산소 운동이 가장 좋은 치료법이라고 알려져 있다.



비타민D 가 부족한 경우, 이로 인해 고지혈증이 유발된 건 아닌지 의심해 볼 필요가 있는데 , 이러한 경우에는

비타민D를 인위적으로 보충하는 방법이 있다.


비타민D는 시중에 파는 간단한 약으로 보충하는 게 일반적이고

요즘에는 주사도 등장하였다고 한다. (한 방에 약 3~5만원?)


비타민D는 하루에 2000 IU이하를 보충하는 게 좋다고 일반적으로 알려져 있었으며
한 번 복용을 시작하면 평생해야 하는게 좋을 것 같다는 의견도 한 때 존재했지만

올해 어떤 지침에 의하면 나아지면 그만 먹는게 더 좋다는 의견이 있다고 한다.

( 자세한 건 의사와 상담을 !! )

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
,

이 곳은 서판교에서는 드물게 2명의 원장님께서 대학병원 시스템처럼 협진을 하며 운영하십니다. 
(아 이젠 한명으로 바뀌셨네요)

대학병원 수준의 세심한 진료를 받을 수 있습니다.


http://blog.naver.com/seoulonedc    

(클릭해서 방문해 보세요) 

 


^^  





 


Posted by yongary
,

많은 사람들이 기억하고 있을 것이다.

1999년 7월~8월에 노스트라다무스의 예언에 의해 지구가 멸망한다는 얘기가 있었고,
이 때에, 천문학적으로는 그랜드 크로스 (Grand Cross) 가  1999년 8월 17~18일에
발생한다는 얘기까지 있었기 때문에, 지구 멸망설을 정말로 믿는 사람도 많았고,
혹시나 멸망하면 어쩌지? 하는 사람도 다수 있었다.


그랜드 크로스 (Grand Cross)

그랜드 크로스란 지구를 중심으로 행성들이 십자가 모양으로 배열되는 현상으로,
아래에 그랜드 크로스에 거의 근접한 1999년 7월 말의 행성배열 가상도를 볼 수 있다.
( 당시 신문에 났던 그림 )

사용자 삽입 이미지

이 그림을 보고도, 그랜드 크로스가 발생했다고 하는 사람도 있었고,
이게 무슨 십자가 모양이냐.. 하는 사람도 있었지만,

지구를 기준으로 볼 때, 화성, 목성, 토성 이  가로선상에 있고,
태양,수성,금성, 천왕성이 세로선상에 있다고 어느정도는 분명히 말 할 수 있다.
(시간이 되는데로 정확한 8월 17~8일 경의 그림을 그릴 예정입니다)


그랜드 크로스 (Grand Cross) 가 지구에 미치는 영향

지구에 가장 큰 힘(인력)을 미치는 별/위성/행성은 조그마한 달이다.
만유인력은 거리의제곱에 반비례하므로,  조그마하더라도 가까이 있는 별이 가장 큰 힘을 발휘하게 되는 것이다.

학자들이 열심히 계산한 바에 의하면, 태양계 행성들을 모두 합해도 달인력의 2%도 채되지 않는다고 한다.
그 2% 중에 수성,금성,화성,목성.. 정도가 영향이 있고, 토성이 아주 약간 있고,  천왕성 이후로는 거의 인력이 없다고 생각해도 되겠다.

따라서, 일부 천문학자들은 그랜드 크로스가 발생해도 달인력의 2%도 되지 않으니, 지구에 영향이 없을 것이다라고 했지만, 또다른 천문학자들은 그 2%가 지구에 어떤 영향을 미칠지 예상할 수 없다고 생각하였다. 겪어보지 않은 일이니 당연한 것이었다고도 할 수 있다.


그랜드 크로스가 있었던 1999년 8월 17~18일, 지구는?

모든 사람들이 1999년 지구 멸망설은 빗나갔고, 노스트라다무스는 틀렸고, 그랜드 크로스는 '그게 뭔데?' 이런 반응을 보였지만, 사실 지구는 그 당시에 조용히 넘어가지 않았다.

나의 직장동료가 그 당시에 터키로 여행을 가서 호되게 마음고생을 하고 왔는데, 그 당시에 정확하게 터키 대지진이 발생하였다.  터키 대지진은 수만명의 생명을 앗아간 대참사이며, 자세한 사항은 각종 기사검색에 잘 나온다. ( 혹시 노스트라다무스도 이 장면을 목격한 건 아닐까? )

아무튼 터키대지진은, 지구에 달 힘의 2%도 안되는 힘이 추가되면, 이정도 규모의 일이 일어날 수 있다는 걸 보여줬다고 하겠다.








Posted by yongary
,

과거 우리의 조상들은 해충인 모기를 쫒기위해 계피를 차로 마시거나 잠잘때 머리맡에 계피를 두고 잤다고 합니다.

실제로 계피(시나몬, cinnamon)에 다량포함되어 있는 신남알데하이드 성분은 모기 살충효과가 있다고 연구 발표 된 바 있습니다 특히 모기 유충에 대한 살충효과가 있다고 발표되었었구요,

그외 군부대에서 모기를 쫗기 위해, 계피차를 분무해서 2시간 이상의 효과를 봤다고도 합니다.

모기향이 싫으신 분들은 계피를 집안 곳곳에 두거나, 계피차를 분무하는 방법등을 사용해,
모기를 쫓는 방법을 이용해 보는 것도 좋을 것 같습니다.

Posted by yongary
,

해독 음식

건강과 음식 2008. 7. 23. 15:52

해독음식만 나열하면 다음과 같다.


니코틴 → 양파
알코올 → 북어
수은 → 마늘
납 → 사과
콜레스테롤 → 김


카드뮴 → 숙주나물
알루미늄 → 요구르트
다이옥신 → 녹차
대장균 → 마
스트레스 → 귤

Posted by yongary
,

니코틴해독 - 양파

알콜해독 - 북어



허리에 좋은차 - 인삼차

몸에 열이 많거나, 혈압이 높은 경우에는 부작용에 주의 .
그리고 꾸준한 섭취보다는 2~3개월 반복섭취하는것이 효과적.
또한 면역력을 증가시키고 두뇌활동을 활발하게 해줍니다.


여름감기예방 - 수삼

암예방 - 마늘

마늘의 강렬한 냄새는 바로 알리신 성분 때문!
이 성분은 강력한 살균작용을 할 뿐만 아니라 암예방에도 놀라운 효과가 있다.
특히 마늘은 소화기계통의 암에 그 효과가 더 크다고 한다

미국 노스캐롤라이나 대학 플라이샤워 박사의 연구보고 서에 따르면, 미국인, 이탈리아인, 중국인 등 총 10만 명을 대상으로 조사한 결과 마늘을 많이 먹는 사람은 위암 50%, 결장암 30%를 예방할 수 있었다고 한다.

마늘은 익혀서 먹어도 그 성분의 차이가 크지 않고, 자른 뒤 10분 정도 두었다가 요리하면 그렇지 않는 경우보다 항암예방에 더 효과가 크다는 연구결과가 있으므로 이렇게 조리해서 먹는 것도 좋다.

( 암종류별 예방 -
 위암예방-콜리플라워
 대장암예방-생강
 폐암예방-시금치
 간암예방-양송이
 알콜성 간암예방-홍합
 자궁암예방-미역
 식도암예방-당근
 피부암예방-호박
 전립선암예방-토마토
 유방암예방-검은콩
 백혈병(혈액암)예방-녹차 )

당뇨병 예방 - 콩, +무

당뇨 예방을 위해선 평소 혈당지수가 낮은 음식을 섭취하는 게 좋다.

바로 콩이 혈당지수가 낮은 대표적인 음식이다. 그리고 미국 일리노이 대학 존 어드먼 박사의 연구보고서에 따르면 콩 식품이 당뇨병 환자의 뇨단백을 감소시킴으로써 저하된 신장기능을 호전시킨다는 결과도 있다.

또한 콩 속에 풍부한 식이섬유는 위와 장에서 포도당의 흡수 속도를 낮추어 당뇨병을 억제하고 급격한 혈당상승을 막는 효능이 있다.

심장병 예방 - 고등어

바다의 보리라고 불리는 고등어는 단백질과 지질이 풍부한 식품!

고등어를 일주일에 2번 이상 섭취한 경우, 불포화 지방산인 오메가-3의 함량이 높아져 심장병으로 인한 사망률을 무려 81% 줄일 수 있다.

고등어의 불포화지방산은 혈관확장, 혈소판응고 억제, 콜레스테롤 저하하는 작용을 하며, 고등어에 풍부한 셀레늄은 심장의 통증을 완화시켜주고, 심장발작을 미연에 막아주는 물질로 심장병에 탁월한 효과가 있다.

노화억제 - 호두

노화억제에 효과적인 호두! 호두에 든 비타민 E는 우리 몸 전체의 노화를 미연에 막아주는 효과가 있다. 그리고 호두에 든 리놀산과 리롤레산 등의 불포화지방산은 장수에도 효과가 좋다.

활성산소 해독 - 부추

활성산소를 제거해 주는 부추! 이 부추에 든 베타-카로틴은 강력한 항산화작용을 해서 활성산소를 억제한다. 부추는 우리 몸에 생긴 활성산소를 꼭 붙잡아 활동을 못하게 할 뿐만 아니라 활성산소 자체의 발생을 억제하는 좋은 식품이다.

정력증강 - 보리 , +더덕, +굴 ( 스테미너-부추 )

힘의 상징인 고대 로마의 검투사들이 체력 보강을 위해서 먹었던 보리!
그래서 그들을 부르는 또 다른 이름이 바로 ‘보리를 먹는 사람’이었다고 한다.또한 동의보감에서는 보리를 오곡지장이라고 하여 다섯가지 곡식 중 가장 음뜸이라고 손꼽았다.
보리에는 다량의 비타민과 식이섬유가 들어있고, 말초신경의 활동을 원활하게 하는 비타민E, 그리고 말초신경의 기능을 향상시키는 비타민B가 들어있다. 이런 비타민들은 정력강화에 큰 도움을 준다.

다이어트 - 버섯, +옥수수, +두부

채소와 육류의 장점을 골고루 갖추고 있고, 무기질이 풍부하고 육류처럼 단백질이 적절히 들어 있어 서양에서는 채소스테이크라고 부르는 버섯!

버섯은 칼로리가 낮을 뿐 아니라 비타민B군, 나이아신, 비타민D 등은 물론, 칼슘, 철분, 아연, 마그네슘, 칼륨 등의 무기질이 충분히 들어 있다.

그래서 몸무게는 낮춰주고, 영양은 올려주게 된다.

일본 국립건강 영양연구팀의 연구에 따르면, 하루섭취 칼로리 당 식이섬유의 양이 많은 사람일수록 비만확률이 낮은 것으로 조사되었다고 한다. 그러므로 버섯에 풍부한 식이섬유의 질긴 성질이 섭취 시 많이 씹게 하고, 이렇게 많이 씹을수록 식욕조절을 담당하는 두뇌에 자극을 주어 과식을 방지하는 효과가 있다. 그리고 버섯은 필수 아미노산과 다양한 비타민들 함유하고 있어서 건강을 지키며 살을 뺄 수 있는 최상의 식품이다.

시력보호 -

김에는 눈의 비타민이라고 불리는 비타민A가 풍부하다.
평소에 비타민A가 부족하면 시력감퇴 뿐만 아니라 야맹증까지 생길 수 있다.
김 100g에 든 비타민A는 무려 3750R.E로 많이 섭취하면 눈을 보호하는데 효과적다.

두뇌개발 - 달걀

달걀노른자에 든 레시틴은 뇌의 먹이라고 불릴 정도로 뇌활동에 절대적으로 필요한 성분이다. 이 레시틴이 많이 함유된 식품을 먹으면 기억력을 증진시킬 수 있고 치매까지 예방할 수 있다.

면역강화 - 풋고추

풋고추는 비타민C가 아주 풍부한 식품으로, 비타민C 하루권장량이 풋고추 2개면 OK! 이렇게 풍부한 비타민C가 우리 몸에 들어온 바이러스에 대항하는 능력을 높여주고 질병치유에도 효과가 있다. 그리고 풋고추에 든 매운 성분인 캡사이신은 에너지 대사를 높이고 내장 기능을 튼튼하게 해주는 효과도 있다.


스트레스해소-표고버섯
피로회복-아스파라거스

위장튼튼-감자
식욕촉진-딸기
간기능,혈액순환-쑥

여성활력,빈혈,골다공증-꽃게
봄철나른함 탈출-두릅
충곤증예방-달래

고혈압,동맥경화제압,체질개선-다시마
갈증해소-오이
배탈,식중독예방-매실
피로회복,피부영양제-보리
혈액순환,세포형성,두뇌발달-오징어
원기회복,스테미너증진-양파

피부매끈,소화기관튼튼-앵두
열내림,갈증해소-수박
감기예방,면역강화,기력회복-콩나물
근육생성,심장건강-닭
신경통완화-가지
폐건강-복숭아
허약체질개선-포도


지방간예방-바지락
위염예방-우유
고혈압예방-고구마
동맥경화예방-꽁치

변비탈출-우엉
빈혈해소-파래
비만예방-느타리버섯
감기예방-풋고추
위궤양예방-애호박
신부전예방-대합

고지혈증예방-강낭콩
통풍예방-미나리
심장질환예방-고등어
골다공증예방-뱅어포

칼슝 - 양배추,두부

호흡기보호 - 참다래

중금속해독 - 풋메밀싹

피부보호 - 무순, 좋은피부-오리, 백옥피부-피망

Posted by yongary
,