アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2017年01月09日

python備忘録17(ファンブログにソースコードを綺麗に表示)

ブログ内に

>>> print "Hello World"
Hello World



ソースコードを綺麗に表記することが

できるのですが、以下のサイトでは、

http://syntax2html.erp2py.com/

使用した言語とソースコードを入力するだけで、

自動で綺麗にHTML化してくれます。

すぐれものです^^

私の過去のソースコードについても、

順次、こちらを使って綺麗にしていくことを

予定しております。


posted by リサイクル夏夏 at 15:27| python

2016年02月29日

python備忘録15(pythonとopencvによる録画プログラム)

インターバル撮影については

たくさんの公開プログラムから拾うことができますが、

インターバル動画撮影については

ありません。

そこで、自分でつくってみました。

まずは、プログラムを開始すると

10秒間録画するプログラムを以下にpythonで作成しました。

動作環境はUbuntu14.04LTSです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cv2
import sys
import os
from time import time

# CV_FOURCC('D','I','B',' ') = 無圧縮
# CV_FOURCC('P','I','M','1') = MPEG-1 codec
# CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)
# CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
# CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
# CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
# CV_FOURCC('U', '2', '6', '3') = H263 codec
# CV_FOURCC('I', '2', '6', '3') = H263I codec
# CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

#時間を取得
d=datetime.datetime.now().isoformat()
filerename=str(d)+'.avi'

