2016年6月30日木曜日

社内webにアップロードするファイルからネットワークドライブ上のファイルにリンクする

先日「ドラッグ&ドロップされたファイルからハイパーリンクを作成する」というサンプルを作成しましたが、このサンプルが出力したPathが使えるのは「コマンドを指定して実行」画面や


エクスプローラのアドレスバーなどです。



サンプルで作成したハイパーリンクをWordファイルなどに貼りつけることは可能ですが、そのWordファイルが「http://~」で始まるアドレスに移動した場合、そのリンクは無効になってしまいます。



「http://~」で始まるアドレスに移動する場合は、ハイパーリンクのリンク先アドレスを少し変える必要があります。


2016年6月29日水曜日

WebWorkerでナンプレを解くサンプルを作成しました

WebWorkerの利用例として適切なテーマを模索中。
そこそこの計算コストが必要でマルチスレッドにも向いている……と思いナンプレを選んでみましたが、作ってみたら25x25でもサブスレッド1つで2秒で解けちゃいました。
捨てるのも勿体ないので公開します。


2016年6月27日月曜日

2016年6月24日金曜日

WebWorker使用時のメインスレッドとサブスレッドの速度比較

WebWorkerを使うとJavaScriptでもマルチスレッドな処理ができます。
ただし、メインスレッドではdocumentエレメントなどのDOMにアクセスできますが、サブスレッド側からはDOMにはアクセスできません。アクセスしようとするとエラーになります。他にもActiveXObjectなどが使えないなど、サブスレッド側には色々な制約があります。
そのため、サブスレッド側でできることは非常に限られていて、使いどころがあまりないです。。

しかし、ふと思ったのですが「様々な機能をそぎ落として基本的なことしかできないようになっているスレッドは、メインスレッドより高速な処理が可能なのでは?」とデメリットがメリットに転じる可能性を検証したくなりました。


無効なPathの、有効な部分を調べるプログラムを作成した

メールなどで「○○のデータを下記Pathに保存しました」という連絡を貰うことがあります。
メールに記載されているPathをコピーして「Win + R」で「ファイル名を指定して実行」を呼出し、Pathを貼りつけてエンターキーを打つと、くだんのファイルが開く…と思いきや開かず以下のようなメッセージが出ることがあります。



2016年6月23日木曜日

ネットワークドライブ上で動作する簡易的な伝言板

テキストファイルを使った簡易的な伝言板を作成しました。
起動中は定期的にファイルが読み込まれて、常に最新の情報が表示されます。
伝言板の画面上でテキストを編集すると、即座にファイルに反映されます。(ファイルを選ぶ、開く、保存などの手間を省略しています)
プログラムも出力ファイルもすべてがメモ帳で表示・編集可能なので自由に改造できます。


2016年6月17日金曜日

cipherコマンドでドライブ内のデータを完全に削除する

ファイルやフォルダを削除しても運が良ければ復元できます。誤って削除してしまった場合には復元できた方が良いのですが、機密情報の入っているHDDを廃棄したい場合は復元できてしまっては困ります。HDDに入っていたものを復元できないようにするためにcipherというコマンドが利用できるのですが、これは使用する上で色々と注意が必要です。
今回はその注意点について解説します。(次の記事でそれを気にしなくて良いサンプルを公開します)
2016/06/17追記:ストレージの廃棄を目的としてcipherを実行する場合に必要な下準備からcipher実行までを自動化するサンプルを作成しました。
2016/07/04追記:記事末尾にも追記しましたが、cipherで処理したHDDからでも復元できるソフトがあるようです。。
2016/07/06追記:cipherに比べて非常に時間がかかりますが復元ソフトで元のファイルを取り出すことができない状態にすることができました。記事末尾に詳細を追記しました。
2016/07/07追記:アロケーションユニットサイズを大きくすることで、高速に埋め尽くすことが出来ることを確認しました。埋め尽くすためのプログラムを公開しました。
2016/07/13追記:埋め尽くす.htaのソースを修正しました。(処理中断ができるようにした。処理終了or中断時に、WSFファイルを削除するようにした。空き容量が0になったらHTA側も停止するようにした)

2016年6月15日水曜日

ドラッグ&ドロップされたファイルからハイパーリンクを作成する

