我有兴趣减少我的应用程序的文件大小.它是一个在Visual Studio 2008中使用MVC++构建的MFC/C++应用程序.UPX可以很好地将最终的exe减少到原始大小的40%,但我想减少它.
MFC必须在此项目中静态链接.
我尝试过这个问题中概述的一些方法:reduce-windows-executable-size.特别是将不同的设置应用于编译器/链接器.
我相信通过查看项目中包含某些标题的"成本",我可以进一步缩小规模.
关于如何解决这个问题的任何提示,也许是一个可以为我分析我的代码的工具?谢谢
我正在使用一个简单的图像管理器类,以及以下代码:
<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load($target_path);
if($image->getWidth() > 500) {
$image->resizeToWidth(500);
echo "<p>Image Resized</p>";
} else echo "<p>Image did not need to be resized.</p>";
$image->save($target_path);
echo "<p>Image Saved</p>";
?>
Run Code Online (Sandbox Code Playgroud)
当我上传宽度为700的图像时,图像成功调整大小,但是当我上传一张非常大的图片(宽度〜= 2300)时,它不起作用,我看不到任何echo消息.
某些php图像函数是否有可能导致此问题的大小限制?
我有一个以两种方式发布的应用程序,原因与此处无关.它们的区别很小,主要是"徽章",奇数串等.
这两个版本都包括:
正如我所料,两个版本中的每一个中的文件大小几乎相同.上述文件的总大小为13 Mb,但两种文件之间的文件大小差异仅为1900字节左右.
InnoSetup生成的安装程序EXE的大小不同,为42.6k!
什么会导致这个?我有一种唠叨的担心,即某些装置已被"遗漏",尽管它们似乎可以检查出来.因为IS没有提供有关如何构建安装程序包的任何详细信息,所以我无法跟踪此异常情况.
任何想法,任何人?
我做了一些PHP编码,熟悉它的各个方面.
我已经创建了一个PHP脚本,它作为cron作业运行,将从数据库中提取数据,如果满足某些条件,则会将某些信息写入文件.
由于数据库中可能存在多个结果,因此会执行循环以遍历数据库中的每个结果.
在该循环中,我有另一个循环,它将数据写入文件.然后使用cron作业每分钟调用此文件并在bash脚本中运行内容.
因此,设置PHP循环以查看文件是否通过使用filesize()函数写入了任何内容.如果filesize不为零,那么它将睡眠10秒并尝试再次读取它.这是代码:
while(filesize('/home/cron-script.sh') != 0)
{
sleep(10);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当运行filesize时,它似乎在文件上放置了某种锁或其他东西.cron作业可以毫无问题地执行bash脚本,脚本中的最后一个命令是将文件清零:
cat /dev/null > /home/cron-script.sh
Run Code Online (Sandbox Code Playgroud)
但是,似乎一旦启动上面的while循环,它就会锁定原始文件大小.举个例子,我只是在cron-script.sh文件中输入"exit"一词,然后运行测试脚本:
while(filesize("/home/cron-script.sh") != 0)
{
echo "filesize: " . filesize("/home/cron-script.sh");
sleep(10);
}
Run Code Online (Sandbox Code Playgroud)
循环是无限的,当我输入单词"exit"时将继续显示"filesize:4".然后我将在终端发出命令:
cat /dev/null > /home/cron-script.sh
Run Code Online (Sandbox Code Playgroud)
然后,当我运行上面的测试脚本时,将清除该文件.但是,它继续说文件大小为4并且永远不会返回0 - 因此使PHP脚本运行直到达到执行时间限制.
有人可以就如何解决这个问题给我一些建议吗?本质上,我只需要一些方法来读取文件大小 - 如果文件中有任何类型的数据,它将需要循环一个休眠例程,直到文件被清除.该文件应在一分钟内清除(因为cron作业每分钟调用一次cron-script.sh文件).
谢谢!
实际上,我有三种方法来确定文件大小:
那么确定文件大小的实际正确方法是什么?什么是最糟糕的方式?或者甚至不重要,因为最后它们都是一样的?
(我可以想象第一种方法对于非常大的文件有问题,而另外两种方法没有)
我想用urllib2下载一个文件,同时我想显示一个进度条..但是如何才能获得实际下载的文件大小?
我目前的代码是
ul = urllib2.urlopen('www.file.com/blafoo.iso')
data = ul.get_data()
Run Code Online (Sandbox Code Playgroud)
要么
open('file.iso', 'w').write(ul.read())
Run Code Online (Sandbox Code Playgroud)
如果从网站上收到整个下载,则首先将数据写入文件.如何访问下载的数据大小?
谢谢你的帮助
更多的问题,我真的很困惑,而且我一直困扰着我,我几乎用dirent.h尝试了所有的东西.但这是我想要的一个例子:
#include <iostream>
#include "DataEventResponseMsg.idl"
using namespace std;
int main(){
cout << "This is the size: " << sizeof(DataEventResponseMsg) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它做的是包括该特定文件并找到它的大小并打印它.我想这样做,但我需要它打开一个充满.idl文件的目录,并使用sizeof打印它的文件和大小.
我试图用dirent.h做这个并打开目录,然后将内容放入ent-> d_name,然后查找d_name的sizeof等等,但所有这一切都是打印指针的大小..我尝试将文件放入一个数组,但执行sizeof只打印数组的大小.我希望它打印实际文件的大小,就像我将它们包含在头文件中一样,就像我发布的文件一样.
这有可能吗?我很困惑,我需要让它工作,但我需要帮助.
请帮忙.
编辑------
所以我用dirent.h完成了这个:
#include <iostream>
#include <dirent.h>
#include <string.h>
#include <fstream>
using namespace std;
int main( int argc, char* argv[] ){
char FileArr[20][256];
DIR *dir;
FILE *fp;
int i = 0;
int k;
struct dirent *ent;
dir = opendir (argv[1]);
if( dir != NULL ){
while(( ent = readdir ( dir ) …Run Code Online (Sandbox Code Playgroud) 我的网站上有一个.dmg用于Mac软件,但是当我尝试下载它时(即使在不同的浏览器中),它也没有显示持续时间或文件大小.这可能是我需要在Apache中配置的吗?
我检查了http标头:
HTTP/1.1 200 OK =>
Date => Mon, 22 Apr 2013 15:36:08 GMT
Server => Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.3.22
Last-Modified => Thu, 11 Apr 2013 13:30:19 GMT
ETag => "2087eb-4151ab7-4da15c9a450c0"
Accept-Ranges => bytes
Content-Length => 68491959
Cache-Control => max-age=1209600
Expires => Mon, 06 May 2013 15:36:08 GMT
Vary => Accept-Encoding,User-Agent
Connection => close
Content-Type => application/x-apple-diskimage
Run Code Online (Sandbox Code Playgroud) 我已经开发了一个SSIS包来在特定的位置创建ZIP文件.我能够发送ZIP文件的电子邮件附件.现在,我想做以下事情:
如果我的文件大小小于1MB,则发送带附件的电子邮件; 否则,只发送电子邮件通知(没有附件).我也想让它也可以配置.
所以,我想知道,SSIS中是否有任何方法来检查文件大小并采取必要的措施?
我用C语言计算文件大小: -
FileInfo info = new FileInfo(file);
uint dummy, sectorsPerCluster, bytesPerSector;
int result = GetDiskFreeSpaceW(info.Directory.Root.FullName,
out sectorsPerCluster, out bytesPerSector, out dummy, out dummy);
if (result == 0) throw new Win32Exception();
uint clusterSize = sectorsPerCluster * bytesPerSector;
uint hosize;
uint losize = GetCompressedFileSizeW(file, out hosize);
long size;
size = (long)hosize << 32 | losize;
var x = (((size + clusterSize - 1) / clusterSize) * clusterSize); // in bytes
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将其转换为GB时: -
x/ (1024 * 1024 * 1024)
Run Code Online (Sandbox Code Playgroud)
我总是得到0作为答案.我假设这与x的数据类型有关.有人可以帮我理解这个吗?