我正在寻找如何处理我的源代码(Web应用程序)所依赖的大型二进制文件的意见.我们目前正在讨论几种选择:
您对此有何体验/想法?
另外:有没有人有多个Git存储库的经验并在一个项目中管理它们?
这些文件是程序的图像,该程序生成包含这些文件的PDF.文件不会经常更改(如年份),但它们与程序非常相关.没有文件,程序将无法运行.
我想编辑一个二进制文件,但我不想使用除Visual Studio之外的其他工具,因为来回切换很麻烦.
是否可能有一个加载项或一些内置功能可以在Visual Studio中执行此操作?
My Express应用程序从浏览器接收base64编码的PNG(使用toDataURL()从canvas生成)并将其写入文件.但该文件不是有效的图像文件,"文件"实用程序只是将其标识为"数据".
var body = req.rawBody,
base64Data = body.replace(/^data:image\/png;base64,/,""),
binaryData = new Buffer(base64Data, 'base64').toString('binary');
require("fs").writeFile("out.png", binaryData, "binary", function(err) {
console.log(err); // writes out file without error, but it's not a valid image
});
Run Code Online (Sandbox Code Playgroud) 我正在编写一个允许用户将图像上传到服务器的应用程序.我希望每天大约有20张图片都是jpeg,可能没有编辑/调整大小.(这是另一个问题,如何在存储之前调整服务器端的图像大小.也许有人可以请求在评论中删除.NET资源等等).我现在想知道存储上传图像的最佳位置是什么.
将图像作为文件存储在文件系统中,并在表格中创建一条记录,其中包含该图像的确切路径.
或者,使用数据库服务器的"图像"或"二进制数据"数据类型将图像本身存储在表中.
我看到两者的优点和缺点.我喜欢a)因为我可以轻松地重新定位文件,只需要更改表条目.另一方面,我不喜欢在Web服务器上存储业务数据,我真的不想将Web服务器连接到任何其他保存业务数据的数据源(出于安全原因)我喜欢b)因为所有信息都是在一个地方,可以通过查询轻松访问.另一方面,数据库将很快变得非常大.外包数据可能更困难.
我正在尝试GET
使用二进制数据request
,并有类似的东西:
var requestSettings = {
method: 'GET',
url: url,
};
request(requestSettings, function(error, response, body) {
// Use body as a binary Buffer
}
Run Code Online (Sandbox Code Playgroud)
但body
总是与预期的几个字节不同.经过进一步调查后,我发现request
假设body
是字符串并替换了所有非unicode字节.
我试着补充一下
encoding: 'binary'
Run Code Online (Sandbox Code Playgroud)
到requestSettings
,但它并没有帮助.
我怎样才能获得二进制数据?
我的linux系统上有这个二进制文件..
udit@udit-Dabba ~ $ cat file.enc
Salted__s?bO??<0?F???Jw!???]?:`C?LK??l
Run Code Online (Sandbox Code Playgroud)
使用hexdump命令我看到这样的信息..
udit@udit-Dabba ~ $ hexdump -C file.enc
00000000 53 61 6c 74 65 64 5f 5f 1b 73 a1 62 4f 15 be f6 |Salted__.s.bO...|
00000010 3c 30 cc 46 ee 10 13 11 84 bf 4a 77 21 a4 84 99 |<0.F......Jw!...|
00000020 0e 5d ef 11 18 3a 60 43 a0 4c 4b 1e c8 86 e6 6c |.]...:`C.LK....l|
00000030
Run Code Online (Sandbox Code Playgroud)
现在我给了一个其他系统的文件,其内容是这样的..
53 61 6c 74 65 64 5f 5f 1b 73 …
Run Code Online (Sandbox Code Playgroud) 一年半以来,我一直关注着git社区,希望能够远离SVN.阻碍我的一个特殊问题是无法锁定二进制文件.在过去的一年里,我还没有看到这个问题的发展.我知道锁定文件违反了分布式源代码控制的基本原则,但我没有看到Web开发公司如何在有可能发生二进制文件冲突时利用git跟踪源代码和映像文件更改.
为了实现锁定的效果,必须识别"中央"存储库.无论git的分布式特性如何,大多数公司都将拥有一个软件项目的"中央"存储库.我们应该能够将文件标记为需要从指定地址的管理git存储库进行锁定.也许这很难,因为git跟踪文件内容而不是文件?
你们有没有经验处理应该在修改前锁定的git和二进制文件?
注意:看起来Source Gear的新开源分布式版本控制项目Veracity已将锁定作为其目标之一.
在Fedora Constantine盒子上工作.我diff
递归地查看两个目录以检查源更改.由于项目的设置(在我自己参与所述项目之前!叹息),目录包含源和二进制文件,以及大型二进制数据集.虽然diffing最终可以在这些目录上运行,但如果我可以忽略二进制文件,则可能需要20秒.
据我了解,DIFF没有一个"忽略二进制文件"模式,但确实有一个忽略的参数,它会忽略正则表达式中的文件.我不知道在那里写什么来忽略二进制文件,无论扩展名如何.
我正在使用以下命令,但它不会忽略二进制文件.有谁知道如何修改此命令来执行此操作?
diff -rq dir1 dir2
在Windows机器上,有许多第三方编辑器可用于编辑二进制文件.我相信在*nix系统中应该有一些similer buildin.任何想法如何在unix上编辑二进制文件?
最近我一直在问编写一个函数读取二进制文件到std::vector<BYTE>
哪里BYTE
是unsigned char
.我很快就找到了这样的东西:
#include <fstream>
#include <vector>
typedef unsigned char BYTE;
std::vector<BYTE> readFile(const char* filename)
{
// open the file:
std::streampos fileSize;
std::ifstream file(filename, std::ios::binary);
// get its size:
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// read the data:
std::vector<BYTE> fileData(fileSize);
file.read((char*) &fileData[0], fileSize);
return fileData;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是不必要的复杂,并且char*
我在呼叫时被迫使用的明确演员file.read
并没有让我感觉更好.
另一种选择是使用std::istreambuf_iterator
:
std::vector<BYTE> readFile(const char* filename)
{
// open the file:
std::ifstream file(filename, std::ios::binary);
// read the data:
return std::vector<BYTE>((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>()); …
Run Code Online (Sandbox Code Playgroud) binaryfiles ×10
git ×2
node.js ×2
base64 ×1
bash ×1
c ×1
c++ ×1
command ×1
database ×1
diff ×1
dvcs ×1
editor ×1
file-io ×1
filesystems ×1
hex-editors ×1
hexdump ×1
image ×1
javascript ×1
large-files ×1
linux ×1
request ×1
requestjs ×1
shell ×1
unix ×1
vector ×1