我想设置我的输入框占位符文本,我这样做:
::-webkit-input-placeholder { font-size: 16pt; color: #555; }
::-moz-placeholder { font-size: 16pt; color: #555; }
:-ms-input-placeholder { font-size: 16pt; color: #555; }
input:-moz-placeholder { font-size: 16pt; color: #555; }
Run Code Online (Sandbox Code Playgroud)
但我有不同占位符需要不同样式的场景,如下所示:

这可能吗?我似乎无法成功地将上面的CSS与类或其他类型的元素选择器组合在一起.我发现的所有教程都只停留在设置占位符文本一次,而不是使用多个占位符样式.这是一个全球性的环境吗?
当涉及声明文件和用纯Javascript编写的第三方库时,我在TypeScript中没有得到什么.假设我有以下Javascript类:
$ cat SomeClass.js
var SomeClass = (function () {
function SomeClass() {
}
SomeClass.prototype.method1 = function () {
return "some string";
};
return SomeClass;
})();
exports.SomeClass = SomeClass;
Run Code Online (Sandbox Code Playgroud)
我想得到它的类型检查,所以我创建这样的声明文件:
$ cat test.d.ts
class SomeClass {
public method1(): string;
}
Run Code Online (Sandbox Code Playgroud)
然后我想在一些代码中使用类和声明文件:
$ cat main.ts
///<reference path="./test.d.ts"/>
import ns = module("./SomeClass");
function test(): string {
var sc = new ns.SomeClass();
return sc.method1();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到了这个:
$ tsc main.ts
main.ts(2,19): The name '"./SomeClass"' does not exist in the current scope
main.ts(2,19): A module …Run Code Online (Sandbox Code Playgroud) 我正在为AngularJS开发一些TDD(完全是另一个故事)并遇到了我的beforeEach调用显然没有被执行的情况.我把它减少到下面的例子.
事实证明,beforeEach中的console.log消息和它们都出现了:
describe('userApp', function(){
beforeEach( function(){
console.log("in beforeEach...");
});
it('should be able to log something', function(){
console.log("in it...");
});
});
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为未显示beforeEach中的console.log消息,并且在尝试$ log.info并且抛出错误消息时它失败: TypeError: Cannot read property 'info' of undefined
describe('userApp', function(){
var $log;
beforeEach(module('userApp', function($provide) {
console.log("in beforeEach...");
// Output messages
$provide.value('$log', console);
}));
it('should be able to log something', function(){
console.log("in it...");
$log.info("Using $log for logging...");
});
});
Run Code Online (Sandbox Code Playgroud)
我正在使用Angular 1.3.15,业力0.12.31,茉莉2.3.4.我可能会忽略一些明显的东西......
编辑:Michael Radionov的解释非常有用; 但是,我不明白为什么这个修改过的代码仍然会抛出相同的错误.
describe('userApp', function(){
console.log("starting TEST3"); <=== this prints
var $log;
beforeEach(function() {
console.log("TEST3: in beforeEach..."); <=== …Run Code Online (Sandbox Code Playgroud) 我有一个关于 pythonasyncio模块中的事件循环如何管理未完成任务的问题。考虑以下代码:
import asyncio
@asyncio.coroutine
def a():
for i in range(0, 3):
print('a.' + str(i))
yield
@asyncio.coroutine
def b():
for i in range(0, 3):
print('b.' + str(i))
yield
@asyncio.coroutine
def c():
for i in range(0, 3):
print('c.' + str(i))
yield
tasks = [
asyncio.Task(a()),
asyncio.Task(b()),
asyncio.Task(c()),
]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait([t1, t2, t3]))
Run Code Online (Sandbox Code Playgroud)
运行这将打印:
a.0
b.0
c.0
a.1
b.1
c.1
a.2
b.2
c.2
Run Code Online (Sandbox Code Playgroud)
请注意,它总是打印出 'a' 然后是 'b' 然后是 'c'。我猜无论每个协程经过多少次迭代,它都将始终按该顺序打印。所以你永远不会看到类似的东西
b.100
c.100
a.100
Run Code Online (Sandbox Code Playgroud)
来自 node.js 背景,这告诉我这里的事件循环在内部维护一个队列,它用来决定接下来运行哪个任务。它最初放在a()队列的前面,然后是b() …
我有一个 html/javascript 客户端正在监听 mjpeg 视频流:
myImg = document.getElementById('my-image');
myImg.src = 'http://myserver.com/camera.mjpeg';
Run Code Online (Sandbox Code Playgroud)
工作正常,但如果视频流由于某种原因而终止,视频源将“冻结”在最后收到的图像上,我没有机会向用户显示错误。我看到这篇文章提供了一个仅在某些时候有效的解决方案(在流旁边创建一个长时间运行的 ajax 请求)。我希望有一种更受支持的方法,例如通过disconnect活动或其他方式。
即使是接收数据时的事件也比没有好。至少这样我就可以知道帧通过后是否已经有一段时间了。仅适用addEventListener('load')于第一帧。
有任何想法吗?
根据评论,我尝试了以下方法,但都不起作用:
myImg.addEventListener('error', event => { ... });
myImg.addEventListener('stalled', event => { ... });
myImg.addEventListener('suspend', event => { ... });
Run Code Online (Sandbox Code Playgroud) 是否可以将单个MySQLdb连接用于多个事务而不关闭它们之间的连接?换句话说,这样的事情:
conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")
for i in range(10):
try:
cur = conn.cursor()
query = "DELETE FROM SomeTable WHERE ID = %d" % i
cur.execute(query)
cur.close()
conn.commit()
except Exception:
conn.rollback()
conn.close()
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我只是想仔细检查.
我正在尝试编写一个节点应用程序,该应用程序读入一组文件,将它们分成行,然后将这些行放入一个数组中.很简单.除了我正在使用的一些SQL文件之外,它适用于很多文件.出于某种原因,当我将线分开时,我似乎正在获得某种unicode输出.该应用程序看起来像这样:
fs = require("fs");
var data = fs.readFileSync("test.sql", "utf8");
console.log(data);
lines = data.split("\n");
console.log(lines);
Run Code Online (Sandbox Code Playgroud)
输入文件如下所示:
use whatever
go
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
??use whatever
go
[ '??u\u0000s\u0000e\u0000 \u0000w\u0000h\u0000a\u0000t\u0000e\u0000v\u0000e\u0000r\u0000',
'\u0000g\u0000o\u0000',
'\u0000' ]
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,文件开头有一些无法识别的字符.在读取数据并直接输出后,除了这个字符外,它看起来还可以.但是,如果我然后尝试将其拆分成行,我会得到所有这些类似unicode的字符.基本上它是每个开头的所有实际字符"\ u0000".
我不知道这里发生了什么,但它似乎与文件本身的字符有关.如果我将文件的文本复制并粘贴到另一个新文件并在新文件上运行应用程序,它可以正常工作.我认为在复制和粘贴过程中,任何导致此问题的因素都会被删除.
我正在编写一个angular2应用程序,并且无法理解如何使用jasmine编写异步代码的测试.无论出于何种原因,我都没有看到很多看似非常适用于我的情况的例子.
我目前正在尝试测试对另一个服务具有异步依赖性的服务(而不是组件).我不是100%确定测试中的哪一点检查异步调用的结果是有效的.你可以expect()在你的服务的异步处理程序内调用吗?
service.foo()
.then((data) => {
//do I check the results in here?
expect(data).toEqual({ a: 1, b: 2 });
expect(mockDep.get).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)
这是完整的测试.
import { TestBed, inject } from '@angular/core/testing';
import { MyService } from './my.service.ts';
import { MyDependency } from './dependency.service.ts';
class MockDependency {
doSomething(): Promise<any> {
throw Error('not implemented');
};
}
describe('some tests', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
MyService,
{
provide: MyDependency, useClass: MockDependency
}
]
});
});
});
it('should do something', inject([MyService, …Run Code Online (Sandbox Code Playgroud) 我有一个电子应用程序,我正在使用webpack 2.我有一个配置文件,我包括像一个普通的webpack资源:
config.js:
export default {
config1: 1,
config2: 2
}
main.js:
import config from '../some/path/config';
console.log(config.config1);
Run Code Online (Sandbox Code Playgroud)
配置文件代码最终会出现在我的bundle.js文件中,正如您所期望的那样.问题是配置文件的重点是您可以在部署后更改它们.如果我希望配置文件更改生效,这个设置需要我重新包装所有内容.
我认为文件加载器可能是答案,但问题是文件加载器将require语句替换为文件的路径,而不是文件内容本身.
在@sancelot的建议下,我尝试将它作为一个单独的入口点并输出到我的webpack配置文件中.
entry: {
main: ['babel-polyfill', path.join(__dirname, '../app/main.js')],
config: [path.join(__dirname, '../app/config.js')]
},
output: {
path: `${__dirname}/../build/`,
publicPath: `${__dirname}/../build/`,
filename: '../build/[name].bundle.js'
}
Run Code Online (Sandbox Code Playgroud)
它确实创建了一个单独的config.bundle.js文件,但内部main.bundle.js仍然包含自己的配置文件副本,基本上被忽略了config.bundle.js.为了完整起见,我这里是整个webpack配置文件:
import webpack from 'webpack';
import path from 'path';
export default {
devtool: 'source-map',
target: 'electron-main',
entry: {
main: ['babel-polyfill', path.join(__dirname, '../app/main.js')],
config: [path.join(__dirname, '../app/config.js')]
},
output: …Run Code Online (Sandbox Code Playgroud) 我在 React 项目上使用 Webpack,它似乎以一种我不理解的奇怪方式HtmlWebpackPlugin影响了webpack 开发服务器。
它似乎允许我浏览到index.html该文件在代码库中的任何位置,这是单独使用开发服务器无法实现的。
假设我有以下目录结构:
myproj/
|- package.json
|- webpack.config.js
|- src/
|- index.html
|- index.jsx
Run Code Online (Sandbox Code Playgroud)
和一个webpack.config.js看起来像这样的文件:
const path = require('path');
module.exports = {
entry: './src/index.jsx',
devServer: {
contentBase: __dirname
}
};
Run Code Online (Sandbox Code Playgroud)
然后我跑webpack-dev-server --mode=development。由于我已devServer.contentBase设置为当前目录 ( myproj) 并且index.html文件在里面myproj/src,因此我必须浏览http://localhost:8080/src/index.html以查看我的 Web 应用程序。如果我尝试浏览,http://localhost:8080/index.html则会得到 404。这对我来说很有意义。
然后我添加了HtmlWebpackPlugin,里面没有改变任何东西webpack.config.js:
const HtmlWebpackPlugin = require('html-webpack-plugin');
....
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
}) …Run Code Online (Sandbox Code Playgroud) javascript ×3
node.js ×2
python ×2
webpack ×2
angular ×1
angularjs ×1
asynchronous ×1
css ×1
database ×1
electron ×1
event-loop ×1
html ×1
jasmine ×1
mjpeg ×1
mysql ×1
mysql-python ×1
queue ×1
tdd ×1
typescript ×1
unicode ×1
unit-testing ×1
utf ×1
utf-16 ×1
webpack-2 ×1