我们使用以下函数自动检测我们是在机器内部还是在实时服务器上,然后为各种组件选择适当的配置:
function devIsLocal(){
$res=false;
$http_host=$_SERVER['HTTP_HOST'];
if($http_host=='localhost')$res=true;
if($http_host=='127.0.0.1')$res=true;
if(substr($http_host,-4)=='.lan')$res=true;
if(strpos($http_host, '.')===false)$res=true;
return($res);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它仅依赖于HTTP_HOST值.
当然,如果您在本地使用某种类型的虚拟主机,例如example.com,那么该功能将被欺骗.
有没有其他方法来欺骗这个功能?还有哪些其他变量/地方可以用来确定我们的位置?
php development-environment production-environment autodiscovery
关于fnmatch在pathinfo上的速度有一个小小的争论:如何检查文件是否是php?
我并不完全相信所以决定对两个功能进行基准测试.
使用动态和静态路径显示pathinfo更快.
我的基准逻辑和结论是否有效?
编辑:从cmd使用mac php
PHP 5.3.0(cli)(内置:2009年7月20日13:56:33)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0,版权所有(c)1998-2009 Zend Technologies
动态路径pathinfo 3.2973630428314 fnmatch 3.4520659446716 x1.05
static path pathinfo 0.86487698554993 fnmatch 1.0420439243317 x1.2
来自cmd的mac xampp php
PHP 5.3.1(cli)(内置:2010年2月27日12:41:51)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0,版权所有(c)1998-2009 Zend Technologies
动态路径pathinfo 3.63922715187 fnmatch 4.99041700363 x1.37
static path pathinfo 1.03110480309 fnmatch 2.38929820061 x2.32
我在我的机器上包含一个结果样本,以秒为单位进行100,000次迭代:
dynamic path
pathinfo 3.79311800003
fnmatch 5.10071492195
x1.34
static path
pathinfo 1.03921294212
fnmatch 2.37709188461
x2.29
Run Code Online (Sandbox Code Playgroud)
码:
<pre>
<?php
$iterations=100000;
// Benchmark with dynamic file path
print("dynamic path\n"); …Run Code Online (Sandbox Code Playgroud) 我正在寻找方法来减少浪费时间来打开所需的所有应用程序,定位窗口,打开网址/文件/更改目录等.在实际编码开始之前.
在完美的世界中,每个'项目'将有2个按钮标记为'SAVE STATE'和'RESTORE STATE'.您在某些游戏中找到的功能.
我在Mac上花了几个小时用'Automator'敲打我的头(由于某种原因甚至有问题甚至从码头打开火狐)然后是AppleScript(这让我感觉我很长时间骑了).
在网上搜索引导我到这个脚本:
http://snipt.net/Fotinakis/applescript-to-save-and-restore-window-positions/
#!/usr/bin/osascript
-- Usage:
-- $ osacompile -o windowPositions.compiled.scpt windowPositions.scpt
-- $ osascript windowPositions.compiled.scpt --save
-- $ osascript windowPositions.compiled.scpt --restore
-- Change this to be the list of windows you want to save/restore
property affectedProcesses : {"Chrome", "Adium", "Eclipse", "Terminal"}
property windowRecord : {}
on run argv
if (count of argv) is equal to 0 then
log "Please specify one of --save or --restore."
return
end if
tell application "System Events"
if (item 1 …Run Code Online (Sandbox Code Playgroud) 我们让用户从单个文本输入中搜索数据库,并且我在过滤一些用户提供的字符串时遇到了困难.
例如,如果用户提交:
????????? lcd SONY
Run Code Online (Sandbox Code Playgroud)
(注意?)我需要取消搜索.
我包括上面的字符串的base64编码版本,以便它运行:
print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));
Run Code Online (Sandbox Code Playgroud)
我之前忽略了这些输入但是现在(我不知道为什么)只是意识到mysql数据库查询几乎永远执行所以现在这是高优先级.
另一个强调我们使用utf-8和mb_detect_encoding的例子没有多大帮助:
print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
????????? ?????%
Run Code Online (Sandbox Code Playgroud)
所以:
我刚刚重新启动我的firefox网络浏览器,因为它开始出现口吃和放慢速度.由于(我的理解)过多的内存使用,这种情况每隔一天发生一次.我注意到它启动时需要40M,然后,当我注意到减速时,它会升至1G,除非我关闭其他应用程序,否则我的机器无法提供.我试图理解为什么要解决这么难的问题背后的技术原因.
Mozilla有一个关于高内存使用量的页面:
http://support.mozilla.com/en-US/kb/High+memory+usage
但我正在寻找一个更深入和令人满意的解释.不是超级技术,但足以让这个问题更受尊重,请在这里取悦人群.
我已经在思考的一些问题(它们可能很愚蠢,所以放轻松):
应用和语言不可知的答案也非常感谢.
给定一些输入,包括左右符号,输出链连接输入.
想象一下,输入是多米诺骨牌,你不能水平翻转,需要把它们连在一起.创建大的循环链(忽略,如果你不能用真正的多米诺骨牌实际做到这一点)优于小型循环链,这种小型循环链优先于起点和终点不匹配的链.
我们正在寻找具有更多循环链(无论多少或链长)的输出.例如,3个圆形链的输出优于1个大链和剩余的单个多米诺骨牌.
有人能指出我正确的方向吗?这属于哪一组问题,是否存在解决此问题的现有算法?
示例(输出可能不正确!):
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,A)
out[0]=(0,1,2)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,C)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(E,F)
out[0]=(0,1)
out[1]=(2)
out[2]=(3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,E)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,D)
out[0]=(0,1,2)
Run Code Online (Sandbox Code Playgroud) 我有一个包含数百个表的庞大数据库,我想找出所有表中定义的总字段(列).
有没有可以给我的SQL查询?如果没有,最好的方法是什么?
以http://en.wikibooks.org/wiki/Haskell/Beginning为例
Prelude> let abs x = if x < 0 then -x else x
Prelude> abs 5
5
Prelude> abs -3
<interactive>:1:6:
No instance for (Num (a0 -> a0))
arising from the literal `3'
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the second argument of `(-)', namely `3'
In the expression: abs - 3
In an equation for `it': it = abs - 3
Run Code Online (Sandbox Code Playgroud)
怎么了?
正如标题所说,我试图只改变第一次出现的单词.通过使用sed's/this/that /'file.txt
虽然我没有使用g选项,但它会替换整个文件.如何解决这个问题.
更新:
$ cat file.txt
first line
this
this
this
this
$ sed -e '1s/this/that/;t' file.txt
first line
this // ------> I want to change only this "this" to "that" :)
this
this
this
Run Code Online (Sandbox Code Playgroud) 以下用于查找192.168.1.X主机服务器的实际本地IP地址(例如)的代码在开发机器上运行正常
$ip = getHostByName( getHostName() );
Run Code Online (Sandbox Code Playgroud)
将它传输到另一台服务器,它开始输出 127.0.0.1
似乎getHostName()返回由getHostByName()localhost转换为127.0.0.1哪个.
看看这里的其他问题似乎$_SERVER['SERVER_ADDR']可以解决这个难题,但这也是回归127.0.0.1
检查和搜索输出phpinfo()返回没有线索到机器的实际IP地址.
说真的,有没有人知道获得运行脚本的机器的IP地址的防弹(更简单,更好)的方法?为什么没有做翻转就很难获得这样的基础数据?
我真的不想在配置文件中硬编码IP地址......