約 557,623 件
https://w.atwiki.jp/dechip/pages/50.html
普通の日記/2015年01月07日(水)/乾燥のやつを使って七草粥を作る。 2015-01-07 七草粥を作りました。 米から炊くと良いと聞きましたが今日は残っていた御飯を使って。 中火でグツグツしてきたら弱火にして15分くらい混ぜる。 柔らかくトロみが出てくる。良い加減になったらフタをして蒸らす。 乾燥したインスタント七草。 前は300円程で売っている生の七草セットを使う事も多かった。 良い具合。 味は塩を少し入れただけ。 草の香りがして美味しくできました。 名前 コメント ◇◆前へ/次へ/普通の日記一覧へ
https://w.atwiki.jp/s-ryouri/pages/152.html
67 名前:名無しのやる夫さん[sage] 投稿日:09/06/30(火) 03 34 43 ID uie7z1P8 こんな夜中だというのに、腹が減って眠れなかったので牛乳ラーメンを作る。 というか、人の居ない夜中こそレシピ投下のチャンスだ。 材料:牛乳、玉ねぎ、ネギ、キャベツ、鮭(切り身、1きれ)、ラーメン(1袋) 1:牛乳を鍋に適当に入れ、鮭、玉ねぎ、キャベツを放り込む。なお、鮭は鱗を取っておくのが好ましい。 2:火をつけ、弱火~中火で材料を煮る。焦げ付きやすいので、かき混ぜながら煮る事をお勧めする。 3:10分ほどして各材料が煮えたら、袋からラーメンを取り出し、ラーメンを茹でる(煮る?)。 4:茹で上がったら、丼にスープの素を入れ、汁を先に丼に入れた後、具とラーメンを入れる。 5:仕上げにネギを添えて完成。
https://w.atwiki.jp/mycampaign/pages/82.html
「ある王女の運命」や「未知からの侵略」などのように、前後編やそれ以上のストーリーを含むキャンペーンを作成するには _main.cfg ファイルに [campaign] を複数記述します。
https://w.atwiki.jp/abwiki/pages/263.html
前回やった、草原マップ、主人公キャラの描画に引き続き、今回はキー操作に反応し、キャラが自由に歩き回れるようにするプログラムを作成していきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy2.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、First Seed Materialで公開されているRPG用素材を利用させていただきます。 前回作成したプログラムがある方は、MainWnd.sub のプログラムを変更するだけで実現できます。このページのプログラムリストは、前回からの変更点を太字で示してあるので、それを参考に改良してみて下さい。 新規にプログラムを作成する方は、まずはプロジェクトを作成しておきましょう。新規作成→プロジェクトで、"Fantasy" などという名前のプロジェクトを作成し、MainWnd.sbpを開いて、以下の示すプログラムを入力していって下さい。 ---------------------------------------------------------------------------- イベント プロシージャ ---------------------------------------------------------------------------- このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。 ウィンドウ ハンドル hMainWnd メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、 グローバル領域として利用することができます。 ----------------------------------ここから---------------------------------- 画面の大きさ X*Y Const MAX_MAPX=25 Const MAX_MAPY=20 マップチップ画像 Const FileName_Road="road.bmp" Const MAPCHIP_PIXEL=16 マップチップのピクセル数 Dim hRoadTipsDC As DWord Dim hRoadTipsBmp As DWord キャラクタチップ画像 Const FileName_Char="char.bmp" Const CHAR_PIXEL_X=24 キャラクタチップの幅(単位はピクセル) Const CHAR_PIXEL_Y=32 キャラクタチップの高さ(単位はピクセル) Dim hCharTipsDC As DWord Dim hCharTipsBmp As DWord マップ画像 Dim hMapDC As DWord Dim hMapBmp As DWord 画面表示用の画像 Dim hMemDC As DWord Dim hMemBmp As DWord 描画位置 Dim CharPos As POINTAPI CharPos.x=12 初期位置X CharPos.y=10 初期位置Y 歩行スピード Const WalkingSpeed = 120 ミリ秒 歩行時のウェイトタイムを追加しています。だいたい、120ミリ秒が自然な感じだと思いますが、ここは任意の間隔で結構です。60とかにすると、ダッシュっぽくなったりします(^^; Sub DrawMap() Dim x As Long, y As Long マップを描画 For y=0 To MAX_MAPY-1 For x=0 To MAX_MAPX-1 BitBlt(hMapDC,x*MAPCHIP_PIXEL,y*MAPCHIP_PIXEL,MAPCHIP_PIXEL,MAPCHIP_PIXEL, hRoadTipsDC,0,128,SRCCOPY) Next Next End Sub 草原マップ描画のプロシージャに変更点はありません。 Sub DrawCharacter(CharTipX As Long, CharTipY As Long, MiddleOffsetX As Double, MiddleOffsetY As Double) Dim hMaskDC As DWord Dim hMaskBmp As DWord Dim hTempDC As DWord Dim hTempBmp As DWord Dim x As Long, y As Long マップデータをコピー BitBlt(hMemDC,0,0,MAX_MAPX*MAPCHIP_PIXEL,MAX_MAPY*MAPCHIP_PIXEL,hMapDC,0,0,SRCCOPY) マスク用画像を作成 hMaskDC=CreateCompatibleDC(hMemDC) hMaskBmp=CreateBitmap(CHAR_PIXEL_X,CHAR_PIXEL_Y,1,1,0) SelectObject(hMaskDC,hMaskBmp) BitBlt(hMaskDC,0,0,CHAR_PIXEL_X,CHAR_PIXEL_Y, _ hCharTipsDC, CharTipX*CHAR_PIXEL_X, CharTipY*CHAR_PIXEL_Y, SRCCOPY) スプライト用のキャラクタ画像を作成 hTempDC=CreateCompatibleDC(hMemDC) hTempBmp=CreateCompatibleBitmap(hMemDC,CHAR_PIXEL_X,CHAR_PIXEL_Y) SelectObject(hTempDC,hTempBmp) BitBlt(hTempDC,0,0,CHAR_PIXEL_X,CHAR_PIXEL_Y,hMaskDC,0,0,NOTSRCCOPY) BitBlt(hTempDC,0,0,CHAR_PIXEL_X,CHAR_PIXEL_Y, _ hCharTipsDC, CharTipX*CHAR_PIXEL_X, CharTipY*CHAR_PIXEL_Y,SRCAND) x=CharPos.x*MAPCHIP_PIXEL-((CHAR_PIXEL_X-MAPCHIP_PIXEL)/2)+MAPCHIP_PIXEL*MiddleOffsetX y=CharPos.y*MAPCHIP_PIXEL-((CHAR_PIXEL_Y-MAPCHIP_PIXEL)/2)+MAPCHIP_PIXEL*MiddleOffsetY マスク画像をAND転送 BitBlt(hMemDC, x, y, CHAR_PIXEL_X, CHAR_PIXEL_Y, _ hMaskDC, 0, 0, SRCAND) キャラクタ画像をOR転送 BitBlt(hMemDC, x, y, CHAR_PIXEL_X, CHAR_PIXEL_Y, _ hTempDC,0,0,SRCPAINT) マスク用画像をメモリから解放 DeleteDC(hMaskDC) DeleteObject(hMaskBmp) キャラクタの一時画像をメモリから解放 DeleteDC(hTempDC) DeleteObject(hTempBmp) End Sub 歩行時の描画に、3つのタイプの画像を必要とし、この関数は少し複雑になります。CharTipX、CharTipY変数を通して、マップ上のキャラクタの位置が指定され、その位置に描画を行います。MiddleOffsetX、MiddleOffsetY変数などを利用することで、滑らかな歩行が実現できます。 スプライト処理については、前回と同様です。 Function MainOperation(dwDummy As DWord) While 1 If GetAsyncKeyState(VK_UP) and H8000 Then 上へ移動 CharPos.y=CharPos.y-1 歩きの途中を描画(足を交互に動かす) If CharPos.y mod 2 Then DrawCharacter(0, 0, 0, 0.5) Else DrawCharacter(2, 0, 0, 0.5) End If 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) 移動が完了したときのキャラクタを描画 DrawCharacter(1, 0, 0, 0) 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) ElseIf GetAsyncKeyState(VK_DOWN) and H8000 Then 下へ移動 CharPos.y=CharPos.y+1 歩きの途中を描画(足を交互に動かす) If CharPos.y mod 2 Then DrawCharacter(0, 2, 0, -0.5) Else DrawCharacter(2, 2, 0, -0.5) End If 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) 移動が完了したときのキャラクタを描画 DrawCharacter(1, 2, 0, 0) 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) ElseIf GetAsyncKeyState(VK_LEFT) and H8000 Then 左へ移動 CharPos.x=CharPos.x-1 歩きの途中を描画(足を交互に動かす) If CharPos.x mod 2 Then DrawCharacter(0, 3, 0.5, 0) Else DrawCharacter(2, 3, 0.5, 0) End If 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) 移動が完了したときのキャラクタを描画 DrawCharacter(1, 3, 0, 0) 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) ElseIf GetAsyncKeyState(VK_RIGHT) and H8000 Then 右へ移動 CharPos.x=CharPos.x+1 歩きの途中を描画(足を交互に動かす) If CharPos.x mod 2 Then DrawCharacter(0, 1, -0.5, 0) Else DrawCharacter(2, 1, -0.5, 0) End If 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) 移動が完了したときのキャラクタを描画 DrawCharacter(1, 1, 0, 0) 再描画とウェイト処理 InvalidateRect(hMainWnd,ByVal 0,0) Sleep(WalkingSpeed) End If Sleep(1) Wend End Function ----------------------------------ここまで---------------------------------- このMainOperation関数は、ユーザーからのキー操作を受け付ける機能を持ちます。GetAsyncKeyState関数を利用して矢印キーが押されるのを察知し、キャラクタの移動描画を行います。 こんなGetAsyncKeyState関数を使わなくても、WM_KEYDOWNとかでもいいでしょ? それが、実験してみるとわかりますが、駄目なんですよ。キーの長押しなどを行うとわかりますが、カクカク動作になってとてもRPGのマップ移動の動作は再現できません。このMainOperation関数では、1ミリ秒ごとにキーの状態を調べているので、非常にスムーズな対応ができます。ゲームなどの入力プログラムにおいては重要な点になるで、覚えておくと良いかもしれません。 Sub MainWnd_Destroy() DeleteDC(hRoadTipsDC) DeleteObject(hRoadTipsBmp) DeleteDC(hCharTipsDC) DeleteObject(hCharTipsBmp) DeleteDC(hMapDC) DeleteObject(hMapBmp) DeleteDC(hMemDC) DeleteObject(hMemBmp) Fantasy_DestroyObjects() PostQuitMessage(0) End Sub Destroyイベントに変更点はありません。 Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) Dim hDC As DWord マップチップ画像の読み込み hRoadTipsBmp=LoadImage(GetModuleHandle(0), FileName_Road,IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_DEFAULTSIZE) If hRoadTipsBmp=0 Then MessageBox(hMainWnd,Ex"\qroad.bmp\qの読み込みに失敗","Error",MB_OK or MB_ICONEXCLAMATION) PostQuitMessage(0) End If キャラクタチップ画像の読み込み hCharTipsBmp=LoadImage(GetModuleHandle(0), FileName_Char,IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_DEFAULTSIZE) If hCharTipsBmp=0 Then MessageBox(hMainWnd,Ex"\qchar.bmp\qの読み込みに失敗","Error",MB_OK or MB_ICONEXCLAMATION) PostQuitMessage(0) End If hDC=GetDC(hMainWnd) 各画像のデバイスコンテキストを作成 hRoadTipsDC=CreateCompatibleDC(hDC) hCharTipsDC=CreateCompatibleDC(hDC) hMapDC=CreateCompatibleDC(hDC) hMemDC=CreateCompatibleDC(hDC) 各デバイスコンテキストにビットマップを選択 SelectObject(hRoadTipsDC,hRoadTipsBmp) SelectObject(hCharTipsDC,hCharTipsBmp) hMapBmp=CreateCompatibleBitmap(hDC,MAX_MAPX*MAPCHIP_PIXEL,MAX_MAPY*MAPCHIP_PIXEL) SelectObject(hMapDC,hMapBmp) hMemBmp=CreateCompatibleBitmap(hDC,MAX_MAPX*MAPCHIP_PIXEL,MAX_MAPY*MAPCHIP_PIXEL) SelectObject(hMemDC,hMemBmp) 透明色を設定 SetBkColor(hCharTipsDC,RGB(0,117,117)) ReleaseDC(hMainWnd,hDC) hMapDCにマップ描画 DrawMap() 初期描画 DrawCharacter(1,2,0,0) Dim dwDummy As DWord CreateThread(ByVal 0,0,AddressOf(MainOperation),0,0,VarPtr(dwDummy)) End Sub MainOperation関数を新規スレッドとして実行します。これで、通常のウィンドウメッセージとは別にユーザーからのキー操作を受け付けることが可能になります。 Sub MainWnd_Paint(hDC As Long) ウィンドウにhMemDCの内容を描画 BitBlt(hDC,0,0,MAX_MAPX*MAPCHIP_PIXEL,MAX_MAPY*MAPCHIP_PIXEL,hMemDC,0,0,SRCCOPY) End Sub Paintイベントに変更点はありません。 これで作業は完了です。コンパイル、実行をしてみましょう。どうですか?主人公キャラは自由に動けるようになったでしょうか?以外にスムーズに動くので、作った私もビックリしてますが…。
https://w.atwiki.jp/abwiki/pages/229.html
公式のものは4.24でもコンパイル可能であるが、メモリが4GBとかだと値がおかしくなるし、新しいOSにも対応していないので 次のように修正が必要。 ' ----------------------------------------------------------------------------' イベント プロシージャ' ----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領域として利用することができます。' ----------------------------------ここから----------------------------------Dim RenewalTiming As Long '更新間隔RenewalTiming=500 'ミリ秒Dim GlobalMemoryStatusEx As *Function(ByRef LPMEMORYSTATUSEX As MEMORYSTATUSEX) As LongDim hDLL As HANDLEType MEMORYSTATUSEX dwLength As DWord dwMemoryLoad As DWord uulTotalPhys As QWord uulAvailPhys As QWord uulTotalPageFile As QWord uulAvailPageFile As QWord uulTotalVirtual As QWord uulAvailVirtual As QWord ullAvailExtendedVirtual As QwordEnd Type' ----------------------------------ここまで----------------------------------Sub MainWnd_Destroy() If hDLL Then FreeLibrary(hDLL) 'タイマーを終了する KillTimer(hMainWnd,0) SystemWatcher_DestroyObjects() PostQuitMessage(0)End SubSub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT) Dim buf As String Dim hProgBar As Long '-------------------------- ' OSのバージョン情報を取得 '-------------------------- Dim OsVerInfo As OSVERSIONINFO Dim BuildNum As Long OsVerInfo.dwOSVersionInfoSize=Len(OsVerInfo) GetVersionEx(OsVerInfo) If OsVerInfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS Then 'Windows 9x系OS(メジャーバージョンは常に4) Select Case OsVerInfo.dwMinorVersion Case 0 buf="Windows 95" Case 10 buf="Windows 98" Case 90 buf="Windows Me" End Select BuildNum=LOWORD(OsVerInfo.dwBuildNumber) ElseIf OsVerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT Then 'Windows NT系OS If OsVerInfo.dwMajorVersion=4 Then buf="Windows NT" ElseIf OsVerInfo.dwMajorVersion=5 Then If OsVerInfo.dwMinorVersion=0 Then buf="Windows 2000" ElseIf OsVerInfo.dwMinorVersion=1 Then buf="Windows XP" End If ElseIf OsVerInfo.dwMajorVersion=6 Then If OsVerInfo.dwMinorVersion=0 Then buf="Windows Vista" ElseIf OsVerInfo.dwMinorVersion=1 Then buf="Windows 7" End If End If BuildNum=OsVerInfo.dwBuildNumber End If 'OS情報をウィンドウに表示する SetWindowText(GetDlgItem(hMainWnd,Static_OSName),buf) SetWindowText(GetDlgItem(hMainWnd,Static_OSBuildNum),Str$(BuildNum)) SetWindowText(GetDlgItem(hMainWnd,Static_OSNote),OsVerInfo.szCSDVersion) '------------------ ' メモリ情報を取得 '------------------ Dim MemStatus As MEMORYSTATUS Dim MemStatusex As MEMORYSTATUSEX Dim rate_Physical As Long, rate_Virtual As LongIf OsVerInfo.dwMajorVersion = 4 Then MemStatus.dwLength=Len(MemStatus) GlobalMemoryStatus(MemStatus) '物理メモリに関する情報を表示する rate_Physical=MemStatus.dwMemoryLoad SetWindowText(GetDlgItem(hMainWnd,Static_RatePhysical),Str$(rate_Physical)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_TotalPhysical),Str$(Int(MemStatus.dwTotalPhys/1024))+"KB") SetWindowText(GetDlgItem(hMainWnd,Static_UsedPhysical),Str$(Int((MemStatus.dwTotalPhys-MemStatus.dwAvailPhys)/1024))+"KB") '仮想メモリに関する情報を表示する rate_Virtual=Int(CDbl(MemStatus.dwTotalPageFile-MemStatus.dwAvailPageFile)/CDbl(MemStatus.dwTotalPageFile)*100) SetWindowText(GetDlgItem(hMainWnd,Static_RateVirtual),Str$(rate_Virtual)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_TotalVirtual),Str$(Int(MemStatus.dwTotalPageFile/1024))+"KB") SetWindowText(GetDlgItem(hMainWnd,Static_UsedVirtual),Str$(Int((MemStatus.dwTotalPageFile-MemStatus.dwAvailPageFile)/1024))+"KB")Else If OsVerInfo.dwMajorVersion 4 Then hDLL = LoadLibrary("kernel32") GlobalMemoryStatusEx = GetProcAddress(hDLL, "GlobalMemoryStatusEx") MemStatusex.dwLength=Len(MemStatusex) GlobalMemoryStatusEx(MemStatusex) rate_Physical=MemStatusex.dwMemoryLoad SetWindowText(GetDlgItem(hMainWnd,Static_RatePhysical),Str$(rate_Physical)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_TotalPhysical),Str$(Int(MemStatusex.uulTotalPhys/1024))+"KB") SetWindowText(GetDlgItem(hMainWnd,Static_UsedPhysical),Str$(Int((MemStatusex.uulTotalPhys-MemStatusex.uulAvailPhys)/1024))+"KB") '仮想メモリに関する情報を表示する rate_Virtual=Int(CDbl(MemStatusex.uulTotalPageFile-MemStatusex.uulAvailPageFile)/CDbl(MemStatusex.uulTotalPageFile)*100) SetWindowText(GetDlgItem(hMainWnd,Static_RateVirtual),Str$(rate_Virtual)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_TotalVirtual),Str$(Int(MemStatusex.uulTotalPageFile/1024))+"KB") SetWindowText(GetDlgItem(hMainWnd,Static_UsedVirtual),Str$(Int((MemStatusex.uulTotalPageFile-MemStatusex.uulAvailPageFile)/1024))+"KB")End If '物理メモリ使用率のプログレスバーの初期設定 SendMessage(GetDlgItem(hMainWnd,ProgressBar_Physical),PBM_SETRANGE,0,MAKELONG(0,100)) SendMessage(GetDlgItem(hMainWnd,ProgressBar_Physical),PBM_SETPOS,rate_Physical,0) '仮想メモリ使用率のプログレスバーの初期設定 SendMessage(GetDlgItem(hMainWnd,ProgressBar_Virtual),PBM_SETRANGE,0,MAKELONG(0,100)) SendMessage(GetDlgItem(hMainWnd,ProgressBar_Virtual),PBM_SETPOS,rate_Virtual,0) 'メモリ使用率のタイマーを設定(RenewalTiming秒間隔) SetTimer(hMainWnd,OsVerInfo.dwMajorVersion,RenewalTiming,0)End Sub Sub MainWnd_Timer(ByVal TimerID As Long) Dim MemStatus As MEMORYSTATUS Dim rate_Physical As Long, rate_Virtual As Long Dim MemStatusex As MEMORYSTATUSEX '------------------ ' メモリ情報を取得 '------------------If TimerID = 4 Then MemStatus.dwLength=Len(MemStatus) GlobalMemoryStatus(MemStatus) '物理メモリに関する情報を更新する rate_Physical=MemStatus.dwMemoryLoad SetWindowText(GetDlgItem(hMainWnd,Static_RatePhysical),Str$(rate_Physical)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_UsedPhysical),Str$(Int((MemStatus.dwTotalPhys-MemStatus.dwAvailPhys)/1024))+"KB") '仮想メモリに関する情報を更新する rate_Virtual=Int(CDbl(MemStatus.dwTotalPageFile-MemStatus.dwAvailPageFile)/CDbl(MemStatus.dwTotalPageFile)*100) SetWindowText(GetDlgItem(hMainWnd,Static_RateVirtual),Str$(rate_Virtual)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_UsedVirtual),Str$(Int((MemStatus.dwTotalPageFile-MemStatus.dwAvailPageFile)/1024))+"KB")Else If TimerID 4 Then MemStatusex.dwLength=Len(MemStatusex) GlobalMemoryStatusEx(MemStatusex) '物理メモリに関する情報を更新する rate_Physical=MemStatusex.dwMemoryLoad SetWindowText(GetDlgItem(hMainWnd,Static_RatePhysical),Str$(rate_Physical)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_UsedPhysical),Str$(Int((MemStatusex.uulTotalPhys-MemStatusex.uulAvailPhys)/1024))+"KB") '仮想メモリに関する情報を更新する rate_Virtual=Int(CDbl(MemStatusex.uulTotalPageFile-MemStatusex.uulAvailPageFile)/CDbl(MemStatusex.uulTotalPageFile)*100) SetWindowText(GetDlgItem(hMainWnd,Static_RateVirtual),Str$(rate_Virtual)+"%") SetWindowText(GetDlgItem(hMainWnd,Static_UsedVirtual),Str$(Int((MemStatusex.uulTotalPageFile-MemStatusex.uulAvailPageFile)/1024))+"KB")End If 'プログレスバーの位置を設定 SendMessage(GetDlgItem(hMainWnd,ProgressBar_Physical),PBM_SETPOS,rate_Physical,0) SendMessage(GetDlgItem(hMainWnd,ProgressBar_Virtual),PBM_SETPOS,rate_Virtual,0)End Sub
https://w.atwiki.jp/wiki6_yae/pages/897.html
#blognavi 本日は朝から一日中シトシトと降り続きました。雨の中桜祭り用のちょうちんが並木沿いに吊るされて夕方から火が入り桜祭りの雰囲気が出てきました。雨で木の枝切りは出来ませんでしたので、再度黒糖作りに挑戦しました。インターネットで調べた所、農業用の消石灰でも水に溶かして沸騰させてアクを取り沈殿させて上澄みを使うと言う方法があることがわかり、その通りやってみました。一回目は、飴状態まで固まり黒糖の味は出ていますが、それ以上は固まらず失敗です。それでも見通しがついたのでやる気がでてきました。固まらない原因は石灰の量が足りなかった所為かと思い、2回目は石灰を多めに入れてやりましたが矢張り飴状態まででした。試行錯誤しながら尚且つ分量や時間などアバウトにやっているので完成まで後何回か繰り返しが必要かとおもっています。石灰水のPH値や水分の蒸発程度、石灰水の入れるタイミングなども考える必要があると思われます。とりあえずPHを測定するリトマス試験紙を調達しなくてはいけませんが、何処で売っているか見当もつかないので、明日はそれから始める予定です。 カテゴリ [日記] - trackback- 2007年01月19日 00 28 22 #blognavi
https://w.atwiki.jp/s-ryouri/pages/267.html
960 名前:揚げ ◆hWShz3E48s [sage] 投稿日:09/08/08(土) 21 48 04 ID GRqa89lk さて、久しぶりに揚げ物を作ってみたり。 最近素麺ばかりだったので、楽しかった。 鶏からは、小さいのと大きいのを作って、小さいほうはお弁当のおかず用。 【鶏のから揚げ油林鶏風】 材料 鶏モモ肉500g ・醤油大匙4 ・酒大匙5 すりおろしショウガ(チューブ)大匙1 水1カップ 小麦粉100g ・片栗粉50g 水大匙2 ・ねぎ1/4 ・砂糖大匙1 ・醤油大匙1 酒大匙1 もやし1/4袋 ・塩コショウ適量 1.鶏肉を水で洗ってから、好みの大きさに切る ○2.切ったモモ肉、醤油、酒、ショウガと一緒に袋に入れ、もみ込む 3.30分ほど冷蔵庫に漬け込む。その間に油林鶏ソースを作る。 4.ねぎを微塵切り、水大匙1、酒大匙1、醤油大匙1、砂糖大匙1を小鍋に入れ、火にかけて砂糖が溶けたらおk 5.鶏肉だけパットにとりわけ、余ったタレをボウルに入れ、小麦粉と片栗粉と水をいれ練る 6.鶏肉をボウルにいれ、衣に絡める 7.フライパンを傾けてコンロにおき、油を2~3cmだけいれ、火にかける 8.衣を落として、底に沈まずに揚がるくらいになったら、鶏肉を投下。ぎっちり並べる 9.揚がったものから、端を油につけて3秒まって取り上げていく 10.適当にスライスし、皿に盛る。ソースをかける 11.もやしを炒め、塩コショウと余ったソースを絡め、付け合せにする 12.食らう。甘酸っぱくてウマー http //nagamochi.info/src/up27681.jpg
https://w.atwiki.jp/ddwrt_openwrt/pages/120.html
docker を使うと 簡単にOS環境を準備できるので、比較的楽に imagebuilder 環境を作ることができます。 今度は OpenWrt Projectが配布している docker imageを利用する方法を紹介します。 docker の準備 Linux環境であればDocker CEを、Windows(Pro以上)ならDocker Desktop for Windows、macならDocker Desktop for macなど、docker が使える環境を用意してください。 Docker IDの準備 Dockerで作成されたコンテナイメージの集積所として公式のDocker Hubがあります。 Linuxディストリビューションのパッケージリポジトリのようなものです。 作ったものをupload(push)するときなどに必要なので以下URLにてDocker IDを作っておくと良いでしょう。 https //hub.docker.com/signup TAGの確認 Docker Hubには各Version/targetごとのimagebuilder Docker Imageが置いてあり、それぞれTAG付けされて管理されています。 このDocker image には最初からimagebuilder自身がインストールされています。加えて動作に必要なLibraly、pkgなど(Linux Kernel以外)が含まれています。 作業を始める前にDocker ImageのTAGを確認します。 以下のURLにアクセスし、tags タブから自分が必要とするTAG名称をメモします。 https //hub.docker.com/r/openwrtorg/imagebuilder 例) ath79 generic Targetの Version 19.07.1 であれば ath79-generic-19.07.1 MT7621 で Version 18.06.7 であれば ramips-mt7621-18.06.7 になります。 docker image ダウンロード(pull) Dockerの用語ではimageのダウンロードのことを pullと呼びます。。 あらかじめ構築されたimagebuilder用Docker imageをdocker hubからpullします。 以下のように実行します。 例)MT7621 で 19.07.1 の場合 docker pull openwrtorg/imagebuilder ramips-mt7621-19.07.1 (TAGを確認したときのページにpull時のコマンドラインも記載されています) pull した imageの確認 以下のコマンドで正常にpullできたかどうかわかります。 docker images コンテナ起動 pullしたDocker imageを「IMAGEBUILDER」というコンテナ名で起動します。 docker run --rm -v "$(pwd)"/bin/ /home/build/openwrt/bin --name IMAGEBUILDER -it openwrtorg/imagebuilder ramips-mt7621-19.07.1 (起動したディレクトリにbinディレクトリが作成され、それがコンテナ内OSの/home/build/openwrt/bin にマッピングされます。 つまり生成物はホストOS側のbinディレクトリ内に作成されます) ※Docker Desktop for Windows では、-v オプションでホストOS側ディレクトリにアクセスさせるためには DockerデスクトップメニューでResources FILE SHARING オプションを設定してください また、$(pwd)の部分はフルパスで記載してください。 プロンプト名が build@xxxxxx ~/openwrt$ などというように変化したら、起動したコンテナイメージ内のbashに移行しています。 OpenWrt image build あとは 通常のimagebuilder と同様に make image でimage作成をしますが、 ホストOS側ディレクトリの関係でpermission Error が表示される場合は sudo make image で実行します。 例) sudo make image PROFILE="wsr-600" PACKAGES="kmod-mt7603 -kmod-rt2800-pci -wpad-mini -iwinfo -kmod-usb-core \ -kmod-usb-ledtrig-usbport -kmod-usb3 -kmod-cfg80211 -hostapd-common -kmod-mac80211 -kmod-mt7603 -wireless-regdb uhttpd luci" 生成が終わったら、exit でshellを終了させると、ホストOS側に戻ります。 生成されたファームウェアはコンテナ内のホストOS側のbinディレクトリ内に残されています。 作業後の後片付け 停止したdocker コンテナの削除 rm オプションを付けてdocker runしているため、exitした時にコンテナは削除されます。 通常は不要ですが、万が一異常終了して、コンテナが残っている場合には、以下のようにして停止・削除してください。 docker ps -a docker stop IMAGEBUILDER docker rm IMAGEBUILDER docker ps -a pullしたDocker imageが不要ならdocker rmi (IMAGEID)または docker rmi (リポジトリ名:TAG名)コマンドで削除してください。 例) docker images docker rmi openwrtorg/imagebuilder ramips-mt7621-19.07.1 docker images
https://w.atwiki.jp/12kokuki/pages/88.html
テンプレートエンジン 何とかPHPに慣れてきたため、最初は全部自前で書くつもりだったのを、この際やはりテンプレートエンジンを使おうと考え直しました。 ただ、何せ勉強でやり始めたとあって、そもそも表示ページ用PHPファイルと、インクルードするPHPファイルを同じ場所(ドキュメントルート下)に置いてしまったんですよね。でもこれでテンプレートエンジン(Smartyを使用)用に書き直すともっとごちゃごちゃしてくるし、そもそもセキュリティ的にまずいし――ただでさえセキュリティホールを作りこみやすいPHPなので、インクルードするものはドキュメントルートより上に置くようにしました。ちょっと修正が面倒だったけど。 しかしPHPって、どっか一ヶ所に基準パスを指定しておいて、それを使うようにはできないんですかね。一応汎用で使うPHPファイルに定数としてパスを定義してみたけど、その個々のファイルからそれをインクルードするには、やっぱり相対なり絶対なりのパス指定が必要で、変更したいとなったときは試用箇所全部変えないといけない。PHPではどう書くのがセオリーなんだろ。 もっともHTMLで各種ファイルを指定する際もパスを含めて書くわけだから、PHPも普通にそれなんだろうな。 でもまあ一応ディレクトリ構成をやりなおして動作確認はしたので、これでSmarty導入の前準備は終わり。とりあえず一番簡単な、フレームのヘッダページだけSmarty対応にして表示することはできました。 ――うん、ページのデザインとロジックが切り離されていい感じ。 あとは条件文やループなど、各種制御構文を覚えないと。 新しいディレクトリ構成 さて、見よう見まねでSmarty対応は終わったけど、既にそこそこのページ数を作ってあっただけになかなか煩雑でした。まあ、ビューとロジックがごっちゃになってたしね。 Smarty対応後のディレクトリ構成は以下のとおり。 ドキュメントルートは●ディレクトリという前提。もっともうちの環境ではちょっと理由があってこうしてるだけで、★がドキュメントルートでも支障なし。 ■ │ ├ [search] 十二国記サーチ用各種ディレクトリ │ ├ [dat] データディレクトリ │ ├ [log] ログディレクトリ │ ├ [pg] プログラムディレクトリ │ ├ [smarty] Smarty用データディレクトリ │ │ ├ [cache] ※要読み書き権限 │ │ ├ [configs] 定数ディレクトリ │ │ ├ [templates] テンプレートディレクトリ │ │ └ [templates_c] ※要読み書き権限 │ └ [ssn] セッション情報格納ディレクトリ │ ├ [smarty] Smatryのlibの内容をここに置く │ └ [★] └ [●] ドキュメントルート └ [d] 十二国記サーチメイン ├ [img] 画像ディレクトリ ├ [pg] PHPプログラムディレクトリ ├ [smpl] サンプルサイトディレクトリ └ [styl] スタイルシートディレクトリ ※ドキュメントルート下にさらにdディレクトリを設けているのは、検索避けを考慮したため。 2010/12/13 19 49 38更新
https://w.atwiki.jp/bioeos/pages/129.html
WMSサーバー WMSとは •WMS(Web Map Service)は、WEBで地図画像を配信する標準化された手法の1つです。 •マッピングシステムの多くがWMSに対応しています。また、GoogleEarthやOpenLayersもWMSに対応しているのは注目すべきところです。 •すなわちWMSで地図データを公開すれば、クライアントの種類は問わず、その地図データにアクセスできるということです。(もちろんクライアントがWMSに対応している必要がありますが。) 今回はQGISでラスタ地図をWebに発信する仕組みを作ります。 QGIS1.6.0をインストールします。 QGISのホームページhttp //www.qgis.org/で「Download Now Free」をクリックして、Contents- 2 Linux- 2.5 Ubuntuをクリックして、画像で示すようにsudoの4行を端末にコピーして走らせてください(1行ずつ)。 sudo apt-get install add-apt-repositoryでやると、エラーが出るかもしれないが、無視していいです。 完了するとアプリケーションの下に科学が出来で、QGISがあります。開くとQGIS1.6.0になります。 次に、システム- パッケージマネジメントを開いて、qgisで検索します。そして、qgis-mapserverをインストールしてください。 アップデート・マネージャでアップデートをインストールしてください。インストールした後、再チェックをしてインストールできるアップデートがないようにしてくだい。 データのコピー VMwareの仮想マシンをクリックして仮想マシンの設定を選んで、オプション- 共有フォルダを選択して、右下の追加ボタンを押してOドラを追加してください。 O から直接QGISに読み込むと時間がかかりますので自分のパソコンにデータをコピーして下さい。データ源はO \DATA\GOM2009年発行\志摩市SHP\。方法は端末操作とフォルダ操作二つあります。 まず、homeフォルダの下で新たにDATAというフォルダを作ります。 端末では、homeの下に移動して mkdir DATA フォルダ操作ならパネルの場所- ホーム・フォルダを選んで、Windows同様に右クリックでフォルダの生成して、DATAという新しいフォルダを作ります。出来れば、端末でやってください。 次に場所- ホーム・フォルダの左側ファイルシステムをクリックしてmnt- hgfs- O- DATA- GOM2009年発行- 志摩市SHPをホーム・フォルダで作ったDATAフォルダにコピーします。 端末なら cp mnt/hgts/O/DATA/GOM2009年発行/志摩市SHP/行政区_面.* . QGISでの操作 まずQGISを立ち上がって下しい。プラグイン- プラグイン管理でスケールバー、北向き矢印、GdalTools、fTools(自動にチェックが入っています)をチェックを入れてOKしてください。 (*注意*)Q-GISのver1.6.0のプラグイン管理をubuntu11.04で行うと、プラグインマネージャが動かなくなる可能性があります。 この場合、回避方法として、ひとつ前のバージョンであるubuntu10.04を利用することでこの問題が回避できることがあります。 (条件は調査中ですが、まれに11.04でもマネージャが起動することがあります) 次に、画像で示したように2行目の緑のアイコン(ベクタレイヤの追加)をクリックして、ブラウズで前作ったDATAフォルダの行政区_面.shpを選んでOPENして下さい。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (20110517_2.png) 一番下座標の欄を見ると、座標は5,6桁の平面直角座標系で表していますので、緯度・経度座標系に変換します。 レイヤの行政区_面を右グリックしてプロパティ⇒一般情報⇒CRS指定⇒Transverse Mercator(下から3番目)の三角形をクリック⇒JGD2000/Japan Plane Rectangular CS VI(IDは417.EPSG 2448)を選択してOKを押してください。 プロパティのところApplyしてOKして下さい。 そして、右下のアイコンをクリックしてプロジェクトのプロパティを立ち上がり、座標参照系(CRS)の下、 オンザフライ CRS変換を有効にするをチェックを入れて、座標参照系はJGD2000(EPSG 4612)を選んで、ApplyしてOKを押してください。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (20110517_4.png) すると座標は緯度・経度に直れます。もしうまくいかない場合は、一度ロックオートしてやり直してください。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (20110517_5.png) 今回はここまでです。お疲れ様でした。 次回までに、道路_面、水域_面、行政区_面、公園_面、建物_面、等高線(主曲線)_線、等高線(計曲線)_線、石段境界_線、岩がけ_線、一条河川_線、人工斜面_線を作ってください。 作成したプロジェクトはホームフォルダのDATAに保存してください。 プロジェクト名はNakiri.qgsにしておくと次回の作業が楽になります。