Posts tagged General
Been busy prepping the move for melikedev.com to it’s own vps. I figured it was time to break down and puppetize a lot of redundant work, and getting httpd and nginx puppetized is proving to take longer than I thought. Once the move is complete I will make another post, and start posting some of the dev articles I have in the backlog. Thanks for your patience.
Merry Christmas. Over the Christmas break I will be moving melikedev.com to a VPS, as it seems we have outgrown our shared hosting, host. Page load times have become noticeably slower and load on the shared host is constantly over 5. After the move melikedev.com should be much more performant. During the move there may be some issues with DNS etc, but should be kept to a minimum. I’ll post again when the move is complete.
Sorry that it has been awhile since I have made a post. Been wrestling with Puppet and also added SSD drives to my personal rig at home, both of which were not easily accomplished. I plan on posting a write-up on puppet in the near future, as soon as I work out some of the kinks.
Two and a half years ago I started writing a drink recipe search engine, which I would like to announce is finally ready for prime-time. The overall goal of the project was to provide a free-text drink recipe search engine that was easy to use and understand. During the time there were several similar sites but the UI/UX was terrible, so I thought to myself, “I can do better than that”. You can check out the drink recipe search engine @ MeLikeDrinks.com. Currently there are a few hundred drink recipes, but I am hoping to add many more over the next month.
MeLikeDrinks.com is the reason why I started MeLikeDev.com. I needed a way to save all the steps and configurations necessary to accomplish what needed to be done to support the website. For example, when learning Symfony I must have re-built the project (and model) a hundred times. Finally I got frustrated and wrote each step necessary and posted them to the blog, not only for myself, but anyone else who may be wandering down the same path.
Normally my projects don’t span years, but as any Symfonian knows, it is difficult to customize some Symfony “attributes” easily. For example, the “add a drink” form took longer than expected due to the complexity of nesting sub-forms, but also adding jquery interaction and custom validation. Plus the MeLikeDrinks.com project also resulted in a proprietary file-based storage engine currently code-named “Hobis”. Basically it stores pointers in xml format, which point to various file-system assets such as ingredient descriptions, and drink images. I am hoping to make Hobis open-source within the next year so others can take advantage of another nosql solution.
Thanks again for all the support over the years, and don’t forget to check out MeLikeDrinks.com and let me know what you think.
Sorry for the lack of updates over the last few weeks. I have been super busy getting a project ready for primetime. This weekend I am removing “beta” branding and will announce the project next week, so anyone interested can check it out. The project is reason why this blog was born as it incorporates numerous 3rd party vendors including Zend, Symfony, Lucene, CakePHP and others. So tune in next week for the post and thanks for all the support.
For the first time since inception, melikedev.com finally broke the 600K requests / month barrier. As such, I wanted to thank everyone for supporting melikedev.com and look out for more, quality articles in the future.
Just finished updating WordPress and associated themes/plugins to their most recent versions. There were few minor, noticeable differences, but overall the upgrade process was relatively smooth. If you are a MLD regular and notice something out of place, feel free to post a comment to this post.
Thanks for your support and understanding.
I’ve recently switched from Zend 5.5 to Netbeans (v7.0) . I’ve tried Eclipse, Eclipse PDT, and Zend Studio 8, but didn’t care much for any of them. Netbeans is tolerable, so I decided to focus on it as my main IDE, as such I had to research some JVM performance tuning because it was dog slow by default.
The default config looks like:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=384m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true"
Our goal is to increase the min and max memory limits so we can handle larger code bases. The flags you want to add (manually):
Min Heapsize (2GB): -J-Xms2048m Max Heapsize (4GB): -J-Xmx4096M
Also, as noted in the config file, enable the following flags:
-J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled
So your final config should look like:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=384m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Xms2048m -J-Xmx4096m -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled"
IBM explanation of some of the min/max settings: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tprf_tunejvm.html
Also, if you have symlinks to deeper libraries, be sure to add the paths to said libraries to the ‘Ignored Folders’ under project properties, this will help reduce un-necessary scanning.
There are a few more flags you should consider adding for your netbeans config. There is a new Garbage Collector as of 7.1 which really improved the performance of my netbeans install. You can read more @ Netbeans JVM Tuning. I appended the following flags at the end of my `netbeans_default_options` string (note: remove -J-XX:+UseConcMarkSweepGC because it will be replaced with UseParallelGC):
-J-Xverify:none -J-XX:+UseAdaptiveSizePolicy -J-XX:+UseParallelGC -J-Djava.net.preferIPv4Stack=true
Ever wonder how they derived i18n and l10n to represent internationalization and localization? Don’t be embarrassed, I wondered the same thing.
The answer is easy, they simply took the first letter of either word, appended the letter count of the word, then closed it with the letter n. So the 18 in i18n represents the number of letters in the word ‘internationalization’, and the 10 in l10n represents the number of letters in ‘localization’.
This abbreviated approach is much easier to maintain than having to create vars, files, dirs based on spelled out versions. It may also clear some confusion if you ever saw I18N or L10N on systems where the I and L look like the number 1 (one).