カテゴリー: プログラミング

Twitter発言をjQueryとJSONPで取得して表示してみました

投稿者:isc_blog

先日紹介したWEBサービスで使用されている「jsonp」で取得と表示を簡単に出来ないかな?と思い「Twitter」のAPIを利用してデータを取得しJSONPで表示するものを書きました。

※JSONPについては→JSONPとは

[html]
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>JSONPでTwitter発言表示してみました</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.6.0");</script>
<script type="text/javascript">
function dispTweet() {
// 一度クリアにする
$("#recent").html("");
// ユーザーアカウントのデフォルト値
var screenName = "isc_web";
// デフォルト表示件数
var count = 20;
if ($("#sname").val() != "") {
screenName = $("#sname").val();
}
if ($("#count").val() != "" && !isNaN($("#count").val())) {
count = $("#count").val();
}
var url="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=" +
screenName + "&count=" + count + "&callback=?";
$.getJSON(url , function(data){
$.each(data,function(i){
// 取得できるデータは
// http://dev.twitter.com/doc/get/statuses/user_timeline
// にて確認してください。
$("#recent").append("<li>"+this.text+"</li>"); // とりあえず記事本文のみ出力
});
});
alert("OK");
}
</script>
</head>
<body>
<strong>TwitterのつぶやきをJSONPで取得表示する</strong><br />
表示したいアカウント:<input type="text" id="sname" value="">&nbsp;
表示件数:<input type="text" id="count" value="">※デフォルト20件<br />
<input type="button" value="ツイート表示" onclick="dispTweet()">
<div id="recent"></ul>
</body>
</html>
[/html]
サンプルはこちら

即できました。
アカウントと表示件数を変更できるようにしてみました。
ちょいちょい改造すれば普通に見られる感じになります。
※あくまでも基本だけでスミマセン。

参考資料
無題メモランダム:jQueryでJSONP

2011年5月11日

プログラミング言語ってどのくらいあるのかな・・・

投稿者:isc_blog

ふと考えた・・・
プログラミング言語ってどのくらいあるのかな・・・と

そして調べたら次のサイトを発見!

プログラミング言語リンク集

まとめてくれてありがとう!

日経ソフトウェアで取り上げられていた
Scalaについても載っていたので関心しました!

チュートリアルなども一緒に掲載されているので重宝しそうです。(言語マニアとしては・・・)

2011年5月10日

スマートフォン向けアプリ開発フレームワーク

投稿者:isc_blog

先日、アシアル株式会社主催の「iPhone/Androidアプリ制作セミナー」に出てきました。
そこで習った「PhoneGap」を深めようといろいろ作ったりしています。
※発表は後日・・・(出来るかな・・・出来るといいな)

他にもこのようなフレームワークがないかと調べたところ
やっぱりまとめてくれている方がいらっしゃいました。

某開発者の独り言: スマートフォン向けアプリ開発フレームワーク

参考にさせていただきます!

※社内向け覚え書き的な・・・投稿ですみません。

「参考資料」
PhoneGap Fan:アシアル株式会社さんが運営しているサイトです。

2011年5月9日

RubyでCGI作ってみた

投稿者:isc_blog

PythonでCGI作ってみたのRuby版です。

Python版で「とっても稚拙で申し訳ない」といいつつ
稚拙なものを移植しただけで申し訳ないですが全く同じ挙動のものです。

下記を「HelloRuby.cgi」というファイル名で保存し
ウェブサーバー上にアップロード。
属性変更して実行権を与えてから・・・
※パーミッションを755にします。
webブラウザでアクセスします。

[ruby]
#!/usr/local/bin/ruby
#ヘッダ出力
print "Content-type: text/html\n\n"

#CGI 読み込み
require "cgi"
cgi = CGI.new

#リクエスト内容取得
yourName = cgi["yourName"]

#中身出力
print <<EOM
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript">
var yourName = "#{yourName}";
function init() {
if (yourName != "") {
alert("YOUR NAME IS " + yourName);
}
}
</script>
</head>
<body onload="init()">
<form action="HelloRuby.cgi">
<input type="text" name="yourName" value="" />
<p>
<input type="submit" />
<p>
</form>
</body>
</html>
EOM
[/ruby]

