기본단축키

파일 작업 관련 단축키
[ Ctrl + N ] : 새 캔버스 만들기
[ Ctrl + O ] : 파일 불러오기
[ Alt + Ctrl + O ] : Adobe Bridge 실행하기
[ Ctrl + W ] : 현재 캔버스 닫기
[ Alt + Ctrl + W ] : 모든 캔버스 닫기
[ Ctrl + S ] : 현재 파일 저장하기
[ Shift + Ctrl + S ] : 다른 이름으로 저장하기
[ F12 ] : 처음 상태로 되돌리기
[ Ctrl + P ] : 인쇄하기
[ Ctrl + Q ] : 포토샵 프로그램 종료하기

브러시 관련 단축 키
[ Ctrl + Z ] : 바로 직전에 실행한 작업 취소하기
[ Ctrl + Alt + Z ] : 작업 여러 번 취소하기
[ , ] : 브러시 목록에서 이전 브러시 선택하기
[ . ] : 브러시 목록에서 다음 브러시 선택하기
[ X ] : 전경색/배경색 전환하기

도구 사용 단축키
[ Alt + 도구 선택 ] : 숨어 있는 도구 선택하기
[ Eyedropper Tool + Alt를 누른 채 클릭 ] : 배경색으로 지정
[ Spacebar ] : 임시로 Hand Tool 사용하기
[ Ctrl] :임시로 Move Tool 사용하기
[ Ctrl + Spacebar ] : 임시로 Zoom Tool(+) 사용하기
[ Alt + Spacebar ] : 임시로 Zoom Tool(-) 사용하기

선택 영역 관련 단축키
[ Ctrl + A ] : 이미지 전체 영역을 선택하기
[ Ctrl + Shift + D ] : 마지막으로 지정하였던 선택 영역 다시 선택하기
[ Shift + 드래그 ] : 정 비율로 선택하기

화면 조작 관련 단축키
[ Tab ] : Tool 패널, 패널 감추기/나타내기
[ Shift + Tab ] : 패널만 감추기/나타내기
[ Ctrl + + ] : 화면 확대하여 보기
[ Ctrl + - ] : 화면 축소하여 보기
[ Ctrl + R ] : 눈금자 나타내기/감추기
[ Ctrl + ; ] : 안내선 나타내기/감추기
[ Ctrl + Alt + ; ] : 안내선 잠그기
[ Ctrl + ' ] : 그리드 나타내기/감추기
[ Ctrl + H ] : 표시자 보이기/감추기
[ Shift + Ctrl + ; ] : 스냅 선택/해제하기
[ F ] : 윈도우 모드 변경하기
[Ctrl + 0] : Fit on Screen

레이어 작업 관련 단축키
[ Ctrl + Shift + N ] : 새 레이어 만들기
[ Ctrl + E ] : 아래 레이어와 합치기
[ Ctrl + G ] : 선택한 레이어를 그룹에 넣기
[ Ctrl + Shift + G ] : 그룹 해제하기

이미지 보정 관련 단축키
[ Ctrl + L ] : Levels 대화상자 불러오기
[ Ctrl + Shift + L ] :  Auto Levels 적용하기
[ Ctrl + Alt + Shift + L ] :  Auto Contrast 적용하기
[ Shift + Ctrl + B ] : Auto Colors 적용하기
[ Ctrl + M ] : Curves 대화상자 불러오기
[ Ctrl + B ] : Color Balance 대화상자 불러오기
[ Ctrl + U ] : Hue/Saturation 대화상자 불러오기
[ Ctrl + Shift + U ] : Desaturate 적용하기
[ Ctrl + F + I ] : 이미지의 색상을 반전하기
[ Ctrl + F ] : 마지막에 적용한 필터 반복 적용하기

패널 관련 단축키
[ F5 ] : BRUSHES 패널 열기/닫기
[ F6 ] : COLORS 패널 열기/닫기
[ F7 ] : LAYERS 패널 열기/닫기
[ F8 ] : INFO 패널 열기/닫기
[ F9 ] : ACTION 패널 열기/닫기

선택 영역이 지정된 상태에서 사용하는 단축키
[ Ctrl + D ] : 지정된 선택 영역 해제하기
[ Shift + 드래그 ] : 선택 영역에서 추가로 더 선택하기
[ Alt + 드래그 ] : 선택한 영역의 일부분 빼기
[ Ctrl + Shift + I ] : 선택 영역 반전시키키
[ Ctrl + T ] : 선택 영역의 이미지 변경하기
[ Ctrl + C ] : 선택영역의 이미지 복사하기
[ Ctrl + X ] : 선택 영역의 이미지 오려내기
[ Ctrl + Alt + 드래그 ] : 선택 영역의 이미지 복사하여 이동하기
[ Ctrl + 드래그 ] : 선택 영역의 이미지 오려서 이동하기
[ Alt + Delete ] : 선택 영역에 전경색 채우기
[ Ctrl + Delete ] : 선택 영역에 배경색 채우기
[ Alt + Shift + Delete ] : 투명 영역을 보호하면서 전경색 채우기
[ Alt + I + P ] : 선택 영역의 이미지만 남기고 자르기
[ Ctrl + 방향키 ] : 선택 영역의 이미지를 오려서 픽셀 단위로 이동하기
[ Shift + 방향키 ] : 선택 영역의 위치를 10픽셀 단위로 이동하기
[ Shift + Ctrl + 방향키 ] : 선택 영역의 이미지를 오려 10픽셀 단위로 이동하기
[ Ctrl + J ] : 선택 영역의 이미지를 복사하여 새 레이어로 만들기
[ Ctrl + Shift + J ] : 선택 영역의 이미지를 잘라서 새 레이어로 만들기

'Etc.' 카테고리의 다른 글

Google Syntaxhighlighter  (0) 2014.05.19
by kelicia 2014. 4. 23. 16:09


출처 : http://www.hoons.net/board/asptip/content/30981


- 위 출처에 나와있는 포스팅 내용을 요약하여 정리하였다.



먼저 들어가기 전 용어 정의.


<< Terminology >>

Method : 클래스에서 사용되어지는 함수 형태

Function : 일반 C언어나 Script 에서 사용되어지는 함수 형태

Function Pointer : 일반 C언어나 Script 에서 사용되어 지는 함수 포인터



위 포스팅한 분이 정리해놓은 Delegate 에 대해 정의하자면

- 특정한 때에 조건에 부합한 특정 클래스의  Method 를 실행

- 언제 무엇이 실행될 지 모를 때 사용하는 것


ex ) 유언장과 유언장을 집행하는 대리자

