2012年4月20日金曜日

sakura vpsでlogwatch,メールサーバーなし

インストールや設定がめんどいのでメールサーバーなしでlogwatch
ここ
素晴らしい。
sendemailは野良ビルドしなくても
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl
でOK

2012年4月9日月曜日

jquery sortableでtable-trをソート

jquery sortableでソートする対象はtableのほうがかっこいいよね。
という事でここ

2012年4月7日土曜日

UbuntuのfirefoxでJAVA pligin有効化

桜のVPSでUbuntuサーバーを入れるとき必要だったのでメモ
ここによるとicedtea6-pluginが有効になっていれば良いとのこと。

oracleからパクってくる必要なし。
ここで稼働をチェックしよう

2012年4月6日金曜日

generic viewでerror

あんまりアホなことすると、とんでもないエラーを吐いたので記録。

Exception Type:     TypeError
Exception Value:     __init__() takes exactly 1 argument (2 given)

ってわかりませんですがな。
実は、
FooGenericView.as_view()
の後ろが抜けていただけ。orz

2012年4月4日水曜日

Django否定のfilter

こいつ気に入らないから、除いてなんてことあるよね。(ウソ)

from django.contrib.auth.models import User
from django.db.models import Q


User.objects.filter(~Q(id=1))

2012年3月30日金曜日

sakura.ad.jpのパスワード管理およびサポートがタコ

さくらインターネットのVPSが熱いので、「さくらインターネット」をかつて利用していたことがあったのでVPS借りようとしたがサインアップで「※会員IDもしくはパスワードが間違っています」だそうだ。
おかしいなと思ってトップページから会員メニューへログインしたらできた。
はあ?
IDを変えるわけにもいかないので会員メニュー内のパスワード設定で新しいパスワードを古いパスワードのまま設定しなおした。そしてサインアップしようとしたが「※会員IDもしくはパスワードが間違っています」だそうだ。
はあ?
無論、会員メニューにはログアウトして再度ログインもできる。

上記のことをサポートに伝えたら「会員メニュー内のパスワード設定で新しいパスワード」を設定しろという。

とか言っている間に、
「さくらのVPS 2G」プランのお申し込み受付一時停止のお知らせ
となってしまった。orz

田中社長
プログラムにも社内にもバグが紛れ込んでまっせ。


追記:
 「会員メニュー内のパスワード設定で新しいパスワード」で異なったパスワードを設定したら、ログイン出来た。しかし、またしても、「さくらのVPS 2G」プランのお申し込み受付一時停止のお知らせ
orz

追記:
第2回目で何とかゲットしますた。

\mathversion{bold}が悪さ

texliveでlongtableのフォントサイズが拡大されたりしていたが
\mathversion{bold}が悪さをしてました。
なぜそうなるのかは不明だが、トップに書いておくのはやめて個別に数式のところに\brで解決。

2012年3月23日金曜日

texliveで文字サイズがA4に収まらない。

ここで文字サイズがA4に収まらない。と言っていたが、hyperrefがいたずらしていた。
ここここ
\usepackage[dvipdfm,bookmarks=true, bookmarksnumbered=true, bookmarkstype=toc, setpagesize=false]{hyperref}
で解決。

と言っても、hyperrefはなんでページサイズいじるの?

2012年3月22日木曜日

pipでupdate

virtualenv.pyで作った環境にpipでinstallしたものをupdateしたい。

pip freeze -l | sed 's/=.*$//' | grep -v dateutil | xargs pip install -U

grep -v dateutilは1.5を入れときたいから。

2012年3月9日金曜日

upTex@texliveでしおり文字化け

\usepackage{atbegshi}
\AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}}
\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true, bookmarkstype=toc]{hyperref}
を入れる。


「互換性の問題から,元の機能は削除してあります。」
だそうだ。

残るは、文字の大きさだ。

2012年3月8日木曜日

py2exeでUnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 32: invalid start byte

Traceback (most recent call last):
  File ".\setup.py", line 38, in <module>
    zipfile = None,
  File "C:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 312, in _run
    self.create_binaries(py_files, extensions, dlls)
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 572, in create_
binaries
    arcname, target.script)
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 796, in build_e
xecutable
    exe_path = os.path.join(self.dist_dir, exe_base + ext)
  File "C:\Python27\lib\ntpath.py", line 108, in join
    path += "\\" + b
  File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 32: invalid
start byte
とでたら、ソースをどっか他所へ、デスクトップではダメ。
多分、pythonのバグだと思うけれど。追求する時間がないので放置

py2exeでerror: MSVCP90.dll: No such file or directory

dllへのパス
sys.path.append(u'..\\path\\to\dll')
を追加

py2exeでRuntimeError: Could not find the matplotlib data files

py2exeでRuntimeError: Could not find the matplotlib data files
と出たら
data_files=matplotlib.get_py2exe_datafiles(),
を、setupに追加しよう。ここ

py2exeでDebug: src/helpers.cpp(140): 'CreateActCtx' failed with error

