[JavaScript][jQuery]要素の追加方法まとめ
要素の追加方法をまとめた。
以下、全て div1 エレメントを中心に追加した結果。
<div id="div0"> <p>0</p> </div> <!-- $('#div1').before('<p>追加</p>'); --> <!-- $('<p>追加</p>').insertBefore($('#div1')); --> <div id="div1"> <!-- $('#div1').prepend('<p>追加</p>'); --> <!-- $('<p>追加</p>').prependTo($('#div1')); --> <p>1</p> <div id="div1_1"> <p>1-1</p> </div> <div id="div1_2"> <p>1-2</p> </div> <!-- $('#div1').append('<p>追加</p>'); --> <!-- $('<p>追加</p>').appendTo($('#div1')); --> </div> <!-- $('#div1').after('<p>追加</p>'); --> <!-- $('<p>追加</p>').insertAfter($('#div1')); --> <div id="div2"> <p>2</p> </div>
[Windows]右クリックのメニューに追加する
右クリックメニューから、指定エディタでファイルを起動させる。
例として vivi を起動させることにする。
- Windowsキー+R で「ファイル名を指定して実行」を開く
- "regedit" と入力して、レジストリエディタを開く
- ツリーから [コンピュータ] → [HKEY_CLASSES_ROOT] → [*] → [shell] を選択する
- 右クリックメニューから [新規] → [キー] を選択する
- 「新しいキー #1」の名称を「viviで開く」に変更する
- [viviで開く]を選択し、右クリックメニューから [新規] → [キー] を選択する
- 「新しいキー #1」の名称「command」に変更する
- 「command」を選択し、右ペインの [(既定)]を選択する
- 右クリックメニューから [修正] を選択し、「文字列の編集」を開く
- 値のデータに vivi の実行ファイルと、引数を設定する。ダブルクォーテーションで囲う(例: "C:\Program Files\vivi\VIVI.EXE" "%1")
- レジストリエディタを閉じ、右クリックメニューで「viviで開く」が表示されることを確認する
Tips:
右クリックメニューでは、最初の文字がショートカットとなる。
「viviで開く」だと "v" 押下で選択状態になるので、1文字目は重要。
ただし、他の候補と被らなければ一発で起動するので、例えばメニュー名を "zviviで開く" にしておくと、"z" キーのみ(=Enterキー不要)で起動する。
[CSS]IE11にのみ対応する
IE11のみCSSのレイアウトが崩れる場合の対処法。
.title { padding : 10px 12px; } /* IE11 only */ @media all and (-ms-high-contrast:none) { *::-ms-backdrop, .title { padding : 10px 12px 6px; } }
調べていくと、他にも
.title { padding : 10px 12px; padding : 10px 12px 9px\9; /* IE10以下 */ *padding : 10px 12px 7px; /* IE7以下 */ _padding : 10px 12px 6px; /* IE6 */ }
という指定方法があるよう。
[Flash][Flex]#2032(ストリームエラー)を回避する
イントラネットサーバに置いたFlashのサイトへのアクセス時、#2032(ストリームエラー)が発生することがある。
発生するPCは全て「外部インターネットにはアクセスできない」のだが、「外部にアクセスできない」PC全てがエラー発生するわけではない。
#2032 の原因は、crossdomain.xml にアクセスするため。
ただし、PC内のキャッシュを使用すると思われる。
そのため、過去にFlashのサイトにアクセスし crossdomain.xml をキャッシュとして保持しているPCはキャッシュを使用するため #2032 エラーは発生しない。
解決策は、
前者は社内運用上難しいこともあるため、以下に後者の方法を記述する。
1. サーバに crossdomain.xml をアップロードする
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" secure="false"/> </cross-domain-policy>
2. そのURLを ./flex_sdk_XX.XX/frameworks/flex-config.xml に記述する
: : <runtime-shared-library-path> <path-element>libs/WWWWW.swc</path-element> <rsl-url>http://fpdownload.adobe.com/pub/swz/XXXXX/Y.Y.Y.YYY/ZZZZZ.swz</rsl-url> <!-- <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url> --> <policy-file-url>http://intranet.com/aaaaa/bbbbb/crossdomain.xml</policy-file-url><!-- ← イントラネットURLに書き換える --> <rsl-url>VVVVV.swz</rsl-url> <policy-file-url></policy-file-url> </runtime-shared-library-path> : :
追記(2015/04/13):
crossdomain.xml 同様、いくつかのSWZファイルも同様にイントラネット上に配備し、そこにアクセスさせる必要がある。
URLは(これも crossdomain.xml 同様に) ./flex_sdk_XX.XX/frameworks/flex-config.xml に記述する。
: : <runtime-shared-library-path> <path-element>libs/WWWWW.swc</path-element> <!-- <rsl-url>http://fpdownload.adobe.com/pub/swz/XXXXX/Y.Y.Y.YYY/ZZZZZ.swz</rsl-url> --> <rsl-url>http://intranet.com/aaaaa/bbbbb/ZZZZZ.swz</rsl-url><!-- ← イントラネットURLに書き換える --> <policy-file-url>http://intranet.com/aaaaa/bbbbb/crossdomain.xml</policy-file-url> <rsl-url>VVVVV.swz</rsl-url> <policy-file-url></policy-file-url> </runtime-shared-library-path> : :
[GAE]メール送信者を設定する
GoogleAppEngineにおいて、デフォルトのメール送信者は管理者のみ。
管理者以外のアドレスを送信者に設定すると、エラーが発生する。
Message message = new Message(); message.setSender("from@gmail.com"); //管理者以外はエラー message.setTo("to@tmp.com"); //宛先アドレス message.setSubject("○○○"); //件名 message.setTextBody("△△\n□□□□"); //内容 MailServiceFactory.getMailService().send(message);
送信者を追加登録する場合は、
- 管理者コンソールを開く → Google Developers Console
- 対象プロジェクトを選び、[権限]を選択する
- メンバーを追加する。権限は「閲覧可能」でOK
の操作を行う。
メンバー追加時に招待メールが届き、参加承認確認後に送信者として使用可能となる。
[コマンドプロンプト]フォルダ構成を表示する
コマンドプロンプトで、カレントディレクトリ以下のフォルダ構成(ファイル名込み)を一覧する
> tree /f フォルダー パスの一覧: ボリューム XXXXXXXX ボリューム シリアル番号は 00000000 ABCD:1234 です C:. │ test01.psyexp │ test01_lastrun.py │ ├─condition │ performance_1.csv │ performance_2.csv │ performance_3.csv │ performance_4.csv │ ├─data │ id_1.csv │ id_1.log │ id_1.psydat │ id_1.xlsx │ id_2.csv │ id_2.log │ id_2.psydat │ id_2.xlsx │ id_2_1.csv │ id_2_2.csv │ id_2_3.csv │ id_2_4.csv │ └─img img_a.png img_b.png img_c.png
ファイルに書き込む時は
> tree /f > tmp.txt
でOK。
[MySQL]FROM句のサブクエリ
レジのデータテーブルから、データを取得する。
table :register columns:register_id, waiting, ...
レジ待ちしている人数毎のレジ数を一覧する。
> select waiting, count(*) as cnt from register group by waiting; +---------+-----+ | waiting | cnt | +---------+-----+ | 0 | 334 | -> 待ち人数なし | 1 | 109 | -> 待ち人数1のレジが109個 | 2 | 73 | -> : | 3 | 31 | | 4 | 9 | | 5 | 11 | | 6 | 3 | | 7 | 3 | | 9 | 2 | -> : | 12 | 1 | -> 待ち人数12のレジが1個 +---------+-----+
レジ待ち人数の総計を計算する1
> select waiting, count(*) as cnt, waiting * cnt from register group by waiting; ERROR 1054 (42S22): Unknown column 'cnt' in 'field list'
waiting と cnt を掛けたいのだが、cnt は認識されない。
レジ待ち人数の総計を計算する2
> SELECT waiting * cnt from (select waiting, count(*) as cnt from register group by waiting); ERROR 1248 (42000): Every derived table must have its own alias
FROM句のサブクエリを使用したが、エイリアスが必要と言われる。
レジ待ち人数の総計を計算する3
> SELECT waiting * cnt from (select waiting, count(*) as cnt from register group by waiting) as t; +---------------+ | waiting * cnt | +---------------+ | 0 | | 109 | | 146 | | 93 | | 36 | | 55 | | 18 | | 21 | | 18 | | 12 | +---------------+
エイリアス(as t)を追加することで、cnt を使用した計算が可能となった。
レジ待ち人数の総計を計算する4
> SELECT sum(waiting * cnt) as sum from (select waiting, count(*) as cnt from register group by waiting) as t; +-----+ | sum | +-----+ | 508 | +-----+
sum() で総計を表示する。
追記:
上記「レジ待ち人数の総計を計算する3」は単純に以下でもできた。
> select waiting * count(*) as cnt from register group by waiting; +-----+ | cnt | +-----+ | 0 | | 109 | | 146 | | 93 | | 36 | | 55 | | 18 | | 21 | | 18 | | 12 | +-----+