当前情况:我通过使用依赖注入解决了项目中的依赖项.我想通过使用依赖注入容器(DIC)来简化对依赖项和延迟加载类的管理,从而采取下一个逻辑步骤.
我看了Bucket,Pimple和sfServiceContainer,进行了一些测试,真的很欣赏DIC的工作方式.因为它的简单性和原始力量,我可能会选择Pimple.如果我没有这个问题:
由于DIC提供的抽象,我正在使用的IDE(PHPStorm)不再理解我的代码中发生了什么.它不明白$ container ['mailer']或$ sc-> mailer是否持有一个类对象.我也试过Netbeans IDE:同样的问题.
这对我来说真的是个问题因为我的IDE变得无用了.在处理类时,我不想在没有代码提示,自动完成和重构工具的情况下编程.我不希望我的IDE在验证代码时发现各种误报.
所以我的问题是:有没有人处理过这个问题并找到了解决方案?
鉴于此测试用例使用AngularJS 1.2 rc3:http://plnkr.co/edit/MX6otx(下面重复)
1.
<li ng-init="toggle1 = false">
ng-if toggle1: {{ toggle1 }}
<p>
<button ng-if="!toggle1" ng-click="toggle1 = true">Turn On</button>
<button ng-if="toggle1" ng-click="toggle1 = false">Turn Off</button>
does not work
</li>
Run Code Online (Sandbox Code Playgroud)
2.
<li ng-init="obj={toggle2:false}">
ng-if obj.toggle2: {{ obj.toggle2 }}
<p>
<button ng-if="!obj.toggle2" ng-click="obj.toggle2 = true">Turn On</button>
<button ng-if="obj.toggle2" ng-click="obj.toggle2 = false">Turn Off</button>
then why does this work?
</li>
Run Code Online (Sandbox Code Playgroud)
问题:
我目前有这个正则表达式来按所有空格分割字符串,除非它在引用的段中:
keywords = 'pop rock "hard rock"';
keywords = keywords.match(/\w+|"[^"]+"/g);
console.log(keywords); // [pop, rock, "hard rock"]
Run Code Online (Sandbox Code Playgroud)
但是,我也希望可以在关键字中使用引号,如下所示:
keywords = 'pop rock "hard rock" "\"dream\" pop"';
Run Code Online (Sandbox Code Playgroud)
这应该回来了
[pop, rock, "hard rock", "\"dream\" pop"]
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最简单方法是什么?
我有一个异步验证器:
app.directive('validateBar', ['$http', function($http) {
function link($scope, $element, $attrs, ngModel) {
ngModel.$asyncValidators.myValidator = function(value) {
return $http.get('/endpoint/' + value);
};
}
return {
require: 'ngModel',
link: link
};
}]);
Run Code Online (Sandbox Code Playgroud)
表格模板:
<form name="myForm" ng-submit="foo.$valid && saveForm()">
<input name="bar" ng-model="bar" data-validate-bar>
<p ng-show="myForm.bar.$error.myValidator">Your bar is wrong</p>
<button disabled="myForm.$invalid">
</form>
Run Code Online (Sandbox Code Playgroud)
问题:我希望我的随附表格在myValidator承诺未决时无效.
我知道有两种方法可以在异步验证器处于挂起状态时使表单无效,但它们都是冗长和/或hacky.
// Workaround 1: Mark another validator as invalid while the validator promise is pending.
// I cannot mark 'myValidator' as invalid, gets set to valid immediately by Angular.
app.directive('validateSomething', …Run Code Online (Sandbox Code Playgroud) 我的Django 1.3项目中的PyCharm(1.3和2 beta)在检查我的模板脚本和样式包含时会抛出许多"未解析的静态引用"错误.
在一个过时的PyCharm文档中,我发现一个小指南在我的情况下不起作用,因为我的静态文件分布在多个应用程序上.将我的静态目录添加到STATICFILES_DIRS也不起作用.
Dir structure (simplified):
app1/static/js/file.js
app1/static/css/file.css
app2/static/js/otherfile.js
app2/static/css/otherfile.css
templates/template.html
Run Code Online (Sandbox Code Playgroud)
Template.html:
<script src="{{ STATIC_URL }}js/file.js"></script>
Run Code Online (Sandbox Code Playgroud)
当我访问localhost上的模板时,file.js会解析,但不会在PyCharm中解析.
如何在PyCharm中解析静态文件?
我正在研究几个Phonegap项目.在其中一些我正在使用相机功能.
我对此问题感到困惑(来自Phonegap文档):
Android Quirks
Android使用意图在设备上启动摄像头活动以捕获图像,而在内存较低的手机上,Cordova活动可能会被杀死.在这种情况下,当cordova活动恢复时,图像可能不会出现.
我经常在我的一个测试设备上遇到这个问题(HTC One X).它非常饱满,非常适合测试.
我注意到有一个替代插件:https://code.google.com/p/foreground-camera-plugin/这个问题.但我尽可能地避免使用插件......(可以轻松地移植到其他平台).它可用于Phonegap 2.4.0,我正在使用Phonegap 2.9.0
我已经使用了文件URI而不是数据(以避免内存问题).
我的问题是:有没有人知道Android何时决定杀死其他活动(比如Cordova,这是Phonegap非常需要的).在什么级别的免费记忆?(百分比,MB).所以我可以提前检查并警告用户.
当然,我希望这个问题得到解决......但似乎不会很快得到解决......
在第一个评论后编辑
我无意解决真正的问题,我发现这不是真的可能.这是Android和Phonegap之间的事情.我只需要知道是否有可能警告用户这种情况会发生.因此,用户可以在继续之前杀死其他一些应用程序...那么这是什么时候发生的?什么时候android认为没有足够的内存来让这件事情继续下去?那是我的问题.
编辑2013年11月29日
由于AustinAllover提供的链接,我现在知道这不仅仅是一个Phonegap问题......如果内存太少,Android相机似乎会杀死所有Java应用程序...所以这个问题比Phonegap/Cordova更通用...
我想显示一个包含整个整数部分的浮点数和小数部分最多两位小数,不带尾随零.
http://play.golang.org/p/mAdQl6erWX:
// Desired output:
// "1.9"
// "10.9"
// "100.9"
fmt.Println("2g:")
fmt.Println(fmt.Sprintf("%.2g", 1.900)) // outputs "1.9"
fmt.Println(fmt.Sprintf("%.2g", 10.900)) // outputs "11"
fmt.Println(fmt.Sprintf("%.2g", 100.900)) // outputs "1e+02"
fmt.Println("\n2f:")
fmt.Println(fmt.Sprintf("%.2f", 1.900)) // outputs "1.90"
fmt.Println(fmt.Sprintf("%.2f", 10.900)) // outputs "10.90"
fmt.Println(fmt.Sprintf("%.2f", 100.900)) // outputs "100.90"
Run Code Online (Sandbox Code Playgroud)
格式化具有2g当整数增加数量级时开始舍入的问题.此外,它有时会显示数字e.
格式化2f有问题,它将显示尾随零.我可以写一个删除尾随零的后处理函数,但我宁愿这样做Sprintf.
这可以通过一般方式使用Sprintf吗?
如果没有,有什么好办法呢?
这个hack曾经在<= Firefox 29中工作以删除<select>箭头:
text-overflow: '';
text-indent: 0.01px;
-moz-appearance: none;
Run Code Online (Sandbox Code Playgroud)
它不再适用于Firefox 30.箭头又回来了.
有谁知道达到同样效果的方法?
注1:我对使用另一个元素覆盖箭头的解决方案或嵌套select元素并执行溢出的解决方案不感兴趣:隐藏.
注2:我尝试了所有-moz-appearance可能性.它们要么添加我无法覆盖的默认样式,要么不允许自定义样式(特别是边框和背景),或者箭头仍然可见.
更新:它在Firefox 35(目前处于测试版)中再次使用-moz-appearance: none,使其在所有最新浏览器(在IE11,Firefox 35b,Chrome 39,Safari 8 中测试)中保持一致:http://jsfiddle.net/phd5pu9x/
鉴于这些请求标头:
Host: api.example.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:41.0) Gecko/20100101 Firefox/41.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Origin: https://web.example.org
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)
这些响应头:
Connection: keep-alive
Content-Length: 0
Content-Type: text/plain; charset=utf-8
Date: Tue, 13 Oct 2015 10:57:34 GMT
Server: nginx/1.8.0
access-control-allow-headers: Authorization, Content-Type
access-control-allow-methods: PUT, DELETE, PATCH
access-control-allow-origin: *
Run Code Online (Sandbox Code Playgroud)
即使只明确允许Authorization和Content-Type标头,这也可以工作.为什么我不允许我的浏览器发送其他标头?(DNT例如)
更新:此MDN页面包含简单标头的概述(默认的CORS安全请求标头):
一个简单的头(或CORS安全的请求头)是以下HTTP头之一:
- 接受
- 接受语言
- 内容语言
- Content-Type,其MIME类型为其application/x-www-form-urlencoded,multipart/form-data或text/plain的解析值(忽略参数).
或者其中一个客户端提示标题:
- DPR
- 下行 …
AngularJS接受这个有效的URL:
var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
Run Code Online (Sandbox Code Playgroud)
Django接受这个:
regex = re.compile(
r'^(?:http|ftp)s?://' # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' #domain...
r'localhost|' #localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
r'(?::\d+)?' # optional port
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
主要的实际区别是AngularJS接受http://some-host-without-tld,而Django只允许http://localhost作为没有TLD的有效URL.
由于覆盖Django URL Validator存在问题,我想覆盖AngularJS验证器.我试过这种方式,这有效:
app.overwriteUrlValidator = function(ngModel) {
// Django RegExp, ported to JS.
var URL_REGEXP = /^(?:http|ftp)s?:\/\/(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::\d+)?(?:\/?|[\/?]\S+)$/gi;
// Same validator as AngularJS's, only with a different RegExp.
function urlValidator(value) {
if (ngModel.$isEmpty(value) || URL_REGEXP.test(value)) {
ngModel.$setValidity('url', true);
return value;
} else {
ngModel.$setValidity('url', false);
return …Run Code Online (Sandbox Code Playgroud)