LinuxやMacでUUIDを生成するコマンド

こんにちは。beaglesoftの真鍋です。

今回はLinuxやMacのシェルでUUIDを生成するときに便利なuuidgenを紹介します。

何するものか?

uuidgenはUUIDを生成するためのコマンドです。

使ってみる

以下の通り利用できます。

$ uuidgen
8D4F960F-8E4D-484E-B429-5CCEA11C7880

manを確認すると以下の通りとなっています。

NAME
     uuidgen -- generates new UUID strings

SYNOPSIS
     uuidgen [-hdr]

DESCRIPTION
     The uuidgen command generates a Universally Unique IDentifier (UUID), a 128-bit value guaranteed to be unique over both space and time.

     The following options are available:

     -hdr      Emit CoreFoundation CFUUID-based source code for using the uuid in a header.

RETURN VALUE
     The UUID is printed to standard output as a hyphen-punctuated ASCII string of the form: EEF45689-BBE5-4FB6-9E80-41B78F6578E2 (in printf(3) format
     "%08X-%04X-%04X-%04X-%012X"), unless the -hdr option is given, in which case a fragment of source code is output.

-hdrオプションを付けると、生成したときのマクロが表示されます。これの使いみちがよくわかりません…。

$  uuidgen -hdr
// 198AE91D-3E5B-4790-9465-ABC49E025442
#warning Change the macro name MYUUID below to something useful!
#define MYUUID CFUUIDGetConstantUUIDWithBytes(kCFAllocatorSystemDefault, 0x20, 0xAA,...)

感想

タイムスタンプを利用しようかと思ったのですが、uuidがshellで生成できることを知りませんでした。今後利用する機会が増えそうです。

C#でKuromojiを利用して形態素解析を試してみる

こんにちは。beaglesoftの真鍋です。

ちょっとC#で形態素解析をしたいと思いましてLucene.Net.Analysis.Kuromojiを利用してみました。

www.nuget.org

むかしC#で形態素解析をしたときにはNMeCabを利用しました。

www.nuget.org

とても便利に使わせていただきましたが、残念ながらdotnet coreに対応していません。そのため、以前Javaで利用したことのあるKuromojiのdotnet版がないかなぁと沙汰していたところLucene.Net.Analysis.Kuromojiにたどり着きました。

動作させてみる

テストコードを参考にとりあえず動作するものを作ってみました。いろいろと試してみたのですが、サンプルにあった辞書ファイルを読み込んで辞書の内容で取得できることを試しています。

$ dotnet run

対象の文字列:関西国際空港
---
ICharTermAttribute=>関西
ITermToBytesRefAttribute#BytesRef=>[]
IOffsetAttribute#StartOffset=>0
IOffsetAttribute#EndOffset=>2
IPositionIncrementAttribute=>1
IPositionLengthAttribute=>1
IBaseFormAttribute#GetBaseForm=>
IPartOfSpeechAttribute#GetPartOfSpeech=>テスト名詞
IReadingAttribute#GetReading=>カンサイ
IReadingAttribute#GetPronunciation=>
IInflectionAttribute#GetInflectionForm=>
IInflectionAttribute#GetInflectionType=>
---
---
ICharTermAttribute=>国際
ITermToBytesRefAttribute#BytesRef=>[]
IOffsetAttribute#StartOffset=>2
IOffsetAttribute#EndOffset=>4
IPositionIncrementAttribute=>1
IPositionLengthAttribute=>1
IBaseFormAttribute#GetBaseForm=>
IPartOfSpeechAttribute#GetPartOfSpeech=>テスト名詞
IReadingAttribute#GetReading=>コクサイ
IReadingAttribute#GetPronunciation=>
IInflectionAttribute#GetInflectionForm=>
IInflectionAttribute#GetInflectionType=>
---
---
ICharTermAttribute=>空港
ITermToBytesRefAttribute#BytesRef=>[]
IOffsetAttribute#StartOffset=>4
IOffsetAttribute#EndOffset=>6
IPositionIncrementAttribute=>1
IPositionLengthAttribute=>1
IBaseFormAttribute#GetBaseForm=>
IPartOfSpeechAttribute#GetPartOfSpeech=>テスト名詞
IReadingAttribute#GetReading=>クウコウ
IReadingAttribute#GetPronunciation=>
IInflectionAttribute#GetInflectionForm=>
IInflectionAttribute#GetInflectionType=>
---

ちょっと見づらいですが、関西国際空港が単語単位で分解されています。

ソースコード

ソースコードは以下のようになります。

github.com

KuromojiSample

辞書ファイル

辞書ファイルはテストコードで使用されていたものをそのまま利用しています。

gistdada679d34a0f668c0517abc1cc3f714

さいごに

dotnetはJavaに比べるとライブラリが少ないという印象があるのですが、探せばいろいろあることが最近わかってきました。もっとアンテナの感度と探索範囲を広げるようにしないととおもいました。

作者の方に感謝です。

スラスラわかるC# 第2版

スラスラわかるC# 第2版

地図を使ってメモを作成する

こんにちは。ビーグルソフトの真鍋です。

ここ1ヶ月ほど地図を使ったアプリケーションを作っています。ようやっと7割くらいできてきました。

今回やろうとしていることは、地図の特定の位置にマーカーなどを作成してそのマーカーにメモと画像を設定するというものです。

↓こんなかんじです。 Image from Gyazo

他にも円や線を引くこともできます。

  • おおたかの森駅から300メートル圏内 Image from Gyazo

  • おおたかの森浄水場からおおたかの森駅までの道のり Image from Gyazo

もう少しで地図を利用して便利になる機能を提供できそうです。