投稿

2014の投稿を表示しています

不要品を高く売るたった2つの方法

年末ですね。
部屋に不要品がゴロゴロしてませんか?

リユースや中古市場ってここ最近伸びてきていて、
色んな方法でものが売れる世の中になってます。
ここでは不要品を高く売る方法について私のノウハウを晒します!


私自身、部屋に不要品がゴロゴロ転がっていたので、
少し頭を使って売ることを考えました。

売ると言っても短絡的思考ですぐブックオフとかの買取にだすのは
100%死んでもおすすめしません!
クソ安く買い叩かれるからです。

どうせ売るなら高く売りたいですよね?
結局ものの売買というのは中間搾取者を挟まずに、
いかに直販するかが大切だとつくづく思います。

事業者と利害関係の無い一般市民が、
ネットで色々調べた結果、実践してみて良かった体験談を書きます。
部屋の中の要らないものを売るノウハウについては、
実際に実践してみて浅く広く知ることが出来たので社会に還元します。



私の取った方法はたった2つです。



1. Amazonマーケットプレイスに最安値で出品する

Amazonのお客さん、多少高くても早く手に入れば買う!
みたいな人が他のオークションとかに比べると多いと思います。
しかも一番PVの多いEC市場なのでここで売れなかったら諦めが付きます。
特に本は高く、そして速く!売れます!
利用手数料が一部とられますが、この速さに対してお金を払ってると思えば、
まぁ納得です。


2. ヤフオクに出品する

世の中にはいろんな人がいます。
あえて古いものを欲しがる人もいます。

私の実体験で言うと、やや古めのiPod touchが何故かAmazonより高値で売れました。
というのも、古いOS搭載のiPod touchが欲しい方がいたからです。

あとは謎に4年前買ったオリンパス Pen Lite です。
これは新品で買った時の値段よりも高く売れました。
謎のプレミアでしょうか。。


番外編: それでも売れなかったら。。。

ヤフオク・Amazonでも売れなかったらそれはほぼ価値がない品です。
一応ネットで最安値検索しましょう。
本ならAmazon、家電ならkakaku.comといったところでしょうか。
それで1円とかになっていればもうブックオフに売っちゃえばいいでしょう。
ブックオフは出張買取りをやってくれるので、
いらない売れないものをダンボールに詰めておけば佐川のおじさんが持って帰ってくれます。

Raspberry Pi で L チカしてみた

イメージ
Raspberry Pi で電子工作の入門してみました。

プログラミングで Hello world があるように、電子工作でも Lチカと呼ばれるお決まりの入門手順があります。

LチカとはLEDチカチカの略で(たぶん)、LEDを点滅させることを言います。
回路上の電気的な状態をHigh -> Low で制御するとLEDが点滅するので可視化できるわけです。

ウェブ上に色々情報が転がってるのでよさ気な記事を引っ張りだしてみました。

* 回路構成
GPIO端子の#25をアノード側に接続します。
http://lchikaamazon.hatenablog.com/entry/2013/11/18/171637


* Wirinig Pi をインストールしてコマンドラインからGPIOを制御する
https://tool-lab.com/2013/12/raspi-gpio-controlling-command-2/

例では 18 番ポートの状態を制御しています。
以下、引用。

それでは実際に試してみます。まずGPIO18ピンを出力モードに設定します。 pi@raspberrypi ~ $ gpio -g mode 18 out 次にGPIO18ピンをON(=1)にします。 pi@raspberrypi ~ $ gpio -g write 18 1 LEDが点灯しましたか?ここで現在のGPIO18ピンの値を読み取ってみます。 pi@raspberrypi ~ $ gpio -g read 18 1 というように1が表示されたと思います。

* やってみた時の画像





転売・せどり関係のメモ

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

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

- Webサービス
物rate(Amashow)


* 海外輸出

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

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

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

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

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


* 国内配送

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

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 とざっくり理解。これだけだと不正確だと思うけど、理解度はのちのち深めていく…

