tech.log

memo.txt

VPS上でliboctaveを使ったc++ソースコードがコンパイルできなかったので

備忘録的にメモ。

先生がよこしたreadme.txtの通りにやると、学校のPCではうまく言ってもVPSでは全然うまく行かなかったのを、四苦八苦しまくってようやくコンパイルできるところまでこぎつけたのでメモしておく。

OS
学校

VPS

Linuxよくわからないので本当に手探りでググりまくりながら何とかたどり着いたところのreadme.txtとの違う点。

共有ライブラリのパス
(変更前) LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/octave-3.2.2/
(変更後) LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib/octave/3.6.4/

コンパイルコマンド
(変更前)
g++ -g -Wall -I/usr/include/octave-`octave-config -v` -L/usr/lib/octave-`octave-config -v` -loctave source.cpp -o a.out
(変更後)
g++ -O3 -fPIC -I/usr/local/include/octave-3.6.4 -I/usr/local/include -c -o a.o source.cpp
g++ -o a.out a.o -O3 -fPIC -L/usr/local/lib/octave/3.6.4 -loctave -lcruft


apt-getでインストールされたOctaveが3.2.4で、とりあえず

Matrix A(2,3);

と2行3列の行列を定義しただけでundefined reference to~~~~のエラーが出てトホホしてた。
最初はなるべく学校の環境に近づけようとOctave3.2.2をソースからビルドしようとしたんだけど、makeでよくわかんないエラーがたくさん出て、Linux初心者の自分には無理だと判断。
最新版入れてみようってことでOctave3.6.4をソースからビルドしましたが、makeにドチャクソ時間かかりました。研究室でやってたんだけど三色ショッピング終わってもmake終わってなかった。

まだ課題のプログラムは動かしてないけど多分動くでしょうということでとりあえずコマンドなんかを忘れないようにメモしておきました。

【未解決】Unityで物置くとY軸の角度が微妙にずれる件

こんにちは!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Unityのモバイル向けプラグインが無料になったとかでいじり始めました。
的立ててボールぶつけて吹き飛ばしてわーいとかやってるのもそろそろ飽きてきたのでちょっとゲームっぽいのを作ってみようかなと思いBlenderで星形の座布団を作って動かしてみました。

f:id:hirayummy:20130531004629p:plain

星形の座布団であってワープするスターではありません。
これをフィールド上に配置して実行すると

f:id:hirayummy:20130531004844p:plain
↑実行前はこうだったのが

f:id:hirayummy:20130531004905p:plain
↑!!!!!!!!!!!!!!!!!

(UCのBGM)

Y軸中心の角度が微妙にずれます。
ボタンを押した時にX軸方向に進撃するようにすると、傾いているからかどんどん左に曲がっていきます。これはゲームにならない。

手探りでやったモデリングが悪かったかな、とUnityでCubeを作っておいてみたら、やっぱり

f:id:hirayummy:20130531005103p:plain

ずれました。
これはどうしようもないのかなぁなぁなぁ。

解決したい。

Monster Absolutely Zeroを飲んでみた

f:id:hirayummy:20130521141606j:plain

モンスターカオスにはいつも主に試験前にお世話になっているが先日出先のコンビニで青いモンスターを見つけて気になっていたのを思い出し最寄りのファミマで購入。

真っ黒い間に水色のMマークにMONSTER ENERGY ABSOLUTELY ZEROの文字、缶の首の部分には「ゼロカロリー+無糖+ゼロカロリー+無糖+ゼロカロリー+無糖+」とぐるっと書かれている。

飲んでみると、無糖のくせにスッキリしたさわやかな甘味で、ゼロカロリーっぽさを感じる後味の軽さ(?)があった。
レモン味のスポーツドリンクみたいな味だと思う。
べたべたした甘さがない分、甘いものがっつり飲みたくないけど眠気は飛ばしたいときなんかにはカオスよりこっちのほうがいいかもしれない。逆に疲れ果てて甘いものでぐっと元気出したいときにはカオスの方が適していると思う。
味はカオスの方がジュースっぽくて好み。

