Hatena::ブログ(Diary)

_dog(underdog)

2011-11-03

Excel列名変換問題を解いてみた

| 21:19

11/4 23:10 不具合ありました。追記しています。


http://d.hatena.ne.jp/JunichiIto/20111102/1320253815

こちらの問題を解いてみた。
楽しそうなことやってるな、と羨ましくなったので。いい会社だと思う。

忘れたRubyを調べ直しながらどうにか1時間かけてここまで。問1だけで30分かかった。ほとんど忘れていてもどうにかなるRubyの易しさに感心した。

flg = ARGV[0];
arg = ARGV[1];

if (flg == "0")
    k = 0;
    sum = 0;
    arg.reverse.each_byte { |c|
        sum += ((c - 64) * (26 ** k));
        k += 1;
    }
    p sum;
elsif (flg == "1")
    a = arg.to_i;
    k = 0;
    while a > (26 ** k)
        k += 1;
    end
    k -= 1;
    
    sum = "";
    rest = a;
    while rest > 0
        i = rest / (26 ** k);
        rest -= i * (26 ** k);
        sum += (i + 64).chr;
        k -=1;
    end
    p sum;
end

書いてみて数字がアルファベットになっただけで、実はよくある問題だと気づいてリファクタリング。できたのは何度か書いた覚えがあるコードだった。

flg = ARGV[0];
arg = ARGV[1];

if (flg == "0")
    sum = 0;
    arg.each_byte { |c|
        sum = (sum * 26) + (c - 64);
    }
    p sum;
elsif (flg == "1")
    sum = "";
    rest = arg.to_i;
    while rest > 0
        i = rest % 26;
        sum = (i + 64).chr + sum;
        rest /= 26;
    end
    p sum;
end

この手の問題は解いた後になると、なぜあんなに時間がかかったのか理解できなくなるのが不思議。コードを書くところではなくロジックを考えているところに時間がかかっているということなのだろうか?

あと"A"から"Z"の中に数字の"0"に相当するものがないのに、どうしてこれが動くのかよく分かっていない。"Z"を"0"のように扱わなければならないのかと思い悩んだが、べつにそんな必要はないらしい。案ずるより産むが易しだった。ギリシャ数字も似たような感じなのだろうか。

そしてRubyもPythonもPerlも中途半端に手を出したきり放置してることを思い出して悲しくなった。

11/4 23:10 追記

すいません不具合ありました。上で懸念していたように、"Z"と"0"に関して特殊な処理が必要だったみたいです。テストのいい加減さが原因なので、ちゃんと自動テストしてれば気づいていたんだと思います。

flg = ARGV[0];
arg = ARGV[1];

if (flg == "0")
    sum = 0;
    arg.each_byte { |c|
        sum = (sum * 26) + (c - 64);
    }
    p sum;
elsif (flg == "1")
    sum = "";
    rest = arg.to_i;
    while rest > 0
        r = rest % 26;
        i = (r > 0) ? r : 26;
        sum = (i + 64).chr + sum;
        rest = (r > 0) ? (rest / 26) : (rest / 26 - 1);
    end
    p sum;
end

2011-03-13

新しいiPhoneアプリ「FewThings-シンプルなToDoリスト」をリリースしました

| 08:05

新しくFewThingsというiPhoneアプリをリリースしました。


f:id:hush_puppy:20110313083722p:image

FewThings-シンプルなToDoリスト

115円

http://itunes.apple.com/jp/app/id424417385?mt=8


f:id:hush_puppy:20110313075155p:image


FewThingsは、シンプルなToDoリストです。

ToDoを追加して、チェックして、チェックしたものを消すだけです。

それ以外のことはできません。


文房具の紙のメモやペンのようにシンプルで使いやすいものを目指しました。

なにも考えずに使えるように、とにかく機能を削りました。

できることが少なければ、余計な手間も思考も不要なため簡単に使えます。


別のToDoアプリと併用するのにも良いかもしれません。

