Pages

December 24, 2010

githubにプッシュ

git init
git add .
git commit -m 'first commit'
git remote add origin git@github.com:hoge/fuga.git
git push origin master

December 12, 2010

IS01 rooterでうまーくモジュールが呼び出せないとおもったらの巻き

※文鎮化する可能性が高い操作を行っていますので注意してください。

いやはや便利な者が出来てしまうとそれに頼ってしまうのですが、それが盲点となってしまった。

たぶん僕だけの環境で起こったことだと思うので気にせずに^^;

MIRO氏作成のIS01 rooter_002ですが、こちらを使用した際にmsm_nand_exをinsmodすることが出来なかった。

なぜ出来なかったのか?

まずは、/sqlite_journals/is01root/以下にあるautoexecに実行権限が付与されていなかった。
#chmod 755 /sqlite_journals/is01root/autoexec.sh

それと。autoexec.shに書かれている2行に「/sqlite_journals/is01root/_su ...」とあるが、is01root以下に「_su」が入っていない。
ファイルをDL解凍したら
adb push _su /sqlite_journals/is01root/
#chown root.root _su
#chmod 6755 _su
で再起動を行う。
これでlsmodしてモジュールがロードされていればおkです。
あと*.koは基本的に644で。

で、ここまで書いたが。
MIRO氏はたぶんsystemを書き込めないように上記手順を行わなかったのかなと思います。

December 04, 2010

IS01のkernelをビルドしちゃおう! ※修正: 20101213

※このビルドはNANDロック解除などのセキュリティ部分の解除はしていません。

nandロックが解除出きるようになって、recovery等の書き変えも可能になりいろいろと旬になってきたIS01ですが、まだまだスタートしたばかりです。

で、まぁカスタムロム作りたくてandroidのソースをぼちぼち読んでいるのですが云々。

さてさて、今回はSH Developers Squareに公開されているIS01のkernelソースをビルドしていきます。

ソースは前記事のスクリプトから取得しておきましょう。

STEP1: android.git.kernel.orgからコンパイル用ソースをとってきましょう。(既にやっている人はSTEP2へ)
#mkdir mydroid
#wget http://android.git.kernel.org/repo
#chmod 755 repo
#./repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
#./repo sync
ここのSTEPは取得に時間がかかりますので気長に待ちましょう。

STEP2: IS01のソースをビルドするための準備1
IS01のkernelソースに移動
#vim ./arch/arm/mach-msm/sh_sleepcheck.c
最初の行にある#include <smd_private.h>を#include "smd_private.h"
に書き換える。diffはよーわからないのでそのうち勉強する。

STEP3: IS01のソースをビルドするための準備2
IS01での操作です。
rootとった状態でTerminal Emulatorから
#busybox cp /proc/config.gz /sdcard/config.gz ←この操作はbusyboxとそのpathが必要です。
config.gzをPCに持ってきて展開する。
それをIS01のkernelフォルダに「.config」という名前で保存してください。
「.config」はmakeするときに使用します。

STEP4: kernelのビルド
#make ARCH=arm CROSS_COMPILE=../../mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
を実行すると、
arch/arm/boot/にImageというファイルが出来上がります。これがkernelです。
お疲れ様でした。


と記事書いてたら仙石さんが仕事早いw
Android 端末 IS01 のカーネルを入れ替えてみた ? さよならデッカード LSM
とりあえず僕はnandプロテクト外したものを作っています。
froyoベースになるにはもうちょいお勉強。。


STEP 番外編1: android.kernel.orgとcode auroraからのkernelソース取得
・純粋なandroid向けkernelの取得
mkdir android_kernel ←適宜名前変更してください
git clone git://android.git.kernel.org/kernel/msm.git -b android-msm-2.6.35
2.6.29の場合は「android-msm-2.6.29」です。なお各ブランチはこちらを参考にしてください。

・IS01のベースとなったとされるcodeauroraのkernelの取得
mkdir aurora
git clone git://codeaurora.org/kernel/msm.git msm-kernel 
cd msm-kernel 
git checkout origin/android-msm-2.6.29b 
git checkout dcdb890bc3e49ba5091230e73e976d9f6860fffe
wiki参考



