2021년 6월 26일 토요일

블로트웨어 (Bloatware)

새 기기를 구입하면 공장 출하 상태가 되어 완벽하게 작동할 것으로 기대합니다. 하지만 불행히도 항상 그런 것은 아닙니다. 장치에는 성능을 저하시키고 개인 정보를 침해하는 사전에 설치된 블로트웨어가 함께 제공될 수 있습니다.

 

블로트웨어란?

 

블로트웨어는 번들로 제공되면서 장치 속도를 저하시킬 수도 있는 소프트웨어입니다. 이들은 새 기기에 사전 설치되거나 다른 다운로드와 함께 제공되거나 악성 사이트를 통해 시스템에 설치된 프로그램입니다.

 

블로트웨어 (또는 잠재적으로 원치 않는 프로그램 – PUP)가 사용자 기기에 설치되는 여러가지 방법이 있습니다. 일반적으로 공급업체, 제조업체 또는 이동통신사에서 사전 설치한 상태로 제공됩니다. 이에 대한 몇가지 이유가 있을 수 있습니다.

 

소프트웨어 개발자가 공급자에게 비용을 지불하면서 장치에 소프트웨어를 사전 설치되게 하는 경우

제조업체가 유지 관리용으로 사용할 목적으로 사용자 데이터도 수집하는 프로그램을 사전 설치하는 경우

소프트웨어 또는 OS 업데이트는 브랜드 솔루션 센터, 평가판 또는 임의의 추가 기능을 푸시할 수도 있는 경우

 

물론 모든 블로트웨어가 나쁜 것은 아닙니다. 일부 사전 설치된 미디어 제품군 또는 제어 센터는 유용할 수 있으며 일부는 매우 쉽게 제거할 수 있습니다.

 

또 다른 유형의 블로트웨어는 웹에서 제공됩니다. 악의적인 웹사이트에서 제공되거나 타사 웹페이지에서 원하는 프로그램과 함께 다운로드될 수 있습니다. 소프트웨어 번들에서 숨길 수도 있습니다. 이 블로트웨어는 종종 애드웨어 또는 맬웨어를 포함하므로 더 위험합니다.

 

블로트웨어가 위협인 이유

 

블로트웨어는 컴퓨터 속도를 크게 저하시킬 수 있습니다. 이러한 프로그램이 장치 시작시 로드되거나 백그라운드에서 작업을 수행하는 경우 RAM을 소모할 수 있습니다. 블로트웨어가 장치 성능에 영향을 미치기 시작할때는 삭제해야 합니다.

 

맬웨어 또는 애드웨어는 더 심각한 문제를 나타냅니다. 컴퓨터를 사용하는 동안 팝업 광고를 표시하는 것외에도 (온라인 상태가 아닐 때도) 스파이 활동을 할 수도 있습니다. 그리고 다른 프로그램에게 나쁜 영향을 주어 취약하게 만들 수도 있습니다.

 

블로트웨어의 식별

 

다음은 블로트웨어를 식별하는데 도움이 되는 몇가지 위험 신호입니다.

 

앱을 제거하기가 어려운 경우 : 블로트웨어는 일반적으로 제거하기가 쉽지 않습니다. 제거한 후에도 앱목록에 지속적으로 표시됩니다. 또한 앱을 제거하거나 앱의 내부 깊숙한 곳에 숨겨진 섹션을 삭제하려고 할때 이상한 웹사이트로 유도하여 저속되게 할 수도 있습니다. 일부 블로트웨어 앱은 제거할 수 없습니다.

앱을 설치한 것을 인지못하는 경우 : 기기에 특정 소프트웨어를 설치한 것을 기억하지 못한다면 잠재적으로 블로트웨어의 징후일 수 있습니다.

일부 추가 기능을 구매할 것을 적극적으로 제공하는 경우 : 일부 블로트웨어는 침입적이고 공격적인 마케팅 전략에 의존하므로 자연스럽게 돈을 벌기 위해 그러한 제안이 넘쳐납니다.

브라우저가 성가신 팝업을 표시하기 시작하는 경우 : 어떤 경우에는 악성 웹사이트로 유도하고 브라우저 설정을 조작하고 홈페이지를 변경할 수도 있습니다.

거의 쓸모가 없는 앱인 경우 : 일반적으로 이러한 앱은 자의적으로 설치하지 않았고 사전 설치된 경우가 많습니다.

 

2021년 6월 21일 월요일

PoE (Power over Ethernet)에 대한 배경 지식 (PoE, PoE+ 및 Hi-PoE)

POTS (Plain Old Telephone System) 전화 신호를 집으로 전달하는 전선이 전화기의 헤드셋, 다이얼 및 벨소리 시스템 동작에 충분한 전력을 제공하는 방식과 유사하게 PoE는 표준 이더넷 케이블 (CAT3 이상)을 통해 DC 전원을 제공합니다. 2003년부터 PoE (IEEE 802.3af) PoE+ (IEEE 802.3at) 표준은 최대 30와트의 전압이 필요한 네트워크 장치에 전원을 공급하고 연결하는데 편리하게 사용되었습니다. 이러한 표준을 사용하여 일반적으로 천장, 벽 및 키오스크와 같이 별도의 AC 전원을 설치하기에는 어렵거나 비용이 많이 드는 위치에 장비를 설치했습니다.

 

그러나 30와트 이상의 PoE의 경우 공급업체는 다른 공급업체 제품 솔루션의 설치를 어렵게 만드는 독점적이고 상호운용이 불가능한 (UPoE, 4PPoE, PoE++, UltraPoE, 4 Pair PoE ) 장비를 개발하기 시작했습니다. 포트당 최대 100W를 제공할 수 있는 IEEE 802.3bt 고전력 PoE (Hi-PoE) 표준이 2018년에 승인됨에 따라 이제 Hi-PoE 공급업체간에 조정이 이루어지고 제품간의 호환성 문제가 더 이상 없습니다. Hi-PoE 표준은 기존 PoE PoE+ 표준과 백워드 호환되며 표준 PoE 제품의 채택을 확장하고 PoE 기반 제품에 대한 수요를 증가시키는데 도움이 됩니다.

 

POE (2003) : 802.3af, Type1, 44V/50V, Classs 1~3

POE+ (2008) : 802.3at, Type2, 44V/50V, Class 4

Hi-POE (2018) : 802.3bt, Type 3, 50V, Class 5, 6

Hi-POE (2018) : 802.3bt, Type 4, 52V, Class 6, 7

 

IoT 시장의 전력 수요를 지원하기 위해 IEEE 802.3bt 표준이 도입된 PoE 기술은 PSE (Power Source Equipment)에서 최대 100W의 전력을 지원할 수 있습니다. Hi-PoE 표준을 활용할 가능성이 있는 일부 고전력 애플리케이션은 다음과 같습니다.

 

스마트 시티 및 빌딩 인프라 ( : LED 조명)

소매 POS 시스템, VoIP 전화 및 디지털 사이니지

고성능 네트워크 장치 ( : IEEE 802.11ac 802.11ax, IP 터릿, TV 및 모니터를 지원하는 WAP (Wireless Access Point))

열악한 환경을 위한 히터가 있는 고화질 팬-틸트-줌 보안 카메라

의료 및 산업 네트워크

소매 ( : POS, 자동 판매기)

 

"인라인 전원"이라고도 하는 PoE는 네트워크를 설치하기 위해 연결해야 하는 전선수를 크게 줄입니다. 추가 이점으로는 설치된 장비의 위치에 대한 유연성 향상, 다운 타임 감소, 배선 비용 절감, 전력 비용 절감 등이 있습니다.

 

PoE의 하나의 구현 방법은 아래 그림과 같습니다.