関西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 サンフランシスコの最新レポートについて寺田佳央さん60分 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 San Francisco Report from Oracle Fusion Middleware

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

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 がいいらしいですよ。
ページ徘徊の深さとかも簡単に調整できるみたいよ。 PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる!
2. 取得したウェブページをパース
HTTP リクエストを発行してページ取得はできるようになった。 その次は取得したウェブページから必要な情報を抜き取る処理です。 データ取得とパース処理には依存関係がないので、 ぶっちゃけ違う言語でもよいです。このへんは分業できる部分かと。
様々なソフトウェアスタックがそれぞれ独立して疎結合でメッセージングして協働しているように、
ページ取得・パース・データ解析は独立性の高い処理なので、
それぞれ得意…

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 centos64http://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 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


Android/iOS クロスプラットフォームなフレームワーク

イメージ
Android, iOS, Windows 等々,各社のプラットフォーム上でアプリ開発をするにあたって,それぞれ個別に
- Android は Java
- iOS は Objective-C
- Windows は C♯
と言った具合に複数の言語,複数の環境でアプリ開発をしなきゃならん.

・・・ものすごい開発コストです.

すでに大手のスマホアプリ開発会社は,開発費を下げるために,
プラットフォームを横断した形で使える汎用のフレームワーク(ミドルウェア)の採用を進めています.

ゲーム向けで言うと,それはUnityであったり,はたまた cocos2d-x であったり.
DeNA なんかは ngmoco という会社を買収して,ngCore なんていうクロスプラットフォームなゲームエンジンを使ってたりする.


クロスプラットフォームすげぇってのを体感するため,
オープンソースな cocos2d-x を最近触り始めた.
C++ で使える2Dゲーム用のゲームエンジン.

開発環境の設定は 「Mac だったら」とてつもなく簡単.
以下のページを参考にしたらHello world まではあっさり行けると思われます.
http://albatrus.com/main/cocos2d/6125

iOS はXcodeでサクッと行ったんだけど,Android のほうでビルドが通らずやきもきしている!糞が!

追記:テストの実行
$ cd cocos2d-x/cocos2d-x-3.3rc0/tests/cpp-tests/$ cocos run -p android ちょっとしたTips:
ファイル追加した場合は Android.mk にファイル名追記を忘れずに


他社の開発環境はひとつのベンチマークにする意味でも,
また,最先端の技術を追う上でも大切に思えます.
本を読むのもいいけれど,日々進歩していくソフトウェアの世界に足を突っ込んで学んでいく方がソフトウェアエンジニアっぽい.

あと,アプリ屋さんが作りやすいような抽象化したフレームワークの実装は,高い技術力・設計力が必要となる部分なのですごく興味ある.
特に cocos2d-x はオープンソースで github のリポジトリでコミットログが追えるから,
ソフトウェアが産声を上げてから死ぬまでが観察できて楽しいです.

マネー関係のメモ

せどり・転売ビジネス

ChromeエクステンションクローバーサーチBスマホアプリせどろいど(Android)せどりすと(iPhone)
節税・ふるさと納税

ふるさと納税千葉県市川市 ( 等々 )節税冬の賞与賞与支給1ヶ月前は残業しない社会保険料4~6月分の支給額http://allabout.co.jp/gm/gc/379773/

仕事効率化のためのアクションアイテム3選

社会人3年以内の私ですが偉そうに社会で学んだ業務効率化方法を3点セットでまとめてみます。
生き急いでる人は以下の太字だけさらっと見て去っていって下さいな。


なお、効率化する業務の対象は、「だれでもできるクソみたいな雑用」とします。


社内で若手とみなされる人間は、上の人から雑用をふられます。
おそらくこの雑用をちゃっちゃかこなすことが次の美味しい仕事をもらうための鍵になります。


私は開発者(笑)なので、外注管理とかシステムのセットアップとか動作検証とか様々クソが降りかかります。
最初は鬼の形相で脳内血管ブチギレ状態でこなしていた毎日で、
ストレスフルでノン☆クリエイティブな毎日からは得るものはほぼ皆無でした。
でもでも、業務をこなす中でいいコト思いつきはじめ、クソ業務の見方を変えて一気にクリエイティブなお仕事に再定義して楽しい毎日を送っております。



