がべーじこれくしょん

技術系とかいろいろ

【0日目】30日OS自作入門

高校のころから図書館で借りて読んでいた本をついに買いました。

それが、川合秀実さんの著書である「30日でできる!OS自作入門」です。

低レイヤ界隈にはとても有名な本ですね。「名著」と某先輩も推しています。

今回は、数週間後に控えたもくもく会に向け、一冊30日かけてやる本を二週間ほどで終わらせるという無謀なチャレンジを行います。

目標は、本書で紹介されているOSをとりあえず完成させることです。内容理解の漏れに関しては、再読ともくもく会を通してカバーしていくつもりです。

内容に触れすぎない程度に1日分ごとに進捗をまとめていきたいと思います。

頑張ります!

Jetbrains Product Pack for Studentsに申し込んでみた

IntelliJ IDEAやPhpStorm、Rubymineなどは、プログラマ界隈ではおなじみの高機能IDEですよね。

ただし難点なのが、これらは有料だということです。

しかもかなり高額。

そこで、Jetbrains製品にもStudent Licenseがないか調べたところ、「Jetbrains Product Pack for Students」というものがあったので、申し込んでみました。

手順

まず、「JetBrains Product Pack for Students」のページに移動します。

www.jetbrains.com

f:id:musaprg:20170403153023p:plain

Apply Nowをクリックします。

f:id:musaprg:20170403153115p:plain

必要事項を記入します。

Email Addressは、必ず学校から付与されたメールアドレスを入力してください。

APPLY FOR FREE PRODUCTSを押すと、先程入力したメールアドレス宛に承認リンクの載ったメールが届くと思うので、リンクをクリックしてください。

規約に同意すると、アカウント登録ページへのリンクが載ったメールが再度送られてくると思うので、クリックしてください。

Jetbrainsのアカウント作成画面に移るので、必要事項を記入すれば完了です。

(どうでもいいけどPhpstorm重い…)

Jupyter Notebookでmatplotlibのグラフが表示されない

サークルで統計が流行っているのですが、みんなRを使うのでひねくれものの私はPythonでデータサイエンスを勉強しています。(Rもそのうち触りたい)

そんな中、matplotlibがインライン展開されないという問題にぶちあたったのでメモ。

解決策

ノートのはじめで以下のコードを走らせないとインライン展開されないみたいですね。

%matplotlib inline

Before

In  [48] : tz_counts[:10].plot(kind='barh', rot=0)
Out [48] : <matplotlib.axes._subplots.AxesSubplot at 0x18dd7d8c358>

After

In  [49] : %matplotlib inline
In  [50] : tz_counts[:10].plot(kind='barh', rot=0)
Out [50] : <matplotlib.axes._subplots.AxesSubplot at 0x18dd7d8c358>

f:id:musaprg:20170402160818p:plain

表示されるよ!やったねたえちゃん!

読んでる本

今読んでる本です。実際のデータ使えるので楽しいです。

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

FiddlerをMac OSXにインストールする方法

この記事はほとんど以下サイト様の記事と内容は一緒です。以下サイト様にもぜひ足を運んでいただければ幸いです。

sachips.byeto.jp

API解析って面倒だよね

某大学のシラバスを解析して活用しようという動きがあります。

僕もそれに乗っかっていろいろやってましたが、何ぶんパケット解析をしてcURLで叩く、みたいなのはまどろっこしいとなっていました。

そこで、WebAPIの開発ツールとしてWAASと呼ばれるゴミモノを作ってました。

github.com

そのことをとある方に話したところ、「Fiddlerで全く同じことができるよ?」と言われたので早速入れてみることにしました。

環境

OS: Mac OS X 10.12.2

手順

1. Homebrewをインストールする。

マカーでインストールしてない人はいないと思われる定番ツール。

もしインストールしてない、という方は、ターミナル上で以下のコマンドを叩いてください。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Fiddlerをインストールする

brew cask install fiddler

以上です。めっちゃ簡単ですね。 途中でパスワードを求められるはずなので、入力しましょう。

使い方は現時点ではあまり理解してないので、適当にいじった後に気が向いたらまた記事を書きます。

参考サイト

sachips.byeto.jp

PageMenuがSwift3に対応していなかったので自力で修正した話

普通にPodfileに追記してupdateしてcommand+Bでビルドすると大量のエラーが。

とりあえずネットを漁ったところ、CocoaPodsにあるCAPSPageMenu.swiftがどうやら古いものらしいので、PageMenuのGitHubからソースを丸パクリしてコピる。途中で警告でるけどUnPackする。

再度ビルドするものの一向にエラーは減らない。

とりあえず、Xcodeにくっついている自動変換機能を用いて変換する。

Edit -> Convert -> To Current Swift Syntaxを選択。

変換対象のファイルを選ぶ画面では、PageMenu.frameworkのみを選択し実行。これでだいぶエラーは減る。

あとは、エラーを一つ一つクリックし、fix-it欄に表示される修正候補をクリックしながら修正していく。

ただ、これでは修正仕切れないエラーが二種類ほどでてきた。

それが、'CGSizeMake' is unavailable in Swift'CGRectMake' is unavailable in Swiftの二種類である。

以下記事によれば、これらはどうやらSwift3.0ではすでに存在しない関数らしい。

qiita.com

「CGRectMake」→「CGRect」

<変更前>

private let mylabel = UILabel(frame:CGRectMake(0, 0, 100, 100))

<変更後>

private let mylabel = UILabel(frame:CGRect(x: 0, y: 0, width: 100, height: 100))

「CGSizeMake」→「CGSize」

<変更前>

myScrollview.contentSize = CGSizeMake(100, 100)

<変更後>

myScrollview.contentSize = CGSize(width: 100, height: 100)

元ソースを変更することも考えたが正直めんどいのでそれぞれ新規に関数を定義してラップすることに。

あまりグローバル空間を汚したくないがやむを得ません。衝突したら衝突したということで(???)

func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
    return CGRect(x: x, y: y, width: width, height: height)
}

func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize {
    return CGSize(width: width, height: height)
}

以上のコードをCAPSPageMenu.swiftに貼り付ければ万事解決です。

一応今回諸々修正したものが以下です。コピペすれば使えると思います。

PageMenuをSwift3.0対応させた

本家リポジトリは以下です。ライセンスはすべて製作者に帰属します↓

github.com