<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.robertlacroix.de/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">robertlacroix.com - Robert Lacroix</title><subtitle type="html" /><id>http://www.robertlacroix.de/cs/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.robertlacroix.de/cs/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.20423.1">Community Server</generator><updated>2004-08-31T10:49:00Z</updated><entry><title>Packets dropped with 0xC0040034 FWX_E_SEQ_ACK_MISMATCH result code on Microsoft ISA Server</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2010/01/24/packets-dropped-with-0xc0040034-fwx-e-seq-ack-mismatch-result-code-on-microsoft-isa-server.aspx" /><id>http://www.robertlacroix.de/cs/archive/2010/01/24/packets-dropped-with-0xc0040034-fwx-e-seq-ack-mismatch-result-code-on-microsoft-isa-server.aspx</id><published>2010-01-24T15:12:00Z</published><updated>2010-01-24T15:12:00Z</updated><content type="html">If you notice performance problems on a web server published through ISA, check if there are packets dropped in the firewall log with the published server as Client IP, the client as Destination IP and a Result Code of 0xC0040034 FWX_E_SEQ_ACK_MISMATCH.&lt;br&gt;&lt;br&gt;&lt;img src="http://www.robertlacroix.com/files/0xC0040034-FWX_SEQ_ACK_MISMATCH/0xC0040034-FWX_SEQ_ACK_MISMATCH-1.png"&gt;&lt;br&gt;&lt;br&gt;If that's the case, try the following steps and see if the problem disappears:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Update network card drivers to the current version. Reboot afterwards and try if it helped.&lt;/li&gt;&lt;li&gt;Disable IP offloading by setting EnableRSS, EnableTCPA, EnableTCPChimney to 0, and DisableTaskOffload to 1 (create the REG_DWORDs if necessary) in HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ Tcpip\ Parameters on ISA and the published servers. Reboot afterwards and try if it helped.&lt;/li&gt;&lt;li&gt;In the the To tab of the publishing rule, activate "Requests appear to come from the ISA Server computer" instead of "Requests appear to come from the original client". The last change did fix the problem for me, it has some disadvantages though as you don't have the actual client ip in the web server logs.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;img src="http://www.robertlacroix.com/files/0xC0040034-FWX_SEQ_ACK_MISMATCH/0xC0040034-FWX_SEQ_ACK_MISMATCH-2.png"&gt;&lt;br&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=727" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Microsoft" scheme="http://www.robertlacroix.de/cs/archive/tags/Microsoft/default.aspx" /><category term="0xC0040034" scheme="http://www.robertlacroix.de/cs/archive/tags/0xC0040034/default.aspx" /><category term="Firewall" scheme="http://www.robertlacroix.de/cs/archive/tags/Firewall/default.aspx" /><category term="ISA" scheme="http://www.robertlacroix.de/cs/archive/tags/ISA/default.aspx" /><category term="Dropped" scheme="http://www.robertlacroix.de/cs/archive/tags/Dropped/default.aspx" /><category term="Error" scheme="http://www.robertlacroix.de/cs/archive/tags/Error/default.aspx" /><category term="FWX_E_SEQ_ACK_MISMATCH" scheme="http://www.robertlacroix.de/cs/archive/tags/FWX_5F00_E_5F00_SEQ_5F00_ACK_5F00_MISMATCH/default.aspx" /></entry><entry><title>How to eliminate re-occurring RSoP warnings in the eventlog on a Windows Server 2008 Server Core</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2008/11/18/how-to-eliminate-re-occurring-rsop-warnings-in-the-eventlog-on-a-windows-server-2008-server-core.aspx" /><id>http://www.robertlacroix.de/cs/archive/2008/11/18/how-to-eliminate-re-occurring-rsop-warnings-in-the-eventlog-on-a-windows-server-2008-server-core.aspx</id><published>2008-11-18T22:17:00Z</published><updated>2008-11-18T22:17:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/rsop-warnings/rsop-warnings.png" align="right" hspace="10"&gt;Recently we noticed RSoP warnings on our Windows Server 2008 Server
Core Domain Controllers that re-occurred every five minutes in the
system as well as in the application eventlog, saying that it was
unable to log RSoP-Data for some reason. Resultant Set of Policies
(RSoP) is the combined result of all applied group policies, which is logged
for analysis reasons and can be seen with the Resultant Set of Policies
MMC-snap-in.&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;Log Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&lt;br&gt;Source:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft-Windows-GroupPolicy&lt;br&gt;Event ID:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1091&lt;br&gt;Level:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Warning&lt;br&gt;Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Windows could not record&amp;nbsp; the Resultant Set of Policy (RSoP)
information for the Group Policy extension &amp;lt;Group Policy
Registry&amp;gt;. Group Policy settings successfully applied to the
computer or user; however, management tools may not report accurately.&lt;br&gt;&lt;br&gt;Log Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application&lt;br&gt;Source:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Group Policy Registry&lt;br&gt;Event ID:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4099&lt;br&gt;Level:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Warning&lt;br&gt;Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
The client-side extension could not log RSoP data because it failed
with error code '0x8004401e &amp;lt;unknown-message-text&amp;gt;'.&lt;/font&gt;&lt;br&gt;&lt;br&gt;After
some digging on the net, it turned out that it was related to Group
Policy Preference Client Side Extensions we used to distribute some
registry settings. The Group Policy Preference Client Side Extensions
are an addition to Windows Server 2008 respectively Windows Vista SP1
which can be installed on &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E60B5C8F-D7DC-4B27-A261-247CE3F6C4F8&amp;amp;displaylang=en"&gt;Windows XP&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bfe775f9-5c34-44d0-8a94-44e47db35add&amp;amp;DisplayLang=en"&gt;Windows Server 2003&lt;/a&gt;
as well. They add the possibility to distribute "preferences" rather
than "policies" in a very smart way. The functionality was named
PolicyMaker&amp;nbsp; before, has been bought by Microsoft and is now
distributed freely as part of Windows.&lt;br&gt;&lt;br&gt;Regarding those Group
Policy Preference Client Side Extensions, Microsoft obviously has been
to aggressive while stripping down server core, as it turns out that in
order to generate RSoP of these preferences, a WBEM (WMI) MOF file
(Managed Object Format) is needed but missing in server core.
Fortunately that can be fixed real easy:&lt;br&gt;&lt;br&gt;1. Get &lt;font face="Courier New"&gt;%SYSTEMROOT%\system32\wbem\polprocl.mof&lt;/font&gt; from a full Windows Server 2008 and copy it to the same path on the server core.&lt;br&gt;2. Get &lt;font face="Courier New"&gt;%SYSTEMROOT%\system32\wbem\&lt;i&gt;en-US&lt;/i&gt;\polprocl.mfl&lt;/font&gt;
from a full Windows Server 2008 and copy it to the same path on the
server core, where en-US should be replaced with the actual language
that is installed (repeat for every language pack installed)&lt;br&gt;3. On an administrative cmd do &lt;font face="Courier New"&gt;mofcomp %SYSTEMROOT%\system32\wbem\polprocl.mof&lt;/font&gt;&lt;br&gt;&lt;br&gt;Afterwards issue a &lt;font face="Courier New"&gt;gpupdate /force&lt;/font&gt; and the problem should be gone.&lt;br&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=722" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="RSoP" scheme="http://www.robertlacroix.de/cs/archive/tags/RSoP/default.aspx" /><category term="CSE" scheme="http://www.robertlacroix.de/cs/archive/tags/CSE/default.aspx" /><category term="mofcomp" scheme="http://www.robertlacroix.de/cs/archive/tags/mofcomp/default.aspx" /><category term="MOF" scheme="http://www.robertlacroix.de/cs/archive/tags/MOF/default.aspx" /><category term="Group Policy" scheme="http://www.robertlacroix.de/cs/archive/tags/Group+Policy/default.aspx" /><category term="WMI" scheme="http://www.robertlacroix.de/cs/archive/tags/WMI/default.aspx" /><category term="Server Core" scheme="http://www.robertlacroix.de/cs/archive/tags/Server+Core/default.aspx" /><category term="PolicyMaker" scheme="http://www.robertlacroix.de/cs/archive/tags/PolicyMaker/default.aspx" /><category term="Client Side Extensions" scheme="http://www.robertlacroix.de/cs/archive/tags/Client+Side+Extensions/default.aspx" /><category term="Windows Server 2008" scheme="http://www.robertlacroix.de/cs/archive/tags/Windows+Server+2008/default.aspx" /><category term="WBEM" scheme="http://www.robertlacroix.de/cs/archive/tags/WBEM/default.aspx" /></entry><entry><title>check_ganglia, a rudimental approach to combine nagios with ganglia </title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2008/10/06/check-ganglia-a-rudimental-approach-to-combine-nagios-with-ganglia.aspx" /><id>http://www.robertlacroix.de/cs/archive/2008/10/06/check-ganglia-a-rudimental-approach-to-combine-nagios-with-ganglia.aspx</id><published>2008-10-06T18:35:00Z</published><updated>2008-10-06T18:35:00Z</updated><content type="html">When it comes to service monitoring, nagios is a pretty good tool,
though it can only monitor services from outside. To add monitoring of
metrics not exposed to the network, like disk usage, you need an agent
running on the monitored server. nagios-statd, written as a python
daemon, is such an agent.&lt;br&gt;&lt;br&gt;
From a management and security perspective it is good to keep the
number of processes and open network ports as minimal as possible.
Those that not only monitor service availability with nagios, but also
resource usage with ganglia, already have the ganglia agent (gmond)
running on each server. Adding nagios-statd would be the second agent
that needs to be configured and kept up-to-date.&lt;br&gt;&lt;br&gt;
But what if you want to be alerted if one of the hard disks get full,
load goes through the roof or the server begins using swap space? You
would need nagios-statd although ganglia knows about everything.
That's why I came up with the idea of using data from ganglia and
monitor them with nagios and wrote a &lt;a href="http://www.robertlacroix.com/files/check_ganglia/check_ganglia"&gt;small php shellscript&lt;/a&gt; that accomplishes
this task. There is for sure some work to do but I think it's a good
start:&lt;br&gt;&lt;br&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7&lt;br&gt;8&lt;br&gt;9&lt;br&gt;10&lt;br&gt;11&lt;br&gt;12&lt;br&gt;13&lt;br&gt;14&lt;br&gt;15&lt;br&gt;16&lt;br&gt;17&lt;br&gt;18&lt;br&gt;19&lt;br&gt;20&lt;br&gt;21&lt;br&gt;22&lt;br&gt;23&lt;br&gt;24&lt;br&gt;25&lt;br&gt;26&lt;br&gt;27&lt;br&gt;28&lt;br&gt;29&lt;br&gt;30&lt;br&gt;31&lt;br&gt;32&lt;br&gt;33&lt;br&gt;34&lt;br&gt;35&lt;br&gt;36&lt;br&gt;37&lt;br&gt;38&lt;br&gt;39&lt;br&gt;40&lt;br&gt;41&lt;br&gt;&lt;br&gt;42&lt;br&gt;43&lt;br&gt;44&lt;br&gt;45&lt;br&gt;46&lt;br&gt;47&lt;br&gt;48&lt;br&gt;49&lt;br&gt;50&lt;br&gt;51&lt;br&gt;&lt;br&gt;52&lt;br&gt;53&lt;br&gt;54&lt;br&gt;55&lt;br&gt;56&lt;br&gt;57&lt;br&gt;58&lt;br&gt;59&lt;br&gt;60&lt;br&gt;61&lt;br&gt;62&lt;br&gt;63&lt;br&gt;64&lt;br&gt;65&lt;br&gt;66&lt;br&gt;67&lt;br&gt;68&lt;br&gt;69&lt;br&gt;70&lt;br&gt;71&lt;br&gt;72&lt;br&gt;73&lt;br&gt;74&lt;br&gt;75&lt;br&gt; &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;#!/usr/bin/php&lt;br&gt;&amp;lt;?php&lt;br&gt;### Get command line arguments&lt;br&gt;$host &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[1];&lt;br&gt;$metric &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[2];&lt;br&gt;$metric_unit &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[3];&lt;br&gt;$cluster_arg &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[4]; #optional&lt;br&gt;$threshold_warn_arg &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[5]; #optional&lt;br&gt;$threshold_crit_arg &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $argv[6]; #optional&lt;br&gt;&lt;br&gt;### Fill Variables&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (!is_numeric($threshold_warn_arg))&lt;br&gt;&amp;nbsp;&amp;nbsp;$threshold_warn &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 2;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;$threshold_warn &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $threshold_warn_arg;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (!is_numeric($threshold_crit_arg))&lt;br&gt;&amp;nbsp;&amp;nbsp;$threshold_crit &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; 1;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;$threshold_crit &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $threshold_crit_arg;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (!$cluster_arg)&lt;br&gt;&amp;nbsp;&amp;nbsp;$cluster &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"sk"&lt;/span&gt;;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;$cluster &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $cluster_args;&lt;br&gt;&lt;br&gt;### Get data from gmond&lt;br&gt;$fp &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; fsockopen(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"localhost"&lt;/span&gt;, 8649, $errno, $errstr, 30);&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (!$fp) {&lt;br&gt;&amp;nbsp;&amp;nbsp;echo &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"GANGLIA Unknown - $errstr ($errno)\n"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;exit(3);&lt;br&gt;} &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;while&lt;/span&gt; (!feof($fp)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$buffer .= fgets($fp, 128);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;fclose($fp);&lt;br&gt;}&lt;br&gt;&lt;br&gt;### Get metric &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;out&lt;/span&gt; of XML&lt;br&gt;$xmlobj &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; simplexml_load_string($buffer);&lt;br&gt;$metric_value &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $xmlobj-&amp;gt;xpath(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"/GANGLIA_XML/CLUSTER[@NAME='$cluster']/HOST[@NAME='$host']/       &lt;br&gt;METRIC[@NAME='$metric']"&lt;/span&gt;);&lt;br&gt;&lt;br&gt;### Convert data (more types tbd)&lt;br&gt;$metric_value &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $metric_value[0]-&amp;gt;attributes();&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; ($metric_value[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"TYPE"&lt;/span&gt;] == &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"double"&lt;/span&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;$metric_value &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; doubleval($metric_value[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"VAL"&lt;/span&gt;]);&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;else&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;$metric_value &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $metric_value[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"VAL"&lt;/span&gt;];&lt;br&gt;&lt;br&gt;### Build output strings&lt;br&gt;$perfcounter &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $metric . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"="&lt;/span&gt; . $metric_value . $metric_unit . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;";"&lt;/span&gt; . $threshold_warn&lt;br&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;. $metric_unit&lt;/span&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;";"&lt;/span&gt; . $threshold_crit . $metric_unit;&lt;br&gt;$text &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; $metric . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;" is "&lt;/span&gt; . $metric_value . $metric_unit;&lt;br&gt;&lt;br&gt;### Output&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; ($metric_value &amp;gt; $threshold_warn &amp;amp;&amp;amp; $metric_value &amp;gt; $threshold_crit)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;print(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"GANGLIA OK - "&lt;/span&gt; . $text . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;" |"&lt;/span&gt; . $perfcounter . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\n"&lt;/span&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;exit(0);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; ($metric_value &amp;lt; $threshold_warn &amp;amp;&amp;amp; $metric_value &amp;gt; $threshold_crit)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;print(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"GANGLIA Warning - "&lt;/span&gt; . $text . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;" |"&lt;/span&gt; . $perfcounter . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\n"&lt;/span&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;exit(1);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; ($metric_value &amp;lt; $threshold_warn &amp;amp;&amp;amp; $metric_value &amp;lt; $threshold_crit)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;print(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"GANGLIA Critical - "&lt;/span&gt; . $text . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;" |"&lt;/span&gt; . $perfcounter . &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\n"&lt;/span&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;exit(2);&lt;br&gt;}&lt;br&gt;&lt;br&gt;echo &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"GANGLIA Unknown\n"&lt;/span&gt;;&lt;br&gt;exit(3);&lt;br&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;Save the script in your nagios-plugin directory (Debian defaults to /usr/lib/nagios/plugins) and make it executable (chmod +x check_ganglia). You can then define a new command in your nagios config as follows (in this example disk_free):&lt;br&gt;&lt;br&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt; &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;define command{&lt;br&gt;        command_name    check_ganglia_disk_free&lt;br&gt;        command_line    /usr/lib/nagios/plugins/check_ganglia $ARG1$ disk_free GB                 &lt;br&gt;        }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;After that, add a new service to your host config:&lt;br&gt;&lt;br&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt; &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;define service{&lt;br&gt;        use                             generic-service                                           &lt;br&gt;        host_name                       xxx1&lt;br&gt;        service_description             DISK&lt;br&gt;        check_command                   check_ganglia_disk_free!xxx1&lt;br&gt;        }&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&amp;nbsp;Restart Nagios and you should be able to monitor disk usage from then on.&lt;br&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=718" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="nagios ganglia check_ganglia nagios-statd gmond" scheme="http://www.robertlacroix.de/cs/archive/tags/nagios+ganglia+check_5F00_ganglia+nagios-statd+gmond/default.aspx" /></entry><entry><title>Fixing spontaneous reboots caused by VMware Fusion 2 Beta</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2008/08/10/fixing-spontaneous-reboots-caused-by-vmware-fusion-2-beta.aspx" /><id>http://www.robertlacroix.de/cs/archive/2008/08/10/fixing-spontaneous-reboots-caused-by-vmware-fusion-2-beta.aspx</id><published>2008-08-10T08:44:00Z</published><updated>2008-08-10T08:44:00Z</updated><content type="html">There is a bug in VMware Fusion 2 Beta (Beta 1 and Beta 2) that results in spontaneous reboots without even throwing a kernel panic. The problem occurs only when powering up a virtual machine after the Mac has been waked up from sleep. Especially Mac Pro users seem to be hit by this defect.&lt;br /&gt;&lt;br /&gt;

