Monday, April 25, 2016
Converted a CharField into a ForeignKey field. I get errors from postgres saying the char can't be cast to an integer. Problem is, I didn't get this error on my development machine, only on the box I'm trying to deploy to. When I try to migrate backwards on my development machine so that I can tweak the migration, I get a similar error on the backward migration on a different column. One that was a ForeignKey field and is now a Char Field.
The fix for the backwards migration was to add two manual sql migrations. The first one to allow nulling fields, and the second to null the fields. Then there's no issue moving from a char field to a foreign key. This does mess with the null constraint. Hopefully that won't bite me.
Thursday, April 7, 2016
Django migrations and branching
Working on my main branch, then switched to a feature branch created by a co-worker (we'll call him Barnaby). The feature branch had some model changes, and some migrations. I ran those migrations, and viewed the feature branch.
Then I switched back to my main branch. I got errors because the database no longer matched my models. I tried (without thinking it through) to migrate backwards. This didn't work, becuase the migrations that had gotten me in to this state were no longer present. I then made the mistake of manually updating my database to its pre-migration state.
This put me in a situation where when I tried to re-run the migration, after merging in Barnaby's code, it didn't want to run, because the migration was recorded in the django_migrations table. I tried deleting the migration entry and got myself in to more trouble, with this error:
django.db.utils.ProgrammingError: relation "signage_scheduleentry_0dee419f" already exists
I don't know how deep this rabbit hole will go, so am just restoring my development database from a backup.
Friday, August 10, 2012
Setting defaults for UIView subclasses
[UILabel appearance]
[[UILabel appearance] setFont:[UIFont fontWithName:@"Miso-Bold" size:15]];
Then any UILabel you make will be created with the font Miso Bold, instead of the default.
Wednesday, July 4, 2012
Tackling Core Audio
Alex very nicely packaged up an AudioFileWriter class with the project which works great for me in the simulator, but fails unpredictably when I try to use it on a device. So for me, anyway, it seems that dream of avoiding touching core audio, and the dreaded AudioStreamBasicDescription has not arrived.
Today I'm playing around with ExtAudioFileWriteAsync, seeing which sorts of settings will work for me.
Writing to AIFF is working without too much trouble, but I'm having a heck of a time writing to m4a. It looks as if ExtAudioFileWriteAsync is sensitive about the number of frames passed when writing files of format kAudioFormatMPEG4AAC. When passing a buffer of 10,000 frames, I get a crash with this error code: -66567.
For anyone reading this who can't make sense of these error codes (like me, until yesterday), you can search the headers of whichever framework you think the error originated from for the code. Here's some explanation.
Anyway, -66567 resolves to kExtAudioFileError_MaxPacketSizeUnknown. I'm unable to find any documentation indicating just what this message means.
Now, when I reduce the number of frames I'm passing to ExtAudioFileWriteAsync to 512, the error message goes away, but the resulting file is only 28 bytes long and is unplayable. This is only in on my iPad. All works fine in the simulator.
Now I'm simplifying and trying to work with the synchronous version of ExtAudioFileWrite. This is failing immediately with kExtAudioFileError_MaxPacketSizeUnknown, even when I give it a very small number of frames (100).
This StackOverflow post indicates that there are some properties that are required to be set. I'm not sure that I read the documentation the same way this poster does, however it seems that in their case, setting kExtAudioFileProperty_CodecManufacturer solved a problem.
Monday, May 7, 2012
Thursday, May 3, 2012
Cheap and Deep app progress
Friday, February 25, 2011
debugging C++ in XCode
For example, when trying to inspect a variable, I was getting this error: "current stack frame does not contain a variable named `self'. The problem was that GDB thought it was looking at ojective-c when in fact it was C++. The fix was to manually tell GDB via the console that it's looking at C++.
set language c++
(gdb) x/64f sample.data_ + sampleReadPosition
0xbd9b458: 0.0132450331 0.0792260543 0.0219122898 0.0856349394
0xbd9b468: 0.0309457686 0.0916776061 0.0396130271 0.0969878212
0xbd9b478: 0.0487075411 0.101870783 0.0573747978 0.106387526
0xbd9b488: 0.0656758323 0.110171817 0.0739768669 0.113162637
0xbd9b498: 0.0818506405 0.115421005 0.0890530124 0.116946928
0xbd9b4a8: 0.0958281234 0.117313154 0.102237009 0.117313154
0xbd9b4b8: 0.107913449 0.116214484 0.112796411 0.114322335
0xbd9b4c8: 0.116946928 0.111270487 0.119998783 0.107547231
0xbd9b4d8: 0.122623369 0.102969453 0.1241493 0.0977202654
0xbd9b4e8: 0.124515519 0.0916776061 0.1241493 0.0845362693
0xbd9b4f8: 0.122989595 0.076967679 0.120731227 0.0686666444
0xbd9b508: 0.117313154 0.0596331693 0.11358989 0.0505386516
0xbd9b518: 0.108279675 0.0404065065 0.102603227 0.0302133244
0xbd9b528: 0.0961943418 0.0200201422 0.0886867866 0.00909451582
0xbd9b538: 0.0807519779 -0.00146488845 0.0724509433 -0.0124515519
0xbd9b548: 0.0634174645 -0.0230109561 0.0539567247 -0.0335703604