例えば仕事用のリストには場違いな買い物リストに使います。

使い捨てのリストに向いています。


買い物中などにポケットからサッと取り出して使うのに向いています。

リストもひとつだけなので、どこに入れたか探す必要はありません。

追加するときも、どこに入れるか迷う必要はありません。

また片手でも使いやすいようにボタンはなるべく下の方に配置しています。


分類や並び替え、優先順位の設定などはできません。

そのためToDoリストが長くなると使いにくくなります。

FewThingsの名の通りわずか数件のToDoのためのアプリです。

リストは短く保つことをおすすめします。


+ボタンで新しい項目を追加できます。

f:id:hush_puppy:20110313075154p:image f:id:hush_puppy:20110313075153p:image

項目をタップするとチェックできます。チェックした項目は−ボタンで消去できます。

f:id:hush_puppy:20110313075152p:image f:id:hush_puppy:20110313075151p:image

IRRIRR 2011/12/02 17:13 こんにちは。
このアプリにバッジをつけられるようにしてもらえませんか。
ご検討よろしくお願いいたします。

hush_puppyhush_puppy 2011/12/02 21:39 アプリ使っていただいてありがとうございます。

バッジ機能(アプリアイコンの右上にでる赤い丸と数字)は
付けた方が良いと思っている機能ですので、付ける方向で考えようと思います。
ON/OFFの設定をどこでしようか迷っていますが、もう一度考えてみます。

2010-09-30

FaceMaker 2.0.0 リリースされました

| 17:24

FaceMaker 2.0.0がリリースされました。

内部を結構いじりましたので念のためバックアップをしてからアップデートをお願いします。

http://itunes.apple.com/jp/app/facemaker/id364255507?mt=8


以下、バージョン 2.0.0 の追加と変更点です


顔文字画面

パーツの種類にセリフを追加

セリフをキーボードから入力して[+]ボタンで追加できます。[カナ]ボタンでひらがなを半角カナに変換できます。追加したパーツとそれを使った顔文字は青色で表示されます。

※現バージョンでは追加したパーツのバックアップはできません。


ペーストボタンの位置を変更

ペーストボタンの位置を上部メニューからお気に入り画面上部へ移動しました。



テキスト画面

Twitterクライアント連携を追加

テキストを外部のTwitterクライアントアプリに転送できます。設定画面でTwitterの投稿をアプリ内部で行うか外部クライアントを使用するか選択できます。


履歴カート内の顔文字の削除を追加

顔文字の履歴から不要なものを削除できます。


メニューのボタンの並び順を変更

メニューのボタンの並び順を変更しました。順番が入れ替わっています。



クリップボード画面

クリップボード画面を追加

顔文字をワンタッチでクリップボードにコピーできます。マルチタスクを利用して他のアプリと切り替えながら使うときに便利です。顔文字をユーザー辞書に追加するときにも便利です。



お気に入り画面

テンプレートの位置を変更

テンプレートはお気に入りと一本化しました。☆0の顔文字としてお気に入りに追加されています。


非分割の顔文字の文字色を変更

外部からペーストした非分割の顔文字の色を青色から緑色に変更しました。

青色はユーザーが追加したパーツを使用した顔文字の色になります。



設定画面

リンクページを追加

設定画面にApp StoreやWebサイトへのリンクのあるページを追加しました。



ちなみに今回のアップデートは有料版のみです。無料版の扱いをどうするか判断がつかず保留しています。

今の広告付きは一旦停止して、機能を絞ってシンプルにしたバージョンを別に作ろうかなどと検討しています。

どういう形がユーザーと自分双方にとって一番よいのか悩んでいます。

supercellsupercell 2010/10/02 13:23 こんにちは。Supercellです。
App Storeレビューでは「Hydrangęa」というニックネームでFMのレビューもさせてもらっています。

先日Ver.2.0.0へパージョンアップしました。現在は問題なく使えております。ひとまず作業お疲れ様でした。

hush_puppyhush_puppy 2010/10/02 13:37 ありがとうございます。
動いているようで安心しました。
これからもFaceMakerをよろしくお願いします。

2010-09-16

アプリの紹介とインタビューをしていただきました

| 00:29

FaceMaker|第9回iPhoneアプリ開発者インタビュー | SHINGOLOG

http://plus.vc/gorog/iphone/161/


こちらのブログでアプリの紹介とインタビューをしていただきました。

第9回とあるように他の開発者の方のインタビューもたくさんあります。

とくにアプリ開発者の方は参考になるのではないでしょうか。


あとインタビューの最後に少しでていますが2.0.0を鋭意製作中です。

ただ自分ではかなりいじったつもりですが、見た目や使い勝手はなるべく変わらないようにしたので、2.0.0と謳うわりには代わり映えしないかもしれませんorz

2010-06-22

iOS4で顔文字をユーザ辞書に追加登録する方法

| 18:10

iOS4ではユーザ辞書と日本語キーボードに顔文字ボタン(「^_^」ボタン)が追加されました。

ユーザ辞書では「単語」と「よみ」を設定することで変換辞書に単語を登録できますが、「よみ」を「☻」で登録した単語は「^_^」ボタンから入力できるようになります。


あらかじめ登録したい顔文字をクリップボードにコピーしておきます。

f:id:hush_puppy:20100622184455p:image

iPhoneの「設定」アプリを起動して「一般」「キーボード」「ユーザ辞書を編集…」と画面を移動して「+」ボタンを押します。

f:id:hush_puppy:20100622183049p:image

「単語」欄に登録したい顔文字をペーストして、「よみ」欄に「☻」を入力して保存します。

f:id:hush_puppy:20100622183050p:image

これで日本語キーボードの「^_^」ボタンに新しい顔文字が追加されます。

f:id:hush_puppy:20100622183051p:image


以降は「FaceMaker」と「設定」アプリを行き来して、これを繰り返していきます。


「☻」はあらかじめ「単語:☻、よみ:☻」としてユーザ辞書に登録しておけば登録作業が楽になります。

「☻」は環境によっては表示されないか表示が潰れて読めないかもしれませんが、黒丸の中にスマイリーのUnicode文字です。名前は「BLACK SMILING FACE」、Unicode番号は16進数では「0x263B」、10進数では「9787」です。

(「☻」は日本語キーボードの「^_^」ボタンに最初から登録されている「(*☻-☻*)」を利用するのが良いそうです)


(6/24 1:10 追記)

アドレス帳利用の変換辞書でも、よみを「☻」にすれば「^_^」ボタンで使用できます。

有料版のアプリを使えばアドレス帳に一度に複数の顔文字を登録できます。

辞書登録時に「JIS」の欄を「☻」に、「よみがな仕分け」をオフにすれば「^_^」に登録できます。(ダイアログの値のデフォルトは設定画面で変更できます)

f:id:hush_puppy:20100624010901p:image

f:id:hush_puppy:20100624010902p:image


「設定」アプリはマルチタスクに対応していますが、FaceMakerはまだマルチタスクに対応していないため、顔文字のコピーに手間がかかってしまって申し訳なく思っています。

ユーザ辞書への登録に限らず、他のアプリへのコピーをやりやすくするために、お気に入りのみのモードを作りたいと考えています。

少し時間をいただければ幸いです。


(6/24 1:10 追記)

1.6.1としてマルチタスク対応版を申請しました。一週間を目安にしばらくお待ちください。


(7/2 16:00 追記)

iOS4対応の1.6.1は審査を通りませんでした。修正して再申請を行いますが、レスポンスが1週間周期なので予想以上に時間がかかる可能性が高くなっています。大変申し訳ありませんが目安は不明です。


操作マニュアルにも同じ説明を書いておきました。

http://udog.jp/facemaker/


これからもFaceMakerをよろしくお願いいたします。

通行人通行人 2010/08/31 20:12 iphone4を買って 使いたい顔文字がなかったので調べてたらここに辿りつきました  ちょうど残額が余ってたので有料版を使って一括で設定させて頂きました♪ 使いたい顔文字が一気に登録されてすごく幸せです  素敵なアプリを作っていただいてありがとうございました!!  アプリのレビューに書けばいいんでしょうけど、書いたことがないので、こちらに書かせていただきました((。´・ω・)。´_ _))ペコ  本当にありがとうございました。

hush_puppyhush_puppy 2010/08/31 20:23 お買い上げありがとうございます。
そしてコメントもたいへん嬉しいです。
レビューとかコメントとかもらえるのはアプリ作って本当によかったと思える瞬間です。

次回分の改良が難航ぎみだったのでとても励みになりました。
より使いやすいように改良を続けていこうと考えていますのでこれからもよろしくお願いします。

匿名匿名 2010/09/30 21:26 素晴らしいアプリをありがとうございます。
操作説明を読んだのですが分からない所があったので、質問させていただきます。
設定から一般、キーボードまでは分かるのですがユーザー辞書編集というものが無くて困っています。あと、^-^のマークもありません…アプリは凄く素敵で、重宝しているのですが…顔文字を登録できないので、使う度にコピーしたりと少し大変で……アプリを紹介した数名の友人もユーザー辞書編集の画面が無く困っています。
どこで質問すればいいかわからず、此方に書かせていただきました。

hush_puppyhush_puppy 2010/09/30 22:01 ご使用と紹介ありがとうございます。気に入ってもらえて大変うれしいです。

ユーザー辞書と^_^キーが見つからない可能性としては、「見落としている」か「iOSのバージョンが4以降ではない」かの2つ考えられます。

「ユーザ辞書を登録…」の場所は「キーボード」の一番下にあります。一番下なのでもしかしたらスクロールしないと見えない位置にあるかもしれません。
「^_^」キーはフリック入力用のキーボードの左下あたりで「ま」の下、「わ」左です。
位置はこちらの記事も参考になると思います。
http://www.lifehacker.jp/2010/07/100701ios4.html

もうひとつの可能性として、iPhoneのOSのバージョンが4以降ではない可能性があります。
今年の6月下旬にiPhoneのOSのバージョンは4になりました。これら2つの機能はバージョン4以降にしかありません。
iPhone3GやiPhone3GSの場合はiTunesでアップデートする必要があります。
OSのバージョンを確認する方法は、設定の「一般」→「情報」画面で「バージョン」の列に数字で書いてあります。

iPhoneのOSのアップデートの方法も書いておきます。
PCにiPhoneをつなぎ、iTunesを起動して左のメニューからiPhoneを選び「アップデートを確認」ボタンを押せばアップデートできます。
アップデートはバックアップやダウンロードなどで時間がかかる可能性がありますので、時間に余裕があるときに行ってください。
ただしiPhone3GはCPUの処理速度が遅いため、iOS4ではiPhoneの動作が遅くなる可能性もあります。大丈夫だとは思いますが慎重に行ってください。

長文でもうしわけありません。
タイミングによっては1日単位でお待たせしてしまいますが、分からないことがあればお気軽に尋ねてください。
アプリを快適に使ってもらえるなら幸いです。

匿名匿名 2010/11/03 14:54 こんにちは。9月30日にご質問させていただいた者です。

やっと時間がとることが出来たので、教えて頂いた方法を試してみたところ、無事に登録することが出来ました。アップデートの方法まで親切に教えてくださり、本当にありがとうございました。

友人にもこの方法を教えたところ、上手く出来たと言っていました。

これからも重宝させて頂きます。

お早い回答、対応ありがとうございました。

hush_puppyhush_puppy 2010/11/03 15:15 うまくいって良かったです。
予想の1つが当たっていたようで安心しました。
これからもよろしくお願いします。