小编min*_*gos的帖子

Node.js:导出类/原型与实例

当我用Java进行大多数编程时,我发现在Node.js模块而不是对象实例中导出类非常引人注目,例如:

class Connection {
    constructor(db) {
        this.db = db;
    }
    connect(connectionString) {
        this.db.connect(connectionString);
    }
}
exports.Connection = Connection;
Run Code Online (Sandbox Code Playgroud)

由于这样做需要跨相关模块多次实例化该类,因此我仍然需要导出一个已经存在的实例,以供其余生产代码使用。我在同一模块中执行此操作:

exports.connection = new Connection(require("mongoose"));
Run Code Online (Sandbox Code Playgroud)

这允许一些可测试性,因为可以在测试中交换真正的依赖项:

const Connection = require("./connection").Connection;

describe("Connection", () => {
    it("connects to a db", () => {
        const connection = new Connection({connect: () => {}});
        // ...
    });
});
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但是当我在这里混合两种模式时却感觉很奇怪:导出原型(用于单元测试)和实例(用于生产代码)。这可以接受吗?我应该继续执行此操作还是更改为其他内容?如果是这样,首选模式是什么?

javascript dependency-injection testability node.js node-modules

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

IE8,透明PNG和过滤器:alpha

我会切入正确的观点.这是输出:

在此输入图像描述

(现在是一些可选代码 - 只有在您真正想要时才读取;))

这是标记:

<a href="/" id="logo_wrapper">
    <span class="logo logo_normal"></span>
    <span class="logo logo_hover"></span>
</a>
Run Code Online (Sandbox Code Playgroud)

这是CSS(仅限于相关内容,为了您的阅读乐趣):

#logo_wrapper {
  position:relative;
}
#logo_wrapper .logo {
  display:block;
  width:260px;
  height:80px;
  background-image:url(logo.png);
  position:absolute;
}
#logo_wrapper .logo_normal {
  background-position:0 0;
}
#logo_wrapper .logo_normal:hover {
  opacity:0;
  filter:alpha(opacity=0);
}
#logo_wrapper .logo_hover {
  background-position:0 -80px;
  opacity:0;
  filter:alpha(opacity=0);
}
#logo_wrapper .logo_hover:hover {
  opacity:1;
  filter:alpha(opacity=100); /* THIS IS THE OFFENDER! */
}
Run Code Online (Sandbox Code Playgroud)

只是为了澄清:我知道我可以单独使用span,只是background-position在悬停时切换徽标,但完整的CSS为真正的浏览器提供了可爱的CSS3过渡,不应该上下滚动徽标.

好的,所以,它是一个32位颜色深度的PNG,当然还有透明度.当我完全不使用alpha过滤器时,IE8中的一切都很好filter:alpha(opacity=0).但是,如果将不透明度设置为100,仅仅使用滤镜会导致IE8变得疯狂并使所有不完全透明的像素100%不透明.并不是说这个特殊的图像在这种效果下看起来很糟糕,但它仍然很烦人:D.

现在,我很清楚IE8因透明的PNG问题而臭名昭着,其中的问题可追溯到IE6及其透明区域的可怕的纯青色填充.可以通过一些IE行为修复黑魔法.

关于IE8可以做些什么?

css alpha filter opacity internet-explorer-8

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

apc_exist()不存在?

我很难让PHP APC工作.这是我的测试代码:

<form>
    <input type="text" name="apc">
    <input type="submit">
</form>
<?php
    apc_store('foo','FOO');
    if (isset($_GET['apc'])) {
        apc_store($_GET['apc'],$_GET['apc']);
    }
?>
<pre>CACHE INFO (USER): <?php print_r(apc_cache_info("user",false)); ?></pre>
<pre>CACHE INFO: <?php print_r(apc_cache_info()); ?></pre>
<pre>FOO: <?php print_r(apc_fetch("foo")); ?></pre>
<pre>BAR: <?php print_r(apc_fetch("bar")); ?></pre>
<pre><?php if (apc_exists("bar")) { ?>bar exists!<?php } else { ?>bar does not exist!<?php } ?></pre>
<?php apc_clear_cache(); ?>
Run Code Online (Sandbox Code Playgroud)

简而言之:填写表单并将插入的值存储在APC中.始终存储键"foo".您可以尝试存储"bar"以查看apc_fetch()使用新添加的密钥.

什么工作正常:

  • apc_store()
  • apc_fetch()

什么不:

  • apc_cache_info()(无论我传递给函数的参数是什么)总是打印一个空数组,尽管apc_fetch()成功检索数据
  • apc_clear_cache()永远不会清除缓存(输入后"bar"始终显示).如果我提供"user"参数或保留没有参数的函数,则都是如此.
  • 调用apc_exists()产生致命错误:调用未定义的函数apc_exists()

万一它有用:我运行Zend Server CE 5.6.0(全新安装,半小时前完成),PHP 5.3.9.昨天更加古老的Zend Server CE版本(运行PHP 5.3.5)也是如此.我不知道哪个版本的APC附带Zend …

php caching apc

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

跟踪malloc分配的内存量

在对SO的相关问题进行快速扫描之后,我推断出没有能够检查malloc已分配给指针的内存量的函数.我正在尝试使用C中的简单char*复制一些std :: string基本功能(主要是动态大小),并且不想一直调用realloc.我想我需要跟踪已经分配了多少内存.为了做到这一点,我正在考虑创建一个typedef,它将包含字符串本身和一个当前分配的内存量的整数,如下所示:

