小编mr.*_*r.b的帖子

如何使用strtotime和日期获得相对于今天的上个月和年份?

相对于当前日期,我需要获得上个月和上年.

但是,请参阅以下示例.

// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));

// Output:
2011-03-02
Run Code Online (Sandbox Code Playgroud)

由于2月和3月的天数不同,这种行为是可以理解的(在某一点上),上面的例子中的代码是我需要的,但是每个月的1号和28号之间只能正确地工作100%.

那么,如何以date("Y-m")最优雅的方式获得上个月和一年(想想),这适用于一年中的每一天?最佳解决方案将基于strtotime参数解析.

更新.稍微澄清一下要求.

我有一段代码可以获得过去几个月的统计数据,但我首先显示上个月的统计数据,然后在需要时加载其他月份.这是预期的目的.所以,在这个月里,我想知道我应该在哪个月份来加载上个月的统计数据.

我还有一个时区感知的代码(现在不是很重要),并且接受strtotime兼容的字符串作为输入(初始化内部日期),然后允许调整日期/时间,也使用strtotime-compatible字符串.

我知道它可以通过几个条件和基本数学来完成,但与此相比,这是非常混乱的,例如(如果它正常工作,当然):

echo tz::date('last month')->format('Y-d')
Run Code Online (Sandbox Code Playgroud)

所以,我只需要一个月和一年,以一种strtotime兼容的方式.

回答(谢谢,@ ndagirl):

// Today is 2011-03-30
echo date('Y-m-d', strtotime('first day of last month')); // Output: 2011-02-01
Run Code Online (Sandbox Code Playgroud)

php date strtotime

58
推荐指数
8
解决办法
12万
查看次数

可靠的方式生成唯一的硬件ID

问题:我必须为每个联网客户端提供唯一ID,例如:

  • 一旦客户端软件安装在目标计算机上,它(ID)应该保持不变,并且如果软件重新安装在同一台计算机和相同的操作系统上,则应继续保持,
  • 如果在大多数情况下修改硬件配置(更换主板除外),则不应更改
  • 当安装了客户端软件的硬盘驱动器克隆到具有相同硬件配置(或尽可能相似)的另一台计算机时,客户端软件应该知道该更改.

一点点解释和一些背景故事:

这个问题基本上是古老的问题,也触及了软件拷贝保护的主题,因为这里提到了该领域中使用的一些机制.在这一点上我应该清楚,我不是在寻找一种复制保护方案.请继续阅读.:)

我正在开发一个应该在本地网络中工作的客户端 - 服务器软件.我必须解决的一个问题是识别网络中的每个唯一客户端(而不是问题),以便我可以将某些属性应用于每个特定客户端,在特定部署的生命周期中保留并强制执行这些属性.客户.

在我寻找解决方案时,我发现了以下情况:

  • Windows激活系统使用某种对硬件修改极其敏感的重型指纹识别机制,
  • 磁盘映像软件会复制所有卷ID(格式化时绑定到每个分区),以及在安装过程中,首次运行期间或以任何其他方式自定义,唯一生成的ID,严格来说属于软件本身,并存储在注册表或在硬盘上,所以很容易混淆两个.

这种问题的明显选择是找出BIOS标识符(不过100%确定这是否通过相同的主板型号是唯一的),因为这是我唯一可以依赖的不重复,通过克隆传输,并且不能改变(至少不能通过使用一些用户空间程序).其他一切都失败了,因为要么不可靠(MAC克隆,任何人?),要么太苛刻(就其对配置变化过于敏感而言).

我想问的一个子问题是,我是否正确地进行了架构方面的工作?也许有一个更好的工具来完成我必须完成的任务......

我想到的另一种方法类似于握手机制,其中服务器维护一个连接的客户端ID的内部查找表(在任何给定时刻甚至可以完全基于软件和非唯一),并告诉客户端如果在连接时提供重复的ID,则在握手期间提供不同的ID.遗憾的是,这种方法不能很好地满足在生命周期内将属性绑定到特定客户端的要求之一.

windows client-server bios uniqueidentifier hardware-id

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

在Dispose()方法中GC.SuppressFinalize(this)的目的是什么?

我有以下代码:

