DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

3Dプリンターのビルドシートには3Mのプラットフォームシートが絶対にオススメ!糊とかマスキングテープなんてもう古い

3Dプリンターの造形時の悩みの一つが造形物の「反り」と「剥がれ」ですよね。

皆さんマスキングテープやカプトンテープ、糊など、いろいろな対策がされていますが、

この悩みの解決にオススメしたいのが「3Mから出ている3Dプリンタ用のプラットフォームシート

どういうシートかといいますと、下の公式動画の通りなのですが


3M™ 3Dプリンタープラットフォームシート3099ABについて

 

実際に動画を見ても

「こんなん宣伝用でしょ?」

と疑いますよね?

はい、僕も疑い深いので疑っていました

 

だがしかーし!

ものすっごい効果絶大なのですよ!

このシートを使うようになってから反りや剥がれにはほぼ無縁!

まあ、3Dプリンタに慣れたので造形のコツも掴んでうまくサポート材を作れるようになってきた。ということもありますが。。(自画自賛)↓ 

dreamerdream.hateblo.jp

 

 

けど、お高いんでしょ?

と思うでしょ?

Amazon2000円台で3シート入っています。

 

 

そしてこれ、使い捨てじゃないんです!

何回も、いや何十回何百回と出力をしても造形前にアルコールでしっかり拭いてあげれば定着力が復活!!

 

僕の場合、1シートで約2年以上無交換で使えました。

2年以上使っていても定着力は問題無いのですが、小傷が目立ってきたのでそろそろ交換しようと重い腰を上げることにしました。

小傷も気をつけていれば避けられた傷ばかりなので自分のせいなのです。

 

ということで今回は2年ぶりのシート交換を公開します。

 

貼り方はパッケージに書いてありますが、過熱&冷却を繰り返してダメージを受けた古いシートが綺麗に剥がれるのか?という心配があります。

あと、気をつけるとこと言えば、最後に保護フィルムを忘れず剥がすこと!ですね。

f:id:DreamerDream:20190325162726j:plain

 

剥離紙は3M製品お馴染みのマーク

大きい場合はプリンターのサイズに合わせてカットしましょう。

f:id:DreamerDream:20190325162604j:plain

 

さて、古いシートを剥がします。

カッター丁寧に浮かせてから(シートの下にゴミを巻き込んでいるのは見なかった事にしてください。)

f:id:DreamerDream:20190325162613j:plain

 

えいやっ!と指で剥がすのですが。。。これが結構硬い。さすが2年!しっかり定着しちゃっています。

f:id:DreamerDream:20190325162621j:plain

 

頑張って剥がしたシート。これは再使用不可能です。

f:id:DreamerDream:20190325162641j:plain

 

シートの糊の残りは全くありませんでした。元はガラステーブルなので当たり前ですがツルツルです。

シート外のホコリだけ目立っています。

f:id:DreamerDream:20190325162631j:plain

 

テーブルを綺麗に拭いてホコリを除去してから新しくシートを貼ります。

気泡やゴミが入らないように端から丁寧に貼ります。

スクレーパーが無かったので指でキュッキュと丁寧に貼っていきます。特に力は要りませんし、少し失敗しても問題無く剥がせますので焦らずに。

f:id:DreamerDream:20190325162649j:plain

 

張り付け後。おー、今回は綺麗に貼れました。

f:id:DreamerDream:20190325162700j:plain

 

見えにくいですが、最後に保護フィルムを剥がして張り替え完了です。

f:id:DreamerDream:20190325162709j:plain

 

実際に出力してみます。 

f:id:DreamerDream:20190401135036p:plain

ピッカピカ!

f:id:DreamerDream:20190401135012p:plain

いかがでしょうか?LEDの反射を無くしても綺麗なのが解りますね。

0.15mmの綺麗なフィルム状になっています。

f:id:DreamerDream:20190401135046p:plain

 

再度お伝えしておきます。

プラットフォームシート、いいですよー!!

せっかくHTTPS化にしたのならSSL/TLSの状態をテストしてもっとセキュアにしましょう

以前にDjangoで作ったサイトをSSL化しました。 

dreamerdream.hateblo.jp

