小编mip*_*adi的帖子

Linux内核模块中的文件I/O.

我正在编写一个需要打开和读取文件的Linux内核模块.实现这一目标的最佳方法是什么?

file-io kernel-module linux-kernel

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

在Git中,有没有办法获得任意提交的"友好"名称?

在Git中,有很多方法可以引用提交,包括完整的SHA哈希或哈希的缩写形式(例如,前6个字符左右).您还可以使用"友好"语法命名提交,例如HEAD,HEAD ^,HEAD ^^,HEAD~3等.

给定SHA哈希表单中的任意提交,Git中是否有工具为所述提交找到"友好"名称?

如果我使用git-show-branch,我会以"友好"的形式获得一份修订清单,所以我觉得必须有办法...我找不到工具来做到这一点.

git

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

使用窗口关闭按钮完全关闭OS X应用程序

当用户在运行时使用应用程序关闭文档窗口时,我需要完全关闭我的应用程序.

目前,当他们单击窗口时,应用程序保持打开状态并显示其菜单栏.我在iOS上阅读了这篇文章,并在plist文件中添加了一个条目:http: //developer.appcelerator.com/question/40081/ios4---make-app-not-run-in-background

当用户关闭文档窗口时,关闭整个应用程序的最简单方法是什么?

macos xcode objective-c

19
推荐指数
2
解决办法
8423
查看次数

在内部访问实例变量时,我应该使用属性还是直接引用?

说我有这样一个类:

@interface MyAwesomeClass : NSObject
{
@private
    NSString *thing1;
    NSString *thing2;
}
@property (retain) NSString *thing1;
@property (retain) NSString *thing2;
@end

@implementation MyAwesomeClass
@synthesize thing1, thing1;
@end
Run Code Online (Sandbox Code Playgroud)

在访问thing1thing2 内部(即,在实现中MyAwesomeClass)时,最好是使用属性,还是直接引用实例变量(假设我们不在"自定义"访问或更改器中进行任何工作的情况,即,我们只是设置并获取变量).在Pre-Objective C 2.0之前,我们通常只是直接访问ivars,但现在通常的编码风格/最佳实践是什么?如果实例变量/属性是私有的并且在类之外根本无法访问,那么此建议是否会更改?您是否应该为每个ivar创建一个属性,即使它们是私有的,或仅用于面向公众的数据?如果我的应用程序不使用键值编码功能(因为KVC仅触发属性访问),该怎么办?

我有兴趣超越低级技术细节.例如,给定(次优)代码如:

@interface MyAwesomeClass : NSObject
{
    id myObj;
}
@proprety id myObj;
@end

@implementation MyAwesomeClass
@synthesize myObj;
@end
Run Code Online (Sandbox Code Playgroud)

我知道这myObj = anotherObject在功能上是一样的self.myObj = anotherObj.

但是,属性不仅仅是用于指示编译器为您编写访问器和更改器的花哨语法; 它们也是一种更好地封装数据的方法,也就是说,您可以更改类的内部实现,而无需重写依赖于这些属性的类.我对处理类本身内部代码时解决此封装问题重要性的答案很感兴趣.此外,正确编写的属性可以触发KVC通知,但不会直接进行ivar访问; 这很重要,如果我的应用程序没有使用KVC功能现在,以防万一它可能在未来?

oop objective-c

17
推荐指数
2
解决办法
3834
查看次数

为什么 Pip 声称某个 Python 版本不在给定范围内?

我使用的是 Python 3.8.7 和最新版本的 Pip,v21.0.1。我编写了一个包含以下 Python 版本约束的包:

python_requires='>=3.6, <3.9',
Run Code Online (Sandbox Code Playgroud)

当我尝试安装该软件包时,Pip 拒绝并打印以下错误:

ERROR: Package 'my-package' requires a different Python: 3.8.7 not in '<3.9,>=3.6'
Run Code Online (Sandbox Code Playgroud)

在安装具有类似版本限制的其他软件包时,我看到了类似的错误:

ERROR: Package 'my-other-package' requires a different Python: 3.8.7 not in '!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,<3.9,>=2.7'
Run Code Online (Sandbox Code Playgroud)

显然 Python 3.8.7大于3.6 且小于 3.9,那么为什么 Pip 声称需要不同版本的 Python?


一些调查表明这可能是一条不准确的错误消息。我已经运行了一个实验,使用具有以下依赖关系的包:

  • package-a 需要 Python >= 3.6,并且依赖于 package-b;
  • package-b 需要 Python >= 3.6 且 < 3.9。

我发现使用 Python 3.9 安装 package-a 时,收到以下错误:

ERROR: Package 'package-a' requires a different Python: 3.9.0 not in '>=3.6'
Run Code Online (Sandbox Code Playgroud)

所以基本上,package-a 不能与 Python 3.9 …

python pip python-3.x

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

如何创建一个解析器组合器,其中行结尾很重要?

我正在创建一个DSL,并使用Scala的解析器组合库来解析DSL.DSL遵循简单的类似Ruby的语法.源文件可以包含一系列看起来像这样的块:

create_model do
  at 0,0,0
end
Run Code Online (Sandbox Code Playgroud)

线路结尾在DSL中很重要,因为它们被有效地用作语句终止符.

我写了一个Scala解析器,看起来像这样:

class ML3D extends JavaTokenParsers {
  override val whiteSpace = """[ \t]+""".r

  def model: Parser[Any] = commandList
  def commandList: Parser[Any] = rep(commandBlock)
  def commandBlock: Parser[Any] = command~"do"~eol~statementList~"end"
  def eol: Parser[Any] = """(\r?\n)+""".r
  def command: Parser[Any] = commandName~opt(commandLabel)
  def commandName: Parser[Any] = ident
  def commandLabel: Parser[Any] = stringLiteral
  def statementList: Parser[Any] = rep(statement)
  def statement: Parser[Any] = functionName~argumentList~eol
  def functionName: Parser[Any] = ident
  def argumentList: Parser[Any] = repsep(argument, ",")
  def argument: Parser[Any] = stringLiteral …
Run Code Online (Sandbox Code Playgroud)

parsing scala parser-combinators

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

如何在一组Git补丁中修改文件路径?

我正在开发一个Git仓库,它是从SVN仓库中撤出的git svn.许多月前,SVN repo是从原始(上游)项目的源tarball创建的.原始项目具有如下文件结构:

/
  COPYING
  README
  src/
      ...many source files...
Run Code Online (Sandbox Code Playgroud)

然而,当创建SVN repo时,README文件等被剥离,并且应用程序是以src/root身份创建的,因此repo现在看起来像:

/
  ...many source files
Run Code Online (Sandbox Code Playgroud)

我最近将这个SVN repo转换为Git仓库.原始项目也在Git仓库中,我想开始跟踪上游更改,以便我可以轻松查看已进行的自定义更改(并将修补程序提交回原始项目,如果适用).我在上游回购中找到了我们的SVN repo创建的提交,所以现在我想将我们的更改应用于该提交(在分支中).我可以轻松地创建一组补丁git format-patch并将其应用于克隆的上游repo ...除了文件结构不同,因此补丁不再指向正确的文件.有没有办法将补丁应用git format-patchsrc/克隆回购中的目录?(请注意,Git补丁也有必要的信息,如原作者姓名,电子邮件和日期,我也想申请,而不是手工完成,即乱搞GIT_AUTHOR_EMAIL等)

git

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

Pythonic实现tokenizer的方法

我将在Python中实现一个tokenizer,我想知道你是否可以提供一些样式建议?

我之前在C和Java中实现了一个标记化器,所以我对理论很好,我只想确保我遵循pythonic样式和最佳实践.

列出令牌类型:

例如,在Java中,我会有一个像这样的字段列表:

public static final int TOKEN_INTEGER = 0
Run Code Online (Sandbox Code Playgroud)

但是,显然,我没有办法(我认为)在Python中声明一个常量变量,所以我可以用普通的变量声明替换它,但这并没有让我成为一个很好的解决方案,因为声明可能会被改变.

从Tokenizer返回令牌:

有没有更好的替代方案,只需返回一个元组列表,例如

[ (TOKEN_INTEGER, 17), (TOKEN_STRING, "Sixteen")]?
Run Code Online (Sandbox Code Playgroud)

干杯,

皮特

python coding-style tokenize

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

如何让Django管理员的"在网站上查看"链接工作?

我已经使用Django应用程序了一段时间,Django管理界面工作得很好,除了 "在网站上查看"链接不起作用.每当我尝试使用它时,我会收到一条OperationalError消息:no such table: django_site.我已经对这个问题进行了一些研究,似乎我必须为这个链接设置Django站点框架才能工作,但我确定如何做到这一点.文档讨论了数据库表等,但它没有说明如何实际设置站点.所以我的问题实际上是双重的:

  1. 如何设置站点框架?我是否必须自己创建表(并自己输入数据),或者我必须启用./manage.py syncdb哪些内容以便自动"检测"我想要设置表格?
  2. 当我在本地开发时(即,只是在localhost上运行而不是在我的实际域名上运行),设置站点框架会影响我吗?请问我要补充的东西settings.py喜欢SITE_ID = 2 if DEBUG else 1,或将manage.py只检测到我正在调试的网站,而不是做网站架构什么?

django django-admin django-sites

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

是否有用于解析AutoCAD文件的库?

是否有用于解析AutoCAD文件(DWG或DXF)的库(最好是开源)?

autocad

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