2015年10月20日火曜日

3Dプリンタのキャリッジを作り直し

今までの部品があまりに精度が悪かったので仕方なく作りなおしている。
Thingiverseで落としてきた部品だ。
きちんと動くようになったら、I made oneにもアップさせていただこうと思う。
こういう部品を作るのはとても大変なことだ。
製作者さんに感謝しています。

明らかに素材の異なるパーツが混ざっている



そういうパーツでもこのような精度でプリント出来る。

新しい部品には少しパーツが足りないので現在手配中。
今週中には部品が集まって先にすすめることが出来るだろう。
するともう少し精度の高いプリントが出来るようになるかなぁ・・・
今まではキャリッジ周りのガタツキが原因と見られる積層ズレが発生していた。
新しい部品もよく見るとそういう部分があるのだが、今までのよりはマシだ。

2015年10月19日月曜日

DLT-180を購入

実は夏休みにDLT-180という中華Kosselを購入した。

でもこれ、、、説明書入って無いの!
DVDが付いてるのかと思ったら入って無い!
紙の組立説明書も無い!
あちこち探してようやく英語サイトで組み立て手順的なサイトが見つかって組み立て始めた。

しかし、、、
はっきり言って、すごく精度が低く、固い(とは知らなかった)PLAをダイヤモンドヤスリで鑢まくって泣きながら組み立てた。
すげー固いのだ。
まぢかこれ!って思った。

なんとか動いて、ゼロキャリブレーションを手動で(これも大変だった)やって、
スライサー初期設定のまま蛙をプリント
とても見せられるものではないが一応蛙と認識できるものが出来た。

でも、ノズルの内部にあるチューブにテフロンチューブが入って無かったので、
一度スゲー詰まらせ、ガスバーナーで焼いて中身を無くして綺麗にしたこともあった。
それでも安物PLAは詰まりまくったので分解を繰り返しているうちにヘッドの部品壊して、
仕方なくヘッドをAmazonで買い、サイズが合わないであちこち削って無理やり付け直した。

造形中にPLAが隙間から染み出してきたので、調べてみると組み立てるときに水道管工事用の白いテープを巻くのだということが分かりまた分解して組み立てなおした。

ねじを締め損ねていたり、ベルトのテンションが低かったり、
あちこち直しまくってようやくまともにプリント出来るようになったのだ。

それからというものほぼ毎日なにかをプリントしている。
スライサーをSlic3rからCuraEngineに変えたり
Blenderでかぼちゃを作ってキーチェインにしてみたり、


ノズル0.2mmに変えてみたり、やっぱ無理で戻したり、
ベッドのホールドがいまいちだったので作り直してみたり、、、


しかし、積層型というやつは本当に発展途上であって、人様に薦められるものではない。

フィラメントは最近eSunのPLAがお気に入りで使っている。
安くてそこそこ良いのだ。
購入に際してはこちらのサイトからよく購入している。
特に珍しい素材はAmazonでも手に入らないのだが、こちらのサイトは頑張ってくれいてる。

手元にはeSunのPLA素材で白とオレンジがある。
白は最初に使ってた安物PLAに比べると削りやすい。
石膏でも混ざってんだろうか?
削りやすいから多分リピートすると思う。

2015年7月18日土曜日

Beagleboneblack + LinuxCNC + MacineKit

https://twitter.com/chaosreadman/status/622086887566635008

BeagleBoneBlackにMachineKit入れて、
DRV8805でドライブしてみたところで停止中
作りたい物はあるんだけど時間が無い

2015年3月26日木曜日

Quartus 14.1(64 bit) on Ubuntu 14.10

Quartus 14.1(64 bit) JTAG was not working on my Ubuntu14.10

I tried to confirm it...

>~/altera/14.1/quartus/bin$ ./jtagd --foreground --debug
JTAG daemon started
Using config file /etc/jtagd/jtagd.conf
Remote JTAG permitted when password set
No USB device change detection because libudev.so.0 not found

libudev.so.0 is not exist !!
I decided to make link from libudev.so.1 to libudev.so.0

>sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0
>~/altera/14.1/quartus/bin$ ./jtagd --foreground --debug
JTAG daemon started
Using config file /etc/jtagd/jtagd.conf
Remote JTAG permitted when password set
USB-Blaster port (/dev/bus/usb/002/006) open failed (13)
USB-Blaster added "USB-Blaster variant [2-2.2]"

Not working yet...
Maybe /dev/bus/usb/002/006 is not permitted.

>sudo chmod 666 /dev/bus/usb/002/006

~/altera/14.1/quartus/bin$ ./jtagd --foreground --debug
JTAG daemon started
Using config file /etc/jtagd/jtagd.conf
Remote JTAG permitted when password set
USB-Blaster "USB-Blaster" firmware version 6.00
USB-Blaster endpoints out=02(64), in=81(64); urb size=1024
USB-Blaster added "USB-Blaster [2-2.2]"

it works finally !



2015年2月25日水曜日

RaspberryPi2

BeagleBoneBlackは、CNC専用マシンとなり、RaspBerryPiは無線アクセスポイント兼DLNAサーバ&ファイルサーバになったのだが、レンタルサーバーに入れていたPydioがPHPのバージョンのせいでバージョンアップ出来ず、WEB上のファイル共有スペースが作りたくて仕方なかった。
RaspberryPiにその役目をさせようとしたら遅くて使い物にならず、Edisonを使おうとしたらストレージが少なすぎて、カスタマイズしようとクロスコンパイル環境を作ってみたらコンパイルに40Gくらいかかったり使いづらく、どうしようと思ってた所にRaspberryPi2がでたので、速攻飛びついてPydio入れてみた。
使えます。
レンタルサーバーより自宅サーバのがレスポンスいいくらいです。
外付けHDDは給電能力が足りず認識してくれなかったので、64GのマイクロSDにOS入れてたのだが、ルートに割り当てていたところから少しパーティションを削りだして、USBにもう一つ64G接続して、両方からLVMでVG作って、だいたい100Gの容量にして、PydioのDataに割り当ててある。
しばらくはこれで運用してみます。

2014年4月2日水曜日

SetForegroundWindowについて

ちょっとね、今日は少しイラっときてます。
今更SetForegroundWindowについて語ることになるとは・・・

http://msdn.microsoft.com/ja-jp/library/cc411039.aspx

日本語のMSDNの記述によると、
「次の条件が満たされていなければ、プロセスがフォアグラウンドウィンドウを設定することはできません。」
と書かれてて、
その下に条件がいくつか書かれてるのです。

自分はその条件が全部満たされないとこの関数は動かんのだなぁと理解しました。
(多分日本人はみんなそう理解すると思います)

ところが・・・
 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539%28v=vs.85%29.aspx
こっちには以下の様に書かれてます。
「A process can set the foreground window only if one of the following conditions is true: 」

「どれか一つがTrueだったら」って書かれてるわけですよ

おいおい・・・日本語間違ってんじゃん!

だから、SetForegroundWindowを成立させるために、
AttachThreadInput使ったり、SystemParametersInfo使ったりと、
その他本来必要の無い前提条件をクリアするためのコードが散乱するわけです。

一個でいいんだって!
みんな気をつけるように!

2014年1月17日金曜日

ajaxplorer から pydio へ

重宝している ajaxplorer だが、いつの間にか pydio という名前に変わったようだ。
iPhone 用のクライアントも pydio バージョンが出ている。

ところで、アップデートはそこそこ頻繁に行われているので、
気軽にアップデートしまくっていたのだが、
その間に、日本語のファイルやフォルダが作れなくなっていた。

まぁ、きっとどこかにlocaleあるんだろうなぁと思って検索したら、
bootstrap_conf.php のコメントに書いてあった。

conf/bootstrap_conf.phpに以下を追加すると良い。
//define("AJXP_LOCALE", "en_EN.UTF-8");
define("AJXP_LOCALE", "ja_JP.UTF-8");

コメントアウトしてるサンプル部分だが、
en_EN.UTF-8じゃなくて、
en_US.UTF-8じゃないのだろうか?
javaのプロパティと同じルールだと思うんだが・・・

2014年1月6日月曜日

OpenVPN on fonera 2.0n with iPhone

fonera 2.0nは、Atermルータの後ろに居る。
ブリッジで接続している状態だ。
うちはau光なのだが、AtermのWAN側アドレスはどうも固定のようだ。
ずっと使っていて変わったことがない。 
AtermからDMZでfonera 2.0n の IP アドレスを登録し、
外からアクセスした時にfonera 2.0nの画面が出るようにした。

次にOpenVPNの設定で、
AtermのWAN側アドレスを設定、
OpenVPNを有効にし、
新しいクライアントを登録し、iPhone用のパスフレーズを設定した。
適当にあちこちリンクをたどって、元の場所に戻ると、
設定ファイルをダウンロードできる様になっていた。
適当な場所に設定ファイルをダウンロードし、
iPhoneにはOpenVPNをインストールし、
iTunes→App→ファイル共有→OpenVPNのところに先ほどダウンロードしたファイルを解凍した中身をごそっとドラッグ&ドロップする

iPhoneからOpenVPNを立ち上げると設定ができてるので、
先ほどのパスフレーズを入れConnectする。
(自宅の場合、WiFi切っておかないとつながらない)

