駅から徒歩27分

技術メモとその他なんでも

平成31年度 筑波大学 編入体験記 (不合格)

筑波大学 情報学群 情報科学類・情報メディア創成学類 平成31年学群編入学試験の体験記です.

試験について

試験は専門科目3科目(数学, 情報基礎, 物理学)各2問の合計6問中4問を選択します.
これと別に英語はTOEIC L&RまたはTOEFL iBTで採点されます.

試験内容

問題1 数学(1)

2問で構成され, 1問目はラグランジュの未定乗数法で解く感じの最大値と最小値を求める問題でした. 普通に簡単な問題…のはずが仮定で置いたa, bとx, yの対応を間違えてミスりました. 2問目は重積分に対して極座標変換をした式を書き, その重積分の値を答えるだけの超サービス問でした. 体感5割です.1問目に部分点入っていれば嬉しいですが…

問題2 数学(2)

4問くらいありましたが1問もわかりませんでした. そもそも問題の内容を理解することができず終始???といった感じでした. とりあえず適当なこと書いて提出しました. 0割.

問題3 情報基礎(1)

迷路を探索(?)して距離を求める問題でした. 各問題ごとに処理を日本語で示したものがあるのでそれをそのままコードにする感じでした. 計算量についての問題はありませんでした. 体感7~10割です.凡ミスなければ10割みたいな感じです.

問題4 情報基礎(2)

2つのベクトルの類似度を求める問題でした. 最初問題を見たとき数学的な感じでエ~ッってなりましたが問題をよく見たところ読み進めば普通に解ける感じでした. こちらも計算量についての問題はありませんでした. 体感7~10割です.問題3と同じく凡ミスしてなければ10割みたいな感じです.

問題5 物理学(1)

物理選択してないので詳しいことはわかりませんが見た感じ力学っぽいです.

問題6 物理学(2)

見た感じ電磁気っぽいです.

英語(TOEIC)

700点で提出しました. 730点を満点として95.9点くらいです. インターネットの情報によれば四捨五入してくれるということなので96点ということになりそうです.

試験全体について

線形難しすぎ!!!!!!!!!! 計算量はどうした!!!!!!!! といった感じでした.
自己採点した感じ210~230点くらいとよく言われるボーダー240点には届きそうにないのでかなり厳しそうです. ラグランジュの問題をミスったのが悔やまれる…

結果について

(2018/7/25追記) 不合格でした.う~ん…

Windows Subsystem for Linux(Bash on Ubuntu on Windows)でOpenGL(GLUT)を使う時のメモ

Windows Subsystem for Linuxftp://ftp.usa.openbsd.org/pub/OpenBSD/distfiles/glpng-1.45/glpng.zip内のglpng/Example/Test.cを動かしたい。 うまくいくとサンプルのpng画像がクルクル回るらしいが色々あってコケている。

準備

森北出版株式会社刊 「Springs of C」サポートwebページの9番を参考にしてインストールを行います。

動かす(動きません)

glpngを解凍してできたglpng/Example/に移動し次のコマンドを入力。
$ gcc -Wall Test.c -lglpng -lglut -lGLU -lGL

コケる

様々なエラーが出ます。

ヘッダファイルが見つからない

Test.c:9:22: fatal error: gl/glpng.h: No such file or directory
 #include <gl/glpng.h>

ヘッダファイルが無いそうです。よく環境を見ると/usr/include/GLとなっているためglpng/Example/Test.cの#include部分を

#include <GL/glpng.h>

とすると通りました。(#include<gl/glut.h>も存在するためこちらも#include<GL/glut.h>に直します。)

関数を呼び出していなかった

freeglut ERROR: Function <glutCreateWindow> called without first calling 'glutInit'.

glutInitが呼ばれてないらしいです。

先程参考にしたサイトの12番に解決方法が書かれています。

数学ライブラリのリンク

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/libglpng.a(pngrtran.o): undefined reference to symbol 'pow@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

pow(乗算)が定義されてないようです。手動でリンクすればいいっぽい。同じく先程参考にしたサイトの16番に詳しく解決方法が書かれています。

そもそもライブラリ側が間違っていた

/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/libglpng.a(glpng.o): In function `pngLoadF':
glpng.c:(.text+0x1069): undefined reference to `glColorTableEXT'
collect2: error: ld returned 1 exit status

libglpng.aの関数pngLoadF内でglColorTableEXTが未定義らしいです。
これはglpng/src/glpng.cが間違っているのでそこを修正してmakeし直すと通るようになります。

//(500行付近)
glColorTableEXT(GL_TEXTURE_2D, GL_RGB8, cols, GL_RGB, GL_UNSIGNED_BYTE, pal);

glColorTable(GL_TEXTURE_2D, GL_RGB8, cols, GL_RGB, GL_UNSIGNED_BYTE, pal);

として

$ make -f Makefile.LINUX
$ cd ../lib
$ sudo cp libglpng.a /usr/lib/

のようにmakeするとTest.cのコンパイルが通ります。

ウィンドウが出ない

freeglut (./a.out): failed to open display ''

ディスプレイを開けないらしいです。 そもそもWindows Subsystem for LinuxGUIを持っていない(?)ためデフォルトではウィンドウを出すことができないようです。 そのためWindows用のXサーバーを導入することでこれを解決します。

今回使用するXサーバーはXming公式サイトから Xming-6-9-0-31-setup.exeとXming-fonts-x-x-x-x-setup.ext(x-x-x-xはバージョン。2017/10/1現在で7-7-0-10)をダウンロードしてインストール。 インストールが終わったらWindows Subsystem for Linux側で

$ export DISPLAY=localhost:0.0

を実行するとXサーバーの準備は完了です。

これでTest.cのコンパイルと実行ができるようになりました。

補足

exportはbashを閉じるとそこで破棄されるので~/.bash_profileとか~/.bashrcに書いておかないとまたディスプレイがないってエラーが出るので忘れないようにしてください。

参考にしたサイト


-- 追記 --
Bash on Ubuntu on Windowsという名称は廃止されたらしいので該当箇所をWindows Subsystem for Linuxへ変更しました。

HHKB買っていました

当該ツイートです.

届いたのは6月29日ということでだいたい50日使いました.

製品について

amazonです.

Pro2です.BTではありません.

またamazonにはNキーロールオーバーと書いてありますがUSB接続ですので文字キーの同時認識は最大6キーでした. もしかしたらNキーロールオーバーになるモードがあるのかもしれません.

感想とか

無刻印ですが文字入力に関しては通常のqwerty配列のためすぐに打てます.他には矢印などよく使う記号(?)キーはすぐに手が覚えられます.

最初無刻印でキー配置が見れなくて心配…ってなっていましたが普通に慣れました. 配列に関しても英字配列は初めて…とかUnix配列は初めて…などありましたが1ヶ月くらい使っていたらだいたい慣れました.

終わり

打鍵音はけっこう大きいですが打ちやすいのとキーボード打ってる感が出てすごくいい商品だと思いました.

SECCON Beginners長野 Writeup

行ってきました.writeupです.

SECCON Beginnersとは

昨年までCTF4bとして運営されていた初心者向けCTF講習会です. 今回から懇談会も追加されワイワイできました.

内容について

Web,forensics,binaryの3種類の講義を受け,最後にCTFオリエンテーションとして講義内容を使用したCTFをしました.

Writeup

本題です.記憶力が無いのでタイトルとか問題とかあまり覚えていませんが書いていきます.

  • 練習問題
    フラグが書いてあるのでそのままやります.

  • [misc] てけいさん for ビギナーズ
    1ケタの足し算,引き算,掛け算が表示されて100問解くとフラグが出ます.
    コードを書くより手で解いた方が速いと思ったので手で100問解きました.
    パパッと自動化するアタマが無いので1000問とかだったら死んでたかもしれないです.

  • [forensic] for100
    あまり覚えてませんがpcapが渡されてhttpを追跡するとフラグが出たと思います.

  • [forensic] for200
    pcapngファイルがあってそこからパスワード付きzipを抽出,通信を見てパスワードを探して解凍,その中にある画像ファイルのexifを覗くとフラグがあるというものですが 抽出したzipファイルが壊れていたっぽくて解けませんでした.

  • [forensic] for300
    問題ファイルを解凍すると中には3.binというファイルがありました.fileコマンドで調べるとNTFSということでした.まあわからないので飛ばしました.

  • [binary] bin100
    bin100_1というファイルが降ってきました.stringsコマンドで一発でした.

  • [binary] bin200
    objdumpすると配列のようなものにASCIIコード的なものがmovされていたのでCでそれっぽく再現したところフラグになりました. あんまり説明読んでなくてステージ2(?)しか解いてませんでした.

  • [binary] bin300
    bin200のように配列的なものがありましたがASCIIでは無さそうでその後にsrandでゴニョゴニョしてそうだったので時間かかるかなと思って飛ばしました.解いてません.

  • [web] Fix
    ヘッダのlocationのところがlocatin:FLAGのような感じのtypoでリダイレクトできなくなっている感じのやつでした. フラグは平文でデカデカと書かれていたのでそのままsubmitしました.

  • [web] (問題名忘れました)
    sqliだったことしか覚えてないです.講義でやったように' OR ‘1’ = ‘1で通ったと思います.

  • [web] login
    ディレクトリトラバーサルです.解けませんでした. ログインしようとしてerrorとなるとphpがエラーメッセージのテキストをfile_get_contentsで取ってくるのでそこにソースを入れれば見れました.
    index.phpはすぐ見つけられましたがflagとsqliteを含む文字列は通らないということでなんもわからず. その後終了10分前くらいにlogin.phpを見つけましたがカッコがSQLiを防いでることに気づかず時間切れでした.

以上で1400点です.5位でした.

久しぶりのCTFでしたが楽しくできて知見得られてアドでした.

ctf4b 2016 final write up

参加してきたのでwriteup書きます。

  • welcome(100)
    フラグが書いてあるのでやるだけ

  • CountUp Game(200)
    21にならないようにするやつ。 後攻なので相手の出した数と自分の出した数の和が4になるようにすると勝てる。 10回勝つとフラグが吐かれる。

  • Classical Injection(100)
    多分SQLiの問題だった。(忘れた)

  • May the extensions be with you.(100)
    付属のChrome拡張を使うなどしてCookieをtrueにするとフラグゲット。

  • みつけてみよう(100)
    wiresharkで開くとhttp通信が多いのでとりあえずオブジェクトをexportして20個くらいのhtmlの中から人力で中身のあるフラグをみつけてみた。

  • HiddenFlag(100)
    とりあえずstringsコマンドで見たらフラグがあった。

  • 復習(200)
    講義でやった内容の復習。 shlでけっこう戸惑った。

以上が解けた問題で900点の44位でした。

バイナリは苦手で今までかなり避けてきたのですごく勉強になりました。

第5回git challengeに参加してきました

ブログ書くまでが遠足!ということで書きました。

git challengeとは

これです。↓↓↓ mixi-recruit.snar.jp

だいたいこれ通りですがgitでソースを管理する上で起こる問題を解決するというイベントでした。

応募とか

なんかgitあんまり使ったこと無いしやってみたいな〜って軽いノリで応募してたら受かってました。(すみません…)

午前

競技のチュートリアルとかしました。木の椅子でお尻カチカチでした。

お昼

回らない巻き寿司を食べました。働かず食う🍣はおいしいです。

競技

問題の内容については秘密らしいので言えませんが僕は1番難易度の低い問題2問解いてオシマイでした。 4時間競技がありましたが基礎知識が全然無くてずっとグーグル先生に頼りっぱなしでした。

解説の時間

最後まで解けなかった問題は解説を聞いて納得しました。 現実にありえる問題でもあるのでここで経験できたのはプラスになると思います。

懇親会

串カツとおでん🍢でした。 ここでガチプロ集団がプロ話を始めたのでついていけなくて😢になりました。 あと未成年なんで🍺飲めませんでした。というか大人多かったです。

おわりに

今回はコミットの流れとかブランチの位置などをあまり理解できていなかったので詰まっちゃったと思います。 他にもいろいろな技術の話などできてよかったです。 あとカバ君かわいいかったです。

AndroidStudioをwin機からLinux機に乗り換えたときの話

あいさつ

あけましておめでとうございます。昨年は特になんもしてなかったですが今年もよろしくお願いします。

本題

今までAndroidアプリの開発を激遅HDD積んだWin機のAndroidStudioでやってきてたんですが重すぎて使い物にならずSSD積んだLinux機に乗り換えました。 そのときwin機で書いていたプロジェクトを移行しようとしたところgradleのビルドエラーが出たのでその話をします。
Linux機のOSはUbuntu16.04LTSです。

エラー

AAPT process not ready to receive commands

全体をメモるの忘れましたが:app:mergeDebugResourcesのタイミングで起きました。

解決方法

32ビット用のライブラリが足りてなかっただけでした。
以下をターミナルに入力
sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6
公式のページではlibbz2-1.0:i386ではなくlib32bz2-1.0ですが公式通りだとapt-getにパッケージが見つからないと怒られてしまいます。

原因

解決方法にあるコマンドは本来インストール時に入力するものでしたが公式のインストール手順ではなくGoogle検索の1番上に表示された古いQiita記事を参考にしたためライブラリに関する情報が古かったことでした。

終わりに

公式がインストール手順を丁寧に公開してる場合はそっちを見たほうがいいと思います。