cameraCapture = cv2.VideoCapture(0)
fps = 30
size = (int(cameraCapture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
int(cameraCapture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
videoWriter = cv2.VideoWriter('output.avi', cv2.cv.CV_FOURCC('D', 'I', 'V', 'X'), fps, size)


start=time()
while (cameraCapture.isOpened()):
  ret, frame = cameraCapture.read()

if ret == True:

# 画面表示
cv2.imshow('frame', frame)

# 圧縮
frame = cv2.resize(frame, (640, 480))

# 書き込み
videoWriter.write(frame)

# キー待ち
if cv2.waitKey(1) & 0xFF == ord('q'):
break

end=time()
if end-start >= 10:
break
else:
break
os.rename('output.avi','%s'%(filerename))

# 後処理
cameraCapture.release()
videoWriter.release()
cv2.destroyAllWindows()



一応、十秒間の録画後に、ファイル名を開始時間に改名する内容です。

あとは、crontabを用いて、必要とする時間にプログラムを起動するように

設定することで、

例) 朝6時から夕方6時まで、毎時10分間の録画を毎日繰り返すという設定も可能です。

このプログラムを作ろうと思った切っ掛けは、

こちらのHPです。外国人のアイデアはユニークだなー^^。


posted by リサイクル夏夏 at 21:15| python

2016年02月02日

python備忘録14(FanBlogはpythonに対応していない)

pythonのインストールされたサーバーでは

先日のプログラムが動きますが、

そうでない場合は

ファイル最適は算出されません。

ご了承下さい。

posted by リサイクル夏夏 at 22:08| python

python備忘録13(最適ファイルを選択する 自分では考えられない…)

ナップサック問題の疑似として

つぎのような入力フォームをcgiで試作しました。

各ファイル容量を入力:









posted by リサイクル夏夏 at 21:57| python

2016年01月24日

python備忘録12(ナップサック問題)

皆さんは

ナップサック問題というのを

ご存知でしょうか?

私は、去年ころ、

pythonの勉強会に参加した際に

知りました^^

ナップサック問題というのは、
「容量 C のナップサックが一つと、n 種類の品物(各々、価値 pi, 容積 ci)が与えられたとき、ナップサックの容量 C を超えない範囲でいくつかの品物をナップサックに詰め、ナップサックに入れた品物の価値の和を最大化するにはどの品物を選べばよいか」 by wiki
です。

とっくに忘れていたのですが、

職場の仲間が、
「こんなにたくさんのファイルをメールで送らなきゃいけないんだけど、
相手のメールサーバーが一度に5MBまでしか受け取れないんだ。
できるだけメールの数を少なくしたいんだけど…」
とぼやいたのが

きっかけで、

頭の片隅にあったこのナップサック問題を

思い出したのが今回の始まりでした。

pythonのpulpというライブラリをインストールしてインポートすることで、

あっという間に解けてしまうのですが、

自分でアルゴリズムをつくるとなると

かなり難しいです。


pulpを使用した例としては、

#10個ある45〜3200KBまでのファイル
s=[45,160,700,1500,3200,2100,489,499,800,430]

# その中から5MB(5000KB)に収まるグループを選ぶべく最大収量を指定する
c=5000

# pulpライブラリをインポートする
from pulp import *

# sに収容したファイルが何個あるか計数し、後述の繰り返しのためのrangeにrnとしてその数を収容する。
rn = range(len(s))

# モデル準備
m = LpProblem('knapsack', LpMaximize)

# 変数(i番目のファイルをいれるかどうかの0/1)
v = [LpVariable('v%d' % i, cat = LpBinary) for i in rn]

# 目的関数
m += lpDot(s, v)

# 制約
m += lpDot(s, v) <= C

# 解く
m.solve()

# 出力
print(LpStatus[m.status], sum(s[i] * value(v[i]) for i in rn))
print([s[i] for i in rn if value(v[i]) > 0.5])

('Optimal', 4994.0)
[45, 160, 700, 1500, 2100, 489]


と、上記6個のファイルを選ぶのが最適と

教えてくれます。

世の中は便利になったなり…。
Knapsack.png
wikiより
posted by リサイクル夏夏 at 19:10| python

2015年01月10日

python備忘録11(スマホのGPSデータをサーバーに送信)

「2.受信者であるサーバ側でプログラムを起動」を達成するためには

以下のプログラムをサーバ内に作成し、拡張子cgiとして保存します。

(ファイル名.cgi)
# coding: utf-8

import cgi
import time
import cgitb
cgitb.enable()

form = cgi.FieldStorage()
if form.getvalue('Time'):
 data_0=form.getvalue('Time')
 data_1=form.getvalue('Latitude')
 data_2=form.getvalue('Longitude')

 test_file=open('/サーバURL/gpsdata.txt','a')
 test_file.write(str(data_0)+','+str(data_1)+','+str(data_2)+'\n')
 test_file.flush()
 test_file.close()


これで、とりあえずサーバ内に

GPSデータを蓄積していくテキストファイルができあがり、

そのテキストファイルにアクセスすることで、

GPSログをネット上で確認

できるようになります。


でも、要注意!!!

結局、作成したページをパスワードなりでアクセス制限しない限り、

だれでも見ることができてしまいます。


色々考えると、すでに世にあるアプリの方が、

セキュリティ的には安全かもしれませんふらふら
posted by リサイクル夏夏 at 13:10| python

2015年01月04日

python備忘録10(スマホのGPSデータをサーバーで受信する)

前回のpython備忘録7の続きです。

「1.送信者であるスマホ側でプログラムを起動」を達成するためには。


1)スマホにSL4Aアプリをインストールし、さらにpythonを利用できるようにする。

 SL4Aについてはここをを参考にしました。
 とてもわかりやすい説明です。

2)SL4Aを起動し、「gpslog.py」というプログラムファイルを作成。

3)SL4A上でpythonを立ち上げ、編集により以下のプログラムを入力し、起動させる
import android
import time
import urllib

while True:
 droid = android.Android()
 droid.startLocating(60000,10)
 time.sleep(60)
 log = droid.readLocation().result
 log_network = log[u'network']
 log_time = log_network[u'network']
 log_latitude = log_network[u'latitude']
 log_longtitude = log_network[u'longtitude']

 url = 'http://ここに御自身のサーバの受信プログラムを記述したcgiのurlを記述する(受信プログラムはpython備忘録9にて紹介予定)'

 pstData = {'Time':log_time, 'Latitude':log_latitude, 'Longtitude':log_longtitude}
 params = urllib.urlencode(postData)
 print urllib.urlencode(postData)
 droid.stopLocating()
 time.sleep(840)


以上で完成です。途中の数字は時間であり、ご自由に大小できます。
このプログラムでは、約15分毎に時刻、緯度、経度をスマホから入手し、
自分のサーバに自動POST送信します。
なお、緯度経度は、電波塔から得る値です。GPS機能は使いません。
何故なら電池の消耗が早いので。
GPSを受信し、その緯度経度を送信したい場合は、log_networkを変更する必要があります。
ここでは紹介しません(すみません)。
また、時刻はUNIX時間となります。西暦に変換する方法は多々ありますので、
ご自由に変換下さい。

