Python & kivy インストール編

インストールは簡単です。

Linux系触ったことある方ならスッと入ってくると思います。

とはいえただコマンドプロンプトカタカタやるだけですが。

[Chapter1] Pythonインストール

私はpython3系を使っております故にpython3系を入れてみます。 ※python3系はpython2系と比べて一部コードが変わっているだけです

(例: python2: print “Hello world” / python3: print(“Hello world”))

基本はホームページにてダウンロード一覧画面の64bit版のインストーラーをダウンロードするだけです。

www.pythonweb.jp

この記事がスマートです。

[Chapter2] pipインストーラーの確認

(pipとはコマンドプロンプトから行うインストールの形式の一つです。)

コマンドプロンプトを管理者権限で(右クリックのやつ)開きます。

はじめはpipがインストールされているかorバージョン確認を含めてコードを打ってみます。

pip install --upgrade pip

最新版でなければ勝手にアップグレードが始まります。

[Chapter3] kivyインストール!!

コピペでどうぞ まずは必要なパッケージから

pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
pip install kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/

最後にkivyをいれる

pip install kivy

最後の最後にインストール確認 これでバージョンとかが出ればOKです(1.10.0とかの数字)

pip search Kivy

もんんんのすごい忙しかった死ぬかと思った

いや~本当にきつかったです。

ここ最近ずっと1日12~13時間ほど仕事してます。

なぜそうなったのかといいますと。

プログラムのバグが治せなかったからです。

そしてひとたび治すごとに新たなバグが連鎖して出てきました。

あまりにもゴチャゴチャと作られていたので、難読コードと化していたので

結局そのコードを書き直すことにしたのです。

最終的そのプログラムで提出することにしました。

死ぬかと思いました。

空き時間を何とか見つけてpython & kivyもやってますので次の投稿から再開します。

こどものころの夢


まだ幼い時に

私は夢を見つけました

それは科学者になることでした

私の思う科学とは

化学・物理学・医学・武術

これらに特化した驚異的魔術師のことでした

すべての分野でエキスパート

すべてにおいて完璧を目指そうとしました

気づけば今

私はプログラミングをしています

時間を無駄にしたことが多かったなと思ってしまうことが多くなってきました

しかしこれからは

時間を無駄にせず

可能な限り全てをやり

目的を達成します

そのためにプログラミングって(笑)

