月別アーカイブ 3月 2018

takahashi 著者:takahashi

意外と分からないインターネットの仕組み…DNSのキャッシュ時間(TTL)とは

今回は、ホームページなどをWeb上に公開している方向けです。
自分のサイトを持っている方の多くは、”独自ドメイン”をもっている方が多いと思います。

インターネット上で接続先のサーバーを指定する際、本来は192.0.2.1のようなIPアドレスで指定する必要があります。
しかし、数字だけのアドレスは人間からすると非常に覚えづらいですよね。そこで出てきたのが”ドメイン”という仕組みです。

ドメインの詳しい仕組みについては、こちらのサイトにおまかせし、今回は割愛します。
ドメインとは?をわかりやすく解説します – カゴヤのサーバー研究室

このドメインなのですが、IPアドレスとドメインを紐づける”対応表”を公開しているサーバーがあり、このサーバーをDNSと呼びます。
例として、DNSの仕組みをexample.comというドメインのIPアドレスを調べるときの流れをおって説明します。

まず、ユーザーから一番近いDNS(たとえば、自分の所属する組織が管理しているDNS、プロバイダが管理するDNSなど)へ問い合わせが行われます。このDNSをリゾルバと呼びます。最初に問い合わせを受けたDNSは自身が管理するドメインとIPアドレスの対応表にexample.comが存在していないか確認をします。

もし、自身の管理する対応表にドメインが存在していない場合は、最上位のDNSへ問い合わせを行います。このDNSを”ルートDNS”と呼びます。
ルートDNSでは各TLDのついたドメインはどのDNSへ問い合わせれば情報が引き出せるか、という情報のみを持っています。例えば、example.comであれば”.com”のドメインはどこのDNSへ問い合わせればいいのかをルートDNSが教えてくれます。
次にリゾルバは.comを管理するDNSへ問い合わせを行います。ここで、”example.com”とIPアドレスを紐づけているDNSのIPアドレスを教えてくれます。リゾルバはさらにそのDNSサーバーへ問い合わせを行うことで、初めてexample.comのipアドレスを入手することができる仕組みになっています。

このexample.comのIPアドレスを持っているサーバーのことを”権威DNS”と呼びます。
権威DNSでは、具体的に下記のような情報を持っています。

・管理しているドメインのIPアドレス・ホスト名
・Aレコード(ドメインに対応するIPアドレス)
・MXレコード(ドメインに対してメールを送付された際に担当するメールサーバーのホスト名)
・TXTレコード など

これらの情報をひっくるめてレコードと呼びます。
先程のリゾルバにキャッシュ機能がある場合、これらの情報を権威DNSから取得すると、自身の対応表にこの情報をコピーし、再度自身に対して同じドメインの問い合わせが来た場合、自身の対応表の情報を直に渡すことで、問い合わせの時間を短縮しています。
この仕組みをもつDNSを”キャッシュDNS”と呼びます。

例にしているドメインは違いますが、仕組みはこんな感じです。

引用元:cman

今回ご説明するTTLとは、キャッシュDNSが権威DNSからコピーした情報の”有効期限”です。この情報は権威DNSか各レコード情報と一緒に持っています。
有効期限が過ぎた情報は、キャッシュDNS内の対応表にあったとしても無視され、再度ルートDNSへの問い合わせが行われます。

いろいろと説明してしまいましたが、簡単にまとめると
・DNSには元のデータを持つ権威DNSと、データのコピーを持つキャッシュDNSがある。
・DNSがもつIPとドメインの対応情報(レコード)にはTTLという有効期限がある。
・キャッシュDNSは権威サーバーの値をコピーし、有効期限が切れるまでキャッシュDNS内の対応表に保持する。

となっています。
逆に言うと、自分の持っているDNSの情報を書き換えても、このTTLが過ぎるまでは古い情報がキャッシュDNSに保持されている可能性があるということ。

