ウニ’s blog

勉強した結果を書いていきます

Python

【Python3】requestsにthreadを使用すると非常に効果的

crawler,rest api等でrequestsにてgetを大量に投げる場合、ボトルネックになるのはI/Oバウンド。 入門Python3には以下の事が書いてる。 スレッドはI/Oバウンド問題の解決のために使う。 CPUバウンド問題では、プロセス、ネットワーキング、イベントを使う。 …

PythonでECサイトを作る(3)

コア処理修正。したけど、精度が落ちたので殆ど破棄。こういうこともある。 あとは相変わらず処理速度がくっそ遅い。なんとかしないと・・・。 対応策としては、プロセス分割すればいいのでは?とさっき思いついたので、明日ためそうと思う。 あとはサーバー…

PythonでECサイト作る(2)

主処理部分の改修してた、進捗悪い~。 やることリストも暴発仕掛けてるので、見直したい。 特に書けること無いので、ねよう。

loggerを使う(3)--完了

logging.confの[loggers]の名称にアンダーバーを使ってたら上手くいかなかったようだ。 名称を変えたらうまく行った。 あとは、log levelがError以上だったらslackに送るようにした。 slack連携はハマらず素直に動くのでいつも感動する。 なんでもかんでもSl…

loggerを使う(2)

公式のHowToをまぁまぁ読んだ。全てのprint文の置き換えと、config化した。 システムのconfigと、bs4用configとlogger用configがあり、projectのRoot Directoryがごちゃごちゃしてきたので整理した。 …今度はDirectoryが多い…。 参考 公式 Logging HOWTO — P…

loggerを使う(1)

print文仕込みマンだったけど、コードの規模が大きくなってきた。 loggerを使っていこう。 と思って調べたら、怒れる人が居て怖い。 怒れる記事 qiita.com 知識0でこの記事をよんでも何に怒りを感じているか全然わからなかった。 ? 参考 簡単な概念。 st-pr…

BeautifulSoup4で全ての文字を書き換える

タグを辿って、tag.stringの書き換えを繰り返すと、NavigableStringは書き換え不可能!と怒られた。ごめん。 公式documentをよく読んだら、replace_with()つかえとのこと。 teratailに質問もいいけど、公式ドキュメントも読もう。うん。 参考 BeautifulSoup…

PythonでECサイト作る(1)

DjangoでECサイト作ってる方がいらっしゃるので、こっちもお試しで作ってみよう。さしあたり考えることは多いけど、まずは取引=決済のために必要なものが何かなどを洗い出した。 2017/1/1以降に個人事業主申請・青色申告届けを出すとして、まずはpaypalのア…

スクリプト実行ファイルのTestCase

pythonのスクリプト実行部分をTestしたい。 例えば、sys.argvの切り分け処理部分をテストしたいときに使う。 コード スクリプト実行ファイル # hello.py import sys args = sys.argv if len(args) > 1: print("Hello world.","args 1 : " + args[1]) テスト…

新Google翻訳のAPIを試す(7)--公開

新Google翻訳使ったePub翻訳ツール、えいやで完成。 図は翻訳したePubの結果。(ProGit本) 一見良さそうな感じ。でも読み込むと、ところどころオカシイ。処理時間もあまりよくない。 文字列をhtmlタグレベルでGoogleAPIに投げてるので、1冊翻訳完了までかな…

新Google翻訳のAPIを試す(6)

うわー!お試しで技術書1冊丸ごと翻訳中に認証トークンの期限切れた! トークンの期限切れ早すぎないか?GCPの認証方法がそもそも良くわかってないんだよなあ。 プログラム実行中に再認証するにはどうすれば良いのか…。進捗的には上の問題なければgithub公…

新Google翻訳のAPIを試す(5)

ePub->文字列処理->ePub完成。作ったモジュールを整理した。技術書のxhtmlの構成を見てるけど、ソースコード使ったりしていて、翻訳したくない部分が確実にある。 やっぱりhtmlタグ毎に処理を変える必要があるよなあ。 完璧にはどうせ無理なので、あまり深入…

新Google翻訳のAPIを試す(4)

html(xhtml)を読み込ませて、翻訳させる、結果を出力する、まで完成。htmlの構文解析して、文字列部分を辿る処理の実装具合が非常に良くない。 あらゆるePubに対応できるか?というと、無理だ。 やはりChrome経由のgoogle webページ翻訳が新Google翻訳対応す…

新Google翻訳のAPIを試す(3)

BeautifulSoup4でePub構成ファイルの編集やってるけど、なかなか思い通りに行かずふてくされたりした。ようやくなんとなく操作がわかってきた。xhtml→soupオブジェクト→xhtmlの変換ができた。 新Google翻訳にぶち込むために、なるべくプレーンなデータ形状に…

lxmlモジュールのインストール(windows)

pyCharmのモジュール追加でlxmlが失敗した。 追加失敗するモジュールたまにあるんだよなー。調べてたらうまくいったのでメモする。 手順 lxmlをwhl形式で配布している所に行く Pythonのインストールバージョンに合わせたファイルをDLする。 windows10(64bit…

新Google翻訳のAPIを試す(2)

PyPIにepubモジュールあったので、簡単に内容を翻訳して、再ePub化できるかなーと思ったら、できん。 書き込み時に何かエラー zipfile.BadZipFile: File name in directory 'OEBPS\\xhtml\\0016.xhtml' and header b'OEBPS/xhtml/0016.xhtml' differ. どうに…

新Google翻訳のAPIを試す(1)

Python mini Hack-a-Thon参加しました。 成果物は以下です。qiita.comまーた、P社製のノートパソコンの無線おかしくなって完全に午前中無駄にしてました。死にたい!エンジニア殺すにゃ刃物はいらぬ、ネット三日も断てばよい mouseコンピューターはやくきて…

Django+whitenoiseにて静的コンテンツのブラウザキャッシュを有効にする

Google PageSpeed Insightsで怒られたので、コンテンツのブラウザキャッシュをDjango+whitenoise製のサイトで有効にする。 何も考えないと、デフォルトでは、静的コンテンツは以下のヘッダーを返す。 Cache-Control:max-age=60 ブラウザキャッシュ時間60秒 …

Python3で簡単なwebサービスを作る(24)

slackでpapertrail のintegrations追加しようとしたら有料と言われたけど、今日もう一度やったら無料だった。 ?謎だ。papertraiでherokuのinternal server errorなどをalert項目にした。 お試しで存在しないurl入力したらちゃんとslackに通知されたので嬉し…

Python3で簡単なwebサービスを作る(23)

運用phaseというか、メイン以外のところをポチポチ進める。 残ってるtodoリストも軽いやつから。 google analytics導入 ログ監視と異常時の通知 google analytics 無料。Djangoだと、base.htmlのheaderにanalytics用のスクリプトを組み込むだけで行ける。www…

Python3で簡単なwebサービスを作る(22)--ローンチ

ローンチしました。 おまえのなろう小説会話多くねぇ?-なろう小説会話率判定web- Qiitaにも記事書きました qiita.com延々とローンチ出来ない病になりそうだったので、Advent Calenderにかこつけて、えいやでローンチしました。 todoリストはまだ山ですが、…

Python3で簡単なwebサービスを作る(21)

Herokuデプロイした。微妙にハマったけど、module不足なだけだった。 クラウド環境になれてないので、ハマると1weekレベルではまるのもありえるので恐れしか無い。あとは誰も見なそうなページをシコシコ作る。 付随する調査で色々知識がたまるのですばらしい…

Python3で簡単なwebサービスを作る(20)

最大のタスクだった、TOP画像をどうしようかという日だった。 エンジニアの他にデザイナは絶対必要だ…。ものすごい時間かかった。 これは、エンジニアとデザイナのマッチングサービスが必要。(もうあるかも)散々悩んだ末・・・・・・結局いらすとやじゃね…

Python3で簡単なwebサービスを作る(19)

サイトの細かいコンテンツをゴリゴリ書いたり、Djangoのtemplateを部品化したり。 うれしかったのは、tamplateのurlリゾルバがエラーで動かなかった奴がついに動いたこと。 pdbでトレースしまくってようやく使い方がわかった。しんどかった。あとはもう細か…

Python3で簡単なwebサービスを作る(18)

細かい気になる点が無限に出てきてるよ。終わらねえ! デザイン部分作り込んだのと、そいつを開発サーバー環境に取り込んだ。結合は自分のスキルでは解決不可能なハマりが出るかもしれないので、かなりドキドキした。 結局いろいろ修正はしたが、なんとか開…

Python3で簡単なwebサービスを作る(17)

サーバーサイドの細かいtodo潰しと、POSTmethodのajax化。 メインページ以外のページもほそぼそと作り始めた。top100の会話率表など。 CSSの鬼門は超えたので、ようやくいろいろと他に手を出せるようになったのがありがたい。ajaxはサーバーサイドでわけわか…

【Django】Djangoでの異常検出結果をslackに通知する

連携用のモジュールはいくつかあるが、django-channelsモジュールで非常に簡単に実現できたのでメモる。 下の画像はtestCaseで異常系を動かし、Slackに異常通知が行っているかを試した結果。ちゃんと通知来てる!うれしい。 ここ1週間ぐらいCSSが思い通りに…

Python3で簡単なwebサービスを作る(16)

進捗が悪すぎる。苦しいなあ。フォントのレスポンシブ対応でものすごくハマってしまった。 やっと崩れ難いレスポンシブデザインのやりかたがわかってきた。ような、まだ全然わからないような。ハン先生のコメント部分を考えるのは楽しいな。 今のところ良い…

Python3で簡単なwebサービスを作る(15)

CSS怖いCSSつらい。キャラクタ+吹き出し表現がどうしても難しい。 難問だ・・・。条件を整理してteratailで聞いてみようかな。

Python3で簡単なwebサービスを作る(14)

CSSは沼!エンジニアが気楽に突っ込んで良い世界じゃなかった・・・! カッコイイテンプレートを改造するだけでいいやと思って、コードを見たら全然知らないNode.jsだとかless?だとが始まってて、にわか知識では全くカスタムできる気がしない。しょうがない…