2011年5月27日金曜日

PythonでExcel編集

便利モジュールを発見
その名も「pyexcelerator」

http://sourceforge.net/projects/pyexcelerator/

いつもどおりの手順
1.インストール
easy_install -U pyexcelerator

2.確認
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyExcelerator

# 読込みテスト
sheets = pyExcelerator.parse_xls('d:/test.xls')

for sheet_name, values in sheets:
    print 'sheet =', sheet_name
    print '------------'
    for row_idx, col_idx in sorted(values.keys()):
        v=values[row_idx,col_idx]
        print row_idx,col_idx,v

# 書込みテスト
book = pyExcelerator.Workbook()
sheet = book.add_sheet('sheet_name1')
sheet.write(0, 0, 'test')
book.save('test.xls')


pyExceleratorのサンプルプログラムに
罫線や画像イメージの挿入などするものがある。

参考URL
---
http://d.hatena.ne.jp/tenkoma/20060903/1157300072

debian ftpサーバ構築

SCPでファイル転送でも良いけど、
もっと楽にデータのやり取りできるようにFTPサーバ構築してみた。

いつもどおりの手順。


1.インストール
apt-get install vsftpd

2.設定
vim /etc/vsftpd.conf
---
anonymous_enable=NO
local_enable=YES
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
force_local_logins_ssl=NO
force_local_data_ssl=NO

ログイン可能アカウントを設定
/etc/vsftpd.chroot_list
---


3.確認
FFFTP、FileZillaなど使ってみる。


参考URL
---
http://www.geocities.jp/yukke_no_kobeya/kurobako/de_100.html

debian localeエラー

apt-get updateしたら次のようなエラーが出た。

perl: warning: Setting locale failed.    
perl: warning: Please check that your locale settings:
 LANGUAGE = (unset),
 LC_ALL = (unset),
 LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

ベースがlennyで、squeeze(sid)へdist-upgradeした後、そのままの設定だったので
apt-get updateしたので、Wheezy(sid)のパッケージを見てしまったようだ。。
本当の原因は分からないままだけど、エラー文みて分かるとおり
locale設定が足りないだけなので、必要なパッケージをインストールした。

いつもの手順。
1.インストール
 apt-get install locales


2.設定
 dpkg-reconfigure locales

 選択した項目
ja_JP.UTF-8 UTF-8

 設定完了まで4,5分かかる。


3.確認
locale
---


問題のエラー文が表示されなくなっていれば成功。

ここで注意しなければならないのは、Sambaを使ってる時の文字コード。
EUC、UTF-8、SJIS、CP932、色々あるので環境に合わせること。
個人的設定は、
Linux周りはUTF-8で統一して
Windows系はCP932(SJISだと一部文字化けする)


参照URL
---
http://landisk.kororo.jp/diary/08_locale.php
http://gmt-24.net/archives/319

2011年5月26日木曜日

mini2440にssh接続

いつもの手順でさくっとインストール。
そしてサーバを立ち上げて接続を試みてみる。

1.インストール
 aptitude install openssh-server

 インストールエラーになったとき
  dpkg --configure -a


2.サーバ設定
 サーバ:mini2440のIPを調べておく(ifconfig、例:192.168.2.20)
 アクセス範囲設定
 /etc/hosts.allowを編集
---
sshd: 192.168.2.

/etc/hosts.denyを編集
---
sshd: ALL

/etc/ssh/sshd_configを編集
---
>セキュリティー関係なしにログインする場合
PermitEmptyPasswords yes に修正
# UsePAM yes コメントアウトにする

>認証機能を入れる場合
PermitRootLogin yes/noどっちか設定
# AuthorizedKeysFile %h/.ssh/authrized_keysコメント外す

#アクセスユーザの設定(最後の行に追加)
DenyUsers ALL
Allowusers mini2440


3.クライアント設定
 ○クライアント:PC側からサーバIPに接続
  ssh 192.168.2.20

これでログイン出来れば成功。



4.ttySAC0のコンソール出力をOFFにする。
シリアルポートが使いたい時、
u-bootの起動パラメータを設定する
---
http://ivis-mynikki.blogspot.com/2010/11/mini2440debianlenny.htmlより引用

setenv bootcmd 'mmcinit ; ext2load mmc 0:1 0x31000000 /boot/uImage ; bootm 0x31000000'
setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 mini2440=3tb root=/dev/mmcblk0p1 rw rootfstype=ext3 rootwait'
saveenv
---
console=ttySAC0,115200n8の部分で

ttySAC0の部分をfb0にする

参考サイト
---
http://www.linux.net-japan.info/install04.html

2011年5月17日火曜日

debian環境の設定メモ

Debian環境でMono/CLIを導入に関するメモ
http://mono-project.com/DistroPackages/Debian

