aswww log

エンジニアの技術録。アプリとかウェブとか

MacVimでfileformat=unixのファイルで改行を変換するには\n

WindowsGVimだと例えばfileformat=unixのファイルで改行を空白に変換したいときは

:%s/^M/ /g

もしくは

%s/¥(半角円マーク)n/ /g

でできた。
自分の今のMacOSX上にインストールしたMacVimの場合は

%s/\(半角バックスラッシュ)n//g

※\(半角バックスラッシュ)=option+¥(円マーク)

じゃないと変換できなかった。
他のサイトの記事によると¥nで置換できている人もいるので同じMacでもバージョンとか環境によって違うのかも?

Dockerで共有ディレクトリのパーティションを変更する方法

Docker上で以下を行っても反応無し。パーミッションも変わらない。

chmod -R 777 cache

共有ディレクトリはローカル側のディレクトリのパーミッションもそのまま共有されるようなので、ローカル側を以下のとおり変更

chmod -R 777 cache

dockerにsshしてみると777になっているはず

Stringの文字列中に複数個の文字列が一個でも含まれている場合、continueする

Q.$taisyoStringの文字列中に"ダメ"または"いらない"文字が含まれている場合、continueするphpプログラムを書きなさい。

A.
phpの文字列検出系関数の中で一番処理効率がいいのはstrpos関数らしいのでできるだけそれを使う。

  • 回答1.一番シンプルif文だけ
const DAME_MOJI="ダメ";
const IRANAI_MOJI="いらない"

if(strpos($taisyoString, self::DAME_MOJI) !== false or strpos($taisyoString, self::IRANAI_MOJI) !== false){
    continue;
}
  • 回答2.php5.6からconstでarray使えるようになったらしいからarrayで定義
const HUYOU_MOJIS = array("ダメ","いらない");

foreach(self::HUYOU_MOJIS as $huyouMoji){
   if(strpos($taisyoString, $huyouMoji) !== false){
        continue 2;
    }
}
  • 回答3.preg_matchで判断。一番短くてすむ
const HUYOU_MOJIS = "ダメ|いらない";

if(preg_match($taisyoString, self::HUYOU_MOJIS) === 0){
    continue;
}
//もちろん3項演算子でも可

and etc...

AndoroidStudioのAVDのkvmに関わるエラーでハマった件

先の記事、「AndoroidのAVDのためにcpu-checkerしようとしたらmysql-serverがエラー」はそもそも以下のAndroidDeviceManagerでAndroid6.0の端末をクリックした際に以下のエラーメッセージが表示されたことから始まった。

f:id:aswww:20160523215738p:plain

KVM is required to run this AVD.
/dev/kvm is not found.

Enable VT-x in your BIOS security settings, ensure that your Linux distro has working KVM module.

ここにはkvmが無いとのことなのでkvmを以下のサイトを参考にインストール。

How to Install KVM and Create Virtual Machines on Ubuntu

egrep -c ‘(svm|vmx)’ /proc/cpuinfo
sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager
sudo adduser name libvirtd
virsh -c qemu:///system list

ここまで記事通り。ただし、この後のCreating Virtual Machinesでまたエラーが発生。
[New VM]で新しい仮想環境を作ろうとしてもできなかった。Errorの内容は忘れてしまったが、とにかく「kvmを利用できません」みたいな内容だった。
以下のサイトを参考に調べると
KVM と /proc/cpuinfo の微妙な関係 | CUBE SUGAR STORAGE

BIOSのCPUの設定でVMを許可しなきゃいけないらしいのでBIOS起動。
ASUSの場合、BIOSの最初の画面はこんな感じ。

f:id:aswww:20160523225227j:plain

最初は簡易設定画面らしいので[Advanced Mode](詳細設定?)へ移動

f:id:aswww:20160523225319j:plain

[詳細設定]→[詳細]→[CPUの設定]→[Intel VT(Intel Virtualization Technology)]を[有効]に設定。
[退出]→[保存してリセットする]を選択して再起動。

改めてAndroidStudioを起動し、エミュレータを起動したら件のエラーは出なくなった。

AndoroidのAVDのためにcpu-checkerしようとしたらmysql-serverがエラー

AndoroidのAVDがうまく動かなく色々調べていたらcpu-checkerをインストールしたらいいらしいと各地の記事に書いてあった。が、何故かインストール時にエラーになる。
OSは先日Ubuntu14からアップデートしたUbuntu16.04LTS

sudo apt-get install cpu-checker
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:

(中略)

以下の追加パッケージがインストールされます:
  msr-tools
