小编Xeo*_*oss的帖子

你如何让作曲家安装非作曲家包?

我试图让作曲家从这个项目下载以下库,但是,它没有composer.json文件,所以我不确定这是否可行.

{
    "require" : {
        "fguillot/picoFeed" : "*"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/fguillot/picoFeed"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

错误:

[Composer\Repository\InvalidRepositoryException]
https://github.com/fguillot/picoFeed的任何分支或标记中找不到有效的composer.json ,无法从中加载包.

php composer-php packagist

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

根据事件对数字进行分组?

鉴于以下三个数字序列,我想弄清楚如何对数字进行分组以找到它们之间最密切的关系.

1,2,3,4
4,3,5
2,1,3
...
Run Code Online (Sandbox Code Playgroud)

我不确定我正在寻找的算法是什么,但我们可以看到与某些数字的关系比与其他数字的关系更强.

这些数字一起出现两次:

1 & 2
1 & 3
2 & 3
3 & 4
Run Code Online (Sandbox Code Playgroud)

一起一次:

1 & 4
2 & 4
3 & 5
4 & 5
Run Code Online (Sandbox Code Playgroud)

因此,例如,我们可以看到必须存在关系,1, 2, & 3因为它们一起出现至少两次.你也可以说3 & 4它们密切相关,因为它们也会出现两次.但是,算法可能会选择[1,2,3](过度[3,4]),因为它是一个更大的分组(更具包容性).

如果我们将最常用的数字组合在一个组中,我们可以形成以下任何分组:

[1,2,3] & [4,5]
[1,2]   & [3,4]   & [5]
[1,2]   & [3,4,5]
[1,2]   & [3,4]   & [5]
Run Code Online (Sandbox Code Playgroud)

如果允许重复,您甚至可以得到以下组:

[1,2,3,4] [1,2,3] [3,4] [5]
Run Code Online (Sandbox Code Playgroud)

我不能说哪种分组最"正确",但所有这四种组合都找到了不同的方法来对这些数字进行半正确分组.我不是在寻找一个特定的分组 - 只是一个通用的集群算法,它运行得相当好并且易于理解.

我确信还有很多其他方法可以使用事件计数来对它们进行分组.什么是这些良好的基础分组算法?Go,Javascript或PHP中的样本是首选.

algorithm go graph-algorithm

34
推荐指数
2
解决办法
867
查看次数

以可能的数据丢失为代价提高PostgreSQL的写入速度?

我喜欢PostgreSQL防崩溃,因为我不想花时间修复数据库.但是,我确信必须有一些我可以禁用/修改的内容,这样即使在断电/崩溃之前丢失了几条记录,插入/更新也会更快.我并不担心几条记录 - 只是整个数据库.

我正在尝试优化PostgreSQL以进行大量写入.插入100万行目前需要22分钟,这看起来有点慢.

如何加速PostgreSQL写入?

我调查过的一些选项(比如full_page_writes),似乎也存在破坏数据的风险,这不是我想要的.我不介意丢失数据 - 我只是不想要腐败.

更新1

这是我正在使用的表 - 这是因为大多数表将包含整数和小字符串,这个"样本"表似乎是我应该期待的最好的例子.

CREATE TABLE "user"
(
  id serial NOT NULL,
  username character varying(40),
  email character varying(70),
  website character varying(100),
  created integer,
  CONSTRAINT user_pkey PRIMARY KEY (id)
)
WITH ( OIDS=FALSE );
CREATE INDEX id ON "user" USING btree (id);
Run Code Online (Sandbox Code Playgroud)

我有大约10个脚本,每个脚本使用预准备语句一次发出100,000个请求.这是为了模拟我的应用程序将为数据库提供的实际负载.在我的应用程序中,每页有1个以上的插入.

更新2

我已经使用异步提交,因为我有

synchronous_commit = off

在主配置文件中.

database postgresql

30
推荐指数
2
解决办法
2万
查看次数

PHP - 将文件系统路径转换为URL

我经常发现我的项目中有文件需要从文件系统和用户浏览器访问.一个例子是上传照片.我需要访问文件系统上的文件,以便我可以使用GD来改变图像或移动它们.但我的用户还需要能够从URL访问文件example.com/uploads/myphoto.jpg.

因为上传路径通常对应于我构成了一个似乎在大多数时间都可以工作的函数的URL.以这些路径为例:

文件系统/var/www/example.com/uploads/myphoto.jpg

网址 http://example.com/uploads/myphoto.jpg

如果我将变量设置为类似的东西,/var/www/example.com/我可以从文件系统路径中减去它,然后将其用作图像的URL.

/**
 * Remove a given file system path from the file/path string.
 * If the file/path does not contain the given path - return FALSE.
 * @param   string  $file
 * @param   string  $path
 * @return  mixed
 */
function remove_path($file, $path = UPLOAD_PATH) {
    if(strpos($file, $path) !== FALSE) {
        return substr($file, strlen($path));
    }
}

$file = /var/www/example.com/uploads/myphoto.jpg;

print remove_path($file, /var/www/site.com/);
//prints "uploads/myphoto.jpg"
Run Code Online (Sandbox Code Playgroud)

有谁知道更好的方法来处理这个?

php filesystems url

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

ACL的数据库模式

我想为ACL创建一个模式; 但是,我在几种实现方式之间徘徊.

我很确定我不想处理级联权限,因为这会导致后端和网站管理员的混乱.

我想我也可以和用户一起生活在一个角色中.像这样的设置将允许在网站增长时根据需要添加角色和权限,而不会影响现有角色/规则.

起初我打算对数据进行规范化,并有三个表来表示关系.

ROLES { id, name }
RESOURCES { id, name }
PERMISSIONS { id, role_id, resource_id }
Run Code Online (Sandbox Code Playgroud)

用于确定某个用户是否被允许的查询将如下所示:

SELECT id FROM resources WHERE name = ?
SELECT * FROM permissions WHERE role_id = ? AND resource_id = ? ($user_role_id, $resource->id)
Run Code Online (Sandbox Code Playgroud)

然后我意识到我将只有大约20个资源,每个资源最多有5个动作(创建,更新,查看等等),也许还有8个角色.这意味着我可以公然无视数据规范化,因为我永远不会有超过几百条可能的记录.

所以也许这样的架构会更有意义.

ROLES { id, name }
PERMISSIONS { id, role_id, resource_name }
Run Code Online (Sandbox Code Playgroud)

这将允许我在单个查询中查找记录

SELECT * FROM permissions WHERE role_id = ? AND permission  = ? ($user_role_id, 'post.update')
Run Code Online (Sandbox Code Playgroud)

那么哪一个更正确?ACL还有其他架构布局吗?

mysql acl

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

如果检查jQuery插件已经绑定到DOM节点,你怎么办?

首次初始化时,大多数jQuery插件都绑定/绑定到DOM节点.

$('#foo').bar({options: ...});
Run Code Online (Sandbox Code Playgroud)

你如何检查当前绑定到DOM节点的插件或对象是什么样的#foo

if($('#foo').bar)
if($.inArray('bar', $('#foo').eq(0)))
if($('#foo').eq(0).indexOf('bar'))
if($('#foo').hasOwnProperty('bar'))
Run Code Online (Sandbox Code Playgroud)

例如,可以将事件绑定到这样的对象

console.log($('#foo').data('events'));
Run Code Online (Sandbox Code Playgroud)

jquery jquery-plugins

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

你的代码什么时候是"衍生作品"?

我试图弄清楚在哪些案例中"衍生作品"的法律后果发挥作用.我的代码到底是什么衍生作品

  • 在GPL下发布的PHP框架.

这不是GPL无效,因为PHP拥有自己的许可证并且您使用PHP构建该框架吗?

  • 商业Wordpress主题?

这不是一个"衍生作品",因此无效,因为wordpress是GPL吗?

  • 插入到现有GPL框架中的商业类 - 但不包括该类中该框架的引用.

这是衍生作品吗?

你看,我原本认为构建在(或构建)某些东西上的所有代码都是衍生代码 - 但事实并非如此.例如,苹果在他们的操作系统中使用Linux部件 - 但他们的操作系统不是在GPL下发布的.

我们大多数人都为这些语言构建的语言或系统构建了库.那么我们的代码什么时候成为别人代码的衍生物

licensing gpl

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

使用PHP ob_start()与Apache Deflate/Gzip压缩内容?

大多数网站都希望压缩其内容以节省带宽.但是,对于运行PHP的apache服务器,有两种方法可以实现 - 使用PHP或使用apache.那么哪一个在您的服务器上更快或更容易?

例如,在PHP中,我在页面的开头运行以下函数来启用它:

/**
 * Gzip compress page output
 * Original function came from wordpress.org
 */
function gzip_compression() {

    //If no encoding was given - then it must not be able to accept gzip pages
    if( empty($_SERVER['HTTP_ACCEPT_ENCODING']) ) { return false; }

    //If zlib is not ALREADY compressing the page - and ob_gzhandler is set
    if (( ini_get('zlib.output_compression') == 'On'
        OR ini_get('zlib.output_compression_level') > 0 )
        OR ini_get('output_handler') == 'ob_gzhandler' ) {
        return false;
    }

    //Else if zlib is …
Run Code Online (Sandbox Code Playgroud)

php compression apache gzip

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

检测字符串输入是否包含HTML的正确方法是什么?

在表单上接收用户输入时,我想检测"用户名"或"地址"等字段是否包含在XML(RSS提要)或(X)HTML(显示时)中具有特殊含义的标记.

那么这些是检测输入的输入是否在HTML和XML上下文中不包含任何特殊字符的正确方法中的哪一个?

if (mb_strpos($data, '<') === FALSE AND mb_strpos($data, '>') === FALSE)
Run Code Online (Sandbox Code Playgroud)

要么

if (htmlspecialchars($data, ENT_NOQUOTES, 'UTF-8') === $data)
Run Code Online (Sandbox Code Playgroud)

要么

if (preg_match("/[^\p{L}\-.']/u", $text)) // problem: also caches symbols
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了其他任何内容,比如字节序列或其他棘手的方法来获取"javascript:"之类的标记标记?据我所知,所有XSS和CSFR攻击都需要<>围绕这些值来让浏览器执行代码(至少从Internet Explorer 6或更高版本开始) - 这是正确的吗?

我不是在寻找减少或过滤输入的东西.我只是想在XML或HTML上下文中使用时找到危险的字符序列.(strip_tags()非常不安全.正如手册所说,它不会检查格式错误的HTML.)

更新

我想我需要澄清一下,有很多人通过"逃避"或"过滤"危险角色来这个问题误认为是关于基本安全的问题.这不是那个问题,而且大多数给出的简单答案无论如何也无法解决这个问题.

更新2:示例

  • 用户提交输入
  • if (mb_strpos($data, '<') === FALSE AND mb_strpos($data, '>') === FALSE)
  • 我救了它

既然数据在我的应用程序中,我会用它做两件事--1)以HTML格式显示 - 或者2)在格式元素内显示以进行编辑.

第一个在XML和HTML上下文中是安全的

<h2><?php print $input; ?></h2>' <xml><item><?php print $input; ?></item></xml>

第二种形式更危险,但仍应安全:

<input value="<?php print htmlspecialchars($input, ENT_QUOTES, …

html php xss sanitization input

23
推荐指数
3
解决办法
4896
查看次数

使用PHP转换所有类型的智能引号

我正在尝试在处理文本时将所有类型的智能引号转换为常规引号.但是,我编译的以下功能似乎仍然缺乏支持和正确的设计.

有谁知道如何正确地转换所有引用字符

function convert_smart_quotes($string)
{
    $quotes = array(
        "\xC2\xAB"   => '"', // « (U+00AB) in UTF-8
        "\xC2\xBB"   => '"', // » (U+00BB) in UTF-8
        "\xE2\x80\x98" => "'", // ‘ (U+2018) in UTF-8
        "\xE2\x80\x99" => "'", // ’ (U+2019) in UTF-8
        "\xE2\x80\x9A" => "'", // ‚ (U+201A) in UTF-8
        "\xE2\x80\x9B" => "'", // ? (U+201B) in UTF-8
        "\xE2\x80\x9C" => '"', // “ (U+201C) in UTF-8
        "\xE2\x80\x9D" => '"', // ” (U+201D) in UTF-8
        "\xE2\x80\x9E" => '"', // „ (U+201E) …
Run Code Online (Sandbox Code Playgroud)

html php unicode replace double-quotes

22
推荐指数
2
解决办法
2万
查看次数