블로그 이미지
프로그램을 가장 훌륭하게 작성하는 방법은 상태가 변경되는 오브젝트들과 수학적인 값을 나타내는 오브젝트들의 조합으로 표현하는 것이다. -Kent Beck 초초초보

카테고리

Programming (184)
ASP.NET (9)
Silverlight (2)
Javascript (20)
C# (8)
java (25)
SQL (14)
Oracle (3)
MyBatis (3)
기타 (52)
개발방법론 (1)
trouble shooting (2)
Linux (5)
스칼라 (5)
html (2)
grails & gradle (3)
Spring (2)
rabbitmq (1)
(3)
spark (0)
docker (3)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글


Dockerfile

 FROM docker.io/centos:7.4.1708

  

# 사용자 지정

USER root


# 언어셋 설치

RUN yum clean all \

 && yum repolist \

 && yum -y update \

 && sed -i "s/en_US/all/" /etc/yum.conf  \

 && yum -y reinstall glibc-common


# 기본적으로 필요한 OS 패키지를 설치한다.

RUN  yum -y install tar unzip vi vim telnet net-tools curl openssl \

 && yum -y install apr apr-util apr-devel apr-util-devel \

 && yum -y install elinks locate python-setuptools \

 && yum clean all


RUN yum install -y openssh-server \

    && yum install -y sudo


ENV LANG=ko_KR.utf8 TZ=Asia/Seoul


RUN echo "root:root" | chpasswd

# 컨테이너 실행시 실행될 명령

CMD ["/bin/bash"]



Dockerfile Build

 docker build -t centosksh:v1 .


Docker 실행 1

 docker run --privileged -it -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 22 --name=centosksh1 centosksh:v1 /usr/sbin/init



Docker 실행 2

 docker run --privileged -it -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 32000:22 --name=centosksh2 centosksh:v1 /usr/sbin/init



sshd service 시작

service sshd start 


instance 접속

ssh -p 32772 root@localhost

ssh -p 32000 root@localhost 




Posted by 초초초보
, |

https://www.confluent.io/blog/publishing-apache-kafka-new-york-times/

Posted by 초초초보
, |

reactive

카테고리 없음 / 2018. 9. 6. 14:30

http://atin.tistory.com/575

http://blog.naver.com/PostView.nhn?blogId=jdub7138&logNo=220983291803&parentCategoryNo=58&categoryNo=&viewDate=&isShowPopularPosts=true&from=search


http://hamait.tistory.com/761

https://okky.kr/article/375881?note=1189639




Posted by 초초초보
, |

spring flux

카테고리 없음 / 2018. 9. 6. 14:30

https://bclozel.github.io/webflux-workshop/


Posted by 초초초보
, |



1. Redis Connection Factory

@Component

@Configuration

public class RedisConnectionConfig {


  @Value("${redis.host}")

  private String redisHost;


  @Value("${redis.port}")

  private int redisPort;


  @Bean

  public RedisConnectionFactory XXXRedisConnectionFactory() {

    JedisPoolConfig poolConfig = new JedisPoolConfig();

    poolConfig.setMaxTotal(5);

    poolConfig.setJmxNamePrefix("redispool");

    poolConfig.setJmxNameBase("redis.client.jedis:type=XXXSentinelPool,name=");


    JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig);

    connectionFactory.setUsePool(true);

    connectionFactory.setHostName(redisHost);

    connectionFactory.setPort(redisPort);


    return connectionFactory;

  }

}



2. RedisTemplate extends

@Getter

@Setter

public class XXXRedisTemplate<K, V> extends RedisTemplate {

  private String cacheName;




3. RedisSerializer impletemt

@Slf4j

public class XXXRedisSingleSerializer<T> implements RedisSerializer<Object> {


  private Class<?> clazz;

  private ObjectMapper objectMapper = new ObjectMapper();


  public XXXRedisSingleSerializer(Class<?> clazz) {

    this.clazz = clazz;

  }


  @Override

  public byte[] serialize(Object o) throws SerializationException {

    try {

      return objectMapper.writeValueAsBytes(o);

    } catch (IOException e) {

      log.warn("serialize exception list :  {}, message : {}", o, e.getMessage(), e);

    }


    return null;

  }


  @Override