フォルダやファイルのPathをメールに添付する時に、単純な文字列ではなくハイパーリンク化すると、相手は「文字列をコピー → Win + R → 貼りつけ → Enter」などの手間なく、クリックするだけで開けるようになりますが、ハイパーリンクを作成する方法はメールソフトによっては少し面倒なやり方だったりします。その煩わしさを回避するためのサンプルを作成しました。Wordなどでもハイパーリンクの作成がラクになります。

※2016/06/17 21:00追記:ウィンドウサイズを内容に合わせて(6/17 1:00更新時よりも更に)適切なサイズになるように修正しました。あと、多重起動した場合は後始末のところでエラーが出てしまっていましたが、そちらも修正しました。

2016年6月14日火曜日

フォルダやファイルの名前に含まれる特定の文字列を変換する.wsf

WSFファイルにドラッグ&ドロップされたアイテムの名前に特定の文字列が含まれていたらリネームするサンプルを作成しました。フォルダを指定した場合はフォルダ内のサブフォルダ、ファイルをシラミツブシに判別&変換していきます。


2016年6月13日月曜日

共有フォルダを追加、削除するサンプル

WSHのMSDNには共有フォルダを追加するサンプルがありますが、説明が難解でサンプルも長くて難しいです。VBScriptですし。
コマンドを使ってもっとシンプルに実行するサンプルを作成しました。

2016年6月11日土曜日

メロンとメロンパンみたいなもの

プログラミングをするのが本業ではない職場で私がJavaScriptを使っている時に、上司から「君が作っているJavaのファイルについて教えて欲しいんだけど」と言われたことがありました。

私はJavaは使ったことがありません。よく知らないです。

Javaと比べるとJavaScriptは変数の型が動的だとか引数は基本的に省略可能だとか色々違う点があるだろうと思い、そんな感じで上司には説明したのですが、理解を得ることができませんでした。

上記の出来事は数年前の出来事で、今は職場も上司も違いますが、当時の上司にはタイトルのように説明したら分かりやすかったかなと今さら思いました。

名前は少し似てますし見た目も若干共通するところがありますが、モノとしては全く別物です。と。

2016年6月10日金曜日

ADO警告画面が出ないスクリプトファイルのサンプル

HTAでMySQLなどを利用したい場合、ADODB.Connectionを使用しますが、これはOpenメソッドを実行するたびに以下のようなメッセージが表示されます。


このメッセージが表示されないようにするサンプルを作成しました。


タスクマネージャでwshの実行ファイルの名前を分かりやすくする

WSFファイルを普通に起動すると、タスクマネージャのプロセスタブに表示されるイメージ名は「wscript.exe」になります。
使用するファイルが一つ二つ程度なら問題ありませんが、さまざまな用途のファイルを使用してバックグラウンドでループ実行するようなものを使い始めるとタスクマネージャの表示がこんな感じになってきます。


2016年6月9日木曜日

MSDNの「エクスポート」を使ってみた

scd56jp.exeがダウンロードできなくてショックだった、けどMSDNのページには「エクスポート」という機能が付いてるのに気が付いた。
コレを使えば同等の情報をオフラインで閲覧できるようになるのでは!と思って試した。
結論から言うと、頑張れば出来そう。でもめんどい。


script56.chmがダウンロードできない

私はWSHなどでスクリプトを利用する際、[Microsoft Windows スクリプト テクノロジ]のページを利用しています。
嘘です。上記サイトと同じ内容を持つヘルプファイルを使用してます。
よく使うのでデスクトップに保存してます。

iframeを使って任意のページをスクリプトから利用する

iframeに任意のページを表示して、ページ内の情報を利用したりエレメントを操作するサンプルを作成しました。
色々と問題が起きやすい手法ですが、一時的な対応としては使えます。

2016年6月8日水曜日

バイナリデータを読み書きするサンプル

バイナリ形式でファイルを読んだり書いたりできます。
このサンプルファイルに適当なファイルをドラッグ&ドロップすると、そのファイルと同じフォルダに「(ファイル名)_書き換え後」というファイルを作成します。
書き換えたい場合は一番下の実行結果の画像を参考にして、書き換えたい部分の特定&リプレイスして、改行コードを削除してからbin_write関数に渡してください。

2016年6月6日月曜日