そのためのカギを3つまとめました!



1. フレームワーク化

ルーチン化した仕事を毎日やることは、会社にとっては必要ですが自らの能力向上にはなりません。誰にでもできる仕事なんでそのうち若いコストの低い人材に代替されてゆきます。

パターンを見抜き、型を作り、他の仕事にヨコ展開できるカタチにまとめてみることをおすすめします。これをフレームワーク化と私は呼びます。

例えば、外注先のマネージメント。
外注さんは何も知らぬので、作業工程・用語・業務フロー等々、何から何まで手取り足取り指示する必要があります。
クッソ面倒です。
年次が上がると、外注さんのマネージメントなんてたくさん案件抱えるようになります。

特に私がクソだと思うのは社内関係者との情報共有。
わざわざ再構成した資料を準備するのとかめんどすぎやろ。

こういったクソ業務をうまくハンドリングするためには、
日々の定型化した業務を抽出して、
要素ごとにアクションアイテムを羅列して、
図表化しておく。
社内向け資料として再構成するんじゃなくて要素ごとに資料を分けておいて、
そこから抽出するだけにする。

仕事のパターンとして抽象化出来たら、もう他の業務にもヨコ展開できちゃう可能性が出てくる。
ヨコ展開力、これが新人とベテランの違い( ⇔ 経験からくる効率の差 )になってくる。
自分のような若い世代からすれば、
「おっさんども業務フローとかフレームワーク化しておけよな」
と罵りたくなりますが…

Machine Learning (Andrew Ng) @ Coursera その5

Classification

binary classification problem

線形回帰は覚えたけど、これを分類問題に適用することはいい考えではない。
そこでロジスティック回帰が出てくる。

ロジスティック回帰は回帰というくせに分類問題に使われてて、
離散的な分類値に対して、0~1の値を取る関数を当てはめる。


Advanced Optimization

これまでは最急降下法を最適化アルゴリズムとして採用してきたが、
もちろんこれ以外にも最適化アルゴリズムが存在している。
例えば、
Conjugate gradient
BFGS
L-BFGS

と言った具合に。

ただ、数値計算のエキスパート出ない限りは直接実装するべきではない。
まずはライブラリ使うべき。
機械学習のライブラリを試していいライブラリを使ってまずは慣れる。
その中でいい実装悪い実装を見分ける。
Octaveはアドバンスドな最適化アルゴリズムが提供されているのでとりあえずはそれ使う。

optimset() と fminunc() をつかってアドバンスドな最適化を行う。
使い方としては、コスト関数の各パラメータに関する偏微分値とコスト関数値を返す関数を引数として渡すだけっぽい。


Multiclass classification

複数クラスの分類問題についての話。
複数クラスの教師セットを与えられた時は、one vs all(one vs rest) と呼ばれる分類問題を解くことになる。

A,B,Cに属するクラスは、Aと(B,C)に属するクラスで教師セットを分けて、
それらの決定境界を導出する。 
=> Aになる確率が求まる。

Bと(C,A)に属するクラスで教師セットを分けて、分類器を適用し決定境界を導出。
=> Bになる確率が求まる

Cと(A,B)に属するクラスで教師セットを分けて、分類器を適用し決定境界を導出。
=> Cになる確率が求まる

確率を比較して一番大きい物を採用すれば良い。



Machine Learning (Andrew Ng) @ Coursera その4

イメージ
自学自習でOctaveの設定変更してみた。
Octave起動するといろいろ設定がdefault臭してすごく効率が悪い。
こういったときは .bashrc ならぬ、 octaverc なるものがあるんですわ。
この設定ファイルは、パス的には以下になります。
( 私のインストール先はCドライブ直下なのでその辺は読み替えて下さい。 )
 C:\Octave\3.2.4_gcc-4.4.0\share\octave\site\m\startup


で、2つの欲望を叶えるためoctavercを書き換えます。

1つは、起動時から自分の作業ディレクトリに飛びたい
2つは、糞長いプロンプトをPython風に ">>" にしたい

夢を叶えるスクリプトは以下のとおり。

## System-wide startup file for Octave.
##
## This file should contain any commands that should be executed each
## time Octave starts for every user at this site.
cd D:\Octave # Move to working directory
PS1(">>") # Change prompt
全然難しくないですね。


Plotting Data


clear;
t  = [0:0.01:0.98];
y1 = sin(2*pi*4*t);
y2 = cos(2*pi*4*t);
plot(t,y1);
hold on; # hold figures to overlap plotting
plot(t,y2, "r");
xlabel("time");
ylabel("value");
legend("sin", "cos");
title("my plot");
close;
cd "data"
print -dpng "myPlot.png" # png is file format
cd ".."
figure(1); plot(t, y1);
figur…

Machine Learning (Andrew Ng) @ Coursera その3

イメージ
今回はOctave マンセーうぇえ~いって話。
機械学習やらパターン認識で、Java C++ Python numpy Rとか色々ありましたねぇ。 でもそれらって結構実装に時間食うよね?めんどいよね?PDCA回すの遅れるよね?
シリコンバレーではこういった問題にはとうの昔に気付いておりまして、 すぐにこういった言語で実装し始めるんじゃなくて、 まずはプロトタイピングとしてOctaveが使われておりまっせ。
まずクイックにPDCAを回す競争力の高い企業が集結したシリコンバレーでは、 アイディアの実証がサクッとできてカネがかからんやつがプロトタイピングとして好まれたわけか。
ちなみに、Matlabでもいいんだけどクソたけーよって話もある。 あと、Python numpyでもいいけど、構文ちょっとややこしいやんけ。
とかいう感じで他の言語を軽くディスった上で、今日はOctaveの素晴らしさを布教しようじゃありませんか。


以下、コマンドメモり散らし!

変数の取り扱い
>>1 ~= 2 ans =  1 >>1 && 0 ans = 0 >>1 || 0 ans =  1 >>xor(1,0) ans =  1 >>1 == 1 ans =  1 >>1 == 1 % this is a comment ans =  1
>> PS1(">>>") % prompt would be changed to >>>
>>a = 3; % semicolon suppressing input >>b = "hi"; >>a = pi a =  3.1416 >>disp(sprintf("2 dicimals: %0.2f", a)) 2 dicimals: 3.14 >>
>>format long >>a a =  3.14159265358979

行列の基礎的な取り扱い
>>A = [1 2;3 4; 5 6] A =
   1   2    3   4    5   6
>>v…

Machine Learning (Andrew Ng) @ Coursera その2

第二回目の Machine Learning by Andrew Ng氏

今回は、線形回帰問題の解法として、最急降下法と正規方程式があるけど、
それらの特性について理解しようぜという話が主。


Feature scaling

最急降下法の収束スピードは各軸の値のスケールが近い方が速い。
スケールが揃っていないと、最急降下法における微分値が大きくなるケースが増えて(?)、
収束が遅くなる。
歪んだ楕円形を解消するため、各軸の数値をスケーリングすると収束特性が向上する。
この辺の数理的な背景については言及しないが、図的には納得の行く話。


覚えること:
 フィーチャーを同じ範囲に入るようにスケーリングすることで早く最急降下法が収束する。
 ( ⇔ より少ないイタレーション回数で収束する)

フィーチャースケーリングの一つとしては、Mean normalizationが便利
平均値で引いて、標準偏差でスケーリングするいわゆる標準化と呼ばれるよく知られた手法。


Gradient Descent in Practice Ⅱ

最急降下法が正しく動作していることのデバッギング方法は、
イタレーション回数を横軸とし、コスト関数の値をプロットすること。
コスト関数が凸で、ステップ長が十分小さければ単調減少するはず。

