Wednesday, June 16, 2010

Saturday, June 5, 2010

Healing for Dummies

Following on from DPS for Dummies, and Healatica Principia (what an amazingly pretentious title XD). I have healed in Wrath with all of these specs, but not all in progress raids. Like the DPS guide, this will obviously not make you a star, just get you started. The value here is having every style listed in a very condensed format.

Comment very welcome.


Druid:
Always: be casting, prehot if you're bored.
AOE: RJx5/WG, tranquility for decimates
Spot: RG/swiftmend. I like LB for minor spot healing, it's sick efficient and can be boosted if the incoming DPS rises.
Tank: Full hots + nourish spam. You can afford to roll at least 1 stack of LB and are hurting your HPS badly if you don't. Fast stack if you have mana issues; slow stack on secondary tanks.
Mana: use innervate early and you should have very few problems.
Macro: yell to Rebirth, NS+HT
Gear: cap haste then stack SP. Spirit is ok, mp5 is terribad.

Disco priest:
Always: Bubbles are always your priority. Keep PoM up but try not to hide it under a full shield. Melee usually make the best targets; use SW:D if it jumps to you. Use Pain Suppression and Power Infusion liberally.
AOE: If everyone's shielded and big damage is incoming, consider Renew. Not a strength.
Spot: Flash heal. Never use GH. Binding heal if you're damaged.
Tank: Maintain renew, penance to top up, binding if you're damaged, flash when you have to.
Mana: shadowfiend, try the Rapture trick if you're too leet for this guide.

Holy priest: Skipping for now because I haven't played Holy since BC.

Holydin: HL build is recommended.
Always: Maintain beacon, JotJ and SS, usually both on MT. Use your auras and hands.
AOE: Haha. Glyph HL and spam. Raid-bubblewall before big bangs.
Spot: Holy Shock, FoL. Hands.
Tank: FoL, HL when needed (ie most of the time, in raid).
Mana: Time Plea with lulls, but USE it. Other healers will cover you. Stacking with wings loses overall HPS, but this isn't a big problem. Pop DI when you know you'll be spamming HL.
Macro: DS /cancelaura, DF+HS (FoL after)

Shaman:
Always: Think out your totems. Usually you want SoE, Flametongue, WoA + Healing Spring. Use Stoneskin if you have a DK; skip FT if you have an elem sham; use windfury if WoA is covered and you don't have a frost DK; use Mana Spring if you lack BoW. Tremor and Cleansing can be situationally OP.
Always: Maintain water shield and healing waves for yourself, earth shield on the tank.
AOE: Brain heal FTW.
Spot: CH, Riptide, LHW. Rip leaves HOTs about to CH.
Tank: Riptide, LHW spam, HW if you really have to.
Mana: Mana Tide is a bit lame but does affect your group. Shaman are hard to run OOM, but if you get close use more LHW and less HW.
Macro: NS+TF+HW, NS+CH


I really like macros like this:
#showtooltip
/cast [@mouseover] earth shield; earth shield
It will cast on your mouseover target if it can, or your target if you have one, or yourself (assuming you have auto selfcast on).

SapientMud

Moved this to Google Wave

.vimrc

Jeez when did this blog actually get content? Huh.

