달력

4

« 2025/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

Visual Studio Code의 단축키들을 정리한 파일들이다. 가끔식 확인이 필요하거나 책상에 프린트에서 붙여 놓으면, 참고하는데 도움이 될 것이다.  VS Code의 메뉴상에서는 "도움말" > "바로가기 키참조"에서 확인 가능하다.


아래는 각 OS별로 작성된 Shortcut 키 매핑에 대한 파일들의 링크와 위치이다.



[MacOS용 Shortcut 파일] 

   https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf






[Windows용 Shortcut 파일

    https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf





[Linux용 Shortcut 파일]

    https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf



:
Posted by 행복상자

최근에 Microsoft에서 주최했던, AI 컨포런스에 다녀오고 나서 읽기 시작한 책이다.

마이크로 소프트의 CEO인 "사티아 나델라" 이 사람에 대해서, 지난 몇년 동안 많은 매스미디어에 노출이 되었지만, 그가 누군지에 대해서는 잘 알지 못하였다. 단지 인도 출신의 성공한 개발자라는 생각할 뿐이었다.


책을 보면서, 여러가지 다른 관점에서 그에 대해서 바라보게 되었다.

이전에 내가 알고 있었던 얇팍한 지식으로 알고있던 그는 슈퍼 히어로와 같았다. 어느날 갑자기 나타나서 위기에 빠진 마이크로소프트를 구해내었던 초인으로 알고 있었다. 그러나 그에게 영향을 주었던 사람들과 그가 좋아하던 것을 알게되면서, 미디어에서 볼수 없었던 순전히 인간적인 면모로부터 그를 이해할 수 있었다.


오래전인것 같다. 내가 처음 Programing을 배웠던 그 때에는, "빌게이츠"와 "스티브 잡스"가 가장 유명했던 개발자였다. 물론 Norton Utilities를 만들었던 "피터 노턴"도 인상 깊었지만, 이 두 사람 만큼 만은 아니었다.


그중에서 빌게이츠가 만든 마이크로소프트사는 개인용 컴퓨터 소프트웨어 시장에서 단연 독보적인 회사였고, 서버 영역까지 확장에 확장을 하고 있었다. 네트워크와 인터넷 시대가 도래하면서, 위기가 찾아 오기도 하였지만, 특유의 저력과 집중력으로 위기를 이겨내고, 새로운 비전을 향해 나아가던 도전자의 모습을 가졌었다.  


그런데 어느날 "빌게이츠"가 CEO에서 물러나고, 그와 같이 마이크로 소프트의 창업과 사업 동참하였던, "스티브 발머"가 회사 경영을 맡고나서는 마이크로소프트는 경쟁자들에게 밀려 한단계씩 아래로 추락하던 참이었다. 이때 등장했던 이가 마이크로소프트의 세번째 CEO인 "사티아 나델라" 였다.


사티아 나델라는 인도에서 태어난 개발자 출신의 이민자라는 사실만이 내가 아는 그에 대한 전부였기에, 그가 어떤 사람인지에 대해서 알고 싶은 마음이 컸다.  내가 이터넷을 검색하다 찾아본 "히트 리프레시"는 그의 부모와 그리고 아내와 자녀에 대한 여러가지 사실들을 알려주고 있는데, 이 책은 어떤 의미로는 그의 "리더십"에 대해서 말하기도 하지만, 지금 우리가 필요한 리더십이 무엇인지를 알려주기도 한다.


"빌게이츠"는 서문에

 미래에는 다른 이들에게 능력을 부여하는 사람이 리더가 될 것이다.

라고 말하고 있다.




"사티아 나델라"는 1992년도 마이크로소프트에 입사하였다. 그는 마이크로소프트가 PC혁명을 일으킨 주역이었으며 유일무이한 성공을 거둔 회사였지만, 관료주의와 사내정치로 추락하고 있다고 이야기를 시작한다.


2014년 2월 마이크로소프트사의 CEO가 된 그는 

"세상을 변화시키겠다는 목표로 다시 돌아가기 위해 혁신을 가로 막는 장벽을 제거하겠다"

라고 이야기를 한다. 

이당시의 마이크로소프트사는 이전에 가졌던 "개발회사"의 이미지는 없어지고 IBM과 같은 비즈니스 또는 컨설팅회사 같이 세련된 비즈니스 회사의 이미지가 강한 회사었다. (나의 느낌일지 모르지만...)


그의 리더십은 "공감능력"에서 출발했지만, 처음부터 공감능력을 충분히 갖춘 사람은 아니었다. 그의 입사 면접에서 한가지 질문을 받았는데, "만약 아이가 거리에 누워서 울고 있다면 어떻게 할 겁니까?" 라는 질문이었다.

어떻게 해야할까? "그는 911을 부를 겁니다"라고 대답을 하였는데, 적절한 대답은 아니었다.

질문자에게 "당신은 공감능력이 부족합니다"라는 이야기를 들어야 했던 그였다.

그 이후에 여러가지 일들 로부터 그에게 부족했던 "공감능력"을 키우면서, 리더로서의 자질도 키울수가 있었다.   


그는 이렇게 책에서 이야기 한다.

"나는 공감 능력이 리더의 가장 중요한 덕목이라고 생각한다. 그것은 자신이 이끄는 구성원들의 자신감을 키우기 때문이다."


책은 마이크로소프트의 혁신에 대해서 이야기한다.

인공지능과 혼합현실 그리고, 클라우드와 양자 컴퓨팅등 새로운 기술들로 인해 인간의 역할이 어떻게 바뀌고, 어떠한 윤리와 도적적인 기준이 필요한지에 대해서 각계각층에서 광범위한 논의가 일어나고 있는 시대에 우리는 살고 있다. (아직 구체적이지 않은 도입을 위한 준비 단계라는 이야기이다.)


그의 아버지는 공무원이었고, 어머니는 산스크리트어 학자였는데,  어려서부터 강압적이던 다른 부모들과는 달리 자유로웠던 유년시절을 보냈었다. 그는 크라켓을 좋아하고, 컴퓨터를 좋아하는 아이였었다. 그는 인도 공과 대학교 입학시험에 낙방하고, 마니팔 공과대학교 전기공학과에 입학하였는데, 전기공학을 계속한다면, 언젠가는 좋아하는 컴퓨터와 소프트웨어를 할 수 있을 것이라는 꿈이 있었다. 

결과적으로 그는 마이크로소프트에서 그의 꿈을 이루게 된다.


내가 바라본 바로는,

마이크로소프트사의 CEO인 그는 여러가지 다른 변화된 모습으로 조직과 개발자들에게 나타났는데, 그중에 가장 커다란 변화는 다음의 2가지를 보면 알수 있듯이, 지난 35년동안 보여주었던 모습과는 완전히 다르다.

관점과 패러다임의 변화는 어떤 한사람이 시작하였는지는 모르지만, 이전과는 전혀 다른 모습으로 새로운 역사를 써 내려가고 있다. 


첫째로 기술 리더로서의 기술 지향적인 개발사의 이미지 변화였다.  윈도우즈 중심에서서 클라우드 퍼스트와 모바일 퍼스트 정책을 펴면서, Azure를 통해 Cloud의 주도권을 찾아가고 있다. 물론 아직은 AWS에 뒤진 2위 업체이지만, 지난 몇년간의 성장과 발전은 정말 눈부시다. 마이크로소프트사는 역대 최대의 성과를 올렸는데, 연간 1000억불의 매출을 올렸다고 지난 7월에 발표했다.


그리고, 두번째는 오픈소스에 대한 무한 사랑이다. 바라보는 이들이 거북할 정도록 애정을 보여주고 있는데, 이전에 리눅스와 오픈소스를 바라보는 관점과는 완전히 달라지면서, 새로운 모습을 보이고 있다. 지난 2015년도에 사티아 나델라는 "마이크로소프트는 리눅스를 사랑한다"라고 발표하기도 했다.

최근에 오픈소스 공유사이트인 Github를 75억달라에 인수하기로 하였는데, Github상의 오픈소스 기여자가 가장많은 회사가 마이크로소프트이다.



 


:
Posted by 행복상자

지난 며칠전에 Windows 환경에서 리눅스나 Unix에서 사용하는 kill 명령과 비슷한 프로그램으로 "taskkill"에 대해서 이야기하였다. 내가 "taskkill"에 대해서 찾아보게된 계기는 Visual Studio의 Debug Mode상에서 생성된 Process를 중단할 필요에 의해서 였는데, 실제로 해보고 결과를 이야기하기로 하였었다. (지난 글)


"Taskkill"을 이용해서 Visual Studio개 생성한 Process의 제거는 결론적으로 실패였다.


우선 Visual Studio의 실행을 중단하고, 

TASKKILL /IM myprogram.exe /F /T

을 실행하거나 또는


TASKKILL /PID 1004 /F /T


를 실행해 보았지만, "Access Denied" 메시지를 보이고, 중단을 원하던 Process는 그대로 남아 있었다.


그래서, 또하나의 방법으로 "Power Shell"에서 제공하는 "Stop-Process" Cmdlet을 이용해 보기로 하였다. "Power Shell"은 kill 이라는 Alias명으로 이미정의 정의되어져서 "Stop-Process" 대신 사용이 가능하다.

(Power Shell의 "Stop-Process" 참조 사이트 : Version 6기준)


Powershell을 실행하고, 콘솔창에서 다음과 같이 실행하여 보았다.

Stop-Process -Name "myprogram.exe"

그러나 역시나 "Access Denied" 메시리즐 보이면서 Process를 중단하는 것을 실패했다. (다른 옵션들도 주고 테스트했지만 실패했다.)



뭔가 강력한 어떤것이 필요하다고 생각이 들어서, 이리 저리 찾아보니, WMI를 이용하는 방법을 찾았다. 

이전에 알던 WMI의 사용법은 Windows시스템에 대한 정보들을 얻어오는 방법으로 이용을 하곤 하였는데, 좀 다른 방식의 사용법으로 Process를 Kill하는 방법도 제공하고 있었다.


WMI를 사용하여 Process를 제거하는 방법은 다음과 같다.

WMIC process where name='myprogram.exe' delete


결과적으로는 그토록 중단시키려고 했던, 좀비 프로그램을 메모리에서 삭제해버리고야 말았다.


여러가지 방법들을 찾아서 실행하면서 이전에 모르던 많은 것들을 알게 되어서 나름 즐거웠다.

오랜만에 WMI를 살펴보니, Program 이름과 PID를 가져오는 방법도 제공하고 있는데, 좀 더 살펴보고 시간이 되면 정리해 봐야겠다.


공부할 것은 많다. 알게되는 것도 많지만, 잊어버리는 것도 그만큼 많은것 같다.


:
Posted by 행복상자
2018. 11. 18. 22:00

Windows의 kill 명령어 사용(1): Taskkill Tip & Tips/Windows2018. 11. 18. 22:00

최근에는 Windows 환경에서 프로그래밍을 할일이 거의 없다. 아니 정확하게 말하면, 윈도우 프로그램을 개발할 일이 없다.

개인적으로 어렸을때부터 쉽게 접했던 환경이었지만, 요즘은 Android나 iOS 환경에서 App을 개발하는 사람은 쉽게 찾아볼수 있으나, Windows 환경에서 WinForm기반의 .Net으로 C#이나 VB.Net로 개발하는 사람을 찾기 힘들다.


지난주부터 이전에 개인적으로 만들던 툴을 Windows 버전으로 만들 생각을 가지고, Visual Studio 2017을 이용해서 개발과 Debug를 하고 있는데, 가끔씩 Debug mode로 생성한 파일들이 메모리상에 그대로 떠 있어서, 다시 빌드 후에 실행이 되지 않는 상황이 반복되고 있어서, 인터넷을 검색하다 보니, "Taskkill"이라는 프로그램을 발견하게 되었다.


이 프로그램은 Microsoft에서 제공하는 것으로 Unix나 Linux에서 사용하는 'kill' 명령어와 같은 기능을 수행한다고 생각하면 된다.


Wikipedia에써는 다음과 같이 설명을하고 있다. 

   - https://en.wikipedia.org/wiki/Kill_(command)#Microsoft_Windows

간략하게 이야기 한다면, 

kill명령과 비슷한 MS의 명령으로는 "Stop-Process"라는 Cmdlet이 있는데, 이를  kill 이라는 이름으로 alias 해서 사용하고 있다. (마치 kill 처럼 사용한다.)

그리고, taskkill 이라는 프로그램이 있다. (Wiondows 어느 버전인지는 모르지만, Windows XP부터 지원되고 있는 것으로 보인다.)

 

사용법은 간단하다. DOS창에서  "taskkill /?" 을 타이핑하고 실행하면, 도움말이 아래와 같이 나타날 것이다.


Microsoft Windows [Version 10.0.17134.285]

(c) 2018 Microsoft Corporation. All rights reserved.


C:\Users\hazppyzoo>taskkill /?


TASKKILL [/S system [/U username [/P [password]]]]

         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]


