ないものは作りましょう。

色々なことに挑戦(主にプログラミング)

【備忘録】Atomパッケージを作るときに詰まった点

少し詰まった点があったので書いておきます。

まずAtomのコマンドパレットから"Package Generator"を実行します。
すると自動的にパッケージのプロジェクトが作成されます。

パッケージの本体ですが、
http://ota42y.com/blog/2014/04/08/atom-plugin1/
例えばこちらの記事に書かれているように

module.exports =
  activate: ->
    atom.workspaceView.command "my-package:hello", => @hello()

こう書いてしまうと

Cannot read property 'command' of undefined

というエラーが出ました。 ※Atom 1.0.0にて
Atomのアップデートで書き方が変わったようなので、
現行バージョンでは

atom.commands.add "atom-workspace", "my-package:hello", => @hello()

のように書く必要があるようです。

【Bash】Androidアプリ用のアイコンを生成する

Androidアプリを作る時に、解像度別のアプリアイコンを用意しなくてはなりません。
そこで今回はアプリアイコンのPNG画像を自動で生成するスクリプトを書いてみました。

SVGベクタグラフィックスからアプリアイコン用の複数のサイズのPNG画像を一括で生成します。(mdpi(48x48), hdpi(72x72), xhdpi(96x96), xxhdpi(144x144), Playストア用(512x512))

inkscapeのコマンドを使用しているのでinkscapeがインストールされている必要があります。
Bash用のシェルスクリプトです。

#!/bin/bash

FILE=$1

generate() {
    mkdir generated
    cd generated
    mkdir mipmap-mdpi
    mkdir mipmap-hdpi
    mkdir mipmap-xhdpi
    mkdir mipmap-xxhdpi
    cd ../
    inkscape -z -e "generated/mipmap-mdpi/ic_launcher.png" -w 48 -h 48 $FILE
    inkscape -z -e "generated/mipmap-hdpi/ic_launcher.png" -w 72 -h 72 $FILE
    inkscape -z -e "generated/mipmap-xhdpi/ic_launcher.png" -w 96 -h 96 $FILE
    inkscape -z -e "generated/mipmap-xxhdpi/ic_launcher.png" -w 144 -h 144 $FILE
    inkscape -z -e "generated/ic_512.png" -w 512 -h 512 $FILE
    
    echo -e "\e[1;32mSuccess!\e[m" 1>&2
}

if [ $# -eq 1 ]; then
    if [ ! -e $FILE ]; then
        echo -e "\e[1;31mIt does not exist.\e[m" 1>&2
        exit 1
    fi
    generate
    
else #
    echo -e "\e[1;31mPlease Input FileName of SVG. like ***.svg\e[m" 1>&2
    exit 1
fi

generateAppIcon などと名前を付けてPATHを通したディレクトリに配置すると良いと思います。

SVGファイルのあるディレクトリで

$ generateAppIcon sample.svg

のように実行するとPNG画像が各解像度ごとにフォルダに分けて出力されます。

それでは~

【javascript】 Dropboxのファイルの直リンクURLを生成する

以前、Dropboxのファイル共有用URLからファイルの直リンクを得る方法を書いたのですが、今回javascript(+html)の練習を兼ねて自動で直リンクを生成するものを作ってみました。

Dropbox Direct Link Generator
(ちなみにこれもDropbox内のファイルです)


せっかくなので処理部分のコードを載せます。

function generateDirectLink(url) {
    var parts = url.split('.');
    parts[0] = 'https://dl';
    parts[1] = 'dropboxusercontent';
    parts[parts.length - 1] = parts[parts.length - 1].slice(0,parts[parts.length - 1].length - 5);
    var ret = '';
    for (var i = 0; i < parts.length; i++) {
        ret = ret.concat(parts[i]);
        if (i != parts.length - 1) ret = ret + '.';
    }
    return ret;
}

やっていることは以前書いた記事の通りです。


今回初めてjavascriptを書いてみたのですが、文字列操作の関数がたくさん用意されていて意外と便利なことが分かりました。

それでは。

【Arduino 1.6.3】 Arduino UnoでATmega328P-PUにブートローダを書き込む

Arduino UnoでATmega328P-PUにブートローダを書き込んでみました。

いろいろなサイトにやり方が書かれていたのですが、どれも古い情報みたいで少し詰まったので、やり方を書いてみたいと思います。
Arudino IDEのバージョンは1.6.3です。


ブートローダの書き込みにあたってこちらの記事がわかりやすかったです。
初心者だけど、一歩ずつ Arduino 超小型マイコン電子工作: UNOを使ってArduinoをブートローダーを書込

注意:自己責任でお願いします。

続きを読む

Google Code Jam 2015 Round1Cに参加しました(0完)

0完でした。

単純に実力不足ですね。

ということで、初参加のGoogle Code JamはRound1で終わりました。

来年こそがんばろう。
もっと問題を解かなければ。

Google Code Jam 2015 Round1Bに参加しました

f:id:IJMP320:20150503134413p:plain
A-smallしか解けませんでした。
Round1Cこそ頑張って突破したいです。(自信なくなってきた)

Problem A 「Counter Culture」 ※small解法

全探索で計算しておきその結果を返します。

int a[1000001];
int main() {
    REP(i,1000001) a[i]=INF;
    REP(i,21) {
        a[i]=i;
    }
    FOR(i,1,1000000) {
        string s = IntToString(i);
        reverse(ALL(s));
        a[i+1] = min(a[i+1],a[i]+1);
        int t = atoi(s.c_str());
        a[t] = min(a[t], a[i]+1);
    }

    int T;
    cin >> T;
    REP(t,T) {
        ll N;
        cin >> N;
        printf("Case #%d: %d\n",t+1,a[N]);
    }
    return 0;
}