サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
tech.torico-corp.com
RDS で、大量のIO を伴う処理を行うと、処理途中で性能が大きく劣化することがあります。 不要になった大量の過去データをバッチで削除する時によく発生します。 これは、ストレージへの IO を規定量より高い頻度で行った時に減少するクレジットがあり、それが 0 になった時、パフォーマンスに制限がかかってしまうためです。 制限のかかった状態では通常通りのサービス運用はできなくなってしまうため、過去データ削除などの高負荷のバッチは、RDSのモニタリングページを見ながら注意深く実施する必要があります。 今回は、パフォーマンス低下を避けるために確認すべき RDS クレジットのメトリクスについて書きます。 各メトリクスの詳細は、AWS の公式ドキュメントに詳細な解説があります。 高負荷な処理を行う際に確認すべきメトリクス EBS Byte Balance AWS のドキュメントによると、「RDS デー
Raspberry Pi Pico W で Httpサーバ(microdot)とセンサーによるHTTPリクエスト機能を同時に稼働させる Raspberry Pi Pico W が発表されました。日本ではまだ未発売ですが、技適は取得されたようですので近いうちに国内販売がされそうです。 試しに、Webサーバ ( Microdot )とWebクライアント(urequest) を uasyncio で並列実行するコードを書きましたので、紹介します。 今回作成したコードや動作している動画は、Github で公開しています。 ytyng/rpi-pico-w-webserver-and-client: Raspberry Pi Pico W webserver and client sample code Raspberry Pi Pico W とは コストパフォーマンスが高いマイクロコントローラです
ISBNコード(書籍JANコード)とともに本に付番されている雑誌コードについて解説します。 雑誌コードからJANコードを作成しなければならない時に役に立つ知識です。 雑誌コードとは 雑誌扱いの本に付番されている5桁+4桁、または5桁+2桁のコードです。 この5桁に意味がずっしりと詰まっています。 また、バーコードはISBNコード(書籍JANコード)と一般商品JANコードのものがあります。 雑誌コードの始まる1桁目で雑誌コードの種類がきまります。 1. 1桁目が0、1は月刊誌(隔月刊や季刊の雑誌も含む) 基本、末尾は奇数。別冊や増刊号は末尾の数に+1して偶数になる。 本に印刷されるバーコードは一般商品JANコード 例)雑誌コード5桁+「-」+月2桁+年の下2桁 月刊TORICO 8月号 01234-0821、または省略して01234-08 月刊TORICO 8月増刊号 01235-0821、
あるメーリングリスト(Google グループ) に送信しているメールアドレスの一覧を作りたかったので今回のスクリプトを書きました。 普段 Gmail を使われている場合、Google Apps Script (GAS) を使うことでメールの処理をスクリプトで簡単に自動化することができます。 今回は、Gmail で受信したメールを検索し、検索結果を Google スプレッドシートに書き出す方法を紹介します。 ウェブ上のツールでスクリプトを少し書くだけで実現できます。メールを使う業務の自動化に応用できると思います。 1. Gmail の検索条件を作る Gmail を開き、検索窓を使って対象のメールを絞り込みます。 to: や label: などの演算子を活用して、絞り込んでください。 例えば、 mailinglist@example.com に向けて送信されている、 14日以内に受信したメール
Google Apps Script を使って、一定時間より古い Gmail を自動的に削除するスクリプトを定期動作させる方法を書きます。 ちなみに、Google Drive の容量が不足している場合、Drive にメール以外の容量の大きなファイルがあるかもしれません。Google Drive にある容量の大きなファイルは、 https://drive.google.com/drive/quota こちらから一覧で見れます。 1. Google Apps Script のページを開く。 https://script.google.com/ もしログインしてなければ、「Start Scripting」のボタンを押してログインします。 2. 左上の「新しいプロジェクト」のボタンを押します。 3. 上の「無題のプロジェクト」をクリックし、「古いGmailを削除」にプロジェクト名を変更します。 下
AWSの Lambda ファンクションを、CloudFrontのエッジサーバにデプロイして、リクエストやレスポンスをインターセプトして処理を行うことができます。Lambda@Edge と呼ばれます。 Webアプリケーションフレームワークにある「ミドルウェア」のような使用感で使えます。 例えば、S3 をオリジンに使っている時(サーバレス環境などで)、少しだけ動的に認証やリダイレクトなどのHTTPヘッダーを扱う処理をしたい時など、便利です。 ポイントとして、us-east-1 (バージニア北部) リージョンの Lambdaファンクションのみ選択できます。 AWSの公式ドキュメント 1. 概要 1-1. フックポイント(トリガー) Amazonのページにわかりやすい絵があります。 リクエスト: クライアント → [Viewer Request]→ CloudFront → [Origin Req
Django でウェブアプリを作る際、遅い処理をタスクキューにするには、celery が便利です。今回、社内勉強会で Django + celery のチュートリアルを行ったので、celery で簡単なタスクを動かすまでを書いておきます。 内容としては Celery ドキュメントの First steps with Django をなぞっています。 環境 MacOS Python 3.6.5 Django 2.1 Celery 4.2.1 Redis Redisは、キューのブローカーとして使います。Redis以外にも、RabbitMQ やAmazon SQS が使えます。 Redis サーバの起動方法は書いていませんので、適宜起動してください。 プロジェクトフォルダの作成 $ mkdir celery_handson $ cd celery_handson venv (仮想環境) の作成
Google ハングアウトの後継のチャット(インスタントメッセージング)サービス、Chat では、Webhook エンドポイントを使うことでとても簡単にチャットルームへのメッセージの送信ができます。 メッセージの送信に、チャット用の大規模なアプリ開発は不要です。Python でも curl でも JS でも、3行ぐらいでメッセージの送信ができます。 Webhook エンドポイントの作成 1. Chat を開く https://chat.google.com/ 2. チャットルームの作成 左上のメニューから、「チャットルームを作成」を選び、 適当に名前をつける。 3. Webhook エンドポイントの作成 チャットルーム名をクリックするとメニューが開くので、「Webhookを設定」をクリック + WEBHOOKを追加 をクリック 適当に名前をつけて、「保存」 Webhook の URL がで
普段、業務でお使いのテキストエディターは、複数の行を一度に編集できる機能がついているかもしれません。 複数行の同時編集を使いこなせば、エンジニアでなくても普段の業務の効率を上げられて便利です。 非エンジニアに強くおすすめしたいのが、Microsoft の Visual Studio Code (以下VSCode) です。 Visual Studio というと、Windows用のプログラムを開発するIDEのイメージがありますが、このエディタは「ちょうどよくカスタマイズされた Atom」「無料のサブライムテキスト」「フロントエンド以外もいけるブラケッツ」といったモダンな軽量エディタの様相で、秀丸やサクラエディタの代わりに使うのにちょうど良いです。 VSCodeはマイクロソフトのサイトからダウンロードして無料で使えます。 エンジニアは、JetBrains のエディターを買うのがおすすめです。 今
Django の CRUD ジェネリックビュー (ListView, DetailView, CreateView, UpdateView, DeleteView) の簡単な使い方 Django は、Python プログラミング言語で動作するウェブアプリケーションフレームワークです。 この記事は、Django の使い方を説明するものです。 Djangoの解説: The Web framework for perfectionists with deadlines | Django Django に最初から用意されているビュー(ジェネリックビュー) を使えば、 オブジェクトのリスト表示 オブジェクトの作成 オブジェクトの詳細表示 オブジェクトの更新 オブジェクトの削除 のWebアプリが簡単に作成できます。 (オブジェクト=DBのレコード=モデルインスタンス=アクティブレコードオブジェクト と
Chrome58で、HTTPSの自己証明書が NET::ERR_CERT_COMMON_NAME_INVALID になる場合の対応 Google Chrome をバージョン58 にアップデートすると、SSL自己証明書を使っているサイトが見れなくなる場合があります。 自己証明書(オレオレ証明書)を使っているサイトに HTTPS でアクセスすると、 この接続ではプライバシーが保護されません 攻撃者が、tech.torico-corp.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を 不正に取得しようとしている可能性があります。 NET::ERR_CERT_COMMON_NAME_INVALID セキュリティに関する事象についての詳細を Google に自動送信する。プライバシー ポリシー セキュリティで保護されたページに戻る詳細情報を表示しない このサーバーが
PyCharm 2016 の Docker サポートの使い勝手が良いです。 Docker で開発環境を作るのは初めてだったのですが、 ローカル ( mac ) は Docker Toolbox を使って開発環境を作る。PyCharm のデバッガでステップ実行できるようにする。 ソースコード、およびログディレクトリは Docker イメージの中に入れず、ホストのディレクトリをマウントして使う 公開サーバを見越して uwsgi, nginx の設定も作っておく という所までできたので、手順を書きます。 コード置いてあります。 https://github.com/ytyng/docker-django-skeleton こちらを参考にしました。https://github.com/dockerfiles/django-uwsgi-nginx 必要アプリのインストール PyCharm v2016
はじめに Mezzanine とは、Django (Python のWeb フレームワーク )上で動く、CMS フレームワークです。使い勝手としては Wordpress に似ています。 (英語) http://mezzanine.jupo.org/docs/index.html 最初から入っている機能としては WYSIWYG エディタ ( Tiny MCE ) が入っているのでリッチテキストコンテンツが簡単に投稿できる インラインページ編集 … 管理者ログインしていれば、公開済みページの各セクションに編集ボタンが出て編集可能 Twitter Bootstrap Disqus連携 Gravatar連携 Twitter連携 などがあり、そもそも Django なのでテーマの切り替えが簡単だったり、プラグインの入れて機能を拡張したりなどが容易にできます。プラグイン( Django モジュール)
ローカル環境に Django プロジェクトを2つ作り、OAuth2で(ダミーの)プロフィール情報を取得するまで書きます。 2つの Django プロジェクトを作ります。test_provider, test_consumer です。 OAuth2の認証フローは、サーバ間通信のため「Authorization Code」形式で行います。 OAuth2についての情報は IPAのページ などにあります ソースコードを github に上げました。 Django プロジェクト 概要 test_provider 起動ポート 8000 ユーザーのIDとハッシュ化パスワードを保持します。 OAuth2 プロバイダを提供します。 ユーザーに test_provider への情報提供の認可を問います。 django-oauth-toolkit を使います test_consumer 起動ポート 8001 ユ
Re:dash とは リダッシュ。公式サイトはこちらになります。 http://redash.io/ 公式サイトには動作可能デモもあるので、試しに触っていただくとわかりやすいと思うのですが、簡潔に言うと Webアプリ上で SQL などクエリー文を登録 結果を表やグラフで、そのまま表示 その表やグラフのけっかをまとめて1つのページに組み合わせることができる というツールです。「ダッシュボード」を作るWebアプリですね。 TORICO では、2016年に Redash を使い始めましたが、使い勝手が良いので継続して使っていきたいです。 オープンソースです。 https://github.com/getredash/redash/ クエリーは定期的に実行してくれます。設定も、「10分ごと」「12時間に1回」「1週間に1回」のようなざっくりした指定ができるのがとても便利です。時刻指定で毎日実行させ
#!/usr/bin/env python from selenium import webdriver if __name__ == '__main__': driver = webdriver.Firefox() driver.get('http://google.com') driver.find_element_by_css_selector( 'input[name="q"]').send_keys("Hello, world!") driver.find_element_by_css_selector('input[type="submit"]').click()
このページを最初にブックマークしてみませんか?
『新着記事 | TORICO 技術開発ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く