▶ 전원선과 데이타 신호선을 같이 사용하는 경우



▶ 전원선과 데이타 신호선을 따로 사용하는 경우






2021년 6월 20일 일요일

[파이썬] 함수에서 결과값을 반환시키는 return 키워드

호출한 함수 내부에서 어떤 처리를 한후 그 결과값을 반환하기 위해 사용하는 것이 return 키워드입니다.

 

Return 키워드의 일반적인 사용은 아래와 같습니다.

 

return [expression_list]

 

return문에서 특정 값이나 수식이 있으면 계산되어 반환되고 그렇지 않으면 “None”이 반환됩니다.

 

return문은 표현식 목록 (또는 None)을 반환 값으로 사용하여 현재 함수 호출을 종료합니다.

 

return문이 finally 문이 있는 try 문에서 제어를 전달하면 해당 finally 문이 실제로 함수를 떠나기 전에 실행됩니다.

 

아래는 실제 사용예입니다.

 

def double (a):

 

    cal = a * a

 

    return cal

 

res = double (5)

 

print ("Result is ", res)

 

함수 double에서 어떤 값의 제곱을 계산한후 반환되어 res라는 변수에 저장됩니다.

 

아래는 실행 결과입니다.

 

Result is  25

 

함수의 반환값을 변수에 저장하지 않고 바로 print문에서 사용할 수도 있습니다.

 

def double (a):

 

    cal = a * a

 

    return cal

 

print ("Result is ", double (5))

 

실행 결과는 위와 동일합니다.

 

Result is  25

 

아래와 같이 return문에 아무런 값을 반환하지 않고 사용할 수도 있습니다.

 

def double (a):

 

    global res

 

    res = a * a

 

    return

 

res = 0

 

double(5)

 

print ("Result is ", res)

 

위에서 함수내에서 전역변수의 값을 직접 계산된 값으로 변경합니다.

 

실행 결과는 위와 동일합니다.

 

Result is  25

 

2021년 6월 18일 금요일

NTFS (NT File System or New Technology File System)

NT 파일 시스템 및 신기술 파일 시스템 (New Technology File System)을 나타내는 NTFS Windows NT 운영 체제 (OS)가 하드디스크 드라이브 (HDD) 및 솔리드 스테이트 드라이브 (SSD)에 파일을 저장하고 검색하는데 사용하는 파일 시스템입니다. Windows 95 FAT (File Allocation Table) OS/2 High Performance File System (HPFS)에 비해 성능, 확장성 및 보안 측면에서 몇가지 향상된 기능을 제공합니다.

 

컴퓨터의 OS는 파일을 저장하는 드라이브 및 장치에 파일 시스템을 만들고 유지합니다. 파일 시스템은 기본적으로 데이터를 파일로 구성합니다. 데이터 파일의 이름, 저장, 검색 및 업데이트 방법과 파일 소유권 및 사용자 권한에 대한 데이터와 같이 파일과 관련될 수 있는 기타 정보를 제어합니다.

 

NTFS는 파일 시스템의 하나의 유형입니다. 파일 시스템은 일반적으로 OS와 함께 사용되는 드라이브 유형에 따라 다릅니다. 오늘날에는 파일이 여러 서버에 저장되지만 로컬에 저장된 것처럼 액세스 및 처리되는 분산 파일 시스템 (DFS)도 있습니다. DFS를 사용하면 여러 사용자가 네트워크에서 데이터와 파일을 쉽게 공유할 수 있습니다.

 

Microsoft Windows 및 일부 이동식 저장 장치는 NTFS를 사용하여 파일을 구성, 이름 지정 및 저장합니다. NTFSWindows에서 사용되는 SSD, HDD, USB 및 마이크로 SD 카드의 포맷 옵션인데, 특히 빠른 속도는 SSD에 유용합니다.

 

