当社はIT技術のオンライン教育を得意としたセミナー専門会社です。 | 一戸英男

ITエンジニアの技術力UPをお約束します。

VirtualBOXのインポート後に起動エラー。VirtualBOXイメージがWindowsのアップデータにより問題が発生。

VirtualBOXのインポート後に起動エラー。VirtualBOXイメージがWindowsのアップデータにより問題が発生。


VirtualBoxイメージがWindowsのアップデータのあたり方によって問題が出てくるようです。 作業している中で、インポート処理まではよかったのですが、起動途中でエラーが出てしまうケースがあり、一体なにが問題なのか?と思っていました。 参考にしたのはこれです。同じ問題に遭遇うした方はかなりいるようで、Windowsの環境により出てしまうようでした。

参考にしたページ 下記を実施して問題が解決しました。バグと言うよりも仕様変更による問題かな。

コントロールパネル > プログラムと機能 > Windows の機能の有効化または無効化よりHyper-V と virtual machine platform のチェックを外して再起動する。
Windows Subsystem for Linux(とおそらくWindows サンドボックス)も無効化する必要がありました。

タグ: , , ,

古いフレームワーク(Cakephp2)でgmail(G suite)経由でメール送る場合にエラー発生 対処方法等


最近のGoogleのセキュリティ対策は相当厳しい。
未だにお客さんの依頼でたまにある事。残念ながら古いフレームワークを使うとOAuth対応とかされていなかったりするので、自分で作るか「セキュリティの低いアプリで連携」になると思う。
ガシガシっとコーディングしてた時代なら自分でOAuth対応ライブラリー作るところだが、そこまで今は気力はない。

ログに出てくるエラー

もちろん、G Suiteの「安全性の低いアプリ」に設定していますが、メールを送信してみると依然エラーが発生する。

安全性の低いアプリを許可する

対処方法

どうもうまくいかないので今度はG Suite AdminではなくGoogle ユーザアカウントの方にある安全性の低いアプリを許可するページを設定してみた。結果大成功!

セキュリティ設定レベルを制御するページ

app/Config/email.php

タグ: , , , , ,

備忘録:pythonマルチスレッド pasteサーバ redirectでエラー発生の場合の対処


python bottleフレームワークでは内部のマルチスレッドhttpサーバでpasteサーバが使われるケースが多い。しかし、redirect処理を行った際にエラーが吐かれてしまうという問題に遭遇しました。処理自体は問題なく動作するのですがやはり気になります。この問題を解決するためにpasteサーバ関連で呼び出されるライブラリーのコードをトレースして原因がわかりました。この記事はその備忘録として残します。

実際に起きてるエラーはこんな感じ。

そもそも20行目の「TypeError: a bytes-like object is required, not ‘str’」これが勘違いのもとだった。よくある関数returnでHTMLテンプレートに返す際にencodeやdecode処理でutf-8に変換しないと駄目な場合があります。これが抜けているのかな!?と思いきや全く違うところに問題があった。

pasteサーバでredirect処理した場合に発生するエラー出力結果

python3になってからstringsは文字コードの扱いがUnicodeに変わりました。しかしネットワーク上での通信はbyte stringになる必要があり、よく使われるライブラリーではこのUnicodeへの対応がきっちり済んでいるため問題が生じるケースが少ないのですが稀にpython2.x時代からpython3ソースコード対応が中途半端なものがあります。つまり移行が完全にできていないケースだったようです。幸いにも原因は15行目のこれ「self.wsgi_write_chunk(”)」が原因であることにすぐに気がつけた。つまりhttpプロトコルのメッセージヘッダ項目やメッセージボディが空っぽの場合にきちんと処理ができなくて20行目のエラーになってしまうというものです。


まとめると、redirectの処理はメッセージヘッダの一部項目が空であるため、ライブラリーが誤って20行目のエラーを吐き出してしまう。これを回避するためにredirectへ具体的なレスポンスコードを指定してあげることでメッセージヘッダ項目が空になることを防ぐ。

リダイレクト レスポンスコード

  • 301 Moved Permanently
  • 302 Found(Moved Temporary
  • 303 See Other
  • 307 Temporary Redirect

redirectの際にレスポンスコード301を入れて空になるのを防いだところエラーが消えた

タグ: , , ,

Google Search Consoleで表示されるAMPの警告、エラーについて


AMPの取得状況をモニターしていると時折、警告やエラーについて頻繁にGSから通知メールが飛んできます。この重要では無い問題「AMPの警告、エラー」なのですが、意外にも実際AMPテストツールでチェックすると問題が無いものもあります。また、AMPの修正をしても直ぐに評価されて警告がなくなるというワケではございません。最終的には修正済みは消えるのでしょうが、正確にレポートに反映されるまでかなりの日数がかかりそうです。



実際、警告を地道にチェックして直してゆくと順調にAMPキャッシュの取り込みが日々行われてるので、エラーが起きたものを沢山放置しない限りは大きな問題はなさそうです。

タグ: , , , , ,

WEBコンテンツホルダーを/var/www以外の場所にするとエラー


もうご存知の方は沢山いると思いますが、Linuxのインストール直後はSELinuxが有効になっており、デフォルト以外のフォルダーを使用するとエラーが生じたりします。



SELinux 実行中のシステム上では、すべてのプロセスとファイルにセキュリティー関連の情報を表示するラベルが付けられようにできています。尚この情報は、SELinux コンテキストと呼ばれており使用するプロセス(アプリケーション)により様々なものが用意されています。ファイルに関しては、ls -Z コマンドでこれを確認表示することができます。



一番多い例は、WEBのドキュメントフォルダーを変更して使う場合が多いと思います。例えば/var/wwwがデフォルトではWEB基準フォルダーですが、/opt/wwwにしようとしたら エラーが発生して起動できないという事が起こります。



ここでよくある対処方法はSELinuxをOFFにするというケースです。確かにOFFにすることでエラーが出なくなりますが折角のSELinuxによるセキュリティ強化がこれでは台無しですのでこの投稿記事では 正規の変更の仕方について説明していきたいと思います。

現在のコンテキストのステートを確認する

以上のコンテキストが付与されている事がわかりましたね。では移動先の/opt/wwwはコンテキストがどうなっているか確認してみましょう。

それではどうやって同じフラグにしたらよいかという話ですが、これは単純で/var/wwwのコンテキストを真似して新しいフォルダーへ付与するだけの事です。コンテキストを変更するのは”chcon”というコマンドを使用します。

※-Rは再帰的処理でコンテキストを付与することを意味します。

これで共通のコンテキストになりました。コンテンツを配置してWEBサーバの再起動を行うとエラーがもう出ないはずです。

タグ: , , , , ,