shioponの雑記

IT系とかそれ以外とか

フレックスタイム制について調べた

フレックスタイム制は、労働者が決められた時間の中で始業時刻・終業時刻を自由に決めることができる勤務形態だ。 労働時時間は大まかにコアタイム(必ず勤務する時間)とフレキシブルタイム(いつでも出社・退社してもよく、任意で勤務する時間)に分かれている。(コアタイムが無い場合もあるらしい)

さすがのフレックスタイム制でもコアタイムだけ働けば良いというものではない。労働者は会社が決めた1ヶ月の総労働時間(所定労働時間)を満たすように計画し、働かなければならない。

例えばコアタイムが10時-15時だった場合、その時間は必ず勤務していなければいけない時間で、フレキシブルタイムの勤務時間は自由に決めて良い。しかし所定労働時間は決められているので、コアタイムで足りない部分はフレキシブルタイムに勤務して補わなければならない。

この所定労働時間を下回った場合の扱いはそれぞれだが、「遅刻扱い」などとして扱われる。逆に所得労働時間を超過した場合は残業代が支払われる。

  • 労働時間はコアタイム(必ず勤務する時間)・フレキシブルタイム(自由に出社・退社できる時間)に分かれている
  • コアタイムだけ勤務すれば良いわけではなく、会社が決めた所定労働時間を満たすようフレキシブルタイムも働く
  • 残業代は法定労働時間(日8時間、週40時間)ではなく、会社が決めた所定労働時間を超過した時に支払われる

フレックスタイム制で働きたい…)

半導体について調べた

半導体について調べた。

半導体とは

導体か絶縁体かどうかは、物質内を電子がどれだけ移動できるかどうかで決まる。
絶縁体は電子が存在することができない領域(バンドギャップ、禁制帯)が大きいため、電気がほとんど流れない。逆に鉄、銅、アルミなどの導体にはバンドギャップが存在しないため、電気が流れる。
半導体バンドギャップが存在するが小さく、電気を少しだけ流すため、導体と絶縁体の間の存在となっている。代表的な素材にシリコンがある。
半導体にも真性半導体や不純物半導体があり、不純物半導体にもN型、P型という種類がある。それを説明していく。

真性半導体

シリコンなどの半導体素材のみの、不純物を含まない半導体を真性半導体と呼ぶ。
電子殻を共有して結合(共有結合)された物質なのでこのままではほとんど電子を通さないが、熱などの刺激を与えることによって結合が弱まり、若干電子を通すという特性がある。 しかし、真性半導体がそのまま利用されることはなく、一般的には不純物を混ぜて抵抗値を大きく下げた不純物半導体として利用される。

不純物半導体

真性半導体はほとんど電気を通さないが、不純物を含ませると電気が流れやすくなる。このような不純物を含んだ半導体を不純物半導体と呼ぶ。さらに不純物半導体は、混ぜる不純物によってN型(ネガティブ)とP型(ポジティブ)の2つに分けられる。

N型(ネガティブ)

電子を余計に持った燐などの不純物を加えることで結晶の中を自由に動き回れる自由電子が生まれた結果、電気を通すことができる性質に変化する。いわゆるマイナスである電子が余分にあるということで、ネガティブ型と呼ばれる。

P型(ポジティブ)

電子が少ないホウ素などとシリコンが共有結合するが、完全に結合するためには電子が足りない部分(ホール)が生まれた状態。ホールを埋めようとしてとなりの電子が移動するが、元に電子があった場所がホールになるために隣の電子が…ということが絶えず繰り返されている。電子が少ないためプラスとして扱われ、ポジティブ型と呼ばれる。

整流作用

プラスのP型半導体とマイナスのN型半導体を接合させたものがダイオードであり、それを利用すると電気の流れが一方になる機構を作成でき、それを「整流作用」と呼ばれる。

