小编fut*_*lib的帖子

如何在没有自己的注册表的情况下安装私有NPM模块?

我已经采用了一些共享代码并将其放入NPM模块中,我不想将其上传到中央注册表.问题是,如何从其他项目安装它?

显而易见的方法可能是建立我自己的NPM注册表,但根据文档,这涉及很多麻烦.

我可以只安装一个位于本地文件系统上的NPM模块,甚至可以安装git吗?

npm install --from-git git@server:project
Run Code Online (Sandbox Code Playgroud)

package node.js npm npm-private-modules

315
推荐指数
9
解决办法
17万
查看次数

JavaScript中的"for-in"循环中是"var"还是没有"var"?

for-in在JavaScript中编写循环的正确方法是什么?浏览器不会对我在此处显示的两种方法中的任何一种发出投诉.首先,有一种方法,其中x显式声明迭代变量:

for (var x in set) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者这种方法更自然地读取但对我来说似乎不正确:

for (x in set) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

javascript syntax for-in-loop

95
推荐指数
8
解决办法
5万
查看次数

如何在Apache中集成Clojure Web应用程序

注意

鉴于此OP大约两年前编写,而不是再次提出相同的问题,我想知道是否存在分步说明,以便我可以将Noir或其他Clojure Web应用程序集成到Apache中,无论是Jetty,Tomcat , 或者是其他东西.Django也存在类似的指令,我想我明白Python在Django的情况下是作为引擎而不是环形框架运行的,所以Clojure Web应用程序更复杂.

结束注释

我深深爱上了Clojure,而Compojure似乎是一个整洁的Web框架.

但是当我想将我的应用程序部署在像Tomcat这样的常规应用程序服务器上作为WAR时,它就崩溃了.我实际上必须为静态文件和资源编写自定义Ring处理程序,这些文件和资源可以在本地Jetty和Tomcat上运行,因为库存处理程序没有,我不得不手动将上下文根添加到任何地方.

令我感到非常惊讶的是,我必须编写所有这些代码来创建可以在Jetty和Tomcat上运行的最简单的Web应用程序.我只有三种可能的解释:

  1. 除了使用Jetty进行本地开发之外,没有人使用Clojure/Compojure,即在生产中
  2. 每个人都在没有上下文根的专用Jetty上部署Clojure/Compojure应用程序(LIke人们使用Node.js应用程序)
  3. 有一种非常简单的方法来规避我遇到的问题,我不知道

您认为以下哪一种情况?或者是别的什么?

编辑:

请注意,创建一个战争文件是Maven/Leiningen的明智之举,而不是我的意思.我想知道我必须编写如此多的代码来使Compojure与Tomcat一起工作,基本的东西,如静态文件服务和上下文根知识应该开箱即用.

deployment clojure war compojure

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

JavaScript Web前端的测试驱动开发

这可能听起来有点愚蠢,但我实际上有点困惑如何处理Web前端的JavaScript测试.就我而言,典型的3层架构如下所示:

  1. 数据库层
  2. 应用层
  3. 客户层

1在这个问题上无关紧要.2包含前端的所有程序逻辑("业务逻辑")3.

我为大多数项目进行测试驱动的开发,但仅针对应用程序逻辑,而不是前端.这是因为在TDD中测试UI很困难且不常见,而且通常没有完成.相反,所有应用程序逻辑都与UI分离,因此测试该逻辑很简单.

三层体系结构支持这一点:我可以将我的后端设计为REST API,由我的前端调用.JS测试如何适应?对于典型的三层架构,JS(即客户端上的JS)测试没有多大意义,是吗?

更新: 我已经将问题的措辞从"在网络前端测试JavaScript"改为"JavaScript网络前端的测试驱动开发"来澄清我的问题.

javascript testing tdd

32
推荐指数
1
解决办法
4921
查看次数

模拟Robolectric中菜单项的单击

在Robolectric中模拟按钮单击非常简单:

Button someButton = (Button) findViewById(R.id.some_button);
someButton.performClick();
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法弄清楚如何用菜单项做同样的事情.我创建了一个菜单Activity.onCreateOptionsMenu,如何模拟其中一个项目的点击?

android robolectric

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

Android:如何测试自定义视图?

在Android中有几种单元测试方法,测试我编写的自定义视图的最佳方法是什么?

我目前正在测试它作为我在仪器测试案例中的活动的一部分,但我宁愿只测试视图,孤立.

android unit-testing android-custom-view android-view

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

Android活动命名

我在Android活动和其他类之间遇到越来越多的命名冲突.我想知道你是否可以告诉我你是如何避免这些的.遗憾的是,我在SO的相关问题中没有涉及我的特定命名问题.

第一个例子

我有一个显示游戏级别的活动.但是,该级别所需的数据(背景图片,实体等)存储在单独的类中.当然,我会称之为后一类Level.但是,我也会调用该活动Level,因为它显示了级别.

第二个例子

我有一个活动可以播放切割场景.它基本上连续显示几个图像.显示图像显示多长时间的信息存储在单独的类中.和前面的情况一样,我自然会把这两个类都称为CutScene.

您如何解决这些命名问题?命名活动LevelActivityCutSceneActivity?命名表示类LevelModelCutSceneModel?别的什么?

android naming naming-conventions android-activity

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

函数原型和函数实现签名是否可以使用const不一致?

我喜欢const在可能的情况下声明偶数值参数,通过搜索SO,我发现这并不常见.像这样:

int add(const int a, const int b)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我想知道:const因为是我的函数的实现细节,而不是它的接口的一部分.因此将它放入原型似乎是不必要的.

这个上述函数的原型似乎工作得很好:

int add(int a, int b);
Run Code Online (Sandbox Code Playgroud)

然而,我听说过一些问题,例如将main函数的argc声明为const会导致问题:

int main(const int argc, const char* const argv[])
Run Code Online (Sandbox Code Playgroud)

这是否意味着,int add(int a, int b)int add(const int a, const int b)终究不是相同?

如果它在技术上还可以,我应该做些什么?我也可以在原型中省略变量名,但我没有,所以也许我也不应该遗漏const

c c++ const header function-prototypes

8
推荐指数
1
解决办法
794
查看次数

将函数放入头文件的经验法则

最近我开始将越来越多的函数放入头文件中,主要是为了方便起见.但我担心我可能会过度使用它,我的标题充满了包含,我不确定这是不是一个好主意.

将函数移出头文件或将其移入头文件有哪些经验法则?

如果你想知道,我说的是开发应用程序,而不是库.

编辑:

我想从我的角度概述内联(自然)头函数与实现函数的优缺点是有帮助的:

专业内联:

  • 更干净/简洁.
  • 不需要签名重复.
  • 无需更改任何Makefile以链接新文件.
  • 即时启动模板参数的能力.

反对内联:

  • 增加编译时间(我不在乎多)
  • 许多包括在标题中(如果他们使用警卫,不应该是一个大问题)

根据这一点,将几乎所有函数放在头文件中似乎是一个好主意,我相信这与STL和Boost正在做的非常接近(尽管这些是库,而不是我的代码).

c++ header function

7
推荐指数
1
解决办法
4895
查看次数

如何使用控制台应用程序中的仅消息窗口接收消息?

我创建了一个简单的Win32控制台应用程序,它创建一个隐藏的仅消息窗口并等待消息,完整代码如下所示.

#include <iostream>
#include <Windows.h>

namespace {
  LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  {
    if (uMsg == WM_COPYDATA)
      std::cout << "Got a message!" << std::endl;
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
  }
}

int main()
{
  WNDCLASS windowClass = {};
  windowClass.lpfnWndProc = WindowProcedure;
  LPCWSTR windowClassName = L"FoobarMessageOnlyWindow";
  windowClass.lpszClassName = windowClassName;
  if (!RegisterClass(&windowClass)) {
    std::cout << "Failed to register window class" << std::endl;
    return 1;
  }
  HWND messageWindow = CreateWindow(windowClassName, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi ipc console-application

7
推荐指数
1
解决办法
9687
查看次数