ETC
-
c 와 java 에서 call by reference는 없다ETC 2024. 4. 4. 18:38
Call by Reference(Pass by Reference) call by reference는 프로그래밍 언어 설계에서 사용되는 용어로, 함수에 인수를 전달할 때 값의 복사본 대신 원래 값의 참조를 전달 받는 것을 의미한다. 함수 내에서 참조를 통해 직접 값을 접근함으로써 원본을 변경할 수 있게 된다. 예를 들어 다음과 같은 Java 코드를 살펴보면 public static void main(String[] args) { List list = new ArrayList(); add(list); System.out.println(list.size()); //output: 1 } public static void add(List collection){ collection.add("1"); } 위 코드는 ..
-
[보이지 않는 동료] 목적을 통일시키고 인정을 기다리며ETC 2023. 10. 27. 20:23
원본이 있는 글이며 좋은 한글 번역 게시글이있습니다. 조금 더 쉽고 편하게 읽을 수 있도록 수정하였으며 원문의 내용을 해치지 않도록 하였습니다. 스티브 마퀴스는 텔레비전도 없고 휴대전화 신호도 없는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 그는 15년 동안 전 세계의 수십 명의 프로그래머와 함께 인간의 개인 정보를 보호하기 위한 큰 프로젝트를 비밀리에 개발하고 있다. 그러나 그들은 서로를 거의 본 적이 없으며 각각 마치 유령처럼 존재한다. 그러던 중 어느 날, 중국 기업이 갑자기 "대량의 기부금"을 보내기 전까지는.. 스티브 마퀴스 스티브 마퀴스는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 서비스 제공업체는 매년 그의 집 앞에 신호 탑을 세울 것을 약속했지만 한 번도 이행한 적이 없고 나무집 주변은..
-
Swagger fox + Spring Boot Actuator = boom!ETC 2023. 9. 19. 01:34
평화로운 따스한 오후 // swagger fox implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation("io.swagger:swagger-annotations:1.5.21") implementation("io.swagger:swagger-models:1.5.21") //Spring Boot Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' 개발 중인 프로젝트에 메트릭 정보를 prometheus로 얻고 싶은 마음에 Swagger-fo..
-
양말의 짝을 찾을수있는 효율적인 알고리즘ETC 2023. 9. 12. 20:59
stackoverflow에서 재미난 주제를 발견하였다. 주제에 대한 요약은 아래와 같다. 세탁물에서 양말의 짝을 찾는 도중 내가 하는 방식이 그다지 효율적이지 않다는 걸 알게 되었다. 나는 양말을 하나를 고르고 그 짝을 찾기 위해 세탁물 더미에서 반복적으로 찾았다. 이는 평균적으로 n/2 * m/4 = n^2/8의 양말을 반복해야 한다. 나는 컴퓨터 과학자로서 O(N log N)에 달성하기 위해 정렬을 떠올렸다 양말을 복제할 수 없기 때문에 해싱이나 not in-place 정렬 같은 해결책은 사용할 수 없다 따라서 질문은 2n 개의 요소를 포함하는 n개의 양말 더미를 고려할 때(각 양말이 정확히 하나의 일치하는 쌍을 가지고 있다고 가정) 최대 로그 여분의 공간으로 효율적으로 짝을 찾는 가장 좋은 방법은 ..
-
브라우저 에서 내 도메인을 검색하면 일어나는일ETC 2023. 8. 29. 20:21
언젠가 누군가에게 "브라우저 URL 입력창에 'www.google.com'을 검색하면 어떤 일이 일어날까요?" 라는 질문이 꽤 유행하는 면접질문이라는 소식을 들었던 것 같다. 처음에는 그냥 별 생각 안 하고 넘어갔었는데 최근에서야 이 질문이 복잡한 웹기술에 대한 이해도를 답변받을 수 있는 좋은 질문이라는 사실을 알게 되었고 알고 보니 정말 좋은 질문이면서 좋은 주제인 거 같아 블로깅을 한다. 이글에서는 SpringBoot로 만든 서버를 서비스로 운영을 하고 있는 상태에서 브라우저로 접근하는 과정을 나열하려 한다. 서버의 IP를 174.173.172.171, 도메인을 mail.awesome.com이라고 가정하자. 브라우저는 Domain에 해당하는 IP를 찾는다. DNS (domain name service..
-
Git Hook 을 멋들어지게 즐겨보기ETC 2023. 6. 23. 20:23
Hook ?! Git 에서 어떠한 이벤트가 생겼을때 자동으로 특정 스크립트이다. Git 으로 형상관리 하는 프로젝트에는 .git 디렉토리가 있으며 그 밑에는 hooks 디렉토리가 있으며 그 안에 유용한 샘플 hook들이 들어있다. hook은 이벤트 별로 다양한 이름을 가지며 본 글에서 사용할 hook으로는 커밋 메시지 작성전에 동작하는 pre-commit, 커밋 메시지 편집기가 실행하기 직전에 동작하는 prepare-commit-msg 커밋 메시지 작성후 커밋이 완료되기 직전인 commit-msg 이렇게 3개를 활용 해보려한다. commit-msg 로 커밋 메시지 검사 https://www.conventionalcommits.org/en/v1.0.0/ Conventional Commits A specif..
-
Custom GitHub Action 으로 Chat-GPT 코드리뷰 제작하기ETC 2023. 6. 22. 20:16
github에 pull request를 날리면 chat gpt 가 코드리뷰를 해주는 custom github action 을 만들려 한다. 만드는 방법은 아래의 링크를 참고할 수 있다. https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action file.filename); let fileDiff = "" for (const file of changes) { const diff = await client.request(`GET /repos/${owner}/${repo}/commits/${sha}`, { headers: { Accept: "application/vnd.github.diff", }, }); fileDiff +..
-
Value Object 가 최고다.ETC 2023. 6. 14. 18:51
사람의 나이를 나타날때 어느 자료형을 사용해야할까? 1. Interger 2. Boolean 3. String 정답은 셋다 아니다. 나이를 나타내는 타입 Age 를 만들어서 사용해야한다. value object 코드의 유지보수와 가독성을 향상시키며 모델의 표현력을 높일수있는 value object 는 도메인에서 한개 또는 그 이상의 속성을 묶어 특정한 값을 나타내는 객체를 의미한다. value object 의 특징 및 장점으로 는 불변성, 동등성, 자가 유효성, 휴먼 에러 방지 가 있다 불변성 한번 생성되면 그 값을 변경하지 못하게하여 중간에 변경되지 않는 안정성 과 다중 스레드 환경에서 안전하게 사용이 가능하다. public class Age { private int value; public Age(i..