.htaccessですべてのアクセスをindex.phpに集める

Apacheのmod_rewriteを使います

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule . /index.php [L]

index.phpでは$_SERVER["REQUEST_URI"]などでリクエストパスを取得すればどのような要求がされたかわかる。それに応じてレスポンスを変更するようにindex.php以降で処理を行えば良い。

心の筋トレ!無感情になって論理的に仕事を進めるとメンタルマッチョになれる

僕はメンタルマッチョになりたい!

最近、こちらのアドラーの記事の下記が気になりました。

「褒めることは相手の自律心を阻害し、褒められることに依存する人間をつくり出してしまうことになるから」だとアドラーは言う。「もう一度褒められたい」と願うことは、すなわち褒められることへの依存であり、褒められることばかりやろうとする姿は自律性を欠いた状態にほかならない。裏返していえば、人を褒めるという行為は、相手の自律性を奪って、コントロールしやすい都合のいい人間に仕立てようとしている行為だということになる。

僕も人を褒めてモチベーション高くさせようとしてきたけど、そこまで深く考えていなかったと思う。申し訳ないことをしてきたと思うし、今後はやめようと思う。

自分が褒められた時どうしよう

f:id:setouchinatsu:20190411085909p:plain

褒められて喜び、モチベーションが上がる癖がついてしまうと、褒められなくなった時に

  • なんで褒めてくれないのか
  • なぜ僕ではなく彼が褒められているのか
  • 僕だって頑張っているんだぞ

と思い始めたりしてしまい、やっぱり良くない。

モチベーションが逆に下がってしまい、通常の能力を発揮できない状態になる。

したがって、褒められても喜ばないようにしなければいけない。

無感情になると勝つる!

f:id:setouchinatsu:20190411090119p:plain

もっというと無感情になってしまえばいい。

まず、楽しいことがなくなると「つまらない」と感じるように、感情には波があると思います。

いつも「楽しい」「僕は天才だ!」といった高い波の感情に乗って仕事をしていると、いざ失敗したり、仕事でトラブルが起きた時に、低い波の感情に行ってしまう。「つまらない」「僕はバカだ!」と思ってしまう。

でも感情がなければ、どんな事態が起きても、冷静に事態を処理できるのではないかと。

(そもそも「僕は天才だ!」と思って仕事をしていると必ずミスをする。常に初心忘れるべからずで仕事をしないといけないなといつも反省しています。。)

無感情なんてロボットなのではないか

f:id:setouchinatsu:20190411090200p:plain

そんなことはなく、感情を捨て去ることで、論理的思考が可能になり、獣としてではなく人間としての判断ができるようになるはず。

人間に不足しているのは『明晰さ』であり、その明晰さを妨げているのは『感情』です。人間は感情で生きています。仏教では、感情で生きることは無意味ですと教えています。感情には論理がなく、同じところをぐるぐる巡るだけで進歩がない。たとえば、好きか嫌いかということには論理はなく、科学性や客観性はないのです。

『曖昧』から『明晰』へ | 日本テーラワーダ仏教協会から引用

おわり

あースッキリした

Java(Kotlin)でPrometeusのLabelを使ってタローとモモのやる気ゲージを監視するためのMetoricsを出力する

labelNamesではいわゆるラベルのタイトルを入れます。ここにタローとか入れるわけではありません。

val yaruki = Gauge.build().name("yaruki_total").help("yaruki help").labelNames("person_name").register()
yaruki.labels("taro").set(10.0)
yaruki.labels("momo").set(100.0)

結果はこのようになります。

# HELP yaruki_total yaruki help
# TYPE yaruki_total gauge
yaruki_total{person_name="taro",} 10.0
yaruki_total{person_name="momo",} 100.0

参考

https://stackoverflow.com/questions/48287188/how-to-add-labels-to-prometheus-summary-metric-in-java

IntelliJでのPythonの開発環境を構築する

Pythonで開発を行ってきたが、IDEで開発がしたい。IDEにはIntelliJにPythonプラグインを入れて行う。(Pycharmでも同じような感じのはず。)

初回既存のプロジェクトを開くと下記のようなエラーが出る。これはシステムインタープリターが設定されていないからである。

No Python interpreter configured for the module

Project StructureからProject SDKのNewをクリックし今回のプロジェクトで使うインタープリターを選択

f:id:setouchinatsu:20190410133906j:plain

OKをクリックで設定が完了します。

参考

pleiades.io

Java(Kotlin)でPrometheusに対するMetricsをテキストで生成する

io.prometheusのライブラリを使います

dependencies {
compile 'io.prometheus:simpleclient:0.6.0'
compile 'io.prometheus:simpleclient_hotspot:0.6.0'
compile 'io.prometheus:simpleclient_httpserver:0.6.0'
compile 'io.prometheus:simpleclient_pushgateway:0.6.0'
}

Metricsの定義

Counterは下記のように定義して、posts.inc()みたいに加算できます。また、この値をMetricsとしてではなく、JSONで出力したいケースにも対応したい時はposts.get()などを使うと内部の値を取得することができる。

val posts = Counter.build().name("posts_total").help("Total posts.").register()
val puts = Counter.build().name("puts_total").help("Total puts.").register()

registerをコールした段階でCllectorRegistryに登録されるので、Metrics出力時このオブジェクトに問い合わせる必要はないのでprivateにしても良い。

MetricsのExport

肝心のMetricsの出力については、MetricsServletを使ってServletから出すか、や専用のHTTPServerを立ち上げて行う。ただServletではなくNettyなんですよとか、Undertowなんですよとか、独自のサーバーなんですよ、Dockerだからポート80しか立ち上げたくないのですよといった場合にこれでは対応できない。

PHPの lazyshot/prometheus-php などはテキストで出力できるのが用意だったが、Javaについては、調査不足かもしれないがテキストで出力する方法はマニュアルにも内部にもなかった。

したがって内部を解体して似たようなコードを書く。

val byteArrayOutputStream = ByteArrayOutputStream()
val writer = BufferedWriter(OutputStreamWriter(byteArrayOutputStream, StandardCharsets.UTF_8))
TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples())
writer.flush()
println(byteArrayOutputStream.toString())

OutputStreamであればいいので、FileOutputStreamを使ってFileに書き出してもいいし好きなようにしたら良い。

参考

https://kazuhira-r.hatenablog.com/entry/2019/02/03/013330

Ubuntuへのmecab-python3のインストール

依存関係のインストール

sudo apt install swig mecab mecab-ipadic-utf8 libmecab-dev

動作確認

$ mecab
トイレ
トイレ   名詞,一般,*,*,*,*,トイレ,トイレ,ト

MeCab の標準のシステム辞書では正しく分割できない固有表現などの語の表層(表記)とフリガナの組を約311万組(重複エントリを含む)採録しているneologdを入れます。指示に従い操作をしていくと最終的辞書にインストール先が出力されます。

git clone git@github.com:neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
sudo bin/install-mecab-ipadic-neolog

今回私は下記にインストールされました。

/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

次にPythonで扱うためにpip3でmecab-python3をインストールします

pip3 install mecab-python3

先程出力された辞書を指定します。

import MeCab
mecab = MeCab.Tagger('-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd')

参考