반응형

안녕하세요. 오늘은 선택된 레이어를 화면의 중앙으로 이동시키는 포토샵 스크립트를 작성해 보겠습니다. 

와이프가 한동안 쇼핑몰 상세페이지 디자인 작업을 재택근무 형식으로 했었는데요. 옆에서 작업하는 것을 보니 가장 많이 하는 반복 작업중에 하나가 불러들인 이미지를 리터칭 한뒤 화면의 중앙으로 이동시키는 작업이었습니다. 포토샵에 기본적으로 정렬 기능이 있기는 하지만 기준이 되는 다른 개체를 함께 선택해주어야 한다든가 하는 번거로움이 있어 보이더군요. 

상세페이지 하나에 정말 어마어마하게 많은 사진이 올라가기도 하기 때문에 이런 단순 반복 작업을 빠르게 처리할 수 있게 되면 매우 효율이 높아지게 됩니다. 그래서 얼른 만들어 주었습니다. 스크립트를 실행하면 현재 레이어의 이미지가 화면의 중앙에 똭! 위치하게 말이죠.

이미지를 간단하게 화면의 중앙으로 이동한 모습

먼저 코드를 작성하려면 포토샵 스크립트에서 제공하는 두가지 명령을 알아야 합니다.

  • Layer.bounds
    return :  [LEFT_X , TOP_Y, RIGHT_X, BOTTOM_Y ]

현재 레이어의 이미지에 해당되는 영역정보를 가져오는 프라퍼티 입니다. 해당 명령을 이용하여 이미지의 좌상단 좌표와 우하단 좌표를 알수 있으며 결과 값은 배열로 리턴됩니다.

  • Layer.translate(deltaX, deltaY)

이 코드는 해당 레이어를 이동시켜주는 매소드 입니다. deltaX 만큼 가로로 이동되며 deltaY만큼 세로로 이동됩니다.

 

자 중요한 코드는 다 알았습니다. 코딩을 해보죠.

// 포토샵의 unit 을 Pixel 로 설정한다. 유닛이 다르면 전혀 다른 결과가 나오게 된다.
preferences.rulerUnits = Units.PIXELS

var cDoc = app.activeDocument

//현재 활성화된 레이어를 cLyr 라는 변수에 저장함
var cLyr = cDoc.activeLayer

// layer.bounds
// 현재 레이어의 바운드 박스 영역 [좌측끝 X, 상단 Y, 우측 끝 X, 하단 Y] 의 순서로 배열 형태의 결과를 받는다.
var cb = cLyr.bounds

// 이미지의 넓이
var imgWidth = cb[2] - cb[0]

// 이동해야할 거리(deltaX)를 구해봅니다.
// 다큐먼트 전체의 중앙위치 - 이미지의 넓이의 반 ==> 이동해야할 이미지의 최종 좌측 끝 위치
// deltaX = 이동해야 할 이미지의 최종 좌측 끝 위치 - 현재 이미지의 좌측 끝 위치
var deltaX = (cDoc.width / 2) - (imgWidth / 2) - cb[0]

// 화면의 중심으로 이동 
// Layer.translate(deltaX, deltaY)
cLyr.translate(deltaX,0)

간단하죠?

코드안에 주석으로 설명을 남겨 두었으니 읽어 보시면 이해가 되실 것 같습니다. 

끝부분에 deltaX 를 구하기 위하여 간단한 계산이 포함되어 있습니다.

하는김에 머리도 풀 겸 몇가지 deltaX 를 구하는 계산식을 추가해 볼까요?

  • 이미지를 화면 좌측 끝으로 보내기 위한 deltaX
  • 이미지를 화면 우측 끝으로 보내기 위한 deltaX
  • 이미지를 화면 가로 영역에 대한 비율 (%) 로 이동시켜 위치하기 위한 deltaX
  • 비율로 이동할 경우 화면 바깥으로 빠져나가지 않도록 하기 위한 코드

요정도면 화면 내에서 레이어를 자유롭게 이동시킬 수 있을 것 같습니다.

코드로 한번 볼까요?

//현재 레이어의 영역을 먼저 구해봅시다.
var cb = cLyr.bounds;

// 이미지의 넓이
var imgWidth = cb[2] - cb[0];


// 이미지를 좌측 끝으로 이동하기 위한 deltaX
deltaX = cb[0] * -1 ;


// 이미지를 우측 끝으로 이동하기 위한 deltaX
deltaX = cDoc.width - imgWidth - cb[0]  // imgWidth = cb[2] - cb[0];



// 이미지의 위치를 화면 기준으로한 percent 로 입력 받아 이동하기 위한 deltaX
var psnt = 30;
deltaX = cDoc.width * psnt / 100.0 - (imgWidth / 2) - cb[0];


// 이미지가 화면 밖으로 나가지 않도록 해보자
if ((deltaX + cb[0]) < 0)
{
    // 이미지가 화면 좌측 밖으로 나간다면?
    deltaX = cb[0] * -1;
}else if ((cb[2] + deltaX) > cDoc.width)
{
    // 이미지가 화면 우측 밖으로 나간다면?
    deltaX = cDoc.width - imgWidth - cb[0];
}

세로의 경우도 조금만 응용하면 가능하겠죠?

요렇게 하면 간단한 코드로 레이어를 화면의 중앙으로 옮기는 것이 가능합니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

