指定した日付は第何週なのか調べてみる

指定した日付が第何週目にあたるのか調べてみました。
用途としては「2015-02-02T00:00:00+00:00」とJSON複数日付が渡され、
それぞれが第何週目のグループに分けられればよいのかを調べるために使います。

まずString型で日付が渡ってくるのでNSDate型にする必要があります。
Objective-cやり始めたころに作ったメソッドがあったのでそれを流用します。

-(NSDate*)remakeDate:(NSString*)day{
    day = [day stringByReplacingOccurrencesOfString:@"\n" withString:@""];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeStyle:NSDateFormatterFullStyle];
    [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"];
    NSDate *remakeDay = [dateFormatter dateFromString:day];
    if(!remakeDay){
        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mmZZZZ"];
        remakeDay = [dateFormatter dateFromString:day];
    }
    if(!remakeDay){
        [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
        remakeDay = [dateFormatter dateFromString:day];
    }
    return remakeDay;
}

第何週目か確認したい日付のリストはテスト用に以下のように準備しておきます。

NSArray *dayList = [NSArray arrayWithObjects:
                    [self remakeDate:@"2015-02-02T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-05T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-12T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-14T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-16T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-17T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-18T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-20T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-21T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-22T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-26T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-27T00:00:00+00:00"],
                    [self remakeDate:@"2015-02-28T00:00:00+00:00"],
                    nil];

上記のリストをログに出力しながら確認してみます。

NSDateComponents* components = [[NSDateComponents alloc] init];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekOfMonthCalendarUnit;
for (int i = 0; i<[dayList count]; i++) {
    components = [calendar components:flags fromDate:[dayList objectAtIndex:i]];
    NSLog(@"%ld年%ld月%ld日は第%ld週目です。"   ,(long)[components year]
                                            ,(long)[components month]
                                            ,(long)[components day]
                                            ,(long)[components weekOfMonth]);
}

出力した結果は以下のようになりました。

2015年2月2日は第1週目です。
2015年2月5日は第1週目です。
2015年2月12日は第2週目です。
2015年2月14日は第2週目です。
2015年2月16日は第3週目です。
2015年2月17日は第3週目です。
2015年2月18日は第3週目です。
2015年2月20日は第3週目です。
2015年2月21日は第3週目です。
2015年2月22日は第4週目です。
2015年2月26日は第4週目です。
2015年2月27日は第4週目です。
2015年2月28日は第4週目です。

いじょーです!

指定した日付が何曜日か取得する方法

Objective-cで指定した日付が何曜日か取得する方法を調べたのでメモしておきます。

NSCalendar *calendar = [NSCalendar currentCalendar];
//2015年2月1日を指定
NSDateComponents* components = [[NSDateComponents alloc] init];
components.year = 2015;
components.month = 2;
components.day = 1;
NSDate* date = [calendar dateFromComponents:components];

//何曜日か取得(1=日曜日〜7=土曜日)
components = [calendar components:NSWeekdayCalendarUnit fromDate:date];
NSArray *weekList = @[@"日曜",@"月曜",@"火曜",@"水曜",@"木曜",@"金曜",@"土曜"];
NSLog(@"%@",[weekList objectAtIndex:[components weekday]-1]);

components:NSWeekdayCalendarUnitでセットした日付の曜日番号を取得します。
日曜始まりで1=日曜日〜7=土曜日となります。
weekList配列に曜日の名称を入れておきます。
そのあと、配列からobjectAtIndexで取得できた曜日番号で曜日名称を取得する流れになります。
※曜日番号が1始まりなので−1しています。

いじょーです!

マンガ新刊アプリ 不具合情報

先日リリースされました「マンガ新刊情報」で不具合が発生しています。

対象バージョンは2.0.2です。

※現在アプリのアップデートをまだ実施していない方は、次のバージョンがリリースされるまでお待ちください。

お気に入り登録した本がアプリ再起動時には削除されてしまっております。

上記事象により、発売日の通知はされない状態にあると考えられます。

現在Appleへ修正版(2.0.3)を提出しており、早期レビュー完了を依頼しています。

ご利用の皆様にご迷惑をおかけしますが、今しばらくお待ちください。

現在申請中です!

http://www.radio96fm.net/site/files/01-20150108-081617.jpg

2015年に入り、もう日にちもだいぶ経ってしまいましたが、明けましておめでとうございます。

年末はスノボ、年始は熱に悩まされ「嬉し苦し」な生活で忙しくしておりました。
( ゚Д゚ノノ☆パチパチパチパチ

前置きはこれくらいにして・・・

マンガ新刊情報のアプリのレビューへ投稿頂いた方!
ありがとうございます!

まだの方!レビューお願いします!!

マンガ新刊情報

マンガ新刊情報

  • Chikanori Tsuru
  • ブック
  • 無料

やはりコメントいただくとモチベーション上がりますし、要望なんかも参考に改善策を練ることができます。

★が多いと更に喜びます!!
(・∀・)ニヤニヤ

レビューはやはり大切ですねぇ〜(しみじみ)

今回の記事で伝えたいこと。

レビューで要望いただいた内容を反映したものを今Appleに申請中です。
今しばらくお待ちください。
また、iOS8でレイアウト崩れが起きていたので合わせて修正しています。

他にもいろいろと更新しているので、詳細は配信時の案内で確認お願いします。

そろそろこのアプリのAndroid版を作ろうかなと考え中・・・

AndroidStudioがBETA版から脱した今がちょうどイイタイミングかなと・・・

せっかくAPIも自前のサーバーで用意してるわけですし。。

そして、何よりこのブログへの検索キーワードに「アプリ マンガ 新刊」が多い多い。。

Androidで有名なマンガ新刊情報のアプリがあったようですが、今は削除されてなくなっているようですね。。。

狙い目なのかな?

もともとiOSで今出している私の「マンガ新刊情報」アプリですが、
Googleが提唱するMaterialDesignを参考にしているためAndroidでも使えるデザインというわけです。

そこに悩む時間を費やさなくてよくなる分、案外あっさりできるものなのかな。。

最近はObjective-CよりもJavaでガリガリ製造してるわけですし、案外いけんのかも。。。

とりあえず終電地獄から早く脱し時間作らねば。。。

それではアプリの更新までもう少々お待ちくださいー。

ヽ(´ー`)ノ

mecabに辞書を追加してみた話

せっかく前回のエントリmecabを利用できるようにしたので、優秀な形態素解析くんになってほしく辞書を追加しました。
追加する方法はほぼ以下の記事の通りです。

テキトーにワークディレクトリを用意しておきます。

# mkdir dicMaker
# cd dicMaker

まずは「はてな」のワードを落とします。

curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv

次にWikipediaのワードを落とします。

curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0

さすがのWikipedia。1分半ほど時間かかりました。

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 9255k  100 9255k    0     0   104k      0  0:01:28  0:01:28 --:--:--  146k

落としてる間に、先ほどの記事の通りRubyのソースを書きます。
名前はテキトーにdicMaker.rbとしておきました。

require 'csv'

original_data = {
  wikipedia: 'jawiki-latest-all-titles-in-ns0',
  hatena: 'keywordlist_furigana.csv'
}

CSV.open("custom.csv", 'w') do |csv|
original_data.each do |type, filename|
next unless File.file? filename
open(filename).each do |title|
title.strip!

next if title =~ %r(^[+-.$()?*/&%!"'_,]+)
next if title =~ /^[-.0-9]+$/
next if title =~ /曖昧さ回避/
next if title =~ /_\(/
  next if title =~ /^PJ:/
  next if title =~ /の登場人物/
  next if title =~ /一覧/
  
  title_length = title.length
  
  if title_length > 3
  score = [-36000.0, -400 * (title_length ** 1.5)].max.to_i
  csv << [title, nil, nil, score, '名詞', '一般', '*', '*', '*', '*', title, '*', '*', type]
  end
  end
  end
  end

はてなWikipediaのキーワードCSVが用意できたら早速Rubyを実行してみます。

# ruby dicMaker.rb

するとcustom.csvが出来上がります。
超簡単です。ynakayamaさんありがとう!

ここまでは本当に記事のとおりです。
ynakayamaさんの記事では以下のコマンドでした。

/usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv

私のmacbrewで入れたmecabさんは以下のようになりました。

/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv 

PATH通してあげればいいんでしょうけど面倒なのでそのままにしてます。
とりあえず無事dicファイルができあがりました!