実際に私のサーバで受信した際の状況は以下のようになります。
Screenshot from 2015-01-04 18:35:11.png

最新のデータが表示され、過去のデータは
GPSログのリンクをクリックすると見られるようになっています。

次回はサーバ側のプログラムを備忘録として紹介します。

There is nothing to regret in my life.(我が生涯に一片の悔いなし)
posted by リサイクル夏夏 at 17:20| python

python備忘録9(スマホからサーバーへの自動送信)

スマホのGPS機能って、

本当に便利ですね。


道に迷った時には、

地図アプリを使って、すぐに今の場所を確認できます。

バスツアー中に、渋滞に巻き込まれても、

どこで留まっているのかわかります。

また、ログを録っておくこともできます。


でも、ログをいちいちPCに移行して

確認するのは面倒臭い。

何か他に方法はないのかとアプリを探してみると

色々ございました。


例えば、自動的に位置情報を入手して、

サーバにPOST送信し、

定期的にログをセーブする。


でも、このようなアプリは、

基本的にアプリ開発者のサーバに送信するので、

他人であるサーバ管理者が、

私の位置情報を、確認できるということになります。

むむむ・・・。

まあ、私の場合、googleマップを利用してますので、

とっくにgoogle社には、私の位置情報が送信されてます。

今更気にすることもないのですが・・・。


まあ、なんとなく不安や嫌悪の感があるので、

自分のサーバに位置情報を自動送信するプログラムを

作ってみました。


このプログラムは2部構成です。
1.送信者であるスマホ側でプログラムを起動
2.受信者であるサーバ側でプログラムを起動

少し長文になりましたので、

このブログはここまでにします。


次回、実際のプログラムを掲載します。


Human body temperature is thirty six degrees centigrade. (人の体温は36℃である)

posted by リサイクル夏夏 at 09:25| python

2015年01月02日

python備忘録8(ADVゲームを製作中)

pythonを用いて

ゲームプログラミングに着手してから

すでに2年近く経ちました。

まだ半分にも達していません・・・・。


趣味にと始めたプログラミングですが、

ゲーム作りは大変ですね

これまで何気に楽しんでいたゲームですが、

今は、世の中の全てのゲーム作成者に対し、

尊敬の念を抱いております。うーん、リスペクト。


というのも、ゲームの要素は多岐にわたってます。

プログラミング以外に、シナリオ、キャラクターデザイン、そしてBGMが必要です。

まあ、BGMは必要とまではいかないですが、演出を盛り上げるために不可欠です。


これらを、一人で作成してます。すっごい大変です。

ゲームのエンドロールでは、たくさんの人達が出てきますが、

これまでは、「本当にこんなにたくさんの人が関与しているんだろうか?」と

思っておりました。

間違いなく関与していると思うようになりました。


ゲームは、芸術と電子技術をまとめあげた集大成品です!!!

私のゲームは、果たして完成するのか・・・・


開発中のゲーム画面と、作成したサイコロのデザインを

ここに掲載しておきます。いつか、完成品した時の思い出として。

サイコロイメージは私がGIMPで作成したものです。
著作権フリーですので、ご自由にご利用下さい。
Screenshot from 2015-01-02 22:33:58.png

sai_1.pngsai_2.pngsai_3.pngsai_4.pngsai_5.pngsai_6.png


posted by リサイクル夏夏 at 22:20| python

2014年07月13日

python備忘録7(pythonでもcgiの拡張子)

xrea.comの無料サーバを用いて
自作のプログラムがうごくHPを作成中です。

cgiという技術を用いるのですが
私の場合、pythonを使うので
プログラムを記入したファイルの拡張子を.pyにしていたのですが
ブラウザでアクセスしてもプログラムは動きませんでした。

調べたところ、拡張子を.cgiにすることで、解決できました。
posted by リサイクル夏夏 at 14:23| python
検索
プロフィール
リサイクル夏夏さんの画像
リサイクル夏夏
仕事一筋の人生もいいけれど、趣味がたくさんある人生も素敵だよね。
プロフィール

私が見た動画紹介コーナー

イントロが素敵です

リンク集
<< 2024年01月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
カテゴリアーカイブ
写真ギャラリー
最新コメント
×

この広告は30日以上新しい記事の更新がないブログに表示されております。