<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://www.kankei.com.br/blog/blog-kankei/RSS">
  <title>Blog Kankei</title>
  <link>http://www.kankei.com.br</link>

  <description>
    
      
    
  </description>

  

  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2011-07-27T16:19:39Z</syn:updateBase>
        

  <image rdf:resource="http://www.kankei.com.br/logo.png"/>

  <items>
    <rdf:Seq>
      
        <rdf:li rdf:resource="http://www.kankei.com.br/blog/categories/tech/como-alterar-a-configuracao-da-autenticacao-do-msde"/>
      
      
        <rdf:li rdf:resource="http://www.kankei.com.br/blog/categories/tech/resolucoes-de-ano-novo-para-a-equipe-de-desenvolvimento-da-kankei"/>
      
      
        <rdf:li rdf:resource="http://www.kankei.com.br/blog/categories/tech/permitindo-download-de-arquivo-texto-de-uma-pagina-aspx"/>
      
      
        <rdf:li rdf:resource="http://www.kankei.com.br/blog/categories/tech/configurando-o-sql-server-express-para-ser-acessado-via-rede"/>
      
      
        <rdf:li rdf:resource="http://www.kankei.com.br/blog/categories/tech/conversao-de-cvs-para-svn"/>
      
    </rdf:Seq>
  </items>

</channel>


  <item rdf:about="http://www.kankei.com.br/blog/categories/tech/como-alterar-a-configuracao-da-autenticacao-do-msde">
    <title>Como alterar a configuração da autenticação do MSDE</title>
    <link>http://www.kankei.com.br/blog/categories/tech/como-alterar-a-configuracao-da-autenticacao-do-msde</link>
    <description>Se ao tentar criar uma nova área de trabalho no Kankei, aparecer uma mensagem dizendo que não há uma conexão segura para o usuário SA (especificação de autorização inválida), pode ser preciso alterar a forma de autenticação do SQL Server (ou MSDE).</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="entryBody">
<div class="plain">
<p>1. Abra o Editor do Registro do Windows ( Iniciar / Executar - Digite  
REGEDIT &lt;ENTER&gt;)</p>
<p>&nbsp;</p>
<p>2. Localize esta chave:</p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\ MSSqlServer</p>
<p>OU</p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL 
Server\KANKEIDBM\MSSQLServer\</p>
<p>OU</p>
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL 
Server\&lt;Outro Nome de Instância do SQL Server&gt;\MSSQLServer\<br /><br /><br />3. 
Clique nesta chave e verifique se existe o valor <strong>LOGINMODE </strong>para ela. Esta 
configuração aceita um dos seguintes valores:<br /><br />
<p>1 (Windows Authentication)</p>
<p>2 (Mixed Mode Authentication)  &lt;= O Kankei suporta apenas este tipo de 
autenticação.</p>
<p>Se o LOGINMODE existir, assegure-se que seu valor seja <strong>2</strong>. Se não 
existir, crie um novo valor do tipo DWORD e digite o valor <strong>2</strong> para 
ele.</p>
<p>&nbsp;</p>
<p><strong>Observação importante</strong>.: Ao usar o MSDE instalado pelo setup do Kankei 
ou em outra situação onde esteja sendo usada uma instância não padrão do SQL 
Server, pode ser necessário configurar a área de trabalho do Kankei com o nome 
EXATO da instância, considerando case sensitive (o sistema diferencia maiúsculas 
de minúsculas). O nome da instância do SQL Server pode ser encontrado olhando as 
chaves do registro descritas acima.</p>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Ricardo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-29T12:35:15Z</dc:date>
    <dc:type>Blog Entry</dc:type>
  </item>


  <item rdf:about="http://www.kankei.com.br/blog/categories/tech/resolucoes-de-ano-novo-para-a-equipe-de-desenvolvimento-da-kankei">
    <title>Resoluções de Ano Novo para a equipe de desenvolvimento da Kankei</title>
    <link>http://www.kankei.com.br/blog/categories/tech/resolucoes-de-ano-novo-para-a-equipe-de-desenvolvimento-da-kankei</link>
    <description>Isto já estava no nosso quadro de avisos desde a última semana de 2007, resolvi imortalizar aqui antes que o quadro seja apagado. :-)</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="entryBody">
