金利が他よりも低いカードローンは、一定レベル以上の金額が必要な時とか、何度も借り入れをしなければならないときには、月の返済額を随分少なくすることができるカードローンだと言って間違いありません。 無利息で貸してもらえる期間があるカードローンというのは、借りた後何日間かは借入金に対する利息がカウントされないカードローンを指します。定められている無利息の期限内に返済することができれば、金利は不要です。 学生さんが対象のローンですと金利も安く、月毎の返済額を見ても、学生でもちゃんと返していけるような内容になっておりますから、躊躇なくお金を借りることができると言えます。 銀行等の金融機関による専業主婦用のカードローンと申しますのは、借入枠が低額ですが、審査のハードルも低く電話もかかってきません。すなわち、密かに即日キャッシングをすることができるということなのです。 午前にカードローン審査が済めば、お
Python CGI で 掲示板みたいなものを作る~Ajax編~では、Ajaxという仕組みを利用してページ遷移を起こさない掲示板システムを作成しました。 しかし、SQLiteとのインターフェイスは、相変わらず"system"関数によるコマンドを呼び出しで、標準入力を通じてSQLコマンドを送り込み、標準出力から結果を受け取る方式になっていました。 Python CGI で作るアクセスカウンタ~sqlite3モジュール編~でsqlite3モジュールが使えるようになったので、掲示板もsqlite3モジュールを使用するように変更してみました。 データベースの構成 今までの掲示板は、一つのデータベースを使いまわしてきましたが、今回は別のデータベースを作成しました。 その理由は、文字エンコーディングの扱いが異なってきたからです。 カラム名タイプ内容 このテーブルに "visitor" という名前をつけ
sqlite3 モジュールは SQLite 関係データベースに対する DB-API 2.0 準拠のインタフェースを提供します。SQLite はアプリケーション内に組み込むように設計された、インプロセスデータベースであり、MySQL, PostgreSQL や Oracle のような独立したサーバプログラムではありません。SQLite は高速且つ柔軟で徹底的にテストされており、プロトタイピングのみならず、アプリケーションによっては本番環境にも使用できます。 データベースを作成する¶ SQLite データベースはファイルシステム上の1つのファイルに格納されます。ライブラリはそのファイルへのアクセスを管理し、複数のプログラムがそのファイルへ書き込むときにデータが破損しないようにロックします。そのファイルへの初回アクセス時にデータベースが作成されますが、アプリケーションはデータベース内のテーブル定
ここを参照して実験してみた。 2006-12-02 例えば以下のようなトランザクションしない場合と、 ケース1 from sqlobject import * import sys, os db_filename = os.path.abspath('data.db') if os.path.exists(db_filename): os.unlink(db_filename) connection_string = 'sqlite:' + db_filename connection = connectionForURI(connection_string) sqlhub.processConnection = connection class Person(SQLObject): firstName = StringCol() middleInitial = StringCol(len
とあるWebアプリケーションを正月休みの間開発していたのですが、諸般の事情により最初に使っていたMySQLからSQLiteに切り替えることになりました。 その際に、いくつかSQLを変更する必要があったので、SQLiteとMySQLで使える文の違いをメモしておきます。 CREATE TABLE文 AUTO_INCREMENT IDなどでよく使うAUTO_INCREMENTですが、SQLiteではこれを付けると構文エラーになります。 では、どのようにAUTO_INCREMENTを実現するかというと、 CREATE TABLE hoge( id integer PRIMARY KEY ); というinteger型でプライマリキーのカラムに、 INSERT INTO hoge(id) values(null); と入れればオートインクリメントされます。 0を挿入するとMySQLだとインクリメントさ
自己紹介 名前: 山田直行(Naoyuki YAMADA) 屋号: 霧敷スタジオ(Kirishiki Studios) ハンドルネーム: hanputu Github Twitter Blog Blog(old) Note Facebook LinkedIn SlideShare SpeakerDeck YOUTRUST 勤務先/取引先(2024年1月時点) 株式会社ナイルワークス(正社員) ドローン事業部 シニアエンジニア 株式会社サイバーエージェント(業務委託) AILab 経済学社会実装チーム 他 業務委託 1社 興味・スキル バックエンド寄りのウェブアプリケーションエンジニア。 小さなエンジニアリングチームでの立ち上げから長期の運用まで、ウェブサービスの開発過程全般に興味・スキルがあります。 AWSを中心にクラウド環境の構築・運用の経験が多く、運用の自動化(GitHub Actio
Node におけるスケールアーキテクチャ考察(Scale 編)というエントリーを読んで、RedisはPub/Sub型通信をサポートしているという事を知りました。エントリーでも言及されているように、Pub/Subを使えば Node.js + WebSocket サーバをスケールする際に、中継サーバの役割を果たす事が出来るはずです。 そんな訳で実際に Node.js と Redis を使って Pub/Sub の実験を行なってみました。ユーザが別々のNode.jsサーバに接続していてもWebSocketを通してメッセージのやり取りを出来るようにします。 イメージとしてはこんな感じです。 下準備# Ubuntuの場合は apt-get で1発でインストールする事が出来ます。 $ sudo apt-get install redis npmでredisモジュールをインストールします。 $ npm i
概要 最近、あるお客さんから、 快速なので、 cjson を使おうという要望をいただきましたが、 以前、僕は cjson は色なエッジケースの処理が微妙と分かっていて、実際に他のライブラリより早いのかなと思いました。 cjsonのPyPiページ いろなコメントが書かれています。しかも、 最新パージョンは 2007 リリースでかなり古い。バグがあるのに、直っていないし、あんまりメンテしてないライブラリに見える。 simplejson も jsonlib もCで拡張があり、 かなり最適化されていると思ったので、テストしてみようと思いました。 というわけで、パフォーマンステストを作って、bitbucket にアップしました https://bitbucket.org/IanLewis/jsonlib-test 準備 buildout を使って、環境を作ります テストを実行 ./bin/run_t
It's like JSON. but fast and small. MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. Next: MessagePack is supported by over 50 programming languages and environm
Redis の Python クライアントの redis-py で以下のような事をやってみた。 # -*- coding: utf-8 -*- from redis import Redis client = Redis(host=localhost) data = {u'foo': u'bar', u'baz': ['aaa', 'bbb', 'ccc']} client.set('sample', data) ret = client.get('sample') print ret set には key, value しかダメなはずなので、このコードはエラーになると思ってたが、Redis から get した際に値が文字列として取れた。 # redis-py の内部で str() で変換していた。 文字列だと取り回しがメンドクサイので、以前は value を MessagePack でシ
[pukiwiki] [[swfmill:http://swfmill.org/]]の[[メーリングリストの過去ログ:http://osflash.org/pipermail/swfmill_osflash.org/]]を読もうとしたらgzipで圧縮されてまして。。。まとめて解凍するツールを持ってなかったのでPythonで。 次回用にメモ <<追記>> [[圧縮する方法もメモ:http://boxheadroom.com/2009/05/02/python-gzip#compress]] [[5/3 zlibモジュールについて追記:http://boxheadroom.com/2009/05/02/python-gzip#zlib]] [/pukiwiki] コマンドプロンプトにて、gzアーカイブが有るフォルダをカレントフォルダにして python -c "import gzip,glob
MessagePack とは、古橋(id:viver)さんが開発された高速・高効率なバイナリシリアライズフォーマットです。詳しくは 古橋さんの日記 やプロジェクトサイト を見てください。 PythonからMessagePackフォーマットでSerialize/DeserializeするためのPythonパッケージを作ったので、取得方法と使い方について簡単に紹介します。 1. インストール msgpackという名前でPython Package Index (PyPI)に登録してあります。 <http://pypi.python.org/pypi/msgpack/> setuptoolsをインストールしている環境では、 $ easy_install msgpack でインストールすることができます。 Windowsでインストールする場合は、PyPIのパッケージサイト からインストーラをダウン
InnoDB Pluginの面白い機能の一つに、データ圧縮機能があります。今回はその仕組みと効果について見ていきたいと思います。まずはグラフをご覧ください。 これはWikipedia日本語版のデータベースをダウンロードし、記事本文の格納されているtextテーブルをMySQL 5.1+InnoDB Plugin 1.0の環境にロードしたものです。 元テキスト:今回利用したデータは2009/06/21版のものです(jawiki-20090621-pages-articles.xml.bz2)。元テキストはここからXml2sqlを用いてタブ区切りテキストを取り出したものを用いています。このファイルには1,167,411件の記事が格納されており、容量は3,436MBとなっています。 元テキスト gzip:元テキストをgzipコマンドで圧縮したものです。 MyISAM:記事をMyISAMのテーブルに
2010年末に、3つに勉強会にて「全文検索エンジンgroonga」の紹介をさせていただきました。 第4回Solr勉強会 groongaを囲む夕べ ドワンゴ技術勉強会(2) MySQLについて それぞれの勉強会にて用いた発表資料を公開いたします。 groongaの紹介部分については使いまわしがバレバレですが、それぞれの勉強会の特性に合わせた味付けをしているので、ぜひご覧になっていただければ嬉しいです。勉強会当日のレポートをされている方もいらっしゃるようなので、興味のある方は検索してみるとよいでしょう。 また、groongaを囲む夕べに関しては、他の発表者さんの資料も以下のリンクから見ること...
今年もGoogleIOのシーズンです。去年に引き続き今年もIOに来ています。 今年は、Keynote(Day1)の前日夕方入りという結構ぎりぎりのスケジュールでした。 去年と違い今年は、Keynoteの整理券が前日に配布されるという方式に変わったらしく 前日にもかかわらず、9時のRegistrationオープン前に長蛇の列が出来るという 整理券で並ぶかKeynoteで配るかかわらなくない?的な状況になっていたらしいです。 私は到着が18時前だったのであまり関係ないですが・・・ 19時前に空港から会場に直行してバッジを受け取ろうと思ったのですが 19時にもかかわらず結構長い列ができていて(60mくらい)去年までは 前日の夕方はガラガラでルーズな感じだったのに、どうなっちゃったんだろう という印象でした。長蛇の原因は、セキュリティーで空港のように一人ずつ 金属探知機でのチェック体制をとっていた
GAEにどんどん機能が追加されていく中、なかなか実装されないのが全文検索。品詞がとれるセグメンターだけでも提供してくれたら全然便利だと思うんだけどそんなアナウンスはまだ有りません。 なきゃ作ればいいじゃんという事で、全文検索もどきを実装してみました。ひとつ前のエントリー通りTriGramです。 以前、恵比寿のイケメン イアンさんと一緒に作ったmisopotetoというモジュールをベースにしています。 今回のポイントは、転置インデックスをredisサーバに送っているところ、GAE(とうかDB全般)は、インサートがめちゃくちゃ遅いので、Ngramでgram毎にエントリーIDをappendしていくというのは辛いです。Twitterの検索結果15個x100文字位をTriGramでインデックスを作ろうとすると、1500個くらいをgetしてappendして、putする必要があります。以前は、TaskQ
Note 英語の本家のページは、 PHPを使って説明 説明していますが、このページではPythonと Tornado を使ったチュートリアルに変えてあります。 Bitbucketの リポジトリ に、このチュートリアルのファイル一式が含まれています。 tutorial/retwis/ フォルダを自分の作業フォルダにおいて、 retwis_start.py に、これから説明する内容を追加で実装していってください。なお、実力に自信のある方は、PHPやRubyの参考実装だけを見ながら、 RegisterHandler や、 FollowHandler クラスもPythonに移植してみてください。 また、 @yssk22 氏がnode.js版を実装してくれました。これもリポジトリの中に入っていますので、興味のある方はこちらのファイルの内容に読み替えてください。 RedisとPythonを使ったシンプ
Tokyo Cabinet / Tokyo Tyrantに代表されるKey-Value Storage,いわゆるKVSは多くのプロダクトが乱立してなかなか違いを理解するのも難しい状況になりつつあるのですが、ここ数日はredisに注目をしています。redisとは何ぞやというと、公式サイトには次のような特徴が挙げられています。 memcachedのようないわゆるKVS valueにはStringだけではなく、List, Setも利用できる データに対するpush/pop, add/removeのような操作はすべてatomicな操作 通常はメモリ上で動作するが、定期的にデータをディスクに書き出す(常に書き出すような設定も可能) Master-Slaveのレプしケーションをサポート Ruby, Python, Perl, Java…などの各言語のバインディングを用意 と、かなり豪華なスペックで、な
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く