UUID(Universally Unique Identifier) 는 개체를 식별하기 위한 고유 번호이다. 사람의 주민 번호와 비슷하다고 생각하면 될 것 같다.

 

UUID 에 대한 자세한 설명은 아래 주소에서 확인해 보자.

 

https://ko.wikipedia.org/wiki/%EB%B2%94%EC%9A%A9_%EA%B3%A0%EC%9C%A0_%EC%8B%9D%EB%B3%84%EC%9E%90

 

오라클 데이터베이스나 마이크로소프트 등에서는 GUID (Globally Unique Identifier) 라는 이름으로 사용한다고 한다.

 

https://ko.wikipedia.org/wiki/%EC%A0%84%EC%97%AD_%EA%B3%A0%EC%9C%A0_%EC%8B%9D%EB%B3%84%EC%9E%90

 

어쨌든 이런 UUID 는 다양한 프로그램에서 생성할 수 있는데~ 오늘은 내가 주로 사용하는 Powershell, Autohotkey, Python 에서 생성하는 방법에 대해 간단히 소개하려 한다.

 

Powershell 에서는 아래와 같은 명령어를 통해 GUID 를 생성 할 수 있다.

 

[guid]::NewGuid()

 

ToString() Method 를 통해 string 으로 표현할 수 있는데~ 아래와 같이 여러 개의 GUID 를 만들 수 있다.

 

1..10 | foreach { [guid]::NewGuid().ToString()}  


 

다음으로 Autohotkey 에서는 아래 명령으로 GUID 를 생성할 수 있다.

 

TypeLib := ComObjCreate("Scriptlet.TypeLib")

NewGUID := TypeLib.Guid

MsgBox %NewGUID%

 

이런 결과가 나오는 것을 확인 할 수 있다.

 

 

Python 등에서는 uuid 라는 모듈이 있으며~ 아래와 같이 간단하게 random 한 uuid 를 생성 할 수 있다.

 

import uuid

uuid.uuid4()


 

uuid 모듈에 대한 자세한 설명은 아래 매뉴얼을 참조하기 바란다.

 

https://docs.python.org/2/library/uuid.html

일을 진행한다 보면 매월 X 째 주 Y요일에 어떤 일을 처리해야 하는 경우가 있습니다.

 

이런 스케줄을 처리 할 때 당연히 이에 대해 계산하는 함수 등이 필요 할 겁니다.

 

오늘은 Powershell 을 사용하여 위에 얘기한 매월 X 째 주 Y요일을 찾아볼까 합니다.

 

고맙게도 아래 주소에 Powershell을 사용하여 매월 X 째 주 Y요일을 찾는 Get-WeekDayInMonth 라는 함수가 작성되 있더군요.

 

http://blog.tyang.org/2012/09/03/powershell-function-get-weekdayinmonth/

 

 


Function Get-WeekDayInMonth ([int]$Month, [int]$year, [int]$WeekNumber, [int]$WeekDay)

{

   

    $FirstDayOfMonth = Get-Date -Year $year -Month $Month -Day 1 -Hour 0 -Minute 0 -Second 0

      

    #First week day of the month (i.e. first monday of the month)

    [int]$FirstDayofMonthDay = $FirstDayOfMonth.DayOfWeek

 

    $Difference = $WeekDay - $FirstDayofMonthDay

 

    If ($Difference -lt 0)

    {

        $DaysToAdd = 7 - ($FirstDayofMonthDay - $WeekDay)

    } elseif ($difference -eq 0 )

    {

        $DaysToAdd = 0

    }else {

        $DaysToAdd = $Difference

    }

 

    $FirstWeekDayofMonth = $FirstDayOfMonth.AddDays($DaysToAdd)

 

    Remove-Variable DaysToAdd

 

    #Add Weeks

    $DaysToAdd = ($WeekNumber -1)*7

 

    $TheDay = $FirstWeekDayofMonth.AddDays($DaysToAdd)

 

    If (!($TheDay.Month -eq $Month -and $TheDay.Year -eq $Year))

    {

        $TheDay = $null

    }

 

    $TheDay.ToString("yyyy년 MM월 dd일")

}

 

위 주소의 원본 함수에서 년도 표기만 수정 했습니다.

 

위 함수의 입력 인자 중 WeekDay 는 X 째 주를 의미 합니다. WeekNumber 는 Y 요일을 의미 하며 일요일이 0 입니다.

 

따라서 월요일은 1, 화요일은 2 … 가 될 것입니다.

 

위에 소개한 Get-WeekDayInMonth 함수를 활용하여 2016 년 1월부터 12월 까지의 2째주 수요일을 찾아보겠습니다.

 

2째주 이므로 WeekDay 에 2 를 수요일이므로 WeekNumber 에 3을 입력 합니다.

 

다음과 같이 간단하게 코딩하면~ 결과를 얻을 수 있습니다.

 

$month = 1..12

 

$buffer =@()

 

foreach ($mon in $month)

{

      

    $fist = Get-WeekDayInMonth $mon 2016 2 3

 

    $buffer += $fist

}

 

$buffer

 

실행해보니 다음과 같은 결과가 나오네요.


+ Recent posts