Linuxのデスクトップとサーバーについて扱います。libssh2をコンパイルしてみた暗号化通信に興味が出たので、libssh2の使い方を調べてみることにしました。libssh2のリポジトリと、付属のサンプルlibssh2が使えるようになれば、自作アプリケーションにssh2による暗号化通信を組み込めるかもしれないと考えています。sshポートフォワーディングのような使われ方もしていますので、バイナリ送受信はできるわけですし。libssh2の入手とコンパイル公式サイトからリポジトリの情報ページまで行ってGitリポジトリのURLを見つけました。作業ディレクトリを作成し、その中でリポジトリを取得します。git://git.libssh2.org/libssh2.git取得したlibssh2の中にcdでディレクトリ移動して入ります。最初にconfigureを作成。./buildconfconfigureを実行。インストール先を指定したかったので、今回は--prefixオプションを付与しています。(ソースのひとつ上のディレクトリをインストール先に指定。-yとして、SSLなどのライブラリを導入します。Makefileができているはずなので、コンパイルします。installエラーがでなければ成功です。ディレクトリが出来ていることが確認できるはずです。サンプルの実行テストソースのディレクトリの中にexampleディレクトリがあります。その中には、大量のサンプルソースとMakefileが入っているはずです。サンプルはmakeするまでもなく、ソースと共にビルドされています。サンプルの実行テストを行うには、SSHで接続可能なユーザが必要となります。.sshの下にid_rsaとid_rsa.pubが配置されたテスト用ユーザを作る必要があります。(テストなので、自分で自分にSSH接続します。実験用なのでパスフレーズはなし。#(ssh-keygenで入力せずエンター。rsa#(ソースのexampleまでcd)#実行./ssh2実行すると、以下のような結果が表示されます。done!とりあえず、ユーザ名&パスワードが正しくないというエラーまで。引数にユーザ名とパスワードを与えます。sshuser-password以下のような結果が表示されます。done!成功したようです。自分で自分に繋げているだけですが。サンプルのうち、ssh2.cはログインテストでした。ssh2_exec.cはssh経由のコマンド実行ができるようです。その他のサンプルは、必要になったらソースを読みつつ試してみようと思います。SSHを組み込んだプログラムのコンパイルへコンパイルオプションにsshライブラリを指定するために、pkg-configを設定します。そのためには、PKG_CONFIG_PATHに、sshライブラリのpkg-config設定ファイルを格納したディレクトリへのパスを指定する必要があります。libsshの設定ファイルであるlibssh.pcは、コンパイルして生成したlibディレクトリの下、lib/pigconfig/libssh.pcに存在します。$(pwd))/lib/pkgconfig/:${PKG_CONFIG_PATH}"(実際は1行のコマンドです。このあたりで複雑なパス指定にしてしまったことを若干後悔しはじめる。)下記のコマンドを打って、絶対パスが入っていることを確かめます。pkgさらにpkg-configを打ってみて、includeとlibのパスが出力されることを確かめます。libssh2出力されるpkg-configのオプションを、ビルド時にgccへ与えれば、libsshを組み込んだプログラムをコンパイルすることができます。シューズを買いました。メインの靴がアシックスウォーキングで街歩き用なのですが、これまではこれで高尾山などの軽い山も登っていました。今回、靴底があまりに摩耗したこともあってアシックスウォーキングを買い替えたのですが、ついでに消耗が激...100均の液晶保護フィルムを13インチのノートPCに貼ってみましたノートPCの液晶保護フィルムが100円で買えるなんて、良い時代になりました。ダイソーに行ったら、ノートPCで使えそうな液晶保護フィルムがあったため、衝動的に購入。A4サイズと書いてあります。(HTMLでPOST、そしてhidden)formでユーザの入力やファイルを送信する際、IDを付与したり、送信した情報を紐付けるか、などの情報を一緒に送信したい場合があります。その場合、ID情報はブラウザに表示しないのがベストです。ユーザに見せたり、編集してもらう必要はありません。オルタネイティヴは数あれど、小さな実験プロジェクトを始めるときに、簡単に使えるMakeは未だにビルドツールとして有力な選択肢だと思います。MakefileはUNIX環境、というかCLIツール群があることを前提にしているところがあります。