Djangoはセキュリティー面ではかなり優秀な分類で、特に何もしなくても(というか、いらないことをしなければ)フォームなどリクエストに対して適切なエスケープ処理をしてくれます。

そこにSSL暗号化を施せばセキュリティーカンペキ!と普通は思うじゃないですか?

 

しかし、なんと!SSLを導入してもSSL自体に脆弱性が存在するのです!(正確にはSSLのバージョンによる)

Apacheの設定にミスで脆弱性のあるバージョンを使える仕様であればそこを突かれることがあり、通信を傍受され、一部解読される可能性があります。

<参考>

SSL 3.0 の脆弱性「POODLE 」とは? | トレンドマイクロ セキュリティブログ

 

「一部解読程度なら別にいいんじゃ?」って思うでしょ?

現代ではこれ以上解析が出来ないような暗号状態だったたとしても将来的にデータを保存されて解析される可能性もあるんですって!

ということをネット上の師匠に教えていだだきました。

へえ〜!

 

ということで僕の作ったサーバーにSSLを導入しただけの状態でセキュリティーレベルを見ます。

今回解析で利用させてもらうのはこちらのシステム

https://www.ssllabs.com/ssltest/

ここでドメインを入れると自動的に判定をしてくれるという便利なもの。

 

結果

f:id:DreamerDream:20190319222759p:plain

orzガビーン(古っ)

 

なんということでしょう

最悪ではないものの総合評価C判定です。

POODLE攻撃に対して脆弱です」と教えてくれます。

プードル攻撃とは旧SSL 3.0の脆弱性を利用した中間攻撃で、攻撃者がターゲットに対してあえてこの古いプロトコルを利用させて中身を見る手法「ダウングレード攻撃」というものだそうです。

つまりこのままだとセキュリティ的にはダメということだそうです。

・・・

SSLに古いプロトコルが使える状態だから危険」という判断でC評価が下ったわけですね。

 

「現代でSSL 3.0は使っちゃイケナイよ」と師匠に教わりました・・・SSL 3.0は2015年には使用禁止「RFC 7568 - Deprecating Secure Sockets Layer Version 3.0」となっているそうです。

Webブラウザは何らかの原因でWebページにアクセスが出来ない場合、SSL 3.0を含む古いバージョンでの接続を再試行する仕様のようで、今でもこのロトコルが使用されるそうです。

Chomeブラウザは既に無効化してあるようですが、未だに使われているブラウザもあるとのこと。

Google、「Chrome 40」でSSL 3.0を完全無効化へ - ITmedia エンタープライズ

 

 

では、対策をどうすれば良いのかといいますとApacheの設定を適切にしてSSL 3.0とか、古いプロトコルを使わないようにすればいいのだそうです。

 

 

でも・・・、そんな設定どうやってするのかサッパリ解らんじゃないですか?

 

なんと!

こちらのリンク先にあるジェネレーターでApacheやらNginxやらのSSL設定を何ともイイカンジに教えてくれるっていうのです!

Generate Mozilla Security Recommended Web Server Configuration Files

f:id:DreamerDream:20190319222858p:plain

設定はサーバーソフトのバージョンと、OpenSSLのバージョンを入れるだけ。

すっげ!!!さすが師匠!

 

バージョン確認のコマンドは

httpd -version

Apacheのバージョン

openssl version

でopenslのバージョンがチェック出来ます。

出て来たバージョンを入力すると

記述例が出て来ます。

f:id:DreamerDream:20190319223007p:plain

この辺、キーの設定は以前にブログで設定した通りなので弄る必用は無さそうです。 (というか、そのままコピペしたらキーが取得自体ができなくて接続出来なくなるヨ)

 

問題はVirtualHost以降の部分、ここを例述の通りにコピペしてみます。

f:id:DreamerDream:20190319223026p:plain

んで、さっきのテストをもう一度試行しますと

f:id:DreamerDream:20190319222815p:plain

 ぉぉおおおおおお!!!出ました!A判定!!!

 

それにくわえてー、「HSTS」とやらを設定してやります。

HSTSとは、http接続してきたブラウザに対してSSL/TLSの使用を強制的に行なわせるものだそうです。

