js从Excel拿到日期是一个浮点小数,时间格式问题怎么转换为时间戳?

前端网站管理员 Published the article • 0 comments • 371 views • 2019-06-20 15:23 • 来自相关话题

### 背景

js从excel中拿到的时间是一个浮点的天数,时间是1900-01-01开始到现在的天数

### 解决思路
1. 首先我们需要处理时区的问题,```getTimezoneOffset()```得到距离UTC的分钟时间差
2. 然后将时间转换为毫秒级时间戳,传入```new Date()```中,初始化对象
3. 由于时间戳开始时间是1970-01-01,所以```getFullYear()```要减去70年,得到UTC年份
4. 毫秒转换为时间戳除以1000即可得到,然后对其取整。

### js代码实例

```js
let value = 4564;
value = value + (new Date()).getTimezoneOffset() / 60 / 24;
let date = new Date((value - 1) * 24 * 3600000 + 1);
date.setUTCFullYear(date.getFullYear() - 70);
return parseInt('' + date.getTime() / 1000);
``` 查看全部

### 背景

js从excel中拿到的时间是一个浮点的天数,时间是1900-01-01开始到现在的天数

### 解决思路
1. 首先我们需要处理时区的问题,```getTimezoneOffset()```得到距离UTC的分钟时间差
2. 然后将时间转换为毫秒级时间戳,传入```new Date()```中,初始化对象
3. 由于时间戳开始时间是1970-01-01,所以```getFullYear()```要减去70年,得到UTC年份
4. 毫秒转换为时间戳除以1000即可得到,然后对其取整。

### js代码实例

```js
let value = 4564;
value = value + (new Date()).getTimezoneOffset() / 60 / 24;
let date = new Date((value - 1) * 24 * 3600000 + 1);
date.setUTCFullYear(date.getFullYear() - 70);
return parseInt('' + date.getTime() / 1000);
```

windows PE header数据结构分析

数据结构与算法网站管理员 Published the article • 0 comments • 101 views • 2019-06-18 10:44 • 来自相关话题

如何获取PE(Protable Executable)格式的header,PE的结构在winnt.h中可以获得,该头文件里定义了大量的PE数据结构体,方便我们对可执行文件数据结构进行分析。
如果我们不知道这些结构,我们可能需要逆向工程的技术对其结构进行分析猜想,还是包含一定的工作量。

PEheader的定义如下:

WORD的数据类型是short的无符号整型,```e_magic```是DOS签名,```e_lfanew```是NT的偏移量。一般的PE文件e_magic为```0x5a4d```。


### WORD的定义
```
typedef unsigned short WORD;
```

### PE header

```
typedef struct _IMAGE_DOS_HEADER {
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew;
} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
```

### 示例代码

```c
#include
#include
#include

int main() {
FILE *file;
IMAGE_DOS_HEADER header;
file = fopen("cmake-build-debug\\c_demo.exe", "r");
fread(&header, sizeof(header), 1, file);
fclose(file);

printf("doc: 0x%x\n", header.e_magic);
return 0;
}
``` 查看全部

如何获取PE(Protable Executable)格式的header,PE的结构在winnt.h中可以获得,该头文件里定义了大量的PE数据结构体,方便我们对可执行文件数据结构进行分析。
如果我们不知道这些结构,我们可能需要逆向工程的技术对其结构进行分析猜想,还是包含一定的工作量。

PEheader的定义如下:

WORD的数据类型是short的无符号整型,```e_magic```是DOS签名,```e_lfanew```是NT的偏移量。一般的PE文件e_magic为```0x5a4d```。


### WORD的定义
```
typedef unsigned short WORD;
```

### PE header

```
typedef struct _IMAGE_DOS_HEADER {
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew;
} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
```

### 示例代码

```c
#include
#include
#include

int main() {
FILE *file;
IMAGE_DOS_HEADER header;
file = fopen("cmake-build-debug\\c_demo.exe", "r");
fread(&header, sizeof(header), 1, file);
fclose(file);

printf("doc: 0x%x\n", header.e_magic);
return 0;
}
```

淘小铺邀请码URLF

PHP网站管理员 Published the article • 0 comments • 143 views • 2019-05-22 19:37 • 来自相关话题

