またーり作成中

IT、電子工作、裁縫とかとか

数学やりなおし(0)

機械学習で出てくる数式を理解したい

機械学習に一歩踏み込むと、必ず数式が出ます。高校生のときに数学ⅢCまで学んだものの、記憶はゼロで数式が出てきた途端ホワイトアウトしてしまうのが常でした。数年まえから縁あって、線形代数の勉強会や高校数学の勉強会に出席させていただいているうちにまた数学への興味が出てきました。これを機にPRMLに出てくる数式が分かるようになるまで頑張ります。

投稿理由は心が折れないために

今回はまた1年ほどブランクがあるため、基礎からやり直します。独学なので、心が折れないようにここに進捗を投稿していこうと思います。

私の前提数学

数Ⅰ、Ⅱ、A、Bは多分覚えています。
数Ⅲ、Cはやばいです。

数式をはてなブログで使うために

表記はLaTexで、MathJaxを使います。
はてなブログのサイドバーにscriptを埋めて使えるようにします。
ある意味はてなブログを改造するため、自己責任にてお願いいたします。

MathJax

以下を参考にさせていただきました。
ksmakoto.hatenadiary.com

joker.hatenablog.com

LaTeXコマンド

www.latex-cmd.com

設定後

¥(¥alpha¥) ---> \(\alpha\)

SHIROBAKO adventar ~どんどんLED~

SHIROBAKOのadventarに参加させてもらいました!!!

www.adventar.org

SHIROBAKOとわたし

SHIROBAKO、言わずと知れた2015年神アニメです。モノづくりに関係した仕事であれば、他人事ではないあるあるの話がたくさんでてきて・・涙なしには見れません。主人公の成長を通して、自分の過去も顧みたりしてとても感慨深いアニメです。

木下監督は理想のプロダクトオーナーだなあ

最終的に良いプロダクトを完成させている点、納期に間に合っている点においてSHIROBAKOのチームは本当にいいチームだと思います。得に私はいつも思いますが監督と一緒に働きたいなあと思ってます。自分の理想をガンとして持っていて(時にはそれがめんどくさいこともあるけど)主張してくれる、そういう人の意見をヒアリングしながら、マッシュアップしていくような職場が理想。なかなか監督はレアな存在ですよね!

で、何をやるか・・ネタは?

POV(LEDの残像で文字を表示するやつです)作ってで"ドンドン" って表示させて、ドーナツ!2015お疲れ様でしたー!って占めたかったんですよ。個人的に2015年はArduinoにはまった年だったので、それを使ってやりたかった。

万策つきたぁーーー。IDEのバージョン上げたらAVR書き込みができなくなった。

いまもう14日ですよ!ArduinoIDEのバージョンを、最近他の基盤(ESP8266)で開発をするために上げたんです。1.0.5系 -> 1.6系に。そしたら!Atmega328に書き込みができなくなって今ですよ。もうね今日は解決できないです。インフルエンザでちょと熱が高いんです。ふんだり蹴ったりです。しかし、配線もPOVのプログラムを作り終わっているのでそれをアップして、後は熱が下がり次第ということで許してください。ごめんなさい。

配線

Arduino互換であるAtmega328を使ったArduino互換機を使って開発してます。
LEDはI/Oピン6~13の8本を使います。

材料はこれです。
Arduino互換と、LED8個、抵抗8本です。

f:id:mikodayo:20151213222401j:plain

配線後は以下です。LEDをそれぞれIOピンに抵抗を介したうえで接続してあげます。

f:id:mikodayo:20151213223237j:plain

POVのプログラム

ダイナミック点灯(常時点灯していると電池消費がすごいので、切り替えを高速でやる手法)を使ってます^-^!基本的にdelayは予期しない動きになって非常に悲しい事態に陥ることがあるので、sleep目的ではTimeroneを使います。当プログラムをIDE上でコンパイルするにはTimeroneのヘッダファイルが必要です。

#include <TimerOne.h>

// common var
// leds
int leds[] = {6, 7, 8, 9, 10, 11, 12, 13};
#define NUMBER_OF_LEDS (sizeof(leds)/sizeof(int))
// menu
unsigned long led = 0;
// wait
unsigned long start = 0;
unsigned long now = 0;
unsigned long elapsed = 0;
// pov
unsigned char pos = 0;
unsigned char i = 0;
// led
#define TIMER_US 100                       // ScanRate (Duration of one LED period) 100mS = uS 100000                        
//unsigned long frames = 0;                 // ++ on every 'frame' of the LED bar
volatile bool LSTATE[8];                  // Desired state for each LED (can use 0 / 1 or LOW / HIGH)
volatile int LDRAW = 0;                   // Which LED are we 'drawing' right now?
//Standard Millis timers
//const long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  // LED 6,7,8,9,10,11,12,13
  for (led=0; led<NUMBER_OF_LEDS; led++) {
    pinMode(leds[led], OUTPUT);
  }
  // led
  Timer1.initialize(TIMER_US);                  // Initialise timer 1
  Timer1.attachInterrupt( timerIsr );           // attach the ISR routine here
}

// --------------------------
// timerIsr() 1x milli second interrupt ISR()
// Called every time the hardware timer 1 times out.
// --------------------------
void timerIsr()
{
    noInterrupts();                       // temporarilly disable interrupts
    digitalWrite(leds[LDRAW], LOW);   // turn the current LED off
     LDRAW++;                              // move to the next..  
    if (LDRAW >= NUMBER_OF_LEDS){                 // reset to zero if necessary
      LDRAW = 0;
      //frames++;
      LSTATE[7] = LOW;
    }
    digitalWrite( leds[LDRAW], LSTATE[LDRAW]);   // set new current LED state
    interrupts();                         // restart interrupts
}       // get out of the ISR ASAP

void loop(){
  pov();
}

// !!notice!! mydelay can not user inside interrput.
void myDelay(unsigned long ms) {              // ms: duration
  // start: timestamp
  start = millis();           
  for (;;) {
    // now: timestamp
    now = millis();
    // elapsed: duration
    elapsed = now - start;
    if (elapsed >= ms)
      return;
  }
}

// led
//-----------------------------
//----------- common
// all off
void led_off() {
  byte bitmap_led_off[] = {
  0b00000000  
  };
  led_flash_by_order_arry(bitmap_led_off, sizeof(bitmap_led_off)/sizeof(byte),400);
}
// 指定されている配列のみHIGHにして、あとはLOWにする
void led_flash_by_order_arry(byte *array_order, int bitmap_size, unsigned long ms) {

    // first byte big array
    for(i=0; i<bitmap_size; i++){

          start = millis();
          for(;;) {
              now = millis();
            for(led=0;led<NUMBER_OF_LEDS;led++) {      
              LSTATE[led] = (array_order[i]>>led)&0b00000001 ? 1 : 0;
            }
          // check system timer
          elapsed = now - start;
          if (elapsed >= ms)
            break;

          }
      
  }  
}

void pov(){
  // pov
  byte bitmap_pov[] = {
0b00000000,
0b11111110,
0b00010000,
0b00010010,
0b00010100,
0b00000010,
0b00000100,
0b00000000,
0b00010000,
0b00010000,
0b10010000,
0b10000000,
0b01000000,
0b00111110,
0b00000000
  };
  led_flash_by_order_arry(bitmap_pov, sizeof(bitmap_pov)/sizeof(byte),5);
}


来年は・・

もっと体力つけたいです。

arudinoに書き込み時、avrdude: stk500_getsync(): not in sync: resp=0x00が出る

私の場合、
IDEメニューツール -> マイコンボード
間違えていました。

avrdude: stk500_getsync(): not in sync: resp=0x00

書き込み失敗するよエラーの模様。

mysqlのタイムゾーンがUTCでapplication.rbのconfig.time_zone=localの場合、date/datetimeをgroupするとタイムゾーンがUTC使われる件

Model.group("date(convert_tz(created_at,'UTC','[your_time_zone]'))").countをやったときに

configに設定しているtime_zoneではなくてUTCで帰ってくる。


対応↓

mysqlで、タイムゾーンの設定が読み込まれているか確認する

↓NULLが返ってきたら読み込む作業を行う必要がある
mysql> select convert_tz(now(), 'UTC', 'Asia/Tokyo'));

                                                                    • +
convert_tz(now(), 'UTC', 'JST')
                                                                    • +
NULL
                                                                    • +

mysql> select convert_tz(now(), 'UTC', 'Asia/Tokyo');

                                                                                  • +
convert_tz(now(), 'UTC', 'Asia/Tokyo')
                                                                                  • +
2015-06-30 22:28:22
                                                                                  • +

1 row in set (0.00 sec)


読み込み作業


convert_tzがnilを返してくる場合shellコマンドラインで、実行
MySQL :: MySQL 5.5 Reference Manual :: 10.6 MySQL Server Time Zone Support
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

warningが出て、そのwarningがでたtime_zoneが必要な場合は要調査。
使わないtime_zoneのwarningなら無視でOK


以下でNULL以外が帰れば、OKconvert_tzが使える。
mysql> select convert_tz(now(), 'UTC', 'Asia/Tokyo');

                                                                                  • +
convert_tz(now(), 'UTC', 'Asia/Tokyo')
                                                                                  • +
2015-06-30 22:28:22
                                                                                  • +

1 row in set (0.00 sec)




↓ありがとうございましたstackoverflow.com

弥生会計H14で、サポート入っていない+心当たりがない「事業所データが見つかりませんでした」が発生した場合

死ぬかとオモタ。

事業所データがふっとんだかと思った;;
サポート入っていないと全く対応してもらえないことに注意する。


ちなみに、事業所データを自分で削除してしまった場合はこの手順では復旧できません。
バックアップからの復旧を試みてください。

以下の手順は、動作OSがWindows Serverの場合です。またSQL Serverを使っているバージョンH11以降でないと対応できません。
1) SQL Serverのログを見よう。以下フォルダあたりに。
 D:\YHDB\MSSQL.1\MSSQL\LOG\
2) エラーログがあればこの手順は有効

3) スタート->SQL Server構成マネージャ

4) YAYOIのSQL Serverを再起動する

直った・・・・。
確定はできないが、OS再起動時にSQL Serverとの通信がうまく出来なくなってしまった模様だ。
コネクションでエラーが出ていた。

SQL Server等を見れないと解決できないエラー。。。
なんというか、エンジニア以外が対応するのは無理だろうなあ。

サポート入っていないと全くサポート受けられないのはつらい
サポートの金額が、ソフトウェアと同値なのもつらい
法改正のたびに有料で買いなおす必要があるのもつらい。特に消費税回り・・・!

はー。恐ろしすぎた。