小编gee*_*guy的帖子

检查正整数(PHP)的最佳方法是什么?

我需要检查一个表单输入值是一个正整数(不只是一个整数),我注意到另一个代码片段使用下面的代码:

$i = $user_input_value;
if (!is_numeric($i) || $i < 1 || $i != round($i)) {
  return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

我想知道使用上面的三个检查是否有任何好处,而不仅仅是这样做:

$i = $user_input_value;
if (!is_int($i) && $i < 1) {
  return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

php validation

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

如何通过嵌套在里面的元素对PHP数组进行排序?

我有一个如下数组:

Array
(
    [0] => Array
        (
            'name' => "Friday"
            'weight' => 6
        )
    [1] => Array
        (
            'name' => "Monday"
            'weight' => 2
        )
)

我想获取该数组中的最后一个值('weight'),并使用它来对主数组元素进行排序.所以,在这个数组中,我想对它进行排序,以便'Monday'元素出现在'Friday'元素之前.

php arrays sorting usort multidimensional-array

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

通过Ansible安装PHP Pear包,具有幂等性

我正在使用Ansible安装PHP的Pear包,如下所示:

- name: Add Phergie PEAR channel.
  command: pear channel-discover pear.phergie.org
  ignore_errors: yes

- name: Install Phergie and related plugins.
  command: pear install pear.phergie.org/{{ item }}
  with_items:
  - Phergie
  - Phergie_Plugin_AltNick
  ignore_errors: yes
Run Code Online (Sandbox Code Playgroud)

ignore_errors是必需的,因为当运行之前已成功运行/完成的命令时,pear总是报告错误(例如:

TASK: [Add Phergie PEAR channel.] ********************************************* 
failed: [10.31.9.210] => {"changed": true, "cmd": ["pear", "channel-discover", "pear.phergie.org"], "delta": "0:00:01.089340", "end": "2013-12-27 10:16:25.640083", "item": "", "rc": 1, "start": "2013-12-27 10:16:24.550743"}
stdout: Channel "pear.phergie.org" is already initialized
...ignoring

TASK: [Install Phergie and related plugins.] ********************************** 
failed: [10.31.9.210] => …
Run Code Online (Sandbox Code Playgroud)

php pear idempotent ansible

8
推荐指数
2
解决办法
4779
查看次数

打印样式表 - 打印页面宽度与Webkit与Gecko/IE不同

在Safari/Chrome中打印下面的页面时,内容(页面上的所有内容,基本上)都会被压缩到页面的左侧,大约是页面宽度的60%.

但是,在FireFox和IE 7中,打印页面将内容显示为全宽(并且看起来非常好,imo).我将所有布局元素的大小调整为100%宽度(使用!important以确保它们正在应用),并且Safari/Chrome仍然无法打印出整个宽度.

这是我正在引用的页面:http: //archstl.org/commoffice/press-release/2010/local-catholic-principal-honored-fi

这里是Webkit(第一个)与Gecko(第二个)之间差异的图像: Webkit的打印渲染http://img.skitch.com/20100518-cgr6t6edwyr3x7p55f5eewqy6r.jpg Gecko的打印渲染http://img.skitch.com/ 20100518-bxgxnyd3uecu5cp2ba2whnp3uy.jpg

css printing internet-explorer gecko webkit

6
推荐指数
1
解决办法
1755
查看次数

使用7BIT内容传输编码解析电子邮件正文 - PHP

我最近一直在实现一些基于PHP/IMAP的电子邮件处理功能,并且除了消息体解码(在某些情况下)之外,大多数工作都很好.

我认为,到目前为止,我已经记下了RFC 2822("互联网邮件格式"文档指南),通过电子邮件处理代码阅读了六个开源CMS,并阅读了一些bajillion论坛帖子,博客帖子,等处理PHP中的电子邮件.

我也分叉并完全重写了PHP的一个类,Imap,并且该类处理电子邮件相当好 - 我有一些有用的方法来检测自动回复(对于不在办公室,旧地址等),解码base64和8bit消息等

然而,有一件事我根本无法可靠地工作(或者,有时候,根本就是)当一条消息进入时Content-Transfer-Encoding: 7bit.

似乎不同的电子邮件客户端/服务解释7BIT为不同的东西.我已经得到了一些电子邮件,据说是7BIT属于实际 Base64编码.我得到了一些实际上是引用可打印编码的.还有一些不以任何方式编码.有些是HTML,但未标明为HTML,它们也被列为7BIT......

以下是使用7Bit编码接收的消息实体的一些示例(剪辑):

1:

A random message=20

Sent from my iPhone
Run Code Online (Sandbox Code Playgroud)

2:

PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwi
IHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9m
Run Code Online (Sandbox Code Playgroud)

3:

tangerine apricot pepper.=0A=C2=A0=0ALet me know if you have any availabili=
ty over the next month or so. =0A=C2=A0=0AThank you,=0ANames Withheld=0A908=
-319-5916=0A=C2=A0=0A=C2=A0=0A=C2=A0=0A=0A=0A______________________________=
__=0AFrom: Names Witheld =0ATo: Names Withheld=
Run Code Online (Sandbox Code Playgroud)

这些与"7位"编码发送(好,至少根据PHP/imap_*),但他们需要更多的解码显然是之前,我可以一起将它们作为明文.有没有办法可靠地将所有带有7Bit编码的消息转换为纯文本?

php email imap decode

6
推荐指数
2
解决办法
8630
查看次数

在NSArray中获取NSDictionary中的所有值

我有一个NSArray充满了NSDictionary对象,每个NSDictionary里面都有一个唯一的ID.我想根据ID查找特定字典,并在我自己的字典中获取该字典的所有信息.

myArray包含:

[index 0] myDictionary object
  name = apple,
  weight = 1 pound,
  number = 294,

[index 1] myDictionary object
  name = pear,
  weight = .5 pound,
  number = 149,

[index 3] myDictionary object (etc...)
Run Code Online (Sandbox Code Playgroud)

我想得到第二个字典对象的名称和重量(我不知道对象的索引...如果只有两个字母,我可以从中制作一个字典[myArray objectAtIndex:1])

所以,比方说我知道数字149.我怎样才能将myArray中的第二个myDictionary对象变成一个新的NSDictionary?

iphone objective-c nsdictionary nsarray

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

使用某个pinColor删除MKMapView注释?

是否可以删除给定pinColor的给定MKMapView上的所有注释?我正在尝试清除我地图上所有用户输入的注释(引脚),然后为我的应用程序的一部分显示新的注释,但我不知道我有多精细地选择性地删除注释...

我想删除所有带有MKPinAnnotationColorGreen(绿色)引脚的注释,但我也可以简单地删除用户输入的所有引脚,如果有办法我可以跟踪它们.

我知道我可以做到:

[myMapView removeAnnotations:myMapView.annotations];
Run Code Online (Sandbox Code Playgroud)

...然后重新绘制我想要的所有注释,但这似乎是浪费资源.

有什么建议?

iphone annotations mkmapview ios

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

是否可以让AWS ALB通过X-Forwarded-Proto标头?

我正在构建一个具有一些相当神秘的TLS和缓存要求的应用程序,并且我使用的堆栈看起来像:

     HTTPS             HTTP
  Nginx (443)       Varnish (80)
       |                |
  Varnish (80)      Nginx (8080)
       \               /
          AWS ALB (80)
               |
  ECS Pool (Docker) - Apache/80
Run Code Online (Sandbox Code Playgroud)

(我让Nginx在Varnish和ALB之间监听8080,因为Varnish不像Nginx那样轻松处理多个/更改IP地址的DNS查找).

问题是HTTPS请求路径:基本上,Nginx的设置X-Forwarded-Proto: https,然后我有我的光油VCL配置通过对ALB安全传递这一点.但是ALB似乎剥离了标头并将其替换为自己的(变为X-Forwarded-Proto: http),然后ECS服务器上的后端应用程序看到http并将其所有链接/资源路径写为http,导致Safari中出现不安全的混合内容警告, Chrome等

因此,我能够使此设置工作的唯一方法是绕过Varnish,在ALB上安装仅后端TLS证书,并设置请求路由,如:

     HTTPS             HTTP
  Nginx (443)       Varnish (80)
       |                |
 AWS ALB (443)      AWS ALB (80)
       \               /
        \             /
  ECS Pool (Docker) - Apache/80
Run Code Online (Sandbox Code Playgroud)

主要是用这个好了... ...但它是一个耻辱,我不能用光油缓存的静态资源HTTPS请求.我想,解决这个问题的唯一方法就是用Varnish和自定义vmod或其他工具(Lambda等)完全替换ALB,以解释不断变化的ECS Docker容器实例池......

有没有办法命令AWS ALB/ELB通过标头或对标头的任何控制?我在文档或控制台中找不到任何内容,而其他大多数人似乎都在ALB上终止HTTPS.如果我刚一个证书,或几个,或者可以使用SNI,我肯定会做到这一点......但我有几百个证书为数百个域,而不能:(

ssl nginx varnish amazon-web-services amazon-elb

5
推荐指数
0
解决办法
2320
查看次数

为什么$ RANDOM不是很随机?

我一直$RANDOM用来生成1-15之间的随机数,以便在两个系统之间产生一点抖动.例如:

sleep $(( RANDOM %= 15 ))
Run Code Online (Sandbox Code Playgroud)

如果我echo $(( RANDOM %= 15 ))每隔几分钟运行一次,那么随机数似乎相当随机.但是,如果我每隔一分钟通过cron开始运行一个带有此调用的脚本,或者甚至只是每隔几秒钟回显一次随机数,随机性就会消失在我的Mac上,我最终会得到11和6之类的非随机值,依次交替,或8,4和2.不是很随机.

在我的一个Linux服务器(CentOS 6.5 x64)上,我添加了以下bash脚本,在第一次循环之后,只是13一遍又一遍地输出:

#!/bin/bash
for ((n = 0; n < 100; n++))
do
  echo $(( RANDOM %= 15 ))
done
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么会这样?我知道$RANDOM不适合加密,但为什么一般会产生随机数这么糟糕?
  2. 有没有其他简单的方法可以通过bash脚本获得更随机的数字(即使需要快速连续)?

random bash

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

如何从节点本身检查 Kubernetes 节点的状态?

从 Kubernetes 集群中的主节点,我可以运行kubectl get nodes并查看集群上任何单个节点的状态,因为kubectl可以找到用于身份验证的集群证书。在我的本地工作站上,假设我的身份验证配置正确,我也可以这样做。

加入到 Kubernetes master的节点,有没有什么方法可以配置身份验证以便kubectl工作,我可以识别节点是处于Ready还是Not Ready状态?

我正在尝试构建一些驻留在节点本身上的监控工具,我想避免设置服务帐户等只是为了检查节点状态,以防万一我可以通过某种方式识别它kubelet、日志、节点上某处的文件、命令等...

monitoring kubernetes kubectl

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

设置Java/Tomcat堆大小(Xmx)而不修改catalina.sh

大多数人似乎建议通过编辑/usr/share/tomcat6/bin/catalina.sh文件为Tomcat6设置Java/Tomcat堆内存大小,并添加如下内容:

# Set specific memory requirements for Tomcat6 (for server with ~512MB RAM).
CATALINA_OPTS="$CATALINA_OPTS -server -Xms128m -Xmx256m"
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个Ansible playbook来在Ubuntu上配置基于Tomcat的服务器,而且我似乎不喜欢整个自定义catalina.sh文件是理想的 - 是否有一些其他配置文件或本地设置文件/ Tomcat和/或Java用来获取XmsXmx值的系统?

或者......大多数人都使用自定义的catalina.sh文件,而我只是在一个小山丘上建造一座山?

java heap configuration tomcat

0
推荐指数
1
解决办法
5625
查看次数