Author Archives: slime

요한복음 요약

요한복음은 새로운 계약의 네 개의 복음서 중 하나로, 이전의 세 복음서(마태, 마르코, 루카)와는 다른 관점에서 예수님의 삶과 가르침을 전합니다. 이 복음서는 보편적으로 요한 사도가 쓴 것으로 받아들여지며, 그는 예수님의 가장 가까운 제자 중 한 명이었습니다. 요한복음의 중심 주제는 예수님이 신의 아들이며 인간에게 영원한 생명을 주는 그의 역할에 대한 깊은 이해입니다.

요한복음은 대략 다음과 같이 요약할 수 있습니다:

1. 예수의 성격 및 신분 확인 (1장 – 4장): 요한은 예수님을 ‘말씀'(Logos)이라고 칭하며, 그가 신과 함께 있었고, 실제로 신 그 자체라고 선언합니다. 요한은 예수님의 각종 기적을 통해 그의 신적인 성격을 입증합니다.

2. 예수의 공공 사역 (5장 – 12장): 이 부분에서는 예수님의 공공 사역과 그의 가르침, 그리고 그가 행한 기적들에 대해 더욱 상세히 설명합니다. 이러한 기적과 가르침을 통해 예수님은 자신이 하나님의 아들이며, 사람들에게 영원한 생명을 주는 이라는 것을 계속적으로 강조합니다.

3. 예수의 마지막 만찬, 기도, 그리고 체포 (13장 – 18장): 요한은 예수님의 마지막 만찬과 그 이후의 사건들을 세세하게 기록합니다. 예수님은 제자들에게 세상에 대한 그의 가르침을 마무리하고, 그들에게 세상을 이길 수 있도록 힘을 주겠다고 약속하셨습니다.

4. 예수의 십자가, 부활, 그리고 계시 (19장 – 21장): 마지막 부분에서는 예수님의 십자가, 장례, 부활, 그리고 부활 후 제자들에게 나타나는 모습을 보여줍니다. 이 부분은 예수님의 사명을 완수하고, 인간에게 영원한 생명을 주는 것이 가능하게 한 사건들을 기록하고 있습니다.

요한복음은 그의 디테일한 서술과 신학적인 깊이 때문에 기독교 신학과 예수님에 대한 이해에 있어서 중요한 역할을 합니다. 이 복음서는 예수님이 신의 아들이라는 주제를 강조하며, 그의 사랑, 자비, 그리고 인간에게 영원한 생명을 주는 그의 권능에 대해 강력하게 말해줍니다. 

삶의 의욕이 없을 때

 삶의 의욕이 없을 때는 정말 어려운 시기입니다. 하지만 그런 감정을 경험하는 것은 자연스러운 일이며, 이를 극복할 수 있는 방법들이 있습니다. 아래에 몇 가지 조언을 드리겠습니다:

1. 자기 이해: 먼저 자신과 솔직하게 대화해보세요. 왜 의욕이 없는지, 어떤 것이 그러한 감정을 일으키는지 파악해보는 것이 중요합니다. 자신의 감정과 욕구를 이해하고 받아들이는 것이 성장과 극복의 첫 걸음입니다.

2. 도움을 구하라: 언제든 도움을 구할 준비가 되어 있습니다. 가족, 친구, 혹은 전문가와 이야기를 나누는 것은 큰 도움이 될 수 있습니다. 때로는 우리 자신만으로는 감정을 극복하기 어려울 수 있으며, 다른 사람들의 지지와 조언이 필요할 때도 있습니다.

3. 작은 목표를 설정하라: 큰 목표가 너무 무겁고 어렵게 느껴질 수 있습니다. 그래서 작은 단계로 나누어서 달성 가능한 목표를 세우는 것이 도움이 될 수 있습니다. 이러한 목표들은 당신이 진전을 보고 성취감을 느낄 수 있게 도와줄 것입니다.

4. 건강한 생활 습관: 건강한 식습관을 유지하고 충분한 운동과 수면을 취하는 것이 중요합니다. 신체적으로 건강해질수록 정신적으로 강해질 수 있습니다.

