著者アーカイブ takahashi

takahashi 著者:takahashi

PostgreSQLで大文字のカラム名を指定する方法

一番最初に触ったDBがMySQLだったのですが、それに慣れてしまったがゆえに、他のDBエンジンを触った時にその作法の違いに苦労することがあります。

今回、PostgreSQLを使用したシステムの補修を行ったのですが、例えばSelect文を書く時、MySQLを触っていた時の癖で

SELECT * FROM table WHERE column="value";

のように書いていたのですが、PostgreSQLだとエラーになってしまいます。
というのも、PostgreSQLでは “” は文字列を意味するのではなく、カラム名などを大文字を表すときに使うためです。

では文字列を囲うようにするにはどうすればいいかというと

SELECT * FROM table WHERE column='value';

とシングルコートを用いればいいようです。

基本的にSQLを使ったDBでは、SQL文はほぼ同様に使えるのですが、細かい”作法”が結構異なっているものも多いので注意が必要です。

takahashi 著者:takahashi

アプリ開発がもっと楽になる!?楽天がサービスを開始した”Rakuten Rapid API”とは

楽天が今年の7月11日から新しいサービスを開始しました

Rakuten RapidAPI
Rakuten RapidAPIは約2年前にサービスインしたという、サンフランシスコのRapidAPIが運営するRapidAPIの日本語版としてリリースされました。
RapidAPIはAPI市場に”マーケットプレイス”という概念を導入し、様々な企業や団体のサービスが提供するAPI群を使い方を含めて集約し、API利用料の支払い代行なども提供しています。
所謂、アプリストアのAPI版といった感覚です。
アプリを探す感覚で、あらゆるAPIを横断検索することができます。

例えばMapのAPIを使いたいと思った時は…

Mapの機能を提供するAPIを一括で見ることができます。

天気を提供するAPIも

横断検索できます。


主要企業のAPIもバッチリそろっています。


項目をクリックすると詳細情報が表示されますが、その中にはどういったAPIが使えるのかも詳細に記述されている上、APIの動作をテストすることもできるようになっています。

いままで主要な企業のAPIしかあまり目立たず、それ以外のAPIの存在はそこそこ調べていかないと知ることができませんでした。
また、そのAPIではどんなことができるのか、料金はいくらなのか、といった情報も各APIのドキュメントやコマーシャルサイトを調べていかないといけないため、開発者側としてもかなり負担となっていました。

RapidAPIは同じ機能を提供する複数のサービスのAPIを同じサービス上で簡単に比較できるので、これから作ろうとするサービスに最も最適なAPIを探すのがとても簡単になります。
また、APIを公開する場所ができたことで、今後新しいAPIの提供が加速していくことも考えられますね。

Webサービスの構築とAPIは今後どんどん切っても切り離せない関係になっていくかと思います。
これからWebサービスの構築を計画している皆さんは是非確認してみてはいかがでしょうか。

takahashi 著者:takahashi

Xperiaのカメラの動作が”クソ重い!!!”と感じたときの対処法

XperiaはAndroid端末の中でも全体的に1位、2位を争うほどの高性能なものが多い機種です。
Oneソニーをうたっているだけあって、カメラもかなり画素数の高い機種が多く、綺麗に写真を撮ることができます。

ところが、このカメラ、使っているとどんどん重くなっていき、自分の持っているXperiaでは最終的に起動まで10秒弱かかる状態になってしまいました。
しかも、起動後、シャッターを押した後も再び写真が撮影できるようになるまで数秒間固まってしまいます。

あまりの遅さに、同じくカメラに定評のあるiPhoneに浮気しかけていたところ、ネット上でこちらの情報を発見。

Xperiaの発熱・動作が重い等を万能解決?Photo Analyzer Serviceを無効化する方法 – すまおじ.com

記事によると、”Photo Analyzer Service” なるシステムアプリが裏で頻繁に動作しており、これが原因で端末の動作全体が重くなってしまうと事。
幸いにも自分のXperiaに入っているAndroid 6にはプリインストールアプリも無効化できる機能があるため、システムアプリであってもこの”無効化”で対抗することができます。

ということで早速試してみましょう。

