Blocking

 

  • 작업 A가 작업 B를 호출하였을 때 작업 B가 완료될 떄 까지 작업 A는 다음 작업을 수행하지 못하는 방식을 말합니다.




Non-Blocking

 

  • 작업 A가 작업 B를 호출하였을 때 작업 A는 바로 다음 작업을 수행하는 방식을 말합니다.




동기(Synchronous) 프로그래밍이란?

 

  • 여러 테스크(Task)를 순차적으로 실행하는 방식을 동기(Synchronous) 프로그래밍이라 합니다.

동기 프로그래밍 예시

 

 

  • 동기 프로그래밍은 위 그림과 같이 앞서 수행된 하나의 작업이 완료된 후에 다음 작업을 수행하는 방식을 말합니다.




비동기(Asynchronous) 프로그래밍이란?

 

  • 여러 테스크(Task)들을 독립적으로 실행하는 방식을 비동기(Asyncrhonous) 프로그래밍이라 합니다.




비동기 프로그래밍 예시 1

 

 

  • 독립적인 각 작업을 두 개의 쓰레드가 나누어 실행하는 방식의 비동기 프로그래밍입니다.




비동기 프로그래밍 예시 2

 

 

  • 기존 두 개의 쓰레드보다 더 많은 쓰레드를 생성하여 작업을 처리하는 비동기 프로그래밍입니다.




비동기 프로그래밍 예시 3

 

 

  • 햇반 데우기는 것은 전자 레인지에 넣고 국을 끓이는 것은 가스 레인지에 올려놔서 처리하는 것과 같이 작업을 다른 담당자에게 위임 하는 방식으로 비동기 프로그래밍이 가능합니다.




비동기 프로그래밍 예시 4

 

 

  • 여러 개의 쓰레드와 Non-Block I/O를 통한 비동기 프로그래밍이 가능합니다.




비동기 프로그래밍 != 멀티 쓰레드 프로그래밍

 

  • 비동기 프로그래밍과 멀티 쓰레드 프로그래밍은 서로 다른 개념입니다. 비동기 프로그래밍은 여러 작업을 동시에 실행하는 프로그래밍 방법론이며, 멀티 쓰레드 프로그래밍은 비동기 프로그래밍의 한 종류입니다.




동기/비동기와 블락/넌블락의 차이점

 

  • 블락과 넌블락은 특정 함수가 다른 함수를 호출하였을 때 호출한 함수가 작업 완료 여부를 기다릴지 말지를 의미하는 것이지만, 동기와 비동기는 여러 작업들의 순서를 지켜야될 경우 동기로 처리하거나 또는 지키지 않아도 돼서 넌블락 또는 멀티 쓰레드를 활용해서 비동기적으로 프로그래밍 하는 것을 말합니다.



- 자료 참조 : https://www.youtube.com/watch?v=EJNBLD3X2yg

객체 지향 프로그래밍(Object-oriented programming, OOP)이란?

 

  • 객체 지향 프로그래밍(Object-oriented programming, OOP)은 프로퍼티와 메서드를 가진 객체를 만들고, 이렇게 만들어진 객체들 간의 상호작용을 통해 로직을 구현하는 프로그래밍 패러다임을 말합니다.




객체 지향 프로그래밍의 특징

 

  • 객체 지향 프로그래밍은 크게 캡슐화, 상속성, 추상화, 다형성의 네 가지 특징을 가졌습니다.

 

캡슐화

 

  • 동일한 목적으로 사용될 속성과 메서드를 하나의 객체로 묶음으로써 사용성, 관리적인 측면, 정보 은닉성에 대한 이점을 얻을 수 있습니다.




상속성

 

  • 상위 클래스에 있는 프로퍼티와 메서드를 상속 받음으로써 상위 클래스의 코드를 재사용하며 클래스를 확장할 수 있다는 이점이 있습니다.




추상화

 

  • 객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 선언하는 것을 의미합니다. 즉, 객체의 공통된 프로퍼티와 메서드를 선언하여 이를 상속받는 객체에서 정의함으로써 객체의 복잡성을 줄여 코드의 가독성을 높일 수 있습니다.




다형성

 

  • 다형성은 공통된 인터페이스를 기반으로 오버로딩 및 오버라이딩을 통해 각기 다른 기능을 구현하는 것을 말합니다.




객체 지향 프로그래밍의 장.단점

 

장점

 

  • 객체 단위로 모듈화하여 로직을 구현하기 때문에 재사용성이 높고 유지보수가 편리합니다.

 

  • 각 객체를 독립적으로 개발하고 통합하기 때문에 대형 프로젝트의 개발이 쉬워집니다.

 

  • 객체는 자신의 역할을 명확하게 정의하고 있기 때문에 객체의 역할을 파악하고 이용하기 쉽습니다.


  • 하위 객체는 공통된 속성과 기능을 상속 받고, 자신만의 고유한 기능에만 집중할 수 있기 때문에 생산성이 높아집니다.




단점

 

  • 객체들간의 상호작용을 기반으로하여 로직을 구현하기 때문에 설계가 어렵습니다.

 

  • 로직에 필요한 객체를 생성하고 관리하고 가상 함수 테이블을 통한 함수 호출 방식에 의해서 절차 지향에 비해 상대적으로 성능이 낮습니다.

 

  • 객체는 메모리 공간을 차지하므로, 객체를 많이 사용하는 경우에는 메모리 공간이 낭비될 수 있습니다.




OAuth( Open Authorization )란?

 

  • OAuth는 Open Authorization의 약자로서 인터넷 사용자들이 비밀번호를 제공하지 않고 웹 사이트 상의 자신들의 정보에 대해 다른 웹 사이트나 애플리케이션에게 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준입니다.




OAuth 핵심 구성 요소

 

구분 설명
Resource Owner OAuth 로그인을 통해 서비스를 이용하려는 사용자입니다.
Client 서비스 제공자이며, Resource Server 입장에서는 Client입니다.
Authorization Server 권한을 부여해주는 서버로서 Authorization Token을 발급을 담당합니다.
Resource Server 사용자의 정보(Resource)를 제공하는 서버입니다.
Access Token 자원에 대한 접근 권한을 Resource Owner가 인가하였음을 나타내는 자격증명 Token입니다.
Refresh Token 비교적 짧은 만료기간을 가진 Access Token을 재발급 받아야할 때 사용하는 Token입니다.




OAuth 시퀀스

 




빅 엔디안( Big-Endian )이란?

 

int num = 0x00000002;

// 메모리에 저장되는 형태
00000002;

 

  • 빅 엔디안은 사람이 숫자를 표기하는 형식 그대로 바이트 단위로 높은 자리수부터 낮은 주소에서 높은 주소 방향으로 데이터를 저장하는 방식을 말합니다.




리틀 엔디안( Little-Endian )이란?

 

int num = 0x00000002;

// 메모리에 저장되는 형태
02000000;

 

  • 리틀 엔디안은 빅 엔디안과 반대로 바이트 단위로 낮은 자리수부터 낮은 주소에서 높은 주소 방향으로 데이터를 저장하는 방식을 말합니다.




빅 엔디안( Big-Endian ) & 리틀 엔디안( Little-Endian )을 구분하는 이유

 

  • 빅 엔디안과 리틀 엔디안은 서로 장점이 있습니다. 그렇기 때문에 특정 환경에 따라서 빅 엔디안과 리틀 엔디안을 선택합니다.




리틀 엔디안의 장점

 

  • 타입 캐스팅시 낮은 주소부터 접근하면 되기 때문에 타입 캐스팅에 이점이 있습니다.

 

  • 연산 시 낮은 주소에서부터 연산을 하면 되기 때문에 연산 속도에서 이점이 있습니다.




빅 엔디안의 장점

 

  • 사람의 데이터 표기법과 동일하기 때문에 메모리 디버깅시 이점이 있습니다.

 

  • 높은 자리수가 낮은 주소에 있기 때문에 대소 관계 비교에서 이점이 있습니다.




정규 표현식( regular expression )이란?


  • 정규 표현식( regular expression )은 텍스트에서 휴대폰 번호, 이메일 주소 등의 우리가 원하는 특정한 패턴을 찾거나 변환, 유효성 검사등을 할 때 사용하는 기법이며, 줄여셔 regex라고도 합니다.

  • regex는 1950년도에 미국의 한 수학자 Stephen에 의해 개발되었으며, 유닉스 계열에서 텍스트와 같은 것들을 프로세싱 하는대 주로 사용되었습니다.