According to &lt;a href="http://communities.vmware.com/thread/149302" target="_new"&gt;this thread&lt;/a&gt; some people found out that it helps to reload one of VMware's kernel extensions after wake up to workaround the crash until VMware has a fix ready.&lt;br /&gt;&lt;br /&gt;

Because this is very prone to be forgotten I automated it by the following steps:&lt;br /&gt;&lt;br /&gt;

1. Install &lt;a href="http://www.bernhard-baehr.de/" target="_new"&gt;SleepWatcher&lt;/a&gt; (both PKGs in the DMG)&lt;br /&gt;
2. Add the following three lines to the end of /etc/rc.wakeup&lt;br /&gt;

&lt;pre&gt;
LIBDIR="/Library/Application Support/VMware Fusion"
kextunload "$LIBDIR/kexts/vmmon.kext"
kextload "$LIBDIR/kexts/vmmon.kext"
&lt;/pre&gt;

&lt;b&gt;Update: It's fixed in RC1&lt;/b&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=715" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Fusion 2 Beta" scheme="http://www.robertlacroix.de/cs/archive/tags/Fusion+2+Beta/default.aspx" /><category term="kernel extension" scheme="http://www.robertlacroix.de/cs/archive/tags/kernel+extension/default.aspx" /><category term="vmmon" scheme="http://www.robertlacroix.de/cs/archive/tags/vmmon/default.aspx" /><category term="vmx86" scheme="http://www.robertlacroix.de/cs/archive/tags/vmx86/default.aspx" /><category term="spontaneous reboot" scheme="http://www.robertlacroix.de/cs/archive/tags/spontaneous+reboot/default.aspx" /><category term="crash" scheme="http://www.robertlacroix.de/cs/archive/tags/crash/default.aspx" /><category term="VMware" scheme="http://www.robertlacroix.de/cs/archive/tags/VMware/default.aspx" /><category term="Mac Pro" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+Pro/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /><category term="SleepWatcher" scheme="http://www.robertlacroix.de/cs/archive/tags/SleepWatcher/default.aspx" /><category term="sleep" scheme="http://www.robertlacroix.de/cs/archive/tags/sleep/default.aspx" /><category term="wake" scheme="http://www.robertlacroix.de/cs/archive/tags/wake/default.aspx" /></entry><entry><title>Behind the scenes of www.sk-gaming.com</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2008/03/24/behind-the-scenes-of-www-sk-gaming-com.aspx" /><id>http://www.robertlacroix.de/cs/archive/2008/03/24/behind-the-scenes-of-www-sk-gaming-com.aspx</id><published>2008-03-24T16:51:00Z</published><updated>2008-03-24T16:51:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;font size="1"&gt;(Crosspost on &lt;a href="http://www.sk-gaming.com/blog/JFK/16317-Behind_the_scenes_of_wwwskgamingcom"&gt;http://www.sk-gaming.com/blog/JFK/16317-Behind_the_scenes_of_wwwskgamingcom&lt;/a&gt;)&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;br&gt;In my rare spare
time I am running the technical infrastructure of the largest &lt;a href="http://en.wikipedia.org/wiki/Electronic_sports"&gt;eSports&lt;/a&gt; web page out
there. Since running approximately 4 months on a newly code page I wanted to take
the opportunity to get you up to date what basically „runs“ &lt;/span&gt;&lt;a href="http://www.sk-gaming.com/"&gt;&lt;span&gt;www.sk-gaming.com&lt;/span&gt;&lt;/a&gt;&lt;span&gt; from a technical perspective and
what we did to improve the new page. I will go into very detail which might
only be interesting for readers with a technical background.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Virtualized&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Our web
page runs solely on a bunch of Xen servers. &lt;a href="http://www.xensource.com/"&gt;Xen&lt;/a&gt;
is an open-source virtualization platform (Hypervisor) that allows us to
flexibly set up new virtual servers which can share the same physical hardware with
other virtual machines. With Xen we can separate services that should better be
on separate machines, utilize our physical hardware even better and move
servers from one physical machine to another in case of a hardware failure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Stable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;A long time
ago we’ve chosen &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; as our Linux
distribution because it has proven to be extraordinary stable and it provides a
very logical and lean approach to administrate it. Currently we are running the
AMD64 release of Debian etch, their current stable version, on both the Parent
Domain (&lt;a href="http://en.wikipedia.org/wiki/Xen"&gt;dom0&lt;/a&gt;) of Xen and the
virtual machines (&lt;a href="http://en.wikipedia.org/wiki/Xen"&gt;domU’s&lt;/a&gt;) to
leverage high amount of ram.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Scalable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;To scale to
the increased demand we’re experiencing since running on the new page we set up
the load balancer &lt;a href="http://www.keepalived.org/"&gt;keepalived&lt;/a&gt; to build
a redundant firewall (active/passive) which amongst other things distributes
the web requests to a farm of web servers. When developing the new page we took
care that the code can be spread among multiple web servers safely.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Light&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More than a
year ago we switched our web server software from &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; to &lt;a href="http://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt;
which I can say was one of the best decisions ever. Lighttpd, as the name says,
has a very low resource footprint, almost no memory usage and a really flexible
way of configuring it, without sacrificing any features we need to run &lt;a href="http://www.sk-gaming.com/"&gt;www.sk-gaming.com&lt;/a&gt;. And best of all, it’s literally
fast as light.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Known&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;That we use
PHP as our scripting language is pretty much known and has not changed. Currently
we are running on PHP5 and use &lt;a href="http://xcache.lighttpd.net/"&gt;XCache&lt;/a&gt;
for caching PHP intermediate code. Interesting maybe for other XCache users is
that when we upgrade to the current xcache-1.2.2 we noticed a drop of around
30ms rendertime, even though XCache was already the fastest &lt;a href="http://en.wikipedia.org/wiki/PHP_accelerator"&gt;opcode cacher&lt;/a&gt; out there
(at least according to this &lt;a href="http://itst.net/654-php-on-fire-three-opcode-caches-compared"&gt;benchmark&lt;/a&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Fast&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;On the old
page we used full page caching on some often loaded pages like the index page,
but it was implemented in a very shirt-sleeved way: Every minute a script
downloaded the site and pushed the content into the database. The site the user
received simply got that rendered site from the database and sent that to the
client. The problem with that implementation is obvious: it does not scale beyond
a few number of pages cached, needed special coding on these to work and still
put certain load on the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The
approach we needed was a more general one which would work on every page and
takes into account, that we have many pages which are user specific (e.g.
/member/JFK looks different for you than for you). The solution we now have is
leveraging the speed and the scalability that &lt;a href="http://www.danga.com/memcached/"&gt;memcached&lt;/a&gt; offers , &lt;/span&gt;&lt;span&gt;an in-memory cache for data objects, &lt;/span&gt;&lt;span&gt;combined with some
code (which I might share in a future article) that does basically the
following:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Check
if memcached has a cached version of the requested page&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;If
yes: deliver it from there and stop processing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;If
no: go on&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Render
the page normally but put the output to a buffer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Put
that buffer into memcached and deliver the rendered content&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;









&lt;p class="MsoNormal"&gt;&lt;span&gt;With that
and using memcached to cache some other functionalities that normally needs database
queries, we reduced the number of these queries to zero on cached pages and replaced
them with only four, always fast (because non-blocking and distributed),
memcached queries. What do zero database queries mean for the users? Page
rendering of cached pages only takes around 10ms, which is for most users
faster than the page actually needs to travel through the internet to your
computers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Compliant&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Most pages
are already XHTML 1.0 Transitional compliant which you can easily check with
the &lt;a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.sk-gaming.com%2Farticles%2F&amp;amp;charset=%28detect+automatically%29&amp;amp;doctype=Inline&amp;amp;group=0"&gt;W3C
validator&lt;/a&gt;. We still have to work on some issues left, but we are committed
to make &lt;a href="http://www.sk-gaming.com/"&gt;www.sk-gaming.com&lt;/a&gt; completely compliant
to current web standards.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;&lt;span&gt;Secure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;To protect
your password from being stolen on logging in, we decided to submit your
passwords securely through an SSL encrypted connection. For extra security, we
added the “Lock” icon next to the form, where you can enter your username and
password, which leads you to a secure login form. This login form allows you to
enter your password in a secure environment and makes sure your password is
submitted a) only to us and b) only secured with HTTPS. When entering the username
and password on the (non-encrypted) front page that cannot be assured, because
the content could have been altered after leaving our web servers (man in the
middle attack). For that extra security to work it is important that these requirements
are fulfilled:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;ol&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;You
receive no certificate errors when opening &lt;a href="https://www.sk-gaming.com/login/"&gt;https://www.sk-gaming.com/login/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;You
have no rootkit or backdoor on your computer which captures key inputs or has
installed trusted root certificates&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;&lt;span&gt;Future-proof&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;With this
solid basis we are looking into implementing and optimizing our infrastructure
even more. For example we are evaluating how our users can benefit from new
technologies like &lt;a href="http://en.wikipedia.org/wiki/Windows_CardSpace"&gt;CardSpace/OpenID&lt;/a&gt;
or &lt;a href="http://en.wikipedia.org/wiki/Semantic_web"&gt;Semantic Web&lt;/a&gt;. I will
keep you updated.&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=713" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Scalability" scheme="http://www.robertlacroix.de/cs/archive/tags/Scalability/default.aspx" /><category term="Tech" scheme="http://www.robertlacroix.de/cs/archive/tags/Tech/default.aspx" /><category term="memcached" scheme="http://www.robertlacroix.de/cs/archive/tags/memcached/default.aspx" /><category term="lighttpd" scheme="http://www.robertlacroix.de/cs/archive/tags/lighttpd/default.aspx" /><category term="SK" scheme="http://www.robertlacroix.de/cs/archive/tags/SK/default.aspx" /><category term="Debian" scheme="http://www.robertlacroix.de/cs/archive/tags/Debian/default.aspx" /><category term="keepalived" scheme="http://www.robertlacroix.de/cs/archive/tags/keepalived/default.aspx" /></entry><entry><title>KisMac 0.2a SVN build</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/11/21/kismac-0-2a-svn-build.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/11/21/kismac-0-2a-svn-build.aspx</id><published>2004-11-21T18:53:00Z</published><updated>2004-11-21T18:53:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/kismac.png" style="margin:10px;float:left;position:relative;"&gt;Since the guys from &lt;a href="http://binaervarianz.de/projekte/programmieren/kismac/" target="_new"&gt;Binaervarianz&lt;/a&gt; haven't updated KisMac for long time I decided to build the latest version from their SVN server.
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.robertlacroix.com/files/KisMac-0.2a.dmg"&gt;KisMac 0.2a Checkout 40&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=113" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="KisMac" scheme="http://www.robertlacroix.de/cs/archive/tags/KisMac/default.aspx" /><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry><entry><title>Using T-Mobile Multimedia Net Card UMTS/GPRS on Mac OS X </title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/11/21/using-t-mobile-multimedia-net-card-umts-gprs-on-mac-os-x.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/11/21/using-t-mobile-multimedia-net-card-umts-gprs-on-mac-os-x.aspx</id><published>2004-11-21T15:02:00Z</published><updated>2004-11-21T15:02:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/t-mobile-mmnc-on-mac.png" style="margin:5px;float:left;position:relative;"&gt;There are two ways of using the T-Mobile Multimedia Net Card on Mac. You can either download (and pay for) Mobile High Speed 3G which requries you to reboot during the installation or you use my modem script.&lt;br&gt;
You need to download the modem script to the "Modem Scripts" folder first and assign the proper permissions. To do this paste the following into Terminal.app:&lt;br&gt;

