【備忘録】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を書いてみたのですが、文字列操作の関数がたくさん用意されていて意外と便利なことが分かりました。
それでは。
Google Code Jam 2015 Round1Bに参加しました
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; }