glue PODs
were created for Mac OS version too, but now are more easily accessible.
gluedoc -h for more info.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
/MoreFiles/t/MoreFiles.t
Looks like it works as expected to me, without WaitNextEvent().
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
in the LaunchParamBlock. The app is actually
launching, so I suspect it *shouldn't* be returning an error. That's what I
get for checking error values. ;-)
Oh, and for the curious, no, the load times of Mac::Carbon with Panther and
perl 5.8.1 and gcc 3.3 are not magically faster.
--
Chris Nandor
. But OTOH, you might want it to work differently from how
pod: works, and you might want to let people continue to use pod: for Shuck.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
the same
problem. I am going to try a bunch of things, but figure you might have
some insight before I go and try things that won't work. Thanks,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
/darwin.sh to make sure that doesn't happen.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
reason -- maybe the new multi-level namespace support? -- the
previous versions of gcc did not contribute to a conflict between perl's and
Carbon's DEBUGs, but in 3.3, they do.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL
I just got this mail after sending a post to this list:
To: [EMAIL PROTECTED]
From: [EMAIL PROTECTED]
Dear Chris Nandor [EMAIL PROTECTED]:
I am an automated email sentry designed to protect against unwanted email.
You recently sent an email titled 'Re: apache / mod_perl
to be writing an article (for TPJ) about it soon, and now is the
time to submit bug reports/patches/questions if you have any. And if you
have ideas for what should be in the article, I am open.
Cheers,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
, Icon\r or die $!; print scalar $fh'
No such file or directory at -e line 1.
# add null
$ perl -e 'open $fh, Icon\r\0 or die $!; print scalar $fh'
foo
# use sysopen
$ perl -e 'sysopen $fh, Icon\r, 0 or die $!; print scalar $fh'
foo
$
--
Chris Nandor [EMAIL
is kinda weird, as it seems like it would be of
use). It will succeed on the open, but there will be no data.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, such as those created by obj/prop).
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
to be quoted. If it
is preceded by a comma, it does. It's just a Perl rule. :-)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
binary operator before token enum
Catalog.c:313:1: unterminated #if
make[1]: *** [Catalog.o] Error 1
make: *** [subdirs] Error 2
With gcc3, as noted in a previous thread, #undef DEBUG needs to be added to
the project (look for #undef Move and add it in the same place).
--
Chris Nandor
not still have to turn the program into an application)
Mac::Carbon (port of toolbox modules from MacPerl to Mac OS X) does not
contain any GUI modules. The best you can do is control other GUI programs
with it.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open
methods, including MacPerl::DoAppleScript() in Mac::Carbon, applescript() in
Mac::OSA::Simple (requires Mac::Carbon), and RunAppleScript from
Mac::AppleScript.
my $result = DoAppleScript($script);
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
the command line, so you can't use
Mac::Glue or something to talk to it. The app is not AppleScriptable.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
::AppleEvents::Simple, and Mac::Glue.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
are available for Mac OS X in the Mac::Carbon
distribution.
Both MacOSX::File and Mac::Carbon had similar issues under gcc3/Panther, but
the latest releases of Mac::Carbon have been patched to work under it, no
problem.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net
PROTECTED]
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, if all you are doing is running an
AppleScript, there's no point to the above wrapper. :-)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
the MacPerl app.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
for deceptively impugning the code you have a distaste for.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
of all your tracks. You may wish to instead loop over
$songs-get and put one track into MySQL at a time, and this would integrate
quite easily with DBI + DBD::mysql.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED
has improved on
this, but I can find no evidence of it).
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
; print $^E+0 for 0,1'
-1728
22
And in a fresh build of perl 5.8.2:
$ perl5.8.2 -le '$! = -1728; print $^E+0 for 0,1'
-1728
22
Is this a known issue? Anyone know if it's been reported, or what the
problem might be?
--
Chris Nandor [EMAIL PROTECTED]http
are having with Tk similar? At least someone else has
the problem, so I know I am not crazy (well, at least, that this is not
evidence of it).
I'm doing some more test builds now. On the dual G5, they go by pretty
quickly. :)
--
Chris Nandor [EMAIL PROTECTED]http
really wish it weren't, as I
really don't want to have threads, if I can avoid it (unless I am just
being ignorant: last I heard, a threaded perl still had trouble with
mod_perl). But there's gotta be a bug here, regardless.
Anyone, a little help? :)
--
Chris Nandor [EMAIL
-1728
22
$ perl -le '$! = -1728; print $^E+0 for 0,1; print $!+0 for 0,1'
-1728
22
22
22
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
At 10:59 -0500 2003.11.19, Dan Sugalski wrote:
On Wed, 19 Nov 2003, Chris Nandor wrote:
$ perl -le '$^E = -1728; print $^E+0 for 0,1; print $!+0 for 0,1'
-1728
22
22
22
Given that on Unix systems $^E and $! are identical, and that $! is
directly tied to errno, this certainly isn't
At 16:50 +0100 2003.11.19, Rafael Garcia-Suarez wrote:
Chris Nandor wrote:
At 16:39 +0100 2003.11.19, Rafael Garcia-Suarez wrote:
What does
perl -le 'print $!=22'
on your system ?
22.
Hmm, weird -- on my Linux 2.2 it prints correctly Invalid argument.
I wanted to know what
-1728
1343 perl RET write 6
1343 perl CALL write(0x1,0x7000,0x3)
1343 perl GIO fd 1 wrote 3 bytes
22
1343 perl RET write 3
1343 perl CALL exit(0)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source
contain a syscall.
Anyway, thanks for the patch; I recommend its inclusion for 5.8.3/5.9, and
a test for it might be reasonable (I can come up with one, but not sure
where to put it, and not sure if I would cover all the bases properly ...).
--
Chris Nandor [EMAIL PROTECTED
,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
mismatch of compilers or configurations somewhere?
Nope. Everything built fresh with same compilers, same perl version.
I really hope I don't need to back out of this two-level namespace thing and
rebuild everything again.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] (Chris Nandor) wrote:
dyld: /usr/local/apache/bin/httpd Undefined symbols:
/Users/pudge/.cpan/build/libapreq-1.3/blib/arch/auto/Apache/Request/Request.b
undle undefined reference to _ApacheRequest
_post_params expected to be defined
At 22:01 + 2003.11.21, william ross wrote:
On 21 Nov 2003, at 20:54, Chris Nandor wrote:
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] (William Ross) wrote:
snip
In your case it looks like a broken link to libapreq. i had similar
errors with libapreq built through CPAN.pm, but I
to Configure).
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, as that is the only thing
common to the examples that reuse the address.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
and head only one copy
winds up on the tape.
But chances are they are in different locations anyway: just make sure you
install in /usr/local, as everyone should have done anyway ... right? ;-)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
Anyone used this?
http://www.apple.com/downloads/macosx/development_tools/aemonitor.html
Downloading now, will be trying out laterish.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
and then captures them, and formats them,
or somesuch.
But at $5 (why!) if its any good at all it would be worthwhile
(personally I don't know why he dropped the price to $5, $15 would be
about right IMHO, presuming it works well, and if it doesn't, it's
not worth anything...).
Yeah.
--
Chris Nandor
/ with all the files 0600, so at least it is
secure, but still, it's a lot of data).
I've still not actually tried the app though. :)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
,
then yeah, it can't know, and it just returns the string unchanged.
Hope that helps,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
',
default_name = 'test2'
);
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
reduced.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
Mac::Glue;
my $glue = new Mac::Glue 'Terminal';
my $result = $glue-display_dialog('Enter a number:', default_answer = 55);
print $result-{text_returned}**2, \n;
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http
it does NOT work.
But I made it work by patching it with some additional undefs to the .h
files (before the #include of the Mac OS includes, after the include of the
perl ones, I think). One was #undef DEBUG, the other was #undef I_POLL. I
don't think there were others.
--
Chris Nandor
_INC_UTIL_C_
# define _INC_UTIL_C_
+#undef I_POLL
+
#include sys/param.h
#include Files.h
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] (Chris Nandor) wrote:
In my experience, Panther is quite a bit faster with Mac::Carbon startup
than Jaguar was. I've got some benchmarks I keep meaning to clean up and
post. The time spent in dyld has -- the biggest problem -- has been
is virtually immediate, because the perl library is loaded in, and
the script is cached in memory.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
installing Mac-Carbon, adding use MacPerl; to the
script, and using it as-is. If you don't want to install all of Mac-Carbon,
Mac-AppleScript is your best bet. Stay away from osascript.
Cheers,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
options.
Cheers,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
= new Mac::Glue 'Mail';
my $source = $mail-prop(
source =
message = $message_index,
mailbox = $mailbox,
account = $account
);
print $source-get;
See the thread on Mac::Carbon Profiling for some performance comparisons
between Mac::Glue and AppleScript.
--
Chris
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] (Sherm Pendley) wrote:
Off-topic, I know, and I apologize for that in advance.
Today I received two emails, both with forged headers. One appeared to
come from Pudge (Chris Nandor), and the other from Mattias Neeracher.
Both included virus
and
Disk and Domain Constants under Constants.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
object include set(), append(), size(). e.g.,
$ perl -MMac::Memory -le '
$a = new Handle foo;
print $a-size;
print $a-get;
$a-append(bar);
print $a-size;
print $a-get;
'
3
foo
6
foobar
Cheers,
--
Chris Nandor [EMAIL
it to folders too! Next version of Mac::Glue will allow:
$finder-obj(folder = '/Users/SomeUser/folder')-update;
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
http://www.perl.com/lpt/a/2004/01/23/macglue.html
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, this is not as efficient as the perl at the top, which gets
everything in a single event.
Hope that helps,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
';
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
'); # ?
$document-close;
Cheers,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
)
remote: 0 (0x0)
target:
{ 1 } 'psn ': 8 bytes {
{ 0x0, 0x120001 } (Finder)
}
optional attributes:
empty record
event data:
{ 1 } 'aevt': - 0 items {
}
}
--oo end of event oo--
--
Chris Nandor [EMAIL PROTECTED]http
-prop('comment')-get;
Of course, the problem remains, how does AppleScript know that it can't use
the same value that iPhoto returned? Note that the aete for iPhoto says
nothing about types comp OR float, it says to use typeLongInteger for ID, so
that doesn't help. :-)
--
Chris Nandor
for more information.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
: 0 (0x0)
interaction level: 64 (0x40)
reply required: 1 (0x1)
remote: 0 (0x0)
See what the values for the AppleScript and Mac::Glue versions are.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED
, based on gcc version 2.95.2 19991024
(release)
[EMAIL PROTECTED] pudge]$ sudo gcc_select 3.3
Default compiler has been set to:
gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
). What am I doing wrong?
Not giving me more information with which I could diagnose the problem! :-)
What is enters a loop of running the test files? Do you have logs?
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL
---
Processes/t/Processes.t2 512 62 33.33% 5-6
Scrolling up I find the following:
Processes/t/Processes..ok 4/6# Failed test
Try running the tests with 'make test TEST_VERBOSE=1'.
--
Chris
/a/2004/01/23/macglue.html
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
the current song).
http://dev.macperl.org/files/scripts/happening
http://dev.macperl.org/files/scripts/np.pl
The former was discussed some in a recent perl.com article:
http://www.perl.com/pub/a/2004/01/23/macglue.html
Hope that helps,
--
Chris Nandor [EMAIL
-check_for_new_mail;
__END__
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, but Mac::Glue will get that coerced to plain text on the way
out normally, and yes, nonstandard chars will often end up as '?' or such.
If you need other options, let me know, we can discuss what you need.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source
, where I have absolutely
no
problem with commercial software postings. :-)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
that may arise.
After reading through it and getting a general understanding, please feel
free to ask any Mac OS X-perl-specific questions here.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
In article [EMAIL PROTECTED],
[EMAIL PROTECTED] (Rick Measham) wrote:
On 18 Mar 2004, at 6:06 AM, Chris Nandor wrote:
This works:
my $obj = $finder-obj(folder = '/Users/pudge/Movies');
my $size = $finder-data_size($obj);
Chris, what is the data_size?
Beats me; I took
problems with AppleScript: it doesn't grok Unix paths natively.
There's something you can do like POSIX path to ... I forget the syntax.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
see it. I'd write to the XSpell author and
complain.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
alignment line in.
Hope that helps; if there's something you don't understand, please ask.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
with Address Book is in ex/.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
')),
with_properties = {
street = '123 Main St.',
city = 'New York',
state = 'NY',
label = 'home',
}
);
__END__
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
At 22:50 -0500 2004.04.20, Ken Williams wrote:
On Apr 14, 2004, at 2:57 PM, Chris Nandor wrote:
I've been called out! ;-) Here's a version with Mac::Glue.
...
Say, I built the Address_Book glue and looked through its docs, but I
don't see methods to search the database for entries that have
) password prompt not hide
your typed password? Yeesh!
$ security unlock-keychain
password to unlock default: adsdasd^C
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
, or being online, any longer. You
can back up to any local volume (including shared volumes over the network).
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
further trap all attempts to climb the directory tree in the uri.
You can use Mac::InternetConfig to disable the protocol handlers. But
RCDefaultApp is a better solution for this.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network
to which part of speech, and tell blocks are one of the
prime examples. Why isn't last calendar the direct object of make, but
instead, of end? Computer languages aren't supposed to make you guess this
much. :)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open
am I doing wrong here? (Other than using a Mac...)
:p
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
Photo Gallery with
iPhoto and Perl hack.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
:)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
= 'Wonder'] ))-get;
That returns for a card for the name Stevie Wonder, with no other info. If
I change it to Sn Wonder, I get an uninitialized value warning in the
print.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL
')-get;
}
To set:
for my $email ($person-prop('emails')-get) {
my $value = $email-prop('value');
(my $text = $value-get) =~ s/\@/[EMAIL PROTECTED]/;
print $value-set(to = $text);
}
Hope that helps,
--
Chris Nandor [EMAIL PROTECTED]http
is
being wasted.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
At 18:23 +0100 2004.07.21, John Delacour wrote:
At 10:12 am -0700 21/7/04, Chris Nandor wrote:
Can you give the complete error message? My brain reminds me you don't like
to use the CPAN shell, which means you might not have all the modules
installed, which means that you likely got an error
.
Writing Makefile for Mac::Glue
Perhaps I was wrong to assume you had ulterior motives, but this has come
up twice in the last year from you, and both times you snipped the part
where you were told which module was missing.
--
Chris Nandor [EMAIL PROTECTED]http
-v
Server version: Apache/1.3.29 (Darwin)
Server built: Feb 4 2004 10:31:58
(That is, it's the default Apache, default perl, default mod_perl, etc.
Everything is default, and Apache::MP3 is the latest.)
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source
statements to Apache::MP3
and watch the error log, find out where it is going wrong.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
.
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
trying to work on the next, the order is messed up and you have an
invalid object, as the actual AEDesc in each $phone object in that loop
references an index (phone number 1, phone number 2, etc.).
Cheers,
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source
do we do if it is not? :-) Any ideas? Is the source for
PerlObjCBridge available? Could it use CamelBones instead ... ? I saw it
has a Carbon API too, I think, so maybe I could use that ...
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development
= 1
);
--
Chris Nandor [EMAIL PROTECTED]http://pudge.net/
Open Source Development Network[EMAIL PROTECTED] http://osdn.com/
101 - 200 of 252 matches
Mail list logo