【 チャット機能を実装しよう 】Python Djangoでチャットを実装する

おはようございます。

ASUKARUが配信するプログラミング動画学習サイトのASPY(アスピー)に動画が追加されました。今回の動画は、最近流行りのチャットをPythonのWEBフレームワークであるDjangoを使用して作ってしまおう!という動画です。

 

【 動画サイトはこちらから 】

 https://aspy.jp/member/movie/4

 

 

 

DjangoはPythonで書かれているので、Pythonでできる事がほとんどできます。

このモジュールはPythonのWEBSOCKETというソケット通信を行う事で、双方向のチャットを可能にしています。

動画の中では、このチャット機能を使ってテキストマイニングやAIへの繋げ方などは解説をしていませんがこのようなチャット機能を使う事で今後のサービスの拡充にも繋がってくるかと思います。

 

それでは、チャットを実装できるようにみんなでやっていきましょう!

【 Youtube 】

Youtubeにも最初のサンプル動画を上げています。

WindowsにXAMPPをインストールしてSQLを学習しよう

SQL_オンライン授業
SQL_オンライン授業

今回は、WIndows環境にXAMPPをインストールしてSQLを学習する動画を公開しました。

以前はWIndowsにXAMPP(ザンプ)をインストールするには各種の設定をしなければならないなどかなりの手間がかかっていたのですが今では本当に楽になりました。

このXAMPPですが、Apache、PHP、MariaDB、Perlのクロス(X)プラットフォームなのでそれぞれの頭文字をとってXAMPPと言われています。

これはこれで便利なものなので、初学の際には利用されるといいかなと思います。もちろん、各種の設定ファイルを書き換えてカスタマイズすることも可能です。

https://aspy.jp/member/movie/3

 

今回の学習環境は以下です。
・Windows
・XAMPP
・phpMyAdmin

 

さて、この動画でSQLの基本的なところを学んだあとは、さらに深く学習をしていきましょう!!

 

 

SQLは、どんなプログラミング言語を学んだとしても基本的にはくっついてきます

 

そのためしっかりと固めておかないと、セキュリティーに欠けたものや、何度もSQLを発行するという冗長なプロフラミングのソースコードを記述してしまい、とてもエンジニアとしては活躍をしていくことができません。

 

そのため、しっかりと押さえておいてください。

 

 

ASUKARUのプログラミングの学習動画一部改修のお知らせ

https://aspy.jp/

昨日リリースされたPythonをはじめとするプログラミングの学習動画ですが、こちらサンプル動画を見れるよう対応しました。

また、会員登録をしておくと新しい動画がアップロードされた際に通知がきます。

サンプル動画の一覧は、こちらから見れます。

https://aspy.jp/member/

Wagtail PythonでCMSを実装してみる

今回、CMSの調査をしていまして、出てきたWagtailを使ってみました。その際の簡単な説明だけ残しておこうと思います。

まずプロジェクトであがってきたのはDjangoを使用してCMSを搭載させれるかどうかということでした。そのためのパッケージもあるようです。ですが、調べていたらどうやらWagtailの方がいいのかどうかということでいったん使い勝手的なところ調査しました。

以下、説明していきます。

 

1.インストール

まずはインストールからですが、これは問題ないのではないかと思います。ただ、私が勘違いしていたのははじめにDjangoのプロジェクトを設定してからWagtailをいれると思っていましたが、公式ドキュメントをみて「あれ??」ということで単純にPythonの仮想環境を作成してそこにWagtailを落としてきました。

********************

2.プロジェクト作成

次に、プロジェクト作成です。ここでもちょっとはまりました。

こちらのサイトをみていたのですが、

wagtail start mysite mysite

 

これでは作成できませんでした。

以下のようなエラーが返ってきました。

Creating a Wagtail project called cms
CommandError: Destination directory 'C:\cms\cms' does not exist, please create it first.

 

そこで、DjangoでもLaravel でもなんでもそうかと思いますが、使えるコマンドを確認することができるので、試してみることに。

(myvenv) C:\cms>wagtail
Type 'wagtail help <subcommand>' for help on a specific subcommand.