이상 오늘의 스크립트 "레이어를 화면 중앙으로 가져오기" 를 마치겠습니다.

 

2019/12/04 - [DEV/Adobe Script] - [포토샵스크립트] Instagram 용 파노라마 사진 자르기

 

[포토샵스크립트] Instagram 용 파노라마 사진 자르기

Instagram, 요즘 가장 핫한 SNS 가 아닐까 싶습니다. 지하철에서 무심코 주변을 보니 눈에 보이는 핸드폰 화면 마다 Instagram 화면이 보이는 것을 보고 깜짝 놀랐습니다. 난 안하는데... 어쨌든 Instagram 계정을..

diy-dev-design.tistory.com

 

요렇게 만들어진 스크립트를 단축키에 등록해놓고 사용하시면 빠르게 해당 기능을 적용하는 것이 가능합니다.

https://diy-dev-design.tistory.com/47

 

[포토샵스크립트] 스크립트 단축키로 실행하기

안녕하세요. 오늘은 자신이 작성하였거나 웹에서 다운로드 받은 스크립트를 간단하고 빠르게 실행하는 방법을 알려드리겠습니다. 우선 스크립트를 실행하는 방법은 몇가지가 있는데 다음과 같습니다. Extend Scrip..

diy-dev-design.tistory.com

 

 

포토샵으로 셀렉션을 지정하고 싶다면?

https://diy-dev-design.tistory.com/37

 

[photoshop script] 포토샵 스크립트로 특정 영역 선택하기

이번 강좌에서는 스크립트를 이용하여 selection 을 만들어 보고 만들어진 selection 영역에 색상을 fill 하는 스크립트를 작성하여 보도록 하겠습니다. 단순한 기능이지만 알아두면 유용하게 사용될 수 있답니다...

diy-dev-design.tistory.com

 

 

반응형
반응형

갤럭시 S10e 카메라 숨김용 배경화면을 만들어 보았습니다.

NOTE10 보다는 덜하지만 S10e 도 스크린 안으로 카메라가 들어오게 되면서 어느순간 눈에 거슬리는 것은 어쩔수 없네요. 또 배경화면들이 왜 다 유료인지... 별것도 없는데 말이죠.

어쨌든 지난 노트 10 용 정동남 버전 탈출하기에 호응이 좋아 와이프 핸드폰인 S10e 버전에 맞는 카메라 숨김 배경 화면을 만들어 보았습니다.

 

링크는 마음껏 퍼가셔도 상관은 없는데 이미지만 따로 올리시지만 말아주세요~

와이프 핸드폰에 적용해본 사진입니다. 마음에 드네요 ^^

[Galaxy S10e] 카메라 숨김 배경화면 - 홈화면

 

[Galaxy S10e] 카메라 숨김 배경화면 - 잠금화면

 

와이프도 마음에 들어해서 다행입니다.

아래 풀사이즈 이미지를 올리니 다운로드 받으셔서 사용하시면 됩니다.

[Galaxy S10e wallpaper] 배터리 광탈 배경화면
[Galaxy S10e wallpaper] ladybug
[Galaxy S10e wallpaper] 테니스 테니스 테테테레테

 

[Galaxy S10e wallpaper] 주사위
[Galaxy S10e wallpaper] 카멜레온
[Galaxy S10e wallpaper] 밥은 먹고 다니냐

 

[Galaxy S10e wallpaper] circuit
[Galaxy S10e wallpaper] snow man
[Galaxy S10e wallpaper]  full moon

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

노트10용 배경화면은 아래 링크에서 다운로드 받아서 사용하시면 됩니다.

https://diy-dev-design.tistory.com/40

 

[wallpaper] 갤럭시 노트 10 카메라 숨김 배경화면

정동남 버전 으로 유명한 갤럭시 노트 10을 샀다. 아니 유명한 줄 모르고 샀는데 유명한걸 알게된건 사용한 날짜가 지날수록 자꾸 눈에 걸리는 정중앙 카메라가 신경이 쓰이면서 부터랄까... 와 .. .. 엄청거슬려..

diy-dev-design.tistory.com

https://diy-dev-design.tistory.com/42

 

[wallpaper] 갤럭시 노트10 카메라 숨김 배경 vol 2

갤럭시 노트 10의 정동남 스타일을 말끔히 치워버릴 수 있는 배경을 지난 포스트에 올렸었는데 만드는 것도 재미있어 몇장 더 만들어보았습니다. 지난 포스트의 이미지 보기 https://diy-dev-design.tistory.com/4..

diy-dev-design.tistory.com

 

재미있으셨다면 공감~

친구분에게 추천 드린다면 퍼가기~

반응형
반응형

갤럭시 노트 10의 정동남 스타일을 말끔히 치워버릴 수 있는 배경을 지난 포스트에 올렸었는데 만드는 것도 재미있어 몇장 더 만들어보았습니다.

지난 포스트의 이미지 보기

https://diy-dev-design.tistory.com/40

 

[wallpaper] 갤럭시 노트 10 카메라 숨김 배경화면

정동남 버전 으로 유명한 갤럭시 노트 10을 샀다. 아니 유명한 줄 모르고 샀는데 유명한걸 알게된건 사용한 날짜가 지날수록 자꾸 눈에 걸리는 정중앙 카메라가 신경이 쓰이면서 부터랄까... 와 .. .. 엄청거슬려..

diy-dev-design.tistory.com