typedef struct {
    char * str;
    int mem;
} my_string_t;
Run Code Online (Sandbox Code Playgroud)

这是一个最佳解决方案,或者您可以建议一些能够带来更好结果的方案吗?在此先感谢您的帮助.

c malloc char

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

类型"long long"总是64位吗?

我正试图在C中实现George Marsaglia的Complementary Multiply-With-Carry算法.它似乎在Win7 64位和Linux 32位下运行良好,但似乎在Win 7 32位下表现得很奇怪.它返回的随机数是32位,但是内部使用的临时值应该是64位,并且它被声明:

unsigned long long t;
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能是造成不良行为的原因,所以我的问题是:

类型是"长长"64位吗?是否支持32位Windows?

c

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

在Internet Explorer中模拟文本笔划

所有浏览器,除了Internet Explorer(显然甚至是IE9测试版)都支持text-shadow,此外,webkit浏览器似乎也能理解-webkit-text-stroke.但是如何在Internet Explorer中模拟文本笔划?我已经看过可用的滤镜了,在我看来,没有一个可以用来模拟这个,除了可能来自Glow,但它会产生模糊的光晕,而不是一个坚实的轮廓.

有没有办法使用CSS和/或Microsoft过滤器/行为和/或JavaScript来实现这一目标?

我不需要解决方案在IE的古老版本中工作,我的布局不会针对IE7或更早版本进行优化.

javascript css internet-explorer css3

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

Zend Framework:模型中的可翻译内容

我在我的应用程序中有一个模型,负责创建初始数据库结构(一种安装程序).我最近添加了可翻译内容(使用gettext).我想使初始内容语言依赖.

在模型中使用可翻译内容的最佳方法是什么?有没有办法view->translate()在模型中使用函数或者我是否需要从外部传递已经翻译的字符串,例如作为参数?

model-view-controller zend-framework model internationalization

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

Console.log() 和 process.stdout.write 不同吗?

如果 console.log 只是 process.stdout.write ,末尾有一个换行符,那么为什么当我使用 process.stdout.write 时我没有打印任何内容,但我在 console.log() 中得到以下代码的答案。

var waittime = 3000;
var currenttime = 0;
var waitint = 10;

function percentage(p) {
    process.stdout.clearLine();
    process.stdout.cursorTo(0);
    process.stdout.write(`waiting ... ${p}%`);
}

var interval = setInterval(function() {
    currenttime += waitint;
    percent = Math.floor((currenttime / waittime) * 100);
    percentage(percent);
}, waitint);

setTimeout(function() {
    clearInterval(interval);
    percentage(100);
    process.stdout.write("\nGowtham");
}, waittime);

process.stdout.write("\nIt's not getting displayed");
//console.log("It's getting displayed here!"); 
Run Code Online (Sandbox Code Playgroud)

怎么了?我想是有区别的。如我错了请纠正我。

node.js

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

如何使jQuery UI droppable hoverClass只与draggables一起工作?

我有一个可排序和可放置的列表,还有一组单独的可拖动:

ul.sortable
    li.droppable
    li.droppable
    li.droppable
/ul
ul
    li.draggable
    li.draggable
    li.draggable
/ul
Run Code Online (Sandbox Code Playgroud)

我在droppables上应用了悬停类:

$(".droppable").droppable({ hoverClass: "hover" });
Run Code Online (Sandbox Code Playgroud)

悬停应该是用户的视觉提示,告诉他可以将拖动拖放到可放置的拖放上.

问题是当一个droppable也被一个可排序的元素悬停时,也会应用悬停类.在这种情况下,视觉提示是完全错误的.

这是一个说明问题的小提琴(拖动可拖动的可拖动的,重新排序可排序的):http://jsfiddle.net/TWXeH/

如何使悬停类只在可拖放的可拖动时才能工作,而不是在可排序的情况下?

jquery-ui droppable draggable hover jquery-ui-sortable

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

php函数从字符串中提取链接

我想从文本或字符串中提取href链接.我写了一个小函数来做到这一点但是当变换的字符串很大时这很慢.我的代码是

function spy_linkIntoString_Format($text) {
    global $inc_lang; $lang = $inc_lang['tlang_media'];
    $it = explode(' ' ,$text);
    $result = '';
    foreach($it as $jt) {
        $a = trim($jt);
        if(preg_match('/((?:[\w\d]+\:\/\/)?(?:[\w\-\d]+\.)+[\w\-\d]+(?:\/[\w\-\d]+)*(?:\/|\.[\w\-\d]+)?(?:\?[\w\-\d]+\=[\w\-\d]+\&?)?(?:\#[\w\-\d]*)?)/', $jt)) {
            $pros_lis = str_replace('www.','',$jt);
            $pros_lis = (strpos($pros_lis, 'http://') === false ? 'http://'. $pros_lis : $pros_lis);
            $urlregx = parse_url($pros_lis);
            $host_name = (!empty($urlregx['host']) ? $urlregx['host'] : '.com');
            if($host_name == 'youtube.com') {
                $string_v = $urlregx['query']; parse_str($string_v, $outs); $stID = $outs['v'];
                $result .= '<a title="Youtube video" coplay="'.$stID.'" cotype="1" class="media_spy_vr5" href="#"><span class="link_media"></span>'.$lang['vtype_youtube'].'</a> ';
            } elseif($host_name == 'vimeo.com') {
                $path_s …
Run Code Online (Sandbox Code Playgroud)

php

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