5. 관심사와 취미: 자신이 즐겁게 할 수 있는 취미나 관심사를 찾아보세요. 이러한 활동들은 긍정적인 기분을 가져다 줄 수 있고, 의욕을 불러일으킬 수 있습니다.

6. 마음의 평화를 찾으려 노력: 명상, 요가 등의 마음을 진정시키는 활동을 시도해보세요. 마음의 평화를 찾는 것은 감정과 의욕을 다시 찾는데 도움이 될 수 있습니다.

7. 독서나 영화 감상: 자기계발서나 영감을 주는 영화 등을 통해 동기부여를 얻을 수 있습니다.

8. 전문가의 도움을 받으세요: 만약 의욕을 찾는 것이 너무 힘들다면, 정신건강 전문가와 상담하는 것도 좋은 선택입니다. 전문가들은 더 많은 도움과 조언을 제공할 수 있습니다.

마지막으로, 의욕이 없는 상태는 일시적인 것일 수도 있으니 너무 자책하지 마시기 바랍니다. 언제든지 변화와 개선이 가능합니다. 의욕을 찾는 것이 어려운 경우에도 주변의 지지와 도움을 받는 것을 잊지 마세요.

Windows 종료 전에 실행되는 앱

 Windows 에서 시스템 종료 전에 실행되는 앱을 구현하려면 레지스트리를 사용하여 작업을 해야 합니다.

1. 시작 메뉴에서 “regedit”을 검색하여 레지스트리 편집기를 엽니다.

2. 다음 경로로 이동합니다: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionGroup Policy Objects{SID}SoftwareMicrosoftWindowsCurrentVersionRun

   여기서 “{SID}”는 현재 사용자의 고유 보안 식별자입니다.

3. “Run” 키를 선택하고 “편집” > “새로 만들기” > “문자열 값”을 선택합니다.

4. 새 문자열 값을 만든 후, 이름을 “MyShutdownApp”과 같이 설정합니다. 이 이름은 실행할 앱을 식별하는 데 사용됩니다.

5. 값을 두 번 클릭하고 실행할 앱의 경로를 입력합니다. 예를 들어 “C:PathToMyApp.exe”와 같이 앱의 경로를 지정합니다.

이제 Windows가 종료되기 전에 “MyShutdownApp”이라는 이름의 앱이 실행됩니다. 해당 앱은 작업을 수행할 수 있습니다. 단, 이 앱은 사용자 세션이 종료되기 전에 실행되므로 백그라운드에서 실행되는 앱으로 구현하는 것이 좋습니다.

앱이 종료되기 전에 추가 작업을 수행하려면 해당 앱 내에서 종료 시그널을 수신하고 처리해야 할 수도 있습니다. 이를 위해 Windows 시스템 종료 시그널을 수신할 수 있는 방법을 제공하는 많은 프로그래밍 언어와 프레임워크가 있습니다. 예를 들어 C#에서는 `SystemEvents.SessionEnding` 이벤트를 사용하여 세션 종료 시그널을 수신할 수 있습니다.

​이 방법은 Windows 에서 앱을 종료하기 전에 추가 작업을 수행해야 하는 경우 유용합니다. 그러나 이 방법은 관리자 권한이 필요하며, 조심해서 사용해야 합니다. 또한 앱이 시스템 종료를 차단하거나 지연시키는 등의 부작용이 발생하지 않도록 주의해야 합니다.

맥OS 긴급 보안 업데이트 후 부팅 문제

 새 맥OS 가 지원 안되는 늙은 맥들 위한 OpenCore Legacy Patcher 가 이번 macOS 긴급 보안 업데이트 13.3.1 (a) 가 WindowServer crashing 을 일으키니 하스웰 CPU 이후 맥이 아니면 구지 업데이트 안해도 되고, 만약 문제가 생겼다면 0.6.5 설치하라고 3일전에 지령을 내렸더랬습니다. 저는 부팅에 문제가 있어서 일단 기존에 설치했던 0.6.2 에서 Post Installation 을 해서 제대로 부팅된 후 0.6.5 를 설치했습니다. https://github.com/dortania/OpenCore-Legacy-Patcher/releases

