我在文件中有如下几行
....... DisplayName="john" ..........
Run Code Online (Sandbox Code Playgroud)
其中....表示其他字段的可变数量。
使用以下 grep 命令,我能够提取具有有效“DisplayName”字段的所有行:
grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test
Run Code Online (Sandbox Code Playgroud)
但是,我希望只从每一行中提取名称(即“john”),而不是从 grep 返回的整行中提取。我尝试将输出通过管道传输到cut命令中,但它不接受字符串分隔符。
我正试图抓住我的应用程序中当前使用的DNS服务器的地址,要么我通过Wifi或移动连接.DhcpInfo对象应提供此功能,但如何获取有效的DhcpInfo对象?
所以这是独家新闻:
我在前一段时间写了一个小小的C#应用程序,显示主机名,IP地址,图像日期,解冻状态(我们使用DeepFreeze),当前域和当前日期/时间,以显示在我们的Windows 7实验室机器的欢迎屏幕上.这是为了取代我们以前的信息块,它是在启动时静态设置的,实际上是嵌入到背景中的文本,带有更多动态和功能.该应用程序使用Timer来每秒更新IP地址,deepfreeze状态和时钟,并检查用户是否已登录并在检测到此类情况时自行终止.
如果我们只是通过我们的启动脚本(通过组策略设置)运行它,它会保持脚本打开,并且机器永远不会进入登录提示.如果我们使用类似start或cmd命令的东西在单独的shell /进程下启动它,它将运行直到启动脚本完成,此时Windows似乎清理脚本的所有子进程.我们现在能够绕过它psexec -s -d -i -x来启动它,这使得它在启动脚本完成后仍然存在,但可能非常慢,在我们的启动时间增加了5秒到一分钟之间.
我们已经尝试使用另一个C#应用程序来启动进程,通过Process类,使用WMI调用(Win32_Process和Win32_ProcessStartup)以及各种启动标志等,但所有结束都与脚本完成和信息块进程获得相同的结果杀害.我修改了将应用程序重写为服务,但服务从未设计为与桌面交互,更不用说登录窗口,并且在正确的上下文中运行操作似乎从未真正解决过.
所以对于这个问题:有没有人有一个很好的方法来实现这个目标?启动一个任务,使其独立于启动脚本并在欢迎屏幕上运行?
转换扁平结构的最简单,最有效的方法是什么:
object[][] rawData = new object[][]
{
{ "A1", "B1", "C1" },
{ "A1", "B1", "C2" },
{ "A2", "B2", "C3" },
{ "A2", "B2", "C4" }
// .. more
};
Run Code Online (Sandbox Code Playgroud)
进入分层结构:
class X
{
public X ()
{
Cs = new List<string>();
}
public string A { get; set; }
public string B { get; set; }
public List<string> Cs { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
// pseudo code which describes structure:
result =
{
new X() { …Run Code Online (Sandbox Code Playgroud) 我有6个月的Android经验,开发简单的基于UI的应用程序.现在我想编写面向Android核心内核的应用程序.例如,我想开发一个Android中不存在的框架.为此,我们必须为内核编写代码.我不知道在哪里以及如何启动Android内核编程.
如果有人知道如何启动它,请帮助我.
表单Form.Load,Form.Shown和Form.Activated事件之间有什么区别?他们被解雇的顺序是什么?
我希望只从需要许多物品的发电机中获益.
在以下代码中
a, b, c = itertools.count()
Run Code Online (Sandbox Code Playgroud)
我收到这个例外:
ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)
我已经看过几个相关的问题,但是我对发电机剩余的项目没有兴趣,我只想收到我要求的数量,而不提前提供这个数量.
在我看来,Python确定了你想要的项目数,但后来尝试阅读和存储超过该数量(生成ValueError).
如何在不传递我想要的物品数量的情况下,只能生产出我需要的物品数量?
为了帮助理解我认为应该可能的近似行为,这里是一个代码示例:
def unpack_seq(ctx, items, seq):
for name in items:
setattr(ctx, name, seq.next())
import itertools, sys
unpack_seq(sys.modules[__name__], ["a", "b", "c"], itertools.count())
print a, b, c
Run Code Online (Sandbox Code Playgroud)
如果您可以改进此代码,请执行.
Alex Martelli的回答告诉我,字节op UNPACK_SEQUENCE负责限制.我不明白为什么这个操作应该要求生成的序列在长度上也必须完全匹配.
请注意,Python 3具有不同的解包语法,这可能会使此问题中的技术讨论无效.
使用VS 2008签入文件时,我通常会选择"签入..."最近,这已经改为"立即检查",行为也不同(我没有选择添加备注报到).这很奇怪,因为我无法想象我为改变IDE所做的任何事情.
有谁知道如何回到"Check In ..."选项?谢谢.
有一个简短的方法来切换布尔值?
使用整数,我们可以执行以下操作:
int i = 4;
i *= 4; // equals 16
/* Which is equivalent to */
i = i * 4;
Run Code Online (Sandbox Code Playgroud)
那么布尔*=运算器也有一些东西(比如整数运算符)?
在C++中:
bool booleanWithAVeryLongName = true;
booleanWithAVeryLongName = !booleanWithAVeryLongName;
// Can it shorter?
booleanWithAVeryLongName !=; // Or something?
Run Code Online (Sandbox Code Playgroud)
在Java中:
boolean booleanWithAVeryLongName = true;
booleanWithAVeryLongName = !booleanWithAVeryLongName;
// Can it shorter?
booleanWithAVeryLongName !=; // Or something?
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现以下方法:void Ball :: DrawOn(Graphics g);
该方法应该绘制球的所有先前位置(存储在队列中)并最终绘制当前位置.我不知道这是否重要,但我使用g.DillEllipse(...)打印以前的位置,使用g.FillEllipse(...)打印当前位置.
问题是,你可以想象有很多绘图要做,因此显示开始闪烁很多.我曾寻找过双缓冲的方法,但我能找到的就是这两种方式:
1)System.Windows.Forms.Control.DoubleBuffered = true;
2)SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);
在尝试使用第一个时,我得到一个错误,解释说在此方法中,由于其保护级别,属性DoubleBuffered无法访问.虽然我无法想象如何使用SetStyle方法.
是否有可能将缓冲区加倍,而我拥有的所有访问权限都是我在方法中输入的图形对象?
提前致谢,
编辑:我创建了以下类
namespace doubleBuffer
{
class BufferedBall : System.Windows.Forms.Form{
private Ball ball;
public BufferedBall(Ball ball)
{
this.ball = ball;
}
public void DrawOn(Graphics g){
this.DoubleBuffered = true;
int num = 0;
Rectangle drawArea1 = new Rectangle(5, 35, 30, 100);
LinearGradientBrush linearBrush1 =
new LinearGradientBrush(drawArea1, Color.Green, Color.Orange, LinearGradientMode.Horizontal);
Rectangle drawArea2 = new Rectangle(5, 35, 30, 100);
LinearGradientBrush linearBrush2 =
new LinearGradientBrush(drawArea2, Color.Black, …Run Code Online (Sandbox Code Playgroud)