タイだかインドネシアだか海外でバドミントンやってるらしい田児賢一は今どうしてるんだろうかなとググってみたら現在はYoutuberになっている様子。で最近の投稿で闇カジノの件の処分が解除されて、晴れて日本国内でのバドミントンの大会に出場できるようになった(?)らしい。おめでとうございます。
・・・金髪?それに、体重90キロぐらいありそうなんだがどうなってんの。一瞬見た時誰だかわからなかった。
タイだかインドネシアだか海外でバドミントンやってるらしい田児賢一は今どうしてるんだろうかなとググってみたら現在はYoutuberになっている様子。で最近の投稿で闇カジノの件の処分が解除されて、晴れて日本国内でのバドミントンの大会に出場できるようになった(?)らしい。おめでとうございます。
・・・金髪?それに、体重90キロぐらいありそうなんだがどうなってんの。一瞬見た時誰だかわからなかった。
消える。とにかく消える。expireを設定しておいてもその期限前に消える。マシンのメモリの上限に達しているわけではなさそうなのだが、ある程度登録データが溜まってきたらごっそり消える。なんでだ。noevictionに設定すればさすがに消えないようだがそれ以外だと意味不明理不尽に消されてしまう。
とにかくわからない。永続化は必要ないのでmemcachedのように保存しないように設定して運用していたがそれがだめだったのだろうか。とりあえず保存する設定でも試してみるがわけわからん。
ここでは配列の中に配列があるという多重配列の構造となったArrayListオブジェクトの場合について扱う
ArrayList<ArrayList<String>> arrList = new ArrayList<ArrayList<String>>();
GSON https://github.com/google/gson
import com.google.gson.Gson; (略) Gson gson = new Gson(); ArrayList<ArrayList<String>> arrList = new ArrayList<ArrayList<String>>(); String arrStr = gson.toJson(arrList);
上記で文字列に変換したArrayListを復元する
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
(略)
Type listType = new TypeToken<ArrayList<ArrayList<String>>>(){}.getType();
ArrayList<ArrayList<String>> arrList = gson.fromJson(arrStr, listType);
複雑な構造の配列でもjson形式の文字列に変換することでいろいろ扱いやすくなる。私の場合は文字列に変換してキーバリューストレージのRedisに保存するということも手軽にできるようになった。
インメモリで動作するKey-Value型のデータストレージソフトウェア
redisを機動しているサーバ複数でクラスターを組むことができ、負荷分散、耐障害に強くなるという特徴がある。
一応動くかどうかテストはしてみた。マスターのみの構成でも最低でサーバ3台用意しないといけないのでなかなか大変だったが、それにしてもこのRedisのクラスターというのはどこの大規模システムで使うことを想定しているのだろうか。最低でも6台のマシン(各マスターとスレーブ)をキャッシュサーバとして使うことを許されるシステムだとしたら全体だったら何十台のサーバが稼働することやら(@ . @)クラクラ
クラスターじゃなくてもっとシンプルにマスターとスレーブのみの構成なら2台でいけるんじゃないか?と思ったが、その場合だとRedis Sentinelという監視用のサーバ3台が別途必要になってきてそれでも最低5台必要ということになる。
Redisクラスターにうってつけのマシンといえば、ラズベリーパイ4B 8GBモデルかもしれない。ラズパイにメモリ8GBも何に使うんだろ・・・と思っていたが、キャッシュサーバとしてこれほど適した用途はないんじゃないだろうか。サーバだけれどキャッシュ用途なのでECC機能は必要ないという点も丁度いい。この性能のキャッシュサーバをAWS ElastiCacheで複数台契約しようとすると恐ろしい金額になる。
って必要性がないような気がする。JAVAなのでクラスは作成して利用することができるがTomcatアプリケーションはクラスを自分で作ってまで実装するような複雑なシステムにはならないような。同じことはPHPでの開発でも言えるかもしれない。既存の便利なクラスを利用することはあるけれども。結構長い間JAVA/Tomcatを扱っていたが私がクラスの利便性になかなか気づけなかったのはそのせいかもしれない。ウェブアプリケーションでHTMLファイルを出力するくらいなのでわざわざクラスを設計するまでもないし、あえて使うこともできるかもしれないがかえってコードが長くなるだけになる。要するにウェブ開発でオブジェクト指向プログラミングは必要ないのである。せいぜいMVCを意識して作り上げるくらい。
Tomcatアプリケーションは基本となるサーブレットクラスというものがあって、開発者はそれを継承してそれぞれ内容を実装していく。なので一応クラスを設計しているようではあるが中身の実装をしているだけなので、オブジェクト指向・クラスの便利さは開発者はわからなくてもなんとかなってしまう。TomcatやPHPで開発していてクラスのことがわかってなくても別に問題なく、クラスを使う必要性があるときだけ使えばいい。TomcatやPHPではクラスを自分で作る必要性がないことが多い。ウェブアプリケーションは同時多数のアクセスがあったときでも捌けるように軽く速く作るのを目指すべきだが、クラスを作成してオブジェクトを生成するというのはどうしてもコストがかかりパフォーマンスが犠牲になる。仮にクラスを設計してそのオブジェクトをアクセスされるたびに量産していたんではサーバが大変なことになる。
list = []
pythonでは配列のことを主にリストと呼ぶ。
list = [0,1,2,3,4]
print(list[0])
for item in list:
print(item)
list = ()
配列との違いはその要素を変更できないという点。(immutable)
list = (0,1,2,3,4,’zero’,’one’,’two’)
print(list(0))
for item in list:
print(item)
dict = {}
辞書型のオブジェクトでキーと値の関係で要素を代入するので別言語のハッシュテーブル・連想配列のような印象。配列との使い所の違いとしてはキーがあらかじめわかっていて要素への高速なアクセスをするときなどに便利かと。場合によってはループ処理で順次値を処理するということもできる。
dict = {‘key1′:1,’key2′:2,’key3’:3}
print(dict(‘key1’))
for item in dict.iteritems()
print(item)
上記の辞書型オブジェクトのdictについて。私自身は別の言語も学習したことがあったのでハッシュテーブルというものの存在は知っていたが、pythonのこのdictについてはなにかと有用な印象を今更ながら感じた。dictは配列のようなものでキーと値というセットで格納することができるが、pythonはオブジェクト指向言語でもあるのでクラスを作成するということもでき、クラスのオブジェクト(インスタンスともいう)をキーとセットでdictに保存するということもできる。これって多重配列をずっと扱いやすくしたようなものだと思う。今までなぜあまり使ってこなかったのかと不思議なくらいだが、クラスとハッシュテーブルは相性がいいのかもしれない。(使う必要性がなければ使わないくていいのだけれども)単にキーと値というペアで存在するデータの集まりと考えたらDBで代用できるしあまりありがたみがないが、クラスから生成したオブジェクトを管理するツールとしてみれば抜群に使い勝手が良い。例を挙げてみる。(コードは適当)
class Person:
def __init__(self,name,role):
self.name = name
self.role = role
self.active = True
self.limit = 2024
def hello(self):
print("hello!")
naikaku = {}
person = Person("菅義偉","総理")
naikaku["菅義偉"] = person
person = Person("麻生太郎","副総理")
naikaku["麻生太郎"] = person
person = Person("武田良太","総務大臣")
naikaku["武田良太"] = person
person = Person("上川陽子","法務大臣")
naikaku["上川陽子"] = person
for active , person in self.naikaku.items():
if active == True:
person.hello()
for name , person in self.naikaku.items():
if name == "上川陽子"
person.active = False
if "上川陽子" in self.naikaku:
del self.naikaku["上川陽子"]
歌詞
Beautiful Things
雨音があわ立って さよならをかき消すよ
何から話せばいいのだろう
冷めた街がやけに不釣り合いで
見るもの全てに 心動いて 君だけを見ていた
時折強く吹く風の中に 僕ら手を伸ばした
まだ夢の中 Beautiful Things
ほら夢の中 Beautiful Days
まだ夢の中 Beautiful Dreams
ほら夢の中に いるみたいだ
何から話せばいいのだろう
賑やかさが今は不釣り合いで
同じものを見て 見てもすれ違う思いが わかるよ
時折強く吹く風の中で 僕ら手をはなした
まだ夢の中 Beautiful Things
ほら夢の中 Beautiful Days
まだ夢の中 Beautiful Dreams
ほら夢の中に いるみたいだ
もう 夢をかき消して
雨音があわだって
さよならをかき消すよ かき消すよ まだ夢の中に
誰の曲・作詞なのか不明。情報求む。
人間はシングルタスクしかできないようになっているためマルチタスクは能率が悪く害悪でしかないというような意見があるようなのだが、その原因となっているのが複数ディスプレイを設置するいわゆるマルチディスプレイ・デュアル・トリプルモニターといったパソコンの利用形態。
私自身多いときでディスプレイを3つも設置していたことがあって、そのときは作業領域が広がって快適だと思っていたが複数のウインドウを展開できるということもあってたしかに気が散漫になって作業が捗らないような気もしていた。というわけで思い切ってディスプレイを1つだけにしてみた。最近ではミニマムなんとかとか断捨離とか物が少ないほうが良いような流行もあるのでいいんじゃないかなと。
ディスプレイが1つだけにしたことによるメリットは多い。
などなど。で、肝心の作業の能率は上がったかというと、私自身の場合で言えば、あまり変わらなかった。1つのディスプレイで作業していて、なにかわからないことがあって調べるというようなときにウインドウを切り替えて裏に回ってとかやってると結局マルチディスプレイで視線移動しているのと変わらないから。
というわけでさすがにディスプレイ1つだけというのは不便すぎるのでデュアルディスプレイに落ち着いた。トリプルディスプレイはやりすぎだと思う。最近ではFull-HDよりも解像度が大きいワイドFHDとかさらに大きいのとかに対応したディスプレイも販売されているのでそういうのを使って作業領域を確保すればデュアルディスプレイ環境と同じことができると思われる。
デュアルディスプレイやマルチディスプレイがマルチタスクの原因となっているというのは結局のところ作業領域が広いといくつもウインドウを開くことができるからということなので、高解像度な1つのディスプレイでも同じことが起こりうる。ディスプレイの数に関わらず起動するソフトを絞ればいいということなのかもしれない。
私が愛用しているSteelseriesのfluxという名前のヘッドセットについてあまりにも良いのでその良さをまとめる。同じ名前でイヤホンタイプも販売されていたようだがここでは頭に装着するヘッドホンタイプについて取り上げる。
3~4年ほど使っていると耳あてのパッドが劣化して破れてくる。で、その交換もしたので画像のような感じになった。本来は赤色の布地のパッドが装着されていたが交換用は他社製のやつになったのでこのような見た目に。イヤーの部分のサイズは約7cmだったのでこの交換用イヤーパッドがぴったりのサイズだった。
猫を飼っている人には特にオススメできるヘッドセット。付属していたコードは全て齧られてゴミになってしまったが着脱式であるためこういう耐久性のありそうなコードに交換するということもできる。ゲーミングマウスなどに使われているような布巻きのコードなんかも猫の齧られ対策にいいかもしれない。