AMD CPU RyzenでAndroid Emulatorが起動しないときの対処

前提:Windows 11、AMD Ryzen 5 5625U with Radeon Graphics、WSL2は使いたい、2023/05/06

症状:Android StudioでAndroid Emulatorが起動しない。「Device Manager」「The emulator process for AVD Pixel_6_Pro_API_33 has terminated.」というダイアログが表示される。

解決方法:「Device Manager」のAVDの設定で「Emulated Performance」を「Automatic」から「Software – GLES 2.0」に変更する。(「Hardware – GLES 2.0」だと上記の症状。)

参考:

https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce

https://developer.android.com/studio/run/emulator-acceleration?hl=ja#vm-windows-whpx

https://qiita.com/ebisuebisu/items/e3858f782c2c275c24ff

# VM アクセラレーションの方をトライしたが直らず、結局、グラフィック アクセラレーションの問題だったという落ち。

委任ハーベストできるSymbol(XYM)ノードを立ててみた

→2021年12月5日にノードを廃止しました。下記の記述内容は古い内容です。

個人的にSymbol(XYM)のノードを立ててみました。結構性能の良いサーバなので、Symbolを持っていて委任ハーベスティング(委任ハーベスト)をしてみたい方はどうぞご利用ください。ノード性能は、メモリ:32GB、CPU数:8、最大委任数:200、https:対応済みです。

high-performance-symbol-node-1.tmyymmt.net

ハーベスティングの方法

  1. ここのページで「ngl-dual」を検索して表示されるものをメモします。(例:ngl-dual-101.symbolblockchain.io
  2. デスクトップのウォレットなら左下のNodeを押し、1.でメモしたものを選択する。
    スマホのウォレットアプリなら、右上の歯車NodeMainnetを押し、1.でメモしたものを選択する。もし、1.でメモしたものが表示されない場合はCustomを押し、「http://1.でメモしたもの:3000」と入力する。
  3. ハーベスティングのノードURLに「high-performance-symbol-node-1.tmyymmt.net」を入力する。

参考

※本投稿は特定の暗号資産(仮想通貨)の購入を勧めるものではありません。また、ノードの稼働を保証するものでもありません。全ての判断は自己責任でお願いいたします。

PukiWiki 1.5.0 zipでファイルを一括添付

参考ページ: PukiWiki/改造/一括添付・サムネイル出力・キャッシュ – cubic9.com

42,43d41
< define('PLUGIN_OPEN_AVOID_DIRECT', FALSE); // TRUE or FALSE
<
160c158
< 	global $vars, $_attach_messages, $notify, $notify_subject;
---
> 	global $_attach_messages, $notify, $notify_subject;
190,221d187
< 	if ($vars['extract_mode'] == 'on') {
< 	   switch (strtolower(substr($file['name'], -4))) {
< 		case '.zip':
< 		     $efiles = unzip($file['tmp_name']);
< 		     break;
< 		default:
< 		     die_message('invalid file type');
< 	   }
< 	   if ($efiles === FALSE) {
< 	      return array(
< 	      	     'result'=>FALSE,
< 		     'msg'=>$_attach_messages['err_extract']);
< 	   }
< 	   foreach ($efiles as $efile) {
< 	   	$ret = do_upload($page,
< 				mb_convert_encoding($efile['extname'], SOURCE_ENCODING, 'auto'),
< 		   		$efile['tmpname']);
< 		if (! $ret['result']) {
< 		   unlink($efile['tmpname']);
< 		}
< 	   }
< 	   return $ret;
< 	} else {
< 	   return do_upload($page, $file['name'], $file['tmp_name']);
< 	}
< }
<
< function do_upload($page, $fname, $tmpname)
< {
< 	global $_attach_messages;
<
< 	$obj = & new AttachFile($page, $fname);
222a189
> 	$obj = & new AttachFile($page, $file['name']);
227,236c194,196
< 	if (is_uploaded_file($tmpname)) {
< 	   if (move_uploaded_file($tmpname, $obj->filename)) {
< 	      chmod($obj->filename, PLUGIN_ATTACH_FILE_MODE);
< 	   }
< 	} else {
< 	   if (rename($tmpname, $obj->filename)) {
< 	      chmod($obj->filename, PLUGIN_ATTACH_FILE_MODE);
< 	   }
<         }
<
---
> 	if (move_uploaded_file($file['tmp_name'], $obj->filename))
> 		chmod($obj->filename, PLUGIN_ATTACH_FILE_MODE);
>
279,283d238
< 	if (PLUGIN_OPEN_AVOID_DIRECT && ! strstr($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
< 	   header('Location: ' . get_script_uri());
< 	   exit;
< 	}
<
456d410
< 	$arc_support = extension_loaded('zip') ? '*.zip,' : '';
469d422
<   <br />{$_attach_messages['msg_extract']}:<input type="checkbox" name="extract_mode"> ({$arc_support})
899,945d851
<
< function unzip($upfile)
< {
< 	if (! extension_loaded('zip')) {
< 	   return FALSE;
< 	}
< 	$tmpupfile = tempnam(CACHE_DIR, 'zip_uploaded_');
< 	if (! move_uploaded_file($upfile, $tmpupfile)) {
< 	   return FALSE;
< 	}
< 	if (! ($fp = zip_open($tmpupfile))) {
< 	   return FALSE;
< 	}
<
< 	unset($files);
< 	$cnt = 0;
< 	while ($entry = zip_read($fp)) {
< 	      if (zip_entry_open($fp, $entry, "rb")) {
< 	      	 $name = basename(trim(zip_entry_name($entry)));
< 		 $size = zip_entry_filesize($entry);
< 		 if ($name && $size !== 0) {
< 		    $buff = zip_entry_read($entry, $size);
< 		    $tname = tempnam(CACHE_DIR, 'zip_extracted_');
< 		    if (! ($fpw  = fopen($tname , 'wb'))) {
< 		       zip_entry_close($entry);
< 		       zip_close($fp);
< 		       foreach ($files as $file) {
< 		       	       @unlink($file['tmpname']);
< 		       }
< 		       @unlink($tname);
< 		       @unlink($tmpupfile);
< 		       return FALSE;
< 		    }
< 		    fwrite($fpw, $buff, $size);
< 		    fclose($fpw);
< 		    zip_entry_close($entry);
< 		    $files[$cnt]['tmpname'] = $tname;
< 		    $files[$cnt]['extname'] = $name;
< 		    $cnt++;
< 		 }
< 	      }
< 	}
< 	zip_close($fp);
< 	@unlink($tmpupfile);
< 	return $files;
< }
<

182d181
< 	'err_extract'  => 'Unable to extract files from uploaded archive',
185,186c184
< 	'btn_submit'   => 'Submit',
< 	'msg_extract'  => 'Extract & Attach files'
---
> 	'btn_submit'   => 'Submit'

184d183
< 	'err_extract'  => 'Unable to extract files from uploaded archive',
187,188c186
< 	'btn_submit'   => '実行',
< 	'msg_extract'  => 'Extract & Attach files'
---
> 	'btn_submit'   => '実行'

Chef と gem

OSX 10.9 Mavericks に Chefクライアントをインストールする by @ringohub on @Qiita http://qiita.com/ringo/items/8aef8a7762d7605f3194
curl -L https://gist.github.com/ringohub/7660676/raw/bc25c3274d55a799f11e4aa012bf3e809a7cf285/install.sh | sudo bash

Ruby – Macでgem installでunknown argument: ‘-multiply_definedsuppress’のエラー時の対応 by @oonishin on @Qiita http://qiita.com/oonishin/items/8e61459ef3e7ca08e31a
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install foobargem

lighttpd環境でWordPressにJetpack pluginを入れるときの注意点

エラー: site_inaccessible, IXR -32300
lighttpd 1.4.28, WordPress 3.4.2–ja, Jetpack 1.9.2, Core Control 1.1

http://techdevian.com/jetpack-error-failed-authenticate-resolved-fix/

  1. Core Control Plugin
  2. Tool -> Core Control -> HTTP Access Module 1.0 -> Save Module Choices
  3. External HTTP Access
  4. Manage Transports -> cURL Transport -> Disable Transport

http://en.forums.wordpress.com/topic/jetpack-instl-issue-with-ssl-and-lighttpd?replies=18
/etc/lighttpd/lighttpd.conf
url.rewrite-once = (
"^/en//(.*)\.(.+)$" => "$0",
"^/en/(wp-.+)$" => "$0",
"^/en/xmlrpc.php(.*)?" => "$0",
"^/en/sitemap.xml" => "$0",
"^/en/(.+)/?$" => "/en/index.php/$1",
"^/ja//(.*)\.(.+)$" => "$0",
"^/ja/(wp-.+)$" => "$0",
"^/ja/xmlrpc.php(.*)?" => "$0",
"^/ja/sitemap.xml" => "$0",
"^/ja/(.+)/?$" => "/ja/index.php/$1"
)

http://userwordpressdomain/yourwordpressdirectory/xmlrpc.php?rsd で確認できる。

Scala で JSON

「入れ子が結構あるjsonをscalaで構築して、jsonファイルを出力する」には、jsondaでペロペロっと書いて、mergeすると楽。

Scala で JSON を扱うライブラリ一覧

参考

[xyzzy] specs2 の unit specification スタイルで書いたテストケース一覧を、 xyzzy のコマンド一発で grep する方法

開いているファイルの「 should 」と「 in 」の行をgrepするコマンド。

.xyzzy とか適当なファイルに以下をコピペ。M-x grep-specs2-unit-selected-buffer で実行。

; Grep description of specs2 unit specification in selected buffer on xyzzy
; Please copy & paste following code at your .xyzzy
; Usage: M-x grep-specs2-unit-selected-buffer
(defun grep-specs2-unit-selected-buffer ()
  (interactive)
  (grep " should \\| in " (selected-buffer)))

[Scala] machの深いネストの予防方法(についての確認&練習)

https://gist.github.com/2382341についての確認&練習。

// see https://gist.github.com/2382341

// scalaz for only solution3
import scalaz._
import Scalaz._

object SolutionForMultiNestedMatchforMyStudy {

  def f(num: Int): Option[Int] = {
    num match {
      case 0 => Some(1)
      case 1 => Some(2)
      case 2 => Some(3)
      case _ => None
    }
  }

  def solution1(num: Int): Int = {
    f(num) match {
      case Some(v1) => {
        f(v1) match {
          case Some(v2) => {
            f(v2) match {
              case Some(v3) => v3
              case _ => -3
            }
          }
          case _ => -2
        }
      }
      case _ => -1
    }
  }

  def solution2(num: Int): Int = {
    val v1 = f(num)
    val v2 = v1.flatMap(f)
    val v3 = v2.flatMap(f)

    (v1, v2, v3) match {
      case (Some(_), Some(_), Some(result)) => result
      case (Some(_), Some(_), None) => -3
      case (Some(_), None, None) => -2
      case _ => -1
    }
  }

  def solution3(num: Int): Int = {
    f(num).toSuccess(-1).flatMap(f(_).toSuccess(-2)).flatMap(f(_).toSuccess(-3)).fold(identity, a => a)
  }

  def solution4(num: Int): Int = {
    (for {
      v1 <- f(num).toRight(-1).right
      v2 <- f(v1).toRight(-2).right
      v3 <- f(v2).toRight(-3).right
    } yield v3).merge
  }

  def solution5(num: Int): Int = {
    val v1 = f(num).getOrElse { return -1 }
    val v2 = f(v1).getOrElse { return -2 }
    f(v2).getOrElse { return -3 }
  }

  def example {
    (0 to 3).foreach{n => println(solution1(n))}
    println
    
    (0 to 3).foreach{n => println(solution2(n))}
    println
    
    (0 to 3).foreach{n => println(solution3(n))}
    println
    
    (0 to 3).foreach{n => println(solution4(n))}
    println
    
    (0 to 3).foreach{n => println(solution5(n))}
  }
}

Scalaで16進数文字列とバイト列の相互変換 修正版

Scalaで、16進数文字列からバイト列への変換と、バイト列から16進数文字列への変換。(16進数文字列以外の入力は削除するように修正した。)

object HexBytesUtil {

  def hex2bytes(hex: String): Array[Byte] = {
    hex.replaceAll("[^0-9A-Fa-f]", "").sliding(2, 2).toArray.map(Integer.parseInt(_, 16).toByte)
  }

  def bytes2hex(bytes: Array[Byte], sep: Option[String] = None): String = {
    sep match {
      case None => bytes.map("%02x".format(_)).mkString
      case _ => bytes.map("%02x".format(_)).mkString(sep.get)
    }
    // bytes.foreach(println)
  }

  def example {
    val data = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21 21"
    val bytes = hex2bytes(data)
    println(bytes2hex(bytes, Option(" ")))

    val data2 = "48-65-6C-6C-6F-20-57-6F-72-6C-64-21-21"
    val bytes2 = hex2bytes(data2)
    println(bytes2hex(bytes2, Option("-")))

    val data3 = "48656C6C6F20576F726C642121"
    val bytes3 = hex2bytes(data3)
    println(bytes2hex(bytes3))
  }

}

Scalaで16進数文字列とバイト列の相互変換

Scalaで、16進数文字列からバイト列への変換と、バイト列から16進数文字列への変換。

object HexBytesUtil {

  def hex2bytes(hex: String): Array[Byte] = {
    if(hex.contains(" ")){
      hex.split(" ").map(Integer.parseInt(_, 16).toByte)
    } else if(hex.contains("-")){
      hex.split("-").map(Integer.parseInt(_, 16).toByte)
    } else {
      hex.sliding(2,2).toArray.map(Integer.parseInt(_, 16).toByte)
    }
  }

  def bytes2hex(bytes: Array[Byte], sep: Option[String] = None): String = {
    sep match {
    case None =>  bytes.map("%02x".format(_)).mkString
    case _ =>  bytes.map("%02x".format(_)).mkString(sep.get)
    }
    // bytes.foreach(println)
  }

  def example {
    val data = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21 21"
    val bytes = hex2bytes(data)
    println(bytes2hex(bytes, Option(" ")))

    val data2 = "48-65-6C-6C-6F-20-57-6F-72-6C-64-21-21"
    val bytes2 = hex2bytes(data2)
    println(bytes2hex(bytes2, Option("-")))

    val data3 = "48656C6C6F20576F726C642121"
    val bytes3 = hex2bytes(data3)
    println(bytes2hex(bytes3))
  }

}