document.querySelector 选择勾选的 checkbox

如果需要使用 document.querySelector 选择勾选的 checkbox 你会怎么做?是不是这样:

看上去没错,但你要清楚 attribute 和 property 的区别,attribute 指的是最初声明在 HTML(源码)中的属性,通过 JS 或点击改变的是 input.checked 这个 property。

所以更安全的写法是用 : 指定 property:

 

paxum.com 账号验证(认证)

最重要的是要有耐心,一步一步来,注册完 paxum.com 的后,账号(应该)是激活状态的,不影响收款。接下来要做的就是让账号验证通过,就可以提现了。

回想起来,这个过程其实并不难,对未知的恐惧才是你最大的障碍。记住,一定要有耐心。

  1. 身份证明(Proof Of Identity)
    • 办护照
      带上你的身份证,到你户口所在地的出入境管理部门办理。现在政府部门办事效率也改善很多了,进入大厅询问工作人员,然后填表、拍照、交款,填写邮寄地址。9 个工作日内,你会收到短信通知 EMS 包裹状态。
      总之,要有耐心,不要因为已有(办证)经验就不耐烦,就情绪不好,就火冒三丈。
    • 填写身份证明(Proof Of Identity)
      1. 先到文印店,扫描一下你的护照(有你照片的那一页)。
      2. 到 paxum.com 上填表单
        注意你填写的内容不能有任何中文。
        series 这一栏填 N/A 即可,Issuing Authority (签发机关)要填护照上英文信息(MPS Exit & Entry Administration)。其它的就对护照上的信息填。
      3. 上传你扫描的护照图片。
      4. 等待身份证明通过
        你提交的身份证明状态变成 Validated 即可。
      5. 如果身份证明很久没通过(2个工作日以上?),就在
        Message Center 里 Open ticket 向  paxum.com 工作人员询问。
  2. 地址证明(Proof Of Address)
    1. 你地址的英文格式
      paxum.com 需要的地址格式是这样的:

      Street Name, Street Number, Building, Entrance, Floor, Apartmen, District, City, State, China, Postal code

      翻译成中文就是:

      街道(路、大道), 街道门牌号, 哪栋楼, 入口(什么鬼?),  楼层,  室, 哪个区, 城市,  省, 国家, 邮编

      把你的地址按照这个格式写一下。

    2. 在 paxum.com 账号增加一个地址
      打开 paxum.com 填写地址的网页,
      填好,保存。地址好了,不过还没对它进行验证。
    3. 认证你的地址
      地址证明的上面必须有你的名字(英文/拼音)和地址(英文/拼音),这个地址证明必须有公信力,可以是信用卡账单、水电煤气账单等等。
      我的选择是:建设银行信用卡账单。思路是:把账单地址改成中英文(拼音)结合的,让银行寄给我,然后拍照,上传到 paxum.com 证明地址。

      1. 修改账单地址
        打开建设银行的手机 APP,信息卡,个人资料,修改账单地址。

        姓名和地址要填英文(拼音)格式,特别要注意的是账单地址,为确保能收到邮寄的账单,我填的账单地址是中文 + 英文(拼音)结合的。
      2. 寄账单
        直接打电话给客服,要求补寄账单。注意,现在银行都会有电子账单和邮寄账单。你一定要问清楚,电子账单上会不会有你的地址信息?如果有,那直接要求发你邮箱就;如果没有,就需要邮寄账单。

        • 建设银行的电子账单不念有地址信息,而且修改的账单地址要次月才会生效。所以我还得再等等。
        • 招商银行的电子账单包含有地址信息。
      3. 提交账单图片
        终于我收到账单了,并上面有我的英文地址。
        拍照留存后,赶紧提交给 paxum 验证地址,不久之后我就收到了账号完成验证的邮件:

如你所见,不难,但办证要时间,邮寄要时间,和 paxum 交流要时间,这些急是没有用的,最需要的是耐心。

不许 PHP 文件被直接访问

很多时候,为了安全,我们的 php 是不允许被直接访问的(这些文件应该被 include 在其它文件中的),可以在 php 开始处贴上这行代码,限制

 

textarea 的 wrap 属性

我需要一个不对内容进行换行的 TextArea ,于是去找它的 wrap 属性,发现这个属性取值是 soft 或者 hard,而这两个值明显都不是我要的。https://www.w3schools.com/tags/att_textarea_wrap.asp

于是再 Google,发现 wrap 还可以赋值 off,而这个值才能实现我要的效果。

这个设置可以在这里查询到: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea

这就是我害怕前端的原因,似乎永远没有一个确定的文档,这边一个 trick 那边一个 trick 针对各种兼容性。

IntelliJ IDEA 配置 xdebug(Windows 环境)

xdebug 是 PHP 的 extension(插件?),我们使用它来调试 PHP 程序,在 Windows 上它就是一个 dll 文件。

  1. 确定下电脑上 php 的版本。编写一个 info.php 内容如下:

    在浏览器中访问 info.php

    我电脑上的 php 版本是 5.6.35(32位)
  2. 下载安装 xdebug
    一定要下载对应 PHP 的版本,下载页面:https://xdebug.org/download.php
    我的 PHP 是 5.6.35(32位),所以我要下载的是:php_xdebug-2.5.3-5.6-vc11.dll
  3. 配置 php.ini
    我们得告诉  php 要使用的 xdebug 插件在什么地方,打开 php.exe 所在路径的 php.ini(例如 c:\xampp\php\php.ini)文件,增加几行(注意,zend_extension 指向你下载的 xdebug dll 的路劲):
  4. 验证 xdebug 安装
    重启下 Apache,再访问 info.php 下,你应该能看到 xdebug 相关
    打开 IDEA 的 PHP 配置,你应该能看到 Debugger 的信息,注意 PHP 路径旁边有个刷新按钮,你可能需要点击才能看到 Debugger 信息。

  5. 安装浏览器的 Xdebug helper 扩展程序
    这个扩展程序在 Chrome 和 Firefox 上都有的。安装完成后,访问 info.php 页面,把 xdebug helper 设置成 debug
    同时要打开 IDEA 的侦听


    设置好断点,然后在浏览器刷新 info.php 页面……终于可以啦

解决 XAMPP + Windows 问题:Access Forbidden Error 403

配置好这 httpd-vhosts.conf、httpd.conf 和 hosts 文件

httpd-vhosts.conf

在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 增加你需要的 virtual host,设置好路径:

<VirtualHost xshell.com:80>
DocumentRoot “E:/work/python/test/shell”
ServerName xshell.com
<Directory “E:/work/python/test/shell”>
#Order allow,deny
#Allow from all
Require all granted
</Directory>
</VirtualHost>

httpd.conf

在 C:\xampp\apache\conf\httpd.conf 把路径加入:

<Directory “E:/work/python/test/shell”>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>

hosts

最后修改 C:\Windows\System32\drivers\etc\hosts 把域名解析到本机:

127.0.0.1 xshell.com

用 .htaccess 保护好 WordPress

保护 .htaccess

保护 wp-config.php

/wp-content/uploads

禁止 php 在这个目录下执行

 

一分钟搞定 Python 程序的内存泄漏问题

如果实在搞不定的话就放弃吧……真的……时间宝贵,项目又这么紧,没时间给你研究学习内存泄漏的问题。

很多时候,一个段程序循环 1000 次看上去没有问题,但 1000000 次问题就出来了,跑一天没问题,但跑一星期内存泄漏问题就出来了。

你应该做的是把程序简单化,不在程序内实现 loop ,而是应该 loop 执行 script。像这样:

 

文件修改时自动重新运行 Celery 的 Worker

下面介绍实现 autoreload 两种方式:

  • 使用 Watchdog

    Watchdog 的 watchmedo 命令可以监控某个目录下的文件修改,重新运行子进程。我们可以利用它实现 Celery worker 的自动重新运行。

你可以直接使用 start-celery-for-dev.py ,它就是基于 watchdog 实现的。

  • 使用 Django
    Django 本身有个机制是监控程序文件改变然后自动重新运行 runserver 命令,我们可以利用这个机制来实现: