2mのUSB-Cケーブル(Display対応, PD対応)

  • このエントリーをはてなブックマークに追加

USB Type Cのケーブルはたくさん種類があります。このサイトが参考になります。

規格もたくさんあって、適当に購入すると、スマホの充電は出来るのだけどPCのDisplay接続には使えなかったり、PDに対応していなかったりするわけです。Amazonでケーブルを購入しようとすると、嘘くさい製品(規格違反の製品)が溢れていて、購買意欲が無くなります。

また、2mのものを探すと途端に製品が無くなります。
その理由は、2m以上になるとThunderbolt3の超高速通信である40Gbpsは非対応となり、その半分の20Gbpsになるからだと思います。ケーブルが長いと超高速通信ができないみたいです。

2mでDisplay接続に使用できるまともなUSB-C<=>USB-Cケーブルを探すのは大変なので、いくつか製品を紹介します。

PDは不要!! 5Gbpsで十分だ!とにかくケーブルを長くしたい。という事であれば、SANWAの5mのリピーターがあります。

参考サイト

Microsoft Wordの設定を全てリセットする方法

  • このエントリーをはてなブックマークに追加

デフォルトのレイアウトを弄っていたら、元に戻せなくなってかなり困ったのでリセットする方法を探しました。なお、再インストールではリセットできませんでした。

リセットの方法

こちらのMicrosoftのページ「Word のユーザー オプションとレジストリ設定をリセットする方法」からファイルをダウンロードします。

ダウンロードしたファイルを実行するだけです。レジストリを弄るので事前にバックアップを取得した方が良いです。

参考サイト

Microsoft Wordで游明朝のまま40行に設定する方法

  • このエントリーをはてなブックマークに追加

レポートを書くときに40文字40行の指定があるわけですが、ググった方法で設定してもうまく設定できない。理由はWindows10の場合はデフォルトの設定がMS明朝ではなく、游明朝だから。行間を固定ポイント指定する記事もよく見かけるけど、図を貼り付けた場合におかしな事(図のレンダリングが不完全になったり、位置がページの上部に突き抜けて見えなくなったり)になるのでその設定方法もNG。

MS明朝にすれば良いという話でもあるが、游明朝での設定方法を調べたのでメモ。

游明朝でうまくいく設定

まずは40行40文字に設定するために、レイアウトページ設定リボンの右下の□のアイコンをクリックして、ページ設定を表示する。

文字数と行数を指定するを選択し、文字数「40」、行数「40」を設定し、OKを押す。

この時点では以下のように行間がすごく広くなってしまう。

ホームスタイル標準を右クリックして変更を選択。

スタイルの変更というダイアログが出るので、左下の書式から段落を選択する。

行間は1行のままで良い。
1ページの行数を指定時に文字を行グリッド線に合わせる(W)という項目のチェックボックスを外す。

すると、1ページ40行として正しく設定される。図の貼り付けも上手くいく。

なお、行間を固定値16.4ptにする方法を多く見かけるが、それをやると図を貼り付けた場合に、以下のようになってしまう。

マルチスレッド対応が入ったRedis6の確認

  • このエントリーをはてなブックマークに追加

簡単に確認してみます。

最初は2台使ってネットワーク越しに確認していたのですが、ネットワーク帯域の上限に達してしまうのでClientとServerは同じサーバで確認しました。なので、ClientとServerの負荷が一緒くたになっていますが、CPUコア数が十分に余っている環境で絶対値ではなく相対的な比較をする事で目を瞑ることにします。負荷試験ではないので。

(仕事でこんな適当な事したら駄目ですよ..!)
実際は自分のワークロードに合わせて検証、MetricsをSnapshotではなくHistogramで見て、ボトルネックや安定動作ラインを探る必要があります。

実は、Redis2~6、ardbの比較もしたのですが、ネットワーク越しでやったためにネットワークがサチってしまったのでお蔵入りにしました。

