upFRONT

Stop the Presses, LJ Index and more.
Listing. Fun With Sines
// gcc -Wall -O2 sine.c -lvgagl -lvga -lm
#include <vga.h> /* vgalib */
#include <vgagl.h> /* advanced */
#include <math.h> /* sines! */
#include <stdlib.h> /* malloc */
#define VGAMODE G320x200x256
GraphicsContext *physical_screen;
GraphicsContext *virtual_screen;
GraphicsContext *scroll_board;
int main(void)
{
  double a, b, c, d; /* amp, phase, period, shift */
  double aa,bb,cc,dd; /* random values for fun */
  short int p_pos, t_pos; /* pixel & text */
  short int x,y,z; /* y coord, x & z counters */
  char key; /* to wait for keypress */
12345678901234567890123456789012345678901234567890
/* The following text between quotes should be all
   one line. Ignore wrapping */
  char text[] = "....................................Hello happy world and welcome to another episode of Stupid Programming Tricks. This is our scrolltext, well the idea is that you replace this text with your megagreetings list or the number to your pirate BBS. I wrote this one on Conectiva Linux which has the coolest characters but SVGALIB won't print them properly. Please experiment with different values, and try plugging sines into other sines, you can create the most remarkable though often illegible effects. Shout outs to Rigor Mortis (Riggie!), Red Sector, Triad, Fairlight, Quartex, Cynas, DM, RAiD and everyone else who's still alive! Hy3n4 m4s f1n4 out.........................................";
  double textl=sizeof(text); /* text length */
  vga_init(); /* here begin standard inits */
  vga_setmode(VGAMODE); /* we'll allocate our */
  gl_setcontextvga(VGAMODE); /* graphics areas */
  physical_screen=gl_allocatecontext();
  gl_getcontext(physical_screen);
  gl_setcontextvgavirtual(VGAMODE);
  virtual_screen=gl_allocatecontext();
  gl_getcontext(virtual_screen);
  gl_clearscreen(0); /* better clear the screen */
  scroll_board = malloc( (WIDTH/8+1)*8*8*BYTESPERPIXEL);
  gl_setcontextvirtual(WIDTH+8,8,BYTESPERPIXEL,8,scroll_board);
  scroll_board = gl_allocatecontext(); /* ready */
  gl_getcontext(scroll_board);
  gl_setwritemode(FONT_COMPRESSED);
  gl_setfont(8,8,gl_font8x8);
  gl_setfontcolors(0,1);
  gl_setpalettecolor(1,63,13,24);
  srand(time(NULL));
  a=b=c=d=x=y=0; /* amp, phase, period, shift */
  t_pos=p_pos=0; /* text & pixel position */
  aa=rand()%64+16.0; bb=rand()%64+16.0;
  cc=rand()%64+16.0; dd=rand()%128+128.0;
  gl_setcontext(virtual_screen);
  /* main loop */
  for (key=0; key==0; key=vga_getkey()) {
    p_pos += 2; /* adjust speed here */
    /* this redraws the text at each new letter */
    while (p_pos > 8) {
      gl_setcontext(scroll_board);
      gl_writen(0,0,WIDTH/8, &text[t_pos]);
      t_pos++; /* advance text */
      p_pos-=8; /* reset p_pos */
      if (t_pos >= textl)
         t_pos=0; /* reset t_pos */
      gl_setcontext(virtual_screen);
    }
    /* These equations produce readable text
     * but please experiment to witness the
     * potential of illegible sine scrolling
     */
    x+=1; /* a counter for more phase shift */
    for (z=0; z<320; z++) {
      a = 24*sin((z+x)/aa)+24;
      b = 64*sin((x)/bb)+32;
      c = cc*sin((z+x)/cc)+128;
      d = (32-a)*sin((x-z)/dd)+124-a;
      y = a*sin((z+b)/c)+d; /* standard format */
      gl_copyboxfromcontext(scroll_board, z+p_pos,
         0, 1, 8, z, y);
    }
    gl_setpalettecolor(1,31*sin(t_pos/2.0)+32,
       31*sin(t_pos/4.0)+32,
       31*sin(t_pos/8.0)+32);
    gl_copyscreen(physical_screen); /* update */
    gl_clearscreen(0); /* otherwise it smears */
    vga_waitretrace(); /* hold still a*/
  }
  return 0; /* on principle ;) */
}
LJ INDEX—MAY 2000
  1. Total number of patented applications listed by the U.S. Patent & Trademark Office as of June 30, 1999: 2,090,902

  2. Percentage of those patents with foreign origins: 43%

  3. Position of Japan among foreign countries holding U.S. patents: #1

  4. Percentage of foreign-origin patents held by Japan: 41%

  5. Position of IBM among U.S. patent holders: #1

  6. Number of patents held by IBM: 20,725

  7. Position of Canon among U.S. patent holders: #2

  8. Number of patents held by Canon: 18,043

  9. Number of Japanese companies among the top ten U.S. patent holders: 6

  10. Number of patents held by Microsoft: 1,167

  11. Number of patents held by Walker Asset Management Corporation (best known for Priceline.com): 36

  12. Number of patents in which the name “Amazon.com” is mentioned: 9

  13. Number of patents held by Amazon.com: 7

  14. Number of patents that mention the word “Linux”: 49

  15. Percentage of those in which Linux is used to demonstrate the patent's purpose: 100%

  16. Revenues from patent licensing in 1990: $15 billion US

  17. Revenues from patent licensing in 1998: $100 billion US

  18. Number of shares of Microsoft stock owned by Bill Gates: 780 million

  19. Number of shares of Microsoft stock owned by Paul Allen: 260 million

  20. Number of shares Bill Gates filed with securities regulators to sell: 300,000

  21. Percentage change in the stock price of RHAT in the five weeks after the antitrust ruling: +218

  22. Number of feet by which Arctic sea ice has thinned since 1976: 4

  23. Number of colonies of Antarctic Adélie penguins that have disappeared since 1988: 11

______________________

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState