<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on cynar.ski</title>
    <link>https://cynar.ski/category/python/</link>
    <description>Recent content in Python on cynar.ski</description>
    <generator>Hugo -- 0.146.7</generator>
    <language>pl-PL</language>
    <lastBuildDate>Wed, 03 Jun 2009 19:31:48 +0000</lastBuildDate>
    <atom:link href="https://cynar.ski/category/python/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SVN hooks i autoupdate’y</title>
      <link>https://cynar.ski/2009/06/03/svn-hooks-i-autoupdatey/</link>
      <pubDate>Wed, 03 Jun 2009 19:31:48 +0000</pubDate>
      <guid>https://cynar.ski/2009/06/03/svn-hooks-i-autoupdatey/</guid>
      <description>&lt;p&gt;Czsami problemy są nieco ukryte, jednak jak zawsze debug daje radę. Hooks w svn&amp;rsquo;ie to rzecz bardzo przydatna, jeszcze bardziej jak chcemy po każdym commit&amp;rsquo;owaniu otrzymać działającą kopię na stronie testowej, klasyczne wykorzystanie cron&amp;rsquo;a jest często uciążliwe, a hook post-commit wykonywany jest jak sama nazwa wskazuje po commit&amp;rsquo;owaniu, autoupdate można zrobic tak:&lt;/p&gt;
&lt;p&gt;{REPO}/hooks/post-commit (skrypt z bitem wykonywalności)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;/usr/local/bin/update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sam skrypt update w moim przypadku to C:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;int main(void)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;execl&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/path/to/svn&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;svn&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;update&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--username&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;USERNAME&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--password&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PASSWORD&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--no-auth-cache&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/path/to/svnsite/&amp;#34;&lt;/span&gt;,  (&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) NULL);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;(EXIT_FAILURE);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcc update.c -o update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp update /usr/local/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +s /usr/local/bin/update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;W całym kodzie ważny jest &amp;ndash;no-auth-cache, ponieważ bez tego system będzie prosić o dopowiedź w jaki sposób przchowywać hasła w pliku cache, jakoże wykonywane jest to przez użytkownika apache (w moim przypadku), który nie posiada własnego shella i home (oczywiste), pytanie takie jest powodem nie działania skryptu.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Czsami problemy są nieco ukryte, jednak jak zawsze debug daje radę. Hooks w svn&rsquo;ie to rzecz bardzo przydatna, jeszcze bardziej jak chcemy po każdym commit&rsquo;owaniu otrzymać działającą kopię na stronie testowej, klasyczne wykorzystanie cron&rsquo;a jest często uciążliwe, a hook post-commit wykonywany jest jak sama nazwa wskazuje po commit&rsquo;owaniu, autoupdate można zrobic tak:</p>
<p>{REPO}/hooks/post-commit (skrypt z bitem wykonywalności)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>/usr/local/bin/update
</span></span></code></pre></div><p>Sam skrypt update w moim przypadku to C:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span><span style="color:#75715e">#include</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">int main(void)</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{
</span></span><span style="display:flex;"><span>	<span style="color:#a6e22e">execl</span>(<span style="color:#e6db74">&#34;/path/to/svn&#34;</span>, <span style="color:#e6db74">&#34;svn&#34;</span>, <span style="color:#e6db74">&#34;update&#34;</span>, <span style="color:#e6db74">&#34;--username&#34;</span>,
</span></span><span style="display:flex;"><span>	<span style="color:#e6db74">&#34;USERNAME&#34;</span>, <span style="color:#e6db74">&#34;--password&#34;</span>, <span style="color:#e6db74">&#34;PASSWORD&#34;</span>, <span style="color:#e6db74">&#34;--no-auth-cache&#34;</span>,
</span></span><span style="display:flex;"><span>	<span style="color:#e6db74">&#34;/path/to/svnsite/&#34;</span>,  (<span style="color:#66d9ef">const</span> <span style="color:#66d9ef">char</span> <span style="color:#f92672">*</span>) NULL);
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">return</span>(EXIT_FAILURE);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gcc update.c -o update
</span></span><span style="display:flex;"><span>cp update /usr/local/bin
</span></span><span style="display:flex;"><span>chmod +s /usr/local/bin/update
</span></span></code></pre></div><p>W całym kodzie ważny jest &ndash;no-auth-cache, ponieważ bez tego system będzie prosić o dopowiedź w jaki sposób przchowywać hasła w pliku cache, jakoże wykonywane jest to przez użytkownika apache (w moim przypadku), który nie posiada własnego shella i home (oczywiste), pytanie takie jest powodem nie działania skryptu.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Trac AUTH PLAIN</title>
      <link>https://cynar.ski/2008/11/13/trac-auth-plain/</link>
      <pubDate>Thu, 13 Nov 2008 12:43:45 +0000</pubDate>
      <guid>https://cynar.ski/2008/11/13/trac-auth-plain/</guid>
      <description>&lt;p&gt;Niestety czasami jest tak, że trzeba wymusić PLAIN w SMTP ;) domyślnie TRAC tego nie potrafi, więc trzeba było dodać mały hack do konfiguracji, żeby wymuszać.&lt;/p&gt;
