小编Joh*_*iss的帖子

将uiview作为子视图添加到主视图中

我想为UIView现有视图添加一个小尺寸作为子视图.

UIViewController推了一个nib名称,这是主视图,我正在尝试创建一个对象UIView并使用以下代码在viewDidLoad视图控制器的方法中分配它

UIView *view = [[UIView alloc] init];
Run Code Online (Sandbox Code Playgroud)

但是UIView如果我强行键入并运行,这个想法并不是建议分配和抛出错误

这个你能帮我吗

iphone

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

仅记录Postgres中的用户查询

我在Postgres数据库中启用了日志记录(在Ubuntu 32位上运行),我只想记录用户应用程序执行的查询.我配置了postgres如下:

log_destination = 'syslog'
syslog_facility = 'L*emphasized text*OCAL0'
syslog_ident = 'postgres'
log_min_messages = notice
log_min_duration_statement = 0
log_duration = off
log_line_prefix = 'user=%u,db=%d '
log_statement = 'none'
Run Code Online (Sandbox Code Playgroud)

syslog.conf我已经配置为每个日志local0被重定向到/var/log/pgsql.

但是,Postgres记录了很多我不关心的查询,例如:

WHEN typbasetype=0 THEN oid else typbasetype END AS
Sep 16 12:22:28 or-ubuntu postgres[14086]: [11-2]  basetype
Sep 16 12:22:28 or-ubuntu postgres[14086]: [11-3] ^I  FROM pg_type WHERE oid=1043
Sep 16 12:22:28 or-ubuntu postgres[14086]: [12-1] user=postgres,db=prueba LOG:  duración: 0.361 ms sentencia: SELECT format_type(oid,-1) as typname FROM pg_type …
Run Code Online (Sandbox Code Playgroud)

postgresql logging

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

不能让C2HS与"外国"指针一起工作

一般信息

我目前正在试验Haskell的C-> Haskell(C2HS)接口生成器.在第一次,这真是太棒了,我extern C在几个小时内连接了一个相当复杂的C++库(使用一个小型的包装器).(之前我从未做过任何FFI.)

只有一个问题:如何释放在C/C++库中分配的内存?我{#pointer ... foreign #}C2HS文档中找到了,它看起来与我追求的完全一样.由于我的C-wrapper将C++库转换为具有参考透明度和功能接口的库,Haskell Storage Manager应该能够为我做好工作:-).不幸的是,我无法让这个工作.为了更好地解释我的问题,我在GitHub上设置了一个小的演示项目,它具有与C/C++库+包装器相同的属性,但没有开销.如您所见,该库与pure unsafeFFI 一起使用是完全安全的.

演示项目

在GitHub上,我创建了一个小型演示项目,其组织如下:

C库

C库非常简单和无用:你可以传递一个整数,你可以[0..n]从库中获取尽可能多的整数(当前).记住:图书馆没用,只是一个演示.界面也很简单:函数LTIData lti_new_data(int n)将(在传递一个整数之后)返回一些包含C库分配数据的不透明对象.图书馆还拥有两个存取函数int lti_element_count(LTIData data)int lti_get_element(LTIData data, int n),前者将返回元素的数量,而后者将返回元素n.嗯,最后但并非最不重要的,该库的用户应该使用它后释放不透明的LTIData使用void lti_free_data(LTIData data).

低级Haskell绑定

使用C2HS设置低级Haskell绑定,您可以在其中找到它

高级Haskell API

为了好玩,我还使用低级API绑定和使用高级API的简单驱动程序设置了一种高级Haskell API.使用驱动程序和例如valgrind,可以很容易地看到泄漏的内存(对于库执行分配的每个参数;可以轻松观察如下):p_1, p_2, ..., p_n\sum_{i …

haskell ffi c2hs

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

使用管道的顺序二进制数据解码

目标是使用具有以下类型签名的管道

protobufConduit :: MonadResource m => (ByteString -> a) -> Conduit ByteString m a
Run Code Online (Sandbox Code Playgroud)

管道应重复解析ByteString -> a通过TCP/IP(使用network-conduit包)接收的协议缓冲区(使用该功能).

有线消息格式是

{length (32 bits big endian)}{protobuf 1}{length}{protobuf 2}...
Run Code Online (Sandbox Code Playgroud)

(花括号不是协议的一方,仅用于分隔实体).

第一个想法是使用sequenceSink重复应用Sink能够解析一个ProtoBuf:

[...]
import qualified Data.Binary         as B
import qualified Data.Conduit.Binary as CB
import qualified Data.Conduit.Util   as CU

protobufConduit :: MonadResource m => (ByteString -> a) -> Conduit ByteString m a
protobufConduit protobufDecode =
    CU.sequenceSink () $ \() ->
        do lenBytes <- CB.take 4                                -- read protobuf …
Run Code Online (Sandbox Code Playgroud)

haskell protocol-buffers conduit

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

合并两个RACSignals,在首次完成时完成

我有两个RACSignal,其中一个是计时器,另一个表明有工作要做.由于工作指示有时不可靠,因此有计时器,如果精确通知不起作用,则需要注意定期完成工作.

一般设置是:

    RACSignal *signal = [RACSignal merge:@[
                         [[RACSignal interval:0.5 onScheduler:[RACScheduler scheduler]]
                           filter:^BOOL(__unused id _x) {
                               return isThereAProblemInDeliveringWork();
                           }],
                         incomingWorkSubject
                         ]];
Run Code Online (Sandbox Code Playgroud)

现在我想signal尽快incomingWorkSubject完成.因此,通常:一旦完成任何输入信号,就完成合并信号.不幸的是,[RACSignal merge:...]没有做我想要的,显然等待所有输入信号完成.

ReactiveCocoa实现这一目标的方式是什么?

objective-c reactive-programming reactive-cocoa

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

使用解析器组合器解析具有函数应用程序的表达式语法(左递归)

作为真实语言解析器的简化子问题,我试图为虚构语言的表达式实现一个解析器,它看起来类似于标准命令式语言(如Python,JavaScript等).其语法具有以下构造:

  • 整数
  • 标识符([a-zA-Z]+)
  • +*和括号的算术表达式
  • 结构访问.(例如foo.bar.buz)
  • 元组(例如(1, foo, bar.buz))(删除歧义一元组写成(x,))
  • 功能应用(例如foo(1, bar, buz()))
  • 函数是第一类的,因此它们也可以从其他函数返回并直接应用(例如foo()(),因为foo()可能返回函数是合法的)

所以这个语言中的一个相当复杂的程序是

(1+2*3, f(4,5,6)(bar) + qux.quux()().quuux)
Run Code Online (Sandbox Code Playgroud)

相关性应该是

( (1+(2*3)), ( ((f(4,5,6))(bar)) + ((((qux.quux)())()).quuux) ) )
Run Code Online (Sandbox Code Playgroud)

我目前正在使用非常好的uu-parsinglib应用解析器组合器库.

第一个问题显然是直观的表达式语法(expr -> identifier | number | expr * expr | expr + expr | (expr)左递归.但我可以使用pChainl组合器解决这个问题(参见parseExpr下面的例子).

剩下的问题(因此这个问题)是函数应用程序,其函数返回其他函数(f()()).同样,语法是递归的expr -> fun-call | ...; fun-call -> …

parsing haskell parsec recursive-descent uu-parsinglib

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

是否有独立于平台的非阻塞方式来判断文件描述符是否为磁盘文件(常规/目录)

我正在寻找文件描述符的类型,而不会在内核中阻塞。我知道我可以使用,fstat(2)fstat也会获得各种元数据信息(访问时间等),这些信息可能会阻塞任意时间(尤其是在联网文件系统上)。

编辑:我正在寻找一个系统调用来执行此操作,生成一个单独的进程是不可接受的,因为生成一个进程并读取其结果肯定不是即时的。

唯一一点我需要知道的信息是真的,如果该文件描述符是一个磁盘上的“文件”( ,S_IFREGS_IFLNK),S_IFDIR或者没有。另外,如果我能说出它是套接字(S_IFSOCK),fifo(S_IFIFO)还是字符设备(S_IFCHR),也可以。

我非常确定任何内核都可以随时获得此信息,并且我很感兴趣是否可以在不阻塞的情况下将其显示到用户空间。

便携式解决方案(至少为macOS和Linux)将不胜感激。

谢谢!

unix linux macos posix file-descriptor

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

扩展Eclipse的JavaEditor(像Vim /更改KeyListener一样)

简介又名我打算做什么

随意跳过这一部分,这里没有真正的信息

由于vimEclipse(3.4)中缺少一个好的,免费的(如语音)-Mode,因此我正在考虑编写一个.可用的解决方案是:

(但是请随意提及除上述解决方案之外的其他解决方案.)

在我看来,编写一个全新的编辑器的方法是错误的TextEditor,因为你将放弃标准JavaEditor免费提供的很酷的功能(例如'组织导入','重构菜单',......).

我正在考虑普通JavaEditor的"皮肤",其行为类似vim,其他一切都应该保持不变.

现在的问题

java eclipse vim eclipse-plugin eclipse-rcp

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

在SIGILL处理程序中,如何跳过违规指令?

我要进行JIT代码生成,并且我想在流中插入无效的操作码以执行一些元调试.一切都很好,直到它达到指令,此时东西进入无限循环的非法指令信号处理程序和返回.

有什么方法可以设置简单地跳过错误的指令吗?

linux jit code-generation signals

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

python电子邮件错误

我正在尝试通过电子邮件发送结果文件.我收到导入错误:

Traceback (most recent call last):  
  File "email_results.py", line 5, in ?  
    from email import encoders  
ImportError: cannot import name encoders  
Run Code Online (Sandbox Code Playgroud)

我也不确定如何连接到服务器.有人可以帮忙吗?谢谢

#!/home/build/test/Python-2.6.4
import smtplib
import zipfile
import tempfile
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

def send_file_zipped(the_file, recipients, sender='myname@myname.com'):
 zf = tempfile.TemporaryFile(prefix='mail', suffix='.zip')
 zip = zipfile.ZipFile(zf, 'w')
 zip.write(the_file)
 zip.close()
 zf.seek(0)

 # Create the message
 themsg = MIMEMultipart()
 themsg['Subject'] = 'File %s' % the_file
 themsg['To'] = ', '.join(recipients)
 themsg['From'] = sender …
Run Code Online (Sandbox Code Playgroud)

python

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