サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/haminiku
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? データを蓄積し予測モデルを更新し続けるために、どういった機能を設計実装したか共有します。 2015年に遺伝的アルゴリズムで自動売買に挑戦したのが2年前。深層学習で再チャレンジして知見が溜まってきたので、運用における辛い話や設計を共有します。システムの話がメインです。 ^ Flask x SQL alchemy で作りました。ワーカーはsupervisordです。最初Rubyからpycall使ってTensorFlow使ってたんですが PyCall.import_module を数回唱えたあたりで全部Pythonで書き換えました。デコレータ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
世界中でポケモンGO旋風が起こっています。 日本版のポケモンGOがリリースされたら即電話が掛かってくるスクリプトをお昼休みに書いてみました。 これで最速ポケモンゲットだぜ( ・ㅂ・)و アーキテクチャ HTTP通信でitunesのページをポーリングしてステータス取得 + Twilio で電話 PokémonGO の現状調査 Nianticのポケモン公式HPを7月15日確認したところ、iOS版は未公開、Android版は既に公開されています。Android版はソフトウェア側でフィルタされており日本ユーザはプレイ出来ないみたいです。 itunesのページがオープンしたら検知 # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import requests def app_store_
# 画像にテキストを埋め込み >>>steganography -e /tmp/image/a.jpg /tmp/image/b.jpg 'The quick brown fox jumps over the lazy dog.' # 画像に隠蔽されたテキストを読み込み >>>steganography -d /tmp/image/b.jpg The quick brown fox jumps over the lazy dog. 1. 動作概要 - テキスト埋め込み 1-1. normalize 画像の全ピクセルをスキャンして、RGBそれぞれの値を8で割ったとき余が1となるピクセルを選択する。選択したピクセルの色を変更して余が1とならないように色を変更する。 ■ normalize処理で色を変更したピクセル 1-2. テキスト隠蔽 テキストを16進数に変換する。画像を16ピクセル毎に分割
>>> $ py.test ../tests/test_webapi.py =============================================================================== test session starts =============================================================================== platform darwin -- Python 2.7.5 -- py-1.4.31 -- pytest-2.7.0 rootdir: /Users/*****, inifile: pytest.ini plugins: cache, django, pep8, pythonpath collected 2 items ../tests/test_webap
特徴 ノンブロッキングI/O使って書いたサーバなので1台のサーバで数千人同時接続できる..はず(いわゆるC10k問題) TCP通信なので他の人の書き込みがすぐ反映される(サーバからのpush通知を受け取れる) Serverをmono使って書いたのでC#+.netのサーバがlinuxやmacで動く WebAPIによるchatサーバ実装だと、1と2の要件が満たせません Visual C#でserverを書くとWindowsでしかサーバが動かず、3の要件が満たせません。 動作画面 背景 C10K問題に対応したechoサーバをなんとか書けるようになってきたので、Unityと組み合わせてchat機能をクライアント(Unity C#)とサーバ(C#)で実装してみました。またUnityにはNetworkViewを使ったChatのチュートリアルがありますが、NetworkView自体の実装が激しくスマホ向
CircleCIの特徴は1環境であれば無料でCI環境が利用出来る点です。環境構築が完了すると、GitHubのcommit毎にCIコンテナが立ち上がり定義した自動テストがコンテナ上で実行されるようになります。本投稿では、Python3.5とFlaskで構築したWebサーバをCircleCI上で稼働させて、requestsを使ってコンテナ上のWebサーバにアクセスしてHTTP Statusコード200が返却されることを試験しています。 2時間で構築するCI環境の動作フロー Python3.5 + Flaskで構築されたWebサーバを試験する CircleCI上でPythonのWebフレームワークであるFlaskを利用したWebサーバを立ち上げて、HTTPのエンドポイントにアクセスしてHTTP Statusを確認する簡単な試験を行うのが本記事です。 jenkins職人問題へのCircleCIの考
# 有効な設定を確認 >>> firewall-cmd --list-services --zone=public --permanent dhcpv6-client # 設定追加(sshとmysqlを追加) firewall-cmd --add-service=ssh --zone=public --permanent firewall-cmd --add-service=mysql --zone=public --permanent # 設定削除(sshを削除) firewall-cmd --remove-service=ssh --zone=public --permanent # 設定一覧を表示 ls -lta /usr/lib/firewalld/services/ # 各設定毎の内容確認 cat /usr/lib/firewalld/services/ssh.xml # 設定を
障害が起きたWebサービスは個人で運営しているサービスです。 2016年2月、障害から20日後にサービス再開しましたがアクティブユーザは以前の18%です。未だ回復の目処は立っていません。冗長化していないサーバがウイルス感染し、その後の対応も後手後手に回ってしまいました。 2016年1月末に起こるべくして起こった障害について記事にしてみました。ご迷惑をお掛けしてしまい本当に申し訳ありません。 ■ ユーザは、もう戻ってこない どんなウイルスに感染したのか SYNフラッド攻撃(SYN Flood Attack)を他のWebサイトに行うウイルスに感染して、確認していませんが他のサービスをSYNフラッド攻撃していたと思います。またウイルス感染時にサーバのsshdを書き換えられsshで接続できなくなりました。感染後にコンソールログインして書き換えられた醜い authorized_keys を見た時ゾッ
PythonのWebフレームワークで間違った選択をすることは非常に困難であると、Pyramidのintroductionページに記載されています。調査した結果まったくもってその通りだという結論に至りました。2015年12月に個人でWebサイトを構築する時に、どのWebフレームワークで構築するかで迷いに迷いました。この記事はそのときの検討メモです。 速度 みんな大好きTechEmpower Web Framework Benchmarksで速度比較。サーバ費用をケチって運用費をとにかく下げたいので、その時点で重大長厚なdjangoは検討対象から外れました。bottleはやはり早い。 Webフレームワーク Yes/Noチャート Yes/Noチャートにまとめてみました。ログイン機能は構築しないためSessionは必要ありません。シンプルで学習コストが低く高速に動作するFlaskで構築することにし
背景 RubyのQueueクラスの説明に、これはスレッドセーフだと書いてあったので検証してみました。 スレッドセーフとは 自分でも正確な意味を理解していなかったので調べてみました。スレッドセーフとはアプリケーションをマルチスレッドで動作させても問題がないこと スレッドアンセーフだとどうなるか たとえばマルチスレッドで実行したときに、複数スレッドから同一の変数に変更が発生してデータが消えたり意図しない値になってしまうこと(レースコンディションという) つまり仮説! ArrayとQueueを用意し、100スレッドで複数のワーカーで同時にpopさせて並列計算するとQueueでは正しい結果が出力されるが、Arrayではレースコンディションが発生し、計算結果がズレる..はず 仕様 1..10000000の値を合計する。結果が50000005000000となれば正しい レースコンディションが発生すれば
アンチエイリアスを掛けると写真縮小時のジャギジャギが軽減します。フォルダ内の写真ファイルをアスペクト比(縦横比率)を保ったまま一括で縮小してアンチエイリアスを掛け保存するPythonコードです。 アンチエリアスあり/なし比較 4000pxくらいの写真を300pxに縮小して比較しました。AA有りの鳥画像は地面の小さな砂が、地面と色が一体化して見えにくくなっています。 インストール # -*- coding: utf-8 -*- import commands import Image import re # 縮小する際の画像の高さピクセル PHOTO_HEIGHT = 300 # 画像があるフォルダのフルパス BASE_DIR = "/Users/XXXXX/Desktop/Photos" # 画像の正規表現名 PHOTO_REGEX = r"P.*.[jpg|JPG]" # リサイズ後の画
// ホストネームに含まれる文字列 host_name = 'github.io'; // コピーされたときのredirect先 redirect_deny_url = 'http://megalodon.jp/'; redirect_millisec = 5000; // コピーされたときに表示するメッセージ deny_message = '<h3>本ページは削除されました。(・ω<) テヘペロ </h3>'; function main(){ // ローカルなら動かさない if ($(location).attr('hostname') == ''){ console.info('is local'); return null; } // ホストが異なるなら実行 if ($(location).attr('hostname').match(host_name)){ // 正常 con
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 私が新規WEBサービス立ち上げ時に取り組んだ内容についてWEBエンジニア向けにまとめた記事です。 例えばNginxの設定でHTTPヘッダーが正しく設定されているかを確認できるGoogleDevelopers PageSpeed Insights を知っていると大変有利です。もちろんPageSpeed Insightsを知らなくてもWEBサービスを公開・運用可能ですがユーザに意図せず不利益を与えていたり、知らず知らずのうちにモバイルフレンドリーでないとGoogleから検索ペナルティを加えられている可能性があります。この記事は独りで新規WE
パスワードをgit commit する前に検討したい、3つの回避方法 GitHub便利ですね。無料で自身のソースコードを管理できます。しかし無料プランだとソースコードは全世界に公開されてしまいます。有料プランですと月7 USドルでソースコードを非公開にできますが、結構お高めなので払っている人は少ないのではないでしょうか? 外部リソースにアクセスするプログラムを書いていると、config にパスワードを書いてしまいたい衝動に駆られます。しかし過去の事件について思いを馳せてみてください。クラウドサーバを生成する権限はお金になります。BitCoinマイニング目的でEC2 インスタンスを不正利用された事例は国内でも数件発生しています。本当にそのパスワードをconfig に書いて大丈夫でしょうか。 この記事ではgit にcommit しないで上手にパスワードを管理する技術について考えていきます。 a
リンク切れチェックを手で確認するのは精度が不安で時間掛かる。かといって外部ツールは実行が重いし開発環境で出来ない。ということで自作しました。相対リンクと絶対リンクに対応しています。 リンク切れチェックツールの動作フロー 指定されたURLをHTTP GETしてBeautiful Soup で解析。 リンクを外部サイトリンク、相対リンク、絶対リンクに分類 ページ内の同一ドメインのリンクからリンク先URLを抽出 重複を排除する 4で生成したリンク先URLに対してHTTPリクエスト投げてHTTPステータスが200であることを確認 Python3.5のasync/await版 ノンブロッキングなHTTPリクエストで後述のPython2版より60%高速に動作します。Python2版はページ下部。こちらのコードだと100リンクを1-3秒で確認完了します。 # -*- coding: utf-8 -*-
Pythonの軽量WebフレームワークFlask導入にあたり、DBアクセスとテンプレート継承有りでRailsと比較しました。外部のWeb Framework Benchmarksと異なったRailsの方が早いという結果がでたので原因を特定して解消する記事です。 ベンチマーク結果 個人PJでの利用を想定しているので、用途に特化したベンチマークを書いて比較しました。結果Rails はFlask より1.493倍高速に動作 することが判明しました。Railsすんごいはやい。 Web Framework Benchmarksと異なる結果になった Web Framework Benchmarksと異なる結果になりました。Flaskが遅いのはコード側に問題がありそうなので検証していきます。 ベンチマーク条件 用途に特化したベンチマーク試験となっています。 DBアクセスして1レコード取得し結果をテンプレ
前回の記事でDjangoとFlaskとPyramidを比較して、Flaskいいなーとなったので早速試してみました。 FlaskというPython Webフレームワークにて大規模向けと言われているBlueprintチュートリアルに沿って構築した機能をベンチマークして比較しています。Blueprintとは複数の小さなアプリ毎(機能毎)にViewを切り分けるFlaskの機能です。 構築後Apache Benchを利用して、PyPy3 2.4とPython3.5を比較した ベンチマーク を取得しています。 ディレクトリ構成 デフォルトの単一Viewと異なりviewsディレクトリを設置して、その中に機能毎のviewを設置していきます。今回はroot とreport 機能を追加してみました。 ■ ディレクトリ構成 テンプレートの抽象化 HTMLのHEADやBODYタグといった共通部分をmaster.h
アプセトネデブ って覚えてますか?私の仕事はこの存在がなければ誕生すらしていなかったと思います。OSI参照モデルの覚え方です。 OSI参照モデルの中でもトランスポート層のソケット通信を行うソケットサーバを並行処理を駆使して実装するお話です。この記事は、今年の春にスゴイ級エンジニアにC#のTaskやasync/awaitについて教えてもらったときの内容をPythonで書き換えた記事となっています。部屋の片隅で埃かぶってた『マスタリングTCP/IP』片手に実装。 目的 並列(Parallel)なノンブロッキング(non-blocking)処理を独力で書けるようになる。 geventとasync/awaitでそれぞれ軽量スレッドを使った処理を実装できるようになる。 C10k問題がうっすら理解できるようになる。 マルチスレッド/プロセスまとめ(Ruby編)の記事を読んで、そろそろ復習しようかと思っ
# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import sys import time import traceback import logging from jabberbot import botcmd, JabberBot, xmpp import multiprocessing as mp class ChatBot(JabberBot): """ XMPP/Jabber botを利用してHipChatのメッセージサービスに接続する """ _content_commands = {} _global_commands = [] _command_aliases = {} _all_msg_handlers = [] _last_message = '' _la
# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from subprocess import PIPE, Popen def cmdline(command): """ コマンドを実行する。shell=Trueの場合シェル経由で実行する。 :param command: str :return: Popen """ return Popen( args=command, stdout=PIPE, stderr=PIPE, shell=True ) # 標準出力 print '標準出力:' + cmdline('date').stdout.readline() # 標準エラー出力 print '標準エラー出力: ' + cmdline('echo 2015|xargs wc -l
判りにくい箇所のみ解説します。 検索漏れと言語依存で辞書が必要な点についてです。形態素解析型の全文検索は辞書に依存します。たとえば『東京スカイツリー』が辞書登録されていない形態素解析だと『東京』『スカイ』『ツリー』のように分割して認識してしまいます。結果として東京のクリスマスツリーといった意図しない検索結果が表示されます。前後の文脈を認識できない点が形態素解析型全文検索の弱点です。 完成品の検索結果 ■ input1 体の抗酸化力や解毒力 output1 : ++++++++++++++++++++++ 検索結果:体の抗酸化力や解毒力 ++++++++++++++++++++++ 1位:類似度:0.00787401574803 2-アダマンタノン 2位:類似度:0.00654878847413 (R)-1-イソチオシアナト-4-(メチルスルフィニル)ブタン 3位:類似度:0.0050761
2015/11/23にPyCharm5.0がリリースされました。リリースノートにはPython3.5サポートと非同期実行の可視化機能などが記載されています。非同期実行の可視化機能が便利そうだったので早速使ってみた記事です。 Thread Concurrency Visualization(非同期実行の可視化機能) 以前書いたasync/awaitの記事を試しにPyCharmで実行して可視化してみた。 今回作るモノ Wikipediaの13記事を同時にダウンロードしてファイルに保存するプログラム 改善前のプログラム ざっくりざっくりで書いてみました。 # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import aiohttp import asyncio async def d
print文を仕込んで実行時間を出力していくパフォーマンスチューニング作業は辛いのでもう止めにしようってお話です。 プログラムで実行速度が遅いロジックを特定できれば改善は容易です。profilerを利用すると簡単に原因が特定できるので使い方を紹介します。前半はline_profilerを利用した実行速度が遅いロジックの特定方法、後半はPythonでの高速化テクニックです。 どの行が重いかprofilerで特定する ローカル環境でprofilerを使いどの行が重いのかを特定していきます。Pythonには様々なprofilerが存在しますが、個人的にはline_profilerが必要十分な機能を持っていてよく利用しています。ここで特定するのは『どの行がN回実行されていて、全体でM%の実行時間が掛かっている』という点です。 line_profilerの使用例 実行に10秒くらい掛かるサンプルコー
# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from review.review import ReviewManager USER_ID = "B00001" manager = ReviewManager(USER_ID) # 権利を持っているか確認 manager.can_review() # アプリ起動を記録 manager.app_startup() # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import datetime from pip.utils import cached_property import redis PREFIX = 'R
pip installでおなじみのPyPiから人気パッケージを総合と週間ダウンロード数で上位20パッケージ抽出しました。人気24パッケージの使い方まとめです。週間と総合で重複16という結果に驚きました。ASN.1を扱うpyasn1パッケージだけは利用方法が判らなかったので誰か教えてください。 PyPi ダウンロード数ランキング 1.simplejson jsonのエンコードとデコードを行うライブラリです。総合と週間でぶっちぎり1位のパッケージで1億件以上のDL数を誇ります。速度のみならujsonの方が早いです。 # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import simplejson # dict to json d = {i: i**3 for i in xrang
アルゴリズムの説明 ■ 協調フィルタリングとは アイテム利用者の行動履歴を元にレコメンドする方法です。Amazonの『この商品を買った人は、こんな商品も』機能が有名です。協調フィルタリングによるレコメンドはユーザの行動を元にレコメンドする方法です。 ■ 内容ベース(コンテンツベース)フィルタリングとは アイテムの特徴ベクトルで類似度ソートしてレコメンドする方法です。 グルメサイトでユーザが入力した『新宿・エスニック料理』というキーワードに関連付けられたお店が表示される場合が該当します。内容ベースによるレコメンドはアイテムの特徴を元にレコメンドする方法です。 特性の詳細について ■ 多様性 協調: o 内容ベース: x 内容ベースでは商品内容に記載されていない情報はレコメンドされませんが、協調フィルタリングでは他の利用者を通じてレコメンドされるため自身がしらない情報でもレコメンド出来ます。
次のページ
このページを最初にブックマークしてみませんか?
『@haminikuのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く