Shared posts

26 May 18:53

Adoro Home Office no Nós Coworking

by Marcia Breda

Na última semana, eu e a Juliana levamos nossas empresas e o Adoro Home Office para passar uma semana trabalhando no Nós Coworking, em Porto Alegre. O objetivo dessa editoria é contar para vocês como as coisas funcionam em vários espaços de coworking e trazer informações que ajudem na hora de escolher um lugar para trabalhar algumas horas fora do home office. E logo logo vamos chegar em outras cidades além de Porto Alegre.

Adoro Home Office - Nós

O Nós Coworking está localizado em um prédio histórico do Shopping Total e tem ambientes no terceiro e no quinto andar. O mais alto e o primeiro a ser inaugurado, em 2011, é o espaço de empresas fixas que trabalham por lá e também abriga algumas salas de reunião. O espaço do terceiro piso foi inaugurado recentemente (em janeiro desse ano) e recebe os coworkers rotativos, oferecendo além das estações de trabalho, um auditório com capacidade para 150 pessoas, lounge, terraço e uma área gastronômica, a Beta Food. Nós dividimos nossa estadia nos dois espaços para conhecer bem todas as opções.

Se você está acostumado ao home office, talvez estranhe um pouco sair de casa nos primeiros dias. Eu e a Ju sentimos isso no primeiro dia de trabalho por lá, como uma sensação de não pertencer ao local, mas que passou logo no segundo dia. Acho que justamente é um pequeno período em que você precise se adaptar, reconhecer o espaço e se sentir parte dele. Depois dessa adaptação, foi tudo bem legal e sair de casa era uma grande motivação. Até a Ju, que é meio bicho do mato e quase sempre prefere ficar em casa, chegava faceira para nossas tarde de trabalho!

Terceiro

No terceiro andar nosso espaço favorito foi o terraço! Trabalhar ao ar livre em dias de temperatura amena pode ser uma baita inspiração. Um outro ambiente (bem descontraído), integrado ao espaço da Beta Food, tem opções de mesas grandes e pequenas, próximas da janela. Durante a tarde, pode ser que pegue um pouco de sol na mesa que você escolheu e a claridade pode incomodar um pouco. Se for esse o caso, a dica é mudar-se para a sala que divide o espaço com o auditório, onde a claridade é menor, tem menos conversa e o espaço é mais sóbrio. Ainda assim, curtir um solzinho nesses dias cinzas do inverno pode ser uma boa pedida.

Adoro Home Office - Nós

Adoro Home Office - Nós Adoro Home Office - Nós

É também nesse andar que rola almoço e lanche com desconto para os coworkers. O prato do dia custa R$ 20,00 (ou R$25,00 para quem não estiver trabalhando por lá) e é servido das 12h às 13h30min.

Adoro Home Office - Nós

Quinto

O quinto andar abriga empresas que compartilham o escritório, mas são fixas ali no espaço. A grande vantagem é que dividir os custos de aluguel, telefone e internet com mais gente acaba diminuindo bastante os custos com infraestrutura. Mas se você não é uma empresa e cansou de fazer home office, também pode ocupar um espaço fixo pagando uma mensalidade. É sempre uma opção para quem se sente sozinho, entediado ou não consegue se organizar bem em casa.

Adoro Home Office - Nós

Como aqui o movimento era bem maior, muitas vezes me vi prestando atenção no monitor de um coleguinha (desconhecido, claro!) tentando entender qual era o trabalho dele. Na verdade eu achei isso bem divertido! A possibilidade de interagir com pessoas que fazem coisas bem diferentes de você, mas estão ali no mesmo espaço é bem legal. A televisão sempre ligada no canal OFF também era uma coisa bacana, porque sempre que dava uma dispersada, tinha alguma imagem inspiradora passando. Até adotei isso pro home office e agora durante a dia a televisão vai ficar ligada no mesmo canal.

Adoro Home Office - Nós

Investimento

O valor da hora avulsa é R$8,25 e a compra mínima deve ser R$ 165,00, o equivalente a 20 horas. Elas não valem para sempre e expiram se você ficar 90 dias sem aparecer por lá. Nos planos mensais os valores começam a partir de R$ 605,00 para uma pessoa e as salas de reuniões podem ser reservadas pelo valor inicial de R$ 30,00. Coworkers fixos também têm um desconto no estacionamento do shopping e o valor da diária fica em R$7,00. Se você curtiu ou ficou interessado em saber mais sobre os preços, é só mandar um e-mail para atendimento@noscoworking.com.br e falar com a Juliana Reiss. Ela nos atendeu pessoalmente, foi uma fofa e certamente vai ser com você também!

 

NOS COWORKING

Shopping Total, Prédio 02, 5º Andar
Av. Cristóvão Colombo, 545
Floresta, Porto Alegre – RS
(51) 3018-7766
www.noscoworking.com.br

 

Você também pode gostar de:

>>> Conheça o espaço do Yami Café

>>> Leveza no home office da Nuvem

>>> Dicas para organizar melhor seu espaço

 

 

O post Adoro Home Office no Nós Coworking apareceu primeiro em Adoro Home Office.

25 May 17:56

humanidade

by Francisco Nunes

Tornou-se chocantemente óbvio que a nossa tecnologia excedeu a nossa humanidade.

(Albert Einstein)

Send to Kindle
25 May 17:48

Dois-em-um fantástico para investigar suspeita de novo malware

by Márcio

