群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でAIを使った画像解析やシステム開発をしています。介護記録システム「バイタルチェッカー」、見守りAIカメラ 「Casper」を自社開発。 Python / Django / Flask / FastAPI

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 2
  • Django 40
  • Flask 4
  • Information 35
  • Other 8
  • PHP 1
  • Python 69
  • Pythonista 3
  • 未分類 1

タグ


api argparse Beautiful Soup black calender Channels charset ChromeDriver datetime Docker enumerate f-string File Watcher flake8 gettext GitHub glob Google Colaboratory GPU Gunicorn i18n Jupyter Matplotlib Nginx OpenCV pandas Pillow pip Pipenv PostgreSQL psycopg2 PyCharm PyCon pyenv PyTorch random Redis ReportLab requests Selenium slack timedelta Ubuntu uWSGI venv

最新の投稿


Python
サッカーコートの白線を抽出する
Posted by EIGHT on 14th 6月 2022

次のようなサッカーコートの白線の部分を線分としてを抽出したい。 まず考えたのは、緑色か否かで判定して白黒画像にすることだ。白黒画像にすることで、線をより明確に可視化させることができ、その後エッジだけ抽出して線分判定をすれ […]

Python
pyenvでインストールしたPythonのバージョンを更新する
Posted by press on 14th 6月 2022

pyenvでインストールしたPythonのバージョンを更新する pyenvで最新のPythonをインストールしようとしたところ、pyenvのバージョンが古く最新のバージョンがリストになかったので、pyenvをアップデート […]

Django
DockerとDjangoでマイグレーションコマンドを実行するとエラーになる
Posted by press on 13th 6月 2022

DockerとDjangoでマイグレーションコマンドを実行するとエラーになる Docker環境で構築したDjangoプロジェクトでマイグレーションコマンドを実行した際に、docker-compose.ymlとsettin […]

Other
GitHubのイシューとPyCharmのタスクを連携
Posted by press on 2nd 6月 2022

GitHubのイシューとPyCharmのタスクを連携 GitHubのイシューとPyCharmのタスクを連携させて、GitHubのイシューをPyCharmに表示させる設定方法です。画面を切り替えなくても追加されたGitHu […]

Python
BERT+UMAPを実装した
Posted by EIGHT on 31st 5月 2022

https://shuhoyo.hatenablog.com/entry/nogizaka46-lyrics-nlp 上記サイトを参考にBERT+UMAPを実装してみた。 BERTとは BERTとは自然言語処理の1手法の […]

このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(69)
  • Django(40)
  • Information(35)
  • Other(8)
  • Flask(4)
  • Pythonista(3)
  • AWS(2)
  • 未分類(1)
  • PHP(1)

Filter by Author

  • EIGHT (10)
  • press (132)
Back to Latest Articles
Python

ツイートを位置情報でプロットして時系列に纏めるtapiokaHeatmapの解説

ツイートを位置情報でプロットして時系列に纏めるtapiokaHeatmapの解説 今回はタピオカのツイート数を位置情報でプロットして時系列に纏めるソースコードについて解説する。 ソースコードは下記のgithubにあるので […]

Posted on 26th 10月 2021 by EIGHT

Django

DjangoとChannelsで簡単なチャットサーバーを構築(3)

前回からの続きです。 チャンネルレイヤーを有効化 チャンネルレイヤーを使用するためにバックエンドにRedisを使用します。Redisを使用するためにDockerを起動します。 以下のコマンドを実行してRedisを起動しま […]

Posted on 26th 6月 2019 by press

Django

DjangoとChannelsで簡単なチャットサーバーを構築(2)

前回からの続きです。 ルームビューを作成 chat > templates > chat > room.htmlを作成します。 ルームビューを表示するためのviewを作成します。 ルームビューへのurl […]

Posted on 25th 6月 2019 by press

Django

DjangoとChannelsで簡単なチャットサーバーを構築(1)

こちらのチュートリアルと同じ内容です。https://channels.readthedocs.io/en/latest/tutorial/index.html 環境 Python 3.7.0Django 2.2.2ch […]

Posted on 22nd 6月 2019 by press

Python

Beautiful Soupでoptionタグのvalueを取得する

Beautiful Soupで以下のようなHTMLのoptionタグのvalueを取得する方法です。 optionタグのvalueの値を取得する方法 soup = soup.find_all('option')optio […]

Posted on 15th 6月 2019 by press

Django

Dockerを使ってDjangoとPostgreSQL環境を構築する方法

Dockerを使ってシンプルなDjangoとPostgreSQLの開発環境を構築する方法です。GitHubリポジトリをクローンして以下のコマンドを入力します。 1. Dockerイメージを作成 2. Djangoプロジェ […]

Posted on 8th 6月 2019 by press

Django

DjangoでダウンロードするCSVの文字コードを設定

以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8で […]

Posted on 6th 6月 2019 by press

Django

That port is already in use.が表示された時の対処法

Djangoでrunserverコマンドを使って開発用サーバーを起動した時にError: That port is already in use.が表示された時の対処法です。 Error: That port is al […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像を合成する

Pillowを使って画像を合成する方法です。GitHubリポジトリ 上の2つの画像を合成して、下の画像を生成します。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ base_image = […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像をリサイズする

Pillowを使って画像をリサイズする方法です。GitHubリポジトリ Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ files = glob.glob('./images/*')imag […]

Posted on 22nd 5月 2019 by press

Python

Pillowを使って画像をクロッピングする

Pillowを使って画像をクロッピングする方法です。ソースコードはGitHubにあげています。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をクロッピング files = glob.glob('./ […]

Posted on 21st 5月 2019 by press

Django

Djangoで開発をする際に仮想環境を構築する方法

Djangoで開発をする際にvenvを使って仮想環境を構築する方法です。pyenvがインストールされていてバージョンを切り替えできる状態を前提に進めます。 仮想環境について Pythonで開発していると開発環境では最新の […]

Posted on 20th 5月 2019 by press

Python

PythonistaでiPhoneから株価をスクレイピング

Pythonistaには多くのモジュールがプリインストールされていて、スクレイピングに必要なBeautifulSoupも初めから使える様になっています。そこで、今回はiOSアプリのPythonistaを使ってiPhone […]

Posted on 2nd 5月 2019 by press

Django

pandasで読み込んだCSVの値がNaNだったときの対処方法

DjangoのWEBプリケーションでCSVをpandasで読み込んでforで一行ずつループ処理をしたところ、毎回決まったところで決まったエラーが出たのでPyCharmのデバッグ機能を使って原因を調べた内容です。 プログラ […]

Posted on 28th 4月 2019 by press

Python

Pythonでフォルダ内のファイルを別のフォルダにコピー

Pythonであるフォルダ内のファイルを別のフォルダにコピーする方法です。 ディレクトリ構造(ファイルのコピー後) directory = (os.getcwd())現在のディレクトリを取得します。 image_path […]

Posted on 28th 4月 2019 by press

Python

Pythonでディレクトリ内のファイルを取得する

globモジュールを使いディレクトリ内にあるファイルを取得する方法です。 ディレクトリ構造 まずはディレクトリ内のjpgを全て取得します。 directory = (os.getcwd())で現在のディレクトリのパスを取 […]

Posted on 26th 4月 2019 by press

Django

DjangoでDateTimeFieldが今日のデータを取得する方法

Djangoのモデル上でDateTimeField型のデータが今日の日付のデータを取得する方法です。 1つ目00:00:00から23:59:59までの範囲を条件に取得します。 2つ目今日の日付が含まれるものを条件に取得し […]

Posted on 26th 4月 2019 by press

Python

変換できない文字が混ざった文字列をShift-JISに変換する

テキストファイルやCSVファイルに書き出す時に文字コードをShift-JISに指定して書き出すとエラーになる場合があります。よく見るのが、-や を変換した時に出るエラーで\uff0dや\xa0と表示されます。 […]

Posted on 26th 4月 2019 by press

Django

Djangoでカスタムコマンドを作り実行する

DjangoでWEBアプリケーションを開発していてデータベースの集計などをバッチ処理したいときに、カスタムコマンドを作り実行する方法です。 今回はサンプルとしてmycommandアプリケーションを作成するので以下のコマン […]

Posted on 24th 4月 2019 by press

Django

Djangoで日本語文字列のQuerySetを五十音順でソートする

DjangoのWEBアプリケーションでQuerySetの表示順を五十音順にしたら、開発環境では五十音順で表示されているのに本番環境では五十音順になっていないときの対処法です。(中途半端に五十音順になっていて、4、5件毎に […]

Posted on 22nd 4月 2019 by press

Flask

PythonistaでFlaskからHello World!

iPhoneとiPadから使えるPythonistaというアプリを使ってFlaskからHello World!する方法です。 Pythonistaはプリインストールされたモジュールが充実していて、バージョンも2.7か3. […]

Posted on 10th 4月 2019 by press

View Latest Posts
Django

DjangoとChannelsで簡単なチャットサーバーを構築(3)


press
DjangoとChannelsで簡単なチャットサーバーを構築(3)
Posted on 26th 6月 2019 by press
2022年度 インターンシップ 募集開始

前回からの続きです。

DjangoとChannelsで簡単なチャットサーバーを構築(2)

チャンネルレイヤーを有効化

チャンネルレイヤーを使用するためにバックエンドにRedisを使用します。
Redisを使用するためにDockerを起動します。

以下のコマンドを実行してRedisを起動します。

$ docker run -p 6379:6379 -d redis:2.8

django_channels/settings.pyの一番下にCHANNEL_LAYERS設定を追加します。

# django_channels/settings.py
# Channels
ASGI_APPLICATION = 'mysite.routing.application'
CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [('127.0.0.1', 6379)],
        },
    },
}

Djangoシェルを開き、以下のコマンドを実行して、チャンネルレイヤーがRedisと通信できることを確認します。

$ python manage.py shell
>>> import channels.layers
>>> channel_layer = channels.layers.get_channel_layer()
>>> from asgiref.sync import async_to_sync
>>> async_to_sync(channel_layer.send)('test_channel', {'type': 'hello'})
>>> async_to_sync(channel_layer.receive)('test_channel')
{'type': 'hello'}

{‘type’: ‘hello’}が表示されれば成功です。

チャンネルレイヤーができたので、chat / consumers.pyを以下のように修正します。

# chat/consumers.py
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
import json

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'chat_%s' % self.room_name

        # Join room group
        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )

        self.accept()

    def disconnect(self, close_code):
        # Leave room group
        async_to_sync(self.channel_layer.group_discard)(
            self.room_group_name,
            self.channel_name
        )

    # Receive message from WebSocket
    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        # Send message to room group
        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name,
            {
                'type': 'chat_message',
                'message': message
            }
        )

    # Receive message from room group
    def chat_message(self, event):
        message = event['message']

        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'message': message
        }))

テストサーバーを起動して、任意のルーム名を入力してください。

$ python manage.py runserver

http://127.0.0.1:8000/chat/
にアクセスしてルーム名を入力します。

チャット画面


別のタブを開いて同じURLにアクセスしてフォームに”Hello”と入力して、もう一方のタブのチャットログに”Hello”と表示されれば成功です。

チャット画面
チャット画面

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    press
    • Channels
    • Docker
    • Redis
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit
    Show Comments (0)

    Comments

    Cancel Reply

    コメントを投稿するにはログインしてください。

    Related Articles

    Django

    Djangoの国際化(i18n)で多言語化(後半)

    Djangoの国際化(i18n)で多言語化(後半) 前回からの続きです。 コードはGitHubリポジトリにあげています。 上記コードを実行すると、locale/en/LC_MESSAGES/django.poが生成されま […]

    Posted on 14th 6月 2020 by press
    Django

    pipenv shellをしてもactivateできない

    pipenv shellをしてもactivateできない pipenvで作った仮想環境に出たり入ったりを繰り返していると、pipenv shellをしても以下のようにShell for UNKNOWN_VIRTUAL_E […]

    Posted on 10th 7月 2021 by press

    最新情報をお届けします!

    メーリングリストに登録すると株式会社ファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません