システムオペレータの週末

運用おつ。開発しようよ!

ネットの海でただ酔うことはもうやめようと思う

ショウペンハウアーの『読書について』を読んでいる。読書とは何か、について深く考察されていておもしろかった。

ちなみにまだ3分の1しか読んでないが、ざっと、気になったところをピックアップしてみた。こうすると、読書なんて関係ないただの自己啓発本みたいだ。 続きが気になるが、やる気と記憶が残っている間にブログにあげておこうと思う。尚、以降の引用はすべて光文社古典新訳文庫の翻訳を引用する。

書き出しから、衝撃だった。

どんなにたくさんあっても整理されていない蔵書より、ほどよい冊数で、きちんと整理されている蔵書のほうが、ずっと役に立つ。同じことが知識についてもいえる。 以下に大量にかき集めても、自分の頭で考えずに鵜呑みにした知識より、量はずっと少なくとも、じっくり考え抜いた知識のほうが、はるかに価値がある。

要するに言いたいことは、某Chikirinと同じだ。ちなみに、光文社古典新訳文庫のこの個所のタイトルは、まさしく『自分の頭で考える』だ。 この後、自分の頭でよく考える人間思索家と、博覧強記の愛読家を比較し、どちらが良いかを論じている。

読書と同じように、単なる経験も思索の代わりにはなれない。単なる経験と思索との関係は、食べることと、消化・吸収との関係にひとしい。

この個所もよかった。学生、社会人問わず、「何事も経験だ」などとよく言うが、経験もただ何も考えずに経験するだけでは何の意味もない。 「何事も経験だ」といわれるたびモヤモヤしていたが、そういうことだったのかもしれない、と思った。

考えがいま頭の中にあるということは、恋人が目の前にいるようなものだ。

ざっくりまとめると、メモをとれよ、すぐにいなくなってしまうぞ、ということだと思っている。 仕事でメモを取っていないわけではないが、社会人になってもっと早い段階でこの文章に出会っていたかった。

読書しながらメモをとる、というのは個人的にとても難しく感じる。 ジョン・フォン・ノイマン図書館で借りてきた本に多くのメモを残したという話があるが、本は汚したくないなあ・・・。

本を読むこと、考えること

ざっと読んだだけで、西洋の古典も哲学なんかも素人だ。だが、彼の言うように、思索をしてみようと思う。

彼が言いたかったことは何か。読書はインプットである。アウトプットを多くしていないと意味がないよ、そう言いたかったのだと個人的に解釈している。 彼の言うアウトプットは思索という言葉で統一されている。頭の中で考えるだけではなく、紙にメモをとったり、文章として残したりすることも思索に含まれるのだろう。 前で引用しているが、経験と思索の関係は食べることと、消化・吸収することの関係に等しいと言っている。 単純に、本を読むことは知識を吸収すること、のように感じるが、思索をしなければ自分自身に吸収されないようだ。

本を読んだだけでは、結局何のことが書いてあったのかわからなかったり、読んだけど身についていないと感じたり、ということは往々にしてある。 自分の言葉におこしたり、実際に書いてあったことをやって習慣にしたり、思索をしなければ、自分の体の一部にはできないだろう。
(実際にやってみる(=経験する)だけでは、思索の代わりにはなれないとある。なので、実際にやってみるのであれば、習慣化するところまでしないとだめだと思う。)

そういうわけで重圧を与え続けると、バネの弾力がなくなるように、多読に走ると、精神のしなやかさが奪われる。

彼はこうも言っている。多読(=インプット)ばかりしていると、他人の考えに呑まれてしまい、考えることやひらめきができなくなっていく。 本をたくさん読むことは、いいこと、偉いこと、と親は昔からこどもにすりこませる。だがそれを鵜呑みにしてしまうと、考えられない人間になってしまう。

自分自身、これが当てはまるように思う。本にそう書いてあったから○○をする、ゲームをしていても先に進めなくなったら攻略本を読む、のように。 昔から本や、他人の意見に流され、自分の意見なんてほんの一握りしかなかったのかもしれない。

暗記

この本を読んで思ったことのひとつが、暗記は大切だということ。

学生(大学)時代は、忘れてしまっても本やネットに書いてあるから、あらゆることを覚える必要はない、と考え、暗記はしてこなかった。 というか、暗記は苦手だ。その言い訳にしていたのだと思う。

それがなぜ大事だと感じているのかというと、暗記は自分の頭で考えて、物事を自分の頭に叩き込むことだから。 化学の周期表を「すいへーりーべー・・・」と覚えるのは、与えられた覚え方をそのまま実践しているので何とも言えない。 自分の創意工夫で、これはこう、あれはそう、と覚えていく過程が思索になるのではないか。