이렇게 적당히 편집된 이미지를 이용하여 화면 중앙 상단의 카메라를 멋지게 숨길 수 있습니다.

오늘은 긴 글 없이 바로 이미지 올립니다. (노트 10 화면과 1:1 사이즈로 올리니 다운받아 사용하세요)

[galuxy note 10] [wallpaper] luna eclips
[galuxy note 10] [wallpaper] lady bugs

 

[galuxy note 10] [wallpaper] dunk
[galuxy note 10] [wallpaper] dices
[galuxy note 10] [wallpaper] spangles
[galuxy note 10] [wallpaper] eye of chameleon
[galuxy note 10] [wallpaper] 밥은먹고 다니냐
[galuxy note 10] [wallpaper] 여행이 영어로 뭐지? 
[galuxy note 10] [wallpaper] circuit
[galuxy note 10] [wallpaper] luna eclips

 

다음번 세트도 기대해 주세요~

공감 꾹!

 

갤럭시 s10 5G 도 만들어 보았습니다.

https://diy-dev-design.tistory.com/53

 

[wallpaper] Galaxy s10 5G 카메라 숨김 배경화면

이번 포스트는 갤럭시 s10 5G 카메라 숨김 배경화면 입니다. 재미있는 배경화면을 좀 많이 만들까 했는데 저작권 문제도 있을 듯 해서 특정 회사의 캐릭터들은 사용하지 않기로 하였습니다. 예쁜 배경화면들과 많..

diy-dev-design.tistory.com

 

 

 

 

반응형
반응형

초등수학학습지_저학년용.xls
0.06MB

 

이번 포스트를 통해 꼬마아이들의 공공의적 이 될런지도 모릅니다.

바로 초등 저학년 연산문제를 끝도 없이 만들수 있는 파일을 준비했기 때문입니다. 지난번 포스트에서 연산문제를 만드는 VBA 를 소개해 드렸었는데요.

https://diy-dev-design.tistory.com/38

 

[VBA] 초등학교 저학년 수학 연산 문제 자동으로 만들기

안녕하세요. 이번 강좌에서는 VBA 를 이용하여 초등학교 저학년 아이를 위한 연산문제를 자동으로 내주는 스크립트를 작성해 보겠습니다. VBA 를 좀 해봤다 하면서 막상 일상 생활에 사용하려면 사용할데가 마땅히..

diy-dev-design.tistory.com

 

해당 포스트로 정말 문제를 내려면 VBA를 작성하셔야만 자동으로 문제를 내는것이 가능하죠.

그런데 사실 제 블로그를 보시는 분들이 다 실제 개발을 하지는 않지 않겠습니까? 그래서 만들어진 엑셀 파일을 그냥 공유하려고 합니다. 물론 업로드하는 엑셀 파일에 사용된 코드에 대한 설명도 곁들여 보겠습니다.

 

지난번에 올린 것에 조금 업데이트 된 내용은 아래와 같습니다.

  • 버튼을 이용하여 문제를 바로 업데이트 할 수 있도록 할 것
  • 더한 결과의 합이 10 이상인 문제도 낼 수 있을 것 (원하는 경우에만)
  • 10의 자리와 1의 자리 덧셈을 낼 수 있을 것
  • 문제의 난이도를 사용자가 설정할 수 있을 것

요정도의 기능을 수행할 수 있는 버전으로 만들어 보았습니다.

 

복잡한 코드에 관심이 없으신 분은 바로 첨부파일 다운로드 및 공감 부탁드립니다. ㅋ 

맘카페에 퍼날라 주셔도 감사하겠습니다. 비싼 학습지 신청하지 마시고 사랑하는 마음으로 직접 내주시길 바랍니다.

 

먼저 파일을 여시게 되면 아래와 같은 경고창이 나올 수 있습니다.

제가 만든 매크로가 동작해야 하므로 콘텐츠 사용을 클릭해 주세요. 위험하지 않으니 걱정하지 않으셔도 됩니다.

우측의 버튼을 이용하여 연산 문제를 자동으로 새로 내는 것이 가능하다.

 

우측의 버튼은 엑셀이 업데이트 되면서 기본 기능에서는 빠진 기능을 이용해야 만들 수 있습니다. 기본적으로는 숨겨져 있기 때문에 설정 항목에서 단추를 만드는 기능을 꺼내야 합니다.

나중에 버튼(단추)을 만드는 예제는 따로 준비해서 올리겠습니다. 

VBA 에디터에 각 버튼에 해당되는 함수를 만든 뒤에 각 버튼에 만들어놓은 함수를 연결하는 방식으로 작업이 되었습니다. 코드를 보면 아래와 같습니다. 버튼별로 함수를 만들었기 때문에 조금 길이가 있습니다.

더보기

코드가 조금 길기 때문에 접은 글로 넣어 봤습니다.

Sub makeMath_under10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_over10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB < 10)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB < 10)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub

Sub makeMath_under100_easy()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 20) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 20) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_under100_normal()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_under100_hard()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 90) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 90) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub

 

요렇게 코드가 모두 작성이 되셨다면

단추마다 매크로를 연결해 줍니다.

단추에서 마우스 우클릭 후 매크로 지정
자신이 만든 매크로함수 중 연결할 대상을 선택해 준다.

 

이런식으로 함수를 연결해 주면 됩니다.

어렵지 않죠?

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

엑셀에서 버튼을 이용하여 매크로를 실행시키는 예제는 아래 포스트를 참고해 주세요.

https://diy-dev-design.tistory.com/59

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

2020/06/22 - [DEV/VBA] - [vba] 초등학교 연산 자동 문제집 - 곱셈 추가

 

[vba] 초등학교 연산 자동 문제집 - 곱셈 추가

안녕하세요 주인장입니다. 코로나로 인한 개학연기로 아이들이 집안에서만 딩굴딩굴 거려 답답하신가요? 아이들에게 신나는 연산 문제를 내 주는건 어떨까요? ?? 는 아니고 VBA 로 제가 그동안 ��

diy-dev-design.tistory.com

 

반응형
반응형
정동남 버전 으로 유명한 갤럭시 노트 10을 샀다.

아니 유명한 줄 모르고 샀는데 유명한걸 알게된건
사용한 날짜가 지날수록 자꾸 눈에 걸리는 정중앙 카메라가 신경이 쓰이면서 부터랄까...




..

..


엄청거슬려...

그런데 지나가던 팀장님이 본인 폰을 쓱 보여주시는데 (팀장님은 노트10+)

우왘 멋져!!

인크레더블 엄마가 똭 보이는 것이었다.

그래서

나도 만들었다. 우린 DIY 덕후 아니던가.

자 만들어진 결과는 아래와 같다.  ㅋㅋ

 

 

 


올ㅋ
아래는 제가 직접 만든 이미지 입니다. 다운 받으셔서 사용하세요~

회사에서 점심시간에 후딱 만드느라 신경을 많이 쓰지는 못했는데 재밌네 ㅋ

받으셔서 맘껏 사용하세요.


추가 이미지도 제작하여 보았습니다. vol2 : https://diy-dev-design.tistory.com/42
 

[wallpaper] 갤럭시 노트10 카메라 숨김 배경 vol 2

갤럭시 노트 10의 정동남 스타일을 말끔히 치워버릴 수 있는 배경을 지난 포스트에 올렸었는데 만드는 것도 재미있어 몇장 더 만들어보았습니다. 지난 포스트의 이미지 보기 https://diy-dev-design.tistory.com/4..

diy-dev-design.tistory.com

 

갤럭시 s10 5G 도 만들어 보았습니다. : https://diy-dev-design.tistory.com/53

 

[wallpaper] Galaxy s10 5G 카메라 숨김 배경화면

이번 포스트는 갤럭시 s10 5G 카메라 숨김 배경화면 입니다. 재미있는 배경화면을 좀 많이 만들까 했는데 저작권 문제도 있을 듯 해서 특정 회사의 캐릭터들은 사용하지 않기로 하였습니다. 예쁜 배경화면들과 많..

diy-dev-design.tistory.com

 

존윅 핸드폰 배경화면 (Galaxy s10 시리즈 공용) : https://diy-dev-design.tistory.com/58

 

[wallpaper] Galaxy S10 배경화면 '존윅'

화끈함의 끝판왕 존윅 (JOHN WICK) 배경화면을 만들어 보았습니다. 아직 3편은 보지 못하였는데요. 빨리 보고 싶은 영화 1순위에 있다고해도 과언이 아닌 영화입니다. 존윅의 처참한 상황과 분위기를 폰 배경화면..

diy-dev-design.tistory.com

 

간지나는 영화 매트릭스 배경화면 입니다. (Galaxy s10 시리즈 공용) : https://diy-dev-design.tistory.com/56

 

[wallpaper] Galaxy s10 series 배경화면 - MATRIX RELOADED

타이포 그래픽으로 제작한 갤럭시 S10 시리즈 배경화면 입니다. 문자의 이미지를 문자로 형상화 한 그래픽을 이용하여 배경화면을 만들어 보았는데요. 매트릭스의 경우 영화의 메인 컨셉 이미지와도 매칭되는 느낌..

diy-dev-design.tistory.com

 

2019/12/05 - [DESIGN] - [Wallpaper] 갤럭시 노트 10 카메라 숨김 배경화면 'JOKER'

 

[Wallpaper] 갤럭시 노트 10 카메라 숨김 배경화면 'JOKER'

영화 조커를 봤습니다. 정말 올해 기생충이 아니었다면 정말 최고의 영화가 아니었을까 생각되네요. 호아킨 피닉스의 연기도 최고라 말할수 있겠고 영화의 구성이나 연출도 너무 훌륭했습니다. 고담 시티가 왜 범..

diy-dev-design.tistory.com

 

반응형
반응형

"중국에서 배터리 구입이 안된다고???!!?!?!??"

 

알리에서 RC카 (UDR) 용 배터리를 구입하고 한달여가 지나 물건이 오지 않아 마음을 졸이다가 인터넷에 찾아보니 중국에서 배터리 배송이 되지 않는다는 것이었다.

중국에서 일어난 항구 폭발 사고 때문이라고 하는데 이후 중국 배터리 판매자들이 한국으로 배송을 하지 않는다는 문구를 올려놓은 것을 본기억이 났다. 이제야...

 

내가 구입한 배터리는 UDR에 사용하기 위한 2S1P 7.4V 80C 배터리인데 국내 가격에 비하면 알리가 저렴한건 사실이기 때문에 고민도 없이 구매를 해버린것이 화근이었다. 

중간에 알리 배송 추적 시스템에서 배송 완료로 추적 상태가 바뀐것도 내 불안감을 증폭시켰다.

 

"아니 뭔 배송완료??? 나 안받았다고!"

 

결국 판매자에게 문의를 했고 판매자는 '니 물건 아직 도착안했고 가고 있으니 걱정말고 좀더 기다려 봐라.' 고 했다. 

매일 같이 퇴근만 하면 택배가 온게 있나 현관 주변을 샅샅히 뒤졌으나 물건은 오지 않은채 또 일주일이 지나는 와중에 

 

똭!

 

무려 EMS 로 보내주신 알리 판매자 느님

 

왔다!

헐 ㅋ

가격은 다운 시켜놨지만 정확히 물품명에 7.4V 80C 6000mah 라고 적어 보내주셨었구나.

땡큐베리감사

 

 

물건은 이렇게 안전한 비닐백에 낱개로 각각 담아져 있었다.

 

포장을 뜯어보면 다시 고운 박스가..

 

박스안에는 하드케이스로 마감된 아름다운 배터리가 똭!

 

중국에서 배터리 안온다는거 다 맞는말은 아니구만 기래 ㅋ

 

참고로 UDR에 사용하려면 Traxxas 전용 잭으로 작업을 해주어야 한다.

traxxas 잭으로 되어 있는 제품도 있었는데 가격이 만만한 제품을 찾다 보니 이 제품을 구입하게 되었다.

 

나중에 traxxas 잭 작업을 하게 되면 작업 과정도 올리겠습니다~

 

그럼 이만

 

 

 

 

 

반응형
반응형

안녕하세요. 이번 강좌에서는 VBA 를 이용하여 초등학교 저학년 아이를 위한 연산문제를 자동으로 내주는 스크립트를 작성해 보겠습니다. VBA 를 좀 해봤다 하면서 막상 일상 생활에 사용하려면 사용할데가 마땅히 떠오르지 않죠? 초등학교 저학년 자녀가 있으신 분은 수학 연산 학습지를 한번 살펴보세요. 별거 없습니다. 간단한 문제 들이 그저 나열되어 있을 뿐이죠.

이제 우리는 VBA 를 조금 다룰 줄 알게 되었기 때문에 VBA 를 이용하여 사랑하는 아이를 위한 연산 문제를 만들어주는 스크립트를 작성해 보려고 합니다.

 

현재 활성화된 시트와 특정 영역을 설정하는 방법은 앞선 포스트에서 다루었으니 해당 포스트를 참고하시면 되고요. 

 

[vba] 자동화를 위하여 엑셀의 영역 설정하는 방법

엑셀을 사용하는 목적 자체가 근본적으로 문서를 만들기 위함은 아니다 보니 세로 또는 가로로 굉장히 길게 데이터가 나열되어 있는 경우가 많습니다. 우리는 vba 를 이용하여 자동화를 할 것이기 때문에 어디부..

diy-dev-design.tistory.com

 

오늘 작성할 포스트에서 새로 나타나는 특별한 함수, 반복문이 있습니다. 

  • Randomize / Rnd : 임의의 숫자를 만들어 내는 함수
  • Int : 소수형 숫자를 정수형으로 변경해주는 함수
  • Do ... While : 어떤 조건이 만족할 때까지 계속해서 반복실행을 하는 함수

 

아래와 같은 기능을 개발할 예정입니다.

  • 현재 선택된 시트에 동작하도록 한다.
  • 두개의 임의의 숫자를 만들어 지정한 칸에 붙인다.
  • 만약 두개의 숫자의 합이 10이 넘는다면 10이 넘지 않는 두번째 숫자를 구한다. (쉬운버전)
  • 첫번째 숫자 뒤에는 "+" 기호를 넣고 두번재 숫자 뒤에는 "=" 기호를 넣는다.

 

자 먼저 함수를 정의하고 입력할 시트와 칸을 지정, 그리고 숫자 두개를 지정하겠습니다. 감이 오시나요?

Sub makeMath_under10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
End sub

 요렇게요.

아직 아무런 동작도 실행되지는 않지만 필요한 변수는 다 설정했고 입력할 시트와 셀도 지정을 했습니다.

