auの日記

プログラミング初心者の日記。(auはハンドルネームです)

LinuxとUnixって結局何が違うのか調べてみた

auです。

Unix系、Linux系とよく言われていていますが、決定的にどんなことが違うのかを調べてみました。

実際に調べてみると、同じように思っている人が多いのか結構引っかかりました。

UnixLinuxはどちらもOSの一種で、主にサーバ向けのOSと呼ばれています。

Unixとは

Unixはもっとも古いOSで、サーバとして使用した際に、システムの安定性があり、CAL(Client Access License)がいらないという利点があります。

Unixは企業が無料で配布していたが、途中から有料でラインセンスを販売するようになった。

Linuxとは

Linuxは、Unixを参考に作られている。そして無料である。これは、Unixが有料になってしまったので、「Unixを参考に似たOSを作ろう」となってできたのがLinuxです。大学生が作ったっていうのも驚きですよね。

ですが、最初の段階ではカーネル部分しかなかったので周りのエンジニアが改良に改良を重ねた結果が今の高性能なLinuxです。

違い

結局違いは、無料か有料かという感じみたいです。

LinuxUnixを参考に作られた訳で、Unix風OSという感じの捉え方でいいみたいですね。

Unix系OSと言われたら、基本的にUnixでもLinuxでもどちらを想像してもいいという感じだと思います。


参考
tech-camp.in
japan.zdnet.com

MacとWindowsでミュータブルなレコードのリストを作成した際のバグ?を見つけた

auです。

Macでミュータブルなレコードのリストを作成した際にWIndowsででるメッセージと違うものが出てきたのでわかる方がいらっしゃったら教えていただけると幸いです。


作成したコード

type 'a stack = {mutable s: 'a list};;

let s = {s=[]};;

Macの場合

val s : '_weak7 list ref = {contents = []}

Windowsの場合

val s : '_a stack = {s = []}

_week n ってなんだろう・・・ってなります。特に不便がないのであればいいのですが・・・

木構造で使われる「ヒープ」とは

auです。

木構造アルゴリズムの問題などで、二分ヒープという木構造があるのですが、「ヒープ」ってどういう意味なんだろうと思い調べてみました。

ヒープとは

ヒープ(Heap)とは、日本語で「積み重ね」という意味です。

親ノードが子ノードよりも値が大きい(あるいは小さい)という木構造のことを指します。

主に二分ヒープや優先度付きキューの実装、PrimのアルゴリズムDijkstraアルゴリズムの実装にもよく使われます。

委員会で便利になるためのものを開発することになった

auです。

現在、大学で所属している委員会があるんですけど、2年間の中で不便と感じることがなかったかという議題になり、「イベントの告知が遅い」「企画でこんなシステムがあると面白いんじゃないか」という意見が結構出たので、一部のエンジニアを集めて開発をすることになりました。(なんか響がかっこいい)

数人でチームを組んで、必要なものの提出を確認するbotや、企画で必要になるシステムを作ることになり、主にGoogle App ScriptとGoogle Spread Sheetを使って開発することになりました。

まだ現状をみて、便利になるようなものを思いついてやり始めた段階なので、特に書くようなことではないかなとも思ったのですが、委員会での日記的な感じでつけれていければなと思います。

短いですが、この後委員会の集まりがあるのでこれくらいで終わろうと思います。

Open JTalkについて調べてみた

auです。

以前の記事で、Macでゆっくりボイスを喋らせることができるのかどうかを調べてみました。

program-shoshinsya.hatenablog.com

合成音声を作成するソフトで「Open JTalk」というものもあるようなので調べてみました。

open-jtalk.sourceforge.net

Open JTalkとは

Open JTalkとは、「AquesTalk」と同じく、テキストを入力すると、合成音声を作成してくれるソフトです。どうやらtxtファイルをwavへ変換してくれるみたいです。ffmpegとかと合わせればmp3への変換とかもできそうですね。

LinuxMacで使用することができるパッケージがあり

sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
brew install open-jtalk

でそれぞれインストールすることができます。



テキストを喋るための「音響モデル」が必要らしく、外部からダウンロードするみたいですね。

これを調べてみて面白かったのが、なんと「初音ミク」の音響モデルがあるみたいです。

詳しくはこちらの記事を読んでみてください。分かりやすかったです。

karaage.hatenadiary.jp

もう1つ驚いたのが、Pythonを使って開発することができるという点です。

こちらの記事を読ませていただきました。

qiita.com

初音ミクの音響モデルをPythonでいじることができるとなると、なんだかワクワクしますね・・・色々なことができそう。




こんな感じで軽くですが、調べてみると合成音声を作成するソフトもたくさんありますね。

現在も更新されているみたいで、最近の記事もちらほらと見かけました。

3D警備員といったものも生まれているらしく、AI技術と合成音声はどんどん進化するのかもしれませんね。

www.itmedia.co.jp

Webhookとは

auです。

Slackなどのアプリケーションで開発する際に、よく「Webhook」を使うのですが、そもそもWebhookの意味ってなんだろうと思ったので調べてみました。

Webhookとは

WebhookとはAPIの1つで、WeBアプリケーションのトリガーが起動した際に、外部サービスにPOSTリクエストを送信すること仕組みのことです。

Webコールバックや、HTTPプッシュAPIなどとも呼ばれるそうです。

Gitにプッシュされたことをトリガーとして、コミット情報をパラメータとしてPOSTリクエストすることで、外部アプリ(Slackなど)に通知するという仕組みを作ることができます。

参考
sendgrid.kke.co.jp

AIにおける過学習とは

auです。

最近授業で機械学習を使ったAI開発の授業が始まりました。

その際、「過学習」という用語が出てきたのですが、いっぱい勉強することじゃないのか・・・と疑問になったので調べてみました。

過学習とは

非常口の画像を学習ことを例にあげます。

過学習とは、一部の画像だけを学ぶことで、特徴ではない部分(画像の写真の角度などによって起きる機械学習にはいらない部分)を学習してしまい、人間には非常口の画像に見えても、AIはこれは違うと判断してしまうことです。

過学習になってしまう原因としては、学習データの不足や、複雑な画像を使っていることがあるようです。

学習データが少ないと、その画像でのみ学習することになってしまうので、必要のない特徴を学習してしまうことがあるそうです。多くの画像を用意するようにしましょう。


どこかで亀の画像が見る向きによって銃に見えてしまうみたいな奴が合った気がします・・・

機械学習はとても面白そうですが、数学ちっくな部分が多い気がするのでなんだか大変そうです・・・