<div class="plain">
<p>1. Testarei todo e qualquer código que eu escrever</p>
<p>2. Passarei a tratar arquivos ASPX como código fonte, deixando-o legível e 
corretamente identado</p>
<p>3. Após copiar/colar, removerei tudo o que não for necessário do código 
colado</p>
<p>4. Não deixarei código comentado sem uma boa razão para isso, e não 
esquecerei de especificar esta razão com comentários</p>
<p>5. Tratarei cada rotina que eu escrever como se fosse um programa completo, 
dividindo em outras rotinas sempre que ficar extensa demais</p>
<p>6. Respirarei fundo e trocarei idéias com a equipe antes de fazer qualquer 
mudança em código fonte existente</p>
<p>7. Pedirei a opinião de outras pessoas sobre o meu código</p>
<p>8. Não utilizarei variáveis tipo string para determinar status de objeto</p>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Ricardo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-29T12:34:25Z</dc:date>
    <dc:type>Blog Entry</dc:type>
  </item>


  <item rdf:about="http://www.kankei.com.br/blog/categories/tech/permitindo-download-de-arquivo-texto-de-uma-pagina-aspx">
    <title>Permitindo download de arquivo texto de uma página ASPX</title>
    <link>http://www.kankei.com.br/blog/categories/tech/permitindo-download-de-arquivo-texto-de-uma-pagina-aspx</link>
    <description>Segue um pequeno exemplo de código Visual Basic .NET que pode ser usado para fornecer ao usuário a possibilidade de fazer o download de um arquivo texto gerado dinamicamente.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="entryBody">