public void Dispose()
{
    if (_instance != null)
    {
        _instance = null;
        // Call GC.SupressFinalize to take this object off the finalization
        // queue and prevent finalization code for this object from
        // executing a second time.
        GC.SuppressFinalize(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然有一条评论解释了与GC相关的电话的目的,但我仍然不明白为什么会这样.

一旦所有实例都停止存在,就不会将对象注定为垃圾收集,例如,当在using块中使用时?

什么是用例场景,它将发挥重要作用?

.net c# garbage-collection idisposable suppressfinalize

29
推荐指数
3
解决办法
2万
查看次数

如何正确使用ESJ"导出默认值"与CommonJS"require"?

我一直在通过Webpack教程.在其中一个部分中,它给出了代码示例,其中包含一行本质问题:

export default class Button { /* class code here */ }
Run Code Online (Sandbox Code Playgroud)

在所述教程的下一部分,标题为"代码分割",上面定义的类是按需加载的,如下所示:

require.ensure([], () => {
    const Button = require("./Components/Button");
    const button = new Button("google.com");
    // ...
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,此代码抛出异常:

Uncaught TypeError: Button is not a function
Run Code Online (Sandbox Code Playgroud)

现在,我知道包含ES6模块的正确方法是简单地import Button from './Components/Button';在文件的顶部,但是在文件中的任何其他地方使用类似的构造会让babel成为一个悲伤的熊猫:

SyntaxError: index.js: 'import' and 'export' may only appear at the top level
Run Code Online (Sandbox Code Playgroud)

require.ensure()上面的上一个()示例的一些摆弄之后,我意识到ES6 export default语法导出一个具有名为property的对象,该对象default包含我的代码(Button函数).

我通过.default在require调用后附加来修复损坏的代码示例,如下所示:

const Button = require("./Components/Button").default;
Run Code Online (Sandbox Code Playgroud)

...但我认为它看起来有点笨拙并且容易出错(我必须知道哪个模块使用ES6语法,哪个使用旧版本module.exports).

这让我 …

javascript commonjs ecmascript-6 webpack es6-module-loader

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

如何在git中列出本地提交的差异

我在本地克隆了一个远程存储库,随着时间的推移,我已将本地提交添加到该克隆的存储库中.

现在,每当我这样做时git status,我都会看到你的分支在xx commits消息之前超过'origin/master'.

问:我如何仅列出本地提交的内容,以便我可以更详细地检查这些提交,并最终将其中一些提交到上游?

git version-control

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

使用命令行工具按日期拆分access.log文件

我有一个Apache access.log文件,大小约为35GB.通过它不再是一种选择,不需要等待很多.

我希望通过使用日期作为拆分标准将其拆分为许多小文件.

日期格式[15/Oct/2011:12:02:02 +0000].任何想法我怎么能只使用bash脚本,标准文本操作程序(grep,awk,sed和喜欢),管道和重定向?

输入文件名是access.log.我希望输出文件具有这样的格式access.apache.15_Oct_2011.log(这可以解决问题,但在排序时不太好.)

bash text logfiles

16
推荐指数
3
解决办法
2万
查看次数

如何制作Windows服务应用程序,以便它也可以作为独立程序运行?

我将从一个例子开始:Apache Web服务器(在Windows下)有一个很好的功能:它既可以作为独立应用程序运行(具有当前用户权限),也可以作为Windows服务直接安装和运行(作为本地系统帐户),使用相同的可执行文件

为了使应用程序作为独立应用程序运行,它需要做的就是在某些公共类中使用静态公共Main().

为了使应用程序可以作为服务进行安装和运行,它必须以某种方式实现ServiceBase和Installer类.但是,如果像这样的应用程序作为独立应用程序运行,它将显示消息框.

如何实现这种类似Apache的操作模式?我相信解决方案很简单,但我真的不知道从哪里开始.

后面的代码片段用于调用服务.可以修改它以允许独立使用吗?

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
            new Service() // defined elsewhere as Service : ServiceBase
        };
        ServiceBase.Run(ServicesToRun);
    }
}
Run Code Online (Sandbox Code Playgroud)

我选择的语言是C#.

编辑:目前,我已将公共代码抽象为单独的程序集(让我们称之为Library.dll),我有两个可执行文件:Console.exe和Service.exe,它们分别是独立的和Windows服务应用程序,两者都只是手段调用Library.dll.

我的目标是将这两个可执行文件合并为一个,仍然会调用Library.dll.

c# windows-services

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

如何将ID列表传递给MySQL存储过程?

我正在编写一个存储过程,它应该将其参数传递给IN (..)过程体中的部分查询,如下所示:

DELIMITER //

CREATE PROCEDURE `get_users_per_app` (id_list TEXT)
BEGIN
    SELECT app_id, GROUP_CONCAT(user_id) FROM app_users WHERE app_id IN (id_list) GROUP BY app_id;
END//

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用,因为当我传递文本值时,id_list插值为整数,并且只考虑第一个ID并在IN()条件内使用.

我意识到这个特定类型的过程可以替换为包含的查询,但我认为我的问题仍然存在 - 如果我需要传递这种数据怎么办?

我也意识到这种查询方法可能不被认为是最佳实践,但在我的用例中,它实际上比返回一个ID-ID对的平面列表更好.

mysql stored-procedures

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

教程:简单的WCF XML-RPC客户端

更新:我在下面的回答中提供了完整的代码示例.

我已经构建了自己的小型自定义XML-RPC服务器,因为我想在服务器端和客户端都保持简单,我想要完成的是使用WCF创建一个最简单的客户端(最好是C#) .

假设通过XML-RPC公开的服务合同如下:

[ServiceContract]
public interface IContract
{
    [OperationContract(Action="Ping")]
    string Ping(); // server returns back string "Pong"

    [OperationContract(Action="Echo")]
    string Echo(string message); // server echoes back whatever message is
}
Run Code Online (Sandbox Code Playgroud)

因此,有两个示例方法,一个没有任何参数,另一个带有简单的字符串参数,两个都返回字符串(仅为了示例).服务通过http公开.

Aaand,下一步是什么?:)

c# wcf client xml-rpc

13
推荐指数
2
解决办法
3万
查看次数

如何读取GPU(图形卡)温度?

我感兴趣的是如何通过使用一些视频卡驱动程序API来读取GPU温度(图形处理单元,图形卡的主芯片)?

每个人都知道有两个不同的芯片制造商(至少是流行的) - ATI和nVIDIA - 所以有两种不同的驱动器来读取温度.我有兴趣学习如何为每个不同的卡驱动程序执行此操作.

有问题的语言是无关紧要的 - 它可能是C/C++,.NET平台,Java,但是让我们说.NET是首选.

以前有人这样做过吗?

windows api driver temperature video-card

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