もっと頑張らなくては (アセアセ

PythonとKivyを使ってマルチプラットフォームアプリを作る

実は最近マルチプラットフォームなアプリケーションを製作せざるを得なくなりました。;_;

このマルチというのが実は厄介で、今回のマルチの条件としては以下の通りでした。



ほぼすべてのOSで動作せよとのこと。。。

これを聞いた瞬間に選択肢が一つしか思い浮かびませんでした。

それが、

Python & Kivy

です。

Python & Kivyとは

Pythonはおなじみの方もいるかと思いますが、主に海外でシェアの高い基本サーバーサイドに使う言語です。

Kivyは日本人で利用者数が極限に少ないPythonGUIアプリケーション化フレームワークです。

ようは、PythonをKivyを使って楽にGUIアプリ化しようということです。

問題点

Kivyは本当に日本人での利用者がほんの数パーセントしかいない(そもそもPythonが日本ではマイナー枠に入っている)ので情報収集が極端に難しいです。 数あるブログにも挫折したという方が多いことが情報提供における悪循環の実態です。

私も熟知しているわけではないのですが、やるしかないので習得します。

KivyによってほぼすべてのOSに対応できることは他の要因を超越するほどの魅力です。

今後のプログラマーのため、このブログを起点とした情報提供をしていきます。

でもすいませんが、今日は勘弁してください。

まだ完ぺきではないので ;_;ホントスイマセン

最近YouTubeが試行錯誤している

最近YouTubeのヘッダーロゴが変化していることに気づきました。 確かおとといの0時頃だったかF5押してたらいきなり変わりました。

残念ながら、更新初期の画像はとってませんが、大きさが変わっただけでイラスト自体は変わったない現在バージョンがこちら。

f:id:Flopper:20170831024735j:plain

左のメニューバーの高さにそろえたんだね。

余白も一回りほどとれているので安定感が出てますね。

Let'sEncryptでSSL通信のをする (CentOS7 & Apache2.4)

2018年1月よりClientエラーが出るようになりました。こちらのリンクを参考にエラーを回避してください。 Let's Encryptを導入しようとしたら Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. って出た - tomomik’s blog

約1週間ぶりの更新ですが、セキュアなサーバー構築の参考になれば幸いです。

Let'sEncryptは無料で使えるSSL通信の認証局です。

今回は下記のような環境でSSL接続を試みます。

Certbotの環境準備

# sudo yum install epel-release
# sudo yum install certbot python-certbot-apache

上記2つをインストールしてください。

SSL/TLS証明書作成

# sudo certbot certonly

上記のコマンドを入力
対話形式でのSSL設定が開きますので、ガイダンスに沿って選択していけば設定できます。

設定方法を選択

f:id:Flopper:20170831022549j:plain

今回はcertbot-apacheをインストールしたので1番目を選択します。

f:id:Flopper:20170831022558j:plain ドメインを聞かれますのでwwwから始まるドメインを入力します。

※この画面の前に"メールアドレス"や"利用規約に同意するか?"や"Electronic Frontier Foundation(EFF)とメールアドレスを共有するか?"などの項目が出るのでガイダンスに従って入力と同意を行ってください。EFFについてはNoでも構いません。

完了

f:id:Flopper:20170831022614j:plain

このように出れば基本設定はOKです。

次にApacheの設定をします。

(/etc/httpd/conf.d/ssl.conf)

...
SSLCertificateFile /etc/letsencrypt/live/[サーバーのドメイン]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[サーバーのドメイン]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[サーバーのドメイン]/chain.pem
...

それぞれをwwwから始まるドメイン名に変更したらApacheを再起動し、firewalldの設定でhttpsの通信を許可し、リロードしましょう。

# systemctl start httpd
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

これでhttps接続ができるはずです。

これでも見れなかった場合、certbotを起動してみましょう。

#sudo certbot

またガイダンスに沿っていくとsslの再発行を聞かれるますが、不要なので1でokです。 f:id:Flopper:20170831022605j:plain

httpsで接続してみましょう。

Javascriptだけで多言語化

昨日Javascriptだけで多言語化する必要が出てきたのですが、
いろいろと問題に突き当たりましたので、記録を残します。

使用したもの

参考にしたWEBサイト

qiita.com

本題

まず初めに結論ですが、上記参考サイトの方法で多言語化は可能です。
ただし、l10n.jsのインストールには必ずbowerを使うことです。

私ははじめ、bowerでインストールを試みましたが、そもそもbowerがインストールされておらず、npmを通してインストールしました。

node.jsで下記のコードです。

npm install bower

そしてl10n.jsをbowerを使ってインストールするのですが、下記のようなエラーが出る場合

ENOGIT git is not installed or not in the PATH

エラー内容の通りですが、gitが入っていないんですね。

gitをインストールするのと同じくPATHも正しく設定する必要があります。 設定Pathは2つです

C:\Program Files (x86)\Git\bin
C:\Program Files (x86)\Git\cmd

パスの設定方法を記載してます。

flopper.hatenablog.com

これでl10n.jsを正しくインストールできます。

なぜこのような話をしたかと言いますと、  

bowerがなかったため本家サイトから直接インストール(l10n)をしましたが、  

bowerでインストールしたものとjsの中身がかなり違っていたためです。

ちなみにnpmインストールの段階でうまくいかなかった場合は -g など入れてみてください。

さらに追伸ですが、jsに詳しい方であればvue.jsなどがなくても多言語化は作れると思います。

ですが、私があえてvue.jsを選択した理由はいくつかあり、


  • {{}}このようにmustacheと呼ばれる記法でjsで生成したhtmlを埋め込みできること
  • v-bind:value=“"のように属性値に「v-bind:」を追加することで属性値にも埋め込み可能なこと

がvue.jsの選択理由です。

速度の面でも他のフレームワークに比べても圧倒的です。  

f:id:Flopper:20170825141318p:plain

(左から2番目緑バーのVue.js2.X系が今回のものです。)

Angular.jsよりも速度面で有利なのは驚きですが、軽量面でもAngular.jsより群を抜いています。

ただし、リリース日が2014年なので情報が圧倒的に少ないです。 そもそもJSフレームワークを利用している日本人が少ないです。

未だ情報が少ないvue.jsですが、html埋め込みの点でいえば最高に使い勝手のいいものなのでおすすめです。

ハイブリッドアプリの流れてきなもの

WEBデベロッパーにとってネイティブなモバイルアプリはJAVAで作るものと思っていましたが、実はHTML,CSS,JSでアプリが作れることがわかりました。

そこで私も今回HVアプリを作ることになったので備忘録として綴ります。

私自身、触り始めたばかりなので「こんなやり方もある!!」等のご意見お持ちの方は是非知識を共有させてください~

今回はApache Cordovaを使います。

Apache Cordovaについての注意

どのアプリケーションもサーバーを介す必要性は切っても切り離せないことが多いです。
ですが、注意事項として2017年8月現在、Apache CordovaではPHPSQLは直書きできず、PHP自体ネイティブアプリ内では使えません。

- ではサーバーサイドはどうすべきか


PHP部分はすべて別ファイルとしてサーバーに置いておきましょう。そのうえでAJAXを介してサーバーとのやり取りをしてください。

環境構築

環境構築についてはこちらのサイトがとてもわかりやすいです。

apoc.jp

実際の開発


実機で確認するのもいいでしょうが、一度実機で表示の未確認したらあとはPCでデバッグしたほうが早いでしょう。

あとがき

話すべきことはこれだけなのですが、いまだ日本でHVアプリ開発者があまりいないのか情報が少ないです。 PHPで作ったものをAJAXにしていくのは面倒です。 今のところAJAX通信でやるしかHVアプリの場合はないようです。

それと、スマホデバッグモードは忘れずに。 スマホの設定画面のビルド番号を数回タップすればOKです。


まとめ

  • 環境構築

    • JDKインストール
    • Node.jsインストール
    • Android SDKインストール
    • Pathの設定
      (Win10の場合)
      設定¥システム¥バージョン情報¥システム情報¥システムの詳細設定(サイドバー)¥環境変数 から変更できます。
  • Cordovaプロジェクト作成

  • プラットフォーム各デバイス用を追加
  • ブラウザまたは実機でアプリを随時確認

何か便利になる情報などございましたら、是非コメントなどでお知らせください。

創作欲求と知的欲求

この間とあるブロガーの方がインターホンなるものを作っていました。

「これすげええええ」と思う傍ら
「一体何でできてるんだああ」とか思ってました^^;

誰かが作っているものを見るとそれが何でできているのかものすごい知りたくなることって結構あるなあとか思ったりする今日この頃。

小さいころにガンプラをかっこよく塗装したやつとかも、ホビーショップで見ると興奮してじっくりべったり窓ガラスに目がくっつくほど見てました。

思えばあのころから創作欲求はかなりあったのかもしれません。

自分も何か役に立つシステム作ろうかな~とか思ってます。

(ただのイメージですがッッッ!!)

f:id:Flopper:20170820220305j:plain

ここ数日の間はてなブログのデザインがおかしくなっていたようですが、修正しました。

AjaxとSetTimeOutについて

本日とあるエラーが起こりました。 やりたかったことはAjaxに遅延処理を加えることでした。

下記のように通常のコードを書いていきました。

$(function(){

elm.event(function() {
    setTimeout(function(){
    if(something){}
    else{
        $.ajax({
            type: "GET",
            async: false,
            url: "***.php",
            data: ***,
            cache: false,
            success: function(html) {
                //Something to do...
            }
            });
    },1000);

});

あれ!動かない!!

「こんな単純なコードで動かないはずがないんだが…」

色々探していましたが、おそらく同じコードを2つ書いていたためだったと思います。

その前にもAjax部分を別にfunctionとして置いたりもしましたが。。。。。

何はともあれ、上記のようなコードであれば、Ajaxの遅延処理は可能ということでした。

正直中々「これだ!!」という情報がなかったため多くの方々への参考になればと思っています。

コードの重複とか「あるある~」な最近です。

サーバー立てる時にやることってなんだっけ

海外鯖立てました。私用ですがまだ何も入れてません。

とりあえずセキュリティ対策だけはやっとこうと思いました。

WEBサーバーとして使うのでやったことは以下の通りです。

  • Root権限回り

    • 別ユーザーを作ってWheelグループにRoot権限を付与
    • 作成したユーザーでログインとsudo権限をテスト
    • Rootユーザーを禁止する
  • ポート回り(重要)

  • ファイアーウォール周り

    • 私はCentos7だったのでiptablesじゃなくfirewalldでファイアーウォール設定
      • 任意の接続(HTTP,HTTPS,PORTXXXX)だけ解放

ポート回りの設定をするのが遅かったので中国あたりからポート22を集中攻撃食らいました。 先にやっといたほうがいいですねポート回り。

経路列挙モデル

最近経路列挙モデルを知りました。

色々ググってみても簡潔に「こうですよ」と書かれているものは少なく、

割と理解するのに時間を要しました。

最近経路列挙モデルは複雑な階層構造になっている機能を作る場合に有効です。

内容としてはデータベースなどにその改造構造のパスをそのまま載せてしまおうという点です。

詳細については後日追記していきます。

デザインも大事!コードの整形も大事!

最近よくデザインも大事ですが、書いたコードの整形も大事だなと気づきます。

美しく整形しなおしたコードは達成感も強いですし、そのコード自体を大事にできます。

一度バーーっとコードを書いた後、もしくはすべて完成したのちにコードを成型するのはリフレッシュする意味でも

より良い効果を発揮すると思っています。

コードの整形ツールはたくさんあるので、調べてみるのもいいかもしれません。