ブリ大根作りました。
11月になり、煮物や食べ物が美味しい季節になってきました。
今日は↓(ぶり大根)を作りました。
追記:上にのってる白い欠けらは、生姜です。
材料:
大根(上半分)
ブリ(小パック 時価:250円くらい)(今回は頭の部分を使いましたが、切り身でもOK)
水300ml
出汁醤油100ml(or醤油)
みりんor砂糖(出汁醤油の場合なくても可)
生姜の薄切り(これが少ないと物足りない一品に…)
↑味付けは好みの問題なので参考程度に…
作り方:
1:大根を下茹でします。
2:下茹で使った湯をブリに掛けて軽く湯通しします。
3:新たに水を入れ材料を全て入れます。(大根が下になるように)
4:鍋にふたをして、中火で……、、沸騰したら弱火に変えてこのまま20分間煮れば完成。
↑中火だと吹きこぼれる恐れがあるため 沸騰したら弱火に変えると手間が掛かりません。
ブリより一緒に煮た大根の方が美味しいという…
ネタに困ったら料理ネタに逃げてます…。
今回、料理に使った出汁醤油(これを薄めるだけで、うどんの汁が作れる優れもの)↓
近くのスーパーでも売ってるのでここで買う必要ないけどねw
今日は↓(ぶり大根)を作りました。
追記:上にのってる白い欠けらは、生姜です。
材料:大根(上半分)
ブリ(小パック 時価:250円くらい)(今回は頭の部分を使いましたが、切り身でもOK)
水300ml
出汁醤油100ml(or醤油)
みりんor砂糖(出汁醤油の場合なくても可)
生姜の薄切り(これが少ないと物足りない一品に…)
↑味付けは好みの問題なので参考程度に…
作り方:
1:大根を下茹でします。
2:下茹で使った湯をブリに掛けて軽く湯通しします。
3:新たに水を入れ材料を全て入れます。(大根が下になるように)
4:鍋にふたをして、中火で……、、沸騰したら弱火に変えてこのまま20分間煮れば完成。
↑中火だと吹きこぼれる恐れがあるため 沸騰したら弱火に変えると手間が掛かりません。
ブリより一緒に煮た大根の方が美味しいという…
ネタに困ったら料理ネタに逃げてます…。
今回、料理に使った出汁醤油(これを薄めるだけで、うどんの汁が作れる優れもの)↓
近くのスーパーでも売ってるのでここで買う必要ないけどねw
JAVAでジャンケンプログラム Ver0.1
ジャンケンで検索に引っかかったみたいなのでプログラム作ってみました。
Janken.java
public class Janken{
//ぐー
public static final char HAND_GUU = 'G';
//ちょき
public static final char HAND_CHOKI = 'C';
//ぱー
public static final char HAND_PAR = 'P';
//勝ち
public static final char WIN = 'W';
//負け
public static final char LOSE = 'L';
//引き分け
public static final char DRAW = 'D';
//自分の手を保持するインスタンス変数
private static char hand = 0;
//手を考えるメソッド
public void AI(){
//敵の手
hand = HAND_GUU;
}
//yHandの勝敗を判定します。
public static char judgeJanken(char yHand) throws NohandException{
if (hand == 0) {
throw new NoHandException();
}
if(yHand == hand) {
return DRAW;
}
switch(yHand) {
case HAND_GUU:
if (hand == HAND_CHOKI) {
return WIN;
}
else {
return LOSE;
}
break;
case HAND_CHOKI:
if (hand == HAND_PAR) {
return WIN;
}
else {
return LOSE;
}
break;
case HAND_PAR:
if (hand == HAND_GUU) {
return WIN;
}
else {
return LOSE;
}
break;
default:
throw new JankenException();
}
}
}
JankenException.java
public class JankenException extends Error{
String getMessage(){
return "出し手が不正です。";
}
}
Janken.java
public class Janken{
//ぐー
public static final char HAND_GUU = 'G';
//ちょき
public static final char HAND_CHOKI = 'C';
//ぱー
public static final char HAND_PAR = 'P';
//勝ち
public static final char WIN = 'W';
//負け
public static final char LOSE = 'L';
//引き分け
public static final char DRAW = 'D';
//自分の手を保持するインスタンス変数
private static char hand = 0;
//手を考えるメソッド
public void AI(){
//敵の手
hand = HAND_GUU;
}
//yHandの勝敗を判定します。
public static char judgeJanken(char yHand) throws NohandException{
if (hand == 0) {
throw new NoHandException();
}
if(yHand == hand) {
return DRAW;
}
switch(yHand) {
case HAND_GUU:
if (hand == HAND_CHOKI) {
return WIN;
}
else {
return LOSE;
}
break;
case HAND_CHOKI:
if (hand == HAND_PAR) {
return WIN;
}
else {
return LOSE;
}
break;
case HAND_PAR:
if (hand == HAND_GUU) {
return WIN;
}
else {
return LOSE;
}
break;
default:
throw new JankenException();
}
}
}
JankenException.java
public class JankenException extends Error{
String getMessage(){
return "出し手が不正です。";
}
}
コーディング地獄 0x10
コーディングしながら仕様書を修正…
連携部分に修正要求しながらコーディング
@1ヶ月で終るらないと進捗に遅れが…
毎日残業ですわw
でも2ヶ月残業なかったので 給料増えて少しうれしかったりするw
連携部分に修正要求しながらコーディング
@1ヶ月で終るらないと進捗に遅れが…
毎日残業ですわw
でも2ヶ月残業なかったので 給料増えて少しうれしかったりするw
炊飯器に残ったご飯を長持ちさせる方法
一人暮らしをしていると夜炊いたご飯が、朝には少し干からびている…
そんなことはありませんか?
ということで、今日はご飯を長持ちさせる方法がテーマです。
ご飯を炊いて2時間後以降に1合あたり20ccのミネラルウォーターをいれ
よくかき混ぜる。要するに干からびる前に蒸発する水分を事前に足してやればいいのです。
これでとりあえず朝まで持ちます(保温状態)。
注意点
水を入れた後は、ご飯が水浸しになるので朝まで食べられませません。
この技で長持ちさせたご飯に再度この技を使うのはおやめください。←腐敗する可能性があるので…
以上一人暮らしのネタでした。
ちなみに、実験では朝までは干からびませんでした。
水の量はご自身で微調整してください。
ではまた…
そんなことはありませんか?
ということで、今日はご飯を長持ちさせる方法がテーマです。
ご飯を炊いて2時間後以降に1合あたり20ccのミネラルウォーターをいれ
よくかき混ぜる。要するに干からびる前に蒸発する水分を事前に足してやればいいのです。
これでとりあえず朝まで持ちます(保温状態)。
注意点
水を入れた後は、ご飯が水浸しになるので朝まで食べられませません。
この技で長持ちさせたご飯に再度この技を使うのはおやめください。←腐敗する可能性があるので…
以上一人暮らしのネタでした。
ちなみに、実験では朝までは干からびませんでした。
水の量はご自身で微調整してください。
ではまた…
NAS ネットワークアッタチストレージ 購入
先日、NASといわれる外部記憶装置を買いました。
ストレスなく使えると思ったのですが100BASE-Tの回線では動作速度が遅いようです。
製品は、1000BASE-T対応なのに私の回線が100BASE-T…
NASに自動接続的に再接続できない方向けのBATファイル
難点:パスワード・IDは平文保存
login.bat
NET USE a-z: \\IPアドレス\フォルダ名 /USER:ユーザ名 パスワード /PERSISTENT:NO
解説
a-z ドライブ文字に置換
/PERSISTENT:NO ログイン時に接続を復元しない
接続の復旧はバッチファイルが行なうので問題なし
備考:
IPアドレスは固定化したほうが便利です。
これをタスクスケジューラ(ログイン時に実行)または、スタートアップに登録する。
NASに省電力機能がある場合は無効化 スリープ後の復旧時間が気にならないなら
変更する必要なし。
私もこれで少し便利になりました。
ストレスなく使えると思ったのですが100BASE-Tの回線では動作速度が遅いようです。
製品は、1000BASE-T対応なのに私の回線が100BASE-T…
NASに自動接続的に再接続できない方向けのBATファイル
難点:パスワード・IDは平文保存
login.bat
NET USE a-z: \\IPアドレス\フォルダ名 /USER:ユーザ名 パスワード /PERSISTENT:NO
解説
a-z ドライブ文字に置換
/PERSISTENT:NO ログイン時に接続を復元しない
接続の復旧はバッチファイルが行なうので問題なし
備考:
IPアドレスは固定化したほうが便利です。
これをタスクスケジューラ(ログイン時に実行)または、スタートアップに登録する。
NASに省電力機能がある場合は無効化 スリープ後の復旧時間が気にならないなら
変更する必要なし。
私もこれで少し便利になりました。
私のお腹と財布の関係
私のお腹とお財布は反比例の関係にあります。
今日は、我慢…我慢と思っても約三日で心が折れます…
いつも、お弁当持参生活始めてやると思っているのですが実行できません。
まずは、ご飯を炊く週間をつけることから始めたいと思います。
余談ですが無洗米+99円の水の組み合わせに目覚めた今日この頃…
軽量して線までお水入れて終わり
便利な時代になったものです。
今日は、我慢…我慢と思っても約三日で心が折れます…
いつも、お弁当持参生活始めてやると思っているのですが実行できません。
まずは、ご飯を炊く週間をつけることから始めたいと思います。
余談ですが無洗米+99円の水の組み合わせに目覚めた今日この頃…
軽量して線までお水入れて終わり
便利な時代になったものです。
フレームワークと私 0x0f
やっと、プログラミングです。少しは楽しくなるのかなと思いましたが、実は違う…。
詳しくは書けないが、簡潔に言うとこんなプログラミングです。
今のプログラムで私が担当している部分だけで足し算をするプログラムを実装する例…
Map keisam(Datamap data){
Integer apple = data.get(DATAMAP.KEY_APPLE);
Integer orange = data.get(DATAMAP.KEY_ORANGE);
WorkLogic wl = new WorkLogic();
Integer total = wl.Add(apple,orange);
Map map = new Map();
map.put(DATAMAP.KEY_TOTAL,total);
return map;
}
こんな感じのロジックを書いてます。
計算する処理は別なメソッドに格納されており、更にそのメソッドその中で実際に計算を行う前手続きを行い
更にそのメソッドから別なメソッドを呼び出して計算処理を行っています←カプセル化 階層分離…
構造にするとこんな感じ…
外部ロジック
↓
ロジック(keisan)←ウチの担当
↓
内部ロジックA←ウチの担当
↓
内部ロジックB
↓
内部ロジックC
納品した場合、仕様書だけで以上のプログラムの改修作業を行うことを考えると
SEの悲鳴が聞こえてきそうですw
↑
プログラムの改修にはフレームワークのマニュアルとシステムの仕様書を理解が必須なのです。
そのことを考えると、フレームワークにすることで保守性があがるとは言えないようです。
多くの企業が共通のフレームワークを用いているなら話は別ですが…。
流石に、中身さらすとヤバいんでそれっぽく書いてみました。
詳しくは書けないが、簡潔に言うとこんなプログラミングです。
今のプログラムで私が担当している部分だけで足し算をするプログラムを実装する例…
Map keisam(Datamap data){
Integer apple = data.get(DATAMAP.KEY_APPLE);
Integer orange = data.get(DATAMAP.KEY_ORANGE);
WorkLogic wl = new WorkLogic();
Integer total = wl.Add(apple,orange);
Map map = new Map();
map.put(DATAMAP.KEY_TOTAL,total);
return map;
}
こんな感じのロジックを書いてます。
計算する処理は別なメソッドに格納されており、更にそのメソッドその中で実際に計算を行う前手続きを行い
更にそのメソッドから別なメソッドを呼び出して計算処理を行っています←カプセル化 階層分離…
構造にするとこんな感じ…
外部ロジック
↓
ロジック(keisan)←ウチの担当
↓
内部ロジックA←ウチの担当
↓
内部ロジックB
↓
内部ロジックC
納品した場合、仕様書だけで以上のプログラムの改修作業を行うことを考えると
SEの悲鳴が聞こえてきそうですw
↑
プログラムの改修にはフレームワークのマニュアルとシステムの仕様書を理解が必須なのです。
そのことを考えると、フレームワークにすることで保守性があがるとは言えないようです。
多くの企業が共通のフレームワークを用いているなら話は別ですが…。
流石に、中身さらすとヤバいんでそれっぽく書いてみました。
ごはん(夜)即席ラーメン Part1
今日の晩飯
即席ラーメン塩です。
- サッポロ一番(しお味) 5食入り
- ¥298
ネギ半分
鶏肉唐揚げ用モモ肉50g
↑カット済みなので包丁を汚さずに済みます。
余ったらラップして冷凍
卵1個
水1L(ゆで卵用500ml ラーメン用500ml)
手順
1. ネギを斜めにカット
2. 卵を茹で(10分)て半分にカット
3. 水を入れ替えて鶏肉を2個入れます。(水から)
4. 水が沸騰したら麺を入れて3分煮ます
5. カットしたネギを入れて1分
6. スープの素を溶かしてから、ゆで卵・添付のゴマを入れて完成
手軽で美味しいのでお試しを…
へっぽこアプリ講座0x05
久しぶりにへっぽこ講座… 前回から間が開いてしまいましたが張り切っていきます。。
public void run(){
スレッドを開始したときによびだられるメソッド
while(true){
このアプリケーションのメインループ
繰り返し条件にtrueをしていすることで無限ループになります。
try{
例外が発生する可能性がある処理を書くブロック
Thread.sleep(wait);
waitミリ秒待ちます。
waitミリ秒経過後、ディスパチャ処理後に復帰します。
catch(InterruptedException e)
例外を受け取ります。
if(key1==true)iapp.terminate()
ボタンが押されると、アプリケーションが終了します。
終了メソッドは、terminate()
public void paint(Graphics g){
このCanvasメソッドの描画部分をオーバライド
描画処理は全てここに書き込みます。
String str = "決定ボタンで終了";
表示文字列
g.setColor(g.getColorOfRGB(0,0,0));
線、文字、矩形などにつかう色を定義します。
Font f = Font.getFont(Font.FACE_SYSTEM|Font.SIZE_LARGE|Font.STYLE_BOLD);
解説しますが、、このフォント使ってないですね…w
getFont()でフォントのスタイルを定義します。
------フォントで使える定数一覧-------
組み合わせて使うもの
FACE_MONOSPACE
FACE_PROPORTIONAL
FACE_SYSTEM
SIZE_LARGE
SIZE_MEDIUM
SIZE_SMALL
STYLE_BOLD
STYLE_BOLDITALIC
STYLE_ITALIC
STYLE_PLAIN
-----------------------------------
組み合わせ方法
setFont(int)のintの構成方法
FACE_* | SIZE_* | STYLE_*
単体で使う物一覧
TYPE_DEFAULT
フォントの指定なしで描画されるフォント
見出し用フォント
TYPE_HEADING
g.drawString(str,(getWidth()-f.getBBoxWidth(str))/2,(getHeight()+f.getAscent())/2);
str描画文字列を定義した変数
文字の描画する。この処理を要約すると画面の中央に文字を表示
中央に表示できない場合は、文字列を表示したときに画面から溢れているのが原因
このソースも溢れているので 正しく表示できません。
バグ:表示されているフォントと座標計算に使ったフォントは別物です。
ごめ…
getWidth()
画面のX方向解像度
f.getBBoxWidth(str)
このフォントでstr文字列変数を描画したときの、X方向の幅
getHeight()
画面のY方向解像度
f.getAscent()
このフォントで描画したときのY方向の高さ(1行分)
setFont(font)
今回、忘れてた命令(すまん、バグ入りだった…)
定義したフォントを文字列の描画に利用します。
この処理がないとフォント変わりません。
public void processEvent(int type, int param)
割り込み処理を担当するメソッドである。
何らかのイベントが発生すると呼び出される。
今回のイベントはボタン操作が行われたというイベントである。
if(type == Display.KEY_PRESSED_EVENT)
typeにはイベントの種類が格納されている。
paramには押されたボタンのキーコード(機種依存)が格納されている。
携帯の機種が違う場合は同じボタンでも違うコードが格納されるので
通常は定数を使ってプログラミングする。(全て大文字の変数名)
switch(param){
case Display.KEY_SELECT:key1 = true;
break; // セレクトー(決定キー)が押された
}
}
key1をtrueにrun()のif文で判定され結果的に終了処理が実行され
アプリが終了する。
// キーが離されたときの処理
if(type == Display.KEY_RELEASED_EVENT){
switch(param){
case Display.KEY_SELECT:key1 = false; break; // セレクトキー
}
}
説明終了…
ブロック単位で説明していますのでコピペする場合は{}の数にに注意してください。
全ソースはここの記事参照
public void run(){
スレッドを開始したときによびだられるメソッド
while(true){
このアプリケーションのメインループ
繰り返し条件にtrueをしていすることで無限ループになります。
try{
例外が発生する可能性がある処理を書くブロック
Thread.sleep(wait);
waitミリ秒待ちます。
waitミリ秒経過後、ディスパチャ処理後に復帰します。
catch(InterruptedException e)
例外を受け取ります。
if(key1==true)iapp.terminate()
ボタンが押されると、アプリケーションが終了します。
終了メソッドは、terminate()
public void paint(Graphics g){
このCanvasメソッドの描画部分をオーバライド
描画処理は全てここに書き込みます。
String str = "決定ボタンで終了";
表示文字列
g.setColor(g.getColorOfRGB(0,0,0));
線、文字、矩形などにつかう色を定義します。
Font f = Font.getFont(Font.FACE_SYSTEM|Font.SIZE_LARGE|Font.STYLE_BOLD);
解説しますが、、このフォント使ってないですね…w
getFont()でフォントのスタイルを定義します。
------フォントで使える定数一覧-------
組み合わせて使うもの
FACE_MONOSPACE
FACE_PROPORTIONAL
FACE_SYSTEM
SIZE_LARGE
SIZE_MEDIUM
SIZE_SMALL
STYLE_BOLD
STYLE_BOLDITALIC
STYLE_ITALIC
STYLE_PLAIN
-----------------------------------
組み合わせ方法
setFont(int)のintの構成方法
FACE_* | SIZE_* | STYLE_*
単体で使う物一覧
TYPE_DEFAULT
フォントの指定なしで描画されるフォント
見出し用フォント
TYPE_HEADING
g.drawString(str,(getWidth()-f.getBBoxWidth(str))/2,(getHeight()+f.getAscent())/2);
str描画文字列を定義した変数
文字の描画する。この処理を要約すると画面の中央に文字を表示
中央に表示できない場合は、文字列を表示したときに画面から溢れているのが原因
このソースも溢れているので 正しく表示できません。
バグ:表示されているフォントと座標計算に使ったフォントは別物です。
ごめ…
getWidth()
画面のX方向解像度
f.getBBoxWidth(str)
このフォントでstr文字列変数を描画したときの、X方向の幅
getHeight()
画面のY方向解像度
f.getAscent()
このフォントで描画したときのY方向の高さ(1行分)
setFont(font)
今回、忘れてた命令(すまん、バグ入りだった…)
定義したフォントを文字列の描画に利用します。
この処理がないとフォント変わりません。
public void processEvent(int type, int param)
割り込み処理を担当するメソッドである。
何らかのイベントが発生すると呼び出される。
今回のイベントはボタン操作が行われたというイベントである。
if(type == Display.KEY_PRESSED_EVENT)
typeにはイベントの種類が格納されている。
paramには押されたボタンのキーコード(機種依存)が格納されている。
携帯の機種が違う場合は同じボタンでも違うコードが格納されるので
通常は定数を使ってプログラミングする。(全て大文字の変数名)
switch(param){
case Display.KEY_SELECT:key1 = true;
break; // セレクトー(決定キー)が押された
}
}
key1をtrueにrun()のif文で判定され結果的に終了処理が実行され
アプリが終了する。
// キーが離されたときの処理
if(type == Display.KEY_RELEASED_EVENT){
switch(param){
case Display.KEY_SELECT:key1 = false; break; // セレクトキー
}
}
説明終了…
ブロック単位で説明していますのでコピペする場合は{}の数にに注意してください。
全ソースはここの記事参照
