Showing posts with label windows. Show all posts
Showing posts with label windows. Show all posts

Tuesday, June 23, 2009

Eclectic And Funny Linux Pictures - Last Day Of Vacation

Hey there,

The last day of vacation is here. Tomorrow (assuming everything has gone to plan) I'll be back in town to either be pleasantly surprised or utterly horrified. And, of course, I'm talking about the blog... Nothing to do with my home life or job ;)

Hope you enjoy the pictures and I can't wait to get back and write something soon. Hopefully, I'll remember how to after going through my backlogged emails (work and play)

Cheers,

NOTE: All pictures are copywrite of their original creators.



Too

many

pictures

not

enough

cutsie

comments




, Mike


Banner for College Student-Oriented Sites (728 version 1)



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, June 22, 2009

Out To Lunch - More Funny Linux Pictures

Hola,

This blog's owner is still on vacation, but hopes to return shortly (and very soon ;)

Hopefully this post is actually making it online. The guy who writes this blog hasn't checked on me in a little while, and, being a simple chunk of text, I have no idea if I'm posting correctly or not... Here's hoping ;)

Enjoy the pictures and, dear author, please come back and take care of me soon!

Cheers,



a

b

c

d

e.  nice comments, huh?

f.  And you thought I'd give this one some effort...



, Mike


Banner for College Student-Oriented Sites (728 version 1)



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Sunday, April 19, 2009

When Stick Figures Attack: Hilarious Computer Animation

Hey there,

The work never ends. Thank God lots of other people have the time, creativity and good-will to share some of the hilarious and expert animation they do.

I found this bad boy on YouTube.com and, even though it has nothing to do with Linux or Unix, it does satisfy that Anti-Windows funny bone and is actually worth watching of its own merit.

Did I mention that it's part of a series? I guess I just did ;) Check it out. It's incredibly funny :)

Cheers,







, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Friday, April 17, 2009

Funny Linux Video: Battle Of The Startup Sounds

Hey There,

Here's a little something to make you smile on the eve before you begin working all weekend :)

This video (which can be found in its original location on YouTube) is both awkward and hilarious. It took me a while to start to chuckle, but this guy's startup sound is one of the most subtly obtrusive things I've ever heard.

And it really goes over well in the library ;)

Enjoy!







, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Wednesday, April 1, 2009

Top 10 Linux Crashes - And Pictures Of them

Hey there,

Once again work interferes with my plans for world domination and I have to splash around outside the local watering hole to find material ;)

As today's title suggests, I went out and found some interesting pictures in an online post called the "Linux Crash Top 10 Pictures." It's apparently an answer to some sort of backlash of Windows users who take their Operating System so seriously that they actually managed to come together and whine in unison; in numbers so staggering that someone felt the need to listen and respond ;) Actually it's a pretty interesting and low-key post. Check it out for the rest of the pictures. I've included my favorites below.

You may note that most of them aren't really "crashes." But, each one does link back to the original site (if those two things can be directly related ?? ;)

Enjoy!



Strange Linux Crash


Linux On Nintendo DS


Linux. Would you like fries with that?


Kernel Panic or normal boot? Does anyone in the audience know the difference?





, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Sunday, March 22, 2009

Funny Unix and Linux Pictures: Almost Windows

Hey there,

For this week's lazy Sunday post we went and found some great Unix/Linux OS photos at fiveprime.org. Some are jokes and some are just interesting ads from an earlier time. Check out the whole shebang if you have the chance :)

My favorite is the "vi paperclip" ;)

Enjoy your Sunday, I'm a little too tipsy to type much more. I can't believe I'm actually staying up to finish this post ;)

Cheers,



NOTE: If you miss the animation in the first photo of the vi Windows paperclip, just refresh the page. You won't be sorry :) It should run in a loop by default











, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Friday, March 13, 2009

Not Even Linux Is Safe From Windows Viruses

Hey there,

Of course, it actually is totally safe. Linux and Unix users have nothing to worry abbout, unless they're running in VMWare on Vista ;)

Here's another funny picture I found at 10dailythings.com. I hope you enjoy it and stop by there for even more goofy pictures.

Apologies to regular readers for this week's weak writing. I either have to go back work or go pass out. It's a miracle I can even type.

Here's a little sneak peek inside my mind tonight:

abababbababbbbabbbbabbbababababbbbaabababbabbabaabbabLinuxaabbbaabababUnixagaabbabbabbabRightAwayaabbabababbbaUpForThreeDaysInARow-NoProblemabababababababab

????

And, yes, I am on-call this week;)

Cheers,

Click the picture below unless you have super-vision and can actually read that error message ;)



Windows Virus On Linux



, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, March 9, 2009

Which Is Better: Linux/Unix Or Windows? ...And Why Does It Matter?

Hey There,

Today, I'm posting an interesting read I found from about a year ago on Education.ZDnet.com. Again, I'm using Monday to prime the pump for a follow up post, because I'd like to get reader input on the subject in question.

The article I'm referring to is at the bottom of this post (with one of the more - at least to me - incomprehsible Pro-Windows arguments I've ever read - although it could just as well have been a pro-Unix/Linux argument if it were written slightly differently).

I've got my own opinions on this subject, but I'm interested to know yours: If you prefer Linux or Unix (which I'm assuming most of our readers do), do you see any reason to continually engage in online-battle vs. the opposing army of Windows users?

Seriously; let me know what you think. Then I'll let you know what I think. ..well, I'll you know what I think, regardless ;) I'm pro-Unix/Linux, but I'll save the rest of it for the follow-up.

Enjoy the argument. Try not to judge the arguers and be objective. Then consider if any of this sort of behaviour is time well spent, a complete waste, enjoyable social interaction, or any combination thereof, etc.

The article, itself, isn't brand new, but then neither is this whole back-and-forth. The original article can be found at ZDnet and is entitled "Why Linux Will Not Displace Windows." I'm looking forward to reading your opinions on this :)

Cheers,



THE ONE RESPONSE TO THE ARTICLE BELOW THAT I FOUND MOST INTERESTING... SO TO SPEAK


You are kidding arent you ?


Are you saying that this linux can run on a computer without windows underneath it, at all ? As in, without a boot disk, without any drivers, and without any services ?

That sounds preposterous to me.

If it were true (and I doubt it), then companies would be selling computers without a windows. This clearly is not happening, so there must be some error in your calculations. I hope you realise that windows is more than just Office ? Its a whole system that runs the computer from start to finish, and that is a very difficult thing to acheive. A lot of people dont realise this.

Microsoft just spent $9 billion and many years to create Vista, so it does not sound reasonable that some new alternative could just snap into existence overnight like that. It would take billions of dollars and a massive effort to achieve. IBM tried, and spent a huge amount of money developing OS/2 but could never keep up with Windows. Apple tried to create their own system for years, but finally gave up recently and moved to Intel and Microsoft.

Its just not possible that a freeware like the Linux could be extended to the point where it runs the entire computer fron start to finish, without using some of the more critical parts of windows. Not possible.

I think you need to re-examine your assumptions.



THE ORIGINAL ARTICLE


Why Linux will not displace Windows


I firmly believe that, all else being equal, the differences between the Windows desktop, the Macintosh desktop, and the Linux desktop are negligible.  With the proper applications, all three platforms will be capable of providing a satisfactory experience for any user.  All three platforms have both free and commercial products available for personal productivity, web browsing, and basic multimedia.  Yet, Windows dominates.  Why?  After all …



  • Apple was first to mass market a fully-functional GUI (though invented at Xerox PARC). 

  • Apple was the first to pre-install their operating system onto their workstations.

  • Apple was first to recognize the value of personal computing to education.


Despite this, Apple's presence does not reach even ten percent of the World's desktops – in Education IT or in the mass market.  The reasons are many but up-front costs certainly play a role.  Nevertheless, Apple is not the subject of this article … I want to talk about Linux! 


