View robolectric.md

2014년 8월1일 제9회 오픈 세미나 in 대구 행사에서 한 발표입니다.

Robolectric을 활용한 안드로이드 쾌속 테스팅

안녕하세요, 네이버랩스 웹플랫폼개발랩의 정상혁입니다. 오늘 발표에서는 테스트 프레임워크인 Robolectric을 사용하면서 실무에서 얻었던 경험을 공유하고자합니다.

먼저 테스트코드란 무엇인지와 안드로이드에서 테스트 작성을 어렵게 하는 난관등을 말씀드리고 Robolectric을 활용하는 방법을 소개하겠습니다.

테스트 코드란?

참석하신 분 중에서 JUnit(제이유닛)에 대해서 한번이라도 들어보신 분은 손을 들어보시겠습니까? 이중에 Junit을 실제로 써보신분은 얼마나 되시나요? Android에서 JUnit으로 테스트를 시도해보신 분은 계신가요? 경험을 하신 정도가 다양하기 때문에 우선 오늘 다룰 테스트 코드란 무엇인지를 한번 정리하고 시작을 하겠습니다.

View commands.txt
sudo tcplay -c -d /dev/loop0 -a whirlpool -b AES-256-XTS
sudo mkfs.ext4 /dev/mapper/source.tc
losetup /dev/loop0 source.tc
tcplay -m source.tc -d /dev/loop0
mount /dev/mapper/source.tc /mnt/source/
View presentation-framework.md

Slidy

장점

  • 한 슬라이드 내에서 스크롤 지원
  • Asciidoc 지원
  • 프린트, PDF변환 자연스럽게 됨.

단점

  • Markdown, Asciidoc을 쓸 때 명시적으로 페이지 구분자를 넣을 수 없음.
    • H2 태그 기준으로만 페이지 전환
View java-string-concat.md

jdk1.5에서 String 더하기의 컴파일시의 최적화]

String 클래스를 "+"로 반복해서 더하는 연산을 어떤 경우에 컴파일러에서 자동으로 최적화해주는지 알고 있다면 보다 융퉁성 있게 쓸 수가 있습니다.

몇년전에 javaservice.net에서의 String vs StringBuffer에 대한 논의에서도 이 이야기가 오고 갔었고, 그를 통해 제가 알게 되었던 바는 다음과 같습니다.

  1. 한줄에서 상수 String끼리만 더하는 것은 모두 합쳐진 문자열로 바꿔준다. 즉 String a= "a" + "b" + "c"; 라고 쓰면 String ="abc"; 로 알아서 컴파일해준다는 거죠.
  2. 한줄에서 상수와 다른 String 클래스를 더하는 것은 StringBuffer의 append, toString 메서드를 쓰는 코드로 준다. jdk 1.4 javadoc 의 StringBuffer API설명 에 명시되어 있네요.

String buffers are used by the compiler to implement the binary string concatenation operator . For example, the code:

View README.md

활용요소

  • IFTTT
  • Dropbox
  • Google TTS API
  • mplayer (Linux mp3 player)
  • Python watchdog 라이브러리

사용방법

  1. IFTTT가입
  2. 레서피 복사하여 활성화
View pad.sh
#!/bin/bash
echo xinput map-to-output for Multi-Touch-V3004
input_id=`xinput | grep Multi-Touch-V3004 | awk '{print substr($5,4,length($5)-3)}'`
echo Input device id: $input_id
output_id=$1
if [[ -z $output_id ]]; then
output_id=2
fi
View ConnectionMonitor.java
import static com.sun.btrace.BTraceUtils.*;
import com.sun.btrace.BTraceUtils.Aggregations;
import com.sun.btrace.BTraceUtils.Sys;
import com.sun.btrace.aggregation.Aggregation;
import com.sun.btrace.aggregation.AggregationFunction;
import com.sun.btrace.annotations.BTrace;
import com.sun.btrace.annotations.Duration;
import com.sun.btrace.annotations.Kind;
import com.sun.btrace.annotations.Location;
View SqlMap2.groovy
import static org.apache.commons.lang.StringUtils.*
class SqlMap {
public static String buildSelectSql(User user) {
StringBuilder sql = new StringBuilder();
sql.append("""
SELECT name, address
FROM user
WHERE 1=1
View SqlMap.groovy
import org.apache.commons.lang.StringUtils
class SqlMap {
public static String buildSelectSql(User user) {
StringBuilder sql = new StringBuilder();
sql.append("""
SELECT name, address
FROM user
WHERE 1=1