我无法找到以下的授权解释,微格式或指南,所以我把它打开了.如果我错过了什么,请说出来!
假设您有一个HTML页面,其中包含<pre>元素中某些编程源代码的示例:
<pre>
# code...
</pre>
Run Code Online (Sandbox Code Playgroud)
(更新:正如Pekka在下面指出的那样,<code>可能会比<pre>以下示例/讨论更好.但正如Brian Campbell指出这两个元素当然应该用于预先格式化的代码)
<pre>块的内容是什么?这将是以语义一致的方式包含在标记中的有用信息.
从语义的角度来看,明显的选择是使用lang属性:
<pre lang="ruby">
Run Code Online (Sandbox Code Playgroud)
但根据HTML 4规范,第8.1.1节:
lang属性的值是标识自然语言的语言代码[...]计算机语言明确地从语言代码中排除.
(强调我的)
此外,"ruby"无论如何都不是标准的语言代码.
该规范允许使用x主标记添加"实验"或"私人使用"代码.规范的例子是lang="x-klingon".
从理论上讲,你可以使用x-ruby,x-java等等来声明<pre>块中包含的lang编程语言- 除了看起来一般情况下使用该属性编程语言的规范.
关于该主题的HTML 5规范并没有更清楚.规范本身没有明确提到"自然"与"编程"语言.相反,它将读者引用到BCP 47,它再次声明:
语言标签用于帮助识别语言[...],但不包括主要用于人类交流的语言,例如编程语言.
但是,它继续提及(在第4.1节,第56页)zxx主要语言子标签,其中:
标识语言分类不适合或不适用的内容.一些示例可能包括乐器或电子音乐或编程源代码.
(强调我的)
同样,规范似乎与自身相矛盾,但它开辟了使用zxx-x-ruby(或类似)作为一种完全符合规范的方式的可能性,既宣称要用语言编写的东西(只是不是人类的语言)和声明特定的(涉及非人类语言.
(StackOverflow告诉我这个问题是"主观的,可能会被关闭"......好吧,无论如何,我会试一试)
我正在编写一堆辅助方法(对于TextMate包),我想(并且我需要)将它们整齐地命名为.
这些方法实际上只是函数,即它们不在自己范围之外的任何东西上运行,因此并不真正属于一个类.没有什么需要实例化的.
到目前为止,我一直在这样做,这很好
module Helpers::Foo
module_function
def bar
# ...
end
end
Helpers::Foo.bar # this is how I'd like to call the method/function
Run Code Online (Sandbox Code Playgroud)
但是它会更好:
1.跳过module_function并声明方法/功能为self.*?
2.或者声明一个类而不是一个模块会更好吗?
3.还是使用class << self(在模块或类中)?
还是别的什么呢?
我意识到这是一个非常开放的问题,但我真的只是想听听人们在做什么.
更新:解决方案如下
假设您有Finder中所选项目的列表.假设有一些文件,文件夹,各种捆绑包,甚至包含在选择中的一些应用程序.
现在说你只想要那些(在UNIX术语中)目录的项目.也就是说,你只需要cd在终端中可以使用的物品.
您可以检查每个项目的kind属性,看它是否等于"文件夹",但这对应用程序包或其他包/包不起作用,尽管它们实际上是"文件夹"(目录)
如果项目是实际文件对象(而不是别名),则可以检查每个项目的class属性...除了并不总是有效之外,因为bundle现在是"文档文件"实例,而应用程序是"应用程序文件"实例.
如果你只有一个别名列表而不是实际的文件对象,那就更糟了,因为你无法检查class属性; 它总是只会说"别名".
我能想到的唯一解决方案是获取每个项目的POSIX路径,并查看它是否有正斜杠,或者将其路径发送到用不同语言编写的脚本,这可以检查某个目录是否是某个目录或不.
这两个想法对我来说都很疯狂.检查尾随斜杠是非常hacky和脆弱的,并将所有内容提供给不同的脚本是完全矫枉过正的.
更新: Asmus建议下面看起来确实是唯一一个很好的解决方案,因为似乎AppleScript无法自行解决这个问题:
do shell script "file -b " & filePosixPath
Run Code Online (Sandbox Code Playgroud)
这将返回文件夹,包,应用程序,软件包等的字符串"目录".
但请注意(!)对于磁盘,它返回"粘性目录".
这是一个非常好用的通用函数
on isDirectory(someItem) -- someItem is a file reference
set filePosixPath to quoted form of (POSIX path of (someItem as alias))
set fileType to (do shell script "file -b " & filePosixPath)
if fileType ends with "directory" then return true
return false
end isDirectory
Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序列出了一些模型NSTableView.
该表是一个完全标准的基于视图的表,包含几列,并通过NSArrayController使用绑定进行填充.所有这些都是在Interface Builder中设置的,它可以正常工作.
现在,我想以编程方式添加更多列,并将这些新列绑定到模型中的各种键路径.在那里,我被困住了.
为简单起见,假设此设置:
namemodels),它包含许多Model实例.content绑定到应用程序委托的models数组.content绑定到阵列控制器arrangedObjects.name属性,即列→表格单元格视图→静态文本表格视图单元格→ 值绑定到表格单元格视图的objectValue.name据我所知,这是直截了当的,并且通过这本书,它就像一个魅力.
但是......如何添加更多列呢?
要以编程方式添加列(为了简单起见,我们只是说这个新列也应该只显示name属性,就像已经存在的列一样),我想我会在app delegate中做这样的事情:
NSTableColumn* newColumn = [[NSTableColumn alloc] initWithIdentifier:@"newColumn"];
// do binding magic somehow
// [[newColumn dataCell] bind:NSValueBinding toObject:??? withKeyPath:??? options:nil];
[self.table addColumn:newColumn]; // the table's connected with an IBOutlet
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多从/到数据单元,表,列,数组控制器,数组本身以及各种键路径的绑定组合,但没有任何作用.新列添加得很好,但它从未填充过.
我想我创建的基本NSTableColumn实例是基于单元格的,而不是基于视图的,这会造成麻烦.但是,我不知道如何从这里开始,文档从不谈论以编程方式添加的绑定列.
在这种情况下,我想要的只是一个简单的文本列,绑定到模型,就像我可以轻松设置IB的那样.
我可以通过实现NSTableViewDataSource和"手动"输入表来完成所有这些操作,但我已经完成了其他所有已经设置的绑定.
任何帮助将不胜感激.
我用这种方式组织了一些js文件(参见源代码):
gmaps4rails.base.js :包含所有逻辑
gmaps4rails.googlemaps.js :包含函数
gmaps4rails.bing.js :包含与前一个文件同名的函数
所以基本上,base要求createMarkers()其在两个googlemaps和bing.
从现在开始,我加载中只有一个是gmaps4rails.googlemaps.js和gmaps4rails.googlemaps.js,取决于地图API,我需要,所以它工作正常.
现在我希望能够加载所有文件(并将它们分开)但当然只包含所需地图API的代码.
基本上我想的是:
if desiredApi == "googlemaps"
include GoogleMapsNameSpace content in BaseNameSpace
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我已经设置了带有--api标志的Rails 5(5.0.0.rc1)应用程序.它使用Warden进行身份验证.
这一切都有效,除了当Warden身份验证失败时,响应未被正确记录.日志看起来像这样:
Started GET "/widgets.json" for ::1 at 2016-06-14 11:38:20 +0000
Processing by WidgetsController#index as JSON
Completed in 0ms (ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)
或者,在生产中:
I, [2016-06-14T14:12:54.938271 #17625] INFO -- : [db39f895-eeb1-4861-91d0-5d52c124e37a] Completed in 1ms (ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)
它当然应该说Completed 401 Unauthorized in...,但无论出于何种原因,它都不知道响应的状态代码.
Warden身份验证错误被发送到Rack兼容的ActionController::Metal控制器,非常简单:
class UnauthorizedController < ActionController::Metal
include ActionController::Head
def self.call(env)
@respond ||= action(:respond)
@respond.call(env)
end
def respond
head :unauthorized
end
end
Run Code Online (Sandbox Code Playgroud)
它使用基本head方法来响应(不需要渲染任何东西),所以可能它的行为与head在常规Rails控制器中使用的行为相同.但不是.
如果我尝试使用redirect_to ...或render ...(包括相关模块之后)也会发生同样的事情.所以在Rack→Rails→Warden→Warden failure app(控制器)的某个地方,响应的状态代码丢失了.日志知道开始记录请求,并知道它已被处理,因为它显然吐出了"已完成..." - …
我正在开发一个内部Rails应用程序,它是(除其他外)一个CRM应用程序,因此它包含客户和其他联系人的姓名,地址等.
一个简洁的功能是允许客户端提取/搜索这些联系人,例如电子邮件程序和地址簿应用程序(即只是简单的只读访问).
我们的想法是使用LDAP或CardDAV,但我没有太多(最近)有关如何实现它的信息.
对于CardDAV,我基本上没找到任何东西.
对于LDAP,我发现了大量的LDAP 客户端宝石和插件,但只有少数LDAP 服务器实现.到目前为止我发现的是纯粹的Ruby LDAP服务器和LDAP-ActiveRecord-gateway,它建立在前者之上.
后者听起来很适合这张票,但它明确地说"没有替换就贬值"(今年6月).它可能仍然有用,但我不能说我太热衷于使用它,因为它已经被抛弃了.
所以我想知道那里有没有更近的东西?我可以使用一些自动化宝石或插件吗?或者我可以挖掘的一些线索,提示或教程?虽然我不是自己写的东西,但我宁愿避免这样做.
我正在尝试创建一组半复杂的视图动画(想想一个NSMatrix表单的动画版本,其中行在添加或删除其他行时滑动),并构建动画我正在制作一个小帮助类.
在那里,我必须跟踪不同的视图,他们的有序索引,以及与他们的动画相关的一些其他值.
为此,我正在使用一个NSArray实例来跟踪视图的排序(索引),并且我想使用NSDictionary带有视图作为键来跟踪值(值本身在嵌套字典中) ).即我希望能够做一些这样的事情,例如(伪代码):
NSMutableDictionary* viewValuesDict = [NSDictionary dictionary];
// Loop thru an ordered NSArray
for( (NSView*) view in viewsArray ) {
// Get some values we'll need later
NSDictionary* associatedValues = [view getSomeValues];
// ...and put them into viewValuesDict...
[viewValuesDict setObject:associatedValues forKey:view];
// and then things break because the NSView 'view'
// doesn't support copyWithZone.... darn
}
Run Code Online (Sandbox Code Playgroud)
问题是,我当然不能将NSView实例用作字典键,因为键是使用添加的copyWithZone,而NSView不是实现.
那么,为NSView实例获取唯一键的好方法是什么?我可以想象使用,[obj description]因为你得到的内存地址是一个完美的UID,但当然系统必须使用任何类型的NSView子类,可能完全返回其他东西,所以这是不好的. …
我正在编写一个简单的QR代码生成器(只是为了好玩和学习一些Obj-C),我正在研究连接的"模块"的轮廓(即组成QR代码的黑色方块).这是为了获得更好的矢量输出,而不是简单地为每个模块制作一堆rects.
长话短说,我的大纲跟踪代码工作 - 但是,如果我确保在特定的地方调用NSLog!如果我删除NSLog-call,代码循环!我实际上除了记录之外什么都不做.我记录的内容并不重要; 我只需要打电话给NSLog或事情.
跟踪算法很简单:顺时针绕连接模块的形状.当你碰到一个角落时,向右转,直到你回到跟随形状的轮廓.再次到达起点时停止.形状可以有两个共享角点的模块.因此,跟踪循环将达到该点两次.这是预期的,代码正确处理它 - 如果我打电话NSLog.
否则,代码会说某个点在第一次看到它时是一个角落,而第二次不是一个角落,这会导致跟踪循环.检测是否某个角点不依赖于除了点的x和y坐标以及模块对象数组之外的任何东西 - 但是在跟踪进行时模块和数组都没有变化,所以给定相同的x,你应该总是得到相同的结果.它确实 - 如果我打电话NSLog.
没有NSLog,坐标 - 例如(10,9) - 是时刻的角落,稍后(10,9)突然没有被识别为角落.但是有一个NSLog-call,(10,9)正确每次都被视为一个角点.
再说一次:我绝对没有改变; 我只是记录一些东西 - 什么!突然它起作用了.这就像它说2 == 2是真还是假,除非我告诉它记录2和2,在这种情况下2 == 2总是正确,因为它应该是.
这是片状代码.脱离背景很难理解,但是有很多背景,所以我希望这已经足够了.一切都是整数(没有模糊的浮点值).
do { // start going around the shape
// If this isn't here or simply commented out, the code loops.
NSLog(@"foobar"); // doesn't matter what I log …Run Code Online (Sandbox Code Playgroud) cocoa ×3
objective-c ×2
ruby ×2
addressbook ×1
applescript ×1
html ×1
javascript ×1
ldap ×1
logging ×1
namespaces ×1
nsdictionary ×1
nslog ×1
nstableview ×1
nsview ×1
rack ×1
standards ×1
warden ×1
webdav ×1