オフィス狛 技術部です。
現時点(2016/11/23)の Xcode の最新は 8.1 ですが、
Swift 2.3 で作られたプロジェクトを移行するには、色々とやらないといけない事があります。
という訳で弊社では、まだ移行出来ないプロジェクトなどは、
Apple Developer サイトから Xcode 7.3 をダウンロードして、8.1 と共有して使っています。
今回、Swift2.3 で作られたプロジェクトをリリースする事になり、
いつもの手順でXcodeで「Archive → Upload to App Store」の手順を行なったら・・・・
ERROR ITMS - 90167 No. app bundles found in the package
というエラーが発生しました。
このままではストアにアップロード出来ないので、調べて見ると以下のような情報が。
stack overflow - ERROR ITMS - 90167 No. app bundles found in the package -
要約すると、
「macOS Sierra 10.12 で Xcode 7.3 を使ってApp Store へのアップロードは出来ない」
「この不具合は、次のOSのアップデート時に修正されるようだ」
さすがに次のアップデートを待つ事は出来ないので、他の方法を探ります。
そう言えば、App Storeへアップロードするツールがあったな・・・という事で、
「Application Loader」というツールを使います。
1) まずは、「Archive」から、ipaファイルを作っておきます。
2) そして、Xcodeのメニューから、「Application Loader」を起動します。
3) 先ほど作成したipaファイルを選択します。
4) アップロードが始まります。
5) アップロード完了です。
こういう方法も覚えておくと、いざという時に役に立ちますね。
ios
,
Swift
,
Xcode
2016年11月23日水曜日
2016年11月13日日曜日
MySQLの timestamp型が、なかなか厄介。
11月 13, 2016
オフィス狛 技術部です。
弊社ではしばらく使う事のなかったMySQLですが、
とあるプロジェクトで久しぶりに使い、そしてハマりました。
「entry_datetime」「update_datetime」などは、システムで良くあるタイムスタンプ系のカラムです。
日時はプログラム側で設定する事を想定しています。
それ以降、その値は変わらない想定でした。
ところが、テーブル更新時(Update時)に「entry_datetime」が勝手に更新されていたのです。
当然最初はプログラムを疑いましたが、プログラムに問題はありませんでした。
で、ちょっとハマった後、何気なく作成されたテーブルの定義を確認すると、
「entry_datetime」に「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いているのです。
(「update_datetime」には付いていない)
もちろん、Create文には、そのような指定はしていません。
どうやら、timestamp型には、デフォルトで「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いてしまうようです。
※他のサイトの情報だと、NULL 許可していても、NOT NULL にもなってしまうようです。
なんて余計なお世話だ・・・とも思いましたが、
まあ、「timestamp」という属性名だし、そういう事になりますよね・・・
タイムスタンプ系の使い道で無い場合、型は「datetime」にすれば良いだけですからね。
とは言うものの、今のままでは、本来の用途に使えないので、テーブルの定義を変更します。
注意事項ですが、デフォルト値の「CURRENT_TIMESTAMP」も削除したいからといって、
またデフォルトの「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いてしまいます。
MySQLを使い込んでいる方ですと、「そりゃ、そうでしょ」レベルの話なのかもしれませんが、
久しぶりに使うと、ハマってしまいますね。
MySQL
弊社ではしばらく使う事のなかったMySQLですが、
とあるプロジェクトで久しぶりに使い、そしてハマりました。
問題となったテーブル
まず、以下のようなCreate文を実行しました。CREATE TABLE koma_test ( koma_test_id bigint NOT NULL AUTO_INCREMENT, koam_code varchar(2) NOT NULL, test_count int, test_fee decimal(7,0), has_deleted boolean DEFAULT false NOT NULL, entry_datetime timestamp NOT NULL, entry_user varchar(100), update_datetime timestamp NOT NULL, update_user varchar(100), PRIMARY KEY (koma_test_id) );
「entry_datetime」「update_datetime」などは、システムで良くあるタイムスタンプ系のカラムです。
日時はプログラム側で設定する事を想定しています。
発生した現象
本来、プログラム側では登録時(Insert時)のみ「entry_datetime」が設定され、それ以降、その値は変わらない想定でした。
ところが、テーブル更新時(Update時)に「entry_datetime」が勝手に更新されていたのです。
当然最初はプログラムを疑いましたが、プログラムに問題はありませんでした。
で、ちょっとハマった後、何気なく作成されたテーブルの定義を確認すると、
「entry_datetime」に「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いているのです。
(「update_datetime」には付いていない)
もちろん、Create文には、そのような指定はしていません。
どうやら、timestamp型には、デフォルトで「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いてしまうようです。
※他のサイトの情報だと、NULL 許可していても、NOT NULL にもなってしまうようです。
なんて余計なお世話だ・・・とも思いましたが、
まあ、「timestamp」という属性名だし、そういう事になりますよね・・・
タイムスタンプ系の使い道で無い場合、型は「datetime」にすれば良いだけですからね。
とは言うものの、今のままでは、本来の用途に使えないので、テーブルの定義を変更します。
ALTER TABLE koma_test CHANGE entry_datetime entry_datetime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
注意事項ですが、デフォルト値の「CURRENT_TIMESTAMP」も削除したいからといって、
ALTER TABLE koma_test CHANGE entry_datetime entry_datetime TIMESTAMP NOT NULL;というSQLを流してしまうと、
またデフォルトの「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」が付いてしまいます。
MySQLを使い込んでいる方ですと、「そりゃ、そうでしょ」レベルの話なのかもしれませんが、
久しぶりに使うと、ハマってしまいますね。
MySQL
2016年11月7日月曜日
Raspberry Pi 3 で 3G 通信をしてみる。 〜 Raspberry Pi 3 への 3GPI 取付と設定 〜
11月 07, 2016
オフィス狛 技術部です。
Raspberry Pi で 3G 通信をしてみよう! という事で、
今回は、Raspberry Pi と 3GPIの取り付けを行なっていきます。
外したSIMを変換アダプタ(標準SIM)へセットします。
今回は、汎用性を考えて(この検証以外でも使いたいので)、
nano(ナノ)サイズSIMを購入しましたが、標準SIMサイズを購入していれば、上記作業は不要です。
※SORACOMでは、ナノ、マイクロ、標準SIMのサイズが用意されています。
【同梱品一覧】(取扱説明書より)
まずは写真の赤枠の部分に、六角スペーサを取り付けます。
こんな感じです。
ナットで裏側から固定しています。
裏側はこんな感じです。
続いて、Raspberry Pi のGPIOピンに、3GPIを差し込みます。
結構強めに押し込まないとちゃんとハマりませんが、
繊細なので、壊さないように力込めましょう。
GPIOピンに差し込んだ後に、六角スペーサのネジを締めます。
写真の赤枠がネジを締めた後の状態です。
※microSDカードの裏表を間違えないように。
IC端子と切れている部分の位置に気を付けてセットします。
スロットを閉じた後は、先程と逆に手前に引く感じでずらすと、固定されます。
"RF"と記載されている方に取り付けます。
結構力を入れないとネジが回りませんので、壊さないように力込めましょう。
Raspberry Pi のUSBと、3GPIのUSBmini-Bを繋ぎます。
後は電源投入ですが、その前に、
Raspberry Pi にUSBキーボードと、HDMIケーブルを接続しています。
最後に3GPI側に電源を接続します。
起動しました。
3GPIが梱包されていた箱の内側に、UserNameとPasswordが記載されているので、
入力してログインします。
コンソール上で「sudo raspi-config」とコマンドを打ちます。
起動した設定画面で「9 Advanced Options」を選択します。
次に出てきた画面で「A4 SSH」を選択します。
SSH Serverを有効(Enable)にします。
セットアップはここまでとなります。
写真がセットアップ後の状態です。(LANケーブルも接続しています)
大きさの比較に、フリスクも置いてみました。
※SORACOMは(と言うより、データ通信のみのSIMはほとんど)、
グローバルIPではなくプライベートIPが割り振られます。
その為、SIMの接続を利用したリモート接続が出来ません。
(中継サーバーを設ける事で可能になるようですが、今回は記載しません)
という事で、リモート接続をする為に、LANケーブルを接続しています。
さて、3G通信の準備が完了したので、次は実際に通信速度を測ってみようと思います。
3)通信速度を測ってみる(近日公開予定)
Raspberry Pi
Raspberry Pi で 3G 通信をしてみよう! という事で、
今回は、Raspberry Pi と 3GPIの取り付けを行なっていきます。
・SIMカード準備
SIMはカードのような物に付いているので、丁寧に取り外します。外したSIMを変換アダプタ(標準SIM)へセットします。
今回は、汎用性を考えて(この検証以外でも使いたいので)、
nano(ナノ)サイズSIMを購入しましたが、標準SIMサイズを購入していれば、上記作業は不要です。
※SORACOMでは、ナノ、マイクロ、標準SIMのサイズが用意されています。
・3GPI同梱品確認
実際の作業の前に、3GPIの同梱品を確認します。【同梱品一覧】(取扱説明書より)
- 3GPI本体 1枚
- 接続設定済Raspbian入microSDカード(SD用アダプタ付) 1枚
- 3Gアンテナ 1本
- ACアダプタ(12V 1A) 1個
- USB-A雄-USBmini-b雄 100mmケーブル 1本
- Raspberry Pi ModelB+用六角スペーサ(M2.6)セット 2セット
・Raspberry Pi に 3GPI を取り付ける
では、Raspberry Pi に3GPIをセットしたいと思います。まずは写真の赤枠の部分に、六角スペーサを取り付けます。
こんな感じです。
ナットで裏側から固定しています。
裏側はこんな感じです。
続いて、Raspberry Pi のGPIOピンに、3GPIを差し込みます。
結構強めに押し込まないとちゃんとハマりませんが、
繊細なので、壊さないように力込めましょう。
GPIOピンに差し込んだ後に、六角スペーサのネジを締めます。
写真の赤枠がネジを締めた後の状態です。
・SDカード取付
本体をひっくり返して、microSDカードを差し込みます。※microSDカードの裏表を間違えないように。
・SIMカード取付
SIMスロットは閉じている状態の時に、奥に押す感じでずらすと開きます。IC端子と切れている部分の位置に気を付けてセットします。
スロットを閉じた後は、先程と逆に手前に引く感じでずらすと、固定されます。
・その他取付
3Gアンテナを取り付けます。端子が二つありますので、"RF"と記載されている方に取り付けます。
結構力を入れないとネジが回りませんので、壊さないように力込めましょう。
Raspberry Pi のUSBと、3GPIのUSBmini-Bを繋ぎます。
後は電源投入ですが、その前に、
Raspberry Pi にUSBキーボードと、HDMIケーブルを接続しています。
最後に3GPI側に電源を接続します。
起動しました。
3GPIが梱包されていた箱の内側に、UserNameとPasswordが記載されているので、
入力してログインします。
・SSH接続設定
Raspberry Pi へTeraTermなどで接続する為の設定を行います。コンソール上で「sudo raspi-config」とコマンドを打ちます。
起動した設定画面で「9 Advanced Options」を選択します。
次に出てきた画面で「A4 SSH」を選択します。
SSH Serverを有効(Enable)にします。
セットアップはここまでとなります。
写真がセットアップ後の状態です。(LANケーブルも接続しています)
大きさの比較に、フリスクも置いてみました。
※SORACOMは(と言うより、データ通信のみのSIMはほとんど)、
グローバルIPではなくプライベートIPが割り振られます。
その為、SIMの接続を利用したリモート接続が出来ません。
(中継サーバーを設ける事で可能になるようですが、今回は記載しません)
という事で、リモート接続をする為に、LANケーブルを接続しています。
さて、3G通信の準備が完了したので、次は実際に通信速度を測ってみようと思います。
3)通信速度を測ってみる(近日公開予定)
Raspberry Pi
2016年11月1日火曜日
Raspberry Pi 3 で 3G 通信をしてみる。〜 SORACOM アカウント登録から SIM 登録まで 〜
11月 01, 2016
オフィス狛 技術部です。
Raspberry Pi で 3G 通信をしてみよう! という事で、
まずは、3G通信を行う為のSIMの準備を行います。
SORACOM のサイトから購入する事も可能ですが、今回は、即日納品可能な Amazonで購入しました。
アカウント登録後、ログインすると、以下のような画面が表示されます。
まだ SIM は何も登録されていない状態です。
IMSI・パスコードは、購入した SIM が取り付けてあるカードの後ろに記載してあります。
登録すると、先程の SIM の一覧に表示されます。
注意すべき点は、「SIMを登録した時点から料金が発生する」という事です。
今回は、データ通信のみのSIMを登録したので、登録直後から、「1日5円」が発生します。 そして、実際に使い始めると、「1日10円」の基本料金+通信料が発生します。
(ま、それでもSORACOMは、かなりお安いと思います。)
さらに、使用する時間帯や、通信速度によっても料金が変わってくるので、気をつけましょう。
さて、SIMの準備が完了したので、次はRaspberry Pi 3 への 3GPI 取付と設定になります。
2)Raspberry Pi 3 への 3GPI 取付と設定
(http://blog.officekoma.co.jp/2016/11/raspberry-pi-3-3g-raspberry-pi-3-3gpi.html)
Raspberry Pi
Raspberry Pi で 3G 通信をしてみよう! という事で、
まずは、3G通信を行う為のSIMの準備を行います。
・SIMの購入
今回購入した SIM は「SORACOM Air SIM カード(データ通信のみ) (ナノ)」となります。SORACOM のサイトから購入する事も可能ですが、今回は、即日納品可能な Amazonで購入しました。
・SORACOMアカウント登録〜ログイン
SIMが用意出来たら、SORACOM社 のサイト(https://soracom.jp/)にてアカウント登録を行います。アカウント登録後、ログインすると、以下のような画面が表示されます。
まだ SIM は何も登録されていない状態です。
・SIMの登録
「+SIM 登録」押すと、SIM の情報を入力するポップアップが表示されます。IMSI・パスコードは、購入した SIM が取り付けてあるカードの後ろに記載してあります。
登録すると、先程の SIM の一覧に表示されます。
・通信料金
SORACOM社のサイト(ご利用料金 - 日本向け Air SIM)を見てもらうのが一番ですが、注意すべき点は、「SIMを登録した時点から料金が発生する」という事です。
今回は、データ通信のみのSIMを登録したので、登録直後から、「1日5円」が発生します。 そして、実際に使い始めると、「1日10円」の基本料金+通信料が発生します。
(ま、それでもSORACOMは、かなりお安いと思います。)
さらに、使用する時間帯や、通信速度によっても料金が変わってくるので、気をつけましょう。
さて、SIMの準備が完了したので、次はRaspberry Pi 3 への 3GPI 取付と設定になります。
2)Raspberry Pi 3 への 3GPI 取付と設定
(http://blog.officekoma.co.jp/2016/11/raspberry-pi-3-3g-raspberry-pi-3-3gpi.html)
Raspberry Pi
登録:
投稿 (Atom)