まず、設定から”アプリ”を開きます。

通常だとシステムアプリは隠されてしまっています。
表示させるために、右上のメニューアイコンから”システムを表示”を選択。

表示されたアプリ一覧から”Photo Analyzer”を探し出します。

見つけだしたら”無効にする”をタップ。

ボタンが”有効にする”に変わったら設定完了です。

なんとこの設定をした後、端末の動作が劇的に軽くなり、以前では数時間Androidを起動しっぱなしにしておくとカメラが重くなってしまっていましたが、今では丸1日を過ぎても買った直後と同様にすっとカメラが起動するようになりました。

ただ、Photo Analyzerは写真の顔認識を行うなどの機能を持っているサービスとのことで、Photo Analyzerの機能を必要とするXperiaの機能やアプリを使用する方は無効化してしまうと、問題が出るかもしれません。
しばらく様子を見つつ、普段の使い方で不具合が出ないかを確認するようにしてください。

Xperiaの折角の高性能カメラが、動作が重すぎて最近気軽に起動できなくなってしまった…という方は、是非一度試してみてはいかがでしょうか。

takahashi 著者:takahashi

有線LANはあるけど無線LANがない…! そんな時に役に立つWIndowsで逆テザリング(Hotspot化)する方法

最近はビジネスホテルなどでも無線LANが標準で提供されるところも増えてきました。
しかし一部のホテルや施設などでは未だに有線LANだけの提供だけ、というところがある場合もありますし、どこかの場面で急に無線LANが必要になる場合もあるかもしれません。

特に、スマートフォンなタブレットなどの端末は有線LAN接続が困難な機種が多いので、いざというときに有線LANしか使えない環境だと不安です。

そんな状況下のとき、もし無線・有線LAN搭載のWindows 10 PC一台さえあれば簡単に解決することができます。

通知エリアの無線LANアイコンを押すと、

”モバイルホットスポット”というアイコンがあるのがわかるかるかと思います。
実はこれが今回の目的の機能になります。

モバイルホットスポットって何だろう? – テザリング機能の使い方 – マイナビニュース パソコン

モバイル回線をスマホなどを通じてPCに提供することを”テザリング”と呼ぶのに対し、ホットスポット機能はPCが接続するネットワークをスマホなどのWi-Fi端末へ流す使われ方が多い為、しばしば”逆テザリング”と呼ばれます。(やってることはテザリングとほぼ変わりません。)

実は他のOS(macOS、Linux)でも”逆テザリング”する機能はありますが、Windowsには標準で、他OSにはない仕組みを持っています。
それは1つのWi-Fiアダプタを仮想的に分割し、Wi-FiからWi-Fiへネットワークを中継することができる機能です。

基本的に他OSでは、別のネットワークアダプタのネットワークを”逆テザリング”することしかできません。
つまり、共有する元のネットワークにつながるネットワークアダプタとWi-Fiの電波を端末に発信するネットワークアダプタはハード的に別でないといけません。
一般的にノートPCではWi-Fiアダプタと有線LANポートをひとつづつ備えている構成が多いかと思いますので、この場合は有線LANでつないでいるネットワークをWi-Fiから飛ばす、というような使い方に限られます。

しかしWindowsでは、Wi-Fiアダプタでネットワークにつないだまま、同じWi-Fiアダプタから他の端末に対してWi-Fiのアクセスポイントを提供することができます。
この機能はVirtual Wi-Fiと呼ばれています。

また、Windows 10ではBluetoothを搭載していればBluetoothのPANプロファイルを使って逆テザリングすることもできます。

 

Bluetoothを除く上記の機能は、正式なGUIが実装されたのはWindows 10からですが、機能自体はWindows 7から利用することができます。

Windows 7をお使いで、GUIでホットスポットのON/OFFを行いたいのであれば、

Virtual Router

を使うと実現できます。

いざというときにWi-Fiルーターが必要になった際に役に立ちそうですね。

takahashi 著者:takahashi

jQueryのいろいろな指定

jQueryを使用するいい点として、DOM(HTML)の操作が簡単になるという利点があります。

