タグ

ブックマーク / blog.asial.co.jp (8)

  • JavaScriptによる小数計算の誤差を無くす

    var oldValue, newValue, diff; oldValue = 67; newValue = 66.9; diff = oldValue - newValue; diff = Math.floor(diff * 10) / 10; // 小数点第2位以下切り捨て console.log("今日は" + diff + "kgやせました!"); ファッ!? 0.1kg痩せたはずが、0kgと表示されてしまいました。 たかだか100gとはいえ、こんな表示になったらガックリきますね。 一行ずつ値を追っていくとわかるのですが、4行目で減算した時点でdiffの値が “0.09999999999999432” とズレてしまっています。 これはJavaScriptがIEEE 754という規格に従って実装されているためです。 つまり、この計算結果はJavaScriptの仕様なのでJavaSc

    JavaScriptによる小数計算の誤差を無くす
  • PHP+Kestrel+Supervisorでお手軽タスクキューイング

    こんにちは、久保田です。 ウェブサービスでは、ユーザのアクションに従ってバッチ処理を行わなければならないケースがままあります。この記事では、バッチ処理の手法の一つであるタスクキューイングをPHPとKestrelとSupervisorを利用して行うやり方の導入を紹介します。 なぜなにタスクキューイング ウェブサービスでは、ユーザのアクションに従って非同期にバッチ処理を行うようなケースがよくあります。 例えばflickrのような写真を共有するウェブサービスで言えば、ユーザが写真をアップロードしたあとに非同期でその画像の複数のサムネイル生成や加工をしなければならないケースがあります。 よく見られるのは、DBにバッチ処理のためのタスクデータを入れておいて、後でcronで定期的に起動するワーカープロセスからバッチ処理を行う方法です。このやり方には、ワーカーを複数プロセスで扱いづらい、処理がリアルタイ

    PHP+Kestrel+Supervisorでお手軽タスクキューイング
  • Nginx+Fastcgi+PHPでサクサク快適サイト構築!

    こんにちは、井川です。連日、猛暑続きですね。熱中症には気を付けて、がんばりましょう。 今回は、軽量なWebサーバであるnginxPHPを組み合わせて使う方法を紹介します。 Webサイトにとって、軽さはとても重要なポイントです。PHPはライトウェイトな言語でありながらも、symfonyなど最近のフレームワーク次第ではWebサイトが重くなってしまいます。特に、Apacheで多くのリクエストを同時に受け付けると、レスポンスを返さなくなることがあります。こうした場合、キャッシュを使ったり、Key/ValueストアやMongoDBなどNoSQLにしたり、スケールアウトしたりと、様々な対応が考えられます。 しかし、もっと根的な解決方法はないでしょうか? WebサーバとしてApacheではなく、nginxとFastcgi-PHPを使ってみましょう(lighttpdなどもありますが…)。ベンチマークで

    Nginx+Fastcgi+PHPでサクサク快適サイト構築!
  • PHPの開発時になかなか使えるauto_prepend_file設定

    こんにちは、中川です。 PHPの開発を行っていると、自分の開発用だけの便利関数や、一時的な設定・各種パラメータの変更を行いたいなどあると思います。 そんな時に、実際のプロジェクトファイルに追加してしまうと、 番環境に誤ってそのままコミットしてしまったり、他の開発者にはゴミ扱いされたりとなかなか大変ではないでしょうか。 そんな時に便利な auto_prepend_file という設定をご紹介したいと思います。 PHPにはメインファイルの前に、自動的に付加するファイル名を指定する、 auto_prepend_fileという設定があります。 これを使えば、プロジェクト内のファイルには一切手を加えなくても、PHPで前処理を行うことができます。 ※なお、プログラムの後処理を加えたい場合は、auto_append_file という設定もあります。 設定自体は非常に簡単で、apacheのconfigフ

    PHPの開発時になかなか使えるauto_prepend_file設定
  • 結構使えるMySQLのTrigger機能!

    ■カテゴリテーブル CREATE TABLE category_t ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) default NULL, `product_count` int(11) default 0, PRIMARY KEY  (`id`) ) DEFAULT CHARSET=utf8; ■商品テーブル CREATE TABLE product_t ( `id` int(10) unsigned NOT NULL auto_increment, `category_id` int(11) default NULL, `name` varchar(255) default NULL, PRIMARY KEY  (`id`) ) DEFAULT CHARSET=utf8; カテゴリテーブルには

    結構使えるMySQLのTrigger機能!
  • Titanium で iPhone開発を始めるときに気をつけておきたいこと7つ

    こんにちは、亀です。 当は今日はアシアルの日常を書く、という名目のブログ当番なんですが、どうせエンジニアの日常なんてコード書いてますよね。 ということで、最近使ってみたTitaniumについて書いてみる事にしました。 さて、最近ちまたでTitanium Mobileがあつい!という話が出ていて、入門記事もいろんなところで上がり始めていますね。 Titaniumをご存じない方のために簡単に説明しておくと、JavaScriptを使ってiPhone/Androidアプリを作ってしまおう、という物です。 果たしてどんなもんか!と、手元で作成中だったアプリをTitaniumを使って再実装してみたのですが、世間で言われるとおり所々で凝った事をしづらいものの、想像していたよりはずっと、リッチ・簡単・高速に作れる印象でした。 早い、安い、うまいなんてぎゅうどn(ry その開発の際に、Objective

    Titanium で iPhone開発を始めるときに気をつけておきたいこと7つ
  • PHPerなら知っておいて損はない10の関数

    こんにちは。小川です。 日は数あるPHPの関数の中でも、わりと知られてそうで実は知らない人もいるかもしれない便利な関数をご紹介します。 ■nl2br 改行コードを<br />に変換する関数です。 <?php $string = <<<EOS foo bar baz EOS; echo nl2br($string);

    PHPerなら知っておいて損はない10の関数
  • はじめての共同作業 Canvas編 (node.js + websocket)

    ■■■概要■■■ ・アプリ概要 ・・Canvas + WebSocket ・対応ブラウザ ・・Chrome or Safari (他、WebSocketが使えるブラウザ) ・サーバ側プログラム ・・node.js 0.2.0 ・・express@1.0.0rc2 ・・websocket-server@1.3.50 ※express, websocket-server は node.js のパッケージ管理システムの npm ( http://github.com/isaacs/npm ) でインストールしました。 node.js用のwebsocketサーバは何個かあるみたいですが ( 参照: http://github.com/ry/node/wiki/modules )、 今回は、比較的更新もされていて、手軽に利用できそうな node-websocket-server を使ってみました。

    はじめての共同作業 Canvas編 (node.js + websocket)
  • 1