XPS 9560, 9360, 9550의 SST 설정을 고정하는 방법

이 글의 방법을 조금이라도 다르게 적용하면 기기가 벽돌이 될 수도 있습니다.
저는 방법을 따라하다가 생기는 벽돌현상에 대한 책임을 지지 않습니다.

출처는 이쪽입니다

XPS 9560, 9360, 9550의 경우 ThrottleStop을 사용해도 BIOS에서 SST가 활성화되지 않아 간혹 절전모드의 해제등의 이유로 SST 설정이 고정되지 않습니다.
결과적으로 TurboBoost가 활성화 돼있어도 클럭이 올라가지 않아 베이스클럭 이상으로 나오지 않습니다.

이는 CPU가 SST를 지원하나 BIOS가 아닌 ThrottleStop이 소프트웨어적으로 활성화 시킨 이후로 ThrottleStop의 버그로 인해 SST설정이 풀리는 현상입니다.

따라서 SST설정을 BIOS에서 활성화시키면 해당 문제가 발생하지 않습니다.

BIOS에서 SST설정을 활성화 시키기 위한 준비물이 필요합니다.
아래 파일을 받아 압축을 풀어주세요.

먼저 Universal BIOS Backup ToolKit 2.0관리자 권한으로 실행해주세요.
실행하면 아래와 같은 창이 뜹니다.

먼저 Read를 누른 뒤 시간이 지난 이후 완료 메시지가 뜨면 닫아주고 Backup을 눌러 BIOS 이미지를 저장해주세요.
이후 프로그램을 닫아주시면 됩니다.

다음으로는 UEFITool을 실행해주세요.
그리고 드래그 앤 드롭으로 방금 추출한 BIOS 이미지 파일을 열어주세요.

BIOS 이미지 파일을 열은 뒤 “Ctrl + F” 단축키를 통해 탐색 창을 열어주시고 GUID탭으로
이동
한 뒤
899407D7-99FE-43D8-9A21-79EC328CAC21 를 복사하고 텍스트 창에 붙여넣어주세요.
아래의 사진을 참고하시면 됩니다.

그러면 아래의 사진과 같이 Search 탭에 줄이 하나 생깁니다.
이 줄을 더블클릭 해주세요.

그러면 아래의 사진과 같이 Setup이라는 항목이 선택되는데요
우클릭 하고 Extract as is를 눌러주세요.

아래와 같이 파일을 저장하는 창이 뜰겁니다.
파일 이름을 Setup.bin으로 지정하고 저장해주세요.

이제 UEFITool을 닫아주세요.

Setup.bin파일을 추출했으면 Universal IFR Extractor를 열어주시고 추출한 파일을 선택해줍시다.
그리고 Extract 버튼을 눌러주세요.
아래의 사진을 참고하시면 됩니다.

Extract를 누르면 txt파일을 저장하게됩니다.
파일명은 상관없으니 파일을 저장하고 txt파일을 메모장으로 열어주세요.
파일이 크다보니 여는데 시간이 조금 걸릴 수도 있습니다.

메모장이 열리면 “Ctrl + F” 단축키를 통해 찾기 창을 열어주시고 “Speed Shift Technology“를 검색해주세요.
그러면 아래와 같은 단락이 검색될겁니다.

Speed Shift Technology 설정 주소를 알아냈습니다
단순 예시이므로 꼭 각자 여기까지 단계를 거쳐주세요

저와 같은 경우 선택된 텍스트 우측에 0x4AD라고 적혀있습니다.

2019년 10월 기준 XPS 13 9360을 사용하는 사용자는 저와 같이 0x4AD라고 적혀있을겁니다.
하지만 기종마다 차이가 있을 수 있고 잘못 입력하면 벽돌현상이 발생할 수 있으므로 같은 모델을 사용하는 분이라도 꼭 위 과정을 따라주세요.

텍스트 우측의 Variable 값을 기억해주세요.
이 값을 메모리 주소라고 하겠습니다.

다음으로 USB 메모리를 준비해주세요.
그리고 준비물에 있는 “EFI-shell.zip“파일의 압축을 풀어주고 USB 메모리에 복사해주세요.
이후 메모리를 꽂은 뒤 재부팅하고 F2를 연타하여 BIOS 설정에 들어가주세요.

BIOS의 Boot Sequence 설정에 들어가줍시다. 그리고 Add Boot Option 버튼을 눌러주세요. 아래와 같은 화면이 뜰겁니다.

XPS 13 boot bios에 대한 이미지 검색결과

File을 직접 지정해줘야됩니다.
… 버튼을 눌러 USB 메모리를 선택해주고 방금 압축을 풀은 폴더에 있는 “bootx64.efi“를 지정 후 OK를 눌러주세요.

File system type : Dell UEFI

OK를 누른 다음 Boot Option Name을 아무렇게나 지정해주신 뒤 제일 첫번째 부팅 옵션으로 지정해주세요.

옵션 지정 이후 재부팅하시면 콘솔창이 뜹니다. 콘솔에 아래와 같이 입력해주세요.

setup_var (메모리 주소) 0x1

만약 메모리 주소가 0x4AD라면 setup_var 0x4AD 0x1 입니다.

입력 이후 글자가 뜰텐데 다시 입력커맨드가 뜰때까지 기다려주시고 reboot을 입력하여 재부팅해주세요.
USB 메모리는 제거하셔야됩니다.

재부팅하면 이제 ThrottleStop을 사용해도 SST 설정이 해제되는 현상이 사라집니다.

만약 SST 설정을 해제하고싶으시다면, 같은 단계를 따라 위의 setup_var 명령어의 맨 마지막 값을 0x0으로 설정하시고 재부팅하면 원래 설정대로 돌아옵니다.

BIOS 설정 초기화, BIOS 업데이트 등의 이유로 SST 설정이 풀릴 수도 있습니다.
이 경우 다시 설정을 진행해주셔야합니다.

SST 설정의 활성화 여부HWiNFO를 통해 알아보실 수 있습니다.
ThrottleStop 실행 전에 아래와 같이 HWiNFO 실행 이후 SST 항목이 초록색인지에 따라 활성화 여부를 확인할 수 있습니다.

이상 XPS 9560, 9360, 9550 시리즈의 SST 활성화 방법에 대해 알아봤습니다.
감사합니다!

WPF 프로그램의 ScrollViewer에서 Windows PTP(Precision Touch-Pad) Driver를 사용하는 터치패드로 스크롤시 스크롤이 너무 빨라지는 오류 수정법

결론부터 말하면, WPF의 버그이다. 같은 SDK를 사용하는 Win Forms에서는 나타나지 않는 현상이다.

문제가 되는 현상은 WPF 프로그램ScrollViewer를 사용하는 UI Element에서 PTP 드라이버를 사용하는 터치패드(요즘 나오는 랩탑에서는 많이 사용한다)로 스크롤하면 스크롤 속도가 말도 안되게 빨라지는 현상이다. 거의 스크롤 거리에 비해 10~20배는 빠르다.

이를 수정하려면 ScrollViewerPreviewMouseWheel 를 설정해야한다.

원리는 간단하다. PreviewMouseWheel에서 EventArgsHandledtrue로 설정하면스크롤이 되지 않는다. 이 때 EventArgsDelta를 받아와 일정 threshold를 넘지 않게 스크롤 시켜주면 된다.

아마도 오류 자체는 Delta값이 매우 커지는 것과 관련된 것같다. PreviewMouseWheel 이벤트가 과도하게 불리는 것은 아니라는 것이다.

또한, 경험상 threshold 값은 int값 48이 가장 적당했다.

PreviewMouseWheel 이벤트 메소드의 예시 코드는 아래와 같다.

public static void HandleScroll(object sender, MouseWheelEventArgs e)
{
    int threshold = 48;
    ScrollViewer scrollViewer = (ScrollViewer)sender;
    double target = scrollViewer.VerticalOffset - Math.Min(Math.Max(e.Delta, -threshold), threshold);
    scrollViewer.ScrollToVerticalOffset(target);
    e.Handled = true;
}

Windows에서 권한문제로 실행되지 않는 파일 및 폴더 삭제하는 방법

간혹 윈도우를 사용하다가 권한의 문제로 삭제가 되지 않는 파일이나 폴더가 있습니다.

이러한 현상이 발생할 때 대부분의 경우 작동하는 삭제 방법을 알려드립니다.

아래 파일을 받아 압축을 풀어줍니다.

