presidente da assoc. dos engenheiros da petrobras disse: o psdb não gosta da petrobras nem do brasil. concorda?
em entrevista concedida ao 'correio da cidadania', em janeiro deste ano, o presidente da associação dos engenheiros da petrobras (aepet), fernando siqueira, já alertava para uma nova campanha de desmoralização da empresa diante do público. entre outras coisas, ele recorda que a gestão do psdb governando o país foi responsável pela quebra do monopólio do petróleo, pela venda de 36% das ações da petrobrás na bolsa de nova york por menos de 10% do seu valor real. para siqueira, o governo depende da participação popular para defender o nosso petróleo. 

gabriel brito e valéria nader, para o correio da cidadania

no último mês de 2008, vieram a público informações a respeito de empréstimos que a petrobrás vem tomando da caixa econômica federal e do banco do brasil. os comentários acerca do tema são exagerados e tais operações podem ser consideradas rotina de uma empresa de tal porte. ou será que há sinais de que a estatal estaria passando por dificuldades em suas contas? 

fernando siqueira: a meu ver, todo este estardalhaço do noticiário faz parte de uma nova campanha de descrédito da petrobrás perante a opinião pública, visando à desacreditá-la como capaz de desenvolver a produção do pré-sal, uma descoberta monumental, que tem reservas seis vezes maiores do que as existentes até hoje. já vimos esse filme...

 
em 1995, houve forte participação da mídia na defesa da quebra do monopólio estatal do petróleo. foi montada uma campanha sórdida na mídia contra as estatais em geral e a petrobrás em especial. a veja, por exemplo, na ocasião fez uma matéria de dez páginas atacando a empresa com informações absurdamente falaciosas e não respeitou o direito de resposta nem mesmo como matéria paga, desrespeitando o artigo 5º da constituição.

 
no caso presente, essas operações financeiras são feitas como de rotina, mas receberam um destaque na mídia muito maior do que, por exemplo, o caso da americana aes, que na privatização adquiriu a eletropaulo com dinheiro do bndes, remeteu lucro para o exterior e não pagou a dívida com o banco.

 
portanto, é uma operação de rotina da petrobrás usada como pretexto para uma nova campanha da grande mídia que faz o jogo dos seus anunciantes, ou seja, as corporações multinacionais.

outro fato: em 1999, fhc substituiu seis diretores da petrobrás no conselho de administração (ca) por seis conselheiros do setor privado, alguns representantes do sistema financeiro internacional, ficando o ca com nove membros externos. este ca decidiu por uma economia forçada na empresa, cortando promoções e até despesas com papel higiênico. objetivo: tentar mostrar ao povo que a empresa está com dificuldades financeiras e não pode conduzir o pré-sal.

 
a partir dos empréstimos, começou a se aventar que na verdade o problema da petrobrás é administrativo, pois foram anos colhendo grandes lucros, com importantes negócios inclusive fora do país. esse raciocínio pode ser considerado válido?


fs: eu não diria que a atual administração tem a competência ideal, pois além da permanência da maioria do segundo escalão do governo fhc, há alguns gerentes nomeados mais por militância do que por competência. mas, ainda assim, ela consegue ser muito melhor do que as administrações de reichstul e francisco gros.


durante a gestão reichstul, a petrobrás teve 62 acidentes sérios em dois anos, contra uma série histórica de menos de um acidente grave por ano de 1975 a 1998. este fato, inclusive, nos levou a suspeitar de sabotagem para jogar a opinião pública contra a petrobrás. e, a partir de nossas denúncias, os acidentes cessaram. o objetivo era desmoralizar a empresa para desnacionalizá-la. reichstul chegou a mudar seu nome para petrobrax com esse objetivo. ele também desmontou a equipe de planejamento estratégico da petrobrás, entregando-o à empresa americana arthur de little, presidida por seu amigo paulo absten. e esta fez um planejamento catastrófico. definiu a ida para o exterior e a compra de ativos podres na bolívia, argentina e equador como problemas. ele dividiu a petrobrás em 40 unidades de negócio para desnacionalizá-la, conforme preconizado pelo credit suisse first boston.

 
francisco gros, segundo sua biografia publicada em revista da fundação getulio vargas, voltou ao brasil como diretor do banco morgan stanley, com a missão de assessorar as empresas norte-americanas no processo de privatização brasileiro. gros foi para a diretoria do bndes (que comandou o processo) e acumulava a direção daquele banco com o conselho de administração da petrobrás. com a saída de reichstul, ele assumiu a presidência da empresa e, em discurso em houston (eua), logo após a posse, declarou que a petrobrás passaria de empresa estatal para empresa privada de capital internacional. nós barramos esse seu intento. mas outro grande estrago foi feito.


quanto aos acidentes, o ano começou com o surgimento de outro tema preocupante: a morte de um funcionário, terceirizado, na bacia de campos. desde 95,
.

discordo. acho que quem não deve gostar muito da petrobrás é esse senhor que você cita.

