アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2020年05月04日

季節外れの梅


季節外れの梅

季節外れなのは梅ではなく、

私のブログだ

変な世の中になってしまったので、

いつもと心の状態が違うし、

行動がおかしくなる

幸いなのは田舎に住んでいたこと

買い物以外は人には会わない

いつも花見を家族で出かけるのだが、

今年はそんな環境ではない

気晴らしにウォーキングと言うことで、

近くの山に咲く梅を見に行く

ここなら人気はないだろうと

しかし、

私と同じ考えの人は居たようだ

世の中とはこう言うもの

私だけは、

あり得ない

ここも予測通り

梅まつりは中止である

しかし道案内の人は

数名立っていた

7〜8割の人は自粛しても、

2〜3割の人は

やはり出向くのだ

天気の悪いせいもあるが、

梅に生気がない

全てが

暗い

これは3月1日のできごとである


20200301_1428_DSC_0133b.JPG


20200301_1428_DSC_0134b.JPG


20200301_1429_DSC_0136b.JPG


20200301_1429_HORIZON_0002_BURST20200301142924723b.JPG


20200301_1455_DSC_0139b.JPG














※画像をクリックすると拡大表示します








タグ:
posted by kaz at 16:21 | Comment(0) | TrackBack(0) |

2020年04月17日

写真データファイルに付く番号について_その2


写真に付けられている名前に

日付と時刻を自動的に付加するスクリプトを作成する

スクリプトを作ってふり直してみた

元のファイル名は「DSC_0171.JPG」だが、

ブログにアップロードしてみると、

タイトルは「2020‎03‎06_1048_DSC_0171.JPG」

となっている

しかしブログ文面に写真を貼り付けてみると、

ファイル名は

「E2808E2020E2808E03E2808E06_1048_DSC_0171.JPG」

となってしまった

実際のブログのテキストは、



<div style="text-align: center;"><a href="/dragonfl/file/undefined
/E2808E2020E2808E03E2808E06_1048_DSC_0171.JPG" target="_blank"><mg src="/dragonfl/file/undefined
/E2808E2020E2808E03E2808E06_1048_DSC_0171-thumbnail2.JPG" alt="‎2020‎03‎06_1048_DSC_0171.JPG"
border="0"></a></div>



このテキストに対しファイル名一覧から名前を

順番に置き換え、

ブログの写真添付文章を作っている

こんな名前になってしまったら、

スクリプトが動かせない

あくまでもファイル名は、

「2020‎03‎06_1048_DSC_0171.JPG」なのだから



これは今の文字体系UTF-8に関係すると考えた

最近の文字体系は複雑すぎる

それこそ昔は文字を1バイトで表現していた

1バイトとは8ビットで成り立つ

1ビットとはスイッチ1個と考えればよい

オンとオフで判断する

オンが1でオフがゼロだ

それを8個並べると、11111111

2進数で計算すると、

2^8=256だから256文字を表現できる

この中には数字と記号とアルファベットと

カナ文字が入っている

いや入っているのではなく、

単なる約束である

コードが「0x30」だったらゼロ「0」だよ

だから「0」と言うイメージを表示してね

と言うことだ

0xとは16進表示と言うこと

16進表示とは、一桁で0123456789ABCDEF

まで表すことができる

あくまでも一桁なので10以上はABCDEFとなる



1バイト文字の時は複数のコード表が用意されていて、

コード表を切り替えて

グラフィック文字や罫線を表現した

もっと古い話をすれば、

4ビットで数字を表していた

これを、デジットと呼ぶ

0000、全部オンで、1111

2進数だから値で表すと、

1+2+4+8で15、一桁で表すとFになる

私がコンピュータを始めた頃は、

この1バイトのコード体系ををEBCDIC、

(Extended Binary Coded Decimal Interchange Code、

エバックディック、拡張二進化十進コード)と呼んでいた

のちにASCII(American Standard Code for Information Interchange)

が現れ、

漢字を表すためにシフトJIS(Shift_JIS)なるものができた

半角文字と呼ばれるものは1バイトで表現できるが、

漢字は数が多いため1バイトでは表現しきれず、

2バイトが必要になった

2バイトでコードを表現すると、

2^16=65、536個の文字を管理することができる

この2バイト文字を全角文字と呼ぶ

しかしこの頃はまだグローバル化があまり進んでおらず、

企業内のシステムなどが主流であったため、

他国のことなど考える必要もなかった

きちんとしたルールも決められておらず、

半角以外のその国独自の文字などは

自由に空いているコード表の中に埋め込まれてしまった

インターネットなどが普及してくると、

他国で作られた文章などに文字化けが起きてきた

統一されていないのだから当然のことである

例えば、日本では漢字を割りふっている場所に、

中国ではそこに中国語が割り振られてくる

だからパソコンを立ち上げる時に、

言語国の指定が必要になってくる

そこで登場したのが、

Unicodeと呼ばれるもので、

これは文字コードの国際的な業界標準の一つで、

世界中の様々な言語の文字を収録し通し番号を割り当て、

同じコード体系のもとで文字を使用できるように

したものだ

しかし一長一短でそのまま使われることもなく、

例のごとくいろいろなものが派生してくる

その中で今一般的に使われているのがUTF-8

と言う規格で、

ASCIIと同じ部分は1バイトで文字を表現し、

そのほかの部分を2〜4バイトで表現する

可変長の符号化方式と呼ばれるものだ

話がそれてきているけれど、

そういう流れで文字に対する処理が

複雑になってきている

目に見える文字で中のコードを

判別できなくなってきている

また昔のことになってしまうが、

昔は半角全角が目で判断できたものが、

今では判別できない

ごちゃまぜである

コードと文字が1:1で表されていたものが、

今では1:nとなってきている

表に現れている文字の後ろに何があるのかが解からない

16進と言う言葉もあまり見かけなくなった



前出の「2020‎03‎06_1048_DSC_0171.JPG」が

ブログにアップすると

「E2808E2020E2808E03E2808E06_1048_DSC_0171.JPG」

と言う名前になったのはなぜか

スクリプトが返してきた文字は、

「?2020/?03/?06 ??10:48」であって、

16進で表記すると、

「0x3F323032302F3F30332F3F3036203F3F31303A3438」

である

今まで文字コードがどうのこうと言って来たし、

それで時間を大分つぶしてしまったが、

どうも文字コードが原因ではなさそうだ

ネットで「E2808」を調べて見るが、

サーバー側の文字変換で出現してきているようだ

たぶんサーバー側はPHPなどで作られていると思うから、

これ以上はもう私には解からない

しかし、スクリプトから返される日付情報に

余計なコードがあるのは見て明らかである

文字表示である「?」をコードで見ると「0x3F」が

どうも悪さをしている

ならば取ってしまおう

と言うことで

スクリプトではこの「0x3F」を除くことにする

出来上がったスクリプトで名前を置き換え

ブログにアップロードする

文字化けも起こらず

タイトルとファイル名も一致した

スクリプトがなぜ'0x3F'を付加して来たかは

未だ不明である



ファイル名に日付時刻を付加するスクリプトは

以下通り



'======================================================
'フォルダ単位の名前の変更を行う、但しJPG及びGIFを対象とす
'既存のファイル名の先頭に撮影日付と時刻を追加する
'形式は、yyyymmdd-hhmm_既存名.JPGとする <---hhmmが3桁の場合があるので頭ゼロで4桁固定とする 20190520
'
'対象フォルダにこのスクリプトを配置し、スクリプトを実行する
'拡張子は大文字で統一する 2018.07.20
'======================================================
'
'フォルダ名にスペース等が入っているとエラーになる
'MsgBoxは1バイト文字で最大約1024文字までしか表示出来ない
'
Option Explicit

Const cFiExt = "jpggif" '拡張子JPGとGIFを対象とする
dim FS
dim WShell
dim xMyPath
dim xLen

set FS=CreateObject("Scripting.FileSystemObject")
set WShell=CreateObject("Shell.Application")

'スクリプトのフォルダ名を取得
xMyPath=Replace(WScript.ScriptFullName, WScript.ScriptName, vbNullString)
if right(xMyPath,1)="\" then '右端が"\"の場合この"\"を削除
xLen=Len(xMyPath)
xMyPath=left(xMyPath,(xLen-1))
end if

