我有一个在各种不同的Ubuntu Linux机器上运行的bash脚本.它的工作是找出localhost的LAN IPv4地址.
该脚本正在使用
ip addr show eth0 | sed -n '/inet /{s/^.*inet \([0-9.]\+\).*$/\1/;p}'
Run Code Online (Sandbox Code Playgroud)
这很好,但有些机器出于某种原因使用eth1而不是eth0.我希望能够发现LAN iface名称,所以我可以在这里替换它而不是eth0.
当然,如果你能想出一个不同的oneliner做同样的事情,那一切都很好.
好的,所以我在这里读了很多关于此的帖子,但我认为这是一个特定的新问题.
我希望我们这里很多人错误地称之为"抽象静态方法"的功能.那就是:我想要一个类,它坚持扩展它的类实现某些静态方法.
对于不允许抽象静态的讨论问题,似乎有两条道路,但两者似乎都不优雅.
以下内容会生成错误:"PHP严格标准:静态函数A :: fn()不应该是抽象的".
<?php
abstract class A
{
abstract static public function fn();
}
class B extends A
{
static public function fn()
{
// does something on class vars etc.
}
}
Run Code Online (Sandbox Code Playgroud)
<?php
interface iA {
static function fn();
}
abstract class A implements iA
{
} // obviously this would have other stuff in it in reality
class B extends A
{
static public function fn()
{
// does …Run Code Online (Sandbox Code Playgroud) 我有一个 Python (3) 函数
def f(a, b, c=1, d=2):
pass
Run Code Online (Sandbox Code Playgroud)
我想在代码中建立一个参数列表。实际用例是基于一些命令行参数解析来执行此操作,但这是一个一般性问题(我对 python 相当陌生)例如
myargs = {}
myargs['positionalParams'] = ['foo', 'bar']
myargs['c']=2
myargs['d']=3
f(myargs)
Run Code Online (Sandbox Code Playgroud)
我知道我可以f(*somelist)将列表扩展为单独的参数,但是如何混合使用位置参数和可选参数呢?或者我做两次,一次用于位置,一次用于其他人的字典?
我用来terminfo找出终端中左(右,...)键的控制序列,以便我可以将其映射到我的有用的东西(向左移动),如下所示zshrc:
typeset -A key
left=${terminfo[kcub1]}
bindkey "$left" backward-char
Run Code Online (Sandbox Code Playgroud)
(还有其他一些事情可以让它发挥作用,请参阅来源)。这很有帮助,因为我使用多个终端仿真器并且这些控制序列会发生变化。例如,我在 Ubuntu 上使用 Gnome 终端连接到 Debian 盒子,然后在其中ssh使用...tmux
但是我如何从 terminfo 找到 CTRL+LEFT(和 RIGHT...)的关键代码?我想将它们映射到单词左/右。
Debian 8的find命令的手册页说:
如果整个表达式不包含-prune或-print以外的任何操作,则对整个表达式为true的所有文件执行-print.
那么为什么这些产出不同:
$ mkdir -p test/foo test/bar && cd test && touch foo/bar bar/foo
$ # Test 1
$ find . -name foo -type d -prune -o -name foo
./foo
./bar/foo
$ # Test 2
$ find . -name foo -type d -prune -o -name foo -print
./bar/foo
Run Code Online (Sandbox Code Playgroud)
所以测试1:表达式是否包含"除-prune或-print之外的其他动作?" 好吧,除了修剪,是的,这句话是真的,没有行动.所以这些结果是预期的,因为对于选项./foo之前的表达式-o返回True,所以它被打印出来.
但测试2:表达式是否包含"除-prune或-print之外的其他操作?" 好吧,不包括修剪和印刷品,是的,该陈述再次成立,没有其他行动.所以我希望得到相同的结果.
但我没有得到./foo.为什么?
就好像手册页应该是:"如果整个表达式不包含-prune以外的任何动作 或打印,-print对整个表达式为真的所有文件执行."
我正在学习 webpack 和 Vuejs。我已按照https://vuejs-templates.github.io/webpack/ 上的简单说明进行操作,效果很好。
但是,当我运行npm run build制作生产版本时,它需要 12 秒!我不明白为什么这个分钟的演示单页,没有功能应用程序,它的整体只有 115kB 需要这么长时间来构建。
我在很多地方都读过关于node_modules从 webpack 配置中排除的内容,但我在vue-cli的 webpack 模板中看不到这一点——它是否试图缩小、整理所有库代码或其他内容?
我意识到这是一个非常菜鸟的问题,所以请善待我!
我想使用Vue(v2)来管理HTML页面的各个部分,但是这样做的方式是,如果用户没有javscript,他们仍然会得到一个漂亮的页面。
例如,服务器可能输出:
<div id="rootAppContainer">
...
<article is="foo" >
<h1>Something cool</h1>
<p>Here's a great article.</p>
</article>
...
</div>
Run Code Online (Sandbox Code Playgroud)
可以作为备用。但我希望Vue可以挂载文章并用更好的内容代替,例如
<article>
<p v-show="showTeaser" >{{teaser}}</p>
<div v-show="!showTeaser" >
<h1>{{title}}</h1>
<p>Here you go:</p>
<p>{{body}}</p>
</div>
</article>
Run Code Online (Sandbox Code Playgroud)
为此,我希望能够解析要安装的元素的pre-vue内容,以提取视图模型data,然后将其模板格式化。
我以为可以使用生命周期挂钩或组件的数据方法来执行此操作,但是我找不到任何方法来获取对即将安装的节点的引用。直到为时已晚(mounted即已被替换)。
我在用着input()在 Python (3) CLI 脚本中向用户询问命令。
我希望他们能够按\xe2\x86\x91重用旧命令。就此而言,我希望他们也能够进行其他基本的线条编辑。
\n\n我可以通过运行来获得这些功能rlwrap myscript.py,但我不想运行包装脚本。(是的,我可以设置一个别名,但如果可能的话,我想将其封装在脚本中)
是否有一个库可以启用此功能(例如提供历史/编辑感知版本input())或者我需要从头开始?
这是一个PHP代码段
$foo = array( 'bar' => 'baz' );
Run Code Online (Sandbox Code Playgroud)
当我在Vim中输入此内容时,按时会响起铃声>。如果我键入<something>,则不会发生这种情况,因此我认为这有助于说“啊,您已经关闭了尖括号,但没有打开!”。但这并没有帮助,只是似乎不了解上下文:分配给关联数组。
当我键入时,它也会发出哔哔声/铃声$foo->bar。
我有set ft=php,除了这令人发指的哔哔声外,其他所有功能似乎都工作正常。
我知道我可以完全禁用提示音,但是我宁愿对某些确实需要发出提示音的事情保持提示音。我了解视觉铃声,但是我不想每次访问方法,属性或分配给新数组时都会让人头疼!
我正在编写一个递归树渲染器,并遭受“避免直接更改道具”警告。
据我了解,“道具减少,事件增加”意味着孩子不能/不应直接更改父数据。我可以通过编写很多代码来避免此错误,在这些代码中,一个组件$emit发生更改,其父组件捕获并重新发出该组件,然后不断执行,直到顶层组件最终可以更改数据,然后再通过树。虽然我得到了一个通用组件需要与其父组件无关的用例,但对于递归组件而言,它似乎效率极低。
我注意到提供了官方的VueJs 2 树视图示例。但是查看该代码显示,子组件被传递了属于父组件的对象,但是子组件仍被允许直接对其进行更新(例如,在addChild或changeType方法中)。
我对jsfiddle做了一个变体作为证明。我所做的所有更改都是将父级的数据输出为json,以便您可以看到它已更改。一开始看起来像这样:
{"name":"My Tree","children":[{"name":"hello"},{"name":"wat"}
Run Code Online (Sandbox Code Playgroud)
然后,如果您单击第一个父级,然后双击1. hello触发,changeType您将注意到父级的数据现在已更改:
{"name":"My Tree","children":[{"name":"hello","children":[{"name":"new stuff"}]},{"name":"wat"}...
Run Code Online (Sandbox Code Playgroud)
...但是没有触发可怕的“避免直接改变道具”警告。
因此,我显然缺少一些细微差别。令人沮丧的是,对此有太多问题,我担心添加重复项。但是我觉得这是不同的,因为我在问“为什么给出的示例不直接改变道具”?