: 유언장에 죽은 후 해야 할 몇 가지 Method(유언) 들을 적어 놓고, 이 Method 들이 언제 실행될까?

정답은 '아무도 모른다'이다. 예를 들어 대리자 입장에서 유산이 얼마 없는데 백억을 후손에게 물려줘야 된다고

유언장에 적혀있다면 그 유언은 실행되지 않을 것이다. 즉, 조건이 맞아야 그 Method 를 실행시킬 수 있다.


위 예제를 다시 요약하면 패러미터 타입과 리턴 타입이 동일 + 성립된 조건 하에 어떤 Method 든지 실행이 가능하다.

특정한 때에.


=> 여기서 '이벤트'를 떠올린다.



delegate 선언을 보면,


delegate void SimpleDelegate(); 


밑줄 친 부분을 보면 클래스의 Method 로 보이고, C언어라면 함수의 형태를 띄고 있다고 할 수 있다.


But, 객체지향 언어는 클래스 기반이라 C언어에 있는 함수라는 게 존재하지 않아 위와 같은 형태로 사용하는 것은 불가능!



그런데...... "delegate 는 클래스처럼 인스턴스를 생성시킬 수 있다."


SimpleDelegate simpleDelegate = new SimpleDelegate();


클래스가 아님에도 하나의 함수가 마치 클래스처럼 동작한다는 점.



-> 왜 이렇게 동작을 시켜야 하는지, 필요한 이유가 무엇인지

: 이벤트로 인해 일반적으로 "클래스가 아닌 특정한 때에 특정 Method 만을 호출" 할 수 있는 

무언가가 필요하기 때문. 그 무언가가 'delegate' 이다.


아래 예제를 보자.


eTest.ckEvent += new evnetDelegate(MainClass.Click);


이벤트가 발생해 특정 Method 만을 호출하고 그 Method 에 개발자가 원하는 동작을 하도록 코딩을 한다.

실제 동작하는 코드가 있는 Method 는 MainClass.Click 인데 이 경우 MainClass 에 대한 참조가 필요하다는 것이다.


클래스가 아닌 저 Click 이벤트 핸들러에서 정의된 메소드만 필요하건만, 

객체지향 에서는 저 메소드 하나때문에 불가피하게 MainClass 를 생성할 수 밖에 없다는 거......



delegate 가 필요한 이유를 잘 읽어보면,

