-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
418 lines (335 loc) · 33.2 KB
/
atom.xml
File metadata and controls
418 lines (335 loc) · 33.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Debug Things</title>
<link href="http://www.debugthings.com/atom.xml" rel="self"/>
<link href="http://www.debugthings.com/"/>
<updated>2015-10-28T13:21:04-07:00</updated>
<id>http://www.debugthings.com</id>
<author>
<name>James Davis</name>
<email>james.l.davis@outlook.com</email>
</author>
<entry>
<title>Rewriting IL - Part 4 - Token Replacement and Signature Rewriting</title>
<link href="http://www.debugthings.com//2015/10/28/rewriting-il-remotely-part4/"/>
<updated>2015-10-28T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/10/28/rewriting-il-remotely-part4</id>
<content type="html"><p>In the <a href="/2015/10/13/rewriting-il-remotely-part3/">last post</a> we talked about signatures and compression and we expanded on Metadata in general. Now we need to talk about the idea of replacing tokens inside of IL and inside of signatures. Being able to do this gives you a tremendous amount of power and flexibility when you start down the path of rewriting IL. Let&#8217;s take a look at some examples and look at some sample code to replace tokens in a signature and lay the ground work for injecting arbitrary IL.</p>
</content>
</entry>
<entry>
<title>Rewriting IL - Part 3 - Signatures and Compression</title>
<link href="http://www.debugthings.com//2015/10/13/rewriting-il-remotely-part3/"/>
<updated>2015-10-13T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/10/13/rewriting-il-remotely-part3</id>
<content type="html"><p>In the <a href="/2015/09/28/rewriting-il-remotely-part2/">last post</a> we talked about tokens and how they are like handles to types, methods, signatures, and really just about everything else. They are the currency that the CLR deals with. Today we talk about signatures, these guys are the biggest consumers of tokens outside of IL.</p>
</content>
</entry>
<entry>
<title>Rewriting IL - Part 2 - Tokens</title>
<link href="http://www.debugthings.com//2015/09/28/rewriting-il-remotely-part2/"/>
<updated>2015-09-28T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/09/28/rewriting-il-remotely-part2</id>
<content type="html"><p>In the <a href="/2015/09/16/rewriting-il-remotely-part1/">last post</a> we talked about getting the metadata interfaces. This allows us to read (import) and even fiddle (emit) with our precious metadata. What can we do with this? Right now tools like Just Decompile, ILSpy, <a href="https://msdn.microsoft.com/en-us/library/aa309387(v=vs.71).aspx">ILDASM</a> and others use these to read the files off disk and chew through the data to produce a decompiled version. What are we going to do with it? We&#8217;re going to merge in arbitrary .NET code into existing libraries. In order to do that we have to have correct tokens.</p>
</content>
</entry>
<entry>
<title>Rewriting IL - Part 1 - Metadata Interfaces</title>
<link href="http://www.debugthings.com//2015/09/16/rewriting-il-remotely-part1/"/>
<updated>2015-09-16T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/09/16/rewriting-il-remotely-part1</id>
<content type="html"><p>I think it goes without saying that rewriting IL is no trivial thing. However, I&#8217;ll just go ahead and say it again, rewriting IL is no trivial thing. If you jump on Code Project you&#8217;ll find a ton of resources that span the years. In fact when I started my project I turned to these very same articles. I found a couple of them that rely on using an injection library but are somewhat of a hack&#8212;very brilliant hacks mind you. So, in order to be above board I started down the path of using a profiler to inject IL. Let&#8217;s find out why this is not a trivial thing.</p>
</content>
</entry>
<entry>
<title>Simple Beginnings - ChainsAPM</title>
<link href="http://www.debugthings.com//2015/09/06/simple%20beginings-chainsapm/"/>
<updated>2015-09-06T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/09/06/simple beginings-chainsapm</id>
<content type="html"><p>In my last post I prattle on about the normal hang ups that any software developer has. I don&#8217;t have time for this, I would rather be doing that&#8230; Now that, <em>that&#8217;s</em> over I can get back to doing what I enjoy doing. Breaking things and making really terrible design decisions. Today I&#8217;m going to bore you with some background of my pet project <a href="https://github.com/chainsapm/chainsapm">ChainsAPM</a>.</p>
</content>
</entry>
<entry>
<title>A Year of Procrastination</title>
<link href="http://www.debugthings.com//2015/09/01/a-year-of-procrastination/"/>
<updated>2015-09-01T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/09/01/a-year-of-procrastination</id>
<content type="html"><p>So, about a year ago (August 1st, 2014 to be exact) I started on a project for fun(?). This wasn&#8217;t much unlike any other project I&#8217;ve started, however, this one felt a bit different. I actually <strong>TALKED ABOUT IT</strong> with other people. I&#8217;m not normally shy about my whimsical ideas, but usually I relegate them to &#8220;it would only help me,&#8221; and I bother only one or two people with my scheme. In this last year I&#8217;ve stopped a number of times for great things. Speaking at four conferences, my daughter&#8217;s first birthday, a family reunion, my 8th wedding anniversary, literally a full life worth of stuff in a year. It has been a great year.</p>
</content>
</entry>
<entry>
<title>Time Flies! - Prepping for Code on the Beach</title>
<link href="http://www.debugthings.com//2015/07/16/time-flies-code-on-the-beach/"/>
<updated>2015-07-16T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/07/16/time-flies-code-on-the-beach</id>
<content type="html"><p>I was looking back at my site for reference here at work and I noticed I haven&#8217;t written anything for over a month now! So, as the title says, time flies. Plenty of things have been broken and fixed in the past month, so I&#8217;ll be getting back to it soon. However, the past month or so, I&#8217;ve been devoting my free time at night to fully preparing for <a href="https://www.codeonthebeach.com/">Code on the Beach</a>.</p>
</content>
</entry>
<entry>
<title>Debugging - SSRS Report Viewer and IE11</title>
<link href="http://www.debugthings.com//2015/06/03/rsprintclient-ie11-heap-corruption%20-%20Copy/"/>
<updated>2015-06-03T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/06/03/rsprintclient-ie11-heap-corruption - Copy</id>
<content type="html"><p>Recently we upgraded IE in order to keep up with the EOL of Internet Explorer&#8212;for most of our enterprise that means we&#8217;re going to IE11. This started a while ago and it took some time for it to trickle down to a majority of the machines. In fact, some standard user machines were upgraded before the developer&#8217;s machines were. This lead to a number of broken pages and functionality. Aside from broken HTML pages was the SSRS Report Viewer control&#8212;after the upgrade it started crashing IE. You may have run into something like this after your upgrades and you don&#8217;t have a lot of options. Be prepared to read the words unsupported and not recommended &#8230; <strong><em>A LOT</em></strong>.</p>
</content>
</entry>
<entry>
<title>Debugging - ADFS AppDomainUnloadedException with NetExt</title>
<link href="http://www.debugthings.com//2015/05/22/adfs-appdomain-unloaded-netext/"/>
<updated>2015-05-22T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/05/22/adfs-appdomain-unloaded-netext</id>
<content type="html"><p>I got a quick message yesterday about a machine running out of space. Normally this is just handled by our second line support. But this time the developer jumped on the box to find out what was causing it and noticed there were a lot of dump files. I looked at it with the developer and found there were a bunch of crash dumps being created by a monitoring tool. This tool captures unhandled exceptions and will create a mini dump for it. Neither of us liked the fact there were numerous dumps, so I decided to dig deeper.</p>
</content>
</entry>
<entry>
<title>Debugging - I break things. Visual Studio Crash</title>
<link href="http://www.debugthings.com//2015/05/14/i-break-things/"/>
<updated>2015-05-14T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/05/14/i-break-things</id>
<content type="html"><p>Sometimes I abuse Visual Studio without trying. I use Visual Studio to create web performance test scripts and I usually use Fiddler to record the scripts. After recording a fairly trivial script I exported the Fiddler session and imported it into Visual Studio. Once I was done mucking with the Web Test layout I converted it to a coded web test. As soon as the coded test was done generating, Visual Studio crashed. So, I tried again, same thing. Nope, I don&#8217;t like it&#8212;let&#8217;s find out what&#8217;s going on.</p>
</content>
</entry>
<entry>
<title>Debugging - vNext, Mono, xUnit ... On Linux - Part 2</title>
<link href="http://www.debugthings.com//2015/04/10/debugging-vnext-mono-pt2/"/>
<updated>2015-04-10T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/04/10/debugging-vnext-mono-pt2</id>
<content type="html"><p>Last time we found an issue with the threading model and the execution context that caused the xUnit custom thread manager to attempt to join on itself causing an infinite wait condition. This time the execution context is breaking us in an entirely new way. In this session I will show you two ways to find the issue using GDB. Hang on because we&#8217;re going deep in this one.</p>
</content>
</entry>
<entry>
<title>Debugging - vNext, Mono, xUnit ... On Linux - Part 1</title>
<link href="http://www.debugthings.com//2015/04/07/debugging-vnext-mono/"/>
<updated>2015-04-07T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/04/07/debugging-vnext-mono</id>
<content type="html"><p>Earlier this week I was browsing twitter and I came across a post by <a href="https://twitter.com/davidfowl">@davidfowler</a> (a dev on the ASPNET team) asking for help with mono. I&#8217;m by no means an expert but I thought I could help none the less. I was able to provide some context around the errors the team was seeing for two separate issues. Today I&#8217;ll walk through some of the steps I took to debug the first issue.</p>
</content>
</entry>
<entry>
<title>Test in Production (with Fiddler)!</title>
<link href="http://www.debugthings.com//2015/04/01/fiddler-test-in-production/"/>
<updated>2015-04-01T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/04/01/fiddler-test-in-production</id>
<content type="html"><p>While this does seem like an April fools joke, that wasn&#8217;t the intention. However, that doesn&#8217;t stop me from feeling somewhat clever. Anyway, one of our internal teams started complaining about their web pages being slow. Well, yeah, okay; what do you mean by slow? Just slow or SLOOOOOW. Turns out it was the latter. Using the IE and Chrome profiling tools I could see that there was a lot of time being spent in a jQGrid selector. We wanted to test out some code changes, but had to wait to cut a change record. This would have cost us a few days.</p>
</content>
</entry>
<entry>
<title>Debugging - NetExt WinDbg Extension</title>
<link href="http://www.debugthings.com//2015/03/31/netext-windbg/"/>
<updated>2015-03-31T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/03/31/netext-windbg</id>
<content type="html"><p>I was poking around for some WinDbg extensions and stumbled upon a new one that I hadn&#8217;t seen before. <a href="https://netext.codeplex.com/">NetExt</a>, is written and maintained by <a href="https://msdn.microsoft.com/en-us/gg602412.aspx">Rodney Viana</a> an Escalation Engineer with Microsoft. I downloaded it and went through his tutorials on how to use it (available on the CodePlex site). I must say it&#8217;s pretty nice. The best feature is that it uses the .NET Debugging interfaces as well as a mix of managed code.</p>
</content>
</entry>
<entry>
<title>Debugging - "Exception has been thrown by the target of an invocation"</title>
<link href="http://www.debugthings.com//2015/03/20/visual-studio-target-invocation/"/>
<updated>2015-03-20T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/03/20/visual-studio-target-invocation</id>
<content type="html"><p>The other day I had some issues starting up Visual Studio. I got presented with a modal dialog that said <code>"Exception has been thrown by the target of an invocation"</code>. I wasn&#8217;t sure why, so I tried it again, and again, and the once more for good measure. Turns out, it wasn&#8217;t the way I was clicking the shortcut link. Of course, this is a problem as Visual Studio is my primary tool. Let&#8217;s see what was causing this.</p>
<p>[Environment]::SetEnvironmentVariable(&#8220;Path&#8221;, $outpath, &#8220;Machine&#8221;)
[procmondl]: https://technet.microsoft.com/en-us/library/bb896645.aspx
[psscordl]: http://www.microsoft.com/en-us/download/details.aspx?id=21255
[sosmsdn]: https://msdn.microsoft.com/en-us/library/bb190764%28v=vs.110%29.aspx</p>
</content>
</entry>
<entry>
<title>VB6 and 482 Printer errors (Hello 1998)</title>
<link href="http://www.debugthings.com//2015/03/09/vb6-482-error/"/>
<updated>2015-03-09T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2015/03/09/vb6-482-error</id>
<content type="html"><p>Recently at my day job I was called in to check out an issue that sprung up after a new printer driver was installed. My first thoughts were <em>&#8220;Oh, they can&#8217;t print now; let&#8217;s back-level the drivers.&#8221;</em> Of course, I work with a great bunch of folks, and that had already been tried and the problem was still there. Ah, well that mea.. what?</p>
</content>
</entry>
<entry>
<title>Visual Studio Productivity, you're doing it wrong (Ctrl+])</title>
<link href="http://www.debugthings.com//2015/02/24/visual-studio-ctrl-bracket/"/>
<updated>2015-02-24T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/02/24/visual-studio-ctrl-bracket</id>
<content type="html"><p>So, I was working through an old project today and encountered a method that was about 200(!!) lines long. The code is in a dire need of refactoring and I set down the stupid path of doing so.</p>
</content>
</entry>
<entry>
<title>I'm speaking at Orlando Code Camp</title>
<link href="http://www.debugthings.com//2015/02/10/speaking-orlcc/"/>
<updated>2015-02-10T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/02/10/speaking-orlcc</id>
<content type="html"><p>I was just accepted the other day to speak at the <a href="http://www.orlandocodecamp.com/">Orlando Code Camp</a> for my topic on OWASP Top 10 Security. This is the third time I&#8217;ve delivered this presentation and I&#8217;m still excited about it. Security is not overlooked by anyone today and developers who are just getting into MVC or even seasoned professionals need to take a look at how they approach it.</p>
</content>
</entry>
<entry>
<title>Slides available from South Florida Code Camp</title>
<link href="http://www.debugthings.com//2015/02/10/slides-sflcc/"/>
<updated>2015-02-10T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/02/10/slides-sflcc</id>
<content type="html"><p>Thanks everyone for coming out to my two sessions at <a href="http://www.fladotnet.com/codecamp/">South Florida Code Camp</a>, I had a great time speaking! I met some great folks out there in the community and was excited to see how many people are active in learning and keeping their skills relevant.</p>
</content>
</entry>
<entry>
<title>I'm speaking at South Florida Code Camp</title>
<link href="http://www.debugthings.com//2015/01/22/speaking-sflcc/"/>
<updated>2015-01-22T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/01/22/speaking-sflcc</id>
<content type="html"><p>I was just accepted the other day to speak at the <a href="http://www.fladotnet.com/codecamp/">South Florida Code Camp</a> for two topics: OWASP Top 10 Security and Load Testing with Azure. This should be a great time. I feel pretty honored to be among some great leaders in the industry.</p>
</content>
</entry>
<entry>
<title>Debugging - Finding a native heap leak with WinDbg</title>
<link href="http://www.debugthings.com//2015/01/09/debugging-heap-leaks/"/>
<updated>2015-01-09T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/01/09/debugging-heap-leaks</id>
<content type="html"><p>While writing the <a href="https://github.com/jldgit/mysql_udf_dotnet">MySQL .NET UDF Plugin</a> I had to break away from my daily use of .NET. I have done a bit with Win32 COM before but not enough to know all of the ins and outs. But, as I plow through some books and bad code examples I introduce all kinds of bugs. Most notably memory leaks. I will show what leaks I found and how I fixed them using a couple of WinDbg commands as well as a few utilities.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 9 - Strings, _bstr_t, SafeArrays, SysAllocString, SysFreeString</title>
<link href="http://www.debugthings.com//2015/01/08/extending-mysql-server-part9/"/>
<updated>2015-01-08T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2015/01/08/extending-mysql-server-part9</id>
<content type="html"><p>Up until now I&#8217;ve been dealing with integers and reals. This is great for a lot of statistical information but we all know that databases are used for more than just storing numbers. Depending on your type of database you will most likely have a number of text items that are used to describe or othewise identify some integer value. In order to work with these values we have to marshal the data to and fro. Let&#8217;s dive in to what&#8217;s happening.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 8 - Mimicking IIS (Shadow Copy, Custom Configs)</title>
<link href="http://www.debugthings.com//2014/12/16/extending-mysql-server-part8/"/>
<updated>2014-12-16T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/12/16/extending-mysql-server-part8</id>
<content type="html"><p>One of the coolest things about deploying to IIS is the shadow copy feature. This allows you to drop in a new DLL and when the application detects it, it will spin up a new AppDomain and send all new requests there. This &#8220;seamless&#8221; integration is great for achieving high availability. Web servers and SQL servers alike need to experience as little down time as possible. We will walk through adding shadow copy and implementing file watchers inside of the MySQLHostManager that will handle these conditions.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 7 - AppDomain Pools</title>
<link href="http://www.debugthings.com//2014/12/15/extending-mysql-server-part7/"/>
<updated>2014-12-15T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/12/15/extending-mysql-server-part7</id>
<content type="html"><p>If we look at some of the performance metrics of the MySQL UDF extension, we&#8217;re not looking great for a few items. Number one, of course, is the loading of the .NET CLR. Unfortunately unless I integrate this tool into the MySQL code itself I can&#8217;t control that. The next is the loading and use of the AppDomain. That, however, I can fix.</p>
</content>
</entry>
<entry>
<title>Y U NO HAVE BUTTON?</title>
<link href="http://www.debugthings.com//2014/12/05/y-u-no-have-button/"/>
<updated>2014-12-05T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/12/05/y-u-no-have-button</id>
<content type="html"><p>Seriously, it&#8217;s 2014 almost 2015. I wanted to add a file type association to my machine using the provided Windows interfaces. I added an association by using the open file dialog, but realized after the fact that I wanted to give the file type a better name. A quick Google search provided a number of links asking how, but only one that told me how.</p>
</content>
</entry>
<entry>
<title>Compiling for Two (.NET versions)</title>
<link href="http://www.debugthings.com//2014/12/03/compiling-for-two/"/>
<updated>2014-12-03T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/12/03/compiling-for-two</id>
<content type="html"><p>While writing the <a href="https://github.com/jldgit/mysql_udf_dotnet">MySQL plugin</a> I found a strange need to compile two versions of my AppDomain Manager. Mainly it was for future compatibility. Plus I figured as long as my Interfaces didn&#8217;t change, everything would be great. But it left me with a sucking hole in my project solution. I was going to have to maintain two versions of source code <strong>FOR THE EXACT SAME THING</strong>. I didn&#8217;t like that.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 6 - Supporting Side-by-Side .NET CLRs</title>
<link href="http://www.debugthings.com//2014/12/02/extending-mysql-server-part6/"/>
<updated>2014-12-02T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/12/02/extending-mysql-server-part6</id>
<content type="html"><p>So far, we&#8217;ve done a lot to the CLR hosting engine to properly handle type loading, type safety and custom assemblies. Now we have the task to support some desired functionality supplied with the CLR. Namely being able to support, or not support side-by-side CLR loading. We will take a look at what code changes are involved and what we can do to ensure proper loading.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 5 - AppDomain and Host Safety</title>
<link href="http://www.debugthings.com//2014/11/30/extending-mysql-server-part5/"/>
<updated>2014-11-30T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/30/extending-mysql-server-part5</id>
<content type="html"><p>Now that we have a properly refactored base, and we have a good working solution to load new file from, we need to start considering safety. Not just type safety and integrity of data. No, safety of the executing code as well as the safety of the CLR host&#8212;MySQL in this case. Without that we would open up our new plugin library to a lot of malicious things.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 4 - Extending the AppDomain Manager</title>
<link href="http://www.debugthings.com//2014/11/26/extending-mysql-server-part4/"/>
<updated>2014-11-26T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/26/extending-mysql-server-part4</id>
<content type="html"><p>So far the application was simple and was able to load and run a command from inside of our AppDomain manager. As promised, I am extending this functionality to allow loading of any number of classes. In order to do this I made some large changes to the application. In order to keep things somewhat coherent between Parts 1, 2 and 3&#8212;I branched off into a work in progress(wip) area that should make it easier to follow along.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 3 - Adding in the .NET Hosting API</title>
<link href="http://www.debugthings.com//2014/11/18/extending-mysql-server-part3/"/>
<updated>2014-11-18T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/18/extending-mysql-server-part3</id>
<content type="html"><p>Now that we’ve walked through the basics of a UDF, let’s start bolting on an AppDomain Manager. As I mentioned before in <a href="(/2014/11/16/extending-mysql-server-part2/)">part 2</a> my example is based off of the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=7325">ADMHost</a> sample provided by Microsoft. The code is used as a jump off point, but we will be extending it as these posts progress. This part of the series will focus on the insertion points rather than the actual code. That will be in the next part. For some extra information on the hosting API check out <a href="http://www.amazon.com/gp/product/0735619883/">Customizing the Microsoft® .NET Framework</a> by <a href="http://blogs.msdn.com/b/stevenpr/">Steven Pratschner</a>. Also check out <a href="http://msdn.microsoft.com/en-us/library/ms404385(v=vs.110).aspx">MSDN</a> for update information on the APIs.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 2 - UDF Deep Dive</title>
<link href="http://www.debugthings.com//2014/11/16/extending-mysql-server-part2/"/>
<updated>2014-11-16T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/16/extending-mysql-server-part2</id>
<content type="html"><p>After I worked through compiling the sources, the next step was to get .NET hosting working at a basic level. I used source from another project called <a href="http://www.microsoft.com/en-us/download/details.aspx?id=7325">ADMHost</a> (App Domain Manager) to base my code on. This code allows you to specify and create a managed AppDomain manager and use it to manage and run your .NET assemblies.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 1 - Compile Sample UDF</title>
<link href="http://www.debugthings.com//2014/11/11/extending-mysql-server-part1/"/>
<updated>2014-11-11T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/11/extending-mysql-server-part1</id>
<content type="html"><p>So, the first thing I had to do was compile the MySQL sample UDF which is included in the source tree. While it seems like a simple thing to do with CMake and all of the proper tools installed, there are a few things not documented. The steps to compile <a href="http://dev.mysql.com/doc/refman/5.5/en/udf-compiling.html">can be found here</a>. The steps are really straight forward, but there is a catch. In order to build on Windows there are a few steps you will need to do in order to fully get the example working.</p>
</content>
</entry>
<entry>
<title>MySQL .NET Hosting Extension - Part 0</title>
<link href="http://www.debugthings.com//2014/11/11/extending-mysql-server-part0/"/>
<updated>2014-11-11T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/11/extending-mysql-server-part0</id>
<content type="html"><p>For some reason I feel compelled to write an extension for <a href="http://www.mysql.com/">MySQL</a> that allows use of .NET classes for functions. It&#8217;s really a purely academic exercise&#8212;even though I&#8217;m not in school&#8212;that I&#8217;m using to explore the use of the <a href="http://msdn.microsoft.com/en-us/library/dd380850(v=vs.110).aspx">.NET Hosting APIs</a>. I will use my blog as a way to keep myself focused and accountable. But more over it&#8217;s so I don&#8217;t forget what I wanted to do. I will line out a few milestones.</p>
</content>
</entry>
<entry>
<title>First Time Speaking at OWASP Tampa</title>
<link href="http://www.debugthings.com//2014/11/06/owasp-top-10-mvc-tampa-day-talk/"/>
<updated>2014-11-06T00:00:00-08:00</updated>
<id>http://www.debugthings.com/2014/11/06/owasp-top-10-mvc-tampa-day-talk</id>
<content type="html"><p>A few weeks ago I submitted a talk for <a href="https://www.owasp.org/index.php/Tampa">OWASP Tampa Days 2014</a> and I was selected. The topic I picked to demonstrate was how MVC for .NET can solve some of the problems listed in the <a href="https://www.owasp.org/index.php/Top_10_2013-Top_10">OWASP Top 10</a>. Let me be the first to say that I was truly unprepared for what I was about to get into. This was truly an exercise in conciseness. <a href="/owasp/">Get the slides here</a></p>
</content>
</entry>
<entry>
<title>Contributing to a Forum for 10 Days Straight</title>
<link href="http://www.debugthings.com//2014/10/31/answering-questions/"/>
<updated>2014-10-31T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/10/31/answering-questions</id>
<content type="html"><p>Back in early October my company sent me to <a href="http://http://compuwareperform.com/">Perform 2014</a>. While there, I met with some great people and found out that I&#8217;m not alone. It was also very humbling. I liked that. But, with all of the meeting I found that there were a lot of people who didn&#8217;t know where to turn to for help. Turns out there is a very active user community. I wanted to get involved.</p>
</content>
</entry>
<entry>
<title>Debugging - HostProtectionException in SSRS</title>
<link href="http://www.debugthings.com//2014/10/21/hostprotectionexception-ssrs/"/>
<updated>2014-10-21T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/10/21/hostprotectionexception-ssrs</id>
<content type="html">Our BI team is currently going through an uplift from Win2k3 to Win2012. It is quite a massive undertaking of course. But, beyond the amount of work that has to be done there is another dangerous killer out there. Undocumented changes. In this article I describe the System.Security.HostProtectionException in relation to SSRS and custom code.</content>
</entry>
<entry>
<title>Debugging - Fixing a deadlock</title>
<link href="http://www.debugthings.com//2014/09/24/critical-section-deadlock/"/>
<updated>2014-09-24T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/09/24/critical-section-deadlock</id>
<content type="html"><p>More often than not I do postmortem debugging. That is to say, I get a dump file long after the machine has experienced an issue. But, on occasion I get pulled in to take a look at problems that need to be run through the debugger. This article will show you some commands you can use to locate and fix code using WinDbg.</p>
</content>
</entry>
<entry>
<title>Bandwidth. It's not free...</title>
<link href="http://www.debugthings.com//2014/09/23/bandwidth/"/>
<updated>2014-09-23T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/09/23/bandwidth</id>
<content type="html"><p>Usually when I performance test internal applications I don&#8217;t consider bandwidth unless I know we&#8217;re doing something irrational like transferring multi gigabyte files all the time. And even then I only consider it if we&#8217;re crossing a WAN or some other &#8220;slow&#8221; link between sites. But, every now and then there is a project that runs over the Internet and it is very data intensive. And, a lot of that data is out of the control of the developers (images, 3rd party libraries, fonts).</p>
</content>
</entry>
<entry>
<title>Always Performance Test!</title>
<link href="http://www.debugthings.com//2014/09/16/always-performance-test/"/>
<updated>2014-09-16T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/09/16/always-performance-test</id>
<content type="html"><p>While thumbing through Twitter I ran across an <a href="http://apmblog.compuware.com/2014/09/16/detecting-bad-deployments-resource-impact-response-time-hotspot-garbage-collection/">article</a> written by <a href="https://twitter.com/grabnerandi">@grabnerandi</a> about a company not being able to load test a change for dependency injection. I can&#8217;t tell you how many times in my job that performance testing has been brushed over for speed to market.</p>
</content>
</entry>
<entry>
<title>Writing code to write code</title>
<link href="http://www.debugthings.com//2014/09/06/code-to-code/"/>
<updated>2014-09-06T00:00:00-07:00</updated>
<id>http://www.debugthings.com/2014/09/06/code-to-code</id>
<content type="html"><p>Every now and then a balance needs to be struck from the every day coding of an application. While personal life is usually the topic for these types of posts, today that is not the case. Sometimes you have to write code in order to write code. This is somewhat of an extended rant from my previous post.</p>
</content>
</entry>
</feed>