🔥 hot
-
custom header 값을 nginx 로그로 찍기
기본 http header들은 nginx 에서 제공하는 variable로 찍으면 되는데..어플리케이션에서 직접 생성한 `custom header` 는 어떻게 찍을까? 우선 nginx 에서 지원하는 variable 리스트 중에 `$http_name` 이라는 값이 있다. 저 뒤 `_name` 부분에 custom 하게 생성한 header의 이름을 넣어주면 log에 기록할 수 있게 된다! log_format에 아래와 같이 추가해주면! 예쁘게 잘 찍힐것! log_format main '$remote_addr $http_x_forwarded_for [$time_local] ' '$host $request $status $body_bytes_sent ' '$request_time $upstream_response_t..
-
[성능] heap dump 분석 툴 / heap dump analyzer
설치 필요 X / 10mb 파일 사이즈 제한 있음 Heap Hero https://heaphero.io/ World-class heap Dump analysis - Java, Android memory dump analyzer How much memory your application wastes? Due to inefficient programming, modern applications waste 30% to 70% of memory. HeapHero is the industry's first tool to detect the amount of wasted memory. It reports what lines of source code originating the memor heaphero.io RE..
-
모바일, PC 화면 Nginx로 분기 처리하는 방법
위의 네이버 화면 처럼, 접속하는 디바이스에 따라 모바일, PC 화면으로 분기 처리를 해야함! Proxy로 사용되는 Nginx로 해보자! 어떻게? error page named location header에 있는 user-agent 를 기반으로 분기 처리 error page 란? 에러가 발생한 요청을 지정한 uri로 redirect 하는 nginx module 400대 에러나 500대 에러의 redirect 설정을 하기 위해 보통 사용! → 하지만! 이미 사용하고있는 에러코드를 덮어쓸수는 없으니, error code 418을 사용해서 PC,mobile 분기 처리를 하도록 하겠다! 418 에러코드가 뭐지?? client error 응답 코드로 서버가 커피 내리기를 거부한다는 의미를 가진다 - 왜냐면 서버는..
-
[nginx] 서비스 점검공지 올리는 방법
2019-03-04-nginx-점검-페이지.md 라는 이름으로 github.io 블로그에 올렸던 내용을 가져온 내용입니다. nginx 에서 간단하게 503 에러코드를 사용하여 점검페이지를 띄워보자 서비스 점검 공지 서비스 점검 공지 페이지가 사용되는 경우가 종종 있음. 장애 무중단이 불가능한 빅 업데이트 내가 속한 팀에서는 주로 위와 같은 사유로 점검페이지를 사용함. Nginx 를 L4 뒤, application 앞에 두는 구조이기 때문에 점검 페이지를 nginx 쪽에서 관리하고있음. 실제 점검 페이지는 html 파일로, 마크업/디자인 팀에서 전달받은 파일을 nginx 서버에 업로드 하여 사용함. nginx 설정 nginx에서 점검 페이지를 관리하려면 conf 파일에 수정을 해야함. http status..
-
[Python] scp, paramiko 패키지 예제
파일 업로드에 사용할 python 패키지를 찾다가 scp, paramiko를 사용하여 아래와 같이 개발함! from paramiko import SSHClient from scp import SCPClient def upload_files(target, fileList): scp = connect_to_server() files = [] for file in fileList: filename = file.rstrip() file_full_path = "졀대/상대경로"+ filename scp.put(files=filename, remote_path=file_full_path, recursive=True) # fileList to # scp.put(files=files, remote_path=target_..
-
[홈네트워크] 랜포트 없는 방 랜선 끌어다 쓰기 / 와이파이 안터지는 방 문제 해결한 후기
자취생/1인가구의 삶의 질은 방의 개수와 비례한다 🥲 이런 후기라도...누군가에겐 도움되곘지? 연휴기간동안에 그래서 책상을 옷방으로 (이라 쓰고 창고라고 읽는..) 옮기기로 했다. 한정된 공간에는 늘 그렇듯 문제가 따른다. 건조기는 어디에 두지? 창고방에서 대체 어디로 옮겨.. 멀티탭으로 연결하면? (아주 길게..) 건조기 같이 고전압 가전제품이 일반 멀티탭을 사용해도 되나? 창고방에는 랜포트가 없다..와이파이도 안잡힌다.. 건조기, 세탁기, 에어컨은 고용량 멀티탭! 1번문제는 생각보다 쉽게 해결되었다. 검색햅보니 고용량 멀티탭이란게 있더라. 이걸..10m짜리로 주문해서 최대한 최단경로로, 눈에 잘 안보이는 경로로 휙 둘러서 건조기는 잘 연결했다. 나는 쿠팡에서 아래 상품을 구매했다. 인터넷 포트가 멀다..
-
[Haskell] 고차원 함수 - 람다, 폴드, 스캔, $, 합성함수
람다 Lambda 단 한번만 함수가 필요할 때 사용하는 익명의 함수. 람다는 표현식이다. 선언방법 \ 로 선언 그 뒤에는 함수의 매개변수를 쓴다. (하나 이상의 매개변수는 공백으로 구분한다) -> 뒤에는 함수의 내용이 온다. 괄호로 람다를 감싸는 것이 일반적이다. where 절로 바인딩해서 표현했던 방식 대신 람다로 변경한 numLongChains 예시 numLongChains :: Int numLongChains = length (filter (\xs -> length xs > 15) (map chain [1..100])) 람다보다는..? 부분적 어플리케이션이 람다보다 가독성이 좋은 경우도 있다. map (+3) [1,6,3,2] // 부분적인 어플리케이션 map (\x -> x + 3) [1,6,3,..
-
Jenkins X 란?
Kubernetes 환경에서 CI/CD 툴을 조사하던 중 Jenkins X 를 발견하게 되었다. 널리널리 사용되는 Jenkins! 그런데 좀 더 발전된 버전인가? 어떤 점이 다른지 살펴보자 🤔 Jenkins X? kubernetes 환경에서 CI(=continuous integration) 과 CD(continuous deployment) 를 제공하는 툴 오픈소스 프로젝트, 현재도 열심히 개발되고 있는 프로젝트! 아쉽게도 웹이나 serverless하게 확인해볼수있는 demo는 없지만, 아래 kubecon 영상에서 demo확인 가능 2018 kubecon Jenkins X demo (Jenkins x 뽕에 취해보세요) 특징 Automated CI/CD Github에서 commit, push, PR을 통해 ..
-
[Jenkins] java.lang.NoSuchMethodError: No such DSL method 'cleanWs' found among steps 에러 해결 방법
새로운 Jenkins 인스턴스에서 기존 pipeline 코드 실행하다가 맞이한 에러 에러 코드를 살펴보면 아래와 같은 형태로 나오는데, java.lang.NoSuchMethodError: No such DSL method 'cleanWs' found among steps [...] or symbols [...] or globals [...] steps에도 없고, symbols에도 없고, 따로 지정한 globals에도 없으니 이건 플러그인 미설치때문에 발생한 에러이다. 필요한 플러그인을 설치하자! https://plugins.jenkins.io/ws-cleanup/ Workspace Cleanup This plugin deletes the project workspace when invoked. plugi..
-
Jenkins 버전 업데이트 & 롤백하는 방법
새로운 버전의 Jenkins가 나올때 마다 업데이트 해주면 좋겠지만...다들 귀찮은거 압니다. docker로 운영하는 Jenkins 업데이트가 가~끔 필요할때 이렇게 하면 됩니다! LTS버전 기준으로 원하는 war파일 버전을 찾아주세요 -> https://www.jenkins.io/download/ Jenkins download and deployment Jenkins download and deployment The Jenkins project produces two release lines: Stable (LTS) and regular (Weekly). Depending on your organization's needs, one may be preferred over the other. See th..
✨ new
-
애플 키캡 PBT XDA & 갤럭시 팩토리 키보드 케이블 후기 ⌨️
오랜만에 키보드 용품을 구매했다! 사실 키보드를 구매하고 싶은 마음이 굴뚝같았지만, 나중에 사는 걸로 하고 이번엔 키캡놀이하는 거로 만족했다. 구매한 키캡은 애플 키캡 이라고 잘 알려진 PBT XDA 프로파일 키캡! 키캡은 키토어라는 네이버 스마트 스토어에서 구매했다! 구매처는 여기 → https://smartstore.naver.com/kitore/products/6272909814 키토어 NEW 애플 키캡 PBT XDA 염료승화 (영어 / 한글)_133키 : 키토어 [키토어] 키캡 전문 스토어 키토어입니다 smartstore.naver.com 게임, 코딩용 키보드로 사용하고 있는 레오폴드 FC660M에 장착한 모습! 오른쪽 Shift는 사이즈가 맞는 키캡이 없어서 남는 Enter 키로 장착했다. 사이..
-
모바일, PC 화면 Nginx로 분기 처리하는 방법
위의 네이버 화면 처럼, 접속하는 디바이스에 따라 모바일, PC 화면으로 분기 처리를 해야함! Proxy로 사용되는 Nginx로 해보자! 어떻게? error page named location header에 있는 user-agent 를 기반으로 분기 처리 error page 란? 에러가 발생한 요청을 지정한 uri로 redirect 하는 nginx module 400대 에러나 500대 에러의 redirect 설정을 하기 위해 보통 사용! → 하지만! 이미 사용하고있는 에러코드를 덮어쓸수는 없으니, error code 418을 사용해서 PC,mobile 분기 처리를 하도록 하겠다! 418 에러코드가 뭐지?? client error 응답 코드로 서버가 커피 내리기를 거부한다는 의미를 가진다 - 왜냐면 서버는..
-
[LeetCode] 347. Top K Frequent Elements
문제 링크 https://leetcode.com/problems/top-k-frequent-elements/description/ Intuition 주어진 array에서 가장 중복이 많은 k개의 element를 결과값으로 반환 그렇다면 정렬하고, 중복을 찾기 위해선 hash를 써야겠군 Approach hash를 쓰기 위해서는 python의 dictionary를 사용 가장 많이 중복되는 element 별로 저장된 dictionary를 그 후에 정렬! 정렬된 중복_숫자_맵 에서 k개의 key값을 반환 dict에서 get()함수는 parameter가 2개! 두번째 param은 optional로 조회하는 key 값이 없는 경우에 반환할 값을 설정 numMap[num] = numMap.get(num,0) → nu..
-
[LeetCode] 49. Group Anagrams
문제 링크 https://leetcode.com/problems/group-anagrams/description/ Intuition 동일한 길이를 가지고 동일한 문자열 구성을 가져야 하는 anagram! 그럼 저번에 문제 풀이 했을 때 처럼 set을 사용해서 풀어볼까? 그런데 이 전 문제와 다르게 grouping 해야하는 문제니까 hash 를 써야할듯 Approach 단어가 3글자라고 주어진 input에서 3개 묶음의 단어가 다 있으리라고는 보장 X 있는 element를 기준으로 hash에 저장해서 확인해야함 python에서 hash는? → dictionary! dict의 key 값은 정렬한 값으로 저장 → 모든 element가 정렬된 값을 기준으로 hasKey() operation을 해야하므로 valu..
-
[LeetCode] 1. Two Sum
문제 링크 https://leetcode.com/problems/two-sum/description/ Intuition 주어진 array의 element 중에 target 값으로 합의 수가 맞는 조합을 찾아야 하면..모든 element를 합해서 확인해 보자 first + second index element의 합을 확인하고 넘어가야 한다 Approach 당장 생각나는건...outer loop에서는 index 0 부터 좌항에 들어가는 인자를 iterate하고 inner loop에서는 우항에 들어가는 인자를 iterate 해서 둘의 합을 확인하는 방법 Complexity Time complexity: O(N^2) Space complexity: Code class Solution: def twoSum(sel..
-
[LeetCode] 242. Valid Anagram
Intuition Anagram은 주어진 문자열의 character를 재배치 했을 때에도 다 같은 구성의 character를 가지는 단어 혹은 문구를 뜻한다고 한다. 그러니 길이가 같아야지? 같은 구성의 character를 가져야하겠네? Approach 같은 구성의 문자를 가진것을 어떻게 비교하면 좋지? 정렬한 후에 같은지 확인하면 효율적이지 않을까 길이가 다른 경우는 먼저 False를 반환 하는게 좋을 것 같다 Complexity Time complexity: O(nlogn) 평균 / W.C (= worst case) 이유는 python의 sorted() 함수는 Timesort라는 정렬 알고리즘을 사용 Timesort 알고리즘이란? insertion sort 와 merge sort의 장점만을 합쳐서 만..
-
[LeetCode] 217. Contains Duplicate
Intuition python 으로 문제 풀이를 하기로 했으니 counter 함수를 사용해서 풀이하면 될것같다! Approach counter 함수로 첫번째 풀이를 했는데, time limit exceeded 가 떴음 두번째 제출에서는 set 자료구조를 사용해서 풀이 set은 중복을 허용 X 주어진 data set을 set에 넣으면 중복이 사라져서 전체 사이즈가 달라짐 set의 사이즈와 nums의 사이즈를 비교! Complexity Time complexity: first attempt: O(N^2) list.count() 함수는 내부적으로 모든 PyObject를 iterate 하고, 주어진 입력값과 compare 하기 때문에 O(N) complexity를 가진다 참고: https://stackoverf..
-
Jenkins 아저씨가 귀엽기도 하다고?
Jenkins 아저씨 로고 말고 다양한 로고가 있다는 사실 알고 계셨나요? 자료를 만들게 될때 공식 로고 이미지를 찾다가 발견한 링크 공유합니다 ㅋㅋㅋ https://www.jenkins.io/artwork/ Jenkins Artwork Accordion Jenkins Created by Kseniia Nenasheva www.jenkins.io 큣-트한 젠킨스 아저씨부터 한국 젠킨스 아저씨까지 다양하게 있으니까 재밌게 잘사용해보세요!
-
👩🏻💻 22-11-15 모각코 @인비저블커피
재택day에 오랜만에 카페가서 일하기~ 일주일에 몇번 없는 재택날이긴 하지만, 카페에서 일하는것도 좋아서 오랜만에 카페에서 업무함! 서현에 새로생긴 카페 인듯 한데, 완벽하게 카공족을 위한 카페 인것 같다. 카페 건물에 주차가능! 최대 2시간까지 적립. 평일에는 없지만, 주말에는 최대 3시간 사용시간이 있다고 한다. 장소: 인비저블 커피 오늘의 TODO 회사 일 재정관리... work-done 회사 일 재정관리
-
custom header 값을 nginx 로그로 찍기
기본 http header들은 nginx 에서 제공하는 variable로 찍으면 되는데..어플리케이션에서 직접 생성한 `custom header` 는 어떻게 찍을까? 우선 nginx 에서 지원하는 variable 리스트 중에 `$http_name` 이라는 값이 있다. 저 뒤 `_name` 부분에 custom 하게 생성한 header의 이름을 넣어주면 log에 기록할 수 있게 된다! log_format에 아래와 같이 추가해주면! 예쁘게 잘 찍힐것! log_format main '$remote_addr $http_x_forwarded_for [$time_local] ' '$host $request $status $body_bytes_sent ' '$request_time $upstream_response_t..
-
👩🏻💻 22-10-15 모각코 @카페안월
주말에 조용한 카페 찾기 쉽지 않았지만! 여긴 정말 조용하고 커피도 맛있고 스콘도 맛있고...다좋았음 오늘의 TODO 브레인 스토밍 아이디어 회의 🤓 장소
-
👩🏻💻 22-10-22 모각코 @볼더스콘
스콘 먹으러 배부장님과 토요일 아침 모각코하러 옴 22-10-22 장소: 볼더스콘 오늘의 TODO 프로젝트에 필요한 discord API 조사 개자이너 (개발자 + 디자이너) 같이 보일만한 FE 소스 리서치 work-done 필요한 discord API 역시 이미 잘 만들어진 봇이 있다 채널 생성, 채널 삭제, 멤버 권한 부여 등등 다양한 기능을 제공! 게다가 `무료` (프리미엄도 있긴함) https://channelbot.xyz/ ChannelBot | Discord Bot Trusted by Thousands ChannelBot helps gamers, designers, community builders, companies, school groups, and more manage their comm..
-
[Redis] Sorted Sets
Keys 명령어 returns all keys matching pattern. O(N) 데이터가 많은 DB를 상대로 수행하는 경우에 성능저하 발생 리얼 환경에서 사용하는 것을 지양 해당 명령어는 디버깅, 키스페이스 레이아웃을 변경하는 것 같이 특별한 상황에만 사용하는 것을 권장. Sorted Sets O(log(n)) 중복이 없는 문자열 콜렉션. 모든 데이터는 score와 매핑되어서 정렬되고 데이터자체는 유니크한 값이지만, score는 중복 될 수 있다. Sorted Sets에 데이터가 등록될 떄 순서대로 등록되기 때문에 (등록된 이후에 후처리로 정렬하는 것이 아님), 데이터의 범위와 랭크를 아주 빠르게 구할 수 있다. 중간에 있는 데이터에 접근 하는 것도 굉장히 빠르게 처리 가능. 배민에서 사용한 대표..
-
[docker] docker-compose 업데이트! 무엇이 바뀌었고 언제까지 바꿔야 하는가?
무엇이 바뀌었는가 내부 코드 v1 은 python으로 개발됨 v2 는 Golang으로 개발! (from scratch!) standalone binary 파일이 아니라서 설치 방식이 v1과 좀 다름docker-compose → docker compose 명령어 사이에 - 없이 사용 가능 v1과 v2의 compatibility를 위해 compose-switch 유틸 제공 docker-compose python 코드를 docker compose Golang으로 converting! container 명명 방식 변경 언더스코어(_) 에서 하이픈 (-) 으로 변경 container 이름 기준으로 스크립트를 개발하였다면, -compatibility옵션을 사용하여 에러가 발생하지 않도록 설정 가능 BuildKit ..
-
[뉴비개발자 시리즈] 신입 개발자의 일탈 - 봇 만들기
2017-09-29에 작성한 글을 옮겨왔습니다. 동기들 채팅방에서 썼던 봇에 관한 글입니다. 방정맞은 말투는 이해 부탁드립니다.. 지금 보니 신입이었을땐 딴짓도 개발로 했었네요 🙄 꿀잼 봇 만들기 도롱뇽농땡이봇이 일을 하고있다. 추석연휴를 맞아 봇을 하나 만들었습니다. 네 1분안에 완성 가능합니다. 예. 단축안해서 업무가 손에 안잡혀서 글 올려봅니다. 코드랄 것도 없지만 파이썬으로 ★우리회사★ 로 메세지를 날려보겠습니다. import requests, time, datetime, sys def let_the_world_know(): hook_url=[사내 메신저 채팅방 web hook url] image_url=[이미지 업로드된 cdn url] lunch_url=[세상에서 제일 중요한 그날의 점심 메뉴 ..
-
[nginx] 서비스 점검공지 올리는 방법
2019-03-04-nginx-점검-페이지.md 라는 이름으로 github.io 블로그에 올렸던 내용을 가져온 내용입니다. nginx 에서 간단하게 503 에러코드를 사용하여 점검페이지를 띄워보자 서비스 점검 공지 서비스 점검 공지 페이지가 사용되는 경우가 종종 있음. 장애 무중단이 불가능한 빅 업데이트 내가 속한 팀에서는 주로 위와 같은 사유로 점검페이지를 사용함. Nginx 를 L4 뒤, application 앞에 두는 구조이기 때문에 점검 페이지를 nginx 쪽에서 관리하고있음. 실제 점검 페이지는 html 파일로, 마크업/디자인 팀에서 전달받은 파일을 nginx 서버에 업로드 하여 사용함. nginx 설정 nginx에서 점검 페이지를 관리하려면 conf 파일에 수정을 해야함. http status..
-
Transactional + DDD
2019년 12월 16일에 notion에 작성한 글을 옮겨 왔다 @Transactional + DDD fun requestRefund(request: RefundRequest): RefundResponse { val paymentInfo = 결제클라이언트.get결제정보(request.orderNo) return refund(refundDomainService.register(request, paymentInfo)) } 보통 외부의 호출이 일어날떄 transaction을 분리하는 경우는 다음과 같다. transaction이 이미 열렸고, 외부 호출을 하는 경우 timeout 같은 에러 발생 시, 지연된 시간만큼 transaction을 물고 있기 때문에 좋지 않다. → db lock 발생 가능 (그런데 db..
-
[리팩토링] 에러로그 리팩토링에 대한 개발자1의 의식의 흐름
2019-04-11-errorlog-refactoring-devlog.md 라는 이름으로 이전 github페이지 블로그에 올렸던 글을 가져온 내용입니다. 2019년도 당시에 개발했던 내용에 대한 고민을 회고방식으로 남겼습니다. intro 주문, 결제 관련 개발을 하는 파트에서 일하고 있는 개발자1입니다. 간단한 side task 정도로 기존의 에러로그 리팩토링 업무를 받아서 진행하였는데, 간단한 업무였지만 나름의 (?!) 고민을 이것저것 하였습니다. 약간 생각의 흐름대로 작성한 리팩토링 고민 입니다. 업무를 요약하자면 다음과 같습니다. 결제 관련한 에러로그를 찍을 때, 주문/결제관련 request model, 결제키를 가진 model 등 개인정보에 민감한 주문자에 대한 정보를 담고있는 객체들을 전체 출력..
-
Github 고양이...🐈⬛
깃헙 고양이 너무 귀여웡...
-
[성능] heap dump 분석 툴 / heap dump analyzer
설치 필요 X / 10mb 파일 사이즈 제한 있음 Heap Hero https://heaphero.io/ World-class heap Dump analysis - Java, Android memory dump analyzer How much memory your application wastes? Due to inefficient programming, modern applications waste 30% to 70% of memory. HeapHero is the industry's first tool to detect the amount of wasted memory. It reports what lines of source code originating the memor heaphero.io RE..
-
[Gradle] gradle 빌드 OOM 발생할땐?
CI/CD 단계중 빌드단계에서 OOM이 발생하는 경우가 얼마나 될까? 일단 지금까지 여러 어플리케이션의 빌드를 돌려봤지만 처음 경험해 봤다. 🤔 젠킨스 빌드 로그에는 아래와 같이 OutofMemoryError가 발생했다는 로그가 남아있다. 그리고 힙덤프 업로드 알림이 왔다. 힙덤프를 분석해보기 위해 MAT실행 > 분석! 이런 처음 보는 에러가 memory leak의 가장 의심되는 부분이라고 분석되었다. 원인을 위해 해당 검색을 해보았지만 딱히 도움되는 글을 발견하지는 못했다. (가장 관련있어 보이는 stackoverflow의 글 일단 링크) 빌드 oom이니까 gradle의 문제아닐까..? 일단 힙덤프를 봐도 모르겠으니, 다음 타겟인 gradle을 의심해봤다. 관련해서 자료를 찾아보니, gradle dae..
-
[Jenkins] java.lang.NoSuchMethodError: No such DSL method 'cleanWs' found among steps 에러 해결 방법
새로운 Jenkins 인스턴스에서 기존 pipeline 코드 실행하다가 맞이한 에러 에러 코드를 살펴보면 아래와 같은 형태로 나오는데, java.lang.NoSuchMethodError: No such DSL method 'cleanWs' found among steps [...] or symbols [...] or globals [...] steps에도 없고, symbols에도 없고, 따로 지정한 globals에도 없으니 이건 플러그인 미설치때문에 발생한 에러이다. 필요한 플러그인을 설치하자! https://plugins.jenkins.io/ws-cleanup/ Workspace Cleanup This plugin deletes the project workspace when invoked. plugi..
-
Jenkins 버전 업데이트 & 롤백하는 방법
새로운 버전의 Jenkins가 나올때 마다 업데이트 해주면 좋겠지만...다들 귀찮은거 압니다. docker로 운영하는 Jenkins 업데이트가 가~끔 필요할때 이렇게 하면 됩니다! LTS버전 기준으로 원하는 war파일 버전을 찾아주세요 -> https://www.jenkins.io/download/ Jenkins download and deployment Jenkins download and deployment The Jenkins project produces two release lines: Stable (LTS) and regular (Weekly). Depending on your organization's needs, one may be preferred over the other. See th..
-
Jenkins X 란?
Kubernetes 환경에서 CI/CD 툴을 조사하던 중 Jenkins X 를 발견하게 되었다. 널리널리 사용되는 Jenkins! 그런데 좀 더 발전된 버전인가? 어떤 점이 다른지 살펴보자 🤔 Jenkins X? kubernetes 환경에서 CI(=continuous integration) 과 CD(continuous deployment) 를 제공하는 툴 오픈소스 프로젝트, 현재도 열심히 개발되고 있는 프로젝트! 아쉽게도 웹이나 serverless하게 확인해볼수있는 demo는 없지만, 아래 kubecon 영상에서 demo확인 가능 2018 kubecon Jenkins X demo (Jenkins x 뽕에 취해보세요) 특징 Automated CI/CD Github에서 commit, push, PR을 통해 ..
-
[Python] scp, paramiko 패키지 예제
파일 업로드에 사용할 python 패키지를 찾다가 scp, paramiko를 사용하여 아래와 같이 개발함! from paramiko import SSHClient from scp import SCPClient def upload_files(target, fileList): scp = connect_to_server() files = [] for file in fileList: filename = file.rstrip() file_full_path = "졀대/상대경로"+ filename scp.put(files=filename, remote_path=file_full_path, recursive=True) # fileList to # scp.put(files=files, remote_path=target_..
-
[홈네트워크] 랜포트 없는 방 랜선 끌어다 쓰기 / 와이파이 안터지는 방 문제 해결한 후기
자취생/1인가구의 삶의 질은 방의 개수와 비례한다 🥲 이런 후기라도...누군가에겐 도움되곘지? 연휴기간동안에 그래서 책상을 옷방으로 (이라 쓰고 창고라고 읽는..) 옮기기로 했다. 한정된 공간에는 늘 그렇듯 문제가 따른다. 건조기는 어디에 두지? 창고방에서 대체 어디로 옮겨.. 멀티탭으로 연결하면? (아주 길게..) 건조기 같이 고전압 가전제품이 일반 멀티탭을 사용해도 되나? 창고방에는 랜포트가 없다..와이파이도 안잡힌다.. 건조기, 세탁기, 에어컨은 고용량 멀티탭! 1번문제는 생각보다 쉽게 해결되었다. 검색햅보니 고용량 멀티탭이란게 있더라. 이걸..10m짜리로 주문해서 최대한 최단경로로, 눈에 잘 안보이는 경로로 휙 둘러서 건조기는 잘 연결했다. 나는 쿠팡에서 아래 상품을 구매했다. 인터넷 포트가 멀다..
-
[freitag/프라이탁] HAWAII FIVE-O 하와이파이브오 샀다 ☺️
맘에드는 모양을 찾기까지 이렇게 오래 걸리다니..드디어 구매했다! 항상 29cm에서 대기하다가 맘에드는것들은 놓치기 일수였고, 그렇다고 공홈에서 새벽마다 (보통 2-3시에 업로드가 많이 된다고 한다) 새로고침 하고있을 수는 없고...그러다가 구매대행 사이트를 발견했다. https://smartstore.naver.com/dokku/products/5721446476 프라이탁 F41 HAWAII FIVE-O 하와이파이브오 : 에스체트 [에스체트] 유럽내 유니크한 제품들을 소개하고 대행해주는 사이트입니다 smartstore.naver.com 프라이탁 구매처 29cm (https://search.29cm.co.kr/?keyword=%ED%94%84%EB%9D%BC%EC%9D%B4%ED%83%81&page=4&..
-
대학생때 만들었던 사진 객체로 스티커 (?) 만들기
하드드라이브 정리하다가 발굴해낸 프로젝트. 여담을 하자면 이 프로젝트는 팀플젝이었는데, 4명중 2명이 중국으로 귀국(이라쓰고 도망)가버려서 나머지 2명이 울면서 개발한 프로젝트이다..빤쓰런을 하려면 저 정도 스케일은 되어야 인정을 받을 수 있을 것. 지금은 내용도 다 까먹고, MATLAB도 까먹고, 남은건 코드와 자료들 뿐이지만, 나름 재밌었다. Computational Photography 수업이었음. 문제의? 프로젝트 코드: https://github.com/yayyz/emojify-objects yayyz/emojify-objects Contribute to yayyz/emojify-objects development by creating an account on GitHub. github.com
-
[프로그래머스] 다리를 지나는 트럭 - 스택/큐
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 문제풀이 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; class Solution { public int solution(int bridge_length, int weight, int[] ..
-
[프로그래머스] K번째수 - 정렬
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 문제풀이 import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * K번째수 * https://programmers.co.kr/learn/courses/30/lessons/42748 */ public class Solution { public int[] solution(int[] array, int[][] commands) { Lis..
-
[프로그래머스] 완주하지 못한 선수 - 해시
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42576 문제 풀이 import java.util.HashMap; import java.util.Map; /** * 완주하지 못한 선수 * https://programmers.co.kr/learn/courses/30/lessons/42576 */ class Solution1 { public String solution(String[] participant, String[] completion) { Map map = new HashMap(); // convert array to hashmap for completion for (String person : participant) { if (map.cont..
-
[프로그래머스] 모의고사 - 완전탐색
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 문제 풀이 import java.util.ArrayList; import java.util.List; /** * 프로그래머스:완전탐색:모의고사 * https://programmers.co.kr/learn/courses/30/lessons/42840 */ class Solution { public int[] solution(int[] answers) {..
-
[취미] 커피 머신 샀다 ☕️
캡슐머신에 만족하지 못하고 구매한 커피 관련 용품들 커피메이커 콜드브루 메이커 무수한 드립커피 백 커피메이커는 내가 원하는 그런 맛? 의 커피가 아니어서 잘 사용하지 않고, 콜드브루는 원두 분쇄가 귀찮아서 안쓰고있고, 드립커피 백은 편하긴 한데 라떼를 해먹기는 좀 그런? 편의를 생각하면 네스프레소가 최고긴 하지만, 양도 적고 (2샷하려면 2캡슐사용하면 됨...그렇지..), 맛도 진하지 않다. 그래서 구매했다. 브레빌 밤비노 플러스! (sea salt edition) 꺌랑 이라는 인플루언서가 공식수입해 온 제품을 구매했다. 앞으로 커피에 대해서 이것저것 배워보면서 홈카페 차려볼 예정!
-
[대충로그] grafana-loki query
loki로 수집된 로그중에 json body (string)에서 값을 쿼리해야한다. loki로 수집된 로그중에 json body (string)에서 값을 쿼리해야한다. {container_name="도커컨테이너명"} |= " orderNo" |= "123123123" { } 안의 값은 label |= 는 로그 파이프라인, 필터처럼 사용
-
[ubuntu] python을 찾을 수 없다고 할때
Command 'python' not found, but can be installed with: 라고 뜨는 경우가 있다. 하지만 python은 설치 되어있는데? 🤔고민하지 말고 아래와 같이 입력해주자. # 터미널 (bashrc or bash_aliases) vim ~/.bashrc # bashrc (python3나 원하는 python 버전) alias python=python3 # 터미널 source ~/.bashrc 다시 python을 입력하면, 원하는 버전에 맞게 잘 실행되는것을 확인할 수 있다.
-
[봇] 자동투자 봇 만들기 - 챕터 2,3
챕터 2는 어제 완료했다. 챕터3까지는 일단 이것저것 세팅하는 거라서 수월하게 다 끝냈음. 중간중간 개발 관련 기초 지식이 나오는 부분들이 있어서 스킵함. 인-증
-
[봇] 자동투자 봇 만들기 - 챕터 1
1-3 강까지 쭈욱 들었다! 이제 시작하는 단계이지만, 재밌다. 개발환경을 세팅하고 이것저것 손보는 재미. 이것이 개발의 재미이지. 파이썬은 야매로 이것저것 만들어서 사용은 해봤지만, 이렇게 제대로 뭔가 해보는것은 처음이라 기대된다! 지금까지 1-3강까지 수료를 했는데, 키움증권에서 인증서 발급때문에 막혀있다. 가입을 하고, 신분증 인증까지는 1-3정도 걸리는데, 이 인증이 완료되었다는 문자가 와야 인증서를 발급받을 수 있다. 일단은 여기까지! 인-증 DAY 2 신분증 진위여부 확인! 이런 인증 절차가 완료되면 키움증권에서 문자가 온다. 이 문자가 오면 이제 인증서 발급이 가능함. 인증서 발급도 하고, 키움증권의 KOA Studio도 깔았다. 뭐하는건지 아직은 모르겠다. 인-증
-
[TIL] pip install 시 "Consider using the `--user` option or check the permissions" 에러
Consider using the `--user` option or check the permissions. pip로 패키지 설치시 이런 에러가 발생함. 권한이 없는 디렉토리에서 설치하려고 하기 때문에 발생하는 에러. --user 옵션을 넣어서 설치하면 된다. 뭐든 모를땐 man page 나 -h를 사용해서 설명을 읽어본다. --user 옵션은 권한없는 디렉토리 (내경우의 C드라이브)가 아닌 사용자의 디렉토리 (home directory)에 설치해준다. --user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the Python do..
-
crontab 을 사용해보자
서버에서 주기적으로 작업을 해야하는 일을 생성할때는 종종 crontab을 사용한다. cron으로 등록된 job list 확인 crontab -l cron에 새로운 job을 등록 crontab -e cron 스케줄 expression 주기적으로 cron을 실행시키기 위해서는 다음의 expression과 함께 등록해야한다. [분] [시간] [날짜/월] [월] [날짜/주] wildcard sign = any 예시 아래와 같이 세팅하면 매주 0시 0분 (자정) 목요일에 해당 file path에 있는 스크립트를 실행 으로 해석하면 된다. 0 0 * * THU [file path] 참고 cron schedule 유용한 링크: https://crontab.guru/
-
[curl] (60) SSL certificate problem: certificate has expired
curl command 를 사용하다가 만난 이슈 해결방법 (임시방편) curl의 옵션인 -k (or --insecure)를 사용한다. certificate validation을 스킵해준다.
-
[vim] 좀 더 편-안하게 vim editor를 사용하는 설정
포매팅: shift, tab 4!!!!!!! 8이면 막 마음이 무너져 버려 set smartindent set tabstop=4 set expandtab set shiftwidth=4 지금당장 라인끝으로 커서를 이동하고 싶다 $ (shift + 4) 지금당장 파일의 제일 아래로 가고싶다 shift + g 지금당장 파일의 헤드로 가고싶다 shift + h
-
fluentd - host is unreachable
2020-10-05 16:19:32 +0000 [warn]: #0 failed to flush the buffer. retry_time=15 next_retry_seconds=2020-10-05 21:09:56 +0000 chunk="5b0e6e3d58b7cec7f1d92eaa332995c8" error_class=Fluent::Plugin::ElasticsearchOutput::RecoverableRequestFailure error="could not push logs to Elasticsearch cluster ({:host=>\"호스트명\", :port=>포트번호, :scheme=>\"http\"}): Host is unreachable - connect(2) for IP주소 (Errno::EHO..
-
[TIL] fluentd & NGINX
다 설정하고 나니까 이런 에러가 로그에 남아있다 \[types removal\] Specifying types in bulk requests is deprecated. 이것은 대체 무슨 로그? https://www.elastic.co/guide/en/elasticsearch/reference/master/removal-of-types.html#_why_are_mapping_types_being_removed 엘라스틱 서치 버전8부터는 mapping type이 없어진다고 한다. 아마 엘라스틱서치 어딘가에서 mapping type을 계속 쓰고있어서 그런것 같다. 아니면 내 fluentd 설정인가? 이런 저런 이유라는데...어 읽어도 잘 모르겠다 지금은: https://www.elastic.co/guide/e..
-
뚝딱거리는 초보 devops의 TIL
max_map_count가 뭔가 https://stackoverflow.com/questions/11683850/how-much-memory-could-vm-use 이것이다. linux kernel Sonarqube의 스펙은 잘 맞춰야 한다 그렇지 않으면 이런 에러가 나기때문이다. 2020.08.28 02:28:49 ERROR es[][o.e.b.Bootstrap] node validation exception [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ERROR: [1] bootstrap checks failed docker..
-
유용한 linux command 모음 (사실 나를 위한 포스트 | 계속 추가 중)
서버 timezone 변경 (한국시간) cp -p /usr/share/zoneinfo/Asia/Seoul /etc/localtime 서버 kernel version 확인 uname -v
-
[당첨후기] 오버워치 눈꽃이벤트 - 에코 트랙팬츠 당첨
오버워치 눈송이 이벤트는 게임에 접속하면 접속한 시간당 n송이를 적립해주는 한국에서만 하는 이벤트이다. 시즌마다 추첨할 수 있는 상품들이 꽤나 다양해진다. 추첨할때마다 이런 건 대체 누가 당첨될까 하는데 운 좋게도 에코 트랙 팬츠에 당첨되었다. 사실 이게 될까 하고 했던건데 그냥 당첨돼서 좀 당황했다. 이럴 거면 이 운을 메르시 피겨, 겐지 피겨 이런 거에 쏟을걸! 당첨은 한 두달전에 된 것 같은데, 택배 수령은 이제야 했다. 블리자드 박스에 두근두근하게 담겨왔다. 상품은 이렇다. 면 소재의 트랙팬츠라고 생각했는데, 약간 스키복 재질의 바지 같음. 절대 여름에 입어서는 안 되는 그런 재질. ECHO라고 깜찍하게 포인트가 있다..어..밖에서 입을 수 있겠지? 🤔 요즘에도 계속 응모하고있는데, 개인적으로 일..
-
[구매완료] 프레시코드 도시락+샐러드 정기배송 (후기 추가 예정)
다시 재택근무에 들어가게 되면서, 점심식사가 매우 애매해졌다. 내가 요리해서 먹는 것도 충분히 할 수 있지만! 효과적인 운동을 위해 식단 조절도 해야 해서 칼로리가 정해진 도시락 배송을 찾게 되었다. 찾아본 다이어트 식단 도시락 정기배송 업체 슬림쿡 (비슷하게 도시락 + 샌드위치 / 도시락 + 샐러드 조합도 제공.) 프레시 코드 프레시코드에서프레시 코드에서 예전에 샐러드를 주문해 먹어봤었고, 맛도 좋아서 프레시 코드에서 구매하기로 결정함. 내가 고른 메뉴는 샐러드 + 도시락 (하루 두끼) 조합의 메뉴를 주문함. 도시락, 샐러드 사이즈는 M,L로 있다. 식단 도시락은 처음이니까 일단 L로 주문. 오전 7시까지 주문하면 다음날에 새벽 배송으로 온다. 1주일 식단은 두번에 나눠서 배달된다. 첫 번째 배달: 두..
-
[후기] 블리즈컨 2019 티켓팅 성공
이제야 올려보는 블리즈컨 2019 티켓팅 후기. 블리즈컨 티켓팅 첫 번째 시도만에 성공. 일단 꼭두새벽에 일어나서 티켓팅을 시도했다. 티켓팅 날짜는 2019년 5월 5일 새벽 2시. 미국 시간기준이므로 우리나라는 새벽시간에 티켓팅을 할 수밖에 없다. 당시 연휴로 캠핑하고있었는데, 캠핑장의 와이파이 환경이 열악해서 핸드폰 핫스팟으로 연결하여 노트북으로 접속했다. 이번 연도부터는 달라진 티켓 구매 방식을 적용한다고 해서, 티켓 실제 구매 가능시간보다 30분 전부터 waiting-room에 접속해 있어야 한다. waiting-roomg은 각 티켓별로 3가지의 다른 대기 채널이었다. 나는 일단 제일 기본 티켓을 구매하려고 했기 때문에 다른 채널에는 접속하지 않았다. 일단 waiting-room에 입장하면 30분..
-
[후기] havehad 다이어리 (해브해드 다이어리)
구매처: 해브해드 (have had stationery) https://night-owl-society.com/ 여기서 파는 다이어리, 완전 취향저격. 원하는 대로 속지를 골라서 쓸 수 있고, 내가 원하는 양만큼의 속지를 넣어서 들고 다닐 수 있다! (최대한 가볍게!) 아이패드로 다이어리, 식단노트, todo를 적어보려고 했지만 역시 이런 거는 직접 쓰면서 아날로그 하게 가는 게 나에게는 더 맞는 것 같다. 이렇게 생긴 다이어리다. 처음으로 산건 클리어노트, 노트 베이스, 이런 식으로 구매했다. 클리어 노트 + 노트 베이스가 가장 기본적인 다이어리의 구성이다. 나머지 구성은 속지. 기본 구성이 없으면 다이어리를 만들 수 없다고 보면 된다. (노트 베이스가 없으면 앞에 하드커버? 없이 속지만 들고 다녀야 ..
-
춘천 이노리조트 글램핑
황금연휴를 맞아 사람이 많이 붐비지 않는 글램핑장에 다녀왔다. 🎶🏕️ http://naver.me/FWmB7DP3 이노리조트 : 네이버 N예약 리뷰 21 · ★4 · 수영장있는 춘천 카라반 캠핑장 store.naver.com 네이버 예약을 통해서 다녀왔고 성수기이기 때문에 15만원이었다. 리뷰에 네이버에서 예약했는데 등록이 제대로 안되어있어서 난감했다~ 라는 후기가 있어서 좀 걱정을 했는데, 다행이 예약은 제대로 등록 되었다. 강변을 바라보는 1열 카라반, 산을 바라보는 2열 카라반이 있는데, 나는 1열을 선택했다. 나중에 캠핑장에 도착하고 나서 보니 2열 카라반은 1열 카라반 보다는 좀 더 큰 사이즈 였다. 주차하는 자리는 위 이미지에 하얗게 색칠한 부분이다. 2열 카라반 뒤에 평행주차 할 수 있는 공..
-
(첫) 차를 구매하기 위한 준비사항
🙆🏻♀️ 하이패스 (후불) 카드 신청 신용카드 여야 하고 거의 대부분의 카드사가 하이패스 전용카드가 있다. 본인이 사용하는 카드사에 신청하면 된다. 선불, 후불 두종류가 있지만 선불은 꽤 불편하다고 하니, 후불로 신청하는것을 추천한다. 나는 신한카드에서 신청했는데, 일단 신청하는 카드사에 신용카드가 있어야 한다고 한다. 🙆🏻♀️ 차량의 시세조회 KB차차차에서 회원가입을 하면 내가 구매하고자 하는 차량의 시세를 대략적으로 볼 수 있다. https://www.kbchachacha.com/public/main.kbc 🙆🏻♀️ 차량 보험 어디서 듣기로는 30세 이하인 경우에는 보험료가 굉장히 비싸다고 하지만, 사실 운전경력 + 30세 이상인 경우에만 메리트가 있다. 부모님 보험에 예전부터 내 이름이 등록되..
-
[Haskell] 고차원 함수 - 람다, 폴드, 스캔, $, 합성함수
람다 Lambda 단 한번만 함수가 필요할 때 사용하는 익명의 함수. 람다는 표현식이다. 선언방법 \ 로 선언 그 뒤에는 함수의 매개변수를 쓴다. (하나 이상의 매개변수는 공백으로 구분한다) -> 뒤에는 함수의 내용이 온다. 괄호로 람다를 감싸는 것이 일반적이다. where 절로 바인딩해서 표현했던 방식 대신 람다로 변경한 numLongChains 예시 numLongChains :: Int numLongChains = length (filter (\xs -> length xs > 15) (map chain [1..100])) 람다보다는..? 부분적 어플리케이션이 람다보다 가독성이 좋은 경우도 있다. map (+3) [1,6,3,2] // 부분적인 어플리케이션 map (\x -> x + 3) [1,6,3,..
-
[TIL] jooq 잘 모르겠다 🤔
삽질 로그 | 2019-05-30 갑분 1 = 0 ?! conditionStep = conditionStep.and(opo.ORDER_STATUS_TYPE.in(Lists.newArrayList(request.getOrderStatusTypes()))); 이런 경우의 jooq에서는 conditionStep.and(~~~) 자체가 AND 1 = 0 로 변경되어 쿼리가 실행됨. 고로 전 후에 무수히 추가한 and 조건들이 먹지 않음. 🐸개구려 갑자기 미국날짜? String 으로 받아온 평범한 날짜입력값이 미국식 포맷으로 바뀌는 매직. conditionStep = conditionStep.and(opo.ORDER_YMDT.between(DateUtils.forceParse(request.getStartYmdt..
-
[TIL] Feign 404
TIL 궁금점 Feign으로 부르는 메소드 호출에서는 404 가 내려오면 어떻게 될까? 어떻게 처리하나? Feign 404 @FeignClient(decode404 = false) 의 경우 FeignClient annotation의 decode404 property는 false가 default 값이다. 해당 설정으로 404를 받아오는 경우에는 FeignException을 발생시킨다. Feign호출을 하였을 때 resource가 존재하지 않는 경우, 호출하는 쪽에서 404 NOT_FOUND에 대한 적절한 동작을 할 수 없게 된다. @FeignClient(decode404 = true) 의 경우 decode404를 true로 설정하는 경우, Feign의 기본 decode 메소드가 java의 기본 type들을..
-
[TIB] spock으로 테스트를 짜고 있는데
TIB = Today I Babble 일단 groovy 스크립트는 매우 생소하다. 자바같이 생겼는데.. 조금 다른것 같기도하고. spock 은 where 절 쪽 빼면 사실 간결한걸 잘 모르겠다. 내가 아마 이제 막 사용하기 시작해서 그러는 것 같다. 흠 일단 문제에 봉착한것은 이것: groovy script 에서 kotlin test class 를 사용하기. 생각보다 설정이 복잡? 한것같다. 자꾸 unable to resolve class 라고 한다. 뭐가 잘못되었는지 모르겠따. compileTestGroovy 할때 kotlin test class 경로도 잘 잡아줬는데.. 무엇이 문제일지 감도 안온다. 일단 도움은 해당 stackoverflow 포스트에서 받았는데. 해결은 뭐 안되었다. https://s..
-
[키보드 케이블] space cable 에서 구매한 케이블. 드디어 왔다
-
[Hashkell] 하스켈이란? 하스켈 설치방법, 실행방법
하스켈 이란? 순수한 함수형 프로그래밍 언어이다. 함수형 프로그래밍 언어는 컴퓨터에게 해야하는 작업을 알려주는 것이 아닌 (명령형 프로그래밍 언어), 작업이 무엇인지를 알려주는 언어이다. 예를 들면 팩토리얼은 1부터 N까지의 숫자를 모두 곱하는 작업이라고 알려주는 것처럼, 이러한 작업들을 함수로 표현할 수 있다. 함수형 프로그래밍에서는 변수의 값을 변경할 수 없다. 그렇기 때문에, 함수가 하는 일은 주어진 작업을 계산하고 그 결과를 반환하는 일만 하면 된다. 절차형 프로그래밍 언어처럼 변수의 값을 변경할 수 없고, 함수는 결과를 반환하는 일만 하면 되므로 주어진 매개변수가 동일하다면 동일한 결과를 보장하는 특징도 가진다. (=참조 투명성) 하스켈은 느긋한 언어이다. 이것은 함수의 결과값이 표현되어야 할때..
-
[AWS-EC2] EC2 에 접속이 불가능 할때 서버 이전 방법
AWS EC2를 사용하다가 보면 알 수 없는 이유로 서버에 접속이 불가능 해지는 경우가 종종 있다. 나의 경우는 지금까지 두가지 케이스를 경험했는데, 1. public key 가 변조되어 접속할 수 없음. 2. port 22가 닫혀있음. 잘 사용해왔고, 정상접근이 어제까지만 해도 가능했던 서버였는데 갑자기 이런 경우가 발생할 수 있다. 접근권한을 잃게 된 서버에 대해서는 AWS에서 해결방법이 딱히 없다. 아마 free-tier나 고객지원 서비스를 사용하지 않는 경우에는 그런 것 같다. 나의 경우에는 현재 free-tier를 사용하고 있기 때문에, 내가 가이드를 읽고 문제 해결을 하였다. 1번의 경우는 해킹으로 의심되는 사항으로 나의 ssh key가 변조되어 서버 접근권한을 잃은 경우였다. 그때도 2번의 ..
-
[키보드 케이블] 키보드 케이블 판매처 리스트 ⌨️
Space Cables DIY 케이블, pre-configured 케이블, 그리고 여러파츠를 파는 상점이다. pre-configured된 케이블을 항시판매하는 상품들이 아니다. 거의 limited-edition? 처럼 판매하는 것 같다. 판매하는 것을 = drop 이라고 칭하며 (많은 케이블을 일정 기간, 특정시간에 떨군다! 같은 의미인 것 같다), drop에 관련한 정보는 twitter 에 공지를 한다. 여기서 무언가를 사고싶다면 twitter계정을 꼭! 팔로우 하는 것을 추천한다. - 가격대: 아무래도 커스텀 케이블 이다보니 가격대는 꽤 있는 편. ($45~60 / 배송비 비포함) - 배송: 국제배송 가능. (한국의 경우 약 $40불 정도 추가된다.) - 결제수단: Paypal only - 소통채널:..
-
[키보드 케이블] Space Cables / Space Cables 구매방법
Space Cables 키보드 스트리머의(Taeha Types) 인스타그램을 보다가 우연히 알게된 브랜드 Space Cables! 이곳은 custom-cable, diy kit, 와 pre-made 케이블을 판매한다. 상시 판매는 하지 않고, drop 형식(소셜 미디어에서 판매일시를 홍보하고 그 기간에만 구매 가능) 으로 구매할 수 있다. 나도 며칠전에 약간의 하자가 있는 상품들을 깜짝 drop 으로 트위터에서 판매하는 것에 참여해서 어렵게 한 케이블을 구매했다. 이벤트 drop 구매 방법 1. 공식계정 (@Space_Cables) 에 판매하는 케이블이 한개 씩 차례대로 올라온다. 2. 원하는 케이블의 링크 or 스크린샷을 저장한다. 3. 페이팔 계정이 연동된 이메일, 배송받을 나라를 입력하여 2번과 함..
-
[키캡 추천] After-school 1992 사고싶다
기계식 키보드에 관심을 가진 이후로 자연스럽게 키캡도 덕질 아닌 덕질을 하고 있다. 최근에 drop.com 에서 연말/크리스마스 기념 키캡 drop을 했는데,아쉽게도 너무나도 미국 위주 시간이었기 때문에 자느라 놓쳐버렸다. 😂 아쉬운 마음에 이곳 저곳 찾다가 발견한 키캡을 가져왔다. 90년대 특유의 색감을 잘 표현한 키캡세트! After-School 1992. 디자이너가 이 키캡을 소개 하는 페이지에 가면 좀 더 자세한 설명을 확인 할 수 있다. (하단에 표기) 키캡 종류는 TKL, Full ANSI, 그리고 특이 길이, 폭을 가진 키보드를 위한 키캡 세트가 있다. 프로파일: DSS 프로파일 키캡 내가 가지고 있는 레오폴드 FC660M PD는 TKL을 구매하면 될 것 같지만..확인하고 싶어서 디자이너에게..
-
키캡 사버렸다 - SA9009 키캡
말그대로...질러버렸다. 집에 묵혀둔 한성 CHL5X 그냥 사용하려니까 너무 안예뻐서 키캡 질렀다. 무접점 키보드 ASMR 영상에도 등장한 유명한 (!?) 키캡인데, 너무 예뻐서 샀음. 구매한 키캡: http://archonstore.co.kr/products/3422407344 아콘 SA9009컨셉 승화 키캡세트 : 아콘스토어 [아콘스토어] 고객지원센터 smartstore.naver.com 바로 배송된다고 했으니까 아마 내일모레 즈음 행복하게 키캡을 갈아끼고 있겠지?! 집에서 사용할 무접점 키보드를 지금 다시 리얼포스로 사야하나, 아니면 신선하게 해피해킹을살까, 아니면 이번에 새로나온 한성 무접점을 살까 하던 모든 고민을 쏙 들어가게 한 지름. 미국 가려면 돈 아껴야 하므로 이번달 덕질(?!) 은 ..
-
레오폴드 FC660M PD 스웨디시 갈축
주말에 기계식 키보드에 관심이 많은 친구와 함께 용산 타건샵 여러군데를 돌아다녔다. 그 전부터 눈여거 봤던 키보드는 필코 마제스터치 컨버터블 2 크림치즈! 내가 원하는 블루투스 기계식 키보드, 그리고 국내에서 쉽게 구할 수 있는 키보드는 이 제품 뿐이었던 것 같다. 하지만! 실제로 봤던 크림치즈 실물은 생각보다 별로였고, ABS 키캡의 반들반들함을 감내하고 구매할 수 없었다ㅠㅠ. 여러가지 키보드를 타건해보고 모양, 컬러, 그리고 키감에 반했던 레오폴드 FC660M PD 스웨디시 에디션. 미니 키배열을 알게된건 얼마 안되었지만 정말 나에게 딱 필요한 키들만 있는 것 같아서 반했다. 리더스키 매장에는 여러가지 축이 있어서 정말 좋았는데, 그 중에 가장 좋았던! 축은 백축(클리어축) 이었다. 사실 ..
-
갑자기 travis-ci 배포가 되지 않을 때.
그렇다. 맹세코 아-무것도 수정하지 않았는데 어느날 부터 배포신호에 빨간불이 들어오기 시작했다. 이유를 찾을 수가 없었다. .travis.yml 파일은 배포설정 초기에 만진것 이외에는 사실 고칠일이 전혀 없는 파일이기 때문이다. 문제 해결 시도 -> travis-ci 문의 예전에도 비슷한 장애?경험을 한 지라 망설이지 않고 바로 travis-ci customer support에 문의를 보냈다. 그들은 언제나 그랬듯 친절하게 대답해줬다. v2를 사용하기 위해서는 edge:true 프로퍼티를 추가해서 다시 빌드를 돌려봐 달라는 대답이 왔다. 여기서 말하는 v2란, 현재 글을 쓰는 시점에는 major release로 나가지 않은 버전이다. (참고: https://docs.travis-ci.com/user/de..
-
[TIL] ExecutorService / Event Driven Programming / Bulk Insert / DiscriminatorValue / AuditingEntityListener
TIL = Today I Learned | 알게된 내용, 현재로서는 잘 모르겠는 내용을 적는 포스트 Event driven programming - contd 이것에 대해서 잘 모르겠다! 일단은 이 article을 봤음 https://engkimbs.tistory.com/827 ExecutorService (let's deep dive) 코드리뷰를 하다가 이런 클래스를 봤다. threadpool을 정해진 개수만큼 유지하고, concurrent programming 을 할 수 있도록 도와주는 service 인 것 같다. java.util.concurrent 패키지에 있는 것을 보고 추측함. newFixedThreadPool 이거는 정해진 thread count 만큼 pool 을 유지하고 (shared un..
-
서버에서 rm 커맨드가 없다고 할때 / rm command not found
[ec2-user@### apps]$ rm filebeat-7.3.0-x86_64.rpm -bash: rm: command not found [ec2-user@### apps]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin 무슨 이유에서 인지 aws ec2서버에서 rm command가 없다는 것을 알게 되었다. 띄워진 instance의 OS는 CentOS. 아래의 command를 실행하면 coreutils에서 빠진 것을 리스트 해준다. [ec2-user@### travis]$ rpm -V coreutils missing..
-
It is currently in use by another Gradle instance
해결방법 에러로그에 찍힌 해당 .lock 파일을 직접 제거해 준다. log level을 --info로 하고 console에 살펴보면 .lock 파일의 절대경로를 알려준다. 해당 파일을 제거해주고 다시 gradle 태스크를 실행하면 정상동작 하는 것을 확인 할 수 있다. 혹시 다른 .lock 파일들도 제거하고 싶다면 다음과 같은 command로 제거하면 된다 find ~/.gradle -type f -name "*.lock" -delete 출처: 다른 .lock파일 한꺼번에 제거 -> https://stackoverflow.com/questions/21523508/it-is-currently-in-use-by-another-gradle-instance
-
DDD Start! 1장 도메인 모델 시작
도메인 소프트웨어로 해결하고자 하는 문제 영역 = 도메인 특정 도메인을 위한 소프트웨어라고 해서 도메인이 제공해야할 모든 기능을 구현할 필요는 없다. 각각의 실무적 상황에 맞게 직접 구현할 수도, 다른 업체 (솔루션?)을 사용해서 구현할 수도 있다. 하위 도메인은 필수가 아니다. 해당 업체의 규모가 크지 않은 경우는 굳이 소프트웨어의 힘을 빌리지 않고 수작업으로 해결하도록 풀어나갈 수도 있다. 도메인 모델 도메인 모델 = 특정 도메인을 개념적으로 표현한 것, 도메인을 이해하기 위한 도구 사용하면 좋은 점: 여러 관계자들이 도메인에 대한 같은 모습을 알게 되고 지식을 공유하는 데 도움이 됨 예시 객체기반 모델링 상태 다이어그램을 통한 도메인 모델링 사실 표현방식은 중요하지 않다. 모두가 이해할 수 있는 표..
-
Kotlin's Experimental features (from Kotlin Everywhere Seoul 2019 event)
My notes from Kotlin Everywhere Seoul 2019 event Experimental Features inline class avoids extra object allocation wrapper for only one value, no mutable property Contract allows to share extra information about the function behaviors with the compiler. Why can't compiler infer such information? the inferred information... can be implicitly change can break the code provides explicit behavior fo..
-
Sonarqube 란?
소나큐브란? CI = continuous inspection 툴. 정적분석. 어떤 지표들이 있는가? Bug 잘못된 코드 또는 개발자의 의도대로 동작하지 않을 코드를 표시. Code Smells (=구린 코드) 정상동작은 하나 유지보수 하기 힘든 코드를 표시. ex) 중복코드, 너무 복잡한 코드, unit test에 포함되지 않은 코드 Security Vulnerability 보안에 취약한 코드를 표시. ex) SQL Injection, hard-coded 비밀번호, 제대로 핸들링 되지 않은 에러 Test coverage 품질 정책 품질 프로파일 코드 분석 규칙의 집합 각 언어마다 다른 품질 프로파일이 존재 품질 게이트 프로젝트 지표들로 설정된 임계값을 조합한 것. 품질 게이트를 통과하기 위해서는 모든 임..
-
Logrotate로 로그 정리하기
Logrotate를 사용해서 로깅이 좀 더 효율적으로 서버공간을 차지하도록 만들자 개발하고 있는 서비스의 로그 삭제 기준이 정해지지 않아 서버 disk 용량을 많이 차지했다. 최대한 가볍게 사용하려면 로그관리를 주기적으로 해줘야 함. 하지만 매번 수작업으로 한땀한땀 지울 수도 없으니까! Logroate를 사용하자! 어떤 프로그램들이 로그를 찍는가 개발하고 있는 서비스에서 로그를 찍는 프로그램: Redis Nginx Web Application logback tomcat 로그 Logrotate Web Application 은 logback 자체 설정과 톰캣의 log rotate 설정으로 인해 서버에서 특별하게 설정해 주어야 할 것은 없다. 반면에 Redis, Nginx에서는 해당 기능이 없기 때문에 자체적..
-
nginx를 사용해서 점검페이지를 띄워보자
nginx 에서 간단하게 503 에러코드를 사용하여 점검페이지를 띄워보자! 서비스 점검 공지 서비스 점검 공지 페이지가 사용되는 경우가 종종 있습니다. 장애 무중단이 불가능한 빅 업데이트 주로 위와 같은 사유로 점검페이지를 사용합니다. Nginx 를 L4 뒤, application 앞에 두는 구조이기 때문에 점검 페이지를 nginx 쪽에서 관리하고 있습니다. 실제 점검 페이지는 html 파일로, 마크업/디자인 팀에서 전달받은 파일을 nginx 서버에 업로드 하여 사용합니다. nginx 설정 nginx에서 점검 페이지를 관리하려면 conf 파일에 수정을 해야합니다. http status code 503 을 사용하여 에러 페이지로 redirect 하도록 다음과 같이 설정. server { ... locati..
-
brew로 openjdk 설치하는 방법
brew update brew tap homebrew/cask-versions brew search java brew cask install java //this downloads the latest openjdk brew cask install java8 brew cask install adoptopenjdk // adoptopenjdk is also available
-
호주 더락투어 첫째날 / 호주 울룰루 투어 / 호주 2박3일 투어 / 더락투어
투어하면서 간단하게 메모장에 기록해 두었던 것을 1,2,3 일차 순서대로 기록할 예정.줌줌투어 상품상세에 나와있는 첫번째 일정이다.일정소개를 하면서 화장실의 유무, 활동을 한다면 물을 어느정도 챙겨갔는지 간단하게 기재할 예정이다. 나는 여름에 the rock 투어를 다녀왔으므로 (그것도 폭염시즌!!!!!) 물을 꽤 많이 마셨고 많이 구매했다. 기억에 남았던 장소들을 하이라이트 했다 내가 묵었던 숙소는 Alice Springs YHA. 픽업 시간은 오전 5:35 이었다. (Alice Springs YHA 이른 시간 체크아웃은 그냥 우편함에 카드키를 넣어두면 끝이다. 간단!) 약속된 시간에 캐리어를 끌고 나가니, 가이드가 호명을 한다. 가이드가 이끄는 곳으로 짐을 끌고 가서 트레일러에 실으면 완료! 다른 몇..
-
호주 더락투어 준비하기 / 호주 울룰루 투어 / 호주 2박3일 투어 / 예약, 항공편, 준비물
호주 = 자연경관. 자연경관 보러 많이들 여행을 가는데 뭔가 시드니에서만 있기 아쉬워서 울룰루 투어를 예약했다. 사실 Darwin 지역의 투어를 먼저 확인했었지만 결정은 울룰루로! 예약 이번여행에 아주 도움이 되었던 줌줌투어에서 예약 했다.(https://www.zoomzoomtour.com/tour/2835) ㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㄴㅇㅁㅇㅁㄴㅇㅁㄴㅇㅇ ㅇㅇ 대부분 3박4일 투어를 많이 예약 하는데, 우리는 일정도 맞지 않았을 뿐더러 극성수기 여서 (크리스마스 주는 극극극성수기) 2박3일 투어로 예약했다. 가격은 줌줌투어 쿠폰 적용해서 A$344.16! 한화로 대략 27만원 정도. 예약을 완료하게 되면 1:1 메세지로 투어 바우쳐를 보내주는데 이것은 출력해서 가져가야 한다! 투어 전날 사무소에 들..