前提

  • Instance: c5.9xlarge
    • CPUコア数は36です
  • ClientとServerが同居
  • Clientは公式のRedisBenchmarkを利用
    • --threads, -c, -nのパラメータの変更のみでテストの内容はデフォルト
    • そのため、ZSetやLuaの検証は入っていない
    • --threadsはバージョン6から導入されたオプション
  • Serverのパラメータは以下を変更
    • io-threads
    • io-threads-do-reads
  • Kernelパラメータは最低限のネットワーク、メモリ周りを設定。ulimitのopen filesも増やす。

Redisのビルド

Version 6.0.1を使いました。ビルドオプションは以下の通り。

make MALLOC=jemalloc V=1

MetricsはNetDataで取得

https://www.netdata.cloud/

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

設定はglobalセクションのmemory modesaveからramに変更。プロセスを再起動するたびにMetricsがリセットされるので、計測が楽になる。(参考)

MetricsはAPIで取得。
memory modeをramにする事でmetricsが都度リセットできるので、計測期間を気にしないで全期間を取得すれば良い事になる。

curl -s "http://localhost:19999/api/v1/data?format=tsv&chart=system.cpu" > cpu-all.tsv

redis-benchmark (client)

各列の意味は次の通りです。

  • 1: デフォルト設定。つまり io-threadsは無効です。
  • 2-rw: io-threads=2, io-threads-do-reads=yes
  • 2-w: io-threads=2, io-threads-do-reads=no
  • 以下略

ケースその1

redis-benchmark -h 127.0.0.1 -c 1000 -n 1000000 --threads 10

ちゃんとスループットが上がっていますね。

ケースその2

redis-benchmark -h 127.0.0.1 -c 1000 -n 1000000 --threads 50

途中で性能が落ちてきているのは、Instanceの処理限界が来たからです。CPUのグラフしか取得していなかったのでアレですが、24-wの時はLoadAverageが40くらいになっていました。

ケースその3

redis-benchmark -h 127.0.0.1 -c 1000 -n 1000000 --threads 100

その1で十分なので、おまけ。

io-threads, io-threads-do-reads no の説明

io-threads

Redis is mostly single threaded, however there are certain threaded operations such as UNLINK, slow I/O accesses and other things that are performed on side threads.


Now it is also possible to handle Redis clients socket reads and writes in different I/O threads. Since especially writing is so slow, normally Redis users use pipelining in order to speedup the Redis performances per core, and spawn multiple instances in order to scale more. Using I/O threads it is possible to easily speedup two times Redis without resorting to pipelining nor sharding of the instance.


By default threading is disabled, we suggest enabling it only in machines that have at least 4 or more cores, leaving at least one spare core.

Using more than 8 threads is unlikely to help much. We also recommend using threaded I/O only if you actually have performance problems, with Redis instances being able to use a quite big percentage of CPU time, otherwise there is no point in using this feature.


So for instance if you have a four cores boxes, try to use 2 or 3 I/O threads, if you have a 8 cores, try to use 6 threads. In order to enable I/O threads use the following configuration directive:

http://download.redis.io/redis-stable/redis.conf

デフォルトでスレッド化は無効で、少なくとも4コア以上のサーバで動かす時に有効化するのが良く、1コアは残しておくように。つまり4コアの場合は設定を2か3くらいにするのが良く、8コアの場合は6あたりを設定するのが良い。なお、8以上を設定するのはあまり意味がない。

io-threads-do-reads no

Setting io-threads to 1 will just use the main thread as usually.

When I/O threads are enabled, we only use threads for writes, that is to thread the write(2) syscall and transfer the client buffers to the socket. However it is also possible to enable threading of reads and protocol parsing using the following configuration directive, by setting it to yes:

http://download.redis.io/redis-stable/redis.conf