例えば自分のサイトを別のサーバーへ移動する場合を考えた時、IPアドレスをDNSに設定しなおすことになりますが、設定変更した時間から前に指定していたTTL時間が経過するまでは、古いサーバーにもアクセスが来る可能性を考慮しなければいけません。

もし頻繁にIPアドレスが変わる可能性があれば、権威DNSのTTL時間を短くしておくのがおすすめです。
ただし、TTLを短くすると権威DNSや上位のDNSに対してかかる負荷が大きくなるので、注意が必要です。まだ、この理由でTTLの変更を禁止しているホスティング業者もあります。

DNSの仕組みは一見複雑ですが、知っておくと自分のサイトの運営の際、役に立つこともあると思います。
頭の片隅にも入れていただければ幸いです。

  • この記事いいね! (0)
村上 著者:村上

【MySQL】既存のテーブルをコピーして新しいテーブルを作る方法

すぐ忘れるので備忘録として。
データベースを扱っていると、既にあるテーブルの構造をコピーして新しいテーブルを作りたいときがあるかと思います。
今回はその方法について。

なお、参考にさせていただいた記事はこちらから。

MySQLテーブルをそのままコピーする – Qiita
https://qiita.com/ibarakids/items/bad052c55cfe6d85903d

 

SQL文はこちら。

CREATE TABLE [新しいテーブル名] LIKE [コピー元のテーブル名];

この分を実行すると、LIKE の後ろで指定した、コピー元のテーブルの構造をコピーして、新しいテーブルを作ることができます。

なお、データまでは引き継がれないので、作成されたテーブルは空です。
そのため、データもコピーしたい場合は、テーブルをコピーして作成した後、下記のSQL文を実行してください。

INSERT INTO [新しいテーブル名] SELECT * FROM [コピー元のテーブル名];

これで、データのコピーが完了します。
INSERT文と SELECT文を一緒に使ったことがないので、この使い方は新鮮に感じますね。

 

以上、テーブルを別名で複製する方法でした。
使用頻度が低いのですぐ忘れる自分のためにまとめた記事ですが、同じことをやりたい方は参考にしていただければ。

  • この記事いいね! (0)
著者:ym

異なるメーカー&複数ルータ機種でDNS不正書き換え被害

ルータの DNS 設定が書き換えられる件、結構な被害へ広がっている様ですね。

異なるメーカー Logitec、Buffalo、NTT東西、異なる複数の機種でも症状が有るらしい。

しかもゼロデイ状態。まだ原因が突き止められていない様子。

 

DNS 設定が書き換えられ、偽装された Facebook サーバや、Google サーバへ接続してしまう症状。

ISP側で今回の不正サイトへのトラヒックを制御して防ぐとかしないとやばいような気もする。

結構怖い。

  • この記事いいね! (0)
村上 著者:村上

【Android】ビルド時の「Error:Execution failed for task ‘:processDebugGoogleServices’.」の対処法

Cordova アプリで、新しくプラグインを追加したところ、Androidでエラーが発生したので、その対処法について。
ちなみに、追加したプラグインは「cordova-plugin-admob-free」で、アプリ内に広告を入れるためです。
が、このプラグインを追加してビルドしたところ、エラーが発生しました。

 

遭遇したエラーの全文はこちら。

Error:Execution failed for task ‘:processDebugGoogleServices’.
> Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.

Google翻訳にかけてみたところ、どうやら processDebugGoogleServices の実行に失敗しているようです。
失敗する要因は、バージョンの競合とのこと。
そのため、対処法としては、build.gradle に記述されている com.google.android.gms のバージョンを 9.0.0 に更新するのが有効なようです。

具体的には下記のとおりです。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // SUB-PROJECT DEPENDENCIES START
    compile project(":CordovaLib")
    compile "com.google.android.gms:play-services-base:9.0.0"
    compile "com.google.android.gms:play-services-ads:9.0.0"
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile "com.facebook.android:facebook-android-sdk:4.+"
    compile "com.google.firebase:firebase-core:9.0.0"
    compile "com.google.firebase:firebase-messaging:9.0.2"
    // SUB-PROJECT DEPENDENCIES END
}

上記コードの、5、6行目の com.google.android.gms:play-services-basecom.google.android.gms:play-services-ads のバージョンを 9.0.0 に変更しました。
が、これだけだとまだエラーが発生するので、9、10行目の com.google.firebase:firebase-corecom.google.firebase:firebase-messaging のバージョンも 9.0.0 に変更します。

なお、10行目の com.google.firebase:firebase-messaging だけバージョンが 9.0.2 なのは、別のエラーが発生したためです。
ついでに、7行目の com.android.support は com.android.support:support-v4:24.1.1+” から com.android.support:appcompat-v7:23.2.1 変更しており、これも別のエラーの対策のためです。

上記のコードのように build.gradle を修正したところ、問題なく実行することができました。

 

以上、ビルドエラーの対処法でした!
ちなみに、2つ目のエラーの方が、ビルドが通ってしまう分、大変でした…。
ビルドは通るのに、いざ実機で実行するとアプリが落ちるという…。
何とか解決できたので良かったです。
Codova はやっぱり難しい!

  • この記事いいね! (0)
takahashi 著者:takahashi

長野 諏訪市のフリーWi-Fi”すわなび”


先日、長野に旅行に行ってきました。
一泊二日の旅行だったのですが、諏訪湖周辺をめぐっていて気づいたことが。
引用元:諏訪市
いたるところの施設や、諏訪湖周辺で、”すわなびSPOT”というフリーWi-Fiが飛んでいました。
このフリーWi-Fiは誰でも無料で利用ができる点に加え、接続直後の初回の画面で、諏訪市周辺の観光スポットを案内するページ、”諏訪をあいく“が表示されるとのこと。
引用元:諏訪市

また、諏訪市は観光案内アプリも公開しています。

すわなび – App Store

すわなび – Play Store

と、観光案内にかなり力が入っています。
観光地の多い諏訪市ならではの工夫ですね。

自分も今回初めて諏訪市へ行ったのですが、”景色がきれいな場所がある”という情報しか知らなくて、それ以外の見どころがわかりやすくまとめられている場所があるのはとても助かりました。

諏訪市、本当にいいところなので是非行ってみてください!

ちなみに、宣伝になりますが、浜松市も”HAMAMATSU Free Wi-Fi”という、フリーWi-Fiを市内に多数展開しています。

HAMAMATSU FREE Wi-Fi

こちらも登録不要でどなたでも無料で使えますので、浜松市にいらっしゃった方、浜松市にお住まいの方は是非じゃんじゃん使ってみてください!

  • この記事いいね! (0)
村上 著者:村上

【Cordova】アプリのアイコンの設定方法とAndroidのアイコンサイズまとめ

マージに失敗したのか、Cordovaアプリのアイコンの設定をしている記述が掻き消えたので、備忘録を兼ねてまとめ。
これでもしもう一度コードが吹っ飛んでも大丈夫!

 

アプリのアイコンは config.xml で指定します。
まず、iOSアプリのアイコンは、下記のように記述します。

<platform name="ios">
    <icon height="180" src="res/icon/ios/icon-60@3x.png" width="180" />
    <icon height="60" src="res/icon/ios/icon-60.png" width="60" />
    <icon height="120" src="res/icon/ios/icon-60@2x.png" width="120" />
    <icon height="76" src="res/icon/ios/icon-76.png" width="76" />
    <icon height="152" src="res/icon/ios/icon-76@2x.png" width="152" />
    <icon height="40" src="res/icon/ios/icon-40.png" width="40" />
    <icon height="80" src="res/icon/ios/icon-40@2x.png" width="80" />
    <icon height="57" src="res/icon/ios/icon.png" width="57" />
    <icon height="114" src="res/icon/ios/icon@2x.png" width="114" />
    <icon height="72" src="res/icon/ios/icon-72.png" width="72" />
    <icon height="144" src="res/icon/ios/icon-72@2x.png" width="144" />
    <icon height="29" src="res/icon/ios/icon-small.png" width="29" />
    <icon height="58" src="res/icon/ios/icon-small@2x.png" width="58" />
    <icon height="50" src="res/icon/ios/icon-50.png" width="50" />
    <icon height="100" src="res/icon/ios/icon-50@2x.png" width="100" />
    <icon height="1024" src="res/icon/ios/icon-1024.png" width="1024" />
</platform>

Androidのアイコンの設定はこちら。

<platform name="android">
    <icon density="ldpi" src="res/icon/android/icon-ldpi.png" />
    <icon density="mdpi" src="res/icon/android/icon-mdpi.png" />
    <icon density="hdpi" src="res/icon/android/icon-hdpi.png" />
    <icon density="xhdpi" src="res/icon/android/icon-xhdpi.png" />
    <icon density="xxhdpi" src="res/icon/android/icon-xxhdpi.png" />
</platform>

が、Androidのアイコンサイズがいまいちわからないので簡単にまとめ。
このアイコンサイズについて、毎回こういったアイコンを準備するたびに調べているので、今回まとめました。

解像度 アイコンサイズ
ldpi 36×36px
mdpi 48×48px
hdpi 72×72px
xhdpi 96×96px
xxhdpi 144×144px
xxxhdpi 192×192px

あとは、Android・iOS 共に、上の表などを参考に、それぞれの画像を用意すれば設定完了です。
(上記コードだと、res/icon ディレクトリにそれぞれ android、ios フォルダを用意し、アイコンを保存しています)
いつも通りにビルドした後、実機で実行すればアイコンが設定されています。

 

以上、Cordovaアプリ開発時に、アプリアイコンを設定する方法でした。

  • この記事いいね! (0)
takahashi 著者:takahashi

Appleが異例の発表会で新型iPadを発表!話題の”あの”アクセサリにも対応!!

昨日の夜、Appleは定例のWWDCとは別の、異例の発表会(Let’s take a field trip.)を行いました。
その中で発表されたのはなんと新型のiPad(第6世代)!

そしてついにiPad Pro以外では初となる、ApplePencil対応となりました!!

Apple Pencil は筆圧検知に対応しており、精度も非常に高いと話題になりました。(一部の絵描きの方の間では、いままでデファクトスタンダードだったWacom社製タブレットよりも性能がいいと言っている方もでてきています。)

Apple Pencilの唯一の難点は、iPadの最上位モデル”iPad Pro”にしか対応していなくて、Apple Pencil(10,800円(税抜き))も合わせるとかなり高額になってしまっていたのですが、今回発表されたiPadは Wi-Fi 32GBモデルで37,800円(税別)という、比較的お手頃な価格になっていて、手が届きやすくなった印象です。

ApplePencilを使うためにiPad Proを買おうかと悩んでいた自分にはかなりの朗報でした。
これは欲しい…

今回の発表会で、ハードについてはメインはiPadのみだったようです。イベント内では他にもアプリケーションのアップデートの発表なども行われたようです。
発表の全体的な内容については、GIZMODOさんの記事でまとめられています。

【Apple Pencil対応、299ドルのiPadが登場!】Appleの発表イベント「Let’s take a field trip.」のキーノート実況 – GIZMODO

なお、かねてより噂されていた廉価版macbook Airと、新型iPhone SEについては残念ながら発表はなかったようです。
次回の発表会に期待ですね。

  • この記事いいね! (0)
村上 著者:村上

【副作用】電子音が低く聞こえるときは咳止め薬「フラベリック錠」を疑え

今回はプログラミングに関する記事ではありません。悪しからず。

先々週くらいから体調を崩しており、内科を受診したのですが、その時に処方された薬について注意喚起です。
咳止めとして「フラベリック錠」という薬を処方されたのですが、こちら副作用として音が半音くらい低く聞こえることがあるそうです。
ちなみに、前回もこのフラベリック錠服用後に音が狂ったし、同じ薬を服用した同僚や上司も同じ症状を訴えていたので、多分これが原因で間違いないはず。

参考にしたサイトはこちら。

