旅好きエンジニアのメモ

旅のこと映画、統計、会計、プログラミングなど、気の向くままに語ります

プログラミング

Nuxt.jsをfirebaseにデプロイする方法

Nuxt.jsでアプリを作成する hogeがアプリケーション名です。 vue init nuxt-community/starter-template hoge セットアップ cd hoge npm install ローカルで確かめてみる npm run dev 下記にアクセスして問題ないか確かめます。 localhost:3000 firebaseを導…

Nuxt.jsでsvgを使う方法

Nuxtのlintの設定でsvgファイルは閉じタグが強制になっているのでlintを少しカスタムしてあげる必要がありました。 .eslintrc.jsに下記を追加してあげれば大丈夫です。 // add your custom rules here rules: { "vue/html-self-closing": ["error", { "svg":…

vueのプラグインの順番でハマった件

先日、vue-lazyloadを実装しようと組み込んだのですが、 Failed to resolve directive: lazyというエラーが出て機能しませんでした。 公式ページでプラグインを使用する場合は順番守ってね、ということでした。 https://jp.vuejs.org/v2/guide/plugins.html …

vscodeでgitlensが急に使えなくなったときの対応

他のプラグインでも同様の方法で解決できる可能性があります。 いったんvscode上でアンインストールをして、 下記の操作をして対象ファイルを削除するだけです。 環境はmacで行っています。(特に環境が問題になるような問題でもなさそう) $ cd .vscode/exten…

bottleでファイルダウンロード機能を追加する

bottleでファイルダウンロード機能を追加するのは結構簡単です とりあえず下記のような感じでダウンロード出来るようになります・ ファイル構成 app ├── controller │ └── static.py │ └── static ├── csv │ └── sample.csv └── img └── samle.jpg htmlタグ <a href="/download/csv/sample.csv" download="sample.csv"></a>…

rubyでヒープソートを書いてみました

