[Ubuntu] 파이프와 리다이렉션[Ubuntu] 파이프와 리다이렉션

Posted at 2020. 1. 31. 19:08 | Posted in Linux/Ubuntu




■ 파이프와 리다이렉션




리눅스 콘솔에서 작업을 하다 보면 2개 이상의 명령어를 조합해서 원하는 작업을 하는 경우가 있다.


명령어들 각각의 특징과 기능을 정확히 이해하고 조합함으로써


새로운 명령 형태 또는 복잡한 명령 형태를 수행할 수 있게 해준다.


이렇게 여러 명령어를 조합하기 위해서는 파이프와 리다이렉션의 개념을 이해하고 있어야 된다.


두 가지 개념은 비슷하지만 다르다.




#01. 파이프



파이프는 기호 「 |  」 를 의미한다. 파이프는 앞쪽에서 수행된 명령어의 결과를 


파이프 뒤쪽 명령어에게 전달하라는 의미이다.


뒤쪽 명령어는 앞 명령어가 수행한 결과를 가지고 적절한 결과를 다시 보여줄 수가 있게 된다.



 $ ls | more 

 




위 명령어는 간단하게 ls 명령어와 more라는 명령어를 파이프로 조합한 것이다.


ls 명령어는 앞에서 자주 봤듯이 현재 디렉토리에 있는 파일과 하위 디렉토리 목록을 보여주는 명령어이다.


그리고 more라는 명령어는 화면에 출력할 내용을 커서키를 이용해서 한 줄씩 출력하게 해주는 명령어이다.


ls 명령어를 입력했는데 보여줄 내용이 많아서 한 화면에 다 담을 수 없을 경우 위쪽에 출력된 내용은 잘리게 된다.


하지만 more 명령어를 파이로 조합해서 수행하게 되면 전부 살펴 볼 수 있다.


이처럼 more라는 명령어는 파이프와 함께 자주 사용되는 명령어이다.



 $ cat test.txt | more 



위 명령어는 test.txt의 내요을 한 줄 씩 키보드 커서를 이용해서 살펴볼 수 있게 해준다.


파일의 내용을 살펴보다가 종료혀라면 키보드 q를 누르면 된다.



 $ ps -aux | grep init

 


위 예제는 ps 명령어를 이용해서 시스템의 프로세스 목록을 얻어온 후에 init이라는 단어를 찾아서


해당 라인만 보여주라는 명령어이다.


grep 역시 more와 마찬가지로 파이프와 같이 사용되는 대표적인 명령어이다.


앞쪽 명령어가 수행된 결과에서 특정 키워드를 찾아준다.


파이프는 2개 이상의 명령어를 연결하는 것도 가능하다.


계속 파이프를 이용해서 여러 명령어를 연결할 수도 있다.





#02. 리다이렉션



리다이렉션은 「 > 」 또는 「 < 」 기호를 의미한다.


표준 출력 또는 표준 입력의 방향을 바꿔줄 때 사용한다.


표준 출력과 표준 입력이 좀 생소할 수 있는데 아래 예제를 살펴보자.


 $ ls > result.txt



ls라는 명령어의 결과는 원래 화면에 그 내용을 보여주도록 되어 있다.


하지만 리아디렉션 기호 「 > 」 를 입력하면 화면에 출력해야 할 결과를 result.txt 라는 파일에 저장하게 할 수 있다.


반대의 경우( 「 > 」 기호를 사용하는 경우 )는 아래와 같다.


 $ grep init < test.txt 

 


test.txt 파일을 읽어서 init 이라는 단어가 있는 줄만 화면에 출력한다.


원래 grep 명령어는 키보드 입력이나 다른 명령어의 결과 입력을 기반으로 동작하는 명령어인데


리다이렉션을 이용해서 text.txt 파일의 내용을 입력으로 쓸 수 있게 해준다.


만약 리다이렉션을 이용하지 않고 파이프를 이용한다면 아래와 같이 해도 동일한 결과를 얻는다.



 $ cat text.txt | grep init 

 


리다이렉션은 화면에 출력할 내용( 표준 출력 ) 이나 사용자가 키보드로 입력한 내용(표준 입력)의 방향을


파일이나 특정 장치로 방향을 바꾸는데 사용된다.


파이프에 비해서 조금 어려울 수 있지만 다행이 리다이렉션은 파이프에 비해서 초보자들이 많이 쓸 일은 없다.







Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Kakao] Kakao 계정으로 Login 하기[Kakao] Kakao 계정으로 Login 하기

