1. Grayscale Image Filter Code?

    Date: 02/11/07 (WebDesign)    Keywords: java, web, seo

    So, I wanted to make a website with a particular effect on all my images, including images with links. All of the images on the page will appear in grayscale through a filter, and then on mouseover, they will fade into the original color scheme of the picture, and then when there is no mouseover, it will return to normal. In an ideal world, the mouseover will not change the entire image back to the original coloring, but only just a portion, like a spotlight. I remember seeing this done before on a website I can no longer find. It seemed to also glow with silver in the color change.

    The codes I have found online over the last few hours are similar, but not quite what I want (most have been javascript with fade elements or opacity that work on the whole image). I was wondering if anyone knew of a code that was like the one I had in mind or would be willing to help me make it from existing codes that are similar?

    Source: http://community.livejournal.com/webdesign/1220449.html

  2. how to hide desktop icons

    Date: 02/12/07 (Microsoft Windows)    Keywords: web, seo

    I just updated to Windows XP, and I need some help. In 98SE, it is possible to hide the desktop icons by switching over to web active view. Is there a way to hide all desktop icons in XP? Thanks for any help. :)

    EDIT: Argh, sorry to bother you all. I figured it out. For future reference to anyone trying to attempt the icon-hiding maneuver: right-click on the desktop, mouseover Arrange Icons By, and left-click Show Desktop Icons.

    Source: http://community.livejournal.com/ms_windows/75637.html

  3. What is SEO?

    Date: 02/19/07 (Java Web)    Keywords: web, seo

    Search engine optimization (SEO) is a subset of search engine marketing, and deals with improving the number and/or quality of visitors to a web site from “natural” (aka “organic” or “algorithmic” search engine) listings. In effect, SEO is marketing by appealing to machine algorithms to increase search engine relevance and ultimately web traffic. This is [...]

    Source: http://blog.taragana.com/index.php/archive/what-is-seo/

  4. Как я, умея немножко программировать и дизайнить, зарабатываю до $2500 в месяц работая только дома

    Date: 03/10/07 (See my site)    Keywords: cms, php, mysql, css, html, xml, asp, sql, java, jsp, postgresql, security, web, seo

    Приветствую Вас!

    Я не супер-гуру в программировании или дизайне. Я обычный человек знающий немножко PHP, немножко Java, немножко CSS, немножко дизайн. Пытаюсь по-чуть разобраться с разными CMS. К чему я это пишу?  Всё просто, этими знаниями я зарабатываю до $2500 в месяц работая только дома по несколько часов в день. Ну хорошо, я вру. Этого Вы ждали?:) Я работаю не по 2 часа, а по 3-5 часов в день. Но это всё равно не 8-12 часов, как я работал раньше на дядю. И получал я за это тогда около 500 долларов.

    Как добиться большей зарплаты?
    Наверняка большая половина здесь присутствующих работает на дядю за зарплату. И из этих людей найдется всего несколько человек которых размер этой зарплаты устраивает. Да и эти несколько человек не отказались бы получать больше. Впрочем, любой человек хочет комфортнее обустроить свой быт, лучше обеспечить семью, купить себе наконец мощный ноутбук, хорошо покушать. сделать евроремонт в квартире, или купить наконец эту самую квартиру, отдохнуть на хороших курортах и т.д. Любой человек стремиться заработать больше. Именно в этом я и хочу Вам помочь. Знаю Ваш вопрос: Зачем это лично мне? Опять же - всё просто.  Там где зарабатываю я работы хватит на всех и надолго. Мне нет смысла скрывать эту тему. Сам я всё равно не справлюсь со всеми заказами. Так как заказчиков и проектов для работы очень много. Грубо говоря - хватит на всех :)


    Ну и что с этим делать?
    Есть такой сайт - scriptlance. Точне сайтов такого свойства есть много. Но у этого есть несколько важных плюсов. Перечислю их:

    1. этот сайт работает с гражданами бывшего СССР (с русскими, с украинцами, с бесорусами, с молдаванами, с таджиками и т.д.)
    2. этот сайт не обманывает - т.е. когда пришло время снять оттуда заработанные деньги Вы их просто снимаете и точка. Без заморочек! На собственном опыте и опыте многих ребят из России, Украины и т.д.
    3. этот сайт может вывести Вам деньги на e-gold а дальше в вэбмани, может вывести на Ваш банковский счет (этот вариант наиболее удобен)
    4. этот сайт предоставляет Вам очень большое, огромное колличество проектов ежедневно. Т.е. ежедневно там появляется много новых проектов и Вам есть из чего выбирать.
    Ну вот, это основные свойства, которых нет у других сайтов этого рода.

    Как начать работать?
    Ничего сложного. Даже наоборот - всё предельно просто. Идёте по этой ссылке - регистрируетесь. Дальше:
    1. Жмите на кнопку "Programmers" Programmers в заголовке главной странице, затем, в появившемся меню прямо под кнопкой, нажмите кнопку Sign In "Sign up"
    2. После ввода е-майл адреса, вам приходит письмо со ссылкой, которую надо посетить для подтверждения регистрации.
    3. После этого заполните анкету.
    4. После этого они зачислят Вам на счет бонус - $1. Понимаю, что мало, но всё равно приятно. Иэ то только начало денег.

    Что сколько стоит?
    Расскажу немного про цены. Рассмотрим на конкретных примерах из моей практики там (в скобках указано время потраченное на каждый проект):
    1. Уставнавливал вордпресс на хостинг заказчика (20 минут) - $50 (у него самого не было времени на это)
    2. Делал несложный дизайн для 10-страничного сайта (3 часа) - $175
    3. Перевел с русского на английский небольших три статьи (20 минут) - $40
    4. Ставил модули для Joomla на сайт заказчика (30 минут) - $90
    5. Писал небольшой скрипт на PHP для учета продаж с сайта (1 час 40 мин) - $250
    6. Сделал логотип (15 мин) - $30
    7. Делали средний сайт с напарником (один день) - $1750
    8. Писал три несложных модуля под вордпресс (5 часов) - $720
    Итого каждый месяц набегает $2000-2500. Я считаю, что это хорошие деньги за такую работу. Я работаю там всего 5 месяцев. В дальнейшем буду собирать свою комманду для этого дела и брать на себя только общение с заказчиками, а саму работу будет делать комманда. Хотя можно этого не делать и просто не напрягаясь иметь $2000 в месяц.

    На чем зарабатывать?

    Большее количество заказов приходится на веб программирование (PHP, Perl, CGI, Flash и т.д.) и веб дизайн (логотипы, веб темплейты, Flash заставки и рекламные ролики).

    Вот полный перечень чем можно заняться: Ajax, ASP, C/C++, CMS, Cold Fusion, Delphi, .NET, Flash, Java, Javascript, JSP, Joomla, Perl/CGI, PHP, Python, Visual Basic, Wordpress, XHTML, XML, LDAP, MySQL, MS Access, MS SQL, mSQL, Oracle, PostgreSQL, SQL, CSS, Data Entry, Graphic Design, Handheld, Links, Marketing, Multimedia, Script Installation, SEO, Security, System Admin, Translation, Website Design, Writing.

    Как получить заказ?
     Вы называетесь "Programmer" (даже если вы дизайнер), заказчик же именуется "Webmaster".
    Итак, Webmaster выставляет желаемый проект с описанием на аукцион. Также, в описании проекта вы можете увидеть бюджет проекта и период действия аукциона на данный проект. Пока проект открыт, вы (Programmer) можете делать ставки - за сколько и в какой срок вы сделаете проект.

    Вот несколько простых, но эффективных советов как выиграть аукцион:
    1. Внимательно прочитайте описание проекта (задание), оцените сложность. Если вы не можете оценить проект достаточно точно, задайте уточняющие вопросы заказчику через Post Message Board (PMB)
    2. Посмотрите портфолио заказчика - предыдущие проекты и отзывы о нём. Также, иногда очень полезно просмотреть профайлы и портфолио своих конкурентов.
    3. Старайтесь писать по-английски как можно грамотнее.
    4. Наличие фотографии в вашем профайле также существенно увеличивает ваши шансы заработать. Психологически, заказчику легче работать с реальным человеком.
    5. Если у вас уже есть какие-нибудь завершённые проекты, рекомендую открыть хостинг, или даже бесплатный хостинг для демонстрации своего портфолио клиенту.

    Как получить деньги?

    Во-первых, деньги нужно получить от заказчика. Если вы не уверены в честности заказчика, вы можете попросить его положить деньги на escrow account для вас до начала проекта. Дело в том, что заказчик не может забрать эти деньги обратно, но при этом они ещё не у вас. Когда проект закончен, заказчик переводит деньги с escrow на ваш счёт. Сайт рекомендует этот способ как более надёжный.

    Также, не запрещается договариваться о переводе денег любым другим способом удобным обоим сторонам, но, как правило, заказчикам удобнее внутренняя система. Снять деньги оттуда можно на E-Gold, чеком, банковским переводом или по системе PayPal.

    Я рекомендую банковский перевод, но при маленьких суммах, выгоднее будет E-Gold. E-Gold можно легко перевести в Webmoney, а Webmoney уже можно перевести на обычный счёт. Если же сумма будет более $500, проще и дешевле будет сделать перевод денег на свой валютный счет в банке в USD.


    P.S. Кто будет регистрироваться по этим ссылкам может полностью рассчитывать на мою поддержку. В чем она будет выражаться:
    1. отвечу на все вопросы
    2. помогу зарегистрироваться, если есть проблемы
    3. буду подкидывать Вам постоянно новых заказчиков, так как у меня их уже много и я сам не справлясь со всеми поступающими заказами
    4. помогу определиться как лучше и куда обратить виртуальные деньги в наличность
    5. да и всячески буду Вам помогать


    Вот и всё.
    Регистрируемся, господа!

    Source: http://community.livejournal.com/see_my_site/103737.html

  5. Как я, умея немножко программировать и дизайнить, зарабатываю до $2500 в месяц работая только дома

    Date: 03/10/07 (MySQL Communtiy)    Keywords: cms, php, mysql, css, html, xml, asp, sql, java, jsp, postgresql, security, web, seo

    Приветствую Вас!

    Я не супер-гуру в программировании или дизайне. Я обычный человек знающий немножко PHP, немножко Java, немножко CSS, немножко дизайн. Пытаюсь по-чуть разобраться с разными CMS. К чему я это пишу?  Всё просто, этими знаниями я зарабатываю до $2500 в месяц работая только дома по несколько часов в день. Ну хорошо, я вру. Этого Вы ждали?:) Я работаю не по 2 часа, а по 3-5 часов в день. Но это всё равно не 8-12 часов, как я работал раньше на дядю. И получал я за это тогда около 500 долларов.

    Как добиться большей зарплаты?
    Наверняка большая половина здесь присутствующих работает на дядю за зарплату. И из этих людей найдется всего несколько человек которых размер этой зарплаты устраивает. Да и эти несколько человек не отказались бы получать больше. Впрочем, любой человек хочет комфортнее обустроить свой быт, лучше обеспечить семью, купить себе наконец мощный ноутбук, хорошо покушать. сделать евроремонт в квартире, или купить наконец эту самую квартиру, отдохнуть на хороших курортах и т.д. Любой человек стремиться заработать больше. Именно в этом я и хочу Вам помочь. Знаю Ваш вопрос: Зачем это лично мне? Опять же - всё просто.  Там где зарабатываю я работы хватит на всех и надолго. Мне нет смысла скрывать эту тему. Сам я всё равно не справлюсь со всеми заказами. Так как заказчиков и проектов для работы очень много. Грубо говоря - хватит на всех :)


    Ну и что с этим делать?
    Есть такой сайт - scriptlance. Точне сайтов такого свойства есть много. Но у этого есть несколько важных плюсов. Перечислю их:

    1. этот сайт работает с гражданами бывшего СССР (с русскими, с украинцами, с бесорусами, с молдаванами, с таджиками и т.д.)
    2. этот сайт не обманывает - т.е. когда пришло время снять оттуда заработанные деньги Вы их просто снимаете и точка. Без заморочек! На собственном опыте и опыте многих ребят из России, Украины и т.д.
    3. этот сайт может вывести Вам деньги на e-gold а дальше в вэбмани, может вывести на Ваш банковский счет (этот вариант наиболее удобен)
    4. этот сайт предоставляет Вам очень большое, огромное колличество проектов ежедневно. Т.е. ежедневно там появляется много новых проектов и Вам есть из чего выбирать.
    Ну вот, это основные свойства, которых нет у других сайтов этого рода.

    Как начать работать?
    Ничего сложного. Даже наоборот - всё предельно просто. Идёте по этой ссылке - регистрируетесь. Дальше:
    1. Жмите на кнопку "Programmers" Programmers в заголовке главной странице, затем, в появившемся меню прямо под кнопкой, нажмите кнопку Sign In "Sign up"
    2. После ввода е-майл адреса, вам приходит письмо со ссылкой, которую надо посетить для подтверждения регистрации.
    3. После этого заполните анкету.
    4. После этого они зачислят Вам на счет бонус - $1. Понимаю, что мало, но всё равно приятно. Иэ то только начало денег.

    Что сколько стоит?
    Расскажу немного про цены. Рассмотрим на конкретных примерах из моей практики там (в скобках указано время потраченное на каждый проект):
    1. Уставнавливал вордпресс на хостинг заказчика (20 минут) - $50 (у него самого не было времени на это)
    2. Делал несложный дизайн для 10-страничного сайта (3 часа) - $175
    3. Перевел с русского на английский небольших три статьи (20 минут) - $40
    4. Ставил модули для Joomla на сайт заказчика (30 минут) - $90
    5. Писал небольшой скрипт на PHP для учета продаж с сайта (1 час 40 мин) - $250
    6. Сделал логотип (15 мин) - $30
    7. Делали средний сайт с напарником (один день) - $1750
    8. Писал три несложных модуля под вордпресс (5 часов) - $720
    Итого каждый месяц набегает $2000-2500. Я считаю, что это хорошие деньги за такую работу. Я работаю там всего 5 месяцев. В дальнейшем буду собирать свою комманду для этого дела и брать на себя только общение с заказчиками, а саму работу будет делать комманда. Хотя можно этого не делать и просто не напрягаясь иметь $2000 в месяц.

    На чем зарабатывать?

    Большее количество заказов приходится на веб программирование (PHP, Perl, CGI, Flash и т.д.) и веб дизайн (логотипы, веб темплейты, Flash заставки и рекламные ролики).

    Вот полный перечень чем можно заняться: Ajax, ASP, C/C++, CMS, Cold Fusion, Delphi, .NET, Flash, Java, Javascript, JSP, Joomla, Perl/CGI, PHP, Python, Visual Basic, Wordpress, XHTML, XML, LDAP, MySQL, MS Access, MS SQL, mSQL, Oracle, PostgreSQL, SQL, CSS, Data Entry, Graphic Design, Handheld, Links, Marketing, Multimedia, Script Installation, SEO, Security, System Admin, Translation, Website Design, Writing.

    Как получить заказ?
     Вы называетесь "Programmer" (даже если вы дизайнер), заказчик же именуется "Webmaster".
    Итак, Webmaster выставляет желаемый проект с описанием на аукцион. Также, в описании проекта вы можете увидеть бюджет проекта и период действия аукциона на данный проект. Пока проект открыт, вы (Programmer) можете делать ставки - за сколько и в какой срок вы сделаете проект.

    Вот несколько простых, но эффективных советов как выиграть аукцион:
    1. Внимательно прочитайте описание проекта (задание), оцените сложность. Если вы не можете оценить проект достаточно точно, задайте уточняющие вопросы заказчику через Post Message Board (PMB)
    2. Посмотрите портфолио заказчика - предыдущие проекты и отзывы о нём. Также, иногда очень полезно просмотреть профайлы и портфолио своих конкурентов.
    3. Старайтесь писать по-английски как можно грамотнее.
    4. Наличие фотографии в вашем профайле также существенно увеличивает ваши шансы заработать. Психологически, заказчику легче работать с реальным человеком.
    5. Если у вас уже есть какие-нибудь завершённые проекты, рекомендую открыть хостинг, или даже бесплатный хостинг для демонстрации своего портфолио клиенту.

    Как получить деньги?

    Во-первых, деньги нужно получить от заказчика. Если вы не уверены в честности заказчика, вы можете попросить его положить деньги на escrow account для вас до начала проекта. Дело в том, что заказчик не может забрать эти деньги обратно, но при этом они ещё не у вас. Когда проект закончен, заказчик переводит деньги с escrow на ваш счёт. Сайт рекомендует этот способ как более надёжный.

    Также, не запрещается договариваться о переводе денег любым другим способом удобным обоим сторонам, но, как правило, заказчикам удобнее внутренняя система. Снять деньги оттуда можно на E-Gold, чеком, банковским переводом или по системе PayPal.

    Я рекомендую банковский перевод, но при маленьких суммах, выгоднее будет E-Gold. E-Gold можно легко перевести в Webmoney, а Webmoney уже можно перевести на обычный счёт. Если же сумма будет более $500, проще и дешевле будет сделать перевод денег на свой валютный счет в банке в USD.


    P.S. Кто будет регистрироваться по этим ссылкам может полностью рассчитывать на мою поддержку. В чем она будет выражаться:
    1. отвечу на все вопросы
    2. помогу зарегистрироваться, если есть проблемы
    3. буду подкидывать Вам постоянно новых заказчиков, так как у меня их уже много и я сам не справлясь со всеми поступающими заказами
    4. помогу определиться как лучше и куда обратить виртуальные деньги в наличность
    5. да и всячески буду Вам помогать


    Вот и всё.
    Регистрируемся, господа!

    Source: http://community.livejournal.com/mysql/110852.html

  6. CSS Menu Issue

    Date: 05/24/07 (Web Development)    Keywords: css, seo

    I'm trying to debug this CSS menu in IE 7 (it seems fine in Firefox and IE 6). The problem is that when you move your mouse down the list that flies out on mouseover, the list of items disappears when you move down past the main list item. Has anyone had any experience with this, or, even better, have a solution?

    Thanks in advance.

    http://spacebetween.com/cssmenus/

    Source: http://community.livejournal.com/webdev/410150.html

  7. CSS Menu Issue

    Date: 05/24/07 (WebDesign)    Keywords: css, seo

    I'm trying to debug this CSS menu in IE 7 (it seems fine in Firefox and IE 6). The problem is that when you move your mouse down the list that flies out on mouseover, the list of items disappears when you move down past the main list item. Has anyone had any experience with this, or, even better, have a solution?

    Thanks in advance.

    http://spacebetween.com/cssmenus/

    Source: http://community.livejournal.com/webdesign/1259277.html

  8. JavaScript Pong

    Date: 07/13/07 (Javascript Community)    Keywords: programming, browser, html, asp, java, web, seo

    I wrote a JavaScript/XHTML based Pong game- mostly a proof of concept. I'm going to use this as the base of a browser-based Mario Brothers clone (not SUPER Mario- I'm not going to make this damn thing scroll if I can help it). That's a long-run project though. For now, I've got some basic plumbing done. It's got some bugs, etc- but I figured that since I had a (mostly) working library, I'd post my work so far, and share out the code.

    Take the game for a spin, and grab the code.

    Masturbatory Pong - My Design


    The design of my XHTML/JavaScript game can be broken down into several areas. What we'll do is examine each area in turn, discuss some of the whys-and-wherefores, and get a feel for how you can recycle that code later.

    General Design Goals


    The biggest design goal was reusability. To make reusable and flexible code, the biggest rule is weak-coupling. Nothing should have any dependencies on anything else. To meet that goal, I aggresively applied OOP principles and Aspect Oriented Programming. Some of this breaks down on the game itself, simply because that section contained application specific code, and I didn't care that much at that point. It's still weakly coupled, but not cleanly written.

    Program Components

    Core


    The DOM has all sorts of annoyances- mostly created by browser incompatabilities. Every developer, in every language, starts to develop a library of utility functions that they use again and again. In my case, the utility/library functions are contained in a file entitled DOMhelp.js.

    Originally, this file came from a book on JavaScript(Beginning JavaScript for Practical Web Development, Including AJAX). My incarnation bears little resemblence, save for event-management. It provided good utilities for handling events in a browser-independent fashion.

    The DOMhelp file contains a DOMhelp object literal. This is where the DOM event management code goes, as well as my custom functions. The important ones, for this application, are the "getControlLocation" and "translateClientToElementCoords". These are used to translate coordinates from the page area on screen to the element that will contain the game.

    Also in that file is the EventSource aspect. These sorts of functions are my approach to AOP in JavaScript. It takes a class as its parameter and appends a bunch of functions to that class prototype- in this case, it appends functions for managing and firing events. At some point, for performance, I may modify this to have the event-firing event code run in a seperate thread. As it is, it works fine so long as there aren't many listeners. It's a pretty standard implementation.

    This is my growing library of supporting code that I use in nearly every application.

    Animator


    The animator components are split across three major files, each specific to one function. The animator API is built around Sprites that can do their own frame management and collision detection, etc. Everything else is built to support those functions.

    Sprite.js

    The Sprite - General

    This was my starting point for designing this library. The Sprite class should do as little as possible- it should focus on rendering and providing the graphical aspects of the application. Any other functionality it requires should be appended via Aspects.

    The constructor requires a great deal of information, and all the parameters are documented. The only one that's really critical is windowFrameId- this tells the Sprite where to render its details.

    The Sprite - Frames

    For visual behaviors, the Sprite class tracks frames- each frame is stored in memory as an IMG element (for pre-loading). The Sprite tracks the frames in a set of arrays- each array represents a "frame-set"- a group of related frames that should display in a sequence. If you think of Super Mario, one series of frames plays when he walks left or right, jumps, or shoots a fireball, etc. It's all one Sprite, but different animations play based on the current application state.

    Frame-sets are defined when frames are added- the "addFrame" method takes a frame-set as a parameter. If the parameter isn't set, the Sprite puts frames into the default frame-set. In the case of the MPong application, we only use one frame-set for every Sprite. It would, however, be trivial to add more frames and frame sets to make a more graphically exciting game. I will probably updated it with better graphics and add logic to the collision detection system to switch between frame-sets to provide visual feedback.

    The Sprite gets quite interesting in the rendering process. Before we can really look at the rendering process, it's important to discuss the three aspects also defined in this file and their role in the process.
    The Sprite - Aspects

    The core Sprite code assumes that the Sprite has a location, a size, etc. but isn't responsible for maintaining those values. These values are appended to the Sprite class via Aspects. The Changeable aspect is the base here- it adds a boolean to track if the Sprite is "dirty"- only render dirty Sprites (for performance). A sprite HasLocation, HasSize- these are the keys for rendering. These allow us to track the position and size of a Sprite- which can then be rendered using floating DIV elements.

    It is worth noting the CollisionDetection Aspect, even though it has nothing to do with rendering. Based on the size and position of a Sprite, it has a collection of methods to check for collisions. Right now, it only supports rectangle-boundary collisions, but this could be easily expanded- without altering the Sprite class. This flexibility is why I chose to use Aspects.
    The Sprite - Rendering

    The "render" method is the entry point for the rendering process. It only does something if the Sprite has been marked as "dirty" (changed==true). If you glance through the code, you'll notice that changing frame-sets, advancing between frames, changing positions or sizes will all dirty a Sprite.

    Sprite rendering actually focuses on the "getContainer" method- this one is responsible for the real work of interacting with the DOM. This is the lowest-level method in the Sprite. It operates as a Factory Method wrapping a Singleton design pattern. It only creates the "container" once- a DIV element appended to the "windowFrameId" element. The "renderFrame" method is strongly-coupled to the structure of this DIV and its children, but that's trivial- the "getContainer" method just needs to always ensure that the first child of the container is the IMG responsible for displaying the current frame.

    Caveat: This does not set a z-order on the element. This is probably something that should be added (especially because z-order used in conjunction with a scaling logic could create "3D" UIs).

    Once we've got the container, "render" calls out to its Aspects to handle the job of positioning and sizing the DIV- again, we want the Sprite to be responsible for looks and looks alone. We'll rely on appended Aspects for the positioning/sizing logic. Once that's done, "renderFrame" is invoked- it simply updates the SRC of the IMG holding the frame. I'm fairly certain this is more effecient than modifying the DOM tree, but I haven't benchmarked it out.

    motion.js

    Movement - General

    I've said this a lot, but one more time- the Sprite should only be responsible for rendering itself. All other logic should reside elsewhere. For logic that the Sprite directly depends on- like size and position- it does reside in the class via Aspects. Movement is a complex area, and it should be even more weakly coupled to the Sprite.

    For this reason, I used a Provider model. The general formula is that a Provider tracks a list of sprites. It contains some algorithm for repositioning those sprites. The skeleton of this code is implemented in the GenericMotionProvider- "move" being the main method for the algorithm. What is important to note is that the GMP does not contain any logic for actually moving. It invokes an abstract method, "provideMotion". This should be implemented in child classes.

    There are two child classes in the API at this time- certainly something I intend to expand. One is a LinearScrollMotionProvider, responsible for any straight-line one-direction motion. The other is a MouseMotionProvider, which allows mouse-following motion. This last would be trivial to modify into a drag-motion provider.

    The biggest disadvantage to the design as it stands now is that the timer-driven providers (LSMP) have to be registered with a Clock, but event-driven providers (MMP) don't. This means that the client-code has to know which is which- I should probably modify this so that timer-driven providers take a clock in their constructor and register themselves, and not have the client code responsible. Fortunately, there's nothing explicitly wrong with registering the MMP with the Clock- it would just cause one more positioning cycle than is required. With something like the MMP, which is tracking a large number of events, one more cycle probably won't hurt performance much.
    Motion - LinearScrollMotionProvider

    The LSMP focuses on three major numbers- vert, horiz and increment. Wrap explains what to do when you reach the boundaries of the cavas area- if wrap is true, wrap around to the other side. Otherwise, stop.

    Vert, horiz and increment all work together to represent a motion vector. The math is simplified, but that's the essential purpose. Vert represents the extent of the of the vector in the vertical axis, horiz in the horizontal. Increment is the "scaling factor" on the vector. This does have one disadvantage- changing the vert or horiz values can change the speed. In MPong, that's fine- actually desired. It may be wiser, however, to implement a general-case version that uses vert/horiz as a ratio and increment controls the speed directly.

    Another flaw in LSMP is that it always calls setPosition, and hence always marks the Sprite as dirty. Again, in MPong, this isn't an issue- the ball always moves, so is always dirty and must be rerendered. In other applications, this could have a significant negative performance impact.
    Motion - MouseMotionProvider

    The MMP also tracks a vert/horiz parameter- these are multipliers to control the rate of motion versus the mouse. In most applications, these should be either zero or one- in MPong, the vert component is always 0, horiz is always 1. Other values can be used- for example, setting horiz to 2 means that for each pixel the mouse moves, the sprite would move 2.

    We may not want the sprite directly attached to the mouse- hence the offset parameter. Offset just specifies an x/y offset that can be any value. In MPong this is used as a "fudge" factor to make sure the Sprite lines up better with the mouse.

    This is one of the buggier segments in the Animator API. It's difficult to get the movements tracked properly- if the mouse moves too fast, the Browser might drop some MouseMove events- a critical problem if the mouse is moving out of the bounds of the game area. Hence fudge factors like "offset". Before the MMP starts providing, "registerMouse" must be called- in MPong, I call it relative to the BODY of the document- so all motions must be tracked that way. I attempted to tie it to MouseOut events as well- which would have allowed me to track it within the game area instead, but that just didn't work. Since MMP relies on the client positions and translates them to the containing element, this isn't a problem.

    Really though, MMP needs to be re-written before production use. It works well enough, but I wouldn't trust it not to break down if someone starts to do anything interesting with it.

    clock.js


    The Clock is very simple. It simply uses "setInterval" to schedule repeated callbacks to its own "fireEvent" method (imported via the EventSource Aspect). This is a nice event-driven clock, which makes it easy to tie the game functionality into it. There's not much there.

    Game


    MPong is a test-case for the Animator API. While a very simple game, it provides enough complexity to give a reasonable test of the Animator API. A few moments of play will reveal that it's not much as games go- dull, uninteresting without an uneven challenge level (the ball sometimes crawls, or builds up to ridiculous speeds). Despite this, it does a good job of demonstrating a realistic use of the Animator API, as well as some applicable design patterns.

    Paddles


    Paddles are merely raw Sprites. They are tied to an instance of the MouseMotionProvider class, and hence follow the mouse. There's nothing really exciting here.

    Ball


    The Ball is a bit more interesting. There's a few layers here- the Ball exhibits some complex behavior. It needs to bounce, detect when it's fallen out of bounds into the scoring area, etc. The bottom layer is the Sprite used to represent the ball. A few areas of the game directly interact with the Sprite- the Pong class is directly responsible for triggering its rendering process, for example. Instead of weighing down the implementation of the Ball with inheritance, I simply tracked two objects- the ballSprite and an instance of the Ball class. There's no strong relationship between these classes at all- the Ball simply wraps around any Sprite and provides Ball behaviors. It does not alter the prototype or the instance- it just operates on the Sprite's properties. In this, it's similar to the Decorator pattern, but without the strong ownership implied by the pattern.

    The Ball class owns a reference to the ballSprite, as well as its own private LSMP instance. Remember, LSMP works for any linear motion that can be represented as a constant vector. The Ball delegates all motion tracking to this provider and contains all the bounds-checking logic in itself. After letting the LSMP tell the Sprite where to go, the Ball checks that position- if the Sprite is impacting on one of the boundary walls (Left/Right), it reverses the sign on the LSMP's horiz vector component- "reflecting" the ball. If the ballSprite impacts on a paddle, it does the same to the vert component- again, "reflecting" the ball. Finally, if the ball hits a scoring area, it fires an event to announce this. It's the responsibility of the game to handle reseting the board. At the moment, I'm double checking the bounds, since it checks the bounds for every paddle. Again, for this application, that's not a problem, but with a large number of potential collisions, that could become very inefficient.

    Pong


    With all this functionality pushed into classes, all the Pong class really needs to do is make sure it's providing the key plumbing. It tracks a Clock, which tells it to render. It calls out to the Sprites, the Ball, etc. for all the logic. It simply needs to track the "globals" like the current score, register events, and so on.

    Problems


    In addition to a few of the problems I've discussed above, there's a few more serious flaws. It appears that on the first viewing of the page, the bottom paddle falls outside of the gaming area. Strangely, a refresh fixes that. Why? Why would a refresh even do anything? I'll have to track down exactly what's wrong there.

    There's also something wrong in the Ball motion logic- specifically something having to do with bouncing off the right wall- sometimes, and for no reason that I can determine (yet), it just sticks to the right wall and stops. I think it happens when the ball is moving too fast on the horizontal axis.

    The final issue isn't my fault, I swear. I left an early version of the page running in Firefox overnight. After 16 hours- it leaked memory like sieve. My system (Windows 2000- yes, I know) came down hard. There's really nothing I can do about that, and I can't imagine anyone playing this for 16 hours- but it's worth noting that it happens.

    Source: http://community.livejournal.com/javascript/135865.html

  9. WordPress 2.3 Beta 1 Released…

    Date: 08/30/07 (Java Web)    Keywords: java, seo

    WordPress team has released version 2.3 after 3 months of “feverish” work. It is obviously targeted for the adventurous and savvy to test and provide feedback for the final release. Some of the features of 2.3 include plugin and core update notification, built-in tags support, faster javascript, and SEO-friendly URL redirection. You can download the beta here. We [...]

    Source: http://blog.taragana.com/index.php/archive/wordpress-23-beta-1-released/

  10. Firefox input delay.

    Date: 09/07/07 (Mozilla)    Keywords: web, seo

    In Firefox, every action I take has a delay of 1-4 seconds. As I type this entry, the letters appear a few seconds after I hit the keys. This becomes a major hassle when filling out large forms and I can't tell where I'm at - if I'm tabbing through, I may have mistabbed or the keystrokes didn't register and I end up, say, putting my address in as my SSN. It's also just plain annoyong, as I mouseover a link and it doesn't indicate that I've done so until after I click it...then the click doesn't register until a few seconds after this. This is especially annoying when I'm doing QA testing on web applications. This behaviour also extends to the URL bar, search functions and menu options.

    I do not experience this delay with IE or any other program.
    I've cleared the Cache and restarted both FF and my computer many times over since this problem started.

    Any idea what may be going on and how I may fix it?
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

    Source: http://community.livejournal.com/mozilla/399724.html

  11. Avoiding "in-text" link advertisements

    Date: 09/14/07 (Opera Browser)    Keywords: java, seo

    I don't think this has been brought up in this particular little Opera community yet (after a cursory search), but it wouldn't hurt for me to reiterate the tip.

    Most of you are familiar with those in-text link advertisements where words and phrases in an article or blog entry are underlined; when you mouseover these links, a javascript window pops up to flash an advertisement at you.

    I find it far more annoying than banner ads. You can easily disable this behavior in Opera (no addons necessary!). The main "service" of these ads is IntelliTXT.

    In Opera 9:

    Preferences >
    Advanced >
    Content > [Blocked content...] >
    Click the [Add...] button on the new dialog, then enter

    http://*.intellitxt.com/*
    in the bottom pane.
    Hit Enter, then [Close] this window, and [Okay] the main Preferences dialog.

    Voila. No more of these content link ads from this service on any page that you visit.

    Source: http://community.livejournal.com/opera_browser/67141.html

  12. combining two javacsript events

    Date: 12/20/07 (WebDesign)    Keywords: css, java, seo

    Hi all

    I've got a mouseover script and I have a dropdown menu script.

    I want to combine them so when you get the dropdown the mouseover image changes and when you move to a different menu image the one you were on changes back.

    Right now, I have



    which does display the dropdown menu AND changes the image. The problem is when you move to a different image on the main menu, the 1st image does not revert back. It just stays changed.

    Anyone have insight on what I can do?

    Thanks,
    Chris

    Source: http://community.livejournal.com/webdesign/1344754.html

  13. SEO underscores vs hyphens.

    Date: 01/26/08 (Web Development)    Keywords: web, seo, yahoo, google

    I am working on a website, and trying to define our URL structure for the best SEO.

    Let's say we have a list of 100 products etc... We want our urls to look something like.

    http://www.foo.bar/products/productName

    Some of the product names have hyphens in them others don't

    "Bowl-o-soup with Rice"
    "Big Screen TV"
    "Xbox 360"
    "Hoola-Hoop"

    Now I know that until last year Google didn't parse underscores for key words, but that has changed, but I have been unable to find out if Yahoo, MSN and ASK parse underscores for key words. Any help into this area would be great. Links specifically that I could show the partners on this project so that we can make our decision.

    Thansk.

    Source: http://community.livejournal.com/webdev/462137.html

  14. Cool SEO Redirection Feature in WordPress 2.3.x

    Date: 02/06/08 (Java Web)    Keywords: seo

    I accidentally discovered a super-cool re-direction feature embedded in WordPress 2.3.x. Any blog may have multiple url pointing to the same blog. For example blog.taragana.com may also be accessed as www.blog.taragana.com. The proper practice, keeping SEO in mind, is to redirect all such URL to the canonical URL of the site. Now there is a [...]

    Source: http://blog.taragana.com/index.php/archive/cool-seo-redirection-feature-in-wordpress-23x/

  15. Dynamically adding events

    Date: 02/28/08 (Javascript Community)    Keywords: java, seo

    I'm having trouble dynamically adding events to elements in Internet Explorer 6.0.

    The following works like a charm in Firefox, but does absolutely nothing in IE. And by nothing, I mean nuh-thing. Not even a javascript warning:

    document.getElementsByClassName = function(cl) {
        var retnode = [];
        var myclass = new RegExp('\\b'+cl+'\\b');
        var elem = this.getElementsByTagName('*');
        for (var i = 0; i < elem.length; i++) {
            var classes = elem[i].className;
            if (myclass.test(classes)) retnode.push(elem[i]);
        }
        return retnode;
    }
    
    function show_date() {
        this.childNodes[1].style.display = "inline";
    }
    
    function hide_date() {
        this.childNodes[1].style.display = "none";
    }
    
    function add_function() {
        var grid = document.getElementsByClassName('date');
      
        for (var i = 0; i < grid.length; i++) {
            if (window.addEventListener) {
                grid[i].addEventListener("mouseover",show_date, false);
                grid[i].addEventListener("mouseout",hide_date, false);
            } else {
                grid[i].attachEvent("mouseover",show_date, false);
                grid[i].attachEvent("mouseout",hide_date, false);
            }
        }
    }

    Any thoughts?

    Source: http://community.livejournal.com/javascript/150958.html

  16. SEO related stuff

    Date: 03/14/08 (WebDesign)    Keywords: seo

    Anyone know anything about this service? http://www.text-link-ads.com/
    Is it worthwhile and reputable?

    Also, anyone know any good ways to build SEO? Linking is turning out to be one of the harder things to do, especially since everyone wants money for your name to be with them, and not everyone has money to give out to get a good name. It's so hard...

    Thank you.

    Source: http://community.livejournal.com/webdesign/1368531.html

  17. 'Choose Opera' revamped

    Date: 10/07/08 (Opera Browser)    Keywords: seo

    Choose Opera is Opera's community marketing portal, and the place to be if you want to help spread the word about Opera products. On Choose Opera you can find all our Opera videos in one place, share ideas on how to spread the word, join our Campus Crew program and check out upcoming meet ups, among other things.

    Check it out at www.chooseopera.com, become a member today and take action!

    Source: http://community.livejournal.com/opera_browser/73842.html

  18. Opera Desktop 9.6 betra released today

    Date: 09/10/08 (Opera Browser)    Keywords: rss, seo

    While you're having your say about what you'd like from Opera 10, you can enjoy the new beta for desktop: Opera 9.6. Check it out at http://www.opera.com/products/desktop/next/.

    New and improved features
    • Opera Link: Custom search engines and typed history now joins what you can synchronise with Opera Link.
    • Feed Preview: Now you can preview an RSS/Atom feed before subscribing.
    • Opera Mail: Low Bandwidth Mode is a setting on mail accounts that makes Opera Mail use as little bandwidth as possible.
    • Follow/Ignore threads and contacts: Follow and Ignore are new features for users that receive numerous messages. It makes it easier to dismiss unimportant messages and easier to recognise important messages.

    There are also changes to the user interface, display and scripting, news and chat. Check them all out in the changelog at http://www.opera.com/docs/changelogs/windows/960b1/.

    Wallpapers (http://my.opera.com/community/opera/wallpapers/info/?id=1704) are available for download and so are banners (http://my.opera.com/chooseopera/blog/2008/09/10/opera-9-6-banners). Help us spread the word!

    NB: This is a beta version of Opera. Please use it only on properly backed up computers.

    Source: http://community.livejournal.com/opera_browser/73313.html

  19. TALENT ZOO!!!

    Date: 07/13/08 (See my site)    Keywords: database, web, seo

                                Be Something!!

    TalentZoo.com is THE website communications professionals and executives, job seekers, and media-savvy people frequent for:

    • Information on the company's offline class recruitment services
    • A kick-ass job board with the most coveted positions in the advertising, marketing, public relations, broadcasting, and publishing fields
    • A resume database employers with Talent Zoo accounts can browse when looking to make their next hire
    • Up-to-date industry news
    • Industry resources, including articles, podcasts, blogs, and even a salary monitor for professionals to measure their worth
    • Our Rookie Directory, where communications professionals with less than 2 years' experience can get their names in front of top employers looking for young talent
    • We are currently seeking Bloggers who specialize in Marketing, Advertising, Public Relations!!  Take a look at our blogs:

    Interested?  See our website at: www.talentzoo.com

    Source: http://community.livejournal.com/see_my_site/116084.html

  20. Common SEO Mistakes Made by Web Designers

    Date: 11/10/11 (Webmaster View)    Keywords: web, seo

    Some of the most common SEO mistakes made by web designers.

    Source: http://www.webmasterview.com/2011/11/common-seo-mistakes-made-by-web-designers/

Previous page  ||  Next page


antivirus | apache | asp | blogging | browser | bugtracking | cms | crm | css | database | ebay | ecommerce | google | hosting | html | java | jsp | linux | microsoft | mysql | offshore | offshoring | oscommerce | php | postgresql | programming | rss | security | seo | shopping | software | spam | spyware | sql | technology | templates | tracker | virus | web | xml | yahoo | home