py2exeでDebug: src/helpers.cpp(140): 'CreateActCtx' failed with errorと出たら、
console=[u'mixer.py'],
から
windows=[u'mixer.py'],
wxPythonを使っているとき注意

2012年3月6日火曜日

upTex@texlive

texliveにupTexが含まれたみたいなので、ここ

指示に従ってインストール。
wget -c http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
wget -c http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz.sha256
sha256sum -c ./install-tl-unx.tar.gz.sha256
tar -xzf ./install-tl-unx.tar.gz
cd ./install-tl-20120408/
sudo ./install-tl

sudo /usr/local/texlive/2011/bin/x86_64-linux/tlmgr update --self --all
sudo /usr/local/texlive/2011/bin/x86_64-linux/tlmgr --repository http://www.tug.org/~preining/tlptexlive/ update --all
sudo /usr/local/texlive/2011/bin/x86_64-linux/tlmgr --repository http://www.tug.org/~preining/tlptexlive/ install pmetapost pxdvi uptex
えらく時間が掛る。

sudo aptget install ttf-ipafont

dvipdfmxでwqy-zenhei.ttfで怒られる。

sudo mkdir /usr/local/texlive/2011/texmf-dist/fonts/truetype/public/wqy-zenhei/
sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc /usr/local/texlive/2011/texmf-dist/fonts/truetype/public/wqy-zenhei/wqy-zenhei.ttf

sudo /usr/local/texlive/2011/bin/i386-linux/mktexlsr
kpsewhich wqy-zenhei.ttf
/usr/local/texlive/2011/texmf-dist/fonts/truetype/public/wqy-zenhei/wqy-zenhei.ttf