Available subcommands:

    start               Creates the directory structure for a new Wagtail project.
    updatemodulepaths   Update a Wagtail project tree to use Wagtail 2.x module paths

 

きちんと出てきてくれましたね。

プロジェクトを作成するためには、どうやら

wagtail start <プロジェクト名>

 

を叩く必要があるようです。

 

Wagtail_start_command
Wagtail_start_command

すると、写真のようなファイル群が作成されます。

では、ここから様々なことをやっていきたいと思います。

 

って、あれ?フォルダの中身とかほとんどDjangoみたいなものではないですか。

しかもDockerファイルまで生成してくれています。ありがたい。

 

 

いったん中身をいじるのに専念したいので

続きはまた次回。

 

画像データから一気に数値を取得してくる。資料作成の時短へ

こんにちは!
久しぶりの投稿をしています。ASUKARUの遠藤です。

よく、お見積りを作成する場合などで、すでにあるものを転写することってあるかもしれませんが、今日はそんなときに役立つかもしれないツールを開発しましたので掲載しておきます。

たとえば、下記のような情報群があったときに、

 

これぐらいならいいですが、実際には相当の量を入力する必要があったりしますのでそれをそのまま転記していると膨大な時間がかかってしまいます。

そこで、こういったものを画像化してしまって(画面キャプチャなどでOK!)、そこから数値だけを取得してくれば転記作業もかなり楽になります。

 

そこで、実際にやってみた結果が

このようになりました。

日付部分と「o7」など、少し違うところがあるので、ここは修正をしていければあとは大凡OKではないでしょうか。

 

さて、このような方法の活用場所は随所にあります。

たとえば、

  • 先方様からいただいた見積りなどを自社でペーパーレス管理する(画像を読み込んで、必要な形で管理すれば可能)

  • PDFファイルから文字認識・画像認識を使って、簡単に管理できるようにする

  • 何かの転記作業を効率化する

 

など、活用されるところは多いかと思います。

 

処理結果のところは、現時点ではコンソールに出力をしておりますが、実際にはCSV、EXCELなどに直接吐き出しても問題ないかと思います(現時点ではCSVへの出力を行っています)。

 

また、日本語などへの対応や、文字化けが気になるという方にはそれぞれやり方がありますので個別にご相談ください。

 

では、また次回!

 

 

ASUKARU WEBシステム

1. 乗船料金自動算出システム

蒲江交通乗船料金算出システム

蒲江交通有限会社様の料金試算システム(料金表は2014年)になります。ここではこれまで不透明さがあった乗船料金を簡単に計算することができるようなシステムとしました。

demoはこちら

 

 

2. 指定のサイトから特定のキーワードを取得するシステム

特定のキーワードを取得するシステムーASUKARU

特定のサイトURLからキーワードを抽出してくるシステムを作りました。

demoはこちら

 

3. Google Map API で エリアマーケティングのマップを表示

GoogleMapAPI

こちらは、エリアマーケティングのためにGoogleMapAPIを活用してシステムを構築したものの一部になります。

完全版はお見せすることはできませんが、参考までに

ログインID: sample@sample.com

パスワード: sample

demoはこちら

 

4.  船舶内にて海産物をクレジットカード決済で購入できる

PaypalAPI

蒲江交通有限会社にて乗船中に、蒲江の美味しい海の幸を購入できるようにしました。しかもクレジットカード決済を搭載していましたので、現金の受け渡しはその場では必要でなく、商品の引き渡しだけでしたので大くのお客様をたった一人でさばくことができました。

demoはこちら

 

5. cocoroさんのシステムを開発

Cocoroさんのシステム

ケーキ屋さんのCocoroさん。

そこでのシステムを開発中です。

 

 

 

6. 特定の場所にアップロードした画像を表示

ケーキのデコレーション用に、ということでしたが、ここではベジータに代用してもらい、画像をアップロードしてベジータの画面に表示させるというシステムになります。

demoはこちら

 

 

 

 

 

 

7. スマホ修理対応システム(顧客管理・業務管理)

スマホ修理対応システム

こちらは、スマホ修理を事業として展開している方のための顧客管理・業務管理システムです。

特に予約の受付から、来店頻度やサポート体制、修理に要する時間などをDBに保存し、集計、データ化することができます。

