たけまるの日記

たけまるの日記です。web関係の技術ネタが多いですが、好きなことを適当に書いています。

Windows11でRDP接続をすると切れる(WiFI EAP認証のケース)

Windows11のWindowsUpdateが走ったあとから、リモートデスクトップで接続できなくなる現象が発生しました。 挙動を見ていると、どうもRDPログインすると一度ネットワーク接続が切れる現象が起きている模様。 なんだこれと思って色々みていると、現象が発生している環境はWi-FiEAP認証(エンタープライズ認証)であり、この認証情報はWindowsのOSではなくユーザーと紐づいているので、ユーザーのログイン状況が変化すると切れるという事らしい。

これは、WiFiのネットワークデバイスの設定の802.1Xの設定で「資格情報の保存」をすると解消できました。 (一度保存すると「資格情報の置換」の表示になる) これでWiFi-EAP認証のユーザー情報を、OSのユーザーではなくてOS自体に紐づける操作だと解釈しました。

資格情報の保存
しかし今まではこの環境で問題なくRDPできていたのに、なんで急にできなくなったんだろう。。 WindowsUpdateで急に挙動変わるのやめてほしいですね。

eSIM設定してるiPhone11を修理したら再設定に2200円かかった話

iPhone11を使っています。 iPhoneXから11に機種変したときの1つの楽しみが、eSIMが使える事でした。 eSIMは、一般的に使われている物理的なSIMカードを使うこと無く、電子的にSIMと同じ機能を果たす仕組みです。(多分)

1つの端末で2契約を使えるという事で、1回線は通常のキャリアSIMを電話用に、1回線はパケット通信用に格安MVMOを、というような事ができます。

昔から中華製端末などではできたようですが、1台のスマホに2つSIMが入るというのを初体験したくてウズウズしてました。 日本でeSIMを自由に使えるのはIIJのみですので、これを普通に契約して使っていました。

f:id:takemaru123:20200123231421j:plain

順調にそのような運用をしていたのですが、先日うっかりiPhone11の画面を割ってしまい、AppleStore持ち込みで修理しました。 当初は画面のみの交換でデータはそのままという話だったのですが、やはり交換してみたところ不具合が見つかって全交換となりました。

最初から全交換を見込んでいたので各種データのバックアップやモバイルSuicaの移行などは恙無く完了しました。

さて悲劇はここから。 eSIMを機種変更するのは初めてでした。

結論から言うと、機種変更するのはIIJにeSIM再発行手数料として2200円払う必要があります。 電話番号も変わります。(eSIMはデータ通信しかできないので事実上問題無いですが。)

https://help.iijmio.jp/s/article/000002406 f:id:takemaru123:20200123231319p:plain

しょうがないので指示通り再発行の手続きをしました。 Webの画面から簡単にでき、操作完了から5分後くらいにeSIM登録用のアクティベーションコードがメールで送られてきました。

f:id:takemaru123:20200123232135p:plain f:id:takemaru123:20200123231521j:plain

それを設定しようやく元通り。 めでたしめでたし。

eSIM面白いなと思って飛びついたのですが、今回のように修理のようなケースのみならず、単純に機種変更の場合でもeSIM再発行手数料がかかってしまうというのは覚えておかねばならないと思いました。

AWS LambdaでPHP動かしてみた

やること

何を書こうか頭を捻っていたのですが、ちょうど良くネタが降ってきたので便乗してみます。

re:Invent 2019 で発表された製品・機能一覧 | AWS

昨今サーバーレスアーキテクチャという言葉を聞くようになりました。 従来は何らかのサービスを提供するためには、いつでもリクエストを処理できるようサーバーを常時起動させておく必要がありました。 サーバーレスアーキテクチャではリクエストが発生してからコンピュータリソースが割り当てられるため、用意していたリソースが使われずに無駄になるという事がなくなる、といった仕組みです。 たとえばVPSを1台借りていれば月額いくらという料金がかかりますが、仮に1度もリクエストが無くても料金が発生します。 サーバーレスアーキテクチャであればリクエストの量に応じて課金になるため、無駄が発生しにくくなるわけです。 また、サーバーというサイズの決まった箱を用意しなくて済むので、急激なサービス拡大によってリクエスト量が増えても対応しやすい、というメリットもあります。

LambdaはAWS(AmazonWebServices)が提供する、サーバーレスアーキテクチャを実現するサービスです。 対応している言語が限られていましたが、先日ついにPHPも利用できるようになり、PHPerのワイ大歓喜といったところでございます。

今回は簡単なPHPプログラムをLambdaにデプロイし、動作を確認するところまでをやってみました。

環境

  • macos 10.13.6
  • AWSのアカウントを用意しておく

事前準備

AWS CLIのインストール

$ brew install awscli
$ aws --version
aws-cli/1.16.60 Python/3.7.1 Darwin/17.7.0 botocore/1.12.50
$ aws configure
※Credentialsの設定をする

AWS SAM CLIのインストール

$ brew tap aws/tap
$ brew install aws-sam-cli
$ sam --version
SAM CLI, version 0.8.1

S3バケット作成(パッケージをデプロイするのに使う)

$ aws s3 mb s3://takemaru-lambda-test

コンテンツの準備

基本的には

github.com

の内容そのままですw

適当なディレクトリを作成します

$ mkdir -p test-lambda-php/src/php
$ cd test-lambda-php

template.yaml ファイルを作成します

AWSTemplateFormatVersion: 2010-09-09
Description: My PHP Application
Transform: AWS::Serverless-2016-10-31
Resources:
  phpserver:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub ${AWS::StackName}-phpserver
      Description: PHP Webserver
      CodeUri: src/php
      Runtime: provided
      Handler: index.php
      MemorySize: 3008
      Timeout: 30
      Tracing: Active
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:887080169480:layer:php71:4
      Events:
        api:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: ANY

実行するPHPプログラムを用意します

今回は超無難にphpinfo()を動かすことに

src/php/index.php

<?php
phpinfo();

こんな感じのディレクトリ構造になりました

.
├── template.yaml
└── src
    └── php
        └── index.php

次に作成した内容をパッケージ化しデプロイします

$ sam package \
    --template-file template.yaml \
    --output-template-file serverless-output.yaml \
    --s3-bucket takemaru-lambda-test

$ sam deploy \
    --template-file serverless-output.yaml \
    --stack-name testlambda2 \
    --capabilities CAPABILITY_IAM

無事済んだらAWSコンソールのAPI Gatewayダッシュボードを確認し、APIのエンドポイントURLを確認します

https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/index

アクセスしてphpinfo()の画面が出れば成功です

f:id:takemaru123:20181206000945p:plain

まとめ

本当はもう少しいろいろやりたかったのですが、環境構築に手間取り時間がなくなってしまいました。

実際動かしてわかったのですが、最初はCakePHPでも動かしてみるかと思ったのですが、mbstring等の必要なライブラリが入っておらずそのままでは動かなそうです。

このあたりが今後の課題だと思いますが、折角ですので徐々に実案件でも使えるようにしていきたいと思います!

参考

github.com

wp-kyoto.net

qiita.com

LibreOffice calcのグラフ背景画像に任意の画像を設定しようとしてクソハマったからメモ

Draw起動してそっちから画像Importしろってよ。。 Calcの設定画面を隅から隅まで探していたのにどういうこっちゃ。。

superuser.com

PHPのDOMDocument::loadHTML()がHTMLエンティティを変換してしまう件(未解決)

あえてHTMLエンティティのまま読み込んでそのまま出力してもらいたいのだけど、loadHTML()が勝手にもとに戻してしまい、これが元で意図した動作になってくれない。

この問題はこのへんでも論じられているが、解決はしていないみたいです。

stackoverflow.com

調べてみると、これの内部処理はlibxmlが行っている模様。 で、libxmlのドキュメントを読むとこの動作を制御するためのxmlSubstituteEntitiesDefault()というのが用意されているみたい。

http://xmlsoft.org/entities.htmlxmlsoft.org

でもPHPからこの関数を叩く方法が用意されていない…。 一応要望は出されているみたいだけど、2002年から放置なので対応する気はなさそう。

https://bugs.php.net/bug.php?id=15145bugs.php.net

こんなん見ても無いもんはないw

github.com

これはもうどうにもならんので他の方法を考えることにします。。

AWS EC2(CentOS)のストレージ拡張

AmazonLinuxではなくてCentOS6です。 AmazonLinuxではオンラインで拡張できるようですが、CentOSの場合は1度OSリブートする必要があります。

AWSマネージメントコンソールからELBをリサイズ

# cat /etc/redhat-release 
CentOS release 6.6 (Final)

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0   8G  0 part /

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.0G  1.5G  81% /
tmpfs           498M     0  498M   0% /dev/shm

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -i epel-release-6-8.noarch.rpm
# yum install dracut-modules-growroot

# dracut --force --add growroot /boot/initramfs-$(uname -r).img
# reboot

再起動後

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0  20G  0 part /

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  5.9G   13G  32% /
tmpfs           498M     0  498M   0% /dev/shm

再起動したら拡張が適用されてました。 resize2fsが必要だと思っていたのだけどなんでだろう…。

LINEモバイルを早速検証、年齢認証も突破!

いよいよ始まりましたLINEモバイル。 これはあのLINEがはじめたMVMO、所謂格安SIMサービスです。

メインとなるプランは月額500円で1GBの通信ができるプランです。 特徴はなんといっても、LINEとの通信は容量カウントされないという事です。 LINEでの通信がメインの人にはこれ以上のプランはないでしょう。

更に特徴となるのが、LINEの年齢認証を突破できる事です。 いままでは格安SIMではLINEの年齢認証を突破できなかったのでこれは大きな利点です。 年齢認証が通らないとID検索ができませんので、中々不便でした。

そんなLINEモバイルの申込はこちらからできます。

現在のところ初回販売2万契約限定との事ですが、現時点ではまだ申込ができるようです。

そんなわけで昨日9/7、早速申し込んでみました。 サイトから各種情報を入力、身分証のアップロード、カードの登録等行います。

そして本日9/8、早くもSIMが届きました!

f:id:takemaru123:20160908141535j:plain

早速試してみました。 使っている端末はドコモ版iPhone5cです。

f:id:takemaru123:20160908141657j:plain

ちなみに今まで使っていたSIMはIIJmioです。 格安で安定していることで有名ですので、特にLINEに拘らないならオススメです。

IIJmioのSIMはまんまdocomoのものだったのですが、 LINEモバイルのものはdocomoのロゴは無いようです。

f:id:takemaru123:20160908141754j:plain

付属の説明書に従ってAPN構成プロファイルをダウンロード、インストールします。 この端末ではすでにIIJmioのプロフィールが入っていたため、予め削除するという操作が必要でした。

f:id:takemaru123:20160908141908j:plain

インストールすると問題なく通信できるようになりました。 キャリア表示も「docomo LTE」となっています。

f:id:takemaru123:20160908141924j:plain

LINEの年齢認証を突破してみる

さて本題です。

まずLINEを立ち上げ、IDの設定自体は済んでいます。 ここから「IDで友だち追加を許可」をしようとすると、今まではキャリア認証ができず有効にできませんでした。

今回ためしてみると、「LINEモバイルをご契約の方」という項目が増え、進めるようになっています。

f:id:takemaru123:20160908142406j:plain

そこで「利用コード」というのを入力する必要があります。

f:id:takemaru123:20160908142810j:plain

これ最初は悩んだのですが、LINEモバイルのサイトにログインすると利用コードが表示されていました。 こちらを登録することで次へ進めます。

f:id:takemaru123:20160908143432p:plain

あとは画面の指示通りに進むことで、年齢認証をクリアし、無事「IDで友だち追加を許可」を有効にすることにできました!

f:id:takemaru123:20160908143013j:plain f:id:takemaru123:20160908142507j:plain

如何でしたでしょうか。 月500円でIDが使える状態のLINEを使えるのはすごくお得だと思います。 最近普通のキャリアでスマフォを買うと月額がやたら高いですので、これらをうまく活用して節約していきたいですね!