小编Maj*_*our的帖子

PHP - 验证函数返回true | false,如果为false则返回消息

我有一个验证函数返回truefalse.
但是,我希望它提供有关问题的信息,当有问题时.

假设函数是这样的:

function is_valid($val) {
  $result = true;
  if( rule_1_not_met ) $result = false;
  if( rule_2_not_met ) $result = false;
  return $result;
}
Run Code Online (Sandbox Code Playgroud)

这是用的

$val = $_GET['some_param'];
if(!is_valid($val)) $out .= 'Not so helpful feedback.';
...
Run Code Online (Sandbox Code Playgroud)

我以为我可以改变它:

function is_valid($val) {
  $result = array(true, array());
  if( rule_1_not_met ) $result[1][] = 'Reason 1';
  if( rule_2_not_met ) $result[1][] = 'Reason 2';
  if(count($result[1]) > 0) $result[0] = false;
  return $result;
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

$val = $_GET['some_param'];
$validation_result …
Run Code Online (Sandbox Code Playgroud)

php function

7
推荐指数
1
解决办法
3万
查看次数

标志位计算和检测

在我正在研究的一些代码中,我应该处理十个独立的参数,这些参数可以采用两个值中的一个(0或1).这会产生2 ^ 10个不同的条件.有些条件永远不会发生,可以省略,但那些确实发生的情况仍然很多,并且switch处理所有案件都是疯了.

我想使用10个if语句而不是巨大的语句switch.为此,我知道我应该使用标志位,或者更确切地说标记字节,因为语言是javascript,并且更容易使用10字节字符串来表示10位二进制.

现在,我的问题是,我不知道如何实现这一点.我已经看到这在APIs中使用,其中多个可选择的选项用数字1,2,4,8,...,n ^(n-1)公开,它们是1,10,100,1000等的十进制等值.在二进制.因此,如果我们进行调用bar = foo(7),bar将是一个具有三个最右边标志启用的任何选项的对象.

我可以将十进制数转换为二进制数,并在每个if语句中检查是否设置了相应的数字.但我想知道,有没有办法确定n-th十进制数字的数字是零或一二进制形式,而不实际进行转换?

javascript algorithm flags

5
推荐指数
1
解决办法
2675
查看次数

"开发者"的任何形式自动填充?

我看过Firefox的一些自动填充功能.但它们的设计并非考虑到开发人员的需求.一般互联网用户需要一个工具来填写许多不同的表格,每个表格都有不变的值.开发人员需要完全相反,当您想要测试应用程序的一部分时,您需要使用不同(但有效且合理)的数据多次填充单个(或几个)表单.

那么,这样的事情存在吗?根据类名(电子邮件,密码,地址,网址,...)填写表单输入的自动填充?

我强烈地觉得,如果它不存在,有人应该卷起袖子做一个!如果其他人想要合作,我会为我的分享.但是现在,如果它存在,我迫切需要一个

automation developer-tools

5
推荐指数
1
解决办法
4386
查看次数

CLI设计和实现?

我正在开发一个供个人使用的时间管理工具.我更喜欢使用键盘而不是鼠标,并且在界面上有一个通用文本框,它将像命令行一样.我刚开始考虑我需要什么命令,命令名称使用什么,如何传递开关和参数等等.

我想知道你们中有些人是否有过这方面的好读物; 描述您设计cli的选择,以及它们如何影响解释器的复杂性以及命令的可扩展性.如果描述是特定于语言或一般而言,则没有区别.但是,我的实现将使用javascript.

谢谢.

command-line-interface system-design

5
推荐指数
1
解决办法
1773
查看次数

PHP - 检查代码中的会话最大生命周期

你如何检查分配给的值session.gc_maxlifetime
显然,这不起作用:

echo session.gc_maxlifetime;
Run Code Online (Sandbox Code Playgroud)

php session

5
推荐指数
1
解决办法
1930
查看次数

制作代理友好站点的指南和最佳实践

这是代理和插件开发人员的问题.

对于特定网站而言,通常的心态是"他们做出改变,打破我们的插件;我们改变逻辑,使其再次运作".

但是,如果对方也担心这个怎么办?如果我们想为一个代理友好的网站编译一套指南和最佳实践进行网站开发,你建议应该去做什么?想想你必须破解的坚果.你还记得那些你希望网站开发者以不同方式完成某项功能的时刻吗?怎么样?

由于这涉及编码,我不认为它应该去serverfault.

编辑:在阅读Pekka的评论后,我觉得我应该添加更多背景信息.

有一些Web代理脚本,如glype和PHProxy.由于脚本应该处理许多未知条件,因此无法为许多站点提供服务.因为这些网站的数量是压倒性的,所以尝试使代理的内部逻辑足够复杂以处理这种巨大的变化是没有意义的.这是插件派上用场的地方.main或base脚本实现了一种在每个站点基础上调用插件代码的机制.

因此,如果代理无法提供服务,那就说facebook.com,顺便提一下,对挑战感兴趣的编码人员会进行一些研究和调试,找出链条被破坏的地点和原因以及应该采取什么措施来解决问题.编码器将其修复程序实现为该特定站点的插件,用户可以将插件放入其插件目录中.

但也会发生网站上的某些内容发生变化,而这种变化会导致插件再次崩溃.因此,赶上网站的最新变化是一个持续的匹配.具有讽刺意味的是,许多网站开发人员既不知道也不关心他们的设计决策可能对内容的代理服务能力产生的影响.但有些网站有充分理由关注访问者通过代理访问其内容的能力.不想在这里进入政界,所以我留给你猜猜为什么这对某些网站来说可能很重要.

这个问题试图利用代理和插件作者的集体知识和经验,制定一套使网站代理友好的指南.

我没有标记问题php最初,因为它主要涉及网站的输出,而不是你如何生成它.但决定对其进行标记,因为它会提高问题的可见性,并且标签也可以在目标受众的基础上进行验证.我也在制作这个社区wiki,所以如果你觉得应该删除php标签,那就这样做吧.

javascript php apache proxy

5
推荐指数
1
解决办法
518
查看次数

无法使用ini_set关闭short_open_tag

我正在将一个javascript语法高亮显示器嵌入到一个PHP脚本中,该脚本读取源文件并回显它.js荧光笔在一行上有这个字符串:

... [z,/^[^<?]+/], ...

short_open_tag在此服务器上打开<?,字符串中的脚本会混淆脚本并导致错误.我无法在php.ini或其他地方关闭.

ini_set('short_open_tag', '0');在同一个脚本中使用过,但它没有生效.可能是什么问题呢?

编辑

最后,我用什么中校弹片的评论所说:
我改[z,/^[^<?]+/],[z,/^[^<?php echo '<' .'?'; ?>]+/],

php configuration

5
推荐指数
1
解决办法
1万
查看次数

从 Javascript 调用 Google Chrome 扩展

有一个名为Blipshot 的优秀扩展,它可以截取页面屏幕截图。我需要使用页面级 JavaScript 调用扩展,而不是单击其图标。这可能吗?

javascript google-chrome-extension

5
推荐指数
2
解决办法
1万
查看次数

删除前一个元素时,forEach会跳过元素

我有两个数组,available_itemsrequested_items.我想删除requested_items中缺少的元素available_items.使用forEach显然不会给出预期结果,因为即使删除了一个元素并且下一个元素具有旧索引,内部索引也会递增.

这是一个测试用例(也在这个jsbin中):

var available_items = [2, 5, 9, 36, 48, 23];
var requested_items = [5, 12, 49, 30, 90, 17];
requested_items.forEach(function(v, i, a) {
  if(available_items.indexOf(v) == -1) {
    console.log("will remove " + i + ' ' + v);
    a.splice(i, 1);
  } else console.log("will keep " + i + ' ' + v);
});
console.log('Resulting request array is ' + requested_items.toString());
Run Code Online (Sandbox Code Playgroud)

结果是:

"will keep 0 5"
"will remove 1 …
Run Code Online (Sandbox Code Playgroud)

javascript performance

5
推荐指数
1
解决办法
369
查看次数

AS3麦克风录音/保存工作,闪光PCM播放双倍速

我在AS3中有一个工作的麦克风录音脚本,我已经成功地通过AMF将.wav文件保存到服务器.这些文件在任何音频播放器中都能正常播放,没有奇怪的效果.

作为参考,我正在做的是捕捉麦克风的ByteArray :(在一个名为AudioRecorder的类中)

public function startRecording():void {
_rawData = new ByteArray();
_microphone
 .addEventListener(SampleDataEvent.SAMPLE_DATA,_samplesCaptured, false, 0, true);
}

private function _samplesCaptured(e:SampleDataEvent):void {
  _rawData.writeBytes(e.data);
}
Run Code Online (Sandbox Code Playgroud)

这没有问题.录制完成后,我可以使用_rawData变量并通过WavWriter类等运行它.

但是,如果我使用以下代码运行同样的ByteArray作为声音我从adobe cookbook改编:(在一个名为WavPlayer的类中)

public function playSound(data:ByteArray):void {
  _wavData = data;
  _wavData.position = 0;
  _sound.addEventListener(SampleDataEvent.SAMPLE_DATA, _playSoundHandler);
  _channel = _sound.play();
  _channel
    .addEventListener(Event.SOUND_COMPLETE, _onPlaybackComplete, false, 0, true);
}

private function _playSoundHandler(e:SampleDataEvent):void {
  if(_wavData.bytesAvailable <= 0) return;
  for(var i:int = 0; i < 8192; i++) {
    var sample:Number = 0;
    if(_wavData.bytesAvailable > 0) sample = _wavData.readFloat();
    e.data.writeFloat(sample);
  }
}
Run Code Online (Sandbox Code Playgroud)

音频文件以双倍速度播放!我检查了记录比特率等等,我很确定这些都是正确的,我尝试改变缓冲区大小和我能想到的任何其他数字.它可能是单声道与立体声的东西吗?

希望我在这里很清楚,谢谢!

flash wav actionscript-3 audio-recording audio-player

4
推荐指数
1
解决办法
1万
查看次数