テキストファイルをPowershellで結合しようとしてハマった話
はじめに
大量のテキストファイル(正確には.sqlファイル)の内容を1つにまとめたい場面に遭遇した。流石に100以上のファイルを1つ1つ開いてコピペしていくのは無理があるし時間がもったいない。
なのでPowershellやコマンドプロンプトを利用する方法を調べて試行してみた。最終的には上手く行ったものの、出力ファイルの文字化けでだいぶ苦しんだので備忘のため記録。
試したこと
Powershellで Get-Content & Set-Content を使う
下のサイトのような記事を複数見つけ、Get-Contentを使う方法を初めに試した。
早速Powershellにコマンドを打ち込んでみる。
Get-Content *.sql | Set-Content log.txt
- 結果:UTF-8で開くと割と良い感じだが、ちょいちょい「‥E」のような文字や見たことのない漢字が出現。リンク先には文字化けしないと書いてあるが、そうとも限らないようだ。
Powershellで "type *.sql > out.txt" を実行
- 結果:日本語文字化け
- 補足:Powershellでtypeを使う際、入力ファイル名に*を使う場合、出力ファイルの拡張子は別のものにしておかないと無限ループに陥る。
文字コードを指定してみる
UTF-8で出力するためにコードページ 65001を指定
chcp 65001
- 結果:こうかが ないみたいだ…
他にも、BOM付きなのが悪さをしている気がしていくつか記事を見つけたが、処理内容が理解できない素人が動かすのも怖いので試さずにそっ閉じ。
- 参考
コマンドプロンプトでtypeを使う
あれこれ調べているうちにコマンドプロンプトの存在を思い出す。
type くらいの基本的な(?)コマンドだったらcmdでもできるのでは?
それにPowershellと挙動が若干違うだろうから、もしかすると問題なく動くのでは?
と天啓が降りてきた考えて実行。
type *.sql > log.txt
- 結果:上手く行きました!!!
結論
Powershellでこねくり回すよりもコマンドプロンプトが便利なこともある。
少なくとも「type」はその具体例だった。
auのガラホからpovoへ乗り換えた話
(2023年3月時点の情報です)
ここ6-7年くらいの間、携帯は2台持ちだった。当時はキャリア(au)でスマホ1台持つよりも、(番号&メアド維持の)最低限の契約+mvnoのほうが安かったのだ。
だったのだが、常に2台持ち運ぶのはやっぱり面倒だし、何より数年前の総務省の(圧力)後押しのおかげで、既に料金的なメリットも無くなっていた。あれ、それなら1台にまとめた方が良くね?
ってなわけでpovo回線1つに集約した。ただ、元々auで使っていた端末が端末な(スマホじゃない)だけに少し特殊な方法だった。というか、auやpovoの公式サイトに書いてある方法に従っていては手続きが進まなかった。
同じようなトラブルで悩む人が1人でも減ってほしい。というか公式どうにかしてくれ…
povo移行前の環境
・4Gケータイ(GRATINA KYF31、いわゆる「ガラホ」)…auキャリアメールの維持&通話用。
・iPhone SE(第2世代)…データ通信用。格安SIM(イオンモバイル)。
povo移行後の想定環境
・iPhone SE(第2世代)…povoでデータ通信&通話&SMS。
・4Gケータイ…置物。
最初にやったこと
まずpovoの申し込みページを見た。当然といえば当然だけれど、最重要。親切なことに「auから乗り換えの方へ」という案内があるではないか。
さっそく目を通す。いくつかの注意事項とともに、重要な記載を発見。
「auから変更のお客さまは、MNP予約番号を取得するとお手続きが出来ません。取得済みの方はMNP予約番号のキャンセルが必要です。」
なるほど、auユーザーはMNPでpovoへの乗り換えはできないらしい。代わりに、auユーザー専用の手続きルートが案内されている。要約すると、契約しているau回線でau ID認証を行い、povoの申し込みページに飛ぶようにとの事。ふむふむ。
実際にやってみた
MNP転出できない=転出手続きをしなくて良いなら話は簡単。
ガラホでブラウザを立ち上げpovoにアクセスし、申し込み画面へと進むリンクを押してみる。
ブラウザ「……」
私「……」
ブ「…………」
私「…………」
ブ「……………………」
私「……………………」
一向に画面が切り替わらない!!!(1時間経過) …まあ、こんなこともあるよね(?)
気を取り直し、ブラウザを閉じて初めからやり直す。
ブラウザ「……」
私「……」
ブ「…………」
私「…………」
ブ「……………………」
私「……………………」
改善しない!!!(さらに1時間)
どういうことよ……。
チャットでpovoに問い合わせ
流石にこれは読み込み速度が云々、って問題ではないなと思い、povoのサポートにチャットした。
私「auの4Gケータイユーザーですがpovoの申込手続きに進めません」
povo担当者「どこ(どの端末)からお申し込み手続きをしていますか?」
私「ガラホです。au回線からでないと切り替えの申し込みができないと読んだので…」
p担「あ、ガラホですか。すみませんが、ガラホからではお手続きできません」
私「えっ」
初耳だった。驚いたが、次の言葉にさらなる衝撃を受ける。
担当者「ガラホの方は、MNP予約番号を発行してください」
私「えっっ」
なんですと??
さっき開いたpovoの公式サイトに何と書いてあったっけ?もう一度読み返してみようか。
povo公式サイト「auから変更のお客さまは、MNP予約番号を取得するとお手続きが出来ません。取得済みの方はMNP予約番号のキャンセルが必要です。」
いやいや待ってくれ!おかしいだろ!!
私「auユーザーはMNP不可って書いてありません?」
p担「ガラホの人はMNP使ってください、通常ルートでの手続きは無理です」
私「……左様ですか」
p担「ちなみに、ガラホではpovo回線を使うことはできません」
私「ありがとうございます、iPhoneを使うのでそこは一応OKです」
その後、念のためauにもチャットで問い合わせたところ、povoの人と同様の答えが帰ってきた。つまり、MNP転出をするようにと案内され、私は指示に従った。結局この方法で問題なく手続きが完了しましたとさ。MNP不可とはいったい何だったのか…。
まとめ+α
・auのガラホ(4Gケータイ)からpovoに乗り換える際は、MNPを使ってください
・ガラホでpovoを使うことはできません
・povo回線、昼時もサクサクで快適です(イオンモバイル比)
e-typing スコア記録
みんなおなじみ、e-typingの「腕試しレベルチェック」。
自己ベストの記録は、マイページのトップにデカデカと表示されているので、いつでも(それはもう嫌という程に)思い出させてくれる。
けれど、お題ごとの記録の方が気にならないだろうか。お題ごとの文章のクセによって得意・不得意があるし、スコアの出やすさにもバラツキがあると思っている。でも公式サイトではそれらの記録にアクセスできない。多分。
というわけで、ここに毎週の記録をメモっていくことを思いついた。参加する度に行を追加していこうと思う。まずは更新を続けることに重きをおいて、気が向いたらそのうちお題ごとに整理する方針。
- 第1143回 2023/3/14~2023/3/21「おふくろの味」508 Pt
- 第1144回 2023/3/21~2023/3/28「春の言葉」 531 Pt
- 第1145回 2023/3/28~2023/4/4「慣用句」 465 Pt
- 第1146回 2023/4/4~2023/4/11「元気が出る言葉」 513 Pt
- 第1147回 2023/4/11~2023/4/18「学校にあるもの」 513Pt
※追記(2024/2/10)
uaaaaaaaaさんが便利なツールを作って下さった(!)ので、このページは更新停止します。
【フィッシング注意】三井住友SMBCダイレクトを騙るメール
これは完成度が高いハイレベルなスパムメールだな、と感じるメールを受信した。
メール内容
ハイレベルな点
まず、送信元にSMBCのメールアドレスが表示されている。しかも、このアドレス(SMBC_service@dn.smbc.co.jp)はSMBCが実際に使っているものらしい。*1
次に、メールに含まれているURLは7つあるが、このうち一番上のもの(https://direct.smbc.co.jp.ugovgo.com/ ) は偽物のサイトに繋がるリンクである。一方、なんとそれ以外の6つは、SMBCが運営する本物のサイトへ飛ぶ。お金を騙し取ろうとするスパムメールで「STOP!不正送金被害」のページを案内するとは…。
加えて、メール全体を通しで読んでみても違和感が少なく、いわゆる"怪レい日本语" (怪しい日本語)でないことも特徴的だ。
流石にスパムだろうけれど一旦中身を見ておこうか、と面白半分にメールを開いたものの、思いのほか戸惑ってしまった。
おかしな点
一番上のURLだけ"~co.jp"ドメインではない。余計なものが付いて結局".com"になっている。
また、メールの認証情報には送信元が本物かどうかが確認できないとの記載、さらに、ヘッダーを開くとReturn-Pathの欄に".cn"ドメインのアドレスが入っているのが見て取れる。
ここまでの情報から、中国から送られてきたスパムメールだろうと推測ができる。
他には、企業からの公式のメールであれば、一番下に何かしらの署名(欄)があるはずだよね、とか。
スクショだけ撮ってゴミ箱へ。バイバイ。
スパムかどうか確かめるには
そうは言っても、実際に送られてくると冷静に対処できるか怪しい。そんなときは、短縮URLを展開してくれるサイトや、URLの指すページが怪しくないかをチェックしてくれるサイトがあるので、そこで確かめるのが多分きっと楽。今回はこのサイトを利用した。
今回の怪しいURLを実際に入れてみると、こんな結果が返ってくる。左上の数値が1以上の場合、怪しいサイトである可能性がある。0なら大丈夫、多分。
おまけ
実際どんなサイトなのか気になったので、仮想的にブラウザを動かすサイト(https://www.browserling.com/)で例のURLを踏んでみた。最終的にSMBCの公式ページに飛ばされるっぽいけれど、そこへ飛ぶまで異様に長い時間が掛かるし、裏で何かしらの悪さをされているかも。地雷は敢えて踏みに行く必要は無いし、普通に回避しましょうね。
*1:ただし、リンク先ページの記載を見ると、取引完了時の確認メールで使用されるようであり、メールの内容と合致しない。
PopTyping スコアの計算式と7777粒の攻略
ブラウザ上で遊べるタイピングゲーム、「Popタイピング」の攻略記事です。
スコアの計算方法と、「7777粒」の取り方について解説します。
※がっつりめなネタバレ注意。
typingx0.net
スコア計算について
スコアの上がり方
・1正打ごとに召喚レベルの数だけポップコーンが出現します。現在の召喚レベル50であれば50粒召喚できます。
・その打鍵で召喚レベルが上がった際には、レベルアップ前の召喚レベルが適用されます。例えば、召喚レベルが20→21へとレベルアップした場合、スコアに加算されるのは20粒です。
召喚レベルの上がり方
・N回連続で正しく打鍵すると、N打鍵目ではNだけゲージが溜まります。
ゲームスタートからノーミスで10打鍵した場合、累計で(1+2+...+10=)"55"だけ溜まっています。
・ノーミスのタイプをどんなに続けても、1打鍵で増加するゲージの上限は"100"となります。
・ゲージの長さ(=一番下から一番上まで)は"200"です。(これは召喚レベルがいくつであっても不変)→つまり、レベルを1上げるには最低でも2打鍵必要です。
・ゲージが200を超えると召喚レベルが1上がります。逆に言うと、ゲージが200ぴったりのときにはレベルアップしません。
・結局よく分からん、具体例出して。
→スタートから110回連続で正打すると、累計で(1+2+...+100+10*100=)6050のゲージ量が溜まっており、召喚レベルは([6050/200]+1=)31になっています。(この時のスコアは1168粒。)
ハイスコア戦略
・ミスをすると、正打の連続回数が途切れてゲージの獲得量が再度1から数え直しとなるため、ハイスコアを狙う際には速度を落としてでもノーミスでクリアすることが最重要と考えます。
・ただし、終盤には召喚レベルも十分に上がっているので、ラスト5~10秒程度はミスを気にせずとにかく沢山打つことを意識した方が高得点を狙えるかもしれません。
7777粒達成方法
前置きが長くなりましたが、7777粒を取るために必要なのは以下の5ステップです。
手順
①ノーミスで4タイプ
②1ミスを挟む
③ノーミスでレベル81に到達
④1ミスを挟む
⑤13タイプ(ミス含んでOK)
動画
これで「奇跡」を量産できます。(起きないから奇跡っt
余談:解法ルートの探索について
こういうのって、どういった経路探索を考えれば良いのでしょうか?コードを書こうにも何をすれば良いのか分からず、今回はExcelと手計算で7777粒への1つのルートを導出しています。
解法があればこっそりでも良いので教えて下さい。
【Excel VBA】数値や日付を文字列へ変換する(CStr関数、Str関数)
仕事で久々にExcel VBAを使った際に混乱したので、備忘録として。
概要
数字や日付などの数値を文字列に変換する際の関数が「CStr」と「Str」。ほとんど同じ使い方をするが、若干挙動が異なるため使う際には注意が必要。
構文
それぞれの構文は以下の通り。
- CStr(値)
- Str(値)
値は、Integer型、Long型、Date型、など。
注意点
Str関数を使うと、先頭に半角スペースが入る。
- Str(10) → " 10"
マイナス符号のために用意された枠で、返された結果が正の数であれば省略されるらしい。
一方、CStr関数を用いた場合にはスペースは入らない。
- CStr(10) → "10"
通常はCStr関数を使うのが便利そう。
公式リファレンス
Str関数
Cstr関数