Excelの「ブックの共有」を解除する方法

June 19,2018 12:03 AM
Category:[Excel]
Tag:[Excel, Office]
Permalink

Excelの「ブックの共有」を解除する方法を紹介します。

1.問題点

通常、Excelファイルのブックの共有を解除する場合、「ブックの共有」をクリック。

(クリックで拡大、以下同様)
ブックの共有

開いたウィンドウで「複数のユーザーによる同時編集と、ブックの結合を許可する」のチェックを外して「OK」をクリック。

チェックボックス

確認のダイアログが開くので「はい」をクリック。

確認のダイアログ

これでブックの共有が解除されます。

が、チェックボックスがグレーアウトされていて場合があります。

チェックボックスがグレーアウト

グレーアウトされている場合、共有を解除する方法が分かりません。

ということで、Excelの「ブックの共有」を解除する方法を紹介します。

2.Excelの「ブックの共有」を解除する

Excelの「ブックの共有」を解除するには、「共有ブックの保護解除」をクリック。

共有ブックの保護解除

これで「ブックの共有」をクリックすれば、1項の手順で解除できます。

ただし、パスワードで保護されている場合、「共有ブックの保護解除」をクリックしたあと、下のパスワード入力画面が表示されます。

パスワード入力画面

この場合、パスワードを設定した人にパスワードを教えてもらうか、その人に解除してもらうかのいずれかになります。

Comments [0] | Trackbacks [0]

Adobe Flash PlayerのアップデートでMcAfee Security Scan Plusをインストールしない方法

June 13,2018 12:03 AM
Category:[Adobe]
Tag:[Adobe, McAfee]
Permalink

Adobe Flash PlayerのアップデートでMcAfee Security Scan Plusをインストールしない方法を紹介します。

Adobe Flash Player

1.問題点

Adobe Flash Playerのアップデート通知がきて、インストールを実行すると、次のページが開きます。

インストールを実行

右側の「今すぐアップデート」をクリックしてインストールを開始。

今すぐアップデート

すると、McAfee Security Scan Plusまで一緒にインストールされてしまいます。

McAfee Security Scan Plusまで一緒にインストール

Adobe Flash Playerのアップデートの後、毎回McAfee Security Scan Plusをアンインストールするのですが、そもそもインストールしないようにする方法が分かりません。

ということで、Adobe Flash PlayerのアップデートでMcAfee Security Scan Plusをインストールしない方法を紹介します。

2.McAfee Security Scan Plusをインストールしないようにする

McAfee Security Scan Plusをインストールしないようにするには、最初のページの真ん中にある、「オプションのプログラム」のチェックボックスを外します。

オプションのプログラム

利用規約の表示が変わったことを確認して「今すぐアップデート」をクリック。

チェックした状態
チェックした状態

チェックを外した状態
チェックを外した状態

これで、McAfeeは最初からインストールされなくなります。

Comments [0] | Trackbacks [0]

MTContentFieldタグの使い方

June 7,2018 12:03 AM
Category:[テンプレートタグ]
Tag:[movabletype, MTContentField]
Permalink

MTContentFieldタグの使い方をまとめました。

1.MTContentFieldタグとは

作成したコンテンツデータの値を表示するためのブロックタグです。

2.MTContentFieldの必須モディファイア

MTContentFieldタグを利用する場合、content_fieldモディファイアに

  • ID
  • ユニークID
  • 名前

のいずれかを指定します。このモディファイアは必須です。

例:

<mt:Contents content_type="商品">
  <mt:ContentField content_field="商品名">
    :
 </mt:ContentField>
</mt:Contents>

3.MTContentFieldの中で使えるテンプレートタグ:MTContentFieldValue

MTContentFieldタグの中ではMTContentFieldValueタグが使えます。

例:

<mt:Contents content_type="商品">
  <mt:ContentField content_field="商品名">
    <mt:ContentFieldValue>
  </mt:ContentField>
</mt:Contents>

MTContentFieldValueは、コンテンツフィールドの値を表示するファンクションタグです。

4.MTContentFieldの中で使えるテンプレートタグ:コンテキストに応じた既存タグ

下記のフィールドの場合、MTContentFieldの中ではフィールドタイプに応じた既存テンプレートタグが使えます。

フィールドタイプ利用可能なテンプレートタグ
日付と時刻
日付
時刻
日付に関するテンプレートタグで利用できるモディファイアformat="%B %e, %Y %I:%M %p"
アセット
ビデオアセット
画像アセット
オーディオアセット
アセット関連のタグMTAssetURL
カテゴリカテゴリ関連のタグMTCategoryLabel
タグタグ関連のタグMTTagName

例:

<mt:Contents content_type="商品">
  <mt:ContentField content_field="カテゴリ">
    <mt:CategoryLabel>
  </mt:ContentField>
</mt:Contents>

5.参考サイト

参考サイトは下記です。ありがとうございました。

Comments [0] | Trackbacks [0]

Movable Typeでコンテンツタイプのフィールド名を出力する「ContentFieldNameプラグイン」

June 1,2018 12:03 AM
Category:[拡張テンプレートタグ]
Tag:[]
Permalink

Movable Typeでコンテンツタイプのフィールド名を出力する「ContentFieldNameプラグイン」を公開します。

1.機能

本プラグインをインストールすることでMTContentFieldNameタグを提供します。

MTContentFieldValueというタグがコア機能にあるのですが、このタグで出力すると数字しか出力されないコンテンツタイプがあるので、とりあえず作ってみました。

たとえば、コンテンツタイプにタグフィールドを作って、適当なタグを設定します。

タグフィールド

これをMTContentFieldValueタグで出力してみます。

<mt:Contents content_type="foo">
<mt:ContentLabel>
  <mt:ContentField content_field="タグ">
    <mt:ContentFieldValue>
  </mt:ContentField>
</mt:Contents>

すると、タグにひもづけられた数字しか表示されません。

タグフィールド

代わりに、MTContentFieldNameタグを使います。

<mt:Contents content_type="foo">
<mt:ContentLabel>
  <mt:ContentField content_field="タグ">
    <mt:ContentFieldName>
  </mt:ContentField>
</mt:Contents>

タグフィールド

他に期待通りに出力できるテンプレートタグがあったらすいません。

2.プラグインのダウンロード・インストール

下記のリンクをクリックして、ContentFieldNameのプラグインアーカイブをダウンロードします。

ContentFieldName_0_01.zip

プラグインアーカイブを展開し、pluginsフォルダにあるContentFieldNameフォルダをMovable Typeのアプリケーションディレクトリのpluginsディレクトリにアップロードします。

システム管理画面のプラグイン設定画面で、「ContentFieldName〜」が表示されればインストール完了です。

タグフィールド

Comments [0] | Trackbacks [0]

C++でechoを使う方法

May 29,2018 12:03 AM
Category:[C/C++]
Tag:[C/C++]
Permalink

C++でechoを使う方法を紹介します。

1.問題点

/proc//coredump_filterの値を、C++で"33"から"3f"に書き替える必要が生じ、下記のプログラムを作りました。

#include <unistd.h>
#include <fstream>
#include <stdlib.h>
 
int main(int argc, char **argv) {
    pid_t pid;
    pid = getpid();
 
    FILE *fp;
    char data[100];
    sprintf(data, "%s%d%s", "/proc/", (int)pid, "/coredump_filter");
 
    fp = fopen(data, "w");
    if(fp != NULL){
        fprintf(fp, "%x", 0x3f);
        fclose(fp);
    }
    return 1;
}

が、このプログラムを実行しても"3f"ではなく、"3"にしか書き替わりません。

$ ps -ef |grep a.out
root      2356 26996  0 00:11 pts/25   00:00:00 ./a.out
$ cat /proc/2356/coredump_filter
00000003

プログラムの問題ではなく、どうやら「mmapしたメモリの値がcoreに出力されない場合の対処」で紹介したとおり、coredump_filterはechoコマンドで書き替えないと期待する結果にならないようです。

が、C++でのechoコマンドの使い方が分かりません。

ということで、C++でechoを使う方法を紹介します。

2.C++でechoを使う

C++でechoを使うには、system()を利用します。

#include <unistd.h>
#include <fstream>
#include <stdlib.h>
 
int main(int argc, char **argv) {
    pid_t pid;
    pid = getpid();
 
    char data[100];
    sprintf(data, "echo 63 > %s%d%s", "/proc/", (int)pid, "/coredump_filter");
    system(data);
 
    return 1;
}

このプログラムを実行することで、期待通りの"3f"になりました。

$ ps -ef |grep a.out
root      2356 26996  0 00:11 pts/25   00:00:00 ./a.out
$ cat /proc/2356/coredump_filter
0000003f
Comments [0] | Trackbacks [0]

C++でnullで区切られたファイルを読み込む方法

May 25,2018 12:03 AM
Category:[C/C++]
Tag:[C/C++]
Permalink

C++で、nullで区切られたファイルや文字を読み込む方法を紹介します。

1.問題点

プログラムを起動したときのオプションパラメータを/proc//cmdlineから取得する必要が生じました。

a.outに"a b c"というオプションパラメータを付与して起動すると、cmdlineには

# cat /proc/<PID>/cmdline
./a.outabc

となり、プログラム名とパラメータが表示されます。

lessで開くと

# less /proc/<PID>/cmdline
./a.out^@a^@b^@c

となり、各パラメータはnull文字で区切られているようです。

この1行を表示させようと思い、下記のサンプルを作ってみました。

#include <iostream>
#include <unistd.h>
#include <fstream>
 
int main(int argc, char* argv[]) {
 
    // プロセスIDを取得
    pid_t pid;
    pid = getpid();
 
    // cmdlineのパスを生成
    char str[100];
    sprintf(str,"%s%d%s","/proc/", (int)pid, "/cmdline");
 
    // ファイル読み込み
    std::ifstream ifs(str);
    char data[256];
    while (ifs.getline(str, 256 - 1)) {
        std::cout << str << std::endl;
    }
 
    return 1;
}

が、このプログラムを実行すると、

$ ./a.out a b c
./a.out

しか出力されず、nullで区切られたあとのオプションパラメータを出力できません。

ということで、nullで区切られたファイルを読み込む方法を紹介します。

2.nullで区切られたファイルを読み込む

nullで区切られたファイルを読み込むには、getline()の第3パラメータに区切り文字としてnull(\0)を設定します。

#include <iostream>
#include <unistd.h>
#include <fstream>
 
int main(int argc, char* argv[]) {
 
    // プロセスIDを取得
    pid_t pid;
    pid = getpid();
 
    // cmdlineのパスを生成
    char str[100];
    sprintf(str,"%s%d%s","/proc/", (int)pid, "/cmdline");
 
    // ファイル読み込み
    std::ifstream ifs(str);
    char data[256];
    while (ifs.getline(str, 256 - 1, '\0')) {
        std::cout << str << std::endl;
    }
 
    return 1;
}

これでプログラムを実行すると、次のようにnullで区切られたあとの文字も表示されます。

$ ./a.out a b c
./a.out
a
b
c

3.参考サイト

参考サイトは下記です。ありがとうございました。

Comments [0] | Trackbacks [0]

mmapしたメモリの値がcoreに出力されない場合の対処

May 18,2018 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

mmapしたメモリの値がcoreに出力されない場合の対処方法を紹介します。

1.問題点

C/C++プログラムがセグメンテーションフォルトしたとき、mmapしたメモリをgdbで参照したときに、値を設定しているにもかかわらず、0しか表示されない事象が発生しました。

2.対処方法

/proc/PID/coredump_filterを書き替えることで実現できるようです。

プログラム動作時のcoredump_filterは次のようになっています。

# cat /proc/6235/coredump_filter
00000033

33をビット展開すると

0011 0011

となります。

この0~6ビットで何を出力するかが決まります。

各ビットのそれぞれの意味は次の通りです。

  • 0ビット:無名のプライベートマッピング (anonymous private mappings) をダンプ
  • 1ビット:無名の共有マッピング (anonymous shared mappings) をダンプ
  • 2ビット:ファイルと関連付けられたプライベートマッピング (file-backed private mappings) をダンプ
  • 3ビット:ファイルと関連付けられた共有マッピング (file-backed shared mappings) をダンプ
  • 4ビット:ELFヘッダーをダンプ
  • 5ビット:プライベートなヒュージページ (private huge page) をダンプ
  • 6ビット:共有されたヒュージページ (shared huge page) をダンプ

mmapしたデータを出力するには2ビット目または3ビット目に1を設定する必要があるので、両方のビットに1を設定するには、

0011 1111

つまり000003fにする必要があります。

このファイル、vimでは書き替えられないようなので、リダイレクトで書き替えます。

# echo 63 > /proc/6235/coredump_filter
# cat /proc/6235/coredump_filter
0000003f
Comments [0] | Trackbacks [0]

gccのリンカオプションで引数を渡す方法

May 17,2018 12:03 AM
Category:[C/C++]
Tag:[C/C++]
Permalink

gccのリンカオプションで引数を渡す方法を紹介します。

1.問題点

gccに下記のようなマップを出力するオプション(リンカオプション)を付与したいと思っています。

-Map /home/foo/map.txt

-Mapオプションの引数として、出力するファイルのパス・ファイル名(/home/foo/map.txt)を指定します。

とりあえず-Wlオプションに次のように付与してみました。

$ g++ -Wl,-M /home/foo/map.txt test.cpp

が、このまま付与すると、

g++: エラー: /home/foo/map.txt: そのようなファイルやディレクトリはありません

と、正常に認識されません。

ということで、gccのリンカオプションで引数を渡す方法を紹介します。

2.gccのリンカオプションで引数を渡す

gccのリンカオプションで引数を渡すには、下記の2通りがあります。

まず、-Wlオプションで渡す方法です。

$ g++ -Wl,-Map,/home/foo/map.txt test.cpp

-Wlオプションの最初のカンマの後"-Map,/home/foo/map.txt"が、リンカに渡すオプションです。

また、2つめのカンマは複数のオプションとして分割されます。

もう一つの方法は-Xlinkerオプションで渡す方法です。

$ g++ -Xlinker -Map -Xlinker /home/foo/map.txt test.cpp

-Xlinkerオプションで引数を持ったオプションをリンカに渡したい場合は、-Xlinkerを2回使用します。

Comments [0] | Trackbacks [0]

JavaScriptの時間を0パディングする方法

May 16,2018 12:03 AM
Category:[JavaScript]
Tag:[JavaScript]
Permalink

JavaScriptの時間を0パディングする方法を紹介します。

JavaScriptの時間を0パディングする

1.問題点

下記の、今日の年月日を表示する簡単なサンプルを作ってみました。

var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
alert(year + '/' + month + '/' + day);

このスクリプトを実行すると、"2018/5/15"のように表示されます。

できれば、"2018/05/15"のように、月や日が1桁のときに0パディングしたいのですが、方法が分かりません。

ということで、JavaScriptの時間を0パディングする方法を紹介します

2.JavaScriptの時間を0パディングする

JavaScriptの時間を0パディングするには、スクリプトに赤色の2行を追加します。