정규표현식 포멧


/ ( pattern ) / ( flag )


  • / / 사이에 통해서 원하는 정규표현식 패턴을 작성할 수 있습니다.

  • / / 뒤에 flag를 통해서 검색할 옵션을 추가할 수 있습니다.




flag


i(case insensitive)


  • i 플래그를 설정하면 대.소문자 구분 없이 검색합니다. 따라서 A와 a를 둘 다 똑같이 검색할 때 사용하는 플래그입니다.




g( global )


  • g 플래그를 설정하면 패턴과 일치하는 모든 텍스트를 찾습니다. g 플래그가 없으면 패턴과 일치하는 첫 번째 결과만 반환합니다.




m( multiline )


  • m 플래그를 설정하면 다중 행 모드를 활성화합니다.




s( single line )


  • s 플래그를 사용하면 .을 사용할 때 개행 문자도 매칭합니다.




u( unicode )


  • u플래그를 사용하면 유니코드 전체를 지원합니다.




y( sticky )


  • y플래그를 사용하면 대상 문자열의 현재 위치부터 비교를 시작하도록 설정합니다.




pattern


/(hi|hello)|(And)/


  • ()은 그룹을 만들 때 사용하며, /(hi|hello)|(And)/ 는 첫 번째 그룹으로 hi 또는 hello를 찾으며 두 번째 그룹으로는 And를 찾습니다.

  • /(?:hi|hello)|(And)/ 처럼 ?:을 중괄호 안쪽 시작 부분에서 사용한다면은 그룹이 지어지지 않습니다.




/gr(e|a)y/


  • /gr(e|a)y/은 gr로 시작하면서 중간에 e 또는 a를 포함하고 y로 끝나는 문자열을 찾을 때 사용하는 패턴입니다.




/gr[asdf]y/


  • 대괄호를 이용할 경우 대괄호 안에 있는 문자와 해당되는 모든 문자를 찾습니다. 즉, /gr[asdf]y/는 gr로 시작하고 y로 끝나면서 가운데 a,b,c,d가 들어가는 모든 문자열을 찾습니다.

  • [asdf] 대신에 [a-f]를 사용해서 축약하여 표현할 수 있습니다.

  • [^a-z]와 같이 ^ 기호를 사용하면 a-z를 제외한 모든 문자를 찾습니다.




/gra{2,3}y/


  • gr로 시작하고 y로 끝나면서 a가 최소 2개 최대 3개까지 나오는 패터을 찾을 때 사용합니다.




\b, \B


  • /Ya\b/ 는 Ya가 문자열에서 맨 끝에 있는 문자열만 찾아냅니다. 반대로 /Ya\B/는 문자열에서 맨 끝에 있지 않는 Ya를 찾아냅니다.




/^ya/ 그리고 /ya$/


  • /^ya/ ^는 문장의 시작에 있는 ya를 찾으며 /ya$/는 문장의 끝에 있는 ya를 찾습니다. 그리고 flag m을 설정하지 않으면 전체 문자열를 기준으로 찾습니다.




/./


  • .은 정규표현식에서 사용되는 특수 문자이기 때문에 .을 찾고자 한다면은 .\ 을 사용해서 감싸주어야 합니다.




URL 문법

 

URL 구조

 

<스킴>://<사용자 이름>:<비밀번호>@<호스트>:<포트>/경로;<파라미터>?<질의>#<프래그먼트>




스킴

 

  • 어떤 프로토콜을 사용하여 서버 리소스를 요청해야 하는지를 의미합니다.

 

  • 스킴 컴포넌트는 알파벳으로 시작해야 하고 URL의 나머지 부분들과 :로 구분합니다.

 

  • 스킴명은 대소문자를 구분하지 않습니다.




사용자 이름

 

  • 몇몇 스킴은 리소스에 접근을 하기 위해 사용자 이름을 필요로 합니다.




비밀번호

 

  • 사용자의 비밀번호를 가리키며, 사용자 이름에 콜론(:)으로 이어서 기술합니다.




호스트

 

  • 리소스를 호스팅하는 서버의 호스트 명이나 IP주소를 의미합니다.




