安心してだらだらしたい
今日は午後から何かをすることを放棄して、ひたすらにだらだらしていた。
具体的には、1時から6時すぎまで、畳マットの上に横になっていた。
扇風機はつけていたが、クーラーは消えたままだったので、暑いことには変わりなかった。
そもそもなぜそうなったかといえば、目がずきずき痛んだからだ。
自分の場合、この症状はけっこうな疲れを意味しており、こうなったら優先して休むようにしている。
しかし、休むことは休むのだが、昼間にごろごろしているとなんとなく落ち着かない。
これは、変なことである、と思う。
ごろごろしているのだから、安心して休めばいいだけの話だ。
ここら辺の心情について、いま読んでいる『仕事なんか生きがいにするな』にヒントがありそうだ。
仕事なんか生きがいにするな 生きる意味を再び考える (幻冬舎新書)
- 作者: 泉谷閑示
- 出版社/メーカー: 幻冬舎
- 発売日: 2017/01/27
- メディア: Kindle版
- この商品を含むブログを見る
YAPC::Fukuokaに行ってきた
先週、7月1日(土)に福岡でYAPCというPerlのイベントがあり、参加してきました。今年3月にあったYAPC Kansaiにつづき、YAPCは2回目の参加です。 会場はLINE福岡。エントランスにはサリー、コニー、ブラウン(左から)。社内にカフェがあったり、おっしゃれなチェアー、ソファーがあったりして、ぴかぴかでした。
聞いたセッション抜粋
WEBセキュリティのお話(徳丸 浩さん)
WEBシェルというのをサーバーに設置するとなんでもできてしまう、というのがよくわかった。
分散ユニークID採番機katsubushiとWebアプリケーションへの応用例(fujiwaraさん)
巨大サービスではID採番のシステムもでかい。
はてなブログ最近の開発テクニックと最新の開発風景のご紹介(hitode909さん)
チーム開発でコミュニケーションをよくするため工夫されているのが伝わってきた。
未来のプログラマー達へ ~Perl入学式卒業生から~ (tomcha_さん)
「一歩踏み出す小さな勇気」が必要という言葉が印象的だった。
全体の感想
第一線で活躍されているプログラマの方々のなか、かなり素人感のある自分がまじっていて、恐れ多い感じでありましたが、ハイレベルな雰囲気が伝わってきて刺激になりました。 来年のOkinawaも楽しみです。
福岡観光してきた
人生ではじめて福岡にいきました。 都会でありながら、人がゆったりしている様子で「住みたい街」として評判なのも納得という感じ。 ぜひまた行ってみたいです。
夕暮れの博多駅
博多駅に展示されていた巨大な山笠
大濠公園のカモ
VBAを使ってOfficeからコマンドプロンプトであれこれやる
VBAからコマンドプロンプトにコマンドを渡して実行できる。 これはつまり、WordとかExcelとかから外部プログラムを実行できるということだ。
ためしに、Excelのシートにある文字列をKakashiを使ってわかち書きするということをやってみる。
ネタとして、夏目漱石『坊ちゃん』の冒頭部分を青空文庫からひろってきた。
坊ちゃんの文章を入れたとなりのセルにコマンドを実行するための関数をいれる。この関数は、ユーザー定義関数というやつで、ようは自分で書いた関数だ。
組み込み関数みたいにワークシートから実行できる関数は↓のようにして書ける。
Public Function wakachi_gaki(Cell As Range) Dim pipe As String: pipe = Chr(124) ' パイプ(|). ハードコードしたら失敗した Dim WSH As Object Set WSH = CreateObject("WScript.Shell") Dim sCmd As String sCmd = "echo " & Cell.Value & " " & pipe & " kakasi -w" ' コマンドのあいだにスペース必要 Dim wExec Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) '処理が終わるまでまつ Do While wExec.Status = 0 DoEvents Loop wakachi_gaki = wExec.StdOut.ReadAll Set wExec = Nothing Set WSH = Nothing End Function
関数を入力してエンター。 一瞬、コマンドプロンプトがちらっと表示される。
分かち書きできている。
コマンドプロンプトで実行できるということは、Perlもつかえるということだ。 ためしてみた。
かんたんに試すだけなので、Perlのバージョンを表示させてみた。
perl -v
ってやるだけ。
This is perl 5, version 24, subversion 0 (v5.24.0) built for MSWin32-x64-multi-thread Copyright 1987-2016, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using ""man perl"" or ""perldoc perl"". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
ちゃんと返ってきた。
コードはこれ。
Public Function perl(cmd As String) Dim WSH As Object Set WSH = CreateObject("WScript.Shell") Dim wExec Set wExec = WSH.Exec("%ComSpec% /c " & cmd) '処理が終わるまでまつ Do While wExec.Status = 0 DoEvents Loop perl = wExec.StdOut.ReadAll Set wExec = Nothing Set WSH = Nothing End Function
書きためたVBAマクロをだす その1 Word 箇条書き番号テキスト化
職場でWordとかExcelとかをよくつかっていて、それなりにマクロを書きためている。のだが、管理がずさんなため、いつか一度かいたはずのコードがいざというときに出てこなくてあたふたすることがよくある。このままだと、この状況は一向によくならない。そこで、ブログに出すと同時にGithubのレポに上げるようにすれば、記憶とコードの整理が一挙にできてよいのではないかと思いいたった。
第一回は、Wordの箇条書き記号(・とか1. 2. 3..とか)を素のテキストに変換するマクロを紹介したい。紹介するというか、たくさんのところで使われている処理ではある。しかしこのコードは、テキスト変換処理を複数のドキュメントに適用できるようにじゃっかんの拡張をほどこしてある。これは章ごとにファイルが別けられているケースなので便利だと思う。たとえば20ファイルあったときに、20回マクロを実行するのは、それなりに骨が折れるのだ。
コード
メインルーチンとサブルーチンにわける。メインでどのサブルーチンを実行させるかを、ユーザーインプットに応じて分岐させる。サブルーチンの種類というのは、処理範囲を単独ないしはすべてのドキュメントのどちらにするかという選択にもとづいておこなう。
メインルーチン
かんたんにinputboxに1とか2とかを入力することで、範囲を指定できるようにする。
Sub 箇条書き番号テキスト化() Dim f f = InputBox("箇条書き番号をテキスト化します。処理範囲を指定してください。1=現在の文書、2=すべての文書") If f = "" Then MsgBox "キャンセルしました", vbOKOnly + vbInformation Exit Sub End If Select Case f Case 1 Call ConvertNumbersToTextSingleDocument Case 2 Call ConvertNumbersToTextAllDocuments End Select End Sub
サブルーチン
全ドキュメントを処理するばあいは、ドキュメントのオブジェクト変数をループさせる。それ以外は、どっちも同じで、単純にコピペしている。 Lst.ConvertNumbersToTextが箇条書き記号を素のテキストに変換するVBAの組み込みメソッドだ。
Private Sub ConvertNumbersToTextAllDocuments() Dim Lst As List Dim doc As Document For Each doc In Documents For Each Lst In doc.Lists Lst.ConvertNumbersToText Next Lst Next doc MsgBox "完了", vbOKOnly + vbInformation End Sub Private Sub ConvertNumbersToTextSingleDocument() Dim Lst As List For Each Lst In ActiveDocument.Lists Lst.ConvertNumbersToText Next Lst MsgBox "完了", vbOKOnly + vbInformation End Sub
基本的に、これでだいたいうまくいくはず。 Githubへのアップはまた今度やる。
「シャチ泳ぎ」という演算子の使い方を試してみた
Effective Perl第2版をKindleで読んでいる。
今日読んでいて「シャチ泳ぎ」というおもしろい名前の記法が紹介されていた。
たとえば、こういう感じのやつ。
my $hoge //= 'fugaa!';
ここではDifined-or演算子(//)の直後に代入演算子(=)が使われている。
感覚的に$hogeがundefなら右辺の値が代入されるのだな、という察しがつく。
# difined-or演算子 # 左辺がundefであれば右辺を代入する my $a = undef; $a //= 'un-undef'; print $a; # 'un-undef'
この書き方は||
を使ってもできる。
# 左辺が偽であれば右辺を代入する # Perlで偽となるのは、'', 0, '0', undefの4つ my @arr = ('', 0, '0', undef, 'True'); my @converted = map { $_ ||= 'hoge!' } @arr; print join ' ', @converted;
以上がシャチ泳ぎの中身だった。
Effective Perlには、上記ふたつの演算子を正しく使うために理解しておかなければならない、Perlで偽となる値についてもはっきりと書かれていてとてもいい。
- 作者: Joseph N. Hall,Joshua A. McAdams,brian d foy,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2015/02/17
- メディア: 大型本
- この商品を含むブログを見る
Kindleアプリ使える
ところでKindleアプリはよくできていて、スマホでもよみやすい。
ハイライトをタッチ操作できて、自動でインデックスが作成されるので、マークした箇所はあとからかんたんに見返すことができる。
コードブロックもマークできる。
紙の本ならふせんをつけるところだが、ふせんだとどれがどれだかわからなくなるので、検索性は電子本がすぐれていると実感した。
液晶で読むのが人によっては負担になる点はあるが、アプリで暖色にしたり色を反転できたりするうえ、フォントサイズ、行間、余白まで設定できるので、だいぶいい。
目に対するやさしさでは電子ペーパーに分があるが、応答性の良さではまだまだ液晶の圧勝なので、1時間の読書程度ならスマホで便利に読むのはアリという気がする。
Perlワンライナー入門した
テキストファイルを扱っていて、ああ置換しないといかんやつがある…って発見してからのスクリプト書く気力がないことがよくあります。 そういうとき、全部手動でやったりして時間かかってました。そんなときにPerlのワンライナー。 一回やってみると、かんたんにサクサク仕事が進むことがわかりました。これからどんどん使っていきたい。
たとえば、今日はこういうのを使いました。
カレントディレクトリのテキストファイルに含まれるhogeを消したい。
$perl -pne 's/hoge//g' -i.bak *.txt
-iオプションを付けると、上書きできる。
10秒くらいで片が付いて時間ができる。うれしい。
小飼弾さんのPerlワンライナー Advent calender。 一行野郎(one-liner)はperlにおまかせ
ミニマルパールというのもある。これは英語版の方が安く買えるようだ。
あるべき自分というのは思考の中にしかない
禅では、過去も未来もなく、あるといえるのはこの瞬間だけ、といいます。
私は、快不快で判断して、これは良い、あれはダメとか決めています。
そして、気分が悪くなると、自分はこんな状態であるべきじゃない、これは不本意なことだとこころの中で不満を感じます。このとき一方で「こうあるべき」というイメージが浮かんでいて、今の不満とその理想とのギャップを感じています。
われわれ人間はリアルではないものに執着して、リアルなものをすっかり忘れてしまいます。それが実際、われわれが行っていることなのです。
「禅マインド ビギナーズ・マインド 」鈴木俊隆
現実が気に入らないとき、私はイメージを捕らわれながら現実がそうなっていないことに憤ったり、苦しんだり、悲しみさえ感じることがあります。そして、そういう有り方を自覚することなく、毎日繰り返しているようです。先ほどの引用はこのようにつづきます。
この点をはっきり認識するなら、完全な落ち着きが得られ、自分を信じることができます。自分に何が起ころうと、かまいません。あなたは自分を信じています。この信は、リアルでないものを信じている通常の信仰とは全く違います。
私に取って身近な「信仰」とは、リアルではないものに自分を近づけていくような努力といってよいかもしれません。その姿勢は、いまここにある自分というリアルなものを否定し、存在しないしないものを求めているようにみえます。きっと、いま自分が不満なのは、今の自分の不完全さが原因なのだという理解があるのです。だから自分を向上させることで、幸せになれると考えるのでしょう。
つい最近、「マインドフルネス」というワードが流行したとき買った上記の本をぱらぱら読んでいて、そんなことを思いました。