既存プロジェクトをSourceTreeでbitbucketにgitリポジトリを作成する手順

方法はいろいろあると思うが、ここではすべてをSourceTree上で行う手順を記述する。


1.既存プロジェクタ(フォルダ)をSouceTreeに読み込み
f:id:Tug-uca:20141231164638j:plain



2.管理対象ファイルを選択し、marterブランチを作成
f:id:Tug-uca:20141231164702j:plain


3.コミットする
f:id:Tug-uca:20141231175905j:plain


4.bitbucket上のリポジトリを作成
f:id:Tug-uca:20141231180057j:plain


5.ローカルのリポジトリにリモートのリポジトリを追加
f:id:Tug-uca:20141231175924j:plain


URL/パス:https://[アカウント名]@bitbucket.org/[アカウント名]/[リポジトリ名].git
f:id:Tug-uca:20141231180117j:plain



6.ローカルのリポジトリにリモートのリポジトリにプッシュ
f:id:Tug-uca:20141231164703j:plain


以上。

Apache Commons VFSでusername,passwordに利用禁止文字を使う方法

String  hostName = "US456564" ; 
String username  = "sftpuser@Location";
String password = "Test!@#$%^&*()[]:;";
String  localFilePath = "home57556";

FileObject remoteFile = manager.resolveFile(					createConnectionString(hostName, username, password, remoteFilePath, fileName),					createDefaultOptions());

Apache Commons VFSを利用する際、usernameやpasswordに@等の文字を使うと以下のようなエラーが出てftpにアクセスすることができない。

Caused by: org.apache.commons.vfs2.FileSystemException: Invalid absolute URI "sftp://sftpuser@Location:***@US456564/home57556".


これは内部的には以下のようにアクセスしているためである。

manager.resolveFile("sftp://sftpuser@Location:Test!@#$%^&*()[]:;@US456564/home57556");


この時は、使用できない文字を%○○のようにエンコードしたものを入力するとアクセスができる。

manager.resolveFile("sftp://sftpuser%40Location:Test!%40%23%24%25%5E%26*%5B%5D%3A%3B@US456564/home57556");

eclipseで特定ファイルを除外してwarを作成する(antを利用)

warファイルを作成するにあたって、プロジェクト内のライブラリやgitのリポジトリも一緒にまとめてしまうので、必要以上にサイズが大きくなっていたのでapache-antを使って特定ファイルを除外してwarを作成する方法を調べた。

1.apache-antのインストール

http://ant.apache.org/にアクセスし、zip版をダウンロードする。
ダウンロードしたら任意のフォルダ(今回はProgram Files内)に展開する。
以下の環境変数を追加する。
ANT_HOME C:\Program Files\apache-ant-1.9.4
PATH C:\Program Files\apache-ant-1.9.4\bin

C:\> ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

上記のようになればインストール成功

2.build.xmlの作成

プロジェクト直下に以下の内容のbuild.xmlを作成する。
このとき、のように、除外したいファイル・フォルダを指定する。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
              	
		 <project basedir="." default="dist" name="">

              	  <!-- warファイルの設定 -->
              	  <property name="war.home" value="." />
              	  <property name="web-app.name" value="appName" />

              	  <!-- jarタスクによってwarファイルを作成 -->
              	  <target name="dist" >
              	    <war destfile="${war.home}/${web-app.name}.war"
              	           webxml="${war.home}/WEB-INF/web.xml">
              	      <fileset dir="${war.home}" excludes="**/web.xml,**/WEB-INF/lib/**,${web-app.name}.war" />
              	    </war>
              	  </target>
</project>

3.warファイルの作成

eclipse内で、build.xmlを右クリック → 実行 → Antビルド
コンソール上で

BUILD SUCCESSFUL
Total time: 985 milliseconds

のような表記が出れば、成功。
warファイルがプロジェクト内直下に作成されている。

参考:

pythonでwebアプリ(pythonインストールからDB接続まで)

pythonでwebアプリを作れる環境を作りたくて、bottle、mysql-connector-pythonを試してみた。
フレームワークは他にも有力なのがあるようでまだbottleでいくかは未決定。
OS:windows8 64bit

https://www.python.org/downloads/
最新版のpython3.4.1をダウンロードして実行。python2に対し後方互換性がないようだが、
どんどん対応するライブラリが増えており、使いたいライブラリはすべてpython3に対応しているようなので、python3で決定。
インストールが完了したらc:\python34とc:\python\Scriptsへのパスを通しておく。

  • pipのインストール

使ったことがないので便利さがわからないのだが、いろんなところにpythonとセットで書いてあるのでとりあえずインストールする。
setuptoolsから(https://pypi.python.org/pypi/setuptools)
環境に応じたez_setup.pyをダウンロードする。

python ez_setup.py
easy_install pip

これで完了。

...もっと簡単にpipを入れる方法もある模様
http://qiita.com/who_you_me/items/831d62f396e6d66dda66

  • エディタのインストール

何でもよいのだが評判が良いのでPyCharm Community Editionをインストール
http://www.jetbrains.com/pycharm/download/
日本語化されてないのが難点

  • bottleのインストールと実行
pip install bottle

インストールしたら公式のチュートリアルに従って実行してみる
http://bottlepy.org/docs/dev/tutorial.html

from bottle import route, run

@route('/hello')
def hello():
    return "Hello World!"

run(host='localhost', port=8080, debug=True)

とりあえずこれでサーバーが立つのでhttp://localhost:8080/helloへアクセスして確認する。
サーバーはgunicornを使うとよいとのこと

DBは既存のmysqlを使いたいのでドライバが必要。
ドライバはいろいろありすぎるよう(参考:http://www.sakito.com/2012/10/python-mysql.html
これといった性能要件もないのでmysql-connecter-pythonを使ってみることにした。
インストール

pip install mysql-connector-python

もし、--allow-externalをつけなさい、というようなエラーが出たら

pip install --allow-external mysql-connector-python mysql-connector-python

DBの方にはあらかじめテーブルを用意しておく。
以下は、DB:testのtable:table1から全データを持ってきて表示するサンプル

import mysql.connector
connect = mysql.connector.connect(db="test", host="localhost", port=3306, user="****", passwd="****")

cur=connect.cursor()
cur.execute('select * from table1')
rows = cur.fetchall()
for row in rows:
    print(row)

cur.close()
connect.close()
  • まとめ

とりあえず最低限動かすための準備はできた。
残りはやりたいことに対して必要な機能(テンプレートとかlogとか)の確認と、
そもそものフレームワークの選定。
他の候補としては実績が多いDjangoかBottleと同じく軽量なFlaskあたりを見てみる予定。

javascript上での動作開始のパターン

javascriptを呼び出すにはonloadだったりonclickだったりあるが、いまいち頭に整理できていなかったのでよく使う実行パターンをタイミング別にまとめてみた。

参考:http://www.shurey.com/js/samples/0_bsc2.html
   http://so-zou.jp/web-app/tech/programming/javascript/event/handler/onload.htm
 

1.読み込み時に実行

 1-1.直接記述

<script type="text/javascript">
<!--
(ここにスクリプトを記述)
//-->
</script>

 1-2.onload()で記述
  複数読み込まれると後に読み込まれたものが優先される。

<script type="text/javascript">
window.onload = function(){
<!--
(ここにスクリプトを記述)
//-->
};
</script>


2.(ボタンorリンク)クリック時に実行

 2-1.リンクをクリック(直接記述)

<a href="javascript:(ここにスクリプトを記述)">クリック</a>

 2-2.リンクをクリック(呼出)

<a href="javascript:(ユーザー関数)">クリック</a>

<script type="text/javascript">
<!--
function(ユーザー関数){
	(ここにスクリプトを記述)
}
//-->
</script>

 2-3.ボタンをクリック

<form><input type="button" value="クリック" onClick="(ユーザー関数)"></form>

<script type="text/javascript">
<!--
function(ユーザー関数){
	(ここにスクリプトを記述)
}
//-->
</script>

3.その他イベント時

http://phpjavascriptroom.com/?t=js&p=event

WOL(Wake On Lan)で出先から自宅PCを起動 その1

たまに、出先でファイルだったりソフトだったり自宅PCの環境が必要になることがある。

今までは、常時起動しておいてリモート接続(teamViewer)で利用していた。

ただ、常時起動はなんかやだな(電気代+夏場の発熱)という気になってきて、Wake On Lanでのリモート起動をできるようにした。

ルータ再起動でグローバルIPが変更されてしまい、IP既知の時しか起動できないという課題は残っているが、

現状の構成・設定を以下に残しておく。

 

1.ネットワーク構成

ネットワーク構成は図のようになった。

Wimaxルータ

 既存のネットワーク環境。特に設定なし。グローバルIPが変更されるという課題がある。

WOL用ルータ

 今回のために購入。WOLをするのに必要。amazonで4000円くらいだった。

日本電気 AtermWG300HP PA-WG300HP

③起動するPC(windows8)

 マザーボードWOLに対応している必要がある。最近はほぼ対応しているらしいが、行う場合は事前に調べることが必要。

f:id:Tug-uca:20140711225340p:plain

 

 

 2.詳細

Wimaxルータ

 今回は特に設定の必要なし。ただしIPに関して注意が必要。

・起動のたびにグローバルIPが変更されてしまう。

niftyグローバルIPであることを保証してなさそう。

2つ目について、niftyの提供するIPがグローバルIPなのプライベートIPなのかの記載がどこを探してもなかった。UQ wimaxなどは2013年6月の段階でプライベートIPへの順次移行を発表している。(http://www.uqwimax.jp/service/information/201305071.html)すぐに変わってしまうということはないかもしれないが、懸念事項としておかなければならなそう。

 

WOL用ルータ

 設定のポイントは2つ

・ブリッジモードにする。 

 WG300HPにはルータ機能を停止したブリッジモードが存在する。このモードにしないと、ルータがグローバルIPを取得できない。やり方は以下の公式マニュアル。

http://www.aterm.jp/function/wg300hp/guide/wireless/list/m01_m60.html

WOLを行う設定。これはマニュアル通りでできた。

http://www.aterm.jp/function/wg300hp/guide/high/wol/m04_t.html

起動するPC(windows8)

 ここまで上手く設定ができているとWOLを行うと、ルータからmagic packetというものが送られる。これをPC側で認識し起動しなければならない。

windowsの設定

http://www.atmarkit.co.jp/ait/articles/0602/25/news014.html

biosの設定

 今回のPCでは

  1. [ディープ パワーオフ モード] に移動し、[入力] を押して [無効] に設定。
  2. [LANポートで電源オン] に移動し、[入力] を押して [有効] に設定。

この2つで設定ができた。

 

3.残っている課題

 Wimaxルータの時に挙げた、「起動のたびグローバルIPが変更」「グローバルIPがプライベートIPになる可能性」がある。

 「起動のたびグローバルIPが変更」について、有償のDDNSを利用すれば間違いなくできそう。ただこれ以上コストをかけるつもりはないので、・フリーのDDNSを利用、・自動検知+メール通知のスクリプトを組む、のどちらかで対応しようと思う。

 グローバルIPがプライベートIPになる可能性については、まだどうなるかが全く分からないので起こってから考える。そのころには別のネット環境にしたくなっているはず。