CLI Disk Usage
Modern Linux systems have plenty of tools for both Gnome and Kde to analyze the disk space. But if you log into a server via SSH or similar, you're out of luck. You need a tool for Cli Disk Usage analytics. That tool is ncdu.
You can install it easy:
sudo apt-get install ncdu
Issuing ncdu inside the folder you want to check will open a cool ncurses interface, really easy to use
Converting disc images to another format on Linux
While this information is available all over the net, i find myself losing enough time now and again trying to figure out how to convert a disk image to iso or something useful for that matter. So i decided to put together a small tutorial on converting disk images to another format on Linux, so i can easily access it whenever i need it.
The most popular disk image formats i've had to deal with are: iso (which Ubuntu handles by default perfectly), CloneCD/IMG (used by CloneCD), CUE/BIN, MDF (created by Alcohol 120%), NRG (Nero images) and last but not least DMG (format used mainly by Apple).
Since Linux handles very well .iso files, the idea is to convert any of the image types listed into iso and then the job is easy. For all of the formats there are tools to do just that. You can install them as follows:
sudo apt-get install ccd2iso bchunk mdf2iso nrg2iso dmg2img
Example usage:
# ccd ccd2iso /path/to/example.img /path/to/example.iso # bin/cue bchunk /path/to/example.bin /path/to/example.cue /path/to/example.iso # mdf mdf2iso /path/to/example.mdf /path/to/example.iso # nrg nrg2iso /path/to/example.nrg /path/to/example.iso # dmg dmg2img filename.dmg
Some of those formats can be also mounted using the CLI:
# ccd/img sudo mount -o loop example.img /media/example # nrg sudo mount -o loop,offset=307200 /path/to/example.nrg /media/example # dmg dmg2img /path/to/example.dmg /path/to/example.img sudo modprobe hfsplus sudo mount -t hfsplus -o loop example.img /media/example
Convert wma to mp3 on Linux
Today i wanted to listed to some old tracks, which for some reason i had saved in .wma format. Added them to Rhythmbox and it complained about needing a plugin which it didn't find. I fired up Google and learned that i need to install some gstreamer codecs, but with my files it still didn't worked. That so, i decided to convert the wma files to mp3 using the Perl Audio Converter. Install was painless on Ubuntu 10.04:
sudo apt-get install pacpl
After install, go to the folder that contains your .wma files and run:
pacpl -t mp3 *.wma
Setting up Xdebug with Zend Server on Linux
Since our team work on different operating system, we switched for custom apache/php/mysql installs to Zend Server. Before everyone was using something different (the guys on windows were using XAMP, WAMP, on ubuntu i was using the packages in the repo and on the server we're using apache from cPanel) and applications were behaving a differently according to the default settings for all those platforms.
So we decided to install Zend Server CE as it has more or less the same settings over different platforms. I've had some bad experiences installing ZSCE on a system that already had apache installed via apt, but after a clear install of Karmic, ZF was running like a charm. The install process described in the online documentation works great.
After install is done, make sure to symlink php, pecl, pear and phpize so you can access them system wide:
sudo ln -s /usr/local/zend/bin/zendctl.sh /usr/sbin/zendctl sudo ln -s /usr/local/zend/bin/pear /usr/sbin/pear sudo ln -s /usr/local/zend/bin/pecl /usr/sbin/pecl sudo ln -s /usr/local/zend/bin/php /usr/sbin/php sudo ln -s /usr/local/zend/bin/phpize /usr/sbin/phpize
At this point you should be able to run php -i in terminal and the phpinfo will be displayed.
Next step is to install xdebug via pecl by running:
sudo pecl install xdebug
If all went well you should have the xdebug library located at /usr/local/zend/lib/php_extensions/xdebug.so . If you don't have it there, then something went wrong and you should NOT continue reading. This issue must be sorted first.
Next you need to comment out the 1st line of /usr/local/zend/etc/conf.d/debugger.ini so it looks like this:
#open editor gksu gedit /usr/local/zend/etc/conf.d/debugger.ini # this is how the 1st two lines should look afterwards ; register the extension to be loaded by Zend Extension Manager ;zend_extension_manager.dir.debugger=/usr/local/zend/lib/debugger
Xdebug needs to be loaded before Zend Extension Manager, that's why you need to add the following line just on top of the /usr/local/zend/etc/ext.d/extension_manager.ini
#open the editor gksu gedit /usr/local/zend/etc/ext.d/extension_manager.ini #add this line on 1st line: zend_extension=/usr/local/zend/lib/php_extensions/xdebug.so #save the file
Restart zend server by running:
sudo /etc/init.d/zend-server restart
You can check if xdebug is working like so:
php -i |grep xdebug
The output should be something similar to this:
xdebug xdebug support => enabled xdebug.auto_trace => Off => Off xdebug.collect_includes => On => On xdebug.collect_params => 0 => 0 xdebug.collect_return => Off => Off xdebug.collect_vars => Off => Off xdebug.default_enable => On => On xdebug.dump.COOKIE => no value => no value xdebug.dump.ENV => no value => no value xdebug.dump.FILES => no value => no value xdebug.dump.GET => no value => no value xdebug.dump.POST => no value => no value xdebug.dump.REQUEST => no value => no value xdebug.dump.SERVER => no value => no value xdebug.dump.SESSION => no value => no value xdebug.dump_globals => On => On xdebug.dump_once => On => On xdebug.dump_undefined => Off => Off xdebug.extended_info => On => On xdebug.idekey => mimir => no value xdebug.manual_url => http://www.php.net => http://www.php.net xdebug.max_nesting_level => 100 => 100 xdebug.profiler_aggregate => Off => Off xdebug.profiler_append => Off => Off xdebug.profiler_enable => Off => Off xdebug.profiler_enable_trigger => Off => Off xdebug.profiler_output_dir => /tmp => /tmp xdebug.profiler_output_name => cachegrind.out.%p => cachegrind.out.%p xdebug.remote_autostart => Off => Off xdebug.remote_enable => Off => Off xdebug.remote_handler => dbgp => dbgp xdebug.remote_host => localhost => localhost xdebug.remote_log => no value => no value xdebug.remote_mode => req => req xdebug.remote_port => 9000 => 9000 xdebug.show_exception_trace => Off => Off xdebug.show_local_vars => Off => Off xdebug.show_mem_delta => Off => Off xdebug.trace_format => 0 => 0 xdebug.trace_options => 0 => 0 xdebug.trace_output_dir => /tmp => /tmp xdebug.trace_output_name => trace.%c => trace.%c xdebug.var_display_max_children => 128 => 128 xdebug.var_display_max_data => 512 => 512 xdebug.var_display_max_depth => 3 => 3
Note the xdebug support => enabled on line 2.
Hope that helps
Setup ZF using svn externals
After you create a project with zf tool, put it on SVN, you might want to include inside /library the ZF, but you want to have the bleeding edge all the time. You can include it as a svn external like this:
cd library/ svn propset svn:externals 'Zend http://framework.zend.com/svn/framework/standard/trunk/library/Zend/' .
Next time when you run svn up, your project will fetch the latest ZF from it's repo.
Remove .svn folders recursively
I know that you have to use svn export in order to get a copy of the repo without the .svn folders inside, but sometimes you have to work with what you have, a checkout of a repo with .svn folders. And you want them removed.
After googling a bit i found a great way to recursively remove .svn folders. Just type the following while in the root of your checkout:
rm -rf `find . -type d -name .svn`
This tip was found on http://www.anyexample.com/linux_bsd/bash/recursively_delete__svn_directories.xml
Enable ls color support
By default i like to use the Green on Black color scheme with my terminals. When i enable the theme though, ls loses somehow the ability to show files in colors. The trick to enable the feature is simple. One just has to run ls like this:
ls --color=auto
Unfortunately this won't stick, and it'a a bit of a drag to always add the --color=auto part. To solve this, one has to create an alias to ls to point to ls --color=auto. You can do this by adding the following to ~/.bashrc
# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
fi
Tada!
Ailurus project
I've been contacted a few days ago by Homer Xing from Ailurus project.
He's notified me about the addition of the script to install native flash player 64bit on ubuntu in the Ailurus project. I was thrilled. Since then Homer even built a version of the script to work on Fedora (which is now on this site also available) and we got in touch over IM.
I think Ailurus is an amazing project. Hardcore Linux users might not see why it's important to have projects like these, but someone new to linux will appreciate it. I can't stress enough how hard the Linux world seems to old windows users. It's not a matter of Linux being hard to learn, but more of windows being hard to forget. With tools like Ailurus that make installing applications a snap, i think the transition is made much easier.
Looking forward for future releases!
SVN Ignore all files inside a folder
If you want to ignore certain file types inside a folder on SVN it's pretty easy:
svn propset svn:ignore "*.tgz" backup
It's a bit more complicated if you want to ignore everything inside a folder (be it files or folders). If you have a structure as the following:
/public/media /public/media/member /public/media/member/artist /public/media/member/fan /public/media/member/label
and you want to ignore everything inside public/media, just do:
svn propset svn:ignore "*" public/media/
Setup controllers and actions inside a module using zf tool
I've been trying to move some old code into separate modules for easier use later on. I installed zend framework and zend tool and created a new project:
zf create project myproject
Adding a new module is easy as pie:
zf create module mymodule
This creates the /application/modules/mymodule folder with complete MVC structure inside (controllers, models and views folders).
My module was not working so after a bit of looking around i've found Akrabat's post that some light on the subject. You have to add to /application/configs.ini the following inside the [production] section:
# enabling modules resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules[] = ""
Good, now we should have a working module, except we don't have any controllers. Trying to create a controller proved a bit tricky as zf tool would not pleace them in the right place, inside the modules/mymodule/controllers but in the default /application/controllers. The same applies for actions. With a bit of help from TheAshMan on #zftalk i found the right answer:
# create controller Photos_IndexController at /application/modules/controllers/Photos_IndexController.php zf create controller Photos_Index 1 mymodule # create the action view inside the Photos_IndexController zf create action view Photos_Index 1 mymodule
Hope this helps someone as it took me a few hours to figure it out