我正在开发一个使用dojo的网页,并且有一个项目小部件的数字(在我的测试用例中为6,但一般是变量).我正在调用dojo.addOnLoad(init),在我的init()函数中我有这些行:
dojo.connect(dijit.byId("project" + 0).InputNode, "onChange", function() {makeMatch(0);});
dojo.connect(dijit.byId("project" + 1).InputNode, "onChange", function() {makeMatch(1);});
dojo.connect(dijit.byId("project" + 2).InputNode, "onChange", function() {makeMatch(2);});
dojo.connect(dijit.byId("project" + 3).InputNode, "onChange", function() {makeMatch(3);});
dojo.connect(dijit.byId("project" + 4).InputNode, "onChange", function() {makeMatch(4);});
dojo.connect(dijit.byId("project" + 5).InputNode, "onChange", function() {makeMatch(5);});
Run Code Online (Sandbox Code Playgroud)
并为我的项目小部件更改事件正确调用makeMatch函数.但如果我用循环替换它们:
for (var i = 0; i < 6; i++)
dojo.connect(dijit.byId("project" + i).InputNode, "onChange", function() {makeMatch(i);});
Run Code Online (Sandbox Code Playgroud)
相同的makeMatch()函数,相同的init()调用,以及其他所有内容 - 只是将我的调用滚动到循环中 - 从不调用makeMatch函数; 对象没有连线.
发生了什么,我该如何解决?我尝试过使用dojo.query,但其行为与for循环案例相同.
现在,我非常沮丧,因为我正在开发一些很酷的机制来优化计算系统,将计算次数从大约五十万减少到几千.花了很多时间检查和分析数据,写下来,做一些测试,一般只做我的工作.然后我们举行了一次项目会议.我已经解释了我想要做什么,需要花多少时间以及它可以改进项目的程度,甚至可以创建新功能.然后决定在下一个截止日期之前完成这一切的时间太长了.(如果我被允许继续,则必须延长最后期限.)一个快速的头脑风暴清楚地表明,可以使用一种简单的解决办法,这可以将优化延迟几个月.
好吧,太难了!
好的......我刚刚写下了挫折感.现在的问题是......我现在已经掌握了整个设计.其中大部分只是原理图和带有手写文字的论文,一些打印输出甚至是SO的几个问题.这些想法会被冻结一段时间,但我将来需要再次记住它们.我可以得到一天,也许两天来清理笔记并开始记录事情.
所以我需要建议如何最好地记住我的设计,例如从现在起4个月.或者甚至可能一年后......写下来最重要的是什么?还是文件?(考虑到我的时间很短......)有什么建议吗?
为什么?否则我会在四个月后再次感到沮丧.:-)
我正在调用通过管道连接的命令行程序.所有这些都可以在Linux上运行.
我的方法:
protected String execCommand(String command) throws IOException {
String line = null;
if (command.length() > 0) {
Process child = Runtime.getRuntime().exec(command);
InputStream lsOut = child.getInputStream();
InputStreamReader r = new InputStreamReader(lsOut);
BufferedReader in = new BufferedReader(r);
String readline = null;
while ((readline = in.readLine()) != null) {
line = line + readline;
}
}
return line;
}
Run Code Online (Sandbox Code Playgroud)
如果我正在调用一些猫文件| grep asd,我得到了预期的结果.但并非所有命令都能正常工作.例如:
cat /proc/cpuinfo | wc -l
Run Code Online (Sandbox Code Playgroud)
或这个:
cat /proc/cpuinfo | grep "model name" | head -n 1 | awk …Run Code Online (Sandbox Code Playgroud) 我一直在努力坚持TDD方法.所以我做了一些测试,但都失败了.现在我正在实施.但是现在我正在实现我已经看到这些方法太简单而不能失败.特别是我实现了观察者模式,所有发生的事情是我通知所有注册的观察者.因此,对每个循环使用a并调用notify.这当然听起来太简单了.既然我在某些地方进行了测试,我应该删除它们吗?这似乎也有点浪费时间.那么我应该尝试预测一些过于简单的方法吗?
我正在努力了解工厂的设计模式.
我不明白为什么在客户端和产品(客户想要的对象)之间有一个中间人是好的.
没有工厂的例子:
$mac = new Mac();
Run Code Online (Sandbox Code Playgroud)
工厂的例子:
$appleStore = new AppleStore();
$mac = $appleStore->getProduct('mac');
Run Code Online (Sandbox Code Playgroud)
工厂模式如何将客户与产品分离?
有人可以给出一个未来代码更改的例子,它将影响示例1的否定,但在示例2中是正面的,所以我理解解耦的重要性?
谢谢.
最近我开始在我的系统上使用优秀的boost :: unordered_map,但有一个缺点:我无法弄清楚如何检查其内容.在gdb上打印它会给我一个table_和一个buckets_,但是没有找到它们的位置.任何人都有这方面的线索?
我对单元测试和TDD非常环保,所以请问我,因为我问一些人可能会考虑新手问题,或者之前是否有过这个问题.如果这被认为是一个"不好的问题"(过于主观和公开辩论),我会高兴地关闭它.但是,我搜索了几天,并没有得到明确的答案,我需要更好地理解这一点,所以我知道没有更好的方法来获取更多信息而不是发布在这里.
我已经开始阅读一本关于单元测试的旧书了(因为一位同事手头有这本书),其开篇章节讨论了为什么要进行单元测试.其中一点是,从长远来看,您的代码更可靠,更清晰,更不容易出错.它还指出,有效的单元测试将使跟踪和修复错误变得更加容易.所以它似乎关注于整体预防/减少代码中的错误.
另一方面,我还发现了一篇关于编写优秀单元测试的文章,并指出单元测试的目标是使您的设计更加健壮,相反,发现错误是手动测试的目标,而不是单元测试.
因此,作为TDD的新手,我对于我应该进入TDD并构建单元测试的心态感到有些困惑.我承认,我现在使用我最近开始的项目的部分原因是因为我厌倦了我的更改破坏了以前的现有代码.诚然,上面的链接文章至少指出这是TDD的一个优势.但我希望通过回到现有代码中添加单元测试(然后从这一点继续TDD)来帮助防止这些错误.
这本书和本文是否真的用不同的语气说同样的话,或者在这个主题上有一些主观性,而我所看到的只是两个人对如何处理TDD有不同的看法?
提前致谢.
我正在使用蓝牙设备(IOIO开发板).
当我的设备断开连接时,我想听.它可以正常使用上面的代码,但它无法立即识别.当我关闭我的蓝牙开发板时,我必须等待~16秒,直到我的Android识别出连接丢失.
有人知道为什么吗?我听说应该是内部的Android限制,连接不经常检查?有人知道如何编写一个"ping"蓝牙设备的线程吗?我认为它与Android BluetoothChat示例非常相似,但我无法自行修复它.
谢谢.
费利克斯
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
this.registerReceiver(mReceiver, filter1);
this.registerReceiver(mReceiver, filter2);
Run Code Online (Sandbox Code Playgroud)
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) {
//Device is about to disconnect
Toast.makeText(context,"The device is about to disconnect" , Toast.LENGTH_LONG).show();
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
//Device has disconnected
Toast.makeText(context,"Device has disconnected" …Run Code Online (Sandbox Code Playgroud) 为什么当我们得到数组的长度时,我们不必放置()
int [] ar;
System.out.println(ar.length); // no parentheses
Run Code Online (Sandbox Code Playgroud)
但对于一个字符串,它将是
String st;
System.out.println(st.length());
Run Code Online (Sandbox Code Playgroud) java ×2
tdd ×2
unit-testing ×2
android ×1
awk ×1
bash ×1
bluetooth ×1
boost ×1
c++ ×1
closures ×1
command-line ×1
debugging ×1
dojo ×1
eclipse ×1
gdb ×1
installation ×1
javascript ×1
linux ×1
loops ×1
php ×1