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

______________________

Webinar
One Click, Universal Protection: Implementing Centralized Security Policies on Linux Systems

As Linux continues to play an ever increasing role in corporate data centers and institutions, ensuring the integrity and protection of these systems must be a priority. With 60% of the world's websites and an increasing share of organization's mission-critical workloads running on Linux, failing to stop malware and other advanced threats on Linux can increasingly impact an organization's reputation and bottom line.

Learn More

Sponsored by Bit9

Webinar
Linux Backup and Recovery Webinar

Most companies incorporate backup procedures for critical data, which can be restored quickly if a loss occurs. However, fewer companies are prepared for catastrophic system failures, in which they lose all data, the entire operating system, applications, settings, patches and more, reducing their system(s) to “bare metal.” After all, before data can be restored to a system, there must be a system to restore it to.

In this one hour webinar, learn how to enhance your existing backup strategies for better disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible bare-metal recovery solution for UNIX and Linux systems.

Learn More

Sponsored by Storix