Search Results

Search found 7208 results on 289 pages for 'export to pdf'.

Page 274/289 | < Previous Page | 270 271 272 273 274 275 276 277 278 279 280 281  | Next Page >

  • imagick showing script url instead of image

    - by Raz
    Hi, currently i'm trying to use imagick to generate some images without saving them on the server and then outputting to the browser, my method of choice was image magic with the imagick extension for php. I read the documentation, and i'm sure the package is installed on my machine (windows xp, with xampp). the class is installed imagick module enabled imagick module version 2.0.0-alpha imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator ImageMagick version ImageMagick 6.3.3 04/21/07 Q16 http://www.imagemagick.org ImageMagick release date 04/21/07 ImageMagick Number of supported formats: 164 ImageMagick Supported formats A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DFONT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, INFO, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MSVG, MTV, MVG, NULL, O, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV this is from the phpinfo so i know i have it installed, the thing is when i try to generate an image and save it, it works flawlessly, but when i try to output the image directly, i get the script url as an image $draw = new ImagickDraw(); $draw->setFont('AnkeCalligraph.TTF'); $draw->setFontSize(52); $draw->annotation(110, 110, "Hello World!"); $draw->annotation(50, 220, "Hello World!"); $canvas = new Imagick('./pictures/test_live.PNG'); $canvas->drawImage($draw); $canvas->setImageFormat('png'); header("Content-Type: image/png"); echo $canvas; this is the code used. if i use writeimage, then the file on the server is created with no problems. does anyone have any ideas what i'm doing wrong ?

    Read the article

  • Encode audio to aac with libavcodec

    - by ryan
    I'm using libavcodec (latest git as of 3/3/10) to encode raw pcm to aac (libfaac support enabled). I do this by calling avcodec_encode_audio repeatedly with codec_context-frame_size samples each time. The first four calls return successfully, but the fifth call never returns. When I use gdb to break, the stack is corrupt. If I use audacity to export the pcm data to a .wav file, then I can use command-line ffmpeg to convert to aac without any issues, so I'm sure it's something I'm doing wrong. I've written a small test program that duplicates my problem. It reads the test data from a file, which is available here: http://birdie.protoven.com/audio.pcm (~2 seconds of signed 16 bit LE pcm) I can make it all work if I use FAAC directly, but the code would be a little cleaner if I could just use libavcodec, as I'm also encoding video, and writing both to an mp4. ffmpeg version info: FFmpeg version git-c280040, Copyright (c) 2000-2010 the FFmpeg developers built on Mar 3 2010 15:40:46 with gcc 4.4.1 configuration: --enable-libfaac --enable-gpl --enable-nonfree --enable-version3 --enable-postproc --enable-pthreads --enable-debug=3 --enable-shared libavutil 50.10. 0 / 50.10. 0 libavcodec 52.55. 0 / 52.55. 0 libavformat 52.54. 0 / 52.54. 0 libavdevice 52. 2. 0 / 52. 2. 0 libswscale 0.10. 0 / 0.10. 0 libpostproc 51. 2. 0 / 51. 2. 0 Is there something I'm not setting, or setting incorrectly in my codec context, maybe? Any help is greatly appreciated! Here is my test code: #include <stdio.h> #include <libavcodec/avcodec.h> void EncodeTest(int sampleRate, int channels, int audioBitrate, uint8_t *audioData, size_t audioSize) { AVCodecContext *audioCodec; AVCodec *codec; uint8_t *buf; int bufSize, frameBytes; avcodec_register_all(); //Set up audio encoder codec = avcodec_find_encoder(CODEC_ID_AAC); if (codec == NULL) return; audioCodec = avcodec_alloc_context(); audioCodec->bit_rate = audioBitrate; audioCodec->sample_fmt = SAMPLE_FMT_S16; audioCodec->sample_rate = sampleRate; audioCodec->channels = channels; audioCodec->profile = FF_PROFILE_AAC_MAIN; audioCodec->time_base = (AVRational){1, sampleRate}; audioCodec->codec_type = CODEC_TYPE_AUDIO; if (avcodec_open(audioCodec, codec) < 0) return; bufSize = FF_MIN_BUFFER_SIZE * 10; buf = (uint8_t *)malloc(bufSize); if (buf == NULL) return; frameBytes = audioCodec->frame_size * audioCodec->channels * 2; while (audioSize >= frameBytes) { int packetSize; packetSize = avcodec_encode_audio(audioCodec, buf, bufSize, (short *)audioData); printf("encoder returned %d bytes of data\n", packetSize); audioData += frameBytes; audioSize -= frameBytes; } } int main() { FILE *stream = fopen("audio.pcm", "rb"); size_t size; uint8_t *buf; if (stream == NULL) { printf("Unable to open file\n"); return 1; } fseek(stream, 0, SEEK_END); size = ftell(stream); fseek(stream, 0, SEEK_SET); buf = (uint8_t *)malloc(size); fread(buf, sizeof(uint8_t), size, stream); fclose(stream); EncodeTest(32000, 2, 448000, buf, size); }

    Read the article

  • How do I solve an unresolved external when using C++ Builder packages?

    - by David M
    I'm experimenting with reconfiguring my application to make heaving use of packages. Both I and another developer running a similar experiment are running into a bit of trouble when linking using several different packages. We're probably both doing something wrong, but goodness knows what :) The situation is this: The first package, PackageA.bpl, contains C++ class FooA. The class is declared with the PACKAGE directive. The second package, PackageB.bpl, contains a class inheriting from FooA, called FooB. It includes FooB.h, and the package is built using runtime packages, and links to PackageA by adding a reference to PackageA.bpi. When building PackageB, it compiles fine but linking fails with a number of unresolved externals, the first few of which are: [ILINK32 Error] Error: Unresolved external '__tpdsc__ FooA' referenced from C:\blah\FooB.OBJ [ILINK32 Error] Error: Unresolved external 'FooA::' referenced from C:\blah\FooB.OBJ [ILINK32 Error] Error: Unresolved external '__fastcall FooA::~FooA()' referenced from blah\FooB.OBJ etc. Running TDump on PackageA.bpl shows: Exports from PackageA.bpl 14 exported name(s), 14 export addresse(s). Ordinal base is 1. Sorted by Name: RVA Ord. Hint Name -------- ---- ---- ---- 00002A0C 8 0000 __tpdsc__ FooA 00002AD8 10 0001 __linkproc__ FooA::Finalize 00002AC8 9 0002 __linkproc__ FooA::Initialize 00002E4C 12 0003 __linkproc__ PackageA::Finalize 00002E3C 11 0004 __linkproc__ PackageA::Initialize 00006510 14 0007 FooA:: 00002860 5 0008 FooA::FooA(FooA&) 000027E4 4 0009 FooA::FooA() 00002770 3 000A __fastcall FooA::~FooA() 000028DC 6 000B __fastcall FooA::Method1() const 000028F4 7 000C __fastcall FooA::Method2() const 00001375 2 000D Finalize 00001368 1 000E Initialize 0000610C 13 000F ___CPPdebugHook So the class definitely seems to be exported and available to link. I can see entries for the specific things ILink32 says it's looking for and not finding. Running TDump on the BPI file shows similar entries. Other info The class does descend from TObject, though originally before refactoring into packages it was a normal C++ class. (More detail below. It seems "safer" using VCL-style classes when trying to solve problems with a very Delphi-ish thing like this anyway. Changing this only changes the order of unresolved externals to first not find Method1 and Method2, then others.) Declaration for FooA: class PACKAGE FooA: public TObject { public: FooA(); virtual __fastcall ~FooA(); FooA(const FooA&); virtual __fastcall long Method1() const; virtual __fastcall long Method2() const; }; and FooB: class FooB: public FooA { public: FooB(); virtual __fastcall ~FooB(); ... other methods... }; All methods definitely are implemented in the .cpp files, so it's not not finding them because they don't exist! The .cpp files also contain #pragma package(smart_init) near the top, under the includes. Questions that might help... Are packages reliable using C++, or are they only useable with Delphi code? Is linking to the first package by adding a reference to its BPI correct - is that how you're supposed to do it? I could use a LIB but it seems to make the second package much larger, and I suspect it's statically linking in the contents of the first. Can we use the PACKAGE directive only on TObject-derived classes? There is no compiler warning using it on standard C++ classes. Is splitting code into packages the best way to achieve the goal of isolating code and communicating through defined layers / interfaces? I've been investigating this path because it seems to be the C++Builder / Delphi Way, and if it worked it looks attractive. But are there better alternatives? I'm very new to using packages and have only known about them through using components before. Any general words of advice would be great! We're using C++Builder 2010. I've fabricated the class and method names in the above code examples, but other than that the details are exactly what we're seeing. Cheers, David

    Read the article

  • Mootools - how to destroy a class instance

    - by Rob
    What I'm trying to do is create a class that I can quickly attach to links, that will fetch and display a thumbnail preview of the document being linked to. Now, I am focusing on ease of use and portability here, I want to simply add a mouseover event to links like this: <a href="some-document.pdf" onmouseover="new TestClass(this)">Testing</a> I realize there are other ways I can go about this that would solve my issue here, and I may end up having to do that, but right now my goal is to implement this as above. I don't want to manually add a mouseout event to each link, and I don't want code anywhere other than within the class (and the mouseover event creating the class instance). The code: TestClass = new Class({ initialize: function(anchor) { this.anchor = $(anchor); if(!this.anchor) return; if(!window.zzz) window.zzz = 0; this.id = ++window.zzz; this.anchor.addEvent('mouseout', function() { // i need to get a reference to this function this.hide(); }.bind(this)); this.show(); }, show: function() { // TODO: cool web 2.0 stuff here! }, hide: function() { alert(this.id); //this.removeEvent('mouseout', ?); // need reference to the function to remove /*** this works, but what if there are unrelated mouseout events? and the class instance still exists! ***/ //this.anchor.removeEvents('mouseout'); //delete(this); // does not work ! //this = null; // invalid assignment! //this = undefined; // invalid assignment! } }); What currently happens with the above code: 1st time out: alerts 1 2nd time out: alerts 1, 2 3rd time out: alerts 1, 2, 3 etc Desired behavior: 1st time out: alerts 1 2nd time out: alerts 2 3rd time out: alerts 3 etc The problem is, each time I mouse over the link, I'm creating a new class instance and appending a new mouseout event for that instance. The class instance also remains in memory indefinitely. On mouseout I need to remove the mouseout event and destroy the class instance, so on subsequent mouseovers we are starting fresh.

    Read the article

  • How to make exported .XLS file Editable

    - by nCdy
    How to make exported .XLS file Editable Thid code makes .XLS File Read Only :( using System; using System.Data; using System.Configuration; using System.IO; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class GridViewExportUtil { /// <param name="fileName"></param> /// <param name="gv"></param> public static void Export(string fileName, GridView gv) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader( "content-disposition", string.Format("content-disposition", "attachment; filename={0}", fileName)); HttpContext.Current.Response.ContentType = "application/ms-excel"; HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Charset = System.Text.Encoding.Unicode.EncodingName; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Unicode; HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { // Create a form to contain the grid Table table = new Table(); // add the header row to the table if (gv.HeaderRow != null) { GridViewExportUtil.PrepareControlForExport(gv.HeaderRow); table.Rows.Add(gv.HeaderRow); } // add each of the data rows to the table foreach (GridViewRow row in gv.Rows) { GridViewExportUtil.PrepareControlForExport(row); table.Rows.Add(row); } // add the footer row to the table if (gv.FooterRow != null) { GridViewExportUtil.PrepareControlForExport(gv.FooterRow); table.Rows.Add(gv.FooterRow); } // render the table into the htmlwriter table.RenderControl(htw); // render the htmlwriter into the response HttpContext.Current.Response.Write(sw.ToString()); HttpContext.Current.Response.End(); } } } /// <summary> /// Replace any of the contained controls with literals /// </summary> /// <param name="control"></param> private static void PrepareControlForExport(Control control) { for (int i = 0; i < control.Controls.Count; i++) { Control current = control.Controls[i]; if (current is LinkButton) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); } else if (current is ImageButton) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); } else if (current is HyperLink) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); } else if (current is DropDownList) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); } else if (current is CheckBox) { control.Controls.Remove(current); control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False")); } if (current.HasControls()) { GridViewExportUtil.PrepareControlForExport(current); } } } }

    Read the article

  • Stata - Multiple rotated plots on graph (including distributions on sides of axes)

    - by meerak
    I would like to produce a single graph containing both: (1) a scatter plot (2) either histograms or kernel density functions of the Y and X variables to the left of the Y axis and below the X axis. I found a graph that does this in MATLAB -- I would just like to produce something similar in Stata: That graph was produced using the following MATLAB code: n = 1000; rho = .7; Z = mvnrnd([0 0], [1 rho; rho 1], n); U = normcdf(Z); X = [gaminv(U(:,1),2,1) tinv(U(:,2),5)]; [n1,ctr1] = hist(X(:,1),20); [n2,ctr2] = hist(X(:,2),20); subplot(2,2,2); plot(X(:,1),X(:,2),'.'); axis([0 12 -8 8]); h1 = gca; title('1000 Simulated Dependent t and Gamma Values'); xlabel('X1 ~ Gamma(2,1)'); ylabel('X2 ~ t(5)'); subplot(2,2,4); bar(ctr1,-n1,1); axis([0 12 -max(n1)*1.1 0]); axis('off'); h2 = gca; subplot(2,2,1); barh(ctr2,-n2,1); axis([-max(n2)*1.1 0 -8 8]); axis('off'); h3 = gca; set(h1,'Position',[0.35 0.35 0.55 0.55]); set(h2,'Position',[.35 .1 .55 .15]); set(h3,'Position',[.1 .35 .15 .55]); colormap([.8 .8 1]); UPDATE: The Stata13 manual entry for "graph combine" has precisely this example (http://www.stata.com/manuals13/g-2graphcombine.pdf). Here is the code: use http://www.stata-press.com/data/r13/lifeexp, clear generate loggnp = log10(gnppc) label var loggnp "Log base 10 of GNP per capita" scatter lexp loggnp, ysca(alt) xsca(alt) xlabel(, grid gmax) fysize(25) saving(yx) twoway histogram lexp, fraction xsca(alt reverse) horiz fxsize(25) saving(hy) twoway histogram loggnp, fraction ysca(alt reverse) ylabel(,nogrid) xlabel(,grid gmax) saving(hx) graph combine hy.gph yx.gph hx.gph, hole(3) imargin(0 0 0 0) graphregion(margin(l=22 r=22)) title("Life expectancy at birth vs. GNP per capita") note("Source: 1998 data from The World Bank Group")

    Read the article

  • JRuby wrong element type class java.lang.String(array contains char) related to JAVA_HOME

    - by Daryl
    I am on Ubuntu x64 bit running: java version "1.6.0_18" OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1) OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) and jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2010-02-11 6586) (OpenJDK 64-Bit Server VM 1.6.0_18) [amd64-java] I have this code running on my Windows 7 computer at home. I recently copied over my whole folder over to Ubuntu, installed java, jruby, and associated gems but I get this error when I run my main file: jruby run.rb test =================Processing FREDERICKSBURG_1.1======================= ERROR IN TESTING wrong element type class java.lang.String(array contains char) /home/daryl/Desktop/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `to_java' /home/daryl/Desktop/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `split' /home/daryl/Desktop/work/Code/geografikos/lib/models/page.rb:103:in `sentences' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/lingpipe_svm.rb:34:in `extract' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:9:in `process' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `each' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `process' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `each' /home/daryl/Desktop/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `process' /home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:111:in `generate_all' /home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:105:in `each' /home/daryl/Desktop/work/Code/geografikos/lib/statistics.rb:105:in `generate_all' run.rb:56 The focus of the error is: ERROR IN TESTING wrong element type class java.lang.String(array contains char) Everything works fine on my windows machine. I figured I was getting this error because I did not have JAVA_HOME set however I added this to bashrc as: export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk and have confirmed: echo $JAVA_HOME /usr/lib/jvm/java-1.6.0-openjdk I can produce a similar error by removing my JAVA_HOME variable on windows: =================Processing FREDERICKSBURG_1.3======================= ERROR IN TESTING cannot convert instance of class org.jruby.RubyString to char C:/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `to_java' C:/work/Code/geografikos/lib/sentence_splitter/splitter.rb:21:in `split' C:/work/Code/geografikos/lib/models/page.rb:103:in `sentences' C:/work/Code/geografikos/lib/extractor/lingpipe_svm.rb:34:in `extract' C:/work/Code/geografikos/lib/extractor/geo_controller.rb:9:in `process' C:/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `each' C:/work/Code/geografikos/lib/extractor/geo_controller.rb:8:in `process' C:/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `each' C:/work/Code/geografikos/lib/extractor/geo_controller.rb:6:in `process' C:/work/Code/geografikos/lib/statistics.rb:111:in `generate_all' C:/work/Code/geografikos/lib/statistics.rb:105:in `each' C:/work/Code/geografikos/lib/statistics.rb:105:in `generate_all' run.rb:56 It is obviously not exactly the same but I have a feeling this has to do with the java path. You can probably derive from the error that I am just trying to convert a ruby variable to java using to_java. This works fine on my windows machine and I have confirmed the gems are the same but I don't think this has to do with gems. I lied. I changed my JAVA_HOME back on my windows machine and this error still occurs. So now the code doesn't run on either machine. I recently installed git on my windows machine and added the code to a repository. But I haven't really done anything with it. All it said was it will convert all LF to CRLF...That shouldn't change anything though should it? Any ideas on why I am now getting these errors? I haven't changed anything on my windows machine in months except for installing git.

    Read the article

  • Vista/7: How to get glass color?

    - by Ian Boyd
    How do you use DwmGetColorizationColor? The documentation says it returns two values: a 32-bit 0xAARRGGBB containing the color used for glass composition a boolean parameter that is true "if the color is an opaque blend" (whatever that means) Here's a color that i like, a nice puke green: You can notice the color is greeny, and the translucent title bar (against a white background) shows the snot color very clearly: i try to get the color from Windows: DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend); And i get dwColorization: 0x0D0A0F04 bIsOpaqueBlend: false According to the documentation this value is of the format AARRGGBB, and so contains: AA: 0x0D (13) RR: 0x0A (10) GG: 0x0F (15) BB: 0x04 (4) This supposedly means that the color is (10, 15, 4), with an opacity of ~5.1%. But if you actually look at this RGB value, it's nowhere near my desired snot green. Here is (10, 15, 4) with zero opacity (the original color), and (10,15,4) with 5% opacity against a white/checkerboard background: So the question is: How to get glass color in Windows Vista/7? i tried using DwmGetColorizationColor, but that doesn't work very well. A person with same problem, but a nicer shiny picture to attract you squirrels: So, it boils down to – DwmGetColorizationColor is completely unusable for applications attempting to apply the current color onto an opaque surface. i love this guy's screenshots much better than mine. Using his screenshots as a template, i made up a few more sparklies: For the last two screenshots, the alpha blended chip is a true partially transparent PNG, blending to your browser's background. Cool! (i'm such a geek) Edit 2: Had to arrange them in rainbow color. (i'm such a geek) Edit 3: Well now i of course have to add Yellow. Undocumented/Unsupported/Fragile Workarounds There is an undocumented export from DwmApi.dll at entry point 137, which we'll call DwmGetColorizationParameters: HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params); struct DWMCOLORIZATIONPARAMS { public UInt32 ColorizationColor; public UInt32 ColorizationAfterglow; public UInt32 ColorizationColorBalance; public UInt32 ColorizationAfterglowBalance; public UInt32 ColorizationBlurBalance; public UInt32 ColorizationGlassReflectionIntensity; public UInt32 ColorizationOpaqueBlend; } We're interested in the first parameter: ColorizationColor. We can also read the value out of the registry: HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM ColorizationColor: REG_DWORD = 0x6614A600 So you pick your poison of creating appcompat issues. You can rely on an undocumented API (which is bad, bad, bad, and can go away at any time) use an undocumented registry key (which is also bad, and can go away at any time) See also Is there a list of valid parameter combinations for GetThemeColor / Visual Styles API How does Windows change Aero Glass color? DWM - Colorization Color Handling Using DWMGetColorizationColor Retrieving Aero Glass base color for opaque surface rendering i've been wanting to ask this question for over a year now. i always knew that it's impossible to answer, and that the only way to get anyone to actually pay attention is to have colorful screenshots; developers are attracted to shiny things. But on the downside it means i had to put all kinds of work into making the lures.

    Read the article

  • Possible to use Python with Intel's Atom Developer SDK (C/C++)?

    - by Jordan Magnuson
    So I've made a game in Python and PyGame. Now I'm interested in submitting the game to Intel's March Developer Challenge. However, the developer challenge requires use of Intel's Atom Developer SDK (http://appdeveloper.intel.com/en-us/sdk), which only has API's for C and C++. I'm new to Python and PyGame, and have no experience in C or C++. My question is, would it be possible to somehow implement Intel's Atom SDK through/with/from a Python application (as the first link above suggests)? I've read up a little bit on embedding/extending Python into/with C, but I'm not entirely sure what to embed or where. I mean, I know I can do things like this in C: #include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyRun_SimpleString("from time import time,ctime\n" "print 'Today is',ctime(time())\n"); Py_Finalize(); return 0; } But what do I do about all my dependencies on Python and Pygame, for people that don't have those installed on their machines? Normally Py2Exe takes care of compacting the required dependencies (I've managed to package my game into an exe/zip), but how do I take care of that stuff in the context of embedding within C? Can I somehow work with py2exe on this, or do I need to do something entirely different for embedding within C? It seems like it would be a lot easier to go the route of extending Python with the C validation code, rather than trying to embed my whole game within C, but I think that's not an option, "because the library provided is currently only available as a Visual Studio 2008 '.lib'", meaning the application has to be compiled with Visual Studio...? Any help, thoughts, or ideas are much appreciated! You can find the complete SDK Developer's Guide on the intel site above, but here is their "Hello World" using the C Language API: #include <stdio.h> #include “adpcore.h” int main( int argc, char* argv[] ) { ADP_RET_CODE ret_code; const ADP_APPLICATIONID myApplicationID = {{ 0x12345678,0x11112222,0x33331234,0x567890ab}}; if ((ret_code = ADP_Initialize()) != ADP_SUCCESS ){ printf( “ERROR: exiting” ); exit( -1 ); } if (( ret_code = ADP_IsAuthorized( myApplicationId )) == ADP_AUTHORIZED ) printf( “Hello World” ); else printf( “Not authorized to run” ); exit 0; } 35 Page SDK Developer Guide: http:// appdeveloper.intel.com/sites/files/pages/SDK%20Developer%20Guide.pdf

    Read the article

  • Select Multiple Images Using GalleryView

    - by hwrdprkns
    Hi guys, I was just wondering if Android had built in code so that I could select multiple images in a gallery-view and then have those images exported as filenames in a string array(ex /sdcard/~f1.jpg, /sdcard/~f2.jpg,...). I have the gallery code here, but I'm not sure what modifications need to be made. Any help is appreciated. Thanks! // take_picture = (Button)findViewById(R.id.take_picture); // Here we set up a string array of the thumbnail ID column we want to // get back String[] proj = { MediaStore.Images.Thumbnails._ID }; if(proj.length == 0) { nopic.setVisibility(View.VISIBLE); } // Now we create the cursor pointing to the external thumbnail store cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, proj, // Which // columns // to // return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null); // Order-by clause (ascending by name) /* take_picture.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent i = new Intent(GalleryActivity.this, CameraActivity.class); startActivity(i); } }); */ // We now get the column index of the thumbnail id column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); // Reference the Gallery view g = (Gallery) findViewById(R.id.gallery); if(proj.length == 0) { nopic.setVisibility(View.VISIBLE); g.setVisibility(View.GONE); } // Set the adapter to our custom adapter (below) g.setAdapter(new ImageAdapter(this)); // Set a item click listener, and just Toast the clicked position g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { // Now we want to actually get the data location of the file String[] proj = { MediaStore.Images.Media.DATA }; // We request our cursor again cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, // Which // columns // to // return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null); // Order-by clause (ascending by name) // We want to get the column index for the data uri column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); // Lets move to the selected item in the cursor cursor.moveToPosition((int) g.getSelectedItemId()); // And here we get the filename String filename = cursor.getString(column_index); Log.v("GalleryActivity", filename); Toast.makeText(GalleryActivity.this, filename, Toast.LENGTH_SHORT).show(); setPrefs(filename); Intent i = new Intent(GalleryActivity.this, OtherClass.class); startActivity(i); } }); } And the ImageAdapter code here: public class ImageAdapter extends BaseAdapter { int mGalleryItemBackground; public ImageAdapter(Context c) { mContext = c; // See res/values/attrs.xml for the that defines // Gallery1. TypedArray a = obtainStyledAttributes(R.styleable.Gallery); mGalleryItemBackground = a.getResourceId( R.styleable.Gallery_android_galleryItemBackground, 0); a.recycle(); } public int getCount() { return cursor.getCount(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext); if (convertView == null) { cursor.moveToPosition(position); int id = cursor.getInt(column_index); i.setImageURI(Uri.withAppendedPath( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + id)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(200, 200)); // The preferred Gallery item background i.setBackgroundResource(mGalleryItemBackground); } return i; } } Again any help is appreciateds! Just to let you guys know, the gallery works fine (for one image) as in it exports the filename correctly. Just need to know if there is an easy way to select multiples and export them. Thanks again!

    Read the article

  • Derby gets stuck closing?

    - by bmargulies
    I've got unit tests (in maven) that use derby. At the end of the test run, there is a very long pause, with these log messages before the pause. INFO: Closing Hibernate SessionFactory Nov 16, 2009 8:30:31 PM org.hibernate.impl.SessionFactoryImpl close INFO: closing Nov 16, 2009 8:30:31 PM org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: Running hbm2ddl schema export Nov 16, 2009 8:30:31 PM org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: exporting generated schema to database Hibernate config: <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property> <property name="hbm2ddl.auto">create-drop</property> <property name="show_sql">false</property> </session-factory> </hibernate-configuration> referenced from: <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- data source elsewhere --> <property name="dataSource" ref="dataSource" /> <property name="mappingResources"> <list> <value>com/basistech/configdb/dao/Gazetteer.hbm.xml</value> <value>com/basistech/configdb/dao/FileGazetteer.hbm.xml</value> <value>com/basistech/configdb/dao/Regexpset.hbm.xml</value> <value>com/basistech/configdb/dao/Redactjoiner.hbm.xml</value> <value>com/basistech/configdb/dao/Misc.hbm.xml</value> </list> </property> <property name="configLocation" value="classpath:com/basistech/configdb/dao/hibernate.xml"/> and finally maven: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>codegen</id> <goals> <goal>hbm2java</goal> </goals> <phase>generate-sources</phase> <configuration> <components> <component> <name>hbm2java</name> </component> </components> <componentProperties> <configurationfile>src/main/hibernate/codegen-hibernate.xml</configurationfile> </componentProperties> </configuration> </execution> </executions> </plugin>

    Read the article

  • Google Drive Update keeps throwing an error when I try to save a thumbnail

    - by Dano64
    The Base64 string checks out fine. I was able to export it to another website and download it again as my image. When I try to do an update using the Drive Javascript api, it just keeps returning this error: Invalidvaluefor:Notavalidbase64bytestring I also true making the string URL safe. Per this page https://google-api-client-libraries.appspot.com/documentation/drive/v2/python/latest/drive_v2.files.html Am I doing something wrong here, the documentation says send Base64, the string is valid and, the string is intact throughout the process, but Google will not accept it? I am using the javascript api, I think there is maybe a bug sending the thumbnail using the javascript api. This is the request Request URL:https://www.googleapis.com/upload/drive/v2/files/?uploadType=multipart Request Method:POST Status Code:400 Bad Request **Request Headers** :host:www.googleapis.com :method:POST :path:/upload/drive/v2/files/?uploadType=multipart :scheme:https :version:HTTP/1.1 accept:*/* accept-encoding:gzip,deflate,sdch accept-language:en-US,en;q=0.8 authorization:Bearer ya29.AHES6ZQr...YXDacdY4 content-length:14313 content-type:multipart/mixed; boundary="--mpart_delim" origin:https://www.googleapis.com x-javascript-user-agent:google-api-javascript-client/1.1.0-beta x-origin:https://app.pinteract.com x-referer:https://app.pinteract.com **Query String Parameters** uploadType:multipart **Request Payload** ----mpart_delim Content-Type: application/json {"id":null,"title":"Test Pinup.pint","mimeType":"application/vnd.pinteract.pint","thumbnail":{"mimeType":"image/png","image":"iVBORw0KGgoAAAANSUh...UVORK5CYII%3D"}} ----mpart_delim Content-Type: application/vnd.pinteract.pint Content-Transfer-Encoding: binary { "header" : {"id":"215A660A"} "members" : [ {"id":"100523752012631912873"} ], "manifest" : [ {"id":"0000","ele":[],"own":"100523752012631912873","dtc":1371679680000,"txt":"&Delta; Created","typ":0} ], "elements" : [ {"id":"0F54","x":560,"y":264,"bak":"#44ff44","own":"100523752012631912873","srt":"544","sta":0,"wid":120,"hgt":120,"dtc":0,"rec":"","txt":"This is Note"} ] } ----mpart_delim-- **Response Headers** content-length:10848 content-type:application/json date:Mon, 01 Jul 2013 14:41:33 GMT server:HTTP Upload Server Built on Jun 25 2013 11:32:14 (1372185134) status:400 Bad Request version:HTTP/1.1 This is the Response { "error": { "errors": [ { "domain": "global", "reason": "invalid", "message": "Invalid value for: Not a valid base64 byte string: iVBORw0KGgoAAAANSUhEUg...AASUVORK5CYII%3D" } ], "code": 400, "message": "Invalid value for: Not a valid base64 byte string: iVBORw0KGgoAAAANSU...lRtkAAAAASUVORK5CYII%3D" } } Raw Base64 String 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"}],"code":400,"message":"Invalidvaluefor:Notavalidbase64bytestring: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 Url Encoded Base64 String iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADjVJREFUeNrsXX2MHVUVP3fevH27SxfKhyBCsIqoKOhCBBISY5Hyj2JSGuXLP6SJwYAYICgxsUBr1AhqbE2I8Q9jjYE%2FCLFbP4IxVbaIYjAmS0wUC6ELRGy7tPt2t9vd997MPd6Z%2B3Xunfsq1r7tvNe56TAfO2%2FezO93zu%2Fce%2B6ZB0DVqla1qlWtalWrWtWqVrWqVa1qJ1Nj%2FXCTm5%2BbHeUcz9%2B3f25tmvLVSYePIyLIBRhX24yxKXH63Kljw5Ni97UfbVhzpCLgGNs3%2Fjp%2F%2Fr9en72l3UnWCsCvSjrpmQA54Nkq28q3FQn5mucL5OuIsUPi6f5Si6KJVasaT26%2F%2BT1vVgS8hfbl3%2B27br65dE%2Br1VknrH6IIfkjolmh%2FA8hwYJv1lySInYXhXc8W49r235%2B%2ByVPVQQE2lee3n%2Fd3OzS5tZS%2B2oWurlMYgj4qI45HsApCZYAzgFSsU7FfhSx5%2BtxtHnnHR9%2BqiJAtPsnD1y4MLf09aXF9q3ZzTAmb8ohQaKtHEDLkGv9qIBHBbgmICXrlKyjKHoirkWbfn3X%2BEsnLQH37dr3mebs4o8x4WMSfGbAtyQoDSLga8BBeQJqqXE8QQIt12D2syVR2%2BLcxVpcu%2F23d1%2F%2B%2BElFwPdeXB555eWZ7x453LozEvuRtvqMgCyAhm7QyI7Sf7BEcI4mCNP9lBKhrD9R2zkJqVwLWfpOYyje8tSXLlsceAIy8Pf8Y98vOq1kXQZ8JG5By06kLZ%2F5%2Bm8DcEiCMt3XXpCTwN0YkKrYkFu%2F0CfpCSC3M1IEEeILJ0ca9et%2Fc%2FfliwNLQAb%2BSxR8JTkRJUAdy4DOtxCdQGyDb6ALyq0HuEHYyo%2BOAYlaUkVI7hkAk8ON%2BPpd935kceAIMOC3BfjiayUB1gO0FAG4QTjfN9pTjAO0%2F0%2B9ICeDBmGyJDQoEzIyjxCr3YKET%2F7%2BvitWhIRopQh4%2BZ%2F7fyAtX4PPQG%2FX1JLt19Rit8XfIjDb7uftdWqa0Ox8sNfIF%2FCvK4mPFAB6yf4uaPzYYit5dKVwWREC7vrV619sLXU%2BL8Gg4AEBlXgFBdN8JgQ6M%2BfUHJDJNWiQD1yHkXOlDLLMcz53xTf%2FdNtASNBXn5l598y%2B%2Bb%2BL3k2j5gFdU1KkA2%2FkdEOR9IDsOpSCQBN4M%2F3nJuCaOEC03pEhJTuJJ0XtbEHsxBG75PmvXb2nrz3gzZnD2wVCjQgYsUAgVm2lRwdiR6LA9w4lS2YNnlcRq%2FavB653MfrdnueJf%2FXllP%2BkryXozl%2B%2BtoF30o9GnoVrvZU9HtINNaD44BFgHSmx4DP%2FswRkKz9F3WcGCOt9NQ0MwtWXbnn2xr4loL2cbNYDLAdcQgTz9FpbtAaUERANsJEFklHvIOMISiBzrqlJD4w%2FyKJJEL2lh%2FqSgDt2vrohTdJL%2FQdzBlvMtUQ6Io6cXgwBngZWD%2FxIeZVeM49o5g30KEGh%2B1Td4g%2B8f%2FMfbuw7Atotbf0EVOchmQuGts5APsh4UNCbSBoDPE%2FoYt3B48zekzEIVF7Ae%2BcFPSHgCxOvXpwm%2FFLHslQ6GZgLfNfFk54iuMwhyAf2aJLTfcHg8cwLLnzwmQ%2F2DQFCem4pgOR4gzviLQDD3gIRzE1h%2BPshyaEB3wPYORccImVyUHR1P9s3BCSd9CZ%2FsOFPsjCV4ymkHViYCJOmYEV5co8xF1DnHrDwfe6cg1wzdZCRE8WY4tN9QYAY9Z4rBj7vzZNpiMWRHqJ5yKMCQcBg3cgJkpFPzjtkRw7x%2BruwqxQBkUxNnGgXXbBp8rzSE3BksT3uZDDJUJahD7hKsGFACug%2BCx8vegQWRtEsOOzHwO1h8WEQncOiSzpeegLaneQqB2wMEKHWGHhgigUzs2FYsHyAcNzonmfBgneZBfDoORk03nlF6QkQffCL3WdFM4uFSLUWHcuzTqPrTtCdkvSMlwb5ozZVPQHo3g8L%2BqgjOZ7t5HvHvScUH%2FceUMrPrmkTzW%2BagbRrZswIkXmGKHUbPWCQWDH6shUK8n4g9aVQGQFT3%2BkYguGdGAoWHOas0nsAqowlnbUyD%2BBPpoNX56M%2FR7wAzHkItjLCDaQO1gZXBOcQ3Tego4dzYAsBMBw5yukB8o6ZARiVZSs7l8e8NSOKr60euwRM39J1bZBZG%2FKsRTuxhRoE%2BQ6T3gZqNPk0pWUXsfwEaA%2FIHyQHX1sZM%2FCiY9OWLH0GJ66ZSwYJuoYgDxMj9QiFeiFbzIWGA3oOBKrvdIWF9j9Z8NUPHoBoQUVq7RJsbnpCTIFNgEeZUANFghmZogWeYVG6bAmirYqgJSwFItC3eNdwqIdwpN7SBx7A0YZdRCo1ECQiMlYvk3WcDJAi7QGBYAzepDyqSXlTpKXWEPAI7sQk7RmWJFPeqGXInNcHHtBKUhiJa%2FKBsoq0CBSwQJIENg2RP7AqyNIdpYhYnfYI9KYo%2FSlJWxdKSSHgBTyAQzfZcqc9OfGG0veC4ijaTcsEgdZskqo1W7%2FjVrbpEhL6N7kPzpwu99dqHljPDaNXqGuvby0cQyQpY%2BEK8BSsV4i2u%2FQecLjdmR4biq2Gc5WCZmgSXJwzKeYkqqKyfDqyjZT12VEtFrqZ6FTC0bJ0S7AGMD8PSB2R8RjrOUhK3FPQniIlSpAxXXoCFlrJ1Kp6rLScmVElU2gzf5TFbJIMzawYM8GWBXI4tEoaObrvB5A6UBMLPI8qWj6aLmdeyqjApx6QSqKmjjdePSlL%2BdQPX5gdjqPVea2OKqqyBVFuXZCukgOg9TvZMVuamGc3%2FRJFJAMsXqyOowW53CtF0UW6VtK4qpgGaIvtlrhOS6yz8hS5na2xefDha0%2Fvg4FYrsUT4v5vy1PD3JUfSjnKMZvt66PNxWA%2Bk8VtahjdHhCQFzVoebpTC0S2uV%2B2SOOCkSFl%2FWitPy9hlN4x0TcTMjOLrZ1GRwMFsno77yVxWjzlWqUTfNH%2Fu1to637GBT8%2Fjxbr6uCOhBR1TqplCKTscNDygzt7gVXPKuM%2B8ejUbKOWyRCt61TlHqYQihVKSY7%2Bloy0eqZAgkCRrl8d7b8Zk5rXlVSlnC5bF8dasiJOV8Zp6RHb0DzUA%2FnpmQfkwXi5s80CwF2rRbdc0PEQ9eJEwdqJ9yQFj%2BHBc5MA%2BNx5m9LuJ0R%2B8hhhJCgnd1uvcOoZAS%2Fsn9sqBmVNCnoIzAJwafdj%2BuUKnvKuwCeBgCutHozM%2BDEhUYDbNSgScu1vit2tfUfA%2FCPrmgvtRHqBM4gCByBOQKTAUPAl8FwAb4tpE97dS5JuZFNZUtadKsATQ4RYAIhHwLameJa%2BIyBrfzswv3WxI7yASIEPjvumilpS1xMK3UjHe3xC1DXQexmDyhEJwh2OLviuJwjgcWsvMep5efr4t55b%2F%2FZThnbk4wBw%2B%2F6F2n3wS0v8EnUyIYM0tex1Q8l26qUkUjViThT4HZSLDLyQB9%2BODLzZuTcI65%2FoawKyduW3%2F7zj9OH6%2BihEgDcA82t3GEBxMkQBqntFvPC%2BMDjdS5qm0IGWgt%2FRwKveT7Yvjk8I8G%2FoNTbxShDw4qHDGz901tia0bg2jirvo9fcIQC7lJ%2Bgk6RHPdEPUMhcOj9ZAMW353O5kgAroNU2pxKUpxw2rgQ2K%2FaS3jsf3D1%2B%2Fqrhp0fE2MCkIzwJ6lYy6Fu%2FJcCf8QqMB8Baf6JAT8i2lp9EyY441hSfuWbukXVTA0VATsIDu8fPO6Xx9HBGAi1NJ2XkAMUKtcKcJ523JeBz5ycLbMo5VUDbtZYgua%2FBF72fpvjMNc0VAn%2FFCcjaBQ9Mjr9jtJF7An1zhQZiO0VvM6VQSEdbDwCPACpDKenVpMbybW9Hb2ejXfHpFQX%2FhBCQk7Bpcvzs4aEdo3G0hr4fHEGoiNdNRdOUhEuElSOdTEvABt2EkNFx%2Bv3CCwCmUfZ4plYaixP2Yx2n3r9r9QWnNHasrsdrQ68KwX8hAOiEjJ421H18oGkFRQSXg6%2BO7gUZr4BJcYUbejnYKiUBuq3ZNHnPGY36Q42IrWYBL2B%2B4Szt%2F2vZAfJDTd6kigZeSw7J82R6v2X2kXVbT%2BTzl%2BIHm4Q3rDlnuP6Q6KbeVjfxAPWbis7NojcdqSfWubJ8riUIrAfo1ENiPAS2i2NbRE9n%2BkQ%2Fe6l%2Bsuw0QcSZwhtEL8kQQUvbTb0aLec0lk9Gv2AHYwkhQvzbLpYthx6%2Bdrosz1zKH%2B3LPGIsrq2PDu79%2FvA5F8p3igMEAFjZQV%2BCrCxNicM%2FFdY%2FUQaL7wsCdBsZGcH6GefB2EVXwsi574Pa294FSeM0aNVPpeMyFYQRhtrzEC0dgnTmFWi9sQcW9k5NLr2x5%2BPQm7ra%2FklF%2FF8WcngG4r1%2FhLG5F%2BHsQ%2BfA6OgoDDUaEMdx9rtv0vLTFNqdDrSWl2FhYQEOHNgPyeysCLOzzAsfpWsRDH5jZfb2gSQA3fQFKzMJJ4sHlJaEeFA9QHlB6G1YLFNMGGAPQPqMrKyeEMNgN5pg5V08AU6kNwwsASQQUy%2FnXdzkhElSPODgs4DMhkioPKA3RJgfvwoFCN6FkIqA4xwDQgTo90eSKgj3oHGe0q5oHBgVZwR0ql5Qz2MAhjwg%2B2O7Goj1VvtpD6jugb8AJUrMDagEcToSjgn48yCrzkvTBjYZx7khoK6e82AZgu5JQ4Bqi%2BoZ%2F10m3e8bAgSQE8dOQE7CJMh3e5fL%2BoylJiCKom3HSoBYDqdp%2BpjYLfX%2FTa%2FUBBw5cmSSMbb1WAhgLNqYJMnLZZfL0seAZrN5rwDzfyGhWa%2FXNx48%2BOaT%2FRCv%2BiIIT0%2FvvbfRaFwjvOFoMSErLdxeq9Uu27v3le390mFg0IftpptvXetURXDefPyxn01B1apWtapVrWpVq1rVqla1t9L%2BI8AAvydNUrElRtkAAAAASUVORK5CYII%3D

    Read the article

  • Steganography Experiment - Trouble hiding message bits in DCT coefficients

    - by JohnHankinson
    I have an application requiring me to be able to embed loss-less data into an image. As such I've been experimenting with steganography, specifically via modification of DCT coefficients as the method I select, apart from being loss-less must also be relatively resilient against format conversion, scaling/DSP etc. From the research I've done thus far this method seems to be the best candidate. I've seen a number of papers on the subject which all seem to neglect specific details (some neglect to mention modification of 0 coefficients, or modification of AC coefficient etc). After combining the findings and making a few modifications of my own which include: 1) Using a more quantized version of the DCT matrix to ensure we only modify coefficients that would still be present should the image be JPEG'ed further or processed (I'm using this in place of simply following a zig-zag pattern). 2) I'm modifying bit 4 instead of the LSB and then based on what the original bit value was adjusting the lower bits to minimize the difference. 3) I'm only modifying the blue channel as it should be the least visible. This process must modify the actual image and not the DCT values stored in file (like jsteg) as there is no guarantee the file will be a JPEG, it may also be opened and re-saved at a later stage in a different format. For added robustness I've included the message multiple times and use the bits that occur most often, I had considered using a QR code as the message data or simply applying the reed-solomon error correction, but for this simple application and given that the "message" in question is usually going to be between 10-32 bytes I have plenty of room to repeat it which should provide sufficient redundancy to recover the true bits. No matter what I do I don't seem to be able to recover the bits at the decode stage. I've tried including / excluding various checks (even if it degrades image quality for the time being). I've tried using fixed point vs. double arithmetic, moving the bit to encode, I suspect that the message bits are being lost during the IDCT back to image. Any thoughts or suggestions on how to get this working would be hugely appreciated. (PS I am aware that the actual DCT/IDCT could be optimized from it's naive On4 operation using row column algorithm, or an FDCT like AAN, but for now it just needs to work :) ) Reference Papers: http://www.lokminglui.com/dct.pdf http://arxiv.org/ftp/arxiv/papers/1006/1006.1186.pdf Code for the Encode/Decode process in C# below: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing.Imaging; using System.Drawing; namespace ImageKey { public class Encoder { public const int HIDE_BIT_POS = 3; // use bit position 4 (1 << 3). public const int HIDE_COUNT = 16; // Number of times to repeat the message to avoid error. // JPEG Standard Quantization Matrix. // (to get higher quality multiply by (100-quality)/50 .. // for lower than 50 multiply by 50/quality. Then round to integers and clip to ensure only positive integers. public static double[] Q = {16,11,10,16,24,40,51,61, 12,12,14,19,26,58,60,55, 14,13,16,24,40,57,69,56, 14,17,22,29,51,87,80,62, 18,22,37,56,68,109,103,77, 24,35,55,64,81,104,113,92, 49,64,78,87,103,121,120,101, 72,92,95,98,112,100,103,99}; // Maximum qauality quantization matrix (if all 1's doesn't modify coefficients at all). public static double[] Q2 = {1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1}; public static Bitmap Encode(Bitmap b, string key) { Bitmap response = new Bitmap(b.Width, b.Height, PixelFormat.Format32bppArgb); uint imgWidth = ((uint)b.Width) & ~((uint)7); // Maximum usable X resolution (divisible by 8). uint imgHeight = ((uint)b.Height) & ~((uint)7); // Maximum usable Y resolution (divisible by 8). // Start be transferring the unmodified image portions. // As we'll be using slightly less width/height for the encoding process we'll need the edges to be populated. for (int y = 0; y < b.Height; y++) for (int x = 0; x < b.Width; x++) { if( (x >= imgWidth && x < b.Width) || (y>=imgHeight && y < b.Height)) response.SetPixel(x, y, b.GetPixel(x, y)); } // Setup the counters and byte data for the message to encode. StringBuilder sb = new StringBuilder(); for(int i=0;i<HIDE_COUNT;i++) sb.Append(key); byte[] codeBytes = System.Text.Encoding.ASCII.GetBytes(sb.ToString()); int bitofs = 0; // Current bit position we've encoded too. int totalBits = (codeBytes.Length * 8); // Total number of bits to encode. for (int y = 0; y < imgHeight; y += 8) { for (int x = 0; x < imgWidth; x += 8) { int[] redData = GetRedChannelData(b, x, y); int[] greenData = GetGreenChannelData(b, x, y); int[] blueData = GetBlueChannelData(b, x, y); int[] newRedData; int[] newGreenData; int[] newBlueData; if (bitofs < totalBits) { double[] redDCT = DCT(ref redData); double[] greenDCT = DCT(ref greenData); double[] blueDCT = DCT(ref blueData); int[] redDCTI = Quantize(ref redDCT, ref Q2); int[] greenDCTI = Quantize(ref greenDCT, ref Q2); int[] blueDCTI = Quantize(ref blueDCT, ref Q2); int[] blueDCTC = Quantize(ref blueDCT, ref Q); HideBits(ref blueDCTI, ref blueDCTC, ref bitofs, ref totalBits, ref codeBytes); double[] redDCT2 = DeQuantize(ref redDCTI, ref Q2); double[] greenDCT2 = DeQuantize(ref greenDCTI, ref Q2); double[] blueDCT2 = DeQuantize(ref blueDCTI, ref Q2); newRedData = IDCT(ref redDCT2); newGreenData = IDCT(ref greenDCT2); newBlueData = IDCT(ref blueDCT2); } else { newRedData = redData; newGreenData = greenData; newBlueData = blueData; } MapToRGBRange(ref newRedData); MapToRGBRange(ref newGreenData); MapToRGBRange(ref newBlueData); for(int dy=0;dy<8;dy++) { for(int dx=0;dx<8;dx++) { int col = (0xff<<24) + (newRedData[dx+(dy*8)]<<16) + (newGreenData[dx+(dy*8)]<<8) + (newBlueData[dx+(dy*8)]); response.SetPixel(x+dx,y+dy,Color.FromArgb(col)); } } } } if (bitofs < totalBits) throw new Exception("Failed to encode data - insufficient cover image coefficients"); return (response); } public static void HideBits(ref int[] DCTMatrix, ref int[] CMatrix, ref int bitofs, ref int totalBits, ref byte[] codeBytes) { int tempValue = 0; for (int u = 0; u < 8; u++) { for (int v = 0; v < 8; v++) { if ( (u != 0 || v != 0) && CMatrix[v+(u*8)] != 0 && DCTMatrix[v+(u*8)] != 0) { if (bitofs < totalBits) { tempValue = DCTMatrix[v + (u * 8)]; int bytePos = (bitofs) >> 3; int bitPos = (bitofs) % 8; byte mask = (byte)(1 << bitPos); byte value = (byte)((codeBytes[bytePos] & mask) >> bitPos); // 0 or 1. if (value == 0) { int a = DCTMatrix[v + (u * 8)] & (1 << HIDE_BIT_POS); if (a != 0) DCTMatrix[v + (u * 8)] |= (1 << HIDE_BIT_POS) - 1; DCTMatrix[v + (u * 8)] &= ~(1 << HIDE_BIT_POS); } else if (value == 1) { int a = DCTMatrix[v + (u * 8)] & (1 << HIDE_BIT_POS); if (a == 0) DCTMatrix[v + (u * 8)] &= ~((1 << HIDE_BIT_POS) - 1); DCTMatrix[v + (u * 8)] |= (1 << HIDE_BIT_POS); } if (DCTMatrix[v + (u * 8)] != 0) bitofs++; else DCTMatrix[v + (u * 8)] = tempValue; } } } } } public static void MapToRGBRange(ref int[] data) { for(int i=0;i<data.Length;i++) { data[i] += 128; if(data[i] < 0) data[i] = 0; else if(data[i] > 255) data[i] = 255; } } public static int[] GetRedChannelData(Bitmap b, int sx, int sy) { int[] data = new int[8 * 8]; for (int y = sy; y < (sy + 8); y++) { for (int x = sx; x < (sx + 8); x++) { uint col = (uint)b.GetPixel(x,y).ToArgb(); data[(x - sx) + ((y - sy) * 8)] = (int)((col >> 16) & 0xff) - 128; } } return (data); } public static int[] GetGreenChannelData(Bitmap b, int sx, int sy) { int[] data = new int[8 * 8]; for (int y = sy; y < (sy + 8); y++) { for (int x = sx; x < (sx + 8); x++) { uint col = (uint)b.GetPixel(x, y).ToArgb(); data[(x - sx) + ((y - sy) * 8)] = (int)((col >> 8) & 0xff) - 128; } } return (data); } public static int[] GetBlueChannelData(Bitmap b, int sx, int sy) { int[] data = new int[8 * 8]; for (int y = sy; y < (sy + 8); y++) { for (int x = sx; x < (sx + 8); x++) { uint col = (uint)b.GetPixel(x, y).ToArgb(); data[(x - sx) + ((y - sy) * 8)] = (int)((col >> 0) & 0xff) - 128; } } return (data); } public static int[] Quantize(ref double[] DCTMatrix, ref double[] Q) { int[] DCTMatrixOut = new int[8*8]; for (int u = 0; u < 8; u++) { for (int v = 0; v < 8; v++) { DCTMatrixOut[v + (u * 8)] = (int)Math.Round(DCTMatrix[v + (u * 8)] / Q[v + (u * 8)]); } } return(DCTMatrixOut); } public static double[] DeQuantize(ref int[] DCTMatrix, ref double[] Q) { double[] DCTMatrixOut = new double[8*8]; for (int u = 0; u < 8; u++) { for (int v = 0; v < 8; v++) { DCTMatrixOut[v + (u * 8)] = (double)DCTMatrix[v + (u * 8)] * Q[v + (u * 8)]; } } return(DCTMatrixOut); } public static double[] DCT(ref int[] data) { double[] DCTMatrix = new double[8 * 8]; for (int v = 0; v < 8; v++) { for (int u = 0; u < 8; u++) { double cu = 1; if (u == 0) cu = (1.0 / Math.Sqrt(2.0)); double cv = 1; if (v == 0) cv = (1.0 / Math.Sqrt(2.0)); double sum = 0.0; for (int y = 0; y < 8; y++) { for (int x = 0; x < 8; x++) { double s = data[x + (y * 8)]; double dctVal = Math.Cos((2 * y + 1) * v * Math.PI / 16) * Math.Cos((2 * x + 1) * u * Math.PI / 16); sum += s * dctVal; } } DCTMatrix[u + (v * 8)] = (0.25 * cu * cv * sum); } } return (DCTMatrix); } public static int[] IDCT(ref double[] DCTMatrix) { int[] Matrix = new int[8 * 8]; for (int y = 0; y < 8; y++) { for (int x = 0; x < 8; x++) { double sum = 0; for (int v = 0; v < 8; v++) { for (int u = 0; u < 8; u++) { double cu = 1; if (u == 0) cu = (1.0 / Math.Sqrt(2.0)); double cv = 1; if (v == 0) cv = (1.0 / Math.Sqrt(2.0)); double idctVal = (cu * cv) / 4.0 * Math.Cos((2 * y + 1) * v * Math.PI / 16) * Math.Cos((2 * x + 1) * u * Math.PI / 16); sum += (DCTMatrix[u + (v * 8)] * idctVal); } } Matrix[x + (y * 8)] = (int)Math.Round(sum); } } return (Matrix); } } public class Decoder { public static string Decode(Bitmap b, int expectedLength) { expectedLength *= Encoder.HIDE_COUNT; uint imgWidth = ((uint)b.Width) & ~((uint)7); // Maximum usable X resolution (divisible by 8). uint imgHeight = ((uint)b.Height) & ~((uint)7); // Maximum usable Y resolution (divisible by 8). // Setup the counters and byte data for the message to decode. byte[] codeBytes = new byte[expectedLength]; byte[] outBytes = new byte[expectedLength / Encoder.HIDE_COUNT]; int bitofs = 0; // Current bit position we've decoded too. int totalBits = (codeBytes.Length * 8); // Total number of bits to decode. for (int y = 0; y < imgHeight; y += 8) { for (int x = 0; x < imgWidth; x += 8) { int[] blueData = ImageKey.Encoder.GetBlueChannelData(b, x, y); double[] blueDCT = ImageKey.Encoder.DCT(ref blueData); int[] blueDCTI = ImageKey.Encoder.Quantize(ref blueDCT, ref Encoder.Q2); int[] blueDCTC = ImageKey.Encoder.Quantize(ref blueDCT, ref Encoder.Q); if (bitofs < totalBits) GetBits(ref blueDCTI, ref blueDCTC, ref bitofs, ref totalBits, ref codeBytes); } } bitofs = 0; for (int i = 0; i < (expectedLength / Encoder.HIDE_COUNT) * 8; i++) { int bytePos = (bitofs) >> 3; int bitPos = (bitofs) % 8; byte mask = (byte)(1 << bitPos); List<int> values = new List<int>(); int zeroCount = 0; int oneCount = 0; for (int j = 0; j < Encoder.HIDE_COUNT; j++) { int val = (codeBytes[bytePos + ((expectedLength / Encoder.HIDE_COUNT) * j)] & mask) >> bitPos; values.Add(val); if (val == 0) zeroCount++; else oneCount++; } if (oneCount >= zeroCount) outBytes[bytePos] |= mask; bitofs++; values.Clear(); } return (System.Text.Encoding.ASCII.GetString(outBytes)); } public static void GetBits(ref int[] DCTMatrix, ref int[] CMatrix, ref int bitofs, ref int totalBits, ref byte[] codeBytes) { for (int u = 0; u < 8; u++) { for (int v = 0; v < 8; v++) { if ((u != 0 || v != 0) && CMatrix[v + (u * 8)] != 0 && DCTMatrix[v + (u * 8)] != 0) { if (bitofs < totalBits) { int bytePos = (bitofs) >> 3; int bitPos = (bitofs) % 8; byte mask = (byte)(1 << bitPos); int value = DCTMatrix[v + (u * 8)] & (1 << Encoder.HIDE_BIT_POS); if (value != 0) codeBytes[bytePos] |= mask; bitofs++; } } } } } } } UPDATE: By switching to using a QR Code as the source message and swapping a pair of coefficients in each block instead of bit manipulation I've been able to get the message to survive the transform. However to get the message to come through without corruption I have to adjust both coefficients as well as swap them. For example swapping (3,4) and (4,3) in the DCT matrix and then respectively adding 8 and subtracting 8 as an arbitrary constant seems to work. This survives a re-JPEG'ing of 96 but any form of scaling/cropping destroys the message again. I was hoping that by operating on mid to low frequency values that the message would be preserved even under some light image manipulation.

    Read the article

  • Silverlight? WPF? or Windows Form?

    - by Amit
    After Silverlight 4.0 has been released with new WPF, I am kind of confused with these technologies: Silverlight? WPF? Windows Form? The main motive that we want to achieve for BIG business project is following: Performance Security And platform independent** If I consider all above three points then only Silverlight is the option as I don’t want people buying emulator on MacOS for WPF or Windows Form. Now how good the Silverlight is for Business applications, I was completely against when Silverlight 2.0 was in the market but now it is Silverlight 4.0 and they have provided many new features (but still basics) that is required in any challenging business applications. Comparing Silverlight and WPF -* Silverlight and WPF are very new technology and if I'd to compare from these two then I'd prefer WPF because it can be considered stable and mature. But it is not same as Windows Form. -* If I go with Silverlight then I am sure about keep updating to the latest version of Silverlight. I remembered when we were developing software for version 2.0 then we'd to create our own framework with dynamic loading DLL, and then Navigation concept. But everything was got changed once Silverlight 3.0 came. I don't want this to be happening with this new product. -* If we go with WPF then we don't get the platform independence. Now, why not we just focus on making WPF and then move to Silverlght. As someone (Tim?) from Microsoft has said that the idea is to make Silverlight as close as WPF. But if that is the case then why XAML structure is different; I will not be convinced with by saying that .Net framework for SL is too small.. well the difference is coming from the namespace ? I was searching on this subject and found "Microsoft WPF-Silverlight Comparison Whitepaper v1.1.pdf". This guide is very good that gives you ins-outs about how can we build common apps that runs on both. But again, it is comparing Silverlight 2 and not 4. I am sure many architect/ developers/ project managers must be facing similar kind of questions in their premises and wants to initiate this discussion, if it has not been :). We've still got 2 weeks to make this decision, so I'm expecting everyone to participate, gurus?

    Read the article

  • MySQL: Creating table with FK error (errno 150)

    - by Peter Bailey
    I've tried searching on this error and nothing I've found helps me, so I apologize in advance if this is a duplicate and I'm just too dumb to find it. I've created a model with MySQL Workbench and am now attempting to install it to a mysql server. Using File Export Forward Engineer SQL CREATE Script... it outputs a nice big file for me, with all the settings I ask for. I switch over to MySQL GUI Tools (the Query Browser specifically) and load up this script (note that I'm going form one official MySQL tool to another). However, when I try to actually execute this file, I get the same error over and over SQLSTATE[HY000]: General error: 1005 Can't create table './srs_dev/location.frm' (errno: 150) "OK", I say to myself, something is wrong with the location table. So I check out the definition in the output file. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; -- ----------------------------------------------------- -- Table `state` -- ----------------------------------------------------- DROP TABLE IF EXISTS `state` ; CREATE TABLE IF NOT EXISTS `state` ( `state_id` INT NOT NULL AUTO_INCREMENT , `iso_3166_2_code` VARCHAR(2) NOT NULL , `name` VARCHAR(60) NOT NULL , PRIMARY KEY (`state_id`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `brand` -- ----------------------------------------------------- DROP TABLE IF EXISTS `brand` ; CREATE TABLE IF NOT EXISTS `brand` ( `brand_id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(45) NOT NULL , `domain` VARCHAR(45) NOT NULL , `manager_name` VARCHAR(100) NULL , `manager_email` VARCHAR(255) NULL , PRIMARY KEY (`brand_id`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `location` -- ----------------------------------------------------- DROP TABLE IF EXISTS `location` ; CREATE TABLE IF NOT EXISTS `location` ( `location_id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , `address_line_1` VARCHAR(255) NULL , `address_line_2` VARCHAR(255) NULL , `city` VARCHAR(100) NULL , `state_id` TINYINT UNSIGNED NULL DEFAULT NULL , `postal_code` VARCHAR(10) NULL , `phone_number` VARCHAR(20) NULL , `fax_number` VARCHAR(20) NULL , `lat` DECIMAL(9,6) NOT NULL , `lng` DECIMAL(9,6) NOT NULL , `contact_url` VARCHAR(255) NULL , `brand_id` TINYINT UNSIGNED NOT NULL , `summer_hours` VARCHAR(255) NULL , `winter_hours` VARCHAR(255) NULL , `after_hours_emergency` VARCHAR(255) NULL , `image_file_name` VARCHAR(100) NULL , `manager_name` VARCHAR(100) NULL , `manager_email` VARCHAR(255) NULL , `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`location_id`) , CONSTRAINT `fk_location_state` FOREIGN KEY (`state_id` ) REFERENCES `state` (`state_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_location_brand` FOREIGN KEY (`brand_id` ) REFERENCES `brand` (`brand_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; CREATE INDEX `fk_location_state` ON `location` (`state_id` ASC) ; CREATE INDEX `fk_location_brand` ON `location` (`brand_id` ASC) ; CREATE INDEX `idx_lat` ON `location` (`lat` ASC) ; CREATE INDEX `idx_lng` ON `location` (`lng` ASC) ; Looks ok to me. I surmise that maybe something is wrong with the Query Browser, so I put this file on the server and try to load it this way ] mysql -u admin -p -D dbname < path/to/create_file.sql And I get the same error. So I start to Google this issue and find all kinds of accounts that talk about an error with InnoDB style tables that fail with foreign keys, and the fix is to add "SET FOREIGN_KEY_CHECKS=0;" to the SQL script. Well, as you can see, that's already part of the file that MySQL Workbench spat out. So, my question is then, why is this not working when I'm doing what I think I'm supposed to be doing? Version Info: # MySQL: 5.0.45 GUI Tools: 1.2.17 Workbench: 5.0.30

    Read the article

  • C++/msvc6 application crashes due to heap corruption, any hints?

    - by David Alfonso
    Hello all, let me say first that I'm writing this question after months of trying to find out the root of a crash happening in our application. I'll try to detail as much as possible what I've already found out about it. About the application It runs on Windows XP Professional SP2. It's built with Microsoft Visual C++ 6.0 with Service Pack 6. It's MFC based. It uses several external dlls (e.g. Xerces, ZLib or ACE). It has high performance requirements. It does a lot of network and hard disk I/O, but it's also cpu intensive. It has an exception handling mechanism which generates a minidump when an unhandled exception occurs. Facts about the crash It only happens on multiprocessor/multicore machines and under heavy loads of work. It happens at random (neither we nor our client have found a pattern yet). We cannot reproduce the crash on our testing lab. It only happens on some production systems (but always in multicore machines) It always ends up crashing at the same point, although the complete stack is not always the same. Let me add the stack of the crashing thread (obtained using WinDbg, sorry we don't have symbols) ChildEBP RetAddr Args to Child WARNING: Stack unwind information not available. Following frames may be wrong. 030af6c8 7c9206eb 77bfc3c9 01a80000 00224bc3 MyApplication+0x2a85b9 030af960 7c91e9c0 7c92901b 00000ab4 00000000 ntdll!RtlAllocateHeap+0xeac (FPO: [Non-Fpo]) 030af98c 7c9205c8 00000001 00000000 00000000 ntdll!ZwWaitForSingleObject+0xc (FPO: [3,0,0]) 030af9c0 7c920551 01a80898 7c92056d 313adfb0 ntdll!RtlpFreeToHeapLookaside+0x22 (FPO: [2,0,4]) 030afa8c 4ba3ae96 000307da 00130005 00040012 ntdll!RtlFreeHeap+0x1e9 (FPO: [Non-Fpo]) 030afacc 77bfc2e3 0214e384 3087c8d8 02151030 0x4ba3ae96 030afb00 7c91e306 7c80bfc1 00000948 00000001 msvcrt!free+0xc8 (FPO: [Non-Fpo]) 030afb20 0042965b 030afcc0 0214d780 02151218 ntdll!ZwReleaseSemaphore+0xc (FPO: [3,0,0]) 030afb7c 7c9206eb 02e6c471 02ea0000 00000008 MyApplication+0x2965b 030afe60 7c9205c8 02151248 030aff38 7c920551 ntdll!RtlAllocateHeap+0xeac (FPO: [Non-Fpo]) 030afe74 7c92056d 0210bfb8 02151250 02151250 ntdll!RtlpFreeToHeapLookaside+0x22 (FPO: [2,0,4]) 030aff38 77bfc2de 01a80000 00000000 77bfc2e3 ntdll!RtlFreeHeap+0x647 (FPO: [Non-Fpo]) 7c92056d c5ffffff ce7c94be ff7c94be 00ffffff msvcrt!free+0xc3 (FPO: [Non-Fpo]) 7c920575 ff7c94be 00ffffff 12000000 907c94be 0xc5ffffff 7c920579 00ffffff 12000000 907c94be 90909090 0xff7c94be *** WARNING: Unable to verify checksum for xerces-c_2_7.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for xerces-c_2_7.dll - 7c92057d 12000000 907c94be 90909090 8b55ff8b MyApplication+0xbfffff 7c920581 907c94be 90909090 8b55ff8b 08458bec xerces_c_2_7 7c920585 90909090 8b55ff8b 08458bec 04408b66 0x907c94be 7c920589 8b55ff8b 08458bec 04408b66 0004c25d 0x90909090 7c92058d 08458bec 04408b66 0004c25d 90909090 0x8b55ff8b The address MyApplication+0x2a85b9 corresponds to a call to erase() of a std::list. What I have tried so far Reviewing all the code related to the point where the crash ends happening. Trying to enable pageheap on our testing lab though nothing useful has been found by now. We have substituted the std::list for a C array and then it crashes in other part of the code (although it is related code, it's not in the code where the old list resided). Coincidentally, now it crashes in another erase, though this time of a std::multiset. Let me copy the stack contained in the dump: ntdll.dll!_RtlpCoalesceFreeBlocks@16() + 0x124e bytes ntdll.dll!_RtlFreeHeap@12() + 0x91f bytes msvcrt.dll!_free() + 0xc3 bytes MyApplication.exe!006a4fda() [Frames below may be incorrect and/or missing, no symbols loaded for MyApplication.exe] MyApplication.exe!0069f305() ntdll.dll!_NtFreeVirtualMemory@16() + 0xc bytes ntdll.dll!_RtlpSecMemFreeVirtualMemory@16() + 0x1b bytes ntdll.dll!_ZwWaitForSingleObject@12() + 0xc bytes ntdll.dll!_RtlpFreeToHeapLookaside@8() + 0x26 bytes ntdll.dll!_RtlFreeHeap@12() + 0x114 bytes msvcrt.dll!_free() + 0xc3 bytes c5ffffff() Possible solutions (that I'm aware of) which cannot be applied "Migrate the application to a newer compiler": We are working on this but It's not a solution at the moment. "Enable pageheap (normal or full)": We can't enable pageheap on production machines as this affects performance heavily. I think that's all I remember now, if I have forgotten something I'll add it asap. If you can give me some hint or propose some possible solution, don't hesitate to answer! Thank you in advance for your time and advice.

    Read the article

  • Peer did not return a certificate

    - by pfista
    I am trying to get two way SSL authentication working between a Python server and an Android client application. I have access to both the server and client, and would like to implement client authentication using my own certificate. So far I have been able to verify the server certificate and connect without client authentication. What sort of certificate does the client need and how do I get it to automatically send it to the server during the handshake process? Here is the client and server side code that I have so far. Is my approach wrong? Server Code while True: # Keep listening for clients c, fromaddr = sock.accept() ssl_sock = ssl.wrap_socket(c, keyfile = "serverPrivateKey.pem", certfile = "servercert.pem", server_side = True, # Require the client to provide a certificate cert_reqs = ssl.CERT_REQUIRED, ssl_version = ssl.PROTOCOL_TLSv1, ca_certs = "clientcert.pem", #TODO must point to a file of CA certificates?? do_handshake_on_connect = True, ciphers="!NULL:!EXPORT:AES256-SHA") print ssl_sock.cipher() thrd = sock_thread(ssl_sock) thrd.daemon = True thrd.start() I suspect I may be using the wrong file for ca_certs...? Client Code private boolean connect() { try { KeyStore keystore = KeyStore.getInstance("BKS"); // Stores the client certificate, to be sent to server KeyStore truststore = KeyStore.getInstance("BKS"); // Stores the server certificate we want to trust // TODO: change hard coded password... THIS IS REAL BAD MKAY truststore.load(mSocketService.getResources().openRawResource(R.raw.truststore), "test".toCharArray()); keystore.load(mSocketService.getResources().openRawResource(R.raw.keystore), "test".toCharArray()); // Use the key manager for client authentication. Keys in the key manager will be sent to the host KeyManagerFactory keyFManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyFManager.init(keystore, "test".toCharArray()); // Use the trust manager to determine if the host I am connecting to is a trusted host TrustManagerFactory trustMFactory = TrustManagerFactory.getInstance(TrustManagerFactory .getDefaultAlgorithm()); trustMFactory.init(truststore); // Create the socket factory and add both the trust manager and key manager SSLCertificateSocketFactory socketFactory = (SSLCertificateSocketFactory) SSLCertificateSocketFactory .getDefault(5000, new SSLSessionCache(mSocketService)); socketFactory.setTrustManagers(trustMFactory.getTrustManagers()); socketFactory.setKeyManagers(keyFManager.getKeyManagers()); // Open SSL socket directly to host, host name verification is NOT performed here due to // SSLCertificateFactory implementation mSSLSocket = (SSLSocket) socketFactory.createSocket(mHostname, mPort); mSSLSocket.setSoTimeout(TIMEOUT); // Most SSLSocketFactory implementations do not verify the server's identity, allowing man-in-the-middle // attacks. This implementation (SSLCertificateSocketFactory) does check the server's certificate hostname, // but only for createSocket variants that specify a hostname. When using methods that use InetAddress or // which return an unconnected socket, you MUST verify the server's identity yourself to ensure a secure // connection. verifyHostname(); // Safe to proceed with socket now ... I have generated a client private key, a client certificate, a server private key, and a server certificate using openssl. I then added the client certificate to keystore.bks (which I store in /res/raw/keystore.bks) I then added the server certificate to the truststore.bks So now when the client tries to connect I am getting this error server side: ssl.SSLError: [Errno 1] _ssl.c:504: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate And when I try to do this in the android client SSLSession s = mSSLSocket.getSession(); s.getPeerCertificates(); I get this error: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate So obviously the keystore I am using doesn't appear to have a correct peer certificate in it and thus isn't sending one to the server. What should I put in the keystore to prevent this exception? Furthermore, is this method of two way SSL authentication safe and effective?

    Read the article

  • How do I edit an XML file with Perl?

    - by thebourneid
    I have a movie collection catalogue with local links to folders and files for an easy access. Recently I reorganaized my entire hard disk space and I need to update the links and I'm trying to do that automatically with Perl. I can export the data in a XML file and import it again. I can extract the new filepaths with the use of File::Find but I'm stuck with two problems. I have no idea how to connect the $title from the new filepath with the corresponding $title from the XML file. I'm dealing with such files for the first time and I don't know how to proceed with the replacement process. Here is what I've done till now use strict; use warnings; use File::Basename; use File::Find; use File::Spec; use XML::Simple; use Data::Dumper; my $dir_target = 'D:/Movies/'; my %titles_locations = (); find(\&file_handler, $dir_target); sub file_handler { /\.iso$/ or return; my $fn = $File::Find::name; $fn =~ s/\//\\/g; $fn =~ /(.*\\)(.*)/; my $path = $1; my $filename = $2; my $title = (File::Spec->splitdir($fn))[2]; $title =~ s/(.*?)\s\(\d+\)$/$1/; $title =~ s/~/:/; $title =~ s/`/?/; my $link_local = '<link><description>Folder</description><url>'.$path.'</url><urltype>Movie</urltype></link><link><description>'.$filename.'</description><url>'.$fn.'</url><urltype>Movie</urltype></link>' unless $title eq ''; $titles_locations{$title} = {'filename'=>$filename, 'path'=>$path }; } my $xml_in = XMLin('somepath/test.xml', ForceArray => 1, KeepRoot => 1); my $title = {'key1' => 'title', 'key2' => 'links'}; foreach my $link (keys %$title) { } print Data::Dumper->Dump([$title]); my $xml_out = XMLout($xml_in, OutputFile => 'somepath/test_out.xml', KeepRoot=>1); And here is a snippet of the data I need to edit. If found imdb and dvdempire link - do not touch. if found local links replace, otherwise insert. I'm willing to complete the code myself but need some directions how to proceed further. Thanks. <title>$title</title> ....... <links> <link> <description>IMDB</description> <url>http://www.imdb.com/title/VARIABLE</url> <urltype>URL</urltype> </link> <link> <description>DVD Empire</description> <url>http://www.dvdempire.com/VARIABLE</url> <urltype>URL</urltype> </link> <link> <description>Folder</description> <url>OLD_FOLDERPATH</url> <urltype>Movie</urltype> </link> <link> <description>OLD_FILENAME</description> <url>OLD_FILENAMEPATH</url> <urltype>Movie</urltype> </link> </links>

    Read the article

  • Magento Admin Custom Sales Report

    - by Ela
    Hi, I have to develop a module to export collection of product,order,customer combined attributes. So i thought rather than modifying the core sales report for this purpose better to do a custom functionality. These are the steps that i did but i am not able to produce it. Used magento 1.4.1 version for this. Under /var/www/magento141/app/code/core/Mage/Reports/etc/adminhtml.xml Added these lines for menus. <ereaders translate="title" module="reports"> <title>EReader Sales Report</title> <children> <ereaders translate="title" module="reports"> <title>Sales Report</title> <action>adminhtml/report_sales/ereaders</action> </ereaders> </children> </ereaders> Under /var/www/magento141/app/design/adminhtml/default/default/layout/sales.xml Added these lines for filter condition. <adminhtml_report_sales_ereaders> <update handle="report_sales"/> <reference name="content"> <block type="adminhtml/report_sales_sales" template="report/grid/container.phtml" name="sales.report.grid.container"> <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher"> <action method="setStoreVarName"><var_name>store_ids</var_name></action> </block> <block type="sales/adminhtml_report_filter_form_order" name="grid.filter.form"> ---- </block> </block> </reference> </adminhtml_report_sales_ereaders> And then copied the needed block,model files from sales and renamed all of them into ereaders under /var/www/magento141/app/code/core/Mage/Adminhtml/. Then placed action for ereaders under /var/www/magento141/app/code/core/Mage/Adminhtml/controllers/Report/SalesController.php public function ereadersAction() { $this->_title($this->__('Reports'))->_title($this->__('Sales'))->_title($this->__('EReaders Sales')); $this->_showLastExecutionTime(Mage_Reports_Model_Flag::REPORT_ORDER_FLAG_CODE, 'ereaders'); $this->_initAction() ->_setActiveMenu('report/sales/ereaders') ->_addBreadcrumb(Mage::helper('adminhtml')->__('EReaders Sales Report'), Mage::helper('adminhtml')->__('EReaders Sales Report')); $gridBlock = $this->getLayout()->getBlock('report_sales_ereaders.grid'); $filterFormBlock = $this->getLayout()->getBlock('grid.filter.form'); $this->_initReportAction(array( $gridBlock, $filterFormBlock )); $this->renderLayout(); } Here when i use var_dump == //var_dump($this-getLayout()-getBlock('report_sales_ereaders.grid')); am getting bool(false) only. It does not call the ereaders grid, instead of its still loading blocks and grids from Sales only. I searched most of the files related to report, am not still able to find out the problem. Hope many of you gone through these sort of issues, please can anyone tell me where am making mistake or missing something.

    Read the article

  • How To Edit XML File

    - by thebourneid
    I have a movie collection catalogue with local links to folders and files for an easy access. Recently I reorganaized my entire hard disk space and I need to update the links and I'm trying to do that automatically with perl. I can export the data in a xml file and import it again. I can extract the new filepaths with the use of File::Find but I'm stuck with two problems. I have no idea how to connect the $title from the new filepath with the corresponding $title from the xml file. I'm dealing with such files for the first time and I don't know how to proceed with the replacement process. Here is what I've done till now use strict; use warnings; use File::Basename; use File::Find; use File::Spec; use XML::Simple; use Data::Dumper; my $dir_target = 'somepath'; find(\&a, $dir_target); sub a { /\.iso$/ or return; my $fn = $File::Find::name; $fn =~ s/\//\\/g; $fn =~ /(.*\\)(.*)/; my $path = $1; my $filename = $2; my $title = (File::Spec->splitdir($fn))[2]; $title =~ s/(.*?)\s\(\d+\)$/$1/; $title =~ s/~/:/; $title =~ s/`/?/; my $link_local = '<link><description>Folder</description><url>'.$path.'</url><urltype>Movie</urltype></link><link><description>'.$filename.'</description><url>'.$fn.'</url><urltype>Movie</urltype></link>' unless $title eq ''; my $txt = 'somepath/log.txt'; my $xml_in = XMLin('somepath/test.xml', ForceArray => 1, KeepRoot => 1); my $xml_out = XMLout($xml_in, OutputFile => 'somepath/test_out.xml', KeepRoot=>1); open F, ">>", $txt; print F $link_local."\n\n"; close F; } And here is a snippet of the data I need to edit. If found imdb and dvdempire link - do not touch. if found local links replace, otherwise insert. I'm willing to complete the code myself but need some directions how to proceed further. Thanks. <title>$title</title> ....... <links> <link> <description>IMDB</description> <url>http://www.imdb.com/title/VARIABLE</url> <urltype>URL</urltype> </link> <link> <description>DVD Empire</description> <url>http://www.dvdempire.com/VARIABLE</url> <urltype>URL</urltype> </link> <link> <description>Folder</description> <url>OLD_FOLDERPATH</url> <urltype>Movie</urltype> </link> <link> <description>OLD_FILENAME</description> <url>OLD_FILENAMEPATH</url> <urltype>Movie</urltype> </link> </links>

    Read the article

  • how Can we get the output format to CSV instead of HTML in Alfresco using webscripts?

    - by pavan123
    how Can we change the output format to CSV instead of HTML in Alfresco using webscripts? below are the my corresponding FTL and Webscript files recursive.get.html.ftl <#macro recurse_macro node depth> <#if node.isContainer> <tr> <td> ${node.properties.name} </td> <td></td> </tr> <#list node.children as child> <#if child.isContainer> <@recurse_macro node=child depth=depth+1/> <#list child.children as child2> <#if child2.isDocument> <tr><td></td><td>${child2.properties.name}</td></tr> </#if> </#list> </#if> </#list> </#if> </#macro> Recursive Listing of Spaces & Documents: Space Document recursive.get.desc.xml <webscript> <shortname>recurcive</shortname> <description>Recursive</description> <url>/sample/recursive/{recursive}</url> <format default="html">extension</format> <authentication>guest</authentication> </webscript> and html output is Recursive Listing of Spaces & Documents: Space Document Company Home Data Dictionary Space Templates Software Engineering Project Documentation Drafts Pending Approval Published Samples system-overview.html Discussions UI Design Presentations Quality Assurance Presentation Templates doc_info.ftl localizable.ftl my_docs.ftl my_spaces.ftl my_summary.ftl translatable.ftl recent_docs.ftl general_example.ftl my_docs_inline.ftl show_audit.ftl readme.ftl Email Templates notify_user_email.ftl invite_user_email.ftl RSS Templates RSS_2.0_recent_docs.ftl Saved Searches admin Scripts backup.js example test script.js backup and log.js append copyright.js alfresco docs.js test return value.js Web Scripts org alfresco sample blogsearch.get.js blogsearch.get.atom.ftl blogsearch.get.desc.xml blogsearch.get.html.ftl blogsearch.get.html.400.ftl blogsearch.get.atom.400.ftl categorysearch.get.js categorysearch.get.atom.ftl categorysearch.get.desc.xml categorysearch.get.html.ftl categorysearch.get.html.404.ftl categorysearch.get.atom.404.ftl folder.get.js folder.get.atom.ftl folder.get.desc.xml folder.get.html.ftl avmstores.get.desc.xml avmstores.get.html.ftl avmbrowse.get.js avmbrowse.get.desc.xml avmbrowse.get.html.ftl recursive.get.desc.xml recursive.get.html.ftl sgs.get.desc.xml sgs.get.csv.ftl sample1.get.desc.xml sample1.get.csv.ftl first.get.desc.xml first.get.text.ftl rag.get.html.ftl rag.get.desc.xml new1.get.desc.xml new1.get.html.ftl excel.get.html.ftl excel.get.desc.xml sgs1.get.desc.xml one.get.html.ftl one.get.desc.xml one.get.js readme.html Web Scripts Extensions readme.html Guest Home Alfresco-Tutorial.pdf User Homes isabel Users Home

    Read the article

  • Different behaviour using unidirectional or bidirectional relation

    - by sinuhepop
    I want to persist a mail entity which has some resources (inline or attachment). First I related them as a bidirectional relation: @Entity public class Mail extends BaseEntity { @OneToMany(mappedBy = "mail", cascade = CascadeType.ALL, orphanRemoval = true) private List<MailResource> resource; private String receiver; private String subject; private String body; @Temporal(TemporalType.TIMESTAMP) private Date queued; @Temporal(TemporalType.TIMESTAMP) private Date sent; public Mail(String receiver, String subject, String body) { this.receiver = receiver; this.subject = subject; this.body = body; this.queued = new Date(); this.resource = new ArrayList<>(); } public void addResource(String name, MailResourceType type, byte[] content) { resource.add(new MailResource(this, name, type, content)); } } @Entity public class MailResource extends BaseEntity { @ManyToOne(optional = false) private Mail mail; private String name; private MailResourceType type; private byte[] content; } And when I saved them: Mail mail = new Mail("[email protected]", "Hi!", "..."); mail.addResource("image", MailResourceType.INLINE, someBytes); mail.addResource("documentation.pdf", MailResourceType.ATTACHMENT, someOtherBytes); mailRepository.save(mail); Three inserts were executed: INSERT INTO MAIL (ID, BODY, QUEUED, RECEIVER, SENT, SUBJECT) VALUES (?, ?, ?, ?, ?, ?) INSERT INTO MAILRESOURCE (ID, CONTENT, NAME, TYPE, MAIL_ID) VALUES (?, ?, ?, ?, ?) INSERT INTO MAILRESOURCE (ID, CONTENT, NAME, TYPE, MAIL_ID) VALUES (?, ?, ?, ?, ?) Then I thought it would be better using only a OneToMany relation. No need to save which Mail is in every MailResource: @Entity public class Mail extends BaseEntity { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = "mail_id") private List<MailResource> resource; ... public void addResource(String name, MailResourceType type, byte[] content) { resource.add(new MailResource(name, type, content)); } } @Entity public class MailResource extends BaseEntity { private String name; private MailResourceType type; private byte[] content; } Generated tables are exactly the same (MailResource has a FK to Mail). The problem is the executed SQL: INSERT INTO MAIL (ID, BODY, QUEUED, RECEIVER, SENT, SUBJECT) VALUES (?, ?, ?, ?, ?, ?) INSERT INTO MAILRESOURCE (ID, CONTENT, NAME, TYPE) VALUES (?, ?, ?, ?) INSERT INTO MAILRESOURCE (ID, CONTENT, NAME, TYPE) VALUES (?, ?, ?, ?) UPDATE MAILRESOURCE SET mail_id = ? WHERE (ID = ?) UPDATE MAILRESOURCE SET mail_id = ? WHERE (ID = ?) Why this two updates? I'm using EclipseLink, will this behaviour be the same using another JPA provider as Hibernate? Which solution is better?

    Read the article

  • gcc, strict-aliasing, and casting through a union

    - by Joseph Quinsey
    About a year ago the following paragraph was added to the GCC Manual, version 4.3.4, regarding -fstrict-aliasing: Similarly, access by taking the address, casting the resulting pointer and dereferencing the result has undefined behavior [emphasis added], even if the cast uses a union type, e.g.: union a_union { int i; double d; }; int f() { double d = 3.0; return ((union a_union *)&d)->i; } Does anyone have an example to illustrate this undefined behavior? Note this question is not about what the C99 standard says, or does not say. It is about the actual functioning of gcc, and other existing compilers, today. My simple, naive, attempt fails. For example: #include <stdio.h> union a_union { int i; double d; }; int f1(void) { union a_union t; t.d = 3333333.0; return t.i; // gcc manual: 'type-punning is allowed, provided ...' } int f2(void) { double d = 3333333.0; return ((union a_union *)&d)->i; // gcc manual: 'undefined behavior' } int main(void) { printf("%d\n", f1()); printf("%d\n", f2()); return 0; } works fine, giving on CYGWIN: -2147483648 -2147483648 Also note that taking addresses is obviously wrong (or right, if you are trying to illustrate undefined behavior). For example, just as we know this is wrong: extern void foo(int *, double *); union a_union t; t.d = 3.0; foo(&t.i, &t.d); // UD behavior so is this wrong: extern void foo(int *, double *); double d = 3.0; foo(&((union a_union *)&d)->i, &d); // UD behavior For background discussion about this, see for example: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1422.pdf http://gcc.gnu.org/ml/gcc/2010-01/msg00013.html http://davmac.wordpress.com/2010/02/26/c99-revisited/ http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule http://stackoverflow.com/questions/2771023/c99-strict-aliasing-rules-in-c-gcc/2771041#2771041 The first link, draft minutes of an ISO meeting seven months ago, notes in section 4.16: Is there anybody that thinks the rules are clear enough? No one is really able to interpret tham.

    Read the article

  • Trying to import SQL file in a xampp server returns error

    - by Victor_J_Martin
    I have done a ER diagram in Mysql Workbench, and I am trying load in my server with phpMyAdmin, but it returns me the next error: Error SQL Query: -- ----------------------------------------------------- -- Table `BDA`.`UG` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`UG` ( `numero_ug` INT NOT NULL, `nombre` VARCHAR(45) NOT NULL, `segunda_firma_autorizada` VARCHAR(45) NOT NULL, `fecha_creacion` DATE NOT NULL, `nombre_depto` VARCHAR(140) NOT NULL, `dni` INT NOT NULL, `anho_contable` INT NOT NULL, PRIMARY KEY (`numero_ug`), INDEX `nombre_depto_idx` (`nombre_depto` ASC), INDEX `dni_idx` (`dni` ASC), INDEX `anho_contable_idx` (`anho_contable` ASC), CONSTRAINT `nombre_depto` FOREIGN KEY (`nombre_depto`) REFERENCES `BDA`.`Departamento` (`nombre_depto`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `dni` FOREIGN KEY (`dni`) REFERENCES `BDA`.`Trabajador` (`dni`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `anho_contable` FOREIGN KEY (`anho_contable`) REFERENCES `BDA`.`Capitulo_Contable` (`anho_contable`) [...] MySQL said: Documentation #1022 - Can't write; duplicate key in table 'ug' I export the result of the diagram from Mysql Workbench to a SQL file, and this file is what I'm trying to upload. This is the file. I can not find the duplicate key. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; CREATE SCHEMA IF NOT EXISTS `BDA` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `BDA` ; -- ----------------------------------------------------- -- Table `BDA`.`Departamento` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Departamento` ( `nombre_depto` VARCHAR(140) NOT NULL, `area_depto` VARCHAR(140) NOT NULL, PRIMARY KEY (`nombre_depto`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Trabajador` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Trabajador` ( `dni` INT NOT NULL, `direccion` VARCHAR(140) NOT NULL, `nombre` VARCHAR(45) NOT NULL, `apellidos` VARCHAR(140) NOT NULL, `fecha_nacimiento` DATE NOT NULL, `fecha_contrato` DATE NOT NULL, `titulacion` VARCHAR(140) NULL, `nombre_depto` VARCHAR(45) NOT NULL, PRIMARY KEY (`dni`), INDEX `nombre_depto_idx` (`nombre_depto` ASC), CONSTRAINT `nombre_depto` FOREIGN KEY (`nombre_depto`) REFERENCES `BDA`.`Departamento` (`nombre_depto`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Capitulo_Contable` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Capitulo_Contable` ( `anho_contable` INT NOT NULL, `numero_ug` INT NOT NULL, `debe` DOUBLE NOT NULL, `haber` DOUBLE NOT NULL, PRIMARY KEY (`anho_contable`), INDEX `numero_ug_idx` (`numero_ug` ASC), CONSTRAINT `numero_ug` FOREIGN KEY (`numero_ug`) REFERENCES `BDA`.`UG` (`numero_ug`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`UG` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`UG` ( `numero_ug` INT NOT NULL, `nombre` VARCHAR(45) NOT NULL, `segunda_firma_autorizada` VARCHAR(45) NOT NULL, `fecha_creacion` DATE NOT NULL, `nombre_depto` VARCHAR(140) NOT NULL, `dni` INT NOT NULL, `anho_contable` INT NOT NULL, PRIMARY KEY (`numero_ug`), INDEX `nombre_depto_idx` (`nombre_depto` ASC), INDEX `dni_idx` (`dni` ASC), INDEX `anho_contable_idx` (`anho_contable` ASC), CONSTRAINT `nombre_depto` FOREIGN KEY (`nombre_depto`) REFERENCES `BDA`.`Departamento` (`nombre_depto`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `dni` FOREIGN KEY (`dni`) REFERENCES `BDA`.`Trabajador` (`dni`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `anho_contable` FOREIGN KEY (`anho_contable`) REFERENCES `BDA`.`Capitulo_Contable` (`anho_contable`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Cliente` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Cliente` ( `cif_cliente` INT NOT NULL, `nombre_cliente` VARCHAR(140) NOT NULL, PRIMARY KEY (`cif_cliente`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Ingreso` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Ingreso` ( `id` INT NOT NULL, `concepto` VARCHAR(45) NOT NULL, `importe` DOUBLE NOT NULL, `fecha` DATE NOT NULL, `cif_cliente` INT NOT NULL, `numero_ug` INT NOT NULL, PRIMARY KEY (`id`), INDEX `cif_cliente_idx` (`cif_cliente` ASC), INDEX `numero_ug_idx` (`numero_ug` ASC), CONSTRAINT `cif_cliente` FOREIGN KEY (`cif_cliente`) REFERENCES `BDA`.`Cliente` (`cif_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `numero_ug` FOREIGN KEY (`numero_ug`) REFERENCES `BDA`.`UG` (`numero_ug`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Proveedor` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Proveedor` ( `cif_proveedor` INT NOT NULL, `nombre_proveedor` VARCHAR(140) NOT NULL, PRIMARY KEY (`cif_proveedor`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `BDA`.`Gasto` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `BDA`.`Gasto` ( `id` INT NOT NULL, `concepto` VARCHAR(45) NOT NULL, `importe` DOUBLE NOT NULL, `fecha` DATE NOT NULL, `factura` INT NOT NULL, `cif_proveedor` INT NOT NULL, `numero_ug` INT NOT NULL, PRIMARY KEY (`id`), INDEX `cif_proveedor_idx` (`cif_proveedor` ASC), INDEX `numero_ug_idx` (`numero_ug` ASC), CONSTRAINT `cif_proveedor` FOREIGN KEY (`cif_proveedor`) REFERENCES `BDA`.`Proveedor` (`cif_proveedor`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `numero_ug` FOREIGN KEY (`numero_ug`) REFERENCES `BDA`.`UG` (`numero_ug`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; Thanks for your advices.

    Read the article

  • php imap save massage to sent folder after sending

    - by user1108279
    I am stucked with this for two days. I am trying to use imap_append from PHP but no luck so far. I was able to to implement this code for single attachment but multiple attachments not working. <?php $authhost="{000.000.000.000:993/validate-cert/ssl}Sent"; $user="sadasd"; $pass="sadasd"; if ($mbox=imap_open( $authhost, $user, $pass)) { $dmy=date("d-M-Y H:i:s"); $filename="filename.pdf"; $attachment = chunk_split(base64_encode($filestring)); $boundary = "------=".md5(uniqid(rand())); $msg = ("From: Somebody\r\n" . "To: [email protected]\r\n" . "Date: $dmy\r\n" . "Subject: This is the subject\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n" . "\r\n\r\n" . "--$boundary\r\n" . "Content-Type: text/html;\r\n\tcharset=\"ISO-8859-1\"\r\n" . "Content-Transfer-Encoding: 8bit \r\n" . "\r\n\r\n" . "Hello this is a test\r\n" . "\r\n\r\n" . "--$boundary\r\n" . "Content-Transfer-Encoding: base64\r\n" . "Content-Disposition: attachment; filename=\"$filename\"\r\n" . "\r\n" . $attachment . "\r\n" . "\r\n\r\n\r\n" . "--$boundary--\r\n\r\n"); imap_append($mbox,$authhost,$msg); imap_close($mbox); } else { echo "<h1>FAIL!</h1>\n"; } ?> Now that raw code above is working but I am unable to add multiple attachments. In some cases I got message body base64 decoded and in message body lot of strange letters. Something like R0lGODlhkAEfAOYAAPSeZPONtdSIu+u2vv/La+5Rj8AhYPvWhOjtkfvi7MRImcjYse5DM6O+dOnl ..... I search all the web i still got no luck. Since I have dedicated server I also tried to implement some procmail+ postfix examples but also no luck. Can someone help?

    Read the article

< Previous Page | 270 271 272 273 274 275 276 277 278 279 280 281  | Next Page >