Code4Startup

Code4StartUp ~ UberEatsを作ろう ~ heroku環境整備

Code4Startup さて、herokuが動作するようになると、おもむろにGunicornをインストールします。 Gunicornとは何か http://gunicorn.org/ Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for UNIX. Python製のWSGI サーバ WSGI とは何か http://gihyo.jp/dev/feature/01/wsgi/0001 WSGIはJavaにおけるJava Servelet APIと同じように,WebサーバとWebアプリケーション間の汎用的なインターフェースを定義しています。 要するに、Djangoを動作させるための土台、と考えればよいでしょうか。 次にインストールするのが、WhiteNoise WhiteNoiseとは何か https://pypi.org/project/whitenoise/ http://furodrive.com/2016/01/white_noisedjango/ WhiteNoiseとはWSGIアプリケーションのための静的ファイルを配信するのを簡単にしてくれるライブラリです。 少しの設定をするだけでAmazon S3やNginxに頼ることなく静的ファイルを配信できます。 本番サーバーで画像やcss等を参照できるようにするには色々と手順を踏まないといけなかったのですが、WhiteNoiseを使うとそのような手間が省けて大変便利です。 続いて、dj-database-url dj-database-urlとは何か https://github.com/kennethreitz/dj-database-url http://y0m0r.hateblo.jp/entry/20121130/1354290868 dj-database-urlを使うとdb接続文字列を環境変数DATABASE_URLから取得させることができます。 さらにpsycopg2 PythonのPostgreSQL用ドライバ これで、herokuに乗せるわけですが、色々講義内で想定されているエラー以外に、想定外のエラーが。 could not determine PostgreSQL version from ‘10.4’ 諸々のサイトを見るとpsycopg2のバージョンを上げろと。 http://initd.org/psycopg/docs/ こちらで表示されるのが、現時点で2.7.5なのでそうしてみます。 そうすると、こんな感じのエラー Could not find a version that satisfies the requirement psycopg2==2.7.5 (from -r /tmp/build_f493d80720eb882b01a250f718f3b058/requirements.txt (line 6)) (from versions: 2.0.10, 2.0.11, 2.

Code4StartUp ~ UberEatsを作ろう ~ herokuへの道は続く

Code4Startup 前回からの続き インストールされたということで、heroku loginしてみると、 Error: login is not a heroku command. 再インストールしなさいという情報があるので、 curl https://cli-assets.heroku.com/install-ubuntu.sh | sh しかし、エラー変わらず。 手当たり次第という感じですが、 wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh 変わらない。 https://teratail.com/questions/125977 に従ってみる。 npm uninstall -g heroku これでもheroku –versionは出てくるが・・・ wget https://cli-assets.heroku.com/heroku-cli/channels/stable/heroku-cli-linux-x64.tar.gz -O heroku.tar.gz tar -xvzf heroku.tar.gz mkdir -p /usr/local/lib /usr/local/bin sudo mv heroku-cli-v6.16.18-62346b1-linux-x64/ /usr/local/lib/heroku ↓実際に作成されたディレクトリ名に変更 sudo mv heroku-cli-v6.99.0-ec9edad-linux-x64/ /usr/local/lib/heroku sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku 失敗 ln: failed to create symbolic link ‘/usr/local/bin/heroku’: File exists ↓ sudo unlink /usr/local/bin/heroku

Code4StartUp ~ UberEatsを作ろう ~ herokuへの道

Code4Startup 講義ビデオは突然heroku loginから始まった。 しかし、cloud9ではherokuコマンドは効かない。 よって、インストールから。 http://www.lib-arc.com/entry/2018/04/15/234355 こちらでは、nodeは入っている前提。しかし、少なくとも私の環境には入っていない。 そこから。となると、こちらを参考。 https://qiita.com/beplocks661/items/8d840b6efcdcd14009bf と思ったらnvm: command not found。 https://qiita.com/seibe/items/36cef7df85fe2cefa3ea ここから。 sudo apt-get install -y nodejs npm sudo npm cache clean sudo npm install n -g sudo n stable node -v v10.2.1 ここからやっとherokuインストール npm install -g heroku-cli インストールは始まったけど、エラー ・・・ npm ERR! Please try running this command again as root/Administrator. ・・・ sudo npm install -g heroku-cli でOK heroku -v heroku-cli/7.0.9 linux-x64 node-v10.2.1 という感じでよいのでしょうか。 開発環境構築の基礎を学べます。 ん?cloud9って、こういうものでしたっけ?? Code4Startup

Code4StartUp ~ UberEatsを作ろう ~ Djangoのデバッグ

