お腹.ヘッタ。

関数型とかセキュリティとか勉強したい。進捗つらぽよ

ブログ始めて一年らしい。

こんにちは。お久しぶりです。忙しくて本当にエントリ書いてませんね最近。(やる気の問題)

Haskell早くとか言われそう。。。そのうちラムダ計算も書くから許して。。。書きたいこと溜まっているのに書く暇がない。。。

ブログ始めて一年らしい。

さっきメールを見たら
”1年以上の長きにわたってブログを継続いただいているユーザー様を対象に、 過去の同じ時期に投稿した記事を振り返るメールをお送りします。 ”
と着てて少し感じたものがありました。

まぁなので今回立てたのは少し自分を振り返りたかったからです。

そもそも私がブログを始めたのは1年前に私の先輩がセキュキャン応募落ちたの見ていて嗚呼セキュキャン私も応募したかった(別大会のせいで顧問に止められた)というのがあり、私自身自分の甘々だったしコミュニティも知らなかった。なのでアウトプットしようということで始めました。

そしてタイミングがいいのかセキュキャン締め切りが今日でした。なるほど確かに一年だ。この一年たくさんのことがあった。たくさんの強い人たちと出会えた。もっと上がいて井の中の蛙大海を知らずという自分を見てしまった。さて私はこれから何を残せるのか。何に向かうのか。

私は一つ理念に持っているのは技術は人を幸せにすべきだと思っています。私は多くの人にお世話になっています。この一年で交換した名刺が100枚以上であるあたりが物語っていると思います。ぜひ私は自分が受けた恩恵を返していきながら新しい技術を身につけていきたいと思います。

色々辛いこともありますが優しくしてくだされば嬉しいです。

MPU-6050よお前のDMPは何様だ(2)

愚痴です。

MPU-6050 は InvenSense 製のI2C接続のジャイロ・加速度センサICで、 DMP (Digital Motion Processor) という機能を使うことで、補正済みのデータを簡単に利用できるのが特徴。

内部情報がない!使わせる気ないでしょこれ(半ギレ)


なのでざっとまとめた(私が触った限りで)

まとめ

//使うときの初期化
/*
その際内部では 
setXGyroOffset();、setYGyroOffset();、setZGyroOffset();(初めのズレを直すオフセットを読みだす関数)
やsetFIFOEnabled等のオーバーフロー周りが動く。*/
dmpInitialize();
// DMPで使う6軸のバッファーオーバーフローしてないかどうかの判定(Xは0〜5まで6ある)
bool getDMPIntXStatus()
//DMPを使うかどうか
setDMPEnabled(bool)
//オーバーフロー時の割り込みで通知してくる関数
getIntStatus()
//  DMP パケット サイズを取得します。
 mpu.dmpGetFIFOPacketSize()


使いづらいなぁ。。。サンプルなかったらみんな触らないと思うぞ。。。

MPU-6050よお前のDMPは何様だ(1)

こんにちは。エントリ書いてます。
MPU-6050についてずっと調べてました。

MPU-6050の概要。すごい安くて高性能な6軸ジャイロ加速度センサ。 InvenSense 製のI2C接続のジャイロ・加速度センサICです。 DMP (Digital Motion Processor) という機能を使うことで、補正済みのデータを簡単に利用できるのが特徴。ただしこれがひどい後述する。
アマゾンで買う時は日本在庫指定すると早く来るゾ。某林檎の会社の携帯端末に入ってる三軸加速度センサーと同系とも言われてるらしい(リーク情報重ねると)とあとはググって。

まず備忘録。
MPU-6050 6-axis accelerometer/gyroscope | I2C Device Library
ここからライブラリ持って行ってください。じゃないと動きません。もう一度言います。動かないんです。
何でうごかないかというと動かない方のライブラリは作ったときのarduinoバージョンが古くて型の名前が違うだとかそういうのでダメなのです。(詳しく知りたい方は古〜いライブラリを使ってみてね⭐️)
InvenSense のジャイロ・加速度センサ MPU-6050 を使うとか古くなってるから体験できる。(mainの部分は参考にするといい)



あとはやるだけペチペチ。

github.com


やっつけMPU6050(角度と生データ表示する)を置いておいたんでライブラリincludeして遊んでください。コメント振ってるんで読みやすいと思います

後で第二弾愚痴書きます()

Arduinoでのスレッドのお話。(pt.h)

こんにちわ。備忘録も兼ねてArudinoのスレッドのお話です。

別々のスピードでステッピングモーターの動作をやらせたいってことがあって、それ故Arudino上でスレッドを立ててみました。

github.com


以上今回のやっつけソースです。

そもそもArudinoにはスレッドの機構は存在はしないのですが、組み込み機器の考えの中にはRTOS(リアルタイムオペレーションシステム)を使うスレッドの組み込み機器とRTOSを使わない(ポーリング型(いわゆるイベント駆動型)プログラミング)の組み込み機器があります。その後者を簡単にするために"protothreads"というライブラリがあります。
protothreads
要参照。

要は今回のはprotothreadsをarudino向けにラップしたやつの紹介ということになります。



さてここからがこのエントリの本題で備忘録です(遠い目)

pt.hのinclude

Arduino Playground - TutorialList
から
build hardware and write code for it: protothread, a powerfull library
へ行って
Google Code Archive - Long-term storage for Google Code Project Hosting.
pt.hをダウンロードしてください。

その際includeすると

#include <lc-addrlabels.h>
#include <lc-switch.h>
#include <lc.h>
#include <pt-sem.h>
#include <pt.h>

ってでてくるので
削って

#include <pt.h>

に変えてコードを書く。やるだけ。




さてこいつの困ったのは意外に日本語情報あまり多くないんですね。。。
そしてぶっちゃけ二番煎じなんでオレオレメモ書きリファレンスも残しておきたいと思います。

(オレオレ)リファレンス

struct pt {
  lc_t lc;
};

構造体型pt。それだけ

PT_INIT(pt);
/*実態は
#define PT_INIT(pt)   LC_INIT((pt)->lc)
ってなっておりlc.hでincludeされている"LC_INIT(lc)"でその使用するスコープ変数の状態を初期化している
*/

Protothread を初期化する。

 PT_THREAD(name_args);
/*実態は
#define PT_THREAD(name_args) char name_args

名前を引数として呼ぶって感じですね。
*/

protothread (ちなみにCで記述されてる)の宣言部分らしい。

PT_BEGIN(pt)
/*実体は
#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)
"LC_RESUME(lc)"はlc.hで記述されてて意味どおりスレッドの再開をするってこと。つまるところスレッドの開始ということになる。
*/

protothread の開始の宣言。

PT_END(pt)
/*実体は
#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
                   PT_INIT(pt); return PT_ENDED; }
"LC_END(lc);"はlc.hで記述されててそのスコープでの使用の終了をマークしてる関数。
*/

Protothread の終了を宣言。

PT_END(pt)
/*実体は
#define PT_WAIT_UNTIL(pt, condition)	        
  do {						
    LC_SET((pt)->lc);				
    if(!(condition)) {				
      return PT_WAITING;			
    }						
  } while(0)
" LC_SET(lc);"はlc.hで記述されててそのスコープでの使用を設定する関数。正確に言うとその状態に保存をかける関数。
*/

protothread の宣言したスコープのスレッドで止まる。つまり機能的にはwait関数。

PT_EXIT(pt)
/*実体は
#define PT_EXIT(pt)				
  do {						
    PT_INIT(pt);				
    return PT_EXITED;			
  } while(0)
*/

protothread の宣言したスコープを終了させる。

PT_SCHEDULE(f)
/*実体は
#define PT_SCHEDULE(f) ((f) < PT_EXITED)
*/

protothreadをスケジュールをするために使うぽい。具体的にはprotothread が終了した場合0を返す。

PT_YIELD(pt)	
/*実体は
#define PT_YIELD(pt)				
  do {						
    PT_YIELD_FLAG = 0;				
    LC_SET((pt)->lc);				
    if(PT_YIELD_FLAG == 0) {			
      return PT_YIELDED;			
    }						
  } while(0)
*/

このprotothread(スレッド)が終わるまで待つ。
片方でデータ通信しててそのデータをもう一つのスレッドで仕事したい時に使うとでも言えばイメージがつく。

PT_YIELD_UNTIL(pt, cond)
/*実体は
#define PT_YIELD_UNTIL(pt, cond)		
  do {						
    PT_YIELD_FLAG = 0;				
    LC_SET((pt)->lc);				
    if((PT_YIELD_FLAG == 0) || !(cond)) {	
      return PT_YIELDED;			
    }						
  } while(0)
*/

このprotothread(スレッド)の指定した条件が true に評価されるまで待つ。

以上おまけでした。間違えがあったら教えてくれると助かります。

今年の抱負とか

こんにちは。竹です。最近忙しくて(本当かよ)更新できなくてすいません。

今年一年始まるので抱負とかを書き綴ろうと思います。(遅い)

せっかくなので再度自己紹介から。

自己紹介

私は某工業高等学校の2年生です。高校では情報系の部活をしていて私の代では、(一応)部長をしています。
得意なことは寝ること。好きな言語はswifthaskell、時々C#。(書けるといってない)最近は深層学習やCTF、計算論理。暗号も興味あるけど暗号はまだ手を出せてない。プログラミング寄りなこと以外にも古典制御、現代制御などの機械制御にも興味があります。

