バイト値の入力

基本的な部分だと思うんですけど、個人的にかなり躓いたのでメモします。

与えるべき入力がバイト値でわかっているとき

python3 -c "print('A'*64+'\x41\x42\x43\x44')" | ./a.out
echo -n "\x41\x42\x43\x44" | ./a.out

後者の方が確実っぽいです。 (Python\x80みたいな値が入ると上手くいかなくなる)

CTFはじめました

前々からやろうやろうとは思っていて1回は手を出すものの全然解けなくてすぐやめちゃうCTFでしたが、
研究室にCTFはじめいろいろと強い後輩が入って、モチベの高まりを感じたのでまた手を出しました(CTFに)



ASCIIいじるときはpythonが楽ちんっぽいですね。メモしておきます。

"".join(map(chr, [0x41, 0x42, 0x43]))

久しぶりにC++触ったら何もできなくて泣きました。
すべてはC#脳死で書けるのが悪い。


追記
修論・就活ともに進捗ダメです。

Apple IDの2ファクタ認証で詰んだ話

夏休みに入ったのでMacbook Proのデータふっ飛ばしてクリーンインストールした虹の龍です。

すっきり。


クリーンインストール後のアカウント設定でうっかり2ファクタ認証を設定してしまいまして。

設定自体はうまくいったはずなんです。

その後AppStoreとかiCloudとかAppleIDを使うWebページとかで認証を求められるとSMSも電話も届かなくてサインインできない。

最初の設定の時はSMSが届いたので番号が違うということはないと思うが、届かない。

電話機能自体は使えるしSMSも届く。

カスタマーサポートに連絡していろいろ試してみたんですが、それもダメ。(すごく親切にしてくださいました)


落ち着いてメールを見てみると、2ファクタ認証を設定してから2週間くらいはメールのリンクから無効にできるんですね。

このシステムに救われて、なんとかまともに使えるレベルに復活。

クリーンインストールしてストレージはスッキリしたけど、またいろいろ設定するのは大変だなあ。

忌まわしきjQuery

半年ぶりにお久しぶりです, 虹の龍です.
半年前はAndroid開発するぞーって言ってやってなかったね. だめじゃん.

最近はArduinoBMSのコントローラー作ってました.
そのうちコードをGithubにでもアップしようかな.
大したコードじゃないけど, 専コンが欲しいけどお金がないから自作したい人の手助けになれば.


さて, 今日ブログの更新に至ったのは技術メモしたかったからなのです.

大学内でOJTのようなことができるプログラムに参加していて, 現在Web開発の基礎の基礎からやってるんですね.
以前アルバイトで基礎知識0で触ることになった忌まわしきjQueryですが, 今は基礎から教えてもらっているので「お前便利なやつだったんだなあ」となっています.

append() で追加した要素に対してイベントを付与したい

$(document).on("event", "item_class", func);
func() { /* definition */ }

Android アプリ開発 with Visual Studio 2015

案の定三日坊主になってた虹の龍です

最近はバイトで頑張ってたりDDRコントローラーもどきを作ったりしてます



タイトルの通り、今日 Android アプリの開発に手を出しました

バイトで Visual Studio を使う機会が多く、だんだん慣れてきたけどまだまだわかないことがいっぱい

ということで、VSと仲良くなるため、C#と仲良くなるためにコード書こうね、と相成りました


実はかつて高校生だった頃に、 Eclipse でやってみようかなと思って環境構築したことがあったんですけど、

そのときは Java なんて触ったことなかったので即挫折しました

C++ で競技するようになったのはもっとあとだったししょうがないね……


今回は全然そんなことなかったです

今日数時間で、簡単ですが、BPMを計測する例のアレを実装できました

実機で動くのをすぐに確認できるのは嬉しいし楽しいですね


ここまでの山場は以下のとおりでした。回線が遅いので人権がありません

Visual Studio 2015 Enterprise のダウンロード
・Xamarin のダウンロード
Android SDK のダウンロード
Google USB Driver の設定

ボクみたいな情弱でもインストーラーが勝手にやってくれるのでほとんど困りませんでした

困ったときはグーグル先生がすべてを解決してくれました



今日学んだこと

Android アプリは C# で書けちゃう

C#
・object is typename を条件文にするとスッキリ