In a feature-rich desktop configuration, Linux runs on the same hardware as Windows with comparable performance.  The 'cost' of Linux ranges anywhere from ZERO dollars (for the geeks among us) to $299 per seat (for a one-year RHEL-WS subscription — with 12×5 technical support and 4-hour response.)  For this, the user has complete control over their system configuration.  Yet, with its fixed-price, fixed support, fixed-configuration model, Windows still dominates.  Why?


I just finished reading Vista? No thanks, school says, converts Windows boxes to Linux and I was struck by a couple of things.  Looking to reduce annual costs, the Windsor, CA School District has adopted a variety of solutions centered around workstations running SUSE Linux and Wyse Linux thin-client terminals.  (They use a few Windows and Macintosh workstations but apparently not many.)  Quoting Heather Carver, the district's IT administrator:


"One key to all this is that we're using Citrix (as the bridge) to run Windows apps on thin-client terminals — which the adults are most used to — on the new SUSE Linux 10.1 servers," Carver told DesktopLinux.com. "The kids, well, they adjust to new operating systems and applications very quickly, so a changeover to Linux is no big deal."



Her conclusions are not at all surprising but she ignores another reason why Citrix is needed:



  • most educational software is ported to Windows (and/or Macintosh), not Linux

  • the number of Windows-based titles accompanying textbooks is growing


In short, the absence of high-performance commercial desktop software hurts Linux.  Of course, application availability is a 'chicken or the egg' kind of problem.  Without a critical mass of desktop Linux workstations in people's homes or on their desks at work, there is no incentive to write (or even to port) specialized applications for/to Linux. 


This argument sounds fine until you realize that between OpenOffice and a number of Web browsers for Linux, and a variety of free (or nearly free) applications Linux truly can meet 90% of the needs of those folks who buy Windows today instead of buying Linux.  It's the other 10% though that makes the difference.  (For instance, neither Quicken or TurboTax have Linux ports and neither does iTunes – those are not 'showstoppers' for Education IT but they certainly are for me as a consumer.)


Last week, David Berlind posed a question about the potential threat to Microsoft of the laptop being developed by the OLPC (One Laptop per Child) foundation — targeting school children in the developing world.  (See Image Gallery: Will Negroponte’s One Laptop Per Child be a problem for Microsoft?)  David's point is that this 'little laptop that could' will run a ROM-based Linux configuration.  The question applies equally well to the schoolchildren of Windsor, CA who will be running Linux on thin clients. 


The rationale, of course, is that whatever you were exposed to in school, you are likely going to want when you get out of school.  This is certainly the rationale that Microsoft uses when they grant steep discounts to K-12 public schools all over America — and when they establish enterprise license agreements with large research universities. 


So will the strategy work?  Will these school children clamor for Linux when they get to college?  Will they buy a Linux computer when they graduate from college?  Well, it remains to be seen but, unless Linux vendors get a clue, and soon, I think not. 


Why not? 


Because for Linux, its greatest asset in the machine room — the flexibility of its configuration — is it's greatest liability in the consumer space.  Consumers don't want or need to worry about configuring their computers — nor would most of them even know how. 


The consumer wants a computer which is functional and inexpensive (leaving Macintosh out of the picture for many.)  They have a limited number of needs — write a document, prepare a spreadsheet, send an e-mail, listen to music, share photos.  But, they also have limited knowledge.


If a consumer could walk into their favorite electronics retailer and see a computer running desktop SUSE Linux (or any Linux distribution, for that matter) sitting next to an equally-robust Windows machine at the same price point, and if they could take it home and plug it in a just use it, like they can with Windows, there is no reason to believe that Linux would not be as well received as Windows. 


Unfortunately, this is not a choice most people have.  The fault does not lie with Microsoft.  Nor with Dell or its competitors.  The fault lies squarely at the feet of Linux vendors who do not wish to compete against Microsoft for the commodity desktop workstation market. 


Until they figure out that they MUST compete for the consumer desktop to make a serious dent in Microsoft's dominance of the desktop, they won't make a dent – and no amount of wishing will make it so.


It doesn't matter how great that OLPC laptop turns out to be, or how much those K-12 kids like those Linux clients if they (or their parents) cannot go to the box-store down the street and buy the computer of their choice with Linux pre-installed.   





, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Thursday, December 11, 2008

Unix And Linux Factoids - Your Time To Live Is Gonna Come

Hey there,

Today we're going to start a new random thread of posts dealing with common commands and how they work. The meat of today's post is near the end, as the explanation, when I get around to it, is fairly simple and easy to both convey and understand. The majority of this page will be an introduction to this series of posts, with some philosophy mixed in (which may upset certain people) and a brief discourse on knowledge (what it means to have it and why it's probably the worst measure of a person you could ever use).

Farther down this post, we'll take a look at a common command, named traceroute (generally on Linux and Unix) or tracert (On Windows; I have idea about Mac ;) that makes up part of any sysadmin's network troubleshooting arsenal (hint: do a find for "traceroute" in your browser if you want to skip the preceding discourse!). Of course, not everyone knows how this command works (and we're talking about the very basics). That's nothing to be ashamed of, of course. Everything you know now, you learned at some point in your life (unless you're of that rare breed that emerges from the birth canal engaging adults in stimulating discussion of the experience ;). Before you learned it, you didn't know it. It's hard to fault someone for not knowing something they don't know already, even if your predisposition is to think that they should. For instance, if you were to approach someone on the street to ask them what time it was and they replied to you in an obscure Greek dialect (actually, any Greek, for me would be... Everyone knows where that lame joke was going ;), you wouldn't consider yourself stupid for not understanding them. If you'd taken the time to learn how to speak Greek, studied it until you became fluent and still had no idea what they were saying to you, I guess the situation could be awkward. Kind of like this introduction :)

The point I'm trying to make in the downward-trajectory of this introduction to these new factoid (or bits-of-interest) posts is that one should never become too socially intimidated, or otherwise societally fettered, that they just stop learning for fear of someone else finding out they didn't already know something. There is an old saying (which I'll paraphrase) which is about as true as true gets: The most agile-minded, clever and knowledgeable of us are those who are not afraid to ask for clarification or explanation when they don't understand. Keep a dictionary on hand when you're reading a book. There's no shame in understanding what you're reading. Dictionary's exist for a reason ;)

In my personal and professional life, I do my best to avoid highly intelligent individuals with extremely low self-esteem, as their company never seems to foster any sort of learning, sharing or growing. Better, still, I should hang out with folks who (regardless of their level of intelligence) are curious, interested, interesting and non-judgemental. It's been my experience that if you stay away from the "better" class of people, your life will be much more rewarding and enjoyable. The one thing that you must remember about people who look down at you is that they're, generally, consumed with the fear that you'll find out how much they, themselves, don't know or understand. Living life with one's guard constantly up is to, essentially, ensure one's own death (mentally, physically, spiritually; take your pick or go for option 4).

I've often found the above-mentioned argument the most decisive in shutting down, and casting aside, negative influences in my life. It bears repeating because it's so obvious and impenetrable: No matter who you are, you didn't know anything until you learned it. Everything, from your native tongue (essential in ensuring your survival and, possibly even more importantly, being able to ask where the bathroom is ;) to the principles of quantum physics, are all perfect examples of something you once didn't know of or understand. Again; no shame in that. People get an education (in schools, at the library or on the streets - all the same) for a reason. Just because someone you know can quote William Shakespeare (and does so at any and every opportunity) does not mean that you're any less capable because you aren't totally familiar with his work (William's, that is). I could write a book about this, but it would probably become self-parodying at some point. Here's a quick, and abbreviated, list of a few other ways you can spot folks who will suck the life out of you, and how to avoid them. Better yet, if you're a glass-half-full type, attempt to start a dialogue with them regarding the issue at hand - some folks only "seem" to be self-important and megalomaniacal. If you can reason with someone, you may end up enjoying a friendship with them that might have otherwise been lost. It's important to remember that immediately dismissing people who irritate you is exactly what irritates you about them in the first place:

1. If someone claims to "only read the best books" or "only dine at the finest restaurants," or other such snobbery, be sure to ask them who supplies them with their opinions? Having only read, or experienced, the best and the finest, they can't have possibly ever exposed themselves to anything lesser and, therefore, can't possibly argue the merits of the finer things with an ounce of credulity ;)

2. If someone treats the foreign help as if they're idiots because they don't speak English (or whatever your native language may be), be sure to find out exactly how well they speak that foreign tongue. If they're fluent in it, they may just be cruel, since they could converse with "the help" in that foreign language and avoid all the insults. If they can't speak the foreign language, they have no basis upon which to judge the other person's worth. For instance, I've known many Spanish, Polish, Russian, Hungarian, etc, people who know how to speak quite a bit more English than I can speak (or even pronounce correctly) in their language. When you think about it that way, it makes it harder to justify the false belief that the person who doesn't speak your language is any less intelligent than you. If anything, when it comes down to multilingual capability and capacity for communication, they've got you beat hands down. I can't speak a lick of Polish, but I've met plenty of first generation American's who can understand most of what I say to them and are able to communicate their ideas to me reasonably well.

3. If you're ever put in a position where you're made the object of public humiliation because of your lack of knowledge or understanding in a certain area (and your response should be as commensurately rude as the insult, unless you prefer to let other people perceive for themselves what kind of impotent ass would lower himself to spotlight your weak points while, inadvertantly, exposing his own mediocrity), be sure to appear to be congenial. Laugh it off and make a hayseed remark (something stereotypical of the type of rube you're being portrayed as). Then be sure to follow up with an impossible question for them to answer (back, again, to the fact that none of knows what we haven't already learned). When they can't, politely explain (simultaneously allowing them the opportunity to save face and you to be the better person). If you can't think of anything to say that will stump them, take possession of something they hold dear (the more pretensious, the better) and hold it ransom until they apologize to you. This move can backfire on you, but it's great if you're stepping in for someone who's actually intimidated or beside themselves over the embarrassment. Then you can hold onto the item until they apologize to the person they've insulted. That move may, occassionally, get you a phone number at the very least ;)

Anway, Traceroute. Here's how it works. Very simply and, hopefully, easy to understand. Future posts will be composed of more than one factoid, since, as you'll see, they're not very substantial, insofar as page length is concerned.

Traceroute works buy sending a bundle of packets (I believe the norm is 3) from your source to your destination. So if you were to invoke:

host # traceroute www.google.com

traceroute would begin sending out those packets to trace a route (listing all the hops - usually routers or firewalls - that it encounters along the way) from your machine to whatever IP address www.google.com resolves to. The method it uses to track every step of the way is ingenious in that it's very basic (As a side note, some versions use UDP, some use TCP, and most use the ICMP protocol - we're assuming ICMP for our example, although it doesn't really matter, since this is just "theory" ;).

The trick to how it operates is very basic. It has to do with the TTL (Time To Live) setting in the packets themselves. What it does is send out the first batch with a TTL of 1. Since every router the packets pass through decrements the TTL by one, the first "shout out" is reduced to zero at the first hop, which generates an ICMP timeout-exceeded condition, the connection is terminated and that information is received. Now, we have the information we want about the first router on the our path to www.google.com.

Again, the beauty in the simplicity of the theory continues to pay off until the end. The next batch of packets gets sent out with a TTL of 2, which means it will pass the first router and get to the second router on the road to www.google.com before its TTL is decremented to 0 and it's returned. Information is gathered in this manner (Every successive bundle of ICMP packets having a TTL one greater than the previous) until the endpoint is reached. And, at that point, you have a nice listing of the router-path your network traffic follows (at least for now ;) to get from your machine to Google's machine.

As a side note, almost all implemenations of traceroute default to making 30 attempts before they give up entirely and leave you with an incomplete route. I, generally, will just control-c out of the operation if I see more than one line of asterisks (* * *) as these indicate a timeout before the next bundle of packets gets sent out. One, possibly two, lines of these might be acceptable if you are aware of network latency issues that may be affecting the time it takes for the packets to get back to you, but, in my experience, this behaviour will generally continue until you reach the 30th round and usually indicates that you've just passed through a router or firewall that drops these sorts of requests or hit a dead end (modern security precautions leave this as a mystery for you to ponder over). Also, to include some of the confusing output you may see from time to time, if a bundle of packets goes through a router that doesn't respond, it may take an alternate route, which will still draw you a map to your destination, just not necessarily the "intended" one (from that particular router or firewall's perspective). Since IP routing doesn't guarantee that your packets will take the same path every single time you send them from one host to another, the information may be somewhat misleading. For the most part, though, it's correct, as the basic routing tables on most major hubs don't change quite as often as the one in your company data center might.

Hopefully, that explanation was succint enough, while still being informative. Since I write 5000 words if you ask me how I'm doing, it's hard for me to realistically guage the end-user experience ;)

Best wishes, and to your continually increasing store of knowledge. If you think you can't learn something (anything) you're probably selling yourself short. Your brain will only atrophy if you refuse to use it. Conversely, if you keep at it and continue to put forth the effort, someday even your own country's fiscal policies will make perfect sense to you ;)

, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, August 4, 2008

Funny on Monday - MS Has Pushed It Too Far

Hey There,

This week I've extended the humor section to include today. The main reason for this (as alluded to in the title) is an operating system (the name rhymes with Mistah) that is probably the worst thing I've ever had to work on in my entire life. It's taking massive constraint to make today's humor anything but MS-bashing. I think I've slept 2 hours since Saturday and some of the problems I've run into are truly scary (referencing a support MS's site with 511 pages of complaints - still unresolved - about "one" issue).

This has, more than anything MS has ever done, made me a pure Linux desktop person. I could deal with the XP that came with my last PC, but this OS is so poorly designed, implemented and supported, I can't believe they charge money for it. And, to top it off, they're dropping support for XP to push this new version of warmed-over garbage while it still "barely works"...

Anyway, once I'm done posting tonight (and covering up the patches of hair I've pulled out ;) this laptop is going full Linux. I feel like an idiot for not just doing that in the first place. I heard the horror stories, but downplayed them, since I'd heard the same thing about lots of other versions of MS Windows, but this time they were more true than I could have ever imagined.

If you buy a new PC or laptop (which will have this OS on it, by default - bundled with hardware and drivers that MS has deemed incompatible, due to user complaints, although they have no problem branding machines with unsupported hardware -- a buck's a buck), get ready to install another OS from scratch (at least on a separate partition). On the bright side, I didn't upgrade to the "ultimate" edition. That probably would have killed me ;)

In any event, I'll be back tomorrow with some original material (although the above is all, technically, original ;) and apologize for the lack of quality content today.

Hopefully you'll enjoy this long-long joke from long-long ago (and my tags for this post :)

Cheers,

Courtsey of
alt.sysadmin.recovery
, where Sysadmins come to whine,
it's

The Sysadmin Price List:



Regular (as it were) Prices:



  • Calling me with a question --- $10
  • Calling me with a stupid question -- $20
  • Calling me with a stupid question you can't quite articulate - $30
  • Implying I'm incompetant because I can't interpret your inarticulate problem description - $1000+punitive damages
  • Questions received via phone without first trying help desk - $10.00
  • Questions where answer is in TFM - $10.00 (this should have been higher :-)
  • Questions during Xpilot session - $20.00
  • Calling me back with the same problem *after* I fix it once - $100
  • Insisting that you're not breaking the software, the problem is on my end somehow - $200
  • Asking me to walk over to your building to fix the problem - $5/step
  • Asking me to drive to another town to fix your problem - $50/mile+gas
  • If you interrupt me while I was reading news - $25/hr
  • If you interrupt me while I was trying to count all the xroaches on my screen - $35/hr
  • If you interrupt me while I was trying to actually fix somebody else's problem - $45/hr
  • If you try to hang around and get me to fix it now - $50/hr
  • If you expect me to tell you how I fixed it - $60/hr
  • If you've come to ask me why something isn't working that I'm currently working on - $70/hr
  • If you're asking me to fix something I fixed for you yesterday - $75/hr
  • If you're asking me to fix something I told you I fixed yesterday, but never did fix - $85/hr
  • If you're asking me to fix a quick patch that I made that didn't work - $95/hr
  • If you're bugging me while there's another admin in the room who could have done it for
    you - $150/hr
  • Making me trek to your office to fix your problem then leaving immediately after hanging up
    the phone - $1500.00
  • Calling up with a problem which "everybody" in the office is having and which is "stopping
    all work." Not being there when I rush over to look at it and nobody else in the office knows
    anything about it. - $1700.00
  • Explaining a problem for 1/2 hour over the phone BEFORE mentioning it's your personal machine at home - $500.00
  • Self-diagnosing your problem and informing me what to do - $150.00
  • Having me bail you out when you perform your own repairs I told you not to do - $300.00
  • Not telling all of your co-workers about it - $850.00
  • Explaining that you can't log in to some server because you don't have an
    account there - $10
  • Explaining that you don't have an account on the machine you used to have an
    account on because you used it to try to break into the above server - $500
  • Forgetting your password after it was tattooed on your index finger - $25
  • Changing memory partitions without informing me first - $50
  • Each time you call and start out by saying "I was fooling around on
    my computer when ..." - $50 + $ 10 /hr to fix the problem + $ 30 /hr
    to clean up after you.
  • Installing programs without informing me /getting permission first -$100 per program
  • Technical support for the above programs - $150 per hour (regardless of whether I know the program or not :))
  • Calling me to tell me that none of the users in your group can log on
    without telling me that you placed an order to remove applications for those
    users $25
  • After I find out that you placed the order to DELETE all of your users
    $1,000 (including $4,000 discount for the hilarity factor)
  • Leaving files on desktop - $5 per file, $10 per day the file is left unclaimed
  • Bringing in your own copy of the original Norton Utilities v1.0 to fix a brand new machine - $200
  • Putting feet up next to workstation after ten mile jog through NYC streets - $50
  • Spending 30 minutes trying to figure out what your problem is, and another
    5 explaining how to verify and fix it, only to hear you say... "So that's
    what the little box that popped up on my screen was telling me to do!" - $40
  • Dealing with tech support requests for obviously pirated software - $25
  • Dealing with "How can I get another copy of [obviously pirated software]?
    Mine just died." requests - $45
  • Having to use the "We're really not the best people to talk to about that;
    why don't you try calling the number on the box in which you bought it?" line
    - $55
  • Actually needing to explain copyright law to you after you failed to get
    the hint in the previous response - $95 (includes instructions for
    getting freeware replacements from the public file server)
  • Having to point out anything that's on the wall in a typeface larger than
    18 points - $15
  • If I wrote the sign - $45
  • If it's in a 144 point font and taped to the side of the monitor facing the
    door - $75
  • Reporting slow connection by passenger pigeon packets to MPEG archive
    in Outer Slobavia as a Mosaic/Netscape/Gopher/FTP client problem - $25.00
  • Reporting it more than once - $50.00
  • Reporting it more than once and implying slothfullness on tech
    support's inability to solve problem - $200.00