コードはこれだけ
実行結果はこんな感じ
HelloRuby.cgi実行結果
コード的には
1.「yourName」っていうパラメータがリクエストに存在したら
2.Javascriptでアラート表示
3.送信フォーム表示
・・・・これだけです。
※この説明も「PythonでCGI作ってみた」とおんなじですみません。

 

Pythonもそうなんだけどリクエストの取扱い方がPerlより簡単でいいなぁ!

「参考になったサイト」
Rubyはじめました:RubyでCGI.フォームデータを受けとる
cgi – Rubyリファレンスマニュアル

2011年5月8日

Ruby版 逆ピラミッドを作る

投稿者:isc_blog

java , Python で「逆ピラミッド」プログラムを書いてきましたが

今回は「Ruby」で書いてみます。

Rubyは何度か習得しようとしているんですが・・・・未だ身についてません。

ま、早速行ってみます。


# Pyramid
# @author: tasa
i = 10
for j in 0..i
puts (“*” * (i-j))
end
puts(“\n”)


これだけです。
Pythonより1行多いかな・・・
Rubyも面白そうなので深くツッコミたいと思います。

実行結果


**********
*********
********
*******
******
*****
****
***
**
*


※追伸
Twitterより返信がありました。
一行で書けるとのこと


10.downto(0){ |i| puts ‘*’ * i }


なるほど!奥が深いなぁ~

2011年5月7日

PythonでCGI作ってみた

投稿者:isc_blog

とっても稚拙で申し訳ないですが
先日覚えだしだ「Python」でCGIを組んでみました。

下記を「HelloPython.cgi」というファイル名で保存し
ウェブサーバー上にアップロード。
属性変更して実行権を与えてから・・・
※パーミッションを755にします。

webブラウザでアクセスします。


#!/usr/local/bin/python
# -*- coding:utf-8 -*-
import cgi
print “Content-type: text/html”
print
form = cgi.FieldStorage()yourName = form.getvalue(‘yourName’, ”)

print “””
<html>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″>
<script type=’text/javascript’>
var yourName = ‘%s’;
function init() {
if (yourName != ”) {
alert(‘YOUR NAME IS ‘ + yourName);
}
}
</script>
</head>
<body onload=’init()’>
<form action=’HelloPython.cgi’>
<input type=’text’ name=’yourName’ value=” />
<p>
<input type=’submit’ />
<p>
</form>
</body>
</html>””” %(yourName)


コードはこれだけ

実行結果はこんな感じ
HelloPython.cgi実行結果

コード的には
1.「yourName」っていうパラメータがリクエストに存在したら
2.Javascriptでアラート表示
3.送信フォーム表示
・・・・これだけです。

とりあえず、動く!って確認だけ。
日本語入れると「数値文字参照」になってしまいます。
それは↓ここらへんを参考に・・・・
文字参照や実体参照を通常の文字に戻す【Python】
※↑head に 文字コード指定したら直りました・・・横着してはいけませんね 2011/05/08

しかし、最近CGIはPerlやってなくてPHPばっかりだったから
属性変更してパーミッション755に変更とかすっかり忘れてたなぁ~
この辺がWindows野郎って感じですね・・・

2011年5月6日

GAEのcron設定(覚え書き)

投稿者:isc_blog

Java 用の cron を使用したスケジュール タスク

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/recache</url>
    <description>Repopulate the cache every 2 minutes</description>
    <schedule>every 2 minutes</schedule>
  </cron>
  <cron>
    <url>/weeklyreport</url>
    <description>Mail out a weekly report</description>
    <schedule>every monday of month 08:30</schedule>
    <timezone>America/New_York</timezone>
  </cron>
</cronentries>