To balance out all that unwarranted productivity, have my .vimrc file. I'll update shortly with the ninja menu-creating skillz I learnt at work.
set guifont=Courier_New:h12
set title
set nobackup
set writebackup
set nohls
set visualbell
set ruler
set incsearch
set smartcase
set smarttab
set scrolloff=10
"set sidescrolloff=10
"set nowrap
set tw=80
set wm=0
set linebreak
set tabstop=2
set shiftwidth=2
set expandtab
set backspace=2
set noai
set nojoinspaces
set cpoptions-=a
set cinoptions=g0.5s,h0.5s,:0.5s,=0.5s,p0,(0.5s,+0.5s
set winminheight=0
"V6 set winminwidth=0
set matchtime=2
" eol:$,
set nolist
set lcs=tab:>-,trail:\
hi NonText ctermfg=4
hi SpecialKey ctermfg=4
syn on
filetype indent on
" winpos 0 0
" set lines=52 columns=80
set tags=~/.tags

if hostname() != ''
let &titleold = matchstr(system('whoami'), '\w\+') .'@'. hostname()
endif

" Darn F keys...
map OP
map OQ
map OR
map OS
map [11~
map [12~
map [13~
map [14~
map [15~
map [17~
map [18~
map [19~
map [20~
map [21~
map [23~
map [24~

" Printing
set popt=header:3,syntax:a,number:n
set printexpr=PrintFile(v:fname_in)
function! PrintFile(fname)
let pd = (&printdevice == '' ? '' : ' -d'. &printdevice)
call system('lp '. pd .' '. a:fname)
" echo 'lp '. pd .' '. a:fname
call delete(a:fname)
return v:shell_error
endfunc


" New ex commands
comclear
command -range=% CppCmt ,s/\/\*\([^\/]*\)\*\//\/\/\1/g
command -range=% CCmt ,s/\/\/\(.*\)$/\/\*\1 *\//g
command -range=% TidyEOL silent! ,s/\s\+$//g
" TidySrc is broken
command -range=% TidySrc silent ,TidyEOL | ,s/{\n\n\+/{
/ | ,s/\n\n\+\(\s\+\)}/
\1}/ | ,s/\n\n\n\+/


/ | normal "gg=G"
" :silent! TidyEOL
:silent! %s/{\n\n\+/{
/
:silent! %s/\n\n\+\(\s\+\)}/
\1}/
:silent! %s/\n\n\n\+/


/
gg=G
command -nargs=1 -complete=help Help :h | normal _
command -range=% MkLocalScript silent! ,s/set/setlocal/ | silent! ,s/map/map / | silent! ,s/ab/ab /



" Maps
map '1 gg
map # .n
" Comment a visual block
vmap # :s/^\(\s*\)\(.\)/\1# \2/:silent! '<,'>s/^\(\s*\)# #\s*/\1/
map '' :update
"map 'q :!rm -f .*.^^:q
map 'q :q
map 'Q :q!
map 'w '''q
map 'e :files:e
map 'E '''e
map '# :e #
map '~ '''#
map 'v :e ~/.vimrc
map '. :e %:p:h
map :update:prev
map :update:next
map 'r :e!%
map 'd :!rm %:set nomodified
" Updates a line like /# Last:/
map 'l 0f:"_C: :read !date +'\%Y.\%m.\%d \%T'kJ''
map L 10k
map M 10j
map S g$F r
map w _
map zi
map Z @q
map ] >>
map [ <<
nmap 1000000u
map :!irb


" New stuff
set fillchars=vert:\|,fold:\
set foldminlines=3
" set foldclose=all
"V6 set foldlevelstart=2
"V6 set foldmethod=indent
set viewoptions=folds,cursor

" F11: EditFtplugin(), F12: EchoFtPlugin
let vimdir = expand("~/.vim")
let ftdir = vimdir .'/ftplugin'
let skeldir = vimdir .'/skel'
function! EchoFtplugin()
if exists("b:file")
echo b:file ." sourced"
else | echo "No *.vim sourced"
end
endf
function! EditFtplugin()
if exists("b:file")
exec "edit ". b:file
elseif &ft != ''
let fn = g:ftdir .'/'. &ft
if isdirectory(fn)
exec "edit ". fn
else | exec "edit ". fn .".vim"
end
else | echo 'No filetype or b:file'
end
endf
map :call EditFtplugin()
map :call EchoFtplugin()

function! ReadSkel()
let full = fnamemodify(expand("%"), ":p")
let tail = fnamemodify(full, ":t")
let extn = fnamemodify(full, ":e")
let fn = g:skeldir ."/". tail
if filereadable(fn) | call ReadSkel_(fn) | return | end
let fn = g:skeldir ."/". extn
if filereadable(fn) | call ReadSkel_(fn) | return | end
let fn = g:skeldir ."/". &ft
if filereadable(fn) | call ReadSkel_(fn) | return | end
endf
function! ReadSkel_(fn)
exec "0read ". a:fn
silent! g/reated/normal 'l
endf


hi Comment ctermfg=6
hi Directory ctermfg=6
hi Folded term=standout ctermfg=7 ctermbg=0
ab LAL Alexis Lee

let @q = "I:silent! %s/ A\\n// 0\"wdd@w"

" usually unnecessary
filetype plugin on
augroup vimrc
au!

" Match any filename with at least one character
" Careful if /root/.vim -> /home/*/.vim, mkdir /root/.vim/view
au BufWinLeave ?* if &ft != 'mail' | mkview | end
au BufWinEnter ?* silent loadview

au BufEnter *.rbd setf ruby

au BufNewFile,BufEnter ~/winmvs*/* exec "so ".vimdir."/mvs.vim"
au BufNewFile ~/winmvs*/* call MvsGet()
au BufNewFile,BufEnter *.jcl setf jcl | exec "so ".ftdir."/jcl.vim"

" Do this properly sometime - test filename in cpp.vim
au BufEnter *.h exec "so ".ftdir."/h.vim"
au FileType xml setlocal ts=2 sw=2
au FileType help setlocal ts=2 sw=2
au FileType make setlocal ts=4 sw=4 list
au BufEnter sql/data/* setlocal ts=8 sw=8 list
" au VimEnter * au BufEnter * syn sync fromstart

au BufNewFile * call ReadSkel()
" au BufNewFile main.c call ReadSkel()

"au BufWritePost,FileWritePost *.pl normal :!chmod +x %
"au VimLeave *.pl normal :!chmod -R ugo+rx ~/perl/*.pl
augroup end

Friday, June 4, 2010

The trials of minification

Amy Hoy got me thinking about JS minification and my manager OK'd me to look into it.

Day 1 went very well. I got Sprockets and the YUICompressor working on the command line with a batch file. To integrate this into our Maven process, I wrote a little Maven plugin/mojo I called packJS. Mojos are written in Java so I switched from Sprockets to Combiner. I installed the two jars into my local repository and everything was hunky dory.

Day 2 slid downhill somewhat. It seems the deploy:deploy-file goal doesn't work very well, so I was unable to push the dependencies to our central repository easily.

Day 3 brings new hope, and with it new forehead-rubbing. There's a yuicompressor maven plugin already. Unfortunately it doesn't seem to work either, in aggregation mode at least. It complains the output file does not exist; creating the parent dirs manually may help, but clean will erase them again.

Updates ongoing.


ps. Which is it, Maven? A plugin or a mojo?

Thursday, June 3, 2010

Link dump

Some of the crazy CSS stuff I've been reading up on.

http://www.alistapart.com/articles/sprites
http://www.alistapart.com/articles/fluidgrids/
http://unstoppablerobotninja.com/entry/fluid-images
http://www.clagnut.com/blog/348/ - 62.5% rule
http://stopdesign.com/archive/2003/03/07/replace-text.html - Fahrner Image Replacement (FIR)

http://www.alistapart.com/articles/responsive-web-design/ - media queries, not just for mobile
@media screen and (max-width: 600px) {
.footer {
-- standard css rules --
}
}
Bear in mind this is CSS3 and therefore not supported by IE. They do seem to be well supported in FF3.6, contrary to quirksmode.


Amy Hoy knows how to hustle: http://slash7.com/2009/12/02/my-year-of-hustle-the-freckle-aversary/
Thomas Fuchs (her husband) helps write Prototype and Script.aculo.us (v1+2): http://mir.aculo.us/

Prototype 1.7 has a sexy new Element#on. I will be metaphorically feeling up #getLayout as well.
http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-more