Shared posts

13 Nov 21:08

Consoling the junior after their first week

by sharhalakis

image

by Radu

13 Nov 21:08

Senior checking new framework

by sharhalakis

by pbaranski

13 Nov 21:08

Senior in action

by sharhalakis

image

by wrona

13 Nov 21:08

Friday 3.55 pm

by sharhalakis

by vorDa

13 Nov 21:08

Putting on the headphones and diving into a bugfix

by sharhalakis

by uaiHebert

13 Nov 21:08

What happens when I am allowed to rewrite code from scratch

by sharhalakis

by @osnipassos

13 Nov 21:08

The deployment pipeline

by sharhalakis

by Julik and Aaron

13 Nov 21:08

Meetings with PMs

by sharhalakis

by imaginarythomas

13 Nov 21:08

Unnecessary automations

by sharhalakis

by Waze

13 Nov 21:02

Life of a HTTP request, as seen by my toy web server

Life of a HTTP request, as seen by my toy web server

When learning a new programming language, I tend to write two things with it: a language interpreter (usually a FORTH-like language or Brainfuck if I’m feeling lazy), and a HTTP server. Sometimes, just as a challenge or a way to quench my boredom, I do this even though I’ve been working with a particular language for some time, as is the case with C.

None of these projects I’ve written over the years have been as complex as Lwan ended up being: most of them were nothing but weekend hacks and were never able to hold my attention for more than a few dozen hours.

It’s to be expected, then, that I might have a thing or two to say about it. In fact, I’ve been doing this in homeopathic doses over the almost two years since I’ve started the project. Never actually connected all the dots, leaving out important details.

This article is an attempt to describe, from the perspective of Lwan, the life of a HTTP request — from the socket being accepted to the response being sent — and explaining details and reasoning behind the implementation.

Creating the listening socket & accepting connections

There’s nothing really special here: sockets are either created using the standard POSIX stuff, or are passed down from systemd. In either case, TCP Fastopen and Quickack are enabled, in addition to socket lingering. The socket is left in its default, blocking mode. The listen() backlog is the maximum allowed by the system.

static int
_get_backlog_size(void)
{
#ifdef SOMAXCONN
    int backlog = SOMAXCONN;
#else
    int backlog = 128;
#endif
    FILE *somaxconn;

    somaxconn = fopen("/proc/sys/net/core/somaxconn", "r");
    if (somaxconn) {
        int tmp;
        if (fscanf(somaxconn, "%d", &tmp) == 1)
            backlog = tmp;
        fclose(somaxconn);
    }

    return backlog;
}

It’s a blocking file descriptor since the main thread (responsible for accepting all the sockets and scheduling clients) blocks on a call to accept4() instead of something like Epoll. This accept() variant is Linux-only and, among other things, lets one specify flags in sockets without requiring an additional round trip to the kernel; the only flag that interests Lwan is SOCK_NONBLOCK.

void
lwan_main_loop(lwan_t *l)
{
    if (setjmp(cleanup_jmp_buf))
        return;

    signal(SIGINT, _signal_handler);

    lwan_status_info("Ready to serve");

    for (;;) {
        int client_fd = accept4(l->main_socket, NULL, NULL,
                                SOCK_NONBLOCK);
        if (UNLIKELY(client_fd < 0)) {
            lwan_status_perror("accept");
            continue;
        }

        _schedule_client(l, client_fd);
    }
}

File descriptor limits are raised to the maximum allowed by system settings — at which time, Lwan pre-allocates an array of structures to hold connection state for all possible file descriptors.

Scheduling connection

In order to multiplex connections, Lwan spawns one thread per logical CPU, and uses Epoll to determine which socket is ready to be written to or read from. Once a connection is scheduled to one of these threads, it stays there until it is explicitly closed or a timeout occurs.

All threads share the preallocated connection array, and there are no explicit locks. The index to this array is the connection file descriptor, which makes lookup very quick. This exploits the notion that file descriptors are always allocated from the lowest possible number.

struct lwan_connection_t_ {
    /* This structure is exactly 32-bytes on x86-64. If it is
     * changed, make sure the scheduler (lwan.c) is updated as
     * well. */
    lwan_connection_flags_t flags;
    unsigned int time_to_die; /* In seconds since DQ epoch */
    coro_t *coro;
    lwan_thread_t *thread;
    int prev, next;           /* For death queue */
};

Since this structure is quite small, this leads to a form of implicit lock called false sharing, which is solved with a scheduler that is aware of that problem and groups two connection structures per cache line. It’s simpler than it sounds:

int thread = ((fd - 1) / 2) % n_threads;

A round robin scheduler is used on other architectures.

An interesting curiosity about the connection structure is that it doesn’t store the file descriptor: pointer arithmetic is performed to obtain it, as the the base address for the connection array is known.

ALWAYS_INLINE int
lwan_connection_get_fd(lwan_connection_t *conn)
{
    return (int)(ptrdiff_t)(conn - conn->thread->lwan->conns);
}

After a thread has been chosen by the scheduler, the file descriptor number is sent to a Unix domain socket created with socketpair() to that particular thread’s Epoll. This part used to use epoll_ctl() directly — which, although threadsafe, had a problem: epoll_wait() will never timeout on a socket if nothing was read from it previously. By writing to that socketpair, Epoll awakens, the file descriptor is added to it, and that thread’s death queue can handle the timeout by itself.

The sole purpose of each thread is to react to Epoll events, such as:

  • Timeouts (in which case the death queue iterates, potentially terminating connections);
  • Epoll errors (in which case the thread finishes gracefully);
  • Readiness events (can read, can write);
  • Connection hung up.

Epoll events are used as signals to create, destroy, resume, and reset coroutines: there’s one for each connection, and they’re used both as lightweight threads and as resource management facilities.

Coroutines

Coroutines provides a reasonably simple model for asynchronous I/O handling that’s less convoluted than the dreaded callback idiom prevalent in C. They also require a lot less stack space than a thread and their creation is pretty efficient: essentially just a call to malloc().

coro_t *
coro_new(coro_switcher_t *switcher,
         coro_function_t function,
         void *data)
{
    coro_t *coro = malloc(sizeof(*coro) + CORO_STACK_MIN);
    if (!coro)
        return NULL;

    coro->switcher = switcher;
    coro->defer = NULL;

    /* coro_reset() is just a few assignments on x86-64 */
    coro_reset(coro, function, data);

#if !defined(NDEBUG) && defined(USE_VALGRIND)
    char *stack = (char *)(coro + 1);
    coro->vg_stack_id = VALGRIND_STACK_REGISTER(stack,
                                   stack + CORO_STACK_MIN);
#endif

    return coro;
}

Request handlers can be written using an API that’s completely synchronous on the surface but behind the curtains, I/O happens in the background (client sockets are non-blocking) and control is given to the next coroutine as commanded by each thread’s loop.

Execution resumes where the coroutine left off. This saves a lot of code, not only making things easier to reason about, but also simplifying resource management by having a single cleanup point.

To provide a synchronous-looking API, Lwan provides a few wrappers for common operations, such as writev() or sendfile(). Unlike the functions these wrap, they return no error:

  • On success, the same return code is returned;
  • Recoverable errors (such as EINTR) are handled by trying them again a few times before giving up;
  • When giving up, or on unrecoverable errors, coroutines are aborted.
int
lwan_openat(lwan_request_t *request,
            int dirfd, const char *pathname, int flags)
{
    for (int tries = max_failed_tries; tries; tries--) {
        int fd = openat(dirfd, pathname, flags);
        if (LIKELY(fd >= 0)) {
            /*
             * close() will be called as soon as the
             * coroutine ends
             */
            coro_defer(request->conn->coro, CORO_DEFER(close),
                       (void *)(intptr_t)fd);
            return fd;
        }

        switch (errno) {
        case EINTR:
        case EMFILE:
        case ENFILE:
        case ENOMEM:
            coro_yield(request->conn->coro,
                       CONN_CORO_MAY_RESUME);
            break;
        default:
            return -errno;
        }
    }

    return -ENFILE;
}

When a coroutine is destroyed, user-defined callbacks are executed. These include callbacks set by the wrapper functions, to close files, free memory, and perform many other cleanup tasks. This ensures resources are released regardless if the coroutine ended normally or an unrecoverable error has been detected.

coroutines

Diagram of main loop plus two coroutines

On supported architectures, coroutine context switching is almost as cheap as a function call. This is possible because hand-written assembly routines are used, which only performs the essential register exchange, as mandated by the ABI. There is still some work to do in order to speed up this; tricks used by libco, for instance, might be used in the future to reduce some of the overhead.

On every other architecture, swapcontext() is used and this usually incurs in saving and restoring the signal mask, in addition to swapping every register (including those not required by the calling convention); this might change to setjmp() in the future to avoid at least the two system calls.

Another use for coroutines in Lwan is inside the Mustache templating engine, described in more depth below.

Reading requests

The loop within each I/O thread is quite crude.

Essentially, a coroutine will only be resumed for reading once per request: once it yields, Epoll will only be interested in write events. Because of this, reading a request uses a purpose-built read() wrapper that tricks the scheduler to still be interested in read events, unless the request has been fully received (by ending with the “␍␊␍␊” separator).

As soon as the whole request has been received, it is then parsed and acted upon.

Parsing request

Request parsing in Lwan is quite efficient: there are no copies, no memory allocations from the heap. The buffer is modified in place by slicing and storing pointers to stuff the server might be interested in. Parsing of HTTP request headers is delayed until needed (and they might not be needed).

struct lwan_request_parse_t_ {
    lwan_value_t buffer;            /* The whole buffer */
    lwan_value_t query_string;      /* Stuff after URLs ? */
    lwan_value_t if_modified_since; /* If-Modified-Since: */
    lwan_value_t range;             /* Range: */
    lwan_value_t accept_encoding;   /* Accept-Encoding: */
    lwan_value_t fragment;          /* Stuff after URLs # */
    lwan_value_t content_length;    /* Content-Length: */
    lwan_value_t post_data;         /* POST data */
    lwan_value_t content_type;      /* Content-Type: */
    lwan_value_t authorization;     /* Authorization: */
    char connection;                /* k=keep-alive, c=close */
};

Among other things, one that often receives comments is how headers are parsed. Two tricks are involved: avoiding spilling/filling registers to compare strings with strncmp(), and applying a heuristic to avoid reading (and comparing) more than necessary. Both tricks are intertwined into a “string prefix switch”:

  • Four bytes are read from memory, and are cast to a 32-bit integer pointer;
  • That pointer is then dereferenced;
  • A standard switch statement is used to perform cheap comparisons on a 32-bit integer;
  • When a header prefix is matched, a simple heuristic of finding the separating colon and space character where they’re supposed to be is used.
    • This might give false positives, although that’s very unlikely in practice.

Once the request has been parsed, it is time to look up what is going to handle it.

Looking up handler

A prefix tree is used to look up handlers. It is a modified trie data structure that has only eight pointers per node, so that on x86-64, each node fills one cache line exactly. This is achieved by hashing each character used to build up a node by taking the 3 least significant bits.

struct lwan_trie_node_t_ {
    lwan_trie_node_t *next[8];
    lwan_trie_leaf_t *leaf;
    int ref_count;
};

The canonical and naïve alternative to the hashed trie is having 256 pointers per node, which puts too much virtual memory pressure: the approach used in Lwan is a good compromise between keeping this pressure low and implementation complexity.

Another alternative (which might be considered in the future) is to reduce the amount of nodes by coalescing common prefixes; this significantly increases implementation complexity, though, but combined with the string switch trick, this might yield a good performance boost.

Yet another technique investigated was to generate machine code to perform lookup: essentially turning a data structure into executable code. The idea works but the instruction cache pressure isn’t worth the trouble. I’m still partial to this solution, though, so I might revisit it later: Varnish does something remotely similar with VCL and it seems to work, so this deserves a little bit more research.

After a handler is found, a second round of parsing might happen. Each handler contains a set of flags that signal if headers (which were sliced in the request parsing stage) should be actually parsed. This include headers such as Range, Accept-Encoding, If-Modified-Since, and authorization stuff. Handlers that do not require parsing these headers will not trigger potentially expensive string crunching.

typedef enum {
    HANDLER_PARSE_QUERY_STRING = 1<<0,
    HANDLER_PARSE_IF_MODIFIED_SINCE = 1<<1,
    HANDLER_PARSE_RANGE = 1<<2,
    HANDLER_PARSE_ACCEPT_ENCODING = 1<<3,
    HANDLER_PARSE_POST_DATA = 1<<4,
    HANDLER_MUST_AUTHORIZE = 1<<5,
    HANDLER_REMOVE_LEADING_SLASH = 1<<6,

    HANDLER_PARSE_MASK = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4
} lwan_handler_flags_t;

To reduce the amount of boilerplate necessary to declare a handler, there’s a shortcut that parses almost everything; these are the “request handlers”, such as the “Hello world handler” example shown below.

Modules, on the other hand, provide much more fine-grained control of how the request will be handled; an example is the static file serving feature, also discussed further down.

static const lwan_module_t serve_files = {
    .name = "serve_files",
    .init = serve_files_init,
    .init_from_hash = serve_files_init_from_hash,
    .shutdown = serve_files_shutdown,
    .handle = serve_files_handle_cb,
    .flags = HANDLER_REMOVE_LEADING_SLASH
        | HANDLER_PARSE_IF_MODIFIED_SINCE
        | HANDLER_PARSE_RANGE
        | HANDLER_PARSE_ACCEPT_ENCODING
};

Hello world handler

The simplest handler possible is a “Hello, World!“. This tests the raw read-parse-write capacity of Lwan, without requiring more system calls than absolutely necessary.

lwan_http_status_t
hello_world(lwan_request_t *request __attribute__((unused)),
            lwan_response_t *response,
            void *data __attribute__((unused)))
{
    static const char *hello_world = "Hello, world!";

    response->mime_type = "text/plain";
    strbuf_set_static(response->buffer, hello_world,
                      strlen(hello_world));

    return HTTP_OK;
}

These simple handlers will use whatever is inside their respective string buffers (which is an array that grows automatically when needed, with some bookkeeping attached). In the “Hello, World!” case, however, the string buffer acts merely as a pointer to some read-only string stored in the text section; this simplifies the interface a little bit, while avoiding string copies and unneeded heap allocations.

Chunked encoding and Server-sent events

Supported also is the Chunked Encoding. Using it is very simple: just set the response MIME Type, fill the string buffer, and call lwan_response_send_chunk(). From this point on, the response headers will be sent alongside the first chunk, the string buffer will be cleared, and the coroutine will yield. To send the next chunk, just fill the string buffer again and send another chunk, until your handler is complete.

lwan_http_status_t
test_chunked_encoding(lwan_request_t *request,
            lwan_response_t *response,
            void *data __attribute__((unused)))
{
    response->mime_type = "text/plain";

    strbuf_printf(response->buffer, "First chunk\n");
    lwan_response_send_chunk(request);

    for (int i = 0; i <= 10; i++) {
        strbuf_printf(response->buffer, "*Chunk #%d*\n", i);
        lwan_response_send_chunk(request);
    }

    strbuf_printf(response->buffer, "Last chunk\n");
    lwan_response_send_chunk(request);

    return HTTP_OK;
}

The same general idea is used by Server-sent events; however, one uses lwan_response_send_event(), and passes the event name as well.

lwan_http_status_t
test_server_sent_event(lwan_request_t *request,
            lwan_response_t *response,
            void *data __attribute__((unused)))
{
    for (int i = 0; i <= 10; i++) {
        strbuf_printf(response->buffer, "{n: %d}", i);
        lwan_response_send_event(request, "currval");
    }

    return HTTP_OK;
}

The implementation inside Lwan is as straightforward as it looks: coroutines saved the day.

File serving module

Since files can be served using the sendfile() system call, the kind of handlers used by Hello World can’t be used: responses are sent using writev() to send both response headers and contents in one kernel roundtrip. Because of this, there’s a different kind of handler that gives more control as to how the response is sent: the (for the lack of a better name) streaming handlers. Streaming handlers are expected to send the whole response themselves.

To convert a “normal” handler into a streaming handler is simple: just set a few pointers in the “normal” handler and return. With the exception of producing error responses automatically — streaming handlers function exactly the same as a “normal” handler that does not send the response headers automatically.

static lwan_http_status_t
serve_files_handle_cb(lwan_request_t *request,
                      lwan_response_t *response, void *data)
{
    lwan_http_status_t return_status = HTTP_NOT_FOUND;
    serve_files_priv_t *priv = data;
    struct cache_entry_t *ce;

    if (UNLIKELY(!priv)) {
        return_status = HTTP_INTERNAL_ERROR;
        goto fail;
    }

    ce = cache_coro_get_and_ref_entry(priv->cache,
                request->conn->coro, request->url.value);
    if (LIKELY(ce)) {
        file_cache_entry_t *fce = (file_cache_entry_t *)ce;
        response->mime_type = fce->mime_type;
        response->stream.callback = fce->funcs->serve;
        response->stream.data = ce;
        response->stream.priv = priv;

        return HTTP_OK;
    }

fail:
    response->stream.callback = NULL;
    return return_status;
}

To avoid having to obtain information about a file for every request, this information is cached for a few seconds. The caching mechanism itself is discussed in detail further down.

While caching file information, the file size is considered while picking the way to serve it. Files larger than 16KiB are served with sendfile() to allow zero (or fewer) copy transfers, and smaller files are mapped in memory using mmap().

static const cache_funcs_t *
_get_funcs(serve_files_priv_t *priv, const char *key,
           char *full_path, struct stat *st)
{
    char index_html_path_buf[PATH_MAX];
    char *index_html_path = index_html_path_buf;

    if (S_ISDIR(st->st_mode)) {
        /* It is a directory. It might be the root directory
         * (empty key), or something else.  In either case,
         * tack priv->index_html to the path.  */
        if (*key == '\0') {
            index_html_path = (char *)priv->index_html;
        } else {
            /* Redirect /path to /path/. This is to help
             * cases where there's something like <img
             * src="../foo.png">, so that actually
             * /path/../foo.png is served instead of
             * /path../foo.png.  */
            const char *key_end = rawmemchr(key, '\0');
            if (*(key_end - 1) != '/')
                return &redir_funcs;

            if (UNLIKELY(snprintf(index_html_path, PATH_MAX,
                                  "%s%s", key,
                                  priv->index_html) < 0))
                return NULL;
        }

        /* See if it exists. */
        if (fstatat(priv->root.fd, index_html_path, st, 0) < 0) {
            if (UNLIKELY(errno != ENOENT))
                return NULL;

            /* If it doesn't, generate a directory list. */
            return &dirlist_funcs;
        }

        /* If it does, we want its full path. */

        if (UNLIKELY(priv->root.path_len + 1 /* slash */ +
                     strlen(index_html_path) + 1 >= PATH_MAX))
            return NULL;

        full_path[priv->root.path_len] = '/';
        strncpy(full_path + priv->root.path_len + 1,
                index_html_path,
                PATH_MAX - priv->root.path_len - 1);
    }

    /* It's not a directory: choose the fastest way to serve the
     * file judging by its size.  */
    if (st->st_size < 16384)
        return &mmap_funcs;

    return &sendfile_funcs;
}

Small files may also be compressed, unless compressed data ends up being larger than the original data. Especially if the response header is considered. Because of this, small files are only compressed if it’s worth the trouble. The 16KiB threshold has been chosen empirically: larger values did not yield substantial performance gains compared to using sendfile().

static void
_compress_cached_entry(mmap_cache_data_t *md)
{
    static const size_t deflated_header_size =
            sizeof("Content-Encoding: deflate");

    md->compressed.size = compressBound(md->uncompressed.size);

    md->compressed.contents = malloc(md->compressed.size);
    if (UNLIKELY(!md->compressed.contents))
        goto error_zero_out;

    int ret = compress(md->compressed.contents,
                       &md->compressed.size,
                       md->uncompressed.contents,
                       md->uncompressed.size)
    if (UNLIKELY(ret != Z_OK))
        goto error_free_compressed;

    size_t total_size = md->compressed.size
            + deflated_header_size;
    if (total_size < md->uncompressed.size)
        return;

error_free_compressed:
    free(md->compressed.contents);
    md->compressed.contents = NULL;
error_zero_out:
    md->compressed.size = 0;
}

For directories, the template engine is used to create the listing. The contents are cached using the same mechanism files are. Templating is discussed below.

An interesting optimization is that, to obtain the full path, a special version of realpath(), forked from the GNU libc implementation, is used. This version uses the lighter “-at()” variants of system calls that operates on paths; they do not need to perform path-to-inode conversion for the whole path, only from a path pointed to by a directory file descriptor.

The file server is a module. It is a simple way to keep per instance state, such as the file descriptor for the root directory, the directory list template, and a few other things.

Mustache templating engine

Not all features from Mustache are implemented: some are pretty much only practical if using a language that’s more expressive than C. However, without requiring (too much) boilerplate, a substantial amount of its specification is implemented, in a pretty efficient way, and suits all Lwan uses pretty well. (Being performant might not matter, though, but I’m here to have fun, not solve problems.)

Not everything is implemented exactly as in the standard, though: that’s mostly for laziness reasons, but the non-dynamic nature of C would make certain things needlessly difficult to implement and use, anyway. The templating engine supports the basic stuff. In no particular order:

  • Variables of different types;
  • Checking the emptiness of variables;
  • Iteration on lists (and any kind of sequences);
  • Partials;
  • Comments;
  • Inverted sections.

Setting the delimiters, triple mustaches (for escaping HTML output), ampersand to unescape strings — and possibly other things — are not implemented, but could be implemented with relatively minimal effort. String escaping is supported by using a special string type and should conform to best practices.

Templates are pre-processed. This pre-processing step uses a state machine parser to break down its text representation into a series of actions that can be performed by the engine very efficiently. Actions include things like “append string”, “append variable”, “start iteration”, and so on.

typedef enum {
    TPL_ACTION_APPEND,
    TPL_ACTION_APPEND_CHAR,
    TPL_ACTION_VARIABLE,
    TPL_ACTION_LIST_START_ITER,
    TPL_ACTION_LIST_END_ITER,
    TPL_ACTION_IF_VARIABLE_NOT_EMPTY,
    TPL_ACTION_END_IF_VARIABLE_NOT_EMPTY,
    TPL_ACTION_APPLY_TPL,
    TPL_ACTION_LAST
} lwan_tpl_action_t;

For instance, a stack of hash tables is used during this pre-processing step to act as a symbol table; this table can be thrown away as soon as the pre-processing step is complete, as all variables have been resolved and a much more efficient value lookup mechanism can be used instead.

Obtaining variables

To use the templating mechanism, one should have a structure for each template. Structures are cheap and provide some welcome compile-time type checking that wouldn’t be possible otherwise.

typedef struct hello_t {
  char *name;
  int age;
};

In addition to a structure, due to the lack of introspection in C, an array of variable descriptors should be declared. A variable descriptor contains a string representation of a variable name, the offset in bytes of that variable within the structure, and pointers to functions to test the emptiness of that kind of variable and to append the variable to the string buffer; macros help alleviate boilerplate headaches.

lwan_var_descriptor_t hello_descriptor[] = {
  TPL_VAR_STR(hello_t, name),
  TPL_VAR_INT(hello_t, age),
  TPL_VAR_SENTINEL
};

lwan_tpl_t *hello = lwan_tpl_compile("hello.tpl",
                                     hello_descriptor);

A structure containing all the variables can then be supplied by some sort of database layer, caching layer, or be declared on the spot: compound literals with designated initializers make this use case pretty straightforward.

strbuf_t *rendered = lwan_tpl_render(hello, (hello_t[]) {{
  .name = "World",
  .age = 42
}});

/* Do something with `rendered` */

strbuf_free(rendered);

Appending a variable is then just the matter of calling the appropriate callback function (conveniently in the descriptor), passing the base address of that structure plus the byte offset within it.

static void
append_var_to_strbuf(lwan_tpl_chunk_t *chunk, void *variables,
                     strbuf_t *buf)
{
    lwan_var_descriptor_t *descriptor = chunk->data;
    if (LIKELY(descriptor))
        descriptor->append_to_strbuf(buf,
                      (char *)variables + descriptor->offset);
}

Sequences

To avoid creating potentially lots of small, temporary objects, for lists and sequences a coroutine is created and is used as a makeshift generator function. Another option was to implement iterators using a structure to hold state plus a few callbacks — I gave up while imagining the amount of boilerplate necessary. A function is simple to write on the other hand, and can include initialization, iteration, and cleanup.

sequences

How sequences are evaluated by the templating engine

The only user of sequences in templates within Lwan is the file listing feature in the file serving module. The generator function is pretty straightforward, and is responsible for opening the directory, obtaining information for each entry, and then closing the directory. A shorter version of it is described in the original blog post about sequences in the templating engine.

Caching

I’ve used and implemented a few caching infrastructures over the years, and I believe that the one in Lwan is, so far, the simplest one I’ve used. Most caches will require items to be created — and then added manually to the cache. Not only clumsy, but could also lead to race conditions.

The one in Lwan knows how to create and destroy a cache entry: one just asks the cache to obtain a value for a given key. If it’s not there, the entry is created and returned. The lifetime of a cache entry is controlled automatically, and a low priority thread kicks in every now and then to prune old entries.

struct cache_t {
    struct {
        struct hash *table;
        pthread_rwlock_t lock;
    } hash;

    struct {
        struct list_head list;
        pthread_rwlock_t lock;
    } queue;

    struct {
        CreateEntryCallback create_entry;
        DestroyEntryCallback destroy_entry;
        void *context;
    } cb;

    struct {
        time_t time_to_live;
        clockid_t clock_id;
    } settings;

    unsigned flags;

#ifndef NDEBUG
    struct {
        unsigned hits;
        unsigned misses;
        unsigned evicted;
    } stats;
#endif
};

Unlike most caches, the one in Lwan isn’t limited by size: items stay in the cache for a predetermined amount of time.

Cache entries are reference-counted, and they’re not automatically reaped if something is holding on a reference: these items are marked as floating when this happens, and the last one to give up the reference will also destroy the entry.

struct cache_entry_t {
  struct list_node entries;
  char *key;
  unsigned refs;
  unsigned flags;
  struct timespec time_to_die;
};

struct file_cache_entry_t_ {
    struct cache_entry_t base;

    struct {
        char string[31];
        time_t integer;
    } last_modified;

    const char *mime_type;
    const cache_funcs_t *funcs;
};

When used within a coroutine, two things can happen: ➀ the coroutine might yield if the cache lock were to become contended and ➁ automatically releasing a reference when a coroutine is destroyed.

In addition to floating entries, there are also temporary entries. The cache uses read-write locks, but most of the time, locks are only obtained using the “trylock” primitive: if a lock can’t be obtained for a reason, Lwan tries to move on to something else. This could be attending to another request (by yielding the coroutine), or merely returning an off-the-books entry that will be destroyed as soon as its sole user releases its reference. The difference to floating entries is merely an implementation detail, so that an atomic decrement (and its accompanying memory barrier) isn’t used.

The cache tries to avoid keeping the locks locked. As an example, while an item is being created, no locks are held. This can, of course, lead to multiple entries being created concurrently, but if caching would be useful anyway, having a few temporary entries lying around isn’t a problem, as at least one will be cached for future access.

As nice as the cache subsystem ended up being, there is a lot of room for improvement. Reducing the amount of concurrent reference counting is high on the list. Reducing the latency is also in consideration. Making HTTP responses cacheable without special code in the handler is there as well.

Keep-alive connections, death queue

Connection lifetime is managed by a per-thread queue.

Each time a connection is scheduled to a certain thread, it is pushed to the queue, and a time to die is set. When there are connections in this queue, Epoll will timeout every second to iterate through it and kill connections when their time has come. Timeouts are infinite when the queue is empty, to avoid waking the process unnecessarily. Every time a coroutine is resumed, the time to die is updated, and the connection is pushed to the end of the queue.

Each death queue has its own epoch, which starts at zero and increments at every timeout. Whenever the last connection is removed from a queue, the epoch restarts. Keeping the epoch a small number will help shave a few bytes from each connection in the future.

struct death_queue_t {
    lwan_connection_t *conns;
    lwan_connection_t head;
    unsigned time;
    unsigned short keep_alive_timeout;
};

The same timeout value is used for keep-alive connections and coroutines. This ensures coroutines will not linger indefinitely when not performing any kind of work.

The death queue is so important that almost a third of the connection structure is dedicated to its existence. Three integers keep state for the death queue: the time to die (as an unsigned int), and two integers as pointers to a doubly linked list.

Integers were used instead of pointers in order to save memory. This was possible since in reality they are indices to the connection array. A doubly linked list was also chosen since removing a connection from the middle of the queue should be efficient, as it is done very frequently to move the entry to the end. The list is also circular, in order to avoid branching to handle empty queue cases. Maintaining the queue inline with the connection structures help reducing cache pressure.

static inline int _death_queue_node_to_idx(
            struct death_queue_t *dq, lwan_connection_t *conn)
{
    return (conn == &dq->head) ?
            -1 : (int)(ptrdiff_t)(conn - dq->conns);
}

static inline lwan_connection_t *_death_queue_idx_to_node(
            struct death_queue_t *dq, int idx)
{
    return (idx < 0) ? &dq->head : &dq->conns[idx];
}

static void _death_queue_insert(struct death_queue_t *dq,
    lwan_connection_t *new_node)
{
    new_node->next = -1;
    new_node->prev = dq->head.prev;
    lwan_connection_t *prev = _death_queue_idx_to_node(dq,
                                           dq->head.prev);
    dq->head.prev = prev->next = _death_queue_node_to_idx(dq,
                                                   new_node);
}

static void _death_queue_remove(
            struct death_queue_t *dq, lwan_connection_t *node)
{
    lwan_connection_t *prev = _death_queue_idx_to_node(dq,
                                              node->prev);
    lwan_connection_t *next = _death_queue_idx_to_node(dq,
                                              node->next);
    next->prev = node->prev;
    prev->next = node->next;
}

Closing words

That’s pretty much it: when a response has been sent, the connection can either be closed, or a new request can be serviced in the same connection. Repeat ad infinitum and there’s the HTTP server.

If you’ve made this far, I invite you to take a look at the full source code. There are things that were not mentioned in this article. It’s also a young Free Software project with no entry barrier: just fork and issue a pull request.

31 Oct 20:07

Compilando o CyanogenMod para o Nexus 5

by Sergio Prado

O CyanogenMod é um sistema operacional alternativo e de código-aberto baseado no Android para smartphones e tablets, possuindo funcionalidades que não existem na versão padrão do Android (AOSP), como suporte nativo à temas, overclock de CPU e cliente de VPN.

CyanogenMod logo2 Compilando o CyanogenMod para o Nexus 5

Na página de downloads do projeto é possível baixar a última versão do firmware do CyanogenMod para diversos dispositivos móveis e tablets de mercado.

Se uma imagem compilada já é fornecida pelo projeto, por que então você precisaria compilar o CyanogenMod? Por vários motivos, dentre eles:

  • Adicionar uma funcionalidade;
  • Personalizar ou customizar;
  • Corrigir problemas;
  • Portar para outro dispositivo de hardware;
  • Aprender!

E é claro que o último motivo acima já é suficiente para colocarmos a mão na massa!

PRÉ-REQUISITOS

O primeiro passo é preparar a sua máquina para compilar o Android. Para isso, você pode seguir os procedimentos oficiais do Google.

BAIXANDO O CÓDIGO-FONTE

Crie um diretório na sua máquina de desenvolvimento para armazenar o código-fonte do CyanogenMod e entre nele:

$ mkdir ~/cm && cd ~/cm

Para os testes, utilizaremos a versão 11.0 do CyanogenMod. Use o repo para baixar o código-fonte, conforme abaixo:

$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
$ repo sync

Prepare-se, pois o processo de download do código-fonte pode levar de 30 minutos a algumas horas, dependendo da velocidade da sua conexão com a Internet. Ao final, você terá disponível o código-fonte conforme abaixo:

$ ls
abi      bootable  developers   external    libnativehelper  pdk        system
android  build     development  frameworks  Makefile         prebuilt   tools
art      cts       device       hardware    ndk              prebuilts  vendor
bionic   dalvik    docs         libcore     packages         sdk

Uma descrição dos principais diretórios do código-fonte está disponível na documentação do CyanogenMod.

CONFIGURANDO

O primeiro passo é inicializar o ambiente de compilação carregando o script abaixo:

$ source build/envsetup.sh

Este script irá configurar o terminal com diversos comandos que podem ser usados para gerenciar o código-fonte. Consulte a documentação do CyanogenMod para uma descrição dos principais comandos.

Depois de inicializar o ambiente, alguns binários utilizados pelo sistema de compilação do CyanogenMod precisam ser baixados da Internet:

$ cd vendor/cm
$ ./get-prebuilts
$ croot

O próximo passo é configurar para qual dispositivo pretendemos compilar o CyanogenMod. Isso pode ser feito com o comando breakfast. Para os testes, compilaremos uma versão do CyanogenMod para o Nexus 5, cujo codinome é hammerhead.