自動収束判定を行うには閾値を設定する必要があるけど、
それの決定は非常に難しい。
だから、割とコスト関数をプロットして大体の収束判定をグラフィカルに判断することも実務上はよくあること。

コスト関数が収束しないなーと思ったら、
単純に実装ミスか、イタレーションのパラメータ(ステップサイズ)が大きすぎるかを疑ったらよさげです。

収束には向かってるんだけど、コスト関数の収束が遅すぎるなぁと思った時は

こういうのも、図的なイメージが頭のなかに入っていれば、
コスト関数の挙動を見つつ何が原因かを相応できるんじゃないでしょうか。

Normal Equation

正規方程式の話は数学的な話はすっ飛ばして、
データが困難だったらこんな行列Xと教師セットから行列X,ベクトルyを当てはめて

pinv(X'*X)*X'*y すればおk

って感じでした。
ちなみに最急降下法では教師セットの各入力変数のスケールが合ってなかったら揃えてたわけだけど、
正規方程式使う場合は別に微分してイタレーションし…

Machine Learning (Andrew Ng) @ Coursera その1

イメージ
Machine Learning
by Andrew Ng Machine Learning by Andrew Ng =>  https://class.coursera.org/ml-006


Coursera上に転がっている、Stanford大学のAndrew Ng先生の、
Linear Regressionの講義がこれまでに無いわかり易さで感動した。

線形回帰を説明するのに、多変数関数のベクトル微分や凸関数の理解が、
きちんとした理解のためには必要なわけだけど、

- 変数を絞る
- 具体的なデータをプロットして図的に説明する
- 凸関数・偏微分などの細かい事項はスキップ

といった気遣いのお陰で、回帰という問題を万人に(高校生レベルでも)わかるように説明されていた。

おそらく線形回帰の説明を日本の大学で受講すると私の経験上、
偏微分だー凸関数だー行列演算だー
が始まって本質と違う部分で挫折する人間(私)が量産されているはずなんですよ。

できるだけシンプルに、平易な言葉で説明することって
本質が何かを把握した人間にできる所業なのだとひしひしと感じた。



加えて、

基本的には線形回帰は正規方程式で数値的に陽に解けるわけだけど、
最急降下法でのイタレーション処理は、比較的大きなデータセットにおいてはスケールする点にも言及されていたり

講義の冒頭で、
シリコンバレーのエンジニアはOctaveを使ってサクッとプロトタイピングしてから、
C++等の静的型付け言語で書きなおしているとの話もあったり


で最高のコンテンツだと思いました。



話は変わるが、


MOOCとよばれるオンラインの教育コンテンツがこれほど良質だとは思わなかったので驚愕している。
おそらく普通に東大京大通うより効率いい気がしてる。
# 東大通ったこと無いけど。


気になってGoogle trendsでMOOCの主要どころのサービスを検索したところ、
インド・シンガポール・アメリカといったIT + 英語が強い国で人気っぽい。
残念ながら日本がない。。。
今の日本の大学生にもっと広まれば、自分とは比較にならんくらい賢い学生が量産されるのではなかろうか。
逆に、こういった流れに乗れなければIT分野でますます突き放されるのではなかろうか。


ちなみに最近日本語の字幕が出るようになったので、
英語非対応の脳味噌をお持ちの方…

dotinstall:: Ruby on Rails4 のメモ

#05 タスク管理アプリを作ってみよう

  390  rails new taskapp --skip-bundle

一度インストールしたgemのskip

  391  cd taskapp/
  392  emacs Gemfile

therubyracerのコメントアウトを消す。
gem 'io-console' を追記する

  393  rails s

サーバー起動させて動作確認

  396  rails g model Project title

モデル生成。
頭文字は大文字、単数形。

  397  rake db:migrate

DBに反映させる

#06 rails db/rails consoleを使おう

  398  rails db

sqliteのインタラクティブシェル開く

  399  rails console

irb開く

#07 Controllerを作ってみよう

  401  rails g controller Projects

コントローラ生成

  403  emacs config/routes.rb

ルーティングの編集。
resources :projects を追記

  404  rake routes

ルーティングの確認


#08 Projectsの一覧を表示させよう
  407  emacs app/controllers/projects_controller.rb
こんなの作る class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
end
  408  touch app/views/projects/index.html.erb   409  emacs app/views/projects/index.html.erb
こんなの作る
<h1>Projects</h1>
<ul>
  <% @projects.each do |project| %>
  <li> <%= project.title %> </li>
  <% end %>
</ul>   410  …

今日もRails作業メモ

Ruby on Railsで簡単なブログアプリを作成。
 $ rails new sample_app_0819    # Projectを作成  $ cd sample_app_0819/
 $ emacs Gemfile     # gem 'therubyracer' 部分のコメントアウトを削除して gem 'io-console' 追加
 $ bundle exec rails g scaffold book title:string memo:text    # scaffoldでbook作成  $ bundle exec rake db:migrate    # データベースに反映  $ bundle exec rails s    # サーバー起動









クソな仕事を量産するエンジニアはマジで要らない子。

「開発が苦労してることなんてお客さんこれっぽっちも理解しないから、
ユーザーが求める価値を提供できなかったらそのエンジニアの仕事はクソだよ」




つっけんどんな言い方。





だけど響いた。




脳に、刺さった。




いつもこういうものの言い方をする先輩がいる。


言われた時はもうまじでガッペむかつく!!



3分言われた意味を冷静に考える。



反論のロジックを練る。




練る。



練る。



。。。なんも出てこない。



論理的に正しい。



はい、私がクソだ。









結局は実装とコストのトレードオフなんだけど、


エンジニアがマジで極限にギークだったら、


どれもこれもコストゼロに漸近して、



一瞬で価値提供できて、


会社ガッポガッポ。












付加価値が出せていない。



下位レイヤのせい、システムアーキテクチャのせい。


そんなエンジニア、まじで要らいない子。





結論!!




頑張ろう。



批判の中に、建設的な意見を入れよう。



いつも語尾は「できる」にしよう。

Ruby on RailsをEC2上で実行してみるの巻

動作環境の確認

blogアプリをGithubからcloneして鯖立てしてみる。
http://iti.hatenablog.jp/entry/2014/05/20/163244
記述通り実行したらちゃんとEC2上で動作しました。
実行環境が問題ないことがわかって安心。
スクラッチからRails
次に、スクラッチからRailsを実行してみたら以下のエラー発生。
$ bundle exec rails g scaffold book title:string memo:text /home/ec2-user/.gem/ruby/2.0/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- io/console (LoadError)
このエラーが出た時は、
gem install io-console してGemfileに gem 'io-console' を追記すれば良い。

参考URL:
http://stackoverflow.com/questions/23184819/rails-new-app-or-rails-h-craps-out-with-cannot-load-such-file-io-console

Scrapyでスクレイピングする話@ Pytexas2013

イメージ
スクレイピングをPythonでやるのに、
urllib2とかrequestとかbeautifulsoup組み合わせて実装するの面倒ですよね。
スクレイピーはそういったタスクを全部やってくれて、おまけにクローリングのスケジューリングとかもできてしまうフレームワークがあります、それがScrapy。

Githubに講演者がGithubにレポジトリあげてくれていた。
https://github.com/dmclain/scrapy-pytexas-2013




/spiders/talkspider_basic - parse a single page and yield a series of items
単純に1ページをスクレイプするscrapyのデモ。

PytexasItemは収集する要素のクラス。
データモデルを定義しています。

classPytexasItem(Item):# define the fields for your item here like:# name = Field()title=Field()time=Field()speaker=Field()description=Field()


TalkspiderBasicSpiderはクロールする際のスパイダーを実装します。
name, allowed_domains, start_url はクラスの要素で、
その名の通りスパイダーがクロールするドメインとかURLを指定します。
name is used for internally keeping track of なので内部的に利用されるクラスの要素です。



classTalkspiderBasicSpider(BaseSpider):