Posted at 2020. 1. 31. 11:16 | Posted in API/Kakao




■ 카카오 계정으로 로그인 하기




# 소스코드

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=ege"/>

<meta nmae="viewport" content="user-scalable=no,inital-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,width=device-width">

<title>:: Custom Login Demo - Kakao JavaScript SDK ::</title>

<script type="text/javascript" src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>

<script type="text/javascript">

    document.addEventListener("DOMContentLoaded", function() {


        // @details 카카오톡 Developer API 사이트에서 발급받은 JavaScript Key

        Kakao.init( "발급받은 JavaScript Key" );


        // @breif 카카오 로그인 버튼을 생성합니다.

        Kakao.Auth.createLoginButton({

              container : "#kakao-login-btn"

            , success : function( authObj ) {


                // console.log( authObj );


                Kakao.API.request({

                      url : "/v1/user/me"

                    , success : function( res ) {


                        // console.log( res );


                        // @breif 아이디

                        document.getElementById( "kakaoIdentity" ).innerHTMLres.id;


                        // @breif 닉네임

                        document.getElementById( "kakaoNickName" ).innerHTMLres.properties.nickname;


                        // @breif 프로필 이미지

                        document.getElementById( "kakaoProfileImg" ).srcres.properties.profile_image;


                        // @breif 썸네일 이미지

                        document.getElementById( "kakaoThumbnailImg" ).srcres.properties.thumbnail_image;


                    }, fail : function( error ) {

                        alert( JSON.stringify( error ) );

                    }

                });

            }

            , fail : function( error ) {

                alert( JSON.stringify( error ));

            }

        });

    });

</script>

</head>

<body>

    <div>카카오 아이디 : <span id="kakaoIdentity"></span></div>

    <div>닉네임 : <span id="kakaoNickName"></span></div>

    <div>프로필 이미지 : <img id="kakaoProfileImgsrc=""/></div>

    <div>썸네일 이미지 : <img id="kakaoThumbnailImgsrc=""/></div>

    <br/>

    <a id="kakao-login-btn"></a>

</body>

</html> 




# 출력결과







'API > Kakao' 카테고리의 다른 글

[Kakao] Kakao 계정으로 Login 하기  (0) 2020.01.31
[Kakao] KakaoTalk으로 링크 공유하기 API  (0) 2018.08.31

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Ubuntu] 파일찾기 및 파일내용 검색 하기[Ubuntu] 파일찾기 및 파일내용 검색 하기

Posted at 2020. 1. 28. 14:37 | Posted in Linux/Ubuntu




■ 터미널 - 특정 파일 찾기





#01. 파일찾기 - find 명령어



특정 파일을 찾는 방법은 아래와 같다.


 $ find . -name '*.jpg'




위 명령은 현재 디렉토리와 그 하위 디렉토리를 검색해서 모든 jpg 파일을 찾으라는 명령이다.


다른 예제 하나 더 살펴보자.


 $ find / -name 'Music' -type d 

 



위 명령은 루트( root ) 디렉토리부터 검색해서 Music이라는 폴더를 찾으라는 명령이다.




그 외에도 find 명령은 매우 다양한 옵션으로 파일을 찾을 수가 있다.


예를 들어 특정 크기 이상의 파일만 찾을 수도 있다.


더 많은 옵션을 살펴보고자 한다면 help 명령을 이용하자.



 $ find -help 

 




#02. 파일찾기 - whereis 명령어


 $ whereis vi



위 결과를 살펴보면 vi 실행 파일이 어디 있는지 물어보고 있다.


whereis 명령어는 특정 실행 파일의 위치와 실행 파일과 관련된 파일들의 위치를 알려주는 명령어이다.


이 명ㄹ형어는 모든 파일을 다 찾는 명령어는 아니고 실행 파일이나 라이브러리 파일 같이


시스템 관련 디렉토리에 존재하는 파일만을 찾는다.





#03. 파일찾기 - locate 명령어


 $ locate test.txt




이 명령어는 find와 비슷하게 동작한다.


특정 파일명을 넣으면 해당 파일명이 포함된 파일들을 검색해 준다.


find보다 속도가 좀 빠르지만 다양한 옵션은 부족하다.









■ 터미널 - 파일 내용 검색하기





간혹 파일명이 아니라 파일의 내용 중에서 뭔가를 찾고 싶은 경우가 있다.


특정 키워드가 파일 내용 안에 있는지 검색할 수 있는 방법이 있다.


 $ find . -name '*.txt' | xargs grep -n test




현재 디렉토리와 하위 디렉토리에 있는 확장자가 txt인 파일들 중에서


저장된 내용중에 test라는 문자열을 포함하는 파일을 찾으라는 명령이다.


또는 아래처럼 입력해도 된다.



 $ grep -r test ./

 



현재 디렉토리와 하위 디렉토리를 검색해서 test 라는 문자열을 가지고 있는 파일을 찾으라는 명령이다.


파일의 내용을 살펴보고자 한다면 아래와 같이 입력한다.



 $ cat test.txt




파일이 너무 크다면 가장 끝에 몇 줄만 보고 싶을 수 있을 것이다.



 $ tail -n 50 test.txt




위 명령어는 끝 부분 50줄만 보여주는 명령이다.


tail 명령어 반대로는 head 라는 명령어도 있다.


파일의 맨 앞 줄 몇 라인만 보여주는 명령어이다.






Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Ubuntu] Ubuntu18.04 LTS 버전 Numix 테마 적용하기[Ubuntu] Ubuntu18.04 LTS 버전 Numix 테마 적용하기

Posted at 2020. 1. 23. 14:10 | Posted in Linux/Ubuntu





■ 우분투 18.04 LTS 버전에 누믹스 테마 적용하기




 $ sudo add-apt-repository ppa:numix/ppa




 $ sudo apt-get update

 



 $ sudo apt-get install numix-gtk-theme numix-icon-theme-circle

 



 $ sudo apt-get install gnome-tweak-tool

 







 $ sudo apt-get install chrome-gnome-shell

 










Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[PHP] JSON 데이터 화면에 출력하기[PHP] JSON 데이터 화면에 출력하기

Posted at 2020. 1. 16. 13:53 | Posted in PHP




참고 : https://kdevkr.github.io/archives/2018/understanding-http-content-types/




■ JSON 데이터 JSON 타입으로 변환해서 처리하기




PHP 상에서 API를 제공하는 경우 그 형식이 JSON 타입일때


단순히 TEXT 형태로 JSON 데이터를 나열하는것이 아니라.


Content-Type의 헤더를 :application/json으로 페이로드와 함께 HTTP 요청을 하게 되면


서버가 JSON 타입으로 변환해서 처리한다.




  Content-Type:application/json; 을 설정한 경우


# 소스코드

<?php

header( "Content-Type:application/json;charset=UTF-8" );


$json = '{

    "SlayerS_BoxeR" : {

          "name" : "임요환"

        , "species" : "테란"

        , "birthday" : "1980-09-04"

        , "team" : "SK텔레콤 T1"

    }

    , "YellOw" : {

        "name" : "홍진호"

      , "species" : "저그"

      , "birthday" : "1982-10-31"

      , "team" : "KTF 매직엔스"

    }

    , "Nal_rA" : {

        "name" : "강민"

      , "species" : "프로토스"

      , "birthday" : "1982-03-15"

      , "team" : "KTF 매직엔스"

    }

}';

echo $json;

?>




# 출력결과





 Content-Type:text/html인경우



# 소스코드

<?php

// @breif Content-Type 주석처리

// header( "Content-Type:application/json;charset=UTF-8" );


$json = '{

    "SlayerS_BoxeR" : {

          "name" : "임요환"

        , "species" : "테란"

        , "birthday" : "1980-09-04"

        , "team" : "SK텔레콤 T1"

    }

    , "YellOw" : {

        "name" : "홍진호"

      , "species" : "저그"

      , "birthday" : "1982-10-31"

      , "team" : "KTF 매직엔스"

    }

    , "Nal_rA" : {

        "name" : "강민"

      , "species" : "프로토스"

      , "birthday" : "1982-03-15"

      , "team" : "KTF 매직엔스"

    }

}';

echo $json;

?>




# 출력결과



위 두개의 결과처럼 똑같이 JSON 데이터를 화면에 뿌려주지만


어떻게 인식하고 처리하는지 여부를 한눈에 확인할 수 있다.









Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Flow.Txt] 윈도우7 종료 우분투로 이전[Flow.Txt] 윈도우7 종료 우분투로 이전

Posted at 2020. 1. 16. 10:28 | Posted in Flow.Txt





Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Flow.Txt] 개발자 이지만 네이버 웨일을 사용중입니다.(2020.01.08)[Flow.Txt] 개발자 이지만 네이버 웨일을 사용중입니다.(2020.01.08)

Posted at 2020. 1. 8. 11:16 | Posted in Flow.Txt



업무특성상 아무래도 여러 브라우저를 열고 테스트를 하는데.


네이버 디자인이 변경되었네 라고 넘어갔다가.


어라 왜 다른지 하고 보던중에 알게 되었다.





네이버 웨일만 달랐던 거였다...


이런....


앞으로 네이버 메인페이지 디자인 변경 반응에 대한 테스트는 웨일에서 진행하는 걸려나?







기본적으로 요즘 개발자라면...


요즘 개발자들이 가장 많이 사용하는 구글 크롬


나처럼 고인물들이나 좋아하는 모질라 파이어 폭스가 기본 브라우저일 것이다.

(거기에 최종적으로 확인을 위한 마이크로 소프트의 인터넷 익스플러 까지)



그래서 네이버에서 브라우저가 나왔다고 했을때.


그닥 새로운 엔진을 사용한것도 아니라 구글 크로미움 기반이었으니


관심도 없었지만, 최근 업데이트로 인해 조금 관심을 가지고 사용해 보기 시작했다.






위와 같이 번역을 위한 파파고...


그리고 업무중 가벼운 눈팅을위한 옴니 테스킹 기능


이것때문에 라도 한번 설치를 해보았던건데...


이것들이 크게 쓸만해서 서포트 브라우저를 구글 크롬에서 네이버 웨일로 갈아타게 되었다.








특히나 컴퓨터에서 보는 화면과 모바일에서 보는 화면이 다르고...


파폭으로 개발하고, 크롬으로 확인하는 나같은 놈한테...


서포트 해주는 기능이 많은건 확실히 좀 편하달까?




※ 개인 사용율


1위. 파이어 폭스 - 이유 : 개발자 도구, 웹 표준에 가장 가깐운 브라우저


2위. 웨일 - 이유 : 옴니 테스킹, 모바일창, 크로미움 기반 브라우저 테스트용


3위. 크롬 - 이유 : 세상에서 제일 많이 쓰는 브라우저




이런것 같다.


그치만 네이버 웨일은 결국 내 사용율 1위는 불가능 할거다...


일단 기본검색이 구글이 아니라 네이버라는 가장 큰 단점...


그리고 너무도 익숙하고 편한 파이어 폭스의 개발자 도구...

(아 나도 고일때로 고였어... 넷스케이프 만세...)




2019년은 네이버가 국내 전자상거래 기업 1위, 웹툰 1위


그리고 라인과 야후 재팬의 합병...


손정의님의 투자등...


YouTube의 등장으로 검색시장도 많이 빼앗기고 있다지만.


요즘 네이버는 여전히 변화에 잘 적응하는 기업이라는 생각이 든다.







Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Utility] Doxygen을 이용한 프로젝트 및 개발 코드 관리[Utility] Doxygen을 이용한 프로젝트 및 개발 코드 관리

Posted at 2020. 1. 3. 17:07 | Posted in Developer Tool



참고 : https://www.slideshare.net/arload/doxygen-33932243




■ 독시젠(Doxygen)이란?





· 독시젠은 소프트웨어 레퍼런스 문서 생성기 이다.


· 독시젠 주석 문법을 사용함으로서 설명서 자체가 코드로 되어 있기에 문서와 코드를 상호 참조 할 수 있다.




처음 코딩을 시작할 때붜 독시젠을 사용함으로서 나중을 위한 주석 작성을 하게 되며,


이후 간단한 작업을 거쳐 손쉽게 레퍼런스 문서를 획득할 수 있다.








■ 윈도우즈(Windows)에서 독시젠 설치 하기




제일먼저 http://www.doxygen.nl/download.html 접속하여 윈도우용 독시젠을 다운로드 받는다.





Downloads 페이지에서 doxygen-버전NO-seup.exe 파일을 다운로드 받는다.








■ 독시젠 주석 작성법




#01. 메인 페이지 주석 예시


    /**

     * @mainpage       메인페이지 제목

     * @brief              간략한 설명

     * @details           자세한 설명

    */





#02. 파일 페이지 주석 예시


    /**

     * @file                파일 클래스 이름

     * @brief              간략한 설명

     * @details           자세한 설명

     */





#03. 패키지 주석 예시


    /**

     * @namespace       org.nhnnext

     * @brief                패키지 간략 설명

     * @details             패지키 자세히 설명

     */

    package org.nhnnext;





#04. 클래스 주석 예시


    /**

     * @brief           클래스 간략 설명

     * @details         클래스 자세히 설명

     * @author         이름, 이메일

     * @date            YYYY-MM-DD

     * @version        0.0.1

     */

     class 클래스_이름 extends 자식_클래스_이름 {

         /* do nothing */

     }





#05. 메서드 주석 예시


    /**

     * @brief            메서드 간략 설명

     * @details          메서드 자세히 설명

     * @param          args 콘솔 파라미터

     * @returnCnt      프로그램 상태

     *

     * @bug              메모리 누수 있음

     * @todo             버그 해결 해야함

     * @Exception      StringIndexOutOfRangeException

     *

     * @see               NewClass

     * @see               http://magic.wickedmiso.com/

     */

    public static int main(String[] args)

    {

        ...

        retrun( status );

    }





#06. 메타 데이터 주석 예시


    /**

     * @mainpage    프로그램의 전체 개요 등을 설명한다.

     * @section        프로그램의 개요 별로 설명한다.

     * @versions      프로그램 버전을 설명한다.

     * @breif           간략한 설명을 쓸 때 사용한다.

     * @details        자세한 설명을 쓸 때 사용한다.

     * @files           파일 이름을 구별할 때 사용한다.

     * @author        작성자 이름을 나타낼 때 사용한다.

     * @date           작성날짜를 나타낼 때 사용한다.

     * @param        함수 파라미터를 설명한다.

     * @return         함수 리턴값을 설명한다.

     * @exeception  예외 처리를 설명한다.

     * @throws        throw하는 객체나 변수 등을 설명한다.

     * @see            참고할 함수나 페이지를 지정한다.

     * @todo          해야할 일에 대해서 따로 리스트를 생성한다.

     * @bug           버그에 대해서 따 리스트를 생성한다.

     * @code          중요코드를 설명할때 시작 지점을 가리킨다.

     * @endcode     중요코드를 설명할때 종료 지점을 가리킨다.

     */











■ 독시젠 설정 및 사용방법




#01. Wizard > Project


 ① 프로젝트 루트 폴더를 지정한다.

 ② 프로젝트 이름과 버전을 지정한다.

 ③ 소스 파일이 있는 폴더를 지정한다.

 ④ 모든 하위 폴더를 재귀적으로 스캔한다.

 ⑤ 독시젠 문서를 생성할 폴더를 지정한다.




#02. Wizard > Mode


 ① 각 함수마다 사용한 함수로의 링크를 생성한다.

 ② 진행한 프로젝트의 개발 언어를 선택한다.




#03. Wizard > Output


 ① 문서 왼쪽에 탐색 트리를 보여준다.




#04. Wizard > Diagrams


 ① 소스간의 관계를 Graphviz로 표현해 준다.




#05. Expert > Project


 ① 출력 결과에 쓰여질 언어를 한국어-영어 같이 사용으로 선택한다.

 ② 항상 상세 정보를 보여준다.

 ③ 소멸자와 상속자를 제외한 상속된 모든 멤버를 보여준다.




#06. Expert > Build


 ① 소스코드의 모든 요소가 문서화 대상이 된다.

 ② 클래스 내의 모든 private 멤버가 문서화 대상이 된다.

 ③ 클래스 내의 모든 static 멤버가 문서화 대상이 된다.




#07. Expert > Source Browser


 ① 함수 설명시 함수 코드를 보여준다.




#08. Expert > Dot


 ① 클래스 상속구조 다이어그램을 그린다.

 ② 다이어 그램을 UML 형식으로 그린다.




#09. Expert > Dot


 ① dot_path의 지정 경로에 Graphviz 이미지가 생성된다.




#10. Run


 ① 독시젠을 가동시켜 문서를 생성한다.

 ② Show Html output 버튼이 활성화되면 독시젠 문서 생성이 완료되었다.





#11. Show Html Output



모든 작업이 완료되면 위와같이.


HTML 형태로 진행한 프로젝트의 문서화가 이루어 진다.





Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

[Flow.Txt] 첫 은행 적금 만기(2019.12.27)[Flow.Txt] 첫 은행 적금 만기(2019.12.27)

Posted at 2020. 1. 2. 18:53 | Posted in Flow.Txt





2년간 100만원씩...


적금을 부었던 통장이 만기가 되었다.







30살 넘은 직장인이 만기가 된 통장이 하나뿐이라는게...


어찌보면 참 부끄럽지만...


사회 생활 시작할 때부터 빚부터 지고 시작한걸 다 마무리 하고...


2000만원이 조금 넘는 돈이 통장에 들어왔다.


온전히 집을 사는데 돈이 들어가는데 써버ㄹ리게 되었지만...


ㅋㅋ 이게 어디냐...






Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기