Chromium으로 스크린 캡쳐를 했는데 한글이 네모로 나오는 경우

자동으로 스크린샷을 저장하기 위해 Browsershot을 사용했다. 그런데, 한글이 제대로 표시되지 않아서 한참 삽질했다. 다행히 포기하기 직전에 기적적으로 해결 방법을 발견했다. 원래는 일본어가 동일한 증상으로 표현이 안되는 문제에 대한 글인데, 답변자가 친절하게도 한글 해결책도 함께 제시해줬다. 결론은 ttf-unfonts-core를 설치해주면된다.

sudo apt-get install ttf-unfonts-core

한 스트로크 더

선생님께 여쭤봤습니다.

“선생님 저는 너무 힘들어서 여러 바퀴를 한 번에 못 돌겠어요”

그러자 선생님이 이렇게 말씀해주시네요.

“호흡을 잘 못 하거나, 몸에 힘이 들어가서 그럴 수 있습니다. 점차 나아질 겁니다. 힘들어도 쉬지 말고 조금씩 더 해서 한계를 조금씩 늘려가셔야 합니다. 힘들다고 중간에 멈춰버릇하면 습관이 돼요. 중급반이시니까, 최소한 네 바퀴는 한 번에 도실 수 있어야 합니다.”

기초체력이 부족한데, 자꾸 기적의 비법만 찾고 있었나 봅니다. 당분간 닥치고 빡수영하는걸로.

MySQL 트랜젝션은 auto_increment 값을 되돌리지 않음

라라벨 애플리케이션에서 아래와 같은 테스트를 작성했습니다. 이해를 돕기 위해 구체적인 내용은 생략했습니다.

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class SampleTest extends TestCase
{
    use RefreshDatabase;

    testFirst()
    {
        //테이블 A에 데이터 10개 추가
        //테스트 수행
    }

    testSecond()
    {
        //테이블 A에 데이터 11개 추가
        //테이블 A에서 데이터 10개를 ID 역순으로 조회 후, 10번째의 데이터의 ID가 값을 확인하는 테스트
    }
}

RefreshDatabase 트레이트를 사용했기 때문에 testSecond 테스트에서 ID는 2가 될 것으로 예상했습니다. 하지만 12가 나와서 테스트를 통과하지 못하더군요.

처음에는 RefreshDatabase의 트랜젝션이 동작하지 않는다고 의심했는데, 알고보니 트랜젝션이 auto_increment 값은 되돌리지 않았기 때문이었습니다.

이전 테스트가 다음 테스트에 영향을 미치지 않아야하지 않나 생각하는데, RefreshDatabase를 쓸 때는 auto_increment 값은 롤백되지 않는다는 점에 주의해서 테스트 코드를 작성해야겠습니다.

[수영일지 20180724] 출수킥 타이밍을 못잡겠다

이제 접영 킥만으로 호흡하며 나아가는 것은 꽤나 익숙해졌습니다. 그런데, 팔과 함께 동작하는게 문제네요.

킥 연습을 해서 그런지, 느낌상으로는 일단 킥 먼저 차고 팔을 돌리면 훨씬 수월한 느낌인데, 배우긴 팔을 끝까지 밀어낼 때 발을 함께 차라고 배워서 제대로 된 동작은 아닌것 같아요.

그나저나, 새 수경을 샀습니다. 스완스 SR-1N. 25M 가면 앞이 안보이던 수경에서 새 수경으로 바꿨더니 신세계네요 ㅎㅎ 나는 아무것도 안했는데 실력이 는것 같은 이상한 기분.

출수킥 뿐만 아니라 입수킥도 문제였습니다

목금 이틀을 (본의 아니게) 쉬고 자유수영을 했습니다. 지난번에 실패한 접영 킥만 하기를 집중적으로 연습했어요. 다행히 이번에는 25미터를 가는 데는 성공했습니다.

하다보니 잘 될때는 뭔가 입수킥 차고 나서 쑤욱 빨려 들어가는 듯한 느낌이 나더라구요. 그리고, 출수킥이 안되는 상황 중 많은 상황은 나오는 각도가 제대로 안만들어졌을 때가 많더라구요. 각도가 안나오는건 입수가 너무 낮게 됐을 때 그랬구요. 결국 입수킥이 잘 안되면 출수킥은 자동으로 실패하더군요.

어쨋든 다행히, 물을 안먹는 수준까진 됐으니 몇 번 더 해보면 감을 더 잡을 것 같습니다. 하핫

Mockery::close() 가 예외를 발생시키면 DatabaseTransactions 트레이트가 동작하지 않음

메소드 하나만 테스트 돌렸을 땐 통과되던게, 파일을 통으로 돌리니까 에러가 나더군요.

에러가 나는 원인을 보니, 데이터베이스에서 락이 걸렸기 때문이었습니다.

DatabaseTransactions 트레이트를 쓰고 있어서, 이전 테스트가 다음 테스트에 영향을 줄 이유가 전혀 없어보이는데, 대체 락이 왜 걸릴까? 찾다보니 원인은 Mockery 때문이었습니다. 이 링크 덕분에 알게 됐어요.  이 글 없었으면 며칠 날릴뻔 했네요. 소중한 정보 공유해준 얼굴 모를 개발자에게 오늘도 감사를!

Mockery를 쓰려고 했다가 필요 없어져서 테스트 코드에서는 Mockery 쓰는 부분을 다 제거했는데, 종료하는 코드를 남겨뒀더라구요.

public function tearDown() {
    Mockery::close();
}

종료할 Mockery가 없는데 종료를 해서 예외가 발생했었나봅니다. Mockery가 예외를 발생시키면, 트랜젝션이 롤백되지 않은채로 테스트가 멈추기 때문에 락이 걸린 채로 다음 테스트가 실행되나 봅니다.

위 코드를 제거하고 돌리니 잘 되네요.

오늘의 삽질 로그 끝

출수킥이 안되는게 문제였던듯

아래 동작을 연습을 해보니, 타이밍도 못잡고 출수킥이 완전 엉망이네요. 흨흨 접영이 괜히 안되는게 아니었어.

암튼 원인은 알았으니, 연습하면 나아지겠죠? 연습하고 나서 동영상을 다시 보니 새로이 보이는것도 있고… 연습하고 싶다아~

 

수영 슬럼프

오늘도 접영하다가 많이 멈추고, 물 많이 먹었습니다. 실력이 늘기는 커녕 줄어드는 느낌이 드니 좀 답답하네요.

오는 길에 영상을 좀 찾아봤는데, 내일은 자유수영이니 아래 영상대로 연습을 좀 해봐야겠어요.

익혀야할 것

오늘 업무를 종료하며 내일은 아래 두 가지를 익혀야겠다고 생각했습니다.

  1. Laravel HTTP 테스트에서 Mockery를 사용하는 방법
  2. Laravel HTTP 테스트 실행시 xdebug 로 디버깅하는 방법

오늘은 테스트를 작성하면서 삽질을 많이했는데, 첫번째 것은 오늘 삽질 결과 알아낸 해결책이고, 두번째 것은 오늘과 같은 삽질을 덜 고통스럽게 하는 해결책입니다.

수영일지 180705 2비트 킥 입문

2비트 킥을 처음 배웠다. 허우적 허우적.

그래도 킥판 빼고 하니까 조금은 더 감이 온 듯 하다.

근데 덜 힘들라고 하는 영법이라고 했는데 왜 더 힘들었을까… 뭔가 잘못한게 틀림없다 ㅠ