Re: CSS resources using url(...) syntax under Direct Connect

2011-05-29 Thread Paul Hoadley
On 29/05/2011, at 6:25 PM, Paul Hoadley wrote:

> I've hit an issue that seems to be the one described at this point in a long 
> thread about the improved Wonder JavaMonitor:
> 
> http://osdir.com/ml/webobjects-dev/2010-11/msg00717.html
> 
> I'm running an app from the command line, and accessing it via Direct 
> Connect.  (I'll explain this weird behaviour below.)  Specifically, the 
> browser can't find any resources referenced by the url(...) syntax from with 
> CSS files.  No complaints are logged anywhere, the app just returns an empty 
> resource.  (This is on Mac OS X, and it has nothing to do with 
> case-sensitivity, spaces in filenames or typos: running through Eclipse 
> returns the requested resources just fine.)  I followed that thread above 
> through to the end, but didn't see that the issue was resolved—was it?  Does 
> anyone know _any_ workaround for this?

Here's one using the hint from that thread that once an image had been 
displayed using a WOImage component, it was then available to the CSS file's 
url(...) reference.  If I display on the front page of the app a div containing 
WOImage references to all the image files in WebServerResources, they then 
appear as intended by the CSS.  I can set 'style="display: none;"' on that div 
and there's no visible difference.  Obviously a complete hack, but it's 
sufficient for this very specific development scenario.


-- 
Paul.

http://logicsquad.net/


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Hashcode/ETag for EOs

2011-05-29 Thread Pascal Robert

Le 2011-05-29 à 14:51, Farrukh Ijaz a écrit :

> Hi Pascal,
> 
> On 2011-05-29, at 9:20 PM, Pascal Robert wrote:
> 
>> I did :
>> 
>>   ERXRouteResults results = (ERXRouteResults)response(someEntity, filter);
>>   String etagHash = 
>> ERXCrypto.sha256Encode(results.responseNode().toString(results.format(), 
>> this.restContext()));
> 
> IMO, this is an expensive approach because of encryption algorithm. Unless 
> encryption of the data is key requirement, don't use it.

I only need a hash. Base64 or MD5 would be ok too.

> Because normally the toString() if not overridden returns a String comprising 
> the memory address of the instance, this is the reason a simple hashCode() 
> call is not sufficient in your case. You can simply override the hashCode() 
> method and compute the values based on your entity attributes.

The problem is that it had to be compute from the attributes that are part of 
the (ERXKeyFilter) filter. And I do think it should be using the format 
requested too, so that if someone ask for a JSON representation and someone ask 
for a XML one, the ETag would be different. But we can debate on that, because 
I'm not 100% sure that the same object but using represented in a different 
format should have a different ETag.

> For caching use Hashtable but that will only benefit if your hashCode() 
> generates unique value. In my experience the best way to cache the values is 
> to maintain a binary tree using the hashCode() as the node value. If you want 
> to implement a better caching, try exploring Splay tree model. With a little 
> modification to it, you can make you caching super fast.
> 
> These things are not normally practiced by API users but they do matter is 
> you develop your own API to be used by someone else :)
> 
> Farrukh
> 
>> 
>>> there's not a direct simple way to do it ... probably grab the snapshot off 
>>> the EO and compute a hash of the values (you can ignore the keys because 
>>> they're fixed). it might be something where you can make a new interface in 
>>> ERX that your EO's could implement to provide a more optimal impl (like 
>>> ERCStamped could use its lastModified as a basis).
>>> 
>>> ms
>>> 
>>> On May 25, 2011, at 1:55 PM, Pascal Robert wrote:
>>> 
 I'm trying to find a way to generate a HTTP ETag for EOs so that caching 
 can be done for REST services. What I want to do is to have the same ETag 
 value for each representation of the EO, so when one of the values change, 
 the ETag value will also change, but if the EO have the same value, it 
 will generate the same ETag as another request got.
 
 Problem is: I don't know what to use. I tried with myEO.hashCode() but I 
 did some tests and every time I fetch the EO, the hashcode is different 
 even if the data didn't change. I'm thinking of doing a MD5 digest of part 
 of the EO, but I was wondering if another way exist? I could use a "last 
 modified" date and generate a MD5 of that too, but that date is a better 
 option for the Last-Modified header.
 
 --
 Pascal Robert
 prob...@macti.ca
 
 WOWODC 2011 : July 1-2-3, Montreal. wowodc.com
 
 AIM/iChat : MacTICanada
 LinkedIn : http://www.linkedin.com/in/macti
 Twitter : pascal_robert
 
 
 
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
 
 This email sent to msch...@pobox.com
>>> 
>> 
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/farrukh.ijaz%40fuegodigitalmedia.com
>> 
>> This email sent to farrukh.i...@fuegodigitalmedia.com
> 

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Hashcode/ETag for EOs

2011-05-29 Thread Farrukh Ijaz
Hi Pascal,

On 2011-05-29, at 9:20 PM, Pascal Robert wrote:

> I did :
> 
>ERXRouteResults results = (ERXRouteResults)response(someEntity, filter);
>String etagHash = 
> ERXCrypto.sha256Encode(results.responseNode().toString(results.format(), 
> this.restContext()));

IMO, this is an expensive approach because of encryption algorithm. Unless 
encryption of the data is key requirement, don't use it. Because normally the 
toString() if not overridden returns a String comprising the memory address of 
the instance, this is the reason a simple hashCode() call is not sufficient in 
your case. You can simply override the hashCode() method and compute the values 
based on your entity attributes.