&lt;p&gt;Hack:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;trac:/home/trac/sites# diff /usr/share/python-support/trac/trac/notification-orig.py /usr/share/python-support/trac/trac/notification.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;87c87,90
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;     force_plain &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; BoolOption&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;notification&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;force_plain&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;false&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;         &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Force AUTH PLAIN in SMTP Authentication.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;162a166
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;         self._force_plain &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; self.env.config.getbool&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;notification&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;force_plain&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;279c283
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;         &lt;span style=&#34;color:#75715e&#34;&gt;# self.server.set_debuglevel(True)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;         self.server.set_debuglevel&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;True&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;285a290,292
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;         &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; self._force_plain:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;             self.server.ehlo&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;             self.server.esmtp_features&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;auth&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;LOGIN PLAIN&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;W trac.ini dodajemy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[notification]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;force_plain&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I wszystko powinno ładnie klikać.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Niestety czasami jest tak, że trzeba wymusić PLAIN w SMTP ;) domyślnie TRAC tego nie potrafi, więc trzeba było dodać mały hack do konfiguracji, żeby wymuszać.</p>
<p>Hack:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>trac:/home/trac/sites# diff /usr/share/python-support/trac/trac/notification-orig.py /usr/share/python-support/trac/trac/notification.py
</span></span><span style="display:flex;"><span>87c87,90
</span></span><span style="display:flex;"><span>&lt;
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>&gt;
</span></span><span style="display:flex;"><span>&gt;     force_plain <span style="color:#f92672">=</span> BoolOption<span style="color:#f92672">(</span><span style="color:#e6db74">&#39;notification&#39;</span>, <span style="color:#e6db74">&#39;force_plain&#39;</span>, <span style="color:#e6db74">&#39;false&#39;</span>,
</span></span><span style="display:flex;"><span>&gt;         <span style="color:#e6db74">&#34;&#34;&#34;Force AUTH PLAIN in SMTP Authentication.&#34;&#34;&#34;</span><span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>&gt;
</span></span><span style="display:flex;"><span>162a166
</span></span><span style="display:flex;"><span>&gt;         self._force_plain <span style="color:#f92672">=</span> self.env.config.getbool<span style="color:#f92672">(</span><span style="color:#e6db74">&#39;notification&#39;</span>, <span style="color:#e6db74">&#39;force_plain&#39;</span><span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>279c283
</span></span><span style="display:flex;"><span>&lt;         <span style="color:#75715e"># self.server.set_debuglevel(True)</span>
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>&gt;         self.server.set_debuglevel<span style="color:#f92672">(</span>True<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>285a290,292
</span></span><span style="display:flex;"><span>&gt;         <span style="color:#66d9ef">if</span> self._force_plain:
</span></span><span style="display:flex;"><span>&gt;             self.server.ehlo<span style="color:#f92672">()</span>
</span></span><span style="display:flex;"><span>&gt;             self.server.esmtp_features<span style="color:#f92672">[</span><span style="color:#e6db74">&#34;auth&#34;</span><span style="color:#f92672">]</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;LOGIN PLAIN&#34;</span>
</span></span></code></pre></div><p>W trac.ini dodajemy:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#66d9ef">[notification]</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">force_plain</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">true</span>
</span></span></code></pre></div><p>I wszystko powinno ładnie klikać.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