これで、iPhone から VNC Viewer を使って自宅マシンに接続できるようになる。

2013年10月26日土曜日

今更Sleepについて書く事になろうとは・・・

どうも書かなくてはならないネタが出来てしまった。
マルチスレッドには欠かせないSleep(0)についてだ。
自分はSleep(0)を多用していた。
MSDNの記述によると
「中断時間として 0ms を指定してこの関数を呼び出すと、現在のスレッドは自らに割り当てられているタイムスライスの残りの部分を放棄します。」
という事なのだ。
つまり、「ここまででいいや」って時にSleep(0)を挟むと、他のスレッドが起動し始めるということだ。
これによって、OS全体の動きがスムーズになるはずなのだ。
Sleep(1)として1を入れる人も居るが、1についてはMSDNのどこにも記述が無い。

ところが・・・
最近作ったプログラムで、Sleep(0)を使ったところ、CPUの使用率が100%になってしまった。しかも単純なループで・・・
調べてみると、INTELの記述があった。
ちなみに日本語参考訳もある。
「Sleep(0) の呼び出しは、命令パスがかなり長く、約 1,000 サイクルも消費する ring3 から ring 0 への遷移があるり、プロセッサーは、この “スリープループ” が有効な作業を行っていると思い込む。さらに、無駄なエネルギー消費が起きてしまう。」

Core2やAMD64あたりのCPUでは普通にSleep(0)で動いていた筈なんだが・・・

そこで、INTELの推奨している方法は、_mm_pause() を使う事だ。
_mm_pause() はSSE2命令をサポートしていないシステムではnopになるらしい。 

INTELのサイトではサンプルが提供されているが古いシステムでnopになったら、あれだとCPUパワーを他のアプリに割り振ることが出来ないので駄目じゃないのかと思う。

最後に、INTELの記述に笑った
「我々は、数年にわたって調査と測定を行うことで、これらの問題に対処することができました。」

本当に数年かかったよ!

2013年9月10日火曜日

ajaxplorer Version 5.0.3 - 2013-09-02

現在会社で使ってるドメインキングのレンタルサーバには空きがあるので、
ajaxplorerをセットアップしている。

以前レンタルサーバのPHPバージョンが古かったため、
仕方なく4.xx系のajaxplorerを使っていたのだが、
こないだちょっと気が向いて調べてみたら、いつの間にかPHPが5系になっているのに気がついた。

おいおい、いつからだよ、、、

そしたらajaxplorerも5系にしたいよねぇ?
ということでやってみた。

FTPでajaxplorerのフォルダごと書き込み権限くっつけて、
WEBブラウザからajaxplorerにadminでログインし、設定からUpgradeを選択した。
するといくつかのパッチが当たりますけどいいですか?と出る。
続行すると、何の苦もなくアップグレード完了

FTPで後から見てみるとなにやらやばそげなファイルのパーミッションはきっちり変わってる。
良く出来てるなぁ

インターフェースに関してははっきり言って以前の方がセンスあったように思う。
気がついた問題点としては、MBCSのフォルダを作成すると、フォルダ名が空状態になってしまっている。
作成自体はできているようなので、リフレッシュすると出てくる。
i18n問題が残ってると使う気がめっきり減ってしまうので、後で報告しとこうと思う。

2013年8月19日月曜日

fon2303 developer firmware

http://blog.fonosfera.org の情報を元に、2012/12/13に出た fon 2303 用 2.3.7.0 developer firmware をインストールした。

こないだ2.3.7.0 beta 3をインストールした時点ですでにstableリリースが出ていたようなのだが、なんで気がつかなかったんだろう?

気を取り直して、いつも通りWEBインターフェースから入れようとしたら出来なかった。
しかたないので、sshで接続してimageを直接入れる事にした。

mac から Terminal開いて以下のように入力

ssh root@192.168.xx.xx
パスワード入れて、接続したら続きを入力

cd /tmp
wget http://download.fonosfera.org/2.3.7.0_Paco/FON2303_2.3.7.0_DEV.img
mtd -r write /tmp/FON2303_2.3.7.0_DEV.img image

意味はよくわからんが、mtdてのはフラッシュするコマンドのようだ。

しばらくすると、fonの再起動かかってデフォルト状態のfonが立ち上がる。
初期設定から言語を日本語にしたり色々やり直し、minidlnaもインストールしなおして、うちは2重ルーターで使っていたが今回は面倒くさいのでbridgeにして、、、あ、つながらなくなった。仕方ないので電源抜いて再起動、、、などなどやってきちんとdlnaも動いて今まで通りになった。