Anaconda: Spyderの配色スキーム一覧

Anaconda Spyderの色合いが明る過ぎて、このところ他のエディタやアプリもダーク系にしているので、変更しようとしてみた。

「設定⇒構文強調の配色⇒色スキームのマネージ」からスキームを選ぶ。現在のスキーム一覧は10件。

一覧はアルファベット順なのだが、比較のために色合いで並べ替えた。※既にどこかに一覧はありそうな気はするが。

ダーク系:「Emacs」「Spyder Dark」「Monokai」「Zenburn」「Solarized Dark」

ライト系:「Solarized Light」「Spyder」「Scintilla」「Pydev」「IDLE」

ダーク系から「Monokai」を選んでみた。(一覧のpdf版⇒Spyder3 スキーム一覧20191117.pdf

あと、おまけで、設定ダイアログから配色サンプル箇所とスキーム名を抜き出して画像で保存する処理に使ったPythonスクリプト。

# spyder-view-crop.py: Anaconda Spyderのスキーム配色の設定ダイアログからサムネイルを作成
#
#  先に設定ダイアログでスキームを切り替えたキャプチャー画像をspyder01~.pngのように保存しておくこと。

from PIL import Image
import glob
import os

dirname = os.getcwd()
print(dirname)
files = glob.glob(os.path.join(dirname, 'spyder[01]*.png'))
for f in files:
    tmpname = os.path.basename(f)
    basename, ext = os.path.splitext(tmpname)
    print(tmpname)
    img = Image.open(f)
    
    x, y, w, h = [161, 140, 152, 22] # スキーム名の適当な座標を指定
    title = img.crop((x, y, x+w, y+h))
    x, y, w, h = [317, 140, 234, 196] # 配色例の適当な座標を指定
    crop = img.crop((x, y, x+w, y+h))
    
    img2 = Image.new('RGB', \
        (max(title.width, crop.width), title.height+crop.height), \
        title.getpixel((0,0)))
    img2.paste(title, (1, 0))
    img2.paste(crop, (0, title.height))
    
    img2.save(os.path.join(dirname, "crop_"+basename+ext))

WordPress: 非互換プラグインのPHP7対応

怒涛のめもめもリンク集 | WordPress: PHPを5.6から7.3に更新したら、プラグインエラー2件、本文表示失敗の続き)

PHP5をPHP7に更新を行なったらWordPressが動作しなくなった件について、チェックしてみると下記の2つのプラグインのPHP7への非互換性でWordPressの立ち上げ自体が動作しなくなっていた。

  • amazon_linkage 0.6.3||リンク切れ
  • php_hl_string 0.9.9||リンク切れ

php_hl_string については、下記記事も:

両方ともPHP7の非互換性に関するものだった。元リンクがないので、とりあえずPHP7で動作するように下記のように変更してみた。

amazon_linkage:

  • split()をexplode()へ変更。
diff -u old/wp-content/plugins/amazon_linkage/amazon.php wp-content/plugins/amazon_linkage/amazon.php
--- old/wp-content/plugins/amazon_linkage/amazon.php      2008-06-07 00:17:48.000000000 +0900
+++ wp-content/plugins/amazon_linkage/amazon.php       2019-11-15 04:33:46.038804505 +0900
@@ -4,7 +4,7 @@
 Plugin URI: http://note.openvista.jp/187/
 Description: ASIN を指定して Amazon.co.jp から個別商品の情報を取り出します
 Author: leva + ともかめ
-Version: 0.6.3
+Version: 0.6.3b
 Author URI: http://note.openvista.jp/187/
 Special Thanks: Tomokame, 1st created author (http://tomokame.moo.jp/)
 Special Thanks: Keith Devens.com (http://keithdevens.com/software/phpxml)
@@ -212,7 +212,7 @@
     for($i=0; $i<count($matches[1]); $i++){

       $matches[1][$i] = preg_replace("/[\- ]/", "", $matches[1][$i]);
-      list($this->asins_[$i], $this->types_[$i], $this->extras_[$i]) = split(",", $matches[1][$i]);
+      list($this->asins_[$i], $this->types_[$i], $this->extras_[$i]) = explode(",", $matches[1][$i]);

       $this->shadows_[$i] = true;

php_hl_string:

--- old/wp-content/plugins/phphlstring/php_hl_string.php      2019-11-25 05:34:19.887690704 +0900
+++ wp-content/plugins/phphlstring_0.9.9/php_hl_string.php   2019-11-25 05:28:47.537690790 +0900
@@ -3,7 +3,7 @@
 Plugin Name: PHP Highligh String
 Plugin URI: http://www.chameleonic.org/plugin/
 Description: PHPのコードを見やすく色分けしながら、行番号をつけます。使い方は、[code lang="php" -1]コード[/code ]のようにbbCode風の専用タグを書きます。
-Version: 0.9.9
+Version: 0.9.9b
 Author: chameleon
 Author URI: http://www.chameleonic.org/
 */
@@ -24,7 +24,7 @@
 */

 //PEARに依存する。
-$pear_dir = ABSPATH . 'wp-content/plugins/phphlstring/PEAR';
+$pear_dir = ABSPATH . 'wp-content/plugins/phphlstring_0.9.9/PEAR';

 if(is_dir($pear_dir))
     ini_set("include_path", ini_get("include_path") . PATH_SEPARATOR . $pear_dir);
@@ -88,9 +88,18 @@

     function first($content)
     {
-        $content = preg_replace('#\[code\](.*?)\[/code\]#sie', '$this->do_hlight(\'\\1\', false,    false,    $content);', $content);
-        $content = preg_replace('#\[code lang="(.*?)"\](.*?)\[/code\]#sie', '$this->do_hlight(\'\\2\',\'\\1\',false,$content);', $content);
-        $content = preg_replace('#\[code lang="(.*?)"\s*?-([0-9]*?)\](.*?)\[/code\]#sie', '$this->do_hlight(\'\\3\',\'\\1\',\'\\2\',$content);', $content);
+        $content = preg_replace_callback(
+                '#\[code\](.*?)\[/code\]#si',
+                function($m){return $this->do_hlight($m[1], false, false, $content);},
+                $content);
+        $content = preg_replace_callback(
+                 '#\[code lang="(.*?)"\](.*?)\[/code\]#si',
+                function($m){return $this->do_hlight($m[2],$m[1],false,$content);},
+                $content);
+        $content = preg_replace_callback(
+                 '#\[code lang="(.*?)"\s*?-([0-9]*?)\](.*?)\[/code\]#si',
+                function($m){return $this->do_hlight($m[3],$m[1],$m[2],$content);},
+                $content);
         return $content;
     }

@@ -107,7 +116,7 @@
     function do_hlight($txt, $lang = false,   $sl,    $content)
     {
        //fixed for PHP--------------------
-       $txt=eregi_replace('<?','<',$txt);
+       $txt=preg_replace('#<?#i','<',$txt);
        //---------------------------------
        if(!($sl==false)){
                $options = array('numbers' => HL_NUMBERS_LI,    'tabsize' => 4,);
@@ -142,9 +151,18 @@

     function first_pre($content)
     {
-        $content = preg_replace('#\[code\](.*?)\[/code\]#sie', '$this->do_blocks(\'\\1\',false, $content);', $content);
-        $content = preg_replace('#\[code lang=\\\"(.*?)\\\"\](.*?)\[/code\]#sie', '$this->do_blocks(\'\\2\', \'\\1\', $content);', $content);
-        $content = preg_replace('#\[code lang=\\\"(.*?)\\\"\s*?-([0-9]*?)\](.*?)\[/code\]#sie', '$this->do_blocks_extend(\'\\3\', \'\\1\',\'\\2\', $content);', $content);
+        $content = preg_replace_callback(
+                 '#\[code\](.*?)\[/code\]#si',
+                function($m){return $this->do_blocks($m[1],false, $content);},
+                $content);
+        $content = preg_replace_callback(
+                '#\[code lang=\\\"(.*?)\\\"\](.*?)\[/code\]#si',
+                function($m){return $this->do_blocks($m[2], $m[1], $content);},
+                $content);
+        $content = preg_replace_callback(
+                '#\[code lang=\\\"(.*?)\\\"\s*?-([0-9]*?)\](.*?)\[/code\]#si',
+                function($m){return $this->do_blocks_extend($m[3],$m[1],$m[2], $content);},
+                $content);
         return $content;
     }

--- old/wp-content/plugins/phphlstring/PEAR/Text/Highlighter.php     2005-08-14 20:36:08.000000000 +0900
+++ wp-content/plugins/phphlstring_0.9.9/PEAR/Text/Highlighter.php   2019-11-24 22:42:12.468698227 +0900
@@ -199,7 +199,7 @@
             return PEAR::raiseError('Highlighter for ' . $lang . ' not found');
         }

-        $obj =& new $classname($options);
+        $obj = new $classname($options);

         return $obj;
     }
@@ -353,7 +353,7 @@
     {
         if (!($this->_renderer)) {
             include_once('Text/Highlighter/Renderer/Html.php');
-            $this->_renderer =& new Text_Highlighter_Renderer_Html($this->_options);
+            $this->_renderer = new Text_Highlighter_Renderer_Html($this->_options);
         }
         $this->_str = $str;
         $this->_state = -1;

WordPress: PHPを5.6から7.3に更新したら、プラグインエラー2件、本文表示失敗

このブログの設置サーバのPHPを5.6から7.3に更新した。

サイトも表示できてphpinfo()は動作したが、WordPressが動作しなくなってしまった…。いや、お前がPHP更新しろというから作業したんだが…。

wp-blog-header.php内の下記の読み込みで失敗しているらしい。

require_once( dirname( <strong>FILE</strong> ) . '/wp-load.php' );

wp-config.phpを経由してからの wp-settings.php

各記事はタイトルしか表示されなくなっているのだが、編集画面だと本文もきちんと取得されているし、タイトルしかない各ページのHTMLソースを眺めるとソーシャルボタンへの情報として本文のデータが埋め込まれている。なので、動作していないとまではならないらしいんだけど…。

wp_includes/post-template.php内のthe_contentを見ると、get_the_contentでのデータ取得はできているのだが、その後のapply_filters(‘the_content’, $content)を実行すると内容が空になってしまうみたい。どこかでadd_filterされているものがエラーになっているのか?

includes/{default-filters,blocks}.php内でフィルタ設定が行われているようだが、これらをオフにしても結果は変わらず…。

the_contentのapply_filterをコメントアウトすると、(レイアウトは崩れるものの)本文は表示されるので、このフィルタ処理が原因のようなのだが。

自前のmemolinkプラグインでのエラーだった…。preg_replaceのeオプションでエラーになっていたみたい??

$ php foo.php
PHP Warning:  preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in XXX/wp-content/plugins/memolink/memolink.php on line XXX

split()もなくなってる…。explode()で対応することにした。

PHP5⇒PHP7については、下記のような非互換性が。他の動作しなかったプラグインもこのあたりの問題があったのだろう。

WordPressが「最新PHPは高速化」と煽るから更新してみていて、まだ効果は確認できていないところだが、下記のようにPHP5とPHP7だと2倍との記事もあった。

  • (PHP5とPHP7の速度を比較、2倍以上高速になるほどの違いとは – 【個人向け】レンタルサーバーの選び方)[https://serversenshi.com/php5-php7/]

また、ownCloud 10.0.10がPHP7.3だと動かなくなってしまっていて困ったが、ownCloud 10.3以降だと対応していて、急遽更新してなんとか動くようになった。

というか、元々は ownCloudのファイル暗号化機能だが動作しなくなっていて、それを動作するように設定しようとしたらPHP5だと対応できないみたいな表示もあってPHPを更新しようとしていた覚えも。

作業時に、occコマンドで更新しようとしたら、いくつかアプリが動かないとのエラー。とりあえず、disableにした。

2019-11-14T10:35:15+00:00 Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
2019-11-14T10:35:15+00:00 Repair warning: Please install or update the following apps manually or disable them with:
occ app:disable drawio
occ app:disable files_clipboard
occ app:disable rainloop
2019-11-14T10:35:15+00:00 Repair warning: For manually updating, see <a href="https://doc.owncloud.org/server/10.3/go.php?to=admin-marketplace-apps">https://doc.owncloud.org/server/10.3/go.php?to=admin-marketplace-apps</a>
2019-11-14T10:35:15+00:00 OCRepairException: Upgrade is not possible
2019-11-14T10:35:15+00:00 Update failed

ownCloudも同期が遅くて困っていたが、こちらも速度改善するといいのだが。

Anaconda Spyderで補完エラー

あるパソコンで気づくとSpyderを使った際に、OpenCVパッケージの補完ができなくなっていた。様子を見ていると、起動直後の数十秒は補完動作をしているようなのだが、しばらくするとほとんどが補完候補から外れてしまう(なぜか、haarcascadesは残る)。

いったんSpyder 3.3.6を削除してインストールし直してもみたのだが変化がなくて、OpenCVパッケージを入れ直ししてもダメ。もちろんパソコンの再起動でもダメで、しかたがないので、Anacondaを含め、パソコン上の下記のPython関連のアプリをいったん全削除してからAnacondaを入れ直した(Anacondaは個々の環境も構築されていたのだが)。


すると、やっと補完がまともに動作するようになった(今のところ?)。

以前はPythonも3.6と3.7が共存していたりしたようだし、それも影響していたのかも。Spyderのバージョン表示もPythonの箇所のみ切り替わっていた。

WordPress更新で新規投稿できない⇒クラシックエディタに戻した

WordPressを5.2.4に更新したら、ログイン等はできるのだが、新しく記事を投稿できなくなってしまった。

赤い枠で「更新に失敗しました。」と出るだけ。

ブラウザのCookieを削除したら動作したとの話もあるので、こちらで対応してみたがダメだった。新エディタが影響しているようなのだが、パーマリンクのカスタム指定(「/年/月/日/ポスト番号」)も反映されていないみたい??

結局、最新エディタでなく、クラシックエディタに戻した(プラグインを入れた)ら作業できるようになった。

(※ただし、パーマリンクの形式が変更できない件は未解決⇒記事の入力時やプレビュー時には、パーマリンクの形式がデフォルトのままだったのだが、投稿を終えた際にはカスタム形式での保存となっていた。)