<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentarer til Axcon Weblog</title>
	<atom:link href="http://www.axcon.dk/blog/comments/feed" rel="self" type="application/rss+xml" />
	<link>http://www.axcon.dk/blog</link>
	<description>Avanceret elektronik og embedded software</description>
	<lastBuildDate>Tue, 07 Sep 2010 11:40:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>Kommentar til Danmarks bedste til prototype montage &#8211; nomineret af Rolf</title>
		<link>http://www.axcon.dk/blog/nyheder/danmarks-bedste-til-prototype-montage-nomineret.htm/comment-page-1#comment-222</link>
		<dc:creator>Rolf</dc:creator>
		<pubDate>Tue, 07 Sep 2010 11:40:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=605#comment-222</guid>
		<description>Nordens største EMS&#039;er kan man se på en lille liste fra Electronic Supply:

http://www.electronic-supply.dk/article/view.html?id=52974

Stor er jo ikke det samme som god til prototyper...</description>
		<content:encoded><![CDATA[<p>Nordens største EMS&#8217;er kan man se på en lille liste fra Electronic Supply:</p>
<p><a  href="http://www.electronic-supply.dk/article/view.html?id=52974" rel="nofollow" onclick="pageTracker._trackPageview('/outgoing/www.electronic-supply.dk/article/view.html?id=52974&amp;referer=');">http://www.electronic-supply.dk/article/view.html?id=52974</a></p>
<p>Stor er jo ikke det samme som god til prototyper&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Danmarks bedste Prototype Elektronik Montage Virksomhed 2010 (&#8220;PEMV-2010&#8243;) af Werner Blankenberg</title>
		<link>http://www.axcon.dk/blog/nyheder/danmarks-bedste-prototype-elektronik-montage-virksomhed-2010-pemv-2010.htm/comment-page-1#comment-220</link>
		<dc:creator>Werner Blankenberg</dc:creator>
		<pubDate>Wed, 01 Sep 2010 14:30:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=570#comment-220</guid>
		<description>Jeg vil gerne nominere ETK Elektronik .
 ( en erfaring fra mit tidligere job )
   Jeg kan kun nikke genkendende til de allerede positive skrevne udsagn i tidligere posts.
   (det bliver bare en positiv gentagelse)</description>
		<content:encoded><![CDATA[<p>Jeg vil gerne nominere ETK Elektronik .<br />
 ( en erfaring fra mit tidligere job )<br />
   Jeg kan kun nikke genkendende til de allerede positive skrevne udsagn i tidligere posts.<br />
   (det bliver bare en positiv gentagelse)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Brainer: Mere software af Rolf</title>
		<link>http://www.axcon.dk/blog/brainer/brainer-mere-software.htm/comment-page-1#comment-219</link>
		<dc:creator>Rolf</dc:creator>
		<pubDate>Wed, 01 Sep 2010 06:56:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=591#comment-219</guid>
		<description>Det er desværre ikke ligetil at skrive &amp;gt (større-end-tegn) og &amp;lt (mindre-end-tegn) i kommentarerne - det må man lige gætte sig til.</description>
		<content:encoded><![CDATA[<p>Det er desværre ikke ligetil at skrive &#038;gt (større-end-tegn) og &#038;lt (mindre-end-tegn) i kommentarerne &#8211; det må man lige gætte sig til.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Danmarks bedste Prototype Elektronik Montage Virksomhed 2010 (&#8220;PEMV-2010&#8243;) af Martin Larsen</title>
		<link>http://www.axcon.dk/blog/nyheder/danmarks-bedste-prototype-elektronik-montage-virksomhed-2010-pemv-2010.htm/comment-page-1#comment-217</link>
		<dc:creator>Martin Larsen</dc:creator>
		<pubDate>Mon, 30 Aug 2010 19:55:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=570#comment-217</guid>
		<description>Jeg vil gerne nominere Styromatic A/S

Deres styklistehåndtering er udemærket, og tvivlsspørgsmål håndteres hurtigt og effektivt.

De er hurtige og fleksible, når der skal fremstilles prototyperul på kort varsel, og er generelt meget proaktive, ved håndtering af komponentdisponering, 

Kvalitetsmæssigt har vi gode erfaringer - det er ikke mange fejl vi ser på prototyperne.

Rådgivning og sparring er vi meget tilfredse med. Vi oplever både stor erfaring og kreativitet i de forslag de har til forbedringer på produktionsegnethed og produktmodning.</description>
		<content:encoded><![CDATA[<p>Jeg vil gerne nominere Styromatic A/S</p>
<p>Deres styklistehåndtering er udemærket, og tvivlsspørgsmål håndteres hurtigt og effektivt.</p>
<p>De er hurtige og fleksible, når der skal fremstilles prototyperul på kort varsel, og er generelt meget proaktive, ved håndtering af komponentdisponering, </p>
<p>Kvalitetsmæssigt har vi gode erfaringer &#8211; det er ikke mange fejl vi ser på prototyperne.</p>
<p>Rådgivning og sparring er vi meget tilfredse med. Vi oplever både stor erfaring og kreativitet i de forslag de har til forbedringer på produktionsegnethed og produktmodning.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Brainer: Mere software af Peter Stuge</title>
		<link>http://www.axcon.dk/blog/brainer/brainer-mere-software.htm/comment-page-1#comment-216</link>
		<dc:creator>Peter Stuge</dc:creator>
		<pubDate>Mon, 30 Aug 2010 16:15:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=591#comment-216</guid>
		<description>Hvis der stod C++ i teksten ville Morten Piil have en god punkt, men nu står der C, og uanset dette er der noget endnu mere galt med koden:

Før man bruger assert() skal man have #include &lt;assert.h&gt; med i sit program. Hvis man også har #define NDEBUG *før* #include  (eller f.x. -DNDEBUG i Makefile) så oversættes hele assert()-linien til at ikke generere nogen kode. I en debug-version af programmet vil det altså køre fint, men når man slår debug fra for at sende en release ud mangler den så (mindst) et malloc()-opkald. Er man heldig vil man få advarsel fra sin compiler når man så bruger NewDataContainter, fordi den ikke er blevet assignet et værdi - men måske var den allerede det tidligere i programmet, da er der ikke nogen advarsel.

En regel for at undgå dette problem er at aldrig have kode med en side-effect inden i assert(). Den kode her burde altså skrives sådan her i stedet for:

NewDataContainter = (DataContainter *) malloc(sizeof (DataContainter));
assert(NewDataContainter);


Der kan muligvis også være nogle andre fejl, men det er svært at afgøre uden tilgang til mere kode fra det aktuelle scope. Jeg prøver alligevel at foreslå nogle ting som også kunne undersøges lidt mere indgående:

1. DataContainter burde nok hedde DataContainer. (uden t)

2. assert() ved malloc()-fejl er i min mening ikke god stil. Det gør at programmet umiddelbart afbrydes hvis en allokering ikke lykkes. Jeg mener at det tilstand burde håndteres bedre af programmet, før evt. afslut, selv om det kun er at give besked om *hvorfor* malloc() ikke lykkedes.

3. Det fremgår ikke hvad for type DataContainter er, hvilket kan påvirke sizeof() på flere måder. Med udgangspunkt i følgende har vi måske et problem:

struct dc {
  unsigned char size;
  unsigned char buffer[0];
};
typedef struct dc DataContainter;

En array med 0 elementer er valid C99 og en måde at sige til compilern &quot;jeg ved ikke lige hvor stor den her kommer til at være ved runtime&quot; - den buffer skal blive dynamisk allokeret til den rigtige størrelse senere i programmet. Sådan en array er altid nødt til at komme sidst i en struct, lige fordi det ikke går at vide hvor stor den skal være; altså hvorhen en efterfølgende medlem i structen kan gemmes. sizeof() på sådan en struct udelukker buffer fra størrelsesberegningen af samme grund. Hvis vi regner med at den her struct er byte aligned vil sizeof(DataContainter) altså være 1, og NewDataContainter-&gt;buffer vil være nødt til at allokeres separat.

4. Hvis DataContainter er en pointer til en array, i stedet som i 3. en typedef til en struct, vil sizeof(DataContainter) igen være 1, uanset hvor stor den udpegede array faktisk er.

1.-4. er kun potentielle fejl. Fejlen som opstår med #define NDEBUG før assert.h i programmet, eller -DNDEBUG (/DNDEBUG i Windows) ved build, er konkret og rigtig alvorlig.</description>
		<content:encoded><![CDATA[<p>Hvis der stod C++ i teksten ville Morten Piil have en god punkt, men nu står der C, og uanset dette er der noget endnu mere galt med koden:</p>
<p>Før man bruger assert() skal man have #include <assert .h> med i sit program. Hvis man også har #define NDEBUG *før* #include  (eller f.x. -DNDEBUG i Makefile) så oversættes hele assert()-linien til at ikke generere nogen kode. I en debug-version af programmet vil det altså køre fint, men når man slår debug fra for at sende en release ud mangler den så (mindst) et malloc()-opkald. Er man heldig vil man få advarsel fra sin compiler når man så bruger NewDataContainter, fordi den ikke er blevet assignet et værdi &#8211; men måske var den allerede det tidligere i programmet, da er der ikke nogen advarsel.</p>
<p>En regel for at undgå dette problem er at aldrig have kode med en side-effect inden i assert(). Den kode her burde altså skrives sådan her i stedet for:</p>
<p>NewDataContainter = (DataContainter *) malloc(sizeof (DataContainter));<br />
assert(NewDataContainter);</p>
<p>Der kan muligvis også være nogle andre fejl, men det er svært at afgøre uden tilgang til mere kode fra det aktuelle scope. Jeg prøver alligevel at foreslå nogle ting som også kunne undersøges lidt mere indgående:</p>
<p>1. DataContainter burde nok hedde DataContainer. (uden t)</p>
<p>2. assert() ved malloc()-fejl er i min mening ikke god stil. Det gør at programmet umiddelbart afbrydes hvis en allokering ikke lykkes. Jeg mener at det tilstand burde håndteres bedre af programmet, før evt. afslut, selv om det kun er at give besked om *hvorfor* malloc() ikke lykkedes.</p>
<p>3. Det fremgår ikke hvad for type DataContainter er, hvilket kan påvirke sizeof() på flere måder. Med udgangspunkt i følgende har vi måske et problem:</p>
<p>struct dc {<br />
  unsigned char size;<br />
  unsigned char buffer[0];<br />
};<br />
typedef struct dc DataContainter;</p>
<p>En array med 0 elementer er valid C99 og en måde at sige til compilern &#8220;jeg ved ikke lige hvor stor den her kommer til at være ved runtime&#8221; &#8211; den buffer skal blive dynamisk allokeret til den rigtige størrelse senere i programmet. Sådan en array er altid nødt til at komme sidst i en struct, lige fordi det ikke går at vide hvor stor den skal være; altså hvorhen en efterfølgende medlem i structen kan gemmes. sizeof() på sådan en struct udelukker buffer fra størrelsesberegningen af samme grund. Hvis vi regner med at den her struct er byte aligned vil sizeof(DataContainter) altså være 1, og NewDataContainter-&gt;buffer vil være nødt til at allokeres separat.</p>
<p>4. Hvis DataContainter er en pointer til en array, i stedet som i 3. en typedef til en struct, vil sizeof(DataContainter) igen være 1, uanset hvor stor den udpegede array faktisk er.</p>
<p>1.-4. er kun potentielle fejl. Fejlen som opstår med #define NDEBUG før assert.h i programmet, eller -DNDEBUG (/DNDEBUG i Windows) ved build, er konkret og rigtig alvorlig.</assert></p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Oversigt: Elektronik montage virksomheder af Per Sønderskov</title>
		<link>http://www.axcon.dk/blog/teknologi/oversigt-elektronik-montage-virksomheder.htm/comment-page-1#comment-214</link>
		<dc:creator>Per Sønderskov</dc:creator>
		<pubDate>Mon, 30 Aug 2010 11:55:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=597#comment-214</guid>
		<description>Jeg vil gerne sige tak for et godt møde i sidste uge med Anders Enggaard, og hermed gøre opmærksom på EUROTECHNIC som har monteret prototyper i mere end 25 år. Jeg håber I vil skrive EUROTECHNIC på listen.</description>
		<content:encoded><![CDATA[<p>Jeg vil gerne sige tak for et godt møde i sidste uge med Anders Enggaard, og hermed gøre opmærksom på EUROTECHNIC som har monteret prototyper i mere end 25 år. Jeg håber I vil skrive EUROTECHNIC på listen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Danmarks bedste Prototype Elektronik Montage Virksomhed 2010 (&#8220;PEMV-2010&#8243;) af Flemming</title>
		<link>http://www.axcon.dk/blog/nyheder/danmarks-bedste-prototype-elektronik-montage-virksomhed-2010-pemv-2010.htm/comment-page-1#comment-213</link>
		<dc:creator>Flemming</dc:creator>
		<pubDate>Mon, 30 Aug 2010 11:34:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=570#comment-213</guid>
		<description>Jeg vil gerne nominere EuroTechnic A/S i Støvring.

Super service og kvalitet i forbindelse med prototype produktion.

Stor fleksibilitet, hurtig levering, god sparring og god kvalitet i printene.
Alt det man som udviklingshus ønsker sig.</description>
		<content:encoded><![CDATA[<p>Jeg vil gerne nominere EuroTechnic A/S i Støvring.</p>
<p>Super service og kvalitet i forbindelse med prototype produktion.</p>
<p>Stor fleksibilitet, hurtig levering, god sparring og god kvalitet i printene.<br />
Alt det man som udviklingshus ønsker sig.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Brainer: Mere software af Morten Piil</title>
		<link>http://www.axcon.dk/blog/brainer/brainer-mere-software.htm/comment-page-1#comment-212</link>
		<dc:creator>Morten Piil</dc:creator>
		<pubDate>Mon, 30 Aug 2010 10:28:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=591#comment-212</guid>
		<description>Man får ikke kørt sin constructor i klassen hvis man allokerer med malloc, man skal bruge new operatoren. New  sørger for at objektet bliver oprettet korrekt - tilsvarende skal man bruge delete og ikke free når det skal frigives igen.</description>
		<content:encoded><![CDATA[<p>Man får ikke kørt sin constructor i klassen hvis man allokerer med malloc, man skal bruge new operatoren. New  sørger for at objektet bliver oprettet korrekt &#8211; tilsvarende skal man bruge delete og ikke free når det skal frigives igen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Brainer: Mere software af Jørgen Abrahamsen</title>
		<link>http://www.axcon.dk/blog/brainer/brainer-mere-software.htm/comment-page-1#comment-211</link>
		<dc:creator>Jørgen Abrahamsen</dc:creator>
		<pubDate>Mon, 30 Aug 2010 09:40:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=591#comment-211</guid>
		<description>assert er en macro, og ikke en funktion. Der bør være et ekstra sæt paranteser om malloc for at være sikker på at macro substitutionen går godt:

assert( (NewDataContainter = (DataContainter *) malloc(sizeof (DataContainter))) );</description>
		<content:encoded><![CDATA[<p>assert er en macro, og ikke en funktion. Der bør være et ekstra sæt paranteser om malloc for at være sikker på at macro substitutionen går godt:</p>
<p>assert( (NewDataContainter = (DataContainter *) malloc(sizeof (DataContainter))) );</p>
]]></content:encoded>
	</item>
	<item>
		<title>Kommentar til Danmarks bedste Prototype Elektronik Montage Virksomhed 2010 (&#8220;PEMV-2010&#8243;) af Sune Graves Krohn</title>
		<link>http://www.axcon.dk/blog/nyheder/danmarks-bedste-prototype-elektronik-montage-virksomhed-2010-pemv-2010.htm/comment-page-1#comment-208</link>
		<dc:creator>Sune Graves Krohn</dc:creator>
		<pubDate>Mon, 30 Aug 2010 08:48:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.axcon.dk/blog/?p=570#comment-208</guid>
		<description>Jeg vil gerne nominere Micro Technic A-S i Aarup.
Vi har prøvet flere forskellige store montagevirksomheder til prototype montage og vi er meget tilfredse Micro Technic.</description>
		<content:encoded><![CDATA[<p>Jeg vil gerne nominere Micro Technic A-S i Aarup.<br />
Vi har prøvet flere forskellige store montagevirksomheder til prototype montage og vi er meget tilfredse Micro Technic.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
 
