あきき☆エンジニア

〜ぷろぐらむ〜(perl,php,JavaScript,WebGL,golang,emacs,mysql)

Windows10の更新が来たらWSLでgnome-terminalがタイムアウトして起動しなくなった(2023/04/12)

Windous10更新が来て(2023/04/12)WSLでgnome-terminalの起動に失敗

$ gnome-terminal
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: org.gnome.Terminal を StartServiceByName で呼び出そうとしてエラー: タイムアウトしました

検索するも
gnome-terminal-serverが動いてないからとのこと
以下で確認

$ systemctl --user status gnome-terminal-server
● gnome-terminal-server.service - GNOME Terminal Server
   Loaded: loaded (/usr/lib/systemd/user/gnome-terminal-server.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2023-04-12 18:07:22 JST; 1min 50s ago
  Process: 2199 ExecStart=/usr/lib/gnome-terminal/gnome-terminal-server (code=exited, status=10)
 Main PID: 2199 (code=exited, status=10)

 4月 12 18:07:22 xxxxxxxxx systemd[1006]: Starting GNOME Terminal Server...
 4月 12 18:07:22 xxxxxxxxx gnome-terminal-server[2199]: Unable to init server: Could not connect: 接続を拒否されました
 4月 12 18:07:22 xxxxxxxxx gnome-terminal-server[2199]: Failed to parse arguments: ディスプレイをオープンできません:

●部分が 赤い ・・・動いてない
ログ部分にディスプレイがオープンできませんって WSLgが動いてないのかと思ったのですが
再び検索

動いた対処

ocg.aori.u-tokyo.ac.jp

ここのをやってみた !

$ dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
$ gnome-terminal

gnome-terminalが立ち上がるようになった!

この後、wsl --shutdownして再度やったら タイムアウトになったが

$ dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
$ systemctl --user start gnome-terminal-server
$ gnome-terminal

で動いた
dbus-update-activation-environmentを実行する前に
gnome-terminalを起動失敗すると下側の対処が必要になるようだ

gnome-terminalで日本語キーボードレイアウトにならない問題は継続しているがusキーボードレイアウトに慣れつつある

WSL起動失敗の対処

wslの起動に失敗して

Error: 0x80040326
のエラーコード表示される

駄目だった対処1

管理者権限で立ち上げたPowerShell
netsh winsock reset
再起動しても駄目・・・

駄目だった対処2

PowerShell
wsl --shutdown
しても駄目・・・

成功した対処

PowerShell
wsl --update
wsl --shutdown
したら立ち上がるようになった!

ぼやき

朝だけでWindowsを6回ぐらい再起動しましたorz
時間を返して欲しい>マイクロソフト
Windowsの不具合に遭遇すると不毛な時間が食われるのが嫌い!

goquery(go版のjQuery)を簡単に使ってみる

golangで簡単にhtmlから情報を取得できたらと検索していたら

https://github.com/PuerkitoBio/goqueryが見つかった

早速入れて使ってみた

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
)

func main() {
    doc, err := goquery.NewDocument("http://akiki0106.hatenablog.com/")
    if err != nil {
        panic(err)
    }
    
    doc.Find(".entry-title a").Each(func(i int, s *goquery.Selection) {
        u, ok := s.Attr("href")
        if ok {
            t := s.Text()
            fmt.Printf("%s\n  %s\n", u, t)
        }
    })
}

実行結果 (記事のurlとタイトルを取得してみた)

http://akiki0106.hatenablog.com/entry/2017/11/17/235037
  VMware Workstation 12 Playerが更新されてので入れてみた(12.5.8)
http://akiki0106.hatenablog.com/entry/2017/05/10/201502
  Windowsの(大きい更新)をしたらVMwareでネットワークが繋がらなくなった!
http://akiki0106.hatenablog.com/entry/2017/03/25/174630
  ローカルテストサーバー(phpでビルトインサーバー)起動
http://akiki0106.hatenablog.com/entry/2017/03/25/132701
  perlスクリプトのexe化をやってみる
http://akiki0106.hatenablog.com/entry/2017/03/17/193203
  chromeでJavaScript編集しファイルへ反映(DevTools Autosave)
