Hands On: Implementing OS X 10.3 (Panther) Server
Grok Headline matches for Hands On: Implementing OS X 10.3 (Panther) Server
Hands On: Put Panther On Your Server
Hands On: Put Panther On Your Server
07/08/2004 07:09 PM By Mark Anbinder, Macworld (via MyAppleMenu)
New: Mac OS X Panther Hands-On Training
New: Mac OS X Panther Hands-On Training
02/12/2004 11:28 AMPeachpit Press released Mac OS X Panther Hands-On Training by Garrick
Chow, which provides project-based tutorials for Panther and the
iApps.
Peachpit releases 'Mac OS X Panther
Hands-On Training'
Peachpit releases 'Mac OS X Panther
Hands-On Training'
02/11/2004 02:57 PMPeachpit Press today announced the release of Mac OS X Panther
Hands-On Training...
Macworld: Panther Server -- The Server
Admin tool
Macworld: Panther Server -- The Server
Admin tool
12/02/2003 12:30 AMMac OS X Server Panther
Mac OS X Server Panther
03/14/2005 05:03 PMSanitizing Mail On Panther Server
Sanitizing Mail On Panther Server
01/28/2004 09:15 AMBy Jason Deraleau (O'Reilly Network via MyAppleMenu)
X11 Client/Server Programming on Panther
X11 Client/Server Programming on Panther
02/13/2004 11:55 AMRemote Mac X11 Programming
Mac OS X now provides support for Unix X11 Windows programming!
Panther (OS X 10.3) ships with support for the X Windows GUI and
includes the XTools IDE and X11 SDK on the Developer CD. So you
have...
Panther Server: Is it ready for the
enterprise?
Panther Server: Is it ready for the
enterprise?
11/12/2003 05:43 PMColumnist Yuval Kossovsky offers a visual tour of Panther Server and
finds it enterprise-ready, with numerous service, integration and
security improvements. The first of several parts.
Installing DBD::mysql on Panther Server
Installing DBD::mysql on Panther Server
04/09/2004 03:54 PMI have seen on Mac OS X Hints, and various other places, a lot of
trouble getting DBD::mysql installed. Here is how to install it on Mac
OS X Server v10.3.3.
A previous hint explained how to update the config.pm file. Follow ...
AFP548: Panther Server Primer
AFP548: Panther Server Primer
11/10/2003 10:52 PMMac OS X 10.3.4 released; Panther Server
updated
Mac OS X 10.3.4 released; Panther Server
updated
05/26/2004 03:26 PMApple Computer Inc. on Wednesday released an update to its
Mac OS X Panther operating
system, bringing the current version to 10.3.4. Apple also updated
Panther Server,
bringing it up to version 10.3.4, adding improved Server Admin
application among other changes.
Change the SMTP port on Panther Server
Change the SMTP port on Panther Server
12/30/2004 12:06 PMThe mail server admin panels in Panther Server have changed from their
equivalents in Jaguar Server, hiding the options to modify the port on
which Postfix listens for SMTP connections. Combined with the trend of
more ISPs bl...
Sybase Adaptive Server Enterprise 12.5.1
for Panther
Sybase Adaptive Server Enterprise 12.5.1
for Panther
01/07/2004 06:45 PMSybase today announced that Sybase Adaptive Server Enterprise (ASE)
12.5.1, the latest release of the company's enterprise-class
relational database management system (RDBMS), is now available for
Mac OS X Panther...
Panther Server Mailing lists quirks
Panther Server Mailing lists quirks
09/20/2004 12:15 PMA few Panther Server Mailman Tips:
If you are running Panther Server's built-in mailing list 'Mailman,'
be sure to have a mailing list called "Mailman" enabled in the list
menu. Otherwise you can get get odd reporting (and ...
Mac OS X 10.3.4 released; Panther Server
updated (MacCentral)
Mac OS X 10.3.4 released; Panther Server
updated (MacCentral)
05/26/2004 06:05 PMMacCentral - Apple Computer Inc. on Wednesday released an update to
its Mac OS X Panther operating system, bringing the current version to
10.3.4. Apple also updated Panther Server, bringing it up to version
10.3.4, adding improved Server Admin application among other changes.
Is cURL/libcurl Broken In Panther
Server?
Is cURL/libcurl Broken In Panther
Server?
04/13/2004 09:08 PMMacworld: Panther Server -- Is it ready
for the enterprise?
Macworld: Panther Server -- Is it ready
for the enterprise?
12/02/2003 12:30 AMFont Reserve Server 1.7 gets Panther
support, more
Font Reserve Server 1.7 gets Panther
support, more
05/24/2004 05:32 PMExtensis Inc. on Monday released
Font Reserve
Server v1.7, the first update to the software since Extensis' 2003
acquisition of DiamondSoft. Font Reserve Server helps workgroups
manage fonts. The new release features full compatibility with Mac OS
X v10.3, and sports new auto-activation plug-ins for QuarkXPress 6,
Adobe InDesign CS and Adobe Illustrator. Extensis also claims
performance improvements for large workgroups, and has added the
ability to auto-activate fonts across all workgroups and auto-activate
font families. It's a free update for registered Font Reserve Server
1.6 users, and costs US$1,200 for a new license.
Font Reserve Server gets Panther
support, more
Font Reserve Server gets Panther
support, more
05/24/2004 05:37 PMExtensis today released Font Reserve Server 1.7, an update to its
workgroup font management solution...
NetVault For Mac OS X: data security for
Panther server
NetVault For Mac OS X: data security for
Panther server
08/17/2004 03:21 PMBakBone Software is now shipping
NetVault For Mac
OS X, a data protection solution aimed at those running Mac OS X
Server v10.3. It offers data backup, restore and disaster recovery
functions as well as the ability for administrators to create and
manage jobs from remote clients, deploy and manage software and more.
You can download a 45-day demo from the BakBone Web site; contact the
company for pricing information.
Enabling mobile accounts with Panther
Server
Enabling mobile accounts with Panther
Server
04/22/2004 04:10 PMColumnist Ryan Faas takes a look at mobile accounts, a feature that is
in some ways revolutionary for Mac administrators and yet is often
ignored when dealing with Panther and Panther Server.
Mindwrap releases Optix for Mac OS X
Server (Panther)
Mindwrap releases Optix for Mac OS X
Server (Panther)
11/04/2003 08:37 AMMindwrap today announced the release of Optix 6 for Mac OS X Server
10.3 (Panther), available for use on Power Mac G5s and rack-mountable
Xserves...
Optix document management system comes
to Panther Server
Optix document management system comes
to Panther Server
11/04/2003 09:47 AMMindwrap announced Tuesday the
release of Optix v6, a document management server system developed for
use with Mac OS X v10.3 Server and compatible with Power Mac G5s and
Xserves. Optix leverages Sybase's Adaptive Server Enterprise (ASE)
v12.5.
Implementing XHTML 2.0
Implementing XHTML 2.0
07/27/2004 08:02 PMWell, I slept off most of my desire to blog about XHTML 2.0, but
here's a post anyway. The thing is, I don't think implementing
elements using behaviors is really a good idea, although I feel bad
saying it while the W3C is linking to my test implementation. ?
Implementing CSS (Part 1)
Implementing CSS (Part 1)
06/05/2005 11:17 PMOne of the most interesting problems (to me at least) in browser
layout engines is how to implement a style system that can determine
the style information for elements on a page efficiently. I worked on
this extensively in the Gecko layout engine during my time at AOL and
I've also done a lot of work on it for WebCore at Apple. My ideal
implementation would actually be a hybrid of the two systems, since
some of the optimizations I've done exist only in one engine or the
other.
When dealing with style information like font size or text color,
you have both the concept of back end information, what was specified
in the style rule, and the concept of front end information, the
computed result that you'll actually use when rendering. The
interesting problem is how to compute this front end information for a
given element efficiently.
Back end information can be specified in two different ways. It
can either be specified using CSS syntax, whether in a stylesheet or
in an inline style attribute on the element itself, or it is
implicitly present because another attribute on the element specified
presentational information. An example of such an attribute would be
the color attribute on the font tag. Both WebCore and
Gecko use the term mapped attribute to describe an attribute
whose value (or even mere presence) maps to some implicit style
declaration.
A rule in CSS consists of two pieces. There is the
selector, that bit of information that says under what
conditions the rule should match a given element, and there is the
declaration, a list of property/value pairs that should be
applied to the element should the selector be matched.
All back end information can ultimately be thought of as supplying
a declaration. A normal rule in a stylesheet that is matched has the
declaration specified as part of the rule. An inline style attribute
on an element has no selector and is simply a declaration that always
applies to that element. Similarly each individual mapped attribute
(like the color and face attributes on the font
tag) can be thought of as supplying a declaration as well.
Therefore the process of computing the style information for an
element can be broken down into two phases. The first phase is to
determine what set of declarations apply to an element. Once that
back end information has been determined, the second phase is to take
that back end information and quickly determine the information that
should be used when rendering.
WebCore (in upcoming Safari releases) has a really cool
optimization that I came up with to avoid even having to compute the
set of declarations that apply to an element. This optimization in
practice results in not even having to match style for about 60% of
the elements on your page.
The idea behind the optimization is to recognize when two elements
in a page are going to have the same style through DOM (and other
state) inspection and to simply share the front end style information
between those two elements whenever possible.
There are a number of conditions that must be met in order for this
sharing to be possible:
(1) The elements must be in the same mouse state (e.g., one can't be
in :hover while the other isn't)
(2) Neither element should have an id
(3) The tag names should match
(4) The class attributes should match
(5) The set of mapped attributes must be identical
(6) The link states must match
(7) The focus states must match
(8) Neither element should be affected by attribute selectors, where
affected is defined as having any selector match that uses an
attribute selector in any position within the selector at all
(9) There must be no inline style attribute on the elements
(10) There must be no sibling selectors in use at all. WebCore simply
throws a global switch when any sibling selector is encountered and
disables style sharing for the entire document when they are present.
This includes the + selector and selectors like :first-child and
:last-child.
The algorithm to locate a shared style then goes something like
this. You walk through your previous siblings and for each one see if
the above 10 conditions are met. If you find a match, then simply
share your style information with the other element. Such a system
obviously assumes a reference counting model for your front end style
information.
Where this optimization kicks into high gear, however, is that it
doesn't have to give up if no siblings can be located. Because the
detection of identical style contexts is essentially O(1), nothing
more than a straight pointer comparison, you can easily look for
cousins of your element and still share style with those
elements.
The way this works is that if you can't locate a sibling, you can
go up to a parent element and attempt to find a sibling or cousin of
the parent element that has the same style pointer. If you find such
an element, you can then drill back down into its children and attempt
to find a match.
This means that for HTML like the following:
<table>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell One</td>
</tr>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell Two</td>
</tr>
In the above example, not only do the two rows share the same style
information, but the two cells do as well. This optimization works
extremely well for both old-school HTML (in which many deprecated
presentational tags are used) and newer HTML (in which class
attributes might figure more prominently).
Once the engine determines that a style can't be shared, i.e., that
no pre-existing front end style pointer is available, then it's time
to figure out the set of declarations that match a given element. It
is obvious that for inline style attributes and mapped attributes that
you can find the corresponding declaration quickly. The inline style
declaration can be owned by the element, and the mapped attributes can
be kept in a document-level hash. WebCore has a bit of an edge over
Gecko here in that it treats each individual mapped attribute on an
element as a separate declaration, whereas Gecko hashes all of the
mapped attributes on an element as a single "rule." This means that
Gecko will not be able to share the mapped attribute declaration for
the following two elements:
<img width=300 border=0>
<img width=500 border=0>
WebCore creates three unique declarations and hashes them, one for
a width of 300, one for a width of 500, and one for a border of 0.
Gecko creates two different "rules," one for (width=300,border=0) and
another for (width=500,border=0). As you can see in such a system,
you will frequently not be able to treat the identical border
attributes as the same.
Aside from this difference in mapped attribute handling, the two
engines employ a similar optimization for quickly determining matching
stylesheet rules called rule filtering. All rules that are
potentially matchable by any element (i.e., that have the correct
media type) are hashed based on the contents of the rightmost simple
selector in the rule.
A selector in CSS can be either simple (meaning that all of the
contents of that selector apply only to a single element) or compound
(meaning that you may examine multiple elements like parents or
siblings of that element). A compound selector is essentially a chain
of simple selectors, so the following rule:
tr > td { color: blue }
has two simple selectors, tr and td. The
rightmost simple selector in the rule is the one that we will use for
the rule filtering optimization.
The rightmost simple selector falls into four categories.
(1) The selector uses an ID. (Example: #foo)
(2) The selector doesn't have an ID but uses a class. (Example:
.foo)
(3) The selector has no class or ID but specifies a tag name.
(Example: div)
(4) The selector specifies none of these things. (Example:
*[disabled])
The rule is placed into one of four hashtables depending on which
category it falls into. The idea behind these categorizations is to
always filter out more specific information first. For example, if an
element has a specific ID, then obviously any rules whose rightmost
selector uses a different ID cannot match. Technically the last
category can just be a list and not a hashtable, since those rules
must always be examined by all elements.
Each hashtable, therefore, consists of a mapping from a given
atomic string to a set of rules that match. The class attribute is
exceptional in that you must put the rule into the hashtable multiple
times if multiple class attributes are used.
When determining the set of rules that match a given element, you
only examine rules that correspond to the correct hash entry based off
your ID, classes and tag name. This optimization basically eliminates
95+% of the rules up front so that they need not even be considered
during the matching process.
Each rule is then examined in detail, with all selectors being
checked, to determine if it is a match, and the set of matches is
collected. The set of matches can then be sorted by priority and
specificity such that all the declarations are in the proper
application order.
This brings us to the final phase of the style computation, which
is taking the set of matches and quickly computing the appropriate
front end style information. It is here that Gecko really shines.
What I implemented in Gecko was a data structure called the rule
tree for efficient storing of cached style information that can be
shared *even when* two elements are not necessarily the same.
The idea behind the rule tree is as follows. You can think of the
universe of possible rules in your document as an alphabet and the set
of rules that are matched by an element as a given input word. For
example, imagine that you had 26 rules in a stylesheet and you labeled
them A-Z. One element might match three rules in the sheet, thus
forming the input word "C-A-T" or another might form the input word
"D-O-G."
There are several important observations one can make once you
formulate the problem this way. The first is that words that are
prefixes of a larger word will end up applying the same set of rules.
All additional letters in the word do is result in the application of
more declarations. Thus the rule tree is effectively a lexicographic
tree of nodes, with each node in a tree being created lazily as you
walk the tree spelling out a given word.
This system allows you to cache style information at each node in
the tree. This means that once you've looked up the word
"C-A-T-E-R-W-A-U-L", and cached information at all of the nodes, then
looking up the word "C-A-T" becomes more efficient.
In order to make the caching efficient, properties can be grouped
into categories, with the primary criterion for categorization being
whether the property inherits by default. It's also important to
group properties together that would logically be specified together,
so that when a fault occurs and you have to make a copy of a given
struct, you do so knowing that the other values in the struct were
probably going to be different anyway.
Once you have the properties grouped into categories like the
border struct or the background struct, then you can either store
these structs in the rule tree or as part of a style tree that more or
less matches the structure of the document. Inheritance has to apply
down the style tree and tends to force a fault, whereas non-inherited
properties can usually be cached in the rule tree for easy access.
WebCore doesn't contain a rule tree, but it is smart enough to
refcount the structs and share them as long as no properties have been
set in the struct. In practice this works pretty well but is not as
ideal as the rule tree solution.
Implementing Flood Control
Implementing Flood Control
12/19/2004 03:27 PMIf the load of application relies on incoming events, you may
eventually face the happy curse of popularity: too much work to do
with your available resources. If you set a limit on how many events
you can process within a time period, you can avoid the flood. Vladi
Belperchinov-Shabanski explains the algorithm and demonstrates working
code.
Implementing An ADO Data Control With
VB6
Implementing An ADO Data Control With
VB6
06/18/2002 10:19 AMThe ADO data control can save Visual Basic developers hours of time.
In this article Susan shows us exactly how to go about implementing an
ADO control. 5 Free Bonuses!!! "Attention All Web Developers" Now
includes 5 FREE eBooks to help you promote your ConMan website! "This
is one of the best pieces of software that we have ever used. It's
quick, streamlined, and allowed us to have a fully working site packed
with articles in just 3 hours" Ever wanted to run your own content
driven web site? Well now you can with ConMan: the fast, flexible and
secure web site + admin suite. Try it for free!Click here. Get
notified when we post new content: New Forum Threads 1. How do i do
this? 2. C# editor of your choice? 3. Article Added Date 4. ASP
Developer Seeking Employment 5. Hlp pls. - 1 record per page, refresh
through records problem 6. your site was down :( 7. Can't get html
editor to work properly 8. New website & advice 9. mysql tables 10.
Article Type More Forum Threads... Other Recent Articles An
Introduction To The Bulk Copy Utility // by Mitchell Harper - 12th Jun
2002
Implementing filesystems in Python
Implementing filesystems in Python
12/10/2003 06:35 PMLUFS-Python
provides a relatively simple API for implementing new Linux filesystems in
pure Python. You install the package, write a class implementing
methods for handling filesystem operations such as creating a
directory, opening/reading/writing/closing a file, creating symlinks
etc and finally mount your new filesystem with some special arguments
to the mount command.
At first glance, this is a bit of a gimmick - why would you want to
write your own filesystem in the first place? We've been talking about
this at work and came up with a few ideas. How about a filesystem
where HTML files
saved in a certain directory were instantly run through HTMLTidy and converted in to
valid XHTML ? Or a custom network filesystem that saves
files on a remote server using GnuPG to encrypt them before transfer?
How about a read-only filesystem that lets you browse the contents of
a MySQL database? Just imagine being able to use tools such as
grep and find to search your database. A
module that maps someone elses public web server to your own
filesystem, making mirroring as easy as running a recursive
cp command. A filesystem that updates a swish-e full-text index every time a
file is saved to it - years before Microsoft release Longhorn. The
possibilities are endless.
Here's a really fun idea: a filesystem that implements a dynamic
website. Instead of using tools like mod_python to dynamically create
pages, implement a filesystem that dynamically creates HTML files as they are
requested and set up a stock Apache install with the dynamic
filesystem as the document root. Then point ProFTPD at it so you can log in
via FTP and mess
with your content dynamically. We're thinking about bulding an
FTP interface to our
new database driven CMS, but we could just build a filesystem interface
and point our FTP
server straight at it.
I'm sure there are performance and stability issues that make most
of the above more trouble than it's worth, but I think you'll agree
it's a pretty exciting technology.
Implementing XPath for Wireless Devices
Implementing XPath for Wireless Devices
06/06/2002 05:37 PMIn the first of a two-part series, we explore the implementation of
XPath on wireless devices using the WAP family of standards.
Implementing a relational database using
MySQL
Implementing a relational database using
MySQL
04/06/2005 12:17 PMWhen properly implemented, a relational database can greatly enhance
the availability of data and information for an enterprise's decision
makers. However, deploying a relational database on almost any scale
requires a thorough understanding of the fundamental concepts and
rules that govern their behavior.
Implementing client-side code for SSL in
JDK 1.3
Implementing client-side code for SSL in
JDK 1.3
01/23/2003 02:47 AMCNET Jan 23 2003 1:24AM ET
Gov't could raise P20B by implementing
IP law
Gov't could raise P20B by implementing
IP law
09/14/2004 04:18 PMSun Star Network Sep 14 2004 7:26PM GMT
Poll Position: Implementing Identity
Poll Position: Implementing Identity
04/04/2005 06:03 AMQ: How do you best build a brand?
Implementing XPath for wireless devices
(XML.org)
Implementing XPath for wireless devices
(XML.org)
06/07/2002 08:34 AMImplementing Linux emulation on NetBSD
Implementing Linux emulation on NetBSD
05/13/2004 03:28 AMNetBSD's Linux emulation doesn't run a Linux kernel on a virtual
machine; it runs Linux binaries on a NetBSD kernel. Linux emulation
let you run plenty of useful programs that won't run natively under
NetBSD, such as Sun's 1.4 Java Runtime Environment and JDK.
ICANN To Begin Implementing IPv6
ICANN To Begin Implementing IPv6
07/22/2004 02:58 PMWebProNews Jul 22 2004 6:18PM GMT
Being User-Centered When Implementing a
UCD Process
Being User-Centered When Implementing a
UCD Process
09/09/2002 06:29 AM"Code snippets for implementing tags
with SQL"
"Code snippets for implementing tags
with SQL"
04/11/2005 11:43 PMSoftware Developer resist implementing
Atom
Software Developer resist implementing
Atom
05/24/2004 07:44 AMNot all developers who are designing RSS applications are adding
Atom support and I can't say that I blame them but it is interesting
to see their comments. [miseldine.com]
Grok Description matches for Hands On: Implementing OS X 10.3 (Panther) Server
GrokA matches for Hands On: Implementing OS X 10.3 (Panther) Server
Hands On: Implementing OS X 10.3 (Panther) Server