新サービスのデータベースあれこれ

Last update

2018/11/06(火)


目的

今回はPHPでデータベースにアクセスする時の処理について考える場面になったので、必要なデータについてや、今後の方針などについて考えます。今回はメモ的な要素多めです。

データベース作ろう

カクテルレシピ共有サイトって何が必要なんですかね。

  • 登録番号
  • レシピ名
  • ユーザー名
  • シェイカーの有無
  • 使用したお酒
  • レシピ詳細
    • 使用したお酒以外で使った物があれば表示。

「使用したお酒」をどう処理する?

本来の想定では、使用したお酒を登録する際に、お酒の写真を載せるなどのUIにしようかと思いましたが、カクテルは同様のお酒を使用しても分量などで味が変わるものであるため、必ず使用したお酒を再度レシピ詳細に記入する必要があると考えを改めました。 そのため、今回のサービスでは「使用したお酒」についてのUIをあまり追求しないことにしました。

AmazonAPIについて

デプロイをするまでに至ってないため、今回の制作では導入を見送る方向になりそうです。 リキュールや日本酒など、お酒ベースでのレシピ検索に関しては精度は下がりますが、文字列部分一致の方で進めていこうかなと考えてます。

現状の課題

ようやく非同期通信の処理を書くところに来ているので、まずは思い出すところから。現在はJQueryPHPとの間でどのように処理するのがいいのか検討しています。

git pushがリジェクトされる。

Last update

2018/11/04(日)


目的

今回、commitしたファイルがバグありで出してしまったのでcommitを修正したいということでcommitの修正からそのPushまでです。 今回の記事は記憶で書いてます

参考資料

dackdive.hateblo.jp

作業内容

まずはじめにローカルcommitの修正から行います。 今回修正するコミットは直近のコミットだったのrebaseでvimが起動させます。

その後vimに表示されるコミット情報の先頭に表示されている「pick」を「exit」に変更します。 (すみません…ここはevidenceなしです…参考資料参照してください。)

$git rebase -i HEAD^

vimで変更後コミットの内容を変えていこうと思います。 まずは通常通りaddしたあとrebaseします。 コミットの内容も変更する場合は、git commit --amendを使ってコミットメッセージを変更します。 コミットを変更したら、次はPushをします。 今回のpushでは、オプションでfを使います。

$git add index.html
$git rebase --continue
$git push -f origin master

今回のような場合、オプションなしでPushを行うと下記のようなエラーが出る場合があるので、オプションをつけてPushします。

error: failed to push some refs to 'git@<URL>'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

これでリモートとローカルでコミットを変更できました。

補足

今回はオプションでfを使いましたが、このオプションは強制的にプッシュするため、本来はあまりよろしくないようです。

qiita.com

WindowsでLinuxコマンドを使いたい

Last update

2018/11/02(金) 


目的

今回はWindows上でLinuxコマンドを使って操作したいなと思ったので、それをできる環境を作ることにしました。

参考資料

tech.nikkeibp.co.jp

作業内容

今回の主な作業内容は
- WSLの有効か
- Linuxディストリビューションをインストール

powershell

まずはpowershellでの操作からWSLを有効化します。 powershellを開いて、以下のコマンドを入力しました。

$Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

うまく動くと再起動を促されたので、再起動を行います。

Linuxディストリビューション

LinuxディストリビューションWindowsアプリストアからダウンロードできます。今回はUbuntuディストリビューションをインストールしました。

www.microsoft.com

インストール後に起動を行い、しばらく待っているとユーザ作成の画面が出るので任意のNameとPasswordを設定します。

これで完了。

以下がevidenceです。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: <username>
Enter new UNIX password: <password>
Retype new UNIX password: <password>
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

<username>@<machine>:~$

動かしてみる

実際にLinuxコマンドを入力してみると、何も表示されないのです。 エラーをはいてなく、何が問題なのかわからなかったため、とりあえず、アップデートをしました

