winget 모든? 패키지 업그래이드

windows의 winget을 사용하면 편한점이 많다.

winget upgrade 명령하면 아래 처럼 설치된 패키지의 최신 버전을 확인 할수 있다.

> winget upgrade
이름                                                    장치 ID                      버전          사용 가능     원본
-----------------------------------------------------------------------------------------------------------------------
Termius 8.0.2                                           Termius.Termius              8.0.2         8.0.4         winget
Mozilla Firefox (x64 ko)                                Mozilla.Firefox              112.0         117.0         winget
TeamViewer Host                                         TeamViewer.TeamViewer.Host   15.44.5       15.45.3       winget
Microsoft Visual C++ 2015-2019 Redistributable (x64) -… Microsoft.VCRedist.2015+.x64 14.29.30139.0 14.38.32919.0 winget
Microsoft Visual C++ 2015-2019 Redistributable (x86) -… Microsoft.VCRedist.2015+.x86 14.22.27821.0 14.38.32919.0 winget
Microsoft Visual Studio Code (User)                     Microsoft.VisualStudioCode   1.78.2        1.81.1        winget
PowerToys (Preview) x64                                 Microsoft.PowerToys          0.70.1        0.73.0        winget
7 업그레이드를 사용할 수 있습니다.

패키지를 업그래이드 할때는 ? winget upgrade {장치ID} 을 입력 하면 원하는 패키지를 업업그래이드 가능하다.

> winget upgrade  Microsoft.VisualStudioCode
찾음 Microsoft Visual Studio Code [Microsoft.VisualStudioCode] 버전 1.81.1
이 응용 프로그램의 라이선스는 그 소유자가 사용자에게 부여했습니다.
Microsoft는 타사 패키지에 대한 책임을 지지 않고 라이선스를 부여하지도 않습니다.
다운로드 중 https://az764295.vo.msecnd.net/stable/6c3e3dba23e8fadc360aed75ce363ba185c49794/VSCodeUserSetup-x64-1.81.1.exe
  ██████████████████████████████  89.0 MB / 89.0 MB
설치 관리자 해시를 확인했습니다.
패키지 설치를 시작하는 중...
설치 성공

모든 패키지를 업그레이드 하고 싶으면? winget upgrade –all 명령어로 손쉽게 새로운 버전이 있는 모든 패키지 업그레이드가 가능하다.

> winget upgrade --all
이름                                                    장치 ID                      버전          사용 가능     원본
-----------------------------------------------------------------------------------------------------------------------
Termius 8.0.2                                           Termius.Termius              8.0.2         8.0.4         winget
Mozilla Firefox (x64 ko)                                Mozilla.Firefox              112.0         117.0         winget
TeamViewer Host                                         TeamViewer.TeamViewer.Host   15.44.5       15.45.3       winget
Microsoft Visual C++ 2015-2019 Redistributable (x64) -… Microsoft.VCRedist.2015+.x64 14.29.30139.0 14.38.32919.0 winget
Microsoft Visual C++ 2015-2019 Redistributable (x86) -… Microsoft.VCRedist.2015+.x86 14.22.27821.0 14.38.32919.0 winget
PowerToys (Preview) x64                                 Microsoft.PowerToys          0.70.1        0.73.0        winget
6 업그레이드를 사용할 수 있습니다.

(1/6) 찾음 Termius [Termius.Termius] 버전 8.0.4
이 응용 프로그램의 라이선스는 그 소유자가 사용자에게 부여했습니다.
Microsoft는 타사 패키지에 대한 책임을 지지 않고 라이선스를 부여하지도 않습니다.
다운로드 중 https://autoupdate.termius.com/windows/Install%20Termius.exe
  ██████████████████████████████   165 MB /  165 MB
설치 관리자 해시가 일치하지 않습니다.

(2/6) 찾음 Mozilla Firefox [Mozilla.Firefox] 버전 117.0
이 응용 프로그램의 라이선스는 그 소유자가 사용자에게 부여했습니다.
Microsoft는 타사 패키지에 대한 책임을 지지 않고 라이선스를 부여하지도 않습니다.
다운로드 중 https://download-installer.cdn.mozilla.net/pub/firefox/releases/117.0/win64/en-US/Firefox%20Setup%20117.0.exe
  ██████████████████████████████  55.5 MB / 55.5 MB
설치 관리자 해시를 확인했습니다.
패키지 설치를 시작하는 중...
설치 성공
... 생략 ....

출처 : https://learn.microsoft.com/ko-kr/windows/package-manager/winget/

LVM Cache(dm-cache)

시작

NAS 대용으로 사용중인 서버(미니PC)의 디스크가 부족하게 되어 디스크 증설이 필요했지만 2.5인치 SATA 와 NVME SSD 한개 씩만 지원하는 하드웨어 스팩 덕분에 USB로 쉽게 구성할 수 있는 테라마스터 D2-310 과 WD RED 3TB(WD30EFRX) 하드디스크 2개를 Raid 0으로 디스크 증설을 완료 했지만,

USB 인터페이스(USB 3.1 5Gbps)의 한계 때문인지 5400RPM의 낮은 성능의 디스크 때문인지 SSD를 메인 저장소로 사용했들때 보다 전송속도가 낮아 LVM Cache 적용하게 되었다.

환경

OS : Rocky Linux 8.7 (Green Obsidian)

