Hatena::ブログ(Diary)

#junki::acoustic

2012-01-31

【GAEj】Eclipse 3.7にGAEj入れようとしたら失敗した件

21:45 | 【GAEj】Eclipse 3.7にGAEj入れようとしたら失敗した件を含むブックマーク

Eclipse 3.7にGAEjの環境を整えようと、こちらからプラグインインストールを試みる。

http://dl.google.com/eclipse/plugin/3.7


が、こんな感じのエラーがでてインストールが進まない。

Cannot complete the install because one or more required items could not be found.Software being installed: Google App Engine Java SDK 1.6

なのでhttp://download.eclipse.org/releases/indigoから[Web, XML, JAVA EE and OSGi Enterprise Development]を選択してインストール、これでGAEjプラグインをもう一度インストール試みたら大丈夫だった。

2012-01-28

【Mac】MacでiTunesで再生中の曲をYoutubeのリンクと共にツイートする

13:08 | 【Mac】MacでiTunesで再生中の曲をYoutubeのリンクと共にツイートするを含むブックマーク

これの続き。今までJavaでやってたことPythonMacでもようやくできるようになった。

【Mac】MacでiTunesで再生中の曲をツイートする。

まずは結果から

$ python tweetSong.py 
キスをしようよ YUKI http://goo.gl/BafaS #nowplaying

f:id:jonki:20120128130720p:image


ソース

tweet.scpt iTunes情報取得
tell application "iTunes"
        set m_artist to artist of current track
        set m_song to name of current track
        set m_info to m_song & " " & m_artist
end tell

で、こっちがツイートするPythonプログラム例外処理はまったくやってないです。

tweetSong.py
# /usr/bin/python
# -*- coding: utf-8 -*-

import tweepy
import os
import subprocess

import simplejson
import urllib, urllib2

consumer_key = 'xxx'
consumer_secret = 'xxx'

access_key = 'xxx'
access_secret = 'xxx'

ytube_base = 'http://www.youtube.com/results?search_category=10&search_type=videos&suggested_categories=10&uni=3&search_query='

def post(message):
        auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
        auth.set_access_token(access_key, access_secret)
        api = tweepy.API(auth_handler=auth)
        api.update_status(message)

def getCurrentSong():
        info = subprocess.check_output(['osascript ' + os.getcwd()+'/tweet.scpt'], shell=True)
        return info

def getShortUrl(_longUrl):
        req = urllib2.Request('https://www.googleapis.com/urlshortener/v1/url')
        data = "{'longUrl' : '%s'}" % _longUrl
        req.add_data(data)
        req.add_header('Content-Type', 'application/json')
        r = urllib2.urlopen(req)
        res = simplejson.loads(r.read())
        r.close()
        return res['id']

def getYoutubeUrl(info):
        ytube_url = ytube_base + urllib.quote(info.encode('utf-8'))
        ytube_url = getShortUrl(ytube_url)
        return ytube_url

def main():
        info = getCurrentSong().rstrip()
        ytube_url = getYoutubeUrl(info)
        tweet = info + ' ' + ytube_url + ' #nowplaying'
        print tweet
        post(tweet)

main()

2012-01-24

【Mac】MacでiTunesで再生中の曲をツイートする。

00:50 | 【Mac】MacでiTunesで再生中の曲をツイートする。を含むブックマーク

AppleScriptPythonで無理やり実行して、その結果を取得してtweepyでツイートしてます。tweepyはこちらの記事を参考に入れてみてください。

以下適当スクリプト

tweet.scpt
tell application "iTunes"
        set m_album to album of current track
        set m_artist to artist of current track
        set m_song to name of current track
        set m_info to m_song & " " & m_artist & " " & m_album
end tell
tweetSong.py
# /usr/bin/python
# -*- coding: utf-8 -*-

import tweepy
import os
import subprocess

consumer_key = 'xxx'
consumer_secret = 'xxx'

access_key = 'xxx'
access_secret = 'xxx'

def post(message):
        auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
        auth.set_access_token(access_key, access_secret)
        api = tweepy.API(auth_handler=auth)
        api.update_status(message)

def getCurrentSong():
        info = subprocess.check_output(['osascript ' + os.getcwd()+'/tweet.scpt'], shell=True)
        return info

def main():
        info = getCurrentSong()
        print info
        post(info)

main()

2012-01-21

【Arduino】俺専用コントローラーを自作する

00:24 | 【Arduino】俺専用コントローラーを自作するを含むブックマーク

さっそく前回の記事の【Arduino】タクトスイッチとシリアル通信を発展させていくよ(・∀・)

今回はこんな感じのコントローラを作ります。チープですねぇ。

f:id:jonki:20120122000321j:image

準備

00:24 | 準備を含むブックマーク

  • 押しボタンスイッチ(何でもいいです。2極の80円ぐらいのやつを今回使いました)
  • ケース(HK-BX02)
  • Arduinoプロトタイピングシールド(こちら参考
  • 抵抗 1kΩ(たぶん極端な値じゃなきゃ大丈夫)
  • LED (何でも良い)
  • はんだ
  • 導電線
  • ジャンプワイヤ

作成

00:24 | 作成を含むブックマーク

まずはケースにボタン箇所2つとUSBが入る所1つを電動ドリルとかでホリホリします。ボタンに関してはドリルの直径より大きかったので、やすりで削って穴を大きくしました。

で、次にユニバーサル基盤に回路を組んでいきます。まずはブレッドボードで試したほうが良いです。今回1つしかスイッチつなげてないですが、いずれ並列でも使えるようにしてます。しかし、コンパクトな回路図の作り方が分からないので適当です。(・∀・;) スイッチ初めての人はこちらなんかも参考に。

f:id:jonki:20120122000511j:image

f:id:jonki:20120122000422j:image


今回もボタンを押すとシリアル通信をするようにしてます。更にLEDも光るようにしてます。前回の記事と同じです。あとは閉じればコントローラーが完成。

【Arduino】タクトスイッチとシリアル通信

f:id:jonki:20120122000350j:image

f:id:jonki:20120122000402j:image



次回はこのコントローラを使って簡単なアプリを作ってみます。

2012-01-16

【Arduino】タクトスイッチとシリアル通信

23:01 | 【Arduino】タクトスイッチとシリアル通信を含むブックマーク

タクトスイッチを押すとLEDが光る簡単な仕組みですが、PC側でこのオン、オフが受け取るシリアル通信アプリを書いてみるよ。

f:id:jonki:20120116225257j:image

ちなみにこの回路は下の本の35ページと一緒です。基本回路ですね。

Arduinoをはじめよう (Make:PROJECTS)

Arduinoをはじめよう (Make:PROJECTS)

シリアル通信はこちら様のサイトの「シリアル通信プログラム(受信専用)」を丸パクリ。ただボーレートは9600に、シリアルポートはデバイスマネージャからArduinoの接続ポートを確認して、対応したCOM番号に変更しておきましょう。

C 言語による RS-232C 通信プログラミング

で、Arduino側のプログラム。これも「Arduinoをはじめよう」のプログラムにSerial.beginとSerial.printlnを追加するだけ。超簡単ですね。

#define LED 13
#define BUTTON 7
int val = 0;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);
  Serial.begin(9600);
}

void loop() {
  val = digitalRead(BUTTON);
  if(val == HIGH) {
    digitalWrite(LED, HIGH); 
    Serial.println(1);
  } 
  else {
    digitalWrite(LED, LOW);
    Serial.println(0); 
  }

  delay(300);
}

これでArduinoをPCとつなげた状態でCプログラムの方を動かすと、タクトスイッチを押した状態で1が、押してない状態で0がストリームで流れてきます。あとはこれを他のアプリdllとして組み込んだりしてあげると、デモの時とかに大活躍しそうですね。スイッチも複数とか大きいやつとかを使ってあげれば更に活躍の場が広がりそう。