About This Blog

Hi,

I am CTO of Cybozu Inc., a leading groupware vendor in Japan.

We are using a lot of open source softwares in our products & services, and have contributed a lot of bug fixes and enhancements to communities.  However, we have not opened patches for our specific purposes, or some communities are so closed and inactive that they cannot review or merge our patches.

In this blog, we will release miscellaneous patches for open source softwares, hoping somebody would find them useful.  We may release our software as OSS through this blog, too.

Best regards,

YAMAMOTO Hirotaka (tnnrg)

May 10, 2011

SP List Kit v1.0.4 (New extension:SP List Item Copy)

SP List Kit is rich feature set to enhance usability of all SharePoint Lists. It supports SharePoint 2010. SP List Kit is a member of SP Apps 2010 family.

Available Extensions:

Project Homepage:

http://splistkit.codeplex.com/

License:

GPLv2

Author:

HATA,Shinya (twitter : @SharePointKit) / Cybozu, Inc.

Apr 13, 2011

SP List Kit

SP List Kit is rich feature set to enhance usability of all SharePoint Lists. It supports SharePoint 2010. SP List Kit is a member of SP Apps 2010 family.

Available Extensions:

Project Homepage:

http://splistkit.codeplex.com/

License:

GPLv2

Author:

HATA,Shinya (twitter : @SharePointKit) / Cybozu, Inc.

Mar 02, 2011

jquery-groupedItemPicker

jquery-groupedItemPicker is a jQuery plugin that pick multiple items from candidates. The candidates are grouped with treeview menu.

Project Homepage:

http://code.google.com/p/jquery-groupeditempicker/

License:

GPLv2

Author:

HATA,Shinya (twitter : @hatashinya) / Cybozu Labs, Inc.

Feb 03, 2011

jquery-treeview-menu

jquery-treeview-menu is a jQuery plugin that creates a pulldown menu, and this menu has a treeview in the pulldowned area.

Project Homepage:

http://code.google.com/p/jquery-treeview-menu/

License:

GPLv2

Author:

HATA,Shinya (twitter : @hatashinya) / Cybozu Labs, Inc.

Feb 02, 2011

jquery-timeRangePicker

jquery-timeRangePicker is a jQuery plugin that creates time or time range picker.

Project Homepage:

http://code.google.com/p/jquery-timerangepicker/

License:

GPLv2

Author:

HATA,Shinya (twitter: @hatashinya) / Cybozu Labs, Inc.

Oct 18, 2010

Vmbkp: An Online Backup Tool for VMware vSphere

The software is a tool to backup virtual machines in VMware vSphere environment.

Features:
        - Online backup
        - Multi-generation management
        - Fast archive access
        - Command-line Interface

Supported platform:
        - VMware vSphere 4
          Single ESX(i) is not tested. Free ESXi is not supported.
        - Linux on x86_64 host as backup server. CentOS 5.5 64bit is tested.

Source code repository:
        http://github.com/starpos/vmbkp/

License:
        GPLv2

Acknowledgement:
        - The software uses VI-Java library by Steve Jin and
          Virtual Disk Development Kit by VMware, Inc.
          I thank them for publishing these libraries.
        - I thanks members in Cybozu Labs, Inc. for reviewing source code to improve it.

Author:
        Takashi HOSHINO / Cybozu Labs, Inc.


VMware and VMware vSphere are registered trademarks and/or trademarks of VMware, Inc.

Oct 15, 2010

Language Detection Library for Java

The language-detection library is a Java opensource library to detect languages in which texts are written.
(Also known as 'Language identification', 'Language guessing' and 'Language recognition')

Features:
99% over precision for 40+ languages
Detect language of a text using naive Bayesian filter
Generate language profiles from Wikipedia abstract database file

Supported languages (bundled 47 profiles):

Afrikaans, Arabic, Bulgarian, Bengali, Czech, German, Greek, English, Spanish, Persian, Finnish, French, Gujarati, Hebrew, Hindi, Croatian, Hungarian, Indonesian, Italian, Japanese, Kannada, Korean, Macedonian, Malayalam, Marathi, Nepali, Dutch, Punjabi, Polish, Portuguese, Romanian, Russian, Slovak, Somali, Albanian, Swedish, Swahili, Tamil, Telugu, Thai, Tagalog, Turkish, Ukrainian, Urdu, Vietnamese, Simplified/Traditional Chinese.

Project Homepage:

http://code.google.com/p/language-detection/

License:

Apache License 2.0

Author:

Shuyo Nakatani (twitter : @shuyo) / Cybozu Labs, Inc.

Presentation

Sep 07, 2010

Released ordered KVS Mio 0.0.1alpha

We have released Mio - a distributed Skip Graph based orderd KVS 0.0.1alpha.(mio-0.0.1-alpha.tar.gz)

What is Mio?

In short, Mio is memcached + "range search".

Mio suports range search queries like "get 10 datum which key are between key1 and key2". N.B. At present, it is in alpha quality.

Building and Installing

  • Install a recent version of Erlang.
  • make
  • make install with Environment variables for configuration. TARGET_DIR: Installation target directory. SBIN_DIR: sbin direcotry.
    sudo TARGET_DIR=/user/local/mio SBIN_DIR=/usr/sbin/ make install

Running Mio

# Run first node named mio1 with verbose mode on host FQDN_of_your_host (default port 11211)
% mio -v -n mio1@FQDN_of_your_host

# Run second node named mio2 on host FQDN_of_your_host2.
# With -i option, indidate the introducer node.
% mio -v -n mio2@FQDN_of_your_host2 -i mio1@FQDN_of_your_host

# Run third node named mio3 on host FQDN_of_your_host (port 11411).
% mio -v -n mio3@FQDN_of_your_host -i mio1@FQDN_of_your_host -p 11411

API

You can access to Mio using memcached protocol.

Currently the following commands are supported.

  • get
  • set
  • delete
  • quit
  • stats
  • range_search
    get_multi("mio:range-search", Key1, Key2, Limit, desc/asc)

Access to mio

Use memcached client libraries to access mio.

Perl

# Example: Access to Mio.
use strict;
use warnings;
use Cache::Memcached;
use Data::Dumper;

my $m = Cache::Memcached->new( { servers => ['127.0.0.1:11211']} );
$m->set( "hello" => "world" );
$m->set( "intel" => "cpu" );
$m->set( "japan" => "Tokyo" );

warn $m->get("hello");
warn $m->get("intel");
warn $m->get("japan");

my $href = $m->get_multi("mio:range-search", "he", "j", "10", "asc");

# Should print
# $VAR1 = {
# 'hello' => 'world',
# 'intel' => 'cpu'
# };
warn Dumper $href;


PHP



$mem = new Memcached;
$mem->addServer('127.0.0.1', 11211);
$mem->set("hello", "world");
$mem->set("intel", "cpu");
$mem->set("japan", "Tokyo");
printf("%s\n", $mem->get("hello"));
printf("%s\n", $mem->get("intel"));
printf("%s\n", $mem->get("japan"));
var_dump($mem->getMulti(array("mio:range-search", "he", "j", "10", "asc")));
?>

Java



import com.danga.MemCached.*;
import java.util.*;

public class JavaMemcachedClient
{
public static void main(String[] args)
{
String[] serverlist = { "127.0.0.1:11211" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverlist);
pool.initialize();

MemCachedClient mc = new MemCachedClient();
mc.set("hello", "world");
mc.set("intel", "cpu");
mc.set("japan", "Tokyo");
System.out.printf("hello => %s intel => %s japan => %s\n", mc.get("hello"), mc.get("intel"), mc.get("japan"));

String[] keys = { "mio:range-search", "he", "j", "10", "asc" };
Map ret = mc.getMulti(keys);

for (Map.Entry e : ret.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());
}
}
}


Algorithm


Mio using "Skip Graph" algorithm. See following articles



Author



Written by Taro Minowa(Higepon) higepon@labs.cybozu.co.jp

License

New BSD License

Mar 02, 2010

Mio - a distributed Skip Graph based orderd KVS

We published Mio - a distributed Skip Graph based orderd KVS at github.

In short, mio is memcached + "range search".
You can issue a range search query to Mio using memcached client.

For more detailed information, see README and following slides I used on Erlang Tokyo Workshop #4.

--
Taro Minowa(Higepon)

Feb 05, 2010

PHP Syslog Patch for Windows (2)

We published a patch that makes PHP to send UTF-8 strings to eventlog on Windows. It works well, but the patch is only applicable when your PHP's 'mbstring.internal_encoding' is UTF-8. This means there are some limitations against general use.

We have improved that patch by introducing a new INI directive that enables/disables wide character conversion of syslog messages; the directive name is 'syslog_widechar'.  Here is a sample usage with two simple PHP scripts.

sample1:

<?php
$message = SOME_UTF8_STRING;
// syslog(LOG_WARNING, $message); // this does not work
ini_set("syslog_widechar", true); // our new directive
syslog(LOG_WARNING, $message);    // this works

sample2:

<?php
$message = SOME_ISO_2022_JP_STRING;
syslog(LOG_WARNING, $message);    // this works
ini_set("syslog_widechar", true); // our new directive

// syslog(LOG_WARNING, $message); // this does not work
syslog(LOG_WARNING, mb_convert_encoding($message, "UTF-8", "ISO-2022-JP")); // this works

After running these scripts using PHP with this patch, you can see the event messages without any corruptions in Event Viewer.  This patch applies cleanly to PHP-5.3.1.

Download: php_syslog-2.patch

--
KITAZAKI Shigeru