The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,854 other subscribers

logging – Where is “/var/log/messages” on mac-osx? – Server Fault

Posted by jpluimers on 2019/07/29

logging – Where is “/var/log/messages” on mac-osx? – Server Fault

TL;DR: because most of it is in /var/log/system.log which is configured in /etc/asl.conf, but the documentation example about syslog.conf never got updated.

Long read

The example in syslog.conf is wrong at WayBack: Mac OS X Manual Page For syslog.conf(5) and man syslog.conf:

EXAMPLES
     A configuration file might appear as follows:
...
     # Log anything (except mail) of level info or higher.
     # Don't log private authentication messages!
     *.info;mail.none;authpriv.none          /var/log/messages
...
FILES
     /etc/syslog.conf  The syslogd(8) configuration file.

It still is when writing this [WayBack]syslog.conf(5) Mac OS X Manual Page, so you have to look at /etc/syslog.conf on a live system:

# Note that flat file logs are now configured in /etc/asl.conf

install.*                       @127.0.0.1:32376

which means the actual configuration is in /etc/asl.conf:

# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log

Documentation at [WayBack] asl.conf(5) Mac OS X Manual Page indicates this:

NAME
     asl.conf -- configuration file for syslogd(8) and aslmanager(8)

DESCRIPTION
     The syslogd(8) server reads the /etc/asl.conf file at startup, and re-reads the file when it receives a HUP signal.  The aslmanager(8) daemon reads the file when it starts.  See the
     ASLMANAGER PARAMETER SETTINGS section for details on aslmanager-specific parameters.

Source

Based on [WayBacklogging – Where is “/var/log/messages” on mac-osx? – Server Fault:

Q:

When you read the man pages on Mac OS X, there are references to /var/log/messages, but if you look for the file, it doesn’t exist:

$ ls -l /var/log/messages
ls: /var/log/messages: No such file or directory

A:

2009 era: If you look at the actual /etc/syslog.conf instead of the man page, you see *.notice;authpriv,remoteauth,ftp,install.none;kern.debug;mai‌​l.crit /var/log/system.log

–jeroen

Posted in Apple, Mac OS X / OS X / MacOS, Mac OS X 10.4 Tiger, Mac OS X 10.5 Leopard, Mac OS X 10.6 Snow Leopard, Mac OS X 10.7 Lion, macOS 10.12 Sierra, OS X 10.10 Yosemite, OS X 10.11 El Capitan, OS X 10.8 Mountain Lion, OS X 10.9 Mavericks, Power User | Leave a Comment »

Basically, all Harman Kardon amplifiers (including subwoofers) show power supply issues after a few years

Posted by jpluimers on 2019/07/26

Experienced first hand myself, all my Harman Kardon amplifier equipment (including subwoofer) have shown power supply issues after about 2 years of use.

Signs are devices not powering up any more, giving only a limited amount of power (for instance a subwoofer only blinking the power led), or intermittent shutdown failure (more often when it is warmer than 22 degrees Celsius).

There are companies making a living of just these power repairs (for instance Audiocare.nl who git all my defective equipment to work again for about EUR 100 per device: [WayBack] Harman Kardon – AudioCare.nl).

This is how you remove the power supplies:

The biggest issues are failing capacitors, and glue becoming conductive.

Related blog posts:

Some videos below the fold.

–jeroen

Read the rest of this entry »

Posted in BDS277, BDS580, Hardware, Harman Kardon, Home Audio/Video, Power User | Leave a Comment »

Convert cURL command syntax to Python requests, Node.js code

Posted by jpluimers on 2019/07/26

Utility for converting curl commands to code

For my link archive: [WayBack] Convert cURL command syntax to Python requests, Node.js code

–jeroen

Posted in *nix, *nix-tools, cURL, Development, JavaScript/ECMAScript, Node.js, Power User, Python, Scripting, Software Development | Leave a Comment »

Transferring files from a Linux console: transfer.sh and anypaste.xyz

Posted by jpluimers on 2019/07/26

transfer.sh

anypaste.xyz

–jeroen

via: [WayBack] Interesting: Anypaste – Share And Upload Files To Compatible Hosting Sites Automatically… – DoorToDoorGeek “Stephen McLaughlin” – Google+

Posted in *nix, *nix-tools, bash, cURL, Power User | Leave a Comment »

Delphi dcc32 error E2506 Method of parameterized type declared in interface section must not use local symbol ‘TExceptionThread`1’

Posted by jpluimers on 2019/07/25

Need to check on this compiler error that you can solve by moving the generic class TExceptionThread<T> from the implementation section of a unit to the interface section.

[dcc32 Error] Test.ExceptionLogging.pas(246): E2506 Method of parameterized type declared in interface section must not use local symbol 'TExceptionThread`1'

My gut feeling is that that this either has to do with RTTI generation, or is a limitation of the compiler.

I need to trim that one done since it does not match any of these:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Intellectual Property for Engineers (mostly USA law, but general ideas apply a lot wider)

Posted by jpluimers on 2019/07/25

A great video on Intellectual Property for Engineers presented during [WayBack] PyGotham 2017.

Via [WayBack] Very interesting topic, but rushed through too quickly. Hope this guy gets a 60 minute slot next time… – ThisIsWhyICode – Google+

–jeroen

Read the rest of this entry »

Posted in Development, Licensing, Software Development | Leave a Comment »

powershell – How do I use join-path to combine more than two strings into a file path? – Stack Overflow

Posted by jpluimers on 2019/07/25

I love the solution with piped Join-Path constructs answered by David Keaveny in [WayBackpowershell – How do I use join-path to combine more than two strings into a file path? – Stack Overflow:

Since Join-Path can be piped its path value, you can pipe multiple Join-Path statements together:

Join-Path "C:" -ChildPath "Windows" | Join-Path -ChildPath "system32" | Join-Path -ChildPath "drivers"

Of course you could replace the built-in [WayBack] Join-Path by using using the .NET Framework [WayBack] Path.Combine Method (System.IO), but then you loose code completion.

If you do like that, here is how:

[System.IO.Path]::Combine("C:", "Windows", "system32", "drivers")

–jeroen

Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »

Some links on code metrics

Posted by jpluimers on 2019/07/24

A while ago, I got a question on code metrics, so here some links for my reading list:

Delphi related:

--jeroen

Posted in Development, Profiling-Performance-Measurement, Software Development | Leave a Comment »

delphi – Why variables are declared as TStrings and created as TStringList? – Stack Overflow

Posted by jpluimers on 2019/07/24

Blast from the past: [WayBackdelphi – Why variables are declared as TStrings and created as TStringList? – Stack Overflow

Q

Why variables are declared as TStrings and created as TStringList?

A

Because that way you could put another TStrings descendant in the SL variable (I’d probably call that Strings, not SL).

In your case, that is moot, since the logic around SL contains the creation of a TStringList and no external assignment or parameter parsing.

But if you ever split the logic away from the assignment, then you could benefit from using any TStrings descendant.

For instance, a TMemoy.LinesTListBox.ItemsTComboBox.Items, etc.
From the outside it looks like they are TStrings, but internally they do not use a TStringList but their own descendant.

A few examples of classes that descend from TStrings:

source\DUnit\Contrib\DUnitWizard\Source\DelphiExperts\Common\XP_OTAEditorUtils.pas:
     TXPEditorStrings = class(TStrings)
source\fmx\FMX.ListBox.pas:
       TListBoxStrings = class(TStrings)
source\fmx\FMX.Memo.pas:
     TMemoLines = class(TStrings)
source\rtl\common\System.Classes.pas:
     TStringList = class(TStrings)
source\vcl\Vcl.ComCtrls.pas:
     TTabStrings = class(TStrings)
     TTreeStrings = class(TStrings)
     TRichEditStrings = class(TStrings)
source\vcl\Vcl.ExtCtrls.pas:
     TPageAccess = class(TStrings)
     THeaderStrings = class(TStrings)
source\vcl\Vcl.Grids.pas:
     TStringGridStrings = class(TStrings)
     TStringSparseList = class(TStrings)
source\vcl\Vcl.Outline.pas:
     TOutlineStrings = class(TStrings)
source\vcl\Vcl.StdCtrls.pas:
     TCustomComboBoxStrings = class(TStrings)
     TMemoStrings = class(TStrings)
     TListBoxStrings = class(TStrings)
source\vcl\Vcl.TabNotBk.pas:
     TTabPageAccess = class(TStrings)

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | 1 Comment »

PowerShell script header to be as strict as possible and always throw exceptions

Posted by jpluimers on 2019/07/24

This is my default PowerShell script header from now on:

Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$PSDefaultParameterValues['*:ErrorAction']='Stop'

This might sound like overkill, but it solves these problems:

The above helped me tremendously with for instance [WayBack] powershell – Why does the exception not get me in the catch block? – Stack Overflow:

I’m trying to interrogate some service information. Sometimes the installer of the application fails to correctly install, so the registry does not contain a service entry. I want to find out which installer steps did get executed correctly, even on systems that do not have proper logging in the installer.

If MyService does not exist, the script below does not go to the catch block even though the exception handling documentation suggests a bare catch should be enough:

try {
    $path = 'hklm:\SYSTEM\CurrentControlSet\services\MyService'
    $key = Get-Item $path
    $namevalues = $key | Select-Object -ExpandProperty Property |
        ForEach-Object {
        [PSCustomObject] @{
            Name = $_;
            Value = $key.GetValue($_)
        }
    }
    $namevalues | Format-Table
}
catch {
    $ProgramFilesX86 = [System.Environment]::GetFolderPath("ProgramFilesX86");
    $ProgramFiles = [System.Environment]::GetFolderPath("ProgramFiles");
    Write-Host $ProgramFilesX86
    Write-Host $ProgramFiles
}

Why is that and how should I force it to end up in the catch?

This is what PowerShell outputs:

Get-Item : Cannot find path 'HKLM:\SYSTEM\CurrentControlSet\services\MyService' because it does not exist.
At C:\Users\Developer\...\GetMyServiceInfo.ps1:17 char:12
+     $key = Get-Item $path
+            ~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (HKLM:\SYSTEM\Cu...vices\MyService:String) [Get-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand

For which I edited the answer to become this:

Force the error to be terminating:

$key = Get-Item $path -ErrorAction Stop

That way it will throw and catch will get it.

Explanation and links to the official Microsoft documentation:

What is missing there is the link to the $PSDefaultParameterValues documentation at [WayBack] about_Parameters_Default_Values | Microsoft Docs

–jeroen

Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »