動かざることバグの如し

猫ゆえに。。。

Google Text To Speech APIをcurlで実行してみる

Mac or Linux環境で動く 必要なもの curl jq macならbrew install jq mp3が再生できるやつ macならbrew install mpg123 GoogleのAPIキー GCPの管理画面->認証情報から「認証情報を作成」→「APIキー」を選択 生成されたキーを控えておく コード #!/bin/bash t…

GCPのインスタンスを生成するコマンド

コード PROJECT=myproject NAME=db01 TYPE=g1-small DISK_SIZE=10GB ZONE=asia-east1-a gcloud compute --project $PROJECT \ instances create $NAME \ --zone $ZONE \ --machine-type $TYPE \ --tags http-server,https-server,trains \ --image-family ub…

Rails 5.2の新機能Credentialsでパスワード等を管理する

環境 Rails 5.2 要点 今までのsecrets.yml および rails secrets:xxxx方法は非推奨 今後は rails credentials:edit で秘匿情報の編集ができる 暗号化されたファイルはconfig/credentials.yml.enc 複合キーはconfig/master.key もちろん.gitignoreされている…

Javascriptで生成したHTMLをiframe内で表示させる方法

参考リンク曰く、「かなり限られたユースケース」に遭遇してしまったためメモ コード var iframe = document.getElementById('myframe'); var html = '<h1>こんにちはせかい</h1>'; var blob = new Blob([html], { type: 'text/html' }); iframe.src = URL.createObje…

Ubuntu 16.04を2TB以上のディスクにインストールする際の注意点

環境 Ubuntu 16.04 2TB以上のHDD 結論 バグ?というか2TB以上のHDDにUbuntu 16.04をカスタマイズしたパーティション構成でインストールしようとするとコケる が、後述するコマンドで対策可能 経緯 2TBのディスクにUbuntuをインストールしようとしたが、何…

花粉飛散量の過去データを取得できるサイト一覧

花粉の推移って予測だとか分析にもってこいの話題なのでは!?と思ってググったけどなかなか天気と違っていい感じのがない。 はなこさん 「花粉 データ」でググると最初にでてくる環境省花粉観測システム(はなこさん)。いったい何世代前のWEBシステムなん…

ARCHISS ProgresTouch RETROがREALFORCEジェネリック版ぽくて良い

先週秋葉原散策している途中にツクモでキーボードを買った。「ProgresTouch RETRO」ってやつで個人的には初の赤軸。 ARCHISS ProgresTouch TKL ワイヤーキープラー付 日本語91 二色成形 PS/2&USB CHERRY赤軸 テンキーレスメカニカルキーボード AS-KBPD91/LRB…

ASUS Tinker BoardをAmazon.comで格安で購入できた話

