緯度経度の精度

GoogleMap上に、図形などをマッピングしていると緯度経度のデータが増えて重くなる。一番お手軽なデータ削減方法は、緯度経度の桁数を削ることだ。

qiita.com

5〜6桁もあれば日常のユースケースに対応出来そうですね。

5桁で精度11m。6桁で精度11cm。6桁もあればほとんどのケースで十分だろう。

UbuntuでWifi高速化

Wifiの速度を上げるため、Wifiの電力管理機能をOFFにする。

$ iwconfig
wlp8s0    IEEE 802.11  ESSID:"xxx-xxx-xxx"  
          Mode:Managed  Frequency:2.452 GHz  Access Point: XX:XX:XX:XX:XX:XX   
          Bit Rate=43.3 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=38/70  Signal level=-72 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:213   Missed beacon:0

Power Management:on を確認したので設定を変更する。

/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf を開き次のように修正する。

[connection]
wifi.powersave = 2 

2(disable powersave)に変更してPCを再起動させる。

ただし、あまり効果は感じられない。次回は設定しなくてもいいかな。

imagemagicで画像の一括リサイズ(名前も変更する)編

次のフォルダ構成に格納されている画像を

g
├── x001
│   ├── 0.png
│   ├── a.jpg
├── x002
│   ├── b.jpg
└── x003
    ├── 0.jpg
    ├── 1.jpg

こんな感じにしたい。

g
├── x001
│   ├── 0.png
│   ├── 0_300x300.png
│   ├── a.jpg
│   ├── a_300x300.jpg
├── x002
│   ├── b.jpg
│   ├── b_300x300.jpg
└── x003
    ├── 0.jpg
   ├── 0_300x300.jpg
    ├── 1.jpg
   ├── 1_300x300.jpg

次のようなコマンドになる。

find . -regex "\.\/.*\/[0-9]*\..*" | xargs -P8 -I{} convert {} -set filename:x "%d/%t_300x300.%e" -resize 300x300 "%[filename:x]"

それぞれ解説。

対象画像のリストアップ

findコマンドで正規表現を利用する - 屑プログラマの憂鬱 を参照

xargsを使ってImageMagickに渡す

pipeを利用すると、findの結果数が多くて処理が落ちてしまうので、xargsを利用してImageMagickに一つ一つ渡してあげます。

xargs -P8 -I{}

-P8 は、プロセスの並列数です。ImageMagickのconvertが並列で8つ立ち上がります。PCの性能が許す限り増やしていきましょう。

-I {} は、findの実行結果であるファイル名が入る置換文字列を利用するというオプションです。

ImageMagickでリサイズする

ImageMagickのconvertを利用します。基本的なリサイズ方法としては次のとおりです。アスペクト比を保ちつつリサイズしてくれます。

convert input_file -resize  (width)x(height)  output_file

ファイル名を変更する場合は、次のようになります。

-set filename:x "%d/%t_300x300.%e"で、filename:xという変数に"%d/%t_300x300.%e"を代入し、出力ファイル名として、\"%[filename:x]"(filename:xという変数そのままを出力結果とする)としています。

  • %dは、対象ファイルのディレクトリ名
  • %tは、対象ファイルのファイル名。ただし、ディレクトリと拡張子を除く
  • %eは、対象ファイルの拡張子

他にも属性は存在して、Format and Print Image Properties @ ImageMagick にまとまっています。

findコマンドで正規表現を利用する

次のようなフォルダ構成があります。

g
├── x001
│   ├── 0.png
│   ├── a.jpg
├── x002
│   ├── b.jpg
└── x003
    ├── 0.jpg
    ├── 1.jpg

0.jpgや0.pngのようなファイル名が数字のものをリストアップさせる場合、findで正規表現を利用します。

find . -regex "\.\/.*\/[0-9]*\..*"
./x001/0.png
./x003/0.jpg
./x003/1.jpg

なお、「./」もヒットさせる必要があることに注意。これで時間を無駄に使いました。

RubyでCSVファイルに記載されたURLの画像をダウンロードする

書捨てのプログラムを作成したので貼る。

require 'csv'
require 'fileutils'
require 'open-uri'

csv_data = CSV.read('image_url.csv')
puts "start..."

csv_data.each do |data|
  id = data[0]
  url = data[1]
  sleep(2) #2秒待つ

  FileUtils.mkdir_p("./images/#{id}")
  begin
    open(url) do |file|
      open("./images/#{id}/0.jpg", "w+b") do |out|
        out.write(file.read)
      end
    end
  rescue OpenURI::HTTPError => e
    p e
  end


  p data
end

puts "complete!"

ビジネスエアポート東京という皇居の濠端を臨むレンタルオフィス

business-airport.net

JR東京駅からも徒歩7分とアクセス抜群で、「移動に便利」「お客様を招きやすい」と好評です。皇居の濠端を臨むロケーションにあり、ラウンジから見える豊かな緑が癒しを与えてくれます。

皇居の濠端を臨むという最高なロケーションだったので利用してみた。

会員でなくても一日5000円で利用可能。

安くない金額だが、皇居の濠端を臨みながら行う仕事は、エリートになった気分です。ただ、安価でいい場所は他にもありそう。

Laravelのベストプラクティス

Laravelの開発におけるベストプラクティスがまとめられている。

It's not a Laravel adaptation of SOLID principles, patterns etc. Here you'll find the best practices which are usually ignored in real life Laravel projects.

github.com

有益な情報がコンパクトにまとまっていて良い。

知っている内容は多かったが、LaravelからJavascriptにデータを渡す際に次のようにするのは新しい知見だ。Jsのオーバーヘッドは気になるが、確かにJsonで渡せば型情報を渡せるわな。

<input id="article" type="hidden" value="@json($article)">
let article = $('#article').val();