スキップしてメイン コンテンツに移動

投稿

2021の投稿を表示しています

Excel Power Query 英数字の全角から半角への変換

最近仕事上でExcelのPower Queryを始めました。しかし、英数字の全角から半角への変換関数がないため、下記のサイトを参考して、 作っちゃいました。  https://qiita.com/baku2san/items/8041d0259fe0db680e7e https://www.yoheim.net/blog.php?q=20191101 (original as text) as text =&gt; let    originalText = Text.Combine({original, ""}),    replaceResult =  Web.Page("<script>var originalText="&"'"&originalText&"'"&";var result=originalText.replace(/[A-Za-z0-9]/g, function(s) {return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);});document.write(result);</script>")       [Data]{0}[Children]{0}[Children],    result = if (List.Count(replaceResult) &lt;= 1) then    {        "" as text // 変換して何も残らない場合    } else if (replaceResult{1}[Text]{0} = null) then    {       originalText   as text// 何も見つからない場合    }  else {       replaceResult{1}[Text]{0} as text    } in     result{0}  

Jitsi Meetの会議開催状況をログ・ファイルから取得する

  前回 及び 前々回 は閉域網にJitsi Meetの構築を紹介しました。COVID-19感染拡大の影響で院内のビデオ会議によるカンファレンス等のニーズが増えてきました。電子カルテのネットワークに影響を避けるため、Jitsi Meetの利用状況をログファイルから取得するようにしました。 ログファイルのサンプル: Jicofo 2021-09-18 07:52:01.657 情報: [88] org.jitsi.jicofo.xmpp.FocusComponent.log() Focus request for room: test@conference.10.120.8.204 Jicofo 2021-09-18 07:52:01.658 情報: [88] org.jitsi.jicofo.FocusManager.log() Created new focus for test@conference.10.120.8.204@auth.10.120.8.204. Conference count 1,options: channelLastN=-1 enableLipSync=false openSctp=true disableRtx=false  Jicofo 2021-09-18 07:52:01.659 情報: [88] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Joining the room: test@conference.10.120.8.204 Jicofo 2021-09-18 07:52:01.772 情報: [42] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberJoined sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@2c54c4b3 member=ChatMember[test@conference.10.120.8.204/c184dd0e, jid: null]@2049783322] Jicofo 2021-09-18 07:52:01.776 情報

Jitsi Meetの会議開催状況をログ・ファイルから取得する

  前回 及び 前々回 は閉域網にJitsi Meetの構築を紹介しました。COVID-19感染拡大の影響で院内のビデオ会議によるカンファレンス等のニーズが増えてきました。電子カルテのネットワークに影響を避けるため、Jitsi Meetの利用状況をログファイルから取得するようにしました。 ログファイルのサンプル: Jicofo 2021-09-18 07:52:01.657 情報: [88] org.jitsi.jicofo.xmpp.FocusComponent.log() Focus request for room: test@conference.10.120.8.204 Jicofo 2021-09-18 07:52:01.658 情報: [88] org.jitsi.jicofo.FocusManager.log() Created new focus for test@conference.10.120.8.204@auth.10.120.8.204. Conference count 1,options: channelLastN=-1 enableLipSync=false openSctp=true disableRtx=false  Jicofo 2021-09-18 07:52:01.659 情報: [88] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Joining the room: test@conference.10.120.8.204 Jicofo 2021-09-18 07:52:01.772 情報: [42] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberJoined sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@2c54c4b3 member=ChatMember[test@conference.10.120.8.204/c184dd0e, jid: null]@2049783322] Jicofo 2021-09-18 07:52:01.776 情報

apacheのアクセスログから、特定のページのIP別のページビュー数とIPのWhois情報の取得

 単純にいうとコマンド一行でいけます。中身はやや複雑ですが、こんな感じです。 echo "ip,hostname,country,region,city,organization,location,postal,timezone,count" >ipwhois.csv; for var in `sudo cat /var/log/apache2/access.log /var/log/apache2/access.log.1 | grep myhppage.html | gawk '{print $1}' | sort | uniq -c| gawk '{print $1 "," $2}'`;do arr=($(echo $var | tr "," " ")); ip=${arr[1]} ;echo `curl ipinfo.io/${ip}?token=xxxxxxxxxx | jq -r '[.ip,.hostname,.country,.region,.city,.org,.loc,.postal,.timezone]|@csv'`,${arr[0]};done >> ipwhois.csv 1.echo でタイトル行を ipwhois.csvに書き込む 2.アクセスログ・ファイル、access.logとaccess.log.1を標準出力に出してgrepで絞り込み、gawkでIPを取り出す。 3.取り出したIPをsortして、uniqでカウントして、gawkでカウント数とIPアドレスをカマンで結合する 4.結合したものをvarという変数にいれて、do ループに入る。 5.do ループはtrでカンマをスペースに置き換え、arr配列を作り出す。 6.$ip変数はcurlのipinfo.ioサイトに渡してjsonのwhois情報を取得し、jqでcsvに変換する。 7、変換したcsvの後ろにarr配列に確認しているカウント数と結合してipwhois.csvに追記して完成する

apacheのアクセスログから、特定のページのIP別のページビュー数とIPのWhois情報の取得

 単純にいうとコマンド一行でいけます。中身はやや複雑ですが、こんな感じです。 echo "ip,hostname,country,region,city,organization,location,postal,timezone,count" >ipwhois.csv; for var in `sudo cat /var/log/apache2/access.log /var/log/apache2/access.log.1 | grep myhppage.html | gawk '{print $1}' | sort | uniq -c| gawk '{print $1 "," $2}'`;do arr=($(echo $var | tr "," " ")); ip=${arr[1]} ;echo `curl ipinfo.io/${ip}?token=xxxxxxxxxx | jq -r '[.ip,.hostname,.country,.region,.city,.org,.loc,.postal,.timezone]|@csv'`,${arr[0]};done >> ipwhois.csv 1.echo でタイトル行を ipwhois.csvに書き込む 2.アクセスログ・ファイル、access.logとaccess.log.1を標準出力に出してgrepで絞り込み、gawkでIPを取り出す。 3.取り出したIPをsortして、uniqでカウントして、gawkでカウント数とIPアドレスをカマンで結合する 4.結合したものをvarという変数にいれて、do ループに入る。 5.do ループはtrでカンマをスペースに置き換え、arr配列を作り出す。 6.$ip変数はcurlのipinfo.ioサイトに渡してjsonのwhois情報を取得し、jqでcsvに変換する。 7、変換したcsvの後ろにarr配列に確認しているカウント数と結合してipwhois.csvに追記して完成する

Redmine 4.1.1-5 Textile の外部リンクを新しいタブで開く

\Bitnami\redmine-4.1.1-5\apps\redmine\htdocs\lib\redmine\wiki_formatting\textile にある、redcloth3.rb の850行目を下記のように   target='_blank' を追加して、Redmineを再起動してください。             "#{pre}<a#{atts}#{external} target='_blank' >#{text}</a>#{post}"

Redmine 4.1.1-5 Textile の外部リンクを新しいタブで開く

\Bitnami\redmine-4.1.1-5\apps\redmine\htdocs\lib\redmine\wiki_formatting\textile にある、redcloth3.rb の850行目を下記のように   target='_blank' を追加して、Redmineを再起動してください。             "#{pre}<a#{atts}#{external} target='_blank' >#{text}</a>#{post}"

plantuml node procedure アーキテクチャ図の部品化

 最近よくアーキテクチャ図を描くようになりました。 一々Node名とリンクやIP、データベースの設定するのもいいのですが、 Node数が多すぎると大変な作業になります。そこで、plantumlのprocedureを作れました。 他の部品も同じ方法で作れますので、興味ある方はご参考ください。 SVG画像 @startuml !procedure $node($alias, $name="mynode",$ip="", $database="", $namelink="", $dbtype="", $dblink="", $fontsize=14, $color="#bafcc8") !include skinparam node { backgroundColor $color FontSize $size } !if ($namelink != "") !$name = "[[" + $namelink + " " + $name + "]]" !endif !if ($ip != "") !$name = $name + "\n(" + $ip + ")" !endif node "$name" <<$archimate/technology-node>> as $alias { !if ($database != "") !$dbalias = $alias + "DB" !if ($dblink != "") !$database = "[[" + $dblink + " " + $database + &q

plantuml node procedure アーキテクチャ図の部品化

 最近よくアーキテクチャ図を描くようになりました。 一々Node名とリンクやIP、データベースの設定するのもいいのですが、 Node数が多すぎると大変な作業になります。そこで、plantumlのprocedureを作れました。 他の部品も同じ方法で作れますので、興味ある方はご参考ください。 SVG画像 @startuml !procedure $node($alias, $name="mynode",$ip="", $database="", $namelink="", $dbtype="", $dblink="", $fontsize=14, $color="#bafcc8") !include skinparam node { backgroundColor $color FontSize $size } !if ($namelink != "") !$name = "[[" + $namelink + " " + $name + "]]" !endif !if ($ip != "") !$name = $name + "\n(" + $ip + ")" !endif node "$name" <<$archimate/technology-node>> as $alias { !if ($database != "") !$dbalias = $alias + "DB" !if ($dblink != "") !$database = "[[" + $dblink + " " + $databas

見に行く時代から見せてくる時代に、 メールからChatworkへ システムからの自己診断申告

【件名】 Login Report from WWW 【本文】 Login Report from WWW about yesterday - Fri 13 Aug 2021. Aug 13 13:48:43 w********* from *.*.*.* Aug 13 14:22:05 w2******** from *.*.*.* Aug 13 14:22:38 w2******** from *.*.*.* Aug 13 14:22:51 w2******** from *.*.*.* Aug 13 14:23:02 w2******** from *.*.*.* これは毎日病院ホームページサーバがPerlプログラムでログインログを探って何方がいつログインしたのを知らせてくれたメール内容です。 メールは仕事のメールもあれば、どうでもいいメールマガジンや宣伝や通知メールが沢山送ってくるし、スパムメールも少なくないですよね。 ChatworkのAPI(他のSNSも可能でしょうね)を使えば、送ってほしいルームに知らせてくれます。大事ではないシステムでも未読を0にすれば、うるさくもないし、かなりいい感じですよ。無償のアカウントは最大7グループに制限されていますが、各システムと二人きりのコンタクトルームをいくらでも作れますよ。(Chatworkさんに知られたら怒られるかもしれませんが。。。) 下記のようなコマンドをLinuxのCronやWindowsのタスクスケジューラーに登録すれば、 一定の時間おきに知らせてくれます。curlはWindows 10 や windows 2019 server 等にも標準搭載のコマンドなので、インストールすらいらないですよ。 curl -X POST -H "X-ChatWorkToken: 自分のAPIトークン" -d "body=Hello+Chatwork%21&self_unread=0" "https://api.chatwork.com/v2/rooms/{room_id}/messages" いま試しに一時間おきに下記のようなSSHトンネルが生きている情報を送ってもらっています。(本当は一行にしたほうがスッキリですが。。。今後なおしま~す!) 2021年

見に行く時代から見せてくる時代に、 メールからChatworkへ システムからの自己診断申告

【件名】 Login Report from WWW 【本文】 Login Report from WWW about yesterday - Fri 13 Aug 2021. Aug 13 13:48:43 w********* from *.*.*.* Aug 13 14:22:05 w2******** from *.*.*.* Aug 13 14:22:38 w2******** from *.*.*.* Aug 13 14:22:51 w2******** from *.*.*.* Aug 13 14:23:02 w2******** from *.*.*.* これは毎日病院ホームページサーバがPerlプログラムでログインログを探って何方がいつログインしたのを知らせてくれたメール内容です。 メールは仕事のメールもあれば、どうでもいいメールマガジンや宣伝や通知メールが沢山送ってくるし、スパムメールも少なくないですよね。 ChatworkのAPI(他のSNSも可能でしょうね)を使えば、送ってほしいルームに知らせてくれます。大事ではないシステムでも未読を0にすれば、うるさくもないし、かなりいい感じですよ。無償のアカウントは最大7グループに制限されていますが、各システムと二人きりのコンタクトルームをいくらでも作れますよ。(Chatworkさんに知られたら怒られるかもしれませんが。。。) 下記のようなコマンドをLinuxのCronやWindowsのタスクスケジューラーに登録すれば、 一定の時間おきに知らせてくれます。curlはWindows 10 や windows 2019 server 等にも標準搭載のコマンドなので、インストールすらいらないですよ。 curl -X POST -H "X-ChatWorkToken: 自分のAPIトークン" -d "body=Hello+Chatwork%21&self_unread=0" "https://api.chatwork.com/v2/rooms/{room_id}/messages" いま試しに一時間おきに下記のようなSSHトンネルが生きている情報を送ってもらっています。(本当は一行にしたほうがスッキリですが。。。今後なおしま~す!) 2021年

2025年度共通テスト 関連リンク

 このリンク集は、Googleアラートに「 2025年度 共通テスト」というキーワードを設定して、毎日通知されたメールを基にまとめたものです。(20210524~) 共通テスト、6教科8科目案検討 熊本日日新聞 2025年以降の国立大入試で課す大学入学共通テストの教科・科目について、国立大学協会が、従来の「5教科7科目」に新教科「情報」を加え ... 英語民間試験、個別入試で導入促す声 共通テスト見送り 日本経済新聞 2025年以降の大学入学共通テストで、英語民間試験の導入が見送られる見通しとなった。文部科学省の大学入試に関する有識者会議の24日の会合 ... 共通テスト、6教科8科目案検討 「情報」追加、25年から 47NEWS 2025年以降の国立大入試で課す大学入学共通テストの教科・科目について、国立大学協会が、従来の「5教科7科目」に新教科「情報」を加えた「6 ... 大学共通テストで「情報」必須化に大きな壁 指導力に地域でばらつき 京都新聞 ... する「情報」。2025年の大学入学共通テストから国立大志望者の「必須教科」とする検討が始まったが、. 京都新聞IDへの会員登録・ログイン. 英語民間試験導入見送りへ 大学共通テスト、文科省会議 日本経済新聞 2025年以降の大学入学共通テストで、文部科学省の有識者会議が英語民間試験の導入見送りを提言する見通しになった。受験機会の格差が生じる ... 国内海外の主要ニュース 南日本新聞 2025年以降の国立大入試で課す大学入学共通テストの教科・科目 ... 22年度から実施される高校の新学習指導要領に合わせ、テストを運営する ... 変革期の荒波をどう乗り越えるか? 全高長新会長に聞く 教育新聞 特に、この新学習指導要領で学んだ生徒が受験することになる2025年実施の大学入学共通テストでは、それに伴い科目構成が変わり、「情報」が新た ... 国立大受験生に「6教科8科目」案 「情報」を追加検討 朝日新聞デジタル 2025年の大学入学共通テストから、国立大学の受験生には原則として「6 ... 各国立大は大学入試センター試験時代の04年から、国語▽地歴・公民▽ ... 国立大受験生に21年ぶり教科・科目追加案 「情報」を検討 Yahoo!ニュース 2025年の大学入学共通テストから、国立大学の受験生には原則とし

2025年度共通テスト 関連リンク

 このリンク集は、Googleアラートに「 2025年度 共通テスト」というキーワードを設定して、毎日通知されたメールを基にまとめたものです。(20210524~) 共通テスト、6教科8科目案検討 熊本日日新聞 2025年以降の国立大入試で課す大学入学共通テストの教科・科目について、国立大学協会が、従来の「5教科7科目」に新教科「情報」を加え ... 英語民間試験、個別入試で導入促す声 共通テスト見送り 日本経済新聞 2025年以降の大学入学共通テストで、英語民間試験の導入が見送られる見通しとなった。文部科学省の大学入試に関する有識者会議の24日の会合 ... 共通テスト、6教科8科目案検討 「情報」追加、25年から 47NEWS 2025年以降の国立大入試で課す大学入学共通テストの教科・科目について、国立大学協会が、従来の「5教科7科目」に新教科「情報」を加えた「6 ... 大学共通テストで「情報」必須化に大きな壁 指導力に地域でばらつき 京都新聞 ... する「情報」。2025年の大学入学共通テストから国立大志望者の「必須教科」とする検討が始まったが、. 京都新聞IDへの会員登録・ログイン. 英語民間試験導入見送りへ 大学共通テスト、文科省会議 日本経済新聞 2025年以降の大学入学共通テストで、文部科学省の有識者会議が英語民間試験の導入見送りを提言する見通しになった。受験機会の格差が生じる ... 国内海外の主要ニュース 南日本新聞 2025年以降の国立大入試で課す大学入学共通テストの教科・科目 ... 22年度から実施される高校の新学習指導要領に合わせ、テストを運営する ... 変革期の荒波をどう乗り越えるか? 全高長新会長に聞く 教育新聞 特に、この新学習指導要領で学んだ生徒が受験することになる2025年実施の大学入学共通テストでは、それに伴い科目構成が変わり、「情報」が新た ... 国立大受験生に「6教科8科目」案 「情報」を追加検討 朝日新聞デジタル 2025年の大学入学共通テストから、国立大学の受験生には原則として「6 ... 各国立大は大学入試センター試験時代の04年から、国語▽地歴・公民▽ ... 国立大受験生に21年ぶり教科・科目追加案 「情報」を検討 Yahoo!ニュース

余裕ですかね。

  いまの自分はやることが多いが、意外と慌てず一歩一歩現場と歩んでいき、地道にデータ入力から可視化までの利便性、完全性と正確性を追求する余裕が出ております。SpotfireというBIツールにハマり、人に使い方を教えながらもまたその恩恵を受けているといういい循環も大きいですね。大体自分のようなポストにいる人たちはあまりプログラムを書く余裕もないだが、自分は幸せのほうと思います。

余裕ですかね。

  いまの自分はやることが多いが、意外と慌てず一歩一歩現場と歩んでいき、地道にデータ入力から可視化までの利便性、完全性と正確性を追求する余裕が出ております。SpotfireというBIツールにハマり、人に使い方を教えながらもまたその恩恵を受けているといういい循環も大きいですね。大体自分のようなポストにいる人たちはあまりプログラムを書く余裕もないだが、自分は幸せのほうと思います。

BIルールで形態素分析:Spotfire + NMecab + Iron Python + DataTable

import clr     clr.AddReferenceToFileAndPath(r"D:/Work/NMecab/bin/LibNMeCab.dll") import System from System import * import NMeCab from NMeCab import * import Spotfire.Dxp.Application from Spotfire.Dxp.Data import * from Spotfire.Dxp.Application.Visuals import VisualContent from System.Collections.Generic import HashSet from System.IO import FileStream, FileMode, File, MemoryStream, SeekOrigin, StreamWriter import System.String from Spotfire.Dxp.Data.Import import TextDataReaderSettings from Spotfire.Dxp.Data.Import import TextFileDataSource def LoadCSV(dataTableName, stream): settings = TextDataReaderSettings() settings.Separator = "," settings.AddColumnNameRow(0) settings.ClearDataTypes(True) settings.SetDataType(0, DataType.String) settings.SetDataType(1, DataType.String) settings.SetDataType(2, DataType.Real) settings.SetDataType(3, DataType.Real) stream.Seek(0, SeekOrigin.Begin) fs = TextFileDataSource(stream, settings) if Document.Data.Ta

BIルールで形態素分析:Spotfire + NMecab + Iron Python + DataTable

import clr     clr.AddReferenceToFileAndPath(r"D:/Work/NMecab/bin/LibNMeCab.dll") import System from System import * import NMeCab from NMeCab import * import Spotfire.Dxp.Application from Spotfire.Dxp.Data import * from Spotfire.Dxp.Application.Visuals import VisualContent from System.Collections.Generic import HashSet from System.IO import FileStream, FileMode, File, MemoryStream, SeekOrigin, StreamWriter import System.String from Spotfire.Dxp.Data.Import import TextDataReaderSettings from Spotfire.Dxp.Data.Import import TextFileDataSource def LoadCSV(dataTableName, stream): settings = TextDataReaderSettings() settings.Separator = "," settings.AddColumnNameRow(0) settings.ClearDataTypes(True) settings.SetDataType(0, DataType.String) settings.SetDataType(1, DataType.String) settings.SetDataType(2, DataType.Real) settings.SetDataType(3, DataType.Real) stream.Seek(0, SeekOrigin.Begin) fs = TextFileDataSource(stream, settings) if Document.Data.Ta

Spotfire からMongoDBのデータを分析する(DPC公開データをサンプルに)

 MongoDBはスキーマを定義しなくても下記のように簡単にコマンド一行でCSVをインポートできます。 C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline 2020-09-01T14:49:28.410+0900    connected to: localhost 2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%) 2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%) 2020-09-01T14:49:30.486+0900    imported 4764 documents MongoDBシェルで二つのコレクションをJOINさせる のもいいのですが、データのJOINに強いBIツール、Spotfireを使えば、複雑なシェルやSqlを書く必要もなくなります。 MongoDBは普通のSqlを使うデータベースのようにBIツールから接続するには、 有償のODBCドライバー もありますが、こちらは 無償のBIコネクター を使います。 ただ、このコネクターは、 MySQL   ODBC   Unicode   Driver に依存しているのと、Mysqlのドライバーのインストールは、 Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ が必要なので、両方も用意しましょう。 MongoDBがインストールされている前提で話を進みたいので、インストールは下記のページを参考してください。個人的にTB単位の外付けSSDをMongoDBを持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで sche

Spotfire からMongoDBのデータを分析する(DPC公開データをサンプルに)

 MongoDBはスキーマを定義しなくても下記のように簡単にコマンド一行でCSVをインポートできます。 C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline 2020-09-01T14:49:28.410+0900    connected to: localhost 2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%) 2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%) 2020-09-01T14:49:30.486+0900    imported 4764 documents MongoDBシェルで二つのコレクションをJOINさせる のもいいのですが、データのJOINに強いBIツール、Spotfireを使えば、複雑なシェルやSqlを書く必要もなくなります。 MongoDBは普通のSqlを使うデータベースのようにBIツールから接続するには、 有償のODBCドライバー もありますが、こちらは 無償のBIコネクター を使います。 ただ、このコネクターは、 MySQL   ODBC   Unicode   Driver に依存しているのと、Mysqlのドライバーのインストールは、 Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ が必要なので、両方も用意しましょう。 MongoDBがインストールされている前提で話を進みたいので、インストールは下記のページを参考してください。個人的にTB単位の外付けSSDをMongoDBを持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで sche