demoはこちら

 

8. QRコード発行システム

こちらはQRコードを発行するシステムになります。長い文字はQRコードの画像画面を真っ黒にしてしまうため、一旦URLを短縮してQRコードを生成、発行することでQRコード自体が真っ黒になることを防ぎます。

demoはこちら

 

 

9. ブログ投稿システム

ブログを投稿するシステム。

 

demoはこちら

 

 

 

10. サプリメントのLP制作

サプリメントのランディングページです。このページでは、顧客属性データを収集して、今後の分析に活かせるようにDBにデータを保存することができるようにしています。

管理画面では、こういった顧客属性のデータをリアルタイムで把握して展開ができるようにしています。

 

demoはこちら

 

 

 

 

 

以上は、直近1年以内のものになります。

jQueryでチェックボックスの値を配列に格納・削除する方法

どっがーん!!!

佐賀県神埼市は非常に強い夕立(昼ダチ??)をいただきました。久しぶりに雷雨。明日は晴れて欲しいです。また、台風も来ていますね。現在も神埼市は大雨です。

佐賀県は全体的に平野なので夕立などは非常に激しく、稲光も当然のごとく空から地面に突き刺さります。容赦ない感じがもともと大分県民だった私には驚きでした。私の地元の大分県では、雷音だけでも相当珍しいのです。それが稲光が激しいのって、半端ではありません。

 

ところで、表題の件ですが、jQueryでチェックボックスの値を配列に格納するのはよくあること。けれども、チェックしてchecked状態になっているチェックボックスのチェックを外した時に、そのデータを操作するというものはあまり見かけませんでした。

そこで、今日はこちらを準備しました。

jQueryでチェックボックスの値を配列に格納・削除する方法

 

いくつか前提にしなければならないことがあるのですが、チェックボックスの実装イメージとしては、下記写真のような感じです。

複数のチェックボックスの値を取得・削除する方法|| 佐賀県神埼市アスカル

 

お気付きの方は。これがEC-CUBEであるということを察知されたことでしょう。

それはいいのですが、要はこのようにデーターベースに登録されている情報をIDなどの主キーを一緒に取得してきて吐き出している状態です。この前提が抜けてしまうと思っていた挙動をしないということもあるかと思います。

そして、今回は結構な力技をも用います。

 

HTML側

まず、HTML(テンプレート側)ですが

<td rowspan="2">
    <input type="checkbox" name="direct_delivery" value="1" id="direct_delivery_<!--{$arrResults[cnt].c_id}-->"/><label for="direct_delivery_<!--{$arrResults[cnt].c_id}-->">1</label>
</td>

 

と、テーブルを作成して、inputタグのid部分にはここではc_idとしておきます。上のはEC-CUBEのものをそのままなので。テンプレートエンジンにSmartyが使用されているため初見の方には馴染みがないかもしれません。

実際に簡単なHTMLを記述するとなると、

<table>

<tr>

 <td>

  <input type="checkbox" value="1" id="order_<?php echo htmlspecialchars($id, ENT_QUOTES, 'utf-8'); ?> >1(任意値)

 </td>

</tr>

</table>

 

という具合になるかと思います。このIDのところがPOINTですね。

 

jQuery側

 

<script>
  var idArray = []; −❶
  $('#direct_delivery_<!--{$arrResults[cnt].c_id}-->').on('click',function(){ −❷
  if ( $(this).prop('checked') == true ) { −❸
    var idname = $(this).attr("id");
    idArray.push(idname);
    console.log(idArray);
 } else {
    var idname = $(this).attr("id");
    for(i=0; i<idArray.length; i++){ −❹
      if(idArray[i] == idname){
        idArray.splice(i, 1);
      }
    }
    console.log(idArray);
  }
});
</script>

 

jQuery側は、このようにまず❶の部分で空の配列を作っておきます。後々この配列の中へチェックボックスでチェックを入れたり外したりする時の値を入れていきます。

次に、イベント発生は❷の部分で、今回はチェックボックスのIDを用いて指定をしていきました。こちらもテンプレートエンジンとの関係で、IDの指定をするのに波括弧を使用しておりますが、適宜ID名を指定してください。なお、勘の良い人はこの時点で気づくかと思いますが、このc_idは、実際にはPHPのループ文の中で使用されます。そのため、この記述をそのままテンプレートの下に貼り付けると、展開されるコードが冗長になります