포트

 

  • 리소스를 호스팅하는 서버의 포트 번호를 의미합니다.




경로

 

  • 서버 내 리소스가 어디에 있는지를 가리킵니다. 경로 컴포넌트의 문법은 서버와 스킴에 따라 다릅니다.

 

  • 경로 컴포넌트는 유닉스 파일 시스템 경로와 유사한 구조를 가집니다.

 

  • 각 경로조각은 자체만의 파라미터 컴포넌트를 가질 수 있습니다.




파라미터

 

  • 특정 스킴들에서 입력 파라미터를 기술하는 용도로 사용되며 파라미터는 이름/값을 쌍으로 가집니다.

 

  • URL에서 경로마다 파라미터를 가질 수 있습니다.

 

  • URL 나머지 부분과 ; 문자로 구분하여 URL에 기술합니다.




쿼리

 

  • 스킴에서 애플리케이션(데이터베이스, 게시판, 검색엔진 등)에 파라미터를 전달하는데 사용됩니다.

 

  • URL 나머지 부분과 ?로 구분하여 이름/값을 쌍으로 가집니다.

 

  • &을 이용해서 여러개의 쿼리문을 사용할 수 있습니다.




프래그먼트

 

  • 리소스의 조각이나 일부분을 가리키는 이름입니다. 프래그먼트 필드는 서버에 전달되지 않습니다. 이는 클라이언트에서만 사용하며 리소스의 특정 부분을 가리킬 수 있도록 사용하는 기능입니다.




blocking I/O

 

  • blocking I/O는 I/O 함수를 호출했을 때 커널에서 I/O 작업이 완료될 때까지 호출자가 blocking 상태가 되는 I/O를 말합니다.




non-blocking I/O

 

  • non-blocking I/O는 I/O 함수를 호출했을 때 커널에게 I/O 작업을 요청한 후 호출자가 blocking 상태가 되지 않고 다음 작업을 처리할 수 있는 I/O를 말합니다.




synchronous( 동기 )

 

 

  • synchronous는 여러 작업들을 처리함에 있어서 순차적으로 하나씩 처리하는 것을 synchronus라고 합니다.




asynchronus( 비동기 )

 

  • asynchronous는 여러 작업들을 처리함에 있어서 순서와 작업 완료 여부 상관없이 독립적으로 동시에 처리하는 것을 asynchronous라고 합니다.

 

  • asynchronous는 작업을 커널이나 다른 쓰레드에 요청한 후 다음 작업을 처리하고 요청한 작업이 완료되었을 때 noti를 받거나 또는 콜백 함수가 호출되도록 합니다.




asynchronous 구현 방법

 

1. 싱글 쓰레드 환경에서 non-blocking I/O를 활용하여 작업을 처리하는 asynchronous 기법

 




2. 멀티 쓰레드 환경에서 각각의 쓰레드가 작업을 처리하는 asynchronous 기법

 




3. 멀티 쓰레드 환경에서 각각의 쓰레드가 non-blocking I/O를 활용하여 작업을 처리하는 asynchronous 기법

 




4. blocking I/O를 다른 쓰레드에서 처리하게 요청한 후 noti를 받거나 callback을 통해 처리

 




asynchronous 개념에서 주의할 점

 

  • asynchronous는 non-blocking I/O와 개념이 비슷하지만 다릅니다. non-blocking I/O는 asynchronous 프로그래밍을 구현하는 기법 중 하나로서 단순히 I/O 작업을 수행할 때 block되지 않고 return 되는 I/O를 말합니다. 하지만, asynchronous는 작업의 순서 및 완료 여부에 상관없이 커널이나 다른 쓰레드에 작업 요청 후 자신의 다음 작업을 처리하며 이후 커널이나 다른 쓰레드에서 요청했던 작업이 완료되었을 때 완료 noti를 받거나 callback 함수가 호출되도록 하는 것을 말합니다.

 

  • asynchronous 프로그래밍은 멀티 쓰레딩 프로그래밍이 아닙니다. 여러 작업을 동시에 실행하는 프로그래밍 방법론입니다. multithreading은 asynchronous programming을 사용할 수 있는 기법 중 하나입니다.