Quando eu estou investigando a suspeita da presença de um novo malware (código malicioso), não detectado pelo antivírus instalado, em um computador com Windows, em geral eu costumo utilizar duas ferramentas muito simples e extremamente úteis, explicadas a seguir.

Sysinternals – Autoruns e Process Explorer

Windows Sysinternals é um conjunto de utilitários de sistema avançados para Windows, criados e evoluídos desde 1996 por Mark Russinovich, co-fundador da empresa Winternals Software. Em 2006, a Microsoft adquiriu a Winternals e desde então os utilitários Sysnternals estão integrados no portal Microsoft TechNet, e continuam disponibilizados gratuitamente.

Dois destes utilitários são muito úteis para auxiliar na busca de malware presente no computador:

  • Autoruns: Este programa exibe todas as entradas existentes de executáveis instalados para iniciar automaticamente no Windows, durante o Logon e nos muitos outros meios que o sistema operacional permite para isso. Uma característica típica de vírus, vermes e outros malwares que se instalam no computador é registrar-se para ser executado automaticamente sempre que o sistema é iniciado. Portanto, é muito provável que se existe um malware instalado, que ele apareceça na listagem do Autoruns. A forma mais comum dos malwares se registrarem é em uma entrada de Logon no Registro do Windows, tipicamente em HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Autoruns lista informações básicas listadas de cada entrada, como nome registrado, descrição, fornecedor, caminho do executável, data. Você pode se assustar com quanta coisa existe em execução automática no seu Windows. Contudo, identificar uma entrada suspeita em meio à listagem do Autoruns não é trivial, em geral requer experiência em reconhecer o que é típico e legítimo, como utilitários de drivers, utilitários de atualização automática de softwares idôneos (exemplos: atualizador do Adobe Reader ou do Java) e outros programas desejados em execução constante em segundo plano (exemplo: Google Chrome), configurados para executar assim que o Windows iniciar (muitas vezes são programas que tem um ícone na bandeja do sistema perto do relógio, na parte direita da barra de tarefas).
  • Process Explorer (procexp): Este utilitário exibe informações detalhadas sobre todos os programas/processos em execução, em tempo real. O Gerenciador de Tarefas nativo do Windows (acionado pela combinação de teclas Ctrl+Shift+Esc) exibe informações similares, mas de forma muito resumida. No Windows 8 o Gerenciador evoluiu muito em informações exibidas, mas ainda assim o Process Explorer é uma ferramenta bem mais poderosa e com muitos recursos exploratórios exclusivos, como busca por Handle/DLL, identificar um processo a partir de uma janela aberta, e exibição de todos os recursos criados ou abertos por um processo (arquivos, chaves de registro, eventos do sistema, threads etc.). Se um malware estiver em execução, ele aparecerá na lista do procexp. Contudo, assim como no Autoruns, identificar um processo suspeito dentre os programas em execução não é nada trivial.

Autoruns: Screnshot (origem: Microsoft TechNet).

Os utilitários Sysinternals são fornecidos na forma de executáveis simples (em geral, acompanhados de arquivos de ajuda e licença de uso), distribuídos em arquivos ZIP. Você pode baixar o Autoruns e o Process Explorer, ou o Sysinternals Suite contendo todos os utilitários disponíveis de uma vez só.

Sugiro descompactar em uma pasta como C:\sysinternals e adicioná-la ao Path de execução do Windows (Propriedades Avançadas do Computador > Variáveis de Ambiente) para manter estes utilitários prontos para uso no computador, e andar com eles atualizados em um pendrive para poder executar em um computador qualquer.

VirusTotal.com

O segundo passo uma vez identificado um executável suspeito ou provável malware é utilizar o serviço web gratuito VirusTotal.com. No uso mais básico, você pode enviar um arquivo para o VirusTotal e ele o analisa executando 57 (quantitativo no momento em que escrevo este artigo) programas antivírus e antimalware, atualizados e configurados em suas opções de busca mais amplas (inclusive técnicas heurísticas) mostrando quais deles detecta algo. O VirusTotal mantém uma base histórica das assinaturas hash de todos os arquivos já analisados pelo serviço, de forma que se você submete um arquivo já analisado ou uma assinatura, o VirusTotal oferece para exibir a análise mais recente disponível ou (em caso do arquivo) re-analisar.

Ou seja, praticamente se algum programa antivírus atualmente reconhece um executável suspeito que você tem como malware, o VirusTotal lhe traz essa informação. Espetacular!

Os dois juntos – Perfeito!

Agora vem o melhor. Desde janeiro de 2014 no Process Explorer e de janeiro de 2015 no Autoruns, existe integração destes programas com o serviço VirusTotal.com!

No Autoruns, por exemplo, você pode ir na opção de menu Options > Scan Options e marcar Check VirusTotal.com, para que o Autoruns automaticamente submete a assinatura hash de cada entrada listada ao serviço VirusTotal, e exiba os resultados em uma coluna da listagem, colorindo de vermelho se alguma entrada tiver detecção positiva para malware. A opção Submit Unknown Images, embora mais demorada, ainda permite enviar o arquivo ao VirusTotal caso a sua assinatura ainda não exista na base histórica de análises do serviço. Para facilitar ainda mais a busca apenas pelos suspeitos, a opção Options > Hide VirusTotal Clean Entries permite ocultar da listagem do Autoruns todos os executáveis que foram identificados como limpos no VirusTotal.com, exibindo apenas os que tiveram alguma detecção positiva e os desconhecidos (ainda não analisados pelo VirusTotal).

No Procexp, a integração com o VirusTotal se dá pela opção Options > VirusTotal.com > Check VirusTotal.com (e Submit Unknown Executables).

