サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
tell-k.hatenadiary.org
なんか暑すぎて、ほげーとプログラム書いてたら、なんだか 簡単な問題もスマートにやれない僕がいたのでメモ。 問題 問題はいたって簡単。 リストから任意の数の要素を、ランダムに抽出。要素は重複してはならない。簡便化するために、元のリストは要素に重複が無い事を前提とする。 [1, 2, 3, 4, 5] ↓ 3つ抽出するとする [1, 3, 5] => ok [1, 3, 3] => ng 値が重複している 当然、任意の数(ここでは3)以上の要素が存在していたら、任意の数だけ要素を返すの必須。 こんな風に考えた。 そういば、randomモジュールに 「random.choice」とかいうのがあったなーあれ使えば一発かぁとか思ったけど、そうでもなかった random.choice は リストからランダムに一つの要素しか返さない。 結果のリストには要素の重複は認められない。 なので、最初もうほげーと
タイトル通りな感じで試したのでメモっておく。というかFlaskのドキュメントに載ってた。Flaskアプリ側でBasic認証を掛けたいという欲求 HTTP Basic Auth | Flask (A Python Microframework) 1. 準備 適当に2ページ分の出力をするFlaskアプリがあるとする。 「http://127.0.0.1/」 => Hello index!と出力 「http://127.0.0.1/hello」 => Hello World!と出力 from flask import Flask app = Flask(__name__) @app.route("/") @requires_auth def index(): return "Hello Index!" @app.route("/hello") def hello(): return "Hello
Heroku で Pythonが動かせるらしいという情報をいち早くキャッチ(大分遅い) したのでやってみる事にした。Flaskのチュートリアルで作るアプリ「Flaskr」を Heroku + Amazon RDS(MySQL5.5) で動かします。 Heroku標準のPostgresとかの連携手順とかは、既に良くまとまってるブログがあるので、一番最後の参考URL群を参照してください。ここではせっかちな人のために、一気にHerokuアプリと、RDSインスタンスを作るスクリプトを晒しておきます。手順をシェルスクリプト化しただけともいいます。 環境 MacOSX (Lion) での作業を前提としています。 前提 以下のものが使えるようになっている必要があります。 AWS アカウント Heroku アカウント heroku(ruby gems) bash git virtualenv pip rd
よくHHKに水を盛大にぶちまけて、なんか T キーが押せないとか、Gキーが連打状態になるとか、ごくごく一般的に良くある出来事ですよね! 水を拭き取っても、どうにもならない時に解決するたった一つの方法を @feiz 先輩に教えてもらったので紹介するよ!みんなこれをやれば大丈夫だよ! その名も 「The 天日干し」 なんかもうアレですよ。たかだか水こぼした位で、 このザマだよ!!!!!! けど嘘かと思うかもしれないけど、天日干ししたら復活したんだよ!なんていうか、日本人の古き良き知恵ってやつぁ偉大だなぁとおもったよ!みんなやってみるといいよ! お詫び 本記事は、書き手の思い込みにより書かれているため、天日干しをしたからといって必ずしも復活しない可能性は多分にあります。本件に関して、私は一切責任を追う事をできませんので、予めご了承ください。故障したらちゃんとサポートに問い合わせる事を強く強く推奨
こんばんは。そろそろブログを書かないと、またどんどん忘れるだけなのでメモをちゃんと残そうかと思います。 一昔前だとHTMLメールってうざいよねぇwww。みたいに思っていたんですが、TwitterやらFacebookやら軒並み最近のWebサービスはHTMLメールを送ってくるようになったと感じています。でどんな感じで送ってるのか見てみたら、Content-Typeに「multipart/altnative」という見慣れないやつを使ってました。 multipart/alternative形式とは? 「multipart/altnative」とは何ぞやといういうのは上記リンクを見てもらえればなんとなく分かると思うのですが、誤解を恐れずに端的に言うと「HTMLとテキスト、両パターン送っとくから、メーラのお前は表示できる方表示しろや」という事です。 最近 送られてくるHTMLメールのContent-T
vimでPHP開発していた時は、良くvim の 折りたたみ機能を使ってました。 理由としては、割とメソッドを移動したりするのが楽だったり(折りたたみしてる所は yy , dd でヤンクできるから)、メソッド、クラス単位で折りたたみされてるので、俯瞰してそのファイルを眺める事ができるから、不要なメソッドとかを見つけやすかったからです。 折りたたみは最初、開けたり閉じたりするのが面倒だったんですが、気がつけば、小指が za を押すのに慣れてしまいました といわけで、そろそろPythonのヤツも欲しいなと思ったので、プラグインを探しました。割合古いものですが、見やすいので大分気に入っています。 python_fold - Folding expression for python : vim online これを ~/.vim/plugin の下に設置すればそれでおkです。 簡単な使い方 たとえ
Twitterみたいに、ページの一番下まできたら、次のページを読み込む(ページング)みたいなのって、割とメジャーだから、どっかにあるかと思ったけど、(情弱で探せなくて)割となかったので、自分がやった方法というかプラギン(GitHub - jimyi/jquery_bottom: jQuery plugin to add a “bottom” event that will be triggered when the user has scrolled to the bottom or within proximity to the bottom of an element.)の使い方を書いておく。 1. そもそも「一番下に来た」とかいうイベントはない 社内のSkypeでJSに詳しい人に聞いてみて分かったことは、そもそも JS or jQury にそんなイベントはない。という事、だから画像が
最近 Flask というWebアプリフレームワークを、いじってて気付いた事をメモとっておく。 セッション管理の仕方が、面白かったというか自分はそういう風に実装した事なかったのでへーと思った。 僕のなかでのセッションデータの管理イメージ 別にこれが普通というわけではないのだろうけど、なんとなくこういうイメージ サーバサイドでセッションデータを発行 セッションキーをCookieとかクライアントサイドに持たせる。 違うページにいったら、セッションキーを元にセッションデータを取得 この場合、クライアントサイドにもつ情報は、セッションデータに紐づくキーであって、セッションデータそのものはサーバサイドのストレージなりなんなりにもってるイメージ。 事の発端 Flaskは MicroFrameworkをうたっているフレームワークなので、フレームワークが備える機能も必要最低限になっていて、足りないところは自
gunicornをdaemontoolsで死活監視したことあるか的な質問がどこかに流れていたので、手順を簡単にメモっておく。OSの環境は debian(leny)を例にとります。 gunicorn て何よ?、daemontoolsて何よ?って人はこちからどうぞ。 gunicornメモ - 偏った言語信者の垂れ流し Django アプリサーバ、gunicorn と fastcgi の比較 - Ian Lewis daemontools 1. daemontoolsのインストール よくネットで調べると「daemontools-installer」が出てくるけど、もう最近のでは無いというか普通にdaemontoolsだけでインストールできるようになってる。 sudo apt-get install daemontools daemontools-run 2. gunicorn のインストール お
お久しぶりです。tell-k です。昔書いたエントリで、ブラウザをリロードするAutoHotKeyを紹介したのですが、 AutoHotKeyすげぇ! - Study03.net 対シンバシ専用 残念ながらAutoHotKeyはMacでは使えません。FirefoxのプラグインのMozReplという手もあったのですがプラギンをインストールするのが面倒なのと、最近Chromeをメインで使ってるのでなんかアレなので、別の方法を模索しました。 そこで、見つけたのが下記の二つの記事です。 vim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分でした - LukeSilvia’s diary Vim でファイルを保存すると Firefox がリロード OSX 版 - cooldaemonの備忘録 なんと、AppleScriptでブラウザをリロード
はまった事を思い出しながら書いておく。 iMac上にPythonの開発環境を構築していて、MySQLにアクセスするための「MySQL-Python」をインストールしようとしたら、派手にエラーが出てインストールできなかったの時の対処法メモ インストール pip install MySQL-Python エラー エラーはこんな感じ(全部乗っけるとアレなので一部のみ) /usr/local/Cellar/mysql/5.5.10/include/my_config.h:326:1: warning: "SIZEOF_SIZE_T" redefined In file included from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:9, from pymemcompa
さて昨日の転職話の続ry) ではありません。 Mac で Python - Study03.net 対シンバシ専用 昨日のエントリで書いた、virtualenvとvirtualenvwrapperの使い方について簡単に覚え書きをしておこうと思います。 まずはvirtualenvです。 1. 確認 virtualenvとは、色んなものをハショって簡単に説明すると、Pythonの実行環境を仮想化?してくれるツールです。言葉じゃ良くわからんので昨日のヤツを例に簡単にやってみませう。 まず昨日の状態だと、いくつかpipモジュールをインストールした状態なので、 pip freeze という今どんなパッケージがインストールされているか一覧でわかるコマンドを打つと distribute==0.6.15 mercurial==1.8.2 pep8==0.6.1 pyflakes==0.4.0 virtua
以前に、↓のようなふざけたエントリを書いたのですが、最近はもっぱらPythonなので、PythonでSyntaxエラーやら、書き方のチェックがしたいなと思って調べた内容をポストします。 vimで手軽に文法チェック(syntax check) - Study03.net 対シンバシ専用 1. チェックするためのツールをインストール python には、phpやperlのように、実行時のオプションでsyntaxチェックを行ってくれるようなものはないっぽいです。 php -l hoge.php perl -wc hoge.pl に相当するものはpythonコマンド単体ではない。 なので、これと似たような事をしてくれるツールをpipでインストールします インストールするのは先日のエントリでも書いた以下の二つ Mac で Python - Study03.net 対シンバシ専用 pip instal
そういえば、4月に転職しました。 新しい会社は前の会社と色々ちがって楽しいです。環境的に、みんなmacで開発言語もpythonがメインだったりします。なので、Mac で Pythonを始めるときにやっておいた方がよさそうな事を思い出しながら残してみるテスト。 1. homebrew で Pythonのインストール 最近のマカーのオサレは、homebrewらしいので、brewコマンドでpythonをインストールしませう。 brew install python HomebrewやらMacportsのアンインストールやらはこちらを参考にしました。 http://d.hatena.ne.jp/ruedap/20110217/mac_install_homebrew_uninstall_macports python がインストールされると、下記のようにシンボリックリンクが張られると思います。 /
最近マカーデビューをしたんですが、怠けのもの僕はすぐにlocateコマンドを使いたがります。 Linuxとかだとlocateコマンドを使う前に、まず sudo updatedb と打ってlocateが検索するための索引?を生成する必要があります。(定期的にupdatedbで索引を更新しないと最新のファイルが引っかかりません。) Macでも何も考えずに「updatedb」を打ってみたらコマンドがないと言われてしまいました。 探してみたらココなんだそうな。 sudo /usr/libexec/locate.updatedb これでめでたくlocateコマンドが使えるようになりますた。
PHPのstrtotimeという便利な関数がありますが、落とし穴があったりします。引数に「-1 month」「+1 month」とかを渡すと、前月とか来月のタイムスタンプを取得してくれるんですが、月末とかだと、挙動が怪しくなるので注意が必要なんですよ。 ■ 例えば2008年10月31日に前月と翌月の「年月」を取得する。 <?php echo date('ym',strtotime('-1 month'))."\n";//200809が欲しい echo date('ym',strtotime('+1 month'))."\n";//200811が欲しい こんな風に書くと実行結果はこんな風になるんですよ。 200810 200812 ミラン・バロシュ!!wwwな結果になりますねw まぁ理由は単純?でこんな感じです。 9月31日は存在しないので代わりに10月1日が返って来てしまう。 11月31日
という事をやってみようと思った。ウチはTracを使ってるのでTimelineからFeedをとって来てTracの更新の内容を、社内のIRCサーバに垂れ流してみたかったのですよ。 以下やり方。 1.Plaggerのインストール 自分のローカルマシンにcolinuxを入れて、そこにPlaggerをインストール Plaggerのインストールはそのウチ書くかも。けどググッた方が早い。 2.IRCボットを立ち上げる。 Plaggerをインストールすると「/usr/bin」以下に「plagger-ircbot」見たいのがインストールされてる。 下記のような設定ファイル(ここでは、irc.ymlとかしてみる)を用意して、IRCボットを起動。 plugins: - module: Notify::IRC config: daemon_port: 9999 #IRCボット動くポート番号(colinux) ni
Rオプションなんて初めてつかた。 svn propset -R 'svn:ignore' '*' ./tmp/ http://sj6.org/subversion_svn_ignore_for_reflexive_directory/
というわけで、昨日のエントリに引き続き、大分前にでっち上げたTomblooのBuzzurl対応スクリプトです。 一番下のスクリプトを「20_Buzzurl.js」という名前にして保存して、昨日のエントリにも書いた、拡張スクリプト用のフォルダの中に突っ込めばFFのメニューBuzzurlが現れると思います。 Evernote + Tombloo をでっち上げる件 - Study03.net 対シンバシ専用 Buzzurl対応するときに困ったのは、Tomblooの中で定義されている、クエリパラメータを構成する関数(queryString)が、POSTパラメータの名前がユニークである事前提ぽいのに対してBuzzurlのタグ用のPOSTパラメータは8個全てkeywordという名前で送られてくるという事でした。 なので完全にバッドなハックではありますが、queryStringを別で作って、keywor
いろいろでっちあげたもの連続ポストしようと思う。 Tomblooに良くお世話になっているのですが、EvernoteにPOSTするメニューが無かったぽいので こちらと http://d.hatena.ne.jp/Constellation/20080726/1217088917 tombloo 本家を参考に http://wiki.github.com/to/tombloo Evernote対応のスクリプトを作ってみますた。基本的にEvernoteのbookmarkletをベースに作ったので、regular, quote, link 位しかまともに動かないと思います。 完全に雰囲気だけで作ったので、へんな書き方になってると思いますがご容赦ください。ついカッとなってやった。反省はしてない。 下記スクリプトを「20_Evernote.js」というファイル名で、ローカルに保存して、Firefoxの
大分前に、どこかのログインフォーム(ログインIDとパスワードを求めるような画面の事)にCSRF対策が施されてなくて良くないなーと思って、社内のセキュリティに詳しい人に、話してみたら、 「ログインフォームに関しては、CSRF対策が施されてなくても特に問題はない」 的な事を言われて、ちょっと面を食らった。 理由としては、「パスワード」自体が、本人しか知りえない「秘密の情報」であれば、外部サイトから、そのフォームに対してPOSTしたとしても「秘密の情報」が間違ってればエラーになるはずだから。 パスワード変更フォームとかでも、「現在のパスワード」を入力させてちゃんとチェックするようにすれば上記と同じ事が言える。 なるほど、同じような処理をするのでも、それに対する必要なセキュリティ対策というのはその性質によって求められるものが変わってくるんだなーと思った。 むしろログインページ(入力画面)が、htt
お昼食べた後にコーディングとかしてくると、よく眠くなるよねw?眠くなると、簡単な文法ミスをおかしがちだよね。文法ミスをした事に気づかずに、ブラウザでアプリ動かすと、画面やエラーログに「syntax error」とか出てきてイラッとなるよね。イラッとなると「もう今日は仕事とかいいから早く家に帰ってニートしたいなー」とかニート志望の動機が膨らむよね。そうすると、特に取り柄のない僕なんか、人生破綻コースまっしぐらだよね。そしたら最終的にはリストカッターで、本当にありがとうございました。みたいな残念に結果になっちゃうんだよ。 そうならないためにも、ブラウザとか実行してから気づく前に、コーディングしてる最中に、syntaxのチェックをしちゃおう。 PHPで文法チェックするときは、こうだよね。 php -l hoge.php けど、vimで一旦保存して閉じて、上のコマンドをわざわざ打つのは、正直メンド
前回Plaggerでフィードを取得して定期的にIRCに流そうとしたら、最後の最後でcronが動きませんでした。 はて?何でだろう。 試しにこんな事やってみた。 */1 * * * * echo test > testlog testlogが出来て中に「test」て書かれてる。crond自体は起動してますね。 なので */30 * * * * /usr/bin/plagger -c /home/tell-k/feed.yml > testlog2 みたいな事やってみたら、testlog2はできたけど、白紙。。。エラーとかないのか。 困った。。。しょうがないからググッた。 Plaggerをcronで定期実行する - retlet.net ふむ。どうやら、crontabで動かした時と、ターミナル上の環境では、環境変数が諸々違うっポイ。ためしにこんな事してみて、cronの時の環境変数を確認してみた
このページを最初にブックマークしてみませんか?
『tell-k.hatenadiary.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く