定期試験とはナップザック問題のようなもの

以下試験からの逃避文章です。

定期試験とはナップザック問題のようなものだと思います。時間という有限の制限以下で、評価を最大化するためにどの勉強をするかを選ぶからそんな感じが。夏休みという時間を何一つ定期試験のために過ごしてこなかったから、あと数日でうわあぁって感じで、感覚で計画をしていくわけだから、ヤバいなという感じです。期末があるととてもソシャゲが捗りますね。最近は日本語の書き方も分からないのでとりあえず理数系科目だけでも拾って行けたらなって思いますよね・・・

Raspberry PiでL-03FでdocomoのXiを使ってネットをしてみる

かなり色々と試行したので、無駄な処理が入っている可能性があるのですが、とりあえず、やっとことをまとめてみます。一応、Linuxdocomoのサポート外なので、以下も自己責任でお願いします(主にパケ死などに)。

参考にさせてもらったのは、

Qaplaの覚書・メモ・備忘録・独言 Raspberry Pi をUSBモデムでインターネット接続
OBDNマガジン: [.tested] docomo L-03D [AX3][A6]
ubuntu 9.04 で docomo L-02A を使う | azkの日記 | スラッシュドット・ジャパン
あたりだとおもいます。

まず、他の記事でもたくさんかかれているように、windows/mac上でのゼロインストールのために、CD/DVDとして、/dev/sr0でlinuxが反応してしまうので、とりあえず、usbに認識させるという動作を行います。usb_modeswtichを使うということを試行しましたが、うまく動かなかったので、sudo apt-get install ejectでejectを入れて、3つ目にあげたところでも書かれているように、

pi@raspberrypi ~ $ cat /etc/udev/rules.d/99-foma_l-02a.rules
KERNEL=="sr[0-9]*", ENV{ID_VENDOR_ID}=="1004", ENV{ID_MODEL_ID}=="6367", RUN+="/usr/bin/eject /dev/$kernel"

ACTION=="add" SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="6366", RUN+="/sbin/modprobe usbserial vendor=0x$attr{idVendor} product=0x$attr{idProduct}"

こういう感じで設定します。やってることとしては、usbにつながれたときにeject /dev/sr0を行なって(sr0以外も動くようになってますが)、usbserialをロードしています。これで、適当にさしなおしたり、リブートすると、こいつが動きます。すると、/dev/にttyUSB0,1,2が現れますが、たぶんl-03Fが新しいので、linuxがまだこのProdctIDが分からないのだと思う(というか、モデムモードに切り替えが必要なのだと思う)ので、ググると、optionをロードして、new_idにvendorid:productidをechoするみたいなのなどを試してみましたが、うまく動かないので、最終的に、

pi@raspberrypi ~ $ sudo usb_modeswitch -v 0x1004 -p 0x6366 -M "5553424308e02186000000000000061b000000020000000000000000000000"

Looking for default devices ...
   found matching product ID
   adding device
 Found device in default mode, class or configuration (1)
Accessing device 005 on bus 001 ...
Getting the current device configuration ...
 OK, got current device configuration (1)
Using first interface: 0x00
Using endpoints 0x01 (out) and 0x81 (in)
Not a storage device, skipping SCSI inquiry

USB description data (for identification)
-------------------------
Manufacturer: NTT DOCOMO, INC.
     Product: docomo L03F
  Serial No.: not provided
-------------------------
Looking for active driver ...
 OK, driver found ("usbserial_generic")
 OK, driver "usbserial_generic" detached
Setting up communication with interface 0
Using endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
 OK, message successfully sent
Resetting response endpoint 0x81
Resetting message endpoint 0x01
-> Run lsusb to note any changes. Bye.

と実行するとなんか知らないけど動きました(minicomで反応が見られるようになりました)。

pi@raspberrypi ~ $ sudo minicom -D /dev/ttyUSB1

Welcome to minicom 2.6.1

OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyUSB1

Press CTRL-A Z for help on special keys

ati
NTT DOCOMO, INC.

OK

おそらく、うまくusb_modeswitchが出来ていれば、それで一発だと思うのですが、色々やりすぎて、Raspberry Piが闇化してしまったのが敗因だと思います。とりあえず、メモがてら書いてみました。

花火

夏を忘れないために花火です。Processing何かと役立つと思うので、ある程度使えるようにしてたい

float t;
float g = -0.8;
float v0 = 10.0;
float h = 100.0;
int divide = 30;
float theta = 360/divide;
float colors[][] = new float[divide+1][3];

int particlePerPiece = 5;

float x0; 
float y0; 

void setup() {
  size(800,800);
  stroke(255);
  background(192,64,0);
  t=0;
  h=-300.0;
  x0=width/2;
  y0=height/2;
  smooth();
  float r = random(0,255);
  float p = random(1,20);

  for (int i=0; i<=divide; i++)
  {
    colors[i][0] = r*p*i%255;
    colors[i][1] = r*p*i*i%255;
    colors[i][2] = r*p*i*i*i%255;
  }
 }
void draw() {
  background(0,0,0);
  if (t<10.0){

    ellipse(x0,y0-3*v0*t,10,30);
  }
  else
  {
    t-=10.0; 
      for (int i=0; i<=divide; i++)
    {
      stroke(colors[i][0],colors[i][1],colors[i][2]);
      fill(colors[i][0],colors[i][1],colors[i][2]);
      ellipse(x0+v0*cos(radians(i*theta))*t, 
      y0+h+sin(radians(i*theta))*v0*t-g*t*t, 4,4);
      

      /*if (t>5){
        for (int j=0; j<particlePerPiece; j++)
      {

        ellipse(x0+v0*cos(radians(i*theta))*(t-0.1)+random(-5,5), 
      y0+h+sin(radians(i*theta))*v0*(t-0.1)-g*(t-0.1)*(t-0.1)+random(-200,0)/2,2,2);
      }
      }*/
    }
    t += 10.0; // uuuuuu
  }
  t+=0.1;
  if (t > 35)
  {
    stroke(255,255,255);
    fill(255,255,255);
    t = 0;
  }
}
void mousePressed(){
  saveFrame("output.png");
}

正直ゴミコードです。

iOSのアプリつくった話。とコード署名でno identities are available for signingって言われまくった話

ものはたいしたものじゃないというか、僕が欲しかったっていうだけのアプリなのですが、iOS dev program登録して何もしないのもお金がもったいなすぎるということで、アプリを投稿してみました。

で、Objective-Cのメソッドなげーとか言いながら、まぁたのしくコーディング出来た訳です。んで、実機テストしてまぁいけんじゃね?的なノリでアップロードしようとしたのが昨日の昼。そっからが本気でえぐかったってことをちょっと懺悔的に書きたいと思います。


まず、めちゃくちゃ色々入力させられて、かつChromeでやってたので、3回データ(入力したやつ)が飛びました。まず、ここで死にたくなりました。Safariを使えっていうアレですね。

んで、よく考えてみると、アイコン作ってねえなってことでアイコンを作ったのですが、画像編集能力の欠如により1時間以上かけて結局ゴミみたいなアイコンしか作れなかったと。

そしてラスボスとして、コード署名に殺されかけました。とりあえず、Targetとか弄って、Archiveしたはいいんですが、"no identities are available for signing"を連呼されて、結局昨日は2時(今日か)くらいまでやって終わらず、そしてさっきようやく終わりました。

何がいけなかったのかといえば、結果から言えばDistributionにするのを忘れていたということなんですが、Distributionにするのは分かってて、出来てなかったのでひょっとしたら、ここでハマる人が僕以外にもいるかもしれないですね。stackoverflowとかの質問を見ていると、Provisioning Profiles->Distribution->+みたいな感じで書いてあった気がするんですが、まぁ確かに間違ってないっちゃ間違ってないんですが、その後の選択するやつで、その流れで+を押せばとりあえず、Distributionに関するprovisioning profileが手には入るんじゃないかと思って、今までのノリで、iOS App Developmentを押してたわけです。

めっちゃ落ち着いて後から見てみると、思いっきりそれは間違いで、上に思いっきり「Development」って書いてあるわけです。つまりその下にあるやつを押せばいいんですが、なんか知らないけど10個以上作ったProvisioning profiles全部流れ作業のように上を押しててハマりましたね。

なんかちょっと興奮してて文章書けないので、やめますが、とりあえず、アプリの登録は落ち着いてやるに限るみたいです。。。