どうでもいいこと:なんでSTEP2で書き換えたのかは…
カーネルソースを修正せずにmakeしたらエラーが出た。これはひどい、、
arch/arm/mach-msm/sh_sleepcheck.c:27:25: error: smd_private.h: No such file or directory
arch/arm/mach-msm/sh_sleepcheck.c: In function 'sh_sleepcheck_name_m_show':
arch/arm/mach-msm/sh_sleepcheck.c:625: error: implicit declaration of function 'smem_get_entry'
arch/arm/mach-msm/sh_sleepcheck.c:625: error: 'SMEM_SLEEP_STATIC' undeclared (first use in this function)
arch/arm/mach-msm/sh_sleepcheck.c:625: error: (Each undeclared identifier is reported only once
arch/arm/mach-msm/sh_sleepcheck.c:625: error: for each function it appears in.)
cc1: warnings being treated as errors
arch/arm/mach-msm/sh_sleepcheck.c:625: warning: assignment makes pointer from integer without a cast
make[1]: *** [arch/arm/mach-msm/sh_sleepcheck.o] エラー 1
make: *** [arch/arm/mach-msm] エラー 2
てなかんじのエラーが。まさか素の状態でこんなもんでるとは思わなかったw
で、まぁ上のSTEPで修正していたわけですね。



repoつかったりgit clone使ったりしてるのは、途中でエラーが発生したりしなかったり謎なため。

December 03, 2010

SH DevelopersSquareからIS01等のAndroid向けソースをDLするスクリプト作ったよ!

SH DevelopersSquareがgitとかsvnとか用意してくれていないのでソースのDLがまんどくさいことこの上ないのでPythonでスクリプトを作成しました。


このスクリプトを利用することにより、is01, sh-10b, jn-dk01のソースを取得・展開してくれます。


使い方(Ubuntu環境)は以下の通りです。


まず、easy_install等で必要なモジュールをインストールします。
#sudo apt-get install setup_tools ←インストールしていない場合
#sudo easy_install -U MultipartPostHandler
#sudo easy_install -U BeautifulSoup


スクリプトの実行例は以下の通りです。
#python ./sdasg.py is01 ←is01のソースを取得・展開したい場合
#python ./sdasg.py sh-10b ←sh-10bのソースを取得・展開したい場合
#python ./sdasg.py jn-dk01 ←jn-dk01のソースを取得・展開したい場合


以下がスクリプトです。
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# Name:        SH Dev Android Source Getter(特に名前決めてない)
# Purpose:     (https://sh-dev.sharp.co.jp/android/modules/oss/)がsvnやgitでの
#              ソース公開してなかったので自動でダウンロードしてきて展開するスク
#              リプト作った。
#              使用する際は、GPL(http://www.gnu.org/licenses/)と各々のソフトウェ
#              ア使用許諾契約書に同意すること。
#
# Usage:       引数にis01, sh-10b, jn-dk01のどれかを与えてください。
#              スクリプト直下にディレクトリを作られ保存されます。
#              例)is01のソースを取得・展開します。
#                 #python ./sdasg.py is01
#
# Require      MultipartPostHandler, BeautifulSoupをeasy_installなどでインストー
#              ルしてください。
#
# Author:      renax64.blogspot.com
#
# Created:     02/12/2010, ver. 0.3
# Copyright:   (c) renax64.blogspot.com 2010
#-------------------------------------------------------------------------------
#!/usr/bin/env python

import os
import sys
from BeautifulSoup import BeautifulSoup
#import datetime
import urllib2
import MultipartPostHandler
import cookielib
import tarfile

#初期値: 対策されたときここを書き換える
init_vals ={
    "main_url":"https://sh-dev.sharp.co.jp/android/modules/oss/index.php?/",
    "is01":"is01",
    "sh-10b":"sh10b",
    "jn-dk01":"jndk01",
    "dl_form_class":"dl2_center",
    "dl_tr_class":"dl2_data",
    "td_date_class":"dl2_center",
    "td_filename_style":"padding-left:1em",
    "form_post_class":"dl2_center",
    "input_name":"ticket",
    "accept":"同意する ( ダウンロード )",
    "User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.12 (KHTML, like Gecko) Chrome/9.0.587.0 Safari/534.12",
    "Content-Type":"multipart/form-data"
    }

#ファイルの取得・展開
def getFile(link, filename, device):
    try:
        html = urllib2.urlopen(link)
        soup = BeautifulSoup(html)
        form = soup.find("form", {"class":init_vals["form_post_class"]})
        ticket = form.find("input", {"name":init_vals["input_name"]}).get("value")
        params = {"ticket":ticket, "accept":init_vals["accept"]}
        cookies = cookielib.CookieJar()
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
        opener.addheaders = [("User-agent",init_vals["User-Agent"]),
                            ("Content-Type",init_vals["Content-Type"]),
                            ("Referer",link)]
        f = opener.open(link, params)
        #device_sourceディレクトリ作成
        dir_name = device + "_sources"
        os.chdir(os.path.dirname(os.path.abspath(__file__)))
        current_dir = os.getcwd()
        if os.path.isdir(dir_name) != True:
            os.mkdir(dir_name)
        #device_sourceディレクトリへ移動
        os.chdir(dir_name)
        #ファイル書き込み
        fw = open(filename,'wb')
        print u"現在 %s をダウンロード中..." % filename
        fw.write(f.read())
        fw.close()
        #ファイル展開
        ft = tarfile.open(filename,"r")
        print u"現在 %s を展開中..." % filename
        ft.extractall("./")
        ft.close()
        #元のディレクトリへ移動
        os.chdir(current_dir)
    except urllib2.HTTPError, e:
        e.code, e.msg
        pass

