phpとJavascriptで共通の定数を参照する

定数として設定るる内容がたくさんあるので、変更する際に1つのファイルでまとめたいときにやってみた備忘録。

事例:日本語向けのメッセージ設定ファイル、英語向けのメッセージ設定ファイル、中国語向けのメッセージ設定ファイル、ドイツ語向けのメッセージ設定ファイル…がある場合にフラグ一つで設定ファイルを変更したかった。

手法

設定ファイルはCDATA付きのxmlファイルで作成して、JavascriptはAjaxで、phpは普通に読み込む。

フラグはURL引数とかcookieで保持していればいい。

詳細

※↓クッキー参照で言語を判別する部分は省略しています。
 xml取得部分のみ掲載です。

 

設定ファイルの例

■const_jpn.xml

<?xml version="1.0" encoding="UTF-8" ?>

<my_const>
	<msg>
		<!-- ログイン -->
		<login><![CDATA[ログインしました]]></login>
			
		<!-- マイページ -->
		<mypage><![CDATA[ようこそ]]></mypage>
	</msg>
</my_const>

 

呼び出し側の記述方法

■呼び出し元のphp

$constdata = file_get_contents("const_jpn.xml");
$my_const = simplexml_load_string($constdata,'SimpleXMLElement', LIBXML_NOCDATA);
echo $my_const -> msg -> login;//ログインメッセージの表示

 

■呼び出し元のjavascript

$.ajax({
	url: "const_jpn.xml",
	async: true,
	cache: false,
	dataType:"xml",
	success: function(xml){
		$("msg ",xml).each(function(){
			alert($("login",this).text());//ログインメッセージの表示
		})
	}
});

 

もし、動的変数ならAjaxでphpからのJSONにした戻り値を使えばOK(よくある方法)

 

サイゼリアのキャベツのスープ再現レシピ

所要時間2日です。

やっぱお店に行ったほうがいいね。
圧力なべで…という話が出るかもしれないけど、煮込んだほうがうまい。

 生ハムだから肉は薄いよw

 

材料2人分

  1. キャベツ1/8玉
  2. 玉ねぎ1/2
  3. 水400ccくらい(鍋でひたひたになるくらい)
  4. 人参1cm
  5. トマト1/4
  6. 生ハム4枚
  7. 粉チーズ 大1
  8. スライスチーズ1枚
  9. ごはん 大2
  10. オリーブオイル 大1
  11. 塩コショウ 適量(小2くらい)

作り方

大体翌日の夜ご飯に…と想定しての手順です。
外気温5度の冬のレシピです、夏なら腐りそうなので冷蔵庫を活用してください。

  1. PM10時:キャベツ、玉ねぎを細かく切って、塩コショウをかけて水がヒタヒタになるちょっと多めの量で玉ねぎが透明になるまでフタをしないで煮ます。(30分くらい)

    (鍋小さかった…&切るの雑!この後取り出して細かく切りなおした…)
  2. 透明になったら火を止めて蓋をして余熱のあるまま常温で6時間くらい放置。
    (大体、夜にこの工程をして朝まで放置という感じ)
  3. AM6時:6時間くらいたったら米、人参を入れて沸騰5分
  4. 火を止めて蓋をして12時間放置
    (多分朝にやる感じ)
  5. PM6時あたり:
    ①粉チーズを入れて
    ②スライスチーズを細かくちぎって
    ③生ハムを細く切って入れ込んで
    ④トマトの皮とドゥルを取った部分を細かく刻んで入れる
    ⑤30分煮る。
  6. オリーブオイル、ブラックペッパー、塩コショウで加減してを入れてひと煮たち。

 

 めんどくせぇ!(><) 

 

ポイント

  • 本当はパンチェッタ使いたいけどないから150円で8枚入っている生ハムで。
    1人前2枚くらい使う感じ…でもガッツリ使ってもいいかもしれない。
    普通のハムやベーコンは燻製匂いがきついからNG。
  • チーズはとろけるチーズはNG。スライスがなかったらキャンディチーズとかの溶けにくい系で。
  • コンソメはNG!入れると違う味になって味が台無しになります!(それはそれでうまいけど)
  • 味付けは塩コショウ、トマト、チーズのみ!
  • トマトの隠し味がポイント。細かく切った赤くないトマトが入っています。トマト大好きだからわかった!
  • 冬だからできる味。春キャベツだとエグミが出てここまで柔らかい味にはならないだろうな・・
  • 多分、ご飯はいったんオリーブオイルで痛めてリゾット風にするほうがいいかも(半分に割れたコメが入っていたから多分アルファ化したものなのか炒めたものなのか…?)
  • 翌日の煮込みの時点でオリーブオイルで強火でサッと炒めた玉ねぎ(アメ色玉ねぎはNG)を追加したほうが本格的だと思う(若干焦げ目のついた玉ねぎが入っていたから)

 

残ったら冷凍OK
味変でトマトジュース入れればミネストローネリゾットだ!
コーンクリーム入れるとコーンチャウダーだ!
マッシュルームやダイコンを細かくしてもいいかも!

 

 

 

Excelでアンカーリンクのようにハイパーリンクの行き先設定

Excelで内部リンクでハイパーリンクを入れた際、
だいたいセルに対しての入れ込みになるので行や列を追加するとズレちゃいますので
htmlでいうアンカーリンクみたいな機能の使い方です。

 

1.リンク先のセルを右クリックして「名前の定義」

 

2.「新しい名前」ウィンドウが開くので「名前」欄を入力or確認して「OK」

 

 

3.リンクを入れたい場所を右クリックして「リンク」

(普通にハイパーリンクを入れる画面を出す)

 

4.「このドキュメント内」「定義された名前」に、さっきの場所が出ているので選択

 

これで完了。

リンク先のセルの手前に料や列を追加したり削除したりしても大丈夫。

リンク先のセルをカトペ(カット&ペースト)移動しても大丈夫。

結構地味に便利です。

 

Ajaxで動いたりエラーだったり動かない不具合iOS、Safari、https

Ajaxでphpを呼び出して~の処理でハマった

  • PCやAndroidだと動くのに、iOSとかiPhoneだと動いたり動かなかったりする不具合。
  • 特に最初に開いたときは動いて、2回目以降はエラーが出るとき。
  • エラー戻り値は「undefined」とか「0」
  • サイトはhttps

解決方法

async:falseとbeforeSend:を入れたらOKでした。

URLの指定も//からにするのもポイント。httpとかhttpsとか入れないほうがいい。

$.ajax({
	async:false,
	type:'post',
	cache:false,
	url: '//~~~/~~~.php',
	data:{
		send_data:in_send_data,
		flg:0
	},
	beforeSend:function(xhr){
	  if (window.navigator.userAgent.toLowerCase().indexOf('safari') != -1)
	    xhr.setRequestHeader("If-Modified-Since", new Date().toUTCString());
	},
	success: function(data){
		alert("OK");
	},
    error: function(XMLHttpRequest, textStatus, errorThrown) {
    	alert("ERROR " + XMLHttpRequest.status + "-----" + textStatus + "------" + errorThrown.message + "---" + location.pathname);
	}
});
	

 

参考までにエラーが出ていたソースはこんな感じ

$.ajax({
	type:'post',
	cache:false,
	url: '//~~~/~~~.php',
	data:{
		send_data:in_send_data,
		flg:0
	},
	success: function(data){
		alert("OK");
	},
    error: function(XMLHttpRequest, textStatus, errorThrown) {
    	alert("ERROR " + XMLHttpRequest.status + "-----" + textStatus + "------" + errorThrown.message + "---" + location.pathname);
	}
});

 

お客様を何日待たせてしまったんだよぉっ!(><)

どうか世界からsafariとIEが××されますように…(>人<)

 

Windows10のパソコンを買ったときの初期設定

しょっちゅうセットアップするので自分用に使いやすいと思う設定の備忘録

使いやすくするための設定など

・ツールバーとかメニューにあるいらないものを消す(ピン止めを外す)
・不要なゲーム系は右クリックでアンインストール
・天気、NetFlix、Xbox、CandyCrash、Skype、DropBoxプロモーション、マカフィーなども削除

・「コントロールパネル」「プログラムのアンインストール」

マカフィーなんてどうせ1年で切れちゃうんだから今捨ててもOK

 

・ログインの時にパスワードを入れないようにする
「ファイル名を指定して実行」「netplwiz」
「ユーザーアカウント」ユーザーを選んで
ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」のチェックを外す

・「エクスプローラ」「表示」「オプション」「フォルダーオプション」「表示」
   「ナビゲーションウィンドウ」「開いているフォルダーまで展開」
   「ファイルとフォルダーの表示」「隠しファイル、隠しフォルダー、および隠しファイルを表示する
   「登録している拡張子は表示しない」チェック外し
「フォルダーに適用」

 

・画面右下IME(Aとかあの場所)右クリック「プロパティ」
  「IME入力モード切り替えの通知」「画面中央に表示する」チェック外し
  「詳細設定」「予測入力」「予測入力を使用する」チェック外し

 

・画面どこでも右クリック「ディスプレイ設定」
   「マルチタスク」「ウィンドウのスナップ」OFF

   「タイムライン」「オフ」
   「電源とスリープ」「画面とスリープ両方」「電源を切る」「なし」

 

・「タスクバー」右クリック「設定」
  「ロックする」「小さいタスクバーボタン」ON 他はOFF
  「タスクバーボタンを結合する」「結合しない」

 

・「PC」右クリック「プロパティ」左メニューの「システムの詳細設定」「詳細設定」「パフォーマンス 設定」◎カスタム
 ON:アイコンの代わりに縮小版を表示する、ウィンドウの下に影を表示する、スクリーンフォントの線を滑らかにする
 それ以外はチェック外し

・「電源オプション」「USB設定」「セレクティブサスペンドの設定」無効
     「電源ボタンとカバー」「スリープボタンの操作」何もしない

 

ツール入れ込み

  • Terapad https://tera-net.com/
    「オプション」「文字コード」「初期文字コード」→UTF-8N
  • Notepad++ https://notepad-plus-plus.org/
    詳細設定はこちら
  • lhaplus http://www7a.biglobe.ne.jp/~schezo/
  • Filezilla https://filezilla-project.org/
  • .net(C#)
  • Chrome
  • FireFox
  • Windowsフォトビューア
    詳細はこちら→https://dekiru.net/article/15034/

 

各ソフトを入れてから

・「msconfig」
   「スタートアップ」「タスクマネージャを開く」セキュリティ以外「状態」を「無効にする」
   「サービス」AdobeUpdateとかGoogleChrome、Xbox、GameDVRのチェックを外す

 

オフィスの設定

・「Excel」「オプション」「詳細設定」「オートコンプリートを使用する」OFF
     「オートコレクトのオプション」「オートコレクト」「入力中に自動修正する」OFF

 

ログインの省略

・「ファイル名を指定して実行」「netplwiz」「ユーザーアカウント」「ユーザー選択」「ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」チェックを外す

・「田」「設定」「アカウント」「サインインオプション」「サインインを求める」「なし」

 

リカバリディスクの作成

32Gの良質なUSBを準備して作成

今までにいろいろなことがあったけど、結局「東芝」、「ELECOM」、「BUFFALLO」が好き

https://www.kaunet.com/rakuraku/variation/00020436/?LID=0&Keyword=USB%83%81%83%82%83%8A&maker=2_6_311%2C5_22_479%2C2_3_245&sspec_1330100202=%82R%82Q%82f%82a&mainImg=K3696405.jpg

 

参考スピードアップ対策

常駐ソフトの停止

https://boxil.jp/mag/a16/

C#のExcel操作備忘録

Excel.Worksheet sheet = null;
Excel.Range range = null;

 

 

縦書きにしたセルを印刷の時に切れちゃうので大きくする

range = sheet.get_Range("A5");
range.RowHeight = range.Height + 30;
range = null;

 

 

印刷可能サイズの取得(A4の場合)

double printable_height;
double printable_width;
double paper_height;
double paper_width;

if (sheet.PageSetup.Orientation == Excel.XlPageOrientation.xlPortrait)
{
//縦 297mm 1mm = 2.83pt;
paper_height = 297 * 2.83;
paper_width = 210 * 2.83;
}
else
{
//横 210mm 1mm = 2.83pt;
paper_height = 210 * 2.83;
paper_width = 297 * 2.83;
}



double BottomMargin = sheet.PageSetup.BottomMargin;//pt
double TopMargin = sheet.PageSetup.TopMargin;//pt
printable_height = paper_height - BottomMargin - TopMargin;

double RightMargin = sheet.PageSetup.RightMargin;//pt
double LeftMargin = sheet.PageSetup.LeftMargin;//pt
printable_width = paper_width - RightMargin - LeftMargin;



System.Diagnostics.Debug.Print("印刷可能高さ:" + printable_height.ToString() + "pt");
System.Diagnostics.Debug.Print("印刷可能幅:" + printable_width.ToString() + "pt");

 

 

ページ縮小率のチェック(横1ページ・縦自動の場合)

「印刷可能サイズの取得」から続きます
last_colnameに一番右のセル列を設定しておきます(ループで探してもよいが、時間がかかるのでどこかの処理で取得しておく)
例:last_colname = “AA”;

range = sheet.get_Range("A1", last_colname + "1");
last_col_x = range.Width;
range = null;
if (printable_width < last_col_x)
{
printable_height = printable_height * (last_col_x / printable_width);
}

 

グラフや図を切れないように改ページさせる

セルの高さをグラフや図の大きさに変えてやれば縦で切られない。
同様に横で切られる場合にはセルの横サイズを大きくすればいい。

ただし、結合セルは不可。
単一セルにしたときのみ改ページで切られない。

↑こんなイメージ↓

chart_row = 10;//入れ込む行
chartwidth = 300;
chartheight = 200;
top_margin = 10;
bottom_margin = 10;

location_x = 10;
location_y = sheet.get_Range("A" + chart_row).Top + top_margin;

range = sheet.get_Range("A1");
range.RowHeight = chartheight + top_margin + bottom_margin;

chart = sheet.ChartObjects().Add(location_x, location_y, chartwidth, chartheight);

 

散布図関連

一気にまとめるとこんな感じです。
最後のソースに問題点3つまとめています。

散布図グラフに使えるX軸、Y軸の設定

単純にrangeで”A1:B2″とかだとX軸Y軸の設定ができないので以降を参照してください。
XValuesとValuesを使用します。

 

散布図グラフの点の縁取り(枠線)を消す

マーカーをよく見ると縁取りになっているので同職を使って消します。
線を軟化いじるとマーカーからマーカーの間に線が入るので、
そうではない設定でツボりました。

◆ー◆の線ではなく◆の縁取り◇を同じ色にして消したかった。

 

X軸、Y軸のラベルを変える

既出ですがついでにです

 

まとめるとこんな感じ↓

//値A×値B
chart_row = 10;//10行目に書く
chart_margin_vertical = 10;//グラフの上下マージン
location_x = sheet.Range["A"+ chart_row].Width / 2;
location_y = sheet.get_Range("A" + chart_row, "A" + chart_row).Top + chart_margin_vertical / 2;
chartwidth = 300;
chart = sheet.ChartObjects().Add(location_x, location_y, chartwidth, chartHeight);
chartpage = chart.Chart;
chartrange = sheet.get_Range("A1:A2");//これはダミーレンジ

chart.Placement = Excel.XlPlacement.xlFreeFloating;//グラフのサイズをセル幅に合わせて変更しない&場所を動かさない


//グラフの作成
chartpage.SetSourceData(chartrange);
chartpage.HasLegend = false;        //凡例
chartpage.HasTitle = true;          //タイトル
chartpage.PlotArea.Format.Fill.ForeColor.RGB = Color.LightGray.ToArgb();//背景色
chartpage.PlotArea.Format.Line.ForeColor.RGB = Color.Black.ToArgb();//文字色
chartpage.ChartType = Excel.XlChartType.xlXYScatter;
chartpage.ChartTitle.Format.TextFrame2.TextRange.Font.Size = standardFontSize;
chartpage.ChartTitle.Text = "値A×値B";
chartpage.ChartGroups(1).GapWidth = 200;

//データの場所は値Aが"A100:A200"、値Bが"B100:B200"とする
start_row = 100;
end_row = 200;

tmp_objSeries = chartpage.SeriesCollection(1);
tmp_objSeries.XValues = sheet.get_Range("A" + start_row + ":" + "A" + end_row);
tmp_objSeries.Values = sheet.get_Range("B"+ start_row  + ":" + "B"+ end_row);
tmp_objSeries.MarkerBackgroundColor = ColorTranslator.ToWin32(Color.Blue);//マーカーの中
tmp_objSeries.MarkerForegroundColor = ColorTranslator.ToWin32(Color.Blue);//マーカーの外線
tmp_objSeries.MarkerSize = markersize;

valueAxis = chartpage.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary);
valueAxis.HasTitle = true;
valueAxis.AxisTitle.Text = "値A";
valueAxis.TickLabels.NumberFormatLocal = "#0";

