2014年11月24日月曜日

転売・せどり関係のメモ

* リサーチツールについて

- Chromeエクステンション
 Amadiff : 各国Amazonとの値段比較
 クローバーサーチ : 国内ECサイトとの値段比較

- Webサービス
 物rate(Amashow)


* 海外輸出

- 海外口座が必要(海外法人作るか、ペイオニアで登録)

- ユニオンバンクだと個人口座なので、ビジネス向けに利用すると口座が凍結される恐れあり

- 海外配送は意外とめんどくさい(あまり調べてない)

- Amazon.com で、"import japan" と検索すると輸出されてるものが一覧できて市場把握しやすい

- 海外配送手数料、送金手数料も含めると相当な利ざやが無いと旨くない 


* 国内配送

- 薄いものならヤマトメール便( < 2cm)
- ゆうメール(縦横高さ<1.7m)

2014年11月23日日曜日

Javaでマルチスレッド/ネットワークプログラミングに入門してみた。

Java全然触ったことないけど、 関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会 メモ なるものにこの間参加してきて、
Oracle 本気やん、いろんなところで使われてるやんということで、
いまさらJavaなんか触り始めた!

Java といえばとりあえずeclipse のイメージが強かったので、
Android SDK にくっついてきた eclipse 開いてJavaプロジェクト立てて実行してみる。
eclipse の環境設定が必要なので以下のサイトを参考にして、JDKの設定を行いました。
http://ameblo.jp/kurabeat/entry-11856811247.html

Java SEについては、JavaSE@TECHSCORE がわかりやすいです。
C/C++ 使ってた身からすると、細かい文法は雰囲気でわかるんで後回しにして、
JavaのAPIどう叩けばいいか分かればいいだけ。
かなり効率よく学べました。

EclipseのTips
 インデント: "cmd + i"

マルチスレッド
 マルチスレッドといったときに、同時に複数のことをやるための技術といった説明がよく見られる。けど、正確には時分割多重の処理として理解するのが正しそう。
いい感じの解説をしている文章があったので引用させてもらいます。

多くのコンピュータはCPUを1つしかもっていません。そのようなコンピュータでは、厳密には1つの処理しか同時には実行することができません。そこで、「マルチスレッド」では、通常「時分割処理」という方法が用いられています。「時分割処理」とは、短い時間間隔で実行する処理を切り替える方法です。複数の処理を頻繁に切り替えて実行することで、仮想的に複数の処理を同時に実行しているように見せかけています。http://www.techscore.com/tech/Java/JavaSE/Thread/1/

 Javaにおける具体的な実装については、extends するパターンと implements するパターンがあるみたい。継承とインタフェースの違いについてはここを参考にした。
 要するに継承階層が同一であればextends、そうでないならimplements とざっくり理解。これだけだと不正確だと思うけど、理解度はのちのち深めていくゆるいイメージ。


ネットワークプログラミング
 通信の端点としてSocket があります。
TCP通信するためだったら、SocketクラスをClient、ServerSocketクラスをServerとして利用。

とりあえずターミナル複数立てて、server/client を実行してみて挙動を確認する。
つながるなーって確認できるJavaのサンプルコードが、以下に用意されていたのでサクッと理解できました。
  - 2.5. TCPサーバプログラム
  - 2.6. TCPクライアントプログラム
サーバー側は複数のクライアントを受け付ける必要があるので、ちゃんと作るならマルチスレッドの知識が必要になってきます。

2014年11月22日土曜日

関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会 メモ

関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会
http://kanjava.connpass.com/event/9444/

イベント概要

関西のJavaエンジニアのためのコミュニティ「関ジャバ」で、9月に開催されたJavaOne 2014 San Franciscoの報告会を開催します。いつもの平日ではなく、土曜日に開催するスペシャルイベントです。スペシャルゲストとして、Javaエバンジェリスト寺田 佳央さんとJava in the Boxのさくらばさんをお招きします!
また、寺田 佳央さんより「サンフランシスコ土産争奪じゃんけん大会」も行って頂きます!

セッション

JavaOne 2014 サンフランシスコの最新レポートについて

JavaOne は 1 年に 1 度、アメリカ・サンフランシスコで開催される Java 開発者の祭典です。本セッションは、2014 年、09 月28 日~ 10月 2日まで開催された、JavaOne 2014 サンフランシスコの全体概要をご紹介すると共に、新しく発表された内容、Java の今後のトレンド、最新情報などをわかりやすくご紹介します。
[Memo]
* 今後のJavaの方向性
- JavaOne@San Francisco 2014
- JavaSE7 -> JavaSE8
パフォーマンス改良
クリティカルパッチアップデート : 1/20, 4/14, 7/14, 10/20
- JavaOneのセッション動画は https://www.parleys.com/home にアップロードされる




JavaOne 2014 では Java SE について何が語られたのか

今年の JavaOne では、Project Valhalla や Project Panama など今後の Java を担う機能が話題になりました。これ以外にも、Project Jigsaw など Java SE 9 の主要な機能もアップデートしています。そこで、本セッションではこられの機能を紹介していき、Java の今後について考えていきたいと思います。
[Memo]

学生がJavaOneに初参加して得たもの

寺田さんに学生の内に本場・サンフランシスコのJavaOneに行ったら人生変わるよと誘われ,実際に参加してみて何を得たのか.学生目線からのリアルなJavaOne 2014 サンフランシスコをお伝えします.
[Memo]

The Good Parts of JavaOne

JavaOneに参加して楽しかったこと(個人的な感想です)全然技術のお話はないです。
[Memo]

はじめてのJavaOne(仮)

  • じんさん 他1名
  • 30分程度
はじめてのカンファレンス参加して感じた事や驚きを話せたらと思います。 技術的なところは、他の方にお任せして、楽しく話せたらと考えています。
[Memo]


2014年11月16日日曜日

Python でスクレイピングすると超快適な件

不動産賃貸物件の情報を横断的に見るサイトがない。
Suumo, Homes, エリッツ、、、色々見るのがめんどくさい。
お勉強ついでに自分でツールを作ってみる。

まずは住宅情報を集めるところから。
スクレイピングツールは Ruby Pythonいろいろあるが、
ここではお勉強のためプリミティブな方法で Python 使ってスクレイピングをしてみる。

1. HTTP リクエストを発行してWebページを取得
2. 取得したウェブページをパース
3. データベースにためる

といった流れ。


1. HTTP リクエストを発行してWebページを取得

スクリプト的に徘徊したいので、何かしらのコード実装が必要。
学習コストが低い Python を使ってみます。
HTTP リクエスト用のAPIとしては、
デフォルトで urllib とかいうのがあるけど、それだと使いづらいので、
requests と呼ばれるパッケージをインストールします。
 $ pip install requests 
です。
インストールに失敗するときはこのへんはググラビリティ(ググって解決できること)高めなので頑張って解決してください。大体依存するライブラリがインストールされていないとかで引っかかります。

requests 使うとたった二行で HTTP リクエストできてしまいます。
$ import requests
$ response = requests.get(url)

のちのち問題になるのは、「URL をどうやって決めるのか」という部分。
徘徊の仕方は後日考えることとします。
ガッツリやるなら Scrapy がいいらしいですよ。
ページ徘徊の深さとかも簡単に調整できるみたいよ。

2. 取得したウェブページをパース

HTTP リクエストを発行してページ取得はできるようになった。
その次は取得したウェブページから必要な情報を抜き取る処理です。
データ取得とパース処理には依存関係がないので、
ぶっちゃけ違う言語でもよいです。このへんは分業できる部分かと。

様々なソフトウェアスタックがそれぞれ独立して疎結合でメッセージングして協働しているように、
ページ取得・パース・データ解析は独立性の高い処理なので、
それぞれ得意な方法でやるといいと思います。

ここでは「速く」「小規模に」トライアンドエラーしたいので、一貫して Python にします。

必要な情報を抜き取るためには、ソースコードのタグ要素を特定します。
適当なページを開いて右クリック + 「ページのソースを表示」するのもいいけど、
cmd + opt で Chrome DevTools を開いて、
ソースコード側にフォーカスを当てた状態で Ctrl + F すると、
ページの表示とコードがシームレスに一覧できて素晴らしいです。
サクッとソースコード側を検索して、ほしい情報の箇所のアタリをつけてください。
見つかったら欲しい情報に該当するソースコードの箇所を右クリックして、
「Copy XPath」
を選択して選択箇所へのXPathが取得できます、あら便利。
あとは以下のページで言われるがままに実装するだけです。


