環境構築・改

環境構築の基礎をさらに改変していく事例

2017年に作ったつぶやきツール。これで完結。

mikutterはglibやgtkなどのパッケージを使っていたはずです。しかし、Ruby/Tkでもそれなりのツールが作れます。こだわれば、まだまだいけるはずです。私も少しずつレイアウトを変更していこうと考えています。課題とまでいかなくても、自作のツール。増えると楽しいですよ。私の作成したつぶやきツールは、これで完結です。サポートは、今後もしていきます。

defxでiconを使ってみる。

github.com

f:id:emerald00:20181123132337p:plain

defx_icon

環境

mac mojave

neovim-qt

deinでtomlを使う→ :call dein#update() 、 自動インストール設定してあれば不要

[[plugins]]
repo = 'kristijanhusak/defx-icons'

Unicodeの絵文字一覧

※ このサイトから絵文字を貼り付けて、

init.vimにはこう書いてみる

let g:defx_icons_enable_syntax_highlight = 1
let g:defx_icons_column_length = 2
let g:defx_icons_directory_icon = '♦️'
let g:defx_icons_mark_icon = '*'
let g:defx_icons_parent_icon = '♦️'
let g:defx_icons_default_icon = '♦️'
let g:defx_icons_directory_symlink_icon = '♦️'

将来予想(予定は未定であって決定ではない)

let g:defx#custom#column = '👍'

Neovimなどでdefxを起動

:Defx -columns=icons:filename:type

グループ名に不正な文字があります→enter

サポートされていないので、こうなるんだろうな...

表示可

♦️
☃
▪️
♣️
♠️
♟    など

表示不可

✈️ 
📕
📂
📂
🌲 など

追記

話題になっていて、メールが回ってきた午前中はできなかったが、いろいろ試していたことにより、絵文字でも、表示できるものとできないものがあることを見つけた。絵文字に関しては、入力補完でもプラ銀があるくらい、Vimでは表示することは一般的のようだ。面白いんじゃないか。。環境の絵文字に関する設定によっては、表示できるらしい。とりあえず、絵文字に関して、共通の絵文字は表示できることがわかりましたよ。

今後、どのような仕様になるのか、注目のdefx。進化に期待。

Fork先

github.com

toml記述 (ポーカーデザイン、※Rubyだけ)

[[plugins]]
repo = 'takkii/defx-icons'
rev  = 'pararel'

f:id:emerald00:20181123173029p:plain

github.com

vim-comに :DefxF コマンドを追加しました。

Defxをアイコン表示するコマンドを短縮します。

以上です、再会は次の記事にでも。

Javaを使ったプロジェクトのワークフロー例。

ゲームエンジンを作る際に、原因を仮定し進めていく。 何も手に付かないよりとりあえず行動することで、 原因にたどり着くという手法の例。

数独は「決められたマスに決まった数字のみうめていくパズル」
難易度が高くなると、数字を仮定し正解にたどりつくかどうかを調べていく。
あとは、運次第。運がよければそれで解法がみつかる。
「今回のエラーの可能性を消していくと同意義、それは"消去法"→"仮定法"である。」

資料

Internal Server error 500 が発生する。原因がわからない ... とりあえず、こう考えてみる↓

jode-time.jarを使ったJDK7でDateTimeライブラリを使った際、時刻を取得するときにnullが発生する

仮定

① JDK7でjode-time.jarはJDK7の補い、2.3であれば動作が保証される

・Androidは7.0 → 1.8 JDK
・iOSでもiPhone5以下、6以上JDK8(現在のバージョン)

このとき、新しいjode-time.jarにセットすべき。 JDK8の標準ライブラリはjode 2.10が標準 - JSR-310 - DateTimeAPIを参照すべき。

対策

・if 文 ~ elsif ~ else

Javaが7または8のバージョンを知るとき、新しいjode-time.jarがセットされるように処理する。

対策2

JRubyプロジェクトを.jarへ変換。.jarでjavaに読み込む処理をセットする。

発生しうる例外

・ArrayIndexOutOfBoundException ... 不正なインデックスを使って、配列がアクセスされたことを示すためにスローされる。
インデックスが負で配列のサイズ異常が予想される。

・IllegalArgmentException ... 不正または不適切なときにメソッドが呼び出されたことを示す。Java環境、Javaアプリケーションは、要求されたオペレーションに適した状態ではない。

・NullPointerException ... null値が入った型、変数を参照しようとした時、発生する。

・実行時例外 java.lang.Runtime.Exception
例外処理なし → コンパイルエラーは起きない。