・インストール方法(lenny)
source.list
>deb http://backports.debian.org/debian-backports main

>aptitude update
>aptitude -t lenny-backports install mono-complete

・非公式版
source.list
>deb http://debian.meebey.net/pkg-mono /



あとSSHの設定方法メモ
 http://mono-project.com/DistroPackages/Debian

・インストール方法
>aptitude install ssh

sshd_config
/etc/ssh/sshd_configを開き

PermitRootLogin yes /rootでログインできるようにする
AuthorizedKeyFile %h/.ssh/authorized_keys コメントを外す

# 必要があれば特定ユーザのみログインできるようにする
# DenyUsers ALL
# Allowusers etch

sshアクセス範囲を内部限定にする
/etc/hosts.allow
ALL: 127.0.0.1
sshd: 192.168.

/etc/hosts.deny
sshd: ALL

2011年5月16日月曜日

LinuxでUSB制御(検討編)

Linuxボードがあります。
シリアルポートや、USBポートがあるから制御に使うのが筋ってもの。

しかしどうやって使うの?ドライバーは?という疑問が多々あるので、
今回は導入前の検討編。

1.インストール
 libusbをインストールする。(Debian系列ではusbutils)

2.USB機器を接続して、「lsusb」ベンダIDを調べる。
 Bus 001 Device 001: ID 0123:4567

  ベンダID : 0123
  プロダクトID : 4567

3.サンプルソース(送受信周りがまだ未完成)
#include 

static struct usb_bus *m_bus;
static struct usb_device *m_dev;
static usb_dev_handle *m_dh;



static int USBopen()
{
 usb_init();
 usb_find_busses();
 usb_find_devices();

 /* search target device */
 for (m_bus = usb_get_busses(); m_bus; m_bus = m_bus->next) {
  for (m_dev = m_bus->devices; m_dev; m_dev = m_dev->next) {
   if ((VENDOR_ID == m_dev->descriptor.idVendor) && (PRODUCT_ID == m_dev->descriptor.idProduct)) {
    return (NULL != (m_dh = usb_open(m_dev)))? 1 : -2;
   }
  }
 }
 return -1;
}



//送受信
//アクセスするUSBデバイスの「bmRequestType」や「bRequest」、「wValue」、「wIndex」、「wLength」などとエンドポイントなどを調べておく必要がある。
unsigned char msg[8];
int result=usb_control_msg(dh, bmRequestType, bRequest, wValue, wIndex, msg, sizeof(msg), timeout);
if(result<0){printf ("Control message error. (%s)\n", usb_strerror());}


//read
#define USBclose() usb_close(dh);
#define USBread(readbuf, bytes, timeout) usb_bulk_read(dh, end_point, readbuf, bytes, timeout)


void test(){
 USBOpen();
 USBread(readbuf, bytes, timeout);
 USBClose();
}
4.コンパイル
 cc -o test test.c -I/usr/include/ -L/usr/lib/ -lusb


参考URL
http://penguin.tantin.jp/hard/libusb%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html
http://bake-san.com/usb004.htm
http://blog.livedoor.jp/eru_at/archives/1262118.html

2011年5月11日水曜日

LinuxでBASIC言語を使う

今回、組込みボードであるMini6410を購入したので、
あまり触れられてない事をしようと思って、元祖BASICを動かせる環境を構築してみた。

BASICと聞けば、Visual BASICと答える人が大半を占めると思いますが、、
元祖インタプリタ言語、BASICというものがあるのです。(N88-BASIC、F-BASICなど)
当時速さを求める商用利用では、アセンブラやTurbo Cなど、簡単な制御はBASICが多かったんじゃないでしょうか。
時代は移り変わって多種言語化されてますが、
この言語がいくら旧式とはいえ、プログラムに必要な要素が入っているので
現役で使おうと思えば十分使えたりします。

○調べたときに見つけたサイト
 http://ja.wikipedia.org/wiki/BASIC
 http://www2.nsknet.or.jp/~azuma/l/l0088.htm
 http://www2.airnet.ne.jp/sardine/langs/BASIC.html
 http://sourceforge.jp/magazine/03/07/28/1155247

最低でもシリアル通信は使いたいので、使えるものを探していたら
日本産でWin/Linux対応のBASICを発見。
http://hp.vector.co.jp/authors/VA008683/setup.htm

方言がN88-BASICフォーマットではないので注意。

サンプルプログラムがあるので、ためしに実行してみたら動いた。


ちょっと気になった点といえば、16進数表現が&HではなくBVALだったり、
GOTOやGOSUBが行番号指定のジャンプのみというところかな。
これがラベルに対応してくれると結構使える。
個人的には、N88やF-BASIC対応してくれるとやりやすいかも。

2011年5月10日火曜日