以下ダイオードの例
P型半導体にプラスの電圧をかけるとプラスとして振る舞うホール(正孔)はP型領域からN型領域へ移動し、一方マイナスとして振る舞う電子はN型領域からP型領域へ移動するため、 正孔と電子は結合する。これが継続して行われるため、電流は流れ続ける。
逆に、P半導体にマイナスの電圧を流すと 正孔は正電極側へ、電子は負電極側に引き寄せられるため、 正孔と電子のやりとりは発生しない。そのため、電流が流れることはない。

N型とP型をNPNの形で接合させたり、PNPの形で接合させるとトランジスタができる。

参考文献

PDFについて調べた

PDFについて調べた。PDFの仕組みは語らない。

PDFとは

PDFはPortable Document Format(ポータブル・ドキュメント・フォーマット)の略であり、Adobeが開発した電子文書に関するフォーマットだ。1993年に発売されたAdobe Acrobatで登場した。

無償配布されているAdobe ReaderなどのPDFビューアーを利用すれば、特定の環境に左右されず、全ての環境でほぼ同様の状態で文章や画像などを閲覧できる特性を持っている。WordやExcelなどのファイル、HTMLのドキュメントは環境が変わると表示が崩れる場合が多いので、厳密にレイアウトを保持する必要のあるドキュメントはPDF化されることが多い。

他にも、ドキュメントのセキュリティを設定できたり、しおり・リンク・注釈などのドキュメントを利用するにあたって便利な機能を利用できる。

一般的に電子ドキュメントの公開・配布の場などで利用される。どの環境でもレイアウトを忠実に再現できるため、説明書などの広い範囲で公開される文書で好まれて利用されている。

JavaScriptの埋め込み

PDFファイルにはJavaScriptを埋め込むことができる。
JavaScriptを利用すれば入力のナビゲーションや入力時の値チェックなどが可能になるが、JavaScriptを埋め込むことができるということは、悪意のあるコードを埋め込むことができるということだ。
脆弱性のあるAdobe Readerで悪意のあるコードを含んだPDFを開くと、脆弱性を突いてOSがウィルスに感染することがあるため、注意するべき。
(OSやPDFリーダーのバージョンは常に最新に保つべきだろう)

ユーザビリティ

ユーザビリティ研究の第一人者であるヤコブ・ニールセンは、PDFに対して「オンラインの閲覧用に使ってはならない。」と結論づけ、PDFは印刷用と明示し、同一のコンテンツのHTMLページを作っておくべきと提唱している。

PDFに関してはそれだけでなく、大きなサイズのPDFは分割したバージョンと統合されたバージョンの両方を用意して配布するべきなど、いろいろな考えを提唱している。

ヤコブ・ニールセン - Wikipedia

Gitを知らないプログラマーにGitを教える際の導入

この記事はGitの導入記事ではあるが、教育者目線で話を進める。もちろんこれからGitを始めたいという人も歓迎する。
ここに書かれていることはGitの使い方ではなく、そもそもどうしてGitが必要なのかということと簡単な歴史の振り返りであり、導入である。

もくじ

はじめに

Gitを教える際は何よりも、バージョン管理システムの歴史を教えることが一番の近道のように思う。これはGitに限らず、プログラミング言語などを教えるときも同様だ。なぜそのシステムが必要なのか把握してもらい、それを実現するためにプログラマーがどんな道のりを歩んできたかを伝えることによって、そのシステムを深く理解してもらえる。(ような気がする)

導入

はじめは、バージョン管理システムとはどういうものかを聞かせる。
「コンピュータで作成するファイルの作成、編集を管理するためのシステム。 ファイルの作成日付、変更日、変更点などをシステムで保管して、過去の状態や変更内容を見たり過去の状態に戻したりできる。」
などという話だ。ここではこれ以上難しい話は止めておくべきで、ファイルの変更点が管理できるというイメージさえ掴んでもらえれば良い。

多少イメージを掴んでもらえれば、バージョン管理システムを使わない環境で発生するファイルの管理方法を教える。例えば、こういうやつだ。

  • 仕様書
  • 仕様書_最新
  • 仕様書_旧
  • 仕様書_新

実際はアンダーバーの後は日付が多いかもしれない。こういうファイル群は確かにバージョン管理ができているが、とても管理がやり辛い。こういう管理方法ではバージョンの番号を自分がつけないといけないし、複数人が修正した場合は手動で統合しなければならない。(教育者として受講者には、これがクソだということをはっきりと教えてやらなければならない)

