codex

2011年11月28日月曜日

雑記 - HDDが壊れた・・・

土曜の時点でメインマシンの立ち上がりが遅くなり
「なんかおかしいなぁ」と思っていたら・・・昨日にはめちゃくちゃ立ち上がりが遅くなって
まともに動かなくなった。
とりあえず、システムは動作しているようなのだが特定のアイコンが表示されていなかった。
まさか・・・とは思ったがデータ用にゲームとかプログラムの大半を入れていたドライブが
認識されていないようだった。
まだ、一年も経ってないのに・・・しかも2TBの4分の1も使ってないのに・・・
しかも、マイドキュメントのドライブだったのに・・・
「WD20EARS」を価格comのレビューで見ると確かに壊れやすいようで・・・
でも買った当初(去年末かな)はいいレビューしかなかった気がするなぁ。
まぁ、時限爆弾のように時間が経ってから壊れてるんだろうなぁ。

とりあえず、今はHDDが高いから買いたくないし・・・
システムをSSDにして、いま使ってるシステムドライブのHDDをデータに転用するか・・・
でも、OSの再インストールをするならばWindowsXPからWindows7に変えたいし。
いや、ならばCPUも・・・と、なるとマザーボードも変えないといけないし。
CPU、マザーボード、SSD、ビデオカード、Windows7・・・全部変えると7万はいくのかぁぁぁ
まぁ非現実的な妄想はやめてとりあえずSSDだけ変えようかな。

2011年11月24日木曜日

Android環境 - エミュレータ構築

まぁ、以前からandroidのエミュレータは使っていたんだけど・・・
実機とあまりにも入っているアプリが違うので、マーケットとかからインストールできたら
いいかな・・・と軽い気持ちでやってみました。

とりあえず、ぐぐると
Android SDKを使おう・アンドロイドのエミュレータでマーケットなどのアプリを利用するには
ここが、参考になりそうです。

dos窓1でandroidツール起動
android

環境としてはandroid 2.3.3がいいのでAPI Levelは10ですね。
エミュレータは一つだけ起動させます。

dos窓2でshell起動
adb shell

dos窓2でshellコマンド実行
chmod 777 /system/app

exit

dos窓2でマーケットアプリ等を転送と不要ファイル削除
adb push Vending.apk /system/app/

adb push GoogleServicesFramework.apk /system/app/

adb push MarketUpdater.apk /system/app/

adb push Development.apk /system/app/

adb shell rm /system/app/SdkSetup.apk

まぁ・・・一応、systemにはマーケットが入ったが・・・エミュレータを落とすと
systemが最初の状態に戻ってしまいますねぇ・・・毎回やるのメンドクサイよ・・
system.imgには反映されないんですなぁ・・・なんでだよぅ。

まぁまたぐぐると
Android エミュレータの system.img を書き換える。 - kikumotoのメモ帳
ここがそのような感じですな。

ちょっと更新日付が古かったのでツール先のリンクが切れてました・・・
http://jiggawatt.org/badc0de/android/mkfs.yaffs2.arm.tar.gz
これでいいのかな。


mkfs.yaffs2を/system/binにコピー
adb push mkfs.yaffs2.arm /system/bin/mkfs.yaffs2

パーミッション変更
adb shell
chmod 777 /system/bin/mkfs.yaffs2
exit

/systemをsdcardへコピー
adb shell mkfs.yaffs2 /system /sdcard/system.img

sdcardからパソコンへコピー
adb pull /sdcard/system.img system.img

※これすごく時間がかかる・・・90MB程度なのに25分はかかった・・・

C:\Documents and Settings\(ユーザー名)\.android\avd\(エミュレータ名).avd
ここへsystem.imgをコピー。

とりあえずはマーケットは消えずに使えるようになったが・・・
マーケットの検索がおかしいのか、エミュレータだからかわからないけど
全てのアプリが出てこないw
こりゃ・・・apkをどーにかして調達して、インストールした方がいいんじゃないか?w
すごくまた無駄な時間をすごした気もするが・・・

2011年11月22日火曜日

Chromeアプリ - Chrome Remote Desktop BETA

昨日、初めて使ってみたんだけどお手軽でいいね~
Chrome ウェブストア - Chrome Remote Desktop BETA