io-threadsを1に設定すると、通常通りメインスレッドを使用する。
io-threadsが有効な場合、書き込み(write(2) syscall)にのみスレッドを使用する。
この設定がyesの場合は、読み込みとプロトコルのパースにもスレッドを使用する。

Rundeckのlistenをallではなく127.0.0.1に限定する

  • このエントリーをはてなブックマークに追加

Rundeckをubuntuにインストールして起動したところ、Listenが0.0.0.0になっていたために、127.0.0.1にするための設定です。
127.0.0.1に限定したいのは、VPSにインストールするとインターネットに直接公開されてしまうからです。(AWSのようにセキュリティグループが無い場合)

netstat -tnlp

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4440 0.0.0.0:* LISTEN 4701/java

インストール

  • debファイルをダウンロードする
  • jdkをインストールする
  • dpkgでrundeckをインストールする
apt-get install openjdk-8-jdk-headless
dpkg -i rundeck_3.2.5.20200403-1_all.deb

設定ファイル

/etc/rundeckディレクトリに様々な設定ファイルが作られ、/etc/rundeck/profileが起動時に読み込まれるファイルです。以下のように記述があるのでubuntuの場合は/etc/default/rundeckdで追加設定します。CentOSの場合は/etc/sysconfig/rundeckdです。

/etc/rundeck/profile
prog="rundeckd"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
[ -e /etc/default/$prog ] && . /etc/default/$prog

/etc/default/rundeckdファイルを作ります。/etc/rundeck/profileを直接編集するのはパッケージの再インストールやアップデートで上書きされてしまうので非推奨です。

/etc/default/rundeckd
export RDECK_JVM_OPTS="-Dserver.http.host=127.0.0.1"

再起動します

再起動
systemctl restart rundeckd

Listenが127.0.0.1になったので外部から直接接続する事は出来なくなりました。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp 0 0 127.0.0.1:4440 0.0.0.0:* LISTEN 6213/java

MySQL GUIクライアントのHeidiSQL

  • このエントリーをはてなブックマークに追加

MySQLのGUIクライアントは色々ありますが、今回はHeidiSQLを使ってみました。理由はSSHトンネルをサポートしているからです。MySQLの他にMSSQL, PostgreSQL, SQLiteをサポートしています。

まずはここからダウンロード。この記事を書いたときはバージョン11.0でした。SSHトンネルにはputtyのplinkが必要なので、それもインストールしておきます。

以下のようなサーバにインストールされているMySQLに接続します。MySQLは127.0.0.1でListenしているため、他のサーバから接続する事はできず、サーバXにトンネルを張ります。ローカル側のポートは13308とします。

次のように設定します。

  • ネットワーク種別 → MySQL(SSH tunnel)
  • ホスト名 → 127.0.0.1 (トンネル先から見たMySQLのIPアドレス)
  • ポート番号 → 3306 (トンネル先から見たMySQLのポート番号)

SSHトンネルの設定をします。

  • plinkのパスを設定します
  • SSHホスト+ポートに サーバのSSHの接続先を設定します。VPSのIPアドレス。
  • SSHはパスワード方式ではなく鍵方式で接続するので、ユーザー名と鍵を指定します。鍵はputty形式のppkに変換しておきます。

接続ができました。

やっている事は単純にいかのような感じです。

ssh -L 13308:127.0.0.1:3306 server-X:22
mysql -h 127.0.0.1 -P 13308 -u mysql-user -p -D mysql-db

HexoのTableのAlignが効かない(テーマによる)

  • このエントリーをはてなブックマークに追加

Hexoはhexo-renderer-marked -> marked を利用してMarkdownをHTMLに変換しています。

該当部分は次のように実装されています。align属性で実現しています。ここは正しく動いています。

marked.js
_proto.tablecell = function tablecell(content, flags) {
var type = flags.header ? 'th' : 'td';
var tag = flags.align ? '<' + type + ' align="' + flags.align + '">' : '<' + type + '>';
return tag + content + '</' + type + '>\n';
} // span level renderer
;

