2013年4月9日火曜日

newLISP for Windows x64

年明けに言っていた、Win64向けに対応させたnewLISPのソースコードとバイナリを試験的に公開してみます。ライセンスは配布元と同じくGPLv3です。

newLISP for Windows x64

また、最近になって本家の v.10.4.7 からWin64をサポートする動きが見られるため、それが叶ってしまえばこのページはお役御免ということになります(参考)。

2013年2月4日月曜日

英数字を180度回転した文字を表示

twitter→ɹəʇʇɪʍʇのように英数字を180度回転して表示する方法 という記事を見かけたのでxyzzyに移植してみました。ネタ被ってないよね?

やってることはROT13などと同じで、連想リストを利用した単純な文字の相互変換です。 ただし、xyzzyではバッファに出力すると化けてしまう文字が幾つかあるので、その辺は適当に作ってます。

おまけとして、Emacsから移植したzone.lと組み合わせたコードも載せてあります。下の実行例を見てみると、なぜか特定の文字が変換されなかったりするようですが…。まあ書き捨てのコードですので勘弁してください。

newLISP版もあります。こっちはUnicode文字列を直接扱えるので若干コードがさっぱりしてます。

使い方

  • M-x: flippy - ミニバッファに入力した文字がステータスラインに反転して表示される
  • M-x: flippy-region - リージョンに対してFlippyを実行する

2013年1月19日土曜日

あけまして

おめでとうございます。一月がもう三週間経ったとか信じたくないわー…。

去年のことを振り返ってみると、ほとんど外に出て活動しなかったなあと反省する次第ですね。

とりあえず、newLISPのソースコードをおもちゃにして遊んでいるのに区切りをつけて、どこかに纏めて公開したい。というのが当面の目標です。

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関数の仕様が変更されたので、その点のみ注意すること。