小编qre*_*0ct的帖子

何时使用index.php而不是index.html

我是相对较新的PHP.有一件非常基本的事让我很烦恼.据我所知,php用于使网站动态化.我也理解php是可用于制作动态网站的众多服务器端脚本语言之一.

但是,我不明白的是,我什么时候需要使用index.php页面.比方说,如果我的索引页面上只有一个简单的登录页面,那么它也可能只是一个简单的html页面.对?那我为什么要把它变成index.php而不是index.html呢?

示例情况的一个例子很棒.

php web-applications vs-web-application-project web-application-design web

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

adb reboot挂起Gennymotion

我之前已经多次使用过adb reboot,绝对没有问题.但是出于某种原因,adb reboot只是冻结了我的Gennymotion模拟器实例(API 18 - Android 4.3),我不知道如何解决这个问题.我尝试在进行adb重启时查看logcat,但这并没有指出任何有趣的事情,除非我错过了一些东西.有人可以帮忙吗?

另一个指针,如果它有帮助,我的模拟器设备会一直提示Google Play服务已停止工作.在我之前使用Gennymotion和adb进行的尝试中,我曾多次遇到过这个问题,并且只是更新所有Google应用程序过去都像是一个魅力.但是,这一次,即使这似乎也不起作用.

android adb genymotion android-reboot

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

汇编语言和平台独立性

我对平台依赖感到困惑.我想直截了当.因此,如果我理解正确,特定的硬件架构将具有特定的指令集.

对?例如.如果我们谈论英特尔8086处理器,那么这个处理器就有一个特定的指令集.如果我在这个指令集中编码,则意味着我使用Intel 8086支持的汇编语言进行编码.对吗?

现在,这种特定的处理器架构可以被各种机器和操作系统使用.例如.使用Mountain Lion OSX的MAC,使用Ubuntu作为其操作系统的Lenovo机器和使用Windows 7作为其操作系统的Sony VAIO机器,所有这些机器都可以将其底层处理器架构作为Intel 8086.对吗?

所以现在如果我用英特尔8086处理器的汇编语言编写代码(比如添加2个数字),这个代码应该在上面提到的所有3台机器上运行没有任何问题.一个普通的汇编程序应该能够将这些代码转换为所有这三台机器上的机器级代码.对?

那么现在,平台依赖在哪里出现?由于asm代码是针对相同的底层处理器架构编写的,它是否应该只在所有平台上运行?

我只想弄清楚我哪里出错并且感到困惑.我在这里错过了什么?如果问题听起来令人困惑或愚蠢,请耐心等待.

assembly

7
推荐指数
2
解决办法
1952
查看次数

在Python中使用多处理和请求的并行发布请求

我有一个小代码片段如下:

import requests
import multiprocessing

header = {
'X-Location': 'UNKNOWN',
'X-AppVersion': '2.20.0',
'X-UniqueId': '2397123',
'X-User-Locale': 'en',
'X-Platform': 'Android',
'X-AppId': 'com.my_app',
'Accept-Language': 'en-ID',
'X-PushTokenType': 'GCM',
'X-DeviceToken': 'some_device_token'
}


BASE_URI = 'https://my_server.com/v2/customers/login'

def internet_resource_getter(post_data):
    stuff_got = []

    response = requests.post(BASE_URI, headers=header, json=post_data)
    stuff_got.append(response.json())

    return stuff_got

tokens = [{"my_token":'EAAOZAe8Q2rKYBAu0XETMiCZC0EYAddz4Muk6Luh300PGwGAMh26Bpw3AA6srcxbPWSTATpTLmvhzkUHuercNlZC1vDfL9Kmw3pyoQfpyP2t7NzPAOMCbmCAH6ftXe4bDc4dXgjizqnudfM0D346rrEQot5H0esW3RHGf8ZBRVfTtX8yR0NppfU5LfzNPqlAem9M5ZC8lbFlzKpZAZBOxsaz'},{"my_token":'EAAOZAe8Q2rKYBAKQetLqFwoTM2maZBOMUZA2w5mLmYQi1GpKFGZAxZCaRjv09IfAxxK1amZBE3ab25KzL4Bo9xvubiTkRriGhuivinYBkZAwQpnMZC99CR2FOqbNMmZBvLjZBW7xv6BwSTu3sledpLSGQvPIZBKmTv3930dBH8lazZCs3q0Q5i9CZC8mf8kYeamV9DED1nsg5PQZDZD'}]

pool = multiprocessing.Pool(processes=3)
pool_outputs = pool.map(internet_resource_getter, tokens)
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)

我所要做的就是将并行POST请求发送到终点,而每个POST都有一个不同的令牌,因为它的帖子正文.

  1. 我能用上面的东西实现我想要的吗?我得到了输出,但我不确定我的请求是否是并行发送的.
  2. 我知道问候.我想实现真正的并行请求(就像在我的系统上使用多个处理器一样),因此我选择了多处理而不是grequests(据我所知,使用gevents,它们同样不是并行的,而是多线程的).我的理解在这里是否正确?

parallel-processing multiprocessing python-2.7 python-requests grequests

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

