Delphi/C++BuilderのVCLでPageControlをタブ抜きで使う
Delphi/C++BuidlerでVCLでアプリ作るときにPageControlを使うとタブでメニューを切り替えるような設定メニューを提供するのに便利だが、Windows10的なデザインにはそぐわないので、SplitView でメニュー表示しつつ PageContrtol で表示を切り替えることを考えた。
そういう場合に PageControl 自体が描画するタブは不要なので、消す場合のメモ。
PageControl.Pages[].TabVisible をすべて False にする。これでタブ部分と PageControl 内の TabSheets がすべて消える。
表示したいタブを PageControl..ActivePageIndex に指定すれば、そのタブだけが描画される。
Google Spreadsheet のデータをタブ区切りテキストなどの形式でダウンロードする
自分用のメモ
Google Spreadsheetのデータを他のアプリで取り扱いたい場合の最もスタンダードな方法はGoogle の API経由で取得する方法だと思います。
しかし、片手間で自分用に作るアプリから参照するデータソースとして Google の API を真面目に実装してデータ取得するのは少々めんどくさい気分になります。
そこで「外部に漏れても構わないデータ」であることを前提として、Google Spreadsheet のデータをタブ区切りテキストなどのフォーマットでアプリケーションにダウンロードすることを試みます。
こんな形式でダウンロードできる
ざっと試してみると、こんな感じにURL変換すればダウンロードできます。文書を「リンクを知っている全員が閲覧可」にしておけば認証無しで取得できます。
形式 | URL |
---|---|
元データ | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/edit#gid=GID |
Excel(xlsx) | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=xlsx&gid=GID |
ods | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=ods&gid=GID |
https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=pdf&gid=GID | |
CSV | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=csv&gid=GID |
TSV | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=tsv&gid=GID |
HTML | https://docs.google.com/spreadsheets/d/DOCUMENT_ID/export?format=zip&gid=GID |
あるいは、Google にログイン済みのブラウザで開くことでもダウンロードできます。
正規表現でASCII文字の記号にマッチさせる
データの集合からASCII文字の記号を除外する必要が出てきたのでパターンマッチを忘備録として記す。
このパターンマッチは [!-/:-@[-`{-~] と書ける。
これは以下の4つの範囲指定から成る。
範囲 | 対象文字 | パターンマッチ指定 |
---|---|---|
0x21 - 0x2F | !“#$%&‘()*+,-./ | !-/ |
0x3A - 0x40 | :;<=>?@ | :-@ |
0x5B - 0x60 | [¥]^_` | [-` |
0x7B - 0x7E | { | }~ | {-~ |
ただし正規表現に慣れてない方向けには [!-/]|[:-@]|[[-`]|[{-~]
と書いてあるほうが読みやすいかもしれない。
WindowsでProxy利用のon/offを切り替える処理をPowerShellで書く
……というタイトルの記事ですが、オリジナルの実装を自力で書くのではなく、以下のページの内容をありがたく使わせていただきます。
http://www.hsyntt.com/changing-proxy-server-settings-for-internet-explorer-using-powershell/
しかし上記のサイトはこの記事の時点では停止している(どうやら、DNSにレコードがない?)ようなので、やむを得ず、Wayback machine からサルベージを試みたのが以下のコードです。
自分の環境では、これを enable_disable_proxy_to_localhost_8080.ps1 という名前で保存して使っています。
このコードは実行するごとに自ホスト上の 8080 を proxy として使ったり、設定を無効にしたりできるので大変便利に使えます。
接続先の情報は NewProxy に記述しておけばOKです。
$regKey="HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" #Change Ip:Port to your Proxy Address: $NewProxy = "127.0.0.1:8080" #Gets the actual value of the proxy setting $ActualProxy = Get-ItemProperty -path $regKey ProxyServer -ErrorAction SilentlyContinue #Thanks to Aymeric Mouillé from blog.msdn.microsoft.com for those lines of code, I did some modifications on them #Enables Proxy and changes Value, if Proxy is disabled if([string]::IsNullOrEmpty($ActualProxy)) { Set-ItemProperty -path $regKey ProxyEnable -value 1 Set-ItemProperty -path $regKey ProxyServer -value $NewProxy Write-Host Proxy is now enabled Write-Host New Value: $NewProxy } #Disables Proxy and deletes Value, if Proxy is enabled else { Set-ItemProperty -path $regKey ProxyEnable -value 0 Remove-ItemProperty -path $regKey -name ProxyServer Write-Host Proxy is now disabled Write-Host Value has been deleted } #The following lines of Code prevents you from restarting I.E.. Otherwise you had to restart I.E. in order to take the registry changes #Thanks to jvdp81 from blog.msdn.microsoft.com for those lines of code $source=@" [DllImport("wininet.dll")] public static extern bool InternetSetOption(int hInternet, int dwOption, int lpBuffer, int dwBufferLength); "@ #Create type from source $wininet = Add-Type -memberDefinition $source -passthru -name InternetSettings #INTERNET_OPTION_PROXY_SETTINGS_CHANGED $wininet::InternetSetOption([IntPtr]::Zero, 95, [IntPtr]::Zero, 0)|out-null #INTERNET_OPTION_REFRESH $wininet::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0)|out-null Read-Host Press Enter to close
iPhone7のモバイルSuciaで2017年9月末から新幹線にチケットレス乗車できる(ただしエクスプレス予約を除く?)
今月末(2017年9月)からは、SuicaやPASMOなどの交通系ICカードを使って東海道山陽新幹線にチケットレス乗車できるスマートEXが始まります。
このサービスは専用のサイトで会員登録することで東京-博多間の新幹線をオンラインでチケット予約できるようになり、なおかつ手持ちのSuica, PASMO等を登録するとチケットレス乗車もできる、というサービスです。しかもスマートEXの利用に年会費は不要です。
そして乗車直前(正確には乗車券受け取り前またはチケットレスで改札を通過する前)までは予約変更がインターネット経由で行えます。今まではみどりの窓口や券売機で切符を買っていた方は今後はスマートEXに移行したほうが利便性が上がりますね。
さて、このサービスについて調べているときに、興味深い情報を見つけました。それは iPhone7 や Apple Watch の Suica がスマートEXのチケットレス乗車に利用できる、というものです。
これがなぜ興味深いかといいますと、スマートEXの上位サービスであるエクスプレス予約では、現時点(2017年9月初旬)では iPhone, Apple Watch のモバイルSuicaを東海道山陽新幹線にチケットレス乗車に利用することはできないからです。
現状でモバイルSuicaで東海道山陽新幹線にチケットレス乗車するには、以下の条件を満たすことが必要です。
なんだかわかりづらい話になるので表にまとめてみました。
クレジットカード | 利用可能なチケットレス乗車サービス | 乗車方法 | iPhone/Apple WatchのSuica対応 | 通常の乗車料金 |
---|---|---|---|---|
一般のクレジットカード | スマートEX(年会費不要) | 手持ちのSuica, PASMO | 利用できる | 通常の片道運賃より200円安い |
一般のクレジットカード | エクスプレス予約(旧プラスEXからの統合、年会費 1,080円) | 専用のICカード | 利用できない | 最大で1,480円安い |
JR東海エクスプレスカードまたはJ-WESTカード | エクスプレス予約(クレジットカードに付帯、年会費不要) | 専用のICカード | 利用できない | 最大で1,480円安い |
ビューカード | エクスプレス予約(年会費 1,080円、ビューエクスプレス特約) | モバイルSuica | 利用できない(Android、フィーチャーフォンのモバイルSuica は利用可能) | 最大で1,480円安い |
ビューカードや一般のクレジットカードでエクスプレス予約を利用する方は年会費を負担しているにもかかわらず、年会費無料のスマートEXよりも低いサービスレベルのように見えてしまいます。料金面ではエクスプレス予約の方が割引が大きいのですけど、東海道新幹線の利用客のうち業務(出張)利用は多いでしょうから、そういう方はスマートEXにしたほうがモバイルSuicaで乗車できて便利そうです。
このあたり、なんとかならないものですかねえ。そもそも専用のICカードが必要というのが今の時代にはそぐわないので、エクスプレス予約でも手持ちのICカードで乗車できるようになってほしいものですが。
※2017年10月13日追記:2017年10月23日のSuicaアプリケーションのアップデートにより、エクスプレス予約でもiPhoneのモバイルSuicaをIC乗車券として利用できるようになるそうです。
mac版のESET Cyber Security Pro を再インストールするとOSがフリーズする現象が出て難儀中...
私のMacbookは2012年に購入したものをOSバージョンアップを続けて使ってきたのですが、最近になって accountsd の Warinng が頻発するなど、マイナートラブルが出るようになってきました。
そこでSSDを綺麗にしたのち、TimeMachineのフルバックアップから復元してみました。
TimeMachineのフルバックアップからの復元は大変カンタンに行えたのですが、どうも復元後の AntiVirus 系の動きがおかしい。
AntiVirusには ESET Cyber Security Pro という製品を使っているのですが、こいつが有効な状態だと一部のサイトに接続できない事象が出ました。
そこで ESET Cyber Security Pro をアンインストールし、再度インストールしてみることにしました。
アンインストールの手順は基本的にココに出ている通りなのですが、要するに「インストール用のパッケージに含まれるアンインストーラを実行する」という作業を行います。
その後、普通にインストールを試みたのですが、インストール完了後に「サーバとの通信エラー」が出てインストールが不完全な形で完了してしまいます。
この状態でOS再起動すると、macOSへのログイン後にいくつかの機能がフリーズしてしまい、実質的に使えない状態に。
こういう場合に取りうる方法は、セーフブート、SMCリセット、NVRAMリセットだと思うので順番に試してみたのですが、セーフブートだとフリーズは起きないので ESET の機能が何かと conflict している可能性は非常に高い。SMCリセット、NVRAMリセットは効果が確認できず。
まあとにかくセーフブートだとフリーズしないので、止むを得ずセーフブートでアンインストーラを実行して ESET を消してみたら、その後は普通に使えるようになりました。
当面はこれで様子を見つつ、なんとかして ESET が再度動くようにしないと、とても困ります。。。
「ニューヨーク野口英世記念会」が主催する墓前祭に野口医学研究所は関わっていないのだろうか?
めずらしく2日続けて野口医学研究所ネタ。
ニューヨーク野口英世記念会が命日に墓前祭を行っているという話を見つけたので、すこし掘り下げてみる。
まずは Google で “野口英世 墓前祭” のキーワードで検索してみると、ニューヨーク野口英世記念会が主催する墓前祭が命日の5月21日に行われている件の記事が色々出てくる。 野口英世 墓前祭 - Google 検索
ニューヨーク野口英世記念会の名前は今回初めて耳にしたのでちょいと調べてみたが、残念ながら自組織のWebページを持っていないようで、一次情報はない。ただしその他のページを調べていくと、基本的には以下の2つを主な活動目標としているらしい。
(1) ニューヨーク在住の日系・日本人の手によって責任をもって野口英世の墓を守り、手入れを施し、博士の偉業と遺徳を長く後世に伝えてまいります。
(2)米国で医師を目指す青少年、特に日本人の若き研究者を応援し、彼らが将来、野口博士が歩んだ同じ日米の懸け橋となれるよう、その育成と支援に努めます。
ちゃんとしてるっぽい。そして (2) の目標のために、今後は奨学金制度を創設するらしい。
細かい話は以下のページを見るのが良さげ。
http://www.jamsnettokyo.org/info/2017/08/post-7.html
さて、ニューヨーク野口英世記念会の活動に野口医学研究所が何か関わっていないかなあと思いつつ調べてみるが、ざっと調べた限りでは全く関連が見当たらない。
野口医学研究所の新着情報ページはここにあるが、たとえば今年(2017年)の5月の情報はこんな内容だ。
- 2017/05/26 ビジネス交流会2017夏 開催のお知らせ
- 2017/05/15 【ご注意下さい!!】米国財団法人野口医学研究所のマークを付けた偽物が発見されました。
- 2017/05/01 新宿駅東口 パレットビルに ビル看板の掲出を開始しました
ふーむ、5月21日が命日ということを全く気にしてなさげ。アメリカにも事務局や拠点があるなら人を出すなりしても良さげだし、そのような活動を行っていたら当然アピールするはず。しかしめぼしい情報に行き着かないのなら、こういう活動はしていないと考えて良いのかもしれない。
じゃあ、本家本元の「公益財団法人 野口英世記念会」はどうかというと、ご覧のとおりです。
まあ、普通はこうだよねー。
ちなみに野口医学研究所が5月1日付で掲載の「看板出しました」のリリースはPDFで見れるわけだが、この情報はだれに知らせたくて出しているのか、よくわからない。看板の場所がわかったからといって、わざわざ見に行くのは関係者くらいのものだろう。
http://www.noguchi-inc.com/files/news/kanban20170509.pdf
そして看板の内容は、研究所の主要人物と納豆キナーゼその他のサプリメント推し。わかりやすいといえばわかりやすい。
ま、それぞれの組織はそれぞれの目的があって活動しているわけだから、野口医学研究所がこういう活動に関与していなかったとしても問題があるわけじゃないけれど、まあ、どうなんでしょうねえ。