カテゴリー: プログラミング

WordPress:デフォルトタイムゾーンが無効です

 WordPressのセッティングの話。

 WordPressのダッシュボードにサイトヘルスステータスと言う項目がいつの間にかありました。

 どうやらWordPress5.2から追加されたサイトヘルスという機能の、ダッシュボード項目らしいです。

 そこに警告が出ていたのですね。

デフォルトタイムゾーンが無効です

 と、サイトヘルス画面に出ていました。

 なんでもdate_default_timezone_setで無効にされているとか。二重にセットされていて、それが問題のように見えました。

 微妙に心当たりが。

 スマホのWordPressアプリに下書き保存すると、その時間が投稿時間になるというクセ(バグ?)があり、後でパソコン側で加筆修正して投稿すると、過去の時間の投稿になってしまうと言う現象があったのです。

 もしかしてタイムゾーン設定のせいかなと最初思って、調べたところ、wp-settings.phpのdate_default_timezone_setの行を変えれば良いと言う情報があったので、

 date_default_timezone_set(‘ UTF ‘)を
 date_default_timezone_set(‘ UTF+9 ‘)

 にしていたのですが、これを元の「UTF」に直したら解決し、警告がでなくなりました。

WordPressのタイムゾーンを設定はなぜか二箇所ある……

 調べてみると、WordPressのタイムゾーン設定は

  • WorePress本体>設定>一般>タイムゾーン設定
  • wp-settings.phpの、date_default_timezone_set(‘ UTF ‘)の一行

 この二つがありました。

 他にもPHPの関数でやる方法もあるらしいのですが、それは置いておきます。

 なぜ二つあるのかは、調べてみても良く分からず。どっちでも設定できると言う情報もあるし。うーん……。

 とりあえず、wp-settings.phpの方は放っておいて、本体で設定で「UTC+9」にしておくのが正解だと思います。

 以上、参考まで。

ブログ復活!

 一年ほどブログを閉じていましたが、このたび復活。活動を記録するのに、なんとなく必要だなと。雑文も書けるし。

 さて、WordPressブログを復活させるにあたって、少々手間取りましたので、手順とポイントを書いていこうと思います。以下、WordPress分かる人向け記事。

WordPressを復活させた手順

 さて。ブログを再開させるには、バックアップデータから復活させる必要があります。自分の場合、BackWpupと言うやつを使って圧縮ファイルでとってありました。Webを漁ってやり方を調べると……

  • まずファイルを解凍。前のブログがディレクトリ構造のまま解凍されます。
  • その中の必要なファイルのみをサーバーにアップロード。(アップするとセキュリティ的にまずいファイルがあるらしい……調べて……)
  • サーバーのデータベースを選択して、phpMyAdmin(SQLデータベース操作するやつ)を立ち上げる。
  • インポートタブを選んで、ローカルにある圧縮されたままのsqlファイル(自分の場合はgz圧縮でした)を選択。読み込む。

○問題1:データベースが選択されていません

 ここで一つ問題発生。データベースをセレクトしていないよ!……と言われました。

 調べると、phpMyAdminのSQLタブでSQLコマンドでセレクトすればよろしいと書いてありました。が、なんやかんや操作しているうちに、やらなくても出来てしまい、自動解決。データベースのツリー触っていたからですかね?

 で、WordPressのSQLデータがインポートが完了。

○問題2:投稿記事が復活しない

 データベースが読み込めたので、今度はWordPress側です。WordPressに戻ってみると『データベースの更新が必要です』と言われたので更新。

 しかし、ここで二つ目の問題発生。プラグインとテーマは復活したものの、投稿記事がまるで無い。全然無い。

 あー、もしかして投稿記事だけバックアップ取れてなかったかな?とか思い、小一時間ほど途方に暮れたものの、思い直して『BackWpup 投稿 復活」などと検索してみた。しかし全然それらしい記事がヒットしない。うーん……。

 わからないなりに考えていると、phpMyAdminの構造はどうやらWordPressのデータ構造そのものであることに気付く。もし投稿が残っているなら、データの中にあるはず。

 で、データベースのツリーを良く見ていくと、『post』と書かれたものが見つかった。うん、どう見てもこれが記事でしょう。

 中を見てみると、以前に書いた記事のタイトルらしきものが見つかった。つまり、データはどうやらあるっぽい!

 しかし、色々調べども、全く投稿記事一覧は表示されず。また小一時間ほど途方に暮れる。

 で。ツリーを見ていて気がついた。データテーブルの接頭辞が2種類ある。『wp1』と、もう一つ妙に長いやつ。そして両方に『post』がある。

 postのデータを開いて、記事タイトルと見てみると、どうやら『wp1』の方が古い投稿で、長いやつはついさっき作ったやつらしいことが判明。

 つまり、WordPress用のデータが2つある。なぜだ(インポートしたからさ……)。

 じゃあ、どうすればいいか。消すか、データを指定すれば良さそう。と推測。

 調べました。wp-configで『接頭辞を指定する項目』がある。これだ!……と言うわけで、wp-configをサーバーでゴニョゴニョしてデータを指定すると!

 ……ついに復活!おめでとう!パチパチパチパチ!

 と言う感じで、七転八倒はしませんでしたが、二転三倒ぐらいでWordPressブログが復活したのでした。

 さて、色々整えつつ、書いたり作ったりして行きますかね。

 

