スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AviUtlの導入

最終更新日:2017/1/27

うーん、いくらなんでもごちゃごちゃし過ぎだな、簡略版を別途書くか・・・。

注意:現在pop.4-bit様のサイトは仮運用でもしかすると不安定です。
勝手にダウンロードリンク集 (2014.05)|rigayaの日記兼メモ帳
等も参考にしてください。

さて、動画編集といえばなんといってもAviUtlです。というわけで導入をしていきましょう。
ダウンロードって何?という人はこちら。
ダウンロードとは 【 DL 】 【 download 】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/E38380E382A6E383B3E383ADE383BCE38389.html

AviUtlInstaller

Maverick氏があまりに煩雑なプラグイン導入までも自動化するすごいインストーラを開発しました。

これだけで最低限必要なプラグインが全て揃います。使い方は上記動画を参考に。

Download: http://www.videohelp.com/software/AviUtlより「Download AviUtl Extra Pack 1.13 (direct link) 」をクリック

あれ、この記事いらないんじゃね・・・。今後に期待。

目次
  1. まずはインストールたほうがいいものを
  2. プラグインとかダウンロード
    1. はじめに - 自動化ツール
    2. プラグイン
    3. auo_setup.exe派・手動派のみ必要なもの
    4. 手動派のみ必要なもの
  3. いろいろ配置していく
    1. Aviutlアップデートセット派
    2. x264guiEx付属のauo_setup.exe派
    3. 手動派
  4. 設定していく
  5. 拡張 x264 出力(GUI) Exについて
  6. tune touhou問題
  7. メモ
    1. L-SMASH Worksについて
    2. なぜノイズフィルターが必要かについて
    3. H.265
    4. AviUtlをWine on Linux Mint で
    5. その他
    6. 感謝
  8. リンク集(参考リンクとかとか)

まずはインストールたほうがいいものを

.NET Framework 4.0以外は基本任意。

  1. .NET Framework
    アップデートセット落としていれば不要。auo_setup.exe使うなら不要。
    大抵入ってるけど、一応確認。入ってるのかわからない人は
    http://homepage2.nifty.com/digitalcraft/help/dotnetver/
    で確認(IEじゃないとダメ)
    XP、VISTA、7の方
    Microsoft .NET Framework 4 Clinet Profile
    Microsoft .NET Framework 4 Client Profile 日本語 Language Pack
    x264guiEx 2.xxからは.NET 4以外不要。
    参考リンク:http://rigaya34589.blog135.fc2.com/blog-entry-370.html
    Microsoft .NET Framework 2.0 Service Pack 2
    Microsoft .NET Framework 2.0 Service Pack 2 (x86) 日本語 Language Pack
    Microsoft .NET Framework 4.5
    8の方→もう入ってるよ
  2. empty.exe
    MS謹製メモリー解放ソフト。AviUtlはメモリー管理があまり上手じゃないらしいので大規模な編集のお供に
    解説サイト:http://jutememo.blogspot.jp/2012/01/blog-post_10.html
  3. On2 VP6 VFW codec
    http://www.free-codecs.com/VP6_download.htm
    からダウンロードする。インストールは基本的に「NEXT」を選べば問題なし。
    後述するFLV (VP6/MP3) 出力で必要。K-Lite Codec PackのFullパックに入っていたらしい。
  4. Windows Media Video 9 VCM
    Windows Media Video 9 VCMはマイクロソフトが開発した評判の良いコーデック。
    [DL]http://www.microsoft.com/en-us/download/details.aspx?id=6191
    [日本語化バッチ]http://www.nihongoka.com/jpatch_main/wmv9vcm/
    [解説]http://www.gigafree.net/media/codec/windowsmediavideo9vcm.html
  5. Microsoftのコンポーネント
    ・・・インストールする意味を見出せない。x264guiEx 2.xx に.dll付録してるから、それコピー。
  6. Ut Video Codec Suite
    可逆圧縮コーデック。AVIで中間出力するときとか使えそう。任意で
    32bit版と64bit版が有り、マルチスレッドを考慮した作りになっている
    http://umezawa.dyndns.info/wordpress/?cat=28
  7. DivX
    DivX1
    高画質・高圧縮率を実現している。h.264が出現するまで最強だった。アマレコTV使うときとか便利。任意で。
    http://www.divx.com/ja
  8. Xvid
    Xvid
    DivX」 の商用化に反発した、一部のDivX プログラマーが開発したビデオコーデックで、動画をDivX と
    同等かそれ以上の品質で圧縮することができます。 任意で。
    http://www.koepi.info/xvid.html
  9. LAME
    MP3の定番コーデック。きっと要らないけど一応書いておく。インストールがちと面倒なので解説参照
    http://www.free-codecs.com/lame_acm_codec_download.htm
    [解説]http://senryaku.sengoku-jidai.com/Freesoft/AviUtl.html

プラグインとかダウンロード

はじめに - 自動化ツール

あまりに落とすべきものが多いので、導入をある程度自動化してくれるツールが誕生しております。
  • x264guiEx 2.xx付録のauo_setup.exe(作者:rigaya
    x264guiEx 2.xx
    最新っぽいもの(執筆時はx264guiEx_2.35v6.zip)をクリックしダウンロード。
  • Aviutlアップデートセット(作者:RRX
    http://sdrv.ms/1349Lwq
    から最新っぽいもの(執筆時はAviutl_Updateset_3.18.zip)をクリックしダウンロード。

auo_setup.exeの修正法
2014.05.16 x264guiEx インストール失敗の回避
2014/09/20くらいまでneroaacのサイトが閉鎖していて先行き不透明だったことから、auo_setup.exeではx264guiEx 2.15からqaac.exeを使うことになりました(neroも使えるけど)。

これらで落とせるのは

x264guiEx 2.xx 付録のauo_setup.exe Aviutlアップデートセット
---
AviUtl
拡張 x264 出力(GUI)Ex 拡張 x264 出力(GUI)Ex
x264.exe(x264_L-SMASH版かkomisar版落とせる方) x264.exe(komisar版)
qaac.exe neroaacenc.exe
---
MP4Box
L-SMASH(remuxer,muxer等) L-SMASH(remuxer,muxer等)
---
L-SMASH Works
---
Aviutlアップデートセット自身

となっており、アップデートセットは自動更新機能付きです。
使うも使わないもあなた次第。お好きなモノをどうぞ。

ちなみに、もしLinuxとかでwine上に入れたいときは多分アップデートセットは使えないんじゃないかなぁ。auo_setup.exeは実際に作者さんが実験してるから、x264guiEx 2.04以降なら大丈夫のハズ(なんか俺の環境だと失敗するけど。詳細は下記サイトコメント及びメモへ)
wine上のAviutl+x264guiExでエンコード
http://rigaya34589.blog135.fc2.com/blog-entry-435.html
AviUtlアップデートセット、auto_setup.exeともにレジストリには触っていません。.net4.0のインストールだけです。
http://rigaya34589.blog135.fc2.com/blog-entry-398.html#comment1943?

プラグイン

いいなぁと思ったものをどんどん列挙していきます。オレンジの字はとくに良さそうなもの。

  • AviUtlのお部屋(公式サイト、開発本家。)
    http://spring-fragrance.mints.ne.jp/aviutl/
    • 自動24fps(98d)
    • 手動24fps version0.03
    • ゴースト除去 version0.01
    • エッジ強調フィルタ
    • ゴースト(縦線)除去
    • 連番BMP出力
    • AVI出力(マルチスレッド)
    • FrameLoader
    AviUtlのお部屋
  • GNBの館 AviUtlプラグインの部屋
    http://homepage2.nifty.com/GNB/
    GNBの館 ダウンロードは「AviUtl用 プラグインの部屋」の中。

    • ウェーブレット3DNR2
    • ウェーブレット・ノイズフィルタType-G
    • ウェーブレット・カラーノイズフィルタ
    • Type-G Helper
    • 30fps→24fps時 補完フィルタ
    • 最終フレーム黒ベタ化フィルタ
    • コマ落ちフレーム補完フィルタ
    • メディアン(中央値)フィルタ

    あたりでしょうか。
  • まるも製作所 - AviUtl プラグイン
    まるも製作所1 http://www.marumo.ne.jp/auf/
    • Lanczos 3-lobed 拡大縮小
    • 拡張 AVI 出力
    • FLV (VP6/MP3) 出力
    • 崩壊フィルタ

    あたりかな。
  • 同じくまるも製作所ですが
    MPEG-2 VIDEO VFAPI Plug-In
    http://www.marumo.ne.jp/mpeg2/
    まるも製作所2
    ちなみに派生でdemuxしないで読み込むm2v_faw.auiというものもありますが、
    89 :名無しさん@編集中:2013/08/13(火) NY:AN:NY.AN ID:2E0bW5+U
    >>86
    あれってクローズドなコミュニティで開発したやつでしょ。
    以前作者がキチに粘着されてから表に出るの止めて
    仲間内だけでやるようになったのが始まり。
    そっとしておいた方がいいのでは?
    ということらしいのでリンクはさらしません。DTV板のAviutl総合スレッド参照です。どっかには書いてるはず。
  • また、まもる製作所ですが
    http://www.marumo.ne.jp/db2002_8.htm#8
    自動2パス MsMPEG4 圧縮」(8月8日の日記)
    m4c_2002_08_08.lzh
    まるも製作所3
  • AviUtl実験室
    DirectShow File Reader プラグイン for AviUtl
    AVI出力(VFR)プラグイン
  • DVD2AVI & VFAPI Plug-In 1.9rc5
    http://arbor.ee.ntu.edu.tw/~jackeikuo/dvd2avi/
    DVD2AVI & VFAPI Plug-In
    から落とす。
  • AviUtl プラグイン フィルタ by うえぽん
    http://auf.jpn.xxxxxxxx.jp/
    • ガウスぼかしフィルタ
    • UVダウンサンプリングフィルタ
    • エッジをぼかすフィルタ

    あたりでしょうか。
    うえぽん
  • AviUtl プラグイン | スキマ産業
    http://nilposoft.info/aviutl-plugin/
    • NL-Means Light for GPU
    • リサイズフィルタ
    • SharpenResize

    あたりでしょうか。リサイズフィルタ以外はGPUの支援が必要です。Shader Model 3.0ってなんぞや・・・。
    「NL-Means Light for GPU」「SharpenResize」はNLMeansBench_110423.zipでベンチマークかけた時に落ちるようなら、使わないほうがいいかも。(NVIDIA GeForce 310では1440*1080で落ちた)
    リサイズフィルタ以外はGPUの支援が必要です。のあとに「GTX310でNL-Meansつかうと640*480の動画で大体使用率70%くらいでした。」
    リサイズフィルタのサイズ指定は「×(かける)」じゃなく「x(エックス)」です。
    スキマ産業

    追記:なんかリサイズフィルターのリンクがおかしいのでこちらへ。同じもののハズ。
    AviUtl用リサイズプラグイン|Vector
    http://www.vector.co.jp/soft/winnt/art/se491671.html

  • BeanのAviUtlプラグイン置き場
    http://www.geocities.jp/w_bean17/
    • nnedi3 for AviUtl(インターレース解除)
    • モスキートノイズ低減フィルタ
    ちなみに「Splineリサイズの係数式とその導出法」という文章があります。
  • MakKi's SoftWare https://makiuchi-d.github.io/mksoft/
    • ロゴ解析プラグイン
    • 透過性ロゴフィルタ
    • スペクトラムアナライザープラグイン
  • [aviutl 0.99i4以降] 透過性ロゴ補助フィルタ Ver 0.03
    上記「透過性ロゴフィルタ」の補助で突然消えるロゴに対応できる
    MakKi's SoftWare
  • ワープシャープフィルタ マルチスレッド
    http://www40.atwiki.jp/aviutl41991/pages/37.html
    v1.33ex6を入手する。いま出回ってるのならSSE41は対応いてるでしょ。
    ちなみにこれも元々はMakKi氏作成
    ワープシャープフィルタ
    <引用>
    AviUtl + GPU で アップスケーリング 各種準備編
    http://ameblo.jp/parallel-line/entry-10852250119.html

    解凍すると「SSE3」や「SSSE3」などのフォルダがあるかもしれませんが、ご使用のパソコンのCPUが対応しているものを使用してください。

    わからない方
    SSE2  2000年1月販売のPentium 4シリーズ互換のCPU 以降のもの
    SSE3  2004年1月販売のPentium 4シリーズ互換のCPU 以降のもの
    SSSE3  2006年7月販売のIntel Core 2シリーズ互換のCPU 以降のもの
    SSE41  2008年1月販売のIntel Core 2シリーズ互換のCPU 以降のもの

    古いPCの方/自信のない方はとりあえず、SSE2のフォルダのwarpsharpmt.aufを。
    目安として、Windows XPの方→SSE2かSSE3(SSSE3)
    Windows Vistaか7の方→SSSE3かSSE41

    です。
  • rigayaの日記兼メモ帳
    rigaya1 http://rigaya34589.blog135.fc2.com/
    自動フィールドシフト 高速化版
    ffmpegOut
    QSVEnc + QSVEncC
    NVEnc

    VCEEnc
    x265guiEx(まだbeta版です!)
    PMD_MT
  • AviUtlプラグイン置き場
    http://www.geocities.jp/aji_0/
    自動フィールドシフト インタレース解除プラグイン ver7.5a
    拡張 AVI 出力プラグイン plus
    WMV出力プラグイン plus
    色調補正・改 ver2.0
    時間軸NR ver1.2a
    フィルタキャッシュ ver1.0
    らへんかな。
  • Auls - AviUtlプラグインと拡張編集スクリプトの配布ページ
    http://auls.client.jp/
    ちなみにこのサイト、AviUtlプラグイン開発をしたい人は必ず見るべきです。いろいろ資料あるので。
    メモリ参照
    終了確認
    PNG出力
    拡張編集を半透明化
    立体視画像出力
    らへんかな。
  • 舶来ゴミ置き場 | Overseas Junk Depot::PoisonousWave
    旧沃文毒電波 Sharing of IT knowledge and ACG info
    http://mavericktse.mooo.com/wordpress/
    中国の方かな(多分)香港人(地球人)らしいです、本人から抗議?が来ました。
    画像処理プログラミングを主にやっていてAviUtlのプラグインも開発しているようです。
    1. http://mavericktse.mooo.com/wordpress/archives/1874
      Color Level:カラーレベル調整。自動機能が便利そう
      Sigmoidal Contrast:すみませんよくわからなかったです。動画見て。
      Unsharp Mask:輪郭補正・・・かな
    2. http://mavericktse.mooo.com/wordpress/archives/1868
      Liquid Rescale:画面の構成を分析しリサイズする変わり者。動画参照
    3. http://mavericktse.mooo.com/wordpress/archives/1880
      SRT/ASS Subtitle Reader:テキスト字幕データ―を動画として読み込む
    紹介動画
  • Aviutl 自作プラグイン一覧 : プログ - aoytsk
    http://aoytsk.blog.jp/aviutl/plugins.html
    1. 字幕アシスト
    2. 拡張ツールバー
    3. シークバー+
    4. ウィンドウマネージャー

いろいろ配置していく|Aviutlアップデートセット派

auo_setup.exe派・手動派のみ必要なもの


いろいろ配置していく|x264guiEx付属のauo_setup.exe派

手動派のみ必要なもの

いろいろ配置していく|手動派

いろいろ配置していく

まあ、最初に決めた宗派のやり方にそって。
ライブラリとかC:\users\とかC:\Program FilesとかC:\Windowsにインストールしちゃだめなことくらいは察してね。OSの保護機能がいろいろ邪魔する(ファイルの書き換えまわり)ので。

Aviutlアップデートセット派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトでAviutl_Updateset_x.xx.zipを解凍する。
  3. 「Aviutl_Updateset」→「plugins」を開きdamy.txtを読む。なんで読むか?だって面白いし。
  4. 「Aviutl_Updateset」→「Aviutl_Updateset」を開く
  5. update-setting.txtを編集する。まあお好みで。
    私はこんな感じ。
    http://simp.ly/publish/fQqvVY
  6. update.batを実行する。ちゃんと設定していればAviUtl本体も拡張編集もx264guiExも入るはず。このときdamy.txtは消滅する。
  7. CubeICEとかとかお好みのソフトで残り全部解凍する
    解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  8. 「Aviutl_Updateset」→「plugins」を新しいウィンドウで開く
  9. 先ほどダウンロードしたプラグインたちを「plugins」に移動していく。
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
    ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。
  10. exeファイルはaviutl.exeのあるフォルダーに「exe_files」とかつくってまとめておくのは激しく推奨しない。やりたいならバッチ書き換えろ。
  11. qaacを導入する場合は、QuickTimeInstaller.exeを解凍する
    7-zipやCubeICEで。ダブルクリックじゃない
  12. コマンドプロンプトを立ち上げ、次のように実行
    pushd [AppleApplicationSupport.msiのある場所]
    msiexec /passive /i AppleApplicationSupport.msi
    popd
  13. qaac_x.xx.zipの中身をAviUtl.exeと同じフォルダーとか、pluginsフォルダーが―あるときはAviUtl.exeより下のディレクトリに入れる
設定していく

x264guiEx付属のauo_setup.exe派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトで全部解凍する
  3. 解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  4. ええっとx264guiEx_x.xxを開いて
    x264guiEx_readme.txt
    を読みつつ
    auo_setup.exe
    を実行。neroaacのかわりにqaacが入るようになっています。
  5. 「aviutl100」というフォルダーを新しいウィンドウで開く
  6. 「plugins」というフォルダーを作り開く
  7. 先ほどダウンロードしたプラグインたちを移動していく
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
    ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。
設定していく

手動派

  1. まずはウィルスチェックをする
  2. CubeICEとかとかお好みのソフトで全部解凍する
  3. 解凍前のはどっかにとっておくといいかもしれない。MakKi's SoftWareみたいにいきなりHP閉鎖したりするかもしれないし。
  4. 「aviutl100」というフォルダーを新しいウィンドウで開く
  5. 「plugins」というフォルダーを作り開く
  6. x264guiEx_x.xx\auoにあるものを全て「plugins」に移動。
  7. 先ほどダウンロードしたプラグインたちを移動していく。但しAviutl_Updatesetはとりあえずシカト。
    exedit92は全部コピー、MPEG-2 VIDEO VFAPI Plug-in のm2v.vfpをm2v.auiにリネーム、m2vconf.exe,mme.exeもコピー。fcacheはfcache1.aufだけでいいと思う。
  8. ほかは拡張子がauf,aui,vcmのものを「plugins」に移動。新しいウィンドウで開いたのはこの時の作業を効率化するため。
  9. exeファイルはaviutl.exeのあるフォルダーに「exe_files」とかつくってまとめておくといいかも。
  10. qaacを導入する場合は、QuickTimeInstaller.exeを解凍する
    7-zipやCubeICEで。ダブルクリックじゃない
  11. コマンドプロンプトを立ち上げ、次のように実行
    pushd [AppleApplicationSupport.msiのある場所]
    msiexec /passive /i AppleApplicationSupport.msi
    popd
  12. qaac_x.xx.zipの中身をAviUtl.exeと同じフォルダーとか、pluginsフォルダーが―あるときはAviUtl.exeより下のディレクトリに入れる

設定していく

  1. AviUtl起動!aviutl.exeだよ。
  2. AviUtl上部メニューバーのファイル→環境設定→システムの設定と開く。
    最大画像サイズを幅「1920」、高さ「1080」に設定する。これでフルHD対応だ。

    引用
    http://www.geocities.jp/o94_4/mp4enc.html#2
    [注意]必要以上に最大画像サイズや最大フレーム数、キャッシュフレーム数を上げすぎるとメモリ不足の大きな原因になってしまいます。
    [ヒント]初期値の320000フレームで処理できる総時間は29.97fpsの動画で約178分間までです。

  3. 上部メニューバーのファイル→環境設定→入力プラグイン優先度の設定で画像のように設定する。
    explain1
    DirectShow File Readerはなるべく下に(あくまで最終決戦兵器)、
    AVI/AVI2 File Reader、Wave File Reader、MPEG-2 VIDEO File Readerなど、動作の早そうなものはなるべく上にするのがポイント。
  4. 上部メニューバーの表示→時間の表示にチェックを入れる。
    タイトルバーに現在位置の時間が表示されるようになる。
    explain2
  5. AviUtl終了!
  6. 「plugins」フォルダー内のm2vconf.exe起動。画像みたいになってるか確認、終了。
    explain3

拡張 x264 出力(GUI) Exについて

これにはプロファイルを作る機能がついていて、デフォルトでいくつか入っていますが、
を利用するとさらに便利かもしれません。

また
拡張 x264 出力(GUI)の設定項目とその機能について
http://nicowiki.com/拡張 x264 出力(GUI)の設定項目とその機能について.html
にまず目を通してください。

tune touhou問題

これはx264.exeについてになりますが、--tune touhouというオプションが存在します
x264.exe --fullhelp
とするとtuneオプションが全部出てくるんですが、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12119928032
によれば、ヘルプからはr1426の時点で削除されたみたいです。

これは開発陣数名が東方厨…(マジで)なので設けられたオプションらしいです。animationとgrainの中間のような感じだそうです。
もっぱら弾幕ゲームやReflecBeat向けです。
詳細は

魔道学研究所  東方のプレイ動画を綺麗にエンコしようforx264gui
http://es2z.blog98.fc2.com/blog-entry-53.html
x264各プロファイル毎のエンコードテスト。
http://kusurubird.blog74.fc2.com/blog-entry-111.html

を見て欲しいのですが、

--preset slow --tune touhou --psy-rd 0:0.2 --ipratio 1.65 --qcomp 0.65 --qpstep 12 --partitions all --scenecut 30 --min-keyint 60 --keyint 600 --b-adapt 2

とかしてあげるといいかもしれません。

追記
あるかないかわからないとか言いましたが、あります。アップデートセットの作者のRRX氏に感謝。

RRX氏とのメールを引用
x264ですが、 fullhelpには残念ながらチューニングの"touhou"は存在しません。が!
公式ソースコード内
http://download.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20160207-2245-stable.tar.bz2を解凍して、
x264-snapshot-20160207-2245-stable\common\common.c

else if( !strncasecmp( s, "touhou", 6 ) ))//←これね。
{
    if( psy_tuning_used++ ) goto psy_failure;
    param->i_frame_reference = param->i_frame_reference > 1 ? param->i_frame_reference*2 : 1;
    param->i_deblocking_filter_alphac0 = -1;
    param->i_deblocking_filter_beta = -1;
    param->analyse.f_psy_trellis = 0.2;
    param->rc.f_aq_strength = 1.3;
    if( param->analyse.inter & X264_ANALYSE_PSUB16x16 )
        param->analyse.inter |= X264_ANALYSE_PSUB8x8;
}
else
{
    x264_log( NULL, X264_LOG_ERROR, "invalid tune '%s'\n", s );//←ここで存在しないチューニングオプションはエラーを返す。
    x264_free( tmp );
    return -1;
}
と存在し、正しく動作しているので、おそらくイースターエッグです。
*イースターエッグというのは開発者が遊び心で入れた機能および要素の事。
一般使用者には分からないように細工される。
Googleでzerg rushと検索すると出てくるものもこれの一種。

メモ

L-SMASH Worksについて

というものが2chDTV板AviUtlスレ住民によって作成されました。参考に。

なぜノイズフィルターが必要かについて

魔道学研究所  投稿用動画用のフィルタ
http://es2z.blog98.fc2.com/blog-entry-35.html

H.265

なんかx265のもあるなぁ、まもなく主流になるはず。
[公式HP(rigaya氏)]http://rigaya34589.blog135.fc2.com/
[紹介記事]開発中x265でH.265/HEVCエンコード試用

AviUtlをWine on Linux Mint で

にしてもなんでWine上でうまくいかないんだろ。
GUIはずーっとカラー計算ばっかやってるのでやむなくkill
CUIは
wine auo_setup.exe -nogui -dir /home/yumetodo/wine32/drive_c/AviUtl -update-ini -update-stg
とやったらインストールは出来たものの(途中「fixme:thread:NtQueryInformationThread info class 16 not supported yet」)、実験にWMVファイルを読み込んだら読み込めず。Aviファイルを拡張編集に読み込んで出力しようとしたら

「アドレス"0x30312065"で例外"0xc0000005"が発生しました。 発生モジュール:Unknown
備考:OUTPUT_PLUGIN_TABLE::func_config()[拡張 x264出力(GUI)Ex]
正常な動作ができない可能性がありますが、処理を継続しますか?」

となり、「はい」を押してもなんらレスがなく
と言った状態。やれやれ。

環境
linuxmint-16-cinnamon 64bit 
wine 1.6.1 

その他

アップデートセットが失敗するときはそもそもPATHにxcopy.exeがあるか確認。

ロゴを除去する編集方法

感謝

このページはRRX氏に査読して頂いており、それなくしてはこのような惨劇が繰り広げられていたことでしょう。心より感謝申し上げます。

リンク集(参考リンクとかとか)

スポンサーサイト

テーマ : フリーソフト
ジャンル : コンピュータ

Re:ある「プロ」の書いた、初心者向けc言語入門プログラム

きっかけ

ある「プロ」の書いた、初心者向けc言語入門プログラム: わき道

見てみると、コードの書き方云々の前にアルゴリズムがあかん。テーブル全数探査とか馬鹿げている。

全部書き直した

というわけで書き直した。

使用例。

気になる実装

まずアルゴリズムを変更した。

  1. 母音
  2. 子音+母音
  3. 子音+(y)+母音
  4. 子音+(y/h)+母音

この4つのテーブルに分けて、先頭文字からどのパターン化を判別し、変換するようにした。

元のプログラムではバッファーの大きさを取ってないわ、変換終了時のソースと出力の変換後の位置は取れないわでお話にならないので、strtol関数を参考に書き換えた。

内部ではC++のイテレータのように作業位置のポインタと終端のポインタを持つようにした。下手にindexに変換するとsigned/unsignedが面倒だからだ。

エラー処理は、enumを書いてそれのformatterをつくるというありきたりな実装にした。その気になればstd::error_codeでのラップも簡単だろう。

VPS上のLinuxのユーザー空間にArch Linuxの環境を構築する話(2)

はじめに

まあまずは
VPS上のLinuxのユーザー空間にArch Linuxの環境を構築する話 — 173210's Blog
をみてもらうとして、これをmsys2上からやるときにどうするかという問題がある。

とりあえずそのままでは動かないので手順を書いておく。なおprootはサーバー管理者が上記記事のように入れてくれていることを前提にする。

msys2上での作業

まずこんなファイルを適当な場所に作っておく。

%echo Generating pacman keyring master key...
Key-Type: RSA
Key-Length: 2048
Key-Usage: sign
Name-Real: Pacman Keyring Master Key
Name-Email: pacman@localhost
Expire-Date: 0
%no-protection
%commit
%echo Done
EOF

次に秘密鍵を生成してサーバーに転送する。

$gpg --homedir gnupg --gen-key --batch < tmp.txt
$tar cf gnupg.tar gnupg
$scp -P 110 gnupg.tar yumetodo@kagucho.net:

VPN上での作業

まずはbootstrap用imageを落としてくる。

bootstrap用イメージはArch Linux - Downloadsからテキトーなミラーのリンクを踏めば見つかる. 試しにftp.tsukuba.wide.ad.jpに行ってみると無造作にファイルが置かれた中にarchlinux-bootstrap-2016.11.01-x86_64.tar.gzがあるのでこれを使う.
$ cd ~
$ wget http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/iso/2016.11.01/archlinux-bootstrap-2016.11.01-x86_64.tar.gz -O - | tar xz

proot上のpacman用のmirrorlistを編集する。すでに用意されているmirrorlistのうち近そうなサーバーのコメントアウト(#)を外せば良い。もちろんテキストエディタは好きなものを使えば良い。nanoの場合はCtrl+OEnterすれば保存、Ctrl+Xで終了だ。

$ nano root.x86_64/etc/pacman.d/mirrorlist

先程転送した秘密鍵を展開する。

$ tar -C root.x86_64/etc/pacman.d -xf gnupg.tar

準備が整ったのでprootでArch Linuxを開始するのだが、起動コマンドが長すぎてやってられないので、aliasを貼る。.bashrc

alias 'archlinux=proot -0 -b /etc/resolv.conf -m /dev -m /sys -m /proc -w / -r root.x86_64'

としておく。.bashrcを反映するためにsshし直すとかなんかして、

archlinux

で起動する。

proot上での作業

まずはgpgの初期化をする。

# pacman-key --init
# pacman-key --populate archlinux

さて、ここまでくればmsys2ユーザーにとっては日常だ。

# pacman -Syuu
# pacman -S base-devel git clang openmp gdb lldb

しばらく時間がかかるので放置したのち、動作確認だ。

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

Thread model: posix
gcc version 6.2.1 20160830 (GCC)
# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

Thread model: posix
gcc version 6.2.1 20160830 (GCC)
# clang -v
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
# clang++ -v
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.2.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
# gdb -v
GNU gdb (GDB) 7.12
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
# lldb -v
lldb version 3.9.0 ( revision )
# python --version
Python 3.5.2
# python2 --version
Python 2.7.12
# git --version
git version 2.10.2

試しにhttps://github.com/yumetodo/string_splitでもビルドしてみるか。

# cd ~
# git clone https://github.com/yumetodo/string_split.git
Cloning into 'string_split'...
remote: Counting objects: 310, done.
remote: Total 310 (delta 0), reused 0 (delta 0), pack-reused 310
Receiving objects: 100% (310/310), 50.20 KiB | 0 bytes/s, done.
Resolving deltas: 100% (174/174), done.
# cd string_split/
# git submodule update --init
Submodule 'iutest' (https://github.com/srz-zumix/iutest.git) registered for path 'iutest'
Cloning into '/home/yumetodo/string_split/iutest'...
Submodule path 'iutest': checked out '3db6d7339ad8171cb742ee90bae02fc20cca5ad4'
# make Release -j2
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cd test; make Release
make[1]: Entering directory '/home/yumetodo/string_split/test'
g++ --version;
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ test.cpp -o test.out -O2 -Wall -Wextra -std=c++14
mkdir -p bin/g++/Linux/Release && cp test.out bin/g++/Linux/Release/test.out
make[1]: Leaving directory '/home/yumetodo/string_split/test'
cd sample; make Release
make[1]: Entering directory '/home/yumetodo/string_split/sample'
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ sample.cpp -o sample.out -O2 -Wall -Wextra -std=c++11
mkdir -p bin/g++/Linux/Release && cp sample.out bin/g++/Linux/Release/sample.out
make[1]: Leaving directory '/home/yumetodo/string_split/sample'
cd benchmark; make Release
make[1]: Entering directory '/home/yumetodo/string_split/benchmark'
g++ --version
g++ (GCC) 6.2.1 20160830
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

g++ benchmark.cpp -o benchmark.out -O2 -Wall -Wextra -std=c++14 -Wunused
mkdir -p bin/g++/Linux/Release && cp benchmark.out bin/g++/Linux/Release/benchmark.out
make[1]: Leaving directory '/home/yumetodo/string_split/benchmark'
# cd test/
# ./test.out
[==========] Running 72 tests from 24 test cases.
[----------] Global test environment set-up.
[----------] 4 tests from ExtractLvalueBySingeCharTest
[ RUN      ] ExtractLvalueBySingeCharTest.type_char
[       OK ] ExtractLvalueBySingeCharTest.type_char (20ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_wchar_t
[       OK ] ExtractLvalueBySingeCharTest.type_wchar_t (119ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_char16_t
[       OK ] ExtractLvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueBySingeCharTest.type_char32_t
[       OK ] ExtractLvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from ExtractLvalueBySingeCharTest(141ms total)

[----------] 4 tests from ExtractLvalueByCStrTest
[ RUN      ] ExtractLvalueByCStrTest.type_char
[       OK ] ExtractLvalueByCStrTest.type_char (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_wchar_t
[       OK ] ExtractLvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_char16_t
[       OK ] ExtractLvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueByCStrTest.type_char32_t
[       OK ] ExtractLvalueByCStrTest.type_char32_t (1ms)
[----------] 4 tests from ExtractLvalueByCStrTest(1ms total)

[----------] 4 tests from ExtractLvalueByStlStrTest
[ RUN      ] ExtractLvalueByStlStrTest.type_char
[       OK ] ExtractLvalueByStlStrTest.type_char (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_wchar_t
[       OK ] ExtractLvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_char16_t
[       OK ] ExtractLvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] ExtractLvalueByStlStrTest.type_char32_t
[       OK ] ExtractLvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractLvalueByStlStrTest(0ms total)

[----------] 4 tests from SplitLvalueBySingeCharTest
[ RUN      ] SplitLvalueBySingeCharTest.type_char
[       OK ] SplitLvalueBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_char16_t
[       OK ] SplitLvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueBySingeCharTest.type_char32_t
[       OK ] SplitLvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueBySingeCharTest(0ms total)

[----------] 4 tests from SplitLvalueByCStrTest
[ RUN      ] SplitLvalueByCStrTest.type_char
[       OK ] SplitLvalueByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_wchar_t
[       OK ] SplitLvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_char16_t
[       OK ] SplitLvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueByCStrTest.type_char32_t
[       OK ] SplitLvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueByCStrTest(0ms total)

[----------] 4 tests from SplitLvalueByStlStrTest
[ RUN      ] SplitLvalueByStlStrTest.type_char
[       OK ] SplitLvalueByStlStrTest.type_char (1ms)
[ RUN      ] SplitLvalueByStlStrTest.type_wchar_t
[       OK ] SplitLvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] SplitLvalueByStlStrTest.type_char16_t
[       OK ] SplitLvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] SplitLvalueByStlStrTest.type_char32_t
[       OK ] SplitLvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitLvalueByStlStrTest(1ms total)

[----------] 2 tests from SplitLvalueCovertToIntBySingeCharTest
[ RUN      ] SplitLvalueCovertToIntBySingeCharTest.type_char
[       OK ] SplitLvalueCovertToIntBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntBySingeCharTest.type_wchar_t (14ms)
[----------] 2 tests from SplitLvalueCovertToIntBySingeCharTest(14ms total)

[----------] 2 tests from SplitLvalueCovertToIntByCStrTest
[ RUN      ] SplitLvalueCovertToIntByCStrTest.type_char
[       OK ] SplitLvalueCovertToIntByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntByCStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntByCStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntByStlStrTest
[ RUN      ] SplitLvalueCovertToIntByStlStrTest.type_char
[       OK ] SplitLvalueCovertToIntByStlStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntByStlStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntByStlStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnBySingeCharTest
[ RUN      ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnBySingeCharTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnByCStrTest
[ RUN      ] SplitLvalueCovertToIntNoReturnByCStrTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnByCStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnByCStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnByCStrTest(0ms total)

[----------] 2 tests from SplitLvalueCovertToIntNoReturnByStlStrTest
[ RUN      ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_char
[       OK ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_char (0ms)
[ RUN      ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_wchar_t
[       OK ] SplitLvalueCovertToIntNoReturnByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitLvalueCovertToIntNoReturnByStlStrTest(0ms total)

[----------] 4 tests from ExtractRvalueBySingeCharTest
[ RUN      ] ExtractRvalueBySingeCharTest.type_char
[       OK ] ExtractRvalueBySingeCharTest.type_char (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_wchar_t
[       OK ] ExtractRvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_char16_t
[       OK ] ExtractRvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueBySingeCharTest.type_char32_t
[       OK ] ExtractRvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueBySingeCharTest(0ms total)

[----------] 4 tests from ExtractRvalueByCStrTest
[ RUN      ] ExtractRvalueByCStrTest.type_char
[       OK ] ExtractRvalueByCStrTest.type_char (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_wchar_t
[       OK ] ExtractRvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_char16_t
[       OK ] ExtractRvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueByCStrTest.type_char32_t
[       OK ] ExtractRvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueByCStrTest(1ms total)

[----------] 4 tests from ExtractRvalueByStlStrTest
[ RUN      ] ExtractRvalueByStlStrTest.type_char
[       OK ] ExtractRvalueByStlStrTest.type_char (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_wchar_t
[       OK ] ExtractRvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_char16_t
[       OK ] ExtractRvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] ExtractRvalueByStlStrTest.type_char32_t
[       OK ] ExtractRvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from ExtractRvalueByStlStrTest(0ms total)

[----------] 4 tests from SplitRvalueBySingeCharTest
[ RUN      ] SplitRvalueBySingeCharTest.type_char
[       OK ] SplitRvalueBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueBySingeCharTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_char16_t
[       OK ] SplitRvalueBySingeCharTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueBySingeCharTest.type_char32_t
[       OK ] SplitRvalueBySingeCharTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueBySingeCharTest(0ms total)

[----------] 4 tests from SplitRvalueByCStrTest
[ RUN      ] SplitRvalueByCStrTest.type_char
[       OK ] SplitRvalueByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_wchar_t
[       OK ] SplitRvalueByCStrTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_char16_t
[       OK ] SplitRvalueByCStrTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueByCStrTest.type_char32_t
[       OK ] SplitRvalueByCStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueByCStrTest(0ms total)

[----------] 4 tests from SplitRvalueByStlStrTest
[ RUN      ] SplitRvalueByStlStrTest.type_char
[       OK ] SplitRvalueByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_wchar_t
[       OK ] SplitRvalueByStlStrTest.type_wchar_t (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_char16_t
[       OK ] SplitRvalueByStlStrTest.type_char16_t (0ms)
[ RUN      ] SplitRvalueByStlStrTest.type_char32_t
[       OK ] SplitRvalueByStlStrTest.type_char32_t (0ms)
[----------] 4 tests from SplitRvalueByStlStrTest(1ms total)

[----------] 2 tests from SplitRvalueCovertToIntBySingeCharTest
[ RUN      ] SplitRvalueCovertToIntBySingeCharTest.type_char
[       OK ] SplitRvalueCovertToIntBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntBySingeCharTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntByCStrTest
[ RUN      ] SplitRvalueCovertToIntByCStrTest.type_char
[       OK ] SplitRvalueCovertToIntByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntByCStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntByCStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntByStlStrTest
[ RUN      ] SplitRvalueCovertToIntByStlStrTest.type_char
[       OK ] SplitRvalueCovertToIntByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntByStlStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntByStlStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnBySingeCharTest
[ RUN      ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnBySingeCharTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnBySingeCharTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnByCStrTest
[ RUN      ] SplitRvalueCovertToIntNoReturnByCStrTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnByCStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnByCStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnByCStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnByCStrTest(0ms total)

[----------] 2 tests from SplitRvalueCovertToIntNoReturnByStlStrTest
[ RUN      ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_char
[       OK ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_char (0ms)
[ RUN      ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_wchar_t
[       OK ] SplitRvalueCovertToIntNoReturnByStlStrTest.type_wchar_t (0ms)
[----------] 2 tests from SplitRvalueCovertToIntNoReturnByStlStrTest(0ms total)

[----------] Global test environment tear-down.
[==========] 72 tests from 24 testcase ran. (159ms total)
[  PASSED  ] 72 tests.

いいね。

余談

どういうわけかどこの.bashrcも読み込んでくれないようなのので、root.x86_64/etc/bash.bashrc

source "${HOME}/.bashrc"

を追加するといいかもしれない。msys2で使っていたものがほぼそのまま使える。例えば

export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[m\]\[\e[36m\]\w\[\e[m\]\[\e[0m\]\n$'

とか書いて置くと見た目がきれいでいい。

Kaspersky Internet Security 2016 16.0.1.445 のセルフディフェンス機能は盛大にバグっている(修正バッチが出たっぽい)

遭遇した現象

だいたいこんな感じで再現できる

  1. LinuxなどでWindows10を導入するパーティションを0クリアしてフォーマット(念のため)
  2. Windwos10 Install Disk(MSのサイトにて配布していたものをDVD-RWに焼いたもの)からWindwos10をインストール。念のためこちらでもインストール先のパーティションをフォーマット
  3. driver導入
  4. MSのサイトにて配布されているVisual Studio 2013, 2015のiso(2016/07/31時点の最新)をマウントし、順にインストール
  5. Kaspersky Internet Security 2016 16.0.1.445をインストール
  6. VSがハングする!!!

解決の糸口

こんなStack Overflowをみつけた

Visual Studio freezes or hangs on startup

When it hangs on the splash screen:

It could be that an anti-virus solution is blocking Visual Studio.

Kaspersky Internet Security 16.0.1.445 makes Visual Studio 2015 hang on the splash screen. The older version 16.0.0.614 works fine.

ほう・・・?

Kaspersky のサポートに問い合わせた

これではいまいち何が原因かわからないし、第一16.0.0.614はどっから手に入れればいいんだ。というわけで問い合わせた。

全文掲載すると長くてやっていられないので、要約すると

  • 原因はKaspersky Internet Security 16.0.1.445のセルフディフェンス機能
  • セルフディフェンス機能とは、Kasperskyのプロセスを書き換えられるのを防止する機能
  • Visual Studio以外でも似たような問題が発生している
  • 現在改修作業をやっているけど修正には時間がかかりそうだ
  • ハングするものを使う時だけセルフディフェンスをOFFにするか(常時OFFは良くない)、16.0.0.614に下げてくれ

ということらしい。

具体的な対処手順については
【参考:カスペルスキー インターネット セキュリティ 2016 (16.0.1.445)をインストール後、アプリケーションのインストールが途中で停止してしまい完了しない、またはアプリケーションが正常に動かない】
を参照のこと。

感想

原因がわかってよかったけど、Windows10を10回も再インストールするはめになったので辛い

追記

いつの間にかKasperskyの公式サイトが更新されている。それによれば、修正バッチが出たっぽい。定義データベースをアップデート後にOSを再起動することでバッチが適用されるっぽいけどまだ試せていない。

Google Apps Scriptで配列を返す関数を作る:居住市区町村の文字列正規化

未来研究室実行委員会の6月のイベントのアンケート解析で、住んでいる区市町村名を問う項目の集計を備え付けのifやらleftやらmid関数でやりくりするのは限界があったので、
Google Apps Script(通称GAS、ExcelVBAみたいな位置で言語的にはJavaScript)で関数を作りました。

ただ、データ数が2000件近くあるので全セルにこの作った関数を呼ぶ式を打つと

エラー: Script invoked too many times per second for this Google user accout.

といった具合に怒られるので対策が必要でした。

Google スプレッドシートでカスタム関数を多くのセルで呼び出しエラーが表示される場合、配列を返す関数(配列数式)に変更する。または、新しいスプレッドシートを利用。 | すぐに忘れる脳みそのためのメモ
を参考に配列を返す関数を作ります。

最も注意するべきなのは、自作関数の引数にある適当な範囲を渡した時の引数は、「stringのArrayのArray」ということです。断じて「stringのarray」ではありません。

function remove_prefectures_name(str){
	if(typeof str !== "string") return "error: unexpected input.";
	var buf = "";
	var tmp = str.charCodeAt(2);
	if("道".charCodeAt(0) === tmp || "都".charCodeAt(0) === tmp || "府".charCodeAt(0) === tmp || "県".charCodeAt(0) === tmp){
		buf = str.slice(3);
	}
	else if("県".charCodeAt(0) === str.charCodeAt(3)){
		buf = str.slice(4);
	}
	return (buf.length === 0) ? str : buf;
}
function match_in_array(arr, str){
	var is_matched = false;
	for(var i = 0; !is_matched && i < arr.length; ++i){
		is_matched = (arr[i] === str);
	}
	return is_matched;
}
function add_City(str){
	var case_do_not_add_City = ["市", "区", "町", "村", "県", "都", "道", "府", "県"];
	return (match_in_array(case_do_not_add_City, str.slice(-1))) ? str : str + "市";
}
function normalize_adress_helper(main_input, case1_input, case4_input){
	if(typeof main_input !== "string" || typeof case1_input !== "string" || typeof case4_input !== "string"){
		throw new TypeError("main_input(type:" + typeof main_input + ")unexpected input.");
	}
	var re = "";
	switch(main_input){
	case "1.東京23区内":
		re = (case1_input === "無記入" || case1_input === "") ? "無記入" : "1-" + case1_input + "区";
	break;
	case "4.その他":
		var do_not_edit = ["アメリカ", "韓国", "korea"];
		re = (case4_input === "無記入" || case4_input === "") ? "無記入" :  (match_in_array(do_not_edit, case4_input)) ? case4_input : add_City(remove_prefectures_name(case4_input));
	break;
	default:
		re = main_input;
	}
	return re;
}
function normalize_adress(main_input, case1_input, case4_input){
	if(typeof main_input === "string" && typeof case1_input === "string" && typeof case4_input === "string"){
		return normalize_adress_helper(main_input, case1_input, case4_input);
	}
	else if(Array.isArray(main_input) && Array.isArray(case1_input) && Array.isArray(case4_input) && main_input.length == case1_input.length && case1_input.length == case4_input.length){
		var re = [];
		for(var i = 0; i < main_input.length; ++i){
			re.push(normalize_adress_helper(main_input[i][0], case1_input[i][0], case4_input[i][0]));
		}
		return re;
	}
	else{
		throw new TypeError("main_input(type:" + typeof main_input + ")unexpected input.");
	}
}

テーマ : プログラミング
ジャンル : コンピュータ

検索フォーム
デジタル・コルクマ3
コルクマワールド
東京 での時間:
更新履歴


総記事数:
Calendar 1.1
<
>
- - - - - - -
- - 1 2 3 45
6 7 8 9 10 1112
13 14 15 16 17 1819
20 21 22 23 24 2526
27 28 29 30 - - -

全記事

Designed by 石津 花

最新記事
カテゴリ
最新コメント
最新トラックバック
月別アーカイブ
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

yumetodo

Author:yumetodo
FC2ブログへようこそ!

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。