コンテンツにスキップ

Home

【PHP】空配列を=== []で判定する

TwitterでPHPのempty関数を安易に使うのは良くない趣旨のツイートを見ました。普段からemptyを使っていて何の疑問も持たなかったので、へーって思ってツイートを眺めてました。

こんなチェックをするそうです。

if ($a === [])

チェック内容が明確なので可読性がよいです。

if (empty($a))

この場合、$aがarrayの空配列チェックなのか、stringの空文字チェックなのか1文だけでは分かりません。あと、NULLの場合の挙動が先述のコードとは異なるので、なんとなく危ないですね。

今度からもう少しこういうところに気をつかって書いていく良いきっかけとなりました。

※PHPマニュアルのPHP 型の比較表から確認できるように、emptyの挙動はけっこうトリッキー。気をつけましょう!

Bronze Oracle Database DBA 12c合格しました

LPIC Level1 Ver5.0に合格してから2ヶ月ほど立ちましたが、次はOracle社が行っている認定試験制度Bronze Oracle Database DBA 12cを受け合格しました。

結論

オラクルマスター教科書 Bronze Oracle Database DBA 12cは割と有効。

これに出題されている問題が数個出題されました。

利用した参考書・サイト

学習法

  1. Ping-tを解く

  2. オラクルマスター教科書 Bronze Oracle Database DBA 12cの解説編を読む

  3. オラクルマスター教科書 Bronze Oracle Database DBA 12cの練習問題を解く

  4. 2-3を繰り返す

Ping-tのプレミアムコンテンツにOracle Master 12c Bronze DBAの問題集があるので、ちょこちょこ解きました。あまり進捗が良くないまま期限が来てしまい不完全燃焼でした。

あまり理解度が良くないと思ったので、オラクルマスター教科書の練習問題の前に解説編を読み、雰囲気を頭に入れました。

あとはひたすら練習問題です。練習問題でなかなか理解しにくい部分があれば解説編と合わせてしっかり読み込みます。

結果

合格

正解率:84% 合格ライン:70%

感想

冒頭にも書きましたが、オラクルマスター教科書 Bronze Oracle Database DBA 12cに出題されている問題が数個出題されました。練習問題を覚えるのは合格するための有効な手段だと思います。

出題問題に関しては

  • Oracle データベースの基本構造
  • インスタンスの起動/停止とメモリコンポーネントの管理
  • ユーザーおよびセキュリティの管理
  • データベースの監視とアドバイザの使用
  • バックアップおよびリカバリの実行

あたりが多く出題されていた印象です。この辺を集中的にやるといいかも。

次はSQL基礎をちゃちゃっと片付けてOracle Master Bronzeを取りたいと思います。

vagrant + gitbookで共有フォルダ内でbuildしたらno such file or directoryが出て困る

最近、仕事でこそこそgitbookを使っています。vscodeでmarkdownを書きたいので共有フォルダを設定してホストOS側で編集したあと、ゲストOSでbuildしてます。

環境構築時、buildするとエラー(no such file or directory)になってしまいました。ファイルあるのに。。。 でも、gitbookのライブラリっぽいファイルを修正することで解決できたので備忘として残します。

[vagrant@localhost hoge]$ gitbook build
info: 8 plugins are installed
info: 5 explicitly listed
info: loading plugin "search-pro-kui"... OK
info: loading plugin "highlight"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 5 pages
info: found 22 asset files

Error: ENOENT: no such file or directory, stat '/vagrant/hoge/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js'

環境

  • Windows10(ホストOS)
  • centos7(ゲストOS)
  • vagrant 2.2.5
  • VirtualBox 6.0.12
  • GitBook 3.2.3

Vagrantfile

  # synced folder
  config.vm.synced_folder ".", "/vagrant", type: "nfs"

対応方法

copyPluginAssets.js内のメソッドの戻り値を変更する。

  1. copyPluginAssets.jsを探す
    $ find / -name "copyPluginAssets.js"
    
  2. ファイルが見つかるはずなので、vi等で開く
  3. copyAssetsメソッドを探す。(45行目あたり)
  4. 戻り値のconfirmの値をfalseに変更。
  5. copyResourcesメソッドを探す。(78行目あたり)
  6. 戻り値のconfirmの値をfalseに変更。
  7. 保存。

参考サイト

  • https://kuttsun.blogspot.com/2018/06/gitbook-no-such-file-or-directory.html

SDKMANを使ってkotlinをインストール

SDKMANはJVM言語のインストールができて、バージョンも指定できるツールです。

https://sdkman.io/

SDKMANは以下をサポートしているそう。

  • Mac OSX
  • Linux
  • Cygwin
  • Solaris
  • FreeBSD

