分类 Coding 下的文章

前言

文章直接翻译自Salesforce开发者页面,原页面很详细,可惜是英文的可能很多人有阅读的障碍,所以翻译成中文,好理解!实际上,原文是针对SOQL查询的,并不是针对一前端网页用户。但是在前端我们使用Salesforce时,也可以使用这样的日期格式或者字面日期,只要转换一下就行非常方便。

典型的字面日期包括:YESTERDAY, TODAY, THIS_WEEK, LAST_MONTH, NEXT_QUARTER, and THIS_FISCAL_YEAR等,这是SOQL查询语句用的。换成前端用户的话,只需要把下下划线\_替换成空格 就行。举例LAST_MONTH变成LAST MONTH.

日期格式

纯日期

格式为 YYYY-MM-DD 例子是 2011-11-11

日期与时间、时区偏移混搭

格式

  • YYYY-MM-DDThh:mm:ss+hh:mm 例子是 2011-11-11T11:11+1:00
  • YYYY-MM-DDThh:mm:ss-hh:mm 例子是 2011-11-11T11:11-8:00
  • YYYY-MM-DDThh:mm:ssZ 例子是 2011-11-11T11:11:11Z

注意:所有时区偏移都是从UTC算起的(可还记得本初子午线和格林威治) 具体可以查看下面两个网页:
http://www.w3.org/TR/xmlschema-2/#isoformats
http://www.w3.org/TR/NOTE-datetime

字面日期

这个就不得了了,为什么?因为实在有太多选择了(部分暂时不能使用在前端,其实前面的就够了):

  • 字面日期(英文/SOQL) 中文(可以直接在前端网页中输入哦) 备注
  • YESTERDAY 昨天
  • TODAY 今天
  • TOMORROW 明天
  • LAST WEEK 上星期
  • THIS_WEEK 本星期
  • NEXT_WEEK 下星期
  • LAST_MONTH 上月
  • THIS_MONTH 本月
  • NEXT_MONTH 下月
  • LAST_90_DAYS 过去 90 天 (注意中间的空格,有数字的字面日期数字需要与前后文字均隔一个空格,下同)
  • NEXT_90_DAYS 未来 90 天
  • LAST_N_DAYS:n 过去 n 天 (n可以随便设置哦!下同)
  • NEXT_N_DAYS:n 未来 n 天
  • NEXT_N_WEEKS:n 未来 n 星期
  • LAST_N_WEEKS:n 过去 n 星期
  • NEXT_N_MONTHS:n 未来 n 个月
  • LAST_N_MONTHS:n 过去 n 个月

THIS_QUARTER
LAST_QUARTER
NEXT_QUARTER
NEXT_N_QUARTERS:n
LAST_N_QUARTERS:n
THIS_YEAR
LAST_YEAR
NEXT_YEAR
NEXT_N_YEARS:n
LAST_N_YEARS:n
THIS_FISCAL_QUARTER
LAST_FISCAL_QUARTER
NEXT_FISCAL_QUARTER
NEXT_N_FISCAL_​QUARTERS:n
LAST_N_FISCAL_​QUARTERS:n
THIS_FISCAL_YEAR
LAST_FISCAL_YEAR
NEXT_FISCAL_YEAR
NEXT_N_FISCAL_​YEARS:n
LAST_N_FISCAL_​YEARS:n

日期限制(最大最小日期)

Saelsforce中的日期是有一个范围的,填入超过这个范围的日期不会被Salesforce接受,同时系统会报错。而在插入(Insert)一个对象时,日期错误可以直接导致整个插入失败。
Salesforce中最小日期为1700-01-01T00:00:00Z GMT, 最大日期为4000-12-31T00:00:00Z GMT.

前言

Discuz!X3.2这个问题不是个案,而是实实在在的bug,网上一搜一大把。但是目前仍然没有官方补丁出来,只有网友力量:

bug描述

在找回页码界面,填写并提交新密码后会出现「参数错误」的提示。

bug原因

discuz在post表单传值的时候没有没有传sign值,但是又校验的了这个sign值。为了安全起见,解决办法不能删除校验这步,必须传送这个sign值。

解决方法

  1. 修改文件:source\module\member\member_getpasswd.php

    $uid = $_GET['uid'];

    下方添加

    $sign = $_GET['sign'];

  2. 修改文件:template\default\member\getpasswd.htm
    修改

带出的问题

  1. 登录太慢,花时间太久

Matlab与Excel混合编程其实早在2010年科学网左正伟博客就有一篇文章总结了,到现在(2015年)也不为过时。这里在简要引用一下,作者终结了四种(当时)主流的实现方式:

  • 利用Excel Link(最常用方法),具体参见Matlab帮助或Excel Link手册
  • 利用Excel生成器(Matlab作COM服务器)
  • 利用Active X控制(Matlab作COM客户端)
  • 文件导入方法(利用xlsreadxlswrite函数读写Excel文件)

路上这篇文章主要介绍最后一种方法,即利用xlsreadxlswrite函数去读写Excel文件,再用Matlab进行数据处理的思路。因为路上的需求非常简单(粗暴):统计一堆按照某种格式制作的Excel文件(工作簿)中每个工作表(工作表/Worksheet)中指定位置的内容,并返回统计结构。
Matlab去满足这两种需求也很简单:利用xlsread读取内容,处理后,利用xlswrite写入预定格式的Excel文件中。其中xlsread用的函数调用方法为:

[num,txt,raw] = xlsread(filename,sheet,xlRange)

xlswrite的调用方法为:

xlswrite(filename,A,sheet,xlRange)

同时我们使用

[satus,sheets] = xlsfinfo(filename)

得到每个工作表(worksheet)的名称,同时我们也可以通过numel(sheets)获得工作表数量信息。而为了去自动读取所有的Excel文件,我们将所有要处理的文件放在一个文件夹下,然后利用 file = dir('./*.xlsx') 命令将所有Excel文件存入一个结构数组中。

思路(步骤)总结

  1. 利用 dir 函数读取所有要处理的Excel文件信息
  2. 利用xlsfinfo函数获得Exce文件中的工作表(worksheet)信息(名称、数量等)
  3. 利用xlsread函数读取Excel文件中指定工作表(worksheet)指定位置数据
  4. Matlab 编程处理数据
  5. 利用xlswrite 函数将相关数据以存入预定格式的 Excel 文件中

Discuz! 是非常知名的论坛和门户建站平台。但是其对电子邮箱有32位的限制,任何超过32位的邮箱都会被判断为无效邮箱。但是,实际上现在会有一些邮箱会超过这一限制,因此本着对所有用户负责人的态度,解除这一限制就成了当务之急。

经过粗略的研究Discuz!的form有效性验证是form内容提交到网站后,后台(php语言部分)进行验证,再将结果通过Ajax(注册时采用)或者召唤相应页面(注册后手动修改邮箱时采用)的方式返回到网页前端。同时,通过对3.2版本的Discuz!数据库研究发现,其默认的邮箱字段长度位255为可变字符(varchar)。因此,只要我们修改后台相应的php验证模块,我们可以实现最长255位的邮箱支持。不过实际上很难有人注册这种邮箱,我们的目标是为正常人类服务,因此将邮箱长度设置为64位.下面是步骤,就两步:

  1. 修改注册流程的后台php验证代码:
    修改\discuz\source\function\function_core.php第370行函数「isemail」中最大长度32为64
  2. 修改手动修改邮箱流程的后台php验证代码:
    修改\discuz\source\function\function_member.php第285行函数「checkemail($email)」中「strlen($email) > 32」为「strlen($email) > 64」.

注:文章基于python3,路上通过这篇文章中的内容,写了20多行代码,实现定时抓取某网页某几个数据的目标

准备工作

要使用python抓取网页,可以使用两个包:requests用于下载网页,而BeautifulSoup则对网页进行结构化解析。如果你在电脑上安装了pip,则可以使用下面的命令下载安装这两个包:

pip install requests beautifulsoup4

或者按照引用文章1将两个包安装到虚拟环境。
(实际上路上通过分析发现,在路上的需求里,第二个包没有用到。。)

抓取网页

抓取网页及其简单,假如我要抓取「https://pip.pypa.io/en/stable/」这个网页,则使用:

import requests
response = requests.get(‘https://pip.pypa.io/en/stable/')

在函数返回后,就能从response.text中获得这个页面的文本数据(html或者其他文本)。

抓取数据后,使用BeautifulSoup对文本数据处理,便会得结构化的HTML,然后就可以利用BeautifulSoup强大的HTML处理能力抓取相关内容了。但是路上经过分析发现需要抓取的内容位于某xx.js文件内,是json变量。所以BeautifulSoup没能使用的上。。

使用python处理JSON内容

python原生支持JSON,使用json.loads(JSONdata)将JSON转换为xml,然后使用xml相关技术得到相关数据。具体步骤略去。
python处理JSON可以参见这篇文章