Skip to content

Instantly share code, notes, and snippets.

View nobusue's full-sized avatar

Nobuhiro Sue nobusue

View GitHub Profile
@nobusue
nobusue / BatchResize.groovy
Created August 1, 2011 15:42
自炊ヘルパーその1: JPEGファイルを縦横半分にリサイズ、指定したフォルダ以下を階層的に処理
import java.awt.Image
import java.awt.image.BufferedImage
import javax.imageio.ImageIO
def rootDir = new File(args[0])
rootDir.eachFileRecurse { file ->
if(file.name ==~ /[^s].*\.jpg/) { // skip file starting with "s"
def srcFileName = file.name
def path = file.absoluteFile.parent
def dstFileName = 's' + srcFileName
@nobusue
nobusue / KonekoTube.groovy
Created December 1, 2011 15:46
G* Advent Calendar 2011/12/02: G*といえば猫、ということでYouTubeから子猫動画をランダムに再生
def feed = new XmlSlurper().parse(
"http://gdata.youtube.com/feeds/api/videos?category=kitten")
def uri = feed.entry[(int)(Math.random()*feed.itemsPerPage.toInteger())]
.link.find{it.@rel == 'alternate'}.@href
java.awt.Desktop.getDesktop().browse(new URI(uri.toString()))
@nobusue
nobusue / bayes.groovy
Created November 6, 2011 01:08
指定したURLの内容からジャンルをベイズ推定: groovy bayes.groovy <url>
/*
* ベイジアンフィルタのサンプル(Groovyバージョン)
* 元ネタ) 機械学習 はじめよう 第3回 ベイジアンフィルタを実装してみよう
* http://gihyo.jp/dev/serial/01/machine-learning/0003
*
* 分かち書きにはGomokuを利用
* https://github.com/sile/gomoku
* gomoku-0.0.4.jarをダウンロードし、~/.groovy/lib か <GROOVY_HOME>/lib にコピーしておく
*
* 学習ソースとしてWikipediaのテキストをJsoupで取得
@nobusue
nobusue / wikipedia.groovy
Created November 5, 2011 12:23
Wikipedia scraping: groovy wikipedia.groovy <keyword> キャッシュ機能付き
@Grab(group='org.jsoup', module='jsoup', version='1.6.1')
import org.jsoup.*
def keyword = 'Groovy'
if(args && args[0]) keyword = args[0]
def home = System.getProperty('user.home')
def tmp = home + '/tmp'
@nobusue
nobusue / cal.groovy
Created November 5, 2011 10:54
calコマンド: groovy cal.groovy <year> <month>
import static java.util.Calendar.*
def cal = Calendar.instance
def year = cal[YEAR]
def month = cal[MONTH]
if(args && args[0] && args[0].isInteger() && args[1] && args[1].isInteger()) {
year = args[0].toInteger()
month = args[1].toInteger()
cal[YEAR] = year
@nobusue
nobusue / nobusue.groovy
Created November 5, 2011 05:30
コードで自己紹介 @jggug Camp 2011
@Grapes([
@Grab("org.codehaus.geb:geb-core:latest.release"),
@Grab("org.seleniumhq.selenium:selenium-firefox-driver:latest.release")
])
import geb.Browser
Browser.drive {
go "http://www.facebook.com/profile.php?id=732337788"
go "http://d.hatena.ne.jp/keyword/"
@nobusue
nobusue / MakeZip.groovy
Created August 21, 2011 08:48
自炊ヘルパーその2: 指定したフォルダに存在する全フォルダを、フォルダ単位でzipに固める
def rootDir = new File(args[0])
def ant = new AntBuilder()
rootDir.eachDir { dir ->
def srcDirName = dir.name
def path = dir.absoluteFile.parent
def dstFileName = srcDirName + '.zip'
println "Zipping: ${path}\\${srcDirName}"
ant.zip(destfile: "${path}\\${dstFileName}",
basedir: "${path}",
@nobusue
nobusue / GhelloFromSystemTray.groovy
Created July 2, 2011 10:03
#ghello from System Tray
java.awt.SystemTray.getSystemTray().add(new java.awt.TrayIcon(image:java.awt.Toolkit.getDefaultToolkit().getImage(this.class.getResource('groovy/ui/ConsoleIcon.png')), tooltip:'Hello World!', imageAutoSize:true))
@nobusue
nobusue / specj2010dump.groovy
Created June 30, 2011 07:21
SPECjEnterprise2010の結果一覧をTSVファイルに書き出すGroovyスクリプト
@Grab(group='net.sourceforge.nekohtml', module='nekohtml', version='1.9.14')
import org.cyberneko.html.parsers.SAXParser
def parser = new XmlParser(new SAXParser())
def html = parser.parse('http://www.spec.org/jEnterprise2010/results/jEnterprise2010.html')
//new XmlNodePrinter().print(html)
def result = []
def baseUrl = 'http://www.spec.org/jEnterprise2010/results/'
@nobusue
nobusue / CsvMerge.groovy
Created April 4, 2011 09:21
Simple CSV text merge script
def inputFiles = []
args.each{ fn ->
inputFiles << new File(fn)
}
new File('merged.csv').withWriter{ out ->
def outputLines = []