有没有办法告诉使用C#文件是真实的还是符号链接?
我已经通过MSDN W32文档(http://msdn.microsoft.com/en-us/library/aa364232(VS.85).aspx)进行了挖掘,并且找不到任何可用于检查的内容.我从这里使用CreateSymbolicLink,它工作正常.
鉴于一个大型软件项目,其中包含以不同语言编写的多个组件,配置文件,配置脚本,环境设置和数据库迁移脚本 - 部署到生产的常见做法是什么?
有什么困难要考虑?可以使用Ant或Maven等工具简化流程吗?如何处理回滚和数据库管理?是否建议在生产环境中使用版本控制?
我想要一个List,Seq甚至Iterable是一个List的一部分的只读视图,在我的特定情况下,视图将始终从第一个元素开始.
List.slice,是O(n)原样filter.反正有做比这更好的-我不需要像任何操作+,-等刚apply,map,flatMap,等提供的子名单列表中理解语法.
是编写我自己的类的答案,其迭代器会计算结束的位置?
我有一个Builder类,可以让你添加到其中一个实例变量:
class Builder
def initialize
@lines = []
end
def lines
block_given? ? yield(self) : @lines
end
def add_line( text )
@lines << text
end
end
Run Code Online (Sandbox Code Playgroud)
现在,我该如何改变它
my_builder = Builder.new
my_builder.lines { |b|
b.add_line "foo"
b.add_line "bar"
}
p my_builder.lines # => ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)
进入这个?
my_builder = Builder.new
my_builder.lines {
add_line "foo"
add_line "bar"
}
p my_builder.lines # => ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud) 我正在编写一个用于嵌入式使用的大型C程序.该程序中的每个模块都有一个init()函数(如构造函数)来设置其静态变量.
问题是我必须记住从中调用所有这些init函数main().如果我出于某种原因对它们进行了评论,我也必须记得把它们放回去.
我有什么聪明才能确保所有这些功能都被调用?在每个init函数中放置一个宏的东西,当你check_inited()稍后调用一个函数时,如果没有调用所有的函数,它会向STDOUT发送一个警告.
我可以增加一个计数器,但我必须在某处保持正确数量的init函数,这也容易出错.
思考?
以下是我决定使用的解决方案,该线程中有来自几个人的输入
我的目标是确保实际调用所有的init函数.我想在不维护多个文件的模块列表或计数的情况下执行此操作.我不能像Nick D建议的那样自动调用它们,因为它们需要按特定顺序调用.
为此,每个模块中包含的宏使用gcc constructor属性将init函数名称添加到全局列表中.
init函数体中包含的另一个宏更新全局列表,以记录该函数实际被调用.
最后,在main()完成所有操作后调用check函数.
笔记:
我选择将字符串复制到数组中.这不是绝对必要的,因为传递的函数名称在正常使用中始终是静态字符串.如果内存很短,你可以只存储一个指向传入的字符串的指针.
我可重用的实用函数库叫做"nx_lib".因此所有'nxl'指定.
这不是世界上最有效的代码,但它只被称为启动时间,因此对我来说无关紧要.
需要向每个模块添加两行代码.如果省略任何一个,检查功能会通知您.
您可能能够将构造函数设置为静态,这样就无需为其提供在整个项目中唯一的名称.
这个代码只是经过了轻微的测试而且确实很晚,所以在信任之前请仔细检查.
谢谢至:
皮尔尔向我介绍了这个constructor属性.
Nick D用于演示##预处理器技巧并给我框架.
tod frye用于基于链接器的聪明方法,可以与许多编译器一起使用.
其他人帮助和分享有用的花絮.
nx_lib_public.h
这是我的库头文件的相关片段
#define NX_FUNC_RUN_CHECK_NAME_SIZE 20
typedef struct _nxl_function_element{
char func[NX_FUNC_RUN_CHECK_NAME_SIZE];
BOOL called;
} nxl_function_element;
void nxl_func_run_check_add(char *func_name);
BOOL nxl_func_run_check(void);
void nxl_func_run_check_hit(char *func_name);
#define NXL_FUNC_RUN_CHECK_ADD(function_name) \
void cons_ ## function_name() __attribute__((constructor)); \
void cons_ ## function_name() { nxl_func_run_check_add(#function_name); }
Run Code Online (Sandbox Code Playgroud)
nxl_func_run_check.c
这是用于添加函数名称并稍后检查它们的库代码.
#define …Run Code Online (Sandbox Code Playgroud) 在PowerShell中我尝试过:
alias | select-string Alias
Run Code Online (Sandbox Code Playgroud)
即使Alias显然在输出中,这也会失败.我知道这是因为select-string在某个对象上运行而不是实际的输出字符串.
可以做些什么呢?
我希望这可以基于这里的文档工作:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocSelectors.html
SEL sel = @selector(loadMapType:[ms uniqueTilecacheKey]);
"error: expected ')' before '[' token"
Run Code Online (Sandbox Code Playgroud) 我的iPhone应用程序遇到了这种奇怪的行为.在使用Xcode进行调试时,它在设备上运行正常,但是当设备未连接到我的计算机时它在设备上运行时,它几乎立即崩溃.不用说,我发现这有点令人不安,因为我不确定如何调试它.
任何人都有关于发生了什么或如何调试此类问题的想法?
当我重新连接设备并查看以下内容时,我查看了崩溃报告:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000070
Crashed Thread: 6
Thread 6 Crashed:
0 libobjc.A.dylib 0x300102ac 0x3000c000 + 17068
1 myapp 0x000033ba 0x1000 + 9146
2 myapp 0x0000adc8 0x1000 + 40392
3 Foundation 0x30553356 0x30501000 + 336726
4 Foundation 0x305025fe 0x30501000 + 5630
5 libSystem.B.dylib 0x31d6a6ea 0x31d46000 + 149226
Run Code Online (Sandbox Code Playgroud)
并且控制台日志具有以下内容:
Sun Sep 27 19:59:50 unknown ReportCrash[455] <Notice>: Formulating crash report for process myapp[453]
Sun Sep 27 19:59:50 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.yourcompany.myapp[0x2fba]) Job appears to have …Run Code Online (Sandbox Code Playgroud) 我想在C#.NET中拆分一个如下所示的字符串:
string Letters = "hello";
Run Code Online (Sandbox Code Playgroud)
并将每个字母(h, e, l, l, o)放入一个数组或ArrayList中.我不知道该用什么作为分隔符String.Split(delimiter).如果原始字符串有逗号(或其他任何内容),我可以这样做:
string Letters = "H,e,l,l,o";
string[] AllLettersArray = Letters.Split(",".ToCharArray());
Run Code Online (Sandbox Code Playgroud)
但我不知道在(假设)没有分隔符的情况下使用什么.有一个特殊的角色Environment.Newline吗?谢谢.
在QtCreator中构建多个不同的项目时,我遇到了以下构建错误:
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
在仅更改了一些内容(不应该更改构建中的任何重要内容)之后,如果它已经出现,它将会消失,或者如果它不存在则会出现.
在我目前的学校项目计划中,我正在尝试编译rock03.cpp.它是构建中唯一的文件,并且具有main()方法.我刚刚成功运行它,并回去改变某些if()s 的顺序,现在,我只得到两个相关的警告:
overriding commands for target 'rock03.o'
Run Code Online (Sandbox Code Playgroud)
和
ignoring old commands for target 'rock03.o'
Run Code Online (Sandbox Code Playgroud)
以及有问题的错误.
有谁知道为什么会这样?我似乎无法以任何合理的确定性重现错误,并且QtCreator在构建之前并没有抱怨任何事情.
谢谢
c# ×2
iphone ×2
arrays ×1
c ×1
c++ ×1
cocoa-touch ×1
crash ×1
deployment ×1
embedded ×1
iterator ×1
ld ×1
list ×1
objective-c ×1
powershell ×1
qt-creator ×1
ruby ×1
scala ×1
split ×1
string ×1
symlink ×1