23 Jun 2013, 12:11

ぼくらの家にkarotzがやってきた

ぼくらの家にkarotzがやってきた

夏のボーナスでフランス製の電子ぬいぐるみ karotzを買った。

[toc]

karotzってなに?

karotzとは、フランス製のうさぎ型ロボット。

Karotz, smart wifi rabbit, new version of Nabaztag

第三世代のロボットらしく、第二世代まではNabaztagと言われたらしい。ちなみに、第10世代をドラえもんという。サボートが打ち切られたり、売っている会社が倒産したりと、いろいろ苦労しているみたい。過去の黒い歴史はこの記事が面白かった。

Karotzさんといっしょ – ssogabeの日記

amazonで注文して5日で来た。ハヤッ!25000円。ちなみに、本家サイトは在庫切れ。また潰れないよね?

karotzの設定方法

ウェブドキュメントに従って初期設定をします。

http://www.karotz.com/plug/download

サイトからファームをダウンロードして、それを一旦USBメモリに保存する。ダウンロード時にwifiに接続するためのSSIDとパスワードの入力が必要。

その後karotzくんのおしりのあな(にあるUSBメモリ差込口)に、、メモリを差し込んで起動する。

すると、立ち上がり時にインストールがはじまる。数分間立って、インストール完了。その後は、いろいろとガイダンスが音声で流れて、最後に I’m Ready!となってインストール完了。

プラグインで拡張する

karotzの管理はすべてWeb画面から。karotzはいろんなプラグインを入れることで拡張できる。iPhoneみたい。

twittierを読み上げたり、時間や天気予報を教えてくれたり、音楽を流してくれたりできる。

他にもJenkinsのビルドエラーを通知するXDFにも使えるっぽいけど、この子はかわいいので会社に置き去りにするわけにはいかない(というか会社で使えない(T_T))

日本時間の設定

時刻設定をしないと、時間を教えてくれたり目覚まし機能が使えないので設定する。

http://www.karotz.com/my/information/personal

ココにアクセスしてtimezone を 「Asia/Tokyo」に設定する。

操作方法

普段は緑の点灯状態で待機。頭のボタンを押すとおなかがオレンジ色になって、音声認識モードになる。ここでいろいろ指示を出して操作する。

操作を中断する場合は、頭のボタンを3回押す。

購入時に、mini karotzがついてくるが、これは音声以外で操作をするために使う。

ウェブ画面から、minikarotzに対応させるアプリを割り当てる。mini karotzをkarotzのハナのあたりにもっていくと、karotzくんが匂いを嗅いで、割り当てた処理を実行してくれる。

感想

うん、こんな拡張性じゃあ正直物足りないなぁ。期待はずれ。

かわいいだけじゃ、Siriに勝てないぞ!!

20 Jun 2013, 10:32

gdbserverを立ちあげてリモートデバッグする方法メモ

プログラムの勉強をする開発環境は今までCygwinを利用していたが,最近はvmware上のCentOSに乗り換えた。

C言語のコードを編集するときは、Windows上でEclipseを起動してsamba経路でソースを編集してる。コンパイルを実施するときは、ssh接続でリモートシェルを起動している。

今回、gdbをEclipseから利用する方法を調べてみた。利用するのは、

gdbserver

デバッグ対象のプログラムを実行しているマシンとは異なるマシン上で GDB を実行することを可能にするプログラム。

環境

  • ターゲットPC CentOS 6.4
  • ホストPC Windows 7 (Cygwin)

gdbserverをインストールする

なにはともあれ、まずはgdbとgdbServerをターゲットPCにインストールする

yum -y install gdb
yum -y install gdb-gdbserver

Cygwinのgdbからgdbserverに接続してリモートデバッグ

CentOS上でgdbserverを立ちあげて、Windows上のCygwinで動作してているgdbからTCP接続でアクセスします。

gdbserverの起動

gdbserverの起動のための書式は以下。

gdbserer (ターゲットIP):(ポート番号) (プログラム) [引数]

例えば、hogehoge.exeをポート8081で起動する場合、

[tsu-nera]% gdbserver locallhost:8081 hogehoge.exe
Process hogehoge.exe created; pid = 3739
Listening on port 1234

これでホストPCからの接続を待っている状態になる。

ちなにみ、ポートが開いていない場合は開けておく。

sudo emacs  /etc/sysconfig/iptables
# for gdbserver
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT

gdbクライアントからgdbserverに接続

クライアント側でも、gdbを起動。Cygwin上のgdbを利用して、samba経路でhogehoge.exeを起動する。

gdb hogehoge.exe

リモートのターゲットに接続するためには、以下を入力。

(gdb) target remote saru:8081
Remote debugging using saru:8081
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB.  Attempting to continue with the default i386 settings.

接続完了。あとはお好きな様に。

Eclipseからgdbserverに接続してリモートデバッグ

Eclipseには、高機能なGUIインタフェースのgdbが付いている。コレを使用する。

  • プロジェクトを右クリック -> デバッグ -> デバッグの構成
  • C/C++リモート・アプリケーション -> 新規 を選択。
  • C/C++アプリケーションで、sambaから見えている実行ファイルを選択。
  • 同じビューの下のほうにある、GDB(DSF) Manual Remote Debugging ランチャーを選択。
  • デバッガータブを開き、接続タブを選択。
  • 型でTCPを選択。ホスト名とポートも入力。
  • 最後に、デバッグを押して完了。

ソースが見えないときは、ソース・ルックアップパスの設定でパス・マッピングをする。例えば、sambaでZ\ドライブに/home/tsu-neraを割り当てている場合、Z\と/home/tsu-nerを割り当てる。

これで、Eclipseから見えるはず!!!(`・ω・´)ゞ

とおもったが、breakpointをはってもgdbが止まってくれない。。。(T_T)

ステップ実行も変数の値の書き換えもできるが、ブレークポイントでトマラない。。(T_T)

5時間頑張って、今日は挫折した。このくらいで許してよ。orz

追記: gdb traceをみてみると、以下のエラー。どうやら、ソースが見えない??

789,439 26-break-insert --thread-group i1 -f /home/tsu-nera/repo/vxUnit/vxUnit/test/Testhogehoge.c:2\
4
789,510 &"No source file named /home/tsu-nera/repo/vxUnit/vxUnit/test/Testhogehoge.c.\n"
789,513 26^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending=\
"/home/tsu-nera/repo/vxUnit/vxUnit/test/Testhogehoge.c:24",times="0",original-location="/home/tsu-ne\
ra/repo/vxUnit/vxUnit/test/Testhogehoge.c:24"}
789,513 (gdb) 

参考

19 Jun 2013, 23:00

プログラマ必読!「UNIXという考え方―その設計思想と哲学」でUnix哲学の真髄と美徳を学ぶ

「UNIXという考え方―その設計思想と哲学」という本を読んだ感想です。

Unix哲学とはなにか

Unix哲学とはなにか?そんな「Unixらしさ」という暗黙知を言葉で書こうとした本だ。

  1. スモール・イズ・ビューティフル
  2. 一つのプログラムには一つのことをうまくやらせる
  3. できるだけ早く試作を作成する
  4. 効率より移植性
  5. 数値データはASCIIフラットファイルに保存する
  6. ソフトウェアの挺子を有効に活用する
  7. シェルスクリプトを使うことで挺子の効果と移植性を高める
  8. 過度の対話的インタフェースを避ける
  9. すべてのプログラムをフィルタにする

細かい内容については、Web上でいろいろと書かれているので、リンクをまとめておく。

内容は、まずはUnixとはこのようなものだという定理を示し、それに対する体験談や具体例を上げながら説明されていく。エッセイのようだ。

Unixらしさについて

以下、名言だと思ったことに対する抜き出しと、自分の感想を述べる。

Small is beautiful

小さいことは素晴らしいということ。

小さいとわかりやすい、フィルタとして扱いやすい、移植性が高い・・・などなど。プログラムが小さいと、Unixにとっての美徳を十分に発揮できる。だから、美しい?ということ。

自分でシェルスクリプトを書くときも、なるべく小さな、単一の機能を持ち、フィルタとして動作するような、軽量スクリプトにするように心がけたい。

数値データはASCIIフラットファイルに保存する

Unixでは、設定ファイルがテキスト形式。Windowsに慣れ親しんでた自分には、Linuxのこのようなテキスト設定ファイルの編集は驚いた。これは、移植性を考えてのことだったのかと、納得。

独自フォーマットは移植性が低い。テキスト形式は移植性が高い。

そして、テキストデータは扱いやすく、編集しやすい。データをフィルタやパイプを駆使して処理することを美徳とするUnixとしては、動かせないデータは死んだデータだ、とも書いてある。

対話的なシェルは、他のプログラムと結合することが難しいため、否定的に書かれている。対話的にデータを取得するのではなくて、設定ファイルにデータを書き込んで、それを処理することがよいこととされている。自分で書くシェルでもこの点は大いに参考になる。readコマンドはなるべく使わずに、テキストを介するようにしようとおもった。

よいプログラマはよいコードを書く。偉大なプログラマはよいコードを借りてくる。

Unixでは、小さなプログラムを組み合わせて利用すること好む。ソフトウェアの「梃子(てこ)」を利用して、なんでも自動化しようとすることが、Unixプログラマの美徳。

その組み合わせる対象のツールは、なんでも自分で作るのではなくて、すでにある過去の資産を利用しようということだ。むしろ、どのようにツールを組み合わせて目的を実現するか、ということに注力することを礼賛している。

なるほど、UnixやLinuxには、自分の知らないコマンドがまだまだたくさんある。自分で作成るスクリプトやCプログラムなんて、車輪の再発明かもしれない。自分で作成するプログラムはたしかに達成感があるけれども、時間がかかるし他人のプログラムよりも劣るかもれない。過去の資産を利用することを心がけよう。

全てのプログラムはフィルタとして振る舞うようにせよ

パイプ、シェル、そしてフィルタ。Unix哲学を理解するためには、この3つの単語が必須。

フィルタとは、データを変換するもの。すべてのプログラムはデータを処理するためのフィルタといえる。フィルタには、標準入力(stdin)と標準出力(stdout)がある。標準入力から入力されたデータをフィルタを介して変換し、標準出力に出力する。一つの形式から、別の形式に変換する。

パイプとは、標準出力を標準入力に変換するもの。パイプを介して、フィルタとフィルタを連続してつなげることができる。

シェルとは、フィルタやパイブをまとめたもの。シェルもフィルタといえる。

パイプやフィルタをより使いやすくするためには、対話的プログラムは悪だ、ということになる。データはテキスト形式で保存せよ、ということになる。そして、小さいことは美しいということになる。全ては、このパイプとフィルタのためにある。

 

改めて、自分がそのパイプとフィルタを使いこなせているかというと、使いこなせてないと思う。パイプとフィルタの理解が深まれば、いまよりずっと効率よく、物事がこなせるかもしれない。また、そのようにUnixのコマンドたちは設計されているのだ。

さいごに

この本には、今まで使ってたLinuxに対するそれらしさが言葉で書かれている。なので、ああそういうことかという発見が散らばっていた。

また、自分でシェルスクリプトを書くときの小さなヒントも得ることができた。

Linuxをよく使うひとならば必読な本かもしれない。そういってもいいような読後感だ。

19 Jun 2013, 10:09

Rubyで書かれた統合C言語TDD開発環境 「Ceedling」 がけっこう便利そうな件

UnityやCMockについて色々調べて来ましたが、今日はそれらを束ねるツール Ceedlingにつついて調べました。

[toc]

Ceedlingとは

Ceedlingとは、UnityとCMockを使ってテストを実行するためのテスト管理用フレームワーク。テストを助けるための便利なツールがRubyスクリプトで書かれていて、それらを利用してC言語でのTDDをウマクやるためのツール。

Ceedlingのインストール

CeedlingはRuby,Rakeが必要なので、まずはrubyとrakeをインストールしておくこと。また、Rubygemもパッケージ取得のために必要。入れておくこと。

Ceedlingのインストールは以下のコマンドで実施する。

gem install ceedling

Ceedlingプロジェクトの作成する。

ceedling new ceedling_study

Unity・CMockを利用するためのテスト環境が一気に自動生成される。かっこ良い。(・∀・)

デフォルトでいろんなモードが用意されている。これらがテストを実施するためのお助けツール。詳しくは、使い方のドキュメントを参照。

% rake -T
rake clean# Delete all build artifacts and temporary products.
rake clobber  # Delete all generated files (and build artifacts).
rake environment  # List all configured environment variables.
rake files:header # List all collected header files.
rake files:source # List all collected source files.
rake files:test   # List all collected test files.
rake logging  # Enable logging
rake module:create[module_path]   # Generate module (source, header and test files)
rake module:destroy[module_path]  # Destroy module (source, header and test files)
rake paths:source # List all collected source paths.
rake paths:support# List all collected support paths.
rake paths:test   # List all collected test paths.
rake summary  # Execute plugin result summaries (no build triggering).
rake test:*   # Run single test ([*] real test or source file name, no path).
rake test:all # Run all unit tests.
rake test:delta   # Run tests for changed files.
rake test:path[dir]   # Run tests whose test path contains [dir] or [dir] substring.
rake test:pattern[regex]  # Run tests by matching regular expression pattern.
rake verbosity[level] # Set verbose output (silent:[0] - obnoxious:[4]).
rake version  # Display build environment version info.

vendor配下にunityとcmockのディレクトリを持ってくる。

cd vendor
git clone git://github.com/ThrowTheSwitch/Unity.git
git clone git://github.com/ThrowTheSwitch/CMock.git

仕様のドキュメントは vendor/ceedling/docs配下にある。

docs/
├── CExceptionSummary.pdf
├── CMock Summary.pdf
├── CeedlingPacket.pdf
└── Unity Summary.pdf

設定ファイルは project.ymlをいじるけれども、まずはデフォルトでOk.

Unityといっしょに使ってみる

Unityのテストコートを書いてみます。

#include "unity.h"
#include "hogehoge.h"

void setUp(void)
{
}

void tearDown(void)
{
}

void test_hogehogefirst(void)
{
  TEST_IGNORE_MESSAGE("Here");
}

実行結果

[tsu-nera]% rake test:all

Test 'Testhogehoge.c'
---------------------
Generating runner for Testhogehoge.c...
Compiling Testhogehoge_runner.c...
Compiling Testhogehoge.c...
Linking Testhogehoge.out...
Running Testhogehoge.out...

-------------------------
IGNORED UNIT TEST SUMMARY
-------------------------
[Testhogehoge.c]
  Test: test_hogehogefirst
  At line (14): "Here"

-------------------------
OVERALL UNIT TEST SUMMARY
-------------------------
TESTED:  1
PASSED:  0
FAILED:  0
IGNORED: 1

ちなみに、unity fixture形式のテストの書き方だとうまく動作しなかった。ここ3週間、仕事でUnityFixture形式のテストを書きまくったので、どうやって移植しようか。。。ウマクやる方法がわかったら追記する。

CMockといっしょに使ってみる

テストファイルに、モックしたいソースのヘッダファイルを以下の形式で書くと、CeedlingはCMockを利用してモックを自動生成する。

#include "mock_xxxxx.h"

prefixのmock_はproject.ymlの以下のパラメータを変更すれば調整可能。

:cmock:
  :mock_prefix: mock_

CMockサンプル

以下のように、uhauha()の先でhogehogeをコールしている。hogehogeをモックしたい。

uhauha.c

#include "uhauha.h"
#include "hogehoge.h"

void uhauha(void)
{
  hogehoge();
}

テストコードを以下のようにかく。

Testuhauha.c

#include "unity.h"
#include "uhauha.h"
#include "mock_hogehoge.h"

void setUp(void)
{
}

void tearDown(void)
{
}

void test_uhauhafirst(void)
{
  hogehoge_ExpectAndReturn(2);
  uhauha();
}

gcovといっしょに使ってみる

gcovを利用して、gcovデータを生成する。project.ymlにgcovプラグインの記述を追加する。

:tools:のところにgcovを追加。

:plugins:
  :load_paths:
    - vendor/ceedling/plugins
  :enabled:
    - stdout_pretty_tests_report
    - module_generator
    - gcov(ここに追加)

rakeコマンドでgcovを実行。build/gcov/outに gcnoができる。

rake gcov:all

xUnit形式のxmlファイルを生成して、Jenkinsで表示する

もともと、Unityでのテスト結果をxUnit formatのXMLに変換する方法を調べていたらceedlingを見つけたので、これがやりたかったこと。project.ymlに以下を追加する。

:plugins:
  :load_paths:
    - vendor/ceedling/plugins
  :enabled:
    - stdout_pretty_tests_report
    - module_generator
    - xml_tests_report

rakeコマンドでtestを実行。/build/artifacts/testに report.xmlができる。

<?xml version='1.0' encoding='utf-8' ?>
<TestRun>
        <FailedTests/>
        <SuccessfulTests>
                <Test id="1">
                        <Name>test/Testuhauha.c::test_uhauhafirst</Name>
                </Test>
        </SuccessfulTests>
        <IgnoredTests>
                <Test id="2">
                        <Name>test/Testhogehoge.c::test_hogehogefirst</Name>
                </Test>
        </IgnoredTests>
        <Statistics>
                <Tests>2</Tests>
                <Ignores>1</Ignores>
                <FailuresTotal>0</FailuresTotal>
                <Errors>0</Errors>
                <Failures>0</Failures>
        </Statistics>
</TestRun>

このファイルをJenkinsから表示すればよい。表示するためには、xUnit Pluginを入れる。

xUnit Plugin – Jenkins – Jenkins Wiki

xUnit Pluginには、Unity用の選択肢がない。CppUnitと形式が似ているため、xml生成用のRubyスクリプトに手を入れる。

まず、CppUnitには、Ignoreという概念がないので、L38,L100のIgnore関連の記述をコメントアウト。

L38.

=begin
    write_tests( results[:ignores], stream, 'IgnoredTests' )
=end

L100.

=begin
    stream.puts "\t\t<Ignores>#{counts[:ignored]}</Ignores>"
=end

L68行目にもバグがあるので、修正。

      stream.puts "\t\t</FailedTest>"
      # stream.puts "\t\t</Test>"

Ceedling / Discussion / Ceedling Forum:XML report

これで、Jenkinsでも結果が表示されたた。

17 Jun 2013, 13:57

cronとwatchrを使ってJenkinsからオレオレリポジトリ監視してみる

はじめに

Jenkinsを利用てリポジトリ監視をしたい。しかし、自分が利用しているSCMは社内独自ツールという、

(´・д・`)

