假设我有一个包含2个静态函数的类:
class CommandHandler
{
public:
static void command_one(Item);
static void command_two(Item);
};
Run Code Online (Sandbox Code Playgroud)
我有一个DRY问题,我有两个函数,每个行都有完全相同的代码,除了它调用的函数:
void CommandOne_User()
{
// some code A
CommandHandler::command_one(item);
// some code B
}
void CommandTwo_User()
{
// some code A
CommandHandler::command_two(item);
// some code B
}
Run Code Online (Sandbox Code Playgroud)
我想删除重复,理想情况下,执行以下操作:
void CommandOne_User()
{
Function func = CommandHandler::command_one();
Refactored_CommandUser(func);
}
void CommandTwo_User()
{
Function func = CommandHandler::command_one();
Refactored_CommandUser(func);
}
void Refactored_CommandUser(Function func)
{
// some code A
func(item);
}
Run Code Online (Sandbox Code Playgroud)
我可以访问Qt,但不能访问Boost.有人可以帮我建议如何重构这样的东西吗?
我正在构建我的第一个Safari扩展 - 一个非常简单的扩展 - 但我遇到了一些问题.扩展名归结为单个注入脚本,该脚本尝试绕过本机Feed处理程序并重定向到http:// URI.到目前为止,我的问题有两个:
beforeload事件处理程序,但无法使用safari.extension.settings文档中指示的路径访问我的设置.我没有在Apple的文档中找到任何内容,表明我的脚本不应该提供设置.由于扩展功能是一项新功能,因此即使是Google也会返回有限的相关结果,其中大部分都来自官方文档.
我错过了什么?
谢谢.
更新
所以我希望文档不完整,因为它的边界非常糟糕,但我已经了解了一些设置.事实证明,从注入脚本,该SafariExtensionSettings对象不可用.注入脚本只能访问该SafariContentExtension对象(根本没用),但它的别名方式完全相同(safari.extension.settings) - 坏主意,IMO.如注入脚本文档中所述:
重要提示:当您在注入的脚本中使用safari.extension时,您不会处理SafariExtension类.您正在处理SafariContentExtension类.
您必须使用消息传递系统与可以访问设置的全局HTML文件进行通信.它有点循环,但是我有一条消息被发送到一个global.html文件来检索设置,并且一旦我弄清楚如何去做,就会将消息发送回我的注入脚本.
由于我做所有我的工作文件加载之前,所有的方法,我发现要发送消息回靠,我没有一个网页对象.
我有一个web应用程序,包含一些html表单,用于维护一些表(SQlite,使用CherryPy来处理Web服务器的东西).首先,我完全采用"Python方式",并通过生成html字符串.代码,具有公共页眉,页脚等,在单独的模块中定义为函数.
我也喜欢模板的想法,所以我尝试了Jinja2,我发现它非常适合开发人员.一开始我认为模板是要走的路,但那是页面很简单的时候.引入.css和.js文件后(不一定与.html文件位于同一文件夹中),并引入了越来越多的{{...}}变量和{%...%}命令,事情在设计时开始变得混乱,尽管它们在运行时看起来很棒.当我需要额外的javascript或部分时,事情变得更加困难.
据我所知,使用模板的主要优点是:在设计过程中,可以在浏览器中轻松查看页面的非动态元素.除了{}占位符之外,html与python代码分开.如果您的公司有网页设计师,他们仍然可以在不知道Python的情况下进行设计.
虽然有些缺点是:{{}}分隔符在设计时在浏览器中查看时可见.相关的.css和.js文件必须在同一文件夹中才能在设计时在浏览器中查看效果.数据,变量,列表等必须在高级中准备,并且要么全局声明,要么作为参数传递给render()函数.
那么 - 什么时候使用'硬编码'HTML,何时使用模板?我不确定最好的方法,所以我很想听听其他开发者的意见.
TIA,艾伦
可能重复:
为什么从XML变量中插入 - 选择变量表这么慢?
我使用以下SQL代码在表中插入多行数据.使用XML变量将数据传递给存储过程:
INSERT INTO MyTable
SELECT SampleTime = T.Item.value('SampleTime[1]', 'datetime'),
Volume1 = T.Item.value('Volume1[1]', 'float'),
Volume2 = T.Item.value('Volume2[1]', 'float')
FROM @xml.nodes('//Root/MyRecord') T(item)
Run Code Online (Sandbox Code Playgroud)
我有一大堆单元测试来验证我正在插入正确的信息,正确的记录数等等.当我调用存储过程时.
所有罚款和花花公子 - 也就是说,直到我们开始使用数据库的兼容级别.
只要我们将DB的兼容级别保持在90(SQL 2005),上面的代码就可以很好地工作.当我们将兼容级别设置为100(SQL 2008)时,单元测试失败,因为使用上面代码的存储过程超时.
单元测试正在丢弃数据库,从脚本重新创建数据库,并在全新的数据库上运行测试,所以它不是 - 我认为 - 一个关于"旧兼容性级别"的问题.
使用SQL Management工作室,我编写了一个快速测试SQL脚本.使用相同的XML块,我改变DB compat级别,截断表,然后使用上面的代码插入650行.当级别为90(SQL 2005)时,它以毫秒为单位运行.当级别为100(SQL 2008)时,它有时需要一分钟,有时会以毫秒为单位运行.
我很欣赏任何人可能对此有任何见解.
该脚本需要一分钟才能运行我的实际数据,这些数据的行数比我在此处显示的数量多,是一个真实的表,并且有一个索引.使用以下示例代码,差异介于毫秒和大约5秒之间.
--use [master]
--ALTER DATABASE MyDB SET compatibility_level =100
use [MyDB]
declare @xml xml
set @xml = '<?xml version="1.0"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Record>
<SampleTime>2009-01-24T00:00:00</SampleTime>
<Volume1>0</Volume1>
<Volume2>0</Volume2>
</Record>
..... 653 records, sample time spaced out 4 hours ........ …Run Code Online (Sandbox Code Playgroud) MD5和SHA-1哈希具有抵御冲突攻击的弱点.SHA256没有,但它输出256位.我可以安全地获取第一个或最后一个128位并将其用作哈希值吗?我知道它会更弱(因为它的位数较少),但否则会有效吗?
基本上我想用它来唯一地识别文件系统中可能有一天包含万亿个文件的文件.我知道生日问题,128位散列应该会产生大约1万亿的机会,万亿个文件会有两个不同的文件具有相同的散列.我可以忍受这些可能性.
我不能忍受的是,如果有人可以轻易地,故意地插入具有相同散列和文件的相同开头字符的新文件.我相信MD5和SHA1这是可能的.
这是一个特殊的属性,void*也可以被指定一个指向指针的指针并返回并接收原始值.
我在某处读过这行.它意味着void*和void**是一样的吗?有什么不同?
编辑
void*可以持有任何指针.那void**需要什么?
我正在调用Resolve的异常:
KernelException: Could not instantiate custom activator
Inner Exception:
{"Constructor on type 'MyProj.MyAdapter`1[[MyProj.MyBusinessObject, MyAsm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' not found."}
Run Code Online (Sandbox Code Playgroud)
肯定有一个公共无参数构造函数(我在运行时使用反射验证了这一点)...所以我认为这个问题可能与它是通用的事实有关吗?我已经尝试获取组件模型对象并将RequiresGenericArguments设置为true,但这并没有让我在任何地方.
任何帮助将非常感激!谢谢.
我编写了代码,使用我的GSM手机发送短信,该手机通过COM端口连接到计算机.代码如下.
问题是我确实看到它在电话的发件箱中,它实际上似乎已被发送,但当我联系收件人时,他们说我没有收到该消息.
我测试手机,我只使用手机创建和发送消息,它完美地工作.但是,当我使用我的代码执行此操作时,它已经发送,并且我从手机获得了所有正确的AT COMMAND响应,但实际上没有发送消息.
这是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO.Ports;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SerialPort serialPort1;
int m_iTxtMsgState = 0;
const int NUM_MESSAGE_STATES = 4;
const string RESERVED_COM_1 = "COM1";
const string RESERVED_COM_4 = "COM4";
public Form1()
{
InitializeComponent();
this.Closing += new CancelEventHandler(Form1_Closing);
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1 = new SerialPort(GetUSBComPort());
if (serialPort1.IsOpen)
{
serialPort1.Close(); …Run Code Online (Sandbox Code Playgroud) 简史:刚刚高中毕业,学到了一点python和C++,没有任何有用的计算机知识的朋友.在我上学期间遇到的任何人中,我可能是最大的书呆子,但没有人真正知道.我认为自己拥有大量的计算机和技术知识,而不是普通人.建造/固定吨计算机,并能够解决我遇到的任何问题.
现在高中已经结束了,我一直在考虑我的职业生涯.在我生命的过去13年里,我一直热爱生活的电脑我决定学习计算机编程,为什么我没有早点开始我不知道,这似乎是我的大错...
做一些研究我得出结论,Python是我应该学习的第一种编程语言,因为它是高级的,比C++和Java更容易理解.我也知道要善于完成我所做的事情,我需要了解更多只有2或3种语言,考虑到一旦我学会了Python的工作方式,主要是语法改变,剩下的就会出现,这似乎不是一个大问题自然.我观看了几个youtube视频,下载了一些书籍pdf,并从这里和那里的一些教程中窥探,以了解该怎么做.
尝试理解语法,创建使用基本功能的小程序并理解它是如何工作的两个星期过去了,我想我已经掌握了它.它分解成我一直在处理的事情(尽管我知道)是输入,输出,循环,函数和其他来自0和1的存储数据和召回数据等等(非常基本的)理念).我已经能够创建小程序,Hangman,文件存储,温度转换,Caeser Cipher解码/编码,Fibonacci序列等等,我可以创建并理解每个工作的方式.
进入2周后,我学到了很多东西.如果我抓住我正在做的事情,那么与未来几年我应该学习的东西相比,什么都没有.在做这些课程的时候,我不会停止,直到我在一本书上做了一个练习问题,这个尴尬会让我花费几个小时,这取决于它的复杂程度.我绝对不会把挑战放在一边,直到它完成,可能非常糟糕,我已经尝试了大多数问题而没有作弊并取得了成功,这使我在经过多次试验和错误后完成某些事情后感到非常自豪.
毕竟我遇到了恶魔,这些算法似乎是高效代码的关键.我似乎无法绕过人们使用数字输出的一些计算机代码,有时甚至是基本功能,我已经能够在一段时间后理解它们但我知道有更复杂的事情要来考虑到我的自我智能,需要复杂代码的功能,实际上伤害了我的大脑.没有生命中的任何人伤害我的大脑......甚至连高中数学课都没有,试图了解人们在那里放的一些东西让我觉得我有一种心理上的不利lol ...我仍然向前走我的手指交叉,理解会随着时间而来.
对不起,如果这很长,我只是希望有人在回答我的问题时考虑所有这些事情.即使通过所有这些缺点,我仍然在努力并继续尝试并擅长这一点,我知道阅读这些教程不会让我有任何好处,除非我能够创造并创造我自己的,了解其他人的程序,所以这引导我一个简单的问题,我可以在一开始就问过.....
我在哪里开始?我一直试图找出如何理解一些开源项目,我如何与经验丰富的程序员合作,向他们学习并帮助他们,但我认为甚至可以通过人们知识的方式来实现这一点.与我相比,我没有可以向我学习的朋友,有人可以帮助我并引导我走向正确的方向.我有很大的动力去擅长编码,任何信息都会非常有帮助.