Code4Startup 前回に続き、Registration機能の実装ですが、どうもデータが登録されません。 では、ということでデバッグ実行をしようと思ったのですが、これがまたうまく動きません。 そもそもサービス起動のために python manage.py runserver xxx.xxx.xxx.xxx:8000 を叩かなければいけないということですから、普通にRunボタンを使って実行することができないわけです。 では、と思って、New Terminalでコマンド実行用のウインドウを開いて、その中で上記のコマンドを叩こうとしましたが、cdコマンドが効いてくれないようです。 ではでは、 python foodtasker/manage.py runserver xxx.xxx.xxx.xxx:8000 とすると、 Traceback (most recent call last): File “foodtasker/manage.py”, line 17, in “Couldn’t import Django. Are you sure it’s installed and “ ImportError: Couldn’t import Django. Are you sure it’s installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment? となってしまいました。 なお、こちらのサイトでも、2017年12月3日現在、デバッグ実行ができないと判断されているようです。 むう。。。 とりあえずはやむを得ないので、こちらを参考に、コンソールに出力。いつの時代も安定のコンソール出力。 失敗の原因は色々で、objectsとobject(誤)とか、FalseとFALSE(誤)とか。 もう少しエディタの力で何とかならないものか・・・ Code4Startup ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 posted with カエレバ 斎藤 康毅 オライリージャパン 2016-09-24 売り上げランキング : 228

Code4StartUp ~ UberEatsを作ろう ~ Registration

Code4Startup Djangoで持っているUser管理の機構を利用する部分。 それ以外に内容的に特筆すべきところはないですが、いったんエラーを発生させて、コンソールに表示されているエラーを確認して、対処するという流れ。 Cloud9だと、コンソールウインドウを見ながらソースを書いているような画面構成で、ソースを保存した時点でエラーがあればエラーを表示してくれる。 これは非常に便利。 Code4Startup

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 posted with カエレバ 斎藤 康毅 オライリージャパン 2016-09-24 売り上げランキング : 231


Code4StartUp ~ UberEatsを作ろう ~ Sign In & Sign Out

Code4Startup 画面を横に並べて、動画見ながらコーディング、という形にすればよいのでしょうが、動画を見てから書こうとすると、しばしば間違いが。 ログインページのテンプレートファイルで {% load staticfiles %} を忘れずに。忘れるとinvalid block tag ‘static’というエラーが発生。 {% csrf_token %} というお約束。こういうの見ると萌える。 で、一通り書いてみましたが、 http://(公開アドレス):8000/restaurant/sign-in/ で何も表示されない。なんだろうと探ります。 あまりコーディング中の自動補完(clodu9のAce Editor)は正しくないのも、うーん(Visual Studioっ子なので)。 django.contrib.auth のauthが表示されなかったり、 auth_views.logoutは表示されるけど、auth_views.loginは表示されなかったり。 かなり手間取りましたが、実際は単なる記述ミス。 タグは自動補完が走り、例えば」を入力すると「」になってしまう罠。 ちなみに、url名は「sign-in」、テンプレート名は「sign_in.html」みたいなのは、一般ルールでしょうか? これもsign-inと書くべきところをsign_inと書いていたりしました(そういう補完候補が出る、というのもあるし)。 なんとかかんとか、ログイン認証の仕組みができました。先は長いぞ。 Code4Startup   ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 posted with カエレバ 斎藤 康毅 オライリージャパン 2016-09-24 売り上げランキング : 231

Code4StartUp ~ UberEatsを作ろう ~ Django環境続き

Djangoが動作する環境ができたら、アプリを作成していきます。 「python manage.py startapp foodtaskerapp」により foodtasker foodtaskerapp のディレクトリが並ぶ形になります。 ここから、行ったり来たりになりますが、 ・まずは、foodtaskerのsettings.pyのINSTALLED_APPSに追加 ・次に、foodtaskerappのviews.pyにhomeメソッド追加 ・次に、foodtaskerのurls.pyのurlpatternsに追加 ・次に、foodtaskerappにtemplateディレクトリを作成し、home.html作成 という形で作成していきます。 講義ビデオではatom+emmetのスニペットが快適そうに見えますが、まあ、そんなに使うものでもないと思うので、Cloud9のAceエディタの機能で進めます。最低限のスニペットはありますので。 いったん実行すると、「TemplateDoesNotExist」エラーが発生しましたが、単純に、 テンプレートフォルダ名は「template」ではなく「templates」ということでした。失礼。そして、 python manage.py migrate python manage.py createsuperuser により、管理画面が表示されます。 bootstrapも組み込んで(Bootstrap 4ではグリフアイコンをサポートしないため、「fonts」フォルダは削除されましたとのことなので、最新版を取得するとここはちょっと違います)、次はTask3です。 ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 posted with カエレバ 斎藤 康毅 オライリージャパン 2016-09-24 売り上げランキング : 303

Code4StartUp ~ UberEatsを作ろう ~ Python/Django環境

次は、Webアプリ側の環境で、Djangoです。 もう、これは、最初からCloud9で楽勝でしょう、と思っていたら甘かった・・・ AWS Cloud9とは  元々Cloud9を使用しており、開発環境をワンクリックで簡単に構築できることが売りだったので、それでよいやと思っていたわけです。 ただ、昨年AWSに統合されたバージョンがリリースされました。最初は旧版とAWS版並列で行くていくのかなと思っていたのですが、どうやら移行を促されるようなので、この機会にAWS版を使用することにしました。 (旧版は新規プロジェクト作成時は、こんな感じでテンプレートを選択できます。ボタンを押すだけで、すぐに開発環境ができあがり、ソースを書き始めることができます。)

 いざ使おうとすると、色々分かってきます。 まず、AWS Cloud9は、IDEとしては無償なのですが、環境とセットにはなっていません。 分かりにくいですが、他のサーバを使用してSSHで接続するか、AWSのEC2に乗せる必要があります。すなわち、環境自体は無償とは限らないということです。 EC2も12か月間は無償利用できるというのがアピールされていますが、1年後にどうするか悩むことになるのであれば、そこには頼りたくないなという気持ちがわきました。 選択肢として、たまたま最近さくらレンタルサーバを契約したので、それでもよいかと思ったのですが、それだと世間の人にとっては無償でもなんでもなくなりますし、そちらは今あまり壊したくないというのもありました。 そこで他の選択肢を探し、見つけたのがGCE(Google Compute Engine)でした。 GCE(Google Compute Engine)を使用する  GCEは、最初にOSやCPU等を選択して、まっさらのOS環境が提供される、という意味で、レンタルサーバとほぼ同様と考えてよいかと思います。 とはいえ最低限のものは入っていると予想して、設定を開始します。今回必要なのはPython3でDjangoを動かすことです。 ここで頭の中に持っておいた方が良いと思うことは、Cloud9(AWS)側の設定と、GCEの設定がある、ということです。そして、ほとんどの作業はGCE側の設定です。Cloud9の画面を見ていますが、それはGCEに接続して作業しているということです。  話がいったんAWS Cloud9に戻りますが、新規プロジェクト作成時に、ワンクリックで環境設定してくれる、という機能はなくなってしまいました。繰り返しますが、あくまでもIDEです。ですから、SSHで接続した後は、必要なインストール作業を行う必要があります。IDEの中にターミナル機能が統合されている等は旧版と同じですので、そこで以下の作業を行います。  まず、Cloud9側でPython3を選択します。けど、これは要はIDEの設定であり、環境の設定ではありません。 では、ということで、ここからCode4StartUpのビデオを見ながら環境を作っていこうと思います。 そしていきなり躓きます。「sudo apt-get install python3-venv」ができません。以下失敗なので、簡単に流しますが、python3.4-venvなら成功しますが、ビデオの後の方で3.5であることを確認されますので、やばい、3.5にあげないと、と思います。Cloud9の画面では「/usr/local/lib/python2.7/dist-packages:/usr/local/lib/python3.4/dist-packages:/usr/local/lib/python3.5/dist-packages」と書いてあるのに何でないのだ?と思っていたましたが、これはあくまでもIDEの設定です。環境は別です。 色々調べて、「sudo python -m pip install –upgrade pip」しようとしますが、ないと言われます。色々あって、3.5ではなく最新の3.6でよいやと思い「sudo add-apt-repository ppa:jonathonf/python-3.6」以下・・・(省略)でインストールします、しかし、「python3.6 –version」では3.6インストールが確認できますが、「python3 –version」ではまだ3.4を参照しています。 そこで、pyenvというものの存在に出会い、「curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash」でインストールしようとしますが、gitが入っていない、とのエラー。なんと!そこからですか! gitインストールしてから再度pyenvインストールして、それでも「pyenv install –list」で表示されないので「sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils」して、「pyenv install 3.


Code4StartUp ~ UberEatsを作ろう ~ Swift環境