使い方は操作する側、される側ともにChrome Remote Desktop BETAをインストール。
操作される側からアクセスコードを教えてもらってから
操作する側にアクセスコードを入れるだけ。非常に簡単。

ちょっと相手方の方の回線が遅かった(下り2M、上り256k)ので、
Windowを動かしたりすると引っかかる、ちゃんと意図した場所にいかないってのもあったけど。
それとセッションが10分くらいでたまに切れるのもあったかな・・・
まぁ再度アクセスコードを送ってもらえばまたすぐ使えるのでいいけどね。

前まではskypeだけで説明してもらってたから、相手の説明だけだとサッパリなときがあったけど
プログラムの挙動だとかがこっちにもすぐにわかるのですごく便利だった。
本来ならばWindowsのリモートディスクトップの方がいいんだろうけど、
設定とか面倒そうだしな~
まぁ相手方がパソコンに不慣れな場合はこっちでやったほうが楽だしねぇ。

2011年11月19日土曜日

アプリ - オンラインストレージ(続き)

Sugarsync楽だわ~・・・と、思って他のことをいろいろしていたら
フォルダの同期が勝手に解除されてた・・・。
まぁ、SDカードが認識できない状態になったりしたことも原因なのかもしれないが
そもそもSDカードの不具合なんてSugarsyncの同期をやる前には起きなかったしなぁ
復旧はできたけど”My SugarSync Folders"ってところをいじったりすると
すぐに同期の設定が解除されてしまう・・・メンドクサイw

もう、また別の方法かアプリを探すかな・・・

2011年11月18日金曜日

アプリ - オンラインストレージ

今までDropboxをメインに使ってたけど、あまり使わなかったSugarsyncの方が
テキストベースのソースファイルなどの同期を取るのには便利。
なにより、SDカード内の任意のフォルダへ同期ができるのがいい。
メモアプリはsimplenotepadを使ってるんだけど、自動でauto_exportedフォルダを
Sugarsyncで同期させておけばPCとスマホのメモが同期できる・・・楽だわ~
Dropboxだとわざわざファイラーで手動でコピーしてた・・・

まぁ使い分けるのが一番賢いのかなぁ

2011年11月16日水曜日

Blogger - コード部分の表示を変更

うーん、ブログは今までやったこと無かったからhtmlとかcssとかは厳しい・・・
とりあえず、Bloggerカスタマイズで検索していたらいいところを発見!
Blogger カスタマイズ Tipsまとめ | Will feel Tips

その中にコードを表示するスクリプトが載っていたので、そのまま使わせていただきました。
SyntaxHighlighter

なかなか、簡単だし便利だなぁ

2011年11月12日土曜日

Python - メールの日本語対応化・・・(嬉)

先ほど失敗してエポケーしたはずだったが、しつこくpythonのメール関連のページを
見ていたら参考していたサイトに答えは載っていた・・・w
ウノウラボ by Zynga Japan: Pythonでメールを送信したい人のためのサンプル集

一番下のコメントにある、

msg = MIMEText(body, 'plain', encoding)
↓
msg = MIMEText(body.encode(encoding), 'plain', encoding)
これで文字化けせずにメールが受信できた~(嬉)

とかいいながらウキウキと「馬鹿野郎~」とかつけて送信したらまたエラーw
なんだよ・・・と思って成功した時は「あいうえお、かきくけこ」だったので
「あいうえお、かきくけこ~」でテストしたら再現できた。「~」が犯人か。
いろいろ、調べると・・・むむ・・・エンコードの'ISO-2022-JP'ってシビアなのね。
PythonJISX0213 – アクセンスのおまけ

もう!・・・別に読めればいいんだから'ISO-2022-JP'の必要ないんじゃ・・・?
こりゃ、エンコードは'utf-8'でいいよね?

テストしたら「㌧㌦㍑~」も含めてエラーもなし。
#コードはuploadとかできないのか・・・

DOWNLOAD

sendmailAjp.py

# -*- coding: utf-8 -*-
import os
import glob
import codecs
import unicodedata
import mimetypes
from email import encoders
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.Header import Header

