Google Play services out of date. Requires xxxxxxx but found xxxxxxxx の解決策
Goolge Play Servicesのライブラリを利用したandroidのサンプルコードの実行時に
以下のエラーが発生して、アプリが起動できなかったので解決策を書いておきます.
「Google Play services out of date. Requires 7571000 but found 7329038」
【原因】
端末にインストールされている「Google Play 開発者サービス」というアプリの
バージョンがライブラリが必要とするバージョンより低いことが原因らしいです.
【解決策】
端末にインストールされている「Google Play 開発者サービス」アプリのバージョンを上げることで解決されます.
Google play store で検索しても出てこない?ので、URLを記載しておきます。
Eclipse4.2 error Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded
Eclipse4.2でandroidのアプリを実行しようとした際に、以下のエラーが発生しました.
「Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded」
【原因】
Eclipseのメモリ使用量が限界を超えたときに発生するエラー(だと思います)
【解決策】
「eclipse.ini」を開いて以下の部分を変更し、Eclipseのメモリ使用量を増やします。
変更前
--launcher.XXMaxPermSize 256m (中略) -Xms40m -Xmx512m
変更後
--launcher.XXMaxPermSize 1024m (中略) -Xms512m -Xmx1024m
ubuntuでログイン時にシェルスクリプトを自動実行
参考
ログイン時にシェルスクリプトを自動実行する - ubuntu日記
とりあえず、次の二つの方法を試してみました。
1. ~/.bashrcに実行したいスクリプトを追記
ターミナル起動時に自動実行される
2. 「/etc/profile.d/」以下に実行したいスクリプトファイル(*.sh)を配置
ログイン時に自動実行される
Ubuntu14.04のマウスポインタの速度を変更する
現在使っているノートパソコンにUbuntu14.04をインストールしました!
デフォルトのマウスポインタの速度が速かったので、遅くしようと思ったのですが、
既に最低速度に設定されていました... ∑( ̄Д ̄;)!!
諦めていたのですが「ターミナルから細かく設定できる」方法があったので、
そちらの方法でマウスポインタの速度を設定しました。
最初にデバイス名 or デバイスIDを確認するために以下のコマンドを実行
$ xinput
実行結果
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)] ↳ Panasonic Laptop Support id=11 [slave keyboard (3)]
タッチパッドの設定を変更したいので、上記の"SynPS/2 Synaptics TouchPad"の設定を変更する。
以下のコマンドを打つことで、速度を調整する。
タッチパッドのポインタ速度を調整
$ xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Accel Constant Deceleration" 5
速度設定は1~10の範囲で設定可能であり、値が大きいほど速度は遅くなる。
デバイスの指定はデバイスIDでも可能らしいのですが、デバイスIDは変更される可能性があるのでデバイス名で指定した方がいいみたいです。
とりあえず、色々操作を覚えつつEmacsを触っていこうかなと思っています。
ビルドとコンパイルの違い
友達の話を聞いていて、ビルドとコンパイルの違いがよく分からなかったので調べてみた.
詳しくは以下の記事を参照しました.itpro.nikkeibp.co.jp
コンパイル
ソースコード(C言語などの高級言語で記述されたファイル)からオブジェクトファイル(マシン語)に変換する作業
本来C言語等のプログラミング言語は人が理解できるように記述された言語であり、機械はマシン語しか理解することができない.そのため機械が理解できるようにプログラミング言語をマシン語に翻訳してあげる作業がコンパイルである.
リンク
オブジェクトファイルの参照関係を結びつける.「ライブラリ」から関数を呼び出すためのファイルと結びつける.
例えば以下の「Hello world!」を出力するコードでは、printf関数は別のファイルに定義されている.このprintf関数が定義されている外部ファイルと下記のソースファイルを結びつける(リンクする)ことで、関数を利用できるようになる.このように複数のファイルを結びつける作業がリンクである.
#include <stdio.h> int main(void) { printf("Hello world!"); return 0; }
C#のSocketIO4Net.Clientで"Error initializing handshake with"が発生したときの解決策
C#のwebsocketのsocketIOクライントのライブラリを使っていた際に、
node.jsで実装したサーバーに接続を試みた際、「Error initializing handshake with "http://localhost:3000"」が発生したので、その解決策をまとめておきます。
クライント側のソースコード
using SocketIOClient; public partial class Display : Form { SocketIOClient.Client websocket; public Display() { InitializeComponent(); connect(); } private void connect() { /* インスタンス生成 */ websocket = new Client("http://localhost:3000"); /* サーバとの接続が確定 */ websocket.On("connect", (fn) => { NotifyUpdateState(INROOM); Console.WriteLine("connect"); }); /* サーバに接続 */ websocket.Connect(); } }
サーバー側のソースコード
var express = require('express'); var mysql = require('mysql'); var http =require('http'); var app = express(); console.log('server running'); /* port:3000で待機 */ var server = http.createServer(app); server.listen(3000, function(){ console.log("server listening on port 3000"); }); /* socket.IOのインスタンス生成 */ var socketIO = require('socket.io'); /* クライアントの接続を待機(IPアドレスとポート番号を結び付ける) */ var io = socketIO.listen(server); /* クライアントが接続してきたときの処理 */ io.sockets.on('connection', function(socket){ console.log("connection"); /* クライアントが切断したときの処理 */ socket.on('disconnect', function(){ console.log('disconnect'); }); }) }
次のページに原因が書いてありました。
sockets - SocketIO4Net Handshake Error - Stack Overflow
要はnode.js側のsocket.ioのバージョン1.0.X以上では0.9.Xとはハンドシェークの手法?(プロトコル?)が異なるので、通信が確立できないらしいです。
node.jsのsocket.ioのバージョンを0.9.17にして実行したところ無事通信できました。
因みに、npmでバージョンを指定してインストールする場合は以下のようにパッケージ名の後ろに@[バージョン]で指定すれば大丈夫だそうです。
npmでバージョンを指定してパッケージをインストール
npm install socket.io@0.9.17
通信の仕組みとか全く勉強不足で分かっていないので、そこら辺も勉強していかないといけないなと感じました。
クライアント側のライブラリを変更した方がいいのかな...