wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

【LaTeX】TeXworksのフォント変更【TeXworks】

結論

デフォルトで選択可能なフォントではMS ゴシックを選べばマシ。

背景

WindowsのTeXworksのデフォルトフォントMS UI Gothicで、書いていてとても見難いです。特にIや_といった文字が埋もれてしまい超ストレスフルです。

フォントの変更

以下の手順で変更します。(※画像ではフォントが既にMeiryo UIに変更されています)

  1. 編集
  2. 設定
  3. エディタのデフォルト直下のプルダウンを操作
  4. 使いたいフォントを選びOK
  5. 一度エディタを終了し再起動

画面の通りフォントサイズなども変更可能です。

f:id:wrongwrongwrongwrong163377:20180421205832p:plainf:id:wrongwrongwrongwrong163377:20180421210045p:plain

参考サイト

detail.chiebukuro.yahoo.co.jp

フォントについて

全角半角混じりでプログラミングをするのであれば等幅フォントがおすすめです。等幅フォントとは文字によって幅が違わず、全角=半角2文字幅のフォントで、インデントが揃うのでプログラムなどでは見やすいです。

自分はMS ゴシックに設定しました。ここまでで満足してしまったので止めてしまいましたが、こだわるならRictyなるフォントが良さげに見えました。

選択肢は恐らくOSで使用可能になっているフォントだと思われるので、選択肢に無いフォントでも導入すれば使用可能かも?

【LaTeX】マクロ機能\newcommandを使った文章作成効率化

まとめ

この記事の内容をまとめたサンプルです。いつもの\beginと\endが乱立する感じは無く、とてもシンプルに書けています。

\documentclass[dvipdfmx]{beamer}
\usetheme{Boadilla}