今天朋友圈大家都在分享淘小铺,这是阿里巴巴推出的一个分销应用,用来和拼多多抗衡

今天朋友圈大家都在分享淘小铺,这是阿里巴巴推出的一个分销应用,用来和拼多多抗衡

解决Ubuntu下,/usr/bin/pycompile无法找到模块ConfigParser

Python网站管理员 Published the article • 0 comments • 330 views • 2019-04-17 14:52 • 来自相关话题

pycompile出现异常,找不到模块ConfigParser,期初以为是自己没有安装,后来用pip安装尝试安装,已经安装了

```
Traceback (most recent call last):
File "/usr/bin/pycompile", line 35, in
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in
from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
```

ConfigParser是python2.x的一个参数parse模块,但是python3.x已经是用小写了```configparser```,加上自己的linux环境主要用的是python3.5,所以断定这个pycompile还是用的python2.x

```bash
whereis pycompile
# /usr/bin/pycompile
mv /usr/bin/pycompile /usr/bin/pycompile.backup
ln -s /usr/bin/py3compile /usr/bin/pycompile
```

用命令```whereis```查看了一下pycompile的路径,然后在该目录下找到了3.x版本的,果断备份,添加新的软链。 查看全部


pycompile出现异常,找不到模块ConfigParser,期初以为是自己没有安装,后来用pip安装尝试安装,已经安装了

```
Traceback (most recent call last):
File "/usr/bin/pycompile", line 35, in
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in
from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
```

ConfigParser是python2.x的一个参数parse模块,但是python3.x已经是用小写了```configparser```,加上自己的linux环境主要用的是python3.5,所以断定这个pycompile还是用的python2.x

```bash
whereis pycompile
# /usr/bin/pycompile
mv /usr/bin/pycompile /usr/bin/pycompile.backup
ln -s /usr/bin/py3compile /usr/bin/pycompile
```

用命令```whereis```查看了一下pycompile的路径,然后在该目录下找到了3.x版本的,果断备份,添加新的软链。

如何在Python3.x上安装Sentry,实现实时监控业务错误

Python网站管理员 Published the article • 0 comments • 361 views • 2019-04-17 14:40 • 来自相关话题

在Python3.x上安装Sentry是不可能的!!!

Sentry是一款收集错误的工具,能够实时展示给开发人员,并且后台界面做的十分的好看,
但是你会发现在Python3.x上安装十分的费劲,最后还是会以失败而告终。

2015年有人在github上提了个issue,问作者在Python3.x上为什么无法安装sentry,作者回答不支持。如果你尝试用pip安装sentry的话,会出现如下错误:

```
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting sentry
Using cached https://pypi.tuna.tsinghua.edu ... ar.gz
Collecting BeautifulSoup>=3.2.1 (from sentry)
Using cached https://pypi.tuna.tsinghua.edu ... ar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-install-krx08m8x/BeautifulSoup/setup.py", line 22
print "Unit tests have failed!"
^
SyntaxError: Missing parentheses in call to 'print'

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-krx08m8x/BeautifulSoup/
```

在该项目的```setup.py```文件中,我们发现该项目用户的框架是```Django```,并且```Programming Language :: Python :: 2 :: Only```,只支持2.x,都9102年了,还在用Python2.x。

```
classifiers=[
'Framework :: Django',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 2 :: Only',
'Topic :: Software Development'
],
```

### 如何在Python2.x上安装Sentry

网上安装的教程太多了,我就不重复写了,可以pip安装,手动编译源码安装,甚至可以安装docker镜像,十分的方便

#### 推荐安装方法
```
https://www.cnblogs.com/scharf ... .html
``` 查看全部

在Python3.x上安装Sentry是不可能的!!!

Sentry是一款收集错误的工具,能够实时展示给开发人员,并且后台界面做的十分的好看,
但是你会发现在Python3.x上安装十分的费劲,最后还是会以失败而告终。

2015年有人在github上提了个issue,问作者在Python3.x上为什么无法安装sentry,作者回答不支持。如果你尝试用pip安装sentry的话,会出现如下错误:

```
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting sentry
Using cached https://pypi.tuna.tsinghua.edu ... ar.gz
Collecting BeautifulSoup>=3.2.1 (from sentry)
Using cached https://pypi.tuna.tsinghua.edu ... ar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-install-krx08m8x/BeautifulSoup/setup.py", line 22
print "Unit tests have failed!"
^
SyntaxError: Missing parentheses in call to 'print'

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-krx08m8x/BeautifulSoup/
```

