2014年6月27日金曜日

MySQLでのフロー制御関数の扱い方

MySQLでIF-ELSE IF-ELSE的な事をしたい場合、こうする。

mysql> SELECT CASE 1 WHEN 1 THEN 'one'
    ->     WHEN 2 THEN 'two' ELSE 'more' END;
        -> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
        -> 'true'
mysql> SELECT CASE BINARY 'B'
    ->     WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
        -> NULL

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

2014年6月3日火曜日

SpringでJSONを返す場合に、特定のフィールドを表示させ無いようにするにはObjectMapperのaddMixInAnnotationsを使う。

SpringでJSONを返す場合に、特定のフィールドを表示させ無いようにするには、JacksonのObjectMapperで、addMixInAnnotationsに表示させたく無いフィールドを設定した抽象クラス、もしくはインターフェイスを大元のJSONオブジェクトにマップしたクラスに教えてやる。

Snippet

@Controller
public class SubjectController

{
    private ObjectMapper _objectMapper = new ObjectMapper();

    public Controller()
    {
    _objectMapper.getSerializationConfig().addMixInAnnotations(Base.class, FieldsNotAvailable.class);

    }

    @RequestMapping(value="/path", method={RequestMethod.GET})
    public @ResponseBody String getJson(ModelMap model)
    {
        return _objectMapper.writeValueAsString(subject);
    }
}

public abstract class FiledsNotAvailable
{
    @JsonIgnore
    public abstract String getSomeField();
}

http://stackoverflow.com/questions/22609079/how-to-filter-the-json-response-returning-from-spring-rest-web-service
http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/ObjectMapper.html#addMixInAnnotations(java.lang.Class, java.lang.Class)

2014年4月11日金曜日

Ubuntuでheartbleedで問題となっているOpenSSLのパッケージを確認する方法

OpenSSLのバージョンを確認するには

% openssl version -a 

OpenSSL 1.0.1e 11 Feb 2013
built on: Mon Apr  7 20:33:19 UTC 2014 ---------->ここの日付を確認する。4月7日以降であれば最新らしい。
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"

http://askubuntu.com/questions/444848/why-unattended-upgrades-does-not-fix-heartbleed-bug


10.04 LTSは古いOpenSSLなので更新しなくても大丈夫なようです。
http://askubuntu.com/questions/445164/update-openssl-to-1-x-on-10-04-lts-to-avoid-heartbleed-vulnerability

Ubuntuのアップデートは、

% sudo apt-get upgrade
% sudo apt-get update

それでもアップデートされない場合は、
% sudo dist-upgrade ---->これは現在使ってるパッケージが削除される場合があるので注意。

https://blog.pay4bugs.com/2014/04/08/howto-update-ubuntu-to-fix-heartbleed-ssl-bug/
http://askubuntu.com/questions/215267/will-apt-get-dist-upgrade-upgrade-my-system-to-newer-version
https://wiki.ubuntu.com/Security/Upgrades

Ubuntuでapt-get updateでパッケージがFetchできないエラーが出る場合の対処

apt-get updateをして"Failed to fetch http://....."でなる場合があります。アップデートをしようとするマシンがいけてないDNSサーバーを使ってる可能性があるので、それを変更すれば解決されます。

Googleのネームサーバーを使うと確実。
8.8.8.8
8.8.4.4

http://askubuntu.com/questions/135932/apt-get-update-failure-to-fetch-cant-connect-to-any-sources
http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/

resolv.confの内容が勝手に書き換わるのを防ぐには

/etc/resolvconf/resolv.conf.d/baseに/etc/resolv.confの内容を書く。

% sudo resolvconf -u

http://askubuntu.com/questions/157154/how-do-i-include-lines-in-resolv-conf-that-wont-get-lost-on-reboot

NFSをすぐマウントしたい場合

/etc/fstabの内容をすぐマウントしたい場合。

% sudo mount -a

http://takuya-1st.hatenablog.jp/entry/20101201/1291187213