2015年11月3日火曜日

ebayで買ったレコードがなかなか届かない

毎月、少しずつレゲエのレコードを買っているのですが、たまには思い切ってまとめ買いをしてみようと思い、ebayで100枚セットを注文してみました。

ebayで買い物をするのは、今回が初めてなのでどういった流れになるのかも、まったく把握できていない状態で購入したのは良くなかったなと思いつつ、ステータスの変更を待つことに。

9月6日の購入から19日後の9月25日に、paypalから発送メールが届きました。

そのメールの本文に、配送業者とトラッキングコードが掲載されています。

配送業者:  UPU
配送トラッキング番号: CPxxxxxxxxxJM

海外から買い物をするのも初めてなので、UPUという配送業者すらわからなかったのですが、調べたとこと万国郵便連合(Universal Postal Union)ということがわかりました。

業者がわかったので、早速トラッキングコードを調べられるページを検索したところ、すんなり発見。

Grobal Track And Trace <http://globaltracktrace.ptc.post/gtt.web/>

発送メールが届いたため、トラッキングできるはずということで、検索するも何も検索されません。

その後、3日間くらい試したのですが、まったく検索されず不安に。

しばらく期間をおいて、10月のはじめ頃に検索したところ、検索にヒット!


英語を調べつつ内容を確認したところ、10月1日にどうやらKINGSTONを出発したことまで把握できました。

ここでの疑問は、この先は空路なのか海路なのかということです。考えてもわからないので、もうしばらく様子を見ることに。

2週間くらい経って、たまたま調べてみると…

日本に到着!待ってました!!


川崎についたってことは、海路で届いたということなのかな?

結局、ルートは不明ですが、日本の郵便システムは素晴らしいので、日本についてからはすぐに我が家へ。

とにもかくにも、無事に届いて良かったです。

あとあとわかったため、どのタイミングから確認できるかわかりませんが…

下記の郵便局のサイトを使えば、日本語の検索もできました!


2015年10月15日木曜日

MacBook Pro が突然再起動する原因が判明

MacBook Proを使っているのですが、まれに落ちることがあります。

たまに頻発するときがあり、原因を知りたいなと思いつつも放置していたところ、思わぬところで原因を発見しました。

このPCで使っているウィルスソフトは、ESET Cyber Security Proというものなのですが、インストールされているバージョンによってはカーネルパニックが発生するというドキュメントがあったのです。

OSが不正終了(Kernel Panic)する現象について(http://eset-support.canon-its.jp/faq/show/1689)

ここでの対象が下記の2つのバージョン

・ESET Cyber Security Pro V6.0.9
・ESET Cyber Security V6.0.9

ということで、自分の環境を調べてみたところ…

6.0.9.1になっており、ドンピシャでした。。

上のリンク先から、新しいバージョンをインストールできたので、対策はすぐに完了。

あとは、もう起こらないか経過をみるだけです。

ちゃんと原因を調べれば、もっと早く解決できたかもしれないなと、ズボラさを反省しました。

2015年9月5日土曜日

RGB値をUIColorの値に変換するツールをJIMDOで作ってみた

iOSアプリのUIColorを設定するときに必要な数値をRGB値から変換するツールをJIMDOに作ってみました!

RGB to UIColor Convertor
http://uicolor-convertor.jimdo.com

入力ボックスに16進数のRGB値を入力すると、UIColorで設定する値に変換します。

JIMDOを初めて使ったのですが、テンプレートを選んでちょっと変えるくらいなら、とても簡単なのでスムーズにできました。

知らないだけで、便利なものはいろいろあるんだなと感じました。。

2015年9月4日金曜日

gitで使い終わったブランチをローカル / リモートから削除

いままで、あまりgitを使っていなかったのですが、本格的に使うようになり、やらかしてしまったので、ブランチの削除についてまとめます。

そもそもなにをしてしまったかというと、リモートのブランチをWEBサービス上で消したら、ローカルからpushできなくなるという事象です。

楽しようとしたが故の失敗でした。
ということでまとめていきます。

まず、いまあるブランチを確認するgit branchにオプション-aをつけるとリモートのブランチも表示することができます。

$ git branch -a
master
feature-temp
remotes/origin/master
remotes/origin/feature-temp

上の2行がローカルのブランチで、remoteから始まる下の2行がリモートのブランチです。

今回は、feature-tempブランチを削除をしてみたいと思います。

まずは、ローカルのブランチを削除します。

$ git branch -d feature-temp
Deleted branch feature-temp (was 87047b1).

削除するときは、git branchコマンドに-dオプションをつけ、最後に削除するブランチ名を指定します。

これで、ローカルは削除できたので次はリモートを削除します。

リモートのブランチを削除するときは、下記のように削除したブランチ名の先頭にリモートブランチを指定するために「:」をつけてpushします。

$ git push origin :feature-temp
To https://your-repo.git
 - [deleted]         feature-temp

コマンド実行後にdeletedが表示されれば正常に削除完了!

ローカルだけ削除して、リモートを削除し忘れるとよく分からないことになるので、今後も気をつけようと思います。

2015年8月20日木曜日

Symfony 1.4でDQLをSQLにパース

Symfony 1.4をDoctrineで使っているアプリケーションで、もともとDQLのものを生SQLにしたいことがあったので、調べていたところ、パース方法をまとめているのを見つけました!

Raw SQL from Doctrine Query Object - Revised
http://insidethe.agency/blog/raw-sql-from-doctrine-query-object-revised

このサイトの記事自体が古いので、split()を使っているのですがPHP 5.3.0からは非推奨になっているため、preg_split()に書き換えると問題なく動きます!

$query_str_parts = preg_split('/\?/', $query_str);

こんな感じです!

更に、カラム名のリネームを削除したい場合は、preg_splitの前(16行目)に下記を追加するとできます。

$query_str = preg_replace('/AS\s\`[0-9a-z!-~]*\`/', '', $query_str);

リファレンスを確認しつつ、パースできないかやっているときに発見したので、とても助かりました。

2015年8月13日木曜日

MySQLで抽出したデータをcsvに保存する方法

MySQLで抽出したデータをcsvに保存する方法を忘れないようにメモ!

SELECT * FROM table
INTO OUTFILE "/path/to/save/dir/output.csv"
FIELDS TERMINATED BY ',';

不意にcsvに出力する必要が出てくることもあるので、しっかり覚えておこうと思います。

2015年5月30日土曜日

PHPでzipファイルを解凍する

phpでzipファイルを解凍したいときにZipArchiveクラスを使うと簡単にできることを知ったので方法をメモ!!


$zip = new ZipArchive();
$res = $zip->open('file.zip');

if ($res) {
    $zip->extractTo('unzip_dir/');
}
$zip->close();


phpinfo()でzipの項目がない場合は、zip拡張を読み込むことで使えるようになります。

2015年3月1日日曜日

Laravel4.2で独自ヘルパーを作成してautoloadする

たまにだけしかできていないですが、laravelの勉強をしていて独自ヘルパーを読み込めるようにしたいと思い、調べてみました。

どんなときにヘルパーを呼び出したかったかというと、セレクトメニューなどで表示する項目は文字だけど、DBに登録するのが一意の数字のときに、ビューで表示したい項目の番号をヘルパーに渡して、表示したい文字列に変換したいときなどです。

まず、ヘルパー用のhelpersディレクトリをappディレクトリ配下に作り、その配下にファイルを作成します。

$ mkdir app/helpers
$ vim app/helpers/HelperDemo.php
<?php
function demo()
{
    return "OK";
}

今回は呼び出せるかを確認したいので、OKを返すようにしておきます。ファイルを作成できたら、オートロードするようにcomposer.jsonを変更します。

$ vim composer.json
"autoload": {
      "classmap": [
           "app/commands",
           "app/controllers",
           "app/models",
           "app/database/migrations",
           "app/database/seeds",
           "app/tests/TestCase.php"
      ],
        "files": [
            "app/helpers/HelperDemo.php"
        ]
}

記述を追加するのは、autoloadの中にfilesという名前で要素を作成し、読み込みたいファイルまでのパスを記述します。

composer.jsonの変更が完了したら、dump-autoloadして読み込めばdemo()メソッドは呼び出すことができるようになります。

ヘルパーを複数作る可能性があるので、クラスのようにディレクトリを指定して、ディレクトリ内のファイルを全部読み込むことができれば良いなと思いました。

知らないだけでできるのかもしれませんが…

2015年2月17日火曜日

EC2のインスタンスにsshで接続できなくなった

先日、AWSのEC2でたてた、t2.microインスタンスでnginxとphp-fpm、MySQL、memcacheを動かすWEBサーバの設定をしてみました!

金曜日に設定し、土日は放置して月曜日に接続しようとしたところ、突然SSH接続ができなくなりました…。

環境構築がとても苦手なので、このまま接続できなかったらどうしようと不安が募ります。

不安になっていても、サーバは受け入れてくれないのでできることはしようと、表示された下記のエラーを調べてみることにしました。

$ ssh -i .ssh/ssh.pem ec2-user@***.***.***.***
shell request failed on channel 0

エラーの内容について、調べてみるとセッション数が多いのではないか?などの情報があったのですが、接続できるのは自分だけだったため、その可能性は低いなと感じました。

その後も調べていたのですが、あまり良い情報がなかったため(恐らく検索方法が悪かった)、ダメ元で再トライ!

 すると…

$ ssh -i .ssh/ssh.pem ec2-user@***.***.***.***
Last login: Mon Feb  9 11:12:21 2015 from ***.ap.plala.or.jp

       __|   __|_   )
       _|    (      /    Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
/bin/bash: Cannot allocate memory
Connection to ***.***.***.*** closed.

今度は、一瞬接続できたのですが、すぐに切断されてしまいました。。

まったく原因がわかっていなかったので、とても焦っていたのですが、一瞬接続できたときになにやらエラーらしきものが表示されていました!

/bin/bash: Cannot allocate memory

エラーからもわかるように、メモリ不足で接続ができないということだったようです‼︎

原因がわかり、sshではどうしようもないと思ったので、AWSのコンソールからインスタンスを再起動したところ、無事に接続できるようになりました!

再起動後になにが重かったのか調べてみたところ、MySQLが重かったようです。。

ということで、今回はt2.microだとLEMP + memcacheはちょっとパンパンということがわかりました!

2015年2月1日日曜日

スマホサイトのファイルアップロードボタンをCSSでデザイン変更

仕事でスマホサイトのアップロードボタンを作成したときに、少し躓いたことがあったのでまとめてみようと思います。

そもそもデフォルトのデザインから変更できるのか?という疑問があったのですが、いろいろなサイトで変更されていることもあるので、とりあえず調べてみました。

ざっくり調べて、ざっくり理解したところによると… 

ボタンとinputタグを別に記述して、javascriptでイベントを実行する!

これで出来るだろうと思ったので、ボタン部分をpタグで作成してinputタグをcssのdisplay: noneで非表示に変えて、jQueryでイベントを発生させる方法で進めることにしました。

そして、最初にできたコードが下記になります。

■HTML
<input type="file" id="decorate">
<div class="upload">
    <p>UPLOAD</p>
</div>

■JS
$(document).ready(function(){
    $('.upload').on('click', function(){
        $('#decorate').trigger('click');
    });
});

■CSS
#decorate {
    display: none;
}