在该项目的```setup.py```文件中,我们发现该项目用户的框架是```Django```,并且```Programming Language :: Python :: 2 :: Only```,只支持2.x,都9102年了,还在用Python2.x。

```
classifiers=[
'Framework :: Django',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 2 :: Only',
'Topic :: Software Development'
],
```

### 如何在Python2.x上安装Sentry

网上安装的教程太多了,我就不重复写了,可以pip安装,手动编译源码安装,甚至可以安装docker镜像,十分的方便

#### 推荐安装方法
```
https://www.cnblogs.com/scharf ... .html
```

Some tips, better use of Vim

Linux网站管理员 Published the article • 0 comments • 259 views • 2019-04-17 11:07 • 来自相关话题

### Directory is not exist?

```bash
Command Control + Z, run vim background, and user command mkdir to create this directory
```

### No permission to create this file, or edit it?

```
# ESC
:w !sudo tee % >/dev/null
```

And then, your need to choice ```Ok``` or ```Load```, after your choice, the file mode will be readonly. don't feel fear, your can use command above 查看全部
### Directory is not exist?

```bash
Command Control + Z, run vim background, and user command mkdir to create this directory
```

### No permission to create this file, or edit it?

```
# ESC
:w !sudo tee % >/dev/null
```

And then, your need to choice ```Ok``` or ```Load```, after your choice, the file mode will be readonly. don't feel fear, your can use command above

Windows安装mitmproxy遇到的坑,官方二进制包只包含Python标准库!

Python网站管理员 Published the article • 0 comments • 622 views • 2019-04-15 10:52 • 来自相关话题

### 昨天在windows上用pip安装mitmproxy的时候,出现了一个异常的错误
```
Microsoft Visual C++ 14.0 is required
```
如果需要安装```Microsoft Visual C++ 14.0```的编译工具还是挺麻烦,于是想着官方有打包二进制包,直接安装得了,省事儿。出现无法加载第三方库,```No module named``` 结果发现官方编译的二进制不能使用第三方模块,瞬间感觉就不好了。

### github issues

> Addon scripts don't have access to full Python 3 standard library
> issues地址:https://github.com/mitmproxy/mitmproxy/issues/3238

### 作者给出的解释
>Hi,
>
>Our binaries only contain parts of Python’s stdlib to save space. If you need additional modules, you need to install mitmproxy via pip or from source: https://docs.mitmproxy.org/sta ... tion/

作者的意思是:为了节省二进制包的大小,只包含了Python的标准库,如果需要安装mitmproxy的话,建议用pip或者源码编译

### 解决方案

1. 最后还是不得不安装```Microsoft Visual C++ 14.0```,然后pip安装mitmproxy
2. 后台又试了一下,原来是安装不了```brotlipy, bindings to the Brotli compression library.```

打开如下网站,找到相应的python版本,以及系统类型,下载安装即可:
```bash
pip install brotlipy‑0.7.0‑cp37‑cp37m‑win_amd64.whl
```
```
https://www.lfd.uci.edu/~gohlke/pythonlibs/
``` 查看全部
### 昨天在windows上用pip安装mitmproxy的时候,出现了一个异常的错误
```
Microsoft Visual C++ 14.0 is required
```
如果需要安装```Microsoft Visual C++ 14.0```的编译工具还是挺麻烦,于是想着官方有打包二进制包,直接安装得了,省事儿。出现无法加载第三方库,```No module named``` 结果发现官方编译的二进制不能使用第三方模块,瞬间感觉就不好了。

### github issues

> Addon scripts don't have access to full Python 3 standard library
> issues地址:https://github.com/mitmproxy/mitmproxy/issues/3238

### 作者给出的解释
>Hi,
>
>Our binaries only contain parts of Python’s stdlib to save space. If you need additional modules, you need to install mitmproxy via pip or from source: https://docs.mitmproxy.org/sta ... tion/

作者的意思是:为了节省二进制包的大小,只包含了Python的标准库,如果需要安装mitmproxy的话,建议用pip或者源码编译

### 解决方案

1. 最后还是不得不安装```Microsoft Visual C++ 14.0```,然后pip安装mitmproxy
2. 后台又试了一下,原来是安装不了```brotlipy, bindings to the Brotli compression library.```

打开如下网站,找到相应的python版本,以及系统类型,下载安装即可:
```bash
pip install brotlipy‑0.7.0‑cp37‑cp37m‑win_amd64.whl
```
```
https://www.lfd.uci.edu/~gohlke/pythonlibs/
```


震惊了,微软在github上开源了PowerShell的源码

前端网站管理员 Published the article • 0 comments • 306 views • 2019-04-12 17:26 • 来自相关话题

微软在github上开放了powershell的源码,这家伟大的公司已经走在了开源的前沿,可以说没有几家公司能做到微软这个地步。

powerShell的源码是用C#写的,如果你是一个在windows上工作的程序员,还在用cmd的话,可能就过时了,其实还有git的bash等软件可以帮你处理一些自动化的工作。

我是一个linux的忠实粉丝,对windows的软件一般感兴趣吧,但是对于微软的开源我还是很敬佩的,忍不住star了一下。

PowerShell不仅支持window的系统,同样也支持mac,linux等系统,微软的同学编写了详细的文档,Recommended Training and Reading and Commercial Resources,如果你的英语不差的话,学习起来很快,当然微软还列出与bash不同的命令,如:ls -> dir,clear -> cls,touch test.txt -> New-Item -Path test.txt,这里就不一一列举了,想了解的同学,赶紧去star一下PowerShell这个项目吧 查看全部

微软在github上开放了powershell的源码,这家伟大的公司已经走在了开源的前沿,可以说没有几家公司能做到微软这个地步。

powerShell的源码是用C#写的,如果你是一个在windows上工作的程序员,还在用cmd的话,可能就过时了,其实还有git的bash等软件可以帮你处理一些自动化的工作。

我是一个linux的忠实粉丝,对windows的软件一般感兴趣吧,但是对于微软的开源我还是很敬佩的,忍不住star了一下。

PowerShell不仅支持window的系统,同样也支持mac,linux等系统,微软的同学编写了详细的文档,Recommended Training and Reading and Commercial Resources,如果你的英语不差的话,学习起来很快,当然微软还列出与bash不同的命令,如:ls -> dir,clear -> cls,touch test.txt -> New-Item -Path test.txt,这里就不一一列举了,想了解的同学,赶紧去star一下PowerShell这个项目吧

It is required that your private key files are NOT accessible by others

Linux网站管理员 Published the article • 0 comments • 355 views • 2019-04-09 10:55 • 来自相关话题

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
``` 查看全部
```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
```

2019年4月8号,清明节归来随笔

随想录网站管理员 Published the article • 0 comments • 200 views • 2019-04-08 17:31 • 来自相关话题

最近一直在看书,看各种类型的书籍,包括计算机软件编程的一些书籍,同时也在探索各种语言,底层的实现,数据结构和算法,网络协议,二进制,安全对抗的一些知识,弥补自己不是科班出身,基础薄弱的短板。

编程有些年头,发现自己的提升越来越慢,主要还是基础知识不够扎实。当然,上班工作写代码,下班回家还是研究写代码,其实真的很烦,枯燥无味,不仅自己这样,也让身边的朋友觉得你是一个无趣的人。

最近思绪良多,想了很多的事情,生活不只是代码,还有很多美好的东西,编程影响生活,生活也影响编程,很多的设计思想都是来自生活。自己算是一个兴趣广泛的人,喜欢摄影,跑步和羽毛球。这可能是大多数程序员的爱好,所以感觉自己也离不开这个。

喜欢上了看书,看形形色色的书籍,编码的,编码之外,投资理财、养生健身、管理、以及名人传,了解他们的故事,从书本中获得一些思考。思考很重要,不然就是浪费时间,书本中的不一定是能让你直接受益的,是要转化为自己的知识。

自律即自由。对于普通的人来说,我们普遍的缺乏持之以恒的精神,以及充满生活的热情。这个信息复杂,高速传播的社会,群体中的成员很容易受到负面的消息而堕落,消极,对自己的未来失去了信心,做一天和尚撞一天钟,浑浑噩噩的过着每一天。这样的事情我见多了,而且也曾今在我的身上发生过。后面我给自己写了一个```Todo List```,每天的,每周的,每月的,某一段时间的。这样我就有了短期的目标,长期的目标,我需要专注于他们。

清明的三天假我觉得自己有些进步,比如我每天早晨坚持早起,8点左右就醒了,说起床就起床,坚决不拖拉,坚持运动,跑了三公里,虽然很累,但是我跑完之后很开心,从来到重庆之后几乎没有跑过步,这估计是一年以来第一次跑步吧,跑完很开心,我用力的呼吸着新鲜的空气,感觉自己重生了。每天坚持了阅读,每天挤一两个时间来读书,读各个领域的书,书籍不再是局限在软件知识,更多的是如何做人,融入生活,融入社会。对了我晚上还有一个瑜伽,因为自己驼背,我想通过瑜伽来改掉这个坏习惯,今天感觉背部舒服多了。

人生可能就是这么的简单,当你想好好活着的时候,你会很多的事情想做,你的时间可能会越来越少,这个时候我们应该做的是选择适合自己的,重要的,有优先级的去做,尽量减少无谓的付出。

写得一手好文章很重要,淋漓尽致地彰显自己的思维,只是自己积累的素材太少,书读得太少,阅历不够,那么现在开始我应该做的就是积累素材,多读书,多出去走走,见见世面,广交朋友,多交流想法,勤思考。


ydl
2019-04-09 查看全部
最近一直在看书,看各种类型的书籍,包括计算机软件编程的一些书籍,同时也在探索各种语言,底层的实现,数据结构和算法,网络协议,二进制,安全对抗的一些知识,弥补自己不是科班出身,基础薄弱的短板。

编程有些年头,发现自己的提升越来越慢,主要还是基础知识不够扎实。当然,上班工作写代码,下班回家还是研究写代码,其实真的很烦,枯燥无味,不仅自己这样,也让身边的朋友觉得你是一个无趣的人。

最近思绪良多,想了很多的事情,生活不只是代码,还有很多美好的东西,编程影响生活,生活也影响编程,很多的设计思想都是来自生活。自己算是一个兴趣广泛的人,喜欢摄影,跑步和羽毛球。这可能是大多数程序员的爱好,所以感觉自己也离不开这个。

喜欢上了看书,看形形色色的书籍,编码的,编码之外,投资理财、养生健身、管理、以及名人传,了解他们的故事,从书本中获得一些思考。思考很重要,不然就是浪费时间,书本中的不一定是能让你直接受益的,是要转化为自己的知识。

自律即自由。对于普通的人来说,我们普遍的缺乏持之以恒的精神,以及充满生活的热情。这个信息复杂,高速传播的社会,群体中的成员很容易受到负面的消息而堕落,消极,对自己的未来失去了信心,做一天和尚撞一天钟,浑浑噩噩的过着每一天。这样的事情我见多了,而且也曾今在我的身上发生过。后面我给自己写了一个```Todo List```,每天的,每周的,每月的,某一段时间的。这样我就有了短期的目标,长期的目标,我需要专注于他们。

清明的三天假我觉得自己有些进步,比如我每天早晨坚持早起,8点左右就醒了,说起床就起床,坚决不拖拉,坚持运动,跑了三公里,虽然很累,但是我跑完之后很开心,从来到重庆之后几乎没有跑过步,这估计是一年以来第一次跑步吧,跑完很开心,我用力的呼吸着新鲜的空气,感觉自己重生了。每天坚持了阅读,每天挤一两个时间来读书,读各个领域的书,书籍不再是局限在软件知识,更多的是如何做人,融入生活,融入社会。对了我晚上还有一个瑜伽,因为自己驼背,我想通过瑜伽来改掉这个坏习惯,今天感觉背部舒服多了。

人生可能就是这么的简单,当你想好好活着的时候,你会很多的事情想做,你的时间可能会越来越少,这个时候我们应该做的是选择适合自己的,重要的,有优先级的去做,尽量减少无谓的付出。

写得一手好文章很重要,淋漓尽致地彰显自己的思维,只是自己积累的素材太少,书读得太少,阅历不够,那么现在开始我应该做的就是积累素材,多读书,多出去走走,见见世面,广交朋友,多交流想法,勤思考。


ydl
2019-04-09