薬の副作用で音が低く聞こえる!異常が起きるテグレトールなどの薬|健康生活
http://health-to-you.jp/sideeffect/otofukusayo0331/

こちらのサイトによると、こういった音が低く聞こえるという現象には仮説がいくつかあるらしく、下記2点のような仮説が立てられるのだとか。

  • 記憶を司る働きも持っている大脳辺縁系にお薬が働きかけて、入ってきた情報の処理に失調を起こしているのではないか
  • 耳の機能として内耳にある蝸牛のコルチ器官と言うところに生えている外有毛細胞(音の高さを感知するための増幅を担当する)が薬の影響を受けているのではないか

なお、この音が低く聞こえる現象ですが、薬の副作用によるもののため、服用をやめれば徐々に回復していきます。
私の場合、3日も経てばほぼ元通りでしたね。
まだ若干違和感は残っておりますが…電話の音は元に戻りました。

別に音楽関係の職業ではないため大きな影響はないかと思っていましたが、電話の音が狂うので、つい反応が遅れてしまいます。
それ以外では特に問題はないかな?

面白かったのが、音がおかしく聞こえるのは、電話の音や、給湯器の音などの電子音のみだったこと。
人の声はいたって普通なんですよね。
恐らく、電子音は一定のため音を覚えやすく、そこから音が外れたときの差が分かりやすいためかなと思われます。

 

ということで、薬の副作用には皆様注意してください。

なお、症状は違いますが、気管支拡張剤にも副作用があるので、こちらも覚えておくといいかも。
薬の名前は忘れてしまいましたが、手の震えが起こる場合があるそうです。

辛い症状を和らげてくれるお薬ですが、こういった副作用があることもお忘れなく。
何か違和感を感じたら、すぐに服用をやめるか、お医者様にご相談するようにしてください。

  • この記事いいね! (0)
著者:aoki

Google検索がバグる!?「金曜日19:00」

先日金曜日の夜に空いている飲食店を探していた時の事です。
時間は21:30頃「浜松市 夜」という単語で検索したのですが衝撃の検索結果が表示されました。

静岡県浜松市の金曜日 19:00 です

え、金曜日は合ってますが今21:30ですし・・・19時じゃないですし・・・
そもそもなぜこの検索結果に・・・

試しに別の日で検索したところこの検索結果は表示されず、普通に飲食店など店舗の結果が表示されました。
何だったんだろうか・・・知っている方がおりましたら教えてください。

  • この記事いいね! (0)
takahashi 著者:takahashi

Mac版Twitterクライアント、突然の終了

先日、SNSサ―ビス”Twitter”を運営するTwiitter社がMac版公式クライアントのサポートを突然終了するという通知を行いました。

Mac版公式Twitterアプリ、突然の提供終了 – ITMedia News

記事にもある通り、現在AppStoreからも削除されています。
更に、自分の環境では、インストール済みのMac版Twitterクライアントもエラーが表示されTwitterに接続できなくなっていました。
恐らく、コンシューマーキーも削除されたものと思われます。

Mac版Twitterクライアントは、Twitterが2010年に買収した米AtebitsのMacおよびiPhone向けTwitterクライアント「Tweetie」ベースのアプリ(ITMedia News)で、ユーザーストリーミングに対応した数少ない公式アプリでした。
使い勝手も非常によく、愛用していたのですが、終了してしまったのは残念です。

ただ、UserStreamAPI自体が今年の6月末で終了予定であったり、AppleがMac版アプリとiOS版アプリの統一を行う予定であったり、という状況もあり、その準備のために消した可能性も考えられるようです。

とはいえ、サポート終了後にいきなりコンシューマーキーも削除してしまうという対応はちょっと乱暴にも思えますし、ユーザーの不信感を煽っていないか気になるところです。
Twitterは同社の身売りに失敗してから、かなりいろいろな動きをしていてそのたびに騒ぎになりましたが、どれをとっても実際の思惑はどこにあるのか、以前として不透明な状況です。

  • この記事いいね! (0)