ピティナ開発者ブログ

全日本ピアノ指導者協会のIT担当者が気まぐれにつづる技術系中心のブログです


新入社員が10ヶ月間のWeb開発を通して躓いたこと30選

はじめに

新入社員がCakePHPRuby on Railsなどを使ってweb開発をした際に躓いたポイントを列挙します。 細かい部分でも躓いたら逐一メモにとっていたので、上から時系列順に読んでいくと懐かしさを感じますが、 記事に書くために追記などをしつつ、分類別でまとめてみました。

HTML, javascript

meta viewport

chromeのモバイエミュレータがなんだかうまく動作しない!? そんな時はもしかしたらヘッダーに下のようにmeta viewportタグを埋め込むと解決するかもしれません。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

formタグが正しいところに出ない

formタグは入れ子に出来ません。 中にformタグがないか確認してみます。 地味に引っかかるタイプの問題です。

chromeだと中のタグは消えてしまうようです。

disabledだとフォームが送信されない

disabled 指定だとフォーム自体不完全なものとなり、postで データをsubmitしようとしてもデータが入ってきません。

PHPの$POST[‘hoge’]の値が空になります。キー自体は作られているようです。

文字が予め入っているテキストフィールドにdisabled属性を付け、 submitしようとしたときにハマりました。disabledではなくreadonlyを付けましょう。

input 要素の disabled 属性と readonly 属性の違い

ajaxのエラーメッセージの出し方

下のように、error関数の引数を渡してあげればよいです。

$.ajax({
error:function(XMLHttpRequest, textStatus, errorThrown){
  alert("システムエラー");
  alert(XMLHttpRequest.status);
  alert(textStatus);
  alert(errorThrown.message);
}
});
続きを読む

MovableType4(MT4)でウェブページを同一MT内の別ブログに移す

Hiroyuki Noguchiです。

のっぴきならない事情により、古めかしいMovableType4(MT4)を弄る必要が出てきました。
特に、一つのブログ内にある「ウェブページ」を、別のブログに移さなくてはならなくなったのですが……
何と、それがオフィシャルではできない!! ……という、超残念仕様に、立ち向かってみました。

前提

MovableTypeって?

数多くある静的CMSのうちの一つです。

www.sixapart.jp

MT内部の階層構造(ざっくり)

同一MT内で複数のブログを運用することができます。
階層構造は概念的にはこういう感じです。

  • MT
    • blog_1
      • blog_entries
        • blog_entry_1
        • blog_entry_2
      • web_pages
        • web_page_1
        • web_page_2
      • etc…
    • blog_2
      • blog_entries
      • web_pages
      • etc…
    • blog_3
続きを読む

MovableType4(MT4)で使われるMySQLテーブルと各カラムの説明

Hiroyuki Noguchiです。

今さらのMovableType4(MT4)ですが……
今回、どうしても調査せざるを得なくなったので、得た知見を記録しておきます。

どうしても調査せざるを得なくなった理由については別記事にて。

ptna.hateblo.jp

前提

MovableTypeって?

数多くある静的CMSのうちの一つです。

www.sixapart.jp

内部で使用されているデータベース

MySQLです。
というわけで、この中身をざっくり見ていきます。

MT4の各テーブル毎のメモ

mt_asset

  • 画像とかの素材=アイテムを管理するテーブル

mt_asset_meta

  • 画像とかに設定されるパラメータが入ってくる
  • 例: image_width 60 みたいな
  • asset_meta_asset_id というカラムがあって、ここに、mt_assetのidが入る
  • このテーブルの固有キーが格納されるカラムは存在しない
続きを読む

クレジットカード決済にOmiseを導入してみている最中で、良さそうな点・いまいちな点

前置き

2017年の1月も半ばですね、Hiroyuki Noguchiです。
Webpay終了事件への対応に追われている方々が、結構出てきている頃なんじゃないかなーと思いますがいかがでしょうか。

当協会では、あれこれ検討した結果、Omiseさんを移行の第一候補として進めることにいたしました。

www.omise.co

導入の決め手

導入の決め手はいくつかありますが、

  • バックグラウンドがしっかりしていそう(Webpayのようなクローズはなさそう)
  • Recursions API (定期課金) の実装予定がある
  • 日本向けに ******(本決まり未定とのことで一応伏せ字) の実装予定がある
  • 日本向けにJCBの実装もできる
  • リンク型決済の実装がある
  • 営業担当者さんのご対応

このへんが、やはり大きいところでした。

APIの充実度などはやはりStripeに惹かれるところもありましたが、JCB対応できないというのが、当協会としてはかなり厳しい判定要因になりました。

リンク型決済とは

さて、導入理由の4番目、

  • リンク型決済の実装がある

と書きました、これについて。

続きを読む

CarrierWaveでActiverecordを使わずに、jQuery.facedetectionで実物の顔認識をさせつつプロフィール画像をアップロードする

CarrierWaveとはRuby on Railsで動く画像のアップロードをサポートするgemです。

よくSNS等で使われる、ユーザー画像(アバター)のアップロードに使うことが出来ます。また、ActiveRecordをサポートしているため、ユーザー情報と紐づく形でDBに画像情報を格納することが出来ます。(画像自体はサーバー上の指定した場所に保存しており、BLOB型で保存するにはcarrierwave-blobが必要です。)

今回の要件としては、

  • ユーザー情報変更画面でユーザー画像のアップロードができる。

  • 画像のファイル名は[ユーザーID].jpgとする。

  • 画像専用のテーブルは用意しない。

  • 画像をアップロードする前にプレビュー画像の表示をする。

  • 画像をアップロードする前に人物の顔写真であるかどうかを判定する。

以上の5つが挙げられます。

続きを読む
この記事は現在0人が閲覧中