node.jsでuser agentからできるだけ詳しい情報を得る

スポンサードリンク

useragentからできるだけ多くの情報を得たくなる時がありますよね・・・
WindowsのバージョンとかLinuxのディストリビューションとかAndroidの型番とかレンダリングエンジンとかCPUのアーキテクチャとか・・・

そこでnode.jsで使えるuseragentのパーサーを探すとhttps://github.com/faisalman/ua-parser-jsがありました!

かなりいろんなOSやデバイスやブラウザに対応してて最強感あります。
日本のガラケーとかsleipnirのような日本のブラウザに対応してないのは・・・しかたないですね

npm install ua-parser-jsで入ります。

これでこんな感じに出力されます。

すごく便利ですね!おそらくモバイル系デバイスだと思いますがメーカーまで出てくるのはすごい!

おそらくUA関係で調べたいことだいたい出てくると思います。

.getResult()関数以外にも.getOS()や.getBrowser()などの関数もあります。

例えば.getOS()すると{name:’名前’,version:’バージョン’}とgetResult()の一部分が出てきます。

続きを読む

スポンサードリンク

node.jsでIPアドレスが範囲に入ってるか等

チャットや掲示板などを運営していて荒らしやスパムを防ぐためにIPを範囲で規制したくなることがありますよね・・・
123.223.0.0/16からの投稿を規制したいとか

そこでnode.jsでIPアドレスが範囲に入っているかチェックする方法を調べると、range_checkというのが使えるようです。

npm install range_checkで入ります。

使い方

範囲に入っているか以外に正しいIPアドレスか、v4アドレスかv6アドレスかなども確かめられます。

IPv6にも普通に対応してるので安心して使えますね。

 

nginxのrewriteでOpenPNE3.8.10動かす

久しぶりにOpenPNEインストールしようと思ったら最近のOpenPNEは3.8からスマホ対応してきてるんですね・・・

それはともかくOpenPNEではApacheのrewriteを使っています。あの黒魔術とも言われるあれです。
しかし僕は数カ月前くらいにwebサーバーをnginxに移行させてしまっていたので困りました・・・

そこでOpenPNEの.htaccessのrewrite設定をnginx用のrewrite設定に移植しましてみましたが・・・3時間くらいかかった(´Д`)
日本語情報が意外となくて英語と格闘したり目的の情報にピタッとくる記事が見つからなかったり・・・ググり力身につけないと(^_^;)

ともかくもとのapacheのrewrite設定がこれ

でnginx用に作ってみたのがこれ

一応動きましたが・・・間違ってるかもしれないので間違ってたら教えてください。

RewriteBaseが/じゃない場合はlocation /と”${document_root}/index.html”あたりを書き換えたらいいかと

linuxとpidginでLINEする[naver LINE chat](追記あり)

追記:コメントいただきましたように公式でLinuxをサポートしたChrome版LINEがリリースされています!https://chrome.google.com/webstore/detail/line/menkifleemblimdogmoihpfopnplikdeChromeをお使いの方はこれを使うのが確実でしょう。pidginで使いたい方は以下を参照してください。

日本人のスマホユーザーの多くが使っているであろうお馴染みのチャットサービスのLINEですが、PC版には残念ながらLinux版がありません。ヽ(`Д´#)ノ ムキー!!
なのでLinuxでLINEをしようと思ったらWindows版をWineで動かすのが普通です。
しかし、最新バージョンではWineでは動かなくなってきているそうです。
一年くらい前までにはLINEのWeb版があってブラウザからできたんですがそれもとっくの昔に提供終了して・・・ヽ(`Д´#)ノ ムキー!!
誰かLINEのプロトコル解析してLinuxネイティブなクライアント作ってないかな・・・と思ったらありました!!!感謝!!!

https://github.com/mvirkkunen/purple-line/
こちらに移動しました→http://altrepo.eu/git/purple-line

pidginのプラグインです。(pidginはWinとLinuxや各種Unixで使えるインスタントメッセンジャー)

早速インストール

まず必要なライブラリーを揃えます。
必要なのはapache thrift(ライブラリー&コンパイラ)とlibpurpleです。boostも必要なようです。
Ubuntuではlibpurpleはapt-get install libpurple0 libpurple-dev libpurple-binで入れました。
この記事を書いた2014年3月ではthriftの方はUbuntuではaptで入れるとうまくいかなかったのでソースから入れました。(ソースからmakeするほうが望ましいようです。)c++向けのライブラリーがビルドされる必要があります。参考ページ(英語)(←古いページかもしれません。)
2015年6月でのarch linuxではpacman -S pidgin libpurple thrift boost で揃いました。(boostが入ってなかったので、thriftはpacmanから入れても大丈夫のようです。)

次にpurple-lineのコンパイルをします。
上記ページからgit cloneするなりして展開します。
git clone http://altrepo.eu/git/purple-line.git

次に展開したディレクトリーに移動してそのままmakeコマンドを叩けばいけるはず。(エラーが出たらその都度足りないものをインストールしていきます。)
無事コンパイルできたらsudo make installすればインストールされます。自分のホームディレクトリにインストールしたい場合は(sudoつけずに)make user-installすればホームディレクトリ下のプラグインのディレクトリーにコピーされます。(以前はmake installでホームディレクトリにインストールされましたが今は普通に(システム全体に)インストールされるようです。)
thriftのライブラリーを読み込んでくれないことがあるのでsudo ldconfigも忘れずに

使う

あとはpidginをたちあげたらアカウントを追加する画面にLINEの項目があるのでユーザー名とパスワードの欄にメールアドレスとパスワードを入力すれば使えます。初回ログインの時に認証番号が表示されますが、スマホのLINEにそれを入力したらログインできます。
まあまあ使えます。

これでLinuxユーザーの方もチャットサービスのほぼデファクトスタンダードに参加できずにハブられる心配もないですね!
公式にLInux対応しないかな・・・(‘A`)
追記:ネイティブアプリではないですが公式のChrome版LINEはLinuxで使えます!

GL07Sのroot化できました

長い間一部ではGL07Sのroot化が期待されていたようですが、今年の1月中旬頃にはrootは取れていてようです。中国のサイトにroot化用のファイルが出回っていました。
しかし半ばascend p2のroot化されたROMを突っ込んでいるのでおサイフケータイが使えなかったり、ファクトリーリセットするとWiFiテザリングやBluetoothなどが死んだり、ネットワークモードのLTEの選択ができなくなったりでちょっと手が出しづらい感じでした。

しかし、GL07S純正のROMが公開され、imgファイルに抽出してくれた人がいてくれて純正ROMにいつでも戻せるようになり、純正ROMが手に入るようになったからにはrootが取れたROMが出るのも時間の問題かと思えば昨日出ました!

root取ってる以外はまんま純正ROMなのでおサイフケータイもテザリングもbluetoothも生きていて、いつでももとに戻せますね。

ではroot化する方法です

とはいってもスクリプトを実行してROM焼きするだけなんですけどね(^_^;)

  1. まずファイル一式をダウンロードします。そして展開します。
    emobile-gl07s-root.zip 720MBほどあります。(torrentでダウンロードすると速いかも)すいません現在はtorrentのトラッカーが動いていません…
  2. GL07SをUSBデバッグを有効にしてPCにつなぎます。
  3. Windowsならroot.bat、LinuxとかMacならシェルからadbとfastbootコマンドが使える状態でsudo ./root.sh
  4. 指示に従って待てばOKです。途中砂嵐画面になりますが気にしないでください。

現在はmiuiやandroid4.2のカスタムROMもあります。ブートローダーもアンロックできます。TWRPも導入できます。emobile-gl07s-root.zipにある説明ファイルは長らく更新されていません。

最新の情報を確認したり、提供したり、相談するのに2chのroot化スレを訪れてみたらいいでしょう。

さくらVPSにGentooをインストールしました

本当に久々の投稿です。最近落ち着いてPC触る暇のないので

それはともかくこのブログを置いてるさくら共有サーバーとは別にDebianを入れたVPSがあるんですが、Debianのパッケージは古いのでnodejsとか使うのに不都合があるので他のディストリに乗り換えることにしました。

Ubuntuはパッケージは比較的新しいのですがそれでもちょっと古い気がしたのでGentooにしました。Debianの時も新しいバージョンを使うためにソースからインストールしまくったのでどうせならGnetooでいいかなと(各ソフトのバージョンもかなり新しいし)

で、Gentooをインストールするのですが、

まず作業用の踏み台?にするLinuxのライブCD(ここではとりあえずLubuntu)を用意しました。(gparted等を使用せずCUIコマンドでパーティションをいじるならGentooのインストール用LiveCDのほうがいいかも)

旧OSからデータを自分のPC等にバックアップして、ライブCDをたちあげてパーティションを作ってインストール作業をします。

さくらVPSにも自分の好きなISOからインストールできる機能がついてたので先ほどのLiveCDを入れて起動してgparted等でGentoo用のパーティションを用意して、あとはGentooハンドブックのディスクの準備から作業をしていけばOKです。(パーティションを作ったならマウントのところから)

GPTにする場合は一番先頭に1007Kibのパーティションを作るのを忘れないでください。パーティションタイプはgdiskの場合ef02

ここまでは別にわざわざ文章にするまでもないことです。

問題はカーネルのconfig

VPSの準仮想化で動かすのでVirtIO関係を有効にするの忘れないでください。

http://www.linux-kvm.org/page/VirtioのHow to use Virtioに何を有効にしたらよいか書いています。

grubの設定で、ブートパラメーターのroot=のところにはsda?(数字)ではなくvda?がきます。

Linux3.8.13でRTL2832U認識、ただしワンセグ視聴はできず[カーネル同梱ドライバー]

千円台ワンセグチューナーのDS-DT305BKを刺してみたかったので

RTL2832UのドライバーはカーネルVer3.0.0用(他のVerでも一部使える)のがgithubに公開されていますが

(上記とも3.8.13ではコンパイル通らない)

実はカーネル3.6以降でRTL2832のドライバーがカーネル本体に入ってるそうです。

実際探してみるとmenuconfigの

Device Drivers -> Multimedia support->Media USB Adapters->Support for various USB DVB devices v2->Realtek RTL28xxU DVB USB supportにありました

ちなみにGeneral setup->Prompt for development and/or incomplete code/drivers(開発中/不完全なコード/ドライバーを表示)は有効にしないと上のRTL2832の項目は出て来ません(そこで一時間くらいハマりました)

Realtek RTL28xxU DVB USB supportを有効にして再構築して再起動したら無事認識しました
dmesg:

[28757.208113] hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0002
[28757.208139] ehci-pci 0000:00:1d.7: GetStatus port:1 status 001803 0 ACK POWER sig=j CSC CONNECT
[28757.208156] hub 1-0:1.0: port 1, status 0501, change 0001, 480 Mb/s
[28757.312087] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x501
[28757.363301] ehci-pci 0000:00:1d.7: port 1 reset complete, port enabled
[28757.363314] ehci-pci 0000:00:1d.7: GetStatus port:1 status 001005 0 ACK POWER sig=se0 PE CONNECT
[28757.414086] usb 1-1: new high-speed USB device number 18 using ehci-pci
[28757.466301] ehci-pci 0000:00:1d.7: port 1 reset complete, port enabled
[28757.466314] ehci-pci 0000:00:1d.7: GetStatus port:1 status 001005 0 ACK POWER sig=se0 PE CONNECT
[28757.536829] usb 1-1: default language 0x0409
[28757.541827] usb 1-1: udev 18, busnum 1, minor = 17
[28757.541832] usb 1-1: New USB device found, idVendor=0bda, idProduct=2832
[28757.541835] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[28757.541839] usb 1-1: Product: RTL2832U
[28757.541842] usb 1-1: Manufacturer: Generic
[28757.541845] usb 1-1: SerialNumber: 77771111153705700
[28757.541995] usb 1-1: usb_probe_device
[28757.542000] usb 1-1: configuration #1 chosen from 1 choice
[28757.545453] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
[28757.547287] dvb_usb_rtl28xxu 1-1:1.0: usb_probe_interface
[28757.547305] dvb_usb_rtl28xxu 1-1:1.0: usb_probe_interface – got id
[28757.547368] usb 1-1: dvb_usb_v2: found a ‘Realtek RTL2832U reference design’ in warm state
[28757.585261] usb 1-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[28757.585291] DVB: registering new adapter (Realtek RTL2832U reference design)
[28757.588472] usb 1-1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))…
[28757.588614] fc0012: Fitipower FC0012 successfully attached.
[28757.595215] Registered IR keymap rc-empty
[28757.595306] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb1/1-1/rc/rc3/input14
[28757.595371] rc3: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb1/1-1/rc/rc3
[28757.595376] usb 1-1: dvb_usb_v2: schedule remote query interval to 400 msecs
[28757.606831] usb 1-1: dvb_usb_v2: ‘Realtek RTL2832U reference design’ successfully initialized and connected

