つまづいた石ころ、ぶつかった壁

問題(と解消)の記録

iPhone 画面に何も映らなくなって、あせる気持ちを落ち着かせる方法

突然でした

iPhoneを見てみると、画面に何も映りません。
ホームボタンを押してもだめ、電源ボタンを押してもだめ。
サウンド オン/オフを切り替えると反応はあったので、生きてることは生きてるようです。。

修理に出さなくちゃ

・・・と思って焦っていたのですが、ちょっと調べてみると同じ現象の人が見つかりました。
再起動すればいいとのこと。

手順

  1. ホームボタンと電源ボタン(スリープボタン)を10秒間長押し
  2. 待ちます


直りましたよ!!


iOS6へアップデートかけたまま放置していて、どうなったかと思えば
何も映らなくなっていて、やばいな修理なんて・・・保障どうだったかな〜と
とにかく焦っておりました。

その他参考サイト

iPhone本体 各名称
思ってたのと違う名前です。。

ラズベリーパイ

クリスマスにラズベリーパイが届くことになりました。
素敵なプレゼントですね。


Raspberry Pi


昨日メールが届きまして、10月中旬の予定だったのですが、
生産の遅れで12月25日になります、とのこと。
素敵な演出です(よ)ね!


ちなみに発注日からの詳細は以下の通りです。

  • 注文  :7月26日
  • 出荷予定:10月17日
  • 変更後 :12月25日

注文から発送まで、5ヶ月ということになりますね。
おあずけ期間ながいです。



そうだ、SDカードがないっ

jQuery Templates テンプレートエンジン の使い方

サーバ側でhtmlまで生成していたのですが、JSONデータのみにして軽量化したいのですが、
クライアント側でDOM組み立てる処理を書くのはちょっとやってられないので、テンプレートエンジンを探していました。


JSテンプレートエンジンについてググってみたところ、さまざまなものがあるようですが、
jQueryでもプラグインがあるようなので、手始めにこれでやってみました。

本家:jQuery - Templates
参考:jQuery公式のテンプレートplugin 「jQuery Templates」

  • テンプレート(html側)
<ul id="movieList"></ul>
<script id="movieTemplate" type="text/x-jquery-tmpl">
	<li><b>${Name}</b> (${ReleaseYear})</li>
</script>
  • js
var movies = [
	{ Name: "The Red Violin", ReleaseYear: "1998" },
	{ Name: "Eyes Wide Shut", ReleaseYear: "1999" },
	{ Name: "The Inheritance", ReleaseYear: "1976" }
];
//テンプレートから生成したDOMを対象にappendします
$( "#movieTemplate").tmpl(movies).appendTo( "#movieList" )


おー、見たまんま動きます。
${}がJSONのプロパティと置き換わります。

{hoge:"ほげ"}
<span>${hoge}<span><span>ほげ<span>

それを配列分繰り返します。



もう他のを試さなくても、これで十分すぎました。

クラシックASP BASP21を使わないファイルアップロードについてのまとめ(編集中)

BASP21を使わない方法です。

というのも<input type="file" multiple>で複数のファイルをアップロードしようとしたときに、
BASP21では実現できませんでした。


.Netを使ってひとまずアップロードはできたのですが、以前見たBASP21を使わないコードを思い出して、
参考にして実際にやってみようと思い、今ここです。

ひとまずBASP21を使わないでアップロードする方法をググってみた

Request.BinaryReadで取得したデータをADODB.Streamで保存すればできます、ということでした。


また、以前見たコードというのはここの回答にある、

FCKEditorのファイルアップローダにあるよ!です。


FCKEditorはWYSIWYGエディタを探していたときに触ったことがあり、ファイルアップローダがいくつかの言語
から選べるようになっていて、その中にASPVBScript)も含まれていました。

FCKEditorはここの一番下です。(退役済み)
http://ckeditor.com/download
今はCKEditorです。
CKEditor
CKEditorではファイル関連はCKFinderとして分離されています。
CKFinder

切り出し方

このアップローダのコードを読んでみると、POSTされたデータからファイルのバイナリ部分を切り出しているのかがわかります。
やっている内容としては、

  1. POSTデータの中の改行(crlf)を検索
  2. 最初の改行までが区切り文字(Boundary) 
  3. 次の二連続した改行までがフォームの情報(name属性、ファイル名)
  4. 次の改行までがファイルのデータ
  5. これをADODB.Streamでファイルに保存

必要になるもの

vbscriptとして、ここで使うものは主に以下の3つです。

  1. Request.BinaryRead:POSTデータのバイト配列の読み出し
  2. ADODB.Stream:ファイルの保存、バイト配列のテキスト変換(.ReadText() )
  3. InStrB:バイト配列から改行を検索

このコードではファイルへの保存が別メソッドになっていましたが、
データ取得部分をコピーし、とりあえずファイルのデータを切り出したら即保存するようにして、
アップロードを確認できました。

そのほか気になる点など

  • 改行探すのはいいけど、<textarea>の改行は大丈夫?
  • FormとFileでそれぞれ別の配列(Dictionary)を作っているけど、そもそも1つのフォームから送られるのに受け側で分けてしまうのはなんだかしっくりこないのでFormだけにしたい

multipart/form-dataとboundaryについて

RFC2388
サンプルデータ

-----------------------------41184676334
Content-Disposition: form-data; name="files"; filename="new.txt"
Content-Type: text/plain 

ingredients 
-----------------------------41184676334
Content-Disposition: form-data; name="files"; filename="bew.png"
Content-Type: image/png

PNG

&#65533;&#65533;&#65533; IHDR&#65533;&#65533;&#218;&#65533;&#65533;&#216;&#65533;&#65533;&#65533;&#202;&#175;&#65533;&#65533;&#65533; pHYs&#65533;&#65533;&#139;&#65533;&#65533;&#142;sD&#220;&#65533;&#65533;c&#236;IDATx&#156;&#236;&#157;a|&#148;E&#250;&#199;&#183;÷&#222;&#179;&#155;&#222;{#´@&#232;]&#138;;*r&#246;&#179;\&#241;&#238;&#252;&#235;&#157;w&#222;&#217;&#209;;&#207; *¨&#135;&#244;&#222;&#139;&#132;&#132;&#150;&#132;&#244;&#158;&#236;n&#178;&#155;&#237;&#189;&#239;&#255;yw! R&#131;&#243;&#253;,&#225;&#221;÷&#157;w&#222;y&#223;&#157;&#242;{&#230;}f&#134;q&#129;@ &#226;V@&#186;&#213; @ &#129;@ ~&#189; 9&#142;@ &#129;@&#220;2&#144;G &#129;@ nH&#142;#&#129;@ &#183;$&#199;&#129;@ &#136;[&#146;&#227;&#129;@ &#196;-&#201;q&#129;@ &#226;&#150;&#129;&#228;8&#129;@ q&#203;@r&#129;@ &#129;&#184;e 9&#142;@ &#129;@&#220;2&#144;G 
-----------------------------41184676334--

ここで、「-----------------------------41184676334」がboundaryです。


SQLの整形

SQLの整形に使っているツールです。


Sql整形(SqlLite)
インストール不要です。

手順

  1. 貼り付ける
  2. F2

以上。軽くて便利です。



WEBサービスもいろいろあるみたいです。
Beautiful SQL Formatter


リーダブルコード

リーダブルコードを読みました。


とても読み進めやすい内容でした。
読み終えたのはお盆前くらいですが、とりあえずこれだけでもすぐに思い出せます。

  • 日本語に置き換えただけの意味のないコメントをしない
  • 説明変数を使う
  • 三項演算子はそれによって読みやすくなる場合だけ使う


基本指針(引用の引用)

「すなわち、われわれの主な仕事がコンピュータに何をさせるかを命令することだと思わずに、
人間に対してコンピュータに何をしてほしいかを説明することに集中すべきである
P220 『文芸的プログラミング』からの引用

あとがきの参考文献の内容からの引用で、本書の意味何?となってしまいますが、ここにすべてが凝縮されていると思いました。
別の誰か、あるいは三日後の自分に向けて、わかるように書いておくこと。

そういえば

変数名にNewって付けるのはやめてほしいですよね。
あっというまにNewではなくなっていくところを見たのは一度や二度ではないです。



以下、今度読む。

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)

文芸的プログラミング (ASCII SOFTWARE SCIENCE Programming Paradigm)


リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

よく使うオブジェクトを楽に定義する方法

vbsですが、wsfにするとよく使うオブジェクトをあらかじめ定義できます。

やり方

  1. タグを書く
  2. 変数名とオブジェクトを指定する

以上です。
FSOやADODB関連など、必ず使うモノはここで書いておいて、コードもスッキリしました。

<package>
  <job id="main">
    <?job error="true" debug="true" ?>
    <object id="objFSO" progid="Scripting.FileSystemObject" />
    <object id="objXHR" progid="MSXML2.XMLHTTP" />
    <object id="objXml" progid="MSXML2.DOMDocument" />
    <object id="objStream" progid="ADODB.Stream" />
    <script language="VBScript" src="LogWriter.vbs"/>
    <script language="VBScript" src="inc/Utils.vbs"/>
    <script language="VBScript">
      Option Explicit

      msgbox "こんにちは!"
    </script>
  </job>
</package>


・参考
よく利用するジョブをスクリプトレットでコンポーネント化する
レジストリ登録して再利用もできるんですねー。


それにしてもこういう情報は全部古いですね。。
レガシーすぎる。。。