自从我在新机器上安装了emacs以来,我看到了一个丑陋的行为.不幸的是,我的旧.emacs文件相当分散,我无法确定我是否曾经使用elisp来处理这个问题.
问题是这样的:过去我执行的命令会打开一个新的缓冲区,例如grep'ing,或点击搜索结果中的文件名,就会发生以下两种情况之一:
我希望这种行为回来.我现在得到的是以下内容:
Emacs将继续拆分窗口,直到打开四个缓冲区窗口.如果我不断地单击多个grep结果,它们打开的缓冲区窗口将循环通过另外三个(非grep-results)缓冲区窗口.如果他们只是在同一个位置打开,我会喜欢它:结果旁边/下面的"下一个"缓冲区窗口 - 每次都是相同的缓冲区窗口.
有关如何实现这种行为的任何想法?
我有一个关于popen(以及所有相关函数)的一般性问题,适用于所有操作系统,当我编写python脚本或一些c代码并从控制台(win或linux)运行生成的可执行文件时,我可以立即看到输出从过程中.但是,如果我运行与分支进程相同的可执行文件,并将其stdout重定向到管道,则输出缓冲到某处,通常最多为4096字节,然后将其写入父进程可以读取的管道.
以下python脚本将以1024字节的块生成输出
import os, sys, time
if __name__ == "__main__":
dye = '@'*1024
for i in range (0,8):
print dye
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
以下python脚本将执行前一个脚本,并在输出到管道时逐字节地读取输出
import os, sys, subprocess, time, thread
if __name__ == "__main__":
execArgs = ["c:\\python25\\python.exe", "C:\\Scripts\\PythonScratch\\byte_stream.py"]
p = subprocess.Popen(execArgs, bufsize=0, stdout=subprocess.PIPE)
while p.returncode == None:
data = p.stdout.read(1)
sys.stdout.write(data)
p.poll()
Run Code Online (Sandbox Code Playgroud)
调整操作系统的路径.在此配置中运行时,尽管popen命令的缓冲区大小设置为0(无论如何都是默认值),但输出不会以1024块显示,而是以4096块显示.任何人都可以告诉我如何改变这种行为吗?有什么方法可以强迫操作系统以与从控制台运行时相同的方式处理分叉进程的输出,即只需通过数据提供数据没有缓冲?
所以..我有一个MP3数据的缓冲区(如果我保存这个缓冲区,并将其称为buffer.mp3它将播放,但在这种情况下,我不应该将它保存到文件系统).我必须玩它,但我不能,我该怎么办?
我尝试了下一个代码来播放该缓冲区(ByteArray\Stream)(我从服务器获取MP3数据,获取数据的方法工作正常(在文本int上测试等)我调用返回的ByteArray readResponse,因为我有一些seading方法,它是这是回应).
protected function Play(event:MouseEvent):void
{
var mySound:Sound = new Sound();
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA, soundFill);
mySound.play();
}
public function soundFill(event:SampleDataEvent):void
{
event.data.writeBytes(readResponse.buffer, 0, readResponse.buffer.length);
}
Run Code Online (Sandbox Code Playgroud) 我曾经能够使用该命令快速在Emacs中打开一个新的缓冲区 C-x b <non existent buffer name>
不知怎的,我在我的Emacs版本(23.1)中打破了这个.当我尝试这样做时,我[No match]在命令缓冲区中获取消息.
有谁知道我可能已经做了什么来打破这个功能,或者我有可能想到能够做到这一点?
我通常喜欢使用缓冲区编号快速进入缓冲区.不幸的是,经过多次搜索,打开一些文件等,缓冲区数字变得疯狂:
谢谢.
我想重新定义现有函数foo,但仅限于特定缓冲区.
(defun foo ()
(message "Not done:("))
Run Code Online (Sandbox Code Playgroud)
我正在跳这个会做:
(make-local-variable 'foo)
(fset 'foo #'(lambda () (message "Done!")))
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.有任何想法吗?
[编辑:或者,因为函数绑定到一个键,只需修改当前缓冲区的绑定就足够了.但我不明白该怎么做.本地键映射由主模式中的所有缓冲区共享.修改它会修改具有此主要模式的所有缓冲区中的绑定.
我能想到的唯一丑陋的解决方案是为整个缓冲区设置一个keymap text-property.这是继续进行的唯一途径吗?]
我正在使用http post方法向Http Server URL发送请求.
请求和响应之间的时间差大约为60秒,但根据服务器团队,一旦请求到达,他们将发送响应7秒.
我不认为网络在服务器端需要剩余53秒的时间才能到达数据包,因此可能出现问题.
在此应用程序中,我们在客户端和服务器之间使用同步通信.请提供以下详细信息.
编辑:当我在网络中使用wireshark来捕获网络日志时,我发现它实际上是我的应用程序发送到服务器后20秒内在wireshark中进行了学习.这种延迟背后的原因是什么?什么原因可能是请求在网络中出现20秒实际发送延迟的可能原因.
我使用Python deque()来实现一个简单的循环缓冲区:
from collections import deque
import numpy as np
test_sequence = np.array(range(100)*2).reshape(100,2)
mybuffer = deque(np.zeros(20).reshape((10, 2)))
for i in test_sequence:
mybuffer.popleft()
mybuffer.append(i)
do_something_on(mybuffer)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种简单的方法可以使用Series(或DataFrame)在Pandas中获得相同的东西.换句话说,如何在末尾有效地添加单行并在a Series或DataFrame?的开头删除单行?
编辑:我试过这个:
myPandasBuffer = pd.DataFrame(columns=('A','B'), data=np.zeros(20).reshape((10, 2)))
newpoint = pd.DataFrame(columns=('A','B'), data=np.array([[1,1]]))
for i in test_sequence:
newpoint[['A','B']] = i
myPandasBuffer = pd.concat([myPandasBuffer.ix[1:],newpoint], ignore_index = True)
do_something_on(myPandasBuffer)
Run Code Online (Sandbox Code Playgroud)
但它比deque()方法慢得多.
我读到缓冲区是字节序列.但我也读到Stream也是字节序列.那么Stream和Buffer之间有什么区别?
我有来自传感器设备(例如视频)的每秒大量字节,这些传感器设备正由Docker容器中的进程读取和处理.
我有一个想要读取已处理字节流的第二个Docker容器(仍然是每秒大量字节).
什么是读取此流的有效方法?理想情况下,我想让第一个容器写入第二个容器可以读取的某种共享内存缓冲区,但我不认为单独的Docker容器可以共享内存.也许有一些共享文件指针的解决方案,文件保存到内存文件系统?
我的目标是尽可能地提高性能并尽可能减少从一个缓冲区到另一个缓冲区的无用数据副本.
编辑:很想拥有Linux和Windows的解决方案.同样,我有兴趣在C++和python中找到解决方案.