Description:

    This tool is used to terminate tasks by process id (PID) or image name.


Parameter List:

    /S    system           Specifies the remote system to connect to.


    /U    [domain\]user    Specifies the user context under which the

                           command should execute.


    /P    [password]       Specifies the password for the given user

                           context. Prompts for input if omitted.


    /FI   filter           Applies a filter to select a set of tasks.

                           Allows "*" to be used. ex. imagename eq acme*


    /PID  processid        Specifies the PID of the process to be terminated.

                           Use TaskList to get the PID.


    /IM   imagename        Specifies the image name of the process

                           to be terminated. Wildcard '*' can be used

                           to specify all tasks or image names.


    /T                     Terminates the specified process and any

                           child processes which were started by it.


    /F                     Specifies to forcefully terminate the process(es).


    /?                     Displays this help message.


Filters:

    Filter Name   Valid Operators           Valid Value(s)

    -----------   ---------------           -------------------------

    STATUS        eq, ne                    RUNNING |

                                            NOT RESPONDING | UNKNOWN

    IMAGENAME     eq, ne                    Image name

    PID           eq, ne, gt, lt, ge, le    PID value

    SESSION       eq, ne, gt, lt, ge, le    Session number.

    CPUTIME       eq, ne, gt, lt, ge, le    CPU time in the format

                                            of hh:mm:ss.

                                            hh - hours,

                                            mm - minutes, ss - seconds

    MEMUSAGE      eq, ne, gt, lt, ge, le    Memory usage in KB

    USERNAME      eq, ne                    User name in [domain\]user

                                            format

    MODULES       eq, ne                    DLL name

    SERVICES      eq, ne                    Service name

    WINDOWTITLE   eq, ne                    Window title


    NOTE

    ----

    1) Wildcard '*' for /IM switch is accepted only when a filter is applied.

    2) Termination of remote processes will always be done forcefully (/F).

    3) "WINDOWTITLE" and "STATUS" filters are not considered when a remote

       machine is specified.