var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
month = ('0' + month).slice(-2);
day = ('0' + day).slice(-2);
alert(year + '/' + month + '/' + day);

slice()は、文字列の中から、指定した開始位置から終了位置までの部分を返却するメソッドです。

foo = 'abc';
alert(foo.slice(0,2));

と書けば、変数fooの左から数えて0番目から2文字、つまり"ab"を取り出します。

このように、通常はslice()のパラメータに正の値を設定しましが、負の値を設定すれば、右側から取得してくれます。

foo = 'abc';
alert(foo.slice(-2));

と書けば、変数fooの右端から数えて2文字、つまり"bc"を取り出します。

この機能を利用して、

month = ('0' + month).slice(-2);

と書くことで、monthが1~9の場合は2桁になるよう0パディング、10~12の場合は加えた0をはずして2桁にします。

Comments [0] | Trackbacks [0]

pkillコマンドで複数のプロセスを終了させる方法

May 8,2018 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

pkillコマンドで複数のプロセスを終了させる方法を紹介します。

1.問題点

Linuxで実行中のプロセスを終了させるには、killコマンドを利用することが多いと思います。

% ./a.out&
% ps -ef | grep a.out | grep -v grep
foo      6476  6351  0 17:44 pts/8    00:00:00 ./a.out
% kill -9 6476

ただこの方法は面倒です。

pkillはプロセス名を指定して、該当プロセスを終了させるコマンドです。

% ./a.out&
% pkill a.out

このように、a.outのプロセス番号を調べずにa.outを強制終了させることができます。

が、複数の同名プロセスが実行されている場合、まとめて終了させる方法がわかりません。

ということで、pkillコマンドで複数のプロセスを終了させる方法を紹介します。

2.pkillコマンドで複数のプロセスを終了させる

pkillコマンドで複数のプロセスを終了させるには"-f"オプションを付与します。

% ps -ef |grep a.out | grep -v grep
foo      6410  6394  0 17:36 pts/21   00:00:00 ./a.out
foo      6411  6351  0 17:36 pts/8    00:00:00 ./a.out
% pkill -f a.out

"-f"はプロセス名とマッチするプロセスをすべて対象にするオプションです。

ただ、試しに"-f"を付与せずに実行したところ、複数のプロセスを強制終了させることができたので、"-f"の用途は異なるのかもしれません。

Comments [0] | Trackbacks [0]

Linuxコマンドラインの省略記法

May 1,2018 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

Linuxコマンドラインでの省略記法を紹介します。

1.直前に実行したコマンドを再実行

直前に実行したコマンドを再実行するには、"!!"を入力します。

例:

% vim foo.txt
% !!

で"vim foo.txt"を実行します。

2.n個前に実行したコマンドを再実行

n個前に実行したコマンドを再実行するには、"!-n"を入力します。

例:

% ls -l
% vim foo.txt
% !-2

で2つ前の"ls -l"を実行します。

3.historyコマンドで表示されたn番目のコマンドを再実行

historyコマンドで表示されたn番目のコマンドを再実行するには、"!n"を入力します。

例:

% history
 :
   98  pwd
   99  ls -l
  100  cd ..
  101  ls
  102  pwd
 :
% !100

で100番目の"cd ../"を実行します。

4.直前に実行したコマンドの最後の引数を利用

直前に実行したコマンドの最後の引数を利用するには、"!$"を入力します。

例:

% vim foo.txt
% rm $!

で"rm foo.txt"を実行します。

5.入力した文字列に合致する、最後に実行したコマンド

入力した文字列に合致する、最後に実行したコマンドを実行するには、"!文字列"を入力します。

例:

% vim foo.txt
% pwd
% ls -l
% !v

で、"v"に合致する"vim foo.txt"を実行します。

6.直前に実行したコマンドのAをBに置き換えて実行

直前に実行したコマンドのAをBに置き換えて実行するには"^A^B"を入力します。

例:

% vim foo.txt
% ^foo^bar

でfooをvarに置き換えて、"vim bar.txt"を実行します。

7.実行コマンドを確認

実行コマンドを確認するには":p"を入力します。

例:

% vim foo.txt
% rm $!:p
rm foo.txt
%!!

8.入力履歴を検索

入力履歴を検索するには、"Ctrl+r"を入力します。

例:

Ctrl+rを入力
(reverse-i-search)`':

Ctrl+rを入力したあとに任意の文字(先頭文字でなくてもよい)を入力すると、直近のコマンドから候補を表示するので、リターンすればそのまま実行、左右矢印キーで移動すれば検索モードを抜け、コマンドを表示してくれます。

さらにCtrl+rを入力すれば次の候補を表示します。

Comments [0] | Trackbacks [0]

lessコマンドで特定の文字列をフィルタリングする方法

April 18,2018 12:03 AM
Category:[Linux]
Tag:[less, Linux]
Permalink

lessコマンドで特定の文字列をフィルタリングする方法を紹介します。

1.問題点

あるシステムで出力されるログを、"less +F"で動的に出力しているのですが、閲覧不要なログが大量に出力され、本当に見たい内容のログが見れません。

下記のようにすると、ログが動的に出力されなくなります。

% grep -v 除外文字列 | less +F

ということで、lessコマンドで特定の文字列をフィルタリングする方法を紹介します。

2.lessコマンドで特定の文字列をフィルタリングする

lessコマンドで特定の文字列をフィルタリングするには、まずlessコマンドでログを表示します。

このとき、"+F"オプションは付与せずに表示させてください。

次に"&"を押下。これで下記のように"&/"が表示されます。

&/表示

さらに"!"を押下すると"Non-match &/"という表示になります。

Non-match &/

除外したい文字を設定。ここでは"foo"と入力しています。

除外したい文字

リターンすれば"& :"という表示になり、フィルタリングした状態になります。

& :

さらに"Shift+f"を押下すれば、設定した文字にマッチしない行だけを動的に表示します。

設定した文字にマッチしない行を動的に表示

"!"を入力せずに文字列を設定すれば、設定した文字が存在する行だけをフィルタリングしてくれます。

Comments [0] | Trackbacks [0]

svnでコミットログを修正する方法

April 13,2018 12:03 AM
Category:[Linux]
Tag:[Linux, SVN]
Permalink

svnでコミットログを修正する方法を紹介します。

1.問題点

svnでコミットしたファイルのコミットログを修正したいので、ネットで調べて、TortoiseSVNを使って下記の手順で変更しようとしました。

該当ファイルを右クリックして、「Show log」を選択。

(クリックで拡大、以下同様)
Show log

変更したいリビジョンを右クリックして「Edit log message」をクリック。

Edit log message

メッセージを修正して「OK」をクリック。

メッセージを修正

が、「Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook.」というエラーが表示されて、メッセージを修正することができません。

Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook.

ということでsvnでコミットログを修正する方法を紹介します。

2.svnでコミットログを修正する

1項のエラーメッセージ「ask the administrator to create a pre-revprop-change hook.」は「管理者にpre-revprop-changeフックを作成するよう依頼」とあるので、このフックを作成します。

svnリポジトリにhooksというディレクトリがあるのでそこに移動。リポジトリ名がtestであれば"/svn/test/hooks"になります。

hooksには下記のファイルがあります。

-rwxrwx--- 1 root apache 1977  8月 28 16:58 2017 post-commit.tmpl
-rwxrwx--- 1 root apache 1638  8月 28 16:58 2017 post-lock.tmpl
-rwxrwx--- 1 root apache 2289  8月 28 16:58 2017 post-revprop-change.tmpl
-rwxrwx--- 1 root apache 1567  8月 28 16:58 2017 post-unlock.tmpl
-rwxrwx--- 1 root apache 3426  8月 28 16:58 2017 pre-commit.tmpl
-rwxrwx--- 1 root apache 2410  8月 28 16:58 2017 pre-lock.tmpl
-rwxrwx--- 1 root apache 2786  8月 28 16:58 2017 pre-revprop-change.tmpl
-rwxrwx--- 1 root apache 2100  8月 28 16:58 2017 pre-unlock.tmpl
-rwxrwx--- 1 root apache 2780  8月 28 16:58 2017 start-commit.tmpl

この中にあるpre-revprop-change.tmplは次のようなシェルになっています。

#!/bin/sh
 
# PRE-REVPROP-CHANGE HOOK
  :
# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
 
 
 
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
 
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
 
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

各変数は下記に対応しています。

  • REPOS:このリポジトリへのパス
  • REV:リビジョン
  • USER:プロパティを調整した人のユーザ名
  • PROPNAME:リビジョンに設定されているプロパティ
  • ACTION:'A'dded/'M'odified/'D'eleted

このファイルをコピーして、"pre-revprop-change"というフック用ファイルを同じディレクトリに作成し、実行権を与えます。

# cp pre-revprop-change.tmpl pre-revprop-change
# chmod 755 pre-revprop-change
# ls -l
合計 48
-rwxrwx--- 1 root apache 1977  8月 28 16:58 2017 post-commit.tmpl
-rwxrwx--- 1 root apache 1638  8月 28 16:58 2017 post-lock.tmpl
-rwxrwx--- 1 root apache 2289  8月 28 16:58 2017 post-revprop-change.tmpl
-rwxrwx--- 1 root apache 1567  8月 28 16:58 2017 post-unlock.tmpl
-rwxrwx--- 1 root apache 3426  8月 28 16:58 2017 pre-commit.tmpl
-rwxrwx--- 1 root apache 2410  8月 28 16:58 2017 pre-lock.tmpl
-rwxr-xr-x 1 root apache 2786  4月 12 10:32 2018 pre-revprop-change
-rwxrwx--- 1 root apache 2786  8月 28 16:58 2017 pre-revprop-change.tmpl
-rwxrwx--- 1 root apache 2100  8月 28 16:58 2017 pre-unlock.tmpl
-rwxrwx--- 1 root apache 2780  8月 28 16:58 2017 start-commit.tmpl

これで、コミットログを修正すると、このpre-revprop-changeフックが起動し、サンプルのシェルをそのまま使えばログに関する修正のみ、0で正常終了するようになります。

下記の画面で「OK」をクリックしても、エラー画面は表示されなくなります。

メッセージを修正

なお、pre-revprop-changeのパーミッションを参考サイトの手順にしたがって744にしてログを修正すると、下記のような「Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.」というエラーになったため、755にしています。

Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.

3.参考サイト

参考サイトは下記です。ありがとうございました。

Comments [0] | Trackbacks [0]

CSVDataImExporterプラグイン(MovableType7・コンテンツデータ対応版)

Movable Typeの記事をCSV形式で扱える「CSVDataImExporterプラグイン」をバージョンアップしました。

1.追加機能

MovableType7・コンテンツデータに対応しました。

インポート・エクスポートのメニューは、コンテンツデータ一覧に表示します。

インポート・エクスポートのメニュー

エクスポートのリンクをクリックすると、エクスポート画面が表示されるので、「CSVデータのエクスポート」をクリックすればCSVデータをエクスポートします。

エクスポート

エクスポートデータのサンプルは下記の通りです。

サンプルのコンテンツフィールド
コンテンツタイプ

エクスポートデータ

id,content_type_id,author_id,identifier,label,authored_on,modified_on,unpublished_on,unique_id,status,名前,説明_convert_breaks,説明,価格,URL,日付と時刻,日付,時刻,セレクトボックス,ラジオボタン,チェックボックス,アイテム,画像,カテゴリ,タグ,リスト,テーブル
1,1,1,test1,001,20180411211327,20180411211905,,68b9c31f56157c7de6040488f44f52b729ba01e4,2,テスト1,__default__,"aaa
bbb
ccc",10000,http://www.koikikukan.com/,2018-04-11 12:34:56,2018-04-30,00:00:03,M,1,"200,300",export-002-20171226221651.csv(3),bug-pbmt-white.png(2),"2,1",,"aaa,bbb,ccc","<tr>
		<td>1-1</td>
		<td>1-2</td>
		<td>1-3</td>
	</tr>
	<tr>
		<td>2-1</td>
		<td>2-2</td>
		<td>2-3</td>
	</tr>
	<tr>
		<td>3-1</td>
		<td>3-2</td>
		<td>3-3</td>
	</tr>
"

コンテンツフィールドの他に下記のフィールドをエクスポートします。

  • id
  • content_type_id
  • author_id
  • identifier
  • label
  • authored_on
  • modified_on
  • unpublished_on
  • unique_id
  • status

インポートのリンクをクリックするとインポート画面が表示されるので、必要な設定を行って「CSVデータのインスポート」をクリック。

インポートのメニュー

このような感じでインポートします。

インポート

評価ベータ版ということで、下記のコンテンツフィールドに対応した機能を提供します。

  • Single Line Text
  • Multi Line Text(フォーマットにも対応)
  • Number
  • URL
  • 日付と時刻
  • 日付
  • Time
  • Select Box
  • Radio Button
  • Checkboxes
  • アイテム
  • Audio Asset
  • Video Asset
  • Image Asset
  • Embedded Text
  • タグ
  • list
  • table

コンテンツフィールドの対応状況は下記のとおりです。

  • 日付と時刻/日付/Timeのフォーマットは記事・ウェブページと同じフォーマット
  • Multi Line Textのフォーマットは、CSVのフィールドとして出力
  • アイテム/Audio Asset/Video Asset/Image Assetは記事・ウェブページと同じフォーマット&アップロード対応

なお、現在のベータ版では下記の制約があります。→2018.4.17 すべて対応して製品版をリリースしました。

  • カテゴリセットはcategoryset_idでのインポート/エクスポートのみ可能(カテゴリ名には別途対応予定)→対応済
  • Select Box/Radio Button/Checkboxesはラベルではなく、値のみ対応(名前には別途対応予定)→対応済
  • 記事・ウェブページの機能は動作しません(別途対応予定)→対応済

また、すべての動作を確認できていないので、随時バージョンアップしていきます。

なおMT7製品版のリリース内容によって、操作・機能等を予告なしに変更する可能性もあります。ご了承ください。

2.プラグインのダウンロード

MT7・コンテンツデータ対応のCSVDataImExporterプラグインの評価版を公開中です。

ダウンロードは「CSVDataImExporterプラグイン」のページにアクセスしてください。

「CSVDataImExporterプラグイン」のページ
「CSVDataImExporterプラグイン」のページ

Comments [0] | Trackbacks [0]

subversionでファイル単位にアップデートする方法

April 11,2018 12:03 AM
Category:[Linux]
Tag:[Linux, subversion]
Permalink

subversionでファイル単位にアップデートする方法を紹介します。

1.問題点

subversionを使っているプロジェクトで特定のファイルだけをアップデートする必要が生じました。

いつもならチェックアウトしたリポジトリに移動して、

% svn update

と打つのですが、これでは他のファイルもまとめてアップデートされてしまいます。

ということで、subversionでファイル単位にアップデートする方法を紹介します。

2.ファイル単位にアップデートする

たいした回答ではありませんが、ファイル単位にアップデートするには、

% svn update ファイル名

と入力します。

hoge.ccのみをアップデートする場合は、下記のように入力します。

% svn update hoge.cc
Updating 'hoge.cc':
U    hoge.cc
リビジョン 3 に更新しました。
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages