TweetFollow Us on Twitter

Mar 93 Tips, Tidbits
Volume Number:9
Issue Number:3
Column Tag:Tips & Tidbits

Tips & Tidbits

By Neil Ticktin, Editor-in-Chief

This column is your opportunity to spread the word about little bits of information that you find out about. These tidbits can be programming related or they can be user tips that are particularly useful to programmers.

MacTech Magazine will pay $25 for every tip used, and $50 for the Tip of the Month. Or you can take your award in orders or subscriptions.

To submit a tip, send in a letter to the magazine. E-mail is our preferred method, but feel free to send something via the US Mail. See page 2 for all addresses. If you do send snail mail, enclose a printed copy and a disk copy of the letter so that it does not have to be retyped.

Tip of the Month

Writing code that will walk your array instead of using a standard loop to access the array elements will improve the speed of the code 40-400% depending on the compiler you use.

Standard array access:

FOR index := 1 TO kNumOfElements DO
    theArray[index] := someNumber;

Optimized access:
{--elementSize is the size of one array element. This is an example }
{  of an array of long integers, therefore SizeOf(LongInt)}
   elementSize := SizeOf(LongInt);
   elementPtr := LongIntPtr(arrayHandle^); {--Ptr to 1st array elmnt.}
   endArrayAddress := ORD4(elementPtr) + elementSize * kNumOfElements;
   WHILE ORD(elementPtr) < endArrayAddress DO
   BEGIN
   elementPtr^ := someNumber;  {--elementPtr^ accesses the array }
  {elements.  Increment the elementPtr }
  {to point to the next elt in the array.}
   elementPtr := LongIntPtr(ORD(elementPtr) + elementSize);
   END;

Essentially, you're forcing the compiler to generate more efficient code for your loop.

-- Marek Hajek, Reno, Nevada

Self Documenting Code

Do yourself a favor: write self-documented code. Have you ever looked over source code that makes no sense whatsoever? Worse yet, have you ever looked at your own code six months later and you can't make heads or tails of it?

Try self-documented code. This is where you name functions and variables so well that there is no mistake about what they do.

Consider a function you are writing that, say, strips off all the trailing space characters from a string. The WRONG names to give this function are "String1," "StrStrip," "FixString," to name a few. A far better name would be:

  remove_trailing_spaces_from_string

Yes, the name is long, but it pays off in a big way! If you came back a year later and looked at the code, well, what does this function do? Duh! Does it remove trailing spaces from a string, perhaps?!

The same rule applies to variable declarations. Instead of the ol' fashion "i," "k," etc., start naming your variables real English names that make sense. Example:

length_of_text instead if "i" or "len"

number_of_records instead of "r"

users_name instead of "UserStr" or "str"

You will find this system is worth far more than pages of (meaningless?) comments!

- Gar, DataPak Software

DrawPicture Bug

There is a crashing bug in DrawPicture that can happen when you draw pictures that contain very wide PixMaps. DTS has verified that this is a bug in QuickDraw (on machines with IIci ROMs or later running 7.0 or later. Currently, that means the IIci, IIfx, LC, IIsi, Classic II, PowerBook 140 and 170, and the Quadras all have this bug). Thanks to Forrest Tanaka for the following information.

The problem happens with pictures that contain direct PixMaps that have been compressed using run-length encoding. The bug is that DrawPicture allocates two times the rowBytes value of the direct PixMap on the stack without first checking to make sure that there’s enough space to grow the stack that big. For wide PixMaps, two times the rowBytes can be very big, and so the stack can easily overflow when you try to draw a picture that contains a wide PixMap.

A reasonable work-around for this bug is to increase the size of the area of memory that’s reserved for your stack, which is just above your application’s heap. By default, Color QuickDraw machines provide you with a 24K stack. The widest possible PixMap has 16K per row, so multiply that by two and you get 32K as a maximum amount of stack space DrawPicture needs to draw the direct PixMap. Add to this a lot of slop for all the other stuff that you’ll have on the stack when you call DrawPicture, and a 48K to 64K stack becomes reasonable, in my opinion at least.

Increasing the size of the area of memory for the stack is done by setting the address of the top of your heap farther down from where it is by default. The SetApplLimit routine lets you set this address, and the GetApplLimit routine gives you the current address of the top of your heap. To add space to the memory that’s set aside for your stack, you can use something like the following line of code:

SetApplLimit(Ptr(Ord4(GetApplLimit) - kAdditionalStackRequirements));

kAdditionalStackRequirements is the number of bytes of stack space you’d like above and over the default stack size. Make sure you call this before calling any other routine - before MaxApplZone, MoreMasters, and InitGraf.

