tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【perl】`Wide character in xxxxx」`エラーが出るメモ

はじめに

久しぶりにperlを触っていて、
とある処理を行うときに
Wide character in gzwrite at output-sample.pl line 20.
のように怒られたのでメモ。

エラー

やろうとしていたこと

やろうとしていたのはこれだけ

  • プログラム内で適当な文字列を定義
  • それをgzip形式でファイルを書き出す
use utf8;

# 省略

# 怒られる処理
$fh->gzwrite($text);
実行時エラー

ただ単にperlを実行するだけで怒られる。

$ plenv exec perl output-sample.pl
Wide character in gzwrite at output-sample.pl line 20

どうするか

対応は簡単で、内部文字列にutf8 encodeをすれば大丈夫です

use utf8;
use Encode;

# 省略

$text = encode('utf-8', $text);

# 怒られる処理
# -> 怒られなくなる
$fh->gzwrite($text);

おわり

あいかわらずperlは文字コード関連はよく何か起こるなー\(^o^)/

【make】Errorが出ても無視する`-@`のメモ

はじめに

久しぶりにmakefileを書いていて
失敗したときに無視するのどうやるんだっけなーとなったのでメモ

エラー

makefile

hoge.shというのがあり、中身がエラーだとする

hoge:
   @./hoge.sh
実行
# errorが出る
$ make hoge
make: *** [hoge] Error 255

どうするか

実行を表す@-をつけることで無視できるようです!

makefile

@->-@とする

hoge:
   -@./hoge.sh
実行
# errorだがignoredされる
$ make hoge
make: [hoge] Error 255 (ignored)

参考

おわり

参考サイトさんthxです\(^o^)/

【perl】plenvで"Segmentation fault: 11"とエラーが出る対処メモ

はじめに

久しぶりにperlを触りたい機会があったので、
以下を元にplenvをinstallしていました。

途中でSegmentation fault: 11というエラーが出たのでメモ

エラー

# versionは出る
$ plenv --version
plenv 2.2.0

# install -lはエラー
$ plenv install -l
Segmentation fault: 11

どうするか

perl buildbrew install perl-buildでinstallしていましたが、
tokuhiromさんところから持ってきて入れると良さそうです。

# install -lがエラー
$ plenv install -l
Segmentation fault: 11

# pluginsディレクトリがないことを確認
$ ls -al ~/.plenv/
total 0
drwxr-xr-x   4 tweeeety  tweeeety   128  5  5 00:10 .
drwxr-xr-x+ 52 tweeeety  tweeeety  1664  5  5 00:04 ..
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 shims
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 versions

# download
$ git clone git://github.com/tokuhirom/Perl-Build.git $(plenv root)/plugins/perl-build/

# pluginsにはいる
$ ls -al ~/.plenv/
total 0
drwxr-xr-x   4 tweeeety  tweeeety   128  5  5 00:10 .
drwxr-xr-x+ 52 tweeeety  tweeeety  1664  5  5 00:04 ..
drwxr-xr-x   3 tweeeety  tweeeety    96  5  5 00:12 plugins
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 shims
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 versions

# install -lが正常にうごく
$ plenv install -l
Available versions:
 5.29.10
 5.29.9
 ~ 省略 ~
 5.6.0
 5.5.670
 5.003_13

おわり

ひさしぶりのperl\(^o^)/

【シェルスクリプト】複数行のコメントアウト

はじめに

単一行のコメントは#ですが、
複数行のはよく忘れるのでメモ

どうやるか

  • << [任意の文字]でコメントアウト開始
  • [任意の文字]でコメントアウト終了

どんな感じか

#!/bin/bash

echo "hoge"

# がコメントされる
<< COMMENTOUT
echo "fuga"
echo "piyo"
COMMENTOUT

おわり

ちゃちゃっとやるばあいは
vimのコマンドで複数行の冒頭に#とやっていた\(^o^)/

【python】macにpyenvを入れて2.7を3.xに切り替えて使うメモ

はじめに

最近はManager業に専念しているため
だいぶ技術ブログの更新を怠っていました ><

と、いいながら
ふとしたことからpythonを使いたく
macにデフォルトで入っているのはPython 2.7.10

使いたかったのが3.x系だったので切り替えて使えるようにpyenvをいれたメモです。

アジェンダ

  1. XcodeやHomebrewをインストール
  2. pyenvとは?
  3. pyenvをインストール
  4. pyenvでpython3.xをインストール

1. XcodeやHomebrewをインストール

念の為に書きましたが、ここは割愛します!!
macで開発するには何にしても必要ですしね。

Homebrewとは?的な記事は置いておきます。

2. pyenvとは?

pyenvとは?ですが、参考サイトから引用させて頂きます。
rbenvやplenvもあるのでそのあたりを使ったことがあるなら名前からはわかりそうですが..

pythonのバージョンを簡単に切り替えることができるようにしてくれるツールです。2系列と3系列との切り替えに便利です。また、ディレクトリごとにpythonのバージョンを切り替えることができます。

3. pyenvをインストール

ここからが本題ですね。
まずはデフォルトのversionを確認します。

$  python --version
Python 2.7.10

おもむろにpyenvをいれます。
versionが確認できればokです。

$ brew install pyenv

$ pyenv -v
pyenv 1.2.11

次にパスを通しておきます。

# ~/.bash_profileに追記
$ vim ~/.bash_profile
-- vi追記 --
export PATH="$HOME/.pyenv/shims:$PATH"
------------

# 反映
$ source ~/.bash_profile

4. pyenvでpython3.xをインストール

インストール可能のvesionを確認してみます。
めっちゃある...

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3

  ~ 省略 ~

  stackless-3.4.7
  stackless-3.5.4

pyenvを使ってpython3.7.2をインストールします

# 現在installされたversionを確認
# まだsystem pythonしかはいってない
$ pyenv versions
* system (set by /Users/tweeeety/.pyenv/version)

# 3.7.2をインストールj
$ pyenv install 3.7.2

# インストールされたことを確認
# *がついてるものが今利用しているversion
$ pyenv versions
* system (set by /Users/tweeeety/.pyenv/version)
  3.7.2

# version確認
$ python --version
Python 2.7.10

# 切り替え
$ python global 3.7.2

# 確認
$ pyenv versions
  system
* 3.7.2 (set by /Users/tweeeety/.pyenv/version)

$ python --version
Python 3.7.2

なんとなくpyenvのhelpをみてみる

$  pyenv --help
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

おわり

簡単に切り替え完了ーーー\(^o^)/

【vim】markdownを書く環境を整えてpreviewするまで

はじめに

新しいmacになったのでvimの設定なんかをやり直してます。

markdownはatomで書いていたのですが、
これを期にmarkdownもvimに移行しようと思ったのでその際の自分用メモ

アジェンダ

  1. pluginを入れる
  2. plasticboy/vim-markdownの設定する
  3. kannokanno/previmの設定する
  4. tyru/open-browser.vimの設定する
  5. .vimrcの記述

1. pluginを入れる

3つのpluginを入れます

Plugin 'plasticboy/vim-markdown'
Plugin 'kannokanno/previm'
Plugin 'tyru/open-browser.vim'

以下、簡単な説明です

  • plasticboy/vim-markdown
    • シンタックスハイライトします
    • headに応じて折りたたみもできます
  • kannokanno/previm
    • 保存したMarkdownをブラウザでプレビュー可能にします
  • tyru/open-browser.vim
    • カーソル下のurlや文字列を開いたり検索したりします

2. plasticboy/vim-markdownの設定する

let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_auto_insert_bullets = 0
let g:vim_markdown_new_list_item_indent = 0

let g:vim_markdown_folding_disabled = 1

markdownなファイルを開いたときに
デフォルトで折りたたみになってしまうのでoffにします。

vim_markdown_auto_insert_bulletsは以下を参照ください。

3. kannokanno/previmの設定する

autocmd BufRead,BufNewFile *.md set filetype=markdown
let g:previm_open_cmd = 'open -a Google\ Chrome'
" ctrl pでプレビュー
nnoremap <silent> <C-p> :PrevimOpen<CR>

autocmd BufRead,BufNewFile *.md set filetype=markdown

ちゃんと調べてませんが、
このままだと.mkdのファイルに対してのハイライトらしいので
.mdもfiletype=markdownとなるようにします。

nnoremap <silent> <C-p> :PrevimOpen<CR>

基本は:PrevimOpenでプレビューが開きます。
ctrl + pというショートカットで開くようにします。

4. tyru/open-browser.vimの設定する

let g:netrw_nogx = 1 " disable netrw's gx mapping.
nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

URLや文字列の上でgxと打つことで、
URLならブラウザでURLが展開され、
文字列なら検索結果が表示されます。

以下、参考サイトです。

5. .vimrcの記述

以下、.vimrcの記述です。

"
" about markdown
"
Plugin 'plasticboy/vim-markdown'
Plugin 'kannokanno/previm'
Plugin 'tyru/open-browser.vim'

" plasticboy/vim-markdown
" 折りたたみの禁止
let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_auto_insert_bullets = 0
let g:vim_markdown_new_list_item_indent = 0

" kannokanno/previm
autocmd BufRead,BufNewFile *.md set filetype=markdown
let g:previm_open_cmd = 'open -a Google\ Chrome'
" ctrl pでプレビュー
nnoremap <silent> <C-p> :PrevimOpen<CR>

" tyru/open-browser.vim
let g:netrw_nogx = 1 " disable netrw's gx mapping.
nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

おわり

昔に設定したものも、再度vimの設定しなおすとほとんど覚えてないという\(^o^)/

Bashで大文字/小文字を無視して補完 - .inputrcとreadline

はじめに

macを新しくしたので.bashrcやら.vimrcも断舎離しつつ新しくしています。

terminalを開いてコマンドラインで入力する時、
tabで補完してくれるわけですが
デフォルトでは大文字小文字を正確に打たないと補完してくれません。

$ ls -1

Fuga.txt
Hoge.txt
piyo.txt

# この状態でtabを打っても補完されない
$ cat ho

この補完に大文字/小文字を無視して補完してくれる設定です

アジェンダ

  1. 設定
  2. .inputrcって?
  3. readlineって?

1. 設定

設定は簡単で、${HOME}/.inputrcというファイルに以下の設定を書いて読み込むだけです。
ちなみになければ作成してください

# 設定
$ vim ~/.inputrc
-- vim追記 --
$if Bash
set completion-ignore-case on
$endif
------------

# 読み込み
$ source ~/.inputrc

2. .inputrcって?

ところで.bashrcはよく見かけますが.inputrcはなんでしょうか?

これはreadlineが読み込む設定ファイルです。

3. readlineって?

では、readlineってなんでしょうか?

参考サイトからの引用になりますがライブラリです。

readlineは、CUI アプリケーションにおいてユーザが行を入力する際に便利な
「行頭・行末移動」「ヒストリ機能」などを提供するライブラリである。
readline というコマンドがあるわけではない。
 
参考: コマンド readline 行入力支援ライブラリ

こちらも参考サイトからの引用ですが、
readlineが提供する機能は以下でして補完・または候補一覧を表示 (TAB)もこれに含まれます。

  • 1文字戻る (Ctrl-b)
  • 1文字進む (Ctrl-f)
  • 行頭に移動 (Ctrl-a)
  • 行末に移動 (Ctrl-e)
  • カーソル位置から行末までを削除 (Ctrl-k)
  • 1行上 (直前に入力した内容) に移動 (Ctrl-p)
  • 1行下に移動 (Ctrl-n)
  • 逆方向インクリメンタルサーチ (Ctrl-r)
  • 補完・または候補一覧を表示 (TAB)
  • エスケープシーケンスを入力 (Ctrl-q・Ctrl-v)  
    参考: コマンド readline 行入力支援ライブラリ

参考

おわり

vimの設定からでも調べると知らない事が増えるのは良いですよね\(^o^)/