"Hardware Problem" Prices:



  • Figuring out you mean floppy drive when you say hard drive - $50.00
  • BEFORE I order your replacement hard drive - $250.00
  • Telling me that you don't have a hard drive $50
  • Spending 15 minutes to find out the size of your hard drive (includes
    walking you through the process) $100
  • Telling me that you don't save anything to the any of the drives, you "just
    push a button and it goes off into computer land." $50
  • Fixing your "broken" mouse with a mousepad - $25.00
  • Fixing your "broken" optical mouse by rotating the mousepad 90 degrees -$35.00
  • Fixing your "broken" optical mouse by taking off the post-it note someone has put on the bottom. - $50.00
  • Fixing a "broken" mouse by cleaning the rollers - $50.00
  • Fixing your "broken" printer with an ink/toner cartridge - $35.00
  • Fixing your "broken" ANYTHING with the power button - $250.00
  • Fixing the "crashed" system by turning the external disk back on - $200.00
  • Fixing the "hung" systemby plugging the ethernet transciver back in - $375.00
  • Fixing the crashed nameserver by plugging back in the SCSI cord someone
    accidentially yanked out on Friday afternoon when the 'real' sysadmin has
    just left for a two week vacation - $400
  • Visiting your old university and fixing the broken PC by plugging the
    monitor lead back in - $50
  • Spilling coke on keyboard - $25 plus cost of keyboard
  • Spilling coke on monitor - $50 plus cost of monitor
  • Spilling coke on CPU - $200 plus cost of motherboard swap plus hourly rate of $150 per hour spent reinstalling the system
  • Cleaning the mouse with spit and sleeve - $50 plus cost of sleeve plus cost of therapy :)
  • Chewing on the end of the graphic tablet stylus - $25
  • Listening to your network troubles, suggesting that you check to see if
    you are plugged into the network jack, hearing yes, trying five other things,
    asking you to identify your plug type, listening to you drag furniture, and
    hearing a sheepish, "Oops. Nevermind." - $35 (including discount for polite apology)



Beeper Prices:



  • Beeping me when I'm out with the significant other - $50
  • Beeping me when I'm out of town and I took pains to insure that help
    files were left all over and that diagnostics had been run on all machines before I left - $100
  • Beeping me more than once to tell me that the printer's offline and the fix is to press the
    On Line button - $200
  • Beeping me more than once while I'm asleep - $50 per beep
  • Beeping me and not identifying yourself within the first 5 seconds - $25
  • Beeping me and then changing your story / denying you placed the call / hoped I would
    forget who caused the problem - $500


Special Rates:



  • Dealing with user body odor - $75.00/hour
  • Dealing with user not familiar with the primary language spoken at site - $50.00/hour
  • Dealing with user who is (self-proclaimed) smarter than you are, but
    still calls every other day for help - $100.00/hour
  • Dealing with computer hobbiests - $125.00/hour


  • Questioning the other prices .................................$50


Collected from posts & email from:



jam@philabs.philips.com
jlkinsel@engr.ucdavis.edu
dpeschel@u.washington.edu
msuzio@tiamat.umd.umich.edu
nhughes@umich.edu
harlan@oberon.cs.wisc.edu
uhajj@superdec.uni.uiuc.edu
the8thman@aol.com
emk@dartmouth.edu
itchris@dale.ucdavis.edu
d-farley@tezcat.com
akilpat@engr.ucdavis.edu
ilaine@panix.com
s138@cpcroh.cpc.uea.ac.uk
drewkt@wellsfargo.com
rambler@sowest.net


, Mike

Sunday, July 27, 2008

Sunday Unix/Linux Jokes - A Fair Match

Hey there,

As yesterday's post on Unix and Linux Laughs showed to a lesser degree, a good majority of Linux and Unix jokes, if you run them through the proper sieve, rely on MS bashing. And the opposite is also true for Windows jokes.

While I feel that the degradation of one OS (or person, or race, or culture or species) isn't necessarily comic gold, it can be funny. As long as it's funny :) If any of you have ever seen Eddie Murphy's old (I'm dating myself, here ;) movie "Raw," you are familiar with the argument. Although Eddie was addressing the relationship of curse-words with humor, I thought he stated the point quite eloquently (although I can't post it here without using a lot of pound signs - the uncensored version can be found at imdb.com):

Now I can't have no 'curse' show, I mean I gotta throw in a few jokes in between the curses, I can't come out and go "Hello! Filth flar'n filth, m####rf#####r, d##k, p###y, snot, and sh#t. Good night! Suck my d##k!"

The point, of course, being that a curse-only show wouldn't be funny. And I see the same thing a lot when I'm looking for Linux and Unix humor (or any humor, for that matter). About 25% of it is funny and the rest are the same warmed-over jokes that could be applied to anyone or anything you dislike. Still, not funny is not funny. Our senses of humor may vary but a statement like:

Windows is lame

wouldn't make any of us laugh. Unless the comedian delivering that line had "incredible" timing ;)

With that in mind, I'm putting content on this page from The University of Wisconsin which gives an equal jovial thrashing to Linux/Unix and Windows.

Some of it's funny, some of it's not. Either way, if MS-bashing or Linux/Unix-bashing turn you off completely, just read the other section :)