def attach_files(msg, attachements):
  for attachment in attachments:
    attachment = attachment.strip()
    for path in glob.glob(attachment):
      filename = os.path.basename(path)
      if not os.path.isfile(path):
        continue
      # Guess the content type based on the file's extension.  Encoding
      # will be ignored, although we should check for simple things like
      # gzip'd or compressed files.
      ctype, encoding = mimetypes.guess_type(path)
      if ctype is None or encoding is not None:
        # No guess could be made, or the file is encoded (compressed), so
        # use a generic bag-of-bits type.
        ctype = 'application/octet-stream'
      maintype, subtype = ctype.split('/', 1)
      if maintype == 'text':
        fp = open(path)
        # Note: we should handle calculating the charset
        part = MIMEText(fp.read(), _subtype=subtype)
        fp.close()
      elif maintype == 'image':
        fp = open(path, 'rb')
        part = MIMEImage(fp.read(), _subtype=subtype)
        fp.close()
      elif maintype == 'audio':
        fp = open(path, 'rb')
        part = MIMEAudio(fp.read(), _subtype=subtype)
        fp.close()
      else:
        fp = open(path, 'rb')
        part = MIMEBase(maintype, subtype)
        part.set_payload(fp.read())
        fp.close()
        # Encode the payload using Base64
        encoders.encode_base64(part)
      # Set the filename parameter
      part.add_header('Content-Disposition', 'attachment', filename=filename)
      msg.attach(part)

def sendemail(email_name, email_user, email_pswd, mailto, subject, body, attachments, encoding):
  import smtplib

  # DON'T CHANGE THIS!
  # ...unless you're rewriting this script for your own SMTP server!
  smtp_server = 'smtp.gmail.com'
  smtp_port = 587

  # Build an SMTP compatible message
  msg = MIMEMultipart()
  msg['Subject'] = Header(subject, encoding)
  msg['To'] = mailto
  msg['From'] = email_name + " <" + email_user + ">"
  msg.attach(MIMEText(body.encode(encoding), 'plain', encoding))

  attach_files(msg, attachments)

  # Attempt to connect and send the email
  try:
    smtpObj = '' # Declare within this block.
    # Check for SMTP over SSL by port number and connect accordingly
    if( smtp_port == 465):
      smtpObj = smtplib.SMTP_SSL(smtp_server,smtp_port)
    else:
      smtpObj = smtplib.SMTP(smtp_server,smtp_port)
    smtpObj.ehlo()
    # StartTLS if using the default TLS port number
    if(smtp_port == 587):
      smtpObj.starttls()
      smtpObj.ehlo
    # Login, send and close the connection.
    smtpObj.login(email_user, email_pswd)
    smtpObj.sendmail(email_user, mailto, msg.as_string())
    smtpObj.close()
    return 1  # Return 1 to denote success!
  except Exception, err:
    # Print error and return 0 on failure.
    print err
    return 0

import sys
import android

if 'ascii'==sys.getdefaultencoding():
  stdin = sys.stdin
  stdout = sys.stdout
  reload(sys)
  sys.setdefaultencoding('utf-8')
  sys.stdin = stdin
  sys.stdout = stdout

droid = android.Android()

try:
  email_name = droid.getIntent().result[u'extras'][u'%EMAIL_NAME']
except:
  email_name = ''

try:
  email_user = droid.getIntent().result[u'extras'][u'%EMAIL_USER']
except:
  droid.makeToast('EMAIL_USER missing')
  sys.exit(1)

try:
  email_pswd = droid.getIntent().result[u'extras'][u'%EMAIL_PSWD']
except:
  droid.makeToast('EMAIL_PSWD missing')
  sys.exit(1)

try:
  mailto = droid.getIntent().result[u'extras'][u'%EMAIL_TO']
except:
  droid.makeToast('EMAIL_TO missing')
  sys.exit(1)

try:
  subject = droid.getIntent().result[u'extras'][u'%EMAIL_SUBJECT']
except:
  subject = ''

try:
  body = droid.getIntent().result[u'extras'][u'%EMAIL_BODY']
except:
  body = ''

try:
  attachments = droid.getIntent().result[u'extras'][u'%EMAIL_ATTACH']
  attachments = attachments.split(',')
except:
  attachments = ''

try:
  body = droid.getIntent().result[u'extras'][u'%EMAIL_ENCODING']
except:
  encoding = 'utf-8'

# Send email
if (sendemail(email_name, email_user, email_pswd, mailto, subject, body, attachments, encoding)):
  sys.exit(0)
else:
  # Exit with error if email is not sent successfully
  droid.makeToast('email failed')
  sys.exit(1)