dvipdfmx -f cjk.map ./***.dvi

でけた。
でも、フォントサイズが異なるような。A4に収まらない。???
目次も文字化け???

なんかちゃうんやろな。元のTexファイルは別の環境でpdfがちゃんとできていたから。

2012年3月2日金曜日

大赤字でも特別ボーナス支給

郵便局ネタ。
まじっすか。最後は税金で穴埋めのモラルハザード。
ここ
http://diamond.jp/articles/-/16304

BeautifulSoupでtable内tr検索

図書館の貸出を自働で取り込むプログラムをつくろうとしたら、<table>タグの中に<table>が複数入れ子になっている汚いhtmlでBeautifulSoupでfindAll(u'tr')としたら下の階のも取り出してしまう。
 findAll(u'tr', recursive=False)
で単一階層から取り出してくれる。

2012年2月15日水曜日

pyUSB 1.0

デバイスを見つける。
idVendorとidProductにセットして呼ぶ
device = usb.core.find(idVendor=vendor_id, idProduct=product_id)

デバイスを閉じる。
usb.util.dispose_resources(device)

最初0.4で作っていたが、1.0では動かなかった。legacyで動くはずなんだけれどバグだと思って、めんどくさいから、1.0で作りなおしたとさ。

2012年2月6日月曜日

mbed始めました。

冷やし中華じゃあ無いよ。
mbed始めました。
オンラインに開発環境があるって素敵。
いままでマイコンって開発環境整えて始めるまでが大変だったけれど、ゲジゲジ買ってきてUSBを挿してサインアップするだけ。

一個だけチカチカするのではつまらないので4つ流してみました。
 て言うか、簡単すぎ。ものの10分でできた。
小学生でも高学年なら十分やれるね。

2012年2月1日水曜日

windows XPでlibusb-win32によってインストールされたドライバ削除

苦しんだのでメモ

windows XPでlibusb-win32によってUSB機器をコントロールしようとしてドライバを組み込んだ。
機器に添付のドライバで動かそうとlibusb-win32のは要らないから削除した(レジストリの含めて)が何度やってもlibusb-win32が出てくる。

原因
windows/inf/oem**.infに書きこまれていた。
oem**.infを削除して、完了。

参考:ここここ

2012年1月31日火曜日

libusb with pyUSB

pythonでUSBを使わなければならなかったので、試行錯誤の結果をメモ。
必要なもの。
1. libusb
2. pyUSB
3. SnoopyPo

ターゲットはUSB接続のA/D、D/Aモジュール。windows XPまでしかサポートされていないがwindows 7で使いたい。
1)開発環境はUbuntuなのでlibusbとpyUSBはapt-getでinstall
2)SnoopyPoでUSB通信を傍受。使い方は同梱のsnnopy_pro.txtに書いてある。xmlにexportしてBULK_OR_INTERRUPT_TRANSFERのendpointとpayloadbytesに注目
例えば今回の8bitD/A出力だと
    <urb    sequence="13">
        <function>
            BULK_OR_INTERRUPT_TRANSFER
        </function>
        <endpoint>
            -1
        </endpoint>
        <packetcount>
            1
        </packetcount>
        <payload    packet="0">
            <payloadcount>
                4
            </payloadcount>
            <payloadbytes>
                29033300
            </payloadbytes>
        </payload>
    </urb>
 となっている。
3)pyUSBの基礎は他を当たってね。
4)2)の情報からD/A出力は
usb_dev.handle.interruptWrite(usb_dev.endpoints[0].address, [0x29, 0x03, 0xff, 0x34], timeout)

追記:

http://www.jespersaur.com/drupal/book/export/html/21
http://www.cs.indiana.edu/~bpisupat/work/usb.html
http://www.ladyada.net/learn/diykinect/
http://www.linuxjournal.com/article/7353
http://tali.admingilde.org/linux-docbook/writing_usb_driver.pdf
http://www.reactivated.net/weblog-content/20050806-reverse-0.2.txt
http://matthias.vallentin.net/blog/2007/04/writing-a-linux-kernel-driver-for-an-unknown-usb-device/

2012年1月28日土曜日

linuxでUSB vender ID

$lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 058f:6377 Alcor Micro Corp. Multimedia Card Reader
Bus 003 Device 003: ID 0bd5:0120 

2012年1月24日火曜日

HttpResponseRedirectにcontextを渡す。

あるページにリダイレクトして、リダイレクト元のページに戻るれるようボタンを表示したい。

    request.session['send_page'] = reverse('send_page')
    return HttpResponseRedirect(u'page_send_to')

リダイレクト先のテンプレートで
        {% if request.session.send_paget %}
            <a href="{{ request.session.send_page }}"><img src="{{ MEDIA_URL }}path2img/back.png" alt="Back to Tree" /></a>
        {% endif %}

2012年1月23日月曜日

DjangoでformのForeignKey選択設定

Djangoでmodelを与えてformを作成すると、勝手にForeignKeyはselectionをoptionで用意してくれる
tutorialの
class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField() 
 なら、pollはclass Select(Widget)でoptionに選択可能なqueryの結果が表示される。
でもここではその中でも特定の要素を持つものに絞りたい。
form.fields['poll'].queryset = Poll.objects.filter(hoge=fuga) 
 
さらに、特定の値をデフォルトにするには、 
form.fields['poll'].initial = Poll.objects.get(pk=fuga) 

2012年1月10日火曜日

matplotlibで日本語

ここを参考にさせて頂きました。knaka20blueさんありがとうございます。
前の投稿分に日本語でタイトル追加。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Used to guarantee to use at least Wx2.8
import wxversion
wxversion.ensureMinimal('2.8')

import wx
import wx.aui
import matplotlib
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx
import matplotlib.font_manager as fm

class Plot(wx.Panel):
    def __init__(self, parent, id = -1, dpi = None, **kwargs):
        wx.Panel.__init__(self, parent, id=id, **kwargs)

        self.figure = matplotlib.figure.Figure(dpi=dpi, figsize=(2,2))
        self.canvas = FigureCanvasWxAgg(self, -1, self.figure)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.canvas, 1, wx.EXPAND)
        self.SetSizer(sizer)

    def get_figure(self):
        return self.figure

def demo():
    app = wx.PySimpleApp()
    frame = wx.Frame(None, -1, 'Plotter')

    plot = Plot(frame)
    sizer = wx.BoxSizer()
    sizer.Add(plot, 1, wx.EXPAND)
    frame.SetSizer(sizer)

    axes = plot.get_figure().gca()
    axes.plot([1, 2, 3, 4, ],[2, 1, 4, 1, ])
    prop = fm.FontProperties(fname='/usr/share/fonts/opentype/ipafont/ipag.ttf')
    plot.get_figure().gca(kwargs='title').set_title(u'グラフだぴょーん', size='24', fontproperties=prop)

    frame.Show()
    app.MainLoop()

if __name__ == "__main__":
    demo()

matplotlibでグラフ

GL220を使って取り込んだデーターをグラフ化したい。
探してきたのは「matplotlib
wxWidgetsともバインドできるらしい。という事でサンプルを見てみたが、手が込んでいて猿脳にはわからない。ということで最小限化してみた。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Used to guarantee to use at least Wx2.8
import wxversion
wxversion.ensureMinimal('2.8')

import wx
import wx.aui
import matplotlib
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx

class Plot(wx.Panel):
    def __init__(self, parent, id = -1, dpi = None, **kwargs):
        wx.Panel.__init__(self, parent, id=id, **kwargs)

        self.figure = matplotlib.figure.Figure(dpi=dpi, figsize=(2,2))
        self.canvas = FigureCanvasWxAgg(self, -1, self.figure)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.canvas, 1, wx.EXPAND)
        self.SetSizer(sizer)

    def get_figure(self):
        return self.figure

def demo():
    app = wx.PySimpleApp()
    frame = wx.Frame(None, -1, 'Plotter')

    plot = Plot(frame)
    sizer = wx.BoxSizer()
    sizer.Add(plot, 1, wx.EXPAND)
    frame.SetSizer(sizer)

    axes = plot.get_figure().gca()
    axes.plot([1, 2, 3, 4, ],[2, 1, 4, 1, ])

    frame.Show()
    app.MainLoop()

if __name__ == "__main__":
    demo()
もとは、embedding_in_wx5.py 。wxPanel上にFigureCanvasWxAggを重ねて、そのパネルをwxFrameにwxBoxSizerで貼りつけた。