メモの日々


2001年10月19日(金) タイトル思いつかん

[java] マルチスレッド化Javaアプリケーションの作成

マルチスレッドプログラミングの解説みたい。JavaHouse Brewersより。

[java] JavaServer Pages をモデル2(MVC)アーキテクチャで理解する

JSPモデル2の説明。JavaHouse Brewersより。Sun Developers Newsの記事。日本人が書いている。こんなのあるんだね。

会社など

  • 10:30 会社に来てメイル読んだりしている途中。今日はいい天気だ。
  • 23:00 あーあ、深夜になってしまいました。おれ一人だ。今日は結局何をしたのだ。細かいことをいろいろやった気がするが思い出せない。GIGA実証実験用のPCがやっと一台来たので、その設置をしたりしたなあ。PCが来たのは昨日か。
  • 昨日見たテレビ。ぷらちなロンドンブーツ。真矢はガクトと吉村由美と相川七瀬と友達で、パンチ佐藤とは友達ではない。ふかわりょうが死をイメージするタレントであることが判明。

2003年10月19日(日)

[web][soft] Web Publisher

「Web Publisher」は、ウェブサイト構築ツールです。以下のような特徴があります。

  * ウェブサイト内で共通のパーツを同期させるテンプレート機能。{{'<BR>'}}
  * Ruby/Amrita を使ったドキュメント作成を効率化するエディタ機能。{{'<BR>'}}
  * Eclipse Plug-in として動作。Eclipse の機能や Plug-in が利用可能。

いい感じ。eclipse-mlより。

[work] 定型文書無料雛型集 (オフィス エス・アイ・ビー)

見積書などのサンプルを見られる。こういうサイトもっとあると思うがどういうわけかなかなか見つけられない。

やること

  • 定期を買う
  • 契約書(郵便局)
  • 見積書
  • ハローワーク関連
  • 税務署関連
  • 経理関連(簿記、通帳、現金)
  • クリアファイル、パンチを買う

2005年10月19日(水)

[unix][security] syslog-ng + Stunnel

syslogの転送を暗号化して行いたいとのことで、調べた結果 syslog-ng + Stunnel という組み合わせならできそうだったのでトライ。

syslog-ngはFedora Core 3の公式パッケージは無いようだ。@ITを参考にしてインストールした。ソースアーカイブ内の contrib/fedora-packaging にFedora用と思われる設定ファイル群があった。

Stunnelはパッケージが既にインストールされていた。StunnelのサイトにEncrypting traffic to a remote syslog-ng server including SSL peer authenticationという例があったのでこの通り設定したら、ログの暗号化転送はできたようだ。

できるようになるまでに随分苦労したんだけど、あまりメモしておくことを思いつかないなあ。何に苦労したんだっけなあ。

やること

  • 蛍光灯を捨てる
  • 4000円払う
本日のツッコミ(全5件) [ツッコミを入れる]

XOX [はじめまして。 syslog-ng + Stunnel という組み合わせで、syslogの転送を暗号化を挑戦していま..]

小川 [手元に環境がないので詳しいことは分かりませんが、3番目の手順として書かれているのは、 ・全マシンの /etc/st..]

XOX [小川様 お返事ありがとうございます。 小川様のお返事を参考に作業をしてみましたが、私ではうまくいきませんでした。 ..]

小川 [・syslog-ng-server.pemはサーバで作成する。 ・syslog-ng-client.pemは各クライ..]

XOX [小川様 お世話になっております。 返事が遅れてしまい、申し訳ありません。 小川様のお答えどおりに設定をいたしたと..]


2016年10月19日(水)

[soft][howto] またまたFirefoxで「他のタブをすべて閉じる」を非表示にする

新しいPCのFirefoxで以前にメモしたように「他のタブをすべて閉じる」を非表示にしたかったがまたつまずいたのでメモ。次に気を付けないといけない。

  • 現在ではFirefoxのプロファイルフォルダにchromeフォルダは存在しないので自分で追加する必要がある。
  • プロファイルフォルダは次の二か所にあって、chromeフォルダは後者の下に追加しないといけない。
    • C:\Users\XXX\AppData\Local\Mozilla\Firefox\Profiles\YYY.default
    • C:\Users\XXX\AppData\Roaming\Mozilla\Firefox\Profiles\YYY.default
  • chromeフォルダに配置するuserChrome.cssの文字コードをUTF-8にする。

chromeフォルダにuserChrome.cssを作ってその中にUTF-8で次を記述した。

menuitem[label="他のタブをすべて閉じる"]
, menuitem[label="下のタブをすべて閉じる"]
, menuitem[label="すべてのタブを再読み込み"]
, menuitem[label="すべてのタブをブックマーク"]
{
    display: none !important;
}

[soft][howto] Firefoxのプロファイルフォルダを楽に開く方法

Firefoxの「ヘルプ」メニューにある「トラブルシューティング情報」をクリックして表示される画面に「プロファイルフォルダ」という欄があってそこにある「フォルダを開く」ボタンをクリックするとプロファイルフォルダを開ける。


2021年10月19日(火)

[c++] std::from_charsで文字列を整数に変換

C++で文字列を数値に変換するには<string>ヘッダのstoi()などが使えるが、C++17からは<charconv>のfrom_chars()もある。後者の方が高速。

from_charsで文字列を整数へ変換するのサンプルをメモしておく。本当はdoubleへ変換したいのだけれど、GCCはバージョン11までdoubleへの変換が未実装みたい。VC++なら対応している。

  • 数字の前に空白や「+」があるとエラーになる所がstoiの動作と異なるので注意。空白などを勝手に処理しない所が利点でもある。
  • 数字の後ろに非数字があってもエラーにはならない。これはstoiと同じ。非数字があるかどうかは判別可能。
  • 戻り値の解釈が分かりにくいのでメモ。
    • ptrは非数字が最初に現れる位置を指す。
    • ecは数値を得られているならデフォルト値(errc{})、得られていないならinvalid_argumentかresult_out_of_rangeのどちらかになる。
  • 下のサンプルのto_i()は末尾に非数字があるケースをエラー扱いしていることに注意。
#include <charconv>
#include <iostream>
#include <sstream>
#include <string_view>
#include <system_error>

int to_i(std::string_view sv)
{
  int i = 0;
  const auto last = sv.data() + sv.size();
  const auto [ptr, ec] = std::from_chars(sv.data(), last, i);

  if (ec == std::errc{} && ptr == last) return i;

  std::ostringstream oss;
  oss << "error: value=" << i << ", suffix='" << std::string{ptr, last} << "'";

  if (ec == std::errc{}) {
    throw std::runtime_error(oss.str());
  } else {
    throw std::system_error(std::make_error_code(ec), oss.str());
  }
}

void call(std::string_view sv)
{
  std::cout << "'" << sv << "'" << " --> ";
  try {
    const auto i = to_i(sv);
    std::cout << "ok: " << i << std::endl;
  } catch (std::exception& e) {
    std::cout << e.what() << std::endl;
  }
}

int main()
{
  call("-0123");
  call("0123456789012345678901234567890123456789a");
  call("+0123");
  call(" 0123");
  call("0123a");
  call("0123 ");
}
'-0123' --> ok: -123
'0123456789012345678901234567890123456789a' --> error: value=0, suffix='a': Numerical result out of range
'+0123' --> error: value=0, suffix='+0123': Invalid argument
' 0123' --> error: value=0, suffix=' 0123': Invalid argument
'0123a' --> error: value=123, suffix='a'
'0123 ' --> error: value=123, suffix=' '