記憶は定かではないがある時を境にでビジュアルモードで選択されるようになった。 最初に何か設定したかもしれないけど思い出せないのでぐぐったら解決した。
ここに書いてあるとおりですが、設定項目は微妙に変わっていて、
- iTerm2 > Preferences > Profiles > Terminal > Terminal Emulation
- Enable mouse reporting のチェックを外す
でした。
記憶は定かではないがある時を境にでビジュアルモードで選択されるようになった。 最初に何か設定したかもしれないけど思い出せないのでぐぐったら解決した。
ここに書いてあるとおりですが、設定項目は微妙に変わっていて、
でした。
会社では、例によってProxyがあるので社内のNTPサーバに同期させる。
/etc/default/ntpdate
というファイルがあったので、NTPSERVERS
に社内のサーバを記述してntpdate
コマンドを叩いてみる
# ntpdate 4 Jan 11:40:08 ntpdate[23795]: no servers can be used, exiting
うまくいかない・・・
調べたらどうやら/usr/sbin/ntpdate-debian
というラッパーコマンドがあるらしい。
ただしこれを使うときは、NTPDATE_USE_NTP_CONF=no
にしないと設定したサーバリストが使われない。
# The settings in this file are used by the program ntpdate-debian, but not # by the upstream program ntpdate. # Set to "yes" to take the server list from /etc/ntp.conf, from package ntp, # so you only have to keep it in one place. #NTPDATE_USE_NTP_CONF=yes NTPDATE_USE_NTP_CONF=no # List of NTP servers to use (Separate multiple servers with spaces.) # Not used if NTPDATE_USE_NTP_CONF is yes. #NTPSERVERS="ntp.ubuntu.com" NTPSERVERS="10.x.x.x" # Additional options to pass to ntpdate NTPOPTIONS=""
これで上手くいきました。
# ntpdate-debian 4 Jan 11:44:30 ntpdate[23814]: step time server 10.x.x.x offset 253.208283 sec
このntpdate-debian
は起動時に実行されるらしいので気になる場合はcronで定期実行させてもいいかも。
JIRAでLDAP連携をしていると担当者選択でLDAPの全ユーザが出てきてとってもうざい。 ぐぐったらフィルタを掛けることが出来たのでメモしておく。
これでおっけー。
ちなみにカスタムフィールドの場合はユーザピッカーのカスタムフィールドを作った後で構成から入るとフィルタを設定できました。
Windowsのパフォーマンスカウンターをよく使うのですが、説明をしようと思うと意外と曖昧に理解していたり調べてもすぐ忘れてしまうのでメモしておく。
パフォーマンスカウンターを仕掛けるときに定番のものがいくつかあるのですが、ディスクについては\PhysicalDisk(*)\Disk Reads/sec
や\PhysicalDisk(*)\Disk Writes/sec
を取って説明資料を作ることがあります。
このカウンターの説明にはそれぞれ、
ディスク上の読み取り操作の速度です。
ディスク上の書き込操作の速度です。
と書いてあるのですが、説明が少なすぎてなんのことだかよく分かりません。
速度の単位は何?と思ってググってもよく分からないです。
Disk Read Bytes/sec
なら
読み取り操作中にディスクからバイトが転送される速度です。
とあって、まあ分からないでもないです。(若干日本語に違和感を感じますが・・・)
で、結局何なんだというとIOPS(IO Per Second)だということで自分の中で納得しました。
Disk Reads/sec
なら病患のI/O処理回数ってことになり、数値が高いほど性能が高い(頑張っていっぱい読んでる)ということになりますね。
Spark FrameworkというSinatraっぽい軽量サーバを使ってGroovyでWebAPIのサーバを書いてます。
サーバを停止する処理を呼ぶと停止処理中に固まってしまうという現象が起きてました。
サーバを停止する方法は公式ドキュメントにある通り簡単なものです。
By calling the stop() method the server is stopped and all routes are cleared.
stop();
以下のようにAPIとして呼べるようにしてあります。
get "/stop", { req, res -> stop() }
が、以下のようなエラーが出てしまいます。
[Thread-1] INFO org.eclipse.jetty.util.log - Logging initialized @975ms [Thread-1] INFO spark.webserver.JettySparkServer - == Spark has ignited ... [Thread-1] INFO spark.webserver.JettySparkServer - >> Listening on 0.0.0.0:8010 [Thread-1] INFO org.eclipse.jetty.server.Server - jetty-9.3.2.v20150730 [Thread-1] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@3ab422de{HTTP/1.1,[http/1.1]}{0.0.0.0:8010} [Thread-1] INFO org.eclipse.jetty.server.Server - Started @1089ms [qtp1972788076-17] INFO spark.webserver.MatcherFilter - The requested route [/] has not been mapped in Spark [qtp1972788076-20] INFO spark.webserver.JettySparkServer - >>> Spark shutting down ... [qtp1972788076-20] INFO org.eclipse.jetty.server.ServerConnector - Stopped ServerConnector@3ab422de{HTTP/1.1,[http/1.1]}{0.0.0.0:8010} [qtp1972788076-20] ERROR spark.webserver.JettySparkServer - stop failed java.lang.InterruptedException at java.lang.Object.wait(Native Method) at java.lang.Thread.join(Thread.java:1253) at org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:161) at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89) at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:143) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:161) at org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:73) at org.eclipse.jetty.server.Server.doStop(Server.java:476) at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89) at spark.webserver.JettySparkServer.stop(JettySparkServer.java:148) at spark.SparkInstance.stop(SparkInstance.java:317) at spark.Spark.stop(Spark.java:987) at spark.Spark$stop$0.callStatic(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:198) at FooWebapiService$_main_closure5.doCall(fooWebapi.groovy:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) at groovy.lang.Closure.call(Closure.java:426) at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:53) at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:105) at com.sun.proxy.$Proxy5.handle(Unknown Source) at spark.RouteImpl$1.handle(RouteImpl.java:58) at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:162) at spark.webserver.JettyHandler.doHandle(JettyHandler.java:61) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:745)
調べるとGitHubにIssueがありました
どうやら停止するときは別スレッドにしておくと良いらしい。なるほどー。
さっそく修正してみる。
// 別ThreadにしないとInterruptedExceptionが発生してしまう get "/stop", { req, res -> Thread.start {stop()} }
直ったー。(^_^)v
[Thread-1] INFO org.eclipse.jetty.util.log - Logging initialized @899ms [Thread-1] INFO spark.webserver.JettySparkServer - == Spark has ignited ... [Thread-1] INFO spark.webserver.JettySparkServer - >> Listening on 0.0.0.0:8010 [Thread-1] INFO org.eclipse.jetty.server.Server - jetty-9.3.2.v20150730 [Thread-1] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@6591cb3b{HTTP/1.1,[http/1.1]}{0.0.0.0:8010} [Thread-1] INFO org.eclipse.jetty.server.Server - Started @1015ms [Thread-11] INFO spark.webserver.JettySparkServer - >>> Spark shutting down ... [Thread-11] INFO org.eclipse.jetty.server.ServerConnector - Stopped ServerConnector@6591cb3b{HTTP/1.1,[http/1.1]}{0.0.0.0:8010} [Thread-11] INFO spark.webserver.JettySparkServer - done
nginxのerror_logとaccess_logを1箇所で管理しているログディレクトリのパスで書き換えたいけど手動ではやりたくないです。
nginxの引数で-g "error_log xxx;"
とかできるけどaccess_logは出来ないのでテンプレートの設定ファイルを用意してsedで書き換えることにしました。
/
)で記述しますが、環境変数はバックスラッシュ(\
)なので置換します。\/
に置換しておかないと後処理のsedで/
がエスケープされなくてエラーになってしまう!sed的には以下のように書けばよいのですが、
> echo %LOG_HOME% C:\logs > echo %LOG_HOME% | sed "s/\\/\\\//g" C:/logs
バッチファイルの中で使うには変数に代入とか簡単にできないので以下のようにします。
> FOR /F "usebackq" %x IN (`echo %LOG_HOME% ^| sed -e "s/\\/\\\//g"`) DO SET LOG_HOME_NGINX=%x > echo %LOG_HOME_NGINX C:/logs
最終的にバッチファイルに記述するときは%x
を%%x
に書き換えてください。
sedの中でパイプを使いたい時にハット(^|
)が付いていますがこれがないと以下のようなエラーになります。
| の使い方が誤っています。
わからんて・・・。
ちなみにsedへのパスが通ってない時にも同じエラーになりました。(ますますわからん・・・
error_log %LOG_HOME%/nginx/error.log
と定義してあります。> sed "s/\%%LOG_HOME\%%/%LOG_HOME_NGINX%/" conf\nginx.conf
置換するキーワードはエスケープして、実際の環境変数はエスケープしません。
※Windowsならではですが、%
を使うために\%%
としている所に注意。sed的には\
でエスケープだがWindows的には%%と市内と行けないのでダブルで指定している。
set APP_HOME=%~dp0 copy /Y %APP_HOME%conf\nginx.template %APP_HOME%conf\nginx.conf FOR /F "usebackq" %%x IN (`echo %LOG_HOME% ^| sed "s/\\/\//"`) DO SET LOG_HOME_NGINX=%%x sed -i -e "s/\%LOG_HOME\%/%LOG_HOME_NGINX%/" %APP_HOME%conf\nginx.conf %APP_HOME%nginx.exe -p %APP_HOME% -c %APP_HOME%conf\nginx.conf
HTMLへ変換する場合、文字に色つけるときは[red]#あああ#
みたいにすると出来ます。
ところが、asciidoctor-pdfでPDFを作ると期待通り色がつきません。
asciidoctor-pdf でspanが来た時に色を付ける処理が[red]#text#
が生成するspanと一致していないのが原因っぽいです。
この辺のソースでspanのstyleを読んでいるのでそういうことなんでしょう。
現状のasciidoctor-pdfが期待する通りのspanを作ってやれば取り敢えず色変わりました。
pass:[<span style="color:#ff0000">あああ</span>]
まー、修正してプルリクだす元気もないので取り敢えず今回はこれで回避。