時間通りにレールによるものですか?

個人的には、私は列車のファンです。彼らはゆっくりと、国を乗り越える方法です。カナダは鉄道輸送のための最高の候補者ではなく、沿岸の間のかなり大きな地域を提供していますが、鉄道はウィンザーとケベックシティとの間の廊下で日常的な列車サービスを運営しています。

残念ながら、トラベラーレールはカナダの工業鉄道に遅れを引き起こしていなければなりません。いくつかの列車が非常に定期的な遅れを持っていることを通知した後、それは電車によってそれぞれの典型的な性能を理解することが有益であるように思われました。これにより、このデータを公に供給しない。

ただし、出発時期だけでなく到着に関するデータを一部提供しています。レールサイトで任意の種類のブラウザで提供されるデータを掘り下げると、過去のスケジュール/実際の到着データを問い合わせることができました。結果はTrainStats.ca、ビアの画面でタイムリーな方法でパフォーマンスが得られます。私があなたの次の列車のチケットを得るときに、私はこれがすべてうまくいくのか、そしてまさにこのすべての作品を正確に行く方法だけでなく、休憩の後に私に参加してください。

データを取得する

Viaは、その条件ページに翌日だけでなく、以前の、現在、および翌日のルーチンデータを供給しています。これにより、一連の旅行データを開発しましょう。幸いなことに、私たちはChromeのインスペクタを終了したり、この取得要求を発見したりできます。

http://reservia.viarail.ca/tsi/gettrainStatus.aspx?l=en&tsiccode=87&departuredate=2015-12-01&trainInStandate=2015-12-01&t=144903500354.

ここでいくつかのジューシーなパラメータがあります。 TSitrainNumberは間違いなく私たちが見ている電車番号です。出発は、電車が去った日、到着日が到着した日です。トレーニング標高も同様に電車が残っている日付に設定されているようです。これを念頭に置いて、Pythonにジャンプする時間だけでなく、素晴らしいリクエストライブラリを利用して要求を作成する時が来ました。

このデータは、以下に表示されるものとは異なる方法で解釈またはコンパイルされ得る双方向のUnicodeテキストで構成されています。隠しUnicode文字を公開するエディタでデータを開くには、エディタでデータを開きます。
双方向のUnicodeキャラクターについてもっとたくさん発見してください

隠されたキャラクターを表示

Payload = {‘L’: ‘en’、

‘tsiccode’: ‘via’、

‘tsitrainnumber’:train_number、

「出発飼育」:Trip_Date、

‘到着日’:trip_date、

‘traininstancedate’:trip_date}

r = requests.get( ‘http://reservia.viarail.ca/tsi/gettrainStatus.aspx& #39;

params =ペイロード)

生の眺め

request.py

Githubによって開催されました

このコードを使用すると、任意の種類の日付に任意の種類の列車番号のデータを取得できます。いくつかのテストの後、私たちは、経由のデータが2015年4月に戻ってきたことを発見しました。これは、6か月以上のデータを提供します。すべての旅行のために、私たちは手配と実際の到着と各駅の出発時間を取得します。その情報を維持すると、列車がどのように遅れたかを正確に判断できます。

ページデータがHTMLとして取得された状態で、BeautifulSoupを使用してスクリプトがまとめられてすべての値を抽出しました。その後、このスクリプトはTripデータのオブジェクトを作成し、SQLAlchemyを使用してPostgreSQLデータベースに格納されます。これにより、後でデータにアクセスするのに効果的なものと同様に簡単になります。

最後のステップは、すべての電車番号とデータを引っ張る日数を繰り返すことでした。このスクリプトは、一部のネストされたループを利用してデータの保留と保存します。もう1つのスクリプトは、前日のデータをデータベースに保存します。これはcronジョブに設定されているので、データベースは新鮮に留まります。

(安い)ウェブサイトを構築する

trainstats.caのウェブサイト
この時点で、12,000以上の旅行に到着データがあります。プロットを作成するためのクエリを手動で実行することはできますが、プロットを作成するためのスクリプトを作成することはできます。それはそれがウェブサイトを開発する時が来たことを示しています。物事をウェブに素晴らしくすることは私の強いものではありません、それで[Phil Everson]はいくつかのWeb開発をするために飛び込んだ。

制約を追加するには、できるだけ手頃な価格のサイトを実行することを望みました。 Herokuのようなサービスオファリングとしてのプラットフォームは、月に20ドルを走行しました。ジジュアロースからのオンライン個人サーバーは少なくとも5ドルを犠牲にします。最も安価な選択は静的サイトを作ることでした。

静的Webページは、地理科学の日に戻る旅行です。ファイルを保持することができますが、サーバー上ではあらゆる種類の処理を行うことはできません。幸いなことに、これは私たちが提供していたデータの種類にうまく機能しました。集約されたトリップデータはすべてJSONファイルにエクスポートされる可能性があります。クライアント側のJavaScriptは、データとスクリーンプロットをトンすることができます。

TrainStatsサイトは、いくつかのHTML、CSS、およびブラウザ内で実行されるJavaScriptと、データを含むJSONデータのコレクションで構成されています。データセットは毎日生成されますもう1つのCronジョブによって、それはすべての処理が地域のコンピュータ上で1つのうちに行われることを可能にする。 その後、Amazon Web Servicesコマンドラインインターフェイスを利用して、データをS3にプッシュし、そこでユーザーが検索できます。 データセットは小さいのでS3だけでなく、コストは通常のホスティングよりも低くなります。

結果

このハックは主に楽しみのために開発されました、しかしそれはいくつかの魅力的な知見を持っています。 私の通常のオタワにトロントルートから、私は、84%の時間の84%の列車を選択するのは、38%の旅行の28%を遅らせるためだけに局所的な方法を選ぶ可能性が高くなります。 他の何人かの旅行者は統計を発見するかもしれません。 どちらの方法でも、安価にWebサービスを提供するだけでなく、データセットを削除するのに魅力的な行使でした。

あなたが源泉について考えているならば、それは撮影のためにgithubに全部です。 私たちはあなたがそれを使ってRailによってddosしないことを親切に要求します。

Leave a Reply

Your email address will not be published.

Related Post

広告会社の労働者の電気ショックを妨げる広告会社の労働者の電気ショックを妨げる

私たちはこの仕事が私たちがしたのと同じくらい笑うことを願っています。 4時間、オーストラリアのマーケティング幹部は、インターネット上の反応を見て世界中の人々が管理する電気筋肉量刺激(EMS)を受けることに合意した。パブリックはマウスをクリックして日を中断するかもしれません。オンラインになったばかりの個人は、オンラインでオンラインストリームを選択し、瞬時にボランティアをZappedAppedにZappedApped emsが即座にZappedAppedになるように表示するだけでなく、「混乱」ボタンをクリックします。すべての「中断」について、事業は1ドルの地域コミュニティに貢献しました。 EMSハードウェアは、MIDIプロトコルを利用して管理されていると同時に、最大60Vのパルスを提供するように開発されました。プラットフォームは、UDPを介してザッピングコマンドを受信して​​います。残念ながら、プロジェクトのWebページでリソースを発見することはできませんが、ブレーク後に埋め込まれた2つのビデオを見てもらえます。この実験中に寄与された全体的な金額は5500ドルでした!

3Dプリントガンのタイムラプスが印刷されています。3Dプリントガンのタイムラプスが印刷されています。

DODが3Dプリントガンデータをインターネットから排除した場合、カップルが起こりました。 ストライザンドの影響は完全な力に入りました。データはまだ簡単に発見されたほど共有されました。 突然、私が正確に気にしない方法についての視点作品を書いたばかりでも、私は3Dプリントガンを印刷するだけでなく、3Dプリントガンを印刷していると考えていました。 私はそれが私の幼稚なことを認めていません。私はこのことが私がそれを作らなければならなかったことを理解していたすべてのことを持っていなかったと言われました。私はいつも私の若者と会いましょう。おもちゃは昔のためにほこりを集める角に座ることができます、しかしそれはそれが除去される危険があり、それらは少なくとも数分間、興味を新たにしました。 私がそれについて幼稚になるならば、私が最高のプリンターを持っていないのでgunを印刷するだけでなく、私はとにかく私は行わないので私はとにかく私は活用しませんTは通常銃で遊ぶことができます、私はまた、より多くの認識可能な部分の楽しいタイムラプスビデオを作るかもしれません。 それは最初はそれが迅速でも簡単になるだろうように思えました。しかし、私はこのことを印刷するだけでなく、タスクを悪化させるだけでなく、時間がかかることが急速に発見されました。 1.プライベートデータのスケールはメソッドオフでした。 私はこれがそれが開発されたプリンタで終わるものがあると思われます。それは1インチ= 1 mmに非常に近いようでした。完全に珍しい問題ではありません。手動でサイズ変更すると、一部のデータが正しく表示されますが、サイズ変更されないであろう数値が見つかりました。 2.実質的に単一の製品にはエラーがありました。 3D印刷を行った場合は、デザインに正しく印刷を停止するすべてのタイプの問題があることがわかりました。私は銃のためのすべての製品を発見しました。私は本当にこの運動からの非多様な製品を修理する方法について非常に多くのことを発見したので、最後に素晴らしかった。 ハンマースプリングと同様に、ハンマースプリングのようなものもあります。私はそれらを修理するためのシステムと修理エラーを修復するためのシステムでそれらを実行しました。ただし、どのようなものが修正されたと述べていますが、印刷のために「スライス」しようとしたとき、ソフトウェアアプリケーションはクラッシュします。これは私の銃が不完全であることを意味します。ハンマーはありません。本当に私にオファーの巨大なものではありません。 銃全体 ハンマーメカニズムが見つからないことに注意してください。後ではるかにもっとたくさん。 分解された 春を引き起こします。素晴らしいデザイン、私は後で他の何かのためにこの概念を利用するかもしれません ブラック:エラー付きの予備的な印刷。赤:固定印刷。 Goproは、ベッドを正しく動かすのを止めるプリンタに落ちた。上部2層が約1インチずれているのを見ることができます。そのような混乱の残りの部分は、私がリッピングしていたものだけをサポートしています。 繰り返し修理にもかかわらず適切に印刷することを拒否したハンマー。 ハンマーがどのように見えることが期待されていたのか。 私が印刷のために準備しようとしたときに私のスライスプログラムを墜落させたばかりです。 私は今気にかけますか? いいえ。私は冷蔵庫の上に登っただけでなく、私のクッキーを持っていました。私は満足している子供です。真実は、ジップガンがまだ安く、より安価で、より安全で、より信頼できるものであるということです。これが例です。

Jello Shot PrinterJello Shot Printer

友人の今後の25歳の誕生日のためにいくつかのJelloショットを検査しながら、[Sprite_tm]はエピファニーを持っていました。 Jello Shotsの中にデザインを印刷できる場合はどうなりますか?彼は急速に注射器をつかみ、食物染料をゼロショットの1つに注入し始めた – それは働いた。残念ながら、彼のPalはそれが手で撮影されたそれぞれのジェロ撮影にはあまりにも時間がかかりすぎると指摘しました。 それを気にしないでください、私はあなたのためにゼリーに良い数字を作ることができる3Dプリンターを鞭打ちます。 クラシック。ハッカーマインドセットについての素晴らしいことは、問題に直面したときにノーを言うことがないということです! このプリンタを達成するために、[SPRITE_TM]は、3つの軸移動プラットフォームを作成するために一握りの古いCD-ROMドライブを取得しました。彼は、バナナ酒、緑色の食品着色、およびコーンギを医療用チューブにインクヘッドに押し込む注射器を押すためのForth Driveのエジェクタアセンブリを使用しています。それを制御するために、彼は単なる2Kのメモリを持つAttiny2313を使っています。それは最高の流れを見つけるために少しのフィドリングをしました、しかし驚くほどよく働いています。印刷機能を確認するために、休憩の後に固執します。 [reddit]