AzureでPythonでDjangoでHelloWorldしたメモ

おじさんはVisualStudio2005まででこの14年間止まってた人なので、色々疲れた。

 

久々にマイクロソフトのサポートを使った。pythonでHelloWorldのやり方教えろとかいうサポート依頼、しかも電話希望。対応するの嫌だっただろうなw。

お疲れ様でした>>マイクロソフトの中の人様。

 

メモなんで心眼でよろ。VisualStudio2017、Djangoプロジェクト前提。

 

views.pyに追記:

def hello(request):
assert isinstance(request, HttpRequest)
s = 'HelloWorld … IT WORKED! YES!YES! '
return render(
request,
'app/hello.html',
{
'title':'Hello',
'message':'FirstHelloWorld.',
'hello':s
}
)

 

hello.htmlを{{hello}}を入れて適当に書く。titleとかmessageとか知らん。

 

urls.pyに追記:

url(r'^hello$', app.views.hello, name='hello'),

 

web.config@AzureWebServices:

<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log" />
<add key="DJANGO_SETTINGS_MODULE" value="お前のプロジェクト名.settings" />
</appSettings>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<add name="Python CSS" path="*.css" verb="GET" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="D:\home\Python364x64\python.exe|D:\home\Python364x64\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<rewrite>
<rules>
<rule name="Static Files" stopProcessing="true">
<conditions>
<add input="true" pattern="false" />
</conditions>
</rule>
<rule name="Configure Python" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/static/.*" ignoreCase="true" negate="true" />
</conditions>
<action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>

 

もしかしたらstatic/web.configに

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="Python FastCGI" />
</handlers>
</system.webServer>
</configuration>

 

static/app/content/bootstrap.min.cssを読めなくて嵌った。<add name="Python CSS" path="*.css" verb="GET" modules="StaticFileModule" resourceType="File" requireAccess="Read" />の部分。神はこちら⇣。ありがとう。ありがとう。

Django + IIS + wfastcgiで静的ファイル(CSS, JavaScriptなど)を配信する - メモ的な思考的な

AzureにMediaWikiを入れた時のメモ

前回から続かなかった。

 

Azure AppServiceのWebAppServiceにMediaWikiをインストール。結構ハマったのでメモ。(かなり長時間上手くいかなかったのでちょっとやさぐれております。)

 

まず全体の流れはこれ。

Cross-Post: Creating a Corporate Wiki in Azure | Azure App Service and Functions team Blog

ちなみにチュートリアル通りのバージョンを入れていくと後で不幸になるので新しいやつを入れましょう。今回は結果として1.31.1を使っています。

 

SQLiteの場合:特に何も。

 

Azure SQL Databaseの場合:俺には無理だった。

  ・USE ステートメントが使えないのでインストーラがこける

   →include下のどこか深いところにあるDatabaseMssql.phpの何か接続文字列のデータ設定してんなってところに$connectionInfo['database'] = "(データベース名直書き)";

    →しかし、最後に 「新しいページを作成できませんでした。 そのページは既に存在します。」と言われた。

     →ver1.32.0と1.31.1の両方で同じ現象が発生することを確認

      →撤収

 

Azure Database for MySQLの問題:俺でも何とかなった。

 ・Azure上のMySQLMyISAMエンジンが無いのでインストーラがこける

   →maintenanceディレクトリ下のtables.sql、1500行目を適当に改変して強引にインストール

 

CREATE TABLE /*_*/searchindex (
-- Key to page_id
si_page int unsigned NOT NULL,

-- Munged version of title
si_title varchar(255) NOT NULL default '',

-- Munged version of body text
si_text mediumtext NOT NULL
) /*ENGINE=MyISAM DEFAULT CHARSET=utf8*/;

CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page);
--CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title);
--CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
CREATE UNIQUE INDEX /*i*/si_title ON /*_*/searchindex (si_page);
CREATE UNIQUE INDEX /*i*/si_text ON /*_*/searchindex (si_page);

      →一応動いたけど検索するとエラー。そりゃそうだ。

      →撤収かなあ

       →