'개발 상식' 카테고리의 다른 글

정규 표현식( regular expression ) 간단한 사용법  (0) 2023.01.06
URL 문법  (0) 2022.12.26
디지털 이미지 파일 포맷에 관하여  (0) 2022.12.09
URI, URL, URN 이란?  (1) 2022.10.29
절대경로와 상대경로란?  (0) 2022.10.28

디지털 이미지 파일 포맷의 종류

  • 디지털 이미지 파일 포맷으로는 크게 래스터( Raster )와 벡터( Vector )가 있습니다




래스터( Raster ) 파일


  • 래스터 파일은 픽셀이 그리드 형태로 모여 만들어진 이미지입니다. 디지털 사진과 디테일한 그래픽은 모두 래스터 형식으로 제공됩니다.




래스터 파일의 특징


  • 비트맵이라고도 하는 래스터 파일은 고품질 사진을 저장하고 보여줄 때 가장 효과적이며 각각의 픽셀이 색상을 표현하여 이미지를 구성합니다. 일정한 수의 색상 픽셀로 구성되어 있기 때문에 파일 크기를 변경하면 해상도가 저하됩니다.

  • 소프트웨어를 통해 래스터 파일의 개별 픽셀을 편집하여 사진의 형태를 변경할 수 있습니다. 온라인의 대부분의 이미지가 래스터 이미지 파일이며, 프로그램 호환성이 좋습니다. 대표적인 래스터 파일 유형으로는 .jpg, .jpeg, .png가 있습니다.




래스퍼 파일의 장점


  1. 디테일한 표현

래스터 파일을 올바른 치수로 표시하면 고해상도 사진에서 볼 수 있는 복잡한 디테일과 색상을 고스란히 표현할 수 있습니다. 파일에 포함된 픽셀 수가 많을수록 이미지 품질이 높아집니다.



  1. 정밀한 편지

래스터 그래픽이나 사진을 편집할 때 각 픽셀을 개별적으로 변경할 수 있습니다. 따라서 필요에 따라 이미지를 보정하고 조정할 수 있습니다.




  1. 뛰어난 호환성

래스터 파일은 매우 다양한 프로그램과 웹 브라우저에서 열 수 있으므로 이미지를 간편하게 확인하고, 편집하고, 공유할 수 있습니다.




래스퍼 파일의 단점


  1. 제한적인 해상도

벡터 이미지와 달리 래스터 파일은 크기를 조정할 때 해상도가 유지되지 않습니다. 이미지를 확대하면 색상과 디테일이 왜곡되어 사용이 제한될 수 있습니다.




  1. 큰 파일 크기

래스터 파일에는 수백만 개의 픽셀이 포함될 수 있습니다. 이로 인해 매우 디테일한 이미지가 생성되지만 파일 크기가 커지고 로딩 속도가 느려질 수 있습니다.




  1. 패브릭 인쇄 한계

래스터 이미지를 구성하는 정사각형 픽셀은 직물이나 의류에는 잘 적용되지 않습니다. 티셔츠 로고와 프린트를 만들 때는 벡터 이미지를 선택하는 것이 좋습니다.




벡터( Vector ) 파일


  • 벡터 파일은 그리드에 점을 설정하는 수학 공식을 기반으로 만들어진 고해상도 이미지입니다.




벡터 파일의 특징


  • 벡터 파일의 이미지는 픽셀을 사용하지 않습니다. 대신에, 그리드(격자)에 고정된 점을 사용하여 수학적 공식에 기반한 직선과 곡선으로 이미지가 생성됩니다. 따라서 해상도 손실 없이 이미지를 크게 또는 작게 만들 수 있습니다.

  • 벡터 포맷은 각종 홍보 자료를 제작하기 위해 그래픽 크기를 다양하게 조정해야 하는 디지털 일러스트레이션과 기업 로고 작업에 많이 사용됩니다. 작은 명함부터 티셔츠, 포스터에 이르기까지 벡터 포맷으로 저장된 로고는 어떤 크기에서도 해상도가 그대로 유지됩니다. 대표적인 벡터 파일 유형으로는 SVG, AI, EPS가 있습니다.




벡터 파일의 장점


  1. 변함없는 해상도

