Qiitaの全てのタグが一覧になっているページ

Qiitaの全てのタグ一覧はこちら
http://qiita.com/tags

この記事を書いている現在ではQiitaのフッタにあるリンクの「タグ」という所から行けた。僕がQiitaに登録した時はフォローするタグがいろいろ表示され、その中からフォローするものを選ぶ感じだが、実際は他にタグがあるんだなあという感じだったんだけど、ここに全部あったんですね。さっそくフォローしてみよう。

Photoshop CCのスライスツールの線を消す

スライスツールの線を消すにはPhotoshopの上部メニューにある「表示」の中の「表示・非表示」の中のスライスの選択を取るとスライスによる線が消える。

スライスツールによる選択線があると選択して特定の箇所(レイヤーをまたぐ)のサイズを測るときにスライスによる選択線に引き寄せられピクセル単位で選択することが難しくなる。

SlackのAPIを使ってPHPで投稿する

SlackにAPIから投稿するにはIncoming WebHooksを使います。Slackの左上の設定メニューからApps & integrationsをクリックしSlackのApp Directoryに移動します。検索フォームがあるのでIncoming WebHooksと検索するとIncoming WebHooksの設定ページが出てきます。後は質問に答えてWebHook URLをもらいましょう。

PHPのサンプルはこちらのコードをベースにし、SSLの設定はこちらを参考に付け加えました。おそらくSSLの設定が必要だったのはPHPのバージョンが違うのかもしれませんね。

<?php
file_get_contents(
'https://hooks.slack.com/services/hoge/hoge2/hoge3',
false,
stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode("テストメッセージ"),
],
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false
]
])
);

ちなみにSSLの設定を行わないと下記のようなエラーが出ていました。

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in xxxxx

Ubuntu 16.04のローカルVMで開発用のMariaDBを構築しホスト側からリモート接続する

UbuntuにMariaDBをインストールし、ローカルのMacからVMのデータベースにリモート接続できるようにしたいと思います。

インストール

まずはMariaDBをインストールします。通常はこれ一発で動きます。

sudo apt-get install mariadb-server

私は運が良いので、いきなり下記のエラーが発生します。

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

これは他のプロセスがaptを利用していることが原因のようps aux | grep apt | grep -v 'grep'でそのプロセスを確認できます。おかしなものがずっとプロセスを使っているならkillしても良さそうですが、私の環境では自動更新かなんかのか知らないものが勝手に動いていて、しばらくしたら消えるという謎の解決を遂げました。

リモートから接続するユーザーを作成する

UbuntuでDBサーバー(localhostのDBではない)を構築するのは初めてなのですが、どうやらデフォルトではUNIX_SOCKET Authentication Pluginというのが有効になっているらしく、早い話がrootでしかログインできない状態なのだそうです。実際にアプリケーションから利用するためのアカウントは別途追加していく必要があります。Redhat系に慣れているとこのあたり驚きましたが、安全でとても良いですね。

まずはrootでMySQLに接続します。

sudo mysql -u root

次にdevユーザーを作成し、今回は開発用DBなので全権限を与えつつ、ローカルマシンのネットワーク(この例ではVirtualBoxのネットワーク)からリモート接続できる権限を付与します。

CREATE USER dev IDENTIFIED BY 'dev';
GRANT ALL PRIVILEGES ON *.* TO dev@'192.168.33.%' identified by 'dev' with grant option;

そして、ここがポイントなのですがCentOSの時はファイアーウォールでポート解放を行っていたのだが、Ubuntuでは特にファイアーウォールはデフォルトでは動いていないのに接続できず。しばらく調べてみたらどうやらbind-addressを設定ファイルに追加する必要があるようです

sudo vi /etc/mysql/my.cnf

以下の項目を追加します。

[mysqld]
bind-address = ::

そして再起動します。

sudo service mysql restart

ホスト側から以下のようにして接続できるはずです。

mysql -h dev-db.local -udev -pdev

avahiを使ってローカルDNSを立ち上げる事なくRaspberry Piにホスト名を割り当てる

avahiを利用します。まずは以下のようにしてインストールします。

sudo apt-get install avahi-daemon

下記のホスト名を変更します。

sudo vi /etc/hostname

同じようにhostsに172.0.1.1として変更後のホスト名を記述します。

sudo vi /etc/hosts

既存の値を変更する時はいろいろ試しましたがよくわからず。ホストを再起動することでとりあえずは解決しました。

参考

http://raspi.uassist.co.jp/recepi/host-name-setup/

GitでSVNみたいにリポジトリの特定フォルダのみをcloneする

一旦cloneしてくる必要があるので、巨大なリポジトリなので一部フォルダだけを落としたいといった使い方をしたい人には向いていない。

git clone https://github.com/project/x.git
cd x
git config core.sparsecheckout true
echo infra/web > .git/info/sparse-checkout
git read-tree -mu HEAD

あとからファイルが追加になった場合は以下のように先程追加したファイルを編集してリポジトリを更新する。

vi .git/info/sparse-checkout
git read-tree -mu HEAD

私は個人でやっている複数の細かいアプリケーション郡とそれを支えるインフラ郡の設定ファイルを一つのリポジトリにまとめた時、サーバー側には設定ファイル郡だけをcloneして使うために役立った。

参考

http://qiita.com/icoxfog417/items/8b16681213d0fd33602c

Gradleでmvn installと同様の事を行い他Gradleプロジェクトからローカルリポジトリの依存関係を利用する

gradle installを実行してもローカルリポジトリに登録されない

Gradleでmvn installと同じ事をしたかったが、gradle installを実行してもm2ディレクトリに格納されなかった。格納されなかったことを確認する方法としては直接m2ディレクトリ内の該当の場所を見に行った。
いろいろ試行錯誤したところ下記のプラグインをbuild.gradleに追加してからgradle installを実行したらうまく行った。

apply plugin: 'java'
apply plugin: 'maven'

Gradleでローカルリポジトリを読んでくれない

mavenLocalを利用することをこのように記載すれば読んでくれる。

repositories {
mavenCentral()
mavenLocal()
}

これを追加しても読まれない場合は記述場所を確認してみる。私は当初buildscript.repositoriesに記載しているのみで、直下のrepositoriesに記載することができておらずうまく動作させることができていなかった。