git 사용시 커밋하지 않은 변경사항들을 다른 브랜치에 커밋하기

오늘 한참 작업을 하고 나서 보니, master 브랜치에서 작업을 하고 있었더군요. 뜨어! 지금까지 작업한 내용을 다른 브랜치(제 경우에는 develop 브랜치)에 커밋할 순 없나 찾아보니 다행히 방법이 있었습니다. stash를 사용하는 방법입니다.

git stash // 커밋하지 않은 변경사항을 임시로 저장한다.
git checkout develop // develop 브랜치로 변경한다.
git stash pop // 임시로 저장한 변경사항을 복원한다.

도움을 얻은 글은 How to commit my current changes to a different branch in git [duplicate] 입니다.
stash에 대한 더 자세한 사항은 Git 도구 – Stashing 에 잘 안내되어 있으니 참고하세요.
 

leaderboard-728x90

 

Laravel 마이그레이션 작성시 index 존재 여부 확인하는 방법

Laravel에 테이블이나 컬럼이 존재하는지 확인하는 메소드는 있는데 index 존재 여부를 확인하는 메소드는 지원하지 않아서 다소 아쉬운 면이 있었습니다. 찾아보니 doctrine schema manager 를 사용하면 확인이 가능하더군요. Laravel로 마이그레이션 작성해보신 분들은 아래 예제 코드 보시면 바로 이해가 되실거에요. 아마 doctrine/dbal 패키지를 설치가 필요할 거에요.(확인해보진 않았습니다 ^^ 어차피 renameColumn 하려면 필요하니까 걍 설치 고고)

Schema::table('articles', function($table)
{
    $conn = Schema::getConnection();
    $dbSchemaManager = $conn->getDoctrineSchemaManager();
    $doctrineTable = $dbSchemaManager->listTableDetails('articles');

    if($doctrineTable->hasIndex('title')){
        $table->dropIndex('title');
    }
});

 

leaderboard-728x90

 

Laravel 컨트롤러 테스트 작성 요령

테스트를 작성할 때 무엇을 테스트 할 것인지를 결정하는 것이 참 어려운 것 같습니다. Jeffrey Way 의 조언을 따르니 컨트롤러 테스트 작성에 꽤 도움이 되네요.

“Controller tests should verify responses, ensure that the correct database access methods are triggered, and assert that the appropriate instance variables are sent to the view.”

다음에서 발췌: JeffreyWay. ‘Laravel Testing Decoded.’ iBooks.

  1.  response 를 확인한다.
    1. $this->assertResponseIsOk() 혹은 $this->assertRedirectedTo(‘/PATH’) 등으로 확인할 수 있습니다.
  2. 원하는 모델의 메소드가 작동되었는지 확인한다.
    1. Mockery 의 shouldReceive 로 확인할 수 있습니다.
  3. 뷰에 데이터를 잘 넘겼는지 확인한다.
    1. $this->assertViewHas(‘변수명’) 으로 확인할 수 있습니다.

leaderboard-728x90

 

Laravel 테스트 작성중 POST로 리퀘스트 전송시 응답으로 200이 아닌 500이 온다면

csrf 토큰 때문입니다.

app/Http/Middleware/VerifyCsrfToken.php 를

public function handle($request, Closure $next)
{
    if ('testing' !== app()->environment()){
        return parent::handle($request, $next);
    }

    return $next($request);
}

이렇게 수정해서 test 환경에서는 토큰을 확인하지 않도록 해주는 방법이 있습니다.

다른 더 좋은 방법들도 있을거 같아요. 좀 찾아봐야겠습니다. ㅎㅎ
 

leaderboard-728x90

 

Envato

To Help People Learn and Earn Online.
사람들이 온라인으로 배우고, 돈 버는 것을 돕는 것.

조사시점 : 2015.05.21
 

기업들의 비전과 미션을 수집하고 있습니다. 도움 주실 분들은 댓글이나 이메일 smartbosslee@gmail.com 혹은 트위터 @smartbosslee 로 연락주세요. 제보도 받습니다 🙂

Lumen 에서 timezone 을 서울로 바꾸는 방법

.env 파일을 사용하는 경우에는 .env 파일에 다음 내용을 한 줄 추가합니다.

APP_TIMEZONE=Asia/Seoul

.env 파일을 사용하지 않는 경우에는 시간 관련 기능을 사용하는 곳 상단에 아래의 내용을 한 줄 추가합니다.

date_default_timezone_set(env('APP_TIMEZONE', 'Asia/Seoul'));

 

leaderboard-728x90

 

조만간 기성 연예인들의 개인 방송 시대가 열릴 것 같다

몇 해 전부터 케이블 방송에서 빅뱅TV와 같은 시도가 이어져왔다.

132112

아프리카TV와 유튜브를 통한 개인 방송의 수익성이 검증되었다. 이에 개인 방송국으로 유명세를 날리던 이들이 스스로 기획사를 설립하고 있다.

대도서관

개인 방송 컨셉을 도입한 지상파 프로그램 마이 리틀 텔레비전이 인기를 끌고 있다.

1954315240_gsBUrt39_EBA788EC9DB4_EBA6ACED8B80_ED8594EBA088EBB984ECA084_EBB0B1ECA285EC9B905BEC95BCEC8B9DEC9D80_EB9E9CEC84A0EC9D84_ED8380EAB3A05D_E02_x264-aiden0.mp4_20150210_224651.906

조만간, 연예기획사 소속 연예인들의 개인 방송이(정말로 개인적으로 하는게 아닌 기획사가 주도하는) 본격적으로 시도될 것 같다.

 

oak-online-alter-table를 이용하여 중단 없이 MySQL 테이블 변경하기

MySQL에서 테이블을 변경하면 테이블이 잠긴다. 그리고 데이터양에 따라 테이블 변경에 걸리는 시간이 달라진다. 그래서 데이터양이 많아지면 테이블을 변경시 서비스가 중단되는 경우가 발생할 수 있다.

중단 없이 MySQL 테이블을 변경할 수 있도록 해주는 툴로 아래의 것들이 있다.
openark-kit의 oak-online-alter-table
Percona Toolkit의 pt-online-schema-change
Facebook이 만든 online schema change for MySQL

이 중 oak-online-alter-table 의 사용 방법을 간단히 알아본다. 환경은 CentOS 6.4 이다.

설치

openark-kit을 사용하기 위해서는 2.3 버전 이상의 python과 python-mysql 모듈이 설치되어 있어야 한다.

python 설치

yum install python

python-mysql 모듈 설치

yum install MySQL-python

openark kit 설치
https://code.google.com/p/openarkkit/ 에서 최신 버전을 다운로드 받는다.

wget https://openarkkit.googlecode.com/files/openark-kit-###-1.noarch.rpm
sudo rpm -i openark-kit-###-1.noarch.rpm

실행

world 데이터베이스의 City 테이블에 Population 컬럼에 인덱스를 거는 경우.

oak-online-alter-table --database=world --table=City --alter="ADD KEY(Population)"

기본적으로 –user, –password, –socket, –port 옵션 값을 지정해줄 필요가 있다. 커맨드에 직접 추가해주거나 설정 파일을 만들어서 할 수 있다.
파일로 하는 경우에는 아래의 형식에 맞추어 파일을 작성하고 –defaults-file 옵션에 해당 파일의 경로를 지정해주면 된다.

#config.cfg
[client]
user=test
password=testpw
socket=/var/lib/mysql/mysql.sock
port=3306
oak-online-alter-table --database=world --table=City --alter="ADD KEY(Population)" --defaults-file=config.cfg

파일로 하지 않는 경우엔 다음과 같이 해주면 된다.

oak-online-alter-table --database=world --table=City --alter="ADD KEY(Population)" --user=test --password=testpw --socket=/var/lib/mysql/mysql.sock

 

leaderboard-728x90