Just another Tetris Implementation

Again.... a tetris clone
http://dagaenzele.tripod.com/files/tetris.zip
Download the zip-file, extract it and start the jar-file with "java -jar tetris.jar"
I only tested it on win2k and winxp. There might be a problem locating the images since i haven't fully implemented my "ressource-locator thing" yet.
Feel free to have a look at the source code or modify the images. the design is still under construction
If it works: just use the arrow-keys to navigate through the menu. there is no mouse support yet
thanks for your reply

(aka implementations :P) Is that the wrong word? English isn't my first language.
Your clone is nice too.
If you could make the mousepointer stop flickering it would be perfect :)
no need for all those fancy graphics and fullscreen mode... mine is MUCH better, and its a applet too! lolsorry your link seems to be broken.

Similar Messages

  • Just another rtorrent ui mod

    hi, I have been working on just another rtorrent ui mod, it's mainly inspired from rtorrent-mod by karabaja4 - thanks to him :-)
    I am sorry, I haven't made any package yet (need to study for it as never done before). I am attaching a patch for now, apply it from src directory like below.
    highlights:
    1 - colored more elements (tracker lists, chunks, files list, transferring chunks list etc)
    2 - a bit different ui
    3 - almost everything done lowercase (I like it like that, sorry if you don't like it)
    pwd should be rtorrent/src/rtorrent-0.9.3/src
    patch -p1 < ui-rtorrent-mod.patch
    Patch:
    diff -rupN src/display/canvas.cc src-custom/display/canvas.cc
    --- src/display/canvas.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/canvas.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -5,12 +5,12 @@
    // it under the terms of the GNU General Public License as published by
    // the Free Software Foundation; either version 2 of the License, or
    // (at your option) any later version.
    +//
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    // GNU General Public License for more details.
    +//
    // You should have received a copy of the GNU General Public License
    // along with this program; if not, write to the Free Software
    // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    @@ -95,10 +95,21 @@ void
    Canvas::initialize() {
    if (m_isInitialized)
    return;
    +
    m_isInitialized = true;
    initscr();
    +
    + /* colors */
    + start_color();
    + use_default_colors();
    + init_pair(1, COLOR_RED, -1);
    + init_pair(2, COLOR_YELLOW, -1);
    + init_pair(3, COLOR_GREEN, -1);
    + init_pair(4, COLOR_BLUE, -1);
    + init_pair(5, COLOR_MAGENTA, -1);
    + init_pair(6, COLOR_CYAN, -1);
    +
    raw();
    noecho();
    nodelay(stdscr, TRUE);
    @@ -110,7 +121,7 @@ void
    Canvas::cleanup() {
    if (!m_isInitialized)
    return;
    +
    m_isInitialized = false;
    noraw();
    diff -rupN src/display/utils.cc src-custom/display/utils.cc
    --- src/display/utils.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/utils.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -53,6 +53,8 @@
    #include <torrent/data/file_manager.h>
    #include <torrent/download/resource_manager.h>
    #include <torrent/peer/client_info.h>
    +#include <torrent/peer/connection_list.h>
    +#include <torrent/peer/peer_list.h>
    #include "core/download.h"
    #include "core/manager.h"
    @@ -98,9 +100,9 @@ print_hhmmss_local(char* first, char* la
    char*
    print_ddhhmm(char* first, char* last, time_t t) {
    if (t / (24 * 3600) < 100)
    - return print_buffer(first, last, "%2id %2i:%02i", (int)t / (24 * 3600), ((int)t / 3600) % 24, ((int)t / 60) % 60);
    + return print_buffer(first, last, "%2id %2i:%02i |", (int)t / (24 * 3600), ((int)t / 3600) % 24, ((int)t / 60) % 60);
    else
    - return print_buffer(first, last, "--d --:--");
    + return print_buffer(first, last, "--d --:-- |");
    char*
    @@ -129,26 +131,53 @@ print_address(char* first, char* last, c
    char*
    print_download_title(char* first, char* last, core::Download* d) {
    - return print_buffer(first, last, " %s", d->info()->name().c_str());
    + first = print_buffer(first, last, "%s ", d->info()->name().c_str());
    +
    + return first;
    +}
    +
    +char *
    +print_download_title_extra(char* first, char* last, core::Download* d) {
    + if (d->is_hash_checking()) {
    + first = print_buffer(first, last, "| checking hash %3i%%",
    + (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    + } else if (d->tracker_list()->has_active_not_scrape()) {
    + torrent::TrackerList::iterator itr =
    + std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    + std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    + char status[128];
    +
    + (*itr)->get_status(status, sizeof(status));
    + first = print_buffer(first, last, "| connecting to %s %s",
    + (*itr)->url().c_str(), status);
    + } else if (!d->message().empty()) {
    + first = print_buffer(first, last, "| %s", d->message().c_str());
    + } else {
    + *first = '\0';
    + }
    +
    + return first;
    char*
    print_download_info(char* first, char* last, core::Download* d) {
    if (!d->download()->info()->is_open())
    - first = print_buffer(first, last, "[CLOSED] ");
    + first = print_buffer(first, last, "stop | ");
    else if (!d->download()->info()->is_active())
    - first = print_buffer(first, last, "[OPEN] ");
    + first = print_buffer(first, last, "open | ");
    + else if (!d->is_done())
    + first = print_buffer(first, last, "load | ");
    else
    - first = print_buffer(first, last, " ");
    + first = print_buffer(first, last, "---- | ");
    if (d->is_done())
    - first = print_buffer(first, last, "done %10.1f MB", (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    + first = print_buffer(first, last, "done %8.1f mb", (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    else
    - first = print_buffer(first, last, "%6.1f / %6.1f MB",
    + first = print_buffer(first, last, "%6.1f/%6.1f mb",
    (double)d->download()->bytes_done() / (double)(1 << 20),
    (double)d->download()->file_list()->size_bytes() / (double)(1 << 20));
    - first = print_buffer(first, last, " Rate: %5.1f / %5.1f KB Uploaded: %7.1f MB",
    + first = print_buffer(first, last, " | rate: %4.1f/%5.1f kb | uploaded: %5.1f mb |",
    (double)d->info()->up_rate()->rate() / (1 << 10),
    (double)d->info()->down_rate()->rate() / (1 << 10),
    (double)d->info()->up_rate()->total() / (1 << 20));
    @@ -157,24 +186,19 @@ print_download_info(char* first, char* l
    first = print_buffer(first, last, " ");
    first = print_download_percentage_done(first, last, d);
    - first = print_buffer(first, last, " ");
    + first = print_buffer(first, last, " | ");
    first = print_download_time_left(first, last, d);
    - } else {
    - first = print_buffer(first, last, " ");
    - first = print_buffer(first, last, " [%c%c R: %4.2f",
    - rpc::call_command_string("d.tied_to_file", rpc::make_target(d)).empty() ? ' ' : 'T',
    - rpc::call_command_value("d.ignore_commands", rpc::make_target(d)) == 0 ? ' ' : 'I',
    - (double)rpc::call_command_value("d.ratio", rpc::make_target(d)) / 1000.0);
    + first = print_buffer(first, last, " peers: %i(%i)",
    + (int)d->download()->connection_list()->size(),
    + (int)d->download()->peer_list()->available_list_size());
    if (d->priority() != 2)
    - first = print_buffer(first, last, " %s", rpc::call_command_string("d.priority_str", rpc::make_target(d)).c_str());
    + first = print_buffer(first, last, " | %s", rpc::call_command_string("d.priority_str", rpc::make_target(d)).c_str());
    + }
    if (!d->bencode()->get_key("rtorrent").get_key_string("throttle_name").empty())
    - first = print_buffer(first, last , " %s", rpc::call_command_string("d.throttle_name", rpc::make_target(d)).c_str());
    - first = print_buffer(first, last , "]");
    + first = print_buffer(first, last , " | %s", rpc::call_command_string("d.throttle_name", rpc::make_target(d)).c_str());
    if (first > last)
    throw torrent::internal_error("print_download_info(...) wrote past end of the buffer.");
    @@ -182,48 +206,48 @@ print_download_info(char* first, char* l
    return first;
    -char*
    -print_download_status(char* first, char* last, core::Download* d) {
    - if (d->is_active())
    - else if (rpc::call_command_value("d.hashing", rpc::make_target(d)) != 0)
    - first = print_buffer(first, last, "Hashing: ");
    - else if (!d->is_active())
    - first = print_buffer(first, last, "Inactive: ");
    - if (d->is_hash_checking()) {
    - first = print_buffer(first, last, "Checking hash [%2i%%]",
    - (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    - } else if (d->tracker_list()->has_active_not_scrape()) {
    - torrent::TrackerList::iterator itr =
    - std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    - std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    - char status[128];
    - (*itr)->get_status(status, sizeof(status));
    - first = print_buffer(first, last, "Tracker[%i:%i]: Connecting to %s %s",
    - (*itr)->group(), std::distance(d->tracker_list()->begin(), itr), (*itr)->url().c_str(), status);
    - } else if (!d->message().empty()) {
    - first = print_buffer(first, last, "%s", d->message().c_str());
    - } else {
    - *first = '\0';
    - if (first > last)
    - throw torrent::internal_error("print_download_status(...) wrote past end of the buffer.");
    - return first;
    +char*
    +print_download_status(char* first, char* last, core::Download* d) {
    + if (d->is_active())
    + ;
    + else if (rpc::call_command_value("d.hashing", rpc::make_target(d)) != 0)
    + first = print_buffer(first, last, "hashing: ");
    + else if (!d->is_active())
    + first = print_buffer(first, last, "inactive: ");
    +
    + if (d->is_hash_checking()) {
    + first = print_buffer(first, last, "checking hash [%2i%%]",
    + (d->download()->chunks_hashed() * 100) / d->download()->file_list()->size_chunks());
    +
    + } else if (d->tracker_list()->has_active_not_scrape()) {
    + torrent::TrackerList::iterator itr =
    + std::find_if(d->tracker_list()->begin(), d->tracker_list()->end(),
    + std::mem_fun(&torrent::Tracker::is_busy_not_scrape));
    + char status[128];
    +
    + (*itr)->get_status(status, sizeof(status));
    + first = print_buffer(first, last, "tracker[%i:%i]: connecting to %s %s",
    + (*itr)->group(), std::distance(d->tracker_list()->begin(), itr), (*itr)->url().c_str(), status);
    +
    + } else if (!d->message().empty()) {
    + first = print_buffer(first, last, "%s", d->message().c_str());
    +
    + } else {
    + *first = '\0';
    + }
    +
    + if (first > last)
    + throw torrent::internal_error("print_download_status(...) wrote past end of the buffer.");
    +
    + return first;
    +}
    char*
    print_download_time_left(char* first, char* last, core::Download* d) {
    uint32_t rate = d->info()->down_rate()->rate();
    if (rate < 512)
    - return print_buffer(first, last, "--d --:--");
    + return print_buffer(first, last, "--d --:-- |");
    time_t remaining = (d->download()->file_list()->size_bytes() - d->download()->bytes_done()) / (rate & ~(uint32_t)(512 - 1));
    @@ -233,10 +257,9 @@ print_download_time_left(char* first, ch
    char*
    print_download_percentage_done(char* first, char* last, core::Download* d) {
    if (!d->is_open() || d->is_done())
    - //return print_buffer(first, last, "[--%%]");
    - return print_buffer(first, last, " ");
    + return print_buffer(first, last, " ");
    else
    - return print_buffer(first, last, "[%2u%%]", (d->download()->file_list()->completed_chunks() * 100) / d->download()->file_list()->size_chunks());
    + return print_buffer(first, last, "%2u%%", (d->download()->file_list()->completed_chunks() * 100) / d->download()->file_list()->size_chunks());
    char*
    @@ -260,23 +283,23 @@ print_client_version(char* first, char*
    char*
    print_status_info(char* first, char* last) {
    if (!torrent::up_throttle_global()->is_throttled())
    - first = print_buffer(first, last, "[Throttle off");
    + first = print_buffer(first, last, "[throttle off");
    else
    - first = print_buffer(first, last, "[Throttle %3i", torrent::up_throttle_global()->max_rate() / 1024);
    + first = print_buffer(first, last, "[throttle %3i", torrent::up_throttle_global()->max_rate() / 1024);
    if (!torrent::down_throttle_global()->is_throttled())
    - first = print_buffer(first, last, "/off KB]");
    + first = print_buffer(first, last, "/off kb]");
    else
    - first = print_buffer(first, last, "/%3i KB]", torrent::down_throttle_global()->max_rate() / 1024);
    + first = print_buffer(first, last, "/%3i kb]", torrent::down_throttle_global()->max_rate() / 1024);
    - first = print_buffer(first, last, " [Rate %5.1f/%5.1f KB]",
    + first = print_buffer(first, last, " [rate %4.1f/%5.1f kb]",
    (double)torrent::up_rate()->rate() / 1024.0,
    (double)torrent::down_rate()->rate() / 1024.0);
    - first = print_buffer(first, last, " [Port: %i]", (unsigned int)torrent::connection_manager()->listen_port());
    + first = print_buffer(first, last, " [port: %i]", (unsigned int)torrent::connection_manager()->listen_port());
    if (!rak::socket_address::cast_from(torrent::connection_manager()->local_address())->is_address_any()) {
    - first = print_buffer(first, last, " [Local ");
    + first = print_buffer(first, last, " [local ");
    first = print_address(first, last, torrent::connection_manager()->local_address());
    first = print_buffer(first, last, "]");
    @@ -285,7 +308,7 @@ print_status_info(char* first, char* las
    throw torrent::internal_error("print_status_info(...) wrote past end of the buffer.");
    if (!rak::socket_address::cast_from(torrent::connection_manager()->bind_address())->is_address_any()) {
    - first = print_buffer(first, last, " [Bind ");
    + first = print_buffer(first, last, " [bind ");
    first = print_address(first, last, torrent::connection_manager()->bind_address());
    first = print_buffer(first, last, "]");
    @@ -295,24 +318,24 @@ print_status_info(char* first, char* las
    char*
    print_status_extra(char* first, char* last) {
    - first = print_buffer(first, last, " [U %i/%i]",
    + first = print_buffer(first, last, " [u %i/%i]",
    torrent::resource_manager()->currently_upload_unchoked(),
    torrent::resource_manager()->max_upload_unchoked());
    - first = print_buffer(first, last, " [D %i/%i]",
    + first = print_buffer(first, last, " [d %i/%i]",
    torrent::resource_manager()->currently_download_unchoked(),
    torrent::resource_manager()->max_download_unchoked());
    - first = print_buffer(first, last, " [H %u/%u]",
    + first = print_buffer(first, last, " [h %u/%u]",
    control->core()->http_stack()->active(),
    control->core()->http_stack()->max_active());
    - first = print_buffer(first, last, " [S %i/%i/%i]",
    + first = print_buffer(first, last, " [s %i/%i/%i]",
    torrent::total_handshakes(),
    torrent::connection_manager()->size(),
    torrent::connection_manager()->max_size());
    - first = print_buffer(first, last, " [F %i/%i]",
    + first = print_buffer(first, last, " [f %i/%i]",
    torrent::file_manager()->open_files(),
    torrent::file_manager()->max_open_files());
    diff -rupN src/display/utils.h src-custom/display/utils.h
    --- src/display/utils.h 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/utils.h 2013-06-06 01:54:59.331452368 +0530
    @@ -66,6 +66,7 @@ char* print_ddhhmm(char* first, ch
    char* print_ddmmyyyy(char* first, char* last, time_t t);
    char* print_download_title(char* first, char* last, core::Download* d);
    +char* print_download_title_extra(char* first, char* last, core::Download* d);
    char* print_download_info(char* first, char* last, core::Download* d);
    char* print_download_status(char* first, char* last, core::Download* d);
    char* print_download_time_left(char* first, char* last, core::Download* d);
    diff -rupN src/display/window_download_chunks_seen.cc src-custom/display/window_download_chunks_seen.cc
    --- src/display/window_download_chunks_seen.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_download_chunks_seen.cc 2013-06-06 02:04:03.243342326 +0530
    @@ -66,7 +66,7 @@ WindowDownloadChunksSeen::redraw() {
    if (m_canvas->height() < 3 || m_canvas->width() < 18)
    return;
    - m_canvas->print(2, 0, "Chunks seen: [C/A/D %i/%i/%.2f]",
    + m_canvas->print(2, 0, "chunks seen: [c/a/d %i/%i/%.2f]",
    (int)m_download->download()->peers_complete() + m_download->download()->file_list()->is_done(),
    (int)m_download->download()->peers_accounted(),
    std::floor(m_download->distributed_copies() * 100.0f) / 100.0f);
    @@ -74,15 +74,16 @@ WindowDownloadChunksSeen::redraw() {
    const uint8_t* seen = m_download->download()->chunks_seen();
    if (seen == NULL || m_download->download()->file_list()->bitfield()->empty()) {
    - m_canvas->print(2, 2, "Not available.");
    + m_canvas->print(2, 2, "not available.");
    return;
    if (!m_download->is_done()) {
    - m_canvas->print(36, 0, "X downloaded missing queued downloading");
    - m_canvas->print_char(50, 0, 'X' | A_BOLD);
    - m_canvas->print_char(61, 0, 'X' | A_BOLD | A_UNDERLINE);
    - m_canvas->print_char(71, 0, 'X' | A_REVERSE);
    + m_canvas->print(36, 0, " downloaded missing queued downloading");
    + m_canvas->print_char(36, 0, 'x' | COLOR_PAIR(3));
    + m_canvas->print_char(50, 0, 'x' | COLOR_PAIR(1));
    + m_canvas->print_char(61, 0, 'x' | A_UNDERLINE);
    + m_canvas->print_char(71, 0, 'x' | COLOR_PAIR(6));
    *m_focus = std::min(*m_focus, max_focus());
    @@ -109,15 +110,15 @@ WindowDownloadChunksSeen::redraw() {
    chtype attr;
    if (bitfield->get(chunk - seen)) {
    - attr = A_NORMAL;
    + attr = COLOR_PAIR(3);
    } else if (itrTransfer != transferChunks.end() && (uint32_t)(chunk - seen) == (*itrTransfer)->index()) {
    if (std::find_if((*itrTransfer)->begin(), (*itrTransfer)->end(), std::mem_fun_ref(&torrent::Block::is_transfering)) != (*itrTransfer)->end())
    - attr = A_REVERSE;
    + attr = COLOR_PAIR(1);
    else
    - attr = A_BOLD | A_UNDERLINE;
    + attr = A_UNDERLINE;
    itrTransfer++;
    } else {
    - attr = A_BOLD;
    + attr = COLOR_PAIR(6);
    m_canvas->print_char(attr | rak::value_to_hexchar<0>(std::min<uint8_t>(*chunk, 0xF)));
    diff -rupN src/display/window_download_list.cc src-custom/display/window_download_list.cc
    --- src/display/window_download_list.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_download_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -71,7 +71,7 @@ WindowDownloadList::redraw() {
    if (m_view == NULL)
    return;
    - m_canvas->print(0, 0, "%s", ("[View: " + m_view->name() + "]").c_str());
    + m_canvas->print(0, 0, "%s", ("[view: " + m_view->name() + "]").c_str());
    if (m_view->empty_visible() || m_canvas->width() < 5 || m_canvas->height() < 2)
    return;
    @@ -81,7 +81,7 @@ WindowDownloadList::redraw() {
    Range range = rak::advance_bidirectional(m_view->begin_visible(),
    m_view->focus() != m_view->end_visible() ? m_view->focus() : m_view->begin_visible(),
    m_view->end_visible(),
    - m_canvas->height() / 3);
    + (m_canvas->height() - 1) / 3);
    // Make sure we properly fill out the last lines so it looks like
    // there are more torrents, yet don't hide it if we got the last one
    @@ -89,21 +89,54 @@ WindowDownloadList::redraw() {
    if (range.second != m_view->end_visible())
    ++range.second;
    - int pos = 1;
    + int pos = 2;
    while (range.first != range.second) {
    char buffer[m_canvas->width() + 1];
    char* last = buffer + m_canvas->width() - 2 + 1;
    + int title_length;
    + //do not print on last lines if cannot show whole torrent
    + if (pos >= (m_canvas->height() - 1))
    + break;
    +
    + // print title
    print_download_title(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    - print_download_info(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    + m_canvas->print(0, pos, "%c %s", range.first == m_view->focus() ? '>' : ' ', buffer);
    + title_length = strlen(buffer);
    + if ((*range.first)->is_done()) {
    + m_canvas->set_attr(2, pos, (title_length), A_BOLD, 3);
    + } else {
    + m_canvas->set_attr(2, pos, (title_length), A_BOLD, 2);
    + }
    + //print title extra
    + print_download_title_extra(buffer, last, *range.first);
    +
    + //do not let title extra get off screen
    + buffer[m_canvas->width() - title_length - 2] = '\0';
    + m_canvas->print((title_length + 2), pos++, "%s", buffer);
    - print_download_status(buffer, last, *range.first);
    - m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
    + print_download_info(buffer, last, *range.first);
    + m_canvas->print(0, pos, " %s", buffer);
    + if (!(*range.first)->info()->is_open()) {
    + //closed
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 1);
    + } else if (!(*range.first)->info()->is_active()) {
    + //paused
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 2);
    + } else {
    + //active
    + m_canvas->set_attr(2, pos, 4, A_BOLD, 3);
    + }
    +
    + if ((*range.first)->is_done()) {
    + //finished
    + m_canvas->set_attr(9, pos, 16, A_BOLD, 3);
    + }
    + m_canvas->set_attr(28, pos, (strlen(buffer) - 26), A_NORMAL, 6);
    + pos++;
    + pos++;
    ++range.first;
    diff -rupN src/display/window_download_statusbar.cc src-custom/display/window_download_statusbar.cc
    --- src/display/window_download_statusbar.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_download_statusbar.cc 2013-06-06 01:54:59.328119043 +0530
    @@ -68,7 +68,7 @@ WindowDownloadStatusbar::redraw() {
    print_download_info(buffer, last, m_download);
    m_canvas->print(0, 0, "%s", buffer);
    - snprintf(buffer, last - buffer, "Peers: %i(%i) Min/Max: %i/%i Slots: U:%i/%i D:%i/%i U/I/C/A: %i/%i/%i/%i Unchoked: %u/%u Failed: %i",
    + snprintf(buffer, last - buffer, "peers: %i(%i) min/max: %i/%i slots: u:%i/%i d:%i/%i u/i/c/a: %i/%i/%i/%i unchoked: %u/%u failed: %i",
    (int)m_download->download()->connection_list()->size(),
    (int)m_download->download()->peer_list()->available_list_size(),
    (int)m_download->download()->connection_list()->min_size(),
    diff -rupN src/display/window_download_transfer_list.cc src-custom/display/window_download_transfer_list.cc
    --- src/display/window_download_transfer_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_download_transfer_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -65,7 +65,7 @@ WindowDownloadTransferList::redraw() {
    const torrent::TransferList* transfers = m_download->download()->transfer_list();
    - m_canvas->print(2, 0, "Transfer list: [Size %i]", transfers->size());
    + m_canvas->print(2, 0, "transfer list: [size %i]", transfers->size());
    torrent::TransferList::const_iterator itr = transfers->begin();
    @@ -74,7 +74,7 @@ WindowDownloadTransferList::redraw() {
    // prettify this. (This is a very subtle hint)
    for (unsigned int y = 1; y < m_canvas->height() && itr != transfers->end(); ++y, ++itr) {
    - m_canvas->print(0, y, "%5u [P: %u F: %u]", (*itr)->index(), (*itr)->priority(), (*itr)->failed());
    + m_canvas->print(0, y, "%5u [p: %u f: %u]", (*itr)->index(), (*itr)->priority(), (*itr)->failed());
    // Handle window size.
    for (torrent::BlockList::const_iterator bItr = (*itr)->begin(), bLast = (*itr)->end(); bItr != bLast; ++bItr) {
    @@ -89,7 +89,7 @@ WindowDownloadTransferList::redraw() {
    chtype attr = A_NORMAL;
    if (bItr->is_finished()) {
    - attr = A_REVERSE;
    + attr = COLOR_PAIR(3);
    id = key_id(bItr->leader()->const_peer_info());
    } else if (bItr->is_transfering()) {
    diff -rupN src/display/window_file_list.cc src-custom/display/window_file_list.cc
    --- src/display/window_file_list.cc 2012-02-14 09:02:01.000000000 +0530
    +++ src-custom/display/window_file_list.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -154,9 +154,9 @@ WindowFileList::redraw() {
    unsigned int pos = 0;
    - int filenameWidth = m_canvas->width() - 16;
    + int filenameWidth = m_canvas->width() - 18;
    - m_canvas->print(0, pos++, "Cmp Pri Size Filename");
    + m_canvas->print(0, pos++, "cmp pri size filename");
    while (pos != m_canvas->height()) {
    iterator itr = entries[first];
    @@ -164,17 +164,17 @@ WindowFileList::redraw() {
    if (itr == iterator(fl->end()))
    break;
    - m_canvas->set_default_attributes(itr == m_element->selected() ? is_focused() ? A_REVERSE : A_BOLD : A_NORMAL);
    + m_canvas->set_default_attributes(itr == m_element->selected() ? is_focused() ? COLOR_PAIR(3) : A_NORMAL : A_NORMAL);
    if (itr.is_empty()) {
    - m_canvas->print(0, pos, "%*c%-*s", 16, ' ', filenameWidth, "EMPTY");
    + m_canvas->print(0, pos, "%*c%-*s", 18, ' ', filenameWidth, "empty");
    } else if (itr.is_entering()) {
    - m_canvas->print(0, pos, "%*c %ls", 16 + itr.depth(), '\\',
    - itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"UNKNOWN");
    + m_canvas->print(0, pos, "%*c %ls", 18 + itr.depth(), '\\',
    + itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"unknown");
    } else if (itr.is_leaving()) {
    - m_canvas->print(0, pos, "%*c %-*s", 16 + (itr.depth() - 1), '/', filenameWidth - (itr.depth() - 1), "");
    + m_canvas->print(0, pos, "%*c %-*s", 18 + (itr.depth() - 1), '/', filenameWidth - (itr.depth() - 1), "");
    } else if (itr.is_file()) {
    torrent::File* e = *itr;
    @@ -185,7 +185,7 @@ WindowFileList::redraw() {
    case torrent::PRIORITY_OFF: priority = "off"; break;
    case torrent::PRIORITY_NORMAL: priority = " "; break;
    case torrent::PRIORITY_HIGH: priority = "hig"; break;
    - default: priority = "BUG"; break;
    + default: priority = "bug"; break;
    m_canvas->print(0, pos, "%3d %s ", done_percentage(e), priority);
    @@ -193,19 +193,19 @@ WindowFileList::redraw() {
    int64_t val = e->size_bytes();
    if (val < (int64_t(1000) << 10))
    - m_canvas->print(8, pos, "%5.1f K", (double)val / (int64_t(1) << 10));
    + m_canvas->print(8, pos, " %5.1f k ", (double)val / (int64_t(1) << 10));
    else if (val < (int64_t(1000) << 20))
    - m_canvas->print(8, pos, "%5.1f M", (double)val / (int64_t(1) << 20));
    + m_canvas->print(8, pos, " %5.1f m ", (double)val / (int64_t(1) << 20));
    else if (val < (int64_t(1000) << 30))
    - m_canvas->print(8, pos, "%5.1f G", (double)val / (int64_t(1) << 30));
    + m_canvas->print(8, pos, " %5.1f g ", (double)val / (int64_t(1) << 30));
    else
    - m_canvas->print(8, pos, "%5.1f T", (double)val / (int64_t(1) << 40));
    + m_canvas->print(8, pos, " %5.1f t ", (double)val / (int64_t(1) << 40));
    - m_canvas->print(15, pos, "%*c %ls", 1 + itr.depth(), '|',
    - itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"UNKNOWN");
    + m_canvas->print(17, pos, "%*c %ls", 1 + itr.depth(), '|',
    + itr.depth() < (*itr)->path()->size() ? wstring_width((*itr)->path()->at(itr.depth()), filenameWidth - itr.depth() - 1).c_str() : L"unknown");
    } else {
    - m_canvas->print(0, pos, "BORK BORK");
    + m_canvas->print(0, pos, "bork bork");
    m_canvas->set_default_attributes(A_NORMAL);
    diff -rupN src/display/window_http_queue.cc src-custom/display/window_http_queue.cc
    --- src/display/window_http_queue.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_http_queue.cc 2013-06-06 01:54:59.328119043 +0530
    @@ -70,7 +70,7 @@ WindowHttpQueue::redraw() {
    m_canvas->erase();
    - m_canvas->print(0, 0, "Http [%i]", m_queue->size());
    + m_canvas->print(0, 0, "http [%i]", m_queue->size());
    unsigned int pos = 10;
    Container::iterator itr = m_container.begin();
    diff -rupN src/display/window_input.cc src-custom/display/window_input.cc
    --- src/display/window_input.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_input.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -49,7 +49,7 @@ WindowInput::redraw() {
    m_canvas->print(0, 0, "%s> %s", m_title.c_str(), m_input != NULL ? m_input->c_str() : "<NULL>");
    if (m_focus)
    - m_canvas->set_attr(m_input->get_pos() + 2 + m_title.size(), 0, 1, A_REVERSE, COLOR_PAIR(0));
    + m_canvas->set_attr(m_input->get_pos() + 2 + m_title.size(), 0, 1, A_BOLD, 3);
    diff -rupN src/display/window_peer_list.cc src-custom/display/window_peer_list.cc
    --- src/display/window_peer_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_peer_list.cc 2013-06-06 01:54:59.334785692 +0530
    @@ -68,16 +68,16 @@ WindowPeerList::redraw() {
    int x = 2;
    int y = 0;
    - m_canvas->print(x, y, "IP"); x += 16;
    - m_canvas->print(x, y, "UP"); x += 7;
    - m_canvas->print(x, y, "DOWN"); x += 7;
    - m_canvas->print(x, y, "PEER"); x += 7;
    - m_canvas->print(x, y, "CT/RE/LO"); x += 10;
    - m_canvas->print(x, y, "QS"); x += 6;
    - m_canvas->print(x, y, "DONE"); x += 6;
    - m_canvas->print(x, y, "REQ"); x += 6;
    - m_canvas->print(x, y, "SNUB"); x += 6;
    - m_canvas->print(x, y, "FAILED");
    + m_canvas->print(x, y, "ip"); x += 16;
    + m_canvas->print(x, y, "up"); x += 7;
    + m_canvas->print(x, y, "down"); x += 7;
    + m_canvas->print(x, y, "peer"); x += 7;
    + m_canvas->print(x, y, "ct/re/lo"); x += 10;
    + m_canvas->print(x, y, "qs"); x += 6;
    + m_canvas->print(x, y, "done"); x += 6;
    + m_canvas->print(x, y, "req"); x += 6;
    + m_canvas->print(x, y, "snub"); x += 6;
    + m_canvas->print(x, y, "failed");
    ++y;
    diff -rupN src/display/window_title.cc src-custom/display/window_title.cc
    --- src/display/window_title.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/display/window_title.cc 2013-06-06 01:54:59.338119016 +0530
    @@ -47,7 +47,9 @@ WindowTitle::redraw() {
    m_canvas->erase();
    m_canvas->print(std::max(0, ((int)m_canvas->width() - (int)m_title.size()) / 2 - 4), 0,
    - "*** %s ***", m_title.c_str());
    + "--- %s ---", m_title.c_str());
    + m_canvas->set_attr((((int)m_canvas->width() - (int)m_title.size()) / 2 - 4), 0, 3, A_BOLD, 1);
    + m_canvas->set_attr(((((int)m_canvas->width() - (int)m_title.size()) / 2) + (int)m_title.size() + 1), 0, 3, A_BOLD, 1);
    diff -rupN src/display/window_tracker_list.cc src-custom/display/window_tracker_list.cc
    --- src/display/window_tracker_list.cc 2012-04-10 18:16:51.000000000 +0530
    +++ src-custom/display/window_tracker_list.cc 2013-06-06 01:54:59.331452368 +0530
    @@ -65,7 +65,7 @@ WindowTrackerList::redraw() {
    torrent::TrackerList* tl = m_download->tracker_list();
    torrent::TrackerController* tc = m_download->tracker_controller();
    - m_canvas->print(2, pos, "Trackers: [Key: %08x] [%s %s %s]",
    + m_canvas->print(2, pos, "trackers: [key: %08x] [%s %s %s]",
    tl->key(),
    tc->is_requesting() ? "req" : " ",
    tc->is_promiscuous_mode() ? "prom" : " ",
    @@ -99,7 +99,7 @@ WindowTrackerList::redraw() {
    else
    state = " ";
    - m_canvas->print(0, pos++, "%s Id: %s Counters: %uf / %us (%u) %s S/L/D: %u/%u/%u (%u/%u)",
    + m_canvas->print(0, pos++, "%s id: %s counters: %uf / %us (%u) %s s/l/d: %u/%u/%u (%u/%u)",
    state,
    rak::copy_escape_html(tracker->tracker_id()).c_str(),
    tracker->failed_counter(),
    @@ -114,13 +114,13 @@ WindowTrackerList::redraw() {
    if (range.first == *m_focus) {
    - m_canvas->set_attr(4, pos - 2, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0));
    - m_canvas->set_attr(4, pos - 1, m_canvas->width(), is_focused() ? A_REVERSE : A_BOLD, COLOR_PAIR(0));
    + m_canvas->set_attr(4, pos - 2, m_canvas->width(), is_focused() ? A_BOLD : A_NORMAL, 3);
    + m_canvas->set_attr(4, pos - 1, m_canvas->width(), is_focused() ? A_BOLD : A_NORMAL, 3);
    if (tracker->is_busy()) {
    - m_canvas->set_attr(0, pos - 2, 4, A_REVERSE, COLOR_PAIR(0));
    - m_canvas->set_attr(0, pos - 1, 4, A_REVERSE, COLOR_PAIR(0));
    + m_canvas->set_attr(0, pos - 2, 4, A_BOLD, 2);
    + m_canvas->set_attr(0, pos - 1, 4, A_BOLD, 2);
    range.first++;
    diff -rupN src/ui/download.cc src-custom/ui/download.cc
    --- src/ui/download.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/download.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -109,22 +109,22 @@ inline ElementBase*
    Download::create_menu() {
    ElementMenu* element = new ElementMenu;
    - element->push_back("Peer list",
    + element->push_back("peer list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_PEER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_PEER_LIST));
    - element->push_back("Info",
    + element->push_back("info",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_INFO),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_INFO));
    - element->push_back("File list",
    + element->push_back("file list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_FILE_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_FILE_LIST));
    - element->push_back("Tracker list",
    + element->push_back("tracker list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_TRACKER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_TRACKER_LIST));
    - element->push_back("Chunks seen",
    + element->push_back("chunks seen",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_CHUNKS_SEEN),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_CHUNKS_SEEN));
    - element->push_back("Transfer list",
    + element->push_back("transfer list",
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_focus), DISPLAY_TRANSFER_LIST),
    sigc::bind(sigc::mem_fun(this, &Download::activate_display_menu), DISPLAY_TRANSFER_LIST));
    @@ -149,41 +149,41 @@ Download::create_info() {
    // Get these bindings with some kind of string map.
    - element->push_column("Name:", te_command("d.name="));
    - element->push_column("Local id:", te_command("d.local_id_html="));
    - element->push_column("Info hash:", te_command("d.hash="));
    - element->push_column("Created:", te_command("cat=$convert.date=$d.creation_date=,\" \",$convert.time=$d.creation_date="));
    + element->push_column("name:", te_command("d.name="));
    + element->push_column("local id:", te_command("d.local_id_html="));
    + element->push_column("info hash:", te_command("d.hash="));
    + element->push_column("created:", te_command("cat=$convert.date=$d.creation_date=,\" \",$convert.time=$d.creation_date="));
    element->push_back("");
    - element->push_column("Directory:", te_command("d.directory="));
    - element->push_column("Base Path:", te_command("d.base_path="));
    - element->push_column("Tied to file:", te_command("d.tied_to_file="));
    - element->push_column("File stats:", te_command("cat=$if=$d.is_multi_file=\\,multi\\,single,\" \",$d.size_files=,\" files\""));
    + element->push_column("directory:", te_command("d.directory="));
    + element->push_column("base Path:", te_command("d.base_path="));
    + element->push_column("tied to file:", te_command("d.tied_to_file="));
    + element->push_column("file stats:", te_command("cat=$if=$d.is_multi_file=\\,multi\\,single,\" \",$d.size_files=,\" files\""));
    element->push_back("");
    - element->push_column("Chunks:", te_command("cat=(d.completed_chunks),\" / \",(d.size_chunks),\" * \",(d.chunk_size),\" (\",(d.wanted_chunks),\")\""));
    - element->push_column("Priority:", te_command("d.priority="));
    - element->push_column("Peer exchange:", te_command("cat=$if=$d.peer_exchange=\\,enabled\\,disabled,\\ ,"
    + element->push_column("chunks:", te_command("cat=(d.completed_chunks),\" / \",(d.size_chunks),\" * \",(d.chunk_size),\" (\",(d.wanted_chunks),\")\""));
    + element->push_column("priority:", te_command("d.priority="));
    + element->push_column("peer exchange:", te_command("cat=$if=$d.peer_exchange=\\,enabled\\,disabled,\\ ,"
    "$if=$d.is_pex_active=\\,active\\,$d.is_private=\\,private\\,inactive,"
    "\\ (,$d.size_pex=,/,$d.max_size_pex=,)"));
    - element->push_column("State changed:", te_command("convert.elapsed_time=$d.state_changed="));
    + element->push_column("state changed:", te_command("convert.elapsed_time=$d.state_changed="));
    element->push_back("");
    - element->push_column("Memory usage:", te_command("cat=$convert.mb=$pieces.memory.current=,\" MB\""));
    - element->push_column("Max memory usage:", te_command("cat=$convert.mb=$pieces.memory.max=,\" MB\""));
    - element->push_column("Free diskspace:", te_command("cat=$convert.mb=$d.free_diskspace=,\" MB\""));
    - element->push_column("Safe diskspace:", te_command("cat=$convert.mb=$pieces.sync.safe_free_diskspace=,\" MB\""));
    + element->push_column("memory usage:", te_command("cat=$convert.mb=$pieces.memory.current=,\" MB\""));
    + element->push_column("max memory usage:", te_command("cat=$convert.mb=$pieces.memory.max=,\" MB\""));
    + element->push_column("free diskspace:", te_command("cat=$convert.mb=$d.free_diskspace=,\" MB\""));
    + element->push_column("safe diskspace:", te_command("cat=$convert.mb=$pieces.sync.safe_free_diskspace=,\" MB\""));
    element->push_back("");
    - element->push_column("Connection type:", te_command("cat=(d.connection_current),\" \",(if,(d.accepting_seeders),"",\"no_seeders\")"));
    - element->push_column("Choke heuristic:", te_command("cat=(d.up.choke_heuristics),\", \",(d.down.choke_heuristics),\", \",(d.group)"));
    - element->push_column("Safe sync:", te_command("if=$pieces.sync.always_safe=,yes,no"));
    - element->push_column("Send buffer:", te_command("cat=$convert.kb=$network.send_buffer.size=,\" KB\""));
    - element->push_column("Receive buffer:", te_command("cat=$convert.kb=$network.receive_buffer.size=,\" KB\""));
    + element->push_column("connection type:", te_command("cat=(d.connection_current),\" \",(if,(d.accepting_seeders),"",\"no_seeders\")"));
    + element->push_column("choke heuristic:", te_command("cat=(d.up.choke_heuristics),\", \",(d.down.choke_heuristics),\", \",(d.group)"));
    + element->push_column("safe sync:", te_command("if=$pieces.sync.always_safe=,yes,no"));
    + element->push_column("send buffer:", te_command("cat=$convert.kb=$network.send_buffer.size=,\" KB\""));
    + element->push_column("receive buffer:", te_command("cat=$convert.kb=$network.receive_buffer.size=,\" KB\""));
    // TODO: Define a custom command for this and use $argument.0 instead of looking up the name multiple times?
    - element->push_column("Throttle:", te_command("branch=d.throttle_name=,\""
    + element->push_column("throttle:", te_command("branch=d.throttle_name=,\""
    "cat=$d.throttle_name=,\\\" [Max \\\","
    "$convert.throttle=$throttle.up.max=$d.throttle_name=,\\\"/\\\","
    "$convert.throttle=$throttle.down.max=$d.throttle_name=,\\\" KB] [Rate \\\","
    @@ -192,10 +192,10 @@ Download::create_info() {
    "cat=\"global\""));
    element->push_back("");
    - element->push_column("Upload:", te_command("cat=$convert.kb=$d.up.rate=,\" KB / \",$convert.xb=$d.up.total="));
    - element->push_column("Download:", te_command("cat=$convert.kb=$d.down.rate=,\" KB / \",$convert.xb=$d.down.total="));
    - element->push_column("Skipped:", te_command("cat=$convert.kb=$d.skip.rate=,\" KB / \",$convert.xb=$d.skip.total="));
    - element->push_column("Preload:", te_command("cat=$pieces.preload.type=,\" / \",$pieces.stats_preloaded=,\" / \",$pieces.stats_preloaded="));
    + element->push_column("upload:", te_command("cat=$convert.kb=$d.up.rate=,\" KB / \",$convert.xb=$d.up.total="));
    + element->push_column("download:", te_command("cat=$convert.kb=$d.down.rate=,\" KB / \",$convert.xb=$d.down.total="));
    + element->push_column("skipped:", te_command("cat=$convert.kb=$d.skip.rate=,\" KB / \",$convert.xb=$d.skip.total="));
    + element->push_column("preload:", te_command("cat=$pieces.preload.type=,\" / \",$pieces.stats_preloaded=,\" / \",$pieces.stats_preloaded="));
    element->set_column_width(element->column_width() + 1);
    diff -rupN src/ui/download_list.cc src-custom/ui/download_list.cc
    --- src/ui/download_list.cc 2012-03-13 17:40:49.000000000 +0530
    +++ src-custom/ui/download_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -221,12 +221,12 @@ DownloadList::activate_display(Display d
    // Set title.
    switch (displayType) {
    case DISPLAY_DOWNLOAD_LIST:
    - control->ui()->window_title()->set_title("rTorrent " VERSION "/" +
    + control->ui()->window_title()->set_title("rtorrent-custom " VERSION "/" +
    std::string(torrent::version()) + " - " +
    rpc::call_command_string("session.name"));
    break;
    case DISPLAY_LOG:
    - control->ui()->window_title()->set_title("Log");
    + control->ui()->window_title()->set_title("log");
    break;
    default: break;
    diff -rupN src/ui/element_download_list.cc src-custom/ui/element_download_list.cc
    --- src/ui/element_download_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/element_download_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -59,7 +59,7 @@ ElementDownloadList::ElementDownloadList
    m_window(NULL),
    m_view(NULL) {
    - receive_change_view("main");
    + receive_change_view("name");
    if (m_view == NULL)
    throw torrent::internal_error("View \"main\" must be present to initialize the main display.");
    @@ -153,7 +153,7 @@ ElementDownloadList::receive_command(con
    m_view->set_last_changed();
    } catch (torrent::input_error& e) {
    - lt_log_print(torrent::LOG_WARN, "Command failed: %s", e.what());
    + lt_log_print(torrent::LOG_WARN, "command failed: %s", e.what());
    return;
    diff -rupN src/ui/element_file_list.cc src-custom/ui/element_file_list.cc
    --- src/ui/element_file_list.cc 2012-01-19 15:48:01.000000000 +0530
    +++ src-custom/ui/element_file_list.cc 2013-06-06 01:54:59.408118826 +0530
    @@ -86,19 +86,19 @@ element_file_list_create_info() {
    element->set_column(1);
    element->set_interval(1);
    - element->push_back("File info:");
    + element->push_back("file info:");
    element->push_back("");
    - element->push_column("Filename:", te_command("fi.filename_last="));
    + element->push_column("filename:", te_command("fi.filename_last="));
    element->push_back("");
    - element->push_column("Size:", te_command("if=$fi.is_file=,$convert.xb=$f.size_bytes=,---"));
    - element->push_column("Chunks:", te_command("cat=$f.completed_chunks=,\" / \",$f.size_chunks="));
    - element->push_column("Range:", te_command("cat=$f.range_first=,\" - \",$f.range_second="));
    + element->push_column("size:", te_command("if=$fi.is_file=,$convert.xb=$f.size_bytes=,---"));
    + element->push_column("chunks:", te_command("cat=$f.completed_chunks=,\" / \",$f.size_chunks="));
    + element->push_column("range:", te_command("cat=$f.range_first=,\" - \",$f.range_second="));
    element->push_back("");
    - element->push_column("Queued:", te_command("cat=\"$if=$f.is_create_queued=,create\",\" \",\"$if=$f.is_resize_queued=,resize\""));
    - element->push_column("Prioritize:", te_command("cat=\"$if=$f.prioritize_first=,first\",\" \",\"$if=$f.prioritize_last=,last\""));
    + element->push_column("queued:", te_command("cat=\"$if=$f.is_create_queued=,create\",\" \",\"$if=$f.is_resize_queued=,resize\""));
    + element->push_column("prioritize:", te_command("cat=\"$if=$f.prioritize_first=,first\",\" \",\"$if=$f.prioritize_last=,last\""));
    element->set_column_width(element->column_width() + 1);
    diff -rupN src/ui/element_peer_list.cc src-custom/ui/element_peer_list.cc
    --- src/ui/element_peer_list.cc 2012-04-09 12:09:14.000000000 +0530
    +++ src-custom/ui/element_peer_list.cc 2013-06-06 01:54:59.404785502 +0530
    @@ -106,24 +106,24 @@ ElementPeerList::create_info() {
    element->set_column(1);
    element->set_interval(1);
    - element->push_back("Peer info:");
    + element->push_back("peer info:");
    element->push_back("");
    - element->push_column("Address:", te_command("cat=$p.address=,:,$p.port="));
    - element->push_column("Id:", te_command("p.id_html="));
    - element->push_column("Client:", te_command("p.client_version="));
    - element->push_column("Options:", te_command("p.options_str="));
    - element->push_column("Connected:", te_command("if=$p.is_incoming=,incoming,outgoing"));
    - element->push_column("Encrypted:", te_command("if=$p.is_encrypted=,yes,$p.is_obfuscated=,handshake,no"));
    + element->push_column("address:", te_command("cat=$p.address=,:,$p.port="));
    + element->push_column("id:", te_command("p.id_html="));
    + element->push_column("client:", te_command("p.client_version="));
    + element->push_column("options:", te_command("p.options_str="));
    + element->push_column("connected:", te_command("if=$p.is_incoming=,incoming,outgoing"));
    + element->push_column("encrypted:", te_command("if=$p.is_encrypted=,yes,$p.is_obfuscated=,handshake,no"));
    element->push_back("");
    - element->push_column("Snubbed:", te_command("if=$p.is_snubbed=,yes,no"));
    - element->push_column("Done:", te_command("p.completed_percent="));
    - element->push_column("Rate:", te_command("cat=$convert.kb=$p.up_rate=,\\ KB\\ ,$convert.kb=$p.down_rate=,\\ KB"));
    - element->push_column("Total:", te_command("cat=$convert.kb=$p.up_total=,\\ KB\\ ,$convert.kb=$p.down_total=,\\ KB"));
    + element->push_column("snubbed:", te_command("if=$p.is_snubbed=,yes,no"));
    + element->push_column("done:", te_command("p.completed_percent="));
    + element->push_column("rate:", te_command("cat=$convert.kb=$p.up_rate=,\\ KB\\ ,$convert.kb=$p.down_rate=,\\ KB"));
    + element->push_column("total:", te_command("cat=$convert.kb=$p.up_total=,\\ KB\\ ,$convert.kb=$p.down_total=,\\ KB"));
    element->set_column_width(element->column_width() + 1);
    - element->set_error_handler(new display::TextElementCString("No peer selected."));
    + element->set_error_handler(new display::TextElementCString("no peer selected."));
    return element;
    enjoy !!

    a screenshot !!

  • Complete iPhoto event of daughter's prom gone.  Happened during iPhone 3 synch to mac air. No mojo, no weird key strokes, just another ordinary sync.  Event gone.  Apple no resolution.

    Complete iPhoto event of daughter's prom gone.  Happened during iPhone 3 synch to mac air. No mojo, no weird key strokes, just another ordinary sync.  Event gone.  Apple no resolution.

    With the amount of information you've provided it's impossible to offer a potential solution.  We can't see your computer so we need to know the details of your problem and setup, i.e.:
    what version of iPhoto are you using?
    what system version are you running?
    were the prom pictures on the iPhone 3 to begin with?
    what fixes have you tried?
    where is your library located?
    did you apply any updates or upgrades just prior to the problem occurring?
    are you running a "managed" or "referenced" library?
    what type of Mac?
    how much free space on your boot drive?
    OT

  • Is mx4j-admb.jar required if using another JMX implementation?

    In Appendix F, the documentation states that neither mx4j-jmx.jar nor
    mx4j-tools.jar are required if using another JMX implementation. However,
    I'm wondering if mx4j-admb.jar also is not required if using another JMX
    implementation. Could someone clarify this?
    Thanks.
    ;ted

    Hi Ted,
    It depends on what version of Kodo you're using. Older versions (pre
    Kodo 3.2.0) do still require the mx4j-admb.jar. Newer than 3.2.0 do not
    require any mx4j-* jars to work with other JMX implementations.
    Thanks,
    Greg
    Ted M. Young wrote:
    In Appendix F, the documentation states that neither mx4j-jmx.jar nor
    mx4j-tools.jar are required if using another JMX implementation. However,
    I'm wondering if mx4j-admb.jar also is not required if using another JMX
    implementation. Could someone clarify this?
    Thanks.
    ;ted

  • TS1420 I have purchased a song. Just another day by Jon secada and it won't play

    I Purchased Jon secada ..just another day and it won't play.

    Delete it, and redownload it through past purchases. http://support.apple.com/kb/ht2519

  • Just Another insert language here Hacker,

    This is fun! Here is a chance to showoff your skills. Of course you can choose whatever language you want.
    Just another Perl hacker, or JAPH, typically refers to a Perl program which prints "Just another Perl hacker," (the comma is canonical  but is occasionally omitted). Short JAPH programs are often used as signatures in online forums, or as T-shirt designs. The phrase or acronym is also occasionally used (without code) for a signature.
    JAPH programs are classically done using extremely obfuscated methods, in the spirit of the Obfuscated C Contest. More recently, as the phenomenon has become so well known, the phrase is sometimes used in ordinary examples (without obfuscation). Even more recently the P of JAPH can also stand for Perl 6, Parrot or Pugs.
    Starting easy...
    Perl:
    $c='python';$_=`printf hack`;$_=~s;ck;;;;$c=~s%^(?!\x68)(.)(?2)(?1)(.)(?1)(?2)(?<!.{4}h)$%$2%;print j.substr($_,1),p,$c.','
    Let's go obfuscating!

    Wow, way to completely miss the point guys...
    linas wrote:
    It's an interesting code, cmtptr, since it seems to expose a bug in strace.
    Stracing it shows:
    stat(NULL, Just another ASM hacker,
    NULL) = 25
    write(0, NULL, 25 <unfinished ... exit status 0>
    The string  "Just another ASM hacker,\n" is 4A 75 73 74 20 61 6E 6F 74 68 65 72 20 41 53 4D 20 68 61 63 6B 65 72 2C 0A
    which takes the last to lines of words.
    If we disassemble the first two lines (gdb ./a.out, disas /r _start):
    0x0000000000400078 <_start+0>: ba 19 00 00 00 mov $0x19,%edx
    0x000000000040007d <_start+5>: b9 98 00 40 00 mov $0x400098,%ecx
    0x0000000000400082 <_start+10>: bb 01 00 00 00 mov $0x1,%ebx
    0x0000000000400087 <_start+15>: b8 04 00 00 00 mov $0x4,%eax
    0x000000000040008c <_start+20>: cd 80 int $0x80
    0x000000000040008e <_start+22>: 31 db xor %ebx,%ebx
    0x0000000000400090 <_start+24>: b8 01 00 00 00 mov $0x1,%eax
    0x0000000000400095 <_start+29>: cd 80 int $0x80
    0x0000000000400097 <_start+31>: c3 retq
    0x0000000000400098 <begin of the text>
    That's a syscall 4 (__NR_write), with parameters  1 (write to stdout), 0x400098 (address if the text) and 25 (text length).
    Finally it calls syscall 1 with parameter 0, ie. _exit(0).
    That's using linux32 syscalls (<asm/unistd_32.h>), but with 64 bits syscalls (<asm/unistd_64.h>) syscall 4 is stat and syscall 1 is write. Which matches what strace tried to output.
    $ file a.out
    a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
    So the kernel manages to correctly run it even though it uses 32 bit syscalls (because it isn't using a x86-64 interface?) but strace doesn't notice it and shows the 64 bit functions.
    It took me a few reads and some experimenting/investigating before I understood what you were getting at, since I'm admittedly new to the 64-bit world.
    The code I wrote works because I'm invoking interrupt 0x80, while the 64-bit syscalls you (and strace) wanted to see are invoked using the "syscall" instruction (I suppose this is what you meant when you said it isn't using the x86-64 interface?).  I suppose my code should have been...
    [corey@sariss ~]$ cat asm.s
    .text
    .globl _start
    _start:
    .word 0xc748,0x19c2,0x0000,0x4800,0xc6c7,0x00a3,0x0040,0xc748
    .word 0x01c7,0x0000,0x4800,0xc0c7,0x0001,0x0000,0x050f,0x3148
    .word 0x48ff,0xc0c7,0x003c,0x0000,0x050f,0x4ac3,0x7375,0x2074
    .word 0x6e61,0x746f,0x6568,0x2072,0x5341,0x204d,0x6168,0x6b63
    .word 0x7265,0x0a2c
    [corey@sariss ~]$ as -o asm.o asm.s && ld asm.o
    [corey@sariss ~]$ ./a.out
    Just another ASM hacker,
    [corey@sariss ~]$ strace ./a.out
    execve("./a.out", ["./a.out"], [/* 46 vars */]) = 0
    write(1, "Just another ASM hacker,\n", 25Just another ASM hacker,
    ) = 25
    _exit(0) = ?
    [corey@sariss ~]$
    Thanks for pointing that out.  You caused me to learn something!
    And you're right, that does appear to be a bug in strace!
    Last edited by cmtptr (2010-03-08 01:05:29)

  • Another ComboBox implementation, #1

    I'd like to propose my implementation of ComboBoxControl to those
    who need to show textual/meaningful representation of somehow
    coded
    database column. In my case, column contains reference to row
    identifier in another table. This is usual foreign-key
    constrained
    relation.
    Please don't try to use the control 'as is', because in
    goDataSource()
    method it contains code for my environment only (just comment
    it).
    Those who have experience in Oracle PowerObjects will find
    similar
    properties and methods with OPO's PopupList control. I think it
    was
    enough convinient.
    I'll be glad to get any suggestions to improve the code.
    (Sorry for size of the message - class is 17K long.)
    The following code shows how to use this class:
    MyComboBox cbxCounName = new MyComboBox();
    cbxCounName.set_DataSource(Res.A06_A1COUNT_SCHEMA+"."+Res.A06_A1C
    OUNT_TABLE);
    cbxCounName.set_Translation("ID AS \"ID\", NAME AS
    \"ITEM\"");
    cbxCounName.set_OrderBy("ORDER BY 2");
    cbxCounName.set_GoDataSrcClass("a06oltp.FrmA1Count");
    cbxCounName.set_GoDataSrcInParMode(MyComboBox.GO_BY_NAME);
    cbxCounName.set_Db( get_DbAccess() );
    cbxCounName.updateList();
    // The method myComboBox.setDataItemName() fires:
    // -> myComboBox._sourceControl.setText()
    // -> myComboBox._sourceControl_changedUpdate()
    // -> myComboBox.setSelectedById()
    // So, popup-lists for cbx must be initiated already.
    cbxCounName.setDataItemName( rowsetFullName+"/COUNID" );
    #2 follows >
    null

    Hi Sandy,
    I'm sorry but I think that these general question on the implementation is maybe a bit to complex to handle it in this forum. From my point of view I would recommend you to get in contact with an experienced consulting organisation which will help you to setup your system according to your requirements.
    Best regards,
    Christoph

  • HOW do we get you guys (and gals) to STOP CHANGING THE INTERFACE WITHOUT AN OFF SWITCH ???? A FEATURE WITHOUT AN OFF SWITCH IS JUST ANOTHER DEFECT !!!

    Every time I choose to, or am forced to, upgrade, there is at least one stupid / un-useful/ performance or usability killing change to the Interface.
    Make the product better or faster but STOP making Front End changes that cannot be undone, and also please document all front-end changes and how to set them back.
    Beta testers are NOT a good poll for customer assumption. I beta many programs and am always shocked and amused at just what other users think is "useful", but i NEVER would suggest a front-end change without an 'OFF SWITCH" or "Choice-seletion" - that way, everyone is happy.
    I.e
    1 - New download window just sucks. I don't need to see History, the left waste-of-space window, nor the waste of space that comes from NOT having a 1-lin per download display
    2 - Who was the brain surgeon who decided that no one wants menus, and then did not document it - we all had to find out in web searches just what key under about:config turns off that stupid button
    3 - Tools/Options .. WHERE did all the OPTIONS GO ?? There used to be pages for each tab ?
    Note - this is being sent from an XP system - but the same stupid things happen on my Win7 and Linux systems

    edmeister
    I thought this was a gateway to the programmers and did not mean to deliver my scorn and distaste to you.
    no offense, but your suggestions, all of them fall into the "just accept it and move on" category - which is just NOT acceptable to me.
    .. I just ran into another "improvement" in 21.0 that has my teeth on edge .. and then the automatic update-notifier, if it was aware, would wonder why I strenuously refuse to upgrade .. - Every time I upgrade, something stupid is added or something useful is removed, and the only 'official' answers are to use a 3rd party add on or just 'accept it', or spend time, a LOT of time, decompiling and recompiling old FF code and adding it back into the current version to regain the Front end I want ... which is VERY time consuming.
    How does one speak to, talk to, contact, the actual programmers or Product managers of this once-wonderful tool that is now running dead last behind Opera, Chrome and Safari (which is two years old and still better than version 21).
    ....I just restored my original downloads window, menus AND behavior but it took a week. I sent the message that you replied to when I was just plain stuck in rebuild, with no idea what was wrong. Took my son to notice an extra paren and comma ...
    PLEASE tell me how to speak to, email with or at least contact, the actual programmers or Product managers ..
    thank you

  • Just another wish list for X2xx

    Dear Lenovo team,
    since two years I am a proud possessor of a X220i (sadly I could not afford better back then). Since then I am actually quite enthusiastic regarding your products - or rather brand - using every chance for telling my friends to buy Thinkpads.
    As a student, I think the X2xx-line is the best to get, since it has the ideal size and weight for carrying it around all day - literally, from one class to the next, not just from home to the workplace - while retaining a great deal of usablility and ergonomics (i.e. the x1 does not feel right while using it, I actually like how my palm rests exactly on the downcurve from "the Bento legacy" as I call the new lid design). Not too small or too big. Yes 14" is too big. Just the best thing for university.
    Now having said all that, there is still things I wish to see for the next refresh of the X2xx-line:
    1. Make the IPS panel available to all processor options. There is just no excuse for such a bad TN. (I will be able to afford a better processor - and thus IPS - next time, but it's sad for all the others who have to pay 250 more to even unlock the option for IPS) Also, could you find more screenspace within the existing size of the notebook?
    2. Add Thunderbolt. Power plus 2 connectors, all at the very left side on the back. (I won't upgrade until X2xx has at least one port. Sorry.)
    3. Remove the following things entirely:
    - the HDD cage (instead make it possible to have a mSSD additionally to WWAN, or two while you are at it)
    - the LAN connection
    - the VGA and Displayport connection
    - the analog jack
    - the card reader (is btw. a weakspot for palmrest)
    - the express card reader (see above)
    4. Instead of the above utilise the daisy-chain technology of Thunderbolt to design smart adapter solutions. See end of post.
    5. Make the following stuff optional when ordering:
    - webcam (in some workspaces webcams are stricly forbidden)
    - fingerprint-reader (there are people who do not trust those, why should they pay for it?)
    - touchpad - yes I hate the touchpad, it is turned off yet still annoys the hell out of me - it is too small anyway
    - RAM
    - mSSD (also applies to RAM: people might want to choose what exactly they get)
    ... all with respective bezels if not ordered. RAM and mSSD slots need to be accessible without disassembly.
    6. Add buttons to the ThinkVantage bar:
    - wireless toggle (the design should basicly be the same, make sure it is not to be operated sideways but forward and backward)
    - the ThinkLight toggle (I somehow always have papers in my left when trying to operate it)
    - the screen brightness buttons (same, never enough hands to operate)
    - the media buttons (forward, backward, play and pause)
    7. Utilise both sides of the notebook for a more elaborate cooling solution, keep the back free of venting instead. Even with 3 USB connections on both sides under the palmrest there is at least double the space on the left and the same space on the right. Powerful cooling also may add better processor options?
    8. Utilise the additional space in the back for a bigger battery. I suspect with the right placement of the Thunderbolt connectors, there should now be enough space for 1 additional cell (or two for the bigger one).
    9. Make all ports coverable with a cover that is attached to the notebook somehow.
    I realise that implementing all of my suggestions would make it much of a redisgn instead of a refresh, but I do believe it would benefit this line tremendously making it an even more powerful, lightweight, ergonomic and most of all adaptable plattform than it already is, even if removing many different ports seems to make it less so on first glance.
    I personally would even go as far as removing the USB ports also, but then again it might be a bit silly to require an adapter for the industry's most widespread connection standard.
    I can foresee that many will disagree with me on removing all these different connection possibilities and I would not suggest doing it, if we would loose the option to connect to such devices. Smart adapter solutions in combination with the daisy-chain technology within Thunderbolt will prevent actually loosing connectivity with LAN, VGA, Audio and Displayport, while retaining USB ports keeps solutions to read storage devices and most expresscard usability readily available to the user in a much more adaptable way. And the rest is covered by Thunderbolt itself anyway.
    The viablility of removing the intefaces which I suggest, just depends on which adapter Lenovo ships the notebook with (some sort of display adapter and LAN adapter would have to be included, I guess) and what kind of pricing the rest of the adapters (and cables) will they be able to offer the customer and how those adapters are designed.
    For example I would not want to have additional cable clutter on my desk by daisychaining my audio, LAN and VGA adapter with cables between each. On the other hand I prefer if the adapter I buy does not have unnessessary functionality. This is why I imagine some sort of push-fit system that creates a nice and clean strip when plugged together and has one piece to close off the end. Of course daisy-chaining a high-resolution display and an external raid for videocapturing purposes is a bad idea, but the users that do such sophisticated things will know about that sort of thing anyway.
    Well, I better stop here before I go on and on. Please tell me what you think.

    1. 7-row keyboard layout (at least optional), including mechanical trackpoint buttons
    2. 16:10 or 4:3 or 3:2 display aspect ratio
    3. IPS or PLS display with at least 900 vertical pixels
    4. Thinner display bezel
    5. 4G/LTE WWAN option for European region (AirPrime MC7710 etc.)
    6. DisplayPort (no HDMI)
    7. Better cooling (at least as good as X31 was) and silent fan
    8. LAN connector on the back side
    Do not remove LAN
    Do not remove USB ports
    Do not remove DisplayPort
    Do not remove audio jack
    Get rid of VGA
    Make webcam, fingerprint reader and touchpad optional (i.e. 7-row keyboard layout without touchpad or 6-row with touchpad).

  • Just another ANNOYING problem with internet

    Hello everybody !
    So here we go, I am another user that has problems viewing web pages. To make a long story short I would like to add that though I am not a system administrator by any means, I am an experienced user. So if I say for example "I did nothing but the program stoped working correctly" DOES realy mean that I did nothing at all (therefore it doesnt mean that I occasionaly pushed few buttons while viewing complex settings and then forgot about it).
    PROBLEM : Sometimes (randomly) I am not able to view web pages. The problem may disappear suddenly, but otherwise I have to reboot computer to solve the problem (untill it happens again. And it WILL happen withing ~30min...4 hours, so several times a day)
    I USE : Macbook air 2012 (i7 8gb if it does matter). MacOS 10.8.2.   Everything is up to date, I frequently check the system for updates.
    WHAT HAVE I TRIED TO DO TO SOLVE THE PROBLEM :
    1) I have changed the wireless channel so that nobody around uses the same one
    2) I have changed router and internet provider (well I did not change them, I just use my mba at office, at home and somewhere else. Each place has its own router (d-link at work and apple airport express at home) and its own provider)
    3) I have changed mtu (maximum transmission unit) to 1453 from 1500 by default (System preferences -> network -> advanced )
    4) I have tried different public DNS servers
    5) I did try to request DHCP once again when the problem appears
    6) The last but not least - I have tried different browsers (safari, opera, firefox)
    The only thing that works yet - reboot.
    MY STUPID THOUGHTS ON THAT :
    - This is not a router problem, because I have already tried about 4-5 different models, including D-link, Airport and Asus
    - This is not an internet connection problem generaly (I am able to use skype, teamviewer etc. while the problem occurs)
    - This is not a macbook problem, because if I boot Windows (via bootcamp), it seems like I do not face that problem at all
    As a result : this is a MacOS problem, and I have to look for fix inside it.
    SOME ADDITIONAL INFO :
    It realy happens suddenly: I am browsing webpages, everything is ok. Then bum - and the next page starts to load SLOWLY. Few more pages load SLOWLY (if there are pictures, I find "?" instead of them). And then pages stop loading at some moment. If I try to refresh the page, it might help sometimes. But then, finaly, I just lose opportunity to load web pages by any means.  
    The problem may go away for some time, but it will return for sure. Rebooting every time is incomfortable for me, since I have a lot of stuff opened and rearranged between different spaces (desktops).
    Thank you for your time in advance guys ! Hope some of you have already faced the problem and have found the solution.
    Thank you for your time guys.

    Please read this whole message before doing anything.
    This procedure is a diagnostic test. It won’t solve your problem. Don’t be disappointed when you find that nothing has changed after you complete it.
    Third-party system modifications are a common cause of usability problems. By a “system modification,” I mean software that affects the operation of other software — potentially for the worse. The following procedure will help identify which such modifications you've installed. Don’t be alarmed by the complexity of these instructions — they’re easy to carry out and won’t change anything on your Mac. 
    These steps are to be taken while booted in “normal” mode, not in safe mode. If you’re now running in safe mode, reboot as usual before continuing. 
    Below are instructions to enter some UNIX shell commands. The commands are harmless, but they must be entered exactly as given in order to work. If you have doubts about the safety of the procedure suggested here, search this site for other discussions in which it’s been followed without any report of ill effects. 
    Some of the commands will line-wrap or scroll in your browser, but each one is really just a single line, all of which must be selected. You can accomplish this easily by triple-clicking anywhere in the line. The whole line will highlight, and you can then either copy or drag it. The headings “Step 1” and so on are not part of the commands. 
    Note: If you have more than one user account, Step 2 must be taken as an administrator. Ordinarily that would be the user created automatically when you booted the system for the first time. The other steps should be taken as the user who has the problem, if different. Most personal Macs have only one user, and in that case this paragraph doesn’t apply. 
    Launch the Terminal application in any of the following ways: 
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.) 
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens. 
    ☞ Open LaunchPad. Click Utilities, then Terminal in the icon grid. 
    When you launch Terminal, a text window will open with a line already in it, ending either in a dollar sign (“$”) or a percent sign (“%”). If you get the percent sign, enter “sh” and press return. You should then get a new line ending in a dollar sign. 
    Step 1 
    Copy or drag — do not type — the line below into the Terminal window, then press return:
    kextstat -kl | awk '!/com\.apple/{printf "%s %s\n", $6, $7}' 
    Post the lines of output (if any) that appear below what you just entered (the text, please, not a screenshot.) You can omit the final line ending in “$”. 
    Step 2 
    Repeat with this line:
    sudo launchctl list | sed 1d | awk '!/0x|com\.(apple|openssh|vix)|edu\.mit|org\.(amavis|apache|cups|isc|ntp|postfix|x)/{print $3}' 
    This time, you'll be prompted for your login password, which won't be displayed when you type it. You may get a one-time warning not to screw up. You don't need to post the warning. 
    Note: If you don’t have a login password, you’ll need to set one before taking this step. If that’s not possible, skip to the next step. 
    Step 3
    launchctl list | sed 1d | awk '!/0x|com\.apple|edu\.mit|org\.(x|openbsd)/{print $3}' 
    Step 4
    ls -1A /e*/mach* {,/}L*/{Ad,Compon,Ex,Fram,In,Keyb,La,Mail/Bu,P*P,Priv,Qu,Scripti,Servi,Spo,Sta}* L*/Fonts 2> /dev/null  
    Important: If you formerly synchronized with a MobileMe account, your me.com email address may appear in the output of the above command. If so, anonymize it before posting. 
    Step 5
    osascript -e 'tell application "System Events" to get name of every login item' 2> /dev/null 
    Remember, steps 1-5 are all drag-and-drop or copy-and-paste, whichever you prefer — no typing, except your password. Also remember to post the output. 
    You can then quit Terminal.

  • Verizon Smart Rewards-Don't fall for it, it's just another way for them to....

    let other companies view your usage and demographic information. I have over 12,000 points which are virtually useless because all of the offers shown are for what basically amounts to coupons for a percentage off.  30% off Shoes, a Kate Spade bag, regularly $1 billion dollars, save $1 million, Buy a $100 gift card for $90, etc. What kind of Smart Reward is that? To me a smart reward for my YEARS of loyal patronage would be $1 for every point earned redeemable in a gift card like my credit card company does. In my eyes Verizon owes me a $120 gift card for something fabulous. These Smart Rewards are really  nothing more than a slap in the face, while you allow another company to steal my info. And how much did they pay YOU for the privilege???? 

    If they send you an email promising "Rewards" and entice you into sharing your private information with a third party to get them then you're darned right you deserve something for free. Especially when they tell you , wow, you have 12K points look at all the free stuff you can get and show you pictures of fabulous items. Bottom line is Verizon sucks but not any more or less than any other big company sucks when it comes to stealing your info and handing it out. I was just ****** because I thought for one small moment that, maybe, they really did value my years of patronage. Learned a valuable lesson and didn't want anyone else to have to feel stupid like I did when I fell for their empty promises.

  • EJB? JavaBean? Just another class???

    Hi all,
    In our application we are using Jboss as an application server becouse we use a web server and JMS. Jboss also starts the server side of our application. When we developed the server nobody knew nothing about EJBs or JavaBeans so we wrote the code without any other specification than the OO that we had learned in a course paid by the company. Then, we made a *.jar with the server and we made jboss to start it whenever jboss where stated.
    Now, we've developed one component that will run into the server or, in a future (most sure it will never happen) in another machine. This new component, depending on the money the client pays, will help the server to make more accurate calculation, so there will be a better control over what the client is controlling.
    We have just developed this new component without think on EJB or JavaBean. One week ago our boss reed something about EJB and JavaBeans an he wants us to make this new component an EJB or JavaBean or whatever, if the name contains the word 'bean', becouse he says that the jboss can contain javabeans in a container?
    None of us knows nothing about ejbs, and we are reading a lot about theories, and specifications, but nowhere it says what we must do with our new component to convert it into an ejb or a javabean.
    Please we need some light, show us the light. Can someone explain us something about this, what will be the best solution, or where to find a really usefull web talking about ejb and javabean.
    Thank you very very much.
    P.D. What is the difference between EJB and a Javabean?

    Buy a good book about J2EE (Java 2 Enterprise Edition). Or start by looking at the J2EE home page: http://java.sun.com/products/j2ee
    Jesper

  • T500 - JUST ANOTHER BLUE SCREEN

    I've been getting the kiss of death blue screen crash ever since I bought the laptop in January 2009.  ONCE A WEEK average.  My hardware provider says it can't be true because he tested it, that it must be a software issue.  IT'S NOT.  I've been on the phone with tech support in Atlanta, to no avail.  I just had to reinstall and even buy some new upgraded software after my last crash that wiped everything off the hard drive.  My hardware provider wiped off Vista and put on XP.  Since everything has been put back on, I've had 3 crashes in 3 days, and am presently doing ANOTHER hard drive Full System Test.  I make a living on this computer, and have lost several thousand dollars in the last 2 weeks.  I paid for the best-of-the-best and all accessories, and can't afford to buy a different laptop.  SOMEBODY HELP, PLEASE.

    I had a somewhat similar problem with my T500. It was due to a Windows update called "SQL Server Express SP3". What I did was that I restored the systerm to a previous point and skipped to install this update. Its working fine since then.
    --FNajmi
    ThinkPad T500, 4GB DDR3, ATI Radeon, 250GB HDD, DVD Writer

  • Not just another file sharing thread......

    Running a forum search gives me a plethora of file sharing threads. Most of these threads are a one answer type of question or a simple "Preferences>Sharing>File Sharing type of answer. I am no expert here, I learn something every time I visit, but I know the basics of file sharing after nearly 20 years of using macs. I have a network set up at my business and home that the computers share and am perfectly comfortable with the basics. I would really like a discussion about more creative options available to expand what I am currently using.
    We have four macbook pros here. Two are personal only and the other two are business/personal. The two business MBP's are the ones we use the most, they are the primary machines which go from work to home. Right now they share files but up until now have really been set up for their own workstations for 2 different jobs. Now, we are starting to blend a little bit more of our work and we have had the need to share more files with the 2 computers. It's gotten to a point where basic file sharing isn't enough. The problem I am having is that both computers aren't always within airport range of each other, and both computers aren't always on or awake. So, it's become annoying to have to make sure the machine with the files I need is awake and nearby. So, we have recently started using dropbox to share files that way. The only issue with that is that many of our files are sensitive in nature and security is a bit of a risk. So, I am encrypting volumes with PGP and sharing the encrypted volumes via dropbox. So far it's not been an issue with having the same files open at the same time on both computers to avoid conflicts, I think we'll be ok for awhile. But as this data collection grows, I think it will become impractical. The thing I really like about using dropbox is that both computers don't need to be running at the same time since the files are stored locally and the changes are synced online. Even if I am traveling with one computer, I will usually have an internet connection so the files will update on my partner's computer when I make changes. This is the ultimate in portability and syncing. But like I said, it may become impractical when we put 30-40 Gigs of data up and we can't so easily keep track of what's open on which computer.
    So, I would like to know what others do at work or home to share necessary files between multiple computers, other than typical OS X file sharing techniques. I know some applications have a checkout type of feature which might help for certain types of files, but I really want a simple universal setup that my partners and employees can learn without having to think about what type of file they are working with. I have quite a bit of server space I can use for storage of files online if it would help, but syncing would be an issue.
    Dropbox may just be the best option for me to share and sync from multiple locations. It makes sense! I just hope some users here have some other recommendations that might work!

    Allan Eckert wrote:
    As to the PGP questions, as long as you have a file from the DropBox attached and are doing updates they are being sent to the copy on the DropBox. The updates are not all held until you unmount it.
    Actually, I'm seeing otherwise. I just ran a test to be sure. I held a pgp disk open for about 5 minutes while copying files to and removing from it. I watched the dropbox folder and the upload activity the whole time and saw no activity or change. The moment I ejected the volume, network activity jumped up and the folder icon in my dropbox turned from synced to syncing in progress. It actually seems to work quite well. The problem I have with it is that if I need to use large files, it will take a long time to upload, because doesn't the whole encrypted volume need to be uploaded again for any minor changes? I haven't tested anything larger than about 20MB, so it's hard to tell.
    The drop copy application might actually be quite useful if I were running a file server. I would certainly need an easy to use interface for the actual sharing of the files. If I do go that route, I would prefer for the ability to be able to lock files. As Allan said, drop copy doesn't have that feature, unfortunately.
    So, there really isn't a well known solution for this type of application, huh? I may just have to reorganize my plan and stick to removable media for the shared data. If there is only one copy, it can't get mixed up. The only issue I have is when I'm not on premises, how do I share the data with the office? I suppose I will just have to have a better handle on what I need and make sure to have it with me and use dropbox or ftp to upload the files back and forth from office to user.
    I just did a test with a decent size PGP virtual disk (125MB) I added one small 3MB jpg file to it and it did an incremental update to sync the file very quickly. I don't know how it's able to do it, but it's doing it. I would have thought it would have to update the whole disk every time, but I guess not. Maybe PGP and dropbox is a better solution that I ever imagined it to be.
    Message was edited by: sterlingfive
    Message was edited by: sterlingfive

  • Just another question...

    Endangering that you ignore further posts of mine :-)
    For several days I'm trying to track down a bug in our application.
    However, I don't really have a clue.
    Now, I'm going to present
    you the facts and you tell me, where my problem is (at least, this is the plan ;-)
    Our application is multi-threaded (i.e. multi-processed) and uses the
    dbxml perl bindings, aka the sleepycat modules. I perform a stress test
    that adds documents to a container that contains about 80000 documents (each ~500 nodes)
    and updates this last document several, i.e. ~30, times. (Besides that there are
    other containers affected, but that should not matter) As an aside: the documents that
    are inserted don't differ a lot.
    After some time of running (a few hundred insertions) I get (out of the blue) the following exception:
    Error: Dbc::close: DB_RUNRECOVERY: Fatal error, run database recovery
    At the same time, the berkeley error log shows the following message:
    unable to create/retrieve page 183857
    PANIC: DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock
    PANIC: fatal region error detected; run recovery
    These "unable to create/retrieve" messages seem to be an invariant for this kind
    of error. Have these messages a "special" meaning or are they rather general?
    A db_verify -N yields the following:
    db_verify: Page 183855: unreferenced page
    db_verify: Page 183856: unreferenced page
    db_verify: metadata.dbxml: DB_VERIFY_BAD: Database verification failed
    Well, at this point I am quite clueless what to do?!
    Regards,
    Michael

    Hello John,
    thanks for your response. It seems that we have
    found the source of our problem. And you are right
    to suspect deadlock handling.
    On some conditions we have failed to properly abort
    a transaction after a deadlock had occured. The other
    (not aborted) process in turn crashed with RUN_RECOVERY.
    Can this yield to the "unable to create/retrieve" messages
    in the error log?
    Just out of interest: What exactly makes the non-aborted
    process crash?
    a) Is it sufficient to have an db_deadlock reaped locker linger on the page (i.e. not aborting the transaction) or
    b) Must the reaped process actively work on the page (reading, writing, committing, etc)
    "a)" cannot really be the case since this would obviously yield to race conditions
    where the reaped process does not quickly enough abort its transaction?!
    Regards,
    Michael

Maybe you are looking for