WPF 잡담

몇달째 WPF 로 윈도즈 데스크탑 네이티브 앱을 만드는 일을 하고 있습니다. 며칠전 경험을 기록으로 남기려고 몇자 적습니다. 아시는 바와 같이 WPF 는 주로 XAML 이라는 마크업 언어를 통해 UI 를 구성합니다. CSS 와 용도가 비슷한 Style 이라는 Tag 를 통해 UI 컨트럴들의 모양을 조정할 수 있어요. Style 만 따로 모아서 리소스 파일처럼 불러오고, Style 은 원하는 Tag (사실 WPF 에선 이게 Class – Type 입니다) 를 조질 수(?) 있어요. 웃기게도 CSS 와 유사한 문제점들이 생깁니다. 여러가지 조건에 의해 선언한 Style 이 무시당하는 거죠. CSS 는 최근 웹브로우저들의 훌륭한 개발자모드로 인해 대충 실시간으로 어떻게 무시(?) 당하고 있는지 구경할 수 있잖아요. Visual Studio 2015 까지는 내장된 Runtime Style Monitor 가 없어서 외부 툴들을 썼지만 VS 2017 부터는 내장 Tool 로 Style 이 Runtime 에서 어떻게 적용되고 있는지 구경할 수 있게 되었죠. 얼마전 이것으로 작업을 진행하다가 뭔가 이상하다고 생각되었습니다.



위 그림은 특정 Style (여기서는 DialogHost 에 적용되는) 의 속성을 디버깅 모드로 실행한 상태에서 보고 있는 것인데요. 제 기억에는 예전에 주황색 점선 영역에 뭔가 보였던거 같은데 이게 안보이는 겁니다. 다른 프로젝트들을 열어서 이것 저것 뒤지다가 발견한 것이 아래 그림의 것입니다.


요즘 제가 작업중인 프로젝트에서 사용하는 오픈소스 XAML Theme 라이브러리인 Material Design In XAML 의 데모 프로젝트에서 어떤 UI 부분의 속성을 실행시에 열어본 화면입니다. 위의 그림에서 보는 바와 같이 노란 네모 안에 이전 그림과 다른 파란 텍스트가 한줄 보입니다. 이게 현재 보고 있는 Style 이 선언된 XAML 파일을 뜻하며 파란 텍스트를 누르면 그 파일을 볼 수 있습니다. 같은 프로젝트 안에 소스 코드가 있어야 저 Style 의 XAML 소스 코드를 볼 수 있는 파란 텍스트 링크가 생길 것이라고 추측해 볼수 있습니다. 왜냐하면 제가 만들고 있는 앱은 Material Design In XAML 라이브러리를 NuGet Package 로 불러서 사용하니 당연히 제 프로젝트 안에는 그 라이브러리의 소스 코드가 없습니다. 추측이 사실인지 조사를 해봤습니다.

Material Design In XAML 는 GitHub 에 올라가 있으니 소스코드를 Clone 해서 위 그림처럼 쉽게 구경해 볼 수 있습니다. Clone 한 소스에서 처음 그림에서 보여드렸던 DialogHost 의 Style 을 정의하는 XAML 파일을 아래 그림처럼 이름을 바꿔서 제 프로젝트로 복사를 했습니다.


그리고 WPF 앱의 리소스 구조를 정의하는 App.xaml 에서 기존 Material Design In XAML NuGet Package 의 DialogHost 의 Style 을 불러오는 부분을 comment out 시키고 제 프로젝트 폴더에서 복사한 XAML 을 불러오도록 아래 그림처럼 바꿨습니다.






이제 첫번째 그림에서 구경하던 DialogHost 의 속성을 Runtime 에서 열어봤습니다.
 

위 그림을 보시면 Style 을 정의한 파일의 파란 텍스트 링크가 이제 보입니다. 파란 텍스트를 누르면 당연히 XAML 소스 코드로 이동합니다. 이런 탐구 생활 정말 재밌습니다. ㅋㅋㅋ 잡담은 계속될 예정이에요.

