小编Wil*_*ver的帖子

如何为package.json添加注释以进行npm install?

我有一个简单的package.json文件,我想添加一个评论.有办法做到这一点,还是有任何黑客可以使这项工作?

{
  "name": "My Project",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x",
    "mongoose": "3.x"
  },
  "devDependencies" :  {
    "should": "*"
    /* "mocha": "*" not needed as should be globally installed */
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的示例注释不适用于npm中断.我也试过//风格评论.

comments npm

360
推荐指数
13
解决办法
11万
查看次数

在php中运行时动态生成类?

这就是我想要做的事情:

$clsName = substr(md5(rand()),0,10); //generate a random name
$cls = new $clsName(); //create a new instance

function __autoload($class_name)
{
  //define that instance dynamically
}
Run Code Online (Sandbox Code Playgroud)

显然这不是我实际做的,但基本上我有一个类的未知名称,并根据名称,我想生成具有某些属性等的类.

我已经尝试过使用eval(),但它让我更适合私人和$ this->引用......

//编辑

好吧,很明显,我的短暂和甜蜜的"这就是我想做的事情"在那些可能提供答案的人中引起了巨大的冲突和惊愕.为了得到一个真正的答案,我会更详细.

我有一个验证框架,使用我维护的网站上的代码提示.每个函数都有两个定义

function DoSomething($param, $param2){
   //code
}
function DoSomething_Validate(vInteger $param, vFloat $param2){
   //return what to do if validation fails
}
Run Code Online (Sandbox Code Playgroud)

我想在我的数据库中为主键添加验证器.我不想为每个表创建一个单独的类(203).所以我的计划是做类似的事情

function DoSomething_Validate(vPrimaryKey_Products $id){ }
Run Code Online (Sandbox Code Playgroud)

__autoload将生成vPrimaryKey的子类并将table参数设置为Products.

现在开心?

php code-generation proxy-classes dynamic-compilation

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

间歇性的PHP抽象类错误

我一直在争论这个问题,并且无法解决这个问题,也许其他人已经或者可能在这里有更深层次的问题,包括Slim,PHP,Apache等.经过几个小时的工作,我的Slim安装将开始给予这在所有路线上:

致命错误:类Slim\Collection包含1个抽象方法,因此必须在F:\ Projects\example\server\vendor\slim\slim\Slim\Collection.php中声明为抽象或实现其余方法(IteratorAggregate :: getIterator)第21行

如果我重新启动Apache,这个问题就会消失.(反正几个小时.)

我发现这是两年前有人遇到过类似问题的人,而且这个人在没有实际协助的情况下帮助他们:https://community.apachefriends.org/viewtopic.php?p = 250966&sid = 96ef58aaeb7fe142a7dcdfd506a8683f

我已经尝试过干净的擦除并安装我的作曲家供应商目录.这不能解决它.我可以清楚地看到getIterator在错误消息中的文件中按预期实现了.

PHP版本7.0.12,Windows 7,x86 PHP构建

它在几个小时后再次发生,但有一个不同但相似的错误消息:

致命错误:类Pimple\Container包含1个抽象方法,因此必须在F:\ Projects\example\server\vendor\pimple\pimple\src\Pimple\Container中声明为抽象或实现其余方法(ArrayAccess :: sqlserver).第34行的PHP

这个问题有一个类似的问题,并通过重新启动PHP"解决"它,但这显然不是一个实际的解决方案,我没有启用opcache: PHP 7,Symfony 3:致命错误1抽象方法,因此必须声明抽象或实现其余方法

任何猜测?请记住:此消息位于我未编写的文件中,并在Apache重新启动时消失.是否有一些PHP 7的缓存会导致这种情况?

编辑3/10/17:

是的,我用Slim打开了一张票.我也看到它在一个非苗条的文件(疙瘩),所以我不认为这是一个苗条的问题. https://github.com/slimphp/Slim/issues/2160

正如我所说,我的opcache已关闭.我已经确认这在php.ini文件和查看phpinfo()中都是正确的.

php apache slim

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

css columns/flexbox,项目之间没有间隙

我需要摆脱列布局中元素之间的差距.我可以使用最新的css3,因为该网站针对的是现代浏览器/设备,但我需要避免使用javascript解决方案,以便从服务器提供的页面不需要根据客户端的宽度重新呈现.

使用flexbox,css列和其他技巧我需要哄一个类似于pinterest的布局.(Pinterest使用javascript和绝对定位进行布局,甚至在js关闭的情况下也不会渲染.)该网站的盒子宽度已知但高度可变.列数需要根据浏览器宽度而变化.(如果我知道要改变什么css属性,我可以通过媒体查询来做到这一点.)这是这样的:via

空白

另请注意,我不能只增加容器的高度来填充空白区域.我想把它下面的项目带上去,而不是让所有的高度匹配.(因此,上图中的第1,3和4项不是我想要的.)

我试过的事情:

  • CSS 3列.这看起来很棒,但是项目的顺序错误,第二项在第一项之下.如果这可以改为不同的顺序,使它们从左到右,那就太好了!

  • Flexbox各种flexbox配置,我已经尝试了几个我能够改变的设置.

  • 的JavaScript.是的,我知道我可以手动创建列并在调整大小时重新渲染它们.我希望避免昂贵的重新渲染操作,需要手动平衡列和显示.对于不支持css3解决方案的旧版浏览器,我可以使用它.我也想避免手动定位所有项目.毛.

我给JSFiddle添加了一个注释链接,因为我不能把它放在这里作为"链接到jsfiddle需要代码".

javascript css css3

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

使用Backbone在模型更改上呈现表单会导致表单UI错误

我有一个简单的视图,当模型更改时,它会自动绑定到重绘,因为大多数指南都指示:

this.model.bind('change', this.render, this);
Run Code Online (Sandbox Code Playgroud)

此视图具有带输入框和提交按钮的表单.我绑定到输入框的"更改"事件以更改模型上的相关项.(我可以手动执行此操作,也可以使用ModelBinder项目,以相同的方式工作.)

用户更改表单输入框中的值,然后单击提交按钮.更新模型,重新呈现视图和表单.提交按钮的单击事件被压缩.

我正在使用Backbone的events属性:

events : {
    'submit form' : 'save'
},
Run Code Online (Sandbox Code Playgroud)

我知道事件被忽略了,因为点击的DOM元素不再存在.我可以在render()中放置一个小的setTimeout,以防止HTML被换出,并且事情按预期工作,但这需要等待.

我不能成为第一个与此斗争的人 - 在不丢失一些关键点击或按键信息的情况下,捕获表单"更改"事件,更新模型和重绘视图的标准方法是什么?

类似地,如果我有多个表单项,则在重新绘制表单后,用户无法在更改内容之后在项目之间进行选项卡.

更新1 - 3天后

仍在努力寻找一个好的解决方案.我试过的事情:

  • 将视图内容移动或克隆到页面上的其他区域.仍然没有收到点击事件.
  • 使用$(document).on或$(document).live而不是标准视图事件对象注册click事件
  • 将表单分离出来,使整个表单(输入和按钮)保持在一起而不重新绘制.重绘父元素(依赖于表单值)并重新插入已绘制的表单.这解决了无法跨元素选项卡的相关问题,但不修复单击事件.
  • 在firefox 4中按预期工作,但不是ie9或chrome.*

更新2 - 使用示例代码

其中一条评论要求提供一些代码.我已经将代码大量简化为一页并将其包含在下面.实际的应用程序要复杂得多.下面的代码很简单,我可以手动重新渲染页面的部分内容.在实际的应用程序中,我使用的是dustjs模板,即使我不重新渲染表单,但重新渲染包含表单的元素,我点击提交时也会遇到问题.我希望有一种典型的骨干应用程序"模式",包括复杂的页面,模型和表单.

大多数"演示"应用程序甚至我使用主干网看到的网站似乎主要是以演示为中心的应用程序,实际上并没有从用户那里收集大量信息.如果您知道基于主干的良好的数据收集重点应用程序/演示将会有所帮助.

码:

<!doctype html>
<html lang="en">
<head>
    <script src="libs/jquery.js"></script>
    <script src="libs/underscore.js"></script>
    <script src="libs/backbone.js"></script>
</head>
<body>
<div id="container"></div>
<script type="text/template" id="edit_user_template">
    <h3>Edit User <%=id%> : <%=name%></h3>
    <form>
        Name: <input type="text" name="name" value="<%=name%>"><br/>
        Email: <input type="text" name="email" value="<%=email%>"><br/>
        <input type="submit">
    </form>
</script>
<script>
    var UserModel = Backbone.Model.extend({});
    var model …
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js

14
推荐指数
1
解决办法
4011
查看次数

使用带有泛型的Jackson ObjectMapper到POJO而不是LinkedHashMap

使用Jersey我正在定义一项服务:

@Path("/studentIds")
public void writeList(JsonArray<Long> studentIds){
 //iterate over studentIds and save them
}
Run Code Online (Sandbox Code Playgroud)

JsonArray的位置是:

public class JsonArray<T> extends ArrayList<T> {  
    public JsonArray(String v) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper(new MappingJsonFactory());
        TypeReference<ArrayList<T>> typeRef = new TypeReference<ArrayList<T>>() {};
        ArrayList<T> list = objectMapper.readValue(v, typeRef);
        for (T x : list) {
            this.add((T) x);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是当我做一些更复杂的事情时:

@Path("/studentIds")
public void writeList(JsonArray<TypeIdentifier> studentIds){
 //iterate over studentIds and save them by type
}
Run Code Online (Sandbox Code Playgroud)

Bean是一个简单的POJO,如

public class TypeIdentifier {
    private String type;
    private Long id; …
Run Code Online (Sandbox Code Playgroud)

java json jersey jackson

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

我应该使用Query Hint Fast number_rows/FASTFIRSTROW吗?

我正在阅读有关查询提示的文档:http: //msdn.microsoft.com/en-us/library/ms181714(SQL.90).aspx

并注意到这一点:FAST number_rows指定优化查询以快速检索第一个number_rows.这是一个非负整数.返回第一个number_rows后,查询继续执行并生成其完整结果集.

所以,当我正在进行如下查询:

Select Name from Students where ID = 444
Run Code Online (Sandbox Code Playgroud)

我应该打扰这样的提示吗?假设SQL Server 2005,我应该什么时候?

- 编辑 -

在限制结果时也应该打扰一下:

Select top 10 * from Students OPTION (FAST 10)
Run Code Online (Sandbox Code Playgroud)

sql sql-server query-hints

6
推荐指数
2
解决办法
9804
查看次数

在Jersey中,我可以将QueryParams和FormParams组合成一个方法的值吗?

我有一个像以下的功能:

@POST
@Path("/create")
@Produces({MediaType.APPLICATION_JSON})
public Playlist createPlaylist(@FormParam("name") String name)
{
    Playlist p = playlistDao.create();
    p.setName(name);
    playlistDao.insert(p);
    return p;
}
Run Code Online (Sandbox Code Playgroud)

我希望"name"参数来自查询参数的形式OR.如果用户发布到/ playlist/create /?name = bob,那么我希望它能够正常工作.(这主要是为了帮助测试API,还有助于在不同的非浏览器平台上使用它.)

我愿意将魔术绑定工作的子类化(... @BothParam("name")字符串名称),但需要一些帮助才能实现,因为我是Jersey/Java Servlets的新手.


更新:第二天......

我通过实现一个将表单参数合并到查询参数中的ContainerRequestFilter来解决这个问题.这不是最好的解决方案,但似乎确实有效.我没有任何运气将任何内容合并到表单参数中.

这是代码,以防有人来找它:

@Override
public ContainerRequest filter(ContainerRequest request) 
{
    MultivaluedMap<String, String> qParams = request.getQueryParameters();
    Form fParams = request.getFormParameters();
    for(String key : fParams.keySet())
    {
        String value = fParams.get(key).get(0);
        qParams.add(key, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

我仍然很高兴知道是否有更好的方法来做到这一点,所以我现在暂时打开这个问题.

java jax-rs jersey

6
推荐指数
1
解决办法
3259
查看次数

Facebook externalhit_uatext 机器人小写网址

我正在一个具有大小写混合网址的网站上工作,类似于 youtube。我们在服务器上生成 ID,我选择了基数 62(数字、小写和大写字母),因此它们会更短。所以网址可能类似于example.com/user/123AbCaBcfacebook 机器人似乎经常使用全小写版本example.com/user/123abcabc访问我的网站这会导致 404 错误,因为全小写 ID 不在数据库中。

根据日志,没有其他用户代理创建 404,所以这肯定是机器人而不是人类。这是我看到的用户代理:

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

这种情况大约每 4 分钟发生一次。我目前没有记录非 404 命中,所以我不确定是否还有其他非小写版本。

这里的服务器技术是 nodejs / mongodb,但我看不出这与手头的问题有什么关系。

我能做些什么来修复 Facebook 吗?这里有问题,还是我应该解决这些日志错误?其他人有类似的问题吗?

url facebook

5
推荐指数
1
解决办法
357
查看次数

如何循环直接传递给dust.js的数组?

使用dust.js javascript模板引擎,我想直接传递一个数组:

var templateContents; //loaded by require.js
var compiled = dust.compile(templateContents, "viewElements");
dust.loadSource(compiled);
dust.render("viewElements", ["bob", "joe", "sue"], function(err, out){
    $('#view').html(out);
});
Run Code Online (Sandbox Code Playgroud)

如何创建模板文件以直接处理数组?我尝试了很多东西,包括:

{.}<br>
Run Code Online (Sandbox Code Playgroud)

{#.}
 {.}
{/.}
Run Code Online (Sandbox Code Playgroud)

但似乎无法正确引用数组或其中的元素.第一个示例打印:[object Object]

我可以命名我传入的每个数组,但是我正在努力避免这样做,因为数组实际上来自主干集合,这似乎是额外的工作.

javascript dust.js

4
推荐指数
1
解决办法
9962
查看次数

Angular 4 ng build base-href duplicate子目录

我正在根据分支名称将我的角度应用程序的构建部署到具有不同子目录的s3存储桶.网址看起来像:

pr.example.com/add-cool-spinner
pr.example.com/increase-awesomeness
Run Code Online (Sandbox Code Playgroud)

如果我使用--base-href /add-cool-spinner它正确部署更新基本标签:<base href="add-cool-spinner">.但是,当重定向或生成链接时,子目录会翻倍,因此从路由器生成的链接标记如下所示:

pr.example.com/add-cool-spinner/add-cool-spinner/page
Run Code Online (Sandbox Code Playgroud)

我只尝试改变--deploy-url,但它不更新基础href标记,并引用root url(pr.example.com/page).

有没有提示不加倍基本url目录?这是一个错误还是我做错了什么?

web-deployment angular

4
推荐指数
1
解决办法
1530
查看次数

如何让 jQuery 在失败时自动重试 load()?

我正在页面上的许多地方通过 jquery load() 进行一些内容替换。

<script>
  $(document).ready(function(){
    $('#row').load('/getStudentDetails',{studentId:3});
  });
</script>
Run Code Online (Sandbox Code Playgroud)

在我的开发服务器上一切正常。在我的实时服务器上,有时它会给我一个“请求无效”错误,我可以在 firebug 中看到该错误。我认为服务器已经不堪重负,或者某些缓存模块可能与多个请求混淆。我将尝试单独解决该问题,但也只是希望它在失败时重试相同的请求(一次)。有没有一种灵活的 jQuery 方法可以做到这一点?

jquery

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

我可以获得快速错误处理程序来捕获在mongoose回调中抛出的异常吗?

设置:nodejs,express,mongodb,mongoose

相关代码:

var express = require('express');
var server = express();
server.use(express.bodyParser());
server.use(express.methodOverride());
server.use(server.router);

var mongoose = require('mongoose');
mongoose.connect('localhost', 'test');
var Schema = mongoose.Schema;
var VehicleSchema = new Schema({
    name : String
}, {collection: 'vehicles'});
var Vehicle = mongoose.model('vehicle', VehicleSchema);

server.use(clientErrorHandler);
function clientErrorHandler(err, req, res, next) {
    console.log('client error handler found', err);
    res.send(500, err);
}

server.get('/api/test', function(req, res, next){
    Vehicle.find().exec(function(err, rows){
        res.send(rows);
    });
});

server.listen(1981);
Run Code Online (Sandbox Code Playgroud)

这将按预期返回一个空数组.

在这里抛出异常:

server.get('/api/test', function(req, res, next){
    throw 'my exception';// <------------------------ here
    Vehicle.find().exec(function(err, rows){
        res.send(rows);
    });
}); …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express

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