장치의 저장 용량, 사용된 OS 및 드라이브 유형에 따라 FAT32 또는 확장 FAT (exFAT)와 같은 다른 파일 시스템이 바람직할 수 있습니다. 각 파일 시스템에는 장점과 단점이 있습니다. 예를 들어, 보안 및 권한은 exFAT FAT32보다 NTFS가 더 유용합니다. 반면에 FAT32 exFAT Mac Linux와 같은 OS에서 더 잘 작동합니다.

 

Windows XP의 모든 Microsoft OS NTFS 버전 3.1을 기본 파일 시스템으로 사용합니다. NTFS는 대용량 파일과 파티션 크기를 지원하는 드라이브에 필요한 용량을 가능하게 하므로 외장 드라이브에서도 사용됩니다. Microsoft에 따르면 NTFS Windows Server 2019 Windows 10에서 최대 8 페타 바이트의 볼륨과 파일을 지원할 수 있습니다. NTFS가 지원할 수 있는 개별 파일 크기에 대한 이론적인 제한은 16 exbibytes (260)에서 1KB를 뺀 것입니다.

 

OS를 설치할때나 SSD 또는 HDD를 포맷할때 사용자는 사용할 파일 시스템을 선택합니다. 각 유형의 드라이브를 포맷하는 과정은 약간 다르지만 둘 다 NTFS와 호환됩니다.

 

HDD를 포맷하거나 초기화하면 파티션으로 나뉩니다. 파티션은 하드 드라이브의 물리적 공간의 주요 부분입니다. 각 파티션내에서 OS는 저장하는 모든 파일을 추적합니다. 각 파일은 미리 정의된 균일한 크기의 하나 이상의 클러스터 또는 디스크 공간의 HDD에 저장됩니다.

 

NTFS를 사용하면 클러스터 크기는 512 바이트에서 64KB까지 다양합니다. Windows NT는 각 드라이브 크기에 권장되는 기본 클러스터 크기를 제공합니다. 예를 들어 4GB 드라이브의 기본 클러스터 크기는 4KB입니다. 클러스터는 분할할 수 없으므로 가장 작은 파일도 하나의 클러스터를 차지하고 4.1KB 파일은 4KB 클러스터 시스템에서 2개의 클러스터 또는 8KB를 차지합니다.

 

클러스터 크기는 디스크 공간 사용을 최대화하고 파일을 가져오는데 필요한 디스크 액세스 횟수를 최소화하는 것들과의 균형을 조정하여 결정됩니다. NTFS를 사용하면 일반적으로 드라이브가 클수록 기본 클러스터 크기가 커집니다. 시스템 사용자가 공간을 덜 효율적으로 사용하는 대신 디스크 액세스 횟수는 줄이고 성능은 향상시키는 것을 선호하기 때문입니다.

 

NTFS를 사용하여 파일을 생성하면 MFT (Master File Table)에 파일에 대한 기록이 생성됩니다. 레코드는 파일의 흩어져 있을 수 있는 클러스터를 찾는데 사용됩니다. NTFS는 파일의 모든 클러스터를 저장할 저장 공간을 찾지만 항상 하나의 공간을 모두 함께 찾을 수 있는 것은 아닙니다.

 

데이터 콘텐츠와 함께 각 파일에는 해당 속성을 나타내는 메타 데이터가 포함됩니다.

 

NTFS 특징

 

FAT와 비교할때 NTFS의 한가지 특징은 파일 사용 권한과 암호화를 허용한다는 것입니다. NTFS의 주목할만한 기능은 다음과 같습니다.

 

NTFS b-트리 디렉터리 (b-tree Directory) 구성표를 사용하여 파일 클러스터를 추적합니다. 이는 파일을 효율적으로 정렬하고 구성할 수 있기 때문에 중요합니다.

FAT와 마찬가지로 전체 관리 테이블뿐만 아니라 파일의 클러스터 및 기타 데이터에 대한 데이터를 MFT에 저장합니다.

