このサイトを見て、DISPLAYの設定が必要なことを確認しインストール
shをそのまま実行したら、以下のメッセージが出たので・・・。
This program requires DISPLAY environment variable to be set.
Please re-run after assigning an appropriate value to DISPLAY.
このサイトを見て、DISPLAYの設定が必要なことを確認しインストール
shをそのまま実行したら、以下のメッセージが出たので・・・。
This program requires DISPLAY environment variable to be set.
Please re-run after assigning an appropriate value to DISPLAY.
会社の社内勉強会でJenkinsの使い方の例を紹介することがあるそうなんで、事前にJenkinsを触ってみようと。
http://www.buildinsider.net/enterprise/jenkins/01
のサイトを利用して、インストールしてみる。
1.Xcodeのインストール
すでにインストールされていたので、飛ばす・・・
2.homebrewのインストール
を参照にインストール・・・。
やってみたら、どうも過去にインストールされていた・・・。
It appears Homebrew is already installed. If your intent is to reinstall you
should do the following before running this installer again:
rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
3.Jenkinsのインストール
4.Jenkinsの起動
java -jar /usr/local/Cellar/jenkins/1.490/libexec/jenkins.war
5.jenkins起動の確認
単純な事例で、shellの起動を実施してみた。
詳しくJenkinsを知らないので、これから学ぶことになるが、キーワードで継続的イテレーションとか記載されている。(どこの記事だっけな?)
上記のサイトにCronに似ているが条件をフック(多分複雑に出来るということか)したり、出力形式を変更できること、また自動化してテストできるというの利点として書かれている。
社内勉強会でも、面倒なデプロイ作業から、テストの自動化を謳っていそうなので、そこがポイントなのかな?
前回、研修でもらったソースをベースに使ってみようかと思います。
昨日は、研修。
テキストではなく、講師と話したことを忘れないうちにメモメモ。
・URLでxxxdoというクラスで終わっているURLなら、それはStrutsで作られているよ。
→ ほとんどの理由は、トランザクショントークンを使いたいかららしい。
不正な画面遷移を許さないようなフレームワークがStrutsには入っているから。
また、二重登録とかさせないようにするためらしい。新幹線や飛行機の予約サイト
(急いで予約するようなケース)で使っているそうです。
ほんとだ〜〜〜。
amazonとかは最後にカートの中身を確認するからStrutsのトランザクショントークンは使っていないと思われる。だから、Strutsでは作っていないようです。
・画面で使用する文字型は基本String型
→ 画面からリクエストを受けて、サーバー側でvalidationを行おうにも、
型変換時にもともと適切な値が入らずに、validationがかからないケースがある。
例)Strutsでいうと、画面のformをint型で設定し、validation.xmlにintegerチェクをしている場合、画面に文字を入力しても、サーバにリクエストを飛ばした時点で、勝手にInteger.parseIntがかかって、0が入り、integerチェックをしない。
(※実験を仕切っていないので、これが本当なのか・・?ふめい。)
・アーキテクターを育成、勉強会って名古屋よく飛ばされるんですが・・・という質問
→ だったら、東京来た時に人脈作って、呼ぶか、きてくださ〜〜いって言えば
だいたい行くと思いますよ。
アーキテクター不足を東京でも感じているみたいですから・
と、回答を頂いた。
話は脱線しますが、講師の方もいっていましたが、アーキテクターの育成って組織ではなく、個人のがんばりと興味にかかっているというのが現状みたい。
育成するには、XPとか真横でできるアーキテクターの人の作業を見て、自分でTry and Errorを実施し、経験して次に進めるかどうかなんですね。。プロジェクトコストにそんな余裕はなく、かつ、投資もできないので・・・やっぱり個人で覚えるしかないのだね。
→ 講師の人曰く・・・フレームワークとかソフトを作っている会社に移るのも
急激に成長する1つの案だよとアドバイス。。。
それも1つなのかなと。。。
Androidのプログラム学習しようと久々に思い立ち、ADT , Android SDK ManagerでAPIを最新にし、テキストを見ながら、入力フォームとボタンという簡単な画面を作って、さてビルド・・・としたら、「あれ?Rがエラーだ」と。
この2つのサイトで、どうもAPIのバージョンをあげていくと、
http://slumbers99.blogspot.jp/2013/05/eclipse-adt-22-android-sdk-manager-2.html
http://qiita.com/JunSuzukiJapan@github/items/3dd3b0bffb0db7f55356
どうも、Android SDK Build-toolsを入れないと行けないのが判明。
これをインストールして、さあ、大丈夫だろうと進むと。
あれ?まだエラーが。
なんかなとまた調査。
http://blog.takapra.com/2012/05/android%E3%80%80r-javaが消える件/
このサイトを見て、なんか関連ファイルがミスっているとR.javaができないみたい
というのがわかった。
どうも、原因はmanifestみたいだったので修正。
resファイルにR.javaも作成され、今度こそ大丈夫だろうと見ていたが、
今度もまたおかしく。main.xmlが解決できない・・。あれ?
import android.R;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class DataExchange extends Activity {
private EditText textBoxA;
private EditText textBoxB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textBoxA = (EditText)findViewById(R.id.valueA);
textBoxB = (EditText)findViewById(R.id.valueB);
}
/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.data_exchange, menu);
return true;
}
*/
public void onTouch(View v){
String strA = textBoxA.getText().toString();
String strB = textBoxB.getText().toString();
textBoxA.setText(strB);
textBoxB.setText(strA);
}
}
http://d.hatena.ne.jp/none53/20110501/1304267159
で見てみると、どうもandroid.Rのimportがイカンらしい。
Rにエラーが有るときに自動インポートして安心していたのが、こいつが悪さしていた。
このimportを削除するか、packageとxmlのファイルが違うなら、R.javaがあるpackage名をimportすることで解消。やっと作業できる。
package jp.gihyo.mitoma.chap01_01;
//import jp.gihyo.mitoma.chap01_01.*;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class DataExchange extends Activity {
private EditText textBoxA;
private EditText textBoxB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textBoxA = (EditText)findViewById(R.id.valueA);
textBoxB = (EditText)findViewById(R.id.valueB);
}
/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.data_exchange, menu);
return true;
}
*/
public void onTouch(View v){
String strA = textBoxA.getText().toString();
String strB = textBoxB.getText().toString();
textBoxA.setText(strB);
textBoxB.setText(strA);
}
}
仕事のプログラムで
入力項目が整数7桁小数1桁
出力項目が整数7桁
の仕組みでかつ、入力項目が整数値の場合のみ、出力項目へ
遷移させるという仕様にであった。
ともに使う属性はDecimalで実施する。
入力項目の入力チェックをかけたあとに値の遷移をさせようとするのだが、
入力項目に小数が入っているという制約に困ったので、以下のソースのようにして
対応。
import java.math.BigDecimal;
public class DecimalClass {
/**
* @param args
*/
public static void main(String[] args) {
int num = 456;
BigDecimal num2 = new BigDecimal(12345.12);
BigDecimal num3 = num2.setScale(0,BigDecimal.ROUND_DOWN);
//Remain
System.out.println("int num = " + num);
System.out.println("decimal num = " + num2);
//小数を落としたもの
System.out.println("小数落としたもの = " + num3);
}
}
出力結果
int num = 456
decimal num = 12345.120000000000800355337560176849365234375
小数落としたもの = 12345
こうやってすると、Decimalでも整数部だけで対応できるんだなと。
やりながらよっしゃと思ってしまった。。。便利だな〜〜と。
Udacityでの講義の一つ
strに文字、targetに検索したい文字を入力して、
対象の文字が最後に発見されたときの文字の位置を出力するもの。
自分の回答
def find_last(str,target):
if str.find(target) == -1:
return -1
n = 1
while str.find(target, n) > 0:
n = n + 1
return n - 1
模範解答
def find_last(str , target):
last_pos = -1
while True:
pos = str.find(target , last_pos + 1)
if pos == -1:
return last_pos
last_pos = pos
改めて見ると、自分のはマジックナンバーはあるしな・・・。
Whileもこうやって書くのはよくないね・・・。
簡易なことなのかもしれないが、実装者のスキルで見やすさが変わるのは事実だな・・。
英語の勉強もかねUdacityでコンピュータ・サイエンスを復習中。
講座はそこまで多くないのだが、全編英語なので、英語の耳を作りながら、コンピュータの仕組みも覚えられるのが良い所。
基礎講座は Introduction to Computer Science
中級講座は AlgorithmsやWeb developments
上級講座は Design of Computer Programs
などとなっている。
まだまだ初級PGの方にとっては活用できる良い講座だろうと思います。
これをやったらMITの無料講座を聞いてみよう。