Computers: October 2003 Archives
I never got around to figuring out how to do remote Apple events with Mac OS X. All I knew is that the old method from Mac OS of filling in a complex data structure didn't work.
It worked great on Mac OS, but wouldn't work on Mac OS X. So tonight I decided to figure it out, and I did. Instead of packing the data structure, I just construct a URL. That's all. Something like eppc://pudge@mac.example.com/Finder. And Mac::Glue makes it even simpler:
There's also a place in the URL for specifying UID or PID, in those cases where more than one app of that name is running. I tested this and it didn't work, it just chose one and sent the event to that app every time, no matter what. Hm.
Regardless, it's working. Send events to your other Macs. Astound your friends. Requires today's newly updated Mac::Carbon, Mac::AppleEvents::Simple, and Mac::Glue.
It worked great on Mac OS, but wouldn't work on Mac OS X. So tonight I decided to figure it out, and I did. Instead of packing the data structure, I just construct a URL. That's all. Something like eppc://pudge@mac.example.com/Finder. And Mac::Glue makes it even simpler:
# normal way, for local FinderThat's it. Then use $finder as though it were local. Of course, there is the issue of security. You can pass the username and password to the constructor, or just pass the username and get a dialog box asking for the password. If neither is included, you'll get a dialog box, too. Either way, click "Add to Keychain?" and you never have to see the dialog box again, for that username/hostname combination.
$finder = new Mac::Glue 'Finder';
# method for remote Finder
$finder = new Mac::Glue 'Finder', eppc => Finder => 'mac.example.com';
There's also a place in the URL for specifying UID or PID, in those cases where more than one app of that name is running. I tested this and it didn't work, it just chose one and sent the event to that app every time, no matter what. Hm.
Regardless, it's working. Send events to your other Macs. Astound your friends. Requires today's newly updated Mac::Carbon, Mac::AppleEvents::Simple, and Mac::Glue.
Mac-Glue-1.14 has been released. Download it from the CPAN or SF.net.
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
* v1.14, Friday, October 31, 2003Posted using release by brian d foy.
Added support for remote Apple events under Mac OS X. Example:
my $glue = Mac::Glue->new('Finder',
eppc => 'Finder', 'mac.example.com'
);
Fixed proper preparation of the data with the right data type when using
param_type().
Mac-AppleEvents-Simple-1.08 has been released. Download it from the CPAN or SF.net.
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
* v1.08, Friday, October 31, 2003Posted using release by brian d foy.
Added pack_eppc_x() for creating a target to an application on
a remote computer, for Mac OS X. Basic syntax:
$target = pack_eppc_x('Finder', 'mac.example.com');
I have my PowerBook sometimes connected to an external monitor. When MacCvsX leaves a window on the external monitor, it keeps it offscreen, whereas most applications will put the windows on the current monitor (or make it easy to arrange them on the current monitor). So I lose the Console Window forever, unless I can hook it up to a monitor, or ...
#!/usr/local/bin/perl(Requires most recent Mac::AppleEvents::Simple, v1.07.)
use Mac::Glue;
my $cvs = new Mac::Glue "MacCvsX";
my $bounds = $cvs->prop(bounds => window => "Console Window");
my $d = $bounds->get;
$bounds->set(to => [20, 100,
$d->[2] - ($d->[0] - 20),
$d->[3] - ($d->[1] - 100)
]);
I got Eudora to not crash while sending mail under Panther. Under the Hosts settings, I deselected "Use mail-exchange records" under "Sending Mail". So now I can send you mail once more, fear!
Of course, I was only WITHOUT mail-sending capabilities for the four hours while I was installing/migrating to Panther, and then the four hours I slept. But it seemed like a lot longer.
Speaking of which, I was up until 3 a.m. setting my laptop up for Panther, and I woke up shortly after 7 a.m., and I have a hockey game at 10:20 p.m. tonight. I am not sure how this is going to work.
Of course, I was only WITHOUT mail-sending capabilities for the four hours while I was installing/migrating to Panther, and then the four hours I slept. But it seemed like a lot longer.
Speaking of which, I was up until 3 a.m. setting my laptop up for Panther, and I woke up shortly after 7 a.m., and I have a hockey game at 10:20 p.m. tonight. I am not sure how this is going to work.
Mac-Carbon-0.61 has been released. Download it from the CPAN or SF.net.
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
* v0.61, 28 October 2003Posted using release by brian d foy.
Adjust Mac::Speech test to work with fresh install of Panther, where
(on my machine) the Good News voice won't load, so CountVoices()
returns less than the test thinks it should. Only this one test has
been changed, no need to upgrade from 0.60.
Mac-Carbon-0.60 has been released. Download it from the CPAN or SF.net.
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
(Note: it may take time for the release to propagate to the various download mirrors.)
Changes:
* v0.60, 27 October 2003Posted using release by brian d foy.
Updated a bunch of docs for Carbon compatibility
Cleaned up docs a bit
Reverted AESend to use AESend without an idle proc,
instead of AESendMessage with a mach port
Undef I_POLL for Panther compatibility (Matthew Drayton)
I got Robomower. I didn't get to install it this weekend, as the box did not include any of the necessary accessories (wire, stakes, box to run current through wire, directions, etc.). Went back to dealer on Monday to pick those things up. I'll do that the next day I am not bogged down at work, and it is not raining (maybe Friday, Saturday?).
I also am returning my Harmony Remote SST-768 in favor of the more user-friendly SST-659. The new one is shaped like a TiVo remote, it has dedicated directional pad (old one shared it with numeric keypad, which was my single biggest frustration with it), dedicated activity buttons, etc. My only fear is that it apparently does not allow XML customizations of the configuration like the old one did. I hope that won't be an issue (I did have a few customizations in the old one, mostly to add items to menus, but the new one has more buttons to play with, so it shouldn't be an issue).
I also am returning my Harmony Remote SST-768 in favor of the more user-friendly SST-659. The new one is shaped like a TiVo remote, it has dedicated directional pad (old one shared it with numeric keypad, which was my single biggest frustration with it), dedicated activity buttons, etc. My only fear is that it apparently does not allow XML customizations of the configuration like the old one did. I hope that won't be an issue (I did have a few customizations in the old one, mostly to add items to menus, but the new one has more buttons to play with, so it shouldn't be an issue).
This is seriously tempting me. I could spend less and work more, or spend more and work less than the least, but still more than the this. And being battery powered, it is also a lot cheaper to operate, better for environment blah blah blah.
Pedro Martinez had men on second and third, one run in, nobody out, in game 3 of the ALCS, and hit Karim Garcia on the first pitch. There is simply no justification for saying it was intentional. When you hit someone intentionally, you do it when it won't significantly hurt your team. People who say it was "clearly" intentional are morons. Maybe it was on purpose, but the evidence is -- um, clearly -- stacked against that hypothesis.
And even if you somehow disagree with the above analysis of the situation -- that if you are gonna hit someone, you don't do it in that worst-of-all situations, a truism that casts serious doubt on the claim of intent -- you are still left with the fact that it is only a guess, a hypothesis, a theory as to what his intentions were. You don't know. It is not clear. You are a moron. Stop it.
And even if you somehow disagree with the above analysis of the situation -- that if you are gonna hit someone, you don't do it in that worst-of-all situations, a truism that casts serious doubt on the claim of intent -- you are still left with the fact that it is only a guess, a hypothesis, a theory as to what his intentions were. You don't know. It is not clear. You are a moron. Stop it.