본문 바로가기

전체 글78

문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라 중복이 없는가: 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라 자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. set을 이용해서 해결할 수 있다. def has_duplicate_chars(s): seen_chars = set() for char in s: if char in seen_chars: return True seen_chars.add(char) return False # 예시 input_str = "abcdefg" print(has_duplicate_chars(input_str)) # 출력: False input_str = "hello" print(has_duplicate_chars(input_str)) # 출력: True.. 2023. 8. 17.
내 블로그/홈페이지 에 github(gist) 코드 삽입(embed) 시키기 (+ 확장 프로그램 소개) 개요 블로그를 작성하다 보면 코드를 삽입해야 할 때가 있다. 그럴 때 gist 나 github 에서 코드를 작성하고 그 코드를 embed로 삽입할 수 있으면 좋겠다 라는 생각이 들어서 방법들을 찾아보고 사용해본 결과 불편한 점이 있었다. 그래서 그 삽입 방법과 개선을 위해 만든 확장프로그램을 소개한다. 삽입 방법 gist 기본적으로 embed 기능을 제공하기는 한다. 우측 상단에서 embed 를 카피해서 내가 원하는 곳에 넣어주면 된다. 다만 문제는 하나의 gist 안에 여러개의 파일이 있을 경우 발생된다. 예시로 아래와 같은 코드를 만들어 보았다. https://gist.github.com/dev-jonghoonpark/e56f32c1795497a6a796005095159024 이 gist 에서 기본 .. 2023. 8. 8.
7장 컨트롤러에서 조건부 로직 처리 (컨트롤러가 도메인의 세부사항을 모르도록 처리하자) 단위테스트 (블라디미르 코리코프) https://jonghoonpark.com/identifying-the-code-to-refactor https://jonghoonpark.com/refactoring-toward-valuable-unit-tests 에서 이어지는 글입니다. 비즈니스 로직과 오케스트레이션의 분리는 다음과 같이 비즈니스 연산이 세 단계로 있을 때 가장 효과적이다. 저장소에서 데이터 검색 비즈니스 로직 실행 데이터를 다시 저장소에 저장 그러나 이렇게 단계가 명확하지 않은 경우가 많다. 의사 결정 프로세스의 중간 결과를 기반으로 프로세서 외부 의존성에서 추가 데이터를 조회해야 할 수도 있다. 프로세스 외부 의존성 쓰기 작업도 종종 그 결과에 따라 달라진다. 이러한 상황에서는 다음과 같이 세 .. 2023. 8. 8.
6장 JDK 동시성(concurrency) 라이브러리 Well-Grounded Java Developer – 2nd edition 이번 장에서는 아래의 것들을 다룹니다. 아토믹(Atomic) 클래스 락(Lock) 클래스 Concurrent data structures BlockingQueues Futures and CompletableFuture Executors java.util.concurrent 를 어떻게 다루는지에 대해서 알아보고 이번 장을 통해 실제 코드로 적용할 준비를 갖추는 것 목표로 합니다. 6.1 최신 동시성 어플리케이션을 위한 블록 만들기 Java는 예전부터 동시성을 지원해왔습니다. 그러나 Java 5가 출시 되면서 java.util.concurrent 패키지를 통해 새로운 방식들을 지원해왔습니다. java.util.concurrent의 .. 2023. 8. 7.
서버에서 google sheet api 사용하기 (with python) 개요 어쩌다보니 회사에서 무선 네트워크를 담당하고 있다. 될 것 이라 기대한 것이 되지 않았을 때 오는 스트레스가 많은 편이라 그런지 내가 가장 적극적으로 의견을 내었고 실천으로 옮겼다. 회사의 무선 네트워크에 대한 개선 이야기도 나중에 한 번 블로그로 써보고 싶고, 쓸 예정이다. 꽤 장기간에 걸쳐서 무선 네트워크를 개선해왔고 현재는 매우 안정적으로 운영되고 있다. 이 이야기를 하는 이유는 오늘 아래와 같은 요청이 있었기 때문이다. 우리 회사는 현재 radius를 통한 인증 시스템을 사용하고 있다. (이것도 내가 구축하였다.) 다만 인증 시스템에 대한 관리를 내가 하고 있다 보니 구성원 변경이 발생 되었을 때 피플팀(인사팀) 에서 나를 거쳐서 구성원을 등록/삭제/수정 을 진행해야 했다. 그래서 이 작업을.. 2023. 8. 2.
소나큐브 설치하기 (with Docker, macOS) 개요 최근에 devops 님께 3개의 sonarqube 프로젝트를 생성해달라는 요청을 드렸었다. devops 님께는 항상 감사한 마음을 가지고 있다. 참 수고가 많으신 것 같다. 요청 드린것은 요청 드린 것이고 한번쯤은 직접 어떤 과정을 통해 진행되는지 확인해보고 싶었다. 참고로 소나큐브는 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다 라고 위키피디아에 소개되어있다. 본문 설치 환경 이 글에서는 Docker를 이용해서 설치하며, 로컬에 설치하기 때문에 macOS 를 기반으로 설명을 진행한다. 진행 순서 1. 도커 이미지 pull & run 공식홈페이지에 이미지에 따른 pul.. 2023. 8. 2.