2012年5月29日火曜日

IPv6セミナー + Hackathon in 新潟にちょこっと参加

してきました。5月26日土曜日。

IPv6セミナー + Hackathon in 新潟(第26回) - 長岡 開発者 勉強会(NDS)

内容としては、午前はIPv6についてのセミナー、午後はIPv4/6のネットワーク環境を利用したハッカソン。 夕方からハッカソンの発表会を兼ねた懇親会というもの。

午後のハッカソンではネットワーク環境として IPv4/IPv6 のデュアルスタックな WiFi ネットワークや仮想専用サーバが提供されていて、参加者各々が自由にプログラミングしてました。(パソコン持ってきてたら使いたかった…)

この勉強会の存在を知ったのが前日の金曜だったので、私は「とりあえず午前のセミナーだけでも参加してみようかな」という感じで行ってきました。所持品はタブレット(GALAPAGOS, Android 3.2)のみ。

午前のセミナーを見たらさっさと帰ってもよかったんですが、結局ハッカソンの様子を見ようという理由をつけて午後の部にも居残りしてました。とりあえず手持ちのタブレットのブラウザでIPv6が利用できるかどうかを試してみることに。

結果は以下:
  • IPv6オンリー WiFi には接続はできるが、ブラウザの表示は出来ない
  • デュアルスタック WiFi には接続できた。
    リモート診断君v6 で確認してみると、どうやら IPv6 での接続が優先されるらしい。
    もちろん IPv4 経由での通信も可能。ホスト名が ***.ginzado.ne.jp だったことから銀座堂さん提供のネットワークだということが判明。
  • 定番(?)であろう踊るひろゆき踊るカメさんを確認。

ついでに IPv6 を利用できる Androidアプリも確認してみる:
アプリ名 IPv6 対応 備考
IPv6 and More IPv6 対応のネットワークツール
SSHDroid × SSHサーバ。IPv6に関する設定は見つからなかった。
ConnectBot SSHクライアント。端末との相性が悪いのか、IPv4 すら利用できなかった。
この辺でタブレットのバッテリーが切れてしまったので会場からログアウト。おとなしく家に帰りました。

ふっと現れてふっと消える幽霊みたいな参加者でしたが、こういう勉強会(+ハッカソン)に参加する機会があまり無かったので、雰囲気を掴むには良い機会だったのかなと思います。参加された皆さんお疲れ様でした。


追伸:昼に食べた長岡のカレーうまかったです。

2012年4月18日水曜日

xyzzyで(」・ω・)」うー!(/・ω・)/にゃー!

kaoriyaさんところのVimに這いよる混沌が楽しそうだったのでパクって参考にしてxyzzyで動作するようにしてみました。
実行させると、下の図のようにカーソルの移動ごとにモードラインが変化します。
(」・ω・)」うー!
(/・ω・)/にゃー!
Let's\(・ω・)/にゃー!

パッケージ化などしていないので、遊び終わったら一番下のS式を評価して片付けてください。


てか、半年ぶりの更新がこれだよ!



追記 (2012/04/20)

youzさんがtimer版を作ってくれました。BPM=145くらいに設定するとイイ感じです。

2011年10月8日土曜日

Win64でnewLISPをコンパイルする

newLISPのソースコードを改造して、Win64環境でコンパイルできるようしてみました。64ビットプログラミングの練習とnewlispの内部動作を調べることを目的とした個人的なビルドなので、とりあえず動く程度の出来なのは勘弁してください。基にしたnewLISPのバージョンはv.10.3.3です。
作成したバイナリはこのエントリの最下に置いておきます。GPLライセンスに則るならソースか差分パッチも公開すべきなんだろうけどどうしよう…。

パッケージに同梱しているマニュアル(doc/INSTALL)によるとnewLISPがコンパイル可能なメモリモデルはILP32とLP64のみらしく、Win64のメモリモデルであるLLP64はサポートされていない様子。 newLISPではlong型を基本として、整数もポインタも同じビット長として扱っているため、その辺も考慮してソースを改造する必要があります。

NOTE, that newLISP can only be compiled for the IPL32 and LP64 memory models.

主要なメモリモデルの違いは以下の通り:

ILP32 intとlongとポインタ型が32ビットのモデル。一般的な32ビット環境。
LP64 longとポインタ型が64ビットのモデル。64ビットLinuxではこの環境になる。
LLP64 intとlong型が32ビットで、long longとポインタ型が64ビットのモデル。別名IL32P64。

公式サイトにてWin32バイナリが配布されているのでWin64バイナリ自体にメリットは特にないんですが、将来的にWin64バイナリのコンパイルがサポートされたら幸せになれるかもしれません(主に私が)。

コンパイル環境

  • Windows7 amd64
  • MinGW-w64 - TDM-GCCをインストールした
  • CygwinまたはMSYS - tarballの解凍など、シェル環境に必要

download (Size:272kB)

2011年7月29日金曜日

newLISP v.10.3.2リリースノート翻訳

