도커의 network 설정 중 bridge는 docker0이라는 네트워크를 사용한다. 



$ docker network inspect bridge

[

    {

        "Name": "bridge",

        "Id": "2b3831fb8f909d0a44d7a74f4f0df3327f1f02409096b4b8f4ba5a2ce5a5a7d6",

        "Created": "2019-06-28T22:52:24.973773315Z",

        "Scope": "local",

        "Driver": "bridge",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": null,

            "Config": [

                {

                    "Subnet": "1.1.0.0/16",

                    "Gateway": "1.1.0.1"

                }

            ]

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {},

        "Options": {

            "com.docker.network.bridge.default_bridge": "true",

            "com.docker.network.bridge.enable_icc": "true",

            "com.docker.network.bridge.enable_ip_masquerade": "true",

            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

            "com.docker.network.bridge.name": "docker0",

            "com.docker.network.driver.mtu": "1500"

        },

        "Labels": {}

    }

]




host라는 모드가 있는데 이는 eth0을 사용하는 것이다. 

$ docker network inspect host

[

    {

        "Name": "host",

        "Id": "ee9bddcf9dc5a7804f63522a9740d3226e8df3ce31575cfc9a7ebbd0f7d5a23d",

        "Created": "2018-10-15T07:14:31.9624055Z",

        "Scope": "local",

        "Driver": "host",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": null,

            "Config": []

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {},

        "Options": {},

        "Labels": {}

    }

]


또한 17.06부터 docker container create를 사용할 때 --network host를 사용하면 eth0을 바로 사용할 수 있다. 



kubernetes에서도 이와 비슷한 기능이 있다. 

pod의 모든 컨테이너에서 노드의 eth0을 사용할 수 있도록 HostNetwork(즉 hostNetwork: true)을 설정할 수 있다.  








Posted by 김용환 '김용환'


카프카의 MirroMaker



https://cwiki.apache.org/confluence/display/KAFKA/KIP-3+-+Mirror+Maker+Enhancement

카프카 브로커의 특정 topic을 다른 곳으로 다른 브로커로 보낼 수 있는 간단한 기능이다.

복제가 된다는 점에서 훌륭한 툴이다.


(최근에 elasticsearch도 cross cluster replication를 선보였다.)



 replicator에 비하면 약한 부분이 있기는 하지만 무료이다.


https://docs.confluent.io/current/multi-dc-replicator/mirrormaker.html


사용법은 원체 간단하다. 

> bin/kafka-mirror-maker.sh

      --consumer.config consumer.properties

      --producer.config producer.properties --whitelist my-topic


특이할 점은 consumer 쓰레드 개수를  조절할 수 있다.


소스를 살펴보면,

https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/tools/MirrorMaker.scala


중요한 부분은 consumer는 multi-thread로 실행되고

producer는 while문에서 flush이 이루어지기 때문에. consumer 쪽 보다는 데이터가 많아진다면 producer쪽 이슈가 생길 수 있다. 


Posted by 김용환 '김용환'



pipenv 실행시 pkg_resources.DistributionNotFound가 발생하면

재설치를 진행한다. 



brew를 사용 중이라면

brew uninstall pipenv를 실행 후 

brew install pipenv를 실행한다

Posted by 김용환 '김용환'


최근에 국세청에 "종합소득세 경정 청구"를 올려 환급받았다. 

세무사 없이 공부겸사 도전해 봤고 괜찮았다. 도움이 될만한 링크를 작성한다.





경정 청구 개념에 대한 설명이 잘 나온 글이다.

https://1boon.kakao.com/moneyplus/taxKyunga2


경정 청구 방법

https://blog.naver.com/you_wish/221461237647
(경정 청구할 때 통장 번호를 입금했으면 통장으로 입금된다. 이 방법이 좋은 이유는 따로 우체국 갈 필요가 없다. 7월 2일 통장으로 입금되었다)


