dialing 1-800-555-1212.
If you have any questions, you can e-mail me at [EMAIL PROTECTED]
Submit resumes to Eugene Koh ([EMAIL PROTECTED], and you can send him
questions directly as well).
Humbly,
Andrew
------
Andrew
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer1-800-555-TELL Voice 650-930-9062
Tellme Networks, Inc. Fax 650-930-9101
--
a badly written CGI can do (blow away any group
writeable files in group andrew, for example, rather than blow away any of
user andrew's files plus do bad stuff masquerading as user andrew).
Humbly,
Andrew
----------
Andrew Ho
ion scripts and that it doesn't limit
you at all in that aspect.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer1-800-555-TELL Voice 650-930-9062
Tellme Networks, Inc. Fax 650-930-9101
--
ed in a URL and hence no Referer was
involved at all.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer1-800-555-TELL Voice 650-930-9
d Apache::Request API compatible without bloating up the
normal use of Apache::Request.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer1-800-555-TELL
ion is in fact mentioned in it:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer
Hello,
AG>called foo.reg, even if it outputs a "Content-Type: text/plain" webserver,
s/webserver,/header,/
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTEC
ication specific
output, a pretty filename will be suggested. Just include a line like this
in the Apache::Registry script before calling send_http_header():
$r->header_out('Content-Disposition' => 'inline; filename=plain.txt');
I just verified all of this on freshly
ontent-Disposition: inline; filename=foo.txt
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer1-800-555-TELL Voice 650-930-9062
Tellme Network
ng a map outside of blocks doesn't work (I
get a GET /real/path/on/filesystem/to/foo.pl HTTP/1.0 on the backend) and
that requests with path_info don't work.
Does anybody have a pointer to a setup that looks like this?
Thanks in advance!
Humbly,
Andrew
----
sers see it constantly updated.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
maybe in my copious free
time... sigh.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks,
e.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
your
goal is just to make links are relative to a certain root.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Te
general, you will get much better error reporting and if you are
running with warnings and "use strict" in all of your scripts. You can
find out how to enable these in the Guide.
Humbly,
Andrew
------
Andre
you would like to submit a resume,
please e-mail me at [EMAIL PROTECTED] and include "Resume" in the
subject line.
Thanks!
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED
igest.pl line 9.
I also note that during building, I end up with a Session.so in blib/arch,
but after doing make install, Session.so disappears. There is also an
DigestAPI.xs that gets copied into blib/lib/Apache, which seems fishy.
Humbly,
Andrew
-
E, so
GY>you'll have to use something like Opera or Konqueror (or mozilla now, I
GY>hear?) to play around with it.
MSIE does do digest authentication that works with mod_digest.c. And
Mozilla past 0.9.7 should do digest authentication.
Humbly,
Andrew
------
me.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
to pass arguments.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
se Ghostscript as a
print filter anyway, you can just print directly using it). For Adobe
Acrobat Reader, use the -toPostScript option.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTE
ters, either (or indeed,
for 8-bit data, which is the whole point of Base64 encoding).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED]
le over NFS).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
e.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
#1003548
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
call it has a statement logger similar to MySQL's... if you have it
handy, you could try the \connect from psql and see if it results in a
disconnect and reconnect.
Humbly,
Andrew
------
Andrew Ho http://www.t
n't
heard of anybody using RDBMS-level users for authentication purposes.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650
llowed in hostnames) and that modperl is often
used as a directory name even though underscores ARE allowed in filenames.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer
ad than having to sit down and write a new script every time
your application changes.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED]
pers ;)).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
's free and GUI based and can record IE
sessions and replay them with an arbitrary number of threads. It uses
Access databases to hold the tests and results so you can probably use
Perl on Windows to populate it with your custom tests.
Humbly,
Andrew
--------
epend on
the same Perl/Apache builds we use on production.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
|| 'no' %> document<%= $n == 1 ? '' : 's' %>.")
that real-world HTML interfaces need.
So that's what I'm looking for. :)
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
pnotes, and do various other mucky stuff. Of course the interface above is
kind of arbitrary. You could choose some ASP style object to cram the
passed parameters into, or have a built in program call to retrieve
parameters passed from the caller.
Humbly,
Andrew
-----
e out of the box, and then provide hooks for installing it in
custom places.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
l get the undefined symbols error that you paste above.
This happens for me with a variety of existing open source libraries that
I've built. I theorize your problem with libapreq may stem from a similar
problem (I'm also running 10.1.2).
Humbly,
Andrew
---------
dy else seen this really weird behavior trying to build Perl
5.6.1 on Mac OS X? A web search didn't turn up any relevant posts.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
w.rsasecurity.com/products/securid/hardware_token.html
I guess they DO have a challenge-response calculator. Neat.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer
In general it is a fine idea to not make the DocumentRoot writeable by the
web user. In fact, I believe it is a good policy that the web user should
be able to write only to a small subset of controlled locations.
Humbly,
Andrew
---------
$ http://URL/directory/
Will do you what you want.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme N
t least one major Apache module having an option
to use URL-based authentication instead of cookie-based... but I can't
seem to find that from a cursory perusal of CPAN.
Humbly,
Andrew
----------
Andrew Ho http:/
omic moves. It's
an icky world out there.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, I
ex encoded MD5 hash of this is RfbmPiuRLyPGGt3oHBagt).
Instead of just storing the key in the file
R/Rf/Rfb/Rfbm/RfbmPiuRLyPGGt3oHBagt.dat, store the key in the file
[EMAIL PROTECTED] Presto... collisions are impossible.
Humbly,
Andrew
------
y, not
core dumping, but returning no headers or similarly confusing a regular
HTTP client.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED]
.com/pub/a/2001/10/17/etoys.html
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-80
ed output.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
ors and this list! Then we can all help fill in the pieces.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tel
ou want to combine the two.
$method = $foo;
$method_sub = sub { $object->$method(@_) };
return $method_sub;
Hope that helps.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
ion or
TransHandler.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
;
in your script, too. This can also cause the error you are reporting.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-90
nder Solaris 2.6 (both Sparc
and Intel) and 2.7 (Intel only).
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme N
l
statically on Solaris because it will core otherwise.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Net
S
The workaround is to make $ID a package global (use vars qw($ID)).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
.ceverett.com).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
y.
I'd say that having something "pretty good" for doing fast testing of
mod_perl scripts is good, but you'll never be 100% mod_perl unless you're
using mod_perl itself. :)
Humbly,
Andrew
--
Andrew Ho
ut.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
o.
Follow the "all-in-one" directions in the mod_perl download and it usually
Just Works.
The symlinking and changing the @INC path may work, but this is a hacky,
symptomatic solution at best.
Humbly,
Andrew
------
Andrew Ho
oncompliance. My advice is to just try to sidestep this issue where
possible.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice
uest right away, internally redirect to another handler, or
just directly add the handlers you want down the chain.
Hope that helps--
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECT
so the missing Content-Length does
not present a problem.
With HTTP/1.1 Keep-Alive, the browser needs to know when to stop reading
the response. The chunked Transfer-Encoding sends chunk sizes, then
chunks, like lots of mini Content-Length fields.
Humbly,
Andrew
------
for any IE browser. It's
harder if your entire site is SSL. I'm hoping someone will answer with a
better solution than dumbing down encryption altogether.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme
g resources on both
sides for connection establishing.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Netwo
S>resolution. Is there any fix?
Are there references to the problem reports? readdir() works fine for me
with Apache 1.3.19, mod_perl 1.25, and Perl 5.6.0 on Solaris 2.7 (x86).
Humbly,
Andrew
------
Andrew Ho http:/
may require other modules you don't have.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc
:PASSWORD in your scripts.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
cripts, it
won't unless you set it yourself).
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, I
ourse, this isn't the same as using Apache itself--but it's super
useful to be able to run things from the command line from time to time.
I think it'd be good to have something like this in the main mod_perl
distribution.
Humbly,
Andrew
----------
prepare to handle this
case no matter what.
You may want to read the chapter on server-side state in the Eagle book.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer
, so your advice
on hiding either the query arguments or the anchor is exactly correct.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
those two headers is
also undocumented in the mod_perl guide to begin with.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930
ckfile, or sysopen with O_CREAT|O_EXCL if you
can't put the file there beforehand.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED]
nd then sends it all at once. So my parent process reads in an
unbuffered way, but the child "exec()" outputs all at once.
Is there any way to remedy this situation?
Thanks in advance.
Humbly,
Andrew
----------
Andrew Ho
ecting to your
server, no. This information isn't included in the request sent to you.
Using cookies as identification mechanisms is probably the way to go.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
ontent-type: text/html\n\n";
When in fact you still do. The manpage makes it sound like you don't.
Perhaps a note to that effect would be helpful.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.c
g this is easy--I just SetHandler cgi-script inside
the container. So is the ScriptAlias priority lower than
the assignment? I always thought ScriptAlias was just
shorthand for Alias + + SetHandler.
Humbly,
Andrew
------
Andrew
ashes_and_Globs
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
unctionality available to them--CGI, ISAPI,
FastCGI, or anything else.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice
Thanks for the jolt.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
ect for a POST; I
sniffed the packets and the request is correct. Just no input. Nothing on
STDIN, either. I'm frankly mystified, wondering if I'm just totally
missing something obvious.
Humbly,
Andrew
----------
Andrew Ho
he 1.3.14 on Solaris x86,
CGI.pm 2.56. The client I use doesn't seem to make a difference.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
n. Thanks in advance--
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
ot;package $foo" or even "eval 'package foo'" or even
"BEGIN { eval 'package foo' }." I'm wondering if there's any way short of
hacking the Perl source itself to make the compiler dynamically choose a
namespace.
Humbly,
Andrew
-
aven't been able to programmatically reproduce the error,
so it's hard to catch a glimpse of the process table before-and-after).
GED>Are you getting core dumps?
No such luck.
Humbly,
Andrew
----------
Andrew Ho
n be quite expensive in that case.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-
Hello,
This isn't strictly a mod_perl question, but is there a good way in
general Perl to dynamically change the current package name?
Thanks in advance--
Humbly,
Andrew
--
Andrew Ho http://www.tellm
havior similar to this? Thanks in advance--
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
very expensive.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
o the list. Anything else isn't
MS>worth it.
I think you're being unfair here; it's impossible for it to be exactly as
easy given that the task has gone from (send plaintext to list) to
(upload XML to take23, convert to HTML, convert to text, send to list).
You just mean it isn'
ration option next to PerlHandler Apache::ASP.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc.
is also easier. However, for a dev
environment or a low-traffic one, having them co-exist is just fine.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED]
robustly failover in such a case,
e.g. keep serving responses but just stop writing to logs.
Thanks in advance if anybody has any pointers.
Humbly,
Andrew
--
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED
ge or wrong.
The Perl FAQ has some references to how you can partially accomplish what
you are talking about:
http://www.perl.com/CPAN/doc/manual/html/pod/perlfaq3.html#How_can_I_hide_the_source_for_my
Humbly,
Andrew
---------
your SSI is not
showing up in the output.
There are a couple workarounds; see the documentation for Apache::SSI (you
can find it from CPAN) for more information/references.
Humbly,
Andrew
------
Andrew Ho
d calls to top_module.
Humbly,
Andrew
------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
e had some exposure to ASP in the past.
Humbly,
Andrew
----------
Andrew Ho http://www.tellme.com/ [EMAIL PROTECTED]
Engineer [EMAIL PROTECTED] Voice 650-930-9062
Tellme Networks, Inc. 1-800-555-TELLFax 650-930-9101
--
BI environment.
FS>Apache 1.3
FS>ModPerl
FS>Apache::DBI (disabling this doesn't change anything)
What versions of this stuff, and of PostgreSQL are you using? I assume by
"Apache 1.3" you really mean 1.3.x, where x is something recent...
Humbly,
Andrew
------
he equivalent
Perl syntax.
EndHTML
This would be a great feature to port to Perl; it eliminates the tedious
"how many spaces did I indent?" problem which results in a "Can't find
string terminator..." error. Oddly enough, Ruby will complain, though, if
you
1 - 100 of 101 matches
Mail list logo