/dev/dvb/adapter0/{demux0,dvr0,frontend0,net0}として出て来ました。


さてワンセグ見ようと思ってdvbstreamをインストールしてやってみましたが
“dvbstream -f <地デジの物理chの周波数(kHz)> 8192″とやれば標準出力にtsが出てくるはずですが・・・

$ dvbstream -f 515143 8192
dvbstream v0.7 – (C) Dave Chapman 2001-2004
Released under the GPL.
Latest version available from http://www.linuxstb.org/
Tuning to 515143 Hz
Using DVB card “Realtek RTL2832 (DVB-T)”, freq=515143
tuning DVB-T (in United Kingdom) to 515143000 Hz, Bandwidth: 8
Getting frontend status
Not able to lock to the signal on the given frequency
dvbstream will stop after -1 seconds (71582788 minutes)
Using 224.0.1.2:5004:2
version=2
Streaming 1 stream

となったまま何も起きないので^Cしました。

何でだ・・・・

Linuxでカメラ(sq905c)認識

GentooLinuxで昔買ったカメラの認識ができました!

USB Digital Still CameraとかNHJ, Ltd Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35などとして認識されているけどメーカーとかは不明の30万画素のカメラです。

Linuxではどのドライバーが対応するのか調べたところsq905cらしい

カーネル3.8.13だとmenuconfigの