Com ferramentas simples e integradas assim, fica bem prático, fácil e rápido tentar detectar um malware em um computador, mesmo se não houver um bom antivírus instalado, bastando ter em mãos o Autoruns e o Procexp, e acesso internet para o VirusTotal.

25 May 17:43

amor

by Francisco Nunes

Cada um de nós traz no fundo de si um pequeno cemitério daqueles que amou.

(Romain Rolland)

Send to Kindle
25 May 17:43

vida

by Francisco Nunes

Como dois e dois são quatro, sei que a vida vale a pena, embora o pão seja caro e a liberdade, pequena.

(Ferreira Gullar)

Send to Kindle
25 May 17:43

desejo

by Francisco Nunes

O ser humano tem muito mais desejos que necessidades.

(Johann Goethe)

Send to Kindle
25 May 17:00

Shaun M. Thomas: PG Phriday: 10 Ways to Ruin Performance: Forgetting it EXISTS

For the second of my ten part series on hidden PGDB (PostgreSQL) performance killers, I’m going to talk about something called an anti-join. It’s not a well-known approach outside of the database world, but due to how it works, it can impart almost magical plan revisions that drastically improve query performance in the right scenario. Developers can add it to a growing bag of tricks when working on database-driven content, since it comes in handy more often than you might expect.

Let’s build a test-case, shall we?

CREATE TABLE sys_product
(
    product_id   SERIAL  PRIMARY KEY,
    prod_name    TEXT    NOT NULL,
    quality      INT     NOT NULL,
    descr        TEXT    NOT NULL DEFAULT now()
);
 
INSERT INTO sys_product (prod_name, quality, descr)
SELECT 'Product ' || a.id::TEXT,
       log((a.id % 100) + 1)::INT,
       'It does stuff.'
  FROM generate_series(1, 100000) a(id);
 
CREATE TABLE sys_order
(
    order_id     SERIAL       NOT NULL,
    product_id   INT          NOT NULL,
    item_count   INT          NOT NULL,
    order_dt     TIMESTAMPTZ  NOT NULL DEFAULT now(),
    valid_dt     TIMESTAMPTZ  NULL
);
 
INSERT INTO sys_order (product_id, item_count, order_dt, valid_dt)
SELECT (a.id % 100000) + 1, (a.id % 100) + 1,
       now() - (id % 1000 || 'd')::INTERVAL,
       CASE WHEN a.id % 499 = 0
            THEN NULL
            ELSE now() - (id % 999 || 'd')::INTERVAL
       END
  FROM generate_series(1, 1000000) a(id);
 
ALTER TABLE sys_order ADD CONSTRAINT pk_order_order_id
      PRIMARY KEY (order_id);
 
CREATE INDEX idx_order_product_id
    ON sys_order (product_id);
 
CREATE INDEX idx_order_valid_dt
    ON sys_order (valid_dt);
 
ANALYZE sys_product;
ANALYZE sys_order;

This is a very basic product and order table structure, and we’ve used it before in the last installment of this series. The only columns we’ve added since last time is the quality column in sys_product and the valid_dt column in sys_order. This way, we can introduce some variability into the query plan due to data correlation effects. We’ve tried to distribute the data such that new orders have not been validated, and there are still some non-validated orders in the past. This distribution is more reliable than using random().

Now let’s build a query that retrieves all orders on products with a quality of five using a simple JOIN:

EXPLAIN ANALYZE
SELECT o.*
  FROM sys_order o
  JOIN sys_product p USING (product_id)
 WHERE o.valid_dt IS NULL
   AND p.quality = 2;
 
                             QUERY PLAN                             
--------------------------------------------------------------------
 Hash JOIN  (cost=2985.66..7406.44 ROWS=1303 width=28)
            (actual TIME=80.438..90.406 ROWS=1383 loops=1)
   Hash Cond: (o.product_id = p.product_id)
   ->  Bitmap Heap Scan ON sys_order o
              (cost=39.41..4423.00 ROWS=1933 width=28)
              (actual TIME=0.600..6.879 ROWS=2004 loops=1)
         Recheck Cond: (valid_dt IS NULL)
         Heap Blocks: exact=2004
         ->  Bitmap INDEX Scan ON idx_order_valid_dt
                    (cost=0.00..38.92 ROWS=1933 width=0)
                    (actual TIME=0.327..0.327 ROWS=2004 loops=1)
               INDEX Cond: (valid_dt IS NULL)
   ->  Hash  (cost=2084.00..2084.00 ROWS=68980 width=4)
             (actual TIME=79.773..79.773 ROWS=69000 loops=1)
         Buckets: 8192  Batches: 1  Memory Usage: 2426
         ->  Seq Scan ON sys_product p
                 (cost=0.00..2084.00 ROWS=68980 width=4)
                 (actual TIME=0.013..41.150 ROWS=69000 loops=1)
               FILTER: (quality = 2)
               ROWS Removed BY FILTER: 31000
 Planning TIME: 0.732 ms
 Execution TIME: 91.875 ms

We can actually infer quite a bit from this execution plan.

  • The sys_order table was checked with the index on valid_dt as desired.
  • The sys_product table was scanned in its entirety.
  • The planner estimates all match up almost exactly.
  • Final result was obtained by hashing the two row sets together.

From this, we could say that this is the ideal query plan. The index we wanted was used, and it reduced one million rows to about 2000. Since we don’t have an index on product quality, we might as well fetch them all and filter out the wrong quality before executing the hash. Once the hash between both is computed, we get about 1300 rows as a result.

