Search Results

Search found 18766 results on 751 pages for 'me again'.

Page 159/751 | < Previous Page | 155 156 157 158 159 160 161 162 163 164 165 166  | Next Page >

  • Caption Competition 8 – Captions Take Manhattan

    - by Simple-Talk Editorial Team
    Update: Congratulations to Dimitrios for winning this week’s caption competition. It’s that time again. We present a bucolic scene, you tell us what you think is happening, a grand time is had by all. Something to do with computing would be nice, but we’re honestly not making it easy on you.   A few suggested bon mots to get you on your way: It certainly wasn’t the best corporate teambuilding day, but it wasn’t the worst either. Prior art is discovered for Google’s driverless car, including a military application. As he opened fire, Nigel thought back to a more innocent time, before anyone made changes in his production database. Fresh air and exercise was more exciting before the current obsession with health and safety. Leave your entries in the comments below- the funniest will win a $50 Amazon voucher.

    Read the article

  • DSL modem problem in 11.10

    - by Misterious
    Earlier I used Windows 7 and the modem used to work absolutely fine. Even when it got disconnected it used to reconnect automatically without any trouble. But then I installed Ubuntu 11.10 on dual-boot and set up the modem connection properly but the modem now disconnects much more frequently (earlier it disconnected once in 5 hours or so and after Ubuntu in 5 minutes!). Also once disconnected, it does not reconnect even when I have checked the "Connect Automatically" button. I have to restart the system to reconnect it. I the clean installed Windows and modem works perfectly fine again. What is the reason for this and how can I solve this? I really want to use Ubuntu but due to this problem I can't.

    Read the article

  • HUD keeps popping up when watching movie in movie player

    - by PNMNS
    When I watch a movie in Movie Player, the HUD pops up every 8 minutes or so. I am not touching the keyboard or the mouse at all. Alt makes the bar go away, and then 7-8 minutes later, it pops up again. This happens when I'm watching fullscreen or not fullscreen. Can you help me fix this? I've been using VLC instead (because it does not have this problem), but I don't like it as much as Movie Player.

    Read the article

  • Low graphics mode on Ubuntu 12.04 with Intel Graphics

    - by NightShadeQueen
    When I boot, my computer just tells me it can't detect graphic card (or something else) settings and it has to use the low graphics mode. Then it gives me four choices, but doesn't let me choose any of them. I can get my computer to boot by going to some sort of terminal mode and then typing sudo gdm. The other graphics manager I have is lightdm. I originally had the nVidia propriety driver, and I've tried bumblebee. Mobile Intel Graphics Media Accelerator 4500M is my graphics card. Is there any way to fix this so I can use lightdm again?

    Read the article

  • What's New In 11.1.2.1 (Talleyrand SP1)

    - by russ.bishop
    This release is primarily about bug fixes and that's what we spent the most time on, but we also addressed a number of other things: 1. Performance improvements We've done a lot of work to improve the performance of page load and execution times. For example, the View Compare page is about half the size it was previously! We've also done a lot of work on the server to improve performance of queries, exports, action scripts, etc. We implemented some finer-grained locking so fewer operations will block other users while they are in progress. We made some optimizations to improve performance when you have a lot of network or database latency as well. Just a few examples: An Import that previously took 8 GB of memory and hours to complete now runs in about 30 minutes and never takes more than 1 GB of RAM. Searching by exact Node Name now completes within 2 seconds even for a hierarchy with millions of nodes. Another search that was taking 30 seconds to run now completes in less than 5 seconds. 2. Upgrade support This release supports automatic upgrade from previous releases, built right into the console. 3. Console Improvements The Console has been reorganized and made easier to use. It is also much more multi-threaded so it responds quicker without freezing up when you save changes or when it needs to get status. 4. Property Namespaces Properties now have a concept called a Namespace. This is tied into the Application Templates to prevent conflicts with duplicate property names. Right now, if you have an AccountType and you pull in the HFM template, it also has AccountType so you end up creating properties with decorations on the name like "Account Type (HFM)". This is no longer necessary. In addition, properties within a namespace must have unique labels but they can be duplicated across namespaces. So in the Property Grid when you click on the HFM category, you just see "AccountType". When you click on MyCategory, you see "AccountType", but they are different properties with different values. Within formulas, the names are still unique (eg: Custom.AccountType vs HFM.AccountType). I'll write more about this one later. 5. Single Sign On DRM now supports Single Sign-On via HSS. For example, if you are using Oracle's OAM as your SSO solution then you configure HSS to use OAM just like you would before. You also configure DRM to use HSS, again just like before. Then you configure OAM to protect the DRM web app, like you would any other website. However once you do those things, users are no longer prompted to enter their username/password. They simply get redirected to OAM if they don't already have a login token, otherwise they pick their application and sail right into DRM. You can also avoid having to pick an application (see the next item) 6. URL-based navigation You can now specify the application you want to log into via the URL. Combined with SSO and your Intranet, it becomes easy to provide links on our intranet portal that take users directly into a specific DRM application. We also support specifying the Version, Hierarchy, and Node. Again, this can be used on your internal portal, but the scenarios get even more interesting when you are using workflow like Oracle BPEL you can automatically generate links within emails that will take users directly to a specific node in the UI. 7. Job status and cancellation A lot of the jobs now report their status and support true cancellation. Action Scripts also report a progress complete percentage since the amount of work is known ahead of time. 8. Action Script Options Action scripts support Option declarations at the top of the file so a script can self-describe (when specified in the file, the corresponding item in the file is ignored). For example: Option|DetectDelimiter Option|UsePropertyNames|true This will tell DRM to automatically detect the delimiter (a pipe symbol in this case) and that all references to properties are by Name, not by Label. Note that when you load a script in the UI, if you use Labels we automatically try to match them up if they are unique. Any duplicates are indicated and you are presented with a choice to pick which property you actually referred to. This is somewhat similar to Version substitution, but tailored for properties. There are other more minor changes and like I said earlier a lot of bug fixes and performance improvements. Hopefully I will get a chance to dig into some of these things in future blog posts.

    Read the article

  • Removal of libsound2 file causes graphics loss

    - by Sajid Ahmad
    I was trying to install skype on ubuntu 12.10 desktop. but it was giving some error related to libsound2:i386 file. to overcome this problem i removed file libsound2 thinking that will install it later. but it removes all the graphics from my system. after removal of the file system started to give error that system is running in low graphics mode. I tried to install libsound2 file again but couldn't. After it i have upgraded the release of my ubuntu version using command do-release-upgrade think that it will install the missing file. But still there are no graphics on the system. I am using Dell Inspiron 15 . Please help me to tell that how can i get the graphics of system back.

    Read the article

  • Copy machine security issues.

    - by David Nudelman
    I am involved on a project to talk to communities about the risks of posting online content is social networks. But this time I was really impressed how far security concerns can go. This video from CBS news talks about security risks related to corporate fax/printers and scanners. It was very clear that when they got the machines they selected the machines by previous owner and they were not random machines, but still, I will never scan from my company machine again. I guess the price of multifunction printers will go up if this video goes viral. Regards, David Nudelman

    Read the article

  • Learn How to Deliver a Superior Customer Experience

    - by steve.diamond
    That's right. Irene Ng, internationally acclaimed Oracle Web TV superstar, is hitting the Web airwaves again with a highly informative webcast! Tune in to hear Irene interview Steve Fearon, Oracle Vice President of CRM, Europe, Middle East and Africa, and explore how traditional CRM is converging with social networking and mobile technologies to deliver superior customer experiences that drive increased revenue and customer advocacy. And for you folks on the U.S. West Coast who REALLY like to get a jump on your day, we've got even better news. This Web TV event is taking place on June 17th at 2:00 a.m. Pacific time. But remember that for our friends in Central Europe, that is 11:00 a.m. CET. But we'll all be able to view a replay of this Webcast for those of us not awake for the original airing. So sign up now.

    Read the article

  • Understanding Backtracking in C++

    - by nikhil
    I have a good basic understanding of the fundamentals of C++, I also have an understanding of how recursion works too. I came across certain problems like the classic eight queens problem and solving a Sudoku with Backtracking. I realize that I'm quite lost when it comes to this, I can't seem to be able to get my mind around the concept of going back in the recursion stack and starting again in order to solve the problem. It seems easy with a pen and paper but when it comes to writing code for this, I'm confused on how to begin attacking these problems. It would be helpful if there were a tutorial aimed at beginners to backtracking or if there were a good book where this was covered. If somebody can shed light on this topic or give me some links to decent references, I'd be really grateful. And yes I do know that it would be easier in functional languages but I'd like to understand the implementation in imperative languages too.

    Read the article

  • Nautilus is really slow

    - by david
    Nautilus used to be lightning fast.Now it's dead slow. I have tried upgrading the video card but that does not seem to be the problem. Also I found that there was a problem with the Dropbox uninstall, finally I replace it with pcmanfm which appears to be much faster but the down side is that I no longer have the gwibber social client and a lot of stuff don't work like they use to. Also I completely removed nautilus and couldn't even login to ubuntu to install again nautilus.How can I remove or repair nautilus, and use pcmanfm instead? I have a dell inspiron 1440 3gb ram / disk 300gb / Additionally, why does nautilus run fast when I run it as root? There are no USB devices attached to my computer. Thanks in advance

    Read the article

  • May I make an installer bundle GPL and payware together?

    - by Volomike
    I have an affiliate marketing client who needs to know if I can program this. Can I do one or both of the following scenarios without violating the GPL license? Scenario A: Make a software installer for a GPL licensed product which includes source, binaries, and license info. The installer also has a checkbox for installing optional software that's payware. (In this case, the payware is free crippleware, but has a registration upsell to provide more features.) The two products will not share libraries or anything else. Scenario B: Same as A, but reversed. So, the installer installs the payware, but there's a checkbox to also install the GPL software. And, again, when you install the GPL software, it comes with binaries, source, and license info.

    Read the article

  • "/etc/apache2/mods-enabled/proxy_html.load: Cannot load /usr/lib/libxml2.so.2 into server" error with Apache mod-proxy

    - by hhh
    The command $ sudo apt-get install libapache2-mod-proxy-html and then $sudo service apache2 restart fires: apache2: Syntax error on line 210 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/proxy_html.load: Cannot load /usr/lib/libxml2.so.2 into server: /usr/lib/libxml2.so.2: cannot open shared object file: No such file or directory Action 'configtest' failed. I am using X220 laptop. Perhaps related thing but ?AMD here. Perhaps some repeating bug in Ubuntu, again. How to fix this? Any patch yet for Ubuntu?

    Read the article

  • Five C# Code Snippets

    A snippet is a small section of text or source code that can be inserted into the code of a program. Snippets provide an easy way to implement commonly used code or functions into a larger section of code. Instead of rewriting the same code over and over again, a programmer can save the code [...] Related posts:How To Obtain Environment Details With .NET 3.5 How-to: Easily Send Emails With .NET Understanding SMTP Status Codes ...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Not able to connect huawei ec1561

    - by Nixon Babu
    I have a huawei ec1561 broadband data card, ISP-MTS India. I am not able to connect internet through it. while connecting it via network manager it says "You are registered with home network" and again "Modem network disconnected" . i think it is detected as a modem but not connecting properly. Any help please? I'm hitting this rock with my head more than a month... when I tried installing the driver that came with the device it finally says "Installing NDIS driver failed". I can post further information if anybody helps

    Read the article

  • restoring grub when Windows 7 MBR lost it

    - by Trent Hall
    My dual boot desktop was running only Windows 7 until it crashed on a windows update. Couldn't get it started again even after all the usual things that might fix it, so I installed Ubuntu 12.04, which has worked very well. unfortunately Carbonite doesn't run on Linux yet, and so I called Microsoft support to see if we could be Windows 7 up and running. Their attempts to get Windows 7 running resulted in writing a new MBR for windows, which failed and also somehow caused the loss of ability to boot into Ubuntu also. How can I get back to Ubuntu? I don't want to lose my settings in Ubuntu. Thanks... Trent

    Read the article

  • No cache and Google AdSense performance

    - by Luca
    I'm developing a page where I need to avoid JavaScript caching by browser. I've added this header: <?php header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); ?> After this, browsers didn't cache more JavaScript sorting out the issue, but in the same time I noticed a drop in Google AdSense RPM. Then I removed the added code and now Google AdSense RPM is reaching again a good value. So, how could I avoid JavaScript caching without meddle with AdSense performance?

    Read the article

  • Error occurred in deployment step 'Activate Features': The field with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite.

    - by Jayant Sharma
    Hi all, In SharePoint 2010, This is rare error, I got when I deploy and activate Feature using VS2010. Deployment works file  but in activation process it get stuct and throws error. Error occurred in deployment step 'Activate Features': The field with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite. When I googled I found very good solution  from Sandeep Snahta Blog. http://snahta.blogspot.hk/2011/10/error-in-activate-features-from-visual.html As suggested in this blog, there is two option to overcome this error; Close VS2010 and restart again. Or Kill VSSHost4 Process either through Task Manager or Via Power Shell Command    stop-process -processname vssphost4 -force   Jayant Sharma

    Read the article

  • Vector Graphics in DirectX

    - by Doug
    I'm curious as to people's thoughts on the best way to use vector graphics in a directX game instead of rasterized textures(think Super Meat Boy). I want to remain resolution independent and don't want to downscale/upscale rasterized graphics. Also the idea would be for all assets to be vector graphics(again think Super Meat Boy). I've looked at Valve's paper "Improved Alpha-Tested Magnification for Vector Textures and Special Effects" and also looked at using shaders http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html. Wondering if anyone has done something similar or an alternate approach. Cheers

    Read the article

  • Online training modules / programs for best software engineering practices?

    - by Steve
    We're taking over a team in a foreign country and the programming standards there aren't up to par with US standards. Folks there lack the formal training and basic understanding of computing concepts of databases, how computers work, what good software engineering practices are. Short of sending these ppl to college again, are there good online courses available that we can enroll them into so that they can upgrade their skills? I am specifically looking for online training courses, but recommendations for books are also welcome. This is language-agnostic.

    Read the article

  • Screen problems

    - by Erick
    I struggled a lot in order to install Ubuntu because of a problem with the video drivers caused by when installing the driver and after turning it on it just appears a black screen, which worked for me was to use the terminal with sudo setpci -s 00:02.0 F4.B=0 and the screen starts, but after rebooting the changes won't remain and I have to run that command again. My question is: How can I make the changes permanent and not to be in need to execute that command always when I shut it down? Original Question in Spanish: Problemas con pantalla He batallado mucho al instalar ubuntu por el problema con el controlador de video ya que al instalarlo al encenderla aparece solo una pantalla negra lo que me funciono fue usar desde consola sudo setpci -s 00:02.0 F4.B=0 enciende la pantalla pero al reiniciarla los cambios no se quedan guardados y tengo que volver a ejecutar ese comando mi pregunta es ¿como hacerle para que los cambios queden igual y no tener que estar ejecutando eso siempre que la apago?

    Read the article

  • Display settings changes automatically with dual monitors in 12.04 and 12.10 AMD

    - by Johan Hovda
    Dual monitors works fine, except that the settings suddenly change. This happens very often, sometimes several times in a few minutes. It is very irritating having to set the settings again each time. Suddenly mirroring is set to on, sometimes the monitor switch places (from left to right and so on), and most of the times the screen resolutions are also changed. I use Gnome Shell. I have tried unity with the same result. I use an open driver. I have earlier used fglrx, with some better results (still happens, but not so often), but can't install it sucsessfully after upgrading to ubuntu 12.10. I know there is a similar question about this issue, but it's not answered. I hope someone can help me.

    Read the article

  • Design Patterns: Should I learn them?

    - by prelic
    So it's kinda weird asking two questions back-to-back, but they aren't very related and I didn't want to combine them, but I'm not spamming questions, I promise! Anyway, I'm a recent college grad, and my education only touched on design patterns...we implemented a few simple ones, touched on the fact that there were more complicated ones, and were instructed to turn to the GoF book if we wanted to learn more. My question is, is it worth learning the patterns in the GoF book? To me, it's always seemed counter-intuitive to try and make a problem fit a classic pattern, but obviously the book, and the patterns, are famous for a reason. Do they show up enough that I should be learning them? Thanks again!

    Read the article

  • How to access shared folders from file editors?

    - by Marchosius
    I am running a xampp server on one of my other computers, and when using the brows functionality from text editors like gedit, bluefish and Eclipse/Aptana studio I can access the shares I made for the sites running on the server. Even when I right click-edit with-application with the the file browser it does not open the file in the editor. How can get this to work without having to copy the file over from the share then edit and then upload again after I am done? Similar issue when trying to upload a file to hosting server direct from the file server I have with filezilla. with this I also need to copy the file over to my pc and then from there upload to the hosting server with filezilla. EDIT: For eclipse I found a build in functionality to do this. (new-remote system connection-Enter the access details) Nothing yet on FileZilla Hope my Question is clear

    Read the article

  • Informed TDD &ndash; Kata &ldquo;To Roman Numerals&rdquo;

    - by Ralf Westphal
    Originally posted on: http://geekswithblogs.net/theArchitectsNapkin/archive/2014/05/28/informed-tdd-ndash-kata-ldquoto-roman-numeralsrdquo.aspxIn a comment on my article on what I call Informed TDD (ITDD) reader gustav asked how this approach would apply to the kata “To Roman Numerals”. And whether ITDD wasn´t a violation of TDD´s principle of leaving out “advanced topics like mocks”. I like to respond with this article to his questions. There´s more to say than fits into a commentary. Mocks and TDD I don´t see in how far TDD is avoiding or opposed to mocks. TDD and mocks are orthogonal. TDD is about pocess, mocks are about structure and costs. Maybe by moving forward in tiny red+green+refactor steps less need arises for mocks. But then… if the functionality you need to implement requires “expensive” resource access you can´t avoid using mocks. Because you don´t want to constantly run all your tests against the real resource. True, in ITDD mocks seem to be in almost inflationary use. That´s not what you usually see in TDD demonstrations. However, there´s a reason for that as I tried to explain. I don´t use mocks as proxies for “expensive” resource. Rather they are stand-ins for functionality not yet implemented. They allow me to get a test green on a high level of abstraction. That way I can move forward in a top-down fashion. But if you think of mocks as “advanced” or if you don´t want to use a tool like JustMock, then you don´t need to use mocks. You just need to stand the sight of red tests for a little longer ;-) Let me show you what I mean by that by doing a kata. ITDD for “To Roman Numerals” gustav asked for the kata “To Roman Numerals”. I won´t explain the requirements again. You can find descriptions and TDD demonstrations all over the internet, like this one from Corey Haines. Now here is, how I would do this kata differently. 1. Analyse A demonstration of TDD should never skip the analysis phase. It should be made explicit. The requirements should be formalized and acceptance test cases should be compiled. “Formalization” in this case to me means describing the API of the required functionality. “[D]esign a program to work with Roman numerals” like written in this “requirement document” is not enough to start software development. Coding should only begin, if the interface between the “system under development” and its context is clear. If this interface is not readily recognizable from the requirements, it has to be developed first. Exploration of interface alternatives might be in order. It might be necessary to show several interface mock-ups to the customer – even if that´s you fellow developer. Designing the interface is a task of it´s own. It should not be mixed with implementing the required functionality behind the interface. Unfortunately, though, this happens quite often in TDD demonstrations. TDD is used to explore the API and implement it at the same time. To me that´s a violation of the Single Responsibility Principle (SRP) which not only should hold for software functional units but also for tasks or activities. In the case of this kata the API fortunately is obvious. Just one function is needed: string ToRoman(int arabic). And it lives in a class ArabicRomanConversions. Now what about acceptance test cases? There are hardly any stated in the kata descriptions. Roman numerals are explained, but no specific test cases from the point of view of a customer. So I just “invent” some acceptance test cases by picking roman numerals from a wikipedia article. They are supposed to be just “typical examples” without special meaning. Given the acceptance test cases I then try to develop an understanding of the problem domain. I´ll spare you that. The domain is trivial and is explain in almost all kata descriptions. How roman numerals are built is not difficult to understand. What´s more difficult, though, might be to find an efficient solution to convert into them automatically. 2. Solve The usual TDD demonstration skips a solution finding phase. Like the interface exploration it´s mixed in with the implementation. But I don´t think this is how it should be done. I even think this is not how it really works for the people demonstrating TDD. They´re simplifying their true software development process because they want to show a streamlined TDD process. I doubt this is helping anybody. Before you code you better have a plan what to code. This does not mean you have to do “Big Design Up-Front”. It just means: Have a clear picture of the logical solution in your head before you start to build a physical solution (code). Evidently such a solution can only be as good as your understanding of the problem. If that´s limited your solution will be limited, too. Fortunately, in the case of this kata your understanding does not need to be limited. Thus the logical solution does not need to be limited or preliminary or tentative. That does not mean you need to know every line of code in advance. It just means you know the rough structure of your implementation beforehand. Because it should mirror the process described by the logical or conceptual solution. Here´s my solution approach: The arabic “encoding” of numbers represents them as an ordered set of powers of 10. Each digit is a factor to multiply a power of ten with. The “encoding” 123 is the short form for a set like this: {1*10^2, 2*10^1, 3*10^0}. And the number is the sum of the set members. The roman “encoding” is different. There is no base (like 10 for arabic numbers), there are just digits of different value, and they have to be written in descending order. The “encoding” XVI is short for [10, 5, 1]. And the number is still the sum of the members of this list. The roman “encoding” thus is simpler than the arabic. Each “digit” can be taken at face value. No multiplication with a base required. But what about IV which looks like a contradiction to the above rule? It is not – if you accept roman “digits” not to be limited to be single characters only. Usually I, V, X, L, C, D, M are viewed as “digits”, and IV, IX etc. are viewed as nuisances preventing a simple solution. All looks different, though, once IV, IX etc. are taken as “digits”. Then MCMLIV is just a sum: M+CM+L+IV which is 1000+900+50+4. Whereas before it would have been understood as M-C+M+L-I+V – which is more difficult because here some “digits” get subtracted. Here´s the list of roman “digits” with their values: {1, I}, {4, IV}, {5, V}, {9, IX}, {10, X}, {40, XL}, {50, L}, {90, XC}, {100, C}, {400, CD}, {500, D}, {900, CM}, {1000, M} Since I take IV, IX etc. as “digits” translating an arabic number becomes trivial. I just need to find the values of the roman “digits” making up the number, e.g. 1954 is made up of 1000, 900, 50, and 4. I call those “digits” factors. If I move from the highest factor (M=1000) to the lowest (I=1) then translation is a two phase process: Find all the factors Translate the factors found Compile the roman representation Translation is just a look-up. Finding, though, needs some calculation: Find the highest remaining factor fitting in the value Remember and subtract it from the value Repeat with remaining value and remaining factors Please note: This is just an algorithm. It´s not code, even though it might be close. Being so close to code in my solution approach is due to the triviality of the problem. In more realistic examples the conceptual solution would be on a higher level of abstraction. With this solution in hand I finally can do what TDD advocates: find and prioritize test cases. As I can see from the small process description above, there are two aspects to test: Test the translation Test the compilation Test finding the factors Testing the translation primarily means to check if the map of factors and digits is comprehensive. That´s simple, even though it might be tedious. Testing the compilation is trivial. Testing factor finding, though, is a tad more complicated. I can think of several steps: First check, if an arabic number equal to a factor is processed correctly (e.g. 1000=M). Then check if an arabic number consisting of two consecutive factors (e.g. 1900=[M,CM]) is processed correctly. Then check, if a number consisting of the same factor twice is processed correctly (e.g. 2000=[M,M]). Finally check, if an arabic number consisting of non-consecutive factors (e.g. 1400=[M,CD]) is processed correctly. I feel I can start an implementation now. If something becomes more complicated than expected I can slow down and repeat this process. 3. Implement First I write a test for the acceptance test cases. It´s red because there´s no implementation even of the API. That´s in conformance with “TDD lore”, I´d say: Next I implement the API: The acceptance test now is formally correct, but still red of course. This will not change even now that I zoom in. Because my goal is not to most quickly satisfy these tests, but to implement my solution in a stepwise manner. That I do by “faking” it: I just “assume” three functions to represent the transformation process of my solution: My hypothesis is that those three functions in conjunction produce correct results on the API-level. I just have to implement them correctly. That´s what I´m trying now – one by one. I start with a simple “detail function”: Translate(). And I start with all the test cases in the obvious equivalence partition: As you can see I dare to test a private method. Yes. That´s a white box test. But as you´ll see it won´t make my tests brittle. It serves a purpose right here and now: it lets me focus on getting one aspect of my solution right. Here´s the implementation to satisfy the test: It´s as simple as possible. Right how TDD wants me to do it: KISS. Now for the second equivalence partition: translating multiple factors. (It´a pattern: if you need to do something repeatedly separate the tests for doing it once and doing it multiple times.) In this partition I just need a single test case, I guess. Stepping up from a single translation to multiple translations is no rocket science: Usually I would have implemented the final code right away. Splitting it in two steps is just for “educational purposes” here. How small your implementation steps are is a matter of your programming competency. Some “see” the final code right away before their mental eye – others need to work their way towards it. Having two tests I find more important. Now for the next low hanging fruit: compilation. It´s even simpler than translation. A single test is enough, I guess. And normally I would not even have bothered to write that one, because the implementation is so simple. I don´t need to test .NET framework functionality. But again: if it serves the educational purpose… Finally the most complicated part of the solution: finding the factors. There are several equivalence partitions. But still I decide to write just a single test, since the structure of the test data is the same for all partitions: Again, I´m faking the implementation first: I focus on just the first test case. No looping yet. Faking lets me stay on a high level of abstraction. I can write down the implementation of the solution without bothering myself with details of how to actually accomplish the feat. That´s left for a drill down with a test of the fake function: There are two main equivalence partitions, I guess: either the first factor is appropriate or some next. The implementation seems easy. Both test cases are green. (Of course this only works on the premise that there´s always a matching factor. Which is the case since the smallest factor is 1.) And the first of the equivalence partitions on the higher level also is satisfied: Great, I can move on. Now for more than a single factor: Interestingly not just one test becomes green now, but all of them. Great! You might say, then I must have done not the simplest thing possible. And I would reply: I don´t care. I did the most obvious thing. But I also find this loop very simple. Even simpler than a recursion of which I had thought briefly during the problem solving phase. And by the way: Also the acceptance tests went green: Mission accomplished. At least functionality wise. Now I´ve to tidy up things a bit. TDD calls for refactoring. Not uch refactoring is needed, because I wrote the code in top-down fashion. I faked it until I made it. I endured red tests on higher levels while lower levels weren´t perfected yet. But this way I saved myself from refactoring tediousness. At the end, though, some refactoring is required. But maybe in a different way than you would expect. That´s why I rather call it “cleanup”. First I remove duplication. There are two places where factors are defined: in Translate() and in Find_factors(). So I factor the map out into a class constant. Which leads to a small conversion in Find_factors(): And now for the big cleanup: I remove all tests of private methods. They are scaffolding tests to me. They only have temporary value. They are brittle. Only acceptance tests need to remain. However, I carry over the single “digit” tests from Translate() to the acceptance test. I find them valuable to keep, since the other acceptance tests only exercise a subset of all roman “digits”. This then is my final test class: And this is the final production code: Test coverage as reported by NCrunch is 100%: Reflexion Is this the smallest possible code base for this kata? Sure not. You´ll find more concise solutions on the internet. But LOC are of relatively little concern – as long as I can understand the code quickly. So called “elegant” code, however, often is not easy to understand. The same goes for KISS code – especially if left unrefactored, as it is often the case. That´s why I progressed from requirements to final code the way I did. I first understood and solved the problem on a conceptual level. Then I implemented it top down according to my design. I also could have implemented it bottom-up, since I knew some bottom of the solution. That´s the leaves of the functional decomposition tree. Where things became fuzzy, since the design did not cover any more details as with Find_factors(), I repeated the process in the small, so to speak: fake some top level, endure red high level tests, while first solving a simpler problem. Using scaffolding tests (to be thrown away at the end) brought two advantages: Encapsulation of the implementation details was not compromised. Naturally private methods could stay private. I did not need to make them internal or public just to be able to test them. I was able to write focused tests for small aspects of the solution. No need to test everything through the solution root, the API. The bottom line thus for me is: Informed TDD produces cleaner code in a systematic way. It conforms to core principles of programming: Single Responsibility Principle and/or Separation of Concerns. Distinct roles in development – being a researcher, being an engineer, being a craftsman – are represented as different phases. First find what, what there is. Then devise a solution. Then code the solution, manifest the solution in code. Writing tests first is a good practice. But it should not be taken dogmatic. And above all it should not be overloaded with purposes. And finally: moving from top to bottom through a design produces refactored code right away. Clean code thus almost is inevitable – and not left to a refactoring step at the end which is skipped often for different reasons.   PS: Yes, I have done this kata several times. But that has only an impact on the time needed for phases 1 and 2. I won´t skip them because of that. And there are no shortcuts during implementation because of that.

    Read the article

  • Multi database link and mix and match email alert

    - by menardmam
    I have a site which is a large database of people that have different knowledge in different domains, such as teaching (maths, french, science etc...) On the site there is a page where you can search people base on different request, such as distance from home, grade, sex. Now, I would like to add a page where people that are looking for mentor will fill a request, and when a tutor in his area of search will match request, a email will be send to this researcher. Because I know for sure, that when in January you look for a math teacher for your 10 year old son, and you find none, you won't go again in February, March... and on and on just to see. Maybe there is one now, you want to be informed when the tutor will get into database automatically (more or less like www.jobboom.com) So the question is, what CMS do I need to be able to do that ? Wordpress, drupal or something custom made?

    Read the article

< Previous Page | 155 156 157 158 159 160 161 162 163 164 165 166  | Next Page >