이후 아래 과정을 따라주세요.

  • 다운로드 받은 압축 파일을 압축 해제한 뒤 Add Take Ownership Option.reg 파일을 실행하여 뜨는 창들에서 모두 “예”를 선택합니다.
  • 이후 삭제가 되지 않는 파일이나 폴더를 우클릭 하고 Take Ownership 이라는 메뉴를 클릭합니다.
  • 클릭 후 검정색 창이 뜨고 사라질 때 까지 기다립니다 (파일 수가 적으면 즉시 사라지니 까만 창이 뜨지 않았다면 기다릴 필요가 없습니다)

위 과정을 제대로 따라했다면 이제 파일이나 권한 문제로 삭제되지 않는 파일이나 폴더를 정상적으로 삭제할 수 있습니다.

삭제 이후 Take Ownership 메뉴가 필요 없다면 Remove Take Ownership Option.reg 파일을 실행하여 위와 마찬가지로 뜨는 창들에서 모두 “예”를 선택해주세요. 그러면 더이상 탐색기 우클릭 메뉴에서 뜨지 않습니다.

Windows 10의 탐색기 “내 PC”에서 라이브러리 폴더들을 삭제하는법

Windows 10 업데이트로 탐색기의 “내 PC“항목에서 사용자 라이브러리 폴더가 생겼습니다.

이 게시글에서는 해당 폴더들의 선택적 또는 전체 삭제에 대해 다루겠습니다.

먼저, 아래 파일을 다운로드해주세요

파일을 다운로드 하고 압축을 풀어주세요.

라이브러리 폴더의 삭제를 위해서는 현재 사용하는 윈도우의 아키텍쳐를 알아야합니다.

윈도우키 + R의 단축키를 사용하여 뜨는 창에 아래의 텍스트를 입력후 엔터를 눌러주세요.

 cmd /c wmic os get osarchitecture && pause 

새로 뜨는 창에 32비트라고 뜨면 32비트 아키텍쳐, 64비트라고 뜨면 64비트 아키텍쳐입니다.

32비트/64비트 여부를 알아내었으면 압축을 푼 폴더안의 자신의 아키텍쳐에 맞는 폴더에 들어갑니다.

전체 복구“와 “전체 삭제” 파일을 통해 “내 PC” 항목의 3D 개체, 바탕화면, 문서, 다운로드 등의 모든 라이브러리 폴더를 숨기거나 다시 보여줄 수 있습니다.

그 외 자신이 원하는 폴더만 숨김/표시 상태를 변경 하고 싶은 경우 “개별 폴더 삭제” 폴더의 파일을 사용하세요.

파일을 실행할 때 뜨는 메시지는 무조건 허용을 눌러줘야 변경이 적용됩니다.

※폴더 표시여부 변경 이후 컴퓨터를 재부팅하면 변경 사항 적용이 완료됩니다※

고해상도 모니터에서 배율이 200%를 넘으면 카카오톡이 작게보이는 문제 해결법

이 해결법은 윈도우10 1803버전 이후에만 적용할 수 있습니다.

제 노트북의 경우 13인치에 4K 해상도라서 배율을 250%로 사용합니다.

다만 카카오톡의 경우 배율을 200%까지밖에 인식하지 않아 창과 글자가 작아서 가독성이 매우 떨어집니다.

이 문제는 카카오톡 프로그램의 스케일링 옵션을 조정하여 해결할 수 있습니다.

아래 과정을 따라주세요.

  • 윈도우키 + R 단축키를 통해 뜨는 창에 “C:\Program Files (x86)\Kakao\KakaoTalk”를 입력하고 엔터를 눌러주세요. 다른 경로에 카카오톡을 설치한 경우 탐색기를 열고 설치 경로 폴더로 이동하시면 됩니다.
  • KakaoTalk.exe 파일을 우클릭하여 속성으로 이동하거나 파일 선택후 알트 + 엔터키를 눌러 바로 속성창을 띄워줍니다.
  • 상단의 호환성 탭으로 이동해주세요.
  • 높은 DPI 설정 변경 버튼을 눌러주세요.
  • 새로 뜨는 창의 하단 “높은 DPI 조정 동작을 재정의합니다.” 체크박스를 체크하고 하단의 옵션을 “시스템(고급)”으로 설정해주세요.
  • 카카오톡을 종료후 재시작하면 창과 글씨가 정상적 크기로 바뀝니다.