Also, please note that (since we're posting this stuff just to make the weekends more fun) every effort is made to give proper attribution where we can find it. The page from which we pulled this material states:

Note: not original, taken from various posts to mail-lists/news-groups and public documents on the net (some of them are also sligthtly modified to fit better).

And then I fixed a lot of typos, adding one more layer of abstraction to the attribution puzzle. Sorry; I'm compulsively drawn to correct improper spelling when I proof my posts. If I notice, at least ;)

In any event, Enjoy! And, just for fun, see how many of these jokes you can make fit into the opposite category in which they're placed ;)

----------------------------------

Anti MS-Windows jokes:

MicroSoft is not the answer, MicroSoft is the question, the answer is no.

Why does the DOS version of a program always run faster on a 2 MB 16 MHz 386SX than the Windows version on a 8 MB 66 MHz 486DX2?

Is MicroSoft a new toilet paper or what?

The PC has created anarchy. Hardware and software have been thrown together in random configurations at the whim of any employee with access to an expense voucher and a computer catalogue. The result has been a financial and administrative nightmare for corporations.

640K ought to be enough for anybody said Bill Gates in 1981.

I wonder how much the harddisk and RAM producers pay the Windows developers to write such resource-demanding programs.

Question: How many Microsoft engineers do you need to replace a broken light-bulb?
Answer: None, Microsoft will standardize the darkness in such cases!

Windows-95 makes Unix look like an operating system !

Competition of writing books about elephants:
IBM: Big blue elephant.
Novell: Linking elephants.
Microsoft: Why you must buy Windows 95.

PnP = Plug Not Play

PnP = Plug aNd Phone

PnP = Plus aNd Pray

1995: DOS is dead. Bill.
1998: Bill is dead. DOS.

1995: DOS is dead. Bill.
1998: C:\>copy con prn
Bill is dead.
^Z


Question:What is the difference between Windows and an apple ?
Answer:Apples only fall down once a year.

NT = Not Today

If MicroSoft would sell cars:
the model of a given year would be available one year later
you have to buy a new car, if any traffic signs change
your car would stop sometimes and for some reason you think this is normal
you can only drive in your car alone except if you have a Car95 or a CarNT
there would be no controls for oil, gas or breaks - only a "unknown error" light
people would be fascinated by all these new features in car95 like doors and gearboxes
they will have to use MicroSoft gas

Windows = cheap Mac clone

An Intel PC has four protections modes: Abort, Retry, Fail and Reboot

Windows 95: 32 bit extensions and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.

NT is not enterprise ready until MS is willing to support it.

Bill Gates: If GM (General Motors) had kept up with technology like the computer industry has, we would all be driving twenty five dollar cars that got 1000 miles/gallon.
General Motors: Yes, but would you want your car to crash twice a day?


error #123: This system has been running Windows for more than 6 hours without an error. Something must be wrong! Please reboot!

MS Windows - the 3270 of the 21st century.

In a world without walls and fences - who needs windows and gates ?

"The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers" [Bill Gates, The Road Ahead, p.265]

GM vs MS
At a recent computer expo (COMDEX), Bill Gates reportedly compared the computer industry with the auto industry and stated:
"If GM had kept up with technology like the computer industry has, we would all be driving twenty-five dollar cars that got 1,000 miles to the gallon."

In response to Bill's comments, General Motors issued a press release stating (by Mr. Welch himself):
"If GM had developed technology like Microsoft, we would all be driving cars with the following characteristics:
For no reason whatsoever your car would crash twice a day.
Every time they painted new lines on the road you would have to buy a new car.
Occasionally your car would die on the freeway for no reason, and you would just accept this, restart and drive on.
Occasionally, executing a maneuver such as a left turn, would cause your car to shut down and refuse to restart, in which case you would have to reinstall the engine.
Only one person at a time could use the car, unless you bought "Car95" or "CarNT". But then you would have to buy more seats.
Macintosh would make a car that was powered by the sun, reliable, five times as fast, and twice as easy to drive, but would only run on five percent of the roads.
The oil, water temperature and alternator warning lights would be replaced by a single "general car default" warning light.
New seats would force everyone to have the same size butt.
The airbag system would say "Are you sure?" before going off.
Occasionally for no reason whatsoever, your car would lock you out and refuse to let you in until you simultaneously lifted the door handle, turned the key, and grab hold of the radio antenna.
GM would also require all car buyers to also purchase a deluxe set of Rand McNally road maps (now a GM subsidiary), even though they neither need them nor want them. Attempting to delete this option would immediately cause the car's performance to diminish by 50% or more. Moreover, GM would become a target for investigation by the Justice Department.
Every time GM introduced a new model car buyers would have to learn how to drive all over again because none of the controls would operate in the same manner as the old car.
You'd press the "start" button to shut off the engine.

NT = New Teflon (Wall Street alone are reported to have thrown over 100 million dollars down the drain on failed NT projects, but nothing sticks ...)

Question: Who said the name Microsoft and when ?
Answer: Bill Gates wife at their wedding night !

---------------------------------------------------------------------------

Anti UNIX jokes:

If Unix is the answer, then it must have been a stupid question.

Unix is the only virus with a command-interface.

How can an operating system from 1970 (UNIX) be more modern than an operating system from 1978 (VMS)?

Unix - the first computer virus.

NFS = Nightmare File System.

Berkeley is famous for LSD and BSD UNIX. I don't think that is a coincidence.

Sure, the Unix file system corrupts your files, but look how fast it is!

Friends don't let friends use Unix.

Unix - the ideal operating system for CPU's that are never powered up.

Nothing wrong with Unix that a total redesign and rewrite can not fix.

UNIX will be preempted by NT. UNIX doesn't know it yet - it won't notice until it's too late, because UNIX is the Yugoslavia of software, at war with itself -- but it's all over.

The users of Unix systems said speed wasn't an issue when the Alpha chip was released. The same people tell their wives and girlfriends that size doesn't matter.

If Unix were a beer, then it would be shipped in open casks so that anybody could p### in it before delivery.

UNIX is user friendly. It's just selective about who its friends are.

UNIX is akin to a religion to some. If things aren't done like they are in UNIX, then they must be bad. Sorry, I don't believe in this religion.

UNIX is a four-letter word!

VI = Virtually Incomprehensible.

Unix is about as user friendly as a blow in the back from an ice-pick, only not quite as productive.

What has happened, when a system-manager gets gray-haired in one day ? One day with a UNIX system !

How do you pronounce UNIX ? You Nix !

The sad thing about UNIX is that no matter how many times you hit yourself over the head with it, you never quite manage to completely lose consciousness.

Cretin and UNIX both start with C.

The scariest thing about Jurassic Park was that the control systems were Unix.

I used to do VMS, now I do Unix - it's a living.

Why is using a UNIX system like being an Eunuch? Everytime you go to do something important, you realize something critical is missing.

Why aren't there many female unix users? They don't think about to ask a man for help!

UNIX programmers are like witch doctors. They think they have to be covered with scars to show how powerful they are.

UNIX on Alpha ? Why run a 2-bit operating system on 64-bit hardware ?

UNIX and NT were talking about security and reliability. After some time they concluded, that they would like to be like VMS, when they grow up.

NFS = Not Fully Serviceable.

NFS = No File Security.

, Mike

Wednesday, April 9, 2008

Shell Menu Script For Cygwin Linux To Access The XP Control Panel

Cygwin Bash script to access the XP control panel

Please click the above image for a larger, and scarier, version ;)

Hello again,

Just in case you read the title and thought "oh man, more color?", I've kept it to a minimum here ;) Although the concepts used in creating today's script were covered in our previous posts on using color in the shell and creating a simple color menu (both for Linux and Unix), this one is just different enough that I thought it might be of interest to some folks out there.

Today's script is actually for a very specific brand of Linux: Cygwin for Windows XP (I think you could get away with using this script letter-for-letter on Windows 2000, but I can't be sure about ME and Vista).

The script interface is designed so that you can access the Windows Control Panel directly from your default Cygwin Bash shell. Check out the picture above for a look at it in action (breathtaking... ;). Unfortunately, I have yet to figure out how to make Cygwin control the Control Panel applets once they've launched in Windows. I believe it might be possible with some Tk button pushing, but that's beyond where I'm at with Cygwin.

The script can be run simply from the command line and requires no arguments (Although it does assume that your Windows environment is setup correctly and your system knows where its system32 folder is):

user@hostpc ~ ./xpcpanel.sh

You'll note that not every single control panel option is included in our Linux menu shell script. I picked the top 16 (This is a subjective rating system of course ;). All of the other applets should be listed under your main Windows directory, in the system32 folder and named something like "applet.cpl". For instance, the output from an "ls" on my machine comes out to around 30 applets. They can all be run using the "control" command, like so:

user@hostpc ~ control main.cpl

And here's the complete list of applets you can use to customize this menu (The number and availability may vary depending on your system, but this should be a fair representation. Also note that /cygdrive/c/WINDOWS/system32 directory is actually C:\WINDOWS\system32 if you use Windows to navigate):

user@hostpc ~
$ ls /cygdrive/c/WINDOWS/system32/*.cpl
/cygdrive/c/WINDOWS/system32/access.cpl
/cygdrive/c/WINDOWS/system32/appwiz.cpl
/cygdrive/c/WINDOWS/system32/bthprops.cpl
/cygdrive/c/WINDOWS/system32/desk.cpl
/cygdrive/c/WINDOWS/system32/firewall.cpl
/cygdrive/c/WINDOWS/system32/hdwwiz.cpl
/cygdrive/c/WINDOWS/system32/inetcpl.cpl
/cygdrive/c/WINDOWS/system32/infocardcpl.cpl
/cygdrive/c/WINDOWS/system32/intl.cpl
/cygdrive/c/WINDOWS/system32/irprops.cpl
/cygdrive/c/WINDOWS/system32/javacpl.cpl
/cygdrive/c/WINDOWS/system32/joy.cpl
/cygdrive/c/WINDOWS/system32/main.cpl
/cygdrive/c/WINDOWS/system32/mlcfg32.cpl
/cygdrive/c/WINDOWS/system32/mmsys.cpl
/cygdrive/c/WINDOWS/system32/nCredps.cpl
/cygdrive/c/WINDOWS/system32/ncpa.cpl
/cygdrive/c/WINDOWS/system32/netsetup.cpl
/cygdrive/c/WINDOWS/system32/nusrmgr.cpl
/cygdrive/c/WINDOWS/system32/nwc.cpl
/cygdrive/c/WINDOWS/system32/odbccp32.cpl
/cygdrive/c/WINDOWS/system32/powercfg.cpl
/cygdrive/c/WINDOWS/system32/sapcacpl.cpl
/cygdrive/c/WINDOWS/system32/sapfcpl.cpl
/cygdrive/c/WINDOWS/system32/sysdm.cpl
/cygdrive/c/WINDOWS/system32/telephon.cpl
/cygdrive/c/WINDOWS/system32/timedate.cpl
/cygdrive/c/WINDOWS/system32/wgpocpl.cpl
/cygdrive/c/WINDOWS/system32/wscui.cpl
/cygdrive/c/WINDOWS/system32/wuaucpl.cpl


And here it is. I hope you enjoy it and find it useful. Once I'm on the Linux command line, I don't want to futz around with Windows unless I have to, and this script helps out a little :)

And, oh yes, note also that this is a fairly long menu (16 control panel items alone), so the default Cygwin window won't be big enough to fit it all in. As long as you enter a value (it can even be bogus) and hit any key, it will redraw the screen so you can resize your window as many times as you want)

Cheers,


Creative Commons License


This work is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

#!/bin/bash
#
# xpcpanel.sh - Save Yourself The Hassle Of Dealing With The XP Start Menu :)
#
# 2008 - Mike Golvach - eggi@comcast.net
# Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
#

trap 'tput reset;exit 1' 1 2 3 9 15

tput civis

while :
do
echo -e "\033[44;37;22m"
clear
echo -e "\033[41;37m"

echo -ne "\033[46;30m"
tput cup 8 25 ; echo -n " Windows XP Control Panel "
tput cup 9 25 ; echo -n "----------------------------"
tput cup 10 25 ; echo -n " Choose Your Option "
echo -e "\033[40;32m"

tput cup 12 25 ; echo -n " 1. Accessibility "
tput cup 13 25 ; echo -n " 2. Add/Remove Programs "
tput cup 14 25 ; echo -n " 3. Display Settings "
tput cup 15 25 ; echo -n " 4. Add Hardware "
tput cup 16 25 ; echo -n " 5. Internet Explorer Setup "
tput cup 17 25 ; echo -n " 6. Regional Settings "
tput cup 18 25 ; echo -n " 7. Game Controllers "
tput cup 19 25 ; echo -n " 8. Mouse Settings "
tput cup 20 25 ; echo -n " 9. Keyboard Settings "
tput cup 21 25 ; echo -n " 10. Sound/Audio Settings "
tput cup 22 25 ; echo -n " 11. Network Settings "
tput cup 23 25 ; echo -n " 12. User Account Settings "
tput cup 24 25 ; echo -n " 13. Power Settings "
tput cup 25 25 ; echo -n " 14. System Properties "
tput cup 26 25 ; echo -n " 15. Phone And Modem Options"
tput cup 27 25 ; echo -n " 16. Date/Time Settings "
tput cup 28 25 ; echo -n " 17. Quit "

echo -ne "\033[41;30m"
tput cup 30 28 ; echo -n " Pick Your Poison: "
tput cup 30 48
tput sc

read y
tput cup 32 30

case "$y" in
1)
control access.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
2)
control appwiz.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
3)
control desk.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
4)
control hdwwiz.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
5)
control inetcpl.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
6)
control intl.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
7)
control joy.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
8)
control main.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
9)
control main.cpl,@1
tput rc
echo -n "Any Key To Menu"
read x
;;
10)
control mmsys.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
11)
control ncpa.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
12)
control nusrmgr.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
13)
control powercfg.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
14)
control sysdm.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
15)
control telephon.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
16)
control timedate.cpl
tput rc
echo -n "Any Key To Menu"
read x
;;
17|q|Q)
tput sgr0
clear
exit
;;
[A-Za-z])
tput cup 32 28
echo "Unless you're quitting, please Pick a NUMBER"
tput rc
echo -n "Any Key To Menu"
read x
;;
*)
tput cup 32 28
echo "$y - Unknown Option"
tput rc
echo -n "Any Key To Menu"
read x
;;
esac
done


, Mike




Tuesday, December 25, 2007

Website and URL Downloading Using ActiveState Perl for Windows

Merry Christmas:) Again, my apologies to those of you who don't observe the holiday.

Today's post (inlined scripts aside) will be nice and short. I'll leave it to you to refer to yesterday's post if you want more information, or commentary, regarding the basics of this script and how to use it, as it's almost exactly the same.

These are special versions of the dUrl and dUpeDL scripts that I've ported to use ActiveState's Perl for Windows. This comes in handy when you want to do some massive downloading and don't have access to a Linux or Solaris box.

Note that the one requirement of the original script, "wget," is also needed for this version of the script to work. You can download that for free at http://www.christopherlewis.com/WGet/default.htm. Also, again, note that you should modify the lines in dUrl that contain the dUpeDL script reference, as they indicate a fictitious location for it!

Enjoy the day off of work, the company of your family and/or friends and, hopefully, some much deserved peace and rest.

Cheers!


Creative Commons License


This work is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

#!c:\perl\bin\perl

#
# 2007 - Mike Golvach - eggi@comcast.net - beta v.000000000000000001a
#
# Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
#

use LWP::Simple;

if ( $#ARGV < 0 ) {
print "Usage: $0 [URL|-f URL file]\n";
print "URL must be in http:// format - no https yet\n";
exit(1);
}

$debug=0;
$multi=0;
$counter=1;
# simple for now - better save-system later, maybe...
# also, we'll make the shared download system a function

if ( $ARGV[0] eq "-f" ) {
if ( ! -f $ARGV[1] ) {
print "Can't find URL file $ARGV[1]!\n";
exit(2);
}
$multi_file=$ARGV[1];
$multi=1;
chomp($download_dir="$ARGV[1]");
$download_dir =~ s/\//_/g;
$download_dir =~ s/\\/_/g;
if ( ! -d $download_dir ) {
system("mkdir $download_dir");
}
if ( ! -d $download_dir ) {
print "Can't make Download Directory ${download_dir}!\n";
print "Exiting...\n";
exit(2);
}
} else {
chomp($download_dir="$ARGV[0]");
if ( $download_dir !~ /^http:\/\//i ) {
print "Usage: $0 [URL|-f URL file]\n";
print "URL must be in http:// format - no https yet\n";
exit(1);
}
$download_dir =~ s/.*\/\/([^\/]*).*/$1/;
if ( ! -d $download_dir ) {
system("mkdir $download_dir");
}
if ( ! -d $download_dir ) {
print "Can't make Download Directory ${download_dir}!\n";
print "Exiting...\n";
exit(2);
}
}

if ( $multi == 0 ) {
@dl_list=();
$url="@ARGV";
chomp($url);
print "Parsing URL $url...\n";
$dl = get("$url");
@dl = split(/[><]/, $dl);
print "Feeding $url To The Machine...\n";
foreach $dl_item (@dl) {
next if ( $dl_item !~ /(href|img)/ );
next if ( $dl_item !~ /http:\/\// );
next if ( $dl_item !~ /(jpg|jpeg|gif|png)/ );
$dl_item =~ s/(a href|img src)=('|")//;
$dl_item =~ s/('|").*//;
push(@dl_list, $dl_item);
}
$is_it_worth_it = @dl_list;
if ( $is_it_worth_it == 0 ) {
print "No Image References found!\n";
print "No point in continuing...\n";
print "Moving $download_dir to ${download_dir}.empty...\n";
rename("$download_dir", "${download_dir}.empty");
exit(4);
}
print "Churning Out URL Requests...\n";
if ( $debug == 0 ) {
print "j=jpg g=gif p=png ?=guess\n";
}
chomp($this_dir=`cd`);
chdir("$download_dir");
$start_time=(time);
foreach $dl_req (@dl_list) {
$tmp_dl="";
$req_filename = $dl_req;
$req_filename =~ s/.*\///;
if ( $debug ) {
print "Grabbing $req_filename\n";
} else {
$file_ext = $req_filename;
$file_ext =~ s/.*(jpg|gif|png).*/$1/;
if ( $file_ext !~ /(jpg|gif|png)$/ ) {
print "\?";
} else {
$file_ext =~ s/^(\w).*/$1/;
print "$file_ext";
}
}
# Work that bastard extra hard if it's a PHP Trick-Link
if ( $dl_req =~ /php\?/ ) {
$dl_req =~ s/\&/\\&/g;
system("wget.exe -q $dl_req");
} else {
# We need wget.exe because the Simple GET can't follow trails
system("wget.exe -q $dl_req");
}
}
$end_time=(time);
$seconds = sprintf("%d", $end_time - $start_time);
print "...DONE in $seconds seconds!\n";
# PHP links are a pain -
print "Looking for PHP Trick-Links...\n";
chdir("$download_dir");
@file_list=`dir /B *php*`;
$file_list=@file_list;
if ( $file_list ) {
print "PHP Trick-Links Found. Attempting To Unravel...\n";
foreach $php_file (@file_list) {
chomp($php_file);
open(PHPFILE, "<$php_file");
@php_file = <PHPFILE>;
if ( $php_file =~ /img.php/ ) {
print "IMG - ";
foreach $php_seg (@php_file) {
if ( $php_seg =~ /SRC=/ ) {
$php_tail = $php_seg;
$php_tail =~ s/.*SRC=\"(.*?)\">.*/$1/;

$php_real_url = $php_root . $php_tail;
} elsif ( $php_seg =~ /HREF=http/ ) {
$php_root = $php_seg;
$php_root =~ s/.*=(http:\/\/[^\/]*\/).*/$1/;
chomp($php_root);
}
$php_real_url = $php_root . $php_tail;
}
} else {
print "REGULAR - ";
foreach $php_seg (@php_file) {
if ( $php_seg =~ /url=http/ ) {
$php_real_url=$php_seg;
$php_real_url =~ s/.*url=(http.*?)&.*/$1/;
}
}
}
close(PHPFILE);
if ( $debug ) {
print "Deleting Bogus Download: $php_file\n";
} else {
print "X=";
}
unlink("$php_file");
if ( $debug ) {
print "Downloading Real URL : $php_real_url";
} else {
$php_file_ext = $php_real_url;
$php_file_ext =~ s/.*(jpg|gif|png).*/$1/;
if ( $php_file_ext !~ /(jpg|gif|png)$/ ) {
print "\?";
} else {
$php_file_ext =~ s/^(\w).*/$1/;
chomp($php_file_ext);
print "$php_file_ext ";
}
}
system("wget.exe -q $php_real_url");
}
print "...Done!\n";
} else {
print "No PHP Trick-Links To Unravel... Good\n";
}
chdir("$download_dir");
# Trying more sophisticated MD5 duplicate checking
print "Checking for exact duplicates MD5-Sum+Size\n";
system("c:\\docume~1\\user\\desktop\\dUpeDL.pl");
chdir("$this_dir");
} elsif ( $multi == 1 ) {
open(MULTIFILE, "<$multi_file");
@multi_file = <MULTIFILE>;
close(MULTIFILE);
print "------------------- MULTIFILE MODE ------------------------\n";
foreach $multifile_entry (@multi_file) {
@dl_list=();
print "-------------------- FILE $counter ------------------------\n";
$url="$multifile_entry";
if ( $url !~ /^http:\/\//i ) {
print "Usage: $0 [URL|-f URL file]\n";
print "URL must be in http:// format - no https yet\n";
exit(1);
}
chomp($url);
print "Parsing URL $url...\n";
$dl = get("$url");
@dl = split(/[><]/, $dl);
print "Feeding $url To The Machine...\n";
foreach $dl_item (@dl) {
next if ( $dl_item !~ /(href|img)/ );
next if ( $dl_item !~ /http:\/\// );
next if ( $dl_item !~ /(jpg|jpeg|gif|png)/ );
$dl_item =~ s/(a href|img src)=('|")//;
$dl_item =~ s/('|").*//;
push(@dl_list, $dl_item);
}
$is_it_worth_it = @dl_list;
if ( $is_it_worth_it == 0 ) {
print "No Image References found!\n";
print "Trying next FILE\n";
}
print "Churning Out URL Requests...\n";
if ( $debug == 0 ) {
print "j=jpg g=gif p=png ?=guess\n";
}
chomp($this_dir=`cd`);
chdir("$download_dir");
$start_time=(time);
foreach $dl_req (@dl_list) {
$tmp_dl="";
$req_filename = $dl_req;
$req_filename =~ s/.*\///;
if ( $debug ) {
print "Grabbing $req_filename\n";
} else {
$file_ext = $req_filename;
$file_ext =~ s/.*(jpg|gif|png).*/$1/;
if ( $file_ext !~ /(jpg|gif|png)$/ ) {
print "\?";
} else {
$file_ext =~ s/^(\w).*/$1/;
print "$file_ext";
}
}
if ( $dl_req =~ /php\?/ ) {
$dl_req =~ s/\&/\\&/g;
system("wget.exe -q $dl_req");
} else {
system("wget.exe -q $dl_req");
}
}
$end_time=(time);
$seconds = sprintf("%d", $end_time - $start_time);
print "...DONE in $seconds seconds!\n";
print "Looking for PHP Trick-Links...\n";
chdir("$download_dir");
@file_list=`dir /B *php*`;
$file_list=@file_list;
if ( $file_list ) {
print "PHP Trick-Links Found. Attempting To Unravel...\n";
foreach $php_file (@file_list) {
chomp($php_file);
open(PHPFILE, "<$php_file");
@php_file = <PHPFILE>;
if ( $php_file =~ /img.php/ ) {
print "IMG - ";
foreach $php_seg (@php_file) {
if ( $php_seg =~ /SRC=/ ) {
$php_tail = $php_seg;
$php_tail =~ s/.*SRC=\"(.*?)\">.*/$1/;

$php_real_url = $php_root . $php_tail;
} elsif ( $php_seg =~ /HREF=http/ ) {
$php_root = $php_seg;
$php_root =~ s/.*=(http:\/\/[^\/]*\/).*/$1/;
chomp($php_root);
}
$php_real_url = $php_root . $php_tail;
}
} else {
print "REGULAR - ";
foreach $php_seg (@php_file) {
if ( $php_seg =~ /url=http/ ) {
$php_real_url=$php_seg;
$php_real_url =~ s/.*url=(http.*?)&.*/$1/;
}
}
}
close(PHPFILE);
if ( $debug ) {
print "Deleting Bogus Download: $php_file\n";
} else {
print "X=";
}
unlink("$php_file");
if ( $debug ) {
print "Downloading Real URL : $php_real_url";
} else {
$php_file_ext = $php_real_url;
$php_file_ext =~ s/.*(jpg|gif|png).*/$1/;
if ( $php_file_ext !~ /(jpg|gif|png)$/ ) {
print "\?";
} else {
$php_file_ext =~ s/^(\w).*/$1/;
chomp($php_file_ext);
print "$php_file_ext ";
}
}
system("wget.exe -v $php_real_url");
}
print "...Done!\n";
} else {
print "No PHP Trick-Links To Unravel... Good\n";
}
chdir("$download_dir");
# Trying more sophisticated MD5 duplicate checking
print "Checking for exact duplicates MD5-Sum+Size\n";
system("c:\\docume~1\\user\\desktop\\dUpeDL.pl");
chdir("$this_dir");
$counter++;
}
}

$|=1;

if ( $multi == 1 ) {
chdir("$this_dir");
rename("$multi_file", "${multi_file}.done");
}
exit(0);


---- dUpeDL - Based almost entirely on the findDupeFiles script by Cameron Hayne (macdev@hayne.net) - modified for win32

#!c:\perl\bin\perl

#
# dUpeDL - Based on the following script - only slightly modified to work with
# dUrl and Windows Perl.
# Below: The original liner notes for full attribution to the original author.
# Note that the attribution was taken verbatim from the Linux/Unix script and may not
# be entirely accurate due to the fact that this script is a win32 port.
#
# findDupeFiles:
# This script attempts to identify which files might be duplicates.
# It searches specified directories for files with a given suffix
# and reports on files that have the same MD5 digest.
# The suffix or suffixes to be searched for are specified by the first
# command-line argument - each suffix separated from the next by a vertical bar.
# The subsequent command-line arguments specify the directories to be searched.
# If no directories are specified on the command-line,
# it searches the current directory.
# Files whose names start with "._" are ignored.
#
# Cameron Hayne (macdev@hayne.net) January 2006 (revised March 2006)
#
#
# Examples of use:
# ----------------
# findDupeFiles '.aif|.aiff' AAA BBB CCC
# would look for duplicates among all the files with ".aif" or ".aiff" suffixes
# under the directories AAA, BBB, and CCC
#
# findDupeFiles '.aif|.aiff'
# would look for duplicates among all the files with ".aif" or ".aiff" suffixes
# under the current directory
#
# findDupeFiles '' AAA BBB CCC
# would look for duplicates among all the files (no matter what suffix)
# under the directories AAA, BBB, and CCC
#
# findDupeFiles
# would look for duplicates among all the files (no matter what suffix)
# under the current directory
# -----------------------------------------------------------------------------

use strict;
use warnings;

use File::Find;
use File::stat;
use Digest::MD5;
use Fcntl;

#REMOVE WHEN WE MERGE - UNNECESSARY
my $debug=0;

my $matchSomeSuffix;
if (defined($ARGV[0])) {
my @suffixes = split(/\|/, $ARGV[0]);
if (scalar(@suffixes) > 0) {
my $matchExpr = join('||', map {"m/\$suffixes[$_]\$/io"} 0..$#suffixes);
$matchSomeSuffix = eval "sub {$matchExpr}";
}
shift @ARGV;
}

my @searchDirs = @ARGV ? @ARGV : ".";
foreach my $dir (@searchDirs) {
die "\"$dir\" is not a directory\n" unless -d "$dir";
}
my %filesByDataLength;

sub calcMd5($) {

my ($filename) = @_;
if (-d $filename) {
return "unsupported";
}
sysopen(FILE, $filename, O_RDONLY) or die "Unable to open file \"$filename\": $!\n";
binmode(FILE);
my $md5 = Digest::MD5->new->addfile(*FILE)->hexdigest;
close(FILE);
return $md5;
}

sub hashByMd5($) {

my ($fileInfoListRef) = @_;
my %filesByMd5;
foreach my $fileInfo (@{$fileInfoListRef}) {
my $dirname = $fileInfo->{dirname};
my $filename = $fileInfo->{filename};
my $md5 = calcMd5("$dirname/$filename");
push(@{$filesByMd5{$md5}}, $fileInfo);
}
return \%filesByMd5;
}

sub checkFile() {

return unless -f $_;
my $filename = $_;
my $dirname = $File::Find::dir;
return if $filename =~ /^\._/;
if (defined($matchSomeSuffix)) {
return unless &$matchSomeSuffix;
}
my $statInfo = stat($filename) or warn "Can't stat file \"$dirname/$filename\": $!\n" and return;
my $size = $statInfo->size;
my $fileInfo = { 'dirname' => $dirname,
'filename' => $filename,
};
push(@{$filesByDataLength{$size}}, $fileInfo);
}

MAIN: {

find(\&checkFile, @searchDirs);
my $numDupes = 0;
my $numDupeBytes = 0;
if ( $debug ) {
print "Dupe Checking\n";
} else {
print "Dupe Checking - ";
}
foreach my $size (sort {$b<=>$a} keys %filesByDataLength) {
my $numSameSize = scalar(@{$filesByDataLength{$size}});
next unless $numSameSize > 1;
if ( $debug ) {
print "size: $size numSameSize: $numSameSize\n";
}
my $filesByMd5Ref = hashByMd5($filesByDataLength{$size});
my %filesByMd5 = %{$filesByMd5Ref};
foreach my $md5 (keys %filesByMd5) {
my @sameMd5List = @{$filesByMd5{$md5}};
my $numSameMd5 = scalar(@sameMd5List);
next unless $numSameMd5 > 1;
my $rsrcMd5;
my $dupe_counter=0;
foreach my $fileInfo (@sameMd5List) {
my $dirname = $fileInfo->{dirname};
my $filename = $fileInfo->{filename};
my $filepath = "$dirname/$filename";
if ( $dupe_counter == 0 ) {
if ( $debug ) {
print "KEEPING $filepath - MD5 $md5\n";
}
$dupe_counter++;
} else {
if ( $debug ) {
print "DELETING $filepath - MD5 $md5\n";
} else {
print "D";
}
unlink("$filepath");
}
}
if ( $debug) {
print "----------\n";
}
$numDupes += ($numSameMd5 - 1);
$numDupeBytes += ($size * ($numSameMd5 - 1));
}
}
print "----------\n";
my $numDupeMegabytes = sprintf("%.1f", $numDupeBytes / (1024 * 1024));
print "Number of duplicate files: $numDupes\n";
print "Estimated Mb Savings: $numDupeMegabytes\n";
}



, Mike