シンプルなスケジュール指定方法(<schedule>~</schedule>内の記述
every 5 minutes
every 12 hours
2nd,third mon,wed,thu of march 17:00
every monday of month 09:00
1st monday of sep,oct,nov 17:00

さらに詳細な分岐設定もOK・・・
(“every”|ordinal) (days) “of” (monthspec) (time)
など・・・
あとはリンク先を見るべしw

2011年5月5日

PHPでMySQLのレコードに画像情報を保存するやり方

投稿者:isc_blog

PHPでMySQLへ画像格納のアップロードやり方
— テーブルは下記SQLで作成
[sql]
CREATE TABLE `img_data` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`img_bin` BLOB NOT NULL,
`mime` VARCHAR(64) NOT NULL
) ENGINE=MYISAM ;
[/sql]
格納側ソースこちら
[image_upload.php]で保存
↓↓
[php]
<?php
$host=”localhost”;
$user=”●●●●”;
$pass=”■■■■”;
$db_name=”▼▼▼▼”;
?>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<title>画像DB格納</title>
</head>
[/php]
ファイルアップロード
[php]
<form method=”POST” enctype=”multipart/form-data” action=”image_upload.php”>
<input type=”hidden” name=”MAX_FILE_SIZE” value=”3145728″><!–BLOB型の限界–>
画像ファイル選択:<input size=”30″ type=”file” name=”upfile”>
<input type=”submit” name=”submit” value=”送信”>
</form>
<?php
if($_POST["submit"]!=”"){ // 送信された場合のみ
if($_FILES["upfile"]["tmp_name"]==”none”){
print(“ファイルのアップロードができませんでした。\n”);
exit;
}
$fp=fopen($_FILES["upfile"]["tmp_name"], “rb”);
if(!$fp){
print(“アップロードしたファイルを開けませんでした”);
exit;
}
$imgdat=fread($fp, filesize($_FILES["upfile"]["tmp_name"]));
fclose($fp);
print(“ファイルサイズ:$_FILES["upfile"]["size"]\n”);
$len=strlen($imgdat);
print(“データ長=$len”);
$data=pathinfo($_FILES["upfile"]["name"]);
$ext=$data[‘extension’]; //拡張子
// 拡張子判定
if($ext==”jpg” || $ext==”jpeg”){
$mime=”image/jpeg”;
} else if($ext==”gif”){
$mime=”image/gif”;
} else {
print(“画像ファイルのみアップロード可能です。”);
exit;
}
print(“MIME-TYPE:”.$mime.”");
$imgdat=addslashes($imgdat);
$con=mysql_connect($host, $user, $pass);
if(!$con){
print(“MySQLへの接続に失敗しました”);
exit;
}
if(!mysql_select_db($db_name)){
print(“データベースへの接続に失敗しました”);
exit;
}
$sql=”INSERT INTO img_data(img_bin, mime) values(‘$imgdat’, ‘$mime’)”;
$result=mysql_query($sql);
if(!$result){
print(“SQLの実行に失敗しました”);
print(mysql_errno().”: “.mysql_error().”");
exit;
}
$sql=”select max(id) from img_data “;
$result=mysql_query($sql);
if(!$result){
print(“SQLの実行に失敗しました”);
print(mysql_errno().”: “.mysql_error().”");
exit;
}
$row=mysql_fetch_row($result);
$current_id=$row[0];
mysql_close($con);
unlink($_FILES["upfile"]["tmp_name"]);
}
?>
<div>
登録画像ID:<?php echo $current_id; ?>
<img src=”view.php?id=<?php echo $current_id?>” />
</div>
</BODY>
</HTML>
[/php]
表示側ソースこちら
[view.php]で保存
↓↓
[php]
<?php
$host=”localhost”;
$user=”●●●●”;
$pass=”■■■■”;
$db_name=”▼▼▼▼”;
$id=intval($_GET[‘id’]);
$con=mysql_connect($host, $user, $pass);
if(!$con){
print(“MySQLへの接続に失敗しました”);
exit;
}
if(!mysql_select_db($db_name)){
print(“データベースへの接続に失敗しました”);
exit;
}
$sql=”select img_bin from img_data where id=$id”;
$result=mysql_query($sql);
if(!$result){
print(“SQLの実行に失敗しました
“);
print(mysql_errno().”: “.mysql_error().”
“);
exit;
}
if(mysql_num_rows($result)==0){
$sql=”select img_bin, mime from img_data where id=1″;
$result=mysql_query($sql);
if(!$result){
print(“SQLの実行に失敗しました
“);
print(mysql_errno().”: “.mysql_error().”
“);
exit;
}
}
$row=mysql_fetch_row($result);
header(“Content-Type: “.$mime);
echo $row[0];
mysql_close($con);
?>
[/php]
テストサイトを作って・・・・
と思いましたが、変な画像を差し込まれると厳しいものがあるので自粛しました。
コード中のセキュリティに関する配慮は各自お願いします。

2011年5月4日