More questions from a noob (Volume 2)

I started using Arch yesterday. I got most stuff set up already.
Except:
1. Sounds not working (No idea about sound stuff at all )
2. Can't get OpenDNS working (Automatically overwrites any changes to /etc/resolv.conf)
3. XChat says everything I type is misspelled
4. Compiz gets rid of my window boarders (Using GNOME BTW)
5. Need to run `sudo /sbin/dhcpcd eth0` every startup or internet doesn't work
And more as they come.

I'm a bit of a noob myself, but I'll try where I can:
1.  All I did for sound was follow the ALSA section of the beginner's guide.  Have you already tried that? http://wiki.archlinux.org/index.php/Beg … igure_ALSA (This is less detailed but easier to follow (IMHO) than the main ALSA wiki page)
2.  Sorry, can't help there.
3.  I've hopped so many distros recently I don't recall if this was Arch or not, but at least one distro I tried was spell checking everything using German.  I'm not familiar with XCHAT at all, but if there's a way to configure what it uses to spell check, I think that's where you should be looking.
4.  I made the mistake of starting to follow the wiki page for "Compiz", not "Compiz-Fusion". (because I'm so used to referring to it that way)  Could you have done the same?  I had the same problem as you when using straight Compiz.
If you did, use "pacman -Qs compiz" to find out what compiz-related packages you installed.
Then use "pacman -Rsn package_name" to remove those packages.  This will try to remove dependencies, and may throw an error on that part depending on what order you remove them in.  Don't worry about it.  If you hit every package that comes up with -Qs with the -Rsn command, they'll all be fully removed. 
Use -Qs to double check when you are done.   
Then try following http://wiki.archlinux.org/index.php/Compiz-Fusion.  I use fusion-icon to start it, you may want to do differently.  You may also have some bigger problem, but having done it myself I could see using the wrong wiki page as a common noob error.
5.  I use wicd for both my wireless and wired connections, and it makes it pretty easy (and automatic).  I know there are other methods, but wicd worked with ease for me.  http://wiki.archlinux.org/index.php/Wicd
I hope some of this is helpful for you!
Last edited by arch_nemesis (2008-12-23 15:15:53)

Similar Messages

  • My New Curve 8330! (few questions from a noob!)

    So I finally got the Curve 8330 - I had been waiting all this time for the Thunder but decided yesterday that if my fingers are too fat for an iPhone, then they will be for the Thunder as well. Anyways, I LOVE the Curve thus far...just a few questions.
    #1) Do the "messages" and "[email protected]" icon serve the same purpose? If so, which I think they do, how do I filter the "messages" icon so that ONLY my incoming SMS messages are shown??? As of now, the "messages" icon is cluttered with e-mail, SMS, bb mesanger & voicemail! I HATE THAT! I'd rather keep it clean and organized so that If i wanna view my SMS messages, I click on "messages" If I wanna view my bb messanger messages, I click on the bb messanger icon, If i wanna see my e-mails, I click on the "[email protected]" icon and so forth. Is there a way to filter it this way???
    #2) When I send an e-mail, I automatically get THAT e-mail sent back to me! How do I disable this function? I have no need to recieve in my INBOX the e-mail I just sent out.... I tried going into "Messages->options" and turning the "hide sent" to "ON" but this problem still occurs...... Any help on that?
    #3) I have this stupid "Facebook" icon in my menu, how do I delete this permanently?
    Thanks everyone, I'm sure i'll have more questions as I'm readin through! 

    Yes, when you go into your messages and hit the menu key and select options and general options. Email and sms messages should be set to separate. Hit the back key to the right of your trackball to save. If you do not see an icon now just for sms and mms, do a battery pull. Take the battery out with the phone on and leave it out for 30 seconds. Replace it and allow the phone 1-3 minutes to reboot does the icon appear now?
    ~Lorrie~ Master of All Things Blackberry!

  • Just a simple question from a noob

    Hey guys
    im just working on my website, im not doing anything complicated just simple stuff.
    I just want to add a @facefont and change /edit the rules to just let me change the font. I wish it were as easy as just changing it with the property inspector but ive come to figure out that it doesnt work that way. Every time ive asked this question ive been referred to websites that have a 4 page guide on fonts,but this rarely helps me. im just looking a direct on how to do this. BTW im working with a preloaded template from dreamtemplate so everything is already formatted.
    problems: whenever i try to change the font and save it nothing saves but the font size, i want to add @facefont and change the font
    thanks in advanced

    Using Custom Web fonts is a bit more complex than you realize. 
    http://alt-web.com/Articles/Custom-Web-Fonts.shtml
    To make things simple, I recommend using one of the Free Edge Web Fonts.  Simply copy & paste code into the <head> tags of your HTML page. 
    EXAMPLE:
    <!--Edge Font-->
    <script src="http://use.edgefonts.net/pt-sans-narrow:n4,n7:all;league-gothic:n4:all.js"></script>
    Then define the font in your CSS code:
    h2 {font-family:pt-sans-narrow, "Arial Narrow", sans-serif;}
    h3 {
    font-family: league-gothic, Impact, Haettenschweiler, "Franklin Gothic Bold", "Arial Black", sans-serif;
    HTML code:
    <h2>This is Heading 2 - pt-sans-narrow</h2>
    <h3>This is Heading 3 - league-gothic</h3>
    Nancy O.

  • Question from a noob

    ok , so i want to ask
         class NewAction implements ActionListener
              public void actionPerformed(ActionEvent e)
              TArea2.setDocument(new PlainDocument());
         void confirmation()
         int ReturnValue=JOptionPane.showConfirmDialog(null,"Do you want to open a new file?    ","Confirmation  ", JOptionPane.YES_NO_CANCEL_OPTION  );
         if(ReturnValue==JOptionPane.YES_OPTION)
              //HOW CAN I POSSIBLY CALL THE METHOD IN THE NewAction class?? 
         else if(ReturnValue==JOptionPane.CANCEL_OPTION)
         }sorry for my newbie question but can we actually call the actionPerformed method inside the NewAction class from the confirmation method??

    this.NewAction().actionPerformed();
    myclass.NewAction.actionPeformed();
    NewAction().actionPerformed();
    NewAction.actionPerformed();Nobody of these makes any sense.
    You would need to call
    nact.actionPerformed(evt),
    where nact is a NewAction object and evt is an ActionEvent object.
    But this is bad design because the evt object doesn't have any meaning in the call. I suggest instead you write a method
    public void doSomething() {
       TArea2.setDocument(new PlainDocument());
    }and then you call this method in the actionPerformed() and in the if(ReturnValue==JOptionPane.YES_OPTION) block.

  • More questions from E71 owner

    I am really disappointed with this phone- maybe I was expecting too much?
    1. When downloading the pc suite the computer is not recognising the usb lead, also should it change the appearance of the applications and `desktop` of the phone?
    2. The downloads for it are so boring- I want something to cheer it up like emoticon texting- but that download is not compatible, any suggestions to make it more fun?
    Bored!

    I am a little concerned to heat the '7300 is closer to the Radeon 9800 on the MDD'. What is the point of all the Intel processors if the video card is not that much faster than a two to three year old ATI card?
    I will have to look for some comparison somewhere to find out. I may have to consider getting the next level video card if possible if the 7300 is not as good as I thought, and the RAM will have to wait a little longer.
    Also ADC to DVI converters are available on Ebay, I was not thinking of paying new price for these. Apple price is way over-the-top, eBay prices are far better.
    I think adding RAM is more important than anything, disk space I have with an external FW400 RAID, slow I know but its the best way of protecting those 1000 of digital photos. Its a hardware RAID, do not trust software RAIDs!
    What I may do is look to reduce the noise in my MDD, replace the aging boot disk, new fans etc. And put that on the end of a piece of CAT 7 gigabit Ethernet and use it as file storage, i'll look for Tiger server prices on eBay. I am used to the noise level in my home office now and if the Pro makes no noise then I loose nothing. I already use two displays in the MDD, so no difference there either.
    Just one more note: can I take my Superdrive out of my MDD, into the Pro? I have the stock CD-RW in the MDD? DVD burning on my MDD is slooowww, another reason for upgrading.

  • Questions from a "noob"

    I am very new to Adobe CQ. I've been sifting through the scarce documentation and trying to come up to speed, but I've found it very difficult to find what I need. I think I'm at a point in which I understand (to a point) the overall architecture and how to do basic things (mostly theoretically).
    I have a few questions that I was hoping somebody could point me in the right direction on. I would really appreciate the jumpstart.
    - Is it possible to access page component properties? I am trying to create a generic component that can look at a page to see if it has a component embedded within it. If so, I want to iterate over the properties. I am using the page manager to get the page. Are the component properties included with the page properties of that page?
    - How can I make a component accessible to any page? I added a property to my template named allowedPaths (which is depracated?) and its value is /content(/.*)? That only allows the component to be visible to pages created at the root of my websites in the WCM.
    - How do you make a page's dialog actually save the entries you enter? I added a new cq:Panel (etc) to an existing dialog. I followed the same form that was there before. Basically there were 2 tabs and I added a new one, so there is now 3. I see my fields etc. When I enter in data and click "OK", my field data is not saved. It works for the pre-existing form fields, but not in the one I just added.
    I hope the above questions made sense. I'm having a hard time trying to find the information that I need to start feeling comfortable using CQ.
    Any help would be appreciated. Thanks in advance!

    Hi spaceling,
    Just as a general comment, it's a good idea to try to post a single question per thread. That helps with findability.
    1) page component properties - yes. <cq:defineObjects/> creates a scripting variables named currentPage and pageProperties. See http://dev.day.com/docs/en/cq/current/howto/taglib.html for a list of all the scripting variables this tag creates.
    2) which components are accessible on which pages is determined by the design settings. These settings are specific to each template. See http://dev.day.com/docs/en/cq/current/developing/components.html#Adding%20a%20new%20compon ent%20to%20the%20paragraph%20system%20%28design%20%20%20%20%20mode%29 for some instructions on doing this.
    3) my guess is that the fields you added don't have a proper name property. Are the name (which are the names under which the field values are POSTed all start with ./ ? See http://sling.apache.org/site/manipulating-content-the-slingpostservlet-servletspost.html#M anipulatingContent-TheSlingPostServlet%28servlets.post%29-OmittingSomeParameters for why this is important and why if you don't have it, the fields don't get saved.
    HTH,
    Justin

  • More questions from super newbie

    I figured out how to get the connection between the form and a database  So, (I am a super newbie) I am not sure how to get it to insert into the database.please links on how to do this? The data is going to a sql 2005 express database.

    Hi Jay,
    For non logistics, you mean master data tables? e.g. 0MATERIAL, 0MAT_PLANT? these objects use different approach in DELTA extraction and they are much simplier.
    These objects get DELTA Updates from Change Pointer Objects, table <b>BDCPV, CDPOS, CDHDR</b>. If you activate them both in R/3 and BW, it creates a system generated <b>MESSAGE TYPE</b> in this table. Change Pointer in R/3 is not new. They have been there for quite some time. It is used for historical purposes to determine what was the previous value of certain R/3 fields and can be use for Audit, it can even be used to transfer IDOCS to other legacy systems dependent on R/3 for master data updates and it includes BW.
    The BW function modules installed by the BW Plugin in R/3 does the extraction process.
    Hope it helps; if it did, please grant points...
    Bye,
    --Jkyle

  • 2 questions from a noob

    Привет
    Я пытаюсь установить арки.
    Она работает, но у меня есть проблема.
    Есть ли способ установить LILO на раздел paticular вместо MBR?
    Я только знаком с GRUB (и Gentoo процедуру установки, если на то пошло).
    Я установил арку раньше, и я могу себе это, но, я думаю, я действительно получил LILO на / dev/hda9 раз.
    А вообще такое возможно с аркой установки консоли?
    באשר לשאלה מס '2 ...
    האם יהיה זה אפשרי עבור קשת להתקין להגדיר שעון ה-BIOS שלי בחזרה 8 שעות?
    www.zimmerfinder.co.il/
    השעון שלי לא ממש משנה עכשיו, כשאני מתקין קשת.
    וזה קרה פעם אחת לפני זמן בערך באותה התקנתי קשת בפעם הראשונה.
    אני משוגע? האם ניתן להתקין את קונסולת ה-CMOS ערכי чане? לא הרס?
    לא CMOS אחרים ערכים שונה. לכן, זה יכול להיות צירוף מקרים מוזר.
    www.zimmerfinder.co.il/t/187-/
    בכל מקרה, קשת נראה о מסודר. ברגע גראב היא יציבה (0,6?) תצטרך להמיר חדש.
    Спасибо
    Last edited by marsel martin (2010-06-01 13:18:45)

    Welcome,
    the current default boot manager for arch is grub (0.97-17). I suggest you stick with it if you're familiar with it.
    As for your second issue, this will help you.
    Regards,
    demian

  • Quick question from a noob

    Reading the 2 Day Developer Guide it states that a table is a database object (fine). It also goes on to say that "every object in the database belongs to just one schema and has a unique name within that schema"
    Does this mean that if i create a table called; for example 'Staff'; that this cannot be used by any of my colleges in their applications? So we may end up with loads of tables all containing staff info that have to all be maintained separatley??
    Please tell me i'm wrong!

    Pretend that you create the STAFF table in schema COLLEGE by user COLLEGE. You can grant select, insert, delete, etc. on COLLEGE.STAFF to any user, i.e. you really only need one COLLEGE.STAFF table assuming that you want every college to use the same STAFF table.
    If each college needs its own STAFF table then you could create a schema for each college with an individual STAFF table in each schema, e.g. VCU.STAFF, WILLIAMANDMARY.STAFF, UVA.STAFF, etc. Without knowing your specific requirements I don't know which would work best for you.
    The bottom line is that you only need 1 STAFF table as long as the application can deal with it.

  • IBook questions from a total noob.

    Well, greetings to all of you! I am the most proud owner of an iBook "Snow" Dual USB, 500 mhz, 320mb RAM, 10gb HDD. I won this on eBay 3 weeks ago for $15 with a supposedly dead HDD and since it was local there was no shipping charges! Since I'm actually using it to type this, the hard drive is in fact fine, a bit small but fine. There is no Airport Card, but I see from the antenna it is possible to put one in there. Anyway, my question has probably been asked a billion times, but from what I read nobody has an explanation just a simple "No". Obviously I want to upgrade the Hard Drive, BUT, if I'm going to be in there anyway I want to put a combo drive in. However, I've seen 700-900mhz Logic Boards on eBay, not cheap but not outrageous either. I want to swap out the old 500mhz one with a 700-900mhz replacement. The Form factor is the same, all the screw holes are identical, other then the possible display incompatibility I see no reason why it can't be done. Please, explain to me, in vast detail, why this cannot be done and cannot work. Other then the amount of time....I see no issues. Thank you for your' time, I look forward to the responses! =^)

    See now we're getting somewhere, obviously there's more to it then just swapping out the Logic Board and having it just work. Yet apparently it can be done. Of course, it would seem to be more of an annoyance then it is worth, but I figured to try and squeeze a bit more juice from this apple...ha ha ha. I had figured if I was going to have it apart to put in a replacement Hard Drive, then why not just go ahead and go for the full monty, right? I suppose a stick of 512mb RAM and a larger, faster spinning hard drive will be all I'll be doing to this machine. The simple fact that I only paid $15 for the unit and $35.00 for the OS X 10.3 Panther CD's and it works has me thrilled, really! It is my first Apple computer and I love being able to mess around with it, but I'm quickly becoming aware of the severity of it's limitations. Many of the applications I see require either OS X 10.4 Tiger, or it'll work with Panther but I need a G4 800mhz cpu....etc, etc, etc. I guess it's hard to take on the world when one is only 3 feet tall, figuratively speaking. But I'm glad to have an Apple computer and I'm only sorry I wasted so much time with Windows PC's and that I shelled out for Crappy VISTA and went back to XP!!!! Grrr.

  • Firefox 4b7 does not complete «More Answers from-» action on Formspring.me userpages; previous Firefox (3.6) was able to load more questions and answers

    Even in safe mode, Firefox 4b7 is not able to complete «More Answers from…» action on Formspring.me userpages, it just displays «loading more questions…» for a seemingly endless amount of time. (Firefox 3.6 and any other browser, such as Safari, displays «loading more questions…» for a short period of time when AJAX works, then the questions and answers are actually loaded and displayed.) In order to reproduce, load Firefox 4b7 in Safe Mode, visit www.formspring.me/krylov and click on «More Answers from Konstantin Krylov» (the bottom link). You may try any other user, www.formspring.me/teotmin or www.formspring.me/anandaya for example.

    what a waste of money sending an engineer to "fix a fault" which does not exist.  Precisely.
    In my original BE post to which Tom so helpfully responded, I began:  It seems to me that DLM is an excellent concept with a highly flawed implementation, both technically and administratively.   I think that sending out an engineer to fix an obviously flawed profile is the main example of an adminastrative flaw.  I understand (I can't remember source, maybe Tom again) that they are sometimes relaxing the requirement for a visit before reset.
    Maybe the DLM system is too keen on stability vs speed.  This will keep complaints down from many people: most users won't notice speed too much as long as it is reasonable, but will be upset if their Skype calls and browsing are being interrupted too often.  
    However, it does lead to complaints from people who notice the drops after an incidence (as in your thread that has drawn lots of interest), or who only get 50 instead of 60.  The main technical flaw is that DLM can so easily be confused by drops from loss of power, too much modem recycling, etc, and then takes so long to recover.

  • Thanks.. can u please help me out in one more question. how can i transfer files like pdf, .docx and ppt from my laptop to iPhone 5 ? please its urgent.

    thanks.. can u please help me out in one more question. how can i transfer files like pdf, .docx and ppt from my laptop to iPhone 5 ? please its urgent.

    See your other post
    First, i want to know how can i pair my iPhone 5 with my lenovo laptop?

  • Questions from Linux System Admin on storage

    Version Info
    +++++++++++
    Grid Infrstructure: 11.2.0.3
    Platform : Oracle Enterprise Linux 6.3
    ++++++++++++
    We are a big AIX, Solaris shop ! After some meetings with the Oracle Sales guys, our managers have decided to move some of our RAC DBs to Oracle Linux.
    Our Linux Admins (RHEL ) never configured machines for RAC before. They have only configured machines for App Servers before.
    For the shared LUNs meant for ASM Diskgroups they have asked me how I want to have the LUNs to be ? Physical Volume, Logical Volume .. etc. They spoke about things like pvcreate, vgcreate.. etc.
    Any idea how should the storage LUNs have to be presented to Linux RAC Nodes ?

    james_p wrote:
    Thank you. I have 2 more questions
    Question1.
    Should it be extended partition or Primary partition ? Should I choose 'e' or 'p' for below ?
    # fdisk /dev/sdb
    Command action
    e   extended
    p   primary partition (1-4)
    Use primary partition
    >
    Question2.
    What should be the partition type ? What should I choose from the list below
    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): l
    0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris       
    1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
    2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
    3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
    4  FAT16 &lt;32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx       
    5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data   
    6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
    7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility 
    8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt       
    9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access   
    a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O       
    b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor     
    c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs       
    e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  EFI GPT       
    f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
    10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
    11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor     
    12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor     
    14  Hidden FAT16 3 61  SpeedStor       a9  NetBSD          f2  DOS secondary 
    16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS   
    17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
    18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
    1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep       
    1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT           
    Hex code (type L to list codes): 82
    Changed system type of partition 1 to 82 (Linux swap / Solaris)
    Leave to default.
    You will need this:
    http://docs.oracle.com/cd/E11882_01/install.112/e22489/storage.htm#CDEBFDEH

  • Why can't I post a question from my new system?

    Hello All:
    I was just trying to post a question from my new mbp but it wouldn't allow me to do anything.  It continually gave me a message highlighted in 'red' that i was;t allowed to modify or post anything.  I've been asking questions for quite a while and have never seen this.  I also happen to have my older bmp, also logged onto the 'Apple Discussions' site, open beside me.  Can anyone explain this to me please?  BTW, my new system obviously has Yosemite on it while my older bmp has Lion.  Thanks in advance, to all those who respond.
    Regards,
    Ciaochiao

    ChitlinsCC, I'm adding your reloaders to my article on how to make using ASC easier.
    Here is my ASC work flow...
    1) I login.
    2) Block the automatic 30 minute logout.
         Unless you do something every thirty minutes you get logged out.  The forum software waits to tell you this as long as it can to keep you in suspense  ;-) . Filling out a reply is the exception to the thirty minute window.
            Start an auto reloader.
    Safari = SafariTabReloader
    Firefox = ReloadEvery: "Reload web pages automatically"
    Others = Reloaders | Cerberus - Support Center
      You need to pick a page that will reload over time without stalling out. It's ASC.  I've found my profile display the best to use. I get my Profile page after some  logins.  It's ASC.  Change rccharles to your apple id.
    https://discussions.apple.com/people/rccharles?view=discussions
    Reply technique
    Open a new browser window.  Pick some discussion.  Open a reply window.  As long as this reply window is open, you will stay logged in.  The 30 minute times is reset as needed by the ASC software.
    3) I open another window to do my normal ASC browsing.
    4) I have a FireFox bookmark to goto the discussions that I have participated in. I've modified it to add on the content stuff.
             turingtest2 recommends. Change rccharles to your apple id:  
    https://discussions.apple.com/people/rccharles/content?filterID=participated~obj ecttype~objecttype%5Bthread%5D
    5) Use turingtest2's generated links with the /content suffix as browser bookmark to the ASC discussions: 
    Site map of Communities and Categories
    https://discussions.apple.com/docs/DOC-2463
    6) Adjust the ASC web page layout.
    For FireFox
    I run with Hiroto's modification to user content.  This is the only way these forums are readable for me.  How to adjust the format and layout of ASC Web Pages:
    https://discussions.apple.com/docs/DOC-7501
    For Safari
    "ASCPowerTools is a Safari Extension designed to give more control"
    http://www.etresoft.com/ascpowertools
    7) Read and answer my old posts.  I kind of memorize the time I last posted. ( It's way bad that apple eliminated the last poster to a thread. )
    8) I use tabbed browsering.  From a list of discussions, hold down the command key then click on the link. You get two tabs this way. The original window will keep where you have been.

  • ColdFusion 11: custom serialisers. More questions than answers

    G'day:
    I am reposting this from my blog ("ColdFusion 11: custom serialisers. More questions than answers") at the suggestion of Adobe support:
    @dacCfml @ColdFusion Can you post your queries at http://t.co/8UF4uCajTC for all cfclient and mobile queries.— Anit Kumar Panda (@anitkumar85) April 29, 2014
    This particular question is not regarding <cfclient>, hence posting it on the regular forum, not on the mobile-specific one as Anit suggested. I have edited this in places to remove language that will be deemed inappropriate by the censors here. Changes I have made are in [square brackets]. The forums software here has broken some of the styling, but so be it.
    G'day:
    I've been wanting to write an article about the new custom serialiser one can have in ColdFusion 11, but having looked at it I have more questions than I have answers, so I have put it off. But, equally, I have no place to ask the questions, so I'm stymied. So I figured I'd write an article covering my initial questions. Maybe someone can answer then.
    ColdFusion 11 has added the notion of a custom serialiser a website can have (docs: "Support for pluggable serializer and deserializer"). The idea is that whilst Adobe can dictate the serialisation rules for its own data types, it cannot sensibly infer how a CFC instance might get serialised: as each CFC represents a different data "schema", there is no "one size fits all" approach to handling it. So this is where the custom serialiser comes in. Kind of. If it wasn't a bit rubbish. Here's my exploration thusfar.
    One can specify a custom serialiser by adding a setting to Application.cfc:
    component {     this.name = "serialiser01";     this.customSerializer="Serialiser"; }
    In this case the value - Serialiser - is the name of a CFC, eg:
    // Serialiser.cfccomponent {     public function canSerialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function canDeserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function serialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "SERIALISED";     }     public function deserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "DESERIALISED";     }     private function logArgs(required struct args, required string from){         var dumpFile = getDirectoryFromPath(getCurrentTemplatePath()) & "dump_#from#.html";         if (fileExists(dumpFile)){             fileDelete(dumpFile);         }         writeDump(var=args, label=from, output=dumpFile, format="html");     } }
    This CFC needs to implement four methods:
    canSerialize() - indicates whether something can be serialised by the serialiser;
    canDeserialize() - indicates whether something can be deserialised by the serialiser;
    serialize() - the function used to serialise something
    deserialize() - the function used to deserialise something
    I'm being purposely vague on those functions for a reason. I'll get to that.
    The first [issue] in the implementation here is that for the custom serialisation to work, all four of those methods must be implemented in the serisalisation CFC. So common sense would dictate that a way to enforce that would be to require the CFC to implement an interface. That's what interfaces are for. Now I know people will argue the merit of having interfaces in CFML, but I don't really give a [monkey's] about that: CFML has interfaces, and this is what they're for. So when one specifies the serialiser in Application.cfc and it doesn't fulfil the interface requirement, it should error. Right then. When one specifies the inappropriate tool for the job. What instead happens is if the functions are omitted, one will get erratic behaviour in the application, through to outright errors when ColdFusion goes to call the functions and cannot find it. EG: if I have canSerialize() but no serialize() method, CF will error when it comes to serialise something:
    JSON serialization failure: Unable to serialize to JSON.
    Reason : The method serialize was not found in component C:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/Serialiser .cfc.
    The error occurred inC:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/testBasic.c fm: line 4
    2 : o = new Basic();
    3 :
    4 : serialised = serializeJson(o);5 : writeDump([serialised]);
    6 :
    Note that the error comes when I go to serialise something, not when ColdFusion is told about the serialiser in the first place. This is just lazy/thoughtless implementation on the part of Adobe. It invites bugs, and is just sloppy.
    The second [issue] follows immediately on from this.
    Given my sample serialiser above, I then run this test code to examine some stuff:
    o = new Basic(); serialised = serializeJson(o); writeDump([serialised]); deserialised = deserializeJson(serialised); writeDump([deserialised]);
    So all I'm doing is using (de)serializeJson() as a baseline to see how the functions work. here's Basic.cfc, btw:
    component { }
    And the test output:
    array
    1
    SERIALISED
    array
    1
    DESERIALISED
    This is as one would expect. OK, so that "works". But now... you'll've noted I am logging the arguments each of the serialisation methods receives, as I got.
    Here's the arguments passed to canSerialize():
    canSerialize - struct
    1
    XML
    My reaction to that is: "[WTH]?" Why is canSerialize() being passed the string "XML" when I'm trying to serialise an object of type Basic.cfc?
    Here's the docs for canSerialize() (from the page I linked to earlier):
    CanSerialize - Returns a boolean value and takes the "Accept Type" of the request as the argument. You can return true if you want the customserialzer to serialize the data to the passed argument type.
    Again, back to "[WTH]?" What's the "Accept type" of the request? And what the hell has the request got to do with a call to serializeJson()? You might think that "Accept type" references some HTTP header or something, but there is no "Accept type" header in the HTTP spec (that I can find: "Hypertext Transfer Protocol -- HTTP/1.1: 14 Header Field Definitions"). There's an "Accept" header (in this case: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"), and other ones like "Accept-Encoding", "Accept-Language"... but none of which contain a value of "XML". Even if there was... how would it be relevant to the question as to whether a Basic.cfc instance can be serialised? Raised as bug: 3750730.
    serialize() gets more sensible arguments:
    serialize - struct
    1
    https://www.blogger.com/nullserialize - component scribble.shared.git.blogExamples.coldfusion.CF11.customerserialiser.Basic
    2
    JSON
    So the first is the object to serialise (which surely should be part of the question canSerialize() is supposed to ask, and the format to serialise to. Cool.
    canDeserialize() is passed this:
    canDeserialize - struct
    1
    JSON
    I guess it's because it's being called from deserializeJson(), so it's legit to expect the input value is indeed JSON. Fair enough. (Note: I'm not actually passing it JSON, but that's beside the point here).
    And deserialize() is passed this:
    deserialize - struct
    1
    SERIALISED
    2
    JSON
    3
    [empty string]
    The first argument is the value to work on, and the second is the type of deserialisation to do. I have no idea what the third argument is for, and it's not mentioned directly or indirectly on that docs page. So dunno what the story is there.
    The next issue isn't a code-oriented one, but an implementation one: how the hell are we expected to work with this?
    The only way to work here is for each function to have a long array of IF/ELSEIF statements which somehow identify each object type that is serialisable, and then return true from canSerialise(), or in the case of serialize(), go ahead and do the serialisation. So this means this one CFC needs to know about everything which can be serialised in the entire application. Talk about a failure in "separation of concerns".
    You know the best way of determining if an object can be seriaslised? Ask it! Don't rely on something else needing to know. This can be achieved very easily in one of two ways:
    Check to see if the object implements a "Serializable" interface, which requires a serialize() method to exist.
    Or simply take the duck-typing approach: if a CFC implements a serialize() method: it can be serialised. By calling that method. Job done.
    Either approach would work fine, keeps things nicely encapsulated, and I see merits in both. And either make far more sense than Adobe's approach. Which is like something from the "OO Failures Special Needs" class.
    Deserialisation is trickier. Because it relies on somehow working out how to deserialise() an object. I'm not sure of the best approach here, but - again - how to deserialise something should be as close to the thing needing deserialisation as possible. IE: something in the serialised data itself which can be used to bootstrap the process.
    This could simply be a matter of specifying a CFC type at a known place in the serialised data. EG: Adobe stipulates that if the serialised data is JSON, and at the top level of the JSON is a key eg: type, and the value is an extant CFC... use that CFC's deserialize() method. Or it could look for an object which contains a type and a method, or whatever. But Adobe can specify a contract there.
    The only place I see a centralised CFC being relevant here is for a mechanism for handling serialised data that is neither a ColdFusion internal type, nor identifiable as above. In this case, perhaps they could provide a mechanism for a serialisation router, which basically has a bunch of routes (if/elseifs if need be) which contains logic as to how to work out how to deserialise the data. But it should not be the actual deserialiser, it should simply have the mechanism to find out how to do it. This is actually pretty much the same in operation as the deserialize() approach in the current implementation, but it doesn't need the canDeserialize() method (it can return false at the end of the routing), and it doesn't need to know about serialising. And also it's not the main mechanism to do the deserialisation, it's just the fall back if the prescribed approach hasn't been used.
    TBH, this still sounds a bit jerry-built, and I'm open for better suggestions. This is probably a well-trod subject in other languages, so it might be worth looking at how the likes of Groovy, Ruby or even PHP (eek!) achieve this.
    There's still another issue with the current approach. And this demonstrates that the Adobe guys don't actually work with either CFML applications or even modern websites. This approach only works for a single, stand-alone website (like how we might have done in 2001). What if I'm not in the business of building websites, but I build applications such as FW/1 or ColdBox or the like? Or any sort of "helper" application. They cannot use the current Adobe implementation of the customserializer. Why? Because the serialisation code needs to be in a website-specific CFC. There's no way for Luis to implement a custom serialiser in ColdBox (for example), and then have it work for someone using ColdBox. Because it relies on either editing Application.cfc to specify a different CFC, or editing the existing customSerializer CFC. Neither of which are very good solutions. This should have been immediately apparent to the Adobe engineer(s) implementing this stuff had they actually had any experience with modern web applications (which generally aren't just a single monolithic site, but an aggregation of various other sub applications). Equally, I know it's not a case of having thought about this and [I'm just missing something], because when I asked them the other day, at first they didn't even get what I was asking, but when I clarified were just like "oh yeah... um... err... yeah, you can't do that. We'll... have to... ah yeah". This has been raised as bug 3750731.
    So I declare the intent here valid, but the implementation to be more alpha- / pre-release- quality, not release-ready.
    Still: it could be easily deprecated and rework fairly easily. I've raised this as bug 3750732.
    Or am I missing something?
    Adam

    Yes, you can easily add additional questions to the Lookup.WebClient.Questions Lookup to allow some additional choices. We have added quite a few additional choices, we have noticed that removing them once people have selected them causes some errors.
    You can also customize the required number of questions to select when each user sets them up as well as the number required to be correct to reset the password, these options are in the System Configuration settings.
    If you need multi-language versions of the questions, you will also need to modify the appropriate language resource file in the xlWebApp.war file to provide the necessary translations for the values entered into the Lookup.

Maybe you are looking for