Hexoのテーマはingenuousを利用しています。このテーマはCSSの定義にStylusを利用しており、global-reset()caption th tdtext-align: leftを定義しています。

https://github.com/stylus/nib/blob/master/lib/nib/reset.styl#L62-L65

nested-reset()
....
caption, th, td
reset-table-cell()

reset-table-cell()
text-align: left
font-weight: normal
vertical-align: middle

全てのセルにtext-align: leftが指定されてしまうので、align="right"といったタグの属性は無視されてしまいます。

対策

  1. global-reset()を使わない
  2. tdとtrにclass="any-prefix-{right|left|center}"を追加するかstyle="text-align:{right|left|center}"を追加する

後者をやってみました。

https://github.com/tamtam180/hexo-renderer-marked/commit/4ef7c8d44609bb7a99430474450613b5f58672fd

hexo-renderer-markedはHexoからmarkedを利用するためのモジュールで、Hexo用にオプションを指定して拡張しています。ここでtablecellを上書きする事でtableのセルのレンダリングを差し替える事ができます。

lib/renderer.js
tablecell (content, flags) {
const { options } = this;
const type = flags.header ? 'th' : 'td';
const align_class = options.align_class_prefix ? ` class="${options.align_class_prefix}${flags.align}"` : "";
const tag = flags.align ? `<${type} align="${flags.align}"${align_class}>` : `<${type}>`;
return `${tag}${content}</${type}>\n`;
};

https://github.com/tamtam180/hexo-renderer-marked/tree/feature/use-class-table-align
ここに対応したレポジトリを置いておきます。

Hexoから上記のモジュールを利用する

package.json
"hexo-renderer-marked": "git+https://github.com/tamtam180/hexo-renderer-marked.git#feature/use-class-table-align"

上記のようにバージョンではなくGithubのレポジトリをブランチ名付きで参照し、次のコマンドで依存モジュールを更新します。

npm update hexo-renderer-marked

Hexoの設定

オプションでprefixを指定します。これでtext-rightのようなclassが指定される事になります。

_config.yml
marked:
align_class_prefix: text-

テーマのCSSに対応するスタイルを追加します。

style.styl
.text-left
text-align: left
.text-right
text-align: right
.text-center
text-align: center

これでalignが正しくレンダリングされるようになりました。

ドイツのVPSサービスContaboにUSリージョンが来た

  • このエントリーをはてなブックマークに追加

公式お知らせ: Contabo Introduces New Data Center Location in the United States

対応しているプランは100% SSDのみ。(もしくは一番高い専用サーバ)
購入ページにLocationという項目が追加されています。

ロケーションはセントルイス(ミズーリ州)なので、AWSで言うと一番近いのはオハイオでしょうか。とはいえさらにその西側なので、地理的には西海岸でも東海岸でもないです。アメリカリージョンの場合、プランによって少し費用が高くなります。

プラン ドイツ アメリカ 追加費用
VPS S SSD 4.99€ 5.99€ 1€
VPS M SSD 8.99€ 9.99€ 2€
VPS L SSD 14.99€ 17.99€ 3€
VPS XL SSD 26.99€ 32.99€ 6€

contaboについてはこちらの記事ご覧ください。

エンジェル税制の確定申告

  • このエントリーをはてなブックマークに追加

※申告書の表の番号(第二表の㉔とか)は毎年変わるものなので、その年の内容に合わせる必要があります。この記事では令和1年度(2019年度)の内容です。

令和1年度の確定申告は感染症の影響で3月16日から4月16日まで延長されました。参考

今回から源泉徴収票や株式配当の支払い通知書の添付が不要になりました。
さらに、e-taxでも、生命保険控除、寄付控除(ふるさと納税)も明細を入力すれば郵送不要になりました。※保管は必要です。

e-taxはマイナンバーカードを使った方法もありますが、マイナンバーカードの利用率が低いのでIDパスワード方式が出来ました。(税務署の人からの伝聞)

私は今回次の申告があります。

  • 給与所得・事業所得以外の収益
    • 上場企業の株式配当
    • 上場企業の株式譲渡益(分離課税)
  • 控除
    • 医療費控除
    • 生命保険料控除
      • 新生命保険料
      • 個人年金保険料
    • 寄付金控除

エンジェル税制が無い場合は郵送物なしでe-taxで申告可能です。
エンジェル税制は寄付控除扱いになりますが、不安だったので税務署の人に確認して貰いながら行いました。そもそも申告する人が少ないため、税務署の人でも制度そのものを知ってる人は少ない感じでした。提出する時にも、これは・・?みたいな感じになるので、パンフレットを印刷していくか、自分で説明できるようにしておくと良いです。私は何回も読んで頑張って理解した上で答え合わせに行ったので、自分で説明しました。

今回も確定申告書は確定申告書作成コーナーで作成しました。

エンジェル税制の確定申告

エンジェル税制は次のサイトを見るのがわかりやすいです。

また確定申告時に参考になるサイトはこちらです。

ただし上記のサイトはふるさと納税や他の収入が無い場合の例なので、私の場合はもうちょっと計算が必要でした。

エンジェル税制には優遇措置AとBがあります。私も今回は優遇措置Aを利用します。優遇措置Aは1000万円以下の投資金額ほぼ全てを所得から控除できます。(ただし所得の40%が控除上限です)
年収1000万円の人が200万円を投資した場合、ざっくり計算でMIN(400万円,200万円)=200万円を所得から控除でき、所得1000万の人なら所得税は30%くらいは払っているので、約60万円くらいは還付されるわけです。

確定申告のやり方

まず投資先企業が色々とめっちゃ頑張って書類を揃えます。そして投資先企業から3つの書類をいただきます。

  • ①東京都知事印が押印された確認書
  • ②個人が一定の株主に該当しないことを確認した書類
  • ④株式異動状況明細書

他に必要な書類として、

  • ③投資契約書の写し
  • ⑨特定(新規)中小会社が発行した株式の取得に要した金額の控除の明細書 PDF
  • ⑪特定新規中小会社が発行した株式の取得に要した金額の寄付金控除額の計算明細書 PDF

投資契約書の写しは自分が持っている契約書をコピーすれば良いです。製本されている場合コピーがしづらいですが、契約書の中身が確認できれば良いので、そこまで神経質に綺麗にコピーする必要はありません。
後者2つは税務署に紙が置いてありますが、国税局のサイトにPDFがあります。

特定(新規)中小会社が発行した株式の取得に要した金額の控除の明細書

※記述しているのはあくまでも例です。1株3万円で100株エンジェル投資した場合。

特定新規中小会社が発行した株式の取得に要した金額の寄付金控除額の計算明細書

※記述しているのはあくまでも例です。サンプルとして以下の値とします。

  • 所得金額の合計(確定申告書Bの第一表の⑨)が1200万円
  • ふるさと納税が40万円
  • 確定申告書(分離課税用)、第三表
    • 上場株式等の譲渡/65が100万円
    • 上場株式等の配当等/66が10万円