jQueryで各要素に対して処理を書く際、どの要素に対して操作を有効にするのか、という指定は”セレクタ”を用いて行います。

//DOMのidで指定
$("#id").処理;

とか、

//DOMのクラスで指定
$(".class").処理;

のようにクラス、idで指定する方法や

$('table').処理;

のようにHTMLの要素で指定したりできます。
さて、次のようなHTMLがあるとします。

<html>
  <head><!-- hogehoge... --></head>
  <body>
    <table>
      <tr>
        <th>hoge1</th>
        <th>hoge2</th>
      </tr>
      <tr>
        <td id="test1">fuga1</td>
        <td id="test2">fuga2</td>
      </tr>
      <tr>
        <td id="test3"><a href="#">fuga3</a></td>
        <td id="test4">fuga4</td>
      </tr>   
    </table>
  </body>
</html>

少々雑な例ですが、こういったHTMLのページがあるとして、例えばtdのidがtest1、test2のものが入っているtrに対してのみ何か処理をしたい、という場合は、trにはidやclassが降られていないので、これらでは指定できませんし、tr要素を指定してしまうと無関係のidがtest3、test4であるtdが格納されているtrまで影響してしまいます。

生のHTMLであれば単純にtrにidやclassを指定すれば済むのですが、例えばこれがプログラムで生成しているDOM、特にライブラリやデザインフレームワークなどが生成しているような場合はそういった変更ができない場合があります。

こういった時に、jQueryでは”~の要素の親”や”~の要素の子”、”~の要素の次の要素”のような指定ができるセレクタが用意されています。

例えば今回の場合であれは、

$("#test1").parent().処理;

とすることで、idが”test1″の要素の親の要素、つまり目的のtr要素を指定することができます。
逆に子要素を指定する場合

$("#test3").children().処理;

などとすると指定できます。

他にもjQueryにはいろいろな要素の指定ができます。
こちらのサイトに詳しく書いている方がいましたので是非参考にしてみてください。

jQueryのセレクタメモ – Qiita

takahashi 著者:takahashi

Mastodonのサードパーティクライアント”Whalebird”が使いやすい!

Mastodonへの人口の流入に伴い、Mastodon向けクライアントの開発も少しづつ盛り上がりつつあるようです。

そんな中、とても使いやすいMastodonクライアントを発見したのでご紹介したいと思います。

Whalebird というアプリです。

特徴は、Slack風のUIを供えている点。
Mastodonの基本的な機能はしっかり押さえている一方で、シンプルでわかりやすいUIが特徴になっています。
また、Windows macOS Linux すべてに対応しており、OSが異なっても同じクライアントが使用できるのもうれしい特徴です。

早速ログインしてみます。


最初の画面では自分が利用しているMastodonインスタンスのドメイン名を入力します。


インスタンスの存在が確認できると、ボタンが”Login”に変わるのでクリック


インスタンスのページが開くので、いつも通りにログインします。


アプリと連携させるために”承認”をクリックします。


トークンが発行されるので、内容をコピーしてクライアントに貼り付けます。


Submitをクリックするとクライアントからログインができます。

こちらがWhalebirdのタイムライン画面。
アカウント切り替えやTLの切り替えのUIが確かにSlackに似ていますね。

ちなみに、初期状態では英語が設定されていますが、設定から日本語表示に切り替えることもできます。

プルダウンメニューから
Whalebird -> Preferences
を選択します。


設定画面が開くのでLanguageをクリック。


プルダウンメニューから”日本語”をクリックします。


アプリの再起動を求められるので”Restart Now”をクリックします。
Whalebirdが自動的に再起動し、UIが日本語に切り替わります。

一つのインスタンスだけであれば標準のWebのUIだけでも高機能なのですが、複数のインスタンスにアカウントを作成したりすると、複数アカウントをすぐに切り替えれたり、同時に表示できたりできるサードパーティクライアントがとても便利だったりします。

Mastodonをお使いの皆さんは是非自分にあったクライアントを探してみてはいかがでしょうか。

takahashi 著者:takahashi

サイトへのDDoS攻撃をモニターし、通知、表示してくれるサービス”DDoSMon”

先日、ふとMastodonのTLを見ていたらこんな投稿が…


