假设"windows文件"和"unix文件"之间的唯一区别是换行符,我是否正确?
我们有一个系统已经从Windows机器移动到unix机器,并且在格式上遇到了麻烦.
我需要在文件在"transportsystem"中传送到系统之前自动执行unix/windows之间的转换.我可能需要一些东西来确定当前的格式以及将其转换为其他格式的东西.如果它只是新行有很大的不同,那么我正在考虑用java.io读取文件.据我所知,他们可以使用readLine处理这两个问题.然后用它来写回每一行
while (line = readline)
print(line + NewlineInOtherFormat)
....
Run Code Online (Sandbox Code Playgroud)
这只是文本文件的差异,其中UNIX使用单个换行符(LF)来表示新行,Windows使用回车符/换行符(CRLF),而Mac仅使用CR.
到Cebjyre阐述:
OS X使用LF,与UNIX相同 - MacOS 9及以下版本确实使用CR
国家字符的字符编码也可能有所不同.没有"unix-encoding",但许多linux-variants使用UTF-8作为默认编码.Mac OS(也是一个unix)使用自己的编码(macroman).我不确定,Windows默认编码是什么.
除了新行差异之外,如果文件在Windows上被视为Unicode,则字节顺序标记可能会导致问题.
但是,您可能遇到的另一组问题可能与单/多字节字符编码有关.如果你看到奇怪的意外字符(不在行尾)那么这可能是原因.特别是如果您看到方框,问号,颠倒的问号,额外的字符或意外的重音字符.
在unix上,以a开头的文件.是隐藏的.在Windows上,它是一个您可能无法轻松访问的文件系统标志.这可能导致现在应该隐藏的文件在客户端计算机上变得可见.
文件权限因二者而异.当您将文件复制到unix系统时,您可能会发现文件现在属于进行复制并具有有限权限的用户.您需要使用chown/chmod来确保正确的用户可以访问它们.
存在帮助解决问题的工具:
如果您只对文本文件的内容感兴趣,那么行结尾是不同的.看看像dos2unix这样的东西,它可能在这里有所帮助.
正如pauldoo所说,像dos2unix这样的工具非常有用.请注意,这些可能在您的linux/unix系统上,如fromdos或tofrodos,或者甚至可能作为通用工具箱重新编码.
帮助java编码
当写入文件或从文件中读取(您可以控制)时,通常值得指定要使用的编码,因为大多数Java方法都允许这样做.但是,确保系统区域设置匹配可以节省很多痛苦
微软表示,Visual Studio 2008可以安装在任何版本的Vista上(不包括已启动版本).
但我不确定,如果Home Editions不会导致调试,虚拟机,IIS,MS SQL 2008以及开发人员使用的所有其他工具或Visual Basic 6.0等旧工具出现问题.
似乎Vista Business是最好的,但家庭版更受欢迎.
或者,将继续使用Windows XP专业版?
我们将一些Guid存储在MS SQL数据库中.有一些遗留代码可以执行Guid.ToString(),然后将它们传递给a,varchar(64)并且有一些较新的代码使用唯一标识符参数传递它们.当您使用MS SQL Management studio查看结果时,它们看起来有所不同.前三个块的字节顺序相反,但最后一个块保持不变.为什么?
我在Windows服务器上安装了VisualSVN服务器,为几个存储库提供服务.
由于VisualSVN服务器内置的Web查看器是一个简约的subversion浏览器,我想在我的存储库之上安装WebSVN.
然而,问题是我似乎无法使身份验证工作.理想情况下,我希望我在VisualSVN中指定的当前存储库身份验证与WebSVN一起使用,因此虽然我在WebSVN中看到了所有存储库名称,但如果没有正确的凭据,我实际上无法浏览它们.
通过访问此google查询中最顶层链接的缓存副本,您可以看到我迄今为止发现的看起来很有前景的内容.
(主要的博客页面似乎已被破坏,我所指的最顶层页面的域名是-wizzard.de)
在那里我发现了一些我可以在WebSVN中的一个php文件上添加的php函数.我在那里进行了修改,但我所做的就是让WebSVN向我询问用户名和密码,无论我输入什么,它都不会让我进去.
不幸的是,php和apache对我来说很大程度上是黑魔法.
那么,有没有人成功地将WebSVN与VisualSVN托管的存储库集成在一起?
因此,您正在编写Web应用程序,并且您可以在该站点的几个区域中用户可以上载文件.我的基本工作方法是将实际文件存储在服务器上,并有一个数据库表,用于将存储的文件名连接到与之相关的记录.
我的问题是:文件的每个"类型"是否应该有不同的表格?此外,文件应该存储在服务器上的上下文相关位置,还是全部存储在一起?
一些示例:用户个人资料照片,工作申请简历,CMS页面上的相关文档等.
我们目前正在使用MySQL来构建我们正在构建的产品,并且希望尽快转移到PostgreSQL,主要是出于许可的原因.
还有其他人做过这样的举动吗?我们的数据库是应用程序的命脉,最终将存储TB数据,所以我很想知道性能改进/丢失的经验,转换SQL和存储过程的主要障碍等.
编辑:只是向那些问我们为什么不喜欢MySQL许可的人澄清.我们正在开发一种商业产品,它(目前)依赖于MySQL作为数据库后端.他们的许可证明我们需要支付他们每个安装的定价的一定百分比,而不是固定费用.作为创业公司,这不是很吸引人.
有没有人尝试过Hadoop?在没有共享架构的情况下,它可以在没有随附的分布式文件系统的情况下使用吗?那会有意义吗?
我也对你的任何表现结果感兴趣......
你好再次女士们和男士们!
好的,继续我关于ASP.NET Web服务结果,代理类和类型转换的其他问题.我参与了我的项目,我需要在思考上限.
基本上,我们有一个大型,复杂的自定义对象,需要从Web服务返回并在客户端应用程序中使用.
现在,基于前面的讨论,我们知道这将采用代理类的形式作为返回类型.为了克服这个问题,我们需要基本上将属性从一个复制到另一个.
在这种情况下,这是我真的,真的,真的!喜欢避免!
所以,它让我思考,我们怎么能这样做?
我目前的想法是将对象完全序列化为XML,然后将XML作为字符串从Web Service返回.然后我们在客户端反序列化.这将意味着相当多的属性装饰,但至少两个端点的代码都很轻,即只使用.NET XML Serializer.
有一个讨论,在comp.lang.c超过回事++.关于缓和与否的断言,这在C++中默认情况下只在调试中存在的构建,应保持在生产代码或没有.
显然,每个项目都是独特的,所以在这里我的问题是没有这么多是否断言应该保持,但在这情况下,这是值得推荐的/不是一个好主意.
通过断言,我的意思是:
我不一定在谈论C或C++.
我自己的观点是,如果你是程序员,但不拥有数据(大多数商业桌面应用程序就是这种情况),你应该保持它们,因为失败的断言显示了一个错误,你不应该去有bug,有可能破坏用户的数据.这会强制您在发货前进行强力测试,并使错误更加明显,从而更容易发现并修复.
你有什么看法/经验?
干杯,
卡尔
在此查看相关问题
回应和更新
嘿格雷厄姆,
断言是错误的,纯粹而简单,因此应该像一个一样处理.由于应该在发布模式下处理错误,因此您不需要断言.
这就是为什么我在谈论断言时更喜欢"bug"这个词.它使事情更加清晰.对我来说,"错误"这个词太模糊了.丢失的文件是错误,而不是错误,程序应该处理它.试图取消引用空指针是一个错误,程序应该承认有些东西闻起来像坏奶酪.
因此,您应该使用断言来测试指针,但是存在具有正常错误处理代码的文件.
稍微偏离主题,但讨论中的一个重点.
作为一个单挑,如果你的断言在失败时闯入调试器,为什么不呢.但是有很多原因导致文件不存在,完全不受代码控制:读/写权限,磁盘已满,USB设备已拔下等等.由于您无法控制它,我觉得断言是不是处理这个问题的正确方法.
卡尔
托马斯,
是的,我有代码完成,并且必须说我非常不同意该特定建议.
假设您的自定义内存分配器搞砸了,并将一些仍然被其他对象使用的内存归零.我碰巧将这个对象定期解除引用的指针归零,并且其中一个不变量是该指针永远不为空,并且你有几个断言以确保它保持这种状态.如果指针突然为空,你会怎么做?你只是if()围绕它,希望它有效吗?
请记住,我们在这里讨论产品代码,因此不会破坏调试器并检查本地状态.这是用户机器上的一个真正的错误.
卡尔
.net ×1
asp.net ×1
assert ×1
c# ×1
database ×1
distributed ×1
file ×1
hadoop ×1
java ×1
licensing ×1
migration ×1
mysql ×1
performance ×1
php ×1
postgresql ×1
sql-server ×1
svn ×1
unix ×1
versioning ×1
web-services ×1
websvn ×1
windows ×1
xml ×1