2019-01-01から1年間の記事一覧

Segment tree を書く (3)

前々回ではセグ木に載せる演算を別途書くような形で抽象化しました。 具体的には、前々回の実装例だと template <typename T> T segment_tree::op(T lhs, T rhs){ // f は入れたい演算に相当 return f(lhs, rhs); } を別途書く必要があるということです。 しかし、最近こ</typename>…

Segment tree を書く (2)

前回の続きです。 今回はセグ木で必要になる配列の長さの話をします。 前提 前回の実装では 長さは 2 の冪に切り上げ としていました。完全二分木になるので見通しが良くなりますね。 このとき、最悪で*1長さ の配列が必要になります( の場合)。 しかし、…

Segment tree を書く (1)

皆さん segment tree (セグ木)をご存じですか? 完全二分木にモノイドの元を乗せ、ある区間に演算した結果を求めることができるデータ構造です。 セグ木を貼れば これ とか これ みたいな問題が解けます。 詳細を説明している記事はググるとたくさん見つか…

AtCoderで黄色になってからしたこと

マイプロフィールで自分の名前を見てニヤニヤした atcoder.jp ところで 青のときにこんなことを言っていました。 目標(2つ上の色)、最低でも(1つ上の色)、あわよくば(3つ上の色)になりたいと言い続けて来たけど、だんだんつらくなってきそう— レポ(GR,q…

TikZJaxで図を描きたい

GitHub - kisonecat/tikzjax: TikZJax is TikZ running under WebAssembly in the browser TikZJaxをこのブログでも使ってみようと思ったのですが、どうもjsとcssを読み込む先がhttpsじゃないんですよね(追記:今は https になっているようです)。 手元で…

TopCoder SRM 753 ~はじめてのDiv. 1~

2019/3/12 0:00~のSRM 753に参加しました。TopCoderのコンテストは2回目です。 結果はEasy 1完(142.22点)で62位でした。青に落ちないかと怯えていましたが、レーティングは1505→1610となりました。よかった。 以下、感想や方針を書いておきます。 Easy 問…

はじめてのとっぷこーだー(TopCoder SRM 752参戦記)

2019/03/06 21:00(JST)から行われたTopCoder SRM 752に参加しました。準備からコンテスト終了までの大まかな流れや感想などを書いていきます。 準備 アカウントの作成 これは前もってやっていたのでよく覚えていないのですが、何かと分かりにくかった記憶が…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜22日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、22日目です。 他の章へのリンクはここにあります。 1. OSを守ろう 問題なく動作していることが確認できました。 2. バグ発見を手伝おう QEMUでもbug1.hrbでは「AB」と表示された後に例外が発生しました。EIPレジスタの値…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜21日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、21日目です。 他の章へのリンクはここにあります。 1. 文字列表示APIを今度こそ 本の通りにやると動くようになりました。 2. アプリケーションをC言語で作ってみたい リンカスクリプトはbootpack.hrbを作ったものをここ…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜20日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、20日目です。 他の章へのリンクはここにあります。 1. プログラムの整理 作業量が多いのでバグを埋め込んでしまわないか心配でした。 新しく関数を書いて、その中に自分が書いたものカット & ペーストして編集、とすると…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜19日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、19日目です。 他の章へのリンクはここにあります。 Githubにソースコードを公開しました(https://github.com/wisteria0410ss/os)。 1. typeコマンド 再び文字列比較が微妙です。前回同様の流れで次の節でstrncmpを使うこ…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜18日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、18日目です。 他の章へのリンクはここにあります。 1.〜2. カーソル点滅制御 はい 3. Enterキーに対応 ウィンドウサイズを決め打ちするのは気持ち悪いので、ここでも書き換えをしました。以下同様です。 make_window8を…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜17日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、17日目です。 他の章へのリンクはここにあります。 1.〜6. それっぽい見た目になってきました。いい感じです。 解像度は決め打ちできないはずなので、ウィンドウの幅は定数として持たせておくかbinfo->scrnxなどから算出…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜16日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、16日目です。 他の章へのリンクはここにあります。 1. タスク管理の自動化 ごちゃごちゃした処理をまとめてしまうとスッキリして良いですね。 2. スリープしてみる HLTする代わりに他のタスクを実行するようにします。こ…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜15日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、15日目です。 他の章へのリンクはここにあります。 1. ・2. 10秒だと長いと感じたら、3秒でスイッチするようにしても良いかも知れません。うまく動かない可能性を考えると早く結果が分かるに越したことは無いので… タス…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜14日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、14日目です。 他の章へのリンクはここにあります。 1. また性能を測定してみる タイマを490個追加して実機で測定を行った結果、以下のようになりました。 それぞれ5回測定し、その平均を示しています。 ずらしあり ずら…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜13日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、13日目です。 他の章へのリンクはここにあります。 今回は久しぶりにハマったので内容多めです。 1. 文字列表示を簡単に 文字の描画の際、背景色での塗りつぶし・文字書き込み・画面再描画がワンセットとなるので、これ…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜12日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、12日目です。 他の章へのリンクはここにあります。 1. タイマを使おう キーボードのときとほぼ同様です。 本文中にURL(ttp://community.osdev.info/?(PIT)8254)が記載されていますが、ページが移動しているようで、 見る…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜11日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、11日目です。 他の章へのリンクはここにあります。 この章では特に詰まった点はなかったので適当に感想を書いておきます。 1.〜3. ここでようやくマウスポインタが画面のどこでも指せるようになりました。良い。 4.・5. …

Ubuntu 18.04.1 LTSでやる 30日OS本 〜10日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、10日目です。 他の章へのリンクはここにあります。 1. メモリ管理の続き 切り上げの処理はおなじみのあれ、という感じです。16進だとビット演算が使えていいですね。 2. 重ね合わせ処理 レイヤーっぽいやつをもりもり書…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜9日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、9日目です。 他の章へのリンクはここにあります。 1. ソースの整理 はい。 2. メモリ容量チェック(1) やってみると、QEMU上で128 MBと出てくる… 本文によると、32 MBと出てほしいところ3072 MBと出るらしいのですが。 試…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜8日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、8日目です。 他の章へのリンクはここにあります。 1.〜4. やるとマウスが動くようになります。いい感じです。マウスによって背景が虐殺されるのはご愛嬌。 5. 32ビットモードへの道 説明を読みました(読むしか無いので…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜7日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、7日目です。 他の章へのリンクはここにあります。 この章は特に躓くことなく本の通りに進めることができました。 以下感想 いい感じに動きが出てきて見た目が楽しくなってきました。QEMUで動かすより実機でやったほうが…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜6日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、6日目です。 他の章へのリンクはここにあります。 1.〜3. コンパイル方法などが本の内容と異なっているはずです。そのあたりに注意しながらソースファイル分割やMakefileの整理などを行いました。 4.〜5. 説明を読みなが…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜5日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、5日目です。 他の章へのリンクはここにあります。 1. 〜 4. 本の通りにやればできました。putfont8はビットシフトを使ってもう少し簡潔にできます。 5. フォントを増やしたい hankaku.txtから char hankaku[4096] = { (…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜4日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、4日目です。 他の章へのリンクはここにあります。 この章は、特に躓くことなく本の通りに進めることができました。

Ubuntu 18.04.1 LTSでやる 30日OS本 〜3日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、3日目です。 他の章へのリンクはここにあります。 1. さあ本当のIPLを作ろう〜4. 10シリンダ分を読んでみる 本文のとおりにやる。 5. OS本体を書き始めてみる Makefileのharibote.imgのところを以下のようにしました。 h…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜2日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、2日目です。 他の章へのリンクはここにあります。 1. まずはテキストエディタの紹介 私はVSCodeを使っています。 2. さて開発再開 本文のとおりです。 3. ブートセクタだけを作るように整理 ipl.asmのアセンブルはnasm i…

Ubuntu 18.04.1 LTSでやる 30日OS本

「30日でできる!OS自作入門」をUbuntu18.04でやっていくにあたって利用したツール類や詰まった点を各章ごとにメモしていきます。 著者さんのツールはあまり使わない方向性でいきます。 このブログは9日目を始めるタイミングで書き始めたので、8日目までの内…

Ubuntu 18.04.1 LTSでやる 30日OS本 〜1日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、1日目です。 他の章へのリンクはここにあります。 1. とにかくやるのだぁ バイナリエディタはhexeditを利用しました。 本文に従って、選択してコピペを繰り返しつつ168000まで頑張るとイメージファイルができます。 本に…