by shigemk2

当面は技術的なことしか書かない

Table 'performance_schema.session_variables' doesn't exist

stackoverflow.com

こんなエラーに見舞われた

Table 'performance_schema.session_variables' doesn't exist
  • MySQL 5.7.10
  • MacOSX Yosemite
mysql_upgrade -u root -p --force

MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード

mysql_upgrade はすべてのデータベースのすべてのテーブルに対して、MySQL サーバーの現在のバージョンとの非互換性を調べます。また、mysql_upgrade は、システムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにします。

原理は不明なんだが。。。

ScalaでIPv4とIPv6の判別

ogawa.s18.xrea.com

scalamanual.blog.fc2.com

命題 文字列で与えられたIPアドレスがIPv4なのかIPv6なのかを判別したいとき、Javaではどう書けばいいのか。

Javaの書き方を完全に流用してます。isInstanceOfは知らないとハマります。

import java.net.Inet6Address
import java.net.Inet4Address
import java.net.InetAddress
println(InetAddress.getByName("192.0.2.10").isInstanceOf[Inet6Address]) // false
println(InetAddress.getByName("::1").isInstanceOf[Inet6Address]) // true

java-ipv6をScalaで使ってみる

github.com

stackoverflow.com

JavaのSubnetUtilsがIPv6に対応していないので、どうしたものかと思ったら、java-ipv6なるライブラリがあることを知る。 READMEを見るとインストールはMavenしか書かれていないので、sbtだとどうかな~とか思いつつ、build.sbtには以下のように書く。

libraryDependencies += "com.googlecode.java-ipv6" % "java-ipv6" % "0.16"

あとはREADMEを読みつつ、JavaコードをScalaコードに翻訳する。

こちらは、特定のIPアドレスがプレフィックス表示つきIPv6の中に含まれているかどうかを確認するコード。

import com.googlecode.ipv6._
import com.googlecode.ipv6.IPv6Network
import com.googlecode.ipv6.IPv6NetworkMask
import com.googlecode.ipv6.IPv6AddressRange
import com.googlecode.ipv6.IPv6Address
val strangeNetwork = IPv6Network.fromString("fe80::226:2dff:fefa:cd1f/43")
val range = IPv6AddressRange.fromFirstAndLast(IPv6Address.fromString(strangeNetwork.getFirst().toString),
  IPv6Address.fromString(strangeNetwork.getLast().toString))
println(range.contains(IPv6Address.fromString("fe80::226:2dff:fefa:dcba"))) // true
println(range.contains(IPv6Address.fromString("fe81::226:2dff:fefa:dcba"))) // false

IPv6あんまりわかってないね。