Press "Enter" to skip to content

Space4u

리눅스에서 vi 편집시 파일유형이 dos로 설정된 경우 unix로 저장하기

리눅스(우분투, 센트오에스, 페도라, 래드햇 등등)에서 어떤 이유인지는 모르나 텍스트 파일이 dos 형태로 저장되는 경우가 있다.

전형적인 형태로는 라인 끝에 ^M 문자가 붙는 것으로 인지하게 되지요.

원인으로 생각할 수 있는 것은 리눅스는 라인의 끝이 \n 으로 끝나야 하는데, 윈도우에서 생성된 파일의 경우 \r\n (CR/LF)로 끝나서 발생합니다.

vi에서 다음과 같이 설정하면 유닉스 타입(\n으로 라인이 끝나는 파일)으로 저장할 수 있습니다.

:set fileformat=unix

dos 타입으로 저장하려면

:set fileformat=dos 

이상입니다.

.htaccess 예제 및 설명

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond $1 !^(index\.php)
 RewriteCond %[REQUEST_FILENAME] !-f
 RewriteCond %[REQUEST_FILENAME] !-d
 RewriteRule ^(.*)$ index.php?param=$1 [L]
</IfModule>

.htaccess파일은 아파치 웹 서버에서 URL 재작성(rewriting)을 위해 사용됩니다.

위 내용은 사용자가 웹사이트의 특정 URL에 접근할 때, 해당 요청을 index.php 파일로 리디렉션하고, 추가로 파라미터를 변수를 전달하는 것입니다.

각각의 라인을 하나씩 뜯어보도록 합시다.

<IfModule mod_rewrite.c>

아파치의 mod_rewrite 모듈이 활성화되어 있을 때만 이 규칙을 적용하겠다는 뜻입니다. 

mod_rewrite 모듈은 URL을 재작성하는 데 사용됩니다.

RewriteEngine On
URL 재작성 기능을 활성화합니다. 

이 라인이 있어야만 아래의 RewriteRule과 RewriteCond가 적용됩니다.

RewriteCond $1 !^(index\.php)
조건을 정합니다.

요청된 URL이 index.php가 아닌 경우에만 아래의 규칙이 적용되도록 합니다. 

여기서 $1은 RewriteRule에서 첫 번째 그룹을 의미합니다.
!는 “부정(NOT)”을 의미하며, ^는 문자열의 시작을 의미하고, \.는 마침표(.)를 의미합니다. 

따라서 이 조건은 index.php로 시작하지 않는 요청을 의미합니다.

RewriteCond %{REQUEST_FILENAME} !-f

이 조건은 요청된 파일이 실제 서버에 존재하지 않는 경우에만 규칙을 적용하도록 합니다. 

-f는 실제 파일 여부를 확인하는 플래그입니다.

RewriteCond %{REQUEST_FILENAME} !-d
이 조건은 요청된 경로가 실제 디렉토리가 아닌 경우에만 규칙을 적용하도록 합니다. 

-d는 디렉토리 여부를 확인하는 플래그입니다.

RewriteRule ^(.*)$ index.php?param=$1 [L]
이 라인은 실제 재작성 규칙을 정의합니다.

  • ^(.*)$는 URL의 전체 경로를 저장합니다.
  • .*는 모든 문자열을 의미하며, 이는 그룹 $1에 저장됩니다.
  • index.php?param=$1는 저장된 URL 경로를 index.php의 param 파라미터로 전달합니다.
  • [L]은 이 규칙이 마지막이라는 것을 의미합니다. 이 규칙이 적용되면 추가적인 규칙은 처리되지 않습니다.

종합

이 .htaccess 파일은 다음과 같이 작동합니다:

요청된 URL이 index.php로 시작하지 않으면,

요청된 URL이 실제 파일이나 디렉토리가 아니라면,

그 요청을 index.php 파일로 리디렉션하고, 원래의 URL 경로를 param이라는 파라미터로 전달합니다.

예를 들어, 사용자가 test.com/data에 접근하면, 이 파일은 내부적으로 test.com/index.php?param=data로 리디렉션합니다.

    시가표준액 조회

    공시가격 = 시가표준액 = 기준시가

    개별주택

    https://www.realtyprice.kr

    공동주택

    https://www.realtyprice.kr

    오피스텔등… 주택이 아닌 것들

    건축물시가표준액 + 부속토지의 시가표준액

    https://www.wetax.go.kr 접속 -> 지방세 정보 -> 건축물시가표준액 조회

    서울일 경우 서울이택스(https://etax.seoul.go.kr) > ETAX이용안내 > 조회/발급 -> 주택외건물시가 표준액조회 에서 건축물시가표준액 조회

    https://www.realtyprice.kr 접속(부동산 공시가격 알리미) -> 우측 토지의 “개별 공시지가”에서 조회 하여 지분만큼 곱함

    mac m1 에서 docker compose build 실패 대처

    [+] Building 0.8s (1/2)                                                                                                                      docker:desktop-linux
    [+] Building 0.8s (2/2) FINISHED                                                                                                             docker:desktop-linux
     => [database internal] load build definition from Dockerfile                                                                                                0.0s
     => => transferring dockerfile: 55B                                                                                                                          0.0s
     => ERROR [database internal] load metadata for docker.io/library/mariadb:10.6                                                                               0.8s
    ------
     > [database internal] load metadata for docker.io/library/mariadb:10.6:
    ------
    failed to solve: mariadb:10.6: error getting credentials - err: exit status 1, out: ``

    리눅스용으로 만든 도커파일을 맥 m1에서 올리려고 하니 에러가 발생한 듯합니다.

    대처 방법

     ~/.docker/config.json 파일 열기
    "credsStore":"desktop" 으로 설정되어 있는 것을
    "credsStore":"osxkeychain" 로 변경
    
    다시 빌드
    sudo docker-compose up --build -d