世界的日曜WEBプログラマー日記 -3ページ目

世界的日曜WEBプログラマー日記

一年後に世界的なWEBサービスを運営するにはどうすればいいのか書いていく(予定)

LBP9100をUbuntuでプリントできるようにするまで。

キャノンのサイトからドライバーをダウンロードするだけでは印刷が出来なかった。
印刷の所からIPアドレスを追加されても全く印刷されず。。。

困った…と思ったらマニュアルがきちんとCANONから提供されていて、
そのとおりにやったら出来た。

以下はその方法。
ドライバーをダウンロードし、インストール
$ sudo dpkg -i *.deb

後はやるだけ( マシンのIPは192.168.1.60とする )
$ sudo /etc/init.d/cups restart
$ sudo /usr/sbin/lpadmin -p LBP9100 -P /usr/share/cups/model/CNCUPSLBP9100CCAPTJ.ppd -v ccp://localhost:59687 -E
$ sudo /usr/sbin/ccpdadmin -p LBP9100 -o net:192.168.1.60

cupsを編集する必要がある。そうしないと、印刷できない。
$ emacs /etc/cups/cupsd.conf

&ltLocation />
&ltLocation /admin>
の2つの箇所をみつけ、それぞれ次を書き込む
Allow From 127.0.0.1
Allow From 192.168.1.60

後はccpd再起動
$ sudo /etc/init.d/ccpd start

以上!!


株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
PL-US56Kを買った。ファックスサーバーのモデム用に。
とりあえず指して一発起動を期待したが…しない。

ドライバーを探すも、無い。やってしまった。やってしまった。。。悔やんでたけど、
ダメ元で色々とやったらなんと出来た。

その方法を以下に記す。
$ sudo modprobe usbserial vendor=0x2019 product=0xab27

以上ですw

/dev/ttyUSB0が当てられたみたい。
割り当てられたポートは、詳しくはdmesgを叩けば出てくる。

あとは、正しく通信できるか、
sudo probemodem -f ttyUSB0

としてみてなど。
注意すべきなのが再起動するたびにmodprobeをしないとダメ。ここは方法については後ほどかいてもいいけど、恐らくググれば腐るほど検索結果があるので割愛。

1つ気になるのが、ボーレートが9600で通信されるみたい.38400は出せないのかな。。


下のはログ。


[724606.068024] usb 5-2: new full-speed USB device number 6 using uhci_hcd
[724608.673035] usb 5-2: New USB device found, idVendor=2019, idProduct=ab27
[724608.673041] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[724608.673044] usb 5-2: Product: USB Modem
[724608.673047] usb 5-2: Manufacturer: Conexant
[724608.673049] usb 5-2: SerialNumber: 24680246
[724608.676070] cdc_acm 5-2:1.0: Zero length descriptor references
[724608.676078] cdc_acm: probe of 5-2:1.0 failed with error -22
[ytodoroki@weapon:~20:20:41]
$ sudo modprobe usbserial vendor=0x2019 product=0xab27
[sudo] password for ytodoroki:
[ytodoroki@weapon:~20:21:08]
$ dmesg | tail
[724608.676078] cdc_acm: probe of 5-2:1.0 failed with error -22
[724689.902781] usbcore: registered new interface driver usbserial
[724689.902797] usbcore: registered new interface driver usbserial_generic
[724689.902810] usbserial: USB Serial support registered for generic
[724689.902828] usbserial_generic 5-2:1.0: Generic device with no bulk out, not allowed.
[724689.902835] usbserial_generic: probe of 5-2:1.0 failed with error -5
[724689.902843] usbserial_generic 5-2:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes.
[724689.902845] usbserial_generic 5-2:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[724689.902848] usbserial_generic 5-2:1.1: generic converter detected
[724689.902924] usb 5-2: generic converter now attached to ttyUSB0

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house
FragmentからDialogFragmentを呼んで、DialogFragmentのボタンや何かラジオボックスが変化したりなどした時、呼び出し元のFragmentへ通知処理をしたい時がある。つまり、コールバック的な処理を実現したい。
この実装方法を記載する。呼び出しものがactivityの場合は別の処理が必要っぽいので、このページは見ないで欲しい。

流れはこんな感じとなる。

・Fragment, DialogFragmentでコールバックを実現するためにInterfaceクラスを作成。
・Fragment側でInterfaceクラスをimplementsする (つまり、 コールバックされて何をしたいかを記載する )。なお、DialogFragmentを呼び出す(show()メソッドを呼ぶ)前に、自身をセットする。
・DialogFragment側では処理が終わったら、そのinterfaceクラスを呼びだす。

なんだかよくわからないようだが、つまりInterfaceクラスを作る必要がある。
これだけのためにInterfaceクラスを作るの「かったるいー」ってこと。だけど、これが薦められている方法であり、素直に従うのが吉だと思う。次に簡単に実装方法について記載する。

次の3つのクラスが必要
・MainFragment
・CalledDialogFragment
・InterfaceMyCallback

インターフェイスクラスは次のような感じになる
import java.util.EventListener;

public interface InterfaceMyCallback extends EventListener {
public void callback_anything_you_want_to_do();
// いくつでも好きなだけ欲しい数だけメソッドを定義
}


メインのフラグメントクラスは次の通り
public class MainFragment extends Fragment implements InterfaceMyCallback{
final CalledDialogFragment addr_fragment = new CalledDialogFragment();
addr_fragment.setCallback( this ); // このsetCallbackメソッドはDialogFlagmentに書かれている。ここで、自分自身をセットしておく。

...
@Override
public void callback_anything_you_want_to_do(){
//ここにDialogFragmentが呼び出す際の処理を書く。なんでもいい。

}
}

DialogFragmentは次の通り
public class CalledDialogFragment extends DialogFragment{ // implements
private InterfaceMyCallback callback = null; // null で初期化
….

public void setCallback( InterfaceMyCallback callback) { // mainのフラグメントに呼ばれるもの。
this.callback = callback;
}
}

CalledDialogFragmentでは、たとえば、

// OK ボタンのリスナ
dialogView.findViewById(R.id.done_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callback.callback_anything_you_want_to_do();
dismiss();
}
});
こんな感じで、ボタンを押したら呼ばれるように設定が出来る。

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house