日本最大級のMastodonインスタンスであるmstdn.jpに対して、DDoS攻撃が行われた旨を管理人のぬるかる氏が投稿していました。

DDoS攻撃はとても単純ながら厄介な攻撃で、一つの発信元(IPアドレス)から大量の通信を行うDoS攻撃とは違い、まったくバラバラな複数の発信元(IPアドレス)から大量の通信を行うため、IPアドレス制限などの単純な防御策では防ぐことができず、通常の通信と見分けがつきづらいという特徴があります。

このmstdn.jpのDDoS攻撃の話題が上がった際にこんなトゥート(ツイート)が回ってきました。

DDoSMon というWebサービスを利用すると、DDoS攻撃が発生した際に通知を受け取ったり、過去に攻撃を受けた際の履歴をを表示したりできるようです。

試しにmstdn.jpのDDoS状況を見てみました。

このような形で直近の攻撃や攻撃の種類など、DDoSを受けたときの細かい情報を見ることができます。

仕組みは不明ですが、有名なサイトであればデータはありそうですので、目的のサイトにアクセスできなくなった時の状況確認に利用できそうです。

takahashi 著者:takahashi

久々にMastodonインスタンスを更新したらデータが吹っ飛んだ件。

先日の一件もあってか、最近になって再び波が来ているMastodonですが、自分も以前動かしていてそのまま放置状態になっていたMastodonインスタンスを久々に立ち上げ直してみました。

…といってもいつの間にかエラーで止まってしまっていて、500エラーを吐く始末。
思い切って合わせてアップグレードも行ってみました。

自分のインスタンスはdocker上に置いたまま動かしているので、mastodon本体があるディレクトリからroot権限で下記のコマンドを実行してアップグレード。

cd /web/mastodon
chown -R 991.991 public/  #いつの間にかパーミッションがない旨のエラーが発生するようになっていたため追加
docker-compose down 
docker-compose build
docker-compose run --rm web rails db:migrate 
docker-compose run --rm web rails assets:precompile 
docker-compose up -d

ところがこの操作がまずかったのか…

ログインができない…
何度試してもログインできないので、やむを得ず再登録し、ログイン。

管理者権限を与えてユーザー一覧を見てみましたが…

今回作り直したアカウント以外すべて吹っ飛んでいました。
自分のアカウントだけでなく、以前フォローしていたはずの他インスタンスのユーザーのリストもすべて吹っ飛んでいました。
どうやらDocker上のdbコンテナ(か、あるいはその中のデータすべて)が丸々吹っ飛んでしまったようです。
何たる悲劇…

同じコマンドで以前アップグレードした時はすべてデータが保持されていたのですが、仕様が変わったのでしょうか。
幸いにもおひとり様インスタンスだったので事なきを得ましたが、なかなかヒヤリとしました。

会社で管理しているインスタンスもバージョンがなかなかに古いので、そろそろバージョンアップすべきか、とは思っている(今のところ、バージョンアップしなくても通信自体は問題ない)のですが、これはちょっと気を付けないと怖いですね…

ちなみに、以前未実装となっていて物議をかもしたユーザー削除機能ですが…

新しいバージョン(2.3.2)では機能としてはちゃんと実装されていました。(利用可能かどうかはインスタンス管理者のポリシーによります。)


以前からPawoo.netが先行して実装していた(気がする)インスタンス内のトゥートが登録画面から見れる機能も、公式のソースで実装されていました。
この機能はとても欲しかったので、公式で実装されたのは非常にありがたいです。

他にも、以前はソースレベルでしか書き換えができなかったロゴ画像やトップバナー(ヒーローイメージ)も、管理画面から書き換えが可能になりました。
以前はバージョンアップするたびに書き換える必要があったのでかなりキツイなぁと思っていたのでとてもありがたいです。

今回は前回よりも波が大きいようで、有名どころのインスタンスでは、管理者から目に見えて分かるレベルでサーバー負荷が上がっているようで、かなり人が集まってきているようです。

折角の機会ですし、どこかのインスタンスに参加したり、立ち上げたり、いろんなインスタンスのトゥートを見て回ってみるのも面白いかもしれませんね。

takahashi 著者:takahashi

Twitterの”流れるタイムライン”を実現してきた”UserStreamsAPI”がついに廃止へ。断続的停止から段階的に。

以前からTwitterユーザの間で物議を醸しだしていたTwitterのUserStreamsAPI廃止決定ですが、とうとう本日から実行されるようです。

TwitterのUser Streams APIがとうとう廃止へ ~断続的な停止を挟みながら23日に完全終了 – 窓の社

同社によると、“User Streams API”は8月16日にいきなりシャットダウンされるわけではない。断続的にサービスを中断させながら(flickering)、開発者と利用者に廃止を通知するという。

8月16日午後4時(協定世界時、日本時間8月17日午前1時)より、6時間ごとに1時間、“User Streams”や“Site Streams”が停止される(1時間オフ、5時間オン)
8月20日午前0時(協定世界時、日本時間8月20日午前9時)より、6時間ごとに2時間停止(2時間オフ、4時間オン)
8月22日午前0時(協定世界時、日本時間8月22日午前9時)より、6時間ごとに3時間停止(3時間オフ、3時間オン)
8月23日午後4時(協定世界時、日本時間8月24日午前1時)に、APIが完全にシャットダウンされる

現状のAPIでは、サードパーティクライアントは15分に15回までしかAPIをコールできない仕様となっており、UserStreamsAPIの廃止は実質的な”サードバーティ―クライアント潰し”であったために、クライアント開発者による抗議の声も上がっていました。

Twitter、サードパーティーアプリを機能不全にするAPI変更を延期 – TechCrunch

強い抗議を受けて、一旦は廃止の延期が決定しましたが、Twitter側はその2か月後にStreansAPIを廃止することを再び決定。反対を押し切る形で決行されるに至りました。
これを受けて、Twitter上ではオープンソースのミニブログシステムであるMastodonへの移行を考えるユーザーが出始めているようです。
(Mastodonでもサードパーティクライアントが情報を取得できるAPIが公開されており、Webからのアクセスでもタイムラインをストリーミングさせることができます。)

Mastodonへ移行するのか、それともTwitterを引き続き利用し続けるのか、ユーザーはしばらく悩まされることになりそうです。

takahashi 著者:takahashi

Windows10ではWi-Fiの優先度設定が削除されていた… GUIから再び設定できるようにする方法

現在はWindows 10に乗り換えていますが、以前はWindows 7を使っていました。
Windows 7の時は、記憶済みのWi-Fiアクセスポイントが電波が届く範囲で同時に複数あった場合、どのWi-Fiに優先して接続するかを設定することができました。

接続先優先順位変更方法(Windows 7の場合) – Y!Mobile

ところがWindows 10では、優先度を確認することはできますが、優先度を変更する機能は何故か削除されてしまいました。

優先度を変更できないと結構いろいろな場面で困ったことになります。
でも標準ではWindows 10ではコマンドラインによる設定方法しかなく、ちょっと面倒なうえ、頻繁に変更する可能性があるので正直ちょっとやりたくない。
なんとかGUIで変更する方法はないだろうか…と探していたところ、見つかりました…!

W10:ネットワークと共有センターからワイヤレスネットワークの管理機能が削除されていた – Scrap 2nd.

Wifinianというアプリを使うと、GUIから設定が可能らしいとのこと!!

Wifinian – Microsoft Store

しかもWindows 10 Anniversary Update以降であればMSストアからアプリとしてダウンロード可能です!
超ありがたい><

ということで早速インストール!

起動すると、タスクバーに扇型が3つ並んだようなアイコンが常駐し、クリックすると現在登録済みのアクセスポイント一覧が表示され、それぞれのアクセスポイントの状態などが表示されます。

右上の”Reorder”ボタンをクリックすると”Up””Down”ボタンが出現し、クリックすることで優先順位を変更することができます!
ちなみに、自分の環境で試したところ、ちゃんと優先順位が変更されていました!

WindowsはGUIで設定変更を行うのがメインな分、削除されてしまった時のダメージもなかなか痛いです(汗)
機能削除する際は慎重に行ってほしいなぁと感じた次第です。