<div class="plain">
<pre>    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click        
        Dim texto As String
        texto = "Este texto será o conteúdo do arquivo que o usuário vai receber via download"

        Response.BufferOutput = False
        Response.Expires = -1 ' Para o browser não fazer cache do arquivo
        Response.Clear()
        Response.AppendHeader("content-length", Len(texto))
        Response.AppendHeader("Content-Disposition", "attachment; filename=""NOMEDOARQUIVO.txt""")
        Response.ContentType = "application/txt"
        With New IO.StreamWriter(Response.OutputStream, GetANSIEncoding())
            .Write(texto)
            .Flush()
        End With
        Response.End()
    End Sub

    ''' &lt;summary&gt;
    ''' Retorna o enconding ISO 8859-1
    ''' &lt;/summary&gt;
    Public Shared Function GetANSIEncoding() As System.Text.Encoding
        Const cEncoding_ISO_8859_1 As Integer = 28591
        Return System.Text.Encoding.GetEncoding(cEncoding_ISO_8859_1)
    End Function</pre>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Ricardo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-29T12:33:46Z</dc:date>
    <dc:type>Blog Entry</dc:type>
  </item>


  <item rdf:about="http://www.kankei.com.br/blog/categories/tech/configurando-o-sql-server-express-para-ser-acessado-via-rede">
    <title>Configurando o SQL Server Express para ser acessado via rede</title>
    <link>http://www.kankei.com.br/blog/categories/tech/configurando-o-sql-server-express-para-ser-acessado-via-rede</link>
    <description>As opções de instalação padrão do Microsoft SQL Server Express não permitem que a instância instalada seja acessada por outra máquina da rede. Para isso, é necessário realizar algumas manobras:</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="entryBody">
<div class="plain">
<p><span class="Apple-style-span">a) Ativar o acesso remoto</span></p>
<p>(fonte: <span class="link-external"><a href="http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=400">http://www.mcdbabrasil.com.br/modules.php?name=News&amp;file=article&amp;sid=400</a></span>)</p>
<p><strong>1. </strong>Inicie o SQL Server Surface Area através do menu 
<strong>Iniciar ==&gt; Programas ==&gt; Microsoft SQL Server 2005 ==&gt; 
Configuration Tools ==&gt; SQL Server Surface Area Configuration,</strong> 
<br /><strong>2. </strong>Após iniciar o Surface Area, selecione a opção 
<strong>Surface Area Configuration for Services and 
Connections,</strong><br /><strong>3.</strong> Selecione o nó 
<strong>SQLEXPRESS,<br />4. </strong>Em <strong>Database Engine</strong> clique 
sobre <strong>Remote Connections,<br />5. </strong>Selecione a opção <strong>Local 
and remote connections,</strong> <br /><strong>6. </strong>Certifique-se de 
também deixar selecionada a opção <strong>Using TCP/IP only</strong>. Esta opção 
permitirá que o SQL Express passe a aceitar conexões 
TCP/IP.<br /><strong>7.</strong> Depois de ativar a comunicação TCP/IP, selecione 
o nó <strong>SQL Server Browser,<br />8.</strong> Em <strong>Service</strong> 
clique em <strong><em>Start (iniciar)</em></strong> para iniciar o serviço. Este 
serviço é necessário para que as estações possam se conectar com sucesso ao SQL 
Express caso ele não esteja usando a porta default 1433.</p>
<h3>b) Adicionar exceções ao Firewall do Windows XP</h3>
<p>No firewall do Windows XP (onde o SQL Express está instalado), adicione as 
seguintes exceções:</p>
<p>- Porta UDP 1434</p>
<p>- C:\Arquivos de Programas\Microsoft SQL Server\90\Shared\sqlbrowser.exe</p>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Ricardo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-29T12:32:55Z</dc:date>
    <dc:type>Blog Entry</dc:type>
  </item>


  <item rdf:about="http://www.kankei.com.br/blog/categories/tech/conversao-de-cvs-para-svn">
    <title>Conversão de CVS para SVN</title>
    <link>http://www.kankei.com.br/blog/categories/tech/conversao-de-cvs-para-svn</link>
    <description>A conversão do nosso repositório CVS...</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<div class="entryBody">
<div class="plain">
<p>A conversão do nosso repositório CVS para o Subversion (SVN) foi realizada 
utilizando a macro Pyton <span class="link-external"><a href="http://cvs2svn.tigris.org/cvs2svn.html">cvs2svn</a></span>.</p>
<p>Para isso, seguimos os seguintes passos:</p>
<p>- Efetuar o download e instalar o Subversion (em <span class="link-external"><a href="http://svn1clicksetup.tigris.org/">http://svn1clicksetup.tigris.org</a></span> 
pode ser efetuado um único download que instala a interface de linha de comando, 
a interface gráfica e cria o repositório, tudo em um único setup).</p>
<p>- Assegurar que o Python estivesse instalado no servidor, no nosso caso, ele 
tinha sido instalado junto com o software Plone</p>
<p>- Descompactar o cvs2svn para a pasta C:\cvs2svn</p>
<p>- Obter o utilitário sort.exe, requerido pela macro (tivemos que fazer o 
download do arquivo UnxUtils.zip de <span class="link-external"><a href="http://unxutils.sourceforge.net/">http://unxutils.sourceforge.net/</a></span> 
e extrair dele o arquivo sort.exe, e gravando-o na pasta C:\cvs2svn)</p>
<p>- Incluir o Python e o CVSNT no path, o que no nosso caso foi feito com esta 
linha de comando:</p>
<pre>PATH=%PATH%;C:\Arquivos de Programas\CVSNT;C:\Arquivos de Programas\Plone 2\Python</pre>
<p>Com isto, o prompt de comando estava pronto para executar o cvs2svn. Comecei 
executando este comando dentro da pasta "C:\cvs2svn":</p>
<pre>python cvs2svn -s C:\BaseSVN --dry-run --use-cvs C:\BaseCVS</pre>
<p>Obs.: O parâmetro --dry-run faz com que o cvs2svn apenas simule a conversão, 
sem gravar nada no repositório de destino.</p>
<p>O cvs2svn não conseguiu reconhecer algumas dlls que estavam na base do CVS 
(arquivos "ChilkatFTP.dll,v" e "ChilkatMail2.dll,v"). A execução abortava quando 
chegava em um destes arquivos. Precisei remover ambos e reexecutar o comando 
para prosseguir.</p>
<p>Na seqüência o cvs2svn emitiu uma mensagem dizendo que não conseguiu 
identificar "V5R4Beta14" como uma tag ou um branch. Como nosso repositório CVS 
não possui branches, decidi incluir a opção "--force-tag V5R4Beta14" na linha de 
comando:</p>
<pre>python cvs2svn -s C:\BaseSVN --dry-run --use-cvs C:\BaseCVS --force-tag V5R4Beta14</pre>
<p>Com isto, a macro rodou até o final, mas emitiu inúmeras mensagens de warning 
por causa de caracteres especiais (acentos, etc) encontrados em nomes de 
arquivo, comentários e nomes de tags.</p>
<p>Incluí na linha de comando a opção de encoding mais adequada para o idioma 
português (latin_1). O comando ficou assim (tudo na mesma linha):</p>
<pre>python cvs2svn -s C:\BaseSVN --dry-run --use-cvs C:\BaseCVS 
--force-tag V5R4Beta14 --encoding latin_1</pre>
<p>Com isto a macro rodou até o fim sem problemas. Resolvi então reexecutar o 
comando sem a opção --dry-run para que ele realmente fizesse a 
conversão.</p>
<pre>python cvs2svn -s C:\BaseSVN --use-cvs C:\BaseCVS 
--force-tag V5R4Beta14 --encoding latin_1</pre>
<p>Imediatamente recebi uma mensagem de erro porque o meu repositório SVN já 
existia na pasta C:\BaseSVN. Precisei incluir a opção --existing-svnrepos:</p>
<pre>python cvs2svn -s C:\BaseSVN --use-cvs C:\BaseCVS 
--force-tag V5R4Beta14 --encoding latin_1 --existing-svnrepos</pre>
<p>Com isto, a conversão finalmente se realizou sem nenhuma mensagem de erro. 
Com nosso servidor tendo alguns problemas de performance, nosso repositório CVS 
levou cerca de 16 horas para ser convertido.</p>
<p>Completada a conversão passamos para a etapa de disponibilizar o repositório 
para os usuários. Editamos os arquivos de configuração do repositório, alterando 
as opções de segurança para não permitir usuários não antenticados e criando 
usuários e senhas para todos os colaboradores.</p>
<p>- A seguir tivemos que liberar a porta 3690 (porta padrão do SVN) no firewall 
do servidor. Com isso, o repositório pôde ser acessado pela intranet. 
Infelizmente, não tínhamos como liberar esta porta para acesso externo, pois não 
tínhamos acesso a este firewall. A solução encontrada foi fazer com que o SVN 
utilizasse a mesma porta do CVS (2460), que já estava liberada para acesso 
externo.</p>
<p>Esta operação foi complicada, envolvendo manutenção no serviço do SVN no 
servidor. Tivemos que usar as seguintes linhas de comando:</p>
<p>1) Parar o serviço do SVN</p>
<pre>net stop SVNService</pre>
<p>2) Excluir o serviço do SVN</p>
<pre>sc delete SVNService</pre>
<p>3) Recriar o serviço SVN informando a nova porta</p>
<pre>"C:\Arquivos de Programas\Subversion\bin\svnservice.exe" -install --daemon 
--root C:\Kankei\BaseSVN --listen-port 2401</pre>
<p>4) Reiniciar o serviço:</p>
<pre>net start SVNService</pre>
<p>Com isto, o repositório passou a ser acessível externamente na porta 2401. No 
TortoiseSVN, pode ser usada esta URL:</p>
<p><img class="image-inline" src="imagens/svn/image_large" alt="svn" /></p>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Ricardo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-29T12:29:40Z</dc:date>
    <dc:type>Blog Entry</dc:type>
  </item>





</rdf:RDF>