与AF_INET混淆,以SOCK_RAW为socket类型,V/S AF_PACKET,以SOCK_DGRAM和SOCK_RAW为socket类型

我对网络编程很陌生,并且已经尝试解决这个问题已经有一段时间了。在浏览了互联网上的大量资源后,我得出了以下结论并随之而来的困惑。

结论 1: 当我们谈论创建套接字时:

s = socket(AF_INET, SOCK_RAW, 0);
Run Code Online (Sandbox Code Playgroud)

我们基本上是在尝试创建一个原始套接字。通过以这种方式创建的原始套接字,人们将能够绕过 OSI 堆栈中的 TCP/UDP 层。意思是,当应用程序通过此套接字接收数据包时,应用程序将使包含网络层(第 3 层)标头的数据包包装第 2 层标头,从而包装实际数据。所以应用程序可以自由地处理这个数据包,超出第 3 层,以任何方式。

类似地,当也通过这个套接字发送数据包时,应用程序可以自由地处理数据包的创建,直到第 4 层,然后将其向下传递到第 3 层,内核将从该点开始处理事情。

结论 2:当我们谈论创建套接字时:

s = socket(AF_PACKET, SOCK_RAW, 0);
Run Code Online (Sandbox Code Playgroud)

我们再次尝试创建一个原始套接字。通过以这种方式创建的原始套接字,人们将能够完全绕过 OSI 的所有层。一个纯粹的原始数据包可供用户应用程序使用,并且可以自由地使用该数据包做任何它想做的事情。通过此类套接字接收的数据包将具有完整的所有标头,并且应用程序也可以访问所有这些标头。

类似地,当也通过这样的套接字发送数据时,用户应用程序必须处理与数据包的创建有关的所有事情,以及在实际放置数据之前用每一层的标头包装实际数据在要传输的物理介质上。

结论 3:当我们谈论创建套接字时:

s = socket(AF_PACKET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)

我们再次尝试创建一个原始套接字。通过以这种方式创建的原始套接字,人们将能够绕过 OSI 堆栈中的数据链路层(第 2 层)。这意味着,当用户陆地应用程序接收到通过此类套接字的数据包时,将从数据包中删除数据链路层标头。

类似地,当通过此套接字发送数据包时,根据 sockaddr_ll 目标地址中的信息,将合适的数据链路层标头添加到数据包中。

下面是我的疑问/困惑点:

  1. 我上面关于原始套接字的结论是否正确?
  2. 上面的结论3我不是很清楚。有人可以解释一下吗?就像,这是否意味着当用户土地应用程序通过此套接字接收数据包时,内核将只处理数据链路层标头?因此,数据包就像直接用第 3 层标头包装并随后由它上面的层包装的消息一样?
  3. 如果上面得出的结论是正确的,那么结论 1结论 2仍然有意义。但是,如果上面的结论 3(以及上面 2 中围绕它的推测)是正确的,那么任何应用程序究竟何时需要这样做?

我为了理解上述内容而提到的一些资源:

https://docs.freebsd.org/44doc/psd/21.ipc/paper.pdf

https://sock-raw.org/papers/sock_raw

https://www.quora.com/in/Whats-the-difference-between-the-AF_PACKET-and-AF_INET-in-python-socket

http://www.linuxcertif.com/man/7/PF_PACKET/

http://opensourceforu.com/2015/03/a-guide-to-using-raw-sockets/

“socket”系统调用中的“SOCK_RAW”选项

http://stevendanna.github.io/blog/2013/06/23/a-short-sock-raw-adventure/ …

unix sockets networking tcp

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

在 Terraform 中引用 gitlab 秘密

我对 Terraforms 和 gitlab CI 很陌生,我想用它来做一些事情。

我想使用 Terraform 创建 IAM 用户和 S3 存储桶。使用策略允许该 IAM 用户对此 S3 存储桶执行某些操作。将 IAM 用户的凭证保存在工件中。现在以上将是我的核心模块。

核心模块如下所示:

内容:aws-s3-iam-combo.git

(用于运行所有 Terraform 的 IAM 用户的凭据(例如admin-user)将存储在 gitlab 机密中。)

main.tf

resource "aws_s3_bucket" "bucket" {
  bucket = "${var.name}"
  acl = "private"
  force_destroy = "true"

  tags {
    environment = "${var.tag_environment}"
    team        = "${var.tag_team}"
  }

  policy =<<EOF
{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "${aws_iam_user.s3.arn}"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::${var.name}",
        "arn:aws:s3:::${var.name}/*"
      ]
    }
  ] …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services gitlab tensorflow

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

aws cli lambda `update-function-configuration` deletes existing environment variables

The documentation on the AWS cil lambda states that

...You provide only the parameters you want to change...

Which I assume means that the rest of the settings would still remain the same. However, say my lambda function has environment variables :

var1=old_val1

var2=old_val2

var3=old_val3

and then when I try doing something like this :

aws lambda update-function-configuration --function-name dummy_fun --environment '{"Variables":{"var1":"new_val1","var2":"new_val2"}}'
Run Code Online (Sandbox Code Playgroud)

与更新变量的意图: VAR1VAR2用新值new_val1new_val2分别,虽然这些两个变量DO得到更新,但第三个,VAR3,被删除!

难道我做错了什么 ?还是有办法确保不会发生这种情况?

我绝对可以使用一种变通方法来处理它,在该方法中,我可以获取当前配置,然后在本地更新env变量,然后通过python代码等推送所有更新的配置。但这是唯一的方法吗?还是可以有一种更简单的方法?

environment-variables amazon-web-services aws-cli aws-lambda

5
推荐指数
3
解决办法
1518
查看次数

在 MySql 中存储泡菜

这件事已经困扰了我很长时间了。我通过序列化一些 Python Dict 对象生成了以下泡菜文件(名为 rawFile.raw):

rawFile.raw 的内容(为了易读性而被截断):

(dp0
S'request_body # 1'
p1
S''
p2
sS'port # 1'
p3
I80
sS'query_params # 1'
p4
ccopy_reg
_reconstructor
p5
(cnetlib.odict
ODict
p6
c__builtin__
object
p7
Ntp8
Rp9
(dp10
S'lst'
p11
(lp12
(S'layoutId'
p13
S'-1123196643'
p14
tp15
asbsS'headers # 1'
p16
g5
(cnetlib.odict
ODictCaseless
p17
g7
Ntp18
Rp19
(dp20
g11
(lp21
(lp22
S'sn'
p23
aS'2.VI7D9DF640615B4948854C88C5E769B94C.SIE5FB3A28D0DA4F27A3D2C03B8FAAFFAE.VS144257070601359422212.1442570840'
p24
aa(lp25
S'Browser-Name'
p26
aS'Mobile Safari'
p27
aa(lp28
S'Accept-Encoding'
p29
aS'gzip'
p30
aa(lp31
S'secureToken'
p32
aS'5nANXZrwYBrl9sNykA+qlpLsjHXlnF97tQLHnPgcjwZm9u0t8XAHtO4XTjKODcIb0ee4LlFchmUiptWZEPDUng=='
p33
aa(lp34
S'User-Agent' …
Run Code Online (Sandbox Code Playgroud)

python mysql pickle mysql-python

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

将自签名证书与python中的请求一起使用

情况: 目标站点(例如pre-prod URL,例如https://my-pre-prod-site.com/login)正在使用自签名证书。从浏览器可以通过https访问该站点,而不会出现任何问题(通过将证书添加到浏览器的信任库中来抑制自签名证书警告)

问题陈述: 一个简单的python脚本使用请求对目标站点进行get调用会失败,并在不同情况下出现以下任一错误:

requests.exceptions.SSLError:[Errno 0] _ssl.c:344:错误:00000000:lib(0):func(0):原因(0)

要么

request.exceptions.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590)(在python提示符下)使用的简单脚本为:

import requests
res = requests.get('https://my-pre-prod-site.com/login')
Run Code Online (Sandbox Code Playgroud)

**已经尝试过的东西**

  1. 不是想跳过SSL验证。因此,对我来说,verify = false不是一个选择。
  2. 我已经使用了以下错误

res = requests.get('https://my-pre-prod-site.com/login', verify = os.path.join(os.getcwd(),'test.pem') 其中,test.pem是通过按以下顺序连接以下命令的输出而创建的pem文件:

openssl rsa-在〜/ Desktop / CertPath / private.key -check中

openssl x509 -pubkey -noout -in〜/桌面/CertPath/certificate.pem

该脚本是从〜/ Desktop / CertPath运行的,因此getcwd()提供了证书的正确路径。

  1. 我还尝试了另一个test.pem文件,其中的连接顺序相反。它仍然引发相同的错误。
  2. 尝试分别(单独地)传递包含公钥的.pem文件和包含私钥的.key文件,并且错误与结果相同。

环境详细信息是否有帮助

操作系统-ElCapitan Mac
请求-2.9.0
Python-
Python使用的2.7.10 OpenSSL -'OpenSSL 0.9.8zg 2015年7月14日'

注意-openssl版本似乎不是问题。因为即使使用了opensl的​​更新版本,错误也是相同的-在Ubuntu上使用Openssl 1.x的Python 2.6进行了测试

https openssl python-2.7 python-requests

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

os.system(“ pwd”)和os.getcwd()之间的区别

我对以下3个功能系列有基本疑问:

举例来说,我想知道Python中的当前工作目录。因此,实现此目标的一些方法可能是:

os.system("pwd")

os.getcwd()

subprocess.Popen(['pwd'], stdout=PIPE, stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)

我在网上发现了许多资源,可以将上述第三个与其他资源区分开,但是在上述前两个之间的差异周围并没有发现太多。

请帮助我了解三者之间的区别,尤其是

  1. 从输出的角度来看
  2. 从性能的角度来看
  3. 从实现的角度来看,也就是说,这三个内部如何实现,例如,对于它们中的每一个,它们都会产生一个新的进程,它们如何与内核交互等。

我自己参考的任何指针也将不胜感激。

python subprocess os.system python-2.7

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