Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

公開日 : 2017-11-22

プログラミング初心者にメンターが必要な理由

このエントリーをはてなブックマークに追加
よく、プログラミング初心者に対して、「ググればわかる」と乱雑に教える人がいます。個人的には半分あっていて、半分間違っているなおと思います。なので思ったことを少しまとめてみます。



スポンサーリンク

公開日 : 2017-11-21

多重共線性が存在しうるデータをRで重回帰分析するときの注意点

このエントリーをはてなブックマークに追加
重回帰分析の際に起こる、各独立変数間の多重共線性について実験してみます。
データセットはここから取得します。ビールの売上高を予測するという課題です。


手を動かしながら学ぶ ビジネスに活かすデータマイニング
技術評論社 (2014-08-22)
売り上げランキング: 98,606

DM_sampledata.zipを開いて、ch4_3_2.txtというファイルを開きます。適当なディレクトリに保存して、Rで読み込みます。


スポンサーリンク

Rでオゾン濃度と気象データの関係を重回帰分析して予測する

このエントリーをはてなブックマークに追加
この本のコードを写経しています。

手を動かしながら学ぶ ビジネスに活かすデータマイニング
技術評論社 (2014-08-22)
売り上げランキン



Rのデフォルトで存在するデータセットを使って、重回帰分析をしてみたいと思います。

スポンサーリンク

【Python】Amazonのセール商品をAmazon Product Advertising APIで抽出し、自動記事作成をやってみた

このエントリーをはてなブックマークに追加
こんにちは、DAIです。



つい最近、ほけきよさん(@hokekiyoo)が、AmazonのAPIを使って、自動記事作成で3日で1万円儲けたみたいな話をしたので、僕もやってました。やり方については企業秘密にしていたので、僕が公開しちゃいますよと。


とりあえず、やりたいこととしては、

  • Amazonのセール商品をAPIから取得
  • 自分のアフィリエイトコードを入れたURLを作成
  • bootstrapで、いい感じにそのデータをもとに自動で記事を作成

です。うまくいくと、アフィリエイトコード付きで、こんな感じになります。





スポンサーリンク

公開日 : 2017-11-19

Jenkins上でPython3の定期実行ジョブを作った時のメモ

このエントリーをはてなブックマークに追加

# やりたいこと

- Jenkins上でpython3のスクリプトを、定期実行します。
- JenkinsはCI(継続的インテグレーション)ツールとして利用されますが、同時に定期実行の機能を持ち合わせています
- かつ、サーバー上で実行を行ってくれるので、パソコンを起動しなくても定期実行を行ってくれるようになります。

# 背景知識

- そもそもJenkinsとは何か?


Javaで書かれたオープンソース継続的インテグレーションツール
(英:Continuous[継続した] Integration[結合])である。(Jenkinsとはなんぞや?)

- 継続的インテグレーション(CI)とは?


継続的インテグレーションとは、ソフトウェア開発において、ビルドやテストを頻繁に繰り返し行なうことにより問題を早期に発見し、開発の効率化・省力化や納期の短縮を図る手法。 特に、専用のツールを用いてこのプロセスを自動化あるいは半自動化し、効率的に実施する方式。(Jenkinsとはなんぞや?)


- 継続的インテグレーションのメリットとは


毎日、最新版のアプリケーションをサーバーにデプロイすることで、最新のアプリケーションに対するテストを行えます。テストのカバレッジを毎日収集することで、テストの進捗状況を細かく確認することができます。静的解析を行うことで、手動では見つけにくいバグや品質低下を発見することができます。これらを毎日人力で行うことは非常に手間です。Jenkinsはそれらを自動化する手助けをしてくれます。(Jenkinsで実現するJava EEアプリケーションの自動ビルドと自動デプロイ)


- Jenkinsは定期実行するために有効なツール?


で、Jenkinsで今回やりたいのは継続的インテグレーションではなく、定期実行プログラムなのです。Jenkinsが強いのは、Cronをサーバー上で設定できるので、非常に便利です。
Jenkinsは継続的デリバリーとか継続的インテグレーションの文脈で語られることが多いので、ソースコードのビルドだったりテストの実行だったりをエンジニアの代わりに実行してくれるツールだと思われていることが多いです。(当たり前のことを長々と何言ってんだって感じですが)しかしJenkinsの機能を、そういったような開発管理ツールではなく汎用的なバッチツール、要は「すごいcron」として使用できることも分かったのでちょっと試してみました。(Jenkinsをすごいcronとして使う)

# 前提


 - すでにJenkinsがのっかっているサーバーが存在することを仮定
- 実行したい処理を書いたスクリプトも前提として存在する

# 手順


- Jenkinsに新規アカウントを作成し、ログインする
- ShiningPanda Pluginのインストールを行う


ShiningPandaは、JobごとにPythonの環境を構築してくれる、virtualenvを作成してくれます。これを利用することで、ほかのPython環境との依存性を低め、切り分けることができるようになります。

今回は、Jenkins ShiningPanda Plugin(輝くパンダ?)プラグインを利用して、ジョブ固有のPython環境を作る方法を紹介します。 ShiningPanda Pluginではvirtualenvを利用して、複数(ジョブ毎)のPython環境を切り替えます。Jenkins ShiningPanda Pluginによるジョブ固有のPython環境(virtualenv)

Amazon LinuxなどRedhat系Linuxでは、Pythonのシステム依存度が非常に高く、下手にアップデートなどを行うと悲劇となることがよく知られています。 デフォルトのモジュール空間へのライブラリ追加も極力避けたいところです。 特にJenkinsでPythonのシステムをテストする場合や、Pythonのスクリプトを実行したい場合は、ジョブ毎にモジュール空間を分けることがベストプラクティスです。Jenkins ShiningPanda Pluginによるジョブ固有のPython環境(virtualenv)

