我已经按照GitHub说明设置了我的帐户,我可以克隆,但我无法远程推送.
当我执行"git push"时,我收到403错误.它具有正确的URL.我尝试了一个"git credential-osxkeychain get"来查看它给出的内容,并打印出错误的凭据.
我相信发生的事情是它第一次要求凭据,我认为这是另一个应用程序要求,并且它将错误的应用程序放入其中.
我只需要重置它,以便它为我的GitHub帐户使用正确的钥匙串项.
我试过了:
git credential-osxkeychain erase
git credential-osxkeychain set
Run Code Online (Sandbox Code Playgroud)
该程序从不给出任何提示.如果我不做正确的话,Set会说"输入错误".我尝试输入" password=password"等,但是当我做"获取"时,我仍然得到旧的.
我无法弄清楚这些存储的位置,因为它们不在.gitconfigure中.此外,最近没有钥匙链项目可能是它.(我的钥匙串中有几个GitHub帐户,它没有使用任何帐户.)
当我设置异常断点时,我没有收到异常消息.我如何获得异常消息?我已经知道如何获得堆栈跟踪,但这不包括异常消息.
在过去,我使用Xcode开发了iOS应用程序,当出现问题时,我会收到错误/异常.该异常通常会有一个消息,如"无法取消引用null"或其他任何内容.
现在,在过去几周内使用Xcode 4.6.x,我从未收到过异常消息.我经常会得到一个SIGABRT.我在异常断点处放置了它,它会在那里中断,但它在iOS SDK中的某个程序集中关闭,我从来没有收到消息.
事实上,我不记得上次看到调试器控制台中出现的任何内容.
迁移到LLVM时异常信息是否消失了?
让我的应用程序在SDK中崩溃而不知道原因是非常令人沮丧的.我检查最后一个函数,以确保正确设置(分配对象等),这意味着我没有任何线索.
是否可能从过去保留的构建设置以某种方式关闭异常消息?
在评论中给出了一个很好的答案.这应该被提升为完整答案,因此我可以将问题标记为已回答,而其他有此问题的人可以找到它.为了实现这一点,需要重新打开这个问题!(在那之后我会删除这个请求.)
基本方案是:我需要从数据库加载文本,然后将该文本转换为Elixir模块(或Erlang模块),然后调用它.该文本实际上与模块文件相同.所以这是一种热代码加载形式.我想编译"文件",然后加载生成的模块,然后调用它.后来我会把它卸下来.唯一的区别是代码存在于数据库中而不是磁盘上的文件中.(当我正在编写将加载它的代码时,它不存在.)
我知道Erlang支持热代码加载,但似乎专注于编译磁盘上的文件然后加载梁.我希望这是一个更动态的过程,我不会替换正在运行的代码,而是加载代码,然后运行它,然后卸载它.
Elixir中有几个工具用于在运行时评估代码.我正在试图弄清楚如何使用它们,文档有点稀疏.
Code.compile_string(string, "nofile")
Run Code Online (Sandbox Code Playgroud)
"返回元组列表,其中第一个元素是模块名称,第二个元素是其二进制元素".所以,现在我有了模块名称和它们的二进制文件,但我不知道如何将二进制文件加载到运行时并调用它们.我该怎么办?(我可以看到代码库中没有这个功能.)
可能我可以使用Erlang函数:
:code.load_binary(Module, Filename, Binary)  ->
           {module, Module} | {error, What}
Run Code Online (Sandbox Code Playgroud)
好的,所以这会返回一个带有原子"module"然后是Module的元组.如果从数据库加载的字符串定义了一个名为"Paris"的模块,那么我的代码将如何执行
paris.handler([parameters])
Run Code Online (Sandbox Code Playgroud)
既然我事先不知道会有一个名为巴黎的模块?我可以知道,通过让字符串"paris"也存储在数据库中这是名称,但是有没有办法调用模块,使用字符串作为你正在调用的模块的名称?
还有:
eval(string, binding // [], opts // [])
Run Code Online (Sandbox Code Playgroud)
其中评估字符串的内容.这个字符串可以是模块的整个定义吗?看来不是.我希望能够编写这样的代码,使其具有多个相互调用的函数 - 例如一个完整的小程序,具有预定义的入口点(可能是主要的,例如as"DynamicModule.handle([parameter,list])"
然后是EEx模块,它具有:
compile_string(source, options // [])
Run Code Online (Sandbox Code Playgroud)
这对做模板很有用.但最终它似乎只适用于有一个字符串并且你已经嵌入了Elixir代码的用例.它在选项的上下文中计算字符串并生成一个字符串.我正在寻求将字符串编译成一个或多个我可以调用的函数.(如果我只能创建一个很好的函数,那么该函数可以模式匹配或切换到执行其他所需的事情....)
我知道这是非常规的,但我有理由这样做,他们是好的.我正在寻找有关如何做到这一点的建议,但不需要被告知"不要那样做".看起来它应该是可能的,Erlang支持热代码加载,而Elixir非常动态,但我只是不知道语法或正确的函数.我将密切关注这个问题.提前致谢!
编辑基于第一个答案:
谢谢你的答案,这是一个很好的进展.正如Yuri所示,eval可以定义一个模块,正如José指出的那样,我可以使用代码eval来处理带有绑定的小部分代码.
被评估的代码(无论是否变成模块)都会相当复杂.它的开发最好是将其分解为函数并调用这些函数.
为了帮助,让我提供一些背景信息.假设我正在构建一个Web框架.从数据库加载的代码是特定URI的处理程序.因此,当HTTP调用进来时,我可能会加载example.com/blog/的代码.此页面可能涉及几个不同的内容,例如注释,最近发布的列表等.
由于许多人同时访问该页面,我正在产生一个处理每个页面视图的过程.因此,对于不同的请求,有很多时候可以同时评估该代码.
模块解决方案允许人们将代码分解为页面不同部分的函数(例如:帖子列表,注释等).我会在启动时加载模块一次,让许多进程产生该调用进去.该模块是全球性的,对吗?
如果已经定义了模块会发生什么?EG:模块更改时,有进程已调用该模块.
在iex中,我能够重新定义已经定义的模块:
iex(20)> Code.eval "defmodule A do\ndef a do\n5\nend\nend"
nofile:1: redefining module A
Run Code Online (Sandbox Code Playgroud)
如果我在运行时将模块重新定义到当前调用该模块的所有进程,会发生什么?此外,在正常操作中,这种重新定义是否会在iex之外工作?
假设重新定义模块会有问题,并且全局模块可能遇到命名空间冲突的问题,我研究了使用eval来定义函数.
如果我只能从数据库定义函数的代码,那么这些函数都在任何进程的范围内,并且我们没有全局冲突的可能性.
但是,这似乎不起作用:
iex(31)> q = "f = function do
...(31)> x, y when x > 0 -> x+y
...(31)> x, y -> …Run Code Online (Sandbox Code Playgroud) 在重新发明轮子之前,我正在寻找满足这些要求的开源项目的指针.
强烈偏爱轻量级的东西.在erlang中有很多过度的企业级解决方案,看起来他们需要花费很长时间来学习,因为我将从头开始重新创建这个(事实上,我基本上构建了一个解决这个问题的解决方案来回答某人另外在stackoverflow上的问题.我可以构建我所描述的内容,但这似乎是正好在erlang的设计中间的那些需求之一.)
我考虑过: - ejabbered - 更多的消息传递框架 - rabitmq - 理论上这样做,但每次我去他们的网站我都淹没在抽象的海洋中.它似乎准备好做所有事情.我甚至无法判断它是否有任何持久性.
编辑添加:这是使用储物柜进行分布式锁定的幻灯片.似乎它解决了问题的一个关键部分(如果想要自己推出.) http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking
进一步编辑: 我真的在寻找比RabbitMQ更轻量级的东西.我知道它可以做我想要的,但似乎学习它的成本与自己做的成本相当,最终定制解决方案将更接近我真正需要的.
XIB可以跨平台使用吗?
EG:我正在创建一个通用应用程序.在创建新的XIB时,Xcode希望我选择一个设备系列.
这个UI将在应用程序的两个版本中按原样使用,并且设备系列不是真正相关的(它是200x250像素并且可以在两个屏幕上显示).
如果我为设备系列选择iPad,这是否意味着在iPhone上运行时应用程序将看不到xib?
如果没有,我应该注意到哪些问题?
编辑:特别是在这个答案中,他们暗示设备系列嵌入在NIB本身,可能使其在"错误"平台上不可见:https://stackoverflow.com/a/10459556/1461211