• Programming by 白影를 방문하신 여러분을 환영합니다 :)

[ArtistFTP C# 제작기 02]  파일을 다루기 위한 클래스 선언

일단 기본적으로 탐색기 UI로 만들기 때문에

파일아이콘등등 여러가지를 위해서 먼저 클래스를 선언했습니다.


    class FileTypeInfo
    {     
    }


위와 같이 'FileTypeInfo' 라는 이름으로 클래스를 선언 하였으며,

먼저 파일 형식을 구분할 간단한 열거형을 하나 선언했습니다.


    class FileTypeInfo
    {    
        public enum FileTypes
        {
            상위로=0,
            폴더,
            파일,
            실행파일,
            동영상파일,
            음악파일,
            이미지파일,
            텍스트파일,
            CD이미지파일,
            PDF파일,
            EXCEL파일,
            파워포인트파일,
            압축파일,
            한글문서파일,
            꿀뷰파일,
            Epub파일
        } 
    }


선언한 열거형이 제대로 작동하는지 확인하기 위해 다른 클래스에서 해당 열거형을 호출해 보았습니다.


이런식으로 잘나오는군요.


다음으로 제가 해준것은 파일의 사이즈를 KB 형식으로 변환해주는 메서드입니다.

윈도우 탐색기를 보면 전부 기본 사이즈가 KB로 변환되서 나오더군요.

아까 만든 public enum types {} 바로 밑에다가 만들었습니다.


        /// <summary>       
        /// 파일 크기를 KB단위로 변환한다.
        /// </summary>
        /// <param name="bytes">변환할 파일 크기
        /// 변환된 파일 크기
        public static string formatSize(long bytes)
        {
            double size = bytes;
            string formattedSize = "1 KB"; 
            // 1KB 이하의 파일들은 모두 1KB 로 표시한다.

            if (size > 1024) // 1024byte, 즉 1KB 가 넘는다면
            {
                size /= 1024; // 1024로 나누어 준다음
                formattedSize = size.ToString("n0") + " KB";
            }

            return formattedSize;
        }

주석이 달려있으므로 크게 어렵진 않으리라 믿습니다.


자 다음으로, 파일이름에서 확장자를 추출하는 메서드를 작성하도록 하겠습니다.

사실 파일이름에서 확장자를 추출하는 간단한 메서드가 이미

System.IO; 네임스페이스에 이미 존재합니다.

하지만 개인적으로 예외처리등등을 위해 일부러 따로 메서드를 만들었습니다.


        /// <summary>
        /// 파일이름에서 확장자를 추출한다.
        /// </summary>
        /// <param name="fileName">파일이름</param>
        /// <returns>파일의 확장자</returns> 
        public static string fileExt(string fileName)
        {
            return System.IO.Path.GetExtension(fileName);
        }

사실 System.IO.FileInfo 클래스를 이용해서 변수 선언후, GetExtension() 메서드를 사용하려고 하였는데,

'실제로 파일이 존재하지 않을경우' 예외가 발생하였습니다.

예외처리를 하는것보단, 그냥 경로만 가지고 확장자를 분석해야할 경우도 있을것 같아서,

저렇게 사용하였습니다.


마지막으로 파일이름을 이용해서, 확장자를 얻고, 그 확장자로 파일종류를 구분하는 메서드를 만들도록 하겠습니다.

        
        /// <summary>
        /// 파일 이름에서 파일 타입을 얻는다.
        /// </summary>
        /// <param name="fileName">파일 이름</param>
        /// <returns>파일 종류</returns>
        public static int FileType(string fileName)
        {
            string tempExt = fileExt(fileName);            
            int Type = 0;
            
            switch (tempExt.ToLower())
            {
                case ".exe":
                case ".com":
                case ".msi":
                    Type = (int)FileTypes.실행파일;
                    break;
                case ".avi":
                case ".wmv":
                case ".mpeg":
                case ".mpg":
                case ".mov":
                case ".mkv":
                case ".flv":
                case ".mp4":
                    Type = (int)FileTypes.동영상파일;
                    break;
                case ".wav":
                case ".mp3":
                case ".ogg":
                case ".aif":
                    Type = (int)FileTypes.음악파일;
                    break;
                case ".jpg":
                case ".bmp":
                case ".png":
                case ".gif":
                case ".jpeg":
                case ".ico":
                    Type = (int)FileTypes.이미지파일;
                    break;
                case ".txt":
                case ".doc":
                case ".docx":
                    Type = (int)FileTypes.텍스트파일;
                    break;
                case ".gho":
                case ".dmg":
                case ".iso":
                    Type = (int)FileTypes.CD이미지파일;
                    break;
                case ".pdf":
                    Type = (int)FileTypes.PDF파일;
                    break;
                case ".xls":
                case ".xlsx":
                    Type = (int)FileTypes.EXCEL파일;
                    break;
                case ".ppt":
                case ".pptx":
                    Type = (int)FileTypes.파워포인트파일;
                    break;
                case ".zip":
                case ".rar":
                case ".7z":
                case ".egg":
                    Type = (int)FileTypes.압축파일;
                    break;
                case ".hwp":
                    Type = (int)FileTypes.한글문서파일;
                    break;
                case ".hv3":
                    Type = (int)FileTypes.꿀뷰파일;
                    break;
                case ".epub":
                    Type = (int)FileTypes.Epub파일;
                    break;
                default:
                    Type = (int)FileTypes.파일;
                    break;
            }

            return Type;
        }

이정도로 일단 FileTypeInfo 클래스를 작성하고,

다음 포스팅은 프로그램 기본 환경 클래스를 작성해보도록 하겠습니다.

'Programming > C#' 카테고리의 다른 글

[ArtistFTP C# 제작기 01] 프로그램 구상 및 밑작업  (0) 2014.01.12

필자는 개인적으로 FTP 서버를 운용하고 있으며,

친구 몇명과 필요한 자료들을 공유하며 사용하고 있습니다.

하지만 친구들중에 컴맹도 몇몇 있으며,

FTP사용법 아무리 알려줘도 이해를 못하는 친구들을 위해

간단하게 전용 FTP 클라이언트를 만들 계획을 세웠습니다.


대략적으로 아래와 같은 UI로 구성하고,

다음팟플레이어나, KMPlayer 를 이용해서 바로 동영상이나 음악등을 스트리밍할수 있도록 제작해보도록

제작해보려고 합니다.


# 작업 아이디어

01. 리모트서버의 동영상을 스트리밍으로 플레이한다.

    (동영상 플레이어를 구현이 아닌, 주소를 가져와 다음팟플레이어나, KMPlayer를 이용하여 부른다.)

02. 리모트 서버상의 파일을 이동, 삭제, 이름변경등을 한다.

03. 로컬 시스템과 업로드, 다운로드가 가능하다.

04. MySQL DB를 연동하여 영화전문관 이나 드라마전문관, 파일 자료실같은 게시판형식의 폼도 구현한다.


Sublime Text PlugIn

Programming/Etc. 白影 2013. 12. 19. 12:37

Sublime Text PlugIn 정리

 

BracketHighlighter : 블럭영역의 시작과 끝을 눈에 잘 띄게 해준다.

Theme – Soda : 테마변경

RailsCasts Theme : Color Scheme 변경

Twilight Theme : Color Scheme 변경

Package Control : 다양한 패키지를 커맨드 팔렛에서 관리할 수 있도록 해준다.

설치방법 : Ctrl + ‘ 로 콘솔창을 연 후에 아래의 내용을 붙여넣고 실행한다.


Quick File Creator : 커맨드 팔렛에서 파일, 폴더를 생성할 수 있다.

AdvancedNewFile : Quick File Creator와 같은 기능. 더 직관적이고 사용이 편리하다.

Emmet : 예전의 Zen Coding.

SublimeCodeIntel : 코드인텔리전스 기능. 지원언어는 PHP, Python, RHTML, JavaScript, Smarty, Mason, Nodejs, XBL, Tcl, HTML, HTML5, TemplateToolket, XUL, Django, Perl, Ruby, Python3이다.

SFTP : FTP, FTPS, SFTP 지원 PlugIn

AutoBackups / Automatic Backups : 파일저장시 백업본 생성

SublimeLinter : 다양한 언어의 코드에러, 안좋은 스타일의 코드 작성을 지적해준다. 줄번호에 뜬 느낌표를 클릭하면 하단에 이유를 확인할 수 있다.

 

Ref. 01 : http://windtale.net/blog/sublime-text-tip/

Ref. 02 : http://mytory.net/archives/11726

Ref. 03 : http://www.thishall.com/2013/06/sublime-text-2-2.html

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

Sublime Text 단축키  (0) 2013.12.19

Sublime Text 단축키

Programming/Etc. 白影 2013. 12. 19. 12:23

Sublime Text 단축키를 알아보다보니 여기저기 많이들 있어서 통합으로 정리해보았습니다.

도움되시길 바랍니다 ^^

Editing

Ctrl+A 전체선택

Ctrl+O 열기

Ctrl+S 저장하기

Ctrl+C 복사하기

Ctrl+V 붙여넣기

Ctrl+F Text 검색

Ctrl+Z 이전작업으로가기

Ctrl+Y 다음작업으로가기

Ctrl+D 동일 단어 선택기능 (한단어를 선택한 뒤 Ctrl+D를 한번 누를 때 마다 다음 동일 단어를 추가로 선택합니다)

Ctrl+Shift+F 동일 폴더 내에서 단어나 문장을 찾아줍니다.

Ctrl+G 원하는 행으로 바로 이동해주며

Ctrl+P 폴더트리 살펴보지 않고 원하는 파일을 바로 열 수 있도록 해줍니다. (Mac : CMD+P)

Ctrl+[ 행 들여쓰기 (Mac : CMD+[ )

Ctrl+] 내어쓰기(Mac : CMD+] )

Ctrl+h : 단어를 찾아서 바꾸기

Ctrl+SHIFT+[ 코드블럭 접기 (Mac : CMD+OPT+[ )

Ctrl+SHIFT+] 코드블럭 펴기 (Mac : CMD+OPT+] )

Ctrl+SHIFT+K 행을 삭제합니다.

Ctrl+ENTER 다음행에 입력할 수 있는 공간을 만들어줍니다.

Ctrl+SHIFT+ENTER 이전행에 입력할 수 있는 공간을 만들어줍니다.

Ctrl+SHIFT+UP,Ctrl+SHIFT+DOWN 해당 행을 그 윗행이나 아랫행으로 자리를 옮깁니다. 만약 영역을 설정하면 영역에 포함된 모든 행의 위치를 옮깁니다. (Mac : CMD+SHIFT+UP, CMD+SHIFT+DOWN)

Ctrl+L 커서가 위치한 행을 선택합니다.

Ctrl+D 커서가 위치한 부분의 단어를 선택합니다. 반복해서 누를 경우 그 다음에 나오는 동일단어를 찾아서 선택합니다.

Ctrl+KK 커서위치부터 행끝까지 삭제

Ctrl+K+DEL행시작부터 커서위치까지 삭제

Ctrl+SHIFT+D 현재 행 복사하여 붙여넣기, 영역을 설정하면 설정 된 영역만 복사하여 붙여넣기 (Ctrl+C 후 Ctrl+V와 같습니다.)

Ctrl+J 다음행을 같은 행으로 당긴 뒤 당겨온 행의 처음으로 커서 이동

Ctrl+ / 현재 행 주석처리, 반복하면 주석처리 취소, 영역 선택시에는 선택한 부분만 주석처리

Ctrl+SHIFT+/ 현재위치에 주석넣을 블록 생김

Ctrl+Z, Ctrl+U 이전작업으로 돌아가기

Ctrl+Y 다음작업으로 돌아가기, 돌아갈 작업이 없을 경우 가장 마지막으로 했던 작업을 함

Ctrl+KU 해당단어 모두 대문자로

Ctrl+KL 해당단어 모두 소문자로

Ctrl + DEL(Backspace) 단어단위 삭제

SHFT + DEL(BackSpace) 현재커서가 있는 줄 삭제

Navigation/Goto Anywhere

Ctrl+P 열려있는 폴더내의 파일을 빨리 찾아 열 수 있다. (Ctrl+P 후 @를 달아주면 Ctrl+R과 같다.#를 달아주면 Ctrl+ ; 과 같다. :를 달아주면 Ctrl+G과 같다.) (Mac : CMD+P)

Ctrl+R 파일내의 css 선택자나 id를 찾아 이동한다.

Ctrl+ ; 파일내의 단어를 찾아 이동한다.

Ctrl+G 파일내의 행을 찾아 이동한다.

General 

Ctrl+SHIFT+P 명령어 목록을 보여줌-command prompt (Mac : CMD+SHIFT+P)

Ctrl+KB 사이드바를 숨겼다 꺼냈다 한다

Find/Replace 

Ctrl+F 해당 문서에서 단어 찾기

Ctrl+H 교체  (Mac : CMD+OPT+F)

Ctrl+SHIFT+F 전체 파일에서 단어가 포함 된 파일 찾기 (Mac : CMD+SHIFT+F)

Tabs 

Ctrl+SHIFT+t 가장 최근에 닫은 문서(탭)열기

Ctrl+PgDn,Ctrl+PgUp 여러 창이 열려있는 경우, 다음창으로 이동 (이동순서는 두 버튼이 반대로 실행됨) 

Ctrl+RIGHT, Ctrl+LEFT 해당위치에서 다음(이전)단어로 이동

Ctrl+SHIFT + ,  태그 닫기와 열기

Split window

Alt+SHIFT+2~4 숫자 개수만큼 창 분할하기(세로 분할)

Alt+SHIFT+1 1개의 창으로 보여지기 

Alt+SHIFT+5 2행 2열 4개의 창으로 분할하기 

Ctrl+[1,2,3,4] 여러창으로 보인 상태에서 해당 번호의 창으로 커서이동

Ctrl+SHIFT+[1,2,3,4] 여러창으로 보인 상태에서 해당 번호의 창으로 현재창을 이동

Etc

F11  전체화면모드

Only Mac

Ctrl+M 현재 코드의 닫는 괄호로 이동, 반복시 여는 괄호로 이동 

Ctrl+SHIFT+M현재 괄호의 모든 내용을 선택(중괄호, 대괄호, 괄호) 

CMD+SHIFT+V복사한 단어나 문장을 붙일 때 들여쓰기를 같이 한다.

[List Image]

Window

sublime-windows

Mac

sublime-mac

Ref. 01 : http://codeflow.co.kr/question/349/sublime-text-%EB%8B%A8%EC%B6%95%ED%82%A4/

Ref. 02 : http://blog.naver.com/PostView.nhn?blogId=iyakiggun&logNo=100159296692

Ref. 03 : http://windtale.net/blog/sublime-text-tip/

Ref. 04 : http://www.clien.net/cs2/bbs/board.php?bo_table=park&wr_id=19085007

Ref. 05 : http://www.andismith.com/blog/2012/12/sublime-text-2-cheatsheets/

 

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

Sublime Text PlugIn  (0) 2013.12.19

[Oracle] 숫자관련 함수

Programming/SQL 白影 2013. 11. 27. 17:16

ABS(n) 

n의 절대값을 계산


CEIL(n)

n보다 큰 자연수 중 가장 작은값


FLOOR(n)

n보다 작거나 같은 자연수 중 가장 큰값


MOD(n,m)

n을 m으로 나눈 나머지값


POWER(n,m)

n의 m제곱한 값


ROUND(n,m)

n을 소수점 m자리수 위로 반올림한 값


TRUNC(n,m)

n을 소수점 m자리수 위로 반내림한 값

[Flex] Popup창에서 부모창으로 데이터 호출하기


검색을 해보다보니 생각보다 잘 적용하기가 쉽지 않아서 새로 정리를 함..


팝업창의 grid에서 선택한 내용의 item_name 항목을 부모창의 textinput창에 텍스트로 넣어주기 위해 팝업을 호출하는 부분에 다음과 같이 추가해준다.


부모창

pop.targetComponent = textinput;

pop.grid.selectedItem.item_name = textinput.text;


팝업창에서 해당 내용을 선택하고 넘기기 위한 이벤트 부분에 다음과 같이 추가한다.


팝업창

targetComponent.text = String(grid.selectedItem.item_name);



그러면 팝업창의 grid에서 선택한 항목의 item_name을 부모창의 textinput로 호출하여 입력해준다.


부모창 [textinput] << 팝업창 [grid.selecteditem]


원소스는 커스텀된 기능이 들어가있어서 해당 항목만 기재하였다.

'Programming > Java / Flex' 카테고리의 다른 글

숫자 반올림, 제곱함수  (0) 2015.01.08
FIle Copy 방식  (0) 2015.01.08
[Eclipse] 단축키  (0) 2013.05.28
[Flex] Datagrid / Arraycollection addItem(At)  (0) 2013.05.05
PowerJava [2판] Theory Chaper 06 반복문  (0) 2013.01.29

UI Templete

Programming/UI Templet 천재작곡가 2013. 7. 3. 09:57
접근 제한
이 게시물은 열람이 제한되어 있습니다.
열람을 원하시면 비밀번호를 입력하시기 바랍니다.

영원히

Game 천재작곡가 2013. 6. 3. 12:42

 

'Game' 카테고리의 다른 글

Joyluck 챌린저 강좌 모음  (0) 2015.01.26
[LOL] Cinematic 롤 시네마틱!  (0) 2013.05.26
카이로소프트 한글패치 과정 공개  (0) 2013.05.18

스샷

Programming/SuperVisor 프로젝트 천재작곡가 2013. 6. 1. 00:58
접근 제한
이 게시물은 열람이 제한되어 있습니다.
열람을 원하시면 비밀번호를 입력하시기 바랍니다.

[Eclipse] 단축키

Programming/Java / Flex 白影 2013. 5. 28. 17:31

===== 에디터 변환 =====
1. 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로
2. Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
3. Ctrl + F7 : 뷰간 전환
4. Ctrl + F8 : 퍼스펙티브간 전환
5. F12 : 에디터로 포커스 위치

 

===== JAVA Doc 생성 =====
1. 프로젝트 -> Javadoc 생성

 

===== 내보내기 =====
해당 프로젝트를 zip 행태로 압축해서 보관할 수 있다.

 

===== 자바 찾아보기 perspective =====
해당 프로젝트를 보다 편리하게 한번 둘러보는데 좋다.

 

===== 스크랩북 =====
1. 스크랩북을 이용하면 자바파일을 만들어 테스트 해보지 않고도 간단하게 테스트 해 볼 수 있다.
2. 패키지 탐색기에서 신규 -> 기타 -> 자바 -> 자바 실행/디버그 -> 스크랩북 페이지 선택

 

===== 디버그 =====
1. F5(Step Into) : 현재의 명령문이 호출되는 메소드 속으로 진행하여, 그 첫 문장을 실행하기 전에 멈춘다.
   하지만 자바 라이브러리 클래스 수준까지 들어가므로 단계필터 사용을 체크(Shift+F5)를 하면 필터를 설정한 클래스에 대하서는 Step Over 기능과 같은 기능을 수행한다.
2. F6(Step Over) : 현재의 명령문을 실행하고 다음 명령문 직전에 다시 멈춘다.
3. F7(Step Return) : 현재의 메소드에서 리턴한 직후에 다시 멈춘다.
4. F8(Resume) : 멈추어 있던 쓰레드를 다시 계속 실행한다.
5. Display view(표시) : 창 -> 보기표시 -> 표시 선택하여 소스상에서 필요한 부분을 선택해서 실행시켜 볼 수 있다.  한 순간의 값만 필요할 때 볼 수 있는 반면에 아래놈은 계속적으로 값이 변하는 것을 확인 할 수 있다.
6. Expression view(표현식) : 복잡한 식 혹은 객체를 디버깅 하면서 계속 볼 수있는 창이다.
   마우스 오른버튼 -> 감시 표시식 추가 선택한 후 사용한다.
   환경설정 -> 자바 -> 디버그 -> 세부사항 포멧터 선택 후 보기 편한 식으로 편집하면

   Expression View 에서 결과를  실시간으로 확인 할 수 있다.
7. 디버깅 하면서 소스를 수정하고 프로그램을 다시 시작할 필요 없이 계속 디버깅을 진행 할 수 있다.
   다만 메소드를 추가하거나 필드를 추가하면 프로그램을 다시 시작해야 한다.

8. Drop to Frame(프레임에 놓기) 는 정말 모르겠다.
9. 디버깅 작업을 할때 해당 라이브러리의 소스코드를 첨부하지 않으면 진행상황을 볼 수 없을 경우
   해당 라이브러리에 소스코드를 첨부할 수 있다. 해당 프로젝트 -> 특성 -> Java 빌드경로 -> 라이브러리 -> 소스참조
   편집 버튼을 눌러서 첨부 한다.

 

===== 도움말 =====
"JDT 팁과 요령"이라고 치면 여러가지 흥미로운 팁이 나온다.

 

===== Refactoring =====
1. Pull Down : 수퍼클래스의 멤버나 메소드를 하위 클래스로 내리는 행위
2. Push Up : 하위 클래스의 멤버나 메소드를 상위 클래스로 올리는 행위

 

===== CVS =====
1. CVS 서버로는 윈도우에 CVSNT 최신버젼을 설치하고, [컴퓨터 관리]를 통해서 사용자를 추가한다.
 - CVSNT 를 설치할때 윈도우의 경우 Repositories 를 추가할때 접두어를 사용하지 말고 디렉토리 풀이름(d:/cvs) 이런식
   으로 등록해야 Eclipse 와 에러없이 동기화가 잘 된다.
2. Eclipse 에 CVS 저장소 perspective 에서 새로운 저장소를 등록한 후 HEAD 에서 해당 프로젝트를 체크아웃하면
   자바 perspective 에 등록되는 것을 확인할 수 있다.

 


이것 이외의 단축키 리스트 :  HELP->Help Contents->Java Development User Guide->Reference->JDT Basics

새로운 기능:  HELP->Help Contents->Java Development User Guide->What's new

유용한 기능 :  Tips and tricks


출처 : http://blog.naver.com/wassupnari/100096420344

1 2 3 4 5 6 ··· 9