uwscで秀丸エディタを起動してマクロを実行

uwscで秀丸エディタを起動するにはコマンドプロンプトを利用する。

//秀丸エディタを起動
-------------------------------------
CMD = "C:\Program Files\Hidemaru\Hidemaru.exe"
DOSCMD(CMD) //実行
-------------------------------------

//ファイルを指定して秀丸エディタを起動
-------------------------------------
CMD = "<#DBL>C:\Program Files\Hidemaru\Hidemaru.exe<#DBL> <#DBL>C:\フルパス\目的のファイル.html<#DBL>"
DOSCMD(CMD) //実行
-------------------------------------
※パスのProgram Filesに半角スペースがあるので、パス全体を<#DBL>でかこう

//ファイルを指定してマクロを実行
-------------------------------------
CMD = "<#DBL>C:\Program Files\Hidemaru\Hidemaru.exe<#DBL> /xマクロ名.mac <#DBL>C:\フルパス\目的のファイル.html<#DBL>"
DOSCMD(CMD,true) //実行。trueがないとファイルを閉じるまで次の命令が実行されない
-------------------------------------
※マクロは オプション /xマクロ名 で指定

マクロを実行した後の処理

マクロ終了のダイアログを閉じる
-------------------------------------
//#32770はダイアログ。-1は無限待ち
id = GETID("秀丸エディタ", "#32770", -1)
SLEEP(1)
CLKITEM(id, "OK", CLK_BTN)
-------------------------------------

上書き保存と閉じる
-------------------------------------
// ショートカットキーの実行
hide_id = GETID("目的のファイル.html", "Hidemaru32Class", -1)
SCKEY(hide_id, VK_CTRL, VK_S) //保存
//CLKITEM(hide_id, "上書き保存 Ctrl+S", CLK_ACC) //もしくはこれ
SLEEP(1)
CTRLWIN(hide_id, CLOSE) //閉じる
-------------------------------------

【windows7】uwscでzipファイルを回答&圧縮

uwscでzipファイルの解凍や圧縮をしたい場合はpowershellを使うのが便利。

zipファイルを扱えるpowershellはv5以降。windows7ではバージョンアップが必要。

powershellのバージョン確認コマンド
------------------
$PSVersionTable
------------------

また、windows7でpowershell v5をインストールするには .NET Framework Ver.4.5以降が必要

windows7で .NET Framework のバージョンを確認する方法

http://www.atmarkit.co.jp/ait/articles/0910/15/news116.html

解凍コマンド
------------------------------------
Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名
------------------------------------

圧縮コマンド
------------------------------------
Compress-Archive 圧縮したいフォルダ 圧縮後のフォルダ名.zip
------------------------------------

なのでuwscでのコマンドは

解凍
------------------------------------
PS = "Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名"
POWERSHELL(PS) //実行
------------------------------------

圧縮
------------------------------------
PS = "compress-archive 圧縮したいフォルダ 圧縮後のフォルダ名"
POWERSHELL(PS) //実行
------------------------------------

もしくはUWSCからコマンドプロンプトを動かして

解凍
------------------------------------
CMD = "powershell Expand-Archive 解凍したいファイル.zip 解凍後のフォルダ名"
DOSCMD(CMD) //実行
------------------------------------

圧縮
------------------------------------
CMD = "powershell compress-archive 圧縮したいフォルダ 圧縮後のフォルダ名"
DOSCMD(CMD) //実行
------------------------------------

epubをルビありのテキストにする

calibreを使ってepubをテキストにすると「漢字かんじ」のように漢字とルビがつながる。「漢字(かんじ)」のようにルビを括弧でかこいたいのでcalibreで変換前にひと手間加える。

1.epubをzip形式に変換して、本文が書かれたhtmlファイルを取り出す。

2.htmlファイルを秀丸マクロで変換。

--------------------------------
//隣り合うルビを結合する
replaceallfast"<ruby>([^<]*?)<rt>([^<]*?)<¥/rt><¥/ruby><ruby>([^<]*?)<rt>","<ruby>¥¥1¥¥3<rt>¥¥2",regular;