  public T deserialize(byte[] bytes) throws SerializationException {

    try {


      Object o = objectMapper.readValue(bytes, objectMapper.getTypeFactory().constructType(clazz));


      return (T) o;

    } catch (IOException e) {

      log.warn("deserialize exception data :  {}, message : {}", bytes, e.getMessage(), e);

    }


    return null;

  }

}


 


@Slf4j

public class XXXRedisSerializer implements RedisSerializer<List> {


  private Class<?> clazz;

  private ObjectMapper objectMapper = new ObjectMapper();


  public XXXRedisSerializer(Class<?> clazz) {

    this.clazz = clazz;

  }


  @Override

  public byte[] serialize(List ts) throws SerializationException {

    try {

      return objectMapper.writeValueAsBytes(ts);

    } catch (IOException e) {

      log.warn("serialize exception list :  {}, message : {}", ts, e.getMessage(), e);

    }


    return null;

  }


  @Override

  public List deserialize(byte[] bytes) throws SerializationException {

    try {

      List<?> list =

          objectMapper.readValue(

              bytes, objectMapper.getTypeFactory().constructCollectionType(List.class, clazz));


      return list;

    } catch (IOException e) {

      log.warn("deserialize exception data :  {}, message : {}", bytes, e.getMessage(), e);

    }


    return Lists.newArrayList();

  }

}





4. RedisTemplate Bean 등록

@Configuration

public class XXXRedisTemplateConfig {


  @Autowired

  @Qualifier("XXXRedisConnectionFactory")

  private RedisConnectionFactory XXXPortalRedisConnectionFactory;


  @Bean

  public XXXRedisTemplate<String, XXXdto1> xxx1RedisTemplate() {

    return redisTemplate(XXXdto1.class, XXXCacheConst.XXX1);

  }


  

  @Bean

  public XXXRedisTemplate<String, xxx2Dto> xxx2Template() {


    XXXRedisTemplate<String, xxx2Dto> redisTemplate =

        new XXXRedisTemplate<>();

    redisTemplate.setKeySerializer(new StringRedisSerializer());

    redisTemplate.setValueSerializer(

        new XXXRedisSingleSerializer<xxx2Dto>(xxx2Dto));

    redisTemplate.setConnectionFactory(XXXRedisConnectionFactory);

    redisTemplate.setCacheName(XXXCacheConst.xxx2);

    return redisTemplate;

  }


  @NotNull

  private XXXRedisTemplate redisTemplate(Class<?> clazz, String cacheName) {

    XXXRedisTemplate redisTemplate = new XXXRedisTemplate<>();

    redisTemplate.setKeySerializer(new StringRedisSerializer());

    redisTemplate.setValueSerializer(new XXXRedisSerializer(clazz));

    redisTemplate.setConnectionFactory(XXXRedisConnectionFactory);

    redisTemplate.setCacheName(cacheName);

    return redisTemplate;

  }



5. CacheManager에 등록

  @Autowired private List<XXXRedisTemplate> XXXRedisTemplates;


  @Bean

  public CacheManager cacheManager() {

    List<RedisCacheManager> cacheManagers =

        XXXRedisTemplates

            .stream()

            .map(

                redisTemplate -> {

                  RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);

                  redisCacheManager.setCacheNames(Lists.newArrayList(redisTemplate.getCacheName()));

                  redisCacheManager.setDefaultExpiration(300);

                  redisCacheManager.afterPropertiesSet();

                  return redisCacheManager;

                })

            .collect(Collectors.toList());


    CompositeCacheManager compositeCacheManager = new CompositeCacheManager();

    compositeCacheManager.setCacheManagers(Lists.newArrayList(cacheManagers));


    return compositeCacheManager;

  }



Posted by 초초초보
, |

kubernetes 강좌

기타 / 2018. 9. 6. 13:59

http://zerobig-k8s.tistory.com/category/Kubernetes?page=2

Posted by 초초초보
, |

free ssl (letsencrypt)

기타 / 2018. 8. 31. 14:43

https://letsencrypt.org/

Posted by 초초초보
, |

http://kimjmin.net/2018/01/2018-01-build-es-cluster-1/

Posted by 초초초보
, |

https://www.facebook.com/steven.kim.773/posts/746774425427586?hc_location=ufi

Posted by 초초초보
, |

https://github.com/trekhleb/javascript-algorithms/blob/master/README.ko-KR.md

Posted by 초초초보
, |