特に数学では、暗記は必須能力の一つだと思う。たとえば、三角関数は、関数の性質、倍角・半角の公式、微積分など、覚えることがひたすら多い。 これを暗記せずに問題を解こうと思っても、難しい。自分に染み込んでいないと、三角関数の問題を解く発想は生まれてこないだろう。

どうやって覚えるか、自分の知識との関連性はあるか、など暗記の方法やヒントを考えることは有効なアウトプットのひとつだと思う。

ネットサーフィンについて

当たり前のように誰でも持っているスマートフォン。電車に乗れば、9割近くの人がスマホでネットやゲームに明け暮れている。 ネットサーフィンとでいうと、ニュースを見たり、まとめサイトを見たり、ブログを読んだり。

ネットは、どれをとっても読書・経験と同じだ。つまり、思索にはならない。 ネットは文章を読むことに他ならない。ゲームも、よっぽど考えてやらない限り、ただの経験というだけになってしまうだろう。

それこそ、ブログを書いたりtwitterに意見を投稿したりすることは思索になりえると思う。 (twitterに日常の愚痴や写真をあげるだけなのは違う) ただ、そんなことをしているのは、ネット上の何パーセントだろうか。

ほとんどの人は、ただネット上の文章を読んでただ時間を潰しているだけだろう。 いろんな人の意見を読むことは重要だと考えていたが、考えてアウトプットしないと何の意味もない。 しかも、彼が言うには読むことばかりしていると考えることが苦手になっていくそう。なので、今後はネットを控えようと思う。

WindowsでVimが勝手に作成する4つのファイルを作成されないようにするには。

先日、Vagrantを始めた記事をあげました。

momoiro-tj.hateblo.jp

その際、合わせてWindows版のVimをインストールしていました。 ちなみに、KaoriYa版のVimではなく、Vim公式のものです。

Windows版のVimって勝手にディレクトリにバックアップファイルやらスワップファイルやらを作っちゃうんですよ。しかも4つも。

今回の記事はそのファイルは何なのか、どうすれば出なくなるのか、についての記事になります。

続きを読む

Vagrant始めました。

Vagrant使ってますか?←一回使ってみたかった。

私は今まで手動で仮想マシンの設定するのが楽しかったので、Vagrantなんて邪道!なんて考えている節もありました。 しかし、最近ちょっとめんどくさくなってきたので、重い腰を上げてVagrantをインストールして使い始めてみました。

使ってみて「仮想マシンってこんな使い方あるのか!」と感じました!

今回は公式のVagrant by HashiCorpのドキュメント、Installing Vagrantと、Getting Startedを参考にしてVagrantを試してみたのでその記録になります。

続きを読む

【VBA】1行でExcelのいろんなインターフェースを非表示にする。

ども。今回はExcel VBAです。いろいろさわってますが、結局仕事に簡単に直結するのはExcelVBAだと思います。

この記事では、Excelのリボン、数式バ-、スクロールバーなど、Excelのいろんなインターフェースを非表示にするVBAプログラムを紹介します。

前置き

ExcelVBAプログラムを作るとき、とっても気を使う

Excelってもともといろいろなインターフェースがあって、ユーザの自由度が高いですよね。 たとえば、リボンでフォントの設定とか簡単にできちゃうし、開発タブを有効にしていれば追加でVBAプログラム書けちゃうし。

セルやシートをロックして入力を制限するは有効な手段ですが、そもそも設定が手間。しかもロックするくらいしかできないので、自分の思うどおりに開発ができなかったりして、兼ね合いをとるのがとても面倒です。 特に、モーダルウィンドウを表示した操作を取り込む場合、とても気を使います。(僕だけかもしれませんが。)

個人的には、Excelはユーザが意図しないアクションを起こす可能性が非常に高く、開発者から見たときにとても気苦労が多いもの、だと思います。

Excel自体を非表示にしフォームだけ表示するVBAプログラム等もありますが、Excel自体の起動・終了が見えません。Excelインスタンスが残ってしまい、新たな予期しないトラブルが起こってしまう可能性もあります。

