小编Tac*_*tex的帖子

Composer:删除包,清理依赖项,不更新其他包

情况

假设我有一个包含Composer安装的两个包的项目:

php composer.phar require 'squizlabs/php_codesniffer:~2.0' 'phpmd/phpmd:~2.1'
Run Code Online (Sandbox Code Playgroud)

自动生成的composer.json文件如下所示:

{
    "require": {
        "squizlabs/php_codesniffer": "~2.0",
        "phpmd/phpmd": "~2.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

在自动生成的composer.lock文件中,有两个请求的包:

  • 2.0.0 squizlabs/php_codesniffer
  • 2.1.3 phpmd/phpmd

以及四个依赖关系phpmd/phpmd:

  • 2.0.4 pdepend/pdepend
  • 2.5.9 symfony/config
  • 2.5.9 symfony/dependency-injection
  • 2.5.9 symfony/filesystem

几天后,squizlabs/php_codesniffer版本2.1.0发布了,但我还不想运行update.我现在想保留版本2.0.0,也许我会update在几天内运行.


这个问题

我现在想phpmd/phpmd从我的项目中删除.我想达到以下几点:

  1. phpmd/phpmd从中删除composer.json
  2. phpmd/phpmd从中删除composer.lock
  3. phpmd/phpmdvendor文件夹中删除
  4. 删除phpmd/phpmdfrom的所有依赖项composer.lock
  5. phpmd/phpmdvendor文件夹中删除所有依赖项
  6. 不要更新squizlabs/php_codesniffer到版本2.1.0

编辑:我宁愿不要求改变的版本约束的解决方案squizlabs/php_codesniffercomposer.json


我试过的 …

php composer-php

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

从表达式创建PHP类常量的最佳解决方法?

我希望能够做到这样的事情:

class Circle {

    const RADIUS_TO_CIRCUMFERENCE = M_PI * 2;  // Not allowed

    private $radius;

    public function __construct( $radius ) {
        $this->radius = $radius;
    }

    ...

    public function getCircumference() {
        return $this->radius * self::RADIUS_TO_CIRCUMFERENCE;
    }

}
Run Code Online (Sandbox Code Playgroud)

但我不能从这样的表达式创建一个类常量:

该值必须是常量表达式,而不是(例如)变量,属性,数学运算的结果或函数调用.


所以我的问题是:这种PHP限制的最佳解决方法是什么?我知道以下变通方法,但还有其他更好的方法吗?

1.创建一个属性

class Circle {

    private static $RADIUS_TO_CIRCUMFERENCE;

    private $radius;

    public function __construct( $radius ) {
        $this->radius = $radius;
        $this->RADIUS_TO_CIRCUMFERENCE = M_PI * 2;
    }

    ...

    public function getCircumference() {
        return $this->radius * $this->RADIUS_TO_CIRCUMFERENCE;
    }

}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这个,因为价值$RADIUS_TO_CIRCUMFERENCE可以改变,所以它不是真正的"常数".

2.使用 …

php const class constants

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

Laravel 5.1:启用SQLite外键约束

在SQLite中,默认情况下禁用外键约束.

配置Laravel 5.1的SQLite数据库连接以启用外键约束的最佳方法是什么?我看不到这样做的方式 ['connections']['sqlite']/config/database.php.

php sqlite foreign-keys laravel laravel-5

13
推荐指数
3
解决办法
4096
查看次数

使用Google Closure Compiler Application在一个文件中压缩所有文件.js

我想.js在命令行中使用Google Closure Compiler 将所有文件压缩到一个文件中的同一目录中.

对于一个文件,它是:

java -jar compiler.jar --js test.js --js_output_file final.js
Run Code Online (Sandbox Code Playgroud)

但我没有在文档中找到如何在final.js没有写入最后一个压缩文件的情况下将我的其他文件放在最后?

我想要这样的东西:

java -jar compiler.jar --js --option *.js --js_output_file final.js
Run Code Online (Sandbox Code Playgroud)

我可以或者必须执行一个程序,它将所有文件添加到文件中并在压缩之后?谢谢你能帮助我!

javascript compression google-closure-compiler

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

完整的HTML5功能列表?

Web上的HTML5有一些非常好的资源,比如Dive Into HTML5http://slides.html5rocks.com,我已经使用了我自己的应用程序中提到的许多功能,所以我不习惯使用HTML5.

但随着我对HTML5功能的研究越来越深入,我不断发现越来越多的被归类为"HTML5"标题的东西.我听说过的最新版本是keygen标签,它允许您轻松地在客户端生成公共私钥对.我很高兴这个标签存在并且还有点不安,直到几个小时前我才知道它的存在.

那么在网络上的任何地方都有完整的HTML5功能列表吗?我知道http://www.w3.org/TR/html5/上的工作草案,但我正在寻找一些关键而且易于理解的东西,而不必筛选大量的技术术语.

html5 reference

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

与OS X钥匙串关联的不可见文件

似乎钥匙串文件(带扩展名.keychain)通常会有一个与之关联的不可见文件,位于同一目录中.

这个不可见的文件总是具有以下属性:

  • 它是空的(零字节).
  • 其权限是0444(对所有用户都是只读的).
  • 它的名称.fl后跟8个十六进制字符.例如:

    .fl043D1EDD
    .fl947E1BDB
    .fl9FAF0136
    .fl12663120
    .fl8E6EFC6C
    .flCF600F4B
    .fl1D8ECE61
    .fl0D1D1BA9
    .fl79E88CD1
    .fl62323D2F
    .fl75262C83
    .fl652F188E
    
    Run Code Online (Sandbox Code Playgroud)

可以删除不可见的文件,但是当下次修改钥匙串的内容时,将使用相同的名称重新创建不可见的文件.

以下是使用Keychain Access实用程序演示的一些步骤:

  1. 通过选择" 文件">"新建钥匙串"并选择要在其中创建的钥匙串来创建新的钥匙串.将在与新钥匙串相同的目录中创建不可见文件.
  2. 删除不可见文件(使用Finder或终端).
  3. 修改钥匙串的内容.例如,通过选择" 文件">"新安全注释项",向钥匙串添加安全注释.将使用相同的名称重新创建不可见文件.
  4. 通过选择" 文件">"删除钥匙串">"删除引用和文件"来删除钥匙串.隐藏文件也将被删除.

我已经证实这发生在OS X 10.810.9中.


更新

使用security终端中的Apple 工具操作钥匙串时会创建相同的不可见文件:

  1. 创建一个新的钥匙串.还会创建一个不可见的文件.

    $ cd ~/Desktop/
    $ ls -1a
    .
    ..
    $ /usr/bin/security create-keychain ~/Desktop/Test.keychain
    $ ls -1a
    .
    ..
    .fl1BCE4B9A
    Test.keychain
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除不可见的文件.

    $ rm .fl1BCE4B9A
    $ ls -1a …
    Run Code Online (Sandbox Code Playgroud)

macos locking keychain security-framework flock

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

WebGL着色器:变量变量的最大数量

OpenGL ES规范部分2.10.4(着色器变量:变量变量):

可用于处理变量变量的内插器的数量由依赖于实现的常量给出MAX_VARYING_VECTORS.

该值表示可以插值的四元素浮点矢量的数量; 声明为矩阵或数组的变量变量将使用多个插值器.

链接程序时,由顶点着色器写入或由片段着色器读取的任何变化变量将计入此限制.

着色器访问多个MAX_VARYING_VECTORS变量变量的程序可能无法链接

在我的机器上的Chrome中,gl.getParameter(gl.MAX_VARYING_VECTORS)返回15,这意味着我可以vec4在着色器中使用15种变化.

我通过一些测试验证了这一点.15种变化vec4可以正常工作,但是当试图使用16时,程序无法链接并gl.getProgramInfoLog()返回"Varyings over maximum register limit".

但是,有多少类型的varyings vec3,vec2或者float可以用吗?

OpenGL ES规范似乎暗示了这一点,没有明确:

任何变化的变量......都会计入此限制.

其着色器访问多了一个程序MAX_VARYING_VECTORS 价值变化的变量可能无法链接

我正在做两个猜测:

  1. 变化floats 的最大数量由下式给出:(每个矢量
    MAX_VARYING_VECTORS * 4
    4 floats vec4)
  2. 如果(例如)MAX_VARYING_VECTORS8,则可以安全地使用以下每个而不会导致任何链接错误:
    • 8个vec4varyings
    • 10个vec3varyings
    • 16个vec2varyings
    • 32个floatvaryings
    • 3 vec4,3 …

opengl-es webgl opengl-es-2.0

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

Bash:从HTTP响应中删除标头

如果我有一些包含HTTP标头和正文的文本,例如:

HTTP/1.1 200 OK
Cache-Control: public, max-age=38
Content-Type: text/html; charset=utf-8
Expires: Fri, 22 Nov 2013 06:15:01 GMT
Last-Modified: Fri, 22 Nov 2013 06:14:01 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
Date: Fri, 22 Nov 2013 06:14:22 GMT

<!DOCTYPE html>
<html>
<head>
    <title>My website</title>
</head>
<body>

Hello world!

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

并且这个文本是从一个命令输入的,如何删除标题只留下身体?

(在标题内,\r\n用作换行符.  \r\n\r\n标记标题的结尾和正文的开头.)

这是我尝试过的(...表示任何命令,例如catcurl将输出一些HTTP头和body到stdout):

SED

我的第一个想法是sed在第一次出现之前做替换,删除所有内容\r\n\r\n:

... | sed 's|^.*?\r\n\r\n||'
Run Code Online (Sandbox Code Playgroud)

但这不起作用,主要是因为sed只能在单独的线路上运行,所以它不能在\r或运行\n.(此外,它不支持?非贪婪的运算符.)

grep的 …

regex bash perl grep sed

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

PHP:将任何浮点数格式化为十进制扩展

我想创建一个函数formatFloat(),它接受任何浮动并将其格式化为十进制扩展字符串.例如:

formatFloat(1.0E+25);  // "10,000,000,000,000,000,000,000,000"
formatFloat(1.0E+24);  // "1,000,000,000,000,000,000,000,000"

formatFloat(1.000001);      // "1.000001"
formatFloat(1.000001E-10);  // "0.0000000001000001"
formatFloat(1.000001E-11);  // "0.00000000001000001"
Run Code Online (Sandbox Code Playgroud)

初步想法

只要铸造浮子字符串都不行,因为花车比约大1.0E+14,或比约较小1.0E-4,PHP使得他们在科学记数法,而不是十进制扩展.

number_format()是尝试的明显的PHP功能.但是,大浮动会出现此问题:

number_format(1.0E+25);  // "10,000,000,000,000,000,905,969,664"
number_format(1.0E+24);  // "999,999,999,999,999,983,222,784"
Run Code Online (Sandbox Code Playgroud)

对于小浮点数,难点在于选择要求的小数位数.一个想法是要求大量的十进制数字,然后rtrim()是多余0的数字.但是,这个想法是有缺陷的,因为十进制扩展通常不会以0s 结尾:

number_format(1.000001,     30);  // "1.000000999999999917733362053696"
number_format(1.000001E-10, 30);  // "0.000000000100000099999999996746"
number_format(1.000001E-11, 30);  // "0.000000000010000010000000000321"
Run Code Online (Sandbox Code Playgroud)

问题是浮点数的精度有限,通常无法存储文字的确切值(例如:) 1.0E+25.相反,它存储可以表示的最接近的可能值. number_format()揭示了这些"最接近的近似值".

Timo Frenay的解决方案

我发现这个评论深埋在sprintf()页面中,令人惊讶的是没有任何赞成票:

以下是如何使用16位有效数字打印浮点数,无论大小如何:

$result = sprintf(sprintf('%%.%dF', max(15 - …
Run Code Online (Sandbox Code Playgroud)

php floating-point floating-point-conversion

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

Sublime Text:范围选择器运算符

在目前在TmThemeEditor上注册的243种配色方案中,我注意到它们几乎都没有使用范围选择器操作符.

运算符对于这样的情况非常有用:

(text.html | text.xml) & (meta.tag entity)
Run Code Online (Sandbox Code Playgroud)

我认为配色设计师很少使用它们的原因是它们的记录很少.它们在ST2ST3的官方文档中或者在配色文件非官方文档中都没有被提及.语法定义非官方文档 提到了范围选择器,但没有提到运算符.

在哪里可以找到Sublime Text支持的范围选择器运算符的文档?

scope operators sublimetext sublimetext2 sublimetext3

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