Device Drivers -> Multimedia support->Media USB Adapters->GSPCA based webcamsの中にありました。

SQ Technologies SQ905C based USB Camera Driverを有効にして

ついでにSQ905も有効にしてみました(念の為)

そのあとカーネルを再構築して再起動してカメラをつなげると/dev/video0として無事認識

VLCでカメラの映像も見れました。

でもブラウザのFlash Playerではカメラ無しとなる・・・どうしてだろ・・・

 

お名前VPS借りました!&UnixBench(FreeBSD,CentOS,Debian)

お名前.comのKVMのVPS(1G)借りました!

さくらVPSと迷ったんですがこっちのほうが微妙に安くて性能いいみたいです。

またコントロールパネルの機能も充実してます。

僕はあまりGMOっていう企業は好きじゃないのですが実運用に問題なければ目をつぶりましょう

2Gプランの初期費用無料キャンペーンやってましたが現時点でエベ休とこのブログと諸々運用するだけなら2Gはオーバースペックかと思いましたので1Gプランにしました。(iGプラン:CPU仮想2コア,mem1GB,HDD100GB)

僕はサーバーはFreeBSD派でLinuxのなかならDebian派なので標準OS含めてFreeBSD(Virtioなし),Debian,CentOSのUnixBenchとりました

FreeBSDのVirtioありは確かめられませんでした。(知識不足かVirtioの導入ができなかった)

UnixbenchはCPUが一個の場合、二個の場合とコア数までそれぞれ測定してくれます。

FreeBSD(Virtioなし)

1CPU:1091.3 (なぜか2CPUでの結果は出ませんでした)

詳細:HTML

Debian

1CPU:1686.0,2CPU:3013.4

詳細:HTML

CentOS

1CPU:1523.7,2CPU:2600.8

詳細:HTML

 

結果として

Debian>CentOS>>FreeBSDとなりました。

FreeBSDのVirtio有効もやってみたかったのですがDebianには負けそうですね

個人的にはFreeBSDでサーバー立てたかったのですが

一番高いスコアが出たDebianで構築します。

普段デスクトップOSとしてUbuntu使っているのでDebianも多少慣れてます

 

 

ついでに、お名前レンタルサーバーのページはChromiumではバグるようです。

VPS借りる時と操作するときはFirefoxで作業しました。

あとお名前のコントロールパネルにコンソール画面がありますが

あれを必要以上に使うとFirefoxがメモリーとCPUを80~90%くらい食ってフリーズしかけます。

OSのインストール時など最低限に抑えて

通常の作業は普通にSSHからやったほうがいいです

遅れましたがブログ移転しました

ブログがFC2からここ(自宅サーバー&Wordpress)に移転しました

お名前.comが.netドメインをキャンペーンで安くしてたので自分用にnakayuki.netを取得しました

.netというメジャーなドメインなのにnakayukiというよくありそうな文字列が空いててびっくり

nakayukiがとられてたらnakayuki805.netにしようかと思ってましたがそれはさすがにダサいか・・・

やっぱりFC2の多少制限されたところよりもWordpressでのびのびとブログ書きたいですし

(とはいっても僕はブロガーでもなんでもなくただ単に気まぐれに書いてるだけですが)

 

ともかくこれからもよろしくおねがいしますm(_ _)m