def getInf(device):
    #オープンソースソフトウェアのファイル一覧ページの解析
    curl = init_vals["main_url"] + init_vals[device]
    try:
        html = urllib2.urlopen(curl).read()
        soup = BeautifulSoup(html)
        tr_data = soup.findAll("tr", {"class":init_vals["dl_tr_class"]})
        trs = []
        for i in tr_data:
            link = init_vals["main_url"] + i.a.get("href").replace("./index.php?/", "")
            #dateは差分処理を実装しようとして取得したが、そこまでする必要もないと思い放置
            dates = i.findAll("td", {"class":init_vals["td_date_class"]})
            for ix in dates:
                date = ix.renderContents().split("/")
            files = i.findAll("td", {"style":init_vals["td_filename_style"]})
            for iy in files:
                filename = iy.a.renderContents()
            array = dict([["link", link], ["date", date], ["filename", filename]])
            trs.append(array)
            #ファイルの取得
            getFile(link, filename, device)
        return trs
    except urllib2.HTTPError, e:
        e.code, e.msg
        pass

def main():
    #引数の取得
    argvs = sys.argv
    argc = len(argvs)
    #実行
    #現在のディレクトリパスを取得
    c_dir = os.getcwd()
    if argc == 2:
        device = argvs[1]
        if device == "is01":
            getInf(device)
        elif device == "sh-10b":
            getInf(device)
        elif device == "jn-dk01":
            getInf(device)
        else:
            print "usage: #python ./sdasg.py (is01|sh-10b|jn-dk01)\n"
    else:
        print "usage: #python ./sdasg.py (is01|sh-10b|jn-dk01)\n"
    print u"すべてのファイルの取得・展開が終了しました。"

if __name__ == '__main__':
    main()


こちらからもスクリプトをDLすることができます。


更新履歴:
Ver. 0.3: 気づいた部分のスペルミス修正
Ver. 0.2: UbuntuなどのLinuxで動作しないバグを修正
Ver. 0.1: とりあえずリリース



beautifulsoupが3.0.1から3.2.0に変わったらHTMLParseErrorなくなってた!

beautifulsoupが3.0.1から3.2.0に変わったらHTMLParseErrorなくなっていました。


そういえばアップデートしてないなーとか思いながらeasy_installから実行したら、そうなっちまった。


良いことなのか悪いのか、


間違いなく例外とかfrom importとか書き換えないと行けない場所が出てしまった。


しかし、パースエラーあった部分が問題なくパースされるようになったりどっこいどっこいなのかな。


で、まぁアップデートによって


from html5lib import HTMLParser
from html5lib import treebuilders
from BeautifulSoup import HTMLParseError

try:
 soup = BeautifulSoup(html)
except HTMLParseError, e:
 parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
 soup = parser.parse(html)

とかやって別なパーサーでエラー部分を除去って貰う形をとっていたことが必要なくなったのかな?

ということで前回書いた記事「BeautifulSoupでHTMLParseErrorが起きた時の対処」もこんなことやれば良かったのかな?



まぁまとめるとアップデートしとけ(゚Д゚)ゴルァ!! ですね・・・w

November 05, 2010

UnicodeEncodeError: 'ascii' codec...が出てしまった。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-4: ordinal not in range(128)

Pyscripterの環境で弄くり回していたのだが、↑のようなエラーが吐かれました。

よく分からないことにPythonインタプリタに直接投げた場合はそのようなエラーは吐かれないんですよね。

で、

問題解決しました。

凡ミスというか、恥ずかしいミス。

Pathにマルチバイトコードが入っていたんですね。

ディレクトリ名やファイル名に日本語等の名前をつけちゃうと起こるみたいです。

で、

なんでなったのかというと。

普段からファイル名やディレクトリ名にはマルチバイト使わないようにしてるのですが、

ちょっとしたことからいつも保存している場所から別の場所に保存していて、それに気づかなかったという落ちでした。

気づくまでに時間掛かりましたよ。

ええ。



うん、こーいう問題は俺だけじゃなくて他の人もやってしまってる見たいですよ。

こちらにその指摘があります。(ソース)