Of course, this approach makes a huge mistake. Even though the order and product tables are within an order of magnitude of each other, we’re only interested in a relatively small fraction of the order table. Thus, fetching all products at this scale is probably a losing proposition. However, since the planner doesn’t have data regarding how closely these tables are correlated, it can’t make that assumption. Indeed, is it fetching 2000 unique product IDs, or 200? Since it can’t fetch the related products at this point, it does the best it can.

But can we do better? As it turns out, we can do a whole lot better by telling the planner what we really wanted. Note that we didn’t actually use the results from the product table in the SELECT portion of the query. Further, we know that we are only interested in a maximum of about 1300 products, so why check all of them? Is there a way to force the planner to fetch the matching orders first, and then check to see which products correspond as a second step?

We already know from last time that this is what a nested loop does, and one way to encourage the planner to pick a nested loop is by using EXISTS to break apart our JOIN condition. This accomplishes two things:

  1. Don’t join against a table to fetch columns that will never be returned.
  2. Favor some kind of looping construct to avoid excessive record comparisons.

This is also what is known as an anti-join, and PGDB performs very well when guided in that direction. Here’s what our query and plan look like using this concept:

EXPLAIN ANALYZE
SELECT o.*
  FROM sys_order o
 WHERE o.valid_dt IS NULL
   AND EXISTS (
         SELECT 1
           FROM sys_product p
          WHERE p.product_id = o.product_id
            AND p.quality = 2
          LIMIT 1
       );
 
                             QUERY PLAN                             
--------------------------------------------------------------------
 Bitmap Heap Scan ON sys_order o 
             (cost=39.16..20490.82 ROWS=967 width=28)
             (actual TIME=0.565..11.462 ROWS=1383 loops=1)
   Recheck Cond: (valid_dt IS NULL)
   FILTER: (SubPlan 1)
   ROWS Removed BY FILTER: 621
   Heap Blocks: exact=2004
   ->  Bitmap INDEX Scan ON idx_order_valid_dt
              (cost=0.00..38.92 ROWS=1933 width=0)
              (actual TIME=0.269..0.269 ROWS=2004 loops=1)
         INDEX Cond: (valid_dt IS NULL)
   SubPlan 1
     ->  LIMIT  (cost=0.29..8.31 ROWS=1 width=0)
                (actual TIME=0.003..0.003 ROWS=1 loops=2004)
           ->  INDEX Scan USING sys_product_pkey ON sys_product p
                     (cost=0.29..8.31 ROWS=1 width=0)
                     (actual TIME=0.002..0.002 ROWS=1 loops=2004)
                 INDEX Cond: (product_id = o.product_id)
                 FILTER: (quality = 2)
                 ROWS Removed BY FILTER: 0
 Planning TIME: 0.126 ms
 Execution TIME: 12.154 ms

This time, something drastically different happened:

  • The executor took our matching rows from the valid_dt index and stashed them in the memory heap.
  • Using those same rows, it executed about 2000 index lookups into the product table.
  • The results are produced almost 8x faster.

Before anyone takes this result and starts rewriting all queries everywhere to utilize anti-joins, keep in mind that they’re extremely situational. The example here was built based on an actual application query at a company I used to work with. In their case, execution went from 2500ms to 280ms following the rewrite. But in building this test-case to simulate their data, I ended up creating a dozen data distributions that were slightly slower using this approach.

In addition, take a look at the LIMIT 1 section of the subquery. We’re explicitly telling the planner that only one product can match per seek, which is what the word EXISTS should imply. Yet if we remove it, the execution plan actually reverts to the same approach used by the more naive JOIN. Ouch!

But that’s OK because queries are, by their nature, more of a linguistic construct than a computational one. Having a larger vocabulary can help convey more meaning and sometimes produce different results, but our audience is perfectly within their rights to summarize or ignore irrelevant prattle. The goal in this case is adding to our lexicon, and trying to frame applicable scenarios in a different way in hopes that the planner will catch on.

For data distributions that apply, anti-joins are a very powerful technique. If nothing else, they’re worth a try when other approaches fall flat. The only way to know for sure is experimentation! They’re just a tool, and like any tool, should only be used at opportune instances.

So remember the anti-join—it’s a great tool for that rare hex-socket screw you occasionally stumble across.

23 May 18:38

PostgreSQL 9.4.2, 9.3.7, 9.2.11, 9.1.16, and 9.0.20 released!

The PostgreSQL Global Development Group has released an update with multiple functionality and security fixes to all supported versions of the PostgreSQL database system, which includes minor versions 9.4.2, 9.3.7, 9.2.11, 9.1.16, and 9.0.20. The update contains a critical fix for a potential data corruption issue in PostgreSQL 9.3 and 9.4; users of those versions should update their servers at the next possible opportunity.

Please see the FAQ about a potential issue with this update for some users before applying it.

Data Corruption Fix

For users of PostgreSQL versions 9.3 or 9.4, this release fixes a problem where the database will fail to protect against "multixact wraparound", resulting in data corruption or loss. Users with a high transaction rate (1 million or more per hour) in a database with many foreign keys are especially vulnerable. We strongly urge all users of 9.4 and 9.3 to update their installations in the next few days.

Users of versions 9.2 and earlier are not affected by this issue.

Security Fixes

This update fixes three security vulnerabilities reported in PostgreSQL over the past few months. None of these issues are seen as particularly urgent. However, users should examine them in case their installations are vulnerable:

  • CVE-2015-3165 Double "free" after authentication timeout.
  • CVE-2015-3166 Unanticipated errors from the standard library.
  • CVE-2015-3167 pgcrypto has multiple error messages for decryption with an incorrect key.

