In today’s article, we’ll talk a bit about the HDF5 format. From the HDF5 website:
An HDF5 file is a container for two kinds of objects: datasets, which are array-like collections of data, and groups, which are folder-like containers that hold datasets and other groups.
GNU Grep is an amazingly powerful tool that will allow you to search input files containing specified patterns.
The following command performs a recursive search for a string, inside a directory of files:
grep-rnw'/path/to/search'-e'pattern-to-find'
Breaking this command down:
-r makes the execution recursive
-n will give you the line number
-w matches the whole word
You can use the --exclude switch to remove file patterns from the set of files included in your search. Removing js and html files from your search might look like this:
--exclude*.{js,html}
The opposite of this will be the --include switch.
For further details on this really useful tool, check out the man page.
Sometimes you might find yourself in the situation where you require a little more power out of your node.js application. You may need to squeeze some extra performance out of a piece of code that you simply can’t achieve using javascript alone. Node.js provides a very rich sdk to allow application developers to create their own addons to use, that allow you to write in C++.
These binary compiled modules then become directly accessible from your node.js applications.
In today’s article, I’d like to walk through the basic setup of an addon project. We’ll also add a function to the addon, and demonstrate the call from javascript to C++.
Setup
Before you can get developing, you’ll need to make sure you have some dependencies installed. Create a directory, and start a new node application.
mkdir my-addon
cd my-addon
npm init
You’ll need to let the package manager know that your application has a gyp file present by switching gypfile to true.
The project is going to require a gyp file called binding.gyp. It’s the responsibility of this file to generate the build environment that will compile our addon.
The keen reader would see that our module does nothing. That’s ok to start with. This will be an exercise in checking that the build environment is setup correctly.
Import and use your addon just like you would any other module from within the node environment.
The getGreeting function is actually doing the work here. It’s simply returning a greeting. The InitAll function now changes to add a Set call on the exports object. This is just registering the function to be available to us.
Greetings
So, now we can actually use the greeting. We can just console.log it out.
Generating ranges in PostgreSQL can be a very useful tool for the creation of virtual tables to join to. Should your report require you to generate an entire range; left joining only to the values that need to be filled out.
The following code snippet will allow you to generate such a range:
It has to be said that the most popular transfer format (when it comes to file systems) is either FAT32 or NTFS. In today’s article I’ll walk you through creating one of these lowest-common-denominator devices.
First of all, we need to find the device that you want to format. After you’ve attached your pendrive/device, use the lsblk command to determine what your device’s name is.
➜ ~ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 29.8G 0 disk
In my case here, it’s called sda.
First of all, we’ll partition the drive using fdisk.
Partitioning
➜ ~ sudo fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 29.8 GiB, 32015679488 bytes, 62530624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcfaecd67
We’ll create a single partition for the device.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-62530623, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-62530623, default 62530623):
Created a new partition 1 of type 'Linux' and of size 29.8 GiB.
We can take a look at how the partition table now looks with p.
Command (m for help): p
Disk /dev/sda: 29.8 GiB, 32015679488 bytes, 62530624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcfaecd67
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 62530623 62528576 29.8G 83 Linux
We still need to change the type from Linux to W95 FAT32, which has a code of b.
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): b
Changed type of partition 'Linux' to 'W95 FAT32'.
We now finish partitioning and move onto formatting. We write the partition table with w.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Formatting
Finally, we use mkfs to create a vfat filesystem on our device’s partition.