If you want to find the existing size of area of memory for the stack, you can get the address of the bottom of the stack (the part that’s highest in memory) from the low-memory global called CurStackBase which is located at $0908. Subtract from this the return value of GetApplLimit, and you get the current size of the area of memory for your stack.

- Mike Scanlin, Mountain View, CA

Excerpt taken from DTS answer

The Easy way to store disks

I have looked far and wide for a way to store hundreds of diskettes. Most of the vendors want big dollars for custom disk holders. They look great in plastic or metal. Holding hundreds of disks though can get very expensive.

I have found that a three-drawer kit can be assembled easily. These kits are found in the hardware section of your local retailer. They are in the place where the furniture is sold for garages and children's rooms.

These drawers are made out of particle board and masonite. Each drawer is 4 1/2" high by 15" deep by 13" wide. I can put in 3 rows or 100 disks per row in these with plenty of room to thumb through the diskettes. That is 300 diskettes per drawer.

They can be assembled even by me or my kids in about 20 minutes. And instead of paying $100's to hold the disks, I have less than $25 into holding 900+ diskettes.

The disk holders are 15" High x 15" wide x 15" deep. They are manufactured by SturdiCraft, 2742 Homdale Rd., Klamath Falls, OR 97603 phone (503) 882-4406. They are available through Fred Meyer, Sears catalog sales, HomeBase and many local hardware stores. Or they are available direct from SturdiCraft for $34.30 including shipping and handling. Ask for Model S-350. Some assembly required.

- Bruce Kyle, Beaverton, Oregon

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Art Text 3.2.3 - $49.99
Art Text is graphic design software specifically tuned for lettering, typography, text mockups and various artistic text effects. Supplied with a great variety of ready to use styles and materials,... Read more
RapidWeaver 7.5.1 - Create template-base...
RapidWeaver is a next-generation Web design application to help you easily create professional-looking Web sites in minutes. No knowledge of complex code is required, RapidWeaver will take care of... Read more
PDFKey Pro 4.3.9 - Edit and print passwo...
PDFKey Pro can unlock PDF documents protected for printing and copying when you've forgotten your password. It can now also protect your PDF files with a password to prevent unauthorized access and/... Read more
ClamXav 2.15.2 - Virus checker based on...
ClamXav is a popular virus checker for OS X. I have been working on ClamXav for more than 10 years now, and over those years, I have invested a huge amount of my own time and energy into bringing... Read more
TechTool Pro 9.5.3 - Hard drive and syst...
TechTool Pro has long been one of the foremost utilities for keeping your Mac running smoothly and efficiently. With the release of version 9, it has become more proficient than ever. TechTool... Read more
Safari Technology Preview 11.1 - The new...
Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies. And once installed, you will receive notifications of... Read more
Google Chrome 61.0.3163.91 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Dropbox 35.4.20 - Cloud backup and synch...
Dropbox is an application that creates a special Finder folder that automatically syncs online and between your computers. It allows you to both backup files and keep them up-to-date between systems... Read more
GraphicConverter 10.5 - $39.95
GraphicConverter is an all-purpose image-editing program that can import 200 different graphic-based formats, edit the image, and export it to any of 80 available file formats. The high-end editing... Read more
Chromium 61.0.3163.91 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. Version 61.0.3163.91: Release notes were unavailable... Read more

Stormbound: Kingdom Wars guide - how to...
Stormbound: Kingdom Wars is an excellent new RTS turned card battler out now on iOS and Android. Lovers of strategy will get a lot of enjoyment out of Stormbound's chess-like mechanics, and it's cardbased units are perfect for anyone who loves the... | Read more »
The best AR apps and games on iOS right...
iOS 11 has officially launched, and with it comes Apple's ARKit, a helpful framework that makes it easier than ever for developers to create mobile AR experiences. To celebrate the occassion, we're featuring some of the best AR apps and games on... | Read more »
Phoenix Wright: Ace Attorney - Spirit of...
Phoenix Wright: Ace Attorney - Spirit of Justice 1.00.00 Device: iOS Universal Category: Games Price: $.99, Version: 1.00.00 (iTunes) Description: ************************************************※IMPORTANT※・Please read the “When... | Read more »
Kpressor (Utilities)
Kpressor 1.0.0 Device: iOS Universal Category: Utilities Price: $4.99, Version: 1.0.0 (iTunes) Description: The ultimate ZIP compression application for iPhone and iPad. - Full integration of iOS 11 with support for multitasking.-... | Read more »
Find out how you can save £35 and win a...
Nothing raises excitement like a good competition, and we’re thrilled to announce our latest contest. We’ll be sending one lucky reader and a friend to the Summoners War World Arena Championship at Le Comedia in Paris on October 7th. It’s the... | Read more »
Another Lost Phone: Laura's Story...
Another Lost Phone: Laura's Story 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Another Lost Phone is a game about exploring the social life of a young woman whose phone you have just... | Read more »
The Witness (Games)
The Witness 1.0 Device: iOS Universal Category: Games Price: $9.99, Version: 1.0 (iTunes) Description: You wake up, alone, on a strange island full of puzzles that will challenge and surprise you. You don't remember who you are, and... | Read more »
Egg, Inc. guide - how to build your gold...
Egg, Inc.'s been around for some time now, but don't you believe for one second that this quirky clicker game has gone out of style. The game keeps popping up on Reddit and other community forums thanks to the outlandish gameplay (plus, the... | Read more »
The best deals on the App Store this wee...
Good news, everyone! Your favorite day of the week has arrived at last -- it's discount roundup day! This fine Wednesday evening we're gathering up the hottest deals on the App Store. We've got action platformers, we've got puzzle games, we've got... | Read more »
Morphite (Games)
Morphite 1.08 Device: iOS Universal Category: Games Price: $7.99, Version: 1.08 (iTunes) Description: | Read more »

Price Scanner via MacPrices.net

OWC USB-C Travel Dock with 5 Ports Connectivi...
OWC have announced the new OWC USB-C Travel Dock, the latest addition to their line of connectivity solutions. The USB-C Travel Dock lets you connect its integrated USB-C cable to a Mac or PC laptop... Read more
Pelican Products, Inc. Unveils Cases For All...
Pelican Products, Inc. has announced the launch of its full line of cases including Voyager, Adventurer, Protector, Ambassador, Interceptor (for the Apple iPhone 8 and 8 Plus backwards compatible... Read more
$100 off new 2017 13-inch MacBook Airs
B&H Photo has 2017 13″ MacBook Airs on sale today for $100 off MSRP including free shipping. B&H charges NY & NJ sales tax only: – 13″ 1.8GHz/128GB MacBook Air (MQD32LL/A): $899, $100 off... Read more
Apple restocks Certified Refurbished 13-inch...
Apple has Certified Refurbished 2015 13″ MacBook Airs available starting at $719 and 2016 models available starting at $809. An Apple one-year warranty is included with each MacBook, and shipping is... Read more
Is iPhone X Really The Future Of The Smartpho...
Should iPhone X even be called a telephone? It does of course support telephony and texting, but its main feature set is oriented to other things. It is also debatable whether it makes any rational... Read more
OtterBox Announces Full Case Lineup for iPhon...
Apple revolutionized the smartphone industry 10 years ago with the original iPhone, and OtterBox has set the standard of protection from the very beginning by protecting every generation of iPhone.... Read more
LifeProof Introduces What’s NEXT Cases for iP...
LifeProof built its reputation on sleek, ultra-protective iPhone cases. From 360-degree coverage to the first screenless waterproof case, the protection pioneer has always pushed the limits.... Read more
Apple Refurbished 2016 15-inch MacBook Pros a...
Apple has Certified Refurbished 2016 15″ Touch Bar MacBook Pros available starting at $1949. An Apple one-year warranty is included with each model, and shipping is free: – 15″ 2.7GHz Touch Bar Space... Read more
Wednesday deal: 15-inch MacBook Pros for up t...
B&H Photo has 2017 15″ MacBook Pros on sale for $150-$200 off MSRP. Shipping is free, and B&H charges sales tax in NY & NJ only: – 15″ 2.8GHz MacBook Pro Space Gray: $2199, $200 off MSRP... Read more
2.6GHz Mac mini on sale for $599, $100 off MS...
B&H Photo has the 2.6GHz Mac mini (MGEN2LL/A) on sale for $599 including free shipping plus NY sales tax only. Their price is $100 off MSRP. Read more

Jobs Board

Full time *Apple* Hardware Tech needed - ma...
…high level of attention to detail Ethics, integrity and trust Be a geek & Previous Apple experience a must. Previous Apple Retail or other Apple Specialist Read more
Development Operations and Site Reliability E...
Development Operations and Site Reliability Engineer, Apple Payment Gateway Job Number: 57572631 Santa Clara Valley, California, United States Posted: Jul. 27, 2017 Read more
*Apple* Store - Technical Specialist - Apple...
…customers purchase our products, you're the one who helps them get more out of their new Apple technology. Your day in the Apple Store is filled with a range of Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* News Product Marketing Mgr., Publish...
Job Summary The Apple News Product Marketing Manager will work closely with a cross-functional group to assist in defining and marketing new features and services. Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.