以下のパッケージが新たにインストールされます:
  cpu-checker msr-tools
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 15 個。
2 個のパッケージが完全にインストールまたは削除されていません。
17.5 kB のアーカイブを取得する必要があります。
この操作後に追加で 87.0 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu xenial/main amd64 msr-tools amd64 1.3-2 [10.6 kB]
取得:2 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu xenial/main amd64 cpu-checker amd64 0.7-0ubuntu7 [6,862 B]
17.5 kB を 1秒 で取得しました (14.3 kB/s)
以前に未選択のパッケージ msr-tools を選択しています。
(データベースを読み込んでいます ... 現在 1038687 個のファイルとディレクトリがインストールされています。)
.../msr-tools_1.3-2_amd64.deb を展開する準備をしています ...
msr-tools (1.3-2) を展開しています...
以前に未選択のパッケージ cpu-checker を選択しています。
.../cpu-checker_0.7-0ubuntu7_amd64.deb を展開する準備をしています ...
cpu-checker (0.7-0ubuntu7) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
mysql-server-5.7 (5.7.12-0ubuntu1) を設定しています ...
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: 接続を拒否されました
insserv: warning: script 'binfmt-support' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `binfmt-support'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `binfmt-support'
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: パッケージ mysql-server-5.7 の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
dpkg: 依存関係の問題により mysql-server の設定ができません:
 mysql-server は以下に依存 (depends) します: mysql-server-5.7 ...しかし:
  パッケージ mysql-server-5.7 はまだ設定されていません。

dpkg: パッケージ mysql-server の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
msr-tools (1.3-2) を設定しています ...
エラーメッセージは前の失敗から続くエラーであることを示しているので、レポートは書き込まれません。
                cpu-checker (0.7-0ubuntu7) を設定しています ...
処理中にエラーが発生しました:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

しばらくmysql事態触っていなかったので原因は不明。(Ubuntuのアップデート時に何かあったのかもしれない)
とりあえず現状のmysqlの状況を調べようと、とりあえずログインしようとしても以下のエラー。

mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

もちろんmysqldは動いていました。
埒が明かないので、以下のQAを参考に全部アンインストールしてから再インストールすることに。
mysqlの中身が消えてもいい状況なので。もし消えたらこまる場合は安易に再インストールしないほうがいいですよ)

Ubuntu日本語フォーラム / MySQLが起動できなくなりました。

sudo apt-get remove --purge mysql-server* mysql-common 
sudo apt-get autoremove
sudo apt-get install mysql-server

以下のコマンドでmysqlに繋がるようになり

mysql

無事cpu-checkerも正常に動くようになりましたよ。

MacにMacVimがインストールできなかった件

WindowsGvimが使い慣れているので、Macでも同じようなMacVimを使いたいと思い、インストール試みたがスムーズにいかなかった。
(結論的にはMacVim自身というよりはMacの設定の問題だった)

まず、以下にアクセス。

・香り屋さんのMacVim
https://github.com/splhack/macvim-kaoriya

インストールしていざ立ち上げようとしたら以下のエラーが出た。

"MacVim.app"は環境設定でインストールが許可されているのは、Mac App Store と確認済みの開発元からのアプリケーションのみです。

環境設定ということで[システム環境設定]→[セキュリティ]と[プライバシー]の[一般]タブを開き「ダウンロードしたアプリの実行許可」のラジオボタンを「すべてのアプリケーションの実行許可」を選択する。
以上であとは手順どおりにインストールできた。

今回たまたまMacVimだったけど他のAppStore未登録のアプリ等も同じようになったんじゃないかな。

Macのメモはメモ帳じゃない

最近参画したプロジェクトで人生初めて開発環境としてMac Book OSXが支給され、
Windows生まれWindows育ちからしたら色々と大変だったのでブログで色々書くことにします。

まず、MacにデフォルトでDock(画面下部にあるショートカットアイコン群)に入っている「メモ」機能は一見Windowsのメモ帳のようにテキストエディタとして使えるように見えるが、実はメモ帳とは少し違う。

どちらかというとWindowsの付箋紙のような雰囲気でわざわざ保存ボタンを押さずに終了しても作業内容は保存される。

ただし、あくまで付箋紙なのでテキストエディタのようにデスクトップに新しくテキストファイルを作成したり、名前を付けて保存するなどができない。
Macでテキストファイルを作成操作したい場合はデフォルトにある「テキストエディット」というアプリケーションを使用するといい。
(もちろん端末からviなどで作成しても良い)

どっちでもいいけどややこしいので名称統一してほしい。。。