ここは各システム内部の話になるのでどのように書くかはそのシステムごとに異なるとしか言いようがないです。

 

特に、inputタグのvalue属性とID値とが関連している場合には、このようなコードを書く必要がないこともあると思います。

 

何れにしても、❸の部分で条件分岐をしているのですが、trueの時はチェックがされた時、falseはチェックが外された時です。それぞれ、初期値が空の配列の中にデーターを格納したり、削除したりしています。ところで、Pythonなどとは異なり、jQueryの世界では値で配列内の特定の値を削除するということが組み込み関数ではできないみたいです。

 

そのため、❹ループ処理を使って配列の中身を検索して該当するものを削除する処理を記述しています。

 

 

 

以上が、今回のjQueryを使用したチェックボックスのチェック状態に応じてデーターを取得する方法についての実装です。

先にも触れましたが、それぞれのシステムに応じて異なることになるので実装される際にはソースが適宜変更になると思いますので、その点だけご容赦ください。

 

 

神埼は大雨ですが

 

 

この大雨は明日まで継続するらしいです。でも、これでようやく梅雨明けかもしれないですね。

それでは、今後も開発頑張っていきましょう!

 

 

佐賀県神埼市でWEBシステム、AI、IoT、IOS、Androidアプリ開発

-*– ASUKARU –*-アスカル

TEL 0952-60-2693

Email asukaru2014@icloud.com

Adress 〒842-0002 佐賀県神埼市田道ヶ里2176-13

Twitterへのログイン方法

今日は雨の神埼市

 

こんにちは。

アスカルの代表です。

今日は二日ぶりの雨に、涼しい朝を迎えています。神埼の夏は、大分県の佐伯市蒲江のように涼しいわけではないのです。ただ、山、川はこちらの方が多いので、清流などでは最高に楽しい遊びができるというわけですね。

 

神埼クリークのバス釣りが楽しい

ところで、涼しい朝晩ですが、神埼のクリークにてバス釣りをしています。ただこれがばらしの連続で、スピナーベイトをぐるぐる巻いてきても、日中は後方からゆっくりと追いかけてくる程度です。

アタックしてきてくれるのはだいたい、夕方、早朝の2軸です。ショートバイトも多いので、対策は必要だと思います。

 

 

さて、そんな私ですが毎日PCの前でシステムを改修・開発しているのですけれども、Twitterなどは断然素人でした。適当なメールアドレスでアカウントを作ってしまっていたため、メールアドレスでのログインもできない状態。

そんな適当アドレスでTwitterにログインできなくなった方のため、別の方法でログインをしてみましょうということをここに残しておきます。

と言っても、単純に今後もこのことを忘れるであろう私の備忘録です(笑

 

Twitterログイン方法

  1. メールアドレス認証 まずは、メールアドレス認証ですがこれがもっとも単純かつ最適な方法ですよね。ただ、メールアドレスが変更されると、メールアドレス宛にメールが届かない、とか、人間の記憶も昔のメールアドレスを覚えられておけるほど性能の高いものではないので、記憶の欠如ということになってしまいます。
  2. アカウント名認証

 

そのため、アカウント名を使用してログインをすることができるということを知っておくと便利です。私の場合はこれでなんとか忘却してしまったアカウントにログインすることができました。

 

いずれもダメなときは

 

 

 

….

あきらめるより他ないかもしれません。

 

 

 

GCPでエラー表示 ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: Your app may not have more than 15 versions. Please delete one of the existing versions before trying to create a new version.

GCPで次のようなエラーが出力されることがある。

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: Your app may not have more than 15 versions. Please delete one of the existing versions before trying to create a new version.

 

GCPでバージョンが多すぎるというエラー

 

これに対応するには、要は不要な過去のバージョンを削除していけばOKということ。

 

まずは、バージョンを確認してみよう。

gcloud app versions list

 

 

次に、過去のバージョンを削除しよう。

 

gcloud app versions delete バージョン

 

最後にもう一度、アプリのデプロイをすればOK!

gcloud app deploy