Additionally, we are recommending that all users who use Kerberos, GSSAPI, or SSPI authentication set include_realm to 1 in pg_hba.conf, which will become the default in future versions.

More information about these issues, as well as older patched issues, is available on the PostgreSQL Security Page.

Other Fixes and Improvements

A new, non-default version of the citext extension fixes its previously undocumented regexp_matches() functions to align with the ordinary text version of those functions. The fixed version has a different return type than the old version, so users of CIText should test their applications before updating the function by running "ALTER EXTENSION citext UPDATE".

In addition to the above, more than 50 reported issues have been fixed in this cumulative update release. Most of the issues named affect all supported versions. These fixes include:

  • Render infinite dates and timestamps as infinity when converting to json
  • Fix json/jsonb's populate_record() and to_record()
  • Fix incorrect checking of deferred exclusion constraints
  • Improve planning of star-schema-style queries
  • Fix three issues with planning joins
  • Ensure correct locking with security barrier views
  • Fix deadlock at startup when max_prepared_transactions is too small
  • Recursively fsync() the data directory after a crash
  • Fix autovacuum launcher's possible failure to shut down
  • Cope with unexpected signals in LockBufferForCleanup()
  • Fix crash when doing COPY IN to a table with check constraints
  • Avoid waiting for synchronous replication of read-only transactions
  • Fix two issues with hash indexes
  • Prevent memory leaks in GIN index vacuum
  • Fix two issues with background workers
  • Several fixes to Logical Decoding replication
  • Fix several minor issues with pg_dump and pg_upgrade

This release includes an update to tzdata release 2015d, with updates to Egypt, Mongolia, and Palestine, plus historical changes in Canada and Chile.

9.0 EOL Soon

Version 9.0 will become End-Of-Life in September 2015. This means that this update is likely to be the next-to-last update for that version. Users of PostgreSQL 9.0 should start planning to upgrade to a more current version before then. See our versioning policy for more information about EOL dates.

Updating

As with other minor releases, users are not required to dump and reload their database or use pg_upgrade in order to apply this update release; you may simply shut down PostgreSQL and update its binaries. Users who have skipped multiple update releases may need to perform additional post-update steps; see the Release Notes for details.

Links:

23 May 18:22

OpenVPN: Como configurar um cliente VPN no Ubuntu

by Pedro Pinto
Uma rede privada virtual (VPN – Virtual Private Network ) garante a segurança das comunicações ponto a ponto, nomeadamente a privacidade, integridade e autenticidade dos dados. Para isso esta tecnologia faz a encriptação dos...
23 May 18:20

Varnish para aumentar o desempenho do seu site

by Augusto Campos

Enviado por Ricardo Ferreira Costa (linuxdescomplicadoΘgmail·com):

“Caso você tenha um website com alto volume de acesso e conteúdo, provavelmente já deve ter se deparado com um consumo desproporcional de recursos computacionais; causando falta de memória e consequentemente falha na disponibilidade do seu serviço web. Comumente adotado como servidor o web, o Apache recebe diversas requisições aos conteúdos estáticos (páginas de estilo, scripts, páginas, outros) do site causando requisições e sobrecargas desnecessárias; já que essas informações não mudam (estáticas) e não precisariam de novas requisições a cada momento que fossem necessárias. Portanto, caso você queira aumentar o desempenho do seu site sem aumento de custos; você precisa utilizar o Varnish Cache.” [referência: linuxdescomplicado.com.br]

O artigo "Varnish para aumentar o desempenho do seu site" foi originalmente publicado no site BR-Linux.org, de Augusto Campos.

23 May 18:13

ALERTA: Factory Reset no Android não elimina dados

by Pedro Pinto
Mais de 500 milhões de dispositivos Android afectados Para quem pensava que depois de fazer um Factory Reset no Android  (Restaurar os Dados de Fábrica) o equipamento ficava completamente sem informação pessoal…CUIDADO, não é...
22 May 20:35

Extending PHP Classes and the Object Model

By Dave Smith
Nowadays many PHP developers use Object Oriented Programming (OOP). However not every PHP developer really understands why that is a good thing.

Some use OOP just because they see others using it, without knowing very well its benefits nor how to create a consistent object model that addresses the needs of their applications.

Read this article to learn how objects can represent the real world through classes and how you can create an object model for your PHP application.
21 May 20:00

Pesquisa revela: internet e smartphones afetaram nosso déficit d… — ESQUILO!

by Carlos Cardoso

squirrel-up-dog-gif

Antigamente praticávamos um ritual curioso. Escravos do relógio, esperávamos religiosamente o dia e a hora de nossas séries favoritas. Sentávamos na frente da TV e fora uma corridinha ao banheiro nos comerciais, víamos o episódio de uma sentada só (ui!).

Hoje eu escrevo na metade do monitor, tenho um vídeo do YouTube na outra metade, a TV passa Top Gear via Chromecast e bato papo no Twitter no outro monitor. Séries e filmes sem interrupção só quando estou no bar, em casa fatalmente há uma segunda, às vezes terceira tela. É fisiologicamente incômodo ser monotarefa como antigamente.

Agora uma pesquisa da Microsoft Canadá com 2.000 participantes descobriu que a capacidade de concentração das pessoas vem caindo muito, muito rápido. Em 2000 a média eram 12 segundos. Hoje só conseguimos nos concentrar por 8 segundos. Um peixe dourado tem capacidade de concentração de 9 segundos.

dori

Os luditas estão comemorando, apontando e dizendo “eu não disse?”. Só que essa queda do nível de atenção não é ruim, é apenas… diferente. Nossa capacidade de multitarefa vem aumentando, mas ela sempre existiu. O cérebro humano quando adestrado consegue surpreender.

Um exemplo clássico é a chamada Hipnose de Estrada, quando a gente dirige perfeitamente bem, por quilômetros e quilômetros, mas não se lembra, não percebe. Piscamos e estamos a quilômetros de onde estávamos segundos atrás. É um fenômeno relativamente comum, o cérebro desliga as funções de consciência e vai literalmente no piloto automático.

Vivemos mergulhados em informação, crianças hoje moldam seus cérebros para achar isso absolutamente natural. E é ótimo, estão aproveitando muito mais seu tempo. Estão desenvolvendo habilidades que as tornarão muito mais eficientes. Imagine um cirurgião de urgência com um HoloLens da vida, operando um acidentado e acompanhando 10 ou 20 parâmetros diferentes em tempo real, em vez de perguntar pra enfermeira qual a pressão do sujeito.

As crianças não precisam disto:

tumblr_lboktlrO9d1qegiiuo1_500

A moda de tratar tudo como Síndrome de Déficit de Atenção criou uma epidemia de crianças amansadas com Ritalina nos EUA, quando os pais deveriam perceber que os tempos estão mudando, e que a esmagadora maioria dos casos é apenas falta de organização e disciplina para ser multitarefa de forma eficiente. Talvez forçar monotarefa em crianças acostumadas a fazer 5 coisas ao mesmo tempo não seja uma boa idéia.

Fonte: Telegraph.

The post Pesquisa revela: internet e smartphones afetaram nosso déficit d… — ESQUILO! appeared first on Meio Bit.








21 May 19:58

Curando anemia no Camboja com o Peixe Tony Stark

by Carlos Cardoso

3659840-3x2-940x627

O Camboja é um dos países mais pobres do mundo, e como todo lugar muito pobre a alimentação é um problema. Some a isso a população ter pouco acesso a carne vermelha, por questões culturais e econômicas, e temos o cenário perfeito pra anemia generalizada.

Isso chamou atenção de Christopher Charles, um canadense estudante de Filosofia Sociologia Pedagogia Biomedicina que, visitando o país identificou que não só adultos sofriam com anemia, mas crianças tinham seu desenvolvimento físico e mental prejudicados. 

Ele voltou pro Canadá, se formou e continuou pesquisando uma forma de evitar que o Camboja continuasse a colocar mais comentaristas de YouTube no mundo.

A abordagem normal é tratar anemia com suplementos alimentares, mas quando você mora no lixão da Mãe Lucinda é irreal alguém achar que você vai ter dinheiro para comprar tabletes de ferro. Também não dá pra exigir que uma mãe ocupada entre cuidar dos 14 filhos e empurrar containers de pneus reciclados mantenha um caderninho de quem tomou suplementos naquele dia.

O (agora) Doutor Charles precisava de algo que pudesse ser adicionado à dieta dos cambojanos mais pobres. Espinafre estava fora de questão, a lenda de que ele era uma excelente fonte de ferro surgiu de um erro de digitação. Em verdade uma porção de espinafre com o peso de um hambúrguer contém quase a mesma quantidade de ferro, mas também substâncias que… impedem sua absorção.

Usando a lógica, Charles pensou: o problema é ferro? Que comam ferro!

Ele aproveitou que peixes são um símbolo de boa sorte no país e criou um peixe de ferro fundido que deve ser colocado na fervura da água do sopão.

_83014550_ironfish_children

Ele se baseou em pesquisas que descobriram que os níveis de ferro em famílias que cozinhavam em panelas de ferro fundido eram maiores do que as que usavam barro ou alumínio.

2.500 famílias estão usando os peixes, foram feitos 9.000 deles e distribuídos em hospitais e ONGs. Um peixe de ferro no panelão libera ferro suficiente para que um adulto comendo do sopão obtenha 75% das necessidades diárias. Metade dos participantes do projeto depois de 1 ano já não apresentavam qualquer deficiência ou anemia.

_83014552_ironfish_closeup

Christopher Charles mostrou que nem todo problema demanda uma solução tecnológica complicada. Pensando fora da caixa e usando Ciência Ele conseguiu com um peixe de ferro aquilo que o Tony Stark não conseguiu sozinho com uma armadura completa: salvar o mundo.

Fonte: BBC.

The post Curando anemia no Camboja com o Peixe Tony Stark appeared first on Meio Bit.








21 May 19:03

5 formas para prevenir os ataques XSS

by Marcos Ferreira

Os ataques de Cross-Site-Scripting (XSS) têm se tornado frequentes e afetam milhares de aplicações web. Temos acompanhado essa evolução principalmente no CMS open source WordPress e seus plugins, cujas falhas, que afetam milhões de instalações, têm sido divulgadas nos últimos dias por pesquisadores.

O ataque de XSS permite a injeção de códigos JavaScript no navegador de outro usuário, e o atacante não tem como alvo diretamente sua vítima – em vez disso, ele explora uma vulnerabilidade em um site que o alvo pode visitar com o objetivo de entregar o JavaScript malicioso para ele. No navegador do alvo, o JavaScript malicioso parece ser como parte integrante do site, o que torna o ataque efetivo e quase imperceptível para a vítima.