Aliexpressサイトでの買い方。

特にネタもなかったので、
中国市場Aliexpressサイトでの買い方の紹介します。

1.まずはじめに覚えておくこと
 スペック説明や見出しタイトルに間違いがあります。。
 Amazonやヤフオクとか国内ネットショッピング感覚で買うと、
 届いた時に希望していたものと違う可能性があるので、
 買うときは必ず英語チャットでスペック確認などした方が良いです。

2.キャンセルしたい時
  一度カートに入れて支払いしてしまった場合、購入商品の管理画面から
  キャンセルする事ができます。しかし、売り手は無視して発送してきたりします。
  結果、商品を結局買わされる事になってしまうので、必ず連絡をいれること。
  追記:2011/05/27
    キャッシュフローですが、Paypalで決済した段階で振込み・購入完了してます。(ここ注意!)
    振り込んでからスペックが違うのに気づいても、対応は業者依存になってしまうので
    キャンセルしない買い方を心掛けた方が良いです。
    どうしてもキャンセルしたい場合は、まず業者に連絡して交渉、もしくは
    Paypal、Aliexpressに問い合わせるしかなさそうです。
    (連絡しても返事しない業者もあります)

3.商品の選び方
  まずみるべきものは、
   ・商品説明
   ・業者の評価
   ・最低何個から買えるか
   ・送料・価格
  欲しい商品のアクセサリなども扱ってるので、
  写真だけで判断はしないようにしたほうがいいです。

4.買い方
  カートに入れてPaypalなどで支払いすれば発送してくれます。
  注文してから1~3日後に発送してくれて、手元に届くまでおおよそ1~2週間かかります。
  その経過はトラックナンバーで照会できるようのですが、情報更新されるまでしばらく時間がかかります。。
  おおまかに言えば、大体1週間くらい。見れる頃には日本に届いてからだったりするので、
  ゆっくりした心を持って、買い物したほうが良いと思います。
  もう少し具体的に説明すると、海外の流通事情、税関、国内の流通事情などが絡んでます。

5.商品が届いた時
  現物確認をして、購入商品の管理画面で届いた事を知らせるボタンを押し、業者の評価をする。




購入を考えている人に参考になってもらえたら良いなと思います。

2011/5/16 追記
 実際取引したときのEMS追跡データを張っておきます。
どんな流れで海外から荷物が届くのか覚えておくといいかもしれません。
ちなみに追跡情報が見れるのは、「国際交換支店に到着」このあたりからと思ってたほうがいいです。
2011/8/28 追記
 去年あたりからPaypal支払いが出来なくなってます。
支払い方法は何種類かありますが、クレジットカードのVISA又はMasterがおすすめです。
今までPaypal経由でJCBカードも使えてたけど、これが使えなくなってるので買う方は支払方法を
まず決める所からスタートです。。

- - - - - - - - -
○取引1(注文してから2週間くらい)
5月 7日 16:18 : 引受(HONG KONG)
5月13日 15:47 : 国際交換支店から発送(KOWLOON D, HONG KONG)
5月15日 1:29 : 国際交換支店に到着(千葉県, 成田国際空港支店)
5月16日 9:00 : 通関手続中(千葉県, 成田国際空港支店)
5月16日 11:13 : 国際交換支店から発送(千葉県, 成田国際空港支店)
5月17日 7:10 : 到着
5月17日 ご不在のため持ち戻り
5月17日 20:19 : お届け先にお届け済み

○取引2(注文してから1週間くらい)
5月 6日 10:16 : 引受(CHINA)
5月 7日 0:59 : 国際交換支店から発送(GUANGZHOU EMS, CHINA)
5月 7日 23:40 : 国際交換支店に到着(東京都, 東京国際支店)
5月 8日 4:30 : 通関手続中(東京都, 東京国際支店)
5月 8日 11:24 : 国際交換支店から発送(東京都, 東京国際支店)
5月 8日 12:30 : 通過(東京都, 新東京支店)
5月 8日 17:06 : 到着(東京都, **支店)
5月 8日 ご不在のため持ち戻り
5月10日 20:07 お届け先にお届け済み

○取引3(注文してから1週間くらい)
2月26日 17:44 : 引受(CHINA)
2月27日 10:52 : 国際交換支店から発送(QINGDAO D, CHINA)
3月 1日 0:54 : 国際交換支店に到着(東京都, 東京国際支店)
3月 1日 4:30 : 通関手続中(東京都, 東京国際支店)
3月 1日 5:42 : 国際交換支店から発送(東京都, 東京国際支店)
3月 1日 7:40 : 通過(東京都, 新東京支店)
3月 1日 13:42 : 到着(東京都, **支店)
3月 1日 ご不在のため持ち戻り
3月 2日 20:02 : お届け先にお届け済み

Androider