2018年1月31日水曜日

Python+Flaskで、GETとPOSTのルーティング

Python+Flaskで、GETとPOSTのルーティングです。習うより慣れろって感じでしょうか。

from flask import Flask, render_template, request

def do_the_login():
    return 'The do_the_login'

@app.route('/login', methods=['GET', 'POST'])
def login():
  if request.method == 'POST':
    return do_the_login()
  else:
    return render_template('login.html')

実際に設定してみたのがこちら

参考サイト
Quickstart(Flask Documentation)
Flask view return error "View function did not return a response"(Stack Overflow)

2018年1月30日火曜日

Python+Flaskで、URLを生成する「url_for()」

Python+Flaskで、URLを生成する「url_for()」です。

url_for([関数名], [パラメーター部分])

という具合に使えます。

<a href="{{ url_for('index') }}">ホーム</a>

<a href="{{ url_for('hello', name='太郎') }}">こんにちは</a>

実際に設定してみたのがこちら

参考サイト
Quickstart(Flask Documentation)

2018年1月29日月曜日

Python+Flaskで、テンプレート「Jinja」

Python+Flaskで、テンプレート「Jinja」です。PHPで言うところのTwigのように、継承の機能が利用できます。タグもほぼ同じなので、多分、移行もスムーズ?

{% extends "layout.html" %}
{% block body %}
  <ul>
  {% for user in users %}
    <li><a href="{{ user.url }}">{{ user.username }}</a></li>
  {% endfor %}
  </ul>
{% endblock %}



実際に設定してみたのがこちら

参考サイト
Template Designer Documentation(Jinja2 Documentation)

2018年1月28日日曜日

IoTやコンテナ用の「Ubuntu Core」

IoTやコンテナ用の「Ubuntu Core」 Ubuntu Coreは、IoTデバイスや大規模なコンテナ用のUbuntuです。 スナップ(snap)として知られている、リモートでアップグレード可能な、安全で新しいバージョンのLinuxアプリケーションパッケージを実装しています。



参考サイト
オープンソースOS「Ubuntu Core」でさらに進むIoTデバイスの活用(TechTargetジャパン)
第392回 Snappy Ubuntu Coreを試してみる(技術評論社)

2018年1月27日土曜日

Wine 3.0がリリース

Wine 3.0がリリースされました。

Wineは「Wine Is Not an Emulator」の略称であり、その名の通りエミュレータを動作させるのではなく、Windowsアプリケーションをネイティブ動作させるソフトウェア。X Window Systemを利用して、Windows向けのGUIアプリケーションを動作させることができる。


参考サイト
Linux上でWindowsアプリケーションを動作させるソフトウェア「Wine 3.0」リリース(Think IT)

2018年1月26日金曜日

Python+Flaskで、デバックモード

Python+Flaskで、デバックモードです。これで、キャッシュされなくなり、デバックしやすくなります。

export FLASK_DEBUG=1
flask run

実際に設定してみたのがこちら

参考サイト
Debug Mode(Flask Documentation)

2018年1月25日木曜日

pythonのvirtualenvを自動で起動する

pythonのvirtualenvを自動で起動する設定です。毎回、source venv/bin/activate と起動するのは面倒だなと思ったら、こちら。非常に便利です。

.bash_profile
function cd {
  builtin cd "$@"
  if [ -d "venv" ] ; then
    source venv/bin/activate
  fi
}

参考サイト
Automatically activate virtualenv(Nathan Cahillさん)

2018年1月24日水曜日

Python+Flaskで、テンプレート

Python+Flaskで、テンプレートです。テンプレートが表示できました。ちょっと感動(笑)。

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello, World!</h1>
{% endif %}

実際に設定してみたのがこちら

参考サイト
Quickstart(Flask Documentation)

2018年1月23日火曜日

Python+Flaskで、ルーティング

Python+Flaskで、ルーティングです。基本から、ひとつづつ。

@app.route('/user/<username>')
def show_user_profile(username):
    return '名前は? %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return '記事IDは、 %d' % post_id

実際に設定してみたのがこちら

参考サイト
Quickstart(Flask Documentation)
Pythonの新しい文字列フォーマット : %記号、str.format()から文字列補間へ(POSTD)

2018年1月22日月曜日

PythonAnywhereにFlaskを設定

PythonAnywhereFlaskを設定してみました。予め用意されている雛形を利用したので、ウェブの画面をクリックしただけで、立ち上げられました。素晴らしい。



実際に設定してみたのがこちら

参考サイト
Setting up Flask applications on PythonAnywhere(PythonAnywhere help)

2018年1月21日日曜日

Bootstrap 4.0がリリース