Examples:

    TASKKILL /IM notepad.exe

    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T

    TASKKILL /F /IM cmd.exe /T

    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"

    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe

    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *

    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"


대략적인 사용법은 아래의 "Examples"를 보면 이해가 쉽다.

명령어를 보면 "/M" 다음에 "imagename"를 넣게 되어 있는데, 프로그램 file명을 넣어 주면 된다.


TASKKILL /IM notepad.exe


PID를 가져오는 방법은 몇가지가 있는데, "작업관리자"를 실행해서 보는 방법과 "Powershell"를 이용하여 process의 PID를 가져오는 방법등이 있다.


이외에도 Windows에서 제공하는 "tasklist.exe"를 이용해서 가져오는 방법을 사용할 수도 있다.

나는 "tesklist.exe"를 이용하였는데, sygwin 설치하면 설치된 "grep"을 이용해서 가져왔다.

아래와 같이 "/T"옵션을 주게되면, 자식 프로세스도 같이 정리하는 기능을 사용하게 된다. 


TASKKILL /PID 6224 /PID 4716 /T


그리고, "/F" 옵션을 같이 사용하면 강제적으로 프로그램을 중단시키게 된다.



근데, 내가 위에서 이야기한 Debug mode실행시에 올라왔던 Process는 어떻게 되었을까?

결론적으로 아직 죽이지 못하고 있다. "/F" 옵션을 주었으나, 권한이 없다고 하면서 실패하고 있는 상황이다. 


그래서, 이제는 PowerShell에 있는 Stop-Process나 kill 명령을 이용하여 좀비 프로세스를 중단시켜 보려고 한다. 좀 정리가 되면, 이에 대해서는 다시 업데이트 할 예정이다.



[업데이트]

taskkill로 제거하지 못했던 process는 "wmic"에서 제공하는 기능을 이용해서 메모리에서 kill할 수 있는데, 가장 강력한 Windows에서 Process죽이기를 제공한다.

이에 대한 글은 "Windows의 kill 명령어 사용(2): Stop-Process and wmic"에 정리하였다.



:
Posted by 행복상자