FileRenameProc(xMyPath)

set FS = Nothing
set WShell=Nothing

'--------------------------------------------------
' ファイル名の変更
'--------------------------------------------------
Function FileRenameProc(pSourceFolder)

dim objFolder,objFiles,objFi,Fi
dim Arr,Arr2,xx,tmp,NewName,LL
dim xLen,Ix
dim getymdhm
dim NewName2
dim objWSFolder
dim xOneChr
dim xDate
dim xTime
dim xHH
dim xMM

Set objFolder = FS.GetFolder(pSourceFolder)
Set objFiles = objFolder.Files

Set objWSFolder=WShell.Namespace(pSourceFolder)

tmp = ""
For Each Fi in objFiles
Arr =Split(Fi.Name,".")
xx = LCase(Arr(1)) 'アルファベットの大文字を小文字に変換
LL = UCase(Arr(1)) 'アルファベットの小文字を大文字に変換
If InStr(cFiExt,xx) > 0 Then
set objFi = FS.GetFile(Fi)
'NewName=Arr(0) & "b" & "." & LL '拡張子は大文字で統一

'GetDetailsOFはWSHのメソッド、12は撮影日時のパラメータ
getymdhm=objWSFolder.GetDetailsOF(objWSFolder.ParseName(Fi.name),12)
'PutInClipboardText getymdhm
'余計な文字"&3F"が入っているので削除
NewName2=""
for Ix=1 to len(getymdhm)
xOneChr=mid(getymdhm,Ix,1)
if Hex(Asc(xOneChr)) <> "3F" then
NewName2=NewName2 + xOneChr
end if
next

Arr2 =Split(NewName2," ")
xDate=Arr2(0)
xTime=Arr2(1)
xDate=Replace(xDate,"/","") '日付の/を外す
xTime=Replace(xTime,":","") '時刻の:を外す
xTime=Right("0"&xTime,4)
NewName2=xDate & "_" & xTime '日付と時刻の間のスペースを_に変更->"-"はエラーになる

Ix=Instr(1,Arr(0),NewName2)
If Ix = 0 Then '
NewName=NewName2 & "_" & Arr(0) & "." & LL '拡張子は大文字で統一
tmp = tmp & Fi.name & "->" & NewName & vbCrLf
objFi.Name = NewName
Else '変更済み若しくは撮影日付がない
tmp = tmp & Fi.name & "->" & " no change" & vbCrLf
End If

End If

Next
MsgBox tmp '表示文字数制限あり

set objFi = Nothing
Set objFiles = Nothing
Set objFolder = Nothing

End Function

'クリップボードに出力
Public Sub PutInClipboardText(ByVal str)
Dim cmd

cmd = "cmd /c ""echo " & str & "| clip"""
CreateObject("WScript.Shell").Run cmd, 0
End Sub


これで写真の管理が楽になった

仕事を離れるとWindowsにこだわる必要がなくなる

何を作ろうかのアイデアも出なくなる

ボケ〜としていたところ、

新しいアイテムを見つけた

Pythonと言う言語

今までBASICが基本だと思っていたが、

人気言語を検索してもBASICが出てこない

今はPythonらしい

Pythonを調べていたらUnixが出てきて、

RaspberryPiなるものに興味が出てきた

今、RaspberryPiにはまってる

今度RaspberryPiについてのブログでも書こうかと

案を練っているところだ


20200306_1048_DSC_0171b.JPG
















※画像をクリックすると拡大表示します







タグ:スクリプト
posted by kaz at 16:59 | Comment(0) | TrackBack(0) | プログラム
リンク
access:
online:
ファン
検索
<< 2024年05月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
最新記事
最新コメント
オレンジ色の猫が by オーナー (02/06)
オレンジ色の猫が by 翠星石 (01/23)
ドローンを修理する by kaz (03/14)
ドローンを修理する by obayashi (03/10)
タグクラウド
カテゴリアーカイブ
プロフィール




×

この広告は30日以上新しい記事の更新がないブログに表示されております。