$sudo apt update
$sudo apt upgrade -y

それでも全くうまくいかんので、試しにコマンドプロンプトでlsコマンドを入力してみたら、普通に実行できる環境になってました。

$bash
$ls

これでLinuxコマンドで操作する環境が整いました。

まとめ

時間かかりすぎた気がする…

補足

翌日、コマンドプロンプトディストリビューションがインストールされてないと言われました。 Ubuntuを開いてみたら何故かエラーを出していました

Installing, this may take a few minutes...
Installation Failed!
Error: 0x800703fa ????????????????????? ?????????????????????
Press any key to continue...

PCを再起動後したら解消しました。

参考資料

qiita.com

jQueryを使ってみる

目的

インターンシップで初めてJavaScript用ライブラリjQueryを初めて触れたので今回のjsはjQueryを使ってみようと思います。

今回の追加

今回はトップページの検索項目について更新を行いました。
主な機能

  • カテゴリ別のプルダウン
    • すべて
    • レシピ
    • お酒
  • 検索入力画面

こんだけのHTMLとJQueryを書きました

記述内容

今回は別途のJSファイルに記述しました。HTMLでの参照コードはHEADタグに記述する為、$().ready(function(){ })で囲うことでHTMLを読み込み後、処理を実行するようにしました。

// HTMLが全て読み込まれたら実行
$().ready(function(){
    $('#s_top').click(function(){
        var s_cate = $('option:selected').val();
        var s_word = $('#s_word').val();
    });
});

進捗

だめだこりゃ。

新サービスについて

サービス案

新しいサービスを作ろうとする中で色々案が出ました

  • 動画コマース
  • トレーディング支援サービス(前作ろうとしてたやつ)

  • 同人誌中古通販サービス

  • カクテルレシピ共有サービス
  • グッズ値段比較サイト
  • ストレス共有サイト
  • 自分のこと好きな人の特徴計測サイト
  • 行きたい目的地から一番近いホテルを探すサービス(各種ソート付き)
  • 発送予定をカレンダー自動出力

できそうなこと、出来無さそうなことを考慮して、やっぱカクテルオリジナルレシピ投稿サービスにすることにしました。

機能面について

  • 検索

    • 持ってるお酒、使いたいお酒からカクテル検索
    • カクテル名でも検索可能
    • 各検索画面でソート可能
  • レシピ詳細

    • カクテルに使った材料
    • 味(風味など)
    • 使ったカクテルをすぐにAmazon購入ページにつなげる
    • その他レシピ詳細
  • その他機能

    • レシピにはInstagramTwitter有機
    • マイページ(できたら)
      • レシピ管理
      • 持ってるお酒登録

とりあえずはこんな感じ。

サービス名

サービス名を何にするかは大事。 既存のサービスにCOCKTAIL BASSなるサービスが有るため、このサービスと色々差別化したい。

SELECT COCKTAILはどうだろうか。

理由はこのサービスはカクテルを自分の持ってるお酒から選べるのが最大の特徴であるからだ。

課題

開発前から様々な課題が想定される

  • カクテルのAPIがない
  • リキュールの情報どこから持ってるく?
    Amazon APIとかでうまくできないかな?

  • そもそもユーザいるの?

課題は多い。がやってみようと思う。

GitBushをちゃんと使う

目的

今回はサービスを新しく作るためにGitを使いたいと思ったので、masterのpushまでを行います。

参考サイト

【Windows】Gitの環境構築

やったこと

今回はXAMPPを使ってローカルでの開発を行うので、Htdocsにディレクトリ移動します。そのディレクトリでMasterのPushを行う

$git init
$touch index.html
$git add index.html
$git commit -m "Create index.html"

次はGitのリモート作業ですね同時にPushも行います。

$git remote add origin <URL>
$git push origin master

一応masterのPushまでは終わりました。以下がevidenceです。

$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 462 bytes | 462.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote:      https://github.com/<username>/<remote repository name>/pull/new/master
remote:
To https://github.com/<username>/<remote repository name>.git
 * [new branch]      master -> master

