Search Results

Search found 21307 results on 853 pages for 'image capture'.

Page 696/853 | < Previous Page | 692 693 694 695 696 697 698 699 700 701 702 703  | Next Page >

  • How to add classes for styling to Drupal when using menu_block?

    - by VoY
    I'm using the menu_block module in Drupal for my menus. This works very well, but I want my menu items styled as an image menu. This cannot be done nicely with the default settings - the menu items look something like this: <li class="leaf first menu-mlid-199"><a href="/this/is/some/nice/url" title="Homepage">Homepage</a></li> I'm guessing I could used the menu-mlid-199 class to get the styling I want, because it's a unique id of each menu item, but that seems rather ugly to me. Is there any other way to add reasonably named classes to my menu items, e.g. generate them from the page title or url alias? Even just a sequence would seem nicer - like menu-item-1 and so on.

    Read the article

  • calling facebox in a google maps balloon

    - by XGreen
    Hi Guys, I have a gmap balloon. var marker = createMarker(point, '<div style="width:240px" id="mapsball"><h2>Splash of London</h2><img src="_assets/images/themes/shop.jpg" id="mapThumb" width="100" align="right" /><p>110-112 Hoxton Street</p><p>London</p><p>N1 6SH</p><\/div>'); map.addOverlay(marker, icon); and a facebox attached to the click event of the image ('#mapsball') which opens it in a facebox $(function() { $("body").delegate("#mapThumb", "click", function(){ jQuery.facebox('<img src="_assets/images/themes/shop.jpg" align="right"/>'); }); }); this works fine in ff and safari and chrome. but doesn't fire in ie. I don't get a js error in ie so I am assuming it just doesn't get binded. any help would be greatly appreciated.

    Read the article

  • NSScrollView jumping to bottom on scroll

    - by Nick Locking
    I have an NSScrollView containing an NSImageView, which resizes based on various factors. When it resizes I have generally changed the image, so I scroll the NSScrollView to the top. This works fine. However, when I start to scroll the NSScrollView again, it moves a few pixels and then (most of the time) jumps to the bottom of the scroll. After it jumps once, it works as normal until I move the scroller to the top again. This is driving me insane. All I'm really doing is this: [_imageView setImage: anNSImage]; NSRect frame; NSSize imageSize = [anNSImage] size]; frame.size = imageSize; frame.origin = NSZeroPoint; [_imageView setFrame: frame]; [[_mainScrollview contentView] scrollToPoint: NSMakePoint(0, [_imageView frame].size.height - [_mainScrollview frame].size.height)];

    Read the article

  • Masks and transparency

    - by Henrik
    Hi, I'm fairly new to Shoes and ran into two problems. First I want to set a mask using a partially transparent png, like this: mask do image "images/stencilMask.png" end Is this possible somehow or can only vector shapes be used? Apart from that, I noticed a small bug(?) when trying to set a transparent color as a stroke on any kind of text, like this: title "Hello", :stroke => rgb(1.0, 0.0, 0.0, 0.5) The transparency simply isn't applied. Am I doing anything wrong, or is this actually a bug? Cheers and thanks for all answers

    Read the article

  • file_column not creating files, just empty tmp directory

    - by Yanaek
    Up to the end of December 2009 everything worked fine, so i assume that after some upgrades on servers (Ubuntu 8.10 and second Ubuntu 9.10) something stopped working. Model: class Product < ActiveRecord::Base belongs_to :category file_column :thumbnail, :magick = { :geometry = "150x100" } there is of course table 'products' in database, and it has column 'thumbnail' what's interesting that File actually is uploaded to server, it goes to the /tmp directory under RackMultipartXXXX-0 name, and it is unmodified image. The problem is, that then this file is not moved to 'tmp' dir under RAILS_ROOT/public/product/ nor the 'XX' (where xx means ID of a product) under public/product also. i don't know what to do, i spend few HOURS trying different versions of file_column, also trying to make new, test rails application only from scaffold, but then, in this new application problem was the same

    Read the article

  • mootools slideshow2

    - by ioannis
    hello everyone. i am using slideshow2 by Aeron Glemann in a website.Does in generate the thumbnails or do i have to provide them?the images iam showing are coming from a cloud, and are passed to the slideshow in an array.the thumbs exist in the cloud. how can i pass them in the array if the show cannot create them? i have used the replace parameter with regex but it shows as thumbnails the full image and nothing happens when i alter the css properties for the thumbnails. the images are displayed. here is the line for the show creation: var myShow = new Slideshow('show', eval(res.value), { controller: true, height: 350,overlap: false, resize: false, hu: '',replace:[/^\S+.(gif|jpg|jpeg|png)$/,'t$1'],thumbnails: true, width: 600}); the value object contains the images from the cloud in format shown below: ['xx.jpg','yy.png',....] thank you very much for your time.

    Read the article

  • Flash overlay snagging on underlying divs

    - by hfidgen
    Flash overlay snags on underlying divs. What is the solution? I'm using Shadowbox to overlay a Flash file on my page, but the movement within the Flash file causes it to break or "shear" where the movie comes across the divs in the HTML hidden below. The screenshot shows it far better than I could explain ;) If you move the mouse, or tap the keyboard to "focus" the screen back on the Flash it all works seamlessly. Interestingly this seems worse in Firefox than the other browsers. Flash error image

    Read the article

  • 3 column sticky footer

    - by blackessej
    html, body, #box { padding:0px; margin:0px; height:100%; min-height:100%; } body { background-image:url(images/footerbg.png); background-repeat:repeat-x repeat-y scroll; font-size:12px; font-family:Georgia; color:#564b47; } p, h1 { margin:0px 10px 10px 10px; } h1 { font-size:14px; padding-top:10px; text-transform:uppercase; color:#564b47; background-color:transparent; } a { color:#ff66cc; font-size:11px; background-color:transparent; text-decoration:none; } pre { color:#564b47; font-size:11px; background-color:transparent; } #box { position:relative; width:750px; margin:0 auto; text-align:left; height:auto!important; } #shadow { background:url("images/shadow.png") repeat-y scroll 0 0 transparent; width:760px; margin:auto; padding:0px; text-align:left; height:100%; z-index:0; margin-bottom:-40px; } #left { width:175px; float:left; background-color:#ff99cc; height:auto!important; height:100%; min-height:100%; text-align:left; } #content { width:400px; float:left; overflow:auto; background-color:#fff; height:auto!important; } #right { width:175px; float:right; background-color:#ff99cc; height:auto!important; height:100%; min-height:100%; text-align:right; } #head { background-image:url(images/banner.png); background-repeat:no-repeat; background-color:#000; height:125px; text-align:center; margin:auto; } #menu { width:100%; } p a { color:#000; text-decoration:underline; } a { color:#fb0303; text-decoration:none; outline:none; } a:visited { color:#fb0303; } p a:hover { text-decoration:underline!important; } ul#nav { margin:auto; width:100%; } ul#nav li a { display:block; font-size:12px; font-weight:bold; padding:4px; background:#000; } ul#nav li a:hover { background:#000; color:#fff; } li { list-style:none; top:100px; float:left; position:relative; width:110px; text-align:center; } li ul { display:none; position:relative; width:auto; margin-left:6px; border-top:4px dotted #fb0303; } li>ul { top:-102px; left:-40px; } li:hover ul, li.over ul { display:block; } ul#nav li.current a { background:#000; } ul#nav li.current a:hover { background:#000; } #player { width:360px; height:240px; position:absolute; z-index:2; } #head h1 { font-size:11px; text-transform:uppercase; text-align:right; color:#564b47; background-color:#90897a; padding:5px 15px; margin:0px; } #head p { padding:10px; margin:0px; } .footer { position:relative; height:40px; background-color:#444; } I want the three columns to be 100% height so that they go all the way to the footer. Right now, they're only as long as their content. The columns are #left, #right and #content. Pretty new to this stuff. Please feel free to point out sloppy code, redundancy, etc. And thank you.

    Read the article

  • Icon in titledBorder title

    - by Venno
    Hi is it possible to place an icon in the title of a titledBorder for example the following code: import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.TitledBorder; public class TitledExample extends JPanel { public TitledExample() { super(true); this.setLayout(new GridLayout(1, 1, 5, 5)); JLabel label = new JLabel("Titled Border"); label.setHorizontalAlignment(JLabel.CENTER); TitledBorder titled = new TitledBorder("Image here ?? Title"); label.setBorder(titled); add(label); } Thanks , Cheers

    Read the article

  • TextField instance inside a button Layer is null

    - by php html
    I've created an button object in flash. The button contains 2 layers. One is the background image and on top of it is a textField. The textfield is dynamic. I use the button inside a movieclip and I export it in a SWC. The I'm trying to use it in flex. I'm trying to do this: var myComponent:MyComponent = new MyComponent(); myComponent.button01.theTextField.text = "Caption"; I get and instance of the button, but the instance of the textField is null and I'm not able to change the text(but the default text appears onscreen). Does anyone has any idea what is wrong? Here is the button timeline(Layer 2 contains the textfield, and the textfield instance is named theTextField):

    Read the article

  • How to handle localization in javascript files?

    - by Arnis L.
    I want javascript to be separated from views. Got requirement to implement localization for simple image button generated by JS: <img src="..." onclick="..." title="Close" /> What's the best technique to localize title of it? P.s. Found a solution by Ayende. This is the right direction. Edit: I got Localization helper class which provides Controller.Resource('foo') extension method. Thinking about to extend it (helper) so it could return all JavaScript resources (from "ClientSideResources" subfolder in App_LocalResources) for specified controller by it's name. Then - call it in BaseController, add it to ViewData and render it in Layout. Would that be a good idea?

    Read the article

  • How to properly use Gearman with my PHP application?

    - by luckytaxi
    For now I just want to use Gearman for background processing. For example, I need to email a recipient that they have a private message waiting for them once the sender submits their message into the DB. I assume I can run the worker/client and server on my primary server but I have no problems offloading some of the tasks to a different web server. Anyways, my question is how do I handle multiple "functions?" Let's say I need a job that handles the email portion and a job to handle image manipulation. Can I have multiple functions in the worker? I've followed a couple of examples I found online but each example only shows one function being initialized. Do I have to start up multiple "workers" to handle multiple functions?

    Read the article

  • IPhone XCode programming: view called from a navigation view doesn't set its IBOutlet attributes

    - by Antonio Murgia
    I created a view Called ProgrammaView that appears when a row of a table is clicked. This view has a UILabel, a UIImageView and a UITextView. Now. ProgrammaView's Outlets have to be changed by the parameter passed to a method of the view called iniz. in this image there is first the ProgrammaView.h and then the method iniz. The problem is that the label and other stuff doesn't change! I checked 3 million times that everything between the xib file and the controller is linked. The trick to call iniz in the other viewcontrollers works well in other part of the program so i think is not that the problem. Thank you in advance!

    Read the article

  • JNI unsigned char to byte array

    - by Jeff Storey
    I'm working with a C++ library that stores image byte data in an array of unsigned characters. My jni function returns a jByteArray (which then gets converted to a BufferedImage on the java side), but I'm not sure how to fill the jByteArray from the unsigned character array (if it is possible). Can anyone provide a snippet for this last part to basically do this: // size is the size of the unsigned char array const int size = 100; unsigned char* buf = new unsigned char[size]; // buf gets passed to another library here to be populated jbyteArray bArray = env->NewByteArray(size); // now how do I get the data from buf to bArray? Thanks, Jeff

    Read the article

  • Alignment of Hebrew Vowel points in Android

    - by Aharon Manne
    I want to display Hebrew text with vowel points (nikkud) using the Canvas.drawText interface. The vowel points come out misaligned, as in the following image taken using a Motorola Defy+ device: The hiriq is between the resh and the yod, the holam between the vav and nun. I have added the rtl code (\u200F) to the string at both ends, no joy. I know that there are applications that have solved this problem, such as the Smart Siddur. Is there a difference between text-based applications and graphics based? I would think that the same engine renders the text in both cases. I suppose I could split up the string and place the vowels separately, but that seems pretty painful and not extensible. TIA for any clues.

    Read the article

  • How to achieve a palette effect on iPhone using OpenGL

    - by Joe
    I'm porting a 2d retro game to iPhone that has the following properties: targets OpenGL ES 1.1 entire screen is filled with tiles (textured triangle strip tile textured using a single 256x256 RGBA texture image the texture is passed to OpenGL once at the start of the game only 4 displayed colours are used one of the displayed colours is black The original game flashed the screen when time starts to run out by toggling the black pixels to white using an indexed palette. What is the best (i.e. most efficient) way to achieve this in OpenGL ES 1.1? My thoughts so far: Generate an alternative texture with white instead of black pixels, and pass to OpenGL when the screen is flashing Render a white poly underneath the background and render the texture with alpha on to display it Try and render a poly on top with some blending that achieves the effect (not sure this is possible) I'm fairly new to OpenGL so I'm not sure what the performance drawbacks of each of these are, or if there's a better way of doing this.

    Read the article

  • Some special characters defined in "ISO-8859-1" can't be shown when encoding with "UTF-8"

    - by Mike.Huang
    I need to get a string from URL request of brower, and then create a text image by requested text. I know the default encoding of the Java net transmission is "ISO-8859-1", it can works normally with all characters what defined in "ISO-8859-1". But when I request a multi-byte Unicode character (e.g. chinese or something like ¤?), then I need to decode it by "UTF-8" from "ISO-8859-1". My codes like: String reslut = new String(requestString.getBytes("ISO-8859-1"), "UTF-8"); Everything is fine, but I found some characters in ISO-8859-1 are not been shown now, which characters are 0x80 - 0xFF(defined in" ISO-8859-1"), i.e. the characters after 0x80 (in "ISO-8859-1") not been shown when converted to "UTF-8" from "ISO-8859-1". Any other method can solve this query?

    Read the article

  • Warbler: Where are my images

    - by user108031
    I'm using Jruby and Warbler to deploy a Jruby on Rails application to a Tomcat server. I can see all of my images when I deploy the server with Webrick: jruby -S server/script. However, when I create a .war file out of the rails directory using jruby -S warble and deploy to Tomcat, none of my images show up on the tomcat server. I noticed that image location has changed to the root of the directory in the war file. It seems that /images/picturename.jpg would be appropriate, but my images are not showing up.

    Read the article

  • Adobe Air upload progress without FileReference

    - by anhtuannd
    I'm deploying a small application with Adobe Air. My application will do batch upload from filepath which stored in a text file. For example, in a text file name "list.txt", there is a string "C:\myfiles\IMG_0001.JPG". Now I want to upload this image file, keep tracking of upload progress :-< I want to use FileReference to get the upload progress, but I don't know how to import from file's path. I also wonder how to use FileReference to upload this file without prompting a dialog for user to select file. Thank you so much :)

    Read the article

  • 3d user experience with HTML5 and Javascript

    - by chako
    I've to build a 3D user experience with HTML5 and any required JS library which provides such functionality. 3D scene consists of a cylindrical pipe and surface. It has 360 degree rotation and can zoom in and out. As user selects a parameter, specific value of that parameter at various depth of pipe in surface should display. I've searched for HTML5 3d and JS libraries and found three.js could help for this.Also found this useful presentation on HTML 3d engine: http://projects.mariusgundersen.net/OnGameStart/#1 .But as this is my first time with HTML5 3d modeling, how should I initiate to build ? What parameters should be considered ? Which tools and libraries would best fit for such requirements ? I would like to create a 3d model using HTML5 and JS 3d engine as shown in the 1st image.

    Read the article

  • Button color in Navigation bar - iPhone

    - by Mladen
    Hi guys, How to set this yellow button to be gray tinted one. I have tried adding image, but no luck Here is the screenshot: Here is my current code: (id)initWithStyle:(UITableViewStyle)style { if (self = [super initWithStyle:style]) { UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Settings", @"") style:UIBarButtonItemStyleDone target:self action:@selector(GoToSettings)]; [addButton setImage:[[UIImage imageNamed:@"bg_table.png"] retain]]; self.navigationItem.rightBarButtonItem = addButton; self.navigationItem.hidesBackButton = TRUE; self.view.backgroundColor = [UIColor blackColor]; } return self; }

    Read the article

  • Dispelling the UIImage imageNamed: FUD

    - by Roger Nolan
    I see a lot of people saying imageNamed is bad but equal numbers of people saying the performance is good - especially when rendering UITableViews. See this SO question for example or this article on iPhoneDeveloperTips.com UIImage's imageNamed method used to leak so it was best avoided but has been fixed in recent releases. I'd like to understand the caching algorithm better in order to make a reasoned decision about where I can trust the system to cache my images and where I need to go the extra mile and do it myself. My current basic understanding is that it's a simple NSMutableDictionary of UIImages referenced by filename. It gets bigger and when memory runs out it gets a lot smaller. For example, does anyone know for sure that the image cache behind imageNamed does not respond to didReceiveMemoryWarning? It seems unlikely that Apple would not do this. If you have any insight into the caching algorithm, please post it here.

    Read the article

  • How to simulate browser file upload with HttpWebRequest

    - by cucicov
    Hi, guys, first of all thanks for your contributions, I've found great responses here. Yet I've ran into a problem I can't figure out and if someone could provide any help, it would be greatly appreciated. I'm developing this application in C# that could upload an image from computer to user photoblog. For this I'm usig pixelpost platform for photoblogs that is written mainly in PHP. I've searched here and on other web pages, but the exmples provided there didn't work for me. Here is what I used in my example: (http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data) and (http://bytes.com/topic/c-sharp/answers/268661-how-upload-file-via-c-code) Once it is ready I will make it available for free on the internet and maybe also create a windows mobile version of it, since I'm a fan of pixelpost. here is the code I've used: string formUrl = "http://localhost/pixelpost/admin/index.php?x=login"; string formParams = string.Format("user={0}&password={1}", "user-String", "password-String"); string cookieHeader; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(formUrl); req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; req.AllowAutoRedirect = false; byte[] bytes = Encoding.ASCII.GetBytes(formParams); req.ContentLength = bytes.Length; using (Stream os = req.GetRequestStream()) { os.Write(bytes, 0, bytes.Length); } HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); cookieHeader = resp.Headers["Set-Cookie"]; string pageSource; using (StreamReader sr = new StreamReader(resp.GetResponseStream())) { pageSource = sr.ReadToEnd(); Console.WriteLine(); } string getUrl = "http://localhost/pixelpost/admin/index.php"; HttpWebRequest getRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl); getRequest.Headers.Add("Cookie", cookieHeader); HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse(); using (StreamReader sr = new StreamReader(getResponse.GetResponseStream())) { pageSource = sr.ReadToEnd(); } // end first part: login to admin panel long length = 0; string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x"); HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create("http://localhost/pixelpost/admin/index.php?x=save"); httpWebRequest2.ContentType = "multipart/form-data; boundary=" + boundary; httpWebRequest2.Method = "POST"; httpWebRequest2.AllowAutoRedirect = false; httpWebRequest2.KeepAlive = false; httpWebRequest2.Credentials = System.Net.CredentialCache.DefaultCredentials; httpWebRequest2.Headers.Add("Cookie", cookieHeader); Stream memStream = new System.IO.MemoryStream(); byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}"; string formitem = string.Format(formdataTemplate, "headline", "image-name"); byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); memStream.Write(formitembytes, 0, formitembytes.Length); memStream.Write(boundarybytes, 0, boundarybytes.Length); string headerTemplate = "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n"; string header = string.Format(headerTemplate, "userfile", "path-to-the-local-file"); byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); memStream.Write(headerbytes, 0, headerbytes.Length); FileStream fileStream = new FileStream("path-to-the-local-file", FileMode.Open, FileAccess.Read); byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } memStream.Write(boundarybytes, 0, boundarybytes.Length); fileStream.Close(); httpWebRequest2.ContentLength = memStream.Length; Stream requestStream = httpWebRequest2.GetRequestStream(); memStream.Position = 0; byte[] tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); requestStream.Write(tempBuffer, 0, tempBuffer.Length); requestStream.Close(); WebResponse webResponse2 = httpWebRequest2.GetResponse(); Stream stream2 = webResponse2.GetResponseStream(); StreamReader reader2 = new StreamReader(stream2); Console.WriteLine(reader2.ReadToEnd()); webResponse2.Close(); httpWebRequest2 = null; webResponse2 = null; and also here is the PHP: (http://dl.dropbox.com/u/3149888/index.php) and (http://dl.dropbox.com/u/3149888/new_image.php) the mandatory fields are headline and userfile so I can't figure out where the mistake is, as the format sent in right. I'm guessing there is something wrong with the octet-stream sent to the form. Maybe it's a stupid mistake I wasn't able to trace, in any case, if you could help me that would mean a lot. thanks,

    Read the article

  • Sending binary data from ASP to .net component

    - by john
    The ASP application allows uploading of image files (jpg, gif, tif). These files are sent to a .net component registered in the GAC of the server. In the component file is encoded using System.Text.Unicode to byte[] array. This encoding is done with some data loss. The byte array has values 253 and 255 in consequetive elements. What could be the problem ? I'm sending the binary data as a string. Please help me... Thanks in advance, John

    Read the article

  • Refactoring Part 1 : Intuitive Investments

    - by Wes McClure
    Fear, it’s what turns maintaining applications into a nightmare.  Technology moves on, teams move on, someone is left to operate the application, what was green is now perceived brown.  Eventually the business will evolve and changes will need to be made.  The approach to those changes often dictates the long term viability of the application.  Fear of change, lack of passion and a lack of interest in understanding the domain often leads to a paranoia to do anything that doesn’t involve duct tape and bailing twine.  Don’t get me wrong, those have a place in the short term viability of a project but they don’t have a place in the long term.  Add to it “us versus them” in regards to the original team and those that maintain it, internal politics and other factors and you have a recipe for disaster.  This results in code that quickly becomes unmanageable.  Even the most clever of designs will eventually become sub optimal and debt will amount that exponentially makes changes difficult.  This is where refactoring comes in, and it’s something I’m very passionate about.  Refactoring is about improving the process whereby we make change, it’s an exponential investment in the process of change. Without it we will incur exponential complexity that halts productivity. Investments, especially in the long term, require intuition and reflection.  How can we tackle new development effectively via evolving the original design and paying off debt that has been incurred? The longer we wait to ask and answer this question, the more it will cost us.  Small requests don’t warrant big changes, but realizing when changes now will pay off in the long term, and especially in the short term, is valuable. I have done my fair share of maintaining applications and continuously refactoring as needed, but recently I’ve begun work on a project that hasn’t had much debt, if any, paid down in years.  This is the first in a series of blog posts to try to capture the process which is largely driven by intuition of smaller refactorings from other projects. Signs that refactoring could help: Testability How can decreasing test time not pay dividends? One of the first things I found was that a very important piece often takes 30+ minutes to test.  I can only imagine how much time this has cost historically, but more importantly the time it might cost in the coming weeks: I estimate at least 10-20 hours per person!  This is simply unacceptable for almost any situation.  As it turns out, about 6 hours of working with this part of the application and I was able to cut the time down to under 30 seconds!  In less than the lost time of one week, I was able to fix the problem for all future weeks! If we can’t test fast then we can’t change fast, nor with confidence. Code is used by end users and it’s also used by developers, consider your own needs in terms of the code base.  Adding logic to enable/disable features during testing can help decouple parts of an application and lead to massive improvements.  What exactly is so wrong about test code in real code?  Often, these become features for operators and sometimes end users.  If you cannot run an integration test within a test runner in your IDE, it’s time to refactor. Readability Are variables named meaningfully via a ubiquitous language? Is the code segmented functionally or behaviorally so as to minimize the complexity of any one area? Are aspects properly segmented to avoid confusion (security, logging, transactions, translations, dependency management etc) Is the code declarative (what) or imperative (how)?  What matters, not how.  LINQ is a great abstraction of the what, not how, of collection manipulation.  The Reactive framework is a great example of the what, not how, of managing streams of data. Are constants abstracted and named, or are they just inline? Do people constantly bitch about the code/design? If the code is hard to understand, it will be hard to change with confidence.  It’s a large undertaking if the original designers didn’t pay much attention to readability and as such will never be done to “completion.”  Make sure not to go over board, instead use this as you change an application, not in lieu of changes (like with testability). Complexity Simplicity will never be achieved, it’s highly subjective.  That said, a lot of code can be significantly simplified, tidy it up as you go.  Refactoring will often converge upon a simplification step after enough time, keep an eye out for this. Understandability In the process of changing code, one often gains a better understanding of it.  Refactoring code is a good way to learn how it works.  However, it’s usually best in combination with other reasons, in effect killing two birds with one stone.  Often this is done when readability is poor, in which case understandability is usually poor as well.  In the large undertaking we are making with this legacy application, we will be replacing it.  Therefore, understanding all of its features is important and this refactoring technique will come in very handy. Unused code How can deleting things not help? This is a freebie in refactoring, it’s very easy to detect with modern tools, especially in statically typed languages.  We have VCS for a reason, if in doubt, delete it out (ok that was cheesy)! If you don’t know where to start when refactoring, this is an excellent starting point! Duplication Do not pray and sacrifice to the anti-duplication gods, there are excellent examples where consolidated code is a horrible idea, usually with divergent domains.  That said, mediocre developers live by copy/paste.  Other times features converge and aren’t combined.  Tools for finding similar code are great in the example of copy/paste problems.  Knowledge of the domain helps identify convergent concepts that often lead to convergent solutions and will give intuition for where to look for conceptual repetition. 80/20 and the Boy Scouts It’s often said that 80% of the time 20% of the application is used most.  These tend to be the parts that are changed.  There are also parts of the code where 80% of the time is spent changing 20% (probably for all the refactoring smells above).  I focus on these areas any time I make a change and follow the philosophy of the Boy Scout in cleaning up more than I messed up.  If I spend 2 hours changing an application, in the 20%, I’ll always spend at least 15 minutes cleaning it or nearby areas. This gives a huge productivity edge on developers that don’t. Ironically after a short period of time the 20% shrinks enough that we don’t have to spend 80% of our time there and can move on to other areas.   Refactoring is highly subjective, never attempt to refactor to completion!  Learn to be comfortable with leaving one part of the application in a better state than others.  It’s an evolution, not a revolution.  These are some simple areas to look into when making changes and can help get one started in the process.  I’ve often found that refactoring is a convergent process towards simplicity that sometimes spans a few hours but often can lead to massive simplifications over the timespan of weeks and months of regular development.

    Read the article

< Previous Page | 692 693 694 695 696 697 698 699 700 701 702 703  | Next Page >