小编Jea*_*ach的帖子

如何检测网络电缆/连接器的物理连接状态?

在Linux环境中,我需要检测RJ45连接器到其插槽的物理连接或断开状态.最好只使用BASH脚本.

以下在其他网站上提出的解决方案不适用于此目的:

  1. 使用'ifconfig' - 因为网络电缆可能已连接但网络配置不正确或当前未启动.
  2. Ping主机 - 因为产品将使用未知网络配置和未知主机在LAN内.

是不是有一些状态可以在/ proc文件系统中使用(其他一切都在那里)?

Linux世界是如何拥有自己的Windows泡泡版本,从图标托盘中弹出,表明您刚刚拔掉了网线?


Kent Fredriclothar,你的两个答案都满足了我的需求......非常感谢!哪一个我会用...我还是不知道.

我想我不能把你们两个都当作正确的答案吗?对我来说,我选择一个可能是公平的.我猜是翻硬币吗?再次,谢谢!

linux connection networking detection

138
推荐指数
7
解决办法
28万
查看次数

数据库 - 数据版本控制

关于在数据库中对数据进行版本控制,我已经阅读了关于SO的一些问题(比如这一个).

我喜欢上面提到的一些建议.我有最长的时间想要(需要)修改我的许多桌子,但从来没有绕过它.作为一个只有简单的数据库工作的程序员,我想知道如何才能真正做到这一点.

我不是要求SQL语法中的实际解决方案.我最终可以为自己解决这个问题(或者在时机成熟时发布).我只是要求人们评论他们将如何进行评论以及如果我要"修改"数亿条记录,可能会出现任何潜在的性能问题.或者任何其他建议,只要它基于以下示例.

举个简单的例子:

Person
------------------------------------------------
ID                UINT NOT NULL,
PersonID          UINT NOT NULL,
Name              VARCHAR(200) NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL

Audit
------------------------------------------------
ID                UINT NOT NULL,
UserID            UINT NOT NULL,               -- Who
TableName         VARCHAR(50) NOT NULL,        -- What
OldRecID          UINT NOT NULL,               -- Where
NewRecID          UINT NOT NULL,
AffectedOn        DATE NOT NULL,               -- When
Comment           VARCHAR(500) NOT NULL        -- Why
Run Code Online (Sandbox Code Playgroud)

如果TableName是一个字符串,我不确定如何将Audit表链接到任何其他表(例如Person)?

另外,假设我有三个GUI来填充:

  1. 特定人员ID的完整记录
  2. 列出所有人的表格视图(按ID)
  3. 一个视图,显示每个人在每个条目下面的修订信息(每人的修订数量,修订日期,修订注释等),按最新修订排序.

要完成1和2,查询Person表或Audit表会更好吗?

要完成3,所谓的数据库专家是否只需获取所有记录并将其传递给软件进行处理,或按PersonID和受影响日期分组?这通常是在一个查询中处理还是多个?

database versioning database-design

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

便携式Eclipse

我正在尝试将整个"工作区"移植到USB密钥(包括Eclipse可执行文件),以便我可以随身携带我的工作并直接处理密钥.

我的目录层次结构与此类似:

/workspace/eclipse - Where my current eclipse binary is stored
/workspace/codebase - Where I keep the root of all my eclipse projects
/workspace/resources - Where I keep all project files (images, docs, libs, etc.)
Run Code Online (Sandbox Code Playgroud)

它在一个系统上完美运行.但是当我切换到另一个系统时,USB密钥会安装在另一个驱动器上.例如,在我的笔记本电脑上,我得到'E:\',在我的电脑上,我得到'K:\'并且在工作中我得到'F:\'等等.

这意味着因为Eclipse(出于"某些原因")似乎只在其每个配置文件(例如.classpath)中使用完整路径名(包括驱动程序字母),所以当我想在另一个系统上工作时,什么都没有用.

我在每个项目的基础上放置了一个'libs'目录,并用它依赖的JAR文件填充它.为什么不使用相对名称,以便我可以指定类似"../../libs/log4j.jar"的内容?

有谁知道如何解决这个问题?有谁知道这个的解决方法?


更新:2010.11.09

我最近发现了Dropbox,它允许您自动地在线和在计算机之间自动同步文件.它包括2GB的可用空间,如果需要,您可以升级到更多(每年一次).

我将它安装在我的两台笔记本电脑,两台电脑,我的Linux服务器和我的Android手机上,然后在"我的Dropbox"文件夹中创建了一个"工作区"目录.从'workspace'目录开始,我安装了Eclipse并像往常一样创建/配置了所有项目.我可以在任何计算机上工作,一切都保持完全同步.这比任何USB密钥功能和麻烦都要好!

eclipse workspace

10
推荐指数
2
解决办法
7034
查看次数

分开的有效参数

我一直在阅读分手的 页面,但似乎无法找到有关有效参数的任何文档.我正在尝试将具有特定分区大小的USB CompactFlash分区(无论CF大小如何).但我想确保我的对齐完全正确和最佳.

例如,当我使用以下命令时:

parted -s -a optimal $DEV mkpart primary ext3 1 1600
parted -s -a optimal $DEV mkpart primary ext3 1600 3200
parted -s -a optimal $DEV mkpart primary ext3 3200 3600
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚第一个分区是否应为1或0?我得到的唯一提示是它应该从1而不是0开始是我运行的时候:

parted /dev/sdc align-check optimal 1
Run Code Online (Sandbox Code Playgroud)

这告诉我它在以1开始时是对齐的而在从0开始时没有对齐.但是当我以1开始并且我执行'打印'时,开始是1049kB ...这是正常的吗?当我转储由其他工具创建的打印分区时,我发现它们以32kB开始.如果我使用0的开头,它会输出512kB的开头.哪个是对的,我不知道!

另外,我在网络上看到了许多使用第二个和第三个分区的起始值作为其前面分区的结束值的人的示例(即:1600和3200值).我们假设重叠或增量为1吗?手册页对此没有任何说明.我已经看到一些网页,他们说它的错误是为了开始时与上一端的价值相同.

当我使用'-a optimal'时,它似乎甚至不会影响我的分区.不使用对齐标志似乎产生相同的结果.这是为了什么目的?有什么我想念的吗?

我真的希望分手会更聪明,不需要一个开始,而是可以自己推断它.实际上很多人似乎都需要这个确切的功能,所以我不是唯一有这种需求的奇怪球.希望那里的一些极客会看到这种需求,并实际上将其添加为功能.

请注意,我正在使用自动构建脚本,这就是我使用'-s'标志的原因.

如果有人能在这方面给我启发,我将非常感谢...提前感谢!

disk-partitioning

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

如何使用udev规则识别断开连接的USB设备?

我有两个使用Xorg的xinerama功能的LCD.每个LCD屏幕都有一个触摸屏,它们连接到各自的USB线.

查看'/ var/log/messages'文件,我看到以下内容:

kernel: input: Analog Resistive as /class/input/input0
kernel: input: USB HID v1.01 Mouse [Analog Resistive] on usb-0000:00:1d.3-1
kernel: input: Analog Resistive as /class/input/input1
kernel: input: USB HID v1.01 Mouse [Analog Resistive] on usb-0000:00:1d.3-2
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在某个时间点,USB总线似乎重置(或奇怪的东西),我的两个触摸屏反转(按左侧LCD,鼠标右移,如果我按下右侧LCD,鼠标移动到剩下).

为了尝试调试问题,我尝试编写一个udev规则来记录我的设备何时重置/断开连接(或其他).但似乎udev会在连接时在设备上报告完整的详细信息(产品,制造商,idProduct,idVendor等),但在删除时只提供一些总线号码.为什么是这样?

当我得到一个ACTION =="删除",KERNEL =="输入*"规则时,我无法知道它是哪个设备!有没有人知道这方面的方法?

udev

6
推荐指数
1
解决办法
5197
查看次数

getGraphics()什么时候会返回一个有效的图形实例?