今年一年の抱負・やりたいこと

  • 大学受験受かる:8月下旬までに自己推薦書を出すそして秋に面接の入試。嗚呼。評定が足りない。工業で今現在4.0無いので人権無い。
  • 大会入賞:キーワードは”倒立振子”、”CTF”、”枝狩り”、”UI/UX”。
  • 技術向上:いい加減アルゴリズム力つけたい。CTF精進。デザパタ覚えたい。リーダブルコード読もうな(他の読んででスタックに溜まってる)
  • 人間力の向上:去年の年末は改めて自分の惨めさやいろいろなものを考えさせられました。ありがとう。
  • コミュニティ作る。:私の身近な人々で中高生カンファもどきでもしたいなって思うこの頃。先輩や知り合いがいいネタ持ってるんで吐かせたい。

締め

今年一年より一層精進(自戒)

サイバー甲子園・セキュリティミニキャンプ東北(一日だけの一般)に行ってきた

11/7サイバー甲子園と11/14セキュリティミニキャンプ東北に行ってきました。(まとめて書くの許して><)

サイバー甲子園

大会内容的には仕事してないので(まさかの解いたと思ったら既に解かれてて事実上仕事してない(いやたとえ解いたと言っても貢献全然できてない量))私の相方氏@st98を全力で参照プッシュします。相方氏足引っ張ってごめんね

せっかくなんでその日のお話を時系列で並べていきます
時系列で箇条書きでみてね

ヅ駅に到着
  • 風邪気味。一人で心細い。
  • をるふ姉さんの生バイオリン演奏で癒される。復活。
  • 相方氏の目の前ですっ転ぶ。
  • 相方氏と少しダラダラ( ご飯食べたかったけど時間が残り10分で断念)
  • 集合するとみんなプロ層で怖い。
大会へ行く

今年出来た建物でやるらしい。入り口にモニメントがあるのだがそれがCOACH社ので謎の圧倒感。
周りの見ると高専生やばい。

大会スタート



やばいやばいしかいってなかった

終わり

  • 相方氏プロ👏(弟子入りしました)
  • scryptosやばい
  • (完)
  • 結果としては3位でした。

懇談会
  • ご飯おいしい(昼食い損ねた人の感想)
  • やっぱりみんなプロ。
  • bijoチームが姫状態。
  • 名刺交換フェーズ。YES!人見知り!NOT!コミュ症
  • ふるつきさんを拝んだ
  • ふるかわさんとお会いして受賞聞いてU22での悔しさ再燃。あとバイナリアン名刺かっこいい
  • イケメン高専生(元)面白い。
  • 緑林檎さんイケメン(?)
  • ハローワールド入門の坂井さんと名刺交換嬉しい(ほくほく)
  • etc.....
帰る
  • 泊まらないの私だけで悲しみに暮れる。
  • 終電あと二本で来るとこだった。危ない危ない
  • 爆睡

こんな感じでした。ただただお疲れ様でした。1月インターカレッジあるので頑張ります。精進します。^^;

つづいて

セキュリティミニキャンプ東北

主にここ最近の事例紹介でした。キニグレン氏はディフェンス側と言っていたけど攻めるがわもプロだろうなと思いつつメモメモ。
サメ使ってバタバタ。開始前に会場のネットワーク監視をしてたらしく、たぶん角田さんのネットワーク監視のとこに自分の名前入ってると思うとアセアセ。

  • 『IoT社会のセキュリティ』IPA セキュリティセンター 主任 中野 学氏

IPAすごいなぁという感じでした。
そのうち家電・家具インジェクションとかあるんじゃないかなとか思ってた。

  • 『サイバーセキュリティと警察~初代サイバー捜査官が見てきたモノ~』宮城県警察本部生活安全部生活環境課 宮城県警察サイバー犯罪対策室 サイバー犯罪捜査第二係長 津志田 浩孝氏 

ホワイトハッカーなりたい✨(厳しい世界)

  • 『作り込まれやすい脆弱性』セキュリティ・キャンプ講師 山下 勇太氏、篠原 崇宏氏

IPAすごいなぁという感じでした。(2回目)
よく届け出にXSSが多いというけどそのとおりですよね状態。DOM構造脆すぎぃィ。

  • 終わり

名刺交換フェイズ。YES!人見知り!NOT!コミュ症(n回目)
いろんなチューターさんと交換。宮城にもこんなに勉強会あるんですね。。。ほへぇという状態でした。ライトニングトークもうちょい聞きたい。
なぜ専門応募忘れたんだろうというのが一貫して心残り。
きゃれっとさんとお会いしてホクホク。
ここでもscryptosか。。。怖い><ってなってた。

こんな感じで圧倒的に勉強になった2週間でした。誰か勉強会誘ってください><