For caching use Hashtable but that will only benefit if your hashCode() 
generates unique value. In my experience the best way to cache the values is to 
maintain a binary tree using the hashCode() as the node value. If you want to 
implement a better caching, try exploring Splay tree model. With a little 
modification to it, you can make you caching super fast.

These things are not normally practiced by API users but they do matter is you 
develop your own API to be used by someone else :)

Farrukh

> 
>> there's not a direct simple way to do it ... probably grab the snapshot off 
>> the EO and compute a hash of the values (you can ignore the keys because 
>> they're fixed). it might be something where you can make a new interface in 
>> ERX that your EO's could implement to provide a more optimal impl (like 
>> ERCStamped could use its lastModified as a basis).
>> 
>> ms
>> 
>> On May 25, 2011, at 1:55 PM, Pascal Robert wrote:
>> 
>>> I'm trying to find a way to generate a HTTP ETag for EOs so that caching 
>>> can be done for REST services. What I want to do is to have the same ETag 
>>> value for each representation of the EO, so when one of the values change, 
>>> the ETag value will also change, but if the EO have the same value, it will 
>>> generate the same ETag as another request got.
>>> 
>>> Problem is: I don't know what to use. I tried with myEO.hashCode() but I 
>>> did some tests and every time I fetch the EO, the hashcode is different 
>>> even if the data didn't change. I'm thinking of doing a MD5 digest of part 
>>> of the EO, but I was wondering if another way exist? I could use a "last 
>>> modified" date and generate a MD5 of that too, but that date is a better 
>>> option for the Last-Modified header.
>>> 
>>> --
>>> Pascal Robert
>>> prob...@macti.ca
>>> 
>>> WOWODC 2011 : July 1-2-3, Montreal. wowodc.com
>>> 
>>> AIM/iChat : MacTICanada
>>> LinkedIn : http://www.linkedin.com/in/macti
>>> Twitter : pascal_robert
>>> 
>>> 
>>> 
>>> ___
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>>> 
>>> This email sent to msch...@pobox.com
>> 
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/farrukh.ijaz%40fuegodigitalmedia.com
> 
> This email sent to farrukh.i...@fuegodigitalmedia.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Hashcode/ETag for EOs

2011-05-29 Thread Pascal Robert
I did :

ERXRouteResults results = (ERXRouteResults)response(someEntity, filter);
String etagHash = 
ERXCrypto.sha256Encode(results.responseNode().toString(results.format(), 
this.restContext()));

> there's not a direct simple way to do it ... probably grab the snapshot off 
> the EO and compute a hash of the values (you can ignore the keys because 
> they're fixed). it might be something where you can make a new interface in 
> ERX that your EO's could implement to provide a more optimal impl (like 
> ERCStamped could use its lastModified as a basis).
> 
> ms
> 
> On May 25, 2011, at 1:55 PM, Pascal Robert wrote:
> 
>> I'm trying to find a way to generate a HTTP ETag for EOs so that caching can 
>> be done for REST services. What I want to do is to have the same ETag value 
>> for each representation of the EO, so when one of the values change, the 
>> ETag value will also change, but if the EO have the same value, it will 
>> generate the same ETag as another request got.
>> 
>> Problem is: I don't know what to use. I tried with myEO.hashCode() but I did 
>> some tests and every time I fetch the EO, the hashcode is different even if 
>> the data didn't change. I'm thinking of doing a MD5 digest of part of the 
>> EO, but I was wondering if another way exist? I could use a "last modified" 
>> date and generate a MD5 of that too, but that date is a better option for 
>> the Last-Modified header.
>> 
>> --
>> Pascal Robert
>> prob...@macti.ca
>> 
>> WOWODC 2011 : July 1-2-3, Montreal. wowodc.com
>> 
>> AIM/iChat : MacTICanada
>> LinkedIn : http://www.linkedin.com/in/macti
>> Twitter : pascal_robert
>> 
>> 
>> 
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>> 
>> This email sent to msch...@pobox.com
> 

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


CSS resources using url(...) syntax under Direct Connect

2011-05-29 Thread Paul Hoadley
Hello,

I've hit an issue that seems to be the one described at this point in a long 
thread about the improved Wonder JavaMonitor:

http://osdir.com/ml/webobjects-dev/2010-11/msg00717.html

I'm running an app from the command line, and accessing it via Direct Connect.  
(I'll explain this weird behaviour below.)  Specifically, the browser can't 
find any resources referenced by the url(...) syntax from with CSS files.  No 
complaints are logged anywhere, the app just returns an empty resource.  (This 
is on Mac OS X, and it has nothing to do with case-sensitivity, spaces in 
filenames or typos: running through Eclipse returns the requested resources 
just fine.)  I followed that thread above through to the end, but didn't see 
that the issue was resolved—was it?  Does anyone know _any_ workaround for this?

(What I'm trying to do is provide a third party non-WO-developer with the 
absolute lightest-weight setup for doing some HTML/CSS design.  I am really 
keen to get this working using Direct Connect and running from the command 
line, as then all I need to do is ship him an app bundle and get him to fire it 
up.  He can test his changes by writing directly in the app bundle.  AFAICS, 
the next lightest-weight solution would be running through Apache, which is 
going to involve way too much setting up for this particular one-off project.)


-- 
Paul.

http://logicsquad.net/


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com