ページ

ラベル 勉強 の投稿を表示しています。 すべての投稿を表示
ラベル 勉強 の投稿を表示しています。 すべての投稿を表示

2019年7月12日金曜日

最近よく使っているWebサービスやツール

久しぶりの投稿です。

このブログ自体、技術的な事をつらつら書いている事が多く
それだったらQiitaに書いた方が良いのかと思いそっちに書いていたのですが、
Qiitaに書く感じでも無い事や、小さめなやつとかをこのブログでまた書いて
行こうかと思います。

今回は「最近よく使っているWebサービスやツール」をまとめてみました。


Firefox Send



ログインしなくても、暗号化してファイル共有してくれる便利なサービスです。
有効期限や有効ダウンロード回数を設定できたり、パスワードで保護する事も可能です。ファイルをアップロードしたら後は相手にリンクを教えれば済むだけなので
ファイルサイズが大きなものを送る場合に重宝しています。


Github Link Card Creator

↓こんな感じのGithub リンクページのカードが作れる po3rin さんが作られている
サービスです。



サクッと作れるのでリンクを貼りたい時とかに作って貼っています。


縛りなしWiFi



名前の通り、2年縛りなどの契約期間で縛りがなく、解約金無しで純粋に
使った分だけ料金を支払って使うことができます。
今月は出張などで外で作業する事が多いから1月だけレンタル〜っという事も
できるので便利です。

StackShare



こちらは使うというよりは眺めてるだけのサイトですが、なかなか面白いです。
各ベンダーがどのような技術スタックでサービスを構成しているのか、
みてると新しい発見なんかもあったりします。


といった感じのあまり纏まりが無い感じでしたが、、
また更新があったりしたらブログに書こうかと思います。

2016年10月15日土曜日

Facebook製の新しいパッケージ管理ツールyarnを試してみる




Javascriptのパッケージ管理といえばnpmですが、
yarnはnpmに比べてどうなのか試してみました。
と言う訳で、早速試してみたいと思います。

環境準備 & インストール


環境としてはMacOS、Windows、Linuxで使用できます。
筆者はMacOSで試しました。
前提としてNode.jsのインストールが必要になります。
今回はHomebrewを使ってyarnをインストールしますが、
他にもスクリプトからや、tarballをダウンロードしてからもインストールできます。
$ brew update
$ brew install yarn


パッケージインストール


yarnはpackage.jsonを使ってインストールもできるので、
以前作成したReact開発用でのpackage.jsonを使ってみたいと思います。
  • package.json
{
  "name": "Template",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack",
    "start": "webpack-dev-server --progress --colors",
    "lint": "eslint src --ext .js --ext .jsx"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.11.4",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.9.0",
    "babel-preset-react": "^6.11.1",
    "eslint": "^3.3.0",
    "eslint-plugin-react": "^6.2.0",
    "react": "^15.3.0",
    "react-dom": "^15.3.0",
    "webpack": "^1.13.2",
    "webpack-dev-server": "^1.16.1"
  }
}
パッケージインストール
$ yarn install
yarn install v0.15.1
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✨  Done in 29.16s.
yarn install  14.32s user 5.98s system 68% cpu 29.814 total
※時間を計測する為にtimeコマンドを使用してます。
なんか絵文字があったりnpmよりシャレた感じですw
インストールされるとディレクトリ直下にyarn.lockが作成されます。
  • yarn.lock
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
abbrev@1:
  version "1.0.9"
  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25     f35dd6f63752a2f8776135"

accepts@~1.3.3:
  version "1.3.3"
  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3     e0d9c1e328dd68b622c284ca"
  dependencies:
    mime-types "~2.1.11"
    negotiator "0.6.1"

省略・・・
package.jsonより細かいパッケージの情報が書かれています。Gemfile.lockみたいな感じですね

ちなみにnpmで同様のパッケージをインストールしてみました。
$ npm install
...
npm install  33.22s user 8.36s system 95% cpu 43.549 total
インストール時間に関してはyarnが29.814s
npmが43.549sなのでyarnの方が早いです。

またパッケージの重複に関してもyarnの方が整理されています。
試しにisarrayパケージをnode_modules内で検索してみると
  • npm
$ find . -name isarray -type d
./node_modules/fsevents/node_modules/isarray
./node_modules/isarray
./node_modules/node-libs-browser/node_modules/isarray
./node_modules/stream-browserify/node_modules/isarray
  • yarn
$ find . -name isarray -type d
./node_modules/isarray
./node_modules/readable-stream/node_modules/isarray
yarnの方が整理されています。

その他


yarnはnpm同様に以下コマンドが使えます。
  • package.json作成
$ yarn init
  • 依存パッケージ追加
$ yarn add [package]
$ yarn add [package]@version
$ yarn add [package]@tag
  • 依存パッケージ更新