WPF 에서 초간단 런타임 다중 언어 지원

  제가 다니는 직장에서 최근에 시작한 프로젝트는 WPF (윈도즈 앱의 GUI 를 만드는 기술중 하나) 기반입니다. 제 매니저는 50대중반으로 당연히 WinForm 에 익숙하고, 올해 딱 50인 저의 직속 시니어는 WPF에 익숙하고, 전 그냥 다 해봐서 새 프로젝트이니 UWP (저도 이건 그냥 Hello World 찍는 수준입니다만, 다른 OS 에서도 쉽게 잘 되는 이유로…) 로 합시다! 했다가 윈도7 지원 문제로 까이고, 결국 WPF 로 시작되었습니다. 대충 골격은 저희 회사의 주력인 Windows CE 기반의 통신기기 (PBX에 가깝죠) 를 PC 윈도즈에서 모니터링하는 거고, 제가 담당한 부분은 오로지 GUI입니다. ㅋㅋㅋ 캐나다 제품들의 특징 중에 하나가 공용언어인 불어가 들어가는 경우가 많고, 미국 시장에도 진출한 제품들은 멕시코 이민자들이 너무 많은 관계로 스페인어를 지원합니다. 그러니 당연히 제가 담당한 부분도 그게 되야 하는거죠. 헐~

  저도 WPF 로 Localization 은 처음 해보는거라, 구글님과 스텍오버플로님에게 열심히 매달리고 있는데… 기본적으로 WPF 의 컴파일 타임 다중 언어 지원은 M$ 의 문서가 잘되어 있습니다만, 런타임간에 언어 전환은 네트에서 수많은 해결책들을 찾아 볼 수 있습니다.

  1. WPF Localization – On-the-fly Language Selection
  2. WPF Localization Using RESX Files
  3. WPF Runtime Localization
  4. WPF Localization Extension
  5. Localizing WPF Applications using Locbaml
  6. Simple WPF Localization
대충 이 정도가 있는데요. 더 찾아보면 더 있을 것 같습니다. 저 리스트 중에 제일 단순한 방법은 마지막 6번에 있는 방법이에요. Resource.resx 를 여러 언어 버전을 만들어주고 – 예를 들면, 불어는 Resource.fr.resx – 런타임에서 언어를 변경하면 모든 컨트럴에 언어가 바뀌게 됩니다. 이것도 디자인타임에서 변경내용을 실시간으로 보여주기 위해 몇가지 기교를 넣어서 제가 보기엔 그것도 귀찮아 보이더군요.  ㅋㅋㅋ 그래서 더 단순한 ‘Localization of a WPF app – the simple approach’ 에서의 방법으로 구현했습니다. 근데 이 문서는 구현한 방법에 대한 설명과 클래스 코드만 있고 데모 코드가 없어서 기존에 XAML-WPF 문법에 익숙하지 않으면 시작도 못해 볼 정도라 스프린트 데모때 설명을 위해 데모 코드를 만들어 봤습니다. 데모 코드는 https://github.com/hotdeveloper/TestLocWpf 에서 받으실 수 있습니다. 내용을 간단히 설명드리면,

솔루션 탐색기에서 프로퍼티를 열어보면 각 언어별 리소스가 있어요.

영어 리소스 파일 내용. 딕셔너리라고 보시면 됩니다.

불어 리소스 파일 내용

MainWindow.xmal 에 리소스 파일의 Name 필드를 적용하는 부분이죠.

버튼을 눌렀을 때, CultureInfo 클래스에 언어 코드를 넣은 오브젝트를 TranslationSource 클래스의 CurrentCulture 에 넣으면 GUI 가 그 언어로 바로 변경됩니다. Null 을 넣으면 시스템 기본 언어로 돌아오죠.
시스템 기본 언어가 적용된 상태죠.

Change 버튼을 누르면 불어가 적용됩니다.

  소스 코드가 워낙 짧아서 잠시 둘러보시면 금방 이해할 겁니다. 피드백, 문의는 댓글로 주셔요.

Now, let’s write funny codes.