자 이제 한번에 갑니다. 조금 복잡할수도 있지만 잘 보세요~ ( '로 시작하는 문장은 주석입니다. )

Sub makeMath_under10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    ' 이 함수에서 난수를 사용할 것임을 선언함'
    Randomize
    
    'Rnd 라는 함수에서 난수 0.00001 ~ 0.99999 사이의 숫자를 생성'
    '만들어진 9 이하의 숫자를 정수로 변경'
    '최종 만들어진 숫자에 1 을 더함 : 0이 나올수 있기 때문에'
    '만들어진 숫자를 numA 에 적용함'
    numA = Int(Rnd * 9) + 1
	
    'Do 와 Loop 사이의 수식을 While 뒤에 나오는 조건이 만족하는 동안 계속 반복함'
    Do
    	numB = Int(Rnd * 9) + 1
    Loop While (numA + numB > 10)
    
    
    'rngA 를 기준으로 우측으로 각 칸마다 필요한 값을 입력'
    rngA.Offset(0, 0).Value = numA
    rngA.Offset(0, 1).Value = "+"
    rngA.Offset(0, 2).Value = numB
    rngA.Offset(0, 3).Value = "="
    
End sub

주석으로 설명을 했습니다만 어려울 수 있는 부분만 추가 설명을 하겠습니다.

Int( 숫자 ) 라는 함수는 '숫자' 에 해당하는 어떤 수 도 정수형으로 변경해 주는 함수 입니다. 

Rnd 를 통해 만들어진 소수형 숫자에 9를 곱해 최대 9가 나올수 있도록 범위를 확장해 준 뒤 Int 라는 함수를 이용하여 정수로 변경해주는 문장입니다. 만약 Rnd 에서 0.00001 이런 값이 나오는 경우 1 미만의 값이 나올 수 있기 때문에 제일 마지막에 + 1 을 해주어 절대로 0은 나오지 않도록 작성하였습니다.

그 뒤에 나오는 Do ... Loop While 부분이 조금 어려우실 수도 있겠는데요. 조금 생각해보면 그다지 어렵지는 않습니다.

Do 와 Loop 사이에 어떤 문장을 계속 반복하라는 뜻인데요. 이 반복은 어떤 조건이 만족할때만 반복시키게 됩니다. 여기에서는 (numA + numB > 10) 이라는 조건을 걸었죠. 말하자면 Do Loop 사이에서 구해진 numB 라는 값과 그 전에 구해진 numA 라는 값을 더했을 때 10이 넘는다면 numB 를 다시 구하도록 하는 역할을 합니다. 만약 두 숫자를 더했을 때 10이 넘지 않는 다면 반복문은 종료 되고 그 다음 줄로 빠져나오게 됩니다. 이렇게 하면 numA 와 numB를 더했을 때 절대로 10이 넘지 않게 됩니다. 저희 둘째가 아직 어려서 10 넘는 더하기는 무리이기 때문에 10이 넘지 않도록 하였지만 만약 10이 넘는 덧셈이 필요하시면 해당 부분을 제거하시면 됩니다. 

조금 응용을 해보시면 반드시 10이 넘는 계산만 만드시는 것도 가능하겠죠?

위의 스크립트를 실행하면 아래와 같이 작성이 됩니다.

전 한 페이지에 문제를 좀더 내려고 합니다. For 문을 이용해서 반복적으로 문제를 계속해서 만들어 나갈 겁니다.

Sub makeMath_under10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
        
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub

요렇게 작성했습니다. 이렇게 만들고 코드를 실행하면 아래와 같은 한페이지에 총 16 문제가 들어있는 문제집이 만들어 집니다.

그런데 모양이 보기에 좋지 않죠? 음...

이제 함수를 실행할때 마다 문제가 새로 만들어 질 건데요. 그 전에 화면을 좀 다듬어 봐야 겠네요.

출력할 용지도 고려하고 아이가 볼 문제니 글자 크기도 좀 키우고 해야 겠죠?

최종으로 만들어진 화면입니다.

스크립트를 실행할 때 마다 문제가 계속 바뀌니 항상 새로운 문제를 낼 수 있게 되었습니다.

 

물론 아이가 좋아할지는 미지수입니다.

 

 

숫자를 쓴걸 보니 그다지 재미는 없나 보네요. ( 0 이 아니고 10을 쓴거네요. 1이 아주 작게 ㅋ)

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

그럼 이만~

 

2020/04/17 - [DEV/VBA] - [vba] 초등학교 연산 문제 자동 출제, 이번엔 뺄셈에 도전

 

[vba] 초등학교 연산 문제 자동 출제, 이번엔 뺄셈에 도전

VBA를 이용하여 초등학교 연산 문제를 내는 것을 만들어 올린적이 있었습니다. 개학이 늦어지면서 집안에서 아이들 공부시키랴 밥해먹이랴 엄마들이 고생이 많을텐데요. 그사이 아이들의 학습 진도가 늦어질까 걱..

diy-dev-design.tistory.com

2019/09/10 - [DEV/VBA] - [VBA] 엑셀로 초등학교 저학년 문제집 만들기 (자동버전)

 

[VBA] 엑셀로 초등학교 저학년 문제집 만들기 (자동버전)

이번 포스트를 통해 꼬마아이들의 공공의적 이 될런지도 모릅니다. 바로 초등 저학년 연산문제를 끝도 없이 만들수 있는 파일을 준비했기 때문입니다. 지난번 포스트에서 연산문제를 만드는 VBA 를 소개해 드렸었..

diy-dev-design.tistory.com

 

반응형
반응형

이번 강좌에서는 스크립트를 이용하여 selection 을 만들어 보고 만들어진 selection 영역에 색상을 fill 하는 스크립트를 작성하여 보도록 하겠습니다. 단순한 기능이지만 알아두면 유용하게 사용될 수 있답니다.

GUI  를 하시는 분들 중에는 레이어의 영역을 가이드문서에 작성하기 위하여 별도의 레이어에 영역정보만 박스를 만들어서 컬러를 채워넣는 경우가 종종 있는데요. 이런 상황에 아주 유용하게 사용될 수 있을 듯 합니다.

먼저 이번에 사용할 개체는 

  • Document.Selction
  • Selection.fill

이 두가지 요소 입니다.

스크립트를 이용하여 셀렉션을 만들어 줄때 주로 사용하는 방법은 바운드 박스 영역을 설정해 주는 방법입니다.

 

이미지 영역의 네점 A,B,C,D

위와 같은 형태의 사각형 영역을 선택한다고 하면 네 점에 해당되는 각 좌표를 이용하여 바운드 박스를 생성해 주어야 하는데요. 

배열 개체로 아래와 같이 입력이 되어야 합니다.

boundbox = [A, B, C, D, A]; // 다섯개의 점을 이용하여 박스를 만들어 주는 것이죠.

각 점은 [x, y] 의 형태로 구성된 좌표데이터가 입력이 되어야 합니다.

즉, 

boundbox = [ [A_x,A_y] , [B-x, B-y] , [C_x, C_y] , [D_x, D_y] , [A_x, A_y] ] ;

와 같은 형태로 입력이 되면 됩니다.

임의의 좌표를 이용하여 셀렉션을 만들어보면 아래와 같습니다.

// 현재 활성화된 다큐먼트를 cDoc 에 저장
var cDoc = app.activeDocument;
	
// 기존 설정된 선택영역이 있는 경우 해제하여줌
cDoc.selection.deselect();
	
var cSelection = cDoc.selection.select([[10,10],[50,10],[50,30],[10,30],[10,10]]);

이런 방식으로 영역을 선택하는 것이 가능한데요.

약간의 코드 수정을 하면 좀더 쉽고 유연하게 선택영역을 만드는 것이 가능합니다.

 

지정된 좌표를 중심으로 지정한 반경만큼 선택하는 코드

// doc 는 선택영역을 생성할 도큐먼트를, pt는 중심 좌표를, Width 는 반경을 지정
function fill_rect(doc, pt, width) 
{
	var c = width*0.5;
	
	doc.selection.deselect();
	doc.selection.select([	
	[pt[0]-c,pt[1]-c],
	[pt[0]+c,pt[1]-c],
	[pt[0]+c,pt[1]+c],
	[pt[0]-c,pt[1]+c],
	[pt[0]-c,pt[1]-c]
	]);
}

// 64,64 를 중심으로 가로세로 32 픽셀의 선택영역을 생성

fill_rect(app.activeDocument, [64,64], 32);

 

 

지정한 좌표를 기준으로 폭과 높이를 지정하여 선택영역을 생성하는 함수

// doc 는 선택영역을 생성할 도큐먼트를, pt는 중심 좌표를, Width 는 반경을 지정
function fn_fill_rect_byWidth_Height(doc, pt, width, height) 
{
	doc.selection.deselect();
	doc.selection.select([	
	[pt[0]      ,pt[1]       ],
	[pt[0]+width,pt[1]       ],
	[pt[0]+width,pt[1]+height],
	[pt[0]      ,pt[1]+height],
	[pt[0]      ,pt[1]       ]
	])
}

//[0,0]을 기준으로 가로 640, 시로 480 크기의 선택영역을 만들기

fn_fill_rect_byWidth_Height(app.activeDocument, [0,0], 640, 480);

 

이와 같이 바운드 박스 형식을 이용하여 선택영역을 만들때 입력되는 좌표의 값을 수정해주면 원하는 형태의 선택영역을 손쉽게 만들어 낼 수 있습니다. 본인이 늘 사용하는 방식, 본인 업무에 맞는 방식으로 코드를 작성하여 사용이 가능해 지겠죠.

어도비 사이트에 가시면 레퍼런스가 배포되어 있습니다. 어도비 사이트에서 배포되는 스크립트 레퍼런스에서 Selection 개체가 어떤 프라퍼티를 갖고 어떤 메소드를 갖는지 확인해 보시면 응용할 수 있는 요소가 아주 많다는 것을 알 수 있습니다.

다음번에 또 유용한 스크립트를 가지고 다시 포스트를 올리겠습니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

감사합니다.

 

 

 

 

스크립트를 이용하여 레이어의 컨텐츠 영역을 선택하고 싶다면?

2020/01/23 - [DEV/Adobe Script] - [포토샵스크립트] 레이어 컨텐츠 영역 선택하기

 

[포토샵스크립트] 레이어 컨텐츠 영역 선택하기

오늘 소개해 드릴 스크립트는 간단한 내용이지만 일반 적인 스크립트상으로 개발이 불가능하기에 경우에 따라는 아주 유용한 스크립트가 되겠습니다. 우리는 작업 중 상당한 빈도로 포토샵 레이어의 컨텐츠 영역만..

diy-dev-design.tistory.com

2020/04/02 - [DEV/Adobe Script] - [포토샵스크립트] color fill 하기

 

[포토샵스크립트] color fill 하기

이번 강좌에서는 포토샵 스크립트를 이용하여 color fill 기능을 사용하는 방법을 알려 드리겠습니다. 포토샵에서 아주 많이 사용하는 기능이지만 일반적인 스크립트에서 구현이 되지 않아 답답하셨죠? 제가 올려..

diy-dev-design.tistory.com

2020/02/19 - [DEV/Adobe Script] - [포토샵스크립트] 파일을 이미지로 저장하기 save option 설정

 

[포토샵스크립트] 파일을 이미지로 저장하기 save option 설정

이번 포스트에서는 현재 열려있는 도큐먼트를 특정 이미지 포멧으로 저장하는 기능에 대하여 알아 보겠습니다. 포토샵은 이미지를 편집하는 다재 다능한 툴이지만 자동화 툴로 사용할 생각까지는 하지 않습니다...

diy-dev-design.tistory.com

2020/02/14 - [DEV/Adobe Script] - [포토샵스크립트] 매직완드 기능 스크립트로 실행하기

 

[포토샵스크립트] 매직완드 기능 스크립트로 실행하기

이번 포스트에서는 매직완드를 스크립트로 실행하는 방법을 설명 드리겠습니다. 포토샵의 매직 완드는 일반적인 스크립트로는 작성이 불가능하기 때문에 scriptListner 를 통하여 추출된 코드를 응용하여 개발을..

diy-dev-design.tistory.com

 

반응형
반응형

안녕하세요 이번 강좌에서는 photoshop 에서 특정 위치 (x, y) 에 해당하는 픽셀의 컬러값을 가져오는 스크립트를 작성해 보겠습니다.

포토샵은 너무나 훌륭한 2D 그래픽 편집 툴임에도 불구하고 막상 스크립트에서는 비트맵 관련 정보를 컨트롤 하는것이 쉽지 않다는 치명적인 약점도 가지고 있습니다. 

오늘은 그래서 간단한 방법으로 특정 좌표에 해당하는 픽셀의 색상 값을 구하는 스크립트를 알려드리려 합니다.

Document.colorSamplers 

라는 개체를 이용하여 컬러 값을 구하는 방법을 알아보겠습니다.

// 현재 활성화된 다큐먼트를 cDoc 에 저장
var cDoc = app.activeDocument;

//1,1 에 해당하는 컬러값을 가져오기 (실제 좌표는 -1 을 한 좌표를 입력합니다)
var pointSample = cDoc.colorSamplers.add([0,0]);

// colorSamplers로 부터 얻어온 색상 값을 cColor 라는 변수에 저장
var cColor = pointSample.color

// cColor 로부터 RGB를 각각 나누어 배열에 담아줍니다.
var rgb = [cColor.red, cColor.green, cColor.blue];

//생성한 포인트 샘플러는 제거함
pointSample.remove();
    
    
// 콘솔 창에 출력
$.writeln("R:" + rgb[0] + " , " + "G:" + rgb[1] + " , " + "B:" + rgb[2])

요렇게 하면 특정 위치에 해당하는 픽셀의 좌표값을 구해오는 것이 가능합니다.

 

포토샵의 컬러피커, 컬러샘플러와 동일한 정보를 표시한다.

 

colorSamplers 개체는 별도로 레이어를 구분하여 값을 취득하는 것이 아니기 때문에 현재 어떤 레이어가 선택이 되어있건 상관 없이 값을 가져오는 것이 가능합니다.

 

 

 

만약 1,1 이 아닌 원하는 위치의 좌표를 언제든 입력하여 가져오기 위하여 위의 코드를 함수로 만들면 아래와 같습니다.

function fn_getColorByCoord (xx, yy) // 주어진 좌표에 해당하는 색상값 구하는 함수
{

	var cDoc = app.activeDocument;
	var pointSample = cDoc.colorSamplers.add([xx-1,yy-1]);
	var cColor = pointSample.color
	var rgb = [cColor.red, cColor.green, cColor.blue];
    
	pointSample.remove();
    
    // 결과값으로 구해진 색상값을 리턴
	return rgb
}

// 실제 함수를 사용할 때는 아래와 같이 사용
// x: 323, y: 225 위치의 색상값을 구하고 싶을 때

fn_getColorByCoord (323,225)

요렇게 함수를 정의하여 원하는 위치의 색상 값을 언제든지 구해오는 것이 가능합니다.

 

 

컬러샘플러를 이용하여 이런 것도 가능합니다.

https://diy-dev-design.tistory.com/57

 

[포토샵스크립트] 문자를 이용하여 사진 표현하기

미디어 아티스트를 꿈꾸는 디자이너라면 한번 쯤은 관심을 가져 봤을 법한 이미지 또는 영상이 있습니다. 바로 사진을 텍스트로 전환하여 이미지 프로세싱을 통해 표현하는 것인데요. 음... 글로만은 설명이 좀 어..

diy-dev-design.tistory.com

 

https://diy-dev-design.tistory.com/55

 

[포토샵스크립트] 글자들을 밝기 순으로 배열해 보기

좀 생뚱 맞을 수도 있는데 이번에 소개해드릴 강좌는 글자의 밝기를 알아보는 스크립트를 소개해 드릴까 합니다. 글짜에 무슨 밝기가 있다는 건가 하실수 있겠는데요. 바로 이런 표현을 하기 위하여 필요한 것이..

diy-dev-design.tistory.com

 

2020/04/02 - [DEV/Adobe Script] - [포토샵스크립트] color fill 하기

 

[포토샵스크립트] color fill 하기

이번 강좌에서는 포토샵 스크립트를 이용하여 color fill 기능을 사용하는 방법을 알려 드리겠습니다. 포토샵에서 아주 많이 사용하는 기능이지만 일반적인 스크립트에서 구현이 되지 않아 답답하셨죠? 제가 올려..

diy-dev-design.tistory.com

2020/02/14 - [DEV/Adobe Script] - [포토샵스크립트] 매직완드 기능 스크립트로 실행하기

 

[포토샵스크립트] 매직완드 기능 스크립트로 실행하기

이번 포스트에서는 매직완드를 스크립트로 실행하는 방법을 설명 드리겠습니다. 포토샵의 매직 완드는 일반적인 스크립트로는 작성이 불가능하기 때문에 scriptListner 를 통하여 추출된 코드를 응용하여 개발을..

diy-dev-design.tistory.com

 

반응형

+ Recent posts