Disk : sda 5.5TB(D2-310 Raid 0), nvme0n1 2TB

LVM Cache 적용

PV(Physical Volume)설정 과 및 VG(Volume Group) 생성

pvcreate /dev/sda1
pvcreate /dev/nvme0n1p1
vgcreate VG /dev/sda1 /dev/nvme0n1p1

LV(Logical Volume) 생성

#HDD Disk Logical Volume
lvcreate -l 100%FREE -n lv_data1 VG1 /dev/sda
#SSD Cache Memta Volume
lvcreate -L 8G -n lv_cache_meta1 VG1 /dev/nvme0n1p1
#SSD Cache Volume
lvcreate -l 234370 -n lv_cache_data1 VG1 /dev/nvme0n1p1

LVM Cache 설정

# Cache 볼륨과 Meta 볼륨을 결함으로 Cache Pool 을 설정.
# Writethrough 및 Writeback 을 설정 한다.
lvconvert --type cache-pool --cachemode writethrough --poolmetadata VG/lv_cache_meta1 vg1/lv_cache_data1
# Data Volume(실제 데이터 볼륨)을 Cache Pool 과 결함하여 Cache 적용
lvconvert --type cache --cachepool VG/lv_cache_data1 VG/lv_data1
  • Cachemode
    1. writethrough
      • 데이터를 쓸때 캐쉬를 사용지 않는다.
    2. writeback
      • 데이터를 쓸때 캐쉬에 먼저 저장 후 디스크에 저장한다.

그리고.

지금 까지 적용한 내용은 RHEL 6를 메뉴얼을 바탕으로 작성되었다.

RHEL 7 메뉴얼 에서는 Cache pool 생성을 “lvcreate” 단계에서 완료 한다.

LVM Cache RHEL 7.1 부터 정식 지원한다.

더 자세한 내용은 아래 참고 사이트를 확인해본다.

Pillow으로 원하는 사이즈로 이미지 만들기(with Flask)

원하는 사이즈의 목업이미지(?)를 만들어는 기능?이 필요했다.

http(s)://Address/{가로}x{세로}” 형식으로 호출하면 아래와 같이 JPG 이미지를 웹으로 출력해주는 형식이다. ex) http(s)://Address/100×100

https(s):/Address/300×200
https(s):/Address/200×200

급하게 만들어서 예외 처리 따위는 되어 있지 않은 코드이지만, 기록해보기로 했다.

import flask
import io
from PIL import Image, ImageDraw, ImageFont

app = flask.current_app


@app.route('/<size>')
def mockup(size):
    # URL로 입력된 사이즈 정보를 소문자로 변경
    size = size.lower()

    if 'x' in size:
        if size.count('x') != 1:
            return create_image()
        elif size.count('x') > 1:
            w = int(size)
            return create_image(w)
        else:
            w, h = int(size.split('x')[0]), int(size.split('x')[1])
            return create_image(w, h)


def create_image(w=200, h=None):
    image_color = 'gray'
    drawline_color = 'white'
    # 높이가 없으면 세로와 같은 크기로 선언
    if h is None:
        h = w
    # 목업 기본 이미지 생성
    box = Image.new(
        mode='RGB',
        size=(int(w), int(h)),
        color=image_color
    )
    draw = ImageDraw.Draw(box)
    # 바운딩 박스, 라인 의 시작점
    margin = min(int(w/10), int(h/10)])
    # 바운딩 박스 그리기
    draw.rectangle(
        (
            # x 시작 좌표
            int(margin),
            # y 시작 좌표
            int(margin),
            # x 끝 좌표
            int(w - margin),
            # y 끝 좌표
            int(h - margin)
        ), outline = drawline_color,
        width = 1
    )
    # \ 표시를 위한 대각선 그리기
    draw.line(
        (
            # x 시작 좌표
            int(margin),
            # y 시작 좌표
            int(margin),
            # x 끝 좌표
            int(w - margin),
            # b 끝 좌표
            int(h - margin)
        ),
        fill = drawline_color, width = 1
    )
    # / 표시를 위한 대각선 그리기
    draw.line(
        (
            # x 시작 좌표
            int(w - margin),
            # y 시작 좌표
            int(margin),
            # x 끝 좌표
            int(margin),
            # y 끝 좌표
            int(h - margin)
        ),
    fill = drawline_color, width = 1
    )
    # 생성한 이미지를 메모리
    byteio = io.BytesIO()
    box.save(byteio, format='JPEGE', optimize=True, qualty=95)
    boxRes = byteio.getvalue()
    byteio.close()
    return flask.Response(boxRes, mimetype='image/jpg')

Microsoft 365 그룹 숨기기

참고 사이트

Outlook에서 Office 365 그룹 숨기기 – Microsoft 커뮤니티

Set-UnifiedGroup (ExchangePowerShell) | Microsoft Learn

Connect to Exchange Online PowerShell | Microsoft Learn

  1. Exchange Online PowerShell으로 접속
  2. 아래 명령을 사용하여 그룹 숨기기
    • -HiddenFromExchangeClientEnabled 을 입력해준다.
> Set-UnifiedGroup -Identity "Legal Department" -HiddenFromExchangeClientEnabled
  1. 숨겨진 그룹 다시 활성화
    • -HiddenFromExchangeClientEnabled:$false 를 입력해준다.
> Set-UnifiedGroup -Identity "Legal Department" -HiddenFromExchangeClientEnabled:$false