'사용유틸리티'에 해당되는 글 6건

  1. PhpStorm 관련 플러그인 추천
  2. 무료 캡처툴 picpick
  3. [PHP=>Ci] 코드이그나이터 내에서 레이아웃페이지를 사용하기
  4. [php]엑셀 다운로드 기능구현화
  5. PHPSTORM 간 SVN 세팅 및 처리방법
  6. phpstorm 관련 설정 1

어영부영 IDE의 소중함을 깨닫고 써온 결과 

 

자체적으로 내장되어있는 플러그인(데이터베이스 플러그인,git등)을 제외한 

 

필요에 의해 설치하여 사용하는 플러그인 9가지 정도를 소개하고자 합니다.

 

Activate Power mode 가 있지만 쓰다보면 어느순간 물리는 상황이 발생되어 따로 추가하지 않았습니다

 

 

 1. background image plus +

이미지 디렉토리를 설정한 이후 IDE 뒤에 설정한 백그라운드를 특정시간마다 랜덤하게 변경해주는 플러그인입니다.

디렉토리 안에 연예인사진이든 씹떡사진이든 다때려넣고 코딩할때마다 가끔씩 바뀌는 백그라운드는 

그냥 미관상의 만족도를 올려줍니다.

 

2. base64 image encoder

이미지가 필요한데 가끔가다 css나 img src등으로 땡겨오기 귀찮을때 이미지를 텍스트화하여 사용합니다.

가끔가다 쓰는거지만 진짜 괜찮아요.

 

3. Git Commit template

깃커밋메세지를 그나마 있어보이게 작성할수있게 해줍니다.

엄청 필요한건 아니지만...이래저래 템플릿 메세지로 가독성있게 작성해줄수 있다정도로만 알고계시면 좋습니다.

 

4. GitToolBox

...소스부검에서의 온탑 플러그인입니다. 파일이 열려있는상태에서 해당라인을 언제 누가 수정했는지 커밋메세지까지 보여집니다.

대략 이런느낌으로요...

 

5.image Icon viewer

간혹 열리지않는 이미지파일(png,ico,gif,jpg..등)을 미리보기로 보고싶을경우 설치해주면 좋습니다.(..)

이전에 열렸었던거 같은데 파일이 열리지않아 설치했습니다.

보통 base64 image encoder를 설치하고자 하신다면 꼭 같이 설치해주시기 바랍니다.

 

 

6. JSON Editor

json을 편집하거나 트리타입으로 보고싶은데 다른프로그램을 추가로 켜서확인하기 귀찮아서 설치했습니다.

엄청나게 파워풀한 기능은 아니지만 프로그램하나 더 안켜도 된다는것에 만족하실 수 있다고봅니다.

 

7. korean Language Pack

메뉴등을 한글화 해줍니다.기계번역된게 아닌 로컬라이징이 제대로 되어있으며 액션에서 검색할경우

한국어 영어 전부 색인이되기때문에 굳이 깔지않을 이유가없어 설치했습니다.

 

8. Laravel

라라벨 트래킹 및 자동완성등을 보조해주는 플러그인입니다.

라라벨을 사용하신다고하면 묻지도 따지지도 말고 설치해주세요

 

9. regexpTester

정규식을 미리 테스트해볼수 있는 플러그인입니다.

문제는 정규식 포맷을 구글에서 검색하기 때문에 에뮬레이팅하는 수준이지만 있으면 쓰게되는 플러그인이네요

 

 

 

 

기존에는 메시지전달로만 이야기를 나누었지만 스마트폰의 보급화 LTE,기가급 회선의보급화로 인해


자신이 보는 화면을 캡처해서 설명을 하거나. 하는 경우가 많아졌습니다


관련 매뉴얼을 만든다거나 할경우에는 두말할거없이 편리하죠


picpick은 따로 프로그램을 실행 ->영역설정이후 캡처->저장이 아닌


화면 캡처 단축키를 실행하여 (printscr 과 ctrl,alt,shift 조합) 화면을 캡처하여 


이미지편집툴에 로드시켜주거나,특정폴더에 자동저장,ftp업로드,클립보드등록처리를 해줍니다


지원하는 캡처종류는 기존 캡처프로그램과 특출나게 차이나는 부분은 없습니다만.


클립보드등록 및 자동저장,그리고 


브라우저상에서 세로스크롤이 긴 컨텐츠를 알아서 이어붙여주는 스크롤캡처가 


이툴을 사용하게되는 이유중에 하나라고 보여지네요


설치및 관련 소개는 아래에서 확인하시면되고요


http://ngwin.com/kr



설치가 되면 시스템 트레이에 실행되어있는 상태라면 우클릭 이후 프로그램설정을 보게되면


단축키화면을 볼수있게됩니다


1. 전체화면 캡처

printScreen 키를 눌렀을때와 동일하게 현재화면을 전체캡처합니다.


2. 활성화된 윈도우 캡처하기

현재 활성화된 윈도우창만을 캡처합니다(alt+printScreen과 동일합니다.)


3. 윈도우 컨트롤 캡처하기

윈도우상에서도 컨트롤 영역부분을 프로그램에서 인식하 해당부분만을 캡처합니다만 해당 컨트롤러 위에 창이 있다면 

덮어진채로 캡처가 됩니다.

말로만 설명이 어려우니 직접 찍은 스크린샷을 보여드리겠습니다.



위와같이 그림판정도로 간단한 이미지편집도 일단은 가능합니다


그림판보다 살짝 좋아보이는 자체에디터에서 수정하여 캡처이미지를 저장할수있습니다.


필요한정보쪽만 캡처할수있다는게 일단 좋긴한데 위와같은 특징이 있으니 유의하시면 될거같습니다.


4. 자동스크롤캡처


캡처화면으로 보겠습니다




위와같이 스크롤이 큰 컨텐츠를 캡처하게 될경우에는 이어붙이거나 하는케이스가 많은데요


이 기능을쓰게되면 자동으로 스크롤을내려가면서 파노라마 촬영하듯이 이어붙여줍니다. 물론 강제로 스크롤을 내리거나


다른행동을 하게되면 깨지긴합니다만. 위와같이 지원하는 케이스는 제가 사용했던 툴중에서는 알툴바내에 캡처정도밖에 없었거든요


심지어 크롬에서는 사용이안되서 대안책을 찾다가 나온케이스기도 했고요.


스크롤캡처를 하게되면 아래와 같이 깔끔하게 캡처가 됩니다.





5. 영역을 지정하여 캡처하기

기본 캡처툴에서 사용하게되는 사각형 형태로 영역을 지정하여 캡처하는 기능입니다


6. 고정된 사각영역을 캡처하기

5번 영역을 지정하여 캡처하기와 유사하게 액자형태의 레이어가 뜨게되는데요 

해당영역을 픽셀단위로 넓이와 높이를 지정하여 원하는 영역에 드래그해 위치시킨 이후 캡처해줍니다.


7.내 마음대로캡처하기

...마우스로 낙서하듯이 그리면 해당영역만 가위로 자르듯이 캡처가됩니다.


아래에 예시를 보여드리겠습니다



위와같이 영역을 멋대로 그려서 처리할수있습니다.마우스로는 한계점이 있는데 타블렛을 이용해서 처리하면 이쁘게 딸수있지않을까 싶네요.


물론 전 영역을 캡처하고 포토샵같은 이미지툴을 사용하는걸 추천드리긴합니다[...]


캡처기능은 대략 이정도가 되겠네요.


1차적인 메리트는 개인이든 회사든 무료라는게 일단 큰메리트


2차적인 메리트는 단축키로만 캡처가되며 스크롤캡처가 되는것 정도가 있네요


캡처를 자주사용하게되신다면 이용해봄직한 프로그램인듯 싶습니다.


일단 제 기준에서는 굉장히 만족도가 높은 프로그램입니다. 자주 사용하게될거같아 포스팅해둡니다.






CI는 라라벨과 다르게 뷰페이지를 처리하는 블레이드템플릿처럼 섹션별로 바인드하는 방식이 없다는걸 확인.


검색을 하다보니 클래스확장을 통해서 맞춰주고 처리를 하더군요


bootstrap내 대시보드 레이아웃 샘플로 작업을 연동하려다 보니 css,js의위치에따라 레이아웃이 깨지는걸 확인-_-;;


결국 참조하여 만들기로 했습니다. 

/application/core/ 디렉토리내에 MY_Loader.php라는 클래스를 만듭니다.(/application/config/config.php 내에 $config['subclass_prefix'] 값을 따라갑니다 디폴트값은 _MY입니다.)






생성을 했으면 클래스파일을 써주어야겠죠


대충대충 만들어재낍니다

소스 코드는 아래에 넣어둡니다.


class MY_Loader extends CI_Loader{
    public function admintemplate($template_name, $vars = array(), $return = FALSE)
    {
        $param=array(
            'template_name'=>$template_name,//컨텐츠 템플릿 뷰의 경로
            'vars'=>$vars,//넘길 파라미터
            'leftmenu'=>isset($vars['leftmenu']) ? $vars['leftmenu'] : 'adminlayout/leftmenu',//레이아웃 껍데기1
            'topmenu'=>isset($vars['topmenu']) ? $vars['topmenu'] : 'adminlayout/topmenu',//레이아웃 껍데기2
            'footer'=>isset($vars['footer']) ? $vars['footer'] : 'adminlayout/footer',//레이아웃 껍데기3
            'ResourceTop'=>isset($vars['loadResource']['top']) ? $vars['loadResource']['top'] :array(),//레이아웃껍데기4
            'ResourceBottom'=>isset($vars['loadResource']['bottom'])? $vars['loadResource']['bottom'] : array(),//레이아웃껍데기5
        );
        $this->view('adminlayout/body', $param);
    }
    //JS 로드
    public function loadJs($src){
        if(is_file(".".$src)){
            return '';
        }

    }
    //CSS로드
    public function LoadCss($src){
        if(is_file(".".$src)){
            return '';
        }
    }
}


레이아웃이야 종류에따라 전부 다를테니...전 관리자대시보드기반인지라 사용자함수처리를 admintemplate으로 처리해뒀습니다.

이정도 검색할정도면 이미 뷰페이지경로에 대한 이해도가 있어 검색했을거라믿습니다.

컨트롤러에서 사용하는 방법입니다


    public function index(){
        $loadResource=array(
            'top'=>array($this->load->loadCss("/resource/admin/vendors/iCheck/skins/flat/green.css"),),
            'bottom'=>array($this->load->loadJs("/resource/admin/vendors/iCheck/skins/flat/green.css"),),
        );
        $return=array('loadResource'=>$loadResource);
        $this->load->admintemplate('admin/main',$return);
    }


$this->load->loadCss("/resource/admin/vendors/iCheck/skins/flat/green.css")

의 경우 위와같이 리소스파일(js,css) 파일을 로드하는 형태입니다  body에서 처리되는 admintemplate에서 첫번째인자가 컨텐츠 템플릿이라고 보시면됩니다.


그럼 body쪽을 확인해 보실까요? top과 bottom으로 나눈이유는 위에 이미 이야기했으니 언급은 하지않겠습니다.




...뭔가 엄청 많지만 기본 레이아웃 껍데기안에서 $this->view 를 통해 처리가 되버립니다.해결은 얼추 보긴했습니다만


라라벨에서 지원하는 블레이드템플릿이 얼마나 좋은건지 다시한번 일깨워주네요. 일단 베이직하게 사용할수있게 body쪽을 아래에 공개합니다.


...syntaxhighlighter가 정상적으로 인식을 하지않아 텍스트로 남겨둡니다.



============================================================================================


<!DOCTYPE html>

<html lang="ko">

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <!-- Meta, title, CSS, favicons, etc. -->

    <meta charset="utf-8">

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

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>관리자메인</title>

    <?php foreach($ResourceTop as $k =>$r01):?><?=$r01.PHP_EOL?><?endforeach;?>

</head>

<body>

<?php $this->view($leftmenu)?>


<?php $this->view($topmenu)?>

<!-- page content -->

<?php $this->view($template_name)?>

<!-- /page content -->

<!-- footer content -->

<?php $this->view($footer)?>

<!-- /footer content -->

<?php foreach($ResourceBottom as $k =>$r02):?><?=$r02.PHP_EOL?><?endforeach;?>

</body>

</html>


============================================================================================


'사용유틸리티' 카테고리의 다른 글

PhpStorm 관련 플러그인 추천  (0) 2021.04.28
무료 캡처툴 picpick  (0) 2017.06.20
[php]엑셀 다운로드 기능구현화  (0) 2017.05.18
PHPSTORM 간 SVN 세팅 및 처리방법  (0) 2017.04.24
phpstorm 관련 설정  (1) 2016.10.31
간혹 xls로 내려받게되는 경우가 있습니다
엑셀의경우 65535행 이상 read가 되지않는 골이아픈일이 있습니다
페이지네이션이 되는것마냥 시트를 변경해서 돌리는 방법이 없지않을까 해서 찾아서 만들었던적이 많은데
없을때마다 만들고앉아있어서-_-;
그냥 이번에 대충이나마 제가보기 편하게 정리해서[...] 블로그에 포스팅합니다. 사용하는 참고로 플러그인은 PHPExcel입니다.



class xlsdown  {
    function __construct($argv){
        $this->filename=$argv['filename'];
        $this->sql=$argv['sql'];
        $this->pageLine=$argv['pageLine'];
    }
    function fetch(){
        $result=sql_query($this->sql);
        for($i=0;$i<$data=sql_fetch_array($result);$i++){
            $datas[]=$data;
        }
        $arr=array_chunk($datas,$this->pageLine );
        $this->downloads($arr);
    }
    function downloads($datas){
        require_once "/phpExcel/Classes/PHPExcel.php";
        // Create new PHPExcel object
        $objPHPExcel = new PHPExcel();
        foreach($datas as $k1 =>$datas01){
            // Add some data
            $sheetIndex=$k1;
            //0번일때는 굳이 생성하지않아도됩니다.
            if($k1!=0){$objPHPExcel->createSheet();}
            $objPHPExcel->setActiveSheetIndex($sheetIndex);
            $cols=array_keys($datas01[0]);

            foreach ($cols as $k2=>$collName){
                $code=chr(65+$k2).'1';
                $objPHPExcel->getActiveSheet()->setCellValue($code,$collName);
            }
            foreach ($datas01 as $k3=>$records){
                foreach($records as $k4 => $recordcol ){
                    $code02=chr(array_search($k4,$cols)+65).($k3+2);
                    $objPHPExcel->getActiveSheet()->setCellValue($code02,$recordcol);
                }
            }
            $objPHPExcel->getActiveSheet()->setTitle(($sheetIndex+1).'PAGE');

        }
        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);
        // Redirect output to a client’s web browser (Excel5)
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$this->filename.'.xls"');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');
        // If you're serving to IE over SSL, then the following may be needed
        header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
        header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header ('Pragma: public'); // HTTP/1.0
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
    }
}

다운로드 페이지에서의 사용방법은
include "./xlsdown.class.php";
$sql=$_REQUEST['sql'];//넣고자 하는 select type의 sql 쿼리
$pageLine=$_REQUEST['pageLine'];//시트별로 리스팅할 rows의 갯수
$filenames=$_REQUEST['filenames'];//파일명(뭐...끼워맞춰 사용하시면됨)
if($sql && $pageLine && $filenames){
    $xlsdown=new xlsdown(['filename'=>$filenames.date("YmdHis"),'sql'=>stripcslashes($sql),'pageLine'=>$pageLine]);
    $xlsdown->fetch();
}else{
    echo "alert('잘못된접근입니다');";
}

웹브라우저를 통해서 요청빈도가 높은케이스이므로
일단 참조만 하시고 직접만드시는걸 권장드립니다.
물론 소스퀄리티가 개판이니 참조만 하시고 직접만들어서 사용하시는걸 권장드립니다 ㅋㅅㅋ

phpstorm 같은경우(인텔리제이 기반의 IDE의 경우)



svn기능이 기본적으로 제공은 되지만 'svn'의 자체프로그램은 별도로 설치해주어야합니다



결국 설치를 해주어야하는 부분은 SVN 입니다



svn프로그램은 여러가지가 있습니다 silk, tortoise 등이 있으나


탐색기에서도 설치가 가능해야하기때문에 



https://tortoisesvn.net/downloads.html 의 설치파일을 받아서 설치합니다. 



을사조약맺듯이 프로그램을 설치하다보면 아래 두번째줄에 commandlist client tools가 있는데요...ide간 연동을 위해서라도 이부분을 꼭 설치해주셔야합니다.





위 사이트에서 한가지 더받고자 한다면 한글언어팩이 있는데요.이부분을 설치해주시면 파일간 충돌이 났을때의 메세지를 한글로 


볼수있다는 좋은 장점이있습니다.[누가 먼저 커밋을했고 니 버전이 낮아서 커밋이 안되었다 머지하겠냐등의 내용등이죠]



여러분들에게 SVN을 이용해서 작업을 진행한다고 하면 


전반적으로 SVN의 계정정보,및 url을 하나 던져줄겁니다. 일단 리포지토리에서 체크아웃(파일의 구조정보를 말합니다)을 받습니다


그러면 아래와 같은 창이 뜰겁니다.




세팅된 저장소 URL을 알려줄겁니다. 계정도 입력하라고 뜰거고요... 정보입력 및 세팅이 끝났으면 확인을 눌러주시면 svn서버내에서 형상에 맞추어


파일들을 쭉쭉내려받습니다.


아래와같이 체크아웃이 끝난상황이면 됩니다. 이제 php스톰에 가서 file -> New Project from Existing Files 로 프로젝트를 걸어줍니다.

 




첫번째 두번째 문항이 있으나 첫번째를 선택해주신다음 Next






체크아웃을 받은 디렉토리내를 선택하신뒤  Project Root 를 클릭해줍니다(이미지와 같이 연두색으로 활성화가 됩니다.)






완료가 되었습니다 완료가 된 시점에서 VCS 메뉴탭에서 commit과 Update가 활성화가 되어있다면

세팅이 끝난겁니다



.svn이라는 숨김파일 디렉토리를 IDE가 인식해주는거 같습니다만....좋게좋게 사용하면 더욱좋겠죠.응용법은...구글링을 통해서 물어보시는게 더 빠릅니다.


제가 블로그내 답변을 남겨드리는 상황이 아닌지라서요^^;;



개인적으로는 백업하고자하는 시점에 커밋을해서 커멘트를 남기면 말도안되는 백업본을 만들어 둘수도있습니ㄷ..



기존 php 개발시 문제가 되었던 뜨거운감자같은 이슈들(ftp, sftp를 통한 직접수정) 


깃이라던가 svn을 사용하여 형상관리를 하고자 하거나,,타이핑 치는맛이 있는 파워모드 적용이라거나[...]


실은 editplus가 결단코 나쁜프로그램은 아닙니다만..넘어가려고하면 비슷한 환경이 나와줘야 이질감도 덜할테니까요


장점은 코드어시스턴트 함수 트레이싱(리버싱등),sql 클라이언트,터미널등의작업을 idea내에서 전부 할수있다는 점이 강점이고요


단점은 역시 무거운거겠죠...뭐...그래도 안돌아가는것도 아닙니다-_-;;아톰프로세서의 태블릿에서도 돌아가는걸 확인했습니다.


setting의경우 테마는 무엇을 쓰든 상관없습니다(어차피 에디트플러스테마로 갈아치울거니까요)


30일 무료버젼이든 학생계정을 받아 설치를 했다면 


keymap의경우에는 visual studio로 변경해주시는게 좋습니다.


(인텔리제이,decula eclipse 는 기존에 에디트플러스의 단축키와는 다르게 복사,붙여넣기등의 설정이 다른단축키인지라 나중에 찾기가 힘들어집니다)


처음 프로젝트는 생성하지마시고 기본 텍스트파일등을 열어 두시는게 좋습니다.


제일먼저 해주셔야 할일은 아무래도 폰트입니다. 해상도에따라 다르지만 폰트가 기울여진 상태로 보여 가독성자체가 없어지거든요


상단 메뉴 file->settings를 눌러 여신다음 appearance로 가주시면 


Override default fonts by(not recommended) 라는 체크박스가 있을겁니다. 체크해주시고요 IDEA의 사용하고자 할 폰트와 사이즈를 선택해주시고 Apply 혹은 ok를 눌러주세요




좌측 상단에 검색영역에 검색하면 필터가되니 자주이용해주시면됩니다.


다음은 ftp입니다

상단 메뉴 file->settings를 눌러 build,execution, deployment->deployment ftp 설정 추가해주시면 됩니다.




추가로 저장할때마다 업로드를 하고자 한다면 아래의 옵션을 선택해주세요 개인적으로 코드 추적을위해서는 로컬작업후 업로드가 좋긴합니다만[...]




설정뒤 탐색기를 여시고자 한다면



상단메뉴 View ->Tool Windows Remote Host를 클릭하시면 관련윈도우가 나옵니다.



다음은 핵심인 에디트플러스 테마적용법입니다. Colors & Fonts 에 들어가서 처리해줘야합니다만 아마 변경처리가 안될겁니다. Save As 를 한번 해주시고 저장처리를 하고


컬러와 폰트가 변경가능해집니다-_-;;한번은 해줘야하더라고요




이후 phpstorm의 사용자 설정파일 윈도우 10 기준 C:\Users\사용자이름\.PhpStorm2016.2\config\colors 안에 제가올려둔 Editplus_1.icls 파일을 복사해주시고


phpstorm 을 재시작하여 설정을 잡아주시면 됩니다. 


=========================================================


2016-11-30 remote_host관련 링크에 대해서 설명드립니다.




협업간 svn을 사용하지 않은상태로 ftp로 작업하게 되는 케이스가 더러 있습니다. 정확히는 무지막지하게 많죠.


전반적으로 서버의 루트를 주지도 않을뿐더라 웹호스팅에서 프로젝트를 처리하는 경우가 허다하니까요


실제로 소스충돌로 자신의 작업된 영역이 날아가거나 상대방의 작업된 영역이 날아가는 경우가 있습니다.


그래서 있는게 싱크로나이즈 기능입니다. 보통자신이 연 파일에 한하여 keymap 메뉴에서 sync with deployed to.의 단축키를 잡아주세요 전일단 ctrl+alt+s로 붙여뒀습니다.




임의의 파일로 테스트해보시면 이해가 되실겁니다. 일단 phpstorm으로 작업하는사람(작업자1)과 타idea로 작업하는 사람(작업자2)을 기준으로 해당 파일을 열었습니다


이제 작업자2가 파일을 수정하게 되는경우를 보여드리겠습니다

예 하단부를 보시면 에디트플러스에서 직접 저장처리가 끝나있는 상태입니다 이제 작업자2의 경우 저장전에 싱크를 맞춰주기 위해서 ctrl+alt+s를 눌러 프로젝트가 연결된 서버리스트를 선택하게되면 


파일을 비교할수 있는 디프 윈도우가 열립니다



캡쳐에서는 디렉토리명을 가리기 귀찮아서 상단부분을 캡쳐하지 않았지만 좌측상단 아이콘메뉴중 재생아이콘을 누르게되면 idea가 자동으로 변경처리를 하게됩니다.


편리하지만 장담을 못해쓰질않습니다.좌측은 로컬에 있는 내파일이고 우측에 있는내용은 현재 서버에 올라가있는 파일의내용입니다 가운데에 <<로 되어있는 부분을 눌러 


변경된 내용과 자신의 작업결과물을 잘매핑시켜 올려주시면  끝.....확실히 에디트플러스로 동일파일을 동시협업하게되어 꼬이게되는 불상사는 확연히 줄어듭니다.


물론 귀찮아요...하지만 귀찮다고 에러나고 


남의 작업물을 날려먹고 내작업물을 날려먹고 


다시작업하는것보다는 덜귀찮다고 생각해요


실제로 협업을위해서라도 숙지하고 적용하는 습관은 필요하다고 생각합니다.