[2013/05/27 追記]
なんか今日徹夜のお供に飲んでみたらすごくまずく感じた。
やっぱカオスが好きです。

PHP+CodebirdでAccess tokenとAccess token secretを取得する

GETでconsumer_keyとconsumer_secretを投げるとTwitterの認証ページに飛ばして認証後トークンを表示してくれるやつ。

<?php

require_once('codebird.php');

session_start();

if(isset($_GET['key']) && isset($_GET['secret'])){
  $consumer_key = $_GET['key'];
  $_SESSION['key'] = $consumer_key;
  $consumer_secret = $_GET['secret'];
  $_SESSION['secret'] = $consumer_secret;
}
else if(isset($_SESSION['key']) && isset($_SESSION['secret'])){
  $consumer_key = $_SESSION['key'];
  $consumer_secret = $_SESSION['secret'];
}

Codebird\Codebird::setConsumerKey($consumer_key,$consumer_secret);
$cb = Codebird\Codebird::getInstance();

if(!isset($_GET['oauth_verifier'])){

  $reply = $cb->oauth_requestToken(array(
    'oauth_callback' => 'http://0q0.biz/oauth/php/oauth.php'
  ));

  $cb->setToken($reply->oauth_token,$reply->oauth_token_secret);
  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;

  $auth_url = $cb->oauth_authorize();
  header('Location: '.$auth_url);
  die();
}elseif(!isset($_SESSION['oauth_verified'])){

  $cb->setToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
  $reply = $cb->oauth_accessToken(array(
    'oauth_verifier' => $_GET['oauth_verifier']
  ));

  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;
  $cb->setToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
  $_SESSION['oauth_verified'] = true;

}
echo "oauth_verified = ".$_SESSION['oauth_verified']."<br>";
echo "Access Token : ".$_SESSION['oauth_token']."<br>";
echo "Access Token Secret : ".$_SESSION['oauth_token_secret']."<br>";

?>

Codebirdのサンプルを参考に、セッションに入れたり出したりしたりしなかったりするところをちょこちょこ書き換えてみた。
GETで投げるだけだけど、ちょっと使いやすくなるかなと思って専用のページを作ってみました。
TwitterOAuthHelper

/etc/sudoersがsyntax errorでsudo使えなくなった時の対処法

ちょっと理由があって/etc/sudoersをいじってて途中で保存しようとしたら、つい勢い余って:wqしてしまって詰んだのでメモ。

$ sudo vim
sudo: >>> /etc/sudoers: syntax error near line 32 <<<
sudo: parse error in /etc/sudoers near line 32
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

元に戻そうにもsudoが使えなくなったから/etc/sudoersを書き換えられなくなってしまって、これはどうしたもんかなと少し困った。
rootでログインすればsudoなしで行けるか、ととりあえずsu -をためしてみるけどrootのパスワード思い出せなかった(これも困るけど)。

'etc sudoers syntax error'とかでググったらこんな解決法っぽいの見つけた。
How to modify a invalid /etc/sudoers file? It throws out an error and not allowing me to edit again

この質問者の人も自分と全く同じ状況のよう。
それに対する解答が以下の通り。

On a modern Ubuntu system (and many other GNU/Linux distributions), fixing a corrupted sudoers file is actually quite easy, and doesn't require rebooting, using a live CD, or physical access to the machine.

To do this via SSH, log in to the machine and run the command `pkexec visudo`. Assuming you (or some other user) are authorized to run programs as root with PolicyKit, you can enter your password, and then it will run visudo as root, and you can fix your /etc/sudoers.

`pkexec visudo`でスーパーユーザとしてvisudoを実行できるらしい。

$ pkexec visudo
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: (本名),,, ((ユーザ名))
Password: 
==== AUTHENTICATION COMPLETE ===

GNU nanoエディタが起動して問題なく/etc/sudoersのエラーを修正することができた。`sudo vim`も出来るようになった。よかった。

pkexecについてはまた今度。