$ breakfast hammerhead

O comando acima irá baixar as configurações do dispositivo, o código-fonte do kernel e selecionar o dispositivo para compilação.

Por último, é necessário extrair do dispositivo alguns binários que serão usados na imagem. Estes binários (blobs) são normalmente compostos por módulos de kernel, bibliotecas e aplicações proprietárias do fabricante do hardware, que são essenciais para o funcionamento do dispositivo. Para isso, é necessário conectar o dispositivo via ADB com sua máquina e executar os comandos abaixo:

$ cd device/lge/hammerhead/
$ ./extract-files.sh
$ croot

COMPILANDO

Agora é só compilar:

$ mka bacon

O processo de compilação pode levar algumas horas, dependendo da sua máquina.

No final da compilação, as imagens geradas estarão no diretório apontado pela variável de ambiente $OUT:

$ ls $OUT
android-info.txt                                 obj
boot.img                                         previous_build_config.mk
cache                                            ramdisk.img
cache.img                                        ramdisk-recovery.cpio
clean_steps.mk                                   ramdisk-recovery.img
cm-11-20141002-UNOFFICIAL-hammerhead.zip         recovery
cm-11-20141002-UNOFFICIAL-hammerhead.zip.md5sum  recovery.img
cm_hammerhead-ota-8895f15ab2.zip                 root
data                                             symbols
external                                         system
fake_packages                                    system.img
installed-files.txt                              userdata.img
kernel

Opcionalmente, você pode configurar (breakfast hammerhead) e compilar (mka bacon) de uma vez só com o comando abaixo:

$ brunch hammerhead

O último passo é instalar a imagem gerada (cm-11–20141006-UNOFFICIAL-hammerhead.zip) usando uma imagem de recovery customizada.

Para os mais aventureiros, alguns guias de desenvolvimento estão disponíveis no site do projeto, assim como um tutorial para portar o CyanogenMod para um dispositivo de hardware.

Divirta-se!

Sergio Prado

Sergio Prado atua com desenvolvimento de software para sistemas embarcados há mais de 15 anos. É sócio-fundador da Embed­ded Lab­works, uma empresa focada em te aju­dar a desen­volver soft­ware de qual­i­dade para sis­temas embar­ca­dos. Se você pre­cisa de ajuda para desen­volver seu pro­duto, ou quer saber mais sobre o que a Embed­ded Lab­works pode fazer por você, acesse http://e-labworks.com/servicos.

Este post foi originalmente publicado em Compilando o CyanogenMod para o Nexus 5.

31 Oct 19:19

Detector de batimentos cardíacos

by cooler51

Iai meus Leitores prediletos do meu blog falido 😛

Bom neste Post, vou falar sobre detector de mentira
algo simples em conjunto com um “heartbeat” , ideia do detector
de mentira não é só pegar batidas do coração mais pegar dados
de suor,movimentos da perna entre outras coisas significantes,
como nosso post vai ser informal não espere aqui um guia
definitivo de polígrafo.

moe

Nossa missão aqui é fazer um HeartBeat com um outro sistema
para pegar dados e fazer o Plot bem simples algo bem tabajara,
Plot é para a pessoa que vai julgar se é verdade ou mentira poder
ter algo visual, poderia ter usado um LED RGB para
ter seu valor atribuído de a cordo com valor do heartbeat, eu gravei
um vídeo para mostrar um ponto empírico. Agradeço ajuda do “Eremitah
por dar a dica do buzzer fez eu economizar uns 4 dollares com sensores
de tremor, buzzer você acha em qualquer lugar custa de 15centavos a
2 reais no máximo.

Foi usado apenas um buzzer , seria interessante usar mais de um, talvez
usar uma rede neural para pegar as batidas certas de forma descartar os erros e a ajudar no julgamento
de resultados de 4 sensores ou mais ,bem como sensor de umidade e movimento etc, talvez aumentar o delay de
5 segundos. fica a seu critério…

vamos a diversão,código do arduino

/*
author:Antonio Costa (Cooler_)
e-mail:c00f3r[at]gmail[dot]com

 Simple HeartBeat Detector with Arduino

 needs:
  1 resistor 1M ohms
  1 Buzzer
  1 Led +1 resistor 1k
  y finger on buzzer and run...

*/

#include <Time.h>  

// cada X segundos pega Y batidas
#define SEG 5

 int count=0;
 int ledPin = 6;
 int piezoPin = 5;
 int sensorValue = 0; 

void setup() {
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
 pinMode(piezoPin, INPUT);
}

void loop()
{
 sensorValue = analogRead(piezoPin);
 if(sensorValue)
 {
  count+=sensorValue;
// light LED by knock
  digitalWrite(ledPin, HIGH);
  delay(25);
  digitalWrite(ledPin, LOW);
 }

 if( (!(second()%SEG)) && (count>20) )
 {
//  Serial.print("second:");
//  Serial.println(second());
//  Serial.print("HeartBeats:");
  Serial.println(count);
  count=0;
  delay(50);
 }
}

Agora código que vai ficar no nosso PC

