WordPress初心者なのですが、メニューの表記を英語にしたいな、と思ってここをいじってみました:
すると驚いたことに、TOPページに表示するコンテンツのうち、 一部を抜粋する機能が動かなくなったのです:
本来はこうあるべきです:
対策ですが、サイト全体の言語設定は日本語のままにし、 ユーザの言語設定において英語にすればOKです:
WordPress初心者なのですが、メニューの表記を英語にしたいな、と思ってここをいじってみました:
すると驚いたことに、TOPページに表示するコンテンツのうち、 一部を抜粋する機能が動かなくなったのです:
本来はこうあるべきです:
対策ですが、サイト全体の言語設定は日本語のままにし、 ユーザの言語設定において英語にすればOKです:
mp3のようなファイルを配信する場合、次のように書きます:
$this->autoRender = false; $download_file = $file_dir . DS . $file_id . ".mp3"; $response = $this->response->withFile($download_file); return $response;
このままでは、mp3がその場で再生され、ダウンロードできません。
当初は、ダウンロードするリンクにdownload
属性を付けていたのですがIE11ではサポートされていません:
<a href="/Audios/download.php?id=100" download>クリックしてダウンロード</a>
解決策は至って簡単でした。withFileの第2引数に['download' => true, 'name' => 'ファイル名']と指定してあげるだけです:
$this->autoRender = false; $download_file = $file_dir . DS . $file_id . ".mp3"; $response = $this->response->withFile($download_file, ['download' => true, 'name' => 'ファイル名'); return $response;
とするだけです。これで、IE11を含めて、正しくダウンロードしてくれます。
念のため、どのような仕組みかソースを見てみました。ファイルはvendor/cakephp/cakephp/src/Http/Response.php
です。
if ($options['download']) { $agent = env('HTTP_USER_AGENT'); if (preg_match('%Opera(/| )([0-9].[0-9]{1,2})%', $agent)) { $contentType = 'application/octet-stream'; } elseif (preg_match('/MSIE ([0-9].[0-9]{1,2})/', $agent)) { $contentType = 'application/force-download'; } if (isset($contentType)) { $new = $new->withType($contentType); } $name = $options['name'] ?: $file->name; $new = $new->withDownload($name) ->withHeader('Content-Transfer-Encoding', 'binary'); }
なお、aタグにdownload属性をつけるのを怠ると、Safariでは再生とダウンロードが両方走ります。
VirtualBoxの中にCentOSを立ててとあるウェブアプリケーションを開発しているのですが、 IE11での動作確認をする必要がでてきました。VirtualBoxはMac上で動いているのでどうすればいいのか? 調べてみたら、先人の方がちゃんとやり方を公開してくださっていました:
外部からVirtualBox内のサーバにアクセス - Qiita
ここでは、ホストOS(マック)が192.168.0.10で動いており、 ゲストOSはポート80でApacheがlistenしているとします。
以下に、最新のスクショとともにやり方を記載します。
ゲストOSをシャットダウンします。
ゲストOSを選択している状態で「設定」をクリック
http://192.168.56.10:8080
とブラウザに入力すると、アクセスできます。以下のコードを書いても動くのであれ?と思いました:
function getArea(width, height){ this.width = width; this.height = height; return this.width * this.height; } console.log(getArea(10,20)); // 200
this
と書いていますが、これはクラスをnew
したわけではないので何を指しているんだ???
答えはグローバルオブジェクトでした。上記の後に、
function getArea(width, height){ this.width = width; this.height = height; return this.width * this.height; } console.log(getArea(10,20)); // 200 console.log(width); // 10と出力される
ことから、グローバル変数を関数から定義&初期化しているのがわかると思います。
constructor
を使うと、this
の招待がもうちょっとわかります:
function getArea(width, height){ console.log(this.constructor); // function Window() { [native code] }と出力される this.width = width; this.height = height; return this.width * this.height; } console.log(getArea(10,20)); // 200 console.log(width); // 10と出力される
こういったことを防ぐためにもuse strict
をするのが良さそうです:
'use strict'; function getArea(width, height){ console.log(this.constructor); // thisがundefinedなのでエラーになる this.width = width; this.height = height; return this.width * this.height; } console.log(getArea(10,20)); // 200 console.log(width); // 10と出力される
ようやくやり方がわかりました(実はこれまで調査してなかった)
tell application "iTerm" create window with profile "hoge_profile" end tell
スクリプトエディタの「ファイル」メニューから「書き出す」を選び、 場所を「デスクトップ」に変更。次に書き出し名を入力後、 ファイルフォーマットで「アプリケーション」を選択し「保存」を押します。 するとデスクトップにアイコンができ、ダブルクリックするとiTermが開き、 指定のプロファイルが読み込まれます。
iterm2のターミナルを開くショートカットを作るべく、AppleScriptを作成することにしたのですが、 スクリプトエディタが見つからない(笑
Finder > 移動 > アプリケーション で「ユーティリティ」の中にありました:
普段は利用を敬遠しているIE11ですが先程、ちょうどよい用途を見つけました。
PlaycodeでJavascriptを勉強しているとき、Chromeを使うと「あれ、これES2015なのにBabel通さずに動くな…」ということがあります:
そこでIE11の出番です。同じコードをIE11で動かすと…
ちゃんとエラーがでます。ただしlet
とかはIE11も対応しているので完全ではないですが…