今年の総括

もうすぐ今年も終わりらしいので、一応今年を振り返りたいなと思います。

1月から2月にかけて、絶対JOI春合宿行こうな!っていう気分で、蟻本を読みつつ、競プロなどをしていました。死んでからは、競技プログラミングという分野が見えなくなりました。

でしたが、なんか科オリというものに未練が残ったので、物理チャレンジ予選に出ました。封筒が送られてきたので、通ったのかなと思ったら通っていました。本戦は計10時間小さな箱の中に佇んでいましたが、結果銅賞(19~30位)でした。銅が、JOIとJPhOで定義が違いすぎるなと思いました。


f:id:moratorium08:20151231210459p:plain
↑去年よりたくさん書けたので、来年はもう少し色々かける一年でありますようにといった感じです。来年も頑張りたいと思います。

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

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

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

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");
}

正直ゴミコードです。