« 2019年9月 | トップページ | 2019年11月 »

2019.10.28

BunBackupってコピー対象からシンボリックリンクを除外できたのね

| |コメント (0)

 このエントリーをはてなブックマークに追加

かげさんは、普段のマシンの重要フォルダのバックアップに
BunBackupというフリーソフトを使っています。

実は、これまで毎回、バックアップ時、
Jenkinsのフォルダにある
「シンボリックリンク」のコピーに失敗していたんです。

シンボリックリンクとは?って方は、
シンボリックリンクの使い方と落とし穴
ってQiitaの記事を読むと良いかもです。

まぁ、シンボリックリンク使う人は限られてるだろうし
設定関連に無いし
フリーソフトだから対応してないんだろうな…

と思っていたのですが、
実際には、Ver4.0から
コピー対象からシンボリックリンクを除外できたのね…

BunBackupのサイトで
対象ファイル・除外ファイルでファイル属性を指定できる機能を追加 
という記事に書いてありました。

「バックアップ詳細設定」の「バックアップ方法」タブにある「除外ファイル」で
設定できる属性は以下のものがあります。

設定できる属性名 設定できる属性の意味
<ReadOnly> 読み取り専用ファイル
<Hidden> 隠しファイル
<SysFile> システムファイル
<Archive> Windowsアーカイブ ファイル
<Temporary> 一時ファイル
<SymLink> シンボリックリンクファイル
<Compressed> 圧縮ファイル
<Encrypted> 暗号化されたファイル

この機能は、シンボリックリンクファイルや隠しファイルを
バックアップ対象から除外したいという要望から生まれた機能で
設定に無い理由も書かれてました。

「シンボリックファイルを除外する」
という設定項目を表示しても、
多くのユーザーさんは「シンボリックリンクファイルって何?」
と疑問に思うのではないかと考えたからです。
(このようなことから、この機能を長い間追加できませんでした)

使うユーザーが少なく、理解しづらい設定項目は、
できるだけ表示したくないということから、
このような設定方法にしています。

ということでした。

気づかなかったわけだ。
ヘルプまでは調べなかったもんなぁ…

これで今後はシンボリックリンクのエラーが出なくなるぜぃ!

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.10.21

Jenkinsの「ジョブ設定」をバックアップするバッチファイルを作ってみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

Jenkinsの「ジョブの設定」を変更する時に
変更してから、前の状態は、どんなんだったっけ?
ということがある。

ソースはバージョン管理してるけど、
Jenkinsの「ジョブの設定」はバージョン管理してないので
とりあえず、「ジョブの設定」をバックアップしたい。

Jenkinsの「ジョブの設定」は
Jenkinsフォルダの「jobs/ジョブ名/config.xml」である。

TracLightningをデフォルトで使っている場合、jobフォルダは
「C:\TracLight\projects\hudson\.hudson\jobs」である。

そこで下記のようなバッチファイルを作ってみた。


@echo off
rem バックアップ先のパス
set BackupPath=%~dp0
rem Jenkinsのドライブとジョブのパス
set JenkinsDrive=C:
set JenkinsJobPath=C:\TracLight\projects\hudson\.hudson\jobs
echo %JenkinsJobPath%
rem カレントフォルダをJenkinsジョブのパスにする

%JenkinsDrive%
cd %JenkinsJobPath%

for /d %%i in (*) do (
rem バックアップ先にジョブフォルダがなければ作る
if exist "%BackupPath%%%i" (
rem echo "%BackupPath%%%i" が存在します
) else (
mkdir "%BackupPath%%%i"
)

rem Jenkinsジョブフォルダのジョブをバックアップ(上書き確認なし)
copy /Y "%JenkinsJobPath%\%%i\config.xml" "%BackupPath%%%i"
)
echo Jenkinsのジョブをバックアップしました。
pause

バッチファイルを実行するフォルダに
各jobのフォルダがなければ作って、そこにconfig.xmlをコピーする。

Jenkinsでジョブを変更する前に
このバッチを動かしてバックアップすれば良い。

バックアップしたファイルをバージョン管理ツールで管理したら
変更履歴も分かって便利だと思う。

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.10.16

SyntaxHighlighterのbat対応

| |コメント (0)

 このエントリーをはてなブックマークに追加

SyntaxHighlighterのLua対応」の記事を書いたので、
ついでにbat対応もしよう。

バッチファイル用の定義ファイルは
下記のところで公開されている。

[SyntaxHighlighter] Windowsバッチファイル用Brush

上記記事のダウンロードのところにある
非圧縮版、圧縮版 のどちらかをダウンロードしよう。

他の定義ファイルが「非圧縮」 なのと
中身が見やすいという理由で
かげさんは、 「非圧縮版」をダウンロードした。

速度重視の場合、
余分な空白などが除去された「圧縮版」が良いだろう。

中身を確認したところ、
SyntaxHighlighterの3.0.83版なのでコレにした。

定義ファイルとしては、
shBrushDosBatch-V3.jsを紹介してるところもあり
Wordpress版のSyntaxHighlighter でも
shBrushDosBatch-V3.jsを使っている。

だが、調べたところ、shBrushDosBatch-V3.js は
過去に公開されていたけど、今は公開されていないようだ。

shBrushBat.jsをアップロードして
のautoloaderのスクリプト部分に下記の記述を追加する。

         ,"bat com cmd              <$MTBlogURL$>files/shbrushbat.js"

なお、今のココログだと「shBrushBat.js」をアップロードすると
ファイル名が「shbrushbat.js」のように
大文字が小文字に変換されてアップロードされるため
定義ファイル名指定で
定義ファイル名の文字列を小文字にしないと
定義ファイルが見つからない状態になってしまうのが厄介なところ。

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.10.15

SyntaxHighlighterのLua対応

| |コメント (0)

 このエントリーをはてなブックマークに追加

SyntaxHighlighterのLua対応には、
Lua構文に合わせた色分け表示する「shBrushLua.js」が必要だ。

最終的にSyntaxHighlighter 3.0.83用の
下記のリンクにある「shBrushLua.js」を使うことにした。
SyntaxHighlighter 3.0.xx , lua brush shBrushLua.js

SyntaxHighlighter導入当時のかげさんも
「shBrushLua.js」をネットで探して
ココログにアップロードしてはいた。

しかし、インターネットで見つかる「shBrushLua.js」は
SyntaxHighlighter のバージョンによって使えるファイルが違うようで
他の scripts/shBrush*.js の中身を眺めて、
似たような記述がされてるファイルを探さないとダメっぽいことが
下記の記事に書いてあった。

この日記ページでLua言語の色分け表示ができるように指定

ココログにアップロードしたSyntaxHighlighterのバージョンは
3.0.83

http://alexgorbatchev.com/SyntaxHighlighter/
に書かれている最新バージョンと同じものだ。

かげさんのマシンで「shBrushLua.js」を探すと
2008年のもの、2011年のものなど、いくつか見つかった。

ココログにアップロードした「shBrushLua.js」は
Luaの「C API」、「auxiliary library」にも対応したものだった。

拾ってきた「shBrushLua.js」の中で古いファイルであるものの
C API、auxiliary library対応しているものがあって
それを参考に、かげさんが改良したバージョンだ。

が、改良のベースにしたファイルも
改良の参考にしたファイルも古かったようで
SyntaxHighlighterの3.0.83には合っていなかったみたい。

最終的にここの「shBrushLua.js」を使うことにした
SyntaxHighlighter 3.0.xx , lua brush shBrushLua.js

記事で使われている文字から察するに韓国の人が書いた記事みたい。

ここにある「shBrushLua.js」は
WordpressのWP SyntaxHighlighterプラグインで使うLua対応のスクリプトで
SyntaxHighlighter 3.0.83に対応したものなので安心だ。

本来なら、以前にアップロードした「shBrushLua.js」と
使うことにした「shBrushLua.js」を差し替えたいところだ。

しかし、ココログの2019/03のリニューアルに伴う仕様変更で
ココログのコントロールパネルにあるファイルマネージャでは
アップロード済みのファイルの中身の確認と削除しかできなくなってしまった。

リニューアル後は、アップロード先がblog/filesディレクトリに固定されていて
今まで保存してたblog/scriptsディレクトリのファイルと置き換えできないのだ。

他の「shBlushXX.js」と同じディレクトリに入れたかったが
仕様上、できないものはできないので
「shBrushLua.js」だけ別フォルダに入れるしか無かった。

幸い、SyntaxHighlighterでは、
各「shBlushXX.js」の格納場所は下記のように指定できる。


<script src="<$MTBlogURL$>scripts/shBrushXml.js" type="text/javascript"></script>

<$MTBlogURL$>は、MovableTypeのタグ(通称MTタグ)で
ブログのURLが自動的に入るので、
今回のLua用定義ファイルの格納場所指定は、下記のようにすれば良い。


<script src="<$MTBlogURL$>files/shBrushLua.js" type="text/javascript"></script>

ただ、このように増やしていくと、
ブログ記事によっては、使わないスクリプトも読み込むので
ページ表示に時間がかかってしまう。

例えば、今回の記事ではC++用の記載はないので
C++用の定義ファイルは読み込む必要がないのに常に読み込んでしまうのだ。

