<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: flash code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 07:43:53 GMT</pubDate>
    <description>DZone Snippets: flash code</description>
    <item>
      <title>Disk/flash benchmark</title>
      <link>http://snippets.dzone.com/posts/show/5821</link>
      <description>Adapted from a LKML posted program. I think I added write support, this for benchmarking random access writes on flash.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* Simple multi-threaded I/O benchmark program.&lt;br /&gt; * Copyright (C) Michael Tokarev, mjt@tls.msk.ru&lt;br /&gt; * Public domain.&lt;br /&gt; *&lt;br /&gt; * To compile:&lt;br /&gt; *   gcc -o iot iot.c -lpthread&lt;br /&gt; * To run:&lt;br /&gt; *   Either with disk device or with pre-existing file.&lt;br /&gt; *    ./iot [options] filename&lt;br /&gt; *   Filename is the file or device to test on.&lt;br /&gt; *   By default it uses 8Kb I/O blocks and does sequential read test&lt;br /&gt; *   until interrupted.&lt;br /&gt; *   To indicate when to stop:&lt;br /&gt; *     -t sec - run for this many seconds, say, 30, to eliminate random&lt;br /&gt; *       noise.&lt;br /&gt; *     -i num - perform this many I/O operations&lt;br /&gt; *   To indicate R/W mode:&lt;br /&gt; *     -wn, -Wn, -rn, -Rn --&lt;br /&gt; *       perform linear or random write (note: all data will be lost!),&lt;br /&gt; *       or linear or random read, using given number of threads (n).&lt;br /&gt; *   I/O modes:&lt;br /&gt; *    -s - syncronous write (O_SYNC)&lt;br /&gt; *    -d - direct I/O (O_DIRECT)&lt;br /&gt; *    -b bs - block size in bytes&lt;br /&gt; *   And finally:&lt;br /&gt; *    -h - display usage.&lt;br /&gt; * Example:&lt;br /&gt; *   ./iot -t30 -W4 -R4 -d -b8192 /dev/sdb&lt;br /&gt; * perform random read/write test (4 readers and 4 writers)&lt;br /&gt; * for 30 seconds using direct I/O and block size of 8Kb.&lt;br /&gt; *&lt;br /&gt; * Note: for small blocksize (&lt;64Kb at least) and using direct random I/O,&lt;br /&gt; * nowadays drives sometimes gives transfer rates below 1Mb/sec - this is&lt;br /&gt; * expectable, don't be afraid of so low numbers.  The reason is simple:&lt;br /&gt; * in order to access a given block of data, a disk drive has to seek to the&lt;br /&gt; * right track (average seek time) and wait for the right sector to be near&lt;br /&gt; * the head (rotation latency).  Sum up the two, and divide 1 sec to the&lt;br /&gt; * result -- you'll have max number of requests/sec a drive can perform,&lt;br /&gt; * not counting the actual data transfer (which reduces this number further).&lt;br /&gt; * With, say, 5ms seek time + rotation latency, we'll have 200 requests/sec,&lt;br /&gt; * which, with 4Kb request size, will be about 800Kb/sec - which is below&lt;br /&gt; * 1Mb/sec, not counting the actual transfer...&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;#define _GNU_SOURCE&lt;br /&gt;#define _BSD_SOURCE&lt;br /&gt;#define _LARGEFILE_SOURCE&lt;br /&gt;#define _FILE_OFFSET_BITS 64&lt;br /&gt;&lt;br /&gt;//#define USE_DEV_URANDOM       /* was not a good idea */&lt;br /&gt;&lt;br /&gt;#include &lt;sys/types.h&gt;&lt;br /&gt;#include &lt;unistd.h&gt;&lt;br /&gt;#include &lt;fcntl.h&gt;&lt;br /&gt;#include &lt;errno.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;sys/time.h&gt;&lt;br /&gt;#include &lt;sys/ioctl.h&gt;&lt;br /&gt;#include &lt;signal.h&gt;&lt;br /&gt;#include &lt;pthread.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;#ifndef BLKGETSIZE64&lt;br /&gt;#define BLKGETSIZE64 _IOR(0x12,114,size_t)&lt;br /&gt; /* linux-specific. return device size in bytes (u64 *arg) */&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;static void edie(const char *what) {&lt;br /&gt;  fprintf(stderr, "%s: %m \n", what);&lt;br /&gt;  exit(1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#ifdef USE_DEV_URANDOM&lt;br /&gt;static int randfd;&lt;br /&gt;#endif&lt;br /&gt;static int oflags;              // open flags&lt;br /&gt;static char *fn;                // filename&lt;br /&gt;static unsigned bs = 8192;      // block size&lt;br /&gt;static unsigned bc;             // block count (device size in blocks)&lt;br /&gt;static unsigned bm;             // blocks to do&lt;br /&gt;&lt;br /&gt;#define MFrnd   1&lt;br /&gt;#define MFwrt   2&lt;br /&gt;#define LinRd   0&lt;br /&gt;#define RndRd   MFrnd&lt;br /&gt;#define LinWr   MFwrt&lt;br /&gt;#define RndWr   (MFrnd|MFwrt)&lt;br /&gt;&lt;br /&gt;struct state {&lt;br /&gt;  int fd;&lt;br /&gt;  char *buf;&lt;br /&gt;  unsigned ioc;         // I/O count&lt;br /&gt;  int (*workfn)(struct state *, unsigned blocknr);&lt;br /&gt;  unsigned (*posfn)(struct state *s);&lt;br /&gt;  unsigned opi;         // operation index&lt;br /&gt;  unsigned i;           // curidx&lt;br /&gt;  double stime;         // start time&lt;br /&gt;  unsigned bn;          // current block number for linear i/o&lt;br /&gt;};&lt;br /&gt;static unsigned int alternate;&lt;br /&gt;static unsigned tioc;   // total i/o count&lt;br /&gt;static struct state *states;&lt;br /&gt;static unsigned nt[4];&lt;br /&gt;static unsigned ntt;&lt;br /&gt;static volatile unsigned running;&lt;br /&gt;static const char *const ion[4] = { "LinRd", "RndRd", "LinWr", "RndWr" };&lt;br /&gt;&lt;br /&gt;static pthread_mutex_t rnmtx = PTHREAD_MUTEX_INITIALIZER;&lt;br /&gt;static pthread_cond_t rncond = PTHREAD_COND_INITIALIZER;&lt;br /&gt;&lt;br /&gt;static double curtime(void) {&lt;br /&gt;  struct timeval tv;&lt;br /&gt;  gettimeofday(&amp;tv, NULL);&lt;br /&gt;  return tv.tv_sec + tv.tv_usec / 1000000.0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static unsigned randpos(struct state *s) {&lt;br /&gt;  unsigned n;&lt;br /&gt;#ifdef USE_DEV_URANDOM&lt;br /&gt;  read(randfd, &amp;n, sizeof(n));&lt;br /&gt;#else&lt;br /&gt;  n = lrand48();&lt;br /&gt;#endif&lt;br /&gt;  s = s;&lt;br /&gt;  if(alternate == 1) {&lt;br /&gt;    if(n &gt; bc/2) {&lt;br /&gt;      return bc-1;&lt;br /&gt;    } else {&lt;br /&gt;      return 0;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  return n % bc;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static unsigned linpos(struct state *s) {&lt;br /&gt;  if (s-&gt;bn &gt;= bc)&lt;br /&gt;    s-&gt;bn = 0;&lt;br /&gt;  return s-&gt;bn++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static int wwriter(struct state *s, unsigned b) {&lt;br /&gt;  return pwrite(s-&gt;fd, s-&gt;buf, bs, (off_t)b * bs);&lt;br /&gt;}&lt;br /&gt;static int wreader(struct state *s, unsigned b) {&lt;br /&gt;  return pread(s-&gt;fd, s-&gt;buf, bs, (off_t)b * bs);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void pst(FILE *f) {&lt;br /&gt;  double ct = curtime();&lt;br /&gt;  double r[4] = { 0, 0, 0, 0 };&lt;br /&gt;  unsigned c[4] = { 0, 0, 0, 0 };&lt;br /&gt;  unsigned i;&lt;br /&gt;  double d;&lt;br /&gt;  for(i = 0; i &lt; ntt; ++i) {&lt;br /&gt;    d = ct - states[i].stime;&lt;br /&gt;    r[states[i].opi] += states[i].ioc / d;&lt;br /&gt;    c[states[i].opi] += states[i].ioc;&lt;br /&gt;  }&lt;br /&gt;#if 1&lt;br /&gt;  for(i = 0; i &lt; 4; ++i)&lt;br /&gt;    if (c[i])&lt;br /&gt;      fprintf(f, " %s %u %.2f", ion[i], c[i], r[i] * bs / 1024 / 1024);&lt;br /&gt;#endif&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void incc() {&lt;br /&gt;  if (!(++tioc % 1000))&lt;br /&gt;    pthread_cond_signal(&amp;rncond);&lt;br /&gt;}&lt;br /&gt;static void decnr() {&lt;br /&gt;  pthread_mutex_lock(&amp;rnmtx);&lt;br /&gt;  --running;&lt;br /&gt;  pthread_mutex_unlock(&amp;rnmtx);&lt;br /&gt;  pthread_cond_broadcast(&amp;rncond);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static volatile int term;&lt;br /&gt;&lt;br /&gt;void *worker(void *arg) {&lt;br /&gt;  struct state *s = arg;&lt;br /&gt;  s-&gt;workfn = s-&gt;opi &amp; MFwrt ? wwriter : wreader;&lt;br /&gt;  s-&gt;posfn  = s-&gt;opi &amp; MFrnd ? randpos : linpos;&lt;br /&gt;  s-&gt;fd = open(fn, (s-&gt;opi &amp; MFwrt ? O_WRONLY : O_RDONLY) | oflags);&lt;br /&gt;  if (s-&gt;fd &lt; 0) {&lt;br /&gt;    int e = errno;&lt;br /&gt;    decnr();&lt;br /&gt;    errno = e;&lt;br /&gt;    edie(fn);&lt;br /&gt;  }&lt;br /&gt;  s-&gt;stime = curtime();&lt;br /&gt;  for(;;) {&lt;br /&gt;    if (term) break;&lt;br /&gt;    if (s-&gt;workfn(s, s-&gt;posfn(s)) &lt; 0) {&lt;br /&gt;      perror(ion[s-&gt;opi]);&lt;br /&gt;      break;&lt;br /&gt;    }&lt;br /&gt;    ++s-&gt;ioc;&lt;br /&gt;    incc();&lt;br /&gt;    if (bm &amp;&amp; s-&gt;ioc &gt;= bm) break;&lt;br /&gt;  }&lt;br /&gt;  decnr();&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void sig(int s) {&lt;br /&gt;  term = s;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char **argv) {&lt;br /&gt;  int c;&lt;br /&gt;  unsigned i, j;&lt;br /&gt;  unsigned tm = 0;&lt;br /&gt;  struct state *s;&lt;br /&gt;  char *buf;&lt;br /&gt;  struct timeval  first,&lt;br /&gt;                second,&lt;br /&gt;                lapsed;&lt;br /&gt;&lt;br /&gt;  while((c = getopt(argc, argv, "r::R::w::W::adsb:n:i:t:h")) != EOF) switch(c) {&lt;br /&gt;  case 'r': nt[LinRd] = optarg ? atoi(optarg) : 1; break;&lt;br /&gt;  case 'R': nt[RndRd] = optarg ? atoi(optarg) : 1; break;&lt;br /&gt;  case 'w': nt[LinWr] = optarg ? atoi(optarg) : 1; break;&lt;br /&gt;  case 'W': nt[RndWr] = optarg ? atoi(optarg) : 1; break;&lt;br /&gt;  case 'd': oflags |= O_DIRECT; break;&lt;br /&gt;  case 's': oflags |= O_SYNC; break;&lt;br /&gt;  case 'b': bs = atoi(optarg); break;&lt;br /&gt;  case 'n': bc = atoi(optarg); break;&lt;br /&gt;  case 'i': bm = atoi(optarg); break;&lt;br /&gt;  case 't': tm = atoi(optarg); break;&lt;br /&gt;  case 'a': alternate = 1; break;&lt;br /&gt;  case 'h':&lt;br /&gt;    puts(&lt;br /&gt;"iotest: perform I/O speed test\n"&lt;br /&gt;"Usage is: iotest [options] device-or-file\n"&lt;br /&gt;"options:\n"&lt;br /&gt;" -r[n] - linear read test (n readers)\n"&lt;br /&gt;" -R[n] - random read test (n readers)\n"&lt;br /&gt;" -w[n] - linear write test (n writers)\n"&lt;br /&gt;" -W[n] - random write test (n writers)\n"&lt;br /&gt;" -d - use direct I/O (O_DIRECT)\n"&lt;br /&gt;" -s - use syncronous I/O (O_SYNC)\n"&lt;br /&gt;" -b bs - blocksize (default is 8192)\n"&lt;br /&gt;" -n bc - block count (default is whole device/file)\n"&lt;br /&gt;" -i nb - number of I/O iterations to perform\n"&lt;br /&gt;" -t sec - time to spend on all I/O\n"&lt;br /&gt;" -h - this help\n"&lt;br /&gt;"It's ok to specify all, one or some of -r,-R,-w and -W\n"&lt;br /&gt;);&lt;br /&gt;    return 0;&lt;br /&gt;  default: fprintf(stderr, "try `iotest -h' for help\n"); exit(1);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if (optind + 1 != argc) {&lt;br /&gt;    fprintf(stderr, "exactly one device/file argument expected\n");&lt;br /&gt;    return 1;&lt;br /&gt;  }&lt;br /&gt;  fn = argv[optind];&lt;br /&gt;&lt;br /&gt;  ntt = nt[0] + nt[1] + nt[2] + nt[3];&lt;br /&gt;  if (!ntt)&lt;br /&gt;    nt[LinRd] = ntt = 1;&lt;br /&gt;&lt;br /&gt;  c = open(fn, (nt[LinWr] + nt[RndWr] ? O_RDWR : O_RDONLY) | oflags);&lt;br /&gt;  if (c &lt; 0) edie(fn);&lt;br /&gt;  if (!bc) {&lt;br /&gt;    unsigned long long sz;&lt;br /&gt;    struct stat st;&lt;br /&gt;    fstat(c, &amp;st);&lt;br /&gt;    if (st.st_size) sz = st.st_size;&lt;br /&gt;    else ioctl(c, BLKGETSIZE64, &amp;sz);&lt;br /&gt;    bc = sz / bs;&lt;br /&gt;    fprintf(stderr, "size = %lld (%u blocks)\n", sz, bc);&lt;br /&gt;  }&lt;br /&gt;  close(c);&lt;br /&gt;  if (nt[RndRd] || nt[RndWr]) {&lt;br /&gt;#ifdef USE_DEV_URANDOM&lt;br /&gt;    randfd = open("/dev/urandom", O_RDONLY);&lt;br /&gt;    if (randfd &lt; 0) edie("/dev/urandom");&lt;br /&gt;#else&lt;br /&gt;#if 0&lt;br /&gt;    struct timeval tv;&lt;br /&gt;    gettimeofday(&amp;tv, NULL);&lt;br /&gt;    srand48(tv.tv_usec ^ getpid());&lt;br /&gt;#else&lt;br /&gt;    srand48(0xfeda432); // arbitrary, to get repeated values on repeated runs&lt;br /&gt;#endif&lt;br /&gt;#endif&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  gettimeofday(&amp;first, NULL);&lt;br /&gt;&lt;br /&gt;  states = calloc(ntt, sizeof(*states));&lt;br /&gt;  s = states;&lt;br /&gt;&lt;br /&gt;  buf = valloc(ntt * bs);&lt;br /&gt;  if (tm) {&lt;br /&gt;    signal(SIGALRM, sig);&lt;br /&gt;    alarm(tm);&lt;br /&gt;  }&lt;br /&gt;  running = ntt;&lt;br /&gt;  for(j = 0; j &lt; 4; ++j)&lt;br /&gt;    for(i = 0; i &lt; nt[j]; ++i) {&lt;br /&gt;      pthread_t t;&lt;br /&gt;      s-&gt;buf = buf; buf += bs;&lt;br /&gt;      s-&gt;opi = j;&lt;br /&gt;      s-&gt;i = i;&lt;br /&gt;      pthread_create(&amp;t, NULL, worker, s++);&lt;br /&gt;    }&lt;br /&gt;  while(running) {&lt;br /&gt;    pthread_cond_wait(&amp;rncond, &amp;rnmtx);&lt;br /&gt;    putc('\r', stderr);&lt;br /&gt;    pst(stderr);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  putc('\r', stderr);&lt;br /&gt;  pst(stdout);&lt;br /&gt;  putc('\n', stdout);&lt;br /&gt;&lt;br /&gt;  gettimeofday(&amp;second, NULL);&lt;br /&gt;&lt;br /&gt;  if (first.tv_usec &gt; second.tv_usec) {&lt;br /&gt;    second.tv_usec += 1000000;&lt;br /&gt;    second.tv_sec--;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  lapsed.tv_usec = second.tv_usec - first.tv_usec;&lt;br /&gt;  lapsed.tv_sec  = second.tv_sec  - first.tv_sec;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  if (nt[RndRd] || nt[RndWr]) {&lt;br /&gt;        printf("I/O latency: %f\n", (lapsed.tv_sec*1000+(lapsed.tv_usec/1000))/(float)tioc);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 24 Jul 2008 16:50:04 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5821</guid>
      <author>sandos (John B&#228;ckstrand)</author>
    </item>
    <item>
      <title>pretty gridline creation</title>
      <link>http://snippets.dzone.com/posts/show/5738</link>
      <description>&lt;code&gt;&lt;br /&gt;private function DetermineGridSteps(min, max, num_steps) {&lt;br /&gt;    num_steps = num_steps || 5;&lt;br /&gt;    var rough_step = (max - min) / num_steps;&lt;br /&gt;    var exponent = Math.floor(Math.log(Math.abs(rough_step)) / Math.LN10); &lt;br /&gt;    if (rough_step == 0) exponent = 0;&lt;br /&gt;    &lt;br /&gt;    var tenToPower = Math.pow(10, exponent);&lt;br /&gt;    var mantissa = rough_step / tenToPower;&lt;br /&gt;    var step = Math.ceil(mantissa) * tenToPower;&lt;br /&gt;&lt;br /&gt;    var steps = Array();&lt;br /&gt;    steps.push(min);&lt;br /&gt;    &lt;br /&gt;    var next_step = (Math.ceil(min/step) * step);&lt;br /&gt;    if (next_step &lt;= min) next_step += step;&lt;br /&gt;    while(next_step &lt; max) {&lt;br /&gt;        steps.push(next_step);&lt;br /&gt;        next_step += step;&lt;br /&gt;    }&lt;br /&gt;    steps.push(max);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;0 --&gt; 10&lt;br /&gt;0__2__4__6__8__10&lt;br /&gt; &lt;br /&gt;1 --&gt; 10&lt;br /&gt;1__2__4__6__8__10&lt;br /&gt; &lt;br /&gt;0 --&gt; 50&lt;br /&gt;0__10__20__30__40__50&lt;br /&gt; &lt;br /&gt;1 --&gt; 499&lt;br /&gt;1__100__200__300__400__499&lt;br /&gt; &lt;br /&gt;0 --&gt; 1.7&lt;br /&gt;0__0.4__0.8__1.2__1.6__1.7&lt;br /&gt; &lt;br /&gt;1 --&gt; 49999&lt;br /&gt;1__10000__20000__30000__40000__49999&lt;br /&gt; &lt;br /&gt;361 --&gt; 413&lt;br /&gt;361__380__400__413&lt;br /&gt; </description>
      <pubDate>Tue, 08 Jul 2008 19:40:12 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5738</guid>
      <author>jamesv (james vreeland)</author>
    </item>
    <item>
      <title>Rails Notice/Warning Flash Message</title>
      <link>http://snippets.dzone.com/posts/show/5271</link>
      <description>Somewhat lame, but handy nonetheless.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;% if flash[:warning] or flash[:notice] %&gt;&lt;br /&gt;  &lt;div id="notice" &lt;% if flash[:warning] %&gt;class="warning"&lt;% end %&gt;&gt;&lt;br /&gt;    &lt;%= flash[:warning] || flash[:notice] %&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;script type="text/javascript"&gt;&lt;br /&gt;    setTimeout("new Effect.Fade('notice');", 15000)&lt;br /&gt;  &lt;/script&gt;&lt;br /&gt;&lt;% end %&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 23 Mar 2008 00:01:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5271</guid>
      <author>timmorgan (Tim Morgan)</author>
    </item>
    <item>
      <title>Convert files to avi</title>
      <link>http://snippets.dzone.com/posts/show/5187</link>
      <description>Bash one-liner that converts all *.flvs in the current directory to .avis.&lt;br /&gt;&lt;br /&gt;Note: To convert something else, just change the .flv extension.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;for i in *.flv; do mencoder -ovc lavc -oac mp3lame -o "$i.avi" "$i"; done&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 29 Feb 2008 12:58:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5187</guid>
      <author>scvalex (Alexandru Scvortov)</author>
    </item>
    <item>
      <title>Single-Line commenting in Actionscript with Textmate</title>
      <link>http://snippets.dzone.com/posts/show/5170</link>
      <description>- open the bundle editor and select the Actionscript bundle&lt;br /&gt;- use the add button to make a new preference item, give it a scope of source.actionscript&lt;br /&gt;- name it whatever&lt;br /&gt;- paste in the following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{   shellVariables = (&lt;br /&gt;        {   name = 'TM_COMMENT_START';&lt;br /&gt;            value = '// ';&lt;br /&gt;        },&lt;br /&gt;    );&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;- that's it! got these instructions on IRC from Infininight: http://pastie.textmate.org/private/clmfldbv2sexjcd7u6qjw</description>
      <pubDate>Sun, 24 Feb 2008 22:49:14 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5170</guid>
      <author>sikelianos (Zeke Sikelianos)</author>
    </item>
    <item>
      <title>AS3 FlashVars equivalent: LoaderInfo</title>
      <link>http://snippets.dzone.com/posts/show/5138</link>
      <description>// Add this to your package..&lt;br /&gt;import flash.text.*;&lt;br /&gt;&lt;br /&gt;// And throw this in wherever..&lt;br /&gt;var t:TextField = new TextField();&lt;br /&gt;t.autoSize = TextFieldAutoSize.LEFT;&lt;br /&gt;t.border = true;&lt;br /&gt;addChild(t);&lt;br /&gt;&lt;br /&gt;t.appendText("params:" + "\n");&lt;br /&gt;try {&lt;br /&gt;	var key:String;&lt;br /&gt;	var val:String;&lt;br /&gt;	var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters;&lt;br /&gt;	for (key in flashvars) {&lt;br /&gt;		val = String(flashvars[key]);&lt;br /&gt;		t.appendText("\t" + key + ":\t" + val + "\n");&lt;br /&gt;	}&lt;br /&gt;} catch (error:Error) {&lt;br /&gt;	t.appendText(error);&lt;br /&gt;}</description>
      <pubDate>Wed, 13 Feb 2008 18:25:17 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5138</guid>
      <author>sikelianos (Zeke Sikelianos)</author>
    </item>
    <item>
      <title>PHP for removing www from request and redirecting. (Useful for System.security.allowDomain issues)</title>
      <link>http://snippets.dzone.com/posts/show/5028</link>
      <description>&lt;code&gt;&lt;br /&gt;&lt;?&lt;br /&gt;	// if www.domain.com, redirect to domain.com&lt;br /&gt;	if (strtolower(substr($_SERVER['HTTP_HOST'], 0, 3)) == "www") {&lt;br /&gt;		header("Location: http://rgcreative.com" . $_SERVER['REQUEST_URI']);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	// Full path to current URL (including query string)&lt;br /&gt;	//echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 22 Jan 2008 21:09:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5028</guid>
      <author>sikelianos (Zeke Sikelianos)</author>
    </item>
    <item>
      <title>Rails helper: display flash hash</title>
      <link>http://snippets.dzone.com/posts/show/4943</link>
      <description>Rails Helper&lt;br /&gt;&lt;br /&gt;&lt;code rails&gt;&lt;br /&gt;	def print_flash&lt;br /&gt;		msg = ''&lt;br /&gt;		flash.each_pair do |type, message|&lt;br /&gt;			text = content_tag(:strong, type.to_s.capitalize) &lt;&lt; ": " &lt;&lt;	message&lt;br /&gt;			msg &lt;&lt; content_tag(:p, text, :class =&gt; "flash #{type}")&lt;br /&gt;		end &lt;br /&gt;		msg&lt;br /&gt;	end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 03 Jan 2008 02:32:34 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4943</guid>
      <author>tymps (Paulo Pereira)</author>
    </item>
    <item>
      <title>&#22312;fd&#20013;&#28155;&#21152;&#19968;&#20010;&#25353;&#38062;</title>
      <link>http://snippets.dzone.com/posts/show/4825</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;button label="ANT Build" click="PluginCommand" image="54" tag="Run;SaveAll;ant" shortcut="CtrlF7" /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 29 Nov 2007 07:39:06 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4825</guid>
      <author>yuanyc (yuanyunchang)</author>
    </item>
    <item>
      <title>&#32593;&#39029;&#19978;&#23884;&#20837;flash &#25773;&#25918;&#22120;</title>
      <link>http://snippets.dzone.com/posts/show/4824</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&lt;br /&gt;codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&lt;br /&gt;WIDTH="550" HEIGHT="400" id="myMovieName"&gt;&lt;br /&gt;&lt;PARAM NAME=movie VALUE="myFlashMovie.swf"&gt;&lt;br /&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;br /&gt;&lt;PARAM NAME=bgcolor VALUE=#FFFFFF&gt;&lt;br /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;br /&gt;&lt;EMBED src="/support/flash/ts/documents/myFlashMovie.swf" quality=high bgcolor=#FFFFFF WIDTH="550" HEIGHT="400"&lt;br /&gt;allowFullScreen="true"&lt;br /&gt;NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"&lt;br /&gt;PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"&gt;&lt;br /&gt;&lt;/EMBED&gt;&lt;br /&gt;&lt;/OBJECT&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 29 Nov 2007 07:16:20 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4824</guid>
      <author>yuanyc (yuanyunchang)</author>
    </item>
  </channel>
</rss>