.
no final da década de 1990 e início da década de 2000, os setores de energia do brasil passaram pela liberalização do mercado. em 1997, a lei de investimento em petróleo foi aprovada, uma estrutura legal e regulatória foi estabelecida e a produção de petróleo foi liberalizada. os principais objetivos da lei foram a criação do cnpe e da anp, o aumento do uso de gás natural, o aumento da concorrência no mercado de energia e os investimentos em geração de energia. o monopólio estatal da exploração de petróleo e gás foi encerrado e os subsídios de energia foram reduzidos. no entanto, o governo manteve o controle monopolista dos principais complexos energéticos e administrou o preço de certos produtos energéticos. 1as atuais políticas governamentais concentram-se principalmente na melhoria da eficiência energética, tanto nos setores residenciais quanto nos industriais, bem como no aumento da energia renovável. a nova reestruturação do setor de energia será uma das principais questões para garantir investimentos para atender à crescente necessidade de combustível e eletricidade. É um problema geral. <p>por que se preocupar com seu isp? isso é apenas um negócio tentando ganhar algum dinheiro, eles provavelmente não vão se incomodar. pode ser muito mais fácil revelar o que você está fazendo examinando seu próprio computador. como: quais sites habilitados para flash <a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings%5fmanager06.html">o seu computador visito</a> desde que você o comprou?</p><p>no entanto, quanto à administração atual do governo, as coisas podem ser diferentes. apenas alguns exemplos:</p><ul> <li> <p> <a href="https://secure.cryptohippie.com/pubs/eps-2008.pdf">estado da polícia eletrônica, rankings nacionais de 2008</a> : 1. china, 2. coréia do norte, 3. bielorrússia, 4. rússia, 5. reino unido: inglaterra e país de gales, 6. estados unidos da américa, 7 cingapura, 8. israel, 9. frança, 10. alemanha, 11. malásia, 12. irlanda, 13. reino unido: escócia, 14. holanda, 15. coréia do sul, 16. ucrânia, 17. bélgica, 18. austrália 19. japão, 20. nova zelândia, 21. áustria, 22. noruega, 23. índia, 24. itália, 25. taiwan, 26. dinamarca, 27. hungria, 28. grécia, 29. canadá, 30. suíça, 31. eslovênia, 32. polônia, 33. finlândia, 34. suécia, 35. letônia, 36. lituânia, 37. chipre, 38. malta, 39. estônia, 40. república tcheca, 41. islândia, 42. áfrica do sul, 43. espanha, 44. portugal, 45. luxemburgo, 46. argentina, 47. romênia, 48. tailândia, 49. bulgária, 50. brasil, 51. méxico, 52. filipinas</p> </li> <li> <p> <a href="http://news.bbc.co.uk/2/hi/uk\_news/england/london/8034315.stm">alguém em londres é parado e revistado a cada três minutos</a> , e enquanto o número de prisões não diz nada sobre a ameaça real, portanto, o número de prisões dificilmente pode ser usado para calcular uma "taxa de sucesso": <em> a polícia metropolitana usou a seção 44 da lei do terrorismo mais de 170.000 vezes em 2008 para deter pessoas em londres. [..] de todas as paradas no ano passado, apenas 65 levaram a prisões por delitos terroristas, uma taxa de sucesso de apenas 0,035%. </em></p> </li> <li> <p> <a href="http://www.salon.com/opinion/greenwald/2009/04/06/obama/">novas e piores reivindicações de sigilo e imunidade do obama doj</a> , kevin bankston da electronic frontier foundation, em <a href="http://www.boingboing.net/2009/04/08/eff-attorney-explain.html">ma entrevista</a> com keith olbermann: <em> o governo obama está adotando os mesmos argumentos agressivos de sigilo que o governo bush fez, e os está melhorando, argumentando esse incrível argumento de imunidade. ao dizer que, apesar das muitas leis que temos que visam impedir o governo de nos escutar ou acessar nossos registros de comunicações sem mandado, o governo dos eua está imune a qualquer ação por violar esses estatutos e essencialmente eviscerar os direitos à privacidade de milhões dos americanos comuns. </em></p> </li> <li> <p> <a href="http://boingboing.net/2009/03/28/british-cops-identif.html">policiais britânicos identificam 200 crianças em idade escolar como terroristas em potencial</a> : <em> 200 crianças no reino unido, algumas com apenas 13 anos, tiveram arquivos abertos pela polícia antiterror britânica como terroristas em potencial - mesmo que não tenham cometido nenhum crime. as crianças foram denunciadas ao esquadrão antiterror por seus professores com base no trabalho escolar, diários e conversas que, na visão dos professores, indicavam que as crianças eram suscetíveis a crenças extremistas. o programa tem apenas 18 meses e já identificou 200 crianças que devem ser tratadas como suspeitas de terrorismo. nesse ritmo, todas as crianças na grã-bretanha devem estar na lista de observação até, o que, 2018? </em></p> </li> </ul> <p>isso só traz aos olhos do público algo que vem acontecendo há muito tempo: tudo é vulnerável. o kit scada costumava ser mais seguro, pois geralmente não estava conectado diretamente a redes públicas e era considerado obscuro; no entanto, os alvos são interessantes e os níveis de segurança geralmente extremamente baixos, então os invasores sempre pesquisaram maneiras de explorá-los.</p><p>os conceitos gerais para prevenir ataques são os mesmos que para qualquer outra coisa</p><ul> <li>segregar redes com dispositivos de controle de acesso (roteadores, firewalls etc)</li> <li>links de comunicação segura (criptografia, autenticação e sim, <strong>mídia removível!</strong>)</li> <li>fortalecer plataformas e aplicativos</li> <li>código de revisão</li> <li>teste de penetração</li> </ul><p>em relação às suas subquestões:</p><ul> <li>se os plcs não estiverem conectados (e você pode confirmar isso), eles não podem ser atacados por meio de uma conexão. no entanto, a maioria está conectada por meio de algum tipo de link, então suponha que esse link seja o canal de ataque</li> <li>plcs são uma área específica para esta atualização do metasploit, no entanto, você geralmente deve assumir que qualquer sistema tem vulnerabilidades e planejar de acordo com seu apetite de risco.</li> </ul> <h1>prefácio</h1><p>esta é realmente uma tarefa assustadora, e há muito o que abordar. portanto, estou humildemente sugerindo isso como um guia abrangente para sua equipe, com dicas para ferramentas e material educacional apropriados.</p><p><em> <strong> lembre-se: </strong> estas são <strong> diretrizes </strong> e que, como tal, devem ser adotados, adaptados ou descartados com base nas circunstâncias. </em></p><p><em> <strong> cuidado: </strong> despejar tudo isso em uma equipe ao mesmo tempo provavelmente falhará. você deve tentar escolher elementos que dariam o melhor retorno possível e apresentá-los lentamente, um de cada vez. </em></p><p><em> <strong> nota: </strong> nem tudo isso se aplica diretamente a sistemas de programação visual como o g2. para obter detalhes mais específicos sobre como lidar com eles, consulte a seção <strong> adendo </strong> no final. </em></p><hr><h1>resumo executivo para o impaciente</h1><ul> <li>defina uma estrutura rígida do projeto <strong> </strong>, com: <ul> <li><strong> modelos de projeto </strong>,</li> <li><strong> convenções de codificação </strong>,</li> <li>sistemas familiares <strong> de construção </strong>,</li> <li>e conjuntos de <strong> diretrizes de uso </strong> para sua infraestrutura e ferramentas.</li> </ul> </li> <li>instale um bom <strong> [~ # ~] scm [~ # ~] </strong> e verifique se eles sabem como usá-lo.</li> <li>aponte-os para bons <strong> ides </strong> para sua tecnologia e verifique se eles sabem como usá-los.</li> <li>implemente <strong> verificadores de qualidade de código </strong> e <strong> relatórios automáticos </strong> no sistema de construção.</li> <li>acople o sistema de construção a <strong> integração contínua </strong> e <strong> sistemas de inspeção contínua </strong>.</li> <li>com a ajuda do acima, identifique <strong> código de qualidade "hotspots" </strong> e <strong> refator </strong>.</li> </ul><p><em> agora, para a versão longa ... cuidado, preparem-se! </em></p><hr><h1>a rigidez é (geralmente) boa</h1><p><em> esta é uma opinião controversa, pois a rigidez é frequentemente vista como uma força trabalhando contra você. é verdade para algumas fases de alguns projetos. mas uma vez que você o vê como um suporte estrutural, uma estrutura que elimina as suposições, reduz bastante a quantidade de tempo e esforço desperdiçados. faça com que funcione para você, não contra você. </em></p><p><em> rigidez </em> = <em> processo </em>/<em> procedimento </em>.</p><p>o desenvolvimento de software precisa de bons processos e procedimentos pelas mesmas razões pelas quais as fábricas ou fábricas de produtos químicos possuem manuais, procedimentos, exercícios e diretrizes de emergência: prevenção de maus resultados, aumento da previsibilidade, maximização da produtividade ...</p><p><strong> embora a rigidez seja moderada! </strong></p><h2>rigidez da estrutura do projeto</h2><p>se cada projeto vem com sua própria estrutura, você (e os novatos) estão perdidos e precisam começar do zero toda vez que os abrir. você não quer isso em uma loja de software profissional e também não quer isso em um laboratório.</p><h2>rigidez dos sistemas de construção</h2><p>se cada projeto <strong> parecer </strong> diferente, há uma boa chance de que eles também <strong> sejam construídos de forma diferente </strong> . uma construção não deve exigir muita pesquisa ou muita adivinhação. você quer fazer a coisa canônica e não precisa se preocupar com detalhes: <code>configure; make install</code>, <code>ant</code>, <code>mvn install</code>, etc ...</p><p>a reutilização do mesmo sistema de construção e a sua evolução ao longo do tempo também garantem um nível consistente de qualidade.</p><p>você precisa de um <code>readme</code> rápido para apontar as especificidades do projeto e orientar graciosamente o usuário/desenvolvedor/pesquisador, se houver.</p><p>isso também facilita muito outras partes da sua infraestrutura de construção, a saber:</p><ul> <li> <a href="http://en.wikipedia.org/wiki/continuous\_integration">integração contínua</a> ,</li> <li> <a href="http://www.ibm.com/developerworks/java/library/j-ap08016/index.html">inspeção contínua</a> .</li> </ul><p>portanto, mantenha sua construção (como seus projetos) atualizada, mas torne-a mais rígida ao longo do tempo e mais eficiente na denúncia de violações e práticas inadequadas.</p><p>não reinvente a roda e reutilize o que você já fez.</p><p><strong> leitura recomendada: </strong></p><ul> <li><em> <a href="http://rads.stackoverflow.com/amzn/click/0321336380">integração contínua: melhorando a qualidade do software e reduzindo riscos</a> </em> (duval, matyas, glover, 2007)</li> <li><em> entrega contínua: lançamentos de sotware através da automação de compilação, teste e implantação </em> (humble, farley, 2010)</li> </ul><h2>rigidez na escolha das linguagens de programação</h2><p>você não pode esperar, especialmente em um ambiente de pesquisa, que todas as equipes (e menos ainda todos os desenvolvedores) usem a mesma pilha de linguagem e tecnologia. no entanto, você pode identificar um conjunto de ferramentas "oficialmente suportadas" e incentivar o uso delas. o resto, sem uma boa justificativa, não deve ser permitido (além da prototipagem).</p><p>mantenha sua pilha de tecnologia simples e a manutenção e a amplitude das habilidades necessárias ao mínimo: um núcleo forte.</p><h2>rigidez das convenções e diretrizes de codificação</h2><p>as convenções e diretrizes de codificação são o que permitem que você desenvolva uma identidade como equipe e um jargão compartilhado <em> </em>. você não deseja errar <em> terra incognita </em> toda vez que abrir um arquivo de origem.</p><p>regras absurdas que tornam a vida mais difícil ou proíbem ações explicitamente, na medida em que os commits são recusados ​​com base em violações simples e simples, são um fardo. contudo:</p><ul> <li> <p>um conjunto de regras básicas bem pensado elimina grande parte dos gemidos e pensamentos: <strong> ninguém </strong> deve quebrar sob nenhuma circunstância;</p> </li> <li> <p>e um conjunto de regras recomendadas fornece orientações adicionais.</p> </li> </ul><blockquote> <p><strong> abordagem pessoal: </strong> sou agressivo quando se trata de convenções de codificação, alguns até dizem <em> nazi </em>, porque eu acredito em ter uma <em> lingua franca </em>, um estilo reconhecível para minha equipe. quando o código de porcaria é verificado, ele se destaca como uma afta na face de uma estrela de hollywood: desencadeia uma revisão e uma ação automaticamente. de fato, às vezes fui longe em defender o uso de ganchos pré-confirmação para rejeitar confirmações não conformes. como mencionado, não deve ser muito louco e atrapalhar a produtividade: deve impulsioná-lo. apresente-os lentamente, especialmente no começo. mas é preferível gastar tanto tempo corrigindo códigos defeituosos que você não pode trabalhar em problemas reais.</p> </blockquote><p>alguns idiomas ainda impõem isso por design:</p><ul> <li>o java foi criado para reduzir a quantidade de porcaria que você pode escrever com ele (embora sem dúvida muitos consigam fazê-lo).</li> <li> <p>a estrutura de blocos do python por indentação é outra idéia nesse sentido.</p> </li> <li> <p>vá, com sua ferramenta <code>gofmt</code>, que tira completamente qualquer debate e esforço (<strong> e ego !! </strong>) inerentes ao estilo: run <code>gofmt</code> antes de você confirmar.</p> </li> </ul><p>certifique-se de que <strong> a podridão do código </strong> não pode passar despercebida. <strong> convenções de código </strong>, <strong> integração contínua </strong> e <strong> inspeção contínua </strong>, <strong> programação de pares </strong> e <strong> análises de código </strong> é o seu arsenal contra esse demônio.</p><p>além disso, como você verá abaixo, o código <strong> é a documentação </strong>, e essa é outra área em que as convenções incentivam a legibilidade e a clareza.</p><h2>rigidez da documentação</h2><p>a documentação anda de mãos dadas com o código. o próprio código é documentação. mas deve haver instruções claras sobre como construir, usar e manter as coisas.</p><p>usar um único ponto de controle para documentação (como um wikiwiki ou dms) é uma coisa boa. crie espaços para projetos, espaços para brincadeiras e experiências mais aleatórias. todos os espaços reutilizam regras e convenções comuns. tente fazer parte do espírito de equipe.</p><p><em> a maioria dos conselhos aplicáveis ​​ao código e às ferramentas também se aplica à documentação. </em></p><h3>rigidez nos comentários do código</h3><p>comentários de código, como mencionado acima, também são documentação. os desenvolvedores gostam de expressar seus sentimentos sobre o código (principalmente orgulho e frustração, se você me perguntar). portanto, não é incomum que eles os expressem em termos inequívocos nos comentários (ou mesmo no código), quando um pedaço de texto mais formal poderia ter transmitido o mesmo significado com menos palavrões ou drama. não há problema em deixar passar alguns por motivos divertidos e históricos: também faz parte do <strong> desenvolvimento de uma cultura de equipe </strong>. mas é muito importante que todos saibam o que é aceitável e o que não é, e esse ruído de comentário é apenas isso: <strong> ruído </strong>.</p><h3>rigidez nos logs de consolidação</h3><p>os registros de confirmação não são uma "etapa" irritante e inútil do ciclo de vida do seu scm: você não o pula para chegar em casa a tempo ou prosseguir com a próxima tarefa, ou para conversar com os amigos que foram almoçar. eles são importantes e, como (a maioria) bom vinho, quanto mais o tempo passa, mais valiosos eles se tornam. então faça-os direito. fico espantado quando vejo colegas de trabalho escrevendo frases de efeito para commits gigantes ou para hacks não óbvios.</p><p>as confirmações são feitas por um motivo, e esse motivo nem sempre é expresso claramente pelo seu código e pela única linha do log de confirmação que você inseriu. há mais do que isso.</p><p><strong> cada linha de código tem uma história <em> </em> e uma história <em> </em> </strong> os diffs podem contar sua história, mas você deve escrever sua história.</p><blockquote> <p>por que atualizei esta linha? -&gt; porque a interface mudou.</p> <p>por que a interface mudou? -&gt; como a biblioteca l1 que o definiu foi atualizada.</p> <p>por que a biblioteca foi atualizada? -&gt; como a biblioteca l2, necessária para o recurso f, dependia da biblioteca l1.</p> <p>e qual é o recurso x? -&gt; ver tarefa 3456 no rastreador de problemas.</p> </blockquote><p>não é minha escolha de scm e também pode não ser a melhor para o seu laboratório; mas <code>git</code> acerta isso e tenta forçá-lo a escrever bons logs mais do que a maioria dos outros sistemas scms, usando <code>short logs</code> e <code>long logs</code>. vincule o id da tarefa (sim, você precisa de um) e deixe um resumo genérico para o <code>shortlog</code> e expanda no log longo: escreva a história do changeset <strong> </strong>.</p><p><strong> é um log: </strong> está aqui para acompanhar e registrar as atualizações.</p><blockquote> <p><strong> regra geral: </strong> se você procurou algo sobre essa alteração posteriormente, é provável que seu registro responda à sua pergunta?</p> </blockquote><h3>projetos, documentação e código estão vivos</h3><p>mantenha-os sincronizados, caso contrário eles não formarão mais essa entidade simbiótica. faz maravilhas quando você tem:</p><ul> <li>clear confirma registros no seu scm, com links para ids de tarefas no rastreador de problemas,</li> <li>onde os tickets desse rastreador estão vinculados aos conjuntos de alterações no seu scm (e possivelmente às compilações no seu sistema de ic),</li> <li>e um sistema de documentação vinculado a todos eles.</li> </ul><p><strong> o código e a documentação precisam ser coesos </strong>.</p><h2>rigidez nos testes</h2><blockquote> <p><strong> regras de ouro: </strong></p> <ul> <li>qualquer novo código deve vir com (pelo menos) testes de unidade.</li> <li>qualquer código legado refatorado deve vir com testes de unidade.</li> </ul> </blockquote><p>obviamente, eles precisam:</p><ul> <li>para testar algo valioso (ou é um desperdício de tempo e energia),</li> <li>para ser bem escrito e comentado (como qualquer outro código que você faz check-in).</li> </ul><p>eles também são documentação e ajudam a delinear o contrato do seu código. especialmente se você usar <a href="http://en.wikipedia.org/wiki/test-driven\_development"> tdd </a> . mesmo se não, você precisa deles para sua paz de espírito. eles são sua rede de segurança quando você incorpora um novo código (manutenção ou recurso) e sua torre de vigia para se proteger contra a podridão do código e falhas ambientais.</p><p>obviamente, você deve ir além e ter <a href="http://en.wikipedia.org/wiki/integration\_testing">testes de integração</a> e <a href="http://en.wikipedia.org/wiki/regression\_testing">testes de regressão</a> para cada bug reproduzível corrigido.</p><h2>rigidez no uso das ferramentas</h2><p>não há problema em um desenvolvedor/cientista ocasional querer experimentar algum novo verificador estático na fonte, gerar um gráfico ou modelo usando outro ou implementar um novo módulo usando uma dsl. mas é melhor se houver um conjunto canônico de ferramentas que <strong> todos os membros da equipe </strong> devem conhecer e usar.</p><p>além disso, permita que os membros usem o que querem, desde que sejam todos:</p><ul> <li><strong> produtivo </strong>,</li> <li><strong> não requer assistência regularmente </strong></li> <li><strong> não se ajusta regularmente à sua infraestrutura geral </strong>,</li> <li><strong> não interrompe sua infraestrutura </strong> (modificando áreas comuns como código, sistema de compilação, documentação ...),</li> <li><strong> não afeta o trabalho de outras pessoas </strong>,</li> <li><strong> capaz de executar oportuna qualquer tarefa solicitada </strong>.</li> </ul><p>se não for esse o caso, imponha que eles retornem aos padrões.</p><hr><h2>rigidez vs versatilidade, adaptabilidade, prototipagem e emergências</h2><p>flexibilidade pode ser boa. permitir que alguém ocasionalmente use um hack, uma abordagem rápida e suja ou uma ferramenta favorita para <strong> fazer o trabalho </strong> é bom. <strong> [~ # ~] nunca [~ # ~] </strong> deixe que se torne um hábito e <strong> [~ # ~] nunca [~ # ~] </strong> deixe esse código se tornar a base de código real para suportar.</p><hr><h1>questões de espírito de equipe</h1><h3>desenvolva um senso de orgulho em sua base de código</h3><ul> <li>desenvolva um senso de orgulho no código <ul> <li>use wallboards <ul> <li>quadro de líderes para um jogo de integração contínua</li> <li>wallboards para gerenciamento de problemas e contagem de defeitos</li> </ul> </li> <li>use um <a href="http://en.wikipedia.org/wiki/issue\_tracking\_system">rastreador de problemas</a> / <a href="http://en.wikipedia.org/wiki/bug\_tracking\_system">rastreador de erros</a> </li> </ul> </li> </ul><h3>evite jogos de culpa</h3><ul> <li>não use jogos de integração contínua/inspeção contínua: promove boas maneiras e <a href="http://www.codinghorror.com/blog/2009/05/how-to-motivate-programmers.html">competição produtiva</a> .</li> <li>não acompanhe os defeitos: é apenas uma boa manutenção da casa.</li> <li>do <strong> identificando causas-raiz </strong>: são apenas processos à prova de futuro.</li> <li>mas não <a href="https://softwareengineering.stackexchange.com/questions/83038/who-is-responsible-for-defects-found-during-development">atribuir culpa</a> : é contraproducente.</li> </ul><h3>é sobre o código, não sobre os desenvolvedores</h3><p>torne os desenvolvedores conscientes da qualidade de seu código, mas faça com que eles vejam o código como uma entidade independente e não como uma extensão de si mesmos, que não pode ser criticada.</p><p>é um paradoxo: você precisa incentivar <a href="http://www.codinghorror.com/blog/2006/05/egoless-programming-you-are-not-your-job.html">programação sem ego</a> para um ambiente de trabalho saudável, mas confiar no ego para fins motivacionais.</p><hr><h1>de cientista a programador</h1><p>pessoas que não valorizam e se orgulham do código não produzem um bom código. para que essa propriedade surja, eles precisam descobrir o quão valioso e divertido pode ser. simples profissionalismo e desejo de fazer o bem não são suficientes: é preciso paixão. então você precisa transformar seus cientistas em <strong> programadores </strong> (no sentido amplo).</p><p>alguém argumentou nos comentários que, após 10 a 20 anos em um projeto e seu código, qualquer um se sentiria apegado. talvez eu esteja errado, mas suponho que tenham orgulho dos resultados do código e do trabalho e seu legado, não do código em si ou do ato de escrevê-lo.</p><p>por experiência, a maioria dos pesquisadores considera a codificação uma necessidade ou, na melhor das hipóteses, uma distração divertida. eles só querem que funcione. aqueles que já são bastante versados ​​e têm interesse em programação são muito mais fáceis de persuadir a adotar as melhores práticas e a alternar tecnologias. você precisa levá-los até a metade do caminho.</p><hr><h1>manutenção de código faz parte do trabalho de pesquisa</h1><p>ninguém lê documentos de pesquisa ruins. é por isso que eles são revisados ​​por pares, revisados, refinados, reescritos e aprovados uma e outra vez até que estejam prontos para publicação. o mesmo se aplica a uma tese <strong> e a uma base de código! </strong></p><p>deixe claro que a constante refatoração e atualização de uma base de código evita a podridão do código e reduz a dívida técnica, além de facilitar a reutilização e adaptação futuras do trabalho para outros projetos.</p><hr><h1>por que tudo isso??!</h1><p>por que nos preocupamos com tudo isso? para <strong> qualidade do código </strong>. ou é <strong> código de qualidade </strong> ...?</p><p>essas diretrizes visam direcionar sua equipe para esse objetivo. alguns aspectos fazem isso simplesmente mostrando-lhes o caminho e deixando-os fazer (o que é muito melhor) e outros os pegam pela mão (mas é assim que você educa as pessoas e desenvolve hábitos).</p><p>como você sabe quando a meta está ao seu alcance?</p><h2>qualidade é mensurável</h2><p>nem sempre é quantitativamente, mas <strong> é mensurável </strong>. como mencionado, você precisa desenvolver um senso de orgulho em sua equipe, e mostrar progresso e bons resultados é essencial. avalie a qualidade do código regularmente e mostre o progresso entre os intervalos e como isso é importante. faça retrospectivas para refletir sobre o que foi feito e como isso tornou as coisas melhores ou piores.</p><p>existem ótimas ferramentas para <strong> inspeção contínua </strong>. <a href="http://www.sonarsource.org/">sonar</a> sendo popular no mundo java, mas pode se adaptar a qualquer tecnologia; e há muitas outras. mantenha seu código sob o microscópio e procure-os insetos e micróbios irritantes irritantes.</p><hr><h1>mas e se meu código já for uma porcaria?</h1><p>todas as opções acima são divertidas e fofas como uma viagem a never land, mas não é tão fácil de fazer quando você já tem um monte de porcaria (fumegante e fedorento) e uma equipe relutante em mudar.</p><p>aqui está o segredo: <strong> você precisa começar em algum lugar </strong>.</p><blockquote> <p><strong> anedota pessoal: </strong> em um projeto, trabalhamos com uma base de código que pesava originalmente 650.000+ java loc, mais de 200.000 linhas de jsps, mais de 40.000 javascript loc e mais de 400 mbs de dependências binárias.</p> <p>após cerca de 18 meses, são 500.000 java loc <strong> (mais limpo) </strong>, 150.000 linhas de jsps e 38.000 javascript loc , com dependências de até 100 mb (e elas não estão mais no nosso scm!).</p> <p><strong> como fizemos? </strong> <em> acabamos de fazer todas as opções acima. ou tentou arduamente. </em></p> <p>é um esforço de equipe, mas lentamente <strong> injetamos </strong> em nossos regulamentos e ferramentas de processo para monitorar a freqüência cardíaca de nosso produto, enquanto apressadamente <strong> cortando </strong> a "gordura": código de porcaria, dependências inúteis ... não paramos todo o desenvolvimento para fazer isso: temos períodos ocasionais de relativa paz e sossego, onde são livres para enlouquecer na base de código e desmembrá-la, mas na maioria das vezes fazemos tudo por padrão para um modo de "revisão e refatoração" a cada chance que temos: durante construções, durante o almoço, durante corridas de erros, durante sexta-feira tardes ...</p> <p>houve alguns "trabalhos" grandes ... mudar nosso sistema de compilação de uma compilação ant gigante de 8500+ xml loc para uma compilação maven com vários módulos foi um deles. tivemos então:</p> <ul> <li>módulos claros (ou pelo menos já era muito melhor e ainda temos grandes planos para o futuro),</li> <li>gerenciamento automático de dependências (para manutenção e atualizações fáceis e remoção de depósitos inúteis),</li> <li>construções mais rápidas, fáceis e reproduzíveis,</li> <li>relatórios diários de qualidade.</li> </ul> <p>outra foi a injeção de "cintos de ferramentas utilitárias", embora tentássemos reduzir as dependências: o google guava e o apache commons diminuem o seu código e reduzem a superfície para erros no <strong> seu </strong> código muito.</p> <p>também convencemos nosso departamento de ti de que talvez o uso de nossas novas ferramentas (jira, fisheye, crisol, confluence, jenkins) fosse melhor do que as existentes. ainda precisamos lidar com alguns que desprezamos (qc, sharepoint e supportworks ...), mas foi uma experiência geral aprimorada, com um pouco mais de espaço.</p> <p>e todos os dias, agora há uma quantidade entre uma e dezenas de confirmações que lidam apenas com a correção e refatoração de coisas. ocasionalmente, quebramos coisas (você precisa de testes de unidade e é melhor escrevê-las <strong> antes de </strong> refatorar as coisas), mas no geral o benefício para o nosso moral e para o produto tem sido enorme. chegamos lá uma fração de uma porcentagem de qualidade de código por vez. <strong> e é divertido vê-lo aumentar !!! </strong></p> </blockquote><p><em> <strong> nota: </strong> novamente, a rigidez precisa ser abalada para abrir espaço para coisas novas e melhores. na minha anedota, nosso departamento de ti está parcialmente certo ao tentar impor <strong> algumas </strong> coisas sobre nós e errado para outras. ou talvez eles <strong> estivessem certos </strong>. as coisas mudam. prove que são as melhores maneiras de aumentar sua produtividade. <strong> execuções de avaliação e protótipos </strong> estão aqui para isso. </em></p><hr><h1>o ciclo de refatoração de código de espaguete incremental super secreto para uma qualidade incrível</h1><pre><code> ++ ++ | a n a l y z e +&gt;| i d e n t i f y | ++ +++ ^ | | v +++ ++ | c l e a n +&lt;| f i x | ++ ++ </code></pre><p>depois de ter algumas ferramentas de qualidade no seu cinto de ferramentas:</p><ol> <li> <p><strong> analise </strong> seu código com verificadores de qualidade de código.</p> <p>linters, analisadores estáticos ou o que você tem.</p> </li> <li> <p><strong> identifique </strong> seus <strong> pontos críticos </strong> hotspots and <strong> frutas penduradas baixas </strong>.</p> <p>as violações têm níveis de severidade, e grandes classes com um grande número de severidades são uma grande bandeira vermelha: assim, elas aparecem como "pontos de acesso" nos tipos de visualizações do radiador/mapa de calor.</p> </li> <li> <p><strong> corrija </strong> os pontos de acesso primeiro.</p> <p>maximiza seu impacto em um curto espaço de tempo, pois eles têm o maior valor comercial. idealmente, as violações críticas devem ser tratadas assim que aparecerem, pois são possíveis vulnerabilidades de segurança ou causas de travamento e apresentam um alto risco de induzir uma responsabilidade (e, no seu caso, mau desempenho para o laboratório).</p> </li> <li> <p><strong> limpe </strong> as violações de baixo nível com <strong> varreduras automatizadas de base de código </strong>.</p> <p>ele melhora a <strong> relação sinal-ruído </strong> para que você possa ver violações significativas no seu radar à medida que aparecem. geralmente, há um grande exército de pequenas violações no início, se elas nunca foram resolvidas e sua base de código foi deixada solta na natureza. eles não apresentam um "risco" real, mas prejudicam a legibilidade e a manutenção do código. corrija-os conforme você os encontra durante o trabalho em uma tarefa ou em grandes tarefas de limpeza com varreduras de código automatizadas, se possível. tenha cuidado com grandes varreduras automáticas, se você não tiver um bom conjunto de testes e sistema de integração. certifique-se de concordar com os colegas de trabalho o momento certo para executá-los para minimizar o aborrecimento.</p> </li> <li> <p><strong> repita </strong> até ficar satisfeito.</p> <p>o que, idealmente, você nunca deveria ser, se este ainda for um produto ativo: continuará evoluindo.</p> </li> </ol><h3>dicas rápidas para uma boa manutenção da casa</h3><ul> <li> <p><strong> quando no modo de hotfix </strong>, com base em uma solicitação de suporte ao cliente:</p> <ul> <li>geralmente, é uma prática recomendada <strong> [~ # ~] não [~ # ~] </strong> resolver outros problemas, pois você pode apresentar novos sem querer.</li> <li>vá até lá <strong> no estilo seal: entre, mate o bug, saia </strong> e envie seu patch. é uma greve cirúrgica e tática.</li> </ul> </li> <li> <p><strong> mas, para todos os outros casos </strong>, se você abrir um arquivo, tenha o dever de:</p> <ul> <li><em> definitivamente: </em> <strong> analise </strong> (faça anotações, envie relatórios de problemas),</li> <li><em> talvez: </em> <strong> limpe </strong> (limpeza de estilo e pequenas violações),</li> <li><em> idealmente: </em> <strong> refatorar </strong> (reorganizar grandes seções e seus vizinhos).</li> </ul> </li> </ul><p>apenas não se desvie para passar uma semana de um arquivo para outro e acabar com um maciço conjunto de milhares de correções, abrangendo vários recursos e módulos - isso dificulta o rastreamento futuro. um problema no código = um ticket no seu rastreador. às vezes, um conjunto de alterações pode afetar vários tickets; mas se isso acontecer com muita frequência, provavelmente você está fazendo algo errado.</p><hr><h1>adendo: gerenciando ambientes de programação visual</h1><h2>os jardins murados dos sistemas de programação sob medida</h2><p>vários sistemas de programação, como o g2 do op, são bestas diferentes ...</p><ul> <li> <p><strong> "código" sem fonte </strong></p> <p>freqüentemente, eles não dão acesso a uma representação textual do seu "código" fonte: ele pode ser armazenado em um formato binário proprietário ou talvez ele armazene coisas no formato de texto, mas as oculta. sistemas de programação gráfica sob medida não são incomuns em laboratórios de pesquisa, pois simplificam a automação de fluxos de trabalho repetitivos de processamento de dados.</p> </li> <li> <p><strong> sem ferramentas </strong></p> <p>além de seus próprios, é isso. você geralmente é limitado pelo ambiente de programação, pelo depurador, pelo intérprete, pelas ferramentas e formatos de documentação. eles são <strong> jardins murados </strong>, exceto se eventualmente capturarem o interesse de alguém motivado o suficiente para fazer engenharia reversa de seus formatos e criar ferramentas externas - se a licença permitir.</p> </li> <li> <p><strong> falta de documentação </strong></p> <p>muitas vezes, esses são sistemas de programação de nicho, usados ​​em ambientes bastante fechados. as pessoas que os usam frequentemente assinam ndas e nunca falam sobre o que fazem. as comunidades de programação para eles são raras. portanto, os recursos são escassos. você está preso à sua referência oficial, e é isso.</p> </li> </ul><p>a parte irônica (e muitas vezes frustrante) é que todas as coisas que esses sistemas fazem poderiam obviamente ser alcançadas usando linguagens de programação de uso geral e geral, e provavelmente muito mais eficientemente. mas isso requer um conhecimento mais profundo da programação, enquanto você não pode esperar que seu biólogo, químico ou físico (para citar alguns) saiba o suficiente sobre programação e muito menos tenha tempo (e desejo) para implementar (e manter) sistemas complexos, que podem ou não durar muito. pela mesma razão que usamos dsls, temos esses sistemas de programação sob medida.</p><blockquote> <p><strong> anedota pessoal 2: </strong> na verdade, eu mesmo trabalhei em uma delas. eu não fiz o link com a solicitação do op, mas o meu projeto era um conjunto de grandes partes interconectadas de software de processamento e armazenamento de dados (principalmente para pesquisa em bioinformática, saúde e cosméticos, mas também para negócios inteligência ou qualquer domínio que implique no rastreamento de grandes volumes de dados de pesquisa de qualquer tipo e na preparação de fluxos de trabalho de processamento de dados e etls). um desses aplicativos era, simplesmente, um visual ide que usava os sinos e os assobios usuais: interfaces de arrastar e soltar, espaços de trabalho de projeto com versão (usando arquivos de texto e xml para armazenamento de metadados)); drivers conectáveis ​​a fontes de dados heterogêneas e uma tela visual para projetar pipelines para processar dados de fontes de dados n e, no final, gerar saídas m transformadas e possíveis visualizações brilhantes e relatórios on-line complexos (e interativos). um pouco da síndrome do nih sob o pretexto de projetar um sistema adaptado às necessidades dos usuários.</p> <p>e, como você esperaria, é um sistema agradável, bastante flexível para suas necessidades, embora às vezes um pouco exagerado, para que você se pergunte "por que não usar ferramentas de linha de comando?" e, infelizmente, sempre liderando empresas de médio porte equipes trabalhando em grandes projetos para muitas pessoas diferentes, usando-o com diferentes "melhores" práticas.</p> </blockquote><h2>ótimo, estamos condenados! - o que fazemos sobre isso?</h2><p>bem, no final, todas as opções acima ainda são válidas. se você não conseguir extrair a maior parte da programação deste sistema para usar mais ferramentas e linguagens convencionais, "apenas" precisará adaptá-lo às restrições do seu sistema.</p><h3>sobre controle de versão e armazenamento</h3><p>no final, você quase sempre pode <strong> versão </strong> coisas, mesmo com o ambiente mais restrito e murado. na maioria das vezes, esses sistemas ainda vêm com suas próprias versões (o que, infelizmente, é bastante básico, e oferece apenas reverter para versões anteriores sem muita visibilidade, mantendo apenas os instantâneos anteriores). não é exatamente o uso de conjuntos de alterações diferenciais como o seu scm de escolha, e provavelmente não é adequado para vários usuários que enviam alterações simultaneamente.</p><p>mas, ainda assim, se eles fornecem essa funcionalidade, talvez a sua solução seja seguir nossas amadas diretrizes padrão do setor acima e transpor essas para este sistema de programação !!</p><p>se o sistema de armazenamento for um banco de dados, provavelmente expõe as funcionalidades de exportação ou pode ser feito backup no nível do sistema de arquivos. se estiver usando um formato binário personalizado, talvez você possa simplesmente tentar fazer a versão com um vcs que tenha um bom suporte para dados binários. você não terá controle refinado, mas pelo menos terá as costas protegidas contra catástrofes e terá um certo grau de conformidade com a recuperação de desastres.</p><h3>sobre o teste</h3><p>implemente seus testes na própria plataforma e use ferramentas externas e tarefas em segundo plano para configurar backups regulares. provavelmente, você inicia esses testes da mesma maneira que iniciaria os programas desenvolvidos com esse sistema de programação.</p><p>claro, é um trabalho de hacker e definitivamente não está de acordo com o que é comum na programação "normal", mas a idéia é se adaptar ao sistema enquanto tenta manter uma aparência de processo profissional de desenvolvimento de software.</p><h3>a estrada é longa e íngreme ...</h3><p>como sempre em ambientes de nicho e sistemas de programação sob medida, e conforme exposto acima, você lida com formatos estranhos, apenas um conjunto limitado (ou totalmente inexistente) de ferramentas possivelmente desajeitadas e um vazio no lugar de uma comunidade.</p><p><strong> a recomendação: </strong> tente implementar as diretrizes acima fora do seu sistema de programação sob medida, o máximo possível. isso garante que você possa confiar em ferramentas "comuns", que possuem suporte adequado e motivação da comunidade.</p><p><strong> a solução alternativa: </strong> quando isso não for uma opção, tente adaptar essa estrutura global à sua "caixa". a idéia é sobrepor esse modelo de boas práticas padrão do setor sobre o sistema de programação e tirar o melhor proveito dele. o conselho ainda se aplica: defina a estrutura e as melhores práticas, incentive a conformidade.</p><p>infelizmente, isso implica que você pode precisar mergulhar e fazer uma tremenda quantidade de trabalho nas pernas. assim...</p><p><strong> últimas palavras famosas e pedidos humildes: </strong></p><ul> <li><strong> documente </strong> tudo o que você faz.</li> <li><strong> compartilhe </strong> sua experiência.</li> <li><strong> código aberto </strong> qualquer ferramenta que você escrever.</li> </ul><p>ao fazer tudo isso, você irá:</p><ul> <li>não apenas aumenta suas chances de obter apoio de pessoas em situações semelhantes,</li> <li>mas também forneça ajuda a outras pessoas e promova discussões em torno de sua pilha de tecnologia.</li> </ul><p>quem sabe, você poderia estar no início de uma nova comunidade vibrante de <em> linguagem obscura x </em>. se não houver, inicie um!</p><ul> <li>faça perguntas sobre <a href="https://stackoverflow.com/">estouro da pilha</a> ,</li> <li>talvez até escreva uma proposta para um novo site stackexchange no <a href="http://area51.stackexchange.com/">área 51</a> .</li> </ul><p><strong> talvez seja bonito por dentro </strong>, mas <strong> ninguém tem idéia </strong> até agora, tão ajuda <strong> derrube esta parede feia </strong> e <strong> deixe que outras pessoas dêem uma espiada! </strong></p> visando responder a esse questionamento empregaremos nossos conhecimentos adquiridos acerca da disciplina de administração financeira.até o período que antecede a primeira revolução industrial, ou seja, inovações e surgimentos de tecnologias, o método de produção era manufaturado e caseiro. entretanto, no fim do século xvii, a inglaterra urge como uma potência “tecnológica”, tendo em vista que ela promoveu diversos avanços para a época, como a máquina à vapor, entre outras coisas. como resultante, houve o êxodo rural, indivíduos mudavam do campo para as cidades em busca de emprego e uma vida melhor. com o surgimento das grandes fábricas e os sistemas de produção, essas pessoas trabalhadoras não possuíam direitos e apenas os “patrões” faturavam, as custa dos empregados. para tanto, desde a 1ª revolução industrial, houveram altos e baixos na economia mundial. o brasil passou pela industrialização tardiamente, ocasionando reveses e benefícios para a população. no governo de collor a administração passou a ser terceirizada e privada. no que tange aos tipos de contratos e seus prazos, determinado e indeterminado, constitui-se que o contrato com prazo indeterminado não há datas de “vencimento”, segundo a lei. para que haja rescisão contratual, é necessário ter em mãos o salário bruto, data da contratação e demissão, relevando o motivo, aviso prévio, números de dependentes, férias vencidas e o saldo do fgts.sendo assim, os valores das parcelas serão:﻿\[\eqalign{ & vp = parc\left[ {{{1 - {{(1 + i)}^{ - n}}} \over i}} \right] \cr & 3000 = parc\left[ {{{1 - {{(1 + 0,03)}^{ - 23}}} \over {0,03}}} \right] \cr & 3000 = parc\left[ {{{1 - 0,506} \over {0,03}}} \right] \cr & 3000 = parc\left[ {{{0,494} \over {0,03}}} \right] \cr & parc = {{3000} \over {16,5}} \cr & parc = 181,89 }\]multiplicando o valor encontrado por 23, teremos:﻿\[181,89 \times 23 = r\$ 4.183,47\] Acho que nem é a frieza desse século. É esse mercado de trabalho que suga a gente demais para pagar 2,3 ou 4 pila para a gente manter o barraco. Um relacionamento exige investimento de tempo, você tem que ver o lado do outro e se doar e todo mundo só está querendo exigir do outro na mesma medida em que somos exigidos. Aí, as brigas e divórcios surgem. O RR Soares diz que a gente, como filho de Deus, tem que exigir dEle as bençãos... Nem o Todo Poderoso tem paz. Kkkkkk Olá, Márcia!  

  