あけおめシューティング2018

あけましておめでとうございます。

え、三が日で「犬が空を飛んでネコのようなものと戦うシューティング」をUnityで作成いたしました。やーやれば出来るね!

URLはこちら
http://image-wave.com/AkeOme2018/

PCブラウザ用です。Firefoxで動作確認しました。以上。Safariはなんかダメね。対応してるはずなんだけど、おかしいなぁ……。

操作はPCゲーにありがちなキーボードWASD移動と、マウス左クリックファイアです。まあ普通かな?

これでだいたいUnityにおけるシューティングの基本が分かったので、色々作れると思います。

なお、制作ツールは

  • プログラム:Unity
  • グラフィック:Pixen、Blender
  • 音楽:LMMS

All 制作 by kumapomでお送りしております。

あ、地味にバージョンアップもするかもしれません。たまに見てみると吉かも。

ではまたー。

WordPressでプレビューが表示されない


下書きした記事のプレビューが出ない症状でしばらく悩んでたんですが、色々いじってるうちにサイト自体が表示されなくなり……おーい

探ってみるとキャッシュがどうこうと言う記事を見つけました。キャッシュ……(プラグインが怪しい)……と言うことでWordPressのキャッシュ系のプラグインを停止。直ったー。

WordPressは便利なプラグインがいっぱいありますが、そろそろバージョンも上がって最適化されて来ているだろうし、なるべく素のまま使うのがいいかもしれませんね。プラグイン止めてみましたが、体感変わらないし。

Unity5で作ってみたよ

最近はPHPでWebアプリとか作ってみた日々でしたが……何か違う……便利なんだけど……何か他のことやってみよう。

という訳で、WindowsにUnity5を落とせたのでチュートリアルやってみましたよー。

操作
左:← または a
右:→ または d

BGMは没作その1 by kumapom
エフェクトはチュートリアルそのまんま使ってます。

WordPress用にunityプラグインあるんですね。UnityDog。更新2年前ってのがちょっと怪しいですが動いてます。

参考リンク

[iPhone]豆腐フリッカー

Tofu_Top
 豆腐……それは遙か昔中国で唐の時代に紀元を持つ謎の白色の物体。言い伝えによると中国の奥地で猿が棒を投げたところに現れたと言う。投げた猿は突然かしこくなり、人語を話だし、今就職難だから何か良いところ無いっすかね?と村人へ告げ、職業訓練センターへと消えたそうだ。

 これは頭の良くなる物体だと言うことで、数多くの冒険家がこの豆腐を求めて旅立ったのだが、簡単には行かなかった。

 この豆腐というもの、その姿は山のように大きく、目が光り、口からトーフーと言う雄叫び(名前の由来)を上げて暴れ回った。尻尾の一振りすると、その衝撃波で一つの街が消滅したと言う逸話もある。つまりだ、これはただの物体では無かった。生きていたのである。生きていただけではなく、その力からして所謂妖怪魔物の一種だったと言えよう。

 自分の知っている豆腐と違う?いやいや、確かに豆腐の末裔は今でこそ家畜となり人々の生活に溶け込んでいるが、その実態は魔。魔物なのだ。君が口に運んでいるもの、それは魔の残りかすである。それを食っているのである。

 むろん、誰一人として豆腐に立ち向かわなかった訳では無い。ある時は麻婆さんが妖力で片栗粉に閉じ込め、ある者は知謀で熱湯の罠へと豆腐を落とし、またある者は頭から聖なる醤油とショウガをかけて退治した。

 しかし、豆腐はコージョーと言うものを作り、パートのヲバチャンの呪力を借りてその数を増やし続けた。

 日本には豆腐百珍と言うものがあった。天明の時代に書かれた豆腐の本で、百種類の豆腐の倒し方が書いてあったと言う。日本人も戦っていたのだ。ビバ祖先。

 やっこ、田楽、焼き豆腐、ありとあらゆる手段で攻撃された豆腐勢力はじりじりとその勢力を減少させ、ついには無害といえるまでに衰退したのである。現代では完全に豆腐は家畜と化した。

 しかしである、確かに大人しくはなったがこれはいつ牙を剥くか分からない。油断は禁物である。なにしろこれは魔物なのだから。あまり知られてはいないが、今でも豆腐の魔に魅入られた事件は後を絶っていないのだ。

 おや、君の後ろに立っているその四角いもの、それは……何だい……?

 ……とか言うテキトーな作り話はまるで関係無く、ただひたすら豆腐をフリックするゲーム。豆腐は左へ、それ以外は右へ。さぁ、レッツプレイ!