//隣り合うルビタグがなくなるまで置換
while (result != 0) {

replaceallfast"<ruby>([^<]*?)<rt>([^<]*?)<¥/rt><¥/ruby><ruby>([^<]*?)<rt>","<ruby>¥¥1¥¥3<rt>¥¥2",regular;

//#a = result;
//$a = str(#a);
//message $a;

}

//ルビを括弧でかこう
replaceallfast"<rt>","(";
replaceallfast"</rt>",")";

//不要なrubyタグを削除
replaceallfast"<ruby>","";
replaceallfast"</ruby>","";
message "終了";
--------------------------------

3.変換後のhtmlファイルをzipの中に戻し、epub形式に戻す。そのepubをcalibreでテキスト変換する。

CentOS自宅サーバーにpoderosaやffftpから接続するときの確認事項

外部ネットワークからCentOSの自宅サーバーにアクセスするときの確認事項の覚書

poderosaやffftp共通

・ポートが開いているか
サーバー側のルーターにアクセスしてポートが開いているか調べる。
poderosa(SSH)は22番
ffftpは20~21番

・必要なサーバーソフトは立ち上がっているか
poderosa(SSH)httpd(Apache)が起動しているか確認
ffftpはsftpdが起動しているか確認

・iptablesが接続の邪魔をしていないか
iptablesの設定を確認。もしくは起動を終了させる。iptablesの設定例

なお、初期設定ではrootを使ってffftpでログインできない
詳細

ffftpで接続はできるのにサーバー側のファイル一覧が表示されない場合は、サーバー側でPASVモードの接続が許可されてない可能性が高い。「設定変更」-「拡張」タブ-「PASVモード」のチェックをはずす。もしくはサーバー側の設定を変更してPASVモードでの接続を許可する。

参考ページ

自宅サーバーに外部ネットワークからアクセスする設定

自宅に立てたCentOSサーバーに外部ネットワークからグローバルIPアドレスを指定してアクセスするときの確認事項

前提
・自宅サーバーのCentOSからインターネットつなげることができる
・同一ネットワークに他のPCがある(同じルーターに繋がっている)場合、そのPCからCentOSサーバーにアクセスできる

