tag:blogger.com,1999:blog-77396091423896741912024-03-13T10:41:49.381-03:00David KwastBlog de nível técnico sobre novas tecnologias. E um pouco de modelagem em argila também.David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-7739609142389674191.post-67638655700648743152016-07-04T14:51:00.003-03:002016-07-06T14:20:36.272-03:00Norton (Internet) Security / Small Business - 22.7.0.76 causando BSODTudo indica que o último update do Norton Internet Security para a versão 22.7.0.76, liberado dia 28 de junho de 2016, está provocando BSOD em 20% dos computadores, independente da versão do Windows.<br />
<br />
<br />
Mais informações no fórum oficial:<br />
<a href="https://community.norton.com/en/forums/norton-causing-bsod#comments">https://community.norton.com/en/forums/norton-causing-bsod#comments</a><br />
<br />
E também no blog de segurança do Google:<br />
<a href="http://googleprojectzero.blogspot.com.br/2016/06/how-to-compromise-enterprise-endpoint.html">http://googleprojectzero.blogspot.com.br/2016/06/how-to-compromise-enterprise-endpoint.html</a><br />
<br />
UPDATE 1:<br />
O suporte da Norton no Brasil instruiu a utilizar a ferramenta de remoção disponível em <a href="http://www.symantec.com/nrt">http://www.symantec.com/nrt</a> e instalar novamente. Será instalada a versão 22.6.0.142 e via live update a versão 22.7.0.76 será instalada novamente, mas desta vez, aparentemente sem causar o problema.<br />
<br />
UPDATE2:<br />
Problema reconhecido na página do fórum: <a href="https://community.norton.com/en/forums/norton-227-hot-issues-and-fixes">https://community.norton.com/en/forums/norton-227-hot-issues-and-fixes</a>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-72128100014608143492015-07-13T12:57:00.000-03:002015-07-13T12:57:36.372-03:00Curso: Python Patterns - Luciano Ramalho<h3>
Informações adicionais</h3>
<h3>
<b>Data:</b> 18 e 19/07/15 (sáb e dom)</h3>
<h3>
<b>Horário:</b> 9h às 18h</h3>
<h3>
<b>Carga horária:</b> 16 horas</h3>
<h3>
<b>Valores do investimento:<b></b></b></h3>
<h3>
<b>Até 07/07:</b> R$ 400,00</h3>
<h3>
<b>Após 07/07:</b> R$ 450,00</h3>
<h3>
<b>Instrutor:</b> Luciano Ramalho</h3>
<br />
<span style="font-size: 18px;"><b>
Sobre o curso</b>
O objetivo desse curso é apresentar técnicas de programação orientada a
objetos e padrões de projeto otimizados para as características
dinâmicas da linguagem Python
<br />
<br />
<b>A quem se destina esse workshop?</b>
Desenvolvedores Python, iniciantes ou não, com conhecimentos básicos de programação orientada a objetos.
<br />
<br />
<b>Pré-requisitos</b>
<br />
<br />
Conhecimentos básicos em Python.<br />
<br />
<b>Importante:</b> O aluno deverá trazer seu próprio notebook e carregador.
<br />
<br />
<b>Conteúdo do workshop</b>
</span>
<br />
<ul>
<li><span style="font-size: 18px;">Objetos em Python: possibilidades e limitações</span></li>
<li><span style="font-size: 18px;">O Python Data Model: entendendo Python como um framework</span></li>
<li><span style="font-size: 18px;">Introdução aos padrões de projeto</span></li>
<li><span style="font-size: 18px;">O padrão "Façade" e um exemplo se sua aplicação em Django</span></li>
<li><span style="font-size: 18px;">Um padrão embutido em Python: Iterator</span></li>
<li><span style="font-size: 18px;">Borg, um padrão que substitui o clássico Singleton</span></li>
<li><span style="font-size: 18px;">Repensando os padrões de projeto clássicos no contexto de Python</span></li>
<li><span style="font-size: 18px;">Template method: auto-delegação em uma linguagem dinâmica</span></li>
<li><span style="font-size: 18px;">Refatorando padrões com funções de primeira classe: Strategy, Command etc.</span></li>
<li><span style="font-size: 18px;">Refatorando padrões com tipos de primeira classe: Abstract Factory, Factory Method etc.</span></li>
</ul>
<span style="font-size: 18px;"><b>Benefícios</b>
</span>
<br />
<ul>
<li><span style="font-size: 18px;">Coffee breaks</span></li>
<li><span style="font-size: 18px;">Internet wireless</span></li>
<li><span style="font-size: 18px;">Material didático</span></li>
<li><span style="font-size: 18px;">Certificado impresso</span></li>
</ul>
<h1>
Instrutor</h1>
<a href="http://ctnovatec.com.br/wp-content/uploads/2015/04/Luciano-Ramalho.jpg"><img alt="" class=" wp-image-1524 alignleft" src="http://ctnovatec.com.br/wp-content/uploads/2015/04/Luciano-Ramalho.jpg" height="172" width="172" /></a><b>Luciano Ramalho</b>,
autor do livro Fluent Python (O'Reilly, 2015), tem mais de 15 anos de
experiência como desenvolvedor especializado na linguagem Python.
Desenvolveu sistemas baseados em Python para grandes portais como UOL,
BOL, AOL Brasil, IDG Now, e treinou equipes para a Globo.com, Titans
Group, Senado Federal e Presidência da República. Palestrou várias vezes
nas conferências PyCon USA, OSCON, FISL, PythonBrasil e RuPy.
<br />
<br />
<br />
Mais informações: <a href="http://www.eventick.com.br/curso-python-patterns-padroes">http://www.eventick.com.br/curso-python-patterns-padroes</a>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com0tag:blogger.com,1999:blog-7739609142389674191.post-60637490716705201602015-05-27T07:47:00.000-03:002015-07-13T12:55:16.838-03:00A visão radical na prática - por Luciano Ramalho<h2>
<a href="https://speakerdeck.com/ramalho"></a></h2>
<a href="https://speakerdeck.com/ramalho/a-visao-radical-na-pratica">https://speakerdeck.com/ramalho/a-visao-radical-na-pratica </a><br />
<script async="" class="speakerdeck-embed" data-id="7c9bb2e16bf749d4b4e30e404be6d460" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com0tag:blogger.com,1999:blog-7739609142389674191.post-89577038134987519242015-04-17T11:54:00.003-03:002015-04-17T21:27:10.171-03:00Docker - Debian with Apache, PHP and MySQL ou MariaDB conection<br />
<br />
<br />
Just a simple container ready to connect to a MariaDB ou a MySQL server.<br />
<br />
Dockerfile:<br />
<br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>PT-BR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabela normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
<br />
<div class="MsoNormal" style="margin-left: 35.4pt;">
<span style="color: #1f497d; font-family: Consolas;">FROM debian</span></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<br /></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<span lang="EN-US" style="color: #1f497d; font-family: Consolas; mso-ansi-language: EN-US;">MAINTAINER
David Kwast</span></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<br /></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<span lang="EN-US" style="color: #1f497d; font-family: Consolas; mso-ansi-language: EN-US;">RUN apt-get
update && apt-get -y install apache2 mysql-client php5 php5-mysql
libapache2-mod-php5 && apt-get clean</span></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<br /></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<span style="color: #1f497d; font-family: Consolas;">EXPOSE 80</span></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<br /></div>
<div class="MsoNormal" style="margin-left: 35.4pt;">
<span lang="EN-US" style="color: #1f497d; font-family: Consolas; mso-ansi-language: EN-US;">CMD ["/usr/sbin/apache2ctl",
"-D", "FOREGROUND"]</span></div>
<br />
<br />
<br />
<br />
<br />
Usage example:<br />
<br />
<br />
<blockquote class="tr_bq">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>PT-BR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabela normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]--><b><span lang="EN-US" style="color: #1f497d; font-family: Consolas; font-size: 11.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">docker run
--name test -d -p 1080:80 -v <path_to_a_directory>[path_inside_host]:/var/www/ <image_name_or_id></image_name_or_id></path_to_a_directory></span></b>
</blockquote>
David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-65270340668101035202015-01-15T08:19:00.000-02:002015-01-15T08:19:52.429-02:00pypyODBC on Linux with FreeTDSTested and working on CentOS 7 x64 with a Windows Server 2003 serving SQL Server 2000.<br />
<br />
First, install CentOS packages:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">yum install<b> freetds tdsodbc unixODBC</b></span></blockquote>
<br />
Edit <i>/etc/odbcinst.ini</i> and add the following section:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;"># SQL Server ODBC<br />[FreeTDS]<br />Description=FreeTDS MSSQL Driver<br />Driver = <b>/usr/lib64/libtdsodbc.so.0</b></span></blockquote>
* Note that the driver path may be different depending on the distribution version or architecture.<br />
<br />
<br />
Edit <i>/etc/freetds.conf</i> and add the folling section:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">[<b>DATASOURCENAME</b>]<br /> host = <b>HOSTNAME </b>or <b>IP</b><br /> port = <b>1433</b><br /> tds version = <b>7.0</b></span></blockquote>
And modify the following section by adding this line:<br />
<blockquote class="tr_bq">
[<b>global</b>]<br /> client charset = <b>UTF-8</b><br /></blockquote>
* Note that the section name, is this case <i>DATASOURCENAME</i>, should be any name that you will call from your program and the <i>tds version</i> may be different depending on the SQL Server version that you want to connect with. And don't forget to set <i>host </i>and <i>port </i>according to your server instances.<br />
<br />
<br />
You can test the conection with the following command line tool:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">tsql -S <b>DATASOURCENAME </b>-U '<b>DOMAIN</b>\<b>user</b>' -P <b>password</b></span></blockquote>
* In this case above, I used domain authentication, can be different depending on SQL Server setup. <br />
<br />
<br />
And here is a simple Python program to test the connection using pypyODBC:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">import pypyodbc</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">c = pypyodbc.connect(ur"DRIVER={FreeTDS};Servername=<b>DATASOURCENAME</b>;DATABASE=<b>DATABASENAME</b>;UID=<b>DOMAIN</b>\<b>user</b>;PWD=<b>password</b>")</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">cursor = c.cursor()<br /><br />cursor.execute( 'SELECT <b>row </b>FROM <b>table</b>' )<br /><br />for row in cursor:<br /> print row[0],<br /><br />c.close()</span></blockquote>
<br />
References:<br />
<ul>
<li><a href="https://code.google.com/p/pypyodbc/wiki/Linux_ODBC_in_3_steps">https://code.google.com/p/pypyodbc/wiki/Linux_ODBC_in_3_steps</a></li>
<li><a href="http://www.freetds.org/userguide/choosingtdsprotocol.htm">http://www.freetds.org/userguide/choosingtdsprotocol.htm</a></li>
<li><a href="https://code.google.com/p/pypyodbc/">https://code.google.com/p/pypyodbc/</a></li>
</ul>
David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com0tag:blogger.com,1999:blog-7739609142389674191.post-70582652884775926942013-06-03T14:13:00.002-03:002015-04-17T21:27:51.872-03:00Script VB para configurar assinatura HTML no Outlook 2010Script:<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">' Command-line arguments reading<br />html_file_path = WScript.Arguments(0) ' path to the HTML signature file<br />signature_name = WScript.Arguments(1) ' signature name<br /><br />' MS Word invocation<br />Set objWord = CreateObject("Word.Application") <br />' open HTML file<br />Set objNewSignature = objWord.Documents.Open(html_file_path, , true, false, , , , , , 7, , false)<br />' create Outlook signature objects<br />Set objSelectionDefault = objNewSignature.Range()<br />Set objSignatureObjects = objWord.EmailOptions.EmailSignature<br />Set objSignatureEntries = objSignatureObjects.EmailSignatureEntries<br />' configure the signature<br />objSignatureEntries.Add signature_name, objSelectionDefault<br />objSignatureObjects.NewMessageSignature = signature_name<br />objSignatureObjects.ReplyMessageSignature = signature_name<br />' close MS Word<br />objWord.Quit</span></blockquote>
Exemplo de uso: <b>script.vbs "<caminho_para_arquivo_html>[arquivo html]"[nome da assinatura]<nome_da_assinatura> </nome_da_assinatura></caminho_para_arquivo_html></b>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-60136223738718360312012-01-09T13:31:00.000-02:002015-04-17T21:28:15.800-03:00A Qualidade da Informação e a Inteligência EmpresarialDiariamente, em nossa rotina de trabalho, geramos e consumimos informação. Esta informação pode ser transmitida através da fala, de papéis, de computadores e até por gestos.<br />
Cada meio de transmissão pode sofrer a ação de ruídos específicos, que se não controlados podem inviabilizar o registro da informação. Na fala, um tipo comum de ruído pode ser o barulho do ambiente. Já no papel, um pouco de sujeira em cima de uma letra ou número pode ser suficiente para invalidar todo um registro.<br />
Além de legível, cada registro precisa estar correto. Um registro com uma informação que não represente a realidade é o mesmo, ou até pior, que a sua ausência.<br />
A partir de um histórico de registros bem estruturado, é possível construir ou obter um sistema informatizado de <a href="http://pt.wikipedia.org/wiki/Intelig%C3%AAncia_empresarial">Inteligência Empresarial</a>, ou <i><a href="http://en.wikipedia.org/wiki/Business_intelligence">Business Intelligence</a></i>. Cuja função é fornecer suporte à tomada de decisões estratégicas de uma empresa.David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-42002899704523545622011-03-20T15:43:00.000-03:002011-03-20T15:43:57.108-03:00CONTOUR GPS - Câmera de capacete com GPS<iframe width="907" height="360" src="http://contour.com/stories/fernao-dias-mg-spbrasil-cb1300f/embed?map=true" frameborder="0"></iframe>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com0tag:blogger.com,1999:blog-7739609142389674191.post-10686294292924898182010-05-27T20:10:00.000-03:002015-04-17T21:28:46.326-03:00Finalmente: PagSeguro suporta oficialmente Unicode UTF-8Finalmente, depois de 2 meses do meu desabafo, o PagSeguro UOL decidiu suportar UTF-8 como encoding opcional para o POST em seu site.<br />
<br />
Mais detalhes da implementação no blog do PagSeguro:<br />
<a href="http://blogpagseguro.com.br/2010/05/informativo-pagseguro-enconding/">http://blogpagseguro.com.br/2010/05/informativo-pagseguro-enconding/</a>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com0tag:blogger.com,1999:blog-7739609142389674191.post-25318213835163988512010-03-15T13:37:00.000-03:002015-04-17T21:28:36.951-03:00PagSeguro UOL e o clássico problema de encoding "padrão" latinoPara quem nunca ouviu falar no <span style="font-weight: bold;">PagSeguro UOL</span>, basta conhecer o <span style="font-weight: bold;">MercadoPago</span> do <span style="font-weight: bold;">MercadoLivre</span> ou o <span style="font-weight: bold;">PayPal</span>. Se você não conhece nenhum dos 3, sugiro que leia um pouco sobre sistemas de pagamento online.<br />
<br />
Como o <span style="font-weight: bold;">PayPal</span>, o <span style="font-weight: bold;">PagSeguro UOL</span> pode ser integrado em qualquer site. Basta seguir o <a href="https://pagseguro.uol.com.br/desenvolvedor/guia_do_desenvolvedor.jhtml">Guia do Desenvolvedor</a>. O problema é que o guia não fala nada sobre o encoding que o sistema do <span style="font-weight: bold;">PagSeguro UOL</span> trabalha. Procurando no <span style="font-weight: bold;">Google</span>, encontrei algumas dicas:<br />
<ul>
<li><a href="http://blog.klaus.pro.br/2009/ler/encoding-no-post-para-o-pagseguro/index.html">http://blog.klaus.pro.br/2009/ler/encoding-no-post-para-o-pagseguro/index.html</a></li>
</ul>
Estas dicas funcionaram até Dezembro de 2009, quando o sistema do <span style="font-weight: bold;">PagSeguro UOL</span> sofreu algumas alterações. Agora o sistema só aceita o "padrão"<span style="font-weight: bold;"> ISO-8859-1</span> ou <span style="font-weight: bold;">latin-1</span>, ou seja, o "padrão" usado no Windows em Português. Nada do outro padrão chamado <span style="font-weight: bold;">Unicode UTF-8</span>.<br />
<ul>
<li><a href="http://blogpagseguro.com.br/2009/12/ajustes-no-site-pagseguro-01122009/">http://blogpagseguro.com.br/2009/12/ajustes-no-site-pagseguro-01122009/</a></li>
<li><a href="https://pagseguro.uol.com.br/CarrinhoPagSeguro.aspx#rmcl">https://pagseguro.uol.com.br/CarrinhoPagSeguro.aspx#rmcl</a></li>
</ul>
Já reclamei 2 vezes. Só recebi respostas automáticas supondo que eu não entendi nada sobre a integração. As repostas foram nada mais que um Copy&Paste do Guia de Intregação. Será que é tão difícil alguém no <span style="font-weight: bold;">PagSeguro UOL</span> colocar de volta o código que converte todo o texto no encoding especificado no campo oculto "encoding"? Ou pelo menos suportar <span style="font-weight: bold;">UTF-8</span> de alguma forma.<br />
<br />
Hoje eu mandei um e-mail para o pagseguro (arroba) visie.com.br. Vamos ver o que me respondem. Chegando a resposta, publicarei aqui.<br />
<br />
UPDATE:<br />
O problema foi resolvido dia 17 de Maio:<span style="text-decoration: underline;"><br /></span><a href="http://blog.kwast.net/2010/05/agora-e-oficial-pagseguro-suporta.html">http://blog.kwast.net/2010/05/agora-e-oficial-pagseguro-suporta.html</a><br />
<a href="http://blogpagseguro.com.br/2010/05/informativo-pagseguro-enconding/">http://blogpagseguro.com.br/2010/05/informativo-pagseguro-enconding/</a>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com3tag:blogger.com,1999:blog-7739609142389674191.post-27652336198896060372009-05-03T12:42:00.000-03:002009-05-03T16:08:02.623-03:00Modelagem em Argila, meu novo passatempoDecidi começar um novo hobby: modelagem em argila. Eu descobri que gostava de modelar em argila na aula de artes da escola, porém esqueci disso durante a faculdade.<br />Escolhi modelar um personagem de um jogo antigo de computador, o Purple Tentacle do jogo Maniac Mansion - Day Of The Tentacle (DOTT). A pose é do momento que o personagem ganha braços e decide dominar o mundo.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/0/04/Dott-screenshot.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 353px; height: 264px;" src="http://upload.wikimedia.org/wikipedia/en/0/04/Dott-screenshot.png" alt="" border="0" /></a>Depois de umas 6 horas de pura dedicação, a modelagem ficou assim:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_YBBPlNb4wkY/Sf23FfiqvsI/AAAAAAAAEao/xfAKqnBqR-w/purple02.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 417px; height: 436px;" src="http://lh5.ggpht.com/_YBBPlNb4wkY/Sf23FfiqvsI/AAAAAAAAEao/xfAKqnBqR-w/purple02.jpg" alt="" border="0" /></a>Ainda faltam alguns ajustes e quem sabe, uma pintura com as cores originais.David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-14310432141738371692008-04-18T13:41:00.000-03:002008-04-19T01:07:36.218-03:00Forum Internacional do Software Livre – Edição 9<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/david.kwast/SAjMzJ9ohzI/AAAAAAAABiE/HPOyLLLuH6o/IMG_1789.JPG?imgmax=576"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://lh5.ggpht.com/david.kwast/SAjMzJ9ohzI/AAAAAAAABiE/HPOyLLLuH6o/IMG_1789.JPG?imgmax=576" alt="" border="0" /></a>Neste ano, o FISL está sendo hospedado na PUC-RS. O evento começou na quinta-feira e acaba sábado. As palestras, treinamentos e encontros de comunidades são distribuídas em 8 salas e começam 9 horas da manhã e terminam 9 horas da noite, cada um durando uma hora em média. Os nomes das salas são de pessoas notáveis na computação e software livre: Linus Torvards, Andrew Tanenbaum, Jon Maddog Hall, Richard Stallman, Guido Van Rossum, Marcelo Tosatti, Tim Berners Lee e Alan Turing.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/david.kwast/SAjOop9oisI/AAAAAAAABqI/N0ZrRnH5x5c/IMG_1848.JPG?imgmax=512"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://lh3.ggpht.com/david.kwast/SAjOop9oisI/AAAAAAAABqI/N0ZrRnH5x5c/IMG_1848.JPG?imgmax=512" alt="" border="0" /></a>Muitas empresas e organizações possuem espaços para exposição, entre elas estão: Google, Sun, Intel, Globo.com, Banco do Brasil, Cobra Tecnologia, Linux Magazine, Comitê Gestor de Internet.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/david.kwast/SAjNC59oh7I/AAAAAAAABjI/ObIKoG7Xza4/IMG_1797.JPG?imgmax=512"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://lh4.ggpht.com/david.kwast/SAjNC59oh7I/AAAAAAAABjI/ObIKoG7Xza4/IMG_1797.JPG?imgmax=512" alt="" border="0" /></a>Também há espaços para projetos e comunidades de assuntos relacionados ao software livre. Como a associação Python Brasil, OpenSuse, Debian, PHP, JavaFree.org, entre outros.<br />Não tenho muito mais a dizer sobre o dia 17, o avião atrasou 7 horas e passei a tarde mostrando Python e Django para um pessoal da IBM.<br /><br />Mais fotos em:<br /><a href="http://picasaweb.google.com/david.kwast/FISL9">http://picasaweb.google.com/david.kwast/FISL9</a><br /><br />Programação:<br /><a href="http://fisl.softwarelivre.org/9.0/papers/pub/">http://fisl.softwarelivre.org/9.0/papers/pub/</a>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com1tag:blogger.com,1999:blog-7739609142389674191.post-61711375172274730582007-06-27T03:50:00.000-03:002007-06-28T10:36:08.636-03:00Desenvolvimento Web com DjangoDjango é um framework<span style="font-style: italic;"> </span>web para perfeccionistas com prazos, segundo seu próprio site (<a href="http://www.djangoproject.com/">http://www.djangoproject.com/</a>).<br /><br />Ele é todo codificado em Python (<a href="http://python.org/">python.org</a>), ou seja, 100% multi-plataforma. E precisa de um dos principais bancos de dados SQL (MySQL, SQLite, PostgreSQL...) para manter persistência de dados. Para atender requisições da web, ele pode ser ligado ao <span style="font-style: italic;">mod_python</span> sobre o <span style="font-style: italic;">Apache</span>, <span style="font-style: italic;">fast-cgi</span> ou outros. E claro, também conta com um servidor próprio para testes de desenvolvimento.<br /><br />Seu projeto teve o código aberto por volta de 2005, ao meu ver, isso mostra o quão novo e desconhecido ele é para a comunidade. Sua versão atual é a <span style="font-weight: bold;">0.96</span> e ainda não há uma previsão para a <span style="font-weight: bold;">1.0</span>. Porém 90% da API já está quase estável e não deverá sofrer muitas modificações.<br /><br />Agora irei explicar o modo <span style="font-weight: bold;">MTV</span>; <span style="font-style: italic;">model </span>- modelo, <span style="font-style: italic;">template </span>- molde e <span style="font-style: italic;">view </span>- visão.<br />No <span style="font-weight: bold;">projeto </span>da modelagem, o banco de dados é modelado em classes filhas da classe <span style="font-style: italic;">models</span> do módulo <span style="font-style: italic;">django</span> instalado no Python. Veja um exemplo abaixo:<br /><pre class="literal-block"><blockquote>class Reporter(models.Model):<br />full_name = models.CharField(maxlength=70)<br /><br />def __str__(self):<br /> return self.full_name<br /><br />class Article(models.Model):<br />pub_date = models.DateTimeField()<br />headline = models.CharField(maxlength=200)<br />article = models.TextField()<br />reporter = models.ForeignKey(Reporter)<br /><br />def __str__(self):<br /> return self.headline<span style="font-family:Georgia,serif;"></span></blockquote><br /></pre><div style="text-align: justify;">Cada classe será uma tabela no banco da dados, e a inclusão, remoção ou busca dos dados pode e deve ser feita através da API.<pre class="literal-block"><blockquote>>>> from mysite.models import Reporter, Article<br /><br /># No reporters are in the system yet.<br />>>> Reporter.objects.all()<br />[]<br /><br /># Create a new Reporter.<br />>>> r = Reporter(full_name='John Smith')<br /><br /># Save the object into the database. You have to call save() explicitly.<br />>>> r.save()<br /><br /># Now it has an ID.<br />>>> r.id<br />1<br /><br /># Now the new reporter is in the database.<br />>>> Reporter.objects.all()<br />[John Smith]<br /><br /># Fields are represented as attributes on the Python object.<br />>>> r.full_name<br />'John Smith'<br /><br /># Django provides a rich database lookup API.<br />>>> Reporter.objects.get(id=1)<br />John Smith<br />>>> Reporter.objects.get(full_name__startswith='John')<br />John Smith<br />>>> Reporter.objects.get(full_name__contains='mith')<br />John Smith<br />>>> Reporter.objects.get(id=2)<br />Traceback (most recent call last):<br />...<br />DoesNotExist: Reporter does not exist for {'id__exact': 2}<br /><br /># Create an article.<br />>>> from datetime import datetime<br />>>> a = Article(pub_date=datetime.now(), headline='Django is cool',<br />... article='Yeah.', reporter=r)<br />>>> a.save()<br /><br /># Now the article is in the database.<br />>>> Article.objects.all()<br />[Django is cool]<br /><br /># Article objects get API access to related Reporter objects.<br />>>> r = a.reporter<br />>>> r.full_name<br />'John Smith'<br /><br /># And vice versa: Reporter objects get API access to Article objects.<br />>>> r.article_set.all()<br />[Django is cool]<br /><br /># The API follows relationships as far as you need, performing efficient<br /># JOINs for you behind the scenes.<br /># This finds all articles by a reporter whose name starts with "John".<br />>>> Article.objects.filter(reporter__full_name__startswith="John")<br />[Django is cool]<br /><br /># Change an object by altering its attributes and calling save().<br />>>> r.full_name = 'Billy Goat'<br />>>> r.save()<br /><br /># Delete an object with delete().<br />>>> r.delete()</blockquote></pre>No projeto da <span style="font-weight: bold;">visão</span>, é definido que informação deve aparecer em alguma página. Não confunda com como deve ser visto, essa função é do <span style="font-weight: bold;">molde</span>. Veja o exemplo abaixo:<pre class="literal-block"><blockquote>def year_archive(request, year):<br />a_list = Article.objects.filter(pub_date__year=year)<br />return render_to_response('news/year_archive.html', {'year': year, 'article_list': a_list})</blockquote></pre>Finalmente, no <span style="font-weight: bold;">molde</span>, é definido como essa informação retornada pela busca na segunda linha do exemplo acima deverá ser apresentada. Veja abaixo:<br /><blockquote><pre class="literal-block">{% extends "base.html" %}<br /><br />{% block title %}Articles for {{ year }}{% endblock %}<br /><br />{% block content %}<br /><h1>Articles for {{ year }}</h1><br /><br />{% for article in article_list %}<br /><p>{{ article.headline }}</p><br /><p>By {{ article.reporter.full_name }}</p><br /><p>Published {{ article.pub_date|date:"F j, Y" }}</p><br /><br />{% endfor %}<br />{% endblock %}</pre></blockquote>Olhando esse <span style="font-weight: bold;">molde </span>rapidamente, podemos perceber que sua linguagem é voltada aos <span style="font-style: italic;">designers</span>. Onde quem predomina é o HTML/CSS/JavaScript e o código "estranho" é o mais simplificado possível e de rápido entendimento para possibilitar uma rica integração com a <span style="font-weight: bold;">visão</span> definida por um programador.<br /><br />O Django também permite o mapeamento de URLs, onde em vez de um site dinâmico usar a URL <span style="font-style: italic;">/produto.py?id=5&view=detalhado</span>, poderá fazer o mesmo com <span style="font-style: italic;">/Produto/5/detalhes</span> ou até mesmo <span style="font-style: italic;">/Produtos/Carregador_AC_USB</span>.<br /><br />A quem interessar, sugiro uma boa lida na documentação presente no site do django e qualquer coisa, mandar um e-mail para mim: david (ponto) kwast (em) gmail.<br /><br />Referências e links<br /><br /><a href="http://www.djangoproject.com/">http://www.djangoproject.com/</a><br /><br /><a href="http://www.djangoproject.com/documentation/tutorial1/">http://www.djangoproject.com/documentation/tutorial1/</a><br /><br /><a href="http://www.djangobook.com/">http://www.djangobook.com/</a><br /></div><blockquote></blockquote>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com2tag:blogger.com,1999:blog-7739609142389674191.post-66125006346259389882007-06-01T01:29:00.000-03:002007-06-28T11:49:41.512-03:00Python no Nokia e61 (pyS60)Acabei de adquirir um Nokia e61 e pretendo começar a desenvolver uns programas em Python.<br />Minha experiência nessa linguagem não é muita, mas já posso garantir que consigo fazer mais coisas que fazia com Java ou C++/QT.<br />Confesso que achei muito legal essa idéia da Nokia de olhar pra outra linguagem para portáteis, e fiquei muito feliz por ter sido Python. E o motivo vou mostrar a seguir.<br /><blockquote></blockquote><blockquote><pre style=""><span lang="EN-US" style="color:blue;">import</span><span style="" lang="EN-US"> javax.microedition.midlet.*;<br /></span><span lang="EN-US" style="color:blue;">import</span><span style="" lang="EN-US"> javax.microedition.lcdui.*;<br /></span><span lang="EN-US" style="color:blue;">public class</span><span style="" lang="EN-US"> HelloJ2ME <span style="color:blue;">extends</span> MIDlet <span style="color:blue;">implements</span> CommandListener{<br /><span style=""> </span><span style="color:blue;">private</span> <span style="color:blue;">Display</span> display;<br /><span style=""> </span><span style="color:blue;">private</span> <span style="color:blue;">TextField</span> caixaDeTextoHello;<br /><span style=""> </span><span style="color:blue;">private</span> <span style="color:blue;">Command</span> comandoDeSaida;<br /><span style=""> </span><span style="color:blue;">private</span> <span style="color:blue;">Form</span> formularioPrincipal;<br /></span><span style="" lang="EN-US"> </span><span style="color:blue;">public</span> HelloJ2ME(){<br /><span style="color:green;"><span style=""> </span></span>display = Display.getDisplay(this);<span style="color:green;"><br /></span><span style=""> </span><span style="" lang="EN-US">formularioPrincipal = <span style="color:blue;">new</span> Form("HelloJ2ME");</span><span style="color:green;"><br /></span><span style=""> </span><span style="" lang="EN-US">comandoDeSaida = <span style="color:blue;">new</span> Command("Exit", Command.SCREEN,1);</span><span lang="EN-US" style="color:green;"><br /></span><span style="" lang="EN-US"><span style=""> </span>caixaDeTextoHello = <span style="color:blue;">new</span> TextField("Text","Hello World!",15,TextField.ANY);</span><span style="color:green;"><br /></span><span style=""> </span><span style="" lang="EN-US">formularioPrincipal.addCommand(comandoDeSaida);</span><span style="color:green;"><br /></span><span style=""> </span>formularioPrincipal.append(caixaDeTextoHello);<span style="color:green;"><br /></span><span style=""> </span>formularioPrincipal.setCommandListener(this);}<br /><span style=""> </span>public void startApp(){<span style="color:green;"><u><br /></u></span><span style=""> </span>display.setCurrent(formularioPrincipal);}<span style="color:green;"><br /></span><span style=""> </span><span style="" lang="EN-US">public void pauseApp()</span>{}<span style="color:green;"><br /></span><span style=""> </span><span lang="EN-US" style="color:blue;">public void</span><span style="" lang="EN-US"> destroyApp(<span style="color:blue;">boolean</span> incondicional)</span>{<span style="" lang="EN-US">}<br /></span><span style="" lang="EN-US"><span style=""> </span><span style="color:blue;">public void</span> commandAction(Command comando, Displayable s)</span>{<span style="color:green;"><br /></span><span style=""> </span>if (comando == comandoDeSaida){<span style="color:green;"><br /></span><span style=""> </span>destroyApp(<span style="color:blue;">false</span>);<span style="color:green;"><br /></span><span style=""> </span><span style=""> </span>notifyDestroyed();}}}</pre> <p align="left"><span style=";font-family:Verdana;font-size:85%;" >O resultado: </span></p><br /><p style="text-align: left;"><img src="http://www.wirelessbrasil.org/wirelessbr/colaboradores/corbera_martins/fig001.jpg" border="0" height="133" width="99" /></p><p style="text-align: left;"><a href="http://www.wirelessbrasil.org/wirelessbr/colaboradores/corbera_martins/j2me_02.html">Referência</a><br /></p></blockquote><p align="center"></p>Tudo isso foi o primeiro exemplo de HelloWorld em J2ME que achei no Google, pelo tamanho acredito que existam outros menores.<br />Agora vou colocar um do Python para Symbian.<br /><div class="codesnip-container"> <div class="codesnip"> <div class="de1"><span class="kw1"></span></div><blockquote><div class="de1"><span class="kw1">import</span> appuifw</div> <div class="de1">appuifw.<span class="me1">app</span>.<span class="me1">title</span> = u<span class="st0">“Hello World”</span></div> <div class="de1"> </div> appuifw.<span class="me1">note</span><span class="br0">(</span>u<span class="st0">“Hello World”</span>, <span class="st0">‘info’</span><span class="br0">)<br /></span><img id="image18" src="http://www.danilocesar.com/blog/wp-content/uploads/2006/01/Screenshot0005.jpg" alt="Phyton_hello_world" /><br /><a href="http://images.google.com/imgres?imgurl=http://www.danilocesar.com/blog/wp-content/uploads/2006/01/Screenshot0005.jpg&imgrefurl=http://www.danilocesar.com/blog/2006/01/25/phyton-for-s60-programar-celulares-nunca-foi-tao-facil/&amp;amp;amp;h=208&w=176&sz=40&hl=en&start=1&um=1&amp;amp;amp;tbnid=fECEBz9bAkPGXM:&tbnh=105&tbnw=89&prev=/images%3Fq%3Dpys60%2Bhello%26svnum%3D100%26um%3D1%26hl%3Den%26client%3Dfirefox-a%26rls%3Dorg.mozilla:en-GB:official">Referência</a><br /></blockquote><span class="br0"></span> </div> </div>Entendeu meu ponto de vista? E tem mais duas outras vantagens (sempre falando do meu ponto de vista), o python é a versão 2.2.2 completa (a atual é 2.5.1, mas acreditem, não tem muita coisa q faça falta) e é possível instalar o intepretador, que no caso de aparelhos com teclado QWERTY, pode ajudar a passar o tempo para pessoas que preferem programar em vez de jogar no celular.<br />Bom, por hoje é tudo, espero estar postando mais novidades e exemplos de código Python para celulares Nokia.<br /><br />abraços<br /><br />mais informações em<br /><a href="http://wiki.embeddedacademy.org/index.php/PyS60_Mini-course">http://wiki.embeddedacademy.org/index.php/PyS60_Mini-course</a><br />e<br /><a href="http://wiki.opensource.nokia.com/projects/Python_for_S60">http://wiki.opensource.nokia.com/projects/Python_for_S60</a><br /><p align="center"></p>David Kwasthttp://www.blogger.com/profile/00722530786608289032noreply@blogger.com2