試行錯誤

可能性

① 改行コードが含まれるとき ... execute、CR + LF、LF、CRのとき、InternalServerError500を起こす。

② 複数のスレッドが共有しようとしたとき、javaでデッドロックが起きる

対策

 原因を突き止める。仮定の材料。とりあえず、これなのか、これじゃないのか、もしくは原因は何なのかを知ることができる。

追記

このような対策をとるべきことはあまりない。ほとんどの場合、実装が独自のものであり、情報共有の場がある。試行錯誤せずともすべての結果を手に入れている。この例は、流用コードを改変していく際に用いる。最小の変更で最大の効果を出すためには、仮のプロジェクトを作るしか方法はないと考えた。しかし、全体のバグと対策を知るために莫大な時間と労力がかかる。何年もかけて、バグを消していけるならこの方法を繰り返していくといいだろう。失敗は成功の素というが、どれだけの失敗にも成功の形を意識することができる。成功よりも失敗から得られることは多い。失敗を受け入れないとしたら、成長などありえない。

zinbeijettの更新。

変更点

[1.0.8]

カウント機能を追加しました。

[engine] [-c] [対象ファイル] [カウント文字列]

ぱらぱらとカウントされます。

[1.0.8.1]

zinbeijettのヘルプページを更新しました。

[1.0.8.2]

zinbeijettのヘルプページを日本語翻訳で意味が通るようにしました。

[1.0.8.3]

engineのor機能をシンタックスチェックで修正しました。

[1.0.8.4]

engineのシンタックスチェックを行い修正を完了しました。

zinbeijett | RubyGems.org | your community gem host

Takayuki Kamiyama / zinbeijett · GitLab

ユニットテスト結果

------------- ./test in filename list...start! -------------

./test/test_matcher.rb
./test/test_version.rb

------------- ./test in filename list...exit. --------------


---------------------- Test All Start ----------------------

Loaded suite test
Started
.........
Finished in 0.002795 seconds.
-------------------------------------------------------------------------------------------------------------------
9 tests, 6 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------------------------------------------
3220.04 tests/s, 2146.69 assertions/s

----------------------- Test All End -----------------------

ミニユニットテスト結果

------------ mini_test in filename list...start ------------

./mini_test/mini_test_version.rb
./mini_test/mini_test_search.rb

------------ mini_test in filename list...exit -------------

Run options: --seed 1351

# Running:

..

Finished in 0.002025s, 987.6544 runs/s, 987.6544 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips

更新履歴 「2018/11/17」

記事のリンク先。

RubyAdventCalendar2018とVimAdventCalendar2018の記事を先行公開する場所にします。

Rubyは3年前から、

Vimは2年前から、

記事を書いています。

RubyAdventCalendar2018

VimAdventCalendar2018

これから、編集で多少修正するかもしれませんが、現状はこんな状態です。

neovimとpyenv、そして今後。

fishシェルを使っています。

pyenvはhomebrewでも、GitHubでも。環境構築は省略します。

config.fish

set -x PYENV_ROOT ~/.pyenv
set -x PATH $PYENV_ROOT $PATH
. (pyenv init - | psub)
init.vim

let g:python3_host_prog = $PYENV_ROOT . '/shims/python3'

これで、

:echo g:python3_host_prog

Python3までのPATHが指定されていれば、:UpdateRemotePluginsでセットできる。

用途 : deoplete, defx, deniteなどのPython3を使うプラグインでこの環境構築が役に立つ。

近況

IT企業に就職し、この2.3ヶ月ほど働いていました。ゲーム業界でした。しかし、機能を作れど作れど評価されないという状況と、給与面が下がる契約に変わるというので、条件をのもうと思いませんでした。低く見積もられたものです。所謂、ブラック企業で代表は何人も辞めさせたことを自慢のように話す人だったのは驚きでした。人を大切にしないところはそれなりの、罰があたってほしいですね。ほら、みなさんが嫌いなe社ですよ。

背景画像プラグイン

plugins.jetbrains.com

標準で外観にbackgroundImageボタンがないバージョンを使うときに、

プラグインを使用します。(最新ではないバージョンであると便利です)

画像ファイルではなく、画像をまとめたフォルダを設定できます。

plugins.jetbrains.com

こちらは、起動時にエラーがハンドルされて正しく動作しませんでした。

エディタ内に、画像があるとちょっとセンスがあると思いますね。

Copyright © 2007-2018 Takayuki Kamiyama. All Rights Reserved.