C 에서의 함수 포인터C# 의 delegate 는 사실상 같다고 볼 수 있다.


C에서의 함수 포인터란 ?

- 함수가 존재하는 메모리의 주소를 가리키는 특수한 변수. 또한 실행(호출)도 가능하다.


delegate 는 Method 를 실행시키고 함수포인터는 함수를 실행시킬 뿐 사실상 같은 역할을 하고 있다.




<< Delegate 사용법 >>


참고로 위 코드를 보면 알겠지만 Delegate 는 MainClass.Click 과 같이 일반화된 메소드 역시 참조할 수 있다. 

또한 하나의 Delegate로 여러 개의 메소드를 동시에 참조할 수 있다 : Delegate.Combine()

그리고 Combine 된 참조를 해제할 수 도 있다 : Delegate.Remove() 또는 '-=' 연산자


Calculate calc;

calc = delegate(int a, int b){ return a + b; }    // 이렇게 익명 메소드로도 사용할 수 있다.


delegate myDel = (int a, int b) => a+ b;    // 람다식 사용도 가능



by kelicia 2013. 12. 20. 16:20


람다식 (Lambda Expression)

- A lambda expression is an anonymous (익명인) function

tha you can use to create delegates or expression tree types.


- 람다 연산자 : '=>'



- 귀차니즘(?)으로 인해 생겨났다는... 점잖게 얘기하자면 번거로움을 줄이기 위해 생겨났다는 람다식.

어떤 번거러움을 덜어주는 지에 대한 예제를 가져와봤다.


출처 : http://rintiantta.blog.me/40115460090


C#

static void Main(string[] args)

{

List<string> list = new List<string>()

{

"A", "B", "C", "D", "E", "F"

};


Console.WriteLine( (list.Where(data => data.Contains("A"))).Count() );    // 1

}


List 에는 Where 라는 메소드가 있고, 그 메소드는 조건에 맞는 녀석들을 뽑아서

다시 배열로 만들어 주는 메소드 입니다. 패러미터로 Func<string, bool> predicate 를 받는데

뜻은 string을 인자로 주면 bool 로 리턴한다는 뜻이랍니다. 


저렇게 람다식을 바로 안 넣고 패러미터를 string을 받고 bool로 리턴하는 메소드를 따로 만들어 

그 메소드를 predicate 로 넣어도 되지만 저렇게 간단한 메소드인 경우 

메소드를 따로 정의하기엔.. 코드도 길어지고 귀찮기도 하겠죠ㅎㅎ


static void Main(string[] args)

{

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

int oddNumbers = numbers.Count(n => n % 2 == 1); // Count 메소드도  위 Where 메소드와 비슷합니다


Console.WriteLine(oddNumbers); // 5, 1, 3, 9, 7

}




C# 람다식 문법

( 출처 : http://msdn.microsoft.com/ko-kr/library/bb397687.aspx )


 delegate int del(int i);

static void Main(string[] args)
{
    del myDelegate = x => x * x;
    int j = myDelegate(5); // j = 25
}



1. C# Expression Lambda :


(input parameters) => expression

왼쪽 괄호는 매개 변수가 1개일 경우, 생략가능



ex )


  x => x * x

(x, y) => x == y
(int x, string s) => s.Length > x
() => SomeMethod() : 입력 매개 변수가 0개 일 경우



2. C# Statement Lambda :


(input parameters) => {statement;}



ex )


delegate void TestDelegate(string s);

...

TestDelegate myDel = n => { string s = n + " " + "World"; Console.WriteLine(s);  };

myDel("Hello"); // Hello World




3. Asynchronous Lambda


4. 람다 식의 변수 범위


- 3, 4 번 관련 내용은 위 C# 람다식 관련 출처 링크를 통해 보는 게 나을듯.





Python 람다식 문법 

( 출처 : http://www.trypython.org/#part2-page4 ) : ctrl + c, v 가 안 되는 이 슬픔..


>>> def make_incrementor(n) :

return lambda x : x + n

...

>>> f = make_incrementor(42)

>>> f(0)

42

>>> f(1)

43




쌩뚱맞게 C# 이랑 Python 람다식 문법을 가져온 이유는..

람다식에 대한 내용을 Python 공부하다가 어쩌다 발견하게 되었고 예제 또한 이해가 잘 되서 가져왔다.

C# 의 경우 delegate(대리자) 과 관련되서 람다식이 나오는 것을 보고 가져와봤다.

대리자 관련 포스팅도 따로 할 예정.



by kelicia 2013. 12. 19. 16:57