xml
android:layout_weight でサイズ比を設定できる
-> LinearLayout に属する View に関して
-> View の幅(高さ) = ( 各 View の幅の合計 - LinearLayoutの幅 ) * (layout_weight / layout_weight_sum)
-> なので、android:layout_width="0dip"などしておくと管理しやすい
layout_weight が表すのは、
android:layout_gravity="center" でセンタリング

gitと友達になる方法

こんにちは。
思い立ったが吉日、自分用のgitまとめです。

随時追加していく予定です。


【用語】

記憶領域みたいなもの。ローカルは自分が操作する端末に、リモートは自分が操作する端末の接続先にある。

  • コミット

編集内容をひとまとめにすること。



【コマンド】

  • $ git clone URL

URLにあるリモートリポジトリを元に、ローカルリポジトリを作成します。

  • $ git pull

リモートリポジトリの変更を、ローカルリポジトリに反映します。

  • $ git add (file or directory)

指定したファイルやディレクトリをステージングします。
ステージングは、コミット用のリストアップのようなものです。

  • $ git commit

ステージングされているファイルをまとめてコミットします。
コミットは編集内容ごとに行うと、後々修正しなければならなくなった時に戻ってきやすいです。

  • $ git push (remote) (localBranch:remoteBranch)

remoteのremoteBranchにlocalBranchのコミットをプッシュします。
ここでリモートリポジトリにコミットした内容が保存されます。

  • $ git stash

作業内容を退避させる。
作業途中だけどコミットしたくないようなときに、別の作業をクリーンな状態でするために使える。
list でスタック一覧、pop で取出し、drop で最新のスタック破棄、clear でスタック全削除。

【やりたいことまとめ】
・リモートのブランチを切って、ローカルに反映する

  • > まずgithubでブランチを切る。切り出したリモートブランチは remotoNewBranch とでもする。
  • > - $ git checkout -b localNewBranch remotoNewBranch

・ローカルのmasterがリモートのmasterと合わない!

  • $ git fetch origin
  • $ git reset --hard origin/master

お久しぶりです

見事に三日坊主を決め込んでしまいました、虹の龍でございます。


ブログって最初はやる気に満ち溢れて「書きたい書きたい」という気持ちになるのですが、

しばらくするとその存在すら忘れてしまいます。備忘録を忘れてどうするのでしょう。



遅れてしまいましたが、情報特別演習の近況報告です。

進捗が出ないことと色々あって教科書がダメになってしまったので、やむなくテーマ変更と相成りました。

変更後のテーマは「密行列のブロックLU分解を用いた連立一次方程式の解法」です。

先日先生から直接教えていただいたのですが、ブロックLU分解ってすごいですね。

CPU性能を最大限生かすためにはCPU-キャッシュ-メモリ間のデータのやり取りのうち、低速なキャッシュ-メモリ間のやりとりを減らすことで計算速度の向上を狙う、と。

応用情報で概念は勉強していたので理解と感動がすぐにやってきました。

競プロでも大きな問題を小さな問題に細分化していくという原則がありますね。(一般に言われているわけではないかもしれない)

とまあそんな感じでこれからはゴリゴリ計算していきますよ。


先日ようやくC++でのクラスの書き方に触れたので、それを使って挑戦しています。

自分で書いている分には整理しやすくていいですね、オブジェクト指向

他の人のコードは基本的にもっと処理が複雑でコードを読むのも一苦労です……オブジェクト指向に限りませんね、これは。

けどその分必死に読み取って理解できた時の喜びも大きいですね。



情特のお話はこれくらいにしておきましょう。

今日はMBPの調子が悪く一瞬壊れたかと思いましたがなんとか立ち直ってくれました。

いつデータ吹っ飛ぶかわからないので、まずはアルバイトで書いたコードをリモートリポジトリにpushしておこうと思ってpushを試みたら色々とエラーが出てきて焦りました。

先ほどなんとかpushに成功したのですが、わけがわからないまま操作していたのでもしかしたら変なことをしているかもしれません(masterには触れてないので大丈夫なはず……!)

ということで、今後自分用にgitの使い方をまとめていきたいですね。
間違いがあればグサグサ刺してやってくださると幸いです。



では、今回はこの辺で。
gitとなかなかお友達になれなくて寂しい虹の龍でした。