O ideal é ter o **discador** e um **sistema de cobrança** integrados.  

  

Aqui no fórum não é o melhor lugar para divulgar serviços e produtos, por isso, eu criei outro site no formato de um **Guia de Serviços** para o mercado de crédito e cobrança.  

  

Neste link você vai encontrar algumas empresas que oferecem o discador:  

  

<http://portaldocallcenter.com.br/category/discador>  

  

Neste novo site você também pode indicar outras empresas que você conheça.  

  

Grande abraço!  

  

**Dr. Denis Siqueira**  

Conheça também os meus cursos online:  

[![https://www.creditoecobranca.com/images/banners/curso-avancado-de-cobranca-120.png](https://www.creditoecobranca.com/images/banners/curso-avancado-de-cobranca-120.png)](https://www.creditoecobranca.com/cursos/curso-de-cobranca-e-recuperacao-de-creditos)  [![https://www.creditoecobranca.com/images/banners/curso-formacao-de-analistas-de-credito-120.png](https://www.creditoecobranca.com/images/banners/curso-formacao-de-analistas-de-credito-120.png)](https://www.creditoecobranca.com/cursos/curso-de-formacao-de-analistas-de-credito) <p>atualização de janeiro de 2013: a <strong> <a href="https://github.com/blog/1381-a-whole-new-code-search">nova pesquisa chegou!</a> </strong>, com base em <strong> - <a href="http://www.elasticsearch.org/community/">elasticsearch.org</a> </strong>:</p><p>uma busca por stat dentro do ruby repo será expressa como <strong> <a href="https://github.com/search?q=stat%20repo:ruby/ruby&amp;type=code&amp;ref=advsearch&amp;l="><code>stat repo:ruby/ruby</code></a> </strong>, e agora irá funcionar<sup><sup>tm</sup></sup>.<br> (o nome do repositório não faz distinção entre maiúsculas e minúsculas: <a href="https://github.com/search?q=repo:wordpress/wordpress%20test&amp;type=code&amp;ref=searchresults"><code>test repo:wordpress/wordpress</code></a> retorna o mesmo que <a href="https://github.com/search?q=repo:wordpress/wordpress%20test&amp;type=code&amp;ref=searchresults"><code>test repo:wordpress/wordpress</code></a> )</p><p><img src="https://i.stack.imgur.com/okler.png" alt="enter image description here"></p><p>darei:</p><p><img src="https://i.stack.imgur.com/mjptm.png" alt="enter image description here"></p><p>e você tem muitos outros exemplos de pesquisa, baseados <a href="https://stackoverflow.com/a/5740886/6309">em seguidores</a> , ou <a href="https://stackoverflow.com/a/12241932/6309">em garfos</a> , ou ...</p><hr><p><strong> atualização de julho de 2012 </strong> (antigos dias de pesquisa lucene e indexação de código pobre, combinados com gui quebrada, mantidos aqui para arquivamento):</p><p>a pesquisa (com base em <a href="http://wiki.apache.org/solr/solrquerysyntax">solrquerysyntax</a> ) é agora mais permissiva e o temido "<code>invalid search query. try quoting it.</code>" desapareceu ao usar o <em>default</em> ​​seletor de pesquisa "everything" :)</p><p>(eu suponho que todos nós podemos <strong> <a href="https://twitter.com/pea53">tim pease</a> </strong>, que tinha em um de seus objetivos <a href="https://github.com/blog/1116-tim-pease-is-a-githubber">"hacking em melhorada experiências de busca para todas as propriedades do github</a> ", e <a href="https://twitter.com/vonc\_/status/197565733830541313">eu mencionei essa questão do stack overflow</a> na época;))</p><p>aqui está uma ilustração de um grep dentro do código ruby: ele procura por repositórios e usuários, mas <em>também</em> para o que eu queria pesquisar em primeiro lugar: o código!</p><p><img src="https://i.stack.imgur.com/hhkvy.png" alt="github more permissive search results"></p><hr><p>resposta inicial e ilustração da primeira edição (setembro de 2012 =&gt; março de 2012)</p><p>você pode usar o <a href="http://github.com/search">formulário de pesquisa avançada do github</a> :</p><ul> <li>escolha <code>code</code>, <code>repositories</code> ou <code>users</code> no drop-down e</li> <li>use os prefixos correspondentes <strong> listados para esse tipo de pesquisa </strong>.</li> </ul><p>por exemplo, use a diretiva <strong><code>repo:username/repo-name</code></strong> para limitar a pesquisa a um <strong> código </strong> repositório.<br> a página inicial "<code>advanced search</code>" inclui a seção:</p><blockquote> <p><strong> <em>code</em> </strong> pesquisar:</p> <p>a pesquisa do código examinará todo o código hospedado publicamente no github. você também pode filtrar por:</p> <ul> <li>o idioma <strong><code>language:</code></strong></li> <li>o nome do repositório (incluindo o nome de usuário) <strong><code>repo:</code></strong></li> <li>o caminho do arquivo <strong><code>path:</code></strong></li> </ul> </blockquote><p>portanto, se você selecionar o seletor de pesquisa "<code>code</code>", sua consulta para um texto dentro de um repositório funcionará:</p><p><img src="https://i.stack.imgur.com/a58wf.png" alt="good search selector"></p><hr><p>o que é <em>incrivelmente</em> <strong> inútil </strong> do github é que:</p><ul> <li>se você esquecer de colocar o seletor de busca correto (aqui "<code>code</code>"), você receberá uma mensagem de erro:<br> "<strong><code>invalid search query. try quoting it.</code></strong>"</li> </ul><p><img src="https://i.stack.imgur.com/fjtq8.png" alt="wrong selector for the code filer"></p><ul> <li> <p>a mensagem de erro não ajuda em nada.<br> nenhuma quantidade de "<code>quoting it</code>" tirará você deste erro.</p> </li> <li> <p>depois de receber essa mensagem de erro, você não verá as seções lembrando a associação correta entre a pesquisa <em>seletores</em> ("<code>repositories</code>", "<code>users</code>" ou "<code>language</code>") e a pesquisa (à direita) <em>filtros</em> (aqui "<code>repo:</code>").<br> qualquer outra tentativa que você fizer não exibirá essas associações (seletores-filtros) de volta. apenas a mensagem de erro que você vê acima ...<br> a única maneira de recuperar esses arrays é clicando no ícone "<code>advance search</code>":</p> </li> </ul><p><img src="https://i.stack.imgur.com/fpefn.png" alt="advance search icon on github"></p><ul> <li> <p>o seletor de pesquisa "<code>everything</code>", que é o padrão, é na verdade o <em>errado</em> um para <em>todos</em> dos filtros de pesquisa! exceto "<code>language:</code>" ...<br> (você poderia imaginar/assumir que "<code>everything</code>" ajudaria você a escolher qualquer que seja o seletor de pesquisa que realmente funcione com o filtro de pesquisa "<code>repo:</code>", mas não. isso seria fácil demais)</p> </li> <li> <p>você não pode especificar o seletor de pesquisa desejado por meio do campo "<code>advance search</code>" sozinho!<br> (mas você pode para "<code>language:</code>", mesmo que "<code>search language</code>" seja outra caixa de combinação logo abaixo do "<code>search for</code>" 'digite' uma ...)</p> </li> </ul><p><img src="https://i.stack.imgur.com/6awa6.png" alt="wrong search selector"></p><hr><p>então, a experiência do usuário geralmente é a seguinte:</p><ul> <li>você clica em "<code>advanced search</code>", observa essas seções de filtros e percebe uma que deseja usar: "<code>repo:</code>"</li> <li>você faz uma primeira pesquisa avançada "<code>repo:jruby/jruby stat</code>", mas com o seletor de pesquisa padrão "<code>everything</code>"<br> =&gt; <code>fail</code>! (e os arrays que exibem a associação "seletores-filtros" são <strong> desaparecidos </strong>)</li> <li>você percebe que "search for" selector thingy, selecione o <em>first</em> ​​choice "<code>repositories</code>" ("dah! eu quero pesquisar dentro de repositórios ...")<br> =&gt; <code>fail</code>!</li> <li>desanimado, você seleciona a próxima opção de seletores (aqui, "<code>users</code>"), sem sequer olhar para o dito seletor, só para dar mais uma chance ...<br> =&gt; <code>fail</code>!</li> <li>"dane-se, a busca no github é <strong> quebrada </strong>! eu estou fora daqui!"<br> ...<br> <sup>(a pesquisa avançada do github não está realmente quebrada. apenas sua gui é ...)</sup></li> </ul><hr><p>então, para recapitular, se você quiser "grep para algo dentro de um código do projeto do github", como o op <a href="https://stackoverflow.com/users/392350/ben-humphreys">ben humphreys</a> , não se esqueça de selecionar o seletor de pesquisa "<code>code</code>" ...</p> é adotar ações que envolvam pensar no consumo consciente. isso vale tanto para empresas quanto para pessoas e envolve atividades como utilizar menos papel, separar o lixo para reciclagem, economizar água e energia elétrica, reduzir o uso de veículos etc.