/*
contato: c00f3r@gmail.com
autor: Antonio Costa aka Cooler_
coolerlab.wordpress.com

Simple Heartbeat detector with arduino

 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <termios.h>
#include <fcntl.h>
#include <time.h>

// sempre concatene com 'B' a  taxa de transmissão ,"9600" padrão do AVR
#define BAUDRATE B9600

// macros debug
#define BUGVIEW 1

#define DEBUG(x, s...) do { \
 if (!BUGVIEW) { break; } \
 time_t t = time(NULL); \
 char *d = ctime(&t); \
 fprintf(stderr, "%.*s %s[%d] %s(): ", \
 (int)strlen(d) - 1, d, __FILE__, \
 __LINE__, __FUNCTION__); \
 fprintf(stderr, x, ## s); \
} while (0);

// vai pegar os dados a cada 5 segundos
#define SECOND 5

int serialboot(const char* serialport, int baud);
int serialread( int fd, char* buf, char until, int max );
int WriteFile(char *file,char *str);

void banner()
{
 printf("\nFollow patern: ./heartbeat <SerialPort> <times 2 get>\n"
  "Just Another geek thing to get HeartBeat and plot!!!\n"
  "Coded By Cooler_\n"
  "coolerlab.wordpress.com\n"
  "\n");
}

int main(int argc, char *argv[])
{
 int baudrate = BAUDRATE,fd=0,counter=0,times=0;
 char *buf=malloc(sizeof(char)*16);
 char *serialport=malloc(sizeof(char)*512);

// apagamos o último log
 unlink("logbeat.txt");

  if(argc<2)
  {
   banner();
   exit(EXIT_SUCCESS);
  }

  printf("Serial:%s\n",argv[1]);

  strncpy(serialport,argv[1],sizeof(char)*511);
  fd=serialboot(serialport, baudrate);

   if(fd<=0)
   {
    DEBUG("veja se o dispositivo esta conectado!!");
    DEBUG("%d\n",fd);
    exit(EXIT_SUCCESS);
   }

//número de dados que seram pegos a cada 5 segundos
  if(strnlen(argv[2],3)<2)
  {
   times=atoi(argv[2]);
  } else {
   puts("error at argument time");
   exit(EXIT_SUCCESS);
  }

  while(1)
  {
   serialread(fd, buf, '\n',15);

   if(strncmp(buf," ",15)>0)
   {
    fprintf(stdout,"%s",buf);
    sleep(SECOND);
    WriteFile("logbeat.txt",buf);
    times--;
   }
// se terminar número de vezes então pula
   if(!times)
    break;
  }

// nosso amigão gnuplot nos ajudando 🙂
 FILE *pipe = popen("gnuplot -persist","w");
  fprintf(pipe, "set grid'\n");
  fprintf(pipe, "set style data lines\n");
  fprintf(pipe, "set terminal png\n");
  fprintf(pipe, "set output 'heartbeat.png'\n");
  fprintf(pipe, "plot \"logbeat.txt\"\n");
 pclose(pipe);

// fechando a banca xD
 puts("end HeartBeat, look image heartbeat.png");
 close(fd);
 free(buf);
 free(serialport);

 exit(EXIT_SUCCESS);
} 

int serialread(int fd, char* buf, char until,int max)
{
char b[1];
int i = 0;
do {
int n = read( fd, b, 1 );
if( n==-1 )
return -1;
if( !n )
{
usleep(16000);
continue;
}
buf[i] = b[0];
i++;
} while ( b[0]!=until && max != i );
buf[i] = 0;
return 0;
}

int serialboot(const char* serialport, int baud)
{
 struct termios toptions;
 int fd;

    fd = open(serialport, O_RDWR | O_NOCTTY | O_NDELAY);

    if(fd == -1)
    {
     DEBUG("serialboot: não foi possivel abrir a porta ");
     return -1;
    }

    if(tcgetattr(fd, &toptions) < 0)
    {
     DEBUG("serialboot: nao foi possivel pegar atributos do terminal");
     return -1;
    }
    speed_t brate = baud;
    cfsetispeed(&toptions, brate);
    cfsetospeed(&toptions, brate);
   // para default recv com termios.h
    // 8N1
    toptions.c_cflag &= ~PARENB;
    toptions.c_cflag &= ~CSTOPB;
    toptions.c_cflag &= ~CSIZE;
    toptions.c_cflag |= CS8;
    // no flow control
    toptions.c_cflag &= ~CRTSCTS;
    toptions.c_cflag |= CREAD | CLOCAL;  // turn on READ & ignore ctrl lines
    toptions.c_iflag &= ~(IXON | IXOFF | IXANY); // turn off s/w flow ctrl
    toptions.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // make raw
    toptions.c_oflag &= ~OPOST; // make raw

    // olhe http://unixwiz.net/techtips/termios-vmin-vtime.html
    toptions.c_cc[VMIN]  = 0;
    toptions.c_cc[VTIME] = 20;

    if(tcsetattr(fd, TCSANOW, &toptions) < 0)
    {
     DEBUG("serialboot: nao foi possivel adicionar atributos no term erro 1");
     return -1;
    }

 return fd;
}

//escreve num txt
int WriteFile(char *file,char *str)
{
 FILE *arq;

 arq=fopen(file,"a");
  if(!arq)
  {
   DEBUG("error in WriteFile() %s",file);
   return 0;
  }
 fprintf(arq,"%s",str);
 fclose(arq);
 return 1;
}

$ gcc -o heartbeat heartbeat.c -Ofast -fstack-protector-all -Wl,-z,relro,-z,now -D_FORTIFY_SOURCE=fast
$ ./heartbeat /dev/ttyUSB1 10

deixe seu dedo indicador do braço direito no buzzer,
quando ver o LED piscar quer dizer que esta capitando…

*Dica caso queira testar em alguém
-faça um PCB , algo decente, o que mostrei foi só protótipo,use a imaginação
-use algum elástico de forma colar o buzzer no local onde quer capturar as batidas
-comece perguntando coisas que são obviamente verdade e analise o Plot
-preste atenção nos ticks nervosos
-olhe outros projetos hack a day ,por la tem vários polígrafos
-altere o delay e use mais buzzers se necessário

espero ter ajudado 😉

curtiu ? quer mais procura no google por “Knock sensor

30 Oct 16:58

Quando a Mãe Não Está Em Casa


Meu Deus, o sonho de todos os maridos e filhos!

22 Oct 15:15

Especial: O nascimento do Ka visto de dentro

by Redação

novo kaespecial desenvolvimento 7 700x393 Especial: O nascimento do Ka visto de dentro

Saiba quase todos os detalhes do segundo projeto mundial da Ford coordenado a partir de Camaçari, na Bahia

Por Gustavo Henrique Ruffo

Dizer que o Novo Ka foi antecedido pelo EcoSport pode parecer loucura, mas faz todo o sentido. Não em termos de mercado, já que os modelos que ele substitui são tanto o Ka quanto o Fiesta Rocam, mas sim em termos de projeto e de importância para a engenharia brasileira. Afinal de contas, o utilitário pequeno da Ford, pioneiro em seu segmento desde a primeira geração, foi o primeiro projeto mundial coordenado pela filial brasileira. O Novo Ka foi o seguinte. Mas não pense você que tudo fica necessariamente mais fácil com um segundo projeto.

“A única facilidade que tivemos foi já conhecer os mercados a que o carro se destinaria e o processo de desenvolvimento mundial. Foi esse o grande diferencial do B562 (Ka) para o B515 (EcoSport). Não foi mais tranquilo, mas a gente já sabia onde estava pisando”, diz João Marcos de Oliveira Ramos, chefe de design da Ford na América do Sul. Foi com ele e com Alex Machado, engenheiro responsável pelo projeto mundial do Novo Ka, que conversei por uma hora e meia. Tudo para tentar contar todo o processo de nascimento do novo carro de entrada da marca americana, da concepção ao lançamento.

O projeto B562 começou a surgir em 2010, quando a Ford percebeu a necessidade de ter um novo modelo compacto mundial, do chamado segmento B, como a empresa o define. Tanto é assim que a plataforma do carro é chamada de B Global, mas também de B1 ou B2E. “Todos os centros de desenvolvimento da Ford estavam de olho neste projeto, mas temos a vantagem de conhecer muito bem o segmento. Cerca de 75% dos carros novos vendidos no Brasil são do segmento B”, diz Machado.

Quem queria fazer o Ka

Na disputa estavam China, Índia, EUA, Europa e até Austrália. Um dos grandes responsáveis pela vinda do segundo projeto mundial feito por aqui foi Hau Thai-Tang, na época diretor de desenvolvimento de produtos da Ford América do Sul, ou FSAO, código interno pelo qual a divisão é tratada.

Tang foi quem batalhou para trazer o projeto para as mãos da equipe brasileira. Este vietnamita de 47 anos, que fugiu de Saigon aos 9 anos para morar em Nova York, é considerado pelos colegas o pai do Ka, mas não só. A biografia do executivo divulgada pela Ford coloca nele “a culpa” pelo fato de a FSAO ter se tornado um centro de desenvolvimento global de produtos. Hoje, Tang é vice-presidente mundial de compras, algo mais do que justo para alguém que ajudou a consolidar a estratégia “One Ford” como vice-presidente mundial de desenvolvimento de novos produtos, cargo que ele passou a ocupar logo depois de sair do Brasil.

Essa estratégia é a mesma que deu origem ao EcoSport, ao Ka e a boa parte dos novos produtos da marca desde 2007. A ideia, aparentemente simples, é ter produtos comercializados em todo o planeta, sobre poucas plataformas, o que torna a escala de produção destes veículos gigantesca. Quanto maior é a escala, menor é o preço que os componentes passam a custar. Em outras palavras, o custo unitário de um para-choque, por exemplo, é muito mais baixo se você encomenda um milhão deles em vez de 100 mil.

novo kaespecial desenvolvimento 1 700x273 Especial: O nascimento do Ka visto de dentro

Mão na massa

Com a escolha do Brasil para conceber este novo produto de entrada, Machado menciona dois momentos muito distintos. “Alan Mullaly (CEO mundial da Ford) foi quem deu a autorização para tocarmos o desenvolvimento. Isso aconteceu depois de cada um dos cinco estúdios globais apresentar um projeto. Todos os projetos são apresentados e discutidos no mundo todo, para avaliar se estão contemplando todas as diretrizes da Ford ou se precisam de ajuste. Hoje, por exemplo, já estamos pensando na nova geração do Fiesta. Com o anúncio de que seríamos os responsáveis pelo Ka, não chegou a haver uma comemoração, mas teve, no dia, uma euforia. No dia seguinte, o dia 2, já estávamos quebrando a cabeça para saber como daríamos conta de atingir os objetivos propostos para o carro, da melhor maneira possível”.

E as primeiras discussões foram sobre o plano de negócios. Nem poderia ser diferente. Alfred P. Sloan Jr., presidente da General Motors de 1923 a 1956, resumiu bem o que isso significa. Em certa ocasião, ao questionar seus executivos sobre qual era o objetivo da empresa, alguém teria dito “fabricar carros”. A resposta de Sloan é usada até hoje para contextualizar quem está fora da realidade da indústria: “Não, senhores. O objetivo da empresa é ganhar dinheiro… fabricando carros!”.

Apesar de a lição ter vindo do concorrente, todo bom executivo, de qualquer empresa, sabe bem o que ela significa. E vem seguindo o que ela determina rigorosamente. “Nossa primeira discussão foi: que mercados deveriam ser abrangidos? O Ka foi criado para ser vendido no mundo todo. A ordem era atender à máxima quantidade de mercados, respeitando as necessidades destes mercados, mas havia aqueles que eram chave e que nos ajudaram a nortear o projeto”, diz Machado. “Além do Brasil, tivemos de considerar Índia, China e Europa no desenvolvimento.”

novo kaespecial desenvolvimento 4 700x386 Especial: O nascimento do Ka visto de dentro

Só com cinco portas

Nas discussões de negócios, entra também um exercício de futurologia, até porque os projetos automotivos são de longo prazo. “Não basta saber como o mercado está, mas também para onde está indo. O Brasil mudou radicalmente nos últimos 20, 15 anos. Antes, havia um mercado grande para três portas. O Ka foi líder de vendas entre os modelos de três portas, mas para onde isso está caminhando? Vale o investimento em uma versão de três portas, por exemplo?”, pergunta Machado. Ramos completa. “Hoje, esse segmento é de carros de nicho. Na Europa, o Fiesta tem a versão ST nessa carroceria. E não faria sentido ter um Ka de alta performance. O investimento em um três portas é muito alto.”

Questionados sobre quanto de investimento isso representaria, os executivos não falaram em valores, mas em proporções. “Fica muito perto do gasto com um novo projeto. Se você gasta 100 em um modelo de cinco portas, gasta 80 para fazer a versão de três portas”, diz Machado. A quem cai no erro de achar que as mudanças são simples, ou pequenas, Ramos dá uma ideia de tudo que é preciso alterar. “A carroceria tem de ter uma nova estrutura. As portas são maiores, os revestimentos são todos diferentes, é muita coisa a mudar.” A decisão, portanto, estava mais do que tomada. “O Ka não terá versão de três portas em nenhum mercado. Mesmo na Europa, onde ainda existe mercado para carrocerias assim, ele é pequeno. Não compensa”, diz Machado.

O sedã, por outro lado, era um modelo que a Ford não poderia deixar passar. Chamado de Ka+, ele manteria a Ford em um segmento que é considerado muito promissor. “Ele surgiu naturalmente, dentro das discussões de negócio, como oportunidade. Os três portas vem perdendo participação. Os cinco portas são nosso pãozinho quente. O modelo que poderia nos ajudar a conquistar famílias era o sedã pequeno”, diz Machado. Para o chefe de design, o sedã também fazia todo o sentido na construção da linha da marca. “O sedã compacto prepara o cliente para a próxima etapa dentro da gama, que é o carro médio. Com isso, ele ajuda a atender o comprador que passa a ter novas necessidades.”

Personas

Com os mercados e carrocerias definidos, os times de desenvolvimento passaram à criação daquilo que chamam de personas. “Usamos como modelos os clientes típicos que queremos atender com aquele veículo. Cada mercado tem uma persona diferente, que precisa ser atendida. Usamos essas personas para definir, em design, temas de desenvolvimento. Seria como um desenho mais ousado, um mais clássico, outro mais racional e assim por diante, cada um deles voltado a uma dessas personas. É para elas que pensamos em acessórios, no espaço interno que será oferecido e no design”, diz Ramos.

Machado diz que as personas são uma forma de tentar acertar o alvo, em termos de mercado. “As personas não correspondem a todo mundo que poderia comprar o carro. São os clientes típicos, aqueles para os quais o carro foi pensado, os que o veículo visa atender. Mas sabemos que, quando estão no mercado, eles acabam tendo apelo e agradando a muito mais gente.” As personas, portanto, são um norte para o desenvolvimento do veículo.

novo kaespecial desenvolvimento 5 700x393 Especial: O nascimento do Ka visto de dentro

Como não é possível elaborar um carro diferente, em um mesmo segmento, para cada público, essas propostas de desenvolvimento, os temas, são eliminadas ou incorporadas a outras, até que se chegue a um número menor delas. “Existe todo um processo de criação de design. Precisamos pensar na categoria do novo modelo, nas necessidades que ele atenderá e em centenas de outras informações. Depois, partimos para os esboços iniciais, sem amarras técnicas, que é o único meio de o processo criativo realmente acontecer. Com alguns esboços escolhidos, começamos com o clay. Vamos, então, depurando esses temas. Ao longo do processo, são feitas clínicas nos mercados em que esse carro será vendido e levamos a elas no máximo três temas. Ali, não buscamos apenas ver se estamos certos em relação ao design, mas sim se o público reconhece nosso novo modelo como um legítimo Ford. Todos os carros mostrados na clínica, mesmo os de outras empresas, vão sem o badge, sem o emblema da marca”, diz Ramos.

novo kaespecial desenvolvimento 9 700x393 Especial: O nascimento do Ka visto de dentro

“Os mock-ups que vão para a clínica são de fibra de vidro e, primeiro, feitos em escala reduzida. Depois, em 1:1, mas ainda sem interior. Com a aparência externa aprovada, passamos para o interior. Tudo reproduz o veículo final com perfeição”, completa o chefe de design da Ford.

Ponto doce

As clínicas se estendem até chegar ao que os designers chamam de “sweet spot”, ou ponto doce, o ideal para o próximo passo do desenvolvimento: a engenharia. No caso do Ka, elas foram de 2011 até o comecinho do ano seguinte. Simultaneamente, o chefe do projeto se dedicava a outra parte fundamental do processo: a formação da equipe.

“Temos hoje na Ford entre 1.500 e 2.000 engenheiros, mas cada projeto tem um time próprio, incluindo gente de todos os departamentos. No Ka, trabalharam 800 pessoas. O primeiro desafio, quando recebemos a missão de desenvolver o compacto, foi fazer mais contratações, aumentar nosso centro de desenvolvimento. Isso envolve uma interação maior com as universidades, em busca de novos talentos, que devem ter contato com nossos profissionais mais experientes. Tudo sem contar os grupos do exterior”, diz Machado.

novo kaespecial desenvolvimento 11 700x612 Especial: O nascimento do Ka visto de dentro

“Nos EUA, por exemplo, temos um grupo muito forte de desenvolvimento de segurança. Todos os projetos mundiais passam pelas mãos deste grupo. Aí a gente começou a se perguntar: quem desse time virá nos ajudar no Brasil? Dos 800 profissionais envolvidos, de áreas como a financeira, de compras e de motores (que é lá do Reino Unido), nós temos 300 que são estrangeiros. É muita gente envolvida. Para morar aqui perto de Camaçari, na Bahia, trouxemos entre 30 e 35 pessoas. E elas não eram importantes apenas pela competência que traziam ao projeto, mas também por fazer a ponte com os times que integram fora do país”, completa o engenheiro chefe do projeto.

“Todo esse processo de contratação muda a cara da região. As universidades, os serviços, tudo sofre um impacto violento. Quando chegamos a Camaçari, por exemplo, a Bahia não tinha uma escola de engenharia com tradição. Hoje, temos gerentes na Alemanha e nos EUA que foram formados e contratados aqui. Gente muito competente que agora ajuda a Ford no resto do mundo”, arremata Machado, que vai mais além na descrição dos processos.

“A gente não tem uma equipe propriamente dita. Temos um grupo de engenharia. Dele fazem parte especialistas em parte elétrica, em cluster, em baterias, em gerenciamento de energia… O importante é termos todas as especialidades reunidas, de preferência com engenheiros envolvidos em mais de um projeto ao mesmo tempo, já que eles têm uma visão mais completa do que está acontecendo, para onde a empresa está caminhando.” Ramos completa. “Em um projeto desses, as pessoas acabam criando vínculos pessoais. Tem gente que veio para o Brasil e voltou para casa casada, por exemplo!”

Pico de trabalho

Montada a equipe de desenvolvimento do Ka, definidos os rumos e a aparência do compacto, chegou o momento de partir para o trabalho mais pesado. “2012 foi o ano de desenhar o carro final e de projetar as peças. Foi quando os 3.000 componentes do Ka passaram a ter vida, digamos assim, com o princípio das simulações técnicas e dos testes analíticos.” Este foi, nas palavras do engenheiro chefe do projeto, o ano de pico de trabalho. Não só pelo carro que você já vê pelas ruas, mas pelo que o novo Ford Ka poderia ter sido.

“Quando primeiro começamos a falar de negócio, a gente tinha um mercado com Chevrolet Celta, Fiat Palio, Fiat Palio Fire, o próprio Ford Ka, que vendia 50% de suas unidades com direções sem assistência. Hoje você quase não acha direção simples. Todo mundo quer a assistida. Mesmo assim, no começo, nós desenvolvemos e validamos um carro com direção simples. Sem ar-condicionado. Com manivela para os vidros. E estávamos prontos para vender o Ka deste modo. Mas o que veio acontecendo muito rapidamente no Brasil? Para onde o mercado estava indo? Ninguém mais queria carro sem trio elétrico. Não fazia mais sentido ter um modelo pelado”, diz Machado. “O mercado é muito rápido. Tivemos de reavaliar a estratégia. Ter 100% dos carros com rádio e Bluetooth era algo que já tínhamos definido, senão teríamos tido muito retrabalho. Mas a decisão de ter um carro completo desde o modelo mais barato veio do meio para o final do projeto.”

Ramos cita a ajuda que outros times da empresa deram nesta mudança de rumo. “Oferecer um carro completo ao cliente na propaganda e levá-lo à loja para encontrar um pelado faz o cliente se sentir enganado, segundo a equipe de marketing. E eles têm toda a razão.” De fato, adquirir um carro pelado e equipá-lo com opcionais é um dos piores negócios que qualquer comprador de automóveis poderia fazer. Com um modelo completo, sem opcionais, a Ford dá ao cliente a chance de não perder tanto dinheiro.

novo kaespecial desenvolvimento 8 700x393 Especial: O nascimento do Ka visto de dentro

Escala em benefício do cliente

Mas isso não foi mera liberalidade da filial brasileira. O ganho de escala que o plano “One Ford” oferece permite incorporar equipamentos de segmentos superiores a preços competitivos. Tanto que o Ford Ka é o primeiro modelo de entrada brasileiro a oferecer controle de tração e de estabilidade, que já é de série em muitos modelos de entrada europeus. “Essa estratégia global da Ford certamente nos beneficiou por aqui”, diz Machado, que cita um aspecto do plano que não é tão evidente nos modelos: as equipes globais.

“Nosso sistema de direção elétrica, por exemplo, é o melhor que tem na linha Ford. O grupo que cuida disso fica lá na Alemanha e são eles que desenvolvem as direções de todos os carros da marca. Com isso, o que vem de lá é o que existe de mais recente em software e tecnologia. E o Ka é o projeto mundial mais recente. Outro sistema que ninguém no segmento tem é o controle de estabilidade e de tração. Quando você tem uma plataforma de último nível, isso vem de vantagem. E com escala.” Ramos arremata. “É muito diferente de você trabalhar com plataformas antigas. A grande beleza do novo Ka é essa utilização de uma plataforma moderna, global.”

Opiniões dissonantes

Falando desse jeito, pode parecer que o trabalho correu liso, sem sobressaltos. Não é bem assim. “A área de design pode propor alternativas de estilo que esbarram em problemas técnicos ou no tempo de execução, mas temos um excelente alinhamento, mesmo com um dia a dia de opiniões dissonantes. Elas são importantíssimas. São elas que geram o desconforto e a busca de novas ideias. Tivemos, em todo o processo, uma maturidade muito grande. Tínhamos sempre o questionamento: qual é a necessidade do outro? Todo mundo sabia até onde podia caminhar com suas solicitações”, diz Machado.

Ramos explica a mesma coisa de uma outra maneira. “A gente é um grupo muito coeso. Todos tinham o mesmo objetivo: o de entregar o melhor modelo de entrada do mercado.” O chefe do projeto lembra de algumas ocasiões de ótima parceria entre a engenharia e o design, consideradas em diversas montadoras áreas em permanente conflito. “Temos três ótimos exemplos de alinhamento entre engenharia e design. O primeiro deles é o projeto de aerodinâmica do Ka. Você vê muitos vincos na carroceria. E cada um deles foi exaustivamente alterado. Trabalhamos neles em túnel de vento, mudávamos os vincos nos modelos de proporções menores e fazíamos interações para evitar turbulências. Foram milhares de horas de esforço, mas o resultado é que nosso coeficiente de arrasto é muito melhor que o dos carros da concorrência, algo que gera, por baixo, uns 5% de economia de combustível”, diz Machado.

“Tudo isso e o carro ainda tinha de ficar bonito, senão não venderia”, diz Ramos. “Pois é”, diz Machado. “E o formato de gota é o ideal, mas não dá para lançar um carro parecido com uma gota de jeito nenhum…” “O segundo exemplo de bons resultados da colaboração entre design e engenharia é a posição de dirigir do Ka. Você está 100% alinhado na posição correta. Isso aumenta o envolvimento do motorista, que fica totalmente acomodado. Os controles de áudio estão ao alcance das mãos, a ergonomia é exemplar… Foi um trabalho de maturidade de engenharia muito difícil”, diz Machado. “Todos os controles são de fácil acesso. A ergonomia é excelente. A área envidraçada é grande e você pode colocar alguém de 1,95 m para dirigir que não haverá desconforto”, diz Ramos.

“Por fim, o terceiro exemplo é o dos bancos traseiros. O Ka usa a mesma plataforma do New Fiesta, mas, no Fiesta, o design é mais charmoso. O intuito do Ka é ser um carro mais racional. Conseguimos elevar o ponto H do banco traseiro, inclinar as costas do banco traseiro e aumentamos muito o ângulo dos joelhos. Foi um trabalho exaustivo, mas voltado a acomodar confortavelmente as três pessoas que o carro leva ali. Temos certeza de que o resultado vai agradar”, diz Machado.

O chefe de design do Ka recupera um dado importante. “Isso também tem a ver com o trabalho de aerodinâmica. A do Ka é ótima para um hatch que, ainda por cima, é alto. Hatchbacks têm mais turbulência na traseira, ao contrário dos sedãs. Além da preocupação com aerodinâmica, também queríamos um espaço interno campeão. Fizemos um trabalho extenso de packaging”, diz Ramos.

novo kaespecial desenvolvimento 3 700x363 Especial: O nascimento do Ka visto de dentro

A parte final

A maior parte deste quebra-cabeças foi montado em 2012. O ano seguinte, por exemplo, foi dedicado às validações finais e à construção de protótipos. “Em uma primeira fase, os chamados protótipos de atributos possuem a parte inferior da carroceria, o chassis e o powertrain representativos do veículo final. Nesta fase, a parte de cima da carroceria vem, em geral, de um produto existente. São protótipos normalmente chamados pela imprensa de ‘mulas’. No caso do Novo Ka, a primeira fase de protótipos foi feita com a parte superior da carroceria do New Fiesta. A construção é feita por mecânicos e técnicos gabaritados e de acordo com rigorosos processos de controle e certificação da montagem, de maneira que a representatividade técnica do veículo seja assegurada para fins de testes e validações de engenharia”, diz Machado.

Depois das mulas, chega o momento de colocar o carro finalizado para rodar. “A segunda fase de protótipos possui também a parte superior da carroceria e o interior do veículo representativos do projeto final. Nesta fase, a montagem é feita em uma espécie de mini-fábrica, dedicada para a construção de protótipos. Alguns dos meios utilizados nessa ‘mini-fábrica’ já simulam processos da manufatura final do veículo. Desta forma, a construção destes protótipos ‘finais’ deixa de ser um processo essencialmente artesanal, se aproximando de uma produção em série. Ainda assim, a mão de obra empregada é experiente e altamente especializada, não somente para assegurar a qualidade da construção, mas também para fornecer à engenharia sugestões e oportunidades de melhoria do projeto que facilitarão a montagem do veículo em série, posteriormente”, diz Machado. A ergonomia de construção do novo veículo é um dos fatores mais importantes no processo. Se um veículo ameaça a saúde dos operários e tende a aumentar o número de RM (restrições médicas, nome dado aos funcionários que sofreram algum tipo de problema nas linhas de montagem e não podem trabalhar em todas as funções).

Ao todo, foram produzidos 150 protótipos, incluindo as mulas, que rodaram pelo Brasil, mas também por México, Alemanha, Índia, EUA e Reino Unido, lugares onde eles foram flagrados mais de uma vez. “Alguns foram montados no Brasil e outros construídos na Alemanha, em Colônia”, diz Machado.

No que se refere à validação final do veículo, o engenheiro nos dá uma ideia da complexidade do processo. “A validação de um automóvel da Ford inclui a verificação de mais de 5.000 testes e avaliações que fazem parte dos requerimentos corporativos de engenharia. Estes testes e avaliações abrangem não só os diferentes sistemas veiculares (carroceria e estruturas, interior, chassis, powertrain e elétrica), mas também o acerto dos atributos (durabilidade, dinâmica, desempenho, economia de combustível, ruído e vibrações, segurança, corrosão etc.).

Neste processo de validação estão incluídos testes de componentes específicos em bancadas e testes veiculares utilizando protótipos. Nos testes veiculares, os diferentes sistemas que compõem o veículo (onde os componentes estão inseridos) são avaliados tanto em laboratórios de testes (túneis de vento, dinamômetro de chassis, câmaras climáticas etc.) como também em diferentes tipos de pista de rodagem (asfalto seco e molhado, asfalto ruim, asfalto remendado, terra, pedrisco, paralelepípedo, lombadas etc.).”

Foi um longo caminho até 2014, ano em que restou à Ford fazer ajustes de ferramentas e de tolerâncias. “As mudanças feitas na linha de estamparia e montagem em Camaçari foram para acomodar os novos moldes e robôs empregados na produção do Novo Ka, assim como garantir a continuidade da produção dos veículos atuais com o novo lançamento. A tolerância entre as peças varia dependendo da interface entre as mesmas. As peças do interior do veículo, por exemplo, possuem menores espaçamentos do que as peças móveis do exterior, como portas e capô. As tolerâncias de espaçamento do Novo Ka seguem o padrão Global da Ford, adotado nos EUA, Europa e também na América do Sul”, diz Machado.

A etapa final, de lançamento do carro, não deu menos trabalho que as demais. “Os preparativos para o lançamento do Novo Ka envolveram praticamente toda a companhia no Brasil e em muitas áreas no exterior. Foram diversos eventos, liderados pelas equipes de Imprensa e Marketing, mas com participação importante dos times de Logística, Manufatura e Engenharia, de maneira a assegurar o cumprimento dos prazos e a preparação dos materiais técnicos para suportar o lançamento e a divulgação do veículo”, diz Machado.

Todo esse cuidado não impede alguns percalços. O Ka já teve seu primeiro recall anunciado, envolvendo 219 unidades do carro, ou cem unidades a menos do que ele vendeu em seu primeiro mês, 319, em apenas parte de agosto. O miolo da partida pode girar sozinho e desligar o carro em movimento. Lamentavelmente, há quem veja os recalls como algo negativo. Para estes, vale lembrar dos tempos de recalls brancos, nos quais os defeitos eram jogados para debaixo do tapete e os acidentes creditados ao motorista ou a qualquer outro problema que não o carro.

Independentemente disso, e na falta de uma montadora para chamar de sua, a engenharia e o design brasileiros têm muito de que se orgulhar com feitos como o da Ford. “Hoje podemos afirmar com seguranca que a Ford no Brasil é uma das poucas organizações que possui capacidade técnica e de liderança para desenvolver um automóvel desde a sua concepção até o lançamento final ao cliente, com colaboradores brasileiros, representando praticamente todos os Estados, além de contar com suporte e conhecimento dos melhores especialistas do mundo em desenvolvimento de engenharia e manufatura.” Vale lembrar que o nosso Ka será vendido em diversas partes do planeta, com nomes diferentes. Na Índia, será o sucessor do Figo, um Fiesta Rocam com linhas diferentes. Na Europa, estamos curiosos para saber como será batizado. Tenha o nome que for, o Ka é produto brasileiro, mesmo quando for feito fora daqui.

A noticia Especial: O nascimento do Ka visto de dentro foi publicada no site Notícias Automotivas - Carros.








17 Oct 01:08

Um dispositivo para ajudar quem tem medo de injeções

by Ronaldo Gogoni

fear-of-needles

Admita: mesmo que hoje você seja uma pessoa corajosa e confiante, houve um momento da sua vida (principalmente na infância) em que você tremia nas bases toda vez que a enfermeira chegava perto de você com uma agulha. Há pessoas que mantiveram o medo de injeção até a idade adulta, e é pensando neles e principalmente nas crianças que uma equipe da Associação Americana de Anestesistas (ASA) conduziu um estudo em que definiu que é possível utilizar aparelhos que amenizem a dor e que mantenham tanto os pequenos quanto os grandões tranquilos.

O dr. William McKay, autor do estudo e professor de anestesiologia na Universidade de Saskatchewan no Canadá lembrou que os esforços para criar um dispositivo que elimine a dor de uma injeção vão além de ser simplesmente algo para aliviar a tensão de quem tem medo de injeções, é uma questão de saúde pública. “Cerca de uma em cada dez pessoas tem medo de agulhas, e isso pode se refletir em uma queda nos índices de vacinação e doação de sangue”. Eu concordo com ele. Já mencionei a várias pessoas a importância de fazer doações periódicas, principalmente no período de festas onde os bancos de sangue ficam com os estoques perigosamente baixos, e mais de uma vez ouvi a desculpa do medo da agulha. Porque dói, porque é enorme, etc.

O estudo do dr. McKay sugere que “um dispositivo que aplique uma certa pressão e vibrações antes da picada ajudaria a reduzir significantemente a sensação de dor, fechando os canais que levam as informações sensoriais ao cérebro”. Os testes foram realizados em 21 adultos com diferentes tipos de pressão, vibração, aquecimento e resfriamento da região que seria perfurada pela agulha. Enquanto que o calor causava uma resposta pequena, os voluntários relataram que uma certa quantidade de pressão e vibração vinte segundos antes da injeção tradicional reduziam drasticamente a sensação de dor.

O dr. McKay acredita que não só os agentes de saúde poderiam utilizar aparelhos já existentes no mercado para diminuir a dor de injeções, como também empresas absorverem os resultados dos estudos a fim de aprimorarem os atuais e lançarem novos, de modo a tornar tratamentos intravenosos menos sofridos e atrair aqueles que não doam sangue ou que não participam de campanhas de vacinação por medo de levar uma espetada de uma agulha.

Fonte: SD.

The post Um dispositivo para ajudar quem tem medo de injeções appeared first on Meio Bit.








03 Oct 00:53

Físicos teletransportam o estado quântico de um fóton para um cristal distante 25 km

by Estrela Steinkirch

Cristais que contêm informações do fóton após o teletransporte.

Calma, ainda não vamos poder mandar o chefe pra Marte. Ainda. As pesquisas estão avançando e, há 10 anos, pesquisadores já tinham teletransportado o estado quântico de um fóton para um cristal por 6 km. Dessa vez, a distância é bem maior.

Uma equipe de físicos teletransportou com sucesso um estado quântico de um fóton de um cristal por mais de 25 quilômetros de distância através de um cabo de fibra óptica. Isso efetivamente mostrou que o estado quântico do fóton, e não a sua composição, é importante para o processo de teletransporte. A equipe foi liderada por Nicolas Gisin da Universidade de Genebra, e os resultados foram publicados na revista Nature Photonics.

Com esse novo artigo, a equipe de Gisin esmagou com sucesso o recorde anterior, quando teletransportaram o estado quântico de um próton por 6 km (Go on! São só 75 milhões de quilômetros até Marte). Os resultados provam “que o estado quântico de um fóton pode ser mantido enquanto transportá-lo em um cristal sem os dois entrarem diretamente em contato”.

quantum-entanglement

Simplificação do que seria o entrelaçamento quântico.

O teletransporte quântico envolve mover pedacinhos de dados de um lugar para outro instantaneamente, através de um fenômeno conhecido como entrelaçamento quântico (não, não é pseudociência). Entrelaçamento é quando duas partículas ligadas agem como gêmeas, mesmo quando elas estão separadas, e significa que a informação pode imediatamente ser passada de uma para outra sem que elas se toquem (não é lindo isso?).

Primeiro, imagine que dois fótons estão nesse estado de emaranhamento. Para testar e garantir que os cientistas realmente estavam observando essa situação, um fóton foi enviado junto a fibra óptica, a uma distância de 25 km, enquanto o segundo fóton foi armazenado em um cristal. Um terceiro fóton foi enviado como uma bola de bilhar pela fibra óptica para bater o primeiro fóton, destruindo ambos. Os cientistas mediram essa colisão e constataram que a informação contida no terceiro fóton não foi destruída, mas tinha de fato sido transferida para o cristal contendo o segundo fóton emaranhado.

Isso demonstra que “o estado quântico dos dois fótons emaranhados, que são como dois gêmeos siameses, é um canal que permite o teletransporte de luz em questão”, disse Felix Bussieres, principal autor do novo estudo, em um comunicado à imprensa.

É preciso imaginar o cristal como um banco de memória para armazenar informações do fóton, este último é transferido durante estas distâncias usando o efeito do teletransporte”, explica.

O fóton não se teletransportou fisicamente como estamos acostumados na ficção científica, em que o corpo de alguém pode ser movido de um lugar para outro em questão de segundos (meu plano falhou?). Em vez disso, as informações contidas no fóton distante podem ser analisadas com base nos dados que o cristal obteve através do entrelaçamento quântico. Ao conhecer um, você já conhece o outro.

Os pesquisadores estão fascinados com o teletransporte quântico, pois ele pode revolucionar a forma de carregar e transmitir dados. Eles lutaram até agora para encontrar maneiras em que a informação quântica armazenada em luz possa ser usada ​​em sistemas de comunicação existentes.

O fato de que os pesquisadores foram capazes de fazer esse experimento ao longo de 25 quilômetros é enorme em termos de descobertas e avanços futuros e essas conquistas do laboratório de Gisin também devem melhorar a forma de como as interações de entrelaçamento quântico são medidas.

Ainda há um longo caminho a percorrer antes que nós usemos o teletransporte quântico em sistemas de comunicação real, mas este é um passo importante para o desenvolvimento de pesquisas futuras.

A Ciência dá um passo de bebê por vez.

Fonte: SD.

The post Físicos teletransportam o estado quântico de um fóton para um cristal distante 25 km appeared first on Meio Bit.








01 Oct 02:12

CANTANDO AO VIVO

by admin

É difícil chegar em mulher. Vamos falar sério, não é fácil dar aquela cantada na mulher que está na sua mira. Dá aquele nervoso, a gente nunca sabe qual vai ser a resposta e muitas vezes existem pessoas que evitam de sair só pelo nervosismo de não passar por esta situação.

Mas parece que dar uma cantade não é difícil pro novo apresentador do Jornal da Record, Tino Junior. Ele só tentou dar uma catucada na sua repórter comprometida ao vivo, né, nenenzinho?!

Fica a dica de cantada: 

- Hoje é sue aniversário? Não? Mas você tá de parabéns, hein!?
(é infalível…)

29 Sep 17:10

Exemplo de driver para Linux Embarcado

by Vinicius Maciel

Neste artigo daremos um pequeno e simples exemplo de como codificar um device driver para Linux Embarcado. Na verdade esse exemplo funciona no Linux Desktop também,...
veja+

The post Exemplo de driver para Linux Embarcado appeared first on Embarcados - Sua fonte de informações sobre Sistemas Embarcados.

26 Sep 19:08

Aqui é Magica


Curtiu né?!

25 Sep 17:21

Kate Upton dançando

by Edu
25 Sep 16:01

Quando tirar um selfie…

by Edu

selfie

O post Quando tirar um selfie… apareceu primeiro em Testosterona.

23 Sep 02:40

Dossiê películas automotivas: conheça os principais tipos, opções, detalhes e o que diz a lei

by Renato Parizzi

pelicula-vidro-para-brisa-carro-automovel-Brasil-insulfilm-windowfilm-3M-Intercontrol

O mercado brasileiro de carros possui uma infinidade de opções em acessórios. O mais conhecido é o bom e velho sistema de som, que agora conta com muito mais recursos. Outro bastante procurado pelos consumidores, sem dúvida, é a película – popularmente conhecida como “insulfilm”. Com preços variando entre R$ 100 e R$ 900, esse item também evolui e hoje existem tantos tipos disponíveis que as pessoas podem até se confundir, comprando um produto errado, inadequado para a sua necessidade, de baixa qualidade e, ainda por cima, fora da lei.

Pensando nisso, montei um “dossiê” com os tipos, opções e detalhes das principais opções de películas do mercado. Aproveite!

Segundo Gustavo Morais, diretor comercial da Prisma Film, distribuidor autorizado da 3M em Minas Gerais, a cada 100 carros vendidos, 80 deles têm película. É um número muito representativo, demonstrando que esse acessório, definitivamente, é importante para o consumidor.

Com essa informação, fiz um estudo com 120 proprietários de carros com películas no Brasil. Enviei para eles uma série de perguntas e, com as respostas em mãos, pude analisar, um pouco, o comportamento do consumidor brasileiro.

pelicula-vidro-carro-automovel-Brasil-insulfilm-windowfilm-tipos

Para 95% dos perguntados, o uso da película automotiva é visto como um item de segurança. Para 67%, a película é usada também para o conforto térmico, ajudando a manter o habitáculo do veículo com temperatura mais agradável. Para 34%, ela é apenas um bem estético, que aprimora o visual do automóvel. Para apenas uma pessoa entrevistada, ela é uma ferramenta de proteção contra as queimaduras e possíveis doenças causadas pelos raios solares.

De acordo com as respostas dos proprietários, os principais benefícios e problemas das películas são:

+ Sensação de mais segurança (ladrões tem mais dificuldade para ver o que tem dentro e quantas pessoas estão no carro)
+ Melhora o conforto térmico
+ Deixa o carro mais bonito
+ Protege contra os raios solares
+ Aumenta a proteção em caso de batida por ajudar a segurar os estilhaços

- Visibilidade reduzida, especialmente nas ruas a noite (e na chuva ou em condições climáticas ruins), em estacionamentos, garagens e em outras condições – além da dificuldade de enxergar os outros motoristas
- Dificulta o trabalho da polícia, pois os policiais têm dificuldade de ver o que está acontecendo dentro do carro

Levando essas percepções em consideração, comecei a analisar os tipos de películas disponíveis para o mercado automotivo. E, assim como o sistema de som, existem modelos péssimos, ruins, regulares, bons e excelentes. O preço vai variar, principalmente, de acordo com o fabricante, o modelo do produto, o carro, a qualidade da instalação e, obviamente, a qualidade do produto.

pelicula-vidro-carro-automovel-Brasil-insulfilm-windowfilm

O que diz a lei
Antes de conhecermos os tipos mais comuns de películas, vale sabermos o que diz a lei. De acordo com o Contran, não existe restrição para a instalação da película automotiva em nenhum dos vidros de um automóvel. Porém, película instalada deve obedecer a uma série de critérios, principalmente de luminosidade. Veja o que diz a resolução nº 254:

Art. 1º Os veículos automotores, os reboques e semi-reboques deverão sair de fábrica com as suas partes envidraçadas equipadas com vidros de segurança que atendam aos termos desta Resolução e aos requisitos estabelecidos na NBR 9491 e suas normas complementares.

§1º Esta exigência se aplica também aos vidros destinados a reposição.

Art. 2º Para circulação nas vias públicas do território nacional é obrigatório o uso de vidro de segurança laminado no pára-brisa de todos os veículos a serem admitidos e de vidro de segurança temperado, uniformemente protendido, ou laminado, nas demais partes envidraçadas.

Art. 3º A transmissão luminosa não poderá ser inferior a 75% para os vidros incolores dos pára-brisas e 70% para os pára-brisas coloridos e demais vidros indispensáveis à dirigibilidade do veículo.

§ 1º Ficam excluídos dos limites fixados no caput deste artigo os vidros que não interferem nas áreas envidraçadas indispensáveis à dirigibilidade do veículo. Para estes vidros, a transparência não poderá ser inferior a 28%.

§ 2º Consideram-se áreas envidraçadas indispensáveis à dirigibilidade do veículo, conforme ilustrado no anexo desta resolução:

I  a área do pára-brisa, excluindo a faixa periférica de serigrafia destinada a dar acabamento ao vidro e à área ocupada pela banda degrade, caso existente, conforme estabelece a NBR 9491;

II – as áreas envidraçadas situadas nas laterais dianteiras do veículo, respeitando o campo de visão do condutor.

pelicula-vidro-carro-automovel-Brasil-insulfilm-windowfilm-3M-Intercontrol

Veja o índice de luminosidade de acordo com o Contran

Caso você queira saber mais sobre a definição do instrumento hábil para medição da transmitância luminosa de vidros, clique nesse link do Denatran.

Se você deixar o seu vidro com uma película que extrapole os números estabelecidos pela lei, saiba que você poderá ser multado, perdendo 5 pontos na carteira nacional de habilitação e será obrigado a pagar uma multa de R$ 127,96. Se isso não for suficiente, o carro será aprendido e só será liberado depois que a película for retirada ou trocada por uma legal.

Tipos de película
Existem dezenas de tipos de películas, que variam de acordo com a necessidade do consumidor. Basicamente podemos encontrar variações de cor, transparência, espessura e refinamento do filme automotivo, atendendo aos mais variados gostos.

Confira as mais comuns que encontrei, seus detalhes e preços, com base em pesquisa realizada com 16 lojas especializadas e concessionárias de Belo Horizonte e da região metropolitana da capital mineira:

Película “básica”: é a película mais popular, de qualidade mais simples, que possui diferentes tipos de transparência – normalmente entre 5% e 35%. Seu preço costuma variar entre R$ 100 e R$ 250.

Película “avançada”: tem as mesmas características da básica, mas a sua fabricação é mais refinada, criando um produto de qualidade superior, que melhora o conforto térmico, a proteção contra os raios solares e mais alguns aspectos. Sua transparência costuma variar entre 5% e 50%, com preço ficando entre R$ 280 e R$ 450.

Película de “segurança”: erroneamente chamada de “semi-blindada” (erro porque não tem nada de blindada, nem “semi”), essa película se assemelha mais à “básica”, mas seu filme é mais espesso, aumentando a segurança dos ocupantes em caso de um acidente, pois ajuda na retenção dos cacos de vidro, e dificulta um pouco mais (não impede) a quebra do vidro. É mais comum encontrarmos o índice de transparência para essa película variando entre 5% e 35%. Seu preço varia entre R$ 250 e R$ 400.

pelicula-vidro-carro-automovel-Brasil-insulfilm-windowfilm-film

Entre as mais baratas, consegui encontrar vários lugares que não souberam me dizer a procedência do produto ou, pelo menos, onde a película era fabricada. Para os lugares mais organizados e sérios, encontrei o modelo “Standard”, da marca Intercontrol, e o EX, da 3M.

“A 3M lançou a linha EX apenas no mercado brasileiro como uma forma de se aproximar das concessionárias e das lojas de acessórios. Também foi uma forma da marca se expandir entre os consumidores das mais variadas classes econômicas”, afirma Gustavo Morais, diretor comercial da Prisma Film.

Mesmo mais simples, no teste prático que pude fazer com a EX e com uma concorrente de marca desconhecida (nem a loja sabia qual era a marca), gostei muito do que vi de uma delas. A película da 3M era visivelmente superior à anônima, mas inferior às suas irmãs mais caras e refinadas. Mas a EX não fez feio e apresenta uma relação custo/benefício bem interessante.

Existe ainda um outro tipo de película que, para países como o Brasil, que possui temperaturas altas e muito sol, é excelente: a transparente. Ela realmente vai de encontro às dificuldades encontradas pelos motoristas para proteger o painel e evitar os raios que entram pelo para-brisa, já que a lei exige que a transmissão luminosa não pode ser inferior a 75% nesse vidro.

Película de “para-brisa“: costuma ser a topo de linha das marcas devido à sua qualidade de fabricação. Por ser quase que totalmente transparente, ou possuir limites de índices de transparência que atendam ao mínimo de 75% de visibilidade no para-brisa, essa película possui uma tecnologia embarcada mais alta para conseguir broquear os raios solares, melhorando o conforto térmico. Seu preço varia entre R$ 690 e R$ 900.

“A linha Crystalline (CR) oferece alta transparência e rejeita mais calor do que boa parte das películas mais escuras do mercado. Ela bloqueia até 99,9% dos raios UV’s, o que pode ser comparado a um fator de proteção solar de FPS 1.700+”, completa Morais, sobre a película transparente da 3M. Confesso que sempre me lembro desse número (1.700) quando vou passar protetor solar antes de sair ao sol.

Teste de energia

Teste prático
Depois de muita teoria, estudo e pesquisa, resolvi fazer dois testes práticos. O primeiro, de energia, você conhece no vídeo acima (mais detalhes na descrição do vídeo). No segundo, deixamos um carro equipado com duas películas diferentes, sendo um tipo no para-brisa e outro tipo na porta, no sol durante uma manhã. Com um termômetro a laser, medimos a temperatura em duas superfícies do veículo que sofrem diretamente com o sol no dia a dia: o estofado da porta e o painel central.

Na parte superior interna da porta do motorista, entre o apoio de braço e a janela, a temperatura foi de 58°C, com uma película FX70 da 3M instalada no vidro. Essa película é superior à EX, que citei acima, e inferior à “avançada” (no caso da 3M é a Color Stable, ou apenas CS). A linha FX é mais voltada para o para-brisa, mas com custo menor do que a Crystalline (é a topo de linhas que comentei antes). Como o próprio nome já diz, a FX70 tem 70% de transparência, rejeitando 28% da energia solar e 99% dos raios UV.

Honda-Civic-LXR-2015-Brasil-interior-painel

Painel do Honda Civic “sofre” rapidamente com a alta temperatura quando o carro fica no sol

Menos de 1 minuto depois medimos a temperatura na parte superior do painel, acima do porta-luvas, que estava com 45°C. A diferença expressiva de 13°C só foi possível por causa da película transparente CR40 (Crystalline 40) que tem 39% de transparência, rejeitando 60% da energia solar e 99,9% dos raios UV.

É importante esclarecer um questionamento comum que percebi nas pesquisas que fiz: mesmo com película nos vidros, o interior do carro pode chegar a temperaturas muito altas, especialmente depois do automóvel ficar parado no sol por muitas horas. Ou seja, a película não impede que o interior do carro esquente, apenas melhora o conforto térmico interno e protege os ocupantes dos raios UV. Por isso, logo que entrar do seu carro, ligue o ventilador e abra os vidros para o ar interno circular, eliminando a “estufa” criada no habitáculo.

Linha 3M no Brasil

Produto “para-brisa” Luz visível transmitida Bloqueio de UV Energia solar rejeitada Garantia
Crystalline 40 39% 99,9% 60% 15 anos
Crystalline 70 69% 99,9% 50% 15 anos
Crystalline 90 88% 99,9% 34% 15 anos
Produto “avançado” Luz visível transmitida Bloqueio de UV Energia solar rejeitada Garantia
Color Stable 5 – (CS5) 9% 99% 57% 10 anos
Color Stable 20 – (CS20) 19% 99% 51% 10 anos
Color Stable 35 – (CS35) 39% 98% 40% 10 anos
Color Stable 50 – (CS50) 52% 98% 35% 10 anos
Produto “segurança” Luz visível transmitida Bloqueio de UV Energia solar rejeitada Garantia
Segurança 20% – (SAS20) 17% 99% 58% 10 anos
Segurança Incolor – (SH4 Clear) 74% 98% 42% 10 anos
Produto “básico” Luz visível transmitida Bloqueio de UV Energia solar rejeitada Garantia
EX Basic 5 – (EX5) 5% 99% 42% 1 ano
EX Basic 20 – (EX20) 20% 99% 39% 1 ano
EX Basic 35 – (EX35) 38% 99% 35% 1 ano
Produto “intermediário” Luz visível transmitida Bloqueio de UV Energia solar rejeitada Garantia
FX 70 70% 99% 28% 3 anos

 Fonte da tabela: Prisma Film/3M

Para encerrar, deixo algumas dicas para quem já tem ou vai mandar instalar uma película automotiva no carro:

  • Sempre respeite a lei;
  • Escolha o produto mais adequado para a sua necessidade (algo mais simples, refinado, segurança, proteção solar etc.);
  • Leve o seu veículo em lojas de confiança, que ofereçam um ambiente adequado para a instalação da película;
  • Peça sempre para ver a película antes da instalação e peça para que a loja mantenha as marcas que vêm nas películas durante a instalação (você pode removê-las depois, em casa);
  • Exija o certificado de garantia da sua película. Se a loja enrolar ou você notar que a garantia não virá com a nota fiscal, fuja do lugar com o seu carro e procure uma loja de confiança.
  • Desconfie de preço excessivamente baixos: provavelmente a película é de péssima qualidade;
  • Fechando: leve em consideração películas mais refinadas e de marcas mais conhecidas, mesmo que elas custem um pouco mais. Assim como óculos escuros ou de grau, que sempre investimos na melhor qualidade possível, o mesmo deve ser feito no caso das películas automotivas, pois, já em curto prazo, você terá o retorno do seu investimento dividido em conforto visual, térmico, dermatológico e segurança.
23 Sep 02:12

Por que as amizades masculinas podem ser tão vazias

by Mark Greene

“Quer ser meu amigo?”

Qual foi a última vez que você ouviu um homem fazer esta simples pergunta a outro homem? Crianças a fazem todos os dias no parquinho, mas, em algum ponto do ensino fundamental, os meninos param de fazer esta pergunta – a questão rapidamente se torna um convite para sarcasmo, rejeição e zombaria. Imagine que um sujeito chamado João vá a um bar com um grupo de homens colegas de trabalho. Um dos caras diz, “João, este é o Beto”. Eles conversam por um tempo e, então, João diz com alegria: “Beto! Que prazer te conhecer. Gostei de ti. Quer ser meu amigo?”.

Corta. Ao redor da cena, olhares abismados. João acabou de violar a regra tácita do “don’t ask, don’t tell” (Não pergunte, não conte). Não admita que você anseia por ou precisa de amigos. Não admita que você precisa de qualquer coisa. Seja confiante. Seja autossuficiente. Só quem não precisa de amigos é digno deles.

Não seja um caubói. A tentativa masculina de evitar o risco emocional ao fazer amigos muitas vezes resulta em amizades impessoais e não autênticas.

Não seja um caubói. A tentativa masculina de evitar o risco emocional ao fazer amigos muitas vezes resulta em amizades impessoais e não autênticas.

A pergunta que homens não querem fazer

A razão por que a maioria dos homens jamais solicitaria amizade diretamente a outro homem é que, desde meninos, temos pouca ou nenhuma oportunidade na vida para aprender esse tipo de tomada de risco. Esses momentos criam incertezas agonizantes para os homens. Pedir por amizade sugere vulnerabilidade, uma posição social flexível e até mesmo a disposição de admitir as necessidades. Todos estes valores condenados sem rodeios.

Desde cedo, os homens são ensinados a obter acesso às amizades de forma enviesada, agrupando-se em grupos, times ou organizações claramente definidos. Para os estadunidenses, as oportunidades para contato social surgem nos escoteiros, em times de beisebol ou nas escolas.

Esse tipo de organização social alinha grandes grupos e ensina os garotos a seguir regras claras e simples de como se comportar enquanto menino. Algumas organizações, como os escoteiros, chegam a distribuir pequenos manuais impressos pelos quais se pode determinar posição, status, comportamento e formas adequadas de expressão.

Dentro dessas organizações, até aqueles com dificuldades de socialização são aceitos, ainda que de forma mau humorada, independentemente de suas posições sociais. Rapidamente, os meninos aprendem a se posicionar. Os alfas no topo, os desajustados sociais ou meio nerds lá embaixo.

Também rapidamente, esses meninos aprendem que o avanço na organização não requer as habilidades complexas da compreensão de nuances ou de lidar com incertezas. Correr riscos sociais não é recompensado. Para ficar no topo, basta a aplicação da confiança, da autoafirmação e uma disposição para exercer a masculinidade de acordo com as normas.

A associação dos meninos a essas organizações ensina uma expressão de identidade social simplificada. Por extensão, as amizades formadas nestes espaços são, também, expressas de formas restritas ou simplificadas. São amizades que promovem a conformidade e desencorajam a autenticidade entre as pessoas.

Lema dos lobinhos: "Sim! Melhor, melhor, melhor, melhor"

Lema dos lobinhos: “Sim! Melhor, melhor, melhor, melhor”

Segurança em primeiro lugar

Na idade adulta, os homens continuam a procurar amigos nos contextos seguros e altamente conformistas do trabalho, esportes coletivos, igrejas ou conexões familiares e sociais de suas esposas.

Ficam amigos dos pais que conhecem em reuniões de pais e mestres. Amparam-se em clubes, nas repúblicas universitárias ou na tropa de escoteiros do filho. Conectam-se pelas organizações a que pertencem e buscam amizades por meios aprovados coletivamente.

Uma vez que tais amizades são fundadas em instituições, os homens acabam mantendo muito do que lhes é peculiar escondido, atendo-se à cultura daqueles grupos. Isso causa um elevado grau de homogeneidade na expressão e manutenção das amizades masculinas. José é meu amigo porque José vem ao boliche todas as semanas, e não porque José é alguém com quem eu me conecto em qualquer outro nível. Esse tipo de amizade, livre de riscos e baseada em proximidade, pode causar desconexão, fazendo com que o homem se esconda ou se frustre emocionalmente.

A conformidade organizacional garante o pertencimento, mas não a expressão.

É por isso que, para os homens, quando a participação numa organização acaba, muitos dos relacionamentos ou amizades embutidas nestas organizações também terminam – a não ser nos casos em que os vínculos emocionais já se desenvolveram.

A autenticidade emocional é a cola que mantém as amizades coesas. Sem ela, as amizades são superficiais ou frágeis demais para sobreviver além da mera conveniência.

Bem-vindo à Caixa do Homem

Na ausência de emoções reais, os homens se tornaram homogêneos ao se expressarem. Essa igualdade encoraja que eles vivam, por vontade própria ou não, no que muitos escritores chamam de Caixa do Homem.

A Caixa do Homem é um conjunto de expectativas rígidas que definem o que é “um homem de verdade”, especialmente na cultura estadunidense. É ele que ganha o pão. Ele é hétero. É apto com o corpo. Joga ou assiste esportes. É o participante dominante em qualquer troca. É um bombeiro, advogado ou CEO. É homem com H.

Quem decide o que significa “Homem que é homem...”?

Quem decide o que significa “Homem que é homem…”?

Um homem propõe sexo com uma mulher e aceita um “não” sem perder a pose. Um homem tenta convencer um cliente a comprar um produto e recebe um “não”, mas isso faz parte. Porém, pedir a outro homem “por favor seja meu amigo”, representa um risco social que é assustador demais para se tentar. Isso porque, no momento em que faz essa pergunta, o homem fracassou em ser o que se espera de todos os homens. Ele fracassou em ser, e preste bem atenção na palavra que usarei aqui, competente.

Os homens se movem em círculos de competência. A aptidão é um componente central para o posicionamento dos homens nas instituições em que confiam para conexão social – seja nos esportes, no trabalho e em qualquer churrasco de garagem ou quintal. Nos aproximamos uns dos outros não apenas em termos de interesses comuns, mas em termos de nossas habilidades nessas áreas. Importa, e muito, saber como fazer.

Além disso, só nos aproximamos uns dos outros com nossas questões pessoais bem amarradas e completamente formadas. Somos bem-sucedidos, inteligentes, felizes e cheios de conselhos sobre como fazer corretamente o que precisa ser feito. Por conseguinte, temos muitas amizades que já surgem prontas, nascidas magicamente de nosso charme e carisma masculinos naturais.

Treinados para nos esconder na barganha

O foco na competência anda junto com a crença de que nossas chances de sucesso aumentam quando alavancadas por algo que podemos usar em nosso favor. Nossa posição na empresa. Nosso sucesso financeiro. Nossa habilidade no golfe. Nossa disposição em avançar as metas da organização. Algo mais do que o simples fato de ser quem somos.

Abrimos a conversa com “você vai querer ser meu amigo pelas coisas que posso conseguir para você, não por minha pessoa em si” e levamos essa mesma dinâmica para os relacionamentos românticos, geralmente começando com a história de que somos bons provedores. É por isso que pagamos pela refeição no primeiro encontro ou enraizamos os hábitos de abrir portas e prestar serviços para as mulheres.

No fundo, nós nos preocupamos em não ser suficientes sem o elemento financeiro ou da prestação de serviço. Ou, pior do que isso, nos preocupamos por que queremos manter diversos elementos de barganha em qualquer relacionamento que começamos.

De todo modo, isso diz respeito à insegurança masculina. Essa insegurança nasce do fato de que nunca nos foi ensinado a usar as emoções de nosso verdadeiro eu. Para entrar nesse mundo, ao invés de oferecer quem somos como seres humanos, estabelecemos um padrão cíclico no qual se espera sempre que os homens tragam, contribuam, produzam, provenham.

De forma a evitar a vulnerabilidade, somos convencidos de que é mais fácil comprar a entrada nos relacionamentos como se faz em uma transação. Nos oferecer é assustador demais e, coletivamente, criamos os homens para que sejam inseguros a não ser que possam jogar suas vantagens na mesa (tanto os homens quanto as mulheres participam desse ciclo de supressão emocional que atravessa várias gerações. É pagar para brincar).

Assim, tiramos nossas histórias pessoais do foco e dispomos nossas competências, nossas redes e nossas narrativas alfa em seus lugares. E se as amizades masculinas dizem respeito exclusivamente à confiança e competência, não podem, por definição, serem muito autênticas: ninguém é competente em tudo. Ninguém está totalmente livre de incerteza ou confusão.

Um brinde à você, meu amigo. Mas só por que você é foda.

Um brinde à você, meu amigo. Mas só por que você é foda.

Incerteza = Coragem = Amizade

Quando se compartilha a incerteza, começamos a fazer perguntas maiores. E é nessas conversas em que o homem fala com honestidade. Se engajar na incerteza é a forma mais elevada de coragem e, ao fazer isso, nos movemos na direção de certezas mais profundas e duradouras.

Se as amizades nas vidas dos homens parecem superficiais e transitórias, é porque muitos destes relacionamentos existem sem riscos emocionais e, como tais, lhes falta autenticidade. E a autenticidade é o que mantém as amizades mais profundas por mais tempo.

Por isso eu, por exemplo, estou buscando amizades por meios mais individualizados e diretos – fora de minha rede imediata, onde todos que encontro são parecidos comigo. Vou buscar amizades fora de minhas zonas de conforto. Vou me arriscar, já que o panorama insosso da conformidade social não é e nunca foi suficiente para mim.

Se eu receber um “não obrigado”, vou só seguir em frente e continuar tentando. Não vou mais iniciar minhas conversas com algo que se meça em valor. Não vou usar minha rede. Não vou usar minhas conexões. Não vou usar minha capacidade de obter aprovação ao me conformar com um conjunto de expectativas ou objetivos comuns.

Acima de tudo, estou apenas oferecendo a mim mesmo. Eu mesmo. Porque me orgulho de quem sou. Chegar aqui demandou um bocado de sangue, suor e lágrimas. E não vou esconder tudo isso só para garantir que os outros se mantenham confortáveis em suas escolhas.

Acima de tudo, quero viver uma boa vida. Quero correr riscos. Quero ser quem estou me tornando. E continuar a fazer amigos mais legítimos, com emoções verdadeiras.

 * * *

Nota do autor: Este artigo foi escrito em conversa com a terapeuta de casal e família Dra. Saliha Bava. Ela é demais.

Nota do editor: Este texto foi originalmente publicado no Goodmenproject.com e traduzido por nós com autorização do autor.


por Mark Greene








23 Sep 01:55

As duas grandes famílias de cerveja: Ale e Lager

by Bia Amorim

No processo de fabricação de cerveja, há várias etapas importantes. Uma das que mais se destaca é a escolha do tipo de fermentação pelo qual a cerveja passa. Apesar de não estarmos acostumados a segmentar as cervejas, todas têm uma classificação que nos ajuda a fazer escolhas mais acertadas.

As duas grandes famílias de fermentação nos levam a diferentes estilos: as Ales e as Lagers.

No começo, acreditamos que as cervejas de estilo Pilsen são Lagers, mas há um ditado usado para o conhaque que pode ser adaptado para este caso: “Toda Pilsen é uma Lager, mas nem toda Lager é uma Pilsen.”.

Para quem faz cerveja, é muito importante saber qual fermento vai usar porque, para cada escolha, há um processo diferente. Além disso, é importante que se saiba em qual temperatura o tanque estará, quantos dias vão durar o processo de fermentação e, posteriormente, o processo de maturação.

A fermentação vai produzir, junto com outras mecânicas da fabricacão, uma série de tipos de cerveja. Acompanhe a sua preferida, desde a família até o copo. basta clicar na imagem para ver maior

O que não nos falta são tipos de cerveja. Acompanhe a sua preferida, desde a família até o copo. Basta clicar na imagem para ver maior

A Fermentação

O processo pela qual a cerveja passa para transformar o que antes era mosto (água + açúcares extraídos do malte) em cerveja alcoólica. Para que isto ocorra, são adicionadas leveduras, os pequenos fungos que adoram açúcar. São eles que vão transformar o açúcar em álcool etílico e CO2 em subprodutos como fenóis e ésteres, importantes para o sabor e algumas outras características.

A partir daí, depois de escolher os ingredientes, o mestre cervejeiro, assim como um bom Chef de cozinha, irá rever a receita e escolher as técnicas. Depois do processo de fervura pelo qual o mosto passa, ele é resfriado e, então, as leveduras são adicionadas. Nesta etapa, já é importante ter bem definida em qual família esta cerveja estará, pois as leveduras trabalham sob uma temperatura controlada e cada família tem uma temperatura específica para trabalhar.

Depois de adicionadas, essas pequenas criaturas trabalharão incessantemente em um tanque bem fechado, com apenas uma válvula de escape para que saia apenas o excesso de gás e nada entre. Não pode haver “intrusos” no tanque.

Entre 4 e 12 dias, o que antes era apenas um “chá de malte” — o mosto — transforma-se em cerveja. E não é um passe de mágica!

Antigamente, o que era cultuado como um processo divino, hoje, sabemos que são seres vivos fazendo seu trabalho. Antes de Louis Pasteur, o processo de fermentação na fabricação não era tão conhecido e respeitado cientificamente como hoje.

Cada receita tem algo diferente. Chegando ao ponto desejado, o cervejeiro para o processo de fermentação, ou seja, as leveduras comeram todo o açúcar. Para isso, diminui-se a temperatura do tanque para aproximadamente 0º C, fazendo com que elas “durmam”, descansando para o próximo tanque. Elas são transferidas para barris, os mesmos usados para chope, e vão para a câmara fria descansar.

Por isso, os tanques cervejeiros são cônicos e pontudos por baixo, para facilitar a tarefa de retirar resíduos.

Assim como o iogurte que nossas avós faziam parecia durar uma eternidade, as leveduras que trabalham nas cervejas não agem uma vez só. Podemos também comparar com uma padaria, que cultiva seu fermento como parte da família. Hoje, cresce cada vez mais o número de cervejarias com seu próprio fermento e as grandes fábricas tratam com muita tecnologia das pequenas operárias comedoras de açúcar.

No Brasil, acredito que por pouco tempo, ainda não temos leveduras cultivadas aqui para a fabricação de cerveja. Todas são importadas. Entretanto, já existe uma movimentação dentro do meio para mudar isso.

As duas grandes famílias cervejeiras e novas maneiras de misturar

ALE (pronuncia-se “éiol”)

NY-Historical-Lager-Beer-poster

São as famosas cervejas de alta fermentação, a que “nasceu” com a cerveja.

Nela, usa-se o fermento Saccharomyces Cerevisiae, que começa seu trabalho entre 14º e 25º C. A levedura fica em suspensão dentro do tanque e foi por esse o motivo de ganhar o nome de “alta fermentação”, em inglês, top fermentation.

Este processo de transformação tem cerca de sete dias e libera, além de álcool, CO2 e diversos subprodutos, os ésteres que dão um perfil mais evidente; em sua maioria, são cervejas muito aromáticas e complexas, de sabores com toques de flores e frutado mais perceptíveis do que em cervejas da família Lager.

Os estilos mais conhecidos são: IPA, Weiss, Brown Ale, Saison, Stout, Porter, Dubbel, Trapistas, Pale Ale, Strong Golden Ale, Bitter.

LAGER (pronuncia-se “láguer”)

4_ale_stout

Apesar de ser a família mais conhecida no mundo, por conta da Pilsen, este estilo só começou a ser fabricado por volta de 1.400, quando, no sul da Alemanha, as cervejas passaram a ser produzidas em cavernas. Até então, somente as Ales eram conhecidas.

Comercialmente, ela só começou a se destacar depois do século XIX, com a chegada da refrigeração mecânica. A baixa fermentação, como é conhecida, trabalha em cerca de 10 º C nos tanques com os fermentos Saccharomyces Carlsbergensis e Saccharomyces Pastorianus e deposita no fundo do tanque.

A fermentação mais fria reduz a produção de ésteres e outros componentes de sabor, por isso, nesta família, em geral, o paladar é mais leve e as cervejas são mais carbonatadas e de fácil aceitação. Hoje, entretanto, não há uma regra.

Por isso, não se engane, pois também pode haver estilos mais complexos e aromáticos, se a receita do Chef assim pedir.

Os estilos mais conhecidos são: Helles, Bock, Schwarzbier, Vienna, Malzebier, Pilsen, American Light Lager.

As outras cervejas

Além das duas grandes famílias apresentadas, temos hoje no mercado mais dois tipos diferentes de cervejas. É um pouco complicado tratá-las como famílias, mesmo que pequenas, pois as duas também possuem aspectos das Ales e Lager, ao mesmo tempo que são bastante diferentes dos aspectos gerais de ambas as famílias.

bieres_de_la_mueses_by_mmschmidty-d5kspu5

Lambics

Na região de Bruxelas, na Bélgica, existe uma flora muito particular e, por conta disso, essa família tem um processo de fermentação pouco usual e só acontece nesta região.

Os tanques ficam abertos para que os microrganismos presentes naquela região depositem (caiam) sobre o mosto e transformem o açúcar em álcool de uma forma que chamamos de fermentação espontânea. O resultado, depois de longos meses de fabricação, são cervejas muito ácidas e bastante complexas, características do fermento selvagem e do processo nos barris de madeira.

Essas são cervejas conhecidas como Gueuze. Para amenizar, colocam-se frutas regionais, ou seja, cereja, framboesa e toda a gama de frutas que transformam o sabor da cerveja em algo parecido com uma espumante Brut. As de sabor ácido, cítrico, complexo e delicado são as Kriek – quase um Bordeaux da cerveja, ou seja, muitas vezes caro e incompreendido.

O processo de fermentação das Lambics é o mesmo de uma cerveja Ale.

Híbridas ou Mistas

Por ser uma novidade, ainda não recebem tanta atenção.

Essas cervejas usam uma variação de temperatura e não segue a regra Ale (alta fermentação) ou Lager (baixa fermentação). Uma levedura que normalmente trabalharia a 10º C pode trabalhar a 18º C; pode-se usar um pouco de levedura de cada família, misturar e “amém!”; pode-se, até mesmo, usar diferentes linhagens de fermento.

Ainda sendo um conceito pouco usado, o vejo como uma boa experiência e não há nenhuma regra para descobrir novos meios e produtos. Até mesmo legumes, ervas e ingredientes defumados hoje são testados em receitas caracterizadas híbridas.  A Cream Ale é um estilo considerado híbrido, assim como a Red Ale de Flanders, famosa por ser tão diferente e deliciosa.

Todas as famílias podem, ou não, depois do processo de maturação, serem filtradas e pasteurizadas. As cervejas Ales têm uma tendência menor em serem filtradas, para manter um pouco mais a sua complexidade, mas isso não é regra. As cervejas que passam por esses processos ficam mais brilhantes e pode ter um drinkability maior, ou seja, ficam mais fáceis para serem consumidas em maior quantidade.

Sabendo agora a diferença entre as famílias, já tinha parado para pensar nisso? E qual a família que mais lhe agrada, qual o estilo que é mais familiar para você? Vamos colocar alguns rótulos aqui embaixo, nos comentários?

É só colocar qual cerveja você prefere, se ela é Ale ou Lager. Daí a conversa segue.


por Bia Amorim








23 Sep 01:40

Decidir melhor para ir mais longe: como definir objetivos

by Alberto Brandão

Na corrida desenfreada para produzir tudo o que o mundo nos cobra, freqüentemente nos deparamos com a frustração de não conseguir terminar o que nos propomos. Procuramos técnicas e lemos sobre hábitos de pessoas produtivas, esperando que nesse emaranhado de conhecimento exista um solução para nossa falta de eficiência.

Entretanto, existem alguns parâmetros muito simples que devem ser avaliados, pois sem eles nenhuma técnica vai apresentar resultados por muito tempo. Basta observar o quanto as pessoas se tornam obcecadas por sistemas de produtividade. Quanto mais sistemas conhecem, mais aumenta a busca, colecionando livros, textos e técnicas. Enquanto isso, o maior problema está onde ninguém gosta de procurar, nas próprias escolhas.

Um dos maiores responsáveis pela procrastinação é a crença de que podemos fazer tudo o tempo todo. Achamos que ser produtivo é executar uma quantidade cada vez maior de coisas, quando na verdade, é apenas executar poucas coisas de maneira cada vez mais eficiente.

Nosso anseio em mostrar que podemos fazer tudo, que somos bons e até mesmo buscando nos posicionar como responsáveis, nos leva a colecionar atividades de forma desenfreada. Tudo o que nos pedem, dizemos sim, como se nunca existisse problema. Esse comportamento nos traz pilhas de tarefas cada vez maiores. No inicio, tudo parece estar sob controle, mas ao primeiro deslize, a pilha desmorona.

kelley1935_lg

Somos muito ruins em selecionar efetivamente o que devemos fazer. Nos sentimos mal ao identificar que temos tempo livre na agenda, então, tentamos preencher tudo. Falhamos em identificar que estes espaços são muito importantes para preservar a estabilidade das coisas. Se algo der errado em algum ponto da execução, você precisa ter uma “sobra” para reassumir o controle, antes que o próximo ponto seja afetado.

Por isso, a primeira coisa a se fazer para se tornar alguém mais produtivo, é saber como dizer não para a maior parte das coisas. E o parâmetro para isso deve sempre ser: esta ação o leva para mais perto do objetivo que está trilhando?

Derek Sivers – músico, mais conhecido como fundador de uma plataforma para músicos independentes chamada CD Baby – sintetiza este parâmetro, apontando que nossa respostas para o que vamos fazer deve sempre ser:

“Hell Yes! or No!”

Ou seja, absolutamente sim, ou não.

Mentalidade de abundância x Mentalidade de escassez

Este anseio por dizer sim a tudo, é acontece pelo que chamamos de Mentalidade de Escassez. Acreditamos que oportunidades são raríssimas e se deixarmos elas passarem, estaremos nunca mais a veremos de novo.

Essas oportunidades nem sempre são únicas. A tendência mais provável é que, se ela surgiu para você, outras chances similares vão continuar batendo à sua porta com uma certa frequência, pois elas são consequência do seu esforço de gerá-las, seja se tornando capacitado, mantendo bons contatos ou uma reputação que atrai atenção.

Uma forma de evitar isso é tratar tudo com a mentalidade oposta, identificando que, sim, oportunidades são abundantes em nossas vidas, por isso, preciso escolher cuidadosamente aquela à qual quero me dedicar de verdade. Por isso, dizer não a algumas ofertas que recebemos não é algo ruim. No mundo atual, é a forma mais sensata de não se perder numa pilha maluca de direções conflitantes.

Agora que você já sabe dizer não para tudo o que não for totalmente relevante, vamos entender os critérios que definem um bom objetivo ou meta.

Definindo objetivos certos

Vamos partir de um elemento essencial: se importar com o que está fazendo.

Pode parecer um discurso batido, mas é o primeiro ponto para terminar as coisas que começamos.

Não adianta muito você odiar fazer contas e tentar concluir uma faculdade de matemática. Quando a primeira dificuldade que surgir for maior que a vontade de agir, você vai acabar desistindo. Isso pode se refletir em basicamente todos os outros aspectos de nossa vida. Perceba como o menor mal estar é suficiente para fazer a maioria das pessoas faltarem ao trabalho, enquanto pessoas que são apaixonadas por suas profissões às vezes precisam de intervenção para poder relaxar e se recuperar de alguma doença mais grave.

Ter tesão pelo que se propõe aumenta as chances de um desfecho positivo.

O outro ponto que define a escolha de um bom objetivo pode parecer tão óbvio quanto o anterior: para uma meta ser boa, ela precisa ser factível.

oyip2d6

A literatura motivacional vai sempre dizer que “querer é poder” e toda essa maluquice, mas no fim das contas a gente sabe exatamente o que é ou não possível.

Digamos que sou formado em Direito, mas decidi que vou me tornar um astronauta até o fim do ano. Eu posso mover montanhas, mas sei que esse é um objetivo impossível. O mesmo se eu resolver perder 50 quilos em 1 mês, o que também não soa muito lógico.

Posso até acreditar nestes pontos com firmeza, mas ao longo do processo vou identificando as impossibilidades e desanimando antes mesmo de chegar ao prazo estipulado.

Tenho certeza que cada um de vocês pode lembrar de alguma vez que reconheceu que algo não era possível e acabou desanimando. Por isso, muitas das nossas investidas falham, porque miramos nas combinações (gostar x possível) erradas.

E como gosto de apontar, tudo isso serve também para o cotidiano e coisas menores: é preciso manter os objetivos dentro do que conseguimos vislumbrar o desfecho.

Quando um chefe nos pede para executar algo que não compreendemos, raramente conseguiremos seguir os passos necessários para concluir a tarefa, vamos enrolar até que exista uma intervenção. Neste caso, com alguém resolvendo a tarefa por nós ou esclarecendo o que ser feito.

Nem tudo é preto no branco

Todos esses pontos parecem abstratos e muita gente pode apontar que não tem escolha quando o assunto é gostar do que faz ou identificar as atividades como possíveis.

A boa notícia é que este tipo de noção é altamente subjetiva e podemos adicionar valor às coisas que fazemos, assim como também podemos tornar atividades aparentemente impossíveis em tarefas incrivelmente simples.

Muito da questão de se importar ou não com o que fazemos começa em como interpretamos a atividade de modo geral.

Uma história bem conhecida para explicar este fenômeno, é a que Lyndon B. Johnson – ex-presidente americano – fazia questão de compartilhar.

Lyndon diz que, ao visitar a agência espacial americana, se deparou com um faxineiro muito empolgado, que estava sempre tentando ajudar e colaborar com o que precisava ser feito. Johnson, admirado com o ânimo do faxineiro durante seu trabalho, resolveu perguntar por que estava tão alegre:

“Estou ajudando a levar o homem para Lua!”, respondeu o homem.

Alguém que tem o trabalho de limpar o chão pode olhar e ver o benefício máximo da atividade: ajudar o homem a pisar na lua.

TimeLife_000

E, assim como a forma que uma mudança de perspectiva pode amplificar o grau de satisfação e importância que nosso trabalho tem para nós, quebrar atividades impossíveis em pequenos passos simples nos ajuda a não focar no nebuloso e improvável futuro.

Como exemplo, decidi que antes dos 50 anos quero ter meu Doutorado em Física. Sei que é uma meta longa, que pode levar por volta de 15 anos. Se eu tivesse essa meta apenas considerando a visão macro, tendo em vista que sou de uma área bem diferente, iria me deparar com dificuldades e desistir. Ao invés disso, resolvi que vou apenas fazer o vestibular, só isso, e tentar novamente enquanto não for aprovado. Depois, pretendo concluir semestres e ir seguindo, até que depois de muitos anos, o resultado final será o Ph.D.

Este modelo funciona com qualquer coisa, desde que respeitemos as lógicas da realidade.

Perder 50kg, por exemplo, não acontece de uma vez, mas pode virar uma caminhada diária de 20 minutos. Progredir para uma reeducação alimentar e a partir disso mudanças maiores e mais efetivas. O objetivo maior é só um pontinho, que depois de definido deve ser esquecido, dando lugar para atividades factíveis.

Ao começar com um pequeno passo simples e possível, cada marco se torna mais próximo e o objetivo final mais real.

Claro, essa mudança de mentalidade não acontece da noite para o dia.

É necessário manter esses pontos em foco e exercitar a forma de lidarmos com as coisas. Fazer escolhas mais inteligentes é a parte mais importante para conseguir alcançar resultados melhores.


por Alberto Brandão








21 Sep 18:41

Ubisoft anuncia Just Dance Now para iOS e Android

by Ronaldo Gogoni

just-dance-now

Era óbvio que isso um dia irira acontecer, mas niguém imaginava como tal passo seria dado. De forma integente e até um tanto óbvia, a Ubisoft anunciou que Just Dance Now, a mais nova versão de seu jogo de dança que uma febre por onde passa desembarcará dia 25 no iOS e Android mas você jogará ele na sua TV, utilizando seu gadget como controle.

O game poderá ser apreciado da seguinte forma: o jogador vai instalar o game em seu dispositivo mobile e acessar o site justdancenow.com em qualquer tela com conexão à internet. A partir daí o app vai sincronizar com o display e passará a ser utilizado como um sensor de movimentos, exatamente como o Wiimote. Com isso o jogador poderá utilizar qualquer display em qualquer lugar, sem a necessidade de um console de mesa e o que é melhor, sem um limite de jogadores graças à tecnologia Ubi Bluestar, que dá suporte a qualquer tipo de conexão de dados – 2G, 3G, 4G ou Wi-Fi.

A setlist anunciada é imensa: até o momento 90 músicas já foram confirmadas, incluindo as de músicos que já viraram arroz-de-festa da série como Lady Gaga, Ke$ha, Rihanna, Katy Perry, Maroon 5, Pharrell, Daft Punk, PSY… até a Ivete Sangalo entrou novamente com Dançando. Resumindo, são as músicas de quase todos os títulos anteriores com exceção das músicas do primeiro Just Dance e das versões japonesas lançadas para Wii e Wii U com artistas locais, por razões óbvias.

O game será gratuito porém prevê microtransações, muito provavelmente as músicas serão oferecidas em pacotes ou individualmente. Fontes externas apontam para a possibilidade de que o setlist livre seja rotativo, assim como a Microsoft fez com os personagens de Killer Instinct em sua versão free-to-play. De qualque forma, dia 25 está dobrando a esquina e logo poderemos conferir se Just Dance Now será tão divertido quanto seus irmãos de console e mais importante, será capaz de permitir que o jogador possa de fato dançar em qualquer lugar.

Fonte: J.

The post Ubisoft anuncia Just Dance Now para iOS e Android appeared first on Meio Bit.








18 Sep 20:35

Download do eBook “FPGAs For Dummies” da Altera

by Sergio Prado

A Altera está disponibilizando gratuitamente o eBook “FPGAs For Dummies”.

FPGA dummies Download do eBook FPGAs For Dummies da Altera

O livro me parece ser bem didático, com 5 capítulos divididos em 40 páginas:

  1. FPGAs for Everyone
  2. What’s in an FPGA, Anyway?
  3. FPGAs as Systems
  4. The Future: Heterogeneous Computing and OpenCL
  5. Five Applications of FPGAs

Para quem se interessar, basta fazer um registro no site da Altera para baixar o eBook.

Atualização: O leitor do blog [Ricardo Zanone] indicou o livro The Zynq Book sobre o Xilinx Zynq®-7000, escrito por um pessoal da universidade de Strathclyde no Reino Unido, e também disponível gratuitamente para download.

Bons estudos!

Sergio Prado

Sergio Prado atua com desenvolvimento de software para sistemas embarcados há mais de 15 anos. É sócio-fundador da Embed­ded Lab­works, uma empresa focada em te aju­dar a desen­volver soft­ware de qual­i­dade para sis­temas embar­ca­dos. Se você pre­cisa de ajuda para desen­volver seu pro­duto, ou quer saber mais sobre o que a Embed­ded Lab­works pode fazer por você, acesse http://e-labworks.com/servicos.

Este post foi originalmente publicado em Download do eBook “FPGAs For Dummies” da Altera.

09 Sep 03:57

Como fazer uma luminária de garrafa de whisky

by Luciano Ribeiro

Esse é um projeto muitíssimo simples, que gera um efeito super bonito. Vamos reaproveitar uma garrafa de whisky para fazer uma luminária/abajur.

Consegui o tutorial em vídeo, o que facilita bastante o processo, mas também coloquei o processo em texto e imagens, para quem eventualmente não manjar bem de inglês. De qualquer forma, as imagens do vídeo já são bastante explicativas, de forma que o idioma não é lá uma grande barreira.

E aí, prontos pra colocarem a mão na massa?


Link Youtube

Reúna o material

IMG_1502

1 garrafa vazia. Não esqueça de limpar bem para remover qualquer vestígio de álcool

71-aoMaSJSL._SL1500_

Restos de um abajur ou um kit de iluminação, como esse

61GxM1OarKL._SL1500_

Brocas de diamante para vidro

Fure um buraco na garrafa

Aqui você precisa de uma broca de diamante para furar o vidro e, apesar de ser possível fazer com uma furadeira normal, o ideal é usar o maquinário adequado para furar bem lentamente ou peça para alguém ajudar.

Não tente fazer isso sem óculos de segurança e luvas de proteção, é perigoso.

material01

Passe a fiação por dentro do buraco e da garrafa

passarcabo

Coloque a lâmpada

colocar lampada

Acenda!

capa

Você gostaria de ensinar algo?

“Deixa que eu faço” é a nova série colaborativa de textos mão na massa do PapodeHomem. A ideia é reunirmos pessoas dispostas a contribuírem com guias e tutoriais, ensinando a fazer as mais diversas tarefas, das rotineiras às inusitadas. Com o tempo, queremos ter um compilado com todo tipo de passo-a-passo, para tornar o PapodeHomem um espaço cada vez mais útil.

Pode se programar: toda sexta, um texto com um guia ensinando a fazer algo prático.

Tem alguma ideia? Manda pra gente no e-mail deixaqueeufaco@papodehomem.com.br.

E, caso faça um dos tutoriais já publicados, põe a hashtag #deixaqueeufaco pra compartilhar com a gente. As mais legais a gente solta no Instagram do PapodeHomem


por Luciano Ribeiro








05 Sep 16:09

Corre, Walter!! Olha a Praia Ali!!

by Flavio Lamenza
Olha o pique desse cachorro em direção a praia. Detalhe pro caminho já todo memorizado e a felicidade do pulão na água. Confesso que bate uma invejinha do Walter...

29 Aug 20:49

E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

by Redação

jac j3s turin preto 2015 2 700x525 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

Ter ou não ter um carro chinês? O pacote sempre é chamativo: carros bem equipados e preços abaixo da concorrência. Mas muitas dúvidas também aparecem. Será que a manutenção não será cara? Os materiais usados são de qualidade? É seguro andar num modelo de marca menos conhecida?

Passados alguns anos desde o início da invasão chinesa, a maior parte dessas questões já foi respondida pelos consumidores (seja de forma positiva ou negativa). Para isso, muitos usam a opinião de amigos ou de especialistas, além de reportagens sobre o assunto. Mas, para todos aqueles que nunca colocaram um carro chinês na garagem, uma dúvida continua: e na hora de vender, vou perder muito dinheiro?

Para responder essa pergunta escolhemos um dos últimos lançamentos da JAC Motors, a chinesa com melhor aceitação no mercado brasileiro. Estamos falando do J3 S Turin 1.5 JetFlex (veja nossas impressões, feitas no lançamento do modelo atualizado aqui), que é vendido por R$ 41.990. O modelo, cedido pela JAC, é 2014, tem menos de 8.000 km rodados e tem valor de tabela de R$ 36.913.

Confira agora como nos saímos ao tentar vender o modelo, tanto em concessionárias (como parte na negociação de um zero km) como em outras lojas multimarcas.

jac j3s turin preto 2015 7 700x525 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

Concessionárias jogam o preço lá embaixo

Começamos nosso dia em uma concessionária Volkswagen. Após perguntar sobre o up!, falamos sobre colocar o J3 S Turin no negócio. O vendedor disse que outra pessoa fazia as avaliações, mas já nos adiantou: “Acho que vão te pagar uns 30% abaixo da FIPE”. Daí, ele mesmo já perguntou o preço de tabela, sacou sua calculadora e anunciou: “No máximo, se você comprar mesmo o up!, podemos pagar R$ 25.000”.

Saindo dali, partimos para a Nissan, onde o sistema é um pouco diferente. Ouvimos do vendedor que a concessionária só pegaria o carro se já tivesse alguém interessado. Ou seja, se o cliente quiser colocar seu usado no negócio, eles ligam para vários estacionamentos em várias cidades oferecendo o modelo. Pelo menos no caso do nosso J3, não queriam coloca-lo em seu estoque de seminovos. O mesmo ocorreu na Renault, que até trabalha com vários seminovos, mas não queriam pegar o J3 por falta de mercado.

A terceira parada, certamente a mais interessante, foi na autorizada Chevrolet. Discutimos a compra de um Onix LT completo, e aí falamos sobre o J3. Fomos junto com o vendedor até o setor dos seminovos (bem maior do que nas lojas anteriores), onde seria feita a avaliação.

E aí ocorreu a surpresa: o responsável pelas avaliações de usados não gostou nem um pouco da ideia, mostrando que não tinha a menor intenção de ficar com o carro. Chegou a questionar o vendedor (quando não estávamos por perto) como alguém poderia querer colocar esse carro na troca. Ao fazer a pesquisa sobre o preço de tabela, usou como base o valor do J3 S na versão hatch, alegando que no documento do carro não havia a expressão “Turin”. Tentamos argumentar, mas isso não mudaria o preço final oferecido: R$ 20.000.

Seguimos para a Ford, onde, por coincidência, havia acabado de chegar a primeira unidade do novo Ka. Fomos com o vendedor ver o carro (que ainda estava sujo da viagem) nos fundos da concessionária, e voltamos para sua mesa, onde ele nos disse que as primeiras unidades do lançamento chegariam em breve. Citamos a possibilidade de incluir o JAC no negócio e, para nossa surpresa, ele disse que havia acabado de pegar uma perua J6 numa troca. “Fiz um bom negócio”, disse o vendedor. “Paguei barato”. Mesmo assim, ouvimos a negativa em relação ao J3: “Acho que você vai fazer um negócio melhor se tentar vender particular”. Entendendo o recado, rumamos para outra loja.

jac j3s turin preto 2015 9 700x525 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

Chegando à Fiat, perguntamos sobre o Novo Palio, ouvimos as condições e novamente citamos a troca com nosso J3. O vendedor disse que precisava consultar outra pessoa, mas que achava difícil o carro ser aceito. Ele então pegou o telefone e passou as informações, se mostrando surpreso com a resposta positiva. “Eles pegam o carro sim. Ofereceram R$ 20.000, eu chorei um pouco, e eles pagam R$ 23.000.”

A última parada foi na Hyundai, onde tivemos o melhor atendimento e a melhor avaliação. Mostramos interesse no HB20. A vendedora mostrou bem mais disposição que seus colegas de marcas concorrentes, nos passando com muita paciência todas as informações sobre cada versão do modelo. Sentamos para discutir as condições e já citamos nossa intenção de colocar o J3 no negócio.

Ela admitiu não conhecer o carro, mas chamou o responsável pela área, indo com ele ver o modelo. Voltando, elogiou a conservação e os equipamentos, e nos perguntou quanto gostaríamos de receber por ele. Não especificamos valor, e ela disse que precisaria consultar uma terceira pessoa para dar a oferta. Enquanto isso, ganhando tempo de forma inteligente, nos convidou para um test-drive no HB20 1.0. Quando voltamos, recebemos a melhor oferta pelo J3, que foi de R$ 26.000.

jac j3s turin preto 2015 10 700x525 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

Lojas multimarcas não querem nem ver o J3

No dia seguinte mudamos o foco, e partimos para as lojas multimarcas. Em algumas, mostramos interesse por algum carro do estoque, em outras falamos apenas em vender o J3. Em quase todas ouvimos uma resposta negativa. Na única exceção, ouvimos que o estoque estava muito cheio, mas que assim que pudessem iriam nos ligar para vender o carro de forma consignada.

Nas outras, a resposta sempre era algo do tipo “Carro chinês não tem mercado, desculpa”, ou ainda “Tente vender em cidades maiores, como São Paulo. Lá você vende fácil”.

Conclusão

Para muitos, comprar um carro chinês simplesmente pelo preço não é mais tão interessante. A grande variedade de modelos oferecidos no Brasil sempre dá ao consumidor a possibilidade de encontrar uma boa oferta em marcas tradicionais. E se você tinha medo de perder muito dinheiro na venda, saiba que seu receio tem fundamento. Ao colocar um modelo como o JAC J3 de nossa avaliação numa troca, espere ofertas entre 30% e 40% abaixo da tabela. Se o carro em questão for de outras marcas chinesas, espere ofertas ainda mais baixas.

Será que em outras concessionárias, em outras cidades, a história seria diferente? Dificilmente. Percebemos claramente que a maioria dos vendedores que nos atenderam não tinham preparo para esse tipo de negócio. Quem leva seu usado a uma concessionária sabe que vai receber ofertas bem abaixo da tabela, mas isso não quer dizer que ele não espera ver seu veículo sendo bem tratado. E se a sua saída for tentar a venda particular, saiba que pode demorar meses para conseguir uma boa oferta.

Por outros motivos, comprar um carro chinês continua sendo interessante para alguns. O J3 S Turin usado para essa reportagem era muito bem equipado, e seu motor 1.5 tem vigor de dar inveja a muitos modelos com motores maiores, 1.6 ou 1.8. Mas quem compra um carro em marcas menos tradicionais precisa avaliar o quadro todo e saber que, na hora de vender, o barato pode acabar saindo caro.

Galeria de fotos do JAC J3 S Turin

jac j3s turin preto 2015 1 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 2 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 3 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 4 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 5 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 6 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 7 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 8 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 9 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 10 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática jac j3s turin preto 2015 11 E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática

A noticia E na hora de vender um carro chinês? Vou perder muito dinheiro? Nós verificamos isso na prática foi publicada no site Notícias Automotivas - Carros.