これは以前SSL化したときに記述した「リダイレクト」という方法ではなく、ブラウザに次回から直接SSL/TLS接続をさせるものだそうで(よくわからんけど)、まあgoogleの推奨設定なのでしとけばいいのだそうです。

<参考>

HSTSとは? 推奨される理由とプリロードリスト登録方法 - ブロギングライフ

f:id:DreamerDream:20190319223050p:plain

 

これを設定しますとー

f:id:DreamerDream:20190319222830p:plain

 出ました「A+」判定!!

これで中間攻撃から強固にデータを守ることが出来ます!(たぶん)

 

世の中カンペキということは無いですが、こんな簡単な方法で少しでもリスクを減らせることが出来るならしといて損はない設定じゃないでしょうか?

今回は以上です。

 

ちなみに、師匠のブログでも過去にSSLについて同じ事が述べられています。

<参考>

glorificatio.org

 

さて、セキュリティー対策も整ったら次にサイトの宣伝をしましょう!

↓サイトの宣伝のためにするべきこと

dreamerdream.hateblo.jp

 

Djangoの使い方⑫画像などのファイルを簡単にサーバーにアップロードする

 前回記事

dreamerdream.hateblo.jp

 

今回は作ったサイトへファイルを簡単にアップロードする方法です。

ブログサイトとか作る場合には絶対必要な項目!

 

Djangoにファイルをアップロードする為の方法に「データベースに登録する」「モデルを利用する」という方法が検索すると多く出て来ます。

ファイルの名前も自動で付けられたりとフレームワークらしく大変便利な機能だそうですが、モデル作ったりマイグレーションしたりと面倒!

 

データベースとかそんな余計な機能いらんねん!モデル?そんなん使わんし!

保存したい場所はプロジェクトルートじゃないんだよ!

あ〜イライライライラ。。。。

とりあえずアップロードしたファイルをpythonで好きなディレクトリに保存したいだけなんじゃ!

f:id:DreamerDream:20190315130802p:plain

という場面があると思います(ありました)。

 

ということで、モデルもデータベースも関係無く、とりあえずformからアップロードしたファイルを任意の場所に保存するだけの方法をご紹介します。

 

*ここからはDjangoでurls、views、templatesが理解出来ている状態の方を対象にしています。

 

templateでHTMLに書くformの必用事項はこれだけ。

<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p><input type="file" name="upfile"/></p>
<p><input type="submit" name="btn_upload" value="UPLOAD"/></p>

</form>

 

まず、POST方式で、ファイルをアップロードする場合はenctype="multipart/form-data"の一文が必用だそうです。

csrf_tokenはDjangoでお決まりのPOST時に必用なhiddenコードです。これが無いとPOSTできません。(Djangoに備わっているCSRF攻撃対策です)

ファイルのアップロード画面を作るのは<input type="file" name="upfile"/>これだけ。

これでファイル選択ボタンが生成されます。なんて便利な!

 

ーーー コレ↓ ーーーー

ーーーーーーーーーーー

 

最後に、アップロードファイルをサーバーにリクエストするsubmitボタンを配置して完了です。

つまり、Django必用なのは{% csrf_token %}だけで、その他は一般的なHTMLコードです。

<参考>

HTMLタグ/フォームタグ/ファイルの送信欄を作る - TAG index

 

で、Django側でどうやって受け取るの?という話ですが、

requestを受け取ったら、

fname = '/home/djang/testfiles.jpg' #固定の任意の名前.jpgファイルを想定

if request.method == 'POST':  # 1
  updata = request.FILES.get('upfile') # 2 
  f = open(fname,'wb+') # 3
  for chunk in updata.chunks(): # 4
    f.write(chunk) # 5
  f.close() # 6

以上です。

これで「/home/djang/testfiles.jpg」にアップロードしたファイルが保存されます。

何をしているかというと、

1ではPOSTリクエストの場合のみ処理をさせています。(データを同じアドレスに送ってるから)

 

2ではformからのinputメソッドにあるname='upfile'のデータを受け取っています。

通常のPOSTデータのvalue値の受取はrequest.POST.get('upfile')ですが、データファイルの受取はFILESを使うそうです。

参考したサイトではrequest.FILES['upfile']というコードがよく例示してありますが、その場合、nameに'upfile'が無いとエラーが発生してしまいます。(辞書形式のファイルなので)

.get('upfile')とすることでエラーなく(値が存在しない場合はNone)結果を受け取ることが出来ますのであえてgetを使っています。

 

3ではファイルにバイナリモードを指定しています。

 

4では.chunks()を使っています。チャンクデータと呼ぶそうであるサイズで分割されたバイナリデータを生成するようです。

僕もよく解っていませんが、実際にupfile自体をwrite()しようとすると

a bytes-like object is required, not 'InMemoryUploadedFile'

というエラーを吐いて怒られます(ました)。

これは、requestによって渡される値はメモリーに格納したことを示すだけのデータで実態がないデータということでしょう(たぶん)。

そこでchunks()を使ってメモリーから実際のデータを分割して読み出す作業をしている。

という認識ですが、もし違ってたら教えてください(汗)

 

5でclose()処理をしていますが、参考サイトにはどこにもこの処理が書かれていませんでしたので不要かもしれません、が気持ちが悪いのでエラーも出ないので一応書いています。

 

 

なお、ファイルの名前は

fname = updata.name

とすることで、元のファイル名をそのまま受け取る事も可能なのですが、

../../myapps/setting.py

などのように、悪意のあるファイル名でもそのまま使うようなコードを組んでしまったら(上例の場合、上位ディレクトリのsetting.pyファイルを書き換えると仮定)システムに多大なる損害が及ぶことがあるので、データに限らずファイルに任意の名前を使って保存させることは避けるべきです。

<参考>パス・トラバーサル攻撃

https://jvndb.jvn.jp/ja/cwe/CWE-22.html

 

今回は以上です。

 

 

スマホでSSH接続やプログラミングが出来るんですって!?

つい先日、外出先で自分の作ったサイトをのんびり楽しんでいたら不具合を発見!

「すぐ修正しないと!」と思ったもののパソコン持って来てないしネットカフェも無いし困りました。

ふと、「スマホでターミナル使えないのか?AndroidってLinuxベースだよね?」と思ってGooglePlayストアで調べましたらフツーにターミナルソフトが出ていましたヨ。(しらんかった)

 

f:id:DreamerDream:20190307123033j:plain

 

その中で「Termux」をインストールしました。

 

play.google.com

これがなかなか使えるんです!

 

SSH接続するにはopensshをインストールしないといけないのですが、親切にインストール方法も教えてくれます。

 

例)nanoをインストールした場合

nanoと指定するとThe program 'nano' is not installed. Install it by executing: pkg install nano

と表示されます。pkgがパッケージソフトなんですね。

指示の通りに

pkg install nano

とインストールするだけです。

f:id:DreamerDream:20190307115845p:plain

nmapもPythonも問題無くインストール出来ました。

 

端末のファイルや使用量も表示できるようです。

但し、sudo権限はありません。

f:id:DreamerDream:20190307115825p:plain

f:id:DreamerDream:20190307115835p:plain

 

pythonを実行してみました。バージョンは3.7.2です。

f:id:DreamerDream:20190307115854p:plain

これ、パソコンが無い環境の人でもプログラミングできちゃいますね。すごい!

 

後はこちらのbluetoothキーボードを持ち歩けばいつでも快適にサーバーを弄れます。

無くても使えるけどやっぱり画面も小さいし、もし出先で大規模な修正が必用になったら必用そう

ということで折りたたみ式の持ち運びしやすそうなものを1つポチりました。

すごい時代だねー

ムームーメールをGmailで送信受信させる(受信が遅いという問題の解決)

ムームーメールは、独自ドメインで使える格安のメールサービスです。

ムームーメール | 独自ドメインで使うWEBメールサービス

 

 以前にGmailで受信すると「?」マークが出るという問題の対策も紹介しました。

dreamerdream.hateblo.jp

 

 

しかし、ムームーメール専用のWebアプリを開いて使うには今ひとつ使い勝手が良く無いんですよね。

そこでムームーメールはGmailアプリと連携してGmailライクに扱う方法がよく挙げられています。

 

まずは、Gmailアカウントを用意して右上の歯車マークから「設定」を選択します。

f:id:DreamerDream:20190301133402p:plain

f:id:DreamerDream:20190301133412p:plain

 

設定項目の「アカウントとインポート」を選択して

f:id:DreamerDream:20190301133424p:plain

 

(Gmailを使用して他のメールアドレスからメールを送信します)

という項目の「他のメールアドレスを追加」を選択します。

f:id:DreamerDream:20190301133435p:plain

 

すると、設定画面が開きますのでm

SMTPサーバー名を「smtp.muumuu-mail.com」

ポートを「465」

ユーザー名(メールアドレス)とパスワードを入力します。

でアカウント追加すればスマホアプリでもブラウザアプリでもGmailムームーメールから送れるようになっています。

f:id:DreamerDream:20190301133449p:plain

これで、Gmailムームーメールが送れます!快適!!

と、ここまではよくWebで紹介されているので問題無し!

 

 

問題は、受信側の設定です。

ムームーメールで受信したメールをGmailで受信させるには、(他のアカウントでメールを確認)に追加するのですが、

f:id:DreamerDream:20190301133458p:plain

これをしてしまうと

 

ものすっごーーーーく受信が遅れます!

 

ヘタしたら1時間以上も。

 

これは、Gmailムームーメールのサーバーに問い合わせるからだそうで、この間隔が非常に長い!

ムームーメールをGmailで受信するのに時間がかかる!」という問題はどうやらこの問合せ間隔が長いことが問題のようです。

 

そこで!

ムームーメール側からGmailに「転送」させてしまえばいいのでは?

という考えに行き着きました。

ムームーメールの右上のマークから

https://muumuu-mail.com/mail/INBOX

環境設定の項目を開き、

f:id:DreamerDream:20190301133512p:plain

 

転送設定、

f:id:DreamerDream:20190301133529p:plain

 

転送先メールアドレスを書いて「メールアドレスを登録する」ボタンで追加

f:id:DreamerDream:20190301133539p:plain

受信トレイに残すか残さないかは各自の判断で。

 

 

つまり、送信はGmailからムームーメールサーバーを介して受信はムームーメールからGmailへの転送でという設定になります。

こうするとタイムラグも少なく非常に快適な環境になるのでオススメです。

 

 

3Dプリンター、PLAで出力した物を加工する

3Dプリンターで作品を作ると、

「ありゃ、1mm大きかった・・・orz」とか

「この微妙なカーブを補正したいけどモデル作り直すのメンドイし時間かかるし・・・orz」

とかビミョーな失敗作品を作ってしまうことよくありますよね。

 

 

PLA樹脂の場合、ABS樹脂より硬いので加工もし辛いしということで諦めてしまっていませんか?

PLAの特性の1つ「熱に弱い」ということを利用すればこのビミョーなモデルを簡易的に修正することが出来ます。

 

例)まとめて3つも作ってしまった治具

ビミョーにサイズが大きかったんです。このまま捨てるのも勿体ない!

f:id:DreamerDream:20190225083356p:plain

 

お鍋でコトコト煮るまでしなくても、100度のお湯に浸けるだけでいいです。(60度程度から軟らかくなっていくようです)

ある程度軟らかくなったら形成して冷まします。

f:id:DreamerDream:20190225083418p:plain

 

どうでしょう?

ビミョーな修正ができています。

f:id:DreamerDream:20190225083429p:plain

最初に修正したものに合わせて2つ目も修正。

f:id:DreamerDream:20190225083442p:plain

 

3つ目は曲げすぎました(わざと)

f:id:DreamerDream:20190225083453p:plain

よく熱するとフニャフニャになるので結構ダイナミックに造形することが出来ます。

あああっ!伸ばしすぎた!(わざと)

f:id:DreamerDream:20190225083505p:plain

 

修正に失敗しても、ある程度なら勝手に出力時の形状に戻ろうとします。
↓やりすぎですが、戻ります。

PLAを煮る

 

あまりやりすぎるとシワが取れません。

f:id:DreamerDream:20190225083518p:plain

 

 

この方法を利用すると、

『週刊 マイ3Dプリンター』| デアゴスティーニ・ジャパン

で紹介されているRobiの関節のようなPLAで組み立てようとすると割れてしまうような難しい蝶盤でも簡単に組み立てる事ができます。

ムームーメールから送るとGmailに疑問符「?」が表示され、迷惑メールになる問題対策

ムームードメインで取得できるメールサービス、ムームーメールは独自ドメインに付けるメールとしては格安で提供されているので超お得なメールサービス!

(アドレスは作り放題!なんと1ヶ月50円(1年600円)という驚異的な安さのメールサービスです。↓)

しかし、そのまま使うと問題が出て来ました。

 

デフォルトの設定のままムームーメールを利用してメールを送信すると、Gmailの受信一覧に「?(クエスチョンマーク)」マークが表示されてほぼ確実に「迷惑メール」フォルダーへ勝手に振り分けられてしまいます。

↓この表示

f:id:DreamerDream:20190222160644p:plain

この?マークを選択すると、

Gmailでは、このメールが(スパム発信者からではなく)本当に○○から送信されたメールであることを確認できませんでした。」

という説明が見られます。

自前のpythonコードからもDjangoアプリからもムームーメールWebアプリからもです。

これではせっかくムームーメールを利用してGmailに送信しても迷惑メール扱いになってしまいます。

こんな怪しいメール「大丈夫」と言われても開きたくないですよね?

 

さて、この疑問符が付くメールの対策ですが、ムームーメールの公式ドキュメント(確認時点)では一切説明されておらず、ググってもムームーメールに関してはあまり情報が無いので少し困りました。

カスタム設定のセットアップ方法 | ムームードメイン

 

しかしながら、ムームーメール以外のメールサービスでも同様の表示がされている場合があるようで、なぜ疑問符が表示されるのかというと、

「WEB版GmailAndroidでは、送信ドメイン認証技術である "SPF" または "DKIM" のどちらかで認証がされない場合、メールのプロフィールアイコンに"?"(はてなマーク)が表示されます。」

という情報が得られました。

<引用元>

Gmailの警告表示が拡張! メルマガのプロフィールアイコンを確認しよう|メールマーケティングのCuenote

 

つまり、キーワードはSPFもしくはDKIMというメール認証サービスのようで、

要は送信メールサービスに受信メールサーバーが「このメールの発信者は誰?」 と問い合わせた時に音信不通のサービスは成り済ましの可能性があるから気をつけろ!ということだそうです。

解決策は「発信者の問合せに適切に返信させる」というのが答えだそうです。

 

「?マーク ムームーメール」「ムームーメール 疑問符が表示される」など、なかなか探しても妥当な回答が見つからずにいましたが、SPFというキーワードを追加してググるとそのものバッチリの回答が出て来ました。

 

お待たせしました!それでは解決策です。

ムームーメールでも送信アプリでもなく、ムームDNSの設定を弄ります。

ムームードメインのコントロールパネルから

https://muumuu-domain.com/?mode=conpane

左メニュー内の「ムームDNS」を選択し、

ムームーメールに対応させるドメインの「変更」をクリック、

(「設定2」にあるカスタム設定でムームーメールを取得している場合は既にMXレコードに「mx01.muumuu-mail.com」が割り振られているはずです。)

その下に追加で、種別「TXT」を選択し、「v=spf1 include:_spf.muumuu-mail.com ~all

と記述して「セットアップ情報変更」する。

f:id:DreamerDream:20190222165749p:plain

 と設定が反映されれば成功です。

 

これで数時間待ってから(浸透するのに時間がかかるようです)送ったメールには「?」マークが消えているはずです。

(※対策前に送ったメールの「?」マークは消えません。最初に送った何通かは送信から受信までに時間がかかりました。)

 

ムームーさん!こういうのは公式に通知してくださいよ!

 

<参考>

ムームーメール、ムームーDNSを利用している場合のspf設定 | 佐川悠のブログ

 

※用語がわからなくてもググられやすいように下に検索ワードを掲載しておきます。

Gmailで?マーク」「Gmailクエスチョンマーク」「ムームーメールからGmail」「ムームーメール 疑問符メール」「ムームーメール Gmeilで迷惑メール」

 

続、ムームーメールの受信は転送で!ってゆーお話です↓ 

dreamerdream.hateblo.jp

 

kampa.me