ASUSが出しているTinker Boardというシングルボードコンピュータがある。 この手のものだとRasberry Piが一番有名だが、Tinker BoardはRaspiよりCPUやメモリがめっちゃ高性能 が、そのかわり高い(当然だが Amazon.co.jpで買うと 現在AmazonでTinker Boardを…

Jqueryを使わずにリンク先のURLを一括置き換え

GTMでJQuery使おうとしたら$なんてねーよっtw怒られた そりゃそーか コード var links = document.querySelectorAll('a'); Array.prototype.forEach.call(links, function (elm, i) { elm.href = "http://stackoverflow.com"; }); 動作サンプル そんなに難…

kotlin-Androidでテキスト入力ダイアログを表示する

環境 Kotlin 1.2 AndroidStudio 3.0 コード 抜粋にて表示ID=mybtnのボタンをクリックしたときにダイアログが出て、OK押すと入力した文字列でトースト表示 val mybtn = findViewById<Button>(R.id.mybtn) mybtn.setOnClickListener { val myedit = EditText(this) val</button>…

kotlin-AndroidでHTTPで取得したデータを表示する

環境 Android Studio 3.0 Kotlin 1.2 やりたいこと URL指定したらHTTPリクエストしてデータを取得、表示まで 基礎を学ぶようなので必要最低限のコードのみ ライブラリの追加 自分でゴリゴリHttpURLConnection書くのはツラみがあるのでokhttpというライブラリ…

はてなブログの読者数を取得する隠しAPI

http://blog.hatena.ne.jp/api/init?blog=取得したいブログのTOPURLではてなブログの読者数を取得できる。 一部オプションは必要(下記参照 認証不要 独自ドメインのブログでも可 認証不要はデカい。結構使えそう curl -H "X-Requested-With: XMLHttpRequest"…

Imagemagickで画像の上下左右に余白を追加する

言わずと知れた最強画像処理コマンドImagemagickのネタ やりたいこと 画像の上下左右に白の余白を追加したい 最終的には画像の解像度は変更せずに余白を追加したい(つまりオリジナルの部分は小さくなる 失敗例 「imagemagick 余白」で検索すると余白追加に…

Kotlinのvarとvalの違い

ハンズオンやったはずなのに勘違いしてた( えっとvalは再代入不可でvarが再代入可能 varの場合 val num = 1 num = 334 Main.kt:4:1: error: val cannot be reassigned num = 334 ^ varの場合 varの場合ってシャレではない var num = 1 num = 334 これはエラ…

Galaxy S9をMicrosoft Storeから個人輸入すれば格安で買えるのでは

今年発売のGalaxy最新モデルことGalaxy S9。S8の焼き直しモデルとかボロクソ言ってる記事もあるが、個人的にはCPUのスペックも上がってるし、なにより指紋認証の位置が届きやすい位置に変わったというのは結構デカいと思う でこんな記事を見つけた。なんとMS…

Rubyで配列内の文字数出現回数を集計する

ary.group_by(&:itself).map{|k, v| [k, v.size]}.to_h でいける irb(main):010:0> ary = %w"a b b a c" => ["a", "b", "b", "a", "c"] irb(main):011:0> ary.group_by(&:itself) => {"a"=>["a", "a"], "b"=>["b", "b"], "c"=>["c"]} irb(main):012:0> ary.g…

ダミーのGitHub芝生画像を生成するライブラリたち

はてなブログ芝生で使ったのでメモ Ruby akerl/githubchartでいける gem install githubchartをして githubchart -i example.json example.svg でおk。入力のJSONファイルはgithubchart/input.jsonを参考に。出力はSVGのみ コマンドじゃなくてRubyから呼び…

ImageMagickでSVGをPNGに変換するとエラーになる話

mac

環境 Mac OS Sierra ImageMagick 7 (6でも同様 SVG→PNG 手元にsvgファイルが有って convert example.svg -resize 300x400 example.png ってやっても convert: non-conforming drawing primitive definition `Segoe' @ error/draw.c/DrawImage/3259. って言わ…

vagrant box updateでエラー「An error occurred while downloading the remote file」

ふと、bento/ubuntu-16.04のVagrant boxをアップデートしてやろう思って vagrant box update したが、エラーになって何回やってもできない An error occurred while downloading the remote file. The error message, if any, is reproduced below. Please f…

2018年に軽量CSSフレームワークを選ぶなら「milligram」

css

個人でサクッとサービス作りたいときに、毎回Bootstrapだと飽きてきたのでちょっと浮気してみたメモ。 ここでいう軽量とは シンプル、最小限を目指したCSSフレームワークのこと CSSフレームワークのくせにJavascript必須とか論外 Bootstrapより機能少なくて…

telnetコマンドが無いときはcurlで代用

mac

macOS High Sierraではtelnetコマンドが消えたらしい macOS High Sierraで消されたftpとtelnetを復活させる - Qiita あ、はい が、ポート開放できるかの開放にtelnetコマンドはよく使うのでないのは困る。もちろんbrewでインストールするのもありだけど他人…

td-agentで動的なIndexでElasticsearchにデータを流す

やりたいこと Railsのログをtd-agentを使ってElasticsearchへ流しているのだが、indexの名前を日付に紐付かせて動的にしたい。 例えばindex_nameがrailslogだとrailslog_2018みたいにしたい やり方 普通 index_name railslog だが、 index_name railslog_%Y …

RailsでURL生成するときに必ずhttpsにしたい

Railsで posts_url みたいにヘルパーを使ってルーティングからURLを生成する際、デフォルトだとhttpsならhttpsで、httpならhttpのURLになるが、 明示的にhttpsにさせたい場合、 <%= link_to 'りんくだよ', posts_url(protocol: 'https') %> でいける。 どう…

nginxに長いURLをリクエストすると414 Request-URI Too Largeエラー

症状 nginxに長いGETパラメーター(1000文字以上)を含むURLをGETで渡すと以下のようなエラーになる。 414 Request-URI too large 原因はもちろんGETパラメーターが長すぎるのだが、仕様上POSTに変更できない場合、nginxの設定を書き換えるしかない 対処方法…

Rubyで文字列からURLのみを削除する

やり方は以下 require 'uri' text = <<~EOL 夏目漱石: http://www.aozora.gr.jp/index_pages/person148.html 森鴎外: https://ja.wikipedia.org/wiki/%E6%A3%AE%E9%B4%8E%E5%A4%96 EOL URI.extract(text).uniq.each {|url| text.gsub!(url, '')} puts text …

巨大レコードのkaminariページネーションは工夫が必要

railsネタです kaminariが重い kaminariとは言わずと知れたRubyのページネーションライブラリ。Railsとの親和性が非常に高く、ソースコードをちょちょっと弄るだけで難しいページネーションが作れる。 が、ページネーション対象のデータの件数が多いと(10…

MySQLでJSON型から取得したデータを加工できない件

問題点 MySQL5.7からはJSON型をサポートしており、JSON型のカラムから「〜の要素よこせ」ってSQL送るとJSONの中から、その要素のデータのみを取得できる。それ自体はけっこう便利なのだが、そのデータを加工しようとしたらコケたのでメモ JSON_EXTRACTを使っ…

MySQLでn分前, n時間前, n日後の日時を取得する

MySQLではプログラミング言語のように日時に四則演算子である、+や-を使って計算することができる。あとはどのくらいの期間の指定にINTERVALを使ってあげればおk 確認環境 MySQL 5.7 1時間前の日時を取得する SELECT NOW() - INTERVAL 1 HOUR; 7日後の日時…

GCPのMySQL設定一覧を書き出してみた

gcp

Cloud SQL is 強い GCPのCloud SQL使ってみてるのだが、重い処理走らせても結構軽い。自分でMEM2GBのVPS借りてMySQL構築するより快適なので、MySQLの設定がやはりキモなんじゃないかと思い、設定を書き出してみた。 インスタンス環境 MySQL 第 2 世代 db-g1-…

GAE(flexible environment)にflaskをデプロイする

まずはrequirements.txtを用意 Flask==0.12.2 gunicorn==19.7.1 gunicornはGAE上で使用するwsgiアプリケーション 実際のプログラムがないと始まらない。ってことでmain.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): retu…