[プログラム]の検索結果
ユーザーローカルが提供しているWikipediaの記述の一部を取得できる
Web APIを、
Perlから呼び出すためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。#!/usr/bin/
Perluse strict;us...
ユーザーローカルが提供しているWikipediaの記述の一部を取得できるWeb APIを、Perlから呼び出す
ためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。
#!/usr/bin/perl
use strict;
use warnings;
# for warning "Wide character in print at ..."
binmode(STDOUT, ":utf8");
use URI::Escape;
use LWP::Simple;
use XML::Simple;
my $item = '2ちゃんねる';
$item = uri_escape($item);
my $url = "http://wikipedia.simpleapi.net/api?keyword=$item";
my $content = get($url);
my $xml = XML::Simple->new();
my $response = $xml->XMLin($content);
print "language: $response->{result}->{language}\n";
print "datetime: $response->{result}->{datetime}\n";
print "body : $response->{result}->{body}\n";
print "strict : $response->{result}->{strict}\n";
print "length : $response->{result}->{length}\n";
print "redirect: $response->{result}->{redirect}\n";
print "url : $response->{result}->{url}\n";
print "id : $response->{result}->{id}\n";
print "title : $response->{result}->{title}\n";
まず、今回の
クイズの
しりとりに勝つため私が考えた作戦は、相手(コンピュータ)に、先頭に使用されているより末尾に使用されている数が多いアルファベットの単語から選ばせるようにすれば、そのうち相手が手詰まり...
まず、今回のクイズのしりとりに勝つため私が考えた作戦は、相手(コンピュータ)に、先頭に使用されているより末尾に使用されている数が多いアルファベットの単語から選ばせるようにすれば、そのうち相手が手詰まりになって勝てるだろうというものでした。
そのため、選択肢となる単語に使用されている先頭のアルファベットと末尾のアルファベットの数を調べるためのプログラムを作成し、その結果をもとに以下の優先順位で回答を選択していきました。
1.単語の末尾が先頭の方が少ないアルファベットのもの
2.単語の末尾が先頭と末尾で同じアルファベットのもの
3.単語の末尾が先頭の方が多いアルファベットのもの
例えばLv3の場合、以下のような結果になるので、提示される選択肢の中からできるだけ末尾が、b、f、g、i、k、q、s、u、v、wのものを選択していけば良いということになります。
a : 14 11 >>
b : 11 12 <<!
c : 4 4 ==
e : 4 4 ==
f : 11 12 <<!
g : 11 12 <<!
h : 4 4 ==
i : 4 5 <<!
j : 14 11 >>
k : 11 12 <<!
l : 3 3 ==
m : 4 4 ==
n : 3 3 ==
o : 14 11 >>
p : 4 4 ==
q : 11 12 <<!
r : 3 3 ==
s : 11 12 <<!
t : 4 4 ==
u : 11 12 <<!
v : 11 12 <<!
w : 11 12 <<!
y : 4 4 ==
z : 5 4 >>
--- siritori.pl
#!/usr/bin/perl
#
# GDD 2010 DevQuiz しりとり
#
use strict;
use warnings;
my %alpha_head = ();
my %alpha_tail = ();
open my $infh, '<', "siritori.txt";
while (my $word = <$infh>) {
chomp $word;
my $head = substr($word, 0, 1);
my $tail = substr($word, length($word) - 1, 1);
$alpha_head{$head}++;
$alpha_tail{$tail}++;
}
close $infh;
foreach my $key (sort keys %alpha_head) {
print "$key :" . sprintf("%4d", $alpha_head{$key});
print " " . sprintf("%4d", $alpha_tail{$key});
if ($alpha_head{$key} < $alpha_tail{$key}) {
print " <<!\n";
}
elsif ($alpha_head{$key} > $alpha_tail{$key}) {
print " <<\n";
}
else {
print " ==\n";
}
}
「
Google Developer Day 2010 Japan」への参加証を獲得するための
クイズ「DevQuiz」をやってみました。結果はラウンド3のしりとりLv3までクリアして時間切れ終了でした。「パックマン」は難しかったですね。結局、仕...
「Google Developer Day 2010 Japan」への参加証を獲得するためのクイズ「DevQuiz」をやってみました。結果はラウンド3のしりとりLv3までクリアして時間切れ終了でした。「パックマン」は難しかったですね。結局、仕様もいまいち理解できてない状態でプログラムを作ってる途中で時間切れになってしまいました。
Twitterを見ると解いている人もいるみたいですが・・・
#gdd2010jp
なんにせよ、クイズにとりかかったのが20日の夜というのは遅すぎました。パックマンの難易度から考えると問題が発表された時点ですぐに始めないとダメな感じですね。次回の教訓にします。
DevQuiz の詳細
Google Developer Day 2010 Japan 公式サイト
@googledevjp on Twitter
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。あらかじめ
PHPMyAdminを使用して
MySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3...
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPHPプログラム(文字コードはUTF-8)では、テーブル「users」からレコードを全て取得しHTMLページとして出力しています。
--- mysql_connect.php ---
<html>
<head>
<title>PHPでMySQLに接続するサンプルプログラム</title>
</head>
<body>
<?php
$domain = "localhost";
$user = "test";
$password = "abcd12";
$dbname = "testdb";
// MySQLに接続
$dbconnect = mysql_connect($domain, $user, $password)
or die(mysql_error());
mysql_select_db($dbname, $dbconnect)
or die(mysql_error());
$sql = "SELECT * FROM users";
// クエリの実行
$result = mysql_query($sql, $dbconnect);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 結果セットの行数を取得
$rows = mysql_num_rows($result);
echo $rows . '件のレコード<br />';
echo '<br />';
// 結果セットを表示
while ($row = mysql_fetch_assoc($result)) {
echo $row['userid'] . '<br />';
echo $row['username'] . '<br />';
echo $row['mailaddr'] . '<br />';
echo $row['hpurl'] . '<br />';
echo '<br />';
}
mysql_free_result($result);
mysql_close($dbconnect);
?>
</body>
</html>
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。以下のプログラムはL...
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、
プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。
以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを
変換する場合の手順を示したサンプルプログラムです。
--- tst_iconv.c ---
#include <stdio.h>
#include <iconv.h>
#define BUFSIZE 1024
char outbuf[BUFSIZE];
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize);
main(void)
{
int ret;
ret = convert("SHIFT-JIS", "UTF-8",
"日本語テストメッセージおはよう",
outbuf, sizeof(outbuf));
if (ret) {
printf("%s\n", outbuf);
}
else {
printf("Oops!\n");
}
}
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize)
{
iconv_t cd;
size_t srclen, destlen;
size_t ret;
cd = iconv_open(dest, src);
if (cd == (iconv_t)-1) {
perror("iconv open");
return 0;
}
srclen = strlen(text);
destlen = bufsize - 1;
memset(buf, '\0', bufsize);
ret = iconv(cd, &text, &srclen, &buf, &destlen);
if (ret == -1) {
perror("iconv");
return 0;
}
iconv_close(cd);
return 1;
}
コンパイル方法
$ gcc -o tst_iconv tst_iconv.c -liconv
ICONV
Perlのプログラムから
DBI経由で
MySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用して
MySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「user...
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。
検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。
--- mysql_select.pl ---
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード
my $status = 1;
my @recs = ();
eval {
my $dbh = DBI->connect($data_source, $username, $password,
{RaiseError => 1, PrintError => 0});
my $sql = "select * from users where status = ?";
my $sth = $dbh->prepare($sql);
$sth->execute($status);
while (my @rec = $sth->fetchrow_array) {
push @recs, [@rec];
}
$sth->finish;
$dbh->disconnect;
};
if ($@) {
print "Error : $@\n";
}
foreach my $rec (@recs) {
print join(",", @{$rec}), "\n";
}
メールフォーム
CGI、Q&A
CGI、ブックマーク
CGIをそれぞれ
バージョンアップしました。HTML::Templateを使用してUIの部分をできるだけプログラムから取り除き、テンプレートファイルで記述するように変更しました。これ...
メールフォームCGI、Q&A CGI、ブックマークCGIをそれぞれバージョンアップしました。
HTML::Templateを使用してUIの部分をできるだけプログラムから取り除き、テンプレートファイルで記述するように変更しました。これによってページデザインのカスタマイズがより簡単になると思われます。
なお、機能については特に変更はありません。
メールフォームCGI
Q&A CGI
ブックマークCGI
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配...
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配列リファレンス)を渡すと、リスト分の出力が繰り返されます。
以下は、<TMPL_LOOP>タグの使い方を示すサンプルプログラムです。サンプルプログラムでは、コンマで区切られたデータファイルを読み込んでリストを作成し、それをパラメータに渡してテーブルを表示しています。また、<TMPL_IF>タグ、<TMPL_ELSE>タグを使用してデータがない場合は、テーブルが出力されないようにしています。
--- データファイル(userdata.txt)
kagahiro,kitaakita,kagahiro3@59log.com,011678901
admin,tokyo,webmaster10@59log.com,011778901
buzei,kawasaki,support2@59bbs.org,041758901
--- テンプレートファイル(tmplloop.tmpl)
<html>
<head>
<title>HTML::Templateのサンプルプログラム LOOP</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム LOOP</h1>
<TMPL_IF NAME=DATA_NUM>
<table>
<tr>
<td>User Name</td>
<td>Address</td>
<td>Email</td>
<td>Tel</td>
</tr>
<TMPL_LOOP NAME=USER_INFO>
<tr>
<td><TMPL_VAR NAME=USERNAME></td>
<td><TMPL_VAR NAME=ADDRESS></td>
<td><TMPL_VAR NAME=EMAIL></td>
<td><TMPL_VAR NAME=TEL></td>
</tr>
</TMPL_LOOP>
</table>
<TMPL_ELSE>
No data
</TMPL_IF>
</body>
</html>
--- CGI(tmplloop.cgi)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template = HTML::Template->new(filename => 'tmplloop.tmpl');
my @loop_data = ();
open my $infh, '<', "userdata.txt";
while (my $rec = <$infh>) {
chomp $rec;
if ($rec ne '') {
my %row_data;
my ($username, $address, $email, $tel) = split(/,/, $rec);
$row_data{USERNAME} = $username;
$row_data{ADDRESS} = $address;
$row_data{EMAIL} = $email;
$row_data{TEL} = $tel;
push @loop_data, \%row_data;
}
}
close $infh;
$template->param(USER_INFO => \@loop_data);
$template->param(DATA_NUM => scalar(@loop_data));
print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;
HTML::
Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。以下は、<TMPL_VAR>タグの使い方を示す...
HTML::Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、
タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。
以下は、<TMPL_VAR>タグの使い方を示す単純なサンプルプログラムです。
--- テンプレートファイル(tmplvar.tmpl)
<html>
<head>
<title>HTML::Templateのサンプルプログラム VAR</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム VAR</h1>
<p>
My Name is <TMPL_VAR NAME=NAME> <br />
My IP Address is <TMPL_VAR NAME=IPADDR> <br />
</p>
</body>
</html>
--- CGI(tmplvar.cgi)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template = HTML::Template->new(filename => 'tmplvar.tmpl');
$template->param(NAME => 'Yamato, Taro');
$template->param(IPADDR => $ENV{'REMOTE_ADDR'});
print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;
Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能な
テンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。また、テンプ...
Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能なテンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。
また、テンプレートファイル内の変数置換だけでなく、テンプレートの中にTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能。
The Template Toolkit is a fast, flexible and highly extensible template processing system.
It is Free (in both senses: free beer and free speech), Open Source software and runs on virtually every modern operating system known to man.
It is mature, reliable and well documented, and is used to generate content for countless web sites ranging from the very small to the very large.
Template Toolkit Home Page
Template Toolkit Manual -テンプレートツールキット和訳マニュアル-
Template Toolkit Manual(英語)
Perl Template Toolkit
Oreilly & Associates Inc 著者:Darren Chamberlain,David Cross,Andy Wardley 価格:3,294円
powered by
amalink
|< 先頭へ < 前へ 3 4 5 6 7 次へ >
アクセスランキング
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (12 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3 PV)
- MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (2 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (1 PV)
- Webクリエーション・アウォード(WCA) (1 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (1 PV)
- 低レバレッジでドル円ロング、安全性最優先のMT4向けの無料EA「DOLLON(ドロン)」 (1 PV)
- [FX]MT4(メタトレーダー4)が使える国内FX業者 #口座開設 (1 PV)
- Google Web Designer (1 PV)
- サーバーの引越し (1 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (153 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (22 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (20 PV)
- Google News (グーグルニュース)日本版 (19 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (15 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (14 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (11 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (10 PV)
- 裁量トレードを自動化する裁量補助EA「AutoScalper Demo」 (7 PV)
- 無料の決済支援ツール「PositionKeeper」を使って楽々半自動スキャルピング #MT4 #MT5 (7 PV)
アクセス統計
ディレクトリ
関連サイト