なカンジなので、Jenkinsのプラグインがなかった。しかたがないので、こんな方法でなんとかならないか考えた。

  • cronを利用して、5分毎にローカルのリポジトリをアップデートする。
  • watchrを利用して、ファイルの変更を監視。
  • wgetを利用して、Jenkinsのジョブをキックする。

[toc]

今回利用するもの

  • CentOS
  • git
  • Jenkins
  • crontab
  • watchr

cronで定期リポジトリ更新

5分毎にローカルで持っているリポジトリを更新する。5分毎の定期実行はJenkinsを利用てもいいけど、これはバックグラウンドで動かしたいので、cronを利用しようと思う。

まずは、crontabに実行したいコマンドを記述する。以下のコマンドでエディタが開きます。

% crontab -e  

cronの記述方法は

「分」「時」「日」「月」「曜日」 [実行コマンド]

詳しくは、以下を参照。

crontabの書き方 — server-memo.net

「/」を利用すると、間隔を指定できる。たとえば、5分毎にコマンドを実行するには、以下のように書く。

*/5 * * * * git pull 

せっかくならば、JenkinsのJobを使ってもよい。その場合は、古いビルドの破棄にチェックを入れて、ビルドの最大保存数を制限する。Jenkinsで5分定期を動かす記法はcronと同じ。

*/5 * * * *

watchrを利用して、ファイルの変更を監視

ファイルに変更があったかどうかを監視するためのrubyスクリプトでwatchrというものがある。これで、ファイルの変更を見つけたらJenkins Jobをキックしてみる。(ちなみに、pythonだとwatchmedo)

[tsu-nera]% gem install watchr
Successfully installed watchr-0.7
Parsing documentation for watchr-0.7
1 gem installed

設定ファイルに監視のルールを書く。設定ファイルの書き方は、Readmeが参考になる。

以下のように、監視したいファイルを正規表現で、監視に引っかかったファイルに対して、実行したいコマンドを書く。

watch( 'test/test_.*\.rb' )  {|md| system("ruby #{md[0]}") }
watch( 'lib/(.*)\.rb' )      {|md| system("ruby test/test_#{md[1]}.rb") }

wathcrコマンドに設定ファイルを渡して実行する。

bash-4.1# watchr git.watchr &

wgetを利用して、Jenkinsのジョブをキック

wgetでURLを指定すると、Jenkinsのジョブを実行することができる。

$ wget --http-user=<ユーザ名> --http-password=<パスワード> http://yourserver.com/job/<ジョブ>/build?token=<トークン名>

以下の過去記事も参照。

今回はコレ。

wget --no-proxy --http-user=tsu-nera --http-password=*********** http://192.168.118.130:8080/job/vxUnit/build?token=vxunit_token