Podemos considerar um JavaScript como sendo malicioso quando ele consegue acessar informações confidenciais dos usuários, como os cookies ou quando são enviadas requisições HTTP contendo scripts maliciosos que podem usar o XMLHttpRequest. Claro que estes são apenas alguns exemplos, mesmo porque os ataques de XSS permitem uma série de combinações no ataque.

Para entender um pouco melhor, hoje temos três tipos de ataques XSS:

  • Reflected XSS: Acontece quando o servidor reflete o que enviamos sem filtrar o que o usuário colocou, ou seja, ao enviar um determinado parâmetro, o servidor repete no código-fonte da página sem tratar o que foi inserido.
  • Persistent XSS: Acontece quando o código malicioso a ser injetado não foi filtrado e está armazenado na página ou em algum componente da aplicação.
  • Dom Based XSS: É o tipo mais difícil de ser encontrado entre os três, porque depende de uma das vulnerabilidades em algum dos componentes da página, sendo que o script faz alterações no HTML atual da página através da manipulação do DOM (Document Object Model). Recentemente, o tema TwentyFifteen, que é padrão nas instalações do WordPress, foi alvo desse tipo de vulnerabilidade e deixou milhões de sites vulneráveis.

As consequências da exploração dessas falhas podem ser muito sérias e permitirem que um atacante roube as informações confidenciais que podem conter em um cookie, como os Sessions IDs, habilitar um Keylogging em seu servidor, realizar ataques de phishing mais elaborados, entre outras ações. Basicamente, se o atacante consegue executar códigos JavaScript em seu website, a segurança do site e dos seus usuários pode ser comprometida.

Métodos de prevenção

1 – Encoding e Validation

A função do Encoding é filtrar os dados que o usuário irá inserir para que o navegador o interprete apenas como dado e não como código. Um exemplo clássico é a conversão em HTML, como “<“ e “>” em “&lt;” e “&gt;”.

Além disso, quando falamos de Enconding, precisamos pensar tanto do lado do cliente quanto do lado do servidor. No lado do cliente, normalmente você utilizará códigos JavaScript para fazer a verificação; já do lado do servidor, provavelmente você utilizará algum framework que irá realizar essas tarefas.

Somente a utilização do Encoding não é suficiente para bloquear os ataques de XSS, e ele não irá prevenir que o atacante insira algo como “&lt; script &gt;” e continue executando códigos – nesse caso, nós iremos utilizar o Validation.

O objetivo do Validation é filtrar todas as entradas do usuário que podem ser maliciosas para a sua aplicação, e essa será a sua primeira linha de defesa conta os ataques XSS. Essa validação funciona melhor através da prevenção sobre os dados que possuem limites de valores. Um exemplo é uma variável “Int” (inteiro), que não precisa conter códigos HTML.

Até mesmo os formulários POST podem conter scripts de XSS. Então, toda vez que você for usar alguma variável com algum valor no site, tente tratar contra o XSS.

2 – Use bibliotecas Anti-XSS

As bibliotecas Anti-XSS fornecem um conjunto de funções que irá facilitar o filtro dos dados para bloquear os ataques XSS. Abaixo vou citar algumas que conheço para .NET, PHP e Java:

3 – Utilize o Content Security Policy (CSP)

O Content Security Policy é um cabeçalho HTTP que fornece uma whitelist de recursos confiáveis no qual o navegador poderá confiar. Um recurso pode ser um script, CSS, imagem ou outro tipo de arquivo que poderá ser indicado. Isso significa que mesmo se um atacante conseguir injetar um código XSS no seu site, o CSP poderá impedir a sua execução.

Você poderá utilizar o Content Security Policy no Header como mostrado abaixo:

Content-Security-Policy: policy

Sendo que o texto “policy” deverá seguir algumas diretivas. Veja abaixo um exemplo:

Content‑Security‑Policy: 
script‑src 'self' scripts.seusite.com.br; 
media‑src 'none'; 
img‑src *; 
default‑src 'self' http://*.seusite.com.br

Nesse exemplo, os scripts podem ser carregados apenas do servidor atual e da URL scripts.seusite.com.br. Áudio e vídeo não podem ser carregados de nenhum local, imagens podem ser carregadas de qualquer host e qualquer outro recurso pode ser carregado apenas do servidor atual ou de todos os subdomínios em seusite.com.br.

O único problema atual do CSP é que a interpretação é diferente em alguns navegadores e por isso você terá que fazer um tratamento de qual Header enviar, como no caso do Safari, que você precisará usar o modelo abaixo.

X-WebKit-CSP: policy

4 – Usando a flag HttpOnly

O HttpOnly é uma flag adicional que pode ser incluída junto com a opção Set-Cookie. Quando o HttpOnly é usado, o JavaScript não será capaz de ler esse cookie protegido se acontecer a exploração do XSS do lado do cliente. Caso o navegador suporte essa opção, mesmo que a falha de XSS exista e o atacante consiga fazer uma vítima acessar o link que pode explorar a falha, o navegador não irá fornecer os dados do cookie para o atacante.

5 – X-XSS-Protection no Header

Este cabeçalho pode ser utilizado para configurar uma proteção no navegador contra ataques XSS Reflected. Atualmente, apenas os navegadores Internet Explorer, Google Chrome e Safari (WebKit) o suportam.

Exemplo de Header:

X-XSS-Protection: 1; mode=block

Sendo que os parâmetros “1; mode=block” habilitam a proteção contra XSS e instruem o navegador a bloquear scripts que sejam inseridos pelos usuários.

