Help with International Spam

Hello,
I have tried multiple attempts at writing rules that absolutely block international spam. Seems most of it is in French. I've set rules to delete mail with certain characters, etc. Nothing seems to work. I just want the Mail application to delete each one, not even show up in my junk folder. Any help would be greatly appreciated.

I haven't found a decent solution to foreign-language spam other than to use a bayesian anti-spam filter such as SpamSieve.
http://c-command.com/spamsieve/
It's well worth the price, IMHO.
Regards.
Disclaimer: any product suggestion and link given is strictly for reference and represents my opinion only. No warranties express or implied. I get no personal benefit from the sale of any product I may recommend in any of my posts in the Discussions. Your mileage may vary. Void where prohibited. You must be this tall to ride. Objects in mirror may be closer than they appear. Preservatives added to improve freshness. No animals were harmed in the making of this post.

Similar Messages

  • Need help with internal HD memory problems when using Premiere Pro?

    When using PP I keep loosing memory on my HD.
    Now this seems strange to me since I have every thing, all my video and audio files on external HDs.
    Each time I time I make a new project I end up with less space on my internal HD.
    Information related to these projects is somehow remaining on my internal HD.
    Anyone got any ideas about what I might be doing wrong?
    Dimitrije

    Premiere will slowly compile various files to help the project along, and the default place is usually your internal hard drive. Make sure your scratch disks are pointed to an external hard drive if that is what you want, also, make sure the Media Cache Files are being created on your external as well (and not the default location which is on your local drive).
    Premiere Preferences > Media
    Media Cache Files & Media Cache Database should be changed to an external disk if you don't want them created on your local disk. There are many tutorials and explanations about all of these aspects of Premiere on these forums and from other sources. Hope that helps!

  • Help with international settings - the menu bar flag is gone!

    The flag no longer appears in my menu bar, nor does the "show input menu in the menu bar" check box in the international section of the System Preferences stay checked. I no longer seem able to type in Chinese, which is what I really need to be able to do.
    Help? Thanks!

    Hi Crimsoncat and welcome to the forums!
    Seems your Chinese has been taken away...
    (Sorry, just could not resist!)
    Now for solving your problem! When did this start happening? Have you tried a bit of maintenance, like:
    Repairing permissions is an important part of regular maintenance, and should always be carried out both before and after any software installation or update.
    Go to Disk Utility (this is in your Utilities Folder in your Application folder) and click on the icon of your hard disk (not the one with all the numbers).
    In First Aid, click on Repair Permissions.
    This only takes a minute or two.
    Background information here:
    http://docs.info.apple.com/article.html?artnum=25751
    and here:
    http://docs.info.apple.com/article.html?artnum=302672
    An article on troubleshooting Permissions can be found here:
    http://support.apple.com/kb/HT2963
    If you were having any serious problems with your Mac you might as well complete the exercise by repairing your hard disk as well. You cannot do this from the same start-up disk. Reboot from your install disk (holding down the C key). Once it opens, select your language, and then go to Disk Utility from the Utilities menu. Select your hard disk as before and click Repair.
    Once that is complete reboot again from your usual start-up disk.
    More useful reading here:
    Resolve startup issues and perform disk maintenance with Disk Utility and fsck
    http://support.apple.com/kb/TS1417

  • Need Help with Internal RAID

    I'm working with 1080i HD footage (captured from a Canon HV30) and output through an Intensity Pro PCIe card to a 1080p display while working on Final Cut Studio 2. I have two separate monitors outputing 1920 x 1080.
    I'm working on a 2.8GHZ Quad-Core Intel Xeo Mac Pro with 10GB of RAM and a 320GB Hard Drive. Quicktime stumbles over 1080 footage from FCP, skipping frames, so I need to stripe some drives, internally if possible (there's three slots available for drives).
    I already own an additional 1.5TB SATA hard drive, and am wondering...
    What size drives would be ideal to handle 1080 footage? Would 500GB drives be enough, 1TB, or 1.5TB? Should the drives all be the same size?
    Do I need a PCIe card to stripe these drives together or is the OSX Disk Utility sufficient?
    Will I need to stripe three drives, or is two sufficient? Should I stripe together the main drive too or stripe the drives separate from the main hard drive?
    Help on any one of these questions would be appreciated. Thanks for reading.

    Ok, now that you have freed up some space on your system HD, the next thing would be to do a little system maintenance.
    First, shut down your Mac and restart it. Don't just log out. Shut it down. Power it off. Then restart. In System Preferences, turn off Time Machine if you have it running. Also put your system HD in the Spotlight privacy list (aka System Preferences > Spotlight > Privacy > Prevent Spotlight from Searching These Locations.)
    Then, if you don't already have one, download a utility like Cocktail, Onyx, MacJanitor, etc. and run it. (You have Leopard, so make sure you download the appropriate version of the utility.) Make sure there are NO other applications running when you run the utility. When you run it, accept all the default operations and also check the option to clear the system cache; you want to clear the system cache. Also set it to shut down your Mac after running. (If there is no such option, you should manually shut down your Mac after the utility runs - and I mean shut down, not just log off.) The first time you restart after running the utility & clearing the system cache, your Mac will take longer than normal to boot; don't worry, that only happens the first time, as your system will be rebuilding the system cache.
    Next, you should probably delete any render files that currently exist and re-render your video.
    Then try exporting your video again, and see what happens.

  • Help with Internal table - Urgent Please

    I had an internal table declared as below:
    DATA: BEGIN OF i_results OCCURS 0,
            pernr like p0014-pernr,
            begda like zhrccroll-begda,   "Cost center roll out begin date
            endda like zhrccroll-endda,    "Cost center roll out end date
            aedtm like p0014-aedtm,
            uname like p0014-uname,
            kostl like p0001-kostl,
           ittype(7),
          END OF i_results.
    And my SQL to populate the table based on some other results:
    select t1pernr t3begda t3endda t1aedtm t1uname t2kostl
      appending corresponding  fields of table i_results
      from pa0014 as t1
      inner join pa0001 as t2
      on t1pernr = t2pernr
      inner join zhrccroll as t3
      on t2kostl = t3kostl
      for all entries in i_it01
      where t1~pernr = i_it01-pernr
      and t2~kostl = i_it01-kostl
      and t3~kostl = i_it01-kostl
      and t3~syst = 'STAFF'
      and t1~aedtm = p_date
      and t1~uname in so_name.
    Everything was working great and now user wants to see additional dates on the report so I have to add couple of dates to internal table but unfortunately they have same names (begda, endda), Now I need internal table like this:
    DATA: BEGIN OF i_results OCCURS 0,
            pernr like p0014-pernr,
            begda like zhrccroll-begda,   "Cost center roll out begin date
            endda like zhrccroll-endda,    "Cost center roll out end date
            aedtm like p0014-aedtm,
            uname like p0014-uname,
            kostl like p0001-kostl,
            begda like p0014-begda,  "infotype begin date
            endda like p0014-endda,  "infotype end date
            ittype(7),
          END OF i_results.
    I cannot have duplicate declarations in internal table and also my SQL would not work. The new SQL would be:
    select t1pernr t3begda t3endda t1aedtm t1uname t2kostl
      t1begda t1endda
      appending corresponding  fields of table i_results
      from pa0014 as t1
      inner join pa0001 as t2
      on t1pernr = t2pernr
      inner join zhrccroll as t3
      on t2kostl = t3kostl
      for all entries in i_it01
      where t1~pernr = i_it01-pernr
      and t2~kostl = i_it01-kostl
      and t3~kostl = i_it01-kostl
      and t3~syst = 'STAFF'
      and t1~aedtm = p_date
      and t1~uname in so_name.
    This is not working either.
    Could comeone please help me how to acheive the desired result. I am trying to get all the data in one shot, and that is why I have the SQL above. Any ideas you could provide would be greatly appreciated.
    Thanks in advance.
    Mithun

    HI Mithun,
      To add to vishnu do not use "appending corresponding fields of"..
    1) if you are reading this data again and again then use
      "appending table itab"
    2) if it is triggered just once then use
      "into table itab"
    And also define ur itab as:
    DATA: BEGIN OF i_results OCCURS 0,
    pernr like p0014-pernr,
    ccbegda like zhrccroll-begda, "Cost center roll out begin date
    ccendda like zhrccroll-endda, "Cost center roll out end date
    aedtm like p0014-aedtm,
    uname like p0014-uname,
    kostl like p0001-kostl,
    begda like p0014-begda, "infotype begin date
    endda like p0014-endda, "infotype end date
    ittype(7),
    END OF i_results.
    and your select statement as:
    select t1pernr t3begda as ccbegda t3endda as ccenda t1aedtm t1~uname
    t2kostl t1begda t1~endda into table i_results
    from pa0014 as t1
    inner join pa0001 as t2
    on t1pernr = t2pernr
    inner join zhrccroll as t3
    on t2kostl = t3kostl
    for all entries in i_it01
    where t1~pernr = i_it01-pernr
    and t2~kostl = i_it01-kostl
    and t3~kostl = i_it01-kostl
    and t3~syst = 'STAFF'
    and t1~aedtm = p_date
    and t1~uname in so_name
    I am sure you need to tweak and twist the above statements a bit..
    Hope this helps..
    BR
    Rakesh
    PS: Please close the thread if your problem is solved..

  • Help with internal signal routing on a 6602

    I need to do the following with a 6602:
    GPIO (any) to RTSI0
    4 Counter Outputs to RTSI1-4; doesn't matter which.
    I have tried P0.0->RTSI0 and then CTR0-3 to RTSI4.  But I get an error that the resources required for the last connection (CRT3_OUT -> RTSI4) are being used by the P0.0->RTSI0 route.
    What are the rules?  Acording to the routing chart, they are all possible, but I don't know how to keep them from bumping into one another.

    Hi:
    How is it that you are doing the routing? DAQmx eport signals? DAQmx connect terminals?
    Can you give us a little bit more background on what you are doing?
    Have you this article or this other?

  • HELP WITH INTERNAL UPGRADES TO MY LAPTOP

    I WOULD LIKE TO UPGRADE MY SPEAKERS IN MY LAPTOP, THAT I HAVE ALREADY PURCHASED, HOW CAN I DO THIS? AND WHERE?
    ALSO I WANTED TO ADD AN ADDITIONAL FAN AS WELL, MY LAPTOP IS PRONE TO OVERHEATING HOW CAN I DO THIS?

    Just as a polite request: Please use mixed case. Using all upper case is the equivalent of shouting. It's considered impolite.
    Be sure you've removed the clear plastic strip that covers the rear air vent on the computer just below the lid.
    If you believe the computer is not functioning properly then take it to your local Apple service center for repair. All Intel laptops (even those not made by Apple) run hot. It's not abnormal. If you want a cooler computer you'll need to get one that doesn't use an Intel Core 2 Duo chip or is twice as thick and 2 pounds heavier for the heat sink.

  • Help with internal microphone.

    H there, could sombody please explain to me in layman's terms how to fix my microphone. There is absolutely no sound comming through it, and I've updated drivers etc, I feel like I have tried evertyhing.  
    I have windows 8 system. 
    Thanks,
    Regards,
    Nico.

    Right-click the volume icon in your system tray and open 'Recording Devices'.
    Make sure your microphone is set as the default device.
    Also, right-click your microphone, and open 'Properties'. Make sure the microphone volume settings are correct. Microphone Boost can be left at 0.0 dB, it might add distortion at greater values than 0.0 dB.
    Jonas
    Microsoft MVP: Windows Consumer Expert
    Yoga Tablet 2 10 || ThinkPad X1 Carbon (20A7007MPH) || ThinkPad Helix (3698-6EU) || IdeaCentre B540
    Twitter: @jonashendrickx

  • Conversion of External material with Internal using search help

    Hi,
    We are working on ECC 6.0 for automotive company and have following scenario.
    One OE (External/Customer) material number (MARA-BISMT) with more than one internal material number (MARA-MATNR). This has been done because same customer material is sold by delar for different brands, for exmaple BMW, Ford, Opel. Therefore we have different internal materials with respective brands with same external number in material master. 
    Business requirement is, all correspondence with customer or vendor should be done using external/customer material number.
    Whereas all internal business process should use internal SAP material number.
    For example as given below
    External No. --> Internal No.
    BMW-1 --> 1001 (Brand - BMW)
    BMW-1 --> 1002 (Brand - Ford)
    BMW-1 --> 1003 (Brand - Opel)
    Now the requirement is that user will create document, for example PO or SO, with external/customer material number. While
    doing that user should get a pop up screen after entering external material number, if external material is attached/corresponds to multilple internal material number. Then user will selects correct internal number from pop up screen and return to document screen but material field should displayed with external material number.
    For example in above case, user will enter BMW-1. Pup up screen will have three internal numbers 1001, 1002 and 1003. User selects 1003 but after material conversion material field of the document will displayed as BMW-1.
    We are using Customer enhancement - "MGA00003 Material Master (Industry and Retail): Number Display" for input/ouput conversion.
    Also we have created Elementary Search Help - SEARCH_OE_NUMBER with Hot Key "Q". This search help is included into
    collective search help "MAT1_A" so that user can able to see multiple internal material number by entring customer material number.
    We are able to convert external material number with internal material number and put the external material while creating PO. But when we add another item in PO, search help is getting called again and again for first line item even after conversion of matrial has been taken place.
    How we can avoid this multiple calling of serach help?
    Is there any better way to achieve this requirement?
    Please help us.
    Thanks,

    We have resolved this issue by redesigning material master data.

  • Need some help with a Macally enclosure and a spare internal drive

    Need some help with a Macally enclousure
    Posted: Oct 1, 2010 10:55 AM
    Reply Email
    Aloha:
    I have a Macally PHR-S100SUA enclousure that does not recognise,my WD 1001fals hard drive. It has worked just fine with other internal drives, but not this one?
    This is a spare internal drive that I am trying to make an external drive to store back ups for a lot of data. But so far I can not get it recognized by the computer. Maybe I need different drivers?
    Any suggestions?
    Dan Page

    Hi-
    Drivers aren't typically needed for external enclosures.
    Macally has none listed for that enclosure.
    The same is true for the WD drive, internal or external; no drivers.
    With the exception of high end PM multi drive enclosures, I can't think of any that use drivers.
    How is the external connected?
    Have you tried different cables, different ports?
    Bad/damaged cables are fairly common.
    Have you verified connections inside of the enclosure?

  • Help with Spam Whitelist

    I manage a mailing list for a non-profit organization and recently, Verizon started rejecting e-mails being sent to verizon.net addresses, returning an error message indicating they were spam messages.  I submitted the online whitelist request form 2 weeks ago and have have verizon.net members submit the form as well, to no avail!  There has been no change nor has there even been a message received indicating if the matter is being investigated.  The domain isn't on any domain block lists and I have a SPF record in DNS!  Please Help!!

    Since we haven't heard back from you or have received a form submission as requested in your private support case, it appears assistance is no longer required. If you need any future help with your Verizon service, please make a post here on the forums so we can assist.
    Anthony_VZ
    **If someones post has helped you, please acknowledge their assistance by clicking the red thumbs up button to give them Kudos. If you are the original poster and any response gave you your answer, please mark the post that had the answer as the solution**
    Notice: Content posted by Verizon employees is meant to be informational and does not supersede or change the Verizon Forums User Guidelines or Terms or Service, or your Customer Agreement Terms and Conditions or plan

  • I am trying to import standard midi file that I created in Band in a Box into Logic Pro 9.  I can not get all the track to play with internal instrument sounds... only the piano track.  how can I get the others to play... drums, bass etc????   Help

    I am trying to import standard midi file that I created in Band in a Box into Logic Pro 9.  I can not get all the track to play with internal instrument sounds... only the piano track.  how can I get the others to play... drums, bass etc????   Help

    Don't drag the midi into an open Logic project. The tracks won't set up correctly.
    'Open' the midi file with Logic as if it were a Logic project. Then all the tracks will be set up so you can start editing them and applying better saved sounds and instruments, but you'll be at a starting place where you can hear what's going on.

  • Creating a main form, with internal forms help! (a poke in the right direct

    Hey guys, I am trying to make a form application within swing (currently using netbeans gui builder), and I am trying to achieve a standard sized form (say 300x200px) and when the user clicks a "next" button, the
    form layout does not change and a new form appears inside. I have looked into jinternalFrames; however I do not want a moveable frame inside, I just want to have an arbituary frame where the content inside
    changes. I plan on making around 60 pages (forms) within this app so differant jforms or something is the logical procedure.
    I just need a point in any direction at all, as to how to achieve this; I am confident programmer in C/C#/C++/VB.NET (yes im new to java) however it's so similiar to C# I doubt i'll have a problem either:
    a) information on how to program the swing manually without a gui builder
    b) a method of how to achieve what im doing in netbeans/eclipse
    Thanks all

    when the user clicks a "next" button, the form layout does not change and a new form appears insideAnd the [Card Layout Actions|http://www.camick.com/java/blog.html?name=card-layout-actions] should help with this.

  • Need help with a currently "in-use" form we want to switch to Adobes hosting service

    Hi, I am in desperate need of help with some issues concerning several forms which we currently use a paid third party (not Adobe) to host and "re-distribute through email"...Somehow I got charged $14.95 for YOUR service, (signed up for a trial, but never used it)..and now I am paying for a year of use of the similar service which Adobe is in control of.  I might want to port my form distribution through Adobe in the hopes of reducing the errors, problems and hassles my customers are experiencing when some of them push our  "submit button". (and I guess I am familiar with these somewhat from reading what IS available in here, and I also know that, Adobe is working to alleviate some of these " submit"  issues, so let's don't start by going backwards, here) I need solutions now for my issues or I can leave it as is, If Adobe's solution will be no better for my end users...
    We used FormsCentral to code these forms and it works for the most part (if the end-user can co-operate, and thats iffy, sometimes), but I need help with how to make it go through your servers (and not the third party folks we use now), Not being cruel or racist here, but your over the phone "support techs" are about horrible & I cannot understand them or work with any of them, so I would definitely need someone who speaks English and can understand the nuances of programming these forms, to please contact me back. (Sorry, but both those attributes will be required to be able to help me, so, no "newbie-interns" or first week trainees are gonna cut it).... If you have anyone who fits the bill on those items and would be willing to help us, please contact me back at your earliest convenience. If we have to communicate here, I will do that & I can submit whatever we need to & to whoever we need to.
    I need to get this right and working for the majority of my users and on any platform and OS.
    You may certainly call me to talk about this, and I have given my number numerous times to your (expletive deleted) time wasting - recording message thingy. So, If it's not available look it up under [email protected]
    (and you will probably get right to me, unlike my and I'm sure most other folks',  "Adobe phone-in experiences")
    Thank You,
    Michael Corman
    VinylCouture
    Phenix City, Alabama  36869

    Well, thanks for writing back...just so you know...I started using Adobe products in 1987, ...yeah...back then...like Illustrator 1 & 9" B&W Macs ...John Warnock's Helvetica's....stuff like that...8.5 x 11 LaserWriters...all that good stuff...I still have some of it working on a mac...much of it was stuff I bought. some stuff I did not...I'm not a big fan of this "cloud" thing Adobe has foisted upon the creatives of the world...which I'm sure you can tell...but the functionality and usefulness of your software can not be disputed, so feel free to do whatever we will continue to pay for, ...I am very impressed with CC PS on the 64 bit PC and perhaps I will end up paying you the stipend that you demand for the other services.
    So  I guess that brings us to our problem.. a few years back and at the height of the recession and near bankruptcy myself,  I was damn lucky and hit on something and began a small arts and crafts supply service to sell my products online to a very "niche market" ...I had a unique product and still sell that product (plus others) online...My website is www.vinylcouture.com...Strange? Yes...but there is a market it seems, for everything now, and this is the market I service...Catagorically, these are 99%+ women that use these "adhesive, sticky backed vinyl products"  to make different "craft items" that are just way too various and numerous to go into... generally older women, women who are computer illiterate for the most part...and all this is irrelevant to my problem, but I want you to have every bit of background on this and especially the demographic we are dealing with, so we can get right to the meat of the problem.
    OK...So about two years ago, I decided to offer a "plain sheet" product of a plain colored "stick back" vinyl... it is available in multiple quantities of packs ( like 5 pieces, 10 pieces, 15 pieces, in a packi  & so on)...and if you are still on my site.. go to any  "GO RIGHT TO OUR ORDER PAGE"  button, scroll down a little...and then to the "PLAIN VINYL" section...you will see the Weebly website order process.) You can back out from here, I think,..but, anyway this product is available in 63 colors + or - a few. So then the problem is,  how do they select their individual colors within that (whatever) pack?... .
    So my initial idea was to enable a "selection form" for these "colors" that would be transmitted to me via email as 'part" of the "order process".. We tried getting our customers to submit a  " a list" ( something my competitiors still do, lol, poor bastards)......but that..is just unbelievable..I can't even begin to tell you what a freakin' nightmare that was...these people cannot even count to 10, much less any higher... figuring out what colors to list and send me... well, lets just say, it wasn't working......I had to figure out a better way...Something had to be done.
    So after thinking this all out,  and yeah...due to my total ignorance, i figured that we could make a form with Live Cycle Designer (Now Forms Central)...(back then something that was bundled with Adobe Acrobat Pro), I believe, and thats what this thing was authored in... and it would be all good...LOL!
    Well not so simple...as you well know, Adobe Acrobat would NOT LET YOU EMAIL anything from itself.....it just wouldn't work (and I know why, and all that hooey), but not being one to take NO for answer,.I started looking for a way to make my little gizmo work.. So I found this company that said they can "hijack" (re-direct actually) the request to email, bypass the wah-wah, and re-transmit it to the proper parties.....for less than $100 a year,  I think...its called http://pdf-fillableforms.com/.
    A nice gentleman named Joseph Silva helped us program the thing to go to his servers and back out. Please dont hassle them...I need them...for now..it basically does work...try it...you should get back a copy of the form that you filled out...good luck however,  if you're on MAC OSX or similar...
    I have included a copy of both of our forms (and feel free to fill it out and play with it)...just put test somewhere on it...(and you must include YOUR email or it will balk)..they are supposed to be mostly identical, except one seems to be twice as large....generating a 1.7 meg file upon submission, while the other one only generates a 600K file or so...thats another issue for another day or maybe you can advise on that also...
    OK so far so good......In our shop, once Grandma buys a 10 pack (or whatever), Only then she gets to the link on her receipt page ro the relevant "selection form" ,(this prevents "Filling and Sending"  with "no order" and "no payment", another early problem we had)... which they can click on and it will usually download and open up on their device if all goes well...Then our little form is supposed to be fillable and is supposed to ADD UP all the quantities, so grandma knows how many she is buying and so forth right on the fly,  and even while she changes her mind..., and IT'S LARGE so grandma can see it, and then it TOTALS it all up for them, ( cause remember, they can NOT add)..,  except there is a programming bug (mouse-click should be a mouse-up probably or something..) which makes you click in the blank spaces to get to a correct TOTAL...about 70-80% of our customers can enable all these features and usually the process completes without problems for them especially on PC's running Windows OS and Acrobat Reader X or XI...at least for most... Unfortunately it is still not the "seamless process" I would like or had envisioned for the other folks out there that do have trouble using our form....  Many folks report to us the following issues that we know of.  First of all it takes too much time to load up...We know its HUGE...is there anyway that you can see, to streamline this thing? I would love for it to be more compact...this really helps on the phones and pads as I'm sure you well know.
    Some just tell us,"it WON'T work"....I believe this is because they are totally out of it and dont even have Adobe Reader on their machine, & don't know how to get it ( yes, we provide the links).....or it's some ancient version....no one can stop this one...
    It almost always generates some kind ( at least one time)  of "error message" which we do warn them about..., telling one,  basically that "Acrobat doesnt even like this happening at all, and it could be detrimental to ones computer files", blah-blah...(this freaks grandma out really bad)...& usually they end up not even trying to send it...  and then I get calls that even you wouldn't believe...& If they DO nut up and push the Red "Submit Form" button, it will usually send the thing to us (and also back to them at the "required email address" they furnished on the form, thats what the folks at the "fillable forms place" do) so, if it's performing it's functions, why it is having to complain?. What are we doing wrong?....and how can I fix it?...Will re-compiling it or saving it as a newer version of "FormsCentral" correct any of these problems ?
    Ok, so that should keep you busy for a minute and we can start out with those problems...but the next thing is, how can I take advantage of YOUR re-direct & hosting services?, And will it get rid of the error messages, and the slowness, and the iOS incompatibilities ? (amazingly,  the last iOS Reader version worked almost OK.. but the newest version doesnt seem to work with my form on my iphone4)  If it will enable any version of the iOS to send my form correctly and more transparently, then it might be worth the money...$14.95 a MONTH you say. hmmmmm...Better be good.
    Another problem is, that I really don't need 5000 forms a month submitted. I think its like 70-100 or less....Got any plans for that?  Maybe I'm just not BIG ENOUGH to use Adobe's services, however in this case, I really don't care whose I do use as long as the product works most correctly for my customers as well as us. Like I said, If I'm doing the best I can, I won't change anything, and still use the other third party, If Adobe has a better solution, then i'm all for that as well. In the meantime, Thanks for any help you can provide on this...
    Michael Corman
    VinylCouture.com
    (706) 326-7911

  • Help with encapsulation and a specific case of design

    Hello all. I have been playing with Java (my first real language and first OOP language) for a couple months now. Right now I am trying to write my first real application, but I want to design it right and I am smashing my head against the wall with my data structure, specifically with encapsulation.
    I go into detail about my app below, but it gets long so for those who don't want to read that far, let me just put these two questions up front:
    1) How do principles of encapsulation change when members are complex objects rather than primitives? If the member objects themselves have only primitive members and show good encapsulation, does it make sense to pass a reference to them? Or does good encapsulation demand that I deep-clone all the way to the bottom of my data structure and pass only cloned objects through my top level accessors? Does the analysis change when the structure gets three or four levels deep? Don't DOM structures built of walkable nodes violate basic principles of encapsulation?
    2) "Encapsulation" is sometimes used to mean no public members, othertimes to mean no public members AND no setter methods. The reasons for the first are obvious, but why go to the extreme of the latter? More importantly HOW do you go to the extreme of the latter? Would an "updatePrices" method that updates encapsulated member prices based on calculations, taking a single argument of say the time of year be considered a "setter" method that violates the stricter vision of encapsulation?
    Even help with just those two questions would be great. For the masochistic, on to my app... The present code is at
    http://www.immortalcoil.org/drake/Code.zip
    The most basic form of the application is statistics driven flash card software for Japanese Kanji (Chinese characters). For those who do not know, these are ideographic characters that represent concepts rather than sounds. There are a few thousand. In abstract terms, my data structure needs to represent the following.
    -  There are a bunch of kanji.
       Each kanji is defined by:
       -  a single character (the kanji itself); and
       -  multiple readings which fall into two categories of "on" and "kun".
          Each reading is defined by:
          -  A string of hiragana or katakana (Japanese phoenetic characters); and
          -  Statistics that I keep to represent knowledge of that reading/kanji pair.Ideally the structure should be extensible. Later I might want to add statistics associated with the character itself rather than individual readings, for example. Right now I am thinking of building a data structure like so:
    -  A Vector that holds:
       -  custom KanjiEntry objects that each hold
          -  a kanji in a primitive char value; and
          -  two (on, kun) arrays or Vectors of custom Reading objects that hold
             -  the reading in a String; and
             -  statistics of some sort, probably in primitive valuesFirst of all, is this approach sensible in the rough outlines?
    Now, I need to be able to do the obvious things... save to and load from file, generate tables and views, and edit values. The quesiton of editting values raises the questions I identified above as (1) and (2). Say I want to pull up a reading, quiz the user on it, and update its statistics based on whether the user got it right or wrong. I could do all this through the KanjiEntry object with a setter method that takes a zillion arguments like:
    theKanjiEntry.setStatistic(
    "on",   // which set of readings
    2,      // which element in that array or Vector
    "score", // which statistic
    98);      // the valueOr I could pass a clone of the Reading object out, work with that, then tell the KanjiEntry to replace the original with my modified clone.
    My instincts balk at the first approach, and a little at the second. Doesn't it make more sense to work with a reference to the Reading object? Or is that bad encapsulation?
    A second point. When running flash cards, I do not care about the subtlties of the structure, like whether a reading is an on or a kun (although this is important when browsing a table representing the entire structure). All I really care about is kanij/reading pairings. And I should be able to quickly poll the Reading objects to see which ones need quizzing the most, based on their statistics. I was thinking of making a nice neat Hashtable with the keys being the kanji characters in Strings (not the KanjiEntry objects) and the values being the Reading objects. The result would be two indeces to the Reading objects... the basic structure and my ad hoc hashtable for runninq quizzes. Then I would just make sure that they stay in sync in terms of the higher level structure (like if a whole new KanjiEntry got added). Is this bad form, or even downright dangerous?
    Apart from good form, the other consideration bouncing around in my head is that if I get all crazy with deep cloning and filling the bottom level guys with instance methods then this puppy is going to get bloated or lag when there are several thousand kanji in memory at once.
    Any help would be appreciated.
    Drake

    Usually by better design. Move methods that use the
    getters inside the class that actually has the data....
    As a basic rule of thumb:
    The one who has the data is the one using it. If
    another class needs that data, wonder what for and
    consider moving that operation away from that class.
    Or move from pull to push: instead of A getting
    something from B, have B give it to A as a method
    call argument.Thanks for the response. I think I see what you are saying.. in my case it is something like this.
    Solution 1 (disfavored):
    public class kanjiDrill{ // a chunk of Swing GUI or something
         public void runDrill(Vector kanjiEntries){
              KanjiEntry currentKanjiEntry = kanjiEntries.elementAt(0); // except really I will pick one randomly
              char theKanji = currentKanjiEntry.getKanji();
              String theReading = currentKanjiEntry.getReading();
              // build and show a flashcard based on theKanji and theReading
              // use a setter to change currentKanji's data based on whether the user answers correctly;
    }Solution 2 (favored):
    public class kanjiDrill{ // a chunk of Swing GUI or something
         public void runDrill(Vector kanjiEntries){
              KanjiEntry currentKanjiEntry = kanjiEntries.elementAt(0); // except really I will pick one randomly
              currentKanji.buildAndShowFlashcard(); // method includes updating stats
    }I can definitely see the advantages to this, but two potential reasons to think hard about it occur to me right away. First, if this process is carried out to a sufficient extreme the objects that hold my data end up sucking in all the functionality of my program and my objects stop resembling natural concepts.
    In your shopping example, say you want to generate price tags for the items. The price tags can be generated with ONLY the raw price, because we do not want the VAT on them. They are simple GIF graphics that have the price printed on a an irregular polygon. Should all that graphics generating code really go into the item objects, or should we just get the price out of the object with a simple getter method and then make the tags?
    My second concern is that the more instance methods I put into my bottom level data objects the bigger they get, and I intend to have thousands of these things in memory. Is there a balance to strike at some point?
    It's not really a setter. Outsiders are not setting
    the items price - it's rather updating its own price
    given an argument. This is exactly how it should be,
    see my above point. A breach of encapsulation would
    be: another object gets the item price, re-calculates
    it using a date it knows, and sets the price again.
    You can see yourself that pushing the date into the
    item's method is much beter than breaching
    encapsulation and getting and setting the price.So the point is not "don't allow access to the members" (which after all you are still doing, albeit less directly) so much as "make sure that any functionality implicated in working with the members is handled within the object," right? Take your shopping example. Say we live in a country where there is no VAT and the app will never be used internationally. Then we would resort to a simple setter/getter scheme, right? Or is the answer that if the object really is pure data are almost so, then it should be turned into a standard java.util collection instead of a custom class?
    Thanks for the help.
    Drake

Maybe you are looking for