Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
RSS2.0

WSL2 / Windows Terminal / Windows 10 で Ubuntu 環境を構築する

Windows で CUI の Ubuntu 環境を構築するのによいという WSL2 で Linux 環境を作ってみました。
VMPlayer や VirtualBox のように Windows 上で VM として Linux が動く形ですが、Linux カーネルが完全に動く(らしい)わりにめっちゃ軽いのが特徴です。私の環境だと 5 秒くらいで Ubuntu が起動してくれるます。早い。Windows で作業をしている時に、使いたいタイミングで追加で Linux 動かせるのがいいですね。

WSL2 で起動した Linux 内の GUI アプリを Windows 上のウインドウアプリケーションとして動かす(VirtualBox のシームレスモード)こともできますが、今回は WSL2 の CUI ターミナルだけ使っています。

また、WSL2 で起動した Ubuntu の CUI ターミナル(と WSL を起動するのに利用する PowerShell)をよりリッチに使うために、Windows Terminal もインストールしました。
wsl02.png
Windows Terminal を使うとこんな風に WSL2 のターミナルや PowerShell、Git Bash(使うには自分で追加設定が必要)などをまとめて 1 つのターミナルから触れるようになります。
続きを読む Linux  コメント (0) 2024/11/13 12:02:23

chocolablog を ver 0.11 にアップデートしました

chocolablog を ver 0.11 にアップデートしました。今回のアップデートは Python3 への対応です。

chocolablog を運用しているサーバーのアップデートにより Python のバージョンが 3.8 系になりまして、これまで Python2 で動いていたのでもろもろ書き換える必要がありました。

というか Python3 に上がってからずっとこのブログ全体が Internal Server Error で落ちてましたね…。Python のメジャーバージョンアップは個人的にはだいぶ待ち望んでいたものではあったのですが、いざ上がったタイミングがあんまり個人開発に時間を割ける状況になかった時期なのでずっと放置していました。エラーで落ちてるとはいえ、ちゃんとサーバーエラーになってるならまあいいか、と思っていたらだいたい 2 年半くらい経っていました。見に来ていただいていた方にはすみませんでした。

今回はなんとなくやる気になったので Python3 対応をしたのですが、本音を言うとこのブログ自体どうしようかな、という感じです。技術系の情報も全体的にかなり古くなっちゃってますしね…。また気が向いた時に何か書こうかな。
  chocolablog 開発  コメント (0) 2024/11/09 23:31:17

They Are Billions スコア係数 60% クリアしました

凶悪な難易度と名高い RTS、They Are Billions をスコア係数 60% でクリアしました!!
・・・まじでつらかった・・・
they_are_bollions_60.png

前回の記事でマップ「穏やかな平原」を開放して、それからは次のマップ「凍てつく高地」を開放することが目標となっていました。「凍てつく高地」の解放にはスコア係数 60% 以上でのクリアが必要なのですが、すごい大変でした。いったい何度死んで、何度ゲームを投げたことか・・・。
ゾンビに蹂躙され続ける間になんとなくコツがつかめてきた気がしないでもありませんが、今回クリアできたゲームを振り返ってみると、結局のところ運ゲーだと思います。このゲームはマップがランダム生成されるのですが、初心者にとってはいかに有利なマップを引き当てるかが勝利への近道な気がしてなりません(吐血

スコア係数 60% クリア時の難易度設定

今回の難易度設定はこんな感じでした。

マップの種類: 穏やかな平原
ゲームの継続時間: 120 日間(普通)
感染者の数: 少ない(普通)
スコア係数: 60%

ゲームの継続時間をなるべく長くすることを優先して、スコア係数が 60% 以上となるように設定すると、感染者の数は少ない(普通)になりました。
感染者は少ないはずなんですが、極めて少ないに比べるとけっこう増えてます。やばいです。

この難易度でのスコアがこれになります。
they_are_bollions_60_score.png
最終的には人口が 2470 になってますが、これは最終ウェーブをのりきった後にゾンビのいなくなった平和な世界で石の家を建てまくって到達したもので、最終ウェーブ前の人口は 1950 程度でした。噂では人口 2500 くらいがクリアするための目標人口になるらしいです。
続きを読む 雑記They Are BillionsSteam  コメント (0) 2019/04/20 16:23:04

They Are Billions 初めてクリアできました

they_are_billions_01.png
凶悪な難易度と名高い RTS、They Are Billions を初クリアしました。
と言ってもクリアしたのは最初のマップである「薄暗い湿原」です。一昨日の朝くらいにセールしていたのを見つけて買ってみたのですが、16 時間くらいプレイしてやっとクリアなあたり、噂にたがわぬ難易度です。ゾンビの波に蹂躙されること…… 6 回くらい??難しいんですが、面白いです。このゲーム。ゾンビとの戦闘も生産作業もわりとスピーディに進むので、ついついもう 1 ターンやりたくなってしまいます。

初クリア時の難易度設定

何回かゾンビにやられているうちに、どうやら難易度毎にゲームをクリアしないとマップが増えないらしいことに気づき、途中からこんな感じの難易度設定で遊んでいました。

マップの種類: 薄暗い湿原
ゲームの継続時間: 120 日間(普通)
感染者の数: 極めて少ない(簡単)
スコア係数: 26%

They Are Billions の難易度設定では、マップの種類や生き残る目標日数、ゾンビの数を設定するとスコア係数が表示されます。マップは全部で 4 種類あって、2 つめ以降はアンロックするのに一定のスコア係数でゲームをクリアする必要があります。
2 つめのマップの解放条件がスコア係数 22% 以上ということだったので、それを超えるくらいに設定してました。

クリア時のスコアです。たぶんかなり低い!!
they_are_billions_03.png

続きを読む 雑記They Are BillionsSteam  コメント (0) 2019/04/07 14:29:37

マルチブート環境で Fedora 29 をインストールする

fedora29.png
そろそろ頃合いかなということで手元の Linux 開発環境も、先日組んだ自作 PC に移行することにした。
すでに Windows がインストールされているマシンなので、恒例のマルチブート構成(EFI ブート)で Fedora 29 を追加でインストールした。
ビデオカードのドライバー設定などは毎回はまるので、作業の覚書きとして、詰まりそうな箇所のみ将来のために特筆しておく。

Fedora 29 のパーティションをカスタマイズする

Fedora 29 Workstation の Live メディアを USB メモリとして作っておき、それでブート後にインストールしていく。
インストールは画面に従って進めていけばいいが、パーティションのレイアウトだけは自分で決めたかったので以下のようにカスタマイズした(もちろんパーティションのレイアウトは自動で生成することもできる)。

fedora29_partitions.png
インストールするディスクが sdb だったので、パーティションは指定した順に /dev/sdb1 〜 /dev/sdb2 になっている。
デバイス    マウントポイント   サイズ   タイプ
/dev/sdb1   /boot/efi          200MiB   EFI パーティション
/dev/sdb2   swap               2GiB     swap
/dev/sdb3   /                  109.6G   ext4
近年の流れにのって EFI でブートするようにするため、200 MiB の /boot/efi パーティションを忘れずに先頭に置いておく。
メモリは 16 GB 積んでいるので swap パーティションを作る必要があるのか迷ったが、今までずっと作ってきたので今回もなんとなく作っておいた。
残りの容量はすべて何も考えずに / に割り当てた。個人の開発環境なのでこれくらいがちょうどいいかなと。

NVIDIA のビデオカードのドライバーをインストールする

毎回 Linux 環境を作る際に苦労するのがこの NVIDIA のビデオカード用ドライバーのインストールになる。せっかくいいビデオカードを積んでいるので綺麗な GUI でマルチディスプレイ環境を使えるようにしたいのだが、NVIDIA のドライバーは別途インストールしなければならないこともあり、面倒くさい。

続きを読む Linux  コメント (0) 2018/12/09 13:28:15

自作 PC のパーツが届き始めた

冬の大自作 PC 祭りに向けてポチッたパーツが届き始めました。
水曜日にポチって木曜の夜には受け取れているので、早い早い。
pc_parts01.jpg
わりとノリと勢いでポチった感があるのでこうしてパーツが届き始めた今でも、ちゃんと自作できるんだろうかと不安と言うか他人事と言うか、不思議な感覚でいます。
ま、たとえ失敗したとしても今使ってる PC が使えなくなるわけじゃないしね。

本日届いたのはドスパラさんで買ったビデオカード、マザーボード、メモリの 3 品。
ASUS CERBERUS-GTX1070TI-A8G (CERBERUS GeForce GTX1070Ti 8GB)MSI Z370 GAMING PLUS (Z370 1151 ATX)、G.SKILL F4-2400C15D-16GNT (DDR4 PC4-19200 8GB 2枚組) です。

ビデオカードはあいかわらず箱がでかいです。ケルベロスなんていうたいそうな名前がついているのもとてもビデオカードらしいところ。
ふー、実物の PC パーツを見てみると徐々にテンションが上がってきますね。

今回いろいろ参考にさせていただいているちもろぐさんいわく、マザーボードは CPU ソケットにピン折れがないかチェックすべしとのことでしたので、今日はまだ組み始めないものの、マザーボードの箱だけ開けてみることにしました。

pc_parts01_check_mother_board.jpg
こちらが MSI Z370 GAMING PLUS の CPU ソケットの様子です。
そんなに詳しいわけじゃありませんが、見た感じピンに折れているような箇所はありませんでした。
整然と並んでます。美しい。
続きを読む 雑記お買い物  コメント (0) 2018/11/15 22:47:51

2018 年冬の自作 PC チャレンジ

我が家にも Windows マシンがあるのですが、Adobe Photoshop に強いとか OpenGL に強いとかいう理由でビデオカードが Quadro になっています。
ところが最近はすっかりゲーム用途で使うことが多くなってきていて、一般的な PC ゲームを遊ぶ上では Quadro であるがゆえにグラフィック性能が犠牲となっています。
マシン自体はもういつ買ったかも忘れたくらいの代物です。まともな拡張スロットは PCI Express 2.0 x16 が 1 つのみで、ビデオカードを変えようにも対応しているビデオカードはそんなにありません。
そろそろ買い換えた方がいいだろうか、買い換えるならまた BTO か、しかし BTO だとマザーボードが拡張性が……

などと考えることはや数年。
今朝になってとうとう買い変える決意を固めました。

しかも自作 PC(初)です。

一通りのパーツはポチりました。
うまく組めるかはわかりませんが、ちょっと挑戦してみようかと思います。

続きを読む 雑記お買い物  コメント (0) 2018/11/14 21:41:42

python の pip でインストールできる自作モジュールを作ってみる

Java にはライブラリの依存性を管理するためのつーるとして Maven や Gradle がありますが、Python の世界にもパッケージ管理ツールとして pip があります。コードの規模が大きくなってくるとモジュール化は避けては通れない課題なので、今回は pip を使って、Python での自作モジュールの作成と呼び出しをしてみようと思います。

自作モジュールを用意する

まずは作業をするための自作モジュールのディレクトリを作り、その中に移動します。ディレクトリはなんでもいいですが、わかりやすいようモジュール名と同じにしておきます。
$ mkdir libhollow
$ cd libhollow

このディレクトリ内に、自作モジュールのためのファイルを用意します。
ディレクトリ内に、さらにモジュール名と同じディレクトリを作成します。
$ cd libhollow
そしてこのディレクトリ内部に __init__.py を作成します。中身は空でよいので touch コマンドで作ります。
$ touch libhollow/__init__.py
同じくモジュールに含める Python のコードも入れておきます。ここでは libhollow/jackolantern.py というファイル名で、以下の Python コードを置いておきます。
# -*- coding: utf-8 -*-

def call():
    print "Trick or Treet"
Python コードの内容としては、"Trick or Treet" と表示される call() を定義しているだけです。

ここまで見てくると、これが通常の Python パッケージの作りかたと同じであることに気づくかもしれません。Python に、sys.path 上にあるパッケージを import させるには、まずパッケージ名のディレクトリを作ってソースコードを置き、いっしょに __init__.py もいれておく必要があります。pip でインストールできる自作モジュールを作る際にも、モジュールのコードや __init__.py は同じようにモジュール名のディレクトリ内部に置いておくことになります。
続きを読む python  コメント (0) 2018/11/02 13:02:57

ElasticSearch でインデックス時と全文検索時で異なる analyzer を設定する

前回は ElasticSearch が全文検索クエリを処理する際の分かち書きのしくみについてふれました。ElasticSearch ではさまざまな種類の tokenizer を中心に analyzer を設計することができ、この analyzer が実際に文字列の単語分割を行ってくれます。

ElasticSearch ではインデックスに格納するドキュメントの内容(フィールドの値)と、全文検索クエリの検索キーワードに対して分かち書きが行われますが、この 2 つに対して異なる analyzer を適用することができます。今回は、インデックスにドキュメントを格納する際の転値インデックス作成時と、検索キーワードを渡した全文検索クエリでの検索時とで、異なる analyzer を利用してみたいと思います。

インデックス時と全文検索時の analyzer の単語分割結果を確認する

ElasticSearch では、インデックスにドキュメントを格納する際の転値インデックス作成時に適応される analyzer と、全文検索クエリで渡される検索キーワードに適用される analyzer を設定できます。となるとインデックス時と全文検索時に動作している analyzer の処理結果をそれぞれ確認したいということになると思います。まずはじめにこれらの分かち書きの結果を確認する方法についてみておきます。
続きを読む ElasticSearch  コメント (1) 2018/10/12 17:43:15

ElasticSearch の全文検索での analyzer について

前回の ElasitcSearch での文書検索についての記事の中で、ElasticSearch の中核となる機能である全文検索クエリについて触れました。

ElasticSearch の全文検索クエリでは、文書を単語に分割する分かち書きという工程を経て、その単語が含まれる文書が検索されます。しかし、はたして何を単語とみなすかというのは難しい問題です。普段人間が使っている言葉の種類は国や言語、時代によって膨大な量になりますし、常に新しい言葉、失われていく言葉が存在しています。また同じ言葉でも文脈や使われる分野によって意味が変わったり、1 つの言葉なのに文字で表現しようとすると何通りも書き方があったりします。現時点ではあらゆる単語を分かち書きできるような技術は残念ながら存在していないので、全文検索を適用したい分野にあわせてどのように分かち書きしていくかを自分で設計していく必要があります。

ElasticSearch では単語分割は analyzer によって処理されます。この analyzer には単語分割に関わる言語処理機能を必要に応じて組みあわせて使えるようになっています。今回はこの analyzer がどのように分かち書きを行っていくのか、ElasticSearch の analyzer による言語処理機能の具体例を見ていこうと思います。

analyzer による単語分割の流れ

ElasticSearch における analyzer は、分かち書きする文字列中の各文字を追加/変更/削除する character filtercharacter filter から受け取った文字列を実際に単語に分割する tokenizertokenizer が分割した単語の列から単語単位で追加/変更/削除する token filter の 3 つによって構成されています。analyzer には必ず 1 つの tokenizer が設定されていなければなりませんが、character filter と token filter はオプションとなっていて、任意の数を設定することができます。

一応定義どおりに analyzer の構成要素を説明するとこうなるのですが、感覚としては、中心となる tokenizer が単語分割しやすいように tokenizer の前処理 / 後処理として必要なフィルターを設定していく、くらいで良いと思います。ElasticSearch にあらかじめ組み込まれているビルトインの token filter には、どちらかというと character filter としてあるべきなのではと思うものもあったりします。また高機能な tokenizer には、他のビルトインのフィルターと同等の機能を内包していたりするものもあります。
続きを読む ElasticSearch  コメント (0) 2018/10/11 19:07:40