http://akiki0106.hatenablog.com/entry/2017/03/12/172444
  古いpc(古いグラフィックボード)でcanvasの表示が化ける
http://akiki0106.hatenablog.com/entry/2017/03/10/113800
  indexedDB(ストレージ)のデバッグ表示

目的の情報にたどり着く指定方法は、 jQueryと同じようにできるよう
なのでjQueryでどう書けば目的にたどり着くかを検索して
メソッド名の頭だけ大文字にすればできるかと思います~

Attrは、2つ戻り値があったりしますが該当メソッドのソースを見れば見当が付くかと思います

VMware Workstation 12 Playerが更新されてので入れてみた(12.5.8)

追記2018/01/11:12.5.9が出た更新したら VMware Virtual Ethernetが表示されるようになった(戻った) 追記2017/12/20:VMwareネットワークアダプタ設定は、ブリッジ-物理ネットワーク接続状態を複製で使用してます。

VMwareをインストールが完了して…再起動を求められなかった…あれ?

コマンドプロンプトを開いて
 

> ipconfig /all

 
VMware Virtual Ether...が見当たらない

とりあえずWindows10を再起動してみるw
 
再びipconfigで確認!
 
やはりVMware Virtual Ether...が出てこない
 
VMwareを起動してUbuntuを立ち上げブラウザーで外部のページを開く…

 

ちゃんと表示されたー!おぉ〜w
 

VMware Virtual Ether..要らなくなったのかな?

今のところ問題なく使えているのでいっかw
 

ちなみに5月10日のブログでWindows更新でVMware Virtual Etherが消されて

困った記事を書いたのだが…

そういうことも今後起きないってことですね(今のところ)

そのときの記事

Windowsの(大きい更新)をしたらVMwareでネットワークが繋がらなくなった!

Windows10を使っています

2017年5月10日にPCがなんか重たい…Windowsの更新プログラムが動いているのか?それとも他の原因?(まぁこういうときは、大抵Windowsの更新プログラムが動いてるw) タスクマネージャを開きディスク使用率を見る100%近い…(100%Windowsの更新だなって思いつつ、リソースモニターを開きディスクタブを開く… svchost が大きく上位にいて秒速うんメガバイト読み書きしている(Windowsの更新だ!)

自動更新は、下手すると1日やっていたり(引っかかっていたり)するので手動で更新する方法を… Windows10アップグレードアシスタントとかいうプログラムですぐに更新できそうだw 立ち上げて更新しました(今回は、大きい変更だったようで1時間ぐらいかかりました…とほほ)

更新が終わりさてVMwareUbuntuを起動しemacsを起動したらemacswikiに接続でエラーに ネットワークが繋がってないようだ たまにあるのでUbuntuの右上のネットワークで切断を選んで再接続すると直るのだが… 切断が無い…ネットワークを有効にするを選ぶと有効状態なら切断してくれたので もう一度ネットワークを有効にするを選び取得するも emacsの起動は、同じ状態になった Windowsdosプロンプトを開き以下のコマンドを実行したら

> ipconfig /all

VMware Virtual Ethernet Adapter …の項目が無い Windowsの更新でドライバー削除しやがった どうやったらVMware Virtual Ethernet Adapterって入るんだっけ? とりまVMware仮想マシンの設定でネットワークアダプタを削除して新しく 追加して設定するも…ドライバは、インストールされず(まぁされないよねw)

仕方ないのでVMware workstation playerの最新版を落としてインストール(最新の状態でしたので修復を選択しました) Windowsdosプロンプトを開き以下のコマンドを実行したら

> ipconfig /all

再度確認…VMware Virtual Ethernet Adapterが現れました!

これで、VMwareUbuntuを起動してネットワークが接続されていることが確認できました

emacsで確認していましたが、ブラウザでも接続不能でしたw

ローカルテストサーバー(phpでビルトインサーバー)起動

追記:2018/02/10--------------------------------------
phpビルトインサーバ上のjavascript
audioの currentTime(再生位置)の値を変更したら 0になってしまい
頭から再生されてしまう現象に遭遇しました…解決作が見つかってしません…
現状phpのビルトインを諦めて…w
golang で簡単なhttpサーバプログラムを書いて使い始めました。
開発用なのでブラウザにキャッシュさせないようにしました。

phpビルトインだとaudioソースのリクエストしても Content-Type: application/octet-streamで返して来る
それとブラウザのキャッシュがからみ、audioコントールのcurrentTimeの指定ができなくなる状態へ陥るときがある
ようです(本来 Content-Type: audio/mpeg で返してくれれば正常動作すると思われる

package main

import (
    "flag"
    "os"
    "net/http"
    "log"
    "fmt"
)

var (
    addr = flag.String("http", ":9000", "HTTP service address (e.g., ':9000')")
)

func main() {
    flag.Parse()
    cwd, _ := os.Getwd()
    
    fs := http.FileServer(http.Dir(cwd))
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Cache-Control", "no-cache") // ブラウザにキャッシュさせない
        fs.ServeHTTP(w, r)
    })

    server := &http.Server{
        Addr: *addr,
        Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            log.Printf("%s %s %s", r.RemoteAddr, r.Method, r.URL.RequestURI())
            http.DefaultServeMux.ServeHTTP(w, r)
        }),
    }

    fmt.Fprintln(os.Stderr, "Listening at "+*addr)
    log.Fatal(server.ListenAndServe())
}