% コマンド定義
\newcommand{\EQ}[1]{\begin{equation}{#1}\end{equation}} % 等式
\newcommand{\MATRIX}[2]{\left(\begin{array}{#1} #2 \end{array} \right)} % 行列
\newcommand{\FRAME}[2]{\begin{frame}{#1} #2 \end{frame}} % フレーム
\newcommand{\BLOCK}[2]{\begin{block}{#1} #2 \end{block}} % ブロック

\begin{document}
\FRAME{さんぷる}{
  あああ
  \BLOCK{いいい}{
    \EQ{
      \MATRIX{ccc}{
        a & b & c \\
        d & e & f \\
        g & h & i
      }
    }
  }
}
\end{document}

出力結果は以下の通りです。
f:id:wrongwrongwrongwrong163377:20180421182411p:plain

背景

普通にLaTeXで文章作成をやっていると一々環境を書くのがめんどくさいです。例えば数式の環境は以下のようになります。

\begin{equation}
  e^{i \theta} = \sin \theta + i \sin \theta
\end{equation}

マクロ機能を使う

LaTeXにはこうした不便を解消するマクロ機能があります。
実際にマクロ機能で数式を定義してみた例が以下。

\newcommand{\EQ}[1]{\begin{equation}{#1}\end{equation}}

これをプリアンブル部に書いた上で数式を書くと以下のようになります。

\EQ{
  e^{i \theta} = \sin \theta + i \sin \theta
}

超シンプルになりましたね。

応用

Beamerのblockなどもこの方法で簡単化できます。

\newcommand{\BLOCK}[2]{\begin{block}{#1} #2 \end{block}}
\BLOCK{aaa}{
  bbb
}

行列のように書かなければならないパーツが多くて面倒なものも以下のように簡略化できます。

\newcommand{\MATRIX}[2]{\left(\begin{array}{#1} #2 \end{array} \right)
\MATRIX{ccc}{
  a & b & c \\
  d & e & f \\
  g & h & i
}
作法

個人的な作法ですが、自分で定義したマクロは大文字で書くようにしています。
小文字で書くとLaTeX本来の命令と混ざるのと、場合によっては使いたい名前が既に定義されている名前と被って使えなかったりするからです。

参考サイト

詳しい使い方は以下を参考にして下さい。
LaTeX入門/LaTeXマクロの作成 - TeX Wiki

【C++】SFMTを使ってみた

SFMTを利用できるようにするまでをまとめます。(※現状上手く動いていません、備忘用メモ程度です……)

ダウンロード

下記URLからダウンロードします。
SIMD-oriented Fast Mersenne Twister (SFMT)

配置

解凍して配置します。
SFMTはビルドしなければ利用できません。また今回は別のプロジェクトで使い回す予定がなかったので、CLionで予めプロジェクトを作成し、そこの中に入れてプロジェクトと一緒にビルドする形としました。
という訳でプロジェクトのフォルダ構成は以下のようになります。SFMT-src-1.5.1直下にヘッダなどが入っています。
f:id:wrongwrongwrongwrong163377:20180420162419p:plain

ビルド設定

今回は下記の1-1を参考にCMakeListsに設定を書きました。
How to compile SFMT
CMakeListsの内容は以下の通りです。SSE利用の設定がどうたらいう話も見ましたが、とりあえず読めていないのでここでは触れません。

cmake_minimum_required(VERSION 3.10)
project(SFMT_Test)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp SFMT-src-1.5.1/SFMT.c)

add_executable(SFMT_Test ${SOURCE_FILES})

利用

ちゃちゃっといた確認用コードは以下です。

#include <iostream>

#include "SFMT-src-1.5.1/SFMT.h"

using namespace std;

int main() {
    sfmt_t sfmt;

    sfmt_init_gen_rand(&sfmt, 0);

    cout << sfmt_genrand_uint64(&sfmt) << endl;
    cout << sfmt_genrand_uint64(&sfmt) << endl;

    cout << sfmt_genrand_uint32(&sfmt) << endl;

    return 0;
}
実行結果
C:\Users\wrongwrong\CLionProjects\SFMT_Test\cmake-build-debug\SFMT_Test.exe
1139168856888879704
6881867631762694802
3373935053
参考にしたページ

www.albow.net

トラブル

コードを以下のように書き換え、32ビット乱数の生成後に64ビット乱数の生成を行うとAssertionが起きています。順序が逆では発生していません。
時間が無いので気が向いたら原因究明までやるかも?

#include <iostream>

#include "SFMT-src-1.5.1/SFMT.h"

using namespace std;

int main() {
    sfmt_t sfmt;

    sfmt_init_gen_rand(&sfmt, 0);

    cout << sfmt_genrand_uint32(&sfmt) << endl;

    cout << sfmt_genrand_uint64(&sfmt) << endl;

    return 0;
}
実行結果
C:\Users\wrongwrong\CLionProjects\SFMT_Test\cmake-build-debug\SFMT_Test.exe
772581976
Assertion failed: sfmt->idx % 2 == 0, file c:\users\wrongwrong\clionprojects\sfmt_test\SFMT-src-1.5.1/SFMT.h, line 167

Process finished with exit code 3

【日記】強さ・強みついて考えたこと【意見】

ツイッタで書いたことを、日本の現状やらの下りは抜きでもう少し掘り下げたくなったので書きます。

書きにくかったので断定口調としましたが、全部自分で思ってるだけのことです。

戦って勝つ強さ・強みの作り方

冒頭のツイートの通り、戦って勝つ強さ・強みの作り方は以下の3つのレベルに分かつことができます。

  1. 既存の状況の中で強くなる
  2. 自分に有利な状況を作る
  3. 別次元から襲えるようにする
1.既存の状況の中で強くなる

1は筋トレをする、道具を上手く使えるようになるといった、行動によって状況を作るレベルとします。

2.自分に有利な状況を作る

2は戦略や戦術を導入するやり方です。理論の下に行動を体系化し、「何をどのようにどうするとどうなる。だからこのように行動する」までを実現するというレベルです。

3.別次元から襲えるようにする

3は何か新しい物を作る、新しい何かを用いて問題を解決するなど、相手が予想できない所から成果を引き出すことで状況を作るレベルとします。このレベルは、最近よく耳にするイノヴェーションそのものです。

それぞれの実現に必要なコストと効果

それぞれの実現に必要なコストは1<2<3の順に並びます。

1のレベルは単純に行動するだけで達成ができるものです。2のレベルは行動の前に前提となる知識・情報を集めて正しく分析し、正しく行動することで達成できます。3のレベルは、2のレベルを何度も実行した中から新しい事実を発見し、更にその事実に対して2のレベルを正しく実行することで実現できます。

それを実現したときの効果の大きさは1<<2<<3の順に並びます。

ツイートにおいてコストを掛ける優先度は3が一番高いとしたのは、高いレベルを実現するほど戦闘力が跳ね上がるからです。ただし、例えば3のレベルのみに投資し、1や2をおろそかにしてしまえば、結局3が起きなくなる(後述する新奇化が起こってしまい、最終的に相対的に高いレベルに到達できない)状況が発生することも有るでしょうから、どれかだけに投資すれば良いということではありません。

どこまでが人の手の内か

これら3つのレベルの内、人間の手によって制御が可能なのは2まででしょう。体を鍛えたり、戦略や戦術を考えることと違って、他者に差を付けられるような新しいものが自分たちに予想できるはずが無いからです。

一方最近では、その不確実さを許容しつつ新しいものが生まれやすい環境を作る、確率を高めるようなやり方が世界的に戦略として取り入れられつつあると感じます。

 陳腐化・新奇化

2,3のレベルでは、それが一般化した場合効果が低下します。これを陳腐化とします。

例えば金属は、実用化当時は3のレベルに属していたものです。しかし、それは現在では当たり前のものになりました。少なくとも現在の青銅や鉄には戦場を一変させるほどの力はありません。

2のレベルのものが陳腐化した例としてはデータ分析が挙げられるでしょうか。現在企業の中で顧客や売り上げに関するデータを集め分析することは当然のように行われており、ただデータを集め分析するだけでは2のレベルとしての効力は発揮されなくなっています。

陳腐化とは反対に、一度陳腐化していたものの希少性が上がる、あるいはそもそも無くなることによって効果が増す場合が有ります。これを新奇化とします。最も良い例はローマ文明とルネサンスでしょうか。

あるいは世界が発展する中で取り残されるようなことがあれば、周囲では陳腐化しているものがその地域では絶大な効果を発揮する、新奇化が起こるということも有り得ます。

レベルの昇華

1,2のレベルを突き詰めることによって上のレベルと同等の効果が発揮される場合が有ります。これをレベルの昇華とします。

スパルタ兵は極めて精強な兵となるよう育てられ、数の差、戦略を何度も覆しました。日本軍も、超人的な技量・能力を突き詰めることによって、開戦当初はアメリカ軍を相手に兵器の性能を超えた無双の活躍を見せました。これは個々人の能力そのものが戦術・戦略のレベルまで昇華した例でしょう。

一方、この昇華を意図的に起こしたり、起こってしまった昇華の状態を維持しようとすることはあまり良くありません。レベルの昇華はあくまで俗人的で再現性の無い状態になりやすく、相手に3のレベルを実現され、前提を崩された際に対応が難しく、更に新しいものを実現するための投資を怠った状況となるためです。

別の記事に絡めた言い方をするのであれば、下のレベルを突き詰めて上のレベルを目指すやり方はすなわち帰納的な手法であり、この手法は問題の規模や問題そのものの変化に対応することが難しいということには歴史的な説得力があります。

まとめ

これ以上書くと本題がブレブレになるのでまとめます。この記事では戦って勝てる強さ・強みを3つのレベルに分け、それぞれの関係や動きについて考えました。この3つのレベルでの考え方は組織、個人問わず様々な規模・場面に応用していけるのではないかと勝手に思ってます。

【日記】14型程度のゲーミングノートPC 7種 筐体スペック比較【ゲーミングノート】

ノートパソコンの買い替えを考えるため、筐体のサイズや重量の比較表を作りました。

背景

現在利用しているのはLenovo T540pです。最近はこれを持ち運んで講義を受けたり出先で開発したりしていますが、購入当時は持ち運ぶことを想定しておらず、近年ノートPCのスペックが著しく向上したこともあり、現状では『重い・デカイ・非力』の3重苦に苛まれています。特にGPUが非力なため、帰省時に遊びにくいなどの不都合があります。
MSIのGS32の後継機を待ってこの3重苦に耐えてきましたが、残念ながら全く新しいのが出る気配が有りません。ということで14型も視野に入れつつ、Intel第8世代CPUを搭載したノートPCを選ぶ際の参考として以下の条件で比較表を作りました。

  1. 一部例外を除き14型以下のPC
  2. GTX 1050と同等かそれ以上のスペックのGPUを搭載可能
  3. バッテリー込み重量2.0kg以下
  4. テンキーレス

比較表

長さはmm、重量はkgです。

スペック T540p XPS 15 GS65 GS43 P34G v7 AERO 14 Razer Blade RZ09 GS32
パネルサイズ 15.6 15.6 15.6 14 14 14 14 13.3
376.6 357 357.7 345 340 335 345 320
248.1 235 247.7 245 239 250 235 227
厚さ 29.9 17 17.9 22.8 20.9 19.9 17.9 19.8
重量(バッテリー込) 2.59 1.99 1.88 1.8 1.69 1.89 1.86 1.2

考察

調査してみると意外と14型以下のゲーミングノートは選択肢が無く、驚きました。
14型ノートで一歩抜けているのはGigabyte製品でしょうか。重量・サイズ両面でよい数字が出ています。カバンの都合で軽く長辺が短い方が都合が良いので、挙げた中から選ぶならコレです。
15.6型は特に大きさの面で14型の製品に劣っていますね。大画面狭額縁はとても魅力的ですが、自分の選択肢からは外れそうです。
ACアダプタについては情報が見つからず比較しきれない状況が有り、いつかこちらについても比較したいなと思います。

感想

この比較表によって一応の目安・基準はできたかなと思います。
まだIntel第8世代CPU搭載の製品は出揃っておらず、GPUに関してもIntel + Radeonとして話題になったi7 8809G搭載製品が出てきていないなど、購入を躊躇わせる要素が沢山あるのが現状です。
言ってないで買いたいんですが、金が……。それでも年内には買い替えを行いたいですね。
多分AERO 14が日本に入ってきたら買うと思います。……キーボードが物凄い気に入らない配置してるのはとりあえず無視します。

【LaTeX】dvipdfmxが大量のwarningを吐き、block等が表示されない状況への対処

結論

使用している環境に合わせて\documentclassのオプションを書き換えます。

状況

beamerでスライドを作っている最中dvipdfmxが見たことも無い量のwarningを吐き、pdfへの出力は一応できるもののblock等が透明に出力されるといった問題が発生しました。

原因

下記の記事からソースをコピペさせて頂き作成を進めていましたが、\documentclassのオプションの内容が自分の環境と違っていたことが原因です。
qiita.com

対処

自分の環境に合わせ\documentclassのオプションを書き換えました。

% before
% \documentclass[12pt, unicode]{beamer}
% after
\documentclass[dvipdfmx]{beamer}

感想

去年の俺!何故ゼミ資料をGithubで管理しなかった!

【日記】MSIの新型ゲーミングノートについて【ゲーミングノート】

12日にMSI第8世代IntelCPU搭載ゲーミングノートを発表しました。個人的に気になる製品があったのでまとめます。

GS65

気になった製品はGS65です。GSシリーズはMSIのゲーミングノートの中でもコンパクトさに主眼を置いていますが、このGS65はなんと従来の14型の製品と同等のサイズで15.6インチ液晶を搭載しています。
Overview for GS65 Stealth Thin 8RF-002JP | Laptops - The best gaming laptop provider | エムエスアイコンピュータージャパン

従来製品とのサイズ比較

単位はパネルサイズがインチ、縦横厚みがmmと重量がkgです。

GS65 GS43 GS63
パネルサイズ 15.6 14 15.6
357.7 345 380
247.7 245 249
厚さ 17.9 22.8 17.7
重量(バッテリー込) 1.88 1.8 1.8

GS63と比べると圧倒的に横幅が減りました。重量は増しているので密度は上がっている感じでしょうか?
今回は同じGSシリーズとの比較なので微妙に見えるかもしれませんが、他の会社の製品と比べるとその小ささには驚かされます。世界初の狭額縁採用ゲーミングノートということで、今後はこのような製品が増えていくのでしょう。
公式サイトではACアダプタのサイズが小さくなったという記載もあります。

感想

個人的にはここ1年半位GS32の後継を待っているのですが、今回も発表がありませんでした。その点はとても悲しいです……。
本体の小型化やACの小型化については嬉しい限りですので、このまま更に小型化したGS32の後継も出して欲しいですね。
狭額縁非採用のGS32が横320x縦227mmということで、更に小型化したGS32の後継に期待しています。期待しているので早く出して下さいMSIさん……。もう2年近く待ってるんですよ……。

気になる点

今回の発表に限りませんが、ACアダプタのサイズと重量を書いてないサイトが多すぎると思います。
ノートPCはACアダプタと共に持ち運ぶもので、しかもゲーミングノートはACアダプタが大きくなりやすいのに、これはかなり不親切ではないでしょうか。特に今回はACアダプタを小さくしたということなのに、これでは他社製品への優位性も示せないでしょう。
もう一つ気になるのは、過去製品では音の定位が左に寄っているという問題があった点です。改善されているでしょうか……。
不安な点は幾つかありますが、15.6型ノートとしては最小クラスのサイズがとても魅力的な製品です。定位やACアダプタの大きさに関する疑問もレビューが出回れば解消されるでしょう。