でもさ、Pyscripterさんもそのへん放置しないでさ。何とかしてくださいよ…

November 04, 2010

BeautifulSoupでHTMLParseErrorが起きた時の対処

BeautifulSoupでスクレイピングしていたとき、「bad end tag: u""」というHTMLParseErrorが起きてしまった。

これから研究でぶち当たっていきそうなのでとりあえずメモ。


結果から言うと単純に例外処理で該当部分を書き換えてしまえばいいのだ。


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

import urllib2
from BeautifulSoup import BeautifulSoup
from HTMLParser import HTMLParseError

def fix_html(html):
    #UTF8に強制変換
    html = html.encode("utf-8")
    try:
        soup = BeautifulSoup(html)
        return soup
    except HTMLParseError,e:
        emsg = e.msg
        #無理矢理、問題の該当箇所を抽出し空文字列に置換
        emsg_start = emsg.find('u"')
        rpl_str = eval(emsg[emsg_start:]).encode("utf-8")
        html = html.replace(rpl_str,u"")
        #再帰的処理
        return fix_html(html)
    except e:
        raise e

def main():
    try:
     set_url = "#適宜URLを"
     html = urllib2.urlopen(set_url).read()
        print fix_html(html)
    except urllib2.HTTPError, e:
     e.code, e.msg
     print "%s is not existed." % set_url

if __name__ == '__main__':
    main()


こんな感じだろうか。
やってはいけないことをしています。それは問題箇所を無理矢理抽出して置換していることです。
なにか良い方法あると思いますが、考えつかなかったのでこんなかんじにしちゃいました^^;

October 27, 2010

arm-Ubuntuのビルド(qemu用

ちょっとarm触る必要あったのでUbuntuでいくかと。

ビルドはいつも通りUbuntuで行います。はい。

ちなみに10.10です。もしかしたら、それ以前ではうまくいかないかもしれません。

んでは。

あ、今回QEMU上で動かすVer.は9.04です^^;

QEMU用のimg作成
#sudo mkdir arm-ubuntu
#cd arm-ubuntu
#sudo wget http://people.ubuntu.com/~ogra/arm/build-arm-rootfs
#sudo wget http://ports.ubuntu.com/ubuntu-ports/dists/lucid/main/installer-armel/current/images/versatile/netboot/vmlinuz
#sudo chmod 744 build-arm-rootfs
#sudo ./build-arm-rootfs --fqdn ubuntu --login ubuntuuser --password hogefuga --notarball --imagesize 1G
※fdqn、login、passwordは任意のものに変えること。imagesizeも任意に変えるといいと思います。

QEMU上でUbuntuを起動
#cp qemu-armel-<タイムスタンプ>.img qemu-armel.img
※cpで元残すのも良いし、mvで名前変えるのもよし。
#sudo qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel vmlinuz -hda qemu-armel.img -m 256 -append "root=/dev/sda rootwait"

起動後にやること
#LANG=C
#sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
#sudo ifconfig eth0 up
#sudo dhclient eth0
#sudo apt-get update

これで一通り使える状態になりました。

お疲れ様でした。




番外編というか、ぶち当たった壁。

本当は最新のUbuntuをビルドして使いたかったのですが、うまく行かなかったわけです。
というのも、このページにある「If development machine is running Lucid or Karmic」を一通りやってみたのですが、2nd stageでエラーでてうまーくいかないんですよね。

2時間近くうにゃうにゃ悩んだあげく上の手段を執ったわけです。

なんとかならないのかなーw

October 05, 2010

AndroidでSkypeAppが復活したのでさっそく

やっと来ました!!

今年初めに一部のキャリアでしかSkypeを使用することが出来ないようになってしまいましたが、いよいよ復活です!

ただし、日本のプロバイダー(ストア固有ID)情報だとマーケットで表示することが出来ませんのでちょっとしたてこ入れをしてあげないといけません。

ということで、手順です。(root権限が必要です。

用意するものはMarketEnablerです。こちらからDLしてインスコしてしまいましょう。

あとは、MarketEnablerを起動して「Setting List -> T-Mobile」のところで長押しすればプロバイダー情報を偽装することが出来ます。(プロバイダー情報のバックアップは行っておいてください。

そしたら、こちらのQRコードからアクセスを行いSkypeのインストールを行っちゃいましょう!!


以上で終了です!お疲れ様でした!!





あ、DoCoMo回線だと使えないからね。

October 02, 2010

Acer Liquid EにLeaked Froyoを入れてみたよ

用意するもの:
Leaked Froyo
Acer Download Tool for A1
installMalezRecovery_0.6_FULL

Part1:
Acer Download Tool for A1はWin7では正常動作しないので互換モードで行ってください。



まずAcer Download Tool for A1を起動し、先ほどDLしてきたROMをBrowseから選択してください。

次にStartを押してROM焼きを行います。

ここで注意ですがAppにも書いてあるとおり抜いて良いよと言われるまでは絶対に抜かないでください。

ここで抜いてしまうと文鎮化してしまい使い物にならない端末に変貌するかもしれません。

以上でROM焼きは終了です。


Part2:
カスタムリカバリーの導入です。

こちらのやり方自体は、以前の記事で解説済みですので割愛させていただきまする。

Acer Liquid Eにカスタムリカバリーを入れてみたよ


Part3:
リカバリーモードに入ってFull Wipe, System Root Menuからrooted化する


以上で終了です。




Liquidを購入し、rooted, ROM焼きを通して思ったことは、とても簡単に導入できてしまい楽ちんになったなぁということです。

いや、HT-03Aも楽だったけど。

たぶんですが、Liquidの情報は日本にあまりなく覚悟して望んだのに拍子抜けしてしまったんでしょう^^;

Acer Liquid Eをrooted化しちゃおう!

リカバリーモードに入り(Vol- カメラキー 電源 で三回振動するのを待つ)

System Root menuから好きなモードを選んでrooted化終了です。

とても簡単にできますね。

出来ないって言うかたは、こちらのapkをインスコしてrooted化しちゃってください。(@Syu_uさん情報ありがとうございます。)

※責任は負えませんのでROMのバックアップは忘れずに

これでHT-03AでバックアップしたAppsをリストアすることが出来る。

バックアップ&リストアに便利な『Titanium Backup』というものがあります。

ぜひ使ってみましょう。

使い方はとてもわかりやすく解説しているコムギさんのページをリンクしておきますね。


追記:
どうやらTitanium Backupではうまく復元することは出来ないみたい。

追記2:
apk版rootedのリンク張り忘れていたので修正。

October 01, 2010

Acer Liquid Eにカスタムリカバリーを入れてみたよ

すっごく簡単にカスタムリカバリーが導入できました。

こちらからファイルをDLして解凍しましょう。

解凍先を開き、install_malez_recovery.cmdを開きいくつかスペース叩けば終了します。(英語だけど説明はちゃんと読んでね)

これで、カスタムリカバリーの導入は終了です。導入終了と同時に再起動されると思うので、その後すぐにUSBを抜いちゃいましょう。(当方、USBつないだままだと起動しなかったので。)

カスタムリカバリへの入り方は、"adb reboot recovery"です。

なにやらこのカスタムリカバリーにはrooted化する機能がある(見えるw)のですが、ちょっと不安なのでまだ触ってません。

異常で終了です。

次回投稿あたりでLiquid Eのrootedでも。

Acer Liquid Eを購入したよ!

GDD2010であまりにも刺激されてしまい、Acer Liquid EをIYH!してしまいました。

HT-03A持っているのですが、なにぶんこれからのAndroid開発はARMv7以降じゃないときついのかな?

って感じですね。ジンジャーブレッド(噂されてるやつ)や、AdobeさんがつくってるAppの仕様要件を見ていると。

それと、AcerLiquidは発表当初からとても気になっていた端末で念願?の入手というわけです。

これからLiquidたんをprprしてきまふ(;゚∀゚)=3ハァハァ

September 28, 2010

本日、GDD2010に参加してきます!!

去年からずっと楽しみにしていたイベントの一つGDDに参加できる資格を貰えたので参加してきます!

HTML5やChromeエクステンション、Androidなどのたくさんのディベロッパさんのセッション聞いて刺激をいっぱい貰って

次に活かせるように楽しんできたいと思います!!!!!

GDDが終わったあとなにやらスーパーハッカー枠で参加資格を貰った方々だけによる交友会なるものがあるみたいです。

それにも参加する予定ですが、正直怖いです。

怖い…



GDD2010:
http://www.google.co.jp/events/developerday/2010/tokyo/

DevLink:
http://gddjp-devlink.appspot.com/v.html?action=view&edit=true&id=RenaX

September 01, 2010

9月は1日1Appをやってみようかと思う。

タイトル通り頑張る。
頑張るって言うと途中であきらめちゃうん?って感じだけど
やれるだけやってみる。糞みたいなAppが30個生成されると思うけど。
プラットフォームはまだ決めてないけど、たぶんWebAppとAndroidAppその辺だろうね。あとはChromeExtension。
やれるだけやってみよう

July 17, 2010

Chromeのバージョンを戻す方法

元々Chromeがインストールされたディレクトリに以前のバージョンが残っていることが原則
regeditでHKEY_CURRENT_USER\Software\Google\Updateを開き、現在のバージョン値で検索。
「pv」がヒットすると思うので、その値を戻したいバージョン値で書き換える。バージョン値はディレクトリ名をコピって良いと思う。

dev使ってる時点でアレですから、regeditの使い方はしらね。
自己責任でよろしく。


June 21, 2010

PortablePython2.6.xにeasy_installを入れる。

PortablePythonで、easy_installを使おうと思ったんだが、そもそもそのような実行ファイルが見つからなかったので調べてみた。

やり方:
  1. PortablePythonフォルダのAppにある、setuptools, easy_install.py, pkg_resources.py, site.pyを削除 
  2. ez_setup.pyをDLし、Appフォルダに投下する。
  3. コンソールより、python ez_setup.pyを実行する。
あとは、
  • Scripts/easy_installがあるのでそいつを使えばおk

※PortablePythonはUSBフラッシュ環境など、インストールできない環境でもPythonを使うことができる魔法のソフト(←  
ここでDLできます。


参照:
http://groups.google.com/group/portablepython/browse_thread/thread/5cc217f34b895541?pli=1

June 17, 2010

PSP Type B Driver 64bitをオレオレ署名する

準備:
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)をDLしインスコ。
ちなみに、CPU毎に違うので以下でチェック。
  • X86 version: GRMSDK_EN_DVD.iso
  • AMD64 version: GRMSDKX_EN_DVD.iso
  • Itanium version: GRMSDKIAI_EN_DVD.iso 
.NET Frameworkツールのリファレンスはここ

PSP Type B DriverをDL、driver_x64準備。


以下手順:
    各ツールは"Microsoft SDKs\Windows\v7.0\Bin"
  1. makecert -sv "libusb0_x64.pvk" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -ss Root -len 1024 -sr localMachine -n CN="libusb0_x64.sys" "libusb0_x64.cer"
  2. ダイアログが出るのでパスワードを決める。(参考画像
  3. もう1つダイアログでるので、先ほど決めたパスワードを入力(参考画像
  4. cert2spc "libusb0_x64.cer" "libusb0_x64.spc"
  5. pvk2pfx -pvk "libusb0_x64.pvk" -pi "パスワード" -spc "libusb0_x64.spc" -pfx "libusb0_x64.pfx" -po "パスワード" パスワードは先ほど決めたものを使用。
  6. signtool sign /f  "libusb0_x64.pfx" /p "パスワード" /d "libusb0_x64.sys" /v "libusb0_x64.sys" 上に同じ
以上でドライバの署名ファイルの作成が終わった。あとは、署名をインストールしてドライバを読み込ませればおk
libusb0_x64.pfx -> パス入力 -> 信頼されたルート.レジストリ


※「bcdedit.exe /set TESTSIGNING ON」必須
参考:
64bit版Windows 7用のPT1_Driverに改造する方法

応用すればとりあえずなんだってオレオレ署名することができる。


June 05, 2010

Bloggerのポスト日付取得うんたら

なんか、仕様変更?があったみたいでtimestampでの取得は時刻のみっぽい。
いや、わからないんだけど。別ブログでテンプレートDLしたやつ使ってたら未定義値が返ってきたので。
まぁ備忘録ということで。
投稿のデザイン編集で、日付の雛形は20001231みたいなかたちのやつで。
他のやつの対応はだるいのでしないw
以下ソース
<div class='post' id='post'>
<div class='date'>
<small> 
<script type='text/javascript'> 
var date = <data:post.dateHeader/>
var date2 = date.toString();
var year = date2.substring(0,4);
var month = date2.substring(4,6);
var day = date2.substring(6,8);
</script>
<div class='date_y'><script type='text/javascript'>document.write(year);</script>年</div>
<div class='date_m'><script type='text/javascript'>document.write(month);</script>月</div>   
<div class='date_d'><script type='text/javascript'>document.write(day);</script>日</div>
</small>
</div>

May 19, 2010

gdippを各々のアプリケーションに適用させる方法

Twitter上で相性悪いアプリがあるなー云々とかいってたので、全体適用ではなく各々のアプリに適用させる方法を紹介したいと思います。(やり方自体はgdi++の時と一緒w)

ダウンロード:
gdippのダウンロードはこちら。32bit, 64bit版があるので使っているOSにあわせてください。

インストール:
Program Loaderを選択してインストール。※64bit版のかたは、64bit componentだけじゃなく32bit componentのほうもインストールしてくださいね(標準ではチェック入っているはず)

使い方:
デスクトップに「gdipp Loader 32」というショートカットができていると思います。 ※64bit版は「gdipp Loader 64」も作成されます。そのプロパティを開き、リンク先をメモっておきましょう。

次に適用させたいアプリのショートカット作りプロパティを開いてください。
先ほどメモしておいたリンクを今作成したショートカットの先頭に貼り付けて、次に半角スペースを入れてあげてください。
例) リンク先:["C:\Program Files (x86)\gdipp\gdipp_loader_32.exe" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"]


↑の感じです。これで完成です。あとは完成したショートカットから起動させればおkです。お疲れ様でした。

※1 「gdipp Loader 64」ショートカットは、64bitアプリで使用します。やり方は一緒です。
※2 ショートカットアイコンがgdippのものになってしまいます。気になるかたは逐次変更してください。

May 10, 2010

近況

クローラのテストコードをPythonで記述。
本コードをC++で。という感じ。GUIにするならC#あたり? さわってみたのだけれども、Cという名前がついているだけであんまりCっぽくない。ちょっと微妙… MS製だし… あと、Linuxでやりたいし…

来期から研究室配属(単位次第w)なのでその前までには完成させて、研究内容と結合してサービス云々。
今のところどのようなクローラーを作るかという段階ではない。とりあえずどっかのサービスをハックしようとか云々。

UbuntuでMumble Serverを。

1,インストール
sudo apt-get install mumble-server
2,設定
dpkg-reconfigure mumble-server
sudo vim /etc/mumble-server.ini
4,起動(実は自動起動されますが、-supwすると落ちるので。
sudo /usr/sbin/murmurd -ini /etc/mumble-server.ini
注意することはsudoしてあげないとデータベースを読み込んでくれないということ。

詳しい設定方法はちょっとわからないので割愛w

May 07, 2010

Ubuntu 64bit環境でFlash Playerを使う

すっかり忘れておったのでメモ
sudo apt-get install flashplugin-installer
で、いちよインストールされる。


Google ChromeとかFirefoxで使えるようにするには
Chromeは
sudo mkdir /opt/google/chrome/plugins
sudo ln -s /usr/lib/flashplugin-installer/libflashplayer.so /opt/google/chrome/plugins
Firefoxは
sudo ln -s /usr/lib/flashplugin-installer/libflashplayer.so /usr/lib/mozilla/plugins


このやり方のほかにも
こことかから拾ってきたのを適当なディレクトリにぶっ込んでlnすりゃいいと思われる。


※それにしてもadobeさん(´・ω・)カワイソス
いろんなサイトの動画プレイヤーがHTML5版とかでテスト始まってていよいよって感じ。

April 07, 2010

Win7のブートローダが別HDDにインストールしやがったので

SSDにWin7をインスコした際、めんどくさかったのでほかのHDDを接続したまま行ったせいか、

うんこWindows様はOSがインスコされたSSDにMBRを書き込まずに、別HDDに書き込んでしまいました。

その際の修復方法の備忘録です。

修復Disk or InstallDiskから修復モード選択後、ターミナルを開きます。

以下コマンドを

diskpart
list diskpart ←ここでインストール先のdisk番号をメモ!
select disk [先ほどメモった番号を入力]
list partition ←ここでインストールされているパーティッション番号をメモ!
select partition [先ほどメモった番号を入力]
active
exit
bootrec /fixboot
bootrec /fixmbr

ここまでやってまだWin7が起動しなかった。でもmbrは書き込まれているみたい。

もっかい修復ディスクを開いて、スタートアップの修復を行う。


この時、ちゃんとOSが表示されていればうまくいっているはず。


この方法はMBRを誤って壊したときやGrubを使わなくなったときに使える。


日本語でおk

March 26, 2010

Ubuntu 9.10にMongoDBをインストール

"sudo apt-get install mongodb" できる娘うぶんちゅたんなのでほいほい投げてみたけど、やっぱり無かったので、素直にgitから持ってきてコンパイルすることに。

下準備としてコンパイルに必要なパッケージをインストール
sudo apt-get install build-dep scons libreadline-dev libmozjs-dev libpcre++-dev libboost-dev

gitからソースを拝借
cd /usr/src
sudo git clone git://github.com/mongodb/mongo.git
cd mongo
sudo scons all

でやったらエラーはいてくれやがったので、ググる先生に聞いたら、SpiderMonkeyをUTF8形式でインスコしないとだめとかなんとか。
cd -
sudo wget ftp://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
sudo tar zxvf js-1.7.0.tar.gz
mv js/src mongo/js
cd mongo/js
export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
sudo make -f Makefile.ref
sudo env JS_DIST=/usr make -f Makefile.ref export

で、ここまでいれておk的なこと書いてあって"sudo scons all"したんだけど、同じエラーがでやがったぜばかやろー!

いろいろ調べたら、
sudo apt-get install xulrunner-dev
すりゃーいいらしい。

気を取り直して
cd
cd /usr/src/mongo
sudo scons all
sudo scons --prefix=/opt/mongo install

これでインストールは完了しました。

"/opt/mongo"にインスコされていると思います。

あとは、ユーザを追加します。※ほんの一例

sudo adduser --system --home /opt/mongo/ --no-create-home --shell /bin/bash --group --gecos "mongoDB Admin" mongo

DB置く場所はmongoユーザに書き込み読み込みの権限を渡してくださいね。
sudo mkdir -p /data/db
sudo chown -R mongo /data/db
sudo chmod a+x /data/db

残るは、MongoDBが起動時に立ち上げる方法ですが、こいつは割愛させていただきます。

起動方法は
/opt/mongo/bin/mongod
です。

コンフィグはまだよーわからないので後ほどエントリーしたいと思います。


こことかここを参考にすればいいかもYO!

先陣を切っている皆様方に敬意を込めて!



おまけ

Pythonで使うには
sudo apt-get install python-setuptool
sudo easy_install pymongo


FreeBSDだとPortsで普通に通った。FreeBSDってUbuntuよりできる子なのか!?

March 06, 2010

Tumbler Photoバックアップスクリプトを作ったのだが…

DL→Ziped→配布までするスクリプト書いたんだけど、I/Oがネックで時間かかりすぎた。
なので、キューリスト作成だけでいいかと、コード書き直して実行したのですが、拡張子判定のために頻繁にI/Oでやっぱり時間喰う。 
700位Photo投稿数あると10分くらいかかるw(最適化できるところはしたのだが
ただ、URLだけで良いというのであればAPIにアクセスするだけなのでそんなに時間はかからなかった。
でも、拡張子判定されていないので各自で行って貰わなければいけないのだけれど。
といううことで、クローラー作れば、いいんじゃね?って展開になったのだが。
クローラー作る知識なくて\(^o^)/状態w
幸いなことにPythonには数多くのモジュール&情報が流れているので何とかなりそうなんだけど。
一から作ることになったら、ついったーの皆さんに聞きまくりながらどうにかしたいところw(人頼み
URLリストだけで良いよってかたがいたら、CGIにして公開しようと思います。

February 26, 2010

初JavaScript+初GoogleChromeExtensionで。

ついったーに今閲覧している情報をついーとするExtensionを作成した。

Post Now Watching!

初JSで、もうわけわかめじょうたいでつくった。バグでるとおもう。

なんでつくったかというえば、Devfestの課題のため(笑)としか言いようがないけど、まぁ良い機会にはなったかな。

JavaScriptもやってみるとマゾッ気のある僕には適しているのかなとも思うけど

これはテキストエディタでやってたら頭がこんがらがるかもとも。

Aptanaたんのおかげで乗り越えられたけどね。

まぁそんなところ。

February 03, 2010

EASEUS Disk CopyをブータブルUSBメモリで。

EASEUS Disk Copy自体はDiskからの起動をサポートしていますが、ネットブックなどのドライブを持たないPCからは、USBドライブで使わなくてはいけなく非常にだるいですね。
とりあえずEASEUS Disk CopyをDLしてきてiso内を見たらGrubにより起動させているみたいなのでUnetbootinでいけるんじゃね?ということで試したらいけたのでその時のメモ。

手順
1、EASEUS Disk CopyをDLしてきましょう。

2、UnetbootinをDLしてきましょう。(僕はWindows版)

3、dc.zipを展開する。

4、Unetbootinを起動してDiskimageモードで、先程展開したdc.isoを選択します。

5、OKを押してしばらくすればブータブルUSBメモリーの完成です。

参考画像

January 05, 2010

NicoRoid

NicoRoidはAndroidでニコニコ動画を楽しむアプリです。

とか言っておく。

夏コミリリースに向けて Java・C++の勉強を兼ねてとかなんとか。

ついったーぼっと作成意欲も薄れたし、新たな目標が出来て良かった。

Android端末買った。

あけましておめでとうございます。



さてAndroid端末の件ですが、思い切ってauからDoCoMoへMNPでHT-03Aを0円で入手。

今のところさくさく動いてるところ。

カスタムROM云々あるけど、サポート効かなくなるのでやらない方向だけれど

別機種を入手したら開発用端末としていろいろ弄る予定。

プランなどの使用形態は

SSバリュー,bizホダブル,モペラUライト,ケータイ補償をつけた。

パケは初月だけフル使用で、あとはCMR-250で芋を使い、2000円弱/月に抑えようと考えている。

さっそく作りたいものが出来たのでJavaのお勉強しないと(ぇ