이 해결법의 단점은 아래와 같습니다.

  • 사진과 프로필사진의 썸네일이 설정된 배율만큼 흐리게 보입니다. 다만 원본을 보는 경우는 문제가 없는 것으로 보입니다.
  • 스크롤이 설정된 배율만큼 버벅입니다. 배율이 250%라면 2.5배정도 스크롤이 끊깁니다.
  • 채팅창 크기 조절시 채팅 입력란이 투명해집니다. 창을 다시 열어주면 해결됩니다.
  • 각종 아이콘이 설정된 배율만큼 흐릿해보입니다.
  • 카카오톡을 통해서 새로 실행된 브라우저 창이 흐릿하게 보입니다. 브라우저 exe파일을 위와 동일한 방법으로 “높은 DPI 조정 동작”설정을 “응용 프로그램”으로 고정시키면 해결됩니다.

상기한 단점을 제외하고는 카카오톡을 정상적인 창, 글씨 크기로 사용할 수 있습니다.

Windows 10 굴림 제거 스크립트

사용법 :

  • 아래의 프로그램을 다운로드하고 압축을 풀어줍니다.
  • 시스템을 재시작해줍니다.
  • 시스템 재시작 이후 즉시 bat파일을 관리자 권한으로 실행해주세요.
  • 프로그램 실행 이후 파일이 사용중이라는 메시지가 뜨면 프로그램을 너무 늦게 실행하게 된겁니다. 다시 시스템을 재시작하고 위의 단계를 실행해주세요.
  • 실행 이후 뜨는 창의 지시를 따라주시면 됩니다. (Windows 10 1903부터는 유저가 아닌 시스템에 폰트를 설치해주세요)
  • 지시를 따른뒤, 컴퓨터를 재부팅하면 굴림폰트가 노토산스로 교체됩니다.

주의사항 :

  • 호환성 문제로 굴림은 교체되지만 굴림체는 그대로 유지합니다. 다만, 굴림체를 사용하는 프로그램은 굴림이 표시되는 프로그램중에서도 극소수입니다.
  • 윈도우10의 버전넘버가 올라가는 메이저 업데이트시 스크립트를 다시 실행해주어야합니다.

컴퓨터로 타이핑하면 소리가 나는 프로그램 Typing Sound

인터넷에 비슷한 걸 찾아봐도 사운드를 못바꾸거나 바꿀수 있으면 하자가 있는게 많아서 직접 만들었습니다.

프로그램 종료를 원하시는경우 시스템 트레이의 아이콘을 우클릭하고 종료를 눌러주세요.

간혹 크롬에서 다운로드 시 다운로드가 막힙니다. 이 경우 다른 브라우저로 받아주세요

config.ini 파일 내용 설명 :

  • volume = 0~1 사이 소수로 볼륨 설정 (0.7 = 70%)
  • maxSoundChannel = 지정한 갯수 만큼 키 누름 소리를 미리 로딩 합니다. 연속된 키 입력시 소리 씹힘 현상이 일어난다면 이 수를 늘려주세요. 너무 크면 프로그램의 사용 메모리가 극단적으로 늘어납니다.
  • noSoundOnBattery = 이 설정이 0이면 배터리 사용 중에도 소리를 재생하며 이 값이 1이면 배터리 사용 중에는 배터리 사용 시간을 위해 소리를 내지 않습니다.
  • key, ctrl, alt, shift, space, tab, del, backSpace, enter = assets 폴더 내의 해당 키에 해당하는 소리를 지정합니다. wav파일로 지정해주세요.

프로그램 변경 내역 :

2.1.2 :

  • 기본 타이핑 사운드 Cherry MX Blue 스위치 소리로 변경
  • 각종 기계식 키보드 사운드를 assets폴더에 추가
  • 타이핑 소리 마지막에 지터 현상이 나는 현상 수정

2.1.1 :

  • 배터리 사용시 소리 재생 여부 설정을 추가하였습니다.

2.0.1 :

  • 백그라운드 CPU 사용량을 줄였습니다.

2.0.0 :

  • config.ini로 설정 변경 가능
  • 특정 키별 소리 지정 가능

1.8.0:

  • 절전 모드에서 깨어난 경우 사운드가 나지 않는 오류를 수정했습니다.
  • 프로그램 종료가 즉시 이루어지지 않는 오류를 수정했습니다.
  • 프로그램이 사용하는 메모리의 양을 줄였습니다.

1.6.0 :

  • 오랜시간 입력이 없는 경우 사운드가 지연되는 현상을 수정하였습니다.

1.5.0 :

  • 연속되는 키 소리 간격을 조정하였습니다.
  • 프로그램 아이콘을 추가하였습니다.
  • 트레이 아이콘을 통해 프로그램을 종료할 수 있습니다.