ヒープソートの説明はwikiを見てください。 ヒープソート - Wikipedia 計算量は必ず、O(n log n)で並び替えるデータの質に関係なく、高速にソート出来る点です。 ヒープソートのクラス class HeapSort class << self def call(list) build_heap(list) (list.…

スクレイピングで文字化けを防ぐ方法

下記が使用するライブラリ(chardet)です。 pypi.org chardetは文字コードを検出するライブラリで検出して取得したデータにdecodeをすると文字化けを解消できます。 sampleは日経のページです。 import urllib3 import chardet url = "http://www.nikkei.com/…

node.jsのバージョン管理をnvmでしてみる

環境はmacで行っています node.jsのインストール brew install node nvmのインストール nvmはrbenvのようなnode.jsのバージョン管理ツールです。 nvmをインストールする curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | b…

railsにvue-test-utilsを入れてみる

前提 webpackは使わない。 node.jsを入れている。 npmを使用出来る ※ webpackを使わない理由は対象をrails5だけに絞っていないからです。 必要なものをinstall npm install --save-dev jest @vue/test-utils vue-jest babel-jest jest-serializer-vue vue-cl…

vue.jsにeslintを設定した話(vscode使っています)

eslintとvue.js用のeslintプラグインをinstallする 今回はグローバルにインストールします。 npm i -g eslint eslint-plugin-vue ※上記はnpmですが、yarnでも大丈夫です。 vscodeに読み込ませるnode_moduleを設定 vscodeの"基本設定=>設定"のUser Settingsの…

vue.jsのデリミタ(delimiter)を変更する方法 sampleとしてjinja2を使用

フロントエンドのフレームワークと既存のテンプレートエンジンのデリミタ(delimiter)って被ってしまった。。。 ちなみにデリミタ(delimiter)とは、"フィールド区切り文字"のことです。 具体的には railsのerbの<% hogehoge %>とか jinja2の{{ hogehoge }}と…

rubyでマークルツリーを書いてみた

ブロックチェーンの勉強をしていてマークルツリーがどんなものかをrubyで書いてみました。 (まだ、勉強したてなので間違えているかもしれません、その際はご教授ください) マークルツリーについてはわかりやすい記事があるので他のを参考にするといいです。 …

kotlinでbit flyerのapiから仮想通貨の価格を取得する(android)

kotlinのデータを取得する 下記のブログを参考にさせていただきました。 ver-1-0.net khttpを入れる androidをほとんど触ったことがないのでライブラリをどういう風に入れるかもわかりませんでした。。。 まずはbuild.gradleにkhttpのライブラリを入れましょ…

binanceから日足を取得するスクリプトを書きました(python)

仮想通貨のコイン間での値動きの相関を調べてみたいと思い、まずはbinanceからデータを取得するpythonスクリプトを書いてみました。 実装には下記のライブラリを使用させてもらいました。(作者の方は他のwrapperも作っていて意欲的な感じがします!) github.c…

icobenchのgem作成してみました。

ICObenchというicoの評価サイトのapiのgem(wrapper)を作成してみました。 icobench.com wrapper github.com ICObenchは多くのicoが掲載されているので、好みにあったicoを探すことができます。 ただ、ICOはscamも多いので精査して購入する必要があります。 …

coinexchangeのgem作りました

最近、仮想通貨にはまっているということでcoinexchangeのapiから簡単にデータを取得できるgem作りました。 github.com ちなみにcoinexchangeは海外の取引所でapiはまだpublicなものしかなさそう。 なのでapiで取引はまだできません。 v2になったら作りなお…

中国でslackは使えるのか?

中国でのslack 最近、中国の雲南省に行ってきました。 会社からのslackでの連絡も見れるかどうかも確認したく、検証してみました。 中国のネット規制 まず、gmail、facebook、lineは使えません。 しかも心の拠り所のskypeまで規制対象になるそうです。 一体…

rspecでappディレクトリ以外のテスト(libとかただのscriptとか)

rspecでappディレクトリ以外をテストしたい時ってありませんか? 自分はあります。例えばバッチ処理とかのただのrubyスクリプト。 普通のテスト まず、普通のrspecのテストって下記のような構造で appとspecの位置関係は1対1のようになっています。 . ├── ap…

pythonでjwt使おうとしたらライブラリで詰まった件について(入れなおせばいいんだ!)

jwtって そんな人は下記記事が参考になります。 今回はエラーの対処法のみです qiita.com ライブラリ似過ぎな件 ①Pyjwt github.com ②jwt github.com はい、こいつらの共存が悪影響を及ぼします。。。 名前空間でも影響しあってるのかな? そこまで調べる気力…

goのフレームワーク ginの"gin-scaffold"を入れようとしたらエラーが出た。("hg": executable file not found in $PATH)

ginの"gin-scaffold"を入れようとしたらなんかエラーがでた。 $ go get github.com/dcu/gin-scaffold package bitbucket.org/pkg/inflect: exec: "hg": executable file not found in $PATH go: missing Mercurial command. See https://golang.org/s/gogetc…

pythonでapiからデータを取得する方法 (urllib3)

はてさて、pythonでapiからデータするときみなさんはどんなライブラリを使いますでしょうか? urllib? urllib2 urllib3? ってライブラリ多いですね。 ちなみに、"urllib"は"https"でデータを取得できない場合もあります。 なので、個人的なオススメは"urllib…

djangoでpandas使うのは簡単だった

pandas使ってデータ分析しているサイトがよくあって、 私も参考にしているのですが大体csv使ってませんか? 少ないデータだったらcsvで良いと思うんですけど、 apiやスクレイピングデータ取るときってdbに突っ込みませんか? djangoのormでデータをdbにつっ…

rails2で'ruby-debug'(デバッグ)を使う時の注意

下記のgemでdebug(デバッグ)する時、だいたいgem入れて gem 'ruby-debug' 自分の止めたいところで debugger をコードの中に入れるみたいな感じで書いていると思います。 そして、サーバーの立ち上げはいつも通りで。。。 bundle exec script/server はい、最…

rails5でapiを作成する方法

apiの改修することはあれども今までapiの作成を初めからしたことなかったので 簡単に作った時のメモをしておきます。 環境 ruby 2.4.2p198 Rails 5.1.4 sqlite3(初期設定のものを使っています) アプリ作成 まず、適当にrails アプリ作りましょう。 rails new…

rails4からrails5でインデックスの貼り方が変わった?

index貼りたいけどrails5になったらadd_indexで貼れなくて戸惑いましたw rails4なら作られたテーブルに関してこんな感じ class AddIndexToTestTables < ActiveRecord::Migration def change add_index :test_tables, :name add_index :test_tables, :name2 …

pythonで配列追加の処理速度の違い

pythonで配列追加の処理速度を比べてみました。 "append"を使う方法 import time def process(): result = [] start_time = time.time() for _ in range(10000000): result.append("test") processing_time = time.time() - start_time return processing_ti…

pythonのリスト内包表記と普通のfor文どちらが早いか

リスト内包表記と普通のfor文どちらが早いかを確かめてみました。 普通のfor文 import time def process(): start_time = time.time() result = [] for i in range(30000000): result += [i] processing_time = time.time() - start_time return processing_…

pythonの標準入力で気をつける

pythonの標準入力 なんか色んな記事を見ていると、 import sys sys.stdin.read() sys.stdin.readline() sys.stdin.readlines() や rau_input() などがありますが rau_input()はpython2なので python3は下記を使いましょう。 input() それにしてもpythonの記…

25日の移動平均線をpythonで求める方法

亀のような遅さでトレードの自動売買システムを作成しています。。。 djangoで作ろうとしているので完成が見えない。。。(フロントなくそうかな。。。bottleにしようか。。。) 今回は25日の移動平均線を求めてみました。 はい、下のコードで終わりです!!(p…

rubyで引数の初期値がある時の順番の個人的に良い方法

引数の初期値がある時の順番で困る時ってありますよね 例えば、第二引数の初期値を設定する時 def file(name="foo.jpg", mode="rb") File.open(name, mode) end こういう時、第一引数を変えずに、第二引数だけ変えて 呼び出すときは以下のようにしないといけ…