安定版となるnewLISP v.10.3.2がリリースされていたのでリリースノートをざっくりと翻訳。
newLISPダウンロードページ

とりあえず、newlisp本体とjson.lspが文字列内部のunicodeエスケープ(\unnnn)を解釈してくれるようになったこと、ココには載ってないけどget-urlのカスタムヘッダーのバグが修正されたことが嬉しい。

原文はこちら。配布ファイルのdoc/CHANGESも参照のこと。

newLISP® v.10.3.2 リリースノート

Addtions (追加機能)

  • 文字列が処理可能なクオート文字にUnicodeエンコードを追加。
    例として"\u03b1\u03b2\u03b3"はギリシャ文字"αβγ"に変換される。 この機能はUTF8版newLISPで利用できる。

Other improvements (その他改良点)

  • 自己参照リストの変更におけるエラーメッセージを改良
  • Implicit indexingのエラーメッセージを改善
  • MS Windowsのパス名に利用されるMBCS(Multi Byte Character Set)を理解するように
  • filter, index, clean, exists, for-all関数のスピードアップ
  • series関数の第2引数に関数が与えられた際の処理速度向上
  • find-all関数の第3引数が与えられた際の処理速度向上
  • map関数のメモリ管理と処理速度を改善
  • json.lspがバックスラッシュを含む文字列を処理可能になった

Bug fixes (バグフィックス)

  • filter, index, clean, exists, for-all関数における空リストの扱いを修正
  • inc,dec,++,--関数が引数チェックをしていなかったのを修正
  • dotree関数にブール引数を渡すとクラッシュする問題を修正
  • multi-lineモードにおけるバッファオーバーフローを修正
  • timer関数を再帰的に利用した際のバグを修正
  • read-line関数のEOF指示子をクリアしていなかったことによるバグを修正
  • xfer-event関数が渡す引数を転送した総バイト数から現在転送中のバイト数に変更

Compatibility (前バージョンとの互換性)

このリリースを実行するためのMac OS Xの最小バージョンはLeopard 10.5です。 このリリースはMac OS X Tiger 10.4では動作しないでしょうが、Mac OS X用の デフォルトMakefile(makefile_darwin_utf8)ではまだコンパイルが可能です。

v.10.3.0からv.10.3.2のバージョン遷移において、ほとんどのスクリプトは修正なしに動作する。
xfer-event関数の仕様が変更されたので、その点のみ注意すること。

2011年6月14日火曜日

[newLISP]cygwinでのコンパイルを通す

cygwinからnewlispをコンパイルしようとすると
nl-sock.c:2010: error: ‘ICMP6_FILTER’ undeclared (first use in this function)
と言われてコンパイルエラーが起こってしまうので、それを解決します。
  1. $CYGWIN/usr/include/netinet/icmp6.h があるかどうか確認する。あれば2.を飛ばして3.へ。
  2. GNU謹製のicmp6.hを拾ってきて1.のパスに追加する。(→icmp6.h GNU - Google 検索
    ※cygwinのインストーラに上記のヘッダがあれば尚良しですが、見つけられなかったので…
  3. 以下のパッチを参考に nl-sock.c を書き換える。
    --- nl-sock.c.orig Tue Jun 14 12:52:46 2011
    +++ nl-sock.c Tue Jun 14 12:51:30 2011
    @@ -60,6 +60,7 @@
     #endif /* end UNIX */
     
     #ifdef CYGWIN
    +#include <netinet/icmp6.h>
     #define ICMP_ECHO 8
     
     struct icmp
    
  4. コンパイルする

2011年6月10日金曜日

端末の表示崩れをなんとかする

ターミナルの表示が崩れたときの対処法 - Clouder::Bloggerより。少し改良

端末上でバイナリファイルの中身をうっかり出力させてしまってウィンドウの表示がえらいことになることが時々あったので、この解決方法はありがたいです。ただしBSD由来のshでは、echoコマンドがエスケープシーケンスを理解するためのオプション(-e)を理解してくれないので注意(ksh,zshなど他のシェルまでは分かりませんが)。

参考リンク

2011年6月8日水曜日

ユニークなURL

URLの短さとサービスのシンプルさが面白いなーと感心したサイト。若干ネタっぽいですが。
ifconfig.me
ifconfigコマンドのようなネットワーク情報(というよりブラウザ情報)を返してくれるサービス。
端末上で curl ifconfig.me と打ち込めば自分のIPアドレスが返ってくるなど、ブラウザだけでなく端末から利用する際にも重宝する。JSON, XML形式にも対応している。
jsonip.com
名前の通り、自分のIPアドレスをJSON形式で返すだけのサービス。
URLにパス名を指定するとコールバック形式のJSONが返ってくる。
http://jsonip.com/getip => getip({"ip":"72.14.203.191"});
httpstat.us
HTTPステータスコードを返すだけのサービス。
例えば httpstat.us/200 と打ちこめば 200 OK が返ってくる。