この問題の解決方法として
SyntaxHightlighter3.xからautoloaderという仕組みがある。

【JAVASCRIPT】SYNTAXHIGHLIGHTER 3.0 の新機能と注意点

autoloaderを使うと
各定義ファイルが必要になった時点でロードされるようになり
余分なファイルを読んでおく必要がない。

うちで使うのは、3.83なのでautoloaderを使うべきだ。

autoloaderの記述は、HTMLのhead要素内に
window.onloadに関数として代入するように書く。
(もっと良い方法は後述する)

JavaScriptは、上から順に実行されていく。

HTMLのhead要素内にautoloaderの記述を書いても
各定義ファイルが必要になるか分かるのは、
body要素を解析した後。

このため、単純にhead要素内に書いても、
全部を読み込まないと必要かどうかの判断ができず
全部を読み込んでからになるので表示が遅くなってしまう。

bodyの閉じタグの直前に書けば
Webページが表示された後にJavaScriptが読み込まれるので、
体感的に速く表示される。

ただし、bodyの閉じタグ直前に書いても、
必ずDOMのレンダリングが完了していることは保証されない。

このブログは、htmlのhead要素の最後にテンプレートを
挿入するようにしてるので、
bodyの閉じタグの前にJavaScriptを書くよりも
head要素内に記述したほうが良い。
既存のテンプレートを修正する必要がないんで。

window.onloadに関数として代入するように書くと
DOMのレンダリングが完了してから実行されるようになる。

しかし、普通は、window.onloadを書くとうまくいくはずなのに
うちでは、うまく動いてくれなかった…orz

preタグのbrushとしてluaを指定してても
SyntaxHighlighterの機能が効かず、
通常のpreタグのスタイルで表示されてる…

ココログのテンプレートにあるヘッダ部分には、
window.onloadが他にないし動くはずなんだが…

もしや、ヘッダ以外でwindow.onloadを使っているところがある?

調べてみたら、左サイドバーのテンプレートにも
window.onloadを使っているところがあった…orz

なるほど、window.onloadで動くJavaScrpitが2箇所で書かれてたら
うまく動かなくても不思議じゃないわ…

サイドバーのテンプレートはbody要素内だから
普通に考えて、window.onloadに関数を代入するんだから
後からの方が有効になってそう。

【JavaScript入門】onloadイベントの使い方とハマりやすい注意点とは
の「2.2 複数のwindow.onloadを書いた場合」によると想像通り
後勝ちになるようだ。

実は、この記事を作るに当たり上記のサイトを調べるまで
「複数のonloadがあるのが問題だから、1つにする」
ようにしていた。

が、上記のサイトを見ると
複数のonloadをどう解消するaddEventListenerや
onloadより高速動作するイベントDOMContentLoadedについて書かれていた。

調べて良かったわ!
裏取り調査は必要ね! (・∀・)


<script src="<$MTBlogURL$>scripts/shCore.js" type="text/javascript"></script>
<script src="<$MTBlogURL$>scripts/shAutoloader.js" type="text/javascript"></script>
<script src="<$MTBlogURL$>scripts/shBrushXml.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function() {
    // Luaだけscriptsフォルダではなくfilesな理由は
    // 2019/03のココログリニューアルでファイルアップロードの仕様変更
    SyntaxHighlighter.autoloader(
          "cpp                      <$MTBlogURL$>scripts/shBrushCpp.js"
         ,"css                      <$MTBlogURL$>scripts/shBrushCss.js"
         ,"html xml xhtml           <$MTBlogURL$>scripts/shBrushXml.js"
         ,"js jscript javascript    <$MTBlogURL$>scripts/shBrushJScript.js"
         ,"java     <$MTBlogURL$>scripts/shBrushJava.js"
         ,"lua     <$MTBlogURL$>files/shbrushlua.js"
         ,"perl pl                  <$MTBlogURL$>scripts/shBrushPerl.js"
         ,"plain text               <$MTBlogURL$>scripts/shBrushPlain.js"
         ,"php                      <$MTBlogURL$>scripts/shBrushPhp.js"
         ,"ruby rails ror rb     <$MTBlogURL$>scripts/shBrushRuby.js"
         ,"python py                <$MTBlogURL$>scripts/shBrushPython.js"
         ,"sql                      <$MTBlogURL$>scripts/shBrushSql.js"
         ,"vb                       <$MTBlogURL$>scripts/shBrushVb.js"
    );
    // ココログはblogger.comのものではないのでfalse
    SyntaxHighlighter.config.bloggerMode = false;
    // ソースにカーソルをのっけると,クリップボードにコピーなどのflashがでてくる設定
    // しかし、Adobe Flashが2020年に終了するのでコメントアウト
    // 2019/10現在、chromeではFlash Playerは、許可がないと使えなくなっているし
    // ソースコードの部分をダブルクリック(ソース部分が全選択される)後にコピーできるため
    //SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';
    // 改行を無視する
    SyntaxHighlighter.config.stripBrs = true;