【早い者勝ち!】 あなたのお名前、残ってる?

とりあえず簡単のため、ウェブページのリンク部分のテキストだけ抜き取って表示してみました。
lxml は依存関係にあるライブラリが結構あるので
将来的には XPath でうまくパスを設定しなきゃならないですね。
今日はここまで。

2014年11月10日月曜日

VirtualBox + Vagrant をMac上で触ってみたら鬼快適だった件

Web屋さんからすると当然って言われるかもですが仮想環境マジでいいわぁ。
今までは普通にVirtualBox上でUbuntu走らせてるんるんしてましたが、
やっぱ Vagrant 使って terminal から ssh が楽。
とりあえず備忘録のため設定手順をメモっておく。

【設定手順】


1. VirtualBoxVagrant をインスコ
   Download してインストーラに従うままに Yes 連打

2. VagrantBox のサイトからインストールイメージのURL選びます
 http://www.vagrantbox.es/

3. 初期設定

boxのサイトにはこんな案内があります。
To use the available boxes just replace {title} and {url} with the information in the table below. 
$ vagrant box add {title} {url} 
$ vagrant init {title} 
$ vagrant up
なので、素直に従います。
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box
vagrant init centos64 # Vagrantfile が生成されます。
$ vagrant up # 仮想マシンが立ち上がります
$ vagrant ssh # ssh で仮想マシンに接続



まだ良さが完全にはわかっていないかもだけど、
ちょっと触ってみて感じた快適な点を整理して列挙します。

【 Vagrant を使うメリット 】


Boxが地味に便利
OS イメージが簡単に共有できる。
チーム開発してる場合は不具合があった時の再現環境とか、サーバー環境構築が簡単になりそう。

「俺のところでは動いたんだけどなんでだろぉ〜?」 
なんてクソみたいな時間の浪費をしなくて済みます。

個人開発でもweb上に転がってるインストールイメージを落としてくるだけで簡単に開発環境セットアップできて嬉しいです。

webサイトの動作確認

仮想マシンの /vagrant に ホストのVagrantfile があるディレクトリをシンボリックリンク貼っておくとMacで編集したファイルを仮想マシン上で簡単に共有できて便利
   $ sudo ln -fs /vagrant /var/www/html

学習情報が充実
バズワード的に流行ったこともありオンラインで取得できる情報が潤沢。
特に dotinstall::vagrant入門 見ればすぐ理解できちゃいます。
私もお世話になりました。
Vagrant ってなんぞ?状態から、1時間以内でこのブログ記事レベルのことはキャッチアップできちゃいました。dotinstall は神です。
本も内容が充実してたので便利でした。


2014年11月5日水曜日

Mac Book Pro を買ったときの初期設定

0. OSのアップデートとXcode のインストール

ダウンロードに時間がかかるので先に OS の更新( Yosemite ) を仕掛けておく
Xcode も糞重いので先にダウンロードを仕掛けておく
  Xcode は一回起動させてライセンスに同意しておく
  Agreeing to the Xcode/iOS license... のエラーがでた時の対処法

1. Windowsライクな aero snap をできるようにする

BetterTouchTool をインストール
http://blog.boastr.net/

2. アプリいろいろインストール

- Google日本語
- Magic Trackpad
  http://support.apple.com/ja-jp/HT4331
- Skype
- LINE
- SourceTree
- Unity
- curl, wget
- jq

- 素直に言うこと聞いてインストール
http://tech.basicinc.jp/Mac/2014/04/20/mac_app_engineer/

- Spotlight が Ctrl + Space で地味にEclipseのインテリセンスのショートカットキーとかぶるのでそっと殺しておいて、慣れてるLaunchyに差し替え。
Shift+Space で起動する仕様に変更。


- jqコマンドってなんぞ?
 jq コマンドが強力すぎてヤバい件

確認のためざっくり python関連のコマンドインストールしてみた。
pip 入れて scrapy 入れてとりあえずスクレイピングしてJSONファイル生成してみる。
 話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件
 SourceTree 入れて Github にホストされたリポジトリを Clone。
 とりあえず実行

生成されたデータはこんな感じで jq にパイプで渡せばダンプできちゃう。
 $ cat stock-code.json | jq ".name"


- OpenCVを入れておく
  $ pip install numpy
  $ brew install opencv