.upload {
    border: solid 1px #a3ffa3;
    background-color: #b7ffb7;
    width: 200px;
    text-align: center;
    border-radius: 10px;
}


inputタグには、idをつけておきCSSでdisplay: noneすることで、inputタグはあるけど表示していない状態にしています。

JSでは、classにuploadが指定されているdivタグがクリックされたときに、非表示にしてあるinputタグに対して、clickイベントを発生させるようにしてあります。

この部分が完成して、iPhoneで確認したところ無事に想定通りの動作をしてくれました!

iPhoneでの確認ができて、意外と簡単にできたなーと思いながら、Androidで確認してみると…

事件が発生しました。

何度、ボタンを押してもなにも起こらない。。

うんとも、すんともいわない。

ガーンッと意気消沈しながらも、なにが問題なのかを確認するためにdisplay: noneをコメントアウトして確認してみると、ファイルを選択できることが発覚!

ということは、display: noneだとAndroidはダメなのか。。詰んだな。

一瞬、うん、諦めようという思いが湧いたような湧かなかったような…と、どうでも良い間がありつつ再度、調べてみると初見のvisibilityというプロパティを発見!

ざっくり説明するとdisplay: noneは、要素自体がなくなってしまうのですが、visibility: hiddenの場合は要素を残したまま非表示にすることができるというものです。

ということで、早速、display: noneからvisibility: hiddenに変更

■CSS
#decorate {
    visibility: hidden;
}

頼む!と思いを込めて、ボタンをタップすると…

無事にファイルを選択できました!

ほっと安心するも、非表示にしただけなのでデフォルトのサイズ分要素が存在していて、その部分が空白になってしいました。。

新たな問題発生。ですが、これはサイズを0にすれば大丈夫だろうと思ったので、cssでheightとwidthを0pxに変更

■CSS
#decorate {
    visibility: hidden;
    height: 0px;
    width: 0px;
}


もう一度、確認してみるとAndroidは想定通りだったのですが、iPhoneは変わりませんでした。。

ChromeのWEBインスペクタで確認してみると、各プロパティは適用されていることになっているのですが、見栄えはNG。

0pxがダメなら、1pxはどうなんだろうと思い1pxにしてみると今度は想定通りに変更することができました。

visibilityで非表示にしているので、1px存在してもボタンと重なる位置であれば、大丈夫なので、1pxを設定することにしました。

ということで、完成した最終版は下記のような感じになります。(CodePenを使ってみたかったので使ってみました)

See the Pen pvPKEP by masahiro (@masahiiiro) on CodePen.


AndroidとiPhoneでちょいちょいズレが生じるので、両方で問題がないかを確認するのは大変だなと、改めて思いました。

macOSでminikubeをインストールしようとしたら書き込みエラーになった

ローカル環境でKubernetesを使えるようにしようと環境構築中にエラーが 下記が今回のエラーで書き込みできない感じのメッセージが出ています。  $ brew install minikube Updating Homebrew... Error: The following ...