CORDEA blog

Android applications engineer

s3cmdの実行時に”An unexpected error”

Macで使っててかなり便利なのでFedora 19でも使おうとしてエラーが出たのでメモ。


以下のようなコマンドを実行するとエラーが出る。

s3cmd ls s3://example.bucket/files/

IOError: [Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/stemming-1.0-py2.7.egg/EGG-INFO/top_level.txt'


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please report the above lines to:
s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



書いてある内容そのままなので

sudo chmod 774 /usr/lib/python2.7/site-packages/stemming-1.0-py2.7.egg/EGG-INFO/top_level.txt


おわり

RでGmailに来たメールデータを分析してみる

はじめに

今回はGmailのバックアップのローカルにとっている間に思いついたメールデータの簡単な分析を行ってみます。

前準備

まずはGmailのデータをCSV形式でローカルに落としてきます。
Gmailから直接でも出来るかもしれませんが、今回はMozilla ThunderbirdのAdd-onであるImportExportToolsを用いました。

f:id:CORDEA:20140526105847p:plain


大体2万件程度のデータで100MBくらいのCSVデータが出力されます。

 

結果

処理件数: 17,127件

 

Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 1.00 2.00 16.56 9.00 947.00

 

From Freq %
1 自分 947 5.5292813
2 rakuten-sec.co.jp 666 3.8885970
3 mynavi.jp 661 3.8594033
4 onamae.com 529 3.0886904
5 twave.co.jp 432 2.5223332
6 zozo.jp 378 2.2070415
7 itohkyuemon.co.jp 327 1.9092661
8 mail.rikunabi.com 299 1.7457815
9 nttxstore.jp 296 1.7282653
10 dev.twitter.com 296 1.7282653
11 amazon.co.jp 290 1.6932329
12 mail.rakuten-card.co.jp 287 1.6757167
13 boj.or.jp 273 1.5939744
14 nissen.co.jp 225 1.3137152
15 mail.rakuten-bank.co.jp 217 1.2670053
16 e-trend.co.jp 191 1.1151982
17 mail.rakuten-card.co.jp 188 1.0976820
18 lenovo-news.com 175 1.0217785
19 ezweb.ne.jp 159 0.9283587
20 amazon.co.jp 157 0.9166813


http://cordea.jp/material/plot/Rplot01.png
http://cordea.jp/material/plot/Rplot02.png



 

最後に

圧倒的に自分が上というのが正直驚き
絶対楽天だろうと思っていたら意外に自分宛のメールが多かったようです。

あと時間別のメール受信料で6時にピークがあるのは確実にお名前.comでしょうね・・・

メールデータはtitleで形態素解析したりと、いろいろ使い道が考えられますので、興味がある方はぜひやってみてください。

BeagleBone BlackにDebian Wheezy 7.2を導入する。

はじめに

つい先日(前記事)にてFedora 20 LXDE Spinを導入いたしましたが、予想していたとはいえ流石にディスプレイ出力が出来ないというのは辛かったため最終的にDebian Wheezyを導入することにしました。

Ubuntuも導入してみましたが正直しっくりこなかった(というよりUbuntuがあまり好きではない)のでこのような形になりました。

 

さて、前記事と同じ注意となりますが

本記事ではSSH接続だけでなく、BBB自身からの映像(ディスプレイ)出力、BBBへの各種入力を目的としています。

SSH接続だけでよい場合は他の方の記事を参考にされるとスムーズかと思います。
というかUbuntuでもさして変わりないのでは・・・



バージョン等

  • Fedora 19 デスクトップ版(SDへのインストールに使用したPCのもの)
  • BeageBone Black Debian Wheezy 7.2(BBBへインストールしたもの)

 


環境構築に当たって購入したもの

前記事をご参照ください。




手順


インストール先のSDカードを挿したら、マウント先を確認して次のコマンドを入力してください。

wget http://s3.armhf.com/debian/wheezy/bone/debian-wheezy-7.2-armhf-3.8.13-bone30.img.xz

xz -cd debian-wheezy-7.2-armhf-3.8.13-bone30.img.xz > /dev/[MEDIA LOCATION]


以上で完了です。

電源の消えているBeagleBone Black(以下BBB)にSDカードを挿してS2ボタンを押しながら電源をつけてください。

無事に起動すれば、Fedoraのときとは違い、最初からディスプレイにCUIが表示されているかと思います。


ログイン情報は以下の通りです。


ここからはログインして入力してもSSHで接続して入力しても構いません、お任せします。

 

 
まずはGUIを表示しましょう。

sudo apt-get update
sudo apt-get install task-lxde-desktop
sudo reboot


これでGUIが表示されたのではないでしょうか。
再起動がうまくいかなかったなら電源を抜いてS2ボタンを押しながら電源を入れてください。



次は日本語化です。

sudo aptitude -y install task-japanese task-japanese-desktop ibus-mozc

sudo vi /etc/locale.gen


/ja みたいな感じで検索して ja_JP.UTF-8 UTF-8 という記述を探してください。
見つかったらコメント化されているはずですので、解除して :wq

 
ここまで出来たら変更を反映させます。

sudo locale-gen


 
ここで日本語に変更します。

update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" 
source /etc/default/locale
sudo reboot

 

再起動後、表示は日本語になったかと思いますが、相変わらず時刻表示はUTCのままです。
なので時刻表示をJSTに変更します。

sudo dpkg-reconfigure tzdata


再起動すればJSTになっているかと思います。


 

最後に


Debianつかってて思ったこと。
BBBとして使用するにもapt-getは使えたほうがいいですね
Fedoraだとdtc.shがね・・・動くんですが書き換えが必要だしちょっと面倒

 
というわけでUbuntuは使いたくないなぁって人にDebian Wheezyは良い選択肢かと思います。
壁紙も格好良いしね。


BeagleBone BlackにFedora 20 LXDE Spinを導入する。

はじめに

先日BeagleBone Black(以下BBB)を買いまして、普段RedHat系OSを使用している私はこれを機にFedora 20 LXDE Spinを入れてみました。

なぜLXDE版なのかというと、デスクトップ版はBBBのスペック不足でGUI表示ができなかったからです。

 
デスクトップ版を導入する場合は、他PCからのSSH接続によってBBBを使用することになるかと思います。
自分が何をするためにBBBを使用するかを判断して導入されることをお勧めします。

 
デスクトップ版およびUbuntu等の他OSに関しては他の方のBlogを参考にしてください。

また、本記事ではSSH接続だけでなく、BBB自身からの映像(ディスプレイ)出力、BBBへの各種入力を目的としています。

SSH接続だけでよい場合は他の方の記事を参考にされるとスムーズかと思います。


  • 2014/05/11 追記

Kernelのアップデート・yumのアップデート等実施した後再起動したら立ち上がらなくなった。
 
 

バージョン等

  • Fedora 19 デスクトップ版(SDへのインストールに使用したPCのもの)
  • Fedora 20 LXDE Spin(BBBへインストールしたもの)

 
 
 

環境構築に当たって購入したもの

  • BeagleBone Black Rev.B
  • Digio キーボード FKB-U239BK
  • Logicool マウス M110
  • Buffalo ACアダプタ付USBハブ BSH4A01BK
  • ELECOM LANケーブル LD-GF/BK5
  • 秋月電子 HDMI AD(micro)ケーブル
  • 秋月電子 スイッチングACアダプター5V3A GF18-US0530-T
  • Transcend microSDHCカード TS32GUSDHC10E
  • Transcend USB3.0 SuperSpeedカードリーダー TS-RDF5K


 
 

手順

wget http://download.fedoraproject.org/pub/fedora/linux/releases/20/Images/armhfp/Fedora-LXDE-VFAT-armhfp-20-1-sda.raw.xz

xzcat Fedora-LXDE-VFAT-armhfp-20-1-sda.raw.xz | sudo dd of=/dev/[MEDIA LOCATION]

 
完了したらアンマウントしてもう一度挿しなおしてください。

cp /run/media/[USER NAME]/__/usr/share/uboot-beaglebone/* /run/media/$USER/uboot/

cp /run/media/[USER NAME]/uboot/uEnv.txt.beaglebone /run/media/$USER/uboot/uEnv.txt

 
ここまでできたらuENv.txtを編集します

vim /run/media/[USER NAME]/uboot/uEnv.txt

 
一行目の abcboard=am335x-bone を abcboard=am335x-boneblack に書き換えてください。

sudo vim /media/[USER NAME]/__/etc/shadow

 
一行目の root:0:99999:7::: を次のように書き換えます。

root:$6$lqj7SL8qvAEXeRJX$wX2/cbpgu2wqBRVf3Lnv6IxvZ0DDeIdaRREcbE6mR.l8CtanDDNv9AfN2cpZSaeFmjKQKd4ZY9l4aqEgB9Ceh/:15921:0:99999:7:::

これはrootの初期パスワードを設定するためです。

 
次にSELinuxを無効にします。

sudo vim /media/[USER NAME]/__/etc/sysconfig/selinux

 
SELINUX=enforced を SELINUX=disabled に書き換えてください。



 
ここまで出来たらssh接続するための準備を行います。
 

なぜssh接続するのかというと、現時点ではHDMIとUSB出力がされないバグFedora 20にあり、直接BBBで作業することが出来ないからです。

まずはBBBをAngstromで起動し、ifconfigで自IPを確認してください。

その後、電源を消えているBBBにSDカードを挿して電源をつけてください。

このとき、D2からD5までのLEDが途中で消えてしまうのは仕様です。

 

しばらくしたらpingで起動しているか確認してください。

ping [BBB IP_ADDRESS]

pingが通ったらsshで接続しましょう。パスワードは root です。

ssh root@[BBB IP_ADDRESS]

ここまで出来たら、kernelをアップデートします。

yum update kernel


出来たら再起動してください。
再起動後、正常にディスプレイ出力されていることを確認してください。




最後に

今回は私自身上手く行かなかったところが多く、多くのサイトや記事に助けていただきました。この場を借りてお礼申し上げます。

BBBへFedora 20を導入する記事はいくつかありますが、私の記事も含め、人によって手順が異なります。
基本は公式を見てご確認ください。

【Fedora 19】yumコマンドで"There was a problem importing one of the Python..."

昨日起動した時、Google Chromeがインターネットに接続できない。
それならまだしも、ChromiumFirefox、設定やRStudio、挙句の果てにはTerminalが起動しない。
この前アップデートしたのが原因かな?と思ってコンソールでいろいろやってたら無事解決したのでメモしておきます。

  • 上のような症状が出た場合
  • もしくはタイトルのようなエラーが出た場合


ひとまずyumコマンドを打ってください。

yum install R
yum search R
yum update

こんなかんじでなんでも構いません。

すると


There was a problem importing one of the Python modules required to run yum. The error leading to this problem was:

/lib64/librpm.so.3: file too short


のようなエラー文が出てきます。


ls -l /lib64/librpm.so.3*

このコマンドを実行するといくつかのファイルが見えると思います。
よく見ると、librpm.so.3 -> librpm.so.3.2.1 のようにシンボリックリンクが作成されていることがわかります。


この、librpm.so.3.2.1というファイルのサイズを見てみると見事に0になっている...このような理由から"file too short"と言われているようです。


なので、同じlibrpm.so.3...のサイズがちゃんと存在しているファイル(私の場合はlibrpm.so.3.2.0でした。)で新たにシンボリックリンクを作成します。

rm -f /lib64/librpm.so.3
ln -s /lib64/librpm.so.3.2.0 /lib64/librpm.so.3


これでもう一度yumコマンドを実行してみてください。


もし同じようなエラーが出たら、そのファイルについても同様のことを行ってください。
私の場合は5回くらいやった記憶があります。

EclipseでAndroidウィジェットを作成する。

はじめに

この記事は
EclipseAndroid SDKはとりあえず入れられたが、Androidウィジェットの作成の仕方が分からない。」
Androidアプリは作成経験があるが、ウィジェットは作成したことがない。」
といった方を対象に書いております。

Javaどころか、プログラミングなんてやってことがない。」
という方にとっては不親切に感じられることでしょう。
また、今回はEclipseAndroid SDKおよび関連するソフトウェアのインストール方法については記述しておりません。

インストール方法等については非常に詳しく書かれている記事が他にありますので、そちらをご参照ください。



また、一口にEclipseAndroidウィジェットを作成するといっても、EclipseやADTのバージョンによって作成方法は微妙に変わります。
まずはバージョン等が同じか確認し、自分の環境により近い方法を探すことをお勧めします。

バージョン等

  • Eclipse Kepler Service Release 1
    • Eclipse Platform 4.3.1.v20130911-1000
  • ADT(Android Development Toolkit) 22.3.0.v201310242005-887826
  • Android SDK Manager 22.3

テスト端末

手順

新しくプロジェクトを作成します。

f:id:CORDEA:20140206175435p:plain


f:id:CORDEA:20140206175525p:plain


次に

  • アプリケーション名
  • パッケージ名

の2つを入力します。
アプリケーション名は何でもかまいません。
パッケージ名はここではjp.cordeaとなっていますが、com.exampleのままでも結構です。


f:id:CORDEA:20140206175542p:plain

アクティビティの作成のチェックをはずして完了してください。

f:id:CORDEA:20140206175546p:plain



次のような画面になったら、Javaクラスを作成します。

f:id:CORDEA:20140206175936p:plain


私の場合は名前をSampleWidgetとしていますが、分かりやすいようにSampleWidgetActivity等としても良いでしょう。

スーパークラスには
android.appwidget.AppWidgetProvider
と入力して完了してください。

f:id:CORDEA:20140206180031p:plain


次にレイアウトのxmlファイルを作成します。

f:id:CORDEA:20140206180511p:plain

f:id:CORDEA:20140206180958p:plain

f:id:CORDEA:20140206180522p:plain

main.xmlが出来たら、今回は例としてLarge Textのフォーム・ウィジェットを貼り付けます。

f:id:CORDEA:20140206180537p:plain




ウィジェットの設定をするため、もう一つxmlファイルを作成しましょう。

今度のxmlファイルはxmlフォルダ中に作成するため、まずはxmlフォルダの作成から行います。

f:id:CORDEA:20140206180810p:plain

f:id:CORDEA:20140206180909p:plain

xmlフォルダが作成できたら、xmlファイルを作成しましょう。

f:id:CORDEA:20140206180950p:plain

f:id:CORDEA:20140206180958p:plain

f:id:CORDEA:20140206181006p:plain

作成できたら、以下の項目について記述してください。
こちらのパラメーターは作るウィジェットに応じて変えてください。

  • Attributes for AppWidget Provider
    • Min width: 72dp
    • Min height: 72dp
    • Update period millis: 0
    • Initial layout: @layout/main

最後に、AndroidManifest.xmlを編集しましょう。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.cordea.samplewidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <receiver
            android:name="jp.cordea.samplewidget.SampleWidget"
            android:label="SampleWidget" >
            
            <intent-filter>
                <action
                    android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/samplewidget" />
            
        </receiver>
    </application>

</manifest>

f:id:CORDEA:20140206181734p:plain


それでは動作確認をしてみます。

f:id:CORDEA:20140206181817p:plain

f:id:CORDEA:20140206181830p:plain


端末上でこのように表示されれば、成功です。
具体的にウィジェットに機能を追加したい、といった場合はJavaのソースファイルに処理を記述する必要があります。


f:id:CORDEA:20140206182135p:plain,h400f:id:CORDEA:20140206182149p:plain,h400


最後に

いかがだったでしょうか。
今回は説明を殆どせず、作成方法だけを記述する形となりました。
そのため、一度もAndroidのアプリを作成したことのない方、Eclipseに馴染みのない方にとっては意味が分からなかったかもしれません。

参考には、いくつか参考になる記事やサイトも載せてありますので、あわせてご参照ください。


今週の一枚、私の机

今週の一枚「部屋」



外に出ているとき以外はほぼこの机の前で過ごしています。
そろそろディスプレイも買い替え時かなぁと感じる今日この頃です。
画面はメインのPCで2枚、サブのPCで4枚に出力しています。


f:id:CORDEA:20140206172610j:plain