Category Archives: 未分類

puppeteer UnhandledPromiseRejectionWarning: TimeoutError: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r662092

PCが重たすぎるとpuppeteerのchromeの起動で30秒のタイムアウトになる。以下のようにタイムアウト値を増やす。

unique_ptrの基本とカスタムdelete

コード例

基本

unique_ptrは渡されたポインタの所有権を保持する。つまりこのポインタを解放するのはunique_ptrの役割である。ポインタが破棄されるのはunique_ptrが破棄される時かreset()によって他のポインタがセットされる時である。よってget()で取得したポインタを破棄したり、他のスマートポインタに渡してはいけない。

std::move

unique_ptrをunique_prtにコピーというか移動するにはstd::moveを使わなくてはならない。

カスタムデリート

unique_ptrの第2テンプレート引数にはデリーターを指定する。この関数は破棄される際にポインタが渡される。デフォルトはdeleteなので作成時にnewで作ったオブジェクトを渡す。しかしnewで作れないオブジェクトはたくさんあるのでコード例のようにカスタムデリーターを指定する。

std::function

カスタムデリーターはポインタ1つを引数に取る関数オブジェクトのを指定しなければならない。呼び出し規約がデフォルトと違う場合はそれも指定しないといけないのでややこしい。この場合はstd::functionを使えば呼び出し規約を気にしなくてもいい。

開放関数が引数を2つ取るなどの場合はラムダやファンクタを指定することになる。

ソースコード

https://github.com/ambiesoft/blogprogs/tree/master/5212

Visual Studioバージョン対応表 VCverTable

Product Name Ver Directory _MSC_VER msvcr cl link
Visual Studio 6 6 C:\Program Files\Microsoft Visual Studio 1200 Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80×86 Microsoft (R) Incremental Linker Version 6.00.8447
Visual Studio 7 7 C:\Program Files\Microsoft Visual Studio .NET 2003 1310 msvcr71.dll msvcp71.dll Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.6030 for 80×86 Microsoft (R) Incremental Linker Version 7.10.6030
Visual Studio 2005 8 C:\Program Files\Microsoft Visual Studio 8 1400 msvcrt.dll msvcr80.dll Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80×86 Microsoft (R) Incremental Linker Version 8.00.50727.762
Visual Studio 2008 9 C:\Program Files\Microsoft Visual Studio 9.0 1500 msvcrt.dll msvcr90.dll Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80×86 Microsoft (R) Incremental Linker Version 9.00.30729.01
Visual Studio 2010 10 C:\Program Files\Microsoft Visual Studio 10.0 1600 msvcrt.dll msvcr100.dll Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80×86 Microsoft (R) Incremental Linker Version 10.00.40219.01
Visual Studio 2012 11 C:\Program Files\Microsoft Visual Studio 11.0 1700 msvcr110.dll Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86 Microsoft (R) Incremental Linker Version 11.00.50727.1
Visual Studio 2013 12 C:\Program Files\Microsoft Visual Studio 12.0 1800 msvcr120.dll Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x86 Microsoft (R) Incremental Linker Version 12.00.40629.0
Visual Studio 2015 14 C:\Program Files\Microsoft Visual Studio 14.0 1900 msvcrt.dll msvcp110_win.dll Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86 Microsoft (R) Incremental Linker Version 14.00.23026.0
Visual Studio 2017 RC 15 C:\Program Files\Microsoft Visual Studio\2017 1910 mada -> msvcrt.dll msvcp110_win.dll Microsoft(R) C/C++ Optimizing Compiler Version 19.10.24629 for x86 Microsoft (R) Incremental Linker Version 14.10.24629.0
Visual Studio 2017 15 C:\Program Files\Microsoft Visual Studio\2017 1910 to 1916 ucrtbase.dll msvcp140.dll vcruntime140.dll Microsoft(R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Microsoft (R) Incremental Linker Version 14.10.25017.0
Visual Studio 2019 16 C:\Program Files\Microsoft Visual Studio\2019 1920 ucrtbase.dll msvcp140.dll vcruntime140.dll Microsoft (R) C/C++ Optimizing Compiler Version 19.20.27508.1 for x86 Microsoft (R) Incremental Linker Version 14.20.27508.1
Visual Studio 2022 17 C:\Program Files\Microsoft Visual Studio\2022 1930 ucrtbase.dll msvcp_win.dll vcruntime140.dll Microsoft (R) C/C++ Optimizing Compiler Version 19.30.30705 for x86 Microsoft (R) Incremental Linker Version 14.30.30705.0

KB951847 失敗

Microsoft .NET Framework Repair Toolをダウンロードして実行、以下の状態で止めて、再度インストールを試みる。

51142b9e-7774-4404-bf40-ca06d26a87c4

これでもだめなら
ここからdotnetfx_cleanup_tool.zipをダウンロードして.NET Frameworkを全削除、再起動後に試みる

これでもだめならイベントビューアをクリアしてからエラーを調べる

イベントビューア

Windowsを上書きインストールしていたりするとC:\Program Files\Reference Assembliesのアクセス権がないためエラーになることがある。この場合はこのフォルダの所有者を変えてUserがアクセスできるようにする。

ubuntu 8.04 でeclipseを使う

eclipseはパッケージで提供されていますが、これは最新のものではなく、インストールする時は当然ルート権限でインストールするため、eclipse自体のアップデートがユーザ権限で起動しているとうまくいかなくなることも考えられます。そこでここではeclipseは本家から持ってきてインストールします。javaもsunのものを使います。sunのjavaはパッケージで提供されており、alternativesによる切り替えも出きるのでそれをつかいます。

またインストールする場所も、/usr配下ではなく、ホームディレクトリ配下にした方がいいと思います。プラグインなどもインストール時にトラブる確率が低くなると思います。

1、sunのjava-jdkをインストール

$ sudo apt-get install sun-java6-jdk

2、galternativesをインストール

$ sudo apt-get install galternatives

3、galternativesを起動してjavaをsunのjavaに切り替える。javacも切り替えた方がよいかも。

java -versionコマンドで切り替わっているか確認する。

4、本家からeclipseをダウンロードして展開後、eclipseコマンドで実行できる。展開するディレクトリは最初に書いた問題があるのでホームの下にした。

Linuxでビープ音を無効にする

下に行くほど、影響範囲が大きくなります。

1、gnome-tarminalの設定でビープ音を無効にする。

メニューから「編集」->「現在のプロファイル」を選択し、 「端末のベルを鳴らす」をオフにする。

gnome-terminal-profile.png

2、readlineの設定で無効にする。

~/.inputrcに以下の行を追加する。

set bell-style none

noneの代わりにvisibleを使うと視覚化ベルを使う。

3、GNOMEの設定で無効にする。

gnome-sound-propertiesを起動し、以下のように設定する。

gnome-beep-off.png

4、 Xの設定で無効にする。

以下のコマンドで無効にする。有効に戻すにはonにする。

$ xset b off

起動時に自動的にやる方法はよく分からなかった。

5、システム全体で無効にする。

今だけ無効にする場合は以下のコマンドを実行する。

# modprobe -r pcspkr

有効に戻すには以下のコマンドを実行する。

# modprobe pcspkr

永遠に無効にするには、modprobe設定のブラックリスト(/etc/modprobe.d/blacklist)にpcspkrを追加する。

blacklist pcspkr

ホームディレクトリにある”デスクトップ”や”音楽”を英語にする

最近のLinuxのgnomeではデフォルトでデスクトップのディレクトリがそのまま日本語で”デスクトップ”となっている。しかしファイル名やフォルダ名に日本語を使うのはいささか抵抗があるので、これを戻す方法。

まずログアウトして、ログインマネージャで言語を英語にする。

changelang.JPG

ログインすると”デスクトップ”などのフォルダをリネームするか聞いてくるのでUpdate Namesを選択し、リネームする。

changetoeng.JPG

再びログオフし日本語に戻す。そしてログインすると再びリネームするか聞いてくるので、ここでリネームをしなければいい。

消せないファイルの消し方

Windowsの話です。

ファイルが削除できない理由はいろいろあり、単純な解決策はありません。ここではさまざまな方法を使ってファイルの削除を試みます。簡単にできる方法から書いています。

1、コマンドプロンプトから削除してみる。

コマンドプロンプトを開きdelコマンド使って削除。 このときファイル名はフルパスで指定し、一番最初に\\?\をつける。

(例)
C:\>del \\?\C:\folder\file

2、ファイルの属性を変えてみる。

C:\>attrib -h -s -r \\?\C:\folder\file

3、フォルダを共有して、ネットワークフォルダから削除してみる。

4、ファイルを開いているプロセスを見つけて、それを終了させる。

対象ファイルがDLLの場合、ここからlistdllsをダウンロードしてコマンドプロンプトから実行する。出力の中から対象ファイルが見つかったら、それを開いているプロセスを見つけてそのプロセスを終了させてから削除してみる。

対象ファイルがDLLでない場合、ここからhandleをダウンロードしてコマンドプロンプトで実行する。出力の中から対象ファイルが見つかったら、それを開いているプロセスを見つけてそのプロセスを終了させてから削除してみる。

[追記]
OpenedFileViewを使えば、どのファイルがどのプロセスによって開かれているか確認できるので、そのプロセスを終了させればいい。

openedfileview

5、knoppixなどのLiveCDを使って削除する。

最終手段。

eclipse PDTとXdebugを使ってphpをリモートデバッグ

ここではサーバもクライアントも同一のマシンでOSはwindows2000を使いました。またeclipseを動かすためにはjavaが必要ですがここではすでにインストールされているものとします。

まずここからeclipseとPDTが一緒になっているAll-In-Oneをダウンロードします。ここではpdt-all-in-one-S20071213_M1-win32.zipをダウンロードしました。

all.jpg

解凍してできたファイルをC:\eclipseに移動します。

c:\eclipse\eclipse.exeを起動し、ワークスペースの場所をC:\eclipse\workspaceにします。

workspace.jpg

メニューからWindow->Open Perspective->PHPを開きます。

eclipse.jpg

PHPをリモートデバッグするためにはサーバとサーバで動くPHPが必要です。まずここへいってapacheをダウンロードしインストールします。ここではapache_2.2.8-win32-x86-no_ssl.msiをダウンロードしました。

つぎにPHPをここへいってダウンロードしてインストールします。ここではphp-5.2.5-win32-installer.msiを使いました。インストールの途中で、以下のような画面になりますがここではインストールしたapacheのバージョンを選択してください。

phpinstall.jpg

eclipseに戻ってPHPプロジェクトを作ります。メニューからFile->New->PHP Projectを選択します。プロジェクト名はmyfirstphpにし Finishをクリックします。

myfirstphp.jpg

PHP Explorer上のmyfirstphpを右クリックして、New->PHP Fileをクリックします。ファイル名にinfo.phpと入力します。

info.jpg

info.phpを編集し、以下のように入力します。

<?php
phpinfo();
?>

セーブして、C:\eclipse\workspace\myfirstphp\info.phpができているか確認します。

つぎにapacheの設定ファイルを編集して、ドキュメントルートをC:\eclipse\workspace\myfirstphpにします。まず、スタートメニューからPrograms->Apache HTTP server x.x->Configure Apache Server->Edit the Apache httpd.conf Configuration Fileをクリックし、エディタで設定ファイルを開きます。

DocumentRootで始まる行を以下のように書き換えます。

DocumentRoot "C:/eclipse/workspace/myfirstphp"

またDirectoryタグの以前のDocumentRootと同じフォルダの部分を以下のように書き換えます。

<Directory "C:/eclipse/workspace/myfirstphp">

セーブして、apacheを再起動します。Programs->Apache HTTP Server x.x->Control Apache Server->Restart

ブラウザで http://localhost/info.phpを開きエラーにならないことを確認します。

localhost.jpg

次にXdebugをPHPにインストールします。ここのページからインストールしたPHPにあわせたWindows moduleをインストールします。ここではインストールしたPHPは5.2.5なのでPHP 5.2.1-5.2.7をクリックして、php_xdebug-2.0.2-5.2.5.dllをダウンロードしました。

ダウンロードしたファイルをPHPインストールフォルダのmodulesフォルダの下へ移動します。modulesフォルダがなければ作成します。

PHPをインストールしたフォルダのphp.iniをテキストエディタで開き、最後に以下の2行を追加します。(実際のフォルダはPHPをインストールしたフォルダに変えてください)

zend_extension_ts="C:/Program Files/PHP/modules/php_xdebug-2.0.2-5.2.5.dll"
xdebug.remote_enable=1

apacheをリスタートし、ブラウザで http://localhost/info.phpを開き、以下のようなXdebugの記述があるか確認します。

xdebugconfirm.jpg

eclipseに戻り、新しくphpファイルmytest.phpを作成し以下のように入力し、保存します。

<?php
print ("AAA\n");
print ("BBB\n");
print ("CCC\n");
?>

メニューからRun->Open Debug Dialogを開き、以下のように入力します。

debugdialog.jpg

Apply->Debugをクリックし、デバッグできることを確認します。

eclipsedebug.jpg

【関連記事】
eclipse 3.4にPDT 2.0をインストールする