SDKMANのインストール

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk version
SDKMAN 5.7.3+337

kotlinのインストール

9月末時点の最新バージョン(1.3.50)をインストールします。

$ sdk list kotlin
Available Kotlin Versions
================================================================================
     1.3.50              1.2.50              1.1.4               1.0.1-2
     1.3.41              1.2.41              1.1.3-2             1.0.1-1
     1.3.40              1.2.40              1.1.3               1.0.1
     1.3.31              1.2.31              1.1.2-5             1.0.0
     1.3.30              1.2.30              1.1.2-2
     1.3.21              1.2.21              1.1.2
     1.3.20              1.2.20              1.1.1
     1.3.11              1.2.10              1.1
     1.3.10              1.2.0               1.0.7
     1.3.0               1.1.61              1.0.6
     1.2.71              1.1.60              1.0.5-2
     1.2.70              1.1.51              1.0.5
     1.2.61              1.1.50              1.0.4
     1.2.60              1.1.4-3             1.0.3
     1.2.51              1.1.4-2             1.0.2

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================


$ sdk install kotlin 1.3.50

Downloading: kotlin 1.3.50

In progress...

######################################################################### 100.0%

Installing: kotlin 1.3.50
Done installing!


Setting kotlin 1.3.50 as default.

REPLで動作確認

kotlincをコマンドで打つと対話モードになります。