NTFS는 매우 큰 대용량 파일을 지원합니다.

서버 관리자가 특정 파일에 액세스할 수 있는 사용자를 제어할 수 있는 액세스 제어 목록이 있습니다.

통합 파일 압축은 파일 크기를 줄이고 더 많은 저장 공간을 제공합니다.

유니 코드를 기반으로 하는 파일 이름을 지원하기 때문에 NTFS는 보다 자연스러운 파일 이름 지정 규칙을 사용하며 더 넓은 문자 배열로 더 긴 파일 이름을 허용합니다. 유니 코드가 아닌 명명 규칙은 때때로 변환이 필요합니다.

NTFS는 이동식 및 비이동식 디스크의 데이터에 대한 보안을 제공합니다.

비어있는 정보 (0의 긴 문자열)를 더 작은 저장 공간을 차지하는 메타 데이터로 대체하도록 지원합니다.

NTFS는 마운트된 볼륨을 사용하므로 디스크 볼륨은 파일 시스템의 일반 폴더로 액세스할 수 있습니다.

 

NTFS의 장단점

 

NTFS 사용에는 몇 가지 장점과 단점이 있으며 아래에 포함되어 있습니다.

 

NTFS의 주요 기능중 하나는 디스크 할당량을 사용하는 것이므로 더 많은 저장소 공간을 제어할 수 있으며, 관리자는 디스크 할당량을 사용하여 지정된 사용자가 액세스할 수 있는 저장 공간의 양을 제한할 수 있습니다. NTFS는 파일 압축을 사용하여 파일 크기를 줄이고 파일 전송 속도를 높이며 더 많은 저장 공간을 제공합니다. 또한 매우 큰 파일을 지원합니다. NTFS의 액세스 제어 기능을 통해 관리자는 민감한 데이터에 대한 권한을 부여하여 특정 사용자에 대한 액세스를 제한할 수 있습니다. 암호화도 지원합니다. MFT는 드라이브의 파일을 기록하고 감사하므로 관리자는 어떤 방식으로든 삭제, 추가 또는 변경된 파일을 추적할 수 있습니다. , 파일 시스템 저널에 트랜잭션을 기록합니다. NTFS는 파일 시스템의 일관성을 유지하기 때문에 시스템 오류나 오류가 발생한 경우 데이터와 파일을 빠르게 복원할 수 있습니다. 첫번째 MFT가 손상될 경우 시스템이 참조할 수 있는 MFT 미러 파일이 있습니다.

 

하지만, NTFS의 주요 단점은 제한된 OS 호환성입니다. Windows가 아닌 OS에서는 읽기 전용입니다. Android 스마트폰, DVD 플레이어 및 디지털 카메라를 포함한 많은 이동식 장치가 NTFS를 지원하지 않습니다. 미디어 플레이어, 스마트 TV 및 프린터와 같은 일부 다른 장치도 지원하지 않습니다. Mac OS X 장치는 NTFS 드라이브와 제한적으로 호환됩니다. 읽을 수는 있지만 쓸 수는 없습니다.

 

NTFS, FAT32 exFAT의 차이점

 

Microsoft NTFS 이전에 FAT32를 개발하여 사용했습니다. 일반적으로 NTFS보다 효율성이 떨어지는 것으로 간주됩니다. Windows에서 4GB 파일 크기와 32GB 볼륨까지 지원됩니다.

 

FAT32 NTFS보다 포맷하기 쉽고 더 간단합니다. FATNTFS MFT보다 파일을 구성하는 덜 복잡한 방법입니다. 사용하기가 더 간단하기 때문에 FAT32는 다른 OS와 더 잘 호환되며 스마트 TV, 디지털 카메라 및 기타 디지털 장치와 같이 NTFS가 일반적으로 사용되지 않는 곳에서 사용됩니다. FAT32는 모든 버전의 Mac, Linux Windows에서 작동합니다. 앞에서 언급했듯이 NTFS Mac Linux에서 읽기 전용입니다.

 

