[techaday:0003] latexmkで楽々LaTeXコンパイル

[techaday:0003] latexmkで楽々LaTeXコンパイル

はじめに

第3回です.皆さんは文書を書くときに何を使っていますか? Wordを使っているという方は今すぐお帰りください.何も得する情報はありません. LaTeX を使っているという方,素晴らしいですね.ぜひお友達になりましょう.どうやってコンパイルしていますか? … コマンド平打ち?シェルスクリプト?Makefile? それってとてもめんどくさいですよね.毎回やることは決まってるわけですし,保存してプレビューするたびに make とか打つのはナンセンスです. かといって,私みたいに慣れたテキストエディタがある場合は,わざわざTeXだけのために専用の執筆環境をインストールして使うのもまどろっこしいです.

というわけで,TeXのコンパイルに関わる処理をよしなにやってくれる latexmk という便利なコマンドラインツールがあるのでご紹介します. ついでに,プレビュー時のコンパイル時間を短縮するためのコツについても書きます.

前提知識

  • シェルが最低限使える
  • TeX が書ける
  • TeX のコンパイルってめんどくさいなーと思ったことがある

効能

  • ちょっとだけ時間の節約になる
  • 頻繁にプレビューするときのコツがわかる

Read More

Share Comments

[techaday:0002] C言語での構造体とアライメントについて

[techaday:0002] C言語での構造体とアライメントについて

はじめに

「1日1技シリーズ」第2回は,構造体とアライメントについてです. 構造体は複数のデータをひとまとめにして扱えるため,みなさんも様々なプログラムで多用しているかと思います. また,マイコンプログラミングではメモリが数kB〜数十kBと制約がシビアになるため,1bitで済むフラグや値が小さいことがわかっている変数を,構造体の拡張機能であるビットフィールドを使って複数固めて使用することがあります. しかし,使い方によってはかえってメモリを食いつぶしてしまう場合があります.今回はそれと回避方法について書いていきます. この手の話について大変詳しく知っているわけではないので誤りが含まれているかもしれません.その場合は躊躇なさらずご指摘ください.

前提知識

  • C言語の構造体・共用体が使える

効能

  • ビットフィールドや構造体を使うときに気をつけるようになる
  • どうしても使いたい時の容量節約方法が分かる

Read More

Share Comments

[techaday:0001] C言語での符号とビットシフトについて

[techaday:0001] C言語での符号とビットシフトについて

はじめに

「1日1技シリーズ(別名techadayも併用することにします)」記念すべき第1回は,整数型の符号とビットシフトに関する話題です. ビット演算は特にマイコンプログラミング等において,IOを使用するためだけでなく高速化やメモリ節約のためにも頻繁に使用されます. 今回と次回はそんなビット演算について,知らないとハマりやすいポイントについて書いていきます.

前提知識

  • C言語の基礎的文法がわかる
  • ビット演算についてイメージできる

効能

  • signed な整数型変数と unsigned な整数型変数でのビットシフトの処理の違いがわかる
  • 異なる処理をわざわざ行う理由が分かる
  • unsigned char と書くべきところをうっかり char と書いて闇に落ちてしまうのを防止できるようになる

Read More

Share Comments

第36回全日本マイクロマウス大会に参加してきた

第36回全日本マイクロマウス大会に参加してきた

結果は11位でした

11/21,22日に開催された全日本マイクロマウス大会に参加してきました. この大会に向けた目標として「クラシック競技エキスパートクラスで10位以内を取る」,というのがあったのですが,今年は達成ならずでした. もっとも,海外勢の存在を忘れていた状態でこのような目標を設定したので,台湾やシンガポールからのマウスを見て諦めがつくとともに,実力不足を実感した次第です.

マウスのスペック等についてはもう少ししてから書くことにします.

結果

NTFのページに結果が出ています

個人的には探索含めて不安ばかりだったので,ひたすら Cobaltの人 と我慢大会をしていました. 詳細な結果は以下のとおりです.

走行 モード タイム
第1走 0:40:34 探索(パラメータ:3/4)
第2走 0:10:75 最短(パラメータ:2/7)
第3走 R 最短(パラメータ:4/7)
第4走 R 最短(パラメータ:5/7)
第5走 R 最短(パラメータ:3/7)

動画(3:53:00付近から 毎度記録・配信をしてくださっているNVS様に感謝!):

第1走の探索では,後述する不具合のせいでかなり壁にこすりながら走行しており(それでも壁情報は1箇所しか壊れていないと思います),確実な情報しか最短走行の経路選択に使用しないアルゴリズムにしている私にとっては,きちんと帰ってくるか帰ってこないかが明暗を分けるような綱渡りの状況でした. 危うさを見せながらも運良くゴール後にスタートまで帰ってきてくれたのでほっとしました.

反省点

  • 第1走の際の合図を忘れる
    後で思い出したのですが,学生大会でもやらかしてました.慌てるのヨクナイ… 計測がおかしかったのもたぶんそれのせいです.ごめんなさい.
  • 壁制御の構造の複雑化に伴うバグ
    ひたすら壁に吸い付いていくような挙動が特定の条件で発動するようなバグがありました(朝に気づいたものの修正できず).
  • 直前にタイヤを履き替えない🙅
    グリップが良くなるので高速走行時のターンは滑りにくくなるのですが,4輪マウスの特徴上タイヤがある程度削れて程よい接地具合になるまでは超信地旋回や走行中のターンで回転中心がズレてしまいます.タイヤ径のパラメータも微妙に変わるせいで,ほかにもよくわからない部分がいろいろとズレます.
  • 斜め走行をしようという割にマシンの幅が少し大きすぎた 78 mm 程度の幅なのですが,74 mm あたりがよくある1717使用のマウスのようです.でも一応斜め走行は可能でした.

最後に

応援に駆けつけてくださった方々,どうもありがとうございました. 大会中,様々なアドバイスや技術的な交流をしていただいた 東京理科大学 Mice の皆さんや,電気通信大学ロボメカ工房 の皆さんに特に御礼いたします. 大会運営にあたってご尽力くださったたくさんの方々に敬意を表するとともに,来年以降も参加者としてぜひ盛り上げていきたいと考えている次第です. 関係者の皆様,本当におつかれさまでした.

おまけを載せました.↓からどうぞ

Read More

Share Comments

1日1技シリーズ開始

1日1技シリーズ開始

何なのさ

自分の持っている知識・思考の整理と,知らないとハマりそうなポイントの共有という目的で 1人 Advent Calendar 的なものをやってみようと思います. なるべく1日1トピック,知ってる人にとっては当たり前っぽいテーマで書いていきます.

個人的な目標として,1記事あたり30分以内(できれば15分以内)に書き上げるのをルールにしたいと思います. 要はそれぐらいシンプルに,ミニマムな構成の技術ネタを大量に投げていく予定です. 間違いや質問・リクエストなどがあれば,私や読者の後学にもなりますのでぜひコメントを残していってください.追える範囲でフォローアップします.

内容について

主にこんな感じでしょうか

  • コンピュータ関連
    • プログラミング (C, C++, MATLAB あたりがメイン?)
    • ツール,環境 (Linuxメイン)
  • 工学的数学
  • 剛体力学
  • 電気・電子回路
  • Minecraft (レッドストーン回路)
  • ロボット(上記以外の雑多なものはだいたいここに含まれそう)

予定

ざっとした予定は以下のとおりです.

  • 11/24(第1回) C言語での符号とビットシフトについて
  • 11/25(第2回) C言語での構造体とアライメントについて
  • 11/26(第3回) latexmkで楽々LaTeXコンパイル
  • 11/27(第4回) Fresnel積分と緩和曲線
  • 11/28(第5回) 小型ロボットに使いやすい表面実装ブザー
  • 11/29(第6回) 改行コードの歴史的背景
  • 11/30(第7回) 16進数を読み書きできるようになろう 12/1からは未定です.

悲しいことに100回過ぎたあたりからネタ切れを起こしそうなので,何かこういうのを書いてほしいというリクエストがありましたら,コメントでもTwitterでもいいので気軽にお知らせください.

※なんかしっくり来なかったのでシリーズ名を変えました.

Share Comments