&lt;pre style="font-size:9px;"&gt;cd /Library/Modem\ Scripts/&lt;br&gt;sudo curl -o "T-Mobile Cellular" http://www.robertlacroix.com/files/T-Mobile%20Cellular&lt;br&gt;sudo chmod 664 T-Mobile\ Cellular&lt;/pre&gt;

1. Disable PIN request on your T-Mobile GSM card, you won't be able to enter it :)&lt;br&gt;
2. Plug in the Multimedia Net Card&lt;br&gt;
3. Go to the Network Preference Pane&lt;br&gt;
4. Choose PC Card Serial in the Show dropdown&lt;br&gt;
5. Use the following settings in the PPP tab:&lt;br&gt;
  Account Name: t-mobile&lt;br&gt;
  Password: t-mobile&lt;br&gt;
  Telephone Number: *99#&lt;br&gt;
6. Choose Modem T-Mobile Cellular&lt;br&gt;&lt;br&gt;

Wait till the LED on the Net Card flashes blue for UMTS or green for GPRS and connect :)

&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=114" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="UMTS" scheme="http://www.robertlacroix.de/cs/archive/tags/UMTS/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry><entry><title>Firefox 1.0 with middle-mouse patch</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/11/21/firefox-1-0-with-middle-mouse-patch.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/11/21/firefox-1-0-with-middle-mouse-patch.aspx</id><published>2004-11-21T14:21:00Z</published><updated>2004-11-21T14:21:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/firefox.png" style="margin:10px;float:left;position:relative;"&gt;For those using an external three button mouse on Mac I just compiled Firefox 1.0 with &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=223545" target="_blank"&gt;middle-mouse&lt;/a&gt; applied.
You can choose between two versions:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.robertlacroix.com/files/firefox%201.0-fixed-G4.dmg"&gt;Firefox 1.0 G4 optimized&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.robertlacroix.com/files/firefox%201.0-fixed.dmg"&gt;Firefox 1.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=115" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Firefox" scheme="http://www.robertlacroix.de/cs/archive/tags/Firefox/default.aspx" /><category term="Expos&amp;#233;" scheme="http://www.robertlacroix.de/cs/archive/tags/Expos_26002300_233_3B00_/default.aspx" /><category term="Mozilla" scheme="http://www.robertlacroix.de/cs/archive/tags/Mozilla/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry><entry><title>Fixing "iSync couldn't connect to Exchange" error on Panther</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/09/05/fixing-isync-couldn-t-connect-to-exchange-error.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/09/05/fixing-isync-couldn-t-connect-to-exchange-error.aspx</id><published>2004-09-05T16:38:00Z</published><updated>2004-09-05T16:38:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/exchange-isync.jpg" style="margin:5px;float:left;position:relative;"&gt;When you set up Address Book to synchronize your contacts with Exchange hourly you probably know the "iSync couldn't connect to Exchange - Could not reach the server specified." for example when you are using your powerbook on the way.&lt;br&gt;
I put a small shell script together which replaces the ExchangeScheduler binary that is called by Apple's scheduler hourly. It has a list of all network locations it should sync in, checks reachability of the outlook web access server and starts the ExchangeScheduler binary then.&lt;br&gt;
&lt;br&gt;
Save the following as &lt;a href="http://www.robertlacroix.com/files/ExchangeScheduler.sh"&gt;ExchangeScheduler.sh&lt;/a&gt; in&lt;br&gt; /System/Library/SyncServices/ExchangeConduit.bundle/Contents/Resources/
&lt;br&gt;
&lt;pre style="font-size:9px;"&gt;#!/bin/bash&lt;br&gt;&lt;br&gt;syncLocations='73A6408D-CE03-11D8-B5C8-000A95D370A4 26415746-FF16-11D8-B1C7-000A95D370A4'&lt;br&gt;#syncLocations is a space seperated list of network location id's, the script should sync in.&lt;br&gt;#You can get your id's by entering scselect into Terminal.app.&lt;br&gt;&lt;br&gt;ExchangeScheduler='/System/Library/SyncServices/ExchangeConduit.bundle/Contents/Resources/ExchangeScheduler.bin'&lt;br&gt;activeLocation=`scselect 2&gt;&amp;1 | egrep '^\ *\*'| cut -c 4- | cut -c -36`&lt;br&gt;for i in $syncLocations&lt;br&gt;do&lt;br&gt;	if [ "$activeLocation" == "$i" ]&lt;br&gt;	then&lt;br&gt;		if curl -k `defaults read com.apple.IISSupport IISServerPath` &gt;/dev/null 2&gt;&amp;1&lt;br&gt;		then&lt;br&gt;			$ExchangeScheduler $*&lt;br&gt;		fi&lt;br&gt;	fi&lt;br&gt;done&lt;br&gt;&lt;/pre&gt;

Open Terminal.app and do the following commands

&lt;pre&gt;#change current directory:&lt;br&gt;cd /System/Library/SyncServices/ExchangeConduit.bundle/Contents/Resources/&lt;br&gt;#rename ExchangeScheduler to ExchangeScheduler.bin:&lt;br&gt;sudo mv ExchangeScheduler ExchangeScheduler.bin&lt;br&gt;#create symlink from ExchangeScheduler.sh to ExchangeScheduler:&lt;br&gt;sudo ln -s ExchangeScheduler.sh ExchangeScheduler&lt;br&gt;#grant execute permission to ExchangeScheduler.sh&lt;br&gt;sudo chmod +x ExchangeScheduler.sh&lt;br&gt;&lt;/pre&gt;

Test the script by activating a network location that is in $syncLocations and do &lt;pre&gt;./ExchangeScheduler&lt;/pre&gt; If the Outlook Web Access Server is reachable the output should be
&lt;pre&gt;2004-09-05 10:11:51.302 ExchangeScheduler.bin[14242] Starting exchange sync&lt;/pre&gt;&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=116" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Microsoft" scheme="http://www.robertlacroix.de/cs/archive/tags/Microsoft/default.aspx" /><category term="Panther" scheme="http://www.robertlacroix.de/cs/archive/tags/Panther/default.aspx" /><category term="Exchange" scheme="http://www.robertlacroix.de/cs/archive/tags/Exchange/default.aspx" /><category term="iSync" scheme="http://www.robertlacroix.de/cs/archive/tags/iSync/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry><entry><title>Adium X with fancy contact list</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/08/31/adium-x-with-fancy-contact-list.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/08/31/adium-x-with-fancy-contact-list.aspx</id><published>2004-08-31T09:42:00Z</published><updated>2004-08-31T09:42:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/adium-contactlist.jpg" style="margin:5px;float:left;position:relative;"&gt;The upcoming 0.64 of Adium X introduces an all new contact list, which allows some really cool features. There are a few &lt;a href="http://www.funmac.com/showpost.php?p=72761&amp;postcount=49" target="_new"&gt;early screenshots&lt;/a&gt; on the Adium homepage that show almost all possibilities.&lt;br&gt;
You can grab my latest Adium X 0.64-pre build (checkout 6459) &lt;a href="http://www.robertlacroix.com/files/adiumx-0.64-pre.dmg"&gt;here&lt;/a&gt;.&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=117" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Adium" scheme="http://www.robertlacroix.de/cs/archive/tags/Adium/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry><entry><title>Hidden Exposé window fixed in Firefox and Mozilla</title><link rel="alternate" type="text/html" href="http://www.robertlacroix.de/cs/archive/2004/08/31/hidden-expos-window-fixed-in-firefox-and-mozilla.aspx" /><id>http://www.robertlacroix.de/cs/archive/2004/08/31/hidden-expos-window-fixed-in-firefox-and-mozilla.aspx</id><published>2004-08-31T08:49:00Z</published><updated>2004-08-31T08:49:00Z</updated><content type="html">&lt;img src="http://www.robertlacroix.com/files/hidden-expose-window.jpg" style="margin:5px;float:left;position:relative;"&gt;Finally the Mozilla guys fixed the hidden window on Mac OS X 10.3 which appeared when activating the Exposé functionality.&lt;br&gt;
I made a &lt;a href="http://www.robertlacroix.com/files/Firefox-powerpc-apple-darwin7.4.0-fixed.dmg"&gt;build&lt;/a&gt; (hope it works for you) from the latest CVS checkout with the &lt;a href="http://bugzilla.mozilla.org/show_bug.cgi?id=151249" target="_new"&gt;middle-mouse patch&lt;/a&gt; applied, which fixes middle-mouse click behavior on links to open a new tab. So actually two nasty bugs in Firefox on Mac OS X less :)&lt;img src="http://www.robertlacroix.de/cs/aggbug.aspx?PostID=118" width="1" height="1"&gt;</content><author><name>rl</name><uri>http://www.robertlacroix.de/cs/members/rl.aspx</uri></author><category term="Apple" scheme="http://www.robertlacroix.de/cs/archive/tags/Apple/default.aspx" /><category term="Firefox" scheme="http://www.robertlacroix.de/cs/archive/tags/Firefox/default.aspx" /><category term="Expos&amp;#233;" scheme="http://www.robertlacroix.de/cs/archive/tags/Expos_26002300_233_3B00_/default.aspx" /><category term="Mozilla" scheme="http://www.robertlacroix.de/cs/archive/tags/Mozilla/default.aspx" /><category term="Mac OS X" scheme="http://www.robertlacroix.de/cs/archive/tags/Mac+OS+X/default.aspx" /></entry></feed>