結果、Excelを表示したまま、インターフェースを非表示にしちゃえばいいのでは!?という結論にいたりました。 (笑

インターフェースを無効にするメリット

エラー時にユーザがExcelを正常に終了できる

前述のとおり、Excel自体を非表示にしてしまうとExcelプロセスが起動しているか停止しているかわかりません。プログラムが異常終了し、Excelプロセスが起動したままだとその後Excelが起動しなくなったり、意図しないトラブルに発展する可能性があります。

Excel自体は表示させておくことで、VBAプログラムが異常終了してもウィンドウの「×」ボタンからユーザが正常にExcelを終了させることができます。

Excelの機能を有効に利用できる

Excel自体を非表示にしてしまうと、ワークシートを使ったプログラムの作成が単純に難しくなります。だって非表示で見えないので。するとしてもシートに順番に値を書き出して、CSVに出力するくらいではないでしょうか。

Excel上でVBAプログラムを作っているのだから、Excelのプログラムを使用しない手はありません。条件付き書式、ピポットテーブル、グラフなどは、Excelでないと使えません。

経緯

先日本社に戻ったとき、お世話になった新人研修の講師の方と話す機会がありました。

そこで最近のこととかをつらつら話していると、「Excelで自分だけのライブラリ作っちゃえばいいじゃん」といわれました。

この一言からいろいろ考えた結果、やってみたのが今回の記事です。←?


インターフェースを非表示にする

ここからが本編です。基本的には1行のプログラムです。 簡単なので、ぜひやってみてください。検証はExcel2007で行っています。

リボンを非表示にする

一番厄介なリボンを非表示にします。プログラムもリボンの非表示が最もややこしいです。

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"

リボンを非表示にするにはExcel4.0形式のVBAプログラムを実行します。Application.ExecuteExcel4Macro(String)メソッドでExcel4.0形式でVBAプログラムを実行します。

引数には、Excel4.0形式で実行するプログラムを文字列で指定します。SHOW.TOOLBAR(""Ribbon"",False)でリボンが非表示になります。

シートタブを非表示にする

シートタブとは、Excel画面下部のワークシート一覧を表示するタブです。

ActiveWindow.DisplayWorkbookTabs = False

ActiveWindowは、現在開いているExcelワークブックのウィンドウを指します。オブジェクトはWindowsオブジェクトです。 Windows(ワークブック名)で、ウィンドウを指定することができます。

インターフェースはWindowsオブジェクトに多く付いていますので、Excelのインターフェースを触る場合は覚えておいてください。

見出しを非表示にする

見出しとは、A,B,C,D,....、1,2,3,4,....というように、画面上、画面左にある見出しになります。

ActiveWindow.DisplayHeadings = False

シートタブと同じです。ワークブックウィンドウ内のインターフェースは、だいたいWindowsオブジェクトで操作できます。

スクロールバーを非表示にする

スクロールバーは、縦のスクロールバーと横のスクロールバーで個別に設定ます。

' 横のスクロールバーを非表示にする
ActiveWindow.DisplayHorizontalScrollBar = False

' 縦のスクロールバーを非表示にする
ActiveWindow.DisplayVerticalScrollBar = False

こちらもWindowsオブジェクトの操作になります。

注意 スクロールバーを非表示にしても、スクロールは可能です。

スクロールも禁止するには、次の通りスクロール可能エリアを指定します。

' 例1)
ActiveSheet.scrollArea = "A1:F40"

' 例2)
ActiveSheet.scrollArea = ActiveWindow.VisibleRange.Address

WorkSheetオブジェクトのscrollAreaプロパティにスクロール可能エリアのアドレスを指定します。

例2では、ActiveWindow.VisibleRange.Addressを使用し、画面に表示されているセル範囲のアドレスを取得しています。

数式バーを非表示にする

数式バーは、文字や数式を入力するためのツールバーです。通常リボンの下にあります。これを非表示にします。

Application.DisplayFormulaBar = False

数式バーはApplicationオブジェクトで制御します。やり方は他のものとほとんど変わりません。

ステータスバーを非表示にする

ステータスバーは画面下部にあるツールバーです。シートの表示形式を変えたり、ズームしたりすることができるツールバーです。

Application.DisplayStatusBar = False

ステータスバーもApplicationオブジェクトで制御します。

ワークブックウィンドウを非表示にする

上記のすべてを非表示にすると、セルの選択と右クリックくらいしかできないようになります。

最後に、このセル自体も非表示にし、ウィンドウ枠だけになるようにしたいと思います。

Application.Windows(ワークブック名).visible = False

表示されているセルは、ワークブック内のウィンドウに表示されているので、Windowsオブジェクトを非表示にします。

ワークブックを非表示にすると、表示するときにWindowsオブジェクトの名前(≒ワークブック名)、もしくは順序番号が必要となるので注意して下さい。


以上、どうだったでしょうか。皆さんも試してみてください。

【メモ】touchしてからvimで編集するべきたった一つの理由。

めんどくさがりです。

windowsでメモ帳開くとき、まずはメモ帳を開いてからテキストファイルを保存します。

そのノリでlinux上でもまずvimと実行して、文書を書こうとしてしまう。

そうしないほうがいいたった一つの理由。

!カラースキームが有効になる!

たったそれだけです。

なので、touch [filename]でファイルを作ってから、vim [filename]とするほうがオススメです。

※2016/02/12 13:49 追記

って当たり前か!

VIM small version without GUIしか入ってない環境にVIMをインストールする。

PHPでごにょごにょやってて、いままでデフォルトのvi(vim)を使ってたけど、シンタックスハイライトとかしてほしいなーと思っていろいろやってました。

しらべたところ、コマンドはviだけど内部的にvimが動いているらしいので、vimの設定例をまねて設定してみたところ、カラースキームが反映されない。。。

ちなみに参考にしたのはここ。

VimをPHP用にカスタマイズする - vim使いこなしたいvim初心者へ

リンク先の通りに設定したけど、設定が反映されない。。。やっぱりちゃんとしたvimじゃないとだめなのか、それともCUI環境でX11がきいてないからか、、、などいろいろ考えました。

環境はFedra23、確か最小構成でインストールしたと思う。

で、ここ。

Vim の種類 (Vim family) - Qiita

どうもvimvimでもvim small versionというものっぽい。without GUIと書いており、シンタックスハイライトに対応していないよう?(もしかしたらできるのかも?)

調べ方は次の通り。

$ vi --version

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 20 2015 09:51:26)
Included patches: 1-207, 209-801, 803-808, 810-827
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
Small version without GUI.  Features included (+) or not (-):
+acl             -farsi           -mouse_sgr       -tag_old_static
・・・