複数投資先がある場合は、用紙の2を先に計算します。ここでは投資先が1つなので2は記載する必要がありません。

  • 300万円
    • 特定(新規)中小会社が発行した株式の取得に要した金額の控除の明細書の⑤を記入します。
    • 複数ある場合は、この用紙の2の合計欄を記入します
    • つまりエンジェル投資した合計金額を記入します
  • 398,000円
    • ここが注意です!
    • ふるさと納税をやっていて寄付控除が既にある場合、それを先にソフトに入力していると出力されるPDFと2000円の誤差が出ます。
    • 税務署の人が言うには、今回のケースでは②~⑧の数字は使わない事になり、①-2000円の数字が⑩になるので、辻褄を合わせた方が良いとの事でした。なぜなら、この用紙には2表の数値と一致する事と書かれているため、一致しないと書類不備とされてしまう可能性がある。
  • 3,398,000
    • ①+②=3,000,000+398,000
    • 第2表の㉔と一致する必要があります
  • 13,100,000
    • 12,000,000+1,000,000+100,000
    • 損失申告がある場合は、その数字も計算に入れる必要があります
  • 5,240,000
    • ④x0.4=13,100,000x0.4
  • 3,398,000
    • MIN(③, ⑤)=MIN(3398000, 5240000)
  • 3,396,000
    • ⑥から2000円引いた金額
    • この金額が第1表の㉔と一致する必要があります
  • 4,842,000
    • ⑤-②=5,240,000-398,000
  • 3,000,000
    • MIN(①, ⑧)=MIN(3000000, 4842000)
  • 2,998,000
    • ⑨から2000円引いた金額

実際に計算していくと分かるのですが、やっていることは、ノイズ(他の寄付控除や収益)を考慮しつつ所得の40%上限に引っかかるのか、そうでないかを計算しているだけです。なので、今回のケースでは実質、①-2000円。この金額を確定申告書作成コーナーの寄付金控除として入力します。
所得の40%を超える場合(例: 所得合計が1200万円でエンジェル投資を1000万円)は、途中の計算も重要になりますので、きちんと手順にそって計算していきましょう。(いろいろなパターンの例がこちらのページにあります)

確定申告書作成コーナーの「所得控除の入力」→「寄付金控除」

寄付金の種類→「上記以外の寄付金控除に該当する寄付金」
該当するもの→「住所地の都道府県及び市区町村の両方で条例により指定されていない寄付金、または不明な場合」

を選択します。

出力されるPDFと↑の計算の③と⑦が一致するかを確認します。

提出

普通に提出すれば良いです。
控えについては、投資契約書は原本が手元にあるので、それ以外の資料のコピーを取って控え印を押印してもらいましょう。なお、控えが不要であればコピーする必要はありませんが、投資会社からいただく書類3枚は原本なので、何かあった時のために控えがあると望ましいです。
コピーも一緒に提出すれば、控え印を押印して貰えます。

何かある場合は税務署から電話が来るそうです。
もし、難しいと思う場合は税理士に任せましょう。

※e-taxでももちろん出来ます。その場合、上記書類は別途郵送する必要があります。

還付

こんな感じで還付の通知が来ます。

マネフォの会社設立サービスのテンプレート間違い

  • このエントリーをはてなブックマークに追加

マネーフォーワードには会社設立のサービスがあります。
フォームに必要な項目を入力していくと、定款や登記に必要な書類を作ってくれ、さらに行政書士が定款に電子認証までしてくれるサービスです。が、ここで出力されるPDFをそのまま利用すると、書類不備を指摘されます。

設立登記申請書の会社の実印を押す場所は、会社名の横ではなく、代表者の横です。

上記の画像は設立ガイドのマニュアルなのですが、実際に出力されるPDFも間違っています。そしてPDFには「ここに実印を押せ」という印があるので、修正するのも大変です。PDFの編集ができるなら、下にずらす必要があります。

法務局の人にマネフォで出力したんですと伝えたら、「ああ、あれ間違ってるんですよ」と言われました。

定款については、PDFとWordが提供されますが、インデントがかなりガタガタなので手直しする必要があります。登記すべき事項の内容はCD(DVD)に焼くことを前提としておらず、別紙が出力されます。CDに焼いて提出する場合は、設立登記申請書に「別紙のとおり」ではなく「別添のCD-Rのとおり」みたいな記述にする必要がありますが、PDFなので編集ソフトが必要です。

他にも色々と指摘したい事があるけど・・・。

とりあえず報告済みです。

(追記 2020/03/28 13:00)

確認したところ、出力されるPDFは修正され、代表者の横に印マークが出力されるようになりました。