自作ソフト

友達に作れと言われたので夢小説用のCGIプログラムを作った。

Posted on Updated on

「名前を入れてください:」って出てきて自分の名前が登場人物として出てくる、夢小説、ドリーム小説というものがあるらしいが、仕組みをとりあえず作ってみた。

夢小説のためのCGIプログラム:Dream Selector ←ダウンロードはこちら

ソフトウェア種別 フリーソフトウェア
条件等 無保証、サポート無し、商用利用可
言語 Perl
再配布の可否 再配布、改変後の再配布を許可

 

一部、というかかなり、KENTさんのサブルーチンを利用ささてもらっています。あわせて、kentさんのCGIスクリプト利用規定の遵守をお願いします。

また、フリーソフトですので完全に自己責任となっています。どのような損害を利用者(あなた)や、観覧者(あなたのサイトを見る人)が負ったとしても、プログラムの作者みすりるは責任を全く負いません。要は自己責任です。設置に関すること以外に質問がある場合はコメント欄をご利用ください。

追記:2012年2月13日

夢小説を作るには、大きく分けて2つの方法があると思います。見ているコンピューターに処理させる方法と、データを送信するサーバーが処理する方法です。主に前者はJavaScript等が使われますし、後者はCGI等で実現できます。前者の良い所ではどんなサーバーでも動かせるということです。しかし、携帯電話等一部の環境では動作しない場合があります。

それで、後者の方法が使われます。今回提供するプログラムは、この、サーバーで処理する方法を利用しています。後者のものは設置がやや面倒くさかったりするかもしれませんが、携帯電話でも見ることができますし、リンクを保存しておけばいつまでもその結果を見ることが出来るという良い点があります。

(追記終了)

zipの内部:

  • dream.cgi 本体。 パーミッション755にしてください。
  • readme.html いろいろ書いてます。読んでください。
  • data/test.txt テスト用ファイルです。

ちなみに、小説ファイルはエンコードがutf-8のテキストファイルで保存してください。!you!と打った部分が名前に置き換わります。

夢小説を実際に見る場合

dream.cgi?look=ファイル名(.txtは不要)&title=タイトル

で見ることが出来るようになります。

サンプル

動作サンプルはこちらです。この時、data/test.txtを参照しています。

dream.cgi?look=test&title=動作サンプル

「Winキー+R→tweet 内容」でツイートできるPerlスクリプト群

Posted on Updated on

qfolrovr

今回は、TweetするPerlスクリプトをちょっと改良して、ツイートしてくれるだけのしょっぱい機能をつくってみた。

 

かなりこちらのページのものを参考にしました。

Perl製Twitter BotにOAuth認証で投稿させる/楽:技林ブログ

導入

こちらのページのようにNet:Twitter:Liteを導入する。Windows環境の場合は

ppm install Net::Twitter::Lite

こちらのほうが簡単みたい。

次に、先ほどのページのポイント2と同様にhttp://dev.twitter.com/こちらのページにアクセスし、Consumer_key, Consumer_secret, ACCESS_TOKEN, ACCESS_TOKEN_SECRETを取得。このとき、ACCESS TOKENの設定においてRead and writeの権限をきちんと選択しておくこと。

以下Perlファイル(.pl)(参考:Perl製Twitter BotにOAuth認証で投稿させる

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Encode;

use Net::Twitter::Lite;

my $defa;

 

if(!defined($ARGV[0])) {
    print "No Status Message\n";
    exit 1;
}

foreach(@ARGV) {
    if(!defined($defa)) {$defa=$_;}
    else {$defa.=" $_";}
}

# http://dev.twitter.com/apps/XXXXXX で取得できるやつ

my %CONSUMER_TOKENS = (
    consumer_key    => ‘—consumer_key—‘,
    consumer_secret => ‘—consumer_secret—‘,
);

# http://dev.twitter.com/apps/XXXXXX/my_token で取得できるやつ
my $ACCESS_TOKEN        = ‘—access_token—‘;
my $ACCESS_TOKEN_SECRET = ‘—access_token_secret—‘;

# constructs a "Net::Twitter::Lite" object
my $t = Net::Twitter::Lite->new(%CONSUMER_TOKENS);

# トークンをセットする
$t->access_token($ACCESS_TOKEN);
$t->access_token_secret($ACCESS_TOKEN_SECRET);

#$encoder->decode($defa);
#$encoder->encode($defa);

# 投稿
$t->update({ status => decode ‘sjis’, $defa });

また、実際にこれを実行する場合にはActive PerlCygwinのパッケージなどに同梱されてあるPerl.exeと、このスクリプト自体のパスが通っていなければなりません。

パスの設定を汚くするのは個人的に好きではなかったので、別途バッチファイルを作ってパスを手動で通した後に上記スクリプトを実行するようにしました。以下はその一例です。

以下Batchファイル(.cmd)

ただし、
Perl.exeのあるフォルダがC:\Perl64\bin,
上記PerlファイルがC:\Software\upd_tweet.pl

@echo off

set path=%path%;C:\Perl64\bin

perl C:\Software\upd_tweet.pl %*

これをWindowsフォルダ等にtweet.cmdなどのファイル名で置くとこの機能が利用できるようになります。

 

使用例:

tweet ハラショーテスト

結果→ハラショーテスト

注意:tweetの次には半角スペースにしてください。

Perlで作っている自作RPGとかの続報

Posted on

こんにちは。

 

現在のAdvQuestの段階はこんなところ。さぼってた((

  • 完了:アイテムの生成
  • 完了:アイテムのリサイクル機能
  • 着手:アイテム表示を改良
  • 予定:アイテムの内部的選択処理
  • 予定:エンカウント
  • 予定:敵地の機能

 

予定としては、アイテムの表示を次に頑張りたいと思う。アイテムの表示は、もうちょっといくつでも表示できるような仕組みをつくりたい。

また、現状アイテムの選択処理が不確実(他の人に書き換えられたら、別のものを選択してしまう仕様)であるので、もうちょっと改良の余地があるかなぁと。

その次に予定されているのがエンカウントとか、フィールドとしての当たり前の機能なので、まあ、がんばろうw