$ kotlinc
Welcome to Kotlin version 1.3.50 (JRE 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
Type :help for help, :quit for quit
>>> println("hello world!")
hello world!

quit

めちゃくちゃ簡単に導入できました!

サクラエディタからShibaを起動する

サクラエディタでmarkdownを書くときプレビュー画面がないのでShibaというmarkdownプレビューアプリを使っています。

https://github.com/rhysd/Shiba

Shiba.exeを自分で叩いて、ファイルを読み込ませるのが面倒なのでサクラエディタから起動させるようにしました。

方法

ツール > 外部コマンド実行でウィンドウを開きます。 「名前」のところに【ShibaのexeファイルのPath $F】を入力して実行ボタンを押します。

C:\Program Files\Shiba-win32-x64\Shiba.exe $F

LinuxLiteでGoogleドライブを使う!

Googleドライブがネットワークドライブとなって、ローカルでマウントして使えるようにするのがgoogle-drive-ocamlfuseです。便利。

# リポジトリの追加
sudo add-apt-repository ppa:alessandro-strada/ppa

# インストール
sudo apt-get update
sudo apt-get install -y google-drive-ocamlfuse

# Google認証
google-drive-ocamlfuse

# マウントディレクトリを作成
mkdir ~/Documents/googledrive

# マウント実行
google-drive-ocamlfuse ~/Documents/googledrive

参考

astrada/google-drive-ocamlfuse

LinuxでGoogleドライブを使えるようにしてみたのでメモ残しておく

LinuxLiteにPeerCast

Linux インストールするたびにやってることのまとめ。あくまで視聴するために必要なものを入れます。

色々インストール

前提条件

ディレクトリ構造は以下とします。

~/
├── Desktop
│   ├── Untitled-1.md
│   ├── computer.desktop
│   ├── helpmanual.desktop
│   ├── network.desktop
│   ├── recyclebin.desktop
│   ├── settings.desktop
│   └── userfiles.desktop
├── Documents
├── Downloads
├── Music
├── Peca ←★今回の作業ディレクトリ
├── Pictures
├── Public
├── Templates
└── Videos

PeerCastStation

http://www.pecastation.org/

いつも開発版を使っているのでそっちをダウンロードします。好みなのでお好きなようにどうぞ。

cd ~/Peca
curl -O http://www.pecastation.org/files/PeerCastStation-2.7.2.1.zip
unzip PeerCastStation-2.7.2.1.zip

mono

mono は Linux で PeerCastStation を使用するためのツールです。apt を使ってインストールできますが、バージョンに違いなのか大体うまくいかないので最新版のソースをダウンロードしてビルドします。

※2019/9/21 時点の最新バージョンは 6.0.0.334 でした。各バージョンのソースはここから取得できます。

cd ~/Peca
sudo apt install -y git autoconf libtool automake build-essential gettext cmake python curl
curl -O https://download.mono-project.com/sources/mono/mono-6.0.0.334.tar.xz
tar xvf mono-6.0.0.334.tar.xz
cd mono-6.0.0.334
./configure
make    # 30分以上かかりました
sudo make install

QPeerCastYP

QPeerCastYP は PeerCast 補助ツールです。配信の一覧を表示したりするツールです。

cd ~/Peca
sudo apt install -y build-essential libqt4-dev
git clone https://github.com/bookdraft/QPeerCastYP.git
cd QPeerCastYP
./configure
make
sudo make install

これでMenuマルチメディアに QPeerCastYP が表示されるはずです。

PurePlayer

PurePlayer*は、Linux 用のメディアプレイヤーおよび PeerCast 視聴プレイヤーです。QPeerCastYP と連携して視聴できるようにします。

cd ~/Peca
sudo apt install -y mplayer qt4-default g++
git clone https://github.com/nelkana/PurePlayer_As.git
cd PurePlayer_As
qmake
make

動作確認

ターミナルでPeerCastStation.exeがあるディレクトリに移動して以下コマンドを実行。

mono PeerCastStation.exe

ブラウザからhttp://localhost:7144にアクセスしてきちんと表示されれば OK。

QPeerCastYP の設定

QPeerCastYP 起動後、設定 > プレイヤに移動します。各項目に対して色々設定します。

項目
プログラム /home/{ユーザー名}/Peca/PurePlayer_As/pureplayer
種類 wmv|ogm|nsv|flv
引数 $STREAM_URL

配信の一覧から配信者のリンクを押したらPurePlayerが開き、配信が写れば OK。

おまけ

中山さん(@mrnakayama)作の PeerCast 補助ツールも紹介します。

epcyp

ダウンロードから起動まで。

cd ~/Peca
wget https://github.com/mrhorin/epcyp/releases/download/v1.2.0/epcyp_v1.2.0_linux.zip
unzip epcyp_v1.2.0_linux.zip
cd epcyp-linux-x64
./epcyp

起動したら歯車アイコンを押して設定画面を開きます。

PeerCast タブ

項目
PeerCast 本体 /home/{ユーザー名}/Peca/PeerCastStation-2.7.2.1/PeerCastStation.exe
mono を使用して起動する ON

YP タブ

名前 URL
SP http://bayonet.ddo.jp/sp/
TP http://temp.orz.hm/yp/

プレイヤー

項目
タイプ(正規表現) WMV|FLV
再生プレイヤー /home/{ユーザー名}/Peca/PurePlayer_As/pureplayer
引数 "$x"

全部設定したら OK ボタン押して保存します。

配信の一覧を読み込み直すと SP と TP の一覧が出ます。ダブルクリックするとプレイヤーが起動して視聴できます。

参考

Kubuntu16.04 で peercast

新しいバージョンの Mono をインストールする方法

LPIC Level1 Ver5.0に合格しました

2、3ヶ月ほど勉強してLPIC Level1 Ver5.0に合格しました。勉強したことについて書きます!

結論

Ping-tを使って勉強すればとれる! ※ 他の資格取得者たちの多くも同じ感想ですが、多分これが一番効率が良いと思いました。

利用した参考書・サイト

学習法

Lv1-101

  1. Linux教科書 LPICレベル1 スピードマスター問題集を2,3週解く
  2. Linux教科書 LPICレベル1を1読する
  3. Ping-tをひたすら解く

まず、Linux教科書 LPICレベル1(以下あずき本といいます)を読みました。しかし、読んでもちんぷんかんぷん。

一旦諦め、Linux教科書 LPICレベル1 スピードマスター問題集(以下スピマスといいます)を2,3週ほどしました。概念を理解するよりも、問題をときながら慣れていく作戦に変更しました。

慣れてきたところで、再度あずき本を読みました。最初よりは理解できたのと、スピマスでは内容が薄いところが補えた感じがありました。

この頃に受験の予約をしています。

この2つの参考書を見るのが飽きてきたのでPing-tに手を出してみました。使ってみると問題数がめちゃくちゃ豊富ですげー便利です。受験当日までには3割ほどしかこなせませんでしたが、もっと早くやっていれば・・・と後悔しました。

結果

630/800点

Lv1-102

  1. Ping-tをひたすら解く
  2. あずき本スピマスの模擬試験を解く

前回の反省を踏まえ、Ping-tをひたすら解きました。600問以上ありますが、全て金になるまでやっています。 ※Lv1-101は無料で問題を解くことができますが、Lv-102から有料になります。 ※金って何?って人はこちらをご覧ください。

この時点で受かる自信はついています。せっかく本が2つあるのでそれぞれの模擬試験を実施。

結果

640/800点 もっと点数高いと思ったんだけどなー(◞‸◟)

受験時の注意点

日本語訳が微妙

たまに問題文や選択肢の中に??ってやつが出てきます。原文(英語)でも確認できるので焦らず見てみたほうがよいです。

取得した目的

普段は設計やアプリ開発を行っています。その中でローカル環境や検証環境の構築をすることがあります。cdlsなど基本中の基本のコマンドは分かりますが、知見がないなーと感じていたので受験することにしました。

感想

SE兼PGぐらいの立ち位置のわたしとしては、業務で役に立つ場面はなさそうだなーと感じました。もちろんLinuxを少しぐらいは触れますよーの証明にはなるでしょう。なので、無理して取る資格ではないです。

しかし、仕事内容がLinuxメインの人は絶対取ったほうが得です!そういう人たちはLevel1だけでなくLevel2,3も目指しましょう!

Tumblrでシンタックスハイライト

Tumblrでシンタックスハイライトを適用するには大きく2種類あります。

  1. Tumblr標準のシンタックスハイライトを使う
  2. テーマを編集して自前で実装

1. Tumblr標準のシンタックスハイライトを使う

設定画面から テーマの編集 ボタンをクリックします。

左ペインのテーマオプションから Syntax highlighting をOnにして保存します。

これだけです。

before:

after:

2. テーマを編集して自前で実装

このサイトを参考にしました!

https://rfs.jp/sb/javascript/js-lab/code-prettify.html

テーマの編集から HTMLを編集 リンクをクリックします。

`

NifmoからOCNモバイルONEへ乗り換え

使っているスマートフォンが壊れかけていて、新しいのが欲しいなーと思い色々見たのですが、普通に買うとけっこう高い。安くても3万ぐらいはする。。。 格安スマホのキャンペーンを利用すると、かなりお得に乗り換えできそうだったので、2015年から使っていたNifMoから卒業することにしました。

キャンペーンの情報収集

乗り換えるにもたくさん会社があり、自力で調査するのがめんどうだったので、格安SIMとスマホ比較を参考にしました。 このサイトは割と更新頻度が高く、生きた情報が多いのでとても役に立ちます。キャンペーン情報以外にも通信速度やスマホ評価など情報量が多いので、気になるスマホが出たときは目を通すことがあります。

選んだ会社

今回はOCNモバイルONEで契約することにしました。選んだポイントは2つ。

  1. 端末代の安さ
  2. 月々の基本料金

端末代の安さ

今回買うのはHUAWEI nova lite 3です。3,480円と激安です。定価は30,000円ぐらい、価格.comで一番安いものでも20,000円強なのでかなり安くなっています。 HUAWEIは、アメリカの制裁関連でいろいろありますが気にしません。根拠はないですが影響ないと思っています。仮にあったとしても、OSのバージョンがアップグレードできないぐらいで使用はできるはずなので買うことにしました。

月々の基本料金

キャンペーンのおかげで2年間320円割引です。今回、3GB/月コースを選びます。1,800円→1,480円になり、まぁまぁ安い。でも、今で月1,400円 + 通話料なので気持ち高くなりますが、端末代を考えれば十分でしょう。

※追記 この料金は税抜だったので、税込1,598.4円と書いてありました。完全に見落としていました。1,600円なら、110MB/日のプランの方にしたほうが良かったかも。。。

気になる点

  1. 通信速度

通信速度

気になるのは平日の昼・夜の遅さ。NifMoも十分遅いが、それ以上だと嫌だなーと思ってる。場合によっては6ヶ月後にまた解約しようと思う。

申し込み~開通までの日数と手続き流れ

忘れないようにメモします。

2019/08/03 16:04

NifMo MNP転出受付

2019/08/03 21:57

NifMo MNP予約番号が発行される

2019/08/03 22:22

【OCN】お申込受付のお知らせ

2019/08/08 15:00

スマートフォン受け取り完了 OCNから「OCN会員登録証」が来ていないためMNP開通手続きはできず。

2019/08/11 15:00

「OCN会員登録証」の書類がいくら待っても来ないため改めて確認したところ、郵送ではなくWeb交付だったらしい。 確かにPDFファイルをダウンロードした記憶がある。。。見てみるとまさに欲しかった情報だった!

  • OCN自動チャットによるお問い合わせの回答

    「Web表示(電子交付)」をご選択のお客様は、PDFでの会員登録証のダウンロード画面が表示されダウンロードしてご確認となります。

    「Web表示(電子交付)」にデフォルトでチェックが入っている仕様となっている為、どちらをご選択したかや「郵送」を選択した覚えがないお客様の場合は、PDFでのダウンロード画面が表示された際に、ダウンロードし忘れている可能性がございます。

    恐れ入りますが、再度ダウンロードすることはできませんので、再発行は書面での発行となります。

http://s.ocn.jp/mnp01 にアクセスして「MNP開通のお申込み」を行った。 ログインには「OCN会員登録証」の「■OCNメール」にあるメールアドレスとパスワードを入力すればOK。

これで無事申し込み完了!!!

あとはOCNでんわかけ放題とマイセキュアの解約を忘れずにやる。解約手続きの方法は以下サイトの通りにやったらできました。