Skip to content

Instantly share code, notes, and snippets.

@Cside
Cside / truncate.js
Created February 1, 2011 16:22
全角・半角混じった文字をいい感じにsubstrする
function truncate(str, size, suffix) {
if (!str) str = '';
if (!size) size = 32;
if (!suffix) suffix = '...';
var b = 0;
for (var i = 0; i < str.length; i++) {
b += str.charCodeAt(i) <= 255 ? 1 : 2;
if (b > size) {
return str.substr(0, i) + suffix;
}
@Cside
Cside / modalWord.js
Created February 8, 2011 11:39
単語の配列から最頻出の単語を返す
function modalWord(words) {
// words = words.map(function(s) { return s.toLowerCase(); }); // nomalize
var counter = {};
words.forEach(function(str){
if(counter.hasOwnProperty(str)) {
counter[str]++;
} else {
counter[str] = 1;
}
});
@Cside
Cside / truncates.pl
Created February 11, 2011 02:43
全角・半角混じった文字をいい感じにsubstrする
use utf8;
use Encode qw/encode_utf8/;
sub truncates {
my ($str, $size, $suffix) = @_;
$str = '' unless $str;
$size = 32 unless $size;
$suffix = "..." unless $suffix;
my $b = 0;
for (my $i = 0; $i < length $str; $i++) {
$b += length(encode_utf8 substr($str, $i, 1)) == 1 ? 1 : 2;
package MyCache;
use strict;
use warnings;
use Class::Accessor::Lite (
rw => [qw/cache_dir/],
);
use Encode;
use Data::MessagePack;
use Digest::MD5 qw/md5_hex/;
use Path::Class;
@Cside
Cside / installed_modules.pl
Created February 17, 2011 00:40
インストールしてるモジュール一覧をperllocal.podから
#!perl
use strict;
use warnings;
use Perl6::Say;
use Path::Class;
use Pod::Parser;
use List::MoreUtils qw/uniq/;
use Regexp::Assemble;
my @perllocals = do {
@Cside
Cside / hatebu-favorite-parser.pl
Created February 18, 2011 12:05
はてブお気に入りパーサー
use URI;
use Web::Scraper;
sub scrape {
my ($class, $config) = @_;
my $url = "http://b.hatena.ne.jp/"
. $config->username
. "/favorite?threshold="
. $config->threshold;
my $scraper = scraper {
@Cside
Cside / filter_by_category.js
Created March 4, 2011 13:26
はてブのentrylistページで、カテゴリでフィルタリング
Array.prototype.slice.apply(document.querySelectorAll('ul.hotentry > li')).forEach(function(s) { if(s.querySelector('li.category').innerText !== 'コンピュータ・IT' ) { s.style.display = 'none'; } });
@Cside
Cside / MakefilePL_util.pl
Created March 28, 2011 06:41
Makefile.PLのrequiresとかtest_requireを勝手につくる
#!/usr/bin/env perl
use strict;
use warnings;
use Perl6::Say;
use List::MoreUtils qw/uniq/;
use Regexp::Assemble;
# Settings
@Cside
Cside / use_scalar_lazy.pl
Created March 31, 2011 02:30
use_scalar_lazy.pl
use Scalar::Lazy qw/lazy/;
# 遅延評価
my $var1 = lazy { 1 };
print $var1; #=> 1
# シングルトン化することもできる
my $var2 = lazy { $something_heavy->() } 'init';
print $var2;
print $var2; # $something_heavy->() が一度しか実行されない
@Cside
Cside / websocket_test.pl
Created April 2, 2011 05:23
websocket_test.pl
#!perl
use strict;
use warnings;
use Plack::Builder;
use Plack::Request;
use Plack::Middleware::WebSocket;
use AnyEvent;
use AnyEvent::Handle;
use Coro;