ファイル名をもとにファイルをフォルダ分けするスクリプト

フォルダ内のファイルを一定のルールでフォルダ分けしたい場合があります。
ファイル数が多すぎるフォルダは取扱いが色々と面倒ですし。
エクスプローラの検索フィルターを併用して、手作業で何とかなる程度のファイル数ならプログラムは不要ですが、グループの数が多すぎる場合はプログラムを使った方がラクです。
dirコマンドによるファイルのリスト取得を使ってフォルダ分けするサンプルを作成しました。

[JSON形式?]オブジェクトをテキストに変換する[evalで復元可能]

数値や文字列、関数や配列など様々な型のプロパティを持つオブジェクトをテキストに変換するプログラムを作成しました。
作成したテキストをeval関数に渡すと元通りのオブジェクトが作成できます。
ただし以下のような、循環参照を含むオブジェクトを渡すと無限ループしてしまいます。

[循環参照を含むオブジェクトの例]
  obj = {a:0, b:1}
  obj.c = obj

ブックマークレットと複数行テキストを双方向に変換するJavaScript

ブックマークレットは1行にまとめられていて、文字数にも制限があるため処理に無関係な空白は基本的にありません。
そのため編集の難易度は普通のプログラムよりも高いです。
少しでも見やすく、編集しやすい状態にするためのサンプルを作成しました。
また、複数行のテキストから余分なスペースや改行を取り除くサンプルも作成しました。

ユークリッドの互除法で最大公約数を求めるJavaScript

X,Y軸の長さが決まっていて幾つで分割すると縦横の比が等しくなるのか知りたい時などに使用します。
数値1
数値2


2016年6月3日金曜日

dirコマンドによるファイル(フォルダ)のリストを取得する

フォルダの中にあるフォルダやファイルのリストを使って何かの処理を行うプログラムを作る時があります。そういう時に使うサンプルを作成しました。

FFmpegでムービーファイルをH265形式に変換するスクリプト

FFmpegをダウンロードして、コマンドラインで「ffmpeg.exe -i C:\movie\h264.mp4 -vcodec libx265 C:\movie\h265\h264_変換済み.mp4」などと入力すれば、手持ちのムービーファイルをh265形式に変換することができ、画質を維持してファイルサイズを半分以下にすることができます。
しかし1ファイルごとにコマンド入力するのは面倒です。
ドラッグ&ドロップで実行できるようにするスクリプトを作成しました。

2016年6月2日木曜日

ExcelVBAでファイル選択画面(複数選択可)を表示する

ExcelVBAには「GetOpenFilename」というメソッドがあり、それの使用例がヘルプにも記載されています。しかしその使用例は単一ファイルを選択する場合に限って有効であり「MultiSelect」引数をtrueにしている場合はエラーが発生します。
「MultiSelect」をtrueにした場合でもエラーが出ないサンプルを作成しました。


アドセンス側でページビューがカウントされ始めました

以前から、ブロガーの管理画面で「投稿」タブを見ると、各記事が数回程度表示されていることになっていましたが、昨日まではアドセンスの管理画面側では「ページビュー:0」になっていました。

2016年6月1日水曜日

WSHとは、Windowsでよく繰り返す作業の手間を減らすツール

使用するのに必要なものは基本的にはWindowsだけです。
メモ帳で作成、編集ができます。
例えば、Excelでファイルを読み取り専用で開きたい場合、以下の文字列を

文字数を表示する

SEO的に「タイトルは32文字が最適」らしいです。

SEOで適切なページタイトルタグの付け方 Google検索結果の文字数(長さ)、キーワード数
タイトルタグ(title)のSEOに最適な文字数や記入方法


文字を数えるのが面倒なので入力中の文字列の長さを表示するサンプルを作成しました。

[アドセンス]Bloggerの同じアカウントで運用する別ブログへの広告貼りつけ

5/30に別ブログの管理画面で、「収益」タブから「Adsenseの利用条件」をクリックして





「SIGN UP FOR ADSENSE」をクリックして





「はい」





以降は青いボタンを押していけば申請手続きは済みました。





その後、広告の表示設定が変更できるようになり





5/31に広告が表示されるようになりました。





メールでの連絡は無し。
ついでに広告ユニットがいつの間にか整理されてました。