end 追記2018/02/10-----------------





perlスクリプトのexe化で不意に webサーバー(nginx,apache)入れなくても
phpのビルトインサーバーを使えばjavascriptphpのテストするだけならいいのでは?
って思い(ちゃんとするなら Ubuntuでやるが Windowsでやることにした)

windowsphpを入れる→以下のリンクからVC14 x64 Thread Safe (2017-Mar-16 00:40:27)を
ダウンロードしてインストール
PHP For Windows: Binaries and sources Releases

解凍して解凍したフォルダーにpathを通して
(私の解凍後の状態→ C:\Users\USERNAME\wintools\php-7.1.3-Win32-VC14-x64 
phpstart.batを作ってその中で
PATH=C:\Users\USERNAME\wintools\php-7.1.3-Win32-VC14-x64;%PATH%
とした)

サーバーのドキュメントルートへ移動して以下のコマンドを実行したら・・・

>php -S localhost:8000

vcruntime140.dllが無いというダイアログが出た
検索してしまいましたが、phpをダウンロードしたページの左側に
vc14 builds ... でMSへのページへのリンクがありましたw
MSへのリンクを張っておきます
Download Visual C++ Redistributable for Visual Studio 2015 from Official Microsoft Download Center

  • select language→Japaneseを選ぶ
  • ダウンロードボタンを押す
  • vc_redist.x64.exe にチェックを入れ Nextを押す
  • vc_redist.x64.exeをインストール


再度

>php -S localhost:8000

今度は、エラーダイアログが出ないで

>php -S localhost:8000
PHP 7.1.3 Development Server started at Sat Mar 25 17:10:57 2017
Listening on http://localhost:8000
Document root is C:\XXXXXXX...
Press Ctrl-C to quit.

起動成功
ブラウザーのurlに
http://localhost:8000/

表示が出た(ドキュメントルートに index.php index.htmlが作ってあればです)


php.iniを編集しないと mysqlsqlite、opensslが有効になっていない

インストール(解凍しただけだけど)フォルダーにphp.ini-developmentや
php.ini-productionがあるので今回は、php.ini-developmentを php.iniに
コピーしてから以下を編集しました(;を取って有効にした)

  • extension_dir = "ext"
  • extension=php_curl.dll
  • extension=php_mysqli.dll
  • extension=php_openssl.dll
  • extension=php_pdo_mysql.dll
  • extension=php_pdo_sqlite.dll

perlスクリプトのexe化をやってみる

私の環境は、ActivePerlではなくStrawberry Perl(32bitの方)を使ってます

perlスクリプトをexe化できるとperlをインストールしてない環境でも使用できるので
exe化を試してみた~


PAR::Packerを入れて・・・すごい時間かかります(tkplも入ったw)
(テストを含めて20分ぐらい)

>cpan install PAR::Packer

問題無く終了すれば・・・
試したい perlスクリプト→例え test.pl

>pp -o test.exe test.pl

test.exe ができあがる(巨大なexeだw)