Bootstrap 4.0がリリースされました。
Bootstrap 4.0では、印刷スタイルとユーティリティクラスが更新されました。 印刷されたページは、モバイルデバイスとしてレンダリングされるのではなく、合理的なサイズになるように、別の方法でレンダリングされるようになりました。 印刷表示ユーティリティには、標準の表示ユーティリティと一致する新しい表示値が含まれています。


参考サイト
Bootstrap 4(Bootstrap Blog)

2018年1月20日土曜日

LinuxでCPU脆弱性のスペクターとメルトダウンをチェックする「Spectre & Meltdown Checker」

LinuxでCPU脆弱性のスペクターとメルトダウンをチェックする「Spectre & Meltdown Checker」 オプションを指定しなければ、実行中のカーネルを検査。 実行していないカーネルを検査する場合は、コマンドラインでカーネルイメージを指定することもできます。



参考サイト
Linuxが脆弱性「Spectre」「Meltdown」に対応済みか調べる方法(マイナビニュース)
CPU脆弱性「Meltdown」と「Spectre」の対策?

2018年1月19日金曜日

Pythonのマイクロフレームワーク「Flask」をインストール

Pythonのマイクロフレームワーク「Flask」をインストールしてみました。身軽ですね。気に入りました。



インストール
$ pip install Flask
$ git clone http://github.com/pallets/flask.git
$ cd flask/
$ python setup.py develop
起動
$ export FLASK_APP=hello.py
$ flask run --host=0.0.0.0

参考サイト
Installation(Flask Documentation)

2018年1月18日木曜日

django2.0で、DisallowedHost Invalid HTTP_HOST header:'IP:8000'. You may need to add 'IP' to ALLOWED_HOSTS.

django2.0を立ち上げると、

DisallowedHost Invalid HTTP_HOST header:'IP:8000'. You may need to add 'IP' to ALLOWED_HOSTS.
といきなりつまずく。セキュリティーがしっかりしてますね(汗)。

settings.pyの「ALLOWED_HOSTS」を変更
ALLOWED_HOSTS = []
↓
ALLOWED_HOSTS = ['*']
django2.0は、スタート画面がカッコイイ!



参考サイト
Django ALLOWED_HOSTSの設定(ンジニア足立のコーディング日記さん)
Django 1.10 でサーバーを起動すると DisallowedHost になる(New-Villageさん)

2018年1月17日水曜日

ubuntu17.04に、django2.0をインストール

ubuntu17.04に、django2.0をインストールしてみました。気分を変えて、python+djangoです。

$ sudo apt-get install python3.6
$ sudo apt-get install virtualenv
$ virtualenv --pytohn=python3.6 venv
$ cd venv
$ source bin/activate
$ pip install -U pip
$ pip install django
$ django-admin --version
2.0.1
$ django-admin startproject mydjango
$ cd mydjango
$ python manage.py runserver



参考サイト
Django 2.0がリリース、Python 3のみをサポート

2018年1月16日火曜日

Cloud Foundryのコマンドライン「CLI」でIBM Cloudにアップロードできなくなる

Cloud Foundryのコマンドライン「CLI」でIBM Cloudにアップロードできなくなりました。ガックリ。プロジェクト存続の危機であります。

$ cf push

Waiting for API to complete processing files...
Job failed: The app upload is invalid: Symlink(s) point outside of root folder

参考サイト
The app upload is invalid: Symlink(s) point outside of root folder(cloudfoundry/cli)

2018年1月15日月曜日

CouchDB(Cloudant)+PHP-on-Couchで、お問合せ送信内容を保存

CouchDBCloudant)+PHP-on-Couchで、お問合せ送信内容を保存です。重要な点は「type」や「device」といったテーブル名的な指標を追加しておくことのようです。この指標を追加することで、既存のブログデータと簡単に識別することができるようになります。なるほどです。
Cloudantは、NoSQLデータベースで「Table」の概念がないため全てのデータが同じストアの中に格納されます。従ってデータ構造が全く違うデータなどを取り扱うケースも考慮して「type=xxx」や「device=xxx」といった分類分けするためのメタ情報を事前に検討して付与しておく必要があります。
$app->get('/contact', function () use ($app) {
  $url = 'https://userid:password@bluemix.cloudant.com' ;
  $client = new CouchClient($url, 'mydb');

  $new_doc = new stdClass();
  $new_doc->type = 'contact' ;
  $new_doc->name = $name;
  $new_doc->email = $email;
  $new_doc->inquiry = $inquiry ;

  try {
    $response = $client->storeDoc($new_doc);
  } catch (Exception $e) {
    $error = $e->getMessage() ;
    $app->render("error.twig", compact('error'));
  }
});


実際に設定してみたのがこちら

参考サイト
Cloudantに格納したデータを可視化(日本情報通信株式会社 Technical Blog)

2018年1月14日日曜日

少額送金サービスの「Osushi」

少額送金サービスの「Osushi」 まだサービスをスタートしていませんが、面白いなと思いました。ブログに貼っても良いということらしいので、是非、導入してみたいと思います(笑)。

良い記事を書いた場合、閲覧者は感動してお寿司を送ります。 ブログの語尾にOsushiへの導線を用意しましょう。


参考サイト
オープンソース開発をしていると「お寿司」がもらえる―新サービス「Osushi」が話題(インターネットコム)

2018年1月13日土曜日

PHP 7.0系のアクティブサポートが終了

PHP 7.0系のアクティブサポートが終了とのこと。早くもそんな時期ですかという感じです。

PHP 7.0系は今回のリリースでアクティブサポートが終了し、以降はクリティカルな脆弱性を修正する目的でのみ、その場の状況に応じてリリースされることになる。PHPデベロップメントチームはPHP 7.0系のユーザーに対して、PHP 7.1またはPHP 7.2への移行計画の立案を推奨している。


参考サイト
PHP 5.6、7.0、7.1、7.2最新版登場 - 7.0ユーザーは移行計画を(マイナビニュース)

2018年1月12日金曜日

PHPのCSRF対策ライブラリ「EasyCSRF」

PHPのCSRF対策ライブラリ「EasyCSRF」を組み込んでみました。その名の通り、簡単で動きがわかりやすいのが良いです。

php
require 'vendor/autoload.php';

$sessionProvider = new EasyCSRF\NativeSessionProvider();
$easyCSRF = new EasyCSRF\EasyCSRF($sessionProvider);

$token = $easyCSRF->generate('my_token');

try {
  $easyCSRF->check('my_token', $_POST['token']);
}
catch(Exception $e) {
  echo $e->getMessage();
}
twig
<input type="hidden" name="token" value="{{ token }}">

実際に設定してみたのがこちら

2018年1月11日木曜日

クラウドメール配信サービスの「Mailjet」

クラウドメール配信サービスの「Mailjet」を組み込んでみました。メールアドレスの認証だけで、無料で利用できるようになります。実に快適。ありがたい。

require 'vendor/autoload.php';
use \Mailjet\Resources;
$mj = new \Mailjet\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'),true,['version' => 'v3.1']);
$body = [
  'Messages' => [
    [
      'From' => [
        'Email' => "from@example.com",
        'Name' => "送信者名"
      ],
      'To' => [
        [
          'Email' => "to@example.com",
          'Name' => "受信者名"
        ]
      ],
      'Subject' => "件名",
      'TextPart' => "こんにちは。",
      'HTMLPart' => "<h3>こんにちは。</h3>"
    ]
  ]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$result = $response->success();


実際に設定してみたのがこちら

2018年1月10日水曜日

PHPのSlim2+Twigで、フラッシュメッセージの表示

PHPのSlim2+Twigで、フラッシュメッセージの表示です。シンプルで簡単に設定できます。素晴らしい。

php
$app->flash("success", "成功です。");
twig
{{ flash.success }}

実際に設定してみたのがこちら

参考サイト
How to load Slim flash vars in Twig(Stack Overflow)
Helpers(Slim Framework v2)

2018年1月9日火曜日

IBMの「Cloud Object Storage」とは?

IBMの「Cloud Object Storage」とは? Amazonで言うところのS3にあたる、クラウドストレージサービスらしいのですが、使い方がわからず、挫折です。ブログに書く意味が無いのですが、お茶を濁して終わりです(涙)。



参考サイト
Use PHP to leverage Object Storage for Bluemix(IBM developerWorks Recipes)
Bluemix Cloud Object Storage(S3 API互換) を試してみる(Qiita)

2018年1月8日月曜日

CPU脆弱性「Meltdown」と「Spectre」の対策?

CPU脆弱性「Meltdown」と「Spectre」の対策? いろいろな記事に目を通してみましたが、気長にパッチをあてていくしかないようですね。

メルトダウンとスペクターは、最新のプロセッサの重大な脆弱性を悪用します。 これらのハードウェアの脆弱性により、プログラムはコンピュータ上で処理されているデータを盗み出すことができます。 プログラムは通常、他のプログラムからデータを読み取ることは許可されていませんが、悪意のあるプログラムはMeltdownとSpectreを悪用して、実行中の他のプログラムのメモリに保存されている秘密を保持することができます。 これには、パスワードマネージャーやブラウザに保存されたパスワード、個人的な写真、電子メール、インスタントメッセージ、ビジネス文書まで含まれます。




参考サイト
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ(4Gamer.net)
スペクター! メルトダウン! カーネル・パニック!――今回の脆弱性はほぼ全員に影響が及ぶ(TechCrunch Japan)
インテルのチップに潜む「欠陥」が、コンピューターの基本的なセキュリティを脅威にさらす(WIRED.jp)
Google、CPU脆弱性「Meltdown」「Spectre」の緩和策を「Google Chrome 64」へ導入(窓の杜)
Meltdown and Spectre

2018年1月7日日曜日

ダミー画像を簡単に埋め込める「Lorem Picsum」

ダミー画像を簡単に埋め込める「Lorem Picsum」 きれいな画像ばかりなので、プレゼンテーションにそのまま使えると思います。

https://picsum.photos/1200/600/

https://picsum.photos/1200/600/?random

https://picsum.photos/1200/600/?blur


参考サイト
美しいCC0写真でダミー画像を作成するなら「Unsplash It」が超手軽(寝ログさん)
Lorem ipsum(Wikipedia)

2018年1月6日土曜日

プライバシーに焦点を絞ったAndroid代替モバイルOS「eelo」

プライバシーに焦点を絞ったAndroid代替モバイルOS「eelo」 非営利プロジェクトで、ユーザーのプライバシーを尊重するオープンソースのモバイルOS、および関連ウェブサービス構築を目指しているとのこと。

2018年1月5日金曜日

PHPのバリデーションライブラリ「Wixel/GUMP」

PHPのバリデーションライブラリ「Wixel/GUMP」を設定してみました。 Laravelライク(?)な使い勝手で、すんなり導入できます。フィルターも用意されていて、至れり尽くせり。

// 日本語ファイル(ja.php)を用意して、langフォルダの中に保存する
$lang = 'ja';
$gump = new GUMP($lang);

// バリデーション
$gump->validation_rules(array(
  'username'   => 'required|max_len,100|min_len,2',
  'email'      => 'required|valid_email',
));

// フィルター
$gump->filter_rules(array(
  'username' => 'trim|sanitize_string',
  'email'    => 'trim|sanitize_email',
));

$validated_data = $gump->run($_POST);

if($validated_data === false) {
  // NG
  $errors = $gump->get_errors_array() ;
  $app->render("contact.twig", compact('errors'));
} else {
  // OK(バリデーションを通って、フィルターされたデータが取得できる)
  print_r($validated_data); 
}

実際に設定してみたのがこちら

2018年1月4日木曜日

TwigでMarkdown「aptoma/twig-markdown」

TwigでMarkdown「aptoma/twig-markdown」を設定してみました。{% markdown %}{% endmarkdown %}で指定した間が、マークダウン化されます。使いやすくて、非常に便利。

use Aptoma\Twig\Extension\MarkdownExtension;
use Aptoma\Twig\Extension\MarkdownEngine;
$engine = new MarkdownEngine\MichelfMarkdownEngine();
$twig->addExtension(new MarkdownExtension($engine));
{% markdown %}
# h1 Heading
## h2 Heading
### h3 Heading
{% endmarkdown %}


実際に設定してみたのがこちら

2018年1月3日水曜日

軽量ポケットLinux OS「Slax」

軽量ポケットLinux OS「Slax」 インストールせずにUSBフラッシュドライブから直接実行可能。小さなサイズにもかかわらず、今どきのGUIを備え、ウェブブラウザとターミナルなど、本当に必要とするプログラムのみに的を絞って提供している。好感が持てます。





参考サイト
軽量Linuxディストリビューション「Slax 9.3」リリース(Think IT)

2018年1月2日火曜日

3D映像で遠隔地にいる専門家の指示を仰げる「Remote AR」

実際に作業する人が、目の前に広がる3D映像で遠隔地にいる専門家の指示を仰げる「Remote AR」 Microsoft HoloLensをサポートしたとのこと。現実的な未来を感じますねぇ。医療の分野では、まだ使ってほしくないけど(笑)。







参考サイト
ARアシスタントが変えるコミュニケーション 目指すはSkype超え(Mogura VR)

2018年1月1日月曜日

オープンソースの分散データセンターOS「DC/OS」

オープンソースの分散データセンターOS「DC/OS」 データセンターを運営したい方、是非、どうぞ(笑)! 誰でもスケールするデータセンターを運営できてしまいます。もはや個人でも、小さな企業でも、アイディアさえあれば、何でもできてしまいますね。すごい時代です。









参考サイト
MesosphereがデータセンターOS、DC/OSをオープンソース化、パートナーシップとコミュニティの基盤強化がねらいか(TechCrunch Japan)
AWS上にDC/OS環境を構築する(Developers.IO)