このリポジトリを使ってこれから開発をしていきます。

Ubuntu上でHadoopを動かしたい~環境構築~

今回の目的

  • MapReduceの論文を読むの疲れたので、Hadoopを入れて実際にデータ処理をしてみたくなった
  • UbuntuHadoopを入れてみる
  • MapReduceでサンプル解析をしてみる

参考ページ

Apache Hadoop 2.5.0 セットアップ手順 その1 – ローカル実行からシングルノードクラスター起動まで

作業内容

インストール環境

Javaのインストール

Javaのインストールを行う。今回はOpenJDKをインストール

$sudo apt-get update
$sudo apt-get install -y default -jdk

インストールが終わったら、javaのバージョンを確認

Openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)

Hadoopのインストール

参考ページのHadoopは古いバージョンだったので、ver 3.1.1をインストール

$wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz

バージョンを変更したらダウンロードはできたみたい

次はzipファイルの解凍をします。ディレクトリをどこにしようか悩んだけど、新しいディレクトリ作ってそこに入れてみることにします

$pwd
/home/"user_name"
$mkdir Hadoop
$ls 
examples.desktop     ダウンロード  デスクトップ  ビデオ    ミュージック
hadoop-3.1.1.tar.gz  テンプレート  ドキュメント  ピクチャ  公開
$mv hadoop-3.1.1.tar.gz Hadoop/
$pwd
/home/"username"
$tar xvfz hadoop-3.1.1.tar.gz
$ls
hadoop-3.1.1  hadoop-3.1.1.tar.gz

次の手順「コマンドのディレクトリへパスを通します」何を言っているのかわからんのです。とりあえずやってみた

$pwd
/home/"username"
$sudo vi /ect/profile

結論:できなかった ので、emacsをインストールしてそちらで起動してみることにした

$sudo apt install emacs25
$emacs ~/.profile

なんか開いたんで、最終行にパッチを追記(?)してみる

・・・
export PATH=/home/"username"/Hadoop/hadoop-3.1.1/bin
$source ~/.profile

次はJAVA_HOMEをhadoop-envに指定します(これもよくわからん)

$pwd
/home/”username”/Hadoop/hadoop-3.1.1/etc/hadoop
$emacs hadoop-env.sh
#/etc/hadoop/hadoop-env.sh
#set to the root of your Java installation
export JAVA_HOME=/usr/lib/jvm/default-java

追記が完了したらhadoopコマンドを実行

$hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class

  OPTIONS is none or any of:

--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
buildpaths                       attempt to add class files from build tree
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode

  SUBCOMMAND is one of:


    Admin Commands:

daemonlog     get/set the log level for each daemon

    Client Commands:

archive       create a Hadoop archive
checknative   check native Hadoop and compression libraries availability
classpath     prints the class path needed to get the Hadoop jar and the
              required libraries
conftest      validate configuration XML files
credential    interact with credential providers
distch        distributed metadata changer
distcp        copy file or directories recursively
dtutil        operations related to delegation tokens
envvars       display computed Hadoop environment variables
fs            run a generic filesystem user client
gridmix       submit a mix of synthetic job, modeling a profiled from
              production load
jar <jar>     run a jar file. NOTE: please use "yarn jar" to launch YARN
              applications, not this command.
jnipath       prints the java.library.path
kdiag         Diagnose Kerberos Problems
kerbname      show auth_to_local principal conversion
key           manage keys via the KeyProvider
rumenfolder   scale a rumen input trace
rumentrace    convert logs into a rumen trace
s3guard       manage metadata on S3
trace         view and modify Hadoop tracing settings
version       print the version

    Daemon Commands:

kms           run KMS, the Key Management Server

SUBCOMMAND may print help when invoked w/o parameters or with -h.

これが表示されたらOKみたい!!!

次にやりたいこと

MapReduceで実際に分析してみたいです