小编alt*_*ern的帖子

为什么我不应该使用php的unix命令?

为什么你更喜欢exec()在php中不使用bash命令?

我不考虑可移植性问题(我肯定不会将其移植到Windows上运行).这只是编写脚本的好方法.

一方面:

  1. 我需要在php中编写更多行,然后在bash中完成相同的任务.例如,当我需要过滤文件中的某些行时,我就无法使用某些东西进行成像而不是cat file | grep string > new_file.这需要花费更多的时间和精力在php中完成.
  2. 当出现问题时,我不想分析所有情况.我将向用户显示bash命令输出,因此他会知道究竟发生了什么.
  3. 我不需要在文件系统函数周围编写另一个包装器并使用它.利用操作系统进行文件搜索,操作等更有效.

另一方面:

  1. exec()在大多数情况下,调用unix命令可能效率低下.产生一个单独的过程是非常昂贵的.不是在谈论在apache下运行的脚本,这甚至比从命令行脚本产生的效率低得多.
  2. 有时它被证明是"黑魔法般的"和类似perl的脚本.虽然可以通过详细的评论来避免.
  3. 也许我只是想在他们不应该的时候一起使用两种不同的工具.每个工具都有自己的应用程序,不应混合在一起.
  4. 即使我确定用户不会尝试运行脚本会恶意目的,使用exec()是一种潜在的安全威胁.在大多数情况下,用户数据可以使用escapeshellarg(),但仍然是一个需要考虑的问题.

php unix bash

6
推荐指数
2
解决办法
739
查看次数

存储库与数据库vs文件系统

什么使存储库与数据库,文件系统或任何其他类型的存储不同?我怎么能准确地告诉这个或哪个是存储库根据它有或没有的一些功能来判断?

当我说'存储库'时,首先我指的是版本控制.但是还有其他存储库的例子,例如数字图书馆.当然,可能还有其他一些例子,但所有这些例子都假定存储库是"你可以存储某些东西的地方".但它并不十分清楚它有什么确切的差异,可以将它与其他'你可以存储东西的地方'区分开来.

svn terminology repository

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

如何在Virtual Box下列出所有虚拟机?

如何列出所有VirtualBox虚拟机,包括其他用户创建的虚拟机?

缺省情况下,该VBoxManage list vms命令列出当前用户拥有的虚拟机。但是,如果有许多由不同用户创建的VM,该怎么办?我想运行另一个用户创建的VM,但是即使我知道它存在于某个地方也找不到。

unix virtualization virtualbox virtual-machine

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

如何在where子句中使用do块赋值行中的变量?

我有以下代码示例:

{-# LANGUAGE ScopedTypeVariables #-}

main = do
  putStrLn "Please input a number a: "
  a :: Int  <- readLn
  print a

  putStrLn "Please input a number b: "
  b :: Int  <- readLn
  print b

  putStrLn ("a+b+b^2:" ++ (show $ a+b+c))
    where c = b^2
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我不能bwhere子句中使用变量,我得到的错误如下:

Main3.hs:13:15: error: Variable not in scope: b
   |
13 |     where c = b^2
   |               ^
Run Code Online (Sandbox Code Playgroud)

任何想法如何bwhere条款中提供?

monads haskell scope where-clause do-notation

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

将元素置于模态背景之上

我正在尝试为我的应用程序构建指南功能。作为此功能的一部分,预计工具提示将显示在目标 HTML 元素旁边,并且该目标元素将显示在与工具提示一起出现的模态背景之上。

问题是,经过巨大的努力,我仍然无法使 HTML 元素显示在模态背景之上。像这样的简单技巧z-index: 10000 !important; position: relative没有帮助。z-index另外,通过在 Firefox 开发者工具中禁用它来更改父元素(并保留z-index: 10000 !important; position: relative应该位于模态背景顶部的目标元素)也没有帮助。

该应用程序的 HTML 非常复杂,包含许多元素。但我希望能够通过将任何给定元素放在仅知道其 id 的模式叠加层顶部来“突出显示”任何给定元素。有没有一种简单的方法可以使用 JavaScript/React 来做到这一点?

希望有一种方法可以在不修改 DOM 的情况下做到这一点,这将是非常可取的。

UPD: 代码演示- 按帽子按钮显示指南/工具提示

html javascript css reactjs

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

在机器上找到所有subversion工作副本

我怎样才能使用findunix实用程序查找机器上的所有工作副本?例如,我可以使用find / -name .svn -type d命令,但它输出所有冗余结果(很多子文件夹),而我只需要显示工作副本的父目录.

有相关的问题,但它在我的情况下并没有真正帮助:我如何找到给定的subversion工作副本的根文件夹

unix svn bash find

4
推荐指数
2
解决办法
3202
查看次数

检测unix中的目录更改

如何跟踪UNIX中特定目录的更改?例如,我启动了一些在执行期间创建一些文件的实用程序.我想知道在一次特定发布期间创建了哪些确切文件.有没有简单的方法来获取这些信息?问题是:

  1. 脚本执行后我无法刷新目录内容
  2. 使用具有哈希作为复合部分的名称创建的文件.没有可能从脚本中获取此哈希以用于后续搜索.
  3. 可能会同时执行多个脚本,我不希望在同一文件夹中看到由另一个进程创建的文件.

请注意,我不想知道目录是否已按照此处所述进行了更改,我需要文件名,理想情况下可以使用文件名来匹配特定模式.

unix linux filesystems bash

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

svn和git版本化模型的区别

我想知道git(或其他DVCS)和subversion(或其他CVCS)建议的版本控制方法有什么区别.

以下是我在http://www.xsteve.at/prg/vc_svn/svn.txt找到的有关此主题的内容:

Subversion mananges将树版本化为一阶对象(存储库是树的数组),并且变更集是派生的东西(通过比较相邻树.)像Arch或Bitkeeper这样的系统是相反构建的:它们被设计为将变更集作为一阶对象(存储库是一包补丁)进行管理,并通过将补丁集合在一起来派生树.

但目前尚不清楚subversion存储库如何存储更改,是否包含版本化文件的最旧版本等等.例如,为什么我们不能像git一样生成一堆补丁呢?它总是被提到作为svn和git之间的主要区别,它简化/复合了合并,但不幸的是,我仍然没有得到这个想法.

svn git version-control repository

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

通过DOMDocument获取具有子节点的节点的内容

我有以下html:

<html ><body >Body text <div >div content</div></body></html>
Run Code Online (Sandbox Code Playgroud)

如果没有嵌套,我怎么能得到身体的内容<div>?我需要获取"正文",但不知道如何做到这一点.

跑步的结果

$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->nodeValue;
Run Code Online (Sandbox Code Playgroud)

是'正文textdiv内容',这不是我想要的

html php xml parsing domdocument

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

Haskell - 维护全局变量的不同状态

我已经对stackoverflow做了一些研究,以找到维持全局变量的不同状态的常见问题的可行解决方案.

我发现这个复杂的问题解决了类似的问题.它提出了类似神的全局变量的重要问题,这是Haskell中的反模式.我完全理解我的情况是类似的,我正在尝试介绍这个反模式,但我真的不喜欢这个答案.Netwire对于我手边的任务来说,这似乎是一种矫枉过正,它可以以更加简单和优雅的方式完成.

我也找到了这个,但问题和答案都解决了更普遍的问题和方法,而我有具体的问题,希望是具体的解决方案.我想要的(在以前的问题中找不到)是通过简单的例子在理解维持变量状态方面做出定性的步骤.

在下面的代码中,我试图从执行:load:new命令的两个不同位置更新神似变量的状态,但显然,它不起作用.

我的问题是如何修改以下代码以适应以功能方式更改全局变量值的可能性?我是否应该抛弃所有代码,因为它代表了命令式的方法,并将其全部替换为parseInput遵循功能世界规则的新方法?我应该用其他东西替换全局变量吗?我假设我可以用IORef某种方式,这似乎是合适的.或ST Monad这个问题/答案建议.

如果没有过度杀伤力,解决这个问题的最简单,最直接的步骤是什么?我知道我可能需要更好地掌握Monads(特别是State Monad)的概念,我准备好了解他们如何帮助解决这个特殊问题.但到目前为止我读过的文章(这个这个)并没有多大帮助.我假设State Monad不合适,因为我的例子没有返回值,只有更新状态.如果我错了,你能否解释一下如何以及哪些缺失链接可以帮助我更好地理解Haskell中的状态?

{-# LANGUAGE QuasiQuotes #-}

import Text.Regex.PCRE
import System.Console.Haskeline
import TH (litFile)
import System.FilePath
import System.IO
import Control.Monad
import Control.Monad.IO.Class
import Data.List 

mydata :: [Int]
mydata = [0]

saveDataToFile :: [Int] -> IO ()
saveDataToFile mydata = withFile "data.txt" WriteMode $ \h -> System.IO.hPutStr h (unwords $ map show mydata) …
Run Code Online (Sandbox Code Playgroud)

io state haskell

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