2014年9月24日水曜日

[android] Failed to complete Gradle Execution

Android Studio 0.8.9
Windows Vista

私の場合、起動時にBuild -> Rebuild Projectをすると必ず下記のメッセージで失敗します。
それでも根気よく続けていると成功して、それからは順調です。

Failed to complete Gradle execution
Cause:
A fatal exception has occurred. Program will exit

毎回面倒なので調べてみると、解決策がこちらにありました。
File -> Settings -> Gradle
"Gradle VM options:"に-XX:MaxHeapSize=256m -Xmx256mと入力する。

ありがとうございました!

2014年9月22日月曜日

[android]R.javaがつくられない、新規作成したandroidプロジェクトでActivityが作られない

$ eclipse -cleanで解決しました。

もう少し具体的な症状ですが、
・iMac
・起動時にプロジェクトに赤い×がついているプロジェクトが2、3ヶ月前からたくさんあった。あまりメンテナンスしていないアプリだったのでほったらかしていました。メンテナンスしたいアプリがビルドできなくなっていて焦りました。
・Project -> Cleanをすると、ビルドが成功するプロジェクトもあった
・Project -> Cleanをしてもビルドが失敗するプロジェクトではR.javaが生成されていなかった
・androidのプロジェクトを新規作成すると、最後のActivity作成画面が消えない。キャンセルで閉じてプロジェクトをみると、なんだか白い。srcの下が空っぽ。
・Mac OSX 10.9.4 -> 10.9.5に直前にあげた(無関係かも?)

なんだかわからなかったのですが、eclipse -cleanをして起動するとビルドが成功するようになりました。

2014年9月6日土曜日

パソコンが壊れた → ほこりをはらったら治りました。

2008年ころに買ったDELLのデスクトップパソコンが壊れました。
ある日突然、電源を入れても、ビープ音が鳴るばかりで全然立ち上がってくれませんでした。

よく考えてみると、そうなる前の半年くらいは、いつもファンの音がうるさかったです。
けたたましい音がしていました。
でもまあ使えていたから、うるさいなあとは思っていましたがそのまま使っていました。

もう駄目かなあと思っていたのですが、
「DELL ビープ音 4回」とかで検索すると、中を開けてメモリを挿し直すと治ったというような方が結構いらっしゃって、駄目でもともとでやってみました。

不器用ですし余計壊してしまうんじゃないかと不安でしが、やるだけやってみました。


するとなんと治りました!


ファンのところにホコリがたくさんたまっていました。
エアーダスターでブシューとやりました。
ただ治っただけではなく、ファンの音も静かになり、心持ち動作が軽くなったような気がします。

でもまたいつ壊れるかわからないので大事なデータはバックアップが必要だなあとかおもいました。

2014年5月18日日曜日

[Java]java.util.stream

int sum = widgets.stream()
                      .filter(w -> w.getColor() == RED)
                      .mapToInt(w -> w.getWeight())
                      .sum();
こ、これは?
Java(Java Platform SE 8)なんです。

従来の書き方だとこんな感じでしょうか。
public class Widget {
    private COLOR color;
    private int weight;
    
    public enum COLOR {
        RED,
        YELLOW,
        BLUE
    }
    
    public Widget(COLOR color, int weight) {
        this.color = color;
        this.weight = weight;
    }
    
    public COLOR getColor() {
        return color;
    }
    
    public int getWeight() {
        return weight;
    }
}

List<Widget> widgets = new ArrayList<Widget>() {{
    add(new Widget(RED, 1));
    add(new Widget(RED, 2));
    add(new Widget(YELLOW, 3));
    add(new Widget(BLUE, 4));
    add(new Widget(RED, 5));
}};
Stream<Widget> stream = widgets.stream();
Predicate<Widget> predicate = new Predicate<Widget>() {
    @Override
    public boolean test(Widget w) {
        return w.getColor() == RED;
    }
};
stream = stream.filter(predicate);
ToIntFunction<Widget> tif = new ToIntFunction<Widget>() {
        @Override
        public int applyAsInt(Widget w) {
            return w.getWeight();
        }
};
IntStream is = stream.mapToInt(tif);
int sum = is.sum();
System.out.println("sum: " + sum);


-----------------------------------
Rubyで書くとこんな感じです。
class Widget
  attr_accessor :color, :weight
  def initialize(color, weight)
    @color = color
    @weight = weight
  end
end
sum = [Widget.new(:RED, 1), Widget.new(:RED, 2), Widget.new(:YELLOW, 3), Widget.new(:BLUE, 4), Widget.new(:RED, 5)].select{ |w| w.color == :RED }.inject(0){ |memo, obj| memo += obj.weight }
p sum


2014年4月26日土曜日

[Ruby]雑談対話2 OpenStructを使ってみました

雑談対話をRubyで書いてみました。

require 'httpclient'
require 'json'
require 'ostruct'

class Dialogue
  def say(msg)
    body = JSON.generate(utt: msg, context: @context.nil? ? "": @context)
    clnt = HTTPClient.new
    uri = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=(Your API Key)'
    res = clnt.post_content(uri, body, {'Content-Type' => 'application/json'})
    %w(utt yomi mode da context).inject(OpenStruct.new) { |result, key|
      result.send(key + "=", JSON.parse(res)[key])
      @context = JSON.parse(res)[key] if key == "context"
      result
    }
  end
end

感想とかです。
・@context.nil? ? "": @context のところはこれでいいんです。?は多くないです。
 nil?()というメソッドのあとに条件演算子(Rubyではこう呼ぶそうです。C言語だと三項演算子と呼んでいたような?)が続いている感じです。
・HTTPClientだけはgem install httpclientをしたのをおぼえています。その他のものはRubyをインストールしたときに最初から入っていたのだとおもいます(たぶん)。
・OpenStruct(requireのところは、'ostruct')はすごいです。
 カルチャーショックを受けました。
 たとえば
 o = OpenStrcut.new
    o.title = "タイトル"
 puts o.title
 と書くと、titleなんてものは事前に作った覚えも無いのに、自動的に下記のようなメソッドを作ってくれる(※)ようです。
(※)私の理解です。本当はもっと複雑なことをしていただいているのかもしれません。
 def title=(title)
      @title = title
    end
 
 def title
      @title
    end
 
これによりあたかも、titleフィールド(という言い方がよいのかどうかは微妙な気がしますが)に値を書き込んだり、読み込んだりしているようなコードを書けるようです。

[android]Android File Transferの[実行] --> [転送]とは?

Android File TransferをiMacにインストールしました。
Nexus 5で撮った写真をiMacに取り込みたかったので。
インストールはAndroid File Transferのページに書いてあるようにすればできました。
最後は「drag Android File Transfer to Applications」するのですね。
ここを参考にさせていただきました。
ありがとうございました。

さて、このAndroid File Transferに[実行] --> [転送]というメニューがあるのですが、何のことかはじめわかりませんでした。
ファイルの転送かなとおもって、ファイルを選択した状態で[転送]という名のメニューを選択してもうんともすんともいいません。どこかよくわからないところに転送されてしまったのではないかとドキドキしました。
[実行] --> [戻る]というメニューもあるのですが、[転送]はどうやらこれの逆の意味のようです。iMacを英語設定にすると、[Go(実行)] -> [Back(戻る)]と[Go(実行)] -> [Foward(転送)]になっていました。英語設定の方法はここを参考にさせていただきました。ありがとうございました。

[戻る]は、現在選択中のディレクトリから元のディレクトリへ戻る意味だとおもいます。
[転送]はそれの逆で「進む」みたいな感じのようです。


2014年4月25日金曜日

[Ruby]雑談対話

require 'httpclient'
require 'json'

msg = 'こんにちは'
puts 'Me>' + msg
body = JSON.generate(utt: msg) # {:utt => msg}のこと
clnt = HTTPClient.new
uri = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=(Your API Key)'
res = clnt.post_content(uri, body, {'Content-Type' => 'application/json'})
my_hash = JSON.parse(res)
puts 'docomo>' + my_hash['utt'].to_s


雑談対話をRubyで書いてみました。
HTTPClientはgem install httpclientをしました。
JSONはインストール時に最初から入っていたのだとおもいます(たぶん)。
{'Content-Type' => 'application/json'}が必要でした。

Rubyのバージョンは下記の通りです。
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]