최신 글
-
Java & Scala spring boot HttpServletRequest 사용 쿠키 구현시 HttpSession.getAttribute(String)" is null 에러 발생 대응 spring boot에서 쿠키/세션 로그인 기능 구현시 다음과 같은 에러를 만났습니다 ...HttpSession.getAttribute(String)" is null 분명히 다음과 같이 attribute를 제대로 설정했는데 왜그랬을까요? HttpSession session = request.getSession(true); session.setAttribute("LOGIN_MEMBER", 123); 이유는 다음과 같습니다. 제가 가진 특수한 상황 때문이였는데요. - server : localhost:8080 - client : localhost:3000 - client는 server로 axios 요청을 함 위 상황은 여러가지 문제가 있었고 해결방안은 다음과 같습니다. 1) CORS 문제 크로스 도메인에 대..
-
golang golang prviate repository에서 디펜던시 가져오는 방법 golang private repository를 하위 모듈로 가져올 때 그냥 import를 실행하고 나면 다음과 같은 이슈가 종종 발생하곤합니다. $ go get github.com/AndersonChoi/my-private-repo go: downloading github.com/AndersonChoi/my-private-repo v0.0.0-20230306053459-dec1333da9d3 go: github.com/AndersonChoi/my-private-repo@v0.0.0-20230306053459-dec1333da9d3: verifying module: github.com/AndersonChoi/my-private-repo@v0.0.0-20230306053459-dec1333da9d3: re..
-
golang goroutine 함수 여러번 실행 결과값 기다리는 2가지 방법 - js callback 처럼 WaitGroup을 사용하는 방법 1) sync.WaitGroup을 사용하여 대기 2) go func 사용하여 goroutine 함수 호출 위 2가지 방법을 사용하면 여러번 실행된 결과값을 병렬 처리한 뒤 한개의 결과값으로 추출할 수 있습니다. 예제 코드는 다음과 같습니다. package main import ( "fmt" "math/rand" "strconv" "sync" "time" ) func main() { result := 0 count := 10 var wg sync.WaitGroup // WaitGroup 선언 wg.Add(count) // Wait 개수 지정 for i := 1; i
-
golang go gin framework graceful shutdown 예제 https://gin-gonic.com/docs/examples/graceful-restart-or-stop/ Graceful restart or stop Do you want to graceful restart or stop your web server? There are some ways this can be done. We can use fvbock/endless to replace the default ListenAndServe. Refer issue #296 for more details. router := gin.Default() router.GET("/", handler) // [...] end gin-gonic.com gin은 golang에서 많이 쓰이는 웹프레임워크입니다. graceful..
-
Kafka windows의 WSL환경에서 아파치 카프카 설치, 실행하는 방법 1) git 설치 https://git-scm.com/download/win Git - Downloading Package Download for Windows Click here to download the latest (2.39.2) 32-bit version of Git for Windows. This is the most recent maintained build. It was released 10 days ago, on 2023-02-14. Other Git for Windows downloads Standalone Installer 32-bit Git for Win git-scm.com 상기 URL에서 windows용 git을 설치합니다. 2) WSL 환경 설치 Windows Subsystem..
-
golang intellij에서 golang 프로젝트 인식이 잘 안될때 intellij에서 golang을 최초로 실행 시키고 난뒤에 $ go mod init myapplication 프로젝트가 정상적으로 라이브러리들을 Import시키지 못할 때가 있습니다. 그럴 경우에는 cmd + , 를 눌러서 Preferences로 간 뒤 Go Modules의 Enable Go modules integration을 체크하면 싱크됩니다. 싱크가 완료된 go.mod 파일 모습 module myapplication go 1.19 require ( github.com/gin-gonic/gin v1.9.0 github.com/prometheus/client_golang v1.14.0 ) require ( github.com/beorn7/perks v1.0.1 // indirect github.co..
-
개발이야기 맥 벤투라 디스플레이 해상도 조정하기 맥 벤투라에서 디스플레이 옵션에서 확장된 해상도를 확인하기 위해서는 5개 디스플레이 옵션 위에서 마우스 우클릭을 하여 '목록 보기'를 클릭하면 됩니다. 이때 모든 해상도 보기 버튼을 누르면 hidpi가 적용되지 않은 해상도도 함께 볼 수 있습니다.
-
Elasticsearch RestHighLevelClient로 구현한 idempotence 데이터 적재 SHA-256이란? http://wiki.hash.kr/index.php/SHA256 SHA256 - 해시넷 SHA-256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다. SHA-256은 미국의 국립표준기술연구소(NIST; National Institute of Standards and Technology)에 의해 공표된 wiki.hash.kr SHA-256 해시 함수는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과값을 출력한다. 일반적으로 입력값이 조금만 변동하여도 출력값이 완전히 달라지기 때문에 출력값을 토대로 입력값을 유추하는 것은 거의 불가능하다. 아주 작은 확률로 입력값이 다름에도 불구하고 출력값이 같은 경우가 ..
-
Elasticsearch ElasticsearchClient 7.17.7 기준 java client example code 1) host, port 주입 RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http")).build(); BulkRequest.Builder br = new BulkRequest.Builder(); ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); ElasticsearchClient esClient = new ElasticsearchClient(transport); 2) String으로 된 JSON 데이터 정의 Str..
-
Kafka 커넥트 REST API 확장 플러그인 : Connect Rest Extension Plugin Connect Framework offers REST API that is used to mange the lifecycle of the connector. Its imperative in most enterprises to secure the API and also add authorization to the end points. We could add the ability for authentication and authorization in the framework. But the security requirements are so broad that it's not practical to support all of them in the framework. Hence we must provide a..
인기글
-
하둡 Hdfs dfs 명령어 정리 및 설명(ls, cat, du, count, copyFromLocal 등) Hadoop을 적절히 사용하기 위해서는 hdfs 명령어를 알아야 한다. 아래에 정리를 해 보았다. ※ 2.6.0 version을 기준으로 정리함 Hadoop 명령어 Hadoop filesystem command를 사용하기 위함. Usage : hdfs dfs [GENERIC_OPTIONS] [COMMAND_OPTIONS] HDFS 명령어 File System(FS) shell은 Hadoop Distributed File System(HDFS)를 여타 파일시스템처럼 관리하기 위한 목적으로 command를 사용할 수 있다. Hadoop-2.6.0에서는 총 33개의 HDFS 명령어를 지원한다. 1) appendToFile Local 파일들을 hdfs에 append 저장하기 위한 목적 Usage: hdfs df..
-
servlet container [linux] netstat 명령어 설명 및 예제 netstat 소개netstat(network statistics)는 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스(네트워크 인터페이스 컨트롤러 또는 소프트웨어 정의 네트워크 인터페이스), 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 줄 도구이다. OS X, 리눅스, 솔라리스, BSD를 포함한 유닉스 계열 운영 체제와 윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 8, 윈도우 10을 포함한 윈도우 NT 기반 운영 체제에서 이용이 가능하다. 네트워크의 문제를 찾아내고 성능 측정으로서 네트워크 상의 트래픽의 양을 결정하기 위해 사용된다.리눅스에서 net-tools의 일부인 netstat은 시대에 뒤쳐진 것으로 간주되며, iproute2의 일부인 ss를 대신 사용하여야 한..
-
JS & JQuery jqeury 스크롤 내리다가 특정 영역(부분) 이벤트 발생시키기 웹을 개발하다가 보면 스크롤을 내리다가 특정부분이 되면 혹은 특정 div가 나오게 되면 이벤트를 발생시키고 싶어 할 때도 있다. 아닐때도 있고, 갑자기 하고싶을 때도 있다. 이때 아래와 같이 사용하게 되면 이벤트를 딱 한번만 발생을 시킬 수 있다. HTML scroll down to see the div CSS body, html { height: 100%; } #wrapper { height: 400%; background: none repeat scroll 0 0 #f99ccc ; text-align:center; padding-top:20px; font-size:22px; } #tester { padding-top:1200px; height: 600px; background: none repeat ..
-
개발이야기 NAT IP란? NAT는 Network Address Translation의 줄임말 입니다. NAT는 사설 네트워크에 속한 여러 개의 호스트가하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해 사용합니다. 쉽게말해서 외부망과 내부망을 나눠주는 기능을 하게 되는 것입니다. NAT 특징 - 내부에서 외부로 통신 가능 - 외부에서 내부로 통신 불가 NAT 장점 - 여러 사설 네트워크를 사용함으로서 인터넷 공인 IP 주소를 절약 가능. - 사내망 IP주소를 외부로 알리지 않음으로서 외부로 부터의 침입/공격 차단 NAT 단점 - 네트워크 복잡성 증가 - 네트워크 지연 영향 NAT 종류 - Static NAT : 사설IP와 공인 IP를 1:1 매핑 - Dynamic NAT : 다수 공인 IP와 다수 사설 IP 매핑 - PAT..
-
소프트웨어공학 개발자에게 은총알(silver bullet)은 없다. 슈퍼맨에 나오는 악당들은 성가신슈퍼맨을 물리치기 위해 크립토나이트(은탄환)를 사용한다. There is no silver bullet - 은탄환은 없다. 울버린, 늑대인간, 드라큘라와 같은 괴물들에게 은탄환(one seeks bullets of silver)은 한번에 무력화 시킬 수 있는 최고의 도구이다. - Fred Brooks, 『Silver Bullet-Essence and Accidents of Software Engineering』1986년 프레드 브룩스가 쓴 소프트웨어 공학 논문에서 은탄환의 존재에 대해 최초로 언급하였다. 이와 동시에 소프트웨어 개발의 복잡성을 한번에 해소할 마법같은 솔루션(은탄환)은 없다고 선언한다. 소프트웨어는 복잡성을 내포하고 있으며 여러가지 문제(essential co..
-
nosql NoSQL강의) mongoDB에서 data 모델링하는 방법. 예제포함. MongoDB 주요 특징 Secondary Index ▪ 다른 NOSQL 보다 secondary index 기능이 발달되어 있음 샤드키 지정 ▪ _id : 키 필드 ▪ Shard Key _id - 대부분의 NOSQL은 Row Key = Shard Key 임 Document 기반 ▪ JSON Style의 Document : BSON(Binary JSON) Modelling 주요 적용 모델링 기법 ▪ 비정규화(Denormalization) ▪ 집합(Aggregation) 기타 mongoDB에 대한 정보 → https://blog.voidmainvoid.net/239 NoSQL강의) mongoDB 개요 및 설명 한페이지에 끝내기(mapReduce, aggregate 예제 포함) Humongous DB ▪ Do..
-
JS & JQuery [JavaScript]변수내용이 json인지 확인하는 method(check valid json) js에서 사용하고 있는 variable이 json인지 여부를 확인하고 싶을때가 있다. npm을 사용한 여러 library를 사용하는 방법도 있지만 아래와 같이 간단한 method를 활용하는 방법도 있다. function IsJsonString(str) { try { var json = JSON.parse(str); return (typeof json === 'object'); } catch (e) { return false; } } JSON.parse(str) 메서드 ECMAScript 2015의 standard method이다. JSON.parse(str)는 json의 문자열 구문을 분석하고 들어온 파라미터를 js값이나 객체로 생성한다. 이때 정상적인 json type이 아닌경우 exception을 반..
-
Kafka 카프카 auto.offset.reset 종류 및 사용방법 카프카에서 consumer를 새로 생성하여 topic에서부터 데이터를 가져오기 위해서는 여러 옵션이 필요한데 그 중 하나는 auto.offset.reset입니다다. 이 auto.offset.reset의 역할에 대해 알아보겠습니다. 아래 글은 Kafka-client, Kafka broker 2.4 기준으로 작성하였습니다. auto.offset.reset auto.offset.reset에서 offset은 consumer offset입니다. 만약 이번에 topic에 붙은 consumer의 offset정보가 존재하지 않는다면 auto.offset.reset의 default값(latest)이나 또는 설정한 값을 따라가게 됩니다. auto.offset.reset - latest : 가장 마지막 offset부터 - ..
-
개발이야기 결혼식 청첩장 Github blog로 세련되게 만들기. 후기! 2019년 5월 18일. 이날은 여자친구와 4년 그리고 1일 되는날, 그리고 결혼식이 열렸던 날이다. 결혼식을 준비하면서 만든 github.io blog기반 모바일 청첩장을 만들게 된 이유와 만들기까지의 과정에 대해 이야기 하고자 한다. 결혼식을 위해 뼈발자(뼈속까지 개발자)인 나는 어떻게 결혼식을 준비하는데 있어 실력을 발휘할까 고민하던 도중 모바일 청첩장을 직접! 만들어보면 어떨까 아이디어를 생각하였다. 모바일 청첩장을 직접 만들고자 한 이유는 아래와 같았다. 첫째. 바른x, 더카x 등 종이 청첩장을 만들어주는 사이트의 디자인이 마음에 안든다. 둘째. 무료로 청첩장을 만들어 주는 사이트는 시간이 지나면 만료되어 더이상 조회가 불가능하다. 셋째. 선물 예약 기능. 친구들에게 필요한 선물을 알려주고 예약..
-
Java & Scala Java 8 에서 사라진 maxPermSize, PermSize을 대체하는 옵션? 아래 포스팅은 HotSpot JVM을 기준으로 설명합니다. JVM architecture(오라클 GC설명페이지) Java 7에서 있던 -XX:MaxPermSize=size, -XX:PermSize=size option들은 이제 Java 8에서는 Deprecated되었다. 더 정확히는 metaSpaceSize로 대체(superseded)되었다고 볼 수 있다. 그래서 많은 개발자들이 java7에서 8으로 업그레이드 한 이후에 아래와 같은 warning 메시지를 본적이 있을 것이다. Java HotSpot(TM) Server VM warning: ignoring option PermSize=32m; support was removed in 8.0 Java HotSpot(TM) Server VM warning:..
728x90