我正在尝试为一些文件获取sha-1.我目前所做的是循环给定路径中的文件,分别打开和读取每个文件,并将内容加载到缓冲区中,然后将其发送到openssl的SHA函数以获取哈希值.代码看起来像这样:
void ReadHashFile(LPCTSTR name)
{
FILE * pFile;
long lSize;
char * buffer;
size_t result;
pFile = _tfopen ( name , L"rb" );
if (pFile==NULL) {fputs ("File error",stderr); return;}
// obtain file size:
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
if(lSize == -1){fputs ("Read Error",stderr);return;}
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); return;}
// copy the file into the buffer:
result = …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以将MSAccess数据库转换为SQL Server数据库,而无需从头开始.
我想禁用我的UIButton,所以我打电话给:
button.enabled = FALSE;
Run Code Online (Sandbox Code Playgroud)
然而,这使按钮透视,我可以看到它下面的元素.我不介意它改变颜色,我只是不希望它是透明的.
我已经尝试在IB中勾选"不透明"和"剪辑子视图"的方框,但没有快乐.
有没有一种简单的方法来解决这个问题?我想我可以在UIImageView后面放一个相同的按钮图像,但这不是一个优雅的解决方案.
谢谢大家!!
迈克尔
使用带有以下代码的PDO_ODBC从PHP访问Microsoft SQL数据库时,我遇到了编码问题.当输出时,DB中的文本出现乱码.
$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=UTF-8";
$pdo = new PDO($dsn,$username,$password);
$sql = "SELECT text FROM atable";
$result = $PDO->query($sql);
while($data = $result->fetchObject()){
$values[] = $data->text;
}
dpm($values);
Run Code Online (Sandbox Code Playgroud)
乱码输出http://image.bayimg.com/naomcaacd.jpg
这是从Drupal模块完成的.Drupal中的所有内容都与UTF-8一起使用.最干净的解决方案是能够以UTF-8从数据库中检索数据,或者在输出之前将其转换为UTF-8.
我没有成功地试过这些
$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;client_charset=utf-8"$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=utf-8"$pdo->exec('SET NAMES utf8') 后 new PDO(...)$pdo->exec('SET CHARACTER SET utf8'); 后 new PDO(...)PS:代码目前是在Windows上开发的,但它也必须在GNU/Linux上运行.
请多多包涵.我真的想知道,因为我对答案感到好奇:
是否有一种智能方法可以在编译时知道要链接到的库的名称?
请允许我举一个例子,说明我的问题的原因.
我是C++新手.我正在学习编译,链接和像boost这样的库.我刚刚发现了boost/filesystem并想尝试一下.遇到麻烦编译后,我使用了以下极简主义代码:
// file boost_example.cpp
#include "boost/filesystem.hpp"
#include <iostream>
int main()
{
std::cout<<"Hello";
return 0;
}
我试图编译它,但作为一个新手,我犯了一个新手错误:我忘了链接到正确的库!
Run Code Online (Sandbox Code Playgroud) g++ boost_example.cpp -o run
确切地说,我遇到了本书这一章中解释的问题.
我知道我已经安装了升级版(我被告知安装它来编译另一个项目).我试图从其他项目的Makefile中复制,但以下不起作用:
g++ boost_example.cpp -o run -lbooster
尝试从代码中的#include行做出有根据的猜测,我尝试了以下无效:
g++ boost_example.cpp -o run -lboost
到那时,我已经开始了疯狂地搜索网页.我讨厌搜索引擎,因为大多数时候,你找不到你正在寻找的东西.我找到了以下内容,但他们没有帮助,只是浪费我的时间: g++ boost_example.cpp -o run -lboost_filesystem
在kubuntu C++/Boost链接器错误下提升库链接问题
由于我是一名RTFM人,我实际上已经检查了我想要使用的库的官方文档:http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm但是我没有找到任何编译信息.
在某个阶段,我受到启发,检查我在系统上实际安装的内容:
Run Code Online (Sandbox Code Playgroud)
因此,我找到了要链接的库的正确名称.以下工作:
$ locate boost_file
/usr/lib/libboost_filesystem-mt.a
/usr/lib/libboost_filesystem-mt.so
/usr/lib/libboost_filesystem-mt.so.1.38.0
g++ boost_example.cpp -o run -lboost_filesystem-mt
现在,除了使用(可能)智能猜测工作和搜索网络之外,是否有更智能的方法来查找要链接的库的名称?我永远不会猜到boost_filesystem-mt给出标题的库名"boost/filesystem.hpp".
更糟糕的是:官方网站上没有提到boost_filesystem-mt!(我猜这是依赖于发行/包装).
再一次,在提出问题之前,我总是提出RTFM,我找到了上述书中的这一章,所以我在/ usr/lib /上查看了我在系统上可以找到的内容:
$ ls …
如何在Ubuntu 10.04文件系统中找到保存Postgres 8.x数据库文件的位置?
我知道"group"方法用于指定特定环境的gem.
group :development, :test do
gem "rspec-rails", ">= 2.0.0.beta.19"
gem "cucumber-rails", ">= 0.3.2"
gem "webrat", ">= 0.7.2.beta.1"
end
Run Code Online (Sandbox Code Playgroud)
但我不明白这意味着什么.那么这些只能在开发和测试环境中使用?
但是它会安装在生产中吗?
如果要从内联汇编中调用C/C++函数,可以执行以下操作:
void callee() {}
void caller()
{
asm("call *%0" : : "r"(callee));
}
Run Code Online (Sandbox Code Playgroud)
然后GCC将发出如下所示的代码:
movl $callee, %eax
call *%eax
Run Code Online (Sandbox Code Playgroud)
这可能会有问题,因为间接调用会破坏旧CPU上的管道.
由于地址callee最终是常量,可以想象可以使用i约束.引自GCC在线文档:
'我"
允许使用立即整数操作数(具有常量值的操作数).这包括符号常量,其值仅在汇编时或以后知道.
如果我尝试这样使用它:
asm("call %0" : : "i"(callee));
Run Code Online (Sandbox Code Playgroud)
我从汇编程序中收到以下错误:
错误:后缀或操作数对`call'无效
这是因为GCC会发出代码
call $callee
Run Code Online (Sandbox Code Playgroud)
代替
call callee
Run Code Online (Sandbox Code Playgroud)
所以我的问题是是否可以使GCC输出正确call.
今天我尝试了 lxml,因为我从特定的 web 服务中得到了非常讨厌的 html 输出,我不想使用 re 模块,只是为了改变和学习新的东西。我做到了,并行浏览http://codespeak.net/lxml/和http://stackoverflow.com
我不会试图解释上面的 html 模板,但只是为了概述它充满了故意嵌套的表格。
我用 html 解析器提取了感兴趣的部分,然后 find_class() 并用 xpath 遍历 TR(甚至这个 TR 里面都有表)。现在我正在尝试根据 class 和 id 属性提取数据对:
代码如下所示:
fragment = root.find_class('foo')
for node in fragment[0].xpath('table[2]/tr'):
name = node.xpath('//div[@id="title"]')
value = node.xpath('//td[@class="text"]')
Run Code Online (Sandbox Code Playgroud)
问题是并非我迭代的每个 TR 都有这些对:有些只有名称(id“title”),所以稍后当我尝试压缩它们时,我得到了错误的配对数据。
我尝试了几件事,但没有成功:我尝试比较列表长度(名称和值),如果它们不匹配跳过名称查找,那么如果它们不匹配,则删除最后一个列表项(在很多方面)但没有任何效果。例如:
if not len(name) == len(value):
name.pop()
Run Code Online (Sandbox Code Playgroud)
或者
if len(name) == len(value):
name = node.xpath('//div[@id="title"]')
value = node.xpath('//td[@class="text"]')
Run Code Online (Sandbox Code Playgroud)
一些经验丰富的评论?
c++ ×3
c ×1
compilation ×1
cookies ×1
cryptography ×1
database ×1
drupal ×1
file ×1
gcc ×1
http ×1
iphone ×1
libraries ×1
linked-list ×1
lxml ×1
objective-c ×1
odbc ×1
openssl ×1
pdo ×1
php ×1
postgresql ×1
python ×1
sql-server ×1
transparent ×1
ubuntu ×1
uibutton ×1
windows ×1
xpath ×1