Jump to content


Staff Alumni
  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by 448191

  1. 448191


    Nitpicking perhaps but I feel strongly about it: it's not. Don't *ever* comment out code, just remove it. I truly despite when devs comment out code. Version control allows you to look at historical versions, clean up your mess behind you and use comments for what they're for: commenting. Bit off-topic but one of my mayor annoyances in reviewing work of others on my codebase. You flush the toilet after taking a dump too, right?
  2. Didn't realize that, I'm Dutch and we say junior/medior/senior. Guess I wrongly assumed all three were borrowed from English. But now that you mention it, I've seen "mid-level" in English text and can't think of an example of "medior" in English texts. Thanks for pointing that out.
  3. 448191


    IMO S2 is by far the best PHP framework right now. Granted it has a learning curve, especially for less experienced developers, but it's well designed (or well "borrowed" from other frameworks like Spring) and much more mature / complete than the alternatives. I didn't like S1 and opted for ZF1, but I like S2 a lot better than ZF2. The standard distribution just contains some stuff to get a sandbox setup quickly: the contents of app_dev.php are just illustrative. As gizmola suggests, just tweak it to your needs. Same goes for the config files that come with it. There's a distinction between an example sandbox setup and library code. Anyway, I highly recommend S2 and you might not want to give up on it before you understand why things are the way they are.
  4. Any form of boilerplate is a PITA. But without a defined interface you can forget about polymorphism. Your client code becomes coupled to some unknown runtime factor. Concretely, how does hour client code know wheter or not it can invoke DataBaseObject::getFoo()? Granted, you could employ a variant of duck-typing by enclosing calls in a try/catch block catching a BadMethodCallException, or add method to DataBaseObject that allows clients to check the existence of a piece of data before it calls a getter, but then you are moving your boilerplate from the class to its clients, doesn't solve anything and the boilerplate in the class actually provides better encapsulation than scattering your application with unneeded error handling or state assertions. Hope that makes sense.
  5. You might be right, although I think you're understating the work involved quite a bit: a bit of a ramble on a forum is nowhere near the same amount of work than writing a couple of test exams, I'm sure you'll agree. In any case, guess I'll conclude that my options are limited to investing my own time to be able to quantify progress, or investing some cash and developer time for the online training. I'll get some more info about the training and try to size the "custom solution" for comparison. Not really satisfied with either option, but don't see any alternatives. Thanks for the input despite me being a bit difficult, appreciate it.
  6. Maybe you could share all classes involved in your architecture. Conceptually there's no such thing as a "master class".
  7. Magic: bad. Proper (SOLID+): good. And yes, that's simplified to a nauseating level. As a sidenote, method names should be commands. Possibly you learned JavaScript first, JS frameworks have a nasty habit of sacrificing semantics in favor of a few key presses. With the exception of more elaborate frameworks such as ExtJS.
  8. 448191


    Well, if your UI is complex enough to get confused about organizing files (which doesn't take much), templating isn't your main concern, probably. Depends on the purpose and potential scope of your application I guess but I would be much more worried about my service layer and domain model. Again, depends on your project but personally I tend to focus on those and have the UI be a logical consequence of that that design (actually IRL there are some other people involved). But that might be skipping a few steps for you, or not, no idea.
  9. 448191


    We use Twig. I've worked with Smarty and plain HTML/PHP in ZF but Twig provides a good balance between flexibility and enforcement of SoC. It is somewhat complex, as is Smarty, but our front-enders are very enthusiastic about it. And based on what little work I've done using it, I already like it better than those two alternatives as well. So on the question whether or not to learn Smarty: don't bother. Some years ago Smarty was a de-facto standard for templating in a professional environment, but unless you expect a lot of exposure to legacy systems I really wouldn't bother.
  10. The huge gap between ZF1 and S2 in the OP is more or less in concord with my own experiences. I wasn't to impressed with S1 but S2 ticks a lot of boxes, performance isn't at the top of our list of priorities but S2 in production mode is as fast as any full featured framework can be. We are migrating from ZF1 to S2 and the interface is noticeably more responsive on the same server. Of course you *could* make ZF equally performant with a good chunk of custom development but SF2 makes it effortless. But I feel that's a valid argument: ZF provides a less restrictive infrastructure, S2 pre-chews more for you but Potencier made performance a key concern from the first lines of code so it's not surprising it's more performant. It does introduce some inflexibilities, but having worked with it for a couple of months now I can honestly say the extensibility provided is sufficient and the infrastructure is so much more mature than the ZF MVC component, there's really no comparison.
  11. While I agree that global functions should not have side effects, ever, "global" is key in this advice. After all, in JavaScript functions are objects, and a constructor or member functions manipulate the state of the object. OO is about state and your can't change state without side effects. Bit of a detour but an important distinction IMO. Side effects good, ignoring encapsulation bad. To put it simply.
  12. I get your confusion, sort of. While I could've been even more explicit, with a bit of applied thought the context should be evident; I thought I was pretty clear on my objectives. I'll try different wording and clarify the concerns involved. I'm pretty sure the junior would not pass without study, and would prefer not to leave the medior hanging. Failing the exam would hurt their morale, I can't afford that: work should be fun for them. Happy workers are productive workers, or something like that I'm the "shit filter" taking all the crap from stakeholders. I digress. Again, what I'm looking for is a way to assert their readiness. That is not the same as improving their readiness, I am confident they will be assertive enough to address that aspect with the resources and guidance that will be provided. I can personally provide support where needed, but I need to be able to determine what specific areas need attention and to what extend. These are limited to specific subjects (based on code reviews I've done personally in the last 6 months), so again, they do not need to start from scratch. That's why I feel the online training is overkill, nonsense, or less politely, "bullocks" (pardon my tendency to use graphic language when I feel strongly about something). But again, code reviews are very time consuming, and the ability to express / communicate progress in concrete figures makes it much more manageable. It's not so much about the cash for the training, but actually more about resource allocation. Spending any significant amount of hours on personal development has to be justifiable, company time is valuable and despite the fact that certification improves a developer's marketability, I refuse to ask them to invest off-hours. So time efficiency is key. And rehashing stuff you already know and apply five days a week feels pretty stupid. If someone would have me do that I would be really, really annoyed, probably I'd feel undervalued for my time being so carelessly allocated. So it's not just about time efficiency but also about providing a positive environment for personal development. Which is just like any other form of development: you build on what you have. Imagine throwing away and having to rewrite a whole codebase every time you learn something new about its possible business value. Throw away all design principles, you'd only need one: when something changes, rewrite Sorry, I digress yet again. TLDR: time is a valuable asset for both the company and the individuals that are part of it, and I'm confident these developers do not need extensive training. Certification is important but secondary to many if not most business concerns, which means the process could take several months. The company sponsors time but I need to be able to monitor progress so a time to completion and the impact on resource planning can be controlled. Those last concerns are why I was looking for the practice exams and I am still looking for a way to measure without having to develop a whole ZCE assessment framework myself. Pfff, lots of context, I refuse to believe one can be unclear on my objectives after reading all of this... Can't make my concerns any clearer than this, honestly, maybe I should develop my own tests, might be less work than making random people understand the concerns in an organisation with strict resource management.. I exaggerate although it might be fun, but then again I don't have enough off-time, nor do expect a mandate to develop something like that in company time (and rightfully so). Anyway, this doesn't solve anything. I think it's curious that with certification being around the time it has, there's no obvious solution to this problem. At this stage I'd probably be content with more in-depth information about the exam. If I had a couple of example questions per subject, I'd figure something out.
  13. I realize it is not that hard. The two uncertified developers in my team are one medior and one junior. I might be comfortable just letting the medior (5+ years experience) take the exam without prep (he might not be, but I might risk that), but there's no way I am going to allow a junior to take the exam unprepared, even if it is fairly easy for developers with a decent numbers of years under their belt: she hasn't.
  14. I got a call from a Zend rep at the office today, who confirmed the practice exams are discontinued (and tried to sell me online training). Figured as much: they probably concluded they were giving away potential revenue, so they axed that service. Sucks though, not sure how to proceed now. I could possibly sell "the horde" on the training but that might prove difficult when I personally feel it's bullocks. I'm not a sales rep after all
  15. Jenkins, and all the tools that come with it / integrate into it, especially phpmd and phpcpd. Can't do without it in any company of a decent size. Also Capistrano, although you can do exactly the same with Bash scripts or Ant/Phing build files, it can be a time saver in setting up your deployment process. And Selenium is essential if you want to approach Continuous Deployment (we use SauceLabs but if you have time and hardware you can create your own testing infrastructure -- Xen is a bitch though). These may not qualify as "personal" development tools, but the OP wasn't specific on that We currently use NetBeans as our IDE but are evaluating PHPStorm, it has some nice features NetBeans lacks and seems to handle the size of our codebase better. Only downside so far is the ad-hoc handling of multiple projects: feels like an afterthought. And although obvious, Git is worth mentioning, mainstream now but I remember having to merge branches writing down revision numbers with SVN. That was pure hell. We also use it to enforce our coding standard using the pre-receive hook. Also, Xdebug and KCacheGrind: essential for identifying bottlenecks and generally good practice to employ before (near) the end of every sprint. Also probably not in the spirit of the OP. Who cares, let me also mention Behat (awesome for helping stakeholders defining more concrete requirements) and Visual Paradigm for UML (eats Sparx for breakfast). JIRA + Greenhopper is pretty much unavoidable, although I sometimes find myself longing for Trac. Can't do without Composer either: we use it to manage dependencies between our own libraries as well (it has some limitations but I will never go back to manual dependency management)... Sorry for the scope change, I just started rambling about the tools I'm most enthusiastic about, I realize they're not average developer's tools.. Maybe someone will pitch in, otherwise I'll be content talking to myself PS: When someone advocates OSX as a development platform the hairs on my body stand straight up I require all my backend developers to develop on Ubuntu (the front-enders work on OSX cause Photoshop doesn't work on Ubuntu but they hardly do any programming). Partly for the principle of it, but mostly because I want them to have affinity the with platform our applications run on. A sandbox on a different server doesn't provide you with that. I'm rambling, sorry about that
  16. No, of course I cover those subjects as well. Actually we have a pretty good setup to get statistics concerning code quality (using Jenkins to aggregate phpmd statistics based on Git users) per developer, and also track personal "velocity" (a SCRUM measure) using JIRA and I evaluate more subjective matters from communication skills (specifically with stakeholders) to assertiveness in team meetings. So this is not the issue. I specifically want to track to their progress towards getting ZCE certified. I reckon they'll manage (which is why I think online courses are overkill), but I would prefer to be able to monitor so I can help them if needed. For "the business" (read: horde of managers), getting all developers ZCE certifified is something of a comfort, even though we all know there are more important measures. Edit: BTW CV, I just saw a an old quote of min in your signature, I crack me up Weird posting here after half a lifetime...
  17. Ahah. I recall paying a few bucks per practice exam before I decided to go through with it, but that was even longer ago. The info on the Zend site is pretty sparse, it doesn't say, which I would take to mean it's not included. The certification FAQ doesn't say either. Guess I'll just wait for a response from Zend. Still interested in alternatives though, some way to monitor progress without having to treat them like children. I don't like being a helicopter parent haha.. Thanks for the input btw
  18. I did find this practice test book, but according to reviews it is full of programming errors, so that seems counter-productive.. http://www.amazon.com/Zend-Certification-Practice-Test-Book/dp/0973589884
  19. Hi all, Been a while. I'm a lead developer and I want to push two of my developers to get the ZCE certificate. The company will of course pay for the certification itself and resources like the study guide, but probably not the Zend online training which I think is overkill anyway: these are professional developers so they don't need to start from scratch (and we can't let them invest that much time, there's cool stuff to be built). When I took the exam myself quite some time ago, I used the online practice exams to check if I was ready, I would like these guys (actually a guy and a girl) to go the same route. But I can't for the life of me find the online exam. Have they been discontinued, are they hidden away somewhere, or am I just being a bit retarded? Thanks, John Edit: I've submitted an inquiry on zend.com, but I am also interested in alternatives. I have periodical progress evaluations with my developers, and I would like to have something a bit more measurable than code reviews (which eat at my time as well). The exams seemed ideal but if they have been discontinued I will have to come up with something else, preferrably with limited effort on my part (not because I'm lazy but because I have more developers and already have a surreal worload). So I'm open to suggestions...
  20. Hey people, I'm struggling with getting my workstation stable again, I could really use some help. See the full thread with the details here: http://ubuntuforums.org/showthread.php?p=11004364 Thank you in advance, John
  21. In addition, I seriously doubt this law will effectively limit usage of tracking cookies. Considering the vague terms, I do not think the multi billion business of behavioural tracking will be limited in any significant degree. It's a typical example of a "electoral motivated law", it looks good to the masses but has no real effect.
  22. Bottom line is this: while this law might it harder to implement services like Google Analytics, it'll mostly be "same diff". Many forms of tracking are already illegal with current privacy laws. Just be glad someone is making an effort to protect your personal privacy. That said, this measure is pretty pointless. On implementation by the owner of a website, the cookie used for "strictly necessary" functionality can easily be used for tracking services as well. There's no technical limitation on using the same cookie for more than one purpose. Not to mention "strictly necessary" is about as a subjective term as they come. Again, pretty pointless.
  23. If you need to authorize downloads, the alternative to storing assets in a database, no-sql or traditional, is using a "sendfile" variant. Apache has the x-sendfile extension, and Lighttpd and Nginx offer similar functionality. Generally I store Document objects with a reference to files outside of the doc root, then allow normal routing (eg. /dowload/:docid). This action will fetch the file spec from the db and add the headers to let x-sendfile feed the file if allowed. x-sendfile: https://tn123.org/mod_xsendfile/
  24. Bullcrap. The same code will run faster compiled using HipHop for PHP than using the Zend Engine, even with an opcode cache. This has nothing to do with the amount of servers and certainly not with the amount of bandwidth available, that is ludicrous misinformation. That's like saying a faster engine in your car will make your car slower on a narrow road. That said, it brings it's own suite of issues and should never be your first option (I think I've made that clear before). But if straight processing power becomes an issue (so after you've eliminated parsing time, optimized database access, and exploited caching to it's practical maximum), whether on a single server or on a cluster, HipHop for PHP *might* allow you to go a step further. I say might because it's not suitable for all applications (there are a lot of limitations, specifically in supported extensions and no 5.3 support - yet) but when it works it allows you to get the maximum out of available hardware, how much or little of it you may have. Granted though, I might have better omitted the option in a thread for noobs.
  25. I will definitely start using it at the first opportunity. I have been working with Doctrine 2 since RC1 and Symfony 2 really makes an effort to employ the same type of practices. I have been waiting for PHP frameworks of this quality for years.
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.