Linux

    [Spring] Path variable ?

    Path Variable API URL은 API이기 때문에, 정의가 되어있어야 합니다. 정의되지 않은 API로 요청이 오류는 당연히 발생할 것입니다. 이렇게 고정된 API만 사용하는 것이 아니라, URI에 가변적인 변수를 선언해서 사용할 수 있습니다. 이러한 가변변수를 Path Variable이라고 합니다. Path Variable을 사용하기 위하여, @GetMapping annotation에서 path 설정 시 {}을 이용합니다. 예를 들어 아래와 같이 처리합니다. @GetMapping(path = "/example/path-variable/{name}") public PathVariableExample(@PathVariable String name) { // Do something. }{name}은 ..

    [Spring] Spring Boot의 작동원리? Dispatcher Servlet?

    [Spring] Spring Boot의 작동원리? Dispatcher Servlet?

    Spring Boot의 설정 Spring Boot 프로젝트를 사용해서 설정파일을 지정하기 위해서는 Java 클래스를 사용할 수 도 있지만, application.yml 또는 application.properties 를 많이 사용합니다. 특히 YAML이 설정 및 관리가 더 편리하기에 _application.yml_을 많이 사용합니다. application.properties 는 설정이름=값 형식을 사용하고, application.yml은 설정이름:값 형식을 사용합니다. 두 가지는 구분자가 = 와 : 로 다릅니다. 아래는 properties와 yml의 차이 예시입니다. // properties logging.level.org.springframework = debug // yml logging: level:..

    Web Service / Web Application

    Web Service Web Service는 WWW를 이용한 디바이스 간의 통신 서비스 또는 네트워크 상에서 특정한 포트를 오픈한 서버가 클라이언트에게 요청을 받은 후 클라이언트에 HTML, JSON, XML, Image 등의 웹문서를 제공합니다. 네트워크 상에서 서로 다른 종류의 이기종들 간의 상호작용을 위한 소프트웨어 시스템이라고 볼 수 있습니다. Web Service 의 3 Keys 기기간 상호작용을 위한 설계 플랫폼 독립성 어플리케이션 간의 커뮤니케이션 지원 Web service는 Server에 Request를 요청하고, Response를 받습니다. 이러한 서비스에 대해 XML, JSON 포맷으로 데이터를 교환할 수 있으며, JSON을 많이 사용하는 추세입니다. Web Application 서버에..

    [Ubuntu] 일시중단, 절전모드 활성화/비활성화 하기

    Ubuntu에는 3가지 Suspend, Hibernation 모드가 존재합니다. Suspend to RAM (Normal Suspend) Suspend to Disk (Hibernate) Suspend to both (Hybrid) 위 모드는 systemd에서 target으로 각각 관리하고 있습니다. $systemctl status sleep.target ● sleep.target - Sleep Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled) Active: inactive (dead) since Tue 2022-02-22 18:07:56 KST; 1min 33s ago Docs: man:systemd.spe..

    [Profiling Experience] About Weak / Strong symbol

    [Profiling Experience] About Weak / Strong symbol

    안녕하세요. 리눅스 시스템 기반에서 시스템최적화와 프로파일링에 관심이 많은 소프트웨어 개발자입니다. 이번 글에서는 현업에서 개발 중 발생한 문제에 대해 공유하고 ELF 구조에서 설명했던 Weak / Strong Symbol에 대해 한번 더 정리하고자 합니다. [ELF] Symbol Resolution 오래 전에 ELF에 대해 정리하던 글 중 Symbol에 관한 글을 작성한 적이 있습니다. ELF 내에서 Symbol이 가지는 의미와 Symbol Resolution에 대해서 쉽게 다룬 적이 있었습니다. Strong symbol와 Weak symbol에 대한 기본적인 개념을 이해하고 어떻게 서로 작용하여 동작하는지 이해하셨으면 이 글을 읽기 더욱 쉬울 것 같습니다. 지금부터는 제가 현업에서 개발하던 중 발생한..

    [Dynamic linker] ld.so / ld-linux.so* 의 동작 간단 분석 (작성 중)

    ld.so, ld-linux.so* 란 무엇인가? ld.so / ld-linux.so* 는 Dynamic linker 입니다. ld.so와 ld-linux.so*는 프로그램에서 필요한 Shared library를 찾고, 로드하는 역할을 합니다. Dynamic, 즉 동적으로 링킹한다는 말이 있다는 것은 정적으로 링킹하는 것도 있다는 뜻입니다. 두 가지가 어떻게 다르고 왜 필요한지도 알아볼 필요가 있습니다.