exFAT FAT32의 발전으로 설계되었으며 3가지 파일 시스템중 최신 버전입니다. 가볍고 유연한 파일 할당 시스템인 FAT32의 긍정적인 특성을 유지하면서 일부 한계를 극복합니다. 예를 들어 FAT32는 최대 4GB의 파일만 저장할 수 있는 반면 exFAT 16 exbibytes의 파일 크기를 처리할 수 ​​있습니다.

 

exFAT Mac Linux 시스템에서 작동하기 위해 추가 소프트웨어가 필요하지만 NTFS보다 더 잘 호환됩니다. 사용자가 FAT32보다 더 큰 파일 크기가 필요하지만 NTFS보다 호환성이 더 높은 경우에 이상적입니다.

 

NTFS의 저널링 파일 시스템을 사용하면 저널을 사용하여 데이터 손상을 복구할 수 있지만 FAT는 할 수 없습니다. NTFS MFT FAT의 파일 할당 테이블보다 보관중인 파일에 대한 더 많은 정보를 보유하므로 파일 인덱싱 및 클러스터 구성이 향상됩니다.

 

2021년 6월 17일 목요일

[파이썬] 디버깅을 유용하게 해주는 assert 키워드

assert문은 디버깅 목적을 위해서 프로그램에 삽입하여 사용합니다.

 

일반적인 사용은 아래와 같습니다.

 

assert expression ["," expression]

 

단순한 형태의 assert문은 아래와 같으며,

 

assert expression

 

이는 아래 코드와 동일합니다.

 

if __debug__:

    if not expression: raise AssertionError

 

조금더 확장된 형태의 assert문은 아래와 같으며

 

assert expression1, expression2

 

아래 코드와 같습니다.

 

if __debug__:

    if not expression1: raise AssertionError(expression2)

 

아래 간단한 예제를 보시면

 

rate = 0.9

 

assert 0.0 <= rate <= 1.0

 

print ("Rate is correct range.")

 

rate = 1.1

 

assert 0.0 <= rate <= 1.0

 

print ("Rate is out of range.")

 

첫번째 assert문에서 rate의 값이 범위내에 있으므로 assert 자체가 True가 되어 다음 코드로 넘어갑니다. 하지만 두번째 assert문에서는 범위를 벗어나므로 아래와 같이 AssertionError가 발생됩니다.

 

Rate is in range.

Traceback (most recent call last):

  File "assert_test1.py", line 9, in <module>

    assert 0.0 <= rate <= 1.0

AssertionError

 

단순히 AssertionError만 발생하면 어떤 이유인지 어느 assert문에서 발생했는지를 모르기 때문에 아래와 같이 많이 사용합니다.

 

rate = 1.1

 

assert 0.0 <= rate <= 1.0, "Out of range"

 

print ("Rate is out of range.")

 

그러면 아래와 같이 어떤 AssertionError인지를 명확히 알고 디버깅을 할 수 있습니다.

 

Traceback (most recent call last):

  File "assert_test1.py", line 9, in <module>

    assert 0.0 <= rate <= 1.0, "Out of range"

AssertionError: Out of range

 

AssertionError가 발생이 되면 파이썬 프로그램이 바로 중지되기 때문에 try-except문과 같이 사용하여 에러처리를 해주는 것이 좋습니다.

 

 

try:

 

    rate = 1.1

 

    assert 0.0 <= rate <= 1.0, "Out of range"

 

except AssertionError as err:

 

    print(err)   # print assert expression

 

    rate = rate * 0.5

 

    print ("Rate is adjusted under 1.0")

 

그러면 아래와 같이 에러처리까지 깔끔하게 진행시킬 수가 있습니다.

 

Out of range

Rate is adjusted under 1.0