// ソースコード画面内で自動的にリンクを作らない
    SyntaxHighlighter.defaults['auto-links'] = false;
// ソースコード画面の右上の「?」マークを消す
    SyntaxHighlighter.defaults['toolbar'] = false;
    SyntaxHighlighter.all();
});
</script>

なお、今のココログだと「shBrushLua.js」をアップロードすると
ファイル名が「shbrushlua.js」のように
大文字が小文字に変換されてアップロードされるため
定義ファイル名指定で
定義ファイル名の文字列を小文字にしないと
定義ファイルが見つからない状態になってしまうのが厄介なところ。

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.10.09

SyntaxHighlighterの設定変更でソースコードを見やすくできた

| |コメント (0)

 このエントリーをはてなブックマークに追加

このブログでは、以前からSyntaxHighlighterを導入してます。

※SyntaxHighlighterとは
開発言語に合わせて
構文の色分け表示(シンタックスハイライト)をしてくれるJavaScript。

SyntaxHighlighterは、preタグを使うのだが
ココログ、3月のリニューアルからpreタグが使いづらくなってるのよね。

preタグ内の改行にさらにbrタグを付けたり、
空行をpタグに変換するのは、いただけない…(-_-;)

2019/09/24に調べてみたところ
既に報告されている問題のようだ。

けど、3月から状況は変わっていないので、
preタグ内は「改行HTMLタグ変換」しないでと要望を出した。

リニューアル前にできていた無駄な改行を抜く方法もできなくて
ユーザー側では対処できないと思ったからだ。

でも、日曜日に自分のブログ過去記事を見てて
別件でSyntaxHighlighterってデフォルトじゃLua対応してないよなぁ…
ってことからSyntaxHighlighterを調べていたら
この問題をSyntaxHighlighterの設定で解消できることが分かった!(・∀・)

うちでは、以下の2行に直すことにした。

SyntaxHighlighter.config.bloggerMode = false;
SyntaxHighlighter.config.stripBrs = true;

2行目のstripBrsというのが、brタグを無視するという設定だ。
で、この設定を直す時の調べ物で
1行目のbloggerModeをtrueにしてたのが間違いと気づいた。

bloggerModeは、
bloggerってブログを使っているかのフラグだった(´・ω・`)

SyntaxHighlighter導入時にブログの記事を書いてないので
詳細は分からんが、SyntaxHighlighter導入時、
bloggerModeを「ブログを使っている場合」と思ったのだろう。

導入時に下記のことをしてたみたい。

SyntaxHighlighter関連箇所を変えやすいように
ココログでCommonHeadというテンプレートを作った。

ブログに書いていないから、まるで覚えてなかったが
ちゃんとLuaにも対応しようとしてたみたい(笑)

でも、Lua対応は、うまくいかなくて挫折したっぽいね…(-_-;)

長くなるのでLua対応については、次の記事にする。

SyntaxHighlighterのことをブログに書いていなかったから、
今回改めて調べ直すことになり、実質2度手間になった。

が、結果的に「気になっていたところが解消されて良かった」
ということにしよう(・∀・)

■前述の2行を設定前(余分な改行がある)
Photo_20191009151201


■前述の2行を設定後(余分な改行がない)
Photo_20191009151202

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.10.08

「自分のツイートを検索したい」と思い調べたことの覚書

| |コメント (0)

 このエントリーをはてなブックマークに追加

Twitter高度な検索:検索コマンド(オプション)の使い方15選
ココに書かれてる内容を見ると、かなり検索しやすくなると思う。
後述のリンクも、ココで書かれていることと重複した内容が多い。

Twitterで自分のツイートだけを検索する方法
最初に調べたのはココ、他のリンクは、関連リンクをたどった。
自分のツイートだけを検索するなら
「From:@を除いた自分のTwitter ID」とすれば良いだけだった。

Twitter検索:過去のツイートを見る4つの方法まとめ
過去ツイートを探す手段が複数あれば、
Twitterで不具合が起きてても探せるかもと思った。

Twitter検索:写真、画像付きツイートのみを検索するオススメの方法3選
自分のツイートで画像や動画を付けたものだけ検索したい時に便利そう。

 このエントリーをはてなブックマークに追加

| |コメント (0)

« 2019年9月 | トップページ | 2019年11月 »