我正在尝试渲染一个自定义Swing组件,我扩展了JComponent类.

为了简化组件需求,我们只需将我的组件汇总为需要渲染一些字符串,每个字符串都有自己的字体.

我需要将我的组件的大小精确到我渲染的字符串的总宽度和高度.

为了确定这个大小,我使用FontMetrics来计算每个字符串的尺寸.有了这些信息,我可以弄清楚我的组件的大小,并适当调整大小.

问题是,当我访问getGraphics()时,它总是为null,所以我无法得到FontMetrics实例.如果我等待从覆盖的paintComponent()方法计算我的组件大小,它已经太晚了(组件已经有一个大小,对吧?).

文档说"如果此组件当前不可显示,则此方法将返回null".那么我何时知道组件何时可以显示并且有一个Graphics对象供我调整组件大小?

一旦调用frame setVisible(true)框架,渲染组件的Swing调用顺序是什么?

谢谢


更新:2010年2月6日星期二23:34

正如评论中所提到的,GridLayout根本不尊重任何setXxxSize().对于任何感兴趣的人,我发布了使用GridLayout,BoxLayout和FlowLayout的结果,使用一个简单的框架,接收5个固定大小的200宽50高的组件(通过设置min,max和preferred).

检测结果:

所述的GridLayout总是沿宽度和高度调整大小(如在评论中提到)

无论如何,FlowLayout始终尊重组件大小.

至于BoxLayout ......

PAGE_AXISY_AXIS收缩的部件的宽度的大约一半它们的大小(104),但没有收缩的高度.

LINE_AXISX_AXIS萎缩的组件,以什么似乎为零,但没有触及宽度高度.

java swing

6
推荐指数
1
解决办法
2915
查看次数

Java的FlowLayout没有正确调整大小

JFrame用a BorderLayout和a 创建了一个初始化JScrollPaneCENTER元素.

滚动窗格设置为VERTICAL_SCROLLBAR_ALWAYSHORIZONTAL_SCROLLBAR_NEVER策略.我的意图frame是控制宽度,而高度应该随着数据的添加/删除而增长/缩小.

在我的内部scroll pane,我添加了一个简单的JPanel(让我们称之为内容面板),它是用FlowLayout(和LEADING策略)初始化的.

为了测试这个,我只content panel用20个JLabel("Item " + n)组件填充我n的循环计数器.

labels如果frame足够大,我希望看到我在单行显示,当缩小宽度时标签会换行到其他行.但相反,只有一行显示没有包装......永远.

有没有人知道为什么在涉及flow layout时不包裹scroll pane

如果我将scroll pane所有全部移除并content panel直接放入frame,则会发生所需的包裹效果,但如果frame高度缩小小于content panel高度则会消失.

我的想法是,我希望labels在必要时将其包裹起来,但如果必须向上/向下滚动,也始终可见.

对于如何解决这个问题,有任何的建议吗?

谢谢.

java layout swing

6
推荐指数
1
解决办法
5986
查看次数

数据库 - 数据版本控制(后续)

我的原始问题可以在这里找到,为此我得到了一些很棒的答案,idas和提示.

作为可行性和性能研究的一部分,我已经开始转换我的模式,以便使用这些想法对我的数据进行版本化.在这样做的时候,我想出了一些其他的问题.

在我原来的问题中,我的例子很简单,没有真正的关系引用.为了保留我之前问题的例子,我现在将'Name'部分扩展到另一个表.

所以现在,我的数据变成了:

Person
------------------------------------------------
ID                UINT NOT NULL,
NameID            UINT NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL

PersonAudit
------------------------------------------------
ID                UINT NOT NULL,
NameID            UINT NOT NULL,
DOB               DATE NOT NULL,
Email             VARCHAR(100) NOT NULL,
UserID            UINT NOT NULL,         -- Who
PersonID          UINT NOT NULL,         -- What
AffectedOn        DATE NOT NULL,         -- When
Comment           VARCHAR(500) NOT NULL  -- Why

Name
------------------------------------------------
ID                UINT NOT NULL,
FirstName         VARCHAR(200) NOT NULL,
LastName          VARCHAR(200) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

database versioning database-design

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

我们需要一个随机数生成器来解密(解密)吗?

我是迄今为止加密专家,因此我正在寻找软件解密建议.我的例子涉及硬件,但我的问题是寻求关于软件解决方案是否可行,可行和合理的软件建议.

背景:

在我们的产品上,我们正在考虑在我们的RFID密钥上添加加密.我们当前的固件不支持这一点,我们的硬件人员现在想升级硬件以添加随机数生成器芯片.

如上所述,我不是加密方面的专家,但我总是认为加密需要一个随机数生成器,但不能用于解密?

附加信息:我们使用的是低功耗ARM处理器(此时不知道该型号).

所以我的问题如下:

  1. 你真的需要随机数来破译数据吗?
  2. 如果是这样,为什么标准C语言库不足够?

最后,

  1. 如果我们确实需要随机数来破译,那么任何有经验评论的人都可以评论硬件与软件随机数的利弊吗?示例:解码的随机数部分仅占总处理的1%,因此我不一定能加快速度吗?

先感谢您!

random encryption

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

如何按数组内的属性查询嵌套对象?

我收集了数千个(可能 30-40k)文档,其结构(大大简化)如下:

{
 propA:'123',
 obj: [
       {prop1:'a'},
       {prop1:'b'},
       {prop1:'c'}
 ],
 propB:456
}
Run Code Online (Sandbox Code Playgroud)

如何查询找到所有文档在哪里obj.prop1==='b'?我似乎无法弄清楚如何检查数组属性内对象的属性。这是使用1.5.1版本。

谢谢!

更新 已解决 - 请参阅我的答案...

lokijs

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

使用 usbserial 通过 RxTx 写入数据?

我在 Linux 发行版上通过 usbserial 使用 RxTx 库。RxTx 库的行为似乎与串行方式的工作方式完全不同(以一种糟糕的方式)。

我最大的问题之一是它RxTx SerialPortEvent.OUTPUT_BUFFER_EMPTY无法通过 USB 串行在 Linux 上运行。

我如何知道何时应该写入流?我可能错过了任何指标吗?

到目前为止,我同时写作和阅读的经验并不是很好。DATA_AVAILABLE有谁知道我在流上写入时是否应该锁定处理程序不被调用?或者RxTx接受并发读/写?

linux rxtx

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

如何使用['key']表示法向对象添加属性?

JavaScript文档声明,为了向现有对象添加属性,您可以执行以下操作.

data["property"] = value;
Run Code Online (Sandbox Code Playgroud)

要么

data.property = value;
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我试图在添加之前将我的模型ID(由服务器接收)转换为字符串,例如:

data.model[id.toString()] = false;
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Uncaught TypeError: Cannot set property '1' of undefined
Run Code Online (Sandbox Code Playgroud)

我最初虽然这是因为你不能使用字母数字字符串或某种奇怪的限制,所以我尝试用一​​个字母为我的ID添加前缀,例如:

var id = 'k' + id.toString();
Run Code Online (Sandbox Code Playgroud)

仍然不起作用!但是,当我使用Chrome的控制台面板并手动执行此操作时,例如:

var data = {};
var data['1'] = false;
Run Code Online (Sandbox Code Playgroud)

这有效,所以我做错了什么?

data.['key'] = value;无论如何,运营的官方名称是什么?这有助于了解何时向Google寻求帮助.


更新1:好的,似乎可能是由于以下原因:

var data = localStorage.getItem('model.state');
Run Code Online (Sandbox Code Playgroud)

当我将其更改为:

var data = {};
Run Code Online (Sandbox Code Playgroud)

它突然开始起作用了!


更新2:我看到我做错了什么(但仍然不确定为什么它给了我一个'未定义'错误......任何人?).

我做了以下事情:

var data = localStorage.getItem('model.state');
if (data) data = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)

它开始按预期工作.对不起...感谢大家的帮助!

javascript

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