HeidiSQL - MariaDB, MySQL, MSSQL and PostgreSQL made easy を入れてポチポチいじってたらFULLTEXT INDEXを付けられた!

(1ケ1ケ変更しては更新しないとエラーになるw)

f:id:LongPeaceLover:20190302161747p:plain

FULLTEXT INDEX、後出しであれば付く。

 

検索でけた。

 

 

Auth_remoteuser:

AzureADでシングルサインオンすると@〰.onmicrosoft.comが邪魔で管理者権限で入れない。

$wgAuthRemoteuserUserNameReplaceFilter でスカッと解決。

  

短いURL:

MediaWikiのインストールディレクトリ名から"wiki"という名前を消し、 web.configを上の方に出てくる記事の

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wikiRule1" stopProcessing="true">
<match url="^wiki/(.*)$" />
<action type="Rewrite" url="/mediawiki-1.26.3/index.php?title={UrlEncode:{R:1}}" />
</rule>
<rule name="wikiRule2" stopProcessing="true">
<match url="^wiki/$" />
<action type="Rewrite" url="/mediawiki-1.26.3/index.php" />
</rule>
<rule name="wikiRule4" stopProcessing="true">
<match url="^/*$" />
<action type="Rewrite" url="/mediawiki-1.26.3/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

 のディレクトリ名を変更したら動いた。

 

→文字化け

 →

MediaWiki + Short URL + IIS で日本語の URL が文字化けしてしまう - Qiita

 

ちなみにコイツ↓は動かない。

Manual:Short URL/IIS8.5 - MediaWiki

 

 

後はエクステンション入れて遊びますか。

PowerAppsを触ってみた(1)

デンソーAndroidハンディターミナルのアレさに絶望し、半年ほど更新ストップしていましたが、明けましておめでとうございます。

 

(結論として、ハンディターミナルはキーエンスですよね。もう迷わない。もう「痒い所に手が届かないのがキーエンス」とか言わない。高いけど。)

 

 

さて。

正月休みにOffice365を勉強しようとしてOffice365 Business Premiumを購入したら、色々と付いてきました。

f:id:LongPeaceLover:20190105153533p:plain

 

PlannerとFlowの合わせ技が多分本命なんだけど、PowerAppsに「バーコードリーダ」がありました。

 

ちょっと使ってみます。次回に続く。

実機到着(3)

サンプルはJavaとC#(Xamarin)。

とりあえずJavaのScannerSampleを見てみよう。

 

AndroidStudioで開くと何かライブラリが足りないと言われたが、そのメッセージの下のリンクを押すと勝手にインストールしてくれた模様(すげぇな)。
リンクを二回踏んだところで本格的にビルド開始。

 

ついでに何かアップデートを強くオススメされたのでよくわからずにYES…

f:id:LongPeaceLover:20180809151238p:plain

すると後で色々グチグチ言われました。お断りが正解。

 

Nexus5の仮想マシンでRUN。一応立ち上がる。

”スキャナをON”スイッチを入れたら「ScannerSampleが停止しました」。ですよねー。

 

つうわけで実機デバッグである。人生初の携帯実機デバッグである。

端末情報からビルド番号を10回叩く。
開発者向けオプションが表示されたのでUSBデバッグ有効化。
繋いだPCを許可。
AndroidStudioでRUNすると、デンソーの携帯が見えている。
動かすと動いた。ブレークポイントを適当に入れると止まる。
すごいな最近の開発環境。

 

コードを見てもさっぱり判らん(Javaもアンドロイドも判らぬ…)ので、MainActivityからcom.densowave関係のimpotr句を順次削除して、エラーが出た所にそれ(パッケージ名って言うの?)を貼り付けて行く。

 

54行目から78行目あたりがメッセージループ(? インテントって何かもよく分かっていないという…)。100行目で起動と。

 

スキャンのキャンセルとか手入力への切り替えのTipsは無い模様。
ドキュメント読むか。