Browsing articles tagged with " PHP"
2月
20
2010

PHPで大きな整数を表示する方法

PHPで普通に大きな整数を表示しようとすると、

<?php
$n = pow(10,20);
echo $n;
?>

こんな感じになってしまいます。

1.0E+20

なにこれきもちわるい。

そんなわけでこんな感じにするといいですよ。

<?php
$n = pow(10,20);
printf('%f', $n);
?>
100000000000000000000.000000

その他の事例

小数点以下表示しない

<?php
$n = pow(10,20);
printf('%.0f', $n);
?>
100000000000000000000

PHPの値として受け取ってから表示

<?php
$n = pow(10,20);
echo sprintf('%.0f', $n);
?>
100000000000000000000

ちなみに。。

<?php
$n = pow(10,30);
printf('%.0f', $n);
?>
1000000000000000019884624838656

何か下の方にゴミが。。

2月
9
2010

Stack Overflowのクローン

海外の有名なQ&Aサイトに、Stack Overflowというのがあります。何だか楽しい技術者向けQ&Aサイトです。日本でもこんなのがほしい!

ちなみに、創設者はJoel on Softwareでおなじみのジョエル・スポルスキ(Joel Spolsky)さんです。

というわけで、そんなStack Overflowを作りたい人に向けたStack Overflowクローンの一覧です(というか自分のためのメモ)。

  1. OpenOverflow Ruby, Ruby on Rails, PostgreSQL or MySQL, MIT License
  2. SOClone Python, Django, MIT License
  3. Stacked ASP.NET or Mono, SQL Server, MySQL or その他?
  4. Qwench PHP, MySQL,
  5. CNProg Python, Django, Apache License 2.0

ところで、OSS探ってるといつもASP.NETが地味にいるんですがそんなに需要あるんですかねぇ。。

Joel Spolskyさんの本

Joel on Software Joel on Software
青木 靖

オーム社 2005-12
売り上げランキング : 44381
おすすめ平均

Amazonで詳しく見る

More Joel on Software More Joel on Software
青木 靖

翔泳社 2009-04-09
売り上げランキング : 155402
おすすめ平均

Amazonで詳しく見る by G-Tools

ソフトウェア開発者採用ガイド ソフトウェア開発者採用ガイド
青木 靖

翔泳社 2008-03-20
売り上げランキング : 98313
おすすめ平均

Amazonで詳しく見る by G-Tools

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方 Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方
青木 靖

翔泳社 2008-09-11
売り上げランキング : 103073
おすすめ平均

Amazonで詳しく見る by G-Tools

BEST SOFTWARE WRITING BEST SOFTWARE WRITING
Joel Spolsky

翔泳社 2008-02-21
売り上げランキング : 129688
おすすめ平均

Amazonで詳しく見る by G-Tools

関連リンク

  1. 『Stack Overflow』から学ぶ最近のコミュニティ構築術 – IDEA*IDEA ~ 百式管理人のライフハックブログ

参考リンク

  1. MOONGIFT: » Ruby on Rails製のStackOverflow.comクローン「OpenOverflow」:オープンソースを毎日紹介
  2. MOONGIFT: » 技術者向けQ&AサイトStack Overflowクローン「SOClone」:オープンソースを毎日紹介
  3. MOONGIFT: » ASP.NETによるStackOverflow.comクローン「Stacked」:オープンソースを毎日紹介
  4. MOONGIFT: » PHP製のQ&Aシステム「Qwench」:オープンソースを毎日紹介
  5. MOONGIFT: » 高性能!StackOverflow.comクローン「CNProg」:オープンソースを毎日紹介
12月
27
2009

美しきXOOPSの世界

ホダ塾 – もっとXOOPS!より、HD-1.0.4を使用。
/hd_full_1_0_4/html/modules/legacy/include/groupperm.php 35行目から

if (is_array($_POST['perms']) && !empty($_POST['perms'])) {
  $gperm_handler = xoops_gethandler('groupperm');
  foreach ($_POST['perms'] as $perm_name => $perm_data) {
    if (false != $gperm_handler->deleteByModule($modid, $perm_name)) {
      if (is_array($perm_data['groups'])) {
        foreach ($perm_data['groups'] as $group_id => $item_ids) {
          foreach ($item_ids as $item_id => $selected) {
            if ($selected == 1) {
              // make sure that all parent ids are selected as well
              if ($perm_data['parents'][$item_id] != '') {
                $parent_ids = explode(':', $perm_data['parents'][$item_id]);
                foreach ($parent_ids as $pid) {
                  if ($pid != 0 && !in_array($pid, array_keys($item_ids))) {
                    // one of the parent items were not selected, so skip this item
                    $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>').' ('._MD_AM_PERMADDNGP.')';
                    continue 2;
                  }
                }
              }
              $gperm =& $gperm_handler->create();
              $gperm->setVar('gperm_groupid', $group_id);
              $gperm->setVar('gperm_name', $perm_name);
              $gperm->setVar('gperm_modid', $modid);
              $gperm->setVar('gperm_itemid', $item_id);
              if (!$gperm_handler->insert($gperm)) {
                $msg[] = sprintf(_MD_AM_PERMADDNG, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
              } else {
                $msg[] = sprintf(_MD_AM_PERMADDOK, '<b>'.$perm_name.'</b>', '<b>'.$perm_data['itemname'][$item_id].'</b>', '<b>'.$group_list[$group_id].'</b>');
              }
              unset($gperm);
            }
          }
        }
      }
    } else {
      $msg[] = sprintf(_MD_AM_PERMRESETNG, $module->getVar('name').'('.$perm_name.')');
    }
  }
}

なんじゃこりゃー!!

12月
15
2009

PHPは実行の途中でブラウザを閉じると、処理が中断されるのか?

結論としては、

  1. ignore_user_abort という設定値(php.iniなd)で処理を止めるかどうかを決められる
  2. ignore_user_abortがfalseであっても、止まらないことがある

1はそのままで自明なのですが、2に関しては、どうやら何かを出力しないとブラウザが閉じられたかどうか分からない模様?なので、何か例えば、バックグラウンドで重い処理をしたいときなど、とりあえず走りきってほしいときには、こっそりiframeやらimgタグなどを仕込んで、何も出力しないPHPにアクセスさせるようにすれば、実現可能じゃなかろうか。

参考リンク

  1. PHP: 実行時設定 – Manual
  2. LAMP開発メモ » Blog Archive » ユーザがブラウザを閉じた後、実行中の PHP の処理はどうなる?
  3. ある技術者の備忘録 » PHPの処理を中断させない方法
  4. 作業日報 | ignore_user_abort(false)でPHPが処理を中断しない件
  5. GASOLINE STAND » ignore_user_abort=falseなのにスクリプトが止まらない

Now loading...

PR

Flickr