viのバージョンを確認するだけ。

5行目あたりにSmall version without GUIと書いているのが確認できる。

で、どうするか。

Fedoraでのインストール < Vimのインストール(UNIX系) < Vimのインストール | viエディタ入門(Vimエディタ対応)

yumで探しても見つからなかったけど、ここに書いているvim-enhancedというのをインストールする。

$ sudo yum install vim-enhanced 

これで、vimコマンドが使用できるようになる。

カラースキームの設定も、シンタックスハイライトの設定ももちろんできる。

今まで通り、viコマンドで利用したければエイリアスに設定する。

$ alias vi=vim

よりみちして3時間くらい調べてたのに、結局これだけだったとは。。。時間のコスパが悪すぎる。もっと効率的に作業できるようになりたい。まぁ、趣味の範囲だからいいんだが。

以上です!寒くて手がかじかみながらキーボードにむかってました!

cakePHPインストールでハマった話。(intl.so)

Laravelいろいろさわってましたが、とりあえずいろいろPHPフレームワーク触ってみることにしました。

というわけで、cakePHPやってみることに。

composerはインストール済みとします。

ドキュメントに従いインストール

cakePHPクイックスタートガイドをもとに進めていきます。

webサーバのルートとなるディレクトリに移動。
ビルトインの簡易サーバもつかえるので、適当なディレクトリでいいと思います。

composerのcreate-projectコマンドでcakePHPプロジェクトを導入します。

$ composer create-project --prefer-dist cakephp/app test

  Problem 1
    - cakephp/cakephp 3.1.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.6 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.5 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.4 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.1.0 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - Installation request for cakephp/cakephp ~3.1 -> satisfiable by cakephp/cakephp[3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7].

なんかエラー出てるみたい。

どうも、intlというPHP拡張が無いようです。

intlの導入

調べてみると、peclつかったりしないといけなそう。

CakePHP3.0をインストールしてみる(自分用めもめも - Qiita

うーん。

とりあえず、yumコマンドでintlが無いか探してみる。

$ yum list | grep intl

php-intl.x86_64                           5.6.16-1.fc23                updates

あった!!!!もしかして、これ入れればいけるんじゃ・・・?

// php-intlをインストール
$ sudo yum install php-intl

//phpコマンドで確認
$ php -i | grep intl

/etc/php.d/20-intl.ini,
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

いけた!!!

最後に、/etc/php.iniextension=intl.soを追加。

もう一度インストール!

一度インストールしたディレクトリをすべて削除して、もう一度composerでcakePHPをインストール。

$ composer create-project --prefer-dist cakephp/app test

Writing lock file
Generating autoload files

Set Folder Permissions ? (Default to Y) [Y,n]? Y

途中、ディレクトリのパーミッションを変更するか確認されるので、「Y」で応答。

1回目のブラウザ確認

ブラウザから、http://localhostにアクセスして確認。

あれ、見れない。そもそもwebサーバが落ちてる。しかも上がらない。。。

しらべてみると、ダミーのindex.htmlが必要とのこと。内容は空か、<html></html>でいいみたい。

ドキュメントルートにindex.htmlを追加。もう一度、apacheを起動。お、あがってきた。

2回目のブラウザ確認

再度、http://localhostへアクセス。

それっぽい画面が出たけど、、、、パーミッションエラー。

このパターン最近見たぞ、と思ってSELINUXのコンテキストを変更。

chcon -R -t httpd_sys_rw_content_t .

(詳しくは前の記事を参照。)

momoiro-tj.hateblo.jp

最後のブラウザ確認

3度目の正直、http://localhostへアクセス。

いけたー!ケーキのイラストが表示された!

webアプリはセキュリティとかパーミッションでいっつもやられるなー。

というわけで、今日からcakePHPで遊んでみます。