$ yarn upgrade [package]
$ yarn upgrade [package]@version
$ yarn upgrade [package]@tag
  • 依存パッケージ削除
$ yarn remove [package]
こうなるとyarnの方が便利そうですが、、
しばらくnpmの代わりに使ってみたいと思います。

2016年10月9日日曜日

新しい技術を学んでみる 7 - Realm Mobile Platform -


ついこの間発表されたRealm Mobile Platformを試してみたいと思います。

Realmとは?
SQLiteやCore Dataの代替となるモバイルのデータベース
Android、iOS両方で使える。

Realm Mobile Platformとは?
データベースに加え、リアルタイムの同期、コンフリクトの解決、
イベントハンドリングといったサーバサイドの機能をシームレスに統合したもの。
現在はJava、Objective-C、Swiftのみ対応。

環境準備


開発環境としてはMacOSで進めていきます。
MacOS以外ではLinuxでも使えるようです。
まずはここから一式をダウンロードします。

ダウンロードしたフォルダの中にstart-object-server.commandがあるので、
ダブルクリックしてRealm Object Serverを立ち上げます。
Server起動するとブラウザが立ち上がりAdminユーザー作成画面が表示されます。

e-mailとpasswordを入力しAdminユーザーを作成します。
セットアップが完了すると再度e-mailとpasswordを求められるので入力しLoginします。

ログイン後ダッシュボード画面が表示されればセットアップ完了です。

デモを試してみる


早速何か動かしてみたいので、チュートリアルにあるRealmTasks
動かしてみたいと思います。
先ほどダウンロードしたrealm-mobile-platformフォルダ内に
RealmTasks.appがあるので起動してみます。

起動するとe-mailとpasswordを求められるので、
適当なユーザーを作成してログインします。(※ローカル内だけでのアカウントなので適当で)
次に「+」を押して新規タスクを作成してみます。
タスクは左にドラッグで削除、右にドラッグでタスク完了の操作ができます。

Realm Browser


デモアプリを起動している状態で、サーバーと同期が取れているか確認してみます。
realm-mobile-platformフォルダ内にあるRealm Browser.appを起動します。
起動したらConnect to Object Serverを押します。
Server URLAdmin Access Tokenを入力する画面で
デフォルトの場合
  • Server URL
    realm://localhost:9080
  • Admin Access Token
    start-object-server.commandをダブルクリックした時コンソールに出力されているAdmin Access Token
を入力します。
Realm Object Serverに接続されたRealm Browserでは
デモアプリと同期しているのが分かります。
gif

使ってみて


今回はデモを動かしてみただけですが、色んな用途で使えそうです。
次は実際にアプリに組み込んで、組み込み易さを検証したいと思います。

また、今回はローカル内で完結していたのでレスポンスが早いのは当たり前ですが
実際のサーバー上とのやりとりでどんな感じが試してみたいと思います。


2016年6月15日水曜日

Googleの新しいビルドツールBazelを試してみる


Bazelとは?
Google自信が使っていたビルドツールを公開したものです。
Android、iOSなどでも使えるとのこと。現在はベータ版。
余談
なぜBazelを試そうかと思ったかというと、、
最近やってるTensorflowでBazelが使われていたからです、、はい。

環境準備 & インストール


2016年6月現在サポートされているプラットフォームは
  • Ubuntu Linux
  • Mac OS X
です。
あとJDK8以降が必要とのこと。
今回はVagrantでUbuntuの環境を用意してそこで試してみたいと思います。
UbuntuのバージョンがTrusty (14.04 LTS)であれば以下コマンドで
JDK8をインストールします。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
ちなみに途中でsudo apt-get updateを実行しないと、
E: Unable to locate package oracle-java8-installer
のエラーが出るのでお忘れなく^^;
Ubuntuのバージョンが'Wily (15.10)'の場合は以下コマンドでインストール。
$ sudo apt-get install openjdk-8-jdk
正常にインストールできたか確認
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
良さそうです^^
あとは一気にBazelのインストールを行います。
$ echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install bazel
$ sudo apt-get upgrade bazel
インストール確認
$ bazel version
Extracting Bazel installation...
Build label: 0.3.0
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Jun 10 11:38:23 2016 (1465558703)
Build timestamp: 1465558703
Build timestamp as int: 1465558703

簡単なJavaプロジェクト作成


試しに簡単なJavaのプロジェクトを作成し、ビルドしてみます。
  • ディレクトリ構成
.
├── BUILD
├── WORKSPACE
└── src
    └── main
        └── java
            └── com
                └── slowhand
                    └── Sample.java
Bazelではworkspace毎の場所で作業します。
workspaceにはルート直下にWORKSPACEファイルが必要になります。
WORKSPACEはライブラリの外部参照を記述したりしますが、
今回は依存は無いので空のファイルを作成します。
  • Sample.java
単純にHello bazelと表示するだけのクラスです。
package com.slowhand;

public class Sample {
  public static void main(String args[]) {
    System.out.println("Hello bazel");
  }
}
  • BUILD
BUILDファイルにはソースコードの配置や参照ライブラリなど記述します。
java_binary(
  name = "sample",
  srcs = glob(["**/*.java"]),
  main_class = "com.slowhand.Sample",
)

ビルド&実行


それではビルドしてみます。
$ bazel build //:sample
INFO: Found 1 target...
Target //:sample up-to-date:
  bazel-bin/sample.jar
  bazel-bin/sample
INFO: Elapsed time: 10.765s, Critical Path: 7.52s
ビルドが成功するとbazel-binの配下に実行モジュールが作成されます。
$ bazel-bin/sample
Hello bazel
ちゃんと実行されてます^^
ちなみに、、WORKSPACEファイルがないと以下のエラーになります。
The 'build' command is only supported from within a workspace.

2016年2月14日日曜日

新しい技術を学んでみる 6 - Elasticsearch -


Elasticsearch
AWSのサービスと勘違いしそうな名前ですが、、、
※すでにAmazon Elasticsearch ServiceというElasticsearchを使った
サービスがあるんでさらにややこしい・・・
そんなElasticsearchを学んでいきたいと思います。
Elasticsearchとは?
Luceneという全文検索エンジンを利用しているElastic社の元でOSSとして開発されてるサービス
・・・Lucene?,全文検索エンジン?
調べてみました。
全文検索エンジンとは?
wikipediaによると・・・
全文検索(ぜんぶんけんさく、Full text search)とは、
コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。
「ファイル名検索」や「単一ファイル内の文字列検索」と異なり、
「複数文書にまたがって、文書に含まれる全文を対象とした検索」という意味で使用される。
とあります。
Luceneとは?
こちらもwikipediaによると・・・
Javaで記述された全文検索ソフトウェア、Javaのクラスライブラリとして提供される。
1000万ドキュメントくらいの規模まで1台のマシンで対応できる。
このLuceneを使ったものとして、大きく分けると
があるとのこと。

とりあえず触ってみる


実際に使って雰囲気を掴んでみたいと思います。
今回もVagrantitamaecentosに環境を構築してみたいと思います。
$ vagrant init
$ bundle init
VagrantファイルとGemfileを以下に編集
  • Vagrantに以下行を追加
config.vm.network "forwarded_port", guest: 9200, host: 9200
config.vm.network "private_network", ip: "192.168.33.180"
  • Gemfileに以下行を追加
gem "itamae"
gem "dotenv"
まずはvagrantを起動
$ vagrant up
itamaeのレシピとしてmain.rbを作成
# coding: utf-8
require 'dotenv'

Dotenv.load

%w(yum wget java-1.8.0-openjdk).each do |pkg|
  package pkg do
    action :install
  end
end

puts "version : #{ENV['EVARSION']}"
execute 'elasticsearch download' do
  command "wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/#{ENV['EVARSION']}/elasticsearch-#{ENV['EVARSION']}.tar.gz -O elasticsearch.tar.gz"
end

execute 'elasticsearch.tar.gz unzip' do
  command 'tar -zxf elasticsearch.tar.gz'
end

puts "install path : #{ENV['INSTALL_PATH']}"
execute "sudo mv elasticsearch-#{ENV['EVARSION']} #{ENV['INSTALL_PATH']}" do
  not_if "ls #{ENV['INSTALL_PATH']}"
end

execute "sudo chmod -R 755 #{ENV['INSTALL_PATH']}" do
  only_if "ls #{ENV['INSTALL_PATH']}"
end

execute "sudo chown -R #{ENV['EUSER']}:#{ENV['EUSER']} #{ENV['INSTALL_PATH']}" do
  only_if "ls #{ENV['INSTALL_PATH']}"
end
.envを作成
EVARSION=2.2.0
INSTALL_PATH=/usr/local/share/elasticsearch
EUSER=vagrant
バージョンやインストール先などは置き換えて下さい
実行してみます。
$ bundle exec itamae ssh --vagrant main.rb
エラーが出た場合は.envの設定を見直してみて下さい
  • Elasticsearch設定
$ vagrant ssh
$ cd /usr/local/share/elasticsearch
$ vi config/elasticsearch.yml
$ diff config/elasticsearch.yml  config/elasticsearch.yml.org
58c58
< http.port: 9200
---
> # http.port: 9200
  • 起動
$ /usr/local/share/elasticsearch/bin/elasticsearch -d -p pid
  • 確認
$ curl -X GET http://localhost:9200/
{
  "name" : "D'Ken",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.2.0",
    "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
    "build_timestamp" : "2016-01-27T13:32:39Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}
上のように表示されればOK
  • 停止
$ kill `cat pid`
  • 触ってみて
インストールが簡単でRestfull APIで〜となると扱いやすいですね。
最近人気なのもわかる気がします。^^;
今回はここまで。