cpustress.bat

概要

CPUの処理能力を食いつぶすことができるバッチプログラム。
CPUに負荷をかけたい時に使用することができます。

使用法

バッチファイルを実行するだけです。
終了はCtrl-Cで行います。

動作環境

Windows XP Professional SP3にて作成・動作確認しています。

ライセンス

WYFPL - Do What The Fuck You Want To Public Licenseの元公開します。

プログラム

@echo off
:LOOP
goto LOOP

multitarget-ping.bat

「作ってくれ」と言われて作ったところ、GUIで操作できるフリーソフトを見つけたから必要なくなったと言われてしまった。
眠らせておくのももったいないので公開します。

概要

指定した範囲に存在しないIPのリストを出力するバッチファイル。
/24~/32までの範囲のアドレスにpingを順次飛ばし、各IPアドレスの応答を列挙します。
また、pingの応答結果をカレントディレクトリの"result.log"に出力します。

書式

multitarget-ping.bat NETWORK SCOPE_START SCOPE_END

  • NETWORK: 指定するIPv4アドレスの範囲の第3オクテットまでを指定する。最後にドットを付ける必要がある
  • SCOPE_START: 範囲の最小値となるIPv4アドレスの第4オクテットを指定する
  • SCOPE_END: 範囲の最大値となるIPv4アドレスの第4オクテットを指定する

動作環境

Windows XP Professional SP3にて作成・動作確認しています。

使用例

C:\>multitarget-ping.bat 192.168.1. 1 255
192.168.1.1: Reply
192.168.1.2: Reply
192.168.1.3: Unreachable
192.168.1.4: Unreachable
192.168.1.5: Unreachable
192.168.1.6: Unreachable
(中略)
192.168.1.254: Unreachable
192.168.1.255: Unreachable

ライセンス

WYFPL - Do What The Fuck You Want To Public Licenseの元公開します。

つまり、

コピーだろうが配布だろうが改変だろうが、もう好きにしてくれ。ライセンスが気に入らなきゃ別のライセンスに変えてくれ。

それほど間違っていないプログラマ用語辞典

ということです。

プログラム

@echo off
set network=%1%
set scopeStart=%2%
set scopeEnd=%3%
set /a i=%scopeStart%

:LOOP
	set targetIP=%network%%i%
	ping -w 1 -n 1 %targetIP% >> result.log
	if not errorlevel 1 goto success
	if errorlevel 1 goto error

	:success
	echo %targetIP%: Reply
	goto next
	:error
	echo %targetIP%: Unreachable
	goto next

	:next
	if "%i%"=="%scopeEnd%" goto exit
	set /a i=i+1
goto LOOP

:exit

参考

[Calc] 図形のサイズを変える

概要

com.sun.star.drawing.GraphicShapeObjectの大きさを変える。

環境

OpenOffice.org Calc 3.0.0

コード

目的

別記事「[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する」にて挿入した画像を、アスペクト比を保ちながらサイズの変更を行う。

上記の別記事中のマクロに続いて処理を実行させる場合、挿入された画像のDrawPageオブジェクトのインデックスは、対象シート中のDrawPageオブジェクトの中で最大となる。このため、処理対象画像の選択はインデックスにて判定(最大のインデックス値を持つ画像を対象)を行っている。

const MAX_WIDTH as Integer = 10000 ' 10cm
const MAX_HEIGHT as Integer = 10000

sub resizePicture

    dim sheet as Object
    dim drawPg as Object
    dim draw as Object

    sheet = ThisComponent.CurrentController.ActiveSheet
    drawPg = sheet.getDrawPage
    
    if drawPg.getCount > 0 then
        'インデックスが最大のオブジェクトを対象とする
        draw = drawPg.getByIndex( drawPg.getCount - 1 )
    else
        exit sub
    end if

    dim scale as double
    dim drawResize as new com.sun.star.awt.Size

    '拡大率を求める
    if draw.Size.Width > draw.Size.Height then
        '横長の場合
        scale = MAX_WIDTH / draw.Size.Width
    else
        '縦長の場合
        scale = MAX_HEIGHT / draw.Size.Height
    end if

    with drawResize
        .Width = draw.Size.Width * scale
        .Height = draw.Size.Height * scale
    end with

    draw.setSize(drawResize)
end sub

ところで

数値変数の型の最大値と最小値はどこかに定数として用意されているのでしょうか?

[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する

概要

メニュー「挿入 - 画像 - ファイルから」に相当するマクロ

環境

OpenOffice.org Calc 3.0.0

コード

sub insertPicture
    dim document as Object
    dim dispather as Object

    ' get access to the document
    document = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    ' ファイル選択ダイアログの初期化
    dim filePickerDlg as Object
    filePickerDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    filePickerDlg.appendFilter( _
        "JPEG画像ファイル(*.jpg, *.jpeg)", "*.jpg", "*.jpeg")

    if filePickerDlg.execute = 1 then
        'ファイルが指定された場合

        dim selFiles() as String
        selFiles() = filePickerDlg.getFiles()

        dim picInfo(2) as new com.sun.star.beans.PropertyValue
        picInfo(0).Name = "FileName"
        picInfo(0).Value = selFiles(0)
        picInfo(1).Name = "FilterName"
        picInfo(1).Value = "JPEG - Joint Photograhpic Experts Group"
        picInfo(2).Name = "AsLink"
        picInfo(2).Value = false

        'ダイアログで指定された画像をアクティブセルへ挿入
        dispatcher.executeDispatch(document, ".uno:InsertGraphic", _
             "", 0, picInfo())
    end if

end sub