2018年9月19日水曜日

phpMyAdminでユニークキーを指定しているのに「Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.」と表示されてインライン編集ができなかったけど解決しました

select id,device_id,data from user where id = 10001


DB上の特定のユーザのデータを調整しようとして、こんな感じのSQLを書いたら、




こう表示されて、インライン編集ができませんでした。
エラーメッセージをググっても、「ユニークキーをつけろー」という解説しか見つかりません。
「id」はユニークキーどころかプライマリキーなのに、なんでこんなエラーが出るのかと困り果てていたら、ほんの些細なことが原因でした。


select id,device_id,data from `user` where id = 10001

phpMyAdminでは、デフォルトのSQL文ではテーブル名を、``で囲まれていますよね。それをつけてみました。




するとこのように、エラーが消え、インライン編集できるようになったのでした。

そういう挙動なのは理解できましたが、納得はできませんね。なんで必要だったんでしょうか?

2017年1月20日金曜日

韓国の石油の輸入の殆どは日本に頼っている、というデマ

最近、日韓の交流関係で騒がしくなっていますね。
その情報をまとめているサイトでちょくちょく見かけるのが、このたぐいの噂。

韓国の石油の輸入の殆どは日本に頼っているから、日本が取引停止をすれば韓国はすぐに干上がる

そんなこと本当にありえるんでしょうか?
いっぱいググって、これはデマだな、と確信しましたのでまとめておきます。

まず、なぜこんなデマが生まれたかというと、「韓国の輸入軽油の95%ぐらいは、日本からのものである」という事実があるからです。
これを拡大解釈というか、誤解・誤認した人が2chにレスしたのが原因のようです。

そもそも韓国の原油の輸入は、まあ普通に、中東に大きく依存してます。だいたい84%が中東各国(サウジアラビアなど)です。
韓国で使用する軽油は、その原油からの精製物が90%ほどで、残り10%が輸入モノとなります。
その輸入モノのうち、95%が日本のものですよ、というだけの話なんですね。
つまり、韓国の石油事情の一部(つまり軽油だけ)のうちのさらに一部(入手ルートが輸入である部分)にスポットを宛てたら
ほぼ日本依存となりますね、という話なのでした。
仮に日韓断交なんてことになったとしても、韓国が石油関係でいきなり干上がる、ということはありえないようです。
ちなみに、逆に、日本がガソリンを輸入する場合は、ほぼ100%韓国からなのだそうですよ。物理的に近いですしね。


参考ソース

日本エネルギー経済研究所 平成27年度石油産業体制等調査研究
http://www.meti.go.jp/meti_lib/report/2016fy/000562.pdf
韓国だけでなく、アジア各国のエネルギー事情が詳しく書いてあります。
しかも経済産業省のサイトにおいてあるのですから、ソース信頼性抜群でしょう。

JPECレポート2015
http://www.pecj.or.jp/japanese/minireport/pdf/H27_2015/2015-020.pdf
韓国の原油輸入の大部分が中東各国であるというわかりやすいデータがあります。

中央日報
http://japanese.joins.com/article/131/196131.html
韓国の軽油市場のうち8%が輸入で、そのうち95%以上が日本というニュースです。

U-1速報
http://u1sokuhou.ldblog.jp/archives/50383449.html
同じく韓国の輸入軽油の割合のニュースですけど、記事タイトルが「日本企業が韓国の燃料供給を完全に支配してしまった」と
誤解を招きかねない表現になっています。
が、本文をしっかり読めば、輸入軽油での日本依存率は高いけど、韓国軽油全体で見れば15%程度だろう、という内容がわかります。

News U.S.
http://www.news-us.jp/article/379685472.html
「韓国は日本からしか石油買えない」という2chでの話題が出ています。
元の書き込みはオカルト板です。さらにその転載元は「名無しさん@13周年」という名無し名から、ニュース速報プラス板だったのだと推測できますが、
所詮2chの名無しのレスなのですから、具体的なデータソースの提示があったとは思えません。
少なくとも「韓国ウォンは信用がないマイナー通貨だから、中東から相手にされない」というレスは、
上記JPECレポート2015に反するウソだとわかりますね。

オカルト板
http://toro.2ch.net/test/read.cgi/occult/1383272015/504-
オカルト板でのこのスレの趣旨的に、具体的なデータソースがないからこそ、そのスレに書き込まれたと見るべきのような気がします。

2015年7月5日日曜日

SELECTタグでプレースホルダー表示する方法

↓これをやるには



↓こう書けばいいよ、という話です。

<select>
<option value='' disabled selected style='display:none;'>選択してください</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
<option>G</option>
</select>




HTML5の機能のひとつplaceholderは、入力欄が未入力状態の時にうっすらテキストを表示して
入力を促すという便利なものです





↑こういう入力促進文字が、

<input type='text' placeholder='住所を入力してください' />
<textarea placeholder='詳細なご要望を入力してください'></textarea>

こんな簡単なタグ指定でできます。
ところが、SELECTタグだけはそれが効きません

↓こう書いても、無視されて
<select placeholder='選択してください'>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
<option>G</option>
</select>

↓こうなります



なので、一般にはデフォルト表示となる選択肢の一つ目をプレースホルダー扱いするように、
↓こう書くように指示される事が多いのですが、実際にやると
<select>
<option value=''>選択してください</option>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
<option>G</option>
</select>

↓こうなります。


たしかに最初にプレースホルダーのように表示はされていますが、あくまで選択肢の1つなので、
それ自身も再度選ぶことができるのが気持ち悪いですよね。
それを解消するのが、記事冒頭で書いた記述方式なのです。

こんなテクニック使わなくても、単にplaceholder属性に書いておけばいいだけの日がいつかやってくるといいですね。

2014年5月19日月曜日

WordPressのTwenty Fourteenのアイキャッチは消すけど、サムネイルは残す方法

Twenty Fourteenのアイキャッチを消す方法をググると、

content.phpの

<?php twentyfourteen_post_thumbnail(); ?>

をコメントアウトしろ、という記事がたくさん出てきます。
しかしこれはサムネイル表示の機能そのものでもあるので、
これを消してしまうとスマホで見た時のサムネイルも消えてしまうのです。
記事ページのアイキャッチは鬱陶しいけど、スマホでの記事一覧のサムネイルは
表示しておきたい人のほうが多いのではないでしょうか。

スマホで見たときのサムネを残しつつ、記事ページのでっかいアイキャッチを消すのは、

1.記事単体ページでのアイキャッチを消す
2.記事一覧ページで画面サイズが大きい時のアイキャッチを消す

の2段階の処理が必要です。



記事単体ページのアイキャッチを消すには、

wp-content/themes/twentyfourteen/inc/template-tags.php

を変更します。

これの175行目(ほぼ最下部)あたりが

<div class="post-thumbnail">
<?php
 if ( ( ! is_active_sidebar( 'sidebar-2' ) || is_page_template( 'page-templates/full-width.php' ) ) ) {
  the_post_thumbnail( 'twentyfourteen-full-width' );
 } else {
  the_post_thumbnail();
 }
?>
</div>

こうなっていますので、2行コメントアウトしてください。

<div class="post-thumbnail">
<?php
 if ( ( ! is_active_sidebar( 'sidebar-2' ) || is_page_template( 'page-templates/full-width.php' ) ) ) {
//  the_post_thumbnail( 'twentyfourteen-full-width' );
 } else {
//  the_post_thumbnail();
 }
?>
</div>




もうひとつ、記事一覧ページで画面サイズが大きい時のアイキャッチを消すには、

wp-content/themes/twentyfourteen/style.css

の3077行目あたりが

@media screen and (min-width: 401px) {
 a.post-thumbnail:hover img {
  opacity: 0.85;
 }

となっていますので、

@media screen and (min-width: 401px) {
 a.post-thumbnail img {
  display: none;
 }


こう書き換えて下さい。


これで「アイキャッチは消すけど、サムネイルは残す」が達成できます。

2013年12月24日火曜日

Unityで複数カメラがあると、OnMouseDownなどが想定外の座標で反応する

Unityでゲーム作成していて、OnMouseDown,OnMouseEnter,OnMouseOver,OnMouseExit が
想定外の場所で反応することがありました。

意味不明な現象でしたが、原因は「カメラが複数あったこと」でした。

私の作り方では、まずシーン遷移をコントロールするために、
DontDestroyOnLoad で決して破棄されないオブジェクトを一つ作ります。
そのオブジェクトにくっついたスクリプトが
Application.LoadLevel や Application.LoadLevelAdditive を行うことで
制御を行っていたのですが、この「非破壊オブジェクト」は、何の気なしにカメラでやってたんですね。

そのおかげで、「制御されたシーンにおいてあるメインカメラ」と「非破壊オブジェクトとなったカメラ」の
ふたつがあることで、まったく想定外の座標でも OnMouseDown などが反応する、ということになってしまいました。



Unityには無害な空オブジェクトを作る Create Empty というメニューがありますので、
ちゃんとこちらを利用しましょう、という反省でした。

2013年12月17日火曜日

UnityでAnimation Event中にSetActive(false)するとフリーズする

UnityにはAnimationとAnimatorってのがあります。
AnimationにはIsPlayingのような再生確認のメソッドが用意されてますけど、
Animatorのほうにはそれらしきものがないんですよね。
スプライトアニメーションを作っても、終了タイミングを検知する方法が
用意されてないようです。


このように、終了フレームのところに Add Event Function して
呼び出すことで、終了検知するようにしてみたのですが、
とんでもないことがおきました。


function End(){
 gameObject.SetActive(false);
}

追加した End() のなかでSetActive(false) を呼び出すと、いきなりUnityがフリーズするのです。
イベントによる関数呼び出し中にオブジェクト自身を停止するのが悪い、ってことなんでしょうけど
いきなりフリーズはないわ~。
エラーメッセージじゃなくてフリーズするせいで、原因特定にかなり時間がかかってしまいました。


function End(){
 Destroy(gameObject);
}

Destroyでは大丈夫。正常にオブジェクト破棄できました。

UnityにVuforiaを入れて画面左下にしか表示されないバグの原因判明

原因がわかりました。
Unity4.3(Windows)、Vuforia2.6.7でやってたのですが、
どうもこれはバージョンの相性が悪かったようです。

Unityはいつでも旧バージョンがDLできてインストール出来るようになっていますが、
Unity4.2.2を入れてみたら…


このように、正常に全画面表示できました。
ARのためにいったんUnityのバージョンを4.2.2に落とすか、
Vuforia側の対応を待てばいいようですね。