As vulnerabilidades de cross-site scripting são uma das mais comuns em websites e lojas virtuais, e também uma das mais difíceis de se fazer a correção. Procure sempre verificar os dados que são passados pelos usuários tanto do lado do cliente quanto do lado do servidor.

Além dos exemplos mostrados acima, a utilização de um Web Application Firewall (WAF) irá ajudar a proteger suas aplicações em tempo real contra ataques não somente de XSS, mas muitas vezes também de SQL Injection, DDoS, entre outros.

Mensagem do anunciante:

A KingHost completa 8 anos, e você ganha 50% de desconto nos 3 primeiros meses. Conheça e contrate nossos planos!

21 May 17:34

Placebo Blocker

They work even better if you take them with our experimental placebo booster, which I keep in the same bottle.
21 May 17:34

Dicas para organizar melhor seu espaço

by Marcia Breda

Organização é palavra-chave no home office, especialmente se o seu local de trabalho fica dentro do quarto ou ocupa um espaço na sala. Delimitar uma área exclusiva para isso é fundamental para criar uma atmosfera de concentração e seriedade, tudo aquilo que a gente precisa pra render mesmo sem sair de casa. Algumas coisas simples podem ajudar você nessa tarefa.

 

– Use post-it! Você pode criar categorias, separando por cor e tamanho e colar no seu computador, no monitor ou até mesmo na parede. É um jeito de evitar juntar muita papelada em cima da mesa.

 

Adoro Home Office

Foto: Pinterest

 

– Use cestinhas organizadoras. Elas são ótimas para armazenar bloquinhos, cadernetas e todas as bugigangas que você precisa ter por perto durante o dia. Podemos incluir cremes, balinhas, pilhas, remédios e cartões, por exemplo.

 

Adoro Home Office

Foto: Pinterest

 

– Organize as canetas em canecas. Porque mesmo que você use sempre a mesma caneta, a gente sabe que existem mais umas outras 136 espalhadas pelas gavetas, bolsas, mesas, sofás e todos os outros cantos da casa. É bom deixar sempre uma em um lugar de fácil acesso, mas as outras todas você pode organizar em canecas divertidas.

 

Adoro Home Office

 

– Deixe um calendário de papel na sua mesa. Mesmo que você tenha a opção de conferir as datas no computador ou no telefone, ter um calendário tradicional na mesa facilita as coisas na hora de procurar rapidamente um dia específico ou um feriado.

 

Adoro Home Office

Foto: Pinterest

 

O post Dicas para organizar melhor seu espaço apareceu primeiro em Adoro Home Office.

21 May 17:29

dinheiro

by Francisco Nunes

Ganhe tudo o que você puder; economize tudo o que você puder; dê tudo o que você puder.

(John Wesley)

Send to Kindle
21 May 17:29

ensino

by Francisco Nunes

Feliz aquele que transfere o que sabe e aprende o que ensina.

(Cora Coralina)

Send to Kindle
21 May 17:29

dar-se

by Francisco Nunes

Não posso dar-me a quem não sabe me prender.

(Natalie Barney)

Send to Kindle
16 May 22:06

A volta do Senhor

by Francisco Nunes

Mil e setecentos anos já se passaram, mas Ele ainda não voltou; e isso é um longo período, segundo o cômputo humano, mas não segundo a maneira de Deus ver as coisas. Pois para Ele mil anos é como um dia; embora os santos se impacientem, porque ama, anseiam e apressam a vinda de Cristo. Porém, embora pareça tardio, Ele finalmente virá: Ele mantém-se afastado a fim de dar tempo aos Seus laboriosos ministros de exercerem todos os dons que Ele lhes outorgou, e a fim de que os preguiçosos não tenham meio de desculpa.

(John Gill, 1697-1771)

Send to Kindle

O post A volta do Senhor apareceu primeiro em Campos de Boaz.

16 May 22:06

professor

by Francisco Nunes

Um professor é alguém que se faz progressivamente desnecessário.

(Thomas Carruthers)

Send to Kindle
16 May 22:06

tédio

by Francisco Nunes

O tédio veio ao mundo pela estrada que a preguiça construiu.

(La Bruyére)

Send to Kindle
16 May 22:05

televisão

by Francisco Nunes

A televisão não foi inventada para esvaziar as pessoas, mas é uma emanação de seu vazio.

(Malcom Muggeridge)

Send to Kindle
16 May 22:05

existir

by Francisco Nunes

Nunca deixo de ter em mente que o simples fato de existir já é divertido!

(Katherine Hepburn)

Send to Kindle
16 May 22:05

velhice

by Francisco Nunes

Velhice é quando as moças começam a nos tratar com respeito e os rapazes, sem respeito nenhum.

(Märio Quintana)

Send to Kindle
16 May 22:05

virtude

by Francisco Nunes

Mede-se a força da virtude, não por ações excepcionais, mas pelos hábitos cotidianos.

(Blaise Pascal)

Send to Kindle
16 May 22:04

mentira

by Francisco Nunes

A pior mentira é a que contamos a nós mesmos.

(Nietszche)

Send to Kindle
16 May 22:04

medo

by Francisco Nunes

O medo é o mais perigoso dos sentimentos coletivos.

(André Maurois)

Send to Kindle
16 May 22:04

amanhã

by Francisco Nunes

O amanhã é a coisa mais importante na vida. Chega até nós à meia-noite, limpo. É perfeito quando se coloca em nossas mãos. Ele espera que tenhamos aprendido algo do ontem.

(John Wayne)

Send to Kindle