ここでバージョン管理システムの話を始める。
「ファイルに複数の変更がかかると整合性が保てなくなることもあるので、一人でも複数人でもソースコードを管理するのは基本的に辛い。そういう苦行を無くすため、バージョン管理システムは日々進化してきた。」
ここであたかも銀の弾丸かのようにバージョン管理システムについて話すことで、アンダーバーでファイルを管理する方法はクソであり、Gitなどのバージョン管理システムが神であるという考えを受講者に植え付ける。(これは事実だ)

歴史

さて、バージョン管理システムが神だということを伝えたあとは、バージョン管理システムの歴史を順に語っていこう。いきなりGitを説明するより、大まかにでも、このシステムが生まれたころからの流れを説明したほうが理解しやすいはずだ。だいたいこのあたりを説明すれば十分だと思われる。

  • RCS(ロックアンドモディファイ)
  • CVS(エディットアンドマージ)
  • svn(アトミック・コミット)
  • git(分散バージョン管理)

このあたりの歴史を、ファイルとリポジトリの図などを交えながら説明すると効果的だろう。なぜGitが必要とされているのかは理解してくれたならば、ここからGitのローカルリポジトリ・リモートリポジトリ、そしてコミット、プッシュ、ブランチなどの話に繋げていくのが理想的ではないだろうか。

1982年: RCS(ロックアンドモディファイ)

これが初期のバージョン管理システムになる。
編集するファイルにロックをかけて他のユーザが編集できないようにし、編集が完了したらコミットしてロックを解除する方式。編集する際にロックされるので1ファイルにつき最大1人までしか編集できないし、コミットされなければ永遠にそのファイルを他の人が編集することができない。(この時点で、コミットとは「編集を確定してシステム上のファイルに反映させること」ということも教えておいたら良い)

1990年: CVS(エディットアンドマージ)

エディットアンドマージ(コピー・マージ方式)では編集するファイルをシステムからローカルにコピーし、このコピーを編集する。編 集が完了したらシステム上のファイルと合体させる。元ファイルとの差分のみを取り込むマージ機能によって、複数人のユーザが同じファイルを編集できるようになった。

2000年: svn(アトミック・コミット)

アトミック・コミットが誕生する。今までは1ファイルごとにコミットしなければいけなかったが、この機能によって複数のファイルを1度にコミットすることが可能になった。

2005年: git(分散バージョン管理)

分散バージョン管理システムが誕生する。
中央のシステムに繋がっていなくてもローカルでコミットが出来るようになり、ローカルでコミット、リポジトリへプッシュするスタイルが確立されていく。電波の無い場所でも細かい単位でコミットできるようになり、インターネットに接続した時にプッシュでリポジトリに反映すればよいなど、分散バージョン管理システムならではの便利な機能が複数含まれている。
(gitではコミットの意味が今までと少し変わり、リモートへの反映ではなく、差分の作成となる。代わりにプッシュがリモートへの反映となった(正確には差分の作成ではないが、ここでは気にすることではない))

(休憩)

WindowsでJIS->USとCaps->Ctrl

WindowsでJISキーボードをUSキーボードにするのは何度かやったが、毎回記録を残していなくて調べなおしていたので備忘録として。(自分用)

JISキーボード -> USキーボード

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]

name value
LayerDriver kbd101.dll
OverrideKeyboardIdentifier PCAT_101KEY
OverrideKeyboardSubtype 0

Caps -> Ctrl

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

name value
Scancode Map 00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

参考

Windows/TIPS/レジストリを修正してCAPSLOCKの割り当て変更 - yanor.net/wiki

結局、はてなブログに帰る。

ブログサービスを転々としたが、なんだかんだ、はてなブログが安定な気がした。
bloggerはとても優秀だが標準でMarkdownをサポートしていない点だけ気になった。(StackEditやMarkdown.jsを利用すればMarkdown記法で書けないこともないが、表示が不安定だ)