File: issue33.html

package info (click to toggle)
lg-issue33 2-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,284 kB
  • ctags: 137
  • sloc: makefile: 36; sh: 4
file content (11907 lines) | stat: -rw-r--r-- 510,616 bytes parent folder | download | duplicates (2)
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
<!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 &copy; 1996-98 Specialized Systems Consultants, Inc.</H5>
</center>

<P> <HR> <P> 
<!--==================================================================-->
<center>
<H1>Welcome to Linux Gazette!<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>October 1998 Issue #33</H1>

<P> <HR> <P>
<table><tr>
<td rowspan=4>
<UL>
<LI><A HREF="../lg_frontpage.html">The Front Page</A> 
<LI><A HREF="./lg_mail33.html">The MailBag</A> 
<ul>
<li><a HREF="./lg_mail33.html#help">Help Wanted</a>
<li><a HREF="./lg_mail33.html#gen">General Mail</a>
</ul>
<LI><A HREF="./lg_tips33.html">More 2 Cent Tips</A>
<LI><A HREF="./lg_bytes33.html">News Bytes</A>  
<ul>
<li><a HREF="./lg_bytes33.html#general">News in General</a>
<li><a HREF="./lg_bytes33.html#software">Software Announcements</a>
</ul>
<LI><A HREF="./lg_answer33.html">The Answer Guy</A>, by James T. Dennis
<LI><A HREF="./vrenios.html">CHAOS Part 2: Readying System Software</a>, by
Alex Vrenios
<LI><A HREF="./york.html">Creating a Linux Certification and Training
Program</A>, by Dan York
<LI><A HREF="./richardson.html">DialMon: The Linux/Windows diald
Monitor</a>, by Mike Richardson
<LI><A HREF="./kacur.html">The Fifth International Linux Congress</a>, by
John Kacur
<LI><A HREF="./nelson.html">Fun with Client/Server Computing</a>, by Damir Naden
<LI><A HREF="./burtch.html">Gnat and Linux: C++ and Java Under
Fire, by Ken O. Burtch
<LI><A HREF="./gm.html">Graphics Muse</A>, by Michael J. Hammel
<LI><A HREF="./schweizer.html">Heroes and Friends--Linux Comes of Age</A>,
by Jim Schweizer
<LI><A HREF="./jenkins2.html">Linux Installation Primer: X Configuration</a>,
by Ron Jenkins
<LI>New Release Reviews, by Larry Ayers
<ul>
<li><A HREF="./ayers1.html">DICT and Word Inspector</a>
<li><A HREF="./ayers2.html">Pysol: Python-Powered Solitaire</a>
<li><A HREF="./ayers3.html">Another Typing Tutor</a>
</ul>
<LI><A HREF="./naden.html">Mechanical CAD for Linux</a>, by Damir Naden
<LI><A HREF="./bentson.html">The Proper Image for Linux</a>, by Randolph
Bentson
<LI><A HREF="./wilson.html">Serializing Web Application Requests</a>, by
Colin C. Wilson
<LI><A HREF="./defurne.html">Thoughts about Linux</a>, by Jurgen Defurne
<LI><A HREF="./kunkel.html">Using the Xbase DBMS in a Linux
Environment</a>, by Gary Kunkel
<LI><A HREF="./johnson.html">Book Review: Website Automation Toolkit</a>,
by Andrew Johnson
<LI><A HREF="./lg_backpage33.html">The Back Page</A> 
<ul>
<li><a HREF="./lg_backpage33.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage33.html#notlinux">Not Linux</a>
</UL>
</UL>
</td>
</tr><tr>
<td align=center>
<A HREF="../issue31/lg_bytes31.html#als"> 
<img src="./gx/als-1998.jpg" border=0 alt="">
</a>
</td>
</tr><tr>
<td align=center>
<A HREF="lg_answer33.html"> 
<img src="../gx/dennis/answerwiz-255.gif" border=0 alt="">
</a><BR> 
<A HREF="lg_answer33.html"><i>The Answer Guy</i></a>  
</td>
</tr><tr>
<td align=center>
<A HREF="gm.html">
<IMG SRC="../gx/hammel/banner-3.gif" border=0 alt="">
</a>
</td>
</tr>
</table> 

<P> <HR><P>

<!--=============================================================-->
<A HREF="./issue33.txt">TWDT 1 (text)</A><BR>
<A HREF="./issue33.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>

<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_mail33.html#help">Help Wanted -- Article Ideas</a>
<li><a HREF="./lg_mail33.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: Tue, 08 Sep 1998 11:02:29 +0000<BR> 
From: Kyrre Aalerud, <A HREF="mailto:kyrrea@student.matnat.uio.no">
kyrrea@student.matnat.uio.no</A> <BR> 
Subject: <font color="maroon">Minilinux fails to load X11</font>
<P>
I am out of ideas...<BR> 
I am trying to get Mini-Linux  to load the accompanied X11, but i get a
error about some directory or file that dows not exist, and a
"Unexpected signal 13" error...
What am I forgetting...   Is there anything special I have to load to
get the D.. thing to work ?
<P>
PS: I cant find any CDrom-devices either....
  (I have looked in etc and averywhere else but...)
<P>
h.e.l.p.....
<P>
Kyrre

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 06 Sep 1998 23:29:09 -0400<BR> 
From: Nathaniel Smith, <A HREF="mailto:slow@negia.net">
slow@negia.net</A> <BR> 
Subject: <font color="maroon">Lost newbe</font> 
<P>
I find it hard to believe that every one thinks that all people know how
to operate linux perfectly, and that all are born with this information.
This must be the case for I cannot find a site on the web that teaches
you how to operate Linux (and I am desperate to find one), I have run
into people using windows 95&98 (12 people) that would like to try Linux
but cant find out how to operate it (there is a real good deal at best
buy on Red Hat Linux) so I bought it and a new Western Digital hard
drive to put it on, though my trying to find somewhere that teaches
Linux, I came upon an article that says you can have Linux and windows
on the same computer while learning Linux, and after learning you can
delete windows. Sooooooo how about giving us articles on how to utilize
this great OS, and help hundreds us poor lost souls that are desperate.
thank you
Nathaniel alias poor lost desperate newbe

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 03 Sep 1998 15:04:43 -0600<BR> 
From: Hugh Shane, <A HREF="mailto:hughs@tetonvalley.net">
hughs@tetonvalley.net</A> <BR> 
Subject: <font color="maroon">Booting from LS120 disk drives</font> 
<P>
I know this information is out there somewhere, but I'd like to hear from anyone
who has successfully gotten an x86 Linux machine to boot from an LS120
disk drive.
<P>
    Hugh

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 02 Sep 1998 23:01:25 +0800<BR> 
From: Lye On Siong, <A HREF="mailto:oslye@pacific.net.sg">
oslye@pacific.net.sg</A> <BR> 
Subject: <font color="maroon">some qn</font> 
<P>
Just like to ask a few questions.
<P>
My CD-ROM is on /dev/hdd. When I want to mount it, it tells me that it's
not a block device.
(previously, it was running fine.. dunno what happen)
<P>
How can my Linux kernel support PPP? How do I recompile my kernel to make
it work?
<P>
Johnny

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 10 Sep 1998 02:03:46 +0530 (IST)<BR> 
From: M Anand, <A HREF="mailto:manand@bhaskara.ee.iisc.ernet.in">
manand@bhaskara.ee.iisc.ernet.in</A> <BR> 
Subject: <font color="maroon">proxy</font> 
<P>
How do I set the proxy server for lynx and irc in Red-Hat Linux 5.1/SuSE
Linux 5.1?
<P>
Anand

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 17 Sep 1998 01:25:44 PDT<BR> 
From: parmentier remy, <A HREF="mailto:parmentier_remy@hotmail.com">
parmentier_remy@hotmail.com</A> <BR> 
Subject: <font color="maroon">Help : Modem + HP</font> 
<P>
I am close to commiting suicide!<BR> 
I have already spent hours trying to fix my Supra336 PnP internal modem 
and my HP DeskJet 720C under Linux!<BR> 
The result is always the same,  no communication with teh modem and no 
page printed on the HP printer!<BR> 
Could someone help me, I am close to abandon!<BR> 
Thank you for answering.
( I use the RedHat 5.1 distribution )

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 15 Sep 1998 13:35:01 -0400<BR> 
From: Taylor Sutherland, <A HREF="mailto:taylors@boone.net">
taylors@boone.net</A> <BR> 
Subject: <font color="maroon">Canon BJC-250 question</font> 
<P>
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?
<P>
Thank you.<BR> 
Taylor Sutherland

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 25 Aug 1998 18:39:03 -0600 (CST)<BR> 
From: Dion Rowney, <A HREF="mailto:rowney@enterprise.usask.ca">
rowney@enterprise.usask.ca</A> <BR> 
Subject: <font color="maroon">Article Suggestion</font> 
<P>
I just had a nasty problem this morning.  I had recompiled my kernel the
night before and forgot to tell lilo where it was.  In the morning I found
it sitting at the "loading linux ..." prompt hung.  My idea would be help
on getting around this problem, maybe a little about how lilo knows where
the boot kernel is, recovering easily from this mistake (a good idea since
as usual I chose the difficult way).  
<P>
Just am idea because I felt like a tool because I had no idea how it could
be fixed, aside from reinstalling or upgrading using the boot install
disks.
<P>
Thanks,<BR> 
Dion Rowney                     

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 22 Sep 1998 11:51:10 +0200<BR> 
From: Jan Jansta, <A HREF="mailto:ftx@rainside.sk">ftx@rainside.sk</A> <BR> 
Subject: <font color="maroon">Problem mounting vfat filesystem ...</font> 
<P> 
I have permanent problem with mounting any vfat/dos filesystem with
write permisions for all users on my Linux machine. 
I'm using RedHat 5.1, kernel version 2.0.34
<P>
I've already tried - 
<PRE> 
mount -t vfat -o mode=0777 /dev/hdb1 /dos
</PRE> 
I've also tried to change permisions for /dos via 
<PRE> 
chmod 777 /dos
</PRE> 
It didn't work as well.
<P>
Does someone know what's not working properly ?
<P>
thanx<BR> 
Jan

<a name="gen"></a>
<P> <hr> <P> 
<!-- =================================================================== -->
<center><H3><font color="maroon">General Mail</font></H3></center>

<P> <HR> <P> 
<!--====================================================================-->
<A name="twdt"></A> 
Last month I printed a letter from Hugo van der Kooij in which he asked me
to quit using the word "Damn" in the Table of Contents of <i>Linux
Gazette</i>. I said I would put it to a vote. Well, I received quite a bit
of mail on this issue, and the vote was essentially 6 to 1 in favor of
keeping this word. 
<P> 
That said, I intend to renege on my statement that I
would abide by the vote. Much of the mail I received is not printable, and
some of it is quite entertaining. The best, most well-thought out answer I
received is printed directly below, and this letter alone convinced me that
I should accede to Hugo's request. From now on I intend to call that
section containing the entire issue TWDT -- this is the best compromise I
could think of. We all know what TWDT stands for, it will just not be printed 
there. Newcomers may be a bit confused but they'll survive.
<P> 
Enough said. This is my final decision, so please don't write asking me to
change my mind. As many reminded me, we have more important things to spend our
time considering, such as helping others to learn and love Linux as we do.
<P> 
Marjorie Richardson, Overseer, Editor and now Ruler of <i>Linux
Gazette</i> :-)<BR> 
<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A> 

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 2 Sep 1998 15:12:55 +0800<BR> 
From: Mark Harrison, <A HREF="mailto:markh@usai.asiainfo.com">
markh@usai.asiainfo.com</A> <BR> 
Subject: <font color="maroon">Drop the "Damn"</font> 
<P> 
Given his e-mail address, there is a reasonable chance that
Hugo van der Kooij may be a member of the Dutch Reformed
Church, probably one of the most strict Protestant denominations.
<P> 
They are generally quite excellent people (most of the Dutch
nationals imprisoned by the Nazis for sheltering Jews were
in this denomination, following their [correct] interpretation
of the Bible.). They are also very strict in observing proper behavior,
such as no swearing.
<P> 
I don't advocate a wholesale removal of the various naughty
words from the culture (The title of Audie Murphy's famous
book summed up his experiences perfectly), but for this
case, I see no harm in dropping  the offending word.
<P> 
Mark Harrison, Beijing, China

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 09 Sep 1998 14:03:04 +0200<BR> 
From: Sean Mota, <A HREF="mailto:smota@polar.es">smota@polar.es</A> <BR> 
Subject: <font color="maroon">links between identical sections</font> 
<P>
	Now and then I've found myself reading an article in an issue of the
gazette and thinking of a past article that I read in a previous issue,
both belonging to the same section (normally the Graphics Muse). Since I
would like to read again that past article and I never remember in which
issue it was published, I have to go to the main page, select an issue
an view the table of contents, and finally click on the section I'm
interested in. It would be much quicker if "last"/"next" buttons between
articles of different issues but belonging to the same section were
available. That way, if I were reading the Graphics Muse's article of
this month and he mentions something about OpenGL, I might remember
there was an article on this subject (OpenGL) a couple of past issues;
then, with the aid of the "last" button, I would start reviewing past
articles of the Graphics Muse until I found the one I was interested in.
<P>
	Maybe this is a bit complicated to implement, but I think it would
certainly be a great improvement. Another application would be: a
quicker way to find an article belonging to a certain section whose
subject is not listed in the table of contents. The search engine of the
gazette is only available online.
<P>
Thanks for the marvelous job your doing with the gazette:
<P>
	Sean Mota
<P>
<blockquote> <I> 
(This is a good suggestion and one I have gotten before. It is actually on
my list of things to do. I'll try to find time for it sooner rather than later.
--Editor)</I> </blockquote> 

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 8 Sep 1998 23:43:49 -0400<BR> 
From: "Michael Longval", <A HREF="mailto:mlongval@interlinx.qc.ca">
mlongval@interlinx.qc.ca</A> <BR> 
Subject: <font color="maroon">Linux installation not easy.</font> 
<P>
As a computer user and technology observer for the past 20 years
I fear the domination of the tech sector by one very large corporation
aka Microsoft.  We are alas left at the mercy of a company not known for
the quality of it's products, but rather for the intensity of it's 
marketing of it's products.
<P>
Windows 98 works ok for me, but I'm frustrated by it's instability.
<P>
I have installed Red Hat 5.0 on my IBM ThinkPad 380, but can't get the 
X windows part up and running.  I'm left with the shell only prompt.
<P>
I have looked at the manuals and checked the newsgroups, the web sites
but still can't get the X windows parts up and running.  I'm not a tech
dummy.  I've played with complicated systems before.  Understand C, Rexx,
Pascal, Delphi, and others.
<P>
However I'm still stranded.  So I still use Windows 98...
<P>
The day I can easily boot up Linux to a STANDARD GUI DESKTOP is the day 
I'll start thinking about switching.  Unfortunately for me that day has
not arrived yet.
<P>
Michael J. Longval M.D.

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 8 Sep 1998 23:33:36 -0400<BR> 
From: "Chris Bruner", <A HREF="mailto:cbruner@ionline.net">
cbruner@ionline.net</A> <BR> 
Subject: <font color="maroon">support problems</font> 
<P>
I purchased the Red Hat brand of Linux chiefly because of the 90 day
installation support.
In a nutshell, at first I'm told
some very basic things which I had already tried, then when I ask if an
alternative was a viable solution (recompiling the kernel with PnP built
in) I was told that my problem  was no longer covered under the
installation support. I still don't have sound and as for my other open
tickets, only one other was responded to (after weeks) and I haven't heard
back on the rest.  So I'm not on the Internet yet, I have no sound yet, and I'll 
never recommend Red Hat to anyone because of their support.
<P>
Chris Bruner

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 01 Sep 1998 21:08:59 +0000<BR> 
From: Trey, <A HREF="mailto:abelew@wesleyan.edu">
abelew@wesleyan.edu</A> <BR> 
Subject: <font color="maroon">Linux Desktop</font> 
<P>
I was flipping through the recent Linux Gazette and noted the article
about Linux on the desktop.  I thought perhaps I should chime in as I
have had a purely Linux system sitting upon my desk now for well over a
year and would not have it any other way.  
<P> 
Ashton Trey Belew

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 15 Sep 1998 16:01:11 +0100<BR> 
From: Peter Houppermans, <A HREF="mailto:envelope@pobox.com">
envelope@pobox.com</A> <BR> 
Subject: <font color="maroon">Linux acceptance</font> 
<P>
I've seen quite a number of letters stating that to improve Linux
acceptance it should have an easier to use GUI et all.
<P>
I'm not sure I'd agree entirely with this.  The point where Linux is
making inroads is not in the desktop arena.  I'll most likely attract
lots of flames for this, but Microsoft has done a reasonable job in
making their desktop products useful, and easy to use.  How many people
need the manual with Word or Excel ?
<P>
Sure, it crashes frequently for some people, but for a large number of
users it doesn't matter because they shut down the machine at the end of
the day, conveniently saving slow memory leaks from exposure.  And I
have a W95 system that tends to get rebooted every two weeks, just to
clear it up.  No need to do it more often.  So that community has zero
interest in an alternative, other than for cost saving reasons.  To
convince those people you'll have to give them something that is nearly
as easy to use, at a lower cost -and that includes staff costs for
setting it up.  What is needed here is a way of actually restricting the
richness of the XWindows interface so users don't get the chance to
shoot themselves in both feet and reduce support needs.  I'm sure it is
possible, but there has been no concise effort towards this idea.  KDA,
Gnome and Enlightenment are extremely impressive efforts, but they
enrich the setup, not lock it down for Johnny EndUser who just wants to
run his word processor.  Give them a command line and they'll panic
;-(...
<P>
Where Linux *IS* making a difference is in the server arena.  If a
desktop crashes it affects one (1) user, if a server crashes it takes
everyone down who's connected.  Instantly, the impact on productivity is
amplified.  What creates reluctance to accept Linux as an alternative is
the lack of people to shout at if it goes wrong.  Also, there are only
now a few companies that offer a Service Level Agreement on support for
Linux, and lack of support is a very nervous thing if you run mission
critical applications.  Yes, I agree with many that the main issue is
not support, but not having a need for it, but one has to deal with
disaster recovery as well, and overall system management.  Only now CA
has brought out some management modules for Linux (to make Linux systems
visible in Unicenter TNG).  And I'm not aware of any HP OpenView MIBs
for Linux (if there are I'd be very happy to hear of them and I'd like
to see both of these packages themselves run on Linux).
<P>
Any company that wants to use Linux wholesale will want to manage it,
and until hard commercial tools are there this won't happen unless
through the back door.
<P>
I would be very happy to see an alternative to NT, if only just for
keeping MS on their toes.  Linux is very hard on its way to become that
alternative, but I'm not sure it is entirely there yet.  Support from
SUN, Oracle, CA and Netscape makes a difference, but it takes more than
that to change a corporate strategy.  Case studies where Linux is shown
to be a viable Enterprise OS with the associated cost savings, improved
reliability, manageability and all that goes with being a grown up OS
will do more to convince the board than any other well-meant effort.
<P>
Just an observation....
<P>
For the record:
<P>
I myself use Red Hat Linux 5.1 on most of my home systems (except the one
W95 box) and on my Toshiba 480CDT (HOWTO web page appearing shortly), and
I've used virtually every version of Windows and DOS since DoubleDOS
appeared, and all versions of OS/2 since v2.  I've been a Linux user for
about 6 years, having had no previous exposure to Real Operating Systems
&lt;g&gt;.  So I'm not an expert, but I'm not entirely clueless either ;-).
<P>
Regards,   Peter

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 23 Sep 1998 15:31:40 +0200<BR> 
From: Ian Carr-de Avelon, <A HREF="mailto:ian@emit.pl">ian@emit.pl</A> <BR> 
Subject: <font color="maroon">GUI and novices</font> 
<P>
This is my response to the letters by James Mitchell (Sep  98) and Antony
Chesser (Aug 98).
Well designed GUI's speed up the learning process because the user can see
that there is a possibility. The user may have no idea what the icon of
scissors will do, or even recognize that they are scissors, but if there
is a button you learn very quickly you can click on it with the mouse and
so lets give it a try. That simple peace of knowledge, that buttons can
be pressed, will get you quite a way in a GUI. Knowing that you could 
use "&lt;esc&gt;d5" in vi will not take you nearly as far. 
Not only novices benefit, also it is a major help to users who work 
with a program only occasionally. Finding the button which does "that"
is easier than remembering a sequence of keys. Microsoft have added
standardization. You click on the little x button and the program stops.
A command line program could require you to type: end, quit, exit, bye...
etc. Even with a foreign language version of Windows you can normally
manage a few things, just because the layout is standard.
I run a local ISP so I have used Linux daily for over 2 years, almost
exclusively in command line mode. I understand its strengths but I can
still recognize the problems which other users would have. Possibly
that is because I visit clients to help them with their problems, or
maybe it is because I worked as a teacher and later as a designer of
educational material. At any rate I can see that Linux is not yet a real
option for most users and anyone who cannot should offer a few hours 
of their time to support new users, the revelation would come quite
soon.
<P> 
This is a truth which I find quite painful to take, because there
is nothing about the Linux OS which makes it so.  The installation
does not have to end with # prompt and Linux has not just one but
several GUIs available any of which could be used in a consistent
way by well designed programs. Although Microsoft have done more
work in that respect, they are as far from being the best that their
could ever be as their OS is in other ways.
Many people who really want to see Linux being more widely adopted 
feel that this does not matter. Linux is being adopted for server
applications and they hope that that will be enough to get people
to make the effort to learn how to use it. My feeling is that
most users choose NT because it looks like 95 which they have on 
their work station. Linux needs to selectable for basic office tasks 
before it will be widely accepted. Maybe Linux Gazette should run a 
competition for a best GPL suit for novice users:
<ul>
<li>Windows Manger
<li>email program
<li>Browser
<li>Editor
<li>Spread Sheet
</ul>
<P>
A small novice package which could be included in most distributions and 
start up at boot time or alternatively with a standard command like
"desktop". Would make it much easier to say to clients who's win95 has 
died again "Why don't you let me install Linux for you?"
Yours
Ian

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 23 Sep 1998 14:24:23 +0200<BR> 
From: Stefan Zandburg, <A HREF="mailto:szandb@cis.HZeeland.nl">
szandb@cis.HZeeland.nl</A> <BR> 
Subject: <font color="maroon">text browsers</font> 
<P>
Ijust have read some of the Linux Gazette. It contains quite a bunch
of useful information. On many pages some of that information is for
me difficult or impossible to read.
<P>
The reason is that &lt;B&gt; bold text &lt;/B&gt; is hardly visible in the browser
i use. (lynx 2.7.2 beta, alternative, an even older version)
The machine that acts as a terminal to the Novell Server only has a
monochrome screen. As you may have concluded from stating the Server,
it is beyond my abilities as user to install a graphical browser.
I wish to read the Linux Gazette though and cannot do that on my home
computer because i do not have an internet connection there.
<P>
If you'd use other tags like the Italic tags &lt;I&gt;.. &lt;/I&gt; or the
Font tags &lt;Font size+1&gt;...&lt;/Font size&gt; people like me would be
able to read your Gazette. The browser ignores unknown tags but
it does support the bold tags and displays it awkward. 
<P>
Here at our institute nearly 5000 students use the same browser to
regularly visit the web. Although we all wouldd prefer using a graphical
browser that is not likely to happen within reasonable time. Using
the other tags in the future however would be only a small effort
for you.
<P> 
Stefan Zandburg
<blockquote><I> I sympathize with you, but
bold and italic are used for two different purposes. If I always used
italics, the difference in emphasis would not be apparent. There is also
the problem that most articles come to me already tagged and I don't have
the time to change them. I will think about this though and see what I can
come up with. I mainly use bold for the subject lines of letters. That I
can change easily. Consider it done. --Editor </I> </blockquote> 

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 21 Sep 1998 14:34:18 EDT<BR> 
From: <A HREF="mailto:Bobnhlinux@aol.com">Bobnhlinux@aol.com</A> <BR> 
Subject: <font color="maroon">Linux is the #1 OS on the Internet</font> 
<P>
Many of you may have seen these results, but I hadn't seen
anything on any of these lists, so here it is:
<P>
Based on surveys of 810,000 European Internet servers, the 
Linux Operating System is the most used OS on the Internet.
Three different categories were polled, web servers, FTP servers,
and news servers. Not only was Linux number one in each category,
but there wasn't even a consistent number two.
Linux's market share went from 25.7% for news servers, to 26.9%
for web servers, to 33.7% for FTP servers.
In order to get a number two position in web servers and FTP servers,
Windows 95/98 was lumped together with Windows NT.
They aren't the same system. For news servers, Solaris came in second.
<P>
To get to the survey details, go to: <BR> 
<A HREF="http://www.hzo.cubenet.de/ioscount/">
http://www.hzo.cubenet.de/ioscount/</A> 

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 25 Sep 1998 08:48:10 -0500 (CDT)<BR> 
From: <A HREF="mailto:eanna@kc.net">
eanna@kc.net</A> <BR> 
Subject: <font color="maroon">WilberWorks</font> 
<P>
I ordered the GIMP CD from WilberWorks quitre some time ago and have
heard nothing.  E-mails have been ignored; I am getting ready to
actually call them  I wonder if others have had trouble with them?  At
their web site their FAQ includes several questions from people
wondering where their CDs are--but those are fairly old, so either
people wised up (except me) or they improved.
<P> 
Thanks--<BR> 
Jim Clark 
eanna@kc.net

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 21 Sep 1998 22:06:58 -0700<BR> 
From: Ken Linder, <A HREF="mailto:KLinder2@nos.com">KLinder2@nos.com</A>
<BR> 
Subject: <font color="maroon">YMGP (Yet More Good Press)</font>
<P>
More mainstream press!  And in a rather high-brow weekly CEO/CIO type
periodical.
The September 21st, 1998 issue of Computer World has it on page 34 in
their "Computer World Quick Study" column.  Very well done, IMPO.  Also
references Red Hat and <I>Linux Journal</I>.  
<P>
With it in this paper, hopefully, the CIOs and CEOs will start talking
with their technical people, trying to find out more about this OS.
Normaly when I see the CEO heading twards me, I try to find somewhere to
hide, but if he wants to ask about Linux, hey... I can talk to him as
long as he likes!
<P>
Later...<BR> 
Ken 

<P> <HR> <P> 
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 29 Sep 1998 13:31:01 -0400<BR> 
From: David Nelson, <A HREF="mailto:nelson@er.doe.gov">nelson@er.doe.gov</A>  
<BR> 
Subject: <font color="maroon">In Praise of Wabi</font> 

<P>With Wabi selling for $45 or less, I wanted to share my satisfaction
with this product in case anyone else is interested. I have been running
WIN 3.1 and Wabi on top of Linux for about five months with very good results.
It lets me use several Win 3.1 (16 bit) applications, primarily Quicken
4 and MS Office 4.2, that previously forced rebooting into DOS. I am running
a 200 MHz Pentium with 32M of memory. No problems with memory (about 13MB
to run Quicken, WIN 3.1, and Wabi) and only a small speed hit (20-30%)
on calculation intensive operations. I use the printer, floppy, and modem
under Wabi, but no sound, as advertised. Wabi has limited printer drivers,
but if your Linux is set up to print Postscript, using Ghostscript drivers
for your printer, it will work fine. My Powerpoint viewgraphs, including
art, look identical under Wabi, printing to Postscript and under Win95,
printing directly to PCL. The Windows clipboard works as expected, and
in addition I can cut and paste between Windows and X Window applications.

<P>Wabi accesses my application and data files in the DOS/Win95 partition,
so I could convert transparently from DOS over to Wabi -- a nice trick
for Wabi to look through Linux back to the DOS file system. Though I haven't
tried it, I expect I could see files on my other networked computers using
SAMBA. My total extra disk space is 12MB for Wabi, and 24MB for WIN 3.1
files. You need a copy of WIN 3.1, WIN 3.11, or WIN for Workgroups in addition
to Wabi. WIN95 won't work. As a bonus, you can run Windows applications
remotely using an X-terminal, such as another Linux box. This is like Citrix
Winframe, but a heck of a lot cheaper.

<P>Is it a perfect fit? Not quite. I have a formatting problem printing
checks from Quicken on my ancient FX80 dot matrix printer, and there are
a few quirks such as a disappearing cursor and "bleed through" from background
windows in Quicken. But I consider these minor nuisances that don't reduce
utility. Sure, I can't use 32 bit Win apps, and some might say that Quicken
4 and MS Office 4.2 are ancient. But I have Quicken 96, 97, and 98 as well
as Office 97 sitting on my shelf. I tried them and for my needs there was
no more useful functionality, just more bloat and glitz. You make your
own decision; I found $45 a good deal.
<P> 
David B. Nelson


<P> <hr> <P> 
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 33, October 1998</center>
<!--====================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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_tips33.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 &copy; 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&#162; 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_tips33.html#hammel">
Newbie Help Redux (1)</a>
<li><a HREF="./lg_tips33.html#greene">
Re: Help Wanted : newbie (2)</a>
<li><a HREF="./lg_tips33.html#christopher">
Clearing the Screen (1)</a>
<li><a HREF="./lg_tips33.html#eisen">
Re: simultaneous versions of kernels</a>
<li><a HREF="./lg_tips33.html#hammel2">
Question about your Linux Gazette post</a>
<li><a HREF="./lg_tips33.html#brown">
COBOL Compilers for Linux</a>
<li><a HREF="./lg_tips33.html#david">
Resetting the term (2)</a>
<li><a HREF="./lg_tips33.html#smith">
Re: Help Wanted : newbie (3)</a>
<li><a HREF="./lg_tips33.html#clapp">
2c tip -- more fun with pipes</a>
<li><a HREF="./lg_tips33.html#collver">
2 cents tip: Un-tar as you download</a>
<li><a HREF="./lg_tips33.html#mcnamara1">
Re: Help Wanted: Looking for an Xwin Server software that runs under Win95/NT</a>
<li><a HREF="./lg_tips33.html#mcnamara2">
Re: Help wanted for a (Cheap) COBOL combiler for Linux</a>
<li><a HREF="./lg_tips33.html#ramos">
Re: Clearing the Screen (3)</a>
<li><a HREF="./lg_tips33.html#blenk">
Unix Tip</a>
<li><a HREF="./lg_tips33.html#lambard1">
rc.local Tip</a>
<li><a HREF="./lg_tips33.html#kang">
Yet another method of resetting scrambled terminal after dumping binary data.</a>
<li><a HREF="./lg_tips33.html#smith2">
Rick's quick and dirty screen-saver</a>
<li><a HREF="./lg_tips33.html#malyshkin">
MS Word & Netscape</a>
<li><a HREF="./lg_tips33.html#burns">
Pulling Files from NT</a>
<li><a HREF="./lg_tips33.html#hammel3">
Re:  The wisdom of US West...</a>
<li><a HREF="./lg_tips33.html#ferney">
RE: Clearing the Screen (4)</a>
<li><a HREF="./lg_tips33.html#andreas">
Re: Keeping track of your config files</a>
</ul>

<P> <hr> <P> 
<!--================================================================-->

<a name="hammel"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Newbie Help Redux (1)
</H3>
Date: Tue, 01 Sep 1998 10:50:21 -0500<BR> 
From: Mike Hammel, <A HREF="mailto:mjhammel@fastlane.net">
mjhammel@fastlane.net</A> 
<P>
Quick answers to get you started:
<P>
<font color="navy">
1. I have grown fat and lazy with Win 98 and find myself looking for
"Display Properties" and such. I'm very familiar with C and such and am
not afraid of hacking scripts or the like, but my problem is thus: Where
is a (succinct) list of what gets run when, from where, and why. I'd
love to tweak everything if only I could find it.
</font>
<P>
A. Take a look at /etc/rc or possibly /etc/rcX.d, where X is 1,2,3,
etc.  I don't have RH5.1 but I think it uses the System V init system,
so these directories should exist.  If so, this is where you find the
scripts that get run at boot time.  For more details, you should look
into the "init" tool.  I suspsect this is covered in depth in some of
the newer Linux system management texts.  It's not hard to understand,
really.  There are different run levels, and scripts for specific run
levels get run at start up to get things going and again at shutdown to
bring them down again.
<P>
<font color="navy">
2.  I have something called an "Ensoniq Audio PCI" sound card with
"legacy emulation" I don't even know how to begin to get this thing
working. What are the first steps in enabling hardware?
</font>
<P>
A.  Commercial solution:  http://www.4front-tech.com.  This is a
commercial sound driver but don't fret - it's only $20 and works like a
champ right out of the box.  I have it and have had zero problems.  I've
suggested it to a few other folks and they all seemed to like it too.
There is a non-commercial version of this same set of drivers available
for Linux too.  But I punted on it when I heard about the commercial
driver.
<P>
<font color="navy">
3. Where do I get information on mounting drives?
</font>
<P>
A. mount -t fat32 /mount_pt_dir or possibly mount -t vfat
/mount_pt_dir.  I don't use MS on my box so can't remember which one of
these works with FAT32 partitiions but I'm fairly sure one of them
does.  In any case, other folks are likely to respond with more detailed
answers on this one.
<P>
<font color="navy">
4. I think my printer works (at least text does), but how do I print
things (man pages)?
</font>
<P>
A.  xman will print the pages as postscript but you need to set up a
print spooler using Ghostscript.  A print spooler is just a locical
printer name that accepts print requests, processes them with some
filters and then feeds them to the printer of choice.  Ghostscript will
translate Postscript input into the printer command language for your
printer.   I keep forgetting where the Ghostscript FAQ (including
download info) is at, but you can find it by searching on Yahoo.  That's
what I always do.
<P>
The hard way to set up printers is to learn about configuring
/etc/printcap.  However, my RH4.2 system has a fairly decent printer
configuration utility so I suspect 5.1 has an even better one.  The bad
news is I can't remember the program's name (it's in my fvwm2rc at home
and I never type it by hand).  Check the documentation that came with
the CD.  I know it's mentioned in there.
<P>
Best of luck.
<P>
Michael J. Hammel

<P> <hr> <P> 
<!--================================================================-->

<a name="greene"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Help Wanted : newbie (2)
</H3>
Date: Tue, 01 Sep 1998 07:37:43 +0200<BR> 
From: "Anthony E. Greene", <A HREF="mailto:agreene@pobox.com">
agreene@pobox.com</A> 
<P>
<font color="navy">
From: Dennis Lambert, opk@worldnet.att.net <BR> 
I have grown fat and lazy with Win 98 and find myself looking for
"Display Properties" and such.
KDE (<A HREF="http://www.kde.org/">http://www.kde.org/</A>) is supposed to be a more integrated desktop
environment, and Gnome (<A HREF="http://www.gnome.org/">http://www.gnome.org/</A>) is coming along.
I'm very familiar with C and such and am
not afraid of hacking scripts or the like, but my problem is thus: Where
is a (succinct) list of what gets run when, from where, and why. I'd
love to tweak everything if only I could find it. 
</font>
<P>
Linux is a complex OS, so the list isn't succint. There's a description of
the boot process in the System Administrator's Guide. If you're new to
Linux, I'd recommend you give the SAG a good browse. There's *lots* of
useful information there. You should have an HTML copy installed in
/usr/doc/LDP/sag.
<P>
The Network Administrator's Guide (/usr/doc/LDP/nag) is also good to have,
but the HOWTO's are better if you just need "cookbook" style docs. The
HOWTO's are in /usr/doc/HOWTO. You should fire up Midnight Commander (mc)
from the command line and take a look around /usr/doc.
<P>
<font color="navy">
I have something called an "Ensoniq Audio PCI" sound card with "legacy
emulation" I don't even know how to begin to get this thing working.
What are the first steps in enabling hardware? 
</font>
<P>
There is a PCI-HOWTO and a Sound-HOWTO.
<P>
<font color="navy">
Where do I get information on mounting drives (FAT 32 especially) 
</font>
<P>
In the Config-HOWTO or the archives of the Red Hat mailing lists.
<P>
<font color="navy">
I think my printer works (at least text does), but how do I print things
(man pages) 
</font>
<P>
Text and postscript are easy. Fortunately most things are convertable to
postscript. In this case use:
<PRE> 
	man -t <i>CommandOrSubject</i> | lpr
</PRE> 
This is covered in the <tt>man</tt> page.
<P>
If you haven't joined any of the Red Hat mailing lists, you might consider
doing so. Be warned though; they tend to be busy lists
(http://www.redhat.com/support/).
<P>
Welcome to Linux...
<P>
Tony

<P> <hr> <P> 
<!--================================================================-->

<a name="christopher"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Clearing the Screen (1)
</H3>
Date: Sat, 05 Sep 1998 11:56:53 -0700<BR>
From: Anthony Christopher, <A HREF="mailto:anthonyc@blarg.net">
anthonyc@blarg.net</A> 
<P>
I have seen a lot of hints for restoring a trashed screen or window, but 
none of them mention the <tt>reset</tt> and <tt>clear</tt> commands.
Are these commands
deprecated, do they have unwanted side effects, or are they
ineffective in certain situations?
<P>
When I have cat'ed an executable, I usually just type: <tt>reset &lt;ENTER&gt;</tt>
and let the garbage scroll off the screen.
<P>
If, for some reason, I find the garbage characters annoying,
I follow this command by typing: <tt>clear &lt;ENTER&gt;</tt>
<P>
Anthony Christopher 

<P> <hr> <P> 
<!--================================================================-->

<a name="eisen"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: simultaneous versions of kernels 
</H3>
Date: Fri, 4 Sep 1998 22:01:22 +0200<BR> 
From: Henner Eisen, <A
HREF="mailto:eis@baty.hanse.de">eis@baty.hanse.de</A> 
<P>
Just my 0.02 Euro:
<P>
Most of the installation problems are caused by interaction with the
linux distribution's default installation method. You can easily work
around this by simply not installing your compiled kernel. Lilo and 
insmod support loading directly from the compilation directory.
<P>
Just unpack your kernel in an arbitrary directory, say /home/kernel/linux-test,
apply any patches and compile: <tt>make [x|menu|old]config; make dep;
make zImage modules</tt>. But do neither <tt>make install</tt> nor 
<tt>make modules_install</tt>.
<P>
Then add something like this to your /etc/lilo.conf:
<PRE> 
# Linux bootable partition config begins
# test new (not installed) kernel just compiled in directory
# /home/kernel/linux-test.
image = /home/kernel/linux-test/arch/i386/boot/zImage
root = /dev/hda3
label = test
append= " MODPATH=/home/kernel/linux-test/modules/ "
# Linux bootable partition config ends
#
</PRE> 
and run <tt>lilo</tt> whenever you have recompiled your kernel image.
<P>
When booting, choose "test" from the lilo prompt. The kernel will pass
MODPATH to the environment of init and any startup routines that insmod's
kernel modules will fetch them automatically from the kernel compilation tree.
<P>
(If you additionally want to insmod some modules by hand from a root shell,
MODPATH might be unset. But scripts can still extract that information from
/proc/cmdline).
<P>
Henner

<P> <hr> <P> 
<!--================================================================-->

<a name="hammel2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Question about your Linux Gazette post
</H3>
Date: Fri, 4 Sep 1998 10:14:47 -0600 (MDT)<BR> 
From: "Michael J. Hammel", <A HREF="mailto:mjhammel@fastlane.net">
mjhammel@fastlane.net</A>
<P>
<font color="navy">
In a previous message, mjsendzi@engmail.uwaterloo.ca says:
is there an url for this program?
</font>
<P>
No, not that I know of.  A couple of people have asked this.  It's part of the 
core set of files in my Red Hat 4.2 distribution.  Units has been around so 
long, and is available on so many different Unix platforms, that I suspect 
most distributions have a copy of it somewhere.  On my RH4.2 it's under 
/usr/bin.
<PRE> 
mjhammel(ttyp2)$ type units
units is /usr/bin/units

mjhammel(ttyp0)$ units
501 units, 41 prefixes

You have: 3 miles
You want: kilometers
        * 4.828032
        / 0.20712373
</PRE> 
Michael J. Hammel  

<P> <hr> <P> 
<!--================================================================-->

<a name="brown"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
COBOL Compilers for Linux
</H3>
Date: Thu, 03 Sep 1998 22:54:19 -0500<BR> 
From: <A HREF="mailto:cbbrowne@hex.net">cbbrowne@hex.net</A> 
<P>
Concerning the following, recently posted in Linux Gazette:
<P>
<font color="navy">
I have a friend who is doing a refresher course in Cobol in a Unix
environment. I have suggested that she run Linux, and pick up a cheap /
shareware copy of a Cobol compiler for Linux from somewhere. Knowing
absolutely nothing about either Linux or Cobol, am I dreaming, or is there a
realistic alternative to the compilers I have seen retailing for ~$1,500 US?
I'd really appreciate any help/advice anyone can offer.
</font>
<P>
There are several possible COBOL options in the Linux realm; for details
see:<BR> 
<A HREF="http://www.hex.net/~cbbrowne/languages07.html">
http://www.hex.net/~cbbrowne/languages07.html</A> 
<P>
There's not anything yet that could be considered 100% viable outside of
(rather expensive) commercial options; obviously these sorts of things don't
happen without there being a population of people who are interested enough
to be willing to invest the time necessary to implement something.
<P>
cbbrowne@hex.net

<P> <hr> <P> 
<!--================================================================-->

<a name="david"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Resetting the term (2)
</H3>
Date: Thu, 03 Sep 1998 16:44:25 -0700<BR> 
From: david, <A HREF="mailto:david@kalifornia.com">
david@kalifornia.com</A> 
<P>
You posted a program to reset your console should the text become
garbled.  I thought I would mention that most distributions, Slackware
notably, come with such a program that does this and more.
<P>
<tt>reset</tt> will clear your tty, restore sane tty settings, and perform
general tty cleanups.  You should find this little utility just about
anywhere :)
<P>
David

<P> <hr> <P> 
<!--================================================================-->

<a name="smith"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Help Wanted : newbie (3)
</H3>
Date: Wed, 2 Sep 1998 22:46:15 +0200 (CEST)<BR> 
From: <A HREF="mailto:rsmith@xs4all.nl">rsmith@xs4all.nl</A> 
<P>
<font color="navy">
In anwser to your questions in the September issue of the Linux
Gazette:<BR> 
I recently purchased Red Hat 5.1 and got it running. Evidently I was lucky in that I have a fairly full FAT 32
Win 98 drive and kind of stumbled through the defrag / fips / boot to CD / repartition / full install with LILO
process. Everything worked, but I'm a little nonplussed. A few topics I'd absolutely love to get feedback
 on... 
Turns out I have a lousy WinModem. I can see the feedback now, (Run it over with your car) 
</font>
<P>
Yep. Buy a *real* modem.
<P>
<font color="navy">
I have grown fat and lazy with Win 98 and find myself looking for "Display Properties" and such. I'm
very familiar with C and such and am not afraid of hacking scripts or the like, but my problem is
thus: Where is a (succinct) list of what gets run when, from where, and why. I'd love to tweak
everything if only I could find it. 
</font>
<P>
Daemons, boot time initialization: see the man page for `init'.
There'll be an assortiment of scripts in /etc/rc.d or /etc/init.d and
/etc/rcX.d (where X = 0 to 6) that do your system's boot-time setup.
<P>
For X, especially XFree86, you can fiddle with the XF86Config file,
which should reside somewhere in /etc. Or if you have an X server
running you can use `xvidtune'. The programs and window-manager started
by the X server are usually in a file called xinitrc or xsession.
<P>
<font color="navy">
I have something called an "Ensoniq Audio PCI" sound card with "legacy emulation" I don't even
know how to begin to get this thing working. What are the first steps in enabling hardware? 
</font>
<P>
You'll probably need to compile a new kernel. The sound driver that
comes with the kernel supports this card. install your distribution's
kernel source package, cd to /usr/src/linux and read the README.
<P>
<font color="navy">
Where do I get information on mounting drives (FAT 32 especially)
</font>
<P>
Read the manual for `mount' and `umount'. Make sure you have a kernel
with (V)FAT support compiled in.
<P>
<font color="navy">
I think my printer works (at least text does), but how do I print things (man pages) 
</font>
<P>
Use the <tt>lpr program</tt>. It is a print spooler. You might want to fiddle
with /etc/printcap to enable your printer to print PostScript (via
GhostScript).
<P>
<font color="navy">
I'm not an idiot, not even a "dummy", but what is a good book to answer the basic questions? I have "Linux
in a Nutshell" and it has a very good command reference and a few other things, but doesn't help in
tweaking things. 
</font>
<P>
I haven't read many books on Linux, just *lots* of manpages and HOWTO's
(in /usr/doc/HOWTO). Ask around in linux newsgroups.
<P>
<font color="navy">
I don't really expect anyone to answer all of these concerns, but any little help would be greatly
appreciated. 
</font>
<P>
Hope this helps... :-)
<P>
Roland

<P> <hr> <P> 
<!--================================================================-->

<a name="clapp"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
2c tip -- more fun with pipes
</H3>
Date: Wed, 2 Sep 1998 11:59:49 -0400<BR>
From: Larry Clapp, <A HREF="mailto:lclapp@iname.com">lclapp@iname.com</A> 
<P>
After reading the "Un-tar as you download" 2-cent tip from
scgmille@indiana.edu in issue 32, I thought you might like this,
too.
<P>
Say you have a program with a large initial startup time.  After
that, the program reads a line from a file, processes it, reads
the next line, processes it, etc, until EOF.  You would like to
process a single line of data without suffering through the
initial startup each time.  Try this:
<PRE> 
    mkfifo input_fifo
    rm input_file
    touch input_file
    tail -f input_file >> input_fifo &
    long_program input_fifo &
</PRE> 
When you want to feed it some data, say
<PRE> 
    echo data1 data2 data3 >> input_file
</PRE> 
The tail will wake up, read the line, output it to the fifo (aka
"named pipe"), the program will wake up, read the data from the
pipe, process it, and go back to sleep.
<P>
(You only have to do the mkfifo once; after that, it sticks
around.  On some systems (e.g. my Sun at work, where I came up
with this), instead of <tt>mkfifo&nbsp;<i>filename</i></tt>, use 
<tt>mknod&nbsp;<i>filename</i></tt>
p".)
<P>
To shut things down, kill the <tt>tail</tt>.  The program will get an EOF
condition, and shut down normally.
<P>
Of course, a better solution might be to rewrite the program to
read from stdin, and then say
<PRE> 
    tail -f input_file | long_program -
</PRE> 
but you can't always do that.  Also, neither of these ideas will
work if the program reads the whole file, and then processes each
line from an internal list.
<P>
-- Larry Clapp

<P> <hr> <P> 
<!--================================================================-->

<a name="collver"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
2 cents tip: Un-tar as you download 
</H3>
Date: Wed, 02 Sep 1998 03:46:20 -0700<BR> 
From: Ben Collver, <A HREF="mailto:collver@dnc.net">collver@dnc.net</A> 
<font color="navy">
<tt>tail -f --bytes=1m file-being-downloaded.tar.gz | tar -zxv</tt><BR> 
<tt>tail -f --bytes=1m file.tar.bz2 | bunzip2 - | tar -xv</tt>
</font>
I've noticed that sometimes <tt>tail -f</tt> does not work reliably.  An
alternative if you have lynx is:
<PRE> 
lynx -source http://www.url.dum/file.tar.gz | tee file.tar.gz | tar zxm
lynx -source ftp://ftp.url.dum/file.tar.bz2 | tee file.tar.bz2 | bunzip2 - | tar xm
</PRE> 
<P>
Ben

<P> <hr> <P> 
<!--================================================================-->

<a name="mcnamara1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Help Wanted: Looking for an Xwin Server software that runs under win95/nt
</H3>
Date: Wed, 02 Sep 1998 11:31:08 +0100 (IST)<BR> 
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
Caolan.McNamara@ul.ie</A> 
<P>
<font color="navy">
From: Mark Inder, mark@tts.co.nz <BR> 
We use a Red Hat 4.2 machine in our office as a communications server. This is 
running well with the facility oftelnet connections for maintenance, diald for 
PPP dial up - internet and email, and uucp for incoming mail. 
I would like to run an X server on my windows PC to be able to use X client 
software on the Linux PC over the local Ethernet. Does anyone know of a 
shareware for freeware version which is available. 
</font>
<P>
Try the list at <A
HREF="http://www.rahul.net/kenton/xsites.html#XMicrosoft">
http://www.rahul.net/kenton/xsites.html#XMicrosoft</A> 
<P>
this one is free for example 
<A HREF="http://www.microimages.com/www/html/freestuf/mix/">
http://www.microimages.com/www/html/freestuf/mix/</A> 
<P>
Caolan

<P> <hr> <P> 
<!--================================================================-->

<a name="mcnamara2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Help wanted for a (Cheap) COBOL combiler for Linux
</H3>
Date: Wed, 02 Sep 1998 11:27:20 +0100 (IST)<BR> 
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
Caolan.McNamara@ul.ie</A> 
<P>
<font color="navy">
From: Andrew Gates, andrewga@fcf.co.nz <BR> 
I have a friend who is doing a refresher course in Cobol in a Unix environment.
I have suggested that she run Linux, and pick up a cheap / shareware copy of 
a Cobol compiler for Linux from somewhere. Knowing absolutely nothing
about either Linux or Cobol, am I dreaming, or is there a realistic alternative
to the compilers I have seen retailing for
$1,500 US? I'd really appreciate any help/advice anyone can offer. 
</font>
<P>
I haven't ever used Cobol, but at <A
HREF="http://www.deskware.com/cobol/cobol.htm">
http://www.deskware.com/cobol/cobol.htm</A>, 
there's a Cobol for Linux under development for download (for free I believe).
Might be good to check it out, and to find out if it's of any use yet.
<P>
Caolan

<P> <hr> <P> 
<!--================================================================-->

<a name="ramos"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Clearing the Screen (3)
</H3>
Date: Tue, 01 Sep 1998 19:00:31 -0700<BR> 
From: "Mark J. Ramos", <A HREF="mailto:mjramos@sprintparanet.com">
mjramos@sprintparanet.com</A> 
<P>
In the September issue you described some C code that can clear the
screen when it gets screwed up from binary dumps to the terminal.  There
is a much easier way and it all it requires is the keyboard ;)  Simply
type "echo control-v escape-c" where and hit enter.  The "control-v"
allows you to type in the "escape-c" literally.
<P>
This has worked much better for me then some other methods such as
"reset" which comes with your favorite Linux distribution but like a
compiler it isn't always there.  This key sequence is *always* available
on an ANSI terminal.
<P>
Mark Ramos

<P> <hr> <P> 
<!--================================================================-->

<a name="blenk"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Unix Tip
</H3>
Date: Tue, 1 Sep 1998 20:01:31 -0400<BR> 
From: Ian C. Blenk, <A HREF="mailto:eicblenke@Neurotic.Intermedia.Com">
eicblenke@Neurotic.Intermedia.Com</A>  
<P>
As an addendum to Allan Peda's Tip in Linux Gazette issue 32,
here is a quick tip that applies to most DEC emulators (vtXXX):
<PRE> 
	echo ^V^O
</PRE> 
That's echo, control-V, control-O. The control-V portion
escapes the control-O (terminal reset) from your shell.
The echo just puts the control-O right back to your terminal
emulator/dumb terminal (works great on true DEC terms too! :)
<P>
This works for most Unix flavors. No code. Easy to remember.
<P>
Ian Blenke

<P> <hr> <P> 
<!--================================================================-->

<a name="lambard1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
rc.local Tip
</H3>
Date: Tue, 1 Sep 1998 14:24:07 -0700 (PDT)
From: Creede Lambard, <A HREF="mailto:fearless@moosylvania.net">
fearless@moosylvania.net</A> 
<P>
I've been reading the Linux Gazette for a couple of months now and I
think it's great, especially the tips.
<P>
Here's one for you to consider that was inspired by Dennis Lambert's "Help
Wanted" letter in issue #32. I hope it doesn't duplicate something you've
already published. 
<P>
To those of us used to the warm, fuzzy DOS world of CONFIG.SYS and
AUTOEXEC.BAT, the complexities of the /etc/rc.d startup heirarchy can be
nothing short of intimidating. Well, I decided to make it a little less
so. I started by putting these lines at the top of /etc/rc.d/rc.local:
<PRE> 
echo "==============================================="
echo " "
echo "Now running rc.local"
echo " "
echo "==============================================="
</PRE> 
Now, when I start up Linux I can tell just when my local configuration
starts to run, and if I'm having problems I can see whether they happen
before or after rc.local starts. You can learn other things, too -- I
learned that rc.sysinit gets run on startup and shutdown! 
<P>
Unfortunately, especially if you have a fast system, you can miss error
messages as they scroll by and dmesg doesn't always echo the information
you need to solve a problem. I was seeing error messages in rc.local, but
I couldn't tell what they were because they went by too fast. So, I wrote 
a Perl one-liner:
<PRE> 
perl -e "print 'Press ENTER to continue: '; $x = &lt:STDIN&gt;;"
</PRE> 
This prints a prompt, then waits for you to press ENTER before it
continues. (Yes, there's probably an easier way to do this with bash or
some utility, but I already know Perl and I'm still learning bash. [grin])
By putting this at the bottom of rc.sysinit I made the boot-up sequence stop
so I could see the error message, and of course once I saw it I knew
exactly how to fix it. I comment out the line unless I need it, of course
-- if everything is working right I want Linux to take me straight to the
login prompt!
<P>
Here's hoping this helps someone.
<P>
Creede Lambard

<P> <hr> <P> 
<!--================================================================-->

<a name="kang"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Yet another method of resetting scrambled terminal after dumping binary data.
</H3>
Date: Mon, 14 Sep 1998 03:55:54 +0000<BR> 
From: Sang Kang, <A HREF="mailto:sang@mocha.dyn.ml.org">
sang@mocha.dyn.ml.org</A> 
<P>
Perhaps this is the simplist solution:
<PRE> 
	echo '\017'
</PRE> 
that's it.
<P> 
Sang Woo Kang

<P> <hr> <P> 
<!--================================================================-->

<a name="smith2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Rick's quick and dirty screen-saver
</H3>
Date: Wed, 16 Sep 1998 09:10:04 -0400<BR> 
From: "R. Smith", <A HREF="mailto:riter311@gte.net">
riter311@gte.net</A> 
<P>
Here's a shell script which cycles through jpgs:
<PRE> 
#!/bin/sh

# showjpg Rick's quick and dirty screen saver.

# Run from an xterm. Controll 'C' should get you out. Or run in
# background with '&' and use kill.

# forever
while [ 1 ]; do
# The path to your jpgs
  for file in /usr/local/images/jpg/*.jpg
  do
     xsetbg $file
     sleep 20
  done
done
</PRE> 
<tt>xsetbg</tt> is from the xloadimage package. It's the same as: 
<PRE> 
xloadimage -onroot -quiet
</PRE> 
Sleep is in seconds.  Use <tt>convert</tt> from the
ImageMagick package to convert .gif or .bmp to .jpg.   
<P>
Rick         

<P> <hr> <P> 
<!--================================================================-->

<a name="malyshkin"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
MS Word & Netscape
</H3>
Date: Tue, 15 Sep 1998 07:58:56 -0400<BR> 
From: Vladislav Malyshkin, <A HREF="mailto:mal@mail1.nai.net">
mal@mail1.nai.net</A> 
<P> 
I wish to contribute 2 cents story.
<P>
One-click view of MSWord files in Netscape.
<P>
There is a sad fact, that some people use MSWord to exchange documents.
When one one gets such file in a mail on Linux (s)he can use MSWordView, 
but this requires:
  <PRE> 
 Save file
 Convert from .doc to .html
 Start Netscape to view it
</PRE> 
This 2 cents tip is about how to reconfigure netscape in order to view 
MSWord documents in one click.
<P>
To do this:
<ul>
<li>Download and install MSWordView from
<A HREF="http://www.csn.ul.ie/~caolan/docs/MSWordView.html">
http://www.csn.ul.ie/~caolan/docs/MSWordView.html</A>.
Usually it takes just  <tt>./configure ; make ; make install</tt>
<li>Edit file .mailcap in your home directory (create it if it does not 
exist). Add one line into this file:
<PRE> 
application/msword; ns="%s"\; nf="${ns}".html\; mswordview "${ns}" >"${nf}"\; 
 netscape -remote 'openURL(file:'"${nf}"')' \; sleep 2 \; rm "${nf}"
</PRE> 
</ul>
Vladislav

<P> <hr> <P> 
<!--================================================================-->

<a name="burns"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Pulling Files from NT
</H3>
Date: Mon, 14 Sep 1998 23:29:10 +0000<BR> 
From: Michael Burns, <A HREF="mailto:michaelburns@earthlink.net">
michaelburns@earthlink.net</A> 
<P>
Nothing groundbreaking here but, being a newbie to Linux and Samba I was
having a difficult time getting Samba set up and needed to get some
large files from an NT server to a Linux machine. I do not have any NFS
programs for NT but do have a Web/FTP server running on NT so my
temporary but quick solution was to put the files I needed into my NT
server's FTP directory and download them from there.
<P>
Michael Burns

<P> <hr> <P> 
<!--================================================================-->

<a name="hammel3"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re:  The wisdom of US West...
</H3>
Date: Thu, 17 Sep 1998 19:30:16 -0600 (MDT)<BR> 
From: "Michael J. Hammel", <A HREF="mailto:mjhammel@fastlane.net">
mjhammel@fastlane.net</A>
<P>

<font color="navy">
Michael J. Hammel wrote:
I haven't checked, but doesn't IPv6 have 6 dot-values?  And are they larger
than 8 bit values?  Just curious.  I haven't heard much about IPv6 in
awhile and wondered how we haven't run out of IP space yet without it.
</font>
 <P> 
From: Jay Kominek, <A HREF="mailto:jay.kominek@colorado.edu">
jay.kominek@colorado.edu</A> <BR> 
IPv6 addresses take the form of 'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210'
8 16-bit hexadecimal chunks. All kinds of fun. Luckily, if you have a string
of zeros in your address, you can do something like 1080::8:800:200C:417A
<P> 
To save yourself some typing.
<P> 
I hope I'm not running some place's DNS when IPv6 becomes popularized.
<P> 
Relevent RFCs:
<ul>
<li>1883 Internet Protocol, Version 6 (IPv6) Specification. S. Deering &
     R. Hinden. December 1995. (Format: TXT=82089 bytes) (Status: PROPOSED
     STANDARD)

<li>1884 IP Version 6 Addressing Architecture. R. Hinden & S. Deering,
     Editors. December 1995. (Format: TXT=37860 bytes) (Obsoleted by
     RFC2373) (Status: PROPOSED STANDARD)

<li>1886 DNS Extensions to support IP version 6. S. Thomson & C. Huitema.
     December 1995. (Format: TXT=6424 bytes) (Status: PROPOSED STANDARD)
</ul>

<P> <hr> <P> 
<!--================================================================-->

<a name="ferney"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
RE: Clearing the Screen (4)
</H3>
Date: Wed, 23 Sep 1998 08:44:10 -0600<BR> 
From: Robert Ferney, <A HREF="mailto:rferney@spillman.com">
rferney@spillman.com</A> 
<P>
<font color="navy">
From: Allan Peda, allan@interport.net<BR> 
A few days ago a classmate "accidentally" cat'ed a file to the screen.
He asked asked me what he could do to reset his confused vt100, as
<tt>clear</tt> wasn't sufficient.</font>
<P> 
<tt>reset</tt> works very well for this.
The command <tt>reset</tt> will effectively reset the screen by sending it the
proper escape sequence. since <tt>reset</tt> looks up the escape sequence from
the terminfo library so it works on just about any terminal. If this
fails, sometimes a
<PRE> 
$ stty sane
</PRE> 
will do the trick.

<P> <hr> <P> 
<!--================================================================-->

<a name="andreas"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Keeping track of your config files
</H3>
Date: Mon, 21 Sep 1998 22:30:58 +0200<BR> 
From: Andreas 
<P>
Your idea for keeping track of those files by linking
them to a central directory is good.
<P>
Another idea I am using frequently is keeping track
of the modifications by either employing SCCS or RCS
(or whatever derived utility available).
<P>
Combining both ideas means for SCCS based systems: Use e.g.
<PRE> 
    $ cd /
    $ sccs -d/root/SCCS create etc/inittab
</PRE> 
if you share a lot of these files across several systems, but there
are some files that may differ you probably like to type
<PRE> 
    $ sccs -d/root/SCCS -p`hostname` create etc/lilo.conf
</PRE> 
Which results in the following tree:
<PRE> 
/root
|-/SCCS
|    |-etc
|    |     |-s.inittab
|    |     |-apollon
|    |     |     |-s.lilo.conf
|    |     |-jupiter
|    |     |     |-s.lilo.conf
    ...
</PRE> 
For daily use I recommend to keep all the files 'checked-out',
i.e. 'sccs edit' always after 'sccs create' and otherwise 'sccs
deledit'.
The above commands should also be abbreviated by aliases.
<P>
For the RCS used admins I recommend 'cvs', but this
means a bit more work ....
<P>
Andreas



<P> <hr> <P> 
<!--================================================================-->
<center>Published in <I>Linux Gazette</I> Issue 33, October 1998</center>
<P> <hr> <P> 
<!--================================================================-->
<A HREF="./lg_toc33.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_mail33.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_bytes33.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 &copy; 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_bytes33.html#general">News in General</a>
<li><a HREF="./lg_bytes33.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/cover55.gif"></center>
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
November <I>Linux Journal</I>
</H3>
<P> 
The November issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> will be hitting the newsstands October 11.
The focus of this issue is Web Programming and we have articles
on FastCGI, HTMLgen, XML, SGML and Python, as well as an interview with
Guido van Rossum, the creator of Python.
Check out the Table of Contents at
<A HREF="http://www.linuxjournal.com/issue55/index.html">
http://www.linuxjournal.com/issue55/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> 
<!-- =================================================================== -->

<A HREF="http://www.links2go.com/topic/Linux">
<img align="right" src="./gx/skey.gif"></A> 
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Links2Go Key Resource Award
</H3> 
<P> 
Date: Wed, 22 Jul 1998 18:38:48 -0400<BR> 
Congratulations! Your page:
http://www.linuxgazette.com/
has been selected to receive a Links2Go Key Resource award in the
Linux topic.
<P> 
The Links2Go Key Resource award is both exclusive and objective. Fewer
than one page in one thousand will ever be selected for
inclusion. Further, unlike most awards that rely on the subjective
opinion of "experts," many of whom have only looked at tens or
hundreds of thousands of pages in bestowing their awards, the Links2Go
Key Resource award is completely objective and is based on an analysis
of millions of web pages. During the course of our analysis, we
identify which links are most representative of each of the thousands
of topics in Links2Go, based on how actual page authors, like
yourself, index and organize links on their pages.
<P> 
For more information: <BR> 
Links2Go Awards, <A
HREF="mailto:awards@links2go.com">awards@links2go.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
X11.ORG goes public
</H3> 
<P> 
Date: Thu, 10 Sep 1998 00:31:27 -0400 (EDT)<BR> 
One of the main purposes of X11.ORG is to provide the X community with
up-to-date information regarding "anything and everything X". By making
this information easily available, you don't have to work quite as hard to
keep up with the fast-moving pace of X developments. As it was imagined in
the development process, we will attempt to be a slashdot.org of sorts,
for the X community, focusing on those topics directly or closely related
to X.  X11.org plans to cover the setup and configuration information for
the majority of WindowManagers, Desktop Environments (eg. CDE, GNOME,
KDE), and X Servers.
<P> 
<A HREF="http://www.X11.org/">http://www.X11.org/</A> 
<P>
For more information: <BR> 
Voltaire, <A
HREF="mailto:voltaire@shell.flinet.com">voltaire@shell.flinet.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
7th Python Conference
</H3> 
<P> 
Date: Wed, 16 Sep 1998 17:18:14 -0400 (EDT)<BR> 
Call for Participation and Advance Program,
              7th International Python Conference:<BR> 
<A HREF="http://www.foretec.com/python/workshops/1998-11/">
http://www.foretec.com/python/workshops/1998-11/</A> 
<P>
South Shore Harbour Resort<BR> 
Houston, Texas<BR> 
November 10-13, 1998<BR> 
Sponsored by CNRI and the PSA
<P>
The Python Conference brings together a broad range of users, vendors,
researchers, and developers from the Python community.  The conference
is the premier opportunity to meet other Python programmers, share
information, and learn about the latest happenings -- including an
update on the future of Python from its creator, Guido van Rossum.
<P>
The program also includes a day of tutorials, two days of papers and
invited talks, and Developers' Day.  The conference program has been
expanded this year to include a session for demos and posters to
highlight work that is more interesting to see and interact with.
<P>
For registration information, visit:<BR> 
<A HREF="http://www.foretec.com/python/workshops/1998-11/registration.html">
http://www.foretec.com/python/workshops/1998-11/registration.html</A> 
<P>
INVITED SPEAKERS
<P>
Eric Raymond, "Homesteading the Noosphere." Custom, ego, and property
in the open source community.
<P>
David Beazley, "Commodity Supercomputing with Python."  Python on
supercomputing systems, and its role in the 1998 Gordon Bell Prize
Competition, where a Python-driven application achieved 10 Gflops
sustained performance on a Linux cluster.
<P>
Jim Hugunin, "JPython."  Recent and
coming events in the happy integration of Python and Java.
<P>
Guido van Rossum, "Python -- the next seven years."  Recent and coming
events in the development of the Python langauge.
<P>
For more information: <BR> 
Jeremy Hylton, <A HREF="mailto:jeremy@cnri.reston.va.us">
jeremy@cnri.reston.va.us</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
LISA '98, Systems Administration Conference
</H3> 
<P>
Date: Mon, 14 Sep 1998 16:04:13 -0800<BR> 
             The Immediately Practical is the Emphasis at
   Largest Conference Exclusively for System Administrators
<P>
LISA '98, the 12th Systems Administration Conference, is co-sponsored by
SAGE, the premier professional society for system administrators, and the
USENIX Association.  It will take place in Boston at the Marriott Copley
Place Hotel, December 6-11, 1998.  The largest conference exclusively for
system administrators, LISA is expected to attract over 2000 attendees.
<P>
Full Technical Program: <A HREF="http://www.usenix.org/events/lisa98/">
http://www.usenix.org/events/lisa98/</A> 
<P>
For more information: <BR> 
<A HREF="http://www.usenix.org/">http://www.usenix.org/</A> 
Dona Ternai, <A HREF="mailto:dona@usenix.org">dona@usenix.org</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Linux Links
</H3> 
<P> 
The Linux Software Encyclopedia:
<A HREF="http://stommel.tamu.edu/~baum/linuxlist/linuxlist/linuxlist.html">
http://stommel.tamu.edu/~baum/linuxlist/linuxlist/linuxlist.html</A> 
<P>                       
COBOL Center: <A HREF="http://www.infogoal.com/cbd/cbdhome.htm">
http://www.infogoal.com/cbd/cbdhome.htm</A> 
<P> 
Deskware COBOL: <A HREF="http://www.deskware.com/cobol/cobol.htm">
http://www.deskware.com/cobol/cobol.htm</A> 
<P> 
Collection of Free Resources: 
<A HREF="http://members.tripod.com/~net_tools/index.html">
http://members.tripod.com/~net_tools/index.html</A> 
<P> 
Linux Preview (Spanish): <A HREF="http://linux.ncc.org.ve">
http://linux.ncc.org.ve</A>
<P> 
Crystal Space 3D Engine: <A HREF="http://crystal.linuxgames.com">
http://crystal.linuxgames.com</A> 
<P> 
GNOME FAQ:
<A HREF="http://www.mindspring.com./~tlewis/gnome/faq/v1.0/FAQ.html">
http://www.mindspring.com./~tlewis/gnome/faq/v1.0/FAQ.html</A> 
<P> 
Linux Links: <A
HREF="http://www.linuxlinks.com/">http://www.linuxlinks.com/</A> 
<P> 
DOSEMU.ORG: <A HREF="http://www.dosemu.org/">http://www.dosemu.org/</A> 
<P> 
Spanish Linux Index: 
<A HREF="http://www.croftj.net/~barreiro/public/indice.html">
http://www.croftj.net/~barreiro/public/indice.html</A> 
<P> 
Linux soundapps Webpage:
<A HREF="http://www.bright.net/~dlphilp/linux_soundapps.html">
http://www.bright.net/~dlphilp/linux_soundapps.html</A> 
<P> 
SciTech Display Doctor for Linux: <A
HREF="http://www.scitechsoft.com/sdd_linux.html">
http://www.scitechsoft.com/sdd_linux.html</A> 


<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
K-12 and Linux
</H3> 
<P> 
Date: Tue,  8 Sep 1998 08:10:42 GMT<BR> 
A mailing list has been formed where people with Linux expertise
can support K-12 people who are trying to use Linux in schools.
To join, send e-mail to <A HREF="mailto:majordomo@lrw.net">
majordomo@lrw.net</A> and in the body of
the letter, enter:
<tt>subscribe lxk12</tt>
<P> 
For more information:
Randy Wright, <A HREF="mailto:rw26@nospam.lrw.net">rw26@nospam.lrw.net</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Red Hat Hands Applixware back to Applix, Inc.
</H3> 
<P> 
Date: Thu, 17 Sep 1998 12:03:00 GMT<BR> 
September 14, 1998--In order to focus exclusively on developing and
marketing the Open Source Red Hat Linux operating system, Red Hat
Software, Inc. and Applix Inc. today announced that Applix Inc will
have all future responsibility for the Applixware Office Suite,
including Sales, Marketing, Product Support, and Quality Assurance.
<P>
Applixware products previously purchased directly from Red Hat Software
will still receive the full technical assistance and support of Red Hat
Software.
<P>
The announcement of the new relationship coincides with the release of
Applixware 4.4.1 for Linux. This update of Applixware features all the
standard components of the Applixware Office Suite, as well as Applix
Data, a new module offering point and click access to information stored in
relational databases, and Applix Builder, Applix's object-oriented, visual,
rapid application development tool.
<P>
The Applixware 4.4.1 Office Suite is available directly from Applix, Inc. for
$99. For those wishing to upgrade to Applixware 4.4.1, Applix is offering a
$79 upgrade. For more information, please see 
<P>
 For more information:
<A HREF="http://www.applix.com/">http://www.applix.com/</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Intel, Netscape invest in Linux
</H3>
<P> 
Date: Tue, 29 Sep 1998 11:43:45 -0700<BR> 
Red Hat Software has announced that Intel, Netscape and two VC firms are
taking equity positions in the company which will enable it to create the 
Enterprise Computing Division. This division will ready Linux for 
enterprise-wide applications, enabling Linux, the most open, robust and 
carefully scrutinized operating system in the world, to tackle the likes 
of Windows NT.  
<P> 
For more information: <BR>
<A HREF="./redhat.pr2">Full Press Release</A> 


<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Red Hat News Flash
</H3>
<P> 
Date: Mon, 28 Sep 1998 09:30:03 -0700 (PDT)<BR> 
It has recently come to the attention of Red Hat Software that there
are significant security holes in CDE.  All users are affected, both those
who purchased CDE Client and those who purchased CDE Developer that runs on 
Red Hat Linux 4.0 up to 5.1.
<P> 
For more information:<BR> 
<A HREF="./redhat.pr">Full Press Release</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Canadian National Installfest a Success
</H3>
<P> 
Date: Sun, 27 Sep 1998 19:58:06 PDT<BR> 
The Installfest referred to in last months News Bytes has come off an 
outstanding success! Details at <A HREF="http://www.linux.ca/installfest.html">
http://www.linux.ca/installfest.html</A><BR> 
A world-wide installfest in the offing?
<P> 
For more information:<BR> 
Dave Stevens, <A HREF="mailto:davestevens@hotmail.com">
davestevens@hotmail.com</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">
Linux/Personal Productivity Tools
</H3>
<P>
LOS ALTOS HILLS, CA (Sept. 8, 1998) -- Personal Productivity Tools, Inc. 
(PPT) today announced that version 3.0 of its EtherPage (tm) 
client/server-to-pager messaging system is now running under Linux, the 
UNIX clone operating system.
<P>
EtherPage delivers messages rapidly and efficiently from 
computer networks to wireless devices, including alphanumeric and 2-way 
pagers and digital cellular phones.  In addition to Linux, EtherPage now 
runs under a broad range of operating systems including Windows NT and 
UNIX. 
<P>
For more information: <BR> 
Personal Productivity Tools, Inc., <A HREF="http://www.ppt.com/">
http://www.ppt.com/</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
LinkScan 5.0 - Breakthroughs in Performance, Scalability &  Workflow
</H3>
<P>
San Jose, CA, Sept. 10, 1998. Electronic Software Publishing Corporation
(Elsop) released LinkScan 5.0 today. Major improvements have been made
to LinkScan 5.0 to make it serve the needs of workgroups throughout
the enterprise and facilitate the workflow between content managers,
developers and systems administrators. These improvements are the result
of radical design changes that make version 5.0 essentially a new product
compared to earlier versions. This effort was energized by the needs of
organizations with very large intranet websites and public websites. 
<P>
LinkScan operates on all Unix Servers (including AIX, BSD, Digital Unix,
HP/UX, IRIX, Linux, and SunOS/Solaris flavors) and Windows NT 5.0 servers
with Perl 5. Free fully functional evaluation copies of LinkScan 5.0 may
be downloaded (less than 300 Kbytes) from the company's website at:
<A HREF="http://www.elsop.com/">http://www.elsop.com/</A> 
<P>
For more information:<BR> 
Kenneth R. Churilla, <A HREF="mailto:ken@elsop.com">ken@elsop.com</A> <BR> 
Electronic Software Publishing Corporation

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
NetBeans Releases Last Beta Version of Java IDE, Free Download Continues
</H3>
<P>
Prague, Czech Republic, September 14, 1998 - NetBeans, Inc. today announced the 
release of the Beta 3 version of NetBeans Developer 2.0.  It is the last beta 
prior to the full release, which is due near the beginning of Q4.  Beta 3 is 
available for free download from the NetBeans web site, http://www.netbeans.com.
<P>
NetBeans IDE is a full-featured Java IDE based completely on Swing/JFC.  
NetBeans is both written in Java and it generates Java code.  It is an object 
oriented, visual programming environment based on JavaBeans components without 
relying on any third-party components. The IDE is easily extensible, and it runs
on any platform that supports JDK 1.1.x, including Win95/98/NT, Apple Mac, 
Linux, OS/2, Solaris, HP-UX, Irix, and others.  Since the June release of Beta 
1, over 18,000 new registered users have downloaded the tool.
<P>
For more information:<BR> 
NetBeans, Inc., <A HREF="http://www.netbeans.com/">http://www.netbeans.com</A>,
<A HREF="mailto:info@netbeans.com">info@netbeans.com</A><BR> 
Product Overview, <A HREF="http://www.netbeans.com/overview.html">
http://www.netbeans.com/overview.html</A> <BR> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
NetBeans Bundles Cloudscape with Leading Programming Environment
</H3>
<P>
Oakland, CA and Prague, Czech Republic, September 21, 1998-NetBeans, Inc. and 
Cloudscape(TM) Inc. announced today that NetBeans, Inc. will bundle Cloudscape's 
embeddable Java-based object relational database with upcoming releases of the 
NetBeans IDE. Founded on  the principle of Java innovation, NetBeans is the 
first company to offer an all-Java IDE based on Swing/JFC. Cloudscape offers the 
industry's first embeddable Java database, designed to be invisibly embedded 
within applications as a local data manager.
<P>
The Cloudscape database will be bundled with NetBeans Developer 2.0, allowing 
users of NetBeans Developer 2.0 to create Java applications that integrate a 
fully functional, yet lightweight object-relational database manager. The 
integrated product is expected to be available in November 1998.
Cloudscape ships the only 100% Pure Java(TM) SQL database manager designed
to be invisibly embedded within applications as a local data manager.
<P>
For more information:<BR> 
NetBeans, Inc., <A HREF="http://www.netbeans.com/">http://www.netbeans.com</A>,
<A HREF="mailto:info@netbeans.com">info@netbeans.com</A><BR> 
http://www.netbeans.com, write to info@netbeans.com, or call 011 4202 8300 7322.
Cloudscape, Inc.
<A HREF="ehttp://www.cloudscape.com/">http://www.cloudscape.com/</A>,
<A HREF="mailto:info@cloudscape.com">info@cloudscape.com</A>

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Prolifics to be launched for Linux!
</H3>
<P>
Mon, 21 Sep 1998 00:34:30 +0200<BR> 
Based upon market interest and customer feedback, Prolifics has decided
to offer a version of Prolifics on Linux.  Linux offers the development
community a strong platform choice at very modest prices.  We feel that
Prolifics, based on industry standards such as COM and Java, can offer
this community a unique, powerful and flexible tool for building
cross-platform
database applications.  Application Servers for the Web will be provided
to process business logic on the Linux servers and deploy the presentation
layer on a thin client Web Browser.   These applications can be deployed
for character-based, GUI and Web environments.
<P>
The Linux platform will first be made available with Prolifics 4 Standard.
Prolifics 4 Standard is our upcoming 2-tier product release due out
4Q 1998.  Look for a customer letter telling you all about it and more
this week or next.
<P>
For more information:<BR> 
Prolifics, Devi Gupta, <A HREF="mailto:devi@prolifics.com">
devi@prolifics.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
IGEL
</H3>
<P>
    Palmer, PA - September 7, 1998 - IGEL LLC today
      announced the availability of Etherminal J, a Thin Client desktop device.
      The first variant has been exhibited at Thinergy '98, the first global
      conference on thin-client/server computing held in Orlando, Sept. 1-3,
      1998. 
 <P>    
    Etherminal J, based on IGEL's Flash Linux Technology,
      is the only thin client device incorporating Netscape Communicator Version
      4.05, and a complete set of UNIX connectivity tools, locally in its own
      Flash Memory. Storing and running these software modules locally keeps
      network bandwidth requirements at a minimum. IGEL's Flash Linux is a
      compressed UNIX-compatible, flash memory accessible operating system. It
      is a POSIX-conform, multi-threading multi user operating system. Based on
      the popular Linux kernel, it offers the largest number of available device
      drivers and applications. It supports Internet and Java. IGEL tailored
      this OS to support a defined Thin Client hardware, and developed a flash
      memory driver technology to compress this OS, and all accompanying
      Emulators, X11R6 X-Server, and Thin Clients for multi-user Windows NT, and
      the Netscape Communicator in 12MB of &quot;Disk-on-Chip&quot; Flash
      Memory. IGEL's BIOS extensions allow to directly boot this compressed
      Flash Linux. At run-time needed OS parts, Emulators, Thin Clients, and the
      Netscape Communicator are decompressed on demand.
    <P> 
For more information:<BR> 
IGEL*USA, <A HREF="http://www.igelusa.com/">http://www.igelusa.com/</A><BR> 
H. Knobloch, <A HREF="mailto:hans@igelusa.com">hans@igelusa.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Linux Office Suite 99 from SuSE
</H3>
<P>
OAKLAND, Calif.--(BUSINESS WIRE)--Sept. 24, 1998--S.u.S.E., Inc. today
announced the release of Linux Office Suite 99 -- a comprehensive
software package that combines the latest in Linux technology with some
of the most powerful, user-friendly applications on the market.
<P>
S.u.S.E.'s Linux Office Suite 99 includes a spreadsheet, word processor,
presentation graphics, database, fax program, and many other critical
business applications.
<P>
Linux Office Suite 99 comes with the latest version of Applixware 4.4.1,
which includes Applix Words, Spreadsheets, Graphics, Presents, and HTML
Author, as well as Applix Data and Applix Builder. Applixware's latest
release delivers a new filtering framework that has been optimized for
document interchange with Microsoft Office 97.
<P>
In addition, Linux Office Suite 99 integrates Applixware with the
powerful ADABAS D 10.0 database system, enabling users to import data
from the ADABAS D database into Applix Spreadsheets. Linux Office Suite
99 also contains the KDE and GNOME graphical desktops, S.u.S.E. fax, the
personal edition of the backup utility ARKEIA 4.0, the popular GIMP
graphics program, and many other features.
<P>
Linux Office Suite is compatible with S.u.S.E., Red Hat, Caldera, and
other popular versions of Linux. Users who need to install Linux for the
first time can do so quickly and easily with the base system of S.u.S.E.
Linux 5.3 that is included with the Office Suite.
<P>
For more information: <BR> 
S.u.S.E., <A HREF="http://www.suse.com/">http://www.suse.com/</A>

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Xtoolwait 1.2
</H3>
<P>
Date: Tue,  8 Sep 1998 07:54:58 GMT<BR> 
One and a half year have gone by without a single bug report, so it's time
to release a new version of Xtoolwait.
<P>
This utility notably decreases the startup time of your X sessions, provided
that you start a number of X clients automatically during the X session
startup.
Most people, for instance, start X clients like xterm, xclock, xconsole and
xosview from their .xinitrc, .openwin-init, .xtoolplaces or .xsession file.
<P>
These X clients are started simultaneously (in the background) which puts a
high load on the X server and the OS
<P>
Xtoolwait solves this problem by
starting one X client in the background, waiting until it has mapped
a window and then exiting.
<P>
Download Xtoolwait from this page<BR> 
<A HREF="http://www.hacom.nl/~richard/software/xtoolwait.html">
http://www.hacom.nl/~richard/software/xtoolwait.html</A> 
<P>
For more information:<BR> 
Richard Huveneers, <A
HREF="mailto:richard@hekkihek.hacom.nl">richard@hekkihek.hacom.nl</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Fileman V1.1 - X-window based File Manager
</H3>
<P>
Date: Tue,  8 Sep 1998 08:32:09 GMT<BR> 
FileMan, a X-window based File Manager offering a large number
of features along with great configurability and flexibility
is now available as version 1.1.
<P>
Version 1.1 offers improved performance and many bug fixes over
earlier releases.
<P>
Some features are still not fully complete, but it is still very
useable and contains enough features to manage a Linux environment.
<P>
For more information: <BR> 
<A
HREF="http://www.bongo.demon.co.uk/page6.html">http://www.bongo.demon.co.uk/page6.html</A>
<BR> 
Simon Edwards, FileMan Developer,
<A HREF="mailto:filem@bongo.demon.co.uk">filem@bongo.demon.co.uk</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
ppdd - encrypted filesystem - kernel patch and support progs.
</H3>
<P>
Date: Tue,  8 Sep 1998 08:38:12 GMT<BR> 
ppdd is an advanced encrypted file system for i386 Linux only.
<P>
ppdd is used in a similar way to the loop device and offers simplicity and
speed plus full strength encryption (128 bit).
The design takes into consideration the fact that data on disc has a
long lifetime and that an attacker may have the matching plaintext to
much of the cyphertext.
A combination of master/working pass phrases offers enhanced security
for backup copies.
Current status is BETA and comments on the
implemenation and underlying crypography are most welcome.
<P>
It consists of a kernel patch plus support programs and is intended
for users with enough knowledge to compile the kernel, setup LILO,
partition disks etc. It is not for absolute beginners or "non technical"
users yet.
<P>
Available from: <A HREF="http://pweb.de.uu.net/flexsys.mtk">
http://pweb.de.uu.net/flexsys.mtk</A> 
<P>
Package is ppdd-0.4.tgz, PGP signature is also available from same URL.
<P>
For more information:<BR> 
Allan Latham, <A HREF="mailto:alatham@flexsys-group.com">
alatham@flexsys-group.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
bzip2-0.9.0, program and library for data compression
</H3>
<P>
Date: Tue,  8 Sep 1998 08:47:31 GMT <BR> 
bzip2-0.9.0 is a high-quality, portable, open-source, lossless
data compressor, based on the Burrows-Wheeler transform.
<P>
Source code, binaries and further details, are available from <BR> 
<A HREF="http://www.muraroa.demon.co.uk">http://www.muraroa.demon.co.uk</A> 
<P> 
and also from the mirror site<BR> 
<A HREF="http://www.digistar.com/bzip2/index.html">
http://www.digistar.com/bzip2/index.html</A> 
<P>
bzip2-0.9.0 is fully compatible with the previous version,
bzip2-0.1pl2.  In particular, the .bz2 file format is unchanged.
<P>
For more information:<BR> 
Julian Seward, <A HREF="mailto:Julian_Seward@muraroa.demon.co.uk">
Julian_Seward@muraroa.demon.co.uk</A> 

Xterminal 0.4 - Object Oriented User Interface
<P>
Date: Tue,  8 Sep 1998 08:45:51 GMT<BR> 
   Xterminal is an Object Oriented User Interface with a client-server
architecture. The main purpose is a friendly interface for the UNIX operating
systems. It is designed to be used to build text-based applications in C++.
 <P>   It consists in a complete object oriented library including multiple,
resizeable, overlapping windows, pull-down menus, dialog boxes, buttons,
scroll bars, input lines, check boxes, radio buttons, etc. Mouse support,
advanced object management, events handling, communications between objects
are provided, too, together with a complete programmer's manual.
<P>
   Xterminal is available for download from:<BR> 
<A HREF="ftp://sunsite.unc.edu/pub/Linux/libs/ui/Xterminal-0.4.tar.gz">
ftp://sunsite.unc.edu/pub/Linux/libs/ui/Xterminal-0.4.tar.gz</A> <BR> 
<A HREF="http://www.angelfire.com/sc/Xterminal/download.html">
http://www.angelfire.com/sc/Xterminal/download.html</A> 
<P>
For more infomation:<BR> 
<A HREF="http://www.angelfire.com/sc/Xterminal/">
http://www.angelfire.com/sc/Xterminal</A> <BR> 
Dragos Acostachioaie, <A
HREF="mailto:dragos@iname.com">dragos@iname.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
connect v1.0alpha - tool to ease the sharing of a PPP link
</H3>
<P>
Date: Tue,  8 Sep 1998 08:50:39 GMT<BR> 
Here is the first ALPHA release of connect package (v1.0a)
<P>
connect package is a client-server program designed to ease the sharing
of a PPP link to the internet over a small
network.
<P>
connect is a solution. By running a tiny daemon (connectd) that will
take care to launch the PPP when asked to and keep it up as long as
needed, you can control your link.
<P>
As you can talk to the daemon with a command-line or a Java applet,
access is easy from a unix host or a browser running on a Win95/NT
workstation.
<P>
connect can be freely downloaded from its home page, see<BR> 
<A HREF="http://www.caesium.fr/freeware/connect/index.html">
http://www.caesium.fr/freeware/connect/index.html</A> 
<P>
For more information:<BR> 
Nicolas Chauvat, <A HREF="mailto:nico@caesium.fr">nico@caesium.fr</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
PalmPython 0.5.2 - PalmPilot sync/database library for Python
</H3>
<P>
Date: Thu, 10 Sep 1998 10:22:50 GMT<BR> 
I am pleased to announce version 0.5.2 of PalmPython, a conduit
programming kit which enables desktop applications to access
PalmPilots and their data.  PalmPython is available at the following
URL:
<P>
<A HREF="http://www.io.com/~rob/cq/palmpython/">
http://www.io.com/~rob/cq/palmpython/</A> 
<P>
PalmPython requires the pilot-link library, which can be found at<BR> 
<A HREF="ftp://ryeham.ee.ryerson.ca/pub/PalmOS/">
ftp://ryeham.ee.ryerson.ca/pub/PalmOS/</A> 
<P>
For more information:
Rob Tillotson, <A HREF="mailto:robt@debian.org">robt@debian.org</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
C++ library wxWindows/Gtk 1.93 and GUI builder
</H3>
<P>
Date: Thu, 10 Sep 1998 09:49:21 GMT
a new version of the GTK+ port of the cross
platform library wxWindows has been released.
<P>
To our knowledge, wxWindows is the only cross
platform library available for creating native
Windows and Unix/GTK+ applications. Although
it is not its primary goal, wxWindows should 
help make the transition from Windows to Linux 
much smoother, not the least for small companies.
<P>
Apart from being platform independent, wxWindows 
is arguably the most complete free class library 
around offering features from database connectivity
to configuration management to internationalization
to a multiple document interface and support for
printing using Postscript on Unix. We also provide
detailed documentation and a set of sample apps.
<P>
<A HREF="http://wesley.informatik.uni-freiburg.de/~wxxt/">
http://wesley.informatik.uni-freiburg.de/~wxxt/</A> 
<P>
The main wxWindows site:<BR> 
<A HREF="http://web.ukonline.co.uk/julian.smart/wxwin/">
http://web.ukonline.co.uk/julian.smart/wxwin/</A> 
<P>
wxWindows is free and has been an open source project
since long before that term has been trademarked.
<P>
For more information:<BR> 
Robert Roebling, <A HREF="mailto:roebling@sun2.ruf.uni-freiburg.de">
roebling@sun2.ruf.uni-freiburg.de</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
hm-3.0 - multiplatform curses-based filemanager
</H3>
<P>
Date: Fri, 11 Sep 1998 08:50:49 GMT<BR> 
hm 3.0 is a multiplatform cursesbased filemanager.
                Developed, adjusted and matured for 3
                years by and for unix system managers.
                Versatile look from ls-like to ls -ail.
                All the basics with one keystroke: cd, cat,
                chgrp, chmod, chown, cp, diff, file, ln, man,
                mkdir, mv, od, rm, sh, sum, tail -f, vi, wc.
                Help-facility built in (no man page needed).
<P> 
<A
HREF="http://sunsite.unc.edu/pub/Linux/utils/file/managers/hm-3.0.tar.gz">
http://sunsite.unc.edu/pub/Linux/utils/file/managers/hm-3.0.tar.gz</A> 
<P> 
For more information:<BR> 
Hans de Hartog, <A HREF="mailto:dehartog@csi.com">
dehartog@csi.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
mswordview 0.4.0 released
</H3>
<P>
Date: Fri, 11 Sep 1998 12:43:27 GMT<BR> 
yes the best thing since sliced bread, the ongoing office98 word
format to html conversion project has notched up another few victories.
<P>
changes since last announced version are basically:<BR> 
many many many bug fixes.<BR> 
improved lists.<BR> 
vastly improved header and footer support.<BR> 
section support.<BR> 
page numbering styles support.<BR> 
improved handling of hyperlink fields.<BR> 
and....<BR> 
prelinary support for graphics !, yep given a gif/jpg/png inserted
via the insert->picture->from file mechanism, mswordview can to date
successfully find its way to outputting a graphic, though this feature
is very alpha and based upon more that a little bit of guesswork.
<P>
<A HREF="http://www.csn.ul.ie/~caolan/docs/MSWordView.html">
http://www.csn.ul.ie/~caolan/docs/MSWordView.html</A> <BR> 
<A HREF="http://www.gnu.org/~caolan/docs/MSWordView.html">
http://www.gnu.org/~caolan/docs/MSWordView.html</A> 
<P>
For more information:
Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
Caolan.McNamara@ul.ie</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
acua 2.11 - modem pool administration utility
</H3>
<P>
Date: Tue, 15 Sep 1998 14:28:51 GMT<BR> 
ACUA is designed to facilitate the administration of Linux
systems hosting modem pools.  ACUA's high-level goals are:
<ul>
<li>to automate the enforcement of access restrictions
<li>to automate (as much as possible) user administration tasks
<li>to provide accounting information
<li>to collect and provide useful statistics
</ul>
<P>
<A HREF="http://acua.gist.net.au/">http://acua.gist.net.au/</A> 
<P>
For more information:<BR> 
Adam McKee, <A HREF="mailto:amckee@iname.com">amckee@iname.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
InfoPrism v0.0.3 - A General Document Processing System
</H3>
Date: Tue, 15 Sep 1998 14:25:51 GMT<BR> 
<P>
InfoPrism is a general document processing system that translates SGML
source files to different output formats like HTML, Texinfo, LaTeX and plain
text.
<P>
In addition to plain old SGML documents InfoPrism handles so-called SGML
scripts as well. These are Tcl scripts using additional commands for
document creation. The commands are
   * counterparts of SGML elements (e.g. `ul', `pre').
   * shortcuts for multiple SGML elements (e.g. `liwul').
   * simulate SGML facilities (e.g. `include').
<P>
Examples can be found in the `sgml' subdirectory of the distribution.
<P>
<A HREF="http://www.han.de/~racke/InfoPrism/">
http://www.han.de/~racke/InfoPrism/</A> 
<P>
For more information:<BR> 
Stefan Hornburg, <A
HREF="mailto:racke@gundel.han.de">racke@gundel.han.de</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Fixkeys 0.1 - Mini-HOWTO on home/end/del/backspace keys
</H3>
<P>
Date: Tue, 15 Sep 1998 14:35:58 GMT<BR> 
Fixkeys is a mini howto on howto get home/end/del/backspace behaving the
way you want under linux.
This howto comes with prepared config files and doesn't only describe
what to do to get your keys to work but also why.
<P>
<A HREF="http://electron.et.tudelft.nl/~jdegoede/fixkeys.html">
http://electron.et.tudelft.nl/~jdegoede/fixkeys.html</A> 
<P>
For more information:<BR> 
Hans de Goede, <A HREF="mailto:j.w.r.degoede@et.tudelft.nl">
j.w.r.degoede@et.tudelft.nl</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Linux PC-Emulator DOSEMU, new stable release: dosemu-0.98.1
</H3>
<P> 
Date: Tue, 15 Sep 1998 14:51:27 GMT<BR> 
The DOSEMU team is proud to announce DOSEMU 0.98.1, the PC Emulator for
x86 based *nix. Please remember to consider this as ALPHA software.
<P>
DOSEMU is a PC Emulator application that allows Linux to run a DOS
operating system in a virtual x86 machine. This allows you to run
many DOS applications. 
<P>
The DOSEMU PC Emulator can be downloaded from the following FTP sites:
<P>
<A HREF="ftp://ftp.dosemu.org/dosemu/">ftp://ftp.dosemu.org/dosemu/</A> <BR> 
<A HREF="ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/">
ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/</A> 
<P>
The binary distribution is statically linked against libc-5.4.46 and libX*
from XFree-3.3.2.3. It should run on all current Linux distributions.
<P>
For more information:<BR> 
The DOSEMU-Delopment-team, <A HREF="mailto:linux-msdos@vger.rutgers.edu">
linux-msdos@vger.rutgers.edu</A> <BR> 
<A HREF="http://www.dosemu.org/">http://www.dosemu.org/</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
ROADS 2.00 - a free Perl based Yahoo-like system
</H3>
<P>
Date: Mon, 21 Sep 1998 10:31:31 GMT<BR> 
ROADS version 2.00 is 
a free Yahoo-style system written in Perl.
It is a collection of tools which can be used in
building on-line catalogues. 
<P> 
<A HREF="ftp://ftp.roads.lut.ac.uk/pub/ROADS/roads-v2.00.tar.Z">
ftp://ftp.roads.lut.ac.uk/pub/ROADS/roads-v2.00.tar.Z</A> 
<P>
For more information:<BR> 
Martin Hamilton, <A HREF="mailto:martin@net.lut.ac.uk">
martin@net.lut.ac.uk</A>

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Loadmeter 1.20 - Linux/Solaris system stats utility
</H3>
<P>
Date: Mon, 21 Sep 1998 10:33:20 GMT<BR> 
Loadmeter is a useful little system monitoring utility I've hacked up to keep
track of various system stats. It monitors:
Load average, Uptime, Disk usageb,and Memory usage.
<P>
<A
HREF="http://www.zip.com.au/~bb/linux/">http://www.zip.com.au/~bb/linux/</A> 
<P>
For more information:<BR> 
Ben Buxton, <A HREF="mailto:bb@zip.com.au">bb@zip.com.au</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Gtk-- 0.9.15 - C++ wrapper for gtk
</H3>
<P>
Date: Mon, 21 Sep 1998 11:08:08 GMT<BR> 
Version 0.9.15 of Gtk-- is now available.
<P>
<A HREF="http://www.iki.fi/terop/gtk/">http://www.iki.fi/terop/gtk/</A> 
<P>
Gtk-- is a C++ wrapper for GTK, the Gimp ToolKit. GTK is a library for
creating graphical user interfaces. Gtk-- is distributed under GNU
LGPL.
<P>
Gtk-- provides C++ abstraction of gtk library. The C++ interface is
kept very similar to the interface gtk has. Thus documentation and
knowledge of gtk can be utilized for creating GUI applications using
Gtk-- while still enjoying advantages C++ language can offer.
<P>
Gtk's homepage: <A HREF="http://www.gtk.org/">http://www.gtk.org/</A> 
Gnome homepage: <A HREF="http://www.gnome.org/">http://www.gnome.org/</A> 
<P>
(*) gnome and gtk1.1 widget support require newest versions from gnome
    cvs server.
<P>
For more information:<BR> 
Tero Pulkkinen, <A HREF="mailto:terop@assari.cc.tut.fi">
terop@assari.cc.tut.fi</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
klp-0.2 - a print queue manager for KDE
</H3>
<P> 
Date: Mon, 21 Sep 1998 11:22:12 GMT<BR> 
It's here -- klp - a line printer queue manager for KDE --
Second (alpha) release 0.2.
<P>
klp is a GUI based replacement/wrapper for lpr/lpq/lprm (or similar in case
of other types of print servers).  It manages the print queue of printers. 
klp is intended for use with the K Desktop Environment <A
HREF="http://www.kde.org/">http://www.kde.org/</A>.
<P>
You can print by drag&drop documents from KDE's filemanager on it.
You can view the queue and remove items from it.
<P>
klp can dock itself in the panel, still showing the printer status.  The
docked icon also allows printing by drag&drop.
<P>
<A
HREF="http://rulhmpc49.LeidenUniv.nl/~klp">http://rulhmpc49.LeidenUniv.nl/~klp</A> 
<P>
For more information:<BR> 
Frans van Dorsselaer, <A HREF="mailto:dorssel@MolPhys.LeidenUniv.nl">
dorssel@MolPhys.LeidenUniv.nl</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
TkDesk 1.1 released
</H3>
<P>
Date: Mon, 21 Sep 1998 12:27:48 GMT<BR> 
   TkDesk is a graphical desktop and file manager for several types
   of UNIX (such as Linux) and the X Window System.  It offers a very
   rich set of file operations and services, and gives the user the
   ability to configure most aspects of TkDesk in a powerful way.  The
   reason for this is the use of Tcl/Tk as the configuration and (for
   the biggest part of TkDesk) implementation language.
<P>
<A HREF="http://people.mainz.netsurf.de/~bolik/tkdesk/">
http://people.mainz.netsurf.de/~bolik/tkdesk/</A> 
 <P>   
For more information:<BR> 
Christian Bolik, <A HREF="mailto:Christian.Bolik@mainz.netsurf.de">
Christian.Bolik@mainz.netsurf.de</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
XFCE 2.1.0 - Window/Backdrop Manager and Toolbar for X released
</H3>
<P>
Date: Mon, 21 Sep 1998 12:37:49 GMT<BR> 
XFce is now a set of applications including a powerfull Window Manager 
compatible with MWM(tm), OpenLook(tm), GNOME and KDE hints, a toolbar a 
backdrop manager and a system sound manager (NEW!) for X11. 
Unlike so many other X applications, XFce is very easy to use and to 
configure, thanks to menus, all mouse driven !
Features pulldown menus with color icons, 3D widgets, etc.
<P>
<A
HREF="HTTP://xfce.penguincomputing.com/">HTTP://xfce.penguincomputing.com/</A><BR>  
<A
HREF="HTTP://www.linux-kheops.com/pub/xfce/">HTTP://www.linux-kheops.com/pub/xfce/</A>
<BR> 
<A HREF="HTTP://tsikora.tiac.net/xfce/">HTTP://tsikora.tiac.net/xfce</A> 
<P>
Anonymous ftp sites :
<P>
<A HREF="ftp://antarctica.penguincomputing.com/pub/xfce/">
ftp://antarctica.penguincomputing.com/pub/xfce</A> <BR> 
<A HREF="ftp://ftp.linux-kheops.com/pub/xfce-2.0.4/">
ftp://ftp.linux-kheops.com/pub/xfce-2.0.4</A> <BR> 
<A HREF="ftp://tsikora.tiac.net/">ftp://tsikora.tiac.net</A> 
<P>
XFce is a toolbar and a kind of desktop environment (XFce standing for XForms
Cool Environment)
With XFce, no need to learn any definition language, or type any configuration
file. XFce does it itself! Just use the mouse to define your preferences.
XFce provides an elegant and easy way to start all your X-Window applications,
using nice color icons, popup menus, etc.
<P>
For more information:<BR> 
Olivier Fourdan, <A HREF="mailto:fourdan@csi.com">fourdan@csi.com</A> 

<P> <hr> <P> 
<!-- =================================================================== -->

<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
Subject: COMMERCIAL: Better Counter for Linux
</H3>
<P>
Date: Mon, 21 Sep 1998 10:31:00 GMT<BR> 
Better Counter - one of the leading CGI script for counting web pages -
is now also available for Linux (on Intel hardware).
Better Counter is the world's first counter that combines the following
features:
<P>
- - Counts all pages of your site (depending on your service level)<BR> 
- - Counts the click-through of your external links<BR> 
- - Usability and clarity of the data presentation by using a Java Applet<BR> 
- - Complete hits analysis within a freely customizable page structure
<P>
Better Counter is also available as FREE service.
<P>
<A HREF="http://www.better-counter.com/">http://www.better-counter.com/</A> 
<P>
For more information:<BR> 
Stefan Ruettinger, <A HREF="mailto:Stefan_Ruettinger@rocketmail.com">
Stefan_Ruettinger@rocketmail.com</A> 
<A
HREF="http://www.better-homepage.com/">http://www.better-homepage.com/</A> 


<P> <hr> <P> 
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 33, October 1998</center>
<P> <HR> <P>
<!-- =================================================================== -->
<A HREF="./lg_toc33.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_tips33.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_answer33.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 &copy; 1998 Specialized Systems Consultants, Inc. </H5> 
<P> <HR> <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" 
	height="28" width="50" align="middle">Greetings From Jim Dennis</A></p>

<DL>
<!-- index_text begins -->
<dt><A HREF="#tag/autocad.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	><STRONG>AutoCAD for Linux?  Not Yet.  Sorry.</STRONG></A>
<dt><A HREF="#tag/floppy.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"></A>fd0 
 --or--
<dd><A HREF="#tag/floppy.html"><STRONG>Floppy/mount Problems: Disk Spins, 
	Lights are on, No one's Home?</STRONG></A> 
<dt><A HREF="#tag/scsi.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>SCSI drive installation 
 --or--
<dd><A HREF="#tag/scsi.html"><STRONG>Partition your HD before you try to 
	use it.</STRONG></A> 
<dt><A HREF="#tag/emacs_cc.html"><img src="../gx/dennis/qbub.gif" 
	height="28" width="50" alt="(?)" border="0"
	><STRONG>Supressing cc: lines in Emacs' Mail replies</STRONG></A>
<dt><A HREF="#tag/virthost.html"><img src="../gx/dennis/qbub.gif" 
	height="28" width="50" alt="(?)" border="0"
	></A>chroot, twist, and other rescue-boot fun 
 --or--
<dd><A HREF="#tag/virthost.html"><STRONG>"Virtual Hosting" inetd based 
	services using TCP Wrappers</STRONG></A> 
<dt><A HREF="#tag/samba_pdc.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	><STRONG>Linux/Samba as a Primary Domain Controller</STRONG></A> 
<dt><A HREF="#tag/ipmasq.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>ip masquerading 
 --or--
<dd><A HREF="#tag/ipmasq.html"><STRONG>IP and Sendmail Masquerading 
	over a Cablemodem</STRONG></A> 
<dt><A HREF="#tag/tty.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>tty help 
 --or--
<dd><A HREF="#tag/tty.html"><STRONG>Psuedo tty Becomes Unusable</STRONG></A> 
<dt><A HREF="#tag/connect.html"><img src="../gx/dennis/qbub.gif" 
	height="28" width="50" alt="(?)" border="0"
	></A>connect script failed 
 --or--
<dd><A HREF="#tag/connect.html"><STRONG>O.K. It's not a Winmodem</STRONG></A> 
<dt><A HREF="#tag/shuffle.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>[linuxprog] more shuffling experiments 
 --or--
<dd><A HREF="#tag/shuffle.html"><STRONG>Shuffling Lines in a File</STRONG></A> 
<dt><A HREF="#tag/hostavail.html"><img src="../gx/dennis/qbub.gif" 
	height="28" width="50" alt="(?)" border="0"
	><STRONG>Conditional Execution Based on Host Availability</STRONG></A>
<dt><A HREF="#tag/desqview.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>Desqview 
 --or--
<dd><A HREF="#tag/desqview.html"><STRONG>Buying DESQview and/or 
	DESQview/X</STRONG></A> 
<dt><A HREF="#tag/thanks2.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	><STRONG>Thanks</STRONG></A> for the pointer to uuencode sources.
<dt><A HREF="#tag/catch22.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>Download a Catch 22? 
 --or--
<dd><A HREF="#tag/catch22.html"><STRONG>Chicken and Egg  
	(Catch-22) for Linux Download/Install</STRONG></A> 
<dt><A HREF="#tag/typo.html"><img src="../gx/dennis/qbub.gif" height="28" 
	width="50" alt="(?)" border="0"
	></A>Important typo in Anti-Windows emulator rant 
 --or--
<dd><A HREF="#tag/typo.html"><STRONG>Will the "Real" freshmeat Please Get 
	Bookmarked?</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>

<h4>Back to School Special</h4>

<p>
 Well, it's been another great month for Linux.  
 We hear that Intel and Netscape are investing in Red Hat Inc.  
 and Intel is joining Linux International.
</p>

<p>
 So, everything is looking rosy for our favorite platform.
</p>

<p>
 What could be better?
</p>

<p>
 Well, I read an interesting editorial in ``;login'' the USENIX
 (<a href="http://www.usenix.org/">http://www.usenix.org/</a>) 
 Association's monthly magazine.  This
 is by Jordan Hubbard, one of the founders of the FreeBSD project
 --- and an employee at Walnut Creek.  
</p>

<p>
 He talks about the tendency of the freenix "clans" to fragment
 and duplicate development effort over relatively petty differences
 in licensing and --- more often as a result of the slithings and 
 bites of "the snakes of Unrestrained Ego and Not Invented Here."
</p>

<p>
 This fragmentation has been crippling the overall Unix marketplace
 for twenty years.  The odd thing is that there is both a Unix 
 "community" and a "marketplace."  The members of the community 
 tend to form "clans" which may bicker but mostly feel that they 
 have mostly common goals.  We'll argue incessantly over the 
 advantages of a BSD'ish vs. a GPL license, or the superiority of
 'vi' over 'emacs' or vice versa (I'm a heretic on that battle
 --- I use xemacs in "viper" -- vi emulation mode).
</p>

<p>
 The Unix community has a long history of producing free software
 --- one that predates Linux, FreeBSD, X Windows, and even the Free
 Software Foundation itself.  The FSF's GNU project was the first
 <em>organized</em> and <em>formal</em> effort to produce a fully 
 usable system of tools that was unencumbered by corporate copyright 
 (some argue that the "encumberances" of the GPL are even too much --- 
 but that's back to the perennial clan feud; so let's skip it).
</p>

<p>
 We may believe that Linux is the culmination of that effort.  I 
 hope it's not.
</p>

<p>
 Jordan goes on to explain the FreeBSD attitude to software vendors
 that are expressing a renewed interest in the UNIX market and why
 he (and his associates) tell them "to port to Linux first (or at
 all)"
</p>

<p>
 The FreeBSD support for running Linux binaries is apparently pretty
 solid (my use of FreeBSD has only required native binaries).  It's
 possible that FreeBSD could be "fully Linux compatible" right down
 to compliance with the "Linux Standards Base."  (It's likely to be
 easier for FreeBSD to achieve compliance than it will be for the
 various non-x86 Linux ports).
<p>
</p>

<p>
 Jordan also goes on to speculate:
</p>

<blockquote>
	``
	Say, for example, that someone fairly prominent
	in the Linux community popped up and told various 
	users that they might want to give FreeBSD a whirl,
	just to check out what it has to offer lately.
	''
</blockquote>

<p>
 Well, I'm probably not "fairly prominent" enough to fullfill
 Jordan's wish here.  However, I've been saying that for years, here
 and in other fora.  I think some of the SVLUG members are sick of
 hearing me suggest it.
</p>

<p>
 My co-author (on the Linux book that we're writing) is a FreeBSD
 user.  Some of my best friends favor NetBSD.  My wife has been
 recently working for an outfit that uses FreeBSD for most of their
 desktop systems (only occasional spots of Linux) and Solaris for
 their servers.  (The FreeBSD support for Japanese is apparently
 very good --- and it seems to be *much* more popular than Linux in
 Japan)
</p>

<p>
 I've used FreeBSD and still recommend as an FTP server.  I tend to
 stick with Linux for two reasons.  The first is laziness, I've
 gotten much more used to Linux' quirks than FreeBSD's, and it's
 easy to pick up new CD's for Linux --- they're everywhere; I have
 to hunt around a bit for FreeBSD CD's.  
</p>

<p>
 However, I'm going to be trying a copy of 3.0 when it ships (I
 guess that will be near the end of this month).  I'd suggest that
 all serious Linux students and enthusiasts try one of the BSD's
 --- FreeBSD for x86's; NetBSD for just about anything else; OpenBSD
 if your putting up an "exposed" system and allowing shell access to
 it.
</p>

<p>
 Meanwhile I'll also suggest that you look at other operating
 systems entirely.  Linux, FreeBSD, NetBSD, OpenBSD, Solaris .... 
 they're all Unix.  When you get beyond DOS/Windows/NT and MacOS
 all you see is UNIX.
</p>

<p>
 However there's quite a bit more out there.  You just have to 
 dig for them.  Here's one place where you can start:
</p>

	<a href="http://www.starshine.org/OS/"
	>http://www.starshine.org/OS/</a>

<p>
 I wrote that page a long time ago --- but most of the links
 still seem to be alive (O.K. Sven moved --- so I had to fix
 one link).
</p>
 
<p>
 Two notes of interest:  
</p>

<blockquote>
	Amoeba is now "free" 
</blockquote>

<blockquote>
	Amoeba is a distributed OS (think Beowulf clusters with
	lots of OS level support for clusering, process
	migration etc).  It was written as a research project
	by Andrew S. Tanenbaum of Vrije University (the author
	of Minix, and the text book from which Linus learned 
	some of what he know about OS design).  There was a 
	legendary "flamewar" (actually just a public debate)
	on the alt.os.minix newsgroup about the merits of
	monolithic kernels (Linux and the traditional Unix
	implementations) vs. "microkernels" (Minix, MACH, 
	the GNU HURD, NeXTStep, and many others).
</blockquote>

<blockquote>
	To learn more about Amoeba:
</blockquote>

<blockquote> <blockquote> <code>
		<a href="http://www.cs.vu.nl/pub/amoeba/"
		>http://www.cs.vu.nl/pub/amoeba/</a>
</code> </blockquote> </blockquote>

<blockquote>
	The EROS project (Extremely Reliable OS) has apparently
	finally been completed (for its initial release).  I've
	mentioned this project in my earlier columns --- it is a 
	microkernel OS which implements a "pure capabilities"
	security and authority model.  This is so unlike the 
	identity and access control lists models we see in Unix,
	NT, Netware, VMS and other multi-user OS that it took me
	about a year to "unlearn" enough to get some idea of what
	they were talking about.
</blockquote>

<blockquote>
	EROS is not a free system.  However, there are provisions
	for free personal use and research.
</blockquote>

<blockquote>
	You can read more about EROS at:
</blockquote>

<blockquote> <blockquote> <code>
		<a href="http://www.cis.upenn.edu/~eros/"
		>http://www.cis.upenn.edu/~eros/</a>
</code> </blockquote> </blockquote>

<blockquote>
	(The FAQ's explanation of capabilities and its comparison
	to ACL's and identity based authority models is *much* 
	better than anything that I found back when I first looked
	at this project a couple of years ago).
</blockquote>

<p>
 So, before you sing the praises of Linux to another potential
 convert --- consider your basis for comparison.  If you've only
 only used DOS/Windows/NT and Linux --- you'll want to go back to 
 school.
</p>

<P><a name="tag/autocad.html"><HR width="75%" align="center"></A></P> 
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->

<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>AutoCAD for Linux?  Not Yet.  Sorry.</H3>
<p><strong>From david stankus on 24 Sep 1998</strong></p>
<!-- begin body -->


<strong><p>Hi, I was talking with Terry and he told me you may know of a way to use 
an AutoCAD14 compatible on the Linux OS platform? I'm an AutoCAD driver 
for pay and am about to build a machine and I'll need an OS for said 
machine. Do you think Linux is a good way to go? Thanks Dave
</strong><p>

<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>Last I heard there was no support for Linux from Autodesk.
Although they originally developed on Unix, Autodesk has 
shifted almost completely to Windows in recent years ---
and they've been cutting their margins and trying to make
it on volume.  The prices for their Unix versions were 
always <EM>much</EM> higher than the Windows versions --- so their
perception of the market interest levels is probably a
matter of "self-fulfilling" prophecy.  (Naturally the market
will appear to have greater demand for the version that
costs one quarter the price).
</blockquote>

<blockquote>So you probably won't get AutoCAD running directly.  I also
wouldn't try to run it under one of the Windows emulators
that's available for Linux --- those are generally too slow
and unstable for productive use on major applications.  They
are most suited to the occasional case where you need to get
into Word or Excel to extract some data from a proprietary
document.
</blockquote>

<blockquote>Of course I could be wrong --- you should definitely call
Autodesk and ask them.  We've recently had Informix, Oracle,
Sybase, Corel, IBM and other major companies announce
product plans (and actually release products) for Linux.
So, Autodesk might be jumping on this bandwagon to blow
their own horn any time.  Calls by real users, who are
really interested in making an immediate purchase are bound
to help.  I've copied their webmaster on this message so 
that he or she (or they) can forward this along to the
the appropriate parties.  (I did search their web site at
<A HREF="http://www.autodesk.com">http://www.autodesk.com</A> 
for Unix and Linux --- and there didn't seem to be any support for 
any PC based Unix -- though there was mention of AIX, HP-UX, and Sun 
[sic] --- that would presumably be Solaris/SPARC).
</blockquote>

<blockquote>If that doesn't work you could try some of the native Linux
CAD packages. There are a couple of these out there --- one
is called "Microstation" from Bentley systems.  It is
available only in a "student version" and they won't sell a
"fully support" edition for commercial/professional use at
this time.  There also one called VariCAD and another called
Varkon.  Actually there's a whole list of related products
at: 
</blockquote>

<blockquote>
<blockquote><code><A HREF="http://www.linuxapps.com/cgi-bin/group.cgi?cad3d"
	>http://www.linuxapps.com/cgi-bin/group.cgi?cad3d</A>
</code></blockquote></blockquote>

<blockquote>... LinuxApps.com is an extensive site that lists a good
cross section of the available Linux software  (mostly
commercial software in this case).
</blockquote>
<blockquote>Two other favorite sites for Linux applications are:
</blockquote>
<blockquote>
	<dl><dt>Christopher B. Browne's home pages:
	<dd><A HREF="http://www.hex.net/~cbbrowne"
		>http://www.hex.net/~cbbrowne</A>
	</dl>
</blockquote>
<blockquote>Christopher is very active on the comp.os.linux.* 
newsgroups --- where he is often a voice of cool reason 
amidst the flames.  His Linux pages covers DBMS (databases)
more extensively than any others I've found.
</blockquote>
<blockquote>... and:
</blockquote>
<blockquote>
	<dl><dt>Linas Vepstas
	<dd><A HREF="http://www.linas.org">http://www.linas.org</A>
	</dl>
</blockquote>
<blockquote>Linas Vepstas should not be confused with Linus Torvalds.
However, Linas does maintain a nice trim set of web pages
devoted to "Linux Enterprise Computing."  I particularly 
like Linas' commentary and annotations, including the 
occasional wisecrack.  This is not "just another bookmarks"
page.
</blockquote>
<blockquote>These might not work like AutoCAD at all and I don't think
they support the same document formats nor the "AutoLISP" 
programming/macro'ing language.  However they might suit
you. 
</blockquote>
<blockquote>Ultimately if your most important requirement is AutoCAD ---
then you're probably stuck with Windows until Autodesk
figures it out.  Until then you could toss Linux up on a
cheap little PC in the closet --- run an ethernet cable to
it and access all your Linux applications remotely (via
telnet and/or VNC or X Windows).  If you use 'screen' and
VNC it's possible to leave jobs running on the Linux box
"detached" from your Windows box, so that the frequent
reboots required by Windows won't disturb your other work.
(My boxes at the house usually stay up for months at a time.
I only occasionally reboot any of them --- usually to add
hardware or install a new kernel.
</blockquote>
<blockquote>Your "closet" server can be as modest as a 386 with as
little as 16Mb of RAM and a 100Mb hard drive.  (Actually
it's possible to boot from a single diskette and do
limited work in 8Mb of RAM or less --- but 16Mb and a
hard drive is still a good idea).
</blockquote>
<!-- end body -->

<P><a name="tag/catch22.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Chicken and Egg  (Catch-22) for Linux Download/Install</H3>
<p><strong>From Richard Santora on 14 Sep 1998 </strong></p>
<!-- begin body -->


<p><strong>
Question.  Can you download Linux applications onto a floppy disk
formatted under dos and then install to Linux?  
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>You can put tar, rpm or other types of packages on a
DOS floppy (MS-DOS filesystem) and use that to 
transport any (sufficiently small) application.
</blockquote>


<blockquote>
You'd just mount the floppy (with a command like:
</blockquote>


<blockquote> <blockquote> <code>
mount -t msdos /dev/fd0 /mnt/a
</code> </blockquote> </blockquote>


<blockquote>
... and access the files under the <tt>/mnt/a</tt> (or whatever
mount point you chose).  You could then extract the
members of a .tar.gz file with a command like:
</blockquote>


<blockquote> <blockquote> <code>
cd /usr/local/from/floppy &amp;&amp; 
<br>tar xzf /mnt/a/mynew.tgz
</code> </blockquote> </blockquote>


<blockquote>
... or you could use your favorite packaging commands
to work with rpm and deb files.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>Background.  I am an inexperienced Linux 
<A HREF="http://www.redhat.com/">Red Hat</A> 5.0 home user. I
selected the "everything" software installation choice from the
installation CD onto my Dell XPS 60 with 40 Mb of Ram.  I am using
System Commander to use this pc to run dos based operating systems
as well as Linux. I have internet access through Windows 3.1 and
Windows 95.  I am having difficulty getting a connection under Linux
to my ISP, the Microsoft Network.  (I have been able to get the
modem to dial out using the Modem Tool and the Network Configurator
in the X window Control Panel.)  I would like to download one of the
freeware PPP programs and also Netscape Navigator. When I download
the PPP program using Windows 95, the file format extension will
remain ".tar" or ".rpm" however; the Linux OS will not mount the
floppy.  I can get to the directory using "mdir" but I can not seem
to get the program to install.  Is there a work around?
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>If you can't get the floppy (or your hard drive) to 
mount under Linux than you're probably missing some
module or kernel driver (your kernel might not have the
MS-DOS/FAT -- or VFAT, etc support enabled).
</blockquote>


<blockquote>
If you can see it under Linux with '<tt>mdir</tt>' (from the 'm-tools' 
package) than you can also copy it to one of your 
Linux native directories (such as /tmp) using the '<tt>mcopy</tt>'
command.
</blockquote>


<blockquote>
Read the '<tt>mtools</tt>' man pages for details.
</blockquote>
<!-- end body -->

<P><a name="tag/connect.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->

<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Another (Lose)-Modem</H3>
<p><strong>From Barbara Ercolano on 20 Sep 1998 </strong></p>


<p><strong>
Hi James,
I saw your "Answer Guy" page and I thought that maybe if you spare a few
minutes you might help me with solving my connection problem. I have
recently installed redhat linux on my PC and i am now trying to set up an
internet connection. I have the chatscript the ppp-on and the ppp-off
script the thing is that when i try to run the ppp-on nothing happens .
</strong></p>


<p><strong>
The syslog file says:
</strong></p>


<pre><strong>
....kernel: PPP Dynamic channel allocation code copyright 1995 <A HREF="http://www.caldera.com/">Caldera</A>, Inc.
....kernel: PPP line discipline registered
....kernel: registered device ppp0
....pppd[243]: pppd 2.2.0 started by root, uid 0
....chat[244]: timeout set to 5 seconds
</strong></pre>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>This is where the chat script sets a timeout.
</blockquote>


<pre><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>....chat[244]: sent (ATZ^M)
....chat[244]: alarm
</strong></pre>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>This is where the timeout occurs.
</blockquote>


<pre><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>....pppd[243]: Connect script failed
....chat[244]: Failed
....pppd[243]: Exit.
....kernel: PPP: ppp line discipline successfully unregistered
</strong></pre>



<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Just from this I know that your ATZ is getting no response.
That suggests that there is not a Hayes compatible modem on
the other end of the connection.  Either you're pointing
this at the wrong device (it's going to your serial mouse)--
or you have a <EM>WINMODEM</EM>!
</blockquote>


<blockquote>
'winmodems' are <EM>NOT</EM> hayes compatible devices.  They are
little chunks of cheap hardware that can be used with
proprietary (MS Windows only) drivers to <EM>emulate</EM> a modem
--- and a measure cost in your system's CPU cycles.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>this is my chatscript (/etc/ppp/chatscript)
</strong></p>

<pre><strong>TIMEOUT 5
"" ATZ
OK ATDT08450798888
ABORT 'NO CARRIER'
ABORT BUSY
ABORT 'NO DIALTONE'
ABORT WAITING
TIMEOUT 45
CONNECT ""
"ogin:" uk,ppp,myusername
"ssword:" password
</strong></pre>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Good, you sanitized it.  It's not good to send  
usernames and passwords to public discussion fora.
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>this is my /usr/sbin/ppp-on script:
</strong></p>


<pre><strong>
#!/bin/sh
#
# ppp-on - Set up a PPP link
#

CFG_DIR=/etc/ppp
LOCKDIR=/var/lock

DEVICE=cua1

MYIP=0.0.0.0

if [ -f $LOCKDIR/LCK..$DEVICE ]; then
   echo "PPP device is locked"
   exit 1
fi

/usr/sbin/pppd -d /dev/$DEVICE 38400 connect "/usr/sbin/chat -v -f
$CFG_DIR/chatscript" defaultroute $MYIP: &amp;&amp; exit 0

echo "PPP call failed"
exit 1
</strong></pre>



<p><strong>
this is my /usr/sbin/ppp-off script
</strong></p>



<pre><strong>
#!/bin/sh
#
# ppp-off - Take down a PPP link
#

if [ "$1" = "" ]; then
   DEVICE=ppp0
else
   DEVICE=$1
fi


if [ -r /var/run/$DEVICE.pid ]
then
   kill -INT `cat /var/run/$DEVICE.pid`

   if [ ! "$?" = "0" ]; then
      rm -f /var/run/$DEVICE.pid
      echo "ERROR: Removed stale pid file"
      exit 1
   fi
   echo "PPP link $DEVIVE terminated"
   exit 0
fi

echo "ERROR: PPP link is not active on $DEVICE"
exit 1
</strong></pre>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>This is all much too elaborate.  I'd 
just use a command like:
</blockquote>

<blockquote> <blockquote> <code>
pppd file /etc/ppp/myisp.options
</code> </blockquote> </blockquote>

<blockquote>
... and let it contain all the other options specific to
this ISP.
</blockquote>


<blockquote>
pppd will read the global options file (<tt>/etc/ppp/options</tt>)
which in most cases should just contain the "lock" 
directive.
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>this is my /etc/ppp/options file:
</strong></p>


<pre><strong>0.0.0.0:
/dev/cua1
</strong></pre>



<blockquote>
The cua* devices are deprecated.  Use ttyS* instead.
</blockquote>


<pre><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>lock
crtscts
defaultroute
asyncmap 0
mtu 296
mru 296
</strong></pre>


<p><strong>
this is my etc/resolv.conf
</strong></p>


<pre><strong>search netcomuk.co.uk
nameserver 194.42.224.130 194.42.224.131
</strong></pre>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>This is irrelevent to getting the modem to
dial (chat).    Also it is interesting that you sanitized
your login name and password but left in this identifier.
</blockquote>


<blockquote>
Oddly enough you can use just about any nameserver on the
Internet --- not just the one that your ISP provides.
I've occasionally used the nameserver from one of my
former employers when setting up a new machine at a 
customer site --- just long enough to have DNS to 
'dig' up the more appropriate and closer nameservers
(which should <EM>all</EM> have names or CNAMES of the form: 
ns*.foo.org in my not-so-humble-opinion).
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>This is all i can think of... mmhhh. I am not sure this is relevant but i
tried to run minicom as well and that didn't work either, I mean it seems
to be getting stuck... anuway... i hope you can help me...
</strong></p>


<blockquote>
If you can't get a boring old terminal emulation package
like 'minicom', 'ckermit' talking to your modem --- then 
it is quite relevant to your problems running SLIP, PPP, 
fax, or anything else to that modem.   The simplest think 
you can do to a modem is send it an ATZ and get an OK
response.  If you can't do that --- the modem 
(or your serial port, or your way of talking to the 
serial port) isn't working.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>Thanks a lot for your time
<br>love
<br>Barbara
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>No problem.  Please, chuck that winmodem and 
get a real, Hayes compatible.
</blockquote>

<!-- end body -->

<P> <hr width="40%" align="center"> <P>
<!--                          .............................          -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>O.K. It's not a Winmodem</H3>
<p><strong>From Barbara Ercolano on 20 Sep 1998 </strong></p>
<!-- begin body -->


<strong><p>
Hi James,
thanks for your email... I am not sure whether i have a winmodem ....
my modem's a Hayes Accura 336 External Fax Modem...
</p></strong>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>By their nature winmodems must be internal.  Since you 
have an external modem (and a Hayes (TM) brand one
at that) we can rule out that as the culprit.
</blockquote>


<blockquote>
This leads us to the next possibility.  I mentioned that
it might be a problem between the OS and your serial
hardware.
</blockquote>


<blockquote>
If you are using the correct /dev/ttyS* node --- then
the next mostly likely problem is an interrupts 
conflict.
</blockquote>


<blockquote>
Is this a  (PnP) "Plug and Pray" system?  (Reboot and
get into the CMOS setup program to look for those features).
If so, try disabling that and setting all of your COM and
printer ports to manually selected, non-conflicting ranges.
</blockquote>


<blockquote>
One of the bugaboos about Linux and most other Unix variants
is that they tend not tolerate IRQ's conflicts the way that
MS-DOS and Win 95 might.  (This tendency in DOS and Windows
probably leads to some of the intermittent hands and that
you see with those OS').  So, you should not set your COM2
and COM3 ports on the same IRQ.
</blockquote>


<blockquote>
First, read the Linux Serial HOWTO.  It will go into 
excruciating detail about the topic.  Next play with
commands like 'statserial' and 'setserial' and look at
the /proc/interrupts and /proc/ioports psuedo-files.
Also the boot up messages might help.
</blockquote>


<blockquote>
Also I think i have got the right port ttyS1 (cua1) for COM2...
I have tried running minicom, and the init string appeared whith my cursor
at the end of it, so i pressed enter and nothing happened after that (I
should have got OK, shouldn't I?) I tried to enter my username and password
(even though no login prompt appeared), and again nothing really happened I
saw the modem blink but that's about it, so i exited minicom without
resetting and looked at the syslog file... it said something about the line
not being 8-bit clean and that bit 7 was set to zero.... all this has
</blockquote>


<blockquote>
I'm glad you looked in the syslog --- I don't think I
remembered to suggest that in my earlier response.
</blockquote>


<blockquote>
This could be a cabling or IRQ problem.  Make sure that 
the modem cable is a good one.  I used to see problems
with cheap cables that didn't have all of the handshaking
lines connected and things like that. 
</blockquote>


<strong><p><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>absolutely no meaning to me whatsoever... I thought maybe you'd find it
more illuminating.
<br>Thanks a lot for your time
<br>Cheers,
<br>Barbara
</p></strong>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Yes, I was wrong to assume that it was a winmodem (I've been
getting too many of those recently) but it looks like I'm
still on the right track.  There is some problem with 
Linux's ability to talk to the device --- in this case it's
either having trouble talking to the serial port --- or the
cable isn't relaying that to the modem.  Or, it is still 
possible that you just have the wrong ttyS* port.  Try the
others, ttyS0 through ttyS3 for good measure.  (If your
modem is working on one of those --- skip that one).
</blockquote>
<!-- end body -->

<P> <hr width="40%" align="center"> <P>
<!--                          .............................          -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Yet More on the Serial Port (it's not a WinModem) thing...</H3>
<p><strong>From Barbara Ercolano on 21 Sep 1998 </strong></p>
<!-- begin body -->


<p><strong>
Hi ... it's me again , still tryin'...
I've just done
</strong></p>



<p><code><strong>cat /proc/interrupts</strong></code></p>



<p><strong>
and this is what i've got:
</strong></p>


<p><strong>
0: 646864  timer
1:   2933  keyboard
2:      0  cascade
4:   2457 +serial
8:      1 +rtc
13:     0  matherror
14: 71407 +ide0
</strong></p>


<p><strong>
now the question is , shouldn't i get two lines saying serial if my modem
was correctly installed??? The 4:  2457 +  serial line is the mouse isn't
it?
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Yes.  You probably should have another line there.
But what about the rest of the suggestions in the 
Serial-HOWTO.  Did you read through that?  
</blockquote>


<blockquote>
It used to say something about doing a 'dmesg' command
or viewing syslog's /var/log/messsages shortly after a
reboot --- with an example of the sorts of lines you should
see from the kernel.
</blockquote>


<blockquote>
The dmesg command is to "display" (actually *re-display*)
message that were generated during the boot sequence.  All 
those messages that tell you what your kernel "found."
</blockquote>


<blockquote>
If this port works under DOS, Windows, et al, then you 
might use the "MSD.EXE" (Microsoft Diagnostics) package
to tell you where DOS is finding the port.  You can also
use the "procinfo" command (from Linux) to get handy 
one page summaries of some system diagnostics and performance
stats (including how many interrupts have been recieved and
handled by kernel on each IRQ).
</blockquote>


<blockquote>
It may be that your serial port is set at a reasonable 
(non-conflicting) IRQ --- but that it's at one that the
kernel doesn't probe by default.  
</blockquote>


<blockquote>
To fix that you'd use the 'setserial' command to associate
a give /dev/ttyS* device with an IRQ and set other
characteristics on the line.  It's also possible, though
less likely, that you might have to use the stty command
to set yet other characteristics of the tty lines.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>Maybe this is where my problem is... what do you think? And if this is the
problem , what do i need to do?
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Try reading that HOWTO.  It's a bit long --- but I'd just
end up retyping most of it at this point anyway.  Also 
read the man pages for 'setserial' and 'stty' and play 
with them a little bit.
</blockquote>


<blockquote>
Since you seem to have a serial mouse --- try putting the
mouse on that other serial port, and changing your start
scripts (/etc/rc.d/$whatever) to have gpm, and X use that.
</blockquote>


<blockquote>
Actually on most Linux systems there's a symlink under
/dev/ from "mouse" -&gt; ttyS1 or -&gt; psaux or whatever, and
anther from "modem" -&gt; ttyS* (or to the deprecated cua* 
"callout" ports).  So, when you move a mouse or modem 
to a different serial port, you usually only have to 
change those symlinks according (just 'rm' the symlink and
create a new one or use the 'ln -sf $device mouse' command.
</blockquote>


<p><strong><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>cheers
<br>Barbara
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>I hope we get closer this time.  Do you have a local 
users group or other local guru to tap into for some 
in person and hands on expertise?
</blockquote>
<!-- end body -->

<P><a name="tag/desqview.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Buying DESQview and/or DESQview/X</H3>
<p><strong>From Larry Herzog Jr. on 19 Sep 1998 </strong></p>
<!-- begin body -->


<p><strong>
Do you have any idea where someone can by the final releases of both
Desqview386 and Desqview/X??  
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Larry,
</blockquote>


<blockquote>
Unfortunately I don't.  If they don't offer it direct from
<a href="http://www.quarterdeck.com/">Quarterdeck</a> (try calling and 
pestering for it via voice line) then I have no idea where you could get it.
</blockquote>


<blockquote>
I presume you ask because you found a references to 
DESQview on my web pages.  The fact is that I gave up on 
DV (and MS-DOS in general) about five years ago --- when
I switched to Linux full time.
</blockquote>


<blockquote>
Linux will run on just about any hardware that could support
DESQview/386 --- and it's DOSemu package is just about as
good as DV ever got.  XFree86, the X Windows system
supported by Linux (and the other freenix varieties) is much
more stable and modern than DESQview/X ever was (although I
did like dwm --- their quick little window manager, and
"appman" (applications manager).
</blockquote>


<blockquote>
I think it's a pity that Quarterdeck as done so poorly.
However, I must say I saw it coming.  That's one of the
reasons I left their employ when I did (long before they
gutted the whole department I had been in).
</blockquote>


<blockquote>
I think that the best things that Quarterdeck could do now
are: 
</blockquote>


<blockquote>
<ul>
<li>Release DESQview, QEMM386, the DESQview API
	programming kits etc all under the GPL.
	<em>[I think one of the other Open Source(tm) licenses would
	work fine, too;  for example, the NPL style with Quarterdeck filled
	in as originator. -- Heather]</em>
<li>Encourage <A HREF="http://www.caldera.com/">Caldera</A> 
	(current owners of DR-DOS --- 
	and a major distributor of Linux) to incorporate
	these into their DR-DOS package (which is
	now targeted toward embedded x86 systems)
<li>Release the DV/X sources, dwm and the related 
	utilities.  
<li>Start writing Linux and freenix applications
	--- and adding some professional polish and
	consumer touches to various freeware projects
	and sell collections of these add-ons.
<li>Offer paid Linux telephone support (Quarterdeck
	had the most effective and efficient tech support
	department that I've ever seen or worked with ---
	with the most expeditious and sensible call 
	escalation methodology.  If they haven't
	obliterated that from their corporate memory 
	--- they could <EM>rock</EM>!  I, the Linux Gazette
	&quot;Answer Guy&quot; would call them in a heartbeat
	if they were offering commercial support.
</ul>
</blockquote>



<blockquote>
But, alas and alack, it is not likely to be.  
Sorry I can't help you more than that.
</blockquote>
<!-- end body -->

<P><a name="tag/emacs_cc.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Supressing cc: lines in Emacs' Mail replies</H3>
<p><strong>From Ning on 23 Sep 1998 </strong></p>
<!-- begin body -->

<p><strong>
Hi Jim,
</strong></p>


<p><strong>
I found your email address from the Linux Gazette web site.  Hope it's
ok to ask you a question.  I use emacs to read and reply email.  Could
you please tell how to set up the <tt>.emacs</tt> file such that the CC 
line(s) is automatically removed when replying an email?
</strong></p>


<p><strong>
Many thanks,
<br>Ning
</strong></p>


<blockquote>
That would depend on which mail reader you're using under
'<tt>emacs</tt>'.
</blockquote>


<blockquote>
I use mh-e -- the emacs front end to the Rand MH mail
handling system.  When I hit "r" for "reply" it asks "Reply
to whom:" (my choices are "all" or &lt;enter&gt;/(none))
</blockquote>


<blockquote>
If I choose "all" or "cc" than mh-e will add the cc: lines
to my headers.  Otherwise, if I just hit enter it will only
include the address(es) listed on the From: line.
</blockquote>


<blockquote>
If you use RMAIL or VM or Gnus you answer will be different.
There are several mail readers for emacs --- and you'll want
to read the help and '<tt>info</tt>' pages for the one you're using
to find out how to customize it.  Sometimes you have to
resort to reading the elisp sources, particularly the
comments in order to under an emacs package.  This is
particularly handy if you intend to do any customizations of
you're own <tt>.emacs</tt> configuration file, since that is also
written in elisp.
</blockquote>


<blockquote>
In VM and Gnus you can use "r" to reply ("R" to reply with
the original quoted) and "f"/"F" to "follow" (do a "wide
reply").  Even if you pick the lower case options you can
yank in (quote) the original message.  The capitalized forms
just save you an extra couple of keystrokes.  Gnus can be
used as a mail reader as well as a newsreader --- and allows
you to see your mail folders in the same sort of "threaded"
mode as you might be used to from newsreaders.
</blockquote>


<blockquote>
Gnus will allow you to view mail and news that are stored in
just about any format.  I use it to view some of my MH
folders (particularly on the rare occasions when I can get
into the Linux Kernel mailing list digests.
</blockquote>


<blockquote>
VM allows you to "view" your standard "mbox" mail folders
--- which the the same sorts as you'd get from using
<tt>/usr/ucb/mail</tt> (<tt>mailx</tt>), '<tt>elm</tt>' and/or '<tt>pine</tt>'
</blockquote>


<blockquote>
RMAIL is the oldest and least featureful of the emacs
mailreaders.  It stores your messages in a single folder in
the "Babyl" format.  I've never used it and the info pages
don't reveal any obvious difference between replying to
"just the sender" and to the whole group of recipients (what
'<tt>elm</tt>' users think of as "r" vs "group" or "g" replies).
</blockquote>


<blockquote>
The reason I use MH folders is because it allows me to use
glimpseindex and get meaninful results when I search for
multiple keywords in proximity to one another.  For
instance, earlier this evening I wanted to find any copy of
the "comp.unix.admin" FAQ that I might have mailed myself.
Using the command glimpse "admin;faq" I was able to zero in
on the specific item in my "ref" (reference) folder in one
shot.  (I let the command run for a couple of minutes in the
background and continued by writing --- so I don't know how
long the search took).
</blockquote>


<blockquote>
When I used '<tt>elm</tt>' a search like that wouldn't have helped
much --- after finding the right folder I'd still have to
find the message and cut and paste that <EM>portion</EM> of the
file out to what I was working on.
</blockquote>


<blockquote>
Another feature that's important to me is that I can have
multiple drafts in progress.  I have a whole folder for
drafts, and once a draft is started it doesn't get "lost"
just because I have to set it aside and handle more pressing
issues, or go look up something.
</blockquote>


<blockquote>
Naturally you can use Supercite or other "citation/quoting"
packages with any of the emacs mailreaders to manage exactly
how your attributions look to them.  I've tried Supercite
and don't much like it.  There are also a couple of emacs
PGP interfaces that are designed to link to your news and
mailreaders, and the "tools for MIME" (tm). to help compose,
view, and extract those pesky MIME attachments.  Of course
you also have '<tt>ispell</tt>' available within a keystroke or
two. (I have mine bound to [F3],$ to check the word at point
and [F3],% to check the whole buffer --- however this is
usually not terribly handy for my writing since I tend to
have so many abbreviations, filenames, and non-words in my
work).
</blockquote>


<blockquote>
One nice think using a mailreader under emacs is I also have
easy access to the emacs "calendar" ([F3],C in my
configuration).  From there I can add an entry to my "diary"
using "i,d" which I can check (using [F3],D in my case).
</blockquote>


<blockquote>
So, I get mail inviting me to lunch on the tenth of next
month and I hit a couple of keystrokes (usually [F9] to
switch to the message buffer, a couple of '<tt>vi</tt>' keystrokes to
"Yank" the message or a couple paragraphs into a kill
buffer, [F3],C to bring up the calendar, a couple of
keystrokes to navigate to the 9th of next month, "id" to
"insert a date/diary entry" and "p" (another '<tt>vi</tt>' key) to
paste that note into place).
</blockquote>


<blockquote>
Now I just try to remember to check my diary folder at least
a couple times a day.  I usually put two entries in for each
date.  One is a one-liner that says: "tomorrow" and the
other gives the time and details.  It might refer me to the
"todo" folder, where I'll find the original message.
</blockquote>


<blockquote>
Similarly I use my mh/aliases folder (e-mail address book)
as a telephone and postal address book as well.  I do this
just using comments (start comment lines with a semicolon
--- just as you might in a sendmail /etc/aliases file).
</blockquote>


<blockquote>
Before I give people the impression that I'm some sort of
emacs fanatic I should point to that I detest the default
emacs keybindings (which I think were devised by
sado-masochists on bad drugs).  I use '<tt>viper</tt>' mode as the
default for most buffers, and I have fairly long list of
custom bindings to save my sanity for the things that old
'<tt>vi</tt>' was just never meant to do (like splitting the screen
between two buffers and launching "shell-prompt" buffers and
other editor "packages" like "dired" (file/directory
management buffers).
</blockquote>


<blockquote>
I rarely use "dired" (I prefer '<tt>mc</tt>' --- midnight commander)
and almost never use "gnuscape gnavigator" --- WM Perry's w3
mode.  It's an impressive bit of work --- but I like lynx
for text mode --- and Netscape's Navigator is better if I
<EM>have</EM> to go into X anyway.
</blockquote>


<blockquote>
There are a number of "helper" modes that seem to be more of
a hinderance than a help to me (like the AucTeX, LaTeX, TeX,
and html-helper modes).  They all seem to take a radically
different approach to structured text editing than I'm
willing to embrace.  Also I don't like emacs' abbreviations
mode -- since I like to have abbreviations that including
punctuation and it considers all of those to be word
boundaries and won't let me use them easily. (The old '<tt>vi</tt>'
abbreviations feature was very unassuming --- you gave it 
a list of characters to watch for and a list to expand 
those into --- it just did).
</blockquote>


<blockquote>
I'm told that most of the things I do in emacs are now
possible in '<tt>vim</tt>' --- and I use '<tt>vim</tt>' frequently to do 
quick edits.  I don't use '<tt>emacs</tt>' (actually xemacs) as
'<tt>root</tt>' -- so all configuration and <tt>/etc/</tt> files are
maintained in whatever version of '<tt>vi</tt>' happens to be lying
around.   That's almost always '<tt>vim</tt>' these days.  However,
I don't know any of the '<tt>vim</tt>' improvements --- they aren't
"portable" to other vi's or to emacs, so they'd be a loss
to invest any time in learning, at this point.  I use
xemacs because it supports a mixture of "applications" and
utilities (modes and packages in its own terminology) that
I can use from any old text mode login.
</blockquote>


<blockquote>
As an "OS within an OS" xemacs is a bit of a pain. 
Installing a new package, like the '<tt>calc</tt>' scientific 
calculator mode (think HP 48 calculators with all sorts
of algebraic expression processing analsysis and features
to export to GNUplot), and BBDB (the "big brother database"
--- a sort of "Rolodex" (tm) utility, is difficult.  It's
easy if you just want to wedge it into the same directories
with the other elisp code --- but I like to put new packages
that I install into /usr/local or /usr/local/opt (which is 
symlinked from /opt) --- so I can tell what I put there from
what my distribution installed.  That takes extra work.
</blockquote>


<blockquote>
Anyway -- I'll finish my rant by appending my latest <tt>.emacs</tt>
file.  Actually my <tt>.emacs</tt> only reads:
</blockquote>


<table bgcolor="#FFFFCC" width="90%" border="1"><tr><td><pre>
(load (expand-file-name "~/.elisp/init.el"))
</pre></td></tr></table>

<blockquote>
... and my <tt>~/.elisp/init.el</tt> is where all the action is:
</blockquote>


<table bgcolor="#FFFFCC" width="90%" border="1"><tr><td><pre>
;; Jim Dennis' .elisp/init.el file
(setq inhibit-startup-message 't )
(setq load-path (cons (expand-file-name "~/.elisp") load-path ))
(column-number-mode 1)
(line-number-mode 1)
(setq display-time-day-and-date 't)
(display-time)
(setq version-control 't)
(indented-text-mode)
(setq fill-column-default 72)
(setq fill-column 72)
(setq fill-prefix "  ")
(auto-fill-mode)
(setq viper-mode t)
(require 'viper)

;; Custom Functions:

(defun insert-output-from-shell-command (commandstr)
"Insert output from a shell command at point"
(interactive "*sInsert From Command:")
(shell-command commandstr 1))

(defvar my-mh-folder-keys-done nil 

"Non-`nil' when one-time mh-e settings made.")

(defun my-mh-folder-keys ()
"Hook to add my bindings to mh-Folder Mode."
(if (not my-mh-folder-keys-done) ; only need to bind the keys once 
(progn 
(define-key mh-folder-mode-map "a" 'visit-mh-aliases)
(define-key mh-folder-mode-map "b" 'mh-redistribute)
(define-key mh-folder-mode-map "T" (mh-put-msg-in-seq nil "t"))
(define-key mh-folder-mode-map "j" 'mh-next-undeleted-msg)
(define-key mh-folder-mode-map "k" 'mh-previous-undeleted-msg)
(setq my-mh-folder-keys-done 1) 
)))

(defun my-mh-letter-keys ()
"Hook to add my bindings to mh-Letter Mode."
(progn 
(define-key mh-letter-mode-map '[f4] 'mh-yank-cur-msg)
(define-key mh-letter-mode-map '[f5] 'mh-insert-signature)
(define-key mh-letter-mode-map '[f10] 'mh-send-letter)
(setq fill-column 68)
(setq fill-prefix "	")
(auto-fill-mode)
))

(add-hook 'mh-folder-mode-hook 'my-mh-folder-keys)
(add-hook 'mh-letter-mode-hook 'my-mh-letter-keys)    

( defun paragraph-fill-justify-forward ()
"Fill and justify paragraph at point and move forward"
(interactive "*")
(fill-paragraph ())
(forward-paragraph))

( defun save-and-kill ()
"Save and kill current buffer"
(interactive)
(save-buffer)
(kill-buffer (current-buffer)))

;; Some stuff for mh-e:
(setq mh-progs "/usr/bin/mh/")
(setq mh-lib "/usr/lib/mh")

;; Something for Gnus (to save outgoing stuff)
(setq gnus-select-method '(nntp "news"))
;; (setq gnus-secondary-select-methods '(nnmh "~/mh"))
;; (setq message-default-headers "Fcc: ~/mh/gnus.mbox\n")
;; (setq message-default-mail-headers "Fcc: ~/mh/gnus.mbox\n")
;; (setq message-default-news-headers "Fcc: ~/mh/gnus.mbox\n")
;; (setq gnus-author-copy "|/usr/lib/mh/rcvstore +gnus.out")

(defun my-gnus-summary-keys()
"Hook to add my bindings to Gnus Summary Mode."
(progn 

(define-key gnus-summary-mode-map  '[f4] 

(progn (gnus-summary-tick-article)(gnus-cache-enter-article))

)))

;; Start gnuserv -- so gnuattach, gnudoit, and gnuclient will work:
;; (server-start)
(gnuserv-start)

;; Quick access to my aliases file from my mh-e folder view

( defun visit-mh-aliases ()
"Visit my MH aliases file"
(interactive "")
(switch-to-buffer (find-file-noselect "~/mh/aliases")))

;; For Tools for MIME: MH version 
(load-library "tm-mh-e")

;; For Supercite
;;(autoload 'sc-cite-original     "supercite" "Supercite 3.1" t)
;;(autoload 'sc-submit-bug-report "supercite" "Supercite 3.1" t)
;;(add-hook 'mail-citation-hook 'sc-cite-original)

;; For XEmacs color/terminal support:

(when (eq (device-class) 'color)
(set-face-background 'default      "black")     ; frame background
(set-face-foreground 'default      "cyan")      ; normal text
(set-face-background 'zmacs-region "cyan")        ; When selecting w/mouse
(set-face-foreground 'zmacs-region "blue")
(set-face-font       'default      "*courier-bold-r*120-100-100*")
(set-face-background 'highlight    "blue")       ; ie when selecting buffers
(set-face-foreground 'highlight    "green")
(set-face-background 'modeline     "blue")       ; Line at bottom of buffer
(set-face-foreground 'modeline     "white")
(set-face-font       'modeline     "*bold-r-normal*140-100-100*")
(set-face-background 'isearch      "cyan")     ; When highlighting while
(set-face-foreground 'isearch      "black")
(setq x-pointer-foreground-color   "black")      ; Adds to bg color,

(setq x-pointer-background-color   "blue")       ; This is color you really 

)

(defun my-quick-buffer-switch ()
"Quick Switch to previous buffer"
(interactive "")
(switch-to-other-buffer 1))

(custom-set-faces)
(setq minibuffer-max-depth nil)

(custom-set-variables
'(user-mail-address "<A HREF="mailto:jimd@starshine.org">jimd@starshine.org</A>" t)
'(query-user-mail-address nil)
)

;; ... and I'll learn to make real use of abbreviations -- eventually
(abbrev-mode 1 )
(setq abbrev-file-name (expand-file-name "~/.elisp/abbreviations"))
(quietly-read-abbrev-file)

;; My personal key binding for non-vi'ish stuff:
(global-set-key '[f3 ?0] 'delete-window)
(global-set-key '[f3 ?1] 'delete-other-windows)
(global-set-key '[f3 ?2] 'split-window-vertically)
(global-set-key '[f3 ?4] 'split-window-horizontally)
(global-set-key '[f3 ?!] 'insert-output-from-shell-command)
(global-set-key '[f3 ?$] 'ispell-word)
(global-set-key '[f3 ?%] 'ispell-buffer)
(global-set-key '[f3 ?b] 'switch-to-buffer)
(global-set-key '[f3 ?B] 'buffer-menu)
(global-set-key '[f3 ?c] 'shell)
(global-set-key '[f3 ?C] 'calendar)
(global-set-key '[f3 ?d] 'dired)
(global-set-key '[f3 ?D] 'diary)
(global-set-key '[f3 ?f] 'find-file)
(global-set-key '[f3 ?F] 'find-file-at-point)
(global-set-key '[f3 ?m] 'mh-rmail)
(global-set-key '[f3 ?n] 'gnus-no-server)
(global-set-key '[f3 ?k] 'kill-buffer)
(global-set-key '[f3 ?r] 'insert-file)
(global-set-key '[f3 ?o] 'other-window)
(global-set-key '[f3 ?s] 'save-buffer)
(global-set-key '[f3 ?S] 'save-some-buffers)
(global-set-key '[f3 ?w] 'w3-follow-url-at-point)
(global-set-key '[f3 ?x] 'execute-extended-command)
(global-set-key '[f3 f1] 'manual-entry)
(global-set-key '[f3 f7] 'auto-fill-mode)
(global-set-key '[f3 space] 'set-mark-command)
(global-set-key '[f7] (quote paragraph-fill-justify-forward))
(global-set-key '[f8] (quote my-quick-buffer-switch))
(global-set-key '[f9] (quote other-window))
(global-set-key '[f10] (quote save-and-kill))
(global-set-key '[f11] (quote kill-this-buffer))
(global-set-key '[f12] (keyboard-quit))
;; end: JimD's .elisp/init.el 
</pre></td></tr></table>

<blockquote>
There is undoubtedly some cruft in there that will make real
emacs/elisp gurus gnash their teeth in disgust. I don't
pretend to know anything about lisp programming (other than
that it has an inordinate propensity for parentheses).  I
mostly use two key, unshifted, key sequences that are
prefixed with [F3] so that I rarely have to use the '<tt>viper</tt>'
mode's [Ctrl]+z (switch to emacs mode) or the viper command
mode "\" command (escape next keystroke to emacs mode).
</blockquote>


<blockquote>
There are more things I'll do eventually.  That's one of the
reasons I adopted Linux and xemacs in the first place ---
the tools have enough depth that I can always learn more
about them.  They don't limit me.
</blockquote>
<!-- end body -->

<P><a name="tag/floppy.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Floppy/mount Problems: Disk Spins, Lights are on, No one's Home?</H3>
<p><strong>From Jonathan on 24 Sep 1998</strong></p>
<!-- begin body -->


<p><strong>I have built a custom system just for Linux, but the only 
problem I have is that when I try to mount a floppy, the light just comes 
on and the disk just spins.  The motherboard is a new Tyan that is full of PCI
PnP.  Any ideas would be greatly appreciated.  TIA
</strong></p>
<p><strong>-=Jonathan=-
</strong></p>

<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>What is the exact mount command that you are attempting?  If
you are relying on an entry in your /etc/fstab to provide
the filesystem type and options, what does that line look
like?
</blockquote>

<blockquote>How is this diskette formatted?  What if you use the mtools
commands on a DOS formatted floppy?
</blockquote>

<blockquote>Do any associated messages appear in your syslog
(<tt>/var/log/messages</tt>)?  Are you sure that you have the flopp
support compiled into this kernel? (Perhaps you have to load
a module)?
</blockquote>

<blockquote>If it really is a PnP issue you could look for the PnP tools
for Linux (these are userspace tools, mostly without kernel
patches --- though I'm pretty ignorant on the details.  I 
generally recommend disabling any BIOS PnP ("Plug and
<EM>Pray</EM>") features when installing Linux --- particularly on 
a dedicated Linux server where you don't have to accomodate
<EM>some other</EM> OS. 
</blockquote>

<blockquote>If all else fails, boot up with a copy of DOS (DR-DOS even)
and access the floppy that way --- or try a tomsrtbt
(Tom Oehser's Root/Boot distribution on a floppy -- the best
Linux rescue diskette I've found).  Naturally these <EM>have</EM>
to use the floppy --- so it should be pretty obvious if
there's some hardware failure or incompatibility.
</blockquote>
<!-- end body -->

<P><a name="tag/hostavail.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
	align="left" border="0">Conditional Execution Based on Host Availability</H3>
<p><strong>From Vladimir Kukuruzovic on 
	the Linux Users Support Team mailing list
	on 20 Sep 1998 </strong></p>
<!-- begin body -->

<p><strong>
Hi, regarding to your answer guy message
</strong></p>


<font color="navy"><em>
<p><strong>
Conditional Execution Based on Host Availability
</strong></p>

<p><strong>
From the L.U.S.T Mailing List on 07 Aug 1998
</strong></p>

<pre><strong>#!/path/to/perl
$ping = Ping -c 1 10.10.10.10;
exec ("program") if $ping =~ /100\% packet loss/;
</strong></pre>

<p><strong>
What's wrong with a simple:
</strong></p>


<p><strong><code>
ping -c 1 $target &amp;&amp; $do_something $target || $complain
</code></strong></p>



<p><strong>
... where you fill $do_something and $complain with commands that you
actually want to run on success or failure of the 'ping'.
</strong></p>



<p><strong>
That's what shell "conditional execution operators" (<tt>&amp;&amp;</tt> 
and <tt>||</tt>) are for after all.
</strong></p>
</em></font>


<p><strong>
your program does not work well with current release of net-tools and ipv6
support.
<br>you should rewrite it this way:
</strong></p>


<p><strong><code>
ping -c 1 -q $target 2&gt; /dev/null | fgrep "1 packets received" \
<br> &nbsp; &nbsp; /dev/null &amp;&amp; $do_something $target || $complain
</code></strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>This doesn't look right to me.  My example simply
sends a ping packet and tests the return value.  
It's possible that this host might not be reachable
by <EM>some</EM> ping's (ICMP's) --- that there might be 
some lossage.  However, I was just giving the simple
case of a "well-connected" system on the local LAN.
</blockquote>


<blockquote>
I should <EM>not</EM> have to use '<tt>grep</tt>' and parse the output
from the ping command.  It should return an error level
that reflects the results.
</blockquote>


<blockquote>
If it doesn't do that in some new release --- I'll 
hack it back in myself.  (Ideally it might offer an
option to specify a threshold lossage percentage
--- on which it returns an error.  But adding a 
command line option to '<tt>ping</tt>' for this might be
"gilding the lily" --- and adding anything to it
(since it is, by nature, an SUID program) is a 
unpleasant prospect.
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>kind regards,
<br>Vladimir
</strong></p>

<p><strong>
p.s. the original program would say that everything is ok when 
$target is in DNS, but is not reachable (no route to host)
</strong></p>


<blockquote>
By that I presume you're referring to the fragment
of perl code.   Mine did not seem to do this (since
I tested it with several degenerate cases).
</blockquote>
<!-- end body -->

<P><a name="tag/ipmasq.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->



<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>IP and Sendmail Masquerading over a Cablemodem</H3>
<p><strong>From Marty Leisner on 22 Sep 1998 </strong></p>
<!-- begin body -->

<p><strong>
I read your column in the May LG. (I'm behind on my reading 
<IMG SRC/gx/dennis/smily.gif" ALT=":-)" height="24" width="20" 
align="middle">)
</strong></p>


<p><strong>
I recently (last month) got a cable modem and hooked up a
masquerading firewall...
</strong></p>


<p><strong>
On the firewall machine, I have the rule:
</strong></p>


<pre><strong>ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0
</strong></pre>


<p><strong>
I got this of the IP-masquerade howto...
</strong></p>


<p><strong>
I'm not sure if its the same as the rule:
<br><code>ipfwadm -F -a accept -m -S 192.168.1.0/24 -D any</code>
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>Mine is similar, all 253 of the 192.168.1.* through the
192.168.254.* class C address blocks are reserved for 
"private net" addressing (use behind proxying firewalls,
masquerading/NAT (network address translation) routers,
and on disconnected LAN's).
</blockquote>


<blockquote>
I've heard conflicting reports about using 192.168.0.* and 
192.168.255.*  (the first and the last of this range).  
So I don't recommend it.  If you needed a very large network
of "private net" (RFC 1918 --- aka RFC 1597) addresses you
could also use 172.16.*.* through 172.31.*.* --- that's 
sixteen adjacent class B networks, or your could use
10.*.*.* --- a full class A.
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Also, you sendmail .mc:
</strong></p>



<pre><strong>
--          FEATURE(always_add_domain)dnl
FEATURE(allmasquerade)dnl
FEATURE(always_add_domain)dnl
FEATURE(masquerade_envelope)dnl
MASQUERADE_AS($YOURHOST)dnl 
</strong></pre>



<p><strong>
adds always_add_domain twice...
</strong></p>



<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>That's just a typo.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Is $YOURHOST defined someplace (I just went through the work
of configuring sendmail a few weeks ago).
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>I used $YOURHOST as a marker for my readers to fill in
with <EM>their</EM> sendmail name. Mine is "starshine.org"
---  yours is a subdomain off of "rr.com"  I expected
people to clue into that; though I probably should
explicitly pointed it out.
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>The Feynman problem solving Algorithm
</strong></p>
<strong><ol>
<li>Write down the problem
<li>Think real hard
<li>Write down the answer
</ol></strong>
<p><strong>
--- Murray Gell-mann in the NY Times
</strong></p>



<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>He forgot to show his work in step two!
</blockquote>
<!-- end body -->

<P><a name="tag/samba_pdc.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Linux/Samba as a Primary Domain Controller</H3>
<p><strong>From Prophet on 22 Sep 1998 </strong></p>
<!-- begin body -->


<p><strong>
I looked over your answer to another gentalmen's question about the PDC
for linux. My question is very similar. Can you tell me how to configure
samba to be the Primary Domain Controller. I am have two other clients
on my network, NT server (stand alone), and a Win95 client. I want both
of these machines to log in to Samba. But this is not possible untill I
get a PDC established. I understand that NT can handle the job well, but
that isn't any fun. If you could help I would appreciate it.
</strong></p>



<p><strong>
=Prophet=
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>I think you should have read my answer more carefully.
I said that the Samba team is working on supporting NT domain
controller services through Samba --- and I think I said
that it would probably be avaailable before NT 5.x was 
released.
</blockquote>


<blockquote>
However, I hope I didn't imply that this is already
available as production quality code.  Last time I talked to 
Jeremy Allison (one of the core members of the Samba team)
he said that they had some beta level code out there.  I
just noticed a note on Freshmeat 
(<A HREF="http://www.freshmeat.net">http://www.freshmeat.net</A>)
that Samba 2.0 alpha version #6 has just shipped.  
So that would be a good place to start looking.
</blockquote>


<blockquote>
The Samba home pages are at: 
	<A HREF="http://samba.anu.edu.au/samba"
	>http://samba.anu.edu.au/samba</A>
It's a good idea to remember that Samba is not a Linux
specific project.  Although many of the developers and users
are running Linux, many others are running various BSD
flavors and other forms of Unix.
</blockquote>


<blockquote>
Your question is probably a pretty common one.  There is 
a Samba NT Domain FAQ at:
<A HREF="http://samba.gorski.net/samba/ntdom_faq/samba_ntdom_faq.html"
	>http://samba.gorski.net/samba/ntdom_faq/samba_ntdom_faq.html</A>
</blockquote>


<blockquote>
... and yours is the first question listed.
</blockquote>


<blockquote>
As with any Open Source (TM) project, if this isn't moving
fast enough to meet your needs, consider contributing some
time, programming skill or other real support to the effort.
</blockquote>
<!-- end body -->


<P><a name="tag/scsi.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Partition your HD before you try to use it.</H3>
<p><strong>From Adam Ray on 23 Sep 1998 </strong></p>
<!-- begin body -->


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>What's this about non-partitioned? You <EM>have</EM> to partition the 
drive before you can use it as your root.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Yep!
</strong></p>


<p><strong>
I have an adaptec 1505 SCSI card (no bios). an a seagate 1gig
SCSI HDD.  I want to install linux to boot from a floppy, and
then use the SCSI drive as the root. But when i put in the rescue
disk and at the boot: prompt type "rescue aha152x=0x340,12,7,1"
it finds the card then finds the drive, but it comes up with an
error that the kernel can't load at something like "10:" i'm not
sure if that is the exact number, but i' mnot a that machine
right now. I was wondering if you could give me, or know where
there is a blow-by-blow installationi tutorial for
non-partitioned SCSI drives.
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>If you read the Linux Installation and Getting Started
(LIGS) Guide from the LDP --- the Linux Documentation
Project --- you'll find a fairly extensive discussion of
'fdisk' and 'Lilo'.    
LDP is at <A HREF="http://sunsite.unc.edu/LDP"
	>http://sunsite.unc.edu/LDP</A>
and many mirror sites.
</blockquote>


<blockquote>
There are also man pages on 'fdisk' and Lilo --- and
there is a pretty good Lilo guide (usually included as
a .dvi or .ps PostScript file to provide the diagrams and
illustrations).
</blockquote>


<blockquote>
I realize that you won't be using Lilo in the usual way
to load this copy of Linux (since a boot sector installed
on your SCSI hard drive will never be reached by your
BIOS's boot up sequence).  However, reading the docs about
the way its "usually" done can help understand the exception 
cases in any event.
</blockquote>


<blockquote>
Another problem I see in this case is that you're trying
to "rescue" a "new installation."  That doesn't work.
You use a "rescue" diskette to fix an damaged or
misconfigured <EM>existing</EM> installation.  To install a 
new system use an "installation" diskette.  Most of the 
friendly installation programs out there these days
(<A HREF="http://www.redhat.com/">Red Hat</A>, 
<A HREF="http://www.suse.com/">S.u.S.E.</A> etc) will 
not handle your situation particuarly well.  They should install 
just fine --- but they may not offer the option to "boot from diskette."
</blockquote>


<blockquote>
So, use their installation to get to the point where it 
wants to run Lilo --- and let it do that even (no harm
in it, even though you don't have a BIOS that will call on 
it).  <EM>Then</EM> use the rescue diskette to boot into the
running system and read the BootDisk HOWTO for advice on
creating a custom boot diskette.
</blockquote>


<blockquote>
You could also use Tom's Root/Boot (tomsrtbt at 
<A HREF="http://www.toms.net/rb"
>http://www.toms.net/rb</A>) as the basis for your custom boot
disk.  It is the easiest single diskette distribution to 
customize (of the ones that I've tried).
</blockquote>



<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>please E-mail me
</strong></p>


<p><strong>
Thanks,
<br>Adam
</strong></p>
<!-- end body -->

<P><a name="tag/shuffle.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Shuffling Lines in a File</H3>
<p><strong>From David Stanaway on the 
	Linux Programmers Support Team mailing list 
	on 20 Sep 1998 </strong></p>
<!-- begin body -->

<strong><p><font color="navy"><em>
Now I'm trying to shuffle the order of the lines in a text file
without reading in the whole file...  Does anyone have any advice, code,
etc on this?  If I can read in the whole file, this is simple, but I might
want to shuffle a file several megs long.
</em></font></p></strong>

<strong><p>
What do you mean by shuffle?
</p></strong>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>I think he means something like: randomly or arbtrarily
reorder the lines of the file without reading the whole
thing into RAM/core.
</blockquote>


<blockquote>
I think the approach I'd take is to lock the file from
access by whatever programs and/or processes are intended to
read the data out of it. 
</blockquote>


<blockquote>
Then I'd "index" the file --- search through it finding all
of the line boundary offsets and their lengths.  I'd then
use an standard shuffling techniques on that index file.
The problem with "shuffling" a normal text file on line
boundaries is the variable record lengths.  So we create a
table of offsets and lengths to those --- and all of the
offset/length pairs are of a fixed size.
</blockquote>


<blockquote>
So I could use the index file and "shuffle" it with the 
following psuedo code:
</blockquote>


<blockquote>
<dl>
<dt>open index file
<dt>while read index file entry (readbuf)
<dd>pick a random place to put it
<br>load the "place to put it" entry (writebuf)
<br>swap these entries in read and write buf.
<br>write both buffers
</dl></blockquote>


<blockquote>
If the intent is to shuffle the files by some other criteria
(arbitrary vs. random) when you'd modify the above algorithm
accordingly.  If the criteria for resequencing has to do
with the data in the files (i.e. your "sorting" the file)
you'd have a bit more work ahead of you.
</blockquote>


<blockquote>
... actually I'd optimize this a bit by read x entries into
a buffer, for looping through that, and maintain a few write
bufs into random locations into the file.  For example I
might load 100 entries in the read buffer and up to ten
unique randomly selected write buffers.  For each of the 100
read buffer entries I'd randomly select among the open write
buffers (1 to 10) and randomly select a place in that buffer
to put it).  At the end of the for loop I'd write everything
back out, read the next read buff, select more write buffs,
and so on until the end of the file.
</blockquote>


<blockquote>
Every entry in the index file will have been exchanged with
some random entry at least once --- and the average will be
two.  There is a small chance that a given entry would be
swapped out of and back into the same location (which is
usually a good feature of a shuffling algorithm).
</blockquote>


<blockquote>
Then I'd open the original text file and the shuffled index
file and I'd walk through the shuffle file sequentially
reading offset/length pairs and using them to seek into the
text file and copy to a new file.  After each seek I'd do
one sanity check --- it there should be a newline there, and
as I was copying I'd do another, there should be no newlines
between my offset and the end of my length.  I'd abend with
an error message if either sanity check failed, or if any
seek failed (the original file was shortened while I was
shuffling).
</blockquote>


<blockquote>
Finally I'd mv the new file back into place.
</blockquote>


<blockquote>
This algorithm assumes that you have files with variable
length records delimited by newlines.  It also assumes that
you are not disk space constrained (that you have at least
enough room to make one full copy of the file to be shuffled
+ enough for an index file.  Oddly enough the index file
could, in some degenerate circumstances be several times the
size of the original file.  (that happens if all of the
lines in the old file were only zero or one characters long
and that your offsets and lengths are 32 bits each.
</blockquote>


<blockquote>
Note that I chose to use a <EM>file</EM> for the index rather than
RAM.  If I'm guaranteed that the file will have a
"reasonable" number of lines I can build that in memory ---
thus simplifying the code somewhat.  I chose the method that
I describe so that you could as easily shuffle
multi-gigabyte files as multi-megabyte.
</blockquote>


<blockquote>
The whole program could probably run in less than a 100K and
work on <EM>any</EM> size file that was supported by your OS.
</blockquote>


<blockquote>
You could also look at the sources for the GNU 'sort'
utility.  I handles arbitrarily large inputs (using
sequences of temp files which then merged together).
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>If you open a file for reading, the only space it takes up is the read
buffer, so if you read a line at a time, the memory usage depends on how
you are shuffling.
</strong></p>


<p><strong>
If you wanted to reverse the file, you could jsut be writing the lines
you read to another file.
</strong></p>



<P><strong>
[deletia]
</strong></p>


<p><strong>
Then you may like to read the source file from the tail first. I don't
know how to do this in C, or C++, but it is possible in Java.
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>There is a program called <tt>tac</tt> ("cat" backwards) which does
exactly this.  I'm sure it's written in C and the sources
can be found at any good GNU or BSD software archive.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>You really need to say more about what you mean by &lt;Shuffle&gt;
<br>David Stanaway
</strong></p>



<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>I think the term is sufficiently unambiguous.  
</blockquote>


<blockquote>
Shuffle: to resequence.  to place a group of objects into
some arbitrary or random order.
</blockquote>


<blockquote>
The problem at hand is a classic CS homework assignment.  It
has quite a bit to do with the variable length nature of the
objects to be sorted.  We can't do this with "in place"
editing (arbitrary seeks and writes into the orginal file)
because the record we're trying to move might overwrite two
or more record fragments at its destination.
</blockquote>


<blockquote>
When you are editing a file (the whole thing being in 
memory) there are ways that the editor's buffer handling
handles the issue --- look at the sources to 'vi' or 
some other smaller, simpler editor and find out how they
"delete a line" in terms of their internal data structures.
These don't work well for files since you might end up 
re-writing from the current offset to the end of the file
for each replacement.
</blockquote>


<blockquote>
If the lines are of a fixed length it is much easier, we can
skip the indexing step and we can, if we wish, shuffle the
file "in place" --- without the copying.  Naturally we'll
still want to lock the file (or move it to someplace where
other processes and programs won't be giving us concurrency
fits).
</blockquote>
<!-- end body -->

<P><a name="tag/thanks2.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
	align="left" border="0">Dear answer guy.. </H3>
<p><strong>From Josh Assing  on 15 Sep 1998 </strong></p>
<!-- begin body -->

<p><strong>
Thank you very much!
<br>Cheers
<br>-josh
</strong></p>


<font color="navy"><em>
<p><strong>
I am a woeful windoze database programmer that must interface with
the almighty unix environment...
I am in search of source code (c is best) for uudecode/uuencode.
</p></strong>
</em></font>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Any decent Linux CD will come with source code (mostly
in C) to all of the GNU software.  You'll also find
it on any good Linux FTP repository --- such as 
<A HREF="ftp://sunsite.unc.edu">ftp://sunsite.unc.edu</A> and <A HREF="ftp://tsx-11.mit.edu">ftp://tsx-11.mit.edu</A>.
</blockquote>


<blockquote>
Another good place to look for these sorts of things
is at the master repository of GNU software: 
</blockquote>

<blockquote> <blockquote> <code>
<A HREF="ftp://prep.ai.mit.edu">ftp://prep.ai.mit.edu</A>
</code> </blockquote> </blockquote>



<blockquote>
... or at its principal mirror: 
	<code><A HREF="ftp://ftp.gnu.org">ftp://ftp.gnu.org</A></code>
</blockquote>


<blockquote>
... where it should be part of the "sharutils" package.
</blockquote>


<blockquote>
Also I think you should be able to find the sources
at the <A HREF="http://www.freebsd.org/">FreeBSD</A>, 
<A HREF="http://www.netbsd.org/">NetBSD</A>, and 
<A HREF="http://www.openbsd.org/">OpenBSD</A> sites:  
</blockquote>


<blockquote>
<ul>
<li><A HREF="http://www.freebsd.org">http://www.freebsd.org</A> 
<li><A HREF="http://www.net.org">http://www.net.org</A> 
<li><A HREF="http://www.open.org">http://www.open.org</A>
</ul>
</blockquote>



<blockquote>
... respectively.
</blockquote>


<blockquote>
In general the best places to find any Linux software
(most of it is available in source form) are:
</blockquote>

<blockquote> <blockquote> <code>
<A HREF="http://www.freshmeat.net">http://www.freshmeat.net</A>
</code> </blockquote> </blockquote>

<blockquote>
and:
</blockquote>

<blockquote> <blockquote> <code>
<A HREF="http://lfw.linuxhq.com">http://lfw.linuxhq.com</A>
</code> </blockquote> </blockquote>


<blockquote>
Freshmeat is nice for keeping up on new and recent
package releases.  It is updated daily and there are
usually about a dozen new packages or versions available
every day. Today is light --- there's only nine items
--- there were thirty one on the two previous days.
</blockquote>


<blockquote>
It gives a brief (one paragraph) description of each 
package and a usually three links to "Download" it
or view its "HomePage" or "Appindex Record."
</blockquote>


<blockquote>
LFW (Linux FTP Watcher) is a forms based search engine
that indexes the top twenty or so Linux FTP sites.
</blockquote>


<blockquote>
The problem with requests to help find the source code
is that many of the most basic packages (the ones that
have been part of most Unix implementations forever) are
bundled together in a few "base" packages (like sharutils
for uuencode/uudecode).  
</blockquote>


<blockquote>
Although I don't know where most of them are I think
the sources for commands like 'cp' and 'ls'  are in binutils, 
and for commands like 'cut' and 'tail' are in fileutils.
</blockquote>


<blockquote>
So, unfortunately, it can be a bit difficult to find the 
source to a given package.  Yggdrasil and some traditional
Unix flavors used to offer a "whence" command to point to 
the sources for any command.  However, the current crop
of distributions doesn't seem to offer this handy feature.
</blockquote>


<blockquote>
On RPM based distributions you could use a variation of
the RPM command to find out which package included a 
given file like so:
</blockquote>

<blockquote> <blockquote> <code>
rpm -qf /usr/bin/uuencode
</code> </blockquote> </blockquote>

<blockquote>
... which reports sharutils-4.2-5 on my 
<A HREF="http://www.suse.com/">S.u.S.E.</A> 5.3
system.  Different distributions package these differently.
However, given that you could then look on your CD's or
on the FTP sites for a "sharutils-4.2-5.SRPM.rpm" or
a "sharutils-4.2-5.spm" (these being different naming 
conventions for representing "source" RPM's).
</blockquote>


<blockquote>
You can read my back issues or look to 
<A HREF="http://www.rpm.org">http://www.rpm.org</A>
to learn more about the RPM package management system
--- and a few searches should net you considerably 
comparison and debate about its merits and faults relative
to the "tarball" (<A HREF="http://www.slackware.org/">Slackware</A> pkgadd) 
and <A HREF="http://www.debian.org/">Debian</A> packaging
systems and formats.
</blockquote>


<p><strong><img src="../gx/dennis/qbub.gif" height="28" width="50" 
	alt="(?)" border="0"
>I was directed to <a href="http://www.ssc.com/">www.ssc.com</a>; and then 
to you... Hopefully; you can be of assistance..
<br>Thanks <IMG SRC/gx/dennis/smily.gif" ALT=":)" height="24" width="20" 
align="middle">
<br>Cheers
<br>-josh
</strong>

<!-- end body -->

<P><a name="tag/tty.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Psuedo tty Becomes  Unusable</H3>
<p><strong>From Scott R. Every on 21 Sep 1998</strong></p>
<!-- begin body -->


<p><strong>
i have a system which has been running for a while(actually a
number of systems) after a bit the ttyp0 port is no longer
available when telnetting in.  it doesn't list anywhere as being
used, but it doesn't work!
</strong></p>


<p><strong>
can you offer any suggestions?
</strong></p>

<p><strong>
thanx
<br>s
</strong></p>

<blockquote><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Try the '<tt>lsof</tt>' command.  That should find out which 
process is using it.
</blockquote>


<blockquote>
The <tt>/dev/ttyp*</tt> devices are for "psuedo" tty's --- these
are used by rlogind, telnetd, xterms, screen and many
other programs.  There are usually <EM>many</EM>  of these 
psuedo tty's on a system.
</blockquote>


<blockquote>
Normally a daemon that uses a psuedo tty searches through
the list and uses the first one that it can open.  There 
is another approach used by some other forms of Unix --- and
supported in recent kernel whereby the daemon makes a request
of a sort of "dispatcher" device which then provide it with
the number of the next available pty/ttyp device.  This is
referred to as "Unix '98 PTYs Support" in the linux kernel
-- and I've heard it referred to as "ptmx" (psudo-tty
multiplexing, or something like that). In the case of the 
Linux implementation the pty's can be dynamically generated
under the "pts" virtual filesystem (which is a bit like 
the <tt>/proc</tt> filesystem in that it doesn't exist on a "disk"
anywhere --- it simply provides a filesystem abstraction of
the system's in memory data structures).  Linux 2.2 will
also probably support a "/devfs" --- another virtual 
filesystem which makes all of the entries under /dev into
dynamic entries.
</blockquote>


<blockquote>
Of course, none of that applies to your situation.  That's
just the "vaporware report" on the future of the Linux
kernel. 
</blockquote>


<blockquote>
If there really is no process that still owns the ttyp0
in your case then it might be a bug in your kernel.  
I'd check the permissions of the device node to see if 
they are changing (or to see if there is something that's
just blowing the device node away), then I'd look through 
the "Change Logs" for the recent 2.0.3x kernels.  It might
be that you are bumping into one of the bugs that Alan
Cox and crew have been fixing.  If you aren't running a 
2.0.35 or 2.0.36 kernel --- consider trying it to see
if that solves the problem.
</blockquote>


<blockquote>
To be honest I haven't seen a good description of the
whole pty*/ttyp* mess or a decent explanation of what 
problems the Unix '98 ptmx design is supposed to solve.
I've heard that pty's and ttyp's are paired off in 
"master/slave" pairs that have something to do with 
providing different device nodes for control (ioctl()?)
and communications over the channel.  If any of our 
readership knows of a good treatise on the topic, please
pass me a pointer or mail me a copy.
</blockquote>


<!-- end body -->

<P><a name="tag/typo.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Will the "Real" freshmeat Please Get Bookmarked?</H3>
<p><strong>From Richard C on 14 Sep 1998 </strong></p>
<!-- begin body -->


<strong><p>
You referenced 
<A HREF="http://freshmeat.org">http://freshmeat.org</A> in this article, 
when I assume you meant 
<A HREF="http://freshmeat.net">http://freshmeat.net</A>... Freshmeat.org does 
point to freshmeat.net, but you can't rely on a newbie to find it, can you? 
</strong></p>


<strong><p>
-) Keep up the good work
<br>Cheers
<br>Richard Cohen
</strong></p>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>I use these two addresses interchangeably.  As you 
say the .org URL requires an extra click to get to 
the site --- but that's not much of a consideration
for me and sometimes I want to visit "RootShell.org"
(also listed at the freshmeat.org site; but not
linked from freshmeat.net).
</blockquote>
<!-- end body -->

<P><a name="tag/virthost.html"><HR width="75%" align="center"></A></P>
<!--        :::::::::::::::::::::::::::::::::::::::::::::::::::      -->


<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>"Virtual Hosting" inetd based services using TCP Wrappers</H3>
<p><strong>From Nick Moffitt on 23 Sep 1998 </strong></p>
<!-- begin body -->

<strong><p>
Hullo thar!
</p></strong>

<strong><p>
You mentioned that you might mail me some example conf files
to show me how you did all those nifty things we talked about on
Saturday.  I'm actually working on setting up a chrooted system for
public use here at Penguin, so any examples would be keen (and no, I
haven't searched through the answer guy archives yet).
</p></strong>


<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>[Question stems from a discussion over beer and pizza at one
of the local user's groups events in my area.  It relates to 
using TCP Wrappers to launch different services or different 
variations of a given service depending on the <EM>destination</EM>
address of the incoming request.  Normally TCP Wrappers, all those
funny looking "/usr/bin/tcpd" references in your /etc/inetd.conf
file, is used to limit which hosts can connect to a service by
matching against the <EM>source</EM> address]
</blockquote>


<blockquote>Here's a couple of trivial examples (I don't have a 
copy of 'chrootuid' handy on this box, but you can find
it at cs.purdue.edu's "COAST" security tools archive).
</blockquote>


<table width="90%" bgcolor="#FFFFCC" border="1"><tr><td><pre>
# hosts.allow	This file describes the names of the hosts which are 
#		allowed to use the local INET services, as decided
#		by the '/usr/sbin/tcpd' server.
# $Revision: 1.2 $ by $Author: root $ on $Date: 1998/02/08 09:35:55 $
#
in.ftpd: 127.0.0.1: ALLOW
in.ftpd@192.168.1.127: jimd@192.168.1.2: ALLOW
in.ftpd: ALL: DENY
in.telnetd@192.168.1.127: ALL: twist /bin/echo "Not Available\: Go Away!"
in.ftpd: 192.168.1.: ALLOW
ALL: 127.0.0.1
ALL: 192.168.1.
</pre></td></tr></table>


<blockquote>
These are order dependent.  The first rule that matches
will be one one that tcpd uses --- so the ALL: rules at the 
bottom are significant.  If I put them first -- they'd
over-ride the more specific ones --- whereas here, they
don't.
</blockquote>


<blockquote>
In this case my "normal" IP address on eth0 is 192.168.1.3
(canopus.starshine.org).  For playing with tcpd I add an
eth0:1 alias (ifconfig eth0:1 192.168.1.127).    That would
work as easily if it was a second interface --- ethernet,
PPP or whatever.
</blockquote>


<blockquote>
Now, if I telnet localhost or telnet to canopus, everything
works fine.  But if I telnet to the ...127 address it tells
me to go away.  The hosts_options and the hosts_access(5)
man pages list a number of replacement operators like %a
for the source IP address of the request and %d for the 
"daemon" name (argv[0] of the process).  These parameters
can be used in the shell commands.
</blockquote>


<blockquote>
Note that the "twist" option is completely different 
than the "spawn" option.  "spawn" seems to imply "ALLOW"
and spawns a process that is run <EM>in addition to</EM> the 
service.  This process is spawned with it's standard 
file descriptors all set to /dev/null --- so it doesn't
interact with the user at all.
</blockquote>


<blockquote>
The twist option runs an alternative to the requested
service.  Thus, if you request my web server I might
"twist" that into a cat command what will spit out an 
HTTP redirect with a simple 'echo' or 'cat' command
like so:
</blockquote>



<blockquote><blockquote><code>
www@192.168.64.127: ALL: twist /bin/cat /root/web.redirect
</code></blockquote></blockquote>


<blockquote>
I don't know of a way to to call for <EM>both</EM> a twist
and a spawn -- but you can write a script (or better,
a small C wrapper) to run the desired "spawn" commands
in the background (with outputs directed to /dev/null,
of course).
</blockquote>


<blockquote>
Naturally, of course, you'll want to follow proper coding
practices for "hostile" environments when you're writing
something that will be "exposed" to the Internet.
</blockquote>


<blockquote>
Matt Bishop, at the UC Davis has some excellent papers on
this topic, and presents his own, more robust,
implementations of the system(), and popen() library calls
--- which are called msystem(), and mpopen() in his library.
</blockquote>


<blockquote>
Matt's site is at: 
<A HREF="ftp://nob.cs.ucdavis.edu/pub/sec-tools"
	>ftp://nob.cs.ucdavis.edu/pub/sec-tools</A>
(I think there's a web site there, too).
</blockquote>
<!-- end body -->
<!--startcut ======================================================= -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/ssc.copying.html"
	>Copyright &copy;</a> 1998, James T. Dennis <BR>
Published in <I>Linux Gazette</I> Issue 33 October 1998</H5>
<P> <hr> <P>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<A HREF="lg_toc33.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_bytes33.html"><IMG SRC="../gx/back2.gif"
        ALT="[ Previous Section ]"></A>
<A HREF="vrenios.html"><IMG SRC="../gx/fwd.gif"
        ALT="[ Next Section ]"></A>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->

<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>

<P> <HR> <P> 
<!--===================================================================-->

<center>
<H1><font color="maroon">CHAOS Part 2: Readying System Software</font></H1>
<H4>By <a href="mailto:P29131@gegpo6.geg.mot.com">Alex Vrenios</a></H4>
</center>
<P> <HR> <P>  

<H4>Introduction</H4> 
<P>
	My first article, "CHAOS: CHeap Array of Obsolete Systems" (see Linux Gazette, volume 30, July, 1998), describes a somewhat bazaar set of circumstances that led to my building a network of aging PCs, running Red Hat Linux. A number of readers contacted me after reading it, asking me how it was going and if there would be a follow-up article - this is it!
<P>
A few PCs, an Operating System, and networking hardware form the largest part of the infrastructure necessary for the kind of software systems that I want to design and work with, but systems cannot run on basics alone. A little administration, a few shell scripts, and a couple of utility programs will bring it all together into what I want it to be: a distributed system.
<P>
Distributed algorithms often consist of several identical copies of a single program, each running on a different computer in the network. I can write and debug a single copy on my <EM>big</EM> '486 machine, named "omission," but that's just the first step. Debugging the final product, running on seven machines simultaneously, requires me to develop a way to remotely start a process on each machine, to see how well that process is running, and to kill them all, if necessary, centralizing their trace file data so I can figure out what went wrong.
<P>
This article describes what I added to my system to make this all happen.
<P> <HR> <P>  
<H4>System Administration</H4> 
<P>
I have worked on many Unix networks in the past. I thought nothing of using the remote shell command, "rsh," to switch to some other machine in the network, to get access to its local data. I thought nothing of it, that is, until I wanted to work like that on my own network.
<P>
>From omission, there are three ways I can think of to switch over to one of the '386 machines. I can use the telnet command, which puts up a login prompt, asking me for a userid and password. I can "rlogin" to another machine, which asks me for a userid, but not a password, if the system files are properly set up. Finally, there is "rsh" which lets me go about my business without so much as a userid if all the system files are just so; getting them just so, I find, is a black art.
<P>
I knew that my userid's home directory, /home/alex, needed a ".rhosts" file with my userid: a single line with "alex" in it. I knew too, that the /etc/hosts.equiv file played a part, but I wasn't sure exactly how, so I started reading, and asking a lot of questions. Most references to these system files, it seemed, were more interested in telling me how to keep others out instead of welcoming them in!
<P>
I am not above a brute force approach to solving problems. I'll bet that a smart sysadmin reading this article might be appalled by my methods, but they worked for me and sometimes that's enough of a reward.
<P>
My domain name, as you may recall from the first article, is "chaos.org" and my seven '386s are named after the seven deadly sins. User alex has a home directory on omission, which is nfs mounted on each of the seven other machines. My /home/alex/.rhosts and each /etc/hosts.equiv file contain exactly the same eight line entries, as follows:
<pre>
<FONT FACE="Courier" SIZE="-1">
omission.chaos.org alex
greed.chaos.org alex
lust.chaos.org alex
anger.chaos.org alex
pride.chaos.org alex
gluttony.chaos.org alex
envy.chaos.org alex
sloth.chaos.org alex</FONT>
</pre>
I am not sure where I got my initial ideas about how this all worked, but what's listed above works on my systems and again, that's enough for me for now.
<P>
I wanted to have at least some reasonable time-of-day clock synchronization, so I added a "clock reset" command to the boot process. The following lines were added to each remote machine's rc.local file:
<pre>
<FONT FACE="Courier" SIZE="-1">
# reset date and time from server
date `rsh omission "date +%m%d%H%M"`</FONT>
</pre>
<P>
I boot omission first and wait for it to come up before starting others because it contains the /home directory that each of the other machines must mount. When each of the other machine boots, it sets its time-of-day to that of omission, accurate to the minute.
<P> <HR> <P>  
<H4>System File Distribution</H4> 
<P>
There is only one copy of /home/alex/.rhosts file, but every system has its own copy of /etc/hosts.equiv. Maintaining a set of eight identical copies of anything is not a pleasant task, especially when you are making subtle changes, trying to get them all to work in your favor.
<P>
One way to handle this is to copy the file to a diskette and load it onto every machine, but that's too much of a pain. The sophisticates might have a separate partition for such files, local to their main server, and remotely mounted everywhere else. Since I am both the system administrator and the user community, I overlapped things a bit.
<P>
I created a /home/alex/root subdirectory, owned by root, and copied each of these volatile system files into it. That way I could make changes in only one file and distribute it more easily than from a floppy. I copied /etc/hosts to that area, additions to large system files, like rc.local, and all the shell scripts that the root user on each machine might use, too. I'll discuss these next.
<P>
<P> <HR> <P>  
<H4>System Shell Scripts and Utility Programs:</H4>
<P>
I might want to reset the time-of-day clock manually, so I used the same clock set command (above) in a shell script named "settime":
<pre>
<FONT FACE="Courier" SIZE="-1">
#!/bin/csh -f
#
#   settime - resets data and time from server
#
date `rsh omission "date +%m%d%H%M"`</FONT>
</pre>
<P>
I might be monitoring some long running tests and, being the nervous type, I might want to watch the overall system performance. Here is my "ruptime" (which stands for remote uptime) script:
<pre>
<FONT FACE="Courier" SIZE="-1">
#!/bin/csh -f
#
#   ruptime - remote uptime displays system performance
#
cat /etc/hosts \
 | grep -v localhost \
 | awk '{ print $3": ";system("rsh "$3" uptime") }'</FONT>
</pre>
<P>
This displays the loading on each of my machines and I use this as a high level indication of overall system performance. The word loading, by the way, means the number of processes on the operating system's ready queue, waiting for the cpu. (The cpu is usually busy running the active task. The three numbers uptime displays are the 1, 5, and 15 minute loading averages - see the uptime man page for more information.) If I see what might be a problem, all zeros e.g., I can follow up with other commands that give me more specific information.
<P>
The "ps" command presents process status for every process in the system. The addition of a "grep" for my userid, alex, will limit the display to only the ones I happen to be running, but it will include the grep command itself. Additional greps with a "-v" option can reduce the content of the display to just those processes that I am interested in monitoring:
<pre>
<FONT FACE="Courier" SIZE="-1">
#!/bin/csh -f
#
#   rps - remote process status
#
ps -aux | grep alex \
 | grep -v rps \
 | grep -v aux \
 | sed -e "s/alex\ \ \ \ \ /`hostname -s`/" \
 | grep -v sed \
 | grep -v hostname \
 | grep -v grep</FONT>
</pre>
<P>
The "sed" command substitutes the remote host name for my userid. I use this script along with the rsh command to display the status of remote processes:
<pre>
<FONT FACE="Courier" SIZE="-1">
omission:/home/alex&gt; rsh pride rps
pride  218  0.4  7.0  1156   820   1 S   13:34   0:02 /bin/login -- alex
pride  240  0.7  6.6  1296   776   1 S   13:37   0:01 -csh
pride  309  0.3  1.8   856   212   1 S   13:41   0:00 ser
pride  341  0.0  4.4  1188   524  ?  R   13:41   0:00 /bin/sh /home/alex/bin
</FONT>
</pre>
<P>
Careful readers might notice that the ruptime script displays uptime for all machines on the network, while rps targets only one machine. My general version of rps works through a pair of programs named "rstart" and "psm," controlled by a script named rpsm:
<pre>
<FONT FACE="Courier" SIZE="-1">
#!/bin/csh -f
#
#   rpsm - remote process status for my userid
#
rstart psm</FONT>
</pre>
<P>
The program rstart.c accepts the name of an executable in the user's path:
<pre>
<FONT FACE="Courier" SIZE="-1">
#include &lt;stdio.h&gt;
#include &lt;chaos.h&gt; /* a list of all the remote host names in chaos.org */
main(argc, argv)
char *argv[];
int argc;
/*
**   rstart.c - start a process named in argv[1] on all remote systems
*/
{
   int i, j, pids[NUM];
   char command[64];
   /*
   **   insist on at least two command line arguments
   */
   if(argc &lt; 2) {
      printf("\n\tUsage: %s &lt;process&gt; [&lt;parameters&gt;]\n\n", argv[0]);
      exit(-1);
   }
   close(0); /* avoid stdin problems if we run in the background */
   /*
   **   initialize the remote process name
   */
   strcpy(command, argv[1]);
   if(command[0] != '/') /* prepend path if nec */
      sprintf(command, "%s%s", Bin, argv[1]);
   /*
   **   append any other command line parameters specified
   */
   for(i=2; i&lt;argc; i++) {
      strcat(command, " "); /* append a blank */
      strcat(command, argv[i]); /* append a parameter */
   }
   /*
   **   start remote tasks
   */
   for(i=0; i&lt;NUM; i++) {
      if(i) /* pause between starts */
         sleep(1);
      if((pids[i] = fork()) == 0) {
         if(execl("/usr/bin/rsh", "rsh", Hosts[i], command, NULL) == -1) {
            perror("execl()");
            exit(-1);
         }
      }
   }
   /*
   **   wait for all processes to complete
   */
   for(i=1; i&lt;NUM; i++)
      waitpid(pids[i]);
   return(0);
}</FONT>
</pre>
<P>
     The rpsm script (above) runs the rstart program, which runs psm:
<FONT FACE="Courier" SIZE="-1">
<pre>
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
main()
/*
**   psm.c - lists process status for my userid
*/
{
   FILE *fp;
   int len, pid1, pid2;
   char host[32], *p;
   char line[128];
   /* request name of local host */
   gethostname(host, sizeof(host));
   if((p = strchr(host, '.')) != NULL)
      *p = '\0'; /* cut domain name */
   len = strlen(host);
   /* our proc id */
   pid1 = getpid();
   /* request listing of all process' status */
   fp = popen("ps -aux", "r");
   while(fgets(line, sizeof(line), fp) != NULL) {
      if(strstr(line, "alex ") == NULL)
         continue; /* not our userid */
      if(strstr(line, "psm") != NULL)
         continue; /* skip ourself */
      sscanf(line, "%*s %d", &amp;pid2);
      if(pid2 &gt;= pid1)
         continue; /* skip higher pids */
      /* replace userid with host name */
      strncpy(line, host, len);
      printf("%s", line);
   }
   return(0);
}
</FONT>
</pre>
<P>
Here is a sample run:
<pre>
<FONT FACE="Courier" SIZE="-1">
&gt; rpsm
pride   218  0.0  7.0  1156   820   1 S   13:34   0:02 /bin/login -- alex 
pride   240  0.0  6.6  1296   776   1 S   13:37   0:01 -csh 
pride   309  0.0  1.8   856   212   1 S   13:41   0:00 ser 
pride   487 38.3  5.4  1240   636  ?  S   14:17   0:01 csh -c /home/alex/bin
greed   222 35.8  7.3  1240   636  ?  S   14:17   0:01 csh -c /home/alex/bin
   .
   .
   .
sloth   201 36.5  7.1  1240   636  ?  S   14:17   0:01 csh -c /home/alex/bin
</FONT>
</pre>
<P>
The rstart program concept can be expanded to gather a good deal more than process status. I created script-program pairs that dump trace and log files from a particular machine. I can also kill a remote process by name on all my remote machines by running rstart with k.c:
<pre>
<FONT FACE="Courier" SIZE="-1">
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
main(argc, argv)
int argc;
char *argv[];
/*
**   k.c - kills the named user process
*/
{
   FILE *fp;
   int pid1, pid2;
   char line[128];
   char shell[32];
   char host[32];
   char proc[16];
   if(argc &lt; 2 || argc &gt; 3) {
      printf("\tUsage: k &lt;process_name&gt; [noconf]\n\n");
      exit(-1);
   }
   /* get process name for strstr line compares */
   sprintf(proc, "%s ", argv[1]); /* add blank */
   sprintf(shell, "-c k %s", proc); /* our mom */
   pid1 = getpid();
   /* get host for print message */
   gethostname(host, sizeof(host));
   /* request listing of all process' status */
   fp = popen("ps -aux", "r");
   while(fgets(line, sizeof(line), fp) != NULL) {
      if(strstr(line, "alex ") == NULL)
         continue; /* not our userid */
      if(strstr(line, shell) != NULL)
         continue; /* skip shell */
      if(strstr(line, proc) == NULL)
         continue; /* must match */
      sscanf(line, "%*s %d", &amp;pid2);
      if(pid2 &gt;= pid1)
         continue; /* skip higher pids */
      /* kill the process */
      system(line);
      sprintf(line, "kill -9 %d", pid2);
      if(argc != 3)
         printf("%s: %s\n", host, line);
   }
   return(0);
}</FONT>
</pre>
<P>
All of the above programs and scripts were pasted into this article from tested source code, but I removed blank lines and made other cosmetic changes to make it more readable and to manage its size. Please accept my apologies in advance for any difficulties you may experience. I cannot assume any liability for your use of the above, so you must do so at your own risk.
<P> <HR> <P>  
<H4>Conclusions</H4> 
<P>
I feel like I am ready now to start developing software according to my original plans. I hope some of my solutions will help you too, should you try this yourself.
<P>
My next step is to develop a central "manager" process, running on omission, that will display real-time status and behavior of the <EM>system</EM> of distributed processes running on all the other machines. I want to be able to "drive" the system by sending requests to one of the processes on a randomly chosen machine, and then to "watch" how all the remote processes interact in developing their response. Each remote process interacts with a local "agent" process running in parallel with it. Each agent will send messages back to the manager, telling it what state that part of the system is in; the manager combines these remote states into a global state display for the entire distributed system. If you're interested in this sort of thing, stay tuned!
<P>
This project has been quite a learning experience for me. I am proud of what I've built and I hope these simple tools will motivate some of you to give this a try - perhaps with only three or four systems, perhaps with more than the eight machines that I combined. Home networking is in vogue now, and developing software that takes the greatest advantage of a network cannot be far behind. Try this if you dare, and be ready for the future.
<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Alex Vrenios <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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_answer33.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">DialMon: The Linux/Windows diald Monitor</font></H1>
<H4>By <a href="mailto:mike@quaking.demon.co.uk">Mike Richardson</a></H4>
</center>
<P> <HR> <P>  

<h3>In The Beginning</h3>

<p>There seem to be quite a number of small networks, either at
home or at small companies, which use Windows (be they 3.1 or
95/98/NT workstation) clients, and a Linux box as a dial-up
router to the InterNet at large. A common setup is to use <font
color="#FF0000">IP masquerading</font>, so that the the clients
can hide behind a single IP address, with <font color="#FF0000">diald</font>,
the dial-on-demand daemon, so that the Linux box connects as and
when required. This works pretty well</p>

<ul>
    <li>you only need to pay for the single IP addess rather than
        a subnet (ie., a block of IP addresses)</li>
    <li>the masquerading almost automatically provides a firewall</li>
    <li>you only pay connection charges when needed (in places
        where local phone calls are not free)</li>
</ul>

<p>The real problem with this is that users on the Windows
clients have no real indication of the state of the dial-up link.
So, if a connection fails to materialise (ie., your web browser
cannot find a URL), you may not know whether the URL doesn't
exist, or the dial-up link didn't come up.</p>

<P> <HR> <P>  
<h3>Let There Be Light</h3>

<p>Dialmon was originally conceived as a simple monitor to
provide the Windows user with some information about the link. In
its original form, it comprised a single daemon process <font
color="#FF0000">dialmon</font> which ran on the Linux box in
parallel to <font color="#FF0000">daild</font>, and a client <font
color="#FF0000">dialm</font> to run on the Windows client.</p>

<p>The <font color="#FF0000">dialmon</font> daemon connected to
the <font color="#FF0000">diald</font> daemon using the laters
control fifo, requesting that state information be retured via a
second fifo which <font color="#FF0000">dialmon</font> created.
When <font color="#FF0000">dialm</font> clients connected, the
state information provided by <font color="#FF0000">diald</font>,
suitably filtered to remove un-needed stuff, was passed back to
the <font color="#FF0000">dialm</font> client, which could then
display the current dial-up state. Two sorts of information were
displayed, the actual link state (up, down, connecting ...) and
message output generated by <font color="#FF0000">diald</font>'s
connect and disconnect scripts.</p>

<p>So if, for instance, you pointed your browser at <a
href="http://www.linuxgazette.com">http://www.linuxgazete.com</a>
(sic) then you could see the link come up and, when the browser
failed to find the URL, you hopefully realised that you should
have pointed it at <a href="http://www.linuxgazette.com">http://www.linuxgazette.com</a>.</p>

<P> <HR> <P>  
<h3>Keep Your Finger On The Pulse</h3>

<p>This seemed a big improvement, but there were still some more
minor niggles. Firstly, the web browser would often time out a
URL before the dial-up link came up (particularly in the early
evening!), which meant trying the URL a second time. Of course,
by this stage the dial-up link had often just gone down again on
account of there being no traffic. Secondly, if you ran sendmail
or similar on the Linux box and used a mail reader on the Windows
client, then to get an urgent item of mail on its way from the
Linux box to your ISP (or to check for incoming mail), you'd need
to indulge in some trick like using your web browser simply to
force the link up. Try explaining that one to your users!</p>

<p>So, <font color="#FF0000">dialmon</font> was extended to allow
control over the link Actually, these changes spanned three
releases, but the effect is that users on the Windows clients,
can, subject to various access controls, request that the link be
brought up, request that it be taken down, and even request that <font
color="#FF0000">diald</font> itself be stopped and restarted with
a different configuration (which appeared because I need to use
two ISPs). This feature also has the side effect that if <font
color="#FF0000">diald</font> crashes, then <font color="#FF0000">dialmon</font>
will restart it.</p>

<p>The access control can be based either on the host on which <font
color="#FF0000">dialm</font> is running, or on a user name with
password checking. The latter can be set up to use Linux box user
names which do not have login access and which are different to
the Windows user's real user name (if any) on the Linux box.</p>

<P> <HR> <P>  
<h3>Icing On The Cake</h3>

<p>One or two users asked whether <font color="#FF0000">dialmon</font>
could show some load information, ie., the amount of traffic
going through the dial-up link. Having done nothing myself,
someone (Jim Mathews, thanks) provided some code to give an
indication of this via an icon in the Win95/98/NT system tray.
This has now been extended to show a pair of bars in the <font
color="#FF0000">dialm</font> window, one for transmit and one for
receive, which show, at least approximately, the percentage of
the dial-up bandwidth which is being used.</p>

<p>This is quite useful if you are doing a large download, to get
an idea of whether it is worth carrying on, or whether you should
kill the download and try later (while America sleeps, maybe).</p>

<P> <HR> <P>  
<h3>Building The Edifice</h3>

<p>So, how does one set all this up? The distribution (<a
href="ftp://sunsite.unc.edu/pub/Linux/system/daemons/dialmon-0.4.tgz">ftp://sunsite.unc.edu/pub/Linux/system/daemons/dialmon-0.4.tgz.THISONE</a>)
contains the Linux and Windows sources, plus prebuilt Win31 and
Win95/98/NT clients. Once you have built and installed the Linux <font
color="#FF0000">dialmon</font> daemon, you need to configure it.</p>

<p>I'll describe the setup I use at home (which is also the
office). The network comprises two Linux boxes, of which one
called <font color="#FF0000">quaking</font> runs <font
color="#FF0000">diald</font> and sendmail, plus a Windows 3.1
machine called <font color="#FF0000">rover</font> which my wife
Tina mainly uses, and a Windows 95 machine called <font
color="#FF0000">gingling</font> which I use. I want to be able to
bring the dial-up link both up and down, and to switch between
two ISPs, and I want to allow Tina to bring the link up and down,
but not to switch ISPs.</p>

<p>The <font color="#FF0000">dialmon</font> daemon uses two
configuration files, <font color="#FF0000">/etc/dialmon.conf</font>
to specify its own setup, and the options to be given to client
machines, and <font color="#FF0000">/etc/dialmon.users</font> to
specify options to be given to specific users. These are shown
below:</p>

<p><strong>/etc/dialmon.conf</strong></p>

<pre>[host]
	port	7002
	force	90
	fifo	/etc/diald/diald.ctl
	allow	up
	ddconf	Planet	&quot;-f /etc/diald.conf.planet&quot;
	ddconf	Demon	&quot;-f /etc/diald.conf.demon&quot;
</pre>

<p>This specifies that <font color="#FF0000">dialmon</font>
listens for <font color="#FF0000">dialm</font> clients on port
7002 and will force the dial-up link up for 90 seconds (after
which, if there is no traffic on the link, diald will shut it
down). The <em>allow up</em> line specifies that any client <font
color="#FF0000">dialm</font> is allowed to bring the link up. The
two <em>ddconf</em> lines specify ISP configurations; the text in
&quot;....&quot; is the arguments to <font color="#FF0000">diald</font>.</p>
<div align="left">

<pre><strong>/etc/dialmon.users</strong></pre>
</div><div align="left">

<pre>[mike]
	passwd	dialmon
	allow	up
	allow	down
	allow	ctrl

[tina]
	passwd	dialmon
	allow	up
	allow	down</pre>
</div>

<p align="left">The users file specifies the access for myself
and Tina. The lines <em>passwd dialmon</em> indicates that when <em>mike</em>
(or <em>tina</em>) connects, the password supplied should be
checked against that for the user <em>dialmon</em> rather than <em>mike</em>
(or<em> tina</em>).</p>

<p align="left">Lastly, the daemons run from a startup script <font
color="#FF0000">/etc/rc.d/init.d/diald</font> which is linked as <font
color="#FF0000">/etc/rc.d/rc3.d/S99diald</font> (I use the RedHat
distribution which has SysV style startup scripts):</p>

<p align="left"><strong>/etc/rc.d/init.d/diald</strong></p>

<pre>#!/bin/sh
#
# diald		Start or stop the dialer daemon
#

. /etc/rc.d/init.d/functions

if [ ! -f /etc/sysconfig/network ]; then
    exit 0
fi

. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = &quot;no&quot; ] &amp;&amp; exit 0

[ -f /sbin/ifconfig ] || exit 0


# See how we were called.
case &quot;$1&quot; in
  start)
	echo -n &quot;Starting dialer demon: &quot;
	/sbin/route del 0.0.0.0
	# Start dialmon, which will in turn run diald with the Demon
	# configuration, and will if necessary kill off the ppp0 
	# PPP daemon
	#
	daemon /usr/sbin/dialmon -rDemon -pppp0 -b28800
	[ -f /proc/sys/net/ipv4/ip_dynaddr ] &amp;&amp;
		echo 1 &gt; /proc/sys/net/ipv4/ip_dynaddr
	echo &quot;&quot;
	;;
  stop)
	# Shut dowm. Don't use killproc because we want a SIGTERM and
	# not a SIGKILL, so that dialmon can terminate diald (and maybe
	# pppd as well).
	#
	echo -n &quot;Shutting down dialer daemon: &quot;
	[ -f /var/run/dialmon.pid ] &amp;&amp; (
		kill -TERM `cat /var/run/dialmon.pid`
		rm -f /var/run/dialmon.pid
		echo -n &quot;dialmon &quot;
	)
	echo &quot;&quot;
	;;
  *)
        echo &quot;Usage: diald {start|stop}&quot;
        exit 1
esac

exit 0</pre>

<p>The <em>-rDemon</em> argument to /usr/sbin/dialmon tells
dialmon to initially run diald with the <em>Demon</em>
configuration. The <em>-ipppp0</em> argument says that, when <font
color="#FF0000">dialmon</font> restarts <font color="#FF0000">diald</font>,
it should kill any ppp daemon running for the <em>ppp0</em> link
(it looks in /var/run/ppp0.pid), and <em>-b28000</em> says that
the nominal link bandwidth is 28000 baud (used for the receive
and transmit displays).</p>

<P> <HR> <P>  
<h3>In Conclusion</h3>

<p>I've found that <font color="#FF0000">dialmon</font> makes
life easier for myself, and my wife (who claims to be a
computerphobe but loves eMail) uses it all the time; I've also
installed it on the office network of one of my clients. Quite a
number of people have eMail'ed me about it (thanks for the bug
reports, suggestions, contributions, not to mention the thanks)
so I'd like to think that its made life a bit better for them as
well.</p>

<p>As I mentioned above, it should be available from <a
href="ftp://sunsite.unc.edu/pub/Linux/system/daemons/dialmon-0.4.tgz">ftp://sunsite.unc.edu/pub/Linux/system/daemons/dialmon-0.4.tgz.THISONE</a>
(<em>THISONE</em> on account of an upload error, please ignore
the <em>tgz</em> file without the extension unless it's been
sorted!) Please feel free to eMail me at <a
href="mailto:mike@quaking.demon.co.uk">mike@quaking.demon.co.uk</a>
.</p>


<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Mike Richardson <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./kacur.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">The Fifth International Linux Congress</font></h1>
<H4>By <a href="mailto:jkacur@vaxxine.com">John Kacur</a></H4>
</center>
<P> <HR> <P>  
<A HREF="./photos.html">Photo Album</A> 
<P> <HR> <P>  
The fifth International Linux Congress was held June 3-5, 1998,
at Cologne University in Germany. This was only a few days after the
Linux Expo held at Duke University in North Carolina, U.S.A. (May
28-30), which made for a few tired participants including some of the
speakers who attended both events. On the first day of the Congress,
intensive tutorials on various subjects were offered in both English and
German. These included ``Becoming a Debian Developer'' by Bruce
Perens, ``KDE Programming'' by Kalle Dallheimer and Matthias
Ettrich, and ``ISDN4 for Users'' by Klaus Franken.
<p>
The talks began the next day, opening with the keynote speaker, Jon
``maddog'' Hall. Jon's talk, entitled ``Economics of
Computing for the 21st Century'', began with a historical survey of
computers. He talked about early computer systems, which cost three times more
than what his parents paid for a house and were much less powerful
than modern home systems which are now inexpensive enough to buy with
credit cards. He predicted that in the near future, one will be
able to buy a computer in the check-out line at the local supermarket.
Indeed, at least two grocery stores in Germany already sell inexpensive 
PCs. He ended his talk by expressing the need for Linux
to reach the ``Moms and Pops'' of this world and with a plea to lobby
not just for Open Source software but for open hardware standards.
<p>
After the keynote speech, participants got to choose between two talks
running in parallel. The format was forty-five minutes per speaker,
with breaks every ninety minutes. The majority of the talks were held
in English, to accommodate guests from the United States, Canada,
England and the Netherlands, with a few held in German. Although it was
possible to attend up to six talks a day, some participants expressed
regret that they couldn't attend all the interesting talks due to
simultaneous scheduling. 
<p>
During the breaks, participants had an opportunity to
explore the various booth displays. S.u.S.E., a company which makes a popular
German Linux distribution, offered free demo CDs with their newest 5.2
version. O'Reilly had a nice book display with offerings in both English
and German. The KDE group had a very popular display showing off their
attractive desktop environment. John Storrs, who also presented a talk,
had a display demonstrating the use of Real Time Linux for the purpose
of CAD/CAM design. 
<p>
The University also provided the Congress with a
small number of Linux computers connected to the Internet for those
participants who found it hard to be away from the keyboard for
too long. Among the many interesting talks presented on the first day was one entitled
``Designing an Ext2fs Resizer'', given by Theodore Y. Ts'o. Theodore
has made contributions to the development of the Ext2fs system in the past
and is presently working on a method for enlarging and reducing the size
of an Ext2 file system and adding B-tree support. 
<p>
Christian Gafton, one of the programmers from Red Hat, gave a talk entitled ``Migration
to glibc''. He said the use of glibc is no longer as controversial in
the fast-moving Linux world as it was when Red Hat first adopted
it. With the latest versions of glibc available on the Internet,
the most common problems with porting code to the library occur when
programmers write code which is dependent on bugs which exist in the old
libc libraries, or when programmers use bad programming practices such as the 
use of <tt>#include&lt;linux/foo.h></tt> instead of the recommended
<tt>#include&lt;sys.foo.h></tt>.
<p>
A few sessions were purposely left open. The organizers called
these ``Birds of a Feather Sessions'' where the congress attendees
could get together for ``spontaneous and informal meetings for
presentation or discussion of any interesting subject''. Some 
people from Debian took advantage of this opportunity to discuss various
issues concerning their Linux distribution. 
<p>
@lay:please note that ASCII246 is an o with an umlaut
<p>
That evening, participants
got a chance to socialize and experience a bit of German culture. The
social event was held at a local pub reserved for the Linux Congress. There
was a wonderful smorgasbord and the waiters were very quick to fill our beer
glasses with Cologne's famous k&ouml;lsch. Everyone enjoyed themselves
and hopefully some long term computer friendships were formed. 
<p>
The talks continued on the third day with interesting topics such as 
IEE-1394 (also known by the commercial name Fire Wire) by Emanuel Pirker. 
Emanuel designed support for this technology as part of his work as a
university student in Austria. Warwick Allison gave an interesting account of 
the QtScape Hack, in which a small group of programmers created a port of
Netscape to Qt in a five-day programming spree while on vacation in Norway.
<p>
The final panel board discussion was perhaps the most interesting, and
certainly the most contentious topic of the congress. The subject was
GNOME vs. KDE. (See <i>Linux Journal</i>, May 1998.)
Participants included Miguel de Icaza of the Gnome Project, Kalle
Dalheimer of the KDE project and Bruce Perens who helped to define the
Open Source License. The people from the KDE project,
which is already in its second year, felt that Linux was in need of a
comfortable desktop environment. Linux has already captured the server
market, but has not reached the desktop widely because the technical
capabilities required are beyond that of the average user. They also felt that
Linux is about choice, and that since the GNOME project is now being
financed by Red Hat, people would be unduly influenced to use GNOME. 
<p>
The people from GNOME countered that Red Hat had no influence on the direction
of their project, and the reason KDE is not included in the Red Hat
distribution is because of its use of the Qt-toolkit. Many people were
of the opinion that although the KDE project is further ahead than the
GNOME project, its use couldn't be wholeheartedly embraced by the Linux
community because of the non-GNU license of the Qt-toolkit. They fear a
similar situation to the Open Group who recently changed the licensing
policy of the X server. Some members of the audience informed
the Congress that a project to make a GNU clone of the Qt-toolkit was
underway, and other audience members expressed the opinion that the two
KDE and GNOME groups should work more closely, but still acknowledge the 
positive creative push of healthy competition. Any hurt feelings were laid to 
rest and all friendships renewed as we said our goodbyes at the O'Reilly 
Publishing House. 
<p>
The O'Reilly team invited participants of the 
Linux Congress ``zum Kl&ouml;nen bei K&ouml;lsch'' or for a chat 
and beer. Participants agree the fifth annual Linux Congress was 
a success and look forward to next year's Congress, which the 
organizers promised us would not be quite so soon after next year's 
Linux Expo!

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, John Kacur <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./richardson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./nelson.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>

<HR>

<P><!--===================================================================-->
<CENTER>
<H1>
<FONT COLOR="#800000">Fun with Client/Server Computing</FONT></H1></CENTER>

<CENTER>
<H4>
By <A HREF="mailto:nelson@er.doe.gov">David Nelson</A></H4></CENTER>

<P> <HR> <P> 

Psst, wanna have some fun? Try client/server computing. It's like talking
through two tin cans and a taut string, upgraded to the computer era. Linux
has all the tools you need. You are already using client/server computing
in applications such as Netscape, telnet, and ftp. And it's easy to write
your own client/server apps, maybe even useful ones.

<P>Client/server computing links two different programs (the client and
the server) over a network. For practice you can even skip the network
by letting Linux talk to itself. So read on even if you aren't attached
to a network. (But your Linux installation needs to be configured for networking.)

<P>A very common form of client/server computing uses BSD sockets. BSD
stands for Berkeley Software Distribution, an early version of Unix. Logically,
a BSD socket is a combination of IP address and port number. The IP address
defines the computer, and the port number defines the logical communication
channel in that computer. (In this usage a port is not a physical device.
One physical device, e.g. an Ethernet card, can access all the ports in
the computer.)

<P>Linux Journal ran a nice three-part series on network programming by
Ivan Griffin and John Nelson in the February, March, and April, 1998, issues.
The February article contains the code to set up a skeleton client/server
pair using BSD sockets; it includes all the plumbing needed to get started.
You can download the code from <A HREF="ftp://ftp.ssc.com/pub/lj/listings/issue46/2333.tgz">SSC</A>,
then use this article to start playing with more content.

<P>After downloading the file 2333.tgz, expand it with the command 
<tt>tar&nsbp;-xzvf 2333.tgz</tt>. Rename the resultant file 2333l1.txt to server.c,
and the file 2333l2.txt to client.c. Edit server.c to delete the extraneous
characters @cx: from the start of the first line, and either delete the
last line or make it a comment by enclosing it between the characters /*
and */. Similarly, delete the last line of client.c, or make it a comment.
Compile server.c with the command <tt>gcc -oserver server.c</tt>; similarly
compile client.c using <tt>gcc -oclient client.c</tt>.

<P>The server runs on the local computer, so it only needs to know its
port number to define a socket. The client runs on any computer, so it
needs to know both its target server computer and the server's port number.
You have thousands of port numbers to play with. Just don't use a port
that is already taken. Your file /etc/services lists most of the ports
in use. I found that port 1024 worked fine.

<P>Now I said you didn't need to be connected to a network, but you do
need to have your computer configured for networking to try this out. In
fact, this code won't run for me if I use the generic name localhost; I
have to give the explicit name of my computer. So assuming you are set
up for networking, start the sever by typing
<PRE>server 1024 &amp;</PRE>
and then start the client by typing
<PRE>client hostname 1024</PRE>
where hostname is the name or the IP address of your computer. If things
work right, you will see output similar to the following:
<PRE>Connection request from 192.168.1.1
14: Hello, World!</PRE>
The first line gives the IP address of the client, and the second line
is the message from the server to the client. Considering all the code
involved, this would be a good entry for the World's Most Complex "Hello,
World" Program Contest! Note that the server keeps running in the background
until you kill it with the commands <tt>fg</tt> and <tt>^C</tt> (ctrl-C).
<H4>
Example of Query-Respone Client/Server</H4>
Now let's do something more useful. Debugging two programs simultaneously
is no fun, so let's start simple by simulating a client/server pair in
a single program. Then when you understand how things work we can divide
the code between the client and the server. In the following program the
client is simulated by the function client. The main routine simulates
the server:
<PRE>/* local test of client-server code */

#include &lt;stdio.h>
#include &lt;stdlib.h>
#include &lt;string.h>

char name[256] = "";
char buffer[256] = "";

void client(char *buffer)
{
&nbsp;printf("%s", buffer);
&nbsp;fgets(buffer, 256, stdin);
}

&nbsp;int main(int argc, char *argv[])
{
&nbsp;int year, age;

&nbsp;sprintf(buffer, "Please enter your name: ");

&nbsp;client(buffer);

&nbsp;strcpy(name, buffer);
&nbsp;sprintf(buffer, "Hi, %sPlease enter your year of birth: ", name);

&nbsp;client(buffer);

&nbsp;year = atoi(buffer);
&nbsp;age = 1998 - year;
&nbsp;sprintf(buffer, "Your approximate age is %d.\nEnter q to quit: ", age);

&nbsp;client(buffer);

&nbsp;return(0);
}</PRE>
You don't have to be an expert at C code to see how this works. The simulated
server (main) sends the string "Please enter your name" to the simulated
client (client) through the array buffer. The client prints the string,
reads the name as a string from keyboard, and returns that string through
buffer. Then the server asks for the year of birth. When the client collects
it as a string, the server converts it to a number and subtracts it from
1998. It sends the resultant approximate age back to the client. We are
done now, but because the client needs a keyboard entry before returning,
the server requests that a "q" be entered. More sophisticated coding could
eliminate this unnecessary awkwardness. This simulated client/server illustrates
passing strings between server and client, asking and responding to questions,
and doing arithmetic.

<P>Copy the above code into an editor and save it as localtest.c. Compile
it with the command <tt>gcc -olocaltest localtest.c</tt>. When you run
it you should get output like:
<PRE>Please enter your name: joe
Hi, joe
Please enter your year of birth: 1960
Your approximate age is 38.
Enter q to quit: q</PRE>
Now let's turn this into a real client/server pair. Insert declarations
into server.c by changing the beginning statements of main to read:
<PRE>int main(int argc, char *argv[])
{
int i, year, age;
char name[256] = "";
char buffer[256] = "";
char null_buffer[256] = "";
&nbsp;&nbsp;&nbsp; int serverSocket = 0,</PRE>
The application-specific code in server.c is towards the end. Replace
it with the following:
<PRE>/*
* Server application specific code goes here,
* e.g. perform some action, respond to client etc.
*/

sprintf(buffer, "Please enter your name: ");
write(slaveSocket, buffer, strlen(buffer));
for (i = 0; i &lt;= 255; i++) buffer[i] = 0;

/* get name */
read(slaveSocket, buffer, sizeof(buffer));
strcpy(name, buffer);
sprintf(buffer, "Hi, %sPlease enter your year of birth: ", name);
write(slaveSocket, buffer, strlen(buffer));
for (i = 0; i &lt;= 255; i++) buffer[i] = 0;

/* get year of birth */
read(slaveSocket, buffer, sizeof(buffer));
year = atoi(buffer);
age = 1998 - year;
sprintf(buffer, "Your approximate age is %d.\nEnter q to quit: ", age);
write(slaveSocket, buffer, strlen(buffer));

close(slaveSocket);
exit(0);</PRE>
This is almost the same as the server code in the simulated client/server,
except that we read and write slaveSocket instead of calling the function
client. You can think of slaveSocket as the connection through the socket
between the server and client.

<P>The client code is very simple. Insert declarations into client.c
by changing the beginning statements of main to read
<PRE>int main(int argc, char *argv[])
{
&nbsp; int i;
&nbsp; int clientSocket,</PRE>
Find the application specific code near the end of client.c and replace
it with the following:
<PRE>/*
* Client application specific code goes here
* e.g. receive messages from server, respond, etc.
* Receive and respond until server stops sending messages
*/

while (0 &lt; (status = read(clientSocket, buffer, sizeof(buffer))))
&nbsp; {
&nbsp;&nbsp;&nbsp; printf("%s", buffer);
&nbsp;&nbsp;&nbsp; for (i = 0; i &lt;= 255; i++) buffer[i] = 0;
&nbsp;&nbsp;&nbsp; fgets(buffer, 256, stdin);
&nbsp;&nbsp;&nbsp; write(clientSocket, buffer, strlen(buffer));
&nbsp; }
&nbsp;&nbsp;&nbsp; close(clientSocket);
&nbsp;&nbsp;&nbsp; return 0;
&nbsp; }</PRE>
Again, this is almost the same as the client code in the simulated
client/server. The main differences are the use of clientSocket, the other
end of slaveSocket in the server, and the while statement for program control.
The while statement closes the client when the server stops sending messages.

<P>Recompile server.c and client.c and run them again as before. This
time the output should be something like:
<PRE>Connection request from 192.168.1.1
Please enter your name: joe
Hi, joe.
Please enter your year of birth: 1960
Your approximate age is 38.
Enter q to quit: q</PRE>
Now you can really play: try running multiple client sessions that
call the same server, and if you are on a network try running the server
on a different computer from the client. The server code is designed to
handle multiple simultaneous requests by starting a process for each client
session. This is done by the fork call in server.c. Read the man page for
fork to learn more.
<H4>
Chat Program as a Client/Server</H4>
As a final example, let's look at a chat program for sending messages
between users. It's primitive, because it only allows alternating lines
between each person, and it requires the server to keep a window open.
But it shows how a client/server pair can carry on an unlimited dialog,
and it could be extended into a practical program.

<P>Insert declarations into server.c by changing the beginning statements
of main to read:
<PRE>&nbsp;int main(int argc, char *argv[])
{
&nbsp; char buffer[256] = "";
&nbsp; int i, serverquit = 1, clientquit = 1;
&nbsp;&nbsp;&nbsp; int serverSocket = 0,</PRE>
Replace the application-specific code towards the end of server.c with
the following:
<PRE>/*
* Server application specific code goes here,
* e.g. perform some action, respond to client etc.
*/

printf("Send q to quit.\n");
sprintf(buffer, "Hi, %s\nS: Please start chat. Send q to quit.\n", inet_ntoa(clientName.sin_addr));
write(slaveSocket, buffer, strlen(buffer));
for (i = 0; i &lt;= 255; i++) buffer[i] = 0;

while (serverquit != 0 &amp;&amp; clientquit != 0)
{
&nbsp;status = 0;
&nbsp;while (status == 0)
&nbsp; status = read(slaveSocket, buffer, sizeof(buffer));
&nbsp;clientquit = strcmp(buffer, "q\n");

&nbsp;if (clientquit != 0)
&nbsp;{
&nbsp; printf("C: %s", buffer);
&nbsp; for (i = 0; i &lt;= 255; i++) buffer[i] = 0;

&nbsp; printf("S: ");
&nbsp; fgets(buffer, 256, stdin);
&nbsp; serverquit&nbsp; = strcmp(buffer, "q\n");
&nbsp; write(slaveSocket, buffer, strlen(buffer));
&nbsp; for (i = 0; i &lt;= 255; i++) buffer[i] = 0;
&nbsp;}
}
printf("Goodbye\n");
close(slaveSocket);
exit(0);</PRE>
Insert declarations into client.c by changing the beginning statements
of main to read:
<PRE>int main(int argc, char *argv[])
{
&nbsp;int i, serverquit = 1, clientquit = 1;
&nbsp;&nbsp;&nbsp; int clientSocket,</PRE>
Replace the application-specific code toward the end of client.c with
the following
<PRE>/*
* Client application specific code goes here
* e.g. receive messages from server, respond, etc.
*/

while (serverquit != 0 &amp;&amp; clientquit != 0)
{
&nbsp; status = 0;
&nbsp; while (status == 0)
&nbsp;&nbsp;&nbsp; status = read(clientSocket, buffer, sizeof(buffer));
&nbsp; serverquit = strcmp(buffer, "q\n");

&nbsp; if (serverquit != 0)
&nbsp; {
&nbsp;&nbsp;&nbsp; printf("S: %s", buffer);
&nbsp;&nbsp;&nbsp; for (i = 0; i &lt;= 255; i++) buffer[i] = 0;

&nbsp;&nbsp;&nbsp; printf("C: ");
&nbsp;&nbsp;&nbsp; fgets(buffer, 256, stdin);
&nbsp;&nbsp;&nbsp; clientquit = strcmp(buffer, "q\n");
&nbsp;&nbsp;&nbsp; write(clientSocket, buffer, strlen(buffer));
&nbsp;&nbsp;&nbsp; for (i = 0; i &lt;= 255; i++) buffer[i] = 0;
&nbsp;&nbsp; }
&nbsp;}
&nbsp;printf("Goodbye\n");
&nbsp;close(clientSocket);
&nbsp;return 0;
&nbsp;}</PRE>
Recompile both server.c and client.c and you are ready to try it out.
To simulate two computers on one, open two windows in X or use two different
consoles (e.g. alt-1 and alt-2.) Start the server in one window using the
command
<PRE>server 1024</PRE>
and the client in the other using the command
<PRE>client hostname 1024</PRE>
where hostname is replaced by your actual hostname or IP address.

<P>Server and client code for this chat program are almost identical,
and very similar to the previous example. There are two main differences.
The first is the test to see whether either party has entered a "q" to
quit. The flags serverquit and clientquit signal this. The second is the
tight loop waiting for response from the other party. The function read
returns the number of character read from the socket; this is stored into
status. A non-zero number of characters indicates the other side has sent
a message.

<P>Here is an example session as printed by the server:
<PRE>Connection request from 192.168.1.1
Send q to quit.
C: Hi server
S: Hi client
C: Bye server
S: Bye client
Goodbye</PRE>
And here is the same session as printed by the client:
<PRE>S: Hi, 192.168.1.1
S: Please start chat. Send q to quit.
C: Hi server
S: Hi client
C: Bye server
S: Bye client
C: q
Goodbye</PRE>
I hope these examples have shown how easy it is to set up client/server
computing. May your appetite be whetted to try your own applications. If
you cook up something tasty, let the rest of us know. And don't forget
to keep that string taut!

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, David Nelson <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./kacur.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./burtch.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> 
<!--===================================================================-->
<!-- =============================================================
		This Page Designed by Michael J. Hammel.
		Permission to use all graphics and other content for private,
		non-commerical use is granted provided you give me (or the 
		original authors/artists) credit for the work.

		CD-ROM distributors and commercial ventures interested in 
		providing the Graphics Muse for a fee must contact me,
		Michael J. Hammel (mjhammel@graphics-muse.org), for permission.
     ============================================================= !-->
<!--  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 COLS=2 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/gm3.gif" ALT="Welcome to the Graphics Muse" NOSAVE HEIGHT=216 WIDTH=441 ALIGN=LEFT></TD>

<TD VALIGN=BOTTOM>
<CENTER><FONT SIZE=-1>Set your browser as wide as you'd like now.&nbsp;
I've fixed the Muse to expand to fill the aviailable space!</FONT>
<BR><FONT SIZE=-2>&copy; 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">mjh</A></FONT></CENTER>
</TD>
</TR>
</TABLE>

<HR WIDTH="100%">
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
<TR>
<TD WIDTH="185"><IMG SRC="../gx/hammel/muse-image-map.gif" BORDER=0 ALT="Button Bar" USEMAP="#nav-main" HEIGHT=200 WIDTH=185 ALIGN=LEFT></TD>

<TD VALIGN=TOP><B><FONT SIZE=+1>muse:</FONT></B>
<OL>
<LI>
<I>v;</I> to become absorbed in thought&nbsp;</LI>

<LI>
<I>n;</I> [ fr. Any of the nine sister goddesses of learning and the arts
in Greek Mythology ]: a source of inspiration&nbsp;</LI>
</OL>
<IMG SRC="../gx/hammel/w.gif" ALT="W" HEIGHT=28 WIDTH=36 ALIGN=BOTTOM>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.&nbsp;
<CENTER><FONT SIZE=-1>[<A HREF="#mews">Graphics Mews</A>][<A HREF="#webwonderings">WebWonderings</A>][<A HREF="#musings">Musings</A>]
[<A HREF="#resources">Resources</A>]</FONT></CENTER>
</TD>
</TR>
</TABLE>
<IMG SRC="../gx/hammel/t.gif" ALT="T" HEIGHT=28 WIDTH=26 ALIGN=LEFT>his column
is dedicated to the use, creation, distribution, and discussion of computer
graphics tools for Linux systems.
<P>Wow, what a month.&nbsp; Since I'd finished working on my Gimp book
in July and early August, I had all of September to work on my Muse column.&nbsp;
Its been quite some time since I've been able to devote this much time
to the Muse.&nbsp;&nbsp; I managed to keep up to date on all the product
announcements made over on Slashdot, freshmeat, and on comp.os.linus.announce.&nbsp;
And there were a ton of them.&nbsp; So many, in fact, I considered leaving
some out just to keep this page from being too large.&nbsp; But that didn't
seem right, so this month the Muse is a big, big column.
<P>What we've got this month for you:
<UL>
<LI>
Visual DHTML from Netscape - a review of their initial release</LI>

<LI>
Configuring and using X Input for use with Wacom drawing tablets</LI>
</UL>
I got rather motivated with all this extra time on my hands.&nbsp; First,
I planned some hardware research into getting X Input running, which then
lead to plans for an article on off the shelf video boards.&nbsp; This
latter idea will be in next months issue since its quite a bit of information
to gather and organize.&nbsp; I got quite a bit of help on the X Input
issues from Owen Taylor.&nbsp; His tips got me up and running with X Input
and allowed me to gather some reasonable information for helping my readers
do the same.&nbsp; Along with X Input, I've got a review of Netscapes Visual
DHTML in the Web Wonderings section.
<P>You may also want to take a look at the new and improved <A HREF="http://www.graphics-muse.org">Graphics
Muse Website</A>.&nbsp; I've complete revamped the site.&nbsp; The old
Linux Graphics mini-Howto and Unix Graphics Utilities pages are no more
- they've been replaced by a searchable database of graphics tools, texts,
news stories, and reviews.&nbsp; No more frames either, at least not in
the Linux specific sections (my bio page still uses them, however).&nbsp;
Its not as nice as Slashdot or Freshmeat, but its better than the static
frame-based pages I had before.&nbsp; Hopefully, everyone will find these
updates to their liking.&nbsp; It should certainly make finding tools a
little easier.&nbsp; At least that was the plan when I started on it.
<P>For those who don't want to see the new graphics in my portal pages,
you can jump straight to the <A HREF="http://www.graphics-muse.org/linux.html">Linux
specific section</A>.&nbsp; But take a look at the graphics in the <A HREF="http://www.graphics-muse.org">portals</A>
some time.&nbsp; I really kind of like them.
<P><A NAME="mews"></A>
<BR>&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/mews.gif" ALT="Graphics Mews" HEIGHT=53 WIDTH=242 ALIGN=LEFT></TD>
</TR>
</TABLE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disclaimer: 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.
<BR>&nbsp;
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>

<TD></TD>
</TR>

<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP WIDTH="50%" NOSAVE>
<H2>
<B><FONT COLOR="#000000">imwheel 0.7</FONT></B></H2>
<B><I><FONT COLOR="#CC6600">Imwheel</FONT></I></B> makes the wheel of your
Intellimouse (and other wheel mice) work in Linux/X11 to scroll windows
up and down, or send keys to programs. It runs in the background as a daemon
and requires little reconfiguration of the XFree86 setup. 4 or more button
mice and Alps Glidepad 'Taps' may also be used.&nbsp;
<P><A HREF="http://solaris1.mysolution.com/~jcatki/imwheel/">http://solaris1.mysolution.com/~jcatki/
imwheel/</A>
<BR>
<HR WIDTH="100%">
<H2>
WorldEd 0.2.0</H2>
<B><I><FONT COLOR="#CC6600">WorldEd</FONT></I></B> is a 3d modeller for
<FONT COLOR="#000000">KDE</FONT>.
It has a grid, a tree view, a 3d view, a Layout manager, and a Modeller.
It will have full texture mapping, skeletal modelling, more heirarchal
model design, 3dfx dual-screen support and other goodies.&nbsp; Development
urgently needs additional contributors.&nbsp;
<P>New in version 0.2.0 is autoconf/automake support, seperate Modeller
and Layout views, support for <FONT COLOR="#000000">Lightwave</FONT>/<FONT COLOR="#000000">Blender</FONT>
ASCII imports, object rotation/scaling and updated screenshots.&nbsp;
<P><A HREF="http://www.geocities.com/Pentagon/Quarters/2865/">http://www.geocities.com/
Pentagon/Quarters/2865/</A>
<BR>
<HR WIDTH="100%">
<H2>
Red Hat to Release NeoMagic source</H2>
Slashdot reports that Red Hat will release the source for the X Binary
Free NeoMagic server after having received permission to do so from NeoMagic.&nbsp;
This X server source includes support for NeoMagic's MagicGraph128 family
of integrated single-chip graphics hardware.&nbsp; The full announcement
from Red Hat can be found at
<BR><A HREF="http://slashdot.org/articles/98/09/21/1626214.shtml">http://slashdot.org/articles/98/09/21/1626214.shtml</A></TD>

<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000"><IMG SRC="../gx/hammel/.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1></TD>

<TD ALIGN=LEFT VALIGN=TOP WIDTH="49%" NOSAVE>
<H2>
3dom snapshot 980910 (or later)</H2>
<B><I><FONT COLOR="#CC6600">3dom</FONT></I></B> stands for 3-Dimensional
Object Modeler. The aim of 3dom is to offer a tool to model reality with
user-chosen accuracy, and user-chosen inclination for a particular purpose,
which can be gradually improved and extended. 3dom is designed to be a
general-purpose modeler, however it is especially inclined to model scenes
for Global Illumination purposes.&nbsp;
<P>&nbsp; This release features better Renderpark integration, some new
concepts, various bugfixes and enhancements.&nbsp;
<P><A HREF="http://www.gv.kotnet.org/~kdf/3dom/">http://www.gv.kotnet.org/~kdf/3dom/</A>
<BR>
<HR WIDTH="100%">
<H2>
Linux Quake HOWTO 1.0.1.12</H2>
The <B><I><FONT COLOR="#CC6600">Linux Quake Howto</FONT></I></B> explains
how to install, run and troubleshoot Quake, QuakeWorld, and Quake II on
an Intel Linux system.&nbsp;
<P>This version includes updated QuakeWorld install information for the
new 2.30 release, info on using the new 3Dfx GL miniport with regular Quake
and Quake2, more help on making Quake behave on glibc systems, and lots
more.&nbsp;
<P><A HREF="http://webpages.mr.net/bobz/">http://webpages.mr.net/bobz/</A>
<BR>
<HR WIDTH="100%">
<BR><B><FONT SIZE=+1>Other Announcements:</FONT></B>
<BR>Simple Direct Media (SDL) <A HREF="http://lwn.net/1998/0917/sdllogo.html">Logo
contest</A>
<BR>New Version of <A HREF="http://news.freshmeat.net/1998/09/12/#905626302">Quake
2 </A>is out.
<BR>&nbsp;</TD>
</TR>

<TR>
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>

<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
</TR>

<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<H2>
aKtion! 0.2.0 and KXAnim</H2>
<B><I><FONT COLOR="#CC6600">aKtion!</FONT></I></B> is a video player based
on <FONT COLOR="#000000">xanim</FONT>. It (xanim) supports many different
file formats like FLI animations, FLC animations, IFF animations, GIF87a
and GIF89a files, GIF89a animation extensions, DL animations, Amiga MovieSetter
animations, Utah Raster Toolkit RLE images and animations, AVI animations,
Quicktime Animations and SGI Movie Format files.&nbsp;
<P>NOTE: You'll need to have xanim 2.70.7.0 properly installed in your
machine to run aKtion!.&nbsp;
<P><B><I><FONT COLOR="#CC6600">KXAnim</FONT></I></B> is a C++ widget wrapper
around xanim to allow video playing in your apps.&nbsp;
<P>Both of these appear to be KDE applications, although they don't specifically
state that on the Web site.&nbsp;
<P>aKtion! and KXAnim - <A HREF="http://www.geocities.com/SiliconValley/Haven/3864/aktion.html">http://www.geocities.com/
SiliconValley/Haven/3864/aktion.html</A>
<BR>xanim - <A HREF="http://xanim.va.pubnix.com/home.html">http://xanim.va.pubnix.com/home.html</A>
<BR>
<HR WIDTH="100%">
<H2>
Prometheus Truecolour 2.0.8</H2>
<B><I><FONT COLOR="#CC6600">Prometheus Truecolour</FONT></I></B> (PTC)
2.0 C++/Java is the library of choice for demo programming. It allows you
to render into an offscreen surface of your choice and then converts it
on the fly to whatever video mode is available on the host machine. And
it is designed to be small so it can be statically linked into your application.&nbsp;
<P>Version 2.0 of the library is currently under heavy development and
updated nearly daily. A final release has been scheduled at around the
end of August 1998. PTC 2.x is free software under the terms of the GNU
Library General Public License (LGPL)&nbsp;
<P><A HREF="http://www.cs.ucl.ac.uk/students/c.nentwich/ptc/">http://www.cs.ucl.ac.uk/students/
c.nentwich/ptc/</A>
<BR>
<HR WIDTH="100%">
<H2>
PyroTechnics 1.2</H2>
<B><I><FONT COLOR="#CC6600">PyroTechnics</FONT></I></B> is an OpenGL-based
firework simulator. Features include multiple kinds of fireworks, the ability
to choreograph firework displays, a texture-mapped water surface, reflections,
a moving camera, and the ability to save screenshots.&nbsp;
<P>This version updates v1.0 with bugfixes, portability fixes, and the
addition of command-line arguments.&nbsp;
<P><A HREF="http://www.ling.ed.ac.uk/~oliphant/pyro/">http://www.ling.ed.ac.uk/~oliphant/pyro/</A>
<BR>
<HR WIDTH="100%">
<H2>
k3de 0.0.6</H2>
<B><I><FONT COLOR="#CC6600">k3de</FONT></I></B> is a 3D editor for the
K Desktop Environment which generates sources for POVray.&nbsp;
<BR><A HREF="ftp://ftp.kde.org/pub/kde/unstable/apps/graphics/k3de-0.0.6.tgz">ftp://ftp.kde.org/pub/kde/
unstable/apps/graphics/k3de-0.0.6.tgz</A>
<BR>
<HR WIDTH="100%">
<H2>
Quick Image Viewer 0.5</H2>
<B><I><FONT COLOR="#CC6600">Quick Image Viewer </FONT></I></B>(qiv) is
a very small and pretty fast GDK/Imlib image viewer.&nbsp; <A HREF="http://www.idnet.de/~AdamK/">http://www.idnet.de/~AdamK/</A>
<BR>
<HR WIDTH="100%">
<H2>
FxEngine 0.31</H2>
<B><I><FONT COLOR="#CC6600">FxEngine</FONT></I></B> is a 3d graphics library
that uses the glide API. It was made by Andreas Ingo and ported to Linux
by Michael Pugliese. It is very powerful and easy to use.&nbsp; <A HREF="http://welcome.to/3dfxPS/">http://welcome.to/3dfxPS/&nbsp;</A>
<BR>Editor 's Note:&nbsp; watch out for <I>bright</I> red background -
eek!</TD>

<TD>
<H2>
ElectricEyes 0.2</H2>
&nbsp; <B><I><FONT COLOR="#CC6600">ElectricEyes</FONT></I></B> is a lightweight
GTK+/GNOME-based image viewer. It allows you to view and do simple manipulate
of several image formats and gives a nice thumbnail selection mechanism.&nbsp;
<P><A HREF="http://www.labs.redhat.com/ee.shtml">http://www.labs.redhat.com/ee.shtml</A>
<BR>
<HR WIDTH="100%">
<H2>
fltk beta-19980825</H2>
&nbsp; <B><I><FONT COLOR="#CC6600">fltk</FONT></I></B> (pronounced "fulltick")
is a GPL'd C++ user interface toolkit for X and OpenGL (it has also been
ported to 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.&nbsp;
<P>&nbsp; This beta includes slight layout modifications, ports to Cray
and other 64 bit machines as well as lots of bug fixes and small additions
from users.&nbsp;
<P><A HREF="http://www.cinenet.net/users/spitzak/fltk/">http://www.cinenet.net/
users/spitzak/fltk/</A>
<BR>
<HR WIDTH="100%">
<H2>
VMD 1.2</H2>
<B><I><FONT COLOR="#CC6600">VMD</FONT></I></B> is designed for the visualization
and analysis of biological systems such as proteins, nucleic acids, lipid
bilayer assemblies, etc. It may be used to view more general molecules,
as VMD can read standard Protein Data Bank (PDB) files and display the
contained structure. VMD provides a wide variety of methods for rendering
and coloring a molecule: simple points and lines, CPK spheres and cylinders,
licorice bonds, backbone tubes and ribbons, cartoon drawings, and others.
VMD can be used to animate and analyze the trajectory of a molecular dynamics
(MD) simulation. In particular, VMD can act as a graphical front end for
an external MD program by displaying and animating a molecule undergoing
simulation on a remote computer.&nbsp;
<P><A HREF="http://www.ks.uiuc.edu/Research/vmd/">http://www.ks.uiuc.edu/
Research/vmd/</A>
<BR>
<HR WIDTH="100%">
<H2>
XawTV 2.25</H2>
<B><I><FONT COLOR="#CC6600">XawTV</FONT></I></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.&nbsp;
<P>Recent releases include updates to work with version 0.5.14 of the bttv
driver and adds a command line tool for recording avi movies plus an ncurses
based radio application and driver bugfixes.&nbsp; If you don't get a picture
with version 2.24, check out this version.&nbsp;
<P><A HREF="http://user.cs.tu-berlin.de/~kraxel/linux/#xawtv">http://user.cs.tu-berlin.de/~kraxel/
linux/#xawtv</A>
<BR>
<HR WIDTH="100%">
<H2>
Magician&nbsp;</H2>
Magician is a commercial OpenGL implementation for Java.&nbsp; Portable
to Unix systems, but its unclear if it runs on Linux or not.&nbsp;
<BR><A HREF="http://www.arcana.co.uk/products/magician/">http://www.arcana.co.uk/
products/magician/</A></TD>
</TR>

<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
</TR>
</TABLE>

<H2>
gifc</H2>
<B><I><FONT COLOR="#CC6600">Gifc</FONT></I></B> reads a file with graphical
commands and outputs a GIF file.&nbsp; It originated from the need of the
authors system administrator to show various system information graphically.&nbsp;
The administrator found that HTML did not suit his needs, so he started
a kind of contest from which this program was born.
<P>gifc is a Perl script that requiresPerl version 5.003, patchlevel 23
(preferably 5.004).&nbsp; It also needs the GD Perl module which can be
downloaded at <A HREF="http://www.perl.com/CPAN">http://www.perl.com/CPAN</A>.&nbsp;
Although the current version of gifc is 2.5, this is the first public release,.&nbsp;
It has been tested on Linux 2.0 and HP-UX 10.20.&nbsp; The home page of
gifc is:&nbsp; <A HREF="http://www.club.innet.be/~pub01180/gifctxt.html">http://www.club.innet.be/~pub01180/gifctxt.html</A>,
from which you can also download the package.&nbsp; The program is released
under the GPL.&nbsp; The README file contains build and installation instructions.
<P>The author, Peter Verthez, can be reached for suggestions and bug reports
at&nbsp; <A HREF="mailto:pver@innet.be">pver@innet.be.</A>
<BR>
<HR WIDTH="100%">
<H2>
Gifsicle 1.3</H2>
&nbsp; <B><I><FONT COLOR="#CC6600">Gifsicle</FONT></I></B> manipulates
GIF image files on the command line. It supports merging several GIFs into
a GIF animation; exploding an animation into its component frames; changing
individual frames in an animation; turning interlacing on and off; adding
transparency; adding delays, disposals, and looping to animations; adding
or removing comments; optimizing animations for space; and changing images'
colormaps, among other things.&nbsp; This version has flip and rotate options.
It also fixes a longstanding bug that would rarely corrupt one pixel in
an image.
<BR><A HREF="http://www.lcdf.org/~eddietwo/gifsicle/">http://www.lcdf.org/~eddietwo/gifsicle/</A>
<BR>
<HR WIDTH="100%">
<H2>
X-TrueType Server 1.0 - New TrueType Font Server</H2>
<B><I><FONT COLOR="#CC6600">X-TrueType Server </FONT></I></B>is an X server
and/or an X font server that can handle TrueType fonts directly. With X-TT,
you can use TrueType fonts on the X Window environments without modifying
existing applications, and in the same feel as using BDF fonts or PCF fonts.
Thanks to widely spreading Windows, you can get a large variety of TrueType
fonts at no or relatively low cost. X-TT supports various font transformations,
such as slanting or magnifying which makes X-TT very useful for X users
especially in far-east Asia, including Japan. These users have been suffering
a bitter experience that only a few fonts were available.
<P><A HREF="http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/x-tt/index-eng.html">http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/x-tt/index-eng.html
</A>-
English version of web site
<BR><A HREF="http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/x-tt/index-jap.html">http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/x-tt/index-jap.html</A>
- Japanese version of web site
<P><B><FONT COLOR="#006600">Editors Note</FONT></B>:&nbsp; I think this
is not really an X server but rather serves as an embeddable library for
X servers or as a stand alone font server.&nbsp; Check the web pages for
more detailed information.
<BR>
<HR WIDTH="100%">
<H2>
Mesa 3.0 Officially Released</H2>
&nbsp;<B><I><FONT COLOR="#CC6600">Mesa</FONT></I></B> is a 3-D graphics
library which uses the OpenGL API (Application Programming Interface).
Mesa cannot be called an implementation of OpenGL since the author did
not obtain an OpenGL license from SGI. Furthermore, Mesa cannot claim OpenGL
conformance since the conformance tests are only available to OpenGL licensees.
Despite these technical/legal terms, you may find Mesa to be a valid alternative
to OpenGL. Most applications written for OpenGL can use Mesa instead without
changing the source code.
<BR><A HREF="http://www.ssec.wisc.edu/~brianp/Mesa.html">http://www.ssec.wisc.edu/~brianp/Mesa.html</A>
<BR>
<HR WIDTH="100%">
<H2>
Xi Graphics Accelerated X 4.1.2 Laptop X Server Upates</H2>
Explicit support has been added to the <B><I><FONT COLOR="#CC6600">Accelerated-X
Laptop Display Server</FONT></I></B> for the Acer (also known as TI) TravelMate
7100 using the NeoMagic 2160 chip.&nbsp; Update 7 for Accelerated-X 4.1.2
is available from the Anonymous FTP site as URL <A HREF="ftp://ftp.xig.com/pub/updates/accelx/laptop/L4102.007.tar.gz">ftp://ftp.xig.com/pub/updates/accelx/laptop/L4102.007.tar.gz</A>
.&nbsp; A description of the process to add the update is in the same directory
as URL <FONT COLOR="#000000"><A HREF="ftp://ftp.xig.com/pub/updates/accelx/laptop/L4102.007.txt">ftp://ftp.xig.com/pub/updates/accelx/laptop/L4102.007.txt
</A></FONT>.
<P>Additionally, another update supports the Fujitsu Lifebook 990Tx2 using
the ATI Rage LT Pro chip.&nbsp; If using Accelerated-X Laptop Display Server
version 4.1.2, apply the update from URL <A HREF="ftp://ftp.xig.com/pub/updates/accelx/laptop/4.1.2/L4102.003.tar.gz">ftp://ftp.xig.com/pub/updates/accelx/laptop/4.1.2/L4102.003.tar.gz
</A>.&nbsp;
A description of the process to add the update is in the same directory,
URL <A HREF="ftp://ftp.xig.com/pub/updates/accelx/laptop/4.1.2/L4102.003.txt">ftp://ftp.xig.com/pub/updates/accelx/laptop/4.1.2/L4102.003.txt</A>
.
<P>Detailed results from benchmarking should be available on the Xi Graphics
Web Site, URL <A HREF="http://www.xig.com/">http://www.xig.com/</A> , soon.&nbsp;
The summary of the Xmark'93 single figure benchmark results for these machines
are:
<BR>&nbsp;
<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 COLS=2 NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER VALIGN=TOP WIDTH="240" NOSAVE>
<TABLE BORDER CELLSPACING=0 CELLPADDING=3 COLS=4 WIDTH="220" NOSAVE >
<TR NOSAVE>
<TD COLSPAN="4" NOSAVE>
<CENTER><B>Acer/TI TravelMate 7100</B></CENTER>
</TD>
</TR>

<TR NOSAVE>
<TD>Depth</TD>

<TD NOSAVE>8bpp</TD>

<TD>16bpp</TD>

<TD>24bpp</TD>
</TR>

<TR NOSAVE>
<TD NOSAVE>Number of colors</TD>

<TD>256</TD>

<TD>64K</TD>

<TD>16M</TD>
</TR>

<TR>
<TD>Accelerated-X</TD>

<TD>12</TD>

<TD>9.9</TD>

<TD>4.8</TD>
</TR>

<TR>
<TD>X Binary Free</TD>

<TD>9.9</TD>

<TD>8.1</TD>

<TD>2.1</TD>
</TR>
</TABLE>
&nbsp;</TD>

<TD ALIGN=CENTER VALIGN=TOP WIDTH="240" NOSAVE>
<TABLE BORDER CELLSPACING=0 CELLPADDING=3 COLS=4 WIDTH="220" NOSAVE >
<TR NOSAVE>
<TD COLSPAN="4" NOSAVE>
<CENTER><B>Fujitsu Lifebook 990Tx2</B></CENTER>
</TD>
</TR>

<TR NOSAVE>
<TD NOSAVE>Depth</TD>

<TD>8bpp</TD>

<TD>16bpp</TD>

<TD>24bpp</TD>
</TR>

<TR>
<TD>Number of colors</TD>

<TD>256</TD>

<TD>64K</TD>

<TD>16M</TD>
</TR>

<TR>
<TD>Acclerated-X</TD>

<TD>27</TD>

<TD>21</TD>

<TD>2.1</TD>
</TR>
</TABLE>
&nbsp;</TD>
</TR>
</TABLE></CENTER>

<HR WIDTH="100%">
<H2>
SciTech is readying the first release of SciTech Display Doctor for Linux!</H2>
SciTech Display Doctor is the universal display driver utility that supports
over 250 different graphics chips -- just about every one ever made. SciTech
Display Doctor for Linux will bring SciTech's proven device driver technology
to the Linux platform (x86 only at this point in time).
<P>SciTech is looking for all types of Linux users to help us stress test
the utility before its final release. If you would like to participate
in a beta, please contact <A HREF="mailto:KendallB@scitechsoft.com">KendallB@scitechsoft.com</A>
or visit the SciTech Web site at <A HREF="http://www.scitechsoft.com">http://www.scitechsoft.com</A>.
<P><B><FONT COLOR="#006600">Editors Note</FONT></B>:&nbsp; a form for registering
to participate in the beta release program accompanied this announcement
in comp.os.linux.announce, however I felt it was a bit too large for inclusion
here.&nbsp; The form doesn't appear to be on their web site, so you'll
probably need to send email to the above contact address to request a copy
of
the form.&nbsp; Also, this program may have already expired by the time
this column reaches you.&nbsp; Display Doctor may already be released for
Linux by that time.
<BR>
<HR WIDTH="100%">
<H2>
Intel signs agreements with RealVideo and MetaCreations</H2>
Intel has been busy moving into streaming video.&nbsp;&nbsp; <A HREF="http://www.news.com">C|Net
News</A> reported <A HREF="http://www.news.com/News/Item/0,4,26450,00.html?owv">an
agreement between Intel and RealNetworks</A> was signed licensing new streaming
video technology to <A HREF="http://www.real.com/">RealNetwork</A> for
their next RealVideo G2 release.&nbsp; Along with that, <A HREF="http://www.designgraphics.com.au">Design
Graphics</A> reports in Issue 37 that Intel and MetaCreations
have jointly released a new open streaming 3D format based on MetaCreations
Real Time Geometry technology.&nbsp; The problem with the MetaCreations
agreement is that the&nbsp; 3D file format appears to be Intel-specific.&nbsp;
Not very useful to Alpha or PowerPC users, I suppose.
<BR>
<HR WIDTH="100%">
<H2>
OpenGL driver for xmame in development</H2>
Slashdot reports that an OpenGL display driver is being worked on for xmame.
<B><FONT COLOR="#CC6600">Xmame</FONT></B>
is the MultiArcade Machine Emulator, basically a way to port lots of old
arcade style video games to X windows.&nbsp; The OpenGL driver allows you
to do vector graphics direct to the hardware, eliminating the need to render
to bitmaps first.&nbsp; It also allows easy scaling of the game (ie for
larger displays) and bilinear filtering.&nbsp; The latter allows for a
cleaner display using anti-aliased lines and lettering after scaling or
rotations.
<P><A HREF="http://www.ling.ed.ac.uk/%7Eoliphant/glmame/">http://www.ling.ed.ac.uk/%7Eoliphant/glmame/</A>
<BR>
<HR WIDTH="100%">
<TABLE BORDER=0 CELLSPACING=0 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<H2>
Crystal Space 0.11</H2>
<B><I><FONT COLOR="#CC6600">Crystal Space</FONT></I></B> is a free and
portable 6DOF 3D engine based on the portal technology. Latest version
supports colored lights, mirrors, transparent textures, reflecting surfaces,optional
BSP trees, 3D triangle mesh sprites (limited currently), mipmapping, scripting
language, static shadows, dynamic lights (but with no shadows), ...&nbsp;
<BR><A HREF="http://crystal.linuxgames.com/">http://crystal.linuxgames.com/</A>
<BR>
<HR WIDTH="100%">
<H2>
GdkRgb 0.0.7</H2>
<B><I><FONT COLOR="#CC6600">GdkRgb</FONT></I></B> is a rewrite of the image
rendering subsystem of Gtk+. Advantages over plain Gtk+ 1.0.x include higher
speed, very smooth and pretty dithered modes, and support for more displays
and visuals. It is currently checked into development versions of Gtk+
(and used in the development tree of the Gimp), but is also packaged separately
for application authors who want to maintain Gtk 1.0.x compatibility. The
programming interface is quite simple.&nbsp;
<BR><A HREF="http://www.levien.com/gdkrgb/">http://www.levien.com/gdkrgb/</A>
<BR>&nbsp;
<P>
<HR WIDTH="100%">
<H2>
Blender 1.37</H2>
Being the in-house software of a high quality animation studio, <B><I><FONT COLOR="#CC6600">Blender</FONT></I></B>
has proven to be an extremely fast and versatile design instrument. The
software has a personal touch, offering a unique approach to the world
of Three Dimensions. Use Blender to create TV commercials, to make technical
visualizations, business graphics, to do some morphing, or design user
interfaces. You can easy build and manage complex environments. The renderer
is versatile and extremely fast. All basic animation principles (curves
&amp; keys) are well implemented.&nbsp;
<P>Version 1.37 adds UV Mapping for NURBS as well as bug fixes.&nbsp;
<BR><A HREF="http://www.neogeo.nl/blender.html">http://www.neogeo.nl/blender.html</A>
<P>&nbsp;</TD>

<TD WIDTH="3" BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=3></TD>

<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<H2>
kvideogen 1.1</H2>
<B><I><FONT COLOR="#CC6600">KVideoGen</FONT></I></B> allows for easy generation
of Modelines, as used by XFree86 to determine your refresh rate, resolution
etc. It will allow you to use higher refresh rates, and different resolutions
to the 'standard' ones offered by the usual X setup utilities. Note: Read
the docs on the website. This program can damage your hardware. Handle
with care.&nbsp;
<BR><A HREF="http://www.rikkus.demon.co.uk/">http://www.rikkus.demon.co.uk/</A>
<BR>
<HR WIDTH="100%">
<H2>
PhotoShow 0.1</H2>
<B><I><FONT COLOR="#CC6600">PhotoShow</FONT></I></B> is a simple Perl script
that allows viewing, zooming, and adjustment (brightness/contrast/gamma)
of images. It also has slideshow capability and is amazingly fast thanks
to Imlib.&nbsp;
<BR><A HREF="http://www.verinet.com/~devious/PhotoShow.html">http://www.verinet.com/~devious/
PhotoShow.html</A>
<BR>
<HR WIDTH="100%">
<H2>
WebGFX - A New Gimp-based NetFu Site</H2>
This is a very nice Net-Fu site.&nbsp; The design is quite artistic although
the options available for logo generation from Log-O-Mat are a little limited
(no foreground/background color, pattern or gradient specifications permitted).&nbsp;
The Try-O-Mat is more configurable.&nbsp; The difference is probably due
mostly to the limitations in the generic logo Script-Fu scripts that the
site is using.&nbsp;
<BR><A HREF="http://www.webgfx.ch/">http://www.webgfx.ch/</A>
<BR>
<HR WIDTH="100%">
<H2>
JMK-X11-Fonts</H2>
The <B><I><FONT COLOR="#CC6600">jmk-x11-fonts</FONT></I></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.&nbsp;
<BR><A HREF="http://www.ntrnet.net/~jmknoble/fonts/jmk-x11-fonts">http://www.ntrnet.net/~jmknoble/
fonts/jmk-x11-fonts</A></TD>
</TR>
</TABLE>

<HR WIDTH="100%">
<H2>
KuickShow 0.5</H2>
<B><I><FONT COLOR="#CC6600">KuickShow</FONT></I></B> is a fast, comfortable
and easy-to-use image viewer/browser like Acdsee for the Windows environment.
It is based on Rasterman's Imlib and therefore pretty fast in showing images.
You can browse all the images in a filebrowser and display as many of them
as you like at the same time.&nbsp; KuickShow can zoom and flip images,
as well as moving an image in its window, if it is too large to fit in
it.&nbsp;&nbsp; <A HREF="http://kisdn.headlight.de/">http://kisdn.headlight.de/</A>
<BR>Editors Note:&nbsp; beware the popup for kISDN at this page, though.
<BR>
<HR WIDTH="100%">
<H2>
Serious3D Magazine hosting contest - win an new Alpha!</H2>
The bi-monthly magazine is offering 3D artists a chance to win a new Alpha
computer (preloaded with semi-useless software, but Linux users know how
to deal with that).&nbsp; They run a contest for each issue of the magazine.&nbsp;
The contest is open to anyone and is not specific to any OS or software.&nbsp;
In fact they specifically encourage users of <I>any</I> software to enter,
even if its not high end, high dollar packages.&nbsp; The only requirement
is that you be a subscriber to the magazine.&nbsp; Interesting trade-off,
but if you like the magazine you have nothing to lose.&nbsp; Take a look
at the Web site for more details:&nbsp; <A HREF="http://www.serious3d.com/winanalpha.html">http://www.serious3d.com/winanalpha.html.</A>
<P>
<HR WIDTH="100%">
<H2>
Binary versions of xfsft plug additional tool</H2>
A Linux glibc2 ia32 (Intel x86) binary of <B><I><FONT COLOR="#CC6600">xfsft</FONT></I></B>-1.0
is available.&nbsp; The binary is provided as a gzipped ELF executable
dynamically linked agains glibc2.&nbsp; The URL is:&nbsp; <A HREF="http://www.darmstadt.gmd.de/~pommnitz/xfsft-1.0-glibc.gz">http://www.darmstadt.gmd.de/~pommnitz/xfsft-1.0-glibc.gz&nbsp;</A>
To find out more about xfsft, you can read Juliusz&nbsp; Chroboczek xfsft
Web site at <A HREF="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/</A>.&nbsp;
Example screen shots of Netscape under X using TrueType fonts are available
at <A HREF="http://www.darmstadt.gmd.de/~pommnitz/xfsft.html">http://www.darmstadt.gmd.de/~pommnitz/xfsft.html</A>.
<P>Additionally, to complement xfsft, another a small tool that automatically
creates a fonts.dir file for TrueType fonts. It is available from <A HREF="http://www.darmstadt.gmd.de/~pommnitz/ttmkfdir.tar.gz">http://www.darmstadt.gmd.de/~pommnitz/ttmkfdir.tar.gz</A>.&nbsp;
The distribution package contains a <B><I><FONT COLOR="#CC6600">ttmkfdir</FONT></I></B>
binary for Linux/glibc2 (Intel).
<BR>
<HR WIDTH="100%">
<H2>
MpegTV Player 1.0.7.0</H2>
<B><I><FONT COLOR="#CC6600">MpegTV Player</FONT></I></B> is a realtime
MPEG Video+Audio player that runs on Linux and other Unix platforms. It
supports network streaming, VideoCD, and uses hardware acceleration when
supported by a XIL library (Solaris Sparc). It runs on x86, PowerPC, Alpha,
MIPS, HPPA.
<P>MpegTV Player is now able to stream MPEG's directly from a URL, and
HTTP/FTP support has been added
<BR><A HREF="http://www.mpegtv.com/download.html">http://www.mpegtv.com/download.html</A>
<BR>
<HR WIDTH="100%">
<BR><!--
		  -- Did You Know Section
		  -->
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=LEFT VALIGN=TOP NOSAVE>
<H2>
Did You Know?</H2>

<BLOCKQUOTE>...A new objects collection, called simply "POV Objects", is
now available for POV-Ray users.&nbsp; See <A HREF="http://povobjects.fsn.net/">http://povobjects.fsn.net/</A>
<P>...the September issue of Digital Video (<A HREF="http://www.dv.com">www.dv.com</A>)
has a very good article on the availability of stock images on CD.&nbsp;
These images run the gamut in prices, but one place which is recommended
is Corel's huge collection of stock photos.&nbsp; See <A HREF="http://www.corel.com/products/clipartandphotos/photos/index.htm">http://www.corel.com/products/</A>
<BR><A HREF="http://www.corel.com/products/clipartandphotos/photos/index.htm">clipartandphotos/photos/index.htm</A>
for information.&nbsp; The only problem is their web site doesn't make
it very easy to order the CDs.&nbsp; The Super 10 Packs are supposed to
offer 1000 PhotoCD images for only $39.95.&nbsp; Not bad (and you can view
all the images (with watermarks) online.&nbsp; Its just not obvious how
to order them!&nbsp; I did manage to find them at MicroCenter, but CompUSA
did not seem to carry the Super 10 Packs.&nbsp; They did have other Corel
CD image packages, however.
<P>...issue #1 of Serious 3D, which I saw at the local Barnes and Noble,
had excellent articles on texturing and modeling "creatures" (see <A HREF="http://www.serious3d.com/">http://www.serious3d.com/</A>
for their web site). However, a notable omittision from all of the creatures
was.... hair.&nbsp; They all had scales, etc. Hair is tough.&nbsp; I think
the best results (see, for example some of the furry examples in recent
IRTC rounds) come from image maps. -- from Dan Connelly on IRTC-L</BLOCKQUOTE>
</TD>

<TD ALIGN=LEFT VALIGN=TOP NOSAVE><B>New Gimp Plug-Ins announced this past
month</B>:&nbsp;
<P>I have the pleasure of announcing a new plug-in for the GIMP. It called
'cam' and allows the GIMP to read CAM files directly. Those files are the
ones stores in Casio QV-* digital cameras, that you can dump using QVplay
for instance. I am afraid this plug-in is of no use for people who do not
possess one of those little toys, though.&nbsp;
<P>URL: <A HREF="http://www.mygale.org/~jbn/qv.html">http://www.mygale.org/~jbn/qv.html</A>
<BR>Jean-Baptiste &lt;<A HREF="mailto:jbnivoit@ix.netcom.com">jbnivoit@ix.netcom.com</A>>&nbsp;
<BR>
<HR WIDTH="75%">
<BR>wind - similar to what comes with Photoshop
<BR>jigsaw - as in puzzle
<BR>diff - produces an output image based on it's two input images
<BR>duplicate - just a quick way to copy an image and all it's layers
<BR>Screenshots and more info as well as source are available at:
<BR>Nigel Wetten &lt;<A HREF="http://www.cs.nwu.edu/~nigel/gimp/shack.html">http://www.cs.nwu.edu/~nigel/gimp/shack.html</A>>
<P>
<HR WIDTH="100%">
<P><B>More Did You Know...</B>
<BR>&nbsp;
<BR>&nbsp;
<BLOCKQUOTE>...Issue #37 of Design Graphics has explanation of high-end
graphics boards and AGP vs. PCI on pg 67.&nbsp; Very good article.</BLOCKQUOTE>
</TD>
</TR>
</TABLE>
<!--
		  -- Q and A Section
		  -->
<HR WIDTH="100%">
<H2>
Q and A</H2>
<I>Q:</I>&nbsp;&nbsp; <I>I want to place a block of text with evenly single-spaced
lines using some arbitrary font onto my Gimp image.&nbsp; Rather than doing
it line by line with the Text Tool, is there an easier way?</I>
<P>A:&nbsp; Yes.&nbsp; Use the ASCII 2 Image script:
<UL>Xtns->Script-Fu->Utils->ASCII 2 Image</UL>
or
<UL>Script-Fu->Utils->ASCII 2 Image Layer</UL>
The former is available from the Toolbox, the latter from an Image Window.&nbsp;
Both of these options run a Script-Fu script that reads in a text file
and turns it into one or more layers using the font you specify.&nbsp;
If you're installation does not have this script, check the <A HREF="http://registry.gimp.org/">Plug-In
Registry.</A>
<P>Q:&nbsp; A Gimp-User mailing list member asked - <I>A few months back
someone posted a method (maybe a script) for making text look like it was
dripping, as if it had just been painted on and the paint.</I>
<P>A:&nbsp; Alan F. Ho responded:&nbsp; Perhaps the page you are thinking
of is:&nbsp; <A HREF="http://www.gimp.org/tut-disp2.html">http://www.gimp.org/tut-disp2.html</A>.&nbsp;
It's a great tutorial, though I can't seem to make my drippy text quite
as nice as JTL's.
<P>Q:&nbsp; <I>Also, if there anyone knows of more "tips" type pages beyond
the links on the Gimp page, could you let me know as well.</I>
<P>A:&nbsp; Here are a few:
<UL><A HREF="http://abattoir.cc.ndsu.nodak.edu/~nem/gimp/tuts/">http://abattoir.cc.ndsu.nodak.edu/~nem/gimp/tuts/</A>
<BR><A HREF="http://xach.dorknet.com/gimp/gimp-tips.html">http://xach.dorknet.com/gimp/gimp-tips.html</A>
<BR><A HREF="http://tigert.gimp.org/gimp/tutorials/">http://tigert.gimp.org/gimp/tutorials/</A>
<BR><A HREF="http://xach.dorknet.com/gimp/tutorials/">http://xach.dorknet.com/gimp/tutorials/</A>
<BR><A HREF="http://luthien.nuclecu.unam.mx/~federico/gimp/title-../gx/hammel/index.html">http://luthien.nuclecu.unam.mx/~federico/gimp/title-../gx/hammel/index.html</A>
<BR><A HREF="http://members.tripod.com/~shepherdess1/Gimpmanual_omslag.html">http://members.tripod.com/~shepherdess1/Gimpmanual_omslag.html
</A>-
Besides being a great manual, the GUM has "tips" too!
<BR><A HREF="http://www.cooltype.com/">http://www.cooltype.com/</A> - Some
interesting non Gimp specific tips here.
<P>Thanks to Alan for this information.</UL>

<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR>
<TD><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=3></TD>
</TR>
</TABLE>

<H2>
Reader Mail</H2>

<P><BR><A HREF="mailto:descarte@arcana.co.uk">Alligator Descartes</A> contacted
the IRTC Administrators with the following email:
<UL>Hi. I was wondering if the <A HREF="http://www.irtc.org/">IRTC</A> Admin Team
would be interested in <B>Arcane Technologies</B> giving out some personal
use licenses of <B><I><FONT COLOR="#CC6600">Magician</FONT></I></B>, our
Java OpenGL interface, as prizes for the next round of the IRTC?
<P>If this is of possible interest to you, please get in touch with me.
The appropriate blurb on Magician is at:
<UL><A HREF="http://www.arcana.co.uk/products/magician">http://www.arcana.co.uk/products/magician</A></UL>
We're beginning a fairly intensive period of POV tools conversion and building
with Magician which will be distributed as freeware in the not too distant
future.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; My reply to Alligator
was as follows:&nbsp; <I>I'm actually contacting you on a side note.&nbsp;
I write the Graphics Muse column for the Linux Gazette and maintain the
list of graphics tools for Linux/Unix systems on my web site (<A HREF="http://www.graphics-muse.org">www.graphics-muse.org</A>,
which is undergoing a major rewrite at this time).&nbsp; I was curious
if you've tried Magician on Linux platforms and, if so, what sort of success
you had with it.&nbsp; I'm still not clear on the use of the runtime and
development environs for Java on Linux, so a little info from a commercial
venture who might have some insight on this would be helpful to my readers.</I>
<P>And his reply to me follows:
<UL>Magician supports Linux both libc and glibc variants on a bunch of
the JDK ports (except JDK-1.1.6 which seems hopelessly busted in many places
). We're in the process of porting to Kaffe and the OpenGroup JVM as well
for Linux.&nbsp; MkLinux support in the near future is planned as is SparcLinux.
Basically, we support Linux.
<P>It runs pretty fast even though it's using the slightly slow Mesa OpenGL-a-like
implementation and supports hardware acceleration where Mesa supports it,
typically on Voodoo Graphics accelerators.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; I did notice the
note on portability, but Linux was specifically mentioned so I thought
I'd ask.
<UL>Yup. The identical Java code is supplied for Windows95/98/NT, Linux,
Irix, Solaris, OS/2, AIX and MacOS so far. BeOS ports will happen when
Be supply a JVM that we can write to. So, it's pretty damn portable!</UL>
<A HREF="mailto:thaths@netscape.com">Sudhakar Chandrasekharan</A> wrote:
<UL>I am a regular reader of your column in the Linux Gazette.&nbsp; I
have a tip for you about a JavaScript debugger for Linux.&nbsp; I have
it from a reliable source that starting with Netscape Navigator / Communicator
5.0 a JS debugger will be available for Linux.</UL>

<UL>I just thought I'd let you know.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; Many thanks for
the heads up on this Sudhakar!
<P><A HREF="mailto:c.caminati@selta.it">Caminati Carlo</A> wrote:
<UL>At <A HREF="http://www.graphics-muse.org/linux/lgh.html">http://www.graphics-muse.org/linux/lgh.html</A>
I found some interesting suggestions on how to add fonts to Linux
<UL>"Mount a DOS partition and use the wide array of True Type fonts available
for DOS"</UL>
I tried and I restared the Xserver but xfontsel didn't show the new fonts.&nbsp;
What do tou mean exatly with "use the wide array of True Type ..." ?</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; Under X Windows
(ie all Unix systems), the X server usually only understands how to deal
with bitmap fonts (ie Adobe Type 1 fonts).&nbsp; In order to use the True
Type fonts you need what is called a <I>font server</I>. This is a special
daemon that runs along side the X server and can tell the X server how
to render the True Type fonts (thats a oversimplification, but its about
right).&nbsp; There are 3 possible font servers that you can consider:
<OL>
<LI>
<B><FONT COLOR="#006600">xfstt</FONT></B></LI>

<LI>
<B><FONT COLOR="#006600">xfsft</FONT></B></LI>

<LI>
Caldera's font server in their commerical distribution of Linux</LI>
</OL>
The first two are freely available.&nbsp; The latter is only available
(or was available, I haven't checked on it in quite some time) with the
Caldera distributions of Linux.
<UL>Carlo:&nbsp; I have a RedHat 5.0 box</UL>
You probably want to look at xfsft or xfstt.&nbsp; There are links to these
in Septembers <I>Graphics Muse </I>column in the <B>Linux Gazette</B>:
<A HREF="http://www.linuxgazette.com">http://www.linuxgazette.com</A>
- look in the September 1998 issue for the Graphics Muse column or try
<A HREF="http://www.graphics-muse.org/muse/muse.html">http://www.graphics-muse.org/muse/muse.html
</A>-
which is where I keep my archived copies of my column.
<P>The links are in the section of the column titled <B>Did You Know</B>?.
<P>Andrew Kuchling &lt;<A HREF="mailto:akuchlin@cnri.reston.va.us">akuchlin@cnri.reston.va.us</A>>
suggested this:
<UL>Sometime, you might want to take a look at the Python Imaging Library,
maintained by Fredrik Lundh. See <A HREF="http://www.pythonware.com/library/pil/handbook/overview.htm">http://www.pythonware.com/library/pil/handbook/overview.htm</A>
for the manual.&nbsp; PIL lets you read in graphics files in a bunch of
different formats, perform various operations on them, and write them out
again.&nbsp; For example, I wrote a SANE interface for PIL, and use it
in a code snippet like this to grab an image, resize it, and write it out
to a .jpg file:
<BR>&nbsp;
<UL><TT><FONT SIZE=-1>self.camera = sane.open('dmc:/dev/camera')</FONT></TT>
<BR><TT><FONT SIZE=-1>self.camera.imagemode='Full frame'</FONT></TT>
<BR><TT><FONT SIZE=-1>self.camera.shutterspeed = 16</FONT></TT>
<P><TT><FONT SIZE=-1>...</FONT></TT>
<P><TT><FONT SIZE=-1>image = self.camera.snap()</FONT></TT>
<BR><TT><FONT SIZE=-1>image = image.resize( (self.image_width, self.image_height)
)</FONT></TT>
<P><TT><FONT SIZE=-1># Convert from 24-bit colour to an 8-bit palette</FONT></TT>
<BR><TT><FONT SIZE=-1>image = image.convert( 'P' )</FONT></TT>
<P><TT><FONT SIZE=-1># The quality factor ranges from 0 to 100, with the
default being</FONT></TT>
<BR><TT><FONT SIZE=-1># 75.&nbsp; The documentation for libjpeg says that
95 is about</FONT></TT>
<BR><TT><FONT SIZE=-1># as high as you want to go; higher values increase
the</FONT></TT>
<BR><TT><FONT SIZE=-1># image size but don't affect quality significantly.</FONT></TT>
<BR><TT><FONT SIZE=-1>image.save( 'foo.jpg', 'JPEG', quality=95)</FONT></TT></UL>
It's more powerful than gd, because you're not limited to GIF format, but
can also handle JPEG (if you have libjpeg installed), PNG, and various
other formats.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; My only objection
to doing a review of PIL is that I don't know Python.&nbsp; As it is I'm
behind the curve on languages.&nbsp; I just picked up Perl and want to
learn Java and Tcl/Tk (I'm a GUI programmer by trade, and these are tools
I hear requests for in potential jobs).&nbsp; Plus I have to learn Scheme
in order to offer tips for Gimp developers (another reason to learn Perl
and Tcl, since these also have scripting extensions for Gimp).&nbsp; Python
is Yet Another Language and its hard to find the time to learn them all.
<P>However, I'll put it on my list of things to do.&nbsp; If you'd like
to write a review for this package and have it included in the Graphics
Muse column (with full credit to you, of course) feel free to send it my
way.&nbsp; I'll make sure it gets included (I may edit it a little to make
sure it reads well, but thats about it).
<P>Michal Jaegermann &lt;<A HREF="mailto:michal@ellpspace.math.ualberta.ca">michal@ellpspace.math.ualberta.ca</A>>
wrote to take a minor issue with last months Perl advice in the Muse:
<UL>I have a small issue with your advice on Perl which you dish out in
your Graphics Muse in issue 32 of <A HREF="http://www.linuxgazette.com">Linux
Gazette</A>.&nbsp; You write:
<BR>&nbsp;
<UL>"The ampersand is important - you should always prefix calls to your
subroutines with the ampersand.&nbsp; Although things may work properly
if you don't, proper Perl syntax suggests the results can be unexpected
if you don't use the ampersand."</UL>
Quite to the contrary!&nbsp; The above was indeed valid for an obsolete
Perl 4.&nbsp; Nowadays this is straight from 'man perlstyle' which undoubtely
you have installed on your machine and which is a worthwhile reading:
<BR>&nbsp;
<UL>Call your subroutines as if they were functions or list operators to
avoid excessive ampersands and parentheses.</UL>
Things not only "may work properly" without this ampersand but are guaranteed
to work if you either defined or declared your subroutines before the first
use and ampersands are really retained for a backwards compatibility.&nbsp;
Prevailing practice among people who really know Perl is to avoid spurious
ampesands to even greater degree than the quoted documentation may suggest.&nbsp;
See, for example, perl tutorials on Randal Schwartz web page (<A HREF="http://www.stonehenge.com">www.stonehenge.com</A>).
This implies that if you do not want/can't define your subroutines early
then you <B><I>should</I></B> declare them (and "use strict").&nbsp; One
reason is that if you would happen to reimplement your subroutine as a
function provided by a new module you would be hunting for those pesky
ampersands all over the place.
<P>Nobody will run you out of town for an excessive use of punctuation
in a Perl code - if these are your private kinks.&nbsp; But claims in a
widely published material that one <B><I>should</I></B> do that, instead
of presenting this as an unhealthy personal habit, is a totally different
matter.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; You're obviously
more well versed in Perl than I, so I bow to your recommendations here.&nbsp;
I had wondered why the ampersands didn't seem necessary (I had left them
off initially for some routines which were not previously declared).&nbsp;
I also thought they seemed rather unwiedly and wondered why a language
such as Perl, which I am quite fond of after my first few weeks of working
with it, would use such a syntax.&nbsp; Your response clarifies the situation
for me.&nbsp; Many thanks for your letter.
<P>However, I would like to address a few points about your reply.&nbsp;
First, I don't have the perl documentation installed.&nbsp; I did install
Perl 5 binaries at one point, but I don't (currently) run Perl at home
- I run it on my Web server, whose Perl installation is handled by the
commercial Web server provider (<A HREF="http://www.vservers.com">vservers.com</A>).&nbsp;
I ran "man perlstyle" but it died trying to display the page for unknown
reasons.&nbsp; Same thing with any of the man pages I tried for Perl on
that system.&nbsp; So my sources at the time the article was written were
the two documents I listed:&nbsp; <B><U>Programming Perl</U></B> by Wall
&amp; Schwartz and the <B><U>Official Guide to Programming with CGI.pm</U></B>
by Stein.&nbsp; The former is where I got the information about using ampersands
for subroutines.&nbsp; Perhaps this is an outdated document - although
I had just purchased it from Borders Books, its print date appears to be
1992!&nbsp; Still, its all I had.&nbsp; Yes, the Perl archives have documenation
too, but I also have deadlines.&nbsp; The problem with writing articles
(I've slowly discovered) is choosing between reaching a certain level of
expertise and actually getting something out to my readers.&nbsp; In this
case, I just happened to be working with Perl, so thats how I chose to
write about Perl.&nbsp; In fact, its pretty much how every months articles
get written.&nbsp; Whatever I happened to be working on that month.&nbsp;
But it limits how much of an expert I can become before I have to start
writing.&nbsp; Its not a very good excuse, but it is the reality of trying
to do this column.&nbsp; Writing is much more work than I had expected.
<P>But, "unhealthy"?&nbsp; Hmmm.&nbsp; The excessive use of ampersands
doesn't seem to have affected my current bench press max....
<P>Douglass Turner &lt;<A HREF="mailto:turner@redballpro.com">turner@redballpro.com</A>>
wrote:
<BLOCKQUOTE>I've recently started reading you "Graphics Muse" column.&nbsp;
Lots of good stuff. I'm a 3D graphics guy and I'm looking for code to read/write
3D models into/outof the rendering system I wrote. Have you any idea where
I should be looking?</BLOCKQUOTE>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; Take a look at
Keith Rule's text <B><U>3D Graphic File Formats: A Programmers Reference</U></B>.&nbsp;
This is not a Unix package/text, but he has source code for reading and
writing many file formats.&nbsp; He says in the book (last time I read
it, which was some time back) that it hasn't been ported to Unix but he
doesn't know why it wouldn't port easily.&nbsp; You can find a little more
info on the text on his <A HREF="http://www.europa.com/~keithr/">Web site</A>.
<BR>
<HR WIDTH="100%">
<BR><A NAME="webwonderings"></A>
<BR><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=57 WIDTH=246>
<H2>
Visual DHTML from Netscape</H2>
Last month I came across an announcement that Netscape had released a graphical-based
interface for designing Dynamic HTML, otherwise known as DHTML.&nbsp; DHTML
is the next phase of the evolution of HTML and allows for more animated
and configurable Web pages using a programmatic interface (as opposed to
using, for example, the animation features of the GIF image file format).&nbsp;
With DHTML and JavaScript you can implement such features as drag and drop,
menus and scrolling text subwindows.&nbsp; Netscape's tool for supporting
DHTML is known as <B><I><FONT COLOR="#CC6600">VisualDHTML</FONT></I></B>.&nbsp;
Although not supported officially, I thought it would be interesting to
explore the features and problems of this new product as a way of getting
a little more exposure to one of the Web's latest markup languages.
<P><B>Where do you get it?</B>
<P>VisualDHTML, which I'll shorten to VDHTML for this article, is a actually
a tool written in entirely in DHTML.&nbsp; It is available from <A HREF="http://developer.netscape.com/docs/examples/dynhtml/visual/index.html">Netscape's
Web site</A>.&nbsp; Since it is written in a form of HTML you can actually
run it across the network, but you may find it more convenient to download
the complete package from their web site to your local hard disk.&nbsp;
In the tests I ran I found that the performance was significantly better
running locally.
<P>The download page for VDHTML is the same as the index page in the package
you download.&nbsp; The download file is a zip file which you can save
to any local directory.&nbsp; Use the Linux (or equivalent) "unzip" command
to unpackage the files, which will be placed in a newly created directory
called "visual".
<P>The only prerequsite for running VDHTML is that you have a browser that
supports JavaScript 1.2.&nbsp; That fairly well eliminates all browsers
except Netscape Communicator 4.06 or the latest 4.5 beta releases of Communicator.&nbsp;
If you don't have one of these, you may want to skip the rest of this article.&nbsp;
Also, although you are supposed to be able to run this on your local system,
attempting to run the application without being connected to the Net or
by using local URL's seemed to cause unexpected behaviours:&nbsp; drag
and drop no longer worked, widgets did not become visible in the preview
window, etc.&nbsp; I suggest, during your experimentation, that you only
run this early version while connected to the Net, if possible.
<P><B>What does it look like?</B>
<P>Once you've unpacked the package you simply need to open the index.html
file to get started.&nbsp; For example, if you unpacked the zip file in
the /tmp directory you can type the following in the Location field of
the Netscape browser:
<BLOCKQUOTE><TT><FONT SIZE=-1>file:/tmp/visual/index.html</FONT></TT></BLOCKQUOTE>
The "file:" prefix is not actually necessary, but if you're unfamiliar
with accessing files this way you might use it till you get used to where
you're headed with this sort of URL.&nbsp; On the index page you'll find
a link to <FONT COLOR="#006600">Launch Visual DHTML</FONT>.&nbsp; Just
click on this and a small window will open announcing that the application
is starting.&nbsp; For the sake of this article we'll refer to this window
as the VDHTML Main Window.&nbsp; Once the page starts it looks pretty much
like any other application.&nbsp; However, its really just another Web
page!&nbsp; This is the first bit of magic to learning about DHTML.&nbsp;
The pages they create can look like real applications.&nbsp; Note that
the VDHTML page can take a while to load, even from a local hard drive.
<P>Before we get too far I should note that VDHTML is relatively buggy
at this point.&nbsp; If you use it just right it works fine, but straying
from the straight and narrow (ie not using it just right) can cause Netscape
to crash.&nbsp; I'll point out the caveats that I know about as I go.
<BR>&nbsp;
<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/vdhtml-initial.jpg" VSPACE=5 HEIGHT=375 WIDTH=460>
<BR><B>Figure 1 </B>- The Visual DHTML Main Window</TD>
</TR>
</TABLE></CENTER>
The New Page dialog opens when you start the application for the first
time.&nbsp; Its not obvious, but that dialog lives within the VDHTML window.&nbsp;
It cannot be moved outside the borders of that window.&nbsp; Figure 2 shows
what happens when you try to do so.
<BR>&nbsp;
<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/vdhtml-initial-2.jpg" VSPACE=5 HEIGHT=373 WIDTH=458>
<BR><B>Figure 2</B> - Dialogs don't exist outside of the application window</TD>
</TR>
</TABLE></CENTER>
The four options in the New Page dialog allow you to select the size of
a new browser window to open.&nbsp; This new window will be used to preview
your DHTML page and allow you to make edits by dragging and dropping DHTML
components around the preview.&nbsp; Of the four options provided, the
Normal Window will probably be the most useful.&nbsp; Its window is about
3/4 the size of my display, which gives it a resolution of roughly 950x750
pixels.&nbsp; The Normal and Full Screen windows provide the familiar menu
bars you normally see in your Netscape browser windows.&nbsp; The Kiosk
window is smaller than these and does not provide those menus.&nbsp; That
means to close the Kiosk window you have to use the window manager Close
option.&nbsp; Be certain you use "Close" and not "Destroy" (assuming you
use a flavor of FVWM) since Destroy will exit Netscape completely and you'll
have to start over.
<P>The Desktop option opens a window that will stay underneath all your
other windows and acts like an interactive background image, except that
its not "sticky", meaning it doesn't follow you around to other desktops
(again, assuming you have a window manager like FVWM or CDE/mwm that allows
multiple virtual desktops).
<P>Once you've opened your New Window you are ready to start adding DHTML
components to it.&nbsp; VDHTML comes with a set of predefined widgets that
you can add to your page.&nbsp; Clicking on the Widgets icon in the menu
bar of the Main Window will open the Widgets dialog (see Figure 3).&nbsp;
Note that you may need to click and hold the left mouse button over the
Widgets icon longer than you might normally in order to get the dialog
to open.&nbsp; At least I did on my system.&nbsp; Also, when you click
on a widget name in the dialog you need to hold the mouse button down until
after the dialog is closed.&nbsp; Then release the mouse button. If you
don't do it in this order the configurable parameters for the widget will
not be shown and you won't get the widget in the preview window.&nbsp;
Clicking in the Widgets dialog and releasing the mouse button before the
dialog closes will simply close the dialog.
<P><IMG SRC="./gx/hammel/vdhtml-widget-dialog.jpg" HSPACE=10 VSPACE=5 HEIGHT=194 WIDTH=323 ALIGN=LEFT>Ok,
so you've got the Widgets dialog opened.&nbsp; Notice that the dialog is
actually labeled "Components Palette" - a bit of inconsistancy from Netscape,
but thats to be expected with any first release of a product.&nbsp; The
available widgets are listed in a table, below a set of three options which
act something like tabs in a notebook widget.&nbsp; The first tab is the
widgets tab, which provides components like menus and buttons and clocks.&nbsp;
The next tab is for setting specific HTML tags.&nbsp; The last tab is for
setting link properties.
<P><I>Bug:&nbsp; don't try to access the Tags option in the Widgets dialog
without a preview window open.&nbsp; Doing so will crash netscape.&nbsp;
In fact, the widgets dialog in general seems to cause Netscape crashes
at random.</I>
<P>The available widgets include some unusual components, such as the drawer
widget.&nbsp; This option creates what appears to be a small button that,
when pressed, opens a drop down menu.&nbsp; This button can be placed anywhere
in the page but seems to want to be anchored only to window edges.&nbsp;
I'm not sure if thats intentional or a bug in VDHTML.&nbsp; Also, the default
image for the drawer (the small button) can be changed to any image you
want when you configure the widget.&nbsp; Figure 4 shows the configuration
options for the drawer widget.
<BR>&nbsp;
<CENTER><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=1 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/vdhtml-drawer-config.jpg" VSPACE=5 HEIGHT=373 WIDTH=458>
<BR><B>Figure 4</B> - Configurable options for the Drawer Widget</TD>
</TR>
</TABLE></CENTER>
Any of the components you add can be dragged around the preview window
(except the marqee which must be positioned using its configurable parameters
before its added).&nbsp; When you drag a component to a new location it
causes the preview page to be reloaded.&nbsp; Remember - that page is a
form of HTML, so all the links have to be resolved again.&nbsp; If those
links are across a network (as they are likely to be if you followed my
suggestion of trying this initial version only while connected to the Net)
then page reloads may take a little while.&nbsp; Be patient.
<BR>&nbsp;
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD VALIGN=TOP NOSAVE>One exception to dragging is the marquee widget.&nbsp;
This widget creates a window that drops down (or comes in from the sides
or up from the bottom of the browser window) with an image or text, sort
of like an animated menu.&nbsp; But you can't drag marquees in the preview
window.&nbsp; You have to specify the direction from which the marquee
will enter the browser when you create it by using the configurable options.&nbsp;
Apparently the marquee will always be on the left side of the preview window
but as always you can edit the source later to move it to another location
and have it enter the browser appropriately from any point.
<P><I>Bug:&nbsp; While experimenting with the various widgets I discovered
that they often didn't perform as expected in the preview window.&nbsp;
Sometimes I could open a drawer, for example, but not close it.&nbsp; Buttons
would post a menu but then I couldn't clear it.&nbsp; Its clear that the
widgets functionality and their interaction within the preview window are
still to be worked out.</I>
<P>With all widgets the VDHTML Main Window offers configurable parameters.&nbsp;
The defaults for those options which require a URL point to Netscape's
site.&nbsp; This isn't a problem but you should keep it in mind if you
take the default option values.&nbsp; If you decide to use the defaults
(remember:&nbsp; be online if you do so or VHDTML might crash Netscape!)
you can edit the HTML document by hand later and use your own URLs.</TD>

<TD ALIGN=CENTER VALIGN=TOP WIDTH="165" NOSAVE><IMG SRC="./gx/hammel/vdhtml-marqee.jpg" HSPACE=10 HEIGHT=343 WIDTH=148>
<BR><B>Figure 5</B> - Default Marquee&nbsp;
<BR>Widget</TD>
</TR>
</TABLE>

<CENTER>&lt;<A HREF="./gm-vdhtml-review.html">More</A>></CENTER>

<HR WIDTH="100%">
<P><A NAME="musings"></A>
<BR>&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT></TD>
</TR>
</TABLE>

<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>
</TABLE>

<H2>
<A NAME="xserver"></A>Working with X Input and Wacom Tablets</H2>

<TABLE BORDER=0 CELLSPACING=5 CELLPADDING=0 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD VALIGN=TOP ROWSPAN="3" WIDTH="50%" NOSAVE><B><I>What is X Input?</I></B>
<P>To quote from the <A HREF="http://www.gtk.org/~otaylor/xinput/howto/XInput-HOWTO.html">X
Input Howto</A>:
<BLOCKQUOTE><FONT FACE="Arial,Helvetica"><FONT SIZE=-1>The XInput extension
is an extension to X to allow the use of input devices beyond the standard
mouse and keyboard. The extension supports a wide range of devices, including
graphics tablets, touch-screens, joysticks, and dial-boxes. The most common
use is probably for graphics tablets.</FONT></FONT></BLOCKQUOTE>
For many readers of the Muse, X Input is how you'll want to interface with
the <A HREF="http://www.gimp.org">Gimp</A>.&nbsp; Outside of the Gimp there
are only a few other tools that currently make use of the X Input extension.&nbsp;
However, as graphics tools on Linux mature, there will be a much greater
need for these sorts of extra input devices.&nbsp; Later, after we cover
some configuration and testing issues, we'll restrict our application discussion
to the two tools you are most likely to use with X Input:&nbsp; Gimp and
<A HREF="http://www.gimp.org/~otaylor/gsumi/index.html">gsumi</A>.
<P><B><I>What X servers support X Input?</I></B>
<P>X Input is reported to be supported by all 3 of the major X server vendors:
<A HREF="http://www.xfree86.org">XFree86</A> (which includes SuSE since
they work so closely in their X server development), <A HREF="http://www.xig.com">Xi
Graphics</A>, and <A HREF="http://www.metrolink.com">MetroLink</A>.&nbsp;
Xi Graphics sent me their latest server, 4.1.2, to try for this article.&nbsp;
I also downloaded the 3.3.2 XF86_SVGA server for use with my Matrox Mystique.&nbsp;
I neglected to contact MetroLink in time to ask for a copy of their server,
unfortunately.&nbsp; An email I received from MetroLink back in March stated
that their 4.3 server includes support for dynamically loadable X Input
driver modules.&nbsp; This includes Elo Graphics, Carroll, Micro Touch
and Lucas/Deeco touch screens.&nbsp; They also mentioned plans for support
of Wacom tablets and 3D input devices such as the Space Orb but I don't
know if this support has been released yet or not.&nbsp; I also don't have
any information on how devices would be configured to work with their X
Input drivers.
<P>In testing the two servers I did have, I was successful in getting only
one of them to work, XFree86's XF86_SVGA server.&nbsp; I have to thank
<A HREF="mailto:otaylor@redhat.com">Owen
Taylor</A> for his helpful hints and suggestions in getting that server
up and running with X Input.&nbsp; Most of the information I'm going to
provide came with clarifications from Owen.
<P>The Xi Graphics server does list X Input as a supported extension, both
in the documentation and from the xdpyinfo program.&nbsp; However, there
is no information available on how to get that extension to recognize and
work with any particular devices.&nbsp; It may be possible to use the gxid
daemon, a daemon program which comes with the Gtk+ source distribution,
to work with this server but I was unsuccessful in doing so.&nbsp; I contacted
Xi Graphics about this and the last I heard they are still looking into
it.&nbsp; I haven't heard if they had any more success than I did.
<P>Since I was only able to get one server to work with X Input, the rest
of this article will focus on that server.&nbsp; If I get feedback from
any one, vendors or users, on getting the other two servers to work with
X Input I'll write up an update here in the Muse.
<P><B><I>What devices are supported?</I></B>
<P>The XFree86 support of X Input includes drivers for the following devices:
<UL>
<LI>
Wacom devices:</LI>

<UL>
<LI>
<B><FONT COLOR="#006600">ARTZ II</FONT></B>; in Europe this is currently
known as the UltraPad, but the older tablets also called UltraPad (but
a different tablet, apparently) only partially work.</LI>

<LI>
<B><FONT COLOR="#006600">ArtPad II</FONT></B></LI>

<LI>
<FONT COLOR="#006600"><B>PenPartner</B>,</FONT> but only with 3.3.2 servers
and modules</LI>

<LI>
<B><FONT COLOR="#006600">PL300</FONT></B>, which is the combined LCD screen
and tablet</LI>
</UL>
</UL>

<UL>
<LI>
Summagraphics, which is actually CalComp (see www.summagraphics.com)</LI>

<UL>
<LI>
Only tablet specifically listed was the <B><FONT COLOR="#006600">DrawingSlate
II</FONT></B>.&nbsp; This was from a guy who patched the Summagraphics
driver to work with this CalComp tablet.&nbsp; I didn't find any other
information regarding other specific tablets.</LI>
</UL>
</UL>

<UL>
<LI>
Joysticks are supported but I didn't try this nor do I have any information
on what joysticks are known to work.</LI>
</UL>
The new Wacom <B><FONT COLOR="#006600">Intuos</FONT></B> line, which is
Wacom's latest line of tablets, is not yet supported.&nbsp; It is unclear,
according to Owen, whether or not drivers will become available for these
devices.
<P><B><I>Requirements for making use of the XFree86 X Input support</I></B>
<P>I have a Matrox Mystique card with 4Mb of memory which I've been using
for about 2 years now.&nbsp; This card is still on the market and will
cost you roughly $100US or less depending on where you purchase it.&nbsp;&nbsp;
Along with this I'm using a Wacom PenPartner, a 4"x5" tablet that sells
for about $79US.&nbsp; This is the low end tablet from Wacom.
<P>The Matrox card is supported by the XF86_SVGA server (see the Resources
section at the end of this article).&nbsp; X Input support in XFree86 has
been available in since the 3.3.1 release (at least, perhaps longer).&nbsp;
Most Linux users will probably have either the 3.3.1 or the latest 3.3.2
servers if they use any distribution that is less than 2 years old.
<CENTER>
<P><A HREF="#next-column">-Top of next column-</A></CENTER>
</TD>

<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>

<TD WIDTH="49%" NOSAVE><LH><A NAME="next-column"></A><B>No other musings
this month.</B></LH></TD>
</TR>

<TR NOSAVE>
<TD BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>

<TR NOSAVE>
<TD VALIGN=TOP NOSAVE>Along with the servers you also need to make use
of one or more loadable modules.&nbsp; If you are like me and use the PenPartner
tablet then you need to make sure you have the 3.3.2 version of the xf86wacom.so
module.&nbsp; The 3.3.1 version of this module does not support the PenPartner
but should work fine for other Wacom tablets.
<P>If you have the 3.3.1 version of XFree86, you can download the particular
server you need and the X3323bin.tgz file, which contains the binary versions
of the 3.3.2 modules (plus other tools).&nbsp; You can find links to these
packages from the XFree86 web site.&nbsp; You might wonder if you can run
your older 3.3.1 libraries with an the newer 3.3.2 servers and modules.&nbsp;
The answer is yes, you can.&nbsp; You don't have to update all your libraries,
development tools, and X applications (the tools under /usr/X11R6/bin)
although you can if you want a full 3.3.2 update.
<P>Along with the server and modules there are a couple of other tools
you'll want to make sure you have:
<UL>
<LI>
Configuration tools:</LI>

<UL>
<LI>
<A HREF="ftp://ftp.x.org/contrib/utilities/xinput-1.2.tar.gz">xinput</A></LI>

<LI>
xsetpointer</LI>
</UL>

<LI>
Graphics tools:</LI>

<UL>
<LI>
gsumi</LI>

<LI>
Gimp</LI>
</UL>
</UL>
The xinput program shouldn't be confused with the generic term X Input.&nbsp;
The program is a little tool written to set various parameters for the
device you are using with the X Input server extension.&nbsp; This includes
things like mapping pen buttons to mouse buttons and so forth.&nbsp; The
xsetpointer program is used to set the pointer to a given device but using
the configuration we will be using in this article you shouldn't need to
do this as both pen and mouse should work as your pointer device at all
times.
<P><B><I>Configuring the X server and hardware</I></B>
<P>In order to make use of the X Input extension you need to tell the X
server about how you want it configured and what driver to load for the
device you will be using.&nbsp; XFree86's configuration file, XF86Config,
is located under the directory /etc/X11.&nbsp; Although you can use the
graphical setup tool XF86Setup for most options, you can't use it to configure
X Input.&nbsp; You'll need to edit the configuration file by hand.
<P>The first thing you need to know about is which modules you'll need.&nbsp;
Under /usr/X11R6/lib/modules you will find the X Input modules.&nbsp; For
Wacom tablets you'll be using the xf86Wacom.so module.&nbsp; Similarly,
SummaGraphics tablet users will want to use the xf86Summa.so modules.&nbsp;
There are also modules for Elo Graphics devices (xf86Elo.so) and joysticks
(xf86Jstk.so).
<P>To configure the module for use with the server, edit the XF86Config
file and add the following lines:
<BLOCKQUOTE><TT><FONT SIZE=-1>Section "Module"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; Load "xf86Wacom.so"</FONT></TT>
<BR><TT><FONT SIZE=-1>EndSection</FONT></TT></BLOCKQUOTE>

<P><BR>Substitute the module of choice, of course.&nbsp; These lines can
go anywhere, I believe, but I placed them immediately after the Pointer
section.&nbsp; Next you need to add the section which defines the devices
you'll be using.&nbsp; According to Owen Taylor's X Input Howto there is
a simple configuration and a more complete configuration.&nbsp; We'll skip
the simple version since its just a subset of the complete version and
Owen discusses it in his Howto quite well.
<P>The text to add looks like the following:
<BLOCKQUOTE><TT><FONT SIZE=-1>Section "Xinput"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; SubSection "WacomStylus"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port "/dev/ttyS1"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeviceName "Wacom"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mode Absolute</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Suppress 17</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; EndSubSection</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; SubSection "WacomStylus"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port "/dev/ttyS1"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeviceName "WacomCore"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mode Absolute</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AlwaysCore</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Suppress 17</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; EndSubSection</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; SubSection "WacomEraser"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port "/dev/ttyS1"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mode Absolute</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Suppress 17</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; EndSubSection</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; SubSection "WacomEraser"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port "/dev/ttyS1"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeviceName "EraserCore"</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mode Absolute</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AlwaysCore</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Suppress 17</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; EndSubSection</FONT></TT>
<BR><TT><FONT SIZE=-1>EndSection</FONT></TT></BLOCKQUOTE>
The 4 SubSections define different devices to X Input.&nbsp; You can see
these listed (after you start the server) by running <TT><FONT SIZE=-1>xsetpointer
-l.</FONT></TT>&nbsp; I'm not completely certain why you have to have two
entries for each device but assume that the first entry is used by applications
and the other entry is used to allow the tablet pen to be used as your
regular pointing device.
<CENTER>
<P>&lt;<A HREF="./gm-xinput.html">More</A>></CENTER>
</TD>
</TR>
</TABLE>

<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>
</TABLE>

<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/resources.gif" ALT="Resources" HEIGHT=57 WIDTH=246 ALIGN=LEFT></TD>
</TR>
</TABLE>
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.
<BR>&nbsp;
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE>Online Magazines and News sources&nbsp;
<BR><A HREF="http://www.news.com/">C|Net Tech News</A>
<BR><A HREF="http://www.eklektix.com/lwn/">Linux Weekly News</A>
<BR><A HREF="http://slashdot.org/">Slashdot.org</A>
<BR><A HREF="http://www.amazon.com/exec/obidos/cache/browse/computers---internet/platforms/operating-systems/unix/linux/list/002-3950800-3290041">Amazon.com's
Linux Book Section</A>
<P>General Web Sites&nbsp;
<BR><A HREF="http://www.graphics-muse.org/linux/lgh.html">Linux Graphics
mini-Howto</A>
<BR><A HREF="http://www.graphics-muse.org/ugu/ugu.html">Unix Graphics Utilities</A>
<BR><A HREF="http://www.bright.net/~dlphilp/linux_soundapps.html">Linux
Sound/Midi Page</A>
<P>Some of the Mailing Lists and Newsgroups I keep an eye on and where
I get much of the information in this column&nbsp;
<BR><A HREF="http://www.gimp.org">The Gimp User and Gimp Developer Mailing
Lists</A>.&nbsp;
<BR><A HREF="http://www.irtc.org">The IRTC-L discussion list</A>
<BR><A HREF="news:comp.graphics.rendering.raytracing">comp.graphics.rendering.raytracing</A>
<BR><A HREF="news:comp.graphics.rendering.renderman">comp.graphics.rendering.renderman</A>
<BR><A HREF="news:comp.graphics.api.opengl">comp.graphics.api.opengl</A>
<BR><A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A></TD>

<TD><IMG SRC="../gx/hammel/gmuse.jpg" HSPACE=10 HEIGHT=270 WIDTH=190></TD>
</TR>
</TABLE>
<A NAME="future"></A>
<H2>
Future Directions</H2>
Next month:
<UL>
<LI>
Off the shelf video cards:&nbsp; whats popular, cheap and supported by
Linux.</LI>

<LI>
My ramblings on having worked on the Muse for 2 years.&nbsp; Yes, next
month is my 2 year anniversary with the Muse.&nbsp; It just may be the
longest relationship I've ever wanted to keep stable!</LI>
</UL>
<A HREF="mailto:mjhammel@graphics-muse.org">Let me know what you'd like
to hear about!</A>
<P>
<HR WIDTH="100%">
<DIV ALIGN=right><FONT SIZE=-1>&copy; 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></DIV>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Michael J. Hammel <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./burtch.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./schweizer.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">Heroes and Friends -- Linux Comes of Age</font></H1>
<H4>By <a href="mailto:schweiz@po.harenet.or.jp">Jim Schweizer</a></H4>
</center>
<P> <HR> <P>  

<DIV ALIGN=center>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH=70%>
<TR><TD align=center BGCOLOR="#FAEBD7">
   "I've found only two things that last 'til the end<BR>
    One is your heroes, the other's your friends."
</TD></TR>
<TR><TD ALIGN=right BGCOLOR="#FAEBD7">
                           -- Randy Travis/Don Schlitz
</TD></TR></TABLE>
</DIV>
<P>Could it be that one of the reasons the Linux phenomena is so strong is that 
it fulfills the above? Quick, without thinking, name one or two people
you really look up to. Chances are, since you're using Linux, the names of
Torvalds, Raymond or Stallman may have flashed through your mind.</P>

<P>As members of the Linux community, we have heroes. We have people 
we can look up to. We have heroes we can look up to and still disagree with. 
Can we say the same of our physical communities, our companies, our nations?</P>

<P>And what of friends? Think about the mailing lists you belong to, the 
news groups you read, and the Linux users group you belong to - who do
you turn to when you need advice about your latest upgrade?</P>

<P>Does commercial software and Microsoft give you the same feeling? Can they
compete with the feeling you just had while thinking about what Linus has 
wrought and the last helpful Linux-related email you received?</P>

<P>Community! That's what this is really all about. It's about having
the best operating system, and the best software and the best support. 
It's about having the best. Period. And we know the best is still to come.</P>

<P>The question is often asked, "Will Linux be able to defeat the
marketing muscle of Microsoft?" We already know the answer. And the
answer is being provided by the growing number of people who
use Linux as an everyday solution to their own needs.</P>

<P>Will there be an 'office suite'? Probably. But that's not what brought us to 
Linux in the first place, is it? So, why are you here?</P> 

<P>What makes Linux really special is the people you never hear about
in the press. The people who patch software and give it back to the
community - you all know someone who's done this, or 
helped you with a shell script, or guided you as you learned more about Linux. 
You also know someone who is maintaining a Linux site, writing a driver or
volunteering in some way to bring Linux to fruition. Linux is what it is because
thousands of people, every day, contribute in small ways to Linux's success.</P>

<P>Heroes help you see a goal worth attaining. Your friends help you get there.
When someone new to Linux asks a question, what they are really asking for is a
friend's advice. Be there for them.</P>

<P>So, the next time some one asks you why you are using Linux, smile
and think, "That's how it goes, with heroes and friends."</P>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Jim Schweizer <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./jenkins2.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: X Configuration</font></H1>
<H4>By <a href="mailto:rjenkins@unicom.net">Ron Jenkins</a></H4>
</center>
<P> <HR> <P>  
Copyright &reg; 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>The author welcomes corrections and suggestions. He can be reached by
electronic mail at
rjenkins@unicom.net.
<P> <HR> <P>  <center>
<H3><font color="maroon">Part Two: X configuration</font></H3> </center>
Welcome to the second installment of the series. In this installment,
you will configure your X server,
choose a Window Manager (WM,) and learn a few things about how the
X system works. Don't worry, it's
not as hard as you've heard, and can even be a great deal of fun, so
LET'S GET GRAPHICAL!
<P>In this installment, I will cover the following topics:
<ol>
<li>A brief introduction to the X windowing system
<li>Supported Hardware
<li>Unsupported Hardware
<li>Gathering Information about your hardware
<li>Safety concerns and precautions
<li>Starting the configuration program
<li>Configuration of the mouse under X
<li>Configuration of your video card
<li>Configuration of your monitor
<li>Testing your configuration
<li>Customization tips and tricks
<li>Troubleshooting your configuration
<li>Resources for further information
</ol>
<P>While the steps needed to configure the X system are fairly standardized,
due to some differences and
peculiarities between the Slackware 3.5 and RedHat 5.1 versions of
Linux, where necessary, I will
distinguish between the steps to be taken to accomplish a given task
on each distribution.
<P> <HR> <P> 
<H4><font color="maroon">A brief introduction to the X windowing system</font></H4> 
This document will cover the configuration of the X windowing system,
XFree86 version 3.3.2-2. This is
the version that ships with both RedHat 5.1 and Slackware 3.5. If you
are using a different version of
XFree86, your mileage may vary, although many of the steps will remain
the same.
<P>Unlike Windows based systems, the X windowing system is composed primarily
of two separate and
distinct components, the X Server, and the Window Manager.
<P>The X Server is the interface between the hardware and the Window Manager.
This is somewhat
analogous, although not entirely, to the "video driver" in Windows.
In addition to servicing hardware
requests, it also performs several other important functions, such
as managing all X connections to the
machine, both local and remote.
<P>One of the advantages of a Unix or Linux system is the fact that it
was built from the ground up to be a
multi-user system.
<P>This gives a Unix or Linux system the ability to service, or "host"
many users, both locally through the use
of TTY connections or virtual terminals, or remotely through socket
based communication using a variety
of protocols.
<P>For an overview of the concept of remote X sessions, see my article
in the September Issue of the Linux
Gazette.
<P>It is important to note that the aforementioned X Server, as well as
most of the functions it performs, occur
in the background, and are functionally transparent to the end user.
In short, it's a busy little beaver!
<P>The second component of the X windowing system is the Window Manager.
This is the element of the X
system that comprises the portion of the Graphical User Interface that
you interact with. The Window
Manager is responsible for the look and feel of your desktop; as well
the front-end interface to the
commands and programs you run.
<P>There are many Window Managers available for Linux, and each person
will have their favorite. It will be
up to you to decide which one best fits your needs and preferences.
<P>Since both distributions default to FVWM95, I will confine myself to
this Window Manager for the
purposes of this introductory document. For further information on
some of the many other Window
Managers available, consult the resources section.
<P> <HR> <P> 
<H4><font color="maroon">Supported Hardware</font></H4>
<font color="navy">Video Cards:</font><BR> 
(The following information is excerpted from the Xfree86 3.3.2 documentation.)
This documentation can be found in /var/X11R6/lib/docs/README.
<P> 
At this time, XFree86 3.3.2 supports the following chipsets:
<P>Ark Logic<BR> 
ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT
<P>Alliance<BR> 
AP6422, AT24
<P>ATI<BR> 
18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3,
68800-6, 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E,
88800GX-F, 88800CX, 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3,
264GT-B, 264GT3 (this list includes the Mach8, Mach32, Mach64, 3D
Rage, 3D Rage II and 3D Rage Pro)
<P>Avance Logic<BR> 
ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401
<P>Chips &amp; Technologies<BR> 
65520, 65530, 65540, 65545, 65520, 65530, 65540, 65545, 65546,
65548, 65550, 65554, 65555, 68554, 64200, 64300
<P>Cirrus Logic<BR> 
CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429,
CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462,
CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215, CLGD6225,
CLGD6235, CLGD6410, CLGD6412, CLGD6420, CLGD6440, CLGD7541(*),
CLGD7543(*), CLGD7548(*), CLGD7555(*)
<P>Digital Equipment Corporation<BR> 
TGA
<P>Compaq<BR> 
AVGA
<P>Genoa<BR> 
GVGA
<P>IBM<BR> 
8514/A (and true clones), XGA-2
<P>IIT<BR> 
AGX-014, AGX-015, AGX-016
<P>Matrox<BR> 
MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220),
MGA2164W (Millennium II PCI and AGP)
<P>MX<BR> 
MX68000(*), MX680010(*)
<P>NCR<BR> 
77C22(*), 77C22E(*), 77C22E+(*)
<P>Number Nine<BR> 
I128 (series I and II), Revolution 3D (T2R)
<P>NVidia/SGS Thomson<BR> 
NV1, STG2000, RIVA128
<P>OAK<BR> 
OTI067, OTI077, OTI087
<P>RealTek<BR> 
RTG3106(*)
<P>S3<BR> 
86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964,
86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968,
86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260
<P>SiS<BR> 
86C201, 86C202, 86C205
<P>Tseng<BR> 
ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000,
ET6100
<P>Trident<BR> 
TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000, TVGA9000i,
TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi, TVGA9420,
TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi, TGUI9680, Pro-
Vidia 9682, ProVidia 9685(*), Cyber 9382, Cyber 9385, Cyber 9388,
3DImage975(PCI), 3DImage985(AGP), Cyber 9397, Cyber 9520
<P>Video 7/Headland Technologies<BR> 
HT216-32(*)
<P>Weitek<BR> 
P9000
<P>Western Digital/Paradise<BR> 
PVGA1
<P>Western Digital<BR> 
WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31,
WD90C33
<P>(*) Note, chips marked in this way have either limited support or the
drivers
for them are not actively maintained.
<P>All of the above are supported in both 256 color, and some are supported
in
mono and 16-color modes, and some are supported an higher color depths.
<P>Refer to the chipset-specific README files (currently for TGA, Matrox,
Mach32,
Mach64, NVidia, Oak, P9000, S3 (except ViRGE), S3 ViRGE, SiS, Video7,
Western
Digital, Tseng (W32), Tseng (all), AGX/XGA, ARK, ATI (SVGA server),
Chips and
Technologies, Cirrus, Trident) for more information about using those
chipsets.
<P>The monochrome server also supports generic VGA cards, using 64k of
video mem-
ory in a single bank, the Hercules monochrome card, the Hyundai HGC1280,
Sigma LaserView, Visa and Apollo monochrome cards.
<P>The VGA16 server supports memory banking with the ET4000, Trident, ATI,
NCR,
OAK and Cirrus 6420 chipsets allowing virtual display sizes up to about
1600x1200 (with 1MB of video memory). For other chipsets the display
size is
limited to approximately 800x600.
<P>Notes: The Diamond SpeedStar 24 (and possibly some SpeedStar+) boards
are NOT
supported, even though they use the ET4000.
<P>The Weitek 9100 and 9130 chipsets are not supported (these are used
on the Dia-
mond Viper Pro and Viper SE boards). Most other Diamond boards will
work with
this release of XFree86. Diamond is actively supporting The XFree86
Project,
Inc.
<P>3DLabs GLINT, Permedia and Permedia 2 support could unfortunately not
be
included in XFree86 3.3.2 since there are open issues regarding the
documentation and whether or not they were provided to us under NDA.
<BR>(End excerpt from Xfree86 documentation.)
<P><font color="navy">Monitors</font>:<BR> 
Hypothetically, any monitor you have the documentation for, that is
capable of at least VGA or SVGA
resolution, SHOULD be compatible. However, the following monitors are
explicitly supported:
<P><font color="navy">Slackware 3.5</font>:<BR> 
Standard VGA, 640x480 @ 60Hz
Super VGA, 800x600 @ 56Hz
<BR>8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
<BR>Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
<BR>Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72Hz
<BR>Non-Interlaced SVGA 1024x768 @ 60 Hz, 800x600 @ 72 Hz
<BR>High Frequency SVGA, 1024x768 @ 70 Hz
<BR>Multi-Frequency that can do 1280x1024 @ 60 Hz
<BR>Multi-Frequency that can do 1280x1024 @ 74 Hz
<BR>Multi-Frequency that can do 1280x1024 @ 76 Hz
<P>NOTE: There is also an option to explicitly specify the Horizontal and
Vertical Sync rates for your monitor
if you have them available.
<P><font color="navy">Red Hat 5.1</font>:
<BR>Custom Mode (see above description for information about standard modes,
as well as suggestions for
<BR>acquiring information for your monitor if the documentation is not
available.
<BR>Acer Acerview 11D, 33D/33DL, 34T/34TL
<BR>AOC-15
<BR>Apollo 1280x1024 @ 68Hz
<BR>Apollo 1280x1024 @ 70Hz
<BR>Axion CL-1566
<BR>CTX-1561
<BR>Chuntex CTX CPS-1560/LR
<BR>Compudyne KD-1500N
<BR>CrystalScan 1572FS
<BR>DEC PCXBV-KA/KB
<BR>Dell VS17
<BR>EIZO FlexScan 9080i, T660
<BR>ELSA GDM-17E40
<BR>ESCOM MONO-LCD-screen
<BR>Gateway 2000 CrystalScan 1776LE
<BR>Generic Monitor
<BR>Generic Multisync
<BR>HP 1280x1024 @ 72Hz
<BR>Highscreen LE 1024
<BR>Hitachi SuperScan 20S
<BR>Hyundai DeluxScan 14S, 15B, 15G, 15G+, 15 Pro, 17MB/17MS, 17B, 17B+,
17 Pro, hcm-421E
<BR>IBM 8507
<BR>IDEK Vision Master
<BR>Impression 7 Plus 7728D
<BR>Lite-On CM1414E
<BR>MAG DJ717, DX1495, DX1595, DX1795, Impression 17, MX15F
<BR>MegaImage 17
<BR>NEC MultiSync 2V, 3D, 3V, 3FGe, 3FGx, 4D, 4FG, 4FGe, 5FG, 5FGe, 5FGp,
6FG, 6FGp,
<BR>A500, A700, C400, C500, E500, E700, E1100, M500, M700, P750, P1150,
XE15, XE17,
<BR>XE21, XP15, XP17, XP21, XV14, XV15, XV17, XV15+, XV17+
<BR>Nanao F340i-W, F550i, F550i-W
<BR>Nokia 445X, 447B
<BR>Optiquest Q41, Q51, Q53, Q71, Q100, V641, V655, V773, V775, V95, V115,
V115T
<BR>Philips 7BM749, 1764DC
<BR>Princeton Graphics Systems Ultra 17
<BR>Quantex TE1564M  Super View 1280
<BR>Relisys RE1564
<BR>Sampo alphascan-17
<BR>Samsung SyncMaster 15GLe, 15GLi, 15M, 17GLi, 17GLsi, 3, 3Ne, 500b/500Mb,
500s/500Ms,
<BR>500p/500Mp, 700b/700Mb, 700p/700Mp, 700s/700Ms
<BR>Samtron SC-428PS/PSL, SC-428PT/PTL, 5E/5ME, 5B/5MB, SC-528TXL, SC-528UXL,
SC-
<BR>MDL, 7E/7ME/7B/7MB, SC-728FXL, SC-726GXL
<BR>Sony CPD-1430, CPD-15SX, CPD-100SF, CPD-200SF, CPD-300SF, CPD-100VS,
CPD-
<BR>120VS, CPD-220VS
<BR>Sony Multiscan 100sf, 100sx, 200sf, 200sx, 15sf, 15sfII, 17se, 17seII
<BR>TARGA TM 1710 D
<BR>Tatung CM14UHE, CM14UHR, CMUHS
<BR>TAXAN 875
<BR>Unisys-19
<BR>ViewSonic 15ES, 15GA, 15GS, 17, 17PS, 17GA, 5e, 6, 7, E641, E655, EA771,
G653, G771, G773,
<BR>GT770, GT775, P775, PT770, PT775, P810, P815, PT813, VP140
<BR>Mice (listed in order of appearance in the selection list, horizontally,
from left to right.)
<BR>Microsoft Standard mouse
<BR>MouseSystems
<BR>MMSeries
<BR>Logitech
<BR>MouseMan
<BR>MMHitTab
<BR>GlidePoint
<BR>Intellimouse
<BR>ThinkingMouse
<BR>BusMouse
<BR>PS/2
<BR>Auto
<BR>IMPS/2
<BR>ThinkingMousePS/2
<BR>MouseManPS/2
<BR>GlidePointPS/2
<BR>NetMousePS/2
<BR>NetScrollPS/2
<P> <HR> <P> 
<H4><font color="maroon">Unsupported Hardware</font></H4> 
If X does not directly support your video card and/or monitor, all
may not be lost. Try choosing one of the
"generic" cards and monitors that most closely resembles your hardware.
The SVGA server is a good
place to start if you have an unsupported card. Another possible option
is the VGA16 server. Almost any
card will run (at reduced performance) with one of these two servers.
<P>Another possible option is to consider purchasing a "commercial" X server.
Two possible choices are:
<BR>MetroX http://www.metrolink.com/
<BR>XInside http://www.xinside.com/
<P>These commercial servers often support a wider range of cards and monitors,
due to the willingness of the
developer of the X server software to abide by Non Disclosure Agreements
required by some card
manufacturers. In plain English, some card manufacturers refuse to
work with the open source community.
Something to consider the next time you get ready to purchase a video
card.
<P>Likewise, the generic VGA or SVGA monitors will usually at least get
you up and running. However, as I
have mentioned previously, DO NOT EXCEED THE CAPABILTIES OF YOUR CARD
OR MONITOR!
Otherwise, you may initiate what is called in the electronics world
"a smoke test." This is a bad thing, and
makes your house smell, as well as setting off your smoke detector.
<P> <HR> <P> 
<H4><font color="maroon">Gathering Information about your hardware</font></H4> 
It is imperative that you know as much as you can about your video
card and monitor. (You did keep those
manuals and documentation didn't you?)
<P>If you do not have the documentation available, check the various docs
in the /var/X11R6/lib/docs area, or
search the Internet. Another possible option is to go directly to the
manufacturer's website if available, and
acquire the specifications there. A final option on some monitors,
the synch rates is sometimes listed on
the back along with the model number and other information.
<P>Make sure, if at all possible, that your card and monitor are on the
supported hardware list. This will save
you a lot of grief and give you the best chance of success, as well
as enabling you to take full advantage of
the accelerated features of your video card.
<P>At a bare minimum, you should have the following information available:
Manufacturer, make and model of your video card: e.g. Matrox Millenium
Amount of RAM resident on the video card: e.g. 8MB
<P>Manufacturer, make and model of your monitor: e.g. Viewsonic 15E
Horizontal synch rate of your monitor: e.g. 31.5-82.0
Vertical synch rate of your monitor: e.g. 40-100
<P>A special note on mice:
If at all possible, try to get a three-button mouse. X uses the middle
button for some special functions.
While it is possible to configure a two-button mouse to behave as a
three-button mouse using an emulator
that requires you to depress both buttons simultaneously to emulate
the middle button, this feature is flaky
at best on many mice and sometimes hard to master.
<P>Note for PS/2 mice users:
It has been reported that some users experience problems with the behavior
of a PS/2 mouse under X. This
is almost always due to the fact that the general-purpose mouse (gpm)
program is being loaded at boot
time, and for some reason, freaks out X.
<P>Some have suggested adding a variety of switches or other parameters
to the start up file that are purported
to correct this problem. However, I have had limited success with these
methods. Sometimes they will
correct the problem, other times they will not.
<P>What does work all the time is to comment out the start up of gpm at
boot time.
<P>On a Slackware machine, cd to /etc/rc.d/rc.local and place a pound sign
(#) in front of the lines that look
similar to the following:
<PRE> 
# echo starting gpm
# gpm /dev/mouse
</PRE> 
<P>Should you find the need to use gpm while in text mode, simply type
gpm &lt;return&gt; and start it manually.
<P>On a RedHat machine, from the command prompt, simply type setup
&lt;return&gt;
<P>You will be presented with a dialog box prompting you to select a configuration
tool. Select ntsysv then
<BR>tab to the run button and press return.
<P>Scroll down the dialog box until you see an entry for gpm. Highlight
this entry and depress the spacebar to
remove the asterix (*), then exit.
<P> <HR> <P> 
<H4><font color="maroon">Safety concerns and precautions</font></H4> 
Although the X windowing system offers infinite flexibility and configurability,
it is very picky about what
hardware it will and will not run on.
<P>Just as Unix or Linux will not run on marginal hardware that may work
with Windows, it may or may not
run on marginal or clone-type video cards and monitors.
<P>While it is possible to "hand tune" X to work with just about any video
card and monitor, to do so is NOT
RECOMMENDED. Diddling around with your clock settings, choosing a card
or monitor "similar" to
your equipment, or just picking horizontal and vertical synch rates
at random can damage or destroy your
video card or monitor. DON'T DO IT!
<P>The optimal configuration, and the only one I can recommend, is to make
sure your video card and monitor
are explicitly listed and supported by X before trying to configure
and run it. While I do offer some
suggestions for people with unsupported hardware, there is no guarantee
these suggestions will work, nor
do I offer any assurance that they won't damage your equipment. Proceed
at your own risk.
<P> <HR> <P> 
<H4><font color="maroon">Starting the configuration program</font></H4> 
Before you can actually use X, you must generate a configuration file
that tells X about your video card,
monitor, mouse, and some default preference information required to
initialize the X environment and get it
up and running. All of the following configuration steps will need
to be done as root initially, then if
necessary, you can create your own unique X configuration for each
of your respective users.
<P>The method and program used to accomplish this task will depend on which
flavor of Linux you are using.
<P>NOTE: The instructions listed below assume you are using Xfree86 3.3.2-2.
If you are using one of the
commercial X servers, such as MetroX or XInside, your configuration
methods may be different. Please
consult the documentation that comes with your commercial product.
<P><font color="navy">Slackware 3.5</font>:<BR> 
The X configuration program for Slackware 3.5 is called XF86Setup.
To start the program, at the
command prompt, simply type:
<P>XF86Setup &lt;return&gt;
<P>You will be presented with a dialog box prompting you to switch to graphics
mode. Select OK.
<P>After a moment, you will enter the XF86Setup screen. Along the top of
the screen will be a series of
buttons to configure the various components of the X windowing system.
They will appear in a horizontal
row in the following order:
<P>Mouse Keyboard Card Monitor Modeselection Other
<P><font color="navy">RedHat 5.1</font>:<BR> 
The X configuration program for RedHat Linux is called Xconfigurator.
To start the program, at the
command prompt, simply type:
<P>Xconfigurator &lt;return&gt;
<P>Press return to get past the welcome screen, then skip to the video
card section.
<P> <HR> <P> 
<H4><font color="maroon">Configuration of the mouse under X</font></H4> 
<P><font color="navy">Slackware 3.5</font>:<BR> 
This should already have been taken care of during installation. If
you have something other than a three-button mouse, be sure to select the Emulate3Buttons option for maximum
functionality under X.
<P>The next option, Keyboard, should be already configured properly. Under
normal circumstances, no
adjustments should be required here.
<P><font color="navy">RedHat 5.1</font>:<BR> 
This should already have been taken care of for you during installation.
If not, break out of the
Xconfigurator and run mouseconfig, then start over.
<P> <HR> <P> 
<H4><font color="maroon">Configuration of your video card</font></H4> 
<P><font color="navy">Slackware 3.5</font>:<BR> 
Select the card option from the menu at the top of your screen. Scroll
down and select the appropriate
video card for your system.
<P>If necessary, you may also need to select the Detailed setup button
to configure Chipset, RamDac,
ClockChip, Device options, and the amount of video RAM on your card.
Usually these options will be
probed automatically. I only mention this so you can "tweak" the card
if you are feeling brave.
<P><font color="navy">RedHat 5.1</font>:<BR> 
The setup program will now autoprobe for your type and model of video
card. On the plus side, this can
simplify things, IF it properly identifies your card. On the minus
side, if it does not, it does not offer you
an alternative to manually choose the card. If your card is not properly
identified, see the unsupported card
section for some general suggestions on some things to try.
<P> <HR> <P> 
<H4><font color="maroon">Configuration of your monitor</font></H4> 
<P><font color="navy">Slackware 3.5</font>:<BR> 
If you have the documentation available, you may enter the Horizontal
and Vertical Synch rates manually
in the input boxes, or alternately, you may choose one of the preset
configurations in the scroll box.
<P>It is almost always safe to choose either the Standard VGA or Super
VGA option to start, then work up to
the specific settings and color resolution you desire (subject to the
limitations of your hardware.)
<P>Lastly, select the Modeselection option, and choose your desired screen
resolution and color depth. To
begin with, less is better. Start with 640x480 @ 8bpp to start, then
work your way up.
<P>When you are finished with your configuration, select done from the
bottom of the screen, and the setup
program will attempt to start X with the configuration you have selected.
If all goes well, you will be
prompted to write the configuration to your XF86Config file and exit.
If you have any problems, you will
be prompted to try again until you have your configuration setup properly.
<P><font color="navy">RedHat 5.1</font>:<BR> 
At the Monitor Setup dialog screen, scroll down and choose the appropriate
monitor. If your monitor is not
listed, choose generic or custom. If you choose custom, have your vertical
sync rate and amount of video
RAM handy, you will need them.
<P>You will be presented with a dialog box that contains the same monitor
choices listed in the Slackware
section. After choosing a monitor, you will be prompted to select your
vertical sync rate. Finally, you will
be asked to specify the amount of video RAM present on your card.
<P>After exiting the Xconfigurator program, you are ready to test your
new configuration
<P> <HR> <P> 
<H4><font color="maroon">Testing your configuration</font></H4> 
At the command prompt, simply type startx. If all went well, you should
shortly be on your way. If for any
reason X fails to start up, go back and run your configuration program
again, double-checking that you
have all the proper settings.
<P> <HR> <P> 
<H4><font color="maroon">Customization tips and tricks</font></H4> 
By default, both Slackware and RedHat install the FVWN95 Window Manager,
a Windows 95 look-alike.
This is probably a good start for users transitioning from a Windows
based environment, as it will be the
most familiar to you.
<P>Since X is infinitely configurable, and also stunningly cryptic at times,
an in depth discussion of all the
configuration options available under X is beyond the scope of this
document. However, what follows are
a few things you may be interested in.
<P>A few words about the X desktop:
<ol>
<li>X allows the use of something called a virtual desktop, which is
simply a fancy way of saying you can
have a virtual desktop resolution that is larger than the actual resolution
you have set your monitor to.
As an example, say you have your card resolution to 1024x768 @ 32 bit
color. X allows you to set
your virtual desktop to 1280x1024, which some people love, and some
people hate. If you want to
disable this behavior, locate your XF86Config file, scroll down to
the Screen sections, and look for a
line similar to the following: Virtual 1280 1024. To disable the virtual
screen, change this entry
to the default screen resolution you have chosen, 1024 768 in this
example. Similarly, to enable it,
simply change to the next higher resolution, 1280 1024 in this example.
<li>FVWN95, as well as the other popular Window Managers, offer a variety
of configuration options.
Experiment with them until you find the one you like best.
<li>Finally, depending on your distribution, you may or may not have
other Window Managers available
to you. Experiment with the different ones available on your system
until you find the one you like
best. My personal favorite is Afterstep, but you may find you can't
live without one of the others.
Choose the one you like best. Under FVWM95 on a Slackware box, choose
Exit Fvwm95 from the
Start menu, then choose the Window Manager you want to use from the
drop down box accessed by
moving your mouse to the right edge of the menu option, highlighting
the arrow (&gt;) that resides there.
On a RedHat box, from the Start menu, choose Preferences/WM Style to
change to a different Window
Manager.
</ol>
<P>Stupid X Tricks:
<ol>
<li>To start an X session, simply type startx at the command prompt.
<li>If you have configured your X server for more than one screen resolution,
say 640x480, 800x600, and
1024x768, and you want to switch between the different resolutions,
simply depress Cntrl+Alt+(either
the plus (+) sign, or the minus (-) sign to switch to a higher or lower
resolution, respectively. Why
would you want to do this? I often do a great deal of Web Design on
my machine, and being able to
quickly see what a given page will look like at different resolutions
is quite handy.
<li>To terminate an X session, you can either exit the session using
the appropriate menu selection for
your respective Window Manager, or you may depress Cntrl+Alt+Backspace.
<li>You may also set up your personal user accounts (you're not always
working as root are you?) by
setting up an .xinitrc file in your home directory, if needed. Usually,
this is only necessary on a
Slackware box. On a RedHat box, I believe this is taken care of for
you. Check the documentation.
</ol>
<P> <HR> <P> 
<H4><font color="maroon">Troubleshooting your configuration</font></H4> 
Basically, there are only a few things that can go wrong with your
X installation. Either the X server will
refuse to start at all, the X server will start but you get a blank
screen, or the X server will start, but for one
reason or another, the screen will be improperly sized, flickering,
or unreadable.
<P>If the X server refuses to start at all, pay close attention to the
error messages that appear while the server
errors out. Most frequently, this is an improperly configured monitor
or card that causes the server to die.
Check your configuration.
<P>If the X server starts, but the screen exhibits an improper size, or
excessive flickering, you probably need to
adjust your horizontal or vertical sync rates.
<P>If the screen appears to be unreadable, due to excessive lines or smearing
of the pixels, check your card and
monitor configurations.
<P>Simply put, most problems can be traced back to an improper configuration
of the card, the monitor, or
both. This is why I strongly recommend making sure your hardware be
explicitly supported, or using one
of the "generic" configurations to start with.
<P>Beyond this, check the documentation for specific card set problems,
specific monitor problems, and other
general troubleshooting procedures.
<P>Another possible option is to troll the newsgroups for a similar problem,
or post a brief description of the
trouble you are having, and hopefully, someone with a similar problem
they have solved before will get
back to you.
<P>If all else fails, drop me e-mail and I'll be glad to try to help.
&nbsp;
<P> <HR> <P> 
<H4><font color="maroon">Resources for further information</font></H4> 
<font color="navy">Xfree86 Resources</font>:
<ul>
<li><A HREF="http://www.xfree86.org/">http://www.xfree86.org/</A> 
<li><A HREF="http://sunsite.unc.edu/LDP/">http://sunsite.unc.edu/LDP/</A> 
</ul>
<font color="navy">Window Managers</font>:
<ul>
<li><A HREF="http://www.gaijin.com/X/">http://www.gaijin.com/X/</A> 
<li><A HREF="http://www.afterstep.org/">http://www.afterstep.org/</A> 
<li><A HREF="http://www.pconline.com/~erc/xwm.htm">
http://www.pconline.com/~erc/xwm.htm</A> 
<li><A HREF="http://www.PliG.org/xwinman/">http://www.PliG.org/xwinman/</A> 
</ul>
<P> <HR> <P> 
I had originally planned to include the configuration of your basic
networking setup into this installment as
well, but as you can see, this is a real porker as it is. So look for
the networking stuff in part three.

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Ron Jenkins <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./schweizer.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 and Word Inspector</font></h1>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<P> <HR> <P>  

<center><h3>Introduction</h3></center>

<p>Access to an on-line dictionary has been possible for several years now due
to the Webster TCPIP protocol.  Webster is useful but the number of servers
has been on the decline, and the protocol itself is limited by its dependence
on a single dictionary database.  Rik Faith, a programmer responsible for many
of the essential-but-taken-for-granted Linux utilities, has created a new,
more flexible protocol known as DICT.  DICT is another TCPIP protocol (usable
either over a network or on a local machine) which provides access to any
number of dictionary databases.  Local access is provided by a client program
called <i>dict</i> which contacts the <i>dictd</i> server daemon.
<i>Dictd</i> then searches the available databases and makes any hits
available to <i>dict</i>, which pipes its output to the default pager on the
local machine (usually either <i>more</i>, <i>less</i>, or <i>most</i>).  Net
access is available from several servers, including the home 
<a href="http://www.dict.org">DICT</a> site.  Looking up words while on-line
frees the user from needing to install and run the <i>dictd</i> and
<i>dict</i> client and server programs (as well as having to make room for the
bulky databases on a local disk), but if you have the disk space it's
convenient to have the service available at any time.

<p>The <i>dictd</i> and <i>dict</i> programs are licensed under the GPL, so
naturally they are set up to use freely available word databases.

<center><h3>Installing The DICT Distribution Locally</h3></center>

<p>DICT is a typical Unix-style command-line set of programs.  GUI-fans will
regret the absence of a graphical interface, but the glass is really
half-full.  Due to the absence of oft-troublesome GUI toolkit dependencies,
the source for the client and server programs should compile easily.  Toolkits
come and go, but applications written with a simple console interface can
easily be adapted to whatever the future toolkit du jour might be.  There are
numerous programmers who lack the time or inclination to develop Linux
utilities from scratch, but welcome the opportunity to write GUI front-ends to
console programs (see the Word Inspector section below).

<p>
Compiling and installing <i>dictd</i> and <i>dict</i> isn't difficult, but to
make use of them the word databases need to be downloaded and installed.  Here
is a list of the free databases which are currently available from the
<a href="ftp://ftp.dict.org/pub/dict/pre/">DICT</a> FTP site:

<ul>
  <li>A 1913 edition of Webster's Revised Unabridged Dictionary
  <li>The Free On-Line Dictionary of Computing
  <li>Eric Raymond's Jargon File
  <li>The WordNet database
  <li>Easton's 1897 Bible Dictionary
  <li>Hitchcock's Bible Names Dictionary
  <li>The Elements (physical elements)
  <li>U.S Gazetteer (1990)
  <li>The 1995 CIA World Factbook
</ul>

<p>All of these files and their indices will occupy about thirty-one megabytes
of disk space, roughly the same amount as the WordNet dictionary files alone.
The DICT data-files are compressed with a variant of <i>gzip</i> called
<i>dictzip</i>, also written by Rik Faith.  <i>Dictzip</i> adds extra header
information to a compressed file which allows pseudo-random access to the
file.  When the <i>dictd</i> server processes a request for a word it looks
first in the various index files.  These  files (which are human-readable)
are just simple lists with the location of each word within the compressed
dictionary file.  <i>Dictd</i> is able to use this information to uncompress
just the single 64-kb. block of data which contains the word-entry.  This
greatly speeds up access, as the entire dictionary file doesn't need to be
uncompressed and subsequently re-compressed for each transaction.  Files
compressed with <i>dictzip</i> can be recognized by the <i>*.dz</i> suffix.

<p>Although <i>dictzip</i> doesn't compress quite as tightly as <i>gzip</i>,
the added advantage of the header information (at least for the sort of access
<i>dictd</i> needs) is a compensation.  The above-listed dictionary files
would need nearly seventy-five megabytes of disk space if they weren't
compressed.

<center><h3>Comparison With WordNet</h3></center>

<p>In issue 27 of the Gazette, (April, 1998) I wrote about another
dictionary-database system called WordNet.  In order to access a DICT database
the <i>dict</i> server must be running which communicates with <i>dict</i>
client programs, whereas WordNet isn't a client-server program; the small
<i>wn</i> program searches the database indices directly.  The upshot is that
WordNet uses less memory than a DICT system, but since WordNet databases
aren't compressed they occupy more disk space than the specially compressed
DICT files.  DICT files contain more words (along with etymologies, which
WordNet lacks) and can be supplemented with new files in the future, but DICT
lacks WordNet's powerful thesaurus and lexical usage capabilities.  Another
factor to consider is that development of WordNet has ceased, whereas DICT is
still being improved and the chances of its continued development seem likely.
Additionally, DICT can use the WordNet data-files in a compressed format.

<center><h3>Configuration</h3></center>

<p>Sample configuration files are included with the DICT distribution.  The
file <kbd>/etc/dictd.conf</kbd> should contain the location of your local
dictionary files in this format:<br>

<pre><kbd>
database web1913   { data "/mt/dict/web1913.dict.dz"
                     index "/mt/dict/web1913.index" }
database jargon    { data "/mt/dict/jargon.dict.dz"
                     index "/mt/dict/jargon.index" }
</kbd></pre>

<p>The <i>dict</i>  client needs to know where the server is; if a local
server is used a simple <kbd>~/.dictrc</kbd> file containing this line will
work:<br>

<pre><kbd>
server localhost
</kbd></pre>

<p>If both <kbd>~.dictrc</kbd> and <kbd>/etc/dict.conf</kbd> are missing the
<i>dict </i> client program will first attempt to access the www.dict.org
web-server; if that fails it will try some alternate sites.  To prevent these
attempts (when running a local <i>dictd</i> server) just use the above
<kbd>~/.dictrc</kbd> file.

<center><h3>Drawbacks</h3></center>

<p><i>Dictd</i> might not be a service which you would want to run all of the
time.  Though not a large executable, it uses a significant amount of memory,
typically four to five megabytes.  I surmise that the daemon reads the
dictionary index-files into memory when it starts up and keeps them there.
This premise also would explain why the word look-ups are so speedy.  Memory
access is much faster than disk access, and once the daemon determines from
the index which sixty-four kilobyte block holds the desired information it can
quickly decompress that small chunk of the dictionary file and serve up the
word information.  I've found that starting <i>dictd</i> while writing or
whenever I become curious about word-usage and killing the daemon at other
times works well.


<center><h3>Word Inspector</h3></center>

<p>Scott W. Gifford has written a nice graphical front-end to the <i>dict</i>
client program called Word Inspector.  Here's a screenshot of the initial
window:<br>

<p><img alt="Word Inspector Main Window" src="./gx/ayers/inspect1.gif">

<p>And here is one showing the output window:<br>

<p><img alt="Word Inspector Output Window" src="./gx/ayers/inspect2.gif">

<p>In the README file accompanying Word Inspector Scott Gifford suggests
setting up the application with several different window-manager menu-items.
Running <kbd>wordinspect --define --clipboard</kbd> will bring up a Word
Inspector output window (as shown in the second screenshot) with the contents
of the current X primary selection as the input.  Alternatively,
<kbd>wordinspect --search --clipboard</kbd> will cause the initial window to
appear with the X primary selection already shown in the entry field, and
running just plain <kbd>wordinspect</kbd> will bring up an empty initial
window, so that a word can be typed in which isn't a mouse-selection.
These three commands could be set up in a submenu stemming from a top-level
Word Inspector menu-item.  

<p>Word Inspector makes good use of right-mouse-button pop-up menus.
Right-clicking on any word in a definition pops up a menu allowing you to
either open a search (initial) window with the selected word already filled
in, or open a definition window for the word.  Highlighting a series of words
with the mouse, then right-clicking, will enable the same behavior for
phrases.

<p>The source of the current version of Word Inspector is this
<a href="http://www.tir.com/~sgifford/wordinspect/">web-site</a>.  The GTK
toolkit is required for compilation, with version 1.06 recommended.

<!-- hhmts start -->
Last modified: Mon 28 Sep 1998
<!-- hhmts end -->

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Larry Ayers <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./jenkins2.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">Pysol: Python-Powered Solitaire</font></h1>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<P> <HR> <P>  

<center><h3>Introduction</h3></center>

<p>Playing solitaire card games on a computer became popular when Microsoft
bundled a Klondike game with Windows 3.1.  Since then such programs have
proliferated on nearly every platform which possesses a windowing interface.
There is a certain appeal to dragging miniature representations of playing
cards around the screen.  A side benefit is that such games usually can keep
track of scores, provide hints, and sometimes auto-play in demo mode.

<p>There have been many solitaire games released for Linux.  One of the older
ones is xpat2, which has some of the nicest design-work of any of these games.
Xpat2 shows its age due to the lack of card-dragging, which contributes
greatly to the feel of a computer card-game.  Clicking on a card instantly
moves it to a legal destination; when there is more than one possible
move, the one xpat2 chooses may not be the one you had in mind.  Otherwise
it's a fine game, with several solitaire variants to choose from and well-done
on-line help.

<p>Users of the GNOME and KDE desktop environments each have native solitaire
games, both of which are quality applications.  If you aren't a user of one of 
these desktop systems it's hardly worthwhile to keep the bulky shared
libraries around just to play a simple game.

<p>Recently I was browsing the incoming directory at the Sunsite FTP site; I
happened across a small file which, according to its accompanying *.lsm file,
purported to be an implementation of solitaire called Pysol written in the
Python programming language.  I was a little dubious of this claim.  Python is
a versatile and powerful interpreted programming language, but is it possible
to write a card-game using Python which is as usable and pleasing to the eye
as one written in C or C++?

<p>It evidently is possible if the <i>tkinter</i> module is used to provide
the graphical interface.  <i>Tkinter</i> (which I assume stands for "interface
to Tk") lets a Python script use John Ousterhout's versatile Tk toolkit to
provide the windowing interface.  Tk is normally used with the Tcl command
language, but Tcl has several limitations.  These have been sufficient to
provide motivation for several replacements; <i>Tkinter</i> is widely used,
but there are others.  <i>Perltk</i> uses Larry Wall's Perl language as the
command language; another is <i>Stk</i>, which uses Scheme as its scripting
language.  The Xxl spreadsheet is the first major project I've seen which uses
this Tk/Scheme hybrid.  (Perhaps I'll review Xxl one of these months).

<p>Pysol was written by <a href="mailto:
markus.oberhumer@jk.uni-linz.ac.at">Markus F.X.J. Oberhumer</a> and he has
released it under the GNU license.  The game is an extensive reworking and
enhancement of a simple Python solitaire demo written by Guido van Rossum
(creator and maintainer of the Python language) which is included as an
example in the Python distribution.

<center><h3>Features and Game-Play</h3></center>
<p>Here is a list of
Pysol's features, adapted from the README file in the distribution:

<ul>
  <li>It's based upon an extensible solitaire engine
  <li>A very nice look and feel
  <li>Unlimited undo & redo
  <li>Pysol can load & save games
  <li>Player statistics are available
  <li>Hints for possible next moves
  <li>Demo games
  <li>HTML-based help browser
  <li>Playable under all platforms which TK and Python support, including
      MacOS, Windows, and of course X11
</ul>

<p>Nine games can be played: Gypsy, Picture Gallery, Irmgard, 8X8, Freecell,
Seahaven,Braid, Spider, and Forty Thieves.  The rules and documentation are
supplied in HTML format and are displayed in a separate window using a Python
HTML extension.  Card-dealing at the onset of a game is nicely animated, and
the mouse-dragging of cards works smoothly.

<p>If you have ever spent much time playing solitaire on a computer you
probably have noticed that after a certain point in a game the outcome seems
obvious.  This intuition isn't always accurate when you suspect the game is
lost, but sometimes it's obvious that several more card-moves will win the
game.  Pysol binds the <i>a</i> key so that, when pressed, it will
automatically cycle through those moves and bring the game to completion.
When you strongly suspect that the game can't be won, the menu-item
<i>Demo</i> (in the <i>Game</i> menu) will ask if you want to abandon the
current game; pressing the "Yes" button will start the demo mode and either
finish the game or find that it can't be completed.  I've found that about
one-quarter of the times I resort to demo mode my intuition was wrong and the
game could have been won.  If a game is hopeless a pop-up window appears
informing you that "This won't come out". 

<p>Pysol's help key is <i>h</i>; when it's pressed a black arrow appears extending
from a card to a recommended destination.  The same arrows appear when Demo
mode is initiated, though in this case the cards are actually moved.

<p>Here is a screenshot of a Pysol Klondike game:<br>

<p><center><img alt="Pysol Window" src="./gx/ayers/pysol.gif"></center>

<hr>
<center><h3>Installing Pysol</h3></center>

<p>Pysol won't work at all if you don't have a current Python installation,
including the <i>tkinter</i> module.  A current Linux distribution will
include all the Python stuff you would ever want, it's just a matter of
installing it.  As far as that goes, Python is one of those high-quality
applications which is very likely to compile well from source, assuming you
have the basic Linux development packages installed, such as gcc, make, etc.

<p>Pysol is just a 75-kilobyte executable Python script; running <kbd>make
install</kbd> will copy the script to <kbd>/usr/games</kbd> and the necessary
data-files to <kbd>/usr/share/pysol</kbd>, after which the game is ready to
run.

<p>I'm impressed by this game's quality and playability.  It <em>does</em>
take several seconds to start up, probably due to the necessity of loading the 
Python interpreter and the Tkinter module into memory.
<hr>

<p>
<!-- hhmts start -->
Last modified: Mon 28 Sep 1998
<!-- hhmts end -->

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Larry Ayers <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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">Another Typing Tutor</font></h1>
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<P> <HR> <P>  

<p>Last month I discussed Simon Baldwin's lesson-based typing tutor, Typist.
In response to that article
<a href="mailto: john@hannes.ndip.eskimo.net">John Chapman</a> sent me e-mail
concerning another typing tutor commonly used on FreeBSD systems.  With his
permission, I'll quote from his message:<br>

<blockquote>
Dear Mr. Ayers:<br>

<p>In the Linux Gazette you recently expressed your interest in learning the
Dvorak keyboard, and I thought you might enjoy playing with the attached Tk
program called kp (=Keyboard Practice).  It seems to be standard issue with
FreeBSD, but I've never seen it in any Linux distribution or archive.

<p>It was written for Tk4.1, but works perfectly well with 4.2.  I haven't
tried it with 8.0, though, so you might have to hunt up an older version of
Tk, if you don't already have one.  To set it up, either untar it in
/usr/local/lib, or put everything into ~/bin, or whatever you like best.  Then
edit the "executable" kp file so that the first line corresponds with your
version of wish (I have the 4.2 version in /usr/bin/wish4.2 on my Debian
system), and the "cd" line points to /usr/local/lib/kp, $HOME/bin, or wherever
you decided to plant the .tcl files.  Copy kp to /usr/local/bin (or leave it
in $HOME/bin, if that's in your path), fire up X, invoke "kp", and off you go!

<p>In the "options" menu you can switch between Dvorak and qwerty, and in the
"file" menu you can insert any ascii text file you wish as a model for
practice.  The filter allows you to limit the text to words composed of
specific letters; swipe your finger over the keys in the home row, for
example, and the filter will pull out only those words made up of the letters
in the home row.  Quite cleverly done.

<p>If you decide that you want to use the Dvorak layout for Real Work(TM),
it's quite easy to have xmodmap load a Dvorak keymap for you, and switch back
to qwerty when you're done.  Emacs can load a Dvorak keymap for you, too.  And
some clever soul came up with the idea of aliasing "asdf" to "xmodmap
.kbd.dvorak" and "aoeu" (the same four keys!) to "xmodmap .kbd.default", so
that your whole family doesn't have to suffer :-) , but can switch back to a
"normal" layout with one simple key pattern.  Presumably you could use the
same trick to reset the keymapping in console mode, too.

</blockquote>


<p>The "clever soul" referred to above is Don Reed (according to a later
message from John Chapman).  Don Reed wrote an HTML file explaining his
approach to switching keyboard layouts on the fly; John sent me the file,
which you can read <a href="./ayers_kbd.html">here</a>.

<p>Keyboard Practice is a useful and well-designed Tcl-Tk program; its ability
to use any text file as practice material is a nice touch.  It was written by
Satoshi Asami &lt;asami@cs.berkeley.edu&gt;.

It's not just for practicing Dvorak typing; a menu-item lets a user switch to
QUERTY as well.  Since the archived files occupy just a little over twelve
kilobytes, you can access them in this issue of LG
<a href="./ayers_kp.tar.gz">here</a>.  To try it out, just follow the instructions
in the above quoted message from John Chapman.

<p>John also suggested a reference to the
<a href="http://www.dvorakint.org">Dvorak International Web-site</a>, which
(although not updated recently) has links to most Dvorak sites on the net.
<p><hr><p>

<hr>
<!-- hhmts start -->
Last modified: Mon 28 Sep 1998
<!-- hhmts end -->

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Larry Ayers <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./naden.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>
<IMG src="./gx/naden/mctitle.jpg" alt="mcadforlinuxlogo.jpg" align="MIDDLE"
	border="0" hspace="1" vspace="1">
<H4>By <a href="mailto:ldtech@istar.ca">Damir Naden</a></H4>
</center>
<P> <HR> <P>  
	
	<H2><A name="intro"></A><FONT face="Lucida,Helvetica">INTRODUCTION</FONT></H2>
	
	<HR>
	
	<P><FONT face="Lucida,Helvetica">I am a Mechanical Engineer and an owner 	of a small business, <A href="mailto:ldtech@istar.ca">L&amp;D Technologies</A>, specializing in mechanical design and drafting and project management of small to medium size projects in mechanical engineering field. As any small business owner knows, the cost of start-up can be quite high, especially in the field where high end workstation and 3-D software are very important. I knew that I couldn't afford the <A href="http://www.sgi.com/">SGI(TM)</A> or <A href="http://www.sun.com/">UltraSPARC2(TM)</A> machine (even though that would have been perfect), so my options were down to which operating system I would be running my PC under.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">I had two options:</FONT></P>
	
		<UL>
		
		<LI><A href="http://www.microsoft.com/">WindowsNT(TM)</A>- which I use at my other, daytime job, and thus already have a very good understanding of the CAD software available on this platform ( <A href="http://www.cadkey.com/">CADKEY(TM)</A> and <A href="http://www.ptc.com/">Pro/E(TM)</A>)
				
		<LI><A href="http://www.debian.org/">Debian/GNU Linux OS</A>- which I use on my home computer
				
		</UL>
		
	<P><FONT face="Lucida,Helvetica">Doing the preliminary cost estimate comparison between these two options, I quickly ruled out Windows(TM)-based system.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">And so my search began for a production
 quality mechanical CAD system that would run under Linux, and be reasonably priced.</FONT></P>
	
	<HR>
	
	<H2><A name="search"></A><FONT face="Lucida,Helvetica">SEARCH</FONT></H2>

	<HR>
	
	<A href="./naden.html#toc"><FONT size="2"><FONT face="Lucida,Helvetica">(go back to the top)</FONT></FONT></A>
	
	<P><FONT face="Lucida,Helvetica">I have used Linux for three years, and all
				that time the available applications and their quality have
				constantly been improving. I have felt that the only field where
				Linux was thin in available applications was mechanical
				engineering. True, there have been some CAD apps out there, but
				they either required too much programming (very powerfull <A href="http://www.microform.se/">VARKON</A>,
				for example) or were too simplistic for production drafting
				(otherwise very good xfig/transfig combo). I have also looked
				into <A href="http://www.bentley.com/academic">Bentley's Microstation (TM)</A>( 
				for Linux, but they only offered educational licences at the time
				( a move I will <U>never</U> understand: who would get an
				educational licence for a piece of software they can not continue
				using after graduation- at least not under the same OS-?). Just
				for the record, I think the Microstation(TM) could blow away
				anything offered for Linux in this field, if they had some
				management vision and interest in developing for Linux community.
				One other site is worth mentioning, if for nothing else but for
				more exposure of this project to other Linux users- <A href="http://pw2.netcom.com/~iamcliff/FREEdraft.html">FREEDraft project</A>. It is an attempt
				to bring to life a GNU drafting package, and I wish those people
				the best of luck in future development.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Then I have noticed two new entries in the
				software arena, LinuxCAD and VariCAD. I have almost purchased
				LinuxCAD (at $75, it seemed like a great deal), but didn't like
				the fact they had no demo available, and their E-mail reply to my
				preliminary inquiry had amounted to a little more than
				self-promoting junk mail. Only a couple of days later there was a
				usenet discussion about LinuxCAD and result was a <A href="http://www.ssc.com/lg/issue30/wuest.html">page posted here</A>, which comletely turned me away from LinuxCAD. I went to <A href="http://atlanta.varicad.com/">VariCAD's USA site</A> instead, and quickly found out there is a working demo (without Save features) available for a download.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">If you are interested in doing a search for
				available apps for Linux on your own, I recommend following sites
				as a good starting point:</FONT></P>
				
		<UL>
		
		<LI><FONT face="Lucida,Helvetica">very good for scientific applications:<A href="http://SAL.KachinaTech.COM/"> Kachina Technologies site</A></FONT> 
		
		<LI><FONT face="Lucida,Helvetica">for general linux application: <A href="http://tsikora.tiac.net/linapps">linux applications mirror site</A></FONT> 
				
		</UL>
	
	<HR>
	
	<H2><A name="varicad"></A><FONT face="Lucida,Helvetica">VariCAD FOR LINUX</FONT></H2>

	<HR>
	
	<P><A href="./naden.html#toc"><FONT size="2"><FONT face="Lucida,Helvetica">(go back to the top)</FONT></FONT></A></P>
	
	<H3><FONT face="Lucida,Helvetica">Obtaining And Installing The Software</FONT></H3>
	
	<P><FONT face="Lucida,Helvetica">Download
				consisted of getting four tarred files, and amounted to about
				5Mb, which is very reasonable for a CAD system, along with the
				installation script. Available for the download is also RPM
				package, which must be downloaded as a roughly 5Mb single file,
				and it represents a nice touch for people running <A href="http://www.redhat.com/">Red Hat</A> distribution of Linux.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Installation instructions, for people who
				choose to get the plain tarred files, are very simple and clearly
				stated at the download site. I have simply followed those
				instructions, and it worked like a charm with version 6.1. As of
				a Aug. 29 1998, they have released new version, 6.2-0.3, and in
				my experience, there is a small glitch in installation script
				inst.sh which requires one to log in as root for it to work. On
				my system trying to execute the inst.sh script under su did not
				work; only 'true' root login managed to install the program.
				Also, the tarred files had been deleted in the installation
				process, so if you want to have a backup on the floppies, be sure
				to copy tarred files someplace else first, before executing the
				inst.sh script. This didn't happen with the version 6.1, though.
				On the other hand, new version (6.2-0.3) seems to be more robust,
				and it adds a drop-down menu for Internet access, which I haven't
				tested yet.</FONT></P>
				
	<P><FONT face="Lucida,Helvetica">Since I'm running the Debian distribution, I
				would have liked to see the option in the installation process
				for choosing the target directory, and would have rather placed
				the VariCAD under /usr/local tree than under the default /usr
				tree. On the other hand, after installation script had completed,
				executing varicad command for the very first time in the rxvt
				resulted in a flawless start. I'm running the <A href="http://www.xfree86.org/">Xfree86</A> windowing system, with xserver-mach64 running in the 1152x864
				resolution and 32 bpp, and VariCAD didn't seem to have a problem
				with those settings. After I have been playing with the software
				for a week, I decided it was worth the price they are asking for
				it and, after I have mailed in the cheque, received a small file
				in an E-mail which enables the save feature. As per instructions
				in the E-mail I copied the file to the /usr/lib/Varicad tree and
				at the next start of the program, the pop-up message about demo
				nature of the program went away, and I could happily save files
				and settings</FONT></P>
				
	<H3><FONT face="">Using The VariCAD</FONT></H3>
	
	<P><FONT face="Lucida,Helvetica">Before going any further, I would like to say that my exposure to <A href="http://www.autodesk.com/">AutoCAD (TM)</A> has been limited to version 10, way, way back, and if
				you are expecting the direct comparison between Mechanical
				Desktop (TM) and VariCAD, I'm afraid you will be dissappointed.
				If you are using AutoCAD and have given VariCAD a try, please <A href="mailto:ldtech@istar.ca">E-mail me</A> your short review in an
				HTML format, and I'll post it here or send me an URL pointer to
				your page.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Because VariCAD does not use the Motif
				libraries, the executable is rather small and efficient. Fired up
				and having a rather simple 2-D drawing running, VariCAD toll on
				the system's resources is rather small ( output from ps on my
				system running VariCAD):</FONT></P>
	
	<P><FONT face="courier">~$ ps aux</FONT></P>
	
	<P><FONT face="courier">USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND</FONT></P>
	
	<P><FONT face="courier">dnaden 2406 11.4 2.7 4844 1760 1 S 22:16 0:02 /usr/bin/varicad</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">The interface is very plain which is a plus
				in my opinion. Starting with ver. 6.2-0.3, the 'tool-tip' style
				description is available for all the buttons of the toolbar,
				which is a very important feature if you are just strarting to
				use the software. On-line manual is available from the drop-down
				menu, and it is very complete. Some parts suffer from
				less-than-optimum english translation, but I haven't found that
				to be in a way of getting the gist of the information through.
				Then again, my english is not perfect, either...</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Sytem starts up in a 2-D mode, and switching
				into the 3-D mode is a matter of simple click on the icon in the
				top right-hand corner. Default toolbar features the icons for
				drafting functions, and paging through the toolbars for other
				functions ( dimensioning, for example) is done by clicking on the
				respective icon in the bottom part of the toolbar. All toolbars
				seem to be of the tear-off variety, but I haven't tested that
				extensively ( I like my interface clean). And all the functions
				are available through the drop-down menus as well.</FONT></P>
				
	<P><FONT face="Lucida,Helvetica">First thing I have noticed is that panning
				and zooming back and forth is done fast. A simple subjective
				comparison between very similar machines running CADKEY (TM)for
				Windows(TM) v.7.5 (under WinNT(TM)) and VariCAD v6.2-0.3 under
				Debian/GNU Linux v.2.0 would suggest that VariCAD is slightly
				faster in redrawing the screen. Another feature I like is the way
				zooming and panning work (users of Pro/E should feel at home
				here): dragging the mouse ( and having the Shift+LMB pressed) up
				and down zooms in and out, respectively, and dragging the mouse,
				having the Control+LMB pressed, does the panning. It is very
				convenient feature when you get used to it. And if you get lost
				in all this zooming and panning, there is a feature called Aerial
				View, which brings up a small window with the overview of the
				entire drawing area and highlights the square you are in at that
				moment in the main window ( I believe I have seen same feature in
				AutoCAD Lite(TM)...). Other noticeable feature ( for me at least)
				enables one to highlight the feature when the mouse cursor is
				over it. If you ever worked with lots of lines spaced close to
				each other, you will learn to appreciate this. It can also
				highlight feature's significant points (i.e. end- or mid- point
				of the line, center of the circle and so on) by popping up a
				small code when your cursor is on top of it. I haven't had that
				in CADKEY(TM), so it will take me some time before I can remember
				all the symbols and their meaning, but AutoCAD(TM) users should
				be familiar with them ( for example, @ for the center of the
				circle...).</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Otherwise, VariCAD seems to have all the
				drafting, geometric tolerancing and dimensioning functions one
				would expect to find in a decent CAD package. In addition to
				that, there is a macro language, which I haven't had a chance to
				try yet, rather complete 3-D kernel (see some screenshots from
				VariCAD's site) and ability to import DXF and IGES formats. I
				have imported a 1.2Mb DXF file from CADKEY(TM) without a lost
				line, but dimension text was angled, and it could not be edited.
				But, as I said, I used CADKEY (TM)to export the file, and
				therefore the file is being translated twice, and it is hard for
				me to determine which one is &quot;wrong&quot; translation. I
				haven't tried to optimize the translator in VariCAD either.
				Translation itself is transparent, which means that as soon as
				you read the DXF or IGS file, VariCAD produces its native (dwb)
				file on which you continue to work. To translate the file to DXF
				from within the VariCAD, just save the file with a DXF extension.
				As simple as that.</FONT></P>
	
	<P><FONT face="Lucida,Helvetica">Developers have been smart enough to include
				in the &quot;core&quot; software a database of Parts, consisting
				of nuts, bolts, washers, pins and SKF bearings. Also a part of
				the package is a calculation program for calculating spur and
				straight bevel gears, splines, shafts, bearings and compression
				and extension springs, as well as the V-belt drives. ( I have
				probably missed some other elements in here. Check out <A href="http://www.varicad.com/gallery.htm">their site</A> for full
				description...) There is also a possibility of creating the
				information needed for making the BoMs, although I haven't
				touched that yet myself. I also haven't had the need to print
				anything as of yet; most of my jobs are being sent in a DXF
				format on a floppy.</FONT></P>
				
	<P><FONT face="Lucida,Helvetica">The only gripe I have with the software is
				that I can't seem to be able to find out how to dimension to or
				from &quot;imagined&quot; intersection. I frequently need to use
				the dimension from this or that edge to the intersection of the
				chamfered or radiused corner, and I can not get VariCAD to
				recognize that I want to use the point where two lines would have
				intersected each other, had it not been for the radius for
				example, as one of the references for the dimension. If anyone
				knows how to do it, please let me know.</FONT></P>
	<H3><FONT face="Lucida,Helvetica">People Behind The Software (Support)</FONT></H3>
	
	<P><FONT face="Lucida,Helvetica">I have found people at VariCAD to be knowledgable and courteous.
				Everyone, from sales rep in Canada to their HQ in Checz Republic,
				had answered my e-mails within 24 hours. As an example: in the
				6.1 version, there was a bug in vertical dimensioning when using
				the toleranced dimension (the dimension line would not break
				around the text, but go right through the text). I have written
				an E-mail about it to their tech support, and within 12 hours, I
				had an answer- they were aware of it, and it happened only in
				inch drawings, not in metric ones, and will fix it in upcoming
				6.2 version. Fair enough, I thought... About a month later, on
				the very day of the new version release, I have received an
				E-mail (from the same tech support guy) notifiying me that the
				new version is available for download, and the bug I have asked
				about had been squashed. That is what I consider a good customer
				service.</FONT></P>
	
	<H3><FONT face="Lucida,Helvetica">Other User's Opinions On VariCAD</FONT></H3>
	
	<P><FONT face="Lucida,Helvetica">In a couple ow weeks my mCAd page was up, I have already received a couple of E-mail responses from other VariCAD users. Thanks for your input. Keep it coming...
	<BR>
	One user had a problem with too much mousing (not enough command line input) in the earlier (but don't know which) version of variCAD and didn't try it since. I know there is a command line input, but as I said, it is not straight *utoCAD copy, so some commands may need re-learning. And also the quality of the help files was questioned, but I maintain that is mainly a language barrier. We English speaking folks take the fact that everyone knows English too much for granted.
	<BR>
	The other E-mail was regarding the inconsistent volume calculator. I
can not attest or deny that, as I didn't use 3-D enough as of yet, and VariCAD
allegedly claims they have had no such problems.</font>
	

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Damir Naden <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./bentson.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">The Proper Image for Linux</font></h1>
<H4>By <a href="mailto:bentson@grieg.seaslug.org">Randolph Bentson</a></H4>
</center>
<P> <HR> <P>  

I get mail from folks about my book, the device driver I wrote for Linux,
and about articles I've written for <i>Linux Journal</i>. A few months ago I got one which said, in part:
<p>
<blockquote><font color="navy">
My boss is a great guy to work for ...[but he] is of the opinion
that Linux is the work of ``college punks'' and will not
consider it for serious work.
</font></blockquote>
<blockquote><font color="navy">
He had a nightmare with the MINIX file system and is permanently
convinced that UNIX simply cannot be trusted and that Linux is the
work of pimply-faced sophomores with time on their hands.
I got a good laugh out of that while looking at your picture
and reading your bio.
</font></blockquote>
I can only hope his laughter was kindly.
The opinions expressed by his boss weren't the first I've heard of
that sort. Nor, I fear, will this be the end of it. Nonetheless, I decided to take
a shot at confronting these claims.
<p>
I had suspicions that Linux contributors are a bright,
experienced and well-educated bunch of folks. The discussions in the
various Linux newsgroups and mailing lists aren't lightweight,
nor is the resulting operating system. My ``feel'' of the operating
system is that it's based on a lot of mature judgments and
there is some theoretical grounding in what's being done.
<p>
I gathered up a <A HREF="./bentson.html#credits">list of contributors</A> (from /usr/src/linux/CREDITS)
and sent off 241 notes. Partial text of this note follows:
<blockquote><font color="green">
I'm conducting a brief survey of fellow
contributors to the Linux kernel.
...
</font></blockquote> 
<blockquote><font color="green">
It seems that products developed by students,
no matter how well designed and implemented
and no matter how qualified the students,
are regarded as having lower quality.
...
</font></blockquote> 
<blockquote><font color="green">
But that's not really the case with Linux.
Almost from the start it has been more than just a school project.
...
</font></blockquote> 
<blockquote><font color="green">
I'd like to investigate the educational backgrounds and current work
situations of the contributors.
</font></blockquote> 
I sent my notes with some
trepidation--I didn't want to bother folks while they were working on
important projects, and I feared a lack of response.
<p>
I needn't have worried. So far I've received 103 replies,
many of which have included a few words of encouragement.
It seems that I wasn't the only one who wanted to respond
to unjustified complaints about Linux.
(Another 29 notes were returned with address errors.
I hope to see corrections to the CREDITS file.)
<p>
<h3>Education</h3>
<p>
The level of response was the first piece of good news.
The second was that I've been stunned
by how strong the development team is
with regards to both credentials and experience.
<p>
From these replies I found:
<p>
<ul>
  <li> 	1 had completed just basic public education (high school)
  <li> 	15 had attended college or technical school
  <li> 	23 had an undergraduate degree (B.S., B.A., etc.)
  <li> 	19 had attended graduate school
  <li> 	15 had a graduate degree (M.S., M.A., etc.)
  <li> 	9 had done further graduate work
  <li> 	19 had a terminal degree (Ph.D., M.D., etc.)
</ul>
That's got to totally demolish the image of college hackers--at least
the sophomore part of it. I figured I was an exception when I started working
on the Cyclades driver while avoiding rewriting my dissertation.
I thought, once folks were awarded a Ph.D.,
they would be busy with research, teaching or some other interest.
I guess Linux development may be the doctor's favorite hobby.
<p>
When I offered an earlier summary of these results,
my correspondent reported that his boss wisely intoned, ``those folks
are all academia and none of them have ever tried to run a business.''
<p>
<h3>Experience</h3>
<p>
I had sort of expected a comment along those lines and
fortunately I had asked a few more questions in my survey.
One hundred of the replies also reported the number
of years spent programming or doing system design.
<p>
<ul>
  <li> 	4 had 1 year
  <li> 	10 had 2-4 years
  <li> 	31 had 5-9 years
  <li> 	40 had 10-20 years
  <li> 	16 had 20+ years
</ul>
More than a few of us were programming before the integrated circuit
came into general use.
(Perhaps a mixed blessing--some of us may still suffer from
post-FORTRAN syndrome.)
<p>
As I noted earlier, I have also felt that Linux has benefitted from a
broad experience in its developer base.
Linux may be a first operating system for a lucky few,
but almost everyone (all but three)
claimed to be at least a skilled user of another operating system.
Eighty-three were skilled users of several other operating systems.
<p>
Nor was their contribution to the Linux kernel the first of that sort.
Twenty have contributed to another operating system and
another twenty-two have contributed to several other operating systems.
One reported:
<p>
<blockquote><font color="navy">
Speaking for myself, I had the same idea Linus did, but he beat me
to it. (I've heard others say this as well.) I knew how to build a
UNIX-like system from the ground up, and there was a need for it
for PCs. (Vendors were charging exorbitant amounts for poor products
in those days, and there was no good 32-bit development system for
386s.) I just didn't have the time. I had been playing with MINIX
when Linus showed up on the MINIX newsgroups, and it took off from
there. I can tell you that though I was a student at the time, I'd
been a professional systems programmer for many years before. So,
I and many others knew what professional quality software was,
as well as how to produce it. I think it turned out pretty well.
</font></blockquote>
<h3>Current Use</h3>
<p>
Finally, I wanted to know if the contributors were ``doing
Linux'' in their careers. Eighty-two said their current employment
was based on their computer skills. It was interesting to note that over a
third reported their current employment supported or relied on their
Linux development efforts. Sadly, two reported they were currently
unemployed, but one of those also noted that he was ``voluntarily
unemployed to have time to put my life in better order.''
<p>
Perhaps one significant difference between Linux development and
academic or commercial development is the duration of personal interest.
In an academic setting, a student typically has one term,
or at most one year, to work on any given program.
When programmers leave a company,
support is picked up by someone who has no sense of what has gone before.
There is greater continuity in the Linux community
because of the nature of submission and distribution.
No matter what is happening at school or
where one works day to day, contributors can keep in touch with progress on
their piece of the puzzle.
One person noted, ``Personally, I did start my code in school,
but that does not stop me from maintaining it now.''
<p>
<h3>Motivations</h3>
<p>
There are some other issues which weren't addressed by my survey.
Although it might not seem relevant to quality and performance,
a person's interest has a great deal to do with the outcome--it leads to
a distinction between ``craftsmanship'' and ``work
product''. Another person noted:
<blockquote><font color="navy">
``Intent'' is what I think all of these debates are
about. In the commercial world there is only one true answer
to ``Why are you helping develop Linux?''--``To make a
living.'' In the Linux community I'm quite certain the answer would be
more closely aligned to ``For me to use.'' The Linux community
tends to be self-driven and self-motivated, and that is what leads to the successes
and the apparent failures in our development environment.
</font></blockquote>
<blockquote><font color="navy">
We are not a company; we don't have any one person,
or group of people, setting the direction Linux will take.
That direction is set by those with the energy
to actually <i>do</i> something.
</font></blockquote>
Another motive, akin to what pushed me to first join the effort,
was shared by another respondent who said,
``When I wrote [my code] for the Linux kernel I was working at [my former
employer]. Linux use there was extensive, and I wanted to give something back.''
<p>
Motivation leads to the final, and most significant issue--one
which cannot be examined by a developer survey.
<p>
<h3>Quality</h3>
<p>
In a world driven by marketing, image is the basis for purchasing decisions.
Even if a good image could be established for Linux
by listing credentials or tabulating years of experience,
I'd be reluctant to shift to that level.
I'd much rather see acceptance and popularity for Linux
based on quality and performance.
<p>
Even though I hadn't asked specific questions on this topic,
a few people offered comments.
One note seemed to identify, however obliquely,
on what may be the key to Linux's success.
<p>
<blockquote><font color="navy">
In general, my experience is that most software I have seen which
was developed by students is not of the professional quality I would like to see.
On the other hand, much of the commercial software I have seen, which was developed
by professional software development companies, is also not of the professional quality I would like to see.
The difference is most people do not get to see the internals of
commercial software.
</font></blockquote>
Developing on this theme, another wrote:
<blockquote><font color="navy">
The reason Linux is stable and usable
is not because of its student programmers [or lack thereof].
It is because of the overwhelming feedback that
ALPHA and BETA testers provide. When you read the Linux kernel,
you will find many parts are poorly structured, poorly written and poorly
documented. However, people dared to test it and report their problems;
Linus and friends respected the error reports
and went ahead to fix them. That is why it works so well.
</font></blockquote>
<blockquote><font color="navy">
In addition, psychology sometimes causes weird effects.
If a user discovers a bug in his system,
reports the bug and sees it fixed eventually,
that user is happy because he was treated with respect.
Most likely, he is even happier than he would be
in the bug-free case.
</font></blockquote>
We not only need to bring the CREDITS file into an accurate state,
but we also need to acknowledge the thousands who have contributed to Linux
by using it and sharing their discoveries--good or bad--with others.
<p>
Peter H. Salus reports the UNIX philosophy in <i>A Quarter Century of
UNIX</i> as:
<ul>
  <li> 	Write programs to work together.
  <li> 	Write programs that handle text streams, because that is a
universal interface.
</ul>
I'd like to close by adding another entry,
suggested by UNIX and dominant in Linux:
<p>
<ul>
  <li> 	Write programs you enjoy.
</ul>
<h3>Postscript</h3>
<p>
I just received a note from the person who sparked the original survey.
He reports:
<blockquote><font color="navy">
I took my ``hand-me-down'' Linux box, an
unimpressive 75MHz Pentium with 64MB RAM and a tiny 600MB HD to work. My
boss was amazed that office applications such as StarOffice were
available and was quite impressed when I read a Word
document with StarOffice and then converted it to HTML. Samba was another
revelation. Overall performance impressed him. In a few crude tests, it
outperformed a ``commercial'' system running with 128MB RAM, dual
200MHz processors and all ultra-fast/ultra-wide SCSI drives.
</font></blockquote>
<blockquote><font color="navy">
After a couple of callers indicated an interest in UNIX versions,
we checked the price of current systems. My boss decided
Linux was indeed priced right, and asked me to start on a port.
</font></blockquote>
It looks like we've won one more away from the dark side.
<p>
<a name="credits"></a> 
<h3>Credits</h3>
<p>
Linux kernel developers are self-reported in the file
/usr/src/linux/CREDITS.
If their names weren't entered there, I didn't find them.
Furthermore, there are many more who contribute by testing various
development releases and reporting on the problems.
Sometimes they even report possible source code corrections,
but they aren't included in the CREDITS file.
<p>
Linux consists of much more than just the kernel.
There are a host of related programs,
such as those which are broadly distributed by the
Free Software Foundation for UNIX and other
operating system users, and others which support
only Linux.
<p>
It would take significant effort to identify all those
who have contributed to make Linux a success.
The Debian project reports who is working on that distribution,
but that's not enough.
I'd like to see a CREDITS file in every package and tar file.
I'd appreciate hearing of efforts along this line.

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Randolph Bentson <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./naden.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./wilson.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">Serializing Web Application Requests</font></h1>
<H4>By <a href="mailto:colin@u.washington.edu">Colin C. Wilson</a></H4>
</center>
<P> <HR> <P>  

Web application servers are an extremely useful extension of the basic web
server concept. Instead of presenting fairly simple static pages or the
results of database queries, a complex application can be made available
for access across the network. One problem with serving applications
is that processing on the back end may take a significant amount of time
and server resources--leading to slow response times or failures due to
memory limitations when multiple users submit requests simultaneously.
<p>
There are essentially three basic strategies for handling web requests
which cannot be satisfied immediately: ignore the issue, use unbuffered
no-parsed-header (NPH) CGI code to emit ``Processing'' while the back
end completes, or issue an immediate response which refers the user to
a result page created upon job completion. In my experience, the first
option is not effective. Without feedback, users invariably resubmit
their requests thinking there was a failure in the submission.
The redundant requests will exacerbate the problem if they aren't
eliminated. To make matters worse, the number of these redundant requests will
peak precisely at peak usage times. NPH CGI is most useful when the
processing times are short and the server can handle many simultaneous
instances of the application. It has the drawback that users must sit
and wait for the processing to complete and cannot quickly refer back to the
page. My preferred method is referral to a dynamic page,
combined with a reliable method of serializing requests.
<p>
<h3>Description</h3>
<p>
<A HREF="./wilson_s1.html">Origins of Generic NQS</A> 
<p>
As an example, I will describe my use of Generic NQS (GNQS)
(see http://www.shef.ac.uk/~nqs/ and http://www.gnqs.org)
to perform serialization and duplicate job elimination in a robust
fashion for a set of web application servers at the University of
Washington Genome Center. GNQS is an Open Source queueing package
available for Linux as well as a large number of other UNIX platforms.
It was written primarily to optimize utilization of supercomputers and
large server farms, but it is also useful on single machines as well.
It is currently maintained by Stuart Herbert (S.Herbert@Sheffield.ac.uk).
<p>
At the genome center, we have developed a number of algorithms for the
analysis of DNA sequence. Some of these algorithms are CPU- and
memory-intensive and require access to large sequence databases. In addition
to distributing the code, we have made several of these programs
available via a web and e-mail server for scientists worldwide. Anyone with access
to a browser can easily analyze their sequence without the need to
have UNIX expertise on-site, and most importantly for our application,
without maintaining a local copy of the database. Since the sequence
databases are large and under continuing revision, maintaining copies
can be a significant expense for small research institutions.
<p>
The site was initially implemented on a 200MHz Pentium pro with 128MB
of memory, running Red Hat 4.2 and Apache, which was more than
adequate for the bulk of the processing requests. Most submissions to
our site could be processed in a few seconds, but when several large
requests were made concurrently, response times became unacceptable.
As the number of requests and data sizes increased, the
server was frequently being overwhelmed. We considered reducing the maximum size
problem that we would accept, but we knew that, as the Human Genome
Project advanced, larger data sets would become increasingly common.
After analyzing the usage logs, it became apparent that, during peak
periods, people were submitting multiple copies of requests when the
server didn't return results quickly. I was faced with this performance
problem shortly after our web site went on-line.
<p>
<h3>Implementation</h3>
<p>
<A HREF="./wilson_l1.html">Listing 1. Sample GNQS Commands</A> 
<p>
Instead of increasing the size of the web server, I felt that robust
serialization would solve the problem. I installed GNQS version 3.50.2
on the server and wrote small extensions to the CGI scripts to queue the
larger requests, instead of running them immediately.
Instead of resorting to NPH CGI scripts which would lock up a user's
web page for several minutes while the web
server processed, I could write a temporary page containing a message
that the server was still processing and instructions to reload the
page later. By creating a name for the dynamic page from an md5 sum of
the request parameters and data, I was able to completely eliminate the
problem of multiple identical requests. Finally, all web requests were
serialized in a single job queue, and an additional low priority queue
was used for e-mail requests. It was a minor enhancement to allow
requests submitted to the web server for responses via e-mail to simply
be queued into the low priority e-mail queue. Consequently, processor
utilization was increased and job contention was reduced.
<p>
While this proved quite effective from a machine utilization standpoint,
the job queue would get so long during peak periods that users
grew impatient. An additional enhancement was made which reported the
queue length when the request was initially queued. This gave users
a more accurate expectation about completion time. Additionally,
when a queued job was resubmitted, the current position in the queue would
now be displayed. These changes completely eliminated erroneous inquiries
regarding the status of the web server.
<p>
After over a year of operation, we had an additional application to
release and decided to migrate the server to a Linux/Alpha system running
Red Hat 5.0. The switch to glibc exposed a bug in GNQS that was initially
difficult to find. However, since the source code was available, I was
able to find and fix the problem myself. I have since submitted the patch
to Stuart for inclusion in the next release of GNQS and contributed a
source RPM
(ftp://ftp.redhat.com/pub/contrib/SRPMS/Generic-NQS-3.50.4-1.src.rpm) to the
Red Hat FTP site.
<p>
<h3>Future Directions</h3>
<p>
Queuing requests with GNQS allows another interesting option which we may
pursue in the future as our processing demands increase. Instead of
migrating the server again to an even more powerful machine or to the
complexity of an array of web servers, we could retain the existing
web server as a front-end server. Without any changes in the CGI scripts
on the web server, GNQS could be reconfigured to distribute queued jobs
across as many additional machines as necessary to meet our response
time requirements. Since GNQS can also do load balancing, expansion can be
done easily, efficiently and dynamically with no server down time.
The number of queue servers would be completely transparent to the
web server.
<p>
<h3>Evaluation</h3>
<p>
There are a number of ways to handle web applications which require
significant back-end processing time. Optimizing application servers
requires different techniques than optimizing servers for high hit rates.
For application servers, the limiting resource may be CPU, memory or
disk I/O, rather than network bandwidth. Response times to given
requests are expected to be relatively slow, and informing waiting users
of the status of their jobs is important. Queuing requests with GNQS
and referring the user to a results page has proven to be an effective,
easily implemented and robust technique.
<p>
<h3>Acknowledgements</h3>
<p>
Thanks to Stuart Herbert, GNQS maintainer.
<p>
This work was partly supported by grants from the Department of Energy
and the National Human Genome Research Institute.

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Colin C. Wilson <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./bentson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./defurne.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">Thoughts about Linux</font></H1>
<H4>By <a href="mailto:jurgen.defurne@scc.be">Jurgen Defurne</a></H4>
</center>
<P> <HR> <P>  

<H1>Introduction</H1>
<P>First, I want to give a small explanation on the backgrounds of this
document. There are several parts which lead to my advocating of Linux
in the corporate environment.
<P>First of all, it is already four years since I discovered Linux. It is only
recently however that I really started using Linux itself. I used some
GNU tools on the DOS and OS/2 platform, but only through recently
expanding my storage could I install Linux. I printed some manuals,
subscribed myself to the Linux Journal, I try to read the Linux Gazette
frequently. Well, I consider myself almost a fan of the first hour of
Linux.
<P>Secondly, since the beginning of 1997 I have worked in a traditional
mini/COBOL/database environment and I have noticed that the people
who use these systems, find a lot in such an environment : easy to
control and operate, you need only one person to program, background
operation etc. The other side of the coin is that these proprietary
systems are expensive. You pay every year an expensive maintenance
contract or you pay an expensive price for reparation and upgrading.
<P>My third reason, last but not least, is that I have never liked
Windows in any of its incarnations since 1990. It generated GPF's for
unknown reasons in 1990 and eight years later, it still does. It forces
people in buying expensive hardware, which then cannot be utilised
efficiently (if you don't want to crash).
<P>These three reasons have lead me to the writing of three document,
which I want to be published via the Linux Gazette. The reasons for
this is that I found that the Linux Gazette is also read by people who
have other system backgrounds than only DOS or Linux, and this is
crucial for the objective that I want to reach.
<P>This objective is in its essence the same as Linus Torvalds says,
and it is :<CITE>World domination</CITE>. However, I have my own
reasons to believe that world domination will not be attained only
through the PC, workstation and Internet applications market. <EM>I
believe that Linux has the potential to compete in the corporate
marketplace.</EM> Alas, there are still a lot of holes to be filled in
before this will come true. However, I also think there is enough
potential among the Linux enthusiasts to make this dream come true.
<P>The following text consists of three parts in which I was trying to
order my ideas about what Linux further needs to attain the stated
goal.
<P>In the first part that I wrote, I am trying to compare Linux systems with mini- 
and mainframe-computers that I know and their architectures and I want to make 
an appeal to people who might be interested in developing Linux for large 
systems. I posted it on several c.o.l.* newsgroups, but I did not
receive much response (only 1 person seemed interested).

<H2>Mainframe Linux/Linux Mainframes</H2>
<H3>0. To do</H3>
<P>This document should be thoroughly cleaned up and restructured. The main
reason that I send over the Internet as is, is that I want to know the amount
of response it generates. If there is no interest whatsoever, then the
project will be cancelled. If you made it through here, please read on.
Any ideas to have a good working title or something like that, are always
welcome.
<P>This document doesn't have the status of HOWTO. If I would assign it a status,
then it would be something like an RFC, although not that official.
<P>I apologise if things are not always clear. I need to document some parts
with graphics to provide a clearer understanding. It should probably
also be created as an sgml-file, to have more processing power.
<P>Although this paper is sent to different linux newsgroups, it should be best
to try to pick just one newsgroup to communicate about this document.
<H3>1.</H3>
<P>This document is by no means complete. It attempts to define a framework to
develop and deploy Linux as a mainframe operating system. If any idea's in
this document have duplicates somewhere else in the Linux development community,
I would be glad to know of them, so that
<OL>
<LI>They can be used with much less development effort
<LI>They can be referenced to in (hopefully) further editions of this
      document
</OL>
<H3>2. Terms and conditions</H3>
<P>This document is for the moment completely my own responsibility and my own
copyright. It may be distributed everywhere, but I am the only one who may 
change it. Please, send questions and suggested changes to my email-address
jurgen.defurne at scc.be.
All trademarks acknowledged.
<P>I intend to put much time into this project. I have a fine, regular job working
daytime as a COBOL programmer, so time should be not really a concern.
<H3>3. Rationale</H3>
<P>The ideas in this document are a reflection of my own experiences in working
with computers and things that I have read about in a whole bestiary of
publications (magazines, books, RFC's, HOWTO's, The Web, Symposium records,
etc...). The basis is this : Linux is highly scalable. For me, it has proven
to be far more scalable than any MS product. I run Linux on the following
systems :
<UL>
<LI>Toshiba portable computer 386sx/16MHz/3Mb/200 Mb
<LI>386sx/16MHz/16Mb/Diskless
<LI>386/33MHz/4Mb/200Mb
<LI>486/50MHz/32Mb/100Mb
<LI>6x86/P150+/16Mb/500Mb
</UL>
<P>Some of these systems are interconnected, others not (yet). With the use of
telnet, X and TCP/IP it is possible to use these systems together, to run
tasks on different systems etc. But I want more. What I would really like is
that these interconnected systems can be viewed as one single system, with a
common address space, and where their individual resources are added together
to form a more powerful computer. The main target would be to make it possible
to introduce Linux in environments where traditional minicomputers are used
for data-entry and data-processing. This may sound like pretty ambitious goal.
I don't know if it is. What I do know is that these are environments where
high availability is a top priority (<A HREF="#note_1">Note 1</A>).
<P>Another reason to do this project is the fact that in the beginning of the year
Tandem has built a mainframe computer using 64 4-way SMP systems, NT,   
their own interconnection software and Oracle Parallel Server. Why shouldn't we
be able to do something alike ?
<H3>5. Goals</H3>
<P>This document must describe not only software, but also hardware and system
procedures. I hope to revise it very regularly. I would like it to contain
links to used source code, schematics, construction plans, all used sources
and a history and possible planning of the project. It should also give people
who want to make money from Linux the possibility to do this on a professional
level. That is, they should be able to help companies with processing
requirements to assess their needs, give advice on required hardware, install
and implement the system and provide service, maintenance and education.
<H3>6. What makes a good mini/mainframe environment ?</H3>
<P>I haven't had a regular programming education. I am an electronics engineer.
After school I got into microcomputers and programming and I broadened my
education with courses on business organisation and industrial informatics. My
experiences in the mini/mainframe world date back from as recently as januari
1997. At first I got to work in WANG VS (<A HREF="#note_2">Note 2</A>)
environment, now I am still working as WANG programmer, but the WANG's
have a duty as front-end input processors to the mainframe (Bull
DPS8000/DPS9000) and as legal document processing systems. In my first
job, the WANG VS minicomputer was used more as production mainframe system.
<P>Now, what do these systems have in common ?
<UL>
<LI>a fault-tolerant, high performance file system
<LI>database products with transactional capabilities
<LI>a single compiler for development, which supports the file system and
the database management system
<LI>a versatile scripting or job control language
<LI>an interactive development system
<LI>easy access to operating system functions
<LI>easy, but powerful access to operate the system
<LI>optional : powerful tools for non-programmers to access, extract and
process data from the database (Reports, Queries, ...)
</UL>
<P>The main difference between the mini and the mainframe is in the operation of
the system. The four main tasks that have to be done on a computer system are
administration, exploitation, production maintenance and development. On a
mainframe these tasks are done by different people, on a mini these tasks can
be done by one person, or shared, but you don't need full time personnel for
the different tasks (except for programming, that is). The system running on a
mainframe can be sufficiently complicated that some tasks or operations may only
be done by some trusted personnel.
<P>Operating the system comprises the following tasks :
<UL>
<LI>Managing printers and print-queues
<LI>Managing jobs and job-queues
<LI>Managing communications and communications devices
<LI>Managing disks, tapes, workstations and system options
</UL>
<H3>7. What makes a good mini/mainframe computer ?</H3>
<P>Basically, the ability to handle tasks efficient and fast. If you want to know
more about the chores of operating systems, there is enough literature available
(see literature list). The basic problem in running a large computer system is
the difference between batch-operations and interactive or real-time operations.
You want batch programs as fast possible to be executed and you want for the
other kind a fast response time. The basic problem with PC's versus
mini/mainframe computers is that the IO structure of the PC is very primitive.
This is starting to change, first with VESA, now with PCI, but it still comes
nowhere in the neighbourhood of a minicomputer. Basically, these systems always
have a separate internal processor (or more than one) on the IO bus to handle
data transport between devices and the memory. With I2O, this should become
available to the PC world, but it is still proprietary and not available to
Linux and/or Open Source developers.
<P>Tasks compiled for x86-architectures tend also to use more memory. Let's take
some examples from minicomputers and mainframes I know about and have access
to documentation.
<TABLE>
	<CAPTION>Overview of some corporate systems</CAPTION>
		<TR><TH>System		<TH>Main memory	<TH>Clock	<TH>Bus size	<TH>Users supported
		<TR><TD>WANG VS 6	<TD>4 Mb		<TD>16 MHz	<TD>16 bit		<TD>32
		<TR><TD>WANG VS 6120<TD>16 Mb		<TD>20 MHz	<TD>32 bit		<TD>253
		<TR><TD>WANG VS 6250<TD>64 Mb		<TD>50 MHz	<TD>32/64 bit	<TD>253
		<TR><TD>WANG VS 8000<TD>32 Mb		<TD>N.A.   	<TD>32/64 bit	<TD>253
		<TR><TD>BULL DPS9000<TD>2 x 64 Mb	<TD>N.A.   	<TD>N.A.   		<TD>N.A.
		<TR><TD>BULL DPS8000<TD>2 x 32 Mb	<TD>N.A.   	<TD>N.A.   		<TD>N.A.
</TABLE>
<P>These systems are smaller than PC's in terms of memory, yet they support more
users and tasks than a PC would do. I wouldn't use my Toshiba portable to
support ten users on a database. Yet, that is what the WANG VS 6 is (was)
capable of, with the same characteristics.
<P>This is for the moment my main criticism of standard PC's and their software :
they are extremely inefficient. The first inefficiency comes from the methods
used to lower the price of a PC : the CPU is responsible for data transport
between devices and memory. You have DMA available, but it isn't very efficient.
The second inefficiency comes from the software mostly used on PC's : it takes
up much space on disk and in memory.
<P>A third inefficiency is in the software itself : it has so many features, but
these aren't used much. The more features in the software, the less efficient
it becomes (<A HREF="#note_3">Note 3</A>).
<P>There is another thing to be learned from mini/mainframe environments : keep
things simple. I don't think the current desktop/GUI environment is simple. It
doesn't have a steep learning curve, but basically what you have are super
souped up versions of what are basically simple programs. When writing
programs or designing systems, one should always keep in that after a certain
point it costs more effort to add more functionality to a program, while this
functionality decreases efficiency.
<H3>8. Existing functionality</H3>
<P>In the area of parallel computers there is the Beowulf system and associated
libraries. Their basic target is parallel processing for scientific purposes,
while my purpose is business data processing. As I see it, some of their goals
walk parallel with mine, especially in the areas of existing bottlenecks : the
network, distributed file access, load balancing etc. However, the way business
programs are run differs from scientific computing. MPP is also more in the way
of creating a computer to run really big tasks, while on a business machine
you have logins from users for data querying, transactional processing, batch
processing of incoming data, preparing outgoing data, establishing communication
with other systems. In this sense, what we are looking for is not to distribute
one task over several computers to speedup processing, but to serve up adequate
processing power, data manipulation facilities and information bandwidth for a
large number of users. These goals need different OS support than MPP.
<P>I have studied the Beowulf structure (a Beowulf HOWTO is available
on the Internet). The Beowulf structure works is a MPP system in which
only one computer effectively runs the application. All other nodes in
the system are slaves to this one CPU. This is why the Beowulf system
is only partially suited to attain my goal.
<H3>9. Where do we start ?</H3>
<P>We need to start with a set of completely defined Linux operated computers,
from now on called CPU's, which are somehow connected to each other by means
of an abstract communications layer or CL. This CL can be implemented using 
serial connections, Ethernet, SCSI or anything else that we can devise to
make CPU's talk to each other. A CPU may be a single-way computer or a
multi-way SMP computer. 
<H3>10. Where do we want to end ?</H3>
<P>I think the end point should be to view the system as one single entity. To
do this, the following requirements should be met :
<UL>
<LI>Every process should see the same file system
<LI>Resources (via /dev files) should be shareable accross CPU's
<LI>Every CPU should have the same view of OS and memory
<LI>Process information should be shared accross CPU's
</UL>
<P>One of the fundamental changes in the OS should be the way exec() operates.
When exec() starts a new process, this could be on any CPU. The original
links need to be preserved and processes should end in the same way as 
always.
<P>Interprocess communication is straightforward I think. What I would like to
know is if it is worthwile to strive for a system view in which all memory
is mapped into one address space ? (Idea behind it : provide every CPU with
the same view of the system : it's OS, followed by the memory pools of all
other CPU's mapped into the same address space). This is what NUMA
(non-uniform memory access) is about. Can the Linux community attain
this subgoal, or does it need to much specialised resources ?
<H3>11. High Availability</H3>
<P>Some key parts of Linux should be redesigned or replaced by fault-tolerant
parts. The largest part which comes to mind is the file-system. A few months
ago I had a nasty experience. A connector on the cable of my SCSI subsystem
had a defect, with the consequence that the system of a sudden completely froze
while I was busy using X-Windows. The trouble with e2fs is that on these
occassions the whole filesystem gets corrupted. This should be made more sturdy.
<P>The other part is that the system may not freeze on these occasions. It should
be possible to provide a bare minimum of functionality, eg. that the kernel
takes completely over and switches to text mode to provide diagnostic
information or tries to create a core dump.
<P>Another problem that I have encountered is the lack of reliability when a
harddisk drive gives trouble. What happened to me whas that on using an old
SCSI drive the kernel and/or e2fs started to write strange messages when I
tried to use the disk. When the system encounters problems with devices, the
problems should be logged, the operation should be stopped and informative
messages should be displayed.
<P>Other key features in the area of HA should be the tolerance of the complete
system when a CPU is missing. A CPU may only be added when it passes the self
test completely and finds out that everything is working fine. When a CPU
quits while being in the system, there should be possibilities to restart
processes which have been interrupted. For this one should provide the 
programmer with features to help with this problems : a transactional file
system, checkpoint functions (other ?).
<P>The last idea I think of is maybe the possibility of swapping a complete task
between two CPU's. A task consists of CODE and DATA. You don't need to save 
CODE. DATA can be completely swapped to harddisk. If you have a way to transfer
the process information from one CPU to another, then it should be possible to
reload CODE and DATA and restart the process on another system.
<H3>12. Summary</H3>
<P>There are two targets. The first is the creation of an extension which combines
several Linux PC into one system. Users and processes should get a same view of
of the complete system as one system. This should also mean that certain
administrative chores should depend only on centrally stored and shared 
information.
<P>The second one is to add more and better managed fault tolerance, preferably
more interactively managed.
<P>Well, this is it. I hope that people ask sane questions, that I don't get
flamed and that it raises enough interest to advance Linux to a higher level.
<H3>References.</H3>
<P><STRONG>Ths reference list is clearly not finished. I need to obtain
more details about some works.</STRONG><BR>
The Linux High Availability White Paper.<BR>
The Beowulf HOWTO<BR>
The Parallel Processing HOWTO.<BR>
Andrew S. Tanenbaum, Design and Implementation of Operating Systems<BR>
<H3>Notes.</H3>
<P><A NAME="note_1">Note 1.</A><NOTE>I worked for 16 months in a small
transport company. The core of the business was contained in a WANG VS
minicomputer. If the system was offline, then nobody could do his work
properly. The system was basically a database to store dispatching
operations, the revenues of all operations, the cost control and the
accountancy. I think there are many small firms, who can't afford
mainframes, but who need more processing power than the average PC can
handle, and where many people need different views of the same data.</NOTE>
<P><A NAME="note_2">Note 2.</A><NOTE>The WANG VS is a particular good
example of proprietary solution which does an excellent job, but with a
very steep price. They are very expensive for the initial buy, the
expansion of the system and the maintenance. I think this is one of the
main reason's why people want to get rid of their WANG systems. You can
buy, expand and maintain an HP system for one tenth of the price the
WANG VS costs.</NOTE>
<P><A NAME="note_3">Note 3.</A><NOTE>If you wonder why I emphasize
efficiency : I became interested in microprocessors in 1980 when you
hadn't much microprocessor and memory. My first computer was a Sinclair
ZX Spectrum with a> whopping 48 kB RAM. I am still astonished what some
programmers could do with that tiny amount of memory. There are other
points besides this : what processing power could be freed up if you
were able to use all those wasted processor cycles in the common
desktop PC's ? For small companies, a PC is still rather expensive.
Combining the power of their PC's could maybe give them an extra edge
in their operations.</NOTE>
<HR>
<P>In the second part I am trying to develop an architecture to extend Linux into a 
parallel processing system, not for numerical processing like Beowulf, but for 
administrative dataprocessing.
<H2>Description of the booting sequence of the multi-processing
architecture</H2>
<P>The goal of this document is to establish the components which should
comprise the project which was mentioned in the previous document (Linux
mainframes). To do this, a description of the boot sequence will be 
given, together with the possible failures and the solutions.
<P>Before attempting this, however, I want to give a short summary of the 
guidelines which should lead us toward the goal of Linux systems which 
can be deployed in corporate environments.
<P>Minicomputers and mainframes provide reliability and high processing 
power. The reliability is largely obtained in two ways. The first one is
in the design of the system, the second one is the existence of a 
thorough support department with online help and specialised 
technicians. The emphasize in this document is on the hardware side of 
the system.
<P>High processing power is obtained in several ways. They involve the use 
of cache-memory, wider data-paths, increasing clock frequency, 
pipelining processing and efficient data-transfer between memory and IO.

<H3>What can we do about reliability ?</H3>

<P>On the reliability side the system is dependent on hard- and software. 
If we are to use currently available parts (motherboards and cards) then
the only thing we can influence is the way systems are assembled. Care 
should be taken to avoid static discharges, by using anti-static mats 
and bracelets.
<P>On the software side we have the Linux operating system which is very 
reliable, with reports of systems running for months without erroneous 
reboots.
<P>However, hardware can fail and in this respect I think that there still 
needs work done on Linux. If the error is not in the processor or
the system memory, then a running system should be able to intercept 
hardware errors and handle them gracefully. If at all possible, system 
utilities should be available to test the CPU, the system memory, the 
cache and the address translation system.
<P>The Linux High Availability White Paper documents clustering of small
systems. Later on in this document, some other techniques will be 
proposed.

<H3>What can we do about the processing power ?</H3>

<P>Processing power comes on several levels. On the first level, that of 
the CPU and the main memory we can't do much. With current motherboards 
with bus speeds of 66, 75 and 100 Mhz, we get data transfer speeds 
between memory and CPU of 264 MB/s, 300 MB/s and 400 MB/s. These should 
be sufficient for most applications. Memory is cheap, sizes of 64 to 128
MB should also give headroom for large applications.
<P>The largest problem with standard motherboards is that all IO needs to 
be handled by the CPU or else by a slow DMA system. This means that a 
large part of the operating system is being used by device driver code. 
In mini/mainframe systems this is not the case. All IO is handled by 
separate IO-processors. These IO-processors implement the device drivers
and as such free a large part of the central processor.
<P>To relieve the central processor of this burden, there are three 
solutions. The first one is being implemented by the I2O consortium. It 
defines standards for intelligent IO-boards on the PCI bus. These boards
can transfer the requested data themselves to the main memory of the 
CPU. The only problem is that as far as Linux is concerned, I2O is 
proprietary.
<P>I think that two other solutions should be possible. The first, and 
probably easiest, is to use an SMP motherboard and program the operating
system so that one processor is completely responsible for all IO, and 
the rest of the CPU's do the real work. Another idea is in the absence 
of SMP use two motherboards, run one with an adapted version of Linux to
handle all IO and use the other one to run only applications. The only 
trouble here is which system will be used to interconnect the 
motherboards. Especially in the case of mass storage devices, you want 
to stream the data from the device as fast as possible into the memory 
of the application. Currently, this means using the PCI bus in one way 
or another.

<H3>Summary</H3>

<P>Since we, as Linux users, have no sight on the design process of 
motherboards, reliability should be obtained through good standards of
assembly and by implementing redundancy.
<P>To obtain more processing power, the main CPU should be relieved as much
as possible from IO. This could be implemented by using SMP or by 
interconnecting motherboards.

<H3>A proposal for an architecture for Linux mini/mainframes</H3>

<P>Based on the previous ideas, using several motherboards interconnected 
by a high-speed network could give us the following benefits :
<UL>
<LI>Redundancy to increase reliability
<LI>Offloading IO tasks to one or more specially appointed nodes
<LI>Increased processing power
</UL>
<P>To obtain these benefits when the system is assembled, some operating 
system changes need to be provided. It is possible to interconnect 
computers and make these work in parallel, but all administration must 
be manually accounted for. So, what we need when the system is booted, 
is not a vision of several separate systems, but only one system.

<H3>Description of the boot sequence</H3>

<P>When booting the system, all nodes start in the usual way : installed 
hardware is identified, necessary drivers are run, a connection to the 
network should be made, NFS drives should be mounted, local file systems
should be checked and mounted.
<P>In the case of a normal system, all background processes would be 
started and users should be able to log in on the system.
<P>When the system should be seen as one complete system, the boot sequence
should be modified at this point. Resources which are normally only 
accessible on one node, should be shareable throughout the system. To 
build a common view, every node should have access to a common file 
system. In this file system the directories /dev, /etc and /proc should 
be accessible by every node.
<P>The directory /dev contains all shared devices. The directory /proc 
provides access to system structures which should be shared by every
node. The directory /etc contains the necessary files to control the 
system :
<UL>
<LI>users
<LI>groups
<LI>fstab
<LI>inittab
<LI>...
</UL>
<P>Every operating system on every node must be adapted to work via these shared 
directories.
<P>To control the creation of this shared system, one node will have to be 
designated 'master'. After the initial boot sequence, every node will 
have to wait for the master to initialize the network. This 
initialization can proceed in the following way :
<UL>
<LI>create /proc
<LI>create a system process table (accessible via proc)
<LI>create /dev
<LI>gather all shared devices on the network
<LI>execute fstab, inittab and other scripts to initialize the 
complete system
</UL>
<P>Started processes fall apart in two categories. Local processes run on 
the nodes which contain the resources that the process needs access to 
eg. getty, fax drivers, etc. Global process are independent of hardware 
and should be able to run on any node in the system.
<P>Any node should also be able to start a new process on the system. By 
using a load balancing system, all started processes must be evenly 
divided over all nodes.

<H3>Providing reliability in the system</H3>

The system as proposed above could present some problems. The first one 
is its dependency on a single master computer. If this master fails, 
then the whole system fails. To alleviate this, it should be possible to
define several masters. If the power is applied and the master nodes 
boot, then the first one to get hold of the interconnection network will
act as coordinator. If one master then fails, the only implication would
be that his shared resources are not available in the system.
<P>If a master fails while the system is up and running, then the basic
coordination of the system is gone. To overcome this problem, a backup 
master must be defined. This backup master needs to keep an updated copy
of all master system information. If the real master should fail then 
all nodes in the network should block themselves until the backup master
has come up.
The system should provide dynamic management of nodes. This means that 
nodes must be attachable by using system calls. This goes via the 
master, which then adds the system on the network. If a node must be 
detached, then none of its resources should be in use, otherwise the 
call fails.
<P>If a node fails when in use then this surely will pose problems. A 
failure can show itself on the network (network interface problem, 
processor error) or local. If a process uses a remote device, it will do
this by means of messages which are sent over the interconnection 
network. In the case of malfunction, the addressed node won't (can't)
answer anymore. The OS must block the process until the malfunction is 
removed.
<P>If there are problems in critical parts of the system, device drivers or
system processes should not blow-up the system or interfere with user 
processes, but they should have the means to correctly report the 
problem and block the processes which are using the particular resource.
If the malfunction is on a local level (device) then the device driver 
can return a message stating the error.
<P>The most critical part in the system is the interconnection network. 
This should be tested and tuned according to system demands. If 
possible, a fast protocol should be used instead of TCP/IP.

<H3>Summary</H3>

<P>The view every node has of the system should be the same.
Devices must be shareable accross the interconnection network.
The OS should be extended so that the exec() function, which is basic 
for starting processes, executes on a global level.
<P>Reliability should be built-in and configurable on several levels.
A message-based protocol is needed to share devices across the 
interconnection network.

<H3>Proposals for interconnection</H3>

<P>Basically, there are for the moment two interconnection systems which 
can be used of the shelf.
<P>The first is Ethernet. Based on the money to spend, you can assemble
systems with 10 Mbit, 100 Mbit or 1 Gbit networks. Increasing bandwith
means increasing processing power. To obtain the maximum of your
bandwidth, the ideal is using an SMP motherboard in which one CPU takes
care of all network-to-memory data transport.
<P>The second one which attracts interest in the Linux community, is the 
SCSI interface. Using modern SCSI cards, up to 16 motherboards could be 
connected together to provide for parallel processing.
<HR>
<P>This is the third part. I have compiled some cases where I have
participated to highlight some points that need more support in Linux.
<H2>Cases where Linux might be employed, but where it isn't</H2>
<P>Through several enhancements (Beowulf, Coda FS, Andrew FS) Linux gets more and 
more powerful. But how powerful is powerful really ? Linux is announced and used 
in more and more places, but there is a serious lack of numbers on the capacity 
of Linux in different environments and configurations.
<P>This is however a crucial point. In many environments, Linux gets introduced 
through the reuse of PC's (which is in itself a good point). There are however 
other environments where the introduction of new hard-  and software depends on 
the provision of hard numbers for acquisition, deployment, education, 
maintenance, infrastructure and depreciation of systems. This can range from a 
small office which only needs to cough up the required cash up to a financial 
institute which has large dataprocessing and communication needs.
<P>In some of these areas Linux hasn't probably even touched anything because those 
people use computers as a means to an end. The computer itself does not stir 
their imagination. They have tasks to be done and the computer is their 
instrument to complete those tasks faster and more precise. These are the 
environments which are lured into buying MS products. I know however several 
people which work in various different Wintel environments and none of them are 
satisfied.

Some complaints :

<P>Lock up of course : power users lock up more easily their PC, 	because they use 
a lot of applications next to each other.

<P>Unexplainable configuration changes : you enter your office and your application 
does not start. Reason : some ASCII text file has reverted to a
previous state (I had this one several times with the TCP/.IP
'services' file).

<P>MS Office for Windows 95 : You can not seem to use Word for large
documents (this is a complaint from a user in a large company).

<P>Windows NT : can not be deployed in situations where older applications need 
access to older and/or proprietary hardware.

<P>I am sure anyone who has ever used the system, knows other bugs.

<P>I think that one of the reasons why Linux isn't more employed in these 
environments is that it is mostly deployed using a single type of configuration 
existing of an IA32 CPU, a PC AT architecture, IDE/SCSI disk subsystem, an 
Ethernet NIC and standard serial devices. This makes it very easy to use Linux 
in the following places :
<UL>
<LI>e-mail
<LI>nntp
<LI>http
<LI>file systems	
<LI>printing
<LI>MPP (Beowulf)
<LI>embedded systems
<LI>workstations
<LI>telecommunications
<LI>networked, distributed systems
</UL>
<P>These are technical solutions for technical problems, implemented by technical 
people. However, for some places, some pieces are still missing and there are 
places where Linux could be used, but where it is not. The usability of Linux 
still depends too much on the technical skill level of the user. This should not 
be necessary. Companies should be able to deploy Linux quick, efficient and 
flawless. Introductory courses should be provided. This will mostly mean 
migrating from Windows knowledge to Linux knowledge. People should be made to 
understand that there are three pillars in the usage of a computer system and/or 
program :
<UL>
<LI>operations
<LI>administration
<LI>maintenance
</UL>
<P>On the system level these should be integrated transparently and tightly. A user 
shouldn't need to go through heaps of paper and manuals to find something quick, 
so menu driven is probably the best answer for this, with good context sensitive 
help. I even think that from the point of view of the user, things should be 
accessible under a heading 'Applications' where all his production programs 
should reside, and a heading 'Maintenance' where operational, administrative, 
system maintenance and diagnostic programs are located.
<P>If we want Linux systems to be used more in environments where people are not 
concerned with their computer per se, but as a means to do their job, then 
support will have to grow on several levels. To project these levels, I will 
present some cases more or less detailed. These cases present environments where 
I have worked, customers which needed support, people I know.

<H3>Case 1 : The SOHO environment</H3>

<P>With this I mean the family sized company which provides some basic services 
(grocer, plummer, carpenter, etc...). At most two persons are responsible for 
handling all administration. This consists mostly of two parts : accounting and 
handling of incoming/outgoing messages. The first part of the problem is 
providing this environment with a suitable accounting package which is 
applicable for the country where the company resides.
<P>The second part of the problem is handling all incoming and outgoing messages. 
This requires access to three channels : phone, fax and e-mail (if there are any 
other options then these are probably too expensive for this environment). 
Depending on the situation, there could be constraints on the usage of the 
channels (eg. no channel should block another channel, when answering the phone, 
the fax and e-mail should not be prohibited and/or prohibit each other). The 
configuration could probably be extended using a PABX card in the system, to 
provide extended telephony services via Linux.
<P>Like it or not, but these people have become accustomed to using WYSIWYG word 
processors and spread sheets, so the least that must be done is provide them 
with this functionality. There are at least two good packages available for 
Linux in this respect. Another thing that should be provided is a customer 
database which is closely linked to the former package. Creating new documents 
and using fill in documents from a user entry should be a must. Creation and 
insertion of simple graphics should be an available option too.
<P>If we consider at most two people then the system could be configured using two 
workstations of the same capacity, where some tasks are shared between each 
other, or it could be done using one more powerful system, which provides all 
services, and one cheap PC workstation, configured as an X-server.

<H3>Case 2 : A medium sized company I (10 users)</H3>
<P><B>File- and print-services, bookkeeping, inventory control</B>
<P>The company where I first worked from 1990 to 1991 had a Novell Netware system 
installed. We used the system to provide printservices for Mac- and PC-systems, 
as a repository for all kinds of drivers and diagnostic software and as a shared 
database via the bookkeeping and inventory control program. Everybody who needed 
access to the network had his or her own PC or Mac. We mostly used DOS back 
then, although with the introduction of Win 3.0 some people migrated to it. 
Everybody had access to a phone and there was one central fax in the 
administrative department. We installed and maintained PC's and Mac's for 
graphical applications. These applications provided output for typesetting 
printers (mostly via Postscript) or plotters. The supported applications where 
Adobe Photoshop, Aldus Pagemaker and AutoCad. We were also a reseller of the 
bookkeeping package that was used on the network.
<P>The printing could be spooled to several large laserprinter, a high-speed 
dot-matrix printer and a photographic typesetter.
<P>File services under Linux are probably the easiest of problems. I networked, 
recompiled, linked and started a small TCP/IP network using two computers in 
less than an hour. NFS is very comprehensive, as are telnet and other TCP/IP 
services. If you need to provide only a central server, then the following 
things need to be done :
<UL>
<LI>assign separate network numbers to your NICs
<LI>configure server and WSs for NFS
<LI>configure the exports file
</UL>
<P>For the workstations the following needs to be done
<UL>
<LI>assign separate node numbers
<LI>configure NFS
<LI>add your network directory to fstab
</UL>
<P>The main difference between Novell and NFS is in the administration. On a 
Netware server, all administration is kept central to the server. The only thing 
which needs to be done on a workstation is load an IPX driver at boot time. On a 
TCP/IP workstation, some administration is kept centrally and some 
administration is kept locally. This makes the process of maintaining and 
updating the network more laborious.
<P>Installing print services under Linux is generally much harder than under 
Netware. This is because all settings are to be added manually using a text 
editor in the file printcap. But, since this is a very structured file, with a 
rather small set of commands, why hasn't any body ever written a dialog system 
to scan printcap and present the user with an overview of available printers and 
the possibilities of adding and modifying printers and their settings ? This 
would be a great step forward in installing printers. Filters for different 
types of printers could be presented, so that the configuration on the network 
could be simplified (as an aside, RedHat provides such a system).
<P>The other part of printing is the operation of the queues. The lpd
system provides only command line control. But since this system is
also understood very fine, why haven't there been any attempts to
rewrite the lpd system for menu-driven operation ? After all, entering
a command or pressing a function key can invoke the same behaviour. All
queues and printers can be presented to the user, with the possibility
of providing more details. 
<P>The accounting program was written in Clipper and did not use Btrieve.
This means that all access to the data in the files generated a lot of
traffic over the network. This was alleviated by segmenting the network
in three parts so that the accounting department didn't interfere with
the other departments. The whole package ran under DOS. In the course
of years, the company which programmed the package made in 1994 the
transition from Clipper to FoxPro, and only as recent as 1997 they made
the transition from DOS to Windows (with the DOS version still being
sold and supported). 
<P>This presents us with a case of providing support for migration of
xBase dialects to Linux, while adding value to these languages through
transparent client/server computing. There should also be support for
people migrating from these DOS-based systems to Linux. There are a
whole lot of programmers who work alone and who make a living by
writing and maintaining small database applications for SOHO users
(using xBase and several 4GL tools which run under DOS). Providing
incentives and support for these people to migrate and to help their
customers migrate could give a double benefit to Linux. The key lays of
course in the way that support for these tools becomes available under
Linux or that conversion tools become available under Linux. 
<P>Printing support under Un*x and hence Linux has always strongly been oriented at 
typesetting. Providing support for Postscript should not be a problem under 
Linux. Adding a typesetter should be as easy as installing a printer on a server 
or on the network via a print server. There are already some strong graphical 
packages available for Linux. In this case, migration is a question of importing 
and/or converting graphical files and showing the user how to do the tasks he 
does normally with the new application.
<P>Plotting and/or cutting should be the same as printing. The application program 
is responsible for translating it's own internal drawing database into a format 
that can be used by the addressed peripheral.

<H3>Case 3 : The drafting department</H3>
<B>Drawing workstations, central database, drawing lock, usage
statistics</B>
<P>Drafting departments are a case where networking and central storage are really 
put to the test. It consists of a drawing database, which is a front-end to the 
drafting programs. User should be able to look at drawings, create, edit, delete 
and print drawings and collect usage statistics about drawings. In addition, 
only one user should be able to edit a drawing or part of a drawing at one time, 
and it should be possible to see who is editing what. If this all sounds like 
using a file system, then you are right. The difference is that you only use one 
type of file. I worked on one system in the previous case. It was written using 
Clipper as a front-end. I know of other environments where Autocad is used, but 
under a WinNT network, and there are some companies who deliver complete turnkey 
solutions consisting of powerful minicomputers and proprietary workstations for 
real high-end drafting work.
<P>Providing the incentive to migrate to Linux consists in providing a powerful 
server with large storage to accomodate all the drawings and a fast network to 
deliver them to the workstations. All workstations should be tuned to the max to 
deliver the utmost in graphic display and manipulation. Of course, utilities are 
necessary to convert the original drawing database and all the drawings. 
Networking should be flawlessly, and the program which uploads the drawing 
should provide an indication of the time necessary to get the file and where it 
is in the process.

<H3>Case 4 : A medium sized company II (20 users)</H3>
<B>Mini computer system, data entry and retrieval, commercial
department</B>

<P>This pertains to my previous job : a small transport company, which had ten 
years ago decided to implement a computer system to automate several tasks and 
to keep a database of all done transportations. They had taken WANG VS, which 
was back then a successfull system, with many advanced features. Custom software 
had been developed by an outside company first, by an in-house programmer later. 
The system contains a very comprehensible fax package, which can be used by 
anyone, but with strong security features. All outgoing messages are put in one 
queue, where the operator can change their times and/or priorities. All 
communication with the minicomputer is via terminals or via emulation cards on 
PC's. Accounting is also done on the minicomputer, but the two systems are not 
linked. The system is also equipped with a background task which controls batch 
tasks in a queue.
<P>There are many medium-sized companies which still use minicomputers and who have 
a problem shedding them, due to their highly specialized software. Migration 
from a Un*x system to a Linux system should not pose as much problems as 
migrating from a completely proprietary system to Linux.
<P>The main problem with these mini-computer systems is their high maintenance 
cost. That should be the most pressing reason to migrate, although Y2K could 
also be an incentive (not so with WANG VS, which is fully Y2K compliant).
<P>To provide the same functionality a DBMS package should be available which 
provides a data dictionary, a screen design package and a COBOL74 compiler with 
preprocessor to translate simple SQL SELECT statements. There are several 
packages available. One package aids in the migration from WANG PACE (the WANG 
DBMS) to Oracle (at the moment Oracle has only announced porting Oracle to 
Linux), while Software AG has tools to port WANG PACE applications and screens 
to ADABAS. On part of the compiler, where I work currently the porting is done 
from WANG to HP-UX using Microfocus Cobol. The security features of the database 
package should at least contain rollback recovery. The provided file-system 
should absolutely not be e2fs. Reliability should be favored over speed. When 
the power fails the file-system it self may be damaged, but these damages should 
be simple to clean-up. Damages in transactional files are to be repaired with 
the rollback option.
<P>On the hardware side, I noted that SCSI II provided enough speed to handle some 
20 users, but ... this was a system with a specialized IO-processor to handle 
all data transfers between main memory and all peripherals. To know how Linux 
fares in this, benchmarks should be run and numbers should be provided. In our 
last configuration (a 50 MHz CPU with 64 Mb), under a heavy load, our response 
time was under 10 s.
<P>Fax support must be provided to interactive applications, but also to batch 
applications.
<P>Batch processing of all tasks should be supported. Some programs can be started, 
used to enter selection data and then launched at will in the background or in 
the foreground at a time and day the user can enter. cron is fine for highly 
skilled people, but not for your data-entry clerk, so you need a front end which 
asks the date, time and repetition rate of your job. The application itself 
should be able to provide the required parameters.

<H3>Case 5 : OEM</H3>
<B>Cash registers, inventory control, proprietary hardware</B>

<P>This company builds cash register systems using mostly common PC hardware and 
one piece of proprietary hardware which interfaces to a magnetic card reader, a 
bar code reader, a money drawer and a keyboard/display/pricing printer. The cash 
register is connected via a network to a server which provides an inventory and 
a price list. Upon booting, the cash register connects to the network and loads 
its OS from the server. Every server has the possibility to connect at night to 
a central database to update its pricelists and to order items which are getting 
out of stock.
<P>For the cash register, a multi-user, multi-tasking OS is clearly overkill, while 
in the case of the server, multiple cash-registers could connect via the network 
to the server. The cash register would benefit, though, from multi-threading.
<P>Software development for servers and departmental systems is usually done with a 
4GL tool, with a higher-level language only for those parts which 4GL does not 
support.

<H3>Case 6 : Financial company (appr. 1000 users, agencies)</H3>
<B>Minicomputers, mainframe computers, terminals, workstations,
TCP/IP</B>

<P>The production environment of this company consists of 5 WANG VS minicomputers, 
used for data-entry, data-preprocessing and to connect agencies remotely through 
a telephone line. It consists also of a Bull mainframe system with two CPU's, 
128 Mb memory, 240 Gb of on-line storage capacity, a transaction processing 
system consisting of a network database and a screen editing and runtime 
program. All this is controlled using JCL and COBOL-74. TCP/IP is implemented 
between all systems.
<P>Replacing the minicomputers with Linux systems should be relatively straight 
forward. Since no WANG PACE is implemented on these, only migration of the 
COBOL-74 programma's needs to be done. Data entry and remote connection could be 
done using telnet and/or serial connections. Transferring data between mainframe 
and other systems is no problems. All this happens using FTP.
<P>Now, let us think really BIG! Could a case be made to build a system using 
Linux, which can replace a mainframe computer, given the specs above ? As said 
above, more numbers and benchmarks are needed on Linux and its implementations 
to know how powerful Linux can be. 

<H3>Case 7 : Software for highly skilled, non-technical people</H3>
<B>Doctors, dentists, lawyers, chemists, ...</B>

<P>These cases resemble the SOHO, but additionally need very specialized software 
to support their job. This software is mostly written by very specialised 
companies (niche software). What would they need in terms of software and 
maintenance to be convinced to migrate to Linux ?
<P>One of the answers is surely that they can migrate their existing applications 
easily and that conversion of their source code is supported by tools and API's 
which provide the same (or better) functionality than their old tools.
<P>Configuration of these systems may be more specialized. Normally the user would 
only use his system (enter customers, query the system). All administrative and 
configuration chores could be left to the implementor. The applications 
themselves are already as user-friendly as they can be, due to their specialised 
nature.

<H3>Conclusion</H3>

<P>I have presented several real-world cases, where Linux IMHO could be used. In 
most cases there are two recurring themes.
<P>The first is the need for migration support from other platforms to Linux. This 
support spans a whole range, varying from multi-platform compilers over database 
migration, up to replacement user applications.
<P>The second is the need to provide more user-friendly administration and 
operation. This may be as well through character-based dialog boxes as through 
GUI systems. In any case their access should be more centralised.
<P>Other themes which pop up are the following :
<UL>
<LI>Enhanced telecommunications support through more comprehensible fax
packages and a PABX support 
<LI>Enhanced reliabality
<LI>Numbers and benchmarks on Linux applications and configurations
<LI>Internationalised accounting packages
<LI>A customer database system which integrates with other apps
</UL>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Jurgen Defurne <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./wilson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./kunkel.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">Using the Xbase DBMS in a Linux Environment</font></H1>
<H4>By <a href="mailto:gkunkel@startech.keller.tx.us">Gary Kunkel</a></H4>
</center>
<P> <HR> <P>  

<H4>Introduction</H4> 
<P>
The Xbase file structure has been around quite a while and was one of the first
widely available DBMS tools for micro computers.  It has become a de-facto 
industry standard for text based databases and is supported by many vendors to
include the Borland Database Engine, Microsoft's FoxPro, Clipper, Sequitor's 
Codebase and others.  Xbase type datafiles will be with us for a while. 
<P>
The Startech Web Server at http://www.startech.keller.tx.us/xbase/xbase.html
maintains a public domain, open source C++ library for accessing Xbase
type datafiles in a multi-user environment.  The library supports automatic 
record locking, memo fields (both dBase III and IV versions), and .NDX style 
indices.  There is also an API for interfacing the library to an Apache
Web Server and providing database access to web pages. Several example programs
provide a framework for creating, browsing and updating databases.   There
are examples which demonstrate how to use the library with an Apache Web Server
and using the library in conjunction with the wxWindows library.  Some readers
of this article will recognize the wxWindows library as a cross platform 
GUI C++ library.
<P><HR> <P> 
<H4>System Requirements</H4> 
<P>
In order to use the Xbase DBMS library, you'll need to have a C/C++ compiler.  The original
library was built on a Slackware distribution with the GNU public domain compiler, but 
there are examples on the site for using the library on other platforms including
Windows, SUN, and VMS.  
<P><HR> <P> 
<H4>Getting Sources</H4> 
<P>
To downloading the library sources, point your web browser to 
http://www.startech.keller.tx.us/xbase/xbase.html and select the latest 
version, which at the time of this writing is version 1.7.4 dated 6/18/98.  
There are a couple of flavors available, but for the purpose of this article,
download the UNIX tar version. Also, you may want to grab the HTML 
documentation for using the library at the same time. Alternatively, you
can get the software via ftp ftp.startech.keller.tx.us and retrieve the
software from the pub/xbase directory.
<P><HR> <P> 
<H4>Installing Sources</H4> 
<P>
To install the Xbase library under the /usr/local directory, execute the 
following commands:  cd /usr/local and mkdir xbase.  The next step is to
set up access rights to the Xbase directory tree.  Your site may have specific 
protocols on directory access rights which you may need to address at this 
point.  If not, then the commands  "chown YOURUSERID.users xbase", then 
"chmod 775 xbase" will get you going.
<P>
Now create a source directory and copy the source code into it: "cd xbase", 
"mkdir src", "cp /home/of/xbase.tar.gz /usr/local/xbase/src",  "cd 
/usr/local/xbase/src", "gunzip xbase.tar.gz" and lastly "tar -xvf 
xbase.tar".  At this point the Xbase source code should be in the
/usr/local/xbase/src directory and be ready to build the library.
<P><HR> <P> 
<H4>Building the Library</H4> 
<P>
Before building the library,  review the options.h file.  This file contains 
any of the Xbase configuration switches you may want or need to change
depending on what you are trying to do.  To build a DLL library,  type 
"make dll".  To build a static library, type "make all". 
<P>
It should compile cleanly.  Errors at this point can often be traced to 
the .h header files currently in use at your site.  If you run into errors at
this point, notify xbase@startech.keller.tx.us for help building the library.
<P><HR> <P> 
<H4>Building a Sample Program</H4> 
<P>
This sample program demonstrates a simple program which creates a sample 
database and index.
<PRE> 
/*  sample1.cpp  */
#include "xbase.h"
main()
{
  Schema MyRecord[] = 
  {
    { "FIRSTNAME", CHAR_FLD,     15, 0 },
    { "LASTNAME",  CHAR_FLD,     20, 0 },
    { "BIRTHDATE", DATE_FLD,      8,  0 },
    { "AMOUNT",    NUMERIC_FLD,   9,  2 },
    { "SWITCH",    LOGICAL_FLD,   1,  0 },
    { "FLOAT1",    FLOAT_FLD,     9,  2 },
    { 0,0,0,0 }
  };

  /* define the classes */
  XBASE x;			/* initialize xbase  */
  DBF MyFile( &x );		/* class for table   */
  NDX MyIndex( &MyFile );	/* class for index 1 */

  SHORT rc;                     /* return code       */

  if(( rc = MyFile.CreateDatabase( "MYFILE.DBF", MyRecord, OVERLAY )) != NO_ERROR )
     cout << "\nError creating database = " << rc << "\n";
  else
  {
     /* define a simple index */
     if(( rc = MyIndex1.CreateIndex( 
       "MYINDEX.NDX", "LASTNAME", 0, 1 )) != NO_ERROR )
        cout << "\nError creating index 1 = " << rc << "\n";
  }
  MyFile.CloseDatabase();   /* Close database and associated indexes */
  return 0;
}     
</PRE> 
Assuming you keyed the program source into directory /usr/local/xbase/myproj,
type "g++ -c -I/usr/include -I/usr/src/linux/include/asm-i386 -I../src
sample1.cpp" to compile the program and type "g++ -o sample1 sample1.o
../src/xbase.a" to link edit the program. The asm-i386 directory in the
above include line is for Linux running on the Intel
platform.  Other platforsm require the correct include directory.
<P><HR> <P> 
<H4>Conclusion</H4> 
<P>
In conclusion, I'd like to say that although the Xbase library is not a 100% 
complete Xbase solution,  it is a stable and reliable library capable of 
handling various database requirements.   If you are looking for database 
libraries in general, or need access to Xbase files in particular, give Xbase
DBMS a try.  If you are a C programmer and new to C++ object oriented
programming, the Xbase DBMS is easy to learn and will help transition you to 
the world of object oriented programming.  If you have never  programmed
in C or C++ before, this library should provide complete enough examples to
get you started programming in C/C++ with confidence.
<P>

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Gary Kunkel <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./defurne.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./johnson.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">Book Review: Website Automation Toolkit</font></h1>
<H4>By <a href="mailto:">Andrew Johnson</a></H4>
</center>
<P> <HR> <P>  
<img align="left" src="./gx/johnson/2930f1.jpg">
<P> &nbsp;
<ul>
  <li>Author:	Paul Helinski
  <li>Publisher:	John Wiley
  <li>E-mail:	info@wiley.com
  <li>URL:	http://www.wiley.com/
  <li>Price:	$44.99 US
  <li>ISBN:	0-471-19785-8
</ul>
<P> &nbsp;
<P> <HR> <P> 
<i>Website Automation Toolkit</i> is a collection of tools, most created
by the author's company, which range from allowing simple configuration
control over the look and feel of your entire site to remote
creation of and updating pages on the site to shopping carts and
simple database facilities. It is not a book about running and configuring
web servers or teaching the Common Gateway Interface (CGI) protocol.
<p>
The introductory preface and first chapter address
the motivation behind the book and a few of the benefits of using
some form of automation in maintaining your web site. Next are
two chapters discussing some of the alternatives
(and alternative proprietary software) to the author's CGI-oriented
approach to automation.
<p>
The majority of the tools provided are, in fact, Perl CGI programs
created by the author's company. These tools are officially free.
While the license in the book states that you are
not allowed to redistribute them without permission, you are
allowed to use and install them as many times and for as many
clients as you wish. This seemed a bit contradictory, so I asked
the author for some clarification. He responded with the
following statement (used with permission):
<blockquote>
I don't do courts, but the intent of the license is to
prevent people from putting our utilities on shareware CD-ROMs
without the supporting text. It's more of a support issue
than an ownership one. I wrote the book because these things
were far too useful to keep to ourselves.
</blockquote>
Chapters 4 and 5 mark the transition into the main part of the
book by providing a short justification for why Perl is the
language of choice, and a brief introductory overview of Perl basics. This 
overview is not intended as a guide to the
Perl programming language, but merely to acquaint the user with
some of the essentials so that later sections on configuring and
customizing Perl scripts will be less daunting to the
inexperienced.
<p>
The remaining chapters provide a tool-by-tool installation and
instruction manual. There are too many tools to cover them all with
any detail, so I will very quickly run through the remaining
chapters and follow with my general impressions.
<p>
Chapter 6 covers SiteWrapper, a package that wraps your site so
that all of your pages are served by a CGI program. Chapter 7
introduces Tickler, a program for soliciting e-mail addresses of
visitors and notifying them of content changes. Chapter 8 follows
with a discussion of the freely available
Majordomo mailing list software for creating and maintaining
mailing lists.
<p>
Chapter 9 addresses tracking visitors with discussions of the
Trakkit tool (requires SiteWrapper) and the freely available
Analogue program. Chapter 10 covers a Shopping Cart package 
(a modified SiteWrapper program) along with some order processing utilities.
<p>
Chapter 11 covers WebPost, the utility which, according to the
author, sparked the book. This system allows you to create, edit,
delete or upload pages to your site and automatically generate
or update the cross links among pages.
<p>
Chapter 12 provides three search utilities for your site,
depending on whether you are using SiteWrapper, WebPost or neither.
Chapter 13 covers the AddaLink tool for creating and maintaining
a hot list of links. Chapter 14 covers QuickDB, a simple text-based
database engine with a browser interface for adding, editing and
deleting entries.
<p>
Chapter 15 presents a Bulletin Board utility, and also discusses
using FrontPage for a Discussion Board. Chapter 16 takes the next
step by covering a couple of freely available Chat programs.
<p>
Chapter 17 provides a couple of search engine agents, one to
submit a URL to a multitude of search engines and two more which
report your location on the search engines. The final chapter
presents BannerLog and ClickThru, tools which track and log
click-throughs and page views of banner ads on your site.
<p>
I set up a dummy site on my Linux box for installing and trying
out a few of the provided utilities. The installation instructions in each chapter are
divided into UNIX and NT sections and are relatively simple to
follow. However, some unfortunate problems arose.
<p>
There are .zip files for each package, and non-zipped directories
for each of the packages on the CD-ROM. A mild inconvenience is
that some of the .zip files were created with extraneous path
information included, and the individual files in the non-zipped
directories are riddled with ^M characters. The author has created
a web site where you can find problem reports and corrections, and
``cleaner'' versions of the source files for downloading. The
site is located at http://www.world-media.com/toolkit/.
<p>
Another inconvenience is that every Perl script must be checked
(and possibly edited) for the proper path to Perl on
your system, there is no script provided to automate this task,
although writing one would be trivial for any experienced Perl
programmer. Note that even if the first script you examine has the
proper path, others definitely will not--so you must check
and edit those with the incorrect path for your system.
<p>
More serious problems arise with the Perl code. None of
the <b>open</b> calls for reading and writing files are consistently
checked for success or failure. You'll first notice a problem
when you install the SiteWrapper package and try to change the
color scheme of your site with the included SiteColors program.
The installation guide omits mentioning that your server will
need write access to the tagfile.dat file where the color
scheme is stored. Since the program does not check the return
value of the open call, it will fail silently, your color
scheme will not be updated and no error will be present in your
server's logs. I'd seriously recommend locating all calls to the
open function in all .cgi scripts and adding at least a
<tt>||die&nbsp;&quot;$!&quot;;</tt> statement to those that don't
have it.
<p>
Other deficiencies with the Perl scripts are that they are not <tt>-w</tt> clean (for warnings), won't compile with
the ``strict'' pragma, do not use <tt>-T</tt>
for taint checking and use the older cgi.pl library rather than the
CGI.pm module for Perl 5.
<p>
Even with the above comments and concerns, the packages are, for
the most part, easy to install and get working. Installation and
configuration of the basic SiteWrapper package took less than an
hour, including time spent checking and cleaning the source code
and creating simple header and footer files and a couple of dummy
pages. When using this system, every page is served from a CGI
program, even essentially static pages. This method allows for a great deal
of flexibility and a centralized configuration style of
management, but could become costly in terms of server load if
your site is large or heavily trafficked.
<p>
I had a little more trouble getting the WebPost system running
properly, mainly because I chose to set it up in a subdirectory
of the SiteWrapper directory and a few issues were involved
in getting the two packages to play nicely together. Once it was
set up, however, it worked as advertised. While I found parts
of the interface to be a bit clunky for creating web pages, it is
a functional way to create and edit pages remotely using
a browser.
<p>
Other tools were less problematic to install, Trakkit for example--I was
tracking and logging myself within a few minutes of unpacking the
package.
<p>
On the whole, if you are looking for instant ``shrink-wrap''
automation software with point-and-click setup and configuration,
you'll be disappointed. However, typical Linux users accustomed
to file-based configuration should have little trouble with
these tools, especially if they already have some experience with
Perl programming. The programs are not stellar
examples in their present incarnation, but they can provide an
inexpensive automation system for budding webmasters willing to get their hands dirty with a little Perl code.
Hopefully, many of the concerns mentioned above will be addressed in a
future edition.

<!--===================================================================-->
<P> <hr> <P> 
<center><H5>Copyright &copy; 1998, Andrew Johnson <BR> 
Published in Issue 33 of <i>Linux Gazette</i>, October 1998</H5></center>

<!--===================================================================-->
<P> <hr> <P> 
<A HREF="./lg_toc33.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="./kunkel.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./lg_backpage33.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<center>
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>

<H5>Copyright &copy; 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_backpage33.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage33.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">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">Randolph Bentson</H4>
Randolph's first UNIX experience was booting a BSD VAX system on
July 3, 1981--the whole town had a celebration the next day.
He began contributing to the Linux kernel in May 1994, and his book
<i>Inside Linux: A Look at Operating System Development</i> describes
how many modern operating system features have evolved and become essential
parts of Linux.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ken O. Burtch</H4>
Ken has been using Linux since kernel 0.97. During
the early 1990's he wrote software for the Apple IIgs computer, including
Pegasus Pascal (an Ada-Turing hybrid language) and the award winning shareware
game "Quest for the Hoard". His hobbies include reading and writing fantasy
literature and collecting cartoons. He is currently the president of PegaSoft
Canada, a Linux development company based in southern Ontario. He can be
reached via the PegaSoft web site at <A HREF="http://www.vaxxine.com/pegasoft">http://www.vaxxine.com/pegasoft</A>.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jurgen Defurne</H4>
Jason is an Analyst/programmer in financial company (Y2K and 
Euro).
He became interested in microprocessors 18 years ago, when my eyes saw 
the TRS-80 in the 
Tandy (Radio Shack) catalog.
I read all I could find about microprocessors, which was 
then mostly confined to 8080/8088/Z80. The only thing he could do back 
then was write 
programs in assembler without even having a computer.
When he was 18, he gathered enough money to buy his first computer, 
the Sinclair ZX 
Spectrum. He studied electronics and learned programming mostly
on his own. He worked with 
several languages (C, C++, xBase/Clipper, Cobol, FORTH) and several 
different systems in 
different areas: programming of test equipment, single- and 
multi-user databases in 
quality control and customer support, and PLCs in an aluminium 
foundry/milling factory.

<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">Michael J. Hammel</a></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">Andrew Johnson</H4>
Andrew is currently a full-time student working on his Ph.D. in
Physical Anthropology and a part-time programmer and
technical writer. He resides in Winnipeg, Manitoba with his
wife and two sons and enjoys a good dark ale whenever he can.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">John Kacur</H4>
John has a degree in Fine Arts and Russian. After two years
in the former Soviet Union and two years in Germany, he has returned to Canada
to pursue a second degree in Computer Science and rediscover his love
of computer programming.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Damir Naden</H4>
Damir is a mechanical Engineer, working as a Manager of Special Projects with
Brampton Engineering Inc. in Ontario, Canada. During the day he tries to
figure out how to make special machinery for plastic extrusion, and he
splits his spare
time between his own small business, L&D Technologies (specializing in
machine design and project management), tinkering with Linux, and mountain
biking.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">David Nelson</H4>
David manages scientific research at the U.S. Department
of Energy. Before that he earned his living as a theoretical plasma physicist.
He started programming on the IBM 650 using absolute machine language and
later graduated to CDC, DEC and Cray machines for his research. But Linux
is the most fun. He and his wife, Kathy, enjoy tennis, skiing, sailing,
music, theater, and good food.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Mike Richardson</H4>
Having variously worked an academia and industry, Mike is now a
self-employed programmer and general-purpose computer dogsbody.
Mostly he writes C and C++ for Linux (good) and Windows (bad).
In his spare time he <a
href="http://www.chaos.org.uk/cucc/Expo/Rogues/L/MikeTA.htm">crawls
down holes in the ground</a>, and is fixing up a house that the
surveyor described as &quot;not so much neglected as
abandoned.....&quot;

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Schweizer</H4>
Jim is currently a Consultant in web site administration and design. He is the
author of an on-line textbook about Computer and Internet use and is an
Instructor of English at several universities in Western Japan. His
main hobby is being the Webmaster for the Tokyo Linux Users Group. 

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Alex Vrenios</H4>
Alex is a Lead Software Engineer at Motorola and has his ows consulting
business. He is always taking some sort of class.
He just finished the class work toward a Ph.D. 
in computer science, but only time will tell if it goes any further.
His wife, Diane, is certainly his best friend and biggest fan. He enjoys his 
two Schnauzers, Brutus and Cleo, and his dozens of African Ciclids, too. He 
is a licensed amateur radio operator, as is Diane, and they spend more than 
a few nights together observing the skies through their 5-inch telescope. 
They like to get out and stay active, to enjoy life together.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Colin C. Wilson</H4>
Colin has been programming and administering UNIX systems
since 1985. He has been happily playing with Linux for the past four
years while employed at the University of Washington, developing DNA
analysis software and keeping the systems up at the Human Genome Center.

<P> 
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Dan York</H4>
Dan York is a
technical instructor and author who has been working with UNIX systems
and the Internet for 13 years.  He will, under questioning, also confess
to being a Microsoft Certified System Engineer and Microsoft Certified
Trainer.  He currently teaches Windows NT and Microsoft BackOffice
classes but would really like to be teaching people how to use
Linux!

<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. And of course, thanks to Ellen Dahl for her help with
News Bytes.
<P> 
About a month ago, my doctor diagnosed me as having diabetes. Since then, I
have found I am becoming quite self-absorbed. I've had to go back to
always thinking about what I am going to eat and when--a habit I had
given up years ago. For a time, I've decided to become essentially vegan
(though not fanatic about it--I ate one piece of bacon this morning). I'm
quite amazed at the difference giving up meat and dairy products has made
in my energy level. Of course, getting my blood sugar down has certainly
been the best help in that area. At any rate, I'm feeling better than I
have in at least 6 months if not longer, and that's good!
<P>
I will be going to San Diego this weekend to visit my grandchildren there.
Haven't seen them in quite a while, so I am looking forward to it.
<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_toc33.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="./johnson.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<p><hr><p>
<I>Linux Gazette</I> Issue 33, October 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>