- Jenkins > 設定でpython3の設定を行う

Pythonの実行プログラムは、Python3系のことを行わなければならないが、もともと対応しているバージョンが2.0にしか対応していない。すでにPython2の実行ファイルが存在する場合、新規にPython3を設定します。





- 新規ジョブの作成を選ぶ

- ジョブ名を設定する

- フリースタイル・プロジェクトのビルドを選択する

- Jenkins / その他 / 「作成したプロジェクト名」を選択する

- 設定を選ぶ

- 詳細設定を記入する

ここには、ビルドでVirtualenv Builderを選択し、Python環境を構築します。もろもろのライブラリなどをここでインストールさせます。


- ビルド実行を選択

- ビルドに成功すればOK

- ビルドトリガを設定し、CRONを書きます。

この辺を設定すればわかる。[Jenkins] ビルドトリガ(定期的に実行)設定についてのまとめ

これで定期実行された。

スポンサーリンク

公開日 : 2017-11-18

【Python】SeleniumでゴリゴリFacebook認証する

このエントリーをはてなブックマークに追加

FacebookにSeleniumで無理やりログイン




Facebook認証を行っているWebアプリでWebスクレイピングを行おうとした時のメモ。


Facebookにログインしないと、データがとれないので、なんとかFacebookアプリにログインする方法を考えた。


普通はAPIになんらかのPOSTリクエストをして認証するのが大半だが、Selenium一発芸しか使えないので、無理やりブラウザ操作でFacebookにログインしてみた。

ソースコード

#1 Facebookにログインするメソッド


Facebookのメールアドレスとパスワードを引数をとって、Facebookにログインする。

def facebookLogin(email, password):

#1-1 Facebookログインが求められる、Webページにアクセスする

引数にFacebookアプリログイン画面のURLを入れる

browser.get("ログインしたいFacebookアプリのURL")

#1-2 フォームにE-mailとパスワードを入れる


.find_element_by_css_selectorで、引数に入力したいフォームのIDを指定する。
send_keysの引数には、もともと入れていたemailアドレスが入力される。同様にパスワードも。

    #1-2 値の入力

    browser.find_element_by_css_selector("#email").send_keys(email)
    browser.find_element_by_css_selector("#pass").send_keys(password)

#1-3 パスワードの確認画面を閉じる

パスワードを入力すると、確認画面が送信ボタンの上に出てしまうので、関係ないほかのの部分をクリックすることによって消す。


#1-3 どこでもいいので、クリックしないと送信ボタンが押せないため、適当に押している
    browser.find_element_by_xpath('//*[@id="email_container"]/div/label').click()
    time.sleep(2)

#2 ログインメソッドを実行


#1で作成したメソッドを利用して、ログインする

facebookLogin(email, password)


全体のコード



facebookLogin.py


import os
from selenium import webdriver
import pandas
import time

browser = webdriver.Chrome(executable_path='/mnt/c/workspace/pydev/chromedriver.exe')

email = "FACEBOOKのメールアドレス"
password = "FACEBOOKのパスワード"

#1

def facebookLogin(email, password):

    #1-1 最初にPairsのFacebook認証を済ませる

    time.sleep(2)
    browser.get("ログインしたいFacebookアプリのURL")

    #1-2 値の入力

    browser.find_element_by_css_selector("#email").send_keys(email)
    browser.find_element_by_css_selector("#pass").send_keys(password)

    #1-3 どこでもいいので、クリックしないと送信ボタンが押せないため、適当に押している
    browser.find_element_by_xpath('//*[@id="email_container"]/div/label').click()
    time.sleep(2)

    browser.find_element_by_xpath('//*[@id="u_0_0"]').click()
    time.sleep(4)

#2 

if __name__ == '__main__':

    facebookLogin(email, password)





スポンサーリンク

公開日 : 2017-11-17

技術ブロガーで既にブログを持っている人のQiitaの使い道をまとめてみた

このエントリーをはてなブックマークに追加

Qiita初めて一週間で週間トップ10入りしました


こんにちは、DAIです(@never_be_a_pm)


ここ一週間くらいで、Qiitaをはじめました。自慢しますが、投稿を初めて1週間になりましたが、Qiitaの週間TOPユーザーにTOP10入りしました。



ちなみに投稿した記事は、過去の記事の焼き増しです。特にバズったのはこの記事でした。はてなではQiitaに投稿したものが804ブックマークです。Qiitaページ自体のアクセス数は3日で1万ほどでした。

【Python】スクレイピング→データ収集→整形→分析までの流れを初心者向けにまとめておく ~Pythonに関するはてな記事を10年分スクレイピングし、Pythonトレンド分析を実際にやってみた~ - Qiita

やりたいこと * はてなブックマークで、Python記事を検索しトレンドを分析 * はてなブックマークにSeleniumでログイン * ブックマーク数をスクレイピング * 時系列比較を行う * バ...


今まで自分が所有するブログがあるので、Qiitaに投稿するメリットをあまり感じていなかったのですが、実際にやってみて、メリデメを整理したいと思い、考えてみましたがQiitaに技術ブログを持っている人が投稿するメリットを感じたので、まとめてみます。



スポンサーリンク



出品中

初心者向けにプログラミング学習をサポートします プログラミングで挫折し、誰かの助けが欲しいあなたへ|プログラミング | ココナラ

何かプログラミングでやりたいことがあっても、それをどう実現したらいいのかがわからなかったり、エラーを一人で解決できないことは多々あります。僕の場合、最初は挫折しました。最...


Read more↓

書評














教育











キャリア

プログラミング・ライフハック

About me


・ 最近The Academic Timesというアカデミック専用メディアを立ち上げました。