Sparrow が起動しなくなった時について

うちの Macbook は容量がギリギリのため、電池切れなどで容量がないまま終了した場合などに Sparrow が起動できなくなる場合がある。 対処としては Sparrow のディレクトリにある各アカウントの data.db ディレクトリと message.db を削除すればよいらしい。(理由はよく調べてない)

$ cd Library/Application\ Support/Sparrow 
$ rm -rf data.db messages.db

これで Sparrow を起動すると取得しなおして動くようになる。

zsh なら下記一つのコマンドでいける

$ rm -rf ~/Library/Application\ Support/Sparrow/*.sparrowdb/(data.db|messages.db)

Intellij IDEA でクラスを作る際に自作のテンプレートを使う

使用バージョン

Intellij IDEA 14.1.3

内容

競技プログラミングなどでファイル生成時に標準入力用ライブラリなどを最初から入れておきたい場合があります。

Intellij IDEA の場合はどうするか。

  • テンプレートを用意する
  • クラス生成時に用意したテンプレートを選択する

Prefereces を開いて Editor > File and Code Template を開いて Templates のタブを選択。 Class を選択してコピー。なかを自由に書き換えます。

f:id:nise_nabe:20150907112326p:plain

生成したテンプレートはたぶん New > Java Class を選択した際に Kind で選択できるはずです。

f:id:nise_nabe:20150907112337p:plain

他のテンプレートをみると include とか使えるようなので共通で使う部分などは inlude で作っていろんなプロコン用のテンプレートをそれぞれ作るとかできるのではないかと思います。

以上。

参考

IntelliJ IDEA 14.1.0 Help :: File and Code Templates

Spring boot 日記

Q. EnableAutoConfiguration って?
A. どうも設定が必要なパラメータを予めデフォルト値を持った設定群をフレームワークで持ってるっぽいのでそれを使うようにするアノテーションらしい。
自分のアプリケーションでのみ使う設定はその設定のプロパティとか Configuration アノテーションが付いたクラスとかで上書きするとかそういうやつっぽい。

Q. WebSocket 使うには?
A. EnableWebSocketMessageBroker アノテーションが付いた Configuration アノテーションのクラスを作って AbstractWebSocketMessageBrokerConfigurer クラスを継承して endpoint を追加すれば良い感じっぽい。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
                registry.addEndpoint("/");
        }
}

Q. socket.io がクライアントになってる場合は?
A. さらっと探したけど java 実装の socket.io サーバが無いので無理臭い。自分で実装する必要がありそう。

Spring Boot で複数の Filter を定義する

例えば下記のように @Bean アノテーションを複数書くことによって複数のフィルタを追加できる。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Bean
    public Filter filter() {
        return new SomeServletFilter();
    }

    @Bean
    public Filter filter2() {
        return new SomeServletFilter2();
    }
}

また、おそらく上記の書き方では上から順番にフィルタが追加されるが、フィルタの登録順を決めてしまいたい場合は下記のように FilterRegistrationBean の setOrder() を用いる。

    @Bean
    public FilterRegistrationBean filter() {
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new SomeServletFilter());
        bean.setOrder(2); // 数字が大きいほうが後に呼ばれる
        return bean;
    }

    @Bean
    public FilterRegistrationBean filter2() {
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new SomeServletFilter2());
        bean.setOrder(1); // 数字が小さいほうが先に呼ばれる
        return bean;
    }

他にも Configuring boot servlet context and filters | Level Up Lunch などによると何かしらの初期化時に ServletContext に addFilter() すればよいらしいがうまく行かなかったのでここでは割愛する。

2016/08/05 追記

これらの設定はおそらく Spring Boot は関係なくて Spring Framework の DI の設定らしい。 Spring のコードはちゃんと読んでないけど、おそらく Spring 側の Autowired 時に同じ型のものが複数定義されていた場合に取得する方法( List のような形)で使われているような気がする。

参考文献

Configuring boot servlet context and filters | Level Up Lunch

Convert an existing application to Spring Boot - Spring Boot Reference Guide

Spring Boot で組み込みサーブレットコンテナを変更する

Spring Boot で 1.2.3 をそのまま起動した場合は Tomcat 8 が起動する。

s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService   : Starting service Tomcat
org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.20
...
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

他には下記の表のものを使えるとのこと。

Servlet Containers - Spring Boot Reference Guide f:id:nise_nabe:20150505002416p:plain

この組み込みサーブレットコンテナを tomcat -> jetty や tomcat -> undertow に変更する。

tomcat -> jetty

参照ページ: Use Jetty instead of Tomcat - Spring Boot Reference Guide

tomcat を外して jetty を追加する設定を記述する。下記は Gradle での記述例。(参照ページではバージョンが付いてるが手元では 1.2.3 を使っていたので念のため外してる)

configurations {
    compile.exclude module: "spring-boot-starter-tomcat"
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-jetty")
    // ...
}

gradle の bootRun を実行するとどこかしらに下記のようなログが出力されて jetty が起動してることがわかる。

org.eclipse.jetty.server.Server          : jetty-9.2.9.v20150224
...
.s.b.c.e.j.JettyEmbeddedServletContainer : Jetty started on port(s) 8080 (http/1.1)

tomcat -> undertow

参照ページ: Use Undertow instead of Tomcat - Spring Boot Reference Guide

tomcat を外して undertow を追加する設定を記述する。下記は Gradle での記述例。(参照ページではバージョンが付いてるが手元では 1.2.3 を使っていたので念のため外してる)

configurations {
    compile.exclude module: "spring-boot-starter-tomcat"
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-undertow")
    // ...
}

gradle で bootRun を実行するとどこかしらに下記のようなログが出てきて undertow が起動してることがわかる。tomcat や jetty のようにどこかしらにバージョン情報は出てこない。( XNIO のバージョンは出てくる)

b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http)

Spring Boot 軽く触ってみた感想日記

そもそも Spring Framework 使ったこと無い人なのでまあそこも含めての疑問と理解してる途中の内容とかメモ。

Q. Spring Boot って?
A. Spring Framework 使ったアプリを組み込みサーバ上で動かすみたいな仕組みの総称みたいな理解

Q. 組み込みサーバでそのまま本番で使える?
A. そのまま使ってもよさそう。 runnable jar とかにして動かすっぽい。

Q. どうやって始めたら?
A. Intellij IDEA でプラグイン入れてポチポチやってたらとりあえず動くだけ動いた(ページが見られるとは言ってない)

Q. URL のルーティングどうやるの?
A. Controller アノテーションのメソッドに RequestMapping アノテーションを付けたメソッドを作るとよいらしい。(下記例を参照)


@Controller
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @RequestMapping("/")
    String home() {
        return "index";
    }
}


Q. EnableAutoConfiguration アノテーションって?
A. わからん

Q. Cookie に自分で書き込んだ情報を使って認証とかしたい場合は?
A. シングルサインオン的な実装でいいらしい(別途何か書く)
雑に書くと、普通の Servlet フィルタな感じで実装して EnableWebMvcSecurity な Configuration で HttpSecurity に addFilter したら動いた

Q. setCookie したい
A. RequestMapping アノテーションの付いたメソッドの引き数に HttpServletResponse の型のものを追加するとそれでできる様子

@RequestMapping("/")
String home(HttpServletResponse response) {
  response.addCookie(new Cookie("somecookiename", "somecookievalue"));
}

参考文献

Spring Boot Reference Guide

spring-security-core - Spring Security(Spring Boot)で、PreAuthentication - Qiita

Spring MVC Cookie example

cocos2d-js Transition 一覧( CCTransition 編)

Transition 全体一覧

nisenabe.hatenablog.com

一覧

ココでは下記のリストにある transition の gif を貼る。

CCTransition.js に定義

  • cc.TransitionSceneOriented
  • cc.TransitionRotoZoom
  • cc.TransitionJumpZoom
  • cc.TransitionMoveInL
  • cc.TransitionMoveInR
  • cc.TransitionMoveInT
  • cc.TransitionMoveInB
  • cc.TransitionSlideInL
  • cc.TransitionSlideInR
  • cc.TransitionSlideInB
  • cc.TransitionSlideInT
  • cc.TransitionShrinkGro
  • cc.TransitionFlipX
  • cc.TransitionFlipY
  • cc.TransitionFlipAngular
  • cc.TransitionZoomFlipX
  • cc.TransitionZoomFlipY
  • cc.TransitionZoomFlipAngular
  • cc.TransitionFade
  • cc.TransitionCrossFade
  • cc.TransitionTurnOffTiles
  • cc.TransitionSplitCols
  • cc.TransitionSplitRows
  • cc.TransitionFadeTR
  • cc.TransitionFadeBL
  • cc.TransitionFadeUp
  • cc.TransitionFadeDown

動作確認環境

続きを読む