水やりお知らせプログラム構想

実は今作りたい(使いたい?)コードがあったりします
題して[水やりお知らせプログラム]
私は観葉植物を育ててるんですけど水やりは1週間に1値度程度で良いし
肥料は1〜2ヶ月に1回でいいので水やりも肥料もあげる事を
忘れるかあげすぎるかになってしまうのです
家のカレンダーにマルつけて〜云々ってことも考えられる訳ですが
ここは折角なので何かプログラムなどで自作したいなって思っています
方法はいろいろ考えられるのですが私が今考えいるのは
1.タイマーを使う
タイマーを使って一定の時間(一週間とか)が経過したらお知らせ
(モニターに何か表示させる感じで)
2.メールを送る
水やりや肥料をあげる日にメールが届くようにする
3.カレンダーやスケジュール帳を使う
MaciPhoneのカレンダーやスケジュール帳と連動させて
定期的に水やりなどをする日にはスケジュールとして表示させるようにする
今考えてついてるのはこの3手段な訳なのですが何が一番楽で
私でも作成出来るかを調べたいなと思っています

'y'とyの違い

('y')と(y)の違いが良く分からなかったし
[NameError: name 'y' is not defined]とメッセージが出る理由も
ほとんど分かっていませんでした
なのでいろいろ聞いて私なりに考えてみました

>>> y=1
>>> (y,y,y)
(1, 1, 1)
>>> y=1
>>> u=2
>>> k=3
>>> (y,u,k,k,y)
(1, 2, 3, 3, 1)
>>> ('y','u','k','k','y')
('y', 'u', 'k', 'k', 'y')

('y')の場合はそのまま出力されるのに対して
(y)の場合は変数として認識されるので値を返して来るのですね
エラーメッセージもちゃんと読みたいと思います

タプルがやっぱりまだ分からない

Haskellの時でも分からなかったタプル
タプル=組これは分かるのです
オブジェクトとインデックスが組になってるんですよね?
そこでいろいろ試してみました

>>> t = (y,u,k,k,y)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined

なるほど文字はシングルコーテーションでくくって下さいってことですね
キーとして使うからかな?
良く分からないけどまぁ後で聞くとして・・・

>>> t = ('y','u','k','k','y')
>>> t
('y', 'u', 'k', 'k', 'y')
>>> t[2:4]
('k', 'k')
>>> t[0:4]
('y', 'u', 'k', 'k')
>>> t2 = (1,2,3,4,5)
>>> t2
(1, 2, 3, 4, 5)
>>> t3 = t + t2
>>> t3
('y', 'u', 'k', 'k', 'y', 1, 2, 3, 4, 5)
>>> t4 = t2 + t
>>> t4
(1, 2, 3, 4, 5, 'y', 'u', 'k', 'k', 'y')
>>> t5 = t2 + (100,1000,10000)
>>> t5
(1, 2, 3, 4, 5, 100, 1000, 10000)

コレでスライスが使える事とタプル同士の足し算ができるけど
内容は変わらずに連結しただけだという事が分かります
では足し算が出来るなら掛け算もできそうなので試してみました

>>> t6 = t*3
>>> t6
('y', 'u', 'k', 'k', 'y', 
'y', 'u', 'k', 'k', 'y', 
'y', 'u', 'k', 'k', 'y')

では次は要素の追加と削除

>>> t[3] = 'python'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t
('y', 'u', 'k', 'k', 'y')
>>> del t[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> t
('y', 'u', 'k', 'k', 'y')

要素の追加削除などは出来ないし内容も変わらない
とりあえず今分かっているタプルの特徴は

インデックスで要素を管理
スライスを使って複数の要素を指定して取り出せる
足し算と掛け算が出来る
要素の追加&要素の削除が出来ない

こんな感じでしょうか
最後にリストとタプルは型変換が出来るようなのでチェック

>>> t = ('y','u','k','k','y')
>>> t
('y', 'u', 'k', 'k', 'y')
>>> a = list(t)
>>> a
['y', 'u', 'k', 'k', 'y']
>>> tt = tuple(a)
>>> tt
('y', 'u', 'k', 'k', 'y')

型変換は結構苦手なのでコツコツ頑張りますが
今回は楽に型変換が出来たので嬉しいな♪
もしタプルに要素を追加したかったら1回リストに型変換してから
要素を追加してまたタプルに戻すってのもありかなと思いました
削除の場合も同じですよね☆
けどやっぱりタプルどんな時に使うの〜?とか利点とかは
まだまだ分からないです・・・

分からない言葉を日本語に直して理解する計画!

***間違った事多分沢山書いてます ゴメンナサイ***

最初からもう謝ってあるので分からない事など書きます
一昨日美容院に行っていたんですけど雑誌のかわりに
Pythonの本読んでました
みんなのPython p114まで進んで読み返して読み直して
昨日はまとめブログ書こうかなって思ってて
[オブジェクト][クラス][インスタンス][型]について
まとめていました

オブジェクト(object)とはプログラム上の手続きを抽象化する概念である
オブジェクト指向プログラミングではオブジェクトを集合物として扱う
オブジェクトの中身は属性や値(data)操作(method)である
クラスとはオブジェクトの型を定義したものである
型を定義する事で同種類のオブジェクトをまとめて扱う事が出来る
また具体的なデータを持つオブジェクトをインスタンスと言う
オブジェクトの実体をインスタンスという説明が多いし
オブジェクト=インスタンスと捕われがちだが
データーをより具体的で直接的に捉えた言い回しである

いろいろ間違ってると言われたんですけどそもそもオブジェクトって?
と思ったので調べていたりしました
自分の理解度を上げるためにもきちんと説明を出来るようになりたかった
のですが私は語彙力も理解度も足りないと
(上記の文章からも分かると思いますが)痛感しました
読み直しても何を伝えたいのかなかなか分からないですものね・・・
ちなみにこの4つをHaskellで言うと何?とujihisaさんから言われたので
ふつハスを読み直し
オブジェクト(インスタンス)=関数 クラス=モジュール 型=モナド
(型と型クラスの違いは良く分かりません ゴメンナサイ!)
こんな感じかな?
続けて日常の言葉を日本語化して語彙力を高めよう!とのことで
以下の言葉を言われたので(沢山間違ってると思うけど)日本語に直してみます
【クラス】
層 数学における層とは位相空間上で連続的に変化する
様々な数学的構造をとらえるための概念
【オブジェクト】
物体
【リスト】
目録 何かの理由で数字や品目などを書き出したもの
【ラムダ】(多分ラムダ計算だと推測) 
関数と定義と実行を抽象化した計算体系
【レキシカルスコープ】 
構文構造のみから決定できる
スコープ(ある変数や関数が特定の名前で参照される範囲のこと)
【ダイナミックスコープ】
レキシカルスコープに加え実行時の親子関係の子側(呼び出された側)から
親側(呼び出し側)のスコープを参照できるスコープ
クラウド】(クラウドコンピューティング)
クラウドとは雲をさしこの場合はインターネットのことを指す
ユーザーがインターネットの経由でサービスを提供されて利用料金を支払う
利用形態
【ソリューション】
クライアントの要望に応じてシステムの設計を行い提供すること
【スーツ】
ひとそろい 一式
【システムインテグレーション】
情報システム全般を組織的に設計・開発すること
リファクタリング
プログラミングでプログラムの外部から見た動作を変えずにソースコード
内部構造を整理すること
【カリー】(カリー化と推測)
自分でもも良く分かってないのに説明などで来ません・・・
逆に説明して欲しいくらいです
以上の単語は基本的にwikipediaで調べました
私なりにまとめたつもりですがこの作業が以外と時間かかりました
なのでこのブログ書き始めてから1日以上たってる気が(ry

けどまぁ日本語化してみるというのも重要なのかなと思いました☆

スライスを利用して要素を取り出す

実はみんなのPythonという本をもらったので読んでいます
というのも最近数学をメインにやっていたので id:suztomo さんに
コードかかないの?と聞かれました
そろそろ引越などで中途半端になったままだったしコード書こうかと
思っていたのでHaskellschemeかをもう一度やり直すよという
内容の話をするとPythonがいいよ!Pythonとの事だったので
Pythonをやる事にしました
本がなかったのでどうしようかなと思ってるところでとても素敵な人から
この本を貰ってしまいました!
という事で今70Pくらいまでは読み終わりました
本当は100Pくらいまで読みましたがもう一度読み返してる部分もあります
それで分からなかった事があって
http://gyazo.com/16e2b6a98aa76930cbd0adef0ce9cbc5.png
ここの

>>> a = [1,2,3,4,5,6,7]
>>> a[1:3]
[2, 3]
>>> a[3:4]
[4]

本文では

こう書いてあるけどイマイチ良く分からない
なので id:nishiohirokazu さんに質問をしてみたところ
a[1:3]というのは1以上3未満という意味だと教えてもらいました
a[3:4]というのも同様に3以上4未満なので=3の要素を返します
でも実際には3の要素を返す際は [a[3]] と書くそうです
もやもやしてたけどコレですっきり
あと私の場合は要素などを数える時に必ずって言っていいほど
1から数えてしまうので0から数える癖をもう一度叩き込まないと
ホントダメ

メビウスUbuntu化計画

忘れてしまわないための私的メモ


最初はubuntuをそのままCDに焼いてinstallしたのだが
設定関係を調べているうちにNetbookUbuntuがある事が判明
Ubuntu9.0.4をすぐに入れようと調べ始めたのが9月6日
調べる範囲でUSBメモリからinstallしてるようなので
USBメモリを買いに行こうと決めた
→ 容量的にはDVDでも行けるはず!と気付いたので結局買い物には行かず
    ーーーーーここまでで日曜日終了ーーーーー
Ubuntu9.0.4をinstall
ディスクユーティリティーでDVDを焼こうとしたが焼けない
数回試しても焼けない
体調が少し悪かったせいもあり翌日作業開始と決める
    ーーーーーここまでで月曜日終了ーーーーー
やっぱりDVDが焼けない
理由を調べてみたら根本的な事だった
データーが壊れている!
もう一度installしてDVDに焼こうとするがまた失敗
Ubuntu9.0.4は.imgなのでCDやDVDに焼いてのinstallが不可能
確かに焼けるはずがない
なのでみんなはUSBメモリを使ってinstallしてた模様
ちなみにCDなどに焼く場合は.isoの形でなければならない
Ubuntu9.0.4で.isoの形のファイルを探したが見当たらなかった
USBメモリを買って来るまで作業を延ばそうと思ったが
最後のあがきをしてみたかった
・・・という事でtoastを立ち上げてみた
toastは.imgに対応してるはず!!
DVDは焼けたものの結局installには失敗
→→→→→→→→ イマココ
という訳で明日USBメモリを買ってくる
データ的に見て2Gあったら大丈夫だと思う
あとHDDが160Gなのでデュアルにしようかと思っている
あれだけ重かったvistaが全くいじってないのに
かなりさくさく動くようになっていたのが不思議
多分期限は切れたと思うけどAntiVirusSoftが2個も入ってたのが
原因なのかな?
良く分からないのであとできちんとリサーチ
それと最後にtwitterUSBメモリの値段を教えてくれた方々に
感謝感謝でした♪♪

追記
http://d.hatena.ne.jp/Lansen/20090731/1249064061
やっぱりちゃんとしたUSBメモリ買おう・・・

ubuntu install 作業

Mebiusubuntuをinstallするので作業メモ
まず真っ先にやったのはvistaのrecovery diskの作成
簡単に書いたけれども内心かなりドキドキだった
1回しか作成出来ないので失敗出来ないと言う思いがすごい強くて
万全の準備をしようと思ったもののMebiusの説明書が見当たらないし
いきなり危機!!!
ぐぐってなんとか対応しようと思ったもののrecovery diskの作成は
機種によって異なると聞き再度説明書を探す→無事発見
そしてrecovery diskを焼き始めたらなんかあっさりトラブルもなく終了
人生初の体験だったのになんだかあっさり終了しすぎて
あのドキドキ感は一体なんだったのかと軽く落ち込む・・・
次にUbuntuを入手するためにUbuntuのTop pageから
Ubuntu Desktop 日本語 Remix CDのダウンロードを選択してdownload
ファイルなどに欠損がないかを調べるためにシェルでlsしてから
ubuntuの中身を確認してmd5sumの番号の一致も確認
どうやらこの作業はディスクユーティリティでも出来るようだ
そしてコレをCDに焼こうと思ったのだが・・・2回試して2回とも検証失敗
もしかしてCDの容量が700Mない?とか???
とりあえず店が開く時間になったらCDを買いにいこう!→イマココ
今こんな感じだけど本当はもっと大事な
ubuntuはこのマシンでちゃんと動くという大前提をなかった事にして
install作業中なのでもしinstallしてもまともに動かなかったら
その時は泣かせて下さい・・・
ちなみにスペックは↓↓です
http://gyazo.com/36ca96566720746c81cf967e6dc9b5b0.png
あぁそれまともに動かないからやめておいたほうがいいよって
いう場合は・・・早めに知りたいな・・・