C#에서 다양한 타입에 대응하는 List 제작하기

최근 C#을 통한 개발을 진행 하는 도중 여러 종류의 JSON파일을 읽어 List로 변환해야 됐던 경우가 있었다.

dynamic을 이용하고, 변수를 선언하고 초기화를 하려니 내가 쓰는 JSON 라이브러리는 string을 데이터 타입으로 변환할 경우 type을 지정해줘야됐다.

하지만, 타입을 지정하는건 C#에 Type이라는 자료형이 존재하기 때문에 문제가 없으나 List의 경우 초기화할 때 자료형을 또 지정해줘야한다.

그래서 생각나는대로 List<T> 선언 시 typeof를 사용하여 Type를 지정해주었으나 오류가 발생하였다.

검색해보니 상속받은 Type 자료형의 MakeGenericType이라는 메소드를 사용하면 됐었다.

결국 아래와 같은 코드를 사용하여 해결하였다.

dynamic datas = JsonConvert.DeserializeObject(savedString, typeof(List<>).MakeGenericType(this.info.jsonType));

최대 절전 모드 해제 이후 SpeedShift 옵션 재활성화 하는법

SpeedShift 옵션 설정을 통한 Power Throttling 현상 해결법에 대한 글을 읽으신 분만 해당이 되는 글입니다.

상기 게시글의 해결법을 적용한 이후 최대 절전 모드에서 깨어난 경우 최대 클럭 고정이 되지 않는 문제를 겪는 노트북들이 있습니다.

이 경우, SpeedShift를 재설정 해주어야하는데 방법은 아래와 같습니다.

우측 하단 TPL이라고 적힌 버튼을 눌러줍니다.
현재는 SpeedShift가 체크되어있지만,
최대 절전 모드에서 깨어난 노트북의 경우 SpeedShift가 꺼져있습니다.
다시 체크한 뒤 OK를 누르면 클럭 고정이 정상적으로 작동합니다.

또한, ThrottleStop의 C1E 옵션을 체크하지 말아주세요. 체크 할 경우 SpeedShift 작동 여부과 관련없이 클럭 고정이 되지 않는 문제가 생길 수 있습니다.

C1E 옵션을 체크한 상태에서 클럭 고정이 되지 않는 경우, 임의로 최대 절전 모드를 진입 후 다시 SpeedShift 체크박스를 클릭하면 다음번에도 동일 현상이 생기기 전까지 클럭 유지를 할 수는 있습니다.

C#에서 Private Key를 이용한 SFTP 접속하기

C#에서 Private Key(.pem이나 .ppk)파일을 이용하여 SFTP 연결을 성립하기 위한 방법을 공유합니다.

일단, ppk 파일을 사용한다는 가정 하에 진행하도록 하겠습니다. (pem 파일을 ppk 파일로 변환하는법은 여기를 클릭해주세요)

  1. C# 프로젝트의 nuget 검색을 통해 WINSCP 패키지를 설치해주세요.
  2. 이후, 아래 예제코드를 참고하여 프로그램을 작성하면 됩니다

예제 코드 :

using WinSCP;

namespace SAMPLE
{
	public partial class MainWindow : Window
	{
		private Session session;
		public MainWindow()
		{
			InitializeComponent();
			//HostName, UserName SshPrivateKeyPath 변경할것
			SessionOptions sessionOptions = new SessionOptions
			{
				Protocol = Protocol.Sftp,
				HostName = "HOST",
				UserName = "USERNAME",
				SshPrivateKeyPath = "PATH_TO_PPK_FILE",
				GiveUpSecurityAndAcceptAnySshHostKey = true
			};
			session = new Session();
			session.Open(sessionOptions);
			TransferOptions transferOptions = new TransferOptions();
			//아래 두 옵션은 입맞에 맞게 수정해주세요.
			transferOptions.TransferMode = TransferMode.Automatic;
			transferOptions.OverwriteMode = OverwriteMode.Overwrite;

			//GetFiles 또는 PutFiles 사용
			TransferOperationResult transferResult = session.GetFiles("호스트 파일 경로", "로컬 파일 경로");
			if (transferResult.IsSuccess)
			{
				MessageBox.Show("다운로드 성공");
			}
			else
			{
				MessageBox.Show("다운로드 실패");
			}
		}
	}
}