まとめると、watchrに渡す設定ファイルは以下のようになる。

watch( 'src/*.[ch]' )  {|md| system("wget --no-proxy --http-user=tsu-nera --http-password=********** http://localhost:8080/job/vxUnit/build?token=vxunit_token") }
watch( 'test/*.[ch]' )  {|md| system("wget --no-proxy --http-user=tsu-nera --http-password=********** http://localhost:8080/job/vxUnit/build?token=vxunit_token") }

16 Jun 2013, 23:01

CentOSで日本標準時の時刻をntpで取得するためのメモ

CentOSにntpサーバを入れて、日本標準時刻に自動的に合わせるためのメモです。

[toc]

NTPとは

NTPとは、NetWork Time Protocolの略。

時刻を問い合わせる機能を持ち、正確な時間をコンピュータに反映することができる。

NTPのインストール

% sudo yum -y install ntp

時刻を他サーバに問い合わせる

日本標準時プロジェクトというものがあり、ここから日本の正確な時刻を配信している。

日本標準時プロジェクト 公開NTP

ntp.nict.jpというサーバから正確な時刻を取得する。

% sudo ntpdate ntp.nict.jp
17 Jun 07:44:15 ntpdate[30214]: adjust time server 133.243.238.243 offset 0.005146 sec

ntpdデーモンを起動して、自動的に時刻同期させる