5월에 경정 청구를 진행한 후, 6월 쯤에 세무소 직원에게서 연락이 와서 이런 부분은 이렇다. 저런 부분은 이래서 실제는 이렇게 될 것이라고 얘기해 주었다.


그리고 7월 경에 세무서에서 경정 청구 결과에 대한 편지가 왔다.


홈택스의 세금 신고 결과 조회에서 경정 청구 신고 내용을 확인할 수 있다.

https://www.hometax.go.kr/websquare/websquare.wq?w2xPath=/ui/pp/index_pp.xml&tmIdx=01&tm2lIdx=0107000000&tm3lIdx=0107010000



국세환급금 통지서 재발급은 다음을 참고 한다.

https://youandyou1.tistory.com/556

(국세환급금 통지서를 못받으면 재발급 가능하다. 경정 청구시 환급받을 계좌를 등록했으면 바로 통장으로 들어온다)




검색을 해보면 환급된 국세 외에 지방세(10%)를 환급받으려면 따로 '지방소득세 소득세분 환급청구서'를 별도 작성한다고 한다고 하나..

https://cafe.naver.com/ak573/428032

https://m.blog.naver.com/PostView.nhn?blogId=sofushgdma39&logNo=221217593100&proxyReferer=https%3A%2F%2Fwww.google.com%2F


세무서에 전화를 해보니, 지자체에 알려줬으니 따로 신청할 필요가 없다고 알려준다.

하지만 종합 소득세 환급이 된 후, 2주일이 지나도 지방 소득세가 환급되지 않으면 

세무서와 지차체(구청)으로 전화해서 환급 일정을 알아본다.



그러나 중간에 이슈가 있어서 세무서-구청으로 전달되지 않는 경우가 있다. 

지자체 지방세과에 전화해서 확인해보니 경정 청구건을 못 받았다고 한다. 



결국 이차저차 두 군데 전화하고 담당자 확인해서 세무서에서 지자체 지방세과로 전달이 안된 부분이 생겼다.  좀 늦게 전달될 것 같다고 세무소 직원이 다음 달 안에 지방 소득세 환급이 될 것이라 얘기해주었다.


(참고로 동마다 담당자가 있으니.. 담당 공무원 전화번호를 알아두면 좋다. 참고할 것!!)






Posted by 김용환 '김용환'
컬럼에 "COLLATE utf8mb4_unicode_ci" 를 삭제하고 싶다면 다음을 진행한다.


1. 테이블 스키마에 COLLATE utf8mb4_unicode_ci 를 먼저 삭제한다.
> ALTER TABLE samuel_test DEFAULT CHARACTER SET utf8mb4;


2. 그다음에 컬럼에 COLLATE utf8mb4_unicode_ci 삭제한다 (먼저 컬럼 속성을 변경하지 않는다)

> ALTER TABLE samuel_test CHANGE `SESSION_ID` `SESSION_ID` char(36) NOT NULL; 




예시는 다음과 같다.  아래와 같은 테이블이 있다.



DROP TABLE samuel_test;


# dummy

CREATE TABLE `samuel_test` (

  `id` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,

  `name` bigint(20) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;



# 안바뀐다. 

ALTER TABLE samuel_test CHANGE `id` `id` char(36) NOT NULL;



# 먼저 테이블 스키마에 COLLATE 부분을 먼저 정리

ALTER TABLE samuel_test DEFAULT CHARACTER SET utf8mb4;


# 테이블 스키마에 COLLATE 부분이 정리된 것을 확인할 수 있다.

SHOW CREATE TABLE samuel_test;


ALTER TABLE samuel_test CHANGE `id` `id` char(36) NOT NULL;


SHOW CREATE TABLE samuel_test;



이제 제대로 정리되었음을 알 수 있다.



samuel_test, CREATE TABLE `samuel_test` (

  `id` char(36) NOT NULL,

  `name` bigint(20) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4


Posted by 김용환 '김용환'