豆腐フリッカー App
カテゴリ: ゲーム / 価格: 無料
豆腐、フリックしてみませんか?


[Mac]StatusTimer / Mac用タイマーアプリ

StatusMenu_sc1
メニューバーの右側に常駐するアプリあるじゃないですか。

あれでタイマーが欲しいなと思っていた訳ですよ。それでしばらく情報を集めつつ、ちまちま作っていた訳ですが……出来ました!


  • Status Timer
    ステータスバーに常駐し、通知センターで教えてくれるタイマーアプリ。1分〜6時間まで対応。


    StatusMenu_set

    しかし、MacAppStoreで配布するにはアップル様にMacOSDeveloperとして登録して、今のiOSデベロッパーの年間1万円にさらに年間1万円を上納しないと出せない訳で……高いなー……また今度考えよう。

    そういう訳でこの辺に野良アプリとして置いときます。FREEです。

    ちなみにOSX10.9 Marvericksだと知らないアプリだから実行出来ませんとか言われると思いますが、MacAppStoreとMacDeveloperに登録していないとそう言われるようです。たぶん右クリックから実行するとかで実行出来たと思います。

    アプリは問題無いです。MacOSXのセキュリティ設定のせいです。アップルの囲い込みが激しいと思う今日この頃。

    以下興味のある人用、技術者向け読み物。

    メニューバーに常駐するアプリの作り方

    かいつまんで要点をまとめると次のような感じです。

    ・ドックに表示しないようにする
    ・起動時にウィンドウを表示しないようにする
    ・ステータスメニューアイテムを作って、クリックでメニューを表示するようにする

    ◯ ドックに表示しないように。
    TARGET>Info>Custom OSX Application Target PropatiesにApplication is Agentを追加。YES。

    ◯ ウィンドウを起動時に表示しないように。
    WindowのプロパティのVisible at launchをオフにする。

    StatusTimer_w_visible

    ◯ ステータスバー用のメニューをxibで作成。

    これを.mファイルにStatusMenuプロパティとして設定します。Ctrl+ドラッグですね。

    @interface stAppDelegate ()
      @property (weak) IBOutlet NSMenu *StatusMenu;
    @end
    

    ちなみにiOSだと@implementationにアウトレットが接続出来る訳ですが、Macだと出来ない模様。やると勝手に@prppertyが作成されてローカル変数の方はアンダーバー付きのものになります。

    個人的にこの方式は好きじゃないので、ローカル変数の方を削除。@propertyだけ残します。

    あと話が飛びますが、iOSで未だに@propertyを@synthesizeしてるのを良く見ます。@propertyは@synthesizeしなくともselfをつければアクセス出来ます。syhthesizeする方式は古いです。撲滅しましょう@synthesize。

    ◯ 本体(?)作成。ステータスバーに常駐するやつですね。ステータスアイテムと言うのが正式なのでしょうか?まあ仕組みが分かると本体では無いと言うことが分かりますがとりあえず。クリックした時にメニューが出るようにします。

    @implementation stAppDelegate{
        NSStatusItem *stItem;
    }
    
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    
      //ステータスバーのインスタンスを取得
      NSStatusBar *systemStatusBar = [NSStatusBar systemStatusBar];
    
      //ステータスアイテムを作成
      stItem = [systemStatusBar statusItemWithLength:NSVariableStatusItemLength];
      [stItem setHighlightMode:YES];//ハイライトする
    //  [stItem setTitle:@"StatTimer"]; //文字を設定する場合
      [stItem setImage:[NSImage imageNamed:@"Icon16.png"]];//画像アイコンを設定する場合
    
      //クリックした時にself.StatusMenuが表示されるようにする
      [stItem setMenu:self.StatusMenu];
    
    }
    

    ・あとはSettingとかQuitとかのメニュー項目をアクションやらOutletとして繋いだりして実装して行く訳です。この辺はiOSとほぼ同じです。

    参考リンク:
    http://cocoatutorial.grapewave.com/2010/01/creating-a-status-bar-application/

    http://genjiapp.com/blog/2013/01/04/how-to-develop-a-status-bar-app-for-os-x.html

    https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/nsstatusitem_class/Reference/Reference.html

    Macで通知センターを使う方法

    NSUserNotificationCenterというものを使います。これが通知センターらしいです。これにNSUserNotificationオブジェクトを渡すと通知してくれる仕組みみたいです。

    まず起動時にヘッダーにNSUserNotificationCenterDelegate宣言して、applicationDidFinishLaunchingでデリゲート。

    [[NSUserNotificationCenter defaultUserNotificationCenter]setDelegate:self];
    

    次にローカル変数を宣言。なんでローカル変数にしてるかと言うと、キャンセルすることがあるからです。

    @implementation stAppDelegate{
        NSUserNotification *scheduleNotif;
    }
    

    以下のカスタムメソッドで実行します。

    //ノーティフィケーションをスケジュール
    -(void)setScheduleNotification:(int)min{
        
        scheduleNotif = [[NSUserNotification alloc]init];
        int scheduleTime = min * 60;
        scheduleNotif.deliveryDate = [NSDate dateWithTimeIntervalSinceNow:scheduleTime];
        scheduleNotif.title = [NSString stringWithFormat:NSLocalizedString(@"TimePassed", nil),min];
        scheduleNotif.informativeText = @"Status Timer";
        scheduleNotif.soundName = NSUserNotificationDefaultSoundName;
        
        [[NSUserNotificationCenter defaultUserNotificationCenter]scheduleNotification:scheduleNotif];
    
    }
    

    ちなみに、最後のscheduleNotification:をdeliverNotification:に変えるといくらdeliveryDateを設定しようともすぐさま実行されます(はまりどころ)。

    キャンセルする時はこう。アップル的にはリムーブらしいですね。

      [[NSUserNotificationCenter defaultUserNotificationCenter]removeScheduledNotification:scheduleNotif];
    

    おまけ

    なお、タイマーの分数を保存してる訳ですが、何でやってるのかと言うと、NSUserDefaultsです。そう、iOSにあるアレです。同じです。iOSで覚えたことは結構Macでも活かせます。ではまた。

Webのアプリ化を考える

tusin

レスポンシブデザインについて調べてみるとモバイルファーストと言う考え方に辿り着きます。

http://ascii.jp/elem/000/000/697/697463/index-5.html

要約すると、まずモバイル用に作って、どこでも情報にちゃんとアクセス出来るようにすると言うことだと思います。

制約があるから集中出来るとか、モバイル端末の機能を使うとかは、ちょっととってつけた感があります。まあそういうことでしょう。

Webのアプリ化

ここ数日目次作ったりレスポンシブデザインにしたりしてた訳ですが、これ、良く考えるとWebのモバイルアプリ化なんじゃないかと思った訳です。

今はまだページ然としてますが、これにインターフェースやアニメーション、プログラムを加えると……今あるようなネイティブアプリみたいにになりますよね。

以下妄想。

HTML5号は倒れたままなのか

iPhoneも当初はWebアプリだけを考えていたと言います。

それが現在のネイティブアプリ全盛になった理由としては、起動が遅い、処理が遅い、レスポンスが遅い、などの遅いづくしだったせいだと思います。

HTML5もFacebookが撤退したせいで終わったと言われています。

果たしてWebアプリは終わったのか。いや、そこにしか無い情報のある限り無くならないのではないか。

ちなみに、アップルはネイティブアプリからWebページを表示するだけのアプリは禁止してたはずなので、WebView乗っけてURLだけ書いて〇〇サイトをアプリ化!……とかは出来ない訳です。Androidは良く知らないのですが…。

Webアプリのネットワークとか

iPhoneでウチのページから「マメニュ」を立ち上げて貰うと分かると思うんですが、シームレスに他のページがアプリとして起動します。あ、更新は突っ込まないで。

モバイルwebの概念がページからページへ移動では無くて、アプリの移動と言う感じになります。使い方が変わる気がします。

マメニュとか素朴なテクノロジーを使ってるのであまりアプリらしくありませんが、現在の技術を使えばもっとアプリらしくすることも出来ます。

これを押し進めるとどういう感じになるのか。

ちょっとまだ想像出来ませんが、夢が無限に広がる大宇宙……というお話でした。

レスポンシブデザインに対応

ReponsiveIM

まあ……大体出来た……かな。iPhoneからでも使い易くなりました。

レスポンシブデザインとは何か

PCとかiPhoneとか、タブレットとか世の中には色んなサイズの端末があります。

これをCSSを工夫することによってなんとかサイズの違う多様な端末に対応したデザインにしようと言うのが、レスポンシブデザインになります。

詳しくはこの辺読んでもらうとして。

ブラウザの幅を変えてみてもらえれば成果が分かると思います。

何をやったのかと言うと

  • 画面幅が小さくなったら display: noneでサイドバーを消す
  • それより小さくなったらメインの幅を%に
  • トップイメージの画像や文字の位置を%で指定。
  • サムネイルの大(size-large)と中(size-medium)を%表示に
  • iPhone用にヘッダーにメタタグを記述。
    <meta name=”viewport” content=”width=device-width, initial-scale=1″>

みたいなことを作りながら1コ1コ対処してみたらなんとなくそれっぽくなりました。

基本的に幅さえなんとかすればなんとかなります。高さはautoで十分です。

メディアクエリー

画面の幅でCSSを切り替えるのにはメディアクエリーと言うのを使います。
ソース書くとこんな感じ。

幅600ピクセルを超えると幅がauto(本来のサイズ)に切り替わります。

img.size-large{
	width: 100%;
	height: auto;
}
@media screen and (min-width:600px){
	img.size-large{
		width: auto;
	}
}

padding……

なんかいくらやっても横スクロールバーが出やがりまして。凄く謎だったんですが、paddingのせいでした。

paddingと言うのはdivとかの枠の内側に余白を持たせるCSSなんですが、これが元の幅に”足して”サイズを決定するものなんです。

例えば幅300ピクセルにpaddingを左右20ピクセル入れようと思ったら、幅を260ピクセルに変更しないといけません。……誰なんでしょうねこの仕様を考えた人は……。

という謎仕様によってあちこちに微妙なズレがあったんです。最終的にほとんど使わないことにしちゃいましたけど。いや、強敵だった。レスポンシブデザインの大ボスがpaddingだったとは。

もしやってみて、何故か横スクロールしてしまうと言うときはpaddingとかで何かはみ出てないかチェックしてみるといいかと思います。

[iPhone]kaimono 1.4 リリース

kaimono1_4sc.png

iOS7、消費税計算に対応

kaimono1.4リリースしました。iOS7、消費税計算に対応。

地味〜なところで言うと合計の3ケタ区切りに対応してます。これで数千万の計算でもダイジョブ大丈夫。

消費税はオプションでオンオフ出来ます。いらないときも安心。メイン画面にオンオフつけようかとも思いましたが煩雑過ぎるのでこうなりました。

プログラムの不思議

ところで、アプリ作るといつも思うんですが、作ってる最中はえらい大変なのに、出来上がると簡単に作ったように見えるのはどういうことなんでしょうね?今回も技術的にはチャレンジャーだったんですが、まるで普通に見えるのはどう言うことなのっ。

シンプルに作るのを心がけているせいなのか、はたまたそういうものなのか、それとも妖怪に騙されてるとか。え、妖怪?だまされてる?

とか思いましたが、よくよく観察してみると、プログラム作業の半分は「ドキュメントを読むこと」なんですね。動かすのには知識が必要。そこに時間が吸い取られます。まあ知識なので、一度習得すれば作るのは速くなると思います。

そして忘れ物

About画面のレビューボタンにリンク忘れました〜。次で対応。
お役に立ちますように。

kaimono – 買物メモ&計算機

Xcode5でサイズインスペクタが見えない

Delta?

Xcode5でiOS6とiOS7に対応するためにパーツにiOS6/7 Deltaと言う値を設定する必要があります。これを使えばあのアイヴデザインで生じたiOS6とiOS7とのにっくき差が吸収出来てしまうのです。手動ですが。んー、自動でやってくれって気もしないでも無いですが……。

で、これを実現するためにWebページの例を見ながらやってみました。AutoLayout外して…サイズインスペクタを……サイズインスペクタを……あれっ?……無いよ。

ググって辿り着いたのはやはりStackOverFlow。
http://stackoverflow.com/questions/19306762/inspector-size-on-xcode-5-is-showing-nothing

やー、毎回頼りになるねー。えーっと、クリックしろ?クリックと。ポチ。……ほう、畳まれてましたか……気付くの無理。

以上、何でデフォルトで畳まれているのかアップルに聞きたいでした〜。参考まで〜。

オマケ情報

実はこのデルタと言う値はナビゲーションバーの透明をオフにすることによって不要になります。ナビゲーションバーの分だから当然ちゃ当然なんですが。
Storyboardで設定出来ます。