valueAxis = chartpage.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary);
valueAxis.HasTitle = true;
valueAxis.AxisTitle.Text = "値B";
valueAxis.TickLabels.NumberFormatLocal = "#0";

 

短納期で必死だったから何をやったかも、うろ覚えだけど

備忘録として…です。

 

WordPressユーザー登録パスワードが出ない

タイトル通りです。

ユーザー登録やパスワード変更の際に「パスワードを表示」ボタンを押しても入力部分が出ないでスカスカした動きになる状況。

 

解決方法案

ほとんどのWordpressで使用していると思われるAdvanced Custom Fieldsのプラグインとぶつかっていました。

 

停止させたら動きました!

 

原因

phpのバージョンが7以下の古いものだと上記のようなことが起こるらしいです。

同じ環境でphp7のサーバーだったら正常に動いたサイトもありました。

 

茨城県取手市の内科(ホームページ有)一覧

取手市にある内科の診察をしている病院でホームページがあるサイトへの案内と一覧です。

年末年始などの休診日は総合サイトだと確認できないので、ホームページで調べるところのみを掲載していますのでご了承ください。

順番は50音順です。

 

あおぞら診療所 HP→

内科, 呼吸器科, 消化器科, 循環器科, 小児科

“茨城県取手市新町3丁目13-11”

TEL:0297-72-6137

秋田医院 HP→

内科, 小児科, 産婦人科

茨城県取手市椚木890

TEL:0297-83-0341

有田内科整形リハビリクリニック HP→

内科, 神経内科, 消化器科, 小児科, 整形外科, 泌尿器科, リハビリテーション科

茨城県取手市毛有363-2

TEL:0297-70-3331

飯泉内科クリニック HP→

糖尿病内科, 循環器内科, 呼吸器内科, 内科

茨城県取手市藤代1121-2

TEL:0297-83-8818

桜が丘メルクリニック HP→

内科, 小児科

茨城県取手市桜が丘1-17-1

TEL:0297-70-3070

さくら整形外科クリニック HP→

内科, 整形外科, リハビリテーション科

茨城県取手市桜が丘1丁目2-1

TEL:0297-71-6280

椎貝クリニック HP→

腎臓内科, 循環器内科, 糖尿病内科, 内科

茨城県取手市新町2-6-4

TEL:0297-84-6751

宗仁会病院 HP→

内科, 外科, 整形外科, 泌尿器科, 消化器内科, 消化器外科, 皮膚科, リハビリテーション科

茨城県取手市岡1467

TEL:0297-85-8341

常総病院 HP→

内科, 精神科, 神経科

茨城県取手市下高井2371

TEL:0297-78-8707

戸頭クリニック HP→

内科, 整形外科

茨城県取手市戸頭4丁目16-3

TEL:0297-78-7117

ときわクリニック HP→

内科, 人工透析内科

茨城県取手市井野4430

TEL:0297-74-1881

東取手病院 HP→

消化器科, 循環器科, 呼吸器科, 内科

茨城県取手市井野268番地

TEL:0297-74-3333

取手北相馬保健医療センター医師会病院 HP→

内科, リウマチ科, 外科, 神経内科, 脳神経外科, 呼吸器科, 循環器科, 整形外科, 形成外科, リハビリテーション科, …

茨城県取手市野々井1926

TEL:0297-78-6111

西間木病院 HP→

内科, リウマチ科, 外科, 呼吸器科, 消化器科, 整形外科, 皮膚科, 泌尿器科, リハビリテーション科, 麻酔科

茨城県取手市戸頭1丁目8-21

TEL:0297-78-1101

ハートフルふじしろ病院 HP→

内科, 消化器科, 整形外科, リハビリテーション科

茨城県取手市下萱場225

TEL:0297-83-7177

松丸内科クリニック HP→

内科, 消化器科, 小児科

茨城県取手市下高井1969-14

TEL:0297-70-2012

村田内科クリニック HP→

内科, 消化器科, 小児科, リハビリテーション科

茨城県取手市谷中34-1

TEL:0297-83-4976

メイプル子どもクリニック HP→

小児科, 内科

茨城県取手市井野800-4

TEL:0297-86-7773

ローズ皮膚科クリニック HP→

皮膚科, 内科

茨城県取手市取手3丁目4-22 取手クリニックビル3F

TEL:0297-70-6262

C# Excelに改ページをを入れて「HRESULT からの例外です : 0x800A03EC」

既出のとおりC#やVBやVBAでExcelファイルを作って
改ページを入れるときは

xlRange = xlSheet.get_Range("A10", "A10");
xlSheet.HPageBreaks.Add(xlRange);

こんな感じに書きます。
上の例は水平に買いぺページを入れる例です。

 

表題の通り

「HRESULT からの例外です : 0x800A03EC」

が出てしまってツボッた原因は

レンジが”A1:A1″はエラーになります!!!!

水平の改ページ設定はA2以降で!

同じようにたぶん垂直の改ページ設定はB1からだと思います

うううう…ツボった…(;~;)

 

javascript、jqueryスマホで動かない:速解決する

パソコンだと動くけど、スマホで動かない

これはページ読み込み後での実行命令の際に
PCとスマホだと動きが違うからいくつかの設定方法があります。

window.onload
と書いてみたり

$(document).ready
と書いてみたり

$(window).on('load'
とやってみると行ける

とありますが、

プラグインとかとぶつかっていることがあってうまく動かないこともあるので、
検証している時間がないので
一番早いのでページ最後にjs読み込む

 

速解決!