計測用テストシェル
#!/bin/bash startTime=`date +%s%3N` # 計測処理 for ((i=0; i < 10000; i++)); do echo $i done endTime=`date +%s%3N` elapsedTime=`echo $(($endTime - $startTime))` echo "elapsedTime: $elapsedTime msec"
出力結果
1 2 ・・・ 9999 elapsedTime: 330 msec
#!/bin/bash startTime=`date +%s%3N` # 計測処理 for ((i=0; i < 10000; i++)); do echo $i done endTime=`date +%s%3N` elapsedTime=`echo $(($endTime - $startTime))` echo "elapsedTime: $elapsedTime msec"
1 2 ・・・ 9999 elapsedTime: 330 msec
-- 通常インデックス create index idx_name on table_name (name); -- 複合インデックス create index idx_group_id_name on table_name (group_id, name);
作成したIndexを確認する
show index from table_name;
誤って作成したIndexを削除する
alter table table_name drop index idx_group_id_name;
EXPLAIN select * from table_name where name = 'test';
aws s3設定済みの前提。
#!/bin/bash for file in `ls dump_*.sql | cut -d'.' -f1`; do tar --remove-files -zcvf "$file".tgz "$file".sql aws s3 cp "$file".tgz s3://dump/ STATUS=$? if [ $STATUS = 0 ]; then rm -fr "$file".sql fi done
TortoiseGit、SorceTreeのssh設定をまとめてみます。
2つ使う理由としては、TortoiseGitが差分が見やすい、
SorceTreeは現状が視覚的に見えるので。
TortoiseGitをインストールした後に、 TortoiseGitのディレクトリ内にある「PuTTyPuTTYgen」を起動
Generateを押した後にマウスをぐりぐりと動かし、キーを作成。
Save private keyでを押して、praivat.ppk(秘密鍵)を作成。
Save public keyを押して、public.ppk(公開鍵)を作成。
右クリで表示する「Git Clone」のメニューを開いて
Load Putty Keyのところで、作成したprivate.ppkを設定。
これでリポジトリにある公開鍵で鍵がかかった情報に秘密鍵で鍵を開けに行き、
情報を取得できるようになる。
あとは、取得先のリポジトリURLを指定すればOK
「メニュー」→「ツール」→「SSHエージェントを起動」
PuTTYを立ち上げる。TortaiseGitと同じ要領でKeyを作成。
「メニュー」→「ツール」→「Launch SSH Agent」→「Pagentを起動」
Add Keyボタンで作成した秘密鍵を登録してパスワードを入力
Pagentは、pullやpushの際に毎回、パスワードを聞かれなくしてくれるツールです。
元のパス:リモート先のリポジトリURL
保存先パス:ローカルリポジトリのパス
以上です。
広告系、ECサイト、androidアプリなど
サービスによって、求められる技術が変わってくる。
残業推奨か、残業制限か。
社員の顔色はどうか笑。顔色が悪い場合、サービスやシステムも思わしくない場合が多い。
業種にも寄るが、髪型・服装・喋り方などでもある程度わかる。
Java, JavaScript(JQuery), Perlなど。RubyやC++などサブで使っているかなども押さえておきたい。
どのくらいの割合で使うのか。
Junitで単体テスト書いているか。書いているところは、企業体力ある気がする。
テストに工数さけるってことだから。
フロント、サーバー、DBアクセスなどフレームワーク。
独自フレームワークでないことを願いたい。
CVS(もうないか)、SVN、Git。 最近、ずっとSVNだったけど、Gitになったから復習しないとわかんね。
Ant, Maven, gradle ビルドツール。大事だよね。gradleって便利なのかな。使ったことない。
Jenkins。Javaで他にCIツールってあるのかな。
Apche、Tomcat、Nginx。サーバー周り。
Oracle、PostgreSQL これはどれでもいいかな。DBMS毎のクセのあるSQLの書き方はいけない気がするし。
Java ServletをWebサーバー上で動作させるための「サーブレットコンテナ」の一つ。
作成したJava Servletの動作確認をするための簡易的なWebサーバーとしての機能も備えています。
本格的にWebサービスを作成する場合は、Apache(Webサーバーソフト)をサーバーにインストールして
サーバーを動作させます。
tomcat($CATALINA_HOME) ∟ bin ・・・Tomcatプログラム格納先 ∟ conf ・・・各種設定ファイル格納先 ∟ context.xml ∟ sever.xml ∟ tomcat-users.xml ∟ web.xml ∟ lib ・・・必要なAPIを格納。DB接続など ∟ logs ・・・ログ格納先 ∟ temp ∟ webapps ・・・作成アプリの格納先(デプロイ先) ∟ ROOT ・・・http://localhost:8080/でアクセスできる(ROOTの名前の通り、ルートでアクセス可) ∟ index.html ∟ WEB-INF ・・・WEB-INF以外は公開される。WEB-INF以下は、公開されない。設定ファイルなどを配置 ∟ web.xml ・・・classes以下のクラスファイルへどのようなURLでアクセスさせるかを記載 ∟ classes ・・・コンパイル済みファイルを格納 ∟ docs・・・http://localhost:8080/docs/でアクセスできるアプリ ∟ examples ∟ host-manager ∟ manager ∟ work
次にTomcatの設定ファイルの概要について確認していきます。
∟ conf ・・・各種設定ファイル格納先 ∟ context.xml ∟ sever.xml ∟ tomcat-users.xml ∟ web.xml
実際の設定ファイルの配置先は、conf¥Catalina¥localhost以下になります。 localhostはホスト毎のディレクトリ。
∟ conf ・・・各種設定ファイル格納先 ∟ Catalina ∟ localhost ∟ ROOT.xml ・・・ 静的ファイルを保持するプロジェクトの読み込み使ったりする ∟ sampleApp.xml ・・・実際に作成したアプリのcontext.xml
コンテキストの登録を行うファイルです。
アプリの配置先とその呼び出し方を設定します。
<Context path="/hello" docBase="c:/sampleApp/helloworld"/>
docBaseにアプリケーションのルートディレクトリを指定。
pathには、アプリケーションを呼び出すための文字列を指定します。
helloworld以下にindex.htmlが配置されている前提とすると。
呼び出す際は以下のようなURLとなります。
http://localhost:8080/hello/index.html
サーバー単位の設定ファイルです。
Webアプリケーションの登録、ロギング、アクセス方法などが指定してあります。
EnginタグのNameでCatalinaが指定してあったり、defaultHostでlocalhostが指定して
あったりします。Catalinaがサーブレットコンテナ。
昔は、Context pathの指定もこのファイルに存在していたが、現状は、context.xmlとなっている。
Webアプリケーションマネージャーを使う際にお世話になるファイル。
Webアプリケーションマネージャーは、ウェブ画面でサーバーの配備や起動、停止を行えるツールです。
ウェブ画面にログインするためのアカウントを設定したりします。
以下のアカウントを設定する場合、は以下のように設定します。
ユーザー名:admin
パスワード:pass
<tomcat-users> <role rolename="manager"/> <user username="admin" password="pass" roles="manager"/> <!-- <role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> --> </tomcat-users>
コンテキストの登録により、静的ファイル(.html)などは参照できますが、
Servletなどは、別途web.xmlに指定が必要です。
フレームワークを導入していると、独自の設定ファイルやアノテーションやクラス名からの推測で設定が不要だったりします。
フレームワークなしの場合の設定を押さえておくことで、Servletを用いていた際の基本設定を理解しておきます。
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> </web-app>
上記のようにサーブレットのクラス名とサーブレット名、サーブレット名と呼び出しURLに付与するパス名を 紐付けるように指定します。
以下のように呼び出します。
http://localhost:8080/hello/helloworld