確認事項
・apache(httpd)を起動していること
・iptables(ファイヤーウォール)を停止していること、もしくはきちんと設定されていること
・二重ルーターになっていないこと(確認方法はこちら

・CentOSサーバーとその他の同じLAN内にあるPCが同じグローバルIPアドレスを共有する場合(プロバイダ契約がひとつの場合)は、CentOSサーバーのプライベートIPアドレスを固定する
固定の仕方参考ページ

プライベートIPアドレスを固定するときは他の機器と重複しないように注意。ルーターにアクセスし、DHCPで自動割り当てされる範囲のIPアドレスを確認し、範囲外のIPアドレスを指定すること。

・ルーターからポートの開放を行い、外部ネットワークからアクセスできるようにする。このとき自宅サーバーのプライベートIPアドレスを指定する。

WHR-HP-GNルーターの場合は設定はこちら

CentOS6.7のGUI画面が乱れてインストールできない

CentOS6.7をUEFIモードのRAID1でインストールしたときの覚書

インストールするとGUI画面で画面が乱れてインストールができない。

画面が乱れる理由はマザーボード(グラフィックボード)との相性が悪いのが理由のよう。

PCの構成
-----------------------------------
・H170-PRO(マザーボード、バージョン0906 2016/02/26更新 適用済み)
・Core i3-6100T(CPU)
・バッファローの白ディスプレイ(VGAケーブル) → acer黒ディスプレイ(DVIケーブル)(ディスプレイを変更してもダメ)
-----------------------------------

3TBのHDDを使ってRAID1を組んでインストールしたいので、UEFI起動でGUIでインストールする必要がある。

※非UEFI起動だと、画像の乱れはないが2TBより多いHDDを認識しない。また「GPTブートディスクを非EFI環境のシステムでお使いです」というエラーが出てインストールができても起動ができない。

こちらを参考

※CUI(テキスモード)でのインストールだとカスタムレイアウトによるパーティションのカスタムレイアウトができないのでインストール時にRAID1が組めない。
RAIDでなくていいからテキストモードでのインストールしたい場合はこちらのページを参考に、インストール最初の画面でリンク先のページで"single"としているところを"text"に変えて進めればいい。

古いバージョンのCentOSをいろいろ試してみると、CentOS6.5だと問題なくインストールできた(6.3、6.4、6.6はダメだった)。CentOS7でもUEFIモードのインストールは問題なし。

古いバージョンのCentOSダウンロードはこちらから

ただし、CentOS6.5で無事にインストールを完了しても「yum -y update」でCentOS6.7にアップデートしてしまうと再び画面がバグる。

解決方法
CentOS6.7をインストールしたいときは、一旦CentOS6.5のブートメニューで「Install system with basic video driver(基本的なビデオドライバーでシステムをインストール)」を選択して、インストールする

参考ページ

そのあとでCentOS6.7にアップデートしても画面は乱れない

パーティションの構成はこのようにした

IMG_9894

RAID1構成の参考ページ

ブート領域の設定は「カスタムレイアウトを作成する」を選択したあと、「作成」-「標準パーティション」から次のように設定する。

一つ目のHDD
--------------------------------------
「マウントポイント」 → 「/boot/efi
「ファイルシステムタイプ」 → 「EFI System Partition」
「使用可能ドライブ」 → 「sda」にチェック
「サイズ」 → 「300」
--------------------------------------

上と同じサイズのパーティションの二つ目のHDDにも設定
--------------------------------------
「マウントポイント」 → 「(空欄)
「ファイルシステムタイプ」 → 「EFI System Partition」
「使用可能ドライブ」 → 「sdb」にチェック
「サイズ」 → 「300」
--------------------------------------

構成の順番も大事で、写真と順番が違うとCentOSが起動しなかった。おそらく一番最初にEFI Filesystemのブート領域を持ってくるといい。

UEFIのブート領域はRAIDにできないようなので、二つ目のHDDにはマウントポイントなしでEFI Filesystemの領域を同サイズ確保した。インストール後、sda1の内容をsdb1にコピーすればいいらしい。(こちらの方が言ってるまま)

あとは初期値をいじらずにインストールを終えればインストール完了となる。

インストールできたらすべてのパッケージをアップデートしておく。

yum -y update ※-yはすべてイエスで答える

CentOS6のインストールで「GPTブートディスクを非EFI環境のシステムでお使いです」

3TBのHDDを二つ用意してCentOS6.7にRAID1構成でインストールを試みた。

こちらのページを参考にパーティションを構成してインストール作業を進めていくと警告表示される。

-----------------------------------
警告:
GPTブートディスクを非EFI環境のシステムでお使いです。おそらく、これはBIOSがGPTディスクからの起動をサポートしていないため動かないでしょう。
-----------------------------------

GPTブートディスクとは、2TBより容量の多いHDDのことらしく、これまでのBIOSでは扱えないディスクサイズを指すらしい。警告を対して気にも留めずインストール作業を最後まで終え、PCを再起動するとBIOS(UEFI)画面が表示されるだけでCentOSは起動しない。

これの解決策は、DVDドライブにCentOSのインストールディスクを入れてPCをリブート。BIOS画面に入ってブートメニューから「UEFI: DVDドライブ名」を選択してUEFIモードでインストール工程を処理していけばいい。

Sccure boot violationでCentOSがインストールできない時の対処法

新しく購入したPCにCentOS6.7をインストールする際、Sccure boot violationというエラーが出た。

エラーメッセージ
-----------------------------------
The system found unauthorized changes on the firmware, operating system or UEFI drivers.

Press [OK] to run the next boot device, or enter directory to BIOS Setup if there are no other boot devices installed. Go to BIOS Setup > Advanced > Boot and change the current boot device into other secured boot devices.
-----------------------------------

google翻訳
-----------------------------------
システムは、ファームウェア、オペレーティングシステムまたはUEFIドライバに不正な変更を発見しました。

[OK]を押すと次のブートデバイスを実行、またはインストールされない他のブートデバイスがない場合は、BIOSセットアップにディレクトリを入力します。 BIOSセットアップ>詳細設定>ブートに移動し、他のセキュアなブートデバイスに現在のブートデバイスを変更。
-----------------------------------

Sccure bootはPC起動時にOSのデジタル署名をチェックする機能らしく、デジタル署名のないOSは、起動できないらしい。

•Linux OSの場合、ほとんどがSccure bootに対応していないため、エラーが出る模様。

解決策としては、Sccure bootをUEFIで無効にすればいい。

BIOS(UEFI)を起動して「Advanced Mode」 → 「Boot」→ 「Secure Boot」の項目をクリック。「OS Type」のところを「Windows UEFI mode」→「Other OS」に変更すればいい。

【自作PC】ファンの回転数が異常

サーバー用に自作PCを組み立ててBIOSをチェックしたところ、ケース側ファンの回転数がおかしい。数百で回転数が少なすぎて赤字になったり、一万回以上の表示されたりを繰り返して安定しない。

構成
・P100(PCケース)
・H170-PRO(マザーボード)
・Core i3-6100T(CPU)

解決法
P100のファンについている回転数を制御するスイッチを L から H に変えるだけ。とりあえずこれで表示される回転数は異常でなくなった。低回転過ぎたのかな。

【PHP】twilioで電話をかける、SMSを送る

twilioを使って電話をかけたりSMSを送ったときの覚書。言語はPHP。

1.ライブラリのダウンロードと設置

電話をかけるにもSMSを送るにも準備として、twilioのライブラリを設置する必要がある。
TwilioのPHPソースコード(zip)

解凍すると Services というフォルダが入っているのでそれをそのまま自分のサーバーにアップロードする。

ライブラリのインストールとSMS送信サンプルはこちらにもある(公式)

これで下準備完了。

2-1.twilioで電話をかける

次の二つのサンプルコードをアップロードして読み込むとtwilioの番号から電話をかけられる

twilio_call.php
--------------------------------------------------
<?php
require("Services/Twilio.php"); // PHPライブラリ

$sid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Account Sid
$token = "xxxxxxxxxxxxxxxxxxxxxxxxxx"; // Auth Token
$tel_to = "+8190xxxxxxxx"; // 発信先電話番号
$tel_from = "+81xxxxxxxxxx"; // twilioで取得した発信元電話番号
$twiml = "http://example.com/calling.xml"; // TwiML URL(absolute path)

$client = new Services_Twilio($sid, $token);
$call = $client->account->calls->create($tel_from, $tel_to, $twiml);
?>
--------------------------------------------------

calling.xml(この音声が読み上げられる)
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say language="ja-jp">Twilioへようこそ。</Say>
</Response>
--------------------------------------------------
このサンプルコードはこちらのまま

2-2.twilioでSMSを送る

次のサンプルコードをアップロードして読み込むとtwilioの番号からSMSが送れる

--------------------------------------------------
<?php

require "Services/Twilio.php"; // PHPライブラリ

//set our AccountSid and AuthToken from www.twilio.com/user/account
$AccountSid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$AuthToken = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

//instantiate a new Twilio Rest Client
//新しいクライアント オブジェクトのインスタンスを生成
$client = new Services_Twilio($AccountSid, $AuthToken);

//送信先の配列をつくる
//送信先電話番号 => 相手の名前
$people = array(
"+8190xxxxxxxx => "tarou",
"+8190xxxxxxxx => "hanako",
);

//Loop over all our friends. $number is a phone number above, and
//$name is the name next to it
foreach ($people as $number => $name) {

$sms = $client->account->messages->sendMessage(

//twilioから購入したSMS送信可能な電話番号
"+160xxxxxxxx",

// the number we are sending to - Any phone number
$number,

// the sms body
"このメッセージちゃんと届いてるか?"
);

// PC画面に表示されるメッセージ
echo $name . "にメッセージを送ったよ";
}

?>
--------------------------------------------------
このサンプルコードは公式のまま

1 / 212