I edited my app.config file manually, which did not seem to agree with VS. Even though the XML was valid, I received the message: An error occurred while reading the app.config file. The file might be corrupted or contain invalid XML. Despite this message the code will still run, but its just annoying.
This is a known bug, which I managed to get rid off by removing the project from the solution, restarting Visual Studio and adding the project again.
SyntaxHighlighter
Friday, October 23, 2009
Thursday, October 22, 2009
SQL Server: Automated log file maintenance
Ok you've all seen it before. You remote desktop onto a client's sql server to upload your app, when your upload fails due to a lack of disk space. Darnit! So you have to reduce the LDF's, which has grown to be several GBs large.
The following little script will reduce all the non-system db's log files. One can also schedule this script as a job that automatically reduces the log files. (Disclaimer: Read-up on the function log files fulfil before simply using this script. I would not recommend running this on critical production systems.)
The following little script will reduce all the non-system db's log files. One can also schedule this script as a job that automatically reduces the log files. (Disclaimer: Read-up on the function log files fulfil before simply using this script. I would not recommend running this on critical production systems.)
-- This gets us all on the same page
use [master]
-- Define some variables
declare @statement varchar(2000)
declare @dbname sysname
declare dbname_cursor cursor for
-- Select all non-system db's
select [name] from master.dbo.sysdatabases where
[name] <> 'master' and
[name] <> 'model' and
[name] <> 'msdb' and
[name] <> 'tempdb'
-- Iterate through each db record
open dbname_cursor
fetch next from dbname_cursor into @dbname
while @@fetch_status <> -1
begin
select @statement = ''
select @statement = @statement + 'use ' + @dbname + '; '
-- Backup db by runcating only (will not reduce physical file size)
select @statement = @statement + 'backup log ' + @dbname + ' with truncate_only; '
-- Get the db log file name
select @statement = @statement + 'declare @log_file varchar(2000); '
select @statement = @statement + 'select @log_file = [name] from sys.database_files where type_desc = ''LOG''; '
-- Reduce the physical file size
select @statement = @statement + 'exec(''dbcc shrinkfile ('' + @log_file + '', 0)''); '
exec(@statement)
fetch next from dbname_cursor into @dbname
end
close dbname_cursor
deallocate dbname_cursor
Wednesday, April 29, 2009
g++ 4.3 more strict with declarations
I've been moving a bunch of old C++ code over to g++ 4.3 and have found that gcc is now more strict on declarations and I often receive these sorts of errors:
error: ‘memset’ was not declared in this scope
error: ‘strncmp’ was not declared in this scope
I'm going to continually update this look-up table, which will explain what to do when receiving any of these errors:| Error | Resolution |
|---|---|
| error: ‘memset’ was not declared in this scope | Add #include <cstring> |
error: ‘strncmp’ was not declared in this scope |
Tuesday, April 21, 2009
C++: Increasing void pointer position
I became better friends with C++ today, but somehow I don't think this relationship is going anywhere.
Managed to crack this little stupid nut though. If you have a void pointer (dynamic array) you can increase it as follows:
Managed to crack this little stupid nut though. If you have a void pointer (dynamic array) you can increase it as follows:
void* ptr; // Say of type char
(*(char*)ptr) += 100; // Or any integer
Monday, April 20, 2009
Ossim on Ubuntu causes error on missing llampi++
When compiling Ossim with lam mpi on Ubuntu 9, you might receive this error:
/usr/bin/ld: cannot find -llammpi++
The easiest way to fix this is to ensure liblam4 and openmpi is installed (via the Synaptic Package Manager) and to edit the Makefile.common in the ossim directory ($OSSIM_HOME), changing the MPI_LIB_PATH.# Open the Makefile.common
gedit $OSSIM_HOME/Makefile.common
# Locate the following line and set its path to/usr/lib/lam/libMPI_LIB_PATH = -L/usr/lib/lam/lib
Compile GDAL with GeoTiff support
I've been running Ubuntu on my personal machine for a while now and just realized that the gdal synaptic package does not enable support for GeoTiffs. This is where Gentoo has one up, but its not the end of the world. You can 'simply' build GDAL from source with the correct flags.
Here's what I did:
1. Install the Tiff, GeotTiff, Png and OpenJpeg dev packages and their dependencies (libtiff4-dev, libgeotiff-dev, libpng12-dev and libopenjpeg-dev). Also be sure to install g++ and subversion.
2. Fire up a terminal and checkout the GDAL subversion repository anywhere in your home directory:
Here's what I did:
1. Install the Tiff, GeotTiff, Png and OpenJpeg dev packages and their dependencies (libtiff4-dev, libgeotiff-dev, libpng12-dev and libopenjpeg-dev). Also be sure to install g++ and subversion.
2. Fire up a terminal and checkout the GDAL subversion repository anywhere in your home directory:
svn co http://svn.osgeo.org/gdal/trunk/gdal
3. Go into the GDAL directory and run configure:cd gdal
./configure --with-geotiff=/usr --with-jpeg=/usr --with-libtiff=/usr --without-libtool
4. In theory you should be able to run make now, but the configure script missed the geotiff header files directory so I had to set these manually. This is the error I received:make -C gtiff install-obj
make[2]: Entering directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts/gtiff'
/bin/sh /home/andreh/workspace/project-ossim_dev/gdal/libtool --mode=compile --tag=CXX g++ -g -O2 -Wall -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/home/andreh/workspace/project-ossim_dev/gdal/gcore -I/home/andreh/workspace/project-ossim_dev/gdal/alg -I/home/andreh/workspace/project-ossim_dev/gdal/ogr -I/home/andreh/workspace/project-ossim_dev/gdal/ogr/ogrsf_frmts -DOGR_ENABLED -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/usr/lib/include -I -I/include -c -o ../o/geotiff.lo geotiff.cpp
libtool: compile: g++ -g -O2 -Wall -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/home/andreh/workspace/project-ossim_dev/gdal/gcore -I/home/andreh/workspace/project-ossim_dev/gdal/alg -I/home/andreh/workspace/project-ossim_dev/gdal/ogr -I/home/andreh/workspace/project-ossim_dev/gdal/ogr/ogrsf_frmts -DOGR_ENABLED -I/home/andreh/workspace/project-ossim_dev/gdal/port -I/usr/lib/include -I -I/include -c geotiff.cpp -fPIC -DPIC -o ../o/.libs/geotiff.o
geotiff.cpp:34:21: error: xtiffio.h: No such file or directory
geotiff.cpp:35:21: error: geotiff.h: No such file or directory
geotiff.cpp:36:27: error: geo_normalize.h: No such file or directory
geotiff.cpp:37:23: error: geovalues.h: No such file or directory
geotiff.cpp:46: error: 'GTIF' was not declared in this scope
geotiff.cpp:46: error: expected primary-expression before ',' token
geotiff.cpp:46: error: 'GTIFDefn' was not declared in this scope
geotiff.cpp:46: error: expected primary-expression before ')' token
geotiff.cpp:46: error: initializer expression list treated as compound expression
geotiff.cpp:47: error: 'GTIF' was not declared in this scope
geotiff.cpp:47: error: expected primary-expression before ',' token
geotiff.cpp:47: error: expected primary-expression before 'const'
geotiff.cpp:47: error: initializer expression list treated as compound expression
geotiff.cpp: In destructor 'virtual GTiffDataset::~GTiffDataset()':
geotiff.cpp:2249: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In member function 'void GTiffDataset::WriteGeoTIFFInfo()':
geotiff.cpp:3336: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:3346: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:3363: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:3393: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:3404: error: 'GTIF' was not declared in this scope
geotiff.cpp:3404: error: 'psGTIF' was not declared in this scope
geotiff.cpp:3413: error: 'TIFFTAG_GEOKEYDIRECTORY' was not declared in this scope
geotiff.cpp:3420: error: 'TIFFTAG_GEODOUBLEPARAMS' was not declared in this scope
geotiff.cpp:3422: error: 'TIFFTAG_GEOASCIIPARAMS' was not declared in this scope
geotiff.cpp:3425: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:3428: error: 'GTIFSetFromOGISDefn' cannot be used as a function
geotiff.cpp:3434: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:3434: error: 'TYPE_SHORT' was not declared in this scope
geotiff.cpp:3435: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:3435: error: 'GTIFKeySet' was not declared in this scope
geotiff.cpp:3438: error: 'GTIFWriteKeys' was not declared in this scope
geotiff.cpp:3439: error: 'GTIFFree' was not declared in this scope
geotiff.cpp: In static member function 'static GDALDataset* GTiffDataset::OpenDir(GDALOpenInfo*)':
geotiff.cpp:4285: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In member function 'CPLErr GTiffDataset::OpenOffset(TIFF*, GTiffDataset**, toff_t, int, GDALAccess, int)':
geotiff.cpp:4640: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:4647: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:4659: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:4700: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:4724: error: 'GTIF' was not declared in this scope
geotiff.cpp:4724: error: 'hGTIF' was not declared in this scope
geotiff.cpp:4725: error: 'GTIFDefn' was not declared in this scope
geotiff.cpp:4725: error: expected `;' before 'sGTIFDefn'
geotiff.cpp:4730: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:4739: error: 'sGTIFDefn' was not declared in this scope
geotiff.cpp:4739: error: 'GTIFGetDefn' was not declared in this scope
geotiff.cpp:4741: error: 'GTIFGetOGISDefn' cannot be used as a function
geotiff.cpp:4748: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:4749: error: 'GTIFKeyGet' was not declared in this scope
geotiff.cpp:4751: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:4757: error: 'GTIFFree' was not declared in this scope
geotiff.cpp: In static member function 'static TIFF* GTiffDataset::CreateLL(const char*, int, int, int, GDALDataType, char**)':
geotiff.cpp:5707: error: 'XTIFFClose' was not declared in this scope
geotiff.cpp: In static member function 'static GDALDataset* GTiffDataset::CreateCopy(const char*, GDALDataset*, int, char**, int (*)(double, const char*, void*), void*)':
geotiff.cpp:6217: error: 'TIFFTAG_GEOPIXELSCALE' was not declared in this scope
geotiff.cpp:6226: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:6242: error: 'TIFFTAG_GEOTRANSMATRIX' was not declared in this scope
geotiff.cpp:6279: error: 'TIFFTAG_GEOTIEPOINTS' was not declared in this scope
geotiff.cpp:6301: error: 'GTIF' was not declared in this scope
geotiff.cpp:6301: error: 'psGTIF' was not declared in this scope
geotiff.cpp:6303: error: 'GTIFNew' was not declared in this scope
geotiff.cpp:6304: error: 'GTIFSetFromOGISDefn' cannot be used as a function
geotiff.cpp:6310: error: 'GTRasterTypeGeoKey' was not declared in this scope
geotiff.cpp:6310: error: 'TYPE_SHORT' was not declared in this scope
geotiff.cpp:6311: error: 'RasterPixelIsPoint' was not declared in this scope
geotiff.cpp:6311: error: 'GTIFKeySet' was not declared in this scope
geotiff.cpp:6314: error: 'GTIFWriteKeys' was not declared in this scope
geotiff.cpp:6315: error: 'GTIFFree' was not declared in this scope
geotiff.cpp:6325: error: 'XTIFFClose' was not declared in this scope
make[2]: *** [../o/geotiff.lo] Error 1
make[2]: Leaving directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts/gtiff'
make[1]: *** [gtiff-install-obj] Error 2
make[1]: Leaving directory `/home/andreh/workspace/project-ossim_dev/gdal/frmts'
make: *** [frmts-target] Error 2
And this is how to get rid of it:# open the GDALmake.opt file with an editor
gedit GDALmake.opt
# locate the CPPFLAGS line and add the include path at the end "-I/usr/include/geotiff"
CPPFLAGS = -I$(GDAL_ROOT)/port -I/usr/lib/include -I -I/include -I/usr/include/geotiff
5. One can now run make and make install:make
sudo make install
Thursday, April 2, 2009
Limited Linq to Sql
I've been playing around (ie pulling my hair out) in my spare time over the last few weeks, trying to make Linq more loosely coupled with a UI and to extend its capabilities to allow for many-to-many table updates. I find it completely rediculous how intricate Ms has made all of this. Perhaps I'm missing the plot, but unless you're trying to do some really simple little application that requires little to no flexibility on the DB side of things, STAY AWAY FROM LINQ.
I wrote my own Linq a few years ago, but decided to give Ms Linq a chance and it hasn't really been smooth sailing. The most enjoyable part of the experience was dragging my tables into the dbml window and seeing VS create all the classes for me. The rest is a friggin nightmare.
I'm not about to give up the fight though, but I'm pretty distraught at the moment.
I wrote my own Linq a few years ago, but decided to give Ms Linq a chance and it hasn't really been smooth sailing. The most enjoyable part of the experience was dragging my tables into the dbml window and seeing VS create all the classes for me. The rest is a friggin nightmare.
I'm not about to give up the fight though, but I'm pretty distraught at the moment.
Subscribe to:
Posts (Atom)