Code4Startup こちらが本題の、UberEatsを作ろう(Create UberEats with Python/Django and Swift 3)。 まずは、環境構築から始まるのですが、Python、Heroku、Atomは使用するしないは良いとして、XcodeはWindows環境だとどうしようもない。 しかし、今の時代、色々な方法はあるようで、Swiftのためだけなら、Xcodeがなくても何とかなるっぽい。 ということで、環境作ってみました。 IBM Swift Sandboxはもう存在しない? まず、最初に、「IBM Swift Sandbox」というものが気になりましたが、現在はリンク切れです。 ただ、もう少し粘ってみると、IBM Cloud App Service というものに誘導されます。 こちらを登録すると、開発環境も使えるようになるのですが、その言語がSwiftになっています。 (いろいろなタイプが選べますが、一番左上の「プロジェクトの作成」を選ぶとswiftになるのです。)

けど、より簡単なのは、Swift Kituraを選択することのようです。

しかし、いずれにせよ、Swift Sandboxで企図されていたようなものではないようです。その場でソースを書いて実行するのであればよかったのですが、あくまでもローカルでソースを書くのであれば、ちょっと必要性が薄いかなと。 こちらは、いったん中断しておきます。 ローカルにSwift環境を構築 ですので、ローカルに環境を構築することにします。 基本的には、 https://qiita.com/akira_/items/e5550dbb571a20deb3c1 を参考にさせていただきました。 Windows Subsystem for Linux、知りませんでした。 途中再起動等入るのと、これを有効にした後に、Linuxパッケージを導入する、というところに注意です。

Windowsでこんな選択画面を表示する、ということ自体驚きですが、いかがでしょうか。 その後は、インストールされたUbuntuバージョンに合わせて、記述を調整しながら進めれば、環境構築完了し、Hello worldまでは行けました。 なお、元々Git Bashが入っていた環境ですので、バッティング等も気にならないでもないですが、とりあえずどちらも動いています。 (2018年10月)結局MAC購入 Code4StartUp ~ UberEatsを作ろう ~ iMac購入して続行 結局、iOSアプリ作ろうと思ったら買わざるを得ませんでした・・・  Code4Startup


Code4StartUp ~ Landing Pageを作ろう

ちょっと、Noteを使ってみたりもしており、こちらはご無沙汰になりました。 Noteのような厳しい制約の中で書くのもそれはそれでありだと思うのですが、ちょっと厳しすぎる感もあり。 しかも、有償化はそんな簡単な話ではないなと。 ただ、ちゃんと構造化した文書、というものは意識したいなと思います。 Code4StartUpを始めてみる  実は結構前に始まっているサービスですが、最近知り、今の私に非常にマッチした学習ができそうということで始めることにしました。 登録は無料なのですが、登録すると、時間限定で、プレミアムプロジェクトであるUBER EATSコースが、499ドルから99ドルになるとの表示。あざとい・・・と思いながらぽちりました。なぜならUBER EATSこそが、今回のきっかけだから。

Landing Page作成プロジェクト  しかし、最初は無料コースから。 無料コースとはいえ、Bootstrapでランディングページを作って公開するところまでやってみよう、というのはなかなかセンスが良いのではと思います。 そして、色々知らないサービスも勉強させてもらえました。 Start Bootstrap https://startbootstrap.com/ Bootstrapのデザインテンプレート。 日本人向けだとまたちょっと違うかなという気もしますが、今回は日本人向けではないので、そういう意味でも役に立ちます。 Font Awesome https://fontawesome.com/ 講義ビデオの中では、fontawesome.ioになっている。 そして、envelope-opeのページに記載されているリンクも、講義ビデオだとclass=”fa … だけど、現在のページだとclass”fas … 理由はFont Awesomeが4から5にアップグレードされているためでした。 ”fa fa-map-marker fa-stack-1x fa-inverse”でアイコンは変更されます。 Chromeの右クリックInspectは日本語版だと検証(Ctrl+Shift+I)。 講義の中で使われている記述”col-md-offset-3”が反応しない。→offset-md-3が正解。 理由はBootstrapが3から4にアップグレードされているため。 MailChimp https://mailchimp.com/ メール送信サービス 。昔DM送信で苦労した記憶が18年たっても忘れられない身としては、ありがたや。 Wufoo https://www.wufoo.com/ フォーム作成サービス。今どきはこんな風に実装するんですね。 githubデスクトップ なかなかgithubを導入しきれませんが、これはちょっと良いかも?後日導入記を書くことになりそう。 Bluehost 海外有料サーバはあまり調べたことがなかったですが、ここが主力っぽいですね。日本だとさくらの位置づけ。ただ、日本のサービスと違い、1ドメイン取得無料は大きいかも。 一通り見てみました。 後は、公開前のセキュリティチェック等があるとよいのではと思いました。 そして、UBER EATSコースに入っていきたいと思います。