벡터 이미지는 해상도를 유지하면서 거의 무한대로 확대할 수 있습니다. 반면, 래스터 파일의 이미지는 특정 크기에 맞춰진 경우에만 해상도가 유지되므로 이미지를 크게 늘릴수록 품질이 떨어집니다.




  1. 작은 파일 크기

벡터 파일은 픽셀 블록이 없으므로 픽셀로서 이미지를 표현하는 래스터 이미지보다 파일 크기가 작습니다




  1. 다양한 디자인 기능

모양, 텍스트, 다양한 색상, 필터를 추가하여 독창적인 일러스트레이션과 디자인을 만들고, 언제든지 간편하게 원하는 대로 편집할 수 있습니다.




벡터 이미지의 단점


  1. 디테일한 사진 작업에는 부적합

매우 디테일한 디지털 사진은 픽셀 하나하나를 따로 편집할 수 있는 래스터 포맷이 더 낫습니다. 벡터 파일은 사진보다 그래픽에 더 적합합니다.




  1. 호환성 문제

벡터 파일을 열고 작업하려면 벡터 기반의 디자인 프로그램이 있어야 합니다. 래스터 기반의 소프트웨어에서 벡터를 편집하기는 쉽지 않습니다.




  1. 까다로운 파일 변환

래스터 이미지를 벡터 이미지로 변환하려면 다소 높은 컴퓨팅 성능이 요구되며, 다른 파일 포맷보다 변환이 쉽지 않습니다.




.jpg와 .jpge


  • .jpg와 .jpeg는 래스터 이미지 파일의 종류 중 하나 압니다.

  • .jpg와 .jpeg는 동일한 확장자입니다. 과거 DOS시절 확장자명을 최대 3글자까지만 허용했기 때문에 .jpeg가 아닌 .jpg로 사용되었습니다.

  • .jpeg 파일은 최대 24비트 색상을 지원하며, 간편한 저장과 전송을 위해 손실 압축 방식으로 이미지를 저장합니다. 일상적인 사용에는 큰 문제가 없지만 원본 이미지의 품질이 훼손될 수 있다는 단점이 있습니다.




.jpg, .jpeg 파일의 장점


  • .jpeg 파일은 대부분의 브라우저, 소프트웨어, 앱과 호환되는 가장 보편적인 이미지 파일 포맷입니다.

  • 파일 크기가 작아서 빠르게 전송하고 액세스할 수 있습니다. .jpeg는 사람의 눈으로 볼 수 없는 모든 색상을 지능적으로 제거하여 파일 크기를 최대한 작게 유지합니다




.jpg, .jpeg 파일의 단점

  • 손실 압축은 공간을 절약할 수 있지만 압축률이 매우 높은 이미지를 처리할 때 품질이 저하됩니다. 가장자리와 선이 뚜렷한 이미지는 압축 시 선명도가 약간 손실됩니다.




.png


  • .png는 무손실 압축과 함께, 보다 광범위하고 밝은 색상의 팔레트를 제공합니다.

  • .png(Portable Network Graphic)는 래스터 이미지 파일의 일종입니다. 투명 또는 반투명 배경의 그래픽을 처리할 수 있어 웹 디자이너에게 특히 인기 있는 파일 유형입니다.




.png 파일의 장점


  • .png 파일은 수백 개가 아닌 수백만 개의 색상 옵션을 처리하므로 GIF보다 훨씬 더 디테일한 이미지를 저장할 수 있습니다.

  • .png는 개방형 포맷입니다. 라이선스 없이도 다양한 프로그램에서 열고 편집할 수 있습니다.

  • .png 이미지는 압축해도 데이터가 손실되지 않으며, 이는 압축 과정에서 일부 정보가 사라지는 손실 압축 포맷(예: .jpeg 파일)과 비교할 때 큰 장점이 될 수 있습니다.




.png 파일의 단점


  • .png 파일은 압축 시 모든 원본 데이터를 유지하므로 .gif 또는 .jpeg보다 파일 크기가 훨씬 큽니다. 따라서 컴퓨터의 하드 드라이브에서 공간을 많이 차지합니다.

  • .png는 처음부터 웹을 염두에 두고 설계되었기 때문에 CMYK 색상 모드를 지원하지 않습니다. 따라서 인쇄용으로 전송하기가 어려울 수 있습니다.

  • 압축된 .png에는 고품질의 디테일한 이미지 데이터가 포함되어 있지만, 파일 크기가 클수록 페이지 로드 시간과 응답 속도가 느려집니다.




.svg


  • .svg는 벡터 이미지 파일의 종류 중 하나 압니다.

  • SVG(Scalable Vector Graphics) 파일 포맷은 웹 사이트에 2D 그래픽, 차트, 일러스트레이션을 표현하는 데 널리 사용되는 툴입니다. 벡터 파일이므로 확대하거나 축소해도 해상도가 저하되지 않습니다.

  • SVG는 웹 친화적인 벡터 파일 포맷입니다. JPEG와 같은 픽셀 기반의 래스터 파일과 달리, 벡터 파일은 그리드 위의 점과 선을 기반으로 하는 수학 공식을 통해 이미지를 저장합니다. 따라서 SVG와 같은 벡터 파일은 품질을 그대로 유지하면서 크기를 마음대로 조정할 수 있으므로 로고와 복잡한 온라인 그래픽에 아주 적합합니다.




SVG 파일의 장점


  • 픽셀로 구성된 래스터 파일과 달리, SVG와 같은 벡터 그래픽은 크기에 상관없이 항상 해상도를 유지합니다. SVG 이미지는 특정 브라우저나 다양한 위치에 맞게 크기를 조정해도 품질이 저하되지 않습니다.

  • 기본 SVG 파일은 많은 컬러 픽셀로 생성되는 래스터 이미지보다는 크기가 작습니다.

  • SVG 파일은 텍스트를 디자인이 아닌 텍스트 그대로 처리하기 때문에 스크린 리더가 SVG 이미지에 포함된 모든 단어를 스캔할 수 있습니다. 그래서 웹 페이지를 읽어야 할 때 매우 유용합니다. 검색 엔진은 SVG 이미지 텍스트를 읽고 색인을 달 수도 있습니다.




SVG 파일의 단점


  • SVG 파일은 로고, 일러스트레이션, 차트 등 웹 그래픽에 적합합니다. 그러나 픽셀이 부족하므로 고품질 디지털 사진을 표현하기는 어렵습니다. 디테일이 풍부한 사진에는 JPEG 파일이 더 좋습니다.

  • 최신 브라우저만 SVG 이미지를 지원할 수 있으므로 Internet Explorer 8과 이전 브라우저에서는 SVG 파일을 사용하기가 어려울 수 있습니다.




URL( Uniform Resource Locator )이란?

 

  • URL( Uniform Resource Locator )이란 통합 자원 지시자로서 서버에서 요청하고자 하는 자원의 위치를 식별하기 위해 사용하는 규약입니다.




URI( Uniform Resource Identifier )란?

 

  • URI( Uniform Resource Identifier )란 통합 자원 식별자이며 URL의 개념을 포함하고 있습니다. 이를 통해 자원의 위치 정보와 URI에 있는 쿼리와 같은 부가적인 정보를 기반으로 자원을 식별할 수 있습니다.




URN( Uniform Resource Name )이란?

 

  • URN( Uniform Resource Name )이란 통합 자원 이름으로서 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 합니다. 리소스를 어떻게 접근할 것인지 명시하지 않고 경로와 리소스 자체를 이름으로 특정하는 것을 목표로 사용됩니다.



 

URI, URL, URN 관계

 

 

  • URI는 URL과 URN을 포함하는 개념입니다.




컴퓨터에서 경로( Path )란?


  • 컴퓨터에서 경로란 찾고자하는 파일의 위치 경로를 말하며 파일의 위치를 어떻게 표현하느냐에 따라서 절대 경로와 상대 경로로 나뉩니다.




절대 경로( Absolute Path )란?


  • 절대 경로란 최상위 루트 디렉토리에서부터 목적지 파일까지 경유한 경로를 말합니다.




상대 경로( Relative Path )란?


  • 현재 위치한 폴더를 기준으로 목적지 파일까지 경유한 경로를 말합니다.




경로 표현 방법


기호 의미
/ 최상위 디렉토리
./ 현재 디렉토리
../ 현재 디렉토리의 상위 디렉토리




+ Recent posts