/etc/ntp.confの編集

デーモンを起動することで、時刻を自動同期できます。設定ファイルは、/etc/ntp.confです。

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

となっている部分を、以下のように編集。

server -4 ntp.nict.jp
server -4 ntp1.jst.mfeed.ad.jp
server -4 ntp2.jst.mfeed.ad.jp
server -4 ntp3.jst.mfeed.ad.jp

ntp1.jst.mfeed.ad.jpはntp.nict.jpと同期している別サーバ。

NTPサービス起動

設定が完了したら、サービスを起動。

sudo service ntpd start
ntpd を起動中:                                             [  OK  ]

ntpd -pでステータスを確認することができます。

ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
=============================================================================
ntp-b3.nict.go. .NICT.           1 u   45   64    1   51.180   36.062   0.004
ntp1.jst.mfeed. 172.29.3.50      2 u   45   64    1   46.038   35.957   0.004
ntp2.jst.mfeed. 172.29.2.50      2 u   44   64    1   37.927   31.670   0.004
ntp3.jst.mfeed. 172.29.3.50      2 u   43   64    1   41.949   30.128   0.004

自動起動の設定

最後に、自動起動の設定をして終了

% sudo chkconfig ntpd on
% chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

環境

  • CentOS 6.4

参考

16 Jun 2013, 09:10

組込み開発の常識!?C-Kermitの使い方を調べたメモ

はじめに

シリアルケーブルを利用して組み込みターゲットに接続する時、kermitコマンドを使う。

仕事で、kermitコマンドしらなくて3人くらいにバカにされたので調べてみた。(´・ω・`)

組込みソフト開発では常識っぽ。

kermitとは

kermitとは、通信用プロトコルの種類の一つ。ようはsshやtelnetの兄弟。

kermitのインストール

WindowsだとMS-kermit、Unix系だとC-kermit/G-kermitなどがあるらしい。今回はLinux上で利用するのでC-kermitを試す。

C-Kermit Binaries

インストールは、ソースを落としてきてコンパイルするようだ。ソースのアーカイブはココ

最新版を落としてくる。ckuってやつがそれっぽい。

bash-4.1# mkdir kermit
bash-4.1# cd kermit/
bash-4.1# wget ftp://kermit.columbia.edu/kermit/archives/cku302.tar.gz
bash-4.1# tar zxvf cku302.tar.gz

make targetは環境によって異なるようだ。makefileに書いてある。今回はCentOSなので、linuxをつける。

bash-4.1# make linux
bash-4.1# make install

エラーした(´・ω・`)

MANDIR=/usr/local/man/man1
Creating /usr/local/man/man1...
mkdir: ディレクトリ `/usr/local/man/man1' を作成できません: そのようなファイルやディレクトリはありません
make: *** [install] エラー 1

ディレクトリを作りなおして、リトライ。

bash-4.1# mkdir -p /usr/local/man/man1
bash-4.1# make install

kermitの使い方

公式ドキュメントは以下。

kermitと入力すると、対話モードで起動

[tsu-nera]% kermit
C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux
 Copyright (C) 1985, 2011,
  Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/home/tsu-nera/) C-Kermit>

接続デバイスと接続速度をそれぞれ設定して接続する。

# デバイスを設定 /dev/ttyS0がシリアル#0 /dev/ttyUSB0がUSBケーブル
C-Kermit> set line /dev/ttyS0
# 接続スピード デバイスごと
C-Kermit> set speed 9600
# 接続する connectでもよい
C-Kermit> c

.kermrcに初期設定をしておけば、kermit起動時に読み込まれる。

いろいろオプションがあるけれども、シリアルケーブルに接続するためには、-lをつける。

kermit -l /dev/ttyS0

.kermrc以外の設定ファイルを読みこむときは、-y (arg)で。色々と作っておいて、呼び分ける。

kermit -y ~/.kermrc0
kermit -y ~/.kermrc1

参考

16 Jun 2013, 06:38

畜生、ブログエディタ変更だ!Windows上のMarkDownPadで編集してWordPressに投稿する

はじめに

今までは、WordPress投稿用のエディタはWindows Live Writerを利用していた。

ブログを独自ドメインに変更してテーマの更新を実行したら、テーマが反映されなくなってしまった。

解決方法は場合場合によって違うようで、ネット上の方法をすべて試してみたけれども、ダメだった。

畜生、エディタ変更だ!ヽ(`Д´)

Markdown記法というのがシンプルで強力ときいたため、これでブログがかけたらいいなと思った。

というわけで、今日はWordPressでMarkdownを利用する方法を調査しました。

[toc]

Markdown on Save Improved を導入

WordPressの投稿エディタでMarkDownを利用するためのプラグイン、Markdown on Save Improvedを入れる。インストールは、プラグインの検索からいつもの方法で。

WordPress › Markdown on Save Improved « WordPress Plugins

プラグインを有効化して新規投稿をしようとすると、デフォルトのエディタがMarkdown用のエディタになる。

MarkDownでかかれた記事は保存するときにHTMLに変換されるという仕組み。

WordPressプラグインが利用するタグを埋め込む場合

MarkDown中に、WordPressの機能のタグを利用したくなることがある。たとえば、目次を自動生成するためのTOCタグだったり、HyntaxHighwriterのタグだったり。

普通に生でタグを記入をすると、HTML変換時に、消されてしまう。

こういう時は、<div> </div>で囲むとよいみたい。

参考:

色やフォント、画像が使いたい時

MarkDown中に、HTMLを直接かける。なので、色を変えたい場所や、大きさを調整したい前後で

<font> </font>をつければよい。

MarkDownPad2もいっしょにつかう

まだMardDown記法自体に慣れていないため、頭のなかで完成された記事が描けない。そこで、MarkDownをリアルタイムプレビューしてくれるWindowsクライアントも探してみた。以下の記事が参考になった。

Windows向けMarkdownエディタまとめ | ぶろゲ

世界で一番有名そうなWindows用MarkDownクライアントソフト「MarkDownPad2」を入れてみる。

ダウンロードは以下のサイトから。

MarkdownPad – The Markdown Editor for Windows

起動するとこんな感じ。

リアルタイムプレビューができるところが嬉しい。また、日本語翻訳されていて利用していて不具合はない。

このMarkdownをそのままWordPressに貼り付けても、プレビュー通りにならない。MarkDownっぽいスタイルシートを適用する。

  • git://github.com/nicolashery/markdownpad-github.git

おわりに

まだ、実験段階なので、これが自分のスタイルになるかどうかはわからない。

このままだと、いちいちWebページを開かないと記事の投稿ができない。これは面倒だ。

次は、Emacsのorg2blogからWordPressにポストすることを試してみる。

一番いいのは、Windows Live Writerが使えようになることなんだけど、なんとかならないかな。。。

もう3時間くらい調べた気がする。。。はあ。(´。・ω・。`)

追記

Windows Live Writerのテーマがようやく更新できた。

原因は、index.htmlのPHPがバグってた!!!

でも、良い機会なので、MarkDownをもう少しいじってみる。

16 Jun 2013, 04:13

いつ独自ドメインに移行するの?今でしょ!独自ドメインを取得しWordPressサイトを移行したまとめ

このブログも開設してから1年以上経ちました。初めは半年もてばいいやとか思っていましたが、ブログを書くことがけっこう勉強のモチベーションになっていたりもします。

今後もずっと続けていこうとおもったので、思い切ってfuturismo.bizという独自ドメインを取得しました。.bizといいつつも、ビジネス用途ではないが、これしかなかった。

今はしょぼいアクセス数だけど、これから爆発的にアクセス数があがる(希望的観測 (-_-;)オンリーワンなサイトを目指すのだ。いつ移行するの?今でしょ!

あと、futurismoという単語で取得できるドメインがけっこうないことに焦った。(futurismoはイタリア語で未来派という意味)いつ移行するの?今でしょ!

Googleのページランクも!はてなブックマークも!被リンクも!
すべてをかなぐり捨てて、移行します。゚(゚´ω`゚)゚。

とはいえ、301リダイレクト機能を使って、リスクを避けようかと思います。

環境

  • ロリポップサーバ
  • WordPress

[toc]

サイトのバックアップをとる

これは、以下の記事を参照してください。

WordPress完全バックアップマニュアル(BackWPupでバックアップ) | Futurismo

独自ドメインを取得する

今回は、ムームードメインというサービスで取得しました。ここも省略。

ロリポップに独自ドメインを設定する

管理画面(https://user.lolipop.jp/)にログインして、左のツールバーより

  • 独自ドメイン -> 独自ドメイン設定 -> 独自ドメイン設定

を選択。登録画面が現れるので、設定する独自ドメインと公開フォルダを設定する。これで、公開フォルダにアクセスしたものと同じ記事が、独自ドメインにアクセスすると見れるようになる。設定反映には、しばらく(1時間くらい?)かかるみたい。

WordPressで独自ドメインに移行する

一時間くらい立って、独自ドメインにアクセスすると、ブログのトップが表示される!

http://futurismo.biz/

しかし、トップページだけが独自ドメインに移行できたが、配下のページは旧URLのままだ。WordPressの設定で、旧URL配下のページも独自ドメインの新URL配下に移動させる。管理画面から、

  • 設定 -> 一般設定 -> WordPressアドレス/サイトアドレス

に、取得したドメインをいれればよい。

Googleアナリティクスのリアルタイム解析で、訪問者がいなくなることを今か今かと待つ。ここぞという瞬間を狙い、今だ(*`・д・)ノ

これで、移行完了?

旧URLから301リダイレクトで新URLに転送する

このままだと、Google検索から旧URLにやってきた人は、ページが404 Not Foundになってみつからなくなる。

image

旧URLを訪れたひとは自動的に新URLに転送する。これを、リダイレクトという。

wordpressでリダイレクト設定をするには、.htaccessというファイルを編集する。以下を追記した。書き方は、ロリポップの記事を参考にされたし。

URLの書き換え / ホームページ / マニュアル – ロリポップ!

RewriteEngine On
# http://futurismo.bizにURLを統一
RewriteCond %{HTTP_HOST} ^hmi-me.ciao.jp
RewriteRule ^(.*) http://futurismo.biz/$1 [R=301,L]

追記:このやりかたでリダイレクトが動く場合と動かない場合がある。調査中。。。

# 301リダイレクトする
Redirect 301 /wordpress/ http://futurismo.biz/

ちなみに、redirectionというwordpressのツールを試したが、これダメダった。

http://wordpress.org/plugins/redirection/

同一ドメイン内ならば転送してくれるが、ドメインが異なる場合は、元のURL配下に飛ばそうとする。(http;//hogehoge.com/http://uhauha.com みたいな)

その他、細かいなにか

  • ページ内リンクの置換

MySQLのデータベースを一気に置換します。phpMyAdminにログインして、エクスポート メニューからエクスポート。自分は、Backwpupでバックアップしたsqlデータを利用する。

.sqlファイルをエディタで開いて、旧URLを新URLに置換する。(1600くらい!こんなに置換して大丈夫?)

あとは、インポートからアップロードする。以下の記事も参照。

BackWPupのbackwpup_db_restore.phpが消えた!それでもリストアする場合の方法メモ | Futurismo

 

サブディレクトリ構成では、設定 -> アドレス変更では、メニューが現れなかった。ルート レベルのドメインのみに制限されている。しかたがないので、再登録した。へんなペナルティがつかないといいな。

  • はてなブックマークウィジェット再設定

http://b.hatena.ne.jp/guide/blogparts.select?type=widget

  • Googleサイト内検索の再設定
  • (カノニカルタグ)の導入

重複するコンテンツを一つのURLに統一することを、URLの正規化という。(カノニカルタグ)を挿入することで、そのサイトが検索サービスで優先的に上位にくる。

設定しようと思ったら、これはすでにAll in One SEO プラグインに含まれてた。

  • ZenBackの再設定

ZenBackからやってくるユーザ数もバカにできないので、確実に設定しておく。

 

参考

16 Jun 2013, 01:23

BackWPupのbackwpup_db_restore.phpが消えた!それでもリストアする場合の方法メモ

WordPressのバックアップには、BackWPupというプラグインを利用している。リストアが必要になったのに、サイトにアクセスしてみたら、

404 Not Found ….

な・ん・だ・と  (o´・Д・`)ノ

バックアップのツールなのに、リストアできないとは悲惨。色々調べたら、phpMyAdminからリストアする方法があるようだ。以下、方法をメモ

phpMyAdminからのSQLデータインポート方法

phpMyAdminにアクセスして、インポートを選択。

リストアしたいsqlファイルをアップロードする。あとは、デフォルト設定で実行を選択。数分で完了する。

skitch

すごい簡単ラクチン\(^o^)/。
こんなにサクッとデキるならば、backwpup_db_restore.phpはいらないね。