Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【奮闘記】準フリーランスからフリーランスへ

f:id:qstairs:20170209000813j:plain

久々の投稿です。

10/20をもって常駐による仕事を終了し、
本日から個人受託で家で仕事をします!

これでフリーランス(勝手に作った言葉です)から
働く時間や場所を縛られない真のフリーランスになります。

あくまでもこの選択は
自分が進めたいサービスに対する時間を確保することが目的です。

サービス

では、開発するサービスとは何か。

それは、
頑張るITエンジニアが報われるような世の中を目指したサービス
です。

ITエンジニアは営業のように数値で簡単に評価することはできない職種です。
それにより、人よりも効率的に働いても評価されにくく、
仕方なく働いた時間でしか測れないという残念な状況になっています。

こういった状況を打破すべく、
ITエンジニアの能力や業績を見える化するためのアルゴリズムを作成し、
定量的な数値によってITエンジニアが評価される仕組みを開発していきます。

まずは、ITエンジニアの能力を見える化するサービスを開発しています。

近いうちにサービスについてもこのブログで紹介させていただきます。

以上

【Django】サーバへのデプロイ時に気を付けること(Invalid HTTP_HOST header等)

f:id:qstairs:20160601221351j:plain

はじめに

ローカル環境でWEBアプリを作成し、
さあ、サーバにデプロイだ!
というときに気を付けることを書きます。
#実際に私が引っ掛かってます...


1. サーバ起動のコマンドはいつもと違う
2. 設定ファイルに一手間

1. サーバ起動のコマンドはいつもと違う

ローカルで動かす場合、以下を実行しておけば問題ありませんでした。

python manage.py runserver

ただ、実際に外部サーバで動かす場合は、
以下のように「0.0.0.0:8000」を加える必要があります。

python manage.py runserver 0.0.0.0:8000

2. 設定ファイルに一手間

サーバも起動したことだし、
WEBアプリを確認してみよう
とアクセスすると...

f:id:qstairs:20170830234748p:plain

なんじゃこりゃですね。(^^;

そんな時は、

プロジェクト名/settings.py

の中にある、

ALLOWED_HOSTS = []

を以下のように変更して更新するとちゃんとアクセスできるようになります。

ALLOWED_HOSTS = ['サーバのアドレス', 'localhost', '127.0.0.1']

最後に

今回はデプロイ時の注意点を紹介しました。
今まさに私が作ったWEBアプリをデプロイ中なのでいろいろ躓いている最中です。
さらに気を付けることが判明した時は更新していきます。

以上。

【Django】HTMLのfor文でカウントアップ

f:id:qstairs:20160601221351j:plain

Djangoで開発していますが、
forの中でカウントアップする方法を試行錯誤していました。

30分ぐらい調べたり実装したりしましたが
ようやく実現方法を見つけたので備忘録

{% for item in items %}
  {{ forloop.counter }}    #先頭(1)から1ずつカウントアップしてくれる
  {{ forloop.revcounter }} #末尾から1ずつカウントダウンしてくれる
{%endfor%}

知っていれば一発ですね...

以上

【関連記事】
qstairs.hatenablog.com
qstairs.hatenablog.com
qstairs.hatenablog.com

【Django】Modelから条件に合ったオブジェクトを取得する場合の注意点(filter,get)

f:id:qstairs:20160601221351j:plain

DjangoのModel (django.db.models.Model) で定義したクラスにおいて、
条件に合ったオブジェクトを取得する際、

リスト(複数個)を取得する場合は「filter

一つだけ取得する場合は「get

を使用する。


「get」で条件に合ったオブジェクトが複数個存在する場合、

MultipleObjectsReturned

という例外が発生する

以上

【Django】ログイン処理

f:id:qstairs:20160601221351j:plain

Djangoで簡単なログイン処理について備忘録


とりあえずソースコードは以下

# views.py

def login(request):
  try:
    m = Member.objects.get(username=request.POST['username'])
  except Member.DoesNotExist:
    return render(request, 'login.html', {'response':-2})

  if m.password == request.POST['password']:
    request.session['member_id'] = m.id
    return render(request, '次の画面へ')
  else:
    return render(request, 'login.html', {'response':-1})


処理の流れは以下

ログイン画面で入力したusernameが
Memberテーブルに存在すればMemberオブジェクトを取得
Memberテーブルになければ
except Member.DoesNotExist:
で例外をキャッチし、ログイン画面にエラーコードを返す

Memberオブジェクトを取得後、
ログイン画面で入力したpasswordがMemberのパスワードと一致すれば
セッションにIDを登録して次の画面へ
一致しなければ
ログイン画面にエラーコードを返す


Django記事】
qstairs.hatenablog.com
qstairs.hatenablog.com
qstairs.hatenablog.com

【Django】UnicodeEncodeError: ‘ascii’ codec can’t encode characterが出たら

f:id:qstairs:20160601221351j:plain

Djangoでmodelsで定義しているモデルで日本語を使うと
以下のエラーが出る場合があります。

UnicodeEncodeError: ‘ascii’ codec can’t encode character

その場